diff -Nru perl-5.32.1/amigaos4/amigaio.c perl-5.34.0/amigaos4/amigaio.c --- perl-5.32.1/amigaos4/amigaio.c 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/amigaos4/amigaio.c 2021-01-20 23:04:44.000000000 +0000 @@ -28,244 +28,244 @@ void amigaos_stdio_get(pTHX_ StdioStore *store) { - store->astdin = - amigaos_get_file(PerlIO_fileno(IoIFP(GvIO(PL_stdingv)))); - store->astderr = - amigaos_get_file(PerlIO_fileno(IoIFP(GvIO(PL_stderrgv)))); - store->astdout = amigaos_get_file( - PerlIO_fileno(IoIFP(GvIO(gv_fetchpv("STDOUT", TRUE, SVt_PVIO))))); + store->astdin = + amigaos_get_file(PerlIO_fileno(IoIFP(GvIO(PL_stdingv)))); + store->astderr = + amigaos_get_file(PerlIO_fileno(IoIFP(GvIO(PL_stderrgv)))); + store->astdout = amigaos_get_file( + PerlIO_fileno(IoIFP(GvIO(gv_fetchpv("STDOUT", TRUE, SVt_PVIO))))); } void amigaos_stdio_save(pTHX_ StdioStore *store) { - amigaos_stdio_get(aTHX_ store); - store->oldstdin = IDOS->SelectInput(store->astdin); - store->oldstderr = IDOS->SelectErrorOutput(store->astderr); - store->oldstdout = IDOS->SelectOutput(store->astdout); + amigaos_stdio_get(aTHX_ store); + store->oldstdin = IDOS->SelectInput(store->astdin); + store->oldstderr = IDOS->SelectErrorOutput(store->astderr); + store->oldstdout = IDOS->SelectOutput(store->astdout); } void amigaos_stdio_restore(pTHX_ const StdioStore *store) { - IDOS->SelectInput(store->oldstdin); - IDOS->SelectErrorOutput(store->oldstderr); - IDOS->SelectOutput(store->oldstdout); + IDOS->SelectInput(store->oldstdin); + IDOS->SelectErrorOutput(store->oldstderr); + IDOS->SelectOutput(store->oldstdout); } void amigaos_post_exec(int fd, int do_report) { - /* We *must* write something to our pipe or else - * the other end hangs */ - if (do_report) - { - int e = errno; - PerlLIO_write(fd, (void *)&e, sizeof(e)); - PerlLIO_close(fd); - } + /* We *must* write something to our pipe or else + * the other end hangs */ + if (do_report) + { + int e = errno; + PerlLIO_write(fd, (void *)&e, sizeof(e)); + PerlLIO_close(fd); + } } struct popen_data { - struct Task *parent; - STRPTR command; + struct Task *parent; + STRPTR command; }; static int popen_result = 0; int popen_child() { - struct Task *thisTask = IExec->FindTask(0); - struct popen_data *pd = (struct popen_data *)thisTask->tc_UserData; - const char *argv[4]; - - argv[0] = "sh"; - argv[1] = "-c"; - argv[2] = pd->command ? pd->command : NULL; - argv[3] = NULL; - - // adebug("%s %ld %s\n",__FUNCTION__,__LINE__,command?command:"NULL"); - - /* We need to give this to sh via execvp, execvp expects filename, - * argv[] - */ - IExec->ObtainSemaphore(&popen_sema); - - IExec->Signal(pd->parent,SIGBREAKF_CTRL_F); - - popen_result = myexecvp(FALSE, argv[0], (char **)argv); - if (pd->command) - IExec->FreeVec(pd->command); - IExec->FreeVec(pd); - - IExec->ReleaseSemaphore(&popen_sema); - IExec->Forbid(); - return 0; + struct Task *thisTask = IExec->FindTask(0); + struct popen_data *pd = (struct popen_data *)thisTask->tc_UserData; + const char *argv[4]; + + argv[0] = "sh"; + argv[1] = "-c"; + argv[2] = pd->command ? pd->command : NULL; + argv[3] = NULL; + + // adebug("%s %ld %s\n",__FUNCTION__,__LINE__,command?command:"NULL"); + + /* We need to give this to sh via execvp, execvp expects filename, + * argv[] + */ + IExec->ObtainSemaphore(&popen_sema); + + IExec->Signal(pd->parent,SIGBREAKF_CTRL_F); + + popen_result = myexecvp(FALSE, argv[0], (char **)argv); + if (pd->command) + IExec->FreeVec(pd->command); + IExec->FreeVec(pd); + + IExec->ReleaseSemaphore(&popen_sema); + IExec->Forbid(); + return 0; } PerlIO *Perl_my_popen(pTHX_ const char *cmd, const char *mode) { - PERL_FLUSHALL_FOR_CHILD; - PerlIO *result = NULL; - char pipe_name[50]; - char unix_pipe[50]; - char ami_pipe[50]; - BPTR input = 0; - BPTR output = 0; - struct Process *proc = NULL; - struct Task *thisTask = IExec->FindTask(0); - struct popen_data * pd = NULL; - - /* First we need to check the mode - * We can only have unidirectional pipes - */ - // adebug("%s %ld cmd %s mode %s \n",__FUNCTION__,__LINE__,cmd, - // mode); - - switch (mode[0]) - { - case 'r': - case 'w': - break; - - default: - - errno = EINVAL; - return result; - } - - /* Make a unique pipe name - * we need a unix one and an amigaos version (of the same pipe!) - * as were linking with libunix. - */ - - sprintf(pipe_name, "%x%08lx/4096/0", pipenum++, - IUtility->GetUniqueID()); - sprintf(unix_pipe, "/PIPE/%s", pipe_name); - sprintf(ami_pipe, "PIPE:%s", pipe_name); - - /* Now we open the AmigaOs Filehandles That we wil pass to our - * Sub process - */ - - if (mode[0] == 'r') - { - /* A read mode pipe: Output from pipe input from Output() or NIL:*/ - /* First attempt to DUP Output() */ - input = IDOS->DupFileHandle(IDOS->Input()); - if(input == 0) - { - input = IDOS->Open("NIL:", MODE_READWRITE); - } - if (input != 0) - { - output = IDOS->Open(ami_pipe, MODE_NEWFILE); - } - result = PerlIO_open(unix_pipe, mode); - } - else - { - /* Open the write end first! */ - - result = PerlIO_open(unix_pipe, mode); - - input = IDOS->Open(ami_pipe, MODE_OLDFILE); - if (input != 0) - { - output = IDOS->DupFileHandle(IDOS->Output()); - if(output == 0) - { - output = IDOS->Open("NIL:", MODE_READWRITE); - } - } - } - if ((input == 0) || (output == 0) || (result == NULL)) - { - /* Ouch stream opening failed */ - /* Close and bail */ - if (input) - IDOS->Close(input); - if (output) - IDOS->Close(output); - if(result) - { - PerlIO_close(result); - result = NULL; - } - return result; - } - - /* We have our streams now start our new process - * We're using a new process so that execve can modify the environment - * with messing things up for the shell that launched perl - * Copy cmd before we launch the subprocess as perl seems to waste - * no time in overwriting it! The subprocess will free the copy. - */ - - if((pd = (struct popen_data*)IExec->AllocVecTags(sizeof(struct popen_data),AVT_Type,MEMF_SHARED,TAG_DONE))) - { - pd->parent = thisTask; - if ((pd->command = mystrdup(cmd))) - { - // adebug("%s %ld - // %s\n",__FUNCTION__,__LINE__,cmd_copy?cmd_copy:"NULL"); - proc = IDOS->CreateNewProcTags( - NP_Entry, popen_child, NP_Child, TRUE, NP_StackSize, - ((struct Process *)thisTask)->pr_StackSize, NP_Input, input, - NP_Output, output, NP_Error, IDOS->ErrorOutput(), - NP_CloseError, FALSE, NP_Cli, TRUE, NP_Name, - "Perl: popen process", NP_UserData, (int)pd, - TAG_DONE); - } - } - if(proc) - { - /* wait for the child be setup right */ - IExec->Wait(SIGBREAKF_CTRL_F); - } - if (!proc) - { - /* New Process Failed to start - * Close and bail out - */ - if(pd) - { - if(pd->command) - { - IExec->FreeVec(pd->command); - } - IExec->FreeVec(pd); - } - if (input) - IDOS->Close(input); - if (output) - IDOS->Close(output); - if(result) - { - PerlIO_close(result); - result = NULL; - } - } - - /* Our new process is running and will close it streams etc - * once its done. All we need to is open the pipe via stdio - */ + PERL_FLUSHALL_FOR_CHILD; + PerlIO *result = NULL; + char pipe_name[50]; + char unix_pipe[50]; + char ami_pipe[50]; + BPTR input = 0; + BPTR output = 0; + struct Process *proc = NULL; + struct Task *thisTask = IExec->FindTask(0); + struct popen_data * pd = NULL; + + /* First we need to check the mode + * We can only have unidirectional pipes + */ + // adebug("%s %ld cmd %s mode %s \n",__FUNCTION__,__LINE__,cmd, + // mode); + + switch (mode[0]) + { + case 'r': + case 'w': + break; + + default: + + errno = EINVAL; + return result; + } + + /* Make a unique pipe name + * we need a unix one and an amigaos version (of the same pipe!) + * as were linking with libunix. + */ + + sprintf(pipe_name, "%x%08lx/4096/0", pipenum++, + IUtility->GetUniqueID()); + sprintf(unix_pipe, "/PIPE/%s", pipe_name); + sprintf(ami_pipe, "PIPE:%s", pipe_name); + + /* Now we open the AmigaOs Filehandles That we wil pass to our + * Sub process + */ + + if (mode[0] == 'r') + { + /* A read mode pipe: Output from pipe input from Output() or NIL:*/ + /* First attempt to DUP Output() */ + input = IDOS->DupFileHandle(IDOS->Input()); + if(input == 0) + { + input = IDOS->Open("NIL:", MODE_READWRITE); + } + if (input != 0) + { + output = IDOS->Open(ami_pipe, MODE_NEWFILE); + } + result = PerlIO_open(unix_pipe, mode); + } + else + { + /* Open the write end first! */ + + result = PerlIO_open(unix_pipe, mode); + + input = IDOS->Open(ami_pipe, MODE_OLDFILE); + if (input != 0) + { + output = IDOS->DupFileHandle(IDOS->Output()); + if(output == 0) + { + output = IDOS->Open("NIL:", MODE_READWRITE); + } + } + } + if ((input == 0) || (output == 0) || (result == NULL)) + { + /* Ouch stream opening failed */ + /* Close and bail */ + if (input) + IDOS->Close(input); + if (output) + IDOS->Close(output); + if(result) + { + PerlIO_close(result); + result = NULL; + } + return result; + } + + /* We have our streams now start our new process + * We're using a new process so that execve can modify the environment + * with messing things up for the shell that launched perl + * Copy cmd before we launch the subprocess as perl seems to waste + * no time in overwriting it! The subprocess will free the copy. + */ + + if((pd = (struct popen_data*)IExec->AllocVecTags(sizeof(struct popen_data),AVT_Type,MEMF_SHARED,TAG_DONE))) + { + pd->parent = thisTask; + if ((pd->command = mystrdup(cmd))) + { + // adebug("%s %ld + // %s\n",__FUNCTION__,__LINE__,cmd_copy?cmd_copy:"NULL"); + proc = IDOS->CreateNewProcTags( + NP_Entry, popen_child, NP_Child, TRUE, NP_StackSize, + ((struct Process *)thisTask)->pr_StackSize, NP_Input, input, + NP_Output, output, NP_Error, IDOS->ErrorOutput(), + NP_CloseError, FALSE, NP_Cli, TRUE, NP_Name, + "Perl: popen process", NP_UserData, (int)pd, + TAG_DONE); + } + } + if(proc) + { + /* wait for the child be setup right */ + IExec->Wait(SIGBREAKF_CTRL_F); + } + if (!proc) + { + /* New Process Failed to start + * Close and bail out + */ + if(pd) + { + if(pd->command) + { + IExec->FreeVec(pd->command); + } + IExec->FreeVec(pd); + } + if (input) + IDOS->Close(input); + if (output) + IDOS->Close(output); + if(result) + { + PerlIO_close(result); + result = NULL; + } + } + + /* Our new process is running and will close it streams etc + * once its done. All we need to is open the pipe via stdio + */ - return result; + return result; } I32 Perl_my_pclose(pTHX_ PerlIO *ptr) { - int result = -1; - /* close the file before obtaining the semaphore else we might end up - hanging waiting for the child to read the last bit from the pipe */ - PerlIO_close(ptr); - IExec->ObtainSemaphore(&popen_sema); - result = popen_result; - IExec->ReleaseSemaphore(&popen_sema); - return result; + int result = -1; + /* close the file before obtaining the semaphore else we might end up + hanging waiting for the child to read the last bit from the pipe */ + PerlIO_close(ptr); + IExec->ObtainSemaphore(&popen_sema); + result = popen_result; + IExec->ReleaseSemaphore(&popen_sema); + return result; } @@ -284,11 +284,11 @@ struct thread_info { - pthread_t ti_pid; - int ti_children; - pthread_t ti_parent; - struct MsgPort *ti_port; - struct Process *ti_Process; + pthread_t ti_pid; + int ti_children; + pthread_t ti_parent; + struct MsgPort *ti_port; + struct Process *ti_Process; }; static struct thread_info pseudo_children[MAX_THREADS]; @@ -297,61 +297,61 @@ void amigaos4_init_fork_array() { - IExec->InitSemaphore(&fork_array_sema); - pseudo_children[0].ti_pid = (pthread_t)IExec->FindTask(0); - pseudo_children[0].ti_parent = -1; - pseudo_children[0].ti_port = - (struct MsgPort *)IExec->AllocSysObjectTags(ASOT_PORT, TAG_DONE); + IExec->InitSemaphore(&fork_array_sema); + pseudo_children[0].ti_pid = (pthread_t)IExec->FindTask(0); + pseudo_children[0].ti_parent = -1; + pseudo_children[0].ti_port = + (struct MsgPort *)IExec->AllocSysObjectTags(ASOT_PORT, TAG_DONE); } void amigaos4_dispose_fork_array() { - while (pseudo_children[0].ti_children > 0) - { - void *msg; - IExec->WaitPort(pseudo_children[0].ti_port); - msg = IExec->GetMsg(pseudo_children[0].ti_port); - if (msg) - IExec->FreeSysObject(ASOT_MESSAGE, msg); - pseudo_children[0].ti_children--; - } - IExec->FreeSysObject(ASOT_PORT, pseudo_children[0].ti_port); + while (pseudo_children[0].ti_children > 0) + { + void *msg; + IExec->WaitPort(pseudo_children[0].ti_port); + msg = IExec->GetMsg(pseudo_children[0].ti_port); + if (msg) + IExec->FreeSysObject(ASOT_MESSAGE, msg); + pseudo_children[0].ti_children--; + } + IExec->FreeSysObject(ASOT_PORT, pseudo_children[0].ti_port); } struct thread_exit_message { - struct Message tem_Message; - pthread_t tem_pid; - int tem_status; + struct Message tem_Message; + pthread_t tem_pid; + int tem_status; }; int getnextchild() { - int i; - for (i = 0; i < MAX_THREADS; i++) - { - if (pseudo_children[i].ti_pid == 0) - return i; - } - return -1; + int i; + for (i = 0; i < MAX_THREADS; i++) + { + if (pseudo_children[i].ti_pid == 0) + return i; + } + return -1; } int findparent(pthread_t pid) { - int i; - for (i = 0; i < MAX_THREADS; i++) - { - if (pseudo_children[i].ti_pid == pid) - return i; - } - return -1; + int i; + for (i = 0; i < MAX_THREADS; i++) + { + if (pseudo_children[i].ti_pid == pid) + return i; + } + return -1; } struct child_arg { - struct Task *ca_parent_task; - pthread_t ca_parent; - PerlInterpreter *ca_interp; + struct Task *ca_parent_task; + pthread_t ca_parent; + PerlInterpreter *ca_interp; }; #undef kill @@ -362,202 +362,202 @@ int amigaos_kill(Pid_t pid, int signal) { - int i; - BOOL thistask = FALSE; - Pid_t realpid = pid; // Perhaps we have a real pid from else where? - /* Look for our DOS pid */ - IExec->ObtainSemaphore(&fork_array_sema); - for (i = 0; i < MAX_THREADS; i++) - { - if (pseudo_children[i].ti_pid == pid) - { - realpid = (Pid_t)IDOS->GetPID(pseudo_children[i].ti_Process,GPID_PROCESS); - if(pseudo_children[i].ti_Process == (struct Process *)IExec->FindTask(NULL)) - { - thistask = TRUE; - } - break; - } - } - IExec->ReleaseSemaphore(&fork_array_sema); - /* Allow the C library to work out which signals are realy valid */ - if(thistask) - { - /* A quirk in newlib kill handling means it's better to call raise() rather than kill on out own task. */ - return raise(signal); - } - else - { - return kill(realpid,signal); - } + int i; + BOOL thistask = FALSE; + Pid_t realpid = pid; // Perhaps we have a real pid from else where? + /* Look for our DOS pid */ + IExec->ObtainSemaphore(&fork_array_sema); + for (i = 0; i < MAX_THREADS; i++) + { + if (pseudo_children[i].ti_pid == pid) + { + realpid = (Pid_t)IDOS->GetPID(pseudo_children[i].ti_Process,GPID_PROCESS); + if(pseudo_children[i].ti_Process == (struct Process *)IExec->FindTask(NULL)) + { + thistask = TRUE; + } + break; + } + } + IExec->ReleaseSemaphore(&fork_array_sema); + /* Allow the C library to work out which signals are realy valid */ + if(thistask) + { + /* A quirk in newlib kill handling means it's better to call raise() rather than kill on out own task. */ + return raise(signal); + } + else + { + return kill(realpid,signal); + } } static THREAD_RET_TYPE amigaos4_start_child(void *arg) { - PerlInterpreter *my_perl = - (PerlInterpreter *)((struct child_arg *)arg)->ca_interp; - ; - - GV *tmpgv; - int status; - int parent; - int nextchild; - pthread_t pseudo_id = pthread_self(); + PerlInterpreter *my_perl = + (PerlInterpreter *)((struct child_arg *)arg)->ca_interp; + ; + + GV *tmpgv; + int status; + int parent; + int nextchild; + pthread_t pseudo_id = pthread_self(); #ifdef PERL_SYNC_FORK - static long sync_fork_id = 0; - long id = ++sync_fork_id; + static long sync_fork_id = 0; + long id = ++sync_fork_id; #endif - /* before we do anything set up our process semaphore and add - a new entry to the pseudochildren */ + /* before we do anything set up our process semaphore and add + a new entry to the pseudochildren */ - /* get next available slot */ - /* should not fail here! */ + /* get next available slot */ + /* should not fail here! */ - IExec->ObtainSemaphore(&fork_array_sema); + IExec->ObtainSemaphore(&fork_array_sema); - nextchild = getnextchild(); - - pseudo_children[nextchild].ti_pid = pseudo_id; - pseudo_children[nextchild].ti_Process = (struct Process *)IExec->FindTask(NULL); - pseudo_children[nextchild].ti_parent = - ((struct child_arg *)arg)->ca_parent; - pseudo_children[nextchild].ti_port = - (struct MsgPort *)IExec->AllocSysObjectTags(ASOT_PORT, TAG_DONE); - - num_pseudo_children++; - IExec->ReleaseSemaphore(&fork_array_sema); - - /* We're set up let the parent continue */ - - IExec->Signal(((struct child_arg *)arg)->ca_parent_task, - SIGBREAKF_CTRL_F); - - PERL_SET_THX(my_perl); - if ((tmpgv = gv_fetchpv("$", TRUE, SVt_PV))) - { - SV *sv = GvSV(tmpgv); - SvREADONLY_off(sv); - sv_setiv(sv, (IV)pseudo_id); - SvREADONLY_on(sv); - } - hv_clear(PL_pidstatus); - - /* push a zero on the stack (we are the child) */ - { - dSP; - dTARGET; - PUSHi(0); - PUTBACK; - } - - /* continue from next op */ - PL_op = PL_op->op_next; - - { - dJMPENV; - volatile int oldscope = PL_scopestack_ix; + nextchild = getnextchild(); + + pseudo_children[nextchild].ti_pid = pseudo_id; + pseudo_children[nextchild].ti_Process = (struct Process *)IExec->FindTask(NULL); + pseudo_children[nextchild].ti_parent = + ((struct child_arg *)arg)->ca_parent; + pseudo_children[nextchild].ti_port = + (struct MsgPort *)IExec->AllocSysObjectTags(ASOT_PORT, TAG_DONE); + + num_pseudo_children++; + IExec->ReleaseSemaphore(&fork_array_sema); + + /* We're set up let the parent continue */ + + IExec->Signal(((struct child_arg *)arg)->ca_parent_task, + SIGBREAKF_CTRL_F); + + PERL_SET_THX(my_perl); + if ((tmpgv = gv_fetchpv("$", TRUE, SVt_PV))) + { + SV *sv = GvSV(tmpgv); + SvREADONLY_off(sv); + sv_setiv(sv, (IV)pseudo_id); + SvREADONLY_on(sv); + } + hv_clear(PL_pidstatus); + + /* push a zero on the stack (we are the child) */ + { + dSP; + dTARGET; + PUSHi(0); + PUTBACK; + } + + /* continue from next op */ + PL_op = PL_op->op_next; + + { + dJMPENV; + volatile int oldscope = PL_scopestack_ix; restart: - JMPENV_PUSH(status); - switch (status) - { - case 0: - CALLRUNOPS(aTHX); - status = 0; - break; - case 2: - while (PL_scopestack_ix > oldscope) - { - LEAVE; - } - FREETMPS; - PL_curstash = PL_defstash; - if (PL_endav && !PL_minus_c) - call_list(oldscope, PL_endav); - status = STATUS_EXIT; - break; - case 3: - if (PL_restartop) - { - POPSTACK_TO(PL_mainstack); - PL_op = PL_restartop; - PL_restartop = (OP *)NULL; - ; - goto restart; - } - PerlIO_printf(Perl_error_log, "panic: restartop\n"); - FREETMPS; - status = 1; - break; - } - JMPENV_POP; - - /* XXX hack to avoid perl_destruct() freeing optree */ - PL_main_root = (OP *)NULL; - } - - { - do_close(PL_stdingv, FALSE); - do_close(gv_fetchpv("STDOUT", TRUE, SVt_PVIO), - FALSE); /* PL_stdoutgv - ISAGN */ - do_close(PL_stderrgv, FALSE); - } - - /* destroy everything (waits for any pseudo-forked children) */ - - /* wait for any remaining children */ - - while (pseudo_children[nextchild].ti_children > 0) - { - if (IExec->WaitPort(pseudo_children[nextchild].ti_port)) - { - void *msg = - IExec->GetMsg(pseudo_children[nextchild].ti_port); - IExec->FreeSysObject(ASOT_MESSAGE, msg); - pseudo_children[nextchild].ti_children--; - } - } - if (PL_scopestack_ix <= 1) - { - perl_destruct(my_perl); - } - perl_free(my_perl); - - IExec->ObtainSemaphore(&fork_array_sema); - parent = findparent(pseudo_children[nextchild].ti_parent); - pseudo_children[nextchild].ti_pid = 0; - pseudo_children[nextchild].ti_parent = 0; - IExec->FreeSysObject(ASOT_PORT, pseudo_children[nextchild].ti_port); - pseudo_children[nextchild].ti_port = NULL; - - IExec->ReleaseSemaphore(&fork_array_sema); - - { - if (parent >= 0) - { - struct thread_exit_message *tem = - (struct thread_exit_message *) - IExec->AllocSysObjectTags( - ASOT_MESSAGE, ASOMSG_Size, - sizeof(struct thread_exit_message), - ASOMSG_Length, - sizeof(struct thread_exit_message)); - if (tem) - { - tem->tem_pid = pseudo_id; - tem->tem_status = status; - IExec->PutMsg(pseudo_children[parent].ti_port, - (struct Message *)tem); - } - } - } + JMPENV_PUSH(status); + switch (status) + { + case 0: + CALLRUNOPS(aTHX); + status = 0; + break; + case 2: + while (PL_scopestack_ix > oldscope) + { + LEAVE; + } + FREETMPS; + PL_curstash = PL_defstash; + if (PL_endav && !PL_minus_c) + call_list(oldscope, PL_endav); + status = STATUS_EXIT; + break; + case 3: + if (PL_restartop) + { + POPSTACK_TO(PL_mainstack); + PL_op = PL_restartop; + PL_restartop = (OP *)NULL; + ; + goto restart; + } + PerlIO_printf(Perl_error_log, "panic: restartop\n"); + FREETMPS; + status = 1; + break; + } + JMPENV_POP; + + /* XXX hack to avoid perl_destruct() freeing optree */ + PL_main_root = (OP *)NULL; + } + + { + do_close(PL_stdingv, FALSE); + do_close(gv_fetchpv("STDOUT", TRUE, SVt_PVIO), + FALSE); /* PL_stdoutgv - ISAGN */ + do_close(PL_stderrgv, FALSE); + } + + /* destroy everything (waits for any pseudo-forked children) */ + + /* wait for any remaining children */ + + while (pseudo_children[nextchild].ti_children > 0) + { + if (IExec->WaitPort(pseudo_children[nextchild].ti_port)) + { + void *msg = + IExec->GetMsg(pseudo_children[nextchild].ti_port); + IExec->FreeSysObject(ASOT_MESSAGE, msg); + pseudo_children[nextchild].ti_children--; + } + } + if (PL_scopestack_ix <= 1) + { + perl_destruct(my_perl); + } + perl_free(my_perl); + + IExec->ObtainSemaphore(&fork_array_sema); + parent = findparent(pseudo_children[nextchild].ti_parent); + pseudo_children[nextchild].ti_pid = 0; + pseudo_children[nextchild].ti_parent = 0; + IExec->FreeSysObject(ASOT_PORT, pseudo_children[nextchild].ti_port); + pseudo_children[nextchild].ti_port = NULL; + + IExec->ReleaseSemaphore(&fork_array_sema); + + { + if (parent >= 0) + { + struct thread_exit_message *tem = + (struct thread_exit_message *) + IExec->AllocSysObjectTags( + ASOT_MESSAGE, ASOMSG_Size, + sizeof(struct thread_exit_message), + ASOMSG_Length, + sizeof(struct thread_exit_message)); + if (tem) + { + tem->tem_pid = pseudo_id; + tem->tem_status = status; + IExec->PutMsg(pseudo_children[parent].ti_port, + (struct Message *)tem); + } + } + } #ifdef PERL_SYNC_FORK - return id; + return id; #else - return (void *)status; + return (void *)status; #endif } @@ -565,61 +565,61 @@ Pid_t amigaos_fork() { - dTHX; - pthread_t id; - int handle; - struct child_arg arg; - if (num_pseudo_children >= MAX_THREADS) - { - errno = EAGAIN; - return -1; - } - arg.ca_interp = perl_clone((PerlInterpreter *)aTHX, CLONEf_COPY_STACKS); - arg.ca_parent_task = IExec->FindTask(NULL); - arg.ca_parent = - pthread_self() ? pthread_self() : (pthread_t)IExec->FindTask(0); - - handle = pthread_create(&id, NULL, amigaos4_start_child, (void *)&arg); - pseudo_children[findparent(arg.ca_parent)].ti_children++; - - IExec->Wait(SIGBREAKF_CTRL_F); - - PERL_SET_THX(aTHX); /* XXX perl_clone*() set TLS */ - if (handle) - { - errno = EAGAIN; - return -1; - } - return id; + dTHX; + pthread_t id; + int handle; + struct child_arg arg; + if (num_pseudo_children >= MAX_THREADS) + { + errno = EAGAIN; + return -1; + } + arg.ca_interp = perl_clone((PerlInterpreter *)aTHX, CLONEf_COPY_STACKS); + arg.ca_parent_task = IExec->FindTask(NULL); + arg.ca_parent = + pthread_self() ? pthread_self() : (pthread_t)IExec->FindTask(0); + + handle = pthread_create(&id, NULL, amigaos4_start_child, (void *)&arg); + pseudo_children[findparent(arg.ca_parent)].ti_children++; + + IExec->Wait(SIGBREAKF_CTRL_F); + + PERL_SET_THX(aTHX); /* XXX perl_clone*() set TLS */ + if (handle) + { + errno = EAGAIN; + return -1; + } + return id; } Pid_t amigaos_waitpid(pTHX_ int optype, Pid_t pid, void *argflags) { - int result; - if (PL_signals & PERL_SIGNALS_UNSAFE_FLAG) - { - result = pthread_join(pid, (void **)argflags); - } - else - { - while ((result = pthread_join(pid, (void **)argflags)) == -1 && - errno == EINTR) - { - // PERL_ASYNC_CHECK(); - } - } - return result; + int result; + if (PL_signals & PERL_SIGNALS_UNSAFE_FLAG) + { + result = pthread_join(pid, (void **)argflags); + } + else + { + while ((result = pthread_join(pid, (void **)argflags)) == -1 && + errno == EINTR) + { + // PERL_ASYNC_CHECK(); + } + } + return result; } void amigaos_fork_set_userdata( pTHX_ struct UserData *userdata, I32 did_pipes, int pp, SV **sp, SV **mark) { - userdata->parent = IExec->FindTask(0); - userdata->did_pipes = did_pipes; - userdata->pp = pp; - userdata->sp = sp; - userdata->mark = mark; - userdata->my_perl = aTHX; + userdata->parent = IExec->FindTask(0); + userdata->did_pipes = did_pipes; + userdata->pp = pp; + userdata->sp = sp; + userdata->mark = mark; + userdata->my_perl = aTHX; } /* AmigaOS specific versions of #?exec#? solely for use in amigaos_system_child @@ -627,277 +627,275 @@ static void S_exec_failed(pTHX_ const char *cmd, int fd, int do_report) { - const int e = errno; + const int e = errno; // PERL_ARGS_ASSERT_EXEC_FAILED; - if (e) - { - if (ckWARN(WARN_EXEC)) - Perl_warner(aTHX_ packWARN(WARN_EXEC), - "Can't exec \"%s\": %s", cmd, Strerror(e)); - } - if (do_report) - { - /* XXX silently ignore failures */ - PERL_UNUSED_RESULT(PerlLIO_write(fd, (void *)&e, sizeof(int))); - PerlLIO_close(fd); - } + if (e) + { + if (ckWARN(WARN_EXEC)) + Perl_warner(aTHX_ packWARN(WARN_EXEC), + "Can't exec \"%s\": %s", cmd, Strerror(e)); + } + if (do_report) + { + /* XXX silently ignore failures */ + PERL_UNUSED_RESULT(PerlLIO_write(fd, (void *)&e, sizeof(int))); + PerlLIO_close(fd); + } } static I32 S_do_amigaos_exec3(pTHX_ const char *incmd, int fd, int do_report) { - dVAR; - const char **argv, **a; - char *s; - char *buf; - char *cmd; - /* Make a copy so we can change it */ - const Size_t cmdlen = strlen(incmd) + 1; - I32 result = -1; - - PERL_ARGS_ASSERT_DO_EXEC3; - - ENTER; - Newx(buf, cmdlen, char); - SAVEFREEPV(buf); - cmd = buf; - memcpy(cmd, incmd, cmdlen); - - while (*cmd && isSPACE(*cmd)) - cmd++; - - /* see if there are shell metacharacters in it */ - - if (*cmd == '.' && isSPACE(cmd[1])) - goto doshell; - - if (strBEGINs(cmd, "exec") && isSPACE(cmd[4])) - goto doshell; - - s = cmd; - while (isWORDCHAR(*s)) - s++; /* catch VAR=val gizmo */ - if (*s == '=') - goto doshell; - - for (s = cmd; *s; s++) - { - if (*s != ' ' && !isALPHA(*s) && - memCHRs("$&*(){}[]'\";\\|?<>~`\n", *s)) - { - if (*s == '\n' && !s[1]) - { - *s = '\0'; - break; - } - /* handle the 2>&1 construct at the end */ - if (*s == '>' && s[1] == '&' && s[2] == '1' && - s > cmd + 1 && s[-1] == '2' && isSPACE(s[-2]) && - (!s[3] || isSPACE(s[3]))) - { - const char *t = s + 3; - - while (*t && isSPACE(*t)) - ++t; - if (!*t && (PerlLIO_dup2(1, 2) != -1)) - { - s[-2] = '\0'; - break; - } - } + const char **argv, **a; + char *s; + char *buf; + char *cmd; + /* Make a copy so we can change it */ + const Size_t cmdlen = strlen(incmd) + 1; + I32 result = -1; + + PERL_ARGS_ASSERT_DO_EXEC3; + + ENTER; + Newx(buf, cmdlen, char); + SAVEFREEPV(buf); + cmd = buf; + memcpy(cmd, incmd, cmdlen); + + while (*cmd && isSPACE(*cmd)) + cmd++; + + /* see if there are shell metacharacters in it */ + + if (*cmd == '.' && isSPACE(cmd[1])) + goto doshell; + + if (strBEGINs(cmd, "exec") && isSPACE(cmd[4])) + goto doshell; + + s = cmd; + while (isWORDCHAR(*s)) + s++; /* catch VAR=val gizmo */ + if (*s == '=') + goto doshell; + + for (s = cmd; *s; s++) + { + if (*s != ' ' && !isALPHA(*s) && + memCHRs("$&*(){}[]'\";\\|?<>~`\n", *s)) + { + if (*s == '\n' && !s[1]) + { + *s = '\0'; + break; + } + /* handle the 2>&1 construct at the end */ + if (*s == '>' && s[1] == '&' && s[2] == '1' && + s > cmd + 1 && s[-1] == '2' && isSPACE(s[-2]) && + (!s[3] || isSPACE(s[3]))) + { + const char *t = s + 3; + + while (*t && isSPACE(*t)) + ++t; + if (!*t && (PerlLIO_dup2(1, 2) != -1)) + { + s[-2] = '\0'; + break; + } + } doshell: - PERL_FPU_PRE_EXEC - result = myexecl(FALSE, PL_sh_path, "sh", "-c", cmd, - (char *)NULL); - PERL_FPU_POST_EXEC - S_exec_failed(aTHX_ PL_sh_path, fd, do_report); - amigaos_post_exec(fd, do_report); - goto leave; - } - } - - Newx(argv, (s - cmd) / 2 + 2, const char *); - SAVEFREEPV(argv); - cmd = savepvn(cmd, s - cmd); - SAVEFREEPV(cmd); - a = argv; - for (s = cmd; *s;) - { - while (isSPACE(*s)) - s++; - if (*s) - *(a++) = s; - while (*s && !isSPACE(*s)) - s++; - if (*s) - *s++ = '\0'; - } - *a = NULL; - if (argv[0]) - { - PERL_FPU_PRE_EXEC - result = myexecvp(FALSE, argv[0], EXEC_ARGV_CAST(argv)); - PERL_FPU_POST_EXEC - if (errno == ENOEXEC) /* for system V NIH syndrome */ - goto doshell; - S_exec_failed(aTHX_ argv[0], fd, do_report); - amigaos_post_exec(fd, do_report); - } + PERL_FPU_PRE_EXEC + result = myexecl(FALSE, PL_sh_path, "sh", "-c", cmd, + (char *)NULL); + PERL_FPU_POST_EXEC + S_exec_failed(aTHX_ PL_sh_path, fd, do_report); + amigaos_post_exec(fd, do_report); + goto leave; + } + } + + Newx(argv, (s - cmd) / 2 + 2, const char *); + SAVEFREEPV(argv); + cmd = savepvn(cmd, s - cmd); + SAVEFREEPV(cmd); + a = argv; + for (s = cmd; *s;) + { + while (isSPACE(*s)) + s++; + if (*s) + *(a++) = s; + while (*s && !isSPACE(*s)) + s++; + if (*s) + *s++ = '\0'; + } + *a = NULL; + if (argv[0]) + { + PERL_FPU_PRE_EXEC + result = myexecvp(FALSE, argv[0], EXEC_ARGV_CAST(argv)); + PERL_FPU_POST_EXEC + if (errno == ENOEXEC) /* for system V NIH syndrome */ + goto doshell; + S_exec_failed(aTHX_ argv[0], fd, do_report); + amigaos_post_exec(fd, do_report); + } leave: - LEAVE; - return result; + LEAVE; + return result; } I32 S_do_amigaos_aexec5( pTHX_ SV *really, SV **mark, SV **sp, int fd, int do_report) { - dVAR; - I32 result = -1; - PERL_ARGS_ASSERT_DO_AEXEC5; - ENTER; - if (sp > mark) - { - const char **argv, **a; - const char *tmps = NULL; - Newx(argv, sp - mark + 1, const char *); - SAVEFREEPV(argv); - a = argv; - - while (++mark <= sp) - { - if (*mark) { - char *arg = savepv(SvPV_nolen_const(*mark)); - SAVEFREEPV(arg); - *a++ = arg; - } else - *a++ = ""; - } - *a = NULL; - if (really) { - tmps = savepv(SvPV_nolen_const(really)); - SAVEFREEPV(tmps); - } - if ((!really && *argv[0] != '/') || - (really && *tmps != '/')) /* will execvp use PATH? */ - TAINT_ENV(); /* testing IFS here is overkill, probably + I32 result = -1; + PERL_ARGS_ASSERT_DO_AEXEC5; + ENTER; + if (sp > mark) + { + const char **argv, **a; + const char *tmps = NULL; + Newx(argv, sp - mark + 1, const char *); + SAVEFREEPV(argv); + a = argv; + + while (++mark <= sp) + { + if (*mark) { + char *arg = savepv(SvPV_nolen_const(*mark)); + SAVEFREEPV(arg); + *a++ = arg; + } else + *a++ = ""; + } + *a = NULL; + if (really) { + tmps = savepv(SvPV_nolen_const(really)); + SAVEFREEPV(tmps); + } + if ((!really && *argv[0] != '/') || + (really && *tmps != '/')) /* will execvp use PATH? */ + TAINT_ENV(); /* testing IFS here is overkill, probably */ - PERL_FPU_PRE_EXEC - if (really && *tmps) - { - result = myexecvp(FALSE, tmps, EXEC_ARGV_CAST(argv)); - } - else - { - result = myexecvp(FALSE, argv[0], EXEC_ARGV_CAST(argv)); - } - PERL_FPU_POST_EXEC - S_exec_failed(aTHX_(really ? tmps : argv[0]), fd, do_report); - } - amigaos_post_exec(fd, do_report); - LEAVE; - return result; + PERL_FPU_PRE_EXEC + if (really && *tmps) + { + result = myexecvp(FALSE, tmps, EXEC_ARGV_CAST(argv)); + } + else + { + result = myexecvp(FALSE, argv[0], EXEC_ARGV_CAST(argv)); + } + PERL_FPU_POST_EXEC + S_exec_failed(aTHX_(really ? tmps : argv[0]), fd, do_report); + } + amigaos_post_exec(fd, do_report); + LEAVE; + return result; } void *amigaos_system_child(void *userdata) { - struct Task *parent; - I32 did_pipes; - int pp; - I32 value; - STRLEN n_a; - /* these next are declared by macros else where but I may be - * passing modified values here so declare them explictly but - * still referred to by macro below */ - - register SV **sp; - register SV **mark; - register PerlInterpreter *my_perl; - - StdioStore store; - - struct UserData *ud = (struct UserData *)userdata; - - did_pipes = ud->did_pipes; - parent = ud->parent; - pp = ud->pp; - SP = ud->sp; - MARK = ud->mark; - my_perl = ud->my_perl; - PERL_SET_THX(my_perl); - - amigaos_stdio_save(aTHX_ & store); - - if (did_pipes) - { - // PerlLIO_close(pp[0]); - } - if (PL_op->op_flags & OPf_STACKED) - { - SV *really = *++MARK; - value = (I32)S_do_amigaos_aexec5(aTHX_ really, MARK, SP, pp, - did_pipes); - } - else if (SP - MARK != 1) - { - value = (I32)S_do_amigaos_aexec5(aTHX_ NULL, MARK, SP, pp, - did_pipes); - } - else - { - value = (I32)S_do_amigaos_exec3( - aTHX_ SvPVx(sv_mortalcopy(*SP), n_a), pp, did_pipes); - } + struct Task *parent; + I32 did_pipes; + int pp; + I32 value; + STRLEN n_a; + /* these next are declared by macros else where but I may be + * passing modified values here so declare them explictly but + * still referred to by macro below */ + + register SV **sp; + register SV **mark; + register PerlInterpreter *my_perl; + + StdioStore store; + + struct UserData *ud = (struct UserData *)userdata; + + did_pipes = ud->did_pipes; + parent = ud->parent; + pp = ud->pp; + SP = ud->sp; + MARK = ud->mark; + my_perl = ud->my_perl; + PERL_SET_THX(my_perl); + + amigaos_stdio_save(aTHX_ & store); + + if (did_pipes) + { + // PerlLIO_close(pp[0]); + } + if (PL_op->op_flags & OPf_STACKED) + { + SV *really = *++MARK; + value = (I32)S_do_amigaos_aexec5(aTHX_ really, MARK, SP, pp, + did_pipes); + } + else if (SP - MARK != 1) + { + value = (I32)S_do_amigaos_aexec5(aTHX_ NULL, MARK, SP, pp, + did_pipes); + } + else + { + value = (I32)S_do_amigaos_exec3( + aTHX_ SvPVx(sv_mortalcopy(*SP), n_a), pp, did_pipes); + } - // Forbid(); - // Signal(parent, SIGBREAKF_CTRL_F); + // Forbid(); + // Signal(parent, SIGBREAKF_CTRL_F); - amigaos_stdio_restore(aTHX_ & store); + amigaos_stdio_restore(aTHX_ & store); - return (void *)value; + return (void *)value; } static BOOL contains_whitespace(char *string) { - if (string) - { + if (string) + { - if (strchr(string, ' ')) - return TRUE; - if (strchr(string, '\t')) - return TRUE; - if (strchr(string, '\n')) - return TRUE; - if (strchr(string, 0xA0)) - return TRUE; - if (strchr(string, '"')) - return TRUE; - } - return FALSE; + if (strchr(string, ' ')) + return TRUE; + if (strchr(string, '\t')) + return TRUE; + if (strchr(string, '\n')) + return TRUE; + if (strchr(string, 0xA0)) + return TRUE; + if (strchr(string, '"')) + return TRUE; + } + return FALSE; } static int no_of_escapes(char *string) { - int cnt = 0; - char *p; - for (p = string; p < string + strlen(string); p++) - { - if (*p == '"') - cnt++; - if (*p == '*') - cnt++; - if (*p == '\n') - cnt++; - if (*p == '\t') - cnt++; - } - return cnt; + int cnt = 0; + char *p; + for (p = string; p < string + strlen(string); p++) + { + if (*p == '"') + cnt++; + if (*p == '*') + cnt++; + if (*p == '\n') + cnt++; + if (*p == '\t') + cnt++; + } + return cnt; } struct command_data { - STRPTR args; - BPTR seglist; - struct Task *parent; + STRPTR args; + BPTR seglist; + struct Task *parent; }; #undef fopen @@ -912,262 +910,262 @@ char *argv[], char *envp[]) { - FILE *fh; - char buffer[1000]; - int size = 0; - char **cur; - char *interpreter = 0; - char *interpreter_args = 0; - char *full = 0; - char *filename_conv = 0; - char *interpreter_conv = 0; - // char *tmp = 0; - char *fname; - // int tmpint; - // struct Task *thisTask = IExec->FindTask(0); - int result = -1; - - StdioStore store; - - pTHX = NULL; - - if (isperlthread) - { - aTHX = PERL_GET_THX; - /* Save away our stdio */ - amigaos_stdio_save(aTHX_ & store); - } - - // adebug("%s %ld %s\n",__FUNCTION__,__LINE__,filename?filename:"NULL"); - - /* Calculate the size of filename and all args, including spaces and - * quotes */ - size = 0; // strlen(filename) + 1; - for (cur = (char **)argv /* +1 */; *cur; cur++) - { - size += - strlen(*cur) + 1 + - (contains_whitespace(*cur) ? (2 + no_of_escapes(*cur)) : 0); - } - /* Check if it's a script file */ - IExec->DebugPrintF("%s %ld %08lx %c %c\n",__FILE__,__LINE__,filename,filename[0],filename[1]); - fh = fopen(filename, "r"); - if (fh) - { - if (fgetc(fh) == '#' && fgetc(fh) == '!') - { - char *p; - char *q; - fgets(buffer, 999, fh); - p = buffer; - while (*p == ' ' || *p == '\t') - p++; - if (buffer[strlen(buffer) - 1] == '\n') - buffer[strlen(buffer) - 1] = '\0'; - if ((q = strchr(p, ' '))) - { - *q++ = '\0'; - if (*q != '\0') - { - interpreter_args = mystrdup(q); - } - } - else - interpreter_args = mystrdup(""); - - interpreter = mystrdup(p); - size += strlen(interpreter) + 1; - size += strlen(interpreter_args) + 1; - } - - fclose(fh); - } - else - { - /* We couldn't open this why not? */ - if (errno == ENOENT) - { - /* file didn't exist! */ - goto out; - } - } - - /* Allocate the command line */ - filename_conv = convert_path_u2a(filename); - - if (filename_conv) - size += strlen(filename_conv); - size += 1; - full = (char *)IExec->AllocVecTags(size + 10, AVT_ClearWithValue, 0 ,TAG_DONE); - if (full) - { - if (interpreter) - { - interpreter_conv = convert_path_u2a(interpreter); + FILE *fh; + char buffer[1000]; + int size = 0; + char **cur; + char *interpreter = 0; + char *interpreter_args = 0; + char *full = 0; + char *filename_conv = 0; + char *interpreter_conv = 0; + // char *tmp = 0; + char *fname; + // int tmpint; + // struct Task *thisTask = IExec->FindTask(0); + int result = -1; + + StdioStore store; + + pTHX = NULL; + + if (isperlthread) + { + aTHX = PERL_GET_THX; + /* Save away our stdio */ + amigaos_stdio_save(aTHX_ & store); + } + + // adebug("%s %ld %s\n",__FUNCTION__,__LINE__,filename?filename:"NULL"); + + /* Calculate the size of filename and all args, including spaces and + * quotes */ + size = 0; // strlen(filename) + 1; + for (cur = (char **)argv /* +1 */; *cur; cur++) + { + size += + strlen(*cur) + 1 + + (contains_whitespace(*cur) ? (2 + no_of_escapes(*cur)) : 0); + } + /* Check if it's a script file */ + IExec->DebugPrintF("%s %ld %08lx %c %c\n",__FILE__,__LINE__,filename,filename[0],filename[1]); + fh = fopen(filename, "r"); + if (fh) + { + if (fgetc(fh) == '#' && fgetc(fh) == '!') + { + char *p; + char *q; + fgets(buffer, 999, fh); + p = buffer; + while (*p == ' ' || *p == '\t') + p++; + if (buffer[strlen(buffer) - 1] == '\n') + buffer[strlen(buffer) - 1] = '\0'; + if ((q = strchr(p, ' '))) + { + *q++ = '\0'; + if (*q != '\0') + { + interpreter_args = mystrdup(q); + } + } + else + interpreter_args = mystrdup(""); + + interpreter = mystrdup(p); + size += strlen(interpreter) + 1; + size += strlen(interpreter_args) + 1; + } + + fclose(fh); + } + else + { + /* We couldn't open this why not? */ + if (errno == ENOENT) + { + /* file didn't exist! */ + goto out; + } + } + + /* Allocate the command line */ + filename_conv = convert_path_u2a(filename); + + if (filename_conv) + size += strlen(filename_conv); + size += 1; + full = (char *)IExec->AllocVecTags(size + 10, AVT_ClearWithValue, 0 ,TAG_DONE); + if (full) + { + if (interpreter) + { + interpreter_conv = convert_path_u2a(interpreter); #if !defined(__USE_RUNCOMMAND__) #warning(using system!) - sprintf(full, "%s %s %s ", interpreter_conv, - interpreter_args, filename_conv); + sprintf(full, "%s %s %s ", interpreter_conv, + interpreter_args, filename_conv); #else - sprintf(full, "%s %s ", interpreter_args, - filename_conv); + sprintf(full, "%s %s ", interpreter_args, + filename_conv); #endif - IExec->FreeVec(interpreter); - IExec->FreeVec(interpreter_args); + IExec->FreeVec(interpreter); + IExec->FreeVec(interpreter_args); - if (filename_conv) - IExec->FreeVec(filename_conv); - fname = mystrdup(interpreter_conv); - - if (interpreter_conv) - IExec->FreeVec(interpreter_conv); - } - else - { + if (filename_conv) + IExec->FreeVec(filename_conv); + fname = mystrdup(interpreter_conv); + + if (interpreter_conv) + IExec->FreeVec(interpreter_conv); + } + else + { #ifndef __USE_RUNCOMMAND__ - sprintf(full, "%s ", filename_conv); + sprintf(full, "%s ", filename_conv); #else - sprintf(full, ""); + sprintf(full, ""); #endif - fname = mystrdup(filename_conv); - if (filename_conv) - IExec->FreeVec(filename_conv); - } - - for (cur = (char **)(argv + 1); *cur != 0; cur++) - { - if (contains_whitespace(*cur)) - { - int esc = no_of_escapes(*cur); - - if (esc > 0) - { - char *buff = (char *)IExec->AllocVecTags( - strlen(*cur) + 4 + esc, - AVT_ClearWithValue,0, - TAG_DONE); - char *p = *cur; - char *q = buff; - - *q++ = '"'; - while (*p != '\0') - { - - if (*p == '\n') - { - *q++ = '*'; - *q++ = 'N'; - p++; - continue; - } - else if (*p == '"') - { - *q++ = '*'; - *q++ = '"'; - p++; - continue; - } - else if (*p == '*') - { - *q++ = '*'; - } - *q++ = *p++; - } - *q++ = '"'; - *q++ = ' '; - *q = '\0'; - strcat(full, buff); - IExec->FreeVec(buff); - } - else - { - strcat(full, "\""); - strcat(full, *cur); - strcat(full, "\" "); - } - } - else - { - strcat(full, *cur); - strcat(full, " "); - } - } - strcat(full, "\n"); + fname = mystrdup(filename_conv); + if (filename_conv) + IExec->FreeVec(filename_conv); + } + + for (cur = (char **)(argv + 1); *cur != 0; cur++) + { + if (contains_whitespace(*cur)) + { + int esc = no_of_escapes(*cur); + + if (esc > 0) + { + char *buff = (char *)IExec->AllocVecTags( + strlen(*cur) + 4 + esc, + AVT_ClearWithValue,0, + TAG_DONE); + char *p = *cur; + char *q = buff; + + *q++ = '"'; + while (*p != '\0') + { + + if (*p == '\n') + { + *q++ = '*'; + *q++ = 'N'; + p++; + continue; + } + else if (*p == '"') + { + *q++ = '*'; + *q++ = '"'; + p++; + continue; + } + else if (*p == '*') + { + *q++ = '*'; + } + *q++ = *p++; + } + *q++ = '"'; + *q++ = ' '; + *q = '\0'; + strcat(full, buff); + IExec->FreeVec(buff); + } + else + { + strcat(full, "\""); + strcat(full, *cur); + strcat(full, "\" "); + } + } + else + { + strcat(full, *cur); + strcat(full, " "); + } + } + strcat(full, "\n"); // if(envp) // createvars(envp); #ifndef __USE_RUNCOMMAND__ - result = IDOS->SystemTags( - full, SYS_UserShell, TRUE, NP_StackSize, - ((struct Process *)thisTask)->pr_StackSize, SYS_Input, - ((struct Process *)thisTask)->pr_CIS, SYS_Output, - ((struct Process *)thisTask)->pr_COS, SYS_Error, - ((struct Process *)thisTask)->pr_CES, TAG_DONE); + result = IDOS->SystemTags( + full, SYS_UserShell, TRUE, NP_StackSize, + ((struct Process *)thisTask)->pr_StackSize, SYS_Input, + ((struct Process *)thisTask)->pr_CIS, SYS_Output, + ((struct Process *)thisTask)->pr_COS, SYS_Error, + ((struct Process *)thisTask)->pr_CES, TAG_DONE); #else - if (fname) - { - BPTR seglist = IDOS->LoadSeg(fname); - if (seglist) - { - /* check if we have an executable! */ - struct PseudoSegList *ps = NULL; - if (!IDOS->GetSegListInfoTags( - seglist, GSLI_Native, &ps, TAG_DONE)) - { - IDOS->GetSegListInfoTags( - seglist, GSLI_68KPS, &ps, TAG_DONE); - } - if (ps != NULL) - { - // adebug("%s %ld %s - // %s\n",__FUNCTION__,__LINE__,fname,full); - IDOS->SetCliProgramName(fname); - // result=RunCommand(seglist,8*1024,full,strlen(full)); - // result=myruncommand(seglist,8*1024,full,strlen(full),envp); - result = myruncommand(seglist, 8 * 1024, - full, -1, envp); - errno = 0; - } - else - { - errno = ENOEXEC; - } - IDOS->UnLoadSeg(seglist); - } - else - { - errno = ENOEXEC; - } - IExec->FreeVec(fname); - } + if (fname) + { + BPTR seglist = IDOS->LoadSeg(fname); + if (seglist) + { + /* check if we have an executable! */ + struct PseudoSegList *ps = NULL; + if (!IDOS->GetSegListInfoTags( + seglist, GSLI_Native, &ps, TAG_DONE)) + { + IDOS->GetSegListInfoTags( + seglist, GSLI_68KPS, &ps, TAG_DONE); + } + if (ps != NULL) + { + // adebug("%s %ld %s + // %s\n",__FUNCTION__,__LINE__,fname,full); + IDOS->SetCliProgramName(fname); + // result=RunCommand(seglist,8*1024,full,strlen(full)); + // result=myruncommand(seglist,8*1024,full,strlen(full),envp); + result = myruncommand(seglist, 8 * 1024, + full, -1, envp); + errno = 0; + } + else + { + errno = ENOEXEC; + } + IDOS->UnLoadSeg(seglist); + } + else + { + errno = ENOEXEC; + } + IExec->FreeVec(fname); + } #endif /* USE_RUNCOMMAND */ - IExec->FreeVec(full); - if (errno == ENOEXEC) - { - result = -1; - } - goto out; - } - - if (interpreter) - IExec->FreeVec(interpreter); - if (filename_conv) - IExec->FreeVec(filename_conv); + IExec->FreeVec(full); + if (errno == ENOEXEC) + { + result = -1; + } + goto out; + } + + if (interpreter) + IExec->FreeVec(interpreter); + if (filename_conv) + IExec->FreeVec(filename_conv); - errno = ENOMEM; + errno = ENOMEM; out: - if (isperlthread) - { - amigaos_stdio_restore(aTHX_ & store); - STATUS_NATIVE_CHILD_SET(result); - PL_exit_flags |= PERL_EXIT_EXPECTED; - if (result != -1) - my_exit(result); - } - return (result); + if (isperlthread) + { + amigaos_stdio_restore(aTHX_ & store); + STATUS_NATIVE_CHILD_SET(result); + PL_exit_flags |= PERL_EXIT_EXPECTED; + if (result != -1) + my_exit(result); + } + return (result); } diff -Nru perl-5.32.1/amigaos4/amigaio.h perl-5.34.0/amigaos4/amigaio.h --- perl-5.32.1/amigaos4/amigaio.h 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/amigaos4/amigaio.h 2021-01-20 23:04:44.000000000 +0000 @@ -7,14 +7,14 @@ struct StdioStore { - /* astdin...astderr are the amigaos file descriptors */ - long astdin; - long astdout; - long astderr; - /* oldstdin...oldstderr are the amigados file handles */ - long oldstdin; - long oldstdout; - long oldstderr; + /* astdin...astderr are the amigaos file descriptors */ + long astdin; + long astdout; + long astderr; + /* oldstdin...oldstderr are the amigados file handles */ + long oldstdin; + long oldstdout; + long oldstderr; }; typedef struct StdioStore StdioStore; @@ -32,12 +32,12 @@ * then pass it through task->tc_UserData or as arg to new pthread */ struct UserData { - struct Task *parent; - I32 did_pipes; - int pp; - SV **sp; - SV **mark; - PerlInterpreter *my_perl; + struct Task *parent; + I32 did_pipes; + int pp; + SV **sp; + SV **mark; + PerlInterpreter *my_perl; }; void amigaos_fork_set_userdata( diff -Nru perl-5.32.1/amigaos4/amigaos.c perl-5.34.0/amigaos4/amigaos.c --- perl-5.32.1/amigaos4/amigaos.c 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/amigaos4/amigaos.c 2021-05-04 06:52:48.000000000 +0000 @@ -36,28 +36,28 @@ struct Interface *OpenInterface(CONST_STRPTR libname, uint32 libver) { - struct Library *base = IExec->OpenLibrary(libname, libver); - struct Interface *iface = IExec->GetInterface(base, "main", 1, NULL); - if (iface == NULL) - { - // We should probably post some kind of error message here. + struct Library *base = IExec->OpenLibrary(libname, libver); + struct Interface *iface = IExec->GetInterface(base, "main", 1, NULL); + if (iface == NULL) + { + // We should probably post some kind of error message here. - IExec->CloseLibrary(base); - } + IExec->CloseLibrary(base); + } - return iface; + return iface; } /***************************************************************************/ void CloseInterface(struct Interface *iface) { - if (iface != NULL) - { - struct Library *base = iface->Data.LibBase; - IExec->DropInterface(iface); - IExec->CloseLibrary(base); - } + if (iface != NULL) + { + struct Library *base = iface->Data.LibBase; + IExec->DropInterface(iface); + IExec->CloseLibrary(base); + } } BOOL __unlink_retries = FALSE; @@ -70,17 +70,17 @@ void ___openinterfaces() { - if (!IDOS) - IDOS = (struct DOSIFace *)OpenInterface("dos.library", 53); - if (!IUtility) - IUtility = - (struct UtilityIFace *)OpenInterface("utility.library", 53); + if (!IDOS) + IDOS = (struct DOSIFace *)OpenInterface("dos.library", 53); + if (!IUtility) + IUtility = + (struct UtilityIFace *)OpenInterface("utility.library", 53); } void ___closeinterfaces() { - CloseInterface((struct Interface *)IDOS); - CloseInterface((struct Interface *)IUtility); + CloseInterface((struct Interface *)IDOS); + CloseInterface((struct Interface *)IUtility); } int VARARGS68K araddebug(UBYTE *fmt, ...); int VARARGS68K adebug(UBYTE *fmt, ...); @@ -94,150 +94,150 @@ struct args { - BPTR seglist; - int stack; - char *command; - int length; - int result; - char **envp; + BPTR seglist; + int stack; + char *command; + int length; + int result; + char **envp; }; int __myrc(__attribute__((unused))char *arg) { - struct Task *thisTask = IExec->FindTask(0); - struct args *myargs = (struct args *)thisTask->tc_UserData; - if (myargs->envp) - createvars(myargs->envp); - // adebug("%s %ld %s \n",__FUNCTION__,__LINE__,myargs->command); - myargs->result = IDOS->RunCommand(myargs->seglist, myargs->stack, - myargs->command, myargs->length); - return 0; + struct Task *thisTask = IExec->FindTask(0); + struct args *myargs = (struct args *)thisTask->tc_UserData; + if (myargs->envp) + createvars(myargs->envp); + // adebug("%s %ld %s \n",__FUNCTION__,__LINE__,myargs->command); + myargs->result = IDOS->RunCommand(myargs->seglist, myargs->stack, + myargs->command, myargs->length); + return 0; } int32 myruncommand( BPTR seglist, int stack, char *command, int length, char **envp) { - struct args myargs; - struct Task *thisTask = IExec->FindTask(0); - struct Process *proc; - - // adebug("%s %ld %s\n",__FUNCTION__,__LINE__,command?command:"NULL"); - - myargs.seglist = seglist; - myargs.stack = stack; - myargs.command = command; - myargs.length = length; - myargs.result = -1; - myargs.envp = envp; - - if ((proc = IDOS->CreateNewProcTags( - NP_Entry, __myrc, NP_Child, TRUE, NP_Input, IDOS->Input(), - NP_Output, IDOS->Output(), NP_Error, IDOS->ErrorOutput(), - NP_CloseInput, FALSE, NP_CloseOutput, FALSE, NP_CloseError, - FALSE, NP_CopyVars, FALSE, - - // NP_StackSize, ((struct Process - // *)myargs.parent)->pr_StackSize, - NP_Cli, TRUE, NP_UserData, (int)&myargs, - NP_NotifyOnDeathSigTask, thisTask, TAG_DONE))) - - { - IExec->Wait(SIGF_CHILD); - } - return myargs.result; + struct args myargs; + struct Task *thisTask = IExec->FindTask(0); + struct Process *proc; + + // adebug("%s %ld %s\n",__FUNCTION__,__LINE__,command?command:"NULL"); + + myargs.seglist = seglist; + myargs.stack = stack; + myargs.command = command; + myargs.length = length; + myargs.result = -1; + myargs.envp = envp; + + if ((proc = IDOS->CreateNewProcTags( + NP_Entry, __myrc, NP_Child, TRUE, NP_Input, IDOS->Input(), + NP_Output, IDOS->Output(), NP_Error, IDOS->ErrorOutput(), + NP_CloseInput, FALSE, NP_CloseOutput, FALSE, NP_CloseError, + FALSE, NP_CopyVars, FALSE, + + // NP_StackSize, ((struct Process + // *)myargs.parent)->pr_StackSize, + NP_Cli, TRUE, NP_UserData, (int)&myargs, + NP_NotifyOnDeathSigTask, thisTask, TAG_DONE))) + + { + IExec->Wait(SIGF_CHILD); + } + return myargs.result; } char *mystrdup(const char *s) { - char *result = NULL; - size_t size; + char *result = NULL; + size_t size; - size = strlen(s) + 1; + size = strlen(s) + 1; - if ((result = (char *)IExec->AllocVecTags(size, TAG_DONE))) - { - memmove(result, s, size); - } - return result; + if ((result = (char *)IExec->AllocVecTags(size, TAG_DONE))) + { + memmove(result, s, size); + } + return result; } unsigned int pipenum = 0; int pipe(int filedes[2]) { - char pipe_name[1024]; + char pipe_name[1024]; // adebug("%s %ld \n",__FUNCTION__,__LINE__); #ifdef USE_TEMPFILES - sprintf(pipe_name, "/T/%x.%08lx", pipenum++, IUtility->GetUniqueID()); + sprintf(pipe_name, "/T/%x.%08lx", pipenum++, IUtility->GetUniqueID()); #else - sprintf(pipe_name, "/PIPE/%x%08lx/4096/0", pipenum++, - IUtility->GetUniqueID()); + sprintf(pipe_name, "/PIPE/%x%08lx/4096/0", pipenum++, + IUtility->GetUniqueID()); #endif - /* printf("pipe: %s \n", pipe_name);*/ + /* printf("pipe: %s \n", pipe_name);*/ - filedes[1] = open(pipe_name, O_WRONLY | O_CREAT); - filedes[0] = open(pipe_name, O_RDONLY); - if (filedes[0] == -1 || filedes[1] == -1) - { - if (filedes[0] != -1) - close(filedes[0]); - if (filedes[1] != -1) - close(filedes[1]); - return -1; - } - /* printf("filedes %d %d\n", filedes[0], - * filedes[1]);fflush(stdout);*/ + filedes[1] = open(pipe_name, O_WRONLY | O_CREAT); + filedes[0] = open(pipe_name, O_RDONLY); + if (filedes[0] == -1 || filedes[1] == -1) + { + if (filedes[0] != -1) + close(filedes[0]); + if (filedes[1] != -1) + close(filedes[1]); + return -1; + } + /* printf("filedes %d %d\n", filedes[0], + * filedes[1]);fflush(stdout);*/ - return 0; + return 0; } int fork(void) { - fprintf(stderr, "Can not bloody fork\n"); - errno = ENOMEM; - return -1; + fprintf(stderr, "Can not bloody fork\n"); + errno = ENOMEM; + return -1; } int wait(__attribute__((unused))int *status) { - fprintf(stderr, "No wait try waitpid instead\n"); - errno = ECHILD; - return -1; + fprintf(stderr, "No wait try waitpid instead\n"); + errno = ECHILD; + return -1; } char *convert_path_a2u(const char *filename) { - struct NameTranslationInfo nti; + struct NameTranslationInfo nti; - if (!filename) - { - return 0; - } + if (!filename) + { + return 0; + } - __translate_amiga_to_unix_path_name(&filename, &nti); + __translate_amiga_to_unix_path_name(&filename, &nti); - return mystrdup(filename); + return mystrdup(filename); } char *convert_path_u2a(const char *filename) { - struct NameTranslationInfo nti; + struct NameTranslationInfo nti; - if (!filename) - { - return 0; - } - - if (strcmp(filename, "/dev/tty") == 0) - { - return mystrdup("CONSOLE:"); - ; - } + if (!filename) + { + return 0; + } + + if (strcmp(filename, "/dev/tty") == 0) + { + return mystrdup("CONSOLE:"); + ; + } - __translate_unix_to_amiga_path_name(&filename, &nti); + __translate_unix_to_amiga_path_name(&filename, &nti); - return mystrdup(filename); + return mystrdup(filename); } struct SignalSemaphore environ_sema; @@ -246,278 +246,278 @@ void amigaos4_init_environ_sema() { - IExec->InitSemaphore(&environ_sema); - IExec->InitSemaphore(&popen_sema); + IExec->InitSemaphore(&environ_sema); + IExec->InitSemaphore(&popen_sema); } void amigaos4_obtain_environ() { - IExec->ObtainSemaphore(&environ_sema); + IExec->ObtainSemaphore(&environ_sema); } void amigaos4_release_environ() { - IExec->ReleaseSemaphore(&environ_sema); + IExec->ReleaseSemaphore(&environ_sema); } static void createvars(char **envp) { - if (envp) - { - /* Set a local var to indicate to any subsequent sh that it is - * not - * the top level shell and so should only inherit local amigaos - * vars */ - IDOS->SetVar("ABCSH_IMPORT_LOCAL", "TRUE", 5, GVF_LOCAL_ONLY); - - amigaos4_obtain_environ(); - - envp = myenviron; - - while ((envp != NULL) && (*envp != NULL)) - { - int len; - char *var; - char *val; - if ((len = strlen(*envp))) - { - if ((var = (char *)IExec->AllocVecTags(len + 1, AVT_ClearWithValue,0,TAG_DONE))) - { - strcpy(var, *envp); - - val = strchr(var, '='); - if (val) - { - *val++ = '\0'; - if (*val) - { - IDOS->SetVar( - var, val, - strlen(val) + 1, - GVF_LOCAL_ONLY); - } - } - IExec->FreeVec(var); - } - } - envp++; - } - amigaos4_release_environ(); - } + if (envp) + { + /* Set a local var to indicate to any subsequent sh that it is + * not + * the top level shell and so should only inherit local amigaos + * vars */ + IDOS->SetVar("ABCSH_IMPORT_LOCAL", "TRUE", 5, GVF_LOCAL_ONLY); + + amigaos4_obtain_environ(); + + envp = myenviron; + + while ((envp != NULL) && (*envp != NULL)) + { + int len; + char *var; + char *val; + if ((len = strlen(*envp))) + { + if ((var = (char *)IExec->AllocVecTags(len + 1, AVT_ClearWithValue,0,TAG_DONE))) + { + strcpy(var, *envp); + + val = strchr(var, '='); + if (val) + { + *val++ = '\0'; + if (*val) + { + IDOS->SetVar( + var, val, + strlen(val) + 1, + GVF_LOCAL_ONLY); + } + } + IExec->FreeVec(var); + } + } + envp++; + } + amigaos4_release_environ(); + } } struct command_data { - STRPTR args; - BPTR seglist; - struct Task *parent; + STRPTR args; + BPTR seglist; + struct Task *parent; }; int myexecvp(bool isperlthread, const char *filename, char *argv[]) { - // adebug("%s %ld - //%s\n",__FUNCTION__,__LINE__,filename?filename:"NULL"); - /* if there's a slash or a colon consider filename a path and skip - * search */ - int res; - char *name = NULL; - char *pathpart = NULL; - if ((strchr(filename, '/') == NULL) && (strchr(filename, ':') == NULL)) - { - const char *path; - const char *p; - size_t len; - struct stat st; - - if (!(path = getenv("PATH"))) - { - path = ".:/bin:/usr/bin:/c"; - } - - len = strlen(filename) + 1; - name = (char *)IExec->AllocVecTags(strlen(path) + len, AVT_ClearWithValue,0,AVT_Type,MEMF_SHARED,TAG_DONE); - pathpart = (char *)IExec->AllocVecTags(strlen(path) + 1, AVT_ClearWithValue,0,AVT_Type,MEMF_SHARED,TAG_DONE); - p = path; - do - { - path = p; - - if (!(p = strchr(path, ':'))) - { - p = strchr(path, '\0'); - } - - memcpy(pathpart, path, p - path); - pathpart[p - path] = '\0'; - if (!(strlen(pathpart) == 0)) - { - sprintf(name, "%s/%s", pathpart, filename); - } - else - sprintf(name, "%s", filename); - - if ((stat(name, &st) == 0) && (S_ISREG(st.st_mode))) - { - /* we stated it and it's a regular file */ - /* let's boogie! */ - filename = name; - break; - } - - } - while (*p++ != '\0'); - } - - res = myexecve(isperlthread, filename, argv, myenviron); - - if(name) - { - IExec->FreeVec((APTR)name); - name = NULL; - } - if(pathpart) - { - IExec->FreeVec((APTR)pathpart); - pathpart = NULL; - } - return res; + // adebug("%s %ld + //%s\n",__FUNCTION__,__LINE__,filename?filename:"NULL"); + /* if there's a slash or a colon consider filename a path and skip + * search */ + int res; + char *name = NULL; + char *pathpart = NULL; + if ((strchr(filename, '/') == NULL) && (strchr(filename, ':') == NULL)) + { + const char *path; + const char *p; + size_t len; + struct stat st; + + if (!(path = getenv("PATH"))) + { + path = ".:/bin:/usr/bin:/c"; + } + + len = strlen(filename) + 1; + name = (char *)IExec->AllocVecTags(strlen(path) + len, AVT_ClearWithValue,0,AVT_Type,MEMF_SHARED,TAG_DONE); + pathpart = (char *)IExec->AllocVecTags(strlen(path) + 1, AVT_ClearWithValue,0,AVT_Type,MEMF_SHARED,TAG_DONE); + p = path; + do + { + path = p; + + if (!(p = strchr(path, ':'))) + { + p = strchr(path, '\0'); + } + + memcpy(pathpart, path, p - path); + pathpart[p - path] = '\0'; + if (!(strlen(pathpart) == 0)) + { + sprintf(name, "%s/%s", pathpart, filename); + } + else + sprintf(name, "%s", filename); + + if ((stat(name, &st) == 0) && (S_ISREG(st.st_mode))) + { + /* we stated it and it's a regular file */ + /* let's boogie! */ + filename = name; + break; + } + + } + while (*p++ != '\0'); + } + + res = myexecve(isperlthread, filename, argv, myenviron); + + if(name) + { + IExec->FreeVec((APTR)name); + name = NULL; + } + if(pathpart) + { + IExec->FreeVec((APTR)pathpart); + pathpart = NULL; + } + return res; } int myexecv(bool isperlthread, const char *path, char *argv[]) { - return myexecve(isperlthread, path, argv, myenviron); + return myexecve(isperlthread, path, argv, myenviron); } int myexecl(bool isperlthread, const char *path, ...) { - va_list va; - char *argv[1024]; /* 1024 enough? let's hope so! */ - int i = 0; - // adebug("%s %ld\n",__FUNCTION__,__LINE__); - - va_start(va, path); - i = 0; - - do - { - argv[i] = va_arg(va, char *); - } - while (argv[i++] != NULL); + va_list va; + char *argv[1024]; /* 1024 enough? let's hope so! */ + int i = 0; + // adebug("%s %ld\n",__FUNCTION__,__LINE__); + + va_start(va, path); + i = 0; + + do + { + argv[i] = va_arg(va, char *); + } + while (argv[i++] != NULL); - va_end(va); - return myexecve(isperlthread, path, argv, myenviron); + va_end(va); + return myexecve(isperlthread, path, argv, myenviron); } int pause(void) { - fprintf(stderr, "Pause not implemented\n"); + fprintf(stderr, "Pause not implemented\n"); - errno = EINTR; - return -1; + errno = EINTR; + return -1; } uint32 size_env(struct Hook *hook, __attribute__((unused))APTR userdata, struct ScanVarsMsg *message) { - if (strlen(message->sv_GDir) <= 4) - { - hook->h_Data = (APTR)(((uint32)hook->h_Data) + 1); - } - return 0; + if (strlen(message->sv_GDir) <= 4) + { + hook->h_Data = (APTR)(((uint32)hook->h_Data) + 1); + } + return 0; } uint32 copy_env(struct Hook *hook, __attribute__((unused))APTR userdata, struct ScanVarsMsg *message) { - if (strlen(message->sv_GDir) <= 4) - { - char **env = (char **)hook->h_Data; - uint32 size = - strlen(message->sv_Name) + 1 + message->sv_VarLen + 1 + 1; - char *buffer = (char *)IExec->AllocVecTags((uint32)size,AVT_ClearWithValue,0,TAG_DONE); - - - snprintf(buffer, size - 1, "%s=%s", message->sv_Name, - message->sv_Var); - - *env = buffer; - env++; - hook->h_Data = env; - } - return 0; + if (strlen(message->sv_GDir) <= 4) + { + char **env = (char **)hook->h_Data; + uint32 size = + strlen(message->sv_Name) + 1 + message->sv_VarLen + 1 + 1; + char *buffer = (char *)IExec->AllocVecTags((uint32)size,AVT_ClearWithValue,0,TAG_DONE); + + + snprintf(buffer, size - 1, "%s=%s", message->sv_Name, + message->sv_Var); + + *env = buffer; + env++; + hook->h_Data = env; + } + return 0; } void ___makeenviron() { - struct Hook *hook = (struct Hook *)IExec->AllocSysObjectTags(ASOT_HOOK,TAG_DONE); + struct Hook *hook = (struct Hook *)IExec->AllocSysObjectTags(ASOT_HOOK,TAG_DONE); - if(hook) - { - char varbuf[8]; - uint32 flags = 0; - - struct DOSIFace *myIDOS = - (struct DOSIFace *)OpenInterface("dos.library", 53); - if (myIDOS) - { - uint32 size = 0; - if (myIDOS->GetVar("ABCSH_IMPORT_LOCAL", varbuf, 8, - GVF_LOCAL_ONLY) > 0) - { - flags = GVF_LOCAL_ONLY; - } - else - { - flags = GVF_GLOBAL_ONLY; - } - - hook->h_Entry = size_env; - hook->h_Data = 0; - - myIDOS->ScanVars(hook, flags, 0); - size = ((uint32)hook->h_Data) + 1; - - myenviron = (char **)IExec->AllocVecTags(size * - sizeof(char **), - AVT_ClearWithValue,0,TAG_DONE); - origenviron = myenviron; - if (!myenviron) - { - IExec->FreeSysObject(ASOT_HOOK,hook); - CloseInterface((struct Interface *)myIDOS); - return; - } - hook->h_Entry = copy_env; - hook->h_Data = myenviron; - - myIDOS->ScanVars(hook, flags, 0); - IExec->FreeSysObject(ASOT_HOOK,hook); - CloseInterface((struct Interface *)myIDOS); - } - } + if(hook) + { + char varbuf[8]; + uint32 flags = 0; + + struct DOSIFace *myIDOS = + (struct DOSIFace *)OpenInterface("dos.library", 53); + if (myIDOS) + { + uint32 size = 0; + if (myIDOS->GetVar("ABCSH_IMPORT_LOCAL", varbuf, 8, + GVF_LOCAL_ONLY) > 0) + { + flags = GVF_LOCAL_ONLY; + } + else + { + flags = GVF_GLOBAL_ONLY; + } + + hook->h_Entry = size_env; + hook->h_Data = 0; + + myIDOS->ScanVars(hook, flags, 0); + size = ((uint32)hook->h_Data) + 1; + + myenviron = (char **)IExec->AllocVecTags(size * + sizeof(char **), + AVT_ClearWithValue,0,TAG_DONE); + origenviron = myenviron; + if (!myenviron) + { + IExec->FreeSysObject(ASOT_HOOK,hook); + CloseInterface((struct Interface *)myIDOS); + return; + } + hook->h_Entry = copy_env; + hook->h_Data = myenviron; + + myIDOS->ScanVars(hook, flags, 0); + IExec->FreeSysObject(ASOT_HOOK,hook); + CloseInterface((struct Interface *)myIDOS); + } + } } void ___freeenviron() { - char **i; - /* perl might change environ, it puts it back except for ctrl-c */ - /* so restore our own copy here */ - struct DOSIFace *myIDOS = - (struct DOSIFace *)OpenInterface("dos.library", 53); - if (myIDOS) - { - myenviron = origenviron; - - if (myenviron) - { - for (i = myenviron; *i != NULL; i++) - { - IExec->FreeVec(*i); - } - IExec->FreeVec(myenviron); - myenviron = NULL; - } - CloseInterface((struct Interface *)myIDOS); - } + char **i; + /* perl might change environ, it puts it back except for ctrl-c */ + /* so restore our own copy here */ + struct DOSIFace *myIDOS = + (struct DOSIFace *)OpenInterface("dos.library", 53); + if (myIDOS) + { + myenviron = origenviron; + + if (myenviron) + { + for (i = myenviron; *i != NULL; i++) + { + IExec->FreeVec(*i); + } + IExec->FreeVec(myenviron); + myenviron = NULL; + } + CloseInterface((struct Interface *)myIDOS); + } } @@ -530,126 +530,126 @@ int afstat(int fd, struct stat *statb) { - int result; - BPTR fh; - int mode; - BOOL input; - /* In the first instance pass it to fstat */ - // adebug("fd %ld ad %ld\n",fd,amigaos_get_file(fd)); + int result; + BPTR fh; + int mode; + BOOL input; + /* In the first instance pass it to fstat */ + // adebug("fd %ld ad %ld\n",fd,amigaos_get_file(fd)); - if ((result = fstat(fd, statb) >= 0)) - return result; + if ((result = fstat(fd, statb) >= 0)) + return result; - /* Now we've got a file descriptor but we failed to stat it */ - /* Could be a nil: or could be a std#? */ + /* Now we've got a file descriptor but we failed to stat it */ + /* Could be a nil: or could be a std#? */ - /* if get_default_file fails we had a dud fd so return failure */ + /* if get_default_file fails we had a dud fd so return failure */ #if !defined(__CLIB2__) - fh = amigaos_get_file(fd); + fh = amigaos_get_file(fd); - /* if nil: return failure*/ - if (fh == 0) - return -1; - - /* Now compare with our process Input() Output() etc */ - /* if these were regular files sockets or pipes we had already - * succeeded */ - /* so we can guess they a character special console.... I hope */ - - struct ExamineData *data; - char name[120]; - name[0] = '\0'; - - data = IDOS->ExamineObjectTags(EX_FileHandleInput, fh, TAG_END); - if (data != NULL) - { - - IUtility->Strlcpy(name, data->Name, sizeof(name)); - - IDOS->FreeDosObject(DOS_EXAMINEDATA, data); - } - - // adebug("ad %ld '%s'\n",amigaos_get_file(fd),name); - mode = S_IFCHR; - - if (fh == IDOS->Input()) - { - input = TRUE; - SET_FLAG(mode, S_IRUSR); - SET_FLAG(mode, S_IRGRP); - SET_FLAG(mode, S_IROTH); - } - else if (fh == IDOS->Output() || fh == IDOS->ErrorOutput()) - { - input = FALSE; - SET_FLAG(mode, S_IWUSR); - SET_FLAG(mode, S_IWGRP); - SET_FLAG(mode, S_IWOTH); - } - else - { - /* we got a filehandle not handle by fstat or the above */ - /* most likely it's NIL: but lets check */ - struct ExamineData *exd = NULL; - if ((exd = IDOS->ExamineObjectTags(EX_FileHandleInput, fh, - TAG_DONE))) - { - BOOL isnil = FALSE; - if (exd->Type == - (20060920)) // Ugh yes I know nasty..... - { - isnil = TRUE; - } - IDOS->FreeDosObject(DOS_EXAMINEDATA, exd); - if (isnil) - { - /* yep we got NIL: */ - SET_FLAG(mode, S_IRUSR); - SET_FLAG(mode, S_IRGRP); - SET_FLAG(mode, S_IROTH); - SET_FLAG(mode, S_IWUSR); - SET_FLAG(mode, S_IWGRP); - SET_FLAG(mode, S_IWOTH); - } - else - { - IExec->DebugPrintF( - "unhandled filehandle in afstat()\n"); - return -1; - } - } - } + /* if nil: return failure*/ + if (fh == 0) + return -1; + + /* Now compare with our process Input() Output() etc */ + /* if these were regular files sockets or pipes we had already + * succeeded */ + /* so we can guess they a character special console.... I hope */ + + struct ExamineData *data; + char name[120]; + name[0] = '\0'; + + data = IDOS->ExamineObjectTags(EX_FileHandleInput, fh, TAG_END); + if (data != NULL) + { + + IUtility->Strlcpy(name, data->Name, sizeof(name)); + + IDOS->FreeDosObject(DOS_EXAMINEDATA, data); + } + + // adebug("ad %ld '%s'\n",amigaos_get_file(fd),name); + mode = S_IFCHR; + + if (fh == IDOS->Input()) + { + input = TRUE; + SET_FLAG(mode, S_IRUSR); + SET_FLAG(mode, S_IRGRP); + SET_FLAG(mode, S_IROTH); + } + else if (fh == IDOS->Output() || fh == IDOS->ErrorOutput()) + { + input = FALSE; + SET_FLAG(mode, S_IWUSR); + SET_FLAG(mode, S_IWGRP); + SET_FLAG(mode, S_IWOTH); + } + else + { + /* we got a filehandle not handle by fstat or the above */ + /* most likely it's NIL: but lets check */ + struct ExamineData *exd = NULL; + if ((exd = IDOS->ExamineObjectTags(EX_FileHandleInput, fh, + TAG_DONE))) + { + BOOL isnil = FALSE; + if (exd->Type == + (20060920)) // Ugh yes I know nasty..... + { + isnil = TRUE; + } + IDOS->FreeDosObject(DOS_EXAMINEDATA, exd); + if (isnil) + { + /* yep we got NIL: */ + SET_FLAG(mode, S_IRUSR); + SET_FLAG(mode, S_IRGRP); + SET_FLAG(mode, S_IROTH); + SET_FLAG(mode, S_IWUSR); + SET_FLAG(mode, S_IWGRP); + SET_FLAG(mode, S_IWOTH); + } + else + { + IExec->DebugPrintF( + "unhandled filehandle in afstat()\n"); + return -1; + } + } + } - memset(statb, 0, sizeof(statb)); + memzero(statb, sizeof(statb)); - statb->st_mode = mode; + statb->st_mode = mode; #endif - return 0; + return 0; } BPTR amigaos_get_file(int fd) { - BPTR fh = (BPTR)NULL; - if (!(fh = _get_osfhandle(fd))) - { - switch (fd) - { - case 0: - fh = IDOS->Input(); - break; - case 1: - fh = IDOS->Output(); - break; - case 2: - fh = IDOS->ErrorOutput(); - break; - default: - break; - } - } - return fh; + BPTR fh = (BPTR)NULL; + if (!(fh = _get_osfhandle(fd))) + { + switch (fd) + { + case 0: + fh = IDOS->Input(); + break; + case 1: + fh = IDOS->Output(); + break; + case 2: + fh = IDOS->ErrorOutput(); + break; + default: + break; + } + } + return fh; } /*########################################################################*/ @@ -662,78 +662,78 @@ int amigaos_flock(int fd, int oper) { - BPTR fh; - int32 success = -1; + BPTR fh; + int32 success = -1; - if (!(fh = amigaos_get_file(fd))) - { - errno = EBADF; - return -1; - } - - switch (oper) - { - case LOCK_SH: - { - if (IDOS->LockRecord(fh, LOCK_START, LOCK_LENGTH, - REC_SHARED | RECF_DOS_METHOD_ONLY, - TIMEOUT)) - { - success = 0; - } - break; - } - case LOCK_EX: - { - if (IDOS->LockRecord(fh, LOCK_START, LOCK_LENGTH, - REC_EXCLUSIVE | RECF_DOS_METHOD_ONLY, - TIMEOUT)) - { - success = 0; - } - break; - } - case LOCK_SH | LOCK_NB: - { - if (IDOS->LockRecord(fh, LOCK_START, LOCK_LENGTH, - REC_SHARED_IMMED | RECF_DOS_METHOD_ONLY, - TIMEOUT)) - { - success = 0; - } - else - { - errno = EWOULDBLOCK; - } - break; - } - case LOCK_EX | LOCK_NB: - { - if (IDOS->LockRecord(fh, LOCK_START, LOCK_LENGTH, - REC_EXCLUSIVE_IMMED | RECF_DOS_METHOD_ONLY, - TIMEOUT)) - { - success = 0; - } - else - { - errno = EWOULDBLOCK; - } - break; - } - case LOCK_UN: - { - if (IDOS->UnLockRecord(fh, LOCK_START, LOCK_LENGTH)) - { - success = 0; - } - break; - } - default: - { - errno = EINVAL; - return -1; - } - } - return success; + if (!(fh = amigaos_get_file(fd))) + { + errno = EBADF; + return -1; + } + + switch (oper) + { + case LOCK_SH: + { + if (IDOS->LockRecord(fh, LOCK_START, LOCK_LENGTH, + REC_SHARED | RECF_DOS_METHOD_ONLY, + TIMEOUT)) + { + success = 0; + } + break; + } + case LOCK_EX: + { + if (IDOS->LockRecord(fh, LOCK_START, LOCK_LENGTH, + REC_EXCLUSIVE | RECF_DOS_METHOD_ONLY, + TIMEOUT)) + { + success = 0; + } + break; + } + case LOCK_SH | LOCK_NB: + { + if (IDOS->LockRecord(fh, LOCK_START, LOCK_LENGTH, + REC_SHARED_IMMED | RECF_DOS_METHOD_ONLY, + TIMEOUT)) + { + success = 0; + } + else + { + errno = EWOULDBLOCK; + } + break; + } + case LOCK_EX | LOCK_NB: + { + if (IDOS->LockRecord(fh, LOCK_START, LOCK_LENGTH, + REC_EXCLUSIVE_IMMED | RECF_DOS_METHOD_ONLY, + TIMEOUT)) + { + success = 0; + } + else + { + errno = EWOULDBLOCK; + } + break; + } + case LOCK_UN: + { + if (IDOS->UnLockRecord(fh, LOCK_START, LOCK_LENGTH)) + { + success = 0; + } + break; + } + default: + { + errno = EINVAL; + return -1; + } + } + return success; } diff -Nru perl-5.32.1/AUTHORS perl-5.34.0/AUTHORS --- perl-5.32.1/AUTHORS 2020-12-26 15:28:54.000000000 +0000 +++ perl-5.34.0/AUTHORS 2021-05-20 16:56:32.000000000 +0000 @@ -31,7 +31,7 @@ Achim Bohnet Achim Gratz Adam Flott -Adam Hartley @BytesGuy +Adam Hartley @bytesguy Adam Kennedy Adam Krolnik Adam Milner @@ -141,6 +141,7 @@ Bas van Sisseren Beau Cox Ben Carter +Ben Cornett Ben Hengst Ben Morrow Ben Okopnik @@ -174,6 +175,7 @@ Bradley Dean Bram Brandon Black +Branislav Zahradník Brendan Byrd Brendan O'Dea Breno G. de Oliveira @@ -248,6 +250,7 @@ Christian Hansen Christian Kirsch Christian Millour +Christian Walde (Mithaldu) Christian Winter Christoph Lamprecht Christophe Grosjean @@ -292,11 +295,13 @@ Dan Schmidt Dan Sugalski Daniel Berger +Daniel Böhmer Daniel Chetlin Daniel Dragan Daniel Frederick Crisman Daniel Grisinger Daniel Kahn Gillmor +Daniel Laügt Daniel Lieberman Daniel Muiño Daniel P. Berrange @@ -369,6 +374,7 @@ Dmitry Karasik Dmitry Ulanov Dominic Dunlop +Dominic Hamon Dominic Hargreaves Dominique Dumont Dominique Quatravaux @@ -406,6 +412,7 @@ Eric E. Coe Eric Fifer Eric Herman +Eric Lindblad Eric Melville Eric Promislow Erich Rickheit @@ -413,6 +420,7 @@ Etienne Grossman Eugen Konkov Eugene Alterman +Eugene Alvin Villar Evan Miller Evan Zacks Fabien Tassin @@ -457,7 +465,9 @@ Gerrit P. Haase Gideon Israel Dsouza Giles Lean +Giovanni Tataranni Gisle Aas +GitHub Glenn D. Golden Glenn Linderman Gordon J. Miller @@ -539,6 +549,7 @@ Ingy döt Net insecure Irving Reid +Ivan Baidakou Ivan Kurmanov Ivan Pozdeev Ivan Tubert-Brohman @@ -549,6 +560,7 @@ Jack Shirazi Jacques Germishuys Jacqui Caren +Jae Bradley Jake Hamby Jakub Wilk James @@ -616,6 +628,7 @@ Jim Richardson Jim Schneider Jirka Hruška +jkahrman Joachim Huober Joaquin Ferrero Jochen Wiedmann @@ -646,6 +659,7 @@ John Heidemann John Holdsworth John Hughes +John Karr John Kristian John L. Allen John Lightsey @@ -787,6 +801,7 @@ Marc Green Marc Lehmann Marc Paquette +Marc Reisner Marc Simpson Marc-Philip Werner Marcel Grünauer @@ -1044,6 +1059,7 @@ Rainer Keuchel Rainer Orth Rainer Tammer +raiph @raiph Rajesh Mandalemula Rajesh Vaidheeswarran Ralf S. Engelschall @@ -1101,6 +1117,7 @@ Roderick Schertler Rodger Anderson Rodolfo Carvalho +Romano Ronald F. Guilmette Ronald J. Kimball Ronald Schmidt @@ -1120,6 +1137,7 @@ Sam Kimbrel Sam Tregar Sam Vilain +Samanta Navarro Samuel Smith Samuel Thibault Samuli Kärkkäinen @@ -1127,6 +1145,7 @@ Sawyer X Schuyler Erle Scott A Crosby +Scott Baker Scott Bronson Scott Gifford Scott Henry @@ -1145,6 +1164,7 @@ Sebastien Barre Sergey Alekseev Sergey Aleynikov +Sergey Poznyakoff Sergiy Borodych Sevan Janiyan Shawn @@ -1164,6 +1184,7 @@ Simon Schubert Sinan Unur Sisyphus +Sizhe Zhao Slaven Rezic Smylers Solar Designer @@ -1214,6 +1235,7 @@ Sébastien Aperghis-Tramoni Sérgio Durigan Júnior Tadeusz Sośnierz +TAKAI Kousuke <62541129+t-a-k@users.noreply.github.com> Takis Psarogiannakopoulos Taro KAWAGISHI Tassilo von Parseval @@ -1263,6 +1285,7 @@ Tom Hukins Tom Phoenix Tom Spindler +Tom Stellard Tom Wyant Tomasz Konojacki Tomoyuki Sadahiro @@ -1294,6 +1317,8 @@ Vincent Pit Vishal Bhatia Vitali Peil +vividsnow +vividsnow @vividsnow Vlad Harchev Vladimir Alexiev Vladimir Marek @@ -1334,7 +1359,9 @@ Zachary Miller Zachary Storer Zak B. Elep +Zakariyya Mughal Zbynek Vyskovsky Zefram Zsbán Ambrus Ævar Arnfjörð Bjarmason +Михаил Козачков diff -Nru perl-5.32.1/autodoc.pl perl-5.34.0/autodoc.pl --- perl-5.32.1/autodoc.pl 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/autodoc.pl 2021-05-04 06:52:48.000000000 +0000 @@ -1,5 +1,7 @@ #!/usr/bin/perl -w -# + +use Text::Tabs; +# # Unconditionally regenerate: # # pod/perlintern.pod @@ -8,24 +10,65 @@ # from information stored in # # embed.fnc -# plus all the .c and .h files listed in MANIFEST +# plus all the core .c, .h, and .pod files listed in MANIFEST # # Has an optional arg, which is the directory to chdir to before reading -# MANIFEST and *.[ch]. +# MANIFEST and the files # # This script is invoked as part of 'make all' # -# '=head1' are the only headings looked for. If the first non-blank line after -# the heading begins with a word character, it is considered to be the first -# line of documentation that applies to the heading itself. That is, it is -# output immediately after the heading, before the first function, and not -# indented. The next input line that is a pod directive terminates this -# heading-level documentation. - -# The meanings of the flags fields in embed.fnc and the source code is -# documented at the top of embed.fnc. +# The generated pod consists of sections of related elements, functions, +# macros, and variables. The keys of %valid_sections give the current legal +# ones. Just add a new key to add a section. +# +# Throughout the files read by this script are lines like +# +# =for apidoc_section Section Name +# =for apidoc_section $section_name_variable +# +# "Section Name" (after having been stripped of leading space) must be one of +# the legal section names, or an error is thrown. $section_name_variable must +# be one of the legal section name variables defined below; these expand to +# legal section names. This form is used so that minor wording changes in +# these titles can be confied to this file. All the names of the variables +# end in '_scn'; this suffix is optional in the apidoc_section lines. +# +# All API elements defined between this line and the next 'apidoc_section' +# line will go into the section "Section Name" (or $section_name_variable), +# sorted by dictionary order within it. perlintern and perlapi are parallel +# documents, each potentially with a section "Section Name". Each element is +# marked as to which document it goes into. If there are none for a +# particular section in perlapi, that section is omitted. +# +# Also, in .[ch] files, there may be +# +# =head1 Section Name +# +# lines in comments. These are also used by this program to switch to section +# "Section Name". The difference is that if there are any lines after the +# =head1, inside the same comment, and before any =for apidoc-ish lines, they +# are used as a heading for section "Section Name" (in both perlintern and +# perlapi). This includes any =head[2-5]. If more than one '=head1 Section +# Name' line has content, they appear in the generated pod in an undefined +# order. Note that you can't use a $section_name_variable in =head1 lines +# +# The next =head1, =for apidoc_section, or file end terminates what goes into +# the current section +# +# The %valid_sections hash below also can have header content, which will +# appear before any =head1 content. The hash can also have footer content +# content, which will appear at the end of the section, after all the +# elements. +# +# The lines that define the actual functions, etc are documented in embed.fnc, +# because they have flags which must be kept in sync with that file. use strict; +use warnings; + +# 80 column terminal - 2 for pager adding 2 columns; -4 for indent for +# non-heading lines; +my $max_width = 80 - 2 - 4; if (@ARGV) { my $workdir = shift; @@ -35,28 +78,7 @@ require './regen/regen_lib.pl'; require './regen/embed_lib.pl'; -my @specialized_docs = sort qw( perlguts - perlxs - perlxstut - perlclib - warnings - perlapio - perlcall - perlfilter - perlmroapi - config.h - ); -sub name_in_pod($) { - my $name = shift; - return "F<$name>" if $name =~ /\./; - return "L<$name>"; -} -my $other_places_api = join " ", map { name_in_pod($_) } sort @specialized_docs, 'perlintern'; -my $other_places_intern = join " ", map { name_in_pod($_) } sort @specialized_docs, 'perlapi'; - -@specialized_docs = map { name_in_pod($_) } sort @specialized_docs; -$specialized_docs[-1] =~ s/^/and /; -my $specialized_docs = join ", ", @specialized_docs; +my %described_elsewhere; # # See database of global and static function prototypes in embed.fnc @@ -69,252 +91,1505 @@ my %seen; my %funcflags; my %missing; +my %missing_macros; + +my $link_text = "Described in"; + +my $description_indent = 4; +my $usage_indent = 3; # + initial blank yields 4 total + +my $AV_scn = 'AV Handling'; +my $callback_scn = 'Callback Functions'; +my $casting_scn = 'Casting'; +my $casing_scn = 'Character case changing'; +my $classification_scn = 'Character classification'; +my $names_scn = 'Character names'; +my $scope_scn = 'Compile-time scope hooks'; +my $compiler_scn = 'Compiler and Preprocessor information'; +my $directives_scn = 'Compiler directives'; +my $concurrency_scn = 'Concurrency'; +my $COP_scn = 'COP Hint Hashes'; +my $CV_scn = 'CV Handling'; +my $custom_scn = 'Custom Operators'; +my $debugging_scn = 'Debugging'; +my $display_scn = 'Display functions'; +my $embedding_scn = 'Embedding and Interpreter Cloning'; +my $errno_scn = 'Errno'; +my $exceptions_scn = 'Exception Handling (simple) Macros'; +my $filesystem_scn = 'Filesystem configuration values'; +my $floating_scn = 'Floating point configuration values'; +my $formats_scn = 'Formats'; +my $genconfig_scn = 'General Configuration'; +my $globals_scn = 'Global Variables'; +my $GV_scn = 'GV Handling'; +my $hook_scn = 'Hook manipulation'; +my $HV_scn = 'HV Handling'; +my $io_scn = 'Input/Output'; +my $integer_scn = 'Integer configuration values'; +my $lexer_scn = 'Lexer interface'; +my $locale_scn = 'Locales'; +my $magic_scn = 'Magic'; +my $memory_scn = 'Memory Management'; +my $MRO_scn = 'MRO'; +my $multicall_scn = 'Multicall Functions'; +my $numeric_scn = 'Numeric Functions'; +my $optree_construction_scn = 'Optree construction'; +my $optree_manipulation_scn = 'Optree Manipulation Functions'; +my $pack_scn = 'Pack and Unpack'; +my $pad_scn = 'Pad Data Structures'; +my $password_scn = 'Password and Group access'; +my $paths_scn = 'Paths to system commands'; +my $prototypes_scn = 'Prototype information'; +my $regexp_scn = 'REGEXP Functions'; +my $signals_scn = 'Signals'; +my $site_scn = 'Site configuration'; +my $sockets_scn = 'Sockets configuration values'; +my $filters_scn = 'Source Filters'; +my $stack_scn = 'Stack Manipulation Macros'; +my $string_scn = 'String Handling'; +my $SV_flags_scn = 'SV Flags'; +my $SV_scn = 'SV Handling'; +my $time_scn = 'Time'; +my $typedefs_scn = 'Typedef names'; +my $unicode_scn = 'Unicode Support'; +my $utility_scn = 'Utility Functions'; +my $versioning_scn = 'Versioning'; +my $warning_scn = 'Warning and Dieing'; +my $XS_scn = 'XS'; + +# Kept separate at end +my $undocumented_scn = 'Undocumented elements'; + +my %valid_sections = ( + $AV_scn => {}, + $callback_scn => {}, + $casting_scn => {}, + $casing_scn => {}, + $classification_scn => {}, + $scope_scn => {}, + $compiler_scn => {}, + $directives_scn => {}, + $concurrency_scn => {}, + $COP_scn => {}, + $CV_scn => { + header => <<~'EOT', + This section documents functions to manipulate CVs which are + code-values, meaning subroutines. For more information, see + L. + EOT + }, + + $custom_scn => {}, + $debugging_scn => {}, + $display_scn => {}, + $embedding_scn => {}, + $errno_scn => {}, + $exceptions_scn => {}, + $filesystem_scn => { + header => <<~'EOT', + Also see L. + EOT + }, + $floating_scn => { + header => <<~'EOT', + Also L lists capabilities + that arent in this section. For example C, for the + hyperbolic sine function. + EOT + }, + $formats_scn => { + header => <<~'EOT', + These are used for formatting the corresponding type For example, + instead of saying + + Perl_newSVpvf(pTHX_ "Create an SV with a %d in it\n", iv); + + use + + Perl_newSVpvf(pTHX_ "Create an SV with a " IVdf " in it\n", iv); + + This keeps you from having to know if, say an IV, needs to be + printed as C<%d>, C<%ld>, or something else. + EOT + }, + $genconfig_scn => { + header => <<~'EOT', + This section contains configuration information not otherwise + found in the more specialized sections of this document. At the + end is a list of C<#defines> whose name should be enough to tell + you what they do, and a list of #defines which tell you if you + need to C<#include> files to get the corresponding functionality. + EOT + + footer => <<~'EOT', + + =head2 List of capability C> symbols + + This is a list of those symbols that dont appear elsewhere in ths + document that indicate if the current platform has a certain + capability. Their names all begin with C. Only those + symbols whose capability is directly derived from the name are + listed here. All others have their meaning expanded out elsewhere + in this document. This (relatively) compact list is because we + think that the expansion would add little or no value and take up + a lot of space (because there are so many). If you think certain + ones should be expanded, send email to + L. + + Each symbol here will be C<#define>d if and only if the platform + has the capability. If you need more detail, see the + corresponding entry in F. For convenience, the list is + split so that the ones that indicate there is a reentrant version + of a capability are listed separately + + __HAS_LIST__ + + And, the reentrant capabilities: + + __HAS_R_LIST__ + + Example usage: + + =over + + #ifdef HAS_STRNLEN + use strnlen() + #else + use an alternative implementation + #endif + + =back + + =head2 List of C<#include> needed symbols + + This list contains symbols that indicate if certain C<#include> + files are present on the platform. If your code accesses the + functionality that one of these is for, you will need to + C<#include> it if the symbol on this list is C<#define>d. For + more detail, see the corresponding entry in F. + + __INCLUDE_LIST__ + + Example usage: + + =over + + #ifdef I_WCHAR + #include + #endif + + =back + EOT + }, + $globals_scn => {}, + $GV_scn => {}, + $hook_scn => {}, + $HV_scn => {}, + $io_scn => {}, + $integer_scn => {}, + $lexer_scn => {}, + $locale_scn => {}, + $magic_scn => {}, + $memory_scn => {}, + $MRO_scn => {}, + $multicall_scn => {}, + $numeric_scn => {}, + $optree_construction_scn => {}, + $optree_manipulation_scn => {}, + $pack_scn => {}, + $pad_scn => {}, + $password_scn => {}, + $paths_scn => {}, + $prototypes_scn => {}, + $regexp_scn => {}, + $signals_scn => {}, + $site_scn => { + header => <<~'EOT', + These variables give details as to where various libraries, + installation destinations, I, go, as well as what various + installation options were selected + EOT + }, + $sockets_scn => {}, + $filters_scn => {}, + $stack_scn => {}, + $string_scn => { + header => <<~EOT, + See also C>. + EOT + }, + $SV_flags_scn => {}, + $SV_scn => {}, + $time_scn => {}, + $typedefs_scn => {}, + $unicode_scn => { + header => <<~EOT, + L has an introduction to this API. + + See also C>, + C>, + and C>. + Various functions outside this section also work specially with + Unicode. Search for the string "utf8" in this document. + EOT + }, + $utility_scn => {}, + $versioning_scn => {}, + $warning_scn => {}, + $XS_scn => {}, +); + +# Somewhat loose match for an apidoc line so we can catch minor typos. +# Parentheses are used to capture portions so that below we verify +# that things are the actual correct syntax. +my $apidoc_re = qr/ ^ (\s*) # $1 + (=?) # $2 + (\s*) # $3 + for (\s*) # $4 + apidoc (_item)? # $5 + (\s*) # $6 + (.*?) # $7 + \s* \n /x; +# Only certain flags, dealing with display, are acceptable for apidoc_item +my $display_flags = "fFnDopsT"; + +sub check_api_doc_line ($$) { + my ($file, $in) = @_; + + return unless $in =~ $apidoc_re; + + my $is_item = defined $5; + my $is_in_proper_form = length $1 == 0 + && length $2 > 0 + && length $3 == 0 + && length $4 > 0 + && length $6 > 0 + && length $7 > 0; + my $proto_in_file = $7; + my $proto = $proto_in_file; + $proto = "||$proto" if $proto !~ /\|/; + my ($flags, $ret_type, $name, @args) = split /\s*\|\s*/, $proto; + + $name && $is_in_proper_form or die <{'flags'}; + warn "embed.fnc entry '$element_name' missing 'd' flag" + unless $flags =~ /d/; + + return ($flags, $embed_docref->{'ret_type'}, $embed_docref->{args}->@*); +} + +# The section that is in effect at the beginning of the given file. If not +# listed here, an apidoc_section line must precede any apidoc lines. +# This allows the files listed here that generally are single-purpose, to not +# have to worry about the autodoc section +my %initial_file_section = ( + 'av.c' => $AV_scn, + 'av.h' => $AV_scn, + 'cv.h' => $CV_scn, + 'doio.c' => $io_scn, + 'gv.c' => $GV_scn, + 'gv.h' => $GV_scn, + 'hv.h' => $HV_scn, + 'locale.c' => $locale_scn, + 'malloc.c' => $memory_scn, + 'numeric.c' => $numeric_scn, + 'opnames.h' => $optree_construction_scn, + 'pad.h'=> $pad_scn, + 'patchlevel.h' => $versioning_scn, + 'perlio.h' => $io_scn, + 'pod/perlapio.pod' => $io_scn, + 'pod/perlcall.pod' => $callback_scn, + 'pod/perlembed.pod' => $embedding_scn, + 'pod/perlfilter.pod' => $filters_scn, + 'pod/perliol.pod' => $io_scn, + 'pod/perlmroapi.pod' => $MRO_scn, + 'pod/perlreguts.pod' => $regexp_scn, + 'pp_pack.c' => $pack_scn, + 'pp_sort.c' => $SV_scn, + 'regcomp.c' => $regexp_scn, + 'regexp.h' => $regexp_scn, + 'unicode_constants.h' => $unicode_scn, + 'utf8.c' => $unicode_scn, + 'utf8.h' => $unicode_scn, + 'vutil.c' => $versioning_scn, + ); sub autodoc ($$) { # parse a file and extract documentation info my($fh,$file) = @_; - my($in, $doc, $line, $header_doc); + my($in, $line_num, $header, $section); + + $section = $initial_file_section{$file} + if defined $initial_file_section{$file}; + + my $file_is_C = $file =~ / \. [ch] $ /x; # Count lines easier - my $get_next_line = sub { $line++; return <$fh> }; + my $get_next_line = sub { $line_num++; return <$fh> }; -FUNC: - while (defined($in = $get_next_line->())) { - if ($in=~ /^=head1 (.*)/) { - $curheader = $1; - - # If the next non-space line begins with a word char, then it is - # the start of heading-level documentation. - if (defined($doc = $get_next_line->())) { - # Skip over empty lines - while ($doc =~ /^\s+$/) { - if (! defined($doc = $get_next_line->())) { - next FUNC; - } + # Read the file + while ($in = $get_next_line->()) { + last unless defined $in; + + next unless ( $in =~ / ^ =for [ ]+ apidoc /x + # =head1 lines only have effect in C files + || ($file_is_C && $in =~ /^=head1/)); + + # Here, the line introduces a portion of the input that we care about. + # Either it is for an API element, or heading text which we expect + # will be used for elements later in the file + + my ($text, $element_name, $flags, $ret_type, $is_item, $proto_in_file); + my (@args, @items); + + # If the line starts a new section ... + if ($in=~ /^ = (?: for [ ]+ apidoc_section | head1 ) [ ]+ (.*) /x) { + + $section = $1; + if ($section =~ / ^ \$ /x) { + $section .= '_scn' unless $section =~ / _scn $ /; + $section = eval "$section"; + die "Unknown \$section variable '$section' in $file: $@" if $@; + } + die "Unknown section name '$section' in $file near line $.\n" + unless defined $valid_sections{$section}; + + } + elsif ($in=~ /^ =for [ ]+ apidoc \B /x) { # Otherwise better be a + # plain apidoc line + die "Unkown apidoc-type line '$in'" unless $in=~ /^=for apidoc_item/; + die "apidoc_item doesn't immediately follow an apidoc entry: '$in'"; + } + else { # Plain apidoc + + ($element_name, $flags, $ret_type, $is_item, $proto_in_file, @args) + = check_api_doc_line($file, $in); + # Override this line with any info in embed.fnc + my ($embed_flags, $embed_ret_type, @embed_args) + = embed_override($element_name); + if ($embed_ret_type) { + warn "embed.fnc entry overrides redundant information in" + . " '$proto_in_file' in $file" + if $flags || $ret_type || @args; + $flags = $embed_flags; + $ret_type = $embed_ret_type; + @args = @embed_args; + } + elsif ($flags !~ /[my]/) { # Not in embed.fnc, is missing if not + # a macro or typedef + $missing{$element_name} = $file; + } + + die "flag '$1' is not legal (for function $element_name (from $file))" + if $flags =~ / ( [^AabCDdEeFfGhiMmNnTOoPpRrSsUuWXxy] ) /x; + + die "'u' flag must also have 'm' or 'y' flags' for $element_name" + if $flags =~ /u/ && $flags !~ /[my]/; + warn ("'$element_name' not \\w+ in '$proto_in_file' in $file") + if $flags !~ /N/ && $element_name !~ / ^ [_[:alpha:]] \w* $ /x; + + if (exists $seen{$element_name} && $flags !~ /h/) { + die ("'$element_name' in $file was already documented in $seen{$element_name}"); + } + else { + $seen{$element_name} = $file; + } + } + + # Here we have processed the initial line in the heading text or API + # element, and have saved the important information from it into the + # corresponding variables. Now accumulate the text that applies to it + # up to a terminating line, which is one of: + # 1) =cut + # 2) =head (in a C file only =head1) + # 3) an end comment line in a C file: m:^\s*\*/: + # 4) =for apidoc... (except apidoc_item lines) + $text = ""; + my $head_ender_num = ($file_is_C) ? 1 : ""; + while (defined($in = $get_next_line->())) { + + last if $in =~ /^=cut/x; + last if $in =~ /^=head$head_ender_num/; + + if ($file_is_C && $in =~ m: ^ \s* \* / $ :x) { + + # End of comment line in C files is a fall-back terminator, + # but warn only if there actually is some accumulated text + warn "=cut missing? $file:$line_num:$in" if $text =~ /\S/; + last; + } + + if ($in !~ / ^ =for [ ]+ apidoc /x) { + $text .= $in; + next; + } + + # Here, the line is an apidoc line. All but apidoc_item terminate + # the text being accumulated. + last if $in =~ / ^ =for [ ]+ apidoc_section /x; + + my ($item_name, $item_flags, $item_ret_type, $is_item, + $item_proto, @item_args) = check_api_doc_line($file, $in); + last unless $is_item; + + # Here, is an apidoc_item_line; They can only come within apidoc + # paragraphs. + die "Unexpected api_doc_item line '$item_proto'" + unless $element_name; + + # We accept blank lines between these, but nothing else; + die "apidoc_item lines must immediately follow apidoc lines for " + . " '$element_name' in $file" + if $text =~ /\S/; + # Override this line with any info in embed.fnc + my ($embed_flags, $embed_ret_type, @embed_args) + = embed_override($item_name); + if ($embed_ret_type) { + warn "embed.fnc entry overrides redundant information in" + . " '$item_proto' in $file" + if $item_flags || $item_ret_type || @item_args; + + $item_flags = $embed_flags; + $item_ret_type = $embed_ret_type; + @item_args = @embed_args; + } + + # Use the base entry flags if none for this item; otherwise add in + # any non-display base entry flags. + if ($item_flags) { + $item_flags .= $flags =~ s/[$display_flags]//rg; + } + else { + $item_flags = $flags; + } + $item_ret_type = $ret_type unless $item_ret_type; + @item_args = @args unless @item_args; + push @items, { name => $item_name, + ret_type => $item_ret_type, + flags => $item_flags, + args => [ @item_args ], + }; + + # This line shows that this element is documented. + delete $funcflags{$item_name}; + } + + # Here, are done accumulating the text for this item. Trim it + $text =~ s/ ^ \s* //x; + $text =~ s/ \s* $ //x; + $text .= "\n" if $text ne ""; + + # And treat all-spaces as nothing at all + undef $text unless $text =~ /\S/; + + if ($element_name) { + + # Here, we have accumulated into $text, the pod for $element_name + my $where = $flags =~ /A/ ? 'api' : 'guts'; + + $section = "Functions in file $file" unless defined $section; + die "No =for apidoc_section nor =head1 in $file for '$element_name'\n" + unless defined $section; + if (exists $docs{$where}{$section}{$element_name}) { + warn "$0: duplicate API entry for '$element_name' in" + . " $where/$section\n"; + next; + } + + # Override the text with just a link if the flags call for that + my $is_link_only = ($flags =~ /h/); + if ($is_link_only) { + if ($file_is_C) { + die "Can't currently handle link with items to it:\n$in" if @items; + redo; # Don't put anything if C source } - if ($doc !~ /^\w/) { - $in = $doc; - redo FUNC; - } - $header_doc = $doc; - - # Continue getting the heading-level documentation until read - # in any pod directive (or as a fail-safe, find a closing - # comment to this pod in a C language file -HDR_DOC: - while (defined($doc = $get_next_line->())) { - if ($doc =~ /^=\w/) { - $in = $doc; - redo FUNC; + # Here, is an 'h' flag in pod. We add a reference to the pod (and + # nothing else) to perlapi/intern. (It would be better to add a + # reference to the correct =item,=header, but something that makes + # it harder is that it that might be a duplicate, like '=item *'; + # so that is a future enhancement XXX. Another complication is + # there might be more than one deserving candidates.) + my $podname = $file =~ s!.*/!!r; # Rmv directory name(s) + $podname =~ s/\.pod//; + $text = "Described in L<$podname>.\n"; + + # Don't output a usage example for linked to documentation if + # it is trivial (has no arguments) and we aren't to add a + # semicolon + $flags .= 'U' if $flags =~ /n/ && $flags !~ /[Us]/; + + # Keep track of all the pod files that we refer to. + push $described_elsewhere{$podname}->@*, $podname; + } + + $docs{$where}{$section}{$element_name}{flags} = $flags; + $docs{$where}{$section}{$element_name}{pod} = $text; + $docs{$where}{$section}{$element_name}{file} = $file; + $docs{$where}{$section}{$element_name}{ret_type} = $ret_type; + push $docs{$where}{$section}{$element_name}{args}->@*, @args; + push $docs{$where}{$section}{$element_name}{items}->@*, @items; + } + elsif ($text) { + $valid_sections{$section}{header} = "" unless + defined $valid_sections{$section}{header}; + $valid_sections{$section}{header} .= "\n$text"; + } + + # We already have the first line of what's to come in $in + redo; + + } # End of loop through input +} + +my %configs; +my @has_defs; +my @has_r_defs; # Reentrant symbols +my @include_defs; + +sub parse_config_h { + use re '/aa'; # Everthing is ASCII in this file + + # Process config.h + my $config_h = 'config.h'; + $config_h = 'win32/config.h' unless -e $config_h; + die "Can't find $config_h" unless -e $config_h; + open my $fh, '<', $config_h or die "Can't open $config_h: $!"; + while (<$fh>) { + + # Look for lines like /* FOO_BAR: + # By convention all config.h descriptions begin like that + if (m[ ^ /\* [ ] ( [[:alpha:]] \w+ ) : \s* $ ]ax) { + my $name = $1; + + # Here we are starting the description for $name in config.h. We + # accumulate the entire description for it into @description. + # Flowing text from one input line to another is appended into the + # same array element to make a single flowing line element, but + # verbatim lines are kept as separate elements in @description. + # This will facilitate later doing pattern matching without regard + # to line boundaries on non-verbatim text. + + die "Multiple config.h entries for '$name'" + if defined $configs{$name}{description}; + + # Get first line of description + $_ = <$fh>; + + # Each line in the description begins with blanks followed by '/*' + # and some spaces. + die "Unexpected config.h initial line for $name: '$_'" + unless s/ ^ ( \s* \* \s* ) //x; + my $initial_text = $1; + + # Initialize the description with this first line (after having + # stripped the prefix text) + my @description = $_; + + # The first line is used as a template for how much indentation + # each normal succeeding line has. Lines indented further + # will be considered as intended to be verbatim. But, empty lines + # likely won't have trailing blanks, so just strip the whole thing + # for them. + my $strip_initial_qr = qr! \s* \* \s* $ + | \Q$initial_text\E + !x; + $configs{$name}{verbatim} = 0; + + # Read in the remainder of the description + while (<$fh>) { + last if s| ^ \s* \* / ||x; # A '*/' ends it + + die "Unexpected config.h description line for $name: '$_'" + unless s/$strip_initial_qr//; + + # Fix up the few flawed lines in config.h wherein a new + # sentence begins with a tab (and maybe a space after that). + # Although none of them currently do, let it recognize + # something like + # + # "... text"). The next sentence ... + # + s/ ( \w "? \)? \. ) \t \s* ( [[:alpha:]] ) /$1 $2/xg; + + # If this line has extra indentation or looks to have columns, + # it should be treated as verbatim. Columns are indicated by + # use of interior: tabs, 3 spaces in a row, or even 2 spaces + # not preceded by punctuation. + if ($_ !~ m/ ^ \s + | \S (?: \t + | \s{3} + | (*nlb:[[:punct:]]) \s{2} + ) + /x) + { + # But here, is not a verbatim line. Add an empty line if + # this is the first non-verbatim after a run of verbatims + if ($description[-1] =~ /^\s/) { + push @description, "\n", $_; } + else { # Otherwise, append this flowing line to the + # current flowing line + $description[-1] .= $_; + } + } + else { + $configs{$name}{verbatim} = 1; - if ($doc =~ m:^\s*\*/$:) { - warn "=cut missing? $file:$line:$doc";; - last HDR_DOC; + # The first verbatim line in a run of them is separated by an + # empty line from the flowing lines above it + push @description, "\n" if $description[-1] =~ /^\S/; + + $_ = Text::Tabs::expand($_); + + # Only a single space so less likely to wrap + s/ ^ \s* / /x; + + push @description, $_; + } + } + + push $configs{$name}{description}->@*, @description + + } # Not a description; see if it is a macro definition. + elsif (m! ^ + (?: / \* )? # Optional commented-out + # indication + \# \s* define \s+ ( \w+ ) # $1 is the name + ( \s* ) # $2 indicates if args or not + ( .*? ) # $3 is any definition + (?: / \s* \* \* / )? # Optional trailing /**/ or / **/ + $ + !x) + { + my $name = $1; + + # There can be multiple definitions for a name. We want to know + # if any of them has arguments, and if any has a body. + $configs{$name}{has_args} //= $2 eq ""; + $configs{$name}{has_args} ||= $2 eq ""; + $configs{$name}{has_defn} //= $3 ne ""; + $configs{$name}{has_defn} ||= $3 ne ""; + } + } + + # We now have stored the description and information about every #define + # in the file. The description is in a form convenient to operate on to + # convert to pod. Do that now. + foreach my $name (keys %configs) { + next unless defined $configs{$name}{description}; + + # All adjacent non-verbatim lines of the description are appended + # together in a single element in the array. This allows the patterns + # to work across input line boundaries. + + my $pod = ""; + while (defined ($_ = shift $configs{$name}{description}->@*)) { + chomp; + + if (/ ^ \S /x) { # Don't edit verbatim lines + + # Enclose known file/path names not already so enclosed + # with <...>. (Some entries in config.h are already + # '') + my $file_name_qr = qr! [ \w / ]+ \. + (?: c | h | xs | p [lm] | pmc | PL + | sh | SH | exe ) \b + !xx; + my $path_name_qr = qr! (?: / \w+ )+ !x; + for my $re ($file_name_qr, $path_name_qr) { + s! (*nlb:[ < \w / ]) ( $re ) !<$1>!gxx; + } + + # Enclose <... file/path names with F<...> (but no double + # angle brackets) + for my $re ($file_name_qr, $path_name_qr) { + s! < ( $re ) > !F<$1>!gxx; + } + + # Explain metaconfig units + s/ ( \w+ \. U \b ) /$1 (part of metaconfig)/gx; + + # Convert "See foo" to "See C>" if foo is described in + # this file. Also create a link to the known file INSTALL. + # And, to be more general, handle "See also foo and bar", and + # "See also foo, bar, and baz" + while (m/ \b [Ss]ee \s+ + (?: also \s+ )? ( \w+ ) + (?: , \s+ ( \w+ ) )? + (?: ,? \s+ and \s+ ( \w+ ) )? /xg) { + my @links = $1; + push @links, $2 if defined $2; + push @links, $3 if defined $3; + foreach my $link (@links) { + if ($link eq 'INSTALL') { + s/ \b INSTALL \b /C>/xg; + } + elsif (grep { $link =~ / \b $_ \b /x } keys %configs) { + s| \b $link \b |C>|xg; + $configs{$link}{linked} = 1; + $configs{$name}{linked} = 1; + } } - $header_doc .= $doc; + } + + # Enclose what we think are symbols with C<...>. + no warnings 'experimental::vlb'; + s/ (*nlb:<) + ( + # Any word followed immediately with parens or + # brackets + \b \w+ (?: \( [^)]* \) # parameter list + | \[ [^]]* \] # or array reference + ) + | (*plb: ^ | \s ) -D \w+ # Also -Dsymbols. + | \b (?: struct | union ) \s \w+ + + # Words that contain underscores (which are + # definitely not text) or three uppercase letters in + # a row. Length two ones, like IV, aren't enclosed, + # because they often don't look as nice. + | \b \w* (?: _ | [[:upper:]]{3,} ) \w* \b + ) + (*nla:>) + /C<$1>/xg; + + # These include foo when the name is HAS_foo. This is a + # heuristic which works in most cases. + if ($name =~ / ^ HAS_ (.*) /x) { + my $symbol = lc $1; + + # Don't include path components, nor things already in + # <>, or with trailing '(', '[' + s! \b (*nlb:[/<]) $symbol (*nla:[[/>(]) \b !C<$symbol>!xg; } } - next FUNC; + + $pod .= "$_\n"; } + delete $configs{$name}{description}; - # Parentheses are used to accept anything that looks like 'for - # apidoc', and later verify that things are the actual correct syntax. - my $apidoc_re = qr/^(\s*)(=?)(\s*)for(\s*)apidoc(\s*)(.*?)\s*\n/; + $configs{$name}{pod} = $pod; + } - if ($in =~ /^=for comment/) { - $in = $get_next_line->(); - if ($in =~ /skip apidoc/) { # Skips the next apidoc-like line - while (defined($in = $get_next_line->())) { - last if $in =~ $apidoc_re; + # Now have converted the description to pod. We also now have enough + # information that we can do cross checking to find definitions without + # corresponding pod, and see if they are mentioned in some description; + # otherwise they aren't documented. + NAME: + foreach my $name (keys %configs) { + + # A definition without pod + if (! defined $configs{$name}{pod}) { + + # Leading/trailing underscore means internal to config.h, e.g., + # _GNU_SOURCE + next if $name =~ / ^ _ /x; + next if $name =~ / _ $ /x; + + # MiXeD case names are internal to config.h; the first 4 + # characters are sufficient to determine this + next if $name =~ / ^ [[:upper:]] [[:lower:]] + [[:upper:]] [[:lower:]] + /x; + + # Here, not internal to config.h. Look to see if this symbol is + # mentioned in the pod of some other. If so, assume it is + # documented. + foreach my $check_name (keys %configs) { + my $this_element = $configs{$check_name}; + my $this_pod = $this_element->{pod}; + if (defined $this_pod) { + next NAME if $this_pod =~ / \b $name \b /x; } } - next FUNC; + + warn "$name has no documentation\n"; + $missing_macros{$name} = 'config.h'; + + next; } - if ($in =~ $apidoc_re) { - my $is_in_proper_form = length $1 == 0 - && length $2 > 0 - && length $3 == 0 - && length $4 > 0 - && length $5 > 0 - && length $6 > 0; - my $proto_in_file = $6; - my $proto = $proto_in_file; - $proto = "||$proto" unless $proto =~ /\|/; - my($flags, $ret, $name, @args) = split /\s*\|\s*/, $proto; - $name && $is_in_proper_form or die <%*) { + if (exists $docs{'api'}{$section}{$name}) { + my $was = $docs{'api'}{$section}{$name}->{pod}; + $was = "" unless $was; + chomp $was; + if ($was ne "" && $was !~ m/$link_text/) { + die "Multiple descriptions for $name\n" + . "$section contained '$was'"; + } + $docs{'api'}{$section}{$name}->{pod} = $configs{$name}{pod}; + $configs{$name}{section} = $section; + last; } - else { - $seen{$name} = $file; + } + + my $handled = 0; # Haven't handled this yet + + if (defined $configs{$name}{'section'}) { + # This has been taken care of elsewhere. + $handled = 1; + } + else { + my $flags = ""; + if ($has_defn && ! $has_args) { + $configs{$name}{args} = 1; } - my $docs = ""; -DOC: - while (defined($doc = $get_next_line->())) { + # Symbols of the form I_FOO are for #include files. They have + # special usage information + if ($name =~ / ^ I_ ( .* ) /x) { + my $file = lc $1 . '.h'; + $configs{$name}{usage} = <<~"EOT"; + #ifdef $name + #include <$file> + #endif + EOT + } - # Other pod commands are considered part of the current - # function's docs, so can have lists, etc. - last DOC if $doc =~ /^=(cut|for\s+apidoc|head)/; - if ($doc =~ m:^\*/$:) { - warn "=cut missing? $file:$line:$doc";; - last DOC; - } - $docs .= $doc; + # Compute what section this variable should go into. This + # heuristic was determined by manually inspecting the current + # things in config.h, and should be adjusted as necessary as + # deficiencies are found. + # + # This is the default section for macros with a definiton but + # no arguments, meaning it is replaced unconditionally + # + my $sb = qr/ _ | \b /x; # segment boundary + my $dash_or_spaces = qr/ - | \s+ /x; + my $pod = $configs{$name}{pod}; + if ($name =~ / ^ USE_ /x) { + $configs{$name}{'section'} = $site_scn; + } + elsif ($name =~ / SLEEP | (*nlb:SYS_) TIME | TZ | $sb TM $sb /x) + { + $configs{$name}{'section'} = $time_scn; + } + elsif ( $name =~ / ^ [[:alpha:]]+ f $ /x + && $configs{$name}{pod} =~ m/ \b format \b /ix) + { + $configs{$name}{'section'} = $formats_scn; + } + elsif ($name =~ / DOUBLE | FLOAT | LONGDBL | LDBL | ^ NV + | $sb CASTFLAGS $sb + | QUADMATH + | $sb (?: IS )? NAN + | $sb (?: IS )? FINITE + /x) + { + $configs{$name}{'section'} = + $floating_scn; + } + elsif ($name =~ / (?: POS | OFF | DIR ) 64 /x) { + $configs{$name}{'section'} = $filesystem_scn; + } + elsif ( $name =~ / $sb (?: BUILTIN | CPP ) $sb | ^ CPP /x + || $configs{$name}{pod} =~ m/ \b align /x) + { + $configs{$name}{'section'} = $compiler_scn; } - $docs = "\n$docs" if $docs and $docs !~ /^\n/; + elsif ($name =~ / ^ [IU] [ \d V ] + | ^ INT | SHORT | LONG | QUAD | 64 | 32 /xx) + { + $configs{$name}{'section'} = $integer_scn; + } + elsif ($name =~ / $sb t $sb /x) { + $configs{$name}{'section'} = $typedefs_scn; + $flags .= 'y'; + } + elsif ( $name =~ / ^ PERL_ ( PRI | SCN ) | $sb FORMAT $sb /x + && $configs{$name}{pod} =~ m/ \b format \b /ix) + { + $configs{$name}{'section'} = $formats_scn; + } + elsif ($name =~ / BACKTRACE /x) { + $configs{$name}{'section'} = $debugging_scn; + } + elsif ($name =~ / ALLOC $sb /x) { + $configs{$name}{'section'} = $memory_scn; + } + elsif ( $name =~ / STDIO | FCNTL | EOF | FFLUSH + | $sb FILE $sb + | $sb DIR $sb + | $sb LSEEK + | $sb INO $sb + | $sb OPEN + | $sb CLOSE + | ^ DIR + | ^ INO $sb + | DIR $ + | FILENAMES + /x + || $configs{$name}{pod} =~ m! I/O | stdio + | file \s+ descriptor + | file \s* system + | statfs + !x) + { + $configs{$name}{'section'} = $filesystem_scn; + } + elsif ($name =~ / ^ SIG | SIGINFO | signal /ix) { + $configs{$name}{'section'} = $signals_scn; + } + elsif ($name =~ / $sb ( PROTO (?: TYPE)? S? ) $sb /x) { + $configs{$name}{'section'} = $prototypes_scn; + } + elsif ( $name =~ / ^ LOC_ /x + || $configs{$name}{pod} =~ /full path/i) + { + $configs{$name}{'section'} = $paths_scn; + } + elsif ($name =~ / $sb LC_ | LOCALE | langinfo /xi) { + $configs{$name}{'section'} = $locale_scn; + } + elsif ($configs{$name}{pod} =~ / GCC | C99 | C\+\+ /xi) { + $configs{$name}{'section'} = $compiler_scn; + } + elsif ($name =~ / PASSW (OR)? D | ^ PW | ( PW | GR ) ENT /x) + { + $configs{$name}{'section'} = $password_scn; + } + elsif ($name =~ / SOCKET | $sb SOCK /x) { + $configs{$name}{'section'} = $sockets_scn; + } + elsif ( $name =~ / THREAD | MULTIPLICITY /x + || $configs{$name}{pod} =~ m/ \b pthread /ix) + { + $configs{$name}{'section'} = $concurrency_scn; + } + elsif ($name =~ / PERL | ^ PRIV | SITE | ARCH | BIN + | VENDOR | ^ USE + /x) + { + $configs{$name}{'section'} = $site_scn; + } + elsif ( $pod =~ / \b floating $dash_or_spaces point \b /ix + || $pod =~ / \b (double | single) $dash_or_spaces precision \b /ix + || $pod =~ / \b doubles \b /ix + || $pod =~ / \b (?: a | the | long ) \s+ (?: double | NV ) \b /ix) + { + $configs{$name}{'section'} = + $floating_scn; + } + else { + # Above are the specific sections. The rest go into a + # grab-bag of general configuration values. However, we put + # two classes of them into lists of their names, without their + # descriptions, when we think that the description doesn't add + # any real value. One list contains the #include variables: + # the description is basically boiler plate for each of these. + # The other list contains the very many things that are of the + # form HAS_foo, and \bfoo\b is contained in its description, + # and there is no verbatim text in the pod or links to/from it + # (which would add value). That means that it is likely the + # intent of the variable can be gleaned from just its name, + # and unlikely the description adds signficant value, so just + # listing them suffices. Giving their descriptions would + # expand this pod significantly with little added value. + if ( ! $has_defn + && ! $configs{$name}{verbatim} + && ! $configs{$name}{linked}) + { + if ($name =~ / ^ I_ ( .* ) /x) { + push @include_defs, $name; + next; + } + elsif ($name =~ / ^ HAS_ ( .* ) /x) { + my $canonical_name = $1; + $canonical_name =~ s/_//g; + + my $canonical_pod = $configs{$name}{pod}; + $canonical_pod =~ s/_//g; + + if ($canonical_pod =~ / \b $canonical_name \b /xi) { + if ($name =~ / $sb R $sb /x) { + push @has_r_defs, $name; + } + else { + push @has_defs, $name; + } + next; + } + } + } - # If the entry is also in embed.fnc, it should be defined - # completely there, but not here - my $embed_docref = delete $funcflags{$name}; - if ($embed_docref and %$embed_docref) { - warn "embed.fnc entry overrides redundant information in" - . " '$proto_in_file' in $file" if $flags || $ret || @args; - $flags = $embed_docref->{'flags'}; - warn "embed.fnc entry '$name' missing 'd' flag" - unless $flags =~ /d/; - next FUNC if $flags =~ /h/; - $ret = $embed_docref->{'retval'}; - @args = @{$embed_docref->{args}}; - } elsif ($flags !~ /m/) { # Not in embed.fnc, is missing if not a - # macro - $missing{$name} = $file; + $configs{$name}{'section'} = $genconfig_scn; } - my $inline_where = $flags =~ /A/ ? 'api' : 'guts'; + my $section = $configs{$name}{'section'}; + die "Internal error: '$section' not in \%valid_sections" + unless grep { $_ eq $section } keys %valid_sections; + $flags .= 'AdmnT'; + $flags .= 'U' unless defined $configs{$name}{usage}; + + # All the information has been gathered; save it + $docs{'api'}{$section}{$name}{flags} = $flags; + $docs{'api'}{$section}{$name}{pod} = $configs{$name}{pod}; + $docs{'api'}{$section}{$name}{ret_type} = ""; + $docs{'api'}{$section}{$name}{file} = 'config.h'; + $docs{'api'}{$section}{$name}{usage} + = $configs{$name}{usage} if defined $configs{$name}{usage}; + push $docs{'api'}{$section}{$name}{args}->@*, (); + push $docs{'api'}{$section}{$name}{items}->@*, (); + } + } +} - if (exists $docs{$inline_where}{$curheader}{$name}) { - warn "$0: duplicate API entry for '$name' in $inline_where/$curheader\n"; - next; +sub format_pod_indexes($) { + my $entries_ref = shift; + + # Output the X<> references to the names, packed since they don't get + # displayed, but not too many per line so that when someone is editing the + # file, it doesn't run on + + my $text =""; + my $line_length = 0; + for my $name (sort dictionary_order $entries_ref->@*) { + my $entry = "X<$name>"; + my $entry_length = length $entry; + + # Don't loop forever if we have a verrry long name, and don't go too + # far to the right. + if ($line_length > 0 && $line_length + $entry_length > $max_width) { + $text .= "\n"; + $line_length = 0; + } + + $text .= $entry; + $line_length += $entry_length; + } + + return $text; +} + +sub docout ($$$) { # output the docs for one function + my($fh, $element_name, $docref) = @_; + + # Trim trailing space + $element_name =~ s/\s*$//; + + my $flags = $docref->{flags}; + my $pod = $docref->{pod} // ""; + my $file = $docref->{file}; + + my @items = $docref->{items}->@*; + + # Make the main element the first of the items. This allows uniform + # treatment below + unshift @items, { name => $element_name, + flags => $flags, + ret_type => $docref->{ret_type}, + args => [ $docref->{args}->@* ], + }; + + warn("Empty pod for $element_name (from $file)") unless $pod =~ /\S/; + + print $fh "\n=over $description_indent\n"; + print $fh "\n=item C<$_->{name}>\n" for @items; + + # If we're printing only a link to an element, this isn't the major entry, + # so no X<> here. + if ($flags !~ /h/) { + print $fh "X<$_->{name}>" for @items; + print $fh "\n"; + } + + for my $item (@items) { + if ($item->{flags} =~ /D/) { + print $fh <<~"EOT"; + + C> It is planned to remove C<$item->{name}> from a + future release of Perl. Do not use it for new code; remove it from + existing code. + EOT + } + elsif ($item->{flags} =~ /x/) { + print $fh <<~"EOT"; + + NOTE: C<$item->{name}> is B and may change or be + removed without notice. + EOT + } + } + + chomp $pod; # Make sure prints pod with a single trailing \n + print $fh "\n", $pod, "\n"; + + for my $item (@items) { + my $item_flags = $item->{flags}; + my $item_name = $item->{name}; + + print $fh "\nNOTE: the C form is B.\n" + if $item_flags =~ /O/; + # Is Perl_, but no #define foo # Perl_foo + if (($item_flags =~ /p/ && $item_flags =~ /o/ && $item_flags !~ /M/) + + # Can't handle threaded varargs + || ($item_flags =~ /f/ && $item_flags !~ /T/)) + { + $item->{name} = "Perl_$item_name"; + print $fh <<~"EOT"; + + NOTE: C<$item_name> must be explicitly called as + C<$item->{name}> + EOT + print $fh "with an C parameter" if $item_flags !~ /T/; + print $fh ".\n"; + } + } + + if ($flags =~ /[Uy]/) { # no usage; typedefs are considered simple enough + # to never warrant a usage line + warn("U and s flags are incompatible") + if $flags =~ /U/ && $flags =~ /s/; + # nothing + } else { + + print $fh "\n=over $usage_indent\n"; + + if (defined $docref->{usage}) { # An override of the usage section + print $fh "\n", ($docref->{usage} =~ s/^/ /mrg), "\n"; + } + else { + + # Add the thread context formal parameter on expanded-out names + for my $item (@items) { + unshift $item->{args}->@*, (($item->{args}->@*) + ? "pTHX_" + : "pTHX") + if $item->{flags} !~ /T/ + && $item->{name} =~ /^Perl_/; + } + + # Look through all the items in this entry. If all have the same + # return type and arguments, only the main entry is displayed. + # Also, find the longest return type and longest name so that if + # multiple ones are shown, they can be vertically aligned nicely + my $need_individual_usage = 0; + my $longest_name_length = length $items[0]->{name}; + my $base_ret_type = $items[0]->{ret_type}; + my $longest_ret = length $base_ret_type; + my @base_args = $items[0]->{args}->@*; + for (my $i = 1; $i < @items; $i++) { + no warnings 'experimental::smartmatch'; + my $item = $items[$i]; + $need_individual_usage = 1 + if $item->{ret_type} ne $base_ret_type + || ! ($item->{args}->@* ~~ @base_args); + my $ret_length = length $item->{ret_type}; + $longest_ret = $ret_length if $ret_length > $longest_ret; + my $name_length = length $item->{name}; + $longest_name_length = $name_length + if $name_length > $longest_name_length; } - $docs{$inline_where}{$curheader}{$name} - = [$flags, $docs, $ret, $file, @args]; - # Create a special entry with an empty-string name for the - # heading-level documentation. - if (defined $header_doc) { - $docs{$inline_where}{$curheader}{""} = $header_doc; - undef $header_doc; - } - - if (defined $doc) { - if ($doc =~ /^=(?:for|head)/) { - $in = $doc; - redo FUNC; + # If we're only showing one entry, only its length matters. + $longest_name_length = length($items[0]->{name}) + unless $need_individual_usage; + print $fh "\n"; + + my $indent = 1; # 1 is sufficient for verbatim; =over is used + # for more + my $ret_name_sep_length = 2; # spaces between return type and name + my $name_indent = $indent + $longest_ret; + $name_indent += $ret_name_sep_length if $longest_ret; + + my $this_max_width = + $max_width - $description_indent - $usage_indent; + + for my $item (@items) { + my $ret_type = $item->{ret_type}; + my @args = $item->{args}->@*; + my $name = $item->{name}; + my $item_flags = $item->{flags}; + + # The return type + print $fh (" " x $indent), $ret_type; + + print $fh " " x ( $ret_name_sep_length + + $longest_ret - length $ret_type); + print $fh $name; + + if ($item_flags =~ /n/) { # no args + warn("$file: $element_name: n flag without m") + unless $item_flags =~ /m/; + warn("$file: $name: n flag but apparently has args") + if @args; } - } else { - warn "$file:$line:$in"; + else { + # +1 for the '(' + my $arg_indent = $name_indent + $longest_name_length + 1; + + # Align the argument lists of the items + print $fh " " x ($longest_name_length - length($name)); + print $fh "("; + + # Display as many of the arguments on the same line as + # will fit. + my $total_length = $arg_indent; + my $first_line = 1; + for (my $i = 0; $i < @args; $i++) { + my $arg = $args[$i]; + my $arg_length = length($arg); + + # All but the first arg are preceded by a blank + my $use_blank = $i > 0; + + # +1 here and below because either the argument has a + # trailing comma or trailing ')' + $total_length += $arg_length + $use_blank + 1; + + # We want none of the arguments to be positioned so + # they extend too far to the right. Ideally, they + # should all start in the same column as the arguments + # on the first line of the function display do. But, if + # necessary, outdent them so that they all start in + # another column, with the longest ending at the right + # margin, like so: + # void function_name(pTHX_ short1, + # short2, + # very_long_argument, + # short3) + if ($total_length > $this_max_width) { + + # If this is the first continuation line, + # calculate the longest argument; this will be the + # one we may have to outdent for. + if ($first_line) { + $first_line = 0; + + # We will need at least as much as the current + # argument + my $longest_arg_length = $arg_length + + $use_blank + 1; + + # Look through the rest of the args to see if + # any are longer than this one. + for (my $j = $i + 1; $j < @args; $j++) { + + # Include the trailing ',' or ')' in the + # length. No need to concern ourselves + # with a leading blank, as the argument + # would be positioned first on the next + # line + my $peek_arg_length = length ($args[$j]) + + 1; + $longest_arg_length = $peek_arg_length + if $peek_arg_length > $longest_arg_length; + } + + # Calculate the new indent if necessary. + $arg_indent = + $this_max_width - $longest_arg_length + if $arg_indent + $longest_arg_length + > $this_max_width; + } + + print $fh "\n", (" " x $arg_indent); + $total_length = $arg_indent + $arg_length + 1; + $use_blank = 0; + } + + # Display this argument + print $fh " " if $use_blank; + print $fh $arg; + print $fh "," if $i < @args - 1 && $args[$i] ne 'pTHX_'; + + } # End of loop through args + + print $fh ")"; + } + + print $fh ";" if $item_flags =~ /s/; # semicolon: "dTHR;" + print $fh "\n"; + + # Only the first entry is normally displayed + last unless $need_individual_usage; } } + + print $fh "\n=back\n"; } + + print $fh "\n=back\n"; + print $fh "\n=for hackers\nFound in file $file\n"; } -sub docout ($$$) { # output the docs for one function - my($fh, $name, $docref) = @_; - my($flags, $docs, $ret, $file, @args) = @$docref; - $name =~ s/\s*$//; - - if ($flags =~ /D/) { - $docs = "\n\nDEPRECATED! It is planned to remove this function from a -future release of Perl. Do not use it for new code; remove it from -existing code.\n\n$docs"; +sub construct_missings_section { + my ($pod_name, $missings_ref) = @_; + my $text = ""; + + return $text unless $missings_ref->@*; + + $text .= <<~EOT; + + =head1 $undocumented_scn + + EOT + if ($pod_name eq 'perlapi') { + $text .= <<~'EOT'; + The following functions have been flagged as part of the public + API, but are currently undocumented. Use them at your own risk, + as the interfaces are subject to change. Functions that are not + listed in this document are not intended for public use, and + should NOT be used under any circumstances. + + If you feel you need to use one of these functions, first send + email to L. + It may be that there is a good reason for the function not being + documented, and it should be removed from this list; or it may + just be that no one has gotten around to documenting it. In the + latter case, you will be asked to submit a patch to document the + function. Once your patch is accepted, it will indicate that the + interface is stable (unless it is explicitly marked otherwise) and + usable by you. + EOT } else { - $docs = "\n\nNOTE: this function is experimental and may change or be -removed without notice.\n\n$docs" if $flags =~ /x/; + $text .= <<~'EOT'; + The following functions are currently undocumented. If you use + one of them, you may wish to consider creating and submitting + documentation for it. + EOT } - # Is Perl_, but no #define foo # Perl_foo - my $p = $flags =~ /p/ && $flags =~ /o/ && $flags !~ /M/; + $text .= "\n" . format_pod_indexes($missings_ref); + + # Sort the elements. + my @missings = sort dictionary_order $missings_ref->@*; + + + $text .= "\n"; + + use integer; + + # Look through all the elements in the list and see how many columns we + # could place them in the output what will fit in the available width. + my $min_spacer = 2; # Need this much space between columns + my $columns; + my $rows; + my @col_widths; + + COLUMN: + # We start with more columns, and work down until we find a number that + # can accommodate all the data. This algorithm doesn't require the + # resulting columns to all have the same width. This can allow for + # as tight of packing as the data will possibly allow. + for ($columns = 7; $columns > 1; $columns--) { + + # For this many columns, we will need this many rows (final row might + # not be completely filled) + $rows = (@missings + $columns - 1) / $columns; + + my $row_width = 0; + my $i = 0; # Which missing element + + # For each column ... + for my $col (0 .. $columns - 1) { + + # Calculate how wide the column needs to be, which is based on the + # widest element in it + $col_widths[$col] = 0; + + # Look through all the rows to find the widest element + for my $row (0 .. $rows - 1) { + + # Skip if this row doesn't have an entry for this column + last if $i >= @missings; + + # This entry occupies this many bytes. + my $this_width = length $missings[$i]; + + # All but the final column need a spacer between it and the + # next column over. + $this_width += $min_spacer if $col < $columns - 1; - $docs .= "NOTE: the perl_ form of this function is deprecated.\n\n" - if $flags =~ /O/; - if ($p) { - $docs .= "NOTE: this function must be explicitly called as Perl_$name"; - $docs .= " with an aTHX_ parameter" if $flags !~ /T/; - $docs .= ".\n\n" + + # This column will need to have enough width to accommodate + # this element + if ($this_width > $col_widths[$col]) { + + # We can't have this many columns if the total width + # exceeds the available; bail now and try fewer columns + next COLUMN if $row_width + $this_width > $max_width; + + $col_widths[$col] = $this_width; + } + + $i++; # The next row will contain the next item + } + + $row_width += $col_widths[$col]; + next COLUMN if $row_width > $max_width; + } + + # If we get this far, this many columns works + last; } - print $fh "=item $name\nX<$name>\n$docs"; + # Here, have calculated the number of rows ($rows) and columns ($columns) + # required to list the elements. @col_widths contains the width of each + # column. - if ($flags =~ /U/) { # no usage - warn("U and s flags are incompatible") if $flags =~ /s/; - # nothing - } else { - if ($flags =~ /n/) { # no args - warn("n flag without m") unless $flags =~ /m/; - warn("n flag but apparently has args") if @args; - print $fh "\t$ret\t$name"; - } else { # full usage - my $n = "Perl_"x$p . $name; - my $large_ret = length $ret > 7; - my $indent_size = 7+8 # nroff: 7 under =head + 8 under =item - +8+($large_ret ? 1 + length $ret : 8) - +length($n) + 1; - my $indent; - print $fh "\t$ret" . ($large_ret ? ' ' : "\t") . "$n("; - my $long_args; - for (@args) { - if ($indent_size + 2 + length > 79) { - $long_args=1; - $indent_size -= length($n) - 3; - last; - } - } - my $args = ''; - if ($flags !~ /T/ && ($p || ($flags =~ /m/ && $name =~ /^Perl_/))) { - $args = @args ? "pTHX_ " : "pTHX"; - if ($long_args) { print $fh $args; $args = '' } - } - $long_args and print $fh "\n"; - my $first = !$long_args; - while () { - if (!@args or - length $args - && $indent_size + 3 + length($args[0]) + length $args > 79 - ) { - print $fh - $first ? '' : ( - $indent //= - "\t".($large_ret ? " " x (1+length $ret) : "\t") - ." "x($long_args ? 4 : 1 + length $n) - ), - $args, (","x($args ne 'pTHX_ ') . "\n")x!!@args; - $args = $first = ''; - } - @args or last; - $args .= ", "x!!(length $args && $args ne 'pTHX_ ') - . shift @args; - } - if ($long_args) { print $fh "\n", substr $indent, 0, -4 } - print $fh ")"; + $text .= "\n\n=over $description_indent\n\n"; + + # Assemble the output + for my $row (0 .. $rows - 1) { + for my $col (0 .. $columns - 1) { + $text .= " " if $col == 0; # Indent one to mark as verbatim + + my $index = $row + $rows * $col; # Convert 2 dimensions to 1 + + # Skip if this row doesn't have an entry for this column + next if $index >= @missings; + + my $element = $missings[$index]; + $text .= $element; + + # Add alignment spaces for all but final column + $text .= " " x ($col_widths[$col] - length $element) + if $col < $columns - 1; } - print $fh ";" if $flags =~ /s/; # semicolon "dTHR;" - print $fh "\n\n"; + + $text .= "\n"; # End of row } - print $fh "=for hackers\nFound in file $file\n\n"; + + $text .= "\n=back\n"; + + return $text; } -sub sort_helper { +sub dictionary_order { # Do a case-insensitive dictionary sort, with only alphabetics # significant, falling back to using everything for determinancy return (uc($a =~ s/[[:^alpha:]]//r) cmp uc($b =~ s/[[:^alpha:]]//r)) @@ -323,7 +1598,7 @@ } sub output { - my ($podname, $header, $dochash, $missing, $footer) = @_; + my ($podname, $header, $dochash, $missings_ref, $footer) = @_; # # strip leading '|' from each line which had been used to hide # pod from pod checkers. @@ -333,69 +1608,60 @@ {by => "$0 extracting documentation", from => 'the C source files'}, 1); - print $fh $header; + print $fh $header, "\n"; - my $key; - for $key (sort sort_helper keys %$dochash) { - my $section = $dochash->{$key}; - print $fh "\n=head1 $key\n\n"; - - # Output any heading-level documentation and delete so won't get in - # the way later - if (exists $section->{""}) { - print $fh $section->{""} . "\n"; - delete $section->{""}; + for my $section_name (sort dictionary_order keys %valid_sections) { + my $section_info = $dochash->{$section_name}; + + # We allow empty sections in perlintern. + if (! $section_info && $podname eq 'perlapi') { + warn "Empty section '$section_name'; skipped"; + next; } - print $fh "=over 8\n\n"; - for my $key (sort sort_helper keys %$section) { - docout($fh, $key, $section->{$key}); + print $fh "\n=head1 $section_name\n"; + + if ($podname eq 'perlapi') { + print $fh "\n", $valid_sections{$section_name}{header}, "\n" + if defined $valid_sections{$section_name}{header}; + + # Output any heading-level documentation and delete so won't get in + # the way later + if (exists $section_info->{""}) { + print $fh "\n", $section_info->{""}, "\n"; + delete $section_info->{""}; + } } - print $fh "\n=back\n"; - } - if (@$missing) { - print $fh "\n=head1 Undocumented functions\n\n"; - print $fh $podname eq 'perlapi' ? <<'_EOB_' : <<'_EOB_'; -The following functions have been flagged as part of the public API, -but are currently undocumented. Use them at your own risk, as the -interfaces are subject to change. Functions that are not listed in this -document are not intended for public use, and should NOT be used under any -circumstances. - -If you feel you need to use one of these functions, first send email to -L. It may be -that there is a good reason for the function not being documented, and it -should be removed from this list; or it may just be that no one has gotten -around to documenting it. In the latter case, you will be asked to submit a -patch to document the function. Once your patch is accepted, it will indicate -that the interface is stable (unless it is explicitly marked otherwise) and -usable by you. -_EOB_ -The following functions are currently undocumented. If you use one of -them, you may wish to consider creating and submitting documentation for -it. -_EOB_ - print $fh "\n=over\n\n"; + if ($section_info && keys $section_info->%*) { + for my $function_name (sort dictionary_order keys %$section_info) { + docout($fh, $function_name, $section_info->{$function_name}); + } + } + else { + print $fh "\nThere are only public API items currently in $section_name\n"; + } - for my $missing (sort @$missing) { - print $fh "=item $missing\nX<$missing>\n\n"; + print $fh "\n", $valid_sections{$section_name}{footer}, "\n" + if $podname eq 'perlapi' + && defined $valid_sections{$section_name}{footer}; } - print $fh "=back\n\n"; -} - print $fh $footer, "=cut\n"; + + print $fh construct_missings_section($podname, $missings_ref); + + print $fh "\n$footer\n=cut\n"; read_only_bottom_close_and_rename($fh); } foreach (@{(setup_embed())[0]}) { next if @$_ < 2; - my ($flags, $retval, $func, @args) = @$_; + my ($flags, $ret_type, $func, @args) = @$_; s/\b(?:NN|NULLOK)\b\s+//g for @args; $funcflags{$func} = { flags => $flags, - retval => $retval, + ret_type => $ret_type, args => \@args, }; } @@ -407,31 +1673,54 @@ while (my $line = <$fh>) { next unless my ($file) = $line =~ /^(\S+\.(?:[ch]|pod))\t/; + # Don't pick up pods from these. (We may pick up generated stuff from + # /lib though) + next if $file =~ m! ^ ( cpan | dist | ext ) / !x; + open F, '<', $file or die "Cannot open $file for docs: $!\n"; - $curheader = "Functions in file $file\n"; autodoc(\*F,$file); close F or die "Error closing $file: $!\n"; } close $fh or die "Error whilst reading MANIFEST: $!"; +parse_config_h(); + for (sort keys %funcflags) { next unless $funcflags{$_}{flags} =~ /d/; next if $funcflags{$_}{flags} =~ /h/; - warn "no docs for $_\n" + warn "no docs for $_\n"; } foreach (sort keys %missing) { warn "Function '$_', documented in $missing{$_}, not listed in embed.fnc"; } -# walk table providing an array of components in each line to -# subroutine, printing the result - # List of funcs in the public API that aren't also marked as core-only, # experimental nor deprecated. my @missing_api = grep $funcflags{$_}{flags} =~ /A/ && $funcflags{$_}{flags} !~ /[xD]/ && !$docs{api}{$_}, keys %funcflags; +push @missing_api, keys %missing_macros; + +my @other_places = ( qw(perlclib perlxs), keys %described_elsewhere ); +my $places_other_than_intern = join ", ", + map { "L<$_>" } sort dictionary_order 'perlapi', @other_places; +my $places_other_than_api = join ", ", + map { "L<$_>" } sort dictionary_order 'perlintern', @other_places; + +# The S< > makes things less densely packed, hence more readable +my $has_defs_text .= join ",S< > ", map { "C<$_>" } sort dictionary_order @has_defs; +my $has_r_defs_text .= join ",S< > ", map { "C<$_>" } sort dictionary_order @has_r_defs; +$valid_sections{$genconfig_scn}{footer} =~ s/__HAS_LIST__/$has_defs_text/; +$valid_sections{$genconfig_scn}{footer} =~ s/__HAS_R_LIST__/$has_r_defs_text/; + +my $include_defs_text .= join ",S< > ", map { "C<$_>" } sort dictionary_order @include_defs; +$valid_sections{$genconfig_scn}{footer} =~ s/__INCLUDE_LIST__/$include_defs_text/; + +my $section_list = join "\n\n", map { "=item L" } + sort(dictionary_order keys %valid_sections), + $undocumented_scn; # Keep last + output('perlapi', <<"_EOB_", $docs{api}, \@missing_api, <<"_EOE_"); |=encoding UTF-8 | @@ -444,16 +1733,27 @@ | |This file contains most of the documentation of the perl public API, as |generated by F. Specifically, it is a listing of functions, -|macros, flags, and variables that may be used by extension writers. Some -|specialized items are instead documented in $specialized_docs. +|macros, flags, and variables that may be used by extension writers. Besides +|L and F, some items are listed here as being actually +|documented in another pod. | -|L is a list of functions which have yet +|L is a list of functions which have yet |to be documented. Patches welcome! The interfaces of these are subject to |change without notice. | -|Anything not listed here is not part of the public API, and should not be -|used by extension writers at all. For these reasons, blindly using functions -|listed in proto.h is to be avoided when writing extensions. +|Some of the functions documented here are consolidated so that a single entry +|serves for multiple functions which all do basically the same thing, but have +|some slight differences. For example, one form might process magic, while +|another doesn't. The name of each variation is listed at the top of the +|single entry. But if all have the same signature (arguments and return type) +|except for their names, only the usage for the base form is shown. If any +|one of the forms has a different signature (such as returning C or +|not) every function's signature is explicitly displayed. +| +|Anything not listed here or in the other mentioned pods is not part of the +|public API, and should not be used by extension writers at all. For these +|reasons, blindly using functions listed in F is to be avoided when +|writing extensions. | |In Perl, unlike C, a string of characters may generally contain embedded |C characters. Sometimes in the documentation a Perl string is referred @@ -476,7 +1776,7 @@ |range can be referred to as ISO-8859-1. Often, the term "Latin-1" (or |"Latin1") is used as an equivalent for ISO-8859-1. But some people treat |"Latin1" as referring just to the characters in the range 128 through 255, or -|somethimes from 160 through 255. +|sometimes from 160 through 255. |This documentation uses "Latin1" and "Latin-1" to refer to all 256 characters. | |Note that Perl can be compiled and run under either ASCII or EBCDIC (See @@ -492,10 +1792,20 @@ |the UTF- encodings, and a string encoded in UTF-EBCDIC may occupy a different |number of bytes than in UTF-8. | -|The listing below is alphabetical, case insensitive. +|The organization of this document is tentative and subject to change. +|Suggestions and patches welcome +|L. | -_EOB_ +|The sections in this document currently are +| +|=over + +|$section_list +| +|=back | +|The listing below is alphabetical, case insensitive. +_EOB_ |=head1 AUTHORS | |Until May 1997, this document was maintained by Jeff Okamoto @@ -512,7 +1822,7 @@ | |=head1 SEE ALSO | -$other_places_api +|F, $places_other_than_api _EOE_ # List of non-static internal functions @@ -532,6 +1842,8 @@ |Perl interpreter that are documented using Perl's internal documentation |format but are not marked as part of the Perl API. In other words, |B! + +|It has the same sections as L, though some may be empty. | _EOB_ | @@ -543,5 +1855,5 @@ | |=head1 SEE ALSO | -$other_places_intern +|F, $places_other_than_intern _EOE_ diff -Nru perl-5.32.1/av.c perl-5.34.0/av.c --- perl-5.32.1/av.c 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/av.c 2021-05-04 06:52:48.000000000 +0000 @@ -15,10 +15,6 @@ * [p.476 of _The Lord of the Rings_, III/iv: "Treebeard"] */ -/* -=head1 Array Manipulation Functions -*/ - #include "EXTERN.h" #define PERL_IN_AV_C #include "perl.h" @@ -32,22 +28,22 @@ assert(SvTYPE(av) == SVt_PVAV); if (AvREAL(av)) - return; + return; #ifdef DEBUGGING if (SvTIED_mg((const SV *)av, PERL_MAGIC_tied)) - Perl_ck_warner_d(aTHX_ packWARN(WARN_DEBUGGING), "av_reify called on tied array"); + Perl_ck_warner_d(aTHX_ packWARN(WARN_DEBUGGING), "av_reify called on tied array"); #endif key = AvMAX(av) + 1; while (key > AvFILLp(av) + 1) - AvARRAY(av)[--key] = NULL; + AvARRAY(av)[--key] = NULL; while (key) { - SV * const sv = AvARRAY(av)[--key]; - if (sv != &PL_sv_undef) - SvREFCNT_inc_simple_void(sv); + SV * const sv = AvARRAY(av)[--key]; + if (sv != &PL_sv_undef) + SvREFCNT_inc_simple_void(sv); } key = AvARRAY(av) - AvALLOC(av); while (key) - AvALLOC(av)[--key] = NULL; + AvALLOC(av)[--key] = NULL; AvREIFY_off(av); AvREAL_on(av); } @@ -76,7 +72,7 @@ mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied); if (mg) { - SV *arg1 = sv_newmortal(); + SV *arg1 = sv_newmortal(); /* NOTE: the API for av_extend() is NOT the same as the tie method EXTEND. * * The C function takes an *index* (assumes 0 indexed arrays) and ensures @@ -86,18 +82,19 @@ * is at least that many elements large. Thus we have to +1 the key when * we call the tied method. */ - sv_setiv(arg1, (IV)(key + 1)); - Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(EXTEND), G_DISCARD, 1, - arg1); - return; + sv_setiv(arg1, (IV)(key + 1)); + Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(EXTEND), G_DISCARD, 1, + arg1); + return; } av_extend_guts(av,key,&AvMAX(av),&AvALLOC(av),&AvARRAY(av)); } /* The guts of av_extend. *Not* for general use! */ +/* Also called directly from pp_assign, padlist_store, padnamelist_store */ void Perl_av_extend_guts(pTHX_ AV *av, SSize_t key, SSize_t *maxp, SV ***allocp, - SV ***arrayp) + SV ***arrayp) { PERL_ARGS_ASSERT_AV_EXTEND_GUTS; @@ -106,102 +103,106 @@ "panic: av_extend_guts() negative count (%" IVdf ")", (IV)key); if (key > *maxp) { - SV** ary; - SSize_t tmp; - SSize_t newmax; - - if (av && *allocp != *arrayp) { - ary = *allocp + AvFILLp(av) + 1; - tmp = *arrayp - *allocp; - Move(*arrayp, *allocp, AvFILLp(av)+1, SV*); - *maxp += tmp; - *arrayp = *allocp; - if (AvREAL(av)) { - while (tmp) - ary[--tmp] = NULL; - } - if (key > *maxp - 10) { - newmax = key + *maxp; - goto resize; - } - } - else { - if (*allocp) { + SSize_t ary_offset = *maxp + 1; + SSize_t to_null = 0; + SSize_t newmax = 0; + + if (av && *allocp != *arrayp) { /* a shifted SV* array exists */ + to_null = *arrayp - *allocp; + *maxp += to_null; + ary_offset = AvFILLp(av) + 1; + + Move(*arrayp, *allocp, AvFILLp(av)+1, SV*); + + if (key > *maxp - 10) { + newmax = key + *maxp; + goto resize; + } + } else if (*allocp) { /* a full SV* array exists */ #ifdef Perl_safesysmalloc_size - /* Whilst it would be quite possible to move this logic around - (as I did in the SV code), so as to set AvMAX(av) early, - based on calling Perl_safesysmalloc_size() immediately after - allocation, I'm not convinced that it is a great idea here. - In an array we have to loop round setting everything to - NULL, which means writing to memory, potentially lots - of it, whereas for the SV buffer case we don't touch the - "bonus" memory. So there there is no cost in telling the - world about it, whereas here we have to do work before we can - tell the world about it, and that work involves writing to - memory that might never be read. So, I feel, better to keep - the current lazy system of only writing to it if our caller - has a need for more space. NWC */ - newmax = Perl_safesysmalloc_size((void*)*allocp) / - sizeof(const SV *) - 1; + /* Whilst it would be quite possible to move this logic around + (as I did in the SV code), so as to set AvMAX(av) early, + based on calling Perl_safesysmalloc_size() immediately after + allocation, I'm not convinced that it is a great idea here. + In an array we have to loop round setting everything to + NULL, which means writing to memory, potentially lots + of it, whereas for the SV buffer case we don't touch the + "bonus" memory. So there there is no cost in telling the + world about it, whereas here we have to do work before we can + tell the world about it, and that work involves writing to + memory that might never be read. So, I feel, better to keep + the current lazy system of only writing to it if our caller + has a need for more space. NWC */ + newmax = Perl_safesysmalloc_size((void*)*allocp) / + sizeof(const SV *) - 1; - if (key <= newmax) - goto resized; + if (key <= newmax) + goto resized; #endif - /* overflow-safe version of newmax = key + *maxp/5 */ - newmax = *maxp / 5; - newmax = (key > SSize_t_MAX - newmax) - ? SSize_t_MAX : key + newmax; - resize: - { - /* it should really be newmax+1 here, but if newmax - * happens to equal SSize_t_MAX, then newmax+1 is - * undefined. This means technically we croak one - * index lower than we should in theory; in practice - * its unlikely the system has SSize_t_MAX/sizeof(SV*) - * bytes to spare! */ - MEM_WRAP_CHECK_s(newmax, SV*, "Out of memory during array extend"); - } + /* overflow-safe version of newmax = key + *maxp/5 */ + newmax = *maxp / 5; + newmax = (key > SSize_t_MAX - newmax) + ? SSize_t_MAX : key + newmax; + resize: + { + /* it should really be newmax+1 here, but if newmax + * happens to equal SSize_t_MAX, then newmax+1 is + * undefined. This means technically we croak one + * index lower than we should in theory; in practice + * its unlikely the system has SSize_t_MAX/sizeof(SV*) + * bytes to spare! */ + MEM_WRAP_CHECK_s(newmax, SV*, "Out of memory during array extend"); + } #ifdef STRESS_REALLOC - { - SV ** const old_alloc = *allocp; - Newx(*allocp, newmax+1, SV*); - Copy(old_alloc, *allocp, *maxp + 1, SV*); - Safefree(old_alloc); - } + { + SV ** const old_alloc = *allocp; + Newx(*allocp, newmax+1, SV*); + Copy(old_alloc, *allocp, *maxp + 1, SV*); + Safefree(old_alloc); + } #else - Renew(*allocp,newmax+1, SV*); + Renew(*allocp,newmax+1, SV*); #endif #ifdef Perl_safesysmalloc_size - resized: + resized: #endif - ary = *allocp + *maxp + 1; - tmp = newmax - *maxp; - if (av == PL_curstack) { /* Oops, grew stack (via av_store()?) */ - PL_stack_sp = *allocp + (PL_stack_sp - PL_stack_base); - PL_stack_base = *allocp; - PL_stack_max = PL_stack_base + newmax; - } - } - else { - newmax = key < 3 ? 3 : key; - { - /* see comment above about newmax+1*/ - MEM_WRAP_CHECK_s(newmax, SV*, "Out of memory during array extend"); - } - Newx(*allocp, newmax+1, SV*); - ary = *allocp + 1; - tmp = newmax; - *allocp[0] = NULL; /* For the stacks */ - } - if (av && AvREAL(av)) { - while (tmp) - ary[--tmp] = NULL; - } - - *arrayp = *allocp; - *maxp = newmax; - } + to_null += newmax - *maxp; + *maxp = newmax; + + /* See GH#18014 for discussion of when this might be needed: */ + if (av == PL_curstack) { /* Oops, grew stack (via av_store()?) */ + PL_stack_sp = *allocp + (PL_stack_sp - PL_stack_base); + PL_stack_base = *allocp; + PL_stack_max = PL_stack_base + newmax; + } + } else { /* there is no SV* array yet */ + *maxp = key < 3 ? 3 : key; + { + /* see comment above about newmax+1*/ + MEM_WRAP_CHECK_s(*maxp, SV*, + "Out of memory during array extend"); + } + /* Newxz isn't used below because testing showed it to be slower + * than Newx+Zero (also slower than Newx + the previous while + * loop) for small arrays, which are very common in perl. */ + Newx(*allocp, *maxp+1, SV*); + /* Stacks require only the first element to be &PL_sv_undef + * (set elsewhere). However, since non-stack AVs are likely + * to dominate in modern production applications, stacks + * don't get any special treatment here. + * See https://github.com/Perl/perl5/pull/18690 for more detail */ + ary_offset = 0; + to_null = *maxp+1; + goto zero; + } + + if (av && AvREAL(av)) { + zero: + Zero(*allocp + ary_offset,to_null,SV*); + } + + *arrayp = *allocp; } } @@ -226,23 +227,23 @@ { bool adjust_index = 1; if (mg) { - /* Handle negative array indices 20020222 MJD */ - SV * const ref = SvTIED_obj(MUTABLE_SV(av), mg); - SvGETMAGIC(ref); - if (SvROK(ref) && SvOBJECT(SvRV(ref))) { - SV * const * const negative_indices_glob = - hv_fetchs(SvSTASH(SvRV(ref)), NEGATIVE_INDICES_VAR, 0); - - if (negative_indices_glob && isGV(*negative_indices_glob) - && SvTRUE(GvSV(*negative_indices_glob))) - adjust_index = 0; - } + /* Handle negative array indices 20020222 MJD */ + SV * const ref = SvTIED_obj(MUTABLE_SV(av), mg); + SvGETMAGIC(ref); + if (SvROK(ref) && SvOBJECT(SvRV(ref))) { + SV * const * const negative_indices_glob = + hv_fetchs(SvSTASH(SvRV(ref)), NEGATIVE_INDICES_VAR, 0); + + if (negative_indices_glob && isGV(*negative_indices_glob) + && SvTRUE(GvSV(*negative_indices_glob))) + adjust_index = 0; + } } if (adjust_index) { - *keyp += AvFILL(av) + 1; - if (*keyp < 0) - return FALSE; + *keyp += AvFILL(av) + 1; + if (*keyp < 0) + return FALSE; } return TRUE; } @@ -258,22 +259,22 @@ if (UNLIKELY(SvRMAGICAL(av))) { const MAGIC * const tied_magic - = mg_find((const SV *)av, PERL_MAGIC_tied); + = mg_find((const SV *)av, PERL_MAGIC_tied); if (tied_magic || mg_find((const SV *)av, PERL_MAGIC_regdata)) { - SV *sv; - if (key < 0) { - if (!S_adjust_index(aTHX_ av, tied_magic, &key)) - return NULL; - } + SV *sv; + if (key < 0) { + if (!S_adjust_index(aTHX_ av, tied_magic, &key)) + return NULL; + } sv = sv_newmortal(); - sv_upgrade(sv, SVt_PVLV); - mg_copy(MUTABLE_SV(av), sv, 0, key); - if (!tied_magic) /* for regdata, force leavesub to make copies */ - SvTEMP_off(sv); - LvTYPE(sv) = 't'; - LvTARG(sv) = sv; /* fake (SV**) */ - return &(LvTARG(sv)); + sv_upgrade(sv, SVt_PVLV); + mg_copy(MUTABLE_SV(av), sv, 0, key); + if (!tied_magic) /* for regdata, force leavesub to make copies */ + SvTEMP_off(sv); + LvTYPE(sv) = 't'; + LvTARG(sv) = sv; /* fake (SV**) */ + return &(LvTARG(sv)); } } @@ -284,14 +285,14 @@ /* the cast from SSize_t to Size_t allows both (key < 0) and (key >= size) * to be tested as a single condition */ if ((Size_t)key >= (Size_t)size) { - if (UNLIKELY(neg)) - return NULL; + if (UNLIKELY(neg)) + return NULL; goto emptyness; } if (!AvARRAY(av)[key]) { emptyness: - return lval ? av_store(av,key,newSV(0)) : NULL; + return lval ? av_store(av,key,newSV(0)) : NULL; } return &AvARRAY(av)[key]; @@ -335,59 +336,59 @@ const MAGIC * const tied_magic = mg_find((const SV *)av, PERL_MAGIC_tied); if (tied_magic) { if (key < 0) { - if (!S_adjust_index(aTHX_ av, tied_magic, &key)) + if (!S_adjust_index(aTHX_ av, tied_magic, &key)) return 0; } - if (val) { - mg_copy(MUTABLE_SV(av), val, 0, key); - } - return NULL; + if (val) { + mg_copy(MUTABLE_SV(av), val, 0, key); + } + return NULL; } } if (key < 0) { - key += AvFILL(av) + 1; - if (key < 0) - return NULL; + key += AvFILL(av) + 1; + if (key < 0) + return NULL; } if (SvREADONLY(av) && key >= AvFILL(av)) - Perl_croak_no_modify(); + Perl_croak_no_modify(); if (!AvREAL(av) && AvREIFY(av)) - av_reify(av); + av_reify(av); if (key > AvMAX(av)) - av_extend(av,key); + av_extend(av,key); ary = AvARRAY(av); if (AvFILLp(av) < key) { - if (!AvREAL(av)) { - if (av == PL_curstack && key > PL_stack_sp - PL_stack_base) - PL_stack_sp = PL_stack_base + key; /* XPUSH in disguise */ - do { - ary[++AvFILLp(av)] = NULL; - } while (AvFILLp(av) < key); - } - AvFILLp(av) = key; + if (!AvREAL(av)) { + if (av == PL_curstack && key > PL_stack_sp - PL_stack_base) + PL_stack_sp = PL_stack_base + key; /* XPUSH in disguise */ + do { + ary[++AvFILLp(av)] = NULL; + } while (AvFILLp(av) < key); + } + AvFILLp(av) = key; } else if (AvREAL(av)) - SvREFCNT_dec(ary[key]); + SvREFCNT_dec(ary[key]); ary[key] = val; if (SvSMAGICAL(av)) { - const MAGIC *mg = SvMAGIC(av); - bool set = TRUE; - for (; mg; mg = mg->mg_moremagic) { - if (!isUPPER(mg->mg_type)) continue; - if (val) { - sv_magic(val, MUTABLE_SV(av), toLOWER(mg->mg_type), 0, key); - } - if (PL_delaymagic && mg->mg_type == PERL_MAGIC_isa) { - PL_delaymagic |= DM_ARRAY_ISA; - set = FALSE; - } - } - if (set) - mg_set(MUTABLE_SV(av)); + const MAGIC *mg = SvMAGIC(av); + bool set = TRUE; + for (; mg; mg = mg->mg_moremagic) { + if (!isUPPER(mg->mg_type)) continue; + if (val) { + sv_magic(val, MUTABLE_SV(av), toLOWER(mg->mg_type), 0, key); + } + if (PL_delaymagic && mg->mg_type == PERL_MAGIC_isa) { + PL_delaymagic |= DM_ARRAY_ISA; + set = FALSE; + } + } + if (set) + mg_set(MUTABLE_SV(av)); } return &ary[key]; } @@ -407,7 +408,7 @@ AV * Perl_av_make(pTHX_ SSize_t size, SV **strp) { - AV * const av = MUTABLE_AV(newSV_type(SVt_PVAV)); + AV * const av = newAV(); /* sv_upgrade does AvREAL_only() */ PERL_ARGS_ASSERT_AV_MAKE; assert(SvTYPE(av) == SVt_PVAV); @@ -417,30 +418,29 @@ SSize_t i; SSize_t orig_ix; - Newx(ary,size,SV*); - AvALLOC(av) = ary; - AvARRAY(av) = ary; - AvMAX(av) = size - 1; - AvFILLp(av) = -1; + Newx(ary,size,SV*); + AvALLOC(av) = ary; + AvARRAY(av) = ary; + AvMAX(av) = size - 1; /* avoid av being leaked if croak when calling magic below */ EXTEND_MORTAL(1); PL_tmps_stack[++PL_tmps_ix] = (SV*)av; orig_ix = PL_tmps_ix; - for (i = 0; i < size; i++) { - assert (*strp); + for (i = 0; i < size; i++) { + assert (*strp); - /* Don't let sv_setsv swipe, since our source array might - have multiple references to the same temp scalar (e.g. - from a list slice) */ - - SvGETMAGIC(*strp); /* before newSV, in case it dies */ - AvFILLp(av)++; - ary[i] = newSV(0); - sv_setsv_flags(ary[i], *strp, - SV_DO_COW_SVSETSV|SV_NOSTEAL); - strp++; - } + /* Don't let sv_setsv swipe, since our source array might + have multiple references to the same temp scalar (e.g. + from a list slice) */ + + SvGETMAGIC(*strp); /* before newSV, in case it dies */ + AvFILLp(av)++; + ary[i] = newSV(0); + sv_setsv_flags(ary[i], *strp, + SV_DO_COW_SVSETSV|SV_NOSTEAL); + strp++; + } /* disarm av's leak guard */ if (LIKELY(PL_tmps_ix == orig_ix)) PL_tmps_ix--; @@ -453,7 +453,7 @@ /* =for apidoc av_clear -Frees the all the elements of an array, leaving it empty. +Frees all the elements of an array, leaving it empty. The XS equivalent of C<@array = ()>. See also L. Note that it is possible that the actions of a destructor called directly @@ -478,46 +478,46 @@ #ifdef DEBUGGING if (SvREFCNT(av) == 0) { - Perl_ck_warner_d(aTHX_ packWARN(WARN_DEBUGGING), "Attempt to clear deleted array"); + Perl_ck_warner_d(aTHX_ packWARN(WARN_DEBUGGING), "Attempt to clear deleted array"); } #endif if (SvREADONLY(av)) - Perl_croak_no_modify(); + Perl_croak_no_modify(); /* Give any tie a chance to cleanup first */ if (SvRMAGICAL(av)) { - const MAGIC* const mg = SvMAGIC(av); - if (PL_delaymagic && mg && mg->mg_type == PERL_MAGIC_isa) - PL_delaymagic |= DM_ARRAY_ISA; + const MAGIC* const mg = SvMAGIC(av); + if (PL_delaymagic && mg && mg->mg_type == PERL_MAGIC_isa) + PL_delaymagic |= DM_ARRAY_ISA; else - mg_clear(MUTABLE_SV(av)); + mg_clear(MUTABLE_SV(av)); } if (AvMAX(av) < 0) - return; + return; if ((real = cBOOL(AvREAL(av)))) { - SV** const ary = AvARRAY(av); - SSize_t index = AvFILLp(av) + 1; + SV** const ary = AvARRAY(av); + SSize_t index = AvFILLp(av) + 1; /* avoid av being freed when calling destructors below */ EXTEND_MORTAL(1); PL_tmps_stack[++PL_tmps_ix] = SvREFCNT_inc_simple_NN(av); orig_ix = PL_tmps_ix; - while (index) { - SV * const sv = ary[--index]; - /* undef the slot before freeing the value, because a - * destructor might try to modify this array */ - ary[index] = NULL; - SvREFCNT_dec(sv); - } + while (index) { + SV * const sv = ary[--index]; + /* undef the slot before freeing the value, because a + * destructor might try to modify this array */ + ary[index] = NULL; + SvREFCNT_dec(sv); + } } extra = AvARRAY(av) - AvALLOC(av); if (extra) { - AvMAX(av) += extra; - AvARRAY(av) = AvALLOC(av); + AvMAX(av) += extra; + AvARRAY(av) = AvALLOC(av); } AvFILLp(av) = -1; if (real) { @@ -555,19 +555,19 @@ /* Give any tie a chance to cleanup first */ if (SvTIED_mg((const SV *)av, PERL_MAGIC_tied)) - av_fill(av, -1); + av_fill(av, -1); real = cBOOL(AvREAL(av)); if (real) { - SSize_t key = AvFILLp(av) + 1; + SSize_t key = AvFILLp(av) + 1; /* avoid av being freed when calling destructors below */ EXTEND_MORTAL(1); PL_tmps_stack[++PL_tmps_ix] = SvREFCNT_inc_simple_NN(av); orig_ix = PL_tmps_ix; - while (key) - SvREFCNT_dec(AvARRAY(av)[--key]); + while (key) + SvREFCNT_dec(AvARRAY(av)[--key]); } Safefree(AvALLOC(av)); @@ -602,7 +602,7 @@ PERL_ARGS_ASSERT_AV_CREATE_AND_PUSH; if (!*avp) - *avp = newAV(); + *avp = newAV(); av_push(*avp, val); } @@ -626,12 +626,12 @@ assert(SvTYPE(av) == SVt_PVAV); if (SvREADONLY(av)) - Perl_croak_no_modify(); + Perl_croak_no_modify(); if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) { - Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(PUSH), G_DISCARD, 1, - val); - return; + Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(PUSH), G_DISCARD, 1, + val); + return; } av_store(av,AvFILLp(av)+1,val); } @@ -658,19 +658,19 @@ assert(SvTYPE(av) == SVt_PVAV); if (SvREADONLY(av)) - Perl_croak_no_modify(); + Perl_croak_no_modify(); if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) { - retval = Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(POP), 0, 0); - if (retval) - retval = newSVsv(retval); - return retval; + retval = Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(POP), 0, 0); + if (retval) + retval = newSVsv(retval); + return retval; } if (AvFILL(av) < 0) - return &PL_sv_undef; + return &PL_sv_undef; retval = AvARRAY(av)[AvFILLp(av)]; AvARRAY(av)[AvFILLp(av)--] = NULL; if (SvSMAGICAL(av)) - mg_set(MUTABLE_SV(av)); + mg_set(MUTABLE_SV(av)); return retval ? retval : &PL_sv_undef; } @@ -691,7 +691,7 @@ PERL_ARGS_ASSERT_AV_CREATE_AND_UNSHIFT_ONE; if (!*avp) - *avp = newAV(); + *avp = newAV(); av_unshift(*avp, 1); return av_store(*avp, 0, val); } @@ -717,45 +717,45 @@ assert(SvTYPE(av) == SVt_PVAV); if (SvREADONLY(av)) - Perl_croak_no_modify(); + Perl_croak_no_modify(); if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) { - Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(UNSHIFT), - G_DISCARD | G_UNDEF_FILL, num); - return; + Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(UNSHIFT), + G_DISCARD | G_UNDEF_FILL, num); + return; } if (num <= 0) return; if (!AvREAL(av) && AvREIFY(av)) - av_reify(av); + av_reify(av); i = AvARRAY(av) - AvALLOC(av); if (i) { - if (i > num) - i = num; - num -= i; + if (i > num) + i = num; + num -= i; - AvMAX(av) += i; - AvFILLp(av) += i; - AvARRAY(av) = AvARRAY(av) - i; + AvMAX(av) += i; + AvFILLp(av) += i; + AvARRAY(av) = AvARRAY(av) - i; } if (num) { - SV **ary; - const SSize_t i = AvFILLp(av); - /* Create extra elements */ - const SSize_t slide = i > 0 ? i : 0; - num += slide; - av_extend(av, i + num); - AvFILLp(av) += num; - ary = AvARRAY(av); - Move(ary, ary + num, i + 1, SV*); - do { - ary[--num] = NULL; - } while (num); - /* Make extra elements into a buffer */ - AvMAX(av) -= slide; - AvFILLp(av) -= slide; - AvARRAY(av) = AvARRAY(av) + slide; + SV **ary; + const SSize_t i = AvFILLp(av); + /* Create extra elements */ + const SSize_t slide = i > 0 ? i : 0; + num += slide; + av_extend(av, i + num); + AvFILLp(av) += num; + ary = AvARRAY(av); + Move(ary, ary + num, i + 1, SV*); + do { + ary[--num] = NULL; + } while (num); + /* Make extra elements into a buffer */ + AvMAX(av) -= slide; + AvFILLp(av) -= slide; + AvARRAY(av) = AvARRAY(av) + slide; } } @@ -781,42 +781,48 @@ assert(SvTYPE(av) == SVt_PVAV); if (SvREADONLY(av)) - Perl_croak_no_modify(); + Perl_croak_no_modify(); if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) { - retval = Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(SHIFT), 0, 0); - if (retval) - retval = newSVsv(retval); - return retval; + retval = Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(SHIFT), 0, 0); + if (retval) + retval = newSVsv(retval); + return retval; } if (AvFILL(av) < 0) return &PL_sv_undef; retval = *AvARRAY(av); if (AvREAL(av)) - *AvARRAY(av) = NULL; + *AvARRAY(av) = NULL; AvARRAY(av) = AvARRAY(av) + 1; AvMAX(av)--; AvFILLp(av)--; if (SvSMAGICAL(av)) - mg_set(MUTABLE_SV(av)); + mg_set(MUTABLE_SV(av)); return retval ? retval : &PL_sv_undef; } /* -=for apidoc av_top_index +=for apidoc av_tindex +=for apidoc_item av_top_index + +These behave identically. +If the array C is empty, these return -1; otherwise they return the maximum +value of the indices of all the array elements which are currently defined in +C. -Returns the highest index in the array. The number of elements in the -array is S>. Returns -1 if the array is empty. +They process 'get' magic. -The Perl equivalent for this is C<$#myarray>. +The Perl equivalent for these is C<$#av>. -(A slightly shorter form is C.) +Use C> to get the number of elements in an array. =for apidoc av_len Same as L. Note that, unlike what the name implies, it returns -the highest index in the array, so to get the size of the array you need to use -S>. This is unlike L, which returns what you would -expect. +the maximum index in the array. This is unlike L, which returns what +you would expect. + +B>>. =cut */ @@ -852,35 +858,35 @@ assert(SvTYPE(av) == SVt_PVAV); if (fill < 0) - fill = -1; + fill = -1; if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) { - SV *arg1 = sv_newmortal(); - sv_setiv(arg1, (IV)(fill + 1)); - Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(STORESIZE), G_DISCARD, - 1, arg1); - return; + SV *arg1 = sv_newmortal(); + sv_setiv(arg1, (IV)(fill + 1)); + Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(STORESIZE), G_DISCARD, + 1, arg1); + return; } if (fill <= AvMAX(av)) { - SSize_t key = AvFILLp(av); - SV** const ary = AvARRAY(av); + SSize_t key = AvFILLp(av); + SV** const ary = AvARRAY(av); - if (AvREAL(av)) { - while (key > fill) { - SvREFCNT_dec(ary[key]); - ary[key--] = NULL; - } - } - else { - while (key < fill) - ary[++key] = NULL; - } - - AvFILLp(av) = fill; - if (SvSMAGICAL(av)) - mg_set(MUTABLE_SV(av)); + if (AvREAL(av)) { + while (key > fill) { + SvREFCNT_dec(ary[key]); + ary[key--] = NULL; + } + } + else { + while (key < fill) + ary[++key] = NULL; + } + + AvFILLp(av) = fill; + if (SvSMAGICAL(av)) + mg_set(MUTABLE_SV(av)); } else - (void)av_store(av,fill,NULL); + (void)av_store(av,fill,NULL); } /* @@ -905,16 +911,16 @@ assert(SvTYPE(av) == SVt_PVAV); if (SvREADONLY(av)) - Perl_croak_no_modify(); + Perl_croak_no_modify(); if (SvRMAGICAL(av)) { const MAGIC * const tied_magic - = mg_find((const SV *)av, PERL_MAGIC_tied); + = mg_find((const SV *)av, PERL_MAGIC_tied); if ((tied_magic || mg_find((const SV *)av, PERL_MAGIC_regdata))) { SV **svp; if (key < 0) { - if (!S_adjust_index(aTHX_ av, tied_magic, &key)) - return NULL; + if (!S_adjust_index(aTHX_ av, tied_magic, &key)) + return NULL; } svp = av_fetch(av, key, TRUE); if (svp) { @@ -924,39 +930,39 @@ sv_unmagic(sv, PERL_MAGIC_tiedelem); /* No longer an element */ return sv; } - return NULL; + return NULL; } } } if (key < 0) { - key += AvFILL(av) + 1; - if (key < 0) - return NULL; + key += AvFILL(av) + 1; + if (key < 0) + return NULL; } if (key > AvFILLp(av)) - return NULL; + return NULL; else { - if (!AvREAL(av) && AvREIFY(av)) - av_reify(av); - sv = AvARRAY(av)[key]; - AvARRAY(av)[key] = NULL; - if (key == AvFILLp(av)) { - do { - AvFILLp(av)--; - } while (--key >= 0 && !AvARRAY(av)[key]); - } - if (SvSMAGICAL(av)) - mg_set(MUTABLE_SV(av)); + if (!AvREAL(av) && AvREIFY(av)) + av_reify(av); + sv = AvARRAY(av)[key]; + AvARRAY(av)[key] = NULL; + if (key == AvFILLp(av)) { + do { + AvFILLp(av)--; + } while (--key >= 0 && !AvARRAY(av)[key]); + } + if (SvSMAGICAL(av)) + mg_set(MUTABLE_SV(av)); } if(sv != NULL) { - if (flags & G_DISCARD) { - SvREFCNT_dec_NN(sv); - return NULL; - } - else if (AvREAL(av)) - sv_2mortal(sv); + if (flags & G_DISCARD) { + SvREFCNT_dec_NN(sv); + return NULL; + } + else if (AvREAL(av)) + sv_2mortal(sv); } return sv; } @@ -981,14 +987,14 @@ if (SvRMAGICAL(av)) { const MAGIC * const tied_magic - = mg_find((const SV *)av, PERL_MAGIC_tied); + = mg_find((const SV *)av, PERL_MAGIC_tied); const MAGIC * const regdata_magic = mg_find((const SV *)av, PERL_MAGIC_regdata); if (tied_magic || regdata_magic) { MAGIC *mg; /* Handle negative array indices 20020222 MJD */ if (key < 0) { - if (!S_adjust_index(aTHX_ av, tied_magic, &key)) + if (!S_adjust_index(aTHX_ av, tied_magic, &key)) return FALSE; } @@ -998,36 +1004,36 @@ else return FALSE; } - { - SV * const sv = sv_newmortal(); - mg_copy(MUTABLE_SV(av), sv, 0, key); - mg = mg_find(sv, PERL_MAGIC_tiedelem); - if (mg) { - magic_existspack(sv, mg); - { - I32 retbool = SvTRUE_nomg_NN(sv); - return cBOOL(retbool); - } - } - } + { + SV * const sv = sv_newmortal(); + mg_copy(MUTABLE_SV(av), sv, 0, key); + mg = mg_find(sv, PERL_MAGIC_tiedelem); + if (mg) { + magic_existspack(sv, mg); + { + I32 retbool = SvTRUE_nomg_NN(sv); + return cBOOL(retbool); + } + } + } } } if (key < 0) { - key += AvFILL(av) + 1; - if (key < 0) - return FALSE; + key += AvFILL(av) + 1; + if (key < 0) + return FALSE; } if (key <= AvFILLp(av) && AvARRAY(av)[key]) { - if (SvSMAGICAL(AvARRAY(av)[key]) - && mg_find(AvARRAY(av)[key], PERL_MAGIC_nonelem)) - return FALSE; - return TRUE; + if (SvSMAGICAL(AvARRAY(av)[key]) + && mg_find(AvARRAY(av)[key], PERL_MAGIC_nonelem)) + return FALSE; + return TRUE; } else - return FALSE; + return FALSE; } static MAGIC * @@ -1040,11 +1046,11 @@ mg = mg_find((const SV *)av, PERL_MAGIC_arylen_p); if (!mg) { - mg = sv_magicext(MUTABLE_SV(av), 0, PERL_MAGIC_arylen_p, - &PL_vtbl_arylen_p, 0, 0); - assert(mg); - /* sv_magicext won't set this for us because we pass in a NULL obj */ - mg->mg_flags |= MGf_REFCOUNTED; + mg = sv_magicext(MUTABLE_SV(av), 0, PERL_MAGIC_arylen_p, + &PL_vtbl_arylen_p, 0, 0); + assert(mg); + /* sv_magicext won't set this for us because we pass in a NULL obj */ + mg->mg_flags |= MGf_REFCOUNTED; } return mg; } @@ -1067,15 +1073,15 @@ assert(SvTYPE(av) == SVt_PVAV); if (sizeof(IV) == sizeof(SSize_t)) { - return (IV *)&(mg->mg_len); + return (IV *)&(mg->mg_len); } else { - if (!mg->mg_ptr) { - IV *temp; - mg->mg_len = IVSIZE; - Newxz(temp, 1, IV); - mg->mg_ptr = (char *) temp; - } - return (IV *)mg->mg_ptr; + if (!mg->mg_ptr) { + IV *temp; + mg->mg_len = IVSIZE; + Newxz(temp, 1, IV); + mg->mg_ptr = (char *) temp; + } + return (IV *)mg->mg_ptr; } } @@ -1084,7 +1090,7 @@ SV * const sv = newSV(0); PERL_ARGS_ASSERT_AV_NONELEM; if (!av_store(av,ix,sv)) - return sv_2mortal(sv); /* has tie magic */ + return sv_2mortal(sv); /* has tie magic */ sv_magic(sv, NULL, PERL_MAGIC_nonelem, NULL, 0); return sv; } diff -Nru perl-5.32.1/av.h perl-5.34.0/av.h --- perl-5.32.1/av.h 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/av.h 2021-01-20 23:04:44.000000000 +0000 @@ -37,22 +37,25 @@ */ /* -=head1 Handy Values - =for apidoc ADmnU||Nullav Null AV pointer. (deprecated - use C<(AV *)NULL> instead) -=head1 Array Manipulation Functions +=for apidoc Am|SSize_t|AvFILL|AV* av +Same as C> or C>. + +=for apidoc Cm|SSize_t|AvFILLp|AV* av -=for apidoc Am|int|AvFILL|AV* av -Same as C or C. +If the array C is empty, this returns -1; otherwise it returns the maximum +value of the indices of all the array elements which are currently defined in +C. It does not handle magic, hence the C

private indication in its name. -=for apidoc av_tindex -Same as C. +=for apidoc Am|SV**|AvARRAY|AV* av +Returns a pointer to the AV's internal SV* array. -=for apidoc m|int|AvFILLp|AV* av +This is useful for doing pointer arithmetic on the array. +If all you need is to look up an array element, then prefer C. =cut */ @@ -80,8 +83,9 @@ #define AvREALISH(av) (SvFLAGS(av) & (SVpav_REAL|SVpav_REIFY)) #define AvFILL(av) ((SvRMAGICAL((const SV *) (av))) \ - ? mg_size(MUTABLE_SV(av)) : AvFILLp(av)) -#define av_tindex(av) av_top_index(av) + ? mg_size(MUTABLE_SV(av)) : AvFILLp(av)) +#define av_top_index(av) AvFILL(av) +#define av_tindex(av) av_top_index(av) /* Note that it doesn't make sense to do this: * SvGETMAGIC(av); IV x = av_tindex_nomg(av); diff -Nru perl-5.32.1/charclass_invlists.h perl-5.34.0/charclass_invlists.h --- perl-5.32.1/charclass_invlists.h 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/charclass_invlists.h 2021-05-04 06:52:48.000000000 +0000 @@ -29629,7 +29629,7 @@ # if 'A' == 65 /* ASCII/Latin1 */ static const UV _Perl_IVCF_invlist[] = { /* for ASCII/Latin1 */ - 1316, /* Number of elements */ + 1318, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -29640,6 +29640,8 @@ 0x73, 0x74, 0x7B, + 0xB5, + 0xB6, 0xDF, 0xE0, 0xE5, @@ -30991,7 +30993,8 @@ IVCF_use_AUX_TABLE_24 = -24, IVCF_use_AUX_TABLE_25 = -25, IVCF_use_AUX_TABLE_26 = -26, - IVCF_use_AUX_TABLE_27 = -27 + IVCF_use_AUX_TABLE_27 = -27, + IVCF_use_AUX_TABLE_28 = -28 } IVCF_enum; #define HAS_IVCF_AUX_TABLES @@ -31007,129 +31010,134 @@ }; static const U32 IVCF_AUX_TABLE_3[] = { + 0x39C, + 0x3BC +}; + +static const U32 IVCF_AUX_TABLE_4[] = { 0xC5, 0x212B }; -static const U32 IVCF_AUX_TABLE_4[] = { +static const U32 IVCF_AUX_TABLE_5[] = { 0x1C4, 0x1C5 }; -static const U32 IVCF_AUX_TABLE_5[] = { +static const U32 IVCF_AUX_TABLE_6[] = { 0x1C7, 0x1C8 }; -static const U32 IVCF_AUX_TABLE_6[] = { +static const U32 IVCF_AUX_TABLE_7[] = { 0x1CA, 0x1CB }; -static const U32 IVCF_AUX_TABLE_7[] = { +static const U32 IVCF_AUX_TABLE_8[] = { 0x1F1, 0x1F2 }; -static const U32 IVCF_AUX_TABLE_8[] = { +static const U32 IVCF_AUX_TABLE_9[] = { 0x392, 0x3D0 }; -static const U32 IVCF_AUX_TABLE_9[] = { +static const U32 IVCF_AUX_TABLE_10[] = { 0x395, 0x3F5 }; -static const U32 IVCF_AUX_TABLE_10[] = { +static const U32 IVCF_AUX_TABLE_11[] = { 0x398, 0x3D1, 0x3F4 }; -static const U32 IVCF_AUX_TABLE_11[] = { +static const U32 IVCF_AUX_TABLE_12[] = { 0x345, 0x399, 0x1FBE }; -static const U32 IVCF_AUX_TABLE_12[] = { +static const U32 IVCF_AUX_TABLE_13[] = { 0x39A, 0x3F0 }; -static const U32 IVCF_AUX_TABLE_13[] = { +static const U32 IVCF_AUX_TABLE_14[] = { 0xB5, 0x39C }; -static const U32 IVCF_AUX_TABLE_14[] = { +static const U32 IVCF_AUX_TABLE_15[] = { 0x3A0, 0x3D6 }; -static const U32 IVCF_AUX_TABLE_15[] = { +static const U32 IVCF_AUX_TABLE_16[] = { 0x3A1, 0x3F1 }; -static const U32 IVCF_AUX_TABLE_16[] = { +static const U32 IVCF_AUX_TABLE_17[] = { 0x3A3, 0x3C2 }; -static const U32 IVCF_AUX_TABLE_17[] = { +static const U32 IVCF_AUX_TABLE_18[] = { 0x3A6, 0x3D5 }; -static const U32 IVCF_AUX_TABLE_18[] = { +static const U32 IVCF_AUX_TABLE_19[] = { 0x3A9, 0x2126 }; -static const U32 IVCF_AUX_TABLE_19[] = { +static const U32 IVCF_AUX_TABLE_20[] = { 0x412, 0x1C80 }; -static const U32 IVCF_AUX_TABLE_20[] = { +static const U32 IVCF_AUX_TABLE_21[] = { 0x414, 0x1C81 }; -static const U32 IVCF_AUX_TABLE_21[] = { +static const U32 IVCF_AUX_TABLE_22[] = { 0x41E, 0x1C82 }; -static const U32 IVCF_AUX_TABLE_22[] = { +static const U32 IVCF_AUX_TABLE_23[] = { 0x421, 0x1C83 }; -static const U32 IVCF_AUX_TABLE_23[] = { +static const U32 IVCF_AUX_TABLE_24[] = { 0x422, 0x1C84, 0x1C85 }; -static const U32 IVCF_AUX_TABLE_24[] = { +static const U32 IVCF_AUX_TABLE_25[] = { 0x42A, 0x1C86 }; -static const U32 IVCF_AUX_TABLE_25[] = { +static const U32 IVCF_AUX_TABLE_26[] = { 0x462, 0x1C87 }; -static const U32 IVCF_AUX_TABLE_26[] = { +static const U32 IVCF_AUX_TABLE_27[] = { 0x1E60, 0x1E9B }; -static const U32 IVCF_AUX_TABLE_27[] = { +static const U32 IVCF_AUX_TABLE_28[] = { 0x1C88, 0xA64A }; @@ -31162,7 +31170,8 @@ IVCF_AUX_TABLE_24, IVCF_AUX_TABLE_25, IVCF_AUX_TABLE_26, - IVCF_AUX_TABLE_27 + IVCF_AUX_TABLE_27, + IVCF_AUX_TABLE_28 }; /* Parallel table to the above, giving the number of elements in each table @@ -31179,9 +31188,9 @@ 2 /* IVCF_AUX_TABLE_7 */, 2 /* IVCF_AUX_TABLE_8 */, 2 /* IVCF_AUX_TABLE_9 */, - 3 /* IVCF_AUX_TABLE_10 */, + 2 /* IVCF_AUX_TABLE_10 */, 3 /* IVCF_AUX_TABLE_11 */, - 2 /* IVCF_AUX_TABLE_12 */, + 3 /* IVCF_AUX_TABLE_12 */, 2 /* IVCF_AUX_TABLE_13 */, 2 /* IVCF_AUX_TABLE_14 */, 2 /* IVCF_AUX_TABLE_15 */, @@ -31192,11 +31201,12 @@ 2 /* IVCF_AUX_TABLE_20 */, 2 /* IVCF_AUX_TABLE_21 */, 2 /* IVCF_AUX_TABLE_22 */, - 3 /* IVCF_AUX_TABLE_23 */, - 2 /* IVCF_AUX_TABLE_24 */, + 2 /* IVCF_AUX_TABLE_23 */, + 3 /* IVCF_AUX_TABLE_24 */, 2 /* IVCF_AUX_TABLE_25 */, 2 /* IVCF_AUX_TABLE_26 */, - 2 /* IVCF_AUX_TABLE_27 */ + 2 /* IVCF_AUX_TABLE_27 */, + 2 /* IVCF_AUX_TABLE_28 */ }; static const I32 _Perl_IVCF_invmap[] = { /* for ASCII/Latin1 */ @@ -31207,9 +31217,11 @@ IVCF_use_AUX_TABLE_2, 0x54, 0, + IVCF_use_AUX_TABLE_3, + 0, 0x1E9E, 0xC0, - IVCF_use_AUX_TABLE_3, + IVCF_use_AUX_TABLE_4, 0xC6, 0, 0xD8, @@ -31378,12 +31390,12 @@ 0, 0x1F7, 0, - IVCF_use_AUX_TABLE_4, - 0, IVCF_use_AUX_TABLE_5, 0, IVCF_use_AUX_TABLE_6, 0, + IVCF_use_AUX_TABLE_7, + 0, 0x1CD, 0, 0x1CF, @@ -31419,7 +31431,7 @@ 0, 0x1EE, 0, - IVCF_use_AUX_TABLE_7, + IVCF_use_AUX_TABLE_8, 0, 0x1F4, 0, @@ -31562,24 +31574,24 @@ 0x388, 0x1FE3, 0x391, - IVCF_use_AUX_TABLE_8, - 0x393, IVCF_use_AUX_TABLE_9, - 0x396, + 0x393, IVCF_use_AUX_TABLE_10, + 0x396, IVCF_use_AUX_TABLE_11, IVCF_use_AUX_TABLE_12, - 0x39B, IVCF_use_AUX_TABLE_13, - 0x39D, + 0x39B, IVCF_use_AUX_TABLE_14, + 0x39D, IVCF_use_AUX_TABLE_15, - 0, IVCF_use_AUX_TABLE_16, - 0x3A4, + 0, IVCF_use_AUX_TABLE_17, - 0x3A7, + 0x3A4, IVCF_use_AUX_TABLE_18, + 0x3A7, + IVCF_use_AUX_TABLE_19, 0x3AA, 0x38C, 0x38E, @@ -31618,22 +31630,22 @@ 0x3FA, 0, 0x410, - IVCF_use_AUX_TABLE_19, - 0x413, IVCF_use_AUX_TABLE_20, - 0x415, + 0x413, IVCF_use_AUX_TABLE_21, - 0x41F, + 0x415, IVCF_use_AUX_TABLE_22, + 0x41F, IVCF_use_AUX_TABLE_23, - 0x423, IVCF_use_AUX_TABLE_24, + 0x423, + IVCF_use_AUX_TABLE_25, 0x42B, 0x400, 0, 0x460, 0, - IVCF_use_AUX_TABLE_25, + IVCF_use_AUX_TABLE_26, 0, 0x464, 0, @@ -31941,7 +31953,7 @@ 0, 0x1E5E, 0, - IVCF_use_AUX_TABLE_26, + IVCF_use_AUX_TABLE_27, 0, 0x1E62, 0, @@ -32296,7 +32308,7 @@ 0, 0xA648, 0, - IVCF_use_AUX_TABLE_27, + IVCF_use_AUX_TABLE_28, 0, 0xA64C, 0, @@ -32530,7 +32542,7 @@ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV _Perl_IVCF_invlist[] = { /* for EBCDIC 1047 */ - 1331, /* Number of elements */ + 1333, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -32556,6 +32568,8 @@ 0x9A, 0x9C, 0x9D, + 0xA0, + 0xA1, 0xA2, 0xA3, 0xAA, @@ -33910,7 +33924,8 @@ IVCF_use_AUX_TABLE_24 = -24, IVCF_use_AUX_TABLE_25 = -25, IVCF_use_AUX_TABLE_26 = -26, - IVCF_use_AUX_TABLE_27 = -27 + IVCF_use_AUX_TABLE_27 = -27, + IVCF_use_AUX_TABLE_28 = -28 } IVCF_enum; #define HAS_IVCF_AUX_TABLES @@ -33926,129 +33941,134 @@ }; static const U32 IVCF_AUX_TABLE_3[] = { + 0x39C, + 0x3BC +}; + +static const U32 IVCF_AUX_TABLE_4[] = { 0xE2, 0x17F }; -static const U32 IVCF_AUX_TABLE_4[] = { +static const U32 IVCF_AUX_TABLE_5[] = { 0x1C4, 0x1C5 }; -static const U32 IVCF_AUX_TABLE_5[] = { +static const U32 IVCF_AUX_TABLE_6[] = { 0x1C7, 0x1C8 }; -static const U32 IVCF_AUX_TABLE_6[] = { +static const U32 IVCF_AUX_TABLE_7[] = { 0x1CA, 0x1CB }; -static const U32 IVCF_AUX_TABLE_7[] = { +static const U32 IVCF_AUX_TABLE_8[] = { 0x1F1, 0x1F2 }; -static const U32 IVCF_AUX_TABLE_8[] = { +static const U32 IVCF_AUX_TABLE_9[] = { 0x392, 0x3D0 }; -static const U32 IVCF_AUX_TABLE_9[] = { +static const U32 IVCF_AUX_TABLE_10[] = { 0x395, 0x3F5 }; -static const U32 IVCF_AUX_TABLE_10[] = { +static const U32 IVCF_AUX_TABLE_11[] = { 0x398, 0x3D1, 0x3F4 }; -static const U32 IVCF_AUX_TABLE_11[] = { +static const U32 IVCF_AUX_TABLE_12[] = { 0x345, 0x399, 0x1FBE }; -static const U32 IVCF_AUX_TABLE_12[] = { +static const U32 IVCF_AUX_TABLE_13[] = { 0x39A, 0x3F0 }; -static const U32 IVCF_AUX_TABLE_13[] = { +static const U32 IVCF_AUX_TABLE_14[] = { 0xA0, 0x39C }; -static const U32 IVCF_AUX_TABLE_14[] = { +static const U32 IVCF_AUX_TABLE_15[] = { 0x3A0, 0x3D6 }; -static const U32 IVCF_AUX_TABLE_15[] = { +static const U32 IVCF_AUX_TABLE_16[] = { 0x3A1, 0x3F1 }; -static const U32 IVCF_AUX_TABLE_16[] = { +static const U32 IVCF_AUX_TABLE_17[] = { 0x3A3, 0x3C2 }; -static const U32 IVCF_AUX_TABLE_17[] = { +static const U32 IVCF_AUX_TABLE_18[] = { 0x3A6, 0x3D5 }; -static const U32 IVCF_AUX_TABLE_18[] = { +static const U32 IVCF_AUX_TABLE_19[] = { 0x3A9, 0x2126 }; -static const U32 IVCF_AUX_TABLE_19[] = { +static const U32 IVCF_AUX_TABLE_20[] = { 0x412, 0x1C80 }; -static const U32 IVCF_AUX_TABLE_20[] = { +static const U32 IVCF_AUX_TABLE_21[] = { 0x414, 0x1C81 }; -static const U32 IVCF_AUX_TABLE_21[] = { +static const U32 IVCF_AUX_TABLE_22[] = { 0x41E, 0x1C82 }; -static const U32 IVCF_AUX_TABLE_22[] = { +static const U32 IVCF_AUX_TABLE_23[] = { 0x421, 0x1C83 }; -static const U32 IVCF_AUX_TABLE_23[] = { +static const U32 IVCF_AUX_TABLE_24[] = { 0x422, 0x1C84, 0x1C85 }; -static const U32 IVCF_AUX_TABLE_24[] = { +static const U32 IVCF_AUX_TABLE_25[] = { 0x42A, 0x1C86 }; -static const U32 IVCF_AUX_TABLE_25[] = { +static const U32 IVCF_AUX_TABLE_26[] = { 0x462, 0x1C87 }; -static const U32 IVCF_AUX_TABLE_26[] = { +static const U32 IVCF_AUX_TABLE_27[] = { 0x1E60, 0x1E9B }; -static const U32 IVCF_AUX_TABLE_27[] = { +static const U32 IVCF_AUX_TABLE_28[] = { 0x1C88, 0xA64A }; @@ -34081,7 +34101,8 @@ IVCF_AUX_TABLE_24, IVCF_AUX_TABLE_25, IVCF_AUX_TABLE_26, - IVCF_AUX_TABLE_27 + IVCF_AUX_TABLE_27, + IVCF_AUX_TABLE_28 }; /* Parallel table to the above, giving the number of elements in each table @@ -34098,9 +34119,9 @@ 2 /* IVCF_AUX_TABLE_7 */, 2 /* IVCF_AUX_TABLE_8 */, 2 /* IVCF_AUX_TABLE_9 */, - 3 /* IVCF_AUX_TABLE_10 */, + 2 /* IVCF_AUX_TABLE_10 */, 3 /* IVCF_AUX_TABLE_11 */, - 2 /* IVCF_AUX_TABLE_12 */, + 3 /* IVCF_AUX_TABLE_12 */, 2 /* IVCF_AUX_TABLE_13 */, 2 /* IVCF_AUX_TABLE_14 */, 2 /* IVCF_AUX_TABLE_15 */, @@ -34111,11 +34132,12 @@ 2 /* IVCF_AUX_TABLE_20 */, 2 /* IVCF_AUX_TABLE_21 */, 2 /* IVCF_AUX_TABLE_22 */, - 3 /* IVCF_AUX_TABLE_23 */, - 2 /* IVCF_AUX_TABLE_24 */, + 2 /* IVCF_AUX_TABLE_23 */, + 3 /* IVCF_AUX_TABLE_24 */, 2 /* IVCF_AUX_TABLE_25 */, 2 /* IVCF_AUX_TABLE_26 */, - 2 /* IVCF_AUX_TABLE_27 */ + 2 /* IVCF_AUX_TABLE_27 */, + 2 /* IVCF_AUX_TABLE_28 */ }; static const I32 _Perl_IVCF_invmap[] = { /* for EBCDIC 1047 */ @@ -34142,6 +34164,8 @@ 0x9E, 0, IVCF_use_AUX_TABLE_3, + 0, + IVCF_use_AUX_TABLE_4, 0xE3, 0, 0xEB, @@ -34312,12 +34336,12 @@ 0, 0x1F7, 0, - IVCF_use_AUX_TABLE_4, - 0, IVCF_use_AUX_TABLE_5, 0, IVCF_use_AUX_TABLE_6, 0, + IVCF_use_AUX_TABLE_7, + 0, 0x1CD, 0, 0x1CF, @@ -34353,7 +34377,7 @@ 0, 0x1EE, 0, - IVCF_use_AUX_TABLE_7, + IVCF_use_AUX_TABLE_8, 0, 0x1F4, 0, @@ -34496,24 +34520,24 @@ 0x388, 0x1FE3, 0x391, - IVCF_use_AUX_TABLE_8, - 0x393, IVCF_use_AUX_TABLE_9, - 0x396, + 0x393, IVCF_use_AUX_TABLE_10, + 0x396, IVCF_use_AUX_TABLE_11, IVCF_use_AUX_TABLE_12, - 0x39B, IVCF_use_AUX_TABLE_13, - 0x39D, + 0x39B, IVCF_use_AUX_TABLE_14, + 0x39D, IVCF_use_AUX_TABLE_15, - 0, IVCF_use_AUX_TABLE_16, - 0x3A4, + 0, IVCF_use_AUX_TABLE_17, - 0x3A7, + 0x3A4, IVCF_use_AUX_TABLE_18, + 0x3A7, + IVCF_use_AUX_TABLE_19, 0x3AA, 0x38C, 0x38E, @@ -34552,22 +34576,22 @@ 0x3FA, 0, 0x410, - IVCF_use_AUX_TABLE_19, - 0x413, IVCF_use_AUX_TABLE_20, - 0x415, + 0x413, IVCF_use_AUX_TABLE_21, - 0x41F, + 0x415, IVCF_use_AUX_TABLE_22, + 0x41F, IVCF_use_AUX_TABLE_23, - 0x423, IVCF_use_AUX_TABLE_24, + 0x423, + IVCF_use_AUX_TABLE_25, 0x42B, 0x400, 0, 0x460, 0, - IVCF_use_AUX_TABLE_25, + IVCF_use_AUX_TABLE_26, 0, 0x464, 0, @@ -34875,7 +34899,7 @@ 0, 0x1E5E, 0, - IVCF_use_AUX_TABLE_26, + IVCF_use_AUX_TABLE_27, 0, 0x1E62, 0, @@ -35230,7 +35254,7 @@ 0, 0xA648, 0, - IVCF_use_AUX_TABLE_27, + IVCF_use_AUX_TABLE_28, 0, 0xA64C, 0, @@ -35464,7 +35488,7 @@ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV _Perl_IVCF_invlist[] = { /* for EBCDIC 037 */ - 1329, /* Number of elements */ + 1331, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -35488,6 +35512,8 @@ 0x9A, 0x9C, 0x9D, + 0xA0, + 0xA1, 0xA2, 0xA3, 0xAA, @@ -36842,7 +36868,8 @@ IVCF_use_AUX_TABLE_24 = -24, IVCF_use_AUX_TABLE_25 = -25, IVCF_use_AUX_TABLE_26 = -26, - IVCF_use_AUX_TABLE_27 = -27 + IVCF_use_AUX_TABLE_27 = -27, + IVCF_use_AUX_TABLE_28 = -28 } IVCF_enum; #define HAS_IVCF_AUX_TABLES @@ -36858,129 +36885,134 @@ }; static const U32 IVCF_AUX_TABLE_3[] = { + 0x39C, + 0x3BC +}; + +static const U32 IVCF_AUX_TABLE_4[] = { 0xE2, 0x17F }; -static const U32 IVCF_AUX_TABLE_4[] = { +static const U32 IVCF_AUX_TABLE_5[] = { 0x1C4, 0x1C5 }; -static const U32 IVCF_AUX_TABLE_5[] = { +static const U32 IVCF_AUX_TABLE_6[] = { 0x1C7, 0x1C8 }; -static const U32 IVCF_AUX_TABLE_6[] = { +static const U32 IVCF_AUX_TABLE_7[] = { 0x1CA, 0x1CB }; -static const U32 IVCF_AUX_TABLE_7[] = { +static const U32 IVCF_AUX_TABLE_8[] = { 0x1F1, 0x1F2 }; -static const U32 IVCF_AUX_TABLE_8[] = { +static const U32 IVCF_AUX_TABLE_9[] = { 0x392, 0x3D0 }; -static const U32 IVCF_AUX_TABLE_9[] = { +static const U32 IVCF_AUX_TABLE_10[] = { 0x395, 0x3F5 }; -static const U32 IVCF_AUX_TABLE_10[] = { +static const U32 IVCF_AUX_TABLE_11[] = { 0x398, 0x3D1, 0x3F4 }; -static const U32 IVCF_AUX_TABLE_11[] = { +static const U32 IVCF_AUX_TABLE_12[] = { 0x345, 0x399, 0x1FBE }; -static const U32 IVCF_AUX_TABLE_12[] = { +static const U32 IVCF_AUX_TABLE_13[] = { 0x39A, 0x3F0 }; -static const U32 IVCF_AUX_TABLE_13[] = { +static const U32 IVCF_AUX_TABLE_14[] = { 0xA0, 0x39C }; -static const U32 IVCF_AUX_TABLE_14[] = { +static const U32 IVCF_AUX_TABLE_15[] = { 0x3A0, 0x3D6 }; -static const U32 IVCF_AUX_TABLE_15[] = { +static const U32 IVCF_AUX_TABLE_16[] = { 0x3A1, 0x3F1 }; -static const U32 IVCF_AUX_TABLE_16[] = { +static const U32 IVCF_AUX_TABLE_17[] = { 0x3A3, 0x3C2 }; -static const U32 IVCF_AUX_TABLE_17[] = { +static const U32 IVCF_AUX_TABLE_18[] = { 0x3A6, 0x3D5 }; -static const U32 IVCF_AUX_TABLE_18[] = { +static const U32 IVCF_AUX_TABLE_19[] = { 0x3A9, 0x2126 }; -static const U32 IVCF_AUX_TABLE_19[] = { +static const U32 IVCF_AUX_TABLE_20[] = { 0x412, 0x1C80 }; -static const U32 IVCF_AUX_TABLE_20[] = { +static const U32 IVCF_AUX_TABLE_21[] = { 0x414, 0x1C81 }; -static const U32 IVCF_AUX_TABLE_21[] = { +static const U32 IVCF_AUX_TABLE_22[] = { 0x41E, 0x1C82 }; -static const U32 IVCF_AUX_TABLE_22[] = { +static const U32 IVCF_AUX_TABLE_23[] = { 0x421, 0x1C83 }; -static const U32 IVCF_AUX_TABLE_23[] = { +static const U32 IVCF_AUX_TABLE_24[] = { 0x422, 0x1C84, 0x1C85 }; -static const U32 IVCF_AUX_TABLE_24[] = { +static const U32 IVCF_AUX_TABLE_25[] = { 0x42A, 0x1C86 }; -static const U32 IVCF_AUX_TABLE_25[] = { +static const U32 IVCF_AUX_TABLE_26[] = { 0x462, 0x1C87 }; -static const U32 IVCF_AUX_TABLE_26[] = { +static const U32 IVCF_AUX_TABLE_27[] = { 0x1E60, 0x1E9B }; -static const U32 IVCF_AUX_TABLE_27[] = { +static const U32 IVCF_AUX_TABLE_28[] = { 0x1C88, 0xA64A }; @@ -37013,7 +37045,8 @@ IVCF_AUX_TABLE_24, IVCF_AUX_TABLE_25, IVCF_AUX_TABLE_26, - IVCF_AUX_TABLE_27 + IVCF_AUX_TABLE_27, + IVCF_AUX_TABLE_28 }; /* Parallel table to the above, giving the number of elements in each table @@ -37030,9 +37063,9 @@ 2 /* IVCF_AUX_TABLE_7 */, 2 /* IVCF_AUX_TABLE_8 */, 2 /* IVCF_AUX_TABLE_9 */, - 3 /* IVCF_AUX_TABLE_10 */, + 2 /* IVCF_AUX_TABLE_10 */, 3 /* IVCF_AUX_TABLE_11 */, - 2 /* IVCF_AUX_TABLE_12 */, + 3 /* IVCF_AUX_TABLE_12 */, 2 /* IVCF_AUX_TABLE_13 */, 2 /* IVCF_AUX_TABLE_14 */, 2 /* IVCF_AUX_TABLE_15 */, @@ -37043,11 +37076,12 @@ 2 /* IVCF_AUX_TABLE_20 */, 2 /* IVCF_AUX_TABLE_21 */, 2 /* IVCF_AUX_TABLE_22 */, - 3 /* IVCF_AUX_TABLE_23 */, - 2 /* IVCF_AUX_TABLE_24 */, + 2 /* IVCF_AUX_TABLE_23 */, + 3 /* IVCF_AUX_TABLE_24 */, 2 /* IVCF_AUX_TABLE_25 */, 2 /* IVCF_AUX_TABLE_26 */, - 2 /* IVCF_AUX_TABLE_27 */ + 2 /* IVCF_AUX_TABLE_27 */, + 2 /* IVCF_AUX_TABLE_28 */ }; static const I32 _Perl_IVCF_invmap[] = { /* for EBCDIC 037 */ @@ -37072,6 +37106,8 @@ 0x9E, 0, IVCF_use_AUX_TABLE_3, + 0, + IVCF_use_AUX_TABLE_4, 0xE3, 0, 0xEB, @@ -37242,12 +37278,12 @@ 0, 0x1F7, 0, - IVCF_use_AUX_TABLE_4, - 0, IVCF_use_AUX_TABLE_5, 0, IVCF_use_AUX_TABLE_6, 0, + IVCF_use_AUX_TABLE_7, + 0, 0x1CD, 0, 0x1CF, @@ -37283,7 +37319,7 @@ 0, 0x1EE, 0, - IVCF_use_AUX_TABLE_7, + IVCF_use_AUX_TABLE_8, 0, 0x1F4, 0, @@ -37426,24 +37462,24 @@ 0x388, 0x1FE3, 0x391, - IVCF_use_AUX_TABLE_8, - 0x393, IVCF_use_AUX_TABLE_9, - 0x396, + 0x393, IVCF_use_AUX_TABLE_10, + 0x396, IVCF_use_AUX_TABLE_11, IVCF_use_AUX_TABLE_12, - 0x39B, IVCF_use_AUX_TABLE_13, - 0x39D, + 0x39B, IVCF_use_AUX_TABLE_14, + 0x39D, IVCF_use_AUX_TABLE_15, - 0, IVCF_use_AUX_TABLE_16, - 0x3A4, + 0, IVCF_use_AUX_TABLE_17, - 0x3A7, + 0x3A4, IVCF_use_AUX_TABLE_18, + 0x3A7, + IVCF_use_AUX_TABLE_19, 0x3AA, 0x38C, 0x38E, @@ -37482,22 +37518,22 @@ 0x3FA, 0, 0x410, - IVCF_use_AUX_TABLE_19, - 0x413, IVCF_use_AUX_TABLE_20, - 0x415, + 0x413, IVCF_use_AUX_TABLE_21, - 0x41F, + 0x415, IVCF_use_AUX_TABLE_22, + 0x41F, IVCF_use_AUX_TABLE_23, - 0x423, IVCF_use_AUX_TABLE_24, + 0x423, + IVCF_use_AUX_TABLE_25, 0x42B, 0x400, 0, 0x460, 0, - IVCF_use_AUX_TABLE_25, + IVCF_use_AUX_TABLE_26, 0, 0x464, 0, @@ -37805,7 +37841,7 @@ 0, 0x1E5E, 0, - IVCF_use_AUX_TABLE_26, + IVCF_use_AUX_TABLE_27, 0, 0x1E62, 0, @@ -38160,7 +38196,7 @@ 0, 0xA648, 0, - IVCF_use_AUX_TABLE_27, + IVCF_use_AUX_TABLE_28, 0, 0xA64C, 0, @@ -419864,9 +419900,9 @@ * baba9dfc133e3cb770a89aaf0973b1341fa61c2da6c176baf6428898b3b568d8 lib/unicore/extracted/DLineBreak.txt * 6d4a8c945dd7db83ed617cbb7d937de7f4ecf016ff22970d846e996a7c9a2a5d lib/unicore/extracted/DNumType.txt * 5b7c14380d5cceeaffcfbc18db1ed936391d2af2d51f5a41f1a17b692c77e59b lib/unicore/extracted/DNumValues.txt - * ee0dd174fd5b158d82dfea95d7d822ca0bfcd490182669353dca3ab39a8ee807 lib/unicore/mktables + * 28076ceb3f4e2514ea9db243f4b918b9a7c2807b036237e2276b99b2659d9474 lib/unicore/mktables * 50b85a67451145545a65cea370dab8d3444fbfe07e9c34cef560c5b7da9d3eef lib/unicore/version - * 2680b9254eb236c5c090f11b149605043e8c8433661b96efc4a42fb4709342a5 regen/charset_translations.pl - * 6bbad21de0848e0236b02f34f5fa0edd3cdae9ba8173cc9469a5513936b9e728 regen/mk_PL_charclass.pl - * 7a7e778e903508b1c244a77bae57ec57606ab775bb5f81719dbb122eb66d4259 regen/mk_invlists.pl + * 24120d5e0c9685c442c93bc1dbea9b85ef973bf8e9474baf0e55b160c288226b regen/charset_translations.pl + * 9f74e34278592ddf58fef8c32236b294e94ea5e12627f911f4563e8040a07292 regen/mk_PL_charclass.pl + * 5eb9e6c825496cc9aa705e3cd33bc6d5a9657dcca16d4c4acc4824ff30b34a26 regen/mk_invlists.pl * ex: set ro: */ diff -Nru perl-5.32.1/config_h.SH perl-5.34.0/config_h.SH --- perl-5.32.1/config_h.SH 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/config_h.SH 2021-02-21 11:01:31.000000000 +0000 @@ -255,7 +255,7 @@ /* HAS_MBLEN: * This symbol, if defined, indicates that the mblen routine is available - * to find the number of bytes in a multibye character. + * to find the number of bytes in a multibyte character. */ #$d_mblen HAS_MBLEN /**/ @@ -1767,6 +1767,8 @@ * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE + * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN + * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN * LONG_DOUBLE_IS_VAX_H_FLOAT * LONG_DOUBLE_IS_UNKNOWN_FORMAT * It is only defined if the system supports long doubles. @@ -2004,11 +2006,11 @@ * This symbol, if defined, indicates that the union semun is * defined by including . If not, the user code * probably needs to define it as: - * union semun { + * union semun { * int val; * struct semid_ds *buf; * unsigned short *array; - * } + * } */ /* USE_SEMCTL_SEMUN: * This symbol, if defined, indicates that union semun is @@ -3019,7 +3021,7 @@ /* HAS_MEMMEM: * This symbol, if defined, indicates that the memmem routine is - * available to return a pointer to the start of the first occurance + * available to return a pointer to the start of the first occurrence * of a substring in a memory area (or NULL if not found). * In glibc, memmem is a GNU extension. The function is visible in * libc, but the prototype is only visible if _GNU_SOURCE is #defined. @@ -4247,6 +4249,12 @@ */ #$usecbacktrace USE_C_BACKTRACE /**/ +/* USE_STRICT_BY_DEFAULT: + * This symbol, if defined, enables additional defaults. + * At this time it only enables implicit strict by default. + */ +#$usedefaultstrict USE_STRICT_BY_DEFAULT /* use strict by default */ + /* USE_DTRACE: * This symbol, if defined, indicates that Perl should * be built with support for DTrace. @@ -4567,6 +4575,19 @@ #$d_endservent_r HAS_ENDSERVENT_R /**/ #define ENDSERVENT_R_PROTO $endservent_r_proto /**/ +/* GETENV_PRESERVES_OTHER_THREAD: + * This symbol, if defined, indicates that the getenv system call doesn't + * zap the static buffer of getenv() in a different thread. + * + * The typical getenv() implementation will return a pointer to the proper + * position in **environ. But some may instead copy them to a static + * buffer in getenv(). If there is a per-thread instance of that buffer, + * or the return points to **environ, then a many-reader/1-writer mutex + * will work; otherwise an exclusive locking mutex is required to prevent + * races. + */ +#$d_getenv_preserves_other_thread GETENV_PRESERVES_OTHER_THREAD /**/ + /* HAS_GETGRENT_R: * This symbol, if defined, indicates that the getgrent_r routine * is available to getgrent re-entrantly. @@ -4863,6 +4884,9 @@ #define L_R_TZSET #endif +/* L_R_TZSET: + * If localtime_r() needs tzset, it is defined in this define + */ /* LOCALTIME_R_PROTO: * This symbol encodes the prototype of localtime_r. * It is zero if d_localtime_r is undef, and one of the @@ -5154,10 +5178,11 @@ * This symbol, if defined, indicates that Perl should be built to * use the interpreter-based threading implementation. */ -/* USE_5005THREADS: - * This symbol, if defined, indicates that Perl should be built to - * use the 5.005-based threading implementation. - * Only valid up to 5.8.x. +/* USE_THREADS: + * This symbol, if defined, indicates that Perl should + * be built to use threads. At present, it is a synonym for + * and USE_ITHREADS, but eventually the source ought to be + * changed to use this to mean _any_ threading implementation. */ /* OLD_PTHREADS_API: * This symbol, if defined, indicates that Perl should @@ -5168,11 +5193,8 @@ * try to use the various _r versions of library functions. * This is extremely experimental. */ -#$use5005threads USE_5005THREADS /**/ #$useithreads USE_ITHREADS /**/ -#if defined(USE_5005THREADS) && !defined(USE_ITHREADS) -#define USE_THREADS /* until src is revised*/ -#endif +#$usethreads USE_THREADS /**/ #$d_oldpthreads OLD_PTHREADS_API /**/ #$usereentrant USE_REENTRANT_API /**/ diff -Nru perl-5.32.1/configpm perl-5.34.0/configpm --- perl-5.32.1/configpm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/configpm 2021-01-20 23:04:44.000000000 +0000 @@ -856,7 +856,7 @@ ENDOFTIE -open(CONFIG_POD, '>', $Config_POD) or die "Can't open $Config_POD: $!"; +open(CONFIG_POD, '>:raw', $Config_POD) or die "Can't open $Config_POD: $!"; print CONFIG_POD <<'ENDOFTAIL'; =head1 NAME @@ -1255,7 +1255,6 @@ ptrsize: 185 shrpenv: 185 static_ext: 185 -use5005threads: 185 uselargefiles: 185 alignbytes: 184 byteorder: 184 diff -Nru perl-5.32.1/Configure perl-5.34.0/Configure --- perl-5.32.1/Configure 2020-12-26 15:27:04.000000000 +0000 +++ perl-5.34.0/Configure 2021-05-04 06:52:48.000000000 +0000 @@ -16,7 +16,7 @@ # you should use metaconfig. Perl uses a modified version of this # tool, and this, together with the metaconfig units, are available # in the git repository: -# $ git clone https://github.com/perl5-metaconfig/metaconfig metaconfig +# $ git clone https://github.com/Perl/metaconfig metaconfig # The original dist package (including metaconfig) is available on github: # $ git clone https://github.com/rmanfredi/dist.git dist-git # @@ -365,6 +365,7 @@ cf_time='' charbits='' charsize='' +compiler_warning='' contains='' cpp_stuff='' cpplast='' @@ -513,6 +514,7 @@ d_Gconvert='' d_getaddrinfo='' d_getcwd='' +d_getenv_preserves_other_thread='' d_getespwnam='' d_getfsstat='' d_getgrent='' @@ -1334,6 +1336,7 @@ use64bitall='' use64bitint='' usecbacktrace='' +usedefaultstrict='' dtrace='' usedtrace='' usefaststdio='' @@ -1354,7 +1357,6 @@ usequadmath='' usesocks='' d_oldpthreads='' -use5005threads='' useithreads='' usereentrant='' usethreads='' @@ -1832,8 +1834,8 @@ -r : reuse C symbols value if possible (skips costly nm extraction). -s : silent mode, only echoes questions and essential information. -D : define symbol to have some value: - -D symbol symbol gets the value 'define' - -D symbol=value symbol gets the value 'value' + -D symbol symbol gets the value 'define' + -D symbol='some value' symbol is set to 'some value' common used examples (see INSTALL for more info): -Duse64bitint use 64bit integers -Duse64bitall use 64bit integers and pointers @@ -1922,12 +1924,13 @@ : the following should work in any shell case "$contains" in contains*) - echo " " - echo "AGH! Grep doesn't return a status. Attempting remedial action." + echo " " >&4 + echo "AGH! Grep doesn't return a status. Attempting remedial action." >&4 cat >contains <<'EOSS' grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp EOSS -chmod +x contains +contains=./contains +chmod +x $contains esac : Find the path to the source tree @@ -4335,65 +4338,12 @@ *) eval "$var=$val";; esac' -: get the patchlevel -echo " " -echo "Getting the current patchlevel..." >&4 -if $test -r $rsrc/patchlevel.h;then - revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h` - patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h` - subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h` - api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h` - api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h` - api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h` - perl_patchlevel=`egrep ',"(MAINT|SMOKE)[0-9][0-9]*"' $rsrc/patchlevel.h|tail -1|sed 's/[^0-9]//g'` -else - revision=0 - patchlevel=0 - subversion=0 - api_revision=0 - api_version=0 - api_subversion=0 - perl_patchlevel=0 - $echo "(You do not have patchlevel.h. Eek.)" -fi -: Define a handy string here to avoid duplication in myconfig.SH and configpm. -version_patchlevel_string="version $patchlevel subversion $subversion" -case "$perl_patchlevel" in -0|'') ;; -*) perl_patchlevel=`echo $perl_patchlevel | sed 's/.* //'` - version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" - ;; -esac - -$echo "(You have $package $version_patchlevel_string.)" - -case "$osname" in -dos|vms) - : XXX Should be a Configure test for double-dots in filenames. - version=`echo $revision $patchlevel $subversion | \ - $awk '{ printf "%d_%d_%d", $1, $2, $3 }'` - api_versionstring=`echo $api_revision $api_version $api_subversion | \ - $awk '{ printf "%d_%d_%d", $1, $2, $3 }'` - ;; -*) - version=`echo $revision $patchlevel $subversion | \ - $awk '{ printf "%d.%d.%d", $1, $2, $3 }'` - api_versionstring=`echo $api_revision $api_version $api_subversion | \ - $awk '{ printf "%d.%d.%d", $1, $2, $3 }'` - ;; -esac -: Special case the 5.005_xx maintenance series, which used 5.005 -: without any subversion label as a subdirectory in $sitelib -if test "${api_revision}${api_version}${api_subversion}" = "550"; then - api_versionstring='5.005' -fi - : Do we want threads support and if so, what type case "$usethreads" in $define|true|[yY]*) dflt='y';; -*) # Catch case where user specified ithreads or 5005threads but +*) # Catch case where user specified ithreads but # forgot -Dusethreads (A.D. 4/2002) - case "$useithreads$use5005threads" in + case "$useithreads" in *$define*) dflt='y';; *) dflt='n';; esac @@ -4418,74 +4368,7 @@ set usethreads eval $setvar -if $test $patchlevel -lt 9; then - case "$usethreads" in - $define) - : Default to ithreads unless overridden on command line or with - : old config.sh - dflt='y' - case "$use5005threads" in - $define|true|[yY]*) - echo "5.005 threads are no longer supported" - exit 1 - ;; - esac - case "$useithreads" in - $undef|false|[nN]*) dflt='n';; - esac - rp='Use the newer interpreter-based ithreads?' - . ./myread - case "$ans" in - y|Y) val="$define" ;; - *) val="$undef" ;; - esac - set useithreads - eval $setvar - : Now set use5005threads to the opposite value. - case "$useithreads" in - $define) val="$undef" ;; - *) val="$define" ;; - esac - set use5005threads - eval $setvar - ;; - *) - useithreads="$undef" - use5005threads="$undef" - ;; - esac - - case "$useithreads$use5005threads" in - "$define$define") - $cat >&4 <&4 </dev/null | sed 's/no realpath in.*//'` $echo 'extern int foo;' > try.c set X `$cppstdin -v try.c 2>&1 | $awk '/^#include &1 + ;; + *) case "$gccversion" in + ?*) set stack-protector-strong -fstack-protector-strong + eval $checkccflag + case "$dflt" in + *-fstack-protector-strong*) ;; # It got added. + *) # Try the plain/older -fstack-protector. + set stack-protector -fstack-protector + eval $checkccflag + ;; esac ;; + esac + ;; esac - ;; esac case "$mips_type" in @@ -6909,16 +6801,16 @@ $rm_try : check for long doubles -echo " " +echo " " >&4 echo "Checking to see if you have long double..." >&4 echo 'int main() { long double x = 7.0; }' > try.c set try if eval $compile; then val="$define" - echo "You have long double." + echo "You have long double." >&4 else val="$undef" - echo "You do not have long double." + echo "You do not have long double." >&4 fi $rm_try set d_longdbl @@ -6931,7 +6823,7 @@ : check for length of long double case "${d_longdbl}${longdblsize}" in $define) - echo " " + echo " " >&4 echo "Checking to see how big your long doubles are..." >&4 $cat >try.c <<'EOCP' #include @@ -6944,19 +6836,19 @@ set try if eval $compile; then longdblsize=`$run ./try` - echo "Your long doubles are $longdblsize bytes long." + echo "Your long doubles are $longdblsize bytes long." >&4 else dflt='8' - echo " " + echo " " >&4 echo "(I can't seem to compile the test program. Guessing...)" >&4 rp="What is the size of a long double (in bytes)?" . ./myread longdblsize="$ans" fi if $test "X$doublesize" = "X$longdblsize"; then - echo "That isn't any different from an ordinary double." - echo "I'll keep your setting anyway, but you may see some" - echo "harmless compilation warnings." + echo "That isn't any different from an ordinary double." >&4 + echo "I'll keep your setting anyway, but you may see some" >&4 + echo "harmless compilation warnings." >&4 fi ;; esac @@ -7010,9 +6902,9 @@ * The Motorola 68881 had another "extended precision" format: * sign:1 exp:15 zero:16 integer:1 mantissa:63 * for total of 96 bits of bytes. The zero bits were unused. - * See "M68000 FAMILY PROGRAMMER’S REFERENCE MANUAL" for more details. - * If it ever becomes relevant, this format should be allocated - * a new doublekind code since it's quite different from the Intel x87. + * See "M68000 FAMILY PROGRAMMER'S REFERENCE MANUAL" for more details. + * If it ever becomes relevant, this format should be allocated a + * new doublekind code since it is quite different from the Intel x87. */ printf("4\n"); exit(0); @@ -7079,13 +6971,13 @@ 0) echo "Your long doubles are doubles." >&4 ;; 1) echo "You have IEEE 754 128-bit little endian long doubles." >&4 ;; 2) echo "You have IEEE 754 128-bit big endian long doubles." >&4 ;; -3) echo "You have x86 80-bit little endian long doubles." >& 4 ;; -4) echo "You have x86 80-bit big endian long doubles." >& 4 ;; -5) echo "You have 128-bit fully little-endian double-double long doubles (64-bit LEs in LE)." >& 4 ;; -6) echo "You have 128-bit fully big-endian double-double long doubles (64-bit BEs in BE)." >& 4 ;; -7) echo "You have 128-bit mixed-endian double-double long doubles (64-bit LEs in BE)." >& 4 ;; -8) echo "You have 128-bit mixed-endian double-double long doubles (64-bit BEs in LE)." >& 4 ;; -9) echo "You have 128-bit PDP-style mixed-endian long doubles (VAX format H)." >& 4 ;; +3) echo "You have x86 80-bit little endian long doubles." >&4 ;; +4) echo "You have x86 80-bit big endian long doubles." >&4 ;; +5) echo "You have 128-bit fully little-endian double-double long doubles (64-bit LEs in LE)." >&4 ;; +6) echo "You have 128-bit fully big-endian double-double long doubles (64-bit BEs in BE)." >&4 ;; +7) echo "You have 128-bit mixed-endian double-double long doubles (64-bit LEs in BE)." >&4 ;; +8) echo "You have 128-bit mixed-endian double-double long doubles (64-bit BEs in LE)." >&4 ;; +9) echo "You have 128-bit PDP-style mixed-endian long doubles (VAX format H)." >&4 ;; *) echo "Cannot figure out your long double." >&4 ;; esac d_long_double_style_ieee=$undef @@ -7110,6 +7002,59 @@ esac $rm_try +: get the patchlevel +echo " " +echo "Getting the current patchlevel..." >&4 +if $test -r $rsrc/patchlevel.h;then + revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h` + patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h` + subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h` + api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h` + api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h` + api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h` + perl_patchlevel=`egrep ',"(MAINT|SMOKE)[0-9][0-9]*"' $rsrc/patchlevel.h|tail -1|sed 's/[^0-9]//g'` +else + revision=0 + patchlevel=0 + subversion=0 + api_revision=0 + api_version=0 + api_subversion=0 + perl_patchlevel=0 + $echo "(You do not have patchlevel.h. Eek.)" +fi +: Define a handy string here to avoid duplication in myconfig.SH and configpm. +version_patchlevel_string="version $patchlevel subversion $subversion" +case "$perl_patchlevel" in +0|'') ;; +*) perl_patchlevel=`echo $perl_patchlevel | sed 's/.* //'` + version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" + ;; +esac + +$echo "(You have $package $version_patchlevel_string.)" + +case "$osname" in +dos|vms) + : XXX Should be a Configure test for double-dots in filenames. + version=`echo $revision $patchlevel $subversion | \ + $awk '{ printf "%d_%d_%d", $1, $2, $3 }'` + api_versionstring=`echo $api_revision $api_version $api_subversion | \ + $awk '{ printf "%d_%d_%d", $1, $2, $3 }'` + ;; +*) + version=`echo $revision $patchlevel $subversion | \ + $awk '{ printf "%d.%d.%d", $1, $2, $3 }'` + api_versionstring=`echo $api_revision $api_version $api_subversion | \ + $awk '{ printf "%d.%d.%d", $1, $2, $3 }'` + ;; +esac +: Special case the 5.005_xx maintenance series, which used 5.005 +: without any subversion label as a subdirectory in $sitelib +if test "${api_revision}${api_version}${api_subversion}" = "550"; then + api_versionstring='5.005' +fi + : determine the architecture name echo " " if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then @@ -7623,37 +7568,39 @@ : Determine list of previous versions to include in @INC $cat > getverlist <> getverlist <<'EOPL' -# The list found is store twice for each entry: the original name, and -# the binary broken down version as pack "sss", so sorting is easy and -# unambiguous. This will work for all versions that have a maximum of -# three digit groups, separate by '.'s or '_'s. Names are extended with -# ".0.0" to ensure at least three elements for the pack. -# -- H.Merijn Brand (m)'06 23-10-2006 +# The list found is stored twice for each entry: the original name, and +# the binary broken down version into pack "s>s>s>", so sorting is easy +# and unambiguous. This will work for all versions that have a maximum +# of three digit per group separate by '.'s or '_'s. Names are extended +# with ".0.0" to ensure at least three elements for the pack. +# -- H.Merijn Brand (m)'06 23-10-2006 -# Can't have leading @ because metaconfig interprets it as a command! -;@inc_version_list=(); +my @inc_version_list; +my @candidates; # XXX Redo to do opendir/readdir? if (-d $stem) { chdir($stem); ;@candidates = map { - [ $_, pack "sss", split m/[._]/, "$_.0.0" ] } glob("5.*"); + [ $_, pack "s>s>s>", split m/[._]/, "$_.0.0" ] } glob("5.*"); ;@candidates = sort { $a->[1] cmp $b->[1]} @candidates; } else { ;@candidates = (); } -($pversion, $aversion, $vsn5005) = map { - pack "sss", split m/[._]/, "$_.0.0" } $version, $api_versionstring, "5.005"; -foreach $d (@candidates) { +my ($pversion, $aversion, $vsn5005) = map { + pack "s>s>s>", split m/[._]/, "$_.0.0" } $version, $api_versionstring, "5.005"; +foreach my $d (@candidates) { if ($d->[1] lt $pversion) { if ($d->[1] ge $aversion) { unshift(@inc_version_list, grep { -d } $d->[0]."/$archname", $d->[0]); @@ -10435,6 +10382,15 @@ } } +void lencheck(int expect, int got) +{ + if (expect != got) { + printf("%s length mismatch: Expected %d, got %d\n", + myname, expect, got); + exit(1); + } +} + int main() { char buf[64]; @@ -10507,6 +10463,12 @@ else checkit("1e+34", buf); + /* Test for an Ubuntu/Debian bug in gcvt and qgcvt. See: * + * https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1899553 */ + + Gconvert((DOUBLETYPE)0.4, 53, 0, buf); + lencheck(55, (int)strlen(buf)); + /* For Perl, if you add additional tests here, also add them to * t/base/num.t for benefit of platforms not using Configure or * overriding d_Gconvert */ @@ -10978,6 +10940,26 @@ set atoll d_atoll eval $inlibc +: See if a file contains compiler warnings +: See if a file contains compiler warnings +case "$osname" in + 'aix') + cat >compiler_warning <attrib.out 2>&1 ; then - if $contains 'warning' attrib.out >/dev/null 2>&1; then + if $compiler_warning attrib.out >/dev/null 2>&1; then echo "Your C compiler doesn't support __attribute__((format))." val="$undef" else @@ -11032,7 +11014,7 @@ if $cc $ccflags -o attrib attrib.c >attrib.out 2>&1 ; then : run the executable in case it produces a run-time warning if $run ./attrib >>attrib.out 2>&1; then - if $contains 'warning' attrib.out >/dev/null 2>&1; then + if $compiler_warning attrib.out >/dev/null 2>&1; then echo "Your C compiler doesn't allow __printf__ format to be null." val="$undef" else @@ -11067,7 +11049,7 @@ char *go_get_some_memory( int how_many_bytes ) __attribute__((malloc)); EOCP if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then - if $contains 'warning' attrib.out >/dev/null 2>&1; then + if $compiler_warning attrib.out >/dev/null 2>&1; then echo "Your C compiler doesn't support __attribute__((malloc))." val="$undef" else @@ -11095,7 +11077,7 @@ void do_something (char *some_pointer,...) __attribute__((nonnull(1))); EOCP if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then - if $contains 'warning' attrib.out >/dev/null 2>&1; then + if $compiler_warning attrib.out >/dev/null 2>&1; then echo "Your C compiler doesn't support __attribute__((nonnull))." val="$undef" else @@ -11123,7 +11105,7 @@ void fall_over_dead( void ) __attribute__((noreturn)); EOCP if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then - if $contains 'warning' attrib.out >/dev/null 2>&1; then + if $compiler_warning attrib.out >/dev/null 2>&1; then echo "Your C compiler doesn't support __attribute__((noreturn))." val="$undef" else @@ -11151,7 +11133,7 @@ int square( int n ) __attribute__((pure)); EOCP if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then - if $contains 'warning' attrib.out >/dev/null 2>&1; then + if $compiler_warning attrib.out >/dev/null 2>&1; then echo "Your C compiler doesn't support __attribute__((pure))." val="$undef" else @@ -11179,7 +11161,7 @@ int do_something( int dummy __attribute__((unused)), int n ); EOCP if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then - if $contains 'warning' attrib.out >/dev/null 2>&1; then + if $compiler_warning attrib.out >/dev/null 2>&1; then echo "Your C compiler doesn't support __attribute__((unused))." val="$undef" else @@ -11207,7 +11189,7 @@ int I_am_deprecated(void) __attribute__((deprecated)); EOCP if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then - if $contains 'warning' attrib.out >/dev/null 2>&1; then + if $compiler_warning attrib.out >/dev/null 2>&1; then echo "Your C compiler doesn't support __attribute__((deprecated))." val="$undef" else @@ -11235,7 +11217,7 @@ int I_will_not_be_ignored(void) __attribute__((warn_unused_result)); EOCP if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then - if $contains 'warning' attrib.out >/dev/null 2>&1; then + if $compiler_warning attrib.out >/dev/null 2>&1; then echo "Your C compiler doesn't support __attribute__((warn_unused_result))." val="$undef" else @@ -11263,7 +11245,7 @@ static __inline__ __attribute__((always_inline)) int I_will_always_be_inlined(void); EOCP if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then - if $contains 'warning' attrib.out >/dev/null 2>&1; then + if $compiler_warning attrib.out >/dev/null 2>&1; then echo "Your C compiler doesn't support __attribute__((always_inline))." val="$undef" else @@ -14248,6 +14230,86 @@ set getcwd d_getcwd eval $inlibc +: check for getenv behavior +case "$d_getenv_preserves_other_thread" in +'') +$echo "Checking to see if getenv() preserves a different thread's results" >&4 +$cat >try.c < +#endif +#include +#include +#$i_pthread I_PTHREAD +#ifdef I_PTHREAD +# include +#endif + +void * +thread_start(void * arg) +{ + (void *) getenv("HOME"); +} + +int main() { + char * main_buffer; + char save_main_buffer[1000]; + pthread_t subthread; + pthread_attr_t attr; + + main_buffer = getenv("PATH"); + + /* If too large for our generous allowance, return we couldn't figure it + * out. */ + if (strlen(main_buffer) >= sizeof(save_main_buffer)) { + exit(2); + } + + strcpy(save_main_buffer, main_buffer); + + if (pthread_attr_init(&attr) != 0) { + exit(2); + } + + if (pthread_create(&subthread, &attr, thread_start, NULL) != 0) { + exit(2); + } + + if (pthread_join(subthread, NULL) != 0) { + exit(2); + } + + exit(! strcmp(main_buffer, save_main_buffer) == 0); +} +EOCP +val= +set try +if eval $compile_ok; then + $run ./try + rc=$? + case "$rc" in + 0) echo "getenv() didn't destroy another thread's buffer" >&4 + val=$define + ;; + 1) echo "getenv() does destroy another thread's buffer" >&4 + val=$undef + ;; + *) echo "Couldn't determine if getenv() destroys another thread's return value (code=$rc); assuming it does" >&4 + val=$undef + ;; + esac +else + echo "(I can't seem to compile the test program.)" >&4 + echo "Assuming that your C library's getenv destroys another thread's return value." >&4 + val=$undef +fi +set d_getenv_preserves_other_thread +eval $setvar +$rm_try +;; +esac + : see if getespwnam exists set getespwnam d_getespwnam eval $inlibc @@ -16096,6 +16158,7 @@ #endif int main() { + int result = 0; time_t t = time(0L); char w_tz[]="TZ" "=GMT+5", e_tz[]="TZ" "=GMT-5", @@ -16114,8 +16177,10 @@ localtime_r(&t, &tm_w); if( memcmp(&tm_e, &tm_w, sizeof(struct tm)) == 0 ) - return 1; - return 0; + result = 1; + + free(tz_e);free(tz_w); + return result; } EOCP set try @@ -17854,7 +17919,9 @@ eval $inlibc : check for setlocale function and behavior -$cat <&4 <&4 - $run ./try - case $? in - 0) echo "and it seems sane" >&4 - d_setlocale="$define" - d_setlocale_accepts_any_locale_name="$undef" - d_has_C_UTF8="false" - ;; - 1) echo "and it seems sane, but accepts any locale name as valid" >&4 - d_setlocale="$define" - d_setlocale_accepts_any_locale_name="$define" - d_has_C_UTF8="false" - ;; - 2) echo "and it seems sane" >&4 - d_setlocale="$define" - d_setlocale_accepts_any_locale_name="$undef" - d_has_C_UTF8="true" - ;; - 3) echo "and it seems sane, but accepts any locale name as valid" >&4 - d_setlocale="$define" - d_setlocale_accepts_any_locale_name="$define" - d_has_C_UTF8="true" - ;; - *) echo "but it doesn't seem to work, so we won't use it." >&4 +val= +set d_setlocale +eval $setvar +case $d_setlocale in + $undef) d_setlocale_accepts_any_locale_name="$undef" + d_has_C_UTF8="false" + ;; + *) set try + if eval $compile; then + echo "Your system has setlocale()..." >&4 + $run ./try + case $? in + 0) echo "and it seems sane; you don't have a C.UTF8 locale" >&4 + d_setlocale="$define" + d_setlocale_accepts_any_locale_name="$undef" + d_has_C_UTF8="false" + ;; + 1) echo "and it seems sane, but accepts any locale name as valid" >&4 + d_setlocale="$define" + d_setlocale_accepts_any_locale_name="$define" + d_has_C_UTF8="false" + ;; + 2) echo "and it seems sane; you have a C.UTF8 locale" >&4 + d_setlocale="$define" + d_setlocale_accepts_any_locale_name="$undef" + d_has_C_UTF8="true" + ;; + 3) echo "and it seems sane, but accepts any locale name as valid" >&4 + d_setlocale="$define" + d_setlocale_accepts_any_locale_name="$define" + d_has_C_UTF8="true" + ;; + *) echo "but it doesn't seem to work, so we won't use it." >&4 + d_setlocale="$undef" + d_setlocale_accepts_any_locale_name="$undef" + d_has_C_UTF8="false" + ;; + esac + else + echo "your system does not have setlocale()" >&4 d_setlocale="$undef" d_setlocale_accepts_any_locale_name="$undef" d_has_C_UTF8="false" - ;; - esac -else - echo "your system does not have setlocale()" >&4 - d_setlocale="$undef" - d_setlocale_accepts_any_locale_name="$undef" - d_has_C_UTF8="false" -fi + fi +esac $rm_try +;; +*) val="$d_setlocale" + set d_setlocale + eval $setvar + case "$d_setlocale" in + $undef) echo "There may be other ways to set the locale on your system, so we need to ask:" >&4 + ;; + esac + rp="Does your system have the C.UTF8 locale?" + dflt=n + . ./myread + case "$ans" in + [Yy]*) d_has_C_UTF8="true" + c_utf8_locale=" or C.UTF8" + ;; + *) d_has_C_UTF8="false" + c_utf8_locale="" + ;; + esac + case "$d_setlocale" in + $define) + rp="When you set your locale to something besides C$c_utf8_locale, does it do so, or just pretend to?" >&4 + dflt=n + . ./myread + case "$ans" in + true|[Yy]*) + d_setlocale_accepts_any_locale_name="$undef" + ;; + *) d_setlocale_accepts_any_locale_name="$define" + ;; + esac + ;; + *) d_setlocale_accepts_any_locale_name="$undef" + ;; + esac +esac : see if setlocale_r exists set setlocale_r d_setlocale_r @@ -20248,7 +20359,7 @@ #endif EOCP if $cc $ccflags -c try.c >try.out 2>&1 ; then - if $contains warning try.out >>/dev/null 2>&1 ; then + if $compiler_warning try.out >>/dev/null 2>&1 ; then db_hashtype='int' else db_hashtype='u_int32_t' @@ -20288,7 +20399,7 @@ #endif EOCP if $cc $ccflags -c try.c >try.out 2>&1 ; then - if $contains warning try.out >>/dev/null 2>&1 ; then + if $compiler_warning try.out >>/dev/null 2>&1 ; then db_prefixtype='int' else db_prefixtype='size_t' @@ -22655,6 +22766,34 @@ ;; esac +: Ask about strict by default. +case "$usedefaultstrict" in + $define|true|[Yy]*) + dflt="y" + ;; + *) + dflt="n" + ;; + esac + +cat <&4 @@ -23634,14 +23773,6 @@ ;; esac ;; - Thread|thread) - case "$usethreads" in - true|$define|y) - case "$use5005threads" in - $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;; - esac - esac - ;; threads|threads/shared) # threads and threads::shared are special cases. # To stop people from asking "Perl 5.8.0 was supposed @@ -24046,6 +24177,7 @@ chown='$chown' clocktype='$clocktype' comm='$comm' +compiler_warning='$compiler_warning' compress='$compress' contains='$contains' cp='$cp' @@ -24223,6 +24355,7 @@ d_gdbmndbm_h_uses_prototypes='$d_gdbmndbm_h_uses_prototypes' d_getaddrinfo='$d_getaddrinfo' d_getcwd='$d_getcwd' +d_getenv_preserves_other_thread='$d_getenv_preserves_other_thread' d_getespwnam='$d_getespwnam' d_getfsstat='$d_getfsstat' d_getgrent='$d_getgrent' @@ -25113,11 +25246,11 @@ uname='$uname' uniq='$uniq' uquadtype='$uquadtype' -use5005threads='$use5005threads' use64bitall='$use64bitall' use64bitint='$use64bitint' usecbacktrace='$usecbacktrace' usecrosscompile='$usecrosscompile' +usedefaultstrict='$usedefaultstrict' usedevel='$usedevel' usedl='$usedl' usedtrace='$usedtrace' diff -Nru perl-5.32.1/configure.com perl-5.34.0/configure.com --- perl-5.32.1/configure.com 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/configure.com 2021-02-21 11:01:31.000000000 +0000 @@ -146,7 +146,6 @@ $ Dec_C_Version = "" $ cxxversion = "" $ use_threads = "F" -$ use_5005_threads = "N" $ use_ithreads = "N" $! $!: option parsing @@ -342,8 +341,8 @@ "-r" : reuse C symbols value if possible (skips costly nm extraction).* "-s" : silent mode, only echoes questions and essential information. -"D" : define symbol to have some value: * - -"Dsymbol" symbol gets the value 'define' - -"Dsymbol=value" symbol gets the value 'value' + -"Dsymbol" symbol gets the value 'define' + -"Dsymbol=some value" symbol is set to "some value" -E : stop at the end of questions, after having produced config.sh. * -K : do not use unless you know what you are doing. -O : let -D and -U override definitions from loaded configuration file. * @@ -2001,18 +2000,9 @@ $ then $ if useithreads .eqs. "undef" then bool_dflt="n" $ endif -$ if f$type(use5005threads) .nes. "" -$ then -$ if use5005threads .or. use5005threads .eqs. "define" -$ then -$ echo "5.005 threads are no longer supported" -$ exit 44 -$ endif -$ endif $ rp = "Use the newer interpreter-based ithreads? [''bool_dflt'] " $ GOSUB myread $ use_ithreads=ans -$ use_5005_threads="N" $ ! Are they on VMS 7.1 or greater? $ IF "''f$extract(1,3, f$getsyi(""version""))'" .GES. "7.1" $ THEN @@ -3437,7 +3427,6 @@ $! $! Now some that we build up $! -$ use5005threads = "undef" $ d_old_pthread_create_joinable = "undef" $ old_pthread_create_joinable = " " $ IF use_threads @@ -5614,6 +5603,7 @@ $ vms_cc_type="decc" $ ENDIF $ d_faststdio="define" +$ d_getenv_preserves_other_thread="define" $ d_locconv="define" $ d_mblen="define" $ d_mbstowcs="define" @@ -6409,6 +6399,7 @@ $ WC "d_nexttoward='" + d_nexttoward + "'" $ WC "d_nice='define'" $ WC "d_nl_langinfo='" + d_nl_langinfo + "'" +$ WC "d_getenv_preserves_other_thread='" + d_getenv_preserves_other_thread + "'" $ WC "d_nv_preserves_uv='" + d_nv_preserves_uv + "'" $ WC "nv_overflows_integers_at='" + nv_overflows_integers_at + "'" $ WC "nv_preserves_uv_bits='" + nv_preserves_uv_bits + "'" @@ -6995,11 +6986,11 @@ $ WC "uidsize='4'" $ WC "uidtype='" + uidtype + "'" $ WC "uquadtype='" + uquadtype + "'" -$ WC "use5005threads='" + use5005threads + "'" $ WC "use64bitall='" + use64bitall + "'" $ WC "use64bitint='" + use64bitint + "'" $ WC "usecasesensitive='" + be_case_sensitive + "'" ! VMS-specific $ WC "usedebugging_perl='"+use_debugging_perl+"'" +$ WC "usedefaultstrict='undef'" $ WC "usedefaulttypes='" + usedefaulttypes + "'" ! VMS-specific $ WC "usecbacktrace='undef'" $ WC "usecrosscompile='undef'" @@ -7284,6 +7275,7 @@ $ IF d_sockaddr_sa_len .EQS. "define" then WC "#define _SOCKADDR_LEN 1" $ IF ccname .EQS. "CXX" then WC "#define NO_ENVIRON_ARRAY" $ IF ccname .EQS. "CXX" then WC "#define VMS" ! only has __VMS by default +$ WC "#define _PTHREAD_EXC_INCL_CLEAN" ! avoid conflict between DECthreads TRY/CATCH and Perl TRY/CATCH $ CLOSE CONFIG $! $ echo4 "Doing variable substitutions on .SH files..." diff -Nru perl-5.32.1/cop.h perl-5.34.0/cop.h --- perl-5.32.1/cop.h 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cop.h 2021-05-04 06:52:48.000000000 +0000 @@ -166,12 +166,13 @@ } STMT_END /* -=head1 COP Hint Hashes +=for apidoc_section $COP */ typedef struct refcounted_he COPHH; #define COPHH_KEY_UTF8 REFCOUNTED_HE_KEY_UTF8 +#define COPHH_EXISTS REFCOUNTED_HE_EXISTS /* =for apidoc Amx|SV *|cophh_fetch_pvn|const COPHH *cophh|const char *keypv|STRLEN keylen|U32 hash|U32 flags @@ -229,6 +230,58 @@ Perl_refcounted_he_fetch_sv(aTHX_ cophh, key, hash, flags) /* +=for apidoc Amx|bool|cophh_exists_pvn|const COPHH *cophh|const char *keypv|STRLEN keylen|U32 hash|U32 flags + +Look up the entry in the cop hints hash C with the key specified by +C and C. If C has the C bit set, +the key octets are interpreted as UTF-8, otherwise they are interpreted +as Latin-1. C is a precomputed hash of the key string, or zero if +it has not been precomputed. Returns true if a value exists, and false +otherwise. + +=cut +*/ + +#define cophh_exists_pvn(cophh, keypv, keylen, hash, flags) \ + cBOOL(Perl_refcounted_he_fetch_pvn(aTHX_ cophh, keypv, keylen, hash, flags | COPHH_EXISTS)) + +/* +=for apidoc Amx|bool|cophh_exists_pvs|const COPHH *cophh|"key"|U32 flags + +Like L, but takes a literal string instead +of a string/length pair, and no precomputed hash. + +=cut +*/ + +#define cophh_exists_pvs(cophh, key, flags) \ + cBOOL(Perl_refcounted_he_fetch_pvn(aTHX_ cophh, STR_WITH_LEN(key), 0, flags | COPHH_EXISTS)) + +/* +=for apidoc Amx|bool|cophh_exists_pv|const COPHH *cophh|const char *key|U32 hash|U32 flags + +Like L, but takes a nul-terminated string instead of +a string/length pair. + +=cut +*/ + +#define cophh_exists_pv(cophh, key, hash, flags) \ + cBOOL(Perl_refcounted_he_fetch_pv(aTHX_ cophh, key, hash, flags | COPHH_EXISTS)) + +/* +=for apidoc Amx|bool|cophh_exists_sv|const COPHH *cophh|SV *key|U32 hash|U32 flags + +Like L, but takes a Perl scalar instead of a +string/length pair. + +=cut +*/ + +#define cophh_exists_sv(cophh, key, hash, flags) \ + cBOOL(Perl_refcounted_he_fetch_sv(aTHX_ cophh, key, hash, flags | COPHH_EXISTS)) + +/* =for apidoc Amx|HV *|cophh_2hv|const COPHH *cophh|U32 flags Generates and returns a standard Perl hash representing the full set of @@ -299,7 +352,7 @@ Perl_refcounted_he_new_pvn(aTHX_ cophh, keypv, keylen, hash, value, flags) /* -=for apidoc Amx|COPHH *|cophh_store_pvs|const COPHH *cophh|"key"|SV *value|U32 flags +=for apidoc Amx|COPHH *|cophh_store_pvs|COPHH *cophh|"key"|SV *value|U32 flags Like L, but takes a literal string instead of a string/length pair, and no precomputed hash. @@ -311,7 +364,7 @@ Perl_refcounted_he_new_pvn(aTHX_ cophh, STR_WITH_LEN(key), 0, value, flags) /* -=for apidoc Amx|COPHH *|cophh_store_pv|const COPHH *cophh|const char *key|U32 hash|SV *value|U32 flags +=for apidoc Amx|COPHH *|cophh_store_pv|COPHH *cophh|const char *key|U32 hash|SV *value|U32 flags Like L, but takes a nul-terminated string instead of a string/length pair. @@ -323,7 +376,7 @@ Perl_refcounted_he_new_pv(aTHX_ cophh, key, hash, value, flags) /* -=for apidoc Amx|COPHH *|cophh_store_sv|const COPHH *cophh|SV *key|U32 hash|SV *value|U32 flags +=for apidoc Amx|COPHH *|cophh_store_sv|COPHH *cophh|SV *key|U32 hash|SV *value|U32 flags Like L, but takes a Perl scalar instead of a string/length pair. @@ -356,7 +409,7 @@ (SV *)NULL, flags) /* -=for apidoc Amx|COPHH *|cophh_delete_pvs|const COPHH *cophh|"key"|U32 flags +=for apidoc Amx|COPHH *|cophh_delete_pvs|COPHH *cophh|"key"|U32 flags Like L, but takes a literal string instead of a string/length pair, and no precomputed hash. @@ -369,7 +422,7 @@ (SV *)NULL, flags) /* -=for apidoc Amx|COPHH *|cophh_delete_pv|const COPHH *cophh|const char *key|U32 hash|U32 flags +=for apidoc Amx|COPHH *|cophh_delete_pv|COPHH *cophh|char *key|U32 hash|U32 flags Like L, but takes a nul-terminated string instead of a string/length pair. @@ -381,7 +434,7 @@ Perl_refcounted_he_new_pv(aTHX_ cophh, key, hash, (SV *)NULL, flags) /* -=for apidoc Amx|COPHH *|cophh_delete_sv|const COPHH *cophh|SV *key|U32 hash|U32 flags +=for apidoc Amx|COPHH *|cophh_delete_sv|COPHH *cophh|SV *key|U32 hash|U32 flags Like L, but takes a Perl scalar instead of a string/length pair. @@ -403,10 +456,10 @@ #ifdef USE_ITHREADS PADOFFSET cop_stashoff; /* offset into PL_stashpad, for the package the line was compiled in */ - char * cop_file; /* file name the following line # is from */ + char * cop_file; /* name of file this command is from */ #else HV * cop_stash; /* package line was compiled in */ - GV * cop_filegv; /* file the following line # is from */ + GV * cop_filegv; /* name of GV file this command is from */ #endif U32 cop_hints; /* hints bits from pragmata */ U32 cop_seq; /* parse sequence number */ @@ -423,6 +476,49 @@ U32 cop_features; }; +/* +=for apidoc Am|const char *|CopFILE|const COP * c +Returns the name of the file associated with the C C + +=for apidoc Am|STRLEN|CopLINE|const COP * c +Returns the line number in the source code associated with the C C + +=for apidoc Am|AV *|CopFILEAV|const COP * c +Returns the AV associated with the C C + +=for apidoc Am|SV *|CopFILESV|const COP * c +Returns the SV associated with the C C + +=for apidoc Am|void|CopFILE_set|COP * c|const char * pv +Makes C the name of the file associated with the C C + +=for apidoc Am|GV *|CopFILEGV|const COP * c +Returns the GV associated with the C C + +=for apidoc CopFILEGV_set +Available only on unthreaded perls. Makes C the name of the file +associated with the C C + +=for apidoc Am|HV *|CopSTASH|const COP * c +Returns the stash associated with C. + +=for apidoc Am|bool|CopSTASH_eq|const COP * c|const HV * hv +Returns a boolean as to whether or not C is the stash associated with C. + +=for apidoc Am|bool|CopSTASH_set|COP * c|HV * hv +Set the stash associated with C to C. + +=for apidoc Am|char *|CopSTASHPV|const COP * c +Returns the package name of the stash associated with C, or C if no +associated stash + +=for apidoc Am|void|CopSTASHPV_set|COP * c|const char * pv +Set the package name of the stash associated with C, to the NUL-terminated C +string C

, creating the package if necessary. + +=cut +*/ + #ifdef USE_ITHREADS # define CopFILE(c) ((c)->cop_file) # define CopFILEGV(c) (CopFILE(c) \ @@ -452,7 +548,7 @@ # else # define CopFILE_free(c) (PerlMemShared_free(CopFILE(c)),(CopFILE(c) = NULL)) # endif -#else +#else /* Above: no threads; Below yes threads */ # define CopFILEGV(c) ((c)->cop_filegv) # define CopFILEGV_set(c,gv) ((c)->cop_filegv = (GV*)SvREFCNT_inc(gv)) # define CopFILE_set(c,pv) CopFILEGV_set((c), gv_fetchfile(pv)) @@ -464,7 +560,7 @@ # else # define CopFILEAVx(c) (GvAV(CopFILEGV(c))) # endif -# define CopFILE(c) (CopFILEGV(c) \ +# define CopFILE(c) (CopFILEGV(c) /* +2 for '_<' */ \ ? GvNAME(CopFILEGV(c))+2 : NULL) # define CopSTASH(c) ((c)->cop_stash) # define CopSTASH_set(c,hv) ((c)->cop_stash = (hv)) @@ -481,10 +577,6 @@ #define CopHINTHASH_set(c,h) ((c)->cop_hints_hash = (h)) /* -=head1 COP Hint Reading -*/ - -/* =for apidoc Am|SV *|cop_hints_fetch_pvn|const COP *cop|const char *keypv|STRLEN keylen|U32 hash|U32 flags Look up the hint entry in the cop C with the key specified by @@ -538,6 +630,58 @@ cophh_fetch_sv(CopHINTHASH_get(cop), key, hash, flags) /* +=for apidoc Am|bool|cop_hints_exists_pvn|const COP *cop|const char *keypv|STRLEN keylen|U32 hash|U32 flags + +Look up the hint entry in the cop C with the key specified by +C and C. If C has the C bit set, +the key octets are interpreted as UTF-8, otherwise they are interpreted +as Latin-1. C is a precomputed hash of the key string, or zero if +it has not been precomputed. Returns true if a value exists, and false +otherwise. + +=cut +*/ + +#define cop_hints_exists_pvn(cop, keypv, keylen, hash, flags) \ + cophh_exists_pvn(CopHINTHASH_get(cop), keypv, keylen, hash, flags) + +/* +=for apidoc Am|bool|cop_hints_exists_pvs|const COP *cop|"key"|U32 flags + +Like L, but takes a literal string +instead of a string/length pair, and no precomputed hash. + +=cut +*/ + +#define cop_hints_exists_pvs(cop, key, flags) \ + cophh_exists_pvs(CopHINTHASH_get(cop), key, flags) + +/* +=for apidoc Am|bool|cop_hints_exists_pv|const COP *cop|const char *key|U32 hash|U32 flags + +Like L, but takes a nul-terminated string instead +of a string/length pair. + +=cut +*/ + +#define cop_hints_exists_pv(cop, key, hash, flags) \ + cophh_exists_pv(CopHINTHASH_get(cop), key, hash, flags) + +/* +=for apidoc Am|bool|cop_hints_exists_sv|const COP *cop|SV *key|U32 hash|U32 flags + +Like L, but takes a Perl scalar instead of a +string/length pair. + +=cut +*/ + +#define cop_hints_exists_sv(cop, key, hash, flags) \ + cophh_exists_sv(CopHINTHASH_get(cop), key, hash, flags) + +/* =for apidoc Am|HV *|cop_hints_2hv|const COP *cop|U32 flags Generates and returns a standard Perl hash representing the full set of @@ -636,12 +780,6 @@ # define CX_POP(cx) cxstack_ix--; #endif - -/* base for the next two macros. Don't use directly. - * The context frame holds a reference to the CV so that it can't be - * freed while we're executing it */ - - #define CX_PUSHSUB_GET_LVALUE_MASK(func) \ /* If the context is indeterminate, then only the lvalue */ \ /* flags that the caller also has are applicable. */ \ @@ -828,6 +966,9 @@ void * sbu_rxres; REGEXP * sbu_rx; }; + +#ifdef PERL_CORE + #define sb_iters cx_u.cx_subst.sbu_iters #define sb_maxiters cx_u.cx_subst.sbu_maxiters #define sb_rflags cx_u.cx_subst.sbu_rflags @@ -841,7 +982,6 @@ #define sb_rxres cx_u.cx_subst.sbu_rxres #define sb_rx cx_u.cx_subst.sbu_rx -#ifdef PERL_CORE # define CX_PUSHSUBST(cx) CXINC, cx = CX_CUR(), \ cx->blk_oldsaveix = oldsave, \ cx->sb_iters = iters, \ @@ -905,7 +1045,7 @@ or plain block { ...; } */ #define CXt_SUB 9 #define CXt_FORMAT 10 -#define CXt_EVAL 11 +#define CXt_EVAL 11 /* eval'', eval{}, try{} */ #define CXt_SUBST 12 /* SUBST doesn't feature in all switch statements. */ @@ -918,7 +1058,8 @@ /* private flags for CXt_EVAL */ #define CXp_REAL 0x20 /* truly eval'', not a lookalike */ -#define CXp_TRYBLOCK 0x40 /* eval{}, not eval'' or similar */ +#define CXp_EVALBLOCK 0x40 /* eval{}, not eval'' or similar */ +#define CXp_TRY 0x80 /* try {} block */ /* private flags for CXt_LOOP */ @@ -940,45 +1081,18 @@ #define CxMULTICALL(c) ((c)->cx_type & CXp_MULTICALL) #define CxREALEVAL(c) (((c)->cx_type & (CXTYPEMASK|CXp_REAL)) \ == (CXt_EVAL|CXp_REAL)) -#define CxTRYBLOCK(c) (((c)->cx_type & (CXTYPEMASK|CXp_TRYBLOCK)) \ - == (CXt_EVAL|CXp_TRYBLOCK)) +#define CxEVALBLOCK(c) (((c)->cx_type & (CXTYPEMASK|CXp_EVALBLOCK)) \ + == (CXt_EVAL|CXp_EVALBLOCK)) +#define CxTRY(c) (((c)->cx_type & (CXTYPEMASK|CXp_TRY)) \ + == (CXt_EVAL|CXp_TRY)) #define CxFOREACH(c) ( CxTYPE(cx) >= CXt_LOOP_ARY \ && CxTYPE(cx) <= CXt_LOOP_LIST) -#define CXINC (cxstack_ix < cxstack_max ? ++cxstack_ix : (cxstack_ix = cxinc())) - -/* -=head1 "Gimme" Values -*/ - -/* -=for apidoc AmnU||G_SCALAR -Used to indicate scalar context. See C>, C>, and -L. - -=for apidoc AmnU||G_ARRAY -Used to indicate list context. See C>, C> and -L. - -=for apidoc AmnU||G_VOID -Used to indicate void context. See C> and L. - -=for apidoc AmnU||G_DISCARD -Indicates that arguments returned from a callback should be discarded. See -L. +/* deprecated old name before real try/catch was added */ +#define CXp_TRYBLOCK CXp_EVALBLOCK +#define CxTRYBLOCK(c) CxEVALBLOCK(c) -=for apidoc AmnU||G_EVAL - -Used to force a Perl C wrapper around a callback. See -L. - -=for apidoc AmnU||G_NOARGS - -Indicates that no arguments are being sent to a callback. See -L. - -=cut -*/ +#define CXINC (cxstack_ix < cxstack_max ? ++cxstack_ix : (cxstack_ix = cxinc())) #define G_SCALAR 2 #define G_ARRAY 3 @@ -1054,6 +1168,12 @@ }; +/* +=for apidoc Ay||PERL_SI +Use this typedef to declare variables that are to hold C. + +=cut +*/ typedef struct stackinfo PERL_SI; #define cxstack (PL_curstackinfo->si_cxstack) @@ -1125,14 +1245,23 @@ } \ } STMT_END -#define IN_PERL_COMPILETIME cBOOL(PL_curcop == &PL_compiling) -#define IN_PERL_RUNTIME cBOOL(PL_curcop != &PL_compiling) - +/* +=for apidoc_section $utility +=for apidoc Amn|bool|IN_PERL_COMPILETIME +Returns 1 if this macro is being called during the compilation phase of the +program; otherwise 0; +=for apidoc Amn|bool|IN_PERL_RUNTIME +Returns 1 if this macro is being called during the execution phase of the +program; otherwise 0; +=cut +*/ +#define IN_PERL_COMPILETIME cBOOL(PL_curcop == &PL_compiling) +#define IN_PERL_RUNTIME cBOOL(PL_curcop != &PL_compiling) /* -=head1 Multicall Functions +=for apidoc_section $multicall =for apidoc Amns||dMULTICALL Declare local variables for a multicall. See L. diff -Nru perl-5.32.1/cpan/Archive-Tar/bin/ptar perl-5.34.0/cpan/Archive-Tar/bin/ptar --- perl-5.32.1/cpan/Archive-Tar/bin/ptar 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Archive-Tar/bin/ptar 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl use strict; +use warnings; BEGIN { pop @INC if $INC[-1] eq '.' } use File::Find; diff -Nru perl-5.32.1/cpan/Archive-Tar/bin/ptardiff perl-5.34.0/cpan/Archive-Tar/bin/ptardiff --- perl-5.32.1/cpan/Archive-Tar/bin/ptardiff 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Archive-Tar/bin/ptardiff 2020-10-04 22:17:12.000000000 +0000 @@ -2,6 +2,7 @@ BEGIN { pop @INC if $INC[-1] eq '.' } use strict; +use warnings; use Archive::Tar; use Getopt::Std; diff -Nru perl-5.32.1/cpan/Archive-Tar/lib/Archive/Tar/Constant.pm perl-5.34.0/cpan/Archive-Tar/lib/Archive/Tar/Constant.pm --- perl-5.32.1/cpan/Archive-Tar/lib/Archive/Tar/Constant.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Archive-Tar/lib/Archive/Tar/Constant.pm 2020-10-04 22:17:12.000000000 +0000 @@ -1,9 +1,14 @@ package Archive::Tar::Constant; +use strict; +use warnings; + +use vars qw[$VERSION @ISA @EXPORT]; + BEGIN { require Exporter; - $VERSION = '2.36'; + $VERSION = '2.38'; @ISA = qw[Exporter]; require Time::Local if $^O eq "MacOS"; @@ -11,9 +16,6 @@ @EXPORT = Archive::Tar::Constant->_list_consts( __PACKAGE__ ); -use strict; -use warnings; - use constant FILE => 0; use constant HARDLINK => 1; use constant SYMLINK => 2; diff -Nru perl-5.32.1/cpan/Archive-Tar/lib/Archive/Tar/File.pm perl-5.34.0/cpan/Archive-Tar/lib/Archive/Tar/File.pm --- perl-5.32.1/cpan/Archive-Tar/lib/Archive/Tar/File.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Archive-Tar/lib/Archive/Tar/File.pm 2020-10-04 22:17:12.000000000 +0000 @@ -7,13 +7,11 @@ use File::Spec (); use File::Basename (); -### avoid circular use, so only require; -require Archive::Tar; use Archive::Tar::Constant; use vars qw[@ISA $VERSION]; #@ISA = qw[Archive::Tar]; -$VERSION = '2.36'; +$VERSION = '2.38'; ### set value to 1 to oct() it during the unpack ### @@ -469,6 +467,8 @@ local $Carp::CarpLevel += 1; + ### avoid circular use, so only require; + require Archive::Tar; return Archive::Tar->_extract_file( $self, @_ ); } diff -Nru perl-5.32.1/cpan/Archive-Tar/lib/Archive/Tar.pm perl-5.34.0/cpan/Archive-Tar/lib/Archive/Tar.pm --- perl-5.32.1/cpan/Archive-Tar/lib/Archive/Tar.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Archive-Tar/lib/Archive/Tar.pm 2020-10-04 22:17:12.000000000 +0000 @@ -31,7 +31,7 @@ $DEBUG = 0; $WARN = 1; $FOLLOW_SYMLINK = 0; -$VERSION = "2.36"; +$VERSION = "2.38"; $CHOWN = 1; $CHMOD = 1; $SAME_PERMISSIONS = $> == 0 ? 1 : 0; @@ -48,7 +48,7 @@ ### switch between perlio and IO::String $HAS_IO_STRING = eval { require IO::String; - import IO::String; + IO::String->import; 1; } || 0; } @@ -918,7 +918,7 @@ } if( $CHOWN && CAN_CHOWN->() and not -l $full ) { - chown $entry->uid, $entry->gid, $full or + CORE::chown( $entry->uid, $entry->gid, $full ) or $self->_error( qq[Could not set uid/gid on '$full'] ); } @@ -929,7 +929,7 @@ unless ($SAME_PERMISSIONS) { $mode &= ~(oct(7000) | umask); } - chmod $mode, $full or + CORE::chmod( $mode, $full ) or $self->_error( qq[Could not chown '$full' to ] . $entry->mode ); } @@ -2284,7 +2284,7 @@ use Archive::Tar; use IO::File; - my $fh = new IO::File "| compress -c >$filename"; + my $fh = IO::File->new( "| compress -c >$filename" ); my $tar = Archive::Tar->new(); ... $tar->write($fh); diff -Nru perl-5.32.1/cpan/Archive-Tar/t/01_use.t perl-5.34.0/cpan/Archive-Tar/t/01_use.t --- perl-5.32.1/cpan/Archive-Tar/t/01_use.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Archive-Tar/t/01_use.t 2020-10-04 22:17:12.000000000 +0000 @@ -3,5 +3,5 @@ use_ok('Archive::Tar') or diag 'Archive::Tar not found -- exit' && die; -my $tar = new Archive::Tar; +my $tar = Archive::Tar->new; isa_ok( $tar, 'Archive::Tar', 'Object created' ); diff -Nru perl-5.32.1/cpan/Archive-Tar/t/02_methods.t perl-5.34.0/cpan/Archive-Tar/t/02_methods.t --- perl-5.32.1/cpan/Archive-Tar/t/02_methods.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Archive-Tar/t/02_methods.t 2020-10-04 22:17:12.000000000 +0000 @@ -805,7 +805,7 @@ ### gzip } else { require IO::Zlib; - $fh = new IO::Zlib; + $fh = IO::Zlib->new(); $fh->open( $file, READ_ONLY->(1) ) or warn( "Error opening '$file' with IO::Zlib" ), return } diff -Nru perl-5.32.1/cpan/Archive-Tar/t/99_pod.t perl-5.34.0/cpan/Archive-Tar/t/99_pod.t --- perl-5.32.1/cpan/Archive-Tar/t/99_pod.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Archive-Tar/t/99_pod.t 2020-10-04 22:17:12.000000000 +0000 @@ -16,6 +16,8 @@ File::Spec->splitdir( $File::Find::dir ), $_ ) if /\.p(?:l|m|od)$/ }, File::Spec->catdir(qw(.. blib lib) )); +plan skip_all => "No tests to run" unless scalar @files; + plan tests => scalar @files; for my $file ( @files ) { pod_file_ok( $file ); diff -Nru perl-5.32.1/cpan/autodie/lib/autodie/exception/system.pm perl-5.34.0/cpan/autodie/lib/autodie/exception/system.pm --- perl-5.32.1/cpan/autodie/lib/autodie/exception/system.pm 2020-12-18 09:58:25.000000000 +0000 +++ perl-5.34.0/cpan/autodie/lib/autodie/exception/system.pm 2021-02-21 11:01:31.000000000 +0000 @@ -5,7 +5,7 @@ use parent 'autodie::exception'; use Carp qw(croak); -our $VERSION = '2.32'; # VERSION: Generated by DZP::OurPkg:Version +our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg:Version # ABSTRACT: Exceptions from autodying system(). diff -Nru perl-5.32.1/cpan/autodie/lib/autodie/exception.pm perl-5.34.0/cpan/autodie/lib/autodie/exception.pm --- perl-5.32.1/cpan/autodie/lib/autodie/exception.pm 2020-12-18 09:58:25.000000000 +0000 +++ perl-5.34.0/cpan/autodie/lib/autodie/exception.pm 2021-02-21 11:01:31.000000000 +0000 @@ -4,7 +4,9 @@ use warnings; use Carp qw(croak); -our $VERSION = '2.32'; # VERSION: Generated by DZP::OurPkg:Version +use Scalar::Util qw(blessed); + +our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg:Version # ABSTRACT: Exceptions from autodying functions. our $DEBUG = 0; diff -Nru perl-5.32.1/cpan/autodie/lib/autodie/hints.pm perl-5.34.0/cpan/autodie/lib/autodie/hints.pm --- perl-5.32.1/cpan/autodie/lib/autodie/hints.pm 2020-12-18 09:58:25.000000000 +0000 +++ perl-5.34.0/cpan/autodie/lib/autodie/hints.pm 2021-02-21 11:01:31.000000000 +0000 @@ -5,7 +5,7 @@ use constant PERL58 => ( $] < 5.009 ); -our $VERSION = '2.32'; # VERSION: Generated by DZP::OurPkg:Version +our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg:Version # ABSTRACT: Provide hints about user subroutines to autodie diff -Nru perl-5.32.1/cpan/autodie/lib/autodie/Scope/Guard.pm perl-5.34.0/cpan/autodie/lib/autodie/Scope/Guard.pm --- perl-5.32.1/cpan/autodie/lib/autodie/Scope/Guard.pm 2020-12-18 09:58:24.000000000 +0000 +++ perl-5.34.0/cpan/autodie/lib/autodie/Scope/Guard.pm 2021-02-21 11:01:31.000000000 +0000 @@ -4,7 +4,7 @@ use warnings; # ABSTRACT: Wrapper class for calling subs at end of scope -our $VERSION = '2.32'; # VERSION +our $VERSION = '2.34'; # VERSION # This code schedules the cleanup of subroutines at the end of # scope. It's directly inspired by chocolateboy's excellent diff -Nru perl-5.32.1/cpan/autodie/lib/autodie/Scope/GuardStack.pm perl-5.34.0/cpan/autodie/lib/autodie/Scope/GuardStack.pm --- perl-5.32.1/cpan/autodie/lib/autodie/Scope/GuardStack.pm 2020-12-18 09:58:24.000000000 +0000 +++ perl-5.34.0/cpan/autodie/lib/autodie/Scope/GuardStack.pm 2021-02-21 11:01:31.000000000 +0000 @@ -6,7 +6,7 @@ use autodie::Scope::Guard; # ABSTRACT: Hook stack for managing scopes via %^H -our $VERSION = '2.32'; # VERSION +our $VERSION = '2.34'; # VERSION my $H_KEY_STEM = __PACKAGE__ . '/guard'; my $COUNTER = 0; diff -Nru perl-5.32.1/cpan/autodie/lib/autodie/skip.pm perl-5.34.0/cpan/autodie/lib/autodie/skip.pm --- perl-5.32.1/cpan/autodie/lib/autodie/skip.pm 2020-12-18 09:58:25.000000000 +0000 +++ perl-5.34.0/cpan/autodie/lib/autodie/skip.pm 2021-02-21 11:01:31.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '2.32'; # VERSION +our $VERSION = '2.34'; # VERSION # This package exists purely so people can inherit from it, # which isn't at all how roles are supposed to work, but it's diff -Nru perl-5.32.1/cpan/autodie/lib/autodie/Util.pm perl-5.34.0/cpan/autodie/lib/autodie/Util.pm --- perl-5.32.1/cpan/autodie/lib/autodie/Util.pm 2020-12-18 09:58:24.000000000 +0000 +++ perl-5.34.0/cpan/autodie/lib/autodie/Util.pm 2021-02-21 11:01:31.000000000 +0000 @@ -14,7 +14,7 @@ on_end_of_compile_scope ); -our $VERSION = '2.32'; # VERSION: Generated by DZP::OurPkg:Version +our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg:Version # ABSTRACT: Internal Utility subroutines for autodie and Fatal diff -Nru perl-5.32.1/cpan/autodie/lib/autodie.pm perl-5.34.0/cpan/autodie/lib/autodie.pm --- perl-5.32.1/cpan/autodie/lib/autodie.pm 2020-12-18 09:58:24.000000000 +0000 +++ perl-5.34.0/cpan/autodie/lib/autodie.pm 2021-02-21 11:01:31.000000000 +0000 @@ -9,7 +9,7 @@ # ABSTRACT: Replace functions with ones that succeed or die with lexical scope BEGIN { - our $VERSION = '2.32'; # VERSION: Generated by DZP::OurPkg::Version + our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg::Version } use constant ERROR_WRONG_FATAL => q{ @@ -306,7 +306,7 @@ element. Some builtins (e.g. C or C) has a call signature that -cannot completely be representated with a Perl prototype. This means +cannot completely be represented with a Perl prototype. This means that some valid Perl code will be invalid under autodie. As an example: chdir(BAREWORD); @@ -392,8 +392,7 @@ =head2 REPORTING BUGS Please report bugs via the GitHub Issue Tracker at -L or via the CPAN Request -Tracker at L. +L. =head1 FEEDBACK diff -Nru perl-5.32.1/cpan/autodie/lib/Fatal.pm perl-5.34.0/cpan/autodie/lib/Fatal.pm --- perl-5.32.1/cpan/autodie/lib/Fatal.pm 2020-12-18 09:58:24.000000000 +0000 +++ perl-5.34.0/cpan/autodie/lib/Fatal.pm 2021-02-21 11:01:31.000000000 +0000 @@ -55,7 +55,7 @@ use constant MIN_IPC_SYS_SIMPLE_VER => 0.12; -our $VERSION = '2.32'; # VERSION: Generated by DZP::OurPkg::Version +our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg::Version our $Debug ||= 0; @@ -168,6 +168,8 @@ ':2.30' => [qw(:default)], ':2.31' => [qw(:default)], ':2.32' => [qw(:default)], + ':2.33' => [qw(:default)], + ':2.34' => [qw(:default)], ); diff -Nru perl-5.32.1/cpan/autodie/t/exception_nonref.t perl-5.34.0/cpan/autodie/t/exception_nonref.t --- perl-5.32.1/cpan/autodie/t/exception_nonref.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/autodie/t/exception_nonref.t 2021-02-21 11:01:31.000000000 +0000 @@ -0,0 +1,11 @@ +#!/usr/bin/perl -w +use strict; +use Test::More tests => 1; +use autodie; + +eval { syswrite "xxxxxxxx", \*STDOUT }; +my $err = $@; + +like( $err, qr, 'expected failure on attempt to write to non-reference' ); + +done_testing(); diff -Nru perl-5.32.1/cpan/Compress-Raw-Bzip2/bzip2-src/bzip2.patch perl-5.34.0/cpan/Compress-Raw-Bzip2/bzip2-src/bzip2.patch --- perl-5.32.1/cpan/Compress-Raw-Bzip2/bzip2-src/bzip2.patch 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Bzip2/bzip2-src/bzip2.patch 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1,236 @@ +diff --git a/bzip2.c b/bzip2.c +index d95d280..7852cc4 100644 +--- a/bzip2.c ++++ b/bzip2.c +@@ -1070,7 +1070,11 @@ void applySavedFileAttrToOutputFile ( IntNative fd ) + retVal = fchmod ( fd, fileMetaInfo.st_mode ); + ERROR_IF_NOT_ZERO ( retVal ); + +- (void) fchown ( fd, fileMetaInfo.st_uid, fileMetaInfo.st_gid ); ++#if __GNUC__ ++ int unused __attribute__((unused)); ++ unused = ++#endif ++ fchown ( fd, fileMetaInfo.st_uid, fileMetaInfo.st_gid ); + /* chown() will in many cases return with EPERM, which can + be safely ignored. + */ +diff --git a/bzip2recover.c b/bzip2recover.c +index a8131e0..0925048 100644 +--- a/bzip2recover.c ++++ b/bzip2recover.c +@@ -153,7 +153,7 @@ typedef + /*---------------------------------------------*/ + static BitStream* bsOpenReadStream ( FILE* stream ) + { +- BitStream *bs = malloc ( sizeof(BitStream) ); ++ BitStream *bs = (BitStream *) malloc ( sizeof(BitStream) ); + if (bs == NULL) mallocFail ( sizeof(BitStream) ); + bs->handle = stream; + bs->buffer = 0; +@@ -166,7 +166,7 @@ static BitStream* bsOpenReadStream ( FILE* stream ) + /*---------------------------------------------*/ + static BitStream* bsOpenWriteStream ( FILE* stream ) + { +- BitStream *bs = malloc ( sizeof(BitStream) ); ++ BitStream *bs = (BitStream *) malloc ( sizeof(BitStream) ); + if (bs == NULL) mallocFail ( sizeof(BitStream) ); + bs->handle = stream; + bs->buffer = 0; +diff --git a/bzlib.c b/bzlib.c +index 2178655..aaf1b40 100644 +--- a/bzlib.c ++++ b/bzlib.c +@@ -165,7 +165,7 @@ int BZ_API(BZ2_bzCompressInit) + if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc; + if (strm->bzfree == NULL) strm->bzfree = default_bzfree; + +- s = BZALLOC( sizeof(EState) ); ++ s = (EState*) BZALLOC( sizeof(EState) ); + if (s == NULL) return BZ_MEM_ERROR; + s->strm = strm; + +@@ -174,9 +174,9 @@ int BZ_API(BZ2_bzCompressInit) + s->ftab = NULL; + + n = 100000 * blockSize100k; +- s->arr1 = BZALLOC( n * sizeof(UInt32) ); +- s->arr2 = BZALLOC( (n+BZ_N_OVERSHOOT) * sizeof(UInt32) ); +- s->ftab = BZALLOC( 65537 * sizeof(UInt32) ); ++ s->arr1 = (UInt32*) BZALLOC( n * sizeof(UInt32) ); ++ s->arr2 = (UInt32*) BZALLOC( (n+BZ_N_OVERSHOOT) * sizeof(UInt32) ); ++ s->ftab = (UInt32*) BZALLOC( 65537 * sizeof(UInt32) ); + + if (s->arr1 == NULL || s->arr2 == NULL || s->ftab == NULL) { + if (s->arr1 != NULL) BZFREE(s->arr1); +@@ -362,7 +362,7 @@ Bool handle_compress ( bz_stream* strm ) + { + Bool progress_in = False; + Bool progress_out = False; +- EState* s = strm->state; ++ EState* s = (EState*) strm->state; + + while (True) { + +@@ -409,7 +409,7 @@ int BZ_API(BZ2_bzCompress) ( bz_stream *strm, int action ) + Bool progress; + EState* s; + if (strm == NULL) return BZ_PARAM_ERROR; +- s = strm->state; ++ s = (EState*) strm->state; + if (s == NULL) return BZ_PARAM_ERROR; + if (s->strm != strm) return BZ_PARAM_ERROR; + +@@ -469,7 +469,7 @@ int BZ_API(BZ2_bzCompressEnd) ( bz_stream *strm ) + { + EState* s; + if (strm == NULL) return BZ_PARAM_ERROR; +- s = strm->state; ++ s = (EState*) strm->state; + if (s == NULL) return BZ_PARAM_ERROR; + if (s->strm != strm) return BZ_PARAM_ERROR; + +@@ -505,7 +505,7 @@ int BZ_API(BZ2_bzDecompressInit) + if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc; + if (strm->bzfree == NULL) strm->bzfree = default_bzfree; + +- s = BZALLOC( sizeof(DState) ); ++ s = (DState*) BZALLOC( sizeof(DState) ); + if (s == NULL) return BZ_MEM_ERROR; + s->strm = strm; + strm->state = s; +@@ -684,7 +684,10 @@ Bool unRLE_obuf_to_output_FAST ( DState* s ) + + + /*---------------------------------------------------*/ +-__inline__ Int32 BZ2_indexIntoF ( Int32 indx, Int32 *cftab ) ++#ifndef __cplusplus ++__inline__ ++#endif ++Int32 BZ2_indexIntoF ( Int32 indx, Int32 *cftab ) + { + Int32 nb, na, mid; + nb = 0; +@@ -810,7 +813,7 @@ int BZ_API(BZ2_bzDecompress) ( bz_stream *strm ) + Bool corrupt; + DState* s; + if (strm == NULL) return BZ_PARAM_ERROR; +- s = strm->state; ++ s = (DState*) strm->state; + if (s == NULL) return BZ_PARAM_ERROR; + if (s->strm != strm) return BZ_PARAM_ERROR; + +@@ -863,7 +866,7 @@ int BZ_API(BZ2_bzDecompressEnd) ( bz_stream *strm ) + { + DState* s; + if (strm == NULL) return BZ_PARAM_ERROR; +- s = strm->state; ++ s = (DState*) strm->state; + if (s == NULL) return BZ_PARAM_ERROR; + if (s->strm != strm) return BZ_PARAM_ERROR; + +@@ -934,7 +937,7 @@ BZFILE* BZ_API(BZ2_bzWriteOpen) + if (ferror(f)) + { BZ_SETERR(BZ_IO_ERROR); return NULL; }; + +- bzf = malloc ( sizeof(bzFile) ); ++ bzf = (bzFile*) malloc ( sizeof(bzFile) ); + if (bzf == NULL) + { BZ_SETERR(BZ_MEM_ERROR); return NULL; }; + +@@ -982,7 +985,7 @@ void BZ_API(BZ2_bzWrite) + { BZ_SETERR(BZ_OK); return; }; + + bzf->strm.avail_in = len; +- bzf->strm.next_in = buf; ++ bzf->strm.next_in = (char*)buf; + + while (True) { + bzf->strm.avail_out = BZ_MAX_UNUSED; +@@ -1107,7 +1110,7 @@ BZFILE* BZ_API(BZ2_bzReadOpen) + if (ferror(f)) + { BZ_SETERR(BZ_IO_ERROR); return NULL; }; + +- bzf = malloc ( sizeof(bzFile) ); ++ bzf = (bzFile*) malloc ( sizeof(bzFile) ); + if (bzf == NULL) + { BZ_SETERR(BZ_MEM_ERROR); return NULL; }; + +@@ -1179,7 +1182,7 @@ int BZ_API(BZ2_bzRead) + { BZ_SETERR(BZ_OK); return 0; }; + + bzf->strm.avail_out = len; +- bzf->strm.next_out = buf; ++ bzf->strm.next_out = (char*) buf; + + while (True) { + +diff --git a/bzlib_private.h b/bzlib_private.h +index 3755a6f..2578c2d 100644 +--- a/bzlib_private.h ++++ b/bzlib_private.h +@@ -128,7 +128,7 @@ extern void bz_internal_error ( int errcode ); + + /*-- Stuff for randomising repetitive blocks. --*/ + +-extern Int32 BZ2_rNums[512]; ++extern const Int32 BZ2_rNums[512]; + + #define BZ_RAND_DECLS \ + Int32 rNToGo; \ +@@ -152,7 +152,7 @@ extern Int32 BZ2_rNums[512]; + + /*-- Stuff for doing CRCs. --*/ + +-extern UInt32 BZ2_crc32Table[256]; ++extern const UInt32 BZ2_crc32Table[256]; + + #define BZ_INITIALISE_CRC(crcVar) \ + { \ +diff --git a/crctable.c b/crctable.c +index 2b33c25..a9212db 100644 +--- a/crctable.c ++++ b/crctable.c +@@ -28,7 +28,7 @@ + comp.compression FAQ. + --*/ + +-UInt32 BZ2_crc32Table[256] = { ++const UInt32 BZ2_crc32Table[256] = { + + /*-- Ugly, innit? --*/ + +diff --git a/decompress.c b/decompress.c +index a1a0bac..5afd651 100644 +--- a/decompress.c ++++ b/decompress.c +@@ -209,13 +209,13 @@ Int32 BZ2_decompress ( DState* s ) + s->blockSize100k -= BZ_HDR_0; + + if (s->smallDecompress) { +- s->ll16 = BZALLOC( s->blockSize100k * 100000 * sizeof(UInt16) ); +- s->ll4 = BZALLOC( ++ s->ll16 = (UInt16*) BZALLOC( s->blockSize100k * 100000 * sizeof(UInt16) ); ++ s->ll4 = (UChar*) BZALLOC( + ((1 + s->blockSize100k * 100000) >> 1) * sizeof(UChar) + ); + if (s->ll16 == NULL || s->ll4 == NULL) RETURN(BZ_MEM_ERROR); + } else { +- s->tt = BZALLOC( s->blockSize100k * 100000 * sizeof(Int32) ); ++ s->tt = (UInt32*) BZALLOC( s->blockSize100k * 100000 * sizeof(Int32) ); + if (s->tt == NULL) RETURN(BZ_MEM_ERROR); + } + +diff --git a/randtable.c b/randtable.c +index bdc6d4a..70666a1 100644 +--- a/randtable.c ++++ b/randtable.c +@@ -23,7 +23,7 @@ + + + /*---------------------------------------------*/ +-Int32 BZ2_rNums[512] = { ++const Int32 BZ2_rNums[512] = { + 619, 720, 127, 481, 931, 816, 813, 233, 566, 247, + 985, 724, 205, 454, 863, 491, 741, 242, 949, 214, + 733, 859, 335, 708, 621, 574, 73, 654, 730, 472, diff -Nru perl-5.32.1/cpan/Compress-Raw-Bzip2/Bzip2.xs perl-5.34.0/cpan/Compress-Raw-Bzip2/Bzip2.xs --- perl-5.32.1/cpan/Compress-Raw-Bzip2/Bzip2.xs 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Bzip2/Bzip2.xs 2020-10-04 22:17:12.000000000 +0000 @@ -14,11 +14,11 @@ #include "perl.h" #include "XSUB.h" -#include "bzlib.h" +#include "bzlib.h" #ifdef USE_PPPORT_H # define NEED_sv_2pv_nolen -# include "ppport.h" +# include "ppport.h" #endif #if PERL_REVISION == 5 && (PERL_VERSION < 8 || (PERL_VERSION == 8 && PERL_SUBVERSION < 4 )) @@ -52,12 +52,12 @@ #define FLAG_CONSUME_INPUT 8 #define FLAG_LIMIT_OUTPUT 16 bz_stream stream; - uInt bufsize; + uInt bufsize; int last_error ; uLong bytesInflated ; uLong compressedBytes ; uLong uncompressedBytes ; - + } di_stream; typedef di_stream * deflateStream ; @@ -96,7 +96,7 @@ sv_setpv(var, ((err) ? GetErrorString(err) : "")) ; \ SvNOK_on(var); - + #if defined(__SYMBIAN32__) # define NO_WRITEABLE_DATA #endif @@ -134,7 +134,7 @@ int error_no ; #endif { - return(char*) my_z_errmsg[4 - error_no]; + return(char*) my_z_errmsg[4 - error_no]; } static void @@ -226,7 +226,7 @@ ZMALLOC(s, di_stream) ; return s ; - + } static void @@ -244,7 +244,7 @@ } -static SV* +static SV* #ifdef CAN_PROTOTYPE deRef(SV * sv, const char * string) #else @@ -289,7 +289,7 @@ dTHX; bool wipe = 0 ; STRLEN na; - + SvGETMAGIC(sv); wipe = ! SvOK(sv) ; @@ -337,7 +337,7 @@ /* Check this version of bzip2 is == 1 */ if (BZ2_bzlibVersion()[0] != '1') croak(COMPRESS_CLASS " needs bzip2 version 1.x, you have %s\n", BZ2_bzlibVersion()) ; - + MODULE = Compress::Raw::Bzip2 PACKAGE = Compress::Raw::Bzip2 @@ -363,8 +363,8 @@ #endif if ((s = InitStream() )) { - err = BZ2_bzCompressInit ( &(s->stream), - blockSize100k, + err = BZ2_bzCompressInit ( &(s->stream), + blockSize100k, verbosity, workfactor ); @@ -453,7 +453,7 @@ XPUSHs(sv) ; } } - + MODULE = Compress::Raw::Bzip2 PACKAGE = Compress::Raw::Bzip2 @@ -463,11 +463,11 @@ Compress::Raw::Bzip2 s const char * message -DualType +DualType bzdeflate (s, buf, output) Compress::Raw::Bzip2 s SV * buf - SV * output + SV * output uInt cur_length = NO_INIT uInt increment = NO_INIT int RETVAL = 0; @@ -478,26 +478,27 @@ /* If the input buffer is a reference, dereference it */ buf = deRef(buf, "deflate") ; - + /* initialise the input buffer */ -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (DO_UTF8(buf) && !sv_utf8_downgrade(buf, 1)) croak("Wide character in " COMPRESS_CLASS "::bzdeflate input parameter"); -#endif +#endif s->stream.next_in = (char*)SvPV_nomg(buf, origlen) ; s->stream.avail_in = (unsigned int) origlen; - + /* and retrieve the output buffer */ output = deRef_l(output, "deflate") ; -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (DO_UTF8(output) && !sv_utf8_downgrade(output, 1)) croak("Wide character in " COMPRESS_CLASS "::bzdeflate output parameter"); -#endif +#endif - if((s->flags & FLAG_APPEND_OUTPUT) != FLAG_APPEND_OUTPUT) { - SvCUR_set(output, 0); - /* sv_setpvn(output, "", 0); */ - } + if((s->flags & FLAG_APPEND_OUTPUT) == FLAG_APPEND_OUTPUT) { + SvOOK_off(output); + } else { + SvCUR_set(output, 0); + } cur_length = SvCUR(output) ; s->stream.next_out = (char*) SvPVX(output) + cur_length; increment = SvLEN(output) - cur_length; @@ -515,7 +516,7 @@ } RETVAL = BZ2_bzCompress(&(s->stream), BZ_RUN); - if (RETVAL != BZ_RUN_OK) + if (RETVAL != BZ_RUN_OK) break; } @@ -530,7 +531,7 @@ } OUTPUT: RETVAL - + void DESTROY(s) @@ -543,25 +544,26 @@ DualType bzclose(s, output) Compress::Raw::Bzip2 s - SV * output + SV * output uInt cur_length = NO_INIT uInt increment = NO_INIT uInt bufinc = NO_INIT CODE: bufinc = s->bufsize; - + s->stream.avail_in = 0; /* should be zero already anyway */ - + /* retrieve the output buffer */ output = deRef_l(output, "close") ; -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (DO_UTF8(output) && !sv_utf8_downgrade(output, 1)) croak("Wide character in " COMPRESS_CLASS "::bzclose input parameter"); -#endif - if((s->flags & FLAG_APPEND_OUTPUT) != FLAG_APPEND_OUTPUT) { - SvCUR_set(output, 0); - /* sv_setpvn(output, "", 0); */ - } +#endif + if((s->flags & FLAG_APPEND_OUTPUT) == FLAG_APPEND_OUTPUT) { + SvOOK_off(output); + } else { + SvCUR_set(output, 0); + } cur_length = SvCUR(output) ; s->stream.next_out = (char*) SvPVX(output) + cur_length; increment = SvLEN(output) - cur_length; @@ -578,20 +580,20 @@ bufinc *= 2 ; } RETVAL = BZ2_bzCompress(&(s->stream), BZ_FINISH); - + /* deflate has finished flushing only when it hasn't used up - * all the available space in the output buffer: + * all the available space in the output buffer: */ /* if (s->stream.avail_out != 0 || RETVAL < 0 ) */ if (RETVAL == BZ_STREAM_END || RETVAL < 0 ) break; } - + /* RETVAL = (RETVAL == BZ_STREAM_END ? BZ_OK : RETVAL) ; */ s->last_error = RETVAL ; s->compressedBytes += cur_length + increment - s->stream.avail_out ; - + if (RETVAL == BZ_STREAM_END) { SvPOK_only(output); SvCUR_set(output, cur_length + increment - s->stream.avail_out) ; @@ -604,25 +606,26 @@ DualType bzflush(s, output) Compress::Raw::Bzip2 s - SV * output + SV * output uInt cur_length = NO_INIT uInt increment = NO_INIT uInt bufinc = NO_INIT CODE: bufinc = s->bufsize; - + s->stream.avail_in = 0; /* should be zero already anyway */ - + /* retrieve the output buffer */ output = deRef_l(output, "close") ; -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (DO_UTF8(output) && !sv_utf8_downgrade(output, 1)) croak("Wide character in " COMPRESS_CLASS "::bzflush input parameter"); -#endif - if((s->flags & FLAG_APPEND_OUTPUT) != FLAG_APPEND_OUTPUT) { - SvCUR_set(output, 0); - /* sv_setpvn(output, "", 0); */ - } +#endif + if((s->flags & FLAG_APPEND_OUTPUT) == FLAG_APPEND_OUTPUT) { + SvOOK_off(output); + } else { + SvCUR_set(output, 0); + } cur_length = SvCUR(output) ; s->stream.next_out = (char*) SvPVX(output) + cur_length; increment = SvLEN(output) - cur_length; @@ -639,22 +642,22 @@ bufinc *= 2 ; } RETVAL = BZ2_bzCompress(&(s->stream), BZ_FLUSH); - + if (RETVAL == BZ_RUN_OK || RETVAL < 0) break; /* deflate has finished flushing only when it hasn't used up - * all the available space in the output buffer: + * all the available space in the output buffer: */ /* RETVAL == if (s->stream.avail_out != 0 || RETVAL < 0 ) break; */ } - + /* RETVAL = (RETVAL == BZ_STREAM_END ? BZ_OK : RETVAL) ; */ s->last_error = RETVAL ; s->compressedBytes += cur_length + increment - s->stream.avail_out ; - + if (RETVAL == BZ_RUN_OK) { SvPOK_only(output); SvCUR_set(output, cur_length + increment - s->stream.avail_out) ; @@ -695,7 +698,7 @@ OUTPUT: RETVAL - + MODULE = Compress::Raw::Bunzip2 PACKAGE = Compress::Raw::Bunzip2 void @@ -703,11 +706,11 @@ Compress::Raw::Bunzip2 s const char * message -DualType +DualType bzinflate (s, buf, output) Compress::Raw::Bunzip2 s SV * buf - SV * output + SV * output uInt cur_length = 0; uInt prefix_length = 0; uInt increment = 0; @@ -715,9 +718,9 @@ STRLEN na = NO_INIT ; STRLEN origlen = NO_INIT PREINIT: -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE bool out_utf8 = FALSE; -#endif +#endif CODE: bufinc = s->bufsize; /* If the buffer is a reference, dereference it */ @@ -728,39 +731,41 @@ croak(UNCOMPRESS_CLASS "::bzinflate input parameter cannot be read-only when ConsumeInput is specified"); SvPV_force(buf, na); } -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (DO_UTF8(buf) && !sv_utf8_downgrade(buf, 1)) croak("Wide character in " UNCOMPRESS_CLASS "::bzinflate input parameter"); -#endif - +#endif + /* initialise the input buffer */ s->stream.next_in = (char*)SvPV_nomg(buf, origlen) ; s->stream.avail_in = (unsigned int) origlen; - + /* and retrieve the output buffer */ output = deRef_l(output, "bzinflate") ; -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (DO_UTF8(output)) out_utf8 = TRUE ; if (DO_UTF8(output) && !sv_utf8_downgrade(output, 1)) croak("Wide character in " UNCOMPRESS_CLASS "::bzinflate output parameter"); -#endif - if((s->flags & FLAG_APPEND_OUTPUT) != FLAG_APPEND_OUTPUT) { - SvCUR_set(output, 0); - } +#endif + if((s->flags & FLAG_APPEND_OUTPUT) == FLAG_APPEND_OUTPUT) { + SvOOK_off(output); + } else { + SvCUR_set(output, 0); + } /* Assume no output buffer - the code below will update if there is any available */ s->stream.avail_out = 0; if (SvLEN(output)) { prefix_length = cur_length = SvCUR(output) ; - + if (s->flags & FLAG_LIMIT_OUTPUT && SvLEN(output) - cur_length - 1 < bufinc) { Sv_Grow(output, bufinc + cur_length + 1) ; } - - /* Only setup the stream output pointers if there is spare + + /* Only setup the stream output pointers if there is spare capacity in the outout SV */ if (SvLEN(output) > cur_length + 1) @@ -772,9 +777,9 @@ } s->bytesInflated = 0; - + RETVAL = BZ_OK; - + while (1) { if (s->stream.avail_out == 0) { @@ -790,11 +795,11 @@ /* DispStream(s, "pre"); */ RETVAL = BZ2_bzDecompress (&(s->stream)); - /* + /* printf("Status %d\n", RETVAL); - DispStream(s, "apres"); - */ - if (RETVAL != BZ_OK || s->flags & FLAG_LIMIT_OUTPUT) + DispStream(s, "apres"); + */ + if (RETVAL != BZ_OK || s->flags & FLAG_LIMIT_OUTPUT) break ; if (s->stream.avail_out == 0) @@ -804,9 +809,9 @@ RETVAL = BZ_OK ; break ; } - + } - + s->last_error = RETVAL ; if (RETVAL == BZ_OK || RETVAL == BZ_STREAM_END) { unsigned in ; @@ -818,10 +823,10 @@ SvPOK_only(output); SvCUR_set(output, prefix_length + s->bytesInflated) ; *SvEND(output) = '\0'; -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (out_utf8) sv_utf8_upgrade(output); -#endif +#endif SvSETMAGIC(output); /* fix the input buffer */ @@ -829,7 +834,7 @@ in = s->stream.avail_in ; SvCUR_set(buf, in) ; if (in) - Move(s->stream.next_in, SvPVX(buf), in, char) ; + Move(s->stream.next_in, SvPVX(buf), in, char) ; *SvEND(buf) = '\0'; SvSETMAGIC(buf); } diff -Nru perl-5.32.1/cpan/Compress-Raw-Bzip2/lib/Compress/Raw/Bzip2.pm perl-5.34.0/cpan/Compress-Raw-Bzip2/lib/Compress/Raw/Bzip2.pm --- perl-5.32.1/cpan/Compress-Raw-Bzip2/lib/Compress/Raw/Bzip2.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Bzip2/lib/Compress/Raw/Bzip2.pm 2021-05-04 06:52:48.000000000 +0000 @@ -11,8 +11,8 @@ use bytes ; our ($VERSION, $XS_VERSION, @ISA, @EXPORT, $AUTOLOAD); -$VERSION = '2.093'; -$XS_VERSION = $VERSION; +$VERSION = '2.101'; +$XS_VERSION = $VERSION; $VERSION = eval $VERSION; @ISA = qw(Exporter); @@ -61,11 +61,11 @@ require XSLoader; XSLoader::load('Compress::Raw::Bzip2', $XS_VERSION); 1; -} +} or do { require DynaLoader; local @ISA = qw(DynaLoader); - bootstrap Compress::Raw::Bzip2 $XS_VERSION ; + bootstrap Compress::Raw::Bzip2 $XS_VERSION ; }; #sub Compress::Raw::Bzip2::new @@ -132,14 +132,14 @@ my ($bz, $status) = new Compress::Raw::Bzip2 [OPTS] or die "Cannot create bzip2 object: $bzerno\n"; - + $status = $bz->bzdeflate($input, $output); $status = $bz->bzflush($output); $status = $bz->bzclose($output); my ($bz, $status) = new Compress::Raw::Bunzip2 [OPTS] or die "Cannot create bunzip2 object: $bzerno\n"; - + $status = $bz->bzinflate($input, $output); my $version = Compress::Raw::Bzip2::bzlibversion(); @@ -356,7 +356,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -384,8 +384,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright (c) 2005-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - diff -Nru perl-5.32.1/cpan/Compress-Raw-Bzip2/Makefile.PL perl-5.34.0/cpan/Compress-Raw-Bzip2/Makefile.PL --- perl-5.32.1/cpan/Compress-Raw-Bzip2/Makefile.PL 2020-12-18 09:57:54.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Bzip2/Makefile.PL 2021-01-20 23:04:44.000000000 +0000 @@ -18,10 +18,10 @@ #ParseCONFIG() ; -UpDowngrade(getPerlFiles('MANIFEST')) +UpDowngrade(getPerlFiles('MANIFEST')) unless $ENV{PERL_CORE}; -WriteMakefile( +WriteMakefile( NAME => 'Compress::Raw::Bzip2', VERSION_FROM => 'lib/Compress/Raw/Bzip2.pm', INC => "-I$BZIP2_INCLUDE" , @@ -29,7 +29,7 @@ XS => { 'Bzip2.xs' => 'Bzip2.c'}, 'clean' => { FILES => '*.c bzip2.h bzlib.h bzlib_private.h constants.h constants.xs' }, #'depend' => { 'Makefile' => 'config.in' }, - 'dist' => { COMPRESS => 'gzip', + 'dist' => { COMPRESS => 'gzip', TARFLAGS => '-chvf', SUFFIX => 'gz', DIST_DEFAULT => 'MyTrebleCheck tardist', @@ -40,7 +40,7 @@ ? bzip2_files($BZIP2_LIB) : (LIBS => [ "-L$BZIP2_LIB -lbz2 " ]) ), - + ( $] >= 5.005 ? (ABSTRACT_FROM => 'lib/Compress/Raw/Bzip2.pm', @@ -50,9 +50,9 @@ INSTALLDIRS => ($] > 5.010 && $] < 5.011 ? 'perl' : 'site'), - ( eval { ExtUtils::MakeMaker->VERSION(6.46) } + ( eval { ExtUtils::MakeMaker->VERSION(6.46) } ? ( META_MERGE => { - + "meta-spec" => { version => 2 }, no_index => { @@ -60,7 +60,7 @@ }, resources => { - + bugtracker => { web => 'https://github.com/pmqs/Compress-Raw-Bzip2/issues' }, @@ -71,15 +71,15 @@ type => 'git', url => 'git://github.com/pmqs/Compress-Raw-Bzip2.git', web => 'https://github.com/pmqs/Compress-Raw-Bzip2', - }, + }, }, - } - ) + } + ) : () - ), + ), ((ExtUtils::MakeMaker->VERSION() gt '6.30') ? - ('LICENSE' => 'perl') : ()), + ('LICENSE' => 'perl') : ()), ) ; @@ -127,7 +127,7 @@ die "The following names are missing from \@EXPORT in Bzip2.pm\n" . "\t$missing\n" ; } - + #push @names, {name => 'BZ_VERSION', type => 'PV' }; ExtUtils::Constant::WriteConstants( @@ -135,9 +135,9 @@ NAMES => \@names, C_FILE => 'constants.h', XS_FILE => 'constants.xs', - + ); -} +} else { foreach my $name (qw( constants.h constants.xs )) { @@ -166,8 +166,8 @@ foreach my $file (@c_files, @h_files) { copy(catfile($dir, $file), '.') } - - + + @h_files = map { catfile($dir, $_) } @h_files ; my @o_files = map { "$_\$(OBJ_EXT)" } 'Bzip2', @c_files; push @c_files, 'Bzip2.c' ; @@ -177,10 +177,7 @@ 'C' => [ @c_files ] , #'OBJECT' => qq[ @o_files ], 'OBJECT' => q[ $(O_FILES) ], - + ) ; } - - - diff -Nru perl-5.32.1/cpan/Compress-Raw-Bzip2/private/MakeUtil.pm perl-5.34.0/cpan/Compress-Raw-Bzip2/private/MakeUtil.pm --- perl-5.32.1/cpan/Compress-Raw-Bzip2/private/MakeUtil.pm 2020-12-18 09:57:54.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Bzip2/private/MakeUtil.pm 2021-01-20 23:04:44.000000000 +0000 @@ -42,14 +42,14 @@ return $path; } -sub MY::postamble +sub MY::postamble { return '' if $ENV{PERL_CORE} ; my @files = getPerlFiles('MANIFEST'); - # Note: Once you remove all the layers of shell/makefile escaping + # Note: Once you remove all the layers of shell/makefile escaping # the regular expression below reads # # /^\s*local\s*\(\s*\$^W\s*\)/ @@ -215,7 +215,7 @@ foreach (@files) { #if (-l $_ ) { doUpDown($our_sub, $warn_sub, $_) } - #else + #else #{ doUpDownViaCopy($our_sub, $warn_sub, $_) } } @@ -234,7 +234,7 @@ local ($^I) = ($^O eq 'VMS') ? "_bak" : ".bak"; local (@ARGV) = shift; - + while (<>) { print, last if /^__(END|DATA)__/ ; @@ -277,7 +277,7 @@ push @keep, $_; last ; } - + &{ $our_sub }() if $our_sub ; &{ $warn_sub }() if $warn_sub ; push @keep, $_; @@ -334,7 +334,7 @@ Compress::Zlib ); - + my @broken = (); foreach my $module ( grep { ! $thisModule{$_} } @modules) @@ -342,12 +342,12 @@ my $hasVersion = getInstalledVersion($module); # No need to upgrade if the module isn't installed at all - next + next if ! defined $hasVersion; # If already have C::Z version 1, then an upgrade to any of the # IO::Compress modules will not break it. - next + next if $module eq 'Compress::Zlib' && $hasVersion < 2; if ($hasVersion < $version) @@ -370,14 +370,12 @@ { no strict 'refs'; $version = ${ $module . "::VERSION" }; - $version = 0 + $version = 0 } - + return $version; } package MakeUtil ; 1; - - diff -Nru perl-5.32.1/cpan/Compress-Raw-Bzip2/t/000prereq.t perl-5.34.0/cpan/Compress-Raw-Bzip2/t/000prereq.t --- perl-5.32.1/cpan/Compress-Raw-Bzip2/t/000prereq.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Bzip2/t/000prereq.t 2021-05-04 06:52:48.000000000 +0000 @@ -19,13 +19,13 @@ if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 }; - my $VERSION = '2.093'; + my $VERSION = '2.101'; my @NAMES = qw( - + ); my @OPT = qw( - + ); plan tests => 1 + @NAMES + @OPT + $extra ; @@ -43,15 +43,14 @@ eval " require $name " ; if ($@) { - ok 1, "$name not available" + ok 1, "$name not available" } - else + else { my $ver = eval("\$${name}::VERSION"); - is $ver, $VERSION, "$name version should be $VERSION" + is $ver, $VERSION, "$name version should be $VERSION" or diag "$name version is $ver, need $VERSION" ; - } + } } - -} +} diff -Nru perl-5.32.1/cpan/Compress-Raw-Bzip2/t/01bzip2.t perl-5.34.0/cpan/Compress-Raw-Bzip2/t/01bzip2.t --- perl-5.32.1/cpan/Compress-Raw-Bzip2/t/01bzip2.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Bzip2/t/01bzip2.t 2020-10-04 22:17:12.000000000 +0000 @@ -15,8 +15,8 @@ #use CompTestUtils; -BEGIN -{ +BEGIN +{ # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 @@ -25,13 +25,13 @@ my $count = 0 ; if ($] < 5.005) { - $count = 103 ; + $count = 127 ; } elsif ($] >= 5.006) { - $count = 173 ; + $count = 197 ; } else { - $count = 131 ; + $count = 155 ; } plan tests => $count + $extra; @@ -92,12 +92,12 @@ my $hello = "I am a HAL 9000 computer" ; my @hello = split('', $hello) ; - my ($err, $x, $X, $status); - + my ($err, $x, $X, $status); + ok( ($x, $err) = new Compress::Raw::Bzip2(0), "Create bzdeflate object" ); ok $x, "Compress::Raw::Bzip2 ok" ; cmp_ok $err, '==', BZ_OK, "status is BZ_OK" ; - + is $x->uncompressedBytes(), 0, "uncompressedBytes() == 0" ; is $x->compressedBytes(), 0, "compressedBytes() == 0" ; @@ -107,29 +107,29 @@ { $status = $x->bzdeflate($_, $X) ; last unless $status == BZ_RUN_OK ; - + $Answer .= $X ; } - + cmp_ok $status, '==', BZ_RUN_OK, "bzdeflate returned BZ_RUN_OK" ; - + cmp_ok $x->bzflush($X), '==', BZ_RUN_OK, "bzflush returned BZ_RUN_OK" ; $Answer .= $X ; - + is $x->uncompressedBytes(), length $hello, "uncompressedBytes ok" ; is $x->compressedBytes(), length $Answer, "compressedBytes ok" ; - + cmp_ok $x->bzclose($X), '==', BZ_STREAM_END, "bzclose returned BZ_STREAM_END"; $Answer .= $X ; #open F, ">/tmp/xx1"; print F $Answer ; close F; my @Answer = split('', $Answer) ; - + my $k; ok(($k, $err) = new Compress::Raw::Bunzip2(0, 0)); ok $k, "Compress::Raw::Bunzip2 ok" ; cmp_ok $err, '==', BZ_OK, "status is BZ_OK" ; - + is $k->compressedBytes(), 0, "compressedBytes() == 0" ; is $k->uncompressedBytes(), 0, "uncompressedBytes() == 0" ; my $GOT = ''; @@ -140,9 +140,9 @@ $status = $k->bzinflate($_, $Z) ; $GOT .= $Z ; last if $status == BZ_STREAM_END or $status != BZ_OK ; - + } - + cmp_ok $status, '==', BZ_STREAM_END, "Got BZ_STREAM_END" ; is $GOT, $hello, "uncompressed data matches ok" ; is $k->compressedBytes(), length $Answer, "compressedBytes ok" ; @@ -156,34 +156,34 @@ # ============================== my $hello = 6529 ; - + ok my ($x, $err) = new Compress::Raw::Bzip2 (1) ; ok $x ; cmp_ok $err, '==', BZ_OK ; - + my $status; my $Answer = ''; - + cmp_ok $x->bzdeflate($hello, $Answer), '==', BZ_RUN_OK ; - + cmp_ok $x->bzclose($Answer), '==', BZ_STREAM_END, "bzclose returned BZ_STREAM_END"; - + my @Answer = split('', $Answer) ; - + my $k; ok(($k, $err) = new Compress::Raw::Bunzip2(1, 0) ); ok $k ; cmp_ok $err, '==', BZ_OK ; - + #my $GOT = ''; my $GOT ; foreach (@Answer) { $status = $k->bzinflate($_, $GOT) ; last if $status == BZ_STREAM_END or $status != BZ_OK ; - + } - + cmp_ok $status, '==', BZ_STREAM_END ; is $GOT, $hello ; @@ -199,11 +199,11 @@ my $hello = "I am a HAL 9000 computer" ; my @hello = split('', $hello) ; - + ok my ($x, $err) = new Compress::Raw::Bzip2 (1) ; ok $x ; cmp_ok $err, '==', BZ_OK ; - + my $status; my $X; foreach (@hello) @@ -211,32 +211,32 @@ $status = $x->bzdeflate($_, $X) ; last unless $status == BZ_RUN_OK ; } - + cmp_ok $status, '==', BZ_RUN_OK ; - + cmp_ok $x->bzclose($X), '==', BZ_STREAM_END ; - - + + my @Answer = split('', $X) ; - + my $k; ok(($k, $err) = new Compress::Raw::Bunzip2( {-Bufsize => 1, -AppendOutput =>1})); ok $k ; cmp_ok $err, '==', BZ_OK ; - + my $Z; foreach (@Answer) { $status = $k->bzinflate($_, $Z) ; last if $status == BZ_STREAM_END or $status != BZ_OK ; - + } - + cmp_ok $status, '==', BZ_STREAM_END ; is $Z, $hello ; } - + { title "bzdeflate/bzinflate - larger buffer"; @@ -246,34 +246,34 @@ my $contents = '' ; foreach (1 .. 50000) { $contents .= chr int rand 255 } - - + + ok my ($x, $err) = new Compress::Raw::Bzip2(0) ; ok $x ; cmp_ok $err, '==', BZ_OK ; - + my (%X, $Y, %Z, $X, $Z); #cmp_ok $x->bzdeflate($contents, $X{key}), '==', BZ_RUN_OK ; cmp_ok $x->bzdeflate($contents, $X), '==', BZ_RUN_OK ; - + #$Y = $X{key} ; $Y = $X ; - - + + #cmp_ok $x->bzflush($X{key}), '==', BZ_RUN_OK ; #$Y .= $X{key} ; cmp_ok $x->bzclose($X), '==', BZ_STREAM_END ; $Y .= $X ; - - - + + + my $keep = $Y ; my $k; ok(($k, $err) = new Compress::Raw::Bunzip2(0, 0) ); ok $k ; cmp_ok $err, '==', BZ_OK ; - + #cmp_ok $k->bzinflate($Y, $Z{key}), '==', BZ_STREAM_END ; #ok $contents eq $Z{key} ; cmp_ok $k->bzinflate($Y, $Z), '==', BZ_STREAM_END ; @@ -284,16 +284,16 @@ ok (($k, $err) = new Compress::Raw::Bunzip2(1, 0)) ; ok $k ; cmp_ok $err, '==', BZ_OK ; - - my $s ; + + my $s ; my $out ; my @bits = split('', $keep) ; foreach my $bit (@bits) { $s = $k->bzinflate($bit, $out) ; } - + cmp_ok $s, '==', BZ_STREAM_END ; - + ok $contents eq $out ; @@ -305,14 +305,14 @@ title "bzinflate - check remaining buffer after BZ_STREAM_END, Consume $consume"; ok my $x = new Compress::Raw::Bzip2(0) ; - + my ($X, $Y, $Z); cmp_ok $x->bzdeflate($hello, $X), '==', BZ_RUN_OK; cmp_ok $x->bzclose($Y), '==', BZ_STREAM_END; $X .= $Y ; - + ok my $k = new Compress::Raw::Bunzip2(0, $consume) ; - + my $first = substr($X, 0, 2) ; my $remember_first = $first ; my $last = substr($X, 2) ; @@ -343,8 +343,8 @@ title "ConsumeInput and a read-only buffer trapped" ; ok my $k = new Compress::Raw::Bunzip2(0, 1) ; - - my $Z; + + my $Z; eval { $k->bzinflate("abc", $Z) ; }; like $@, mkErr("Compress::Raw::Bunzip2::bzinflate input parameter cannot be read-only when ConsumeInput is specified"); @@ -360,22 +360,22 @@ foreach (1 .. 5000) { $contents .= chr int rand 255 } ok my $x = new Compress::Raw::Bzip2(1) ; - + my $X ; my $status = $x->bzdeflate(substr($contents,0), $X); cmp_ok $status, '==', BZ_RUN_OK ; - + cmp_ok $x->bzclose($X), '==', BZ_STREAM_END ; - + my $append = "Appended" ; $X .= $append ; - + ok my $k = new Compress::Raw::Bunzip2(1, 1) ; - - my $Z; + + my $Z; my $keep = $X ; $status = $k->bzinflate(substr($X, 0), $Z) ; - + cmp_ok $status, '==', BZ_STREAM_END ; #print "status $status X [$X]\n" ; is $contents, $Z ; @@ -391,34 +391,34 @@ my $hello = "I am a HAL 9000 computer" ; my @hello = split('', $hello) ; - my ($err, $x, $X, $status); - + my ($err, $x, $X, $status); + ok( ($x, $err) = new Compress::Raw::Bzip2 (0) ); ok $x ; cmp_ok $err, '==', BZ_OK ; - + $X = "" ; my $Answer = ''; foreach (@hello) { $status = $x->bzdeflate($_, $X) ; last unless $status == BZ_RUN_OK ; - + $Answer .= $X ; } - + cmp_ok $status, '==', BZ_RUN_OK ; - + cmp_ok $x->bzclose($X), '==', BZ_STREAM_END ; $Answer .= $X ; - + my @Answer = split('', $Answer) ; - + my $k; ok(($k, $err) = new Compress::Raw::Bunzip2(1, 0) ); ok $k ; cmp_ok $err, '==', BZ_OK ; - + my $GOT ; my $Z; $Z = 1 ;#x 2000 ; @@ -427,7 +427,7 @@ $status = $k->bzinflate($_, $GOT) ; last if $status == BZ_STREAM_END or $status != BZ_OK ; } - + cmp_ok $status, '==', BZ_STREAM_END ; is $GOT, $hello ; @@ -447,29 +447,129 @@ cmp_ok $x->bzdeflate($data, $X), '==', BZ_RUN_OK ; cmp_ok $x->bzclose($X), '==', BZ_STREAM_END ; - + my $append = "Appended" ; $X .= $append ; my $keep = $X ; - + ok my $k = new Compress::Raw::Bunzip2 ( 1, 1); - + # cmp_ok $k->bzinflate(substr($X, 0, -1), $Z), '==', BZ_STREAM_END ; ; cmp_ok $k->bzinflate(substr($X, 0), $Z), '==', BZ_STREAM_END ; ; - + ok $hello eq $Z ; is $X, $append; - + $X = $keep ; $Z = ''; ok $k = new Compress::Raw::Bunzip2 ( 1, 0); - + cmp_ok $k->bzinflate(substr($X, 0, -1), $Z), '==', BZ_STREAM_END ; ; #cmp_ok $k->bzinflate(substr($X, 0), $Z), '==', BZ_STREAM_END ; ; - + ok $hello eq $Z ; is $X, $keep; - + +} + + +{ + title 'RT#132734: test inflate append OOK output parameter'; + # https://github.com/pmqs/Compress-Raw-Bzip2/issues/2 + + my $hello = "I am a HAL 9000 computer" ; + my $data = $hello ; + + my($X, $Z); + + ok my $x = new Compress::Raw::Bzip2 ( {-AppendOutput => 1} ); + + cmp_ok $x->bzdeflate($data, $X), '==', BZ_RUN_OK ; + + cmp_ok $x->bzclose($X), '==', BZ_STREAM_END ; + + ok my $k = new Compress::Raw::Bunzip2 ( {-AppendOutput => 1, + -ConsumeInput => 1} ) ; + $Z = 'prev. ' ; + substr($Z, 0, 4, ''); # chop off first 4 characters using offset + cmp_ok $Z, 'eq', '. ' ; + + # use Devel::Peek ; Dump($Z) ; # shows OOK flag + + # if (1) { # workaround + # my $prev = $Z; + # undef $Z ; + # $Z = $prev ; + # } + + cmp_ok $k->bzinflate($X, $Z), '==', BZ_STREAM_END ; + # use Devel::Peek ; Dump($Z) ; # No OOK flag + + cmp_ok $Z, 'eq', ". $hello" ; +} + + +{ + title 'RT#132734: test deflate append OOK output parameter'; + # https://github.com/pmqs/Compress-Raw-Bzip2/issues/2 + + my $hello = "I am a HAL 9000 computer" ; + my $data = $hello ; + + my($X, $Z); + + $X = 'prev. ' ; + substr($X, 0, 6, ''); # chop off all characters using offset + cmp_ok $X, 'eq', '' ; + + # use Devel::Peek ; Dump($X) ; # shows OOK flag + + # if (1) { # workaround + # my $prev = $Z; + # undef $Z ; + # $Z = $prev ; + # } + + ok my $x = new Compress::Raw::Bzip2 ( { -AppendOutput => 1 } ); + + cmp_ok $x->bzdeflate($data, $X), '==', BZ_RUN_OK ; + + cmp_ok $x->bzclose($X), '==', BZ_STREAM_END ; + + ok my $k = new Compress::Raw::Bunzip2 ( {-AppendOutput => 1, + -ConsumeInput => 1} ) ; + cmp_ok $k->bzinflate($X, $Z), '==', BZ_STREAM_END ; + + is $Z, $hello ; +} + + +{ + title 'RT#132734: test flush append OOK output parameter'; + # https://github.com/pmqs/Compress-Raw-Bzip2/issues/2 + + my $hello = "I am a HAL 9000 computer" ; + my $data = $hello ; + + my($X, $Z); + + my $F = 'prev. ' ; + substr($F, 0, 6, ''); # chop off all characters using offset + cmp_ok $F, 'eq', '' ; + + # use Devel::Peek ; Dump($F) ; # shows OOK flag + + ok my $x = new Compress::Raw::Bzip2 ( {-AppendOutput => 1 }); + + cmp_ok $x->bzdeflate($data, $X), '==', BZ_RUN_OK ; + + cmp_ok $x->bzclose($F), '==', BZ_STREAM_END ; + + ok my $k = new Compress::Raw::Bunzip2 ( {-AppendOutput => 1, + -ConsumeInput => 1} ) ; + cmp_ok $k->bzinflate($X . $F, $Z), '==', BZ_STREAM_END ; + + is $Z, $hello ; } exit if $] < 5.006 ; @@ -480,32 +580,32 @@ my $hello = "I am a HAL 9000 computer" ; my @hello = split('', $hello) ; - my ($err, $x, $X, $status); - + my ($err, $x, $X, $status); + ok( ($x, $err) = new Compress::Raw::Bzip2 (1) ); ok $x ; cmp_ok $err, '==', BZ_OK ; - + $X = "" ; my $Answer = ''; foreach (@hello) { $status = $x->bzdeflate($_, substr($Answer, length($Answer))) ; last unless $status == BZ_RUN_OK ; - + } - + cmp_ok $status, '==', BZ_RUN_OK ; - + cmp_ok $x->bzclose(substr($Answer, length($Answer))), '==', BZ_STREAM_END ; - + my @Answer = split('', $Answer) ; - + my $k; ok(($k, $err) = new Compress::Raw::Bunzip2(1, 0) ); ok $k ; cmp_ok $err, '==', BZ_OK ; - + my $GOT = ''; my $Z; $Z = 1 ;#x 2000 ; @@ -514,7 +614,7 @@ $status = $k->bzinflate($_, substr($GOT, length($GOT))) ; last if $status == BZ_STREAM_END or $status != BZ_OK ; } - + cmp_ok $status, '==', BZ_STREAM_END ; is $GOT, $hello ; @@ -526,32 +626,32 @@ my $hello = "I am a HAL 9000 computer" ; my @hello = split('', $hello) ; - my ($err, $x, $X, $status); - + my ($err, $x, $X, $status); + ok( ($x, $err) = new Compress::Raw::Bzip2 (1) ); ok $x ; cmp_ok $err, '==', BZ_OK ; - + $X = "" ; my $Answer = ''; foreach (@hello) { $status = $x->bzdeflate($_, substr($Answer, 0)) ; last unless $status == BZ_RUN_OK ; - + } - + cmp_ok $status, '==', BZ_RUN_OK ; - + cmp_ok $x->bzclose(substr($Answer, 0)), '==', BZ_STREAM_END ; - + my @Answer = split('', $Answer) ; - + my $k; ok(($k, $err) = new Compress::Raw::Bunzip2(1, 0) ); ok $k ; cmp_ok $err, '==', BZ_OK ; - + my $GOT = ''; my $Z; $Z = 1 ;#x 2000 ; @@ -560,8 +660,7 @@ $status = $k->bzinflate($_, substr($GOT, 0)) ; last if $status == BZ_STREAM_END or $status != BZ_OK ; } - + cmp_ok $status, '==', BZ_STREAM_END ; is $GOT, $hello ; } - diff -Nru perl-5.32.1/cpan/Compress-Raw-Bzip2/t/09limitoutput.t perl-5.34.0/cpan/Compress-Raw-Bzip2/t/09limitoutput.t --- perl-5.32.1/cpan/Compress-Raw-Bzip2/t/09limitoutput.t 2020-12-18 09:57:54.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Bzip2/t/09limitoutput.t 2021-01-20 23:04:44.000000000 +0000 @@ -13,8 +13,8 @@ use Test::More ; use CompTestUtils; -BEGIN -{ +BEGIN +{ # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 @@ -22,7 +22,7 @@ plan tests => 88 + $extra ; - use_ok('Compress::Raw::Bzip2') ; + use_ok('Compress::Raw::Bzip2') ; } @@ -30,7 +30,7 @@ my $hello = "I am a HAL 9000 computer" x 2001; my $tmp = $hello ; -my ($err, $x, $X, $status); +my ($err, $x, $X, $status); ok( ($x, $err) = new Compress::Raw::Bzip2 (1)); ok $x ; @@ -52,7 +52,7 @@ ok $GOT eq $hello; } - + sub getOut { my $x = ''; return \$x } for my $bufsize (1, 2, 3, 13, 4096, 1024*10) @@ -68,7 +68,7 @@ )); ok $k ; cmp_ok $err, '==', BZ_OK, " status is BZ_OK" ; - + is $k->total_in_lo32(), 0, " total_in_lo32 == 0" ; is $k->total_out_lo32(), 0, " total_out_lo32 == 0" ; my $GOT = getOut(); @@ -83,7 +83,7 @@ last if $status != BZ_OK; $deltaOK = 0 if length($GOT) - $prev > $bufsize; } - + ok $deltaOK, " Output Delta never > $bufsize"; cmp_ok $looped, '>=', 1, " looped $looped"; is length($tmp), 0, " length of input buffer is zero"; @@ -98,7 +98,7 @@ { my $obj = shift ; my $input = shift; - + my $data ; 1 while $obj->bzinflate($input, $data) != BZ_STREAM_END ; return \$data ; @@ -106,9 +106,9 @@ { title "regression test"; - - my ($err, $x, $X, $status); - + + my ($err, $x, $X, $status); + ok( ($x, $err) = new Compress::Raw::Bzip2 (1)); ok $x ; cmp_ok $err, '==', BZ_OK, " status is BZ_OK" ; @@ -117,11 +117,11 @@ my $line2 = "second line\n" ; my $text = $line1 . $line2 ; my $tmp = $text; - + my $out ; $status = $x->bzdeflate($tmp, $out) ; cmp_ok $status, '==', BZ_RUN_OK, " status is BZ_RUN_OK" ; - + cmp_ok $x->bzclose($out), '==', BZ_STREAM_END, " bzclose returned BZ_STREAM_END" ; my $k; @@ -130,10 +130,9 @@ #LimitOutput => 1 )); - + my $c = getit($k, $out); is $$c, $text; - - -} + +} diff -Nru perl-5.32.1/cpan/Compress-Raw-Bzip2/t/19nonpv.t perl-5.34.0/cpan/Compress-Raw-Bzip2/t/19nonpv.t --- perl-5.32.1/cpan/Compress-Raw-Bzip2/t/19nonpv.t 2020-12-18 09:57:54.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Bzip2/t/19nonpv.t 2021-01-20 23:04:44.000000000 +0000 @@ -12,8 +12,8 @@ use Test::More ; use CompTestUtils; -BEGIN -{ +BEGIN +{ # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 @@ -23,7 +23,7 @@ use_ok('Compress::Raw::Bzip2', 2) ; } - + my $hello = <uncompressedBytes(), 0, "uncompressedBytes() == 0" ; is $x->compressedBytes(), 0, "compressedBytes() == 0" ; @@ -54,38 +54,36 @@ $Answer = *Answer; $status = $x->bzdeflate($hello, $Answer) ; cmp_ok $status, '==', BZ_RUN_OK, "bzdeflate returned BZ_RUN_OK" ; - + $X = *X; cmp_ok $x->bzflush($X), '==', BZ_RUN_OK, "bzflush returned BZ_RUN_OK" ; $Answer .= $X ; - + is $x->uncompressedBytes(), length $hello, "uncompressedBytes ok" ; is $x->compressedBytes(), length $Answer, "compressedBytes ok" ; - + $X = *X; cmp_ok $x->bzclose($X), '==', BZ_STREAM_END, "bzclose returned BZ_STREAM_END"; $Answer .= $X ; my @Answer = split('', $Answer) ; - + my $k; ok(($k, $err) = new Compress::Raw::Bunzip2(0, 0)); ok $k, "Compress::Raw::Bunzip2 ok" ; cmp_ok $err, '==', BZ_OK, "status is BZ_OK" ; - + is $k->compressedBytes(), 0, "compressedBytes() == 0" ; is $k->uncompressedBytes(), 0, "uncompressedBytes() == 0" ; my $GOT = *GOT; $GOT = *GOT; my $Z; $status = $k->bzinflate($Answer, $GOT) ; - - + + cmp_ok $status, '==', BZ_STREAM_END, "Got BZ_STREAM_END" ; is $GOT, $hello, "uncompressed data matches ok" ; is $k->compressedBytes(), length $Answer, "compressedBytes ok" ; is $k->uncompressedBytes(), length $hello , "uncompressedBytes ok"; } - - diff -Nru perl-5.32.1/cpan/Compress-Raw-Bzip2/t/compress/CompTestUtils.pm perl-5.34.0/cpan/Compress-Raw-Bzip2/t/compress/CompTestUtils.pm --- perl-5.32.1/cpan/Compress-Raw-Bzip2/t/compress/CompTestUtils.pm 2020-12-18 09:57:54.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Bzip2/t/compress/CompTestUtils.pm 2021-01-20 23:04:44.000000000 +0000 @@ -9,13 +9,13 @@ #use lib qw(t t/compress); use Carp ; -#use Test::More ; +#use Test::More ; sub title { - #diag "" ; + #diag "" ; ok(1, $_[0]) ; #diag "" ; } @@ -26,7 +26,7 @@ } BEGIN { - eval { + eval { require File::Temp; } ; @@ -38,7 +38,7 @@ our ($index); $index = '00000'; - + sub new { my $self = shift ; @@ -72,7 +72,7 @@ $index = '00000'; our ($useTempFile); our ($useTempDir); - + sub new { my $self = shift ; @@ -115,11 +115,11 @@ # autogenerate the name if none supplied $_ = "tmpdir" . $$ . "X" . $index ++ . ".tmp" ; } - foreach (@_) - { + foreach (@_) + { rmtree $_, {verbose => 0, safe => 1} - if -d $_; - mkdir $_, 0777 + if -d $_; + mkdir $_, 0777 } bless [ @_ ], $self ; } @@ -131,10 +131,10 @@ if (! $useTempFile) { my $self = shift ; - foreach (@$self) - { + foreach (@$self) + { rmtree $_, {verbose => 0, safe => 1} - if -d $_ ; + if -d $_ ; } } } @@ -150,15 +150,15 @@ { my $pos = tell($f); seek($f, 0,0); - @strings = <$f> ; + @strings = <$f> ; seek($f, 0, $pos); } else { - open (F, "<$f") + open (F, "<$f") or croak "Cannot open $f: $!\n" ; binmode F; - @strings = ; + @strings = ; close F ; } @@ -175,7 +175,7 @@ { my($filename, @strings) = @_ ; 1 while unlink $filename ; - open (F, ">$filename") + open (F, ">$filename") or croak "Cannot open $filename: $!\n" ; binmode F; foreach (@strings) { @@ -191,10 +191,10 @@ my ($uncomp) = "" ; my $line = "" ; - my $fil = gzopen($filename, "rb") + my $fil = gzopen($filename, "rb") or croak "Cannopt open '$filename': $Compress::Zlib::gzerrno" ; - $uncomp .= $line + $uncomp .= $line while $fil->gzread($line) > 0; $fil->gzclose ; @@ -248,7 +248,7 @@ some text EOM - ok my $x = new IO::Compress::Gzip $name, %opts + ok my $x = new IO::Compress::Gzip $name, %opts or diag "GzipError is $IO::Compress::Gzip::GzipError" ; ok $x->write($string) ; ok $x->close ; @@ -562,9 +562,9 @@ } my $out = ''; - my $o = new IO::Uncompress::AnyUncompress \$data, - Append => 1, - Transparent => 0, + my $o = new IO::Uncompress::AnyUncompress \$data, + Append => 1, + Transparent => 0, RawInflate => 1, UnLzma => 1, @opts @@ -622,10 +622,10 @@ } my $out = ''; - my $o = new IO::Uncompress::AnyUncompress \$data, - MultiStream => 1, - Append => 1, - Transparent => 0, + my $o = new IO::Uncompress::AnyUncompress \$data, + MultiStream => 1, + Append => 1, + Transparent => 0, RawInflate => 1, UnLzma => 1, @opts diff -Nru perl-5.32.1/cpan/Compress-Raw-Bzip2/typemap perl-5.34.0/cpan/Compress-Raw-Bzip2/typemap --- perl-5.32.1/cpan/Compress-Raw-Bzip2/typemap 2020-12-18 09:57:54.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Bzip2/typemap 2021-01-20 23:04:44.000000000 +0000 @@ -30,7 +30,6 @@ else if (sv_derived_from($arg, \"${ntype}\")) { IV tmp = SvIV(getInnerObject($arg)) ; $var = INT2PTR($type, tmp); - } else croak(\"$var is not of type ${ntype}\") @@ -49,6 +48,3 @@ T_PV sv_setpv((SV*)$arg, $var); - - - diff -Nru perl-5.32.1/cpan/Compress-Raw-Zlib/config.in perl-5.34.0/cpan/Compress-Raw-Zlib/config.in --- perl-5.32.1/cpan/Compress-Raw-Zlib/config.in 2020-12-18 09:57:54.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Zlib/config.in 2021-01-20 23:04:44.000000000 +0000 @@ -3,11 +3,11 @@ # written by Paul Marquess # last modified 28th October 2003 # version 2.000 -# -# +# +# # This file is used to control which zlib library will be used by # Compress::Zlib -# +# # See to the sections below in the README file for details of how to # use this file. # diff -Nru perl-5.32.1/cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm perl-5.34.0/cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm --- perl-5.32.1/cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm 2021-05-04 06:52:48.000000000 +0000 @@ -10,12 +10,12 @@ use bytes ; our ($VERSION, $XS_VERSION, @ISA, @EXPORT, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD, %DEFLATE_CONSTANTS, @DEFLATE_CONSTANTS); -$VERSION = '2.093'; -$XS_VERSION = $VERSION; +$VERSION = '2.101'; +$XS_VERSION = $VERSION; $VERSION = eval $VERSION; @ISA = qw(Exporter); -%EXPORT_TAGS = ( flush => [qw{ +%EXPORT_TAGS = ( flush => [qw{ Z_NO_FLUSH Z_PARTIAL_FLUSH Z_SYNC_FLUSH @@ -23,30 +23,30 @@ Z_FINISH Z_BLOCK }], - level => [qw{ + level => [qw{ Z_NO_COMPRESSION Z_BEST_SPEED Z_BEST_COMPRESSION Z_DEFAULT_COMPRESSION }], - strategy => [qw{ + strategy => [qw{ Z_FILTERED Z_HUFFMAN_ONLY Z_RLE Z_FIXED Z_DEFAULT_STRATEGY }], - status => [qw{ + status => [qw{ Z_OK Z_STREAM_END Z_NEED_DICT Z_ERRNO Z_STREAM_ERROR - Z_DATA_ERROR - Z_MEM_ERROR - Z_BUF_ERROR - Z_VERSION_ERROR - }], + Z_DATA_ERROR + Z_MEM_ERROR + Z_BUF_ERROR + Z_VERSION_ERROR + }], ); %DEFLATE_CONSTANTS = %EXPORT_TAGS; @@ -54,12 +54,12 @@ # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. -@DEFLATE_CONSTANTS = +@DEFLATE_CONSTANTS = @EXPORT = qw( ZLIB_VERSION ZLIB_VERNUM - + OS_CODE MAX_MEM_LEVEL @@ -125,13 +125,13 @@ require XSLoader; XSLoader::load('Compress::Raw::Zlib', $XS_VERSION); 1; -} +} or do { require DynaLoader; local @ISA = qw(DynaLoader); - bootstrap Compress::Raw::Zlib $XS_VERSION ; + bootstrap Compress::Raw::Zlib $XS_VERSION ; }; - + use constant Parse_any => 0x01; use constant Parse_unsigned => 0x02; @@ -153,7 +153,7 @@ sub ParseParameters { - my $level = shift || 0 ; + my $level = shift || 0 ; my $sub = (caller($level + 1))[3] ; #local $Carp::CarpLevel = 1 ; @@ -186,13 +186,13 @@ $self->{Error} = $error ; return $retval; } - + #sub getError #{ # my $self = shift ; # return $self->{Error} ; #} - + sub Compress::Raw::Zlib::Parameters::parse { my $self = shift ; @@ -211,10 +211,10 @@ @entered = () ; } elsif (@_ == 1) { - my $href = $_[0] ; + my $href = $_[0] ; return $self->setError("Expected even number of parameters, got 1") if ! defined $href or ! ref $href or ref $href ne "HASH" ; - + foreach my $key (keys %$href) { push @entered, $key ; push @entered, \$href->{$key} ; @@ -224,7 +224,7 @@ my $count = @_; return $self->setError("Expected even number of parameters, got $count") if $count % 2 != 0 ; - + for my $i (0.. $count / 2 - 1) { push @entered, $_[2* $i] ; push @entered, \$_[2* $i+1] ; @@ -239,7 +239,7 @@ my ($first_only, $sticky, $type, $value) = @$v ; my $x ; - $self->_checkType($key, \$value, $type, 0, \$x) + $self->_checkType($key, \$value, $type, 0, \$x) or return undef ; $key = lc $key; @@ -260,7 +260,7 @@ $key =~ s/^-// ; my $canonkey = lc $key; - + if ($got->{$canonkey} && ($firstTime || ! $got->{$canonkey}[OFF_FIRST_ONLY] )) { @@ -275,7 +275,7 @@ else { push (@Bad, $key) } } - + if (@Bad) { my ($bad) = join(", ", @Bad) ; return $self->setError("unknown key value(s) @Bad") ; @@ -319,7 +319,7 @@ return $self->setError("Parameter '$key' must be an unsigned int, got '$value'") if $validate && $value !~ /^\d+$/; - $$output = defined $value ? $value : 0 ; + $$output = defined $value ? $value : 0 ; return 1; } elsif ($type & Parse_signed) @@ -329,19 +329,19 @@ return $self->setError("Parameter '$key' must be a signed int, got '$value'") if $validate && $value !~ /^-?\d+$/; - $$output = defined $value ? $value : 0 ; + $$output = defined $value ? $value : 0 ; return 1 ; } elsif ($type & Parse_boolean) { return $self->setError("Parameter '$key' must be an int, got '$value'") if $validate && defined $value && $value !~ /^\d*$/; - $$output = defined $value ? $value != 0 : 0 ; + $$output = defined $value ? $value != 0 : 0 ; return 1; } # elsif ($type & Parse_string) # { -# $$output = defined $value ? $value : "" ; +# $$output = defined $value ? $value : "" ; # return 1; # } @@ -374,7 +374,7 @@ return $self->{Got}{lc $name}[OFF_FIXED] ; } -our $OPTIONS_deflate = +our $OPTIONS_deflate = { 'AppendOutput' => [1, 1, Parse_boolean, 0], 'CRC32' => [1, 1, Parse_boolean, 0], @@ -394,7 +394,7 @@ my $pkg = shift ; my ($got) = ParseParameters(0, $OPTIONS_deflate, @_); - croak "Compress::Raw::Zlib::Deflate::new: Bufsize must be >= 1, you specified " . + croak "Compress::Raw::Zlib::Deflate::new: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; @@ -408,11 +408,11 @@ if ($windowBits & MAX_WBITS()) == 0 ; _deflateInit($flags, - $got->value('Level'), - $got->value('Method'), - $windowBits, - $got->value('MemLevel'), - $got->value('Strategy'), + $got->value('Level'), + $got->value('Method'), + $windowBits, + $got->value('MemLevel'), + $got->value('Strategy'), $got->value('Bufsize'), $got->value('Dictionary')) ; @@ -431,7 +431,7 @@ } -our $OPTIONS_inflate = +our $OPTIONS_inflate = { 'AppendOutput' => [1, 1, Parse_boolean, 0], 'LimitOutput' => [1, 1, Parse_boolean, 0], @@ -439,7 +439,7 @@ 'ADLER32' => [1, 1, Parse_boolean, 0], 'ConsumeInput' => [1, 1, Parse_boolean, 1], 'Bufsize' => [1, 1, Parse_unsigned, 4096], - + 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()], 'Dictionary' => [1, 1, Parse_any, ""], } ; @@ -449,7 +449,7 @@ my $pkg = shift ; my ($got) = ParseParameters(0, $OPTIONS_inflate, @_); - croak "Compress::Raw::Zlib::Inflate::new: Bufsize must be >= 1, you specified " . + croak "Compress::Raw::Zlib::Inflate::new: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; @@ -465,7 +465,7 @@ $windowBits += MAX_WBITS() if ($windowBits & MAX_WBITS()) == 0 ; - _inflateInit($flags, $windowBits, $got->value('Bufsize'), + _inflateInit($flags, $windowBits, $got->value('Bufsize'), $got->value('Dictionary')) ; } @@ -489,13 +489,13 @@ 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'Bufsize' => [1, 1, Parse_unsigned, 4096], - + 'WindowBits' => [1, 1, Parse_signed, -MAX_WBITS()], 'Dictionary' => [1, 1, Parse_any, ""], }, @_) ; - croak "Compress::Raw::Zlib::InflateScan::new: Bufsize must be >= 1, you specified " . + croak "Compress::Raw::Zlib::InflateScan::new: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; @@ -505,7 +505,7 @@ $flags |= FLAG_ADLER if $got->value('ADLER32') ; #$flags |= FLAG_CONSUME_INPUT if $got->value('ConsumeInput') ; - _inflateScanInit($flags, $got->value('WindowBits'), $got->value('Bufsize'), + _inflateScanInit($flags, $got->value('WindowBits'), $got->value('Bufsize'), '') ; } @@ -518,7 +518,7 @@ 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'Bufsize' => [1, 1, Parse_unsigned, 4096], - + 'Level' => [1, 1, Parse_signed, Z_DEFAULT_COMPRESSION()], 'Method' => [1, 1, Parse_unsigned, Z_DEFLATED()], 'WindowBits' => [1, 1, Parse_signed, - MAX_WBITS()], @@ -526,7 +526,7 @@ 'Strategy' => [1, 1, Parse_unsigned, Z_DEFAULT_STRATEGY()], }, @_) ; - croak "Compress::Raw::Zlib::InflateScan::createDeflateStream: Bufsize must be >= 1, you specified " . + croak "Compress::Raw::Zlib::InflateScan::createDeflateStream: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; @@ -536,11 +536,11 @@ $flags |= FLAG_ADLER if $got->value('ADLER32') ; $pkg->_createDeflateStream($flags, - $got->value('Level'), - $got->value('Method'), - $got->value('WindowBits'), - $got->value('MemLevel'), - $got->value('Strategy'), + $got->value('Level'), + $got->value('Method'), + $got->value('WindowBits'), + $got->value('MemLevel'), + $got->value('Strategy'), $got->value('Bufsize'), ) ; @@ -556,10 +556,10 @@ if ($status == Z_OK() && $_[2]) { my $byte = ' '; - + $status = $self->scan(\$byte, $_[1]) ; } - + return $status ; } @@ -570,14 +570,14 @@ 'Level' => [1, 1, Parse_signed, undef], 'Strategy' => [1, 1, Parse_unsigned, undef], 'Bufsize' => [1, 1, Parse_unsigned, undef], - }, + }, @_) ; croak "Compress::Raw::Zlib::deflateParams needs Level and/or Strategy" unless $got->parsed('Level') + $got->parsed('Strategy') + $got->parsed('Bufsize'); - croak "Compress::Raw::Zlib::Inflate::deflateParams: Bufsize must be >= 1, you specified " . + croak "Compress::Raw::Zlib::Inflate::deflateParams: Bufsize must be >= 1, you specified " . $got->value('Bufsize') if $got->parsed('Bufsize') && $got->value('Bufsize') <= 1; @@ -586,7 +586,7 @@ $flags |= 2 if $got->parsed('Strategy') ; $flags |= 4 if $got->parsed('Bufsize') ; - $self->_deflateParams($flags, $got->value('Level'), + $self->_deflateParams($flags, $got->value('Level'), $got->value('Strategy'), $got->value('Bufsize')); } @@ -931,18 +931,18 @@ while (<>) { $status = $x->deflate($_, $output) ; - + $status == Z_OK or die "deflation failed\n" ; - + print $output ; } - + $status = $x->flush($output) ; - + $status == Z_OK or die "deflation failed\n" ; - + print $output ; =head1 Compress::Raw::Zlib::Inflate @@ -1210,26 +1210,26 @@ use strict ; use warnings ; - + use Compress::Raw::Zlib; - + my $x = new Compress::Raw::Zlib::Inflate() or die "Cannot create a inflation stream\n" ; - + my $input = '' ; binmode STDIN; binmode STDOUT; - + my ($output, $status) ; while (read(STDIN, $input, 4096)) { $status = $x->inflate($input, $output) ; - + print $output ; - + last if $status != Z_OK ; } - + die "inflation failed\n" unless $status == Z_STREAM_END ; @@ -1243,16 +1243,16 @@ use strict ; use warnings ; - + use Compress::Raw::Zlib; - + my $x = new Compress::Raw::Zlib::Inflate(LimitOutput => 1) or die "Cannot create a inflation stream\n" ; - + my $input = '' ; binmode STDIN; binmode STDOUT; - + my ($output, $status) ; OUTER: @@ -1269,7 +1269,7 @@ } while ($status == Z_OK && length $input); } - + die "inflation failed\n" unless $status == Z_STREAM_END ; @@ -1324,24 +1324,24 @@ use strict ; use warnings ; - + use Compress::Raw::Zlib; - + my $x = new Compress::Raw::Zlib::Inflate() or die "Cannot create a inflation stream\n" ; - + my $input = '' ; - + my ($output, $status) ; while (read(STDIN, $input, 4096)) { $status = $x->inflate($input, $output) ; - + print $output ; - + last if $status != Z_OK ; } - + die "inflation failed\n" unless $status == Z_STREAM_END ; @@ -1391,16 +1391,16 @@ use strict ; use warnings ; - + use Compress::Raw::Zlib; - + my $x = new Compress::Raw::Zlib::Inflate(LimitOutput => 1) or die "Cannot create a inflation stream\n" ; - + my $input = '' ; binmode STDIN; binmode STDOUT; - + my ($output, $status) ; OUTER: @@ -1417,7 +1417,7 @@ } while ($status == Z_OK && length $input); } - + die "inflation failed\n" unless $status == Z_STREAM_END ; @@ -1559,7 +1559,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -1596,8 +1596,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright (c) 2005-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - diff -Nru perl-5.32.1/cpan/Compress-Raw-Zlib/Makefile.PL perl-5.34.0/cpan/Compress-Raw-Zlib/Makefile.PL --- perl-5.32.1/cpan/Compress-Raw-Zlib/Makefile.PL 2020-12-18 09:57:54.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Zlib/Makefile.PL 2021-01-20 23:04:44.000000000 +0000 @@ -32,7 +32,7 @@ # ExtUtils::Install. # Don't ask if MM_USE_DEFAULT is set -- enables perl core building on cygwin -if ($^O =~ /cygwin/i and $ExtUtils::Install::VERSION < 1.39 +if ($^O =~ /cygwin/i and $ExtUtils::Install::VERSION < 1.39 and not ($ENV{PERL_MM_USE_DEFAULT} or $ENV{PERL_CORE})) { print < 'Compress::Raw::Zlib', VERSION_FROM => 'lib/Compress/Raw/Zlib.pm', INC => "-I$ZLIB_INCLUDE" , @@ -79,7 +79,7 @@ XS => { 'Zlib.xs' => 'Zlib.c'}, 'depend' => { 'Makefile' => 'config.in' }, 'clean' => { FILES => '*.c constants.h constants.xs' }, - 'dist' => { COMPRESS => 'gzip', + 'dist' => { COMPRESS => 'gzip', TARFLAGS => '-chvf', SUFFIX => 'gz', DIST_DEFAULT => 'MyTrebleCheck tardist', @@ -94,9 +94,9 @@ INSTALLDIRS => ($] >= 5.009 && $] < 5.011 ? 'perl' : 'site'), - ( eval { ExtUtils::MakeMaker->VERSION(6.46) } + ( eval { ExtUtils::MakeMaker->VERSION(6.46) } ? ( META_MERGE => { - + "meta-spec" => { version => 2 }, no_index => { @@ -104,7 +104,7 @@ }, resources => { - + bugtracker => { web => 'https://github.com/pmqs/Compress-Raw-Zlib/issues' }, @@ -115,15 +115,15 @@ type => 'git', url => 'git://github.com/pmqs/Compress-Raw-Zlib.git', web => 'https://github.com/pmqs/Compress-Raw-Zlib', - }, + }, }, - } - ) + } + ) : () ), ((ExtUtils::MakeMaker->VERSION() gt '6.30') ? - ('LICENSE' => 'perl') : ()), + ('LICENSE' => 'perl') : ()), ) ; @@ -201,13 +201,13 @@ die "The following names are missing from \@EXPORT in Zlib.pm\n" . "\t$missing\n" ; } - + push @names, { name => 'ZLIB_VERSION', type => 'PV' }; - - push @names, map { { name => $_, - macro => version_Macro $verSpecificNames{$_} - } - } + + push @names, map { { name => $_, + macro => version_Macro $verSpecificNames{$_} + } + } keys %verSpecificNames ; ExtUtils::Constant::WriteConstants( @@ -215,10 +215,10 @@ NAMES => \@names, C_FILE => 'constants.h', XS_FILE => 'constants.xs', - + ); -} +} else { foreach my $name (qw( constants.h constants.xs )) { @@ -263,14 +263,14 @@ # check parsed values my @missing = () ; - die "The following keys are missing from $CONFIG [@missing]\n" + die "The following keys are missing from $CONFIG [@missing]\n" if @missing = keys %Parsed ; $ZLIB_INCLUDE = defined $ENV{'ZLIB_INCLUDE'} - ? $ENV{'ZLIB_INCLUDE'} + ? $ENV{'ZLIB_INCLUDE'} : $Info{'INCLUDE'} ; - $ZLIB_LIB = defined $ENV{'ZLIB_LIB'} - ?$ENV{'ZLIB_LIB'} + $ZLIB_LIB = defined $ENV{'ZLIB_LIB'} + ?$ENV{'ZLIB_LIB'} : $Info{'LIB'} ; if ($^O eq 'VMS') { @@ -279,19 +279,19 @@ } my $y = defined $ENV{'OLD_ZLIB'} - ? $ENV{'OLD_ZLIB'} + ? $ENV{'OLD_ZLIB'} : $Info{'OLD_ZLIB'} ; $OLD_ZLIB = '-DOLD_ZLIB' if $y and $y =~ /^yes|on|true|1$/i; - my $x = defined $ENV{'BUILD_ZLIB'} - ? $ENV{'BUILD_ZLIB'} + my $x = defined $ENV{'BUILD_ZLIB'} + ? $ENV{'BUILD_ZLIB'} : $Info{'BUILD_ZLIB'} ; if ($x and $x =~ /^yes|on|true|1$/i ) { $BUILD_ZLIB = 1 ; - # ZLIB_LIB & ZLIB_INCLUDE must point to the same place when + # ZLIB_LIB & ZLIB_INCLUDE must point to the same place when # BUILD_ZLIB is specified. die "INCLUDE & LIB must be the same when BUILD_ZLIB is True\n" if $ZLIB_LIB ne $ZLIB_INCLUDE ; @@ -309,8 +309,8 @@ print "Building Zlib enabled\n" ; } - $GZIP_OS_CODE = defined $ENV{'GZIP_OS_CODE'} - ? $ENV{'GZIP_OS_CODE'} + $GZIP_OS_CODE = defined $ENV{'GZIP_OS_CODE'} + ? $ENV{'GZIP_OS_CODE'} : $Info{'GZIP_OS_CODE'} ; die "GZIP_OS_CODE not 'AUTO_DETECT' or a number between 0 and 255\n" @@ -322,7 +322,7 @@ print "Auto Detect Gzip OS Code..\n" ; $GZIP_OS_CODE = getOSCode() ; } - + my $name = getOSname($GZIP_OS_CODE); print "Setting Gzip OS Code to $GZIP_OS_CODE [$name]\n" ; @@ -347,22 +347,22 @@ my @h_files = (); my @c_files = (); - + if (-f catfile($dir, "infback.c")) { # zlib 1.2.0 or greater # - @h_files = qw(crc32.h inffast.h inflate.h trees.h zconf.in.h - zutil.h deflate.h inffixed.h inftrees.h zconf.h - zlib.h + @h_files = qw(crc32.h inffast.h inflate.h trees.h zconf.in.h + zutil.h deflate.h inffixed.h inftrees.h zconf.h + zlib.h ); @c_files = qw(adler32 crc32 infback inflate uncompr - compress deflate inffast inftrees - trees zutil + compress deflate inffast inftrees + trees zutil ); } else { # zlib 1.1.x - + @h_files = qw(deflate.h infcodes.h inftrees.h zconf.h zutil.h infblock.h inffast.h infutil.h zlib.h ); @@ -371,20 +371,20 @@ inftrees infcodes infutil inffast ); } - + @h_files = map { catfile($dir, $_) } @h_files ; my @o_files = map { "$_\$(OBJ_EXT)" } 'Zlib', @c_files; @c_files = map { "$_.c" } 'Zlib', @c_files ; foreach my $file (@c_files) { copy(catfile($dir, $file), '.') } - + return ( #'H' => [ @h_files ], 'C' => [ @c_files ] , #'OBJECT' => qq[ @o_files ], 'OBJECT' => q[ $(O_FILES) ], - + ) ; } @@ -418,7 +418,7 @@ [ '' => 255, 'Unknown OS' ], ); - %OSnames = map { $$_[1] => $$_[2] } + %OSnames = map { $$_[1] => $$_[2] } @GZIP_OS_Names ; } @@ -447,4 +447,3 @@ } # end of file Makefile.PL - diff -Nru perl-5.32.1/cpan/Compress-Raw-Zlib/private/MakeUtil.pm perl-5.34.0/cpan/Compress-Raw-Zlib/private/MakeUtil.pm --- perl-5.32.1/cpan/Compress-Raw-Zlib/private/MakeUtil.pm 2020-12-18 09:57:54.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Zlib/private/MakeUtil.pm 2021-01-20 23:04:44.000000000 +0000 @@ -42,14 +42,14 @@ return $path; } -sub MY::postamble +sub MY::postamble { return '' if $ENV{PERL_CORE} ; my @files = getPerlFiles('MANIFEST'); - # Note: Once you remove all the layers of shell/makefile escaping + # Note: Once you remove all the layers of shell/makefile escaping # the regular expression below reads # # /^\s*local\s*\(\s*\$^W\s*\)/ @@ -215,7 +215,7 @@ foreach (@files) { #if (-l $_ ) { doUpDown($our_sub, $warn_sub, $_) } - #else + #else #{ doUpDownViaCopy($our_sub, $warn_sub, $_) } } @@ -234,7 +234,7 @@ local ($^I) = ($^O eq 'VMS') ? "_bak" : ".bak"; local (@ARGV) = shift; - + while (<>) { print, last if /^__(END|DATA)__/ ; @@ -277,7 +277,7 @@ push @keep, $_; last ; } - + &{ $our_sub }() if $our_sub ; &{ $warn_sub }() if $warn_sub ; push @keep, $_; @@ -334,7 +334,7 @@ Compress::Zlib ); - + my @broken = (); foreach my $module ( grep { ! $thisModule{$_} } @modules) @@ -342,12 +342,12 @@ my $hasVersion = getInstalledVersion($module); # No need to upgrade if the module isn't installed at all - next + next if ! defined $hasVersion; # If already have C::Z version 1, then an upgrade to any of the # IO::Compress modules will not break it. - next + next if $module eq 'Compress::Zlib' && $hasVersion < 2; if ($hasVersion < $version) @@ -370,14 +370,12 @@ { no strict 'refs'; $version = ${ $module . "::VERSION" }; - $version = 0 + $version = 0 } - + return $version; } package MakeUtil ; 1; - - diff -Nru perl-5.32.1/cpan/Compress-Raw-Zlib/t/01version.t perl-5.34.0/cpan/Compress-Raw-Zlib/t/01version.t --- perl-5.32.1/cpan/Compress-Raw-Zlib/t/01version.t 2020-12-18 09:57:54.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Zlib/t/01version.t 2021-01-20 23:04:44.000000000 +0000 @@ -11,8 +11,8 @@ use Test::More ; -BEGIN -{ +BEGIN +{ # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 @@ -20,13 +20,13 @@ plan tests => 2 + $extra ; - use_ok('Compress::Raw::Zlib', 2) ; + use_ok('Compress::Raw::Zlib', 2) ; } # Check zlib_version and ZLIB_VERSION are the same. SKIP: { - skip "TEST_SKIP_VERSION_CHECK is set", 1 + skip "TEST_SKIP_VERSION_CHECK is set", 1 if $ENV{TEST_SKIP_VERSION_CHECK}; my $zlib_h = ZLIB_VERSION ; my $libz = Compress::Raw::Zlib::zlib_version; @@ -35,12 +35,11 @@ or diag <= 5.006) { - $count = 325 ; + $count = 349 ; } else { - $count = 280 ; + $count = 304 ; } plan tests => $count + $extra; @@ -50,7 +50,7 @@ # Check zlib_version and ZLIB_VERSION are the same. SKIP: { - skip "TEST_SKIP_VERSION_CHECK is set", 1 + skip "TEST_SKIP_VERSION_CHECK is set", 1 if $ENV{TEST_SKIP_VERSION_CHECK}; is Compress::Raw::Zlib::zlib_version, ZLIB_VERSION, "ZLIB_VERSION matches Compress::Raw::Zlib::zlib_version" ; @@ -104,12 +104,12 @@ my $hello = "I am a HAL 9000 computer" ; my @hello = split('', $hello) ; - my ($err, $x, $X, $status); - + my ($err, $x, $X, $status); + ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( -Bufsize => 1 ), "Create deflate object" ); ok $x, "Compress::Raw::Zlib::Deflate ok" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - + ok ! defined $x->msg() ; is $x->total_in(), 0, "total_in() == 0" ; is $x->total_out(), 0, "total_out() == 0" ; @@ -120,26 +120,26 @@ { $status = $x->deflate($_, $X) ; last unless $status == Z_OK ; - + $Answer .= $X ; } - + cmp_ok $status, '==', Z_OK, "deflate returned Z_OK" ; - + cmp_ok $x->flush($X), '==', Z_OK, "flush returned Z_OK" ; $Answer .= $X ; - + ok ! defined $x->msg() ; is $x->total_in(), length $hello, "total_in ok" ; is $x->total_out(), length $Answer, "total_out ok" ; - + my @Answer = split('', $Answer) ; - + my $k; ok(($k, $err) = new Compress::Raw::Zlib::Inflate( {-Bufsize => 1}) ); ok $k, "Compress::Raw::Zlib::Inflate ok" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - + ok ! defined $k->msg(), "No error messages" ; is $k->total_in(), 0, "total_in() == 0" ; is $k->total_out(), 0, "total_out() == 0" ; @@ -151,9 +151,9 @@ $status = $k->inflate($_, $Z) ; $GOT .= $Z ; last if $status == Z_STREAM_END or $status != Z_OK ; - + } - + cmp_ok $status, '==', Z_STREAM_END, "Got Z_STREAM_END" ; is $GOT, $hello, "uncompressed data matches ok" ; ok ! defined $k->msg(), "No error messages" ; @@ -168,34 +168,34 @@ # ============================== my $hello = 6529 ; - + ok my ($x, $err) = new Compress::Raw::Zlib::Deflate ( -Bufsize => 1, -AppendOutput => 1 ) ; ok $x ; cmp_ok $err, '==', Z_OK ; - + my $status; my $Answer = ''; - + cmp_ok $x->deflate($hello, $Answer), '==', Z_OK ; - + cmp_ok $x->flush($Answer), '==', Z_OK ; - + my @Answer = split('', $Answer) ; - + my $k; ok(($k, $err) = new Compress::Raw::Zlib::Inflate( {-Bufsize => 1, -AppendOutput =>1}) ); ok $k ; cmp_ok $err, '==', Z_OK ; - + #my $GOT = ''; my $GOT ; foreach (@Answer) { $status = $k->inflate($_, $GOT) ; last if $status == Z_STREAM_END or $status != Z_OK ; - + } - + cmp_ok $status, '==', Z_STREAM_END ; is $GOT, $hello ; @@ -211,11 +211,11 @@ my $hello = "I am a HAL 9000 computer" ; my @hello = split('', $hello) ; - + ok my ($x, $err) = new Compress::Raw::Zlib::Deflate ( {-Bufsize => 1, -AppendOutput =>1} ) ; ok $x ; cmp_ok $err, '==', Z_OK ; - + my $status; my $X; foreach (@hello) @@ -223,32 +223,32 @@ $status = $x->deflate($_, $X) ; last unless $status == Z_OK ; } - + cmp_ok $status, '==', Z_OK ; - + cmp_ok $x->flush($X), '==', Z_OK ; - - + + my @Answer = split('', $X) ; - + my $k; ok(($k, $err) = new Compress::Raw::Zlib::Inflate( {-Bufsize => 1, -AppendOutput =>1})); ok $k ; cmp_ok $err, '==', Z_OK ; - + my $Z; foreach (@Answer) { $status = $k->inflate($_, $Z) ; last if $status == Z_STREAM_END or $status != Z_OK ; - + } - + cmp_ok $status, '==', Z_STREAM_END ; is $Z, $hello ; } - + { title "deflate/inflate - larger buffer"; @@ -258,34 +258,34 @@ my $contents = '' ; foreach (1 .. 50000) { $contents .= chr int rand 255 } - - + + ok my ($x, $err) = new Compress::Raw::Zlib::Deflate() ; ok $x ; cmp_ok $err, '==', Z_OK ; - + my (%X, $Y, %Z, $X, $Z); #cmp_ok $x->deflate($contents, $X{key}), '==', Z_OK ; cmp_ok $x->deflate($contents, $X), '==', Z_OK ; - + #$Y = $X{key} ; $Y = $X ; - - + + #cmp_ok $x->flush($X{key}), '==', Z_OK ; #$Y .= $X{key} ; cmp_ok $x->flush($X), '==', Z_OK ; $Y .= $X ; - - - + + + my $keep = $Y ; my $k; ok(($k, $err) = new Compress::Raw::Zlib::Inflate() ); ok $k ; cmp_ok $err, '==', Z_OK ; - + #cmp_ok $k->inflate($Y, $Z{key}), '==', Z_STREAM_END ; #ok $contents eq $Z{key} ; cmp_ok $k->inflate($Y, $Z), '==', Z_STREAM_END ; @@ -296,16 +296,16 @@ ok (($k, $err) = new Compress::Raw::Zlib::Inflate(-AppendOutput => 1)) ; ok $k ; cmp_ok $err, '==', Z_OK ; - - my $s ; + + my $s ; my $out ; my @bits = split('', $keep) ; foreach my $bit (@bits) { $s = $k->inflate($bit, $out) ; } - + cmp_ok $s, '==', Z_STREAM_END ; - + ok $contents eq $out ; @@ -319,16 +319,16 @@ my $dictionary = "hello" ; ok my $x = new Compress::Raw::Zlib::Deflate({-Level => Z_BEST_COMPRESSION, -Dictionary => $dictionary}) ; - + my $dictID = $x->dict_adler() ; my ($X, $Y, $Z); cmp_ok $x->deflate($hello, $X), '==', Z_OK; cmp_ok $x->flush($Y), '==', Z_OK; $X .= $Y ; - + ok my $k = new Compress::Raw::Zlib::Inflate(-Dictionary => $dictionary) ; - + cmp_ok $k->inflate($X, $Z), '==', Z_STREAM_END; is $k->dict_adler(), $dictID; is $hello, $Z ; @@ -338,18 +338,18 @@ title 'inflate - check remaining buffer after Z_STREAM_END'; # and that ConsumeInput works. # =================================================== - + for my $consume ( 0 .. 1) { ok my $x = new Compress::Raw::Zlib::Deflate(-Level => Z_BEST_COMPRESSION ) ; - + my ($X, $Y, $Z); cmp_ok $x->deflate($hello, $X), '==', Z_OK; cmp_ok $x->flush($Y), '==', Z_OK; $X .= $Y ; - + ok my $k = new Compress::Raw::Zlib::Inflate( -ConsumeInput => $consume) ; - + my $first = substr($X, 0, 2) ; my $remember_first = $first ; my $last = substr($X, 2) ; @@ -381,12 +381,12 @@ title 'Check - MAX_WBITS'; # ================= - + my $hello = "Test test test test test"; my @hello = split('', $hello) ; - - ok my ($x, $err) = - new Compress::Raw::Zlib::Deflate ( -Bufsize => 1, + + ok my ($x, $err) = + new Compress::Raw::Zlib::Deflate ( -Bufsize => 1, -WindowBits => -MAX_WBITS(), -AppendOutput => 1 ) ; ok $x ; @@ -399,42 +399,42 @@ $status = $x->deflate($_, $Answer) ; last unless $status == Z_OK ; } - + cmp_ok $status, '==', Z_OK ; - + cmp_ok $x->flush($Answer), '==', Z_OK ; - + my @Answer = split('', $Answer) ; - # Undocumented corner -- extra byte needed to get inflate to return - # Z_STREAM_END when done. - push @Answer, " " ; - + # Undocumented corner -- extra byte needed to get inflate to return + # Z_STREAM_END when done. + push @Answer, " " ; + my $k; - ok(($k, $err) = new Compress::Raw::Zlib::Inflate( - {-Bufsize => 1, + ok(($k, $err) = new Compress::Raw::Zlib::Inflate( + {-Bufsize => 1, -AppendOutput =>1, -WindowBits => -MAX_WBITS()})) ; ok $k ; cmp_ok $err, '==', Z_OK ; - + my $GOT = ''; foreach (@Answer) { $status = $k->inflate($_, $GOT) ; last if $status == Z_STREAM_END or $status != Z_OK ; - + } - + cmp_ok $status, '==', Z_STREAM_END ; is $GOT, $hello ; - + } SKIP: { title 'inflateSync'; - skip "inflateSync needs zlib 1.2.1 or better, you have $Zlib_ver", 22 + skip "inflateSync needs zlib 1.2.1 or better, you have $Zlib_ver", 22 if ZLIB_VERNUM() < 0x1210 ; # create a deflate stream with flush points @@ -443,31 +443,31 @@ my $goodbye = "Will I dream?" x 2010; my ($x, $err, $answer, $X, $Z, $status); my $Answer ; - + #use Devel::Peek ; ok(($x, $err) = new Compress::Raw::Zlib::Deflate(AppendOutput => 1)) ; ok $x ; cmp_ok $err, '==', Z_OK ; - + cmp_ok $x->deflate($hello, $Answer), '==', Z_OK; - + # create a flush point cmp_ok $x->flush($Answer, Z_FULL_FLUSH), '==', Z_OK ; - + my $len1 = length $Answer; - + cmp_ok $x->deflate($goodbye, $Answer), '==', Z_OK; - + cmp_ok $x->flush($Answer), '==', Z_OK ; my $len2 = length($Answer) - $len1 ; - + my ($first, @Answer) = split('', $Answer) ; - + my $k; ok(($k, $err) = new Compress::Raw::Zlib::Inflate()) ; ok $k ; cmp_ok $err, '==', Z_OK ; - + cmp_ok $k->inflate($first, $Z), '==', Z_OK; # skip to the first flush point. @@ -479,7 +479,7 @@ } cmp_ok $status, '==', Z_OK; - + my $GOT = ''; foreach (@Answer) { @@ -489,7 +489,7 @@ # print "x $status\n"; last if $status == Z_STREAM_END or $status != Z_OK ; } - + cmp_ok $status, '==', Z_DATA_ERROR ; is $GOT, $goodbye ; @@ -499,21 +499,21 @@ $rest =~ s/^(.)//; my $initial = $1 ; - + ok(($k, $err) = new Compress::Raw::Zlib::Inflate(ConsumeInput => 0)) ; ok $k ; cmp_ok $err, '==', Z_OK ; - + cmp_ok $k->inflate($initial, $Z), '==', Z_OK; # Skip to the flush point $status = $k->inflateSync($rest); cmp_ok $status, '==', Z_OK or diag "status '$status'\nlength rest is " . length($rest) . "\n" ; - + is length($rest), $len2, "expected compressed output"; - - $GOT = ''; + + $GOT = ''; cmp_ok $k->inflate($rest, $GOT), '==', Z_DATA_ERROR, "inflate returns Z_DATA_ERROR"; is $GOT, $goodbye ; } @@ -524,7 +524,7 @@ my $hello = "I am a HAL 9000 computer" x 2001 ; my $goodbye = "Will I dream?" x 2010; my ($x, $input, $err, $answer, $X, $status, $Answer); - + ok(($x, $err) = new Compress::Raw::Zlib::Deflate( -AppendOutput => 1, -Level => Z_DEFAULT_COMPRESSION, @@ -534,11 +534,11 @@ ok $x->get_Level() == Z_DEFAULT_COMPRESSION; ok $x->get_Strategy() == Z_DEFAULT_STRATEGY; - + $status = $x->deflate($hello, $Answer) ; cmp_ok $status, '==', Z_OK ; $input .= $hello; - + # error cases eval { $x->deflateParams() }; like $@, mkErr('^Compress::Raw::Zlib::deflateParams needs Level and\/or Strategy'); @@ -551,54 +551,54 @@ is $x->get_Level(), Z_DEFAULT_COMPRESSION; is $x->get_Strategy(), Z_DEFAULT_STRATEGY; - + # change both Level & Strategy $status = $x->deflateParams(-Level => Z_BEST_SPEED, -Strategy => Z_HUFFMAN_ONLY, -Bufsize => 1234) ; cmp_ok $status, '==', Z_OK ; - + is $x->get_Level(), Z_BEST_SPEED; is $x->get_Strategy(), Z_HUFFMAN_ONLY; - - # change both Level & Strategy again without any calls to deflate + + # change both Level & Strategy again without any calls to deflate $status = $x->deflateParams(-Level => Z_DEFAULT_COMPRESSION, -Strategy => Z_DEFAULT_STRATEGY, -Bufsize => 1234) ; cmp_ok $status, '==', Z_OK ; - + is $x->get_Level(), Z_DEFAULT_COMPRESSION; is $x->get_Strategy(), Z_DEFAULT_STRATEGY; - + $status = $x->deflate($goodbye, $Answer) ; cmp_ok $status, '==', Z_OK ; $input .= $goodbye; - - # change only Level + + # change only Level $status = $x->deflateParams(-Level => Z_NO_COMPRESSION) ; cmp_ok $status, '==', Z_OK ; - + is $x->get_Level(), Z_NO_COMPRESSION; is $x->get_Strategy(), Z_DEFAULT_STRATEGY; - + $status = $x->deflate($goodbye, $Answer) ; cmp_ok $status, '==', Z_OK ; $input .= $goodbye; - + # change only Strategy $status = $x->deflateParams(-Strategy => Z_FILTERED) ; cmp_ok $status, '==', Z_OK ; - + is $x->get_Level(), Z_NO_COMPRESSION; is $x->get_Strategy(), Z_FILTERED; - + $status = $x->deflate($goodbye, $Answer) ; cmp_ok $status, '==', Z_OK ; $input .= $goodbye; - + cmp_ok $x->flush($Answer), '==', Z_OK ; - + my $k; ok(($k, $err) = new Compress::Raw::Zlib::Inflate()) ; ok $k ; cmp_ok $err, '==', Z_OK ; - + my $Z; $status = $k->inflate($Answer, $Z) ; @@ -611,8 +611,8 @@ title "ConsumeInput and a read-only buffer trapped" ; ok my $k = new Compress::Raw::Zlib::Inflate(-ConsumeInput => 1) ; - - my $Z; + + my $Z; eval { $k->inflate("abc", $Z) ; }; like $@, mkErr("Compress::Raw::Zlib::Inflate::inflate input parameter cannot be read-only when ConsumeInput is specified"); @@ -628,22 +628,22 @@ foreach (1 .. 5000) { $contents .= chr int rand 255 } ok my $x = new Compress::Raw::Zlib::Deflate(-AppendOutput => 1) ; - + my $X ; my $status = $x->deflate(substr($contents,0), $X); cmp_ok $status, '==', Z_OK ; - + cmp_ok $x->flush($X), '==', Z_OK ; - + my $append = "Appended" ; $X .= $append ; - + ok my $k = new Compress::Raw::Zlib::Inflate(-AppendOutput => 1) ; - - my $Z; + + my $Z; my $keep = $X ; $status = $k->inflate(substr($X, 0), $Z) ; - + cmp_ok $status, '==', Z_STREAM_END ; #print "status $status X [$X]\n" ; is $contents, $Z ; @@ -659,34 +659,34 @@ my $hello = "I am a HAL 9000 computer" ; my @hello = split('', $hello) ; - my ($err, $x, $X, $status); - + my ($err, $x, $X, $status); + ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( -Bufsize => 1 ) ); ok $x ; cmp_ok $err, '==', Z_OK ; - + $X = "" ; my $Answer = ''; foreach (@hello) { $status = $x->deflate($_, $X) ; last unless $status == Z_OK ; - + $Answer .= $X ; } - + cmp_ok $status, '==', Z_OK ; - + cmp_ok $x->flush($X), '==', Z_OK ; $Answer .= $X ; - + my @Answer = split('', $Answer) ; - + my $k; ok(($k, $err) = new Compress::Raw::Zlib::Inflate(-AppendOutput => 1) ); ok $k ; cmp_ok $err, '==', Z_OK ; - + my $GOT ; my $Z; $Z = 1 ;#x 2000 ; @@ -695,7 +695,7 @@ $status = $k->inflate($_, $GOT) ; last if $status == Z_STREAM_END or $status != Z_OK ; } - + cmp_ok $status, '==', Z_STREAM_END ; is $GOT, $hello ; @@ -715,35 +715,134 @@ cmp_ok $x->deflate($data, $X), '==', Z_OK ; cmp_ok $x->flush($X), '==', Z_OK ; - + my $append = "Appended" ; $X .= $append ; my $keep = $X ; - + ok my $k = new Compress::Raw::Zlib::Inflate ( -AppendOutput => 1, -ConsumeInput => 1 ) ; - + cmp_ok $k->inflate(substr($X, 0, -1), $Z), '==', Z_STREAM_END ; ; - + ok $hello eq $Z ; is $X, $append; - + $X = $keep ; $Z = ''; ok $k = new Compress::Raw::Zlib::Inflate ( -AppendOutput => 1, -ConsumeInput => 0 ) ; - + cmp_ok $k->inflate(substr($X, 0, -1), $Z), '==', Z_STREAM_END ; ; #cmp_ok $k->inflate(substr($X, 0), $Z), '==', Z_STREAM_END ; ; - + ok $hello eq $Z ; is $X, $keep; - + +} + +{ + title 'RT#132734: test inflate append OOK output parameter'; + # https://github.com/pmqs/Compress-Raw-Zlib/issues/3 + + my $hello = "I am a HAL 9000 computer" ; + my $data = $hello ; + + my($X, $Z); + + ok my $x = new Compress::Raw::Zlib::Deflate ( -AppendOutput => 1 ); + + cmp_ok $x->deflate($data, $X), '==', Z_OK ; + + cmp_ok $x->flush($X), '==', Z_OK ; + + ok my $k = new Compress::Raw::Zlib::Inflate ( -AppendOutput => 1, + -ConsumeInput => 1 ) ; + $Z = 'prev. ' ; + substr($Z, 0, 4, ''); # chop off first 4 characters using offset + cmp_ok $Z, 'eq', '. ' ; + + # use Devel::Peek ; Dump($Z) ; # shows OOK flag + + # if (1) { # workaround + # my $prev = $Z; + # undef $Z ; + # $Z = $prev ; + # } + + cmp_ok $k->inflate($X, $Z), '==', Z_STREAM_END ; + # use Devel::Peek ; Dump($Z) ; # No OOK flag + + cmp_ok $Z, 'eq', ". $hello" ; +} + + +{ + title 'RT#132734: test deflate append OOK output parameter'; + # https://github.com/pmqs/Compress-Raw-Zlib/issues/3 + + my $hello = "I am a HAL 9000 computer" ; + my $data = $hello ; + + my($X, $Z); + + $X = 'prev. ' ; + substr($X, 0, 6, ''); # chop off all characters using offset + cmp_ok $X, 'eq', '' ; + + # use Devel::Peek ; Dump($X) ; # shows OOK flag + + # if (1) { # workaround + # my $prev = $Z; + # undef $Z ; + # $Z = $prev ; + # } + + ok my $x = new Compress::Raw::Zlib::Deflate ( -AppendOutput => 1 ); + + cmp_ok $x->deflate($data, $X), '==', Z_OK ; + + cmp_ok $x->flush($X), '==', Z_OK ; + + ok my $k = new Compress::Raw::Zlib::Inflate ( -AppendOutput => 1, + -ConsumeInput => 1 ) ; + cmp_ok $k->inflate($X, $Z), '==', Z_STREAM_END ; + + is $Z, $hello ; +} + + +{ + title 'RT#132734: test flush append OOK output parameter'; + # https://github.com/pmqs/Compress-Raw-Zlib/issues/3 + + my $hello = "I am a HAL 9000 computer" ; + my $data = $hello ; + + my($X, $Z); + + my $F = 'prev. ' ; + substr($F, 0, 6, ''); # chop off all characters using offset + cmp_ok $F, 'eq', '' ; + + # use Devel::Peek ; Dump($F) ; # shows OOK flag + + ok my $x = new Compress::Raw::Zlib::Deflate ( -AppendOutput => 1 ); + + cmp_ok $x->deflate($data, $X), '==', Z_OK ; + + cmp_ok $x->flush($F), '==', Z_OK ; + + ok my $k = new Compress::Raw::Zlib::Inflate ( -AppendOutput => 1, + -ConsumeInput => 1 ) ; + cmp_ok $k->inflate($X . $F, $Z), '==', Z_STREAM_END ; + + is $Z, $hello ; } SKIP: { - skip "InflateScan needs zlib 1.2.1 or better, you have $Zlib_ver", 1 + skip "InflateScan needs zlib 1.2.1 or better, you have $Zlib_ver", 1 if ZLIB_VERNUM() < 0x1210 ; # regression - check that resetLastBlockByte can cope with a NULL @@ -758,44 +857,44 @@ title "gzip mode"; # ================ - skip "gzip mode needs zlib 1.2.1 or better, you have $Zlib_ver", 13 + skip "gzip mode needs zlib 1.2.1 or better, you have $Zlib_ver", 13 if ZLIB_VERNUM() < 0x1210 ; my $hello = "I am a HAL 9000 computer" ; my @hello = split('', $hello) ; - my ($err, $x, $X, $status); - - ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( + my ($err, $x, $X, $status); + + ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( WindowBits => WANT_GZIP , AppendOutput => 1 ), "Create deflate object" ); ok $x, "Compress::Raw::Zlib::Deflate ok" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - + $status = $x->deflate($hello, $X) ; cmp_ok $status, '==', Z_OK, "deflate returned Z_OK" ; - + cmp_ok $x->flush($X), '==', Z_OK, "flush returned Z_OK" ; - - my ($k, $GOT); - ($k, $err) = new Compress::Raw::Zlib::Inflate( + + my ($k, $GOT); + ($k, $err) = new Compress::Raw::Zlib::Inflate( WindowBits => WANT_GZIP , ConsumeInput => 0 , AppendOutput => 1); ok $k, "Compress::Raw::Zlib::Inflate WANT_GZIP ok" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - + $status = $k->inflate($X, $GOT) ; cmp_ok $status, '==', Z_STREAM_END, "Got Z_STREAM_END" ; is $GOT, $hello, "uncompressed data matches ok" ; $GOT = ''; - ($k, $err) = new Compress::Raw::Zlib::Inflate( + ($k, $err) = new Compress::Raw::Zlib::Inflate( WindowBits => WANT_GZIP_OR_ZLIB , AppendOutput => 1); ok $k, "Compress::Raw::Zlib::Inflate WANT_GZIP_OR_ZLIB ok" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - + $status = $k->inflate($X, $GOT) ; cmp_ok $status, '==', Z_STREAM_END, "Got Z_STREAM_END" ; is $GOT, $hello, "uncompressed data matches ok" ; @@ -810,42 +909,42 @@ # then read with WANT_GZIP_OR_ZLIB - thi swill work # ================ - skip "gzip mode needs zlib 1.2.1 or better, you have $Zlib_ver", 12 + skip "gzip mode needs zlib 1.2.1 or better, you have $Zlib_ver", 12 if ZLIB_VERNUM() < 0x1210 ; my $hello = "I am a HAL 9000 computer" ; - my ($err, $x, $X, $status); - - ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( + my ($err, $x, $X, $status); + + ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( WindowBits => WANT_GZIP , AppendOutput => 1 ), "Create deflate object" ); ok $x, "Compress::Raw::Zlib::Deflate ok" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - + $status = $x->deflate($hello, $X) ; cmp_ok $status, '==', Z_OK, "deflate returned Z_OK" ; - + cmp_ok $x->flush($X), '==', Z_OK, "flush returned Z_OK" ; - - my ($k, $GOT); - ($k, $err) = new Compress::Raw::Zlib::Inflate( + + my ($k, $GOT); + ($k, $err) = new Compress::Raw::Zlib::Inflate( WindowBits => MAX_WBITS , ConsumeInput => 0 , AppendOutput => 1); ok $k, "Compress::Raw::Zlib::Inflate WANT_GZIP ok" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - + $status = $k->inflate($X, $GOT) ; cmp_ok $status, '==', Z_DATA_ERROR, "Got Z_DATA_ERROR" ; $GOT = ''; - ($k, $err) = new Compress::Raw::Zlib::Inflate( + ($k, $err) = new Compress::Raw::Zlib::Inflate( WindowBits => WANT_GZIP_OR_ZLIB , AppendOutput => 1); ok $k, "Compress::Raw::Zlib::Inflate WANT_GZIP_OR_ZLIB ok" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - + $status = $k->inflate($X, $GOT) ; cmp_ok $status, '==', Z_STREAM_END, "Got Z_STREAM_END" ; is $GOT, $hello, "uncompressed data matches ok" ; @@ -859,41 +958,41 @@ # then read with WANT_GZIP_OR_ZLIB - thi swill work # ================ - skip "gzip mode needs zlib 1.2.1 or better, you have $Zlib_ver", 12 + skip "gzip mode needs zlib 1.2.1 or better, you have $Zlib_ver", 12 if ZLIB_VERNUM() < 0x1210 ; my $hello = "I am a HAL 9000 computer" ; - my ($err, $x, $X, $status); - - ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( + my ($err, $x, $X, $status); + + ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( AppendOutput => 1 ), "Create deflate object" ); ok $x, "Compress::Raw::Zlib::Deflate ok" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - + $status = $x->deflate($hello, $X) ; cmp_ok $status, '==', Z_OK, "deflate returned Z_OK" ; - + cmp_ok $x->flush($X), '==', Z_OK, "flush returned Z_OK" ; - - my ($k, $GOT); - ($k, $err) = new Compress::Raw::Zlib::Inflate( + + my ($k, $GOT); + ($k, $err) = new Compress::Raw::Zlib::Inflate( WindowBits => WANT_GZIP , ConsumeInput => 0 , AppendOutput => 1); ok $k, "Compress::Raw::Zlib::Inflate WANT_GZIP ok" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - + $status = $k->inflate($X, $GOT) ; cmp_ok $status, '==', Z_DATA_ERROR, "Got Z_DATA_ERROR" ; $GOT = ''; - ($k, $err) = new Compress::Raw::Zlib::Inflate( + ($k, $err) = new Compress::Raw::Zlib::Inflate( WindowBits => WANT_GZIP_OR_ZLIB , AppendOutput => 1); ok $k, "Compress::Raw::Zlib::Inflate WANT_GZIP_OR_ZLIB ok" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - + $status = $k->inflate($X, $GOT) ; cmp_ok $status, '==', Z_STREAM_END, "Got Z_STREAM_END" ; is $GOT, $hello, "uncompressed data matches ok" ; @@ -918,17 +1017,17 @@ title "repeated calls to flush after some compression"; my $hello = "I am a HAL 9000 computer" ; - my ($err, $x, $X, $status); - + my ($err, $x, $X, $status); + ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( ), "Create deflate object" ); isa_ok $x, "Compress::Raw::Zlib::deflateStream" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - + $status = $x->deflate($hello, $X) ; cmp_ok $status, '==', Z_OK, "deflate returned Z_OK" ; - - cmp_ok $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "flush returned Z_OK" ; - cmp_ok $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "second flush returned Z_OK" ; + + cmp_ok $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "flush returned Z_OK" ; + cmp_ok $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "second flush returned Z_OK" ; is $X, "", "no output from second flush"; } @@ -936,14 +1035,14 @@ title "repeated calls to flush - no compression"; my $hello = "I am a HAL 9000 computer" ; - my ($err, $x, $X, $status); - + my ($err, $x, $X, $status); + ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( ), "Create deflate object" ); isa_ok $x, "Compress::Raw::Zlib::deflateStream" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - - cmp_ok $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "flush returned Z_OK" ; - cmp_ok $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "second flush returned Z_OK" ; + + cmp_ok $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "flush returned Z_OK" ; + cmp_ok $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "second flush returned Z_OK" ; is $X, "", "no output from second flush"; } @@ -963,14 +1062,14 @@ title "RT #122695: sync flush appending extra empty uncompressed block"; my $hello = "I am a HAL 9000 computer" ; - my ($err, $x, $X, $status); - + my ($err, $x, $X, $status); + ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( ), "Create deflate object" ); isa_ok $x, "Compress::Raw::Zlib::deflateStream" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - - cmp_ok $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "flush returned Z_OK" ; - cmp_ok $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "second flush returned Z_OK" ; + + cmp_ok $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "flush returned Z_OK" ; + cmp_ok $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "second flush returned Z_OK" ; is $X, "", "no output from second flush"; } @@ -982,36 +1081,36 @@ my $hello = "I am a HAL 9000 computer" ; my @hello = split('', $hello) ; - my ($err, $x, $X, $status); - + my ($err, $x, $X, $status); + ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( -Bufsize => 1, -AppendOutput => 1 ) ); ok $x ; cmp_ok $err, '==', Z_OK ; - + $X = "" ; my $Answer = ''; foreach (@hello) { $status = $x->deflate($_, substr($Answer, length($Answer))) ; last unless $status == Z_OK ; - + } - + cmp_ok $status, '==', Z_OK ; - + cmp_ok $x->flush(substr($Answer, length($Answer))), '==', Z_OK ; - + #cmp_ok length $Answer, ">", 0 ; my @Answer = split('', $Answer) ; - - + + my $k; ok(($k, $err) = new Compress::Raw::Zlib::Inflate(-AppendOutput => 1) ); ok $k ; cmp_ok $err, '==', Z_OK ; - + my $GOT = ''; my $Z; $Z = 1 ;#x 2000 ; @@ -1020,7 +1119,7 @@ $status = $k->inflate($_, substr($GOT, length($GOT))) ; last if $status == Z_STREAM_END or $status != Z_OK ; } - + cmp_ok $status, '==', Z_STREAM_END ; is $GOT, $hello ; @@ -1032,33 +1131,33 @@ my $hello = "I am a HAL 9000 computer" ; my @hello = split('', $hello) ; - my ($err, $x, $X, $status); - + my ($err, $x, $X, $status); + ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( -Bufsize => 1, -AppendOutput => 1 ) ); ok $x ; cmp_ok $err, '==', Z_OK ; - + $X = "" ; my $Answer = ''; foreach (@hello) { $status = $x->deflate($_, substr($Answer, 0)) ; last unless $status == Z_OK ; - + } - + cmp_ok $status, '==', Z_OK ; - + cmp_ok $x->flush(substr($Answer, 0)), '==', Z_OK ; - + my @Answer = split('', $Answer) ; - + my $k; ok(($k, $err) = new Compress::Raw::Zlib::Inflate(-AppendOutput => 1) ); ok $k ; cmp_ok $err, '==', Z_OK ; - + my $GOT = ''; my $Z; $Z = 1 ;#x 2000 ; @@ -1067,8 +1166,7 @@ $status = $k->inflate($_, substr($GOT, 0)) ; last if $status == Z_STREAM_END or $status != Z_OK ; } - + cmp_ok $status, '==', Z_STREAM_END ; is $GOT, $hello ; } - diff -Nru perl-5.32.1/cpan/Compress-Raw-Zlib/t/07bufsize.t perl-5.34.0/cpan/Compress-Raw-Zlib/t/07bufsize.t --- perl-5.32.1/cpan/Compress-Raw-Zlib/t/07bufsize.t 2020-12-18 09:57:54.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Zlib/t/07bufsize.t 2021-01-20 23:04:44.000000000 +0000 @@ -13,13 +13,13 @@ use Test::More ; use CompTestUtils; -BEGIN -{ +BEGIN +{ plan skip_all => "Lengthy Tests Disabled\n" . "set COMPRESS_ZLIB_RUN_ALL or COMPRESS_ZLIB_RUN_MOST to run this test suite" unless defined $ENV{COMPRESS_ZLIB_RUN_ALL} or defined $ENV{COMPRESS_ZLIB_RUN_MOST}; - + # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 @@ -27,7 +27,7 @@ plan tests => 288 + $extra ; - use_ok('Compress::Raw::Zlib', 2) ; + use_ok('Compress::Raw::Zlib', 2) ; } @@ -40,7 +40,7 @@ # Check zlib_version and ZLIB_VERSION are the same. SKIP: { - skip "TEST_SKIP_VERSION_CHECK is set", 1 + skip "TEST_SKIP_VERSION_CHECK is set", 1 if $ENV{TEST_SKIP_VERSION_CHECK}; is Compress::Raw::Zlib::zlib_version, ZLIB_VERSION, "ZLIB_VERSION matches Compress::Raw::Zlib::zlib_version" ; @@ -54,18 +54,18 @@ my $hello = "I am a HAL 9000 computer" x 2001; my $tmp = $hello ; - + my @hello = (); - push @hello, $1 + push @hello, $1 while $tmp =~ s/^(.{$i})//; push @hello, $tmp if length $tmp ; - my ($err, $x, $X, $status); - + my ($err, $x, $X, $status); + ok( ($x, $err) = new Compress::Raw::Zlib::Deflate (-AppendOutput => 1)); ok $x ; cmp_ok $err, '==', Z_OK, " status is Z_OK" ; - + ok ! defined $x->msg(), " no msg" ; is $x->total_in(), 0, " total_in == 0" ; is $x->total_out(), 0, " total_out == 0" ; @@ -75,26 +75,26 @@ { $status = $x->deflate($_, $out) ; last unless $status == Z_OK ; - + } cmp_ok $status, '==', Z_OK, " status is Z_OK" ; - + cmp_ok $x->flush($out), '==', Z_OK, " flush returned Z_OK" ; - + ok ! defined $x->msg(), " no msg" ; is $x->total_in(), length $hello, " length total_in" ; is $x->total_out(), length $out, " length total_out" ; - + my @Answer = (); $tmp = $out; push @Answer, $1 while $tmp =~ s/^(.{$i})//; push @Answer, $tmp if length $tmp ; - + my $k; ok(($k, $err) = new Compress::Raw::Zlib::Inflate( -AppendOutput => 1)); ok $k ; cmp_ok $err, '==', Z_OK, " status is Z_OK" ; - + ok ! defined $k->msg(), " no msg" ; is $k->total_in(), 0, " total_in == 0" ; is $k->total_out(), 0, " total_out == 0" ; @@ -105,9 +105,9 @@ { $status = $k->inflate($_, $GOT) ; last if $status == Z_STREAM_END or $status != Z_OK ; - + } - + cmp_ok $status, '==', Z_STREAM_END, " status is Z_STREAM_END" ; is $GOT, $hello, " got expected output" ; ok ! defined $k->msg(), " no msg" ; diff -Nru perl-5.32.1/cpan/Compress-Raw-Zlib/t/09limitoutput.t perl-5.34.0/cpan/Compress-Raw-Zlib/t/09limitoutput.t --- perl-5.32.1/cpan/Compress-Raw-Zlib/t/09limitoutput.t 2020-12-18 09:57:54.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Zlib/t/09limitoutput.t 2021-01-20 23:04:44.000000000 +0000 @@ -13,8 +13,8 @@ use Test::More ; use CompTestUtils; -BEGIN -{ +BEGIN +{ # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 @@ -22,7 +22,7 @@ plan tests => 107 + $extra ; - use_ok('Compress::Raw::Zlib', 2) ; + use_ok('Compress::Raw::Zlib', 2) ; } @@ -30,7 +30,7 @@ my $hello = "I am a HAL 9000 computer" x 2001; my $tmp = $hello ; -my ($err, $x, $X, $status); +my ($err, $x, $X, $status); ok( ($x, $err) = new Compress::Raw::Zlib::Deflate (-AppendOutput => 1)); ok $x ; @@ -41,8 +41,8 @@ cmp_ok $status, '==', Z_OK, " status is Z_OK" ; cmp_ok $x->flush($out), '==', Z_OK, " flush returned Z_OK" ; - - + + sub getOut { my $x = ''; return \$x } for my $bufsize (1, 2, 3, 13, 4096, 1024*10) @@ -57,7 +57,7 @@ )); ok $k ; cmp_ok $err, '==', Z_OK, " status is Z_OK" ; - + ok ! defined $k->msg(), " no msg" ; is $k->total_in(), 0, " total_in == 0" ; is $k->total_out(), 0, " total_out == 0" ; @@ -73,7 +73,7 @@ last if $status == Z_STREAM_END || $status == Z_DATA_ERROR || $status == Z_STREAM_ERROR ; $deltaOK = 0 if length($GOT) - $prev > $bufsize; } - + ok $deltaOK, " Output Delta never > $bufsize"; cmp_ok $looped, '>=', 1, " looped $looped"; is length($tmp), 0, " length of input buffer is zero"; @@ -89,7 +89,7 @@ { my $obj = shift ; my $input = shift; - + my $data ; 1 while $obj->inflate($input, $data) != Z_STREAM_END ; return \$data ; @@ -97,9 +97,9 @@ { title "regression test"; - - my ($err, $x, $X, $status); - + + my ($err, $x, $X, $status); + ok( ($x, $err) = new Compress::Raw::Zlib::Deflate (-AppendOutput => 1)); ok $x ; cmp_ok $err, '==', Z_OK, " status is Z_OK" ; @@ -108,11 +108,11 @@ my $line2 = "second line\n" ; my $text = $line1 . $line2 ; my $tmp = $text; - + my $out ; $status = $x->deflate($tmp, $out) ; cmp_ok $status, '==', Z_OK, " status is Z_OK" ; - + cmp_ok $x->flush($out), '==', Z_OK, " flush returned Z_OK" ; my $k; @@ -120,40 +120,39 @@ LimitOutput => 1 )); - + my $c = getit($k, $out); is $$c, $text; - - + + } { title "regression test for #92521: Z_OK instead of Z_BUF_ERROR"; - - # 1M "aaa..." - my $in = 'a' x 100000; - my ($deflate, $err) = Compress::Raw::Zlib::Deflate->new(WindowBits => -15, - MemLevel => 8); + + # 1M "aaa..." + my $in = 'a' x 100000; + my ($deflate, $err) = Compress::Raw::Zlib::Deflate->new(WindowBits => -15, + MemLevel => 8); ok $deflate ; cmp_ok $err, '==', Z_OK, " status is Z_OK" ; - my $status = $deflate->deflate($in, my $zip); + my $status = $deflate->deflate($in, my $zip); cmp_ok $status, '==', Z_OK, " status is Z_OK" ; - cmp_ok $deflate->flush($zip, Z_SYNC_FLUSH), "==", Z_OK; + cmp_ok $deflate->flush($zip, Z_SYNC_FLUSH), "==", Z_OK; - # Compression should stop after 10K "aaa..." with Z_BUF_ERROR + # Compression should stop after 10K "aaa..." with Z_BUF_ERROR my $inflate; - ($inflate, $err) = Compress::Raw::Zlib::Inflate->new( Bufsize => 10000, - LimitOutput => 1, WindowBits => -15 ); + ($inflate, $err) = Compress::Raw::Zlib::Inflate->new( Bufsize => 10000, + LimitOutput => 1, WindowBits => -15 ); ok $inflate ; cmp_ok $err, '==', Z_OK, " status is Z_OK" ; - $status = $inflate->inflate($zip, my $out); + $status = $inflate->inflate($zip, my $out); cmp_ok length($out), ">=", 10000; - #warn 'RESULT: ', length($out), ' of ', length($in), "\n"; + #warn 'RESULT: ', length($out), ' of ', length($in), "\n"; cmp_ok $status, '==', Z_BUF_ERROR, " status is Z_BUF_ERROR" ; } - diff -Nru perl-5.32.1/cpan/Compress-Raw-Zlib/t/18lvalue.t perl-5.34.0/cpan/Compress-Raw-Zlib/t/18lvalue.t --- perl-5.32.1/cpan/Compress-Raw-Zlib/t/18lvalue.t 2020-12-18 09:57:54.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Zlib/t/18lvalue.t 2021-01-20 23:04:44.000000000 +0000 @@ -13,10 +13,10 @@ use Test::More ; use CompTestUtils; -BEGIN -{ +BEGIN +{ plan(skip_all => "lvalue sub tests need Perl ??") - if $] < 5.006 ; + if $] < 5.006 ; # use Test::NoWarnings, if available my $extra = 0 ; @@ -27,7 +27,7 @@ use_ok('Compress::Raw::Zlib', 2) ; } - + my $hello = <deflate(getData, getX), '==', Z_OK ; cmp_ok $x->flush(getX), '==', Z_OK ; - + my $append = "Appended" ; $X .= $append ; - + ok my $k = new Compress::Raw::Zlib::Inflate ( -AppendOutput => 1 ) ; - + cmp_ok $k->inflate(getX, getZ), '==', Z_STREAM_END ; ; - + ok $hello eq $Z ; is $X, $append; - -} - +} diff -Nru perl-5.32.1/cpan/Compress-Raw-Zlib/t/19nonpv.t perl-5.34.0/cpan/Compress-Raw-Zlib/t/19nonpv.t --- perl-5.32.1/cpan/Compress-Raw-Zlib/t/19nonpv.t 2020-12-18 09:57:54.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Zlib/t/19nonpv.t 2021-01-20 23:04:44.000000000 +0000 @@ -12,8 +12,8 @@ use Test::More ; use CompTestUtils; -BEGIN -{ +BEGIN +{ # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 @@ -23,7 +23,7 @@ use_ok('Compress::Raw::Zlib', 2) ; } - + my $hello = < Z_BEST_COMPRESSION, -Dictionary => $dictionary}) ; - + my $dictID = $x->dict_adler() ; my ($X, $Y, $Z); cmp_ok $x->deflate($hello, $X), '==', Z_OK; cmp_ok $x->flush($Y), '==', Z_OK; $X .= $Y ; - + ok my $k = new Compress::Raw::Zlib::Inflate(-Dictionary => $dictionary) ; - + cmp_ok $k->inflate($X, $Z), '==', Z_STREAM_END; is $k->dict_adler(), $dictID; is $hello, $Z ; @@ -72,12 +72,12 @@ # ============================== my $hello = *hello ; - my ($err, $x, $X, $status); - + my ($err, $x, $X, $status); + ok( ($x, $err) = new Compress::Raw::Zlib::Deflate, "Create deflate object" ); ok $x, "Compress::Raw::Zlib::Deflate ok" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - + ok ! defined $x->msg() ; is $x->total_in(), 0, "total_in() == 0" ; is $x->total_out(), 0, "total_out() == 0" ; @@ -86,22 +86,22 @@ my $Answer = ''; $status = $x->deflate($hello, $X) ; $Answer .= $X ; - + cmp_ok $status, '==', Z_OK, "deflate returned Z_OK" ; - + $X = *X; cmp_ok $x->flush($X), '==', Z_OK, "flush returned Z_OK" ; $Answer .= $X ; - + ok ! defined $x->msg() ; is $x->total_in(), length $hello, "total_in ok" ; is $x->total_out(), length $Answer, "total_out ok" ; - + my $k; ok(($k, $err) = new Compress::Raw::Zlib::Inflate); ok $k, "Compress::Raw::Zlib::Inflate ok" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - + ok ! defined $k->msg(), "No error messages" ; is $k->total_in(), 0, "total_in() == 0" ; is $k->total_out(), 0, "total_out() == 0" ; @@ -111,7 +111,7 @@ my $Alen = length $Answer; $status = $k->inflate($Answer, $Z) ; $GOT .= $Z ; - + cmp_ok $status, '==', Z_STREAM_END, "Got Z_STREAM_END" ; is $GOT, $hello, "uncompressed data matches ok" ; ok ! defined $k->msg(), "No error messages" ; @@ -132,4 +132,3 @@ cmp_ok $status, "!=", Z_OK, "inflateSync on *hello returns error (and does not crash)"; } - diff -Nru perl-5.32.1/cpan/Compress-Raw-Zlib/t/compress/CompTestUtils.pm perl-5.34.0/cpan/Compress-Raw-Zlib/t/compress/CompTestUtils.pm --- perl-5.32.1/cpan/Compress-Raw-Zlib/t/compress/CompTestUtils.pm 2020-12-18 09:57:54.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Zlib/t/compress/CompTestUtils.pm 2021-01-20 23:04:44.000000000 +0000 @@ -9,13 +9,13 @@ #use lib qw(t t/compress); use Carp ; -#use Test::More ; +#use Test::More ; sub title { - #diag "" ; + #diag "" ; ok(1, $_[0]) ; #diag "" ; } @@ -26,7 +26,7 @@ } BEGIN { - eval { + eval { require File::Temp; } ; @@ -38,7 +38,7 @@ our ($index); $index = '00000'; - + sub new { my $self = shift ; @@ -72,7 +72,7 @@ $index = '00000'; our ($useTempFile); our ($useTempDir); - + sub new { my $self = shift ; @@ -115,11 +115,11 @@ # autogenerate the name if none supplied $_ = "tmpdir" . $$ . "X" . $index ++ . ".tmp" ; } - foreach (@_) - { + foreach (@_) + { rmtree $_, {verbose => 0, safe => 1} - if -d $_; - mkdir $_, 0777 + if -d $_; + mkdir $_, 0777 } bless [ @_ ], $self ; } @@ -131,10 +131,10 @@ if (! $useTempFile) { my $self = shift ; - foreach (@$self) - { + foreach (@$self) + { rmtree $_, {verbose => 0, safe => 1} - if -d $_ ; + if -d $_ ; } } } @@ -150,15 +150,15 @@ { my $pos = tell($f); seek($f, 0,0); - @strings = <$f> ; + @strings = <$f> ; seek($f, 0, $pos); } else { - open (F, "<$f") + open (F, "<$f") or croak "Cannot open $f: $!\n" ; binmode F; - @strings = ; + @strings = ; close F ; } @@ -175,7 +175,7 @@ { my($filename, @strings) = @_ ; 1 while unlink $filename ; - open (F, ">$filename") + open (F, ">$filename") or croak "Cannot open $filename: $!\n" ; binmode F; foreach (@strings) { @@ -191,10 +191,10 @@ my ($uncomp) = "" ; my $line = "" ; - my $fil = gzopen($filename, "rb") + my $fil = gzopen($filename, "rb") or croak "Cannopt open '$filename': $Compress::Zlib::gzerrno" ; - $uncomp .= $line + $uncomp .= $line while $fil->gzread($line) > 0; $fil->gzclose ; @@ -248,7 +248,7 @@ some text EOM - ok my $x = new IO::Compress::Gzip $name, %opts + ok my $x = new IO::Compress::Gzip $name, %opts or diag "GzipError is $IO::Compress::Gzip::GzipError" ; ok $x->write($string) ; ok $x->close ; @@ -562,9 +562,9 @@ } my $out = ''; - my $o = new IO::Uncompress::AnyUncompress \$data, - Append => 1, - Transparent => 0, + my $o = new IO::Uncompress::AnyUncompress \$data, + Append => 1, + Transparent => 0, RawInflate => 1, UnLzma => 1, @opts @@ -622,10 +622,10 @@ } my $out = ''; - my $o = new IO::Uncompress::AnyUncompress \$data, - MultiStream => 1, - Append => 1, - Transparent => 0, + my $o = new IO::Uncompress::AnyUncompress \$data, + MultiStream => 1, + Append => 1, + Transparent => 0, RawInflate => 1, UnLzma => 1, @opts diff -Nru perl-5.32.1/cpan/Compress-Raw-Zlib/typemap perl-5.34.0/cpan/Compress-Raw-Zlib/typemap --- perl-5.32.1/cpan/Compress-Raw-Zlib/typemap 2020-12-18 09:57:54.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Zlib/typemap 2021-01-20 23:04:44.000000000 +0000 @@ -41,7 +41,6 @@ else if (sv_derived_from($arg, \"${ntype}\")) { IV tmp = SvIV(getInnerObject($arg)) ; $var = INT2PTR($type, tmp); - } else croak(\"$var is not of type ${ntype}\") @@ -58,5 +57,3 @@ T_PV sv_setpv((SV*)$arg, $var); - - diff -Nru perl-5.32.1/cpan/Compress-Raw-Zlib/Zlib.xs perl-5.34.0/cpan/Compress-Raw-Zlib/Zlib.xs --- perl-5.32.1/cpan/Compress-Raw-Zlib/Zlib.xs 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Compress-Raw-Zlib/Zlib.xs 2020-10-04 22:17:12.000000000 +0000 @@ -9,9 +9,9 @@ * */ -/* Parts of this code are based on the files gzio.c and gzappend.c from +/* Parts of this code are based on the files gzio.c and gzappend.c from * the standard zlib source distribution. Below are the copyright statements - * from each. + * from each. */ /* gzio.c -- IO on .gz files @@ -31,7 +31,7 @@ #include "perl.h" #include "XSUB.h" -#include "zlib.h" +#include "zlib.h" /* zlib prior to 1.06 doesn't know about z_off_t */ #ifndef z_off_t @@ -39,7 +39,7 @@ #endif #if ! defined(ZLIB_VERNUM) || ZLIB_VERNUM < 0x1200 -# define NEED_DUMMY_BYTE_AT_END +# define NEED_DUMMY_BYTE_AT_END #endif #if defined(ZLIB_VERNUM) && ZLIB_VERNUM >= 0x1210 @@ -64,7 +64,7 @@ #endif #if defined(ZLIB_VERNUM) && ZLIB_VERNUM >= 0x1252 -/* +/* Use Z_SOLO to build source means need own malloc/free */ # define AT_LEAST_ZLIB_1_2_5_2 @@ -133,7 +133,7 @@ uLong crc32 ; uLong adler32 ; z_stream stream; - uLong bufsize; + uLong bufsize; SV * dictionary ; uLong dict_adler ; int last_error ; @@ -169,7 +169,7 @@ uLong lastBlockOffset ; unsigned char window_lastByte ; - + #endif } di_stream; @@ -190,7 +190,7 @@ #if defined(AMIGA) || defined(AMIGAOS) || defined(__amigaos4__) # define OS_CODE 0x01 #endif - + #if defined(VAXC) || defined(VMS) # define OS_CODE 0x02 #endif @@ -198,15 +198,15 @@ #if 0 /* VM/CMS */ # define OS_CODE 0x04 #endif - + #if defined(ATARI) || defined(atarist) # define OS_CODE 0x05 #endif - + #ifdef OS2 # define OS_CODE 0x06 #endif - + #if defined(MACOS) || defined(TARGET_OS_MAC) # define OS_CODE 0x07 #endif @@ -214,11 +214,11 @@ #if 0 /* Z-System */ # define OS_CODE 0x08 #endif - + #if 0 /* CP/M */ # define OS_CODE 0x09 #endif - + #ifdef TOPS20 # define OS_CODE 0x0a #endif @@ -226,24 +226,24 @@ #ifdef WIN32 /* Window 95 & Windows NT */ # define OS_CODE 0x0b #endif - + #if 0 /* QDOS */ # define OS_CODE 0x0c #endif - + #if 0 /* Acorn RISCOS */ # define OS_CODE 0x0d #endif - + #if 0 /* ??? */ # define OS_CODE 0x0e #endif - + #ifdef __50SERIES /* Prime/PRIMOS */ # define OS_CODE 0x0F #endif - -/* Default to UNIX */ + +/* Default to UNIX */ #ifndef OS_CODE # define OS_CODE 0x03 /* assume Unix */ #endif @@ -273,7 +273,7 @@ sv_setpv(var, ((err) ? GetErrorString(err) : "")) ; \ SvNOK_on(var); - + #if defined(__SYMBIAN32__) # define NO_WRITEABLE_DATA #endif @@ -300,13 +300,13 @@ { dTHX; char * errstr ; - + if (error_no == Z_ERRNO) { errstr = Strerror(errno) ; } else /* errstr = gzerror(fil, &error_no) ; */ - errstr = (char*) my_z_errmsg[2 - error_no]; + errstr = (char*) my_z_errmsg[2 - error_no]; return errstr ; } @@ -324,7 +324,7 @@ /* return the greatest common divisor of a and b using Euclid's algorithm, modified to be fast when one argument much greater than the other, and coded to avoid unnecessary swapping */ -static unsigned +static unsigned #ifdef CAN_PROTOTYPE gcd(unsigned a, unsigned b) #else @@ -352,7 +352,7 @@ } /* rotate list[0..len-1] left by rot positions, in place */ -static void +static void #ifdef CAN_PROTOTYPE rotate(unsigned char *list, unsigned len, unsigned rot) #else @@ -515,7 +515,7 @@ { PERL_UNUSED_VAR(opaque); safefree(ptr); - return; + return; } #endif @@ -556,14 +556,14 @@ s->last_error = 0 ; s->flags = flags ; s->zip_mode = (windowBits < 0) ; - if (flags & FLAG_CRC32) + if (flags & FLAG_CRC32) s->crc32 = crcInitial ; - if (flags & FLAG_ADLER32) + if (flags & FLAG_ADLER32) s->adler32 = adlerInitial ; } -static SV* +static SV* #ifdef CAN_PROTOTYPE deRef(SV * sv, const char * string) #else @@ -608,7 +608,7 @@ dTHX; bool wipe = 0 ; STRLEN na; - + SvGETMAGIC(sv); wipe = ! SvOK(sv) ; @@ -654,11 +654,11 @@ strm->next_in = NULL; strm->avail_in = 0; - + uLong total_output = 0; uLong have = 0; - do + do { if (output) output = (unsigned char *)saferealloc(output, total_output + s->bufsize); @@ -683,7 +683,7 @@ } while (strm->avail_out == 0); s->deflateParams_out_buffer = output; - s->deflateParams_out_length = total_output; + s->deflateParams_out_length = total_output; return Z_OK; } @@ -703,9 +703,9 @@ strm->next_in = NULL; strm->avail_in = 0; - - do + + do { if (output) output = (unsigned char *)saferealloc(output, total_output + s->bufsize); @@ -719,7 +719,7 @@ /* fprintf(stderr, "deflateParams %d %s %lu\n", ret, GetErrorString(ret), s->bufsize - strm->avail_out); */ - if (ret == Z_STREAM_ERROR) + if (ret == Z_STREAM_ERROR) break; have = s->bufsize - strm->avail_out; @@ -730,10 +730,10 @@ if(ret == Z_STREAM_ERROR) safefree(output); - else + else { s->deflateParams_out_buffer = output; - s->deflateParams_out_length = total_output; + s->deflateParams_out_length = total_output; } return ret; @@ -753,7 +753,7 @@ /* Check this version of zlib is == 1 */ if (zlibVersion()[0] != '1') croak("Compress::Raw::Zlib needs zlib version 1.x\n") ; - + { /* Create the $os_code scalar */ SV * os_code_sv = perl_get_sv("Compress::Raw::Zlib::gzip_os_code", GV_ADDMULTI) ; @@ -801,10 +801,10 @@ INIT: /* If the buffer is a reference, dereference it */ sv = deRef(sv, "adler32") ; -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (DO_UTF8(sv) && !sv_utf8_downgrade(sv, 1)) croak("Wide character in Compress::Raw::Zlib::adler32"); -#endif +#endif buf = (Byte*)SvPVbyte(sv, len) ; if (items < 2) @@ -815,7 +815,7 @@ adler = adlerInitial; OUTPUT: RETVAL - + #define Zip_crc32(buf, crc, offset) crc32(crc, buf+offset, (uInt)len-offset) uLong @@ -823,15 +823,15 @@ uLong crc = NO_INIT STRLEN len = NO_INIT Bytef * buf = NO_INIT - STRLEN offset + STRLEN offset SV * sv = ST(0) ; INIT: /* If the buffer is a reference, dereference it */ sv = deRef(sv, "crc32") ; -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (DO_UTF8(sv) && !sv_utf8_downgrade(sv, 1)) croak("Wide character in Compress::Raw::Zlib::crc32"); -#endif +#endif buf = (Byte*)SvPVbyte(sv, len) ; if (offset > len) @@ -843,12 +843,12 @@ crc = SvUV(ST(1)) ; else crc = crcInitial; - + uLong crc32_combine(crc1, crc2, len2) - uLong crc1 - uLong crc2 - z_off_t len2 + uLong crc1 + uLong crc2 + z_off_t len2 CODE: #ifndef AT_LEAST_ZLIB_1_2_2_1 crc1 = crc1; crc2 = crc2 ; len2 = len2; /* Silence -Wall */ @@ -862,9 +862,9 @@ uLong adler32_combine(adler1, adler2, len2) - uLong adler1 - uLong adler2 - z_off_t len2 + uLong adler1 + uLong adler2 + z_off_t len2 CODE: #ifndef AT_LEAST_ZLIB_1_2_2_1 adler1 = adler1; adler2 = adler2 ; len2 = len2; /* Silence -Wall */ @@ -892,8 +892,8 @@ int err ; deflateStream s ; - if (trace) - warn("in _deflateInit(level=%d, method=%d, windowBits=%d, memLevel=%d, strategy=%d, bufsize=%ld dictionary=%p)\n", + if (trace) + warn("in _deflateInit(level=%d, method=%d, windowBits=%d, memLevel=%d, strategy=%d, bufsize=%ld dictionary=%p)\n", level, method, windowBits, memLevel, strategy, bufsize, dictionary) ; if ((s = InitStream() )) { @@ -903,7 +903,7 @@ s->MemLevel = memLevel; s->Strategy = strategy; - err = deflateInit2(&(s->stream), level, + err = deflateInit2(&(s->stream), level, method, windowBits, memLevel, strategy); if (trace) { @@ -914,12 +914,12 @@ /* Check if a dictionary has been specified */ SvGETMAGIC(dictionary); if (err == Z_OK && SvPOK(dictionary) && SvCUR(dictionary)) { -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (DO_UTF8(dictionary) && !sv_utf8_downgrade(dictionary, 1)) croak("Wide character in Compress::Raw::Zlib::Deflate::new dicrionary parameter"); -#endif +#endif err = deflateSetDictionary(&(s->stream), (const Bytef*) SvPVX(dictionary), SvCUR(dictionary)) ; - if (trace) + if (trace) warn("deflateSetDictionary returned %d\n", err); s->dict_adler = s->stream.adler ; } @@ -930,13 +930,13 @@ } else PostInitStream(s, flags, bufsize, windowBits) ; - + } else err = Z_MEM_ERROR ; { - SV* obj = sv_setref_pv(sv_newmortal(), + SV* obj = sv_setref_pv(sv_newmortal(), "Compress::Raw::Zlib::deflateStream", (void*)s); XPUSHs(obj); } @@ -955,7 +955,7 @@ ALIAS: _inflateScanInit = 1 PPCODE: - + int err = Z_OK ; inflateStream s ; #ifndef MAGIC_APPEND @@ -980,7 +980,7 @@ if (s->WindowBits < 0) { STRLEN dlen; const Bytef* b = (const Bytef*)SvPVbyte(dictionary, dlen); - err = inflateSetDictionary(&(s->stream), + err = inflateSetDictionary(&(s->stream), b, dlen); if (err != Z_OK) { Safefree(s) ; @@ -1006,9 +1006,9 @@ err = Z_MEM_ERROR ; { - SV* obj = sv_setref_pv(sv_newmortal(), - ix == 1 - ? "Compress::Raw::Zlib::inflateScanStream" + SV* obj = sv_setref_pv(sv_newmortal(), + ix == 1 + ? "Compress::Raw::Zlib::inflateScanStream" : "Compress::Raw::Zlib::inflateStream", (void*)s); XPUSHs(obj); @@ -1018,7 +1018,7 @@ setDUALstatus(sv, err); XPUSHs(sv) ; } - + MODULE = Compress::Raw::Zlib PACKAGE = Compress::Raw::Zlib::deflateStream @@ -1039,11 +1039,11 @@ OUTPUT: RETVAL -DualType +DualType deflate (s, buf, output) Compress::Raw::Zlib::deflateStream s SV * buf - SV * output + SV * output uInt cur_length = NO_INIT uInt increment = NO_INIT uInt prefix = NO_INIT @@ -1055,15 +1055,15 @@ /* If the input buffer is a reference, dereference it */ buf = deRef(buf, "deflate") ; - + /* initialise the input buffer */ -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (DO_UTF8(buf) && !sv_utf8_downgrade(buf, 1)) croak("Wide character in Compress::Raw::Zlib::Deflate::deflate input parameter"); -#endif +#endif s->stream.next_in = (Bytef*)SvPV_nomg(buf, origlen) ; s->stream.avail_in = origlen; - + if (s->flags & FLAG_CRC32) s->crc32 = crc32(s->crc32, s->stream.next_in, s->stream.avail_in) ; @@ -1072,15 +1072,16 @@ /* and retrieve the output buffer */ output = deRef_l(output, "deflate") ; -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (DO_UTF8(output) && !sv_utf8_downgrade(output, 1)) croak("Wide character in Compress::Raw::Zlib::Deflate::deflate output parameter"); -#endif +#endif - if((s->flags & FLAG_APPEND) != FLAG_APPEND) { - SvCUR_set(output, 0); - /* sv_setpvn(output, "", 0); */ - } + if((s->flags & FLAG_APPEND) == FLAG_APPEND) { + SvOOK_off(output); + } else { + SvCUR_set(output, 0); + } prefix = cur_length = SvCUR(output) ; s->stream.next_out = (Bytef*) SvPVX(output) + cur_length; increment = SvLEN(output) - cur_length; @@ -1104,8 +1105,8 @@ s->stream.next_out = (Bytef*) Sv_Grow(output, SvLEN(output) + plen - s->stream.avail_out) ; s->stream.next_out += cur_length; } - - Copy(s->deflateParams_out_buffer, s->stream.next_out, plen, Bytef) ; + + Copy(s->deflateParams_out_buffer, s->stream.next_out, plen, Bytef) ; cur_length += plen; SvCUR_set(output, cur_length); s->stream.next_out += plen ; @@ -1131,7 +1132,7 @@ } if (trace) { - printf("DEFLATE Avail In %d, Out %d\n", s->stream.avail_in, s->stream.avail_out); + printf("DEFLATE Avail In %d, Out %d\n", s->stream.avail_in, s->stream.avail_out); DispStream(s, "BEFORE"); /* Perl_sv_dump(output); */ } @@ -1142,17 +1143,17 @@ int done = increment - s->stream.avail_out ; printf("std DEFLATEr returned %d '%s' avail in %d, out %d wrote %d\n", RETVAL, GetErrorString(RETVAL), s->stream.avail_in, -s->stream.avail_out, done); +s->stream.avail_out, done); } */ - + if (trace) { printf("DEFLATE returned %d %s, avail in %d, out %d\n", RETVAL, - GetErrorString(RETVAL), s->stream.avail_in, s->stream.avail_out); + GetErrorString(RETVAL), s->stream.avail_in, s->stream.avail_out); DispStream(s, "AFTER"); } - if (RETVAL != Z_OK) + if (RETVAL != Z_OK) break; } @@ -1167,7 +1168,7 @@ } OUTPUT: RETVAL - + void DESTROY(s) @@ -1188,28 +1189,29 @@ DualType flush(s, output, f=Z_FINISH) Compress::Raw::Zlib::deflateStream s - SV * output + SV * output int f uInt cur_length = NO_INIT uInt increment = NO_INIT uInt prefix = NO_INIT uLong bufinc = NO_INIT - uLong availableout = NO_INIT + uLong availableout = NO_INIT CODE: bufinc = s->bufsize; - - - + + + /* retrieve the output buffer */ output = deRef_l(output, "flush") ; -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (DO_UTF8(output) && !sv_utf8_downgrade(output, 1)) croak("Wide character in Compress::Raw::Zlib::Deflate::flush input parameter"); -#endif - if((s->flags & FLAG_APPEND) != FLAG_APPEND) { - SvCUR_set(output, 0); - /* sv_setpvn(output, "", 0); */ - } +#endif + if((s->flags & FLAG_APPEND) == FLAG_APPEND) { + SvOOK_off(output); + } else { + SvCUR_set(output, 0); + } prefix = cur_length = SvCUR(output) ; s->stream.next_out = (Bytef*) SvPVX(output) + cur_length; increment = SvLEN(output) - cur_length; @@ -1228,13 +1230,13 @@ uLong plen = s->deflateParams_out_length ; /* printf("Copy %lu bytes saved data\n", plen); */ if (s->stream.avail_out < plen) { - /* printf("GROW from %d to %lu\n", s->stream.avail_out, + /* printf("GROW from %d to %lu\n", s->stream.avail_out, SvLEN(output) + plen - s->stream.avail_out); */ s->stream.next_out = (Bytef*) Sv_Grow(output, SvLEN(output) + plen - s->stream.avail_out) ; s->stream.next_out += cur_length; } - - Copy(s->deflateParams_out_buffer, s->stream.next_out, plen, Bytef) ; + + Copy(s->deflateParams_out_buffer, s->stream.next_out, plen, Bytef) ; cur_length += plen; SvCUR_set(output, cur_length); s->stream.next_out += plen ; @@ -1248,7 +1250,7 @@ #endif for (;;) { - if (s->stream.avail_out == 0) { + if (s->stream.avail_out == 0) { /* consumed all the available output, so extend it */ s->stream.next_out = (Bytef*) Sv_Grow(output, SvLEN(output) + bufinc) ; cur_length += increment ; @@ -1257,11 +1259,11 @@ s->stream.avail_out = increment; bufinc *= 2 ; } - + availableout = s->stream.avail_out ; - + if (trace) { - printf("flush (%d) DEFLATE Avail In %d, Out %d\n", f, s->stream.avail_in, s->stream.avail_out); + printf("flush (%d) DEFLATE Avail In %d, Out %d\n", f, s->stream.avail_in, s->stream.avail_out); DispStream(s, "BEFORE"); /* Perl_sv_dump(output); */ } @@ -1275,29 +1277,29 @@ s->stream.avail_out, done); } */ - + if (trace) { printf("flush DEFLATE returned %d '%s', avail in %d, out %d\n", RETVAL, - GetErrorString(RETVAL), s->stream.avail_in, s->stream.avail_out); + GetErrorString(RETVAL), s->stream.avail_in, s->stream.avail_out); DispStream(s, "AFTER"); } /* Ignore the second of two consecutive flushes: */ - if (availableout == s->stream.avail_out && RETVAL == Z_BUF_ERROR) - RETVAL = Z_OK; - + if (availableout == s->stream.avail_out && RETVAL == Z_BUF_ERROR) + RETVAL = Z_OK; + /* deflate has finished flushing only when it hasn't used up - * all the available space in the output buffer: + * all the available space in the output buffer: */ if (s->stream.avail_out != 0 || RETVAL != Z_OK ) break; } - + RETVAL = (RETVAL == Z_STREAM_END ? Z_OK : RETVAL) ; s->last_error = RETVAL ; s->compressedBytes += cur_length + increment - prefix - s->stream.avail_out ; - + if (RETVAL == Z_OK) { SvPOK_only(output); SvCUR_set(output, cur_length + increment - s->stream.avail_out) ; @@ -1316,7 +1318,7 @@ uLong bufsize bool changed = FALSE; CODE: - /* printf("_deflateParams(Flags %d Level %d Strategy %d Bufsize %d)\n", flags, level, strategy, bufsize); + /* printf("_deflateParams(Flags %d Level %d Strategy %d Bufsize %d)\n", flags, level, strategy, bufsize); printf("Before -- Level %d, Strategy %d, Bufsize %d\n", s->Level, s->Strategy, s->bufsize); */ if (flags & 1 && level != s->Level) { s->Level = level ; @@ -1327,17 +1329,17 @@ changed = TRUE; } if (flags & 4) - s->bufsize = bufsize; + s->bufsize = bufsize; if (changed) { #ifdef SETP_BYTE - s->stream.avail_in = 0; + s->stream.avail_in = 0; s->stream.next_out = &(s->deflateParams_out_byte) ; s->stream.avail_out = 1; RETVAL = deflateParams(&(s->stream), s->Level, s->Strategy); - s->deflateParams_out_valid = + s->deflateParams_out_valid = (RETVAL == Z_OK && s->stream.avail_out == 0) ; #else - /* printf("Level %d Strategy %d, Prev Len %d\n", + /* printf("Level %d Strategy %d, Prev Len %d\n", s->Level, s->Strategy, s->deflateParams_out_length); */ RETVAL = flushParams(s); #endif @@ -1446,7 +1448,7 @@ OUTPUT: RETVAL -int +int deflateTune(s, good_length, max_lazy, nice_length, max_chain) Compress::Raw::Zlib::deflateStream s int good_length @@ -1463,7 +1465,7 @@ #endif OUTPUT: RETVAL - + MODULE = Compress::Raw::Zlib PACKAGE = Compress::Raw::Zlib::inflateStream @@ -1483,23 +1485,23 @@ OUTPUT: RETVAL -DualType +DualType inflate (s, buf, output, eof=FALSE) Compress::Raw::Zlib::inflateStream s SV * buf - SV * output - bool eof + SV * output + bool eof uInt cur_length = 0; uInt prefix_length = 0; int increment = 0; uLong bufinc = NO_INIT STRLEN na = NO_INIT ; PREINIT: -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE bool out_utf8 = FALSE; -#endif +#endif STRLEN origlen; - CODE: + CODE: bufinc = s->bufsize; /* If the buffer is a reference, dereference it */ buf = deRef(buf, "inflate") ; @@ -1509,40 +1511,42 @@ croak("Compress::Raw::Zlib::Inflate::inflate input parameter cannot be read-only when ConsumeInput is specified"); SvPV_force(buf, na); } -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (DO_UTF8(buf) && !sv_utf8_downgrade(buf, 1)) croak("Wide character in Compress::Raw::Zlib::Inflate::inflate input parameter"); -#endif - +#endif + /* initialise the input buffer */ s->stream.next_in = (Bytef*)SvPV_nomg(buf, origlen) ; s->stream.avail_in = origlen ; - + /* and retrieve the output buffer */ output = deRef_l(output, "inflate") ; -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (DO_UTF8(output)) out_utf8 = TRUE ; if (DO_UTF8(output) && !sv_utf8_downgrade(output, 1)) croak("Wide character in Compress::Raw::Zlib::Inflate::inflate output parameter"); -#endif - if((s->flags & FLAG_APPEND) != FLAG_APPEND) { - SvCUR_set(output, 0); - } - +#endif + if((s->flags & FLAG_APPEND) == FLAG_APPEND) { + SvOOK_off(output); + } else { + SvCUR_set(output, 0); + } + /* Assume no output buffer - the code below will update if there is any available */ s->stream.avail_out = 0; if (SvLEN(output)) { prefix_length = cur_length = SvCUR(output) ; - + if (s->flags & FLAG_LIMIT_OUTPUT && SvLEN(output) - cur_length - 1 < bufinc) { Sv_Grow(output, bufinc + cur_length + 1) ; } - - /* Only setup the stream output pointers if there is spare + + /* Only setup the stream output pointers if there is spare capacity in the outout SV */ if (SvLEN(output) > cur_length + 1) @@ -1552,10 +1556,10 @@ s->stream.avail_out = increment; } } - + s->bytesInflated = 0; - + RETVAL = Z_OK; while (RETVAL == Z_OK) { @@ -1566,35 +1570,35 @@ s->stream.next_out += cur_length ; increment = bufinc ; s->stream.avail_out = increment; - bufinc *= 2 ; + bufinc *= 2 ; } /* printf("INFLATE Availl In %d, Out %d\n", s->stream.avail_in, - s->stream.avail_out); + s->stream.avail_out); DispStream(s, "BEFORE"); Perl_sv_dump(output); */ RETVAL = inflate(&(s->stream), Z_SYNC_FLUSH); /* printf("INFLATE returned %d %s, avail in %d, out %d\n", RETVAL, GetErrorString(RETVAL), s->stream.avail_in, s->stream.avail_out); */ - + if (RETVAL == Z_NEED_DICT && s->dictionary) { STRLEN dlen; const Bytef* b = (const Bytef*)SvPV(s->dictionary, dlen) ; s->dict_adler = s->stream.adler ; - RETVAL = inflateSetDictionary(&(s->stream), + RETVAL = inflateSetDictionary(&(s->stream), b, dlen); if (RETVAL == Z_OK) continue; } - - if (s->flags & FLAG_LIMIT_OUTPUT && + + if (s->flags & FLAG_LIMIT_OUTPUT && (RETVAL == Z_OK || RETVAL == Z_BUF_ERROR )) { if (s->stream.avail_out == 0) RETVAL = Z_BUF_ERROR; break; } - if (s->flags & FLAG_LIMIT_OUTPUT && + if (s->flags & FLAG_LIMIT_OUTPUT && (RETVAL == Z_OK || RETVAL == Z_BUF_ERROR )) break; @@ -1611,7 +1615,7 @@ } } } -#ifdef NEED_DUMMY_BYTE_AT_END +#ifdef NEED_DUMMY_BYTE_AT_END if (eof && RETVAL == Z_OK && s->flags & FLAG_LIMIT_OUTPUT == 0) { Bytef* nextIn = s->stream.next_in; uInt availIn = s->stream.avail_in; @@ -1633,7 +1637,7 @@ #else PERL_UNUSED_VAR(eof); #endif - + s->last_error = RETVAL ; if (RETVAL == Z_OK || RETVAL == Z_STREAM_END || RETVAL == Z_BUF_ERROR || RETVAL == Z_DATA_ERROR) { unsigned in ; @@ -1645,20 +1649,20 @@ SvPOK_only(output); SvCUR_set(output, prefix_length + s->bytesInflated) ; *SvEND(output) = '\0'; -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (out_utf8) sv_utf8_upgrade(output); -#endif +#endif SvSETMAGIC(output); if (s->flags & FLAG_CRC32 ) - s->crc32 = crc32(s->crc32, - (const Bytef*)SvPVX(output)+prefix_length, + s->crc32 = crc32(s->crc32, + (const Bytef*)SvPVX(output)+prefix_length, SvCUR(output)-prefix_length) ; - if (s->flags & FLAG_ADLER32) - s->adler32 = adler32(s->adler32, - (const Bytef*)SvPVX(output)+prefix_length, + if (s->flags & FLAG_ADLER32) + s->adler32 = adler32(s->adler32, + (const Bytef*)SvPVX(output)+prefix_length, SvCUR(output)-prefix_length) ; /* fix the input buffer */ @@ -1666,7 +1670,7 @@ in = s->stream.avail_in ; SvCUR_set(buf, in) ; if (in) - Move(s->stream.next_in, SvPVX(buf), in, char) ; + Move(s->stream.next_in, SvPVX(buf), in, char) ; *SvEND(buf) = '\0'; SvSETMAGIC(buf); } @@ -1700,23 +1704,23 @@ RETVAL -DualType +DualType inflateSync (s, buf) Compress::Raw::Zlib::inflateStream s SV * buf CODE: - + /* If the buffer is a reference, dereference it */ buf = deRef(buf, "inflateSync") ; -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (DO_UTF8(buf) && !sv_utf8_downgrade(buf, 1)) croak("Wide character in Compress::Raw::Zlib::Inflate::inflateSync"); -#endif - +#endif + /* initialise the input buffer */ s->stream.next_in = (Bytef*)SvPV_force_nomg_nolen(buf) ; s->stream.avail_in = SvCUR(buf) ; - + /* inflateSync doesn't create any output */ s->stream.next_out = (Bytef*) NULL; s->stream.avail_out = 0; @@ -1729,7 +1733,7 @@ unsigned in = s->stream.avail_in ; SvCUR_set(buf, in) ; if (in) - Move(s->stream.next_in, SvPVX(buf), in, char) ; + Move(s->stream.next_in, SvPVX(buf), in, char) ; *SvEND(buf) = '\0'; SvSETMAGIC(buf); } @@ -1867,7 +1871,7 @@ OUTPUT: RETVAL -DualType +DualType scan(s, buf, out=NULL, eof=FALSE) Compress::Raw::Zlib::inflateScanStream s SV * buf @@ -1884,15 +1888,15 @@ croak("scan needs zlib 1.2.1 or better"); #else buf = deRef(buf, "inflateScan") ; -#ifdef UTF8_AVAILABLE +#ifdef UTF8_AVAILABLE if (DO_UTF8(buf) && !sv_utf8_downgrade(buf, 1)) croak("Wide character in Compress::Raw::Zlib::InflateScan::scan input parameter"); -#endif +#endif /* initialise the input buffer */ s->stream.next_in = (Bytef*)SvPV_force_nomg_nolen(buf) ; s->stream.avail_in = SvCUR(buf) ; start_len = s->stream.avail_in ; - s->bytesInflated = 0 ; + s->bytesInflated = 0 ; do { if (s->stream.avail_in == 0) { @@ -1917,11 +1921,11 @@ break ; if (s->flags & FLAG_CRC32 ) - s->crc32 = crc32(s->crc32, s->window + s->window_have, + s->crc32 = crc32(s->crc32, s->window + s->window_have, WINDOW_SIZE - s->window_have - s->stream.avail_out); - if (s->flags & FLAG_ADLER32) - s->adler32 = adler32(s->adler32, s->window + s->window_have, + if (s->flags & FLAG_ADLER32) + s->adler32 = adler32(s->adler32, s->window + s->window_have, WINDOW_SIZE - s->window_have - s->stream.avail_out); s->uncompressedBytes = @@ -1974,7 +1978,7 @@ unsigned in = s->stream.avail_in ; SvCUR_set(buf, in) ; if (in) - Move(s->stream.next_in, SvPVX(buf), in, char) ; + Move(s->stream.next_in, SvPVX(buf), in, char) ; *SvEND(buf) = '\0'; SvSETMAGIC(buf); } @@ -2098,7 +2102,7 @@ s->MemLevel = memLevel; s->Strategy = strategy; - err = deflateInit2(&(s->stream), level, + err = deflateInit2(&(s->stream), level, method, windowBits, memLevel, strategy); if (err == Z_OK) { @@ -2126,7 +2130,7 @@ else err = Z_MEM_ERROR ; - XPUSHs(sv_setref_pv(sv_newmortal(), + XPUSHs(sv_setref_pv(sv_newmortal(), "Compress::Raw::Zlib::deflateStream", (void*)s)); if (GIMME == G_ARRAY) { SV * sv = sv_2mortal(newSViv(err)) ; @@ -2160,4 +2164,3 @@ RETVAL = s->adler32 ; OUTPUT: RETVAL - diff -Nru perl-5.32.1/cpan/Config-Perl-V/t/35_plv52910g.t perl-5.34.0/cpan/Config-Perl-V/t/35_plv52910g.t --- perl-5.32.1/cpan/Config-Perl-V/t/35_plv52910g.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Config-Perl-V/t/35_plv52910g.t 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,188 @@ +#!/pro/bin/perl + +use strict; +use warnings; + +BEGIN { + use Test::More; + my $tests = 128; + unless ($ENV{PERL_CORE}) { + require Test::NoWarnings; + Test::NoWarnings->import (); + $tests++; + } + + plan tests => $tests; + } + +use Config::Perl::V qw( summary ); + +ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); +ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); + +is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); +is ($conf->{build}{stamp}, "Apr 13 2019 00:06:38", "Build time"); +is ($conf->{config}{version}, "5.29.10", "reconstructed \$Config{version}"); + +my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; +foreach my $o (sort qw( + DEBUGGING HAS_TIMES MULTIPLICITY PERL_COPY_ON_WRITE PERL_DONT_CREATE_GVSV + PERL_IMPLICIT_CONTEXT PERLIO_LAYERS PERL_MALLOC_WRAP PERL_OP_PARENT + PERL_PRESERVE_IVUV PERL_TRACK_MEMPOOL PERL_USE_DEVEL USE_64_BIT_ALL + USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE + USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME USE_LONG_DOUBLE + USE_PERL_ATOF USE_PERLIO USE_REENTRANT_API USE_THREAD_SAFE_LOCALE + )) { + is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); + delete $opt->{$o}; + } +foreach my $o (sort keys %$opt) { + is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); + } + +eval { require Digest::MD5; }; +my $md5 = $@ ? "0" x 32 : "8404b533829bd9752df7f662a710f993"; +ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); +is ($sig, $md5, "MD5"); + +is_deeply ($conf->{build}{patches}, [ + "SMOKEdfba4714a9dc4c35123b4df0a5e1721ccb081d97" ], "No local patches"); + +my %check = ( + alignbytes => 16, + api_version => 29, + bincompat5005 => "undef", + byteorder => 12345678, + cc => "g++", + cccdlflags => "-fPIC", + ccdlflags => "-Wl,-E", + config_args => "-des -Dcc=g++ -Dusedevel -Duseithreads -Duse64bitall -Duselongdouble -DDEBUGGING", + gccversion => "8.3.1 20190226 [gcc-8-branch revision 269204]", + gnulibc_version => "2.29", + ivsize => 8, + ivtype => "long", + ld => "g++", + lddlflags => "-shared -O2 -g -L/pro/local/lib -fstack-protector-strong", + ldflags => "-L/pro/local/lib -fstack-protector-strong", + libc => "libc-2.29.so", + lseektype => "off_t", + osvers => "5.0.7-1-default", + use64bitall => "define", + use64bitint => "define", + usemymalloc => "n", + default_inc_excludes_dot + => "define", + ); +is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; + +ok (my $info = summary ($conf), "A summary"); +ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); +is ($info->{default_inc_excludes_dot}, "define", "This build has . NOT in INC"); + +__END__ +Summary of my perl5 (revision 5 version 29 subversion 10) configuration: + Snapshot of: dfba4714a9dc4c35123b4df0a5e1721ccb081d97 + Platform: + osname=linux + osvers=5.0.7-1-default + archname=x86_64-linux-thread-multi-ld + uname='linux lx09 5.0.7-1-default #1 smp sat apr 6 14:47:49 utc 2019 (8f18342) x86_64 x86_64 x86_64 gnulinux ' + config_args='-des -Dcc=g++ -Dusedevel -Duseithreads -Duse64bitall -Duselongdouble -DDEBUGGING' + hint=recommended + useposix=true + d_sigaction=define + useithreads=define + usemultiplicity=define + use64bitint=define + use64bitall=define + uselongdouble=define + usemymalloc=n + default_inc_excludes_dot=define + bincompat5005=undef + Compiler: + cc='g++' + ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -DDEBUGGING -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' + optimize='-O2 -g' + cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -DDEBUGGING -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' + ccversion='' + gccversion='8.3.1 20190226 [gcc-8-branch revision 269204]' + gccosandvers='' + intsize=4 + longsize=8 + ptrsize=8 + doublesize=8 + byteorder=12345678 + doublekind=3 + d_longlong=define + longlongsize=8 + d_longdbl=define + longdblsize=16 + longdblkind=3 + ivtype='long' + ivsize=8 + nvtype='long double' + nvsize=16 + Off_t='off_t' + lseeksize=8 + alignbytes=16 + prototype=define + Linker and Libraries: + ld='g++' + ldflags ='-L/pro/local/lib -fstack-protector-strong' + libpth=/usr/include/c++/8 /usr/include/c++/8/x86_64-suse-linux /usr/include/c++/8/backward /usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/8/include-fixed /usr/lib64/gcc/x86_64-suse-linux/8/../../../../x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64 + libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat + perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc + libc=libc-2.29.so + so=so + useshrplib=false + libperl=libperl.a + gnulibc_version='2.29' + Dynamic Linking: + dlsrc=dl_dlopen.xs + dlext=so + d_dlsymun=undef + ccdlflags='-Wl,-E' + cccdlflags='-fPIC' + lddlflags='-shared -O2 -g -L/pro/local/lib -fstack-protector-strong' + + +Characteristics of this binary (from libperl): + Compile-time options: + DEBUGGING + HAS_TIMES + MULTIPLICITY + PERLIO_LAYERS + PERL_COPY_ON_WRITE + PERL_DONT_CREATE_GVSV + PERL_IMPLICIT_CONTEXT + PERL_MALLOC_WRAP + PERL_OP_PARENT + PERL_PRESERVE_IVUV + PERL_TRACK_MEMPOOL + PERL_USE_DEVEL + USE_64_BIT_ALL + USE_64_BIT_INT + USE_ITHREADS + USE_LARGE_FILES + USE_LOCALE + USE_LOCALE_COLLATE + USE_LOCALE_CTYPE + USE_LOCALE_NUMERIC + USE_LOCALE_TIME + USE_LONG_DOUBLE + USE_PERLIO + USE_PERL_ATOF + USE_REENTRANT_API + USE_THREAD_SAFE_LOCALE + Locally applied patches: + SMOKEdfba4714a9dc4c35123b4df0a5e1721ccb081d97 + Built under linux + Compiled at Apr 13 2019 00:06:38 + %ENV: + PERL6LIB="inst#/pro/3gl/CPAN/rakudo/install" + @INC: + lib + /opt/perl/lib/site_perl/5.29.10/x86_64-linux-thread-multi-ld + /opt/perl/lib/site_perl/5.29.10 + /opt/perl/lib/5.29.10/x86_64-linux-thread-multi-ld + /opt/perl/lib/5.29.10 diff -Nru perl-5.32.1/cpan/Config-Perl-V/t/36_plv5300.t perl-5.34.0/cpan/Config-Perl-V/t/36_plv5300.t --- perl-5.32.1/cpan/Config-Perl-V/t/36_plv5300.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Config-Perl-V/t/36_plv5300.t 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,182 @@ +#!/pro/bin/perl + +use strict; +use warnings; + +BEGIN { + use Test::More; + my $tests = 128; + unless ($ENV{PERL_CORE}) { + require Test::NoWarnings; + Test::NoWarnings->import (); + $tests++; + } + + plan tests => $tests; + } + +use Config::Perl::V qw( summary ); + +ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); +ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); + +is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); +is ($conf->{build}{stamp}, "May 23 2019 14:05:36", "Build time"); +is ($conf->{config}{version}, "5.30.0", "reconstructed \$Config{version}"); + +my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; +foreach my $o (sort qw( + HAS_TIMES MULTIPLICITY PERLIO_LAYERS PERL_COPY_ON_WRITE + PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP + PERL_OP_PARENT PERL_PRESERVE_IVUV USE_THREAD_SAFE_LOCALE + USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES + USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE USE_LOCALE_NUMERIC + USE_LOCALE_TIME USE_LONG_DOUBLE USE_PERLIO USE_PERL_ATOF + USE_REENTRANT_API + )) { + is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); + delete $opt->{$o}; + } +foreach my $o (sort keys %$opt) { + is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); + } + +eval { require Digest::MD5; }; +my $md5 = $@ ? "0" x 32 : "b1138522685da4fff74f7b1118128d02"; +ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); +is ($sig, $md5, "MD5"); + +is_deeply ($conf->{build}{patches}, [ ], "No patches"); + +my %check = ( + alignbytes => 16, + api_version => 30, + bincompat5005 => "undef", + byteorder => 12345678, + cc => "cc", + cccdlflags => "-fPIC", + ccdlflags => "-Wl,-E -Wl,-rpath,/pro/lib/perl5/5.30.0/x86_64-linux-thread-multi-ld/CORE", + config_args => "-Dusethreads -Duseithreads -Duse64bitall -Duselongdouble -Duseshrplib -des", + gccversion => "8.3.1 20190226 [gcc-8-branch revision 269204]", + gnulibc_version => "2.29", + ivsize => 8, + ivtype => "long", + ld => "cc", + lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector-strong", + ldflags => "-L/pro/local/lib -fstack-protector-strong", + libc => "libc-2.29.so", + lseektype => "off_t", + osvers => "5.1.3-1-default", + use64bitall => "define", + use64bitint => "define", + usemymalloc => "n", + default_inc_excludes_dot + => "define", + ); +is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; + +ok (my $info = summary ($conf), "A summary"); +ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); +is ($info->{default_inc_excludes_dot}, "define", "This build has . NOT in INC"); + +__END__ +Summary of my perl5 (revision 5 version 30 subversion 0) configuration: + + Platform: + osname=linux + osvers=5.1.3-1-default + archname=x86_64-linux-thread-multi-ld + uname='linux lx09 5.1.3-1-default #1 smp fri may 17 04:54:29 utc 2019 (07d2e25) x86_64 x86_64 x86_64 gnulinux ' + config_args='-Dusethreads -Duseithreads -Duse64bitall -Duselongdouble -Duseshrplib -des' + hint=recommended + useposix=true + d_sigaction=define + useithreads=define + usemultiplicity=define + use64bitint=define + use64bitall=define + uselongdouble=define + usemymalloc=n + default_inc_excludes_dot=define + bincompat5005=undef + Compiler: + cc='cc' + ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' + optimize='-O2' + cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' + ccversion='' + gccversion='8.3.1 20190226 [gcc-8-branch revision 269204]' + gccosandvers='' + intsize=4 + longsize=8 + ptrsize=8 + doublesize=8 + byteorder=12345678 + doublekind=3 + d_longlong=define + longlongsize=8 + d_longdbl=define + longdblsize=16 + longdblkind=3 + ivtype='long' + ivsize=8 + nvtype='long double' + nvsize=16 + Off_t='off_t' + lseeksize=8 + alignbytes=16 + prototype=define + Linker and Libraries: + ld='cc' + ldflags ='-L/pro/local/lib -fstack-protector-strong' + libpth=/usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/8/include-fixed /usr/lib64/gcc/x86_64-suse-linux/8/../../../../x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64 + libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat + perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc + libc=libc-2.29.so + so=so + useshrplib=true + libperl=libperl.so + gnulibc_version='2.29' + Dynamic Linking: + dlsrc=dl_dlopen.xs + dlext=so + d_dlsymun=undef + ccdlflags='-Wl,-E -Wl,-rpath,/pro/lib/perl5/5.30.0/x86_64-linux-thread-multi-ld/CORE' + cccdlflags='-fPIC' + lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector-strong' + + +Characteristics of this binary (from libperl): + Compile-time options: + HAS_TIMES + MULTIPLICITY + PERLIO_LAYERS + PERL_COPY_ON_WRITE + PERL_DONT_CREATE_GVSV + PERL_IMPLICIT_CONTEXT + PERL_MALLOC_WRAP + PERL_OP_PARENT + PERL_PRESERVE_IVUV + USE_64_BIT_ALL + USE_64_BIT_INT + USE_ITHREADS + USE_LARGE_FILES + USE_LOCALE + USE_LOCALE_COLLATE + USE_LOCALE_CTYPE + USE_LOCALE_NUMERIC + USE_LOCALE_TIME + USE_LONG_DOUBLE + USE_PERLIO + USE_PERL_ATOF + USE_REENTRANT_API + USE_THREAD_SAFE_LOCALE + Built under linux + Compiled at May 23 2019 14:05:36 + %ENV: + PERL6LIB="inst#/pro/3gl/CPAN/rakudo/install" + @INC: + /pro/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi-ld + /pro/lib/perl5/site_perl/5.30.0 + /pro/lib/perl5/5.30.0/x86_64-linux-thread-multi-ld + /pro/lib/perl5/5.30.0 diff -Nru perl-5.32.1/cpan/Config-Perl-V/t/37_plv53111qm.t perl-5.34.0/cpan/Config-Perl-V/t/37_plv53111qm.t --- perl-5.32.1/cpan/Config-Perl-V/t/37_plv53111qm.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Config-Perl-V/t/37_plv53111qm.t 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,186 @@ +#!/pro/bin/perl + +use strict; +use warnings; + +BEGIN { + use Test::More; + my $tests = 128; + unless ($ENV{PERL_CORE}) { + require Test::NoWarnings; + Test::NoWarnings->import (); + $tests++; + } + + plan tests => $tests; + } + +use Config::Perl::V qw( summary ); + +ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); +ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); + +is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); +is ($conf->{build}{stamp}, "Apr 9 2020 17:12:07", "Build time"); +is ($conf->{config}{version}, "5.31.11", "reconstructed \$Config{version}"); + +my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; +foreach my $o (sort qw( + DEBUGGING HAS_TIMES MULTIPLICITY PERL_COPY_ON_WRITE + PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERLIO_LAYERS + PERL_MALLOC_WRAP PERL_OP_PARENT PERL_PRESERVE_IVUV PERL_TRACK_MEMPOOL + PERL_USE_DEVEL USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS + USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE + USE_LOCALE_NUMERIC USE_LOCALE_TIME USE_PERL_ATOF USE_PERLIO + USE_QUADMATH USE_REENTRANT_API USE_THREAD_SAFE_LOCALE + )) { + is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); + delete $opt->{$o}; + } +foreach my $o (sort keys %$opt) { + is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); + } + +eval { require Digest::MD5; }; +my $md5 = $@ ? "0" x 32 : "146e648c6239f623b8a8242fc8b5759f"; +ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); +is ($sig, $md5, "MD5"); + +is_deeply ($conf->{build}{patches}, [ ], "No patches"); + +my %check = ( + alignbytes => 16, + api_version => 31, + bincompat5005 => "undef", + byteorder => 12345678, + cc => "cc", + cccdlflags => "-fPIC", + ccdlflags => "-Wl,-E", + config_args => "-Dusedevel -Duse64bitall -Dusethreads -Duseithreads -Dusequadmath -des", + gccversion => "10.0.1 20200302 (experimental) [revision 778a77357cad11e8dd4c810544330af0fbe843b1]", + gnulibc_version => "2.31", + ivsize => 8, + ivtype => "long", + ld => "cc", + lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector-strong", + ldflags => "-L/pro/local/lib -fstack-protector-strong", + libc => "libc-2.31.so", + lseektype => "off_t", + osvers => "5.6.2-1-default", + use64bitall => "define", + use64bitint => "define", + usemymalloc => "n", + default_inc_excludes_dot + => "define", + ); +is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; + +ok (my $info = summary ($conf), "A summary"); +ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); +is ($info->{default_inc_excludes_dot}, "define", "This build has . NOT in INC"); + +__END__ +Summary of my perl5 (revision 5 version 31 subversion 11) configuration: + Snapshot of: +0300 + Platform: + osname=linux + osvers=5.6.2-1-default + archname=x86_64-linux-thread-multi-quadmath + uname='linux lx09 5.6.2-1-default #1 smp thu apr 2 06:31:32 utc 2020 (c8170d6) x86_64 x86_64 x86_64 gnulinux ' + config_args='-Dusedevel -Duse64bitall -Dusethreads -Duseithreads -Dusequadmath -des' + hint=recommended + useposix=true + d_sigaction=define + useithreads=define + usemultiplicity=define + use64bitint=define + use64bitall=define + uselongdouble=undef + usemymalloc=n + default_inc_excludes_dot=define + bincompat5005=undef + Compiler: + cc='cc' + ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' + optimize='-O2' + cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' + ccversion='' + gccversion='10.0.1 20200302 (experimental) [revision 778a77357cad11e8dd4c810544330af0fbe843b1]' + gccosandvers='' + intsize=4 + longsize=8 + ptrsize=8 + doublesize=8 + byteorder=12345678 + doublekind=3 + d_longlong=define + longlongsize=8 + d_longdbl=define + longdblsize=16 + longdblkind=3 + ivtype='long' + ivsize=8 + nvtype='__float128' + nvsize=16 + Off_t='off_t' + lseeksize=8 + alignbytes=16 + prototype=define + Linker and Libraries: + ld='cc' + ldflags ='-L/pro/local/lib -fstack-protector-strong' + libpth=/usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/10/include-fixed /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64 + libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat -lquadmath + perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc -lquadmath + libc=libc-2.31.so + so=so + useshrplib=false + libperl=libperl.a + gnulibc_version='2.31' + Dynamic Linking: + dlsrc=dl_dlopen.xs + dlext=so + d_dlsymun=undef + ccdlflags='-Wl,-E' + cccdlflags='-fPIC' + lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector-strong' + + +Characteristics of this binary (from libperl): + Compile-time options: + DEBUGGING + HAS_TIMES + MULTIPLICITY + PERLIO_LAYERS + PERL_COPY_ON_WRITE + PERL_DONT_CREATE_GVSV + PERL_IMPLICIT_CONTEXT + PERL_MALLOC_WRAP + PERL_OP_PARENT + PERL_PRESERVE_IVUV + PERL_TRACK_MEMPOOL + PERL_USE_DEVEL + USE_64_BIT_ALL + USE_64_BIT_INT + USE_ITHREADS + USE_LARGE_FILES + USE_LOCALE + USE_LOCALE_COLLATE + USE_LOCALE_CTYPE + USE_LOCALE_NUMERIC + USE_LOCALE_TIME + USE_PERLIO + USE_PERL_ATOF + USE_QUADMATH + USE_REENTRANT_API + USE_THREAD_SAFE_LOCALE + Built under linux + Compiled at Apr 9 2020 17:12:07 + %ENV: + PERL6LIB="inst#/pro/3gl/CPAN/rakudo/install" + @INC: + lib + /pro/lib/perl5/site_perl/5.31.11/x86_64-linux-thread-multi-quadmath + /pro/lib/perl5/site_perl/5.31.11 + /pro/lib/perl5/5.31.11/x86_64-linux-thread-multi-quadmath + /pro/lib/perl5/5.31.11 diff -Nru perl-5.32.1/cpan/Config-Perl-V/t/38_plv5320tld.t perl-5.34.0/cpan/Config-Perl-V/t/38_plv5320tld.t --- perl-5.32.1/cpan/Config-Perl-V/t/38_plv5320tld.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Config-Perl-V/t/38_plv5320tld.t 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,182 @@ +#!/pro/bin/perl + +use strict; +use warnings; + +BEGIN { + use Test::More; + my $tests = 128; + unless ($ENV{PERL_CORE}) { + require Test::NoWarnings; + Test::NoWarnings->import (); + $tests++; + } + + plan tests => $tests; + } + +use Config::Perl::V qw( summary ); + +ok (my $conf = Config::Perl::V::plv2hash (), "Read perl -v block"); +ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); + +is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); +is ($conf->{build}{stamp}, "Jun 21 2020 10:17:00", "Build time"); +is ($conf->{config}{version}, "5.32.0", "reconstructed \$Config{version}"); + +my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; +foreach my $o (sort qw( + HAS_TIMES MULTIPLICITY PERLIO_LAYERS PERL_COPY_ON_WRITE + PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP + PERL_OP_PARENT PERL_PRESERVE_IVUV USE_THREAD_SAFE_LOCALE + USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES + USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE USE_LOCALE_NUMERIC + USE_LOCALE_TIME USE_LONG_DOUBLE USE_PERLIO USE_PERL_ATOF + USE_REENTRANT_API + )) { + is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); + delete $opt->{$o}; + } +foreach my $o (sort keys %$opt) { + is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); + } + +eval { require Digest::MD5; }; +my $md5 = $@ ? "0" x 32 : "901df8463a7bda6075bd75539214e75e"; +ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); +is ($sig, $md5, "MD5"); + +is_deeply ($conf->{build}{patches}, [ ], "No patches"); + +my %check = ( + alignbytes => 16, + api_version => 32, + bincompat5005 => "undef", + byteorder => 12345678, + cc => "cc", + cccdlflags => "-fPIC", + ccdlflags => "-Wl,-E -Wl,-rpath,/pro/lib/perl5/5.32.0/x86_64-linux-thread-multi-ld/CORE", + config_args => "-Dusethreads -Duseithreads -Duse64bitall -Duselongdouble -Duseshrplib -des", + gccversion => "10.1.1 20200507 [revision dd38686d9c810cecbaa80bb82ed91caaa58ad635]", + gnulibc_version => "2.31", + ivsize => 8, + ivtype => "long", + ld => "cc", + lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector-strong", + ldflags => "-L/pro/local/lib -fstack-protector-strong", + libc => "libc-2.31.so", + lseektype => "off_t", + osvers => "5.7.1-1-default", + use64bitall => "define", + use64bitint => "define", + usemymalloc => "n", + default_inc_excludes_dot + => "define", + ); +is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; + +ok (my $info = summary ($conf), "A summary"); +ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); +is ($info->{default_inc_excludes_dot}, "define", "This build has . NOT in INC"); + +__END__ +Summary of my perl5 (revision 5 version 32 subversion 0) configuration: + + Platform: + osname=linux + osvers=5.7.1-1-default + archname=x86_64-linux-thread-multi-ld + uname='linux lx09 5.7.1-1-default #1 smp wed jun 10 11:53:46 utc 2020 (6a549f6) x86_64 x86_64 x86_64 gnulinux ' + config_args='-Dusethreads -Duseithreads -Duse64bitall -Duselongdouble -Duseshrplib -des' + hint=recommended + useposix=true + d_sigaction=define + useithreads=define + usemultiplicity=define + use64bitint=define + use64bitall=define + uselongdouble=define + usemymalloc=n + default_inc_excludes_dot=define + bincompat5005=undef + Compiler: + cc='cc' + ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' + optimize='-O2' + cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' + ccversion='' + gccversion='10.1.1 20200507 [revision dd38686d9c810cecbaa80bb82ed91caaa58ad635]' + gccosandvers='' + intsize=4 + longsize=8 + ptrsize=8 + doublesize=8 + byteorder=12345678 + doublekind=3 + d_longlong=define + longlongsize=8 + d_longdbl=define + longdblsize=16 + longdblkind=3 + ivtype='long' + ivsize=8 + nvtype='long double' + nvsize=16 + Off_t='off_t' + lseeksize=8 + alignbytes=16 + prototype=define + Linker and Libraries: + ld='cc' + ldflags ='-L/pro/local/lib -fstack-protector-strong' + libpth=/usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/10/include-fixed /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64 + libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat + perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc + libc=libc-2.31.so + so=so + useshrplib=true + libperl=libperl.so + gnulibc_version='2.31' + Dynamic Linking: + dlsrc=dl_dlopen.xs + dlext=so + d_dlsymun=undef + ccdlflags='-Wl,-E -Wl,-rpath,/pro/lib/perl5/5.32.0/x86_64-linux-thread-multi-ld/CORE' + cccdlflags='-fPIC' + lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector-strong' + + +Characteristics of this binary (from libperl): + Compile-time options: + HAS_TIMES + MULTIPLICITY + PERLIO_LAYERS + PERL_COPY_ON_WRITE + PERL_DONT_CREATE_GVSV + PERL_IMPLICIT_CONTEXT + PERL_MALLOC_WRAP + PERL_OP_PARENT + PERL_PRESERVE_IVUV + USE_64_BIT_ALL + USE_64_BIT_INT + USE_ITHREADS + USE_LARGE_FILES + USE_LOCALE + USE_LOCALE_COLLATE + USE_LOCALE_CTYPE + USE_LOCALE_NUMERIC + USE_LOCALE_TIME + USE_LONG_DOUBLE + USE_PERLIO + USE_PERL_ATOF + USE_REENTRANT_API + USE_THREAD_SAFE_LOCALE + Built under linux + Compiled at Jun 21 2020 10:17:00 + %ENV: + PERL6LIB="inst#/pro/3gl/CPAN/rakudo/install" + @INC: + /pro/lib/perl5/site_perl/5.32.0/x86_64-linux-thread-multi-ld + /pro/lib/perl5/site_perl/5.32.0 + /pro/lib/perl5/5.32.0/x86_64-linux-thread-multi-ld + /pro/lib/perl5/5.32.0 diff -Nru perl-5.32.1/cpan/Config-Perl-V/V.pm perl-5.34.0/cpan/Config-Perl-V/V.pm --- perl-5.32.1/cpan/Config-Perl-V/V.pm 2020-12-18 09:57:54.000000000 +0000 +++ perl-5.34.0/cpan/Config-Perl-V/V.pm 2021-01-20 23:04:44.000000000 +0000 @@ -6,12 +6,12 @@ use Config; use Exporter; use vars qw($VERSION @ISA @EXPORT_OK %EXPORT_TAGS); -$VERSION = "0.32"; +$VERSION = "0.33"; @ISA = qw( Exporter ); @EXPORT_OK = qw( plv2hash summary myconfig signature ); %EXPORT_TAGS = ( - all => [ @EXPORT_OK ], - sig => [ "signature" ], + 'all' => [ @EXPORT_OK ], + 'sig' => [ "signature" ], ); # Characteristics of this binary (from libperl): @@ -24,7 +24,7 @@ # perl -ne'(/^S_Internals_V/../^}/)&&s/^\s+"( .*)"/$1/ and print' perl.c # perl.h line 4566 PL_bincompat_options # perl -ne'(/^\w.*PL_bincompat/../^\w}/)&&s/^\s+"( .*)"/$1/ and print' perl.h -my %BTD = map { $_ => 0 } qw( +my %BTD = map {( $_ => 0 )} qw( DEBUGGING NO_HASH_SEED @@ -183,52 +183,52 @@ ); my %empty_build = ( - osname => "", - stamp => 0, - options => { %BTD }, - patches => [], + 'osname' => "", + 'stamp' => 0, + 'options' => { %BTD }, + 'patches' => [], ); sub _make_derived { my $conf = shift; - for ( [ lseektype => "Off_t" ], - [ myuname => "uname" ], - [ perl_patchlevel => "patch" ], + for ( [ 'lseektype' => "Off_t" ], + [ 'myuname' => "uname" ], + [ 'perl_patchlevel' => "patch" ], ) { - my ($official, $derived) = @$_; - $conf->{config}{$derived} ||= $conf->{config}{$official}; - $conf->{config}{$official} ||= $conf->{config}{$derived}; - $conf->{derived}{$derived} = delete $conf->{config}{$derived}; + my ($official, $derived) = @{$_}; + $conf->{'config'}{$derived} ||= $conf->{'config'}{$official}; + $conf->{'config'}{$official} ||= $conf->{'config'}{$derived}; + $conf->{'derived'}{$derived} = delete $conf->{'config'}{$derived}; } - if (exists $conf->{config}{version_patchlevel_string} && - !exists $conf->{config}{api_version}) { - my $vps = $conf->{config}{version_patchlevel_string}; + if (exists $conf->{'config'}{'version_patchlevel_string'} && + !exists $conf->{'config'}{'api_version'}) { + my $vps = $conf->{'config'}{'version_patchlevel_string'}; $vps =~ s{\b revision \s+ (\S+) }{}x and - $conf->{config}{revision} ||= $1; + $conf->{'config'}{'revision'} ||= $1; $vps =~ s{\b version \s+ (\S+) }{}x and - $conf->{config}{api_version} ||= $1; + $conf->{'config'}{'api_version'} ||= $1; $vps =~ s{\b subversion \s+ (\S+) }{}x and - $conf->{config}{subversion} ||= $1; + $conf->{'config'}{'subversion'} ||= $1; $vps =~ s{\b patch \s+ (\S+) }{}x and - $conf->{config}{perl_patchlevel} ||= $1; + $conf->{'config'}{'perl_patchlevel'} ||= $1; } - ($conf->{config}{version_patchlevel_string} ||= join " ", - map { ($_, $conf->{config}{$_} ) } - grep { $conf->{config}{$_} } + ($conf->{'config'}{'version_patchlevel_string'} ||= join " ", + map { ($_, $conf->{'config'}{$_} ) } + grep { $conf->{'config'}{$_} } qw( api_version subversion perl_patchlevel )) =~ s/\bperl_//; - $conf->{config}{perl_patchlevel} ||= ""; # 0 is not a valid patchlevel + $conf->{'config'}{'perl_patchlevel'} ||= ""; # 0 is not a valid patchlevel - if ($conf->{config}{perl_patchlevel} =~ m{^git\w*-([^-]+)}i) { - $conf->{config}{git_branch} ||= $1; - $conf->{config}{git_describe} ||= $conf->{config}{perl_patchlevel}; + if ($conf->{'config'}{'perl_patchlevel'} =~ m{^git\w*-([^-]+)}i) { + $conf->{'config'}{'git_branch'} ||= $1; + $conf->{'config'}{'git_describe'} ||= $conf->{'config'}{'perl_patchlevel'}; } - $conf->{config}{$_} ||= "undef" for grep m/^(?:use|def)/ => @config_vars; + $conf->{'config'}{$_} ||= "undef" for grep m{^(?:use|def)} => @config_vars; $conf; } # _make_derived @@ -238,20 +238,20 @@ my $pv = join "\n" => @_; - if ($pv =~ m/^Summary of my\s+(\S+)\s+\(\s*(.*?)\s*\)/m) { - $config{"package"} = $1; + if ($pv =~ m{^Summary of my\s+(\S+)\s+\(\s*(.*?)\s*\)}m) { + $config{'package'} = $1; my $rev = $2; - $rev =~ s/^ revision \s+ (\S+) \s*//x and $config{revision} = $1; - $rev and $config{version_patchlevel_string} = $rev; - my ($rel) = $config{"package"} =~ m{perl(\d)}; + $rev =~ s/^ revision \s+ (\S+) \s*//x and $config{'revision'} = $1; + $rev and $config{'version_patchlevel_string'} = $rev; + my ($rel) = $config{'package'} =~ m{perl(\d)}; my ($vers, $subvers) = $rev =~ m{version\s+(\d+)\s+subversion\s+(\d+)}; defined $vers && defined $subvers && defined $rel and - $config{version} = "$rel.$vers.$subvers"; + $config{'version'} = "$rel.$vers.$subvers"; } - if ($pv =~ m/^\s+(Snapshot of:)\s+(\S+)/) { - $config{git_commit_id_title} = $1; - $config{git_commit_id} = $2; + if ($pv =~ m{^\s+(Snapshot of:)\s+(\S+)}) { + $config{'git_commit_id_title'} = $1; + $config{'git_commit_id'} = $2; } # these are always last on line and can have multiple quotation styles @@ -275,11 +275,11 @@ }gx)) { # between every kv pair while (my ($k, $v) = each %kv) { - $k =~ s/\s+$//; - $v =~ s/\s*\n\z//; - $v =~ s/,$//; - $v =~ m/^'(.*)'$/ and $v = $1; - $v =~ s/\s+$//; + $k =~ s{\s+$} {}; + $v =~ s{\s*\n\z} {}; + $v =~ s{,$} {}; + $v =~ m{^'(.*)'$} and $v = $1; + $v =~ s{\s+$} {}; $config{$k} = $v; } } @@ -287,36 +287,36 @@ my $build = { %empty_build }; $pv =~ m{^\s+Compiled at\s+(.*)}m - and $build->{stamp} = $1; + and $build->{'stamp'} = $1; $pv =~ m{^\s+Locally applied patches:(?:\s+|\n)(.*?)(?:[\s\n]+Buil[td] under)}ms - and $build->{patches} = [ split m/\n+\s*/, $1 ]; + and $build->{'patches'} = [ split m{\n+\s*}, $1 ]; $pv =~ m{^\s+Compile-time options:(?:\s+|\n)(.*?)(?:[\s\n]+(?:Locally applied|Buil[td] under))}ms - and map { $build->{options}{$_} = 1 } split m/\s+|\n/ => $1; + and map { $build->{'options'}{$_} = 1 } split m{\s+|\n} => $1; - $build->{osname} = $config{osname}; + $build->{'osname'} = $config{'osname'}; $pv =~ m{^\s+Built under\s+(.*)}m - and $build->{osname} = $1; - $config{osname} ||= $build->{osname}; + and $build->{'osname'} = $1; + $config{'osname'} ||= $build->{'osname'}; return _make_derived ({ - build => $build, - environment => {}, - config => \%config, - derived => {}, - inc => [], + 'build' => $build, + 'environment' => {}, + 'config' => \%config, + 'derived' => {}, + 'inc' => [], }); } # plv2hash sub summary { my $conf = shift || myconfig (); ref $conf eq "HASH" - && exists $conf->{config} - && exists $conf->{build} - && ref $conf->{config} eq "HASH" - && ref $conf->{build} eq "HASH" or return; + && exists $conf->{'config'} + && exists $conf->{'build'} + && ref $conf->{'config'} eq "HASH" + && ref $conf->{'build'} eq "HASH" or return; my %info = map { - exists $conf->{config}{$_} ? ( $_ => $conf->{config}{$_} ) : () } + exists $conf->{'config'}{$_} ? ( $_ => $conf->{'config'}{$_} ) : () } qw( archname osname osvers revision patchlevel subversion version cc ccversion gccversion config_args inc_version_list d_longdbl d_longlong use64bitall use64bitint useithreads @@ -324,7 +324,7 @@ doublesize intsize ivsize nvsize longdblsize longlongsize lseeksize default_inc_excludes_dot ); - $info{$_}++ for grep { $conf->{build}{options}{$_} } keys %{$conf->{build}{options}}; + $info{$_}++ for grep { $conf->{'build'}{'options'}{$_} } keys %{$conf->{'build'}{'options'}}; return \%info; } # summary @@ -336,19 +336,19 @@ eval { require Digest::MD5 }; $@ and return $no_md5; - $conf->{cc} =~ s{.*\bccache\s+}{}; - $conf->{cc} =~ s{.*[/\\]}{}; + $conf->{'cc'} =~ s{.*\bccache\s+}{}; + $conf->{'cc'} =~ s{.*[/\\]}{}; - delete $conf->{config_args}; + delete $conf->{'config_args'}; return Digest::MD5::md5_hex (join "\xFF" => map { "$_=".(defined $conf->{$_} ? $conf->{$_} : "\xFE"); - } sort keys %$conf); + } sort keys %{$conf}); } # signature sub myconfig { my $args = shift; - my %args = ref $args eq "HASH" ? %$args : - ref $args eq "ARRAY" ? @$args : (); + my %args = ref $args eq "HASH" ? %{$args} : + ref $args eq "ARRAY" ? @{$args} : (); my $build = { %empty_build }; @@ -356,33 +356,34 @@ my $stamp = eval { Config::compile_date () }; if (defined $stamp) { $stamp =~ s/^Compiled at //; - $build->{osname} = $^O; - $build->{stamp} = $stamp; - $build->{patches} = [ Config::local_patches () ]; - $build->{options}{$_} = 1 for Config::bincompat_options (), - Config::non_bincompat_options (); + $build->{'osname'} = $^O; + $build->{'stamp'} = $stamp; + $build->{'patches'} = [ Config::local_patches () ]; + $build->{'options'}{$_} = 1 for Config::bincompat_options (), + Config::non_bincompat_options (); } else { #y $pv = qx[$^X -e"sub Config::myconfig{};" -V]; my $cnf = plv2hash (qx[$^X -V]); - $build->{$_} = $cnf->{build}{$_} for qw( osname stamp patches options ); + $build->{$_} = $cnf->{'build'}{$_} for qw( osname stamp patches options ); } my @KEYS = keys %ENV; my %env = - map { $_ => $ENV{$_} } grep m/^PERL/ => @KEYS; - $args{env} and - map { $env{$_} = $ENV{$_} } grep m{$args{env}} => @KEYS; + map {( $_ => $ENV{$_} )} grep m{^PERL} => @KEYS; + if ($args{'env'}) { + $env{$_} = $ENV{$_} for grep m{$args{'env'}} => @KEYS; + } my %config = map { $_ => $Config{$_} } @config_vars; return _make_derived ({ - build => $build, - environment => \%env, - config => \%config, - derived => {}, - inc => \@INC, + 'build' => $build, + 'environment' => \%env, + 'config' => \%config, + 'derived' => {}, + 'inc' => \@INC, }); } # myconfig @@ -553,7 +554,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (C) 2009-2018 H.Merijn Brand +Copyright (C) 2009-2020 H.Merijn Brand This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/CPAN/lib/App/Cpan.pm perl-5.34.0/cpan/CPAN/lib/App/Cpan.pm --- perl-5.32.1/cpan/CPAN/lib/App/Cpan.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/CPAN/lib/App/Cpan.pm 2020-10-24 18:43:34.000000000 +0000 @@ -6,7 +6,7 @@ use if $] < 5.008 => 'IO::Scalar'; -$VERSION = '1.675'; +$VERSION = '1.676'; =head1 NAME @@ -689,7 +689,7 @@ *CPAN::Shell::mywarn = sub { my($self,$what) = @_; - $scalar .= $what; + $scalar .= $what if defined $what; $self->print_ornamented($what, $CPAN::Config->{colorize_warn}||'bold red on_white' ); diff -Nru perl-5.32.1/cpan/CPAN/lib/CPAN/FirstTime.pm perl-5.34.0/cpan/CPAN/lib/CPAN/FirstTime.pm --- perl-5.32.1/cpan/CPAN/lib/CPAN/FirstTime.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/CPAN/lib/CPAN/FirstTime.pm 2020-10-24 18:43:34.000000000 +0000 @@ -11,7 +11,7 @@ use CPAN::Mirrors (); use CPAN::Version (); use vars qw($VERSION $auto_config); -$VERSION = "5.5314"; +$VERSION = "5.5315"; =head1 NAME @@ -59,8 +59,8 @@ then let the build of this distro fail when it would not represent the most up-to-date version of the distro. -Note: choosing anyhing but 'yes' for this option will need -Devel::DistnameInfo being installed for taking effect. +Note: choosing anything but 'yes' for this option will need +CPAN::DistnameInfo being installed for taking effect. Do you want to allow installing distros that are not indexed as the highest distro-version for all contained modules (yes, no, ask/yes, diff -Nru perl-5.32.1/cpan/CPAN/lib/CPAN/FTP.pm perl-5.34.0/cpan/CPAN/lib/CPAN/FTP.pm --- perl-5.32.1/cpan/CPAN/lib/CPAN/FTP.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/CPAN/lib/CPAN/FTP.pm 2020-10-24 18:43:34.000000000 +0000 @@ -15,7 +15,7 @@ use vars qw( $VERSION ); -$VERSION = "5.5012"; +$VERSION = "5.5013"; sub _plus_append_open { my($fh, $file) = @_; @@ -38,7 +38,7 @@ return if defined $ftpstats_size && $ftpstats_size <= 0; my $locktype = $fh ? LOCK_EX : LOCK_SH; # XXX On Windows flock() implements mandatory locking, so we can - # XXX only use shared locking to still allow _yaml_load_file() to + # XXX only use shared locking to still allow _yaml_loadfile() to # XXX read from the file using a different filehandle. $locktype = LOCK_SH if $^O eq "MSWin32"; diff -Nru perl-5.32.1/cpan/CPAN/lib/CPAN.pm perl-5.34.0/cpan/CPAN/lib/CPAN.pm --- perl-5.32.1/cpan/CPAN/lib/CPAN.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/CPAN/lib/CPAN.pm 2020-10-24 18:43:34.000000000 +0000 @@ -2,7 +2,7 @@ # vim: ts=4 sts=4 sw=4: use strict; package CPAN; -$CPAN::VERSION = '2.27'; +$CPAN::VERSION = '2.28'; $CPAN::VERSION =~ s/_//; # we need to run chdir all over and we would get at wrong libraries @@ -558,7 +558,9 @@ # 5.6.2 could not do the local() with the reference # so we do it manually instead my $old_loadcode = ${"$yaml_module\::LoadCode"}; + my $old_loadblessed = ${"$yaml_module\::LoadBlessed"}; ${ "$yaml_module\::LoadCode" } = $CPAN::Config->{yaml_load_code} || 0; + ${ "$yaml_module\::LoadBlessed" } = 1; my ($code, @yaml); if ($code = UNIVERSAL::can($yaml_module, "LoadFile")) { @@ -569,19 +571,20 @@ } } elsif ($code = UNIVERSAL::can($yaml_module, "Load")) { local *FH; - unless (open FH, $local_file) { + if (open FH, $local_file) { + local $/; + my $ystream = ; + eval { @yaml = $code->($ystream); }; + if ($@) { + # this shall not be done by the frontend + die CPAN::Exception::yaml_process_error->new($yaml_module,$local_file,"parse",$@); + } + } else { $CPAN::Frontend->mywarn("Could not open '$local_file': $!"); - return +[]; - } - local $/; - my $ystream = ; - eval { @yaml = $code->($ystream); }; - if ($@) { - # this shall not be done by the frontend - die CPAN::Exception::yaml_process_error->new($yaml_module,$local_file,"parse",$@); } } ${"$yaml_module\::LoadCode"} = $old_loadcode; + ${"$yaml_module\::LoadBlessed"} = $old_loadblessed; return \@yaml; } else { # this shall not be done by the frontend diff -Nru perl-5.32.1/cpan/DB_File/config.in perl-5.34.0/cpan/DB_File/config.in --- perl-5.32.1/cpan/DB_File/config.in 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/DB_File/config.in 2020-10-04 22:17:12.000000000 +0000 @@ -32,7 +32,7 @@ # For older versions of Berkeley DB change both PREFIX and HASH to int. # Version 1.71, 1.72 and 1.73 are known to need this change. # -# If you don't know what version you have have a look in the file db.h. +# If you don't know what version you have have a look in the file db.h. # # Search for the string "DB_VERSION_MAJOR". If it is present, you # have Berkeley DB version 2 (or greater). @@ -41,7 +41,7 @@ # Check the return type from the prefix element. It should look like # this in an older copy of db.h: # -# int (*prefix) __P((const DBT *, const DBT *)); +# int (*prefix) __P((const DBT *, const DBT *)); # # and like this in a more recent copy: # @@ -54,7 +54,7 @@ # Now find the definition of the HASHINFO typedef. Check the return # type of the hash element. Older versions look like this: # -# int (*hash) __P((const void *, size_t)); +# int (*hash) __P((const void *, size_t)); # # newer like this: # @@ -91,7 +91,7 @@ # If you have changed the name of the library, uncomment the line # below (by removing the leading #) and edit the line to use the name # you have picked. - + #DBNAME = -ldb-2.4.10 # end of file config.in diff -Nru perl-5.32.1/cpan/DB_File/DB_File_BS perl-5.34.0/cpan/DB_File/DB_File_BS --- perl-5.32.1/cpan/DB_File/DB_File_BS 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/DB_File/DB_File_BS 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -# NeXT needs /usr/lib/libposix.a to load along with DB_File.so -if ( $dlsrc eq "dl_next.xs" ) { - @DynaLoader::dl_resolve_using = ( '/usr/lib/libposix.a' ); -} - -1; diff -Nru perl-5.32.1/cpan/DB_File/DB_File.pm perl-5.34.0/cpan/DB_File/DB_File.pm --- perl-5.32.1/cpan/DB_File/DB_File.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/DB_File/DB_File.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,4 +1,4 @@ -# DB_File.pm -- Perl 5 interface to Berkeley DB +# DB_File.pm -- Perl 5 interface to Berkeley DB # # Written by Paul Marquess (pmqs@cpan.org) # @@ -30,21 +30,21 @@ { my $pkg = shift ; - bless { VALID => { + bless { VALID => { bsize => 1, ffactor => 1, nelem => 1, cachesize => 1, hash => 2, lorder => 1, - }, + }, GOT => {} }, $pkg ; } -sub FETCH -{ +sub FETCH +{ my $self = shift ; my $key = shift ; @@ -55,7 +55,7 @@ } -sub STORE +sub STORE { my $self = shift ; my $key = shift ; @@ -65,17 +65,17 @@ if ( $type ) { - croak "Key '$key' not associated with a code reference" + croak "Key '$key' not associated with a code reference" if $type == 2 && !ref $value && ref $value ne 'CODE'; $self->{GOT}{$key} = $value ; return ; } - + my $pkg = ref $self ; croak "${pkg}::STORE - Unknown element '$key'" ; } -sub DELETE +sub DELETE { my $self = shift ; my $key = shift ; @@ -85,7 +85,7 @@ delete $self->{GOT}{$key} ; return ; } - + my $pkg = ref $self ; croak "DB_File::HASHINFO::DELETE - Unknown element '$key'" ; } @@ -121,7 +121,7 @@ { my $pkg = shift ; - bless { VALID => { map {$_, 1} + bless { VALID => { map {$_, 1} qw( bval cachesize psize flags lorder reclen bfname ) }, GOT => {}, @@ -139,7 +139,7 @@ { my $pkg = shift ; - bless { VALID => { + bless { VALID => { flags => 1, cachesize => 1, maxkeypage => 1, @@ -163,28 +163,28 @@ use Carp; # Module not thread safe, so don't clone -sub CLONE_SKIP { 1 } +sub CLONE_SKIP { 1 } -$VERSION = "1.853" ; +$VERSION = "1.855" ; $VERSION = eval $VERSION; # needed for dev releases { local $SIG{__WARN__} = sub {$splice_end_array_no_length = join(" ",@_);}; my @a =(1); splice(@a, 3); - $splice_end_array_no_length = + $splice_end_array_no_length = ($splice_end_array_no_length =~ /^splice\(\) offset past end of array at /); -} +} { local $SIG{__WARN__} = sub {$splice_end_array = join(" ", @_);}; my @a =(1); splice(@a, 3, 1); - $splice_end_array = + $splice_end_array = ($splice_end_array =~ /^splice\(\) offset past end of array at /); -} +} #typedef enum { DB_BTREE, DB_HASH, DB_RECNO } DBTYPE; -$DB_BTREE = new DB_File::BTREEINFO ; -$DB_HASH = new DB_File::HASHINFO ; -$DB_RECNO = new DB_File::RECNOINFO ; +$DB_BTREE = DB_File::BTREEINFO->new(); +$DB_HASH = DB_File::HASHINFO->new(); +$DB_RECNO = DB_File::RECNOINFO->new(); require Tie::Hash; require Exporter; @@ -201,7 +201,7 @@ push @ISA, qw(Tie::Hash Exporter); @EXPORT = qw( - $DB_BTREE $DB_HASH $DB_RECNO + $DB_BTREE $DB_HASH $DB_RECNO BTREEMAGIC BTREEVERSION @@ -242,7 +242,7 @@ no strict 'refs'; *{$AUTOLOAD} = sub { $val }; goto &{$AUTOLOAD}; -} +} eval { @@ -256,7 +256,7 @@ if ($use_XSLoader) { XSLoader::load("DB_File", $VERSION)} else - { bootstrap DB_File $VERSION } + { DB_File->bootstrap( $VERSION ) } sub tie_hash_or_array { @@ -264,22 +264,22 @@ my $tieHASH = ( (caller(1))[3] =~ /TIEHASH/ ) ; use File::Spec; - $arg[1] = File::Spec->rel2abs($arg[1]) + $arg[1] = File::Spec->rel2abs($arg[1]) if defined $arg[1] ; - $arg[4] = tied %{ $arg[4] } + $arg[4] = tied %{ $arg[4] } if @arg >= 5 && ref $arg[4] && $arg[4] =~ /=HASH/ && tied %{ $arg[4] } ; $arg[2] = O_CREAT()|O_RDWR() if @arg >=3 && ! defined $arg[2]; $arg[3] = 0666 if @arg >=4 && ! defined $arg[3]; - # make recno in Berkeley DB version 2 (or better) work like + # make recno in Berkeley DB version 2 (or better) work like # recno in version 1. if ($db_version >= 4 and ! $tieHASH) { $arg[2] |= O_CREAT(); } - if ($db_version > 1 and defined $arg[4] and $arg[4] =~ /RECNO/ and + if ($db_version > 1 and defined $arg[4] and $arg[4] =~ /RECNO/ and $arg[1] and ! -e $arg[1]) { open(FH, ">$arg[1]") or return undef ; close FH ; @@ -299,20 +299,20 @@ tie_hash_or_array(@_) ; } -sub CLEAR +sub CLEAR { my $self = shift; my $key = 0 ; my $value = "" ; my $status = $self->seq($key, $value, R_FIRST()); my @keys; - + while ($status == 0) { push @keys, $key; $status = $self->seq($key, $value, R_NEXT()); } foreach $key (reverse @keys) { - my $s = $self->del($key); + my $s = $self->del($key); } } @@ -333,7 +333,7 @@ $self->put($length-1, "") ; } } - + sub SPLICE { @@ -348,15 +348,15 @@ my $length = @_ ? shift : 0; # Carping about definedness comes _after_ the OFFSET sanity check. # This is so we get the same error messages as Perl's splice(). - # + # my @list = @_; my $size = $self->FETCHSIZE(); - + # 'If OFFSET is negative then it start that far from the end of # the array.' - # + # if ($offset < 0) { my $new_offset = $size + $offset; if ($new_offset < 0) { @@ -384,7 +384,7 @@ # 'If LENGTH is negative, leave that many elements off the end of # the array.' - # + # if ($length < 0) { $length = $size - $offset + $length; @@ -392,7 +392,7 @@ # The user must have specified a length bigger than the # length of the array passed in. But perl's splice() # doesn't catch this, it just behaves as for length=0. - # + # $length = 0; } } @@ -406,7 +406,7 @@ # 'Removes the elements designated by OFFSET and LENGTH from an # array,'... - # + # my @removed = (); foreach (0 .. $length - 1) { my $old; @@ -480,13 +480,13 @@ if (wantarray) { # 'In list context, returns the elements removed from the # array.' - # + # return @removed; } elsif (defined wantarray and not wantarray) { # 'In scalar context, returns the last element removed, or # undef if no elements are removed.' - # + # if (@removed) { my $last = pop @removed; return "$last"; @@ -506,7 +506,7 @@ { croak "Usage: \$db->find_dup(key,value)\n" unless @_ == 3 ; - + my $db = shift ; my ($origkey, $value_wanted) = @_ ; my ($key, $value) = ($origkey, 0); @@ -526,7 +526,7 @@ { croak "Usage: \$db->del_dup(key,value)\n" unless @_ == 3 ; - + my $db = shift ; my ($key, $value) = @_ ; my ($status) = $db->find_dup($key, $value) ; @@ -540,7 +540,7 @@ { croak "Usage: \$db->get_dup(key [,flag])\n" unless @_ == 2 or @_ == 3 ; - + my $db = shift ; my $key = shift ; my $flag = shift ; @@ -551,13 +551,13 @@ my @values = () ; my $counter = 0 ; my $status = 0 ; - + # iterate through the database until either EOF ($status == 0) # or a different key is encountered ($key ne $origkey). for ($status = $db->seq($key, $value, R_CURSOR()) ; $status == 0 and $key eq $origkey ; $status = $db->seq($key, $value, R_NEXT()) ) { - + # save the value or count number of matches if ($wantarray) { if ($flag) @@ -567,9 +567,9 @@ } else { ++ $counter } - + } - + return ($wantarray ? ($flag ? %values : @values) : $counter) ; } @@ -723,7 +723,7 @@ Here is the C prototype for dbopen(): DB* - dbopen (const char * file, int flags, int mode, + dbopen (const char * file, int flags, int mode, DBTYPE type, const void * openinfo) The parameter C is an enumeration which specifies which of the 3 @@ -749,7 +749,7 @@ The keys allowed in each of these pre-defined references is limited to the names used in the equivalent C structure. So, for example, the $DB_HASH reference will only allow keys called C, C, -C, C, C and C. +C, C, C and C. To change one of these elements, just assign to it like this: @@ -763,7 +763,7 @@ Here are examples of the constructors and the valid options available for DB_HASH, DB_BTREE and DB_RECNO respectively. - $a = new DB_File::HASHINFO ; + $a = DB_File::HASHINFO->new(); $a->{'bsize'} ; $a->{'cachesize'} ; $a->{'ffactor'}; @@ -771,7 +771,7 @@ $a->{'lorder'} ; $a->{'nelem'} ; - $b = new DB_File::BTREEINFO ; + $b = DB_File::BTREEINFO->new(); $b->{'flags'} ; $b->{'cachesize'} ; $b->{'maxkeypage'} ; @@ -781,7 +781,7 @@ $b->{'prefix'} ; $b->{'lorder'} ; - $c = new DB_File::RECNOINFO ; + $c = DB_File::RECNOINFO->new(); $c->{'bval'} ; $c->{'cachesize'} ; $c->{'psize'} ; @@ -795,7 +795,7 @@ default values - that means you don't have to set I of the values when you only want to change one. Here is an example: - $a = new DB_File::HASHINFO ; + $a = DB_File::HASHINFO->new(); $a->{'cachesize'} = 12345 ; tie %y, 'DB_File', "filename", $flags, 0777, $a ; @@ -826,7 +826,7 @@ { my ($key, $key2) = @_ ; ... - # return number of bytes of $key2 which are + # return number of bytes of $key2 which are # necessary to determine that it is greater than $key1 return $bytes ; } @@ -885,7 +885,7 @@ our (%h, $k, $v) ; unlink "fruit" ; - tie %h, "DB_File", "fruit", O_RDWR|O_CREAT, 0666, $DB_HASH + tie %h, "DB_File", "fruit", O_RDWR|O_CREAT, 0666, $DB_HASH or die "Cannot open file 'fruit': $!\n"; # Add a few key/value pairs to the file @@ -946,7 +946,7 @@ $DB_BTREE->{'compare'} = \&Compare ; unlink "tree" ; - tie %h, "DB_File", "tree", O_RDWR|O_CREAT, 0666, $DB_BTREE + tie %h, "DB_File", "tree", O_RDWR|O_CREAT, 0666, $DB_BTREE or die "Cannot open file 'tree': $!\n" ; # Add a key/value pair to the file @@ -1016,9 +1016,9 @@ compared as equal). -=back +=back -=head2 Handling Duplicate Keys +=head2 Handling Duplicate Keys The BTREE file type optionally allows a single key to be associated with an arbitrary number of values. This option is enabled by setting @@ -1040,7 +1040,7 @@ # Enable duplicate records $DB_BTREE->{'flags'} = R_DUP ; - tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE or die "Cannot open $filename: $!\n"; # Add some key/value pairs to the file @@ -1095,7 +1095,7 @@ # Enable duplicate records $DB_BTREE->{'flags'} = R_DUP ; - $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE or die "Cannot open $filename: $!\n"; # Add some key/value pairs to the file @@ -1127,7 +1127,7 @@ This time we have got all the key/value pairs, including the multiple values associated with the key C. -To make life easier when dealing with duplicate keys, B comes with +To make life easier when dealing with duplicate keys, B comes with a few utility methods. =head2 The get_dup() Method @@ -1166,7 +1166,7 @@ # Enable duplicate records $DB_BTREE->{'flags'} = R_DUP ; - $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE or die "Cannot open $filename: $!\n"; my $cnt = $x->get_dup("Wall") ; @@ -1200,7 +1200,7 @@ $status = $X->find_dup($key, $value) ; This method checks for the existence of a specific key/value pair. If the -pair exists, the cursor is left pointing to the pair and the method +pair exists, the cursor is left pointing to the pair and the method returns 0. Otherwise the method returns a non-zero value. Assuming the database from the previous example: @@ -1216,13 +1216,13 @@ # Enable duplicate records $DB_BTREE->{'flags'} = R_DUP ; - $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE or die "Cannot open $filename: $!\n"; - $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; + $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; print "Larry Wall is $found there\n" ; - $found = ( $x->find_dup("Wall", "Harry") == 0 ? "" : "not") ; + $found = ( $x->find_dup("Wall", "Harry") == 0 ? "" : "not") ; print "Harry Wall is $found there\n" ; undef $x ; @@ -1255,12 +1255,12 @@ # Enable duplicate records $DB_BTREE->{'flags'} = R_DUP ; - $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE or die "Cannot open $filename: $!\n"; $x->del_dup("Wall", "Larry") ; - $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; + $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; print "Larry Wall is $found there\n" ; undef $x ; @@ -1270,7 +1270,7 @@ Larry Wall is not there -=head2 Matching Partial Keys +=head2 Matching Partial Keys The BTREE interface has a feature which allows partial keys to be matched. This functionality is I available when the C method @@ -1314,7 +1314,7 @@ # Add some key/value pairs to the file $h{'mouse'} = 'mickey' ; $h{'Wall'} = 'Larry' ; - $h{'Walls'} = 'Brick' ; + $h{'Walls'} = 'Brick' ; $h{'Smith'} = 'John' ; @@ -1393,8 +1393,8 @@ =head2 A Simple Example -Here is a simple example that uses RECNO (if you are using a version -of Perl earlier than 5.004_57 this example won't work -- see +Here is a simple example that uses RECNO (if you are using a version +of Perl earlier than 5.004_57 this example won't work -- see L for a workaround). use warnings ; @@ -1405,7 +1405,7 @@ unlink $filename ; my @h ; - tie @h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_RECNO + tie @h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_RECNO or die "Cannot open file 'text': $!\n" ; # Add a few key/value pairs to the file @@ -1488,7 +1488,7 @@ =head2 Another Example Here is a more complete example that makes use of some of the methods -described above. It also makes use of the API interface directly (see +described above. It also makes use of the API interface directly (see L). use warnings ; @@ -1501,7 +1501,7 @@ unlink $file ; - $H = tie @h, "DB_File", $file, O_RDWR|O_CREAT, 0666, $DB_RECNO + $H = tie @h, "DB_File", $file, O_RDWR|O_CREAT, 0666, $DB_RECNO or die "Cannot open file $file: $!\n" ; # first create a text file to play with @@ -1516,7 +1516,7 @@ # # The length method is needed here because evaluating a tied # array in a scalar context does not return the number of - # elements in the array. + # elements in the array. print "\nORIGINAL\n" ; foreach $i (0 .. $H->length - 1) { @@ -1552,8 +1552,8 @@ # same again, but use the API functions instead print "\nREVERSE again\n" ; my ($s, $k, $v) = (0, 0, 0) ; - for ($s = $H->seq($k, $v, R_LAST) ; - $s == 0 ; + for ($s = $H->seq($k, $v, R_LAST) ; + $s == 0 ; $s = $H->seq($k, $v, R_PREV)) { print "$k: $v\n" } @@ -1600,7 +1600,7 @@ it is necessary to use either this: - foreach $i (0 .. $H->length - 1) + foreach $i (0 .. $H->length - 1) or this: @@ -1635,10 +1635,10 @@ B If you have saved a copy of the object returned from C, the underlying database file will I be closed until both the tied variable is untied and all copies of the saved object are -destroyed. +destroyed. use DB_File ; - $db = tie %hash, "DB_File", "filename" + $db = tie %hash, "DB_File", "filename" or die "Cannot tie filename: $!" ; ... undef $db ; @@ -1685,7 +1685,7 @@ $X->seq($key, $value, R_FIRST) ; # this line will modify the cursor - $count = scalar keys %x ; + $count = scalar keys %x ; # Get the second key/value pair. # oops, it didn't, it got the last key/value pair! @@ -1697,7 +1697,7 @@ or die "Cannot tie $filename: $!" ; # this line will modify the cursor - $count = scalar keys %x ; + $count = scalar keys %x ; # Get the first key/value pair and set the cursor $X->seq($key, $value, R_FIRST) ; @@ -1788,7 +1788,7 @@ =item 2. -Using the L module. +Using the L module. This module hides the complexity of the API defined below and comes with a number of "canned" filters that cover some of the common use-cases. @@ -1872,7 +1872,7 @@ my $filename = "filt" ; unlink $filename ; - my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_HASH + my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_HASH or die "Cannot open $filename: $!\n" ; # Install DBM Filters @@ -1915,7 +1915,7 @@ unlink $filename ; - my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_HASH + my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_HASH or die "Cannot open $filename: $!\n" ; $db->filter_fetch_key ( sub { $_ = unpack("i", $_) } ) ; @@ -1929,7 +1929,7 @@ the contents of the key, so it wasn't necessary to install any value filters. -=head1 HINTS AND TIPS +=head1 HINTS AND TIPS =head2 Locking: The Trouble with fd @@ -1940,7 +1940,7 @@ flawed (Kudos to David Harris for tracking this down). Use it at your own peril! -The locking technique went like this. +The locking technique went like this. $db = tie(%db, 'DB_File', 'foo.db', O_CREAT|O_RDWR, 0644) || die "dbcreat foo.db $!"; @@ -2031,7 +2031,7 @@ system. However, updates are still serial. Use for databases where reads may be lengthy and consistency problems may occur. -=item B +=item B A B wrapper that has the ability to lock and unlock the database while it is being used. Avoids the tie-before-flock problem by simply @@ -2041,7 +2041,7 @@ updates and/or reads if the application follows the hints in the POD documentation. -=item B +=item B An extremely lightweight B wrapper that simply flocks a lockfile before tie-ing the database and drops the lock after the untie. Allows @@ -2113,7 +2113,7 @@ =head2 The untie() Gotcha If you make use of the Berkeley DB API, it is I strongly -recommended that you read L. +recommended that you read L. Even if you don't currently make use of the API interface, it is still worth reading it. @@ -2215,12 +2215,12 @@ situation. The example below shows what you need if I the key and value are -expected to be in UTF-8. +expected to be in UTF-8. use DB_File; - use DBM_Filter; + use DBM_Filter; - my $db = tie %h, 'DB_File', '/tmp/try.db', O_CREAT|O_RDWR, 0666, $DB_BTREE; + my $db = tie %h, 'DB_File', '/tmp/try.db', O_CREAT|O_RDWR, 0666, $DB_BTREE; $db->Filter_Key_Push('utf8'); $db->Filter_Value_Push('utf8'); @@ -2240,7 +2240,7 @@ =item 1. -Attempting to reopen a database without closing it. +Attempting to reopen a database without closing it. =item 2. @@ -2248,7 +2248,7 @@ =back -=head2 What does "Bareword 'DB_File' not allowed" mean? +=head2 What does "Bareword 'DB_File' not allowed" mean? You will encounter this particular error message when you have the C pragma (or the full strict pragma) in your script. @@ -2262,7 +2262,7 @@ Running it produces the error in question: - Bareword "DB_File" not allowed while "strict subs" in use + Bareword "DB_File" not allowed while "strict subs" in use To get around the error, place the word C in either single or double quotes, like this: @@ -2300,7 +2300,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -2336,7 +2336,7 @@ Here are a few words taken from the Berkeley DB FAQ (at L) regarding the license: - Do I have to license DB to use it in Perl scripts? + Do I have to license DB to use it in Perl scripts? No. The Berkeley DB license requires that software that uses Berkeley DB be freely redistributable. In the case of Perl, that diff -Nru perl-5.32.1/cpan/DB_File/DB_File.xs perl-5.34.0/cpan/DB_File/DB_File.xs --- perl-5.32.1/cpan/DB_File/DB_File.xs 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/DB_File/DB_File.xs 2020-10-04 22:17:12.000000000 +0000 @@ -1527,12 +1527,12 @@ status = (RETVAL->dbp->open)(RETVAL->dbp, name, NULL, RETVAL->type, Flags, mode) ; #endif - Trace(("open returned %d %s\n", status, db_strerror(status))) ; + Trace(("open returned %d %s\n", status, db_strerror(status))) ; if (status == 0) { status = (RETVAL->dbp->cursor)(RETVAL->dbp, NULL, &RETVAL->cursor, 0) ; - Trace(("cursor returned %d %s\n", status, db_strerror(status))) ; + Trace(("cursor returned %d %s\n", status, db_strerror(status))) ; } if (status) @@ -2066,4 +2066,3 @@ SV * RETVAL = &PL_sv_undef ; CODE: DBM_setFilter(db->filter_store_value, code) ; - diff -Nru perl-5.32.1/cpan/DB_File/dbinfo perl-5.34.0/cpan/DB_File/dbinfo --- perl-5.32.1/cpan/DB_File/dbinfo 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/DB_File/dbinfo 2020-10-04 22:17:12.000000000 +0000 @@ -1,10 +1,10 @@ #!/usr/bin/perl -# Name: dbinfo -- identify berkeley DB version used to create +# Name: dbinfo -- identify berkeley DB version used to create # a database file # # Author: Paul Marquess -# Version: 1.07 +# Version: 1.07 # Date 2nd April 2011 # # Copyright (c) 1998-2020 Paul Marquess. All rights reserved. diff -Nru perl-5.32.1/cpan/DB_File/hints/bitrig.pl perl-5.34.0/cpan/DB_File/hints/bitrig.pl --- perl-5.32.1/cpan/DB_File/hints/bitrig.pl 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/DB_File/hints/bitrig.pl 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,2 @@ +no strict 'vars'; $self->{LIBS} = ['']; diff -Nru perl-5.32.1/cpan/DB_File/hints/dynixptx.pl perl-5.34.0/cpan/DB_File/hints/dynixptx.pl --- perl-5.32.1/cpan/DB_File/hints/dynixptx.pl 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/DB_File/hints/dynixptx.pl 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,3 @@ # Need to add an extra '-lc' to the end to work around a DYNIX/ptx bug - +no strict 'vars'; $self->{LIBS} = ['-lm -lc']; diff -Nru perl-5.32.1/cpan/DB_File/hints/minix.pl perl-5.34.0/cpan/DB_File/hints/minix.pl --- perl-5.32.1/cpan/DB_File/hints/minix.pl 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/DB_File/hints/minix.pl 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,2 @@ +no strict 'vars'; $self->{LIBS} = ['']; diff -Nru perl-5.32.1/cpan/DB_File/hints/netbsd.pl perl-5.34.0/cpan/DB_File/hints/netbsd.pl --- perl-5.32.1/cpan/DB_File/hints/netbsd.pl 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/DB_File/hints/netbsd.pl 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,2 @@ +no strict 'vars'; $self->{LIBS} = ['']; diff -Nru perl-5.32.1/cpan/DB_File/hints/openbsd.pl perl-5.34.0/cpan/DB_File/hints/openbsd.pl --- perl-5.32.1/cpan/DB_File/hints/openbsd.pl 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/DB_File/hints/openbsd.pl 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,2 @@ +no strict 'vars'; $self->{LIBS} = ['']; diff -Nru perl-5.32.1/cpan/DB_File/hints/sco.pl perl-5.34.0/cpan/DB_File/hints/sco.pl --- perl-5.32.1/cpan/DB_File/hints/sco.pl 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/DB_File/hints/sco.pl 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,3 @@ # osr5 needs to explicitly link against libc to pull in some static symbols +no strict 'vars'; $self->{LIBS} = ['-ldb -lc'] if $Config{'osvers'} =~ '3\.2v5\.0\..' ; diff -Nru perl-5.32.1/cpan/DB_File/Makefile.PL perl-5.34.0/cpan/DB_File/Makefile.PL --- perl-5.32.1/cpan/DB_File/Makefile.PL 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/DB_File/Makefile.PL 2020-10-04 22:17:12.000000000 +0000 @@ -4,8 +4,8 @@ use ExtUtils::MakeMaker 5.16 ; use Config ; -die "DB_File needs Perl 5.8.3 or better. This is $]\n" - if $] < 5.008003; +die "DB_File needs Perl 5.8.3 or better. This is $]\n" + if $] < 5.008003; my $VER_INFO ; my $LIB_DIR ; @@ -41,7 +41,7 @@ my $WALL = '' ; #$WALL = ' -Wall '; -# Only want ppport.h t to be used by DB_File.xs when not +# Only want ppport.h t to be used by DB_File.xs when not # building this module with the perl source distribution. my $CORE = $ENV{PERL_CORE} ? '' : '-D_NOT_CORE'; @@ -54,8 +54,8 @@ XSPROTOARG => '-noprototypes', DEFINE => "$CORE $OS2 $VER_INFO $COMPAT185 $WALL", OBJECT => 'version$(OBJ_EXT) DB_File$(OBJ_EXT)', - ((ExtUtils::MakeMaker->VERSION() gt '6.30') - ? ('LICENSE' => 'perl') + ((ExtUtils::MakeMaker->VERSION() gt '6.30') + ? ('LICENSE' => 'perl') : () ), ( @@ -64,9 +64,9 @@ AUTHOR => 'Paul Marquess ') : () ), - - ($] < 5.008 || $] > 5.011) - ? (INSTALLDIRS => 'site') + + ($] < 5.008 || $] > 5.011) + ? (INSTALLDIRS => 'site') : (INSTALLDIRS => 'perl'), #OPTIMIZE => '-g', @@ -77,13 +77,13 @@ 'dist' => { COMPRESS => 'gzip', SUFFIX => 'gz', DIST_DEFAULT => 'MyDoubleCheck tardist'}, - ( eval { ExtUtils::MakeMaker->VERSION(6.46) } + ( eval { ExtUtils::MakeMaker->VERSION(6.46) } ? ( META_MERGE => { - + "meta-spec" => { version => 2 }, - + resources => { - + bugtracker => { web => 'https://github.com/pmqs/DB_File/issues' }, @@ -94,10 +94,10 @@ type => 'git', url => 'git://github.com/pmqs/DB_File.git', web => 'https://github.com/pmqs/DB_File', - }, + }, }, - } - ) + } + ) : () ), @@ -159,16 +159,16 @@ die "The following names are missing from \@EXPORT in DB_File.pm\n" . "\t$missing\n" ; } - + ExtUtils::Constant::WriteConstants( NAME => 'DB_File', NAMES => \@names, C_FILE => 'constants.h', XS_FILE => 'constants.xs', - + ); -} +} else { use File::Copy; copy ('fallback.h', 'constants.h') @@ -186,10 +186,10 @@ my $path = shift ; return undef - if $path =~ /(~|\.bak)$/ || + if $path =~ /(~|\.bak)$/ || $path =~ /^\..*\.swp$/ ; - return $path; + return $path; } @@ -202,27 +202,27 @@ grep "^#DBNAME.*" config.in) >/dev/null || \ (echo config.in needs fixing ; exit 1) @echo config.in is ok - @echo + @echo @echo Checking DB_File.xs is ok for a release. @(perl -ne ' exit 1 if /^\s*#\s*define\s+TRACE/ ; ' DB_File.xs || \ (echo DB_File.xs needs fixing ; exit 1)) @echo DB_File.xs is ok - @echo + @echo @echo Checking for $$^W in files: $(my_files) @perl -ne ' \ exit 1 if /^\s*local\s*\(\s*\$$\^W\s*\)/;' $(my_files) || \ (echo found unexpected $$^W ; exit 1) @echo No $$^W found. - @echo + @echo @echo Checking for 'use vars' in files: $(my_files) @perl -ne ' \ exit 0 if /^__(DATA|END)__/; \ exit 1 if /^\s*use\s+vars/;' $(my_files) || \ (echo found unexpected "use vars"; exit 1) @echo No 'use vars' found. - @echo + @echo @echo All files are OK for a release. - @echo + @echo EOM @@ -240,7 +240,7 @@ print "Parsing $CONFIG...\n" ; - # DBNAME & COMPAT185 are optional, so pretend they have + # DBNAME & COMPAT185 are optional, so pretend they have # been parsed. delete $Parsed{'DBNAME'} ; delete $Parsed{'COMPAT185'} ; @@ -270,16 +270,16 @@ # check parsed values my @missing = () ; - die "The following keys are missing from $CONFIG file: [@missing]\n" + die "The following keys are missing from $CONFIG file: [@missing]\n" if @missing = keys %Parsed ; $INC_DIR = $ENV{'DB_FILE_INCLUDE'} || $Info{'INCLUDE'} ; $LIB_DIR = $ENV{'DB_FILE_LIB'} || $Info{'LIB'} ; $DB_NAME = $ENV{'DB_FILE_NAME'} || $Info{'DBNAME'} ; - $COMPAT185 = "-DCOMPAT185 -DDB_LIBRARY_COMPATIBILITY_API" - if (defined $ENV{'DB_FILE_COMPAT185'} && + $COMPAT185 = "-DCOMPAT185 -DDB_LIBRARY_COMPATIBILITY_API" + if (defined $ENV{'DB_FILE_COMPAT185'} && $ENV{'DB_FILE_COMPAT185'} =~ /^\s*(on|true|1)\s*$/i) || - $Info{'COMPAT185'} =~ /^\s*(on|true|1)\s*$/i ; + $Info{'COMPAT185'} =~ /^\s*(on|true|1)\s*$/i ; my $PREFIX = $Info{'PREFIX'} ; my $HASH = $Info{'HASH'} ; diff -Nru perl-5.32.1/cpan/DB_File/t/db-btree.t perl-5.34.0/cpan/DB_File/t/db-btree.t --- perl-5.32.1/cpan/DB_File/t/db-btree.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/DB_File/t/db-btree.t 2020-10-04 22:17:12.000000000 +0000 @@ -3,7 +3,7 @@ use warnings; use strict; use Config; - + BEGIN { if(-d "lib" && -f "TEST") { if ($Config{'extensions'} !~ /\bDB_File\b/ ) { @@ -29,7 +29,7 @@ } } -use DB_File; +use DB_File; use Fcntl; use File::Temp qw(tempdir) ; @@ -41,7 +41,7 @@ { my $no = shift ; my $result = shift ; - + print "not " unless $result ; print "ok $no\n" ; } @@ -84,7 +84,7 @@ } sub docat -{ +{ my $file = shift; local $/ = undef ; open(CAT,$file) || die "Cannot open $file: $!"; @@ -92,20 +92,20 @@ close(CAT); $result = normalise($result) ; return $result ; -} +} sub docat_del -{ +{ my $file = shift; my $result = docat($file); unlink $file ; return $result ; -} +} sub normalise { my $data = shift ; - $data =~ s#\r\n#\n#g + $data =~ s#\r\n#\n#g if $^O eq 'cygwin' ; return $data ; @@ -123,7 +123,7 @@ my $db185mode = ($DB_File::db_version == 1 && ! $DB_File::db_185_compat) ; -my $null_keys_allowed = ($DB_File::db_ver < 2.004010 +my $null_keys_allowed = ($DB_File::db_ver < 2.004010 || $DB_File::db_ver >= 3.1 ); my $TEMPDIR = tempdir( CLEANUP => 1 ); @@ -136,7 +136,7 @@ # Check the interface to BTREEINFO -my $dbh = new DB_File::BTREEINFO ; +my $dbh = DB_File::BTREEINFO->new(); ok(1, ! defined $dbh->{flags}) ; ok(2, ! defined $dbh->{cachesize}) ; ok(3, ! defined $dbh->{psize}) ; @@ -311,11 +311,11 @@ # Check R_NOOVERWRITE flag will make put fail when attempting to overwrite # an existing record. - + my $status = $X->put( 'x', 'newvalue', R_NOOVERWRITE) ; ok(34, $status == 1 ); - -# check that the value of the key 'x' has not been changed by the + +# check that the value of the key 'x' has not been changed by the # previous test ok(35, $h{'x'} eq 'X' ); @@ -414,7 +414,7 @@ ok(63, 1) ; # hard-wire to always pass. the previous test ($status == 1) # only worked because of a bug in 1.85/6 -# use seq to walk forwards through a file +# use seq to walk forwards through a file $status = $X->seq($key, $value, R_FIRST) ; ok(64, $status == 0 ); @@ -429,7 +429,7 @@ ok(65, $status == 1 ); ok(66, $ok == 1 ); -# use seq to walk backwards through a file +# use seq to walk backwards through a file $status = $X->seq($key, $value, R_LAST) ; ok(67, $status == 0 ); $previous = $key ; @@ -480,7 +480,7 @@ untie %h ; # Duplicate keys -my $bt = new DB_File::BTREEINFO ; +my $bt = DB_File::BTREEINFO->new(); $bt->{flags} = R_DUP ; my ($YY, %hh); ok(74, $YY = tie(%hh, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $bt )) ; @@ -519,7 +519,7 @@ ok(82, keys %smith == 1 && $smith{'John'}) ; my %wall = $YY->get_dup('Wall', 1) ; -ok(83, keys %wall == 3 && $wall{'Larry'} == 1 && $wall{'Stone'} == 1 +ok(83, keys %wall == 3 && $wall{'Larry'} == 1 && $wall{'Stone'} == 1 && $wall{'Brick'} == 2); undef $YY ; @@ -531,53 +531,53 @@ my $Dfile1 = "btree1" ; my $Dfile2 = "btree2" ; my $Dfile3 = "btree3" ; - -my $dbh1 = new DB_File::BTREEINFO ; -$dbh1->{compare} = sub { + +my $dbh1 = DB_File::BTREEINFO->new(); +$dbh1->{compare} = sub { no warnings 'numeric' ; - $_[0] <=> $_[1] } ; - -my $dbh2 = new DB_File::BTREEINFO ; + $_[0] <=> $_[1] } ; + +my $dbh2 = DB_File::BTREEINFO->new(); $dbh2->{compare} = sub { $_[0] cmp $_[1] } ; - -my $dbh3 = new DB_File::BTREEINFO ; + +my $dbh3 = DB_File::BTREEINFO->new(); $dbh3->{compare} = sub { length $_[0] <=> length $_[1] } ; - - + + my (%g, %k); tie(%h, 'DB_File',$Dfile1, O_RDWR|O_CREAT, 0640, $dbh1 ) or die $!; tie(%g, 'DB_File',$Dfile2, O_RDWR|O_CREAT, 0640, $dbh2 ) or die $!; tie(%k, 'DB_File',$Dfile3, O_RDWR|O_CREAT, 0640, $dbh3 ) or die $!; - + my @Keys = qw( 0123 12 -1234 9 987654321 def ) ; my (@srt_1, @srt_2, @srt_3); -{ +{ no warnings 'numeric' ; - @srt_1 = sort { $a <=> $b } @Keys ; + @srt_1 = sort { $a <=> $b } @Keys ; } @srt_2 = sort { $a cmp $b } @Keys ; @srt_3 = sort { length $a <=> length $b } @Keys ; - + foreach (@Keys) { $h{$_} = 1 ; $g{$_} = 1 ; $k{$_} = 1 ; } - + sub ArrayCompare { my($a, $b) = @_ ; - + return 0 if @$a != @$b ; - + foreach (0 .. @$a - 1) { return 0 unless $$a[$_] eq $$b[$_]; } - + 1 ; } - + ok(84, ArrayCompare (\@srt_1, [keys %h]) ); ok(85, ArrayCompare (\@srt_2, [keys %g]) ); ok(86, ArrayCompare (\@srt_3, [keys %k]) ); @@ -646,27 +646,27 @@ @ISA=qw(DB_File); @EXPORT = @DB_File::EXPORT ; - sub STORE { + sub STORE { my $self = shift ; my $key = shift ; my $value = shift ; $self->SUPER::STORE($key, $value * 2) ; } - sub FETCH { + sub FETCH { my $self = shift ; my $key = shift ; $self->SUPER::FETCH($key) - 1 ; } - sub put { + sub put { my $self = shift ; my $key = shift ; my $value = shift ; $self->SUPER::put($key, $value * 3) ; } - sub get { + sub get { my $self = shift ; $self->SUPER::get($_[0], $_[1]) ; $_[1] -= 2 ; @@ -685,7 +685,7 @@ close FILE ; - BEGIN { push @INC, '.'; } + BEGIN { push @INC, '.'; } eval 'use SubDB ; '; main::ok(91, $@ eq "") ; my %h ; @@ -731,11 +731,11 @@ { my($fk, $sk, $fv, $sv) = @_ ; return - $fetch_key eq $fk && $store_key eq $sk && + $fetch_key eq $fk && $store_key eq $sk && $fetch_value eq $fv && $store_value eq $sv && $_ eq 'original' ; } - + ok(101, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); $db->filter_fetch_key (sub { $fetch_key = $_ }) ; @@ -760,15 +760,15 @@ ok(106, checkOutput( "fred", "", "", "")) ; # replace the filters, but remember the previous set - my ($old_fk) = $db->filter_fetch_key + my ($old_fk) = $db->filter_fetch_key (sub { $_ = uc $_ ; $fetch_key = $_ }) ; - my ($old_sk) = $db->filter_store_key + my ($old_sk) = $db->filter_store_key (sub { $_ = lc $_ ; $store_key = $_ }) ; - my ($old_fv) = $db->filter_fetch_value + my ($old_fv) = $db->filter_fetch_value (sub { $_ = "[$_]"; $fetch_value = $_ }) ; - my ($old_sv) = $db->filter_store_value + my ($old_sv) = $db->filter_store_value (sub { s/o/x/g; $store_value = $_ }) ; - + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; $h{"Fred"} = "Joe" ; # fk sk fv sv @@ -825,7 +825,7 @@ unlink $Dfile; } -{ +{ # DBM Filter with a closure use warnings ; @@ -843,8 +843,8 @@ my $count = 0 ; my @kept = () ; - return sub { ++$count ; - push @kept, $_ ; + return sub { ++$count ; + push @kept, $_ ; $result{$name} = "$name - $count: [@kept]" ; } } @@ -887,7 +887,7 @@ undef $db ; untie %h; unlink $Dfile; -} +} { # DBM Filter recursion detection @@ -902,7 +902,7 @@ eval '$h{1} = 1234' ; ok(146, $@ =~ /^recursion detected in filter_store_key at/ ); - + undef $db ; untie %h; unlink $Dfile; @@ -915,7 +915,7 @@ my $file = "xyzt" ; { - my $redirect = new Redirect $file ; + my $redirect = Redirect->new( $file ); # BTREE example 1 ### @@ -936,7 +936,7 @@ $DB_BTREE->{'compare'} = \&Compare ; unlink "tree" ; - tie %h, "DB_File", "tree", O_RDWR|O_CREAT, 0640, $DB_BTREE + tie %h, "DB_File", "tree", O_RDWR|O_CREAT, 0640, $DB_BTREE or die "Cannot open file 'tree': $!\n" ; # Add a key/value pair to the file @@ -957,7 +957,7 @@ untie %h ; unlink "tree" ; - } + } delete $DB_BTREE->{'compare'} ; @@ -966,9 +966,9 @@ Smith Wall EOM - + { - my $redirect = new Redirect $file ; + my $redirect = Redirect->new( $file ); # BTREE example 2 ### @@ -981,13 +981,13 @@ $filename = "tree" ; unlink $filename ; - + # Enable duplicate records $DB_BTREE->{'flags'} = R_DUP ; - - tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + + tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE or die "Cannot open $filename: $!\n"; - + # Add some key/value pairs to the file $h{'Wall'} = 'Larry' ; $h{'Wall'} = 'Brick' ; # Note the duplicate key @@ -1003,7 +1003,7 @@ untie %h ; unlink $filename ; - } + } ok(148, docat_del($file) eq ($db185mode ? <<'EOM' : <<'EOM') ) ; Smith -> John @@ -1020,7 +1020,7 @@ EOM { - my $redirect = new Redirect $file ; + my $redirect = Redirect->new( $file ); # BTREE example 3 ### @@ -1028,25 +1028,25 @@ use warnings FATAL => qw(all) ; use strict ; use DB_File ; - + my ($filename, $x, %h, $status, $key, $value); $filename = "tree" ; unlink $filename ; - + # Enable duplicate records $DB_BTREE->{'flags'} = R_DUP ; - - $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE or die "Cannot open $filename: $!\n"; - + # Add some key/value pairs to the file $h{'Wall'} = 'Larry' ; $h{'Wall'} = 'Brick' ; # Note the duplicate key $h{'Wall'} = 'Brick' ; # Note the duplicate key and value $h{'Smith'} = 'John' ; $h{'mouse'} = 'mickey' ; - + # iterate through the btree using seq # and print each key/value pair. $key = $value = 0 ; @@ -1054,8 +1054,8 @@ $status == 0 ; $status = $x->seq($key, $value, R_NEXT) ) { print "$key -> $value\n" } - - + + undef $x ; untie %h ; } @@ -1076,7 +1076,7 @@ { - my $redirect = new Redirect $file ; + my $redirect = Redirect->new( $file ); # BTREE example 4 ### @@ -1084,17 +1084,17 @@ use warnings FATAL => qw(all) ; use strict ; use DB_File ; - + my ($filename, $x, %h); $filename = "tree" ; - + # Enable duplicate records $DB_BTREE->{'flags'} = R_DUP ; - - $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE or die "Cannot open $filename: $!\n"; - + my $cnt = $x->get_dup("Wall") ; print "Wall occurred $cnt times\n" ; @@ -1107,10 +1107,10 @@ @list = $x->get_dup("Smith") ; print "Smith => [@list]\n" ; - + @list = $x->get_dup("Dog") ; - print "Dog => [@list]\n" ; - + print "Dog => [@list]\n" ; + undef $x ; untie %h ; } @@ -1125,7 +1125,7 @@ EOM { - my $redirect = new Redirect $file ; + my $redirect = Redirect->new( $file ); # BTREE example 5 ### @@ -1133,23 +1133,23 @@ use warnings FATAL => qw(all) ; use strict ; use DB_File ; - + my ($filename, $x, %h, $found); $filename = "tree" ; - + # Enable duplicate records $DB_BTREE->{'flags'} = R_DUP ; - - $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE or die "Cannot open $filename: $!\n"; - $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; + $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; print "Larry Wall is $found there\n" ; - - $found = ( $x->find_dup("Wall", "Harry") == 0 ? "" : "not") ; + + $found = ( $x->find_dup("Wall", "Harry") == 0 ? "" : "not") ; print "Harry Wall is $found there\n" ; - + undef $x ; untie %h ; } @@ -1160,7 +1160,7 @@ EOM { - my $redirect = new Redirect $file ; + my $redirect = Redirect->new( $file ); # BTREE example 6 ### @@ -1168,22 +1168,22 @@ use warnings FATAL => qw(all) ; use strict ; use DB_File ; - + my ($filename, $x, %h, $found); $filename = "tree" ; - + # Enable duplicate records $DB_BTREE->{'flags'} = R_DUP ; - - $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE or die "Cannot open $filename: $!\n"; $x->del_dup("Wall", "Larry") ; - $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; + $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; print "Larry Wall is $found there\n" ; - + undef $x ; untie %h ; @@ -1195,7 +1195,7 @@ EOM { - my $redirect = new Redirect $file ; + my $redirect = Redirect->new( $file ); # BTREE example 7 ### @@ -1221,22 +1221,22 @@ $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE or die "Cannot open $filename: $!\n"; - + # Add some key/value pairs to the file $h{'mouse'} = 'mickey' ; $h{'Wall'} = 'Larry' ; - $h{'Walls'} = 'Brick' ; + $h{'Walls'} = 'Brick' ; $h{'Smith'} = 'John' ; - + $key = $value = 0 ; print "IN ORDER\n" ; for ($st = $x->seq($key, $value, R_FIRST) ; $st == 0 ; $st = $x->seq($key, $value, R_NEXT) ) - + { print "$key -> $value\n" } - + print "\nPARTIAL MATCH\n" ; match "Wa" ; @@ -1269,7 +1269,7 @@ # Bug ID 20001013.009 # # test that $hash{KEY} = undef doesn't produce the warning - # Use of uninitialized value in null operation + # Use of uninitialized value in null operation use warnings ; use strict ; use DB_File ; @@ -1278,7 +1278,7 @@ my %h ; my $a = ""; local $SIG{__WARN__} = sub {$a = $_[0]} ; - + tie %h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_BTREE or die "Can't open file: $!\n" ; $h{ABC} = undef; @@ -1298,7 +1298,7 @@ my %h ; my $a = ""; local $SIG{__WARN__} = sub {$a = $_[0]} ; - + tie %h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_BTREE or die "Can't open file: $!\n" ; %h = (); ; @@ -1351,7 +1351,7 @@ { # now an error to pass 'compare' a non-code reference - my $dbh = new DB_File::BTREEINFO ; + my $dbh = DB_File::BTREEINFO->new(); eval { $dbh->{compare} = 2 }; ok(162, $@ =~ /^Key 'compare' not associated with a code reference at/); @@ -1366,10 +1366,10 @@ # # recursion detection in btree # my %hash ; # unlink $Dfile; -# my $dbh = new DB_File::BTREEINFO ; +# my $dbh = DB_File::BTREEINFO->new(); # $dbh->{compare} = sub { $hash{3} = 4 ; length $_[0] } ; -# -# +# +# # my (%h); # ok(164, tie(%hash, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ); # @@ -1394,14 +1394,14 @@ my $h1_count = 0; my $h2_count = 0; unlink $Dfile, $Dfile2; - my $dbh1 = new DB_File::BTREEINFO ; - $dbh1->{compare} = sub { ++ $h1_count ; $_[0] cmp $_[1] } ; + my $dbh1 = DB_File::BTREEINFO->new(); + $dbh1->{compare} = sub { ++ $h1_count ; $_[0] cmp $_[1] } ; + + my $dbh2 = DB_File::BTREEINFO->new(); + $dbh2->{compare} = sub { ;++ $h2_count ; $_[0] cmp $_[1] } ; + + - my $dbh2 = new DB_File::BTREEINFO ; - $dbh2->{compare} = sub { ;++ $h2_count ; $_[0] cmp $_[1] } ; - - - my (%h); ok(166, tie(%hash1, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $dbh1 ) ); ok(167, tie(%hash2, 'DB_File',$Dfile2, O_RDWR|O_CREAT, 0640, $dbh2 ) ); @@ -1457,7 +1457,7 @@ ok(175, $h{"fred"} eq "joe"); ok(176, $db->FIRSTKEY() eq "fred") ; - + eval { my @r= grep { $h{$_} } (1, 2, 3) }; ok (177, ! $@); @@ -1518,7 +1518,7 @@ # Regression Test for bug 30237 # Check that substr can be used in the key to db_put # and that db_put does not trigger the warning - # + # # Use of uninitialized value in subroutine entry @@ -1543,7 +1543,7 @@ $db->put(substr($key,0), $value) ; } - ok 189, $warned eq '' + ok 189, $warned eq '' or print "# Caught warning [$warned]\n" ; # db-put with substr of value @@ -1556,7 +1556,7 @@ $db->put($key, substr($value,0)) ; } - ok 190, $warned eq '' + ok 190, $warned eq '' or print "# Caught warning [$warned]\n" ; # via the tied hash is not a problem, but check anyway @@ -1570,7 +1570,7 @@ $h{substr($key,0)} = $value ; } - ok 191, $warned eq '' + ok 191, $warned eq '' or print "# Caught warning [$warned]\n" ; # via the tied hash is not a problem, but check anyway @@ -1584,7 +1584,7 @@ $h{$key} = substr($value,0) ; } - ok 192, $warned eq '' + ok 192, $warned eq '' or print "# Caught warning [$warned]\n" ; my %bad = () ; @@ -1594,7 +1594,7 @@ $status = $db->seq($key, $value, R_NEXT ) ) { #print "# key [$key] value [$value]\n" ; - if (defined $remember{$key} && defined $value && + if (defined $remember{$key} && defined $value && $remember{$key} eq $value) { delete $remember{$key} ; } @@ -1602,7 +1602,7 @@ $bad{$key} = $value ; } } - + ok 193, keys %bad == 0 ; ok 194, keys %remember == 0 ; @@ -1610,11 +1610,11 @@ print "# bad -- $key $value\n" while ($key, $value) = each %bad; # Make sure this fix does not break code to handle an undef key - # Berkeley DB undef key is bron between versions 2.3.16 and + # Berkeley DB undef key is bron between versions 2.3.16 and my $value = 'fred'; $warned = ''; $db->put(undef, $value) ; - ok 195, $warned eq '' + ok 195, $warned eq '' or print "# Caught warning [$warned]\n" ; $warned = ''; @@ -1623,7 +1623,7 @@ $value = '' ; $db->get(undef, $value) ; ok 196, $no_NULL || $value eq 'fred' or print "# got [$value]\n" ; - ok 197, $warned eq '' + ok 197, $warned eq '' or print "# Caught warning [$warned]\n" ; $warned = ''; @@ -1658,7 +1658,7 @@ # ok(204, $db->get($k, $v, R_CURSOR)) ; # # ok(205, keys %h == 1) ; -# +# # undef $db ; # untie %h; # unlink $Dfile; diff -Nru perl-5.32.1/cpan/DB_File/t/db-hash.t perl-5.34.0/cpan/DB_File/t/db-hash.t --- perl-5.32.1/cpan/DB_File/t/db-hash.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/DB_File/t/db-hash.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,10 +1,10 @@ -#!./perl +#!./perl use warnings; use strict; use Config; use File::Temp qw(tempdir) ; - + BEGIN { if(-d "lib" && -f "TEST") { if ($Config{'extensions'} !~ /\bDB_File\b/ ) { @@ -14,7 +14,7 @@ } } -use DB_File; +use DB_File; use Fcntl; print "1..166\n"; @@ -25,7 +25,7 @@ { my $no = shift ; my $result = shift ; - + print "not " unless $result ; print "ok $no\n" ; @@ -55,7 +55,7 @@ } sub docat_del -{ +{ my $file = shift; local $/ = undef; open(CAT,$file) || die "Cannot open $file: $!"; @@ -64,12 +64,12 @@ $result = normalise($result) ; unlink $file ; return $result; -} +} sub normalise { my $data = shift ; - $data =~ s#\r\n#\n#g + $data =~ s#\r\n#\n#g if $^O eq 'cygwin' ; return $data ; } @@ -88,7 +88,7 @@ my $Dfile = "dbhash.tmp"; my $Dfile2 = "dbhash2.tmp"; -my $null_keys_allowed = ($DB_File::db_ver < 2.004010 +my $null_keys_allowed = ($DB_File::db_ver < 2.004010 || $DB_File::db_ver >= 3.1 ); unlink $Dfile; @@ -97,7 +97,7 @@ # Check the interface to HASHINFO -my $dbh = new DB_File::HASHINFO ; +my $dbh = DB_File::HASHINFO->new(); ok(1, ! defined $dbh->{bsize}) ; ok(2, ! defined $dbh->{ffactor}) ; @@ -268,11 +268,11 @@ # Check NOOVERWRITE will make put fail when attempting to overwrite # an existing record. - + my $status = $X->put( 'x', 'newvalue', R_NOOVERWRITE) ; ok(31, $status == 1 ); - -# check that the value of the key 'x' has not been changed by the + +# check that the value of the key 'x' has not been changed by the # previous test ok(32, $h{'x'} eq 'X' ); @@ -383,7 +383,7 @@ # check ability to override the default hashing my %x ; my $filename = "xyz" ; - my $hi = new DB_File::HASHINFO ; + my $hi = DB_File::HASHINFO->new(); $::count = 0 ; $hi->{hash} = sub { ++$::count ; length $_[0] } ; ok(49, tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0640, $hi ) ; @@ -426,27 +426,27 @@ @ISA=qw(DB_File); @EXPORT = @DB_File::EXPORT ; - sub STORE { + sub STORE { my $self = shift ; my $key = shift ; my $value = shift ; $self->SUPER::STORE($key, $value * 2) ; } - sub FETCH { + sub FETCH { my $self = shift ; my $key = shift ; $self->SUPER::FETCH($key) - 1 ; } - sub put { + sub put { my $self = shift ; my $key = shift ; my $value = shift ; $self->SUPER::put($key, $value * 3) ; } - sub get { + sub get { my $self = shift ; $self->SUPER::get($_[0], $_[1]) ; $_[1] -= 2 ; @@ -465,7 +465,7 @@ close FILE ; - BEGIN { push @INC, '.'; } + BEGIN { push @INC, '.'; } eval 'use SubDB ; '; main::ok(53, $@ eq "") ; my %h ; @@ -512,23 +512,23 @@ no warnings 'uninitialized'; my($fk, $sk, $fv, $sv) = @_ ; - print "# Fetch Key : expected '$fk' got '$fetch_key'\n" + print "# Fetch Key : expected '$fk' got '$fetch_key'\n" if $fetch_key ne $fk ; - print "# Fetch Value : expected '$fv' got '$fetch_value'\n" + print "# Fetch Value : expected '$fv' got '$fetch_value'\n" if $fetch_value ne $fv ; - print "# Store Key : expected '$sk' got '$store_key'\n" + print "# Store Key : expected '$sk' got '$store_key'\n" if $store_key ne $sk ; - print "# Store Value : expected '$sv' got '$store_value'\n" + print "# Store Value : expected '$sv' got '$store_value'\n" if $store_value ne $sv ; - print "# \$_ : expected 'original' got '$_'\n" + print "# \$_ : expected 'original' got '$_'\n" if $_ ne 'original' ; return - $fetch_key eq $fk && $store_key eq $sk && + $fetch_key eq $fk && $store_key eq $sk && $fetch_value eq $fv && $store_value eq $sv && $_ eq 'original' ; } - + ok(63, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); $db->filter_fetch_key (sub { $fetch_key = $_ }) ; @@ -557,15 +557,15 @@ ok(70, checkOutput( "fred", "fred", "joe", "")) ; # replace the filters, but remember the previous set - my ($old_fk) = $db->filter_fetch_key + my ($old_fk) = $db->filter_fetch_key (sub { $_ = uc $_ ; $fetch_key = $_ }) ; - my ($old_sk) = $db->filter_store_key + my ($old_sk) = $db->filter_store_key (sub { $_ = lc $_ ; $store_key = $_ }) ; - my ($old_fv) = $db->filter_fetch_value + my ($old_fv) = $db->filter_fetch_value (sub { $_ = "[$_]"; $fetch_value = $_ }) ; - my ($old_sv) = $db->filter_store_value + my ($old_sv) = $db->filter_store_value (sub { s/o/x/g; $store_value = $_ }) ; - + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; $h{"Fred"} = "Joe" ; # fk sk fv sv @@ -579,7 +579,7 @@ ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; $k = 'Fred'; $v =''; ok(74, ! $db->seq($k, $v, R_FIRST) ) ; - ok(75, $k eq "FRED") or + ok(75, $k eq "FRED") or print "# k [$k]\n" ; ok(76, $v eq "[Jxe]") ; # fk sk fv sv @@ -634,7 +634,7 @@ unlink $Dfile; } -{ +{ # DBM Filter with a closure use warnings ; @@ -652,8 +652,8 @@ my $count = 0 ; my @kept = () ; - return sub { ++$count ; - push @kept, $_ ; + return sub { ++$count ; + push @kept, $_ ; $result{$name} = "$name - $count: [@kept]" ; } } @@ -696,7 +696,7 @@ undef $db ; untie %h; unlink $Dfile; -} +} { # DBM Filter recursion detection @@ -711,7 +711,7 @@ eval '$h{1} = 1234' ; ok(116, $@ =~ /^recursion detected in filter_store_key at/ ); - + undef $db ; untie %h; unlink $Dfile; @@ -723,7 +723,7 @@ my $file = "xyzt" ; { - my $redirect = new Redirect $file ; + my $redirect = Redirect->new( $file ); use warnings FATAL => qw(all); use strict ; @@ -731,7 +731,7 @@ our (%h, $k, $v); unlink "fruit" ; - tie %h, "DB_File", "fruit", O_RDWR|O_CREAT, 0640, $DB_HASH + tie %h, "DB_File", "fruit", O_RDWR|O_CREAT, 0640, $DB_HASH or die "Cannot open file 'fruit': $!\n"; # Add a few key/value pairs to the file @@ -753,7 +753,7 @@ untie %h ; unlink "fruit" ; - } + } ok(117, docat_del($file) eq <<'EOM') ; Banana Exists @@ -762,14 +762,14 @@ tomato -> red banana -> yellow EOM - + } { # Bug ID 20001013.009 # # test that $hash{KEY} = undef doesn't produce the warning - # Use of uninitialized value in null operation + # Use of uninitialized value in null operation use warnings ; use strict ; use DB_File ; @@ -778,7 +778,7 @@ my %h ; my $a = ""; local $SIG{__WARN__} = sub {$a = $_[0]} ; - + tie %h, 'DB_File', $Dfile or die "Can't open file: $!\n" ; $h{ABC} = undef; ok(118, $a eq "") ; @@ -797,7 +797,7 @@ my %h ; my $a = ""; local $SIG{__WARN__} = sub {$a = $_[0]} ; - + tie %h, 'DB_File', $Dfile or die "Can't open file: $!\n" ; %h = (); ; ok(119, $a eq "") ; @@ -849,7 +849,7 @@ { # now an error to pass 'hash' a non-code reference - my $dbh = new DB_File::HASHINFO ; + my $dbh = DB_File::HASHINFO->new(); eval { $dbh->{hash} = 2 }; ok(126, $@ =~ /^Key 'hash' not associated with a code reference at/); @@ -862,10 +862,10 @@ # my %hash ; # my $Dfile = "xxx.db"; # unlink $Dfile; -# my $dbh = new DB_File::HASHINFO ; +# my $dbh = DB_File::HASHINFO->new(); # $dbh->{hash} = sub { $hash{3} = 4 ; length $_[0] } ; -# -# +# +# # ok(127, tie(%hash, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ); # # eval { $hash{1} = 2; @@ -890,14 +890,14 @@ my $h1_count = 0; my $h2_count = 0; unlink $Dfile, $Dfile2; - my $dbh1 = new DB_File::HASHINFO ; + my $dbh1 = DB_File::HASHINFO->new(); $dbh1->{hash} = sub { ++ $h1_count ; length $_[0] } ; - my $dbh2 = new DB_File::HASHINFO ; + my $dbh2 = DB_File::HASHINFO->new(); $dbh2->{hash} = sub { ++ $h2_count ; length $_[0] } ; - - - + + + my (%h); ok(127, tie(%hash1, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $dbh1 ) ); ok(128, tie(%hash2, 'DB_File',$Dfile2, O_RDWR|O_CREAT, 0640, $dbh2 ) ); @@ -919,9 +919,9 @@ } { - # Passing undef for flags and/or mode when calling tie could cause + # Passing undef for flags and/or mode when calling tie could cause # Use of uninitialized value in subroutine entry - + my $warn_count = 0 ; #local $SIG{__WARN__} = sub { ++ $warn_count }; @@ -981,7 +981,7 @@ ok(139, $h{"fred"} eq "joe"); ok(140, $db->FIRSTKEY() eq "fred") ; - + eval { my @r= grep { $h{$_} } (1, 2, 3) }; ok (141, ! $@); @@ -1041,7 +1041,7 @@ # Regression Test for bug 30237 # Check that substr can be used in the key to db_put # and that db_put does not trigger the warning - # + # # Use of uninitialized value in subroutine entry @@ -1066,7 +1066,7 @@ $db->put(substr($key,0), $value) ; } - ok 153, $warned eq '' + ok 153, $warned eq '' or print "# Caught warning [$warned]\n" ; # db-put with substr of value @@ -1079,7 +1079,7 @@ $db->put($key, substr($value,0)) ; } - ok 154, $warned eq '' + ok 154, $warned eq '' or print "# Caught warning [$warned]\n" ; # via the tied hash is not a problem, but check anyway @@ -1093,7 +1093,7 @@ $h{substr($key,0)} = $value ; } - ok 155, $warned eq '' + ok 155, $warned eq '' or print "# Caught warning [$warned]\n" ; # via the tied hash is not a problem, but check anyway @@ -1107,7 +1107,7 @@ $h{$key} = substr($value,0) ; } - ok 156, $warned eq '' + ok 156, $warned eq '' or print "# Caught warning [$warned]\n" ; my %bad = () ; @@ -1117,7 +1117,7 @@ $status = $db->seq(substr($key,0), substr($value,0), R_NEXT ) ) { #print "# key [$key] value [$value]\n" ; - if (defined $remember{$key} && defined $value && + if (defined $remember{$key} && defined $value && $remember{$key} eq $value) { delete $remember{$key} ; } @@ -1125,7 +1125,7 @@ $bad{$key} = $value ; } } - + ok 157, keys %bad == 0 ; ok 158, keys %remember == 0 ; @@ -1137,7 +1137,7 @@ my $value = 'fred'; $warned = ''; $db->put(undef, $value) ; - ok 159, $warned eq '' + ok 159, $warned eq '' or print "# Caught warning [$warned]\n" ; $warned = ''; @@ -1146,7 +1146,7 @@ $value = '' ; $db->get(undef, $value) ; ok 160, $no_NULL || $value eq 'fred' or print "# got [$value]\n" ; - ok 161, $warned eq '' + ok 161, $warned eq '' or print "# Caught warning [$warned]\n" ; $warned = ''; @@ -1205,7 +1205,7 @@ $status = $db->seq($key, $value, R_NEXT ) ) { #print "# key [$key] value [$value]\n" ; - if (defined $remember{$key} && defined $value && + if (defined $remember{$key} && defined $value && $remember{$key} eq $value) { delete $remember{$key} ; } @@ -1213,7 +1213,7 @@ $bad{$key} = $value ; } } - + ok 164, $_ eq 'fred'; ok 165, keys %bad == 0 ; ok 166, keys %remember == 0 ; diff -Nru perl-5.32.1/cpan/DB_File/t/db-recno.t perl-5.34.0/cpan/DB_File/t/db-recno.t --- perl-5.32.1/cpan/DB_File/t/db-recno.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/DB_File/t/db-recno.t 2020-10-04 22:17:12.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use Config; - + BEGIN { if(-d "lib" && -f "TEST") { if ($Config{'extensions'} !~ /\bDB_File\b/ ) { @@ -12,7 +12,7 @@ } } -use DB_File; +use DB_File; use Fcntl; use File::Temp qw(tempdir) ; @@ -25,7 +25,7 @@ sub try::TIEARRAY { bless [], "try" } sub try::FETCHSIZE { $FA = 1 } $FA = 0 ; - my @a ; + my @a ; tie @a, 'try' ; my $a = @a ; } @@ -76,12 +76,12 @@ } sub docat_del -{ +{ my $file = shift; my $result = docat($file); unlink $file ; return $result; -} +} sub safeUntie { @@ -114,7 +114,7 @@ print STDERR <import(); } ; } - + if ($@) { *Dumper = sub { my $a = shift; return "[ @{ $a } ]" } ; - } + } } my $splice_tests = 10 + 12 + 1; # ten regressions, plus the randoms my $total_tests = 181 ; $total_tests += $splice_tests if $FA ; -print "1..$total_tests\n"; +print "1..$total_tests\n"; my $TEMPDIR = tempdir( CLEANUP => 1 ); chdir $TEMPDIR; @@ -159,7 +159,7 @@ # Check the interface to RECNOINFO -$dbh = new DB_File::RECNOINFO ; +$dbh = DB_File::RECNOINFO->new(); ok(1, ! defined $dbh->{bval}) ; ok(2, ! defined $dbh->{cachesize}) ; ok(3, ! defined $dbh->{psize}) ; @@ -297,7 +297,7 @@ my $j = 0 ; foreach (@data) { - $ok = 0, last if $_ ne $h[$j ++] ; + $ok = 0, last if $_ ne $h[$j ++] ; } ok(52, $ok ); @@ -328,7 +328,7 @@ # Check bval defaults to \n my @h = () ; - my $dbh = new DB_File::RECNOINFO ; + my $dbh = DB_File::RECNOINFO->new(); ok(59, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; $h[0] = "abc" ; $h[1] = "def" ; @@ -343,7 +343,7 @@ # Change bval my @h = () ; - my $dbh = new DB_File::RECNOINFO ; + my $dbh = DB_File::RECNOINFO->new(); $dbh->{bval} = "-" ; ok(62, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; $h[0] = "abc" ; @@ -361,7 +361,7 @@ # Check R_FIXEDLEN with default bval (space) my @h = () ; - my $dbh = new DB_File::RECNOINFO ; + my $dbh = DB_File::RECNOINFO->new(); $dbh->{flags} = R_FIXEDLEN ; $dbh->{reclen} = 5 ; ok(65, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; @@ -380,7 +380,7 @@ # Check R_FIXEDLEN with user-defined bval my @h = () ; - my $dbh = new DB_File::RECNOINFO ; + my $dbh = DB_File::RECNOINFO->new(); $dbh->{flags} = R_FIXEDLEN ; $dbh->{bval} = "-" ; $dbh->{reclen} = 5 ; @@ -428,27 +428,27 @@ @ISA=qw(DB_File); @EXPORT = @DB_File::EXPORT ; - sub STORE { + sub STORE { my $self = shift ; my $key = shift ; my $value = shift ; $self->SUPER::STORE($key, $value * 2) ; } - sub FETCH { + sub FETCH { my $self = shift ; my $key = shift ; $self->SUPER::FETCH($key) - 1 ; } - sub put { + sub put { my $self = shift ; my $key = shift ; my $value = shift ; $self->SUPER::put($key, $value * 3) ; } - sub get { + sub get { my $self = shift ; $self->SUPER::get($_[0], $_[1]) ; $_[1] -= 2 ; @@ -467,7 +467,7 @@ close FILE or die "Could not close: $!"; - BEGIN { push @INC, '.'; } + BEGIN { push @INC, '.'; } eval 'use SubDB ; '; main::ok(72, $@ eq "") ; my @h ; @@ -520,11 +520,11 @@ # $# sets array to same length $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ; - ok(87, $self) + ok(87, $self) or warn "# $DB_File::Error\n"; if ($FA) { $#h = 3 } - else + else { $self->STORESIZE(4) } ok(88, $FA ? $#h == 3 : $self->length() == 4) ; undef $self ; @@ -536,7 +536,7 @@ ok(91, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ; if ($FA) { $#h = 6 } - else + else { $self->STORESIZE(7) } ok(92, $FA ? $#h == 6 : $self->length() == 7) ; undef $self ; @@ -548,7 +548,7 @@ ok(95, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ; if ($FA) { $#h = 2 } - else + else { $self->STORESIZE(3) } ok(96, $FA ? $#h == 2 : $self->length() == 3) ; undef $self ; @@ -573,23 +573,23 @@ { my($fk, $sk, $fv, $sv) = @_ ; - print "# Fetch Key : expected '$fk' got '$fetch_key'\n" + print "# Fetch Key : expected '$fk' got '$fetch_key'\n" if $fetch_key ne $fk ; - print "# Fetch Value : expected '$fv' got '$fetch_value'\n" + print "# Fetch Value : expected '$fv' got '$fetch_value'\n" if $fetch_value ne $fv ; - print "# Store Key : expected '$sk' got '$store_key'\n" + print "# Store Key : expected '$sk' got '$store_key'\n" if $store_key ne $sk ; - print "# Store Value : expected '$sv' got '$store_value'\n" + print "# Store Value : expected '$sv' got '$store_value'\n" if $store_value ne $sv ; - print "# \$_ : expected 'original' got '$_'\n" + print "# \$_ : expected 'original' got '$_'\n" if $_ ne 'original' ; return - $fetch_key eq $fk && $store_key eq $sk && + $fetch_key eq $fk && $store_key eq $sk && $fetch_value eq $fv && $store_value eq $sv && $_ eq 'original' ; } - + ok(99, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); $db->filter_fetch_key (sub { $fetch_key = $_ }) ; @@ -614,15 +614,15 @@ ok(104, checkOutput( 0, "", "", "")) ; # replace the filters, but remember the previous set - my ($old_fk) = $db->filter_fetch_key + my ($old_fk) = $db->filter_fetch_key (sub { ++ $_ ; $fetch_key = $_ }) ; - my ($old_sk) = $db->filter_store_key + my ($old_sk) = $db->filter_store_key (sub { $_ *= 2 ; $store_key = $_ }) ; - my ($old_fv) = $db->filter_fetch_value + my ($old_fv) = $db->filter_fetch_value (sub { $_ = "[$_]"; $fetch_value = $_ }) ; - my ($old_sv) = $db->filter_store_value + my ($old_sv) = $db->filter_store_value (sub { s/o/x/g; $store_value = $_ }) ; - + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; $h[1] = "Joe" ; # fk sk fv sv @@ -637,7 +637,7 @@ ok(108, $db->FIRSTKEY() == 1) ; # fk sk fv sv ok(109, checkOutput( 1, "", "", "")) ; - + # put the original filters back $db->filter_fetch_key ($old_fk); $db->filter_store_key ($old_sk); @@ -679,7 +679,7 @@ unlink $Dfile; } -{ +{ # DBM Filter with a closure use warnings ; @@ -697,8 +697,8 @@ my $count = 0 ; my @kept = () ; - return sub { ++$count ; - push @kept, $_ ; + return sub { ++$count ; + push @kept, $_ ; $result{$name} = "$name - $count: [@kept]" ; } } @@ -741,7 +741,7 @@ undef $db ; ok(144, safeUntie \@h); unlink $Dfile; -} +} { # DBM Filter recursion detection @@ -756,7 +756,7 @@ eval '$h[1] = 1234' ; ok(146, $@ =~ /^recursion detected in filter_store_key at/ ); - + undef $db ; ok(147, safeUntie \@h); unlink $Dfile; @@ -768,7 +768,7 @@ my $file = "xyzt" ; { - my $redirect = new Redirect $file ; + my $redirect = Redirect->new( $file ); use warnings FATAL => qw(all); use strict ; @@ -778,7 +778,7 @@ unlink $filename ; my @h ; - my $x = tie @h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_RECNO + my $x = tie @h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_RECNO or die "Cannot open file 'text': $!\n" ; # Add a few key/value pairs to the file @@ -786,7 +786,7 @@ $h[1] = "blue" ; $h[2] = "yellow" ; - $FA ? push @h, "green", "black" + $FA ? push @h, "green", "black" : $x->push("green", "black") ; my $elements = $FA ? scalar @h : $x->length ; @@ -795,7 +795,7 @@ my $last = $FA ? pop @h : $x->pop ; print "popped $last\n" ; - $FA ? unshift @h, "white" + $FA ? unshift @h, "white" : $x->unshift("white") ; my $first = $FA ? shift @h : $x->shift ; print "shifted $first\n" ; @@ -811,7 +811,7 @@ untie @h ; unlink $filename ; - } + } ok(148, docat_del($file) eq <<'EOM') ; The array contains 5 entries @@ -824,21 +824,21 @@ my $save_output = "xyzt" ; { - my $redirect = new Redirect $save_output ; + my $redirect = Redirect->new( $save_output ); use warnings FATAL => qw(all); use strict ; our (@h, $H, $file, $i); use DB_File ; use Fcntl ; - + $file = "text" ; unlink $file ; - $H = tie @h, "DB_File", $file, O_RDWR|O_CREAT, 0640, $DB_RECNO + $H = tie @h, "DB_File", $file, O_RDWR|O_CREAT, 0640, $DB_RECNO or die "Cannot open file $file: $!\n" ; - + # first create a text file to play with $h[0] = "zero" ; $h[1] = "one" ; @@ -846,12 +846,12 @@ $h[3] = "three" ; $h[4] = "four" ; - + # Print the records in order. # # The length method is needed here because evaluating a tied # array in a scalar context does not return the number of - # elements in the array. + # elements in the array. print "\nORIGINAL\n" ; foreach $i (0 .. $H->length - 1) { @@ -887,16 +887,16 @@ # same again, but use the API functions instead print "\nREVERSE again\n" ; my ($s, $k, $v) = (0, 0, 0) ; - for ($s = $H->seq($k, $v, R_LAST) ; - $s == 0 ; + for ($s = $H->seq($k, $v, R_LAST) ; + $s == 0 ; $s = $H->seq($k, $v, R_PREV)) { print "$k: $v\n" } undef $H ; - untie @h ; + untie @h ; unlink $file ; - } + } ok(149, docat_del($save_output) eq <<'EOM') ; @@ -926,14 +926,14 @@ 1: New One 0: first EOM - + } { # Bug ID 20001013.009 # # test that $hash{KEY} = undef doesn't produce the warning - # Use of uninitialized value in null operation + # Use of uninitialized value in null operation use warnings ; use strict ; use DB_File ; @@ -942,8 +942,8 @@ my @h ; my $a = ""; local $SIG{__WARN__} = sub {$a = $_[0]} ; - - tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO + + tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO or die "Can't open file: $!\n" ; $h[0] = undef; ok(150, $a eq "") ; @@ -962,8 +962,8 @@ unlink $Dfile; my @h ; - - tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO + + tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO or die "Can't open file: $!\n" ; @h = (); ; ok(152, $a eq "") ; @@ -1064,7 +1064,7 @@ # Regression Test for bug 30237 # Check that substr can be used in the key to db_put # and that db_put does not trigger the warning - # + # # Use of uninitialized value in subroutine entry @@ -1090,7 +1090,7 @@ $db->put(substr($key,0, 1), $value) ; } - ok 170, $warned eq '' + ok 170, $warned eq '' or print "# Caught warning [$warned]\n" ; # db-put with substr of value @@ -1103,7 +1103,7 @@ $db->put($ix, substr($value,0)) ; } - ok 171, $warned eq '' + ok 171, $warned eq '' or print "# Caught warning [$warned]\n" ; # via the tied array is not a problem, but check anyway @@ -1117,7 +1117,7 @@ $h[substr($key,0,1)] = $value ; } - ok 172, $warned eq '' + ok 172, $warned eq '' or print "# Caught warning [$warned]\n" ; # via the tied array is not a problem, but check anyway @@ -1131,7 +1131,7 @@ $h[$ix] = substr($value,0) ; } - ok 173, $warned eq '' + ok 173, $warned eq '' or print "# Caught warning [$warned]\n" ; my %bad = () ; @@ -1141,7 +1141,7 @@ $status = $db->seq($key, $value, R_NEXT ) ) { #print "# key [$key] value [$value]\n" ; - if (defined $remember{$key} && defined $value && + if (defined $remember{$key} && defined $value && $remember{$key} eq $value) { delete $remember{$key} ; } @@ -1149,7 +1149,7 @@ $bad{$key} = $value ; } } - + ok 174, keys %bad == 0 ; ok 175, keys %remember == 0 ; @@ -1162,7 +1162,7 @@ $status = $db->put(undef, $value) ; ok 176, $status == 0 or print "# put failed - status $status\n"; - ok 177, $warned eq '' + ok 177, $warned eq '' or print "# Caught warning [$warned]\n" ; $warned = ''; @@ -1173,7 +1173,7 @@ or print "# get failed - status $status\n" ; ok(179, $db->get(undef, $value) == 0) or print "# get failed\n" ; ok 180, $value eq 'fred' or print "# got [$value]\n" ; - ok 181, $warned eq '' + ok 181, $warned eq '' or print "# Caught warning [$warned]\n" ; $warned = ''; @@ -1200,8 +1200,8 @@ unlink $Dfile; my @tied ; - - tie @tied, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO + + tie @tied, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO or die "Can't open file: $!\n" ; # uninitialized offset @@ -1261,15 +1261,15 @@ unlink $Dfile; } -# +# # These are a few regression tests: bundles of five arguments to pass # to test_splice(). The first four arguments correspond to those # given to splice(), and the last says which context to call it in # (scalar, list or void). -# +# # The expected result is not needed because we get that by running # Perl's built-in splice(). -# +# my @tests = ([ [ 'falsely', 'dinosaur', 'remedy', 'commotion', 'rarely', 'paleness' ], -4, -2, @@ -1309,7 +1309,7 @@ undef, undef, [ 'otrb', 'stje', 'ixrpw', 'vxfx', 'lhhf' ], 'scalar' ], - + [ [ 'riheb' ], -8, undef, [], 'void' ], [ [ 'uft', 'qnxs', '' ], @@ -1355,7 +1355,7 @@ ok($testnum++, not $failed); } -die "testnum ($testnum) != total_tests ($total_tests) + 1" +die "testnum ($testnum) != total_tests ($total_tests) + 1" if $testnum != $total_tests + 1; exit ; @@ -1363,21 +1363,21 @@ # Subroutines for SPLICE testing # test_splice() -# +# # Test the new splice() against Perl's built-in one. The first four # parameters are those passed to splice(), except that the lists must # be (explicitly) passed by reference, and are not actually modified. # (It's just a test!) The last argument specifies the context in # which to call the functions: 'list', 'scalar', or 'void'. -# +# # Returns: # undef, if the two splices give the same results for the given # arguments and context; -# +# # an error message showing the difference, otherwise. -# +# # Reads global variable $tmp. -# +# sub test_splice { die 'usage: test_splice(array, offset, length, list, context)' if @_ != 5; my ($array, $offset, $length, $list, $context) = @_; @@ -1385,20 +1385,20 @@ my @list = @$list; unlink $tmp; - + my @h; my $H = tie @h, 'DB_File', $tmp, O_CREAT|O_RDWR, 0644, $DB_RECNO or die "cannot open $tmp: $!"; my $i = 0; foreach ( @array ) { $h[$i++] = $_ } - + return "basic DB_File sanity check failed" if list_diff(\@array, \@h); # Output from splice(): # Returned value (munged a bit), error msg, warnings - # + # my ($s_r, $s_error, @s_warnings); my $gather_warning = sub { push @s_warnings, $_[0] }; @@ -1491,7 +1491,7 @@ while (@s_warnings) { my $sw = shift @s_warnings; my $msw = shift @ms_warnings; - + if (defined $sw and defined $msw) { $msw =~ s/ \(.+\)$//; $msw =~ s/ in splice$// if $] < 5.006; @@ -1506,10 +1506,10 @@ return "one warning defined, another undef"; } } - + undef $H; untie @h; - + open(TEXT, $tmp) or die "cannot open $tmp: $!"; @h = ; normalise @h; chomp @h; close TEXT or die "cannot close $tmp: $!"; @@ -1532,10 +1532,10 @@ # reference to second list # # Returns true iff they differ. Only works for lists of (string or -# undef). -# +# undef). +# # Surely there is a better way to do this? -# +# sub list_diff { die 'usage: list_diff(ref to first list, ref to second list)' if @_ != 2; @@ -1555,15 +1555,15 @@ } } return 0; -} +} # rand_test() -# +# # Think up a random ARRAY, OFFSET, LENGTH, LIST, and context. # ARRAY or LIST might be empty, and OFFSET or LENGTH might be # undefined. Return a 'test' - a listref of these five things. -# +# sub rand_test { die 'usage: rand_test()' if @_; my @contexts = qw; @@ -1596,5 +1596,3 @@ } return $r; } - - diff -Nru perl-5.32.1/cpan/DB_File/t/db-threads.t perl-5.34.0/cpan/DB_File/t/db-threads.t --- perl-5.32.1/cpan/DB_File/t/db-threads.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/DB_File/t/db-threads.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,4 @@ -#!./perl +#!./perl use warnings; use strict; diff -Nru perl-5.32.1/cpan/DB_File/version.c perl-5.34.0/cpan/DB_File/version.c --- perl-5.32.1/cpan/DB_File/version.c 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/DB_File/version.c 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,6 @@ -/* +/* - version.c -- Perl 5 interface to Berkeley DB + version.c -- Perl 5 interface to Berkeley DB written by Paul Marquess last modified 2nd Jan 2002 @@ -23,7 +23,7 @@ */ #define PERL_NO_GET_CONTEXT -#include "EXTERN.h" +#include "EXTERN.h" #include "perl.h" #include "XSUB.h" @@ -36,9 +36,9 @@ __getBerkeleyDBInfo() #endif { -#ifdef dTHX +#ifdef dTHX dTHX; -#endif +#endif SV * version_sv = perl_get_sv("DB_File::db_version", GV_ADD|GV_ADDMULTI) ; SV * ver_sv = perl_get_sv("DB_File::db_ver", GV_ADD|GV_ADDMULTI) ; SV * compat_sv = perl_get_sv("DB_File::db_185_compat", GV_ADD|GV_ADDMULTI) ; @@ -53,22 +53,22 @@ /* || Patch != DB_VERSION_PATCH) */ croak("\nDB_File was build with libdb version %d.%d.%d,\nbut you are attempting to run it with libdb version %d.%d.%d\n", - DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH, + DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH, Major, Minor, Patch) ; - + /* check that libdb is recent enough -- we need 2.3.4 or greater */ if (Major == 2 && (Minor < 3 || (Minor == 3 && Patch < 4))) croak("DB_File needs Berkeley DB 2.3.4 or greater, you have %d.%d.%d\n", Major, Minor, Patch) ; - + { char buffer[40] ; sprintf(buffer, "%d.%d", Major, Minor) ; - sv_setpv(version_sv, buffer) ; + sv_setpv(version_sv, buffer) ; sprintf(buffer, "%d.%03d%03d", Major, Minor, Patch) ; - sv_setpv(ver_sv, buffer) ; + sv_setpv(ver_sv, buffer) ; } - + #else /* ! DB_VERSION_MAJOR */ sv_setiv(version_sv, 1) ; sv_setiv(ver_sv, 1) ; diff -Nru perl-5.32.1/cpan/Digest/Digest/base.pm perl-5.34.0/cpan/Digest/Digest/base.pm --- perl-5.32.1/cpan/Digest/Digest/base.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Digest/Digest/base.pm 1970-01-01 00:00:00.000000000 +0000 @@ -1,100 +0,0 @@ -package Digest::base; - -use strict; -use vars qw($VERSION); -$VERSION = "1.16"; - -# subclass is supposed to implement at least these -sub new; -sub clone; -sub add; -sub digest; - -sub reset { - my $self = shift; - $self->new(@_); # ugly -} - -sub addfile { - my ($self, $handle) = @_; - - my $n; - my $buf = ""; - - while (($n = read($handle, $buf, 4*1024))) { - $self->add($buf); - } - unless (defined $n) { - require Carp; - Carp::croak("Read failed: $!"); - } - - $self; -} - -sub add_bits { - my $self = shift; - my $bits; - my $nbits; - if (@_ == 1) { - my $arg = shift; - $bits = pack("B*", $arg); - $nbits = length($arg); - } - else { - ($bits, $nbits) = @_; - } - if (($nbits % 8) != 0) { - require Carp; - Carp::croak("Number of bits must be multiple of 8 for this algorithm"); - } - return $self->add(substr($bits, 0, $nbits/8)); -} - -sub hexdigest { - my $self = shift; - return unpack("H*", $self->digest(@_)); -} - -sub b64digest { - my $self = shift; - require MIME::Base64; - my $b64 = MIME::Base64::encode($self->digest(@_), ""); - $b64 =~ s/=+$//; - return $b64; -} - -1; - -__END__ - -=head1 NAME - -Digest::base - Digest base class - -=head1 SYNOPSIS - - package Digest::Foo; - use base 'Digest::base'; - -=head1 DESCRIPTION - -The C class provide implementations of the methods -C and C in terms of C, and of the methods -C and C in terms of C. - -Digest implementations might want to inherit from this class to get -this implementations of the alternative I and I methods. -A minimal subclass needs to implement the following methods by itself: - - new - clone - add - digest - -The arguments and expected behaviour of these methods are described in -L. - -=head1 SEE ALSO - -L diff -Nru perl-5.32.1/cpan/Digest/Digest/file.pm perl-5.34.0/cpan/Digest/Digest/file.pm --- perl-5.32.1/cpan/Digest/Digest/file.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Digest/Digest/file.pm 1970-01-01 00:00:00.000000000 +0000 @@ -1,85 +0,0 @@ -package Digest::file; - -use strict; - -use Exporter (); -use Carp qw(croak); -use Digest (); - -use vars qw($VERSION @ISA @EXPORT_OK); - -$VERSION = "1.16"; -@ISA = qw(Exporter); -@EXPORT_OK = qw(digest_file_ctx digest_file digest_file_hex digest_file_base64); - -sub digest_file_ctx { - my $file = shift; - croak("No digest algorithm specified") unless @_; - local *F; - open(F, "<", $file) || croak("Can't open '$file': $!"); - binmode(F); - my $ctx = Digest->new(@_); - $ctx->addfile(*F); - close(F); - return $ctx; -} - -sub digest_file { - digest_file_ctx(@_)->digest; -} - -sub digest_file_hex { - digest_file_ctx(@_)->hexdigest; -} - -sub digest_file_base64 { - digest_file_ctx(@_)->b64digest; -} - -1; - -__END__ - -=head1 NAME - -Digest::file - Calculate digests of files - -=head1 SYNOPSIS - - # Poor mans "md5sum" command - use Digest::file qw(digest_file_hex); - for (@ARGV) { - print digest_file_hex($_, "MD5"), " $_\n"; - } - -=head1 DESCRIPTION - -This module provide 3 convenience functions to calculate the digest -of files. The following functions are provided: - -=over - -=item digest_file( $file, $algorithm, [$arg,...] ) - -This function will calculate and return the binary digest of the bytes -of the given file. The function will croak if it fails to open or -read the file. - -The $algorithm is a string like "MD2", "MD5", "SHA-1", "SHA-512". -Additional arguments are passed to the constructor for the -implementation of the given algorithm. - -=item digest_file_hex( $file, $algorithm, [$arg,...] ) - -Same as digest_file(), but return the digest in hex form. - -=item digest_file_base64( $file, $algorithm, [$arg,...] ) - -Same as digest_file(), but return the digest as a base64 encoded -string. - -=back - -=head1 SEE ALSO - -L diff -Nru perl-5.32.1/cpan/Digest/Digest.pm perl-5.34.0/cpan/Digest/Digest.pm --- perl-5.32.1/cpan/Digest/Digest.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Digest/Digest.pm 1970-01-01 00:00:00.000000000 +0000 @@ -1,323 +0,0 @@ -package Digest; - -use strict; -use vars qw($VERSION %MMAP $AUTOLOAD); - -$VERSION = "1.17_01"; - -%MMAP = ( - "SHA-1" => [["Digest::SHA", 1], "Digest::SHA1", ["Digest::SHA2", 1]], - "SHA-224" => [["Digest::SHA", 224]], - "SHA-256" => [["Digest::SHA", 256], ["Digest::SHA2", 256]], - "SHA-384" => [["Digest::SHA", 384], ["Digest::SHA2", 384]], - "SHA-512" => [["Digest::SHA", 512], ["Digest::SHA2", 512]], - "HMAC-MD5" => "Digest::HMAC_MD5", - "HMAC-SHA-1" => "Digest::HMAC_SHA1", - "CRC-16" => [["Digest::CRC", type => "crc16"]], - "CRC-32" => [["Digest::CRC", type => "crc32"]], - "CRC-CCITT" => [["Digest::CRC", type => "crcccitt"]], - "RIPEMD-160" => "Crypt::RIPEMD160", -); - -sub new -{ - shift; # class ignored - my $algorithm = shift; - my $impl = $MMAP{$algorithm} || do { - $algorithm =~ s/\W+//g; - "Digest::$algorithm"; - }; - $impl = [$impl] unless ref($impl); - local $@; # don't clobber it for our caller - my $err; - for (@$impl) { - my $class = $_; - my @args; - ($class, @args) = @$class if ref($class); - no strict 'refs'; - unless (exists ${"$class\::"}{"VERSION"}) { - my $pm_file = $class . ".pm"; - $pm_file =~ s{::}{/}g; - eval { - local @INC = @INC; - pop @INC if $INC[-1] eq '.'; - require $pm_file - }; - if ($@) { - $err ||= $@; - next; - } - } - return $class->new(@args, @_); - } - die $err; -} - -sub AUTOLOAD -{ - my $class = shift; - my $algorithm = substr($AUTOLOAD, rindex($AUTOLOAD, '::')+2); - $class->new($algorithm, @_); -} - -1; - -__END__ - -=head1 NAME - -Digest - Modules that calculate message digests - -=head1 SYNOPSIS - - $md5 = Digest->new("MD5"); - $sha1 = Digest->new("SHA-1"); - $sha256 = Digest->new("SHA-256"); - $sha384 = Digest->new("SHA-384"); - $sha512 = Digest->new("SHA-512"); - - $hmac = Digest->HMAC_MD5($key); - -=head1 DESCRIPTION - -The C modules calculate digests, also called "fingerprints" -or "hashes", of some data, called a message. The digest is (usually) -some small/fixed size string. The actual size of the digest depend of -the algorithm used. The message is simply a sequence of arbitrary -bytes or bits. - -An important property of the digest algorithms is that the digest is -I to change if the message change in some way. Another -property is that digest functions are one-way functions, that is it -should be I to find a message that correspond to some given -digest. Algorithms differ in how "likely" and how "hard", as well as -how efficient they are to compute. - -Note that the properties of the algorithms change over time, as the -algorithms are analyzed and machines grow faster. If your application -for instance depends on it being "impossible" to generate the same -digest for a different message it is wise to make it easy to plug in -stronger algorithms as the one used grow weaker. Using the interface -documented here should make it easy to change algorithms later. - -All C modules provide the same programming interface. A -functional interface for simple use, as well as an object oriented -interface that can handle messages of arbitrary length and which can -read files directly. - -The digest can be delivered in three formats: - -=over 8 - -=item I - -This is the most compact form, but it is not well suited for printing -or embedding in places that can't handle arbitrary data. - -=item I - -A twice as long string of lowercase hexadecimal digits. - -=item I - -A string of portable printable characters. This is the base64 encoded -representation of the digest with any trailing padding removed. The -string will be about 30% longer than the binary version. -L tells you more about this encoding. - -=back - - -The functional interface is simply importable functions with the same -name as the algorithm. The functions take the message as argument and -return the digest. Example: - - use Digest::MD5 qw(md5); - $digest = md5($message); - -There are also versions of the functions with "_hex" or "_base64" -appended to the name, which returns the digest in the indicated form. - -=head1 OO INTERFACE - -The following methods are available for all C modules: - -=over 4 - -=item $ctx = Digest->XXX($arg,...) - -=item $ctx = Digest->new(XXX => $arg,...) - -=item $ctx = Digest::XXX->new($arg,...) - -The constructor returns some object that encapsulate the state of the -message-digest algorithm. You can add data to the object and finally -ask for the digest. The "XXX" should of course be replaced by the proper -name of the digest algorithm you want to use. - -The two first forms are simply syntactic sugar which automatically -load the right module on first use. The second form allow you to use -algorithm names which contains letters which are not legal perl -identifiers, e.g. "SHA-1". If no implementation for the given algorithm -can be found, then an exception is raised. - -If new() is called as an instance method (i.e. $ctx->new) it will just -reset the state the object to the state of a newly created object. No -new object is created in this case, and the return value is the -reference to the object (i.e. $ctx). - -=item $other_ctx = $ctx->clone - -The clone method creates a copy of the digest state object and returns -a reference to the copy. - -=item $ctx->reset - -This is just an alias for $ctx->new. - -=item $ctx->add( $data ) - -=item $ctx->add( $chunk1, $chunk2, ... ) - -The string value of the $data provided as argument is appended to the -message we calculate the digest for. The return value is the $ctx -object itself. - -If more arguments are provided then they are all appended to the -message, thus all these lines will have the same effect on the state -of the $ctx object: - - $ctx->add("a"); $ctx->add("b"); $ctx->add("c"); - $ctx->add("a")->add("b")->add("c"); - $ctx->add("a", "b", "c"); - $ctx->add("abc"); - -Most algorithms are only defined for strings of bytes and this method -might therefore croak if the provided arguments contain chars with -ordinal number above 255. - -=item $ctx->addfile( $io_handle ) - -The $io_handle is read until EOF and the content is appended to the -message we calculate the digest for. The return value is the $ctx -object itself. - -The addfile() method will croak() if it fails reading data for some -reason. If it croaks it is unpredictable what the state of the $ctx -object will be in. The addfile() method might have been able to read -the file partially before it failed. It is probably wise to discard -or reset the $ctx object if this occurs. - -In most cases you want to make sure that the $io_handle is in -"binmode" before you pass it as argument to the addfile() method. - -=item $ctx->add_bits( $data, $nbits ) - -=item $ctx->add_bits( $bitstring ) - -The add_bits() method is an alternative to add() that allow partial -bytes to be appended to the message. Most users should just ignore -this method as partial bytes is very unlikely to be of any practical -use. - -The two argument form of add_bits() will add the first $nbits bits -from $data. For the last potentially partial byte only the high order -C<< $nbits % 8 >> bits are used. If $nbits is greater than C<< -length($data) * 8 >>, then this method would do the same as C<< -$ctx->add($data) >>. - -The one argument form of add_bits() takes a $bitstring of "1" and "0" -chars as argument. It's a shorthand for C<< $ctx->add_bits(pack("B*", -$bitstring), length($bitstring)) >>. - -The return value is the $ctx object itself. - -This example shows two calls that should have the same effect: - - $ctx->add_bits("111100001010"); - $ctx->add_bits("\xF0\xA0", 12); - -Most digest algorithms are byte based and for these it is not possible -to add bits that are not a multiple of 8, and the add_bits() method -will croak if you try. - -=item $ctx->digest - -Return the binary digest for the message. - -Note that the C operation is effectively a destructive, -read-once operation. Once it has been performed, the $ctx object is -automatically C and can be used to calculate another digest -value. Call $ctx->clone->digest if you want to calculate the digest -without resetting the digest state. - -=item $ctx->hexdigest - -Same as $ctx->digest, but will return the digest in hexadecimal form. - -=item $ctx->b64digest - -Same as $ctx->digest, but will return the digest as a base64 encoded -string. - -=back - -=head1 Digest speed - -This table should give some indication on the relative speed of -different algorithms. It is sorted by throughput based on a benchmark -done with of some implementations of this API: - - Algorithm Size Implementation MB/s - - MD4 128 Digest::MD4 v1.3 165.0 - MD5 128 Digest::MD5 v2.33 98.8 - SHA-256 256 Digest::SHA2 v1.1.0 66.7 - SHA-1 160 Digest::SHA v4.3.1 58.9 - SHA-1 160 Digest::SHA1 v2.10 48.8 - SHA-256 256 Digest::SHA v4.3.1 41.3 - Haval-256 256 Digest::Haval256 v1.0.4 39.8 - SHA-384 384 Digest::SHA2 v1.1.0 19.6 - SHA-512 512 Digest::SHA2 v1.1.0 19.3 - SHA-384 384 Digest::SHA v4.3.1 19.2 - SHA-512 512 Digest::SHA v4.3.1 19.2 - Whirlpool 512 Digest::Whirlpool v1.0.2 13.0 - MD2 128 Digest::MD2 v2.03 9.5 - - Adler-32 32 Digest::Adler32 v0.03 1.3 - CRC-16 16 Digest::CRC v0.05 1.1 - CRC-32 32 Digest::CRC v0.05 1.1 - MD5 128 Digest::Perl::MD5 v1.5 1.0 - CRC-CCITT 16 Digest::CRC v0.05 0.8 - -These numbers was achieved Apr 2004 with ActivePerl-5.8.3 running -under Linux on a P4 2.8 GHz CPU. The last 5 entries differ by being -pure perl implementations of the algorithms, which explains why they -are so slow. - -=head1 SEE ALSO - -L, L, L, -L, L, L, L, -L, L, L, L - -New digest implementations should consider subclassing from L. - -L - -http://en.wikipedia.org/wiki/Cryptographic_hash_function - -=head1 AUTHOR - -Gisle Aas - -The C interface is based on the interface originally -developed by Neil Winton for his C module. - -This library is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - - Copyright 1998-2006 Gisle Aas. - Copyright 1995,1996 Neil Winton. - -=cut diff -Nru perl-5.32.1/cpan/Digest/lib/Digest/base.pm perl-5.34.0/cpan/Digest/lib/Digest/base.pm --- perl-5.32.1/cpan/Digest/lib/Digest/base.pm 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Digest/lib/Digest/base.pm 2020-10-24 18:43:34.000000000 +0000 @@ -0,0 +1,106 @@ +package Digest::base; + +use strict; +use warnings; + +our $VERSION = "1.19"; + +# subclass is supposed to implement at least these +sub new; +sub clone; +sub add; +sub digest; + +sub reset { + my $self = shift; + $self->new(@_); # ugly +} + +sub addfile { + my ( $self, $handle ) = @_; + + my $n; + my $buf = ""; + + while ( ( $n = read( $handle, $buf, 4 * 1024 ) ) ) { + $self->add($buf); + } + unless ( defined $n ) { + require Carp; + Carp::croak("Read failed: $!"); + } + + $self; +} + +sub add_bits { + my $self = shift; + my $bits; + my $nbits; + if ( @_ == 1 ) { + my $arg = shift; + $bits = pack( "B*", $arg ); + $nbits = length($arg); + } + else { + ( $bits, $nbits ) = @_; + } + if ( ( $nbits % 8 ) != 0 ) { + require Carp; + Carp::croak("Number of bits must be multiple of 8 for this algorithm"); + } + return $self->add( substr( $bits, 0, $nbits / 8 ) ); +} + +sub hexdigest { + my $self = shift; + return unpack( "H*", $self->digest(@_) ); +} + +sub b64digest { + my $self = shift; + my $b64 = $self->base64_padded_digest; + $b64 =~ s/=+$//; + return $b64; +} + +sub base64_padded_digest { + my $self = shift; + require MIME::Base64; + return MIME::Base64::encode( $self->digest(@_), "" ); +} + +1; + +__END__ + +=head1 NAME + +Digest::base - Digest base class + +=head1 SYNOPSIS + + package Digest::Foo; + use base 'Digest::base'; + +=head1 DESCRIPTION + +The C class provide implementations of the methods +C and C in terms of C, and of the methods +C and C in terms of C. + +Digest implementations might want to inherit from this class to get +this implementations of the alternative I and I methods. +A minimal subclass needs to implement the following methods by itself: + + new + clone + add + digest + +The arguments and expected behaviour of these methods are described in +L. + +=head1 SEE ALSO + +L diff -Nru perl-5.32.1/cpan/Digest/lib/Digest/file.pm perl-5.34.0/cpan/Digest/lib/Digest/file.pm --- perl-5.32.1/cpan/Digest/lib/Digest/file.pm 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Digest/lib/Digest/file.pm 2020-10-24 18:43:34.000000000 +0000 @@ -0,0 +1,83 @@ +package Digest::file; + +use strict; +use warnings; + +use Exporter (); +use Carp qw(croak); +use Digest (); + +our $VERSION = "1.19"; +our @ISA = qw(Exporter); +our @EXPORT_OK = qw(digest_file_ctx digest_file digest_file_hex digest_file_base64); + +sub digest_file_ctx { + my $file = shift; + croak("No digest algorithm specified") unless @_; + open( my $fh, "<", $file ) || croak("Can't open '$file': $!"); + binmode($fh); + my $ctx = Digest->new(@_); + $ctx->addfile($fh); + close($fh); + return $ctx; +} + +sub digest_file { + digest_file_ctx(@_)->digest; +} + +sub digest_file_hex { + digest_file_ctx(@_)->hexdigest; +} + +sub digest_file_base64 { + digest_file_ctx(@_)->b64digest; +} + +1; + +__END__ + +=head1 NAME + +Digest::file - Calculate digests of files + +=head1 SYNOPSIS + + # Poor mans "md5sum" command + use Digest::file qw(digest_file_hex); + for (@ARGV) { + print digest_file_hex($_, "MD5"), " $_\n"; + } + +=head1 DESCRIPTION + +This module provide 3 convenience functions to calculate the digest +of files. The following functions are provided: + +=over + +=item digest_file( $file, $algorithm, [$arg,...] ) + +This function will calculate and return the binary digest of the bytes +of the given file. The function will croak if it fails to open or +read the file. + +The $algorithm is a string like "MD2", "MD5", "SHA-1", "SHA-512". +Additional arguments are passed to the constructor for the +implementation of the given algorithm. + +=item digest_file_hex( $file, $algorithm, [$arg,...] ) + +Same as digest_file(), but return the digest in hex form. + +=item digest_file_base64( $file, $algorithm, [$arg,...] ) + +Same as digest_file(), but return the digest as a base64 encoded +string. + +=back + +=head1 SEE ALSO + +L diff -Nru perl-5.32.1/cpan/Digest/lib/Digest.pm perl-5.34.0/cpan/Digest/lib/Digest.pm --- perl-5.32.1/cpan/Digest/lib/Digest.pm 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Digest/lib/Digest.pm 2020-10-24 18:43:34.000000000 +0000 @@ -0,0 +1,334 @@ +package Digest; + +use strict; +use warnings; + +our $VERSION = "1.19"; + +our %MMAP = ( + "SHA-1" => [ [ "Digest::SHA", 1 ], "Digest::SHA1", [ "Digest::SHA2", 1 ] ], + "SHA-224" => [ [ "Digest::SHA", 224 ] ], + "SHA-256" => [ [ "Digest::SHA", 256 ], [ "Digest::SHA2", 256 ] ], + "SHA-384" => [ [ "Digest::SHA", 384 ], [ "Digest::SHA2", 384 ] ], + "SHA-512" => [ [ "Digest::SHA", 512 ], [ "Digest::SHA2", 512 ] ], + "SHA3-224" => [ [ "Digest::SHA3", 224 ] ], + "SHA3-256" => [ [ "Digest::SHA3", 256 ] ], + "SHA3-384" => [ [ "Digest::SHA3", 384 ] ], + "SHA3-512" => [ [ "Digest::SHA3", 512 ] ], + "HMAC-MD5" => "Digest::HMAC_MD5", + "HMAC-SHA-1" => "Digest::HMAC_SHA1", + "CRC-16" => [ [ "Digest::CRC", type => "crc16" ] ], + "CRC-32" => [ [ "Digest::CRC", type => "crc32" ] ], + "CRC-CCITT" => [ [ "Digest::CRC", type => "crcccitt" ] ], + "RIPEMD-160" => "Crypt::RIPEMD160", +); + +sub new { + shift; # class ignored + my $algorithm = shift; + my $impl = $MMAP{$algorithm} || do { + $algorithm =~ s/\W+//g; + "Digest::$algorithm"; + }; + $impl = [$impl] unless ref($impl); + local $@; # don't clobber it for our caller + my $err; + for (@$impl) { + my $class = $_; + my @args; + ( $class, @args ) = @$class if ref($class); + no strict 'refs'; + unless ( exists ${"$class\::"}{"VERSION"} ) { + my $pm_file = $class . ".pm"; + $pm_file =~ s{::}{/}g; + eval { + local @INC = @INC; + pop @INC if $INC[-1] eq '.'; + require $pm_file + }; + if ($@) { + $err ||= $@; + next; + } + } + return $class->new( @args, @_ ); + } + die $err; +} + +our $AUTOLOAD; + +sub AUTOLOAD { + my $class = shift; + my $algorithm = substr( $AUTOLOAD, rindex( $AUTOLOAD, '::' ) + 2 ); + $class->new( $algorithm, @_ ); +} + +1; + +__END__ + +=head1 NAME + +Digest - Modules that calculate message digests + +=head1 SYNOPSIS + + $md5 = Digest->new("MD5"); + $sha1 = Digest->new("SHA-1"); + $sha256 = Digest->new("SHA-256"); + $sha384 = Digest->new("SHA-384"); + $sha512 = Digest->new("SHA-512"); + + $hmac = Digest->HMAC_MD5($key); + +=head1 DESCRIPTION + +The C modules calculate digests, also called "fingerprints" +or "hashes", of some data, called a message. The digest is (usually) +some small/fixed size string. The actual size of the digest depend of +the algorithm used. The message is simply a sequence of arbitrary +bytes or bits. + +An important property of the digest algorithms is that the digest is +I to change if the message change in some way. Another +property is that digest functions are one-way functions, that is it +should be I to find a message that correspond to some given +digest. Algorithms differ in how "likely" and how "hard", as well as +how efficient they are to compute. + +Note that the properties of the algorithms change over time, as the +algorithms are analyzed and machines grow faster. If your application +for instance depends on it being "impossible" to generate the same +digest for a different message it is wise to make it easy to plug in +stronger algorithms as the one used grow weaker. Using the interface +documented here should make it easy to change algorithms later. + +All C modules provide the same programming interface. A +functional interface for simple use, as well as an object oriented +interface that can handle messages of arbitrary length and which can +read files directly. + +The digest can be delivered in three formats: + +=over 8 + +=item I + +This is the most compact form, but it is not well suited for printing +or embedding in places that can't handle arbitrary data. + +=item I + +A twice as long string of lowercase hexadecimal digits. + +=item I + +A string of portable printable characters. This is the base64 encoded +representation of the digest with any trailing padding removed. The +string will be about 30% longer than the binary version. +L tells you more about this encoding. + +=back + + +The functional interface is simply importable functions with the same +name as the algorithm. The functions take the message as argument and +return the digest. Example: + + use Digest::MD5 qw(md5); + $digest = md5($message); + +There are also versions of the functions with "_hex" or "_base64" +appended to the name, which returns the digest in the indicated form. + +=head1 OO INTERFACE + +The following methods are available for all C modules: + +=over 4 + +=item $ctx = Digest->XXX($arg,...) + +=item $ctx = Digest->new(XXX => $arg,...) + +=item $ctx = Digest::XXX->new($arg,...) + +The constructor returns some object that encapsulate the state of the +message-digest algorithm. You can add data to the object and finally +ask for the digest. The "XXX" should of course be replaced by the proper +name of the digest algorithm you want to use. + +The two first forms are simply syntactic sugar which automatically +load the right module on first use. The second form allow you to use +algorithm names which contains letters which are not legal perl +identifiers, e.g. "SHA-1". If no implementation for the given algorithm +can be found, then an exception is raised. + +To know what arguments (if any) the constructor takes (the C<$args,...> above) +consult the docs for the specific digest implementation. + +If new() is called as an instance method (i.e. $ctx->new) it will just +reset the state the object to the state of a newly created object. No +new object is created in this case, and the return value is the +reference to the object (i.e. $ctx). + +=item $other_ctx = $ctx->clone + +The clone method creates a copy of the digest state object and returns +a reference to the copy. + +=item $ctx->reset + +This is just an alias for $ctx->new. + +=item $ctx->add( $data ) + +=item $ctx->add( $chunk1, $chunk2, ... ) + +The string value of the $data provided as argument is appended to the +message we calculate the digest for. The return value is the $ctx +object itself. + +If more arguments are provided then they are all appended to the +message, thus all these lines will have the same effect on the state +of the $ctx object: + + $ctx->add("a"); $ctx->add("b"); $ctx->add("c"); + $ctx->add("a")->add("b")->add("c"); + $ctx->add("a", "b", "c"); + $ctx->add("abc"); + +Most algorithms are only defined for strings of bytes and this method +might therefore croak if the provided arguments contain chars with +ordinal number above 255. + +=item $ctx->addfile( $io_handle ) + +The $io_handle is read until EOF and the content is appended to the +message we calculate the digest for. The return value is the $ctx +object itself. + +The addfile() method will croak() if it fails reading data for some +reason. If it croaks it is unpredictable what the state of the $ctx +object will be in. The addfile() method might have been able to read +the file partially before it failed. It is probably wise to discard +or reset the $ctx object if this occurs. + +In most cases you want to make sure that the $io_handle is in +"binmode" before you pass it as argument to the addfile() method. + +=item $ctx->add_bits( $data, $nbits ) + +=item $ctx->add_bits( $bitstring ) + +The add_bits() method is an alternative to add() that allow partial +bytes to be appended to the message. Most users can just ignore +this method since typical applications involve only whole-byte data. + +The two argument form of add_bits() will add the first $nbits bits +from $data. For the last potentially partial byte only the high order +C<< $nbits % 8 >> bits are used. If $nbits is greater than C<< +length($data) * 8 >>, then this method would do the same as C<< +$ctx->add($data) >>. + +The one argument form of add_bits() takes a $bitstring of "1" and "0" +chars as argument. It's a shorthand for C<< $ctx->add_bits(pack("B*", +$bitstring), length($bitstring)) >>. + +The return value is the $ctx object itself. + +This example shows two calls that should have the same effect: + + $ctx->add_bits("111100001010"); + $ctx->add_bits("\xF0\xA0", 12); + +Most digest algorithms are byte based and for these it is not possible +to add bits that are not a multiple of 8, and the add_bits() method +will croak if you try. + +=item $ctx->digest + +Return the binary digest for the message. + +Note that the C operation is effectively a destructive, +read-once operation. Once it has been performed, the $ctx object is +automatically C and can be used to calculate another digest +value. Call $ctx->clone->digest if you want to calculate the digest +without resetting the digest state. + +=item $ctx->hexdigest + +Same as $ctx->digest, but will return the digest in hexadecimal form. + +=item $ctx->b64digest + +Same as $ctx->digest, but will return the digest as a base64 encoded +string without padding. + +=item $ctx->base64_padded_digest + +Same as $ctx->digest, but will return the digest as a base64 encoded +string. + +=back + +=head1 Digest speed + +This table should give some indication on the relative speed of +different algorithms. It is sorted by throughput based on a benchmark +done with of some implementations of this API: + + Algorithm Size Implementation MB/s + + MD4 128 Digest::MD4 v1.3 165.0 + MD5 128 Digest::MD5 v2.33 98.8 + SHA-256 256 Digest::SHA2 v1.1.0 66.7 + SHA-1 160 Digest::SHA v4.3.1 58.9 + SHA-1 160 Digest::SHA1 v2.10 48.8 + SHA-256 256 Digest::SHA v4.3.1 41.3 + Haval-256 256 Digest::Haval256 v1.0.4 39.8 + SHA-384 384 Digest::SHA2 v1.1.0 19.6 + SHA-512 512 Digest::SHA2 v1.1.0 19.3 + SHA-384 384 Digest::SHA v4.3.1 19.2 + SHA-512 512 Digest::SHA v4.3.1 19.2 + Whirlpool 512 Digest::Whirlpool v1.0.2 13.0 + MD2 128 Digest::MD2 v2.03 9.5 + + Adler-32 32 Digest::Adler32 v0.03 1.3 + CRC-16 16 Digest::CRC v0.05 1.1 + CRC-32 32 Digest::CRC v0.05 1.1 + MD5 128 Digest::Perl::MD5 v1.5 1.0 + CRC-CCITT 16 Digest::CRC v0.05 0.8 + +These numbers was achieved Apr 2004 with ActivePerl-5.8.3 running +under Linux on a P4 2.8 GHz CPU. The last 5 entries differ by being +pure perl implementations of the algorithms, which explains why they +are so slow. + +=head1 SEE ALSO + +L, L, L, +L, L, L, L, +L, L, L, L + +New digest implementations should consider subclassing from L. + +L + +http://en.wikipedia.org/wiki/Cryptographic_hash_function + +=head1 AUTHOR + +Gisle Aas + +The C interface is based on the interface originally +developed by Neil Winton for his C module. + +This library is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + + Copyright 1998-2006 Gisle Aas. + Copyright 1995,1996 Neil Winton. + +=cut diff -Nru perl-5.32.1/cpan/Digest/t/base.t perl-5.34.0/cpan/Digest/t/base.t --- perl-5.32.1/cpan/Digest/t/base.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Digest/t/base.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,83 +1,88 @@ #!perl -w -use Test::More tests => 12; +use strict; +use warnings; + +use Test::More tests => 13; + +use File::Temp 'tempfile'; { - package LenDigest; - require Digest::base; - use vars qw(@ISA); - @ISA = qw(Digest::base); - - sub new { - my $class = shift; - my $str = ""; - bless \$str, $class; - } - - sub add { - my $self = shift; - $$self .= join("", @_); - return $self; - } - - sub digest { - my $self = shift; - my $len = length($$self); - my $first = ($len > 0) ? substr($$self, 0, 1) : "X"; - $$self = ""; - return sprintf "$first%04d", $len; - } + + package LenDigest; + require Digest::base; + our @ISA = qw(Digest::base); + + sub new { + my $class = shift; + my $str = ""; + bless \$str, $class; + } + + sub add { + my $self = shift; + $$self .= join( "", @_ ); + return $self; + } + + sub digest { + my $self = shift; + my $len = length($$self); + my $first = ( $len > 0 ) ? substr( $$self, 0, 1 ) : "X"; + $$self = ""; + return sprintf "$first%04d", $len; + } } my $ctx = LenDigest->new; -is($ctx->digest, "X0000"); +is( $ctx->digest, "X0000" ); my $EBCDIC = ord('A') == 193; if ($EBCDIC) { - is($ctx->hexdigest, "e7f0f0f0f0"); - is($ctx->b64digest, "5/Dw8PA"); -} else { - is($ctx->hexdigest, "5830303030"); - is($ctx->b64digest, "WDAwMDA"); + is( $ctx->hexdigest, "e7f0f0f0f0" ); + is( $ctx->b64digest, "5/Dw8PA" ); + is( $ctx->base64_padded_digest, "5/Dw8PA=" ); +} +else { + is( $ctx->hexdigest, "5830303030" ); + is( $ctx->b64digest, "WDAwMDA" ); + is( $ctx->base64_padded_digest, "WDAwMDA=" ); } $ctx->add("foo"); -is($ctx->digest, "f0003"); +is( $ctx->digest, "f0003" ); $ctx->add("foo"); -is($ctx->hexdigest, $EBCDIC ? "86f0f0f0f3" : "6630303033"); +is( $ctx->hexdigest, $EBCDIC ? "86f0f0f0f3" : "6630303033" ); $ctx->add("foo"); -is($ctx->b64digest, $EBCDIC ? "hvDw8PM" : "ZjAwMDM"); +is( $ctx->b64digest, $EBCDIC ? "hvDw8PM" : "ZjAwMDM" ); + +{ + my ( $fh, $tempfile ) = tempfile(); + binmode($fh); + print $fh "abc" x 100, "\n"; + close($fh) || die; + + open( my $fh2, $tempfile ) || die; + $ctx->addfile($fh2); + close($fh2); + + is( $ctx->digest, "a0301" ); +} + +eval { $ctx->add_bits("1010"); }; +like( $@, '/^Number of bits must be multiple of 8/' ); + +$ctx->add_bits( $EBCDIC ? "11100100" : "01010101" ); +is( $ctx->digest, "U0001" ); -open(F, ">xxtest$$") || die; -binmode(F); -print F "abc" x 100, "\n"; -close(F) || die; - -open(F, "xxtest$$") || die; -$ctx->addfile(*F); -close(F); -unlink("xxtest$$") || warn; - -is($ctx->digest, "a0301"); - -eval { - $ctx->add_bits("1010"); -}; -like($@, '/^Number of bits must be multiple of 8/'); - -$ctx->add_bits($EBCDIC ? "11100100" : "01010101"); -is($ctx->digest, "U0001"); - -eval { - $ctx->add_bits("abc", 12); -}; -like($@, '/^Number of bits must be multiple of 8/'); +eval { $ctx->add_bits( "abc", 12 ); }; +like( $@, '/^Number of bits must be multiple of 8/' ); -$ctx->add_bits("abc", 16); -is($ctx->digest, "a0002"); +$ctx->add_bits( "abc", 16 ); +is( $ctx->digest, "a0002" ); -$ctx->add_bits("abc", 32); -is($ctx->digest, "a0003"); +$ctx->add_bits( "abc", 32 ); +is( $ctx->digest, "a0003" ); diff -Nru perl-5.32.1/cpan/Digest/t/digest.t perl-5.34.0/cpan/Digest/t/digest.t --- perl-5.32.1/cpan/Digest/t/digest.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Digest/t/digest.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,6 +1,8 @@ #!/usr/bin/env perl use strict; +use warnings; + use Test::More tests => 4; # To find Digest::Dummy @@ -17,6 +19,6 @@ $d = Digest->Dummy; is $d->digest, "ooo"; -$Digest::MMAP{"Dummy-24"} = [["NotThere"], "NotThereEither", ["Digest::Dummy", 24]]; +$Digest::MMAP{"Dummy-24"} = [ ["NotThere"], "NotThereEither", [ "Digest::Dummy", 24 ] ]; $d = Digest->new("Dummy-24"); is $d->digest, "24"; diff -Nru perl-5.32.1/cpan/Digest/t/file.t perl-5.34.0/cpan/Digest/t/file.t --- perl-5.32.1/cpan/Digest/t/file.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Digest/t/file.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,51 +1,56 @@ #!perl -w +use strict; +use warnings; + use Test::More tests => 5; +use File::Temp 'tempfile'; + { - package Digest::Foo; - require Digest::base; - use vars qw(@ISA $VERSION); - @ISA = qw(Digest::base); - - sub new { - my $class = shift; - my $str = ""; - bless \$str, $class; - } - - sub add { - my $self = shift; - $$self .= join("", @_); - return $self; - } - - sub digest { - my $self = shift; - return sprintf "%04d", length($$self); - } + + package Digest::Foo; + $INC{'Digest/Foo.pm'} = "local"; + require Digest::base; + our @ISA = qw(Digest::base); + + sub new { + my $class = shift; + my $str = ""; + bless \$str, $class; + } + + sub add { + my $self = shift; + $$self .= join( "", @_ ); + return $self; + } + + sub digest { + my $self = shift; + return sprintf "%04d", length($$self); + } } use Digest::file qw(digest_file digest_file_hex digest_file_base64); -my $file = "test-$$"; -die if -f $file; -open(F, ">$file") || die "Can't create '$file': $!"; -binmode(F); -print F "foo\0\n"; -close(F) || die "Can't write '$file': $!"; - -is(digest_file($file, "Foo"), "0005"); - -if (ord('A') == 193) { # EBCDIC. - is(digest_file_hex($file, "Foo"), "f0f0f0f5"); - is(digest_file_base64($file, "Foo"), "8PDw9Q"); -} else { - is(digest_file_hex($file, "Foo"), "30303035"); - is(digest_file_base64($file, "Foo"), "MDAwNQ"); +{ + my ( $fh, $file ) = tempfile(); + binmode($fh); + print $fh "foo\0\n"; + close($fh) || die "Can't write '$file': $!"; + + is( digest_file( $file, "Foo" ), "0005" ); + + if ( ord('A') == 193 ) { # EBCDIC. + is( digest_file_hex( $file, "Foo" ), "f0f0f0f5" ); + is( digest_file_base64( $file, "Foo" ), "8PDw9Q" ); + } + else { + is( digest_file_hex( $file, "Foo" ), "30303035" ); + is( digest_file_base64( $file, "Foo" ), "MDAwNQ" ); + } } -unlink($file) || warn "Can't unlink '$file': $!"; - -ok !eval { digest_file("not-there.txt", "Foo") }; +ok !eval { digest_file( "not-there.txt", "Foo" ) }; ok $@; diff -Nru perl-5.32.1/cpan/Digest/t/lib/Digest/Dummy.pm perl-5.34.0/cpan/Digest/t/lib/Digest/Dummy.pm --- perl-5.32.1/cpan/Digest/t/lib/Digest/Dummy.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Digest/t/lib/Digest/Dummy.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,19 +1,20 @@ package Digest::Dummy; use strict; -use vars qw($VERSION @ISA); -$VERSION = 1; +use warnings; + +our $VERSION = 1; +our @ISA = qw(Digest::base); require Digest::base; -@ISA = qw(Digest::base); sub new { my $class = shift; - my $d = shift || "ooo"; + my $d = shift || "ooo"; bless { d => $d }, $class; } -sub add {} +sub add { } sub digest { shift->{d} } 1; diff -Nru perl-5.32.1/cpan/Digest-MD5/hints/irix_6.pl perl-5.34.0/cpan/Digest-MD5/hints/irix_6.pl --- perl-5.32.1/cpan/Digest-MD5/hints/irix_6.pl 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Digest-MD5/hints/irix_6.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,6 +1,10 @@ # The Mongoose v7.1 compiler freezes up somewhere in the optimization of # MD5Transform() in MD5.c with optimization -O3. This is a workaround: -if ($Config{cc} =~ /64|n32/ && `$Config{cc} -version 2>&1` =~ /\s7\.1/) { - $self->{OPTIMIZE} = "-O1"; +use strict; +no strict 'vars'; +if ( $Config{cc} =~ /64|n32/ && `$Config{cc} -version 2>&1` =~ /\s7\.1/ ) { + my $optimize = $Config{optimize}; + $optimize =~ s/(^| )-O[2-9]\b/$1-O1/g + and $self->{OPTIMIZE} = $optimize; } diff -Nru perl-5.32.1/cpan/Digest-MD5/hints/MacOS.pl perl-5.34.0/cpan/Digest-MD5/hints/MacOS.pl --- perl-5.32.1/cpan/Digest-MD5/hints/MacOS.pl 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Digest-MD5/hints/MacOS.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,3 +1,5 @@ # MWCPPC compiler needs to crank down the optimizations +use strict; +no strict 'vars'; $self->{MWCPPCOptimize} = "-O1"; diff -Nru perl-5.32.1/cpan/Digest-MD5/Makefile.PL perl-5.34.0/cpan/Digest-MD5/Makefile.PL --- perl-5.32.1/cpan/Digest-MD5/Makefile.PL 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Digest-MD5/Makefile.PL 2020-10-24 18:43:34.000000000 +0000 @@ -1,6 +1,8 @@ #!perl -w use strict; +use warnings; + use Config qw(%Config); use ExtUtils::MakeMaker; @@ -30,7 +32,9 @@ }, 'META_MERGE' => { resources => { - repository => 'https://github.com/gisle/digest-md5', + license => 'http://dev.perl.org/licenses/', + bugtracker => 'https://github.com/Dual-Life/digest-md5/issues', + repository => 'https://github.com/dual-Life/digest-md5/', } }, @extra, diff -Nru perl-5.32.1/cpan/Digest-MD5/MD5.pm perl-5.34.0/cpan/Digest-MD5/MD5.pm --- perl-5.32.1/cpan/Digest-MD5/MD5.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Digest-MD5/MD5.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,17 +1,18 @@ package Digest::MD5; use strict; -use vars qw($VERSION @ISA @EXPORT_OK); +use warnings; -$VERSION = '2.55_01'; +our $VERSION = '2.58'; require Exporter; *import = \&Exporter::import; -@EXPORT_OK = qw(md5 md5_hex md5_base64); +our @EXPORT_OK = qw(md5 md5_hex md5_base64); +our @ISA; eval { require Digest::base; - push(@ISA, 'Digest::base'); + @ISA = qw/Digest::base/; }; if ($@) { my $err = $@; @@ -231,11 +232,13 @@ =item $md5->context(@ctx) -Saves or restores the internal state. When called with no arguments, -returns a 3-element list: number of blocks processed, a 16-byte -internal state buffer, then up to 63 bytes of unprocessed data. When -passed those same arguments, restores the state. This is only useful -for specialised operations. +Saves or restores the internal state. +When called with no arguments, returns a list: +number of blocks processed, +a 16-byte internal state buffer, +then optionally up to 63 bytes of unprocessed data if there are any. +When passed those same arguments, restores the state. +This is only useful for specialised operations. =back diff -Nru perl-5.32.1/cpan/Digest-MD5/MD5.xs perl-5.34.0/cpan/Digest-MD5/MD5.xs --- perl-5.32.1/cpan/Digest-MD5/MD5.xs 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Digest-MD5/MD5.xs 2020-10-24 18:43:34.000000000 +0000 @@ -720,15 +720,19 @@ XSRETURN(0); } - w=ctx->A; out[ 0]=w; out[ 1]=(w>>8); out[ 2]=(w>>16); out[ 3]=(w>>24); - w=ctx->B; out[ 4]=w; out[ 5]=(w>>8); out[ 6]=(w>>16); out[ 7]=(w>>24); - w=ctx->C; out[ 8]=w; out[ 9]=(w>>8); out[10]=(w>>16); out[11]=(w>>24); - w=ctx->D; out[12]=w; out[13]=(w>>8); out[14]=(w>>16); out[15]=(w>>24); + w=ctx->A; out[ 0]=(char)w; out[ 1]=(char)(w>>8); out[ 2]=(char)(w>>16); out[ 3]=(char)(w>>24); + w=ctx->B; out[ 4]=(char)w; out[ 5]=(char)(w>>8); out[ 6]=(char)(w>>16); out[ 7]=(char)(w>>24); + w=ctx->C; out[ 8]=(char)w; out[ 9]=(char)(w>>8); out[10]=(char)(w>>16); out[11]=(char)(w>>24); + w=ctx->D; out[12]=(char)w; out[13]=(char)(w>>8); out[14]=(char)(w>>16); out[15]=(char)(w>>24); EXTEND(SP, 3); ST(0) = sv_2mortal(newSVuv(ctx->bytes_high << 26 | ctx->bytes_low >> 6)); ST(1) = sv_2mortal(newSVpv(out, 16)); + + if ((ctx->bytes_low & 0x3F) == 0) + XSRETURN(2); + ST(2) = sv_2mortal(newSVpv((char *)ctx->buffer, ctx->bytes_low & 0x3F)); XSRETURN(3); diff -Nru perl-5.32.1/cpan/Digest-MD5/t/align.t perl-5.34.0/cpan/Digest-MD5/t/align.t --- perl-5.32.1/cpan/Digest-MD5/t/align.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Digest-MD5/t/align.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,8 +1,10 @@ # Test that md5 works on unaligned memory blocks +use strict; +use warnings; + print "1..1\n"; -use strict; use Digest::MD5 qw(md5_hex); my $str = "\100" x 20; diff -Nru perl-5.32.1/cpan/Digest-MD5/t/badfile.t perl-5.34.0/cpan/Digest-MD5/t/badfile.t --- perl-5.32.1/cpan/Digest-MD5/t/badfile.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Digest-MD5/t/badfile.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,8 +1,10 @@ -print "1..2\n"; +use strict; +use warnings; use Digest::MD5 (); -$md5 = Digest::MD5->new; +print "1..2\n"; +my $md5 = Digest::MD5->new; eval { use vars qw(*FOO); diff -Nru perl-5.32.1/cpan/Digest-MD5/t/bits.t perl-5.34.0/cpan/Digest-MD5/t/bits.t --- perl-5.32.1/cpan/Digest-MD5/t/bits.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Digest-MD5/t/bits.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ #!perl -w +use strict; +use warnings; + use Test qw(plan ok); plan tests => 2; diff -Nru perl-5.32.1/cpan/Digest-MD5/t/clone.t perl-5.34.0/cpan/Digest-MD5/t/clone.t --- perl-5.32.1/cpan/Digest-MD5/t/clone.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Digest-MD5/t/clone.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,10 +1,12 @@ #!perl -w -print "1..6\n"; - use strict; +use warnings; + use Digest::MD5 qw(md5_hex); +print "1..6\n"; + my $a = Digest::MD5->new; $a->add("a"); my $b = $a->clone; diff -Nru perl-5.32.1/cpan/Digest-MD5/t/files.t perl-5.34.0/cpan/Digest-MD5/t/files.t --- perl-5.32.1/cpan/Digest-MD5/t/files.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Digest-MD5/t/files.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,9 +1,10 @@ - -print "1..3\n"; - use strict; +use warnings; + use Digest::MD5 qw(md5 md5_hex md5_base64); +print "1..3\n"; + # To update the EBCDIC section even on a Latin 1 platform, # run this script with $ENV{EBCDIC_MD5SUM} set to a true value. # (You'll need to have Perl 5.7.3 or later, to have the Encode installed.) @@ -14,14 +15,14 @@ if (ord "A" == 193) { # EBCDIC $EXPECT = < 6; + +$^W = 0; # No warnings +{ + local *STDERR; + my $stderr_seen = ""; + open STDERR, '>', \$stderr_seen; + $str = Digest::MD5->md5_hex("foo"); + is($stderr_seen,'','No warnings'); +} + +{ + $^W = 1; # magic turn on warnings + local *STDERR; + my $stderr_seen = ""; + open STDERR, '>', \$stderr_seen; + $str = Digest::MD5->md5_hex("foo"); + like($stderr_seen,qr/Digest::MD5::md5_hex function probably called as class method/, + 'Lexical warning passed to XSUB'); +} + +{ + $^W = 0; # No warnings + local *STDERR; + my $stderr_seen = ""; + open STDERR, '>', \$stderr_seen; + $str = Digest::MD5->md5_hex("foo"); + is($stderr_seen,'','No warnings again'); +} + +{ + use warnings; + local *STDERR; + my $stderr_seen = ""; + open STDERR, '>', \$stderr_seen; + $str = Digest::MD5->md5_hex("foo"); + like($stderr_seen,qr/Digest::MD5::md5_hex function probably called as class method/, + 'use warnings passed to XSUB'); +} + +{ + use strict; + $^W = 0; # No warnings + local *STDERR; + my $stderr_seen = ""; + open STDERR, '>', \$stderr_seen; + my $str = Digest::MD5->md5_hex("foo"); + is($stderr_seen,'','No warnings and strict'); +} + +{ + use strict; + use warnings; + local *STDERR; + my $stderr_seen = ""; + open STDERR, '>', \$stderr_seen; + my $str = Digest::MD5->md5_hex("foo"); + like($stderr_seen, qr/Digest::MD5::md5_hex function probably called as class method/, + 'use warnings passed to XSUB while use strict'); +} + diff -Nru perl-5.32.1/cpan/Encode/bin/encguess perl-5.34.0/cpan/Encode/bin/encguess --- perl-5.32.1/cpan/Encode/bin/encguess 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Encode/bin/encguess 2021-01-20 23:04:44.000000000 +0000 @@ -61,7 +61,7 @@ =head1 VERSION -$Id: encguess,v 0.2 2016/08/04 03:15:58 dankogai Exp $ +$Id: encguess,v 0.3 2020/12/02 01:28:17 dankogai Exp dankogai $ =head1 SYNOPSIS @@ -78,7 +78,7 @@ =item -s specify a list of "suspect encoding types" to test, -seperated by either C<:> or C<,> +separated by either C<:> or C<,> =item -S diff -Nru perl-5.32.1/cpan/Encode/Encode.pm perl-5.34.0/cpan/Encode/Encode.pm --- perl-5.32.1/cpan/Encode/Encode.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Encode/Encode.pm 2021-01-20 23:04:44.000000000 +0000 @@ -1,5 +1,5 @@ # -# $Id: Encode.pm,v 3.06 2020/05/02 02:31:14 dankogai Exp $ +# $Id: Encode.pm,v 3.08 2020/12/02 01:27:44 dankogai Exp $ # package Encode; use strict; @@ -7,7 +7,7 @@ use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG}; our $VERSION; BEGIN { - $VERSION = sprintf "%d.%02d", q$Revision: 3.06 $ =~ /(\d+)/g; + $VERSION = sprintf "%d.%02d", q$Revision: 3.08 $ =~ /(\d+)/g; require XSLoader; XSLoader::load( __PACKAGE__, $VERSION ); } diff -Nru perl-5.32.1/cpan/Encode/lib/Encode/GSM0338.pm perl-5.34.0/cpan/Encode/lib/Encode/GSM0338.pm --- perl-5.32.1/cpan/Encode/lib/Encode/GSM0338.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Encode/lib/Encode/GSM0338.pm 2021-01-20 23:04:44.000000000 +0000 @@ -1,5 +1,5 @@ # -# $Id: GSM0338.pm,v 2.7 2017/06/10 17:23:50 dankogai Exp $ +# $Id: GSM0338.pm,v 2.9 2020/12/02 01:28:17 dankogai Exp dankogai $ # package Encode::GSM0338; @@ -8,19 +8,18 @@ use Carp; use vars qw($VERSION); -$VERSION = do { my @r = ( q$Revision: 2.7 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r }; +$VERSION = do { my @r = ( q$Revision: 2.9 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r }; use Encode qw(:fallbacks); use parent qw(Encode::Encoding); __PACKAGE__->Define('gsm0338'); -sub needs_lines { 1 } -sub perlio_ok { 0 } - use utf8; + +# Mapping table according to 3GPP TS 23.038 version 16.0.0 Release 16 and ETSI TS 123 038 V16.0.0 (2020-07) +# https://www.etsi.org/deliver/etsi_ts/123000_123099/123038/16.00.00_60/ts_123038v160000p.pdf (page 20 and 22) our %UNI2GSM = ( - "\x{0040}" => "\x00", # COMMERCIAL AT "\x{000A}" => "\x0A", # LINE FEED "\x{000C}" => "\x1B\x0A", # FORM FEED "\x{000D}" => "\x0D", # CARRIAGE RETURN @@ -56,6 +55,7 @@ "\x{003D}" => "\x3D", # EQUALS SIGN "\x{003E}" => "\x3E", # GREATER-THAN SIGN "\x{003F}" => "\x3F", # QUESTION MARK + "\x{0040}" => "\x00", # COMMERCIAL AT "\x{0041}" => "\x41", # LATIN CAPITAL LETTER A "\x{0042}" => "\x42", # LATIN CAPITAL LETTER B "\x{0043}" => "\x43", # LATIN CAPITAL LETTER C @@ -82,6 +82,10 @@ "\x{0058}" => "\x58", # LATIN CAPITAL LETTER X "\x{0059}" => "\x59", # LATIN CAPITAL LETTER Y "\x{005A}" => "\x5A", # LATIN CAPITAL LETTER Z + "\x{005B}" => "\x1B\x3C", # LEFT SQUARE BRACKET + "\x{005C}" => "\x1B\x2F", # REVERSE SOLIDUS + "\x{005D}" => "\x1B\x3E", # RIGHT SQUARE BRACKET + "\x{005E}" => "\x1B\x14", # CIRCUMFLEX ACCENT "\x{005F}" => "\x11", # LOW LINE "\x{0061}" => "\x61", # LATIN SMALL LETTER A "\x{0062}" => "\x62", # LATIN SMALL LETTER B @@ -109,16 +113,10 @@ "\x{0078}" => "\x78", # LATIN SMALL LETTER X "\x{0079}" => "\x79", # LATIN SMALL LETTER Y "\x{007A}" => "\x7A", # LATIN SMALL LETTER Z - "\x{000C}" => "\x1B\x0A", # FORM FEED - "\x{005B}" => "\x1B\x3C", # LEFT SQUARE BRACKET - "\x{005C}" => "\x1B\x2F", # REVERSE SOLIDUS - "\x{005D}" => "\x1B\x3E", # RIGHT SQUARE BRACKET - "\x{005E}" => "\x1B\x14", # CIRCUMFLEX ACCENT "\x{007B}" => "\x1B\x28", # LEFT CURLY BRACKET "\x{007C}" => "\x1B\x40", # VERTICAL LINE "\x{007D}" => "\x1B\x29", # RIGHT CURLY BRACKET "\x{007E}" => "\x1B\x3D", # TILDE - "\x{00A0}" => "\x1B", # NO-BREAK SPACE "\x{00A1}" => "\x40", # INVERTED EXCLAMATION MARK "\x{00A3}" => "\x01", # POUND SIGN "\x{00A4}" => "\x24", # CURRENCY SIGN @@ -128,6 +126,7 @@ "\x{00C4}" => "\x5B", # LATIN CAPITAL LETTER A WITH DIAERESIS "\x{00C5}" => "\x0E", # LATIN CAPITAL LETTER A WITH RING ABOVE "\x{00C6}" => "\x1C", # LATIN CAPITAL LETTER AE + "\x{00C7}" => "\x09", # LATIN CAPITAL LETTER C WITH CEDILLA "\x{00C9}" => "\x1F", # LATIN CAPITAL LETTER E WITH ACUTE "\x{00D1}" => "\x5D", # LATIN CAPITAL LETTER N WITH TILDE "\x{00D6}" => "\x5C", # LATIN CAPITAL LETTER O WITH DIAERESIS @@ -138,8 +137,6 @@ "\x{00E4}" => "\x7B", # LATIN SMALL LETTER A WITH DIAERESIS "\x{00E5}" => "\x0F", # LATIN SMALL LETTER A WITH RING ABOVE "\x{00E6}" => "\x1D", # LATIN SMALL LETTER AE - #"\x{00E7}" => "\x09", # LATIN SMALL LETTER C WITH CEDILLA - "\x{00C7}" => "\x09", # LATIN CAPITAL LETTER C WITH CEDILLA "\x{00E8}" => "\x04", # LATIN SMALL LETTER E WITH GRAVE "\x{00E9}" => "\x05", # LATIN SMALL LETTER E WITH ACUTE "\x{00EC}" => "\x07", # LATIN SMALL LETTER I WITH GRAVE @@ -163,58 +160,42 @@ ); our %GSM2UNI = reverse %UNI2GSM; our $ESC = "\x1b"; -our $ATMARK = "\x40"; -our $FBCHAR = "\x3F"; -our $NBSP = "\x{00A0}"; - -#define ERR_DECODE_NOMAP "%s \"\\x%02" UVXf "\" does not map to Unicode" sub decode ($$;$) { my ( $obj, $bytes, $chk ) = @_; return undef unless defined $bytes; my $str = substr($bytes, 0, 0); # to propagate taintedness; while ( length $bytes ) { - my $c = substr( $bytes, 0, 1, '' ); - my $u; - if ( $c eq "\x00" ) { - my $c2 = substr( $bytes, 0, 1, '' ); - $u = - !length $c2 ? $ATMARK - : $c2 eq "\x00" ? "\x{0000}" - : exists $GSM2UNI{$c2} ? $ATMARK . $GSM2UNI{$c2} - : $chk - ? croak sprintf( "\\x%02X\\x%02X does not map to Unicode", - ord($c), ord($c2) ) - : $ATMARK . $FBCHAR; - - } - elsif ( $c eq $ESC ) { - my $c2 = substr( $bytes, 0, 1, '' ); - $u = - exists $GSM2UNI{ $c . $c2 } ? $GSM2UNI{ $c . $c2 } - : exists $GSM2UNI{$c2} ? $NBSP . $GSM2UNI{$c2} - : $chk - ? croak sprintf( "\\x%02X\\x%02X does not map to Unicode", - ord($c), ord($c2) ) - : $NBSP . $FBCHAR; - } - else { - $u = - exists $GSM2UNI{$c} - ? $GSM2UNI{$c} - : $chk ? ref $chk eq 'CODE' - ? $chk->( ord $c ) - : croak sprintf( "\\x%02X does not map to Unicode", ord($c) ) - : $FBCHAR; + my $seq = ''; + my $c; + do { + $c = substr( $bytes, 0, 1, '' ); + $seq .= $c; + } while ( length $bytes and $c eq $ESC ); + my $u = + exists $GSM2UNI{$seq} + ? $GSM2UNI{$seq} + : ($chk && ref $chk eq 'CODE') + ? $chk->( unpack 'C*', $seq ) + : "\x{FFFD}"; + if ( not exists $GSM2UNI{$seq} and $chk and not ref $chk ) { + if ( substr($seq, 0, 1) eq $ESC and ($chk & Encode::STOP_AT_PARTIAL) ) { + $bytes .= $seq; + last; + } + croak join( '', map { sprintf "\\x%02X", $_ } unpack 'C*', $seq ) . ' does not map to Unicode' if $chk & Encode::DIE_ON_ERR; + carp join( '', map { sprintf "\\x%02X", $_ } unpack 'C*', $seq ) . ' does not map to Unicode' if $chk & Encode::WARN_ON_ERR; + if ($chk & Encode::RETURN_ON_ERR) { + $bytes .= $seq; + last; + } } $str .= $u; } - $_[1] = $bytes if $chk; + $_[1] = $bytes if not ref $chk and $chk and !($chk & Encode::LEAVE_SRC); return $str; } -#define ERR_ENCODE_NOMAP "\"\\x{%04" UVxf "}\" does not map to %s" - sub encode($$;$) { my ( $obj, $str, $chk ) = @_; return undef unless defined $str; @@ -222,16 +203,23 @@ while ( length $str ) { my $u = substr( $str, 0, 1, '' ); my $c; - $bytes .= - exists $UNI2GSM{$u} - ? $UNI2GSM{$u} - : $chk ? ref $chk eq 'CODE' - ? $chk->( ord($u) ) - : croak sprintf( "\\x{%04x} does not map to %s", - ord($u), $obj->name ) - : $FBCHAR; + my $seq = + exists $UNI2GSM{$u} + ? $UNI2GSM{$u} + : ($chk && ref $chk eq 'CODE') + ? $chk->( ord($u) ) + : $UNI2GSM{'?'}; + if ( not exists $UNI2GSM{$u} and $chk and not ref $chk ) { + croak sprintf( "\\x{%04x} does not map to %s", ord($u), $obj->name ) if $chk & Encode::DIE_ON_ERR; + carp sprintf( "\\x{%04x} does not map to %s", ord($u), $obj->name ) if $chk & Encode::WARN_ON_ERR; + if ($chk & Encode::RETURN_ON_ERR) { + $str .= $u; + last; + } + } + $bytes .= $seq; } - $_[1] = $str if $chk; + $_[1] = $str if not ref $chk and $chk and !($chk & Encode::LEAVE_SRC); return $bytes; } @@ -240,13 +228,13 @@ =head1 NAME -Encode::GSM0338 -- ESTI GSM 03.38 Encoding +Encode::GSM0338 -- ETSI GSM 03.38 Encoding =head1 SYNOPSIS - use Encode qw/encode decode/; - $gsm0338 = encode("gsm0338", $utf8); # loads Encode::GSM0338 implicitly - $utf8 = decode("gsm0338", $gsm0338); # ditto + use Encode qw/encode decode/; + $gsm0338 = encode("gsm0338", $unicode); # loads Encode::GSM0338 implicitly + $unicode = decode("gsm0338", $gsm0338); # ditto =head1 DESCRIPTION @@ -259,35 +247,42 @@ unusual specifications, Encode 2.20 has relocated the support to this module. -=head1 NOTES - -Unlike most other encodings, the following always croaks on error -for any $chk that evaluates to true. - - $gsm0338 = encode("gsm0338", $utf8 $chk); - $utf8 = decode("gsm0338", $gsm0338, $chk); - -So if you want to check the validity of the encoding, surround the -expression with C block as follows; - - eval { - $utf8 = decode("gsm0338", $gsm0338, $chk); - } or do { - # handle exception here - }; +This module implements only I and +I according to standard +3GPP TS 23.038 version 16. Therefore I +and I are not implemented nor supported. + +=head2 Septets + +This modules operates with octets (like any other Encode module) and not +with packed septets (unlike other GSM standards). Therefore for processing +binary SMS or parts of GSM TPDU payload (3GPP TS 23.040) it is needed to do +conversion between octets and packed septets. For this purpose perl's C +and C functions may be useful: + + $bytes = substr(pack('(b*)*', unpack '(A7)*', unpack 'b*', $septets), 0, $num_of_septets); + $unicode = decode('GSM0338', $bytes); + + $bytes = encode('GSM0338', $unicode); + $septets = pack 'b*', join '', map { substr $_, 0, 7 } unpack '(A8)*', unpack 'b*', $bytes; + $num_of_septets = length $bytes; + +Please note that for correct decoding of packed septets it is required to +know number of septets packed in binary buffer as binary buffer is always +padded with zero bits and 7 zero bits represents character C<@>. Number +of septets is also stored in TPDU payload when dealing with 3GPP TS 23.040. =head1 BUGS -ESTI GSM 03.38 Encoding itself. +Encode::GSM0338 2.7 and older versions (part of Encode 3.06) incorrectly +handled zero bytes (character C<@>). This was fixed in Encode::GSM0338 +version 2.8 (part of Encode 3.07). -Mapping \x00 to '@' causes too much pain everywhere. - -Its use of \x1b (escape) is also very questionable. +=head1 SEE ALSO -Because of those two, the code paging approach used use in ucm-based -Encoding SOMETIMES fails so this module was written. +L<3GPP TS 23.038|https://www.3gpp.org/dynareport/23038.htm> -=head1 SEE ALSO +L L diff -Nru perl-5.32.1/cpan/Encode/Makefile.PL perl-5.34.0/cpan/Encode/Makefile.PL --- perl-5.32.1/cpan/Encode/Makefile.PL 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Encode/Makefile.PL 2021-01-20 23:04:44.000000000 +0000 @@ -1,5 +1,5 @@ # -# $Id: Makefile.PL,v 2.22 2017/10/06 22:21:53 dankogai Exp $ +# $Id: Makefile.PL,v 2.23 2020/12/02 01:28:17 dankogai Exp dankogai $ # use 5.007003; use strict; @@ -70,7 +70,7 @@ Storable => '0', # bundled with Perl 5.7.3 }, TEST_REQUIRES => { - 'Test::More' => '0.81_01', + 'Test::More' => '0.92', }, PMLIBDIRS => \@pmlibdirs, INSTALLDIRS => ($] < 5.011 ? 'perl' : 'site'), diff -Nru perl-5.32.1/cpan/Encode/t/gsm0338.t perl-5.34.0/cpan/Encode/t/gsm0338.t --- perl-5.32.1/cpan/Encode/t/gsm0338.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Encode/t/gsm0338.t 2021-01-20 23:04:44.000000000 +0000 @@ -13,21 +13,15 @@ use strict; use utf8; -use Test::More tests => 780; +use Test::More tests => 777; use Encode; use Encode::GSM0338; -# The specification of GSM 03.38 is not awfully clear. -# (http://www.unicode.org/Public/MAPPINGS/ETSI/GSM0338.TXT) -# The various combinations of 0x00 and 0x1B as leading bytes -# are unclear, as is the semantics of those bytes as standalone -# or as final single bytes. - - my $chk = Encode::LEAVE_SRC(); # escapes -# see http://www.csoft.co.uk/sms/character_sets/gsm.htm +# see https://www.3gpp.org/dynareport/23038.htm +# see https://www.etsi.org/deliver/etsi_ts/123000_123099/123038/15.00.00_60/ts_123038v150000p.pdf (page 22) my %esc_seq = ( "\x{20ac}" => "\x1b\x65", "\x0c" => "\x1b\x0A", @@ -51,26 +45,20 @@ } for my $c ( map { chr } 0 .. 127 ) { + next if $c eq "\x1B"; # escape character, start of multibyte sequence my $u = $Encode::GSM0338::GSM2UNI{$c}; # default character set is decode( "gsm0338", $c, $chk ), $u, sprintf( "decode \\x%02X", ord($c) ); - eval { decode( "gsm0338", $c . "\xff", $chk ) }; + eval { decode( "gsm0338", $c . "\xff", $chk | Encode::FB_CROAK ) }; ok( $@, $@ ); is encode( "gsm0338", $u, $chk ), $c, sprintf( "encode %s", eu($u) ); - eval { encode( "gsm0338", $u . "\x{3000}", $chk ) }; + eval { encode( "gsm0338", $u . "\x{3000}", $chk | Encode::FB_CROAK ) }; ok( $@, $@ ); - # nasty atmark - if ( $c eq "\x00" ) { - is decode( "gsm0338", "\x00" . $c, $chk ), "\x00", - sprintf( '@@ =>: \x00+\x%02X', ord($c) ); - } - else { is decode( "gsm0338", "\x00" . $c ), '@' . decode( "gsm0338", $c ), sprintf( '@: decode \x00+\x%02X', ord($c) ); - } # escape seq. my $ecs = "\x1b" . $c; @@ -82,7 +70,7 @@ } else { is decode( "gsm0338", $ecs, $chk ), - "\xA0" . decode( "gsm0338", $c ), + "\x{FFFD}", sprintf( "decode ESC+\\x%02X", ord($c) ); } } @@ -91,49 +79,13 @@ is decode("gsm0338", "\x09") => chr(0xC7), 'RT75670: decode'; is encode("gsm0338", chr(0xC7)) => "\x09", 'RT75670: encode'; -__END__ -for my $c (map { chr } 0..127){ - my $b = "\x1b$c"; - my $u = $Encode::GSM0338::GSM2UNI{$b}; - next unless $u; - $u ||= "\xA0" . $Encode::GSM0338::GSM2UNI{$c}; - is decode("gsm0338", $b), $u, sprintf("decode ESC+\\x%02X", ord($c) ); -} - -__END__ -# old test follows -ub t { is(decode("gsm0338", my $t = $_[0]), $_[1]) } - -# t("\x00", "\x00"); # ??? - -# "Round-trip". -t("\x41", "\x41"); - -t("\x01", "\xA3"); -t("\x02", "\x24"); -t("\x03", "\xA5"); -t("\x09", "\xE7"); - -t("\x00\x00", "\x00\x00"); # Maybe? -t("\x00\x1B", "\x40\xA0"); # Maybe? -t("\x00\x41", "\x40\x41"); - -# t("\x1B", "\x1B"); # ??? - -# Escape with no special second byte is just a NBSP. -t("\x1B\x41", "\xA0\x41"); - -t("\x1B\x00", "\xA0\x40"); # Maybe? - -# Special escape characters. -t("\x1B\x0A", "\x0C"); -t("\x1B\x14", "\x5E"); -t("\x1B\x28", "\x7B"); -t("\x1B\x29", "\x7D"); -t("\x1B\x2F", "\x5C"); -t("\x1B\x3C", "\x5B"); -t("\x1B\x3D", "\x7E"); -t("\x1B\x3E", "\x5D"); -t("\x1B\x40", "\x7C"); -t("\x1B\x40", "\x7C"); -t("\x1B\x65", "\x{20AC}"); +# https://rt.cpan.org/Public/Bug/Display.html?id=124571 +is decode("gsm0338", encode('gsm0338', '..@@..')), '..@@..'; +is decode("gsm0338", encode('gsm0338', '..@€..')), '..@€..'; + +# special GSM sequence, € is at 1024 byte buffer boundary +my $gsm = "\x41" . "\x1B\x65" x 1024; +open my $fh, '<:encoding(gsm0338)', \$gsm or die; +my $uni = <$fh>; +close $fh; +is $uni, "A" . "€" x 1024, 'PerlIO encoding(gsm0338) read works'; diff -Nru perl-5.32.1/cpan/experimental/lib/experimental.pm perl-5.34.0/cpan/experimental/lib/experimental.pm --- perl-5.32.1/cpan/experimental/lib/experimental.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/experimental/lib/experimental.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,5 +1,5 @@ package experimental; -$experimental::VERSION = '0.020'; +$experimental::VERSION = '0.024'; use strict; use warnings; use version (); @@ -26,6 +26,7 @@ declared_refs => '5.26.0', evalbytes => '5.16.0', fc => '5.16.0', + isa => '5.31.7', lexical_topic => '5.10.0', lexical_subs => '5.18.0', postderef => '5.20.0', @@ -37,16 +38,18 @@ signatures => '5.20.0', state => '5.10.0', switch => '5.10.0', + try => '5.33.6', unicode_eval => '5.16.0', unicode_strings => '5.12.0', ); -my %max_version = ( +my %removed_in_version = ( + array_base => '5.29.4', autoderef => '5.23.1', lexical_topic => '5.23.4', ); $_ = version->new($_) for values %min_version; -$_ = version->new($_) for values %max_version; +$_ = version->new($_) for values %removed_in_version; my %additional = ( postderef => ['postderef_qq'], @@ -77,8 +80,8 @@ } croak "Need perl $stable or later for feature $pragma"; } - elsif ($] >= ($max_version{$pragma} || 7)) { - croak "Experimental feature $pragma has been removed from perl in version $max_version{$pragma}"; + elsif ($] >= ($removed_in_version{$pragma} || 7)) { + croak "Experimental feature $pragma has been removed from perl in version $removed_in_version{$pragma}"; } } @@ -132,7 +135,7 @@ =head1 VERSION -version 0.020 +version 0.024 =head1 SYNOPSIS @@ -181,6 +184,14 @@ This was added in perl 5.22.0. +=item * C - enables aliasing via assignment to references + +This was added in perl 5.26.0. + +=item * C - allow the use of the C infix operator + +This was added in perl 5.32.0. + =item * C - allow the use of lexical C<$_> via C. This was added in perl 5.10.0 and removed in perl 5.23.4. @@ -189,10 +200,13 @@ This was added in 5.18.0. -=item * C - allow the use of postfix dereferencing expressions, -including in interpolating strings +=item * C - allow the use of postfix dereferencing expressions -This was added in perl 5.20.0. +This was added in perl 5.20.0, and became non-experimental (and always enabled) in 5.24.0. + +=item * C - allow the use of postfix dereferencing expressions inside interpolating strings + +This was added in perl 5.20.0, and became non-experimental (and always enabled) in 5.24.0. =item * C - enables strict mode in regular expressions @@ -252,7 +266,7 @@ =head1 SEE ALSO -L contains more information about experimental features. +L contains more information about experimental features. =head1 AUTHOR diff -Nru perl-5.32.1/cpan/experimental/t/basic.t perl-5.34.0/cpan/experimental/t/basic.t --- perl-5.32.1/cpan/experimental/t/basic.t 2020-12-18 09:58:26.000000000 +0000 +++ perl-5.34.0/cpan/experimental/t/basic.t 2021-05-04 06:52:48.000000000 +0000 @@ -5,6 +5,8 @@ use Test::More 0.89; +plan skip_all => 'This module is a no-op on perls earlier than 5.010' if "$]" < 5.010000; + local $SIG{__WARN__} = sub { fail("Got unexpected warning"); diag($_[0]) }; if ($] >= 5.010000) { @@ -17,45 +19,26 @@ } if ($] >= 5.010001) { - if (eval ' - no warnings "experimental"; - use feature "switch"; - if(0) { when(3) {} } - 1; - ') { - is (eval <<'END', 1, 'switch compiles') or diag $@; - use experimental 'switch'; - sub bar { 1 }; - given(1) { - when (\&bar) { - pass("bar matches 1"); - } - default { - fail("bar matches 1"); - } + is (eval <<'END', 1, 'switch compiles') or diag $@; + use experimental 'switch'; + sub bar { 1 }; + given(1) { + when (\&bar) { + pass("bar matches 1"); } - 1; -END - } else { - is (eval <<'END', 1, 'switch compiles') or diag $@; - use experimental 'switch'; - sub bar { 1 }; - given(1) { - whereso (\&bar) { - pass("bar matches 1"); - } + default { fail("bar matches 1"); } - 1; -END } + 1; +END } if ($] >= 5.010001) { is (eval <<'END', 1, 'smartmatch compiles') or diag $@; use experimental 'smartmatch'; - { package Baz; use overload "~~" => sub { 1 }; } - is(1 ~~ bless({}, "Baz"), 1, "is 1"); + sub baz { 1 }; + is(1 ~~ \&baz, 1, "is 1"); 1; END } diff -Nru perl-5.32.1/cpan/ExtUtils-Constant/t/Constant.t perl-5.34.0/cpan/ExtUtils-Constant/t/Constant.t --- perl-5.32.1/cpan/ExtUtils-Constant/t/Constant.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-Constant/t/Constant.t 2020-10-04 22:17:12.000000000 +0000 @@ -435,7 +435,7 @@ print FH ");\n"; # Print the AUTOLOAD subroutine ExtUtils::Constant generated for us print FH autoload ($package, $]); - print FH "bootstrap $package \$VERSION;\n1;\n__END__\n"; + print FH "$package->bootstrap(\$VERSION);\n1;\n__END__\n"; close FH or die "close $pm: $!\n"; ################ test.pl diff -Nru perl-5.32.1/cpan/ExtUtils-Install/lib/ExtUtils/Installed.pm perl-5.34.0/cpan/ExtUtils-Install/lib/ExtUtils/Installed.pm --- perl-5.32.1/cpan/ExtUtils-Install/lib/ExtUtils/Installed.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-Install/lib/ExtUtils/Installed.pm 2021-01-20 23:04:44.000000000 +0000 @@ -1,7 +1,6 @@ +use strict; package ExtUtils::Installed; -use 5.00503; -use strict; #use warnings; # XXX requires 5.6 use Carp qw(); use ExtUtils::Packlist; @@ -16,8 +15,7 @@ require VMS::Filespec if $Is_VMS; -use vars qw($VERSION); -$VERSION = '2.14'; +our $VERSION = '2.20'; $VERSION = eval $VERSION; sub _is_prefix { @@ -309,7 +307,7 @@ return($self->{$module}{version}); } -sub debug_dump { +sub _debug_dump { my ($self, $module) = @_; $self= $self->new(default=>1) if !ref $self; local $self->{":private:"}{Config}; diff -Nru perl-5.32.1/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm perl-5.34.0/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm --- perl-5.32.1/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm 2021-01-20 23:04:44.000000000 +0000 @@ -32,11 +32,11 @@ =head1 VERSION -2.14 +2.20 =cut -our $VERSION = '2.14'; # <-- do not forget to update the POD section just above this line! +our $VERSION = '2.20'; # <-- do not forget to update the POD section just above this line! $VERSION = eval $VERSION; =pod @@ -65,35 +65,31 @@ has occurred. If this value is defined but false then such an operation has -ocurred, but should not impact later operations. - -=over +occurred, but should not impact later operations. =begin _private -=item _chmod($$;$) +=head2 _chmod($$;$) Wrapper to chmod() for debugging and error trapping. -=item _warnonce(@) +=head2 _warnonce(@) Warns about something only once. -=item _choke(@) +=head2 _choke(@) Dies with a special message. -=back - =end _private =cut BEGIN { - *Is_VMS = $^O eq 'VMS' ? sub(){1} : sub(){0}; - *Is_Win32 = $^O eq 'MSWin32' ? sub(){1} : sub(){0}; - *Is_cygwin = $^O eq 'cygwin' ? sub(){1} : sub(){0}; - *CanMoveAtBoot = ($^O eq 'MSWin32' || $^O eq 'cygwin') ? sub(){1} : sub(){0}; + *_Is_VMS = $^O eq 'VMS' ? sub(){1} : sub(){0}; + *_Is_Win32 = $^O eq 'MSWin32' ? sub(){1} : sub(){0}; + *_Is_cygwin = $^O eq 'cygwin' ? sub(){1} : sub(){0}; + *_CanMoveAtBoot = ($^O eq 'MSWin32' || $^O eq 'cygwin') ? sub(){1} : sub(){0}; } my $Inc_uninstall_warn_handler; @@ -137,8 +133,12 @@ } sub _compare { - require File::Compare; - File::Compare::compare(@_); + # avoid loading File::Compare in the common case + if (-f $_[1] && -s _ == -s $_[0]) { + require File::Compare; + return File::Compare::compare(@_); + } + return 1; } @@ -157,9 +157,7 @@ =begin _private -=over - -=item _move_file_at_boot( $file, $target, $moan ) +=head2 _move_file_at_boot( $file, $target, $moan ) OS-Specific, Win32/Cygwin @@ -184,15 +182,15 @@ sub _move_file_at_boot { #XXX OS-SPECIFIC my ( $file, $target, $moan )= @_; _confess("Panic: Can't _move_file_at_boot on this platform!") - unless CanMoveAtBoot; + unless _CanMoveAtBoot; my $descr= ref $target ? "'$file' for deletion" : "'$file' for installation as '$target'"; - # *note* CanMoveAtBoot is only incidentally the same condition as below + # *note* _CanMoveAtBoot is only incidentally the same condition as below # this needs not hold true in the future. - $Has_Win32API_File = (Is_Win32 || Is_cygwin) + $Has_Win32API_File = (_Is_Win32 || _Is_cygwin) ? (eval {require Win32API::File; 1} || 0) : 0 unless defined $Has_Win32API_File; if ( ! $Has_Win32API_File ) { @@ -231,8 +229,7 @@ =begin _private - -=item _unlink_or_rename( $file, $tryhard, $installing ) +=head2 _unlink_or_rename( $file, $tryhard, $installing ) OS-Specific, Win32/Cygwin @@ -263,8 +260,6 @@ =cut - - sub _unlink_or_rename { #XXX OS-SPECIFIC my ( $file, $tryhard, $installing )= @_; @@ -282,7 +277,7 @@ my $error="$!"; _choke("Cannot unlink '$file': $!") - unless CanMoveAtBoot && $tryhard; + unless _CanMoveAtBoot && $tryhard; my $tmp= "AAA"; ++$tmp while -e "$file.$tmp"; @@ -310,25 +305,16 @@ } - -=pod - -=back - -=head2 Functions +=head1 Functions =begin _private -=over - -=item _get_install_skip +=head2 _get_install_skip Handles loading the INSTALL.SKIP file. Returns an array of patterns to use. =cut - - sub _get_install_skip { my ( $skip, $verbose )= @_; if ($ENV{EU_INSTALL_IGNORE_SKIP}) { @@ -378,9 +364,7 @@ return $skip } -=pod - -=item _have_write_access +=head2 _have_write_access Abstract a -w check that tries to use POSIX::access() if possible. @@ -391,7 +375,7 @@ sub _have_write_access { my $dir=shift; unless (defined $has_posix) { - $has_posix = (!Is_cygwin && !Is_Win32 + $has_posix = (!_Is_cygwin && !_Is_Win32 && eval { local $^W; require POSIX; 1} ) || 0; } if ($has_posix) { @@ -402,9 +386,7 @@ } } -=pod - -=item _can_write_dir(C<$dir>) +=head2 _can_write_dir(C<$dir>) Checks whether a given directory is writable, taking account the possibility that the directory might not exist and would have to @@ -423,7 +405,6 @@ =cut - sub _can_write_dir { my $dir=shift; return @@ -437,7 +418,7 @@ my $path=''; my @make; while (@dirs) { - if (Is_VMS) { + if (_Is_VMS) { $dir = File::Spec->catdir($vol,@dirs); } else { @@ -461,9 +442,7 @@ return 0; } -=pod - -=item _mkpath($dir,$show,$mode,$verbose,$dry_run) +=head2 _mkpath($dir,$show,$mode,$verbose,$dry_run) Wrapper around File::Path::mkpath() to handle errors. @@ -486,10 +465,16 @@ printf "mkpath(%s,%d,%#o)\n", $dir, $show, $mode; } if (!$dry_run) { - if ( ! eval { File::Path::mkpath($dir,$show,$mode); 1 } ) { - _choke("Can't create '$dir'","$@"); + my @created; + eval { + @created = File::Path::mkpath($dir,$show,$mode); + 1; + } or _choke("Can't create '$dir'","$@"); + # if we created any directories, we were able to write and don't need + # extra checks + if (@created) { + return; } - } my ($can,$root,@make)=_can_write_dir($dir); if (!$can) { @@ -509,9 +494,7 @@ } -=pod - -=item _copy($from,$to,$verbose,$dry_run) +=head2 _copy($from,$to,$verbose,$dry_run) Wrapper around File::Copy::copy to handle errors. @@ -523,7 +506,6 @@ =cut - sub _copy { my ( $from, $to, $verbose, $dry_run)=@_; if ($verbose && $verbose>1) { @@ -537,7 +519,7 @@ =pod -=item _chdir($from) +=head2 _chdir($from) Wrapper around chdir to catch errors. @@ -558,15 +540,9 @@ return $ret; } -=pod - -=back - =end _private -=over - -=item B +=head2 install # deprecated forms install(\%from_to); @@ -774,15 +750,9 @@ } # we have to do this for back compat with old File::Finds # and because the target is relative - my $save_cwd = _chdir($cwd); - my $diff = 0; - # XXX: I wonder how useful this logic is actually -- demerphq - if ( $always_copy or !-f $targetfile or -s $targetfile != $size) { - $diff++; - } else { - # we might not need to copy this file - $diff = _compare($sourcefile, $targetfile); - } + my $save_cwd = File::Spec->catfile($cwd, $sourcedir); + _chdir($cwd); + my $diff = $always_copy || _compare($sourcefile, $targetfile); $check_dirs{$targetdir}++ unless -w $targetfile; @@ -822,7 +792,7 @@ #XXX OS-SPECIFIC print "utime($atime,$mtime,$targetfile)\n" if $verbose>1; - utime($atime,$mtime + Is_VMS,$targetfile) unless $dry_run>1; + utime($atime,$mtime + _Is_VMS,$targetfile) unless $dry_run>1; $mode = 0444 | ( $mode & 0111 ? 0111 : 0 ); @@ -864,7 +834,7 @@ =begin _private -=item _do_cleanup +=head2 _do_cleanup Standardize finish event for after another instruction has occurred. Handles converting $MUST_REBOOT to a die for instance. @@ -887,12 +857,12 @@ =begin _undocumented -=item install_rooted_file( $file ) +=head2 install_rooted_file( $file ) Returns $file, or catfile($INSTALL_ROOT,$file) if $INSTALL_ROOT is defined. -=item install_rooted_dir( $dir ) +=head2 install_rooted_dir( $dir ) Returns $dir, or catdir($INSTALL_ROOT,$dir) if $INSTALL_ROOT is defined. @@ -901,7 +871,6 @@ =cut - sub install_rooted_file { if (defined $INSTALL_ROOT) { File::Spec->catfile($INSTALL_ROOT, $_[0]); @@ -921,7 +890,7 @@ =begin _undocumented -=item forceunlink( $file, $tryhard ) +=head2 forceunlink( $file, $tryhard ) Tries to delete a file. If $tryhard is true then we will use whatever devious tricks we can to delete the file. Currently this only applies to @@ -932,7 +901,6 @@ =cut - sub forceunlink { my ( $file, $tryhard )= @_; #XXX OS-SPECIFIC _unlink_or_rename( $file, $tryhard, not("installing") ); @@ -940,7 +908,7 @@ =begin _undocumented -=item directory_not_empty( $dir ) +=head2 directory_not_empty( $dir ) Returns 1 if there is an .exists file somewhere in a directory tree. Returns 0 if there is not. @@ -963,9 +931,9 @@ return $files; } -=pod +=head2 install_default -=item B I +I install_default(); install_default($fullext); @@ -1019,7 +987,7 @@ } -=item B +=head2 uninstall uninstall($packlist_file); uninstall($packlist_file, $verbose, $dont_execute); @@ -1057,7 +1025,7 @@ =begin _undocumented -=item inc_uninstall($filepath,$libdir,$verbose,$dry_run,$ignore,$results) +=head2 inc_uninstall($filepath,$libdir,$verbose,$dry_run,$ignore,$results) Remove shadowed files. If $ignore is true then it is assumed to hold a filename to ignore. This is used to prevent spurious warnings from @@ -1094,7 +1062,7 @@ #warn join "\n","---",@dirs,"---"; my $seen_ours; foreach $dir ( @dirs ) { - my $canonpath = Is_VMS ? $dir : File::Spec->canonpath($dir); + my $canonpath = _Is_VMS ? $dir : File::Spec->canonpath($dir); next if $canonpath eq $Curdir; next if $seen_dir{$canonpath}++; my $targetfile = File::Spec->catfile($canonpath,$libdir,$file); @@ -1103,13 +1071,8 @@ # The reason why we compare file's contents is, that we cannot # know, which is the file we just installed (AFS). So we leave # an identical file in place - my $diff = 0; - if ( -f $targetfile && -s _ == -s $filepath) { - # We have a good chance, we can skip this one - $diff = _compare($filepath,$targetfile); - } else { - $diff++; - } + my $diff = _compare($filepath,$targetfile); + print "#$file and $targetfile differ\n" if $diff && $verbose > 1; if (!$diff or $targetfile eq $ignore) { @@ -1150,7 +1113,7 @@ =begin _undocumented -=item run_filter($cmd,$src,$dest) +=head2 run_filter($cmd,$src,$dest) Filter $src using $cmd into $dest. @@ -1172,9 +1135,7 @@ close CMD or die "Filter command '$cmd' failed for $src"; } -=pod - -=item B +=head2 pm_to_blib pm_to_blib(\%from_to); pm_to_blib(\%from_to, $autosplit_dir); @@ -1199,6 +1160,7 @@ sub pm_to_blib { my($fromto,$autodir,$pm_filter) = @_; + my %dirs; _mkpath($autodir,0,0755) if defined $autodir; while(my($from, $to) = each %$fromto) { if( -f $to && -s $from == -s $to && -M $to < -M $from ) { @@ -1214,7 +1176,7 @@ my $need_filtering = defined $pm_filter && length $pm_filter && $from =~ /\.pm$/; - if (!$need_filtering && 0 == _compare($from,$to)) { + if (!$need_filtering && !_compare($from,$to)) { print "Skip $to (unchanged)\n" unless $INSTALL_QUIET; next; } @@ -1222,7 +1184,10 @@ # we wont try hard here. its too likely to mess things up. forceunlink($to); } else { - _mkpath(dirname($to),0,0755); + my $dirname = dirname($to); + if (!$dirs{$dirname}++) { + _mkpath($dirname,0,0755); + } } if ($need_filtering) { run_filter($pm_filter, $from, $to); @@ -1232,17 +1197,16 @@ print "cp $from $to\n" unless $INSTALL_QUIET; } my($mode,$atime,$mtime) = (stat $from)[2,8,9]; - utime($atime,$mtime+Is_VMS,$to); + utime($atime,$mtime+_Is_VMS,$to); _chmod(0444 | ( $mode & 0111 ? 0111 : 0 ),$to); next unless $from =~ /\.pm$/; _autosplit($to,$autodir) if defined $autodir; } } - =begin _private -=item _autosplit +=head2 _autosplit From 1.0307 back, AutoSplit will sometimes leave an open filehandle to the file being split. This causes problems on systems with mandatory @@ -1285,7 +1249,7 @@ $plural = $i>1 ? "all those files" : "this file"; my $inst = (_invokant() eq 'ExtUtils::MakeMaker') ? ( $Config::Config{make} || 'make' ).' install' - . ( ExtUtils::Install::Is_VMS ? '/MACRO="UNINST"=1' : ' UNINST=1' ) + . ( ExtUtils::Install::_Is_VMS ? '/MACRO="UNINST"=1' : ' UNINST=1' ) : './Build install uninst=1'; print "## Running '$inst' will unlink $plural for you.\n"; } @@ -1293,7 +1257,7 @@ =begin _private -=item _invokant +=head2 _invokant Does a heuristic on the stack to see who called us for more intelligent error messages. Currently assumes we will be called only by Module::Build @@ -1320,10 +1284,6 @@ return $builder; } -=pod - -=back - =head1 ENVIRONMENT =over 4 diff -Nru perl-5.32.1/cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm perl-5.34.0/cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm --- perl-5.32.1/cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm 2021-01-20 23:04:44.000000000 +0000 @@ -1,11 +1,10 @@ package ExtUtils::Packlist; - -use 5.00503; use strict; + use Carp qw(); use Config; -use vars qw($VERSION $Relocations); -$VERSION = '2.14'; +our $Relocations; +our $VERSION = '2.20'; $VERSION = eval $VERSION; # Used for generating filehandle globs. IO::File might not be available! diff -Nru perl-5.32.1/cpan/ExtUtils-Install/t/Installapi2.t perl-5.34.0/cpan/ExtUtils-Install/t/Installapi2.t --- perl-5.32.1/cpan/ExtUtils-Install/t/Installapi2.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-Install/t/Installapi2.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,5 @@ #!/usr/bin/perl -w +use strict; # Test ExtUtils::Install. @@ -6,7 +7,6 @@ unshift @INC, 't/lib'; } -use strict; use TieOut; use File::Path; use File::Spec; diff -Nru perl-5.32.1/cpan/ExtUtils-Install/t/Installed.t perl-5.34.0/cpan/ExtUtils-Install/t/Installed.t --- perl-5.32.1/cpan/ExtUtils-Install/t/Installed.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-Install/t/Installed.t 2021-01-20 23:04:44.000000000 +0000 @@ -1,20 +1,24 @@ #!/usr/bin/perl -w +use strict; + +# Test ExtUtils::Installed BEGIN { + # For backwards compatibility, use bundled version of Test::More unshift @INC, 't/lib/'; } my $Is_VMS = $^O eq 'VMS'; -use strict; use Config; use Cwd; use File::Path; use File::Basename; use File::Spec; +use File::Temp qw[tempdir]; -use Test::More tests => 73; +use Test::More tests => 76; BEGIN { use_ok( 'ExtUtils::Installed' ) } @@ -32,6 +36,10 @@ '_is_prefix() should match valid path prefix' ); ok( !$ei->_is_prefix('\foo\bar', '\bar'), '... should not match wrong prefix' ); +ok( ! defined $ei->_is_prefix( undef, 'foo' ), + '_is_prefix() needs two defined arguments' ); +ok( ! defined $ei->_is_prefix( 'foo/bar', undef ), + '_is_prefix() needs two defined arguments' ); # _is_type ok( $ei->_is_type(0, 'all'), '_is_type() should be true for type of "all"' ); @@ -63,7 +71,7 @@ SKIP: { skip('no man directories on this system', 1) unless $mandirs; is( $ei->_is_type('bar', 'doc'), 0, - '... should not find doc file outside path' ); + '... should not find doc file outside path' ); } ok( !$ei->_is_type('bar', 'prog'), @@ -77,268 +85,276 @@ ok( !$ei->_is_under('foo', @under), '... should find no file not under dirs'); ok( $ei->_is_under('baz', @under), '... should find file under dir' ); +my $startdir = cwd(); +END { ok(chdir $startdir, "Return to where we started"); } -rmtree 'auto/FakeMod'; -ok( mkpath('auto/FakeMod') ); -END { rmtree 'auto' } +{ + my $tmpdir = tempdir( CLEANUP => 1 ); + chdir $tmpdir; -ok(open(PACKLIST, '>auto/FakeMod/.packlist')); -print PACKLIST 'list'; -close PACKLIST; + my $fakedir = 'FakeMod'; + my $fakepath = File::Spec->catdir('auto', $fakedir); + ok( mkpath($fakepath), "Able to create directory $fakepath for testing" ); + + ok(open(PACKLIST, '>', File::Spec->catfile($fakepath, '.packlist')), + "Able to open .packlist for writing"); + print PACKLIST 'list'; + close PACKLIST; -ok(open(FAKEMOD, '>auto/FakeMod/FakeMod.pm')); + ok(open(FAKEMOD, '>', File::Spec->catfile($fakepath, 'FakeMod.pm')), + "Able to open FakeMod.pm for writing"); -print FAKEMOD <<'FAKE'; + print FAKEMOD <<'FAKE'; package FakeMod; -use vars qw( $VERSION ); -$VERSION = '1.1.1'; +our $VERSION = '1.1.1'; 1; FAKE -close FAKEMOD; + close FAKEMOD; -my $fake_mod_dir = File::Spec->catdir(cwd(), 'auto', 'FakeMod'); -{ - # avoid warning and death by localizing glob - local *ExtUtils::Installed::Config; - %ExtUtils::Installed::Config = ( - %Config, - archlibexp => cwd(), - sitearchexp => $fake_mod_dir, - ); - - # should find $fake_mod_dir via '.' in @INC - - local @INC = @INC; - push @INC, '.' if not $INC[-1] eq '.'; - - my $realei = ExtUtils::Installed->new(); - isa_ok( $realei, 'ExtUtils::Installed' ); - isa_ok( $realei->{Perl}{packlist}, 'ExtUtils::Packlist' ); - is( $realei->{Perl}{version}, $Config{version}, - 'new() should set Perl version from %Config' ); - - ok( exists $realei->{FakeMod}, 'new() should find modules with .packlists'); - isa_ok( $realei->{FakeMod}{packlist}, 'ExtUtils::Packlist' ); - is( $realei->{FakeMod}{version}, '1.1.1', - '... should find version in modules' ); -} + my $fake_mod_dir = File::Spec->catdir(cwd(), $fakepath); + { + # avoid warning and death by localizing glob + local *ExtUtils::Installed::Config; + %ExtUtils::Installed::Config = ( + %Config, + archlibexp => cwd(), + sitearchexp => $fake_mod_dir, + ); + + # should find $fake_mod_dir via '.' in @INC + + local @INC = @INC; + push @INC, '.' if not $INC[-1] eq '.'; + + my $realei = ExtUtils::Installed->new(); + isa_ok( $realei, 'ExtUtils::Installed' ); + isa_ok( $realei->{Perl}{packlist}, 'ExtUtils::Packlist' ); + is( $realei->{Perl}{version}, $Config{version}, + 'new() should set Perl version from %Config' ); + + ok( exists $realei->{FakeMod}, 'new() should find modules with .packlists'); + isa_ok( $realei->{FakeMod}{packlist}, 'ExtUtils::Packlist' ); + is( $realei->{FakeMod}{version}, '1.1.1', + '... should find version in modules' ); + } -{ - # avoid warning and death by localizing glob - local *ExtUtils::Installed::Config; - %ExtUtils::Installed::Config = ( - %Config, - archlibexp => cwd(), - sitearchexp => $fake_mod_dir, - ); - - # disable '.' search - - my $realei = ExtUtils::Installed->new( skip_cwd => 1 ); - isa_ok( $realei, 'ExtUtils::Installed' ); - isa_ok( $realei->{Perl}{packlist}, 'ExtUtils::Packlist' ); - is( $realei->{Perl}{version}, $Config{version}, - 'new() should set Perl version from %Config' ); + { + # avoid warning and death by localizing glob + local *ExtUtils::Installed::Config; + %ExtUtils::Installed::Config = ( + %Config, + archlibexp => cwd(), + sitearchexp => $fake_mod_dir, + ); + + # disable '.' search + + my $realei = ExtUtils::Installed->new( skip_cwd => 1 ); + isa_ok( $realei, 'ExtUtils::Installed' ); + isa_ok( $realei->{Perl}{packlist}, 'ExtUtils::Packlist' ); + is( $realei->{Perl}{version}, $Config{version}, + 'new() should set Perl version from %Config' ); - ok( ! exists $realei->{FakeMod}, 'new( skip_cwd => 1 ) should fail to find modules with .packlists'); -} + ok( ! exists $realei->{FakeMod}, 'new( skip_cwd => 1 ) should fail to find modules with .packlists'); + } -{ - # avoid warning and death by localizing glob - local *ExtUtils::Installed::Config; - %ExtUtils::Installed::Config = ( - %Config, - archlibexp => cwd(), - sitearchexp => $fake_mod_dir, - ); - - # necessary to fool new() since we'll disable searching '.' - push @INC, $fake_mod_dir; - - my $realei = ExtUtils::Installed->new( skip_cwd => 1 ); - isa_ok( $realei, 'ExtUtils::Installed' ); - isa_ok( $realei->{Perl}{packlist}, 'ExtUtils::Packlist' ); - is( $realei->{Perl}{version}, $Config{version}, - 'new() should set Perl version from %Config' ); - - ok( exists $realei->{FakeMod}, 'new() should find modules with .packlists'); - isa_ok( $realei->{FakeMod}{packlist}, 'ExtUtils::Packlist' ); - is( $realei->{FakeMod}{version}, '1.1.1', - '... should find version in modules' ); -} + { + # avoid warning and death by localizing glob + local *ExtUtils::Installed::Config; + %ExtUtils::Installed::Config = ( + %Config, + archlibexp => cwd(), + sitearchexp => $fake_mod_dir, + ); + + # necessary to fool new() since we'll disable searching '.' + push @INC, $fake_mod_dir; + + my $realei = ExtUtils::Installed->new( skip_cwd => 1 ); + isa_ok( $realei, 'ExtUtils::Installed' ); + isa_ok( $realei->{Perl}{packlist}, 'ExtUtils::Packlist' ); + is( $realei->{Perl}{version}, $Config{version}, + 'new() should set Perl version from %Config' ); + + ok( exists $realei->{FakeMod}, 'new() should find modules with .packlists'); + isa_ok( $realei->{FakeMod}{packlist}, 'ExtUtils::Packlist' ); + is( $realei->{FakeMod}{version}, '1.1.1', + '... should find version in modules' ); + } -# Now try this using PERL5LIB -{ - local $ENV{PERL5LIB} = join $Config{path_sep}, $fake_mod_dir; - local *ExtUtils::Installed::Config; - %ExtUtils::Installed::Config = ( - %Config, - archlibexp => cwd(), - sitearchexp => cwd(), - ); - - my $realei = ExtUtils::Installed->new(); - isa_ok( $realei, 'ExtUtils::Installed' ); - isa_ok( $realei->{Perl}{packlist}, 'ExtUtils::Packlist' ); - is( $realei->{Perl}{version}, $Config{version}, - 'new() should set Perl version from %Config' ); - - ok( exists $realei->{FakeMod}, - 'new() should find modules with .packlists using PERL5LIB' - ); - isa_ok( $realei->{FakeMod}{packlist}, 'ExtUtils::Packlist' ); - is( $realei->{FakeMod}{version}, '1.1.1', - '... should find version in modules' ); -} + # Now try this using PERL5LIB + { + local $ENV{PERL5LIB} = join $Config{path_sep}, $fake_mod_dir; + local *ExtUtils::Installed::Config; + %ExtUtils::Installed::Config = ( + %Config, + archlibexp => cwd(), + sitearchexp => cwd(), + ); + + my $realei = ExtUtils::Installed->new(); + isa_ok( $realei, 'ExtUtils::Installed' ); + isa_ok( $realei->{Perl}{packlist}, 'ExtUtils::Packlist' ); + is( $realei->{Perl}{version}, $Config{version}, + 'new() should set Perl version from %Config' ); + + ok( exists $realei->{FakeMod}, + 'new() should find modules with .packlists using PERL5LIB' + ); + isa_ok( $realei->{FakeMod}{packlist}, 'ExtUtils::Packlist' ); + is( $realei->{FakeMod}{version}, '1.1.1', + '... should find version in modules' ); + } -# Do the same thing as the last block, but with overrides for -# %Config and @INC. -{ - my $config_override = { %Config::Config }; - $config_override->{archlibexp} = cwd(); - $config_override->{sitearchexp} = $fake_mod_dir; - $config_override->{version} = 'fake_test_version'; - - my @inc_override = (@INC, $fake_mod_dir); - - my $realei = ExtUtils::Installed->new( - 'config_override' => $config_override, - 'inc_override' => \@inc_override, - ); - isa_ok( $realei, 'ExtUtils::Installed' ); - isa_ok( $realei->{Perl}{packlist}, 'ExtUtils::Packlist' ); - is( $realei->{Perl}{version}, 'fake_test_version', - 'new(config_override => HASH) overrides %Config' ); - - ok( exists $realei->{FakeMod}, 'new() with overrides should find modules with .packlists'); - isa_ok( $realei->{FakeMod}{packlist}, 'ExtUtils::Packlist' ); - is( $realei->{FakeMod}{version}, '1.1.1', - '... should find version in modules' ); -} + # Do the same thing as the last block, but with overrides for + # %Config and @INC. + { + my $config_override = { %Config::Config }; + $config_override->{archlibexp} = cwd(); + $config_override->{sitearchexp} = $fake_mod_dir; + $config_override->{version} = 'fake_test_version'; + + my @inc_override = (@INC, $fake_mod_dir); + + my $realei = ExtUtils::Installed->new( + 'config_override' => $config_override, + 'inc_override' => \@inc_override, + ); + isa_ok( $realei, 'ExtUtils::Installed' ); + isa_ok( $realei->{Perl}{packlist}, 'ExtUtils::Packlist' ); + is( $realei->{Perl}{version}, 'fake_test_version', + 'new(config_override => HASH) overrides %Config' ); + + ok( exists $realei->{FakeMod}, 'new() with overrides should find modules with .packlists'); + isa_ok( $realei->{FakeMod}{packlist}, 'ExtUtils::Packlist' ); + is( $realei->{FakeMod}{version}, '1.1.1', + '... should find version in modules' ); + } -# Check if extra_libs works. -{ - my $realei = ExtUtils::Installed->new( - 'extra_libs' => [ cwd() ], - ); - isa_ok( $realei, 'ExtUtils::Installed' ); - isa_ok( $realei->{Perl}{packlist}, 'ExtUtils::Packlist' ); - ok( exists $realei->{FakeMod}, - 'new() with extra_libs should find modules with .packlists'); - - #{ use Data::Dumper; local $realei->{':private:'}{Config}; - # warn Dumper($realei); } - - isa_ok( $realei->{FakeMod}{packlist}, 'ExtUtils::Packlist' ); - is( $realei->{FakeMod}{version}, '1.1.1', - '... should find version in modules' ); -} + # Check if extra_libs works. + { + my $realei = ExtUtils::Installed->new( + 'extra_libs' => [ cwd() ], + ); + isa_ok( $realei, 'ExtUtils::Installed' ); + isa_ok( $realei->{Perl}{packlist}, 'ExtUtils::Packlist' ); + ok( exists $realei->{FakeMod}, + 'new() with extra_libs should find modules with .packlists'); + + #{ use Data::Dumper; local $realei->{':private:'}{Config}; + # warn Dumper($realei); } + + isa_ok( $realei->{FakeMod}{packlist}, 'ExtUtils::Packlist' ); + is( $realei->{FakeMod}{version}, '1.1.1', + '... should find version in modules' ); + } -# modules -$ei->{$_} = 1 for qw( abc def ghi ); -is( join(' ', $ei->modules()), 'abc def ghi', - 'modules() should return sorted keys' ); - -# This didn't work for a long time due to a sort in scalar context oddity. -is( $ei->modules, 3, 'modules() in scalar context' ); - -# files -$ei->{goodmod} = { - packlist => { - ($Config{man1direxp} ? - (File::Spec->catdir($Config{man1direxp}, 'foo') => 1) : - ()), - ($Config{man3direxp} ? - (File::Spec->catdir($Config{man3direxp}, 'bar') => 1) : - ()), - File::Spec->catdir($prefix, 'foobar') => 1, - foobaz => 1, - }, -}; - -eval { $ei->files('badmod') }; -like( $@, qr/badmod is not installed/,'files() should croak given bad modname'); -eval { $ei->files('goodmod', 'badtype' ) }; -like( $@, qr/type must be/,'files() should croak given bad type' ); + # modules + $ei->{$_} = 1 for qw( abc def ghi ); + is( join(' ', $ei->modules()), 'abc def ghi', + 'modules() should return sorted keys' ); + + # This didn't work for a long time due to a sort in scalar context oddity. + is( $ei->modules, 3, 'modules() in scalar context' ); + + # files + $ei->{goodmod} = { + packlist => { + ($Config{man1direxp} ? + (File::Spec->catdir($Config{man1direxp}, 'foo') => 1) : + ()), + ($Config{man3direxp} ? + (File::Spec->catdir($Config{man3direxp}, 'bar') => 1) : + ()), + File::Spec->catdir($prefix, 'foobar') => 1, + foobaz => 1, + }, + }; + + eval { $ei->files('badmod') }; + like( $@, qr/badmod is not installed/,'files() should croak given bad modname'); + eval { $ei->files('goodmod', 'badtype' ) }; + like( $@, qr/type must be/,'files() should croak given bad type' ); -my @files; -SKIP: { - skip('no man directory man1dir on this system', 2) - unless $Config{man1direxp}; - @files = $ei->files('goodmod', 'doc', $Config{man1direxp}); - is( scalar @files, 1, '... should find doc file under given dir' ); - is( (grep { /foo$/ } @files), 1, '... checking file name' ); -} -SKIP: { - skip('no man directories on this system', 1) unless $mandirs; - @files = $ei->files('goodmod', 'doc'); - is( scalar @files, $mandirs, '... should find all doc files with no dir' ); -} + my @files; + SKIP: { + skip('no man directory man1dir on this system', 2) + unless $Config{man1direxp}; + @files = $ei->files('goodmod', 'doc', $Config{man1direxp}); + is( scalar @files, 1, '... should find doc file under given dir' ); + is( (grep { /foo$/ } @files), 1, '... checking file name' ); + } + SKIP: { + skip('no man directories on this system', 1) unless $mandirs; + @files = $ei->files('goodmod', 'doc'); + is( scalar @files, $mandirs, '... should find all doc files with no dir' ); + } -@files = $ei->files('goodmod', 'prog', 'fake', 'fake2'); -is( scalar @files, 0, '... should find no doc files given wrong dirs' ); -@files = $ei->files('goodmod', 'prog'); -is( scalar @files, 1, '... should find doc file in correct dir' ); -like( $files[0], qr/foobar[>\]]?$/, '... checking file name' ); -@files = $ei->files('goodmod'); -is( scalar @files, 2 + $mandirs, '... should find all files with no type specified' ); -my %dirnames = map { lc($_) => dirname($_) } @files; - -# directories -my @dirs = $ei->directories('goodmod', 'prog', 'fake'); -is( scalar @dirs, 0, 'directories() should return no dirs if no files found' ); + @files = $ei->files('goodmod', 'prog', 'fake', 'fake2'); + is( scalar @files, 0, '... should find no doc files given wrong dirs' ); + @files = $ei->files('goodmod', 'prog'); + is( scalar @files, 1, '... should find doc file in correct dir' ); + like( $files[0], qr/foobar[>\]]?$/, '... checking file name' ); + @files = $ei->files('goodmod'); + is( scalar @files, 2 + $mandirs, '... should find all files with no type specified' ); + my %dirnames = map { lc($_) => dirname($_) } @files; + + # directories + my @dirs = $ei->directories('goodmod', 'prog', 'fake'); + is( scalar @dirs, 0, 'directories() should return no dirs if no files found' ); -SKIP: { - skip('no man directories on this system', 1) unless $mandirs; - @dirs = $ei->directories('goodmod', 'doc'); - is( scalar @dirs, $mandirs, '... should find all files files() would' ); -} -@dirs = $ei->directories('goodmod'); -is( scalar @dirs, 2 + $mandirs, '... should find all files files() would, again' ); -@files = sort map { exists $dirnames{lc($_)} ? $dirnames{lc($_)} : '' } @files; -is( join(' ', @files), join(' ', @dirs), '... should sort output' ); - -# directory_tree -my $expectdirs = - ($mandirs == 2) && - (dirname($Config{man1direxp}) eq dirname($Config{man3direxp})) - ? 3 : 2; + SKIP: { + skip('no man directories on this system', 1) unless $mandirs; + @dirs = $ei->directories('goodmod', 'doc'); + is( scalar @dirs, $mandirs, '... should find all files files() would' ); + } + @dirs = $ei->directories('goodmod'); + is( scalar @dirs, 2 + $mandirs, '... should find all files files() would, again' ); + @files = sort map { exists $dirnames{lc($_)} ? $dirnames{lc($_)} : '' } @files; + is( join(' ', @files), join(' ', @dirs), '... should sort output' ); + + # directory_tree + my $expectdirs = + ($mandirs == 2) && + (dirname($Config{man1direxp}) eq dirname($Config{man3direxp})) + ? 3 : 2; -SKIP: { - skip('no man directories on this system', 1) unless $mandirs; - @dirs = $ei->directory_tree('goodmod', 'doc', $Config{man1direxp} ? - dirname($Config{man1direxp}) : dirname($Config{man3direxp})); - is( scalar @dirs, $expectdirs, - 'directory_tree() should report intermediate dirs to those requested' ); -} + SKIP: { + skip('no man directories on this system', 1) unless $mandirs; + @dirs = $ei->directory_tree('goodmod', 'doc', $Config{man1direxp} ? + dirname($Config{man1direxp}) : dirname($Config{man3direxp})); + is( scalar @dirs, $expectdirs, + 'directory_tree() should report intermediate dirs to those requested' ); + } -my $fakepak = Fakepak->new(102); + my $fakepak = Fakepak->new(102); -$ei->{yesmod} = { - version => 101, - packlist => $fakepak, -}; - -# these should all croak -foreach my $sub (qw( validate packlist version )) { - eval { $ei->$sub('nomod') }; - like( $@, qr/nomod is not installed/, - "$sub() should croak when asked about uninstalled module" ); -} + $ei->{yesmod} = { + version => 101, + packlist => $fakepak, + }; + + # these should all croak + foreach my $sub (qw( validate packlist version )) { + eval { $ei->$sub('nomod') }; + like( $@, qr/nomod is not installed/, + "$sub() should croak when asked about uninstalled module" ); + } -# validate -is( $ei->validate('yesmod'), 'validated', - 'validate() should return results of packlist validate() call' ); - -# packlist -is( ${ $ei->packlist('yesmod') }, 102, - 'packlist() should report installed mod packlist' ); - -# version -is( $ei->version('yesmod'), 101, - 'version() should report installed mod version' ); + # validate + is( $ei->validate('yesmod'), 'validated', + 'validate() should return results of packlist validate() call' ); + + # packlist + is( ${ $ei->packlist('yesmod') }, 102, + 'packlist() should report installed mod packlist' ); + + # version + is( $ei->version('yesmod'), 101, + 'version() should report installed mod version' ); +} # End of block enclosing tempdir package Fakepak; diff -Nru perl-5.32.1/cpan/ExtUtils-Install/t/Install.t perl-5.34.0/cpan/ExtUtils-Install/t/Install.t --- perl-5.32.1/cpan/ExtUtils-Install/t/Install.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-Install/t/Install.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,5 @@ #!/usr/bin/perl -w +use strict; # Test ExtUtils::Install. @@ -6,7 +7,6 @@ unshift @INC, 't/lib'; } -use strict; use TieOut; use File::Path; use File::Spec; diff -Nru perl-5.32.1/cpan/ExtUtils-Install/t/InstallWithMM.t perl-5.34.0/cpan/ExtUtils-Install/t/InstallWithMM.t --- perl-5.32.1/cpan/ExtUtils-Install/t/InstallWithMM.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-Install/t/InstallWithMM.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,5 @@ #!/usr/bin/perl -w +use strict; # Make sure EUI works with MakeMaker @@ -6,7 +7,6 @@ unshift @INC, 't/lib'; } -use strict; use Config; use ExtUtils::MakeMaker; diff -Nru perl-5.32.1/cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm perl-5.34.0/cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm --- perl-5.32.1/cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm 2020-10-04 22:17:12.000000000 +0000 @@ -1,10 +1,10 @@ package MakeMaker::Test::Setup::BFD; +use strict; -@ISA = qw(Exporter); +our @ISA = qw(Exporter); require Exporter; -@EXPORT = qw(setup_recurs teardown_recurs); +our @EXPORT = qw(setup_recurs teardown_recurs); -use strict; use File::Path; use File::Basename; use MakeMaker::Test::Utils; diff -Nru perl-5.32.1/cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Utils.pm perl-5.34.0/cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Utils.pm --- perl-5.32.1/cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Utils.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Utils.pm 2020-10-04 22:17:12.000000000 +0000 @@ -1,7 +1,7 @@ package MakeMaker::Test::Utils; +use strict; use File::Spec; -use strict; use Config; require Exporter; diff -Nru perl-5.32.1/cpan/ExtUtils-Install/t/lib/TieOut.pm perl-5.34.0/cpan/ExtUtils-Install/t/lib/TieOut.pm --- perl-5.32.1/cpan/ExtUtils-Install/t/lib/TieOut.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-Install/t/lib/TieOut.pm 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,5 @@ package TieOut; +use strict; sub TIEHANDLE { my $scalar = ''; diff -Nru perl-5.32.1/cpan/ExtUtils-Install/t/Packlist.t perl-5.34.0/cpan/ExtUtils-Install/t/Packlist.t --- perl-5.32.1/cpan/ExtUtils-Install/t/Packlist.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-Install/t/Packlist.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,5 @@ #!/usr/bin/perl -w +use strict; BEGIN { unshift @INC, 't/lib'; @@ -162,6 +163,7 @@ is( ExtUtils::Packlist::packlist_file($pl), 'eplist', 'packlist_file() should fetch packlist from ExtUtils::Packlist object' ); +my $w = 0; BEGIN { # Call mkfh at BEGIN time, to make sure it does not trigger "Used # once" warnings. diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm 2021-05-04 06:52:48.000000000 +0000 @@ -10,7 +10,7 @@ our @EXPORT = qw(test_harness pod2man perllocal_install uninstall warn_if_old_packlist test_s cp_nonempty); -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; my $Is_VMS = $^O eq 'VMS'; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm 2021-05-04 06:52:48.000000000 +0000 @@ -2,12 +2,13 @@ use 5.00503; use strict; +use warnings; require Exporter; use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); @ISA = qw(Exporter); @EXPORT = qw(cp rm_f rm_rf mv cat eqtime mkpath touch test_f test_d chmod dos2unix); -$VERSION = '7.44'; +$VERSION = '7.62'; $VERSION =~ tr/_//d; my $Is_VMS = $^O eq 'VMS'; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm 2021-01-08 21:20:36.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm 2021-05-04 06:52:48.000000000 +0000 @@ -11,7 +11,7 @@ use strict; use warnings; -our $VERSION = '7.44_01'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; use ExtUtils::MakeMaker::Config; @@ -52,7 +52,7 @@ require Text::ParseWords; my ( @searchpath ); # from "-L/path" entries in $potential_libs - my ( @libpath ) = Text::ParseWords::quotewords( '\s+', 0, $Config{'libpth'} || '' ); + my ( @libpath ) = Text::ParseWords::shellwords( $Config{'libpth'} || '' ); my ( @ldloadlibs, @bsloadlibs, @extralibs, @ld_run_path, %ld_run_path_seen ); my ( @libs, %libs_seen ); my ( $fullname, @fullname ); @@ -65,7 +65,7 @@ $potential_libs =~ s/(^|\s)(-F)\s*(\S+)/$1-Wl,$2 -Wl,$3/g; } - foreach my $thislib ( Text::ParseWords::quotewords( '\s+', 0, $potential_libs) ) { + foreach my $thislib ( Text::ParseWords::shellwords($potential_libs) ) { my ( $custom_name ) = ''; # Handle possible linker path arguments. diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,8 +1,9 @@ package ExtUtils::Liblist; use strict; +use warnings; -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; use File::Spec; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,8 +1,9 @@ package ExtUtils::MakeMaker::Config; use strict; +use warnings; -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; use Config (); diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod 2021-05-04 06:52:48.000000000 +0000 @@ -1,6 +1,6 @@ package ExtUtils::MakeMaker::FAQ; -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; 1; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,7 +1,8 @@ package ExtUtils::MakeMaker::Locale; use strict; -our $VERSION = "7.44"; +use warnings; +our $VERSION = "7.62"; $VERSION =~ tr/_//d; use base 'Exporter'; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod 2021-05-04 06:52:48.000000000 +0000 @@ -1,6 +1,6 @@ package ExtUtils::MakeMaker::Tutorial; -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm 2021-05-04 06:52:48.000000000 +0000 @@ -7,10 +7,11 @@ package ExtUtils::MakeMaker::version::regex; use strict; +use warnings; use vars qw($VERSION $CLASS $STRICT $LAX); -$VERSION = '7.44'; +$VERSION = '7.62'; $VERSION =~ tr/_//d; #--------------------------------------------------------------------------# diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm 2021-05-04 06:52:48.000000000 +0000 @@ -12,10 +12,11 @@ use 5.006001; use strict; +use warnings; use vars qw(@ISA $VERSION $CLASS $STRICT $LAX *declare *qv); -$VERSION = '7.44'; +$VERSION = '7.62'; $VERSION =~ tr/_//d; $CLASS = 'version'; @@ -25,7 +26,7 @@ if ( $@ ) { # don't have any version.pm installed eval "use ExtUtils::MakeMaker::version::vpp"; die "$@" if ( $@ ); - local $^W; + no warnings; delete $INC{'version.pm'}; $INC{'version.pm'} = $INC{'ExtUtils/MakeMaker/version.pm'}; push @version::ISA, "ExtUtils::MakeMaker::version::vpp"; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm 2021-05-04 06:52:48.000000000 +0000 @@ -2,6 +2,7 @@ package ExtUtils::MakeMaker; use strict; +use warnings; BEGIN {require 5.006;} @@ -24,7 +25,7 @@ our %macro_fsentity; # whether a macro is a filesystem name our %macro_dep; # whether a macro is a dependency -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; # Emulate something resembling CVS $Revision$ @@ -425,7 +426,10 @@ return eval { require CPAN::Meta::Requirements; CPAN::Meta::Requirements->VERSION(2.130); - require B; # CMR requires this, for core we have to too. + # Make sure vstrings can be handled. Some versions of CMR require B to + # do this, which won't be available in miniperl. + CPAN::Meta::Requirements->new->add_string_requirement('Module' => v1.2); + 1; }; } @@ -510,50 +514,43 @@ check_hints($self); - if ( defined $self->{MIN_PERL_VERSION} - && $self->{MIN_PERL_VERSION} !~ /^v?[\d_\.]+$/ ) { - require version; - my $normal = eval { - local $SIG{__WARN__} = sub { - # simulate "use warnings FATAL => 'all'" for vintage perls - die @_; - }; - version->new( $self->{MIN_PERL_VERSION} ) - }; - $self->{MIN_PERL_VERSION} = $normal if defined $normal && !$@; - } - - # Translate X.Y.Z to X.00Y00Z - if( defined $self->{MIN_PERL_VERSION} ) { - $self->{MIN_PERL_VERSION} =~ s{ ^v? (\d+) \. (\d+) \. (\d+) $ } - {sprintf "%d.%03d%03d", $1, $2, $3}ex; - } - - my $perl_version_ok = eval { - local $SIG{__WARN__} = sub { - # simulate "use warnings FATAL => 'all'" for vintage perls - die @_; - }; - !$self->{MIN_PERL_VERSION} or $self->{MIN_PERL_VERSION} <= "$]" - }; - if (!$perl_version_ok) { - if (!defined $perl_version_ok) { - die <<'END'; -Warning: MIN_PERL_VERSION is not in a recognized format. + if ( $self->{MIN_PERL_VERSION}) { + my $perl_version = $self->{MIN_PERL_VERSION}; + if (ref $perl_version) { + # assume a version object + } + else { + $perl_version = eval { + local $SIG{__WARN__} = sub { + # simulate "use warnings FATAL => 'all'" for vintage perls + die @_; + }; + version->new( $perl_version )->numify; + }; + $perl_version =~ tr/_//d + if defined $perl_version; + } + + if (!defined $perl_version) { + # should this be a warning? + die sprintf <<'END', $self->{MIN_PERL_VERSION}; +MakeMaker FATAL: MIN_PERL_VERSION (%s) is not in a recognized format. Recommended is a quoted numerical value like '5.005' or '5.008001'. END } - elsif ($self->{PREREQ_FATAL}) { - die sprintf <<"END", $self->{MIN_PERL_VERSION}, $]; -MakeMaker FATAL: perl version too low for this distribution. -Required is %s. We run %s. + elsif ($perl_version > "$]") { + my $message = sprintf <<'END', $perl_version, $]; +Perl version %s or higher required. We run %s. END + if ($self->{PREREQ_FATAL}) { + die "MakeMaker FATAL: $message"; + } + else { + warn "Warning: $message"; + } } - else { - warn sprintf - "Warning: Perl version %s or higher required. We run %s.\n", - $self->{MIN_PERL_VERSION}, $]; - } + + $self->{MIN_PERL_VERSION} = $perl_version; } my %configure_att; # record &{$self->{CONFIGURE}} attributes @@ -1038,7 +1035,7 @@ } sub check_manifest { - print "Checking if your kit is complete...\n"; + print STDOUT "Checking if your kit is complete...\n"; require ExtUtils::Manifest; # avoid warning $ExtUtils::Manifest::Quiet = $ExtUtils::Manifest::Quiet = 1; @@ -1154,20 +1151,19 @@ } sub _run_hintfile { - our $self; - local($self) = shift; # make $self available to the hint file. - my($hint_file) = shift; + my ($self, $hint_file) = @_; local($@, $!); print "Processing hints file $hint_file\n" if $Verbose; - # Just in case the ./ isn't on the hint file, which File::Spec can - # often strip off, we bung the curdir into @INC - local @INC = (File::Spec->curdir, @INC); - my $ret = do $hint_file; - if( !defined $ret ) { - my $error = $@ || $!; - warn $error; + if(open(my $fh, '<', $hint_file)) { + my $hints_content = do { local $/; <$fh> }; + no strict; + eval $hints_content; + warn "Failed to run hint file $hint_file: $@" if $@; + } + else { + warn "Could not open $hint_file for read: $!"; } } @@ -1237,15 +1233,15 @@ my $self = shift; my $finalname = $self->{MAKEFILE}; - printf "Generating a %s %s\n", $self->make_type, $finalname if $Verbose || !$self->{PARENT}; - print "Writing $finalname for $self->{NAME}\n" if $Verbose || !$self->{PARENT}; + printf STDOUT "Generating a %s %s\n", $self->make_type, $finalname if $Verbose || !$self->{PARENT}; + print STDOUT "Writing $finalname for $self->{NAME}\n" if $Verbose || !$self->{PARENT}; unlink($finalname, "MakeMaker.tmp", $Is_VMS ? 'Descrip.MMS' : ()); write_file_via_tmp($finalname, $self->{RESULT}); # Write MYMETA.yml to communicate metadata up to the CPAN clients - print "Writing MYMETA.yml and MYMETA.json\n" + print STDOUT "Writing MYMETA.yml and MYMETA.json\n" if !$self->{NO_MYMETA} and $self->write_mymeta( $self->mymeta ); # save memory @@ -2976,7 +2972,7 @@ =item XSPROTOARG -May be set to C<-protoypes>, C<-noprototypes> or the empty string. The +May be set to C<-prototypes>, C<-noprototypes> or the empty string. The empty string is equivalent to the xsubpp default, or C<-noprototypes>. See the xsubpp documentation for details. MakeMaker defaults to the empty string. diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,9 +1,9 @@ package ExtUtils::Mkbootstrap; -# There's just too much Dynaloader incest here to turn on strict vars. -use strict 'refs'; +use strict; +use warnings; -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; require Exporter; @@ -33,6 +33,7 @@ if (-f "${baseext}_BS"){ $_ = "${baseext}_BS"; package DynaLoader; # execute code as if in DynaLoader + no strict 'vars'; local($osname, $dlsrc) = (); # avoid warnings ($osname, $dlsrc) = @Config::Config{qw(osname dlsrc)}; $bscode = ""; @@ -43,6 +44,7 @@ if ($Config{'dlsrc'} =~ /^dl_dld/){ package DynaLoader; + no strict 'vars'; push(@dl_resolve_using, dl_findfile('-lc')); } diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm 2021-05-04 06:52:48.000000000 +0000 @@ -3,6 +3,7 @@ use 5.006; use strict qw[ subs refs ]; # no strict 'vars'; # until filehandles are exempted +use warnings; use Carp; use Exporter; @@ -10,7 +11,7 @@ our @ISA = qw(Exporter); our @EXPORT = qw(&Mksymlists); -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; sub Mksymlists { diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,7 +1,8 @@ package ExtUtils::MM_AIX; use strict; -our $VERSION = '7.44'; +use warnings; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; use ExtUtils::MakeMaker::Config; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,7 +1,8 @@ package ExtUtils::MM_Any; use strict; -our $VERSION = '7.44'; +use warnings; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; use Carp; @@ -1670,7 +1671,7 @@ # rolled their own tarball rather than using "make dist". if ($meta->{generated_by} && $meta->{generated_by} =~ /ExtUtils::MakeMaker version ([\d\._]+)/) { - my $eummv = do { local $^W = 0; $1+0; }; + my $eummv = do { no warnings; $1+0; }; if ($eummv < 6.2501) { return; } diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,6 +1,7 @@ package ExtUtils::MM_BeOS; use strict; +use warnings; =head1 NAME @@ -26,7 +27,7 @@ require ExtUtils::MM_Unix; our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix ); -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,6 +1,7 @@ package ExtUtils::MM_Cygwin; use strict; +use warnings; use ExtUtils::MakeMaker::Config; use File::Spec; @@ -9,7 +10,7 @@ require ExtUtils::MM_Win32; our @ISA = qw( ExtUtils::MM_Unix ); -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; @@ -100,6 +101,16 @@ $self->{EXPORT_LIST} ||= ''; } +sub init_others { + my $self = shift; + + $self->SUPER::init_others; + + $self->{LDLOADLIBS} ||= $Config{perllibs}; + + return; +} + =item maybe_command Determine whether a file is native to Cygwin by checking whether it diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,13 +1,14 @@ package ExtUtils::MM_Darwin; use strict; +use warnings; BEGIN { require ExtUtils::MM_Unix; our @ISA = qw( ExtUtils::MM_Unix ); } -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; @@ -45,4 +46,29 @@ $self->SUPER::init_dist(@_); } +=head3 cflags + +Over-ride Apple's automatic setting of -Werror + +=cut + +sub cflags { + my($self,$libperl)=@_; + return $self->{CFLAGS} if $self->{CFLAGS}; + return '' unless $self->needs_linking(); + + my $base = $self->SUPER::cflags($libperl); + + foreach (split /\n/, $base) { + /^(\S*)\s*=\s*(\S*)$/ and $self->{$1} = $2; + }; + $self->{CCFLAGS} .= " -Wno-error=implicit-function-declaration"; + + return $self->{CFLAGS} = qq{ +CCFLAGS = $self->{CCFLAGS} +OPTIMIZE = $self->{OPTIMIZE} +PERLTYPE = $self->{PERLTYPE} +}; +} + 1; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,8 +1,9 @@ package ExtUtils::MM_DOS; use strict; +use warnings; -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; require ExtUtils::MM_Any; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,8 +1,9 @@ package ExtUtils::MM_MacOS; use strict; +use warnings; -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; sub new { diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm 2021-05-04 06:52:48.000000000 +0000 @@ -19,10 +19,11 @@ =cut use strict; +use warnings; use ExtUtils::MakeMaker::Config; use File::Basename; -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; require ExtUtils::MM_Win32; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,11 +1,12 @@ package ExtUtils::MM_OS2; use strict; +use warnings; use ExtUtils::MakeMaker qw(neatvalue); use File::Spec; -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; require ExtUtils::MM_Any; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS390.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS390.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS390.pm 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS390.pm 2021-05-04 06:52:48.000000000 +0000 @@ -0,0 +1,86 @@ +package ExtUtils::MM_OS390; + +use strict; +use warnings; +our $VERSION = '7.62'; +$VERSION =~ tr/_//d; + +use ExtUtils::MakeMaker::Config; +require ExtUtils::MM_Unix; +our @ISA = qw(ExtUtils::MM_Unix); + +=head1 NAME + +ExtUtils::MM_OS390 - OS390 specific subclass of ExtUtils::MM_Unix + +=head1 SYNOPSIS + + Don't use this module directly. + Use ExtUtils::MM and let it choose. + +=head1 DESCRIPTION + +This is a subclass of L which contains functionality for +OS390. + +Unless otherwise stated it works just like ExtUtils::MM_Unix. + +=head2 Overriden methods + +=over + +=item xs_make_dynamic_lib + +Defines the recipes for the C section. + +=cut + +sub xs_make_dynamic_lib { + my ($self, $attribs, $object, $to, $todir, $ldfrom, $exportlist, $dlsyms) = @_; + $exportlist = '' if $exportlist ne '$(EXPORT_LIST)'; + my $armaybe = $self->_xs_armaybe($attribs); + my @m = sprintf '%s : %s $(MYEXTLIB) %s$(DFSEP).exists %s $(PERL_ARCHIVEDEP) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP) %s'."\n", $to, $object, $todir, $exportlist, ($dlsyms || ''); + my $dlsyms_arg = $self->xs_dlsyms_arg($dlsyms); + if ($armaybe ne ':'){ + $ldfrom = 'tmp$(LIB_EXT)'; + push(@m," \$(ARMAYBE) cr $ldfrom $object\n"); + push(@m," \$(RANLIB) $ldfrom\n"); + } + + # For example in AIX the shared objects/libraries from previous builds + # linger quite a while in the shared dynalinker cache even when nobody + # is using them. This is painful if one for instance tries to restart + # a failed build because the link command will fail unnecessarily 'cos + # the shared object/library is 'busy'. + push(@m," \$(RM_F) \$\@\n"); + + my $libs = '$(LDLOADLIBS)'; + + my $ld_run_path_shell = ""; + if ($self->{LD_RUN_PATH} ne "") { + $ld_run_path_shell = 'LD_RUN_PATH="$(LD_RUN_PATH)" '; + } + + push @m, sprintf <<'MAKE', $ld_run_path_shell, $dlsyms_arg, $self->xs_obj_opt('$@'), $ldfrom, $libs, $exportlist; + %s$(LD) $(LDDLFLAGS) %s $(OTHERLDFLAGS) %s $(MYEXTLIB) %s \ + $(PERL_ARCHIVE) %s $(PERL_ARCHIVE_AFTER) %s \ + $(INST_DYNAMIC_FIX) + $(CHMOD) $(PERM_RWX) $@ +MAKE + join '', @m; +} + +1; + +=back + +=head1 AUTHOR + +Michael G Schwern with code from ExtUtils::MM_Unix + +=head1 SEE ALSO + +L + +=cut +__END__ diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,9 +1,10 @@ package ExtUtils::MM; use strict; +use warnings; use ExtUtils::MakeMaker::Config; -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; require ExtUtils::Liblist; @@ -70,6 +71,7 @@ $Is{QNX} = $^O eq 'qnx'; $Is{AIX} = $^O eq 'aix'; $Is{Darwin} = $^O eq 'darwin'; +$Is{OS390} = $^O eq 'os390'; $Is{Unix} = !grep { $_ } values %Is; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,7 +1,8 @@ package ExtUtils::MM_QNX; use strict; -our $VERSION = '7.44'; +use warnings; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; require ExtUtils::MM_Unix; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 2021-05-04 06:52:48.000000000 +0000 @@ -3,6 +3,7 @@ require 5.006; use strict; +use warnings; use Carp; use ExtUtils::MakeMaker::Config; @@ -14,7 +15,7 @@ # If we make $VERSION an our variable parse_version() breaks use vars qw($VERSION); -$VERSION = '7.44'; +$VERSION = '7.62'; $VERSION =~ tr/_//d; require ExtUtils::MM_Any; @@ -3000,7 +3001,7 @@ chop; next if /^\s*(if|unless|elsif)/; if ( m{^ \s* package \s+ \w[\w\:\']* \s+ (v?[0-9._]+) \s* (;|\{) }x ) { - local $^W = 0; + no warnings; $result = $1; } elsif ( m{(?=!])\=[^=]}x ) { @@ -3018,6 +3019,10 @@ my $normal = eval { version->new( $result ) }; $result = $normal if defined $normal; } + if ( defined $result ) { + $result = "undef" unless $result =~ m!^v?[\d_\.]+$! + or eval { version->parse( $result ) }; + } $result = "undef" unless defined $result; return $result; } @@ -3033,8 +3038,8 @@ version::->import; }; no strict; + no warnings; local *{$name}; - local $^W = 0; $line = $1 if $line =~ m{^(.+)}s; eval($line); ## no critic return ${$name}; @@ -3232,11 +3237,12 @@ } my $archname = $Config{archname}; + + # archname did not change from 5.6 to 5.8, but those versions may + # not be not binary compatible so now we append the part of the + # version that changes when binary compatibility may change if ("$]" >= 5.008) { - # archname did not change from 5.6 to 5.8, but those versions may - # not be not binary compatible so now we append the part of the - # version that changes when binary compatibility may change - $archname .= "-$Config{PERL_REVISION}.$Config{PERL_VERSION}"; + $archname .= "-$Config{api_revision}.$Config{api_version}"; } push @ppd_chunks, sprintf <<'PPD_OUT', $archname; @@ -3973,8 +3979,6 @@ pure_all :: config pm_to_blib subdirs linkext $(NOECHO) $(NOOP) - $(NOECHO) $(NOOP) - subdirs :: $(MYEXTLIB) $(NOECHO) $(NOOP) diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,7 +1,8 @@ package ExtUtils::MM_UWIN; use strict; -our $VERSION = '7.44'; +use warnings; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; require ExtUtils::MM_Unix; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,6 +1,7 @@ package ExtUtils::MM_VMS; use strict; +use warnings; use ExtUtils::MakeMaker::Config; require Exporter; @@ -15,7 +16,7 @@ use File::Basename; -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; require ExtUtils::MM_Any; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,7 +1,8 @@ package ExtUtils::MM_VOS; use strict; -our $VERSION = '7.44'; +use warnings; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; require ExtUtils::MM_Unix; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,7 +1,7 @@ package ExtUtils::MM_Win32; use strict; - +use warnings; =head1 NAME @@ -27,7 +27,7 @@ require ExtUtils::MM_Any; require ExtUtils::MM_Unix; our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix ); -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; $ENV{EMXSHELL} = 'sh'; # to run `commands` @@ -395,8 +395,15 @@ } sub can_dep_space { - my $self = shift; - 1; # with Win32::GetShortPathName + my ($self) = @_; + return 0 unless $self->can_load_xs; + require Win32; + require File::Spec; + my ($vol, $dir) = File::Spec->splitpath($INC{'ExtUtils/MakeMaker.pm'}); + # can_dep_space via GetShortPathName, if short paths are supported + my $canary = Win32::GetShortPathName(File::Spec->catpath($vol, $dir, 'MakeMaker.pm')); + (undef, undef, my $file) = File::Spec->splitpath($canary); + return (length $file > 11) ? 0 : 1; } =item quote_dep diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,8 +1,9 @@ package ExtUtils::MM_Win95; use strict; +use warnings; -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; require ExtUtils::MM_Win32; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm 2021-05-04 06:52:48.000000000 +0000 @@ -3,7 +3,7 @@ use strict; require ExtUtils::MM; -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; our @ISA = qw(ExtUtils::MM); diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm 2021-05-04 06:52:48.000000000 +0000 @@ -3,7 +3,7 @@ use strict; use warnings; -our $VERSION = '7.44'; +our $VERSION = '7.62'; $VERSION =~ tr/_//d; use Cwd; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/00compile.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/00compile.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/00compile.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/00compile.t 2020-10-24 18:43:34.000000000 +0000 @@ -5,6 +5,7 @@ } chdir 't'; +use warnings; use Test::More; my $Has_Test_Pod; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/03-xsstatic.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/03-xsstatic.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/03-xsstatic.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/03-xsstatic.t 2020-10-24 18:43:34.000000000 +0000 @@ -21,6 +21,7 @@ plan skip_all => 'Shared perl library' if $Config{useshrplib} eq 'true'; plan skip_all => $^O if $^O =~ m!^(MSWin32|cygwin|haiku|darwin)$!; plan skip_all => 'Skipped when not PERL_CORE nor in git repo' unless $ENV{PERL_CORE} or $release; +plan skip_all => 'Skipped as perl.exp is not in scope' if -s '../../../perl.exp' && $ENV{PERL_CORE}; my @tests = list_static(); plan skip_all => "No tests" unless @tests; plan tests => 6 * @tests; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/arch_check.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/arch_check.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/arch_check.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/arch_check.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,6 +1,7 @@ #!/usr/bin/perl -w use strict; +use warnings; use lib 't/lib'; use TieOut; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/backwards.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/backwards.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/backwards.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/backwards.t 2020-10-24 18:43:34.000000000 +0000 @@ -8,6 +8,7 @@ } use strict; +use warnings; use Test::More tests => 2; require ExtUtils::MakeMaker; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/basic.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/basic.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/basic.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/basic.t 2020-10-24 18:43:34.000000000 +0000 @@ -13,6 +13,7 @@ } use strict; +use warnings; use Config; use ExtUtils::MakeMaker; use utf8; @@ -132,8 +133,11 @@ unlike( $ppd_html, qr{^\s*}m, 'no for build_require' ); my $archname = $Config{archname}; -if( "$]" >= 5.008 ) { - # XXX This is a copy of the internal logic, so it's not a great test +# XXX This is a copy of the internal logic, so it's not a great test +if( "$]" >= 5.010) { + $archname .= "-$^V->{version}->[0].$^V->{version}->[1]"; +} +elsif( "$]" >= 5.008 ) { $archname .= "-$Config{PERL_REVISION}.$Config{PERL_VERSION}"; } like( $ppd_html, qr{^\s*}m, diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/build_man.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/build_man.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/build_man.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/build_man.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,6 +7,7 @@ } use strict; +use warnings; use Test::More tests => 50; use File::Spec; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/cd.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/cd.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/cd.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/cd.t 2020-10-24 18:43:34.000000000 +0000 @@ -4,6 +4,8 @@ unshift @INC, 't/lib/'; } +use strict; +use warnings; use File::Temp qw[tempdir]; my $tmpdir = tempdir( DIR => 't', CLEANUP => 1 ); use Cwd; my $cwd = getcwd; END { chdir $cwd } # so File::Temp can cleanup @@ -21,7 +23,7 @@ { package Test::MM_Win32; use ExtUtils::MM_Win32; - @ISA = qw(ExtUtils::MM_Win32); + our @ISA = qw(ExtUtils::MM_Win32); my $mm = bless {}, 'Test::MM_Win32'; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/config.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/config.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/config.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/config.t 2020-10-24 18:43:34.000000000 +0000 @@ -4,6 +4,8 @@ unshift @INC, 't/lib/'; } +use strict; +use warnings; use Test::More tests => 3; use Config (); diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/cp.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/cp.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/cp.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/cp.t 2020-10-24 18:43:34.000000000 +0000 @@ -5,6 +5,8 @@ } chdir 't'; +use strict; +use warnings; use ExtUtils::Command; use Test::More tests => 1; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/dir_target.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/dir_target.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/dir_target.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/dir_target.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ #!/usr/bin/perl -w +use strict; +use warnings; + use lib 't/lib'; use File::Temp qw[tempdir]; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/echo.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/echo.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/echo.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/echo.t 2020-11-18 22:09:15.000000000 +0000 @@ -25,7 +25,7 @@ my $cwd = abs_path; my $perl = which_perl; my $make = make_run(); -my $mm = bless { NAME => "Foo", MAKE => $Config{make}, PARENT_NAME => '' }, "MM"; +my $mm = bless { NAME => "Foo", MAKE => $Config{make}, PARENT_NAME => '', PERL_SRC => '' }, "MM"; $mm->init_INST; # *PERLRUN needs INIT_* $mm->init_PERL; # generic ECHO needs ABSPERLRUN $mm->init_tools; # need ECHO diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/eu_command.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/eu_command.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/eu_command.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/eu_command.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,10 @@ #!/usr/bin/perl -w +use strict; +use warnings; + +my $Testfile; + BEGIN { unshift @INC, 't/lib/'; } diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/FIRST_MAKEFILE.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/FIRST_MAKEFILE.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/FIRST_MAKEFILE.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/FIRST_MAKEFILE.t 2020-10-24 18:43:34.000000000 +0000 @@ -5,6 +5,7 @@ } use strict; +use warnings; use Test::More tests => 7; use MakeMaker::Test::Setup::BFD; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/fixin.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/fixin.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/fixin.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/fixin.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ #!/usr/bin/perl -w +use strict; +use warnings; + # Try to test fixin. I say "try" because what fixin will actually do # is highly variable from system to system. diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/fix_libs.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/fix_libs.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/fix_libs.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/fix_libs.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,6 +7,7 @@ } use strict; +use warnings; use lib './lib'; use Test::More 'no_plan'; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/hints.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/hints.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/hints.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/hints.t 2021-02-21 11:01:31.000000000 +0000 @@ -61,9 +61,8 @@ local $SIG{__WARN__} = sub { $stderr .= join '', @_ }; $mm->check_hints; - is( $stderr, < 52; use MakeMaker::Test::Utils; use MakeMaker::Test::Setup::BFD; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/INST.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/INST.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/INST.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/INST.t 2020-10-24 18:43:34.000000000 +0000 @@ -10,6 +10,7 @@ } use strict; +use warnings; use Test::More tests => 26; use MakeMaker::Test::Utils; use MakeMaker::Test::Setup::BFD; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/is_of_type.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/is_of_type.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/is_of_type.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/is_of_type.t 2020-10-24 18:43:34.000000000 +0000 @@ -8,6 +8,7 @@ use lib './lib'; use strict; +use warnings; use ExtUtils::MakeMaker; use Test::More "no_plan"; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/NoXS.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/NoXS.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/NoXS.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/NoXS.pm 2020-10-24 18:43:34.000000000 +0000 @@ -2,6 +2,8 @@ # Disable all XS loading. +use strict; +use warnings; use Carp; require DynaLoader; @@ -11,12 +13,18 @@ delete $DynaLoader::{boot_DynaLoader}; if ($^O eq 'MSWin32') { + # Load Win32. Then clear the stash of all other entries but GetCwd and SetChildShowWindow + # SetChildShowWindow and GetCwd are provided by perl core in modern perls, so we + # can use them in miniperl. on older perls, we can load them from Win32 so the + # test can proceed as normal. + require Win32; - my $GetCwd = *{'Win32::GetCwd'}{CODE}; - my $SetChildShowWindow = *{'Win32::SetChildShowWindow'}{CODE}; - %{*main::Win32::{HASH}} = (); - *{'Win32::GetCwd'} = $GetCwd; - *{'Win32::SetChildShowWindow'} = $SetChildShowWindow; + + foreach my $slot (keys %Win32::) { + next if $slot eq 'GetCwd'; + next if $slot eq 'SetChildShowWindow'; + delete $Win32::{$slot}; + } } # This isn't 100%. Things like Win32.pm will crap out rather than diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/BFD.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/BFD.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/BFD.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/BFD.pm 2020-10-24 18:43:34.000000000 +0000 @@ -5,6 +5,7 @@ @EXPORT = qw(setup_recurs teardown_recurs); use strict; +use warnings; use File::Path; use File::Basename; use MakeMaker::Test::Utils; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm 2020-10-24 18:43:34.000000000 +0000 @@ -5,6 +5,7 @@ @EXPORT = qw(run_tests list_dynamic list_static); use strict; +use warnings; use File::Path; use MakeMaker::Test::Utils; use Config; @@ -134,7 +135,7 @@ 'Makefile.PL' => sprintf($MAKEFILEPL, 'Test', 'lib/XS/Test.pm', qq{'$typemap'}, ''), ); -my %label2files = (basic => \%Files); +my %label2files = (basic => \%Files, basic2 => \%Files); # basic2 so no clash $label2files{bscode} = +{ %{ $label2files{'basic'} }, # make copy @@ -381,7 +382,7 @@ sub list_static { ( - ( !$Config{usedl} ? [ 'basic', '', '' ] : ()), # still needs testing on static perl + ( !$Config{usedl} ? [ 'basic2', '', '' ] : ()), # still needs testing on static perl [ 'static', '', '' ], [ 'basic', ' static', '_static' ], [ 'multi', ' static', '_static' ], @@ -400,11 +401,17 @@ $^O !~ m!^(VMS|aix)$! ? ([ 'subdirscomplex', '', '' ]) : (), ) : (), # DynaLoader different [ 'subdirs', '', '' ], - [ 'subdirsstatic', ' LINKTYPE=dynamic', ' LINKTYPE=dynamic' ], - [ 'subdirsstatic', ' dynamic', '_dynamic' ], + # https://github.com/Perl/perl5/issues/17601 + # https://rt.cpan.org/Ticket/Display.html?id=115321 + $^O ne 'MSWin32' ? ( + [ 'subdirsstatic', ' LINKTYPE=dynamic', ' LINKTYPE=dynamic' ], + [ 'subdirsstatic', ' dynamic', '_dynamic' ], + ) : (), [ 'multi', '', '' ], - [ 'staticmulti', ' LINKTYPE=dynamic', ' LINKTYPE=dynamic' ], - [ 'staticmulti', ' dynamic', '_dynamic' ], + $^O ne 'MSWin32' ? ( + [ 'staticmulti', ' LINKTYPE=dynamic', ' LINKTYPE=dynamic' ], + [ 'staticmulti', ' dynamic', '_dynamic' ], + ) : (), [ 'xsbuild', '', '' ], [ 'subdirsskip', '', '' ], ); diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Utils.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Utils.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Utils.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Utils.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,6 +2,7 @@ use File::Spec; use strict; +use warnings; use Config; use Cwd qw(getcwd); use Carp qw(croak); @@ -358,12 +359,18 @@ =cut sub have_compiler { + return 1 if $ENV{PERL_CORE}; + my $have_compiler = 0; - eval { - require ExtUtils::CBuilder; - my $cb = ExtUtils::CBuilder->new(quiet=>1); - $have_compiler = $cb->have_compiler; - }; + + in_dir(sub { + eval { + require ExtUtils::CBuilder; + my $cb = ExtUtils::CBuilder->new(quiet=>1); + $have_compiler = $cb->have_compiler; + }; + }); + return $have_compiler; } diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/lib/TieIn.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/t/lib/TieIn.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/lib/TieIn.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/lib/TieIn.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ package TieIn; +use strict; +use warnings; + sub TIEHANDLE { bless( \(my $scalar), $_[0]); } diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/lib/TieOut.pm perl-5.34.0/cpan/ExtUtils-MakeMaker/t/lib/TieOut.pm --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/lib/TieOut.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/lib/TieOut.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ package TieOut; +use strict; +use warnings; + sub TIEHANDLE { my $scalar = ''; bless( \$scalar, $_[0]); diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/Liblist.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/Liblist.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/Liblist.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/Liblist.t 2020-10-24 18:43:34.000000000 +0000 @@ -4,6 +4,7 @@ chdir 't'; use strict; +use warnings; use Test::More tests => 6; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/make.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/make.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/make.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/make.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ #!/usr/bin/perl -w +use strict; +use warnings; + BEGIN { unshift @INC, 't/lib/'; } diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/maketext_filter.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/maketext_filter.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/maketext_filter.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/maketext_filter.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ #!/usr/bin/perl -w +use strict; +use warnings; + BEGIN { unshift @INC, 't/lib'; } diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/metafile_data.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/metafile_data.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/metafile_data.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/metafile_data.t 2020-10-24 18:43:34.000000000 +0000 @@ -3,6 +3,7 @@ } use strict; +use warnings; use Test::More; BEGIN { eval { require CPAN::Meta; CPAN::Meta->VERSION(2.143240) } diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/metafile_file.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/metafile_file.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/metafile_file.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/metafile_file.t 2020-10-24 18:43:34.000000000 +0000 @@ -8,6 +8,7 @@ } use strict; +use warnings; use Test::More tests => 16; require ExtUtils::MM_Any; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/miniperl.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/miniperl.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/miniperl.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/miniperl.t 2020-10-24 18:43:34.000000000 +0000 @@ -4,6 +4,7 @@ # This mostly means no XS modules. use strict; +use warnings; use lib 't/lib'; use Test::More; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/min_perl_version.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/min_perl_version.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/min_perl_version.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/min_perl_version.t 2020-11-18 22:09:15.000000000 +0000 @@ -63,6 +63,7 @@ perl_lib(); +rmtree($DIRNAME); hash2files($DIRNAME, \%FILES); END { ok( chdir(File::Spec->updir), 'leaving dir' ); @@ -132,7 +133,7 @@ }; ok( '' ne $warnings, 'MIN_PERL_VERSION=999999 triggers a warning' ); is( $warnings, - "Warning: Perl version 999999 or higher required. We run $].\n", + "Warning: Perl version 999999.000 or higher required. We run $].\n", ' with expected message text' ); is( $@, '', ' and without a hard failure' ); @@ -146,8 +147,7 @@ }; is( $warnings, '', 'MIN_PERL_VERSION=999999 and PREREQ_FATAL: no warning' ); is( $@, <<"END", ' correct exception' ); -MakeMaker FATAL: perl version too low for this distribution. -Required is 999999. We run $]. +MakeMaker FATAL: Perl version 999999.000 or higher required. We run $]. END $warnings = ''; @@ -158,7 +158,7 @@ ); }; is( $@, <<'END', 'Invalid MIN_PERL_VERSION is fatal' ); -Warning: MIN_PERL_VERSION is not in a recognized format. +MakeMaker FATAL: MIN_PERL_VERSION (foobar) is not in a recognized format. Recommended is a quoted numerical value like '5.005' or '5.008001'. END diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/Mkbootstrap.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/Mkbootstrap.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/Mkbootstrap.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/Mkbootstrap.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ #!/usr/bin/perl -w +use strict; +use warnings; + BEGIN { unshift @INC, 't/lib/'; } diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/MM_Any.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/MM_Any.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/MM_Any.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/MM_Any.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ #!/usr/bin/perl -w +use strict; +use warnings; + BEGIN { unshift @INC, 't/lib'; } diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/MM_BeOS.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/MM_BeOS.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/MM_BeOS.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/MM_BeOS.t 2020-10-24 18:43:34.000000000 +0000 @@ -5,6 +5,8 @@ } chdir 't'; +use strict; +use warnings; use Test::More; BEGIN { diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/MM_Cygwin.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/MM_Cygwin.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/MM_Cygwin.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/MM_Cygwin.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ chdir 't'; use strict; +use warnings; use Test::More; BEGIN { @@ -116,7 +117,7 @@ # Our copy of Perl (with a unix-path) should always be executable. SKIP: { - skip "The Perl may not be installed yet when in core" if $ENV{PERL_CORE}; + skip "The Perl may not be installed yet when in core", 1 if $ENV{PERL_CORE}; ok(MM->maybe_command($Config{perlpath}), qq{'$Config{perlpath}' should be executable}); } diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/MM_NW5.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/MM_NW5.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/MM_NW5.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/MM_NW5.t 2020-10-24 18:43:34.000000000 +0000 @@ -5,7 +5,8 @@ } chdir 't'; - +use strict; +use warnings; use Test::More; BEGIN { diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/MM_OS2.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/MM_OS2.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/MM_OS2.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/MM_OS2.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ chdir 't'; use strict; +use warnings; use Test::More; if ($^O =~ /os2/i) { plan( tests => 32 ); diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/MM_Unix.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/MM_Unix.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/MM_Unix.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/MM_Unix.t 2020-10-24 18:43:34.000000000 +0000 @@ -19,6 +19,7 @@ BEGIN { use_ok( 'ExtUtils::MM_Unix' ); } use strict; +use warnings; use File::Spec; my $class = 'ExtUtils::MM_Unix'; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/MM_VMS.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/MM_VMS.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/MM_VMS.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/MM_VMS.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,10 +1,15 @@ #!/usr/bin/perl -w +use strict; +use warnings; + BEGIN { unshift @INC, 't/lib'; } chdir 't'; +my @Methods; + BEGIN { @Methods = (qw(wraplist rootdir diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/MM_Win32.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/MM_Win32.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/MM_Win32.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/MM_Win32.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ chdir 't'; use strict; +use warnings; use Test::More; BEGIN { diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/oneliner.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/oneliner.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/oneliner.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/oneliner.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ #!/usr/bin/perl -w +use strict; +use warnings; + BEGIN { unshift @INC, 't/lib'; } diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/os_unsupported.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/os_unsupported.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/os_unsupported.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/os_unsupported.t 2020-10-24 18:43:34.000000000 +0000 @@ -5,6 +5,7 @@ } use strict; +use warnings; use Test::More tests => 1; use ExtUtils::MakeMaker; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/parse_version.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/parse_version.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/parse_version.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/parse_version.t 2021-02-21 11:01:31.000000000 +0000 @@ -1,5 +1,8 @@ #!/usr/bin/perl -w +use strict; +use warnings; + BEGIN { unshift @INC, 't/lib'; } @@ -19,13 +22,13 @@ q[*FOO::VERSION = \'1.11';] => '1.11', '$VERSION = 0.02' => 0.02, '$VERSION = 0.0' => 0.0, - '$VERSION = -1.0' => -1.0, + '$VERSION = -1.0' => 'undef', '$VERSION = undef' => 'undef', '$wibble = 1.0' => undef, q[my $VERSION = '1.01'] => 'undef', q[local $VERSION = '1.02'] => 'undef', q[local $FOO::VERSION = '1.30'] => 'undef', - q[if( $Foo::VERSION >= 3.00 ) {]=> 'undef', + q[if( $Foo::VERSION >= 3.00 ) {]=> undef, q[our $VERSION = '1.23';] => '1.23', q[$CGI::VERSION='3.63'] => '3.63', q[$VERSION = "1.627"; # ==> ALSO update the version in the pod text below!] => '1.627', @@ -44,7 +47,6 @@ '$VERSION = substr(q$Revision: 2.8 $, 10) + 2 . "";' => '4.8', q[our $VERSION = do { my @r = ( q$Revision: 2.7 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };] => '2.07', # Fucking seriously? 'elsif ( $Something::VERSION >= 1.99 )' => undef, - ); if( $Has_Version ) { @@ -60,11 +62,9 @@ $versions{'package Foo::Bar v1.2.3;' } = 'v1.2.3'; $versions{' package Foo::Bar 1.23 ;' } = '1.23'; $versions{"package Foo'Bar 1.23;" } = '1.23'; - $versions{"package Foo::Bar 1.2.3;" } = '1.2.3'; $versions{'package Foo 1.230;' } = '1.230'; - $versions{'package Foo 1.23_01;' } = '1.23_01'; - $versions{'package Foo v1.23_01;' } = 'v1.23_01'; - $versions{q["package Foo 1.23"]} = 'undef'; + $versions{q["package Foo 1.23"]} = undef; + $versions{q[our $VERSION = "1.00 / the fucking fuck";]} = 'undef'; $versions{<<'END'} = '1.23'; package Foo 1.23; our $VERSION = 2.34; @@ -88,10 +88,7 @@ $versions{'package Foo::Bar v1.2.3 { }' } = 'v1.2.3'; $versions{' package Foo::Bar 1.23 { }' } = '1.23'; $versions{"package Foo'Bar 1.23 { }" } = '1.23'; - $versions{"package Foo::Bar 1.2.3 { }" } = '1.2.3'; $versions{'package Foo 1.230 { }' } = '1.230'; - $versions{'package Foo 1.23_01 { }' } = '1.23_01'; - $versions{'package Foo v1.23_01 { }' } = 'v1.23_01'; $versions{<<'END'} = '1.23'; package Foo 1.23 { our $VERSION = 2.34; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/pm.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/pm.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/pm.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/pm.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,6 +7,7 @@ } use strict; +use warnings; use Test::More tests => 6; use TieOut; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/pm_to_blib.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/pm_to_blib.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/pm_to_blib.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/pm_to_blib.t 2020-10-24 18:43:34.000000000 +0000 @@ -3,6 +3,7 @@ # Ensure pm_to_blib runs at the right times. use strict; +use warnings; use lib 't/lib'; use File::Temp qw[tempdir]; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/pod2man.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/pod2man.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/pod2man.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/pod2man.t 2020-10-24 18:43:34.000000000 +0000 @@ -3,6 +3,7 @@ # Test our simulation of pod2man use strict; +use warnings; use lib 't/lib'; use ExtUtils::Command::MM; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/postamble.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/postamble.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/postamble.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/postamble.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,6 +7,7 @@ } use strict; +use warnings; use Config; use Test::More tests => 8; use MakeMaker::Test::Utils; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/prefixify.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/prefixify.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/prefixify.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/prefixify.t 2020-10-24 18:43:34.000000000 +0000 @@ -5,6 +5,7 @@ } use strict; +use warnings; use Test::More; if( $^O eq 'VMS' ) { diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/prereq_print.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/prereq_print.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/prereq_print.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/prereq_print.t 2020-10-24 18:43:34.000000000 +0000 @@ -5,6 +5,7 @@ } use strict; +use warnings; use Config; use Test::More; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/prereq.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/prereq.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/prereq.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/prereq.t 2020-10-24 18:43:34.000000000 +0000 @@ -8,6 +8,7 @@ } use strict; +use warnings; use Config; use Test::More tests => 21; use File::Temp qw[tempdir]; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/problems.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/problems.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/problems.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/problems.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ chdir 't'; use strict; +use warnings; use Test::More tests => 5; use ExtUtils::MM; use MakeMaker::Test::Utils; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/prompt.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/prompt.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/prompt.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/prompt.t 2020-10-24 18:43:34.000000000 +0000 @@ -5,6 +5,7 @@ } use strict; +use warnings; use Test::More tests => 11; use ExtUtils::MakeMaker; use TieOut; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/revision.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/revision.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/revision.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/revision.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ #!/usr/bin/perl -w +use strict; +use warnings; + BEGIN { unshift @INC, 't/lib'; } diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/several_authors.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/several_authors.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/several_authors.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/several_authors.t 2020-10-24 18:43:34.000000000 +0000 @@ -8,7 +8,7 @@ } use strict; - +use warnings; use TieOut; use MakeMaker::Test::Utils; use Config; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/split_command.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/split_command.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/split_command.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/split_command.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,8 @@ chdir 't'; +use strict; +use warnings; use Config; use ExtUtils::MM; use MakeMaker::Test::Utils; @@ -31,12 +33,12 @@ my @cmds = $mm->split_command($echo, @test_args); isnt( @cmds, 0 ); -@results = _run(@cmds); +my @results = _run(@cmds); is( join('', @results), join('', @test_args)); my %test_args = ( foo => 42, bar => 23, car => 'har' ); -$even_args = $mm->oneliner(q{print !(@ARGV % 2)}); +my $even_args = $mm->oneliner(q{print !(@ARGV % 2)}); @cmds = $mm->split_command($even_args, %test_args); isnt( @cmds, 0 ); diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/test_boilerplate.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/test_boilerplate.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/test_boilerplate.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/test_boilerplate.t 2020-10-24 18:43:34.000000000 +0000 @@ -12,6 +12,7 @@ # Use things from t/lib/ use lib './lib'; use strict; +use warnings; use ExtUtils::MakeMaker; use Test::More tests => 1; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/testlib.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/testlib.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/testlib.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/testlib.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,8 @@ } chdir 't'; +use strict; +use warnings; use Test::More tests => 5; BEGIN { diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/testrules.yml perl-5.34.0/cpan/ExtUtils-MakeMaker/t/testrules.yml --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/testrules.yml 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/testrules.yml 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ ---- -# TAP::Harness test rules -# "t\02-xsdynamic.t" (and possibly "t\03-xsstatic.t") should *not* be run in parallel -# ... allowing overlap of these tests causes race conditions which lead to intermittent failures -seq: - - seq: - # serialize all tests in files matching "t/0*.t" - - t{\\,/}0*.t - - par: - # run all other tests in parallel - - ** diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/unicode.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/unicode.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/unicode.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/unicode.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ chdir 't'; use strict; +use warnings; use ExtUtils::MM; use MakeMaker::Test::Utils qw(makefile_name make make_run run hash2files); use Test::More; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/VERSION_FROM.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/VERSION_FROM.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/VERSION_FROM.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/VERSION_FROM.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,6 +7,7 @@ chdir 't'; use strict; +use warnings; use Test::More tests => 1; use MakeMaker::Test::Utils; use ExtUtils::MakeMaker; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/vstrings.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/vstrings.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/vstrings.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/vstrings.t 2020-10-24 18:43:34.000000000 +0000 @@ -93,7 +93,7 @@ local $_; SKIP: { skip "No vstring test <5.8", 2 - if "$]" < 5.008 && $pkg eq 'BareV2String' && $descrip =~ m!^2-part!; + if "$]" <= 5.008 && $pkg eq 'BareV2String' && $descrip =~ m!^2-part!; my $warnings; eval { $warnings = capture_make("Fake::$pkg" => $version); }; is($@, '', "$descrip not fatal") or skip "$descrip WM failed", 1; diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/WriteEmptyMakefile.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/WriteEmptyMakefile.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/WriteEmptyMakefile.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/WriteEmptyMakefile.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ #!/usr/bin/perl -w +use strict; +use warnings; + # This is a test of WriteEmptyMakefile. BEGIN { diff -Nru perl-5.32.1/cpan/ExtUtils-MakeMaker/t/writemakefile_args.t perl-5.34.0/cpan/ExtUtils-MakeMaker/t/writemakefile_args.t --- perl-5.32.1/cpan/ExtUtils-MakeMaker/t/writemakefile_args.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-MakeMaker/t/writemakefile_args.t 2020-10-24 18:43:34.000000000 +0000 @@ -8,6 +8,7 @@ } use strict; +use warnings; use Config; use Test::More tests => 43; diff -Nru perl-5.32.1/cpan/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm perl-5.34.0/cpan/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm --- perl-5.32.1/cpan/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm 2020-12-18 09:57:55.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm 2021-01-20 23:04:44.000000000 +0000 @@ -1,4 +1,4 @@ -package ExtUtils::Manifest; # git description: 1.71-18-g17b7919 +package ExtUtils::Manifest; # git description: 1.72-7-g54209ce require Exporter; use Config; @@ -10,7 +10,7 @@ use strict; use warnings; -our $VERSION = '1.72'; +our $VERSION = '1.73'; our @ISA = ('Exporter'); our @EXPORT_OK = qw(mkmanifest manicheck filecheck fullcheck skipcheck @@ -56,7 +56,7 @@ our $Quiet = 0; our $MANIFEST = 'MANIFEST'; -our $DEFAULT_MSKIP = File::Spec->catfile( dirname(__FILE__), "$MANIFEST.SKIP" ); +our $DEFAULT_MSKIP = File::Spec->rel2abs(File::Spec->catfile( dirname(__FILE__), "$MANIFEST.SKIP" )); =head1 NAME @@ -65,7 +65,7 @@ =head1 VERSION -version 1.72 +version 1.73 =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/ExtUtils-Manifest/lib/ExtUtils/MANIFEST.SKIP perl-5.34.0/cpan/ExtUtils-Manifest/lib/ExtUtils/MANIFEST.SKIP --- perl-5.32.1/cpan/ExtUtils-Manifest/lib/ExtUtils/MANIFEST.SKIP 2020-12-18 09:57:55.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-Manifest/lib/ExtUtils/MANIFEST.SKIP 2021-01-20 23:04:44.000000000 +0000 @@ -5,6 +5,7 @@ ,v$ \B\.svn\b \B\.git\b +^\.github\b \B\.gitignore\b \b_darcs\b \B\.cvsignore$ @@ -51,6 +52,8 @@ \B\.DS_Store # Mac OSX SMB mount metadata files \B\._ +# Placeholder files created when iCloud will "optimize Mac storage" +\.i[cC]loud$ # Avoid Devel::Cover and Devel::CoverX::Covered files. \bcover_db\b diff -Nru perl-5.32.1/cpan/ExtUtils-PL2Bat/lib/ExtUtils/PL2Bat.pm perl-5.34.0/cpan/ExtUtils-PL2Bat/lib/ExtUtils/PL2Bat.pm --- perl-5.32.1/cpan/ExtUtils-PL2Bat/lib/ExtUtils/PL2Bat.pm 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-PL2Bat/lib/ExtUtils/PL2Bat.pm 2021-02-21 11:01:31.000000000 +0000 @@ -0,0 +1,194 @@ +package ExtUtils::PL2Bat; +$ExtUtils::PL2Bat::VERSION = '0.004'; +use strict; +use warnings; + +use 5.006; + +use Config; +use Carp qw/croak/; + +# In core, we can't use any other modules except those that already live in +# lib/, so Exporter is not available to us. +sub import { + my ($self, @functions) = @_; + @functions = 'pl2bat' if not @functions; + my $caller = caller; + for my $function (@functions) { + no strict 'refs'; + *{"$caller\::$function"} = \&{$function}; + } +} + +sub pl2bat { + my %opts = @_; + + # NOTE: %0 is already enclosed in doublequotes by cmd.exe, as appropriate + $opts{ntargs} = '-x -S %0 %*' unless exists $opts{ntargs}; + $opts{otherargs} = '-x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9' unless exists $opts{otherargs}; + + $opts{stripsuffix} = qr/\.plx?/ unless exists $opts{stripsuffix}; + + if (not exists $opts{out}) { + $opts{out} = $opts{in}; + $opts{out} =~ s/$opts{stripsuffix}$//i; + $opts{out} .= '.bat' unless $opts{in} =~ /\.bat$/i or $opts{in} eq '-'; + } + + my $head = <<"EOT"; + \@rem = '--*-Perl-*-- + \@set "ErrorLevel=" + \@if "%OS%" == "Windows_NT" \@goto WinNT + \@perl $opts{otherargs} + \@set ErrorLevel=%ErrorLevel% + \@goto endofperl + :WinNT + \@perl $opts{ntargs} + \@set ErrorLevel=%ErrorLevel% + \@if NOT "%COMSPEC%" == "%SystemRoot%\\system32\\cmd.exe" \@goto endofperl + \@if %ErrorLevel% == 9009 \@echo You do not have Perl in your PATH. + \@goto endofperl + \@rem '; +EOT + + $head =~ s/^\s+//gm; + my $headlines = 2 + ($head =~ tr/\n/\n/); + my $tail = <<'EOT'; + __END__ + :endofperl + @set "ErrorLevel=" & @goto _undefined_label_ 2>NUL || @"%COMSPEC%" /d/c @exit %ErrorLevel% +EOT + $tail =~ s/^\s+//gm; + + my $linedone = 0; + my $taildone = 0; + my $linenum = 0; + my $skiplines = 0; + + my $start = $Config{startperl}; + $start = '#!perl' unless $start =~ /^#!.*perl/; + + open my $in, '<', $opts{in} or croak "Can't open $opts{in}: $!"; + my @file = <$in>; + close $in; + + foreach my $line ( @file ) { + $linenum++; + if ( $line =~ /^:endofperl\b/ ) { + if (!exists $opts{update}) { + warn "$opts{in} has already been converted to a batch file!\n"; + return; + } + $taildone++; + } + if ( not $linedone and $line =~ /^#!.*perl/ ) { + if (exists $opts{update}) { + $skiplines = $linenum - 1; + $line .= '#line '.(1+$headlines)."\n"; + } else { + $line .= '#line '.($linenum+$headlines)."\n"; + } + $linedone++; + } + if ( $line =~ /^#\s*line\b/ and $linenum == 2 + $skiplines ) { + $line = ''; + } + } + + open my $out, '>', $opts{out} or croak "Can't open $opts{out}: $!"; + print $out $head; + print $out $start, ( $opts{usewarnings} ? ' -w' : '' ), + "\n#line ", ($headlines+1), "\n" unless $linedone; + print $out @file[$skiplines..$#file]; + print $out $tail unless $taildone; + close $out; + + return $opts{out}; +} + +1; + +# ABSTRACT: Batch file creation to run perl scripts on Windows + +__END__ + +=pod + +=encoding UTF-8 + +=head1 NAME + +ExtUtils::PL2Bat - Batch file creation to run perl scripts on Windows + +=head1 VERSION + +version 0.004 + +=head1 OVERVIEW + +This module converts a perl script into a batch file that can be executed on Windows/DOS-like operating systems. This is intended to allow you to use a Perl script like regular programs and batch files where you just enter the name of the script [probably minus the extension] plus any command-line arguments and the script is found in your B and run. + +=head1 FUNCTIONS + +=head2 pl2bat(%opts) + +This function takes a perl script and write a batch file that contains the script. This is sometimes necessary + +=over 8 + +=item * C + +The name of the script that is to be batchified. This argument is mandatory. + +=item * C + +The name of the output batch file. If not given, it will be generated using C and C. + +=item * C + +Arguments to invoke perl with in generated batch file when run from +Windows NT. Defaults to S<'-x -S %0 %*'>. + +=item * C + +Arguments to invoke perl with in generated batch file except when +run from Windows NT (ie. when run from DOS, Windows 3.1, or Windows 95). +Defaults to S<'-x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9'>. + +=item * C + +Strip a suffix string from file name before appending a ".bat" +suffix. The suffix is not case-sensitive. It can be a regex or a string and a trailing +C<$> is always assumed). Defaults to C. + +=item * C + +With the C +option, C<" -w"> is added after the value of C<$Config{startperl}>. +If a line matching C already exists in the script, +then it is not changed and the B<-w> option is ignored. + +=item * C + +If the script appears to have already been processed by B, +then the script is skipped and not processed unless C was +specified. If C is specified, the existing preamble is replaced. + +=back + +=head1 ACKNOWLEDGEMENTS + +This code was taken from Module::Build and then modified; which had taken it from perl's pl2bat script. This module is an attempt at unifying all three implementations. + +=head1 AUTHOR + +Leon Timmermans + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2015 by Leon Timmermans. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut diff -Nru perl-5.32.1/cpan/ExtUtils-PL2Bat/t/make_executable.t perl-5.34.0/cpan/ExtUtils-PL2Bat/t/make_executable.t --- perl-5.32.1/cpan/ExtUtils-PL2Bat/t/make_executable.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/ExtUtils-PL2Bat/t/make_executable.t 2020-10-24 18:43:34.000000000 +0000 @@ -0,0 +1,89 @@ +#!/usr/bin/perl + +use strict; +use warnings FATAL => 'all'; +use English; + +use Config; +use Test::More; +use ExtUtils::PL2Bat; +use Cwd qw/cwd/; + +my @test_vals = ( 0, 1, 2, 3, -1, -2, 65535, 65536, 65537, 47, 100, 200, 255, 256, 257, 258, 511, 512, 513, -255, -256, -20012001 ); + +plan($OSNAME eq 'MSWin32' ? ( tests => (($#test_vals+1)*5)+2 ) : ( skip_all => 'Only usable on Windows' )); + +my $perl_in_fname = 'test_perl_source'; + +open my $out, '>', $perl_in_fname or die qq{Couldn't create source file ("$perl_in_fname"): $!}; +print $out "#! perl -w\nexit \$ARGV[0];\n"; +close $out; + +pl2bat(in => $perl_in_fname); + +my $batch_out_fname = $perl_in_fname.'.bat'; + +ok (-e "$batch_out_fname", qq{Executable file exists ("$batch_out_fname")}); + +my $int_max_8bit = 2**8; +my $int_max_16bit = 2**16; + +my $path_with_cwd = construct_test_PATH(); + +foreach my $input_val ( @test_vals ) { + local $ENV{PATH} = $path_with_cwd; + my $qx_output = q//; + my $qx_retval = 0; + my $error_level = 0; + my $status = q//; + my $success = 1; + + $success &&= eval { $qx_output = qx{"$batch_out_fname" $input_val}; $qx_retval = $CHILD_ERROR; $qx_retval != -1; }; + $qx_retval = ( $qx_retval > 0 ) ? ( $qx_retval >> 8 ) : $qx_retval; + + $success &&= eval { $error_level = qx{"$batch_out_fname" $input_val & call echo ^%ERRORLEVEL^%}; 1; }; + $error_level =~ s/\r?\n$//msx; + + $success &&= eval { $status = qx{"$batch_out_fname" $input_val && (echo PROCESS_SUCCESS) || (echo PROCESS_FAILURE)}; 1; }; + $status =~ s/\r?\n$//msx; + + # (for qx/.../) post-call status values ($CHILD_ERROR) can be [ 0 ... 255 ]; values outside that range will be returned as `value % 256` + my $expected_qx_retval = ($input_val % $int_max_8bit); + + # `exit $value` will set ERRORLEVEL to $value for values of [ -1, 0 ... 65535 ]; values outside that range will set ERRORLEVEL to `$value % 65536` + my $expected_error_level = ($input_val == -1) ? -1 : ($input_val % $int_max_16bit); + + is $success, 1, qq{`"$batch_out_fname" $input_val` executed successfully}; + is $qx_output, q//, qq{qx/"$batch_out_fname" $input_val/ returns expected empty output}; # assure no extraneous output from BAT wrap + is $qx_retval, $expected_qx_retval, qq{qx/"$batch_out_fname" $input_val/ returns expected $CHILD_ERROR ($expected_qx_retval)}; + is $error_level, $expected_error_level, qq{"$batch_out_fname": `exit $input_val` set expected ERRORLEVEL ($expected_error_level)}; + is $status, (($input_val % $int_max_16bit) == 0) ? 'PROCESS_SUCCESS' : 'PROCESS_FAILURE', qq{`"$batch_out_fname" $input_val` process exit ($status) is correct}; +} + +unlink $perl_in_fname, $batch_out_fname; + +# the test needs CWD in PATH to check the created .bat files, but under win2k +# PATH must not be too long. so to keep any win2k smokers happy, we construct +# a new PATH that contains the dirs which hold cmd.exe, perl.exe, and CWD + +sub construct_test_PATH { + my $perl_path = $^X; + my $cmd_path = $ENV{ComSpec} || `where cmd`; # where doesn't seem to work on all windows versions + $_ =~ s/[\\\/][^\\\/]+$// for $perl_path, $cmd_path; # strip executable names + + my @path_fallbacks = grep /\Q$ENV{SystemRoot}\E|system32|winnt|windows/i, split $Config{path_sep}, $ENV{PATH}; + + my $path_with_cwd = join $Config{path_sep}, @path_fallbacks, $cmd_path, $perl_path, cwd(); + + my ($perl) = ( $^X =~ /[\\\/]([^\\]+)$/ ); # in case the perl executable name differs + note "using perl executable name: $perl"; + + local $ENV{PATH} = $path_with_cwd; + my $test_out = `$perl -e 1 2>&1`; + is $test_out, "", "perl execution with temp path works" + or diag "make_executable.t tmp path: $path_with_cwd"; + diag "make_executable.t PATH likely did not contain cmd.exe" + if !defined $test_out; + + return $path_with_cwd; +} diff -Nru perl-5.32.1/cpan/File-Fetch/lib/File/Fetch.pm perl-5.34.0/cpan/File-Fetch/lib/File/Fetch.pm --- perl-5.32.1/cpan/File-Fetch/lib/File/Fetch.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/File-Fetch/lib/File/Fetch.pm 2020-11-18 22:09:15.000000000 +0000 @@ -22,7 +22,7 @@ $FTP_PASSIVE $TIMEOUT $DEBUG $WARN $FORCEIPV4 ]; -$VERSION = '0.56'; +$VERSION = '1.00'; $VERSION = eval $VERSION; # avoid warnings with development releases $PREFER_BIN = 0; # XXX TODO implement $FROM_EMAIL = 'File-Fetch@example.com'; @@ -52,9 +52,6 @@ local $Module::Load::Conditional::VERBOSE = 0; local $Module::Load::Conditional::VERBOSE = 0; -### Fix CVE-2016-1238 ### -local $Module::Load::Conditional::FORCE_SAFE_INC = 1; - ### see what OS we are on, important for file:// uris ### use constant ON_WIN => ($^O eq 'MSWin32'); use constant ON_VMS => ($^O eq 'VMS'); @@ -576,6 +573,8 @@ $use_list->{'LWP::Protocol::https'} = '0'; } + ### Fix CVE-2016-1238 ### + local $Module::Load::Conditional::FORCE_SAFE_INC = 1; unless( can_load( modules => $use_list ) ) { $METHOD_FAIL->{'lwp'} = 1; return; @@ -633,6 +632,8 @@ }; + ### Fix CVE-2016-1238 ### + local $Module::Load::Conditional::FORCE_SAFE_INC = 1; unless( can_load(modules => $use_list) ) { $METHOD_FAIL->{'httptiny'} = 1; return; @@ -672,6 +673,8 @@ 'MIME::Base64' => '0', }; + ### Fix CVE-2016-1238 ### + local $Module::Load::Conditional::FORCE_SAFE_INC = 1; unless( can_load(modules => $use_list) ) { $METHOD_FAIL->{'httplite'} = 1; return; @@ -752,6 +755,8 @@ 'IO::Select' => '0.0', }; + ### Fix CVE-2016-1238 ### + local $Module::Load::Conditional::FORCE_SAFE_INC = 1; unless( can_load(modules => $use_list) ) { $METHOD_FAIL->{'iosock'} = 1; return; @@ -835,6 +840,8 @@ ### required modules ### my $use_list = { 'Net::FTP' => 0 }; + ### Fix CVE-2016-1238 ### + local $Module::Load::Conditional::FORCE_SAFE_INC = 1; unless( can_load( modules => $use_list ) ) { $METHOD_FAIL->{'netftp'} = 1; return; diff -Nru perl-5.32.1/cpan/File-Path/lib/File/Path.pm perl-5.34.0/cpan/File-Path/lib/File/Path.pm --- perl-5.32.1/cpan/File-Path/lib/File/Path.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/File-Path/lib/File/Path.pm 2020-11-18 22:09:15.000000000 +0000 @@ -18,7 +18,7 @@ use Exporter (); use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); -$VERSION = '2.16'; +$VERSION = '2.18'; $VERSION = eval $VERSION; @ISA = qw(Exporter); @EXPORT = qw(mkpath rmtree); @@ -633,7 +633,7 @@ =head1 VERSION -2.16 - released August 31 2018. +2.18 - released November 4 2020. =head1 SYNOPSIS @@ -1277,7 +1277,7 @@ =head1 COPYRIGHT This module is copyright (C) Charles Bailey, Tim Bunce, David Landgren, -James Keenan and Richard Elberger 1995-2018. All rights reserved. +James Keenan and Richard Elberger 1995-2020. All rights reserved. =head1 LICENSE diff -Nru perl-5.32.1/cpan/File-Path/t/Path_root.t perl-5.34.0/cpan/File-Path/t/Path_root.t --- perl-5.32.1/cpan/File-Path/t/Path_root.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/File-Path/t/Path_root.t 2020-10-04 22:17:12.000000000 +0000 @@ -112,7 +112,6 @@ my $max_gid = 0; my $max_group = undef; while ( my @g = getgrent() ) { - print Dumper @g; if ($max_gid < $g[2]) { $max_gid = $g[2]; $max_group = $g[0]; diff -Nru perl-5.32.1/cpan/File-Path/t/Path.t perl-5.34.0/cpan/File-Path/t/Path.t --- perl-5.32.1/cpan/File-Path/t/Path.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/File-Path/t/Path.t 2020-11-18 22:09:15.000000000 +0000 @@ -3,7 +3,7 @@ use strict; -use Test::More tests => 165; +use Test::More tests => 167; use Config; use Fcntl ':mode'; use lib './t'; @@ -845,7 +845,18 @@ my ($least_deep, $next_deepest, $deepest) = create_3_level_subdirs( qw| b5wj8CJcc7gl XTJe2C3WGLg5 VZ_y2T0XfKu3 | ); my (@created, $error); + my $warn; + local $SIG{__WARN__} = sub { $warn = shift }; @created = mkpath($deepest, { mode => 0711, uid => $>, error => \$error }); + SKIP: { + my $skip_count = 1; + skip "Warning should only appear on Windows", $skip_count + unless $^O eq 'MSWin32'; + like($warn, + qr/Option\(s\) implausible on Win32 passed to mkpath\(\) or make_path\(\)/, + 'make_path with final hashref warned due to options implausible on Win32' + ); + } is(scalar(@created), 3, "Provide valid 'uid' argument: 3 subdirectories created"); cleanup_3_level_subdirs($least_deep); @@ -897,7 +908,18 @@ my ($least_deep, $next_deepest, $deepest) = create_3_level_subdirs( qw| BEcigvaBNisY rd4lJ1iZRyeS OyQnDPIBxP2K | ); my (@created, $error); + my $warn; + local $SIG{__WARN__} = sub { $warn = shift }; @created = mkpath($deepest, { mode => 0711, group => $(, error => \$error }); + SKIP: { + my $skip_count = 1; + skip "Warning should only appear on Windows", $skip_count + unless $^O eq 'MSWin32'; + like($warn, + qr/Option\(s\) implausible on Win32 passed to mkpath\(\) or make_path\(\)/, + 'make_path with final hashref warned due to options implausible on Win32' + ); + } is(scalar(@created), 3, "Provide valid 'group' argument: 3 subdirectories created"); cleanup_3_level_subdirs($least_deep); diff -Nru perl-5.32.1/cpan/File-Temp/lib/File/Temp.pm perl-5.34.0/cpan/File-Temp/lib/File/Temp.pm --- perl-5.32.1/cpan/File-Temp/lib/File/Temp.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/File-Temp/lib/File/Temp.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,7 +1,7 @@ -package File::Temp; # git description: v0.2308-7-g3bb4d88 +package File::Temp; # git description: v0.2310-3-gc7148fe # ABSTRACT: return name and handle of a temporary file safely -our $VERSION = '0.2309'; +our $VERSION = '0.2311'; #pod =begin :__INTERNALS #pod @@ -307,6 +307,7 @@ # use of the O_TEMPORARY flag to sysopen. # Usually irrelevant on unix # "use_exlock" => Indicates that O_EXLOCK should be used. Default is false. +# "file_permissions" => file permissions for sysopen(). Default is 0600. # Optionally a reference to a scalar can be passed into the function # On error this will be used to store the reason for the error @@ -339,12 +340,13 @@ # Default options my %options = ( - "open" => 0, - "mkdir" => 0, - "suffixlen" => 0, - "unlink_on_close" => 0, - "use_exlock" => 0, - "ErrStr" => \$tempErrStr, + "open" => 0, + "mkdir" => 0, + "suffixlen" => 0, + "unlink_on_close" => 0, + "use_exlock" => 0, + "ErrStr" => \$tempErrStr, + "file_permissions" => undef, ); # Read the template @@ -480,6 +482,9 @@ } } + my $perms = $options{file_permissions}; + my $has_perms = defined $perms; + $perms = 0600 unless $has_perms; # Now try MAX_TRIES time to open the file for (my $i = 0; $i < MAX_TRIES; $i++) { @@ -502,19 +507,19 @@ my $open_success = undef; if ( $^O eq 'VMS' and $options{"unlink_on_close"} && !$KEEP_ALL) { # make it auto delete on close by setting FAB$V_DLT bit - $fh = VMS::Stdio::vmssysopen($path, $OPENFLAGS, 0600, 'fop=dlt'); + $fh = VMS::Stdio::vmssysopen($path, $OPENFLAGS, $perms, 'fop=dlt'); $open_success = $fh; } else { my $flags = ( ($options{"unlink_on_close"} && !$KEEP_ALL) ? $OPENTEMPFLAGS : $OPENFLAGS ); $flags |= $LOCKFLAG if (defined $LOCKFLAG && $options{use_exlock}); - $open_success = sysopen($fh, $path, $flags, 0600); + $open_success = sysopen($fh, $path, $flags, $perms); } if ( $open_success ) { # in case of odd umask force rw - chmod(0600, $path); + chmod($perms, $path) unless $has_perms; # Opened successfully - return file handle and name return ($fh, $path); @@ -799,7 +804,7 @@ sub _can_unlink_opened_file { - if (grep { $^O eq $_ } qw/MSWin32 os2 VMS dos MacOS haiku/) { + if (grep $^O eq $_, qw/MSWin32 os2 VMS dos MacOS haiku/) { return 0; } else { return 1; @@ -999,7 +1004,7 @@ sub _parse_args { my $leading_template = (scalar(@_) % 2 == 1 ? shift(@_) : '' ); my %args = @_; - %args = map { uc($_), $args{$_} } keys %args; + %args = map +(uc($_) => $args{$_}), keys %args; # template (store it in an array so that it will # disappear from the arg list of tempfile) @@ -1048,7 +1053,8 @@ #pod if UNLINK is set to true (the default). #pod #pod Supported arguments are the same as for C: UNLINK -#pod (defaulting to true), DIR, EXLOCK and SUFFIX. Additionally, the filename +#pod (defaulting to true), DIR, EXLOCK, PERMS and SUFFIX. +#pod Additionally, the filename #pod template is specified using the TEMPLATE option. The OPEN option #pod is not supported (the file is always opened). #pod @@ -1359,6 +1365,11 @@ #pod #pod ($fh, $filename) = tempfile($template, EXLOCK => 1); #pod +#pod By default, the temp file is created with 0600 file permissions. +#pod Use C to change this: +#pod +#pod ($fh, $filename) = tempfile($template, PERMS => 0666); +#pod #pod Options can be combined as required. #pod #pod Will croak() if there is an error. @@ -1371,6 +1382,8 @@ #pod #pod EXLOCK flag available since 0.19. #pod +#pod PERMS flag available since 0.2310. +#pod #pod =cut sub tempfile { @@ -1386,8 +1399,9 @@ "SUFFIX" => '', # Template suffix "UNLINK" => 0, # Do not unlink file on exit "OPEN" => 1, # Open file - "TMPDIR" => 0, # Place tempfile in tempdir if template specified - "EXLOCK" => 0, # Open file with O_EXLOCK + "TMPDIR" => 0, # Place tempfile in tempdir if template specified + "EXLOCK" => 0, # Open file with O_EXLOCK + "PERMS" => undef, # File permissions ); # Check to see whether we have an odd or even number of arguments @@ -1464,12 +1478,13 @@ my ($fh, $path, $errstr); croak "Error in tempfile() using template $template: $errstr" unless (($fh, $path) = _gettemp($template, - "open" => $options{'OPEN'}, - "mkdir"=> 0 , - "unlink_on_close" => $unlink_on_close, - "suffixlen" => length($options{'SUFFIX'}), - "ErrStr" => \$errstr, - "use_exlock" => $options{EXLOCK}, + "open" => $options{OPEN}, + "mkdir" => 0, + "unlink_on_close" => $unlink_on_close, + "suffixlen" => length($options{SUFFIX}), + "ErrStr" => \$errstr, + "use_exlock" => $options{EXLOCK}, + "file_permissions" => $options{PERMS}, ) ); # Set up an exit handler that can do whatever is right for the @@ -2581,7 +2596,7 @@ package ## hide from PAUSE File::Temp::Dir; -our $VERSION = '0.2309'; +our $VERSION = '0.2311'; use File::Path qw/ rmtree /; use strict; @@ -2648,7 +2663,7 @@ =head1 VERSION -version 0.2309 +version 0.2311 =head1 SYNOPSIS @@ -2819,7 +2834,8 @@ if UNLINK is set to true (the default). Supported arguments are the same as for C: UNLINK -(defaulting to true), DIR, EXLOCK and SUFFIX. Additionally, the filename +(defaulting to true), DIR, EXLOCK, PERMS and SUFFIX. +Additionally, the filename template is specified using the TEMPLATE option. The OPEN option is not supported (the file is always opened). @@ -3004,6 +3020,11 @@ ($fh, $filename) = tempfile($template, EXLOCK => 1); +By default, the temp file is created with 0600 file permissions. +Use C to change this: + + ($fh, $filename) = tempfile($template, PERMS => 0666); + Options can be combined as required. Will croak() if there is an error. @@ -3016,6 +3037,8 @@ EXLOCK flag available since 0.19. +PERMS flag available since 0.2310. + =item B This is the recommended interface for creation of temporary @@ -3606,13 +3629,13 @@ =head1 CONTRIBUTORS -=for stopwords David Golden Karen Etheridge Slaven Rezic Peter Rabbitson Olivier Mengue Kevin Ryde John Acklam James E. Keenan Brian Mowrey Dagfinn Ilmari Mannsåker Steinbrunner Ed Avis Guillem Jover Ben Tilly +=for stopwords Tim Jenness Karen Etheridge David Golden Slaven Rezic mohawk2 Roy Ivy III Peter Rabbitson Olivier Mengué John Acklam Gim Yee Nicolas R Brian Mowrey Dagfinn Ilmari Mannsåker Steinbrunner Ed Avis Guillem Jover James E. Keenan Kevin Ryde Ben Tilly =over 4 =item * -David Golden +Tim Jenness =item * @@ -3620,23 +3643,27 @@ =item * -Slaven Rezic +David Golden =item * -Peter Rabbitson +Slaven Rezic =item * -Olivier Mengue +mohawk2 =item * -David Golden +Roy Ivy III =item * -Kevin Ryde +Peter Rabbitson + +=item * + +Olivier Mengué =item * @@ -3644,11 +3671,11 @@ =item * -Slaven Rezic +Tim Gim Yee =item * -James E. Keenan +Nicolas R =item * @@ -3672,13 +3699,21 @@ =item * +James E. Keenan + +=item * + +Kevin Ryde + +=item * + Ben Tilly =back =head1 COPYRIGHT AND LICENSE -This software is copyright (c) 2019 by Tim Jenness and the UK Particle Physics and Astronomy Research Council. +This software is copyright (c) 2020 by Tim Jenness and the UK Particle Physics and Astronomy Research Council. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. diff -Nru perl-5.32.1/cpan/File-Temp/t/cmp.t perl-5.34.0/cpan/File-Temp/t/cmp.t --- perl-5.32.1/cpan/File-Temp/t/cmp.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/File-Temp/t/cmp.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,7 +7,7 @@ BEGIN {use_ok( "File::Temp" ); } { - my $fh = new File::Temp(); + my $fh = File::Temp->new(); isa_ok ($fh, 'File::Temp'); ok( "$fh" ne "foo", "compare stringified object with string"); diff -Nru perl-5.32.1/cpan/File-Temp/t/fork.t perl-5.34.0/cpan/File-Temp/t/fork.t --- perl-5.32.1/cpan/File-Temp/t/fork.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/File-Temp/t/fork.t 2020-10-24 18:43:34.000000000 +0000 @@ -12,10 +12,14 @@ $Config::Config{useithreads} and $Config::Config{ccflags} =~ /-DPERL_IMPLICIT_SYS/ ); - if ( $can_fork ) { + if ( $can_fork && !(($^O eq 'MSWin32') && $Devel::Cover::VERSION) ) { print "1..8\n"; } else { - print "1..0 # Skip No fork available\n"; + if ( ($^O eq 'MSWin32') && $Devel::Cover::VERSION ) { + print "1..0 # Skip Devel::Cover coverage testing is incompatible with fork under 'MSWin32'\n"; + } else { + print "1..0 # Skip No fork available\n"; + } exit; } } @@ -38,8 +42,7 @@ } else { # in a child we can't keep the count properly so we do it manually # make sure that child 1 dies first - srand(); - my $time = (($i-1) * 5) +int(rand(5)); + my $time = ($i-1) * 3; print "# child $i sleeping for $time seconds\n"; sleep($time); my $count = $i + 1; @@ -72,8 +75,7 @@ # parent process next; } else { - srand(); - my $time = (($i-1) * 5) +int(rand(5)); + my $time = ($i-1) * 3; print "# child $i sleeping for $time seconds\n"; sleep($time); my $count = 5 + $i; diff -Nru perl-5.32.1/cpan/File-Temp/t/lock.t perl-5.34.0/cpan/File-Temp/t/lock.t --- perl-5.32.1/cpan/File-Temp/t/lock.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/File-Temp/t/lock.t 2020-10-24 18:43:34.000000000 +0000 @@ -43,7 +43,7 @@ ok( !$status, "File $fh is locked" ); # Now get a tempfile with locking disabled -$fh = new File::Temp( EXLOCK => 0 ); +$fh = File::Temp->new( EXLOCK => 0 ); eval { local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required diff -Nru perl-5.32.1/cpan/File-Temp/t/object.t perl-5.34.0/cpan/File-Temp/t/object.t --- perl-5.32.1/cpan/File-Temp/t/object.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/File-Temp/t/object.t 2020-10-24 18:43:34.000000000 +0000 @@ -41,7 +41,7 @@ # Tempfile # Open tempfile in some directory, unlink at end -my $fh = new File::Temp( SUFFIX => '.txt' ); +my $fh = File::Temp->new( SUFFIX => '.txt' ); ok( (-f "$fh"), "File $fh exists" ); # Should still be around after closing @@ -89,7 +89,7 @@ push(@dirs, $tempdir); # Create file in the temp dir -$fh = new File::Temp( +$fh = File::Temp->new( DIR => $tempdir, SUFFIX => '.dat', ); @@ -102,7 +102,7 @@ # Test tempfile # ..and again (without unlinking it) -$fh = new File::Temp( DIR => $tempdir, UNLINK => 0 ); +$fh = File::Temp->new( DIR => $tempdir, UNLINK => 0 ); print "# TEMPFILE: Created $fh\n"; ok( (-f "$fh" ), "Second file $fh exists in tempdir [nounlink]?"); @@ -110,7 +110,7 @@ # and another (with template) -$fh = new File::Temp( TEMPLATE => 'helloXXXXXXX', +$fh = File::Temp->new( TEMPLATE => 'helloXXXXXXX', DIR => $tempdir, SUFFIX => '.dat', ); @@ -133,7 +133,7 @@ # Create a temporary file that should stay around after # it has been closed -$fh = new File::Temp( TEMPLATE => 'permXXXXXXX', UNLINK => 0); +$fh = File::Temp->new( TEMPLATE => 'permXXXXXXX', UNLINK => 0); print "# TEMPFILE: Created $fh\n"; ok( -f "$fh", "File $fh exists?" ); @@ -143,7 +143,7 @@ # Now create a temp file that will remain when the object # goes out of scope because of $KEEP_ALL -$fh = new File::Temp( TEMPLATE => 'permXXXXXXX', UNLINK => 1); +$fh = File::Temp->new( TEMPLATE => 'permXXXXXXX', UNLINK => 1); print "# TEMPFILE: Created $fh\n"; ok( -f "$fh", "File $fh exists?" ); diff -Nru perl-5.32.1/cpan/File-Temp/t/rmtree.t perl-5.34.0/cpan/File-Temp/t/rmtree.t --- perl-5.32.1/cpan/File-Temp/t/rmtree.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/File-Temp/t/rmtree.t 2020-10-24 18:43:34.000000000 +0000 @@ -35,7 +35,7 @@ my $tempdirstr = shift; my $str = "Contents of $dir (should not contain \"$tempdirstr\"):\n"; opendir(my $DH, $dir) or die "opendir failed; $!"; - my @contents = grep { $_ !~ /^\.+/; } readdir($DH); + my @contents = grep $_ !~ /^\.+/, readdir($DH); closedir($DH); for my $ls (@contents) { $str .= " $ls\n"; diff -Nru perl-5.32.1/cpan/File-Temp/t/tempfile.t perl-5.34.0/cpan/File-Temp/t/tempfile.t --- perl-5.32.1/cpan/File-Temp/t/tempfile.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/File-Temp/t/tempfile.t 2020-10-24 18:43:34.000000000 +0000 @@ -2,7 +2,7 @@ # Test for File::Temp - tempfile function use strict; -use Test::More tests => 28; +use Test::More tests => 30; use File::Spec; use Cwd qw/ cwd /; @@ -100,13 +100,30 @@ push(@files, File::Spec->rel2abs($tempfile)); # Test tempfile -# ..and another with changed permissions (read-only) +# ..and another with default permissions ($fh, $tempfile) = tempfile( - DIR => $tempdir, - ); -chmod 0444, $tempfile; + DIR => $tempdir, + ); + +# From perlport on chmod: +# +# (Win32) Only good for changing "owner" read-write access; +# "group" and "other" bits are meaningless. +# +# So we don't check the full permissions -- it will be 0444 on Win32 +# instead of 0400. Instead, just check the owner bits. + +is((stat($tempfile))[2] & 00700, 0600, 'created tempfile with default permissions'); +push(@files, File::Spec->rel2abs($tempfile)); + +# Test tempfile +# ..and another with changed permissions +($fh, $tempfile) = tempfile( + DIR => $tempdir, + PERMS => 0400, + ); -ok( (-f $tempfile ), "Local tempfile in tempdir exists read-only"); +is((stat($tempfile))[2] & 00700, 0400, 'created tempfile with changed permissions'); push(@files, File::Spec->rel2abs($tempfile)); print "# TEMPFILE: Created $tempfile\n"; diff -Nru perl-5.32.1/cpan/Filter-Util-Call/Call.pm perl-5.34.0/cpan/Filter-Util-Call/Call.pm --- perl-5.32.1/cpan/Filter-Util-Call/Call.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Filter-Util-Call/Call.pm 2020-10-04 22:17:12.000000000 +0000 @@ -18,7 +18,7 @@ our @ISA = qw(Exporter); our @EXPORT = qw( filter_add filter_del filter_read filter_read_exact) ; -our $VERSION = "1.59" ; +our $VERSION = "1.60" ; our $XS_VERSION = $VERSION; $VERSION = eval $VERSION; diff -Nru perl-5.32.1/cpan/Filter-Util-Call/Call.xs perl-5.34.0/cpan/Filter-Util-Call/Call.xs --- perl-5.32.1/cpan/Filter-Util-Call/Call.xs 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Filter-Util-Call/Call.xs 2020-10-04 22:17:12.000000000 +0000 @@ -3,7 +3,7 @@ * * Author : Paul Marquess * Date : 2014-12-09 02:48:44 rurban - * Version : 1.59 + * Version : 1.60 * * Copyright (c) 1995-2011 Paul Marquess. All rights reserved. * Copyright (c) 2011-2014 Reini Urban. All rights reserved. diff -Nru perl-5.32.1/cpan/Filter-Util-Call/t/call.t perl-5.34.0/cpan/Filter-Util-Call/t/call.t --- perl-5.32.1/cpan/Filter-Util-Call/t/call.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Filter-Util-Call/t/call.t 2020-10-04 22:17:12.000000000 +0000 @@ -6,6 +6,8 @@ print "1..0 # Skip: Filter::Util::Call was not built\n"; exit 0; } + require Cwd; + unshift @INC, Cwd::cwd(); } } @@ -128,10 +130,10 @@ EOM use Cwd ; -$here = getcwd ; +my $here = getcwd ; print "I am $here\n" ; print "some letters ABC\n" ; -$y = "ABCDEF" ; +my $y = "ABCDEF" ; print <>8) == 0) ; +ok(5, ($? >>8) == 0) or warn $a; ok(6, $a eq <>8) == 0) ; +ok(7, ($? >>8) == 0) or warn $a; ok(8, $a eq <>8) == 0) ; +ok(9, ($? >>8) == 0) or warn $a; ok(10, $a eq <>8) == 0) ; +ok(11, ($? >>8) == 0) or warn $a; ok(12, $a eq <>8) == 0) ; +ok(13, ($? >>8) == 0) or warn $a; ok(14, $a eq <>8) == 0) ; +ok(15, ($? >>8) == 0) or warn $a; ok(16, $a eq <>8) == 0) ; +ok(17, ($? >>8) == 0) or warn $a; ok(18, $a eq <>8) == 0) ; +ok(19, ($? >>8) == 0) or warn $a; ok(20, $a eq <>8) == 0) ; +ok(21, ($? >>8) == 0) or warn $a; ok(22, $a eq <>8) == 0) ; +ok(23, ($? >>8) == 0) or warn $a; ok(24, $a eq <; +my @a = ; print @a; __DATA__ HERE I am @@ -735,7 +737,7 @@ EOM $a = `$Perl "-I." $Inc $filename $redir` ; -ok(25, ($? >>8) == 0) ; +ok(25, ($? >>8) == 0) or warn $a; ok(26, $a eq <; +my @a = ; print @a; __END__ HERE I am @@ -791,7 +793,7 @@ EOM $a = `$Perl "-I." $Inc $filename $redir` ; -ok(27, ($? >>8) == 0) ; +ok(27, ($? >>8) == 0) or warn $a; ok(28, $a eq <>8) == 0); +ok(29, ($? >>8) == 0) or warn $a; chomp( $a ) if $^O eq 'VMS'; ok(30, $a eq 'ok'); $a = `$Perl "-I." $Inc $filename2`; -ok(31, ($? >>8) == 0); +ok(31, ($? >>8) == 0) or warn $a; chomp( $a ) if $^O eq 'VMS'; ok(32, $a eq 'ok'); @@ -873,7 +875,7 @@ EOM $a = `$Perl "-I." $Inc $filenamebin $redir` ; -ok(33, ($? >>8) != 0) ; +ok(33, ($? >>8) != 0) or warn $a; ok(34, $a =~ /^filter_read_exact: size parameter must be > 0 at block.pm/) ; diff -Nru perl-5.32.1/cpan/Filter-Util-Call/t/rt_54452-rebless.t perl-5.34.0/cpan/Filter-Util-Call/t/rt_54452-rebless.t --- perl-5.32.1/cpan/Filter-Util-Call/t/rt_54452-rebless.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Filter-Util-Call/t/rt_54452-rebless.t 2020-10-04 22:17:12.000000000 +0000 @@ -6,6 +6,13 @@ exit 0; } +BEGIN { + if ($ENV{PERL_CORE}) { + require Cwd; + unshift @INC, Cwd::cwd(); + } +} + use strict; use warnings; diff -Nru perl-5.32.1/cpan/Getopt-Long/lib/Getopt/Long.pm perl-5.34.0/cpan/Getopt-Long/lib/Getopt/Long.pm --- perl-5.32.1/cpan/Getopt-Long/lib/Getopt/Long.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Getopt-Long/lib/Getopt/Long.pm 2020-10-24 18:43:34.000000000 +0000 @@ -4,8 +4,8 @@ # Author : Johan Vromans # Created On : Tue Sep 11 15:00:12 1990 # Last Modified By: Johan Vromans -# Last Modified On: Mon Aug 12 17:05:46 2019 -# Update Count : 1728 +# Last Modified On: Tue Aug 18 14:48:05 2020 +# Update Count : 1739 # Status : Released ################ Module Preamble ################ @@ -18,10 +18,10 @@ package Getopt::Long; use vars qw($VERSION); -$VERSION = 2.51; +$VERSION = 2.52; # For testing versions only. use vars qw($VERSION_STRING); -$VERSION_STRING = "2.51"; +$VERSION_STRING = "2.52"; use Exporter; use vars qw(@ISA @EXPORT @EXPORT_OK); @@ -538,6 +538,7 @@ while ( defined $arg ) { # Get the canonical name. + my $given = $opt; print STDERR ("=> cname for \"$opt\" is ") if $debug; $opt = $ctl->[CTL_CNAME]; print STDERR ("\"$ctl->[CTL_CNAME]\"\n") if $debug; @@ -606,6 +607,7 @@ &{$linkage{$opt}} (Getopt::Long::CallBack->new (name => $opt, + given => $given, ctl => $ctl, opctl => \%opctl, linkage => \%linkage, @@ -1143,7 +1145,7 @@ : !(defined $rest || @$argv > 0) ) { # Complain if this option needs an argument. # if ( $mand && !($type eq 's' ? defined($optarg) : 0) ) { - if ( $mand ) { + if ( $mand || $ctl->[CTL_DEST] == CTL_DEST_HASH ) { return (0) if $passthrough; warn ("Option ", $opt, " requires an argument\n"); $error++; @@ -1561,6 +1563,11 @@ ''.$self->{name}; } +sub given { + my $self = shift; + $self->{given}; +} + use overload # Treat this object as an ordinary string for legacy API. '""' => \&name, @@ -1867,12 +1874,6 @@ special command implemented: C will cause GetOptions() to stop processing options, as if it encountered a double dash C<-->. -In version 2.37 the first argument to the callback function was -changed from string to object. This was done to make room for -extensions and more detailed control. The object stringifies to the -option name so this change should not introduce compatibility -problems. - Here is an example of how to access the option name and value from within a subroutine: @@ -2033,6 +2034,29 @@ $p = new Getopt::Long::Parser config => [...configuration options...]; +=head2 Callback object + +In version 2.37 the first argument to the callback function was +changed from string to object. This was done to make room for +extensions and more detailed control. The object stringifies to the +option name so this change should not introduce compatibility +problems. + +The callback object has the following methods: + +=over + +=item name + +The name of the option, unabbreviated. For an option with multiple +names it return the first (canonical) name. + +=item given + +The name of the option as actually used, unabbreveated. + +=back + =head2 Thread Safety Getopt::Long is thread safe when using ithreads as of Perl 5.8. It is @@ -2138,7 +2162,7 @@ return failure. As with GetOptionsFromArray, a first argument hash reference now -becomes the second argument. +becomes the second argument. See the next section. =head2 Storing options values in a hash @@ -2205,9 +2229,9 @@ Getopt::Long::Configure ("bundling"); Configured this way, single-character options can be bundled but long -options B always start with a double dash C<--> to avoid -ambiguity. For example, when C, C, C and C are all valid -options, +options (and any of their auto-abbreviated shortened forms) B +always start with a double dash C<--> to avoid ambiguity. For example, +when C, C, C and C are all valid options, -vax @@ -2298,8 +2322,9 @@ Getopt::Long can be configured by calling subroutine Getopt::Long::Configure(). This subroutine takes a list of quoted strings, each specifying a configuration option to be enabled, e.g. -C, or disabled, e.g. C. Case does not -matter. Multiple calls to Configure() are possible. +C. To disable, prefix with C or C, e.g. +C. Case does not matter. Multiple calls to Configure() +are possible. Alternatively, as of version 2.24, the configuration options may be passed together with the C statement: @@ -2398,7 +2423,8 @@ Enabling this option will allow single-character options to be bundled. To distinguish bundles from long option names, long options -I be introduced with C<--> and bundles with C<->. +(and any of their auto-abbreviated shortened forms) I be +introduced with C<--> and bundles with C<->. Note that, if you have options C, C and C, and auto_abbrev enabled, possible arguments and option settings are: diff -Nru perl-5.32.1/cpan/Getopt-Long/t/gol-basic.t perl-5.34.0/cpan/Getopt-Long/t/gol-basic.t --- perl-5.32.1/cpan/Getopt-Long/t/gol-basic.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Getopt-Long/t/gol-basic.t 2020-10-24 18:43:34.000000000 +0000 @@ -15,7 +15,7 @@ $Getopt::Long::VERSION) unless $Getopt::Long::VERSION ge $want_version; -print "1..9\n"; +print "1..12\n"; @ARGV = qw(-Foo -baR --foo bar); undef $opt_baR; @@ -29,3 +29,17 @@ print (($ARGV[0] eq "bar") ? "" : "not ", "ok 7\n"); print (!(defined $opt_baR) ? "" : "not ", "ok 8\n"); print (!(defined $opt_bar) ? "" : "not ", "ok 9\n"); + +# Tests added, see https://rt.cpan.org/Ticket/Display.html?id=87581 +@ARGV = qw(--help --file foo --foo --nobar --num=5 -- file); +$rv = GetOptions( + 'help' => \$HELP, + 'file:s' => \$FILE, + 'foo!' => \$FOO, + 'bar!' => \$BAR, + 'num:i' => \$NO, + ); +print ($rv ? "" : "not "); print "ok 10\n"; +print ("@ARGV" eq 'file' ? "" : "not ", "ok 11\n"); +( $HELP && $FOO && !$BAR && $FILE eq 'foo' && $NO == 5 ) + ? print "" : print "not "; print "ok 12\n"; diff -Nru perl-5.32.1/cpan/IO-Compress/bin/streamzip perl-5.34.0/cpan/IO-Compress/bin/streamzip --- perl-5.32.1/cpan/IO-Compress/bin/streamzip 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/bin/streamzip 2021-05-04 06:52:48.000000000 +0000 @@ -8,20 +8,31 @@ use IO::Compress::Zip qw(zip ZIP_CM_STORE ZIP_CM_DEFLATE - ZIP_CM_BZIP2 - ZIP_CM_LZMA ); + ZIP_CM_BZIP2 ) ; + use Getopt::Long; -my $VERSION = '1.0'; +my $VERSION = '1.002'; my $compression_method = ZIP_CM_DEFLATE; my $stream = 0; my $zipfile = '-'; my $memberName = '-' ; my $zip64 = 0 ; +my $level ; GetOptions("zip64" => \$zip64, "method=s" => \&lookupMethod, + "0" => sub { $level = 0 }, + "1" => sub { $level = 1 }, + "2" => sub { $level = 2 }, + "3" => sub { $level = 3 }, + "4" => sub { $level = 4 }, + "5" => sub { $level = 5 }, + "6" => sub { $level = 6 }, + "7" => sub { $level = 7 }, + "8" => sub { $level = 8 }, + "9" => sub { $level = 9 }, "stream" => \$stream, "zipfile=s" => \$zipfile, "member-name=s" => \$memberName, @@ -33,12 +44,19 @@ Usage() if @ARGV; +my @extraOpts = (); + +if ($compression_method == ZIP_CM_DEFLATE && defined $level) +{ + push @extraOpts, (Level => $level) +} zip '-' => $zipfile, Name => $memberName, Zip64 => $zip64, Method => $compression_method, - Stream => $stream + Stream => $stream, + @extraOpts or die "Error creating zip file '$zipfile': $\n" ; exit 0; @@ -51,7 +69,9 @@ my %valid = ( store => ZIP_CM_STORE, deflate => ZIP_CM_DEFLATE, bzip2 => ZIP_CM_BZIP2, - lzma => ZIP_CM_LZMA, + lzma => 14, + xz => 95, + zstd => 93, ); my $method = $valid{ lc $value }; @@ -59,48 +79,65 @@ Usage("Unknown method '$value'") if ! defined $method; - # If LZMA was rquested, check that it is available - if ($method == ZIP_CM_LZMA) - { - eval ' use IO::Compress::Adapter::Lzma'; - die "Method =. LZMA needs IO::Compress::Adapter::Lzma\n" - if ! defined $IO::Compress::Lzma::VERSION; - } + installModule("Lzma") + if $method == 14 ; + + installModule("Xz") + if $method == 95 ; + + installModule("Zstd") + if $method == 93; $compression_method = $method; } +sub installModule +{ + my $name = shift ; + + eval " use IO::Compress::$name; use IO::Compress::Adapter::$name ; " ; + die "Method '$name' needs IO::Compress::$name\n" + if $@; +} + sub Usage { - die < zip file to stdout. No temporary files are created. - -The zip container written to stdout is, by necessity, written in streaming -format. Most programs that read Zip files can cope with a streamed zip file, -but if interoperability is important, and your workflow allows you to write the -zip file directly to disk you can create a non-streamed zip file using the C option. +This program will read data from C, compress it into a zip container +and, by default, write a I zip file to C. No temporary +files are created. + +The zip container written to C is, by necessity, written in +streaming format. Most programs that read Zip files can cope with a +streamed zip file, but if interoperability is important, and your workflow +allows you to write the zip file directly to disk you can create a +non-streamed zip file using the C option. =head2 OPTIONS @@ -130,50 +169,62 @@ =item -zip64 -Create a Zip64-compliant zip container. -Use this option if the input is greater than 4Gig. +Create a Zip64-compliant zip container. Use this option if the input is +greater than 4Gig. Default is disabled. -=item -zipfile=F +=item -zipfile=F -Write zip container to the filename F. +Write zip container to the filename C. -Use the C option to enable the creation of a streamed zip file. +Use the C option to force the creation of a streamed zip file. -=item -member-name=M +=item -member-name=M This option is used to name the "file" in the zip container. Default is '-'. -=item -stream +=item -stream -Ignored when writing to stdout. +Ignored when writing to C. -If the C option is specified, including this option -will trigger the creation of a streamed zip file. +If the C option is specified, including this option will trigger +the creation of a streamed zip file. -Default: Always enabled when writing to stdout, otherwise disabled. +Default: Always enabled when writing to C, otherwise disabled. -=item -method=M +=item -method=M -Compress using method "M". +Compress using method C. Valid method names are * store Store without compression * deflate Use Deflate compression [Deflault] * bzip2 Use Bzip2 compression - * lzma Use LZMA compression + * lzma Use LZMA compression + * xz Use xz compression + * zstd Use Zstandard compression + +Note that Lzma compress needs C to be installed. + +Note that Zstd compress needs C to be installed. + +Default is C. -Note that Lzma compress needs IO::Compress::Lzma to be installed. +=item -0, -1, -2, -3, -4, -5, -6, -7, -8, -9 -Default is deflate. +Sets the compression level for C. Ignored for all other compression methods. -=item -version +C<-0> means no compression and C<-9> for maximum compression. -Display version number [$VERSION] +Default is 6 + +=item -version + +Display version number =item -help @@ -181,14 +232,45 @@ =back -=head2 When to use a Streamed Zip File +=head2 Examples + +Create a zip file bt reading daa from stdin + + $ echo Lorem ipsum dolor sit | perl ./bin/streamzip >abcd.zip + +Check the contents of C with the standard C utility + + Archive: abcd.zip + Length Date Time Name + --------- ---------- ----- ---- + 22 2021-01-08 19:45 - + --------- ------- + 22 1 file + +Notice how the C is set to C<->. +That is the default for a few zip utilities whwre the member name is not given. -A Zip file created with streaming mode enabled allows you to create a zip file -in situations where you cannot seek backwards/forwards in the file. +If you want to explicitly name the file, use the C<-member-name> option as follows -A good examples is when you are -serving dynamic content from a Web Server straight into a socket -without needing to create a temporary zip file in the filesystsm. + $ echo Lorem ipsum dolor sit | perl ./bin/streamzip -member-name latin >abcd.zip + + $ unzip -l abcd.zip + Archive: abcd.zip + Length Date Time Name + --------- ---------- ----- ---- + 22 2021-01-08 19:47 latin + --------- ------- + 22 1 file + + +=head2 When to write a Streamed Zip File + +A Streamed Zip File is useful in situations where you cannot seek +backwards/forwards in the file. + +A good examples is when you are serving dynamic content from a Web Server +straight into a socket without needing to create a temporary zip file in +the filesystsm. Similarly if your workfow uses a Linux pipelined commands. @@ -203,10 +285,9 @@ Paul Marquess F. -=head1 COPYRIGHT +=head1 COPYRIGHT -Copyright (c) 2019 Paul Marquess. All rights reserved. +Copyright (c) 2019-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it -under the same terms as Perl itself. - +under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/IO-Compress/bin/zipdetails perl-5.34.0/cpan/IO-Compress/bin/zipdetails --- perl-5.32.1/cpan/IO-Compress/bin/zipdetails 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/bin/zipdetails 2021-05-04 06:52:48.000000000 +0000 @@ -11,14 +11,15 @@ use IO::File; use Encode; +use Getopt::Long; -# Compression types +# Compression types use constant ZIP_CM_STORE => 0 ; use constant ZIP_CM_IMPLODE => 6 ; use constant ZIP_CM_DEFLATE => 8 ; use constant ZIP_CM_BZIP2 => 12 ; use constant ZIP_CM_LZMA => 14 ; -use constant ZIP_CM_PPMD => 98 ; +use constant ZIP_CM_PPMD => 98 ; # General Purpose Flag use constant ZIP_GP_FLAG_ENCRYPTED_MASK => (1 << 0) ; @@ -38,8 +39,8 @@ use constant ZIP_END_CENTRAL_HDR_SIG => 0x06054b50; use constant ZIP64_END_CENTRAL_REC_HDR_SIG => 0x06064b50; use constant ZIP64_END_CENTRAL_LOC_HDR_SIG => 0x07064b50; -use constant ZIP64_ARCHIVE_EXTRA_SIG => 0x08064b50; -use constant ZIP64_DIGITAL_SIGNATURE_SIG => 0x05054b50; +use constant ZIP_ARCHIVE_EXTRA_DATA_SIG => 0x08064b50; +use constant ZIP_DIGITAL_SIGNATURE_SIG => 0x05054b50; use constant ZIP_ARCHIVE_EXTRA_DATA_RECORD_SIG => 0x08064b50; @@ -50,7 +51,7 @@ use constant ZIP_EXTRA_SUBFIELD_LEN_SIZE => 2 ; use constant ZIP_EXTRA_SUBFIELD_HEADER_SIZE => ZIP_EXTRA_SUBFIELD_ID_SIZE + ZIP_EXTRA_SUBFIELD_LEN_SIZE; -use constant ZIP_EXTRA_SUBFIELD_MAX_SIZE => ZIP_EXTRA_MAX_SIZE - +use constant ZIP_EXTRA_SUBFIELD_MAX_SIZE => ZIP_EXTRA_MAX_SIZE - ZIP_EXTRA_SUBFIELD_HEADER_SIZE; my %ZIP_CompressionMethods = @@ -71,11 +72,13 @@ 13 => 'Reserved by PKWARE', 14 => 'LZMA', 15 => 'Reserved by PKWARE', - 16 => 'Reserved by PKWARE', + 16 => 'IBM z/OS CMPSC Compression', 17 => 'Reserved by PKWARE', 18 => 'File is compressed using IBM TERSE (new)', 19 => 'IBM LZ77 z Architecture (PFS)', - 95 => 'XZ', + 93 => 'Zstandard', + 94 => 'MP3', + 95 => 'XZ', 96 => 'WinZip JPEG Compression', 97 => 'WavPack compressed data', 98 => 'PPMd version I, Rev 1', @@ -114,9 +117,11 @@ ZIP_END_CENTRAL_HDR_SIG, \&EndCentralHeader, ZIP64_END_CENTRAL_REC_HDR_SIG, \&Zip64EndCentralHeader, ZIP64_END_CENTRAL_LOC_HDR_SIG, \&Zip64EndCentralLocator, - - # TODO - Archive Encryption Headers + + # TODO - Archive Encryption Headers & digital signature #ZIP_ARCHIVE_EXTRA_DATA_RECORD_SIG + #ZIP_DIGITAL_SIGNATURE_SIG + #ZIP_ARCHIVE_EXTRA_DATA_SIG ); my %Extras = ( @@ -135,7 +140,10 @@ 0x0017, ['Strong Encryption Header', undef], 0x0018, ['Record Management Controls', undef], 0x0019, ['PKCS#7 Encryption Recipient Certificate List', undef], - + 0x0020, ['Reserved for Timestamp record', undef], + 0x0021, ['Policy Decryption Key Record', undef], + 0x0022, ['Smartcrypt Key Provider Record', undef], + 0x0023, ['Smartcrypt Policy Key Data Record', undef], # The Header ID mappings defined by Info-ZIP and third parties are: @@ -174,13 +182,13 @@ 0x7875, ['Unix Extra Type 3', \&decode_ux], 0x9901, ['AES Encryption', \&decode_AES], 0xa11e, ['Data Stream Alignment', undef], - 0xA220, ['Open Packaging Growth Hint', undef ], + 0xA220, ['Open Packaging Growth Hint', \&decode_GrowthHint ], 0xCAFE, ['Java Executable', \&decode_Java_exe], 0xfb4a, ['SMS/QDOS', undef], ); -my $VERSION = "1.11" ; +my $VERSION = "2.02" ; my $FH; @@ -190,10 +198,12 @@ my $CentralHeaderCount = 0; my $START; -my $OFFSET = new U64 0; +my $OFFSET = U64->new( 0 ); my $TRAILING = 0 ; -my $PAYLOADLIMIT = 256; #new U64 256; -my $ZERO = new U64 0 ; +my $PAYLOADLIMIT = 256; # U64->new( 256 ); +my $ZERO = U64->new( 0 ); + +my $SEEN = Seen->new(); sub prOff { @@ -237,23 +247,23 @@ { my $wantVerbose = shift ; my $nibbles = shift; - + my $width = '@' . ('>' x ($nibbles -1)); my $space = " " x length($width); my $fmt ; - + if ($wantVerbose) { - + $FMT1 = " format STDOUT = $width $width ^<<<<<<<<<<<^<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \$OFF, \$LENGTH, \$CONTENT, \$TEXT, \$VALUE $space $space ^<<<<<<<<<<<^<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~ \$CONTENT, \$TEXT, \$VALUE -. +. "; - + $FMT2 = " format STDOUT = $width $width ^<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @@ -285,15 +295,15 @@ } eval "$FMT1"; - + $| = 1; } sub mySpr -{ +{ my $format = shift ; - + return "" if ! defined $format; return $format unless @_ ; return sprintf $format, @_ ; @@ -304,13 +314,13 @@ my $size = shift; my $text = shift; my $format = shift; - + $OFF = prOff($size); $LENGTH = offset($size) ; $CONTENT = '...'; $TEXT = $text; $VALUE = mySpr $format, @_; - + write; skip($FH, $size); @@ -328,10 +338,10 @@ { my $input = shift; - my $out = unpack('H*', $input) ; + my $out = unpack('H*', $input) ; $out =~ s#(..)# $1#g ; $out =~ s/^ //; - $out = uc $out; + $out = uc $out; return $out; } @@ -341,7 +351,7 @@ my $data = shift; my $text = shift; my $format = shift; - + my $size = length($data) ; $OFF = prOff($size); @@ -349,7 +359,7 @@ $CONTENT = hexDump($data); $TEXT = $text; $VALUE = mySpr $format, @_; - + no warnings; write; @@ -359,12 +369,12 @@ { my $text = shift; my $format = shift; - + $OFF = ''; $LENGTH = '' ; $CONTENT = ''; - $TEXT = $text; - $VALUE = mySpr $format, @_; + $TEXT = $text; + $VALUE = mySpr $format, @_; write; } @@ -374,13 +384,13 @@ my $data = shift ; my $text = shift ; my $format = shift; - + my $size = length($data) ; $OFF = prOff($size); $LENGTH = offset($size); $CONTENT = hexDump($data); - $TEXT = $text; - $VALUE = mySpr $format, @_; + $TEXT = $text; + $VALUE = mySpr $format, @_; no warnings; eval "$FMT2"; @@ -412,7 +422,7 @@ my $cb2 = shift ; - myRead(my $buff, $size); + myRead(my $buff, $size); my (@value) = unpack $unpack, $buff; my $hex = Value($unpack, @value); @@ -434,7 +444,7 @@ $cb2->(@value) if defined $cb2 ; - + return $value[0]; } @@ -584,16 +594,16 @@ sub read_U64 { my $b ; - myRead($b, 8); + myRead($b, 8); my ($lo, $hi) = unpack ("V V" , $b); no warnings 'uninitialized'; - return ($b, new U64 $hi, $lo); + return ($b, U64->new( $hi, $lo) ); } sub read_VV { my $b ; - myRead($b, 8); + myRead($b, 8); my ($lo, $hi) = unpack ("V V" , $b); no warnings 'uninitialized'; return ($b, $hi * (0xFFFFFFFF+1) + $lo); @@ -621,27 +631,82 @@ return ($b, unpack "C", $b); } - -my $opt_verbose = 0; -while (@ARGV && $ARGV[0] =~ /^-/) +sub seekTo { - my $opt = shift; - - if ($opt =~ /^-h/i) - { - Usage(); - exit; - } - elsif ($opt =~ /^-v/i) + my $offset = shift ; + my $loc = shift ; + + $loc = SEEK_SET + if ! defined $loc ; + + $FH->seek($offset, $loc); + $OFFSET = new U64($offset); +} + +sub scanForSignature +{ + my %sigs = + map { $_ => 1 } + map { substr $_, 2, 2 } # don't want the initial "PK" + map { pack "V", $_ } + ( + ZIP_LOCAL_HDR_SIG , + ZIP_DATA_HDR_SIG , + ZIP_CENTRAL_HDR_SIG , + ZIP_END_CENTRAL_HDR_SIG , + ZIP64_END_CENTRAL_REC_HDR_SIG , + ZIP64_END_CENTRAL_LOC_HDR_SIG , + # ZIP_ARCHIVE_EXTRA_DATA_SIG , + # ZIP_DIGITAL_SIGNATURE_SIG , + # ZIP_ARCHIVE_EXTRA_DATA_RECORD_SIG , + ); + + my $start = $FH->tell(); + + my $last = ''; + my $buffer ; + while ($FH->read($buffer, 1024 * 1000)) { - $opt_verbose = 1; - } - else { - Usage(); + my $combine = substr($last, -4) . $buffer ; + $last = $buffer; + my $ix = index($combine, "PK") ; + + next + if $ix == -1; + + my $rest = substr($combine, $ix+2, 2); + + next + unless length $rest == 2 && $sigs{$rest} ; + + my $v = unpack("v", $rest) ; + + # possible match + my $here = $FH->tell(); + seekTo($here - length($combine) + $ix); + + return 1; } + + return 0; } -Usage() unless @ARGV == 1; +my $is64In32 = 0; + +my $opt_verbose = 0; +my $opt_scan = 0; + +$Getopt::Long::bundling = 1 ; + +GetOptions("h" => \&Usage, + "v" => \$opt_verbose, + "scan" => \$opt_scan, + "version" => sub { print "$VERSION\n"; exit }, + ) + or Usage("Invalid command line option\n"); + + +Usage("No zipfile") unless @ARGV == 1; my $filename = shift @ARGV; @@ -651,13 +716,13 @@ die "$filename not a standard file\n" unless -f $filename ; -$FH = new IO::File "<$filename" +$FH = IO::File->new( "<$filename" ) or die "Cannot open $filename: $!\n"; -my $FILELEN = -s $filename ; -$TRAILING = -s $filename ; -$NIBBLES = U64::nibbles(-s $filename) ; +my $FILELEN = -s $filename ; +$TRAILING = -s $filename ; +$NIBBLES = U64::nibbles(-s $filename) ; #$NIBBLES = int ($NIBBLES / 4) + ( ($NIBBLES % 4) ? 1 : 0 ); #$NIBBLES = 4 * $NIBBLES; # Minimum of 4 nibbles @@ -678,8 +743,28 @@ $FH->seek(0, SEEK_SET) ; } +my @Messages = (); + +if ($opt_scan) +{ + + while(scanForSignature()) + { + my $here = $FH->tell(); -our ($CdExists, @CentralDirectory) = scanCentralDirectory($FH); + my ($buffer, $signature) = read_V(); + my $handler = $Lookup{$signature}; + $handler->($signature, $buffer); + + seekTo($here + 4) ; + } + + dislayMessages(); + exit; + +} + +our ($CdExists, $CdOffset, @CentralDirectory) = scanCentralDirectory($FH); die "No Central Directory records found\n" if ! $CdExists ; @@ -690,6 +775,9 @@ outSomeData($START, "PREFIX DATA") if defined $START && $START > 0 ; +my $skippedFrom = 0 ; +my $skippedContent = 0 ; + while (1) { last if $FH->eof(); @@ -712,8 +800,8 @@ # Should be at offset that central directory says my $locOffset = $CentralDirectory[0][0]; my $delta = $locOffset - $here ; - - if ($here < $locOffset ) { + + if ($here + 4 == $locOffset ) { for (0 .. 3) { $FH->ungetc(ord(substr($buffer, $_, 1))) } @@ -722,18 +810,55 @@ } } - printf "\n\nUnexpecded END at offset %08X, value %s\n", $here, Value_V($signature); - last; + + if ($here < $CdOffset) + { + # next + # if scanForSignature() ; + + $skippedFrom = $FH->tell() ; + $skippedContent = $CdOffset - $skippedFrom ; + + print "\nWARNING!\nZip local header not found.\n"; + printf "Skipping 0x%x bytes to Central Directory...\n", $skippedContent; + + push @Messages, + sprintf("Expected Zip header not found at offset 0x%X, ", $skippedFrom) . + sprintf("skipped 0x%X bytes\n", $skippedContent); + + seekTo($CdOffset); + + next; + } + else + { + printf "\n\nUnexpected END at offset %08X, value %s\n", $here, Value_V($signature); + + last; + } } $ZIP64 = 0 if $signature != ZIP_DATA_HDR_SIG ; $handler->($signature, $buffer); } -print "Done\n"; + +dislayMessages(); exit ; +sub dislayMessages +{ + if (@Messages) + { + my $count = scalar @Messages ; + print "\nWARNINGS\n\n"; + print "* $_\n" for @Messages ; + } + + print "Done\n"; +} + sub compressionMethod { my $id = shift ; @@ -742,18 +867,20 @@ sub LocalHeader { - my $signature = shift ; - my $data = shift ; - + my $signature = shift ; + my $data = shift ; + + my $from_offset = $FH->tell() - 4; + print "\n"; ++ $LocalHeaderCount; out $data, "LOCAL HEADER #" . sprintf("%X", $LocalHeaderCount) , Value_V($signature); my $buffer; - my ($loc, $CDcompressedLength) = @{ shift @CentralDirectory }; - # print "LocalHeader loc $loc CDL $CDcompressedLength\n"; - # TODO - add test to check that the loc from central header matches + my ($loc, $CDcompressedLength) ; + ($loc, $CDcompressedLength) = @{ shift @CentralDirectory } + if ! $opt_scan ; out_C "Extract Zip Spec", \&decodeZipVer; out_C "Extract OS", \&decodeOS; @@ -762,7 +889,7 @@ my ($bcm, $compressedMethod) = read_v(); out $bgp, "General Purpose Flag", Value_v($gpFlag) ; - GeneralPurposeBits($compressedMethod, $gpFlag); + GeneralPurposeBits($compressedMethod, $gpFlag); out $bcm, "Compression Method", compressionMethod($compressedMethod) ; @@ -776,9 +903,9 @@ my $filename ; myRead($filename, $filenameLength); - out $filename, "Filename", "'". $filename . "'"; + outputFilename($filename); - my $cl64 = new U64 $compressedLength ; + my $cl64 = U64->new( $compressedLength ); my %ExtraContext = (); if ($extraLength) { @@ -795,10 +922,13 @@ $size += printLzmaProperties() if $compressedMethod == ZIP_CM_LZMA ; + $CDcompressedLength = $compressedLength + if $opt_scan ; + # $CDcompressedLength->subtract($size) # if $size ; $CDcompressedLength -= $size; - + # if ($CDcompressedLength->getHigh() || $CDcompressedLength->getLow()) { if ($CDcompressedLength) { outSomeData($CDcompressedLength, "PAYLOAD") ; @@ -809,14 +939,32 @@ myRead($auth, 10); out $auth, "AES Auth", hexDump($auth); } + + # $SEEN->save("LOCAL HEADER #" . sprintf("%X", $LocalHeaderCount), $filename, $from_offset, $from_offset + $CDcompressedLength) } +sub outputFilename +{ + my $filename = shift; + + if (length $filename > 256) + { + my $f = substr($filename, 0, 256) ; + out $f, "Filename", "'". $f . "' ..."; + } + else + { + out $filename, "Filename", "'". $filename . "'"; + } +} sub CentralHeader { my $signature = shift ; - my $data = shift ; - + my $data = shift ; + + my $from_offset = $FH->tell() - 4; + ++ $CentralHeaderCount; print "\n"; out $data, "CENTRAL HEADER #" . sprintf("%X", $CentralHeaderCount) . "", Value_V($signature); @@ -831,7 +979,7 @@ my ($bcm, $compressedMethod) = read_v(); out $bgp, "General Purpose Flag", Value_v($gpFlag) ; - GeneralPurposeBits($compressedMethod, $gpFlag); + GeneralPurposeBits($compressedMethod, $gpFlag); out $bcm, "Compression Method", compressionMethod($compressedMethod) ; @@ -849,24 +997,25 @@ out1 "[Bit 0]", $int_file_attrib & 1 ? "1 Text Data" : "0 'Binary Data'"; my $ext_file_attrib = out_V "Ext File Attributes"; - out1 "[Bit 0]", "Read-Only" + out1 "[Bit 0]", "Read-Only" if $ext_file_attrib & 0x01 ; - out1 "[Bit 1]", "Hidden" + out1 "[Bit 1]", "Hidden" if $ext_file_attrib & 0x02 ; - out1 "[Bit 2]", "System" + out1 "[Bit 2]", "System" if $ext_file_attrib & 0x04 ; - out1 "[Bit 3]", "Label" + out1 "[Bit 3]", "Label" if $ext_file_attrib & 0x08 ; - out1 "[Bit 4]", "Directory" + out1 "[Bit 4]", "Directory" if $ext_file_attrib & 0x10 ; - out1 "[Bit 5]", "Archive" + out1 "[Bit 5]", "Archive" if $ext_file_attrib & 0x20 ; my $lcl_hdr_offset = out_V "Local Header Offset"; my $filename ; myRead($filename, $filenameLength); - out $filename, "Filename", "'". $filename . "'"; + outputFilename($filename); + my %ExtraContext = (); if ($extraLength) @@ -874,7 +1023,7 @@ my @z64 = ($uncompressedLength, $compressedLength, $lcl_hdr_offset, $disk_start); $ExtraContext{Zip64} = \@z64 ; $ExtraContext{InCentralDir} = 1; - walkExtra($extraLength, \%ExtraContext); + walkExtra($extraLength, \%ExtraContext); } if ($comment_length) @@ -883,30 +1032,34 @@ myRead($comment, $comment_length); out $comment, "Comment", "'". $comment . "'"; } + + $SEEN->save("CENTRAL HEADER ref Local #" . sprintf("%X", $CentralHeaderCount), $filename, $lcl_hdr_offset, $lcl_hdr_offset + $compressedLength) ; + + # $SEEN->save("CENTRAL HEADER #" . sprintf("%X", $CentralHeaderCount), $filename, $from_offset, $FH-tell()); } sub decodeZipVer { my $ver = shift ; - + my $sHi = int($ver /10) ; my $sLo = $ver % 10 ; - - #out1 "Zip Spec", "$sHi.$sLo"; - "$sHi.$sLo"; + + #out1 "Zip Spec", "$sHi.$sLo"; + "$sHi.$sLo"; } sub decodeOS { my $ver = shift ; - + $OS_Lookup{$ver} || "Unknown" ; } sub Zip64EndCentralHeader { - my $signature = shift ; - my $data = shift ; + my $signature = shift ; + my $data = shift ; print "\n"; out $data, "ZIP64 END CENTRAL DIR RECORD", Value_V($signature); @@ -914,7 +1067,7 @@ my $buff; myRead($buff, 8); - out $buff, "Size of record", unpackValue_VV($buff); + out $buff, "Size of record", unpackValue_VV($buff); my $size = Value_VV64($buff); @@ -929,30 +1082,32 @@ out_VV "Size of Central Dir"; out_VV "Offset to Central dir"; - # TODO - - die "Unsupported Size ($size) in Zip64EndCentralHeader\n" - if $size != 44; + # TODO - + if ($size != 44) + { + push @Messages, "Unsupported Size field in Zip64EndCentralHeader: should be 44, got $size\n" + } } sub Zip64EndCentralLocator { my $signature = shift ; - my $data = shift ; - + my $data = shift ; + print "\n"; out $data, "ZIP64 END CENTRAL DIR LOCATOR", Value_V($signature); - + out_V "Central Dir Disk no"; out_VV "Offset to Central dir"; - out_V "Total no of Disks"; + out_V "Total no of Disks"; } sub EndCentralHeader { - my $signature = shift ; - my $data = shift ; - + my $signature = shift ; + my $data = shift ; + print "\n"; out $data, "END CENTRAL HEADER", Value_V($signature); @@ -966,31 +1121,31 @@ if ($comment_length) { - my $comment ; + my $comment ; myRead($comment, $comment_length); out $comment, "Comment", "'$comment'"; - } + } } sub DataHeader { - my $signature = shift ; - my $data = shift ; - + my $signature = shift ; + my $data = shift ; + print "\n"; out $data, "STREAMING DATA HEADER", Value_V($signature); - + out_V "CRC"; - + if ($ZIP64) { out_VV "Compressed Length" ; - out_VV "Uncompressed Length" ; + out_VV "Uncompressed Length" ; } else { out_V "Compressed Length" ; - out_V "Uncompressed Length" ; + out_V "Uncompressed Length" ; } } @@ -1000,8 +1155,8 @@ my $method = shift; my $gp = shift; - out1 "[Bit 0]", "1 'Encryption'" if $gp & ZIP_GP_FLAG_ENCRYPTED_MASK; - + out1 "[Bit 0]", "1 'Encryption'" if $gp & ZIP_GP_FLAG_ENCRYPTED_MASK; + my %lookup = ( 0 => "Normal Compression", 1 => "Maximum Compression", @@ -1011,9 +1166,9 @@ if ($method == ZIP_CM_DEFLATE) { - my $mid = $gp & 0x03; - - out1 "[Bits 1-2]", "$mid '$lookup{$mid}'"; + my $mid = ($gp >> 1) & 0x03 ; + + out1 "[Bits 1-2]", "$mid '$lookup{$mid}'"; } if ($method == ZIP_CM_LZMA) @@ -1025,23 +1180,22 @@ out1 "[Bit 1]", "0 'LZMA EOS Marker Not Present'" ; } } - + if ($method == ZIP_CM_IMPLODE) # Imploding { - out1 "[Bit 1]", ($gp & 1 ? "1 '8k" : "0 '4k") . " Sliding Dictionary'" ; - out1 "[Bit 2]", ($gp & 2 ? "1 '3" : "0 '2" ) . " Shannon-Fano - Trees'" ; - } - + out1 "[Bit 1]", ($gp & (1 << 1) ? "1 '8k" : "0 '4k") . " Sliding Dictionary'" ; + out1 "[Bit 2]", ($gp & (2 << 1) ? "1 '3" : "0 '2" ) . " Shannon-Fano Trees'" ; + } + out1 "[Bit 3]", "1 'Streamed'" if $gp & ZIP_GP_FLAG_STREAMING_MASK; out1 "[Bit 4]", "1 'Enhanced Deflating'" if $gp & 1 << 4; out1 "[Bit 5]", "1 'Compressed Patched'" if $gp & 1 << 5 ; out1 "[Bit 6]", "1 'Strong Encryption'" if $gp & ZIP_GP_FLAG_STRONG_ENCRYPTED_MASK; - out1 "[Bit 11]", "1 'Language Encoding'" if $gp & ZIP_GP_FLAG_LANGUAGE_ENCODING; - out1 "[Bit 12]", "1 'Pkware Enhanced Compression'" if $gp & 1 <<12 ; - out1 "[Bit 13]", "1 'Encrypted Central Dir'" if $gp & 1 <<13 ; - - return (); + out1 "[Bit 11]", "1 'Language Encoding'" if $gp & ZIP_GP_FLAG_LANGUAGE_ENCODING; + out1 "[Bit 12]", "1 'Pkware Enhanced Compression'" if $gp & 1 <<12 ; + out1 "[Bit 13]", "1 'Encrypted Central Dir'" if $gp & 1 <<13 ; + + return (); } @@ -1057,7 +1211,7 @@ else { seek($fh, $size, SEEK_SET); } - + } sub skip @@ -1072,7 +1226,7 @@ else { seek($fh, $size, SEEK_CUR); } - + } @@ -1109,50 +1263,51 @@ sub walkExtra { my $XLEN = shift; - my $context = shift; + my $context = shift; my $buff ; my $offset = 0 ; - + my $id; my $subLen; my $payload ; - - my $count = 0 ; - - if ($XLEN < ZIP_EXTRA_SUBFIELD_ID_SIZE + ZIP_EXTRA_SUBFIELD_LEN_SIZE) - { - # Android zipalign is prime candidate for this non-standard extra field. - myRead($payload, $XLEN); - my $data = hexDump($payload); - - out $payload, "Malformed Extra Data", $data; - return undef; - } + my $count = 0 ; while ($offset < $XLEN) { ++ $count; - - return undef - if $offset + ZIP_EXTRA_SUBFIELD_HEADER_SIZE > $XLEN ; - myRead($id, ZIP_EXTRA_SUBFIELD_ID_SIZE); + # Detect if there is not enough data for an extra ID and length. + # Android zipalign and zipflinger are prime candidates for these + # non-standard extra sub-fields. + my $remaining = $XLEN - $offset; + if ($remaining < ZIP_EXTRA_SUBFIELD_HEADER_SIZE) { + # There is not enough. Consume whatever is there and return so parsing + # can continue. + myRead($payload, $remaining); + my $data = hexDump($payload); + + out $payload, "Malformed Extra Data", $data; + + return undef; + } + + myRead($id, ZIP_EXTRA_SUBFIELD_ID_SIZE); $offset += ZIP_EXTRA_SUBFIELD_ID_SIZE; my $lookID = unpack "v", $id ; my ($who, $decoder) = @{ defined $Extras{$lookID} ? $Extras{$lookID} : ['', undef] }; #my ($who, $decoder) = @{ $Extras{unpack "v", $id} || ['', undef] }; - + $who = "$id: $who" if $id =~ /\w\w/ ; - $who = "'$who'"; + $who = "'$who'"; out $id, "Extra ID #" . Value_v($count), unpackValue_v($id) . " $who" ; - - myRead($buff, ZIP_EXTRA_SUBFIELD_LEN_SIZE); - $offset += ZIP_EXTRA_SUBFIELD_LEN_SIZE; - + + myRead($buff, ZIP_EXTRA_SUBFIELD_LEN_SIZE); + $offset += ZIP_EXTRA_SUBFIELD_LEN_SIZE; + $subLen = unpack("v", $buff); out2 $buff, "Length", Value_v($subLen) ; @@ -1161,24 +1316,27 @@ if (! defined $decoder) { - myRead($payload, $subLen); - my $data = hexDump($payload); - - out2 $payload, "Extra Payload", $data; + if ($subLen) + { + myRead($payload, $subLen); + my $data = hexDump($payload); + + out2 $payload, "Extra Payload", $data; + } } else { $decoder->($subLen, $context) ; } - + $offset += $subLen ; } - + return undef ; } -sub full32 +sub full32 { return $_[0] == 0xFFFFFFFF ; } @@ -1187,8 +1345,8 @@ { my $len = shift; my $context = shift; - - my $z64Data = $context->{Zip64}; + + my $z64Data = $context->{Zip64}; $ZIP64 = 1; @@ -1201,11 +1359,11 @@ } if (full32 $z64Data->[2] ) { - out_VV " Offset to Local Dir"; + out_VV " Offset to Local Dir"; } if ($z64Data->[3] == 0xFFFF ) { - out_V " Disk Number"; + out_V " Disk Number"; } } @@ -1217,12 +1375,12 @@ # NTFS offset is 19DB1DED53E8000 my $hex = Value_U64($u64) ; - my $NTFS_OFFSET = new U64 0x19DB1DE, 0xD53E8000 ; + my $NTFS_OFFSET = U64->new( 0x19DB1DE, 0xD53E8000 ); $u64->subtract($NTFS_OFFSET); my $elapse = $u64->get64bit(); my $ns = ($elapse % 10000000) * 100; $elapse = int ($elapse/10000000); - return "$hex '" . localtime($elapse) . + return "$hex '" . localtime($elapse) . " " . sprintf("%0dns'", $ns); } @@ -1234,7 +1392,7 @@ out_V " Reserved"; out_v " Tag1"; out_v " Size1" ; - + my ($m, $s1) = read_U64; out $m, " Mtime", Ntfs2Unix($m, $s1); @@ -1256,24 +1414,24 @@ { my $len = shift; my $context = shift; - + my ($data, $flags) = read_C(); my $f = Value_C $flags; $f .= " mod" if $flags & 1; $f .= " access" if $flags & 2; $f .= " change" if $flags & 4; - + out $data, " Flags", "'$f'"; - + -- $len; - + if ($flags & 1) { my ($data, $time) = read_V(); out2 $data, "Mod Time", Value_V($time) . " " . getTime($time) ; - + $len -= 4 ; } @@ -1281,15 +1439,15 @@ if ($flags & 2 && $len > 0 ) { my ($data, $time) = read_V(); - + out2 $data, "Access Time", Value_V($time) . " " . getTime($time) ; $len -= 4 ; } - + if ($flags & 4 && $len > 0) { my ($data, $time) = read_V(); - + out2 $data, "Change Time", Value_V($time) . " " . getTime($time) ; } } @@ -1302,25 +1460,43 @@ my $context = shift; return if $len == 0 ; - + my %lookup = ( 1 => "AE-1", 2 => "AE-2"); out_v " Vendor Version", sub { $lookup{$_[0]} || "Unknown" } ; - - my $id ; + + my $id ; myRead($id, 2); out $id, " Vendor ID", unpackValue_v($id) . " '$id'"; - + my %strengths = (1 => "128-bit encryption key", 2 => "192-bit encryption key", 3 => "256-bit encryption key", ); - - my $strength = out_C " Encryption Strength", sub {$strengths{$_[0]} || "Unknown" } ; + + my $strength = out_C " Encryption Strength", sub {$strengths{$_[0]} || "Unknown" } ; my ($bmethod, $method) = read_v(); out $bmethod, " Compression Method", compressionMethod($method) ; - $context->{AesStrength} = $strength ; + $context->{AesStrength} = $strength ; +} + +sub decode_GrowthHint +{ + my $len = shift; + my $context = shift; + my $inCentralHdr = $context->{InCentralDir} ; + + return if $len == 0 ; + + out_v " Signature" ; + out_v " Initial Value"; + + my $padding; + myRead($padding, $len - 4); + my $data = hexDump($padding); + + out2 $padding, "Padding", $data; } sub decode_UX @@ -1329,7 +1505,7 @@ my $context = shift; my $inCentralHdr = $context->{InCentralDir} ; - return if $len == 0 ; + return if $len == 0 ; my ($data, $time) = read_V(); out2 $data, "Access Time", Value_V($time) . " " . getTime($time) ; @@ -1339,7 +1515,7 @@ if (! $inCentralHdr ) { out_v " UID" ; - out_v " GID"; + out_v " GID"; } } @@ -1348,9 +1524,9 @@ my $len = shift; my $context = shift; - return if $len == 0 ; + return if $len == 0 ; out_v " UID" ; - out_v " GID"; + out_v " GID"; } sub decodeLitteEndian @@ -1369,7 +1545,7 @@ my $got = 0 ; my $shift = 0; - #hexDump + #hexDump #reverse #my @a =unpack "C*", $value; #@a = reverse @a; @@ -1379,7 +1555,7 @@ { $got = ($got << 8) + $_ ; } - + return $got ; } @@ -1388,16 +1564,16 @@ my $len = shift; my $context = shift; - return if $len == 0 ; + return if $len == 0 ; out_C " Version" ; - my $uidSize = out_C " UID Size"; + my $uidSize = out_C " UID Size"; myRead(my $data, $uidSize); out2 $data, "UID", decodeLitteEndian($data); - my $gidSize = out_C " GID Size"; + my $gidSize = out_C " GID Size"; myRead($data, $gidSize); out2 $data, "GID", decodeLitteEndian($data); - + } sub decode_Java_exe @@ -1412,13 +1588,13 @@ my $len = shift; my $context = shift; - + out_C " Version"; out_V " NameCRC32"; - + myRead(my $data, $len - 5); - - out $data, " UnicodeName", $data; + + out $data, " UnicodeName", $data; } sub decode_Xceed_unicode @@ -1427,17 +1603,17 @@ my $context = shift; my $data ; - + # guess the fields used for this one myRead($data, 4); - out $data, " ID", $data; + out $data, " ID", $data; out_v " Length"; out_v " Null"; - + myRead($data, $len - 8); - - out $data, " UTF16LE Name", decode("UTF16LE", $data); + + out $data, " UTF16LE Name", decode("UTF16LE", $data); } @@ -1446,18 +1622,18 @@ my $len = shift; my $context = shift; my $inCentralHdr = $context->{InCentralDir} ; - + out_V " Uncompressed Size" ; - + if (! $inCentralHdr) { - + out_C " Version" ; - - out_v " Type"; - + + out_v " Type"; + out_V " NameCRC32" ; - - my $plen = $len - 4 - 1 - 2 - 4; + + my $plen = $len - 4 - 1 - 2 - 4; myRead(my $payload, $plen); out $plen, " Extra Payload", hexDump($payload); } @@ -1494,7 +1670,7 @@ myRead(my $salt, $saltSize{$context->{AesStrength} }); out $salt, "AES Salt", hexDump($salt); myRead(my $pwv, 2); - out $pwv, "AES Pwd Ver", hexDump($pwv); + out $pwv, "AES Pwd Ver", hexDump($pwv); return $saltSize{$context->{AesStrength}} + 2 + 10; } @@ -1527,7 +1703,7 @@ out1 " PosStateBits", $PosStateBits; out1 " LiteralPosStateBits", $LiteralPosStateBits; out1 " LiteralContextBits", $LiteralContextBits; - + out_V "LZMA Dictionary Size"; # TODO - assumption that this is 5 @@ -1559,7 +1735,7 @@ # Now walk the Central Directory Records my $buffer ; - while ($fh->read($buffer, 46) == 46 && + while ($fh->read($buffer, 46) == 46 && unpack("V", $buffer) == ZIP_CENTRAL_HDR_SIG) { my $compressedLength = unpack("V", substr($buffer, 20, 4)); @@ -1569,20 +1745,17 @@ my $comment_length = unpack("v", substr($buffer, 32, 2)); my $locHeaderOffset = unpack("V", substr($buffer, 42, 4)); - $START = $locHeaderOffset - if ! defined $START; - skip($fh, $filename_length ) ; if ($extra_length) { $fh->read(my $extraField, $extra_length) ; - # $self->smartReadExact(\$extraField, $extra_length); + # $self->smartReadExact(\$extraField, $extra_length); # Check for Zip64 # my $zip64Extended = findID("\x01\x00", $extraField); my $zip64Extended = findID(0x0001, $extraField); - + if ($zip64Extended) { if ($uncompressedLength == 0xFFFFFFFF) @@ -1594,25 +1767,25 @@ { $compressedLength = Value_VV64 substr($zip64Extended, 0, 8, ""); # $compressedLength = unpack "Q<", substr($zip64Extended, 0, 8, ""); - } + } if ($locHeaderOffset == 0xFFFFFFFF) { $locHeaderOffset = Value_VV64 substr($zip64Extended, 0, 8, ""); # $locHeaderOffset = unpack "Q<", substr($zip64Extended, 0, 8, ""); - } - } - } + } + } + } my $got = [$locHeaderOffset, $compressedLength] ; - # my $v64 = new U64 $compressedLength ; - # my $loc64 = new U64 $locHeaderOffset ; + # my $v64 = U64->new( $compressedLength ); + # my $loc64 = U64->new( $locHeaderOffset ); # my $got = [$loc64, $v64] ; # if (full32 $compressedLength || full32 $locHeaderOffset) { # $fh->read($buffer, $extra_length) ; # # TODO - fix this - # die "xxx $offset $comment_length $filename_length $extra_length" . length($buffer) + # die "xxx $offset $comment_length $filename_length $extra_length" . length($buffer) # if length($buffer) != $extra_length; # $got = get64Extra($buffer, full32($uncompressedLength), # $v64, @@ -1626,7 +1799,7 @@ # } skip($fh, $comment_length ) ; - + push @CD, $got ; } @@ -1634,7 +1807,12 @@ # @CD = sort { $a->[0]->cmp($b->[0]) } @CD ; @CD = sort { $a->[0] <=> $b->[0] } @CD ; - return (1, @CD); + + # Set the first Local File Header offset. + $START = $CD[0]->[0] + if @CD ; + + return (1, $offset, @CD); } @@ -1643,19 +1821,22 @@ my $fh = shift ; my $here = shift; - $fh->seek($here - 20, SEEK_SET) + $fh->seek($here - 20, SEEK_SET) # TODO - fix this or die "xx $!" ; my $buffer; my $got = 0; - ($got = $fh->read($buffer, 20)) == 20 + ($got = $fh->read($buffer, 20)) == 20 # TODO - fix this - or die "xxx $here $got $!" ; + or die "xxx + + + $here $got $!" ; if ( unpack("V", $buffer) == ZIP64_END_CENTRAL_LOC_HDR_SIG ) { my $cd64 = Value_VV64 substr($buffer, 8, 8); - + $fh->seek($cd64, SEEK_SET) ; $fh->read($buffer, 4) == 4 @@ -1676,13 +1857,11 @@ return $cd64 ; } - - # TODO - fix this - die "zzz"; + + die "Cannot find 'Zip64 end of central directory record': 0x06054b50\nTry running with --scan option.\n" ; } - # TODO - fix this - die "zzz"; + die "Cannot find signature for 'Zip64 end of central directory locator': 0x07064b50 \nTry running with --scan option.\n" ; } use constant Pack_ZIP_END_CENTRAL_HDR_SIG => pack("V", ZIP_END_CENTRAL_HDR_SIG); @@ -1698,13 +1877,17 @@ $fh->seek(-22, SEEK_END) ; my $here = $fh->tell(); + my $is64bit = $here > 0xFFFFFFFF; + my $over64bit = $here & (~ 0xFFFFFFFF); + my $buffer; - $fh->read($buffer, 22) == 22 + $fh->read($buffer, 22) == 22 # TODO - fix this or die "xxx" ; - my $zip64 = 0; + my $zip64 = 0; my $centralDirOffset ; + if ( unpack("V", $buffer) == ZIP_END_CENTRAL_HDR_SIG ) { $centralDirOffset = unpack("V", substr($buffer, 16, 4)); } @@ -1721,7 +1904,7 @@ $seekTo = 0; $want = $fileLen ; } - $fh->seek( $seekTo, SEEK_SET) + $fh->seek( $seekTo, SEEK_SET) # TODO - fix this or die "xxx $!" ; my $got; @@ -1749,8 +1932,22 @@ } } - $centralDirOffset = offsetFromZip64($fh, $here) - if full32 $centralDirOffset ; + if (full32 $centralDirOffset) + { + $centralDirOffset = offsetFromZip64($fh, $here) + } + elsif ($is64bit) + { + # use-case is where a 64-bit zip file doesn't use the 64-bit + # extensions. + print "EOCD not 64-bit $centralDirOffset ($here)\n" ; + + push @Messages, + sprintf "Zip file > 4Gig. Expected 'Offset to Central Dir' to be 0xFFFFFFFF, got 0x%X\n", $centralDirOffset; + + $centralDirOffset += $over64bit; + $is64In32 = 1; + } return $centralDirOffset ; } @@ -1768,7 +1965,7 @@ return undef if $offset + ZIP_EXTRA_SUBFIELD_HEADER_SIZE > $XLEN ; - my $id = substr($data, $offset, ZIP_EXTRA_SUBFIELD_ID_SIZE); + my $id = substr($data, $offset, ZIP_EXTRA_SUBFIELD_ID_SIZE); $id = unpack("v", $id); $offset += ZIP_EXTRA_SUBFIELD_ID_SIZE; @@ -1784,7 +1981,7 @@ $offset += $subLen ; } - + return undef ; } @@ -1830,7 +2027,16 @@ $low = shift ; } elsif (@_ == 1) { - $low = shift ; + my $value = shift ; + if ($value > MAX32) + { + $high = $value >> 32 ; + $low = $value & MAX32; + } + else + { + $low = $value ; + } } bless [$low, $high], $class; @@ -1909,7 +2115,7 @@ $self->[HIGH] += $value->[HIGH] ; $value = $value->[LOW]; } - + my $available = MAX32 - $self->[LOW] ; if ($value > $available) { @@ -1958,7 +2164,7 @@ { $self->[LOW] >>= 1; $self->[LOW] |= 0x80000000 - if $self->[HIGH] & 1 ; + if $self->[HIGH] & 1 ; $self->[HIGH] >>= 1; } } @@ -2002,7 +2208,7 @@ return "High [$self->[HIGH]], Low [$self->[LOW]]"; } - + sub equal { my $self = shift; @@ -2032,7 +2238,7 @@ return $self->[LOW] - $other->[LOW] ; } } - + sub nibbles { my @nibbles = ( @@ -2066,9 +2272,91 @@ } } +{ + package Seen; + + sub new + { + my $class = shift ; + + my %object = ( overlaps => [], + detail => [], + ) ; + + bless \%object, $class; + } + + sub save + { + my $self = shift ; + my $hdrId = shift; + my $name = shift; + my $from_offset = shift; + my $to_offset = shift ; + + for my $entry ( @{ $self->{detail} } ) + { + if ( $from_offset == $entry->{from} && $to_offset == $entry->{to} ) + { + warn "$hdrId: '$name' matches with $entry->{str}\n" + } + elsif ( ($from_offset >= $entry->{from} && $from_offset <= $entry->{to} ) || + ($to_offset >= $entry->{from} && $to_offset <= $entry->{to} ) + ) + { + # die "overlap!" + # push @{ $self->{overlap} }, + die "$hdrId: '$name' overlaps with $entry->{str}\n" + } + } + +warn "ADD $from_offset $to_offset $hdrId: $name\n"; + push @{ $self->{detail} }, + { + from => $from_offset, + to => $to_offset, + id => $hdrId, + name => $name, + str => "$hdrId: '$name'", + } ; + } + + sub summary + { + my $self = shift ; + + for my $outer ( sort { $a->{from} <=> $b->{from} } @{ $self->{detail} } ) + { + my $from_offset = $outer->{from}; + my $to_offset = $outer->{to}; + my $hdrId = $outer->{id}; + my $name = $outer->{name}; + + for my $entry ( sort { $a->{from} <=> $b->{from} } @{ $self->{detail} } ) + { + # next if + if ( ($from_offset >= $entry->{from} && $from_offset <= $entry->{to} ) || + ($to_offset >= $entry->{from} && $to_offset <= $entry->{to} ) + ) + { + # die "overlap!" + die $entry->{str} . " overlaps with $hdrId: '$name'\n" + } + } + } + } + +} sub Usage { + if (@_) + { + warn "$_\n" + for @_ ; + warn "\n"; + } + die < for details). +=head2 Default Behaviour + +By default the program expects to be given a well-formed zip file. It will +navigate the Zip file by first parsing the zip central directory at the end +of the file. If that is found, it will then walk through the zip records +starting at the beginning of the file. Any badly formed zip data structures +encountered are likely to terminate the program. + +If the program finds any structural problems with the zip file it will +print a summary at the end of the output report. The set of error cases +reported is very much a work in progress, so don't rely on this feature to +find all the possible errors in a zip file. If you have suggestions for +use-cases where this could be enhanced please consider creating an +enhancement request (see L<"SUPPORT">). + +=head2 Scan-Mode + +If you do have a potentially corrupt zip file, particulatly where the +central directory at the end of the file is absent/incomplete, you can try +usng the C<--scan> option to search for zip records that are still present. + +When Scan-mode is enabled, the program will walk the zip file from the +start blindly looking for the 4-byte signatures that preceed each of the +zip data structures. If it finds any of the recognised signatures it will +attempt to dump the associated zip record. For very large zip files, this +operation can take a long time to run. + +Note that the 4-byte signatures used in zip files can sometimes match with +random data stored in the zip file, so care is needed interpreting the +results. + =head2 OPTIONS =over 5 +=item -h + +Display help + +=item --scan + +Walk the zip file loking for possible zip records. Can be error-prone. +See L<"Scan-Mode"> + =item -v -Enable Verbose mode +Enable Verbose mode. See L<"Verbose Output">. -=item -h +=item --version -Display help +Display version number of the program and exit. =back +=head2 Default Output By default zipdetails will output the details of the zip file in three columns. @@ -2141,7 +2475,7 @@ =item Column 3 If the field contains a numeric value it will be displayed in hex. Zip -stored most numbers in little-endian format - the value displayed will have +stores most numbers in little-endian format - the value displayed will have the little-endian encoding removed. Next, is an optional description of what the value means. @@ -2149,6 +2483,8 @@ =back +=head2 Verbose Output + If the C<-v> option is present, column 1 is expanded to include =over 5 @@ -2159,7 +2495,7 @@ =item * -The length of the filed in hex. +The length of the field in hex. =item * @@ -2168,23 +2504,38 @@ =back +=head1 LIMITATIONS -=head1 TODO +The following zip file features are not supported by this program: + +=over 5 + +=item * -Error handling is still a work in progress. If the program encounters a -problem reading a zip file it is likely to terminate with an unhelpful -error message. +Multi-part archives. + +=item * + +The strong encryption features defined in the "APPNOTE" document. + +=back + +=head1 TODO + +Error handling is a work in progress. If the program encounters a problem +reading a zip file it is likely to terminate with an unhelpful error +message. =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. =head1 SEE ALSO -The primary reference for Zip files is the "appnote" document available at +The primary reference for Zip files is the "APPNOTE" document available at L. An alternative reference is the Info-Zip appnote. This is available from @@ -2203,10 +2554,9 @@ Paul Marquess F. -=head1 COPYRIGHT +=head1 COPYRIGHT -Copyright (c) 2011-2019 Paul Marquess. All rights reserved. +Copyright (c) 2011-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it -under the same terms as Perl itself. - +under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/IO-Compress/lib/Compress/Zlib.pm perl-5.34.0/cpan/IO-Compress/lib/Compress/Zlib.pm --- perl-5.32.1/cpan/IO-Compress/lib/Compress/Zlib.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/Compress/Zlib.pm 2021-05-04 06:52:48.000000000 +0000 @@ -7,18 +7,18 @@ use IO::Handle ; use Scalar::Util qw(dualvar); -use IO::Compress::Base::Common 2.093 ; -use Compress::Raw::Zlib 2.093 ; -use IO::Compress::Gzip 2.093 ; -use IO::Uncompress::Gunzip 2.093 ; +use IO::Compress::Base::Common 2.101 ; +use Compress::Raw::Zlib 2.101 ; +use IO::Compress::Gzip 2.101 ; +use IO::Uncompress::Gunzip 2.101 ; use strict ; use warnings ; use bytes ; our ($VERSION, $XS_VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); -$VERSION = '2.093'; -$XS_VERSION = $VERSION; +$VERSION = '2.102'; +$XS_VERSION = $VERSION; $VERSION = eval $VERSION; @ISA = qw(Exporter); @@ -126,7 +126,7 @@ my @params = () ; croak "gzopen: file parameter is not a filehandle or filename" - unless isaFilehandle $file || isaFilename $file || + unless isaFilehandle $file || isaFilename $file || (ref $file && ref $file eq 'SCALAR'); return undef unless $mode =~ /[rwa]/i ; @@ -134,17 +134,17 @@ _set_gzerr(0) ; if ($writing) { - $gz = new IO::Compress::Gzip($file, Minimal => 1, AutoClose => 1, - %defOpts) + $gz = IO::Compress::Gzip->new($file, Minimal => 1, AutoClose => 1, + %defOpts) or $Compress::Zlib::gzerrno = $IO::Compress::Gzip::GzipError; } else { - $gz = new IO::Uncompress::Gunzip($file, + $gz = IO::Uncompress::Gunzip->new($file, Transparent => 1, - Append => 0, - AutoClose => 1, + Append => 0, + AutoClose => 1, MultiStream => 1, - Strict => 0) + Strict => 0) or $Compress::Zlib::gzerrno = $IO::Uncompress::Gunzip::GunzipError; } @@ -161,7 +161,7 @@ return _set_gzerr(Z_STREAM_ERROR()) if $self->[1] ne 'inflate'; - my $len = defined $_[1] ? $_[1] : 4096 ; + my $len = defined $_[1] ? $_[1] : 4096 ; my $gz = $self->[0] ; if ($self->gzeof() || $len == 0) { @@ -171,7 +171,7 @@ return 0 ; } - my $status = $gz->read($_[0], $len) ; + my $status = $gz->read($_[0], $len) ; _save_gzerr($gz, 1); return $status ; } @@ -185,7 +185,7 @@ # Maintain backward compatibility with 1.x behaviour # It didn't support $/, so this can't either. local $/ = "\n" ; - $_[0] = $gz->getline() ; + $_[0] = $gz->getline() ; } _save_gzerr($gz, 1); return defined $_[0] ? length $_[0] : 0 ; @@ -199,7 +199,7 @@ return _set_gzerr(Z_STREAM_ERROR()) if $self->[1] ne 'deflate'; - $] >= 5.008 and (utf8::downgrade($_[0], 1) + $] >= 5.008 and (utf8::downgrade($_[0], 1) or croak "Wide character in gzwrite"); my $status = $gz->write($_[0]) ; @@ -282,8 +282,8 @@ return _set_gzerr(Z_STREAM_ERROR()) if $self->[1] ne 'deflate'; - - my $status = *$gz->{Compress}->deflateParams(-Level => $level, + + my $status = *$gz->{Compress}->deflateParams(-Level => $level, -Strategy => $strategy); _save_gzerr($gz); return $status ; @@ -293,7 +293,7 @@ { my $self = shift ; my $gz = $self->[0] ; - + return $Compress::Zlib::gzerrno ; } @@ -310,7 +310,7 @@ $in = \$_[0] ; } - $] >= 5.008 and (utf8::downgrade($$in, 1) + $] >= 5.008 and (utf8::downgrade($$in, 1) or croak "Wide character in compress"); my $level = (@_ == 2 ? $_[1] : Z_DEFAULT_COMPRESSION() ); @@ -322,7 +322,7 @@ MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY, 4096, - '') + '') or return undef ; $err = $x->deflate($in, $output) ; @@ -330,7 +330,7 @@ $err = $x->flush($output) ; return undef unless $err == Z_OK() ; - + return $output ; } @@ -346,21 +346,21 @@ $in = \$_[0] ; } - $] >= 5.008 and (utf8::downgrade($$in, 1) - or croak "Wide character in uncompress"); - + $] >= 5.008 and (utf8::downgrade($$in, 1) + or croak "Wide character in uncompress"); + my ($obj, $status) = Compress::Raw::Zlib::_inflateInit(0, - MAX_WBITS, 4096, "") ; - - $status == Z_OK + MAX_WBITS, 4096, "") ; + + $status == Z_OK or return undef; - - $obj->inflate($in, $output) == Z_STREAM_END + + $obj->inflate($in, $output) == Z_STREAM_END or return undef; - + return $output; } - + sub deflateInit(@) { my ($got) = ParseParameters(0, @@ -374,27 +374,27 @@ 'dictionary' => [IO::Compress::Base::Common::Parse_any, ""], }, @_ ) ; - croak "Compress::Zlib::deflateInit: Bufsize must be >= 1, you specified " . + croak "Compress::Zlib::deflateInit: Bufsize must be >= 1, you specified " . $got->getValue('bufsize') unless $got->getValue('bufsize') >= 1; my $obj ; - + my $status = 0 ; - ($obj, $status) = + ($obj, $status) = Compress::Raw::Zlib::_deflateInit(0, - $got->getValue('level'), - $got->getValue('method'), - $got->getValue('windowbits'), - $got->getValue('memlevel'), - $got->getValue('strategy'), + $got->getValue('level'), + $got->getValue('method'), + $got->getValue('windowbits'), + $got->getValue('memlevel'), + $got->getValue('strategy'), $got->getValue('bufsize'), $got->getValue('dictionary')) ; my $x = ($status == Z_OK() ? bless $obj, "Zlib::OldDeflate" : undef) ; return wantarray ? ($x, $status) : $x ; } - + sub inflateInit(@) { my ($got) = ParseParameters(0, @@ -405,15 +405,15 @@ }, @_) ; - croak "Compress::Zlib::inflateInit: Bufsize must be >= 1, you specified " . + croak "Compress::Zlib::inflateInit: Bufsize must be >= 1, you specified " . $got->getValue('bufsize') unless $got->getValue('bufsize') >= 1; my $status = 0 ; my $obj ; ($obj, $status) = Compress::Raw::Zlib::_inflateInit(FLAG_CONSUME_INPUT, - $got->getValue('windowbits'), - $got->getValue('bufsize'), + $got->getValue('windowbits'), + $got->getValue('bufsize'), $got->getValue('dictionary')) ; my $x = ($status == Z_OK() ? bless $obj, "Zlib::OldInflate" : undef) ; @@ -442,7 +442,7 @@ my $output ; my $flag = shift || Compress::Zlib::Z_FINISH(); my $status = $self->SUPER::flush($output, $flag) ; - + wantarray ? ($output, $status) : $output ; } @@ -461,7 +461,7 @@ package Compress::Zlib ; -use IO::Compress::Gzip::Constants 2.093 ; +use IO::Compress::Gzip::Constants 2.101 ; sub memGzip($) { @@ -473,13 +473,13 @@ MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY, 4096, - '') + '') or return undef ; - + # if the deflation buffer isn't a reference, make it one my $string = (ref $_[0] ? $_[0] : \$_[0]) ; - $] >= 5.008 and (utf8::downgrade($$string, 1) + $] >= 5.008 and (utf8::downgrade($$string, 1) or croak "Wide character in memGzip"); my $out; @@ -487,12 +487,12 @@ $x->deflate($string, $out) == Z_OK or return undef ; - + $x->flush($out) == Z_OK or return undef ; - - return IO::Compress::Gzip::Constants::GZIP_MINIMUM_HEADER . - $out . + + return IO::Compress::Gzip::Constants::GZIP_MINIMUM_HEADER . + $out . pack("V V", $x->crc32(), $x->total_in()); } @@ -501,10 +501,10 @@ { my $string = shift ; - return Z_DATA_ERROR() + return Z_DATA_ERROR() if length($$string) < GZIP_MIN_HEADER_SIZE ; - my ($magic1, $magic2, $method, $flags, $time, $xflags, $oscode) = + my ($magic1, $magic2, $method, $flags, $time, $xflags, $oscode) = unpack ('CCCCVCC', $$string); return Z_DATA_ERROR() @@ -551,7 +551,7 @@ if length ($$string) < GZIP_FHCRC_SIZE ; substr($$string, 0, GZIP_FHCRC_SIZE) = ''; } - + return Z_OK(); } @@ -566,24 +566,24 @@ { # if the buffer isn't a reference, make it one my $string = (ref $_[0] ? $_[0] : \$_[0]); - - $] >= 5.008 and (utf8::downgrade($$string, 1) + + $] >= 5.008 and (utf8::downgrade($$string, 1) or croak "Wide character in memGunzip"); _set_gzerr(0); my $status = _removeGzipHeader($string) ; - $status == Z_OK() + $status == Z_OK() or return _set_gzerr_undef($status); - + my $bufsize = length $$string > 4096 ? length $$string : 4096 ; my $x = Compress::Raw::Zlib::_inflateInit(FLAG_CRC | FLAG_CONSUME_INPUT, - -MAX_WBITS(), $bufsize, '') + -MAX_WBITS(), $bufsize, '') or return _ret_gun_error(); my $output = '' ; $status = $x->inflate($string, $output); - + if ( $status == Z_OK() ) { _set_gzerr(Z_DATA_ERROR()); @@ -606,7 +606,7 @@ $$string = ''; } - return $output; + return $output; } # Autoload methods go after __END__, and are processed by the autosplit program. @@ -938,23 +938,23 @@ use strict ; use warnings ; - + use Compress::Zlib ; - + # use stdin if no files supplied @ARGV = '-' unless @ARGV ; - + foreach my $file (@ARGV) { my $buffer ; - + my $gz = gzopen($file, "rb") or die "Cannot open $file: $gzerrno\n" ; - + print $buffer while $gz->gzread($buffer) > 0 ; - + die "Error reading from $file: $gzerrno" . ($gzerrno+0) . "\n" if $gzerrno != Z_STREAM_END ; - + $gz->gzclose() ; } @@ -963,28 +963,28 @@ use strict ; use warnings ; - + use Compress::Zlib ; - + die "Usage: gzgrep pattern [file...]\n" unless @ARGV >= 1; - + my $pattern = shift ; - + # use stdin if no files supplied @ARGV = '-' unless @ARGV ; - + foreach my $file (@ARGV) { my $gz = gzopen($file, "rb") or die "Cannot open $file: $gzerrno\n" ; - + while ($gz->gzreadline($_) > 0) { print if /$pattern/ ; } - + die "Error reading from $file: $gzerrno\n" if $gzerrno != Z_STREAM_END ; - + $gz->gzclose() ; } @@ -994,14 +994,14 @@ use strict ; use warnings ; - + use Compress::Zlib ; - + binmode STDOUT; # gzopen only sets it on the fd - + my $gz = gzopen(\*STDOUT, "wb") or die "Cannot open stdout: $gzerrno\n" ; - + while (<>) { $gz->gzwrite($_) or die "error writing: $gzerrno\n" ; @@ -1275,18 +1275,18 @@ while (<>) { ($output, $status) = $x->deflate($_) ; - + $status == Z_OK or die "deflation failed\n" ; - + print $output ; } - + ($output, $status) = $x->flush() ; - + $status == Z_OK or die "deflation failed\n" ; - + print $output ; =head1 Inflate Interface @@ -1313,13 +1313,13 @@ The function optionally takes a number of named options specified as C<< -Name=>value >> pairs. This allows individual options to be tailored without having to specify them all in the parameter list. - + For backward compatibility, it is also possible to pass the parameters as a reference to a hash containing the name=>value pairs. - + The function takes one optional parameter, a reference to a hash. The contents of the hash allow the deflation interface to be tailored. - + Here is a list of the valid options: =over 5 @@ -1409,27 +1409,27 @@ use strict ; use warnings ; - + use Compress::Zlib ; - + my $x = inflateInit() or die "Cannot create a inflation stream\n" ; - + my $input = '' ; binmode STDIN; binmode STDOUT; - + my ($output, $status) ; while (read(STDIN, $input, 4096)) { ($output, $status) = $x->inflate(\$input) ; - + print $output if $status == Z_OK or $status == Z_STREAM_END ; - + last if $status != Z_OK ; } - + die "inflation failed\n" unless $status == Z_STREAM_END ; @@ -1469,7 +1469,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -1506,8 +1506,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 1995-2019 Paul Marquess. All rights reserved. +Copyright (c) 1995-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/File/GlobMapper.pm perl-5.34.0/cpan/IO-Compress/lib/File/GlobMapper.pm --- perl-5.32.1/cpan/IO-Compress/lib/File/GlobMapper.pm 2020-12-18 09:57:57.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/File/GlobMapper.pm 2021-01-20 23:04:44.000000000 +0000 @@ -51,7 +51,7 @@ my $inputGlob = shift ; my $outputGlob = shift ; - my $obj = new File::GlobMapper($inputGlob, $outputGlob, @_) + my $obj = File::GlobMapper->new($inputGlob, $outputGlob, @_) or croak "globmap: $Error" ; return $obj->getFileMap(); } @@ -383,7 +383,7 @@ my $aref = globmap $input => $output or die $File::GlobMapper::Error ; - my $gm = new File::GlobMapper $input => $output + my $gm = File::GlobMapper->new( $input => $output ) or die $File::GlobMapper::Error ; diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm 2021-05-04 06:52:48.000000000 +0000 @@ -4,12 +4,12 @@ use warnings; use bytes; -use IO::Compress::Base::Common 2.093 qw(:Status); +use IO::Compress::Base::Common 2.101 qw(:Status); -use Compress::Raw::Bzip2 2.093 ; +use Compress::Raw::Bzip2 2.101 ; our ($VERSION); -$VERSION = '2.093'; +$VERSION = '2.102'; sub mkCompObject { @@ -21,7 +21,7 @@ $WorkFactor = 0 if ! defined $WorkFactor ; $Verbosity = 0 if ! defined $Verbosity ; - my ($def, $status) = new Compress::Raw::Bzip2(1, $BlockSize100K, + my ($def, $status) = Compress::Raw::Bzip2->new(1, $BlockSize100K, $WorkFactor, $Verbosity); return (undef, "Could not create Deflate object: $status", $status) @@ -30,7 +30,7 @@ return bless {'Def' => $def, 'Error' => '', 'ErrorNo' => 0, - } ; + } ; } sub compr @@ -44,11 +44,11 @@ if ($status != BZ_RUN_OK) { - $self->{Error} = "Deflate Error: $status"; + $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } - return STATUS_OK; + return STATUS_OK; } sub flush @@ -62,12 +62,12 @@ if ($status != BZ_RUN_OK) { - $self->{Error} = "Deflate Error: $status"; + $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } - return STATUS_OK; - + return STATUS_OK; + } sub close @@ -81,12 +81,12 @@ if ($status != BZ_STREAM_END) { - $self->{Error} = "Deflate Error: $status"; + $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } - return STATUS_OK; - + return STATUS_OK; + } @@ -96,18 +96,18 @@ my $outer = $self->{Outer}; - my ($def, $status) = new Compress::Raw::Bzip2(); + my ($def, $status) = Compress::Raw::Bzip2->new(); $self->{ErrorNo} = ($status == BZ_OK) ? 0 : $status ; if ($status != BZ_OK) { - $self->{Error} = "Cannot create Deflate object: $status"; + $self->{Error} = "Cannot create Deflate object: $status"; return STATUS_ERROR; } $self->{Def} = $def; - return STATUS_OK; + return STATUS_OK; } sub compressedBytes @@ -151,4 +151,3 @@ 1; __END__ - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Adapter/Deflate.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Adapter/Deflate.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Adapter/Deflate.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Adapter/Deflate.pm 2021-05-04 06:52:48.000000000 +0000 @@ -4,13 +4,13 @@ use warnings; use bytes; -use IO::Compress::Base::Common 2.093 qw(:Status); -use Compress::Raw::Zlib 2.093 qw( !crc32 !adler32 ) ; - -require Exporter; +use IO::Compress::Base::Common 2.101 qw(:Status); +use Compress::Raw::Zlib 2.101 qw( !crc32 !adler32 ) ; + +require Exporter; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, @EXPORT, %DEFLATE_CONSTANTS); -$VERSION = '2.093'; +$VERSION = '2.102'; @ISA = qw(Exporter); @EXPORT_OK = @Compress::Raw::Zlib::DEFLATE_CONSTANTS; %EXPORT_TAGS = %Compress::Raw::Zlib::DEFLATE_CONSTANTS; @@ -24,20 +24,20 @@ my $level = shift ; my $strategy = shift ; - my ($def, $status) = new Compress::Raw::Zlib::Deflate + my ($def, $status) = Compress::Raw::Zlib::Deflate->new( -AppendOutput => 1, -CRC32 => $crc32, -ADLER32 => $adler32, -Level => $level, -Strategy => $strategy, - -WindowBits => - MAX_WBITS; + -WindowBits => - MAX_WBITS); - return (undef, "Cannot create Deflate object: $status", $status) - if $status != Z_OK; + return (undef, "Cannot create Deflate object: $status", $status) + if $status != Z_OK; return bless {'Def' => $def, 'Error' => '', - } ; + } ; } sub compr @@ -51,11 +51,11 @@ if ($status != Z_OK) { - $self->{Error} = "Deflate Error: $status"; + $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } - return STATUS_OK; + return STATUS_OK; } sub flush @@ -70,11 +70,11 @@ if ($status != Z_OK) { - $self->{Error} = "Deflate Error: $status"; + $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } - return STATUS_OK; + return STATUS_OK; } sub close @@ -97,14 +97,14 @@ $self->{ErrorNo} = $status; if ($status != Z_OK) { - $self->{Error} = "Deflate Error: $status"; + $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } - return STATUS_OK; + return STATUS_OK; } -sub deflateParams +sub deflateParams { my $self = shift ; @@ -114,11 +114,11 @@ $self->{ErrorNo} = $status; if ($status != Z_OK) { - $self->{Error} = "deflateParams Error: $status"; + $self->{Error} = "deflateParams Error: $status"; return STATUS_ERROR; } - return STATUS_OK; + return STATUS_OK; } @@ -167,4 +167,3 @@ 1; __END__ - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Adapter/Identity.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Adapter/Identity.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Adapter/Identity.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Adapter/Identity.pm 2021-05-04 06:52:48.000000000 +0000 @@ -4,10 +4,10 @@ use warnings; use bytes; -use IO::Compress::Base::Common 2.093 qw(:Status); +use IO::Compress::Base::Common 2.101 qw(:Status); our ($VERSION); -$VERSION = '2.093'; +$VERSION = '2.102'; sub mkCompObject { @@ -19,7 +19,7 @@ 'UnCompSize' => 0, 'Error' => '', 'ErrorNo' => 0, - } ; + } ; } sub compr @@ -30,7 +30,7 @@ $self->{CompSize} += length ${ $_[0] } ; $self->{UnCompSize} = $self->{CompSize} ; - if ( ref $_[1] ) + if ( ref $_[1] ) { ${ $_[1] } .= ${ $_[0] } } else { $_[1] .= ${ $_[0] } } @@ -43,14 +43,14 @@ { my $self = shift ; - return STATUS_OK; + return STATUS_OK; } sub close { my $self = shift ; - return STATUS_OK; + return STATUS_OK; } sub reset @@ -60,14 +60,14 @@ $self->{CompSize} = 0; $self->{UnCompSize} = 0; - return STATUS_OK; + return STATUS_OK; } -sub deflateParams +sub deflateParams { my $self = shift ; - return STATUS_OK; + return STATUS_OK; } #sub total_out @@ -98,4 +98,3 @@ __END__ - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Base/Common.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Base/Common.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Base/Common.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Base/Common.pm 2021-05-04 06:52:48.000000000 +0000 @@ -11,7 +11,7 @@ require Exporter; our ($VERSION, @ISA, @EXPORT, %EXPORT_TAGS, $HAS_ENCODE); @ISA = qw(Exporter); -$VERSION = '2.093'; +$VERSION = '2.102'; @EXPORT = qw( isaFilehandle isaFilename isaScalar whatIsInput whatIsOutput @@ -160,7 +160,7 @@ #use IO::File; $got = 'handle'; $_[0] = *STDIN; - #$_[0] = new IO::File("<-"); + #$_[0] = IO::File->new("<-"); } return $got; @@ -174,7 +174,7 @@ { $got = 'handle'; $_[0] = *STDOUT; - #$_[0] = new IO::File(">-"); + #$_[0] = IO::File->new(">-"); } return $got; @@ -267,7 +267,7 @@ { $data{GlobMap} = 1 ; $data{inType} = $data{outType} = 'filename'; - my $mapper = new File::GlobMapper($_[0], $_[1]); + my $mapper = File::GlobMapper->new($_[0], $_[1]); if ( ! $mapper ) { return $obj->saveErrorString($File::GlobMapper::Error) ; @@ -509,7 +509,7 @@ return $_[1] if @_ == 2 && defined $_[1] && UNIVERSAL::isa($_[1], "IO::Compress::Base::Parameters"); - my $p = new IO::Compress::Base::Parameters() ; + my $p = IO::Compress::Base::Parameters->new(); $p->parse(@_) or croak "$sub: $p->[IxError]" ; diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Base.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Base.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Base.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Base.pm 2021-05-04 06:52:48.000000000 +0000 @@ -6,7 +6,7 @@ use strict ; use warnings; -use IO::Compress::Base::Common 2.093 ; +use IO::Compress::Base::Common 2.101 ; use IO::File (); ; use Scalar::Util (); @@ -20,7 +20,7 @@ our (@ISA, $VERSION); @ISA = qw(IO::File Exporter); -$VERSION = '2.093'; +$VERSION = '2.102'; #Can't locate object method "SWASHNEW" via package "utf8" (perhaps you forgot to load "utf8"?) at .../ext/Compress-Zlib/Gzip/blib/lib/Compress/Zlib/Common.pm line 16. @@ -254,8 +254,8 @@ *$obj->{Compress} = $obj->mkComp($got) or return undef; - *$obj->{UnCompSize} = new U64 ; - *$obj->{CompSize} = new U64 ; + *$obj->{UnCompSize} = U64->new; + *$obj->{CompSize} = U64->new; if ( $outType eq 'buffer') { ${ *$obj->{Buffer} } = '' @@ -279,7 +279,7 @@ my $mode = '>' ; $mode = '>>' if $appendOutput; - *$obj->{FH} = new IO::File "$mode $outValue" + *$obj->{FH} = IO::File->new( "$mode $outValue" ) or return $obj->saveErrorString(undef, "cannot open file '$outValue': $!", $!) ; *$obj->{StdIO} = ($outValue eq '-'); setBinModeOutput(*$obj->{FH}) ; @@ -340,7 +340,7 @@ my $haveOut = @_ ; my $output = shift ; - my $x = new IO::Compress::Base::Validator($class, *$obj->{Error}, $name, $input, $output) + my $x = IO::Compress::Base::Validator->new($class, *$obj->{Error}, $name, $input, $output) or return undef ; push @_, $output if $haveOut && $x->{Hash}; @@ -493,7 +493,7 @@ if ( ! $isFilehandle ) { - $fh = new IO::File "<$input" + $fh = IO::File->new( "<$input" ) or return $self->saveErrorString(undef, "cannot open file '$input': $!", $!) ; } binmode $fh ; @@ -983,23 +983,27 @@ return sub { Carp::croak "$name Not Available: File opened only for output" ; } ; } -*read = _notAvailable('read'); -*READ = _notAvailable('read'); -*readline = _notAvailable('readline'); -*READLINE = _notAvailable('readline'); -*getc = _notAvailable('getc'); -*GETC = _notAvailable('getc'); - -*FILENO = \&fileno; -*PRINT = \&print; -*PRINTF = \&printf; -*WRITE = \&syswrite; -*write = \&syswrite; -*SEEK = \&seek; -*TELL = \&tell; -*EOF = \&eof; -*CLOSE = \&close; -*BINMODE = \&binmode; +{ + no warnings 'once'; + + *read = _notAvailable('read'); + *READ = _notAvailable('read'); + *readline = _notAvailable('readline'); + *READLINE = _notAvailable('readline'); + *getc = _notAvailable('getc'); + *GETC = _notAvailable('getc'); + + *FILENO = \&fileno; + *PRINT = \&print; + *PRINTF = \&printf; + *WRITE = \&syswrite; + *write = \&syswrite; + *SEEK = \&seek; + *TELL = \&tell; + *EOF = \&eof; + *CLOSE = \&close; + *BINMODE = \&binmode; +} #*sysread = \&_notAvailable; #*syswrite = \&_write; @@ -1023,7 +1027,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -1047,8 +1051,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright (c) 2005-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Bzip2.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Bzip2.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Bzip2.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Bzip2.pm 2021-05-04 06:52:48.000000000 +0000 @@ -5,16 +5,16 @@ use bytes; require Exporter ; -use IO::Compress::Base 2.093 ; +use IO::Compress::Base 2.101 ; -use IO::Compress::Base::Common 2.093 qw(); -use IO::Compress::Adapter::Bzip2 2.093 ; +use IO::Compress::Base::Common 2.101 qw(); +use IO::Compress::Adapter::Bzip2 2.101 ; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $Bzip2Error); -$VERSION = '2.093'; +$VERSION = '2.102'; $Bzip2Error = ''; @ISA = qw(IO::Compress::Base Exporter); @@ -40,7 +40,7 @@ } -sub mkHeader +sub mkHeader { my $self = shift ; return ''; @@ -51,9 +51,9 @@ { my $self = shift ; - use IO::Compress::Base::Common 2.093 qw(:Parse); - - return ( + use IO::Compress::Base::Common 2.101 qw(:Parse); + + return ( 'blocksize100k' => [IO::Compress::Base::Common::Parse_unsigned, 1], 'workfactor' => [IO::Compress::Base::Common::Parse_unsigned, 0], 'verbosity' => [IO::Compress::Base::Common::Parse_boolean, 0], @@ -66,7 +66,7 @@ { my $self = shift ; my $got = shift; - + # check that BlockSize100K is a number between 1 & 9 if ($got->parsed('blocksize100k')) { my $value = $got->getValue('blocksize100k'); @@ -101,7 +101,7 @@ return $self->saveErrorString(undef, $errstr, $errno) if ! defined $obj; - + return $obj; } @@ -133,7 +133,7 @@ my $self = shift ; my $params = shift; my $file = shift ; - + } 1; @@ -151,7 +151,7 @@ my $status = bzip2 $input => $output [,OPTS] or die "bzip2 failed: $Bzip2Error\n"; - my $z = new IO::Compress::Bzip2 $output [,OPTS] + my $z = IO::Compress::Bzip2->new( $output [,OPTS] ) or die "bzip2 failed: $Bzip2Error\n"; $z->print($string); @@ -426,7 +426,7 @@ use IO::Compress::Bzip2 qw(bzip2 $Bzip2Error) ; use IO::File ; - my $input = new IO::File "new( " \$buffer @@ -463,7 +463,7 @@ The format of the constructor for C is shown below - my $z = new IO::Compress::Bzip2 $output [,OPTS] + my $z = IO::Compress::Bzip2->new( $output [,OPTS] ) or die "IO::Compress::Bzip2 failed: $Bzip2Error\n"; It returns an C object on success and undef on failure. @@ -765,7 +765,7 @@ =head1 Importing -No symbolic constants are required by this IO::Compress::Bzip2 at present. +No symbolic constants are required by IO::Compress::Bzip2 at present. =over 5 @@ -790,7 +790,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -818,8 +818,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright (c) 2005-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Deflate.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Deflate.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Deflate.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Deflate.pm 2021-05-04 06:52:48.000000000 +0000 @@ -8,16 +8,16 @@ require Exporter ; -use IO::Compress::RawDeflate 2.093 (); -use IO::Compress::Adapter::Deflate 2.093 ; +use IO::Compress::RawDeflate 2.101 (); +use IO::Compress::Adapter::Deflate 2.101 ; -use IO::Compress::Zlib::Constants 2.093 ; -use IO::Compress::Base::Common 2.093 qw(); +use IO::Compress::Zlib::Constants 2.101 ; +use IO::Compress::Base::Common 2.101 qw(); our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $DeflateError); -$VERSION = '2.093'; +$VERSION = '2.102'; $DeflateError = ''; @ISA = qw(IO::Compress::RawDeflate Exporter); @@ -80,7 +80,7 @@ return $hdr; } -sub mkHeader +sub mkHeader { my $self = shift ; my $param = shift ; @@ -89,7 +89,7 @@ my $strategy = $param->getValue('strategy'); my $lflag ; - $level = 6 + $level = 6 if $level == Z_DEFAULT_COMPRESSION ; if (ZLIB_VERNUM >= 0x1210) @@ -118,7 +118,7 @@ { my $self = shift ; my $got = shift; - + $got->setValue('adler32' => 1); return 1 ; } @@ -149,6 +149,7 @@ sub getInverseClass { + no warnings 'once'; return ('IO::Uncompress::Inflate', \$IO::Uncompress::Inflate::InflateError); } @@ -158,7 +159,7 @@ my $self = shift ; my $params = shift; my $file = shift ; - + } @@ -178,7 +179,7 @@ my $status = deflate $input => $output [,OPTS] or die "deflate failed: $DeflateError\n"; - my $z = new IO::Compress::Deflate $output [,OPTS] + my $z = IO::Compress::Deflate->new( $output [,OPTS] ) or die "deflate failed: $DeflateError\n"; $z->print($string); @@ -455,7 +456,7 @@ use IO::Compress::Deflate qw(deflate $DeflateError) ; use IO::File ; - my $input = new IO::File "new( " \$buffer @@ -492,7 +493,7 @@ The format of the constructor for C is shown below - my $z = new IO::Compress::Deflate $output [,OPTS] + my $z = IO::Compress::Deflate->new( $output [,OPTS] ) or die "IO::Compress::Deflate failed: $DeflateError\n"; It returns an C object on success and undef on failure. @@ -914,7 +915,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -951,8 +952,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright (c) 2005-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/FAQ.pod perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/FAQ.pod --- perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/FAQ.pod 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/FAQ.pod 2021-01-20 23:04:44.000000000 +0000 @@ -79,7 +79,7 @@ use Archive::Tar; use IO::File; - my $fh = new IO::File "| compress -c >$filename"; + my $fh = IO::File->new( "| compress -c >$filename" ); my $tar = Archive::Tar->new(); ... $tar->write($fh); @@ -101,7 +101,7 @@ my $gzipFile = "somefile.gz"; my $bzipFile = "somefile.bz2"; - my $gunzip = new IO::Uncompress::Gunzip $gzipFile + my $gunzip = IO::Uncompress::Gunzip->new( $gzipFile ) or die "Cannot gunzip $gzipFile: $GunzipError\n" ; bzip2 $gunzip => $bzipFile @@ -167,8 +167,8 @@ If you want to create a zip64 zip file with the OO interface you must specify the C option. - my $zip = new IO::Compress::Zip "whatever", Zip64 => 1; - + my $zip = IO::Compress::Zip->new( "whatever", Zip64 => 1 ); + When uncompressing with C, it will automatically detect if the zip file is zip64. @@ -300,14 +300,14 @@ package Apache::GZip; #File: Apache::GZip.pm - + use strict vars; use Apache::Constants ':common'; use Compress::Zlib; use IO::File; use constant GZIP_MAGIC => 0x1f8b; use constant OS_MAGIC => 0x03; - + sub handler { my $r = shift; my ($fh,$gz); @@ -316,28 +316,28 @@ $r->header_out('Content-Encoding'=>'gzip'); $r->send_http_header; return OK if $r->header_only; - + tie *STDOUT,'Apache::GZip',$r; print($_) while <$fh>; untie *STDOUT; return OK; } - + sub TIEHANDLE { my($class,$r) = @_; # initialize a deflation stream my $d = deflateInit(-WindowBits=>-MAX_WBITS()) || return undef; - + # gzip header -- don't ask how I found out $r->print(pack("nccVcc",GZIP_MAGIC,Z_DEFLATED,0,time(),0,OS_MAGIC)); - + return bless { r => $r, crc => crc32(undef), d => $d, l => 0 },$class; } - + sub PRINT { my $self = shift; foreach (@_) { @@ -349,18 +349,18 @@ $self->{crc} = crc32($_,$self->{crc}); } } - + sub DESTROY { my $self = shift; - + # flush the output buffers my $data = $self->{d}->flush; $self->{r}->print($data); - + # print the CRC and the total length (uncompressed) $self->{r}->print(pack("LL",@{$self}{qw/crc l/})); } - + 1; Here's the Apache configuration entry you'll need to make use of it. Once @@ -401,12 +401,12 @@ filehandle code can be removed. Here is the rewritten code. package Apache::GZip; - + use strict vars; use Apache::Constants ':common'; use IO::Compress::Gzip; use IO::File; - + sub handler { my $r = shift; my ($fh,$gz); @@ -416,22 +416,22 @@ $r->send_http_header; return OK if $r->header_only; - my $gz = new IO::Compress::Gzip '-', Minimal => 1 + my $gz = IO::Compress::Gzip->new( '-', Minimal => 1 ) or return DECLINED ; print $gz $_ while <$fh>; - + return OK; } - + or even more succinctly, like this, using a one-shot gzip package Apache::GZip; - + use strict vars; use Apache::Constants ':common'; use IO::Compress::Gzip qw(gzip); - + sub handler { my $r = shift; $r->header_out('Content-Encoding'=>'gzip'); @@ -443,7 +443,7 @@ return OK; } - + 1; The use of one-shot C above just reads from C<< $r->filename >> and @@ -468,7 +468,7 @@ use Net::FTP; use IO::Uncompress::Gunzip qw(:all); - my $ftp = new Net::FTP ... + my $ftp = Net::FTP->new( ... ) my $retr_fh = $ftp->retr($compressed_filename); gunzip $retr_fh => $outFilename, AutoClose => 1 @@ -518,7 +518,7 @@ my $file = $ARGV[0] ; - my $fh = new IO::File "<$file" + my $fh = IO::File->new( "<$file" ) or die "Cannot open '$file': $!\n"; while (1) @@ -566,9 +566,9 @@ # Done reading the Local Header - my $inf = new IO::Uncompress::RawInflate $fh, + my $inf = IO::Uncompress::RawInflate->new( $fh, Transparent => 1, - InputLength => $compressedLength + InputLength => $compressedLength ) or die "Cannot uncompress $file [$filename]: $RawInflateError\n" ; my $line_count = 0; @@ -585,14 +585,14 @@ header data. The code that I want to focus on is at the bottom. while (1) { - + # read local zip header data # get $filename # get $compressedLength - my $inf = new IO::Uncompress::RawInflate $fh, + my $inf = IO::Uncompress::RawInflate->new( $fh, Transparent => 1, - InputLength => $compressedLength + InputLength => $compressedLength ) or die "Cannot uncompress $file [$filename]: $RawInflateError\n" ; my $line_count = 0; @@ -618,7 +618,7 @@ Now consider what the code looks like without C while (1) { - + # read local zip header data # get $filename # get $compressedLength @@ -626,8 +626,8 @@ # read all the compressed data into $data read($fh, $data, $compressedLength); - my $inf = new IO::Uncompress::RawInflate \$data, - Transparent => 1, + my $inf = IO::Uncompress::RawInflate->new( \$data, + Transparent => 1 ) or die "Cannot uncompress $file [$filename]: $RawInflateError\n" ; my $line_count = 0; @@ -658,7 +658,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -682,7 +682,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright (c) 2005-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm 2021-05-04 06:52:48.000000000 +0000 @@ -9,7 +9,7 @@ our ($VERSION, @ISA, @EXPORT, %GZIP_OS_Names); our ($GZIP_FNAME_INVALID_CHAR_RE, $GZIP_FCOMMENT_INVALID_CHAR_RE); -$VERSION = '2.093'; +$VERSION = '2.102'; @ISA = qw(Exporter); @@ -89,22 +89,22 @@ use constant GZIP_FEXTRA_SUBFIELD_LEN_SIZE => 2 ; use constant GZIP_FEXTRA_SUBFIELD_HEADER_SIZE => GZIP_FEXTRA_SUBFIELD_ID_SIZE + GZIP_FEXTRA_SUBFIELD_LEN_SIZE; -use constant GZIP_FEXTRA_SUBFIELD_MAX_SIZE => GZIP_FEXTRA_MAX_SIZE - +use constant GZIP_FEXTRA_SUBFIELD_MAX_SIZE => GZIP_FEXTRA_MAX_SIZE - GZIP_FEXTRA_SUBFIELD_HEADER_SIZE ; if (ord('A') == 193) { - # EBCDIC + # EBCDIC $GZIP_FNAME_INVALID_CHAR_RE = '[\x00-\x3f\xff]'; $GZIP_FCOMMENT_INVALID_CHAR_RE = '[\x00-\x0a\x11-\x14\x16-\x3f\xff]'; - + } else { $GZIP_FNAME_INVALID_CHAR_RE = '[\x00-\x1F\x7F-\x9F]'; $GZIP_FCOMMENT_INVALID_CHAR_RE = '[\x00-\x09\x11-\x1F\x7F-\x9F]'; -} +} use constant GZIP_FHCRC_SIZE => 2 ; # aka CONTINUATION in gzip @@ -140,7 +140,7 @@ GZIP_OS_DEFAULT() => 'Unknown', ) ; -use constant GZIP_MINIMUM_HEADER => pack("C4 V C C", +use constant GZIP_MINIMUM_HEADER => pack("C4 V C C", GZIP_ID1, GZIP_ID2, GZIP_CM_DEFLATED, GZIP_FLG_DEFAULT, GZIP_MTIME_DEFAULT, GZIP_XFL_DEFAULT, GZIP_OS_DEFAULT) ; diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Gzip.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Gzip.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Gzip.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Gzip.pm 2021-05-04 06:52:48.000000000 +0000 @@ -8,24 +8,24 @@ require Exporter ; -use IO::Compress::RawDeflate 2.093 () ; -use IO::Compress::Adapter::Deflate 2.093 ; +use IO::Compress::RawDeflate 2.101 () ; +use IO::Compress::Adapter::Deflate 2.101 ; -use IO::Compress::Base::Common 2.093 qw(:Status ); -use IO::Compress::Gzip::Constants 2.093 ; -use IO::Compress::Zlib::Extra 2.093 ; +use IO::Compress::Base::Common 2.101 qw(:Status ); +use IO::Compress::Gzip::Constants 2.101 ; +use IO::Compress::Zlib::Extra 2.101 ; BEGIN { - if (defined &utf8::downgrade ) + if (defined &utf8::downgrade ) { *noUTF8 = \&utf8::downgrade } else - { *noUTF8 = sub {} } + { *noUTF8 = sub {} } } our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $GzipError); -$VERSION = '2.093'; +$VERSION = '2.102'; $GzipError = '' ; @ISA = qw(IO::Compress::RawDeflate Exporter); @@ -65,7 +65,7 @@ return ( # zlib behaviour $self->getZlibParams(), - + # Gzip header fields 'minimal' => [IO::Compress::Base::Common::Parse_boolean, 0], 'comment' => [IO::Compress::Base::Common::Parse_any, undef], @@ -105,7 +105,7 @@ # Also check that they only contain ISO 8859-1 chars. if ($got->parsed('name') && defined $got->getValue('name')) { my $name = $got->getValue('name'); - + return $self->saveErrorString(undef, "Null Character found in Name", Z_DATA_ERROR) if $strict && $name =~ /\x00/ ; @@ -132,16 +132,16 @@ return $self->saveErrorString(undef, "OS_Code must be between 0 and 255, got '$value'") if $value < 0 || $value > 255 ; - + } # gzip only supports Deflate at present $got->setValue('method' => Z_DEFLATED) ; if ( ! $got->parsed('extraflags')) { - $got->setValue('extraflags' => 2) + $got->setValue('extraflags' => 2) if $got->getValue('level') == Z_BEST_COMPRESSION ; - $got->setValue('extraflags' => 4) + $got->setValue('extraflags' => 4) if $got->getValue('level') == Z_BEST_SPEED ; } @@ -161,12 +161,13 @@ sub mkTrailer { my $self = shift ; - return pack("V V", *$self->{Compress}->crc32(), + return pack("V V", *$self->{Compress}->crc32(), *$self->{UnCompSize}->get32bit()); } sub getInverseClass { + no warnings 'once'; return ('IO::Uncompress::Gunzip', \$IO::Uncompress::Gunzip::GunzipError); } @@ -184,7 +185,7 @@ $params->setValue('name' => $filename) if ! $params->parsed('name') ; - $params->setValue('time' => $defaultTime) + $params->setValue('time' => $defaultTime) if ! $params->parsed('time') ; } @@ -207,7 +208,7 @@ $flags |= GZIP_FLG_FEXTRA if $param->wantValue('extrafield') ; $flags |= GZIP_FLG_FNAME if $param->wantValue('name') ; $flags |= GZIP_FLG_FCOMMENT if $param->wantValue('comment') ; - + # MTIME my $time = $param->valueOrDefault('time', GZIP_MTIME_DEFAULT) ; @@ -218,7 +219,7 @@ my $os_code = $param->valueOrDefault('os_code', GZIP_OS_DEFAULT) ; - my $out = pack("C4 V C C", + my $out = pack("C4 V C C", GZIP_ID1, # ID1 GZIP_ID2, # ID2 $method, # Compression Method @@ -240,7 +241,7 @@ $name =~ s/\x00.*$//; $out .= $name ; # Terminate the filename with NULL unless it already is - $out .= GZIP_NULL_BYTE + $out .= GZIP_NULL_BYTE if !length $name or substr($name, 1, -1) ne GZIP_NULL_BYTE ; } @@ -257,7 +258,7 @@ } # HEADER CRC - $out .= pack("v", Compress::Raw::Zlib::crc32($out) & 0x00FF ) + $out .= pack("v", Compress::Raw::Zlib::crc32($out) & 0x00FF ) if $param->getValue('headercrc') ; noUTF8($out); @@ -270,7 +271,7 @@ return ''; } -1; +1; __END__ @@ -285,7 +286,7 @@ my $status = gzip $input => $output [,OPTS] or die "gzip failed: $GzipError\n"; - my $z = new IO::Compress::Gzip $output [,OPTS] + my $z = IO::Compress::Gzip->new( $output [,OPTS] ) or die "gzip failed: $GzipError\n"; $z->print($string); @@ -573,7 +574,7 @@ use IO::Compress::Gzip qw(gzip $GzipError) ; use IO::File ; - my $input = new IO::File "new( " \$buffer @@ -610,7 +611,7 @@ The format of the constructor for C is shown below - my $z = new IO::Compress::Gzip $output [,OPTS] + my $z = IO::Compress::Gzip->new( $output [,OPTS] ) or die "IO::Compress::Gzip failed: $GzipError\n"; It returns an C object on success and undef on failure. @@ -1226,7 +1227,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -1263,8 +1264,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright (c) 2005-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/RawDeflate.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/RawDeflate.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/RawDeflate.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/RawDeflate.pm 2021-05-04 06:52:48.000000000 +0000 @@ -6,15 +6,16 @@ use warnings; use bytes; -use IO::Compress::Base 2.093 ; -use IO::Compress::Base::Common 2.093 qw(:Status ); -use IO::Compress::Adapter::Deflate 2.093 ; +use IO::Compress::Base 2.101 ; +use IO::Compress::Base::Common 2.101 qw(:Status :Parse); +use IO::Compress::Adapter::Deflate 2.101 ; +use Compress::Raw::Zlib 2.101 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY); require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %DEFLATE_CONSTANTS, %EXPORT_TAGS, $RawDeflateError); -$VERSION = '2.093'; +$VERSION = '2.102'; $RawDeflateError = ''; @ISA = qw(IO::Compress::Base Exporter); @@ -28,8 +29,8 @@ my %seen; foreach (keys %EXPORT_TAGS ) { - push @{$EXPORT_TAGS{constants}}, - grep { !$seen{$_}++ } + push @{$EXPORT_TAGS{constants}}, + grep { !$seen{$_}++ } @{ $EXPORT_TAGS{$_} } } $EXPORT_TAGS{all} = $EXPORT_TAGS{constants} ; @@ -41,7 +42,7 @@ #push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; Exporter::export_ok_tags('all'); - + sub new @@ -82,7 +83,7 @@ return $self->saveErrorString(undef, $errstr, $errno) if ! defined $obj; - return $obj; + return $obj; } @@ -116,8 +117,6 @@ return getZlibParams(); } -use IO::Compress::Base::Common 2.093 qw(:Parse); -use Compress::Raw::Zlib 2.093 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY); our %PARAMS = ( #'method' => [IO::Compress::Base::Common::Parse_unsigned, Z_DEFLATED], 'level' => [IO::Compress::Base::Common::Parse_signed, Z_DEFAULT_COMPRESSION], @@ -125,17 +124,18 @@ 'crc32' => [IO::Compress::Base::Common::Parse_boolean, 0], 'adler32' => [IO::Compress::Base::Common::Parse_boolean, 0], - 'merge' => [IO::Compress::Base::Common::Parse_boolean, 0], + 'merge' => [IO::Compress::Base::Common::Parse_boolean, 0], ); - + sub getZlibParams { - return %PARAMS; + return %PARAMS; } sub getInverseClass { - return ('IO::Uncompress::RawInflate', + no warnings 'once'; + return ('IO::Uncompress::RawInflate', \$IO::Uncompress::RawInflate::RawInflateError); } @@ -144,7 +144,7 @@ my $self = shift ; my $params = shift; my $file = shift ; - + } use Fcntl qw(SEEK_SET); @@ -156,20 +156,20 @@ my $outType = shift ; my ($invClass, $error_ref) = $self->getInverseClass(); - eval "require $invClass" + eval "require $invClass" or die "aaaahhhh" ; - my $inf = $invClass->new( $outValue, - Transparent => 0, + my $inf = $invClass->new( $outValue, + Transparent => 0, #Strict => 1, AutoClose => 0, Scan => 1) or return $self->saveErrorString(undef, "Cannot create InflateScan object: $$error_ref" ) ; my $end_offset = 0; - $inf->scan() + $inf->scan() or return $self->saveErrorString(undef, "Error Scanning: $$error_ref", $inf->errorNo) ; - $inf->zap($end_offset) + $inf->zap($end_offset) or return $self->saveErrorString(undef, "Error Zapping: $$error_ref", $inf->errorNo) ; my $def = *$self->{Compress} = $inf->createDeflate(); @@ -178,10 +178,10 @@ *$self->{UnCompSize} = *$inf->{UnCompSize}->clone(); *$self->{CompSize} = *$inf->{CompSize}->clone(); # TODO -- fix this - #*$self->{CompSize} = new U64(0, *$self->{UnCompSize_32bit}); + #*$self->{CompSize} = U64->new(0, *$self->{UnCompSize_32bit}); - if ( $outType eq 'buffer') + if ( $outType eq 'buffer') { substr( ${ *$self->{Buffer} }, $end_offset) = '' } elsif ($outType eq 'handle' || $outType eq 'filename') { *$self->{FH} = *$inf->{FH} ; @@ -189,8 +189,8 @@ *$self->{FH}->flush() ; *$self->{Handle} = 1 if $outType eq 'handle'; - #seek(*$self->{FH}, $end_offset, SEEK_SET) - *$self->{FH}->seek($end_offset, SEEK_SET) + #seek(*$self->{FH}, $end_offset, SEEK_SET) + *$self->{FH}->seek($end_offset, SEEK_SET) or return $self->saveErrorString(undef, $!, $!) ; } @@ -199,7 +199,7 @@ #### zlib specific methods -sub deflateParams +sub deflateParams { my $self = shift ; @@ -210,7 +210,7 @@ return $self->saveErrorString(0, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo}) if $status == STATUS_ERROR; - return 1; + return 1; } @@ -231,7 +231,7 @@ my $status = rawdeflate $input => $output [,OPTS] or die "rawdeflate failed: $RawDeflateError\n"; - my $z = new IO::Compress::RawDeflate $output [,OPTS] + my $z = IO::Compress::RawDeflate->new( $output [,OPTS] ) or die "rawdeflate failed: $RawDeflateError\n"; $z->print($string); @@ -511,7 +511,7 @@ use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ; use IO::File ; - my $input = new IO::File "new( " \$buffer @@ -548,7 +548,7 @@ The format of the constructor for C is shown below - my $z = new IO::Compress::RawDeflate $output [,OPTS] + my $z = IO::Compress::RawDeflate->new( $output [,OPTS] ) or die "IO::Compress::RawDeflate failed: $RawDeflateError\n"; It returns an C object on success and undef on failure. @@ -970,7 +970,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -1007,8 +1007,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright (c) 2005-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Zip/Constants.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Zip/Constants.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Zip/Constants.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Zip/Constants.pm 2021-05-04 06:52:48.000000000 +0000 @@ -7,7 +7,7 @@ our ($VERSION, @ISA, @EXPORT, %ZIP_CM_MIN_VERSIONS); -$VERSION = '2.093'; +$VERSION = '2.102'; @ISA = qw(Exporter); @@ -18,7 +18,9 @@ ZIP_CM_BZIP2 ZIP_CM_LZMA ZIP_CM_PPMD - + ZIP_CM_XZ + ZIP_CM_ZSTD + ZIP_LOCAL_HDR_SIG ZIP_DATA_HDR_SIG ZIP_CENTRAL_HDR_SIG @@ -40,7 +42,7 @@ ZIP_EXTRA_ID_INFO_ZIP_UNIX2 ZIP_EXTRA_ID_INFO_ZIP_UNIXN ZIP_EXTRA_ID_INFO_ZIP_Upath - ZIP_EXTRA_ID_INFO_ZIP_Ucom + ZIP_EXTRA_ID_INFO_ZIP_Ucom ZIP_EXTRA_ID_JAVA_EXE ZIP_OS_CODE_UNIX @@ -55,7 +57,7 @@ ZIP_A_HIDDEN ZIP_A_SYSTEM ZIP_A_LABEL - ZIP_A_DIR + ZIP_A_DIR ZIP_A_ARCHIVE ); @@ -63,7 +65,9 @@ use constant ZIP_CM_STORE => 0 ; use constant ZIP_CM_DEFLATE => 8 ; use constant ZIP_CM_BZIP2 => 12 ; -use constant ZIP_CM_LZMA => 14 ; # Not Supported yet +use constant ZIP_CM_LZMA => 14 ; +use constant ZIP_CM_ZSTD => 93 ; +use constant ZIP_CM_XZ => 95 ; use constant ZIP_CM_PPMD => 98 ; # Not Supported yet # General Purpose Flag @@ -116,10 +120,11 @@ ZIP_CM_BZIP2() => 46, ZIP_CM_LZMA() => 63, ZIP_CM_PPMD() => 63, + ZIP_CM_ZSTD() => 20, # Winzip needs these to be 20 + ZIP_CM_XZ() => 20, ); 1; __END__ - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Zip.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Zip.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Zip.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Zip.pm 2021-05-04 06:52:48.000000000 +0000 @@ -4,30 +4,41 @@ use warnings; use bytes; -use IO::Compress::Base::Common 2.093 qw(:Status ); -use IO::Compress::RawDeflate 2.093 (); -use IO::Compress::Adapter::Deflate 2.093 ; -use IO::Compress::Adapter::Identity 2.093 ; -use IO::Compress::Zlib::Extra 2.093 ; -use IO::Compress::Zip::Constants 2.093 ; +use IO::Compress::Base::Common 2.101 qw(:Status ); +use IO::Compress::RawDeflate 2.101 (); +use IO::Compress::Adapter::Deflate 2.101 ; +use IO::Compress::Adapter::Identity 2.101 ; +use IO::Compress::Zlib::Extra 2.101 ; +use IO::Compress::Zip::Constants 2.101 ; use File::Spec(); use Config; -use Compress::Raw::Zlib 2.093 (); +use Compress::Raw::Zlib 2.101 (); BEGIN { - eval { require IO::Compress::Adapter::Bzip2 ; - import IO::Compress::Adapter::Bzip2 2.093 ; - require IO::Compress::Bzip2 ; - import IO::Compress::Bzip2 2.093 ; + eval { require IO::Compress::Adapter::Bzip2 ; + IO::Compress::Adapter::Bzip2->import( 2.101 ); + require IO::Compress::Bzip2 ; + IO::Compress::Bzip2->import( 2.101 ); } ; - - eval { require IO::Compress::Adapter::Lzma ; - import IO::Compress::Adapter::Lzma 2.093 ; - require IO::Compress::Lzma ; - import IO::Compress::Lzma 2.093 ; + + eval { require IO::Compress::Adapter::Lzma ; + IO::Compress::Adapter::Lzma->import( 2.101 ); + require IO::Compress::Lzma ; + IO::Compress::Lzma->import( 2.101 ); + } ; + + eval { require IO::Compress::Adapter::Xz ; + IO::Compress::Adapter::Xz->import( 2.101 ); + require IO::Compress::Xz ; + IO::Compress::Xz->import( 2.101 ); + } ; + eval { require IO::Compress::Adapter::Zstd ; + IO::Compress::Adapter::Zstd->import( 2.101 ); + require IO::Compress::Zstd ; + IO::Compress::Zstd->import( 2.101 ); } ; } @@ -36,7 +47,7 @@ our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $ZipError); -$VERSION = '2.093'; +$VERSION = '2.102'; $ZipError = ''; @ISA = qw(IO::Compress::RawDeflate Exporter); @@ -45,7 +56,7 @@ push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; -$EXPORT_TAGS{zip_method} = [qw( ZIP_CM_STORE ZIP_CM_DEFLATE ZIP_CM_BZIP2 ZIP_CM_LZMA)]; +$EXPORT_TAGS{zip_method} = [qw( ZIP_CM_STORE ZIP_CM_DEFLATE ZIP_CM_BZIP2 ZIP_CM_LZMA ZIP_CM_XZ ZIP_CM_ZSTD)]; push @{ $EXPORT_TAGS{all} }, @{ $EXPORT_TAGS{zip_method} }; Exporter::export_ok_tags('all'); @@ -54,34 +65,42 @@ { my $class = shift ; - my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$ZipError); + my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$ZipError); $obj->_create(undef, @_); } sub zip { - my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$ZipError); + my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$ZipError); return $obj->_def(@_); } sub isMethodAvailable { my $method = shift; - + # Store & Deflate are always available return 1 if $method == ZIP_CM_STORE || $method == ZIP_CM_DEFLATE ; - - return 1 - if $method == ZIP_CM_BZIP2 and + + return 1 + if $method == ZIP_CM_BZIP2 and defined $IO::Compress::Adapter::Bzip2::VERSION; - + return 1 if $method == ZIP_CM_LZMA and defined $IO::Compress::Adapter::Lzma::VERSION; - - return 0; + + return 1 + if $method == ZIP_CM_XZ and + defined $IO::Compress::Adapter::Xz::VERSION; + + return 1 + if $method == ZIP_CM_ZSTD and + defined $IO::Compress::Adapter::ZSTD::VERSION; + + return 0; } sub beforePayload @@ -94,12 +113,12 @@ my $sparse = *$self->{ZipData}{Sparse} ; *$self->{CompSize}->add( $sparse ); *$self->{UnCompSize}->add( $sparse ); - + *$self->{FH}->seek($sparse, IO::Handle::SEEK_CUR); - + *$self->{ZipData}{CRC32} = Compress::Raw::Zlib::crc32($NULLS, *$self->{ZipData}{CRC32}) for 1 .. int $sparse / $inc; - *$self->{ZipData}{CRC32} = Compress::Raw::Zlib::crc32(substr($NULLS, 0, $sparse % $inc), + *$self->{ZipData}{CRC32} = Compress::Raw::Zlib::crc32(substr($NULLS, 0, $sparse % $inc), *$self->{ZipData}{CRC32}) if $sparse % $inc; } @@ -141,19 +160,31 @@ ); *$self->{ZipData}{CRC32} = Compress::Raw::Zlib::crc32(undef); } + elsif (*$self->{ZipData}{Method} == ZIP_CM_XZ) { + ($obj, $errstr, $errno) = IO::Compress::Adapter::Xz::mkCompObject($got->getValue('preset'), + $got->getValue('extreme'), + 0 + ); + *$self->{ZipData}{CRC32} = Compress::Raw::Zlib::crc32(undef); + } + elsif (*$self->{ZipData}{Method} == ZIP_CM_ZSTD) { + ($obj, $errstr, $errno) = IO::Compress::Adapter::Zstd::mkCompObject(defined $got->getValue('level') ? $got->getValue('level') : 3, + ); + *$self->{ZipData}{CRC32} = Compress::Raw::Zlib::crc32(undef); + } return $self->saveErrorString(undef, $errstr, $errno) if ! defined $obj; if (! defined *$self->{ZipData}{SizesOffset}) { *$self->{ZipData}{SizesOffset} = 0; - *$self->{ZipData}{Offset} = new U64 ; + *$self->{ZipData}{Offset} = U64->new(); } *$self->{ZipData}{AnyZip64} = 0 if ! defined *$self->{ZipData}{AnyZip64} ; - return $obj; + return $obj; } sub reset @@ -163,7 +194,7 @@ *$self->{Compress}->reset(); *$self->{ZipData}{CRC32} = Compress::Raw::Zlib::crc32(''); - return STATUS_OK; + return STATUS_OK; } sub filterUncompressed @@ -187,7 +218,7 @@ # separators become slashes, etc.). # Will translate internal slashes in path components (i.e. on Macs) to # underscores. Discards volume names. - # When $forceDir is set, returns paths with trailing slashes + # When $forceDir is set, returns paths with trailing slashes # # input output # . '.' @@ -204,8 +235,8 @@ my ( $volume, $directories, $file ) = File::Spec->splitpath( File::Spec->canonpath($name), $forceDir ); - - my @dirs = map { $_ =~ s{/}{_}g; $_ } + + my @dirs = map { $_ =~ s{/}{_}g; $_ } File::Spec->splitdir($directories); if ( @dirs > 0 ) { pop (@dirs) if $dirs[-1] eq '' } # remove empty component @@ -229,9 +260,9 @@ { my $self = shift; my $param = shift ; - + *$self->{ZipData}{LocalHdrOffset} = U64::clone(*$self->{ZipData}{Offset}); - + my $comment = ''; $comment = $param->valueOrDefault('comment') ; @@ -256,7 +287,7 @@ utf8::downgrade($comment, 1) or Carp::croak "Wide character in zip comment"; } - } + } my $hdr = ''; @@ -267,19 +298,19 @@ my $empty = 0; my $osCode = $param->getValue('os_code') ; my $extFileAttr = 0 ; - + # This code assumes Unix. # TODO - revisit this - $extFileAttr = 0100644 << 16 + $extFileAttr = 0100644 << 16 if $osCode == ZIP_OS_CODE_UNIX ; if (*$self->{ZipData}{Zip64}) { $empty = IO::Compress::Base::Common::MAX32; my $x = ''; - $x .= pack "V V", 0, 0 ; # uncompressedLength - $x .= pack "V V", 0, 0 ; # compressedLength - + $x .= pack "V V", 0, 0 ; # uncompressedLength + $x .= pack "V V", 0, 0 ; # compressedLength + # Zip64 needs to be first in extra field to workaround a Windows Explorer Bug # See http://www.info-zip.org/phpBB3/viewtopic.php?f=3&t=440 for details $extra .= IO::Compress::Zlib::Extra::mkSubField(ZIP_EXTRA_ID_ZIP64, $x); @@ -288,8 +319,8 @@ if (! $param->getValue('minimal')) { if ($param->parsed('mtime')) { - $extra .= mkExtendedTime($param->getValue('mtime'), - $param->getValue('atime'), + $extra .= mkExtendedTime($param->getValue('mtime'), + $param->getValue('atime'), $param->getValue('ctime')); $ctlExtra .= mkExtendedTime($param->getValue('mtime')); @@ -299,30 +330,30 @@ { if ( $param->getValue('want_exunixn') ) { - my $ux3 = mkUnixNExtra( @{ $param->getValue('want_exunixn') }); + my $ux3 = mkUnixNExtra( @{ $param->getValue('want_exunixn') }); $extra .= $ux3; $ctlExtra .= $ux3; } if ( $param->getValue('exunix2') ) { - $extra .= mkUnix2Extra( @{ $param->getValue('exunix2') }); + $extra .= mkUnix2Extra( @{ $param->getValue('exunix2') }); $ctlExtra .= mkUnix2Extra(); } } - $extFileAttr = $param->getValue('extattr') + $extFileAttr = $param->getValue('extattr') if defined $param->getValue('extattr') ; - $extra .= $param->getValue('extrafieldlocal') + $extra .= $param->getValue('extrafieldlocal') if defined $param->getValue('extrafieldlocal'); - $ctlExtra .= $param->getValue('extrafieldcentral') + $ctlExtra .= $param->getValue('extrafieldcentral') if defined $param->getValue('extrafieldcentral'); } my $method = *$self->{ZipData}{Method} ; - my $gpFlag = 0 ; + my $gpFlag = 0 ; $gpFlag |= ZIP_GP_FLAG_STREAMING_MASK if *$self->{ZipData}{Stream} ; @@ -356,7 +387,7 @@ $hdr .= pack 'V', $empty ; # uncompressed length - 0 when streaming $hdr .= pack 'v', length $filename ; # filename length $hdr .= pack 'v', length $extra ; # extra length - + $hdr .= $filename ; # Remember the offset for the compressed & uncompressed lengths in the @@ -391,18 +422,18 @@ $ctl .= pack 'v', length $ctlExtra ; # extra length $ctl .= pack 'v', length $comment ; # file comment length - $ctl .= pack 'v', 0 ; # disk number start + $ctl .= pack 'v', 0 ; # disk number start $ctl .= pack 'v', $ifa ; # internal file attributes $ctl .= pack 'V', $extFileAttr ; # external file attributes # offset to local hdr - if (*$self->{ZipData}{LocalHdrOffset}->is64bit() ) { + if (*$self->{ZipData}{LocalHdrOffset}->is64bit() ) { $ctl .= pack 'V', IO::Compress::Base::Common::MAX32 ; } else { - $ctl .= *$self->{ZipData}{LocalHdrOffset}->getPacked_V32() ; + $ctl .= *$self->{ZipData}{LocalHdrOffset}->getPacked_V32() ; } - + $ctl .= $filename ; *$self->{ZipData}{Offset}->add32(length $hdr) ; @@ -424,7 +455,7 @@ $crc32 = pack "V", *$self->{ZipData}{CRC32}; } - my ($ctl, $ctlExtra, $comment) = @{ *$self->{ZipData}{CentralHeader} }; + my ($ctl, $ctlExtra, $comment) = @{ *$self->{ZipData}{CentralHeader} }; my $sizes ; if (! *$self->{ZipData}{Zip64}) { @@ -450,7 +481,7 @@ else { $self->writeAt(*$self->{ZipData}{LocalHdrOffset}->get64bit() + 14, $crc32) or return undef; - $self->writeAt(*$self->{ZipData}{SizesOffset}, + $self->writeAt(*$self->{ZipData}{SizesOffset}, *$self->{ZipData}{Zip64} ? $xtrasize : $sizes) or return undef; } @@ -463,31 +494,31 @@ # uncompressed length - only set zip64 if needed if (*$self->{UnCompSize}->isAlmost64bit()) { # || *$self->{ZipData}{Zip64}) { - $zip64Payload .= *$self->{UnCompSize}->getPacked_V64() ; + $zip64Payload .= *$self->{UnCompSize}->getPacked_V64() ; } else { substr($ctl, 24, 4) = *$self->{UnCompSize}->getPacked_V32() ; } # compressed length - only set zip64 if needed if (*$self->{CompSize}->isAlmost64bit()) { # || *$self->{ZipData}{Zip64}) { - $zip64Payload .= *$self->{CompSize}->getPacked_V64() ; + $zip64Payload .= *$self->{CompSize}->getPacked_V64() ; } else { substr($ctl, 20, 4) = *$self->{CompSize}->getPacked_V32() ; } # Local Header offset $zip64Payload .= *$self->{ZipData}{LocalHdrOffset}->getPacked_V64() - if *$self->{ZipData}{LocalHdrOffset}->is64bit() ; + if *$self->{ZipData}{LocalHdrOffset}->is64bit() ; # disk no - always zero, so don't need to include it. - #$zip64Payload .= pack "V", 0 ; + #$zip64Payload .= pack "V", 0 ; my $zip64Xtra = ''; - + if (length $zip64Payload) { $zip64Xtra = IO::Compress::Zlib::Extra::mkSubField(ZIP_EXTRA_ID_ZIP64, $zip64Payload); - - substr($ctl, *$self->{ZipData}{ExtraOffset}, 2) = + + substr($ctl, *$self->{ZipData}{ExtraOffset}, 2) = pack 'v', *$self->{ZipData}{ExtraSize} + length $zip64Xtra; *$self->{ZipData}{AnyZip64} = 1; @@ -496,7 +527,7 @@ # Zip64 needs to be first in extra field to workaround a Windows Explorer Bug # See http://www.info-zip.org/phpBB3/viewtopic.php?f=3&t=440 for details $ctl .= $zip64Xtra . $ctlExtra . $comment; - + *$self->{ZipData}{Offset}->add32(length($hdr)); *$self->{ZipData}{Offset}->add( *$self->{CompSize} ); push @{ *$self->{ZipData}{CentralDir} }, $ctl ; @@ -507,17 +538,17 @@ sub mkFinalTrailer { my $self = shift ; - + my $comment = ''; $comment = *$self->{ZipData}{ZipComment} ; my $cd_offset = *$self->{ZipData}{Offset}->get32bit() ; # offset to start central dir my $entries = @{ *$self->{ZipData}{CentralDir} }; - - *$self->{ZipData}{AnyZip64} = 1 - if *$self->{ZipData}{Offset}->is64bit || $entries >= 0xFFFF ; - + + *$self->{ZipData}{AnyZip64} = 1 + if *$self->{ZipData}{Offset}->is64bit || $entries >= 0xFFFF ; + my $cd = join '', @{ *$self->{ZipData}{CentralDir} }; my $cd_len = length $cd ; @@ -540,12 +571,12 @@ . U64::pack_V64(length $z64e) . $z64e ; - *$self->{ZipData}{Offset}->add32(length $cd) ; + *$self->{ZipData}{Offset}->add32(length $cd) ; $z64e .= pack "V", ZIP64_END_CENTRAL_LOC_HDR_SIG; # signature $z64e .= pack 'V', 0 ; # number of disk with central dir $z64e .= *$self->{ZipData}{Offset}->getPacked_V64() ; # offset to end zip64 central dir - $z64e .= pack 'V', 1 ; # Total number of disks + $z64e .= pack 'V', 1 ; # Total number of disks $cd_offset = IO::Compress::Base::Common::MAX32 ; $cd_len = IO::Compress::Base::Common::MAX32 if IO::Compress::Base::Common::isGeMax32 $cd_len ; @@ -570,7 +601,7 @@ { my $self = shift ; my $got = shift; - + $got->setValue('crc32' => 1); if (! $got->parsed('time') ) { @@ -581,7 +612,7 @@ if ($got->parsed('extime') ) { my $timeRef = $got->getValue('extime'); if ( defined $timeRef) { - return $self->saveErrorString(undef, "exTime not a 3-element array ref") + return $self->saveErrorString(undef, "exTime not a 3-element array ref") if ref $timeRef ne 'ARRAY' || @$timeRef != 3; } @@ -589,14 +620,14 @@ $got->setValue("atime", $timeRef->[0]); $got->setValue("ctime", $timeRef->[2]); } - + # Unix2/3 Extended Attribute for my $name (qw(exunix2 exunixn)) { if ($got->parsed($name) ) { my $idRef = $got->getValue($name); if ( defined $idRef) { - return $self->saveErrorString(undef, "$name not a 2-element array ref") + return $self->saveErrorString(undef, "$name not a 2-element array ref") if ref $idRef ne 'ARRAY' || @$idRef != 2; } @@ -612,15 +643,15 @@ *$self->{ZipData}{Stream} = $got->getValue('stream'); my $method = $got->getValue('method'); - return $self->saveErrorString(undef, "Unknown Method '$method'") + return $self->saveErrorString(undef, "Unknown Method '$method'") if ! defined $ZIP_CM_MIN_VERSIONS{$method}; return $self->saveErrorString(undef, "Bzip2 not available") - if $method == ZIP_CM_BZIP2 and + if $method == ZIP_CM_BZIP2 and ! defined $IO::Compress::Adapter::Bzip2::VERSION; return $self->saveErrorString(undef, "Lzma not available") - if $method == ZIP_CM_LZMA + if $method == ZIP_CM_LZMA and ! defined $IO::Compress::Adapter::Lzma::VERSION; *$self->{ZipData}{Method} = $method; @@ -673,11 +704,11 @@ #} -our %PARAMS = ( +our %PARAMS = ( 'stream' => [IO::Compress::Base::Common::Parse_boolean, 1], #'store' => [IO::Compress::Base::Common::Parse_boolean, 0], 'method' => [IO::Compress::Base::Common::Parse_unsigned, ZIP_CM_DEFLATE], - + # # Zip header fields 'minimal' => [IO::Compress::Base::Common::Parse_boolean, 0], 'zip64' => [IO::Compress::Base::Common::Parse_boolean, 0], @@ -689,14 +720,14 @@ 'efs' => [IO::Compress::Base::Common::Parse_boolean, 0], 'time' => [IO::Compress::Base::Common::Parse_any, undef], 'extime' => [IO::Compress::Base::Common::Parse_any, undef], - 'exunix2' => [IO::Compress::Base::Common::Parse_any, undef], - 'exunixn' => [IO::Compress::Base::Common::Parse_any, undef], - 'extattr' => [IO::Compress::Base::Common::Parse_any, - $Compress::Raw::Zlib::gzip_os_code == 3 - ? 0100644 << 16 + 'exunix2' => [IO::Compress::Base::Common::Parse_any, undef], + 'exunixn' => [IO::Compress::Base::Common::Parse_any, undef], + 'extattr' => [IO::Compress::Base::Common::Parse_any, + $Compress::Raw::Zlib::gzip_os_code == 3 + ? 0100644 << 16 : 0], 'os_code' => [IO::Compress::Base::Common::Parse_unsigned, $Compress::Raw::Zlib::gzip_os_code], - + 'textflag' => [IO::Compress::Base::Common::Parse_boolean, 0], 'extrafieldlocal' => [IO::Compress::Base::Common::Parse_any, undef], 'extrafieldcentral'=> [IO::Compress::Base::Common::Parse_any, undef], @@ -705,15 +736,15 @@ 'preset' => [IO::Compress::Base::Common::Parse_unsigned, 6], 'extreme' => [IO::Compress::Base::Common::Parse_boolean, 0], - # For internal use only + # For internal use only 'sparse' => [IO::Compress::Base::Common::Parse_unsigned, 0], IO::Compress::RawDeflate::getZlibParams(), defined $IO::Compress::Bzip2::VERSION ? IO::Compress::Bzip2::getExtraParams() : () - - + + ); sub getExtraParams @@ -723,6 +754,7 @@ sub getInverseClass { + no warnings 'once'; return ('IO::Uncompress::Unzip', \$IO::Uncompress::Unzip::UnzipError); } @@ -744,12 +776,12 @@ my ($mode, $uid, $gid, $size, $atime, $mtime, $ctime) ; if ( $params->parsed('storelinks') ) { - ($mode, $uid, $gid, $size, $atime, $mtime, $ctime) + ($mode, $uid, $gid, $size, $atime, $mtime, $ctime) = (lstat($filename))[2, 4,5,7, 8,9,10] ; } else { - ($mode, $uid, $gid, $size, $atime, $mtime, $ctime) + ($mode, $uid, $gid, $size, $atime, $mtime, $ctime) = (stat($filename))[2, 4,5,7, 8,9,10] ; } @@ -762,9 +794,9 @@ $params->setValue('name' => $filename) if ! $params->parsed('name') ; - $params->setValue('time' => $mtime) + $params->setValue('time' => $mtime) if ! $params->parsed('time') ; - + if ( ! $params->parsed('extime')) { $params->setValue('mtime' => $mtime) ; @@ -780,14 +812,14 @@ my $attr = $mode << 16; $attr |= ZIP_A_RONLY if ($mode & S_IWRITE) == 0 ; $attr |= ZIP_A_DIR if ($mode & S_IFMT ) == S_IFDIR ; - + $params->setValue('extattr' => $attr); } $params->setValue('want_exunixn', [$uid, $gid]); $params->setValue('uid' => $uid) ; $params->setValue('gid' => $gid) ; - + } sub mkExtendedTime @@ -821,7 +853,7 @@ $ids .= pack("v", $id); } - return IO::Compress::Zlib::Extra::mkSubField(ZIP_EXTRA_ID_INFO_ZIP_UNIX2, + return IO::Compress::Zlib::Extra::mkSubField(ZIP_EXTRA_ID_INFO_ZIP_UNIX2, $ids); } @@ -838,7 +870,7 @@ $ids .= pack "C", $Config{gidsize}; $ids .= pack "V", $gid; - return IO::Compress::Zlib::Extra::mkSubField(ZIP_EXTRA_ID_INFO_ZIP_UNIXN, + return IO::Compress::Zlib::Extra::mkSubField(ZIP_EXTRA_ID_INFO_ZIP_UNIXN, $ids); } @@ -847,8 +879,8 @@ sub _unixToDosTime # Archive::Zip::Member { my $time_t = shift; - - # TODO - add something to cope with unix time < 1980 + + # TODO - add something to cope with unix time < 1980 my ( $sec, $min, $hour, $mday, $mon, $year ) = localtime($time_t); my $dt = 0; $dt += ( $sec >> 1 ); @@ -875,7 +907,7 @@ my $status = zip $input => $output [,OPTS] or die "zip failed: $ZipError\n"; - my $z = new IO::Compress::Zip $output [,OPTS] + my $z = IO::Compress::Zip->new( $output [,OPTS] ) or die "zip failed: $ZipError\n"; $z->print($string); @@ -916,19 +948,35 @@ compressed data to files or buffer. The primary purpose of this module is to provide streaming write access to -zip files and buffers. It is not a general-purpose file archiver. If that -is what you want, check out C or C. +zip files and buffers. -At present the following compression methods are supported by IO::Compress::Zip, -namely Store (no compression at all), Deflate, Bzip2 and LZMA. - -B +At present the following compression methods are supported by IO::Compress::Zip =over 5 -=item * To use Bzip2 compression, the module C must be installed. +=item Store (0) + +=item Deflate (8) + +=item Bzip2 (12) + +To write Bzip2 content, the module C must +be installed. + +=item Lzma (14) + +To write LZMA content, the module C must +be installed. + +=item Zstandard (93) -=item * To use LZMA compression, the module C must be installed. +To write Zstandard content, the module C must +be installed. + +=item Xz (95) + +To write Xz content, the module C must +be installed. =back @@ -1205,7 +1253,7 @@ use IO::Compress::Zip qw(zip $ZipError) ; use IO::File ; - my $input = new IO::File "new( " \$buffer @@ -1246,7 +1294,7 @@ The format of the constructor for C is shown below - my $z = new IO::Compress::Zip $output [,OPTS] + my $z = IO::Compress::Zip->new( $output [,OPTS] ) or die "IO::Compress::Zip failed: $ZipError\n"; It returns an C object on success and undef on failure. @@ -1338,7 +1386,7 @@ =head3 File Naming Options -A quick bit of zip file terminology -- A zip archive consists of one or more I, where each member has an associated +A quick bit of zip file terminology -- A zip archive consists of one or more I, where each member has an associated filename, known as the I. The options listed in this section control how the I (or filename) is stored the zip archive. @@ -1355,7 +1403,7 @@ You should only need to use this option if you want the I to be different from the uncompressed filename or when the input is a filehandle or a buffer. -The default behaviour for what I is used when the C option +The default behaviour for what I is used when the C option is I specified depends on the form of the C<$input> parameter: =over 5 @@ -1365,11 +1413,11 @@ If the C<$input> parameter is a filename, the value of C<$input> will be used for the I . -=item * +=item * If the C<$input> parameter is not a filename, the I will be an empty string. -=back +=back Note that both the C and C options can modify the value used for the I. @@ -1484,7 +1532,7 @@ The default is 0. -=back +=back =head3 Deflate Compression Options @@ -1553,7 +1601,7 @@ =back -=head3 Lzma Compression Options +=head3 Lzma and Xz Compression Options =over 5 @@ -1683,11 +1731,11 @@ =item C<< Method => $method >> -Controls which compression method is used. At present four compression -methods are supported, namely Store (no compression at all), Deflate, -Bzip2 and Lzma. +Controls which compression method is used. At present the compression +methods supported are: Store (no compression at all), Deflate, +Bzip2, Zstd, Xz and Lzma. -The symbols, ZIP_CM_STORE, ZIP_CM_DEFLATE, ZIP_CM_BZIP2 and ZIP_CM_LZMA +The symbols ZIP_CM_STORE, ZIP_CM_DEFLATE, ZIP_CM_BZIP2, ZIP_CM_ZSTD, ZIP_CM_XZ and ZIP_CM_LZMA are used to select the compression method. These constants are not imported by C by default. @@ -1704,6 +1752,14 @@ be installed. A fatal error will be thrown if you attempt to create Lzma content when C is not available. +Note that to create Xz content, the module C must +be installed. A fatal error will be thrown if you attempt to create Xz +content when C is not available. + +Note that to create Zstd content, the module C must +be installed. A fatal error will be thrown if you attempt to create Zstd +content when C is not available. + The default method is ZIP_CM_DEFLATE. =item C<< TextFlag => 0|1 >> @@ -2050,7 +2106,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -2087,8 +2143,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright (c) 2005-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Zlib/Constants.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Zlib/Constants.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Zlib/Constants.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Zlib/Constants.pm 2021-05-04 06:52:48.000000000 +0000 @@ -9,7 +9,7 @@ our ($VERSION, @ISA, @EXPORT); -$VERSION = '2.093'; +$VERSION = '2.102'; @ISA = qw(Exporter); @@ -23,7 +23,7 @@ ZLIB_CMF_CM_DEFLATED ZLIB_CMF_CINFO_OFFSET - ZLIB_CMF_CINFO_BITS + ZLIB_CMF_CINFO_BITS ZLIB_CMF_CINFO_MAX ZLIB_FLG_FCHECK_OFFSET diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Zlib/Extra.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Zlib/Extra.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Compress/Zlib/Extra.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Compress/Zlib/Extra.pm 2021-05-04 06:52:48.000000000 +0000 @@ -8,9 +8,9 @@ our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS); -$VERSION = '2.093'; +$VERSION = '2.102'; -use IO::Compress::Gzip::Constants 2.093 ; +use IO::Compress::Gzip::Constants 2.101 ; sub ExtraFieldError { @@ -36,11 +36,11 @@ return ExtraFieldError("SubField Data is a reference") if ref $pair->[1] ; - # ID is exactly two chars + # ID is exactly two chars return ExtraFieldError("SubField ID not two chars long") unless length $pair->[0] == GZIP_FEXTRA_SUBFIELD_ID_SIZE ; - # Check that the 2nd byte of the ID isn't 0 + # Check that the 2nd byte of the ID isn't 0 return ExtraFieldError("SubField ID 2nd byte is 0x00") if $strict && $gzipMode && substr($pair->[0], 1, 1) eq "\x00" ; @@ -74,7 +74,7 @@ return ExtraFieldError("Truncated in FEXTRA Body Section") if $offset + GZIP_FEXTRA_SUBFIELD_HEADER_SIZE > $XLEN ; - my $id = substr($data, $offset, GZIP_FEXTRA_SUBFIELD_ID_SIZE); + my $id = substr($data, $offset, GZIP_FEXTRA_SUBFIELD_ID_SIZE); $offset += GZIP_FEXTRA_SUBFIELD_ID_SIZE; my $subLen = unpack("v", substr($data, $offset, @@ -84,8 +84,8 @@ return ExtraFieldError("Truncated in FEXTRA Body Section") if $offset + $subLen > $XLEN ; - my $bad = validateExtraFieldPair( [$id, - substr($data, $offset, $subLen)], + my $bad = validateExtraFieldPair( [$id, + substr($data, $offset, $subLen)], $strict, $gzipMode ); return $bad if $bad ; push @$extraRef, [$id => substr($data, $offset, $subLen)] @@ -94,7 +94,7 @@ $offset += $subLen ; } - + return undef ; } @@ -111,7 +111,7 @@ return undef if $offset + GZIP_FEXTRA_SUBFIELD_HEADER_SIZE > $XLEN ; - my $id = substr($data, $offset, GZIP_FEXTRA_SUBFIELD_ID_SIZE); + my $id = substr($data, $offset, GZIP_FEXTRA_SUBFIELD_ID_SIZE); $offset += GZIP_FEXTRA_SUBFIELD_ID_SIZE; my $subLen = unpack("v", substr($data, $offset, @@ -126,7 +126,7 @@ $offset += $subLen ; } - + return undef ; } @@ -165,7 +165,7 @@ # $id2 => $data2, # ... # } - + if ( ! ref $dataRef ) { return undef @@ -177,7 +177,7 @@ my $data = $dataRef; my $out = '' ; - if (ref $data eq 'ARRAY') { + if (ref $data eq 'ARRAY') { if (ref $data->[0]) { foreach my $pair (@$data) { @@ -188,30 +188,30 @@ return $bad if $bad ; $out .= mkSubField(@$pair); - } - } + } + } else { return ExtraFieldError("Not even number of elements") unless @$data % 2 == 0; for (my $ix = 0; $ix <= @$data -1 ; $ix += 2) { my $bad = validateExtraFieldPair([$data->[$ix], - $data->[$ix+1]], + $data->[$ix+1]], $strict, $gzipMode) ; return $bad if $bad ; $out .= mkSubField($data->[$ix], $data->[$ix+1]); - } + } } - } - elsif (ref $data eq 'HASH') { + } + elsif (ref $data eq 'HASH') { while (my ($id, $info) = each %$data) { my $bad = validateExtraFieldPair([$id, $info], $strict, $gzipMode); return $bad if $bad ; $out .= mkSubField($id, $info); - } - } + } + } else { return ExtraFieldError("Not a scalar, array ref or hash ref") ; } diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Bunzip2.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Bunzip2.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Bunzip2.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Bunzip2.pm 2021-05-04 06:52:48.000000000 +0000 @@ -4,19 +4,19 @@ use warnings; use bytes; -use IO::Compress::Base::Common 2.093 qw(:Status); +use IO::Compress::Base::Common 2.101 qw(:Status); -use Compress::Raw::Bzip2 2.093 ; +use Compress::Raw::Bzip2 2.101 ; our ($VERSION, @ISA); -$VERSION = '2.093'; +$VERSION = '2.102'; sub mkUncompObject { my $small = shift || 0; my $verbosity = shift || 0; - my ($inflate, $status) = new Compress::Raw::Bunzip2(1, 1, $small, $verbosity, 1); + my ($inflate, $status) = Compress::Raw::Bunzip2->new(1, 1, $small, $verbosity, 1); return (undef, "Could not create Inflation object: $status", $status) if $status != BZ_OK ; @@ -26,8 +26,8 @@ 'UnCompSize' => 0, 'Error' => '', 'ConsumesInput' => 1, - } ; - + } ; + } sub uncompr @@ -48,7 +48,7 @@ return STATUS_ERROR; } - + return STATUS_OK if $status == BZ_OK ; return STATUS_ENDSTREAM if $status == BZ_STREAM_END ; return STATUS_ERROR ; @@ -59,12 +59,12 @@ { my $self = shift ; - my ($inf, $status) = new Compress::Raw::Bunzip2(); + my ($inf, $status) = Compress::Raw::Bunzip2->new(); $self->{ErrorNo} = ($status == BZ_OK) ? 0 : $status ; if ($status != BZ_OK) { - $self->{Error} = "Cannot create Inflate object: $status"; + $self->{Error} = "Cannot create Inflate object: $status"; return STATUS_ERROR; } @@ -100,8 +100,8 @@ sub sync { my $self = shift ; - #( $self->{Inf}->inflateSync(@_) == BZ_OK) - # ? STATUS_OK + #( $self->{Inf}->inflateSync(@_) == BZ_OK) + # ? STATUS_OK # : STATUS_ERROR ; } @@ -109,4 +109,3 @@ 1; __END__ - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Identity.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Identity.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Identity.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Identity.pm 2021-05-04 06:52:48.000000000 +0000 @@ -4,14 +4,14 @@ use strict; use bytes; -use IO::Compress::Base::Common 2.093 qw(:Status); +use IO::Compress::Base::Common 2.101 qw(:Status); use IO::Compress::Zip::Constants ; our ($VERSION); -$VERSION = '2.093'; +$VERSION = '2.102'; -use Compress::Raw::Zlib 2.093 (); +use Compress::Raw::Zlib 2.101 (); sub mkUncompObject { @@ -21,7 +21,7 @@ my $crc32 = 1; #shift ; my $adler32 = shift; - bless { 'CompSize' => new U64 , # 0, + bless { 'CompSize' => U64->new(), # 0, 'UnCompSize' => 0, 'wantCRC32' => $crc32, 'CRC32' => Compress::Raw::Zlib::crc32(''), @@ -70,7 +70,7 @@ $ind = $len - 1 ; } } - + if ($ind >= 0) { $remainder = substr($$in, $ind) ; substr($$in, $ind) = '' ; @@ -94,7 +94,7 @@ $l1 = U64::newUnpack_V32(substr($remainder, 8)); $l2 = U64::newUnpack_V32(substr($remainder, 12)); } - + my $newLen = $self->{CompSize}->clone(); $newLen->add(length $$in); if ($l1->equal($l2) && $l1->equal($newLen) ) { @@ -142,7 +142,7 @@ $self->{CompSize}->reset(); $self->{UnCompSize} = 0; $self->{CRC32} = Compress::Raw::Zlib::crc32(''); - $self->{ADLER32} = Compress::Raw::Zlib::adler32(''); + $self->{ADLER32} = Compress::Raw::Zlib::adler32(''); return STATUS_OK ; } diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Inflate.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Inflate.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Inflate.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Inflate.pm 2021-05-04 06:52:48.000000000 +0000 @@ -4,11 +4,11 @@ use warnings; use bytes; -use IO::Compress::Base::Common 2.093 qw(:Status); -use Compress::Raw::Zlib 2.093 qw(Z_OK Z_BUF_ERROR Z_STREAM_END Z_FINISH MAX_WBITS); +use IO::Compress::Base::Common 2.101 qw(:Status); +use Compress::Raw::Zlib 2.101 qw(Z_OK Z_BUF_ERROR Z_STREAM_END Z_FINISH MAX_WBITS); our ($VERSION); -$VERSION = '2.093'; +$VERSION = '2.102'; @@ -23,23 +23,23 @@ if ($scan) { - ($inflate, $status) = new Compress::Raw::Zlib::InflateScan + ($inflate, $status) = Compress::Raw::Zlib::InflateScan->new( #LimitOutput => 1, CRC32 => $crc32, ADLER32 => $adler32, - WindowBits => - MAX_WBITS ; + WindowBits => - MAX_WBITS ); } else { - ($inflate, $status) = new Compress::Raw::Zlib::Inflate + ($inflate, $status) = Compress::Raw::Zlib::Inflate->new( AppendOutput => 1, LimitOutput => 1, CRC32 => $crc32, ADLER32 => $adler32, - WindowBits => - MAX_WBITS ; + WindowBits => - MAX_WBITS ); } - return (undef, "Could not create Inflation object: $status", $status) + return (undef, "Could not create Inflation object: $status", $status) if $status != Z_OK ; return bless {'Inf' => $inflate, @@ -47,8 +47,8 @@ 'UnCompSize' => 0, 'Error' => '', 'ConsumesInput' => 1, - } ; - + } ; + } sub uncompr @@ -67,7 +67,7 @@ $self->{Error} = "Inflation Error: $status"; return STATUS_ERROR; } - + return STATUS_OK if $status == Z_BUF_ERROR ; # ??? return STATUS_OK if $status == Z_OK ; return STATUS_ENDSTREAM if $status == Z_STREAM_END ; @@ -115,8 +115,8 @@ sub sync { my $self = shift ; - ( $self->{Inf}->inflateSync(@_) == Z_OK) - ? STATUS_OK + ( $self->{Inf}->inflateSync(@_) == Z_OK) + ? STATUS_OK : STATUS_ERROR ; } @@ -154,4 +154,3 @@ __END__ - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/AnyInflate.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/AnyInflate.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/AnyInflate.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/AnyInflate.pm 2021-05-04 06:52:48.000000000 +0000 @@ -6,27 +6,27 @@ use warnings; use bytes; -use IO::Compress::Base::Common 2.093 (); +use IO::Compress::Base::Common 2.101 qw(:Parse); -use IO::Uncompress::Adapter::Inflate 2.093 (); +use IO::Uncompress::Adapter::Inflate 2.101 (); -use IO::Uncompress::Base 2.093 ; -use IO::Uncompress::Gunzip 2.093 ; -use IO::Uncompress::Inflate 2.093 ; -use IO::Uncompress::RawInflate 2.093 ; -use IO::Uncompress::Unzip 2.093 ; +use IO::Uncompress::Base 2.101 ; +use IO::Uncompress::Gunzip 2.101 ; +use IO::Uncompress::Inflate 2.101 ; +use IO::Uncompress::RawInflate 2.101 ; +use IO::Uncompress::Unzip 2.101 ; require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $AnyInflateError); -$VERSION = '2.093'; +$VERSION = '2.102'; $AnyInflateError = ''; @ISA = qw(IO::Uncompress::Base Exporter); @EXPORT_OK = qw( $AnyInflateError anyinflate ) ; -%EXPORT_TAGS = %IO::Uncompress::Base::DEFLATE_CONSTANTS ; +%EXPORT_TAGS = %IO::Uncompress::Base::DEFLATE_CONSTANTS if keys %IO::Uncompress::Base::DEFLATE_CONSTANTS; push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; Exporter::export_ok_tags('all'); @@ -48,7 +48,6 @@ sub getExtraParams { - use IO::Compress::Base::Common 2.093 qw(:Parse); return ( 'rawinflate' => [Parse_boolean, 0] ) ; } @@ -75,9 +74,9 @@ if ! defined $obj; *$self->{Uncomp} = $obj; - + my @possible = qw( Inflate Gunzip Unzip ); - unshift @possible, 'RawInflate' + unshift @possible, 'RawInflate' if 1 || $got->getValue('rawinflate'); my $magic = $self->ckMagic( @possible ); @@ -113,7 +112,7 @@ $self->pushBack(*$self->{HeaderPending}) ; *$self->{HeaderPending} = '' ; - } + } bless $self => $keep; return undef; @@ -135,7 +134,7 @@ my $status = anyinflate $input => $output [,OPTS] or die "anyinflate failed: $AnyInflateError\n"; - my $z = new IO::Uncompress::AnyInflate $input [OPTS] + my $z = IO::Uncompress::AnyInflate->new( $input [OPTS] ) or die "anyinflate failed: $AnyInflateError\n"; $status = $z->read($buffer) @@ -444,7 +443,7 @@ use IO::Uncompress::AnyInflate qw(anyinflate $AnyInflateError) ; use IO::File ; - my $input = new IO::File "new( " \$buffer @@ -479,7 +478,7 @@ The format of the constructor for IO::Uncompress::AnyInflate is shown below - my $z = new IO::Uncompress::AnyInflate $input [OPTS] + my $z = IO::Uncompress::AnyInflate->new( $input [OPTS] ) or die "IO::Uncompress::AnyInflate failed: $AnyInflateError\n"; Returns an C object on success and undef on failure. @@ -941,7 +940,7 @@ =head1 Importing -No symbolic constants are required by this IO::Uncompress::AnyInflate at present. +No symbolic constants are required by IO::Uncompress::AnyInflate at present. =over 5 @@ -962,7 +961,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -999,8 +998,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright (c) 2005-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/AnyUncompress.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/AnyUncompress.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/AnyUncompress.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/AnyUncompress.pm 2021-05-04 06:52:48.000000000 +0000 @@ -4,21 +4,21 @@ use warnings; use bytes; -use IO::Compress::Base::Common 2.093 (); +use IO::Compress::Base::Common 2.101 (); -use IO::Uncompress::Base 2.093 ; +use IO::Uncompress::Base 2.101 ; require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $AnyUncompressError); -$VERSION = '2.093'; +$VERSION = '2.102'; $AnyUncompressError = ''; @ISA = qw(IO::Uncompress::Base Exporter); @EXPORT_OK = qw( $AnyUncompressError anyuncompress ) ; -%EXPORT_TAGS = %IO::Uncompress::Base::DEFLATE_CONSTANTS ; +%EXPORT_TAGS = %IO::Uncompress::Base::DEFLATE_CONSTANTS if keys %IO::Uncompress::Base::DEFLATE_CONSTANTS; push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; Exporter::export_ok_tags('all'); @@ -33,26 +33,26 @@ # Don't trigger any __DIE__ Hooks. local $SIG{__DIE__}; - eval ' use IO::Uncompress::Adapter::Inflate 2.093 ;'; - eval ' use IO::Uncompress::Adapter::Bunzip2 2.093 ;'; - eval ' use IO::Uncompress::Adapter::LZO 2.093 ;'; - eval ' use IO::Uncompress::Adapter::Lzf 2.093 ;'; - eval ' use IO::Uncompress::Adapter::UnLzma 2.093 ;'; - eval ' use IO::Uncompress::Adapter::UnXz 2.093 ;'; - eval ' use IO::Uncompress::Adapter::UnZstd 2.083 ;'; - eval ' use IO::Uncompress::Adapter::UnLzip 2.093 ;'; - - eval ' use IO::Uncompress::Bunzip2 2.093 ;'; - eval ' use IO::Uncompress::UnLzop 2.093 ;'; - eval ' use IO::Uncompress::Gunzip 2.093 ;'; - eval ' use IO::Uncompress::Inflate 2.093 ;'; - eval ' use IO::Uncompress::RawInflate 2.093 ;'; - eval ' use IO::Uncompress::Unzip 2.093 ;'; - eval ' use IO::Uncompress::UnLzf 2.093 ;'; - eval ' use IO::Uncompress::UnLzma 2.093 ;'; - eval ' use IO::Uncompress::UnXz 2.093 ;'; - eval ' use IO::Uncompress::UnZstd 2.093 ;'; - eval ' use IO::Uncompress::UnLzip 2.093 ;'; + eval ' use IO::Uncompress::Adapter::Inflate 2.101 ;'; + eval ' use IO::Uncompress::Adapter::Bunzip2 2.101 ;'; + eval ' use IO::Uncompress::Adapter::LZO 2.101 ;'; + eval ' use IO::Uncompress::Adapter::Lzf 2.101 ;'; + eval ' use IO::Uncompress::Adapter::UnLzma 2.101 ;'; + eval ' use IO::Uncompress::Adapter::UnXz 2.101 ;'; + eval ' use IO::Uncompress::Adapter::UnZstd 2.101 ;'; + eval ' use IO::Uncompress::Adapter::UnLzip 2.101 ;'; + + eval ' use IO::Uncompress::Bunzip2 2.101 ;'; + eval ' use IO::Uncompress::UnLzop 2.101 ;'; + eval ' use IO::Uncompress::Gunzip 2.101 ;'; + eval ' use IO::Uncompress::Inflate 2.101 ;'; + eval ' use IO::Uncompress::RawInflate 2.101 ;'; + eval ' use IO::Uncompress::Unzip 2.101 ;'; + eval ' use IO::Uncompress::UnLzf 2.101 ;'; + eval ' use IO::Uncompress::UnLzma 2.101 ;'; + eval ' use IO::Uncompress::UnXz 2.101 ;'; + eval ' use IO::Uncompress::UnZstd 2.101 ;'; + eval ' use IO::Uncompress::UnLzip 2.101 ;'; } @@ -70,7 +70,7 @@ } sub getExtraParams -{ +{ return ( 'rawinflate' => [IO::Compress::Base::Common::Parse_boolean, 0] , 'unlzma' => [IO::Compress::Base::Common::Parse_boolean, 0] ) ; } @@ -103,13 +103,13 @@ if ! defined $obj; *$self->{Uncomp} = $obj; - + my @possible = qw( Inflate Gunzip Unzip ); - unshift @possible, 'RawInflate' + unshift @possible, 'RawInflate' if $got->getValue('rawinflate'); $magic = $self->ckMagic( @possible ); - + if ($magic) { *$self->{Info} = $self->readHeader($magic) or return undef ; @@ -126,9 +126,9 @@ if ! defined $obj; *$self->{Uncomp} = $obj; - + my @possible = qw( UnLzma ); - #unshift @possible, 'RawInflate' + #unshift @possible, 'RawInflate' # if $got->getValue('rawinflate'); if ( *$self->{Info} = $self->ckMagic( @possible )) @@ -206,7 +206,7 @@ *$self->{Info} = $self->readHeader($magic) or return undef ; - my ($obj, $errstr, $errno) = IO::Uncompress::Adapter::Zstd::mkUncompObject(); + my ($obj, $errstr, $errno) = IO::Uncompress::Adapter::UnZstd::mkUncompObject(); return $self->saveErrorString(undef, $errstr, $errno) if ! defined $obj; @@ -257,7 +257,7 @@ $self->pushBack(*$self->{HeaderPending}) ; *$self->{HeaderPending} = '' ; - } + } bless $self => $keep; return undef; @@ -270,7 +270,7 @@ =head1 NAME -IO::Uncompress::AnyUncompress - Uncompress gzip, zip, bzip2, xz, lzma, lzip, lzf or lzop file/buffer +IO::Uncompress::AnyUncompress - Uncompress gzip, zip, bzip2, zstd, xz, lzma, lzip, lzf or lzop file/buffer =head1 SYNOPSIS @@ -279,7 +279,7 @@ my $status = anyuncompress $input => $output [,OPTS] or die "anyuncompress failed: $AnyUncompressError\n"; - my $z = new IO::Uncompress::AnyUncompress $input [OPTS] + my $z = IO::Uncompress::AnyUncompress->new( $input [OPTS] ) or die "anyuncompress failed: $AnyUncompressError\n"; $status = $z->read($buffer) @@ -333,6 +333,8 @@ =item zip +=item zstd (Zstandard) + =item bzip2 =item lzop @@ -598,7 +600,7 @@ use IO::Uncompress::AnyUncompress qw(anyuncompress $AnyUncompressError) ; use IO::File ; - my $input = new IO::File "new( " \$buffer @@ -633,7 +635,7 @@ The format of the constructor for IO::Uncompress::AnyUncompress is shown below - my $z = new IO::Uncompress::AnyUncompress $input [OPTS] + my $z = IO::Uncompress::AnyUncompress->new( $input [OPTS] ) or die "IO::Uncompress::AnyUncompress failed: $AnyUncompressError\n"; Returns an C object on success and undef on failure. @@ -1034,7 +1036,7 @@ =head1 Importing -No symbolic constants are required by this IO::Uncompress::AnyUncompress at present. +No symbolic constants are required by IO::Uncompress::AnyUncompress at present. =over 5 @@ -1051,7 +1053,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -1075,8 +1077,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright (c) 2005-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/Base.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/Base.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/Base.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/Base.pm 2021-05-04 06:52:48.000000000 +0000 @@ -9,12 +9,12 @@ @ISA = qw(IO::File Exporter); -$VERSION = '2.093'; +$VERSION = '2.102'; use constant G_EOF => 0 ; use constant G_ERR => -1 ; -use IO::Compress::Base::Common 2.093 ; +use IO::Compress::Base::Common 2.101 ; use IO::File ; use Symbol; @@ -58,7 +58,7 @@ if (defined *$self->{FH}) { if ($offset) { - # Not using this + # Not using this # # *$self->{FH}->read($$out, $get_size, $offset); # @@ -75,7 +75,7 @@ elsif (defined *$self->{InputEvent}) { my $got = 1 ; while (length $$out < $size) { - last + last if ($got = *$self->{InputEvent}->($$out, $get_size)) <= 0; } @@ -93,13 +93,13 @@ substr($$out, $offset) = substr($$buf, *$self->{BufferOffset}, $get_size); if (*$self->{ConsumeInput}) { substr($$buf, 0, $get_size) = '' } - else + else { *$self->{BufferOffset} += length($$out) - $offset } } - *$self->{InputLengthRemaining} -= length($$out) #- $offset + *$self->{InputLengthRemaining} -= length($$out) #- $offset if defined *$self->{InputLength}; - + if (! defined $status) { $self->saveStatus($!) ; return STATUS_ERROR; @@ -169,7 +169,7 @@ if (defined *$self->{FH}) { return *$self->{FH}->tell() } - else + else { return *$self->{BufferOffset} } } @@ -179,7 +179,7 @@ my $out_data = shift ; if (defined *$self->{FH}) { - # flush needed for 5.8.0 + # flush needed for 5.8.0 defined *$self->{FH}->write($out_data, length $out_data) && defined *$self->{FH}->flush() ; } @@ -199,7 +199,7 @@ sub smartEof { my ($self) = $_[0]; - local $.; + local $.; return 0 if length *$self->{Prime} || *$self->{PushMode}; @@ -207,15 +207,15 @@ { # Could use # - # *$self->{FH}->eof() + # *$self->{FH}->eof() # # here, but this can cause trouble if # the filehandle is itself a tied handle, but it uses sysread. - # Then we get into mixing buffered & non-buffered IO, + # Then we get into mixing buffered & non-buffered IO, # which will cause trouble my $info = $self->getErrInfo(); - + my $buffer = ''; my $status = $self->smartRead(\$buffer, 1); $self->pushBack($buffer) if length $buffer; @@ -225,7 +225,7 @@ } elsif (defined *$self->{InputEvent}) { *$self->{EventEof} } - else + else { *$self->{BufferOffset} >= length(${ *$self->{Buffer} }) } } @@ -347,7 +347,7 @@ my $class = shift ; my $got = shift || IO::Compress::Base::Parameters::new(); - + my $Valid = { 'blocksize' => [IO::Compress::Base::Common::Parse_unsigned, 16 * 1024], 'autoclose' => [IO::Compress::Base::Common::Parse_boolean, 0], @@ -362,7 +362,7 @@ #'decode' => [IO::Compress::Base::Common::Parse_any, undef], #'consumeinput' => [IO::Compress::Base::Common::Parse_boolean, 0], - + $self->getExtraParams(), #'Todo - Revert to ordinary file on end Z_STREAM_END'=> 0, @@ -371,11 +371,11 @@ $Valid->{trailingdata} = [IO::Compress::Base::Common::Parse_writable_scalar, undef] if *$self->{OneShot} ; - - $got->parse($Valid, @_ ) + + $got->parse($Valid, @_ ) or $self->croakError("${class}: " . $got->getError()) ; - $self->postCheckParams($got) + $self->postCheckParams($got) or $self->croakError("${class}: " . $self->error()) ; return $got; @@ -403,7 +403,7 @@ my $inType = whatIsInput($inValue, 1); - $obj->ckInputParam($class, $inValue, 1) + $obj->ckInputParam($class, $inValue, 1) or return undef ; *$obj->{InNew} = 1; @@ -412,8 +412,8 @@ or $obj->croakError("${class}: " . *$obj->{Error}); if ($inType eq 'buffer' || $inType eq 'code') { - *$obj->{Buffer} = $inValue ; - *$obj->{InputEvent} = $inValue + *$obj->{Buffer} = $inValue ; + *$obj->{InputEvent} = $inValue if $inType eq 'code' ; } else { @@ -422,18 +422,18 @@ *$obj->{Handle} = 1 ; # Need to rewind for Scan - *$obj->{FH}->seek(0, SEEK_SET) + *$obj->{FH}->seek(0, SEEK_SET) if $got->getValue('scan'); - } - else { + } + else { no warnings ; my $mode = '<'; $mode = '+<' if $got->getValue('scan'); *$obj->{StdIO} = ($inValue eq '-'); - *$obj->{FH} = new IO::File "$mode $inValue" + *$obj->{FH} = IO::File->new( "$mode $inValue" ) or return $obj->saveErrorString(undef, "cannot open file '$inValue': $!", $!) ; } - + *$obj->{LineNo} = $. = 0; setBinModeInput(*$obj->{FH}) ; @@ -441,7 +441,7 @@ *$obj->{Buffer} = \$buff ; } -# if ($got->getValue('decode')) { +# if ($got->getValue('decode')) { # my $want_encoding = $got->getValue('decode'); # *$obj->{Encoding} = IO::Compress::Base::Common::getEncoding($obj, $class, $want_encoding); # } @@ -449,7 +449,7 @@ # *$obj->{Encoding} = undef; # } - *$obj->{InputLength} = $got->parsed('inputlength') + *$obj->{InputLength} = $got->parsed('inputlength') ? $got->getValue('inputlength') : undef ; *$obj->{InputLengthRemaining} = $got->getValue('inputlength'); @@ -465,7 +465,7 @@ # TODO - move these two into RawDeflate *$obj->{Scan} = $got->getValue('scan'); - *$obj->{ParseExtra} = $got->getValue('parseextra') + *$obj->{ParseExtra} = $got->getValue('parseextra') || $got->getValue('strict') ; *$obj->{Type} = ''; *$obj->{Prime} = $got->getValue('prime') || '' ; @@ -473,8 +473,8 @@ *$obj->{Plain} = 0; *$obj->{PlainBytesRead} = 0; *$obj->{InflatedBytesRead} = 0; - *$obj->{UnCompSize} = new U64; - *$obj->{CompSize} = new U64; + *$obj->{UnCompSize} = U64->new; + *$obj->{CompSize} = U64->new; *$obj->{TotalInflatedBytesRead} = 0; *$obj->{NewStream} = 0 ; *$obj->{EventEof} = 0 ; @@ -494,19 +494,19 @@ *$obj->{InNew} = 0; *$obj->{Closed} = 0; - - return $obj + + return $obj if *$obj->{Pause} ; if ($status) { # Need to try uncompressing to catch the case # where the compressed file uncompresses to an # empty string - so eof is set immediately. - + my $out_buffer = ''; $status = $obj->read(\$out_buffer); - + if ($status < 0) { *$obj->{ReadStatus} = [ $status, $obj->error(), $obj->errorNo() ]; } @@ -515,7 +515,7 @@ if length $out_buffer; } else { - return undef + return undef unless *$obj->{Transparent}; $obj->clearError(); @@ -549,7 +549,7 @@ # # if ($_[0] ne '-' && ! -e $_[0] ) # { -# return $self->saveErrorString(1, +# return $self->saveErrorString(1, # "input file '$_[0]' does not exist", STATUS_ERROR); # } # } @@ -573,13 +573,13 @@ my $output = shift ; - my $x = new IO::Compress::Base::Validator($class, *$obj->{Error}, $name, $input, $output) + my $x = IO::Compress::Base::Validator->new($class, *$obj->{Error}, $name, $input, $output) or return undef ; - + push @_, $output if $haveOut && $x->{Hash}; *$obj->{OneShot} = 1 ; - + my $got = $obj->checkParams($name, undef, @_) or return undef ; @@ -589,25 +589,25 @@ # warn "TD $value "; # #$value = $$value; ## warn "TD $value $$value "; -# +# # return retErr($obj, "Parameter 'TrailingData' not writable") -# if readonly $$value ; +# if readonly $$value ; # -# if (ref $$value) +# if (ref $$value) # { # return retErr($obj,"Parameter 'TrailingData' not a scalar reference") # if ref $$value ne 'SCALAR' ; -# +# # *$obj->{TrailingData} = $$value ; # } -# else +# else # { # return retErr($obj,"Parameter 'TrailingData' not a scalar") -# if ref $value ne 'SCALAR' ; +# if ref $value ne 'SCALAR' ; # # *$obj->{TrailingData} = $value ; # } - + *$obj->{TrailingData} = $got->getValue('trailingdata'); } @@ -620,7 +620,7 @@ # { # while (my($k, $v) = each %$input) # { -# $v = \$input->{$k} +# $v = \$input->{$k} # unless defined $v ; # # $obj->_singleTarget($x, $k, $v, @_) @@ -629,7 +629,7 @@ # # return keys %$input ; # } - + if ($x->{GlobMap}) { $x->{oneInput} = 1 ; @@ -645,11 +645,11 @@ if (! $x->{oneOutput} ) { - my $inFile = ($x->{inType} eq 'filenames' + my $inFile = ($x->{inType} eq 'filenames' || $x->{inType} eq 'filename'); $x->{inType} = $inFile ? 'filename' : 'buffer'; - + foreach my $in ($x->{oneInput} ? $input : @$input) { my $out ; @@ -684,7 +684,7 @@ my $x = shift ; my $input = shift; my $output = shift; - + my $buff = ''; $x->{buff} = \$buff ; @@ -693,7 +693,7 @@ my $mode = '>' ; $mode = '>>' if $x->{Got}->getValue('append') ; - $x->{fh} = new IO::File "$mode $output" + $x->{fh} = IO::File->new( "$mode $output" ) or return retErr($x, "cannot open file '$output': $!") ; binmode $x->{fh} ; @@ -708,10 +708,10 @@ } } - + elsif ($x->{outType} eq 'buffer' ) { - $$output = '' + $$output = '' unless $x->{Got}->getValue('append'); $x->{buff} = $output ; } @@ -719,22 +719,22 @@ if ($x->{oneInput}) { defined $self->_rd2($x, $input, $output) - or return undef; + or return undef; } else { for my $element ( ($x->{inType} eq 'hash') ? keys %$input : @$input) { - defined $self->_rd2($x, $element, $output) + defined $self->_rd2($x, $element, $output) or return undef ; } } - if ( ($x->{outType} eq 'filename' && $output ne '-') || + if ( ($x->{outType} eq 'filename' && $output ne '-') || ($x->{outType} eq 'handle' && $x->{Got}->getValue('autoclose'))) { - $x->{fh}->close() - or return retErr($x, $!); + $x->{fh}->close() + or return retErr($x, $!); delete $x->{fh}; } @@ -747,15 +747,15 @@ my $x = shift ; my $input = shift; my $output = shift; - + my $z = IO::Compress::Base::Common::createSelfTiedObject($x->{Class}, *$self->{Error}); - + $z->_create($x->{Got}, 1, $input, @_) or return undef ; my $status ; my $fh = $x->{fh}; - + while (1) { while (($status = $z->read($x->{buff})) > 0) { @@ -770,9 +770,9 @@ if (! $x->{oneOutput} ) { my $ot = $x->{outType} ; - if ($ot eq 'array') + if ($ot eq 'array') { push @$output, $x->{buff} } - elsif ($ot eq 'hash') + elsif ($ot eq 'hash') { $output->{$input} = $x->{buff} } my $buff = ''; @@ -781,12 +781,12 @@ last if $status < 0 || $z->smartEof(); - last + last unless *$self->{MultiStream}; $status = $z->nextStream(); - last + last unless $status == 1 ; } @@ -796,7 +796,7 @@ ${ *$self->{TrailingData} } = $z->trailingData() if defined *$self->{TrailingData} ; - $z->close() + $z->close() or return undef ; return 1 ; @@ -808,7 +808,7 @@ die "OOPS\n" ; } - + sub UNTIE { my $self = shift ; @@ -836,7 +836,7 @@ $size = List::Util::min($size, *$self->{CompressedInputLengthRemaining} ); *$self->{CompressedInputLengthRemaining} -= $size ; } - + my $status = $self->smartRead($buff, $size) ; return $self->saveErrorString(STATUS_ERROR, "Error Reading Data: $!", $!) if $status == STATUS_ERROR ; @@ -861,7 +861,7 @@ # >0 - ok, number of bytes read # =0 - ok, eof # <0 - not ok - + my $self = shift ; return G_EOF if *$self->{Closed} ; @@ -873,8 +873,8 @@ if (*$self->{Plain}) { my $tmp_buff ; my $len = $self->smartRead(\$tmp_buff, *$self->{BlockSize}) ; - - return $self->saveErrorString(G_ERR, "Error reading data: $!", $!) + + return $self->saveErrorString(G_ERR, "Error reading data: $!", $!) if $len == STATUS_ERROR ; if ($len == 0 ) { @@ -898,13 +898,13 @@ $$buffer .= *$self->{Pending} ; my $len = length *$self->{Pending} ; *$self->{Pending} = ''; - return $len; + return $len; } my $temp_buf = ''; my $outSize = 0; my $status = $self->readBlock(\$temp_buf, *$self->{BlockSize}, $outSize) ; - + return G_ERR if $status == STATUS_ERROR ; @@ -915,18 +915,18 @@ $status = *$self->{Uncomp}->uncompr(\$temp_buf, $buffer, defined *$self->{CompressedInputLengthDone} || $self->smartEof(), $outSize); - + # Remember the input buffer if it wasn't consumed completely $self->pushBack($temp_buf) if *$self->{Uncomp}{ConsumesInput}; return $self->saveErrorString(G_ERR, *$self->{Uncomp}{Error}, *$self->{Uncomp}{ErrorNo}) - if $self->saveStatus($status) == STATUS_ERROR; + if $self->saveStatus($status) == STATUS_ERROR; $self->postBlockChk($buffer, $before_len) == STATUS_OK or return G_ERR; $buf_len = defined $$buffer ? length($$buffer) - $before_len : 0; - + *$self->{CompSize}->add($beforeC_len - length $temp_buf) ; *$self->{InflatedBytesRead} += $buf_len ; @@ -960,7 +960,7 @@ or return G_ERR; } else { - return $self->TrailerError("trailer truncated. Expected " . + return $self->TrailerError("trailer truncated. Expected " . "$trailer_size bytes, got $got") if *$self->{Strict}; $self->pushBack($trailer) ; @@ -978,7 +978,7 @@ } } - + # return the number of uncompressed bytes read return $buf_len ; @@ -1029,7 +1029,7 @@ # TODO - make this more efficient if know the offset for the end of # the stream and seekable - $status = $self->read($buffer) + $status = $self->read($buffer) while $status > 0 ; return $status @@ -1074,7 +1074,7 @@ push @{ *$self->{InfoList} }, *$self->{Info} ; - return 1; + return 1; } sub streamCount @@ -1090,7 +1090,7 @@ # >0 - ok, number of bytes read # =0 - ok, eof # <0 - not ok - + my $self = shift ; if (defined *$self->{ReadStatus} ) { @@ -1123,7 +1123,7 @@ my $offset = $_[2] || 0; if (! *$self->{AppendOutput}) { - if (! $offset) { + if (! $offset) { $$buffer = '' ; } @@ -1161,13 +1161,13 @@ } else { my $len = 0; - $len = $self->_raw_read($buffer) + $len = $self->_raw_read($buffer) while ! *$self->{EndStream} && $len == 0 ; return $len ; } } - # Need to jump through more hoops - either length or offset + # Need to jump through more hoops - either length or offset # or both are specified. my $out_buffer = *$self->{Pending} ; *$self->{Pending} = ''; @@ -1176,17 +1176,17 @@ while (! *$self->{EndStream} && length($out_buffer) < $length) { my $buf_len = $self->_raw_read(\$out_buffer); - return $buf_len + return $buf_len if $buf_len < 0 ; } - $length = length $out_buffer + $length = length $out_buffer if length($out_buffer) < $length ; - return 0 + return 0 if $length == 0 ; - $$buffer = '' + $$buffer = '' if ! defined $$buffer; $offset = length $$buffer @@ -1223,7 +1223,7 @@ # Paragraph Mode if ( ! length $/ ) { - my $paragraph ; + my $paragraph ; while (($status = $self->read($paragraph)) > 0 ) { if ($paragraph =~ s/^(.*?\n\n+)//s) { *$self->{Pending} = $paragraph ; @@ -1236,13 +1236,13 @@ # $/ isn't empty, or a reference, so it's Line Mode. { - my $line ; + my $line ; my $p = \*$self->{Pending} ; while (($status = $self->read($line)) > 0 ) { my $offset = index($line, $/); if ($offset >= 0) { my $l = substr($line, 0, $offset + length $/ ); - substr($line, 0, $offset + length $/) = ''; + substr($line, 0, $offset + length $/) = ''; $$p = $line; return (1, \$l); } @@ -1262,7 +1262,7 @@ return undef; } - return undef + return undef if *$self->{Closed} || (!length *$self->{Pending} && *$self->{EndStream}) ; my $current_append = *$self->{AppendOutput} ; @@ -1271,7 +1271,7 @@ my ($status, $lineref) = $self->_getline(); *$self->{AppendOutput} = $current_append; - return undef + return undef if $status < 0 || length $$lineref == 0 ; $. = ++ *$self->{LineNo} ; @@ -1282,10 +1282,10 @@ sub getlines { my $self = shift; - $self->croakError(*$self->{ClassName} . + $self->croakError(*$self->{ClassName} . "::getlines: called in scalar context\n") unless wantarray; my($line, @lines); - push(@lines, $line) + push(@lines, $line) while defined($line = $self->getline); return @lines; } @@ -1307,8 +1307,8 @@ sub ungetc { my $self = shift; - *$self->{Pending} = "" unless defined *$self->{Pending} ; - *$self->{Pending} = $_[0] . *$self->{Pending} ; + *$self->{Pending} = "" unless defined *$self->{Pending} ; + *$self->{Pending} = $_[0] . *$self->{Pending} ; } @@ -1332,7 +1332,7 @@ my $self = shift ; return (*$self->{Closed} || - (!length *$self->{Pending} + (!length *$self->{Pending} && ( $self->smartEof() || *$self->{EndStream}))) ; } @@ -1362,14 +1362,14 @@ return 1 if *$self->{Closed} ; - untie *$self + untie *$self if $] >= 5.008 ; my $status = 1 ; if (defined *$self->{FH}) { if ((! *$self->{Handle} || *$self->{AutoClose}) && ! *$self->{StdIO}) { - local $.; + local $.; $! = 0 ; $status = *$self->{FH}->close(); return $self->saveErrorString(0, $!, $!) @@ -1449,8 +1449,8 @@ sub fileno { my $self = shift ; - return defined *$self->{FH} - ? fileno *$self->{FH} + return defined *$self->{FH} + ? fileno *$self->{FH} : undef ; } @@ -1458,8 +1458,8 @@ { 1; # my $self = shift ; -# return defined *$self->{FH} -# ? binmode *$self->{FH} +# return defined *$self->{FH} +# ? binmode *$self->{FH} # : 1 ; } @@ -1472,8 +1472,8 @@ sub autoflush { my $self = shift ; - return defined *$self->{FH} - ? *$self->{FH}->autoflush(@_) + return defined *$self->{FH} + ? *$self->{FH}->autoflush(@_) : undef ; } @@ -1485,33 +1485,35 @@ return $last; } - -*BINMODE = \&binmode; -*SEEK = \&seek; -*READ = \&read; -*sysread = \&read; -*TELL = \&tell; -*EOF = \&eof; - -*FILENO = \&fileno; -*CLOSE = \&close; - sub _notAvailable { my $name = shift ; return sub { croak "$name Not Available: File opened only for intput" ; } ; } +{ + no warnings 'once'; -*print = _notAvailable('print'); -*PRINT = _notAvailable('print'); -*printf = _notAvailable('printf'); -*PRINTF = _notAvailable('printf'); -*write = _notAvailable('write'); -*WRITE = _notAvailable('write'); + *BINMODE = \&binmode; + *SEEK = \&seek; + *READ = \&read; + *sysread = \&read; + *TELL = \&tell; + *EOF = \&eof; + + *FILENO = \&fileno; + *CLOSE = \&close; + + *print = _notAvailable('print'); + *PRINT = _notAvailable('print'); + *printf = _notAvailable('printf'); + *PRINTF = _notAvailable('printf'); + *write = _notAvailable('write'); + *WRITE = _notAvailable('write'); -#*sysread = \&read; -#*syswrite = \&_notAvailable; + #*sysread = \&read; + #*syswrite = \&_notAvailable; +} @@ -1536,7 +1538,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -1560,8 +1562,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright (c) 2005-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/Bunzip2.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/Bunzip2.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/Bunzip2.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/Bunzip2.pm 2021-05-04 06:52:48.000000000 +0000 @@ -4,15 +4,15 @@ use warnings; use bytes; -use IO::Compress::Base::Common 2.093 qw(:Status ); +use IO::Compress::Base::Common 2.101 qw(:Status ); -use IO::Uncompress::Base 2.093 ; -use IO::Uncompress::Adapter::Bunzip2 2.093 ; +use IO::Uncompress::Base 2.101 ; +use IO::Uncompress::Adapter::Bunzip2 2.101 ; require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $Bunzip2Error); -$VERSION = '2.093'; +$VERSION = '2.102'; $Bunzip2Error = ''; @ISA = qw(IO::Uncompress::Base Exporter); @@ -72,7 +72,7 @@ return $self->saveErrorString(undef, $errstr, $errno) if ! defined $obj; - + *$self->{Uncomp} = $obj; return 1; @@ -88,15 +88,15 @@ $self->smartReadExact(\$magic, 4); *$self->{HeaderPending} = $magic ; - - return $self->HeaderError("Header size is " . - 4 . " bytes") + + return $self->HeaderError("Header size is " . + 4 . " bytes") if length $magic != 4; return $self->HeaderError("Bad Magic.") if ! isBzip2Magic($magic) ; - - + + *$self->{Type} = 'bzip2'; return $magic; } @@ -117,7 +117,7 @@ 'TrailerLength' => 0, 'Header' => '$magic' }; - + } sub chkTrailer @@ -149,7 +149,7 @@ my $status = bunzip2 $input => $output [,OPTS] or die "bunzip2 failed: $Bunzip2Error\n"; - my $z = new IO::Uncompress::Bunzip2 $input [OPTS] + my $z = IO::Uncompress::Bunzip2->new( $input [OPTS] ) or die "bunzip2 failed: $Bunzip2Error\n"; $status = $z->read($buffer) @@ -440,7 +440,7 @@ use IO::Uncompress::Bunzip2 qw(bunzip2 $Bunzip2Error) ; use IO::File ; - my $input = new IO::File "new( " \$buffer @@ -475,7 +475,7 @@ The format of the constructor for IO::Uncompress::Bunzip2 is shown below - my $z = new IO::Uncompress::Bunzip2 $input [OPTS] + my $z = IO::Uncompress::Bunzip2->new( $input [OPTS] ) or die "IO::Uncompress::Bunzip2 failed: $Bunzip2Error\n"; Returns an C object on success and undef on failure. @@ -858,7 +858,7 @@ =head1 Importing -No symbolic constants are required by this IO::Uncompress::Bunzip2 at present. +No symbolic constants are required by IO::Uncompress::Bunzip2 at present. =over 5 @@ -879,7 +879,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -907,8 +907,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright (c) 2005-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/Gunzip.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/Gunzip.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/Gunzip.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/Gunzip.pm 2021-05-04 06:52:48.000000000 +0000 @@ -9,12 +9,12 @@ use warnings; use bytes; -use IO::Uncompress::RawInflate 2.093 ; +use IO::Uncompress::RawInflate 2.101 ; -use Compress::Raw::Zlib 2.093 () ; -use IO::Compress::Base::Common 2.093 qw(:Status ); -use IO::Compress::Gzip::Constants 2.093 ; -use IO::Compress::Zlib::Extra 2.093 ; +use Compress::Raw::Zlib 2.101 () ; +use IO::Compress::Base::Common 2.101 qw(:Status ); +use IO::Compress::Gzip::Constants 2.101 ; +use IO::Compress::Zlib::Extra 2.101 ; require Exporter ; @@ -28,7 +28,7 @@ $GunzipError = ''; -$VERSION = '2.093'; +$VERSION = '2.102'; sub new { @@ -70,9 +70,9 @@ *$self->{HeaderPending} = $magic ; - return $self->HeaderError("Minimum header size is " . - GZIP_MIN_HEADER_SIZE . " bytes") - if length $magic != GZIP_ID_SIZE ; + return $self->HeaderError("Minimum header size is " . + GZIP_MIN_HEADER_SIZE . " bytes") + if length $magic != GZIP_ID_SIZE ; return $self->HeaderError("Bad Magic") if ! isGzipMagic($magic) ; @@ -95,10 +95,10 @@ my $self = shift; my $trailer = shift; - # Check CRC & ISIZE + # Check CRC & ISIZE my ($CRC32, $ISIZE) = unpack("V V", $trailer) ; - *$self->{Info}{CRC32} = $CRC32; - *$self->{Info}{ISIZE} = $ISIZE; + *$self->{Info}{CRC32} = $CRC32; + *$self->{Info}{ISIZE} = $ISIZE; if (*$self->{Strict}) { return $self->TrailerError("CRC mismatch") @@ -130,9 +130,9 @@ *$self->{HeaderPending} = $magic ; - return $self->HeaderError("Minimum header size is " . - GZIP_MIN_HEADER_SIZE . " bytes") - if length $magic != GZIP_ID_SIZE ; + return $self->HeaderError("Minimum header size is " . + GZIP_MIN_HEADER_SIZE . " bytes") + if length $magic != GZIP_ID_SIZE ; return $self->HeaderError("Bad Magic") @@ -150,7 +150,7 @@ my ($buffer) = '' ; $self->smartReadExact(\$buffer, GZIP_MIN_HEADER_SIZE - GZIP_ID_SIZE) - or return $self->HeaderError("Minimum header size is " . + or return $self->HeaderError("Minimum header size is " . GZIP_MIN_HEADER_SIZE . " bytes") ; my $keep = $magic . $buffer ; @@ -159,22 +159,22 @@ # now split out the various parts my ($cm, $flag, $mtime, $xfl, $os) = unpack("C C V C C", $buffer) ; - $cm == GZIP_CM_DEFLATED + $cm == GZIP_CM_DEFLATED or return $self->HeaderError("Not Deflate (CM is $cm)") ; # check for use of reserved bits return $self->HeaderError("Use of Reserved Bits in FLG field.") - if $flag & GZIP_FLG_RESERVED ; + if $flag & GZIP_FLG_RESERVED ; my $EXTRA ; my @EXTRA = () ; if ($flag & GZIP_FLG_FEXTRA) { $EXTRA = "" ; - $self->smartReadExact(\$buffer, GZIP_FEXTRA_HEADER_SIZE) + $self->smartReadExact(\$buffer, GZIP_FEXTRA_HEADER_SIZE) or return $self->TruncatedHeader("FEXTRA Length") ; my ($XLEN) = unpack("v", $buffer) ; - $self->smartReadExact(\$EXTRA, $XLEN) + $self->smartReadExact(\$EXTRA, $XLEN) or return $self->TruncatedHeader("FEXTRA Body"); $keep .= $buffer . $EXTRA ; @@ -190,10 +190,10 @@ if ($flag & GZIP_FLG_FNAME) { $origname = "" ; while (1) { - $self->smartReadExact(\$buffer, 1) + $self->smartReadExact(\$buffer, 1) or return $self->TruncatedHeader("FNAME"); last if $buffer eq GZIP_NULL_BYTE ; - $origname .= $buffer + $origname .= $buffer } $keep .= $origname . GZIP_NULL_BYTE ; @@ -205,10 +205,10 @@ if ($flag & GZIP_FLG_FCOMMENT) { $comment = ""; while (1) { - $self->smartReadExact(\$buffer, 1) + $self->smartReadExact(\$buffer, 1) or return $self->TruncatedHeader("FCOMMENT"); last if $buffer eq GZIP_NULL_BYTE ; - $comment .= $buffer + $comment .= $buffer } $keep .= $comment . GZIP_NULL_BYTE ; @@ -217,7 +217,7 @@ } if ($flag & GZIP_FLG_FHCRC) { - $self->smartReadExact(\$buffer, GZIP_FHCRC_SIZE) + $self->smartReadExact(\$buffer, GZIP_FHCRC_SIZE) or return $self->TruncatedHeader("FHCRC"); $HeaderCRC = unpack("v", $buffer) ; @@ -254,7 +254,7 @@ 'Comment' => $comment, 'Time' => $mtime, 'OsID' => $os, - 'OsName' => defined $GZIP_OS_Names{$os} + 'OsName' => defined $GZIP_OS_Names{$os} ? $GZIP_OS_Names{$os} : "Unknown", 'HeaderCRC' => $HeaderCRC, 'Flags' => $flag, @@ -286,7 +286,7 @@ my $status = gunzip $input => $output [,OPTS] or die "gunzip failed: $GunzipError\n"; - my $z = new IO::Uncompress::Gunzip $input [OPTS] + my $z = IO::Uncompress::Gunzip->new( $input [OPTS] ) or die "gunzip failed: $GunzipError\n"; $status = $z->read($buffer) @@ -579,7 +579,7 @@ use IO::Uncompress::Gunzip qw(gunzip $GunzipError) ; use IO::File ; - my $input = new IO::File "new( " \$buffer @@ -614,7 +614,7 @@ The format of the constructor for IO::Uncompress::Gunzip is shown below - my $z = new IO::Uncompress::Gunzip $input [OPTS] + my $z = IO::Uncompress::Gunzip->new( $input [OPTS] ) or die "IO::Uncompress::Gunzip failed: $GunzipError\n"; Returns an C object on success and undef on failure. @@ -1064,7 +1064,7 @@ =head1 Importing -No symbolic constants are required by this IO::Uncompress::Gunzip at present. +No symbolic constants are required by IO::Uncompress::Gunzip at present. =over 5 @@ -1085,7 +1085,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -1122,8 +1122,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright (c) 2005-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/Inflate.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/Inflate.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/Inflate.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/Inflate.pm 2021-05-04 06:52:48.000000000 +0000 @@ -5,15 +5,15 @@ use warnings; use bytes; -use IO::Compress::Base::Common 2.093 qw(:Status ); -use IO::Compress::Zlib::Constants 2.093 ; +use IO::Compress::Base::Common 2.101 qw(:Status ); +use IO::Compress::Zlib::Constants 2.101 ; -use IO::Uncompress::RawInflate 2.093 ; +use IO::Uncompress::RawInflate 2.101 ; require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $InflateError); -$VERSION = '2.093'; +$VERSION = '2.102'; $InflateError = ''; @ISA = qw(IO::Uncompress::RawInflate Exporter); @@ -62,14 +62,14 @@ *$self->{HeaderPending} = $magic ; - return $self->HeaderError("Header size is " . - ZLIB_HEADER_SIZE . " bytes") + return $self->HeaderError("Header size is " . + ZLIB_HEADER_SIZE . " bytes") if length $magic != ZLIB_HEADER_SIZE; #return $self->HeaderError("CRC mismatch.") return undef if ! $self->isZlibMagic($magic) ; - + *$self->{Type} = 'rfc1950'; return $magic; } @@ -88,7 +88,7 @@ my $trailer = shift; my $ADLER32 = unpack("N", $trailer) ; - *$self->{Info}{ADLER32} = $ADLER32; + *$self->{Info}{ADLER32} = $ADLER32; return $self->TrailerError("CRC mismatch") if *$self->{Strict} && $ADLER32 != *$self->{Uncomp}->adler32() ; @@ -102,7 +102,7 @@ my $self = shift; my $buffer = shift ; - return 0 + return 0 if length $buffer < ZLIB_HEADER_SIZE ; my $hdr = unpack("n", $buffer) ; @@ -114,16 +114,16 @@ my $cm = bits($CMF, ZLIB_CMF_CM_OFFSET, ZLIB_CMF_CM_BITS) ; # Only Deflate supported - return $self->HeaderError("Not Deflate (CM is $cm)") + return $self->HeaderError("Not Deflate (CM is $cm)") if $cm != ZLIB_CMF_CM_DEFLATED ; # Max window value is 7 for Deflate. my $cinfo = bits($CMF, ZLIB_CMF_CINFO_OFFSET, ZLIB_CMF_CINFO_BITS) ; - return $self->HeaderError("CINFO > " . ZLIB_CMF_CINFO_MAX . - " (CINFO is $cinfo)") + return $self->HeaderError("CINFO > " . ZLIB_CMF_CINFO_MAX . + " (CINFO is $cinfo)") if $cinfo > ZLIB_CMF_CINFO_MAX ; - return 1; + return 1; } sub bits @@ -145,19 +145,19 @@ # # *$self->{HeaderPending} = $buffer ; # -# return $self->HeaderError("Header size is " . -# ZLIB_HEADER_SIZE . " bytes") +# return $self->HeaderError("Header size is " . +# ZLIB_HEADER_SIZE . " bytes") # if length $buffer != ZLIB_HEADER_SIZE; # # return $self->HeaderError("CRC mismatch.") # if ! isZlibMagic($buffer) ; # } - + my ($CMF, $FLG) = unpack "C C", $buffer; my $FDICT = bits($FLG, ZLIB_FLG_FDICT_OFFSET, ZLIB_FLG_FDICT_BITS ), my $cm = bits($CMF, ZLIB_CMF_CM_OFFSET, ZLIB_CMF_CM_BITS) ; - $cm == ZLIB_CMF_CM_DEFLATED + $cm == ZLIB_CMF_CM_DEFLATED or return $self->HeaderError("Not Deflate (CM is $cm)") ; my $DICTID; @@ -208,7 +208,7 @@ my $status = inflate $input => $output [,OPTS] or die "inflate failed: $InflateError\n"; - my $z = new IO::Uncompress::Inflate $input [OPTS] + my $z = IO::Uncompress::Inflate->new( $input [OPTS] ) or die "inflate failed: $InflateError\n"; $status = $z->read($buffer) @@ -501,7 +501,7 @@ use IO::Uncompress::Inflate qw(inflate $InflateError) ; use IO::File ; - my $input = new IO::File "new( " \$buffer @@ -536,7 +536,7 @@ The format of the constructor for IO::Uncompress::Inflate is shown below - my $z = new IO::Uncompress::Inflate $input [OPTS] + my $z = IO::Uncompress::Inflate->new( $input [OPTS] ) or die "IO::Uncompress::Inflate failed: $InflateError\n"; Returns an C object on success and undef on failure. @@ -936,7 +936,7 @@ =head1 Importing -No symbolic constants are required by this IO::Uncompress::Inflate at present. +No symbolic constants are required by IO::Uncompress::Inflate at present. =over 5 @@ -957,7 +957,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -994,8 +994,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright (c) 2005-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/RawInflate.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/RawInflate.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/RawInflate.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/RawInflate.pm 2021-05-04 06:52:48.000000000 +0000 @@ -5,16 +5,16 @@ use warnings; use bytes; -use Compress::Raw::Zlib 2.093 ; -use IO::Compress::Base::Common 2.093 qw(:Status ); +use Compress::Raw::Zlib 2.101 ; +use IO::Compress::Base::Common 2.101 qw(:Status ); -use IO::Uncompress::Base 2.093 ; -use IO::Uncompress::Adapter::Inflate 2.093 ; +use IO::Uncompress::Base 2.101 ; +use IO::Uncompress::Adapter::Inflate 2.101 ; require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $RawInflateError); -$VERSION = '2.093'; +$VERSION = '2.102'; $RawInflateError = ''; @ISA = qw(IO::Uncompress::Base Exporter); @@ -25,16 +25,16 @@ Exporter::export_ok_tags('all'); #{ -# # Execute at runtime +# # Execute at runtime # my %bad; # for my $module (qw(Compress::Raw::Zlib IO::Compress::Base::Common IO::Uncompress::Base IO::Uncompress::Adapter::Inflate)) # { # my $ver = ${ $module . "::VERSION"} ; -# +# # $bad{$module} = $ver # if $ver ne $VERSION; # } -# +# # if (keys %bad) # { # my $string = join "\n", map { "$_ $bad{$_}" } keys %bad; @@ -148,14 +148,14 @@ my $buffer = ''; - $self->smartRead(\$buffer, *$self->{BlockSize}) >= 0 + $self->smartRead(\$buffer, *$self->{BlockSize}) >= 0 or return $self->saveErrorString(undef, "No data to read"); my $temp_buf = $magic . $buffer ; - *$self->{HeaderPending} = $temp_buf ; + *$self->{HeaderPending} = $temp_buf ; $buffer = ''; my $status = *$self->{Uncomp}->uncompr(\$temp_buf, \$buffer, $self->smartEof()) ; - + return $self->saveErrorString(undef, *$self->{Uncomp}{Error}, STATUS_ERROR) if $status == STATUS_ERROR; @@ -163,12 +163,12 @@ return $self->saveErrorString(undef, "unexpected end of file", STATUS_ERROR) if $self->smartEof() && $status != STATUS_ENDSTREAM; - + #my $buf_len = *$self->{Uncomp}->uncompressedBytes(); my $buf_len = length $buffer; if ($status == STATUS_ENDSTREAM) { - if (*$self->{MultiStream} + if (*$self->{MultiStream} && (length $temp_buf || ! $self->smartEof())){ *$self->{NewStream} = 1 ; *$self->{EndStream} = 0 ; @@ -177,9 +177,9 @@ *$self->{EndStream} = 1 ; } } - *$self->{HeaderPending} = $buffer ; - *$self->{InflatedBytesRead} = $buf_len ; - *$self->{TotalInflatedBytesRead} += $buf_len ; + *$self->{HeaderPending} = $buffer ; + *$self->{InflatedBytesRead} = $buf_len ; + *$self->{TotalInflatedBytesRead} += $buf_len ; *$self->{Type} = 'rfc1951'; $self->saveStatus(STATUS_OK); @@ -229,7 +229,7 @@ return $self->saveErrorString(0, "unexpected end of file", STATUS_ERROR); } } - + $status = *$self->{Uncomp}->sync($temp_buf) ; if ($status == STATUS_OK) @@ -251,23 +251,23 @@ # my $status ; # my $end_offset = 0; # -# $status = $self->scan() +# $status = $self->scan() # #or return $self->saveErrorString(undef, "Error Scanning: $$error_ref", $self->errorNo) ; # or return $self->saveErrorString(G_ERR, "Error Scanning: $status") # -# $status = $self->zap($end_offset) +# $status = $self->zap($end_offset) # or return $self->saveErrorString(G_ERR, "Error Zapping: $status"); # #or return $self->saveErrorString(undef, "Error Zapping: $$error_ref", $self->errorNo) ; # # #(*$obj->{Deflate}, $status) = $inf->createDeflate(); # ## *$obj->{Header} = *$inf->{Info}{Header}; -## *$obj->{UnCompSize_32bit} = +## *$obj->{UnCompSize_32bit} = ## *$obj->{BytesWritten} = *$inf->{UnCompSize_32bit} ; ## *$obj->{CompSize_32bit} = *$inf->{CompSize_32bit} ; # # -## if ( $outType eq 'buffer') +## if ( $outType eq 'buffer') ## { substr( ${ *$self->{Buffer} }, $end_offset) = '' } ## elsif ($outType eq 'handle' || $outType eq 'filename') { ## *$self->{FH} = *$inf->{FH} ; @@ -275,11 +275,11 @@ ## *$obj->{FH}->flush() ; ## *$obj->{Handle} = 1 if $outType eq 'handle'; ## -## #seek(*$obj->{FH}, $end_offset, SEEK_SET) -## *$obj->{FH}->seek($end_offset, SEEK_SET) +## #seek(*$obj->{FH}, $end_offset, SEEK_SET) +## *$obj->{FH}->seek($end_offset, SEEK_SET) ## or return $obj->saveErrorString(undef, $!, $!) ; ## } -# +# #} sub scan @@ -292,7 +292,7 @@ my $buffer = '' ; my $len = 0; - $len = $self->_raw_read(\$buffer, 1) + $len = $self->_raw_read(\$buffer, 1) while ! *$self->{EndStream} && $len >= 0 ; #return $len if $len < 0 ? $len : 0 ; @@ -310,16 +310,16 @@ #printf "# block_offset $block_offset %x\n", $block_offset; my $byte ; ( $self->smartSeek($block_offset) && - $self->smartRead(\$byte, 1) ) - or return $self->saveErrorString(0, $!, $!); + $self->smartRead(\$byte, 1) ) + or return $self->saveErrorString(0, $!, $!); #printf "#byte is %x\n", unpack('C*',$byte); *$self->{Uncomp}->resetLastBlockByte($byte); #printf "#to byte is %x\n", unpack('C*',$byte); - ( $self->smartSeek($block_offset) && + ( $self->smartSeek($block_offset) && $self->smartWrite($byte) ) - or return $self->saveErrorString(0, $!, $!); + or return $self->saveErrorString(0, $!, $!); #$self->smartSeek($end_offset, 1); @@ -335,12 +335,12 @@ -CRC32 => *$self->{Params}->getValue('crc32'), -ADLER32 => *$self->{Params}->getValue('adler32'), ); - - return wantarray ? ($status, $def) : $def ; + + return wantarray ? ($status, $def) : $def ; } -1; +1; __END__ @@ -356,7 +356,7 @@ my $status = rawinflate $input => $output [,OPTS] or die "rawinflate failed: $RawInflateError\n"; - my $z = new IO::Uncompress::RawInflate $input [OPTS] + my $z = IO::Uncompress::RawInflate->new( $input [OPTS] ) or die "rawinflate failed: $RawInflateError\n"; $status = $z->read($buffer) @@ -646,7 +646,7 @@ use IO::Uncompress::RawInflate qw(rawinflate $RawInflateError) ; use IO::File ; - my $input = new IO::File "new( " \$buffer @@ -681,7 +681,7 @@ The format of the constructor for IO::Uncompress::RawInflate is shown below - my $z = new IO::Uncompress::RawInflate $input [OPTS] + my $z = IO::Uncompress::RawInflate->new( $input [OPTS] ) or die "IO::Uncompress::RawInflate failed: $RawInflateError\n"; Returns an C object on success and undef on failure. @@ -1064,7 +1064,7 @@ =head1 Importing -No symbolic constants are required by this IO::Uncompress::RawInflate at present. +No symbolic constants are required by IO::Uncompress::RawInflate at present. =over 5 @@ -1085,7 +1085,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -1122,8 +1122,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright (c) 2005-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - diff -Nru perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/Unzip.pm perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/Unzip.pm --- perl-5.32.1/cpan/IO-Compress/lib/IO/Uncompress/Unzip.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/lib/IO/Uncompress/Unzip.pm 2021-05-04 06:52:48.000000000 +0000 @@ -9,24 +9,28 @@ use bytes; use IO::File; -use IO::Uncompress::RawInflate 2.093 ; -use IO::Compress::Base::Common 2.093 qw(:Status ); -use IO::Uncompress::Adapter::Inflate 2.093 ; -use IO::Uncompress::Adapter::Identity 2.093 ; -use IO::Compress::Zlib::Extra 2.093 ; -use IO::Compress::Zip::Constants 2.093 ; +use IO::Uncompress::RawInflate 2.101 ; +use IO::Compress::Base::Common 2.101 qw(:Status ); +use IO::Uncompress::Adapter::Inflate 2.101 ; +use IO::Uncompress::Adapter::Identity 2.101 ; +use IO::Compress::Zlib::Extra 2.101 ; +use IO::Compress::Zip::Constants 2.101 ; -use Compress::Raw::Zlib 2.093 () ; +use Compress::Raw::Zlib 2.101 () ; BEGIN { # Don't trigger any __DIE__ Hooks. local $SIG{__DIE__}; - + eval{ require IO::Uncompress::Adapter::Bunzip2 ; - import IO::Uncompress::Adapter::Bunzip2 } ; + IO::Uncompress::Adapter::Bunzip2->import() } ; eval{ require IO::Uncompress::Adapter::UnLzma ; - import IO::Uncompress::Adapter::UnLzma } ; + IO::Uncompress::Adapter::UnLzma->import() } ; + eval{ require IO::Uncompress::Adapter::UnXz ; + IO::Uncompress::Adapter::UnXz->import() } ; + eval{ require IO::Uncompress::Adapter::UnZstd ; + IO::Uncompress::Adapter::UnZstd->import() } ; } @@ -34,7 +38,7 @@ our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $UnzipError, %headerLookup); -$VERSION = '2.093'; +$VERSION = '2.102'; $UnzipError = ''; @ISA = qw(IO::Uncompress::RawInflate Exporter); @@ -52,6 +56,15 @@ ZIP64_DIGITAL_SIGNATURE_SIG, \&skipDigitalSignature, ); +my %MethodNames = ( + ZIP_CM_DEFLATE() => 'Deflated', + ZIP_CM_BZIP2() => 'Bzip2', + ZIP_CM_LZMA() => 'Lzma', + ZIP_CM_STORE() => 'Stored', + ZIP_CM_XZ() => 'Xz', + ZIP_CM_ZSTD() => 'Zstd', + ); + sub new { my $class = shift ; @@ -67,18 +80,18 @@ sub getExtraParams { - + return ( # # Zip header fields 'name' => [IO::Compress::Base::Common::Parse_any, undef], 'stream' => [IO::Compress::Base::Common::Parse_boolean, 0], 'efs' => [IO::Compress::Base::Common::Parse_boolean, 0], - + # TODO - This means reading the central directory to get # 1. the local header offsets # 2. The compressed data length - ); + ); } sub ckParams @@ -119,9 +132,9 @@ *$self->{HeaderPending} = $magic ; - return $self->HeaderError("Minimum header size is " . - 4 . " bytes") - if length $magic != 4 ; + return $self->HeaderError("Minimum header size is " . + 4 . " bytes") + if length $magic != 4 ; return $self->HeaderError("Bad Magic") if ! _isZipMagic($magic) ; @@ -189,9 +202,9 @@ $status = *$self->{Uncomp}->uncompr(\$b, \$temp_buf, 0, $out); - return $self->saveErrorString(undef, *$self->{Uncomp}{Error}, + return $self->saveErrorString(undef, *$self->{Uncomp}{Error}, *$self->{Uncomp}{ErrorNo}) - if $self->saveStatus($status) == STATUS_ERROR; + if $self->saveStatus($status) == STATUS_ERROR; $self->pushBack($b) ; @@ -248,7 +261,7 @@ if $sig != ZIP_DATA_HDR_SIG; } else { - ($CRC32, $cSize, $uSize) = + ($CRC32, $cSize, $uSize) = (*$self->{ZipData}{Crc32}, *$self->{ZipData}{CompressedLen}, *$self->{ZipData}{UnCompressedLen}); @@ -334,7 +347,7 @@ my $buffer; $self->smartReadExact(\$buffer, 46 - 4) - or return $self->TrailerError("Minimum header size is " . + or return $self->TrailerError("Minimum header size is " . 46 . " bytes") ; my $keep = $magic . $buffer ; @@ -348,7 +361,7 @@ #my $crc32 = unpack ("V", substr($buffer, 16-4, 4)); my $compressedLength = unpack ("V", substr($buffer, 20-4, 4)); my $uncompressedLength = unpack ("V", substr($buffer, 24-4, 4)); - my $filename_length = unpack ("v", substr($buffer, 28-4, 2)); + my $filename_length = unpack ("v", substr($buffer, 28-4, 2)); my $extra_length = unpack ("v", substr($buffer, 30-4, 2)); my $comment_length = unpack ("v", substr($buffer, 32-4, 2)); #my $disk_start = unpack ("v", substr($buffer, 34-4, 2)); @@ -356,7 +369,7 @@ #my $ext_file_attrib = unpack ("V", substr($buffer, 38-4, 2)); #my $lcl_hdr_offset = unpack ("V", substr($buffer, 42-4, 2)); - + my $filename; my $extraField; my $comment ; @@ -391,7 +404,7 @@ my $buffer; $self->smartReadExact(\$buffer, 4) - or return $self->TrailerError("Minimum header size is " . + or return $self->TrailerError("Minimum header size is " . 4 . " bytes") ; my $keep = $magic . $buffer ; @@ -399,7 +412,7 @@ my $size = unpack ("V", $buffer); $self->smartReadExact(\$buffer, $size) - or return $self->TrailerError("Minimum header size is " . + or return $self->TrailerError("Minimum header size is " . $size . " bytes") ; $keep .= $buffer ; @@ -416,7 +429,7 @@ my $buffer; $self->smartReadExact(\$buffer, 8) - or return $self->TrailerError("Minimum header size is " . + or return $self->TrailerError("Minimum header size is " . 8 . " bytes") ; my $keep = $magic . $buffer ; @@ -425,7 +438,7 @@ my $size = $sizeHi * U64::MAX32 + $sizeLo; $self->fastForward($size) - or return $self->TrailerError("Minimum header size is " . + or return $self->TrailerError("Minimum header size is " . $size . " bytes") ; #$keep .= $buffer ; @@ -450,7 +463,7 @@ my $buffer; $self->smartReadExact(\$buffer, 20 - 4) - or return $self->TrailerError("Minimum header size is " . + or return $self->TrailerError("Minimum header size is " . 20 . " bytes") ; my $keep = $magic . $buffer ; @@ -471,7 +484,7 @@ my $buffer; $self->smartReadExact(\$buffer, 22 - 4) - or return $self->TrailerError("Minimum header size is " . + or return $self->TrailerError("Minimum header size is " . 22 . " bytes") ; my $keep = $magic . $buffer ; @@ -485,7 +498,7 @@ #my $offsetToCD = unpack ("V", substr($buffer, 16-4, 4)); my $comment_length = unpack ("v", substr($buffer, 20-4, 2)); - + my $comment ; if ($comment_length) { @@ -516,9 +529,9 @@ *$self->{HeaderPending} = $magic ; - return $self->HeaderError("Minimum header size is " . - 30 . " bytes") - if length $magic != 4 ; + return $self->HeaderError("Minimum header size is " . + 30 . " bytes") + if length $magic != 4 ; return $self->HeaderError("Bad Magic") @@ -536,7 +549,7 @@ my ($buffer) = '' ; $self->smartReadExact(\$buffer, 30 - 4) - or return $self->HeaderError("Minimum header size is " . + or return $self->HeaderError("Minimum header size is " . 30 . " bytes") ; my $keep = $magic . $buffer ; @@ -549,13 +562,19 @@ my $crc32 = unpack ("V", substr($buffer, 14-4, 4)); my $compressedLength = U64::newUnpack_V32 substr($buffer, 18-4, 4); my $uncompressedLength = U64::newUnpack_V32 substr($buffer, 22-4, 4); - my $filename_length = unpack ("v", substr($buffer, 26-4, 2)); + my $filename_length = unpack ("v", substr($buffer, 26-4, 2)); my $extra_length = unpack ("v", substr($buffer, 28-4, 2)); my $filename; my $extraField; my @EXTRA = (); - my $streamingMode = ($gpFlag & ZIP_GP_FLAG_STREAMING_MASK) ? 1 : 0 ; + + # Some programs (some versions of LibreOffice) mark entries as streamed, but still fill out + # compressedLength/uncompressedLength & crc32 in the local file header. + # The expected data descriptor is not populated. + # So only assume streaming if the Streaming bit is set AND the compressed length is zero + my $streamingMode = (($gpFlag & ZIP_GP_FLAG_STREAMING_MASK) && $crc32 == 0) ? 1 : 0 ; + my $efs_flag = ($gpFlag & ZIP_GP_FLAG_LANGUAGE_ENCODING) ? 1 : 0; return $self->HeaderError("Encrypted content not supported") @@ -577,7 +596,7 @@ require Encode; eval { $filename = Encode::decode_utf8($filename, 1) } or Carp::croak "Zip Filename not UTF-8" ; - } + } $keep .= $filename ; } @@ -601,7 +620,7 @@ { $Extra{$_->[0]} = \$_->[1]; } - + if (defined $Extra{ZIP_EXTRA_ID_ZIP64()}) { $zip64 = 1 ; @@ -616,7 +635,7 @@ my $offset = 0 ; if (U64::full32 $uncompressedLength->get32bit() ) { - $uncompressedLength + $uncompressedLength = U64::newUnpack_V64 substr($buff, 0, 8); $offset += 8 ; @@ -624,7 +643,7 @@ if (U64::full32 $compressedLength->get32bit() ) { - $compressedLength + $compressedLength = U64::newUnpack_V64 substr($buff, $offset, 8); $offset += 8 ; @@ -657,18 +676,40 @@ { return $self->HeaderError("Unsupported Compression format $compressedMethod") if ! defined $IO::Uncompress::Adapter::Bunzip2::VERSION ; - + *$self->{Type} = 'zip-bzip2'; - + my $obj = IO::Uncompress::Adapter::Bunzip2::mkUncompObject(); *$self->{Uncomp} = $obj; } + elsif ($compressedMethod == ZIP_CM_XZ) + { + return $self->HeaderError("Unsupported Compression format $compressedMethod") + if ! defined $IO::Uncompress::Adapter::UnXz::VERSION ; + + *$self->{Type} = 'zip-xz'; + + my $obj = IO::Uncompress::Adapter::UnXz::mkUncompObject(); + + *$self->{Uncomp} = $obj; + } + elsif ($compressedMethod == ZIP_CM_ZSTD) + { + return $self->HeaderError("Unsupported Compression format $compressedMethod") + if ! defined $IO::Uncompress::Adapter::UnZstd::VERSION ; + + *$self->{Type} = 'zip-zstd'; + + my $obj = IO::Uncompress::Adapter::UnZstd::mkUncompObject(); + + *$self->{Uncomp} = $obj; + } elsif ($compressedMethod == ZIP_CM_LZMA) { return $self->HeaderError("Unsupported Compression format $compressedMethod") if ! defined $IO::Uncompress::Adapter::UnLzma::VERSION ; - + *$self->{Type} = 'zip-lzma'; my $LzmaHeader; $self->smartReadExact(\$LzmaHeader, 4) @@ -695,7 +736,7 @@ elsif ($compressedMethod == ZIP_CM_STORE) { *$self->{Type} = 'zip-stored'; - + my $obj = IO::Uncompress::Adapter::Identity::mkUncompObject($streamingMode, $zip64); @@ -724,15 +765,7 @@ 'Stream' => $streamingMode, 'MethodID' => $compressedMethod, - 'MethodName' => $compressedMethod == ZIP_CM_DEFLATE - ? "Deflated" - : $compressedMethod == ZIP_CM_BZIP2 - ? "Bzip2" - : $compressedMethod == ZIP_CM_LZMA - ? "Lzma" - : $compressedMethod == ZIP_CM_STORE - ? "Stored" - : "Unknown" , + 'MethodName' => $MethodNames{$compressedMethod} || 'Unknown', # 'TextFlag' => $flag & GZIP_FLG_FTEXT ? 1 : 0, # 'HeaderCRCFlag' => $flag & GZIP_FLG_FHCRC ? 1 : 0, @@ -741,7 +774,7 @@ # 'ExtraFlag' => $flag & GZIP_FLG_FEXTRA ? 1 : 0, # 'Comment' => $comment, # 'OsID' => $os, -# 'OsName' => defined $GZIP_OS_Names{$os} +# 'OsName' => defined $GZIP_OS_Names{$os} # ? $GZIP_OS_Names{$os} : "Unknown", # 'HeaderCRC' => $HeaderCRC, # 'Flags' => $flag, @@ -763,7 +796,7 @@ else { *$self->{ZipData}{CRC32} = Compress::Raw::Zlib::crc32(${$_[0]}, *$self->{ZipData}{CRC32}, $_[1]); } -} +} # from Archive::Zip & info-zip @@ -805,7 +838,7 @@ # # # Now walk the Central Directory Records # my $buffer ; -# while ($self->smartReadExact(\$buffer, 46) && +# while ($self->smartReadExact(\$buffer, 46) && # unpack("V", $buffer) == ZIP_CENTRAL_HDR_SIG) { # # my $compressedLength = unpack ("V", substr($buffer, 20, 4)); @@ -813,7 +846,7 @@ # my $extra_length = unpack ("v", substr($buffer, 30, 2)); # my $comment_length = unpack ("v", substr($buffer, 32, 2)); # -# $self->smarkSeek($filename_length + $extra_length + $comment_length, 0, SEEK_CUR) +# $self->smarkSeek($filename_length + $extra_length + $comment_length, 0, SEEK_CUR) # if $extra_length || $comment_length || $filename_length; # push @CD, $compressedLength ; # } @@ -833,7 +866,7 @@ # my $buffer; # $self->smartReadExact(\$buffer, 22) ; # -# my $zip64 = 0; +# my $zip64 = 0; # my $centralDirOffset ; # if ( unpack("V", $buffer) == ZIP_END_CENTRAL_HDR_SIG ) { # $centralDirOffset = unpack ("V", substr($buffer, 16, 2)); @@ -864,7 +897,7 @@ else { $self->smartSeek($size, SEEK_CUR); } - + } @@ -888,7 +921,7 @@ # Now walk the Central Directory Records my $buffer ; - while ($self->smartReadExact(\$buffer, 46) && + while ($self->smartReadExact(\$buffer, 46) && unpack("V", $buffer) == ZIP_CENTRAL_HDR_SIG) { my $compressedLength = unpack("V", substr($buffer, 20, 4)); @@ -899,11 +932,11 @@ $self->skip($filename_length ) ; - my $v64 = new U64 $compressedLength ; + my $v64 = U64->new( $compressedLength ); if (U64::full32 $compressedLength ) { $self->smartReadExact(\$buffer, $extra_length) ; - die "xxx $offset $comment_length $filename_length $extra_length" . length($buffer) + die "xxx $offset $comment_length $filename_length $extra_length" . length($buffer) if length($buffer) != $extra_length; my $got = $self->get64Extra($buffer, U64::full32 $uncompressedLength); @@ -915,7 +948,7 @@ } $self->skip($comment_length ) ; - + push @CD, $v64 ; } @@ -932,7 +965,7 @@ my $is_uncomp = shift ; my $extra = IO::Compress::Zlib::Extra::findID(0x0001, $buffer); - + if (! defined $extra) { return undef; @@ -941,7 +974,7 @@ { my $u64 = U64::newUnpack_V64(substr($extra, $is_uncomp ? 8 : 0)) ; return $u64; - } + } } sub offsetFromZip64 @@ -949,20 +982,20 @@ my $self = shift ; my $here = shift; - $self->smartSeek($here - 20, 0, SEEK_SET) + $self->smartSeek($here - 20, 0, SEEK_SET) or die "xx $!" ; my $buffer; my $got = 0; - $self->smartReadExact(\$buffer, 20) + $self->smartReadExact(\$buffer, 20) or die "xxx $here $got $!" ; if ( unpack("V", $buffer) == ZIP64_END_CENTRAL_LOC_HDR_SIG ) { my $cd64 = U64::Value_VV64 substr($buffer, 8, 8); - + $self->smartSeek($cd64, 0, SEEK_SET) ; - $self->smartReadExact(\$buffer, 4) + $self->smartReadExact(\$buffer, 4) or die "xxx" ; if ( unpack("V", $buffer) == ZIP64_END_CENTRAL_REC_HDR_SIG ) { @@ -977,7 +1010,7 @@ return $cd64 ; } - + die "zzz"; } @@ -998,10 +1031,10 @@ my $here = $self->tell(); my $buffer; - $self->smartReadExact(\$buffer, 22) + $self->smartReadExact(\$buffer, 22) or die "xxx" ; - my $zip64 = 0; + my $zip64 = 0; my $centralDirOffset ; if ( unpack("V", $buffer) == ZIP_END_CENTRAL_HDR_SIG ) { $centralDirOffset = unpack("V", substr($buffer, 16, 4)); @@ -1019,7 +1052,7 @@ $seekTo = 0; $want = $fileLen ; } - $self->smartSeek( $seekTo, 0, SEEK_SET) + $self->smartSeek( $seekTo, 0, SEEK_SET) or die "xxx $!" ; my $got; $self->smartReadExact($buffer, $want) @@ -1060,7 +1093,7 @@ my $status = unzip $input => $output [,OPTS] or die "unzip failed: $UnzipError\n"; - my $z = new IO::Uncompress::Unzip $input [OPTS] + my $z = IO::Uncompress::Unzip->new( $input [OPTS] ) or die "unzip failed: $UnzipError\n"; $status = $z->read($buffer) @@ -1105,6 +1138,39 @@ For writing zip files/buffers, see the companion module IO::Compress::Zip. +The primary purpose of this module is to provide I read access to +zip files and buffers. + +At present the following compression methods are supported by IO::Uncompress::Unzip + +=over 5 + +=item Store (0) + +=item Deflate (8) + +=item Bzip2 (12) + +To read Bzip2 content, the module C must +be installed. + +=item Lzma (14) + +To read LZMA content, the module C must +be installed. + +=item Xz (95) + +To read Xz content, the module C must +be installed. + +=item Zstandard (93) + +To read Zstandard content, the module C must +be installed. + +=back + =head1 Functional Interface A top-level function, C, is provided to carry out @@ -1379,7 +1445,7 @@ use IO::Uncompress::Unzip qw(unzip $UnzipError) ; use IO::File ; - my $input = new IO::File "new( " \$buffer @@ -1391,7 +1457,7 @@ The format of the constructor for IO::Uncompress::Unzip is shown below - my $z = new IO::Uncompress::Unzip $input [OPTS] + my $z = IO::Uncompress::Unzip->new( $input [OPTS] ) or die "IO::Uncompress::Unzip failed: $UnzipError\n"; Returns an C object on success and undef on failure. @@ -1449,7 +1515,7 @@ =item C<< Efs => 0| 1 >> -When this option is set to true AND the zip archive being read has +When this option is set to true AND the zip archive being read has the "Language Encoding Flag" (EFS) set, the member name is assumed to be encoded in UTF-8. If the member name in the zip archive is not valid UTF-8 when this optionn is true, @@ -1797,7 +1863,7 @@ =head1 Importing -No symbolic constants are required by this IO::Uncompress::Unzip at present. +No symbolic constants are required by IO::Uncompress::Unzip at present. =over 5 @@ -1824,13 +1890,13 @@ use IO::Uncompress::Unzip qw($UnzipError); my $zipfile = "somefile.zip"; - my $u = new IO::Uncompress::Unzip $zipfile + my $u = IO::Uncompress::Unzip->new( $zipfile ) or die "Cannot open $zipfile: $UnzipError"; my $status; for ($status = 1; $status > 0; $status = $u->nextStream()) { - + my $name = $u->getHeaderInfo()->{Name}; warn "Processing member $name\n" ; @@ -1862,7 +1928,7 @@ =head1 SUPPORT -General feedback/questions/bug reports should be sent to +General feedback/questions/bug reports should be sent to L (preferred) or L. @@ -1899,8 +1965,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright (c) 2005-2021 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - diff -Nru perl-5.32.1/cpan/IO-Compress/Makefile.PL perl-5.34.0/cpan/IO-Compress/Makefile.PL --- perl-5.32.1/cpan/IO-Compress/Makefile.PL 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/Makefile.PL 2021-05-04 06:52:48.000000000 +0000 @@ -3,7 +3,8 @@ use strict ; require 5.006 ; -$::VERSION = '2.093' ; +$::VERSION = '2.102' ; +$::DEP_VERSION = '2.101'; use lib '.'; use private::MakeUtil; @@ -12,10 +13,10 @@ UpDowngrade(getPerlFiles('MANIFEST')) unless $ENV{PERL_CORE}; -WriteMakefile( +WriteMakefile( NAME => 'IO::Compress', VERSION_FROM => 'lib/IO/Compress/Base.pm', - 'dist' => { COMPRESS => 'gzip', + 'dist' => { COMPRESS => 'gzip', TARFLAGS => '-chvf', SUFFIX => 'gz', DIST_DEFAULT => 'MyTrebleCheck tardist', @@ -24,15 +25,16 @@ ( $ENV{SKIP_FOR_CORE} ? () - : (PREREQ_PM => { 'Compress::Raw::Bzip2' => $::VERSION, - 'Compress::Raw::Zlib' => $::VERSION, + : (PREREQ_PM => { 'Compress::Raw::Bzip2' => $::DEP_VERSION, + 'Compress::Raw::Zlib' => $::DEP_VERSION, 'Scalar::Util' => 0, - $] >= 5.005 && $] < 5.006 - ? ('File::BSDGlob' => 0) + 'Encode' => 0, + $] >= 5.005 && $] < 5.006 + ? ('File::BSDGlob' => 0) : () } ) ), - + ( $] >= 5.005 ? (ABSTRACT => 'IO Interface to compressed data files/buffers', @@ -43,16 +45,16 @@ INSTALLDIRS => ($] >= 5.009 && $] < 5.011 ? 'perl' : 'site'), EXE_FILES => ['bin/zipdetails', 'bin/streamzip'], - + ( $] >= 5.009 && $] <= 5.011001 && ! $ENV{PERL_CORE} ? (INSTALLPRIVLIB => '$(INSTALLARCHLIB)') : () ), - ( eval { ExtUtils::MakeMaker->VERSION(6.46) } + ( eval { ExtUtils::MakeMaker->VERSION(6.46) } ? ( META_MERGE => { - + "meta-spec" => { version => 2 }, no_index => { @@ -60,7 +62,7 @@ }, resources => { - + bugtracker => { web => 'https://github.com/pmqs/IO-Compress/issues' }, @@ -71,17 +73,16 @@ type => 'git', url => 'git://github.com/pmqs/IO-Compress.git', web => 'https://github.com/pmqs/IO-Compress', - }, + }, }, - } - ) + } + ) : () ), ((ExtUtils::MakeMaker->VERSION() gt '6.30') ? - ('LICENSE' => 'perl') : ()), + ('LICENSE' => 'perl') : ()), ) ; # end of file Makefile.PL - diff -Nru perl-5.32.1/cpan/IO-Compress/private/MakeUtil.pm perl-5.34.0/cpan/IO-Compress/private/MakeUtil.pm --- perl-5.32.1/cpan/IO-Compress/private/MakeUtil.pm 2020-12-18 09:57:57.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/private/MakeUtil.pm 2021-01-20 23:04:44.000000000 +0000 @@ -42,14 +42,14 @@ return $path; } -sub MY::postamble +sub MY::postamble { return '' if $ENV{PERL_CORE} ; my @files = getPerlFiles('MANIFEST'); - # Note: Once you remove all the layers of shell/makefile escaping + # Note: Once you remove all the layers of shell/makefile escaping # the regular expression below reads # # /^\s*local\s*\(\s*\$^W\s*\)/ @@ -215,7 +215,7 @@ foreach (@files) { #if (-l $_ ) { doUpDown($our_sub, $warn_sub, $_) } - #else + #else #{ doUpDownViaCopy($our_sub, $warn_sub, $_) } } @@ -234,7 +234,7 @@ local ($^I) = ($^O eq 'VMS') ? "_bak" : ".bak"; local (@ARGV) = shift; - + while (<>) { print, last if /^__(END|DATA)__/ ; @@ -277,7 +277,7 @@ push @keep, $_; last ; } - + &{ $our_sub }() if $our_sub ; &{ $warn_sub }() if $warn_sub ; push @keep, $_; @@ -334,7 +334,7 @@ Compress::Zlib ); - + my @broken = (); foreach my $module ( grep { ! $thisModule{$_} } @modules) @@ -342,12 +342,12 @@ my $hasVersion = getInstalledVersion($module); # No need to upgrade if the module isn't installed at all - next + next if ! defined $hasVersion; # If already have C::Z version 1, then an upgrade to any of the # IO::Compress modules will not break it. - next + next if $module eq 'Compress::Zlib' && $hasVersion < 2; if ($hasVersion < $version) @@ -370,14 +370,12 @@ { no strict 'refs'; $version = ${ $module . "::VERSION" }; - $version = 0 + $version = 0 } - + return $version; } package MakeUtil ; 1; - - diff -Nru perl-5.32.1/cpan/IO-Compress/t/000prereq.t perl-5.34.0/cpan/IO-Compress/t/000prereq.t --- perl-5.32.1/cpan/IO-Compress/t/000prereq.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/000prereq.t 2021-05-04 06:52:48.000000000 +0000 @@ -25,7 +25,7 @@ if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 }; - my $VERSION = '2.093'; + my $VERSION = '2.101'; my @NAMES = qw( Compress::Raw::Bzip2 Compress::Raw::Zlib @@ -60,7 +60,7 @@ ); - my @OPT = qw( + my @OPT = qw( ); plan tests => 1 + 2 + @NAMES + @OPT + $extra ; @@ -76,21 +76,21 @@ eval " require $name " ; if ($@) { - ok 1, "$name not available" + ok 1, "$name not available" } - else + else { my $ver = eval("\$${name}::VERSION"); - is $ver, $VERSION, "$name version should be $VERSION" + is $ver, $VERSION, "$name version should be $VERSION" or diag "$name version is $ver, need $VERSION" ; - } + } } # need zlib 1.2.0 or better - + cmp_ok Compress::Raw::Zlib::ZLIB_VERNUM(), ">=", 0x1200 - or diag "IO::Compress needs zlib 1.2.0 or better, you have " . Compress::Raw::Zlib::zlib_version(); - + or diag "IO::Compress needs zlib 1.2.0 or better, you have " . Compress::Raw::Zlib::zlib_version(); + use_ok('Scalar::Util') ; } @@ -99,4 +99,3 @@ or diag <can('new')->( $UncompressClass, $filename, -Strict => 1, -Append => 1 - ; + ); my $data = ''; $data = $init if defined $init ; @@ -66,7 +66,7 @@ title "BlockSize100K => $stringValue"; my $err = "Parameter 'BlockSize100K' must be an unsigned int, got '$stringValue'"; my $bz ; - eval { $bz = new IO::Compress::Bzip2(\$buffer, BlockSize100K => $value) }; + eval { $bz = IO::Compress::Bzip2->new(\$buffer, BlockSize100K => $value) }; like $@, mkErr("IO::Compress::Bzip2: $err"), " value $stringValue is bad"; is $Bzip2Error, "IO::Compress::Bzip2: $err", @@ -80,7 +80,7 @@ title "BlockSize100K => $stringValue"; my $err = "Parameter 'BlockSize100K' not between 1 and 9, got $stringValue"; my $bz ; - eval { $bz = new IO::Compress::Bzip2(\$buffer, BlockSize100K => $value) }; + eval { $bz = IO::Compress::Bzip2->new(\$buffer, BlockSize100K => $value) }; like $@, mkErr("IO::Compress::Bzip2: $err"), " value $stringValue is bad"; is $Bzip2Error, "IO::Compress::Bzip2: $err", @@ -94,7 +94,7 @@ title "WorkFactor => $stringValue"; my $err = "Parameter 'WorkFactor' must be an unsigned int, got '$stringValue'"; my $bz ; - eval { $bz = new IO::Compress::Bzip2(\$buffer, WorkFactor => $value) }; + eval { $bz = IO::Compress::Bzip2->new(\$buffer, WorkFactor => $value) }; like $@, mkErr("IO::Compress::Bzip2: $err"), " value $stringValue is bad"; is $Bzip2Error, "IO::Compress::Bzip2: $err", @@ -108,7 +108,7 @@ title "WorkFactor => $stringValue"; my $err = "Parameter 'WorkFactor' not between 0 and 250, got $stringValue"; my $bz ; - eval { $bz = new IO::Compress::Bzip2(\$buffer, WorkFactor => $value) }; + eval { $bz = IO::Compress::Bzip2->new(\$buffer, WorkFactor => $value) }; like $@, mkErr("IO::Compress::Bzip2: $err"), " value $stringValue is bad"; is $Bzip2Error, "IO::Compress::Bzip2: $err", @@ -130,7 +130,7 @@ title "Small => $stringValue"; my $err = "Parameter 'Small' must be an int, got '$stringValue'"; my $bz ; - eval { $bz = new IO::Uncompress::Bunzip2(\$buffer, Small => $value) }; + eval { $bz = IO::Uncompress::Bunzip2->new(\$buffer, Small => $value) }; like $@, mkErr("IO::Uncompress::Bunzip2: $err"), " value $stringValue is bad"; is $Bunzip2Error, "IO::Uncompress::Bunzip2: $err", @@ -151,9 +151,9 @@ for my $value ( 1 .. 9 ) { title "$CompressClass - BlockSize100K => $value"; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $bz ; - $bz = new IO::Compress::Bzip2($name, BlockSize100K => $value) + $bz = IO::Compress::Bzip2->new($name, BlockSize100K => $value) or diag $IO::Compress::Bzip2::Bzip2Error ; ok $bz, " bz object ok"; $bz->write($hello); @@ -165,9 +165,9 @@ for my $value ( 0 .. 250 ) { title "$CompressClass - WorkFactor => $value"; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $bz ; - $bz = new IO::Compress::Bzip2($name, WorkFactor => $value); + $bz = IO::Compress::Bzip2->new($name, WorkFactor => $value); ok $bz, " bz object ok"; $bz->write($hello); $bz->close($hello); @@ -178,16 +178,16 @@ for my $value ( 0 .. 1 ) { title "$UncompressClass - Small => $value"; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $bz ; - $bz = new IO::Compress::Bzip2($name); + $bz = IO::Compress::Bzip2->new($name); ok $bz, " bz object ok"; $bz->write($hello); $bz->close($hello); - my $fil = new $UncompressClass $name, + my $fil = $UncompressClass->can('new')->( $UncompressClass, $name, Append => 1, - Small => $value ; + Small => $value ); my $data = ''; 1 while $fil->read($data) > 0; @@ -200,7 +200,3 @@ 1; - - - - diff -Nru perl-5.32.1/cpan/IO-Compress/t/002any-transparent.t perl-5.34.0/cpan/IO-Compress/t/002any-transparent.t --- perl-5.32.1/cpan/IO-Compress/t/002any-transparent.t 2020-12-18 09:57:57.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/002any-transparent.t 2021-01-20 23:04:44.000000000 +0000 @@ -6,7 +6,7 @@ } use lib qw(t t/compress); - + use strict; use warnings; use bytes; @@ -38,7 +38,7 @@ { title "AnyInflate with Non-compressed data (File $file)" ; - my $lex = new LexFile my $output; + my $lex = LexFile->new( my $output ); my $input ; if ($file) { @@ -52,12 +52,12 @@ my $unc ; my $keep = $buffer ; - $unc = new IO::Uncompress::AnyInflate $input, -Transparent => 0 ; + $unc = IO::Uncompress::AnyInflate->new( $input, -Transparent => 0 ); ok ! $unc," no AnyInflate object when -Transparent => 0" ; is $buffer, $keep ; $buffer = $keep ; - $unc = new IO::Uncompress::AnyInflate \$buffer, -Transparent => 1 ; + $unc = IO::Uncompress::AnyInflate->new( \$buffer, -Transparent => 1 ); ok $unc, " AnyInflate object when -Transparent => 1" ; my $uncomp ; diff -Nru perl-5.32.1/cpan/IO-Compress/t/004gziphdr.t perl-5.34.0/cpan/IO-Compress/t/004gziphdr.t --- perl-5.32.1/cpan/IO-Compress/t/004gziphdr.t 2020-12-18 09:57:57.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/004gziphdr.t 2021-01-20 23:04:44.000000000 +0000 @@ -37,7 +37,7 @@ my $ThisOS_code = $Compress::Raw::Zlib::gzip_os_code; -my $lex = new LexFile my $name ; +my $lex = LexFile->new( my $name ); { title "Check Defaults"; @@ -63,12 +63,12 @@ title "Check name can be different from filename" ; # Check Name can be different from filename # Comment and Extra can be set - # Can specify a zero Time + # Can specify a zero Time my $comment = "This is a Comment" ; my $extra = "A little something extra" ; my $aname = "a new name" ; - my $hdr = readHeaderInfo $name, + my $hdr = readHeaderInfo $name, -Strict => 0, -Name => $aname, -Comment => $comment, @@ -92,7 +92,7 @@ # Check Time defaults to now # and that can have empty name, comment and extrafield my $before = time ; - my $hdr = readHeaderInfo $name, + my $hdr = readHeaderInfo $name, -TextFlag => 1, -Name => "", -Comment => "", @@ -121,7 +121,7 @@ title "can have null extrafield" ; my $before = time ; - my $hdr = readHeaderInfo $name, + my $hdr = readHeaderInfo $name, -strict => 0, -Name => "a", -Comment => "b", @@ -144,7 +144,7 @@ { title "can have undef name, comment, time and extrafield" ; - my $hdr = readHeaderInfo $name, + my $hdr = readHeaderInfo $name, -Name => undef, -Comment => undef, -ExtraField => undef, @@ -167,9 +167,9 @@ my $v = pack "h*", $value; my $comment = "my${v}comment$v"; - my $hdr = readHeaderInfo $name, + my $hdr = readHeaderInfo $name, Time => 0, - -TextFlag => 1, + -TextFlag => 1, -Name => "", -Comment => $comment, -ExtraField => ""; @@ -249,14 +249,14 @@ for my $code ( -1, undef, '', 'fred' ) { my $code_name = defined $code ? "'$code'" : "'undef'"; - eval { new IO::Compress::Gzip $name, -OS_Code => $code } ; + eval { IO::Compress::Gzip->new( $name, -OS_Code => $code ) } ; like $@, mkErr("^IO::Compress::Gzip: Parameter 'OS_Code' must be an unsigned int, got $code_name"), " Trap OS Code $code_name"; } for my $code ( qw( 256 ) ) { - eval { ok ! new IO::Compress::Gzip($name, OS_Code => $code) }; + eval { ok ! IO::Compress::Gzip->new($name, OS_Code => $code) }; like $@, mkErr("OS_Code must be between 0 and 255, got '$code'"), " Trap OS Code $code"; like $GzipError, "/OS_Code must be between 0 and 255, got '$code'/", @@ -285,34 +285,34 @@ [1, ['Xx' => '','AB' => 'Fred'] => [['Xx' => ''],['AB'=>'Fred']] ], [1, ['Xx' => '','Xx' => 'Fred'] => [['Xx' => ''],['Xx'=>'Fred']] ], [1, ['Xx' => '', - 'Xx' => 'Fred', + 'Xx' => 'Fred', 'Xx' => 'Fred'] => [['Xx' => ''],['Xx'=>'Fred'], ['Xx'=>'Fred']] ], [1, [ ['Xx' => 'a'], ['AB' => 'Fred'] ] => [['Xx' => 'a'],['AB'=>'Fred']] ], - [0, {'AB' => 'Fred', - 'Pq' => 'r', + [0, {'AB' => 'Fred', + 'Pq' => 'r', "\x01\x02" => "\x03"} => [['AB'=>'Fred'], - ['Pq'=>'r'], + ['Pq'=>'r'], ["\x01\x02"=>"\x03"]] ], - [1, ['AB' => 'z' x GZIP_FEXTRA_SUBFIELD_MAX_SIZE] => + [1, ['AB' => 'z' x GZIP_FEXTRA_SUBFIELD_MAX_SIZE] => [['AB'=>'z' x GZIP_FEXTRA_SUBFIELD_MAX_SIZE]] ], ); foreach my $test (@tests) { my ($order, $input, $result) = @$test ; - ok my $x = new IO::Compress::Gzip $name, + ok my $x = IO::Compress::Gzip->new( $name, -ExtraField => $input, - -HeaderCRC => 1 + -HeaderCRC => 1 ) or diag "GzipError is $GzipError" ; ; my $string = "abcd" ; ok $x->write($string) ; ok $x->close ; #is GZreadFile($name), $string ; - ok $x = new IO::Uncompress::Gunzip $name, + ok $x = IO::Uncompress::Gunzip->new( $name, #-Strict => 1, - -ParseExtra => 1 + -ParseExtra => 1 ) or diag "GunzipError is $GunzipError" ; ; my $hdr = $x->getHeaderInfo(); ok $hdr; @@ -331,7 +331,7 @@ eq_array $extra, $result; } else { eq_set $extra, $result; - } + } } } @@ -351,7 +351,7 @@ [ [ ['ab'=>'x'],{"a" => "fred"} ] => "Not list of lists"], [ [ ["aa"] ] => "SubField must have two parts"], [ [ ["aa", "b", "c"] ] => "SubField must have two parts"], - [ [ ["ab" => 'x' x (GZIP_FEXTRA_SUBFIELD_MAX_SIZE + 1) ] ] + [ [ ["ab" => 'x' x (GZIP_FEXTRA_SUBFIELD_MAX_SIZE + 1) ] ] => "SubField Data too long"], [ { 'abc', 1 } => "SubField ID not two chars long"], @@ -359,15 +359,15 @@ [ { "ab", \1 } => "SubField Data is a reference"], ); - + foreach my $test (@tests) { my ($input, $string) = @$test ; my $buffer ; my $x ; - eval { $x = new IO::Compress::Gzip \$buffer, -ExtraField => $input; }; - like $@, mkErr("$prefix$string"); - like $GzipError, "/$prefix$string/"; + eval { $x = IO::Compress::Gzip->new( \$buffer, -ExtraField => $input ); }; + like $@, mkErr("$prefix$string"); + like $GzipError, "/$prefix$string/"; ok ! $x ; } @@ -378,19 +378,19 @@ # Corrupt ExtraField my @tests = ( - ["Sub-field truncated", + ["Sub-field truncated", "Error with ExtraField Parameter: Truncated in FEXTRA Body Section", "Header Error: Truncated in FEXTRA Body Section", ['a', undef, undef] ], - ["Length of field incorrect", + ["Length of field incorrect", "Error with ExtraField Parameter: Truncated in FEXTRA Body Section", "Header Error: Truncated in FEXTRA Body Section", ["ab", 255, "abc"] ], - ["Length of 2nd field incorrect", + ["Length of 2nd field incorrect", "Error with ExtraField Parameter: Truncated in FEXTRA Body Section", "Header Error: Truncated in FEXTRA Body Section", ["ab", 3, "abc"], ["de", 7, "x"] ], - ["Length of 2nd field incorrect", + ["Length of 2nd field incorrect", "Error with ExtraField Parameter: SubField ID 2nd byte is 0x00", "Header Error: SubField ID 2nd byte is 0x00", ["a\x00", 3, "abc"], ["de", 7, "x"] ], @@ -418,31 +418,31 @@ my $buffer ; my $x ; - eval {$x = new IO::Compress::Gzip \$buffer, -ExtraField => $input, Strict => 1; }; - like $@, mkErr("$gzip_error"), " $name"; - like $GzipError, "/$gzip_error/", " $name"; + eval {$x = IO::Compress::Gzip->new( \$buffer, -ExtraField => $input, Strict => 1 ); }; + like $@, mkErr("$gzip_error"), " $name"; + like $GzipError, "/$gzip_error/", " $name"; ok ! $x, " IO::Compress::Gzip fails"; - like $GzipError, "/$gzip_error/", " $name"; + like $GzipError, "/$gzip_error/", " $name"; - foreach my $check (0, 1) + foreach my $check (0, 1) { - ok $x = new IO::Compress::Gzip \$buffer, - ExtraField => $input, - Strict => 0 + ok $x = IO::Compress::Gzip->new( \$buffer, + ExtraField => $input, + Strict => 0 ) or diag "GzipError is $GzipError" ; my $string = "abcd" ; $x->write($string) ; $x->close ; is anyUncompress(\$buffer), $string ; - $x = new IO::Uncompress::Gunzip \$buffer, + $x = IO::Uncompress::Gunzip->new( \$buffer, Strict => 0, Transparent => 0, - ParseExtra => $check; + ParseExtra => $check ); if ($check) { ok ! $x ; - like $GunzipError, "/^$gunzip_error/"; + like $GunzipError, "/^$gunzip_error/"; } else { ok $x ; @@ -456,13 +456,13 @@ { title 'Check Minimal'; - ok my $x = new IO::Compress::Gzip $name, -Minimal => 1; + ok my $x = IO::Compress::Gzip->new( $name, -Minimal => 1 ); my $string = "abcd" ; ok $x->write($string) ; ok $x->close ; #is GZreadFile($name), $string ; - ok $x = new IO::Uncompress::Gunzip $name ; + ok $x = IO::Uncompress::Gunzip->new( $name ); my $hdr = $x->getHeaderInfo(); ok $hdr; ok $hdr->{Time} == 0; @@ -482,11 +482,11 @@ title "Check Minimal + no compressed data"; # This is the smallest possible gzip file (20 bytes) - ok my $x = new IO::Compress::Gzip $name, -Minimal => 1; + ok my $x = IO::Compress::Gzip->new( $name, -Minimal => 1 ); isa_ok $x, "IO::Compress::Gzip"; ok $x->close, "closed" ; - ok $x = new IO::Uncompress::Gunzip $name, -Append => 0 ; + ok $x = IO::Uncompress::Gunzip->new( $name, -Append => 0 ); isa_ok $x, "IO::Uncompress::Gunzip"; my $data ; my $status = 1; @@ -528,7 +528,7 @@ EOM my $good = ''; - ok my $x = new IO::Compress::Gzip \$good, -HeaderCRC => 1 ; + ok my $x = IO::Compress::Gzip->new( \$good, -HeaderCRC => 1 ); ok $x->write($string) ; ok $x->close ; @@ -537,7 +537,7 @@ my $buffer = $good ; substr($buffer, 0, 1) = 'x' ; - ok ! new IO::Uncompress::Gunzip \$buffer, -Transparent => 0 ; + ok ! IO::Uncompress::Gunzip->new( \$buffer, -Transparent => 0 ); ok $GunzipError =~ /Header Error: Bad Magic/; } @@ -546,7 +546,7 @@ my $buffer = $good ; substr($buffer, 1, 1) = "\xFF" ; - ok ! new IO::Uncompress::Gunzip \$buffer, -Transparent => 0 ; + ok ! IO::Uncompress::Gunzip->new( \$buffer, -Transparent => 0 ); ok $GunzipError =~ /Header Error: Bad Magic/; #print "$GunzipError\n"; } @@ -556,7 +556,7 @@ my $buffer = $good ; substr($buffer, 2, 1) = 'x' ; - ok ! new IO::Uncompress::Gunzip \$buffer, -Transparent => 0 ; + ok ! IO::Uncompress::Gunzip->new( \$buffer, -Transparent => 0 ); like $GunzipError, '/Header Error: Not Deflate \(CM is \d+\)/'; } @@ -565,7 +565,7 @@ my $buffer = $good ; substr($buffer, 3, 1) = "\xff"; - ok ! new IO::Uncompress::Gunzip \$buffer, -Transparent => 0 ; + ok ! IO::Uncompress::Gunzip->new( \$buffer, -Transparent => 0 ); like $GunzipError, '/Header Error: Use of Reserved Bits in FLG field./'; } @@ -574,7 +574,7 @@ my $buffer = $good ; substr($buffer, 10, 1) = chr((ord(substr($buffer, 10, 1)) + 1) & 0xFF); - ok ! new IO::Uncompress::Gunzip \$buffer, -Transparent => 0, Strict => 1 + ok ! IO::Uncompress::Gunzip->new( \$buffer, -Transparent => 0, Strict => 1 ) or print "# $GunzipError\n"; like $GunzipError, '/Header Error: CRC16 mismatch/' #or diag "buffer length " . length($buffer); @@ -587,10 +587,10 @@ my $x ; my $store = "x" x GZIP_FEXTRA_MAX_SIZE ; { - my $z = new IO::Compress::Gzip(\$x, ExtraField => $store, Strict => 0) ; + my $z = IO::Compress::Gzip->new(\$x, ExtraField => $store, Strict => 0) ; ok $z, "Created IO::Compress::Gzip object" ; } - my $gunz = new IO::Uncompress::Gunzip \$x, Strict => 0; + my $gunz = IO::Uncompress::Gunzip->new( \$x, Strict => 0 ); ok $gunz, "Created IO::Uncompress::Gunzip object" ; my $hdr = $gunz->getHeaderInfo(); ok $hdr; @@ -601,7 +601,7 @@ { title "Header Corruption - ExtraField too big"; my $x; - eval { new IO::Compress::Gzip(\$x, -ExtraField => "x" x (GZIP_FEXTRA_MAX_SIZE + 1)) ;}; + eval { IO::Compress::Gzip->new(\$x, -ExtraField => "x" x (GZIP_FEXTRA_MAX_SIZE + 1)) ;}; like $@, mkErr('Error with ExtraField Parameter: Too Large'); like $GzipError, '/Error with ExtraField Parameter: Too Large/'; } @@ -610,24 +610,24 @@ title "Header Corruption - Create Name with Illegal Chars"; my $x; - eval { new IO::Compress::Gzip \$x, -Name => "fred\x02" }; + eval { IO::Compress::Gzip->new( \$x, -Name => "fred\x02" ) }; like $@, mkErr('Non ISO 8859-1 Character found in Name'); like $GzipError, '/Non ISO 8859-1 Character found in Name/'; - ok my $gz = new IO::Compress::Gzip \$x, + ok my $gz = IO::Compress::Gzip->new( \$x, -Strict => 0, - -Name => "fred\x02" ; - ok $gz->close(); + -Name => "fred\x02" ); + ok $gz->close(); - ok ! new IO::Uncompress::Gunzip \$x, + ok ! IO::Uncompress::Gunzip->new( \$x, -Transparent => 0, - -Strict => 1; + -Strict => 1 ); - like $GunzipError, '/Header Error: Non ISO 8859-1 Character found in Name/'; - ok my $gunzip = new IO::Uncompress::Gunzip \$x, - -Strict => 0; + like $GunzipError, '/Header Error: Non ISO 8859-1 Character found in Name/'; + ok my $gunzip = IO::Uncompress::Gunzip->new( \$x, + -Strict => 0 ); - my $hdr = $gunzip->getHeaderInfo() ; + my $hdr = $gunzip->getHeaderInfo() ; is $hdr->{Name}, "fred\x02"; @@ -636,47 +636,47 @@ { title "Header Corruption - Null Chars in Name"; my $x; - eval { new IO::Compress::Gzip \$x, -Name => "\x00" }; + eval { IO::Compress::Gzip->new( \$x, -Name => "\x00" ) }; like $@, mkErr('Null Character found in Name'); like $GzipError, '/Null Character found in Name/'; - eval { new IO::Compress::Gzip \$x, -Name => "abc\x00" }; + eval { IO::Compress::Gzip->new( \$x, -Name => "abc\x00" ) }; like $@, mkErr('Null Character found in Name'); like $GzipError, '/Null Character found in Name/'; - ok my $gz = new IO::Compress::Gzip \$x, + ok my $gz = IO::Compress::Gzip->new( \$x, -Strict => 0, - -Name => "abc\x00de" ; - ok $gz->close() ; - ok my $gunzip = new IO::Uncompress::Gunzip \$x, - -Strict => 0; + -Name => "abc\x00de" ); + ok $gz->close() ; + ok my $gunzip = IO::Uncompress::Gunzip->new( \$x, + -Strict => 0 ); - my $hdr = $gunzip->getHeaderInfo() ; + my $hdr = $gunzip->getHeaderInfo() ; is $hdr->{Name}, "abc"; - + } { title "Header Corruption - Create Comment with Illegal Chars"; my $x; - eval { new IO::Compress::Gzip \$x, -Comment => "fred\x02" }; + eval { IO::Compress::Gzip->new( \$x, -Comment => "fred\x02" ) }; like $@, mkErr('Non ISO 8859-1 Character found in Comment'); like $GzipError, '/Non ISO 8859-1 Character found in Comment/'; - ok my $gz = new IO::Compress::Gzip \$x, + ok my $gz = IO::Compress::Gzip->new( \$x, -Strict => 0, - -Comment => "fred\x02" ; - ok $gz->close(); + -Comment => "fred\x02" ); + ok $gz->close(); - ok ! new IO::Uncompress::Gunzip \$x, Strict => 1, - -Transparent => 0; + ok ! IO::Uncompress::Gunzip->new( \$x, Strict => 1, + -Transparent => 0 ); like $GunzipError, '/Header Error: Non ISO 8859-1 Character found in Comment/'; - ok my $gunzip = new IO::Uncompress::Gunzip \$x, Strict => 0; + ok my $gunzip = IO::Uncompress::Gunzip->new( \$x, Strict => 0 ); - my $hdr = $gunzip->getHeaderInfo() ; + my $hdr = $gunzip->getHeaderInfo() ; is $hdr->{Comment}, "fred\x02"; @@ -685,25 +685,25 @@ { title "Header Corruption - Null Char in Comment"; my $x; - eval { new IO::Compress::Gzip \$x, -Comment => "\x00" }; + eval { IO::Compress::Gzip->new( \$x, -Comment => "\x00" ) }; like $@, mkErr('Null Character found in Comment'); like $GzipError, '/Null Character found in Comment/'; - eval { new IO::Compress::Gzip \$x, -Comment => "abc\x00" } ; + eval { IO::Compress::Gzip->new( \$x, -Comment => "abc\x00" ) } ; like $@, mkErr('Null Character found in Comment'); like $GzipError, '/Null Character found in Comment/'; - ok my $gz = new IO::Compress::Gzip \$x, + ok my $gz = IO::Compress::Gzip->new( \$x, -Strict => 0, - -Comment => "abc\x00de" ; - ok $gz->close() ; - ok my $gunzip = new IO::Uncompress::Gunzip \$x, - -Strict => 0; + -Comment => "abc\x00de" ); + ok $gz->close() ; + ok my $gunzip = IO::Uncompress::Gunzip->new( \$x, + -Strict => 0 ); - my $hdr = $gunzip->getHeaderInfo() ; + my $hdr = $gunzip->getHeaderInfo() ; is $hdr->{Comment}, "abc"; - + } @@ -715,18 +715,18 @@ EOM my $truncated ; - ok my $x = new IO::Compress::Gzip \$truncated, -HeaderCRC => 1, Strict => 0, - -ExtraField => "hello" x 10 ; + ok my $x = IO::Compress::Gzip->new( \$truncated, -HeaderCRC => 1, Strict => 0, + -ExtraField => "hello" x 10 ); ok $x->write($string) ; ok $x->close ; substr($truncated, $index) = '' ; - #my $lex = new LexFile my $name ; + #my $lex = LexFile->new( my $name ); #writeFile($name, $truncated) ; - #my $g = new IO::Uncompress::Gunzip $name, -Transparent => 0; - my $g = new IO::Uncompress::Gunzip \$truncated, -Transparent => 0; - ok ! $g + #my $g = IO::Uncompress::Gunzip->new( $name, -Transparent => 0 ); + my $g = IO::Uncompress::Gunzip->new( \$truncated, -Transparent => 0 ); + ok ! $g or print "# $g\n" ; like($GunzipError, '/^Header Error: Truncated in FEXTRA/'); @@ -744,14 +744,14 @@ EOM my $truncated ; - ok my $x = new IO::Compress::Gzip \$truncated, -Name => $Name; + ok my $x = IO::Compress::Gzip->new( \$truncated, -Name => $Name ); ok $x->write($string) ; ok $x->close ; substr($truncated, $index) = '' ; - my $g = new IO::Uncompress::Gunzip \$truncated, -Transparent => 0; - ok ! $g + my $g = IO::Uncompress::Gunzip->new( \$truncated, -Transparent => 0 ); + ok ! $g or print "# $g\n" ; like $GunzipError, '/^Header Error: Truncated in FNAME Section/'; @@ -767,17 +767,17 @@ EOM my $truncated ; - ok my $x = new IO::Compress::Gzip \$truncated, -Comment => $Comment; + ok my $x = IO::Compress::Gzip->new( \$truncated, -Comment => $Comment ); ok $x->write($string) ; ok $x->close ; substr($truncated, $index) = '' ; - #my $lex = new LexFile my $name ; + #my $lex = LexFile->new( my $name ); #writeFile($name, $truncated) ; - #my $g = new IO::Uncompress::Gunzip $name, -Transparent => 0; - my $g = new IO::Uncompress::Gunzip \$truncated, -Transparent => 0; - ok ! $g + #my $g = IO::Uncompress::Gunzip->new( $name, -Transparent => 0 ); + my $g = IO::Uncompress::Gunzip->new( \$truncated, -Transparent => 0 ); + ok ! $g or print "# $g\n" ; like $GunzipError, '/^Header Error: Truncated in FCOMMENT Section/'; @@ -792,17 +792,16 @@ EOM my $truncated ; - ok my $x = new IO::Compress::Gzip \$truncated, -HeaderCRC => 1; + ok my $x = IO::Compress::Gzip->new( \$truncated, -HeaderCRC => 1 ); ok $x->write($string) ; ok $x->close ; substr($truncated, $index) = '' ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); writeFile($name, $truncated) ; - my $g = new IO::Uncompress::Gunzip $name, -Transparent => 0; - #my $g = new IO::Uncompress::Gunzip \$truncated, -Transparent => 0; - ok ! $g + my $g = IO::Uncompress::Gunzip->new( $name, -Transparent => 0 ); + ok ! $g or print "# $g\n" ; like $GunzipError, '/^Header Error: Truncated in FHCRC Section/'; @@ -820,19 +819,19 @@ my $good ; { - ok my $x = new IO::Compress::Gzip \$good ; + ok my $x = IO::Compress::Gzip->new( \$good ); ok $x->write($string) ; ok $x->close ; } writeFile($name, $good) ; - ok my $gunz = new IO::Uncompress::Gunzip $name, + ok my $gunz = IO::Uncompress::Gunzip->new( $name, -Append => 1, - -Strict => 1; + -Strict => 1 ); my $uncomp ; 1 while $gunz->read($uncomp) > 0 ; ok $gunz->close() ; - ok $uncomp eq $string + ok $uncomp eq $string or print "# got [$uncomp] wanted [$string]\n";; foreach my $trim (-8 .. -1) @@ -848,7 +847,7 @@ foreach my $strict (0, 1) { - ok my $gunz = new IO::Uncompress::Gunzip $name, Append => 1, -Strict => $strict ; + ok my $gunz = IO::Uncompress::Gunzip->new( $name, Append => 1, -Strict => $strict ); my $uncomp ; my $status = 1; $status = $gunz->read($uncomp) while $status > 0; @@ -860,7 +859,7 @@ else { is $status, 0, "status 0"; - ok ! $GunzipError, "no error" + ok ! $GunzipError, "no error" or diag "$GunzipError"; my $expected = substr($buffer, - $got); is $gunz->trailingData(), $expected_trailing, "trailing data"; @@ -881,9 +880,9 @@ foreach my $strict (0, 1) { - ok my $gunz = new IO::Uncompress::Gunzip $name, + ok my $gunz = IO::Uncompress::Gunzip->new( $name, Append => 1, - -Strict => $strict ; + -Strict => $strict ); my $uncomp ; my $status = 1; $status = $gunz->read($uncomp) while $status > 0; @@ -916,9 +915,9 @@ foreach my $strict (0, 1) { - ok my $gunz = new IO::Uncompress::Gunzip $name, + ok my $gunz = IO::Uncompress::Gunzip->new( $name, -Append => 1, - -Strict => $strict ; + -Strict => $strict ); my $uncomp ; my $status = 1; $status = $gunz->read($uncomp) while $status > 0; @@ -951,9 +950,9 @@ foreach my $strict (0, 1) { - ok my $gunz = new IO::Uncompress::Gunzip $name, + ok my $gunz = IO::Uncompress::Gunzip->new( $name, -Append => 1, - -Strict => $strict ; + -Strict => $strict ); my $uncomp ; my $status = 1; $status = $gunz->read($uncomp) while $status > 0; @@ -980,11 +979,11 @@ 'SubField ID not two chars long' ; my $buffer ; my $x ; - eval { $x = new IO::Compress::Gzip \$buffer, - -ExtraField => [ at => 'mouse', bad => 'dog'] ; + eval { $x = IO::Compress::Gzip->new( \$buffer, + -ExtraField => [ at => 'mouse', bad => 'dog'] ); }; - like $@, mkErr("$error"); - like $GzipError, "/$error/"; + like $@, mkErr("$error"); + like $GzipError, "/$error/"; ok ! $x ; } } diff -Nru perl-5.32.1/cpan/IO-Compress/t/005defhdr.t perl-5.34.0/cpan/IO-Compress/t/005defhdr.t --- perl-5.32.1/cpan/IO-Compress/t/005defhdr.t 2020-12-18 09:57:57.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/005defhdr.t 2021-01-20 23:04:44.000000000 +0000 @@ -37,12 +37,12 @@ my %opts = @_ ; my $buffer ; - ok my $def = new IO::Compress::Deflate \$buffer, %opts ; + ok my $def = IO::Compress::Deflate->new( \$buffer, %opts ); is $def->write($string), length($string), "write" ; ok $def->close, "closed" ; #print "ReadHeaderInfo\n"; hexDump(\$buffer); - ok my $inf = new IO::Uncompress::Inflate \$buffer, Append => 1 ; + ok my $inf = IO::Uncompress::Inflate->new( \$buffer, Append => 1 ); my $uncomp = ""; #ok $inf->read($uncomp) ; my $actual = 0 ; @@ -67,12 +67,12 @@ my %opts = @_ ; my $buffer ; - ok my $def = new Compress::Raw::Zlib::Deflate AppendOutput => 1, %opts ; + ok my $def = Compress::Raw::Zlib::Deflate->new( AppendOutput => 1, %opts ); cmp_ok $def->deflate($string, $buffer), '==', Z_OK; cmp_ok $def->flush($buffer), '==', Z_OK; #print "ReadHeaderInfoZlib\n"; hexDump(\$buffer); - - ok my $inf = new IO::Uncompress::Inflate \$buffer, Append => 1 ; + + ok my $inf = IO::Uncompress::Inflate->new( \$buffer, Append => 1 ); my $uncomp ; #ok $inf->read($uncomp) ; my $actual = 0 ; @@ -94,7 +94,7 @@ sub printHeaderInfo { my $buffer = shift ; - my $inf = new IO::Uncompress::Inflate \$buffer ; + my $inf = IO::Uncompress::Inflate->new( \$buffer ); my $hdr = $inf->getHeaderInfo(); no warnings 'uninitialized' ; @@ -107,7 +107,7 @@ # Check the Deflate Header Parameters #======================================== -#my $lex = new LexFile my $name ; +#my $lex = LexFile->new( my $name ); { title "Check default header settings" ; @@ -210,7 +210,7 @@ EOM my $good ; - ok my $x = new IO::Compress::Deflate \$good ; + ok my $x = IO::Compress::Deflate->new( \$good ); ok $x->write($string) ; ok $x->close ; @@ -219,7 +219,7 @@ my $buffer = $good ; substr($buffer, 0, 1) = "\x00" ; - ok ! new IO::Uncompress::Inflate \$buffer, -Transparent => 0 ; + ok ! IO::Uncompress::Inflate->new( \$buffer, -Transparent => 0 ); like $IO::Uncompress::Inflate::InflateError, '/Header Error: CRC mismatch/', "CRC mismatch"; } @@ -229,7 +229,7 @@ my $buffer = $good ; substr($buffer, 1, 1) = "\x00" ; - ok ! new IO::Uncompress::Inflate \$buffer, -Transparent => 0 ; + ok ! IO::Uncompress::Inflate->new( \$buffer, -Transparent => 0 ); like $IO::Uncompress::Inflate::InflateError, '/Header Error: CRC mismatch/', "CRC mismatch"; } @@ -260,8 +260,8 @@ substr($buffer, 0, 2) = $header; - my $un = new IO::Uncompress::Inflate \$buffer, -Transparent => 0 ; - ok ! new IO::Uncompress::Inflate \$buffer, -Transparent => 0 ; + my $un = IO::Uncompress::Inflate->new( \$buffer, -Transparent => 0 ); + ok ! IO::Uncompress::Inflate->new( \$buffer, -Transparent => 0 ); like $IO::Uncompress::Inflate::InflateError, '/Header Error: Not Deflate \(CM is 3\)/', " Not Deflate"; } @@ -277,7 +277,7 @@ $string = $string x 1000; my $good ; - ok my $x = new IO::Compress::Deflate \$good ; + ok my $x = IO::Compress::Deflate->new( \$good ); ok $x->write($string) ; ok $x->close ; @@ -287,7 +287,7 @@ foreach my $s (0, 1) { title "Trailer Corruption - Trailer truncated to $got bytes, strict $s" ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $buffer = $good ; my $expected_trailing = substr($good, -4, 4) ; substr($expected_trailing, $trim) = ''; @@ -295,7 +295,7 @@ substr($buffer, $trim) = ''; writeFile($name, $buffer) ; - ok my $gunz = new IO::Uncompress::Inflate $name, Append => 1, Strict => $s; + ok my $gunz = IO::Uncompress::Inflate->new( $name, Append => 1, Strict => $s ); my $uncomp ; if ($s) { @@ -322,10 +322,10 @@ my $buffer = $good ; my $crc = unpack("N", substr($buffer, -4, 4)); substr($buffer, -4, 4) = pack('N', $crc+1); - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); writeFile($name, $buffer) ; - ok my $gunz = new IO::Uncompress::Inflate $name, Append => 1, Strict => 1; + ok my $gunz = IO::Uncompress::Inflate->new( $name, Append => 1, Strict => 1 ); my $uncomp ; my $status ; 1 while ($status = $gunz->read($uncomp)) > 0; @@ -343,10 +343,10 @@ my $buffer = $good ; my $crc = unpack("N", substr($buffer, -4, 4)); substr($buffer, -4, 4) = pack('N', $crc+1); - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); writeFile($name, $buffer) ; - ok my $gunz = new IO::Uncompress::Inflate $name, Append => 1, Strict => 0; + ok my $gunz = IO::Uncompress::Inflate->new( $name, Append => 1, Strict => 0 ); my $uncomp ; my $status ; 1 while ($status = $gunz->read($uncomp)) > 0; diff -Nru perl-5.32.1/cpan/IO-Compress/t/006zip.t perl-5.34.0/cpan/IO-Compress/t/006zip.t --- perl-5.32.1/cpan/IO-Compress/t/006zip.t 2020-12-18 09:57:57.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/006zip.t 2021-01-20 23:04:44.000000000 +0000 @@ -24,11 +24,11 @@ use_ok('IO::Compress::Zip', qw(:all)) ; use_ok('IO::Uncompress::Unzip', qw(unzip $UnzipError)) ; - eval { - require IO::Compress::Bzip2 ; - import IO::Compress::Bzip2 2.010 ; - require IO::Uncompress::Bunzip2 ; - import IO::Uncompress::Bunzip2 2.010 ; + eval { + require IO::Compress::Bzip2 ; + IO::Compress::Bzip2->import( 2.010 ); + require IO::Uncompress::Bunzip2 ; + IO::Uncompress::Bunzip2->import( 2.010 ); } ; } @@ -38,7 +38,7 @@ { my $filename = shift; - my $u = new IO::Uncompress::Unzip $filename, Append => 1, @_ + my $u = IO::Uncompress::Unzip->new( $filename, Append => 1, @_ ) or die "Cannot open $filename: $UnzipError"; isa_ok $u, "IO::Uncompress::Unzip"; @@ -59,7 +59,7 @@ } die "Error processing $filename: $status $!\n" - if $status < 0 ; + if $status < 0 ; return @content; } @@ -69,7 +69,7 @@ { title "Create a simple zip - All Deflate"; - my $lex = new LexFile my $file1; + my $lex = LexFile->new( my $file1 ); my @content = ( 'hello', @@ -77,16 +77,16 @@ 'goodbye ', ); - my $zip = new IO::Compress::Zip $file1, - Name => "one", Method => ZIP_CM_DEFLATE, Stream => 0; + my $zip = IO::Compress::Zip->new( $file1, + Name => "one", Method => ZIP_CM_DEFLATE, Stream => 0 ); isa_ok $zip, "IO::Compress::Zip"; - is $zip->write($content[0]), length($content[0]), "write"; + is $zip->write($content[0]), length($content[0]), "write"; $zip->newStream(Name=> "two", Method => ZIP_CM_DEFLATE); - is $zip->write($content[1]), length($content[1]), "write"; + is $zip->write($content[1]), length($content[1]), "write"; $zip->newStream(Name=> "three", Method => ZIP_CM_DEFLATE); - is $zip->write($content[2]), length($content[2]), "write"; - ok $zip->close(), "closed"; + is $zip->write($content[2]), length($content[2]), "write"; + ok $zip->close(), "closed"; my @got = getContent($file1); @@ -102,7 +102,7 @@ skip "IO::Compress::Bzip2 not available", 9 unless defined $IO::Compress::Bzip2::VERSION; - my $lex = new LexFile my $file1; + my $lex = LexFile->new( my $file1 ); my @content = ( 'hello', @@ -110,16 +110,16 @@ 'goodbye ', ); - my $zip = new IO::Compress::Zip $file1, - Name => "one", Method => ZIP_CM_BZIP2, Stream => 0; + my $zip = IO::Compress::Zip->new( $file1, + Name => "one", Method => ZIP_CM_BZIP2, Stream => 0 ); isa_ok $zip, "IO::Compress::Zip"; - is $zip->write($content[0]), length($content[0]), "write"; + is $zip->write($content[0]), length($content[0]), "write"; $zip->newStream(Name=> "two", Method => ZIP_CM_BZIP2); - is $zip->write($content[1]), length($content[1]), "write"; + is $zip->write($content[1]), length($content[1]), "write"; $zip->newStream(Name=> "three", Method => ZIP_CM_BZIP2); - is $zip->write($content[2]), length($content[2]), "write"; - ok $zip->close(), "closed"; + is $zip->write($content[2]), length($content[2]), "write"; + ok $zip->close(), "closed"; my @got = getContent($file1); @@ -135,7 +135,7 @@ skip "IO::Compress::Bzip2 not available", 9 unless $IO::Compress::Bzip2::VERSION; - my $lex = new LexFile my $file1; + my $lex = LexFile->new( my $file1 ); my @content = ( 'hello', @@ -143,16 +143,16 @@ 'goodbye ', ); - my $zip = new IO::Compress::Zip $file1, - Name => "one", Method => ZIP_CM_DEFLATE, Stream => 0; + my $zip = IO::Compress::Zip->new( $file1, + Name => "one", Method => ZIP_CM_DEFLATE, Stream => 0 ); isa_ok $zip, "IO::Compress::Zip"; - is $zip->write($content[0]), length($content[0]), "write"; + is $zip->write($content[0]), length($content[0]), "write"; $zip->newStream(Name=> "two", Method => ZIP_CM_BZIP2); - is $zip->write($content[1]), length($content[1]), "write"; + is $zip->write($content[1]), length($content[1]), "write"; $zip->newStream(Name=> "three", Method => ZIP_CM_DEFLATE); - is $zip->write($content[2]), length($content[2]), "write"; - ok $zip->close(), "closed"; + is $zip->write($content[2]), length($content[2]), "write"; + ok $zip->close(), "closed"; my @got = getContent($file1); @@ -164,7 +164,7 @@ { title "Create a simple zip - All STORE"; - my $lex = new LexFile my $file1; + my $lex = LexFile->new( my $file1 ); my @content = ( 'hello', @@ -172,16 +172,16 @@ 'goodbye ', ); - my $zip = new IO::Compress::Zip $file1, - Name => "one", Method => ZIP_CM_STORE, Stream => 0; + my $zip = IO::Compress::Zip->new( $file1, + Name => "one", Method => ZIP_CM_STORE, Stream => 0 ); isa_ok $zip, "IO::Compress::Zip"; - is $zip->write($content[0]), length($content[0]), "write"; + is $zip->write($content[0]), length($content[0]), "write"; $zip->newStream(Name=> "two", Method => ZIP_CM_STORE); - is $zip->write($content[1]), length($content[1]), "write"; + is $zip->write($content[1]), length($content[1]), "write"; $zip->newStream(Name=> "three", Method => ZIP_CM_STORE); - is $zip->write($content[2]), length($content[2]), "write"; - ok $zip->close(), "closed"; + is $zip->write($content[2]), length($content[2]), "write"; + ok $zip->close(), "closed"; my @got = getContent($file1); @@ -193,24 +193,24 @@ { title "Create a simple zip - Deflate + STORE"; - my $lex = new LexFile my $file1; + my $lex = LexFile->new( my $file1 ); my @content = qw( - hello + hello and - goodbye + goodbye ); - my $zip = new IO::Compress::Zip $file1, - Name => "one", Method => ZIP_CM_DEFLATE, Stream => 0; + my $zip = IO::Compress::Zip->new( $file1, + Name => "one", Method => ZIP_CM_DEFLATE, Stream => 0 ); isa_ok $zip, "IO::Compress::Zip"; - is $zip->write($content[0]), length($content[0]), "write"; + is $zip->write($content[0]), length($content[0]), "write"; $zip->newStream(Name=> "two", Method => ZIP_CM_STORE); - is $zip->write($content[1]), length($content[1]), "write"; + is $zip->write($content[1]), length($content[1]), "write"; $zip->newStream(Name=> "three", Method => ZIP_CM_DEFLATE); - is $zip->write($content[2]), length($content[2]), "write"; - ok $zip->close(), "closed"; + is $zip->write($content[2]), length($content[2]), "write"; + ok $zip->close(), "closed"; my @got = getContent($file1); @@ -222,7 +222,7 @@ { title "Create a simple zip - Deflate + zero length STORE"; - my $lex = new LexFile my $file1; + my $lex = LexFile->new( my $file1 ); my @content = ( 'hello ', @@ -230,16 +230,16 @@ 'goodbye ', ); - my $zip = new IO::Compress::Zip $file1, - Name => "one", Method => ZIP_CM_DEFLATE, Stream => 0; + my $zip = IO::Compress::Zip->new( $file1, + Name => "one", Method => ZIP_CM_DEFLATE, Stream => 0 ); isa_ok $zip, "IO::Compress::Zip"; - is $zip->write($content[0]), length($content[0]), "write"; + is $zip->write($content[0]), length($content[0]), "write"; $zip->newStream(Name=> "two", Method => ZIP_CM_STORE); - is $zip->write($content[1]), length($content[1]), "write"; + is $zip->write($content[1]), length($content[1]), "write"; $zip->newStream(Name=> "three", Method => ZIP_CM_DEFLATE); - is $zip->write($content[2]), length($content[2]), "write"; - ok $zip->close(), "closed"; + is $zip->write($content[2]), length($content[2]), "write"; + ok $zip->close(), "closed"; my @got = getContent($file1); @@ -251,7 +251,7 @@ { title "RT #72548"; - my $lex = new LexFile my $file1; + my $lex = LexFile->new( my $file1 ); my $blockSize = 1024 * 16; @@ -260,16 +260,16 @@ "x" x ($blockSize + 1) ); - my $zip = new IO::Compress::Zip $file1, - Name => "one", Method => ZIP_CM_STORE, Stream => 0; + my $zip = IO::Compress::Zip->new( $file1, + Name => "one", Method => ZIP_CM_STORE, Stream => 0 ); isa_ok $zip, "IO::Compress::Zip"; - is $zip->write($content[0]), length($content[0]), "write"; + is $zip->write($content[0]), length($content[0]), "write"; $zip->newStream(Name=> "two", Method => ZIP_CM_STORE); - is $zip->write($content[1]), length($content[1]), "write"; + is $zip->write($content[1]), length($content[1]), "write"; - ok $zip->close(), "closed"; + ok $zip->close(), "closed"; my @got = getContent($file1, BlockSize => $blockSize); @@ -280,15 +280,15 @@ { title "Zip file with a single zero-length file"; - my $lex = new LexFile my $file1; + my $lex = LexFile->new( my $file1 ); - my $zip = new IO::Compress::Zip $file1, - Name => "one", Method => ZIP_CM_STORE, Stream => 0; + my $zip = IO::Compress::Zip->new( $file1, + Name => "one", Method => ZIP_CM_STORE, Stream => 0 ); isa_ok $zip, "IO::Compress::Zip"; $zip->newStream(Name=> "two", Method => ZIP_CM_STORE); - ok $zip->close(), "closed"; + ok $zip->close(), "closed"; my @got = getContent($file1); @@ -307,13 +307,13 @@ my $content = "a single line\n"; my $zip ; - my $status = zip \$content => \$zip, - Method => $method, - Stream => 0, + my $status = zip \$content => \$zip, + Method => $method, + Stream => 0, Name => "123"; is $status, 1, " Created a zip file"; - my $u = new IO::Uncompress::Unzip \$zip; + my $u = IO::Uncompress::Unzip->new( \$zip ); isa_ok $u, "IO::Uncompress::Unzip"; is $u->getline, $content, " Read first line ok"; @@ -324,39 +324,39 @@ { title "isMethodAvailable" ; - + ok IO::Compress::Zip::isMethodAvailable(ZIP_CM_STORE), "ZIP_CM_STORE available"; ok IO::Compress::Zip::isMethodAvailable(ZIP_CM_DEFLATE), "ZIP_CM_DEFLATE available"; #ok IO::Compress::Zip::isMethodAvailable(ZIP_CM_STORE), "ZIP_CM_STORE available"; - - ok ! IO::Compress::Zip::isMethodAvailable(999), "999 not available"; + + ok ! IO::Compress::Zip::isMethodAvailable(999), "999 not available"; } { title "Member & Comment 0"; - my $lex = new LexFile my $file1; + my $lex = LexFile->new( my $file1 ); my $content = 'hello' ; - - my $zip = new IO::Compress::Zip $file1, - Name => "0", Comment => "0" ; + + my $zip = IO::Compress::Zip->new( $file1, + Name => "0", Comment => "0" ); isa_ok $zip, "IO::Compress::Zip"; - is $zip->write($content), length($content), "write"; + is $zip->write($content), length($content), "write"; - ok $zip->close(), "closed"; + ok $zip->close(), "closed"; - my $u = new IO::Uncompress::Unzip $file1, Append => 1, @_ + my $u = IO::Uncompress::Unzip->new( $file1, Append => 1, @_ ) or die "Cannot open $file1: $UnzipError"; isa_ok $u, "IO::Uncompress::Unzip"; my $name = $u->getHeaderInfo()->{Name}; - + is $u->getHeaderInfo()->{Name}, "0", "Name is '0'"; } @@ -365,12 +365,12 @@ title "nexStream regression"; # https://github.com/pmqs/IO-Compress/issues/3 - my $lex = new LexFile my $file1; + my $lex = LexFile->new( my $file1 ); my $content1 = qq["organisation_path","collection_occasion_key","episode_key"\n] ; - - my $zip = new IO::Compress::Zip $file1, - Name => "one"; + + my $zip = IO::Compress::Zip->new( $file1, + Name => "one" ); isa_ok $zip, "IO::Compress::Zip"; print $zip $content1; @@ -384,16 +384,16 @@ EOM print $zip $content2; - ok $zip->close(), "closed"; + ok $zip->close(), "closed"; - my $u = new IO::Uncompress::Unzip $file1, Append => 1, @_ + my $u = IO::Uncompress::Unzip->new( $file1, Append => 1, @_ ) or die "Cannot open $file1: $UnzipError"; isa_ok $u, "IO::Uncompress::Unzip"; my $name = $u->getHeaderInfo()->{Name}; - + is $u->getHeaderInfo()->{Name}, "one", "Name is 'one'"; ok $u->nextStream(), "nextStream OK"; diff -Nru perl-5.32.1/cpan/IO-Compress/t/011-streamzip.t perl-5.34.0/cpan/IO-Compress/t/011-streamzip.t --- perl-5.32.1/cpan/IO-Compress/t/011-streamzip.t 2020-12-18 09:57:57.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/011-streamzip.t 2021-05-04 06:52:48.000000000 +0000 @@ -15,17 +15,17 @@ use CompTestUtils; use IO::Uncompress::Unzip 'unzip' ; -BEGIN -{ +BEGIN +{ plan(skip_all => "Needs Perl 5.005 or better - you have Perl $]" ) if $] < 5.005 ; - + # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 }; - plan tests => 8 + $extra ; + plan tests => 136 + $extra ; } @@ -35,7 +35,7 @@ my $Perl = ($ENV{'FULLPERL'} or $^X or 'perl') ; $Perl = qq["$Perl"] if $^O eq 'MSWin32' ; - + $Perl = "$Perl $Inc -w" ; #$Perl .= " -Mblib " ; my $binDir = $ENV{PERL_CORE} ? "../ext/IO-Compress/bin/" @@ -43,7 +43,7 @@ my $hello1 = <new( my $stderr ); sub check @@ -62,7 +62,7 @@ my $command = shift ; my $expected = shift ; - my $lex = new LexFile my $stderr ; + my $lex = LexFile->new( my $stderr ); my $cmd = "$command 2>$stderr"; my $stdout = `$cmd` ; @@ -93,7 +93,7 @@ title "streamzip" ; my ($infile, $outfile); - my $lex = new LexFile $infile, $outfile ; + my $lex = LexFile->new( $infile, $outfile ); writeFile($infile, $hello1) ; check "$Perl ${binDir}/streamzip <$infile >$outfile"; @@ -104,15 +104,102 @@ } { - title "streamzip" ; + title "streamzip - zipfile option" ; my ($infile, $outfile); - my $lex = new LexFile $infile, $outfile ; + my $lex = LexFile->new( $infile, $outfile ); writeFile($infile, $hello1) ; - check "$Perl ${binDir}/streamzip -zipfile=$outfile <$infile"; + check "$Perl ${binDir}/streamzip -zipfile $outfile <$infile"; my $uncompressed ; unzip $outfile => \$uncompressed; is $uncompressed, $hello1; } + +for my $method (qw(store deflate bzip2 lzma xz zstd)) +{ + SKIP: + { + if ($method eq 'lzma') + { + eval { require IO::Compress::Lzma } ; + skip "Method 'lzma' needs IO::Compress::Lzma\n", 8 + if $@; + } + + if ($method eq 'zstd') + { + eval { require IO::Compress::Zstd } ; + skip "Method 'zstd' needs IO::Compress::Zstd\n", 8 + if $@; + } + + if ($method eq 'xz') + { + eval { require IO::Compress::Xz } ; + skip "Method 'zstd' needs IO::Compress::Xz\n", 8 + if $@; + } + + { + title "streamzip method $method" ; + + my ($infile, $outfile); + my $lex = LexFile->new( $infile, $outfile ); + + writeFile($infile, $hello1) ; + check "$Perl ${binDir}/streamzip -method $method <$infile >$outfile"; + + my $uncompressed ; + unzip $outfile => \$uncompressed; + is $uncompressed, $hello1; + } + + { + title "streamzip $method- zipfile option" ; + + my ($infile, $outfile); + my $lex = LexFile->new( $infile, $outfile ); + + writeFile($infile, $hello1) ; + check "$Perl ${binDir}/streamzip -zipfile $outfile -method $method <$infile"; + + my $uncompressed ; + unzip $outfile => \$uncompressed; + is $uncompressed, $hello1; + } + } +} + +for my $level (0 ..9) +{ + { + title "streamzip level $level" ; + + my ($infile, $outfile); + my $lex = LexFile->new( $infile, $outfile ); + + writeFile($infile, $hello1) ; + check "$Perl ${binDir}/streamzip -$level <$infile >$outfile"; + + my $uncompressed ; + unzip $outfile => \$uncompressed; + is $uncompressed, $hello1; + } + + { + title "streamzip level $level- zipfile option" ; + + my ($infile, $outfile); + my $lex = LexFile->new( $infile, $outfile ); + + writeFile($infile, $hello1) ; + check "$Perl ${binDir}/streamzip -zipfile $outfile -$level <$infile"; + + my $uncompressed ; + unzip $outfile => \$uncompressed; + is $uncompressed, $hello1; + } + +} diff -Nru perl-5.32.1/cpan/IO-Compress/t/01misc.t perl-5.34.0/cpan/IO-Compress/t/01misc.t --- perl-5.32.1/cpan/IO-Compress/t/01misc.t 2020-12-18 09:57:57.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/01misc.t 2021-01-20 23:04:44.000000000 +0000 @@ -10,7 +10,7 @@ use warnings; use bytes; -use Test::More ; +use Test::More ; use CompTestUtils; BEGIN { @@ -36,35 +36,35 @@ sub My::testParseParameters() { eval { ParseParameters(1, {}, 1) ; }; - like $@, mkErr(': Expected even number of parameters, got 1'), + like $@, mkErr(': Expected even number of parameters, got 1'), "Trap odd number of params"; eval { ParseParameters(1, {}, undef) ; }; - like $@, mkErr(': Expected even number of parameters, got 1'), + like $@, mkErr(': Expected even number of parameters, got 1'), "Trap odd number of params"; eval { ParseParameters(1, {}, []) ; }; - like $@, mkErr(': Expected even number of parameters, got 1'), + like $@, mkErr(': Expected even number of parameters, got 1'), "Trap odd number of params"; eval { ParseParameters(1, {'fred' => [Parse_boolean, 0]}, fred => 'joe') ; }; - like $@, mkErr("Parameter 'fred' must be an int, got 'joe'"), + like $@, mkErr("Parameter 'fred' must be an int, got 'joe'"), "wanted unsigned, got undef"; eval { ParseParameters(1, {'fred' => [Parse_unsigned, 0]}, fred => undef) ; }; - like $@, mkErr("Parameter 'fred' must be an unsigned int, got 'undef'"), + like $@, mkErr("Parameter 'fred' must be an unsigned int, got 'undef'"), "wanted unsigned, got undef"; eval { ParseParameters(1, {'fred' => [Parse_signed, 0]}, fred => undef) ; }; - like $@, mkErr("Parameter 'fred' must be a signed int, got 'undef'"), + like $@, mkErr("Parameter 'fred' must be a signed int, got 'undef'"), "wanted signed, got undef"; eval { ParseParameters(1, {'fred' => [Parse_signed, 0]}, fred => 'abc') ; }; - like $@, mkErr("Parameter 'fred' must be a signed int, got 'abc'"), + like $@, mkErr("Parameter 'fred' must be a signed int, got 'abc'"), "wanted signed, got 'abc'"; eval { ParseParameters(1, {'fred' => [Parse_code, undef]}, fred => 'abc') ; }; - like $@, mkErr("Parameter 'fred' must be a code reference, got 'abc'"), + like $@, mkErr("Parameter 'fred' must be a code reference, got 'abc'"), "wanted code, got 'abc'"; @@ -76,25 +76,25 @@ if $Config{useithreads}; eval { ParseParameters(1, {'fred' => [Parse_writable_scalar, 0]}, fred => 'abc') ; }; - like $@, mkErr("Parameter 'fred' not writable"), + like $@, mkErr("Parameter 'fred' not writable"), "wanted writable, got readonly"; - skip '\\ returns mutable value in 5.19.3', 1 + skip '\\ returns mutable value in 5.19.3', 1 if $] >= 5.019003; eval { ParseParameters(1, {'fred' => [Parse_writable_scalar, 0]}, fred => \'abc') ; }; - like $@, mkErr("Parameter 'fred' not writable"), + like $@, mkErr("Parameter 'fred' not writable"), "wanted writable, got readonly"; } my @xx; eval { ParseParameters(1, {'fred' => [Parse_writable_scalar, 0]}, fred => \@xx) ; }; - like $@, mkErr("Parameter 'fred' not a scalar reference"), + like $@, mkErr("Parameter 'fred' not a scalar reference"), "wanted scalar reference"; local *ABC; eval { ParseParameters(1, {'fred' => [Parse_writable_scalar, 0]}, fred => *ABC) ; }; - like $@, mkErr("Parameter 'fred' not a scalar"), + like $@, mkErr("Parameter 'fred' not a scalar"), "wanted scalar"; eval { ParseParameters(1, {'fred' => [Parse_any, 0]}, fred => 1, fred => 2) ; }; @@ -137,58 +137,58 @@ { my $got1 = ParseParameters(1, {'fred' => [Parse_writable_scalar, undef]}, $got) ; is $got1, $got, "Same object"; - + ok $got1->parsed('fred'), "parsed" ; $xx_ref = $got1->getValue('fred'); - + $$xx_ref = 777 ; is $xx, 777; } - for my $type (Parse_unsigned, Parse_signed, Parse_any) + for my $type (Parse_unsigned, Parse_signed, Parse_any) { my $value = 0; my $got1 ; eval { $got1 = ParseParameters(1, {'fred' => [$type, 1]}, fred => $value) } ; - + ok ! $@; ok $got1->parsed('fred'), "parsed ok" ; is $got1->getValue('fred'), 0; - } + } { # setValue/getValue my $value = 0; my $got1 ; eval { $got1 = ParseParameters(1, {'fred' => [Parse_any, 1]}, fred => $value) } ; - + ok ! $@; ok $got1->parsed('fred'), "parsed ok" ; is $got1->getValue('fred'), 0; $got1->setValue('fred' => undef); - is $got1->getValue('fred'), undef; - } - + is $got1->getValue('fred'), undef; + } + { # twice my $value = 0; - + my $got = IO::Compress::Base::Parameters::new(); - + ok $got->parse({'fred' => [Parse_any, 1]}, fred => $value) ; ok $got->parsed('fred'), "parsed ok" ; is $got->getValue('fred'), 0; - - ok $got->parse({'fred' => [Parse_any, 1]}, fred => undef) ; + + ok $got->parse({'fred' => [Parse_any, 1]}, fred => undef) ; ok $got->parsed('fred'), "parsed ok" ; - is $got->getValue('fred'), undef; - - ok $got->parse({'fred' => [Parse_any, 1]}, fred => 7) ; + is $got->getValue('fred'), undef; + + ok $got->parse({'fred' => [Parse_any, 1]}, fred => 7) ; ok $got->parsed('fred'), "parsed ok" ; - is $got->getValue('fred'), 7; - } + is $got->getValue('fred'), 7; + } } @@ -208,7 +208,7 @@ { title "whatIsInput" ; - my $lex = new LexFile my $out_file ; + my $lex = LexFile->new( my $out_file ); open FH, ">$out_file" ; is whatIsInput(*FH), 'handle', "Match filehandle" ; close FH ; @@ -227,7 +227,7 @@ { title "whatIsOutput" ; - my $lex = new LexFile my $out_file ; + my $lex = LexFile->new( my $out_file ); open FH, ">$out_file" ; is whatIsOutput(*FH), 'handle', "Match filehandle" ; close FH ; @@ -248,34 +248,34 @@ { title "U64" ; - my $x = new U64(); + my $x = U64->new(); is $x->getHigh, 0, " getHigh is 0"; is $x->getLow, 0, " getLow is 0"; ok ! $x->is64bit(), " ! is64bit"; - $x = new U64(1,2); + $x = U64->new(1,2); is $x->getHigh, 1, " getHigh is 1"; is $x->getLow, 2, " getLow is 2"; ok $x->is64bit(), " is64bit"; - $x = new U64(0xFFFFFFFF,2); + $x = U64->new(0xFFFFFFFF,2); is $x->getHigh, 0xFFFFFFFF, " getHigh is 0xFFFFFFFF"; is $x->getLow, 2, " getLow is 2"; ok $x->is64bit(), " is64bit"; - $x = new U64(7, 0xFFFFFFFF); + $x = U64->new(7, 0xFFFFFFFF); is $x->getHigh, 7, " getHigh is 7"; is $x->getLow, 0xFFFFFFFF, " getLow is 0xFFFFFFFF"; ok $x->is64bit(), " is64bit"; - $x = new U64(666); + $x = U64->new(666); is $x->getHigh, 0, " getHigh is 0"; is $x->getLow, 666, " getLow is 666"; ok ! $x->is64bit(), " ! is64bit"; title "U64 - add" ; - $x = new U64(0, 1); + $x = U64->new(0, 1); is $x->getHigh, 0, " getHigh is 0"; is $x->getLow, 1, " getLow is 1"; ok ! $x->is64bit(), " ! is64bit"; @@ -285,7 +285,7 @@ is $x->getLow, 2, " getLow is 2"; ok ! $x->is64bit(), " ! is64bit"; - $x = new U64(0, 0xFFFFFFFE); + $x = U64->new(0, 0xFFFFFFFE); is $x->getHigh, 0, " getHigh is 0"; is $x->getLow, 0xFFFFFFFE, " getLow is 0xFFFFFFFE"; is $x->get32bit(), 0xFFFFFFFE, " get32bit is 0xFFFFFFFE"; @@ -320,8 +320,8 @@ is $x->get64bit(), 0xFFFFFFFF+3, " get64bit is 0x100000002"; ok $x->is64bit(), " is64bit"; - $x = new U64(1, 0xFFFFFFFE); - my $y = new U64(2, 3); + $x = U64->new(1, 0xFFFFFFFE); + my $y = U64->new(2, 3); $x->add($y); is $x->getHigh, 4, " getHigh is 4"; @@ -330,7 +330,7 @@ title "U64 - subtract" ; - $x = new U64(0, 1); + $x = U64->new(0, 1); is $x->getHigh, 0, " getHigh is 0"; is $x->getLow, 1, " getLow is 1"; ok ! $x->is64bit(), " ! is64bit"; @@ -340,7 +340,7 @@ is $x->getLow, 0, " getLow is 0"; ok ! $x->is64bit(), " ! is64bit"; - $x = new U64(1, 0); + $x = U64->new(1, 0); is $x->getHigh, 1, " getHigh is 1"; is $x->getLow, 0, " getLow is 0"; is $x->get32bit(), 0, " get32bit is 0xFFFFFFFE"; @@ -354,16 +354,16 @@ is $x->get64bit(), 0xFFFFFFFF, " get64bit is 0xFFFFFFFF"; ok ! $x->is64bit(), " ! is64bit"; - $x = new U64(2, 2); - $y = new U64(1, 3); + $x = U64->new(2, 2); + $y = U64->new(1, 3); $x->subtract($y); is $x->getHigh, 0, " getHigh is 0"; is $x->getLow, 0xFFFFFFFF, " getLow is 1"; ok ! $x->is64bit(), " ! is64bit"; - $x = new U64(0x01CADCE2, 0x4E815983); - $y = new U64(0x19DB1DE, 0xD53E8000); # NTFS to Unix time delta + $x = U64->new(0x01CADCE2, 0x4E815983); + $y = U64->new(0x19DB1DE, 0xD53E8000); # NTFS to Unix time delta $x->subtract($y); is $x->getHigh, 0x2D2B03, " getHigh is 2D2B03"; @@ -372,17 +372,17 @@ title "U64 - equal" ; - $x = new U64(0, 1); + $x = U64->new(0, 1); is $x->getHigh, 0, " getHigh is 0"; is $x->getLow, 1, " getLow is 1"; ok ! $x->is64bit(), " ! is64bit"; - $y = new U64(0, 1); + $y = U64->new(0, 1); is $y->getHigh, 0, " getHigh is 0"; is $y->getLow, 1, " getLow is 1"; ok ! $y->is64bit(), " ! is64bit"; - my $z = new U64(0, 2); + my $z = U64->new(0, 2); is $z->getHigh, 0, " getHigh is 0"; is $z->getLow, 2, " getLow is 2"; ok ! $z->is64bit(), " ! is64bit"; @@ -391,14 +391,14 @@ ok !$x->equal($z), " ! equal"; title "U64 - clone" ; - $x = new U64(21, 77); + $x = U64->new(21, 77); $z = U64::clone($x); is $z->getHigh, 21, " getHigh is 21"; is $z->getLow, 77, " getLow is 77"; title "U64 - cmp.gt" ; - $x = new U64 1; - $y = new U64 0; + $x = U64->new( 1 ); + $y = U64->new( 0 ); cmp_ok $x->cmp($y), '>', 0, " cmp > 0"; is $x->gt($y), 1, " gt"; cmp_ok $y->cmp($x), '<', 0, " cmp < 0"; diff -Nru perl-5.32.1/cpan/IO-Compress/t/020isize.t perl-5.34.0/cpan/IO-Compress/t/020isize.t --- perl-5.32.1/cpan/IO-Compress/t/020isize.t 2020-12-18 09:57:57.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/020isize.t 2021-01-20 23:04:44.000000000 +0000 @@ -13,8 +13,8 @@ use Test::More ; use CompTestUtils; -BEGIN -{ +BEGIN +{ plan skip_all => "Lengthy Tests Disabled\n" . "set COMPRESS_ZLIB_RUN_ALL to run this test suite" unless defined $ENV{COMPRESS_ZLIB_RUN_ALL} ; @@ -33,7 +33,7 @@ use_ok('IO::Compress::Gzip::Constants'); } -my $compressed ; +my $compressed ; my $expected_crc ; for my $wrap (0 .. 2) @@ -59,7 +59,7 @@ else { $expected_isize = $offset - 1; } - + sub gzipClosure { my $gzip = shift ; @@ -70,7 +70,7 @@ my $buff = 'x' x $inc ; my $left = $max ; - return + return sub { if ($max == 0 && $index == 0) { @@ -113,16 +113,16 @@ }; } - my $gzip = new IO::Compress::Gzip \$compressed, + my $gzip = IO::Compress::Gzip->new( \$compressed, -Append => 0, - -HeaderCRC => 1; + -HeaderCRC => 1 ); ok $gzip, " Created IO::Compress::Gzip object"; - my $gunzip = new IO::Uncompress::Gunzip gzipClosure($gzip, $size), + my $gunzip = IO::Uncompress::Gunzip->new( gzipClosure($gzip, $size), -BlockSize => 1024 * 500 , -Append => 0, - -Strict => 1; + -Strict => 1 ); ok $gunzip, " Created IO::Uncompress::Gunzip object"; @@ -147,12 +147,11 @@ my $gunzip_hdr = $gunzip->getHeaderInfo(); - is $gunzip_hdr->{ISIZE}, $expected_isize, + is $gunzip_hdr->{ISIZE}, $expected_isize, sprintf(" ISIZE is $expected_isize [0x%X]", $expected_isize); - is $gunzip_hdr->{CRC32}, $expected_crc, + is $gunzip_hdr->{CRC32}, $expected_crc, sprintf(" CRC32 is $expected_crc [0x%X]", $expected_crc); $expected_crc = 0 ; } } - diff -Nru perl-5.32.1/cpan/IO-Compress/t/050interop-gzip.t perl-5.34.0/cpan/IO-Compress/t/050interop-gzip.t --- perl-5.32.1/cpan/IO-Compress/t/050interop-gzip.t 2020-12-18 09:57:57.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/050interop-gzip.t 2021-01-20 23:04:44.000000000 +0000 @@ -19,7 +19,7 @@ sub ExternalGzipWorks { - my $lex = new LexFile my $outfile; + my $lex = LexFile->new( my $outfile ); my $content = qq { Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut tempus odio id dolor. Camelus perlus. Larrius in lumen numen. Dolor en quiquum filia @@ -28,7 +28,7 @@ writeWithGzip($outfile, $content) or return 0; - + my $got ; readWithGzip($outfile, $got) or return 0; @@ -46,14 +46,14 @@ { my $file = shift ; - my $lex = new LexFile my $outfile; + my $lex = LexFile->new( my $outfile ); my $comp = "$GZIP -d -c" ; if ( system("$comp $file >$outfile") == 0 ) { $_[0] = readFile($outfile); - return 1 + return 1 } diag "'$comp' failed: \$?=$? \$!=$!"; @@ -71,13 +71,13 @@ my $content = shift ; my $options = shift || ''; - my $lex = new LexFile my $infile; + my $lex = LexFile->new( my $infile ); writeFile($infile, $content); unlink $file ; my $comp = "$GZIP -c $options $infile >$file" ; - return 1 + return 1 if system($comp) == 0 ; diag "'$comp' failed: \$?=$? \$!=$!"; @@ -90,14 +90,14 @@ my $name = $^O =~ /mswin/i ? 'gzip.exe' : 'gzip'; my $split = $^O =~ /mswin/i ? ";" : ":"; - for my $dir (reverse split $split, $ENV{PATH}) + for my $dir (reverse split $split, $ENV{PATH}) { $GZIP = File::Spec->catfile($dir,$name) if -x File::Spec->catfile($dir,$name) } - # Handle spaces in path to gzip - $GZIP = "\"$GZIP\"" if defined $GZIP && $GZIP =~ /\s/; + # Handle spaces in path to gzip + $GZIP = "\"$GZIP\"" if defined $GZIP && $GZIP =~ /\s/; plan(skip_all => "Cannot find $name") if ! $GZIP ; @@ -105,7 +105,7 @@ plan(skip_all => "$name doesn't work as expected") if ! ExternalGzipWorks(); - + # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 @@ -124,7 +124,7 @@ my $file; my $file1; - my $lex = new LexFile $file, $file1; + my $lex = LexFile->new( $file, $file1 ); my $content = qq { Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut tempus odio id dolor. Camelus perlus. Larrius in lumen numen. Dolor en quiquum filia @@ -143,5 +143,3 @@ ok readWithGzip($file1, $got), "readWithGzip ok"; is $got, $content, "got content"; } - - diff -Nru perl-5.32.1/cpan/IO-Compress/t/101truncate-bzip2.t perl-5.34.0/cpan/IO-Compress/t/101truncate-bzip2.t --- perl-5.32.1/cpan/IO-Compress/t/101truncate-bzip2.t 2020-12-18 09:57:58.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/101truncate-bzip2.t 2021-01-20 23:04:44.000000000 +0000 @@ -15,7 +15,7 @@ plan skip_all => "Lengthy Tests Disabled\n" . "set COMPRESS_ZLIB_RUN_ALL or COMPRESS_ZLIB_RUN_MOST to run this test suite" unless defined $ENV{COMPRESS_ZLIB_RUN_ALL} or defined $ENV{COMPRESS_ZLIB_RUN_MOST}; - + # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 diff -Nru perl-5.32.1/cpan/IO-Compress/t/101truncate-deflate.t perl-5.34.0/cpan/IO-Compress/t/101truncate-deflate.t --- perl-5.32.1/cpan/IO-Compress/t/101truncate-deflate.t 2020-12-18 09:57:58.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/101truncate-deflate.t 2021-01-20 23:04:44.000000000 +0000 @@ -15,7 +15,7 @@ plan skip_all => "Lengthy Tests Disabled\n" . "set COMPRESS_ZLIB_RUN_ALL or COMPRESS_ZLIB_RUN_MOST to run this test suite" unless defined $ENV{COMPRESS_ZLIB_RUN_ALL} or defined $ENV{COMPRESS_ZLIB_RUN_MOST}; - + # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 diff -Nru perl-5.32.1/cpan/IO-Compress/t/101truncate-gzip.t perl-5.34.0/cpan/IO-Compress/t/101truncate-gzip.t --- perl-5.32.1/cpan/IO-Compress/t/101truncate-gzip.t 2020-12-18 09:57:58.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/101truncate-gzip.t 2021-01-20 23:04:44.000000000 +0000 @@ -16,7 +16,7 @@ plan skip_all => "Lengthy Tests Disabled\n" . "set COMPRESS_ZLIB_RUN_ALL or COMPRESS_ZLIB_RUN_MOST to run this test suite" unless defined $ENV{COMPRESS_ZLIB_RUN_ALL} or defined $ENV{COMPRESS_ZLIB_RUN_MOST}; - + # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 diff -Nru perl-5.32.1/cpan/IO-Compress/t/101truncate-rawdeflate.t perl-5.34.0/cpan/IO-Compress/t/101truncate-rawdeflate.t --- perl-5.32.1/cpan/IO-Compress/t/101truncate-rawdeflate.t 2020-12-18 09:57:58.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/101truncate-rawdeflate.t 2021-01-20 23:04:44.000000000 +0000 @@ -15,7 +15,7 @@ plan skip_all => "Lengthy Tests Disabled\n" . "set COMPRESS_ZLIB_RUN_ALL or COMPRESS_ZLIB_RUN_MOST to run this test suite" unless defined $ENV{COMPRESS_ZLIB_RUN_ALL} or defined $ENV{COMPRESS_ZLIB_RUN_MOST}; - + # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 @@ -55,22 +55,22 @@ my $Error = getErrorRef($UncompressClass); my $compressed ; - ok( my $x = new IO::Compress::RawDeflate \$compressed); + ok( my $x = IO::Compress::RawDeflate->new( \$compressed ) ); ok $x->write($hello) ; ok $x->close ; - + my $cc = $compressed ; my $gz ; - ok($gz = new $UncompressClass(\$cc, + ok($gz = $UncompressClass->can('new')->( $UncompressClass, \$cc, -Transparent => 0)) or diag "$$Error\n"; my $un; is $gz->read($un, length($hello)), length($hello); ok $gz->close(); is $un, $hello ; - + for my $trans (0 .. 1) { title "Testing $CompressClass, Transparent = $trans"; @@ -82,19 +82,19 @@ ok 1, "Header size is $header_size" ; ok 1, "Trailer size is $trailer_size" ; - + title "Compressed Data Truncation"; foreach my $i (0 .. $blocksize) { - - my $lex = new LexFile my $name ; - + + my $lex = LexFile->new( my $name ); + ok 1, "Length $i" ; my $part = substr($compressed, 0, $i); writeFile($name, $part); - my $gz = new $UncompressClass $name, + my $gz = $UncompressClass->can('new')->( $UncompressClass, $name, -BlockSize => $blocksize, - -Transparent => $trans; + -Transparent => $trans ); if ($trans) { ok $gz; ok ! $gz->error() ; @@ -111,15 +111,15 @@ foreach my $i ($blocksize+1 .. length($compressed)-1) { - - my $lex = new LexFile my $name ; - + + my $lex = LexFile->new( my $name ); + ok 1, "Length $i" ; my $part = substr($compressed, 0, $i); writeFile($name, $part); - ok my $gz = new $UncompressClass $name, + ok my $gz = $UncompressClass->can('new')->( $UncompressClass, $name, -BlockSize => $blocksize, - -Transparent => $trans; + -Transparent => $trans ); my $un ; my $status = 1 ; $status = $gz->read($un) while $status > 0 ; @@ -129,6 +129,5 @@ $gz->close(); } } - -} +} diff -Nru perl-5.32.1/cpan/IO-Compress/t/101truncate-zip.t perl-5.34.0/cpan/IO-Compress/t/101truncate-zip.t --- perl-5.32.1/cpan/IO-Compress/t/101truncate-zip.t 2020-12-18 09:57:58.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/101truncate-zip.t 2021-01-20 23:04:44.000000000 +0000 @@ -16,7 +16,7 @@ plan skip_all => "Lengthy Tests Disabled\n" . "set COMPRESS_ZLIB_RUN_ALL or COMPRESS_ZLIB_RUN_MOST to run this test suite" unless defined $ENV{COMPRESS_ZLIB_RUN_ALL} or defined $ENV{COMPRESS_ZLIB_RUN_MOST}; - + # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 diff -Nru perl-5.32.1/cpan/IO-Compress/t/105oneshot-gzip-only.t perl-5.34.0/cpan/IO-Compress/t/105oneshot-gzip-only.t --- perl-5.32.1/cpan/IO-Compress/t/105oneshot-gzip-only.t 2020-12-18 09:57:58.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/105oneshot-gzip-only.t 2021-01-20 23:04:44.000000000 +0000 @@ -42,11 +42,11 @@ my $got ; ok IO::Compress::Gzip::gzip($in, \$out, %opts), " gzip ok" ; - ok IO::Uncompress::Gunzip::gunzip(\$out, \$got), " gunzip ok" + ok IO::Uncompress::Gunzip::gunzip(\$out, \$got), " gunzip ok" or diag $GunzipError ; is $got, $content, " got expected content" ; - my $gunz = new IO::Uncompress::Gunzip \$out, Strict => 0 + my $gunz = IO::Uncompress::Gunzip->new( \$out, Strict => 0 ) or diag "GunzipError is $IO::Uncompress::Gunzip::GunzipError" ; ok $gunz, " Created IO::Uncompress::Gunzip object"; my $hdr = $gunz->getHeaderInfo(); @@ -57,13 +57,13 @@ ok $gunz->close, " closed ok" ; return $hdr ; - + } { title "Check gzip header default NAME & MTIME settings" ; - my $lex = new LexFile my $file1; + my $lex = LexFile->new( my $file1 ); my $content = "hello "; my $hdr ; @@ -73,7 +73,7 @@ $mtime = (stat($file1))[9]; # make sure that the gzip file isn't created in the same # second as the input file - sleep 3 ; + sleep 3 ; $hdr = gzipGetHeader($file1, $content); is $hdr->{Name}, $file1, " Name is '$file1'"; @@ -83,7 +83,7 @@ writeFile($file1, $content); $mtime = (stat($file1))[9]; - sleep 3 ; + sleep 3 ; $hdr = gzipGetHeader($file1, $content, Name => "abcde"); is $hdr->{Name}, "abcde", " Name is 'abcde'" ; @@ -106,9 +106,9 @@ is $hdr->{Time}, 4321, " Time is 4321"; title "Filehandle doesn't have default Name or Time" ; - my $fh = new IO::File "< $file1" + my $fh = IO::File->new( "< $file1" ) or diag "Cannot open '$file1': $!\n" ; - sleep 3 ; + sleep 3 ; my $before = time ; $hdr = gzipGetHeader($fh, $content); my $after = time ; @@ -131,4 +131,3 @@ } # TODO add more error cases - diff -Nru perl-5.32.1/cpan/IO-Compress/t/105oneshot-zip-bzip2-only.t perl-5.34.0/cpan/IO-Compress/t/105oneshot-zip-bzip2-only.t --- perl-5.32.1/cpan/IO-Compress/t/105oneshot-zip-bzip2-only.t 2020-12-18 09:57:58.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/105oneshot-zip-bzip2-only.t 2021-01-20 23:04:44.000000000 +0000 @@ -18,8 +18,8 @@ if $] < 5.005 ; plan(skip_all => "IO::Compress::Bzip2 not available" ) - unless eval { require IO::Compress::Bzip2; - require IO::Uncompress::Bunzip2; + unless eval { require IO::Compress::Bzip2; + require IO::Uncompress::Bunzip2; 1 } ; @@ -48,11 +48,11 @@ my $got ; ok zip($in, \$out, %opts), " zip ok" ; - ok unzip(\$out, \$got), " unzip ok" + ok unzip(\$out, \$got), " unzip ok" or diag $UnzipError ; is $got, $content, " got expected content" ; - my $gunz = new IO::Uncompress::Unzip \$out, Strict => 0 + my $gunz = IO::Uncompress::Unzip->new( \$out, Strict => 0 ) or diag "UnzipError is $IO::Uncompress::Unzip::UnzipError" ; ok $gunz, " Created IO::Uncompress::Unzip object"; my $hdr = $gunz->getHeaderInfo(); @@ -63,7 +63,7 @@ ok $gunz->close, " closed ok" ; return $hdr ; - + } @@ -79,8 +79,8 @@ { title "Input $input, Stream $stream, Zip64 $zip64, Method $method"; - my $lex1 = new LexFile my $file1; - my $lex2 = new LexFile my $file2; + my $lex1 = LexFile->new( my $file1 ); + my $lex2 = LexFile->new( my $file2 ); my $content = "hello "; my $in ; @@ -95,9 +95,9 @@ } - ok zip($in => $file1 , Method => $method, + ok zip($in => $file1 , Method => $method, Zip64 => $zip64, - Stream => $stream), " zip ok" + Stream => $stream), " zip ok" or diag $ZipError ; my $got ; @@ -106,7 +106,7 @@ is $got, $content, " content ok"; - my $u = new IO::Uncompress::Unzip $file1 + my $u = IO::Uncompress::Unzip->new( $file1 ) or diag $ZipError ; my $hdr = $u->getHeaderInfo(); @@ -133,7 +133,7 @@ my $file1; my $file2; my $zipfile; - my $lex = new LexFile $file1, $file2, $zipfile; + my $lex = LexFile->new( $file1, $file2, $zipfile ); my $content1 = "hello "; writeFile($file1, $content1); @@ -145,9 +145,9 @@ $file2 => $content2, ); - ok zip([$file1, $file2] => $zipfile , Method => $method, + ok zip([$file1, $file2] => $zipfile , Method => $method, Zip64 => $zip64, - Stream => $stream), " zip ok" + Stream => $stream), " zip ok" or diag $ZipError ; for my $file ($file1, $file2) @@ -163,4 +163,3 @@ } # TODO add more error cases - diff -Nru perl-5.32.1/cpan/IO-Compress/t/105oneshot-zip-only.t perl-5.34.0/cpan/IO-Compress/t/105oneshot-zip-only.t --- perl-5.32.1/cpan/IO-Compress/t/105oneshot-zip-only.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/105oneshot-zip-only.t 2021-01-20 23:04:44.000000000 +0000 @@ -24,7 +24,7 @@ $extra = 1 if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 }; - plan tests => 227 + $extra ; + plan tests => 230 + $extra ; #use_ok('IO::Compress::Zip', qw(zip $ZipError :zip_method)) ; use_ok('IO::Compress::Zip', qw(:all)) ; @@ -42,11 +42,11 @@ my $got ; ok zip($in, \$out, %opts), " zip ok" ; - ok unzip(\$out, \$got), " unzip ok" + ok unzip(\$out, \$got), " unzip ok" or diag $UnzipError ; is $got, $content, " got expected content" ; - my $gunz = new IO::Uncompress::Unzip \$out, Strict => 0 + my $gunz = IO::Uncompress::Unzip->new( \$out, Strict => 0 ) or diag "UnzipError is $IO::Uncompress::Unzip::UnzipError" ; ok $gunz, " Created IO::Uncompress::Unzip object"; my $hdr = $gunz->getHeaderInfo(); @@ -57,13 +57,13 @@ ok $gunz->close, " closed ok" ; return $hdr ; - + } { title "Check zip header default NAME & MTIME settings" ; - my $lex = new LexFile my $file1; + my $lex = LexFile->new( my $file1 ); my $content = "hello "; my $hdr ; @@ -73,7 +73,7 @@ $mtime = (stat($file1))[9]; # make sure that the zip file isn't created in the same # second as the input file - sleep 3 ; + sleep 3 ; $hdr = zipGetHeader($file1, $content); is $hdr->{Name}, $file1, " Name is '$file1'"; @@ -83,7 +83,7 @@ writeFile($file1, $content); $mtime = (stat($file1))[9]; - sleep 3 ; + sleep 3 ; $hdr = zipGetHeader($file1, $content, Name => "abcde"); is $hdr->{Name}, "abcde", " Name is 'abcde'" ; @@ -108,9 +108,9 @@ is $hdr->{Time} >> 1 , $useTime >> 1 , " Time is $useTime"; title "Filehandle doesn't have default Name or Time" ; - my $fh = new IO::File "< $file1" + my $fh = IO::File->new( "< $file1" ) or diag "Cannot open '$file1': $!\n" ; - sleep 3 ; + sleep 3 ; my $before = time ; $hdr = zipGetHeader($fh, $content); my $after = time ; @@ -135,7 +135,7 @@ { title "Check CanonicalName & FilterName"; - my $lex = new LexFile my $file1; + my $lex = LexFile->new( my $file1 ); my $content = "hello" ; writeFile($file1, $content); @@ -151,12 +151,12 @@ $hdr = zipGetHeader($file1, $content, FilterName => sub {$_ = "abcde"}); is $hdr->{Name}, "abcde", " Name is 'abcde'" ; - $hdr = zipGetHeader($file1, $content, Name => $abs, + $hdr = zipGetHeader($file1, $content, Name => $abs, CanonicalName => 1, FilterName => sub { s/joe/jim/ }); is $hdr->{Name}, "fred/jim", " Name is 'fred/jim'" ; - $hdr = zipGetHeader($file1, $content, Name => $abs, + $hdr = zipGetHeader($file1, $content, Name => $abs, CanonicalName => 0, FilterName => sub { s/joe/jim/ }); is $hdr->{Name}, File::Spec->catfile("", "fred", "jim"), " Name is '/fred/jim'" ; @@ -222,17 +222,17 @@ title "Stream $stream, Zip64 $zip64, Method $method"; - my $lex = new LexFile my $file1; + my $lex = LexFile->new( my $file1 ); my $content = "hello "; #writeFile($file1, $content); - my $status = zip(\$content => $file1 , - Method => $method, + my $status = zip(\$content => $file1 , + Method => $method, Stream => $stream, Zip64 => $zip64); - ok $status, " zip ok" + ok $status, " zip ok" or diag $ZipError ; my $got ; @@ -241,7 +241,7 @@ is $got, $content, " content ok"; - my $u = new IO::Uncompress::Unzip $file1 + my $u = IO::Uncompress::Unzip->new( $file1 ) or diag $ZipError ; my $hdr = $u->getHeaderInfo(); @@ -266,7 +266,7 @@ my $file1; my $file2; my $zipfile; - my $lex = new LexFile $file1, $file2, $zipfile; + my $lex = LexFile->new( $file1, $file2, $zipfile ); my $content1 = "hello "; writeFile($file1, $content1); @@ -278,9 +278,9 @@ $file2 => $content2, ); - ok zip([$file1, $file2] => $zipfile , Method => $method, + ok zip([$file1, $file2] => $zipfile , Method => $method, Zip64 => $zip64, - Stream => $stream), " zip ok" + Stream => $stream), " zip ok" or diag $ZipError ; for my $file ($file1, $file2) @@ -298,8 +298,8 @@ { title "Regression: ods streaming issue"; - # The file before meta.xml in test.ods is content.xml. - # Issue was triggered because content.xml was stored + # The file before meta.xml in test.ods is content.xml. + # Issue was triggered because content.xml was stored # as streamed and the code to walk the compressed streaming # content assumed that all of the input buffer was consumed # in a single call to "uncompr". @@ -316,9 +316,41 @@ ok unzip($zipfile => \$got, Name => $file), " unzip $file ok" or diag $UnzipError ; - my $meta = readFile("$files/$file"); - is $got, $meta, " content ok"; + my $meta = ' +2018-12-25T11:36:11.4372605432018-12-25T11:36:55.657945697PT54S1LibreOffice/6.0.7.3$Linux_X86_64 LibreOffice_project/00m0$Build-3'; + + is $got, $meta, " content ok"; + } -# TODO add more error cases +{ + title "Regression: odt non-streaming issue"; + # https://github.com/pmqs/IO-Compress/issues/13 + + # Some programs (LibreOffice) mark entries as Streamed (bit 3 of the General Purpose Bit Flags field is set) , + # but still fill out the Compressed Length, Uncompressed Length & CRC32 fields in the local file header + + my $files = "./t/" ; + $files = "./" if $ENV{PERL_CORE} ; + $files .= "files/"; + my $zipfile = "$files/testfile1.odt" ; + my $file = "manifest.rdf"; + + my $got; + + ok unzip($zipfile => \$got, Name => $file), " unzip $file ok" + or diag $UnzipError ; + + my $meta = <<'EOM'; + + + + + + +EOM + is $got, $meta, " content ok"; +} + +# TODO add more error cases diff -Nru perl-5.32.1/cpan/IO-Compress/t/105oneshot-zip-store-only.t perl-5.34.0/cpan/IO-Compress/t/105oneshot-zip-store-only.t --- perl-5.32.1/cpan/IO-Compress/t/105oneshot-zip-store-only.t 2020-12-18 09:57:58.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/105oneshot-zip-store-only.t 2021-01-20 23:04:44.000000000 +0000 @@ -22,8 +22,8 @@ unless defined $ENV{COMPRESS_ZLIB_RUN_ALL} or defined $ENV{COMPRESS_ZLIB_RUN_MOST}; plan(skip_all => "IO::Compress::Bzip2 not available" ) - unless eval { require IO::Compress::Bzip2; - require IO::Uncompress::Bunzip2; + unless eval { require IO::Compress::Bzip2; + require IO::Uncompress::Bunzip2; 1 } ; @@ -86,7 +86,7 @@ ok zip(\$content => \$zipped , Method => ZIP_CM_STORE, Zip64 => $zip64, - Stream => $stream), " zip ok" + Stream => $stream), " zip ok" or diag $ZipError ; my $got ; @@ -99,4 +99,3 @@ } } } - diff -Nru perl-5.32.1/cpan/IO-Compress/t/107multi-zip-only.t perl-5.34.0/cpan/IO-Compress/t/107multi-zip-only.t --- perl-5.32.1/cpan/IO-Compress/t/107multi-zip-only.t 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/107multi-zip-only.t 2021-01-20 23:04:44.000000000 +0000 @@ -49,9 +49,9 @@ my $name = "n1"; -my $lex = new LexFile my $zipfile ; +my $lex = LexFile->new( my $zipfile ); -my $x = new IO::Compress::Zip($zipfile, Name => $name++, AutoClose => 1); +my $x = IO::Compress::Zip->new($zipfile, Name => $name++, AutoClose => 1); isa_ok $x, 'IO::Compress::Zip', ' $x' ; @@ -67,10 +67,10 @@ { open F, ">>$zipfile"; print F "trailing"; - close F; + close F; } -my $u = new IO::Uncompress::Unzip $zipfile, Transparent => 1, MultiStream => 0 +my $u = IO::Uncompress::Unzip->new( $zipfile, Transparent => 1, MultiStream => 0 ) or die "Cannot open $zipfile: $UnzipError"; my @names ; diff -Nru perl-5.32.1/cpan/IO-Compress/t/108anyunc-transparent.t perl-5.34.0/cpan/IO-Compress/t/108anyunc-transparent.t --- perl-5.32.1/cpan/IO-Compress/t/108anyunc-transparent.t 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/108anyunc-transparent.t 2021-01-20 23:04:44.000000000 +0000 @@ -6,7 +6,7 @@ } use lib qw(t t/compress); - + use strict; use warnings; use bytes; @@ -38,7 +38,7 @@ { title "AnyUncompress with Non-compressed data (File $file)" ; - my $lex = new LexFile my $output; + my $lex = LexFile->new( my $output ); my $input ; if ($file) { @@ -52,12 +52,12 @@ my $unc ; my $keep = $buffer ; - $unc = new IO::Uncompress::AnyUncompress $input, -Transparent => 0 ; + $unc = IO::Uncompress::AnyUncompress->new( $input, -Transparent => 0 ); ok ! $unc," no AnyUncompress object when -Transparent => 0" ; is $buffer, $keep ; $buffer = $keep ; - $unc = new IO::Uncompress::AnyUncompress \$buffer, -Transparent => 1 ; + $unc = IO::Uncompress::AnyUncompress->new( \$buffer, -Transparent => 1 ); ok $unc, " AnyUncompress object when -Transparent => 1" ; my $uncomp ; diff -Nru perl-5.32.1/cpan/IO-Compress/t/111const-deflate.t perl-5.34.0/cpan/IO-Compress/t/111const-deflate.t --- perl-5.32.1/cpan/IO-Compress/t/111const-deflate.t 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/111const-deflate.t 2021-01-20 23:04:44.000000000 +0000 @@ -26,75 +26,74 @@ { use Compress::Raw::Zlib ; - + my %all; for my $symbol (@Compress::Raw::Zlib::DEFLATE_CONSTANTS) { eval "defined Compress::Raw::Zlib::$symbol" ; $all{$symbol} = ! $@ ; - } - + } + my $pkg = 1; - - for my $module ( qw( Adapter::Deflate RawDeflate Deflate Gzip Zip )) + + for my $module ( qw( Adapter::Deflate RawDeflate Deflate Gzip Zip )) { - ++ $pkg ; + ++ $pkg ; eval <new( my $file1 ); my @names = ( 'alpha \N{GREEK SMALL LETTER ALPHA}', 'beta \N{GREEK SMALL LETTER BETA}', @@ -48,12 +48,12 @@ 'delta \N{GREEK SMALL LETTER DELTA}' ) ; - my @encoded = map { Encode::encode_utf8($_) } @names; + my @encoded = map { Encode::encode_utf8($_) } @names; my @n = @names; - my $zip = new IO::Compress::Zip $file1, - Name => $names[0], Efs => 1; + my $zip = IO::Compress::Zip->new( $file1, + Name => $names[0], Efs => 1 ); my $content = 'Hello, world!'; ok $zip->print($content), "print"; @@ -66,7 +66,7 @@ ok $zip->close(), "closed"; { - my $u = new IO::Uncompress::Unzip $file1, Efs => 1 + my $u = IO::Uncompress::Unzip->new( $file1, Efs => 1 ) or die "Cannot open $file1: $UnzipError"; my $status; @@ -88,7 +88,7 @@ } { - my $u = new IO::Uncompress::Unzip $file1, Efs => 0 + my $u = IO::Uncompress::Unzip->new( $file1, Efs => 0 ) or die "Cannot open $file1: $UnzipError"; my $status; @@ -107,14 +107,14 @@ or diag "Got " . Dumper(\@efs); is_deeply \@unzip_names, [@names], "Names round tripped" or diag "Got " . Dumper(\@unzip_names); - } + } } { title "Create a simple zip - language encoding flag not set"; - my $lex = new LexFile my $file1; + my $lex = LexFile->new( my $file1 ); my @names = ( 'alpha \N{GREEK SMALL LETTER ALPHA}', 'beta \N{GREEK SMALL LETTER BETA}', @@ -124,8 +124,8 @@ my @n = @names; - my $zip = new IO::Compress::Zip $file1, - Name => $names[0], Efs => 0; + my $zip = IO::Compress::Zip->new( $file1, + Name => $names[0], Efs => 0 ); my $content = 'Hello, world!'; ok $zip->print($content), "print"; @@ -137,7 +137,7 @@ ok $zip->print($content), "print"; ok $zip->close(), "closed"; - my $u = new IO::Uncompress::Unzip $file1, Efs => 0 + my $u = IO::Uncompress::Unzip->new( $file1, Efs => 0 ) or die "Cannot open $file1: $UnzipError"; my $status; @@ -161,19 +161,19 @@ { title "zip: EFS => 0 filename not valid utf8 - language encoding flag not set"; - my $lex = new LexFile my $file1; + my $lex = LexFile->new( my $file1 ); # Invalid UTF8 my $name = "a\xFF\x{100}"; - - my $zip = new IO::Compress::Zip $file1, - Name => $name, Efs => 0 ; + + my $zip = IO::Compress::Zip->new( $file1, + Name => $name, Efs => 0 ); ok $zip->print("abcd"), "print"; ok $zip->close(), "closed"; - my $u = new IO::Uncompress::Unzip $file1 - or die "Cannot open $file1: $UnzipError"; + my $u = IO::Uncompress::Unzip->new( $file1 ) + or die "Cannot open $file1: $UnzipError"; ok $u->getHeaderInfo()->{Name} eq $name, "got bad filename"; } @@ -184,8 +184,8 @@ my $filename = "t/files/bad-efs.zip" ; my $name = "\xF0\xA4\xAD"; - my $u = new IO::Uncompress::Unzip $filename, efs => 0 - or die "Cannot open $filename: $UnzipError"; + my $u = IO::Uncompress::Unzip->new( $filename, efs => 0 ) + or die "Cannot open $filename: $UnzipError"; ok $u->getHeaderInfo()->{Name} eq $name, "got bad filename"; } @@ -195,8 +195,8 @@ my $filename = "t/files/bad-efs.zip" ; my $name = "\xF0\xA4\xAD"; - - eval { my $u = new IO::Uncompress::Unzip $filename, efs => 1 + + eval { my $u = IO::Uncompress::Unzip->new( $filename, efs => 1 ) or die "Cannot open $filename: $UnzipError" }; like $@, qr/Zip Filename not UTF-8/, @@ -207,14 +207,14 @@ { title "EFS => 1 - filename not valid utf8 - catch bad content writing to zip"; - my $lex = new LexFile my $file1; + my $lex = LexFile->new( my $file1 ); # Invalid UTF8 my $name = "a\xFF\x{100}"; - - eval { my $zip = new IO::Compress::Zip $file1, - Name => $name, Efs => 1 } ; - like $@, qr/Wide character in zip filename/, + eval { my $zip = IO::Compress::Zip->new( $file1, + Name => $name, Efs => 1 ) } ; + + like $@, qr/Wide character in zip filename/, " wide characters in zip filename"; } \ No newline at end of file diff -Nru perl-5.32.1/cpan/IO-Compress/t/compress/any.pl perl-5.34.0/cpan/IO-Compress/t/compress/any.pl --- perl-5.32.1/cpan/IO-Compress/t/compress/any.pl 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/compress/any.pl 2021-01-20 23:04:44.000000000 +0000 @@ -1,6 +1,6 @@ use lib 't'; - + use strict; use warnings; use bytes; @@ -41,12 +41,12 @@ my $string = "some text" x 100 ; my $buffer ; - my $x = new $CompressClass(\$buffer) ; + my $x = $CompressClass->can('new')->($CompressClass, \$buffer) ; ok $x, " create $CompressClass object" ; ok $x->write($string), " write to object" ; ok $x->close, " close ok" ; - my $lex = new LexFile my $output; + my $lex = LexFile->new( my $output ); my $input ; if ($file) { @@ -58,16 +58,16 @@ } { - my $unc = new $AnyConstruct $input, Transparent => $trans, + my $unc = $AnyConstruct->can('new')->( $AnyConstruct, $input, Transparent => $trans, RawInflate => 1, @anyUnLz, - Append => 1 ; + Append => 1 ); - ok $unc, " Created $AnyClass object" + ok $unc, " Created $AnyClass object" or print "# $$AnyError\n"; my $uncomp ; 1 while $unc->read($uncomp) > 0 ; - #ok $unc->read($uncomp) > 0 + #ok $unc->read($uncomp) > 0 # or print "# $$AnyError\n"; my $y; is $unc->read($y, 1), 0, " at eof" ; @@ -78,16 +78,16 @@ } { - my $unc = new $AnyConstruct $input, Transparent => $trans, + my $unc = $AnyConstruct->can('new')->( $AnyConstruct, $input, Transparent => $trans, RawInflate => 1, @anyUnLz, - Append => 1 ; + Append => 1 ); - ok $unc, " Created $AnyClass object" + ok $unc, " Created $AnyClass object" or print "# $$AnyError\n"; my $uncomp ; 1 while $unc->read($uncomp, 100) > 0 ; - #ok $unc->read($uncomp) > 0 + #ok $unc->read($uncomp) > 0 # or print "# $$AnyError\n"; my $y; is $unc->read($y, 1), 0, " at eof" ; diff -Nru perl-5.32.1/cpan/IO-Compress/t/compress/anyunc.pl perl-5.34.0/cpan/IO-Compress/t/compress/anyunc.pl --- perl-5.32.1/cpan/IO-Compress/t/compress/anyunc.pl 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/compress/anyunc.pl 2021-01-20 23:04:44.000000000 +0000 @@ -1,6 +1,6 @@ use lib 't'; - + use strict; use warnings; use bytes; @@ -37,12 +37,12 @@ my $string = "some text" x 100 ; my $buffer ; - my $x = new $CompressClass(\$buffer) ; + my $x = $CompressClass->can('new')->( $CompressClass, \$buffer) ; ok $x, " create $CompressClass object" ; ok $x->write($string), " write to object" ; ok $x->close, " close ok" ; - my $lex = new LexFile my $output; + my $lex = LexFile->new( my $output ); my $input ; if ($file) { @@ -54,14 +54,14 @@ } { - my $unc = new $AnyConstruct $input, Transparent => $trans - Append => 1 ; + my $unc = $AnyConstruct->can('new')->( $AnyConstruct, $input, Transparent => $trans + Append => 1 ); - ok $unc, " Created $AnyClass object" + ok $unc, " Created $AnyClass object" or print "# $$AnyError\n"; my $uncomp ; 1 while $unc->read($uncomp) > 0 ; - #ok $unc->read($uncomp) > 0 + #ok $unc->read($uncomp) > 0 # or print "# $$AnyError\n"; my $y; is $unc->read($y, 1), 0, " at eof" ; @@ -72,10 +72,10 @@ } { - my $unc = new $AnyConstruct $input, Transparent => $trans, - Append =>1 ; + my $unc = $AnyConstruct->can('new')->( $AnyConstruct, $input, Transparent => $trans, + Append =>1 ); - ok $unc, " Created $AnyClass object" + ok $unc, " Created $AnyClass object" or print "# $$AnyError\n"; my $uncomp ; 1 while $unc->read($uncomp, 10) > 0 ; diff -Nru perl-5.32.1/cpan/IO-Compress/t/compress/CompTestUtils.pm perl-5.34.0/cpan/IO-Compress/t/compress/CompTestUtils.pm --- perl-5.32.1/cpan/IO-Compress/t/compress/CompTestUtils.pm 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/compress/CompTestUtils.pm 2021-01-20 23:04:44.000000000 +0000 @@ -9,13 +9,13 @@ #use lib qw(t t/compress); use Carp ; -#use Test::More ; +#use Test::More ; sub title { - #diag "" ; + #diag "" ; ok(1, $_[0]) ; #diag "" ; } @@ -26,7 +26,7 @@ } BEGIN { - eval { + eval { require File::Temp; } ; @@ -38,7 +38,7 @@ our ($index); $index = '00000'; - + sub new { my $self = shift ; @@ -72,7 +72,7 @@ $index = '00000'; our ($useTempFile); our ($useTempDir); - + sub new { my $self = shift ; @@ -115,11 +115,11 @@ # autogenerate the name if none supplied $_ = "tmpdir" . $$ . "X" . $index ++ . ".tmp" ; } - foreach (@_) - { + foreach (@_) + { rmtree $_, {verbose => 0, safe => 1} - if -d $_; - mkdir $_, 0777 + if -d $_; + mkdir $_, 0777 } bless [ @_ ], $self ; } @@ -131,10 +131,10 @@ if (! $useTempFile) { my $self = shift ; - foreach (@$self) - { + foreach (@$self) + { rmtree $_, {verbose => 0, safe => 1} - if -d $_ ; + if -d $_ ; } } } @@ -150,15 +150,15 @@ { my $pos = tell($f); seek($f, 0,0); - @strings = <$f> ; + @strings = <$f> ; seek($f, 0, $pos); } else { - open (F, "<$f") + open (F, "<$f") or croak "Cannot open $f: $!\n" ; binmode F; - @strings = ; + @strings = ; close F ; } @@ -175,7 +175,7 @@ { my($filename, @strings) = @_ ; 1 while unlink $filename ; - open (F, ">$filename") + open (F, ">$filename") or croak "Cannot open $filename: $!\n" ; binmode F; foreach (@strings) { @@ -191,10 +191,10 @@ my ($uncomp) = "" ; my $line = "" ; - my $fil = gzopen($filename, "rb") + my $fil = gzopen($filename, "rb") or croak "Cannopt open '$filename': $Compress::Zlib::gzerrno" ; - $uncomp .= $line + $uncomp .= $line while $fil->gzread($line) > 0; $fil->gzclose ; @@ -248,14 +248,14 @@ some text EOM - ok my $x = new IO::Compress::Gzip $name, %opts + ok my $x = IO::Compress::Gzip->new( $name, %opts ) or diag "GzipError is $IO::Compress::Gzip::GzipError" ; ok $x->write($string) ; ok $x->close ; #is GZreadFile($name), $string ; - ok my $gunz = new IO::Uncompress::Gunzip $name, Strict => 0 + ok my $gunz = IO::Uncompress::Gunzip->new( $name, Strict => 0 ) or diag "GunzipError is $IO::Uncompress::Gunzip::GunzipError" ; ok my $hdr = $gunz->getHeaderInfo(); my $uncomp ; @@ -562,12 +562,13 @@ } my $out = ''; - my $o = new IO::Uncompress::AnyUncompress \$data, - Append => 1, - Transparent => 0, + my $o = IO::Uncompress::AnyUncompress->new( \$data, + Append => 1, + Transparent => 0, RawInflate => 1, UnLzma => 1, @opts + ) or croak "Cannot open buffer/file: $AnyUncompressError" ; 1 while $o->read($out) > 0 ; @@ -622,13 +623,14 @@ } my $out = ''; - my $o = new IO::Uncompress::AnyUncompress \$data, - MultiStream => 1, - Append => 1, - Transparent => 0, + my $o = IO::Uncompress::AnyUncompress->new( \$data, + MultiStream => 1, + Append => 1, + Transparent => 0, RawInflate => 1, UnLzma => 1, @opts + ) or croak "Cannot open buffer/file: $AnyUncompressError" ; 1 while $o->read($out) > 0 ; @@ -667,7 +669,7 @@ ); } - my $z = new $class( \$buffer, %params) + my $z = $class->can('new')->( $class, \$buffer, %params) or croak "Cannot create $class object: $$Error"; $z->write($data); $z->close(); @@ -675,7 +677,7 @@ my $unc = getInverse($class); anyUncompress(\$buffer) eq $data or die "bad bad bad"; - my $u = new $unc( \$buffer); + my $u = $unc->can('new')->( $unc, \$buffer); my $info = $u->getHeaderInfo() ; diff -Nru perl-5.32.1/cpan/IO-Compress/t/compress/destroy.pl perl-5.34.0/cpan/IO-Compress/t/compress/destroy.pl --- perl-5.32.1/cpan/IO-Compress/t/compress/destroy.pl 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/compress/destroy.pl 2021-01-20 23:04:44.000000000 +0000 @@ -35,7 +35,7 @@ { # Check that the class destructor will call close - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $hello = < 1 ; + ok my $x = $CompressClass->can('new')->( $CompressClass, $name, -AutoClose => 1 ); ok $x->write($hello) ; } @@ -56,59 +56,59 @@ # Tied filehandle destructor - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $hello = < $name" ; + my $fh = IO::File->new( "> $name" ); { - ok my $x = new $CompressClass $fh, -AutoClose => 1 ; + ok my $x = $CompressClass->can('new')->( $CompressClass, $fh, -AutoClose => 1 ); $x->write($hello) ; } ok anyUncompress($name) eq $hello ; } - + { title "Testing DESTROY doesn't clobber \$! etc "; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $out; my $result; - + { - ok my $z = new $CompressClass($name); + ok my $z = $CompressClass->can('new')->( $CompressClass, $name ); $z->write("abc") ; $! = 22 ; cmp_ok $!, '==', 22, ' $! is 22'; } - + cmp_ok $!, '==', 22, " \$! has not been changed by $CompressClass destructor"; - + { my $uncomp; - ok my $x = new $UncompressClass($name, -Append => 1) ; - + ok my $x = $UncompressClass->can('new')->( $UncompressClass, $name, -Append => 1) ; + my $len ; 1 while ($len = $x->read($result)) > 0 ; - + $! = 22 ; cmp_ok $!, '==', 22, ' $! is 22'; - } - + } + cmp_ok $!, '==', 22, " \$! has not been changed by $UncompressClass destructor"; - + is $result, "abc", " Got uncompressed content ok"; - + } } diff -Nru perl-5.32.1/cpan/IO-Compress/t/compress/encode.pl perl-5.34.0/cpan/IO-Compress/t/compress/encode.pl --- perl-5.32.1/cpan/IO-Compress/t/compress/encode.pl 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/compress/encode.pl 2021-01-20 23:04:44.000000000 +0000 @@ -6,8 +6,8 @@ use Test::More ; use CompTestUtils; -BEGIN -{ +BEGIN +{ plan skip_all => "Encode is not available" if $] < 5.006 ; @@ -15,7 +15,7 @@ plan skip_all => "Encode is not available" if $@ ; - + # use Test::NoWarnings, if available my $extra = 0 ; @@ -34,16 +34,16 @@ my $UnError = getErrorRef($UncompressClass); - my $string = "\x{df}\x{100}\x80"; + my $string = "\x{df}\x{100}\x80"; my $encString = Encode::encode_utf8($string); my $buffer = $encString; #for my $from ( qw(filename filehandle buffer) ) { # my $input ; -# my $lex = new LexFile my $name ; +# my $lex = LexFile->new( my $name ); +# # -# # if ($from eq 'buffer') # { $input = \$buffer } # elsif ($from eq 'filename') @@ -53,14 +53,14 @@ # } # elsif ($from eq 'filehandle') # { -# $input = new IO::File "<$name" ; +# $input = IO::File->new( "<$name" ); # } for my $to ( qw(filehandle buffer)) { title "OO Mode: To $to, Encode by hand"; - my $lex2 = new LexFile my $name2 ; + my $lex2 = LexFile->new( my $name2 ); my $output; my $buffer; @@ -72,29 +72,29 @@ } elsif ($to eq 'filehandle') { - $output = new IO::File ">$name2" ; + $output = IO::File->new( ">$name2" ); } my $out ; - my $cs = new $CompressClass($output, AutoClose =>1); + my $cs = $CompressClass->can('new')->( $CompressClass, $output, AutoClose =>1); $cs->print($encString); $cs->close(); my $input; if ($to eq 'buffer') { $input = \$buffer } - else + else { $input = $name2 ; } - my $ucs = new $UncompressClass($input, Append => 1); + my $ucs = $UncompressClass->can('new')->( $UncompressClass, $input, Append => 1); my $got; 1 while $ucs->read($got) > 0 ; - + is $got, $encString, " Expected output"; - + my $decode = Encode::decode_utf8($got); @@ -108,36 +108,36 @@ title "Catch wide characters"; my $out; - my $cs = new $CompressClass(\$out); + my $cs = $CompressClass->can('new')->( $CompressClass, \$out); my $a = "a\xFF\x{100}"; eval { $cs->syswrite($a) }; - like($@, qr/Wide character in ${CompressClass}::write/, + like($@, qr/Wide character in ${CompressClass}::write/, " wide characters in ${CompressClass}::write"); } - + { title "Unknown encoding"; my $output; - eval { my $cs = new $CompressClass(\$output, Encode => 'fred'); } ; - like($@, qr/${CompressClass}: Encoding 'fred' is not available/, + eval { my $cs = $CompressClass->can('new')->( $CompressClass, \$output, Encode => 'fred'); } ; + like($@, qr/${CompressClass}: Encoding 'fred' is not available/, " Encoding 'fred' is not available"); } - + { title "Encode option"; - + for my $to ( qw(filehandle filename buffer)) { title "Encode: To $to, Encode option"; - my $lex2 = new LexFile my $name2 ; + my $lex2 = LexFile->new( my $name2 ); my $output; my $buffer; if ($to eq 'buffer') - { - $output = \$buffer + { + $output = \$buffer } elsif ($to eq 'filename') { @@ -145,18 +145,18 @@ } elsif ($to eq 'filehandle') { - $output = new IO::File ">$name2" ; + $output = IO::File->new( ">$name2" ); } my $out ; - my $cs = new $CompressClass($output, AutoClose =>1, Encode => 'utf8'); + my $cs = $CompressClass->can('new')->( $CompressClass, $output, AutoClose =>1, Encode => 'utf8'); ok $cs->print($string); ok $cs->close(); my $input; if ($to eq 'buffer') - { - $input = \$buffer + { + $input = \$buffer } elsif ($to eq 'filename') { @@ -164,35 +164,34 @@ } else { - $input = new IO::File "<$name2" ; + $input = IO::File->new( "<$name2" ); } - + { - my $ucs = new $UncompressClass($input, AutoClose =>1, Append => 1); + my $ucs = $UncompressClass->can('new')->( $UncompressClass, $input, AutoClose =>1, Append => 1); my $got; 1 while $ucs->read($got) > 0 ; ok length($got) > 0; is $got, $encString, " Expected output"; - + my $decode = Encode::decode_utf8($got); - + is $decode, $string, " Expected output"; } - - + + # { -# my $ucs = new $UncompressClass($input, Append => 1, Decode => 'utf8'); +# my $ucs = $UncompressClass->can('new')->( $UncompressClass, $input, Append => 1, Decode => 'utf8'); # my $got; # 1 while $ucs->read($got) > 0 ; -# ok length($got) > 0; +# ok length($got) > 0; # is $got, $string, " Expected output"; -# } - } +# } + } } } - -1; +1; diff -Nru perl-5.32.1/cpan/IO-Compress/t/compress/generic.pl perl-5.34.0/cpan/IO-Compress/t/compress/generic.pl --- perl-5.32.1/cpan/IO-Compress/t/compress/generic.pl 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/compress/generic.pl 2021-05-04 06:52:48.000000000 +0000 @@ -9,8 +9,8 @@ use CompTestUtils; our ($UncompressClass); -BEGIN -{ +BEGIN +{ # use Test::NoWarnings, if available my $extra = 0 ; @@ -27,10 +27,10 @@ my $init = shift ; - my $fil = new $UncompressClass $filename, + my $fil = $UncompressClass->can('new')->( $UncompressClass, $filename, -Strict => 0, -Append => 1 - ; + ); my $data = ''; $data = $init if defined $init ; @@ -53,13 +53,13 @@ title "Testing $CompressClass Errors"; # Buffer not writable - eval qq[\$a = new $CompressClass(\\1) ;] ; + eval qq[\$a = $CompressClass->new(\\1) ;] ; like $@, mkEvalErr("^$CompressClass: output buffer is read-only") ; - + my($out, $gz); - + my $x ; - $gz = new $CompressClass(\$x); + $gz = $CompressClass->can('new')->($CompressClass, \$x); foreach my $name (qw(read readline getc)) { @@ -83,20 +83,20 @@ my $out = "" ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); ok ! -e $name, " $name does not exist"; - - $a = new $UncompressClass "$name" ; + + $a = $UncompressClass->can('new')->( $UncompressClass, "$name" ); is $a, undef; my $gc ; - my $guz = new $CompressClass(\$gc); + my $guz = $CompressClass->can('new')->( $CompressClass, \$gc); $guz->write("abc") ; $guz->close(); my $x ; - my $gz = new $UncompressClass(\$gc); + my $gz = $UncompressClass->can('new')->( $UncompressClass, \$gc); foreach my $name (qw(print printf write)) { @@ -114,14 +114,14 @@ my ($a, $x, @x) = ("","","") ; # Buffer not a scalar reference - eval qq[\$a = new $CompressClass \\\@x ;] ; + eval qq[\$a = $CompressClass->new( \\\@x );] ; like $@, mkEvalErr("^$CompressClass: output parameter not a filename, filehandle or scalar ref"); - + # Buffer not a scalar reference - eval qq[\$a = new $UncompressClass \\\@x ;] ; + eval qq[\$a = $UncompressClass->new( \\\@x );] ; like $@, mkEvalErr("^$UncompressClass: input parameter not a filename, filehandle, array ref or scalar ref"); } - + foreach my $Type ( $CompressClass, $UncompressClass) { # Check error handling with IO::Compress::Deflate and IO::Uncompress::Inflate @@ -129,27 +129,27 @@ my ($a, $x, @x) = ("","","") ; # Odd number of parameters - eval qq[\$a = new $Type "abc", -Output ] ; + eval qq[\$a = $Type->new( "abc", -Output ) ] ; like $@, mkEvalErr("^$Type: Expected even number of parameters, got 1"); # Unknown parameter - eval qq[\$a = new $Type "anc", -Fred => 123 ;] ; + eval qq[\$a = $Type->new( "anc", -Fred => 123 );] ; like $@, mkEvalErr("^$Type: unknown key value\\(s\\) Fred"); # no in or out param - eval qq[\$a = new $Type ;] ; + eval qq[\$a = $Type->new();] ; like $@, mkEvalErr("^$Type: Missing (Input|Output) parameter"); - } + } { - # write a very simple compressed file - # and read back + # write a very simple compressed file + # and read back #======================================== - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $hello = <can('new')->( $CompressClass, $name ); is $x->autoflush(1), 0, "autoflush"; is $x->autoflush(1), 1, "autoflush"; ok $x->opened(), "opened"; @@ -171,7 +171,7 @@ { my $uncomp; - ok my $x = new $UncompressClass $name, -Append => 1 ; + ok my $x = $UncompressClass->can('new')->( $UncompressClass, $name, -Append => 1 ); ok $x->opened(), "opened"; my $len ; @@ -187,12 +187,12 @@ } { - # write a very simple compressed file - # and read back + # write a very simple compressed file + # and read back #======================================== - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $hello = <can('new')->( $CompressClass, $name ); is $x->write(''), 0, "Write empty string is ok"; is $x->write(undef), 0, "Write undef is ok"; @@ -211,7 +211,7 @@ { my $uncomp; - my $x = new $UncompressClass $name ; + my $x = $UncompressClass->can('new')->( $UncompressClass, $name ); ok $x, "creates $UncompressClass $name" ; my $data = ''; @@ -225,11 +225,11 @@ { # write a very simple file with using an IO filehandle - # and read back + # and read back #======================================== - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $hello = <$name" ; + my $fh = IO::File->new( ">$name" ); ok $fh, "opened file $name ok"; - my $x = new $CompressClass $fh ; + my $x = $CompressClass->can('new')->( $CompressClass, $fh ); ok $x, " created $CompressClass $fh" ; is $x->fileno(), fileno($fh), "fileno match" ; @@ -254,8 +254,8 @@ my $uncomp; { my $x ; - ok my $fh1 = new IO::File "<$name" ; - ok $x = new $UncompressClass $fh1, -Append => 1 ; + ok my $fh1 = IO::File->new( "<$name" ); + ok $x = $UncompressClass->can('new')->( $UncompressClass, $fh1, -Append => 1 ); ok $x->fileno() == fileno $fh1 ; 1 while $x->read($uncomp) > 0 ; @@ -268,11 +268,11 @@ { # write a very simple file with using a glob filehandle - # and read back + # and read back #======================================== - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); #my $name = "/tmp/fred"; my $hello = <$name" ; - - my $x = new $CompressClass *FH ; + + my $x = $CompressClass->can('new')->( $CompressClass, *FH ); ok $x, " create $CompressClass" ; is $x->fileno(), fileno(*FH), " fileno" ; @@ -299,10 +299,10 @@ my $uncomp; { - title "$UncompressClass: Input from typeglob filehandle, append output"; + title "$UncompressClass: Input from typeglob filehandle, append output"; my $x ; ok open FH, "<$name" ; - ok $x = new $UncompressClass *FH, -Append => 1, Transparent => 0 + ok $x = $UncompressClass->can('new')->( $UncompressClass, *FH, -Append => 1, Transparent => 0 ) or diag $$UnError ; is $x->fileno(), fileno FH, " fileno ok" ; @@ -316,7 +316,7 @@ } { - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); #my $name = "/tmp/fred"; my $hello = <&STDOUT"); my $dummy = fileno SAVEOUT; open STDOUT, ">$name" ; - - my $x = new $CompressClass '-' ; + + my $x = $CompressClass->can('new')->( $CompressClass, '-' ); $x->write($hello); $x->close; @@ -342,17 +342,22 @@ is myGZreadFile($name), $hello, " wrote OK"; #hexDump($name); + SKIP: { - title "Input from stdin via filename '-'"; + title "Input from stdin via filename '-'"; + + # Older versions of Windows can hang on these tests + skip 'Skipping STDIN tests', 5 + if $ENV{IO_COMPRESS_SKIP_STDIN_TESTS}; my $x ; my $uncomp ; my $stdinFileno = fileno(STDIN); # open below doesn't return 1 sometimes on XP - open(SAVEIN, "<&STDIN"); + open(SAVEIN, "<&STDIN"); ok open(STDIN, "<$name"), " redirect STDIN"; my $dummy = fileno SAVEIN; - $x = new $UncompressClass '-', Append => 1, Transparent => 0 + $x = $UncompressClass->can('new')->( $UncompressClass, '-', Append => 1, Transparent => 0 ) or diag $$UnError ; ok $x, " created object" ; is $x->fileno(), $stdinFileno, " fileno ok" ; @@ -360,18 +365,18 @@ 1 while $x->read($uncomp) > 0 ; ok $x->close, " close" ; - open(STDIN, "<&SAVEIN"); + open(STDIN, "<&SAVEIN"); is $uncomp, $hello, " expected output" ; } } { - # write a compressed file to memory - # and read back + # write a compressed file to memory + # and read back #======================================== #my $name = "test.gz" ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $hello = <can('new')->( $CompressClass, \$buffer) ; + ok ! defined $x->autoflush(1) ; ok ! defined $x->autoflush(1) ; ok ! defined $x->fileno() ; @@ -391,7 +396,7 @@ ok $x->write($hello) ; ok $x->flush(); ok $x->close ; - + writeFile($name, $buffer) ; #is anyUncompress(\$buffer), $hello, " any ok"; } @@ -400,7 +405,7 @@ my $uncomp; { my $x ; - ok $x = new $UncompressClass(\$buffer, Append => 1) ; + ok $x = $UncompressClass->can('new')->( $UncompressClass, \$buffer, Append => 1) ; ok ! defined $x->autoflush(1) ; ok ! defined $x->autoflush(1) ; @@ -422,17 +427,17 @@ my $buffer = ''; { my $x ; - $x = new $CompressClass(\$buffer); + $x = $CompressClass->can('new')->( $CompressClass, \$buffer); ok $x, "new $CompressClass" ; ok $x->close, "close ok" ; - + } my $keep = $buffer ; my $uncomp= ''; { my $x ; - ok $x = new $UncompressClass(\$buffer, Append => 1) ; + ok $x = $UncompressClass->can('new')->( $UncompressClass, \$buffer, Append => 1) ; 1 while $x->read($uncomp) > 0 ; @@ -449,7 +454,7 @@ #======================================== - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $hello = <can('new')->( $CompressClass, $name ); ok $x, " created $CompressClass object"; ok $x->write($hello), " write ok" ; @@ -492,7 +497,7 @@ skip "zstd doesn't support trailing data", 11 if $CompressClass =~ /zstd/i ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $hello = <$name" ; + ok $fh = IO::File->new( ">$name" ); print $fh $header ; my $x ; - ok $x = new $CompressClass $fh, - -AutoClose => 0 ; + ok $x = $CompressClass->can('new')->( $CompressClass, $fh, + -AutoClose => 0 ); ok $x->binmode(); ok $x->write($hello) ; @@ -519,12 +524,12 @@ my ($fil, $uncomp) ; my $fh1 ; - ok $fh1 = new IO::File "<$name" ; + ok $fh1 = IO::File->new( "<$name" ); # skip leading junk my $line = <$fh1> ; ok $line eq $header ; - ok my $x = new $UncompressClass $fh1, Append => 1 ; + ok my $x = $UncompressClass->can('new')->( $UncompressClass, $fh1, Append => 1 ); ok $x->binmode(); 1 while $x->read($uncomp) > 0 ; @@ -554,7 +559,7 @@ my $compressed ; { - ok my $x = new $CompressClass(\$compressed); + ok my $x = $CompressClass->can('new')->( $CompressClass, \$compressed); ok $x->write($hello) ; ok $x->close ; @@ -562,7 +567,7 @@ } my $uncomp; - ok my $x = new $UncompressClass(\$compressed, Append => 1) ; + ok my $x = $UncompressClass->can('new')->( $UncompressClass, \$compressed, Append => 1) ; 1 while $x->read($uncomp) > 0 ; ok $uncomp eq $hello ; @@ -574,7 +579,7 @@ # Write # these tests come almost 100% from IO::String - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $io = $CompressClass->new($name); @@ -604,7 +609,7 @@ } my $foo = "1234567890"; - + is $io->syswrite($foo, length($foo)), length($foo), " syswrite ok" ; if ( $] < 5.6 ) { is $io->syswrite($foo, length $foo), length $foo, " syswrite ok" } @@ -643,22 +648,22 @@ EOT - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my %opts = () ; - my $iow = new $CompressClass $name, %opts; - is $iow->input_line_number, undef; + my $iow = $CompressClass->can('new')->( $CompressClass, $name, %opts ); + is $iow->input_line_number, undef; $iow->print($str) ; - is $iow->input_line_number, undef; + is $iow->input_line_number, undef; $iow->close ; my @tmp; my $buf; { - my $io = new $UncompressClass $name ; - - is $., 0; - is $io->input_line_number, 0; + my $io = $UncompressClass->can('new')->( $UncompressClass, $name ); + + is $., 0; + is $io->input_line_number, 0; ok ! $io->eof, "eof"; is $io->tell(), 0, "tell 0" ; #my @lines = <$io>; @@ -667,10 +672,10 @@ or print "# Got " . scalar(@lines) . " lines, expected 6\n" ; is $lines[1], "of a paragraph\n" ; is join('', @lines), $str ; - is $., 6; - is $io->input_line_number, 6; + is $., 6; + is $io->input_line_number, 6; is $io->tell(), length($str) ; - + ok $io->eof; ok ! ( defined($io->getline) || @@ -679,44 +684,44 @@ defined($io->getc) || $io->read($buf, 100) != 0) ; } - - + + { local $/; # slurp mode my $io = $UncompressClass->new($name); - is $., 0, "line 0"; - is $io->input_line_number, 0; + is $., 0, "line 0"; + is $io->input_line_number, 0; ok ! $io->eof, "eof"; my @lines = $io->getlines; - is $., 1, "line 1"; - is $io->input_line_number, 1, "line number 1"; + is $., 1, "line 1"; + is $io->input_line_number, 1, "line number 1"; ok $io->eof, "eof" ; ok @lines == 1 && $lines[0] eq $str; - + $io = $UncompressClass->new($name); ok ! $io->eof; my $line = $io->getline(); ok $line eq $str; ok $io->eof; } - + { local $/ = ""; # paragraph mode my $io = $UncompressClass->new($name); - is $., 0; - is $io->input_line_number, 0; + is $., 0; + is $io->input_line_number, 0; ok ! $io->eof; my @lines = $io->getlines(); - is $., 2; - is $io->input_line_number, 2; + is $., 2; + is $io->input_line_number, 2; ok $io->eof; - ok @lines == 2 + ok @lines == 2 or print "# Got " . scalar(@lines) . " lines, expected 2\n" ; ok $lines[0] eq "This is an example\nof a paragraph\n\n\n" or print "# $lines[0]\n"; ok $lines[1] eq "and a single line.\n\n"; } - + { # Record mode my $reclen = 7 ; @@ -725,15 +730,15 @@ local $/ = \$reclen; my $io = $UncompressClass->new($name); - is $., 0; - is $io->input_line_number, 0; + is $., 0; + is $io->input_line_number, 0; ok ! $io->eof; my @lines = $io->getlines(); - is $., $expected_records; - is $io->input_line_number, $expected_records; + is $., $expected_records; + is $io->input_line_number, $expected_records; ok $io->eof; - is @lines, $expected_records, + is @lines, $expected_records, "Got $expected_records records\n" ; ok $lines[0] eq substr($str, 0, $reclen) or print "# $lines[0]\n"; @@ -751,26 +756,26 @@ push(@lines, $a); $err++ if $. != ++$no; } - + ok $err == 0 ; ok $io->eof; - - is $., 3; - is $io->input_line_number, 3; - ok @lines == 3 + + is $., 3; + is $io->input_line_number, 3; + ok @lines == 3 or print "# Got " . scalar(@lines) . " lines, expected 3\n" ; ok join("-", @lines) eq "This- is- an example\n" . "of a paragraph\n\n\n" . "and a single line.\n\n"; } - - + + # Test read - + { my $io = $UncompressClass->new($name); - + eval { $io->read(1) } ; like $@, mkErr("buffer parameter is read-only"); @@ -781,18 +786,18 @@ is $io->read($buf, 3), 3 ; is $buf, "Thi"; - + is $io->sysread($buf, 3, 2), 3 ; is $buf, "Ths i" or print "# [$buf]\n" ;; ok ! $io->eof; - + $buf = "ab" ; is $io->read($buf, 3, 4), 3 ; is $buf, "ab" . "\x00" x 2 . "s a" or print "# [$buf]\n" ;; ok ! $io->eof; - + # read the rest of the file $buf = ''; my $remain = length($str) - 9; @@ -812,15 +817,15 @@ ok $io->eof; # $io->seek(-4, 2); - # + # # ok ! $io->eof; - # + # # ok read($io, $buf, 20) == 4 ; # ok $buf eq "e.\n\n"; - # + # # ok read($io, $buf, 20) == 0 ; # ok $buf eq ""; - # + # # ok ! $io->eof; } @@ -837,25 +842,25 @@ and a single line. EOT - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); writeFile($name, $str); my @tmp; my $buf; { - my $io = new $UncompressClass $name, -Transparent => 1 ; - + my $io = $UncompressClass->can('new')->( $UncompressClass, $name, -Transparent => 1 ); + isa_ok $io, $UncompressClass ; ok ! $io->eof, "eof"; is $io->tell(), 0, "tell == 0" ; my @lines = $io->getlines(); - is @lines, 6, "got 6 lines"; + is @lines, 6, "got 6 lines"; ok $lines[1] eq "of a paragraph\n" ; ok join('', @lines) eq $str ; - is $., 6; - is $io->input_line_number, 6; + is $., 6; + is $io->input_line_number, 6; ok $io->tell() == length($str) ; - + ok $io->eof; ok ! ( defined($io->getline) || @@ -864,42 +869,42 @@ defined($io->getc) || $io->read($buf, 100) != 0) ; } - - + + { local $/; # slurp mode my $io = $UncompressClass->new($name); ok ! $io->eof; my @lines = $io->getlines; - is $., 1; - is $io->input_line_number, 1; + is $., 1; + is $io->input_line_number, 1; ok $io->eof; ok @lines == 1 && $lines[0] eq $str; - + $io = $UncompressClass->new($name); ok ! $io->eof; my $line = $io->getline; - is $., 1; - is $io->input_line_number, 1; + is $., 1; + is $io->input_line_number, 1; is $line, $str; ok $io->eof; } - + { local $/ = ""; # paragraph mode my $io = $UncompressClass->new($name); ok ! $io->eof; my @lines = $io->getlines; - is $., 2; - is $io->input_line_number, 2; + is $., 2; + is $io->input_line_number, 2; ok $io->eof; - ok @lines == 2 + ok @lines == 2 or print "# expected 2 lines, got " . scalar(@lines) . "\n"; ok $lines[0] eq "This is an example\nof a paragraph\n\n\n" or print "# [$lines[0]]\n" ; ok $lines[1] eq "and a single line.\n\n"; } - + { # Record mode my $reclen = 7 ; @@ -908,15 +913,15 @@ local $/ = \$reclen; my $io = $UncompressClass->new($name); - is $., 0; - is $io->input_line_number, 0; + is $., 0; + is $io->input_line_number, 0; ok ! $io->eof; my @lines = $io->getlines(); - is $., $expected_records; - is $io->input_line_number, $expected_records; + is $., $expected_records; + is $io->input_line_number, $expected_records; ok $io->eof; - is @lines, $expected_records, + is @lines, $expected_records, "Got $expected_records records\n" ; ok $lines[0] eq substr($str, 0, $reclen) or print "# $lines[0]\n"; @@ -934,12 +939,12 @@ push(@lines, $a); $err++ if $. != ++$no; } - - is $., 3; - is $io->input_line_number, 3; + + is $., 3; + is $io->input_line_number, 3; ok $err == 0 ; ok $io->eof; - + ok @lines == 3 ; ok join("-", @lines) eq @@ -947,30 +952,30 @@ "of a paragraph\n\n\n" . "and a single line.\n\n"; } - - + + # Test Read - + { my $io = $UncompressClass->new($name); - + $buf = "abcd"; is $io->read($buf, 0), 0, "Requested 0 bytes" ; is $buf, "", "Buffer empty"; ok $io->read($buf, 3) == 3 ; ok $buf eq "Thi"; - + ok $io->sysread($buf, 3, 2) == 3 ; ok $buf eq "Ths i"; ok ! $io->eof; - + $buf = "ab" ; is $io->read($buf, 3, 4), 3 ; is $buf, "ab" . "\x00" x 2 . "s a" or print "# [$buf]\n" ;; ok ! $io->eof; - + # read the rest of the file $buf = ''; my $remain = length($str) - 9; @@ -990,15 +995,15 @@ ok $io->eof; # $io->seek(-4, 2); - # + # # ok ! $io->eof; - # + # # ok read($io, $buf, 20) == 4 ; # ok $buf eq "e.\n\n"; - # + # # ok read($io, $buf, 20) == 0 ; # ok $buf eq ""; - # + # # ok ! $io->eof; } @@ -1029,24 +1034,24 @@ { title "Read Tests - buf length $bufsize, Transparent $trans, Append $append" ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); if ($trans) { writeFile($name, $str) ; } else { - my $iow = new $CompressClass $name; + my $iow = $CompressClass->can('new')->( $CompressClass, $name ); $iow->print($str) ; $iow->close ; } - - my $io = $UncompressClass->new($name, + + my $io = $UncompressClass->new($name, -Append => $append, -Transparent => $trans); - + my $buf; - + is $io->tell(), 0; if ($append) { @@ -1073,7 +1078,7 @@ my $buffer ; my $buff ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $first = "beginning" ; my $last = "the end" ; @@ -1095,7 +1100,7 @@ $output = \$buffer; } - my $iow = new $CompressClass $output ; + my $iow = $CompressClass->can('new')->( $CompressClass, $output ); $iow->print($first) ; ok $iow->seek(5, SEEK_CUR) ; ok $iow->tell() == length($first)+5; @@ -1121,7 +1126,7 @@ ok myGZreadFile($input) eq $first . "\x00" x 10 . $last ; my $io = $UncompressClass->new($input, Strict => 1); - ok $io->seek(length($first), SEEK_CUR) + ok $io->seek(length($first), SEEK_CUR) or diag $$UnError ; ok ! $io->eof; is $io->tell(), length($first); @@ -1146,9 +1151,9 @@ title "seek error cases" ; my $b ; - my $a = new $CompressClass(\$b) ; + my $a = $CompressClass->can('new')->( $CompressClass, \$b) ; - ok ! $a->error() + ok ! $a->error() or die $a->error() ; eval { $a->seek(-1, 10) ; }; like $@, mkErr("^${CompressClass}::seek: unknown value, 10, for whence parameter"); @@ -1160,7 +1165,7 @@ $a->close ; - my $u = new $UncompressClass(\$b) ; + my $u = $UncompressClass->can('new')->( $UncompressClass, \$b) ; eval { $u->seek(-1, 10) ; }; like $@, mkErr("^${UncompressClass}::seek: unknown value, 10, for whence parameter"); @@ -1171,7 +1176,7 @@ eval { $u->seek(-1, SEEK_CUR) ; }; like $@, mkErr("^${UncompressClass}::seek: cannot seek backwards"); } - + foreach my $fb (qw(filename buffer filehandle)) { foreach my $append (0, 1) @@ -1179,7 +1184,7 @@ { title "$CompressClass -- Append $append, Output to $fb" ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $already = 'already'; my $buffer = $already; @@ -1194,17 +1199,17 @@ } elsif ($fb eq 'filehandle') { - $output = new IO::File ">$name" ; + $output = IO::File->new( ">$name" ); print $output $buffer; } - my $a = new $CompressClass($output, Append => $append) ; + my $a = $CompressClass->can('new')->( $CompressClass, $output, Append => $append) ; ok $a, " Created $CompressClass"; my $string = "appended"; $a->write($string); $a->close ; - my $data ; + my $data ; if ($fb eq 'buffer') { $data = $buffer; @@ -1224,7 +1229,7 @@ my $uncomp; - my $x = new $UncompressClass(\$data, Append => 1) ; + my $x = $UncompressClass->can('new')->( $UncompressClass, \$data, Append => 1) ; ok $x, " created $UncompressClass"; my $len ; @@ -1232,7 +1237,7 @@ $x->close ; is $uncomp, $string, ' Got uncompressed data' ; - + } } } @@ -1243,13 +1248,13 @@ { title "$UncompressClass -- InputLength, read from $type, good data => $good"; - my $compressed ; + my $compressed ; my $string = "some data"; my $appended = "append"; if ($good) { - my $c = new $CompressClass(\$compressed); + my $c = $CompressClass->can('new')->( $CompressClass, \$compressed); $c->write($string); $c->close(); } @@ -1261,7 +1266,7 @@ my $comp_len = length $compressed; $compressed .= $appended; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $input ; writeFile ($name, $compressed); @@ -1275,12 +1280,12 @@ } elsif ($type eq 'filehandle') { - my $fh = new IO::File "<$name" ; + my $fh = IO::File->new( "<$name" ); ok $fh, "opened file $name ok"; $input = $fh ; } - my $x = new $UncompressClass($input, + my $x = $UncompressClass->can('new')->( $UncompressClass, $input, InputLength => $comp_len, Transparent => 1) ; ok $x, " created $UncompressClass"; @@ -1302,20 +1307,20 @@ } - + foreach my $append (0, 1) { title "$UncompressClass -- Append $append" ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $string = "appended"; - my $compressed ; - my $c = new $CompressClass(\$compressed); + my $compressed ; + my $c = $CompressClass->can('new')->( $CompressClass, \$compressed); $c->write($string); $c->close(); - my $x = new $UncompressClass(\$compressed, Append => $append) ; + my $x = $UncompressClass->can('new')->( $UncompressClass, \$compressed, Append => $append) ; ok $x, " created $UncompressClass"; my $already = 'already'; @@ -1334,7 +1339,7 @@ } is $output, $string, ' Got uncompressed data' ; } - + foreach my $file (0, 1) { @@ -1342,7 +1347,7 @@ { title "ungetc, File $file, Transparent $trans" ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $string = 'abcdeABCDE'; my $b ; @@ -1352,7 +1357,7 @@ } else { - my $a = new $CompressClass(\$b) ; + my $a = $CompressClass->can('new')->( $CompressClass, \$b) ; $a->write($string); $a->close ; } @@ -1399,7 +1404,7 @@ ok ! $u->eof(); is $u->read($buff), length($extra) ; is $buff, $extra; - + is $u->read($buff, 1), 0; ok $u->eof() ; @@ -1413,19 +1418,19 @@ { title "write tests - invalid data" ; - #my $lex = new LexFile my $name1 ; + #my $lex = LexFile->new( my $name1 ); my($Answer); #ok ! -e $name1, " File $name1 does not exist"; my @data = ( - [ '{ }', "${CompressClass}::write: input parameter not a filename, filehandle, array ref or scalar ref" ], - [ '[ { } ]', "${CompressClass}::write: input parameter not a filename, filehandle, array ref or scalar ref" ], - [ '[ [ { } ] ]', "${CompressClass}::write: input parameter not a filename, filehandle, array ref or scalar ref" ], - [ '[ "" ]', "${CompressClass}::write: input filename is undef or null string" ], - [ '[ undef ]', "${CompressClass}::write: input filename is undef or null string" ], - [ '[ \$Answer ]',"${CompressClass}::write: input and output buffer are identical" ], - #[ "not readable", 'xx' ], + [ '{ }', "${CompressClass}::write: input parameter not a filename, filehandle, array ref or scalar ref" ], + [ '[ { } ]', "${CompressClass}::write: input parameter not a filename, filehandle, array ref or scalar ref" ], + [ '[ [ { } ] ]', "${CompressClass}::write: input parameter not a filename, filehandle, array ref or scalar ref" ], + [ '[ "" ]', "${CompressClass}::write: input filename is undef or null string" ], + [ '[ undef ]', "${CompressClass}::write: input filename is undef or null string" ], + [ '[ \$Answer ]',"${CompressClass}::write: input and output buffer are identical" ], + #[ "not readable", 'xx' ], # same filehandle twice, 'xx' ) ; @@ -1435,7 +1440,7 @@ title "${CompressClass}::write( $send )"; my($copy); eval "\$copy = $send"; - my $x = new $CompressClass(\$Answer); + my $x = $CompressClass->can('new')->( $CompressClass, \$Answer); ok $x, " Created $CompressClass object"; eval { $x->write($copy) } ; #like $@, "/^$get/", " error - $get"; @@ -1443,8 +1448,8 @@ } # @data = ( - # [ '[ $name1 ]', "input file '$name1' does not exist" ], - # #[ "not readable", 'xx' ], + # [ '[ $name1 ]', "input file '$name1' does not exist" ], + # #[ "not readable", 'xx' ], # # same filehandle twice, 'xx' # ) ; # @@ -1454,14 +1459,14 @@ # title "${CompressClass}::write( $send )"; # my $copy; # eval "\$copy = $send"; - # my $x = new $CompressClass(\$Answer); + # my $x = $CompressClass->can('new')->( $CompressClass, \$Answer); # ok $x, " Created $CompressClass object"; # ok ! $x->write($copy), " write fails" ; # like $$Error, "/^$get/", " error - $get"; # } #exit; - + } @@ -1495,17 +1500,17 @@ # # if (! ref $_[0]) # { - # $_[0] = $to + # $_[0] = $to # if $_[0] eq $from ; - # return ; + # return ; # # } # # if (ref $_[0] eq 'SCALAR') # { - # $_[0] = \$to + # $_[0] = \$to # if defined ${ $_[0] } && ${ $_[0] } eq $from ; - # return ; + # return ; # # } # @@ -1526,7 +1531,7 @@ # my $file1 = "file1" ; # my $file2 = "file2" ; # my $file3 = "file3" ; - # my $lex = new LexFile $file1, $file2, $file3 ; + # my $lex = LexFile->new( $file1, $file2, $file3 ); # # writeFile($file1, "F1"); # writeFile($file2, "F2"); @@ -1564,15 +1569,15 @@ # { # my ($send, $get) = @$data ; # - # my $fh1 = new IO::File "< $file1" ; - # my $fh2 = new IO::File "< $file2" ; - # my $fh3 = new IO::File "< $file3" ; + # my $fh1 = IO::File->new( "< $file1" ); + # my $fh2 = IO::File->new( "< $file2" ); + # my $fh3 = IO::File->new( "< $file3" ); # # title "${CompressClass}::write( $send )"; # my $copy; # eval "\$copy = $send"; # my $Answer ; - # my $x = new $CompressClass(\$Answer); + # my $x = $CompressClass->can('new')->( $CompressClass, \$Answer); # ok $x, " Created $CompressClass object"; # my $len = length $get; # is $x->write($copy), length($get), " write $len bytes"; @@ -1583,7 +1588,7 @@ # # # } - # + # # } } @@ -1599,15 +1604,15 @@ my $appended = "append"; my $string = "some data"; - my $compressed ; + my $compressed ; - my $c = new $CompressClass(\$compressed); + my $c = $CompressClass->can('new')->( $CompressClass, \$compressed); $c->close(); my $comp_len = length $compressed; $compressed .= $appended if $append && $CompressClass !~ /zstd/i; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $input ; writeFile ($name, $compressed); @@ -1621,7 +1626,7 @@ } elsif ($type eq 'filehandle') { - my $fh = new IO::File "<$name" ; + my $fh = IO::File->new( "<$name" ); ok $fh, "opened file $name ok"; $input = $fh ; } @@ -1632,7 +1637,7 @@ # Check that readline returns undef - my $x = new $UncompressClass $input, Transparent => 0 + my $x = $UncompressClass->can('new')->( $UncompressClass, $input, Transparent => 0 ) or diag "$$UnError" ; isa_ok $x, $UncompressClass; @@ -1648,12 +1653,12 @@ # Check that read returns an empty string if ($type eq 'filehandle') { - my $fh = new IO::File "<$name" ; + my $fh = IO::File->new( "<$name" ); ok $fh, "opened file $name ok"; $input = $fh ; } - my $x = new $UncompressClass $input, Transparent => 0 + my $x = $UncompressClass->can('new')->( $UncompressClass, $input, Transparent => 0 ) or diag "$$UnError" ; isa_ok $x, $UncompressClass; @@ -1672,12 +1677,12 @@ if ($type eq 'filehandle') { - my $fh = new IO::File "<$name" ; + my $fh = IO::File->new( "<$name" ); ok $fh, "opened file $name ok"; $input = $fh ; } - my $x = new $UncompressClass $input, Transparent => 0, - Append => 1 + my $x = $UncompressClass->can('new')->( $UncompressClass, $input, Transparent => 0, + Append => 1 ) or diag "$$UnError" ; isa_ok $x, $UncompressClass; @@ -1694,11 +1699,11 @@ if ($type eq 'filehandle') { - my $fh = new IO::File "<$name" ; + my $fh = IO::File->new( "<$name" ); ok $fh, "opened file $name ok"; $input = $fh ; } - my $x = new $UncompressClass($input, Append => 1 ); + my $x = $UncompressClass->can('new')->( $UncompressClass, $input, Append => 1 ); isa_ok $x, $UncompressClass; my $buffer = "123"; @@ -1718,30 +1723,30 @@ my $original = join '', map { chr } 0x00 .. 0xff ; $original .= "data1\r\ndata2\r\ndata3\r\n" ; - - + + title "$UncompressClass -- round trip test"; my $string = $original; - my $lex = new LexFile( my $name, my $compressed) ; + my $lex = LexFile->new( my $name, my $compressed) ; my $input ; writeFile ($name, $original); - my $c = new $CompressClass($compressed); + my $c = $CompressClass->can('new')->( $CompressClass, $compressed); isa_ok $c, $CompressClass; $c->print($string); $c->close(); - my $u = new $UncompressClass $compressed, Transparent => 0 + my $u = $UncompressClass->can('new')->( $UncompressClass, $compressed, Transparent => 0 ) or diag "$$UnError" ; isa_ok $u, $UncompressClass; my $buffer; is $u->read($buffer), length($original), "read bytes"; is $buffer, $original, " round tripped ok"; - - } + + } } 1; diff -Nru perl-5.32.1/cpan/IO-Compress/t/compress/merge.pl perl-5.34.0/cpan/IO-Compress/t/compress/merge.pl --- perl-5.32.1/cpan/IO-Compress/t/compress/merge.pl 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/compress/merge.pl 2021-01-20 23:04:44.000000000 +0000 @@ -3,15 +3,15 @@ use warnings; use bytes; -use Test::More ; +use Test::More ; use CompTestUtils; use Compress::Raw::Zlib 2 ; -BEGIN -{ - plan(skip_all => "Merge needs Zlib 1.2.1 or better - you have Zlib " - . Compress::Raw::Zlib::zlib_version()) +BEGIN +{ + plan(skip_all => "Merge needs Zlib 1.2.1 or better - you have Zlib " + . Compress::Raw::Zlib::zlib_version()) if ZLIB_VERNUM() < 0x1210 ; # use Test::NoWarnings, if available @@ -32,7 +32,7 @@ my $Error = getErrorRef($CompressClass); my $UnError = getErrorRef($UncompressClass); - # Tests + # Tests # destination is a file that doesn't exist -- should work ok unless AnyDeflate # destination isn't compressed at all # destination is compressed but wrong format @@ -43,7 +43,7 @@ { title "Misc error cases"; - eval { new Compress::Raw::Zlib::InflateScan Bufsize => 0} ; + eval { Compress::Raw::Zlib::InflateScan->new( Bufsize => 0 ) } ; like $@, mkErr("^Compress::Raw::Zlib::InflateScan::new: Bufsize must be >= 1, you specified 0"), " catch bufsize == 0"; eval { Compress::Raw::Zlib::inflateScanStream::createDeflateStream(undef, Bufsize => 0) } ; @@ -58,23 +58,23 @@ { if ($to_file) { title "$CompressClass - Merge to filename that isn't writable" } - else + else { title "$CompressClass - Merge to filehandle that isn't writable" } - my $lex = new LexFile my $out_file ; + my $lex = LexFile->new( my $out_file ); # create empty file open F, ">$out_file" ; print F "x"; close F; ok -e $out_file, " file exists" ; ok !-z $out_file, " and is not empty" ; - + # make unwritable is chmod(0444, $out_file), 1, " chmod worked" ; ok -e $out_file, " still exists after chmod" ; SKIP: { - skip "Cannot create non-writable file", 3 + skip "Cannot create non-writable file", 3 if -w $out_file ; ok ! -w $out_file, " chmod made file unwritable" ; @@ -83,10 +83,10 @@ if ($to_file) { $dest = $out_file } else - { $dest = new IO::File "<$out_file" } + { $dest = IO::File->new( "<$out_file" ) } my $gz = $CompressClass->new($dest, Merge => 1) ; - + ok ! $gz, " Did not create $CompressClass object"; ok $$Error, " Got error message" ; @@ -99,7 +99,7 @@ # output is not compressed at all { - my $lex = new LexFile my $out_file ; + my $lex = LexFile->new( my $out_file ); foreach my $to_file ( qw(buffer file handle ) ) { @@ -120,7 +120,7 @@ if ($to_file eq 'handle') { - $buffer = new IO::File "+<$out_file" + $buffer = IO::File->new( "+<$out_file" ) or die "# Cannot open $out_file: $!"; } else @@ -138,7 +138,7 @@ # output is empty { - my $lex = new LexFile my $out_file ; + my $lex = LexFile->new( my $out_file ); foreach my $to_file ( qw(buffer file handle ) ) { @@ -159,7 +159,7 @@ if ($to_file eq 'handle') { - $buffer = new IO::File "+<$out_file" + $buffer = IO::File->new( "+<$out_file" ) or die "# Cannot open $out_file: $!"; } else @@ -182,12 +182,12 @@ { title "$CompressClass - Merge to file that doesn't exist"; - my $lex = new LexFile my $out_file ; - + my $lex = LexFile->new( my $out_file ); + ok ! -e $out_file, " Destination file, '$out_file', does not exist"; - ok my $gz1 = $CompressClass->new($out_file, Merge => 1) - or die "# $CompressClass->new failed: $$Error\n"; + ok my $gz1 = $CompressClass->can('new')->( $CompressClass, $out_file, Merge => 1) + or die "# $CompressClass->new(...) failed: $$Error\n"; #hexDump($buffer); $gz1->write("FGHI"); $gz1->close(); @@ -200,13 +200,13 @@ { - my $lex = new LexFile my $out_file ; + my $lex = LexFile->new( my $out_file ); foreach my $to_file ( qw( buffer file handle ) ) { foreach my $content (undef, '', 'x', 'abcde') { - #next if ! defined $content && $to_file; + #next if ! defined $content && $to_file; my $buffer ; my $disp_content = defined $content ? $content : '' ; @@ -245,10 +245,10 @@ # #} - my $dest = $buffer ; + my $dest = $buffer ; if ($to_file eq 'handle') { - $dest = new IO::File "+<$buffer" ; + $dest = IO::File->new( "+<$buffer" ); } my $gz1 = $CompressClass->new($dest, Merge => 1, AutoClose => 1) @@ -278,7 +278,7 @@ my $buffer ; - my $lex = new LexFile my $out_file ; + my $lex = LexFile->new( my $out_file ); foreach my $to_file (0, 1) { @@ -298,7 +298,7 @@ $buffer = \$x ; title "$TopType to Buffer, content is '$disp_content'"; } - + ok $Func->(\$content, $buffer), " Compress content"; #hexDump($buffer); diff -Nru perl-5.32.1/cpan/IO-Compress/t/compress/multi.pl perl-5.34.0/cpan/IO-Compress/t/compress/multi.pl --- perl-5.32.1/cpan/IO-Compress/t/compress/multi.pl 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/compress/multi.pl 2021-01-20 23:04:44.000000000 +0000 @@ -47,7 +47,7 @@ even more stuff EOM - my $b0length = length $buffers[0]; + my $b0length = length $buffers[0]; my $bufcount = @buffers; { @@ -55,7 +55,7 @@ my $gz ; my $hsize ; my %headers = () ; - + foreach my $fb ( qw( file filehandle buffer ) ) { @@ -71,11 +71,11 @@ Strict => 1, Comment => "this is a comment", ExtraField => ["so" => "me extra"], - HeaderCRC => 1); + HeaderCRC => 1); } - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $output ; if ($fb eq 'buffer') { @@ -84,14 +84,14 @@ } elsif ($fb eq 'filehandle') { - $output = new IO::File ">$name" ; + $output = IO::File->new( ">$name" ); } else { $output = $name ; } - my $x = new $CompressClass($output, AutoClose => 1, %headers); + my $x = $CompressClass->can('new')->($CompressClass, $output, AutoClose => 1, %headers); isa_ok $x, $CompressClass, ' $x' ; foreach my $buffer (@buffs) { @@ -106,12 +106,12 @@ $cc = $output ; if ($fb eq 'filehandle') { - $cc = new IO::File "<$name" ; + $cc = IO::File->new( "<$name" ); } - my @opts = $unc ne $UncompressClass + my @opts = $unc ne $UncompressClass ? (RawInflate => 1) : (); - my $gz = new $unc($cc, + my $gz = $unc->can('new')->($unc, $cc, @opts, Strict => 1, AutoClose => 1, @@ -142,12 +142,12 @@ $cc = $output ; if ($fb eq 'filehandle') { - $cc = new IO::File "<$name" ; + $cc = IO::File->new( "<$name" ); } - my @opts = $unc ne $UncompressClass + my @opts = $unc ne $UncompressClass ? (RawInflate => 1) : (); - my $gz = new $unc($cc, + my $gz = $unc->can('new')->( $unc, $cc, @opts, Strict => 1, AutoClose => 1, @@ -183,12 +183,12 @@ $cc = $output ; if ($fb eq 'filehandle') { - $cc = new IO::File "<$name" ; + $cc = IO::File->new( "<$name" ); } - my @opts = $unc ne $UncompressClass + my @opts = $unc ne $UncompressClass ? (RawInflate => 1) : (); - my $gz = new $unc($cc, + my $gz = $unc->can('new')->( $unc, $cc, @opts, Strict => 1, AutoClose => 1, @@ -210,13 +210,13 @@ $un .= $_; } is $., $lines, " \$. is $lines"; - + ok ! $gz->error(), " ! error()" or diag "Error is " . $gz->error() ; ok $gz->eof(), " eof()"; is $gz->streamCount(), $stream, " streamCount is $stream" or diag "Stream count is " . $gz->streamCount(); - is $un, $buff, " expected output" + is $un, $buff, " expected output" or diag "Stream count is " . $gz->streamCount(); ; #is $gz->tell(), length $buff, " tell is ok"; is $gz->nextStream(), 1, " nextStream ok"; diff -Nru perl-5.32.1/cpan/IO-Compress/t/compress/newtied.pl perl-5.34.0/cpan/IO-Compress/t/compress/newtied.pl --- perl-5.32.1/cpan/IO-Compress/t/compress/newtied.pl 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/compress/newtied.pl 2021-01-20 23:04:44.000000000 +0000 @@ -7,12 +7,12 @@ use CompTestUtils; our ($BadPerl, $UncompressClass); - -BEGIN -{ + +BEGIN +{ plan(skip_all => "Extra Tied Filehandle needs Perl 5.6 or better - you have Perl $]" ) if $] < 5.006 ; - + my $tests ; $BadPerl = ($] >= 5.006 and $] <= 5.008) ; @@ -44,10 +44,10 @@ my $init = shift ; - my $fil = new $UncompressClass $filename, + my $fil = $UncompressClass->can('new')->( $UncompressClass, $filename, -Strict => 1, -Append => 1 - ; + ); my $data ; $data = $init if defined $init ; @@ -75,7 +75,7 @@ # Write # these tests come almost 100% from IO::String - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $io = $CompressClass->new($name); @@ -101,7 +101,7 @@ } my $foo = "1234567890"; - + ok syswrite($io, $foo, length($foo)) == length($foo) ; if ( $] < 5.6 ) { is $io->syswrite($foo, length $foo), length $foo } @@ -142,17 +142,17 @@ EOT - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); - my $iow = new $CompressClass $name ; + my $iow = $CompressClass->can('new')->( $CompressClass, $name ); print $iow $str ; close $iow; my @tmp; my $buf; { - my $io = new $UncompressClass $name ; - + my $io = $UncompressClass->can('new')->( $UncompressClass, $name ); + ok ! $io->eof; ok ! eof $io; is $io->tell(), 0 ; @@ -162,11 +162,11 @@ or print "# Got " . scalar(@lines) . " lines, expected 6\n" ; is $lines[1], "of a paragraph\n" ; is join('', @lines), $str ; - is $., 6; + is $., 6; #print "TELL says " . tell($io) , " should be ${ \length($str) }\n" ; is $io->tell(), length($str) ; is tell($io), length($str) ; - + ok $io->eof; ok eof $io; @@ -176,8 +176,8 @@ defined($io->getc) || read($io, $buf, 100) != 0) ; } - - + + { local $/; # slurp mode my $io = $UncompressClass->new($name); @@ -185,27 +185,27 @@ my @lines = $io->getlines; ok $io->eof; ok @lines == 1 && $lines[0] eq $str; - + $io = $UncompressClass->new($name); ok ! $io->eof; my $line = <$io>; ok $line eq $str; ok $io->eof; } - + { local $/ = ""; # paragraph mode my $io = $UncompressClass->new($name); ok ! $io->eof; my @lines = <$io>; ok $io->eof; - ok @lines == 2 + ok @lines == 2 or print "# Got " . scalar(@lines) . " lines, expected 2\n" ; ok $lines[0] eq "This is an example\nof a paragraph\n\n\n" or print "# $lines[0]\n"; ok $lines[1] eq "and a single line.\n\n"; } - + { local $/ = "is"; my $io = $UncompressClass->new($name); @@ -217,26 +217,26 @@ push(@lines, $_); $err++ if $. != ++$no; } - + ok $err == 0 ; ok $io->eof; - - ok @lines == 3 + + ok @lines == 3 or print "# Got " . scalar(@lines) . " lines, expected 3\n" ; ok join("-", @lines) eq "This- is- an example\n" . "of a paragraph\n\n\n" . "and a single line.\n\n"; } - - + + # Test read - + { my $io = $UncompressClass->new($name); ok $io, "opened ok" ; - + #eval { read($io, $buf, -1); } ; #like $@, mkErr("length parameter is negative"), "xxx $io $UncompressClass $RawInflateError" ; @@ -247,22 +247,22 @@ ok read($io, $buf, 3) == 3 ; ok $buf eq "Thi"; - + ok sysread($io, $buf, 3, 2) == 3 ; ok $buf eq "Ths i" or print "# [$buf]\n" ;; ok ! $io->eof; - + # $io->seek(-4, 2); - # + # # ok ! $io->eof; - # + # # ok read($io, $buf, 20) == 4 ; # ok $buf eq "e.\n\n"; - # + # # ok read($io, $buf, 20) == 0 ; # ok $buf eq ""; - # + # # ok ! $io->eof; } @@ -273,11 +273,11 @@ { title "seek tests" ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $first = "beginning" ; my $last = "the end" ; - my $iow = new $CompressClass $name ; + my $iow = $CompressClass->can('new')->( $CompressClass, $name ); print $iow $first ; ok seek $iow, 10, SEEK_CUR ; is tell($iow), length($first)+10; @@ -305,7 +305,7 @@ { # seek error cases my $b ; - my $a = new $CompressClass(\$b) ; + my $a = $CompressClass->can('new')->( $CompressClass, \$b) ; ok ! $a->error() ; eval { seek($a, -1, 10) ; }; @@ -318,7 +318,7 @@ close $a ; - my $u = new $UncompressClass(\$b) ; + my $u = $UncompressClass->can('new')->( $UncompressClass, \$b) ; eval { seek($u, -1, 10) ; }; like $@, mkErr("seek: unknown value, 10, for whence parameter"); @@ -333,7 +333,7 @@ { title 'fileno' ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $hello = <$name" ; + ok $fh = IO::File->new( ">$name" ); my $x ; - ok $x = new $CompressClass $fh ; + ok $x = $CompressClass->can('new')->( $CompressClass, $fh ); ok $x->fileno() == fileno($fh) ; ok $x->fileno() == fileno($x) ; @@ -356,8 +356,8 @@ my $uncomp; { my $x ; - ok my $fh1 = new IO::File "<$name" ; - ok $x = new $UncompressClass $fh1, -Append => 1 ; + ok my $fh1 = IO::File->new( "<$name" ); + ok $x = $UncompressClass->can('new')->( $UncompressClass, $fh1, -Append => 1 ); ok $x->fileno() == fileno $fh1 ; ok $x->fileno() == fileno $x ; diff -Nru perl-5.32.1/cpan/IO-Compress/t/compress/oneshot.pl perl-5.34.0/cpan/IO-Compress/t/compress/oneshot.pl --- perl-5.32.1/cpan/IO-Compress/t/compress/oneshot.pl 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/compress/oneshot.pl 2021-05-04 06:52:48.000000000 +0000 @@ -73,16 +73,16 @@ my $in ; eval { $a = $Func->($in, \$x) ;} ; - like $@, mkErr("^$TopType: input filename is undef or null string"), + like $@, mkErr("^$TopType: input filename is undef or null string"), ' Input filename undef' ; - $in = ''; + $in = ''; eval { $a = $Func->($in, \$x) ;} ; - like $@, mkErr("^$TopType: input filename is undef or null string"), + like $@, mkErr("^$TopType: input filename is undef or null string"), ' Input filename empty' ; { - my $lex1 = new LexFile my $in ; + my $lex1 = LexFile->new( my $in ); writeFile($in, "abc"); my $out = $in ; eval { $a = $Func->($in, $out) ;} ; @@ -92,7 +92,7 @@ { my $dir ; - my $lex = new LexDir $dir ; + my $lex = LexDir->new( $dir ); my $d = quotemeta $dir; $a = $Func->("$dir", \$x) ; @@ -109,7 +109,7 @@ eval { $a = $Func->(\$in, \$in) ;} ; like $@, mkErr("^$TopType: input and output buffer are identical"), ' Input and Output buffer are the same'; - + SKIP: { # Threaded 5.6.x seems to have a problem comparing filehandles. @@ -118,12 +118,12 @@ skip 'Cannot compare filehandles with threaded $]', 2 if $] >= 5.006 && $] < 5.007 && $Config{useithreads}; - my $lex = new LexFile my $out_file ; + my $lex = LexFile->new( my $out_file ); open OUT, ">$out_file" ; eval { $a = $Func->(\*OUT, \*OUT) ;} ; like $@, mkErr("^$TopType: input and output handle are identical"), ' Input and Output handle are the same'; - + close OUT; is -s $out_file, 0, " File zero length" ; } @@ -137,12 +137,12 @@ eval { $a = $Func->(\$x, $object) ;} ; like $@, mkErr("^$TopType: illegal output parameter"), ' Bad Output Param'; - + # Buffer not a scalar reference eval { $a = $Func->(\$x, \%x) ;} ; like $@, mkErr("^$TopType: illegal output parameter"), ' Bad Output Param'; - + eval { $a = $Func->(\%x, \$x) ;} ; like $@, mkErr("^$TopType: illegal input parameter"), @@ -159,13 +159,13 @@ $a = $Func->($filename, \$x) ; is $a, undef, " $TopType returned undef"; like $$Error, "/^input file '$filename' does not exist\$/", " input File '$filename' does not exist"; - + $filename = '/tmp/abd/abc.def'; ok ! -e $filename, " output File '$filename' does not exist"; $a = $Func->(\$x, $filename) ; is $a, undef, " $TopType returned undef"; like $$Error, ("/^(cannot open file '$filename'|input file '$filename' does not exist):/"), " output File '$filename' does not exist"; - + eval { $a = $Func->(\$x, '') } ; like $$Error, "/Need input fileglob for outout fileglob/", ' Output fileglob with no input fileglob'; @@ -199,7 +199,7 @@ skip '\\ returns mutable value in 5.19.3', 1 if $] >= 5.019003; - + eval { $a = $Func->(\$in, \$out, TrailingData => \"abc") ;} ; like $@, mkErr("^$TopType: Parameter 'TrailingData' not writable"), ' TrailingData output not writable'; @@ -335,7 +335,7 @@ { title "$TopType - From Array Ref to Array Ref content '$disp_content' Append $append" ; - my $lex = new LexFile my $in_file ; + my $lex = LexFile->new( my $in_file ); writeFile($in_file, $buffer); my @output = ('first') ; my @input = ($in_file); @@ -350,7 +350,7 @@ { title "$TopType - From Buff to Filename content '$disp_content' Append $append" ; - my $lex = new LexFile my $out_file ; + my $lex = LexFile->new( my $out_file ); ok ! -e $out_file, " Output file does not exist"; writeFile($out_file, $already); @@ -365,11 +365,11 @@ { title "$TopType - From Buff to Handle content '$disp_content' Append $append" ; - my $lex = new LexFile my $out_file ; + my $lex = LexFile->new( my $out_file ); ok ! -e $out_file, " Output file does not exist"; writeFile($out_file, $already); - my $of = new IO::File ">>$out_file" ; + my $of = IO::File->new( ">>$out_file" ); ok $of, " Created output filehandle" ; ok &$Func(\$buffer, $of, AutoClose => 1, Append => $append), ' Compressed ok' ; @@ -384,7 +384,7 @@ { title "$TopType - From Filename to Filename content '$disp_content' Append $append" ; - my $lex = new LexFile(my $in_file, my $out_file) ; + my $lex = LexFile->new( my $in_file, my $out_file) ; writeFile($in_file, $buffer); ok ! -e $out_file, " Output file does not exist"; @@ -402,12 +402,12 @@ { title "$TopType - From Filename to Handle content '$disp_content' Append $append" ; - my $lex = new LexFile(my $in_file, my $out_file) ; + my $lex = LexFile->new( my $in_file, my $out_file) ; writeFile($in_file, $buffer); ok ! -e $out_file, " Output file does not exist"; writeFile($out_file, $already); - my $out = new IO::File ">>$out_file" ; + my $out = IO::File->new( ">>$out_file" ); ok &$Func($in_file, $out, AutoClose => 1, Append => $append), ' Compressed ok' ; @@ -421,7 +421,7 @@ { title "$TopType - From Filename to Buffer content '$disp_content' Append $append" ; - my $lex = new LexFile(my $in_file, my $out_file) ; + my $lex = LexFile->new( my $in_file, my $out_file) ; writeFile($in_file, $buffer); my $out = $already; @@ -433,18 +433,18 @@ is $got, $buffer, " Uncompressed matches original"; } - + { title "$TopType - From Handle to Filename content '$disp_content' Append $append" ; - my $lex = new LexFile(my $in_file, my $out_file) ; + my $lex = LexFile->new( my $in_file, my $out_file) ; writeFile($in_file, $buffer); - my $in = new IO::File "<$in_file" ; + my $in = IO::File->new( "<$in_file" ); ok ! -e $out_file, " Output file does not exist"; writeFile($out_file, $already); - ok &$Func($in, $out_file, Append => $append), ' Compressed ok' + ok &$Func($in, $out_file, Append => $append), ' Compressed ok' or diag "error is $$Error" ; ok -e $out_file, " Created output file"; @@ -457,13 +457,13 @@ { title "$TopType - From Handle to Handle content '$disp_content' Append $append" ; - my $lex = new LexFile(my $in_file, my $out_file) ; + my $lex = LexFile->new( my $in_file, my $out_file) ; writeFile($in_file, $buffer); - my $in = new IO::File "<$in_file" ; + my $in = IO::File->new( "<$in_file" ); ok ! -e $out_file, " Output file does not exist"; writeFile($out_file, $already); - my $out = new IO::File ">>$out_file" ; + my $out = IO::File->new( ">>$out_file" ); ok &$Func($in, $out, AutoClose => 1, Append => $append), ' Compressed ok' ; @@ -477,9 +477,9 @@ { title "$TopType - From Handle to Buffer content '$disp_content' Append $append" ; - my $lex = new LexFile(my $in_file, my $out_file) ; + my $lex = LexFile->new( my $in_file, my $out_file) ; writeFile($in_file, $buffer); - my $in = new IO::File "<$in_file" ; + my $in = IO::File->new( "<$in_file" ); my $out = $already ; @@ -491,22 +491,28 @@ } + SKIP: { title "$TopType - From stdin (via '-') to Buffer content '$disp_content' Append $append" ; - my $lex = new LexFile(my $in_file, my $out_file) ; + # Older versions of Windows can hang on these tests + skip 'Skipping STDIN tests', 3 + $append + if $ENV{IO_COMPRESS_SKIP_STDIN_TESTS}; + + my $lex = LexFile->new( my $in_file, my $out_file) ; writeFile($in_file, $buffer); - open(SAVEIN, "<&STDIN"); + open(SAVEIN, "<&STDIN"); + my $dummy = fileno SAVEIN ; ok open(STDIN, "<$in_file"), " redirect STDIN"; my $out = $already; - ok &$Func('-', \$out, Append => $append), ' Compressed ok' + ok &$Func('-', \$out, Append => $append), ' Compressed ok' or diag $$Error ; - open(STDIN, "<&SAVEIN"); + open(STDIN, "<&SAVEIN"); my $got = anyUncompress(\$out, $already); $got = undef if ! defined $buffer && $got eq '' ; @@ -528,11 +534,11 @@ my $FuncInverse = getTopFuncRef($TopTypeInverse); my $ErrorInverse = getErrorRef($TopTypeInverse); - my $lex = new LexFile(my $file1, my $file2) ; + my $lex = LexFile->new( my $file1, my $file2) ; writeFile($file1, $OriginalContent1); writeFile($file2, $OriginalContent2); - my $of = new IO::File "<$file1" ; + my $of = IO::File->new( "<$file1" ); ok $of, " Created output filehandle" ; #my @input = ( undef, "", $file2, \undef, \'', \"abcde", $of) ; @@ -574,7 +580,7 @@ $of->open("<$file1") ; my $output ; - ok &$Func(\@input, \$output, MultiStream => $ms, AutoClose => 0), ' Compressed ok' + ok &$Func(\@input, \$output, MultiStream => $ms, AutoClose => 0), ' Compressed ok' or diag $$Error; my $got = anyUncompress([ \$output, MultiStream => $ms ]); @@ -587,7 +593,7 @@ { title "$TopType - From Array Ref to Filename, MultiStream $ms" ; - my $lex = new LexFile( my $file3) ; + my $lex = LexFile->new( my $file3) ; # rewind the filehandle $of->open("<$file1") ; @@ -605,9 +611,9 @@ { title "$TopType - From Array Ref to Filehandle, MultiStream $ms" ; - my $lex = new LexFile(my $file3) ; + my $lex = LexFile->new( my $file3) ; - my $fh3 = new IO::File ">$file3"; + my $fh3 = IO::File->new( ">$file3" ); # rewind the filehandle $of->open("<$file1") ; @@ -667,7 +673,7 @@ title 'Round trip binary data that happens to include \r\n' ; - my $lex = new LexFile(my $file1, my $file2, my $file3) ; + my $lex = LexFile->new( my $file1, my $file2, my $file3) ; my $original = join '', map { chr } 0x00 .. 0xff ; $original .= "data1\r\ndata2\r\ndata3\r\n" ; @@ -678,7 +684,7 @@ ok &$Func($file1 => $file2), ' Compressed ok' ; ok &$FuncInverse($file2 => $file3), ' Uncompressed ok' ; is readFile($file3), $original, " round tripped ok"; - + } foreach my $bit ($UncompressClass, @@ -692,7 +698,7 @@ my $C_Func = getTopFuncRef($CompressClass); - + my $data = "mary had a little lamb" ; my $keep = $data ; my $extra = "after the main event"; @@ -705,7 +711,7 @@ skip "zstd doesn't support trailing data", 9 if $CompressClass =~ /zstd/i ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $input ; my $compressed ; @@ -720,7 +726,7 @@ { writeFile($name, $compressed); - $input = new IO::File "<$name" ; + $input = IO::File->new( "<$name" ); } my $trailing; @@ -735,7 +741,7 @@ } is $trailing . $rest, $extra, " Got trailing data"; - + } } @@ -751,10 +757,10 @@ # # my @inFiles = map { "in$_.tmp" } 1..4; # my @outFiles = map { "out$_.tmp" } 1..4; -# my $lex = new LexFile(@inFiles, @outFiles); +# my $lex = LexFile->new( @inFiles, @outFiles); # # writeFile($_, "data $_") foreach @inFiles ; -# +# # { # title "$TopType - Hash Ref: to filename" ; # @@ -791,8 +797,8 @@ # my @buffer ; # my %hash = ( $inFiles[0] => undef, # $inFiles[1] => undef, -# $inFiles[2] => undef, -# ); +# $inFiles[2] => undef, +# ); # # ok &$Func( \%hash ), ' Compressed ok' ; # @@ -845,10 +851,10 @@ # # my @inFiles = map { "in$_.tmp" } 1..4; # my @outFiles = map { "out$_.tmp" } 1..4; -# my $lex = new LexFile(@inFiles, @outFiles); +# my $lex = LexFile->new( @inFiles, @outFiles); # # writeFile($_, "data $_") foreach @inFiles ; -# +# # # # # if (0) @@ -888,7 +894,7 @@ # # title "$TopType - From Array Ref to Filename" ; # # # # my ($file3) = ("file3"); -# # my $lex = new LexFile($file3) ; +# # my $lex = LexFile->new( $file3) ; # # # # # rewind the filehandle # # $of->open("<$file1") ; @@ -906,9 +912,9 @@ # # title "$TopType - From Array Ref to Filehandle" ; # # # # my ($file3) = ("file3"); -# # my $lex = new LexFile($file3) ; +# # my $lex = LexFile->new( $file3) ; # # -# # my $fh3 = new IO::File ">$file3"; +# # my $fh3 = IO::File->new( ">$file3" ); # # # # # rewind the filehandle # # $of->open("<$file1") ; @@ -936,7 +942,7 @@ my $tmpDir1 ; my $tmpDir2 ; - my $lex = new LexDir($tmpDir1, $tmpDir2) ; + my $lex = LexDir->new($tmpDir1, $tmpDir2) ; my $d1 = quotemeta $tmpDir1 ; my $d2 = quotemeta $tmpDir2 ; @@ -951,7 +957,7 @@ { title "$TopType - From FileGlob to FileGlob files [@$files]" ; - ok &$Func("<$tmpDir1/a*.tmp>" => "<$tmpDir2/a#1.tmp>"), ' Compressed ok' + ok &$Func("<$tmpDir1/a*.tmp>" => "<$tmpDir2/a#1.tmp>"), ' Compressed ok' or diag $$Error ; my @copy = @expected; @@ -967,7 +973,7 @@ title "$TopType - From FileGlob to Array files [@$files]" ; my @buffer = ('first') ; - ok &$Func("<$tmpDir1/a*.tmp>" => \@buffer), ' Compressed ok' + ok &$Func("<$tmpDir1/a*.tmp>" => \@buffer), ' Compressed ok' or diag $$Error ; is shift @buffer, 'first'; @@ -987,8 +993,8 @@ title "$TopType - From FileGlob to Buffer files [@$files], MS $ms" ; my $buffer ; - ok &$Func("<$tmpDir1/a*.tmp>" => \$buffer, - MultiStream => $ms), ' Compressed ok' + ok &$Func("<$tmpDir1/a*.tmp>" => \$buffer, + MultiStream => $ms), ' Compressed ok' or diag $$Error ; #hexDump(\$buffer); @@ -1003,10 +1009,10 @@ { title "$TopType - From FileGlob to Filename files [@$files], MS $ms" ; - my $lex = new LexFile(my $filename) ; - + my $lex = LexFile->new( my $filename) ; + ok &$Func("<$tmpDir1/a*.tmp>" => $filename, - MultiStream => $ms), ' Compressed ok' + MultiStream => $ms), ' Compressed ok' or diag $$Error ; #hexDump(\$buffer); @@ -1021,11 +1027,11 @@ { title "$TopType - From FileGlob to Filehandle files [@$files], MS $ms" ; - my $lex = new LexFile(my $filename) ; - my $fh = new IO::File ">$filename"; - - ok &$Func("<$tmpDir1/a*.tmp>" => $fh, - MultiStream => $ms, AutoClose => 1), ' Compressed ok' + my $lex = LexFile->new( my $filename) ; + my $fh = IO::File->new( ">$filename" ); + + ok &$Func("<$tmpDir1/a*.tmp>" => $fh, + MultiStream => $ms, AutoClose => 1), ' Compressed ok' or diag $$Error ; #hexDump(\$buffer); @@ -1050,7 +1056,7 @@ my $TopType = getTopFuncName($bit); my $buffer = $OriginalContent1; - my $buffer2 = $OriginalContent2; + my $buffer2 = $OriginalContent2; my $keep_orig = $buffer; my $comp = compressBuffer($UncompressClass, $buffer) ; @@ -1096,7 +1102,7 @@ { title "$TopType - From Buff to Filename, Append($append)" ; - my $lex = new LexFile(my $out_file) ; + my $lex = LexFile->new( my $out_file) ; if ($append) { writeFile($out_file, $incumbent) } else @@ -1114,15 +1120,15 @@ { title "$TopType - From Buff to Handle, Append($append)" ; - my $lex = new LexFile(my $out_file) ; + my $lex = LexFile->new( my $out_file) ; my $of ; if ($append) { writeFile($out_file, $incumbent) ; - $of = new IO::File "+< $out_file" ; + $of = IO::File->new( "+< $out_file" ); } else { ok ! -e $out_file, " Output file does not exist" ; - $of = new IO::File "> $out_file" ; + $of = IO::File->new( "> $out_file" ); } isa_ok $of, 'IO::File', ' $of' ; @@ -1138,7 +1144,7 @@ { title "$TopType - From Filename to Filename, Append($append)" ; - my $lex = new LexFile(my $in_file, my $out_file) ; + my $lex = LexFile->new( my $in_file, my $out_file) ; if ($append) { writeFile($out_file, $incumbent) } else @@ -1158,15 +1164,15 @@ { title "$TopType - From Filename to Handle, Append($append)" ; - my $lex = new LexFile(my $in_file, my $out_file) ; + my $lex = LexFile->new( my $in_file, my $out_file) ; my $out ; if ($append) { writeFile($out_file, $incumbent) ; - $out = new IO::File "+< $out_file" ; + $out = IO::File->new( "+< $out_file" ); } else { ok ! -e $out_file, " Output file does not exist" ; - $out = new IO::File "> $out_file" ; + $out = IO::File->new( "> $out_file" ); } isa_ok $out, 'IO::File', ' $out' ; @@ -1184,7 +1190,7 @@ { title "$TopType - From Filename to Buffer, Append($append)" ; - my $lex = new LexFile(my $in_file) ; + my $lex = LexFile->new( my $in_file) ; writeFile($in_file, $comp); my $output ; @@ -1199,14 +1205,14 @@ { title "$TopType - From Handle to Filename, Append($append)" ; - my $lex = new LexFile(my $in_file, my $out_file) ; + my $lex = LexFile->new( my $in_file, my $out_file) ; if ($append) { writeFile($out_file, $incumbent) } else { ok ! -e $out_file, " Output file does not exist" } writeFile($in_file, $comp); - my $in = new IO::File "<$in_file" ; + my $in = IO::File->new( "<$in_file" ); ok &$Func($in, $out_file, Append => $append, @opts), ' Uncompressed ok' ; @@ -1220,20 +1226,20 @@ { title "$TopType - From Handle to Handle, Append($append)" ; - my $lex = new LexFile(my $in_file, my $out_file) ; + my $lex = LexFile->new( my $in_file, my $out_file) ; my $out ; if ($append) { writeFile($out_file, $incumbent) ; - $out = new IO::File "+< $out_file" ; + $out = IO::File->new( "+< $out_file" ); } else { ok ! -e $out_file, " Output file does not exist" ; - $out = new IO::File "> $out_file" ; + $out = IO::File->new( "> $out_file" ); } isa_ok $out, 'IO::File', ' $out' ; writeFile($in_file, $comp); - my $in = new IO::File "<$in_file" ; + my $in = IO::File->new( "<$in_file" ); ok &$Func($in, $out, Append => $append, AutoClose => 1, @opts), ' Uncompressed ok' ; @@ -1247,9 +1253,9 @@ { title "$TopType - From Filename to Buffer, Append($append)" ; - my $lex = new LexFile(my $in_file) ; + my $lex = LexFile->new( my $in_file) ; writeFile($in_file, $comp); - my $in = new IO::File "<$in_file" ; + my $in = IO::File->new( "<$in_file" ); my $output ; $output = $incumbent if $append ; @@ -1260,23 +1266,29 @@ is $output, $expected, " Uncompressed matches original"; } + SKIP: { title "$TopType - From stdin (via '-') to Buffer content, Append($append) " ; - my $lex = new LexFile(my $in_file) ; + # Older versions of Windows can hang on these tests + skip 'Skipping STDIN tests', 4 + if $ENV{IO_COMPRESS_SKIP_STDIN_TESTS}; + + my $lex = LexFile->new( my $in_file) ; writeFile($in_file, $comp); - open(SAVEIN, "<&STDIN"); + open(SAVEIN, "<&STDIN"); + my $dummy = fileno SAVEIN ; ok open(STDIN, "<$in_file"), " redirect STDIN"; my $output ; $output = $incumbent if $append ; - ok &$Func('-', \$output, Append => $append, @opts), ' Uncompressed ok' + ok &$Func('-', \$output, Append => $append, @opts), ' Uncompressed ok' or diag $$Error ; - open(STDIN, "<&SAVEIN"); + open(STDIN, "<&SAVEIN"); is $keep_comp, $comp, " Input buffer not changed" ; is $output, $expected, " Uncompressed matches original"; @@ -1286,14 +1298,14 @@ { title "$TopType - From Handle to Buffer, InputLength" ; - my $lex = new LexFile(my $in_file, my $out_file) ; + my $lex = LexFile->new( my $in_file, my $out_file) ; my $out ; my $expected = $buffer ; my $appended = 'appended'; my $len_appended = length $appended; writeFile($in_file, $comp . $appended . $comp . $appended) ; - my $in = new IO::File "<$in_file" ; + my $in = IO::File->new( "<$in_file" ); ok &$Func($in, \$out, Transparent => 0, InputLength => length $comp, @opts), ' Uncompressed ok' ; @@ -1313,32 +1325,42 @@ is $buff, $appended, " Appended data ok"; } - for my $stdin ('-', *STDIN) # , \*STDIN) + SKIP: { - title "$TopType - From stdin (via $stdin) to Buffer content, InputLength" ; - my $lex = new LexFile my $in_file ; - my $expected = $buffer ; - my $appended = 'appended'; - my $len_appended = length $appended; - writeFile($in_file, $comp . $appended ) ; + # Older versions of Windows can hang on these tests + skip 'Skipping STDIN tests', 12 + if $ENV{IO_COMPRESS_SKIP_STDIN_TESTS}; - open(SAVEIN, "<&STDIN"); - my $dummy = fileno SAVEIN ; - ok open(STDIN, "<$in_file"), " redirect STDIN"; + for my $stdin ('-', *STDIN) # , \*STDIN) + { + title "$TopType - From stdin (via $stdin) to Buffer content, InputLength" ; - my $output ; - ok &$Func($stdin, \$output, Transparent => 0, InputLength => length $comp, @opts), ' Uncompressed ok' - or diag $$Error ; - my $buff ; - is read(STDIN, $buff, $len_appended), $len_appended, " Length of Appended data ok"; + my $lex = LexFile->new( my $in_file ); + my $expected = $buffer ; + my $appended = 'appended'; + my $len_appended = length $appended; + writeFile($in_file, $comp . $appended ) ; - is $output, $expected, " Uncompressed matches original"; - is $buff, $appended, " Appended data ok"; + open(SAVEIN, "<&STDIN"); + my $dummy = fileno SAVEIN ; + ok open(STDIN, "<$in_file"), " redirect STDIN"; - open(STDIN, "<&SAVEIN"); + my $output ; + + ok &$Func($stdin, \$output, Transparent => 0, InputLength => length $comp, @opts), ' Uncompressed ok' + or diag $$Error ; + + my $buff ; + is read(STDIN, $buff, $len_appended), $len_appended, " Length of Appended data ok"; + + is $output, $expected, " Uncompressed matches original"; + is $buff, $appended, " Appended data ok"; + + open(STDIN, "<&SAVEIN"); + } } } @@ -1366,12 +1388,12 @@ my $incumbent = "incumbent data" ; - my $lex = new LexFile(my $file1, my $file2) ; + my $lex = LexFile->new( my $file1, my $file2) ; writeFile($file1, compressBuffer($UncompressClass, $OriginalContent1)); writeFile($file2, compressBuffer($UncompressClass, $OriginalContent2)); - my $of = new IO::File "<$file1" ; + my $of = IO::File->new( "<$file1" ); ok $of, " Created output filehandle" ; #my @input = ($file2, \$undef, \$null, \$comp, $of) ; @@ -1393,7 +1415,7 @@ { title "$TopType - From ArrayRef to Filename" ; - my $lex = new LexFile my $output; + my $lex = LexFile->new( my $output ); $of->open("<$file1") ; ok &$Func(\@input, $output, AutoClose => 0, @opts), ' UnCompressed ok' ; @@ -1404,8 +1426,8 @@ { title "$TopType - From ArrayRef to Filehandle" ; - my $lex = new LexFile my $output; - my $fh = new IO::File ">$output" ; + my $lex = LexFile->new( my $output ); + my $fh = IO::File->new( ">$output" ); $of->open("<$file1") ; ok &$Func(\@input, $fh, AutoClose => 0, @opts), ' UnCompressed ok' ; @@ -1422,8 +1444,8 @@ ok &$Func(\@input, \@output, AutoClose => 0, @opts), ' UnCompressed ok' ; is_deeply \@input, \@keep, " Input array not changed" ; - is_deeply [map { defined $$_ ? $$_ : "" } @output], - ['first', @expected], + is_deeply [map { defined $$_ ? $$_ : "" } @output], + ['first', @expected], " Got Expected uncompressed data"; } @@ -1441,7 +1463,7 @@ my $tmpDir1 ; my $tmpDir2 ; - my $lex = new LexDir($tmpDir1, $tmpDir2) ; + my $lex = LexDir->new($tmpDir1, $tmpDir2) ; my $d1 = quotemeta $tmpDir1 ; my $d2 = quotemeta $tmpDir2 ; @@ -1460,7 +1482,7 @@ { title "$TopType - From FileGlob to FileGlob" ; - ok &$Func("<$tmpDir1/a*.tmp>" => "<$tmpDir2/a#1.tmp>", @opts), ' UnCompressed ok' + ok &$Func("<$tmpDir1/a*.tmp>" => "<$tmpDir2/a#1.tmp>", @opts), ' UnCompressed ok' or diag $$Error ; my @copy = @expected; @@ -1476,7 +1498,7 @@ title "$TopType - From FileGlob to Arrayref" ; my @output = (\'first'); - ok &$Func("<$tmpDir1/a*.tmp>" => \@output, @opts), ' UnCompressed ok' + ok &$Func("<$tmpDir1/a*.tmp>" => \@output, @opts), ' UnCompressed ok' or diag $$Error ; my @copy = ('first', @expected); @@ -1492,7 +1514,7 @@ title "$TopType - From FileGlob to Buffer" ; my $output ; - ok &$Func("<$tmpDir1/a*.tmp>" => \$output, @opts), ' UnCompressed ok' + ok &$Func("<$tmpDir1/a*.tmp>" => \$output, @opts), ' UnCompressed ok' or diag $$Error ; is $output, join('', @expected), " got expected uncompressed data"; @@ -1501,9 +1523,9 @@ { title "$TopType - From FileGlob to Filename" ; - my $lex = new LexFile my $output ; + my $lex = LexFile->new( my $output ); ok ! -e $output, " $output does not exist" ; - ok &$Func("<$tmpDir1/a*.tmp>" => $output, @opts), ' UnCompressed ok' + ok &$Func("<$tmpDir1/a*.tmp>" => $output, @opts), ' UnCompressed ok' or diag $$Error ; ok -e $output, " $output does exist" ; @@ -1513,9 +1535,9 @@ { title "$TopType - From FileGlob to Filehandle" ; - my $lex = new LexFile my $output ; - my $fh = new IO::File ">$output" ; - ok &$Func("<$tmpDir1/a*.tmp>" => $fh, AutoClose => 1, @opts), ' UnCompressed ok' + my $lex = LexFile->new( my $output ); + my $fh = IO::File->new( ">$output" ); + ok &$Func("<$tmpDir1/a*.tmp>" => $fh, AutoClose => 1, @opts), ' UnCompressed ok' or diag $$Error ; ok -e $output, " $output does exist" ; @@ -1534,7 +1556,7 @@ title "More write tests" ; - my $lex = new LexFile(my $file1, my $file2, my $file3) ; + my $lex = LexFile->new( my $file1, my $file2, my $file3) ; writeFile($file1, "F1"); writeFile($file2, "F2"); @@ -1551,9 +1573,9 @@ # { # my ($send, $get) = @$data ; # -# my $fh1 = new IO::File "< $file1" ; -# my $fh2 = new IO::File "< $file2" ; -# my $fh3 = new IO::File "< $file3" ; +# my $fh1 = IO::File->new( "< $file1" ); +# my $fh2 = IO::File->new( "< $file2" ); +# my $fh3 = IO::File->new( "< $file3" ); # # title "$send"; # my ($copy); @@ -1587,9 +1609,9 @@ { my ($send, $get) = @$data ; - my $fh1 = new IO::File "< $file1" ; - my $fh2 = new IO::File "< $file2" ; - my $fh3 = new IO::File "< $file3" ; + my $fh1 = IO::File->new( "< $file1" ); + my $fh2 = IO::File->new( "< $file2" ); + my $fh3 = IO::File->new( "< $file3" ); title "$send"; my($copy); @@ -1604,8 +1626,8 @@ } @data = ( - '[""]', - '[undef]', + '[""]', + '[undef]', ) ; @@ -1616,7 +1638,7 @@ eval "\$copy = $send"; my $Answer ; eval { &$Func($copy, \$Answer) } ; - like $@, mkErr("^$TopFuncName: input filename is undef or null string"), + like $@, mkErr("^$TopFuncName: input filename is undef or null string"), " got error message"; } @@ -1624,11 +1646,11 @@ { - # check setting $\ + # check setting $\ my $CompFunc = getTopFuncRef($CompressClass); my $UncompFunc = getTopFuncRef($UncompressClass); - my $lex = new LexFile my $file ; + my $lex = LexFile->new( my $file ); local $\ = "\n" ; my $input = "hello world"; @@ -1647,6 +1669,7 @@ skip "open filehandle to buffer not supported in Perl $]", 7 if $] < 5.008 ; + my $CompFunc = getTopFuncRef($CompressClass); my $UncompFunc = getTopFuncRef($UncompressClass); @@ -1664,7 +1687,7 @@ is $output, $input, "round trip ok" ; } - + } # TODO add more error cases diff -Nru perl-5.32.1/cpan/IO-Compress/t/compress/prime.pl perl-5.34.0/cpan/IO-Compress/t/compress/prime.pl --- perl-5.32.1/cpan/IO-Compress/t/compress/prime.pl 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/compress/prime.pl 2021-01-20 23:04:44.000000000 +0000 @@ -13,7 +13,7 @@ plan skip_all => "Lengthy Tests Disabled\n" . "set COMPRESS_ZLIB_RUN_ALL or COMPRESS_ZLIB_RUN_MOST to run this test suite" unless defined $ENV{COMPRESS_ZLIB_RUN_ALL} or defined $ENV{COMPRESS_ZLIB_RUN_MOST}; - + # use Test::NoWarnings, if available $extra = 0 ; $extra = 1 @@ -54,11 +54,11 @@ for my $useBuf (0 .. 1) { print "#\n# BlockSize $blocksize, Length $i, Buffer $useBuf\n#\n" ; - my $lex = new LexFile my $name ; - + my $lex = LexFile->new( my $name ); + my $prime = substr($compressed, 0, $i); my $rest = substr($compressed, $i); - + my $start ; if ($useBuf) { $start = \$rest ; @@ -68,20 +68,20 @@ writeFile($name, $rest); } - #my $gz = new $UncompressClass $name, - my $gz = new $UncompressClass $start, + #my $gz = $UncompressClass->can('new')->( $UncompressClass, $name, + my $gz = $UncompressClass->can('new')->( $UncompressClass, $start, -Append => 1, -BlockSize => $blocksize, -Prime => $prime, -Transparent => 0 - ; + ); ok $gz; ok ! $gz->error() ; my $un ; my $status = 1 ; $status = $gz->read($un) while $status > 0 ; is $status, 0 ; - ok ! $gz->error() + ok ! $gz->error() or print "Error is '" . $gz->error() . "'\n"; is $un, $hello ; ok $gz->eof() ; @@ -90,5 +90,5 @@ } } } - + 1; diff -Nru perl-5.32.1/cpan/IO-Compress/t/compress/tied.pl perl-5.34.0/cpan/IO-Compress/t/compress/tied.pl --- perl-5.32.1/cpan/IO-Compress/t/compress/tied.pl 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/compress/tied.pl 2021-01-20 23:04:44.000000000 +0000 @@ -8,9 +8,9 @@ use CompTestUtils; our ($BadPerl, $UncompressClass); - -BEGIN -{ + +BEGIN +{ plan(skip_all => "Tied Filehandle needs Perl 5.005 or better" ) if $] < 5.005 ; @@ -32,10 +32,10 @@ plan tests => $tests + $extra ; } - - + + use IO::Handle qw(SEEK_SET SEEK_CUR SEEK_END); - + sub myGZreadFile @@ -44,10 +44,10 @@ my $init = shift ; - my $fil = new $UncompressClass $filename, + my $fil = $UncompressClass->can('new')->( $UncompressClass, $filename, -Strict => 1, -Append => 1 - ; + ); my $data ; $data = $init if defined $init ; @@ -71,9 +71,9 @@ title "Testing $CompressClass"; - + my $x ; - my $gz = new $CompressClass(\$x); + my $gz = $CompressClass->can('new')->( $CompressClass, \$x); my $buff ; @@ -95,12 +95,12 @@ title "Testing $UncompressClass"; my $gc ; - my $guz = new $CompressClass(\$gc); + my $guz = $CompressClass->can('new')->( $CompressClass, \$gc); $guz->write("abc") ; $guz->close(); my $x ; - my $gz = new $UncompressClass(\$gc); + my $gz = $UncompressClass->can('new')->( $UncompressClass, \$gc); my $buff ; @@ -125,7 +125,7 @@ # Write # these tests come almost 100% from IO::String - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $io = $CompressClass->new($name); @@ -148,7 +148,7 @@ } my $foo = "1234567890"; - + ok syswrite($io, $foo, length($foo)) == length($foo) ; if ( $] < 5.6 ) { is $io->syswrite($foo, length $foo), length $foo } @@ -188,17 +188,17 @@ EOT - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); - my $iow = new $CompressClass $name ; + my $iow = $CompressClass->can('new')->( $CompressClass, $name ); print $iow $str ; close $iow; my @tmp; my $buf; { - my $io = new $UncompressClass $name ; - + my $io = $UncompressClass->can('new')->( $UncompressClass, $name ); + ok ! $io->eof, " Not EOF"; is $io->tell(), 0, " Tell is 0" ; my @lines = <$io>; @@ -206,9 +206,9 @@ or print "# Got " . scalar(@lines) . " lines, expected 6\n" ; is $lines[1], "of a paragraph\n" ; is join('', @lines), $str ; - is $., 6; + is $., 6; is $io->tell(), length($str) ; - + ok $io->eof; ok ! ( defined($io->getline) || @@ -217,8 +217,8 @@ defined($io->getc) || read($io, $buf, 100) != 0) ; } - - + + { local $/; # slurp mode my $io = $UncompressClass->new($name); @@ -226,27 +226,27 @@ my @lines = $io->getlines; ok $io->eof; ok @lines == 1 && $lines[0] eq $str; - + $io = $UncompressClass->new($name); ok ! $io->eof; my $line = <$io>; ok $line eq $str; ok $io->eof; } - + { local $/ = ""; # paragraph mode my $io = $UncompressClass->new($name); ok ! $io->eof; my @lines = <$io>; ok $io->eof; - ok @lines == 2 + ok @lines == 2 or print "# Got " . scalar(@lines) . " lines, expected 2\n" ; ok $lines[0] eq "This is an example\nof a paragraph\n\n\n" or print "# $lines[0]\n"; ok $lines[1] eq "and a single line.\n\n"; } - + { local $/ = "is"; my $io = $UncompressClass->new($name); @@ -258,24 +258,24 @@ push(@lines, $_); $err++ if $. != ++$no; } - + ok $err == 0 ; ok $io->eof; - - ok @lines == 3 + + ok @lines == 3 or print "# Got " . scalar(@lines) . " lines, expected 3\n" ; ok join("-", @lines) eq "This- is- an example\n" . "of a paragraph\n\n\n" . "and a single line.\n\n"; } - - + + # Test read - + { my $io = $UncompressClass->new($name); - + if (! $BadPerl) { eval { read($io, $buf, -1) } ; @@ -286,22 +286,22 @@ ok read($io, $buf, 3) == 3 ; ok $buf eq "Thi"; - + ok sysread($io, $buf, 3, 2) == 3 ; ok $buf eq "Ths i" or print "# [$buf]\n" ;; ok ! $io->eof; - + # $io->seek(-4, 2); - # + # # ok ! $io->eof; - # + # # ok read($io, $buf, 20) == 4 ; # ok $buf eq "e.\n\n"; - # + # # ok read($io, $buf, 20) == 0 ; # ok $buf eq ""; - # + # # ok ! $io->eof; } @@ -319,24 +319,24 @@ EOT - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); writeFile($name, $str); my @tmp; my $buf; { - my $io = new $UncompressClass $name, -Transparent => 1 ; - + my $io = $UncompressClass->can('new')->( $UncompressClass, $name, -Transparent => 1 ); + ok defined $io; ok ! $io->eof; ok $io->tell() == 0 ; my @lines = <$io>; - ok @lines == 6; + ok @lines == 6; ok $lines[1] eq "of a paragraph\n" ; ok join('', @lines) eq $str ; - ok $. == 6; + ok $. == 6; ok $io->tell() == length($str) ; - + ok $io->eof; ok ! ( defined($io->getline) || @@ -345,8 +345,8 @@ defined($io->getc) || read($io, $buf, 100) != 0) ; } - - + + { local $/; # slurp mode my $io = $UncompressClass->new($name); @@ -354,27 +354,27 @@ my @lines = $io->getlines; ok $io->eof; ok @lines == 1 && $lines[0] eq $str; - + $io = $UncompressClass->new($name); ok ! $io->eof; my $line = <$io>; ok $line eq $str; ok $io->eof; } - + { local $/ = ""; # paragraph mode my $io = $UncompressClass->new($name); ok ! $io->eof; my @lines = <$io>; ok $io->eof; - ok @lines == 2 + ok @lines == 2 or print "# expected 2 lines, got " . scalar(@lines) . "\n"; ok $lines[0] eq "This is an example\nof a paragraph\n\n\n" or print "# [$lines[0]]\n" ; ok $lines[1] eq "and a single line.\n\n"; } - + { local $/ = "is"; my $io = $UncompressClass->new($name); @@ -386,40 +386,40 @@ push(@lines, $_); $err++ if $. != ++$no; } - + ok $err == 0 ; ok $io->eof; - + ok @lines == 3 ; ok join("-", @lines) eq "This- is- an example\n" . "of a paragraph\n\n\n" . "and a single line.\n\n"; } - - + + # Test read - + { my $io = $UncompressClass->new($name); - + ok read($io, $buf, 3) == 3 ; ok $buf eq "Thi"; - + ok sysread($io, $buf, 3, 2) == 3 ; ok $buf eq "Ths i"; ok ! $io->eof; - + # $io->seek(-4, 2); - # + # # ok ! $io->eof; - # + # # ok read($io, $buf, 20) == 4 ; # ok $buf eq "e.\n\n"; - # + # # ok read($io, $buf, 20) == 0 ; # ok $buf eq ""; - # + # # ok ! $io->eof; } @@ -450,24 +450,24 @@ { title "Read Tests - buf length $bufsize, Transparent $trans, Append $append" ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); if ($trans) { writeFile($name, $str) ; } else { - my $iow = new $CompressClass $name ; + my $iow = $CompressClass->can('new')->( $CompressClass, $name ); print $iow $str ; close $iow; } - - my $io = $UncompressClass->new($name, + + my $io = $UncompressClass->new($name, -Append => $append, -Transparent => $trans); - + my $buf; - + is $io->tell(), 0; if ($append) { diff -Nru perl-5.32.1/cpan/IO-Compress/t/compress/truncate.pl perl-5.34.0/cpan/IO-Compress/t/compress/truncate.pl --- perl-5.32.1/cpan/IO-Compress/t/compress/truncate.pl 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/compress/truncate.pl 2021-01-20 23:04:44.000000000 +0000 @@ -13,7 +13,7 @@ my $UncompressClass = getInverse($CompressClass); my $Error = getErrorRef($CompressClass); my $UnError = getErrorRef($UncompressClass); - + # my $hello = <new( my $name ); my $input; - + title "Fingerprint Truncation - length $i, Transparent $trans"; my $part = substr($compressed, 0, $i); @@ -68,9 +68,9 @@ $input = \$part; } - my $gz = new $UncompressClass $input, + my $gz = $UncompressClass->can('new')->( $UncompressClass, $input, -BlockSize => $blocksize, - -Transparent => $trans; + -Transparent => $trans ); if ($trans) { ok $gz; ok ! $gz->error() ; @@ -92,9 +92,9 @@ # foreach my $i ($fingerprint_size .. $header_size -1) { - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $input; - + title "Header Truncation - length $i, Source $fb, Transparent $trans"; my $part = substr($compressed, 0, $i); @@ -107,10 +107,10 @@ { $input = \$part; } - - ok ! defined new $UncompressClass $input, + + ok ! defined $UncompressClass->can('new')->( $UncompressClass, $input, -BlockSize => $blocksize, - -Transparent => $trans; + -Transparent => $trans ); #ok $gz->eof() ; } @@ -118,15 +118,15 @@ # In this case the uncompression object will have been created, # so need to check that subsequent reads from the object fail if ($header_size > 0) - { + { for my $mode (qw(block line para record slurp)) { title "Corruption after header - Mode $mode, Source $fb, Transparent $trans"; - - my $lex = new LexFile my $name ; + + my $lex = LexFile->new( my $name ); my $input; - + my $part = substr($compressed, 0, $header_size); # Append corrupt data $part .= "\xFF" x 100 ; @@ -139,11 +139,11 @@ { $input = \$part; } - - ok my $gz = new $UncompressClass $input, + + ok my $gz = $UncompressClass->can('new')->( $UncompressClass, $input, -Strict => 1, -BlockSize => $blocksize, - -Transparent => $trans + -Transparent => $trans ) or diag $$UnError; my $un ; @@ -184,19 +184,19 @@ } # Back to truncation tests - + foreach my $i ($header_size .. length($compressed) - 1 - $trailer_size) { next if $i == 0 ; - + for my $mode (qw(block line)) { title "Compressed Data Truncation - length $i, MOde $mode, Source $fb, Transparent $trans"; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $input; - + my $part = substr($compressed, 0, $i); if ($fb eq 'filehandle') { @@ -207,11 +207,11 @@ { $input = \$part; } - - ok my $gz = new $UncompressClass $input, + + ok my $gz = $UncompressClass->can('new')->( $UncompressClass, $input, -Strict => 1, -BlockSize => $blocksize, - -Transparent => $trans + -Transparent => $trans ) or diag $$UnError; my $un ; @@ -227,12 +227,12 @@ } ok $gz->error() ; cmp_ok $gz->errorNo(), '<', 0 ; - # ok $gz->eof() + # ok $gz->eof() # or die "EOF"; $gz->close(); } } - + # RawDeflate and Zstandard do not have a trailer next if $CompressClass eq 'IO::Compress::RawDeflate' ; next if $CompressClass eq 'IO::Compress::Zstd' ; @@ -242,9 +242,9 @@ { foreach my $lax (0, 1) { - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $input; - + ok 1, "Compressed Trailer Truncation - Length $i, Lax $lax, Transparent $trans" ; my $part = substr($compressed, 0, $i); if ($fb eq 'filehandle') @@ -256,12 +256,12 @@ { $input = \$part; } - - ok my $gz = new $UncompressClass $input, + + ok my $gz = $UncompressClass->can('new')->( $UncompressClass, $input, -BlockSize => $blocksize, -Strict => !$lax, - -Append => 1, - -Transparent => $trans; + -Append => 1, + -Transparent => $trans ); my $un = ''; my $status = 1 ; $status = $gz->read($un) while $status > 0 ; @@ -269,7 +269,7 @@ if ($lax) { is $un, $hello; - is $status, 0 + is $status, 0 or diag "Status $status Error is " . $gz->error() ; ok $gz->eof() or diag "Status $status Error is " . $gz->error() ; @@ -277,13 +277,13 @@ } else { - cmp_ok $status, "<", 0 + cmp_ok $status, "<", 0 or diag "Status $status Error is " . $gz->error() ; ok $gz->eof() or diag "Status $status Error is " . $gz->error() ; ok $gz->error() ; } - + $gz->close(); } } @@ -292,4 +292,3 @@ } 1; - diff -Nru perl-5.32.1/cpan/IO-Compress/t/compress/zlib-generic.pl perl-5.34.0/cpan/IO-Compress/t/compress/zlib-generic.pl --- perl-5.32.1/cpan/IO-Compress/t/compress/zlib-generic.pl 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/compress/zlib-generic.pl 2021-01-20 23:04:44.000000000 +0000 @@ -6,8 +6,8 @@ use Test::More ; use CompTestUtils; -BEGIN -{ +BEGIN +{ # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 @@ -32,10 +32,10 @@ my $init = shift ; - my $fil = new $UncompressClass $filename, + my $fil = $UncompressClass->can('new')->( $UncompressClass, $filename, -Strict => 1, -Append => 1 - ; + ); my $data = ''; $data = $init if defined $init ; @@ -65,7 +65,7 @@ title "flush" ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $hello = <can('new')->( $CompressClass, $name ); ok $x->write($hello), "write" ; ok $x->flush(Z_FINISH), "flush"; @@ -83,7 +83,7 @@ { my $uncomp; - ok my $x = new $UncompressClass $name, -Append => 1 ; + ok my $x = $UncompressClass->can('new')->( $UncompressClass, $name, -Append => 1 ); my $len ; 1 while ($len = $x->read($uncomp)) > 0 ; @@ -104,16 +104,16 @@ my $buffer = ''; { my $x ; - ok $x = new $CompressClass(\$buffer) ; + ok $x = $CompressClass->can('new')->( $CompressClass, \$buffer); ok $x->close ; - + } my $keep = $buffer ; my $uncomp= ''; { my $x ; - ok $x = new $UncompressClass(\$buffer, Append => 1) ; + ok $x = $UncompressClass->can('new')->( $UncompressClass, \$buffer, Append => 1) ; 1 while $x->read($uncomp) > 0 ; @@ -125,21 +125,21 @@ } - + { title "inflateSync on plain file"; my $hello = "I am a HAL 9000 computer" x 2001 ; - my $k = new $UncompressClass(\$hello, Transparent => 1); + my $k = $UncompressClass->can('new')->( $UncompressClass, \$hello, Transparent => 1); ok $k ; - + # Skip to the flush point -- no-op for plain file my $status = $k->inflateSync(); - is $status, 1 + is $status, 1 or diag $k->error() ; - - my $rest; + + my $rest; is $k->read($rest, length($hello)), length($hello) or diag $k->error() ; ok $rest eq $hello ; @@ -156,23 +156,23 @@ my $goodbye = "Will I dream?" x 2010; my ($x, $err, $answer, $X, $Z, $status); my $Answer ; - - ok ($x = new $CompressClass(\$Answer)); + + ok ($x = $CompressClass->can('new')->( $CompressClass, \$Answer)); ok $x ; - + is $x->write($hello), length($hello); - + # create a flush point ok $x->flush(Z_FULL_FLUSH) ; - + is $x->write($goodbye), length($goodbye); - + ok $x->close() ; - + my $k; - $k = new $UncompressClass(\$Answer, BlockSize => 1); + $k = $UncompressClass->can('new')->( $UncompressClass, \$Answer, BlockSize => 1); ok $k ; - + my $initial; is $k->read($initial, 1), 1 ; is $initial, substr($hello, 0, 1); @@ -181,9 +181,9 @@ $status = $k->inflateSync(); is $status, 1, " inflateSync returned 1" or diag $k->error() ; - - my $rest; - is $k->read($rest, length($hello) + length($goodbye)), + + my $rest; + is $k->read($rest, length($hello) + length($goodbye)), length($goodbye) or diag $k->error() ; ok $rest eq $goodbye, " got expected output" ; @@ -199,26 +199,26 @@ my $hello = "I am a HAL 9000 computer" x 2001 ; my ($x, $err, $answer, $X, $Z, $status); my $Answer ; - - ok ($x = new $CompressClass(\$Answer)); + + ok ($x = $CompressClass->can('new')->( $CompressClass, \$Answer)); ok $x ; - + is $x->write($hello), length($hello); - + ok $x->close() ; - - my $k = new $UncompressClass(\$Answer, BlockSize => 1); + + my $k = $UncompressClass->can('new')->( $UncompressClass, \$Answer, BlockSize => 1); ok $k ; - + my $initial; is $k->read($initial, 1), 1 ; is $initial, substr($hello, 0, 1); # Skip to the flush point $status = $k->inflateSync(); - is $status, 0 + is $status, 0 or diag $k->error() ; - + ok $k->close(); is $k->inflateSync(), 0 ; } @@ -227,7 +227,3 @@ 1; - - - - diff -Nru perl-5.32.1/cpan/IO-Compress/t/cz-01version.t perl-5.34.0/cpan/IO-Compress/t/cz-01version.t --- perl-5.32.1/cpan/IO-Compress/t/cz-01version.t 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/cz-01version.t 2021-01-20 23:04:44.000000000 +0000 @@ -11,8 +11,8 @@ use Test::More ; -BEGIN -{ +BEGIN +{ # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 @@ -20,13 +20,13 @@ plan tests => 2 + $extra ; - use_ok('Compress::Zlib', 2) ; + use_ok('Compress::Zlib', 2) ; } # Check zlib_version and ZLIB_VERSION are the same. SKIP: { - skip "TEST_SKIP_VERSION_CHECK is set", 1 + skip "TEST_SKIP_VERSION_CHECK is set", 1 if $ENV{TEST_SKIP_VERSION_CHECK}; my $zlib_h = ZLIB_VERSION ; my $libz = Compress::Zlib::zlib_version; @@ -35,10 +35,10 @@ or diag < 1} ) ) ; ok $x ; ok $err == Z_OK ; - + my $Answer = ''; foreach (@hello) { @@ -158,20 +158,20 @@ $Answer .= $X ; } - + ok $status == Z_OK ; ok ((($X, $status) = $x->flush())[1] == Z_OK ) ; $Answer .= $X ; - - + + my @Answer = split('', $Answer) ; - + my $k; ok (($k, $err) = inflateInit( {-Bufsize => 1}) ) ; ok $k ; ok $err == Z_OK ; - + my $GOT = ''; my $Z; foreach (@Answer) @@ -179,9 +179,9 @@ ($Z, $status) = $k->inflate($_) ; $GOT .= $Z ; last if $status == Z_STREAM_END or $status != Z_OK ; - + } - + ok $status == Z_STREAM_END ; ok $GOT eq $hello ; @@ -190,11 +190,11 @@ # ============================== $hello = 6529 ; - + ok (($x, $err) = deflateInit( {-Bufsize => 1} ) ) ; ok $x ; ok $err == Z_OK ; - + ok !defined $x->msg() ; ok $x->total_in() == 0 ; ok $x->total_out() == 0 ; @@ -204,19 +204,19 @@ $Answer .= $X ; } - + ok $status == Z_OK ; ok ((($X, $status) = $x->flush())[1] == Z_OK ) ; $Answer .= $X ; - + ok !defined $x->msg() ; ok $x->total_in() == length $hello ; ok $x->total_out() == length $Answer ; - + @Answer = split('', $Answer) ; - + ok (($k, $err) = inflateInit( {-Bufsize => 1}) ) ; ok $k ; ok $err == Z_OK ; @@ -224,16 +224,16 @@ ok !defined $k->msg() ; ok $k->total_in() == 0 ; ok $k->total_out() == 0 ; - + $GOT = ''; foreach (@Answer) { ($Z, $status) = $k->inflate($_) ; $GOT .= $Z ; last if $status == Z_STREAM_END or $status != Z_OK ; - + } - + ok $status == Z_STREAM_END ; ok $GOT eq $hello ; @@ -242,27 +242,27 @@ ok $k->total_out() == length $hello ; - + title 'deflate/inflate - larger buffer'; # ============================== ok $x = deflateInit() ; - + ok ((($X, $status) = $x->deflate($contents))[1] == Z_OK) ; my $Y = $X ; - - + + ok ((($X, $status) = $x->flush() )[1] == Z_OK ) ; $Y .= $X ; - - - + + + ok $k = inflateInit() ; - + ($Z, $status) = $k->inflate($Y) ; - + ok $status == Z_STREAM_END ; ok $contents eq $Z ; @@ -272,7 +272,7 @@ my $dictionary = "hello" ; ok $x = deflateInit({-Level => Z_BEST_COMPRESSION, -Dictionary => $dictionary}) ; - + my $dictID = $x->dict_adler() ; ($X, $status) = $x->deflate($hello) ; @@ -281,9 +281,9 @@ ok $status == Z_OK ; $X .= $Y ; $x = 0 ; - + ok $k = inflateInit(-Dictionary => $dictionary) ; - + ($Z, $status) = $k->inflate($X); ok $status == Z_STREAM_END ; ok $k->dict_adler() == $dictID; @@ -296,7 +296,7 @@ #print "status=[$status] hello=[$hello] Z=[$Z]\n"; #} #ok $status == Z_STREAM_END ; -#ok $hello eq $Z +#ok $hello eq $Z # or print "status=[$status] hello=[$hello] Z=[$Z]\n"; @@ -306,19 +306,19 @@ title 'inflate - check remaining buffer after Z_STREAM_END'; # =================================================== - + { ok $x = deflateInit(-Level => Z_BEST_COMPRESSION ) ; - + ($X, $status) = $x->deflate($hello) ; ok $status == Z_OK ; ($Y, $status) = $x->flush() ; ok $status == Z_OK ; $X .= $Y ; $x = 0 ; - + ok $k = inflateInit() ; - + my $first = substr($X, 0, 2) ; my $last = substr($X, 2) ; ($Z, $status) = $k->inflate($first); @@ -337,9 +337,9 @@ title 'memGzip & memGunzip'; { my ($name, $name1, $name2, $name3); - my $lex = new LexFile $name, $name1, $name2, $name3 ; + my $lex = LexFile->new( $name, $name1, $name2, $name3 ); my $buffer = <gzread($uncomp, 0), 0 ; ok (($x = $fil->gzread($uncomp)) == $len) ; - + ok ! $fil->gzclose ; ok $uncomp eq $buffer ; - + #1 while unlink $name ; # now check that memGunzip can deal with it. @@ -376,10 +376,10 @@ ok defined $ungzip ; ok $buffer eq $ungzip ; is $gzerrno, 0; - - # now do the same but use a reference - $dest = memGzip(\$buffer) ; + # now do the same but use a reference + + $dest = memGzip(\$buffer) ; ok length $dest ; is $gzerrno, 0; @@ -391,13 +391,13 @@ # uncompress with gzopen ok $fil = gzopen($name1, "rb") ; - + ok (($x = $fil->gzread($uncomp)) == $len) ; - + ok ! $fil->gzclose ; ok $uncomp eq $buffer ; - + # now check that memGunzip can deal with it. my $keep = $dest; $ungzip = memGunzip(\$dest) ; @@ -459,7 +459,7 @@ ok ! defined $ungzip ; cmp_ok $gzerrno, "==", Z_DATA_ERROR ; - + #1 while unlink $name ; # check corrupt header -- too short @@ -520,7 +520,7 @@ { title "Check all bytes can be handled"; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $data = join '', map { chr } 0x00 .. 0xFF; $data .= "\r\nabd\r\n"; @@ -548,7 +548,7 @@ { my $name = "test.gz" ; my $buffer = < 1, -WindowBits => -MAX_WBITS() ) ) ; ok $x ; ok $err == Z_OK ; - + $Answer = ''; foreach (@hello) { ($X, $status) = $x->deflate($_) ; last unless $status == Z_OK ; - + $Answer .= $X ; } - + ok $status == Z_OK ; - + ok ((($X, $status) = $x->flush())[1] == Z_OK ) ; $Answer .= $X ; - - + + @Answer = split('', $Answer) ; - # Undocumented corner -- extra byte needed to get inflate to return - # Z_STREAM_END when done. - push @Answer, " " ; - + # Undocumented corner -- extra byte needed to get inflate to return + # Z_STREAM_END when done. + push @Answer, " " ; + ok (($k, $err) = inflateInit(-Bufsize => 1, -WindowBits => -MAX_WBITS()) ) ; ok $k ; ok $err == Z_OK ; - + $GOT = ''; foreach (@Answer) { ($Z, $status) = $k->inflate($_) ; $GOT .= $Z ; last if $status == Z_STREAM_END or $status != Z_OK ; - + } - + ok $status == Z_STREAM_END ; ok $GOT eq $hello ; - + } { @@ -626,32 +626,32 @@ my $hello = "I am a HAL 9000 computer" x 2001 ; my $goodbye = "Will I dream?" x 2010; my ($err, $answer, $X, $status, $Answer); - + ok (($x, $err) = deflateInit() ) ; ok $x ; ok $err == Z_OK ; - + ($Answer, $status) = $x->deflate($hello) ; ok $status == Z_OK ; - + # create a flush point ok ((($X, $status) = $x->flush(Z_FULL_FLUSH))[1] == Z_OK ) ; $Answer .= $X ; - + ($X, $status) = $x->deflate($goodbye) ; ok $status == Z_OK ; $Answer .= $X ; - + ok ((($X, $status) = $x->flush())[1] == Z_OK ) ; $Answer .= $X ; - + my ($first, @Answer) = split('', $Answer) ; - + my $k; ok (($k, $err) = inflateInit()) ; ok $k ; ok $err == Z_OK ; - + ($Z, $status) = $k->inflate($first) ; ok $status == Z_OK ; @@ -661,11 +661,11 @@ my $byte = shift @Answer; $status = $k->inflateSync($byte) ; last unless $status == Z_DATA_ERROR; - + } ok $status == Z_OK; - + my $GOT = ''; my $Z = ''; foreach (@Answer) @@ -675,9 +675,9 @@ $GOT .= $Z if defined $Z ; # print "x $status\n"; last if $status == Z_STREAM_END or $status != Z_OK ; - + } - + # zlib 1.0.9 returns Z_STREAM_END here, all others return Z_DATA_ERROR ok $status == Z_DATA_ERROR || $status == Z_STREAM_END ; ok $GOT eq $goodbye ; @@ -687,19 +687,19 @@ $Answer =~ /^(.)(.*)$/ ; my ($initial, $rest) = ($1, $2); - + ok (($k, $err) = inflateInit()) ; ok $k ; ok $err == Z_OK ; - + ($Z, $status) = $k->inflate($initial) ; ok $status == Z_OK ; $status = $k->inflateSync($rest) ; ok $status == Z_OK; - + ($GOT, $status) = $k->inflate($rest) ; - + ok $status == Z_DATA_ERROR ; ok $Z . $GOT eq $goodbye ; } @@ -710,7 +710,7 @@ my $hello = "I am a HAL 9000 computer" x 2001 ; my $goodbye = "Will I dream?" x 2010; my ($input, $err, $answer, $X, $status, $Answer); - + ok (($x, $err) = deflateInit(-Level => Z_BEST_COMPRESSION, -Strategy => Z_DEFAULT_STRATEGY) ) ; ok $x ; @@ -718,11 +718,11 @@ ok $x->get_Level() == Z_BEST_COMPRESSION; ok $x->get_Strategy() == Z_DEFAULT_STRATEGY; - + ($Answer, $status) = $x->deflate($hello) ; ok $status == Z_OK ; $input .= $hello; - + # error cases eval { $x->deflateParams() }; #like $@, mkErr("^Compress::Raw::Zlib::deflateParams needs Level and/or Strategy"); @@ -736,56 +736,56 @@ ok $x->get_Level() == Z_BEST_COMPRESSION; ok $x->get_Strategy() == Z_DEFAULT_STRATEGY; - + # change both Level & Strategy $status = $x->deflateParams(-Level => Z_BEST_SPEED, -Strategy => Z_HUFFMAN_ONLY) ; ok $status == Z_OK ; - + ok $x->get_Level() == Z_BEST_SPEED; ok $x->get_Strategy() == Z_HUFFMAN_ONLY; - + ($X, $status) = $x->deflate($goodbye) ; ok $status == Z_OK ; $Answer .= $X ; $input .= $goodbye; - - # change only Level + + # change only Level $status = $x->deflateParams(-Level => Z_NO_COMPRESSION) ; ok $status == Z_OK ; - + ok $x->get_Level() == Z_NO_COMPRESSION; ok $x->get_Strategy() == Z_HUFFMAN_ONLY; - + ($X, $status) = $x->deflate($goodbye) ; ok $status == Z_OK ; $Answer .= $X ; $input .= $goodbye; - + # change only Strategy $status = $x->deflateParams(-Strategy => Z_FILTERED) ; ok $status == Z_OK ; - + ok $x->get_Level() == Z_NO_COMPRESSION; ok $x->get_Strategy() == Z_FILTERED; - + ($X, $status) = $x->deflate($goodbye) ; ok $status == Z_OK ; $Answer .= $X ; $input .= $goodbye; - + ok ((($X, $status) = $x->flush())[1] == Z_OK ) ; $Answer .= $X ; - + my ($first, @Answer) = split('', $Answer) ; - + my $k; ok (($k, $err) = inflateInit()) ; ok $k ; ok $err == Z_OK ; - + ($Z, $status) = $k->inflate($Answer) ; - ok $status == Z_STREAM_END + ok $status == Z_STREAM_END or print "# status $status\n"; ok $Z eq $input ; } @@ -840,28 +840,28 @@ # test inflate with a substr ok my $x = deflateInit() ; - + ok ((my ($X, $status) = $x->deflate($contents))[1] == Z_OK) ; - + my $Y = $X ; - - + + ok ((($X, $status) = $x->flush() )[1] == Z_OK ) ; $Y .= $X ; - + my $append = "Appended" ; $Y .= $append ; - + ok $k = inflateInit() ; - + #($Z, $status) = $k->inflate(substr($Y, 0, -1)) ; ($Z, $status) = $k->inflate(substr($Y, 0)) ; - + ok $status == Z_STREAM_END ; ok $contents eq $Z ; is $Y, $append; - + } if ($] >= 5.005) @@ -869,27 +869,27 @@ # deflate/inflate in scalar context ok my $x = deflateInit() ; - + my $X = $x->deflate($contents); - + my $Y = $X ; - - + + $X = $x->flush(); $Y .= $X ; - + my $append = "Appended" ; $Y .= $append ; - + ok $k = inflateInit() ; - + $Z = $k->inflate(substr($Y, 0, -1)) ; #$Z = $k->inflate(substr($Y, 0)) ; - + ok $contents eq $Z ; is $Y, $append; - + } { @@ -897,8 +897,8 @@ # CRC32 of this data should have the high bit set # value in ascii is ZgRNtjgSUW - my $data = "\x5a\x67\x52\x4e\x74\x6a\x67\x53\x55\x57"; - my $expected_crc = 0xCF707A2B ; # 3480255019 + my $data = "\x5a\x67\x52\x4e\x74\x6a\x67\x53\x55\x57"; + my $expected_crc = 0xCF707A2B ; # 3480255019 my $crc = crc32($data) ; is $crc, $expected_crc; @@ -912,7 +912,7 @@ my $data = "\x6c\x70\x73\x63\x4f\x56\x73\x41\x4a\x69\x55\x66" . "\x4e\x43\x6f\x6d\x6b\x4f\x66\x57\x59\x42\x63\x50" . "\x68\x48\x5a\x5b\x62\x54"; - my $expected_crc = 0xAAD60AC7 ; # 2866154183 + my $expected_crc = 0xAAD60AC7 ; # 2866154183 my $crc = adler32($data) ; is $crc, $expected_crc; } @@ -930,11 +930,11 @@ ok length $compressed > 4096 ; ok my $out = memGunzip(\$compressed) ; is $gzerrno, 0; - + ok $contents eq $out ; is length $out, length $contents ; - + } @@ -946,7 +946,7 @@ EOM my $good ; - ok my $x = new IO::Compress::Gzip \$good, Append => 1, -HeaderCRC => 1 ; + ok my $x = IO::Compress::Gzip->new( \$good, Append => 1, -HeaderCRC => 1 ); ok $x->write($string) ; ok $x->close ; @@ -996,8 +996,8 @@ EOM my $truncated ; - ok my $x = new IO::Compress::Gzip \$truncated, Append => 1, -HeaderCRC => 1, Strict => 0, - -ExtraField => "hello" x 10 ; + ok my $x = IO::Compress::Gzip->new( \$truncated, Append => 1, -HeaderCRC => 1, Strict => 0, + -ExtraField => "hello" x 10 ); ok $x->write($string) ; ok $x->close ; @@ -1018,7 +1018,7 @@ EOM my $truncated ; - ok my $x = new IO::Compress::Gzip \$truncated, Append => 1, -Name => $Name; + ok my $x = IO::Compress::Gzip->new( \$truncated, Append => 1, -Name => $Name ); ok $x->write($string) ; ok $x->close ; @@ -1037,7 +1037,7 @@ EOM my $truncated ; - ok my $x = new IO::Compress::Gzip \$truncated, -Comment => $Comment; + ok my $x = IO::Compress::Gzip->new( \$truncated, -Comment => $Comment ); ok $x->write($string) ; ok $x->close ; @@ -1054,7 +1054,7 @@ EOM my $truncated ; - ok my $x = new IO::Compress::Gzip \$truncated, -HeaderCRC => 1; + ok my $x = IO::Compress::Gzip->new( \$truncated, -HeaderCRC => 1 ); ok $x->write($string) ; ok $x->close ; @@ -1071,19 +1071,19 @@ EOM my $buffer ; - ok my $x = new IO::Compress::Gzip \$buffer, + ok my $x = IO::Compress::Gzip->new( \$buffer, -Append => 1, -Strict => 0, -HeaderCRC => 1, -Name => "Fred", -ExtraField => "Extra", - -Comment => 'Comment'; + -Comment => 'Comment' ); ok $x->write($string) ; ok $x->close ; ok defined $buffer ; - ok my $got = memGunzip($buffer) + ok my $got = memGunzip($buffer) or diag "gzerrno is $gzerrno" ; is $got, $string ; is $gzerrno, 0; @@ -1098,7 +1098,7 @@ EOM my $good ; - ok my $x = new IO::Compress::Gzip \$good, Append => 1 ; + ok my $x = IO::Compress::Gzip->new( \$good, Append => 1 ); ok $x->write($string) ; ok $x->close ; @@ -1176,7 +1176,7 @@ title "Append & MultiStream Tests"; # rt.24041 - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $data1 = "the is the first"; my $data2 = "and this is the second"; my $trailing = "some trailing data"; @@ -1185,7 +1185,7 @@ title "One file"; $fil = gzopen($name, "wb") ; - ok $fil, "opened first file"; + ok $fil, "opened first file"; is $fil->gzwrite($data1), length $data1, "write data1" ; ok ! $fil->gzclose(), "Closed"; @@ -1194,7 +1194,7 @@ title "Two files"; $fil = gzopen($name, "ab") ; - ok $fil, "opened second file"; + ok $fil, "opened second file"; is $fil->gzwrite($data2), length $data2, "write data2" ; ok ! $fil->gzclose(), "Closed"; @@ -1214,12 +1214,12 @@ title "gzclose & gzflush return codes"; # rt.29215 - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $data1 = "the is some text"; my $status; $fil = gzopen($name, "wb") ; - ok $fil, "opened first file"; + ok $fil, "opened first file"; is $fil->gzwrite($data1), length $data1, "write data1" ; $status = $fil->gzflush(0xfff); ok $status, "flush not ok" ; @@ -1233,17 +1233,17 @@ { title "repeated calls to flush - no compression"; - my ($err, $x, $X, $status, $data); - + my ($err, $x, $X, $status, $data); + ok( ($x, $err) = deflateInit ( ), "Create deflate object" ); isa_ok $x, "Compress::Raw::Zlib::deflateStream" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - + ($data, $status) = $x->flush(Z_SYNC_FLUSH) ; - cmp_ok $status, '==', Z_OK, "flush returned Z_OK" ; + cmp_ok $status, '==', Z_OK, "flush returned Z_OK" ; ($data, $status) = $x->flush(Z_SYNC_FLUSH) ; - cmp_ok $status, '==', Z_OK, "second flush returned Z_OK" ; + cmp_ok $status, '==', Z_OK, "second flush returned Z_OK" ; is $data, "", "no output from second flush"; } @@ -1251,18 +1251,18 @@ title "repeated calls to flush - after compression"; my $hello = "I am a HAL 9000 computer" ; - my ($err, $x, $X, $status, $data); - + my ($err, $x, $X, $status, $data); + ok( ($x, $err) = deflateInit ( ), "Create deflate object" ); isa_ok $x, "Compress::Raw::Zlib::deflateStream" ; cmp_ok $err, '==', Z_OK, "status is Z_OK" ; - + ($data, $status) = $x->deflate($hello) ; cmp_ok $status, '==', Z_OK, "deflate returned Z_OK" ; - + ($data, $status) = $x->flush(Z_SYNC_FLUSH) ; - cmp_ok $status, '==', Z_OK, "flush returned Z_OK" ; + cmp_ok $status, '==', Z_OK, "flush returned Z_OK" ; ($data, $status) = $x->flush(Z_SYNC_FLUSH) ; - cmp_ok $status, '==', Z_OK, "second flush returned Z_OK" ; + cmp_ok $status, '==', Z_OK, "second flush returned Z_OK" ; is $data, "", "no output from second flush"; } diff -Nru perl-5.32.1/cpan/IO-Compress/t/cz-06gzsetp.t perl-5.34.0/cpan/IO-Compress/t/cz-06gzsetp.t --- perl-5.32.1/cpan/IO-Compress/t/cz-06gzsetp.t 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/cz-06gzsetp.t 2021-01-20 23:04:44.000000000 +0000 @@ -9,10 +9,10 @@ use strict; use warnings; use bytes; - + use Test::More ; use CompTestUtils; - + use Compress::Zlib 2 ; use IO::Compress::Gzip ; @@ -26,9 +26,9 @@ our ($extra); - -BEGIN -{ + +BEGIN +{ # use Test::NoWarnings, if available $extra = 0 ; $extra = 1 @@ -43,12 +43,12 @@ # Check zlib_version and ZLIB_VERSION are the same. SKIP: { - skip "TEST_SKIP_VERSION_CHECK is set", 1 + skip "TEST_SKIP_VERSION_CHECK is set", 1 if $ENV{TEST_SKIP_VERSION_CHECK}; is Compress::Zlib::zlib_version, ZLIB_VERSION, "ZLIB_VERSION matches Compress::Zlib::zlib_version" ; } - + { # gzsetparams title "Testing gzsetparams"; @@ -59,13 +59,13 @@ my $len_goodbye = length $goodbye; my ($input, $err, $answer, $X, $status, $Answer); - - my $lex = new LexFile my $name ; + + my $lex = LexFile->new( my $name ); ok my $x = gzopen($name, "wb"); $input .= $hello; is $x->gzwrite($hello), $len_hello, "gzwrite returned $len_hello" ; - + # Error cases eval { $x->gzsetparams() }; like $@, mkErr('^Usage: Compress::Zlib::gzFile::gzsetparams\(file, level, strategy\)'); @@ -73,14 +73,14 @@ # Change both Level & Strategy $status = $x->gzsetparams(Z_BEST_SPEED, Z_HUFFMAN_ONLY) ; cmp_ok $status, '==', Z_OK, "status is Z_OK"; - + $input .= $goodbye; is $x->gzwrite($goodbye), $len_goodbye, "gzwrite returned $len_goodbye" ; - + ok ! $x->gzclose, "closed" ; ok my $k = gzopen($name, "rb") ; - + # calling gzsetparams on reading is not allowed. $status = $k->gzsetparams(Z_BEST_SPEED, Z_HUFFMAN_ONLY) ; cmp_ok $status, '==', Z_STREAM_ERROR, "status is Z_STREAM_ERROR" ; @@ -116,29 +116,29 @@ #my ($input, $err, $answer, $X, $status, $Answer); my $compressed; - ok my $x = new $CompressClass(\$compressed) ; + ok my $x = $CompressClass->can('new')->( $CompressClass, \$compressed) ; my $input .= $hello; is $x->write($hello), $len_hello, "wrote $len_hello bytes" ; - + # Change both Level & Strategy ok $x->deflateParams(Z_BEST_SPEED, Z_HUFFMAN_ONLY), "deflateParams ok"; $input .= $goodbye; is $x->write($goodbye), $len_goodbye, "wrote $len_goodbye bytes" ; - + ok $x->close, "closed $CompressClass object" ; - my $k = new $UncompressClass(\$compressed); + my $k = $UncompressClass->can('new')->( $UncompressClass, \$compressed); isa_ok $k, $UncompressClass; - + my $len = length $input ; my $uncompressed; - is $k->read($uncompressed, $len), $len + is $k->read($uncompressed, $len), $len or diag "$IO::Uncompress::Gunzip::GunzipError" ; - ok $uncompressed eq $input, "got expected uncompressed data" - or diag("unc len = " . length($uncompressed) . ", input len = " . + ok $uncompressed eq $input, "got expected uncompressed data" + or diag("unc len = " . length($uncompressed) . ", input len = " . length($input) . "\n") ; ok $k->eof, "eof" ; ok $k->close, "closed" ; diff -Nru perl-5.32.1/cpan/IO-Compress/t/cz-08encoding.t perl-5.34.0/cpan/IO-Compress/t/cz-08encoding.t --- perl-5.32.1/cpan/IO-Compress/t/cz-08encoding.t 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/cz-08encoding.t 2021-01-20 23:04:44.000000000 +0000 @@ -38,7 +38,7 @@ # Check zlib_version and ZLIB_VERSION are the same. SKIP: { - skip "TEST_SKIP_VERSION_CHECK is set", 1 + skip "TEST_SKIP_VERSION_CHECK is set", 1 if $ENV{TEST_SKIP_VERSION_CHECK}; is Compress::Zlib::zlib_version, ZLIB_VERSION, "ZLIB_VERSION matches Compress::Zlib::zlib_version" ; @@ -47,13 +47,13 @@ { title "memGzip" ; # length of this string is 2 characters - my $s = "\x{df}\x{100}"; + my $s = "\x{df}\x{100}"; my $cs = memGzip(Encode::encode_utf8($s)); # length stored at end of gzip file should be 4 my ($crc, $len) = unpack ("VV", substr($cs, -8, 8)); - + is $len, 4, " length is 4"; } @@ -65,7 +65,7 @@ is memGunzip(my $x = $co), $s, " match uncompressed"; utf8::upgrade($co); - + my $un = memGunzip($co); ok $un, " got uncompressed"; @@ -75,7 +75,7 @@ { title "compress/uncompress"; - my $s = "\x{df}\x{100}"; + my $s = "\x{df}\x{100}"; my $s_copy = $s ; my $ces = compress(Encode::encode_utf8($s_copy)); @@ -84,21 +84,21 @@ my $un = Encode::decode_utf8(uncompress($ces)); is $un, $s, " decode_utf8 ok"; - + utf8::upgrade($ces); $un = Encode::decode_utf8(uncompress($ces)); is $un, $s, " decode_utf8 ok"; - + } { title "gzopen" ; - my $s = "\x{df}\x{100}"; + my $s = "\x{df}\x{100}"; my $byte_len = length( Encode::encode_utf8($s) ); my ($uncomp) ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); ok my $fil = gzopen($name, "wb"), " gzopen for write ok" ; is $fil->gzwrite(Encode::encode_utf8($s)), $byte_len, " wrote $byte_len bytes" ; @@ -131,7 +131,7 @@ eval { uncompress($a) }; like($@, qr/Wide character in uncompress/, " wide characters in uncompress"); - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); ok my $fil = gzopen($name, "wb"), " gzopen for write ok" ; eval { $fil->gzwrite($a); } ; @@ -139,4 +139,3 @@ ok ! $fil->gzclose, " gzclose ok" ; } - diff -Nru perl-5.32.1/cpan/IO-Compress/t/cz-14gzopen.t perl-5.34.0/cpan/IO-Compress/t/cz-14gzopen.t --- perl-5.32.1/cpan/IO-Compress/t/cz-14gzopen.t 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/cz-14gzopen.t 2021-01-20 23:04:44.000000000 +0000 @@ -28,156 +28,156 @@ { SKIP: { - skip "TEST_SKIP_VERSION_CHECK is set", 1 + skip "TEST_SKIP_VERSION_CHECK is set", 1 if $ENV{TEST_SKIP_VERSION_CHECK}; # Check zlib_version and ZLIB_VERSION are the same. is Compress::Zlib::zlib_version, ZLIB_VERSION, "ZLIB_VERSION matches Compress::Zlib::zlib_version" ; } } - + { # gzip tests #=========== - + #my $name = "test.gz" ; - my $lex = new LexFile my $name ; - + my $lex = LexFile->new( my $name ); + my $hello = <gzerror(), 0, "gzerror() returned 0"; - + is $fil->gztell(), 0, "gztell returned 0"; is $gzerrno, 0, 'gzerrno is 0'; - + is $fil->gzwrite($hello), $len ; is $gzerrno, 0, 'gzerrno is 0'; - + is $fil->gztell(), $len, "gztell returned $len"; is $gzerrno, 0, 'gzerrno is 0'; - + ok ! $fil->gzclose ; - + ok $fil = gzopen($name, "rb") ; - + ok ! $fil->gzeof() ; is $gzerrno, 0, 'gzerrno is 0'; is $fil->gztell(), 0; - - is $fil->gzread($uncomp), $len; - + + is $fil->gzread($uncomp), $len; + is $fil->gztell(), $len; ok $fil->gzeof() ; - + # gzread after eof bahavior - + my $xyz = "123" ; is $fil->gzread($xyz), 0, "gzread returns 0 on eof" ; is $xyz, "", "gzread on eof zaps the output buffer [Match 1,x behavior]" ; - + ok ! $fil->gzclose ; ok $fil->gzeof() ; - + ok $hello eq $uncomp ; } { title 'check that a number can be gzipped'; - my $lex = new LexFile my $name ; - - + my $lex = LexFile->new( my $name ); + + my $number = 7603 ; my $num_len = 4 ; - + ok my $fil = gzopen($name, "wb") ; - + is $gzerrno, 0; - + is $fil->gzwrite($number), $num_len, "gzwrite returned $num_len" ; is $gzerrno, 0, 'gzerrno is 0'; ok ! $fil->gzflush(Z_FINISH) ; - + is $gzerrno, 0, 'gzerrno is 0'; - + ok ! $fil->gzclose ; - + cmp_ok $gzerrno, '==', 0; - + ok $fil = gzopen($name, "rb") ; - + my $uncomp; ok ((my $x = $fil->gzread($uncomp)) == $num_len) ; - + ok $fil->gzerror() == 0 || $fil->gzerror() == Z_STREAM_END; ok $gzerrno == 0 || $gzerrno == Z_STREAM_END; ok $fil->gzeof() ; - + ok ! $fil->gzclose ; ok $fil->gzeof() ; - + ok $gzerrno == 0 or print "# gzerrno is $gzerrno\n" ; - + 1 while unlink $name ; - + ok $number == $uncomp ; ok $number eq $uncomp ; } { title "now a bigger gzip test"; - + my $text = 'text' ; - my $lex = new LexFile my $file ; - - + my $lex = LexFile->new( my $file ); + + ok my $f = gzopen($file, "wb") ; - + # generate a long random string my $contents = '' ; foreach (1 .. 5000) { $contents .= chr int rand 256 } - + my $len = length $contents ; - + is $f->gzwrite($contents), $len ; - + ok ! $f->gzclose ; - + ok $f = gzopen($file, "rb") ; - + ok ! $f->gzeof() ; - + my $uncompressed ; is $f->gzread($uncompressed, $len), $len ; - - is $contents, $uncompressed - - or print "# Length orig $len" . + + is $contents, $uncompressed + + or print "# Length orig $len" . ", Length uncompressed " . length($uncompressed) . "\n" ; - + ok $f->gzeof() ; ok ! $f->gzclose ; - + } { title "gzip - readline tests"; # ====================== - + # first create a small gzipped text file - my $lex = new LexFile my $name ; - + my $lex = LexFile->new( my $name ); + my @text = (<gzwrite($text), length($text) ; ok ! $fil->gzclose ; - + # now try to read it back in ok $fil = gzopen($name, "rb") ; ok ! $fil->gzeof() ; @@ -204,15 +204,15 @@ is $line, $text[$i] ; ok ! $fil->gzeof() ; } - + # now read the last line ok $fil->gzreadline($line) > 0; is $line, $text[-1] ; ok $fil->gzeof() ; - + # read past the eof is $fil->gzreadline($line), 0; - + ok $fil->gzeof() ; ok ! $fil->gzclose ; ok $fil->gzeof() ; @@ -220,7 +220,7 @@ { title "A text file with a very long line (bigger than the internal buffer)"; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $line1 = ("abcdefghijklmnopq" x 2000) . "\n" ; my $line2 = "second line\n" ; @@ -228,7 +228,7 @@ ok my $fil = gzopen($name, "wb"), " gzopen ok" ; is $fil->gzwrite($text), length $text, " gzwrite ok" ; ok ! $fil->gzclose, " gzclose" ; - + # now try to read it back in ok $fil = gzopen($name, "rb"), " gzopen" ; ok ! $fil->gzeof(), "! eof" ; @@ -236,13 +236,13 @@ my @got = (); my $line; while ($fil->gzreadline($line) > 0) { - $got[$i] = $line ; + $got[$i] = $line ; ++ $i ; } is $i, 2, " looped twice" ; is $got[0], $line1, " got line 1" ; is $got[1], $line2, " hot line 2" ; - + ok $fil->gzeof(), " gzeof" ; ok ! $fil->gzclose, " gzclose" ; ok $fil->gzeof(), " gzeof" ; @@ -250,30 +250,30 @@ { title "a text file which is not terminated by an EOL"; - - my $lex = new LexFile my $name ; - + + my $lex = LexFile->new( my $name ); + my $line1 = "hello hello, I'm back again\n" ; my $line2 = "there is no end in sight" ; - + my $text = $line1 . $line2 ; ok my $fil = gzopen($name, "wb"), " gzopen" ; is $fil->gzwrite($text), length $text, " gzwrite" ; ok ! $fil->gzclose, " gzclose" ; - + # now try to read it back in ok $fil = gzopen($name, "rb"), " gzopen" ; - my @got = () ; + my @got = () ; my $i = 0 ; my $line; while ($fil->gzreadline($line) > 0) { - $got[$i] = $line ; + $got[$i] = $line ; ++ $i ; } is $i, 2, " got 2 lines" ; is $got[0], $line1, " line 1 ok" ; is $got[1], $line2, " line 2 ok" ; - + ok $fil->gzeof(), " gzeof" ; ok ! $fil->gzclose, " gzclose" ; } @@ -281,23 +281,23 @@ { title 'mix gzread and gzreadline'; - + # case 1: read a line, then a block. The block is # smaller than the internal block used by # gzreadline - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $line1 = "hello hello, I'm back again\n" ; - my $line2 = "abc" x 200 ; + my $line2 = "abc" x 200 ; my $line3 = "def" x 200 ; my $line; - + my $text = $line1 . $line2 . $line3 ; my $fil; ok $fil = gzopen($name, "wb"), ' gzopen for write ok' ; is $fil->gzwrite($text), length $text, ' gzwrite ok' ; is $fil->gztell(), length $text, ' gztell ok' ; ok ! $fil->gzclose, ' gzclose ok' ; - + # now try to read it back in ok $fil = gzopen($name, "rb"), ' gzopen for read ok' ; ok ! $fil->gzeof(), ' !gzeof' ; @@ -319,12 +319,12 @@ { title "Pass gzopen a filehandle - use IO::File" ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $hello = "hello" ; my $len = length $hello ; - my $f = new IO::File ">$name" ; + my $f = IO::File->new( ">$name" ); ok $f; my $fil; @@ -334,11 +334,11 @@ ok ! $fil->gzclose ; - $f = new IO::File "<$name" ; + $f = IO::File->new( "<$name" ); ok $fil = gzopen($name, "rb") ; my $uncomp; my $x; - ok (($x = $fil->gzread($uncomp)) == $len) + ok (($x = $fil->gzread($uncomp)) == $len) or print "# length $x, expected $len\n" ; ok $fil->gzeof() ; @@ -352,7 +352,7 @@ { title "Pass gzopen a filehandle - use open" ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $hello = "hello" ; my $len = length $hello ; @@ -389,7 +389,7 @@ title "Pass gzopen a filehandle - use $stdin" ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $hello = "hello" ; my $len = length $hello ; @@ -397,12 +397,12 @@ ok open(SAVEOUT, ">&STDOUT"), " save STDOUT"; my $dummy = fileno SAVEOUT; ok open(STDOUT, ">$name"), " redirect STDOUT" ; - + my $status = 0 ; my $fil = gzopen($stdout, "wb") ; - $status = $fil && + $status = $fil && ($fil->gzwrite($hello) == $len) && ($fil->gzclose == 0) ; @@ -417,7 +417,7 @@ ok $fil = gzopen($stdin, "rb") ; my $uncomp; my $x; - ok (($x = $fil->gzread($uncomp)) == $len) + ok (($x = $fil->gzread($uncomp)) == $len) or print "# length $x, expected $len\n" ; ok $fil->gzeof() ; @@ -433,7 +433,7 @@ { title 'test parameters for gzopen'; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $fil; @@ -462,7 +462,7 @@ { title 'Read operations when opened for writing'; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $fil; ok $fil = gzopen($name, "wb"), ' gzopen for writing' ; ok !$fil->gzeof(), ' !eof'; ; @@ -473,7 +473,7 @@ { title 'write operations when opened for reading'; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $text = "hello" ; my $fil; ok $fil = gzopen($name, "wb"), " gzopen for writing" ; @@ -489,22 +489,22 @@ SKIP: { - skip "Cannot create non-writable file", 3 + skip "Cannot create non-writable file", 3 if $^O eq 'cygwin'; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); writeFile($name, "abc"); - chmod 0444, $name + chmod 0444, $name or skip "Cannot create non-writable file", 3 ; - skip "Cannot create non-writable file", 3 + skip "Cannot create non-writable file", 3 if -w $name ; ok ! -w $name, " input file not writable"; my $fil = gzopen($name, "wb") ; ok !$fil, " gzopen returns undef" ; - ok $gzerrno, " gzerrno ok" or + ok $gzerrno, " gzerrno ok" or diag " gzerrno $gzerrno\n"; chmod 0777, $name ; @@ -512,14 +512,14 @@ SKIP: { - my $lex = new LexFile my $name ; - skip "Cannot create non-readable file", 3 + my $lex = LexFile->new( my $name ); + skip "Cannot create non-readable file", 3 if $^O eq 'cygwin'; writeFile($name, "abc"); chmod 0222, $name ; - skip "Cannot create non-readable file", 3 + skip "Cannot create non-readable file", 3 if -r $name ; ok ! -r $name, " input file not readable"; @@ -536,7 +536,7 @@ title "gzseek" ; my $buff ; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $first = "beginning" ; my $last = "the end" ; @@ -580,11 +580,11 @@ { # seek error cases - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $a = gzopen($name, "w"); - ok ! $a->gzerror() + ok ! $a->gzerror() or print "# gzerrno is $Compress::Zlib::gzerrno \n" ; eval { $a->gzseek(-1, 10) ; }; like $@, mkErr("gzseek: unknown value, 10, for whence parameter"); @@ -610,7 +610,7 @@ { title "gzread ver 1.x compat -- the output buffer is always zapped."; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $a = gzopen($name, "w"); $a->gzwrite("fred"); @@ -632,7 +632,7 @@ { title 'gzreadline does not support $/'; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); my $a = gzopen($name, "w"); my $text = "fred\n"; @@ -656,12 +656,12 @@ { title 'gzflush called twice with Z_SYNC_FLUSH - no compression'; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); ok my $a = gzopen($name, "w"); - + + is $a->gzflush(Z_SYNC_FLUSH), Z_OK, "gzflush returns Z_OK"; is $a->gzflush(Z_SYNC_FLUSH), Z_OK, "gzflush returns Z_OK"; - is $a->gzflush(Z_SYNC_FLUSH), Z_OK, "gzflush returns Z_OK"; } @@ -669,13 +669,13 @@ { title 'gzflush called twice - after compression'; - my $lex = new LexFile my $name ; + my $lex = LexFile->new( my $name ); ok my $a = gzopen($name, "w"); my $text = "fred\n"; my $len = length $text; is $a->gzwrite($text), length($text), "gzwrite ok"; - + + is $a->gzflush(Z_SYNC_FLUSH), Z_OK, "gzflush returns Z_OK"; is $a->gzflush(Z_SYNC_FLUSH), Z_OK, "gzflush returns Z_OK"; - is $a->gzflush(Z_SYNC_FLUSH), Z_OK, "gzflush returns Z_OK"; } Binary files /tmp/tmpoojcah9o/jka3Q5SynG/perl-5.32.1/cpan/IO-Compress/t/files/testfile1.odt and /tmp/tmpoojcah9o/Av3jhpbw9O/perl-5.34.0/cpan/IO-Compress/t/files/testfile1.odt differ diff -Nru perl-5.32.1/cpan/IO-Compress/t/globmapper.t perl-5.34.0/cpan/IO-Compress/t/globmapper.t --- perl-5.32.1/cpan/IO-Compress/t/globmapper.t 2020-12-18 09:57:59.000000000 +0000 +++ perl-5.34.0/cpan/IO-Compress/t/globmapper.t 2021-01-20 23:04:44.000000000 +0000 @@ -13,8 +13,8 @@ use CompTestUtils; -BEGIN -{ +BEGIN +{ plan(skip_all => "File::GlobMapper needs Perl 5.005 or better - you have Perl $]" ) if $] < 5.005 ; @@ -26,7 +26,7 @@ plan tests => 68 + $extra ; - use_ok('File::GlobMapper') ; + use_ok('File::GlobMapper') ; } { @@ -36,21 +36,21 @@ for my $delim ( qw/ ( ) { } [ ] / ) { - $gm = new File::GlobMapper("${delim}abc", '*.X'); + $gm = File::GlobMapper->new("${delim}abc", '*.X'); ok ! $gm, " new failed" ; - is $File::GlobMapper::Error, "Unmatched $delim in input fileglob", + is $File::GlobMapper::Error, "Unmatched $delim in input fileglob", " catch unmatched $delim"; } for my $delim ( qw/ ( ) [ ] / ) { - $gm = new File::GlobMapper("{${delim}abc}", '*.X'); + $gm = File::GlobMapper->new("{${delim}abc}", '*.X'); ok ! $gm, " new failed" ; - is $File::GlobMapper::Error, "Unmatched $delim in input fileglob", + is $File::GlobMapper::Error, "Unmatched $delim in input fileglob", " catch unmatched $delim inside {}"; } - + } { @@ -58,10 +58,10 @@ #my $tmpDir = 'td'; my $tmpDir ; - my $lex = new LexDir $tmpDir; + my $lex = LexDir->new( $tmpDir ); my $d = quotemeta $tmpDir; - my $gm = new File::GlobMapper("$d/Z*", '*.X'); + my $gm = File::GlobMapper->new("$d/Z*", '*.X'); ok $gm, " created GlobMapper object" ; my $map = $gm->getFileMap() ; @@ -77,12 +77,12 @@ #my $tmpDir = 'td'; my $tmpDir ; - my $lex = new LexDir $tmpDir; + my $lex = LexDir->new( $tmpDir ); #mkdir $tmpDir, 0777 ; touch map { "$tmpDir/$_.tmp" } qw( abc1 abc2 abc3 ) ; - my $gm = new File::GlobMapper("$tmpDir/ab*.tmp", "*X"); + my $gm = File::GlobMapper->new("$tmpDir/ab*.tmp", "*X"); ok $gm, " created GlobMapper object" ; my $map = $gm->getFileMap() ; @@ -106,12 +106,12 @@ #my $tmpDir = 'td'; my $tmpDir ; - my $lex = new LexDir $tmpDir; + my $lex = LexDir->new( $tmpDir ); #mkdir $tmpDir, 0777 ; touch map { "$tmpDir/$_.tmp" } qw( abc1 abc2 abc3 ) ; - my $gm = new File::GlobMapper("$tmpDir/abc2.tmp", "$tmpDir/abc2.tmp"); + my $gm = File::GlobMapper->new("$tmpDir/abc2.tmp", "$tmpDir/abc2.tmp"); ok $gm, " created GlobMapper object" ; my $map = $gm->getFileMap() ; @@ -130,12 +130,12 @@ title 'test wildcard mapping of {} in destination'; my $tmpDir ;#= 'td'; - my $lex = new LexDir $tmpDir; + my $lex = LexDir->new( $tmpDir ); #mkdir $tmpDir, 0777 ; touch map { "$tmpDir/$_.tmp" } qw( abc1 abc2 abc3 ) ; - my $gm = new File::GlobMapper("$tmpDir/abc{1,3}.tmp", "*.X"); + my $gm = File::GlobMapper->new("$tmpDir/abc{1,3}.tmp", "*.X"); #diag "Input pattern is $gm->{InputPattern}"; ok $gm, " created GlobMapper object" ; @@ -146,7 +146,7 @@ [map { "$tmpDir/$_" } qw(abc3.tmp abc3.tmp.X)], ], " got mapping"; - $gm = new File::GlobMapper("$tmpDir/abc{1,3}.tmp", "$tmpDir/X.#1.X") + $gm = File::GlobMapper->new("$tmpDir/abc{1,3}.tmp", "$tmpDir/X.#1.X") or diag $File::GlobMapper::Error ; #diag "Input pattern is $gm->{InputPattern}"; ok $gm, " created GlobMapper object" ; @@ -165,13 +165,13 @@ title 'test wildcard mapping of multiple * to #'; my $tmpDir ;#= 'td'; - my $lex = new LexDir $tmpDir; + my $lex = LexDir->new( $tmpDir ); #mkdir $tmpDir, 0777 ; touch map { "$tmpDir/$_.tmp" } qw( abc1 abc2 abc3 ) ; - my $gm = new File::GlobMapper("$tmpDir/*b(*).tmp", "$tmpDir/X-#2-#1-X"); - ok $gm, " created GlobMapper object" + my $gm = File::GlobMapper->new("$tmpDir/*b(*).tmp", "$tmpDir/X-#2-#1-X"); + ok $gm, " created GlobMapper object" or diag $File::GlobMapper::Error ; my $map = $gm->getFileMap() ; @@ -187,12 +187,12 @@ title 'test wildcard mapping of multiple ? to #'; my $tmpDir ;#= 'td'; - my $lex = new LexDir $tmpDir; + my $lex = LexDir->new( $tmpDir ); #mkdir $tmpDir, 0777 ; touch map { "$tmpDir/$_.tmp" } qw( abc1 abc2 abc3 ) ; - my $gm = new File::GlobMapper("$tmpDir/?b(*).tmp", "$tmpDir/X-#2-#1-X"); + my $gm = File::GlobMapper->new("$tmpDir/?b(*).tmp", "$tmpDir/X-#2-#1-X"); ok $gm, " created GlobMapper object" ; my $map = $gm->getFileMap() ; @@ -208,12 +208,12 @@ title 'test wildcard mapping of multiple ?,* and [] to #'; my $tmpDir ;#= 'td'; - my $lex = new LexDir $tmpDir; + my $lex = LexDir->new( $tmpDir ); #mkdir $tmpDir, 0777 ; touch map { "$tmpDir/$_.tmp" } qw( abc1 abc2 abc3 ) ; - my $gm = new File::GlobMapper("$tmpDir/?b[a-z]*.tmp", "$tmpDir/X-#3-#2-#1-X"); + my $gm = File::GlobMapper->new("$tmpDir/?b[a-z]*.tmp", "$tmpDir/X-#3-#2-#1-X"); ok $gm, " created GlobMapper object" ; #diag "Input pattern is $gm->{InputPattern}"; @@ -230,12 +230,12 @@ title 'input glob matches a file multiple times'; my $tmpDir ;#= 'td'; - my $lex = new LexDir $tmpDir; + my $lex = LexDir->new( $tmpDir ); #mkdir $tmpDir, 0777 ; touch "$tmpDir/abc.tmp"; - my $gm = new File::GlobMapper("$tmpDir/{a*,*c}.tmp", '*.X'); + my $gm = File::GlobMapper->new("$tmpDir/{a*,*c}.tmp", '*.X'); ok $gm, " created GlobMapper object" ; my $map = $gm->getFileMap() ; @@ -253,12 +253,12 @@ title 'multiple input files map to one output file'; my $tmpDir ;#= 'td'; - my $lex = new LexDir $tmpDir; + my $lex = LexDir->new( $tmpDir ); #mkdir $tmpDir, 0777 ; touch map { "$tmpDir/$_.tmp" } qw( abc def) ; - my $gm = new File::GlobMapper("$tmpDir/*.tmp", "$tmpDir/fred"); + my $gm = File::GlobMapper->new("$tmpDir/*.tmp", "$tmpDir/fred"); ok ! $gm, " did not create GlobMapper object" ; is $File::GlobMapper::Error, 'multiple input files map to one output file', " Error is expected" ; @@ -273,13 +273,13 @@ title "globmap" ; my $tmpDir ;#= 'td'; - my $lex = new LexDir $tmpDir; + my $lex = LexDir->new( $tmpDir ); #mkdir $tmpDir, 0777 ; touch map { "$tmpDir/$_.tmp" } qw( abc1 abc2 abc3 ) ; my $map = File::GlobMapper::globmap("$tmpDir/*b*.tmp", "$tmpDir/X-#2-#1-X"); - ok $map, " got map" + ok $map, " got map" or diag $File::GlobMapper::Error ; is @{ $map }, 3, " returned 3 maps"; @@ -305,4 +305,3 @@ # {} and {,} are special cases # {ab*,de*} # {abc,{},{de,f}} => abc {} de f - diff -Nru perl-5.32.1/cpan/IO-Socket-IP/lib/IO/Socket/IP.pm perl-5.34.0/cpan/IO-Socket-IP/lib/IO/Socket/IP.pm --- perl-5.32.1/cpan/IO-Socket-IP/lib/IO/Socket/IP.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/lib/IO/Socket/IP.pm 2020-10-04 22:17:12.000000000 +0000 @@ -1,17 +1,20 @@ # You may distribute under the terms of either the GNU General Public License # or the Artistic License (the same terms as Perl itself) # -# (C) Paul Evans, 2010-2015 -- leonerd@leonerd.org.uk +# (C) Paul Evans, 2010-2020 -- leonerd@leonerd.org.uk package IO::Socket::IP; + +use v5; +use strict; +use warnings; + # $VERSION needs to be set before use base 'IO::Socket' # - https://rt.cpan.org/Ticket/Display.html?id=92107 BEGIN { - $VERSION = '0.39'; + our $VERSION = '0.41'; } -use strict; -use warnings; use base qw( IO::Socket ); use Carp; @@ -96,11 +99,10 @@ =head1 REPLACING C DEFAULT BEHAVIOUR -By placing C<-register> in the import list, L uses -C rather than C as the class that handles -C. C will also use C rather than -C to handle C, provided that the C -constant is available. +By placing C<-register> in the import list to C, it will +register itself with L as the class that handles C. It +will also ask to handle C as well, provided that constant is +available. Changing C's default behaviour means that calling the C constructor with either C or C as the @@ -167,7 +169,9 @@ =cut -=head2 $sock = IO::Socket::IP->new( %args ) +=head2 new + + $sock = IO::Socket::IP->new( %args ) Creates a new C object, containing a newly created socket handle according to the named arguments passed. The recognised arguments are: @@ -353,7 +357,9 @@ this may be from C<$!> or it may be some other string; not every failure necessarily has an associated C value. -=head2 $sock = IO::Socket::IP->new( $peeraddr ) +=head2 new (one arg) + + $sock = IO::Socket::IP->new( $peeraddr ) As a special case, if the constructor is passed a single argument (as opposed to an even-sized list of key/value pairs), it is taken to be the value @@ -817,7 +823,9 @@ } } -=head2 ( $host, $service ) = $sock->sockhost_service( $numeric ) +=head2 sockhost_service + + ( $host, $service ) = $sock->sockhost_service( $numeric ) Returns the hostname and service name of the local address (that is, the socket address given by the C method). @@ -840,19 +848,27 @@ $self->_get_host_service( $self->sockname, $numeric ? NI_NUMERICHOST|NI_NUMERICSERV : 0 ); } -=head2 $addr = $sock->sockhost +=head2 sockhost + + $addr = $sock->sockhost Return the numeric form of the local address as a textual representation -=head2 $port = $sock->sockport +=head2 sockport + + $port = $sock->sockport Return the numeric form of the local port number -=head2 $host = $sock->sockhostname +=head2 sockhostname + + $host = $sock->sockhostname Return the resolved name of the local address -=head2 $service = $sock->sockservice +=head2 sockservice + + $service = $sock->sockservice Return the resolved name of the local port number @@ -864,7 +880,9 @@ sub sockhostname { my $self = shift; scalar +( $self->_get_host_service( $self->sockname, 0, NIx_NOSERV ) )[0] } sub sockservice { my $self = shift; scalar +( $self->_get_host_service( $self->sockname, 0, NIx_NOHOST ) )[1] } -=head2 $addr = $sock->sockaddr +=head2 sockaddr + + $addr = $sock->sockaddr Return the local address as a binary octet string @@ -872,7 +890,9 @@ sub sockaddr { my $self = shift; _unpack_sockaddr $self->sockname } -=head2 ( $host, $service ) = $sock->peerhost_service( $numeric ) +=head2 peerhost_service + + ( $host, $service ) = $sock->peerhost_service( $numeric ) Returns the hostname and service name of the peer address (that is, the socket address given by the C method), similar to the @@ -893,19 +913,27 @@ $self->_get_host_service( $self->peername, $numeric ? NI_NUMERICHOST|NI_NUMERICSERV : 0 ); } -=head2 $addr = $sock->peerhost +=head2 peerhost + + $addr = $sock->peerhost Return the numeric form of the peer address as a textual representation -=head2 $port = $sock->peerport +=head2 peerport + + $port = $sock->peerport Return the numeric form of the peer port number -=head2 $host = $sock->peerhostname +=head2 peerhostname + + $host = $sock->peerhostname Return the resolved name of the peer address -=head2 $service = $sock->peerservice +=head2 peerservice + + $service = $sock->peerservice Return the resolved name of the peer port number @@ -917,7 +945,9 @@ sub peerhostname { my $self = shift; scalar +( $self->_get_host_service( $self->peername, 0, NIx_NOSERV ) )[0] } sub peerservice { my $self = shift; scalar +( $self->_get_host_service( $self->peername, 0, NIx_NOHOST ) )[1] } -=head2 $addr = $peer->peeraddr +=head2 peeraddr + + $addr = $peer->peeraddr Return the peer address as a binary octet string @@ -967,7 +997,9 @@ } } -=head2 $inet = $sock->as_inet +=head2 as_inet + + $inet = $sock->as_inet Returns a new L instance wrapping the same filehandle. This may be useful in cases where it is required, for backward-compatibility, to @@ -1089,7 +1121,9 @@ C<...Service> or C<...Port> argument is also defined, the one parsed from the C<...Host> argument will take precedence and the other will be ignored. -=head2 ( $host, $port ) = IO::Socket::IP->split_addr( $addr ) +=head2 split_addr + + ( $host, $port ) = IO::Socket::IP->split_addr( $addr ) Utility method that provides the parsing functionality described above. Returns a 2-element list, containing either the split hostname and port @@ -1125,7 +1159,9 @@ return ( $addr, undef ); } -=head2 $addr = IO::Socket::IP->join_addr( $host, $port ) +=head2 join_addr + + $addr = IO::Socket::IP->join_addr( $host, $port ) Utility method that performs the reverse of C, returning a string formed by joining the specified host address and port number. The host address diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/00use.t perl-5.34.0/cpan/IO-Socket-IP/t/00use.t --- perl-5.32.1/cpan/IO-Socket-IP/t/00use.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/00use.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/01local-client-v4.t perl-5.34.0/cpan/IO-Socket-IP/t/01local-client-v4.t --- perl-5.32.1/cpan/IO-Socket-IP/t/01local-client-v4.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/01local-client-v4.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/02local-server-v4.t perl-5.34.0/cpan/IO-Socket-IP/t/02local-server-v4.t --- perl-5.32.1/cpan/IO-Socket-IP/t/02local-server-v4.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/02local-server-v4.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/03local-cross-v4.t perl-5.34.0/cpan/IO-Socket-IP/t/03local-cross-v4.t --- perl-5.32.1/cpan/IO-Socket-IP/t/03local-cross-v4.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/03local-cross-v4.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/04local-client-v6.t perl-5.34.0/cpan/IO-Socket-IP/t/04local-client-v6.t --- perl-5.32.1/cpan/IO-Socket-IP/t/04local-client-v6.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/04local-client-v6.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/05local-server-v6.t perl-5.34.0/cpan/IO-Socket-IP/t/05local-server-v6.t --- perl-5.32.1/cpan/IO-Socket-IP/t/05local-server-v6.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/05local-server-v6.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/06local-cross-v6.t perl-5.34.0/cpan/IO-Socket-IP/t/06local-cross-v6.t --- perl-5.32.1/cpan/IO-Socket-IP/t/06local-cross-v6.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/06local-cross-v6.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/10args.t perl-5.34.0/cpan/IO-Socket-IP/t/10args.t --- perl-5.32.1/cpan/IO-Socket-IP/t/10args.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/10args.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/11sockopts.t perl-5.34.0/cpan/IO-Socket-IP/t/11sockopts.t --- perl-5.32.1/cpan/IO-Socket-IP/t/11sockopts.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/11sockopts.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/12port-fallback.t perl-5.34.0/cpan/IO-Socket-IP/t/12port-fallback.t --- perl-5.32.1/cpan/IO-Socket-IP/t/12port-fallback.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/12port-fallback.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/13addrinfo.t perl-5.34.0/cpan/IO-Socket-IP/t/13addrinfo.t --- perl-5.32.1/cpan/IO-Socket-IP/t/13addrinfo.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/13addrinfo.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/14fileno.t perl-5.34.0/cpan/IO-Socket-IP/t/14fileno.t --- perl-5.32.1/cpan/IO-Socket-IP/t/14fileno.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/14fileno.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/15io-socket.t perl-5.34.0/cpan/IO-Socket-IP/t/15io-socket.t --- perl-5.32.1/cpan/IO-Socket-IP/t/15io-socket.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/15io-socket.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/16v6only.t perl-5.34.0/cpan/IO-Socket-IP/t/16v6only.t --- perl-5.32.1/cpan/IO-Socket-IP/t/16v6only.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/16v6only.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/17gai-flags.t perl-5.34.0/cpan/IO-Socket-IP/t/17gai-flags.t --- perl-5.32.1/cpan/IO-Socket-IP/t/17gai-flags.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/17gai-flags.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/18fdopen.t perl-5.34.0/cpan/IO-Socket-IP/t/18fdopen.t --- perl-5.32.1/cpan/IO-Socket-IP/t/18fdopen.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/18fdopen.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/19no-addrs.t perl-5.34.0/cpan/IO-Socket-IP/t/19no-addrs.t --- perl-5.32.1/cpan/IO-Socket-IP/t/19no-addrs.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/19no-addrs.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/20subclass.t perl-5.34.0/cpan/IO-Socket-IP/t/20subclass.t --- perl-5.32.1/cpan/IO-Socket-IP/t/20subclass.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/20subclass.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/21as-inet.t perl-5.34.0/cpan/IO-Socket-IP/t/21as-inet.t --- perl-5.32.1/cpan/IO-Socket-IP/t/21as-inet.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/21as-inet.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/22timeout.t perl-5.34.0/cpan/IO-Socket-IP/t/22timeout.t --- perl-5.32.1/cpan/IO-Socket-IP/t/22timeout.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/22timeout.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/30nonblocking-connect.t perl-5.34.0/cpan/IO-Socket-IP/t/30nonblocking-connect.t --- perl-5.32.1/cpan/IO-Socket-IP/t/30nonblocking-connect.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/30nonblocking-connect.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/31nonblocking-connect-internet.t perl-5.34.0/cpan/IO-Socket-IP/t/31nonblocking-connect-internet.t --- perl-5.32.1/cpan/IO-Socket-IP/t/31nonblocking-connect-internet.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/31nonblocking-connect-internet.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Socket-IP/t/99pod.t perl-5.34.0/cpan/IO-Socket-IP/t/99pod.t --- perl-5.32.1/cpan/IO-Socket-IP/t/99pod.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Socket-IP/t/99pod.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl +use v5; use strict; use warnings; diff -Nru perl-5.32.1/cpan/IO-Zlib/t/basic.t perl-5.34.0/cpan/IO-Zlib/t/basic.t --- perl-5.32.1/cpan/IO-Zlib/t/basic.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Zlib/t/basic.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,31 +1,34 @@ +use strict; +use warnings; + use IO::Zlib; sub ok { my ($no, $ok) = @_ ; - - #++ $total ; - #++ $totalBad unless $ok ; - print "ok $no\n" if $ok ; print "not ok $no\n" unless $ok ; } -$name="test.gz"; +my $name = "test.gz"; print "1..17\n"; -$hello = <new($name, "wb")); ok(2, $file->print($hello)); ok(3, $file->opened()); ok(4, $file->close()); ok(5, !$file->opened()); +my $uncomp; + ok(6, $file = IO::Zlib->new()); ok(7, $file->open($name, "rb")); ok(8, !$file->eof()); diff -Nru perl-5.32.1/cpan/IO-Zlib/t/external.t perl-5.34.0/cpan/IO-Zlib/t/external.t --- perl-5.32.1/cpan/IO-Zlib/t/external.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Zlib/t/external.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,15 @@ +use strict; +use warnings; + +use IO::Zlib; + +sub ok +{ + my ($no, $ok) = @_ ; + print "ok $no\n" if $ok ; + print "not ok $no\n" unless $ok ; +} + # Test this only iff we have an executable /usr/bin/gzip # AND we have /usr/bin in our PATH # AND we have a useable /usr/bin directory. @@ -6,20 +18,14 @@ my $gzip = "/usr/bin/gzip"; -unless( -x $gzip && +unless (-x $gzip && ":$ENV{PATH}:" =~ m!:/usr/bin:! && - -d "/usr/bin" && -x "/usr/bin") { + -d "/usr/bin" && -x "/usr/bin") +{ print "1..0 # Skip: no $gzip\n"; exit 0; } -sub ok -{ - my ($no, $ok) = @_ ; - print "ok $no\n" if $ok ; - print "not ok $no\n" unless $ok ; -} - my $hasCompressZlib; BEGIN { @@ -27,92 +33,78 @@ $hasCompressZlib = $@ ? 0 : 1; } -use IO::Zlib; - -print "1..33\n"; - -# Other export functionality (none) is tested in import.t. +print "1..35\n"; -ok(1, - $hasCompressZlib == IO::Zlib::has_Compress_Zlib()); +ok(1, $hasCompressZlib == IO::Zlib::has_Compress_Zlib()); eval "use IO::Zlib qw(:gzip_external)"; -ok(2, - $@ =~ /^IO::Zlib::import: ':gzip_external' requires an argument /); -eval "use IO::Zlib"; -ok(3, !$@); +ok(2, $@ =~ /^IO::Zlib::import: ':gzip_external' requires an argument /); -ok(4, - $hasCompressZlib || IO::Zlib::gzip_used()); - -ok(5, - !defined IO::Zlib::gzip_external()); - -ok(6, - IO::Zlib::gzip_read_open() eq 'gzip -dc %s |'); - -ok(7, - IO::Zlib::gzip_write_open() eq '| gzip > %s'); +eval "use IO::Zlib"; -ok(8, - ($hasCompressZlib && \&IO::Zlib::gzopen == \&Compress::Zlib::gzopen) || - \&IO::Zlib::gzopen == \&IO::Zlib::gzopen_external); +ok(3, !$@); +ok(4, $hasCompressZlib || IO::Zlib::gzip_used()); +ok(5, !defined IO::Zlib::gzip_external()); +ok(6, IO::Zlib::gzip_read_open() eq 'gzip -dc %s |'); +ok(7, IO::Zlib::gzip_write_open() eq '| gzip > %s'); +ok(8, \&IO::Zlib::gzopen == \&IO::Zlib::gzopen_external || + ($hasCompressZlib && \&IO::Zlib::gzopen == \&Compress::Zlib::gzopen)); eval "use IO::Zlib qw(:gzip_external 0)"; -ok(9, - !IO::Zlib::gzip_external()); - -ok(10, - ($hasCompressZlib && \&IO::Zlib::gzopen == \&Compress::Zlib::gzopen) || - (!$hasCompressZlib && - $@ =~ /^IO::Zlib::import: no Compress::Zlib and no external gzip /)); +ok(9, !IO::Zlib::gzip_external()); +ok(10, ($hasCompressZlib && \&IO::Zlib::gzopen == \&Compress::Zlib::gzopen) || + (!$hasCompressZlib && $@ =~ /^IO::Zlib::import: no Compress::Zlib and no external gzip /)); eval "use IO::Zlib qw(:gzip_external 1)"; -ok(11, - IO::Zlib::gzip_used()); - -ok(12, - IO::Zlib::gzip_external()); - -ok(13, - \&IO::Zlib::gzopen == \&IO::Zlib::gzopen_external); +ok(11, IO::Zlib::gzip_used()); +ok(12, IO::Zlib::gzip_external()); +ok(13, \&IO::Zlib::gzopen == \&IO::Zlib::gzopen_external); eval 'IO::Zlib->new("foo", "xyz")'; + ok(14, $@ =~ /^IO::Zlib::gzopen_external: mode 'xyz' is illegal /); # The following is a copy of the basic.t, shifted up by 14 tests, # the difference being that now we should be using the external gzip. -$name="test.gz"; +my $name="test.gz"; -$hello = <new($name, "wb")); ok(16, $file->print($hello)); ok(17, $file->opened()); ok(18, $file->close()); ok(19, !$file->opened()); +my $uncomp; + ok(20, $file = IO::Zlib->new()); ok(21, $file->open($name, "rb")); ok(22, !$file->eof()); ok(23, $file->read($uncomp, 1024) == length($hello)); -ok(24, $file->eof()); -ok(25, $file->opened()); -ok(26, $file->close()); -ok(27, !$file->opened()); +ok(24, $uncomp eq $hello); +ok(25, $file->eof()); +ok(26, $file->opened()); +ok(27, $file->close()); +ok(28, !$file->opened()); + +$file = IO::Zlib->new($name, "rb"); +ok(29, $file->read($uncomp, 1024, length($uncomp)) == length($hello)); +ok(30, $uncomp eq $hello . $hello); +$file->close(); unlink($name); -ok(28, $hello eq $uncomp); - -ok(29, !defined(IO::Zlib->new($name, "rb"))); +ok(31, !defined(IO::Zlib->new($name, "rb"))); # Then finally test modifying the open commands. @@ -120,23 +112,18 @@ eval "use IO::Zlib ':gzip_read_open' => '$new_read'"; -ok(30, - IO::Zlib::gzip_read_open() eq $new_read); +ok(32, IO::Zlib::gzip_read_open() eq $new_read); eval "use IO::Zlib ':gzip_read_open' => 'bad'"; -ok(31, - $@ =~ /^IO::Zlib::import: ':gzip_read_open' 'bad' is illegal /); +ok(33, $@ =~ /^IO::Zlib::import: ':gzip_read_open' 'bad' is illegal /); my $new_write = '| gzip.exe %s'; eval "use IO::Zlib ':gzip_write_open' => '$new_write'"; -ok(32, - IO::Zlib::gzip_write_open() eq $new_write); +ok(34, IO::Zlib::gzip_write_open() eq $new_write); eval "use IO::Zlib ':gzip_write_open' => 'bad'"; -ok(33, - $@ =~ /^IO::Zlib::import: ':gzip_write_open' 'bad' is illegal /); - +ok(35, $@ =~ /^IO::Zlib::import: ':gzip_write_open' 'bad' is illegal /); diff -Nru perl-5.32.1/cpan/IO-Zlib/t/getc.t perl-5.34.0/cpan/IO-Zlib/t/getc.t --- perl-5.32.1/cpan/IO-Zlib/t/getc.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Zlib/t/getc.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,21 +1,21 @@ +use strict; +use warnings; + use IO::Zlib; sub ok { my ($no, $ok) = @_ ; - - #++ $total ; - #++ $totalBad unless $ok ; - print "ok $no\n" if $ok ; print "not ok $no\n" unless $ok ; } -$name="test.gz"; +my $name = "test.gz"; print "1..10\n"; -$text = "abcd"; +my $text = "abcd"; +my $file; ok(1, $file = IO::Zlib->new($name, "wb")); ok(2, $file->print($text)); diff -Nru perl-5.32.1/cpan/IO-Zlib/t/getline.t perl-5.34.0/cpan/IO-Zlib/t/getline.t --- perl-5.32.1/cpan/IO-Zlib/t/getline.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Zlib/t/getline.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,21 +1,20 @@ +use strict; +use warnings; + use IO::Zlib; sub ok { my ($no, $ok) = @_ ; - - #++ $total ; - #++ $totalBad unless $ok ; - print "ok $no\n" if $ok ; print "not ok $no\n" unless $ok ; } -$name="test.gz"; +my $name = "test.gz"; print "1..23\n"; -@text = (<new($name, "wb")); ok(2, $file->print($text)); @@ -41,6 +41,8 @@ ok(11, $file->eof()); ok(12, $file->close()); +my @lines; + ok(13, $file = IO::Zlib->new($name, "rb")); ok(14, !$file->eof()); eval '$file->getlines'; diff -Nru perl-5.32.1/cpan/IO-Zlib/t/import.t perl-5.34.0/cpan/IO-Zlib/t/import.t --- perl-5.32.1/cpan/IO-Zlib/t/import.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Zlib/t/import.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,6 @@ +use strict; +use warnings; + print "1..1\n"; sub ok @@ -10,4 +13,5 @@ # The :gzip tags are tested in external.t. eval "use IO::Zlib qw(foo bar)"; + ok(1, $@ =~ /^IO::Zlib::import: 'foo bar' is illegal /); diff -Nru perl-5.32.1/cpan/IO-Zlib/t/large.t perl-5.34.0/cpan/IO-Zlib/t/large.t --- perl-5.32.1/cpan/IO-Zlib/t/large.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Zlib/t/large.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,31 +1,34 @@ +use strict; +use warnings; + use IO::Zlib; sub ok { my ($no, $ok) = @_ ; - - #++ $total ; - #++ $totalBad unless $ok ; - print "ok $no\n" if $ok ; print "not ok $no\n" unless $ok ; } -$name="test.gz"; +my $name = "test.gz"; print "1..7\n"; -$contents = ""; +my $contents = ""; foreach (1 .. 5000) { $contents .= chr(int(rand(255))); } +my $file; + ok(1, $file = IO::Zlib->new($name, "wb")); ok(2, $file->print($contents)); ok(3, $file->close()); +my $uncomp; + ok(4, $file = IO::Zlib->new($name, "rb")); ok(5, $file->read($uncomp, 8192) == length($contents)); ok(6, $file->close()); diff -Nru perl-5.32.1/cpan/IO-Zlib/t/tied.t perl-5.34.0/cpan/IO-Zlib/t/tied.t --- perl-5.32.1/cpan/IO-Zlib/t/tied.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Zlib/t/tied.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,21 +1,20 @@ +use strict; +use warnings; + use IO::Zlib; sub ok { my ($no, $ok) = @_ ; - - #++ $total ; - #++ $totalBad unless $ok ; - print "ok $no\n" if $ok ; print "not ok $no\n" unless $ok ; } -$name="test.gz"; +my $name = "test.gz"; print "1..11\n"; -$hello = < eq "hello - 123\n"); diff -Nru perl-5.32.1/cpan/IO-Zlib/t/uncomp1.t perl-5.34.0/cpan/IO-Zlib/t/uncomp1.t --- perl-5.32.1/cpan/IO-Zlib/t/uncomp1.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Zlib/t/uncomp1.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,33 +1,38 @@ +use strict; +use warnings; + use IO::Zlib; sub ok { my ($no, $ok) = @_ ; - - #++ $total ; - #++ $totalBad unless $ok ; - print "ok $no\n" if $ok ; print "not ok $no\n" unless $ok ; } print "1..10\n"; -$hello = <$name")) { +if (open(FH, ">$name")) +{ binmode FH; print FH $hello; close FH; -} else { +} +else +{ die "$name: $!"; } +my $file; +my $uncomp; + ok(1, $file = IO::Zlib->new()); ok(2, $file->open($name, "rb")); ok(3, !$file->eof()); @@ -42,4 +47,3 @@ ok(9, $hello eq $uncomp); ok(10, !defined(IO::Zlib->new($name, "rb"))); - diff -Nru perl-5.32.1/cpan/IO-Zlib/t/uncomp2.t perl-5.34.0/cpan/IO-Zlib/t/uncomp2.t --- perl-5.32.1/cpan/IO-Zlib/t/uncomp2.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Zlib/t/uncomp2.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,33 +1,38 @@ +use strict; +use warnings; + require IO::Zlib; # uncomp2.t is like uncomp1.t but without 'use' sub ok { my ($no, $ok) = @_ ; - - #++ $total ; - #++ $totalBad unless $ok ; - print "ok $no\n" if $ok ; print "not ok $no\n" unless $ok ; } print "1..10\n"; -$hello = <$name")) { +if (open(FH, ">$name")) +{ binmode FH; print FH $hello; close FH; -} else { +} +else +{ die "$name: $!"; } +my $file; +my $uncomp; + ok(1, $file = IO::Zlib->new()); ok(2, $file->open($name, "rb")); ok(3, !$file->eof()); diff -Nru perl-5.32.1/cpan/IO-Zlib/Zlib.pm perl-5.34.0/cpan/IO-Zlib/Zlib.pm --- perl-5.32.1/cpan/IO-Zlib/Zlib.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IO-Zlib/Zlib.pm 2020-10-04 22:17:12.000000000 +0000 @@ -6,8 +6,6 @@ package IO::Zlib; -$VERSION = "1.10"; - =head1 NAME IO::Zlib - IO:: style interface to L @@ -286,129 +284,170 @@ require 5.006; use strict; -use vars qw($VERSION $AUTOLOAD @ISA); +use warnings; use Carp; use Fcntl qw(SEEK_SET); +use Symbol; +use Tie::Handle; + +our $VERSION = "1.11"; +our $AUTOLOAD; +our @ISA = qw(Tie::Handle); my $has_Compress_Zlib; +my $gzip_external; +my $gzip_used; +my $gzip_read_open = "gzip -dc %s |"; +my $gzip_write_open = "| gzip > %s"; my $aliased; -sub has_Compress_Zlib { - $has_Compress_Zlib; -} - BEGIN { eval { require Compress::Zlib }; $has_Compress_Zlib = $@ || $Compress::Zlib::VERSION < 2.000 ? 0 : 1; } -use Symbol; -use Tie::Handle; - -# These might use some $^O logic. -my $gzip_read_open = "gzip -dc %s |"; -my $gzip_write_open = "| gzip > %s"; - -my $gzip_external; -my $gzip_used; +sub has_Compress_Zlib +{ + $has_Compress_Zlib; +} -sub gzip_read_open { - $gzip_read_open; +sub gzip_external +{ + $gzip_external; } -sub gzip_write_open { - $gzip_write_open; +sub gzip_used +{ + $gzip_used; } -sub gzip_external { - $gzip_external; +sub gzip_read_open +{ + $gzip_read_open; } -sub gzip_used { - $gzip_used; +sub gzip_write_open +{ + $gzip_write_open; } -sub can_gunzip { +sub can_gunzip +{ $has_Compress_Zlib || $gzip_external; } -sub _import { +sub _import +{ my $import = shift; - while (@_) { - if ($_[0] eq ':gzip_external') { - shift; - if (@_) { - $gzip_external = shift; - } else { - croak "$import: ':gzip_external' requires an argument"; - } - } - elsif ($_[0] eq ':gzip_read_open') { - shift; - if (@_) { - $gzip_read_open = shift; - croak "$import: ':gzip_read_open' '$gzip_read_open' is illegal" - unless $gzip_read_open =~ /^.+%s.+\|\s*$/; - } else { - croak "$import: ':gzip_read_open' requires an argument"; - } - } - elsif ($_[0] eq ':gzip_write_open') { - shift; - if (@_) { - $gzip_write_open = shift; - croak "$import: ':gzip_write_open' '$gzip_read_open' is illegal" - unless $gzip_write_open =~ /^\s*\|.+%s.*$/; - } else { - croak "$import: ':gzip_write_open' requires an argument"; - } - } - else { - last; - } + + while (@_) + { + if ($_[0] eq ':gzip_external') + { + shift; + + if (@_) + { + $gzip_external = shift; + } + else + { + croak "$import: ':gzip_external' requires an argument"; + } + } + elsif ($_[0] eq ':gzip_read_open') + { + shift; + + if (@_) + { + $gzip_read_open = shift; + + croak "$import: ':gzip_read_open' '$gzip_read_open' is illegal" + unless $gzip_read_open =~ /^.+%s.+\|\s*$/; + } + else + { + croak "$import: ':gzip_read_open' requires an argument"; + } + } + elsif ($_[0] eq ':gzip_write_open') + { + shift; + + if (@_) + { + $gzip_write_open = shift; + + croak "$import: ':gzip_write_open' '$gzip_read_open' is illegal" + unless $gzip_write_open =~ /^\s*\|.+%s.*$/; + } + else + { + croak "$import: ':gzip_write_open' requires an argument"; + } + } + else + { + last; + } } + return @_; } -sub _alias { +sub _alias +{ my $import = shift; - if ((!$has_Compress_Zlib && !defined $gzip_external) || $gzip_external) { - # The undef *gzopen is really needed only during - # testing where we eval several 'use IO::Zlib's. - undef *gzopen; - *gzopen = \&gzopen_external; - *IO::Handle::gzread = \&gzread_external; - *IO::Handle::gzwrite = \&gzwrite_external; + + if ($gzip_external || (!$has_Compress_Zlib && !defined($gzip_external))) + { + require IO::Handle; + + undef *gzopen; + *gzopen = \&gzopen_external; + + *IO::Handle::gzread = \&gzread_external; + *IO::Handle::gzwrite = \&gzwrite_external; *IO::Handle::gzreadline = \&gzreadline_external; - *IO::Handle::gzeof = \&gzeof_external; - *IO::Handle::gzclose = \&gzclose_external; - $gzip_used = 1; - } else { - croak "$import: no Compress::Zlib and no external gzip" - unless $has_Compress_Zlib; - *gzopen = \&Compress::Zlib::gzopen; - *gzread = \&Compress::Zlib::gzread; - *gzwrite = \&Compress::Zlib::gzwrite; + *IO::Handle::gzeof = \&gzeof_external; + *IO::Handle::gzclose = \&gzclose_external; + + $gzip_used = 1; + } + elsif ($has_Compress_Zlib) + { + *gzopen = \&Compress::Zlib::gzopen; + *gzread = \&Compress::Zlib::gzread; + *gzwrite = \&Compress::Zlib::gzwrite; *gzreadline = \&Compress::Zlib::gzreadline; - *gzeof = \&Compress::Zlib::gzeof; + *gzeof = \&Compress::Zlib::gzeof; + } + else + { + croak "$import: no Compress::Zlib and no external gzip"; } + $aliased = 1; } -sub import { - shift; +sub import +{ + my $class = shift; my $import = "IO::Zlib::import"; - if (@_) { - if (_import($import, @_)) { - croak "$import: '@_' is illegal"; - } + + if (@_) + { + if (_import($import, @_)) + { + croak "$import: '@_' is illegal"; + } } + _alias($import); } -@ISA = qw(Tie::Handle); - sub TIEHANDLE { my $class = shift; @@ -537,7 +576,7 @@ my $self = shift; croak "IO::Zlib::getlines: must be called in list context" - unless wantarray; + unless wantarray; return tied(*{$self})->READLINE(); } @@ -559,89 +598,138 @@ return tied(*{$self})->$AUTOLOAD(@_); } -sub gzopen_external { - my ($filename, $mode) = @_; - require IO::Handle; +sub gzopen_external +{ + my $filename = shift; + my $mode = shift; my $fh = IO::Handle->new(); - if ($mode =~ /r/) { - # Because someone will try to read ungzipped files - # with this we peek and verify the signature. Yes, - # this means that we open the file twice (if it is - # gzipped). - # Plenty of race conditions exist in this code, but - # the alternative would be to capture the stderr of - # gzip and parse it, which would be a portability nightmare. - if (-e $filename && open($fh, $filename)) { - binmode $fh; - my $sig; - my $rdb = read($fh, $sig, 2); - if ($rdb == 2 && $sig eq "\x1F\x8B") { - my $ropen = sprintf $gzip_read_open, $filename; - if (open($fh, $ropen)) { - binmode $fh; - return $fh; - } else { - return undef; - } - } - seek($fh, 0, SEEK_SET) or - die "IO::Zlib: open('$filename', 'r'): seek: $!"; - return $fh; - } else { - return undef; - } - } elsif ($mode =~ /w/) { - my $level = ''; - $level = "-$1" if $mode =~ /([1-9])/; - # To maximize portability we would need to open - # two filehandles here, one for "| gzip $level" - # and another for "> $filename", and then when - # writing copy bytes from the first to the second. - # We are using IO::Handle objects for now, however, - # and they can only contain one stream at a time. - my $wopen = sprintf $gzip_write_open, $filename; - if (open($fh, $wopen)) { - $fh->autoflush(1); - binmode $fh; - return $fh; - } else { - return undef; - } - } else { - croak "IO::Zlib::gzopen_external: mode '$mode' is illegal"; + + if ($mode =~ /r/) + { + # Because someone will try to read ungzipped files + # with this we peek and verify the signature. Yes, + # this means that we open the file twice (if it is + # gzipped). + # Plenty of race conditions exist in this code, but + # the alternative would be to capture the stderr of + # gzip and parse it, which would be a portability nightmare. + if (-e $filename && open($fh, $filename)) + { + binmode $fh; + + my $sig; + my $rdb = read($fh, $sig, 2); + + if ($rdb == 2 && $sig eq "\x1F\x8B") + { + my $ropen = sprintf($gzip_read_open, $filename); + + if (open($fh, $ropen)) + { + binmode $fh; + + return $fh; + } + else + { + return undef; + } + } + + seek($fh, 0, SEEK_SET) or + die "IO::Zlib: open('$filename', 'r'): seek: $!"; + + return $fh; + } + else + { + return undef; + } + } + elsif ($mode =~ /w/) + { + my $level = $mode =~ /([1-9])/ ? "-$1" : ""; + + # To maximize portability we would need to open + # two filehandles here, one for "| gzip $level" + # and another for "> $filename", and then when + # writing copy bytes from the first to the second. + # We are using IO::Handle objects for now, however, + # and they can only contain one stream at a time. + my $wopen = sprintf($gzip_write_open, $filename); + + if (open($fh, $wopen)) + { + $fh->autoflush(1); + binmode $fh; + + return $fh; + } + else + { + return undef; + } } + else + { + croak "IO::Zlib::gzopen_external: mode '$mode' is illegal"; + } + return undef; } -sub gzread_external { - # Use read() instead of syswrite() because people may +sub gzread_external +{ + my $file = shift; + my $bufref = \$_[0]; + my $nbytes = $_[1] || 4096; + + # Use read() instead of sysread() because people may # mix reads and readlines, and we don't want to mess # the stdio buffering. See also gzreadline_external() # and gzwrite_external(). - my $nread = read($_[0], $_[1], @_ == 3 ? $_[2] : 4096); - defined $nread ? $nread : -1; + my $nread = read($file, $$bufref, $nbytes); + + return defined $nread ? $nread : -1; } -sub gzwrite_external { +sub gzwrite_external +{ + my $file = shift; + my $buf = shift; + # Using syswrite() is okay (cf. gzread_external()) # since the bytes leave this process and buffering # is therefore not an issue. - my $nwrote = syswrite($_[0], $_[1]); - defined $nwrote ? $nwrote : -1; + my $nwrote = syswrite($file, $buf); + + return defined $nwrote ? $nwrote : -1; } -sub gzreadline_external { +sub gzreadline_external +{ + my $file = shift; + my $bufref = \$_[0]; + # See the comment in gzread_external(). - $_[1] = readline($_[0]); - return defined $_[1] ? length($_[1]) : -1; + $$bufref = readline($file); + + return defined $$bufref ? length($$bufref) : -1; } -sub gzeof_external { - return eof($_[0]); +sub gzeof_external +{ + my $file = shift; + + return eof($file); } -sub gzclose_external { - close($_[0]); +sub gzclose_external +{ + my $file = shift; + + close($file); + # I am not entirely certain why this is needed but it seems # the above close() always fails (as if the stream would have # been already closed - something to do with using external diff -Nru perl-5.32.1/cpan/IPC-SysV/lib/IPC/Msg.pm perl-5.34.0/cpan/IPC-SysV/lib/IPC/Msg.pm --- perl-5.32.1/cpan/IPC-SysV/lib/IPC/Msg.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IPC-SysV/lib/IPC/Msg.pm 2020-11-18 22:09:15.000000000 +0000 @@ -15,7 +15,7 @@ use vars qw($VERSION); use Carp; -$VERSION = '2.07'; +$VERSION = '2.09'; # Figure out if we have support for native sized types my $N = do { my $foo = eval { pack "L!", 0 }; $@ ? '' : '!' }; @@ -42,7 +42,7 @@ } sub new { - @_ == 3 || croak 'new IPC::Msg ( KEY , FLAGS )'; + @_ == 3 || croak 'IPC::Msg->new( KEY , FLAGS )'; my $class = shift; my $id = msgget($_[0],$_[1]); diff -Nru perl-5.32.1/cpan/IPC-SysV/lib/IPC/Semaphore.pm perl-5.34.0/cpan/IPC-SysV/lib/IPC/Semaphore.pm --- perl-5.32.1/cpan/IPC-SysV/lib/IPC/Semaphore.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IPC-SysV/lib/IPC/Semaphore.pm 2020-11-18 22:09:15.000000000 +0000 @@ -16,7 +16,7 @@ use vars qw($VERSION); use Carp; -$VERSION = '2.07'; +$VERSION = '2.09'; # Figure out if we have support for native sized types my $N = do { my $foo = eval { pack "L!", 0 }; $@ ? '' : '!' }; @@ -39,7 +39,7 @@ } sub new { - @_ == 4 || croak 'new ' . __PACKAGE__ . '( KEY, NSEMS, FLAGS )'; + @_ == 4 || croak __PACKAGE__ . '->new( KEY, NSEMS, FLAGS )'; my $class = shift; my $id = semget($_[0],$_[1],$_[2]); diff -Nru perl-5.32.1/cpan/IPC-SysV/lib/IPC/SharedMem.pm perl-5.34.0/cpan/IPC-SysV/lib/IPC/SharedMem.pm --- perl-5.32.1/cpan/IPC-SysV/lib/IPC/SharedMem.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IPC-SysV/lib/IPC/SharedMem.pm 2020-11-18 22:09:15.000000000 +0000 @@ -15,7 +15,7 @@ use vars qw($VERSION); use Carp; -$VERSION = '2.07'; +$VERSION = '2.09'; # Figure out if we have support for native sized types my $N = do { my $foo = eval { pack "L!", 0 }; $@ ? '' : '!' }; diff -Nru perl-5.32.1/cpan/IPC-SysV/lib/IPC/SysV.pm perl-5.34.0/cpan/IPC-SysV/lib/IPC/SysV.pm --- perl-5.32.1/cpan/IPC-SysV/lib/IPC/SysV.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IPC-SysV/lib/IPC/SysV.pm 2020-11-18 22:09:15.000000000 +0000 @@ -18,7 +18,7 @@ require Exporter; @ISA = qw(Exporter); -$VERSION = '2.07'; +$VERSION = '2.09'; # To support new constants, just add them to @EXPORT_OK # and the C/XS code will be generated automagically. @@ -81,14 +81,10 @@ BOOT_XS: { # If I inherit DynaLoader then I inherit AutoLoader and I DON'T WANT TO - require DynaLoader; + use XSLoader (); - # DynaLoader calls dl_load_flags as a static method. - *dl_load_flags = DynaLoader->can('dl_load_flags'); + XSLoader::load( 'IPC::SysV', $VERSION ); - do { - __PACKAGE__->can('bootstrap') || \&DynaLoader::bootstrap - }->(__PACKAGE__, $VERSION); } 1; diff -Nru perl-5.32.1/cpan/IPC-SysV/Makefile.PL perl-5.34.0/cpan/IPC-SysV/Makefile.PL --- perl-5.32.1/cpan/IPC-SysV/Makefile.PL 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IPC-SysV/Makefile.PL 2020-10-04 22:17:12.000000000 +0000 @@ -47,7 +47,8 @@ if ($ENV{'PERL_CORE'}) { # clean out const-* files in the core - push @moreopts, realclean => { FILES => "const-c.inc const-xs.inc" }; + push @moreopts, realclean => { FILES => "const-c.inc const-xs.inc" }, + DEFINE => '-DNO_PPPORT_H'; } else { # IPC::SysV is in the core since 5.005 diff -Nru perl-5.32.1/cpan/IPC-SysV/SysV.xs perl-5.34.0/cpan/IPC-SysV/SysV.xs --- perl-5.32.1/cpan/IPC-SysV/SysV.xs 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IPC-SysV/SysV.xs 2020-11-18 22:09:15.000000000 +0000 @@ -12,9 +12,11 @@ #include "perl.h" #include "XSUB.h" -#define NEED_sv_2pv_flags -#define NEED_sv_pvn_force_flags -#include "ppport.h" +#ifndef NO_PPPORT_H +# define NEED_sv_2pv_flags +# define NEED_sv_pvn_force_flags +# include "ppport.h" +#endif #include @@ -346,8 +348,8 @@ memread(addr, sv, pos, size) SV *addr SV *sv - int pos - int size + UV pos + UV size CODE: char *caddr = (char *) sv2addr(addr); char *dst; @@ -371,13 +373,13 @@ memwrite(addr, sv, pos, size) SV *addr SV *sv - int pos - int size + UV pos + UV size CODE: char *caddr = (char *) sv2addr(addr); STRLEN len; const char *src = SvPV_const(sv, len); - int n = ((int) len > size) ? size : (int) len; + unsigned int n = ((unsigned int) len > size) ? size : (unsigned int) len; Copy(src, caddr + pos, n, char); if (n < size) { diff -Nru perl-5.32.1/cpan/IPC-SysV/t/ipcsysv.t perl-5.34.0/cpan/IPC-SysV/t/ipcsysv.t --- perl-5.32.1/cpan/IPC-SysV/t/ipcsysv.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IPC-SysV/t/ipcsysv.t 2020-11-18 22:09:15.000000000 +0000 @@ -8,9 +8,13 @@ # ################################################################################ +use strict; +use warnings; + +our %Config; BEGIN { - require Test::More; import Test::More; - require Config; import Config; + require Test::More; Test::More->import; + require Config; Config->import; if ($ENV{'PERL_CORE'} && $Config{'extensions'} !~ m[\bIPC/SysV\b]) { plan(skip_all => 'IPC::SysV was not built'); @@ -30,7 +34,6 @@ # Later the sem* tests will import more for themselves. use IPC::SysV qw(IPC_PRIVATE IPC_NOWAIT IPC_STAT IPC_RMID S_IRWXU); -use strict; { my $did_diag = 0; diff -Nru perl-5.32.1/cpan/IPC-SysV/t/msg.t perl-5.34.0/cpan/IPC-SysV/t/msg.t --- perl-5.32.1/cpan/IPC-SysV/t/msg.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IPC-SysV/t/msg.t 2020-11-18 22:09:15.000000000 +0000 @@ -8,14 +8,18 @@ # ################################################################################ +use strict; +use warnings; + +our %Config; BEGIN { if ($ENV{'PERL_CORE'}) { chdir 't' if -d 't'; @INC = '../lib' if -d '../lib' && -d '../ext'; } - require Test::More; import Test::More; - require Config; import Config; + require Test::More; Test::More->import; + require Config; Config->import; if ($ENV{'PERL_CORE'} && $Config{'extensions'} !~ m[\bIPC/SysV\b]) { plan(skip_all => 'IPC::SysV was not built'); @@ -29,7 +33,6 @@ } use IPC::SysV qw(IPC_PRIVATE IPC_RMID IPC_NOWAIT IPC_STAT S_IRWXU S_IRWXG S_IRWXO); -use strict; use IPC::Msg; #Creating a message queue @@ -41,7 +44,7 @@ return $code->(); } return $code->(); -}->(sub { new IPC::Msg(IPC_PRIVATE, S_IRWXU | S_IRWXG | S_IRWXO) }); +}->(sub { IPC::Msg->new(IPC_PRIVATE, S_IRWXU | S_IRWXG | S_IRWXO) }); unless (defined $msq) { my $info = "IPC::Msg->new failed: $!"; diff -Nru perl-5.32.1/cpan/IPC-SysV/t/podcov.t perl-5.34.0/cpan/IPC-SysV/t/podcov.t --- perl-5.32.1/cpan/IPC-SysV/t/podcov.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IPC-SysV/t/podcov.t 2020-11-18 22:09:15.000000000 +0000 @@ -8,22 +8,24 @@ # ################################################################################ +use strict; +use warnings; + +our %Config; BEGIN { if ($ENV{'PERL_CORE'}) { chdir 't' if -d 't'; @INC = '../lib' if -d '../lib' && -d '../ext'; } - require Test::More; import Test::More; - require Config; import Config; + require Test::More; Test::More->import; + require Config; Config->import; if ($ENV{'PERL_CORE'} && $Config{'extensions'} !~ m[\bIPC/SysV\b]) { plan(skip_all => 'IPC::SysV was not built'); } } -use strict; - my @modules = qw( IPC::SysV IPC::Msg IPC::Semaphore IPC::SharedMem ); eval 'use Pod::Coverage 0.10'; diff -Nru perl-5.32.1/cpan/IPC-SysV/t/pod.t perl-5.34.0/cpan/IPC-SysV/t/pod.t --- perl-5.32.1/cpan/IPC-SysV/t/pod.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IPC-SysV/t/pod.t 2020-11-18 22:09:15.000000000 +0000 @@ -8,22 +8,24 @@ # ################################################################################ +use strict; +use warnings; + +our %Config; BEGIN { if ($ENV{'PERL_CORE'}) { chdir 't' if -d 't'; @INC = '../lib' if -d '../lib' && -d '../ext'; } - require Test::More; import Test::More; - require Config; import Config; + require Test::More; Test::More->import; + require Config; Config->import; if ($ENV{'PERL_CORE'} && $Config{'extensions'} !~ m[\bIPC/SysV\b]) { plan(skip_all => 'IPC::SysV was not built'); } } -use strict; - my @pods; # find all potential pod files @@ -49,12 +51,12 @@ require Test::Pod; $Test::Pod::VERSION >= 0.95 or die "Test::Pod version only $Test::Pod::VERSION"; - import Test::Pod tests => scalar @pods; + Test::Pod->import( tests => scalar @pods ); }; if ($@) { require Test::More; - import Test::More skip_all => "testing pod requires Test::Pod"; + Test::More->import( skip_all => "testing pod requires Test::Pod" ); } else { for my $pod (@pods) { diff -Nru perl-5.32.1/cpan/IPC-SysV/t/sem.t perl-5.34.0/cpan/IPC-SysV/t/sem.t --- perl-5.32.1/cpan/IPC-SysV/t/sem.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IPC-SysV/t/sem.t 2020-11-18 22:09:15.000000000 +0000 @@ -8,14 +8,18 @@ # ################################################################################ +use strict; +use warnings; + +our %Config; BEGIN { if ($ENV{'PERL_CORE'}) { chdir 't' if -d 't'; @INC = '../lib' if -d '../lib' && -d '../ext'; } - require Test::More; import Test::More; - require Config; import Config; + require Test::More; Test::More->import; + require Config; Config->import; if ($ENV{'PERL_CORE'} && $Config{'extensions'} !~ m[\bIPC/SysV\b]) { plan(skip_all => 'IPC::SysV was not built'); diff -Nru perl-5.32.1/cpan/IPC-SysV/t/shm.t perl-5.34.0/cpan/IPC-SysV/t/shm.t --- perl-5.32.1/cpan/IPC-SysV/t/shm.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/IPC-SysV/t/shm.t 2020-11-18 22:09:15.000000000 +0000 @@ -8,14 +8,18 @@ # ################################################################################ +use strict; +use warnings; + +our %Config; BEGIN { if ($ENV{'PERL_CORE'}) { chdir 't' if -d 't'; @INC = '../lib' if -d '../lib' && -d '../ext'; } - require Test::More; import Test::More; - require Config; import Config; + require Test::More; Test::More->import; + require Config; Config->import; if ($ENV{'PERL_CORE'} && $Config{'extensions'} !~ m[\bIPC/SysV\b]) { plan(skip_all => 'IPC::SysV was not built'); diff -Nru perl-5.32.1/cpan/JSON-PP/lib/JSON/PP/Boolean.pm perl-5.34.0/cpan/JSON-PP/lib/JSON/PP/Boolean.pm --- perl-5.32.1/cpan/JSON-PP/lib/JSON/PP/Boolean.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/lib/JSON/PP/Boolean.pm 2021-02-21 11:01:31.000000000 +0000 @@ -10,7 +10,7 @@ fallback => 1, ); -$JSON::PP::Boolean::VERSION = '4.04'; +$JSON::PP::Boolean::VERSION = '4.06'; 1; diff -Nru perl-5.32.1/cpan/JSON-PP/lib/JSON/PP.pm perl-5.34.0/cpan/JSON-PP/lib/JSON/PP.pm --- perl-5.32.1/cpan/JSON-PP/lib/JSON/PP.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/lib/JSON/PP.pm 2021-02-21 11:01:31.000000000 +0000 @@ -14,7 +14,7 @@ use Carp (); #use Devel::Peek; -$JSON::PP::VERSION = '4.04'; +$JSON::PP::VERSION = '4.06'; @JSON::PP::EXPORT = qw(encode_json decode_json from_json to_json); @@ -201,12 +201,11 @@ my ($false, $true) = @_; $self->{false} = $false; $self->{true} = $true; - return ($false, $true); } else { delete $self->{false}; delete $self->{true}; - return; } + return $self; } sub get_boolean_values { @@ -1773,7 +1772,7 @@ =head1 VERSION - 4.04 + 4.05 =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/JSON-PP/t/000_load.t perl-5.34.0/cpan/JSON-PP/t/000_load.t --- perl-5.32.1/cpan/JSON-PP/t/000_load.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/000_load.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,9 @@ # copied over from JSON::XS and modified to use JSON::PP +use strict; +use warnings; + +my $loaded; BEGIN { $| = 1; print "1..1\n"; } END {print "not ok 1\n" unless $loaded;} BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } diff -Nru perl-5.32.1/cpan/JSON-PP/t/001_utf8.t perl-5.34.0/cpan/JSON-PP/t/001_utf8.t --- perl-5.32.1/cpan/JSON-PP/t/001_utf8.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/001_utf8.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,7 @@ # copied over from JSON::XS and modified to use JSON::PP use strict; +use warnings; use Test::More; BEGIN { plan tests => 9 }; diff -Nru perl-5.32.1/cpan/JSON-PP/t/002_error.t perl-5.34.0/cpan/JSON-PP/t/002_error.t --- perl-5.32.1/cpan/JSON-PP/t/002_error.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/002_error.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,7 @@ # copied over from JSON::XS and modified to use JSON::PP use strict; +use warnings; use Test::More; BEGIN { plan tests => 35 }; diff -Nru perl-5.32.1/cpan/JSON-PP/t/003_types.t perl-5.34.0/cpan/JSON-PP/t/003_types.t --- perl-5.32.1/cpan/JSON-PP/t/003_types.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/003_types.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,7 @@ # copied over from JSON::XS and modified to use JSON::PP use strict; +use warnings; use Test::More; BEGIN { plan tests => 76 + 2 }; diff -Nru perl-5.32.1/cpan/JSON-PP/t/004_dwiw_encode.t perl-5.34.0/cpan/JSON-PP/t/004_dwiw_encode.t --- perl-5.32.1/cpan/JSON-PP/t/004_dwiw_encode.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/004_dwiw_encode.t 2020-10-04 22:17:12.000000000 +0000 @@ -6,6 +6,7 @@ # Authors: don use strict; +use warnings; use Test; # main diff -Nru perl-5.32.1/cpan/JSON-PP/t/006_pc_pretty.t perl-5.34.0/cpan/JSON-PP/t/006_pc_pretty.t --- perl-5.32.1/cpan/JSON-PP/t/006_pc_pretty.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/006_pc_pretty.t 2020-10-04 22:17:12.000000000 +0000 @@ -2,6 +2,7 @@ # copied over from JSON::XS and modified to use JSON::PP use strict; +use warnings; use Test::More; BEGIN { plan tests => 9 }; @@ -10,7 +11,7 @@ use JSON::PP; my ($js,$obj,$json); -my $pc = new JSON::PP; +my $pc = JSON::PP->new; $obj = {foo => "bar"}; $js = $pc->encode($obj); diff -Nru perl-5.32.1/cpan/JSON-PP/t/007_pc_esc.t perl-5.34.0/cpan/JSON-PP/t/007_pc_esc.t --- perl-5.32.1/cpan/JSON-PP/t/007_pc_esc.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/007_pc_esc.t 2020-10-04 22:17:12.000000000 +0000 @@ -7,6 +7,7 @@ use Test::More; use strict; +use warnings; use utf8; BEGIN { plan tests => 17 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } @@ -16,7 +17,7 @@ ######################### my ($js,$obj,$str); -my $pc = new JSON::PP; +my $pc = JSON::PP->new; $obj = {test => qq|abc"def|}; $str = $pc->encode($obj); diff -Nru perl-5.32.1/cpan/JSON-PP/t/008_pc_base.t perl-5.34.0/cpan/JSON-PP/t/008_pc_base.t --- perl-5.32.1/cpan/JSON-PP/t/008_pc_base.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/008_pc_base.t 2020-10-04 22:17:12.000000000 +0000 @@ -4,6 +4,7 @@ # copied over from JSON::XS and modified to use JSON::PP use strict; +use warnings; BEGIN { plan tests => 20 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } @@ -11,7 +12,7 @@ my ($js,$obj); -my $pc = new JSON::PP; +my $pc = JSON::PP->new; $js = q|{}|; diff -Nru perl-5.32.1/cpan/JSON-PP/t/009_pc_extra_number.t perl-5.34.0/cpan/JSON-PP/t/009_pc_extra_number.t --- perl-5.32.1/cpan/JSON-PP/t/009_pc_extra_number.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/009_pc_extra_number.t 2020-10-04 22:17:12.000000000 +0000 @@ -3,6 +3,7 @@ use Test::More; use strict; +use warnings; BEGIN { plan tests => 6 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } @@ -11,7 +12,7 @@ ######################### my ($js,$obj); -my $pc = new JSON::PP; +my $pc = JSON::PP->new; $js = '{"foo":0}'; $obj = $pc->decode($js); diff -Nru perl-5.32.1/cpan/JSON-PP/t/010_pc_keysort.t perl-5.34.0/cpan/JSON-PP/t/010_pc_keysort.t --- perl-5.32.1/cpan/JSON-PP/t/010_pc_keysort.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/010_pc_keysort.t 2020-10-04 22:17:12.000000000 +0000 @@ -3,6 +3,7 @@ use Test::More; use strict; +use warnings; BEGIN { plan tests => 1 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } diff -Nru perl-5.32.1/cpan/JSON-PP/t/011_pc_expo.t perl-5.34.0/cpan/JSON-PP/t/011_pc_expo.t --- perl-5.32.1/cpan/JSON-PP/t/011_pc_expo.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/011_pc_expo.t 2020-10-04 22:17:12.000000000 +0000 @@ -3,6 +3,7 @@ use Test::More; use strict; +use warnings; BEGIN { plan tests => 8 + 2 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } @@ -10,7 +11,7 @@ ######################### my ($js,$obj); -my $pc = new JSON::PP; +my $pc = JSON::PP->new; $js = q|[-12.34]|; $obj = $pc->decode($js); diff -Nru perl-5.32.1/cpan/JSON-PP/t/012_blessed.t perl-5.34.0/cpan/JSON-PP/t/012_blessed.t --- perl-5.32.1/cpan/JSON-PP/t/012_blessed.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/012_blessed.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,7 @@ # copied over from JSON::XS and modified to use JSON::PP use strict; +use warnings; use Test::More; BEGIN { plan tests => 16 }; diff -Nru perl-5.32.1/cpan/JSON-PP/t/013_limit.t perl-5.34.0/cpan/JSON-PP/t/013_limit.t --- perl-5.32.1/cpan/JSON-PP/t/013_limit.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/013_limit.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,7 @@ # copied over from JSON::XS and modified to use JSON::PP use strict; +use warnings; use Test::More; BEGIN { plan tests => 11 }; diff -Nru perl-5.32.1/cpan/JSON-PP/t/014_latin1.t perl-5.34.0/cpan/JSON-PP/t/014_latin1.t --- perl-5.32.1/cpan/JSON-PP/t/014_latin1.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/014_latin1.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,7 @@ # copied over from JSON::XS and modified to use JSON::PP use strict; +use warnings; use Test::More; BEGIN { plan tests => 4 }; diff -Nru perl-5.32.1/cpan/JSON-PP/t/015_prefix.t perl-5.34.0/cpan/JSON-PP/t/015_prefix.t --- perl-5.32.1/cpan/JSON-PP/t/015_prefix.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/015_prefix.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,7 @@ # copied over from JSON::XS and modified to use JSON::PP use strict; +use warnings; use Test::More; BEGIN { plan tests => 4 }; diff -Nru perl-5.32.1/cpan/JSON-PP/t/016_tied.t perl-5.34.0/cpan/JSON-PP/t/016_tied.t --- perl-5.32.1/cpan/JSON-PP/t/016_tied.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/016_tied.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,7 @@ # copied over from JSON::XS and modified to use JSON::PP use strict; +use warnings; use Test::More; BEGIN { plan tests => 2 }; diff -Nru perl-5.32.1/cpan/JSON-PP/t/017_relaxed.t perl-5.34.0/cpan/JSON-PP/t/017_relaxed.t --- perl-5.32.1/cpan/JSON-PP/t/017_relaxed.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/017_relaxed.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,7 @@ # copied over from JSON::XS and modified to use JSON::PP use strict; +use warnings; use Test::More; BEGIN { plan tests => 8 }; diff -Nru perl-5.32.1/cpan/JSON-PP/t/019_incr.t perl-5.34.0/cpan/JSON-PP/t/019_incr.t --- perl-5.32.1/cpan/JSON-PP/t/019_incr.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/019_incr.t 2020-10-04 22:17:12.000000000 +0000 @@ -45,7 +45,7 @@ { my $text = '[5],{"":1} , [ 1,2, 3], {"3":null}'; - my $coder = new JSON::PP; + my $coder = JSON::PP->new; for (0 .. length $text) { my $a = substr $text, 0, $_; my $b = substr $text, $_; @@ -69,7 +69,7 @@ { my $text = '[x][5]'; - my $coder = new JSON::PP; + my $coder = JSON::PP->new; $coder->incr_parse ($text); ok (!eval { $coder->incr_parse }, "sparse1"); ok (!eval { $coder->incr_parse }, "sparse2"); diff -Nru perl-5.32.1/cpan/JSON-PP/t/020_unknown.t perl-5.34.0/cpan/JSON-PP/t/020_unknown.t --- perl-5.32.1/cpan/JSON-PP/t/020_unknown.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/020_unknown.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,11 +1,10 @@ use strict; +use warnings; use Test::More; BEGIN { plan tests => 10 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } - -use strict; use JSON::PP; my $json = JSON::PP->new; diff -Nru perl-5.32.1/cpan/JSON-PP/t/021_evans.t perl-5.34.0/cpan/JSON-PP/t/021_evans.t --- perl-5.32.1/cpan/JSON-PP/t/021_evans.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/021_evans.t 2020-10-04 22:17:12.000000000 +0000 @@ -14,7 +14,7 @@ my $data = ["\x{53f0}\x{6240}\x{306e}\x{6d41}\x{3057}", "\x{6c60}\x{306e}\x{30ab}\x{30a8}\x{30eb}"]; my $js = JSON::PP->new->encode ($data); -my $j = new JSON::PP; +my $j = JSON::PP->new; my $object = $j->incr_parse ($js); die "no object" if !$object; diff -Nru perl-5.32.1/cpan/JSON-PP/t/052_object.t perl-5.34.0/cpan/JSON-PP/t/052_object.t --- perl-5.32.1/cpan/JSON-PP/t/052_object.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/052_object.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,17 @@ # copied over from JSON::XS and modified to use JSON::PP +package JSON::PP::freeze; + +1; + +package JSON::PP::tojson; + +1; + +package main; + use strict; +use warnings; use Test::More; BEGIN { plan tests => 20 }; BEGIN { $^W = 0 } # hate @@ -47,8 +58,8 @@ 777 } -my $obj = bless { k => 1 }, JSON::PP::freeze::; -my $enc = $json->encode ($obj); +$obj = bless { k => 1 }, JSON::PP::freeze::; +$enc = $json->encode ($obj); ok ($enc eq '("JSON::PP::freeze")[3,1,2]'); my $dec = $json->decode ($enc); diff -Nru perl-5.32.1/cpan/JSON-PP/t/099_binary.t perl-5.34.0/cpan/JSON-PP/t/099_binary.t --- perl-5.32.1/cpan/JSON-PP/t/099_binary.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/099_binary.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,7 @@ # copied over from JSON::XS and modified to use JSON::PP use strict; +use warnings; use Test::More; BEGIN { plan tests => 24576 }; diff -Nru perl-5.32.1/cpan/JSON-PP/t/104_sortby.t perl-5.34.0/cpan/JSON-PP/t/104_sortby.t --- perl-5.32.1/cpan/JSON-PP/t/104_sortby.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/104_sortby.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,7 @@ use Test::More; use strict; +use warnings; BEGIN { plan tests => 3 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } use JSON::PP; diff -Nru perl-5.32.1/cpan/JSON-PP/t/105_esc_slash.t perl-5.34.0/cpan/JSON-PP/t/105_esc_slash.t --- perl-5.32.1/cpan/JSON-PP/t/105_esc_slash.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/105_esc_slash.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,7 @@ use Test::More; -use strict; +use strict; +use warnings; BEGIN { plan tests => 2 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } use JSON::PP; diff -Nru perl-5.32.1/cpan/JSON-PP/t/106_allow_barekey.t perl-5.34.0/cpan/JSON-PP/t/106_allow_barekey.t --- perl-5.32.1/cpan/JSON-PP/t/106_allow_barekey.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/106_allow_barekey.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,7 @@ use Test::More; -use strict; +use strict; +use warnings; BEGIN { plan tests => 2 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } use JSON::PP; diff -Nru perl-5.32.1/cpan/JSON-PP/t/107_allow_singlequote.t perl-5.34.0/cpan/JSON-PP/t/107_allow_singlequote.t --- perl-5.32.1/cpan/JSON-PP/t/107_allow_singlequote.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/107_allow_singlequote.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,7 @@ use Test::More; -use strict; +use strict; +use warnings; BEGIN { plan tests => 4 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } use JSON::PP; diff -Nru perl-5.32.1/cpan/JSON-PP/t/108_decode.t perl-5.34.0/cpan/JSON-PP/t/108_decode.t --- perl-5.32.1/cpan/JSON-PP/t/108_decode.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/108_decode.t 2020-10-04 22:17:12.000000000 +0000 @@ -2,6 +2,7 @@ # decode on Perl 5.005, 5.6, 5.8 or later # use strict; +use warnings; use Test::More; BEGIN { plan tests => 6 }; diff -Nru perl-5.32.1/cpan/JSON-PP/t/109_encode.t perl-5.34.0/cpan/JSON-PP/t/109_encode.t --- perl-5.32.1/cpan/JSON-PP/t/109_encode.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/109_encode.t 2020-10-04 22:17:12.000000000 +0000 @@ -2,6 +2,7 @@ # decode on Perl 5.005, 5.6, 5.8 or later # use strict; +use warnings; use Test::More; BEGIN { plan tests => 7 }; diff -Nru perl-5.32.1/cpan/JSON-PP/t/110_bignum.t perl-5.34.0/cpan/JSON-PP/t/110_bignum.t --- perl-5.32.1/cpan/JSON-PP/t/110_bignum.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/110_bignum.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ use strict; +use warnings; use Test::More; BEGIN { plan tests => 9 }; @@ -20,7 +21,7 @@ : ''; -my $json = new JSON::PP; +my $json = JSON::PP->new; $json->allow_nonref->allow_bignum(1); $json->convert_blessed->allow_blessed; diff -Nru perl-5.32.1/cpan/JSON-PP/t/112_upgrade.t perl-5.34.0/cpan/JSON-PP/t/112_upgrade.t --- perl-5.32.1/cpan/JSON-PP/t/112_upgrade.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/112_upgrade.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,5 @@ use strict; +use warnings; use Test::More; BEGIN { plan tests => 3 }; diff -Nru perl-5.32.1/cpan/JSON-PP/t/113_overloaded_eq.t perl-5.34.0/cpan/JSON-PP/t/113_overloaded_eq.t --- perl-5.32.1/cpan/JSON-PP/t/113_overloaded_eq.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/113_overloaded_eq.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,5 @@ use strict; +use warnings; use Test::More tests => 4; BEGIN { @@ -26,6 +27,7 @@ package Foo; use strict; +use warnings; use overload ( 'eq' => sub { 0 }, '""' => sub { $_[0] }, @@ -39,6 +41,7 @@ package Bar; use strict; +use warnings; use overload ( 'eq' => sub { 0 }, '""' => sub { $_[0] }, diff -Nru perl-5.32.1/cpan/JSON-PP/t/114_decode_prefix.t perl-5.34.0/cpan/JSON-PP/t/114_decode_prefix.t --- perl-5.32.1/cpan/JSON-PP/t/114_decode_prefix.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/114_decode_prefix.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,5 @@ use strict; +use warnings; use Test::More tests => 8; BEGIN { diff -Nru perl-5.32.1/cpan/JSON-PP/t/115_tie_ixhash.t perl-5.34.0/cpan/JSON-PP/t/115_tie_ixhash.t --- perl-5.32.1/cpan/JSON-PP/t/115_tie_ixhash.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/115_tie_ixhash.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ use strict; +use warnings; use Test::More; BEGIN { plan tests => 2 }; diff -Nru perl-5.32.1/cpan/JSON-PP/t/116_incr_parse_fixed.t perl-5.34.0/cpan/JSON-PP/t/116_incr_parse_fixed.t --- perl-5.32.1/cpan/JSON-PP/t/116_incr_parse_fixed.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/116_incr_parse_fixed.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,5 @@ use strict; +use warnings; use Test::More tests => 4; use JSON::PP; diff -Nru perl-5.32.1/cpan/JSON-PP/t/117_numbers.t perl-5.34.0/cpan/JSON-PP/t/117_numbers.t --- perl-5.32.1/cpan/JSON-PP/t/117_numbers.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/117_numbers.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ use Test::More; use strict; +use warnings; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } BEGIN { $ENV{PERL_JSON_PP_USE_B} = 0 } use JSON::PP; diff -Nru perl-5.32.1/cpan/JSON-PP/t/118_boolean_values.t perl-5.34.0/cpan/JSON-PP/t/118_boolean_values.t --- perl-5.32.1/cpan/JSON-PP/t/118_boolean_values.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/118_boolean_values.t 2021-02-21 11:01:31.000000000 +0000 @@ -1,4 +1,5 @@ use strict; +use warnings; use Test::More; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } use JSON::PP; @@ -36,13 +37,14 @@ push @tests, [Types::Serialiser::true(), Types::Serialiser::false(), 'Types::Serialiser::BooleanBase', 'Types::Serialiser::BooleanBase']; } -plan tests => 13 * @tests; +plan tests => 15 * @tests; my $json = JSON::PP->new; for my $test (@tests) { my ($true, $false, $true_class, $false_class, $incompat) = @$test; - $json->boolean_values($false, $true); + my $ret = $json->boolean_values($false, $true); + is $ret => $json, "returns the same object"; my ($new_false, $new_true) = $json->get_boolean_values; ok defined $new_true, "new true class is defined"; ok defined $new_false, "new false class is defined"; @@ -69,7 +71,8 @@ is $should_false_json => 'false', "A $false_class object turns into JSON false"; } - $json->boolean_values(); + $ret = $json->boolean_values(); + is $ret => $json, "returns the same object"; ok !$json->get_boolean_values, "reset boolean values"; $should_true = $json->allow_nonref(1)->decode('true'); diff -Nru perl-5.32.1/cpan/JSON-PP/t/gh_28_json_test_suite.t perl-5.34.0/cpan/JSON-PP/t/gh_28_json_test_suite.t --- perl-5.32.1/cpan/JSON-PP/t/gh_28_json_test_suite.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/gh_28_json_test_suite.t 2020-10-04 22:17:12.000000000 +0000 @@ -2,6 +2,7 @@ # by Nicolas Seriot (https://github.com/nst/JSONTestSuite) use strict; +use warnings; use Test::More; BEGIN { plan skip_all => 'this test is for Perl 5.8 or later' if $] < 5.008; } diff -Nru perl-5.32.1/cpan/JSON-PP/t/gh_29_trailing_false_value.t perl-5.34.0/cpan/JSON-PP/t/gh_29_trailing_false_value.t --- perl-5.32.1/cpan/JSON-PP/t/gh_29_trailing_false_value.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/gh_29_trailing_false_value.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,5 @@ use strict; +use warnings; use Test::More; BEGIN { plan tests => 1 }; diff -Nru perl-5.32.1/cpan/JSON-PP/t/rt_116998_wrong_character_offset.t perl-5.34.0/cpan/JSON-PP/t/rt_116998_wrong_character_offset.t --- perl-5.32.1/cpan/JSON-PP/t/rt_116998_wrong_character_offset.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/rt_116998_wrong_character_offset.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,5 @@ use strict; +use warnings; use Test::More; BEGIN { plan tests => 4 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } diff -Nru perl-5.32.1/cpan/JSON-PP/t/rt_90071_incr_parse.t perl-5.34.0/cpan/JSON-PP/t/rt_90071_incr_parse.t --- perl-5.32.1/cpan/JSON-PP/t/rt_90071_incr_parse.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/rt_90071_incr_parse.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,5 @@ use strict; +use warnings; use Test::More; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } use JSON::PP; diff -Nru perl-5.32.1/cpan/JSON-PP/t/zero-mojibake.t perl-5.34.0/cpan/JSON-PP/t/zero-mojibake.t --- perl-5.32.1/cpan/JSON-PP/t/zero-mojibake.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/JSON-PP/t/zero-mojibake.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,5 @@ use strict; +use warnings; use Test::More; BEGIN { plan tests => 1 }; diff -Nru perl-5.32.1/cpan/libnet/lib/Net/Cmd.pm perl-5.34.0/cpan/libnet/lib/Net/Cmd.pm --- perl-5.32.1/cpan/libnet/lib/Net/Cmd.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/lib/Net/Cmd.pm 2021-01-20 23:04:44.000000000 +0000 @@ -1,7 +1,7 @@ # Net::Cmd.pm # # Copyright (C) 1995-2006 Graham Barr. All rights reserved. -# Copyright (C) 2013-2016 Steve Hay. All rights reserved. +# Copyright (C) 2013-2016, 2020 Steve Hay. All rights reserved. # This module is free software; you can redistribute it and/or modify it under # the same terms as Perl itself, i.e. under the terms of either the GNU General # Public License or the Artistic License, as specified in the F file. @@ -26,7 +26,7 @@ } } -our $VERSION = "3.11"; +our $VERSION = "3.13"; our @ISA = qw(Exporter); our @EXPORT = qw(CMD_INFO CMD_OK CMD_MORE CMD_REJECT CMD_ERROR CMD_PENDING); @@ -100,7 +100,7 @@ sub debug { - @_ == 1 or @_ == 2 or croak 'usage: $obj->debug([LEVEL])'; + @_ == 1 or @_ == 2 or croak 'usage: $obj->debug([$level])'; my ($cmd, $level) = @_; my $pkg = ref($cmd) || $cmd; @@ -175,7 +175,7 @@ sub set_status { - @_ == 3 or croak 'usage: $obj->set_status(CODE, MESSAGE)'; + @_ == 3 or croak 'usage: $obj->set_status($code, $resp)'; my $cmd = shift; my ($code, $resp) = @_; @@ -661,59 +661,59 @@ provide the following methods by other means yourself: C and C. -=head1 USER METHODS +=head2 Public Methods These methods provide a user interface to the C object. =over 4 -=item debug ( VALUE ) +=item C -Set the level of debug information for this object. If C is not given +Set the level of debug information for this object. If C<$level> is not given then the current state is returned. Otherwise the state is changed to -C and the previous state returned. +C<$level> and the previous state returned. Different packages may implement different levels of debug but a non-zero value results in copies of all commands and responses also being sent to STDERR. -If C is C then the debug level will be set to the default +If C<$level> is C then the debug level will be set to the default debug level for the class. This method can also be called as a I method to set/get the default debug level for a given class. -=item message () +=item C Returns the text message returned from the last command. In a scalar context it returns a single string, in a list context it will return each line as a separate element. (See L below.) -=item code () +=item C Returns the 3-digit code from the last command. If a command is pending then the value 0 is returned. (See L below.) -=item ok () +=item C Returns non-zero if the last code value was greater than zero and less than 400. This holds true for most command servers. Servers where this does not hold may override this method. -=item status () +=item C Returns the most significant digit of the current status code. If a command is pending then C is returned. -=item datasend ( DATA ) +=item C Send data to the remote server, converting LF to CRLF. Any line starting with a '.' will be prefixed with another '.'. -C may be an array or a reference to an array. -The C passed in must be encoded by the caller to octets of whatever +C<$data> may be an array or a reference to an array. +The C<$data> passed in must be encoded by the caller to octets of whatever encoding is required, e.g. by using the Encode module's C function. -=item dataend () +=item C End the sending of data to the remote server. This is done by ensuring that the data already sent ends with CRLF then sending '.CRLF' to end the @@ -722,28 +722,28 @@ =back -=head1 CLASS METHODS +=head2 Protected Methods These methods are not intended to be called by the user, but used or over-ridden by a sub-class of C =over 4 -=item debug_print ( DIR, TEXT ) +=item C -Print debugging information. C

denotes the direction I being +Print debugging information. C<$dir> denotes the direction I being data being sent to the server. Calls C before printing to STDERR. -=item debug_text ( DIR, TEXT ) +=item C -This method is called to print debugging information. TEXT is +This method is called to print debugging information. C<$text> is the text being sent. The method should return the text to be printed. This is primarily meant for the use of modules such as FTP where passwords are sent, but we do not want to display them in the debugging information. -=item command ( CMD [, ARGS, ... ]) +=item C Send a command to the command server. All arguments are first joined with a space character and CRLF is appended, this string is then sent to the @@ -751,24 +751,24 @@ Returns undef upon failure. -=item unsupported () +=item C Sets the status code to 580 and the response text to 'Unsupported command'. Returns zero. -=item response () +=item C Obtain a response from the server. Upon success the most significant digit of the status code is returned. Upon failure, timeout etc., I is returned. -=item parse_response ( TEXT ) +=item C This method is called by C as a method with one argument. It should return an array of 2 values, the 3-digit status code and a flag which is true when this is part of a multi-line response and this line is not the last. -=item getline () +=item C Retrieve one line, delimited by CRLF, from the remote server. Returns I upon failure. @@ -776,26 +776,26 @@ B: If you do use this method for any reason, please remember to add some C calls into your method. -=item ungetline ( TEXT ) +=item C Unget a line of text from the server. -=item rawdatasend ( DATA ) +=item C -Send data to the remote server without performing any conversions. C +Send data to the remote server without performing any conversions. C<$data> is a scalar. -As with C, the C passed in must be encoded by the caller +As with C, the C<$data> passed in must be encoded by the caller to octets of whatever encoding is required, e.g. by using the Encode module's C function. -=item read_until_dot () +=item C Read data from the remote server until a line consisting of a single '.'. Any lines starting with '..' will have one of the '.'s removed. Returns a reference to a list containing the lines, or I upon failure. -=item tied_fh () +=item C Returns a filehandle tied to the Net::Cmd object. After issuing a command, you may read from this filehandle using read() or <>. The @@ -807,7 +807,7 @@ =back -=head1 PSEUDO RESPONSES +=head2 Pseudo Responses Normally the values returned by C and C are obtained from the remote server, but in a few circumstances, as @@ -847,22 +847,47 @@ =head1 EXPORTS -C exports six subroutines, five of these, C, C, -C, C and C, correspond to possible results -of C and C. The sixth is C. +The following symbols are, or can be, exported by this module: + +=over 4 + +=item Default Exports + +C, +C, +C, +C, +C, +C. + +(These correspond to possible results of C and C.) + +=item Optional Exports + +I. + +=item Export Tags + +I. + +=back + +=head1 KNOWN BUGS + +See L. =head1 AUTHOR -Graham Barr EFE. +Graham Barr ELE. -Steve Hay EFE is now maintaining libnet as of version -1.22_02. +Steve Hay ELE is now maintaining +libnet as of version 1.22_02. =head1 COPYRIGHT Copyright (C) 1995-2006 Graham Barr. All rights reserved. -Copyright (C) 2013-2016 Steve Hay. All rights reserved. +Copyright (C) 2013-2016, 2020 Steve Hay. All rights reserved. =head1 LICENCE @@ -870,4 +895,16 @@ same terms as Perl itself, i.e. under the terms of either the GNU General Public License or the Artistic License, as specified in the F file. +=head1 VERSION + +Version 3.13 + +=head1 DATE + +23 Dec 2020 + +=head1 HISTORY + +See the F file. + =cut diff -Nru perl-5.32.1/cpan/libnet/lib/Net/Config.pm perl-5.34.0/cpan/libnet/lib/Net/Config.pm --- perl-5.32.1/cpan/libnet/lib/Net/Config.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/lib/Net/Config.pm 2021-01-20 23:04:44.000000000 +0000 @@ -1,7 +1,7 @@ # Net::Config.pm # # Copyright (C) 2000 Graham Barr. All rights reserved. -# Copyright (C) 2013-2014, 2016 Steve Hay. All rights reserved. +# Copyright (C) 2013-2014, 2016, 2020 Steve Hay. All rights reserved. # This module is free software; you can redistribute it and/or modify it under # the same terms as Perl itself, i.e. under the terms of either the GNU General # Public License or the Artistic License, as specified in the F file. @@ -18,7 +18,7 @@ our @EXPORT = qw(%NetConfig); our @ISA = qw(Net::LocalCfg Exporter); -our $VERSION = "3.11"; +our $VERSION = "3.13"; our($CONFIGURE, $LIBNET_CFG); @@ -159,7 +159,7 @@ } __END__ -=head1 METHODS +=head2 Class Methods C defines the following methods. They are methods as they are invoked as class methods. This is because C inherits from @@ -167,7 +167,7 @@ =over 4 -=item requires_firewall ( HOST ) +=item C Attempts to determine if a given host is outside your firewall. Possible return values are. @@ -181,7 +181,7 @@ =back -=head1 NetConfig VALUES +=head2 NetConfig Values =over 4 @@ -323,18 +323,42 @@ =back +=head1 EXPORTS + +The following symbols are, or can be, exported by this module: + +=over 4 + +=item Default Exports + +C<%NetConfig>. + +=item Optional Exports + +I. + +=item Export Tags + +I. + +=back + +=head1 KNOWN BUGS + +I. + =head1 AUTHOR -Graham Barr EFE. +Graham Barr ELE. -Steve Hay EFE is now maintaining libnet as of version -1.22_02. +Steve Hay ELE is now maintaining +libnet as of version 1.22_02. =head1 COPYRIGHT -Copyright (C) 1998-2011 Graham Barr. All rights reserved. +Copyright (C) 2000 Graham Barr. All rights reserved. -Copyright (C) 2013-2014, 2016 Steve Hay. All rights reserved. +Copyright (C) 2013-2014, 2016, 2020 Steve Hay. All rights reserved. =head1 LICENCE @@ -342,4 +366,16 @@ same terms as Perl itself, i.e. under the terms of either the GNU General Public License or the Artistic License, as specified in the F file. +=head1 VERSION + +Version 3.13 + +=head1 DATE + +23 Dec 2020 + +=head1 HISTORY + +See the F file. + =cut diff -Nru perl-5.32.1/cpan/libnet/lib/Net/Domain.pm perl-5.34.0/cpan/libnet/lib/Net/Domain.pm --- perl-5.32.1/cpan/libnet/lib/Net/Domain.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/lib/Net/Domain.pm 2021-01-20 23:04:44.000000000 +0000 @@ -1,7 +1,7 @@ # Net::Domain.pm # # Copyright (C) 1995-1998 Graham Barr. All rights reserved. -# Copyright (C) 2013-2014 Steve Hay. All rights reserved. +# Copyright (C) 2013-2014, 2020 Steve Hay. All rights reserved. # This module is free software; you can redistribute it and/or modify it under # the same terms as Perl itself, i.e. under the terms of either the GNU General # Public License or the Artistic License, as specified in the F file. @@ -19,7 +19,7 @@ our @ISA = qw(Exporter); our @EXPORT_OK = qw(hostname hostdomain hostfqdn domainname); -our $VERSION = "3.11"; +our $VERSION = "3.13"; my ($host, $domain, $fqdn) = (undef, undef, undef); @@ -321,40 +321,71 @@ Each of the functions will return I if the FQDN cannot be determined. +=head2 Functions + =over 4 -=item hostfqdn () +=item C Identify and return the FQDN of the current host. -=item domainname () +=item C -An alias for hostfqdn (). +An alias for hostfqdn(). -=item hostname () +=item C Returns the smallest part of the FQDN which can be used to identify the host. -=item hostdomain () +=item C Returns the remainder of the FQDN after the I has been removed. =back +=head1 EXPORTS + +The following symbols are, or can be, exported by this module: + +=over 4 + +=item Default Exports + +I. + +=item Optional Exports + +C, +C, +C, +C. + +=item Export Tags + +I. + +=back + + +=head1 KNOWN BUGS + +See L. + =head1 AUTHOR -Graham Barr EFE. +Graham Barr ELE. -Adapted from Sys::Hostname by David Sundstrom EFE. +Adapted from Sys::Hostname by David Sundstrom +ELE. -Steve Hay EFE is now maintaining libnet as of version -1.22_02. +Steve Hay ELE is now maintaining +libnet as of version 1.22_02. =head1 COPYRIGHT Copyright (C) 1995-1998 Graham Barr. All rights reserved. -Copyright (C) 2013-2014 Steve Hay. All rights reserved. +Copyright (C) 2013-2014, 2020 Steve Hay. All rights reserved. =head1 LICENCE @@ -362,4 +393,16 @@ same terms as Perl itself, i.e. under the terms of either the GNU General Public License or the Artistic License, as specified in the F file. +=head1 VERSION + +Version 3.13 + +=head1 DATE + +23 Dec 2020 + +=head1 HISTORY + +See the F file. + =cut diff -Nru perl-5.32.1/cpan/libnet/lib/Net/FTP/A.pm perl-5.34.0/cpan/libnet/lib/Net/FTP/A.pm --- perl-5.32.1/cpan/libnet/lib/Net/FTP/A.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/lib/Net/FTP/A.pm 2021-01-20 23:04:44.000000000 +0000 @@ -13,7 +13,7 @@ use Net::FTP::dataconn; our @ISA = qw(Net::FTP::dataconn); -our $VERSION = "3.11"; +our $VERSION = "3.13"; our $buf; diff -Nru perl-5.32.1/cpan/libnet/lib/Net/FTP/dataconn.pm perl-5.34.0/cpan/libnet/lib/Net/FTP/dataconn.pm --- perl-5.32.1/cpan/libnet/lib/Net/FTP/dataconn.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/lib/Net/FTP/dataconn.pm 2021-01-20 23:04:44.000000000 +0000 @@ -13,7 +13,7 @@ use Errno; use Net::Cmd; -our $VERSION = '3.11'; +our $VERSION = '3.13'; $Net::FTP::IOCLASS or die "please load Net::FTP before Net::FTP::dataconn"; our @ISA = $Net::FTP::IOCLASS; @@ -137,6 +137,22 @@ Net::FTP::dataconn - FTP Client data connection class +=head1 SYNOPSIS + + # Perform IO operations on an FTP client data connection object: + + $num_bytes_read = $obj->read($buffer, $size); + $num_bytes_read = $obj->read($buffer, $size, $timeout); + + $num_bytes_written = $obj->write($buffer, $size); + $num_bytes_written = $obj->write($buffer, $size, $timeout); + + $num_bytes_read_so_far = $obj->bytes_read(); + + $obj->abort(); + + $closed_successfully = $obj->close(); + =head1 DESCRIPTION Some of the methods defined in C return an object which will @@ -147,31 +163,31 @@ =over 4 -=item read ( BUFFER, SIZE [, TIMEOUT ] ) +=item C -Read C bytes of data from the server and place it into C, also -performing any translation necessary. C is optional, if not +Read C<$size> bytes of data from the server and place it into C<$buffer>, also +performing any translation necessary. C<$timeout> is optional, if not given, the timeout value from the command connection will be used. Returns the number of bytes read before any translation. -=item write ( BUFFER, SIZE [, TIMEOUT ] ) +=item C -Write C bytes of data from C to the server, also -performing any translation necessary. C is optional, if not +Write C<$size> bytes of data from C<$buffer> to the server, also +performing any translation necessary. C<$timeout> is optional, if not given, the timeout value from the command connection will be used. Returns the number of bytes written before any translation. -=item bytes_read () +=item C Returns the number of bytes read so far. -=item abort () +=item C Abort the current data transfer. -=item close () +=item C Close the data connection and get a response from the FTP server. Returns I if the connection was closed successfully and the first digit of @@ -179,4 +195,43 @@ =back +=head1 EXPORTS + +I. + +=head1 KNOWN BUGS + +I. + +=head1 AUTHOR + +Graham Barr ELE. + +Steve Hay ELE is now maintaining +libnet as of version 1.22_02. + +=head1 COPYRIGHT + +Copyright (C) 1997-2010 Graham Barr. All rights reserved. + +Copyright (C) 2013-2014, 2020 Steve Hay. All rights reserved. + +=head1 LICENCE + +This module is free software; you can redistribute it and/or modify it under the +same terms as Perl itself, i.e. under the terms of either the GNU General Public +License or the Artistic License, as specified in the F file. + +=head1 VERSION + +Version 3.13 + +=head1 DATE + +23 Dec 2020 + +=head1 HISTORY + +See the F file. + =cut diff -Nru perl-5.32.1/cpan/libnet/lib/Net/FTP/E.pm perl-5.34.0/cpan/libnet/lib/Net/FTP/E.pm --- perl-5.32.1/cpan/libnet/lib/Net/FTP/E.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/lib/Net/FTP/E.pm 2021-01-20 23:04:44.000000000 +0000 @@ -8,6 +8,6 @@ use Net::FTP::I; our @ISA = qw(Net::FTP::I); -our $VERSION = "3.11"; +our $VERSION = "3.13"; 1; diff -Nru perl-5.32.1/cpan/libnet/lib/Net/FTP/I.pm perl-5.34.0/cpan/libnet/lib/Net/FTP/I.pm --- perl-5.32.1/cpan/libnet/lib/Net/FTP/I.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/lib/Net/FTP/I.pm 2021-01-20 23:04:44.000000000 +0000 @@ -13,7 +13,7 @@ use Net::FTP::dataconn; our @ISA = qw(Net::FTP::dataconn); -our $VERSION = "3.11"; +our $VERSION = "3.13"; our $buf; diff -Nru perl-5.32.1/cpan/libnet/lib/Net/FTP/L.pm perl-5.34.0/cpan/libnet/lib/Net/FTP/L.pm --- perl-5.32.1/cpan/libnet/lib/Net/FTP/L.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/lib/Net/FTP/L.pm 2021-01-20 23:04:44.000000000 +0000 @@ -8,6 +8,6 @@ use Net::FTP::I; our @ISA = qw(Net::FTP::I); -our $VERSION = "3.11"; +our $VERSION = "3.13"; 1; diff -Nru perl-5.32.1/cpan/libnet/lib/Net/FTP.pm perl-5.34.0/cpan/libnet/lib/Net/FTP.pm --- perl-5.32.1/cpan/libnet/lib/Net/FTP.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/lib/Net/FTP.pm 2021-01-20 23:04:44.000000000 +0000 @@ -1,7 +1,7 @@ # Net::FTP.pm # # Copyright (C) 1995-2004 Graham Barr. All rights reserved. -# Copyright (C) 2013-2017 Steve Hay. All rights reserved. +# Copyright (C) 2013-2017, 2020 Steve Hay. All rights reserved. # This module is free software; you can redistribute it and/or modify it under # the same terms as Perl itself, i.e. under the terms of either the GNU General # Public License or the Artistic License, as specified in the F file. @@ -23,7 +23,7 @@ use Socket; use Time::Local; -our $VERSION = '3.11'; +our $VERSION = '3.13'; our $IOCLASS; my $family_key; @@ -110,10 +110,13 @@ # use SNI if supported by IO::Socket::SSL $pkg->can_client_sni ? (SSL_hostname => $hostname):(), # reuse SSL session of control connection in data connections - SSL_session_cache => Net::FTP::_SSL_SingleSessionCache->new, + SSL_session_cache_size => 10, + SSL_session_key => $hostname, ); # user defined SSL arg $tlsargs{$_} = $arg{$_} for(grep { m{^SSL_} } keys %arg); + $tlsargs{SSL_reuse_ctx} = IO::Socket::SSL::SSL_Context->new(%tlsargs) + or return; } elsif ($arg{SSL}) { croak("IO::Socket::SSL >= 2.007 needed for SSL support"); @@ -262,7 +265,7 @@ $ftp->_MDTM($file) && $ftp->message =~ /((\d\d)(\d\d\d?))(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/ - ? timegm($8, $7, $6, $5, $4 - 1, $2 eq '19' ? $3 : ($1 - 1900)) + ? timegm($8, $7, $6, $5, $4 - 1, $2 eq '19' ? ($3 + 1900) : $1) : undef; } @@ -426,7 +429,7 @@ sub account { - @_ == 2 or croak 'usage: $ftp->account( ACCT )'; + @_ == 2 or croak 'usage: $ftp->account($acct)'; my $ftp = shift; my $acct = shift; $ftp->_ACCT($acct) == CMD_OK; @@ -452,7 +455,7 @@ sub authorize { - @_ >= 1 || @_ <= 3 or croak 'usage: $ftp->authorize( [AUTH [, RESP]])'; + @_ >= 1 || @_ <= 3 or croak 'usage: $ftp->authorize([$auth[, $resp]])'; my ($ftp, $auth, $resp) = &_auth_id; @@ -466,12 +469,12 @@ sub rename { - @_ == 3 or croak 'usage: $ftp->rename(FROM, TO)'; + @_ == 3 or croak 'usage: $ftp->rename($oldname, $newname)'; - my ($ftp, $from, $to) = @_; + my ($ftp, $oldname, $newname) = @_; - $ftp->_RNFR($from) - && $ftp->_RNTO($to); + $ftp->_RNFR($oldname) + && $ftp->_RNTO($newname); } @@ -619,7 +622,7 @@ sub cwd { - @_ == 1 || @_ == 2 or croak 'usage: $ftp->cwd( [ DIR ] )'; + @_ == 1 || @_ == 2 or croak 'usage: $ftp->cwd([$dir])'; my ($ftp, $dir) = @_; @@ -656,7 +659,7 @@ # Initial version contributed by Dinkum Software # sub rmdir { - @_ == 2 || @_ == 3 or croak('usage: $ftp->rmdir( DIR [, RECURSE ] )'); + @_ == 2 || @_ == 3 or croak('usage: $ftp->rmdir($dir[, $recurse])'); # Pick off the args my ($ftp, $dir, $recurse) = @_; @@ -702,7 +705,7 @@ sub restart { - @_ == 2 || croak 'usage: $ftp->restart( BYTE_OFFSET )'; + @_ == 2 || croak 'usage: $ftp->restart($where)'; my ($ftp, $where) = @_; @@ -713,7 +716,7 @@ sub mkdir { - @_ == 2 || @_ == 3 or croak 'usage: $ftp->mkdir( DIR [, RECURSE ] )'; + @_ == 2 || @_ == 3 or croak 'usage: $ftp->mkdir($dir[, $recurse])'; my ($ftp, $dir, $recurse) = @_; @@ -758,7 +761,7 @@ sub delete { - @_ == 2 || croak 'usage: $ftp->delete( FILENAME )'; + @_ == 2 || croak 'usage: $ftp->delete($filename)'; $_[0]->_DELE($_[1]); } @@ -881,12 +884,12 @@ sub port { - @_ == 1 || @_ == 2 or croak 'usage: $self->port([PORT])'; + @_ == 1 || @_ == 2 or croak 'usage: $self->port([$port])'; return _eprt('PORT',@_); } sub eprt { - @_ == 1 || @_ == 2 or croak 'usage: $self->eprt([PORT])'; + @_ == 1 || @_ == 2 or croak 'usage: $self->eprt([$port])'; return _eprt('EPRT',@_); } @@ -959,7 +962,7 @@ sub supported { - @_ == 2 or croak 'usage: $ftp->supported( CMD )'; + @_ == 2 or croak 'usage: $ftp->supported($cmd)'; my $ftp = shift; my $cmd = uc shift; my $hash = ${*$ftp}{'net_ftp_supported'} ||= {}; @@ -1282,36 +1285,36 @@ sub pasv_wait { - @_ == 2 or croak 'usage: $ftp->pasv_wait(NON_PASV_FTP)'; + @_ == 2 or croak 'usage: $ftp->pasv_wait($non_pasv_server)'; - my ($ftp, $non_pasv) = @_; + my ($ftp, $non_pasv_server) = @_; my ($file, $rin, $rout); vec($rin = '', fileno($ftp), 1) = 1; select($rout = $rin, undef, undef, undef); my $dres = $ftp->response(); - my $sres = $non_pasv->response(); + my $sres = $non_pasv_server->response(); return unless $dres == CMD_OK && $sres == CMD_OK; return - unless $ftp->ok() && $non_pasv->ok(); + unless $ftp->ok() && $non_pasv_server->ok(); return $1 if $ftp->message =~ /unique file name:\s*(\S*)\s*\)/; return $1 - if $non_pasv->message =~ /unique file name:\s*(\S*)\s*\)/; + if $non_pasv_server->message =~ /unique file name:\s*(\S*)\s*\)/; return 1; } sub feature { - @_ == 2 or croak 'usage: $ftp->feature( NAME )'; - my ($ftp, $feat) = @_; + @_ == 2 or croak 'usage: $ftp->feature($name)'; + my ($ftp, $name) = @_; my $feature = ${*$ftp}{net_ftp_feature} ||= do { my @feat; @@ -1329,7 +1332,7 @@ \@feat; }; - return grep { /^\Q$feat\E\b/i } @$feature; + return grep { /^\Q$name\E\b/i } @$feature; } @@ -1397,25 +1400,6 @@ sub _STRU { shift->unsupported(@_) } sub _REIN { shift->unsupported(@_) } -{ - # Session Cache with single entry - # used to make sure that we reuse same session for control and data channels - package Net::FTP::_SSL_SingleSessionCache; - sub new { my $x; return bless \$x,shift } - sub add_session { - my ($cache,$key,$session) = @_; - Net::SSLeay::SESSION_free($$cache) if $$cache; - $$cache = $session; - } - sub get_session { - my $cache = shift; - return $$cache - } - sub DESTROY { - my $cache = shift; - Net::SSLeay::SESSION_free($$cache) if $$cache; - } -} 1; @@ -1456,7 +1440,7 @@ The Net::FTP class is a subclass of Net::Cmd and (depending on avaibility) of IO::Socket::IP, IO::Socket::INET6 or IO::Socket::INET. -=head1 OVERVIEW +=head2 Overview FTP stands for File Transfer Protocol. It is a way of transferring files between networked machines. The protocol defines a client @@ -1487,19 +1471,19 @@ the EBCDIC or byte formats, and will default to binary instead if they are attempted. -=head1 CONSTRUCTOR +=head2 Class Methods =over 4 -=item new ([ HOST ] [, OPTIONS ]) +=item C -This is the constructor for a new Net::FTP object. C is the +This is the constructor for a new Net::FTP object. C<$host> is the name of the remote host to which an FTP connection is required. -C is optional. If C is not given then it may instead be +C<$host> is optional. If C<$host> is not given then it may instead be passed as the C option described below. -C are passed in a hash like fashion, using key and value pairs. +C<%options> are passed in a hash like fashion, using key and value pairs. Possible options are: B - FTP host to connect to. It may be a single scalar, as defined for @@ -1570,7 +1554,7 @@ =back -=head1 METHODS +=head2 Object Methods Unless otherwise stated all methods return either a I or I value, with I meaning that the operation was a success. When a method @@ -1583,7 +1567,7 @@ =over 4 -=item login ([LOGIN [,PASSWORD [, ACCOUNT] ] ]) +=item C Log into the remote FTP server with the given login information. If no arguments are given then the C uses the C @@ -1595,114 +1579,114 @@ If the connection is via a firewall then the C method will be called with no arguments. -=item starttls () +=item C Upgrade existing plain connection to SSL. The SSL arguments have to be given in C already because they are needed for data connections too. -=item stoptls () +=item C Downgrade existing SSL connection back to plain. This is needed to work with some FTP helpers at firewalls, which need to see the PORT and PASV commands and responses to dynamically open the necessary ports. In this case C is usually only done to protect the authorization. -=item prot ( LEVEL ) +=item C Set what type of data channel protection the client and server will be using. -Only Cs "C" (clear) and "P" (private) are supported. +Only C<$level>s "C" (clear) and "P" (private) are supported. -=item host () +=item C Returns the value used by the constructor, and passed to the IO::Socket super class to connect to the host. -=item account( ACCT ) +=item C Set a string identifying the user's account. -=item authorize ( [AUTH [, RESP]]) +=item C This is a protocol used by some firewall ftp proxies. It is used to authorise the user to send data out. If both arguments are not specified then C uses C to do a lookup. -=item site (ARGS) +=item C Send a SITE command to the remote server and wait for a response. Returns most significant digit of the response code. -=item ascii () +=item C Transfer file in ASCII. CRLF translation will be done if required -=item binary () +=item C Transfer file in binary mode. No transformation will be done. B: If both server and client machines use the same line ending for text files, then it will be faster to transfer all files in binary mode. -=item type ( [ TYPE ] ) +=item C Set or get if files will be transferred in ASCII or binary mode. -=item rename ( OLDNAME, NEWNAME ) +=item C -Rename a file on the remote FTP server from C to C. This +Rename a file on the remote FTP server from C<$oldname> to C<$newname>. This is done by sending the RNFR and RNTO commands. -=item delete ( FILENAME ) +=item C -Send a request to the server to delete C. +Send a request to the server to delete C<$filename>. -=item cwd ( [ DIR ] ) +=item C Attempt to change directory to the directory given in C<$dir>. If C<$dir> is C<"..">, the FTP C command is used to attempt to move up one directory. If no directory is given then an attempt is made to change the directory to the root directory. -=item cdup () +=item C Change directory to the parent of the current directory. -=item passive ( [ PASSIVE ] ) +=item C Set or get if data connections will be initiated in passive mode. -=item pwd () +=item C Returns the full pathname of the current directory. -=item restart ( WHERE ) +=item C Set the byte offset at which to begin the next data transfer. Net::FTP simply records this value and uses it when during the next data transfer. For this reason this method will not return an error, but setting it may cause a subsequent data transfer to fail. -=item rmdir ( DIR [, RECURSE ]) +=item C -Remove the directory with the name C. If C is I then +Remove the directory with the name C<$dir>. If C<$recurse> is I then C will attempt to delete everything inside the directory. -=item mkdir ( DIR [, RECURSE ]) +=item C -Create a new directory with the name C. If C is I then +Create a new directory with the name C<$dir>. If C<$recurse> is I then C will attempt to create all the directories in the given path. Returns the full pathname to the new directory. -=item alloc ( SIZE [, RECORD_SIZE] ) +=item C The alloc command allows you to give the ftp server a hint about the size of the file about to be transferred using the ALLO ftp command. Some storage systems use this to make intelligent decisions about how to store the file. -The C argument represents the size of the file in bytes. The -C argument indicates a maximum record or page size for files +The C<$size> argument represents the size of the file in bytes. The +C<$record_size> argument indicates a maximum record or page size for files sent with a record or page structure. The size of the file will be determined, and sent to the server @@ -1710,70 +1694,70 @@ you are transferring data from a socket, named pipe, or other stream not associated with a normal file. -=item ls ( [ DIR ] ) +=item C -Get a directory listing of C, or the current directory. +Get a directory listing of C<$dir>, or the current directory. In an array context, returns a list of lines returned from the server. In a scalar context, returns a reference to a list. -=item dir ( [ DIR ] ) +=item C -Get a directory listing of C, or the current directory in long format. +Get a directory listing of C<$dir>, or the current directory in long format. In an array context, returns a list of lines returned from the server. In a scalar context, returns a reference to a list. -=item get ( REMOTE_FILE [, LOCAL_FILE [, WHERE]] ) +=item C -Get C from the server and store locally. C may be +Get C<$remote_file> from the server and store locally. C<$local_file> may be a filename or a filehandle. If not specified, the file will be stored in the current directory with the same leafname as the remote file. -If C is given then the first C bytes of the file will +If C<$where> is given then the first C<$where> bytes of the file will not be transferred, and the remaining bytes will be appended to the local file if it already exists. -Returns C, or the generated local file name if C +Returns C<$local_file>, or the generated local file name if C<$local_file> is not given. If an error was encountered undef is returned. -=item put ( LOCAL_FILE [, REMOTE_FILE ] ) +=item C -Put a file on the remote server. C may be a name or a filehandle. -If C is a filehandle then C must be specified. If -C is not specified then the file will be stored in the current -directory with the same leafname as C. +Put a file on the remote server. C<$local_file> may be a name or a filehandle. +If C<$local_file> is a filehandle then C<$remote_file> must be specified. If +C<$remote_file> is not specified then the file will be stored in the current +directory with the same leafname as C<$local_file>. -Returns C, or the generated remote filename if C +Returns C<$remote_file>, or the generated remote filename if C<$remote_file> is not given. B: If for some reason the transfer does not complete and an error is returned then the contents that had been transferred will not be remove automatically. -=item put_unique ( LOCAL_FILE [, REMOTE_FILE ] ) +=item C Same as put but uses the C command. Returns the name of the file on the server. -=item append ( LOCAL_FILE [, REMOTE_FILE ] ) +=item C Same as put but appends to the file on the remote server. -Returns C, or the generated remote filename if C +Returns C<$remote_file>, or the generated remote filename if C<$remote_file> is not given. -=item unique_name () +=item C Returns the name of the last file stored on the server using the C command. -=item mdtm ( FILE ) +=item C Returns the I of the given file -=item size ( FILE ) +=item C Returns the size in bytes for the given file as stored on the remote server. @@ -1783,11 +1767,11 @@ "End Of Line" then the size of file on the local machine after transfer may be different. -=item supported ( CMD ) +=item C Returns TRUE if the remote server supports the given command. -=item hash ( [FILEHANDLE_GLOB_REF],[ BYTES_PER_HASH_MARK] ) +=item C Called without parameters, or with the first argument false, hash marks are suppressed. If the first argument is true but not a reference to a @@ -1796,7 +1780,7 @@ return value is a reference to an array of two: the filehandle glob reference and the bytes per hash mark. -=item feature ( NAME ) +=item C Determine if the server supports the specified feature. The return value is a list of lines the server responded with to describe the @@ -1822,33 +1806,33 @@ =over 4 -=item nlst ( [ DIR ] ) +=item C Send an C command to the server, with an optional parameter. -=item list ( [ DIR ] ) +=item C Same as C but using the C command -=item retr ( FILE ) +=item C -Begin the retrieval of a file called C from the remote server. +Begin the retrieval of a file called C<$file> from the remote server. -=item stor ( FILE ) +=item C -Tell the server that you wish to store a file. C is the +Tell the server that you wish to store a file. C<$file> is the name of the new file that should be created. -=item stou ( FILE ) +=item C Same as C but using the C command. The name of the unique file which was created on the server will be available via the C method after the data connection has been closed. -=item appe ( FILE ) +=item C Tell the server that we want to append some data to the end of a file -called C. If this file does not exist then create it. +called C<$file>. If this file does not exist then create it. =back @@ -1862,17 +1846,17 @@ =over 4 -=item port ( [ PORT ] ) +=item C -=item eprt ( [ PORT ] ) +=item C -Send a C (IPv4) or C (IPv6) command to the server. If C is +Send a C (IPv4) or C (IPv6) command to the server. If C<$port> is specified then it is sent to the server. If not, then a listen socket is created and the correct information sent to the server. -=item pasv () +=item C -=item epsv () +=item C Tell the server to go into passive mode (C for IPv4, C for IPv6). Returns the text that represents the port on which the server is listening, this @@ -1886,38 +1870,38 @@ =over 4 -=item pasv_xfer ( SRC_FILE, DEST_SERVER [, DEST_FILE ] ) +=item C This method will do a file transfer between two remote ftp servers. If -C is omitted then the leaf name of C will be used. +C<$dest_file> is omitted then the leaf name of C<$src_file> will be used. -=item pasv_xfer_unique ( SRC_FILE, DEST_SERVER [, DEST_FILE ] ) +=item C Like C but the file is stored on the remote server using the STOU command. -=item pasv_wait ( NON_PASV_SERVER ) +=item C This method can be used to wait for a transfer to complete between a passive server and a non-passive server. The method should be called on the passive server with the C object for the non-passive server passed as an argument. -=item abort () +=item C Abort the current data transfer. -=item quit () +=item C Send the QUIT command to the remote FTP server and close the socket connection. =back -=head2 Methods for the adventurous +=head2 Methods for the Adventurous =over 4 -=item quot (CMD [,ARGS]) +=item C Send a command, that Net::FTP does not directly support, to the remote server and wait for a response. @@ -1927,62 +1911,83 @@ B This call should only be used on commands that do not require data connections. Misuse of this method can hang the connection. -=item can_inet6 () +=item C Returns whether we can use IPv6. -=item can_ssl () +=item C Returns whether we can use SSL. =back -=head1 THE dataconn CLASS +=head2 The dataconn Class Some of the methods defined in C return an object which will be derived from the C class. See L for more details. -=head1 UNIMPLEMENTED +=head2 Unimplemented The following RFC959 commands have not been implemented: =over 4 -=item B +=item C Mount a different file system structure without changing login or accounting information. -=item B +=item C Ask the server for "helpful information" (that's what the RFC says) on the commands it accepts. -=item B +=item C Specifies transfer mode (stream, block or compressed) for file to be transferred. -=item B +=item C Request remote server system identification. -=item B +=item C Request remote server status. -=item B +=item C Specifies file structure for file to be transferred. -=item B +=item C Reinitialize the connection, flushing all I/O and account information. =back -=head1 REPORTING BUGS +=head1 EXAMPLES + +For an example of the use of Net::FTP see + +=over 4 + +=item L + +C is a program that can retrieve, send, or list files via +the FTP protocol in a non-interactive manner. + +=back + +=head1 EXPORTS + +I. + +=head1 KNOWN BUGS + +See L. + +=head2 Reporting Bugs When reporting bugs/problems please include as much information as possible. It may be difficult for me to reproduce the problem as almost every setup @@ -1994,51 +1999,42 @@ cannot include a small script then please include a Debug trace from a run of your program which does yield the problem. -=head1 AUTHOR - -Graham Barr EFE. - -Steve Hay EFE is now maintaining libnet as of version -1.22_02. - =head1 SEE ALSO L, L, -L +L; -ftp(1), ftpd(8), RFC 959, RFC 2428, RFC 4217 -http://www.ietf.org/rfc/rfc959.txt -http://www.ietf.org/rfc/rfc2428.txt -http://www.ietf.org/rfc/rfc4217.txt +L, +L; -=head1 USE EXAMPLES +L, +L, +L. -For an example of the use of Net::FTP see +=head1 ACKNOWLEDGEMENTS -=over 4 - -=item http://www.csh.rit.edu/~adam/Progs/ - -C is a program that can retrieve, send, or list files via -the FTP protocol in a non-interactive manner. +Henry Gabryjelski ELE - for the +suggestion of creating directories recursively. -=back +Nathan Torkington ELE - for some +input on the documentation. -=head1 CREDITS +Roderick Schertler ELE - for +various inputs -Henry Gabryjelski - for the suggestion of creating directories -recursively. +=head1 AUTHOR -Nathan Torkington - for some input on the documentation. +Graham Barr ELE. -Roderick Schertler - for various inputs +Steve Hay ELE is now maintaining +libnet as of version 1.22_02. =head1 COPYRIGHT Copyright (C) 1995-2004 Graham Barr. All rights reserved. -Copyright (C) 2013-2017 Steve Hay. All rights reserved. +Copyright (C) 2013-2017, 2020 Steve Hay. All rights reserved. =head1 LICENCE @@ -2046,4 +2042,16 @@ same terms as Perl itself, i.e. under the terms of either the GNU General Public License or the Artistic License, as specified in the F file. +=head1 VERSION + +Version 3.13 + +=head1 DATE + +23 Dec 2020 + +=head1 HISTORY + +See the F file. + =cut diff -Nru perl-5.32.1/cpan/libnet/lib/Net/libnetFAQ.pod perl-5.34.0/cpan/libnet/lib/Net/libnetFAQ.pod --- perl-5.32.1/cpan/libnet/lib/Net/libnetFAQ.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/lib/Net/libnetFAQ.pod 2021-01-20 23:04:44.000000000 +0000 @@ -9,23 +9,25 @@ This document is distributed with the libnet distribution, and is also available on the libnet web page at - http://search.cpan.org/dist/libnet/ +L =head2 How to contribute to this document You may report corrections, additions, and suggestions on the CPAN Request Tracker at - http://rt.cpan.org/Public/Bug/Report.html?Queue=libnet +L =head1 Author and Copyright Information Copyright (C) 1997-1998 Graham Barr. All rights reserved. -This document is free; you can redistribute it and/or modify it -under the terms of the Artistic License. +This document is free; you can redistribute it and/or modify it under +the same terms as Perl itself, i.e. under the terms of either the GNU +General Public License or the Artistic License, as specified in the +F file. -Steve Hay EFE is now maintaining libnet as of version -1.22_02. +Steve Hay ELE is now maintaining +libnet as of version 1.22_02. =head2 Disclaimer @@ -70,7 +72,7 @@ The latest libnet release is always on CPAN, you will find it in - http://search.cpan.org/dist/libnet/ +L =head1 Using Net::FTP diff -Nru perl-5.32.1/cpan/libnet/lib/Net/Netrc.pm perl-5.34.0/cpan/libnet/lib/Net/Netrc.pm --- perl-5.32.1/cpan/libnet/lib/Net/Netrc.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/lib/Net/Netrc.pm 2021-01-20 23:04:44.000000000 +0000 @@ -1,7 +1,7 @@ # Net::Netrc.pm # # Copyright (C) 1995-1998 Graham Barr. All rights reserved. -# Copyright (C) 2013-2014 Steve Hay. All rights reserved. +# Copyright (C) 2013-2014, 2020 Steve Hay. All rights reserved. # This module is free software; you can redistribute it and/or modify it under # the same terms as Perl itself, i.e. under the terms of either the GNU General # Public License or the Artistic License, as specified in the F file. @@ -16,7 +16,7 @@ use Carp; use FileHandle; -our $VERSION = "3.11"; +our $VERSION = "3.13"; our $TESTING; @@ -224,7 +224,7 @@ read and write access. If these conditions are not met then a warning is output and the .netrc file is not read. -=head1 THE .netrc FILE +=head2 The F<.netrc> File The .netrc file contains login and initialization information used by the auto-login process. It resides in the user's home directory. The following @@ -276,7 +276,7 @@ =back -=head1 CONSTRUCTOR +=head2 Class Methods The constructor for a C object is not called new as it does not really create a new object. But instead is called C as this is @@ -284,11 +284,11 @@ =over 4 -=item lookup ( MACHINE [, LOGIN ]) +=item C -Lookup and return a reference to the entry for C. If C is given -then the entry returned will have the given login. If C is not given then -the first entry in the .netrc file for C will be returned. +Lookup and return a reference to the entry for C<$machine>. If C<$login> is given +then the entry returned will have the given login. If C<$login> is not given then +the first entry in the .netrc file for C<$machine> will be returned. If a matching entry cannot be found, and a default entry exists, then a reference to the default entry is returned. @@ -298,45 +298,52 @@ =back -=head1 METHODS +=head2 Object Methods =over 4 -=item login () +=item C Return the login id for the netrc entry -=item password () +=item C Return the password for the netrc entry -=item account () +=item C Return the account information for the netrc entry -=item lpa () +=item C Return a list of login, password and account information for the netrc entry =back -=head1 AUTHOR +=head1 EXPORTS + +I. -Graham Barr EFE. +=head1 KNOWN BUGS -Steve Hay EFE is now maintaining libnet as of version -1.22_02. +See L. =head1 SEE ALSO -L, -L +L. + +=head1 AUTHOR + +Graham Barr ELE. + +Steve Hay ELE is now maintaining +libnet as of version 1.22_02. =head1 COPYRIGHT Copyright (C) 1995-1998 Graham Barr. All rights reserved. -Copyright (C) 2013-2014 Steve Hay. All rights reserved. +Copyright (C) 2013-2014, 2020 Steve Hay. All rights reserved. =head1 LICENCE @@ -344,4 +351,16 @@ same terms as Perl itself, i.e. under the terms of either the GNU General Public License or the Artistic License, as specified in the F file. +=head1 VERSION + +Version 3.13 + +=head1 DATE + +23 Dec 2020 + +=head1 HISTORY + +See the F file. + =cut diff -Nru perl-5.32.1/cpan/libnet/lib/Net/NNTP.pm perl-5.34.0/cpan/libnet/lib/Net/NNTP.pm --- perl-5.32.1/cpan/libnet/lib/Net/NNTP.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/lib/Net/NNTP.pm 2021-01-20 23:04:44.000000000 +0000 @@ -1,7 +1,7 @@ # Net::NNTP.pm # # Copyright (C) 1995-1997 Graham Barr. All rights reserved. -# Copyright (C) 2013-2016 Steve Hay. All rights reserved. +# Copyright (C) 2013-2016, 2020 Steve Hay. All rights reserved. # This module is free software; you can redistribute it and/or modify it under # the same terms as Perl itself, i.e. under the terms of either the GNU General # Public License or the Artistic License, as specified in the F file. @@ -19,7 +19,7 @@ use Net::Config; use Time::Local; -our $VERSION = "3.11"; +our $VERSION = "3.13"; # Code for detecting if we can use SSL my $ssl_class = eval { @@ -96,7 +96,6 @@ if ($arg{SSL}) { Net::NNTP::_SSL->start_SSL($obj,%arg) or next; } - last: } return @@ -176,7 +175,7 @@ sub article { - @_ >= 1 && @_ <= 3 or croak 'usage: $nntp->article( [ MSGID ], [ FH ] )'; + @_ >= 1 && @_ <= 3 or croak 'usage: $nntp->article([{$msgid|$msgnum}[, $fh]])'; my $nntp = shift; my @fh; @@ -189,7 +188,7 @@ sub articlefh { - @_ >= 1 && @_ <= 2 or croak 'usage: $nntp->articlefh( [ MSGID ] )'; + @_ >= 1 && @_ <= 2 or croak 'usage: $nntp->articlefh([{$msgid|$msgnum}])'; my $nntp = shift; return unless $nntp->_ARTICLE(@_); @@ -198,7 +197,7 @@ sub authinfo { - @_ == 3 or croak 'usage: $nntp->authinfo( USER, PASS )'; + @_ == 3 or croak 'usage: $nntp->authinfo($user, $pass)'; my ($nntp, $user, $pass) = @_; $nntp->_AUTHINFO("USER", $user) == CMD_MORE @@ -207,7 +206,7 @@ sub authinfo_simple { - @_ == 3 or croak 'usage: $nntp->authinfo( USER, PASS )'; + @_ == 3 or croak 'usage: $nntp->authinfo_simple($user, $pass)'; my ($nntp, $user, $pass) = @_; $nntp->_AUTHINFO('SIMPLE') == CMD_MORE @@ -216,7 +215,7 @@ sub body { - @_ >= 1 && @_ <= 3 or croak 'usage: $nntp->body( [ MSGID ], [ FH ] )'; + @_ >= 1 && @_ <= 3 or croak 'usage: $nntp->body([{$msgid|$msgnum}[, $fh]])'; my $nntp = shift; my @fh; @@ -229,7 +228,7 @@ sub bodyfh { - @_ >= 1 && @_ <= 2 or croak 'usage: $nntp->bodyfh( [ MSGID ] )'; + @_ >= 1 && @_ <= 2 or croak 'usage: $nntp->bodyfh([{$msgid|$msgnum}])'; my $nntp = shift; return unless $nntp->_BODY(@_); return $nntp->tied_fh; @@ -237,7 +236,7 @@ sub head { - @_ >= 1 && @_ <= 3 or croak 'usage: $nntp->head( [ MSGID ], [ FH ] )'; + @_ >= 1 && @_ <= 3 or croak 'usage: $nntp->head([{$msgid|$msgnum}[, $fh]])'; my $nntp = shift; my @fh; @@ -250,7 +249,7 @@ sub headfh { - @_ >= 1 && @_ <= 2 or croak 'usage: $nntp->headfh( [ MSGID ] )'; + @_ >= 1 && @_ <= 2 or croak 'usage: $nntp->headfh([{$msgid|$msgnum}])'; my $nntp = shift; return unless $nntp->_HEAD(@_); return $nntp->tied_fh; @@ -258,7 +257,7 @@ sub nntpstat { - @_ == 1 || @_ == 2 or croak 'usage: $nntp->nntpstat( [ MSGID ] )'; + @_ == 1 || @_ == 2 or croak 'usage: $nntp->nntpstat([{$msgid|$msgnum}])'; my $nntp = shift; $nntp->_STAT(@_) && $nntp->message =~ /(<[^>]+>)/o @@ -268,7 +267,7 @@ sub group { - @_ == 1 || @_ == 2 or croak 'usage: $nntp->group( [ GROUP ] )'; + @_ == 1 || @_ == 2 or croak 'usage: $nntp->group([$group])'; my $nntp = shift; my $grp = ${*$nntp}{'net_nntp_group'}; @@ -308,11 +307,11 @@ sub ihave { - @_ >= 2 or croak 'usage: $nntp->ihave( MESSAGE-ID [, MESSAGE ])'; - my $nntp = shift; - my $mid = shift; + @_ >= 2 or croak 'usage: $nntp->ihave($msgid[, $message])'; + my $nntp = shift; + my $msgid = shift; - $nntp->_IHAVE($mid) && $nntp->datasend(@_) + $nntp->_IHAVE($msgid) && $nntp->datasend(@_) ? @_ == 0 || $nntp->dataend : undef; } @@ -339,15 +338,15 @@ sub newgroups { - @_ >= 2 or croak 'usage: $nntp->newgroups( SINCE [, DISTRIBUTIONS ])'; + @_ >= 2 or croak 'usage: $nntp->newgroups($since[, $distributions])'; my $nntp = shift; - my $time = _timestr(shift); - my $dist = shift || ""; + my $since = _timestr(shift); + my $distributions = shift || ""; - $dist = join(",", @{$dist}) - if ref($dist); + $distributions = join(",", @{$distributions}) + if ref($distributions); - $nntp->_NEWGROUPS($time, $dist) + $nntp->_NEWGROUPS($since, $distributions) ? $nntp->_grouplist : undef; } @@ -355,20 +354,20 @@ sub newnews { @_ >= 2 && @_ <= 4 - or croak 'usage: $nntp->newnews( SINCE [, GROUPS [, DISTRIBUTIONS ]])'; + or croak 'usage: $nntp->newnews($since[, $groups[, $distributions]])'; my $nntp = shift; - my $time = _timestr(shift); - my $grp = @_ ? shift: $nntp->group; - my $dist = shift || ""; + my $since = _timestr(shift); + my $groups = @_ ? shift : $nntp->group; + my $distributions = shift || ""; - $grp ||= "*"; - $grp = join(",", @{$grp}) - if ref($grp); + $groups ||= "*"; + $groups = join(",", @{$groups}) + if ref($groups); - $dist = join(",", @{$dist}) - if ref($dist); + $distributions = join(",", @{$distributions}) + if ref($distributions); - $nntp->_NEWNEWS($grp, $time, $dist) + $nntp->_NEWNEWS($groups, $since, $distributions) ? $nntp->_articlelist : undef; } @@ -385,7 +384,7 @@ sub post { - @_ >= 1 or croak 'usage: $nntp->post( [ MESSAGE ] )'; + @_ >= 1 or croak 'usage: $nntp->post([$message])'; my $nntp = shift; $nntp->_POST() && $nntp->datasend(@_) @@ -423,7 +422,7 @@ sub active { - @_ == 1 || @_ == 2 or croak 'usage: $nntp->active( [ PATTERN ] )'; + @_ == 1 || @_ == 2 or croak 'usage: $nntp->active([$pattern])'; my $nntp = shift; $nntp->_LIST('ACTIVE', @_) @@ -453,7 +452,7 @@ sub distribution_patterns { - @_ == 1 or croak 'usage: $nntp->distributions()'; + @_ == 1 or croak 'usage: $nntp->distribution_patterns()'; my $nntp = shift; my $arr; @@ -468,7 +467,7 @@ sub newsgroups { - @_ == 1 || @_ == 2 or croak 'usage: $nntp->newsgroups( [ PATTERN ] )'; + @_ == 1 || @_ == 2 or croak 'usage: $nntp->newsgroups([$pattern])'; my $nntp = shift; $nntp->_LIST('NEWSGROUPS', @_) @@ -498,7 +497,7 @@ sub listgroup { - @_ == 1 || @_ == 2 or croak 'usage: $nntp->listgroup( [ GROUP ] )'; + @_ == 1 || @_ == 2 or croak 'usage: $nntp->listgroup([$group])'; my $nntp = shift; $nntp->_LISTGROUP(@_) @@ -516,7 +515,7 @@ sub xgtitle { - @_ == 1 || @_ == 2 or croak 'usage: $nntp->xgtitle( [ PATTERN ] )'; + @_ == 1 || @_ == 2 or croak 'usage: $nntp->xgtitle([$pattern])'; my $nntp = shift; $nntp->_XGTITLE(@_) @@ -526,19 +525,19 @@ sub xhdr { - @_ >= 2 && @_ <= 4 or croak 'usage: $nntp->xhdr( HEADER, [ MESSAGE-SPEC ] )'; + @_ >= 2 && @_ <= 4 or croak 'usage: $nntp->xhdr($header[, $message_spec])'; my $nntp = shift; - my $hdr = shift; - my $arg = _msg_arg(@_); + my $header = shift; + my $arg = _msg_arg(@_); - $nntp->_XHDR($hdr, $arg) + $nntp->_XHDR($header, $arg) ? $nntp->_description : undef; } sub xover { - @_ == 2 || @_ == 3 or croak 'usage: $nntp->xover( MESSAGE-SPEC )'; + @_ == 2 || @_ == 3 or croak 'usage: $nntp->xover($message_spec)'; my $nntp = shift; my $arg = _msg_arg(@_); @@ -549,27 +548,27 @@ sub xpat { - @_ == 4 || @_ == 5 or croak '$nntp->xpat( HEADER, PATTERN, MESSAGE-SPEC )'; + @_ == 4 || @_ == 5 or croak 'usage: $nntp->xpat($header, $pattern, $message_spec )'; my $nntp = shift; - my $hdr = shift; - my $pat = shift; - my $arg = _msg_arg(@_); + my $header = shift; + my $pattern = shift; + my $arg = _msg_arg(@_); - $pat = join(" ", @$pat) - if ref($pat); + $pattern = join(" ", @$pattern) + if ref($pattern); - $nntp->_XPAT($hdr, $arg, $pat) + $nntp->_XPAT($header, $arg, $pattern) ? $nntp->_description : undef; } sub xpath { - @_ == 2 or croak 'usage: $nntp->xpath( MESSAGE-ID )'; - my ($nntp, $mid) = @_; + @_ == 2 or croak 'usage: $nntp->xpath($message_id)'; + my ($nntp, $message_id) = @_; return - unless $nntp->_XPATH($mid); + unless $nntp->_XPATH($message_id); my $m; ($m = $nntp->message) =~ s/^\d+\s+//o; @@ -580,7 +579,7 @@ sub xrover { - @_ == 2 || @_ == 3 or croak 'usage: $nntp->xrover( MESSAGE-SPEC )'; + @_ == 2 || @_ == 3 or croak 'usage: $nntp->xrover($message_spec)'; my $nntp = shift; my $arg = _msg_arg(@_); @@ -596,7 +595,7 @@ $nntp->_DATE && $nntp->message =~ /(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/ - ? timegm($6, $5, $4, $3, $2 - 1, $1 - 1900) + ? timegm($6, $5, $4, $3, $2 - 1, $1) : undef; } @@ -807,20 +806,20 @@ The Net::NNTP class is a subclass of Net::Cmd and (depending on avaibility) of IO::Socket::IP, IO::Socket::INET6 or IO::Socket::INET. -=head1 CONSTRUCTOR +=head2 Class Methods =over 4 -=item new ( [ HOST ] [, OPTIONS ]) +=item C -This is the constructor for a new Net::NNTP object. C is the +This is the constructor for a new Net::NNTP object. C<$host> is the name of the remote host to which a NNTP connection is required. If not given then it may be passed as the C option described below. If no host is passed then two environment variables are checked, first C then C, then C is checked, and if a host is not found then C is used. -C are passed in a hash like fashion, using key and value pairs. +C<%options> are passed in a hash like fashion, using key and value pairs. Possible options are: B - NNTP host to connect to. It may be a single scalar, as defined for @@ -857,7 +856,7 @@ =back -=head1 METHODS +=head2 Object Methods Unless otherwise stated all methods return either a I or I value, with I meaning that the operation was a success. When a method @@ -870,58 +869,58 @@ =over 4 -=item host () +=item C Returns the value used by the constructor, and passed to IO::Socket::INET, to connect to the host. -=item starttls () +=item C Upgrade existing plain connection to SSL. Any arguments necessary for SSL must be given in C already. -=item article ( [ MSGID|MSGNUM ], [FH] ) +=item C Retrieve the header, a blank line, then the body (text) of the specified article. -If C is specified then it is expected to be a valid filehandle +If C<$fh> is specified then it is expected to be a valid filehandle and the result will be printed to it, on success a true value will be -returned. If C is not specified then the return value, on success, +returned. If C<$fh> is not specified then the return value, on success, will be a reference to an array containing the article requested, each entry in the array will contain one line of the article. If no arguments are passed then the current article in the currently selected newsgroup is fetched. -C is a numeric id of an article in the current newsgroup, and -will change the current article pointer. C is the message id of +C<$msgnum> is a numeric id of an article in the current newsgroup, and +will change the current article pointer. C<$msgid> is the message id of an article as shown in that article's header. It is anticipated that the -client will obtain the C from a list provided by the C +client will obtain the C<$msgid> from a list provided by the C command, from references contained within another article, or from the message-id provided in the response to some other commands. If there is an error then C will be returned. -=item body ( [ MSGID|MSGNUM ], [FH] ) +=item C Like C
but only fetches the body of the article. -=item head ( [ MSGID|MSGNUM ], [FH] ) +=item C Like C
but only fetches the headers for the article. -=item articlefh ( [ MSGID|MSGNUM ] ) +=item C -=item bodyfh ( [ MSGID|MSGNUM ] ) +=item C -=item headfh ( [ MSGID|MSGNUM ] ) +=item C These are similar to article(), body() and head(), but rather than returning the requested data directly, they return a tied filehandle from which to read the article. -=item nntpstat ( [ MSGID|MSGNUM ] ) +=item C The C command is similar to the C
command except that no text is returned. When selecting by message number within a group, @@ -934,9 +933,9 @@ Returns the message-id of the "current article". -=item group ( [ GROUP ] ) +=item C -Set and/or get the current group. If C is not given then information +Set and/or get the current group. If C<$group> is not given then information is returned on the current group. In a scalar context it returns the group name. @@ -945,45 +944,45 @@ of articles in the group, the number of the first article, the number of the last article and the group name. -=item help ( ) +=item C Request help text (a short summary of commands that are understood by this implementation) from the server. Returns the text or undef upon failure. -=item ihave ( MSGID [, MESSAGE ]) +=item C The C command informs the server that the client has an article -whose id is C. If the server desires a copy of that -article and C has been given then it will be sent. +whose id is C<$msgid>. If the server desires a copy of that +article and C<$message> has been given then it will be sent. -Returns I if the server desires the article and C was +Returns I if the server desires the article and C<$message> was successfully sent, if specified. -If C is not specified then the message must be sent using the +If C<$message> is not specified then the message must be sent using the C and C methods from L -C can be either an array of lines or a reference to an array +C<$message> can be either an array of lines or a reference to an array and must be encoded by the caller to octets of whatever encoding is required, e.g. by using the Encode module's C function. -=item last () +=item C Set the "current article pointer" to the previous article in the current newsgroup. Returns the message-id of the article. -=item date () +=item C Returns the date on the remote server. This date will be in a UNIX time format (seconds since 1970) -=item postok () +=item C C will return I if the servers initial response indicated that it will allow posting. -=item authinfo ( USER, PASS ) +=item C Authenticates to the server (using the original AUTHINFO USER / AUTHINFO PASS form, defined in RFC2980) using the supplied username and password. Please @@ -991,61 +990,61 @@ should not be used with valuable passwords unless the connection to the server is somehow protected. -=item authinfo_simple ( USER, PASS ) +=item C Authenticates to the server (using the proposed NNTP V2 AUTHINFO SIMPLE form, defined and deprecated in RFC2980) using the supplied username and password. As with L the password is sent in clear text. -=item list () +=item C Obtain information about all the active newsgroups. The results is a reference to a hash where the key is a group name and each value is a reference to an array. The elements in this array are:- the last article number in the group, the first article number in the group and any information flags about the group. -=item newgroups ( SINCE [, DISTRIBUTIONS ]) +=item C -C is a time value and C is either a distribution +C<$since> is a time value and C<$distributions> is either a distribution pattern or a reference to a list of distribution patterns. The result is the same as C, but the -groups return will be limited to those created after C and, if -specified, in one of the distribution areas in C. +groups return will be limited to those created after C<$since> and, if +specified, in one of the distribution areas in C<$distributions>. -=item newnews ( SINCE [, GROUPS [, DISTRIBUTIONS ]]) +=item C -C is a time value. C is either a group pattern or a reference -to a list of group patterns. C is either a distribution +C<$since> is a time value. C<$groups> is either a group pattern or a reference +to a list of group patterns. C<$distributions> is either a distribution pattern or a reference to a list of distribution patterns. Returns a reference to a list which contains the message-ids of all news posted -after C, that are in a groups which matched C and a -distribution which matches C. +after C<$since>, that are in a groups which matched C<$groups> and a +distribution which matches C<$distributions>. -=item next () +=item C Set the "current article pointer" to the next article in the current newsgroup. Returns the message-id of the article. -=item post ( [ MESSAGE ] ) +=item C -Post a new article to the news server. If C is specified and posting +Post a new article to the news server. If C<$message> is specified and posting is allowed then the message will be sent. -If C is not specified then the message must be sent using the +If C<$message> is not specified then the message must be sent using the C and C methods from L -C can be either an array of lines or a reference to an array +C<$message> can be either an array of lines or a reference to an array and must be encoded by the caller to octets of whatever encoding is required, e.g. by using the Encode module's C function. -The message, either sent via C or as the C +The message, either sent via C or as the C<$message> parameter, must be in the format as described by RFC822 and must contain From:, Newsgroups: and Subject: headers. -=item postfh () +=item C Post a new article to the news server using a tied filehandle. If posting is allowed, this method will return a tied filehandle that you @@ -1054,85 +1053,85 @@ article, and the return value from the close() call will indicate whether the message was successfully posted. -=item slave () +=item C Tell the remote server that I am not a user client, but probably another news server. -=item quit () +=item C Quit the remote server and close the socket connection. -=item can_inet6 () +=item C Returns whether we can use IPv6. -=item can_ssl () +=item C Returns whether we can use SSL. =back -=head2 Extension methods +=head2 Extension Methods These methods use commands that are not part of the RFC977 documentation. Some servers may not support all of them. =over 4 -=item newsgroups ( [ PATTERN ] ) +=item C Returns a reference to a hash where the keys are all the group names which -match C, or all of the groups if no pattern is specified, and +match C<$pattern>, or all of the groups if no pattern is specified, and each value contains the description text for the group. -=item distributions () +=item C Returns a reference to a hash where the keys are all the possible distribution names and the values are the distribution descriptions. -=item distribution_patterns () +=item C Returns a reference to an array where each element, itself an array reference, consists of the three fields of a line of the distrib.pats list maintained by some NNTP servers, namely: a weight, a wildmat and a value which the client may use to construct a Distribution header. -=item subscriptions () +=item C Returns a reference to a list which contains a list of groups which are recommended for a new user to subscribe to. -=item overview_fmt () +=item C Returns a reference to an array which contain the names of the fields returned by C. -=item active_times () +=item C Returns a reference to a hash where the keys are the group names and each value is a reference to an array containing the time the groups was created and an identifier, possibly an Email address, of the creator. -=item active ( [ PATTERN ] ) +=item C Similar to C but only active groups that match the pattern are returned. -C can be a group pattern. +C<$pattern> can be a group pattern. -=item xgtitle ( PATTERN ) +=item C Returns a reference to a hash where the keys are all the group names which -match C and each value is the description text for the group. +match C<$pattern> and each value is the description text for the group. -=item xhdr ( HEADER, MESSAGE-SPEC ) +=item C -Obtain the header field C
for all the messages specified. +Obtain the header field C<$header> for all the messages specified. The return value will be a reference to a hash where the keys are the message numbers and each value contains the text of the requested header for that message. -=item xover ( MESSAGE-SPEC ) +=item C The return value will be a reference to a hash where the keys are the message numbers and each value contains @@ -1141,17 +1140,17 @@ The names of the fields can be obtained by calling C. -=item xpath ( MESSAGE-ID ) +=item C Returns the path name to the file on the server which contains the specified message. -=item xpat ( HEADER, PATTERN, MESSAGE-SPEC) +=item C The result is the same as C except the is will be restricted to -headers where the text of the header matches C +headers where the text of the header matches C<$pattern> -=item xrover () +=item C The XROVER command returns reference information for the article(s) specified. @@ -1159,12 +1158,12 @@ Returns a reference to a HASH where the keys are the message numbers and the values are the References: lines from the articles -=item listgroup ( [ GROUP ] ) +=item C -Returns a reference to a list of all the active messages in C, or -the current group if C is not specified. +Returns a reference to a list of all the active messages in C<$group>, or +the current group if C<$group> is not specified. -=item reader () +=item C Tell the server that you are a reader and not another server. @@ -1179,7 +1178,7 @@ =back -=head1 UNSUPPORTED +=head2 Unsupported The following NNTP command are unsupported by the package, and there are no plans to do so. @@ -1189,16 +1188,16 @@ XSEARCH XINDEX -=head1 DEFINITIONS +=head2 Definitions =over 4 -=item MESSAGE-SPEC +=item $message_spec -C is either a single message-id, a single message number, or +C<$message_spec> is either a single message-id, a single message number, or a reference to a list of two message numbers. -If C is a reference to a list of two message numbers and the +If C<$message_spec> is a reference to a list of two message numbers and the second number in a range is less than or equal to the first then the range represents all messages in the group after the first message number. @@ -1206,7 +1205,7 @@ a message spec can be passed as a list of two numbers, this is deprecated and a reference to the list should now be passed -=item PATTERN +=item $pattern The C protocol uses the C format for patterns. The WILDMAT format was first developed by Rich Salz based on @@ -1275,23 +1274,31 @@ =back +=head1 EXPORTS + +I. + +=head1 KNOWN BUGS + +See L. + =head1 SEE ALSO L, -L +L. =head1 AUTHOR -Graham Barr EFE. +Graham Barr ELE. -Steve Hay EFE is now maintaining libnet as of version -1.22_02. +Steve Hay ELE is now maintaining +libnet as of version 1.22_02. =head1 COPYRIGHT Copyright (C) 1995-1997 Graham Barr. All rights reserved. -Copyright (C) 2013-2016 Steve Hay. All rights reserved. +Copyright (C) 2013-2016, 2020 Steve Hay. All rights reserved. =head1 LICENCE @@ -1299,4 +1306,16 @@ same terms as Perl itself, i.e. under the terms of either the GNU General Public License or the Artistic License, as specified in the F file. +=head1 VERSION + +Version 3.13 + +=head1 DATE + +23 Dec 2020 + +=head1 HISTORY + +See the F file. + =cut diff -Nru perl-5.32.1/cpan/libnet/lib/Net/POP3.pm perl-5.34.0/cpan/libnet/lib/Net/POP3.pm --- perl-5.32.1/cpan/libnet/lib/Net/POP3.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/lib/Net/POP3.pm 2021-01-20 23:04:44.000000000 +0000 @@ -1,7 +1,7 @@ # Net::POP3.pm # # Copyright (C) 1995-2004 Graham Barr. All rights reserved. -# Copyright (C) 2013-2016 Steve Hay. All rights reserved. +# Copyright (C) 2013-2016, 2020 Steve Hay. All rights reserved. # This module is free software; you can redistribute it and/or modify it under # the same terms as Perl itself, i.e. under the terms of either the GNU General # Public License or the Artistic License, as specified in the F file. @@ -18,7 +18,7 @@ use Net::Cmd; use Net::Config; -our $VERSION = "3.11"; +our $VERSION = "3.13"; # Code for detecting if we can use SSL my $ssl_class = eval { @@ -124,7 +124,7 @@ sub login { - @_ >= 1 && @_ <= 3 or croak 'usage: $pop3->login( USER, PASS )'; + @_ >= 1 && @_ <= 3 or croak 'usage: $pop3->login([$user[, $pass]])'; my ($me, $user, $pass) = @_; if (@_ <= 2) { @@ -147,7 +147,7 @@ } sub apop { - @_ >= 1 && @_ <= 3 or croak 'usage: $pop3->apop( USER, PASS )'; + @_ >= 1 && @_ <= 3 or croak 'usage: $pop3->apop([$user[, $pass]])'; my ($me, $user, $pass) = @_; my $banner; my $md; @@ -180,13 +180,13 @@ sub user { - @_ == 2 or croak 'usage: $pop3->user( USER )'; + @_ == 2 or croak 'usage: $pop3->user($user)'; $_[0]->_USER($_[1]) ? 1 : undef; } sub pass { - @_ == 2 or croak 'usage: $pop3->pass( PASS )'; + @_ == 2 or croak 'usage: $pop3->pass($pass)'; my ($me, $pass) = @_; @@ -225,7 +225,7 @@ sub top { - @_ == 2 || @_ == 3 or croak 'usage: $pop3->top( MSGNUM [, NUMLINES ])'; + @_ == 2 || @_ == 3 or croak 'usage: $pop3->top($msgnum[, $numlines])'; my $me = shift; return @@ -247,7 +247,7 @@ sub list { - @_ == 1 || @_ == 2 or croak 'usage: $pop3->list( [ MSGNUM ] )'; + @_ == 1 || @_ == 2 or croak 'usage: $pop3->list([$msgnum])'; my $me = shift; return @@ -268,7 +268,7 @@ sub get { - @_ == 2 or @_ == 3 or croak 'usage: $pop3->get( MSGNUM [, FH ])'; + @_ == 2 or @_ == 3 or croak 'usage: $pop3->get($msgnum[, $fh])'; my $me = shift; return @@ -279,7 +279,7 @@ sub getfh { - @_ == 2 or croak 'usage: $pop3->getfh( MSGNUM )'; + @_ == 2 or croak 'usage: $pop3->getfh($msgnum)'; my $me = shift; return unless $me->_RETR(shift); @@ -288,7 +288,7 @@ sub delete { - @_ == 2 or croak 'usage: $pop3->delete( MSGNUM )'; + @_ == 2 or croak 'usage: $pop3->delete($msgnum)'; my $me = shift; return 0 unless $me->_DELE(@_); ${*$me}{'net_pop3_deleted'} = 1; @@ -296,7 +296,7 @@ sub uidl { - @_ == 1 || @_ == 2 or croak 'usage: $pop3->uidl( [ MSGNUM ] )'; + @_ == 1 || @_ == 2 or croak 'usage: $pop3->uidl([$msgnum])'; my $me = shift; my $uidl; @@ -319,7 +319,7 @@ sub ping { - @_ == 2 or croak 'usage: $pop3->ping( USER )'; + @_ == 2 or croak 'usage: $pop3->ping($user)'; my $me = shift; return () unless $me->_PING(@_) && $me->message =~ /(\d+)\D+(\d+)/; @@ -635,21 +635,20 @@ The Net::POP3 class is a subclass of Net::Cmd and (depending on avaibility) of IO::Socket::IP, IO::Socket::INET6 or IO::Socket::INET. - -=head1 CONSTRUCTOR +=head2 Class Methods =over 4 -=item new ( [ HOST ] [, OPTIONS ] ) +=item C -This is the constructor for a new Net::POP3 object. C is the +This is the constructor for a new Net::POP3 object. C<$host> is the name of the remote host to which an POP3 connection is required. -C is optional. If C is not given then it may instead be +C<$host> is optional. If C<$host> is not given then it may instead be passed as the C option described below. If neither is given then the C specified in C will be used. -C are passed in a hash like fashion, using key and value pairs. +C<%options> are passed in a hash like fashion, using key and value pairs. Possible options are: B - POP3 host to connect to. It may be a single scalar, as defined for @@ -681,7 +680,7 @@ =back -=head1 METHODS +=head2 Object Methods Unless otherwise stated all methods return either a I or I value, with I meaning that the operation was a success. When a method @@ -694,26 +693,26 @@ =over 4 -=item host () +=item C Returns the value used by the constructor, and passed to IO::Socket::INET, to connect to the host. -=item auth ( USERNAME, PASSWORD ) +=item C Attempt SASL authentication. -=item user ( USER ) +=item C Send the USER command. -=item pass ( PASS ) +=item C Send the PASS command. Returns the number of messages in the mailbox. -=item login ( [ USER [, PASS ]] ) +=item C -Send both the USER and PASS commands. If C is not given the +Send both the USER and PASS commands. If C<$pass> is not given the C uses C to lookup the password using the host and username. If the username is not specified then the current user name will be used. @@ -724,25 +723,25 @@ If there was an error authenticating the user then I will be returned. -=item starttls ( SSLARGS ) +=item C Upgrade existing plain connection to SSL. You can use SSL arguments as documented in L, but it will usually use the right arguments already. -=item apop ( [ USER [, PASS ]] ) +=item C -Authenticate with the server identifying as C with password C. +Authenticate with the server identifying as C<$user> with password C<$pass>. Similar to L, but the password is not sent in clear text. To use this method you must have the Digest::MD5 or the MD5 module installed, otherwise this method will return I. -=item banner () +=item C Return the sever's connection banner -=item capa () +=item C Return a reference to a hash of the capabilities of the server. APOP is added as a pseudo capability. Note that I've been unable to @@ -750,109 +749,117 @@ be multi-word and some are not. We make an attempt at intelligently parsing them, but it may not be correct. -=item capabilities () +=item C Just like capa, but only uses a cache from the last time we asked the server, so as to avoid asking more than once. -=item top ( MSGNUM [, NUMLINES ] ) +=item C -Get the header and the first C of the body for the message -C. Returns a reference to an array which contains the lines of text +Get the header and the first C<$numlines> of the body for the message +C<$msgnum>. Returns a reference to an array which contains the lines of text read from the server. -=item list ( [ MSGNUM ] ) +=item C If called with an argument the C returns the size of the message in octets. If called without arguments a reference to a hash is returned. The -keys will be the C's of all undeleted messages and the values will +keys will be the C<$msgnum>'s of all undeleted messages and the values will be their size in octets. -=item get ( MSGNUM [, FH ] ) +=item C -Get the message C from the remote mailbox. If C is not given +Get the message C<$msgnum> from the remote mailbox. If C<$fh> is not given then get returns a reference to an array which contains the lines of -text read from the server. If C is given then the lines returned -from the server are printed to the filehandle C. +text read from the server. If C<$fh> is given then the lines returned +from the server are printed to the filehandle C<$fh>. -=item getfh ( MSGNUM ) +=item C As per get(), but returns a tied filehandle. Reading from this filehandle returns the requested message. The filehandle will return EOF at the end of the message and should not be reused. -=item last () +=item C -Returns the highest C of all the messages accessed. +Returns the highest C<$msgnum> of all the messages accessed. -=item popstat () +=item C Returns a list of two elements. These are the number of undeleted elements and the size of the mbox in octets. -=item ping ( USER ) +=item C Returns a list of two elements. These are the number of new messages -and the total number of messages for C. +and the total number of messages for C<$user>. -=item uidl ( [ MSGNUM ] ) +=item C -Returns a unique identifier for C if given. If C is not +Returns a unique identifier for C<$msgnum> if given. If C<$msgnum> is not given C returns a reference to a hash where the keys are the message numbers and the values are the unique identifiers. -=item delete ( MSGNUM ) +=item C -Mark message C to be deleted from the remote mailbox. All messages +Mark message C<$msgnum> to be deleted from the remote mailbox. All messages that are marked to be deleted will be removed from the remote mailbox when the server connection closed. -=item reset () +=item C Reset the status of the remote POP3 server. This includes resetting the status of all messages to not be deleted. -=item quit () +=item C Quit and close the connection to the remote POP3 server. Any messages marked as deleted will be deleted from the remote mailbox. -=item can_inet6 () +=item C Returns whether we can use IPv6. -=item can_ssl () +=item C Returns whether we can use SSL. =back -=head1 NOTES +=head2 Notes If a C object goes out of scope before C method is called then the C method will called before the connection is closed. This means that any messages marked to be deleted will not be. +=head1 EXPORTS + +I. + +=head1 KNOWN BUGS + +See L. + =head1 SEE ALSO L, L, -L +L. =head1 AUTHOR -Graham Barr EFE. +Graham Barr ELE. -Steve Hay EFE is now maintaining libnet as of version -1.22_02. +Steve Hay ELE is now maintaining +libnet as of version 1.22_02. =head1 COPYRIGHT Copyright (C) 1995-2004 Graham Barr. All rights reserved. -Copyright (C) 2013-2016 Steve Hay. All rights reserved. +Copyright (C) 2013-2016, 2020 Steve Hay. All rights reserved. =head1 LICENCE @@ -860,4 +867,16 @@ same terms as Perl itself, i.e. under the terms of either the GNU General Public License or the Artistic License, as specified in the F file. +=head1 VERSION + +Version 3.13 + +=head1 DATE + +23 Dec 2020 + +=head1 HISTORY + +See the F file. + =cut diff -Nru perl-5.32.1/cpan/libnet/lib/Net/SMTP.pm perl-5.34.0/cpan/libnet/lib/Net/SMTP.pm --- perl-5.32.1/cpan/libnet/lib/Net/SMTP.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/lib/Net/SMTP.pm 2021-01-20 23:04:44.000000000 +0000 @@ -1,7 +1,7 @@ # Net::SMTP.pm # # Copyright (C) 1995-2004 Graham Barr. All rights reserved. -# Copyright (C) 2013-2016 Steve Hay. All rights reserved. +# Copyright (C) 2013-2016, 2020 Steve Hay. All rights reserved. # This module is free software; you can redistribute it and/or modify it under # the same terms as Perl itself, i.e. under the terms of either the GNU General # Public License or the Artistic License, as specified in the F file. @@ -19,7 +19,7 @@ use Net::Config; use Socket; -our $VERSION = "3.11"; +our $VERSION = "3.13"; # Code for detecting if we can use SSL my $ssl_class = eval { @@ -663,57 +663,23 @@ The Net::SMTP class is a subclass of Net::Cmd and (depending on avaibility) of IO::Socket::IP, IO::Socket::INET6 or IO::Socket::INET. -=head1 EXAMPLES - -This example prints the mail domain name of the SMTP server known as mailhost: - - #!/usr/local/bin/perl -w - - use Net::SMTP; - - $smtp = Net::SMTP->new('mailhost'); - print $smtp->domain,"\n"; - $smtp->quit; - -This example sends a small message to the postmaster at the SMTP server -known as mailhost: - - #!/usr/local/bin/perl -w - - use Net::SMTP; - - my $smtp = Net::SMTP->new('mailhost'); - - $smtp->mail($ENV{USER}); - if ($smtp->to('postmaster')) { - $smtp->data(); - $smtp->datasend("To: postmaster\n"); - $smtp->datasend("\n"); - $smtp->datasend("A simple test message\n"); - $smtp->dataend(); - } else { - print "Error: ", $smtp->message(); - } - - $smtp->quit; - -=head1 CONSTRUCTOR +=head2 Class Methods =over 4 -=item new ( [ HOST ] [, OPTIONS ] ) +=item C -This is the constructor for a new Net::SMTP object. C is the +This is the constructor for a new Net::SMTP object. C<$host> is the name of the remote host to which an SMTP connection is required. On failure C will be returned and C<$@> will contain the reason for the failure. -C is optional. If C is not given then it may instead be +C<$host> is optional. If C<$host> is not given then it may instead be passed as the C option described below. If neither is given then the C specified in C will be used. -C are passed in a hash like fashion, using key and value pairs. +C<%options> are passed in a hash like fashion, using key and value pairs. Possible options are: B - SMTP requires that you identify yourself. This option @@ -748,16 +714,14 @@ B - Maximum time, in seconds, to wait for a response from the SMTP server (default: 120) -B - If true the all ADDRESS arguments must be as +B - If true then all C<$address> arguments must be as defined by C in RFC2822. If not given, or false, then Net::SMTP will attempt to extract the address from the value passed. B - Enable debugging information - Example: - $smtp = Net::SMTP->new('mailhost', Hello => 'my.mail.domain', Timeout => 30, @@ -788,7 +752,7 @@ =back -=head1 METHODS +=head1 Object Methods Unless otherwise stated all methods return either a I or I value, with I meaning that the operation was a success. When a method @@ -801,60 +765,60 @@ =over 4 -=item banner () +=item C Returns the banner message which the server replied with when the initial connection was made. -=item domain () +=item C Returns the domain that the remote SMTP server identified itself as during connection. -=item hello ( DOMAIN ) +=item C Tell the remote server the mail domain which you are in using the EHLO command (or HELO if EHLO fails). Since this method is invoked automatically when the Net::SMTP object is constructed the user should normally not have to call it manually. -=item host () +=item C Returns the value used by the constructor, and passed to IO::Socket::INET, to connect to the host. -=item etrn ( DOMAIN ) +=item C -Request a queue run for the DOMAIN given. +Request a queue run for the C<$domain> given. -=item starttls ( SSLARGS ) +=item C Upgrade existing plain connection to SSL. You can use SSL arguments as documented in L, but it will usually use the right arguments already. -=item auth ( USERNAME, PASSWORD ) +=item C -=item auth ( SASL ) +=item C Attempt SASL authentication. Requires Authen::SASL module. The first form constructs a new Authen::SASL object using the given username and password; the second form uses the given Authen::SASL object. -=item mail ( ADDRESS [, OPTIONS] ) +=item C -=item send ( ADDRESS ) +=item C -=item send_or_mail ( ADDRESS ) +=item C -=item send_and_mail ( ADDRESS ) +=item C -Send the appropriate command to the server MAIL, SEND, SOML or SAML. C
+Send the appropriate command to the server MAIL, SEND, SOML or SAML. C<$address> is the address of the sender. This initiates the sending of a message. The method C should be called for each address that the message is to be sent to. -The C method can some additional ESMTP OPTIONS which is passed +The C method can take some additional ESMTP C<%options> which is passed in hash like fashion, using key and value pairs. Possible options are: Size => @@ -872,13 +836,13 @@ The submitter address in C option is expected to be in a format as required by RFC 2554, in an RFC2821-quoted form and xtext-encoded, or <> . -=item reset () +=item C Reset the status of the server. This may be called after a message has been initiated, but before any data has been sent, to cancel the sending of the message. -=item recipient ( ADDRESS [, ADDRESS, [...]] [, OPTIONS ] ) +=item C Notify the server that the current message should be sent to all of the addresses given. Each address is sent as a separate command to the server. @@ -886,7 +850,7 @@ aborted and a I value is returned. It is up to the user to call C if they so desire. -The C method can also pass additional case-sensitive OPTIONS as an +The C method can also pass additional case-sensitive C<%options> as an anonymous hash using key and value pairs. Possible options are: Notify => ['NEVER'] or ['SUCCESS','FAILURE','DELAY'] (see below) @@ -919,8 +883,9 @@ $smtp->recipient(@recipients, { Notify => ['NEVER'], SkipBad => 1 }); # Good You may use any combination of these three values 'SUCCESS','FAILURE','DELAY' in -the anonymous array reference as defined by RFC3461 (see http://www.ietf.org/rfc/rfc3461.txt -for more information. Note: quotations in this topic from same.). +the anonymous array reference as defined by RFC3461 (see +L for more information. Note: quotations +in this topic from same.). A Notify parameter of 'SUCCESS' or 'FAILURE' "requests that a DSN be issued on successful delivery or delivery failure, respectively." @@ -943,67 +908,67 @@ the sender, because he can't know if recipients get rewritten by mail servers. It is expected to be in a format as required by RFC3461, xtext-encoded. -=item to ( ADDRESS [, ADDRESS [...]] ) +=item C -=item cc ( ADDRESS [, ADDRESS [...]] ) +=item C -=item bcc ( ADDRESS [, ADDRESS [...]] ) +=item C Synonyms for C. -=item data ( [ DATA ] ) +=item C Initiate the sending of the data from the current message. -C may be a reference to a list or a list and must be encoded by the +C<$data> may be a reference to a list or a list and must be encoded by the caller to octets of whatever encoding is required, e.g. by using the Encode module's C function. -If specified the contents of C and a termination string C<".\r\n"> is +If specified the contents of C<$data> and a termination string C<".\r\n"> is sent to the server. The result will be true if the data was accepted. -If C is not specified then the result will indicate that the server +If C<$data> is not specified then the result will indicate that the server wishes the data to be sent. The data must then be sent using the C and C methods described in L. -=item bdat ( DATA ) +=item C -=item bdatlast ( DATA ) +=item C -Use the alternate DATA command "BDAT" of the data chunking service extension +Use the alternate C<$data> command "BDAT" of the data chunking service extension defined in RFC1830 for efficiently sending large MIME messages. -=item expand ( ADDRESS ) +=item C Request the server to expand the given address Returns an array which contains the text read from the server. -=item verify ( ADDRESS ) +=item C -Verify that C
is a legitimate mailing address. +Verify that C<$address> is a legitimate mailing address. Most sites usually disable this feature in their SMTP service configuration. Use "Debug => 1" option under new() to see if disabled. -=item help ( [ $subject ] ) +=item C Request help text from the server. Returns the text or undef upon failure -=item quit () +=item C Send the QUIT command to the remote SMTP server and close the socket connection. -=item can_inet6 () +=item C Returns whether we can use IPv6. -=item can_ssl () +=item C Returns whether we can use SSL. =back -=head1 ADDRESSES +=head2 Addresses Net::SMTP attempts to DWIM with addresses that are passed. For example an application might extract The From: line from an email @@ -1019,23 +984,65 @@ "funny user"@domain RIGHT, recommended <"funny user"@domain> OK +=head1 EXAMPLES + +This example prints the mail domain name of the SMTP server known as mailhost: + + #!/usr/local/bin/perl -w + + use Net::SMTP; + + $smtp = Net::SMTP->new('mailhost'); + print $smtp->domain,"\n"; + $smtp->quit; + +This example sends a small message to the postmaster at the SMTP server +known as mailhost: + + #!/usr/local/bin/perl -w + + use Net::SMTP; + + my $smtp = Net::SMTP->new('mailhost'); + + $smtp->mail($ENV{USER}); + if ($smtp->to('postmaster')) { + $smtp->data(); + $smtp->datasend("To: postmaster\n"); + $smtp->datasend("\n"); + $smtp->datasend("A simple test message\n"); + $smtp->dataend(); + } else { + print "Error: ", $smtp->message(); + } + + $smtp->quit; + +=head1 EXPORTS + +I. + +=head1 KNOWN BUGS + +See L. + =head1 SEE ALSO L, -L +L. =head1 AUTHOR -Graham Barr EFE. +Graham Barr ELE. -Steve Hay EFE is now maintaining libnet as of version -1.22_02. +Steve Hay ELE is now maintaining +libnet as of version 1.22_02. =head1 COPYRIGHT Copyright (C) 1995-2004 Graham Barr. All rights reserved. -Copyright (C) 2013-2016 Steve Hay. All rights reserved. +Copyright (C) 2013-2016, 2020 Steve Hay. All rights reserved. =head1 LICENCE @@ -1043,4 +1050,16 @@ same terms as Perl itself, i.e. under the terms of either the GNU General Public License or the Artistic License, as specified in the F file. +=head1 VERSION + +Version 3.13 + +=head1 DATE + +23 Dec 2020 + +=head1 HISTORY + +See the F file. + =cut diff -Nru perl-5.32.1/cpan/libnet/lib/Net/Time.pm perl-5.34.0/cpan/libnet/lib/Net/Time.pm --- perl-5.32.1/cpan/libnet/lib/Net/Time.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/lib/Net/Time.pm 2021-01-20 23:04:44.000000000 +0000 @@ -1,7 +1,7 @@ # Net::Time.pm # # Copyright (C) 1995-2004 Graham Barr. All rights reserved. -# Copyright (C) 2014 Steve Hay. All rights reserved. +# Copyright (C) 2014, 2020 Steve Hay. All rights reserved. # This module is free software; you can redistribute it and/or modify it under # the same terms as Perl itself, i.e. under the terms of either the GNU General # Public License or the Artistic License, as specified in the F file. @@ -22,7 +22,7 @@ our @ISA = qw(Exporter); our @EXPORT_OK = qw(inet_time inet_daytime); -our $VERSION = "3.11"; +our $VERSION = "3.13"; our $TIMEOUT = 120; @@ -123,37 +123,64 @@ C provides subroutines that obtain the time on a remote machine. +=head2 Functions + =over 4 -=item inet_time ( [HOST [, PROTOCOL [, TIMEOUT]]]) +=item C -Obtain the time on C, or some default host if C is not given +Obtain the time on C<$host>, or some default host if C<$host> is not given or not defined, using the protocol as defined in RFC868. The optional -argument C should define the protocol to use, either C or +argument C<$protocol> should define the protocol to use, either C or C. The result will be a time value in the same units as returned by time() or I upon failure. -=item inet_daytime ( [HOST [, PROTOCOL [, TIMEOUT]]]) +=item C -Obtain the time on C, or some default host if C is not given +Obtain the time on C<$host>, or some default host if C<$host> is not given or not defined, using the protocol as defined in RFC867. The optional -argument C should define the protocol to use, either C or +argument C<$protocol> should define the protocol to use, either C or C. The result will be an ASCII string or I upon failure. =back +=head1 EXPORTS + +The following symbols are, or can be, exported by this module: + +=over 4 + +=item Default Exports + +I. + +=item Optional Exports + +C, +C. + +=item Export Tags + +I. + +=back + +=head1 KNOWN BUGS + +I. + =head1 AUTHOR -Graham Barr EFE. +Graham Barr ELE. -Steve Hay EFE is now maintaining libnet as of version -1.22_02. +Steve Hay ELE is now maintaining +libnet as of version 1.22_02. =head1 COPYRIGHT Copyright (C) 1995-2004 Graham Barr. All rights reserved. -Copyright (C) 2014 Steve Hay. All rights reserved. +Copyright (C) 2014, 2020 Steve Hay. All rights reserved. =head1 LICENCE @@ -161,4 +188,16 @@ same terms as Perl itself, i.e. under the terms of either the GNU General Public License or the Artistic License, as specified in the F file. +=head1 VERSION + +Version 3.13 + +=head1 DATE + +23 Dec 2020 + +=head1 HISTORY + +See the F file. + =cut diff -Nru perl-5.32.1/cpan/libnet/Makefile.PL perl-5.34.0/cpan/libnet/Makefile.PL --- perl-5.32.1/cpan/libnet/Makefile.PL 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/Makefile.PL 2021-01-20 23:04:44.000000000 +0000 @@ -7,7 +7,7 @@ # Makefile creation script. # # COPYRIGHT -# Copyright (C) 2014, 2015 Steve Hay. All rights reserved. +# Copyright (C) 2014-2015, 2020 Steve Hay. All rights reserved. # # LICENCE # This script is free software; you can redistribute it and/or modify it under @@ -66,7 +66,7 @@ ABSTRACT => 'Collection of network protocol modules', AUTHOR => 'Graham Barr , Steve Hay ', LICENSE => 'perl_5', - VERSION => '3.11', + VERSION => '3.13', META_MERGE => { 'meta-spec' => { @@ -76,7 +76,7 @@ resources => { repository => { type => 'git', - url => 'https://github.com/steve-m-hay/perl-libnet.git' + web => 'https://github.com/steve-m-hay/perl-libnet' } }, diff -Nru perl-5.32.1/cpan/libnet/t/config.t perl-5.34.0/cpan/libnet/t/config.t --- perl-5.32.1/cpan/libnet/t/config.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/t/config.t 2021-01-20 23:04:44.000000000 +0000 @@ -5,15 +5,21 @@ use strict; use warnings; +use Test::More; + BEGIN { if (!eval { require Socket }) { - print "1..0 # no Socket\n"; exit 0; + plan skip_all => "no Socket"; + } + elsif (ord('A') == 193 && !eval { require Convert::EBCDIC }) { + plan skip_all => "EBCDIC but no Convert::EBCDIC"; + } + else { + plan tests => 10; } + undef *{Socket::inet_aton}; undef *{Socket::inet_ntoa}; - if (ord('A') == 193 && !eval { require Convert::EBCDIC }) { - print "1..0 # EBCDIC but no Convert::EBCDIC\n"; exit 0; - } $INC{'Socket.pm'} = 1; } @@ -45,13 +51,8 @@ return $names{$_[0]}; } -package main; - -(my $libnet_t = __FILE__) =~ s/config.t/libnet_t.pl/; -require $libnet_t; - -print "1..10\n"; +package main; use Net::Config; ok( exists $INC{'Net/Config.pm'}, 'Net::Config should have been used' ); diff -Nru perl-5.32.1/cpan/libnet/t/datasend.t perl-5.34.0/cpan/libnet/t/datasend.t --- perl-5.32.1/cpan/libnet/t/datasend.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/t/datasend.t 2021-01-20 23:04:44.000000000 +0000 @@ -5,12 +5,17 @@ use strict; use warnings; +use Test::More; + BEGIN { if (!eval { require Socket }) { - print "1..0 # no Socket\n"; exit 0; + plan skip_all => "no Socket"; + } + elsif (ord('A') == 193 && !eval { require Convert::EBCDIC }) { + plan skip_all => "EBCDIC but no Convert::EBCDIC"; } - if (ord('A') == 193 && !eval { require Convert::EBCDIC }) { - print "1..0 # EBCDIC but no Convert::EBCDIC\n"; exit 0; + else { + plan tests => 54; } } @@ -41,11 +46,6 @@ } } -(my $libnet_t = __FILE__) =~ s/datasend.t/libnet_t.pl/; -require $libnet_t or die; - -print "1..54\n"; - sub check { my $expect = pop; my $cmd = Foo->new; diff -Nru perl-5.32.1/cpan/libnet/t/ftp.t perl-5.34.0/cpan/libnet/t/ftp.t --- perl-5.32.1/cpan/libnet/t/ftp.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/t/ftp.t 2021-01-20 23:04:44.000000000 +0000 @@ -7,7 +7,7 @@ BEGIN { if (!eval { require Socket }) { - print "1..0 # Skip: no Socket module\n"; exit 0; + print "1..0 # Skip: no Socket\n"; exit 0; } if (ord('A') == 193 && !eval { require Convert::EBCDIC }) { print "1..0 # Skip: EBCDIC but no Convert::EBCDIC\n"; exit 0; diff -Nru perl-5.32.1/cpan/libnet/t/hostname.t perl-5.34.0/cpan/libnet/t/hostname.t --- perl-5.32.1/cpan/libnet/t/hostname.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/t/hostname.t 2021-01-20 23:04:44.000000000 +0000 @@ -7,10 +7,10 @@ BEGIN { if (!eval { require Socket }) { - print "1..0 # no Socket\n"; exit 0; + print "1..0 # Skip: no Socket\n"; exit 0; } if (ord('A') == 193 && !eval { require Convert::EBCDIC }) { - print "1..0 # EBCDIC but no Convert::EBCDIC\n"; exit 0; + print "1..0 # Skip: EBCDIC but no Convert::EBCDIC\n"; exit 0; } } @@ -18,7 +18,7 @@ use Net::Config; unless($NetConfig{test_hosts}) { - print "1..0\n"; + print "1..0 # Skip: test_hosts not enabled in config\n"; exit 0; } diff -Nru perl-5.32.1/cpan/libnet/t/libnet_t.pl perl-5.34.0/cpan/libnet/t/libnet_t.pl --- perl-5.32.1/cpan/libnet/t/libnet_t.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/t/libnet_t.pl 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ -use 5.008001; - -use strict; -use warnings; - -my $number = 0; -sub ok { - my ($condition, $name) = @_; - - my $message = $condition ? "ok " : "not ok "; - $message .= ++$number; - $message .= " # $name" if defined $name; - print $message, "\n"; - return $condition; -} - -sub is { - my ($got, $expected, $name) = @_; - - for ($got, $expected) { - $_ = 'undef' unless defined $_; - } - - unless (ok($got eq $expected, $name)) { - warn "Got: '$got'\nExpected: '$expected'\n" . join(' ', caller) . "\n"; - } -} - -sub skip { - my ($reason, $num) = @_; - $reason ||= ''; - $number ||= 1; - - for (1 .. $num) { - $number++; - print "ok $number # skip $reason\n"; - } -} - -1; - diff -Nru perl-5.32.1/cpan/libnet/t/netrc.t perl-5.34.0/cpan/libnet/t/netrc.t --- perl-5.32.1/cpan/libnet/t/netrc.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/t/netrc.t 2021-01-20 23:04:44.000000000 +0000 @@ -5,17 +5,21 @@ use strict; use warnings; +use Test::More; + BEGIN { if (!eval { require Socket }) { - print "1..0 # no Socket\n"; exit 0; + plan skip_all => "no Socket"; + } + elsif (ord('A') == 193 && !eval { require Convert::EBCDIC }) { + plan skip_all => "EBCDIC but no Convert::EBCDIC"; } - if (ord('A') == 193 && !eval { require Convert::EBCDIC }) { - print "1..0 # EBCDIC but no Convert::EBCDIC\n"; exit 0; + else { + plan tests => 20; } } use Cwd; -print "1..20\n"; # for testing _readrc $ENV{HOME} = Cwd::cwd(); @@ -36,9 +40,6 @@ # for testing _readrc $INC{'FileHandle.pm'} = 1; -(my $libnet_t = __FILE__) =~ s/\w+.t$/libnet_t.pl/; -require $libnet_t; - # now that the tricks are out of the way... eval { require Net::Netrc; }; ok( !$@, 'should be able to require() Net::Netrc safely' ); diff -Nru perl-5.32.1/cpan/libnet/t/nntp_ipv6.t perl-5.34.0/cpan/libnet/t/nntp_ipv6.t --- perl-5.32.1/cpan/libnet/t/nntp_ipv6.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/t/nntp_ipv6.t 2021-01-20 23:04:44.000000000 +0000 @@ -5,10 +5,20 @@ use strict; use warnings; +use Test::More; + +BEGIN { + if (!eval { require Socket }) { + plan skip_all => "no Socket"; + } + elsif (ord('A') == 193 && !eval { require Convert::EBCDIC }) { + plan skip_all => "EBCDIC but no Convert::EBCDIC"; + } +} + use Config; use File::Temp 'tempfile'; use Net::NNTP; -use Test::More; my $debug = 0; # Net::NNTP->new( Debug => .. ) diff -Nru perl-5.32.1/cpan/libnet/t/nntp_ssl.t perl-5.34.0/cpan/libnet/t/nntp_ssl.t --- perl-5.32.1/cpan/libnet/t/nntp_ssl.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/t/nntp_ssl.t 2021-01-20 23:04:44.000000000 +0000 @@ -5,10 +5,20 @@ use strict; use warnings; +use Test::More; + +BEGIN { + if (!eval { require Socket }) { + plan skip_all => "no Socket"; + } + elsif (ord('A') == 193 && !eval { require Convert::EBCDIC }) { + plan skip_all => "EBCDIC but no Convert::EBCDIC"; + } +} + use Config; use File::Temp 'tempfile'; use Net::NNTP; -use Test::More; my $debug = 0; # Net::NNTP Debug => .. diff -Nru perl-5.32.1/cpan/libnet/t/nntp.t perl-5.34.0/cpan/libnet/t/nntp.t --- perl-5.32.1/cpan/libnet/t/nntp.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/t/nntp.t 2021-01-20 23:04:44.000000000 +0000 @@ -7,10 +7,10 @@ BEGIN { if (!eval { require Socket }) { - print "1..0 # no Socket\n"; exit 0; + print "1..0 # Skip: no Socket\n"; exit 0; } if (ord('A') == 193 && !eval { require Convert::EBCDIC }) { - print "1..0 # EBCDIC but no Convert::EBCDIC\n"; exit 0; + print "1..0 # Skip: EBCDIC but no Convert::EBCDIC\n"; exit 0; } } @@ -18,8 +18,13 @@ use Net::NNTP; use Net::Cmd qw(CMD_REJECT); -unless(@{$NetConfig{nntp_hosts}} && $NetConfig{test_hosts}) { - print "1..0\n"; +unless(@{$NetConfig{nntp_hosts}}) { + print "1..0 # Skip: no nntp_hosts defined in config\n"; + exit; +} + +unless($NetConfig{test_hosts}) { + print "1..0 # Skip: test_hosts not enabled in config\n"; exit; } diff -Nru perl-5.32.1/cpan/libnet/t/pop3_ipv6.t perl-5.34.0/cpan/libnet/t/pop3_ipv6.t --- perl-5.32.1/cpan/libnet/t/pop3_ipv6.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/t/pop3_ipv6.t 2021-01-20 23:04:44.000000000 +0000 @@ -5,10 +5,20 @@ use strict; use warnings; +use Test::More; + +BEGIN { + if (!eval { require Socket }) { + plan skip_all => "no Socket"; + } + elsif (ord('A') == 193 && !eval { require Convert::EBCDIC }) { + plan skip_all => "EBCDIC but no Convert::EBCDIC"; + } +} + use Config; use File::Temp 'tempfile'; use Net::POP3; -use Test::More; my $debug = 0; # Net::POP3->new( Debug => .. ) diff -Nru perl-5.32.1/cpan/libnet/t/pop3_ssl.t perl-5.34.0/cpan/libnet/t/pop3_ssl.t --- perl-5.32.1/cpan/libnet/t/pop3_ssl.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/t/pop3_ssl.t 2021-01-20 23:04:44.000000000 +0000 @@ -5,10 +5,20 @@ use strict; use warnings; +use Test::More; + +BEGIN { + if (!eval { require Socket }) { + plan skip_all => "no Socket"; + } + elsif (ord('A') == 193 && !eval { require Convert::EBCDIC }) { + plan skip_all => "EBCDIC but no Convert::EBCDIC"; + } +} + use Config; use File::Temp 'tempfile'; use Net::POP3; -use Test::More; my $debug = 0; # Net::POP3 Debug => .. diff -Nru perl-5.32.1/cpan/libnet/t/require.t perl-5.34.0/cpan/libnet/t/require.t --- perl-5.32.1/cpan/libnet/t/require.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/t/require.t 2021-01-20 23:04:44.000000000 +0000 @@ -7,10 +7,10 @@ BEGIN { if (!eval { require Socket }) { - print "1..0 # no Socket\n"; exit 0; + print "1..0 # Skip: no Socket\n"; exit 0; } if (ord('A') == 193 && !eval { require Convert::EBCDIC }) { - print "1..0 # EBCDIC but no Convert::EBCDIC\n"; exit 0; + print "1..0 # Skip: EBCDIC but no Convert::EBCDIC\n"; exit 0; } } diff -Nru perl-5.32.1/cpan/libnet/t/smtp_ipv6.t perl-5.34.0/cpan/libnet/t/smtp_ipv6.t --- perl-5.32.1/cpan/libnet/t/smtp_ipv6.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/t/smtp_ipv6.t 2021-01-20 23:04:44.000000000 +0000 @@ -5,10 +5,20 @@ use strict; use warnings; +use Test::More; + +BEGIN { + if (!eval { require Socket }) { + plan skip_all => "no Socket"; + } + elsif (ord('A') == 193 && !eval { require Convert::EBCDIC }) { + plan skip_all => "EBCDIC but no Convert::EBCDIC"; + } +} + use Config; use File::Temp 'tempfile'; use Net::SMTP; -use Test::More; my $debug = 0; # Net::SMTP->new( Debug => .. ) diff -Nru perl-5.32.1/cpan/libnet/t/smtp_ssl.t perl-5.34.0/cpan/libnet/t/smtp_ssl.t --- perl-5.32.1/cpan/libnet/t/smtp_ssl.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/t/smtp_ssl.t 2021-01-20 23:04:44.000000000 +0000 @@ -5,10 +5,20 @@ use strict; use warnings; +use Test::More; + +BEGIN { + if (!eval { require Socket }) { + plan skip_all => "no Socket"; + } + elsif (ord('A') == 193 && !eval { require Convert::EBCDIC }) { + plan skip_all => "EBCDIC but no Convert::EBCDIC"; + } +} + use Config; use File::Temp 'tempfile'; use Net::SMTP; -use Test::More; my $debug = 0; # Net::SMTP Debug => .. diff -Nru perl-5.32.1/cpan/libnet/t/smtp.t perl-5.34.0/cpan/libnet/t/smtp.t --- perl-5.32.1/cpan/libnet/t/smtp.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/t/smtp.t 2021-01-20 23:04:44.000000000 +0000 @@ -7,18 +7,23 @@ BEGIN { if (!eval { require Socket }) { - print "1..0 # no Socket\n"; exit 0; + print "1..0 # Skip: no Socket\n"; exit 0; } - if (ord('A') == 193 && eval { require Convert::EBCDIC }) { - print "1..0 # EBCDIC but no Convert::EBCDIC\n"; exit 0; + if (ord('A') == 193 && !eval { require Convert::EBCDIC }) { + print "1..0 # Skip: EBCDIC but no Convert::EBCDIC\n"; exit 0; } } use Net::Config; use Net::SMTP; -unless(@{$NetConfig{smtp_hosts}} && $NetConfig{test_hosts}) { - print "1..0\n"; +unless(@{$NetConfig{smtp_hosts}}) { + print "1..0 # Skip: no smtp_hosts defined in config\n"; + exit 0; +} + +unless($NetConfig{test_hosts}) { + print "1..0 # Skip: test_hosts not enabled in config\n"; exit 0; } diff -Nru perl-5.32.1/cpan/libnet/t/time.t perl-5.34.0/cpan/libnet/t/time.t --- perl-5.32.1/cpan/libnet/t/time.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/libnet/t/time.t 2021-01-20 23:04:44.000000000 +0000 @@ -5,22 +5,24 @@ use strict; use warnings; +use Test::More; + BEGIN { if (!eval { require Socket }) { - print "1..0 # no Socket\n"; exit 0; + plan skip_all => "no Socket"; + } + elsif (ord('A') == 193 && !eval { require Convert::EBCDIC }) { + plan skip_all => "EBCDIC but no Convert::EBCDIC"; } - if (ord('A') == 193 && !eval { require Convert::EBCDIC }) { - print "1..0 # EBCDIC but no Convert::EBCDIC\n"; exit 0; + else { + plan tests => 12; } + $INC{'IO/Socket.pm'} = 1; $INC{'IO/Select.pm'} = 1; $INC{'IO/Socket/INET.pm'} = 1; } -(my $libnet_t = __FILE__) =~ s/time.t/libnet_t.pl/; -require $libnet_t; - -print "1..12\n"; # cannot use(), otherwise it will use IO::Socket and IO::Select eval{ require Net::Time; }; ok( !$@, 'should be able to require() Net::Time safely' ); diff -Nru perl-5.32.1/cpan/Math-Complex/lib/Math/Complex.pm perl-5.34.0/cpan/Math-Complex/lib/Math/Complex.pm --- perl-5.32.1/cpan/Math-Complex/lib/Math/Complex.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Math-Complex/lib/Math/Complex.pm 2020-10-04 22:17:12.000000000 +0000 @@ -10,7 +10,7 @@ { use 5.006; } use strict; -our $VERSION = 1.59_01; +our $VERSION = 1.59_02; use Config; diff -Nru perl-5.32.1/cpan/Math-Complex/t/Complex.t perl-5.34.0/cpan/Math-Complex/t/Complex.t --- perl-5.32.1/cpan/Math-Complex/t/Complex.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Math-Complex/t/Complex.t 2020-10-04 22:17:12.000000000 +0000 @@ -6,12 +6,20 @@ # -- Jarkko Hietaniemi since Mar 1997 # -- Daniel S. Lewart since Sep 1997 +use strict; +use warnings; + use Math::Complex 1.54; +# they are used later in the test and not exported by Math::Complex +*_stringify_cartesian = \&Math::Complex::_stringify_cartesian; +*_stringify_polar = \&Math::Complex::_stringify_polar; + our $vax_float = (pack("d",1) =~ /^[\x80\x10]\x40/); our $has_inf = !$vax_float; my ($args, $op, $target, $test, $test_set, $try, $val, $zvalue, @set, @val); +my ($bad, $z); $test = 0; $| = 1; diff -Nru perl-5.32.1/cpan/Math-Complex/t/Trig.t perl-5.34.0/cpan/Math-Complex/t/Trig.t --- perl-5.32.1/cpan/Math-Complex/t/Trig.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Math-Complex/t/Trig.t 2020-10-04 22:17:12.000000000 +0000 @@ -8,6 +8,8 @@ # # -- Jarkko Hietaniemi, April 1997 +use strict; +use warnings; use Test::More tests => 153; use Math::Trig 1.18; @@ -28,7 +30,7 @@ $eps = 1e-10; } -sub near ($$;$) { +sub near { my $e = defined $_[2] ? $_[2] : $eps; my $d = $_[1] ? abs($_[0]/$_[1] - 1) : abs($_[0]); print "# near? $_[0] $_[1] : $d : $e\n"; diff -Nru perl-5.32.1/cpan/Math-Complex/t/underbar.t perl-5.34.0/cpan/Math-Complex/t/underbar.t --- perl-5.32.1/cpan/Math-Complex/t/underbar.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/Math-Complex/t/underbar.t 2020-10-04 22:17:12.000000000 +0000 @@ -5,12 +5,13 @@ use Test::More; +use strict; +use warnings; + my @f = qw(abs cos exp log sin sqrt); plan tests => scalar @f; -use strict; - use Math::Complex; my %CORE; diff -Nru perl-5.32.1/cpan/MIME-Base64/Base64.pm perl-5.34.0/cpan/MIME-Base64/Base64.pm --- perl-5.32.1/cpan/MIME-Base64/Base64.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/MIME-Base64/Base64.pm 1970-01-01 00:00:00.000000000 +0000 @@ -1,188 +0,0 @@ -package MIME::Base64; - -use strict; -use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); - -require Exporter; -@ISA = qw(Exporter); -@EXPORT = qw(encode_base64 decode_base64); -@EXPORT_OK = qw(encode_base64url decode_base64url encoded_base64_length decoded_base64_length); - -$VERSION = '3.15'; - -require XSLoader; -XSLoader::load('MIME::Base64', $VERSION); - -*encode = \&encode_base64; -*decode = \&decode_base64; - -sub encode_base64url { - my $e = encode_base64(shift, ""); - $e =~ s/=+\z//; - $e =~ tr[+/][-_]; - return $e; -} - -sub decode_base64url { - my $s = shift; - $s =~ tr[-_][+/]; - $s .= '=' while length($s) % 4; - return decode_base64($s); -} - -1; - -__END__ - -=head1 NAME - -MIME::Base64 - Encoding and decoding of base64 strings - -=head1 SYNOPSIS - - use MIME::Base64; - - $encoded = encode_base64('Aladdin:open sesame'); - $decoded = decode_base64($encoded); - -=head1 DESCRIPTION - -This module provides functions to encode and decode strings into and from the -base64 encoding specified in RFC 2045 - I. The base64 encoding is designed to represent -arbitrary sequences of octets in a form that need not be humanly -readable. A 65-character subset ([A-Za-z0-9+/=]) of US-ASCII is used, -enabling 6 bits to be represented per printable character. - -The following primary functions are provided: - -=over 4 - -=item encode_base64( $bytes ) - -=item encode_base64( $bytes, $eol ); - -Encode data by calling the encode_base64() function. The first -argument is the byte string to encode. The second argument is the -line-ending sequence to use. It is optional and defaults to "\n". The -returned encoded string is broken into lines of no more than 76 -characters each and it will end with $eol unless it is empty. Pass an -empty string as second argument if you do not want the encoded string -to be broken into lines. - -The function will croak with "Wide character in subroutine entry" if $bytes -contains characters with code above 255. The base64 encoding is only defined -for single-byte characters. Use the Encode module to select the byte encoding -you want. - -=item decode_base64( $str ) - -Decode a base64 string by calling the decode_base64() function. This -function takes a single argument which is the string to decode and -returns the decoded data. - -Any character not part of the 65-character base64 subset is -silently ignored. Characters occurring after a '=' padding character -are never decoded. - -=back - -If you prefer not to import these routines into your namespace, you can -call them as: - - use MIME::Base64 (); - $encoded = MIME::Base64::encode($decoded); - $decoded = MIME::Base64::decode($encoded); - -Additional functions not exported by default: - -=over 4 - -=item encode_base64url( $bytes ) - -=item decode_base64url( $str ) - -Encode and decode according to the base64 scheme for "URL applications" [1]. -This is a variant of the base64 encoding which does not use padding, does not -break the string into multiple lines and use the characters "-" and "_" instead -of "+" and "/" to avoid using reserved URL characters. - -=item encoded_base64_length( $bytes ) - -=item encoded_base64_length( $bytes, $eol ) - -Returns the length that the encoded string would have without actually -encoding it. This will return the same value as C<< length(encode_base64($bytes)) >>, -but should be more efficient. - -=item decoded_base64_length( $str ) - -Returns the length that the decoded string would have without actually -decoding it. This will return the same value as C<< length(decode_base64($str)) >>, -but should be more efficient. - -=back - -=head1 EXAMPLES - -If you want to encode a large file, you should encode it in chunks -that are a multiple of 57 bytes. This ensures that the base64 lines -line up and that you do not end up with padding in the middle. 57 -bytes of data fills one complete base64 line (76 == 57*4/3): - - use MIME::Base64 qw(encode_base64); - - open(FILE, "/var/log/wtmp") or die "$!"; - while (read(FILE, $buf, 60*57)) { - print encode_base64($buf); - } - -or if you know you have enough memory - - use MIME::Base64 qw(encode_base64); - local($/) = undef; # slurp - print encode_base64(); - -The same approach as a command line: - - perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)' and Joerg Reichelt and -code posted to comp.lang.perl <3pd2lp$6gf@wsinti07.win.tue.nl> by Hans -Mulder - -The XS implementation uses code from metamail. Copyright 1991 Bell -Communications Research, Inc. (Bellcore) - -=head1 SEE ALSO - -L - -[1] L - -=cut diff -Nru perl-5.32.1/cpan/MIME-Base64/Base64.xs perl-5.34.0/cpan/MIME-Base64/Base64.xs --- perl-5.32.1/cpan/MIME-Base64/Base64.xs 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/MIME-Base64/Base64.xs 2020-10-24 18:43:25.000000000 +0000 @@ -25,16 +25,10 @@ */ -#ifdef __cplusplus -extern "C" { -#endif #define PERL_NO_GET_CONTEXT /* we want efficiency */ #include "EXTERN.h" #include "perl.h" #include "XSUB.h" -#ifdef __cplusplus -} -#endif #define MAX_LINE 76 /* size of encoded lines */ diff -Nru perl-5.32.1/cpan/MIME-Base64/lib/MIME/Base64.pm perl-5.34.0/cpan/MIME-Base64/lib/MIME/Base64.pm --- perl-5.32.1/cpan/MIME-Base64/lib/MIME/Base64.pm 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/MIME-Base64/lib/MIME/Base64.pm 2020-10-24 18:43:25.000000000 +0000 @@ -0,0 +1,188 @@ +package MIME::Base64; + +use strict; +use warnings; + +require Exporter; +our @ISA = qw(Exporter); +our @EXPORT = qw(encode_base64 decode_base64); +our @EXPORT_OK = qw(encode_base64url decode_base64url encoded_base64_length decoded_base64_length); + +our $VERSION = '3.16'; + +require XSLoader; +XSLoader::load('MIME::Base64', $VERSION); + +*encode = \&encode_base64; +*decode = \&decode_base64; + +sub encode_base64url { + my $e = encode_base64(shift, ""); + $e =~ s/=+\z//; + $e =~ tr[+/][-_]; + return $e; +} + +sub decode_base64url { + my $s = shift; + $s =~ tr[-_][+/]; + $s .= '=' while length($s) % 4; + return decode_base64($s); +} + +1; + +__END__ + +=head1 NAME + +MIME::Base64 - Encoding and decoding of base64 strings + +=head1 SYNOPSIS + + use MIME::Base64; + + $encoded = encode_base64('Aladdin:open sesame'); + $decoded = decode_base64($encoded); + +=head1 DESCRIPTION + +This module provides functions to encode and decode strings into and from the +base64 encoding specified in RFC 2045 - I. The base64 encoding is designed to represent +arbitrary sequences of octets in a form that need not be humanly +readable. A 65-character subset ([A-Za-z0-9+/=]) of US-ASCII is used, +enabling 6 bits to be represented per printable character. + +The following primary functions are provided: + +=over 4 + +=item encode_base64( $bytes ) + +=item encode_base64( $bytes, $eol ); + +Encode data by calling the encode_base64() function. The first +argument is the byte string to encode. The second argument is the +line-ending sequence to use. It is optional and defaults to "\n". The +returned encoded string is broken into lines of no more than 76 +characters each and it will end with $eol unless it is empty. Pass an +empty string as second argument if you do not want the encoded string +to be broken into lines. + +The function will croak with "Wide character in subroutine entry" if $bytes +contains characters with code above 255. The base64 encoding is only defined +for single-byte characters. Use the Encode module to select the byte encoding +you want. + +=item decode_base64( $str ) + +Decode a base64 string by calling the decode_base64() function. This +function takes a single argument which is the string to decode and +returns the decoded data. + +Any character not part of the 65-character base64 subset is +silently ignored. Characters occurring after a '=' padding character +are never decoded. + +=back + +If you prefer not to import these routines into your namespace, you can +call them as: + + use MIME::Base64 (); + $encoded = MIME::Base64::encode($decoded); + $decoded = MIME::Base64::decode($encoded); + +Additional functions not exported by default: + +=over 4 + +=item encode_base64url( $bytes ) + +=item decode_base64url( $str ) + +Encode and decode according to the base64 scheme for "URL applications" [1]. +This is a variant of the base64 encoding which does not use padding, does not +break the string into multiple lines and use the characters "-" and "_" instead +of "+" and "/" to avoid using reserved URL characters. + +=item encoded_base64_length( $bytes ) + +=item encoded_base64_length( $bytes, $eol ) + +Returns the length that the encoded string would have without actually +encoding it. This will return the same value as C<< length(encode_base64($bytes)) >>, +but should be more efficient. + +=item decoded_base64_length( $str ) + +Returns the length that the decoded string would have without actually +decoding it. This will return the same value as C<< length(decode_base64($str)) >>, +but should be more efficient. + +=back + +=head1 EXAMPLES + +If you want to encode a large file, you should encode it in chunks +that are a multiple of 57 bytes. This ensures that the base64 lines +line up and that you do not end up with padding in the middle. 57 +bytes of data fills one complete base64 line (76 == 57*4/3): + + use MIME::Base64 qw(encode_base64); + + open(FILE, "/var/log/wtmp") or die "$!"; + while (read(FILE, $buf, 60*57)) { + print encode_base64($buf); + } + +or if you know you have enough memory + + use MIME::Base64 qw(encode_base64); + local($/) = undef; # slurp + print encode_base64(); + +The same approach as a command line: + + perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)' and Joerg Reichelt and +code posted to comp.lang.perl <3pd2lp$6gf@wsinti07.win.tue.nl> by Hans +Mulder + +The XS implementation uses code from metamail. Copyright 1991 Bell +Communications Research, Inc. (Bellcore) + +=head1 SEE ALSO + +L + +[1] L + +=cut diff -Nru perl-5.32.1/cpan/MIME-Base64/lib/MIME/QuotedPrint.pm perl-5.34.0/cpan/MIME-Base64/lib/MIME/QuotedPrint.pm --- perl-5.32.1/cpan/MIME-Base64/lib/MIME/QuotedPrint.pm 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/MIME-Base64/lib/MIME/QuotedPrint.pm 2020-10-24 18:43:25.000000000 +0000 @@ -0,0 +1,114 @@ +package MIME::QuotedPrint; + +use strict; +use warnings; + +require Exporter; +our @ISA = qw(Exporter); +our @EXPORT = qw(encode_qp decode_qp); + +our $VERSION = '3.16'; + +use MIME::Base64; # will load XS version of {en,de}code_qp() + +*encode = \&encode_qp; +*decode = \&decode_qp; + +1; + +__END__ + +=head1 NAME + +MIME::QuotedPrint - Encoding and decoding of quoted-printable strings + +=head1 SYNOPSIS + + use MIME::QuotedPrint; + + $encoded = encode_qp($decoded); + $decoded = decode_qp($encoded); + +=head1 DESCRIPTION + +This module provides functions to encode and decode strings into and from the +quoted-printable encoding specified in RFC 2045 - I. The quoted-printable encoding is intended +to represent data that largely consists of bytes that correspond to +printable characters in the ASCII character set. Each non-printable +character (as defined by English Americans) is represented by a +triplet consisting of the character "=" followed by two hexadecimal +digits. + +The following functions are provided: + +=over 4 + +=item encode_qp( $str) + +=item encode_qp( $str, $eol) + +=item encode_qp( $str, $eol, $binmode ) + +This function returns an encoded version of the string ($str) given as +argument. + +The second argument ($eol) is the line-ending sequence to use. It is +optional and defaults to "\n". Every occurrence of "\n" is replaced +with this string, and it is also used for additional "soft line +breaks" to ensure that no line end up longer than 76 characters. Pass +it as "\015\012" to produce data suitable for external consumption. +The string "\r\n" produces the same result on many platforms, but not +all. + +The third argument ($binmode) will select binary mode if passed as a +TRUE value. In binary mode "\n" will be encoded in the same way as +any other non-printable character. This ensures that a decoder will +end up with exactly the same string whatever line ending sequence it +uses. In general it is preferable to use the base64 encoding for +binary data; see L. + +An $eol of "" (the empty string) is special. In this case, no "soft +line breaks" are introduced and binary mode is effectively enabled so +that any "\n" in the original data is encoded as well. + +=item decode_qp( $str ) + +This function returns the plain text version of the string given +as argument. The lines of the result are "\n" terminated, even if +the $str argument contains "\r\n" terminated lines. + +=back + + +If you prefer not to import these routines into your namespace, you can +call them as: + + use MIME::QuotedPrint (); + $encoded = MIME::QuotedPrint::encode($decoded); + $decoded = MIME::QuotedPrint::decode($encoded); + +Perl v5.8 and better allow extended Unicode characters in strings. +Such strings cannot be encoded directly, as the quoted-printable +encoding is only defined for single-byte characters. The solution is +to use the Encode module to select the byte encoding you want. For +example: + + use MIME::QuotedPrint qw(encode_qp); + use Encode qw(encode); + + $encoded = encode_qp(encode("UTF-8", "\x{FFFF}\n")); + print $encoded; + +=head1 COPYRIGHT + +Copyright 1995-1997,2002-2004 Gisle Aas. + +This library is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +=head1 SEE ALSO + +L + +=cut diff -Nru perl-5.32.1/cpan/MIME-Base64/QuotedPrint.pm perl-5.34.0/cpan/MIME-Base64/QuotedPrint.pm --- perl-5.32.1/cpan/MIME-Base64/QuotedPrint.pm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/MIME-Base64/QuotedPrint.pm 1970-01-01 00:00:00.000000000 +0000 @@ -1,114 +0,0 @@ -package MIME::QuotedPrint; - -use strict; -use vars qw(@ISA @EXPORT $VERSION); - -require Exporter; -@ISA = qw(Exporter); -@EXPORT = qw(encode_qp decode_qp); - -$VERSION = "3.13"; - -use MIME::Base64; # will load XS version of {en,de}code_qp() - -*encode = \&encode_qp; -*decode = \&decode_qp; - -1; - -__END__ - -=head1 NAME - -MIME::QuotedPrint - Encoding and decoding of quoted-printable strings - -=head1 SYNOPSIS - - use MIME::QuotedPrint; - - $encoded = encode_qp($decoded); - $decoded = decode_qp($encoded); - -=head1 DESCRIPTION - -This module provides functions to encode and decode strings into and from the -quoted-printable encoding specified in RFC 2045 - I. The quoted-printable encoding is intended -to represent data that largely consists of bytes that correspond to -printable characters in the ASCII character set. Each non-printable -character (as defined by English Americans) is represented by a -triplet consisting of the character "=" followed by two hexadecimal -digits. - -The following functions are provided: - -=over 4 - -=item encode_qp( $str) - -=item encode_qp( $str, $eol) - -=item encode_qp( $str, $eol, $binmode ) - -This function returns an encoded version of the string ($str) given as -argument. - -The second argument ($eol) is the line-ending sequence to use. It is -optional and defaults to "\n". Every occurrence of "\n" is replaced -with this string, and it is also used for additional "soft line -breaks" to ensure that no line end up longer than 76 characters. Pass -it as "\015\012" to produce data suitable for external consumption. -The string "\r\n" produces the same result on many platforms, but not -all. - -The third argument ($binmode) will select binary mode if passed as a -TRUE value. In binary mode "\n" will be encoded in the same way as -any other non-printable character. This ensures that a decoder will -end up with exactly the same string whatever line ending sequence it -uses. In general it is preferable to use the base64 encoding for -binary data; see L. - -An $eol of "" (the empty string) is special. In this case, no "soft -line breaks" are introduced and binary mode is effectively enabled so -that any "\n" in the original data is encoded as well. - -=item decode_qp( $str ) - -This function returns the plain text version of the string given -as argument. The lines of the result are "\n" terminated, even if -the $str argument contains "\r\n" terminated lines. - -=back - - -If you prefer not to import these routines into your namespace, you can -call them as: - - use MIME::QuotedPrint (); - $encoded = MIME::QuotedPrint::encode($decoded); - $decoded = MIME::QuotedPrint::decode($encoded); - -Perl v5.8 and better allow extended Unicode characters in strings. -Such strings cannot be encoded directly, as the quoted-printable -encoding is only defined for single-byte characters. The solution is -to use the Encode module to select the byte encoding you want. For -example: - - use MIME::QuotedPrint qw(encode_qp); - use Encode qw(encode); - - $encoded = encode_qp(encode("UTF-8", "\x{FFFF}\n")); - print $encoded; - -=head1 COPYRIGHT - -Copyright 1995-1997,2002-2004 Gisle Aas. - -This library is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -=head1 SEE ALSO - -L - -=cut diff -Nru perl-5.32.1/cpan/MIME-Base64/t/base64.t perl-5.34.0/cpan/MIME-Base64/t/base64.t --- perl-5.32.1/cpan/MIME-Base64/t/base64.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/MIME-Base64/t/base64.t 2020-10-24 18:43:25.000000000 +0000 @@ -1,3 +1,6 @@ +use strict; +use warnings; + BEGIN { if ($ENV{'PERL_CORE'}){ chdir 't' if -d 't'; @@ -5,7 +8,6 @@ } } -use strict; use MIME::Base64; print "1..283\n"; diff -Nru perl-5.32.1/cpan/MIME-Base64/t/base64url.t perl-5.34.0/cpan/MIME-Base64/t/base64url.t --- perl-5.32.1/cpan/MIME-Base64/t/base64url.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/MIME-Base64/t/base64url.t 2020-10-24 18:43:25.000000000 +0000 @@ -0,0 +1,34 @@ +#!perl -w + +use strict; +use warnings; +use Test qw(plan ok); + +use MIME::Base64 qw(encode_base64url decode_base64url); + +my @tests; +while () { + next if /^#/; + chomp; + push(@tests, [split]); +} + +plan tests => 2 * @tests; + +for (@tests) { + my($name, $input, $output) = @$_; + print "# $name\n"; + ok(decode_base64url($input), $output); + ok(encode_base64url($output), $input); +} + +__END__ +# https://github.com/ptarjan/base64url/blob/master/tests.txt +# Name Input Ouput +len1 YQ a +len2 YWE aa +len3 YWFh aaa +no_padding YWJj abc +padding YQ a +hyphen fn5- ~~~ +underscore Pz8_ ??? diff -Nru perl-5.32.1/cpan/MIME-Base64/t/length.t perl-5.34.0/cpan/MIME-Base64/t/length.t --- perl-5.32.1/cpan/MIME-Base64/t/length.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/MIME-Base64/t/length.t 2020-10-24 18:43:25.000000000 +0000 @@ -1,6 +1,7 @@ #!perl -w use strict; +use warnings; use Test qw(plan ok); plan tests => 129; diff -Nru perl-5.32.1/cpan/MIME-Base64/t/quoted-print.t perl-5.34.0/cpan/MIME-Base64/t/quoted-print.t --- perl-5.32.1/cpan/MIME-Base64/t/quoted-print.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/MIME-Base64/t/quoted-print.t 2020-10-24 18:43:25.000000000 +0000 @@ -1,3 +1,6 @@ +use strict; +use warnings; + BEGIN { if ($ENV{PERL_CORE}) { chdir 't' if -d 't'; @@ -7,10 +10,12 @@ use MIME::QuotedPrint; -$x70 = "x" x 70; +my $x70 = "x" x 70; + +my $IsASCII = ord('A') == 65; +my $IsEBCDIC = ord('A') == 193; -$IsASCII = ord('A') == 65; -$IsEBCDIC = ord('A') == 193; +my @tests; if ($IsASCII) { @@ -191,18 +196,18 @@ die sprintf "Unknown character set: ord('A') == %d\n", ord('A'); } -$notests = @tests + 16; +my $notests = @tests + 16; print "1..$notests\n"; -$testno = 0; +my $testno = 0; for (@tests) { $testno++; - ($plain, $encoded) = @$_; + my ($plain, $encoded) = @$_; if (ord('A') == 193) { # EBCDIC 8 bit chars are different if ($testno == 2) { $plain =~ s/\xe5/\x47/; $plain =~ s/\xe6/\x9c/g; $plain =~ s/\xf8/\x70/; } if ($testno == 7) { $plain =~ s/\xff/\xdf/; } } - $x = encode_qp($plain); + my $x = encode_qp($plain); if ($x ne $encoded) { print "Encode test failed\n"; print "Got: '$x'\n"; diff -Nru perl-5.32.1/cpan/MIME-Base64/t/unicode.t perl-5.34.0/cpan/MIME-Base64/t/unicode.t --- perl-5.32.1/cpan/MIME-Base64/t/unicode.t 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/cpan/MIME-Base64/t/unicode.t 2020-10-24 18:43:25.000000000 +0000 @@ -1,3 +1,6 @@ +use strict; +use warnings; + BEGIN { unless ($] >= 5.006) { print "1..0\n"; diff -Nru perl-5.32.1/cpan/Module-Load/lib/Module/Load.pm perl-5.34.0/cpan/Module-Load/lib/Module/Load.pm --- perl-5.32.1/cpan/Module-Load/lib/Module/Load.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Module-Load/lib/Module/Load.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,11 +1,12 @@ package Module::Load; -$VERSION = '0.34'; - use strict; use warnings; use File::Spec (); +our $VERSION = '0.36'; + + sub import { my $who = _who(); my $h; shift; @@ -358,7 +359,7 @@ =head1 BUG REPORTS -Please report bugs or other issues to Ebug-module-load@rt.cpan.org. +Please report bugs or other issues to Ebug-module-load@rt.cpan.orgE. =head1 AUTHOR diff -Nru perl-5.32.1/cpan/Module-Load/t/01_Module-Load.t perl-5.34.0/cpan/Module-Load/t/01_Module-Load.t --- perl-5.32.1/cpan/Module-Load/t/01_Module-Load.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Module-Load/t/01_Module-Load.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,4 +1,7 @@ ### Module::Load test suite ### +use strict; +use warnings; + BEGIN { if( $ENV{PERL_CORE} ) { chdir '../lib/Module/Load' if -d '../lib/Module/Load'; @@ -8,7 +11,6 @@ BEGIN { chdir 't' if -d 't' } -use strict; use lib qw[../lib to_load]; use Module::Load; use Test::More 'no_plan'; diff -Nru perl-5.32.1/cpan/Module-Load/t/02_Module-Load.t perl-5.34.0/cpan/Module-Load/t/02_Module-Load.t --- perl-5.32.1/cpan/Module-Load/t/02_Module-Load.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Module-Load/t/02_Module-Load.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,8 +1,9 @@ #!perl -use Test::More; use strict; use warnings; + +use Test::More; use Config; # diff -Nru perl-5.32.1/cpan/Module-Load/t/to_load/LoadIt.pm perl-5.34.0/cpan/Module-Load/t/to_load/LoadIt.pm --- perl-5.32.1/cpan/Module-Load/t/to_load/LoadIt.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Module-Load/t/to_load/LoadIt.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,3 +1,3 @@ -$VERSION = 1; +our $VERSION = 1; -1; \ No newline at end of file +1; diff -Nru perl-5.32.1/cpan/Module-Load/t/to_load/Must/Be/Loaded.pm perl-5.34.0/cpan/Module-Load/t/to_load/Must/Be/Loaded.pm --- perl-5.32.1/cpan/Module-Load/t/to_load/Must/Be/Loaded.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Module-Load/t/to_load/Must/Be/Loaded.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,3 +1,3 @@ -$VERSION = 0.01; +our $VERSION = 0.01; -1; \ No newline at end of file +1; diff -Nru perl-5.32.1/cpan/Module-Load/t/to_load/TestModule.pm perl-5.34.0/cpan/Module-Load/t/to_load/TestModule.pm --- perl-5.32.1/cpan/Module-Load/t/to_load/TestModule.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Module-Load/t/to_load/TestModule.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,6 +1,8 @@ package TestModule; use strict; +use warnings; + require Exporter; use vars qw(@EXPORT @EXPORT_OK @ISA $IMPORTED); diff -Nru perl-5.32.1/cpan/Module-Load-Conditional/lib/Module/Load/Conditional.pm perl-5.34.0/cpan/Module-Load-Conditional/lib/Module/Load/Conditional.pm --- perl-5.32.1/cpan/Module-Load-Conditional/lib/Module/Load/Conditional.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Module-Load-Conditional/lib/Module/Load/Conditional.pm 2020-10-04 22:17:12.000000000 +0000 @@ -22,7 +22,7 @@ $FIND_VERSION $ERROR $CHECK_INC_HASH $FORCE_SAFE_INC ]; use Exporter; @ISA = qw[Exporter]; - $VERSION = '0.70'; + $VERSION = '0.74'; $VERBOSE = 0; $DEPRECATED = 0; $FIND_VERSION = 1; @@ -238,7 +238,7 @@ $filename = File::Spec->catfile($dir, $file); next unless -e $filename; - $fh = new FileHandle; + $fh = FileHandle->new(); if (!$fh->open($filename)) { warn loc(q[Cannot open file '%1': %2], $file, $!) if $args->{verbose}; @@ -320,6 +320,7 @@ require Module::CoreList; require Config; + no warnings 'once'; $href->{uptodate} = 0 if exists $Module::CoreList::version{ 0+$] }{ $args->{module} } and Module::CoreList::is_deprecated( $args->{module} ) and diff -Nru perl-5.32.1/cpan/Module-Load-Conditional/t/test_lib/a/X.pm perl-5.34.0/cpan/Module-Load-Conditional/t/test_lib/a/X.pm --- perl-5.32.1/cpan/Module-Load-Conditional/t/test_lib/a/X.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Module-Load-Conditional/t/test_lib/a/X.pm 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,5 @@ package X; +use strict; our $VERSION = '0.01'; diff -Nru perl-5.32.1/cpan/Module-Load-Conditional/t/test_lib/b/X.pm perl-5.34.0/cpan/Module-Load-Conditional/t/test_lib/b/X.pm --- perl-5.32.1/cpan/Module-Load-Conditional/t/test_lib/b/X.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Module-Load-Conditional/t/test_lib/b/X.pm 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,5 @@ package X; +use strict; our $VERSION = '0.02'; diff -Nru perl-5.32.1/cpan/Module-Load-Conditional/t/to_load/Commented.pm perl-5.34.0/cpan/Module-Load-Conditional/t/to_load/Commented.pm --- perl-5.32.1/cpan/Module-Load-Conditional/t/to_load/Commented.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Module-Load-Conditional/t/to_load/Commented.pm 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,7 @@ package Commented; +use strict; +our $VERSION; # $VERSION = 1; $VERSION = 2; diff -Nru perl-5.32.1/cpan/Module-Load-Conditional/t/to_load/HereDoc.pm perl-5.34.0/cpan/Module-Load-Conditional/t/to_load/HereDoc.pm --- perl-5.32.1/cpan/Module-Load-Conditional/t/to_load/HereDoc.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Module-Load-Conditional/t/to_load/HereDoc.pm 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,5 @@ package HereDoc; +use strict; $HereDoc::VERSION = 1; sub magic { diff -Nru perl-5.32.1/cpan/Module-Load-Conditional/t/to_load/InPod.pm perl-5.34.0/cpan/Module-Load-Conditional/t/to_load/InPod.pm --- perl-5.32.1/cpan/Module-Load-Conditional/t/to_load/InPod.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Module-Load-Conditional/t/to_load/InPod.pm 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,4 @@ +use strict; =pod $VERSION = 1; @@ -6,6 +7,6 @@ package InPod; -$VERSION = 2; +our $VERSION = 2; 1; diff -Nru perl-5.32.1/cpan/Module-Load-Conditional/t/to_load/LoadIt.pm perl-5.34.0/cpan/Module-Load-Conditional/t/to_load/LoadIt.pm --- perl-5.32.1/cpan/Module-Load-Conditional/t/to_load/LoadIt.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Module-Load-Conditional/t/to_load/LoadIt.pm 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ package LoadIt; +use strict; -$VERSION = 1; +our $VERSION = 1; 1; diff -Nru perl-5.32.1/cpan/Module-Load-Conditional/t/to_load/LoadMe.pl perl-5.34.0/cpan/Module-Load-Conditional/t/to_load/LoadMe.pl --- perl-5.32.1/cpan/Module-Load-Conditional/t/to_load/LoadMe.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Module-Load-Conditional/t/to_load/LoadMe.pl 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,2 @@ -1; \ No newline at end of file +use strict; +1; diff -Nru perl-5.32.1/cpan/Module-Load-Conditional/t/to_load/MustBe/Loaded.pm perl-5.34.0/cpan/Module-Load-Conditional/t/to_load/MustBe/Loaded.pm --- perl-5.32.1/cpan/Module-Load-Conditional/t/to_load/MustBe/Loaded.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Module-Load-Conditional/t/to_load/MustBe/Loaded.pm 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ package MustBe::Loaded; +use strict; -$VERSION = 0.01; +our $VERSION = 0.01; 1; diff -Nru perl-5.32.1/cpan/Module-Load-Conditional/t/to_load/NotMain.pm perl-5.34.0/cpan/Module-Load-Conditional/t/to_load/NotMain.pm --- perl-5.32.1/cpan/Module-Load-Conditional/t/to_load/NotMain.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Module-Load-Conditional/t/to_load/NotMain.pm 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,4 @@ -$VERSION = 1.23; +use strict; +our $VERSION = 1.23; 1; diff -Nru perl-5.32.1/cpan/Module-Load-Conditional/t/to_load/NotX.pm perl-5.34.0/cpan/Module-Load-Conditional/t/to_load/NotX.pm --- perl-5.32.1/cpan/Module-Load-Conditional/t/to_load/NotX.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Module-Load-Conditional/t/to_load/NotX.pm 2020-10-04 22:17:12.000000000 +0000 @@ -1,15 +1,16 @@ -$VERSION = 1; +use strict; +our $VERSION = 1; package Y; -$VERSION = 2; +our $VERSION = 2; package NotX; -$VERSION = 3; +our $VERSION = 3; package X; -$VERSION = 4; +our $VERSION = 4; 1; diff -Nru perl-5.32.1/cpan/NEXT/lib/NEXT.pm perl-5.34.0/cpan/NEXT/lib/NEXT.pm --- perl-5.32.1/cpan/NEXT/lib/NEXT.pm 2020-12-18 09:58:06.000000000 +0000 +++ perl-5.34.0/cpan/NEXT/lib/NEXT.pm 2021-05-04 06:52:48.000000000 +0000 @@ -5,7 +5,7 @@ use warnings; use overload (); -our $VERSION = '0.67_01'; +our $VERSION = '0.68'; sub NEXT::ELSEWHERE::ancestors { diff -Nru perl-5.32.1/cpan/NEXT/t/actual.t perl-5.34.0/cpan/NEXT/t/actual.t --- perl-5.32.1/cpan/NEXT/t/actual.t 2020-12-18 09:58:06.000000000 +0000 +++ perl-5.34.0/cpan/NEXT/t/actual.t 2021-05-04 06:52:48.000000000 +0000 @@ -1,25 +1,33 @@ +use strict; +use warnings; use Test::More tests => 10; BEGIN { use_ok('NEXT') }; my $order = 0; package A; -@ISA = qw/B C D/; +our @ISA = qw/B C D/; +use if $] >= 5.009005, 'mro', 'dfs'; + sub test { ++$order; ::ok($order==1,"test A"); $_[0]->NEXT::ACTUAL::test;} package B; -@ISA = qw/D C/; +our @ISA = qw/D C/; +use if $] >= 5.009005, 'mro', 'dfs'; sub test { ++$order; ::ok($order==2,"test B"); $_[0]->NEXT::ACTUAL::test;} package C; -@ISA = qw/D/; +our @ISA = qw/D/; +use if $] >= 5.009005, 'mro', 'dfs'; + sub test { ++$order; ::ok($order==4||$order==6,"test C"); $_[0]->NEXT::ACTUAL::test; } package D; +use if $] >= 5.009005, 'mro', 'dfs'; sub test { ++$order; ::ok($order==3||$order==5||$order==7||$order==8,"test D"); @@ -27,6 +35,7 @@ } package main; +use if $] >= 5.009005, 'mro', 'dfs'; my $foo = {}; diff -Nru perl-5.32.1/cpan/NEXT/t/actuns.t perl-5.34.0/cpan/NEXT/t/actuns.t --- perl-5.32.1/cpan/NEXT/t/actuns.t 2020-12-18 09:58:06.000000000 +0000 +++ perl-5.34.0/cpan/NEXT/t/actuns.t 2021-05-04 06:52:48.000000000 +0000 @@ -1,22 +1,31 @@ +use strict; +use warnings; use Test::More tests => 6; BEGIN { use_ok('NEXT') }; my $order = 0; package A; -@ISA = qw/B C D/; + +our @ISA = qw/B C D/; +use if $] >= 5.009005, 'mro', 'dfs'; + sub test { ::ok(++$order==1,"test A"); $_[0]->NEXT::UNSEEN::ACTUAL::test;} package B; -@ISA = qw/D C/; +our @ISA = qw/D C/; +use if $] >= 5.009005, 'mro', 'dfs'; sub test { ::ok(++$order==2,"test B"); $_[0]->NEXT::ACTUAL::UNSEEN::test;} package C; -@ISA = qw/D/; +our @ISA = qw/D/; +use if $] >= 5.009005, 'mro', 'dfs'; + sub test { ::ok(++$order==4,"test C"); $_[0]->NEXT::UNSEEN::ACTUAL::test;} package D; +use if $] >= 5.009005, 'mro', 'dfs'; sub test { ::ok(++$order==3,"test D"); $_[0]->NEXT::ACTUAL::UNSEEN::test;} diff -Nru perl-5.32.1/cpan/NEXT/t/dynamically_scoped_regex_vars.t perl-5.34.0/cpan/NEXT/t/dynamically_scoped_regex_vars.t --- perl-5.32.1/cpan/NEXT/t/dynamically_scoped_regex_vars.t 2020-12-18 09:58:06.000000000 +0000 +++ perl-5.34.0/cpan/NEXT/t/dynamically_scoped_regex_vars.t 2021-05-04 06:52:48.000000000 +0000 @@ -1,3 +1,5 @@ +use strict; +use warnings; use Test::More tests => 7; BEGIN { use_ok('NEXT') }; diff -Nru perl-5.32.1/cpan/NEXT/t/next.t perl-5.34.0/cpan/NEXT/t/next.t --- perl-5.32.1/cpan/NEXT/t/next.t 2020-12-18 09:58:06.000000000 +0000 +++ perl-5.34.0/cpan/NEXT/t/next.t 2021-05-04 06:52:48.000000000 +0000 @@ -1,7 +1,9 @@ -BEGIN { print "1..27\n"; } +use strict; +use warnings; use NEXT; +print "1..27\n"; print "ok 1\n"; package A; @@ -11,6 +13,7 @@ package B; use base qw( A ); +our $AUTOLOAD; sub B::AUTOLOAD { return ( 9, $_[0]->NEXT::AUTOLOAD() ) if $AUTOLOAD =~ /.*(missing_method|secondary)/ } sub B::DESTROY { $_[0]->NEXT::DESTROY() } @@ -19,7 +22,7 @@ sub C::DESTROY { print "ok 25\n"; $_[0]->NEXT::DESTROY() } package D; -@D::ISA = qw( B C E ); +our @ISA = qw( B C E ); sub D::method { return ( 2, $_[0]->NEXT::method() ) } sub D::AUTOLOAD { return ( 8, $_[0]->NEXT::AUTOLOAD() ) } sub D::DESTROY { print "ok 24\n"; $_[0]->NEXT::DESTROY() } @@ -27,9 +30,9 @@ sub D::secondary { return ( 17, 18, map { $_+10 } $_[0]->NEXT::secondary() ) } package E; -@E::ISA = qw( F G ); +our @ISA = qw( F G ); sub E::method { return ( 4, $_[0]->NEXT::method(), $_[0]->NEXT::method() ) } -sub E::AUTOLOAD { return ( 10, $_[0]->NEXT::AUTOLOAD() ) +sub E::AUTOLOAD { return ( 10, $_[0]->NEXT::AUTOLOAD() ) if $AUTOLOAD =~ /.*(missing_method|secondary)/ } sub E::DESTROY { print "ok 26\n"; $_[0]->NEXT::DESTROY() } @@ -76,7 +79,7 @@ print "ok 13\n"; # NAMED METHOD CAN'T REDISPATCH TO AUTOLOAD'ED METHOD (ok 14) -eval { +eval { *C::method = sub{ $_[0]->NEXT::AUTOLOAD() }; *C::method = *C::method; eval { $obj->method(); } && print "not "; @@ -85,11 +88,11 @@ # BASE CLASS METHODS ONLY REDISPATCHED WITHIN HIERARCHY (ok 15..16) my $ob2 = bless {}, "B"; -@val = $ob2->method(); +my @val = $ob2->method(); print "not " unless @val==1 && $val[0]==3; print "ok 15\n"; -@val = $ob2->missing_method(); +@val = $ob2->missing_method(); print "not " unless @val==1 && $val[0]==9; print "ok 16\n"; @@ -107,7 +110,7 @@ # TEST WITH CONSTANTS (23) package Hay; -@ISA = 'Bee'; +our @ISA = 'Bee'; sub foo { return shift->NEXT::foo } package Bee; use constant foo => 3; @@ -115,4 +118,5 @@ print "not " unless Hay->foo eq '3'; print "ok 23\n"; -# CAN REDISPATCH DESTRUCTORS (ok 24..27) + +# CAN REDISPATCH DESTRUCTORS (ok 23..26) diff -Nru perl-5.32.1/cpan/NEXT/t/unseen.t perl-5.34.0/cpan/NEXT/t/unseen.t --- perl-5.32.1/cpan/NEXT/t/unseen.t 2020-12-18 09:58:06.000000000 +0000 +++ perl-5.34.0/cpan/NEXT/t/unseen.t 2021-05-04 06:52:48.000000000 +0000 @@ -1,26 +1,35 @@ +use strict; +use warnings; use Test::More tests => 7; BEGIN { use_ok('NEXT') }; my $order = 0; package A; -@ISA = qw/B C D/; +our @ISA = qw/B C D/; +use if $] >= 5.009005, 'mro', 'dfs'; sub test { ::ok(++$order==1,"test A"); $_[0]->NEXT::UNSEEN::test; 1} package B; -@ISA = qw/D C/; + +our @ISA = qw/D C/; +use if $] >= 5.009005, 'mro', 'dfs'; sub test { ::ok(++$order==2,"test B"); $_[0]->NEXT::UNSEEN::test; 1} package C; -@ISA = qw/D/; +our @ISA = qw/D/; +use if $] >= 5.009005, 'mro', 'dfs'; + sub test { ::ok(++$order==4,"test C"); $_[0]->NEXT::UNSEEN::test; 1} package D; +use if $] >= 5.009005, 'mro', 'dfs'; sub test { ::ok(++$order==3,"test D"); $_[0]->NEXT::UNSEEN::test; 1} package main; +use if $] >= 5.009005, 'mro', 'dfs'; my $foo = {}; @@ -31,6 +40,7 @@ : fail("Shouldn't die on missing ancestor"); package Diamond::Base; +use if $] >= 5.009005, 'mro', 'dfs'; my $seen; sub test { $seen++ ? ::fail("Can't visit inherited test twice") @@ -38,9 +48,13 @@ shift->NEXT::UNSEEN::test; } -package Diamond::Left; @ISA = qw[Diamond::Base]; -package Diamond::Right; @ISA = qw[Diamond::Base]; -package Diamond::Top; @ISA = qw[Diamond::Left Diamond::Right]; +package Diamond::Left; our @ISA = qw[Diamond::Base]; +use if $] >= 5.009005, 'mro', 'dfs'; +package Diamond::Right; our @ISA = qw[Diamond::Base]; +use if $] >= 5.009005, 'mro', 'dfs'; +package Diamond::Top; our @ISA = qw[Diamond::Left Diamond::Right]; +use if $] >= 5.009005, 'mro', 'dfs'; + package main; diff -Nru perl-5.32.1/cpan/perlfaq/lib/perlfaq1.pod perl-5.34.0/cpan/perlfaq/lib/perlfaq1.pod --- perl-5.32.1/cpan/perlfaq/lib/perlfaq1.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/perlfaq/lib/perlfaq1.pod 2021-05-04 06:52:48.000000000 +0000 @@ -4,7 +4,7 @@ =head1 VERSION -version 5.20200523 +version 5.20210411 =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/perlfaq/lib/perlfaq2.pod perl-5.34.0/cpan/perlfaq/lib/perlfaq2.pod --- perl-5.32.1/cpan/perlfaq/lib/perlfaq2.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/perlfaq/lib/perlfaq2.pod 2021-05-04 06:52:48.000000000 +0000 @@ -4,7 +4,7 @@ =head1 VERSION -version 5.20200523 +version 5.20210411 =head1 DESCRIPTION @@ -230,7 +230,7 @@ bug-Business-ISBN@rt.cpan.org . Some modules might have special reporting requirements, such as a -Github or Google Code tracking system, so you should check the +GitHub or Google Code tracking system, so you should check the module documentation too. =head1 AUTHOR AND COPYRIGHT diff -Nru perl-5.32.1/cpan/perlfaq/lib/perlfaq3.pod perl-5.34.0/cpan/perlfaq/lib/perlfaq3.pod --- perl-5.32.1/cpan/perlfaq/lib/perlfaq3.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/perlfaq/lib/perlfaq3.pod 2021-05-04 06:52:48.000000000 +0000 @@ -4,7 +4,7 @@ =head1 VERSION -version 5.20200523 +version 5.20210411 =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/perlfaq/lib/perlfaq4.pod perl-5.34.0/cpan/perlfaq/lib/perlfaq4.pod --- perl-5.32.1/cpan/perlfaq/lib/perlfaq4.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/perlfaq/lib/perlfaq4.pod 2021-05-04 06:52:48.000000000 +0000 @@ -4,7 +4,7 @@ =head1 VERSION -version 5.20200523 +version 5.20210411 =head1 DESCRIPTION @@ -1120,6 +1120,53 @@ print $string; + +=head2 Does Perl have anything like Ruby's #{} or Python's f string? + +Unlike the others, Perl allows you to embed a variable naked in a double +quoted string, e.g. C<"variable $variable">. When there isn't whitespace or +other non-word characters following the variable name, you can add braces +(e.g. C<"foo ${foo}bar">) to ensure correct parsing. + +An array can also be embedded directly in a string, and will be expanded +by default with spaces between the elements. The default +L can be changed by assigning a +different string to the special variable C<$">, such as C. + +Perl also supports references within a string providing the equivalent of +the features in the other two languages. + +C<${\ ... }> embedded within a string will work for most simple statements +such as an object->method call. More complex code can be wrapped in a do +block C<${\ do{...} }>. + +When you want a list to be expanded per C<$">, use C<@{[ ... ]}>. + + use Time::Piece; + use Time::Seconds; + my $scalar = 'STRING'; + my @array = ( 'zorro', 'a', 1, 'B', 3 ); + + # Print the current date and time and then Tommorrow + my $t = Time::Piece->new; + say "Now is: ${\ $t->cdate() }"; + say "Tomorrow: ${\ do{ my $T=Time::Piece->new + ONE_DAY ; $T->fullday }}"; + + # some variables in strings + say "This is some scalar I have $scalar, this is an array @array."; + say "You can also write it like this ${scalar} @{array}."; + + # Change the $LIST_SEPARATOR + local $" = ':'; + say "Set \$\" to delimit with ':' and sort the Array @{[ sort @array ]}"; + +You may also want to look at the module +L, and templating tools such as L and +L. + +See also: L and +L in this FAQ. + =head2 What's wrong with always quoting "$vars"? The problem is that those double-quotes force diff -Nru perl-5.32.1/cpan/perlfaq/lib/perlfaq5.pod perl-5.34.0/cpan/perlfaq/lib/perlfaq5.pod --- perl-5.32.1/cpan/perlfaq/lib/perlfaq5.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/perlfaq/lib/perlfaq5.pod 2021-05-04 06:52:48.000000000 +0000 @@ -4,7 +4,7 @@ =head1 VERSION -version 5.20200523 +version 5.20210411 =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/perlfaq/lib/perlfaq6.pod perl-5.34.0/cpan/perlfaq/lib/perlfaq6.pod --- perl-5.32.1/cpan/perlfaq/lib/perlfaq6.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/perlfaq/lib/perlfaq6.pod 2021-05-04 06:52:48.000000000 +0000 @@ -4,7 +4,7 @@ =head1 VERSION -version 5.20200523 +version 5.20210411 =head1 DESCRIPTION @@ -692,47 +692,34 @@ (contributed by brian d foy) -If you have Perl 5.10 or later, this is almost trivial. You just smart -match against an array of regular expression objects: - - my @patterns = ( qr/Fr.d/, qr/B.rn.y/, qr/W.lm./ ); - - if( $string ~~ @patterns ) { - ... - }; - -The smart match stops when it finds a match, so it doesn't have to try -every expression. - -Earlier than Perl 5.10, you have a bit of work to do. You want to +You want to avoid compiling a regular expression every time you want to match it. In this example, perl must recompile the regular expression for every -iteration of the C loop since it has no way to know what -C<$pattern> will be: +iteration of the C loop since C<$pattern> can change: - my @patterns = qw( foo bar baz ); + my @patterns = qw( fo+ ba[rz] ); - LINE: while( ) { - foreach $pattern ( @patterns ) { - if( /\b$pattern\b/i ) { - print; + LINE: while( my $line = <> ) { + foreach my $pattern ( @patterns ) { + if( $line =~ m/\b$pattern\b/i ) { + print $line; next LINE; } } } -The C operator showed up in perl 5.005. It compiles a regular +The C operator compiles a regular expression, but doesn't apply it. When you use the pre-compiled version of the regex, perl does less work. In this example, I inserted a C to turn each pattern into its pre-compiled form. The rest of the script is the same, but faster: - my @patterns = map { qr/\b$_\b/i } qw( foo bar baz ); + my @patterns = map { qr/\b$_\b/i } qw( fo+ ba[rz] ); - LINE: while( <> ) { - foreach $pattern ( @patterns ) { - if( /$pattern/ ) { - print; + LINE: while( my $line = <> ) { + foreach my $pattern ( @patterns ) { + if( $line =~ m/$pattern/ ) { + print $line; next LINE; } } @@ -740,14 +727,18 @@ In some cases, you may be able to make several patterns into a single regular expression. Beware of situations that require backtracking -though. +though. In this example, the regex is only compiled once because +C<$regex> doesn't change between iterations: - my $regex = join '|', qw( foo bar baz ); + my $regex = join '|', qw( fo+ ba[rz] ); - LINE: while( <> ) { - print if /\b(?:$regex)\b/i; + while( my $line = <> ) { + print if $line =~ m/\b(?:$regex)\b/i; } +The function L on CPAN can also be used to form +a single regex that matches a list of literal strings (not regexes). + For more details on regular expression efficiency, see I by Jeffrey Friedl. He explains how the regular expressions engine works and why some patterns are surprisingly diff -Nru perl-5.32.1/cpan/perlfaq/lib/perlfaq7.pod perl-5.34.0/cpan/perlfaq/lib/perlfaq7.pod --- perl-5.32.1/cpan/perlfaq/lib/perlfaq7.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/perlfaq/lib/perlfaq7.pod 2021-05-04 06:52:48.000000000 +0000 @@ -4,7 +4,7 @@ =head1 VERSION -version 5.20200523 +version 5.20210411 =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/perlfaq/lib/perlfaq8.pod perl-5.34.0/cpan/perlfaq/lib/perlfaq8.pod --- perl-5.32.1/cpan/perlfaq/lib/perlfaq8.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/perlfaq/lib/perlfaq8.pod 2021-05-04 06:52:48.000000000 +0000 @@ -4,7 +4,7 @@ =head1 VERSION -version 5.20200523 +version 5.20210411 =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/perlfaq/lib/perlfaq9.pod perl-5.34.0/cpan/perlfaq/lib/perlfaq9.pod --- perl-5.32.1/cpan/perlfaq/lib/perlfaq9.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/perlfaq/lib/perlfaq9.pod 2021-05-04 06:52:48.000000000 +0000 @@ -4,7 +4,7 @@ =head1 VERSION -version 5.20200523 +version 5.20210411 =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/perlfaq/lib/perlfaq.pm perl-5.34.0/cpan/perlfaq/lib/perlfaq.pm --- perl-5.32.1/cpan/perlfaq/lib/perlfaq.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/perlfaq/lib/perlfaq.pm 2021-05-04 06:52:48.000000000 +0000 @@ -2,6 +2,6 @@ use warnings; package perlfaq; -our $VERSION = '5.20200523'; +our $VERSION = '5.20210411'; 1; diff -Nru perl-5.32.1/cpan/perlfaq/lib/perlfaq.pod perl-5.34.0/cpan/perlfaq/lib/perlfaq.pod --- perl-5.32.1/cpan/perlfaq/lib/perlfaq.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/perlfaq/lib/perlfaq.pod 2021-05-04 06:52:48.000000000 +0000 @@ -4,7 +4,7 @@ =head1 VERSION -version 5.20200523 +version 5.20210411 =head1 DESCRIPTION @@ -15,7 +15,7 @@ =head2 Where to find the perlfaq The perlfaq is an evolving document. Read the latest version at -L. It is also included in the standard Perl +L. It is also included in the standard Perl distribution. =head2 How to use the perlfaq @@ -35,9 +35,8 @@ your suggestion create an issue or pull request against L. -Once approved, changes are merged into L, the -repository which drives L, and they are -distributed with the next Perl 5 release. +Once approved, changes will be distributed with the next Perl release and +subsequently appear at L. =head2 What if my question isn't answered in the FAQ? @@ -476,6 +475,10 @@ =item * +Does Perl have anything like Ruby's #{} or Python's f string? + +=item * + What's wrong with always quoting "$vars"? =item * diff -Nru perl-5.32.1/cpan/perlfaq/lib/perlglossary.pod perl-5.34.0/cpan/perlfaq/lib/perlglossary.pod --- perl-5.32.1/cpan/perlfaq/lib/perlglossary.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/perlfaq/lib/perlglossary.pod 2021-05-04 06:52:48.000000000 +0000 @@ -7,7 +7,7 @@ =head1 VERSION -version 5.20200523 +version 5.20210411 =head1 DESCRIPTION @@ -2642,7 +2642,7 @@ Formerly, a reference XXto an array whose initial element happens to hold a reference to a hash. You used to be able to treat a pseudohash reference as either an array reference or a hash -reference. Pseduohashes are no longer supported. +reference. Pseudohashes are no longer supported. =item pseudoliteral diff -Nru perl-5.32.1/cpan/PerlIO-via-QuotedPrint/lib/PerlIO/via/QuotedPrint.pm perl-5.34.0/cpan/PerlIO-via-QuotedPrint/lib/PerlIO/via/QuotedPrint.pm --- perl-5.32.1/cpan/PerlIO-via-QuotedPrint/lib/PerlIO/via/QuotedPrint.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/PerlIO-via-QuotedPrint/lib/PerlIO/via/QuotedPrint.pm 2021-01-20 23:04:44.000000000 +0000 @@ -1,10 +1,19 @@ +# Copyright (C) 2002-2004, 2012 Elizabeth Mattijsen. All rights reserved. +# Copyright (C) 2015 Steve Hay. All rights reserved. + +# This module is free software; you can redistribute it and/or modify it under +# the same terms as Perl itself, i.e. under the terms of either the GNU General +# Public License or the Artistic License, as specified in the F file. + package PerlIO::via::QuotedPrint; -$VERSION= '0.08'; +use 5.008001; # be as strict as possible use strict; +our $VERSION = '0.09'; + # modules that we need use MIME::QuotedPrint (); # no need to pollute this namespace @@ -61,17 +70,13 @@ =head1 SYNOPSIS - use PerlIO::via::QuotedPrint; + use PerlIO::via::QuotedPrint; - open( my $in, '<:via(QuotedPrint)', 'file.qp' ) - or die "Can't open file.qp for reading: $!\n"; - - open( my $out, '>:via(QuotedPrint)', 'file.qp' ) - or die "Can't open file.qp for writing: $!\n"; - -=head1 VERSION + open(my $in, '<:via(QuotedPrint)', 'file.qp') or + die "Can't open file.qp for reading: $!\n"; -This documentation describes version 0.08. + open(my $out, '>:via(QuotedPrint)', 'file.qp') or + die "Can't open file.qp for writing: $!\n"; =head1 DESCRIPTION @@ -79,24 +84,93 @@ quoted-printable format. It will decode from quoted-printable while reading from a handle, and it will encode as quoted-printable while writing to a handle. -=head1 REQUIRED MODULES +=head1 EXPORTS + +I. + +=head1 KNOWN BUGS + +I. + +=head1 FEEDBACK - MIME::QuotedPrint (any) +Patches, bug reports, suggestions or any other feedback is welcome. + +Patches can be sent as GitHub pull requests at +L. + +Bug reports and suggestions can be made on the CPAN Request Tracker at +L. + +Currently active requests on the CPAN Request Tracker can be viewed at +L. + +Please test this distribution. See CPAN Testers Reports at +L for details of how to get involved. + +Previous test results on CPAN Testers Reports can be viewed at +L. + +Please rate this distribution on CPAN Ratings at +L. =head1 SEE ALSO -L, L, L, -L, L, L. +L, +L. =head1 ACKNOWLEDGEMENTS -Based on example that was initially added to MIME::QuotedPrint.pm for the -5.8.0 distribution of Perl. +Based on an example in the standard library module MIME::QuotedPrint in Perl +(version 5.8.0). + +=head1 AVAILABILITY + +The latest version of this module is available from CPAN (see +L for details) at + +L or + +L or + +L. + +The latest source code is available from GitHub at +L. + +=head1 INSTALLATION + +See the F file. + +=head1 AUTHOR + +Elizabeth Mattijsen ELE. + +Steve Hay ELE is now maintaining +PerlIO::via::QuotedPrint as of version 0.08. =head1 COPYRIGHT -Copyright (c) 2002, 2003, 2004, 2012 Elizabeth Mattijsen. All rights reserved. -This library is free software; you can redistribute it and/or modify it under -the same terms as Perl itself. +Copyright (C) 2002-2004, 2012 Elizabeth Mattijsen. All rights reserved. + +Copyright (C) 2015, 2020 Steve Hay. All rights reserved. + +=head1 LICENCE + +This module is free software; you can redistribute it and/or modify it under +the same terms as Perl itself, i.e. under the terms of either the GNU General +Public License or the Artistic License, as specified in the F file. + +=head1 VERSION + +Version 0.09 + +=head1 DATE + +08 Dec 2020 + +=head1 HISTORY + +See the F file. =cut diff -Nru perl-5.32.1/cpan/PerlIO-via-QuotedPrint/t/changes.t perl-5.34.0/cpan/PerlIO-via-QuotedPrint/t/changes.t --- perl-5.32.1/cpan/PerlIO-via-QuotedPrint/t/changes.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/PerlIO-via-QuotedPrint/t/changes.t 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,48 @@ +#!perl +#=============================================================================== +# +# t/changes.t +# +# DESCRIPTION +# Test script to check CPAN::Changes conformance. +# +# COPYRIGHT +# Copyright (C) 2015 Steve Hay. All rights reserved. +# +# LICENCE +# This script is free software; you can redistribute it and/or modify it under +# the same terms as Perl itself, i.e. under the terms of either the GNU +# General Public License or the Artistic License, as specified in the LICENCE +# file. +# +#=============================================================================== + +use 5.008001; + +use strict; +use warnings; + +use Test::More; + +#=============================================================================== +# MAIN PROGRAM +#=============================================================================== + +MAIN: { + plan skip_all => 'Author testing only' unless $ENV{AUTHOR_TESTING}; + + my $ok = eval { + require Test::CPAN::Changes; + Test::CPAN::Changes->import(); + 1; + }; + + if (not $ok) { + plan skip_all => 'Test::CPAN::Changes required to test Changes'; + } + else { + changes_ok(); + } +} + +#=============================================================================== diff -Nru perl-5.32.1/cpan/PerlIO-via-QuotedPrint/t/critic.t perl-5.34.0/cpan/PerlIO-via-QuotedPrint/t/critic.t --- perl-5.32.1/cpan/PerlIO-via-QuotedPrint/t/critic.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/PerlIO-via-QuotedPrint/t/critic.t 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,48 @@ +#!perl +#=============================================================================== +# +# t/critic.t +# +# DESCRIPTION +# Test script to check Perl::Critic conformance. +# +# COPYRIGHT +# Copyright (C) 2015 Steve Hay. All rights reserved. +# +# LICENCE +# This script is free software; you can redistribute it and/or modify it under +# the same terms as Perl itself, i.e. under the terms of either the GNU +# General Public License or the Artistic License, as specified in the LICENCE +# file. +# +#=============================================================================== + +use 5.008001; + +use strict; +use warnings; + +use Test::More; + +#=============================================================================== +# MAIN PROGRAM +#=============================================================================== + +MAIN: { + plan skip_all => 'Author testing only' unless $ENV{AUTHOR_TESTING}; + + my $ok = eval { + require Test::Perl::Critic; + Test::Perl::Critic->import(-profile => ''); + 1; + }; + + if (not $ok) { + plan skip_all => 'Test::Perl::Critic required to test with Perl::Critic'; + } + else { + all_critic_ok('.'); + } +} + +#=============================================================================== diff -Nru perl-5.32.1/cpan/PerlIO-via-QuotedPrint/t/pod_coverage.t perl-5.34.0/cpan/PerlIO-via-QuotedPrint/t/pod_coverage.t --- perl-5.32.1/cpan/PerlIO-via-QuotedPrint/t/pod_coverage.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/PerlIO-via-QuotedPrint/t/pod_coverage.t 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,54 @@ +#!perl +#=============================================================================== +# +# t/pod_coverage.t +# +# DESCRIPTION +# Test script to check POD coverage. +# +# COPYRIGHT +# Copyright (C) 2015 Steve Hay. All rights reserved. +# +# LICENCE +# This script is free software; you can redistribute it and/or modify it under +# the same terms as Perl itself, i.e. under the terms of either the GNU +# General Public License or the Artistic License, as specified in the LICENCE +# file. +# +#=============================================================================== + +use 5.008001; + +use strict; +use warnings; + +use Test::More; + +#=============================================================================== +# MAIN PROGRAM +#=============================================================================== + +MAIN: { + plan skip_all => 'Author testing only' unless $ENV{AUTHOR_TESTING}; + + my $ok = eval { + require Test::Pod::Coverage; + Test::Pod::Coverage->import(); + 1; + }; + + if (not $ok) { + plan skip_all => 'Test::Pod::Coverage required to test POD coverage'; + } + elsif ($Test::Pod::Coverage::VERSION < 0.08) { + plan skip_all => 'Test::Pod::Coverage 0.08 or higher required to test POD coverage'; + } + else { + plan tests => 1; + pod_coverage_ok('PerlIO::via::QuotedPrint', { + also_private => [qw(FILL PUSHED WRITE)] + }); + } +} + +#=============================================================================== diff -Nru perl-5.32.1/cpan/PerlIO-via-QuotedPrint/t/pod.t perl-5.34.0/cpan/PerlIO-via-QuotedPrint/t/pod.t --- perl-5.32.1/cpan/PerlIO-via-QuotedPrint/t/pod.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/PerlIO-via-QuotedPrint/t/pod.t 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,51 @@ +#!perl +#=============================================================================== +# +# t/pod.t +# +# DESCRIPTION +# Test script to check POD. +# +# COPYRIGHT +# Copyright (C) 2015 Steve Hay. All rights reserved. +# +# LICENCE +# This script is free software; you can redistribute it and/or modify it under +# the same terms as Perl itself, i.e. under the terms of either the GNU +# General Public License or the Artistic License, as specified in the LICENCE +# file. +# +#=============================================================================== + +use 5.008001; + +use strict; +use warnings; + +use Test::More; + +#=============================================================================== +# MAIN PROGRAM +#=============================================================================== + +MAIN: { + plan skip_all => 'Author testing only' unless $ENV{AUTHOR_TESTING}; + + my $ok = eval { + require Test::Pod; + Test::Pod->import(); + 1; + }; + + if (not $ok) { + plan skip_all => 'Test::Pod required to test POD'; + } + elsif ($Test::Pod::VERSION < 1.00) { + plan skip_all => 'Test::Pod 1.00 or higher required to test POD'; + } + else { + all_pod_files_ok(); + } +} + +#=============================================================================== diff -Nru perl-5.32.1/cpan/PerlIO-via-QuotedPrint/t/QuotedPrint.t perl-5.34.0/cpan/PerlIO-via-QuotedPrint/t/QuotedPrint.t --- perl-5.32.1/cpan/PerlIO-via-QuotedPrint/t/QuotedPrint.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/PerlIO-via-QuotedPrint/t/QuotedPrint.t 2021-01-20 23:04:44.000000000 +0000 @@ -1,4 +1,9 @@ -BEGIN { # Magic Perl CORE pragma +use 5.008001; + +use strict; +use warnings; + +BEGIN { # Magic Perl CORE pragma unless (find PerlIO::Layer 'perlio') { print "1..0 # Skip: PerlIO not used\n"; exit 0; @@ -8,8 +13,6 @@ } } -use strict; -use warnings; use Test::More tests => 11; BEGIN { use_ok('PerlIO::via::QuotedPrint') } @@ -34,16 +37,16 @@ "opening '$file' for writing" ); -ok( (print $out $decoded), 'print to file' ); -ok( close( $out ), 'closing encoding handle' ); +ok( (print $out $decoded), 'print to file' ); +ok( close( $out ), 'closing encoding handle' ); # Check encoding without layers { local $/ = undef; -ok( open( my $test,$file ), 'opening without layer' ); -is( $encoded,readline( $test ), 'check encoded content' ); -ok( close( $test ), 'close test handle' ); +ok( open( my $test, '<', $file ), 'opening without layer' ); +is( $encoded,readline( $test ), 'check encoded content' ); +ok( close( $test ), 'close test handle' ); } # Check decoding _with_ layers @@ -52,10 +55,10 @@ open( my $in,'<:via(QuotedPrint)', $file ), "opening '$file' for reading" ); -is( $decoded,join( '',<$in> ), 'check decoding' ); -ok( close( $in ), 'close decoding handle' ); +is( $decoded,join( '',<$in> ), 'check decoding' ); +ok( close( $in ), 'close decoding handle' ); # Remove whatever we created now -ok( unlink( $file ), "remove test file '$file'" ); +ok( unlink( $file ), "remove test file '$file'" ); 1 while unlink $file; # multiversioned filesystems diff -Nru perl-5.32.1/cpan/Pod-Checker/lib/Pod/Checker.pm perl-5.34.0/cpan/Pod-Checker/lib/Pod/Checker.pm --- perl-5.32.1/cpan/Pod-Checker/lib/Pod/Checker.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Checker/lib/Pod/Checker.pm 2020-10-24 18:43:34.000000000 +0000 @@ -10,7 +10,7 @@ use strict; use warnings; -our $VERSION = '1.73'; ## Current version of this package +our $VERSION = '1.74'; ## Current version of this package =head1 NAME @@ -197,10 +197,6 @@ There needs to be content inside E, L, and X formatting codes. -=item * A non-empty ZEE - -The CE> sequence is supposed to be empty. - =item * Spurious text after =pod / =cut The commands C<=pod> and C<=cut> do not take any arguments. @@ -299,6 +295,12 @@ For example if there is a C<=head2> in the POD file prior to a C<=head1>. +=item * A non-empty ZEE + +The CE> sequence is supposed to be empty. Caveat: this issue is +detected in L and will be flagged as an I by any client +code; any contents of C...E> will be disregarded, anyway. + =back =head2 Hyperlinks @@ -361,11 +363,122 @@ control completely the output behavior. Users of B (the script) get the well-known behavior. -v1.45 inherits from Pod::Simple as opposed to all previous versions +v1.45 inherits from L as opposed to all previous versions inheriting from Pod::Parser. Do B use Pod::Simple's interface when using Pod::Checker unless it is documented somewhere on this page. I repeat, DO B USE POD::SIMPLE'S INTERFACE. +The following list documents the overrides to Pod::Simple, primarily to +make L happy: + +=over 4 + +=item end_B + +=item end_C + +=item end_Document + +=item end_F + +=item end_I + +=item end_L + +=item end_Para + +=item end_S + +=item end_X + +=item end_fcode + +=item end_for + +=item end_head + +=item end_head1 + +=item end_head2 + +=item end_head3 + +=item end_head4 + +=item end_item + +=item end_item_bullet + +=item end_item_number + +=item end_item_text + +=item handle_pod_and_cut + +=item handle_text + +=item handle_whiteline + +=item hyperlink + +=item scream + +=item start_B + +=item start_C + +=item start_Data + +=item start_F + +=item start_I + +=item start_L + +=item start_Para + +=item start_S + +=item start_Verbatim + +=item start_X + +=item start_fcode + +=item start_for + +=item start_head + +=item start_head1 + +=item start_head2 + +=item start_head3 + +=item start_head4 + +=item start_item_bullet + +=item start_item_number + +=item start_item_text + +=item start_over + +=item start_over_block + +=item start_over_bullet + +=item start_over_empty + +=item start_over_number + +=item start_over_text + +=item whine + +=back + =cut ############################################################################# @@ -663,6 +776,9 @@ $complaint =~ /^You have '=item .+?' instead of the expected '=item .+?'$/; } + # rt.cpan.org #98326 - errors about Z<> ("non-empty") + $severity = 'WARNING' if $complaint =~ /\bZ\<\>/; + $self->poderror({ -line => $line, -severity => $severity, -msg => $complaint }); diff -Nru perl-5.32.1/cpan/Pod-Checker/scripts/podchecker.PL perl-5.34.0/cpan/Pod-Checker/scripts/podchecker.PL --- perl-5.32.1/cpan/Pod-Checker/scripts/podchecker.PL 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Checker/scripts/podchecker.PL 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,5 @@ #!/usr/local/bin/perl - +use strict; use Config; use File::Basename qw(&basename &dirname); use Cwd; @@ -13,6 +13,7 @@ # This forces PL files to create target in same directory as PL file. # This is so that make depend always knows where to find PL derivatives. +my ($origdir, $file); $origdir = cwd; chdir(dirname($0)); ($file = basename($0)) =~ s/\.PL$//; diff -Nru perl-5.32.1/cpan/Pod-Checker/t/pod/poderrs.t perl-5.34.0/cpan/Pod-Checker/t/pod/poderrs.t --- perl-5.32.1/cpan/Pod-Checker/t/pod/poderrs.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Checker/t/pod/poderrs.t 2020-10-24 18:43:34.000000000 +0000 @@ -121,6 +121,8 @@ L L<> +L +L L< aha> L L< weehee > diff -Nru perl-5.32.1/cpan/Pod-Checker/t/pod/poderrs.xr perl-5.34.0/cpan/Pod-Checker/t/pod/poderrs.xr --- perl-5.32.1/cpan/Pod-Checker/t/pod/poderrs.xr 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Checker/t/pod/poderrs.xr 2020-10-24 18:43:34.000000000 +0000 @@ -33,38 +33,40 @@ *** ERROR: An E<...> surrounding strange content at line 105 in file t/pod/poderrs.t *** ERROR: Unknown E content in E at line 105 in file t/pod/poderrs.t *** ERROR: An empty L<> at line 121 in file t/pod/poderrs.t +*** ERROR: L<> contains only '/' at line 121 in file t/pod/poderrs.t *** ERROR: L<> starts or ends with whitespace at line 121 in file t/pod/poderrs.t *** ERROR: L<> starts or ends with whitespace at line 121 in file t/pod/poderrs.t *** ERROR: L<> starts or ends with whitespace at line 121 in file t/pod/poderrs.t -*** ERROR: Unterminated L<<< ... >>> sequence at line 137 in file t/pod/poderrs.t +*** WARNING: empty link at line 121 in file t/pod/poderrs.t *** ERROR: Unterminated L<<< ... >>> sequence at line 139 in file t/pod/poderrs.t -*** ERROR: alternative text 'some text with / in it' contains non-escaped | or / at line 143 in file t/pod/poderrs.t -*** ERROR: =back doesn't take any parameters, but you said =back 200 at line 150 in file t/pod/poderrs.t -*** ERROR: A non-empty Z<> at line 158 in file t/pod/poderrs.t -*** ERROR: An empty X<> at line 160 in file t/pod/poderrs.t -*** ERROR: An empty E<> at line 164 in file t/pod/poderrs.t -*** ERROR: =over should be: '=over' or '=over positive_number' at line 166 in file t/pod/poderrs.t -*** ERROR: You can't have =items (as at line 170) unless the first thing after the =over is an =item at line 166 in file t/pod/poderrs.t -*** WARNING: =item has no contents at line 176 in file t/pod/poderrs.t -*** ERROR: Expected '=item *' at line 178 in file t/pod/poderrs.t +*** ERROR: Unterminated L<<< ... >>> sequence at line 141 in file t/pod/poderrs.t +*** ERROR: alternative text 'some text with / in it' contains non-escaped | or / at line 145 in file t/pod/poderrs.t +*** ERROR: =back doesn't take any parameters, but you said =back 200 at line 152 in file t/pod/poderrs.t +*** WARNING: A non-empty Z<> at line 160 in file t/pod/poderrs.t +*** ERROR: An empty X<> at line 162 in file t/pod/poderrs.t +*** ERROR: An empty E<> at line 166 in file t/pod/poderrs.t +*** ERROR: =over should be: '=over' or '=over positive_number' at line 168 in file t/pod/poderrs.t +*** ERROR: You can't have =items (as at line 172) unless the first thing after the =over is an =item at line 168 in file t/pod/poderrs.t +*** WARNING: =item has no contents at line 178 in file t/pod/poderrs.t *** ERROR: Expected '=item *' at line 180 in file t/pod/poderrs.t -*** WARNING: line containing nothing but whitespace in paragraph at line 187 in file t/pod/poderrs.t -*** ERROR: You can't have =items (as at line 188) unless the first thing after the =over is an =item at line 184 in file t/pod/poderrs.t -*** ERROR: Expected '=item *' at line 204 in file t/pod/poderrs.t -*** ERROR: Expected '=item *' at line 208 in file t/pod/poderrs.t -*** ERROR: You have '=item 3' instead of the expected '=item 2' at line 218 in file t/pod/poderrs.t -*** ERROR: Expected '=item 3' at line 222 in file t/pod/poderrs.t -*** ERROR: Expected '=item 4' at line 224 in file t/pod/poderrs.t -*** ERROR: Expected text after =item, not a bullet at line 234 in file t/pod/poderrs.t -*** ERROR: Expected text after =item, not a number at line 238 in file t/pod/poderrs.t -*** WARNING: empty =over/=back block at line 253 in file t/pod/poderrs.t -*** ERROR: Spurious text after =pod at line 263 in file t/pod/poderrs.t -*** ERROR: Spurious text after =cut at line 267 in file t/pod/poderrs.t -*** WARNING: empty section in previous paragraph at line 283 in file t/pod/poderrs.t -*** ERROR: empty =head1 at line 305 in file t/pod/poderrs.t -*** ERROR: =over without closing =back at line 311 in file t/pod/poderrs.t -*** ERROR: =begin :xml without matching =end :xml at line 317 in file t/pod/poderrs.t -*** ERROR: =begin html without matching =end html at line 313 in file t/pod/poderrs.t +*** ERROR: Expected '=item *' at line 182 in file t/pod/poderrs.t +*** WARNING: line containing nothing but whitespace in paragraph at line 189 in file t/pod/poderrs.t +*** ERROR: You can't have =items (as at line 190) unless the first thing after the =over is an =item at line 186 in file t/pod/poderrs.t +*** ERROR: Expected '=item *' at line 206 in file t/pod/poderrs.t +*** ERROR: Expected '=item *' at line 210 in file t/pod/poderrs.t +*** ERROR: You have '=item 3' instead of the expected '=item 2' at line 220 in file t/pod/poderrs.t +*** ERROR: Expected '=item 3' at line 224 in file t/pod/poderrs.t +*** ERROR: Expected '=item 4' at line 226 in file t/pod/poderrs.t +*** ERROR: Expected text after =item, not a bullet at line 236 in file t/pod/poderrs.t +*** ERROR: Expected text after =item, not a number at line 240 in file t/pod/poderrs.t +*** WARNING: empty =over/=back block at line 255 in file t/pod/poderrs.t +*** ERROR: Spurious text after =pod at line 265 in file t/pod/poderrs.t +*** ERROR: Spurious text after =cut at line 269 in file t/pod/poderrs.t +*** WARNING: empty section in previous paragraph at line 285 in file t/pod/poderrs.t +*** ERROR: empty =head1 at line 307 in file t/pod/poderrs.t +*** ERROR: =over without closing =back at line 313 in file t/pod/poderrs.t +*** ERROR: =begin :xml without matching =end :xml at line 319 in file t/pod/poderrs.t +*** ERROR: =begin html without matching =end html at line 315 in file t/pod/poderrs.t *** ERROR: unresolved internal link 'begin or begin' at line 115 in file t/pod/poderrs.t *** ERROR: unresolved internal link 'end with begin' at line 115 in file t/pod/poderrs.t *** ERROR: unresolved internal link 'OoPs' at line 115 in file t/pod/poderrs.t @@ -72,7 +74,7 @@ *** ERROR: unresolved internal link ' aha' at line 121 in file t/pod/poderrs.t *** ERROR: unresolved internal link 'oho ' at line 121 in file t/pod/poderrs.t *** ERROR: unresolved internal link ' weehee ' at line 121 in file t/pod/poderrs.t -*** ERROR: unresolved internal link 'link_to_nowhere' at line 319 in file t/pod/poderrs.t +*** ERROR: unresolved internal link 'link_to_nowhere' at line 321 in file t/pod/poderrs.t *** WARNING: multiple occurrences (2) of link target '*' at line - in file t/pod/poderrs.t *** WARNING: multiple occurrences (2) of link target '1' at line - in file t/pod/poderrs.t *** WARNING: multiple occurrences (2) of link target 'Misc' at line - in file t/pod/poderrs.t diff -Nru perl-5.32.1/cpan/Pod-Checker/t/pod/podname.t perl-5.34.0/cpan/Pod-Checker/t/pod/podname.t --- perl-5.32.1/cpan/Pod-Checker/t/pod/podname.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Checker/t/pod/podname.t 2020-10-24 18:43:34.000000000 +0000 @@ -0,0 +1,42 @@ +#!/usr/bin/perl + +use strict; +use Test::More tests => 4; + +require_ok('Pod::Checker'); + +my $infile = $0; # self +(my $outfile = $infile) =~ s/\..*?$/.OUT/; + +if ($^O eq 'VMS') { + for ($infile, $outfile) { + $_ = VMS::Filespec::unixify($_) unless ref; + } +} + +my $checker = Pod::Checker->new(); +ok($checker, 'Checker object successfully created'); + +ok($checker->parse_from_file($infile, $outfile), "$0 successfully parsed"); + +is($checker->name(), 'podname'); + +$checker->{'-quiet'} = 1; # we can't write now +$checker->poderror('* HORROR: You better run'); + +END { + unlink($outfile); +} + +__END__ + +# this lone =cut triggers the call to scream() + +=cut + +=head1 NAME + +podname - check the name() method of Pod::Checker + +=cut + diff -Nru perl-5.32.1/cpan/Pod-Checker/t/pod/testpchk.pl perl-5.34.0/cpan/Pod-Checker/t/pod/testpchk.pl --- perl-5.32.1/cpan/Pod-Checker/t/pod/testpchk.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Checker/t/pod/testpchk.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,8 +1,10 @@ package TestPodChecker; +use strict; +use File::Basename qw(basename dirname fileparse); +use File::Spec; + BEGIN { - use File::Basename; - use File::Spec; push @INC, '..'; my $THISDIR = dirname $0; unshift @INC, $THISDIR; @@ -14,7 +16,7 @@ } use Pod::Checker; -use vars qw(@ISA @EXPORT $MYPKG); +use vars qw(@ISA @EXPORT @EXPORT_OK $MYPKG); #use strict; #use diagnostics; use Carp; diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm 2020-11-18 22:09:15.000000000 +0000 @@ -22,7 +22,7 @@ use strict; use Carp (); use vars qw($VERSION ); -$VERSION = '3.40'; +$VERSION = '3.42'; #use constant DEBUG => 7; sub my_qr ($$) { @@ -64,7 +64,7 @@ $non_ascii_re = qr/[\x80-\xFF]/ unless $non_ascii_re; # Use patterns understandable by Perl 5.6, if possible -my $cs_re = my_qr('\p{IsCs}', "\x{D800}"); +my $cs_re = do { no warnings; my_qr('\p{IsCs}', "\x{D800}") }; my $cn_re = my_qr('\p{IsCn}', "\x{09E4}"); # code point unlikely # to get assigned my $rare_blocks_re = my_qr('[\p{InIPAExtensions}\p{InSpacingModifierLetters}]', @@ -139,10 +139,8 @@ # An attempt to match the pod portions of a line. This is not fool proof, # but is good enough to serve as part of the heuristic for guessing the pod # encoding if not specified. - my $format_codes = join "", '[', grep { / ^ [A-Za-z] $/x } - keys %{$self->{accept_codes}}; - $format_codes .= ']'; - my $pod_chars_re = qr/ ^ = [A-Za-z]+ | $format_codes < /x; + my $codes = join '', grep { / ^ [A-Za-z] $/x } sort keys %{$self->{accept_codes}}; + my $pod_chars_re = qr/ ^ = [A-Za-z]+ | [\Q$codes\E] < /x; my $line; foreach my $source_line (@_) { diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/Checker.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/Checker.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/Checker.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/Checker.pm 2020-11-18 22:09:15.000000000 +0000 @@ -9,7 +9,7 @@ use Pod::Simple::Methody (); use Pod::Simple (); use vars qw( @ISA $VERSION ); -$VERSION = '3.40'; +$VERSION = '3.42'; @ISA = ('Pod::Simple::Methody'); BEGIN { *DEBUG = defined(&Pod::Simple::DEBUG) ? \&Pod::Simple::DEBUG diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/Debug.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/Debug.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/Debug.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/Debug.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ package Pod::Simple::Debug; use strict; use vars qw($VERSION ); -$VERSION = '3.40'; +$VERSION = '3.42'; sub import { my($value,$variable); diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/DumpAsText.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/DumpAsText.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/DumpAsText.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/DumpAsText.pm 2020-11-18 22:09:15.000000000 +0000 @@ -1,7 +1,7 @@ require 5; package Pod::Simple::DumpAsText; -$VERSION = '3.40'; +$VERSION = '3.42'; use Pod::Simple (); BEGIN {@ISA = ('Pod::Simple')} diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm 2020-11-18 22:09:15.000000000 +0000 @@ -1,7 +1,7 @@ require 5; package Pod::Simple::DumpAsXML; -$VERSION = '3.40'; +$VERSION = '3.42'; use Pod::Simple (); BEGIN {@ISA = ('Pod::Simple')} diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/HTMLBatch.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/HTMLBatch.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/HTMLBatch.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/HTMLBatch.pm 2020-11-18 22:09:15.000000000 +0000 @@ -5,7 +5,7 @@ use vars qw( $VERSION $HTML_RENDER_CLASS $HTML_EXTENSION $CSS $JAVASCRIPT $SLEEPY $SEARCH_CLASS @ISA ); -$VERSION = '3.40'; +$VERSION = '3.42'; @ISA = (); # Yup, we're NOT a subclass of Pod::Simple::HTML! # TODO: nocontents stylesheets. Strike some of the color variations? @@ -94,11 +94,11 @@ $new->contents_page_end( sprintf( - "\n\n

Generated by %s v%s under Perl v%s\n
At %s GMT, which is %s local time.

\n\n\n", + "\n\n

Generated by %s v%s under Perl v%s\n
At %s GMT.

\n\n\n", esc( ref($new), eval {$new->VERSION} || $VERSION, - $], scalar(gmtime), scalar(localtime), + $], scalar(gmtime($ENV{SOURCE_DATE_EPOCH} || time)), ))); return $new; @@ -871,7 +871,8 @@ background-color: #000; } - body.pod h1, body.pod h2, body.pod h3, body.pod h4 { + body.pod h1, body.pod h2, body.pod h3, + body.pod h4, body.pod h5, body.pod h6 { font-family: Tahoma, Verdana, Helvetica, Arial, sans-serif; font-weight: normal; margin-top: 1.2em; @@ -884,11 +885,15 @@ body.pod h2 { border-top-color: #080; } body.pod h3 { border-top-color: #040; } body.pod h4 { border-top-color: #010; } + body.pod h5 { border-top-color: #010; } + body.pod h6 { border-top-color: #010; } p.backlinktop + h1 { border-top: none; margin-top: 0em; } p.backlinktop + h2 { border-top: none; margin-top: 0em; } p.backlinktop + h3 { border-top: none; margin-top: 0em; } p.backlinktop + h4 { border-top: none; margin-top: 0em; } + p.backlinktop + h5 { border-top: none; margin-top: 0em; } + p.backlinktop + h6 { border-top: none; margin-top: 0em; } body.pod dt { font-size: 105%; /* just a wee bit more than normal */ diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/HTML.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/HTML.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/HTML.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/HTML.pm 2020-11-18 22:09:15.000000000 +0000 @@ -9,7 +9,7 @@ $Doctype_decl $Content_decl ); @ISA = ('Pod::Simple::PullParser'); -$VERSION = '3.40'; +$VERSION = '3.42'; BEGIN { if(defined &DEBUG) { } # no-op elsif( defined &Pod::Simple::DEBUG ) { *DEBUG = \&Pod::Simple::DEBUG } @@ -109,10 +109,14 @@ 'head2' => "\n

", # '' 'head3' => "\n

", # '' 'head4' => "\n

", # '' + 'head5' => "\n

", # '' + 'head6' => "\n
", # '' '/head1' => "
\n", '/head2' => "
\n", '/head3' => "\n", '/head4' => "\n", + '/head5' => "\n", + '/head6' => "\n", 'X' => "", @@ -224,7 +228,7 @@ return if ($self->{'Adjusted_html_h_levels'}||0) == $add; $add -= 1; - for (1 .. 4) { + for (1 .. 6) { $Tagmap->{"head$_"} =~ s/$_/$_ + $add/e; $Tagmap->{"/head$_"} =~ s/$_/$_ + $add/e; } @@ -323,7 +327,7 @@ "\n", esc( ref($self), $self->VERSION(), $ISA[0], $ISA[0]->VERSION(), - $], scalar(gmtime), + $], scalar(gmtime($ENV{SOURCE_DATE_EPOCH} || time)), ), $self->_modnote(), ; } diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/JustPod.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/JustPod.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/JustPod.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/JustPod.pm 2020-10-24 18:43:34.000000000 +0000 @@ -74,6 +74,8 @@ sub start_head2 { shift->_generic_start('=head2', @_); } sub start_head3 { shift->_generic_start('=head3', @_); } sub start_head4 { shift->_generic_start('=head4', @_); } +sub start_head5 { shift->_generic_start('=head5', @_); } +sub start_head6 { shift->_generic_start('=head6', @_); } sub start_encoding { shift->_generic_start('=encoding', @_); } # sub start_Para # sub start_Verbatim @@ -175,6 +177,8 @@ *end_head2 = *_end_generic; *end_head3 = *_end_generic; *end_head4 = *_end_generic; +*end_head5 = *_end_generic; +*end_head6 = *_end_generic; *end_encoding = *_end_generic; *end_Para = *_end_generic; *end_Verbatim = *_end_generic; diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/LinkSection.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/LinkSection.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/LinkSection.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/LinkSection.pm 2020-11-18 22:09:15.000000000 +0000 @@ -6,7 +6,7 @@ use strict; use Pod::Simple::BlackBox; use vars qw($VERSION ); -$VERSION = '3.40'; +$VERSION = '3.42'; use overload( # So it'll stringify nice '""' => \&Pod::Simple::BlackBox::stringify_lol, diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/Methody.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/Methody.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/Methody.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/Methody.pm 2020-11-18 22:09:15.000000000 +0000 @@ -4,7 +4,7 @@ use strict; use Pod::Simple (); use vars qw(@ISA $VERSION); -$VERSION = '3.40'; +$VERSION = '3.42'; @ISA = ('Pod::Simple'); # Yes, we could use named variables, but I want this to be impose diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/Progress.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/Progress.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/Progress.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/Progress.pm 2020-11-18 22:09:15.000000000 +0000 @@ -1,7 +1,7 @@ require 5; package Pod::Simple::Progress; -$VERSION = '3.40'; +$VERSION = '3.42'; use strict; # Objects of this class are used for noting progress of an diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm 2020-11-18 22:09:15.000000000 +0000 @@ -5,7 +5,7 @@ use strict; use vars qw(@ISA $VERSION); @ISA = ('Pod::Simple::PullParserToken'); -$VERSION = '3.40'; +$VERSION = '3.42'; sub new { # Class->new(tagname); my $class = shift; diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/PullParser.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/PullParser.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/PullParser.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/PullParser.pm 2020-11-18 22:09:15.000000000 +0000 @@ -1,6 +1,6 @@ require 5; package Pod::Simple::PullParser; -$VERSION = '3.40'; +$VERSION = '3.42'; use Pod::Simple (); BEGIN {@ISA = ('Pod::Simple')} diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/PullParserStartToken.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/PullParserStartToken.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/PullParserStartToken.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/PullParserStartToken.pm 2020-11-18 22:09:15.000000000 +0000 @@ -5,7 +5,7 @@ use strict; use vars qw(@ISA $VERSION); @ISA = ('Pod::Simple::PullParserToken'); -$VERSION = '3.40'; +$VERSION = '3.42'; sub new { # Class->new(tagname, optional_attrhash); my $class = shift; diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/PullParserTextToken.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/PullParserTextToken.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/PullParserTextToken.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/PullParserTextToken.pm 2020-11-18 22:09:15.000000000 +0000 @@ -5,7 +5,7 @@ use strict; use vars qw(@ISA $VERSION); @ISA = ('Pod::Simple::PullParserToken'); -$VERSION = '3.40'; +$VERSION = '3.42'; sub new { # Class->new(text); my $class = shift; diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/PullParserToken.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/PullParserToken.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/PullParserToken.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/PullParserToken.pm 2020-11-18 22:09:15.000000000 +0000 @@ -3,7 +3,7 @@ package Pod::Simple::PullParserToken; # Base class for tokens gotten from Pod::Simple::PullParser's $parser->get_token @ISA = (); -$VERSION = '3.40'; +$VERSION = '3.42'; use strict; sub new { # Class->new('type', stuff...); ## Overridden in derived classes anyway diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/RTF.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/RTF.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/RTF.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/RTF.pm 2020-11-18 22:09:15.000000000 +0000 @@ -8,7 +8,7 @@ use strict; use vars qw($VERSION @ISA %Escape $WRAP %Tagmap); -$VERSION = '3.40'; +$VERSION = '3.42'; use Pod::Simple::PullParser (); BEGIN {@ISA = ('Pod::Simple::PullParser')} @@ -494,7 +494,7 @@ # None of the following things should need escaping, I dare say! $tag, $ISA[0], $ISA[0]->VERSION(), - $], scalar(gmtime), + $], scalar(gmtime($ENV{SOURCE_DATE_EPOCH} || time)), ; } diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/Search.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/Search.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/Search.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/Search.pm 2020-11-18 22:09:15.000000000 +0000 @@ -3,7 +3,7 @@ use strict; use vars qw($VERSION $MAX_VERSION_WITHIN $SLEEPY); -$VERSION = '3.40'; ## Current version of this package +$VERSION = '3.42'; ## Current version of this package BEGIN { *DEBUG = sub () {0} unless defined &DEBUG; } # set DEBUG level use Carp (); diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/SimpleTree.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/SimpleTree.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/SimpleTree.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/SimpleTree.pm 2020-11-18 22:09:15.000000000 +0000 @@ -5,7 +5,7 @@ use Carp (); use Pod::Simple (); use vars qw( $ATTR_PAD @ISA $VERSION $SORT_ATTRS); -$VERSION = '3.40'; +$VERSION = '3.42'; BEGIN { @ISA = ('Pod::Simple'); *DEBUG = \&Pod::Simple::DEBUG unless defined &DEBUG; diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm 2020-11-18 22:09:15.000000000 +0000 @@ -6,7 +6,7 @@ use Carp (); use Pod::Simple (); use vars qw( @ISA $VERSION ); -$VERSION = '3.40'; +$VERSION = '3.42'; @ISA = ('Pod::Simple'); sub new { diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/Text.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/Text.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/Text.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/Text.pm 2020-11-18 22:09:15.000000000 +0000 @@ -6,7 +6,7 @@ use Pod::Simple::Methody (); use Pod::Simple (); use vars qw( @ISA $VERSION $FREAKYMODE); -$VERSION = '3.40'; +$VERSION = '3.42'; @ISA = ('Pod::Simple::Methody'); BEGIN { *DEBUG = defined(&Pod::Simple::DEBUG) ? \&Pod::Simple::DEBUG diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/TiedOutFH.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/TiedOutFH.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/TiedOutFH.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/TiedOutFH.pm 2020-11-18 22:09:15.000000000 +0000 @@ -4,7 +4,7 @@ use Symbol ('gensym'); use Carp (); use vars qw($VERSION ); -$VERSION = '3.40'; +$VERSION = '3.42'; #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm 2020-11-18 22:09:15.000000000 +0000 @@ -5,7 +5,7 @@ package Pod::Simple::TranscodeDumb; use strict; use vars qw($VERSION %Supported); -$VERSION = '3.40'; +$VERSION = '3.42'; # This module basically pretends it knows how to transcode, except # only for null-transcodings! We use this when Encode isn't # available. diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm 2020-11-18 22:09:15.000000000 +0000 @@ -3,7 +3,7 @@ package Pod::Simple::Transcode; use strict; use vars qw($VERSION @ISA); -$VERSION = '3.40'; +$VERSION = '3.42'; BEGIN { if(defined &DEBUG) {;} # Okay diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/TranscodeSmart.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/TranscodeSmart.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/TranscodeSmart.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/TranscodeSmart.pm 2020-11-18 22:09:15.000000000 +0000 @@ -9,7 +9,7 @@ use Pod::Simple; require Encode; use vars qw($VERSION ); -$VERSION = '3.40'; +$VERSION = '3.42'; sub is_dumb {0} sub is_smart {1} diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/XHTML.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/XHTML.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/XHTML.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/XHTML.pm 2020-11-18 22:09:15.000000000 +0000 @@ -45,7 +45,7 @@ package Pod::Simple::XHTML; use strict; use vars qw( $VERSION @ISA $HAS_HTML_ENTITIES ); -$VERSION = '3.40'; +$VERSION = '3.42'; use Pod::Simple::Methody (); @ISA = ('Pod::Simple::Methody'); @@ -400,6 +400,8 @@ sub start_head2 { $_[0]{'in_head'} = 2; $_[0]{htext} = ''; } sub start_head3 { $_[0]{'in_head'} = 3; $_[0]{htext} = ''; } sub start_head4 { $_[0]{'in_head'} = 4; $_[0]{htext} = ''; } +sub start_head5 { $_[0]{'in_head'} = 5; $_[0]{htext} = ''; } +sub start_head6 { $_[0]{'in_head'} = 6; $_[0]{htext} = ''; } sub start_item_number { $_[0]{'scratch'} = "\n" if ($_[0]{'in_li'}->[-1] && pop @{$_[0]{'in_li'}}); @@ -483,6 +485,8 @@ sub end_head2 { shift->_end_head(@_); } sub end_head3 { shift->_end_head(@_); } sub end_head4 { shift->_end_head(@_); } +sub end_head5 { shift->_end_head(@_); } +sub end_head6 { shift->_end_head(@_); } sub end_item_bullet { $_[0]{'scratch'} .= '

'; $_[0]->emit } sub end_item_number { $_[0]{'scratch'} .= '

'; $_[0]->emit } diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm 2020-11-18 22:09:15.000000000 +0000 @@ -5,7 +5,7 @@ use Carp (); use Pod::Simple (); use vars qw( $ATTR_PAD @ISA $VERSION $SORT_ATTRS); -$VERSION = '3.40'; +$VERSION = '3.42'; BEGIN { @ISA = ('Pod::Simple'); *DEBUG = \&Pod::Simple::DEBUG unless defined &DEBUG; diff -Nru perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple.pm perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple.pm --- perl-5.32.1/cpan/Pod-Simple/lib/Pod/Simple.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/lib/Pod/Simple.pm 2020-11-18 22:09:15.000000000 +0000 @@ -18,11 +18,11 @@ ); @ISA = ('Pod::Simple::BlackBox'); -$VERSION = '3.40'; +$VERSION = '3.42'; @Known_formatting_codes = qw(I B C L E F S X Z); %Known_formatting_codes = map(($_=>1), @Known_formatting_codes); -@Known_directives = qw(head1 head2 head3 head4 item over back); +@Known_directives = qw(head1 head2 head3 head4 head5 head6 item over back); %Known_directives = map(($_=>'Plain'), @Known_directives); $NL = $/ unless defined $NL; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/00about.t perl-5.34.0/cpan/Pod-Simple/t/00about.t --- perl-5.32.1/cpan/Pod-Simple/t/00about.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/00about.t 2020-10-24 18:43:34.000000000 +0000 @@ -12,6 +12,7 @@ } use strict; +use warnings; use Test; my @modules; BEGIN { diff -Nru perl-5.32.1/cpan/Pod-Simple/t/20_skip.t perl-5.34.0/cpan/Pod-Simple/t/20_skip.t --- perl-5.32.1/cpan/Pod-Simple/t/20_skip.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/20_skip.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,4 +1,8 @@ # 20 skip under 5.8 + +use strict; +use warnings; + BEGIN { if($ENV{PERL_CORE}) { chdir 't'; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/accept01.t perl-5.34.0/cpan/Pod-Simple/t/accept01.t --- perl-5.32.1/cpan/Pod-Simple/t/accept01.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/accept01.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,6 +7,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 13 }; @@ -17,7 +18,13 @@ use Pod::Simple::DumpAsXML; use Pod::Simple::XMLOutStream; print "# Pod::Simple version $Pod::Simple::VERSION\n"; -sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) } + +BEGIN { + require FindBin; + unshift @INC, $FindBin::Bin . '/lib'; + require helpers; + helpers->import; +} my $x = 'Pod::Simple::XMLOutStream'; sub accept_N { $_[0]->accept_codes('N') } diff -Nru perl-5.32.1/cpan/Pod-Simple/t/accept05.t perl-5.34.0/cpan/Pod-Simple/t/accept05.t --- perl-5.32.1/cpan/Pod-Simple/t/accept05.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/accept05.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,6 +7,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 24 }; @@ -17,7 +18,13 @@ use Pod::Simple::DumpAsXML; use Pod::Simple::XMLOutStream; print "# Pod::Simple version $Pod::Simple::VERSION\n"; -sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) } + +BEGIN { + require FindBin; + unshift @INC, $FindBin::Bin . '/lib'; + require helpers; + helpers->import; +} my $x = 'Pod::Simple::XMLOutStream'; sub accept_Q { $_[0]->accept_codes('Q') } diff -Nru perl-5.32.1/cpan/Pod-Simple/t/ac_d.t perl-5.34.0/cpan/Pod-Simple/t/ac_d.t --- perl-5.32.1/cpan/Pod-Simple/t/ac_d.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/ac_d.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 14 }; @@ -18,8 +19,6 @@ $Pod::Simple::XMLOutStream::ATTR_PAD = ' '; $Pod::Simple::XMLOutStream::SORT_ATTRS = 1; # for predictably testable output -#sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) } - $Pod::Simple::XMLOutStream::ATTR_PAD = ' '; $Pod::Simple::XMLOutStream::SORT_ATTRS = 1; # for predictably testable output diff -Nru perl-5.32.1/cpan/Pod-Simple/t/basic.t perl-5.34.0/cpan/Pod-Simple/t/basic.t --- perl-5.32.1/cpan/Pod-Simple/t/basic.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/basic.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 31 }; @@ -26,7 +27,12 @@ require Pod::Simple::XMLOutStream; ok 1; -sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) } +BEGIN { + require FindBin; + unshift @INC, $FindBin::Bin . '/lib'; + require helpers; + helpers->import; +} print "# Simple identity tests...\n"; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/begin.t perl-5.34.0/cpan/Pod-Simple/t/begin.t --- perl-5.32.1/cpan/Pod-Simple/t/begin.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/begin.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 62 }; @@ -18,7 +19,13 @@ use Pod::Simple::DumpAsXML; use Pod::Simple::XMLOutStream; print "# Pod::Simple version $Pod::Simple::VERSION\n"; -sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) } + +BEGIN { + require FindBin; + unshift @INC, $FindBin::Bin . '/lib'; + require helpers; + helpers->import; +} my $x = 'Pod::Simple::XMLOutStream'; $Pod::Simple::XMLOutStream::ATTR_PAD = ' '; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/cbacks.t perl-5.34.0/cpan/Pod-Simple/t/cbacks.t --- perl-5.32.1/cpan/Pod-Simple/t/cbacks.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/cbacks.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 8 }; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/chunking.t perl-5.34.0/cpan/Pod-Simple/t/chunking.t --- perl-5.32.1/cpan/Pod-Simple/t/chunking.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/chunking.t 2020-10-24 18:43:34.000000000 +0000 @@ -8,16 +8,22 @@ #use Pod::Simple::Debug (2); use strict; +use warnings; use Test; BEGIN { plan tests => 11 }; +BEGIN { + require FindBin; + unshift @INC, $FindBin::Bin . '/lib'; + require helpers; + helpers->import; +} ok 1; use Pod::Simple::DumpAsXML; use Pod::Simple::XMLOutStream; print "# Pod::Simple version $Pod::Simple::VERSION\n"; -sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) } ok( Pod::Simple::XMLOutStream->_out("=head1 =head1"), '=head1' diff -Nru perl-5.32.1/cpan/Pod-Simple/t/closeys.t perl-5.34.0/cpan/Pod-Simple/t/closeys.t --- perl-5.32.1/cpan/Pod-Simple/t/closeys.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/closeys.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,9 +6,17 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 3 }; +BEGIN { + require FindBin; + unshift @INC, $FindBin::Bin . '/lib'; + require helpers; + helpers->import('f'); +} + my $d; #use Pod::Simple::Debug (\$d,0); #use Pod::Simple::Debug (10); @@ -18,7 +26,6 @@ use Pod::Simple::DumpAsXML; use Pod::Simple::XMLOutStream; print "# Pod::Simple version $Pod::Simple::VERSION\n"; -sub e ($$) { Pod::Simple::XMLOutStream::->_duo(\&nowhine, @_) } sub nowhine { # $_[0]->{'no_whining'} = 1; @@ -26,7 +33,8 @@ } local $Pod::Simple::XMLOutStream::SORT_ATTRS = 1; -&ok(e( +&ok(f( + \&nowhine, "=begin :foo\n\n=begin :bar\n\nZaz\n\n", "=begin :foo\n\n=begin :bar\n\nZaz\n\n=end :bar\n\n=end :foo\n\n", )); diff -Nru perl-5.32.1/cpan/Pod-Simple/t/content_seen.t perl-5.34.0/cpan/Pod-Simple/t/content_seen.t --- perl-5.32.1/cpan/Pod-Simple/t/content_seen.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/content_seen.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 2 }; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/corpus.t perl-5.34.0/cpan/Pod-Simple/t/corpus.t --- perl-5.32.1/cpan/Pod-Simple/t/corpus.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/corpus.t 2020-10-24 18:43:34.000000000 +0000 @@ -22,6 +22,7 @@ use File::Spec; #use utf8; use strict; +use warnings; my(@testfiles, %xmlfiles, %wouldxml); #use Pod::Simple::Debug (10); BEGIN { diff -Nru perl-5.32.1/cpan/Pod-Simple/t/emptylists.t perl-5.34.0/cpan/Pod-Simple/t/emptylists.t --- perl-5.32.1/cpan/Pod-Simple/t/emptylists.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/emptylists.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 5 }; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/enc-chars.t perl-5.34.0/cpan/Pod-Simple/t/enc-chars.t --- perl-5.32.1/cpan/Pod-Simple/t/enc-chars.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/enc-chars.t 2020-10-24 18:43:34.000000000 +0000 @@ -16,6 +16,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 5 }; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/encod01.t perl-5.34.0/cpan/Pod-Simple/t/encod01.t --- perl-5.32.1/cpan/Pod-Simple/t/encod01.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/encod01.t 2020-10-24 18:43:34.000000000 +0000 @@ -11,6 +11,7 @@ use File::Spec; #use utf8; use strict; +use warnings; #use Pod::Simple::Debug (10); BEGIN { plan tests => 6 } diff -Nru perl-5.32.1/cpan/Pod-Simple/t/encod02.t perl-5.34.0/cpan/Pod-Simple/t/encod02.t --- perl-5.32.1/cpan/Pod-Simple/t/encod02.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/encod02.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,6 +7,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 4 }; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/encod03.t perl-5.34.0/cpan/Pod-Simple/t/encod03.t --- perl-5.32.1/cpan/Pod-Simple/t/encod03.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/encod03.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,6 +7,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 4 }; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/encod04.t perl-5.34.0/cpan/Pod-Simple/t/encod04.t --- perl-5.32.1/cpan/Pod-Simple/t/encod04.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/encod04.t 2020-10-24 18:43:34.000000000 +0000 @@ -10,6 +10,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 6, todo => []; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/end_over.t perl-5.34.0/cpan/Pod-Simple/t/end_over.t --- perl-5.32.1/cpan/Pod-Simple/t/end_over.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/end_over.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,8 +7,16 @@ } use strict; +use warnings; use Test; -BEGIN { plan tests => 5 }; +BEGIN { plan tests => 7 }; + +BEGIN { + require FindBin; + unshift @INC, $FindBin::Bin . '/lib'; + require helpers; + helpers->import('f'); +} my $d; #use Pod::Simple::Debug (\$d,0); @@ -18,32 +26,47 @@ use Pod::Simple::DumpAsXML; use Pod::Simple::XMLOutStream; print "# Pod::Simple version $Pod::Simple::VERSION\n"; -sub e ($$) { Pod::Simple::XMLOutStream::->_duo(\&nowhine, @_) } sub nowhine { $_[0]->{'no_whining'} = 1; } -&ok(e( +&ok(f( +\&nowhine, "=head2 BLOOP\n\nHoopbehwo!\n\n=over\n\n=item Stuff. Um.\n\nBrop.\n\n=head1 SVUP\n\nMyup.", "=head2 BLOOP\n\nHoopbehwo!\n\n=over\n\n=item Stuff. Um.\n\nBrop.\n\n=back\n\n=head1 SVUP\n\nMyup.", )); -&ok(e( +&ok(f( +\&nowhine, "=head2 BLOOP\n\nHoopbehwo!\n\n=over\n\n=item Stuff. Um.\n\nBrop.\n\n=head2 SVUP\n\nMyup.", "=head2 BLOOP\n\nHoopbehwo!\n\n=over\n\n=item Stuff. Um.\n\nBrop.\n\n=back\n\n=head2 SVUP\n\nMyup.", )); -&ok(e( +&ok(f( +\&nowhine, "=head2 BLOOP\n\nHoopbehwo!\n\n=over\n\n=item Stuff. Um.\n\nBrop.\n\n=head3 SVUP\n\nMyup.", "=head2 BLOOP\n\nHoopbehwo!\n\n=over\n\n=item Stuff. Um.\n\nBrop.\n\n=back\n\n=head3 SVUP\n\nMyup.", )); -&ok(e( +&ok(f( +\&nowhine, "=head2 BLOOP\n\nHoopbehwo!\n\n=over\n\n=item Stuff. Um.\n\nBrop.\n\n=head4 SVUP\n\nMyup.", "=head2 BLOOP\n\nHoopbehwo!\n\n=over\n\n=item Stuff. Um.\n\nBrop.\n\n=back\n\n=head4 SVUP\n\nMyup.", )); +&ok(f( +\&nowhine, +"=head2 BLOOP\n\nHoopbehwo!\n\n=over\n\n=item Stuff. Um.\n\nBrop.\n\n=head5 SVUP\n\nMyup.", +"=head2 BLOOP\n\nHoopbehwo!\n\n=over\n\n=item Stuff. Um.\n\nBrop.\n\n=back\n\n=head5 SVUP\n\nMyup.", +)); + +&ok(f( +\&nowhine, +"=head2 BLOOP\n\nHoopbehwo!\n\n=over\n\n=item Stuff. Um.\n\nBrop.\n\n=head6 SVUP\n\nMyup.", +"=head2 BLOOP\n\nHoopbehwo!\n\n=over\n\n=item Stuff. Um.\n\nBrop.\n\n=back\n\n=head6 SVUP\n\nMyup.", +)); + __END__ diff -Nru perl-5.32.1/cpan/Pod-Simple/t/fcodes_e.t perl-5.34.0/cpan/Pod-Simple/t/fcodes_e.t --- perl-5.32.1/cpan/Pod-Simple/t/fcodes_e.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/fcodes_e.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,9 +7,16 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 20 }; +BEGIN { + require FindBin; + unshift @INC, $FindBin::Bin . '/lib'; + require helpers; + helpers->import; +} #use Pod::Simple::Debug (6); ok 1; @@ -23,9 +30,6 @@ if $Pod::Escapes::VERSION; # Presumably that's the library being used - -sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) } - &ok( e "", "" ); &ok( e "\n", "", ); diff -Nru perl-5.32.1/cpan/Pod-Simple/t/fcodes_l.t perl-5.34.0/cpan/Pod-Simple/t/fcodes_l.t --- perl-5.32.1/cpan/Pod-Simple/t/fcodes_l.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/fcodes_l.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,9 +7,17 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 101 }; +BEGIN { + require FindBin; + unshift @INC, $FindBin::Bin . '/lib'; + require helpers; + helpers->import; +} + #use Pod::Simple::Debug (10); ok 1; @@ -17,7 +25,7 @@ use Pod::Simple::DumpAsXML; use Pod::Simple::XMLOutStream; print "# Pod::Simple version $Pod::Simple::VERSION\n"; -sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) } + my $x = 'Pod::Simple::XMLOutStream'; print "##### Testing L codes via x class $x...\n"; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/fcodes_s.t perl-5.34.0/cpan/Pod-Simple/t/fcodes_s.t --- perl-5.32.1/cpan/Pod-Simple/t/fcodes_s.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/fcodes_s.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,6 +7,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 80 }; @@ -17,7 +18,8 @@ use Pod::Simple::XMLOutStream; print "# Pod::Simple version $Pod::Simple::VERSION\n"; my $x = 'Pod::Simple::XMLOutStream'; -sub e ($$) { $x->_duo(@_) } + +sub e { $x->_duo(@_) } $Pod::Simple::XMLOutStream::ATTR_PAD = ' '; $Pod::Simple::XMLOutStream::SORT_ATTRS = 1; # for predictably testable output @@ -221,7 +223,7 @@ use Pod::Simple::HTML; my $PERLDOC = "https://metacpan.org/pod"; my $MANURL = "http://man.he.net/man"; -sub x ($) { +sub x { Pod::Simple::HTML->_out( sub { $_[0]->bare_output(1) }, "=pod\n\n$_[0]", diff -Nru perl-5.32.1/cpan/Pod-Simple/t/fcodes.t perl-5.34.0/cpan/Pod-Simple/t/fcodes.t --- perl-5.32.1/cpan/Pod-Simple/t/fcodes.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/fcodes.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,17 +6,23 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 23 }; #use Pod::Simple::Debug (5); +BEGIN { + require FindBin; + unshift @INC, $FindBin::Bin . '/lib'; + require helpers; + helpers->import; +} ok 1; use Pod::Simple::DumpAsXML; use Pod::Simple::XMLOutStream; print "# Pod::Simple version $Pod::Simple::VERSION\n"; -sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) } print "# With weird leading whitespace...\n"; # With weird whitespace diff -Nru perl-5.32.1/cpan/Pod-Simple/t/fornot.t perl-5.34.0/cpan/Pod-Simple/t/fornot.t --- perl-5.32.1/cpan/Pod-Simple/t/fornot.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/fornot.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,17 +6,23 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 21 }; #use Pod::Simple::Debug (5); +BEGIN { + require FindBin; + unshift @INC, $FindBin::Bin . '/lib'; + require helpers; + helpers->import; +} ok 1; use Pod::Simple::DumpAsXML; use Pod::Simple::XMLOutStream; print "# Pod::Simple version $Pod::Simple::VERSION\n"; -sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) } my $x = 'Pod::Simple::XMLOutStream'; $Pod::Simple::XMLOutStream::ATTR_PAD = ' '; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/for.t perl-5.34.0/cpan/Pod-Simple/t/for.t --- perl-5.32.1/cpan/Pod-Simple/t/for.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/for.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,17 +6,23 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 21 }; #use Pod::Simple::Debug (5); +BEGIN { + require FindBin; + unshift @INC, $FindBin::Bin . '/lib'; + require helpers; + helpers->import; +} ok 1; use Pod::Simple::DumpAsXML; use Pod::Simple::XMLOutStream; print "# Pod::Simple version $Pod::Simple::VERSION\n"; -sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) } my $x = 'Pod::Simple::XMLOutStream'; $Pod::Simple::XMLOutStream::ATTR_PAD = ' '; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/heads.t perl-5.34.0/cpan/Pod-Simple/t/heads.t --- perl-5.32.1/cpan/Pod-Simple/t/heads.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/heads.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,20 +6,27 @@ } use strict; +use warnings; use Test; -BEGIN { plan tests => 19 }; +BEGIN { plan tests => 23 }; #use Pod::Simple::Debug (6); +BEGIN { + require FindBin; + unshift @INC, $FindBin::Bin . '/lib'; + require helpers; + helpers->import; +} + ok 1; use Pod::Simple::DumpAsXML; use Pod::Simple::XMLOutStream; print "# Pod::Simple version $Pod::Simple::VERSION\n"; -sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) } -print "# Simple tests for head1 - head4...\n"; +print "# Simple tests for head1 - head6...\n"; ok( Pod::Simple::XMLOutStream->_out("\n=head1 Chacha\n\n"), 'Chacha' ); @@ -32,6 +39,12 @@ ok( Pod::Simple::XMLOutStream->_out("\n=head4 Chacha\n\n"), 'Chacha' ); +ok( Pod::Simple::XMLOutStream->_out("\n=head5 Chacha\n\n"), + 'Chacha' +); +ok( Pod::Simple::XMLOutStream->_out("\n=head6 Chacha\n\n"), + 'Chacha' +); print "# Testing whitespace equivalence...\n"; @@ -57,7 +70,7 @@ -print "# Testing head2, head3, head4 more...\n"; +print "# Testing head2 ... head6 more...\n"; ok( Pod::Simple::XMLOutStream->_out("=head2 Cha cha\tcha \n"), 'Cha cha cha' @@ -68,6 +81,12 @@ ok( Pod::Simple::XMLOutStream->_out("=head4 Cha cha\tcha \n"), 'Cha cha cha' ); +ok( Pod::Simple::XMLOutStream->_out("=head5 Cha cha\tcha \n"), + 'Cha cha cha' +); +ok( Pod::Simple::XMLOutStream->_out("=head6 Cha cha\tcha \n"), + 'Cha cha cha' +); print "# Testing entity expansion...\n"; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/html01.t perl-5.34.0/cpan/Pod-Simple/t/html01.t --- perl-5.32.1/cpan/Pod-Simple/t/html01.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/html01.t 2020-10-24 18:43:34.000000000 +0000 @@ -8,14 +8,15 @@ } use strict; +use warnings; use Test; -BEGIN { plan tests => 14 }; +BEGIN { plan tests => 16 }; #use Pod::Simple::Debug (10); use Pod::Simple::HTML; -sub x ($;&) { +sub x { my $code = $_[1]; Pod::Simple::HTML->_out( sub{ $_[0]->bare_output(1); $code->($_[0]) if $code }, @@ -78,6 +79,18 @@ "heading building" ); +ok(x( +'=head5 The number of the heading shall be five') + => q{/\s*
]+>The\s+number\s+of\s+the\s+heading\s+shall\s+be\s+five
\s*$/}, + "heading building" +); + +ok(x( +'=head6 The sixth a heading is the perfect heading') + => q{/\s*
]+>The\s+sixth\s+a\s+heading\s+is\s+the\s+perfect\s+heading
\s*$/}, + "heading building" +); + ok(x( '=head2 Yada Yada Operator X<...> X<... operator> X') diff -Nru perl-5.32.1/cpan/Pod-Simple/t/html02.t perl-5.34.0/cpan/Pod-Simple/t/html02.t --- perl-5.32.1/cpan/Pod-Simple/t/html02.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/html02.t 2020-10-24 18:43:34.000000000 +0000 @@ -10,11 +10,12 @@ #use Pod::Simple::Debug (10); use strict; +use warnings; use Test; BEGIN { plan tests => 7}; use Pod::Simple::HTML; -sub x ($) { Pod::Simple::HTML->_out( +sub x { Pod::Simple::HTML->_out( sub{ $_[0]->bare_output(1) }, "=pod\n\n$_[0]", ) } diff -Nru perl-5.32.1/cpan/Pod-Simple/t/html03.t perl-5.34.0/cpan/Pod-Simple/t/html03.t --- perl-5.32.1/cpan/Pod-Simple/t/html03.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/html03.t 2020-10-24 18:43:34.000000000 +0000 @@ -8,6 +8,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 7 }; @@ -15,12 +16,11 @@ use Pod::Simple::HTML; -sub x ($) { Pod::Simple::HTML->_out( +sub x { Pod::Simple::HTML->_out( #sub{ $_[0]->bare_output(1) }, "=pod\n\n$_[0]", ) } - # make sure empty file => empty output ok 1; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/htmlbat.t perl-5.34.0/cpan/Pod-Simple/t/htmlbat.t --- perl-5.32.1/cpan/Pod-Simple/t/htmlbat.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/htmlbat.t 2020-10-24 18:43:34.000000000 +0000 @@ -8,6 +8,7 @@ # Time-stamp: "2004-05-24 02:07:47 ADT" use strict; +use warnings; my $DEBUG = 0; #sub Pod::Simple::HTMLBatch::DEBUG () {5}; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/items02.t perl-5.34.0/cpan/Pod-Simple/t/items02.t --- perl-5.32.1/cpan/Pod-Simple/t/items02.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/items02.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,9 +7,17 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 4 }; +BEGIN { + require FindBin; + unshift @INC, $FindBin::Bin . '/lib'; + require helpers; + helpers->import; +} + my $d; #use Pod::Simple::Debug (\$d,0); @@ -18,7 +26,6 @@ use Pod::Simple::DumpAsXML; use Pod::Simple::XMLOutStream; print "# Pod::Simple version $Pod::Simple::VERSION\n"; -sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) } my $x = 'Pod::Simple::XMLOutStream'; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/items.t perl-5.34.0/cpan/Pod-Simple/t/items.t --- perl-5.32.1/cpan/Pod-Simple/t/items.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/items.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,18 +6,25 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 24 }; my $d; #use Pod::Simple::Debug (\$d,0); +BEGIN { + require FindBin; + unshift @INC, $FindBin::Bin . '/lib'; + require helpers; + helpers->import; +} + ok 1; use Pod::Simple::DumpAsXML; use Pod::Simple::XMLOutStream; print "# Pod::Simple version $Pod::Simple::VERSION\n"; -sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) } my $x = 'Pod::Simple::XMLOutStream'; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/itemstar.t perl-5.34.0/cpan/Pod-Simple/t/itemstar.t --- perl-5.32.1/cpan/Pod-Simple/t/itemstar.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/itemstar.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,9 +6,16 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 6 }; +BEGIN { + require FindBin; + unshift @INC, $FindBin::Bin . '/lib'; + require helpers; + helpers->import; +} #my $d; #use Pod::Simple::Debug (3); @@ -17,7 +24,6 @@ use Pod::Simple::DumpAsXML; use Pod::Simple::XMLOutStream; print "# Pod::Simple version $Pod::Simple::VERSION\n"; -sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) } my $x = 'Pod::Simple::XMLOutStream'; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/JustPod02.t perl-5.34.0/cpan/Pod-Simple/t/JustPod02.t --- perl-5.32.1/cpan/Pod-Simple/t/JustPod02.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/JustPod02.t 2020-10-24 18:43:34.000000000 +0000 @@ -78,6 +78,10 @@ =head4 Level "4 C +=head5 Level "5 B + +=head6 Level "6 I + Now try again with B F. =head1 This C a "level 1" heading @@ -96,6 +100,14 @@ Text. +=head5 Level "5 B + +Text. + +=head6 Level "6 I + +Text. + =head1 LINKS These are all taken from the Pod::Parser tests. diff -Nru perl-5.32.1/cpan/Pod-Simple/t/JustPod_corpus.t perl-5.34.0/cpan/Pod-Simple/t/JustPod_corpus.t --- perl-5.32.1/cpan/Pod-Simple/t/JustPod_corpus.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/JustPod_corpus.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,6 @@ # Testing Pod::Simple::JustPod against *.pod in /t use strict; +use warnings; BEGIN { if($ENV{PERL_CORE}) { @@ -58,99 +59,129 @@ plan tests => scalar @test_files; } -foreach my $file (@test_files) { - my $parser = Pod::Simple::JustPod->new(); - $parser->complain_stderr(0); +@test_files = sort @test_files; - my $input; - open( IN , '<:raw' , $file ) or die "$file: $!"; - $input .= $_ while (); - close( IN ); - - my $output; - $parser->output_string( \$output ); - $parser->parse_string_document( $input ); - - if ($parser->any_errata_seen()) { - pass("Skip '$file' because of pod errors"); - next if "$]" lt '5.010.001'; # note() not found in earlier versions - my $errata = $parser->errata_seen(); - foreach my $line_number (sort { $a <=> $b } keys %$errata) { - foreach my $err_msg (sort @{$errata->{$line_number}}) { - note("$file: $line_number: $err_msg"); - } +my @skip_on_windows = qw{ + t/corpus/8859_7.pod + t/corpus/laozi38p.pod + t/junk2.pod + t/perlcyg.pod + t/perlfaq.pod + t/perlvar.pod + t/search60/A/x.pod + t/search60/B/X.pod + t/testlib1/hinkhonk/Glunk.pod + t/testlib1/pod/perlflif.pod + t/testlib1/pod/perlthng.pod + t/testlib1/squaa/Glunk.pod + t/testlib1/zikzik.pod + t/testlib2/hinkhonk/Glunk.pod + t/testlib2/pod/perlthng.pod + t/testlib2/pod/perlzuk.pod + t/testlib2/pods/perlzoned.pod + t/testlib2/squaa/Wowo.pod +}; + +my $is_windows = $^O eq 'MSWin32'; +foreach my $file (@test_files) { + SKIP: { + if ( $is_windows && grep { $_ eq $file } @skip_on_windows ) { + skip "$file needs investigation on windows", 1; + } + + my $parser = Pod::Simple::JustPod->new(); + $parser->complain_stderr(0); + + my $input; + open( IN , '<:raw' , $file ) or die "$file: $!"; + $input .= $_ while (); + close( IN ); + + my $output; + $parser->output_string( \$output ); + $parser->parse_string_document( $input ); + + if ($parser->any_errata_seen()) { + pass("Skip '$file' because of pod errors"); + next if "$]" lt '5.010.001'; # note() not found in earlier versions + my $errata = $parser->errata_seen(); + foreach my $line_number (sort { $a <=> $b } keys %$errata) { + foreach my $err_msg (sort @{$errata->{$line_number}}) { + note("$file: $line_number: $err_msg"); + } + } + next; } - next; - } - my $encoding = $parser->encoding(); - if (defined $encoding) { - eval { require Encode; }; - $input = Encode::decode($parser->encoding(), $input); - } + my $encoding = $parser->encoding(); + if (defined $encoding) { + eval { require Encode; }; + $input = Encode::decode($parser->encoding(), $input); + } - my @input = split "\n", $input; - my $stripped_input = ""; - while (defined ($_ = shift @input)) { - if (/ ^ = [a-z]+ /x) { - my $line = "$_\n"; + my @input = split "\n", $input; + my $stripped_input = ""; + while (defined ($_ = shift @input)) { + if (/ ^ = [a-z]+ /x) { + my $line = "$_\n"; - if ($stripped_input eq "" || $_ !~ /^=pod/) { - $stripped_input .= $line; - } - while (defined ($_ = shift @input)) { - $stripped_input .= "$_\n"; - last if / ^ =cut /x; + if ($stripped_input eq "" || $_ !~ /^=pod/) { + $stripped_input .= $line; + } + while (defined ($_ = shift @input)) { + $stripped_input .= "$_\n"; + last if / ^ =cut /x; + } } } - } - $stripped_input =~ s/ ^ =cut \n (.) /$1/mgx; + $stripped_input =~ s/ ^ =cut \n (.) /$1/mgx; - $input = $stripped_input if $stripped_input ne ""; - if ($input !~ / ^ =pod /x) { - $input =~ s/ ^ \s+ //x; - $input = "=pod\n\n$input"; - } - if ($input !~ / =cut $ /x) { - $input =~ s/ \s+ $ //x; - $input .= "\n\n=cut\n"; - } - - my $msg = "got expected output for $file"; - if ($output eq $input) { - pass($msg); - } - elsif ($ENV{PERL_TEST_DIFF}) { - fail($msg); - require File::Temp; - my $orig_file = File::Temp->new(); - local $/ = "\n"; - chomp $input; - print $orig_file $input, "\n"; - close $orig_file || die "Can't close orig_file: $!"; - - chomp $output; - my $parsed_file = File::Temp->new(); - print $parsed_file $output, "\n"; - close $parsed_file || die "Can't close parsed_file"; - - my $diff = File::Temp->new(); - system("$ENV{PERL_TEST_DIFF} $orig_file $parsed_file > $diff"); - - open my $fh, "<", $diff || die "Can't open $diff"; - my @diffs = <$fh>; - diag(@diffs); - } - else { - eval { require Text::Diff; }; - if ($@) { - is($output, $input, $msg); - diag("Set environment variable PERL_TEST_DIFF=diff_tool or install" - . " Text::Diff to see just the differences."); - } - else { - fail($msg); - diag Text::Diff::diff(\$input, \$output, { STYLE => 'Unified' }); - } + $input = $stripped_input if $stripped_input ne ""; + if ($input !~ / ^ =pod /x) { + $input =~ s/ ^ \s+ //x; + $input = "=pod\n\n$input"; + } + if ($input !~ / =cut $ /x) { + $input =~ s/ \s+ $ //x; + $input .= "\n\n=cut\n"; + } + + my $msg = "got expected output for $file"; + if ($output eq $input) { + pass($msg); + } + elsif ($ENV{PERL_TEST_DIFF}) { + fail($msg); + require File::Temp; + my $orig_file = File::Temp->new(); + local $/ = "\n"; + chomp $input; + print $orig_file $input, "\n"; + close $orig_file || die "Can't close orig_file: $!"; + + chomp $output; + my $parsed_file = File::Temp->new(); + print $parsed_file $output, "\n"; + close $parsed_file || die "Can't close parsed_file"; + + my $diff = File::Temp->new(); + system("$ENV{PERL_TEST_DIFF} $orig_file $parsed_file > $diff"); + + open my $fh, "<", $diff || die "Can't open $diff"; + my @diffs = <$fh>; + diag(@diffs); + } + else { + eval { require Text::Diff; }; + if ($@) { + is($output, $input, $msg); + diag("Set environment variable PERL_TEST_DIFF=diff_tool or install" + . " Text::Diff to see just the differences."); + } + else { + fail($msg); + diag Text::Diff::diff(\$input, \$output, { STYLE => 'Unified' }); + } + } } } diff -Nru perl-5.32.1/cpan/Pod-Simple/t/lib/helpers.pm perl-5.34.0/cpan/Pod-Simple/t/lib/helpers.pm --- perl-5.32.1/cpan/Pod-Simple/t/lib/helpers.pm 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/lib/helpers.pm 2020-10-24 18:43:34.000000000 +0000 @@ -0,0 +1,18 @@ +#!perl + +package helpers; + +use strict; +use warnings; + +use Exporter; + +our @ISA = qw{Exporter}; + +our @EXPORT_OK = qw(e f); +our @EXPORT = qw{e}; + +sub e { Pod::Simple::DumpAsXML->_duo(@_) }; +sub f { Pod::Simple::DumpAsXML->_duo(@_) }; + +1; \ No newline at end of file diff -Nru perl-5.32.1/cpan/Pod-Simple/t/linkclas.t perl-5.34.0/cpan/Pod-Simple/t/linkclas.t --- perl-5.32.1/cpan/Pod-Simple/t/linkclas.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/linkclas.t 2020-10-24 18:43:34.000000000 +0000 @@ -9,6 +9,7 @@ ### Test the basic sanity of the link-section treelet class use strict; +use warnings; use Test; BEGIN { plan tests => 8 }; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/output.t perl-5.34.0/cpan/Pod-Simple/t/output.t --- perl-5.32.1/cpan/Pod-Simple/t/output.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/output.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,6 +7,7 @@ } use strict; +use warnings; use lib '../lib'; use Test::More tests => 36; #use Test::More 'no_plan'; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/puller.t perl-5.34.0/cpan/Pod-Simple/t/puller.t --- perl-5.32.1/cpan/Pod-Simple/t/puller.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/puller.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 136 }; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/pulltitl.t perl-5.34.0/cpan/Pod-Simple/t/pulltitl.t --- perl-5.32.1/cpan/Pod-Simple/t/pulltitl.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/pulltitl.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 117 }; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/reinit.t perl-5.34.0/cpan/Pod-Simple/t/reinit.t --- perl-5.32.1/cpan/Pod-Simple/t/reinit.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/reinit.t 2020-10-24 18:43:34.000000000 +0000 @@ -8,6 +8,7 @@ use lib '../lib'; use strict; +use warnings; use Test; BEGIN { plan tests => 5 }; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/render.t perl-5.34.0/cpan/Pod-Simple/t/render.t --- perl-5.32.1/cpan/Pod-Simple/t/render.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/render.t 2020-10-24 18:43:34.000000000 +0000 @@ -8,6 +8,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 26 }; use Pod::Simple::TextContent; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/rtf_utf8.t perl-5.34.0/cpan/Pod-Simple/t/rtf_utf8.t --- perl-5.32.1/cpan/Pod-Simple/t/rtf_utf8.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/rtf_utf8.t 2020-10-24 18:43:34.000000000 +0000 @@ -9,6 +9,7 @@ my $expected = join "", ; use strict; +use warnings; use lib '../lib'; use Test::More; use File::Spec; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/search05.t perl-5.34.0/cpan/Pod-Simple/t/search05.t --- perl-5.32.1/cpan/Pod-Simple/t/search05.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/search05.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } use strict; +use warnings; use Pod::Simple::Search; use Test; BEGIN { plan tests => 16 } diff -Nru perl-5.32.1/cpan/Pod-Simple/t/search10.t perl-5.34.0/cpan/Pod-Simple/t/search10.t --- perl-5.32.1/cpan/Pod-Simple/t/search10.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/search10.t 2020-10-24 18:43:34.000000000 +0000 @@ -8,6 +8,7 @@ # Time-stamp: "2004-05-23 22:38:58 ADT" use strict; +use warnings; #sub Pod::Simple::Search::DEBUG () {5}; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/search12.t perl-5.34.0/cpan/Pod-Simple/t/search12.t --- perl-5.32.1/cpan/Pod-Simple/t/search12.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/search12.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } use strict; +use warnings; use Pod::Simple::Search; use Test; BEGIN { plan tests => 11 } diff -Nru perl-5.32.1/cpan/Pod-Simple/t/search20.t perl-5.34.0/cpan/Pod-Simple/t/search20.t --- perl-5.32.1/cpan/Pod-Simple/t/search20.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/search20.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } use strict; +use warnings; use Pod::Simple::Search; use Test; BEGIN { plan tests => 11 } diff -Nru perl-5.32.1/cpan/Pod-Simple/t/search22.t perl-5.34.0/cpan/Pod-Simple/t/search22.t --- perl-5.32.1/cpan/Pod-Simple/t/search22.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/search22.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } use strict; +use warnings; use Pod::Simple::Search; use Test; BEGIN { plan tests => 15 } diff -Nru perl-5.32.1/cpan/Pod-Simple/t/search25.t perl-5.34.0/cpan/Pod-Simple/t/search25.t --- perl-5.32.1/cpan/Pod-Simple/t/search25.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/search25.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } use strict; +use warnings; #sub Pod::Simple::Search::DEBUG () {5}; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/search26.t perl-5.34.0/cpan/Pod-Simple/t/search26.t --- perl-5.32.1/cpan/Pod-Simple/t/search26.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/search26.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } use strict; +use warnings; use Pod::Simple::Search; use Test; BEGIN { plan tests => 5 } diff -Nru perl-5.32.1/cpan/Pod-Simple/t/search27.t perl-5.34.0/cpan/Pod-Simple/t/search27.t --- perl-5.32.1/cpan/Pod-Simple/t/search27.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/search27.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } use strict; +use warnings; use Pod::Simple::Search; use Test; BEGIN { plan tests => 10 } diff -Nru perl-5.32.1/cpan/Pod-Simple/t/search28.t perl-5.34.0/cpan/Pod-Simple/t/search28.t --- perl-5.32.1/cpan/Pod-Simple/t/search28.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/search28.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } use strict; +use warnings; use Pod::Simple::Search; use Test; BEGIN { plan tests => 4 } diff -Nru perl-5.32.1/cpan/Pod-Simple/t/search29.t perl-5.34.0/cpan/Pod-Simple/t/search29.t --- perl-5.32.1/cpan/Pod-Simple/t/search29.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/search29.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } use strict; +use warnings; use Pod::Simple::Search; use Test; BEGIN { plan tests => 4 } diff -Nru perl-5.32.1/cpan/Pod-Simple/t/search50.t perl-5.34.0/cpan/Pod-Simple/t/search50.t --- perl-5.32.1/cpan/Pod-Simple/t/search50.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/search50.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,7 @@ } } use strict; +use warnings; #sub Pod::Simple::Search::DEBUG () {5}; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/search60.t perl-5.34.0/cpan/Pod-Simple/t/search60.t --- perl-5.32.1/cpan/Pod-Simple/t/search60.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/search60.t 2020-10-24 18:43:34.000000000 +0000 @@ -5,7 +5,8 @@ } } -use strict; +use strict; +use warnings; use Pod::Simple::Search; use Test; BEGIN { plan tests => 4 } diff -Nru perl-5.32.1/cpan/Pod-Simple/t/stree.t perl-5.34.0/cpan/Pod-Simple/t/stree.t --- perl-5.32.1/cpan/Pod-Simple/t/stree.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/stree.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,6 +1,7 @@ use strict; +use warnings; use Test; BEGIN { plan tests => 33 }; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/strpvbtm.t perl-5.34.0/cpan/Pod-Simple/t/strpvbtm.t --- perl-5.32.1/cpan/Pod-Simple/t/strpvbtm.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/strpvbtm.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,6 +7,7 @@ } use strict; +use warnings; use lib '../lib'; use Test::More tests => 103; #use Test::More 'no_plan'; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/tiedfh.t perl-5.34.0/cpan/Pod-Simple/t/tiedfh.t --- perl-5.32.1/cpan/Pod-Simple/t/tiedfh.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/tiedfh.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,6 +7,7 @@ } use strict; +use warnings; use Test; BEGIN { plan tests => 8 }; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/verbatim.t perl-5.34.0/cpan/Pod-Simple/t/verbatim.t --- perl-5.32.1/cpan/Pod-Simple/t/verbatim.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/verbatim.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,6 +1,9 @@ # Testing verbatim sections use strict; +use warnings; + use Test; + BEGIN { plan tests => 31 }; #use Pod::Simple::Debug (6); @@ -10,14 +13,17 @@ use Pod::Simple::DumpAsXML; use Pod::Simple::XMLOutStream; print "# Pod::Simple version $Pod::Simple::VERSION\n"; -sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) } + +BEGIN { + require FindBin; + unshift @INC, $FindBin::Bin . '/lib'; + require helpers; + helpers->import; +} &ok( e "", "" ); &ok( e "\n", "", ); - - - &ok( e "\n=pod\n\n foo bar baz", "\n=pod\n\n foo bar baz" ); &ok( e "\n=pod\n\n foo bar baz", "\n=pod\n\n foo bar baz\n" ); diff -Nru perl-5.32.1/cpan/Pod-Simple/t/verb_fmt.t perl-5.34.0/cpan/Pod-Simple/t/verb_fmt.t --- perl-5.32.1/cpan/Pod-Simple/t/verb_fmt.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/verb_fmt.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,6 @@ # Testing verbatim formatted sections use strict; +use warnings; use Test; BEGIN { plan tests => 62 }; @@ -11,8 +12,9 @@ use Pod::Simple::XMLOutStream; print "# Pod::Simple version $Pod::Simple::VERSION\n"; -sub e ($$) { Pod::Simple::DumpAsXML->_duo(\&without_vf, @_) } -sub ev ($$) { Pod::Simple::DumpAsXML->_duo(\&with_vf, @_) } + +sub e { Pod::Simple::DumpAsXML->_duo(\&without_vf, @_) } +sub ev { Pod::Simple::DumpAsXML->_duo(\&with_vf, @_) } sub with_vf { $_[0]-> accept_codes('VerbatimFormatted') } sub without_vf { $_[0]->unaccept_codes('VerbatimFormatted') } diff -Nru perl-5.32.1/cpan/Pod-Simple/t/xhtml01.t perl-5.34.0/cpan/Pod-Simple/t/xhtml01.t --- perl-5.32.1/cpan/Pod-Simple/t/xhtml01.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/xhtml01.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,8 +7,9 @@ } use strict; +use warnings; use lib '../lib'; -use Test::More tests => 62; +use Test::More tests => 64; #use Test::More 'no_plan'; use_ok('Pod::Simple::XHTML') or exit; @@ -51,7 +52,15 @@ $parser->parse_string_document( "=head4 Zort & Zog!" ); is($results, qq{

Zort & Zog!

\n\n}, "head4 level output"); -sub x ($;&) { +initialize($parser, $results); +$parser->parse_string_document( "=head5 I think so Brain, but..." ); +is($results, qq{
I think so Brain, but...
\n\n}, "head5 level output"); + +initialize($parser, $results); +$parser->parse_string_document( "=head6 Narf!" ); +is($results, qq{
Narf!
\n\n}, "head6 level output"); + +sub x { my $code = $_[1]; Pod::Simple::XHTML->_out( sub { $code->($_[0]) if $code }, diff -Nru perl-5.32.1/cpan/Pod-Simple/t/xhtml05.t perl-5.34.0/cpan/Pod-Simple/t/xhtml05.t --- perl-5.32.1/cpan/Pod-Simple/t/xhtml05.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/xhtml05.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,6 +7,7 @@ } use strict; +use warnings; use lib '../lib'; use Test::More tests => 6; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/xhtml10.t perl-5.34.0/cpan/Pod-Simple/t/xhtml10.t --- perl-5.32.1/cpan/Pod-Simple/t/xhtml10.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/xhtml10.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,8 +7,9 @@ } use strict; +use warnings; use lib '../lib'; -use Test::More tests => 60; +use Test::More tests => 62; #use Test::More 'no_plan'; use_ok('Pod::Simple::XHTML') or exit; @@ -202,6 +203,48 @@ EOF +initialize($parser, $results); +ok $parser->parse_string_document( "=head1 Foo\n\n=head2 Bar\n\n=head3 Baz\n\n=head4 Howdy\n\n=head5 Deep\n\n=head6 Thought" ), + 'Parse six levels'; +is $results, <<'EOF', 'Should have the six-level index'; + + +

Foo

+ +

Bar

+ +

Baz

+ +

Howdy

+ +
Deep
+ +
Thought
+ +EOF + initialize($parser, $results); ok $parser->parse_string_document( "=head1 Foo\n\n=head2 Bar\n\n=head2 Baz" ), 'Parse 1/2'; diff -Nru perl-5.32.1/cpan/Pod-Simple/t/x_nixer.t perl-5.34.0/cpan/Pod-Simple/t/x_nixer.t --- perl-5.32.1/cpan/Pod-Simple/t/x_nixer.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Simple/t/x_nixer.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,6 +1,7 @@ use strict; +use warnings; use Test; BEGIN { plan tests => 11 }; diff -Nru perl-5.32.1/cpan/Pod-Usage/lib/Pod/Usage.pm perl-5.34.0/cpan/Pod-Usage/lib/Pod/Usage.pm --- perl-5.32.1/cpan/Pod-Usage/lib/Pod/Usage.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Usage/lib/Pod/Usage.pm 2020-10-24 18:43:34.000000000 +0000 @@ -9,19 +9,19 @@ ############################################################################# package Pod::Usage; -use strict; -use vars qw($VERSION @ISA @EXPORT); -$VERSION = '1.69'; ## Current version of this package +use strict; require 5.006; ## requires this Perl version or later -#use diagnostics; use Carp; use Config; use Exporter; use File::Spec; -@EXPORT = qw(&pod2usage); +our $VERSION = '2.01'; + +our @EXPORT = qw(&pod2usage); +our @ISA; BEGIN { $Pod::Usage::Formatter ||= 'Pod::Text'; eval "require $Pod::Usage::Formatter"; @@ -103,13 +103,13 @@ my @paths = (ref $pathspec) ? @$pathspec : split($pathsep, $pathspec); for my $dirname (@paths) { - $_ = File::Spec->catfile($dirname, $basename) if length; + $_ = length($dirname) ? File::Spec->catfile($dirname, $basename) : $basename; last if (-e $_) && ($opts{'-input'} = $_); } } ## Now create a pod reader and constrain it to the desired sections. - my $parser = new Pod::Usage(USAGE_OPTIONS => \%opts); + my $parser = Pod::Usage->new(USAGE_OPTIONS => \%opts); if ($opts{'-verbose'} == 0) { $parser->select('(?:SYNOPSIS|USAGE)\s*'); } @@ -130,8 +130,8 @@ ## Check for perldoc my $progpath = $opts{'-perldoc'} ? $opts{'-perldoc'} : - File::Spec->catfile($Config{scriptdirexp} - || $Config{scriptdir}, 'perldoc'); + File::Spec->catfile($Config{scriptdirexp} || $Config{scriptdir}, + 'perldoc'); my $version = sprintf("%vd",$^V); if ($Config{versiononly} and $Config{startperl} =~ /\Q$version\E$/ ) { @@ -159,9 +159,17 @@ push @perldoc_cmd, ('-F', $f); unshift @perldoc_cmd, $opts{'-perlcmd'} if $opts{'-perlcmd'}; system(@perldoc_cmd); + # RT16091: fall back to more if perldoc failed if($?) { - # RT16091: fall back to more if perldoc failed - system(($Config{pager} || $ENV{PAGER} || '/bin/more'), $1); + # RT131844: prefer PAGER env + my $pager = $ENV{PAGER} || $Config{pager}; + if(defined($pager) && length($pager)) { + my $cmd = $pager . ' ' . ($^O =~ /win/i ? qq("$f") : quotemeta($f)); + system($cmd); + } else { + # the most humble fallback; should work (at least) on *nix and Win + system('more', $f); + } } } else { croak "Unspecified input file or insecure argument.\n"; @@ -275,7 +283,12 @@ sub seq_i { return $_[1] } # Override Pod::Text->cmd_i to return just "arg", not "*arg*". # newer version based on Pod::Simple -sub cmd_i { return $_[2] } +sub cmd_i { + my $self = shift; + # RT121489: highlighting should be there with Termcap + return $self->SUPER::cmd_i(@_) if $self->isa('Pod::Text::Termcap'); + return $_[1]; +} # This overrides the Pod::Text method to do something very akin to what # Pod::Select did as well as the work done below by preprocess_paragraph. @@ -373,13 +386,15 @@ __END__ +=for stopwords pod2usage verboseness downcased MSWin32 Marek Rouchal Christiansen ATOOMIC rjbs McDougall + =head1 NAME -Pod::Usage - print a usage message from embedded pod documentation +Pod::Usage - extracts POD documentation and shows usage information =head1 SYNOPSIS - use Pod::Usage + use Pod::Usage; my $message_text = "This text precedes the usage message."; my $exit_status = 2; ## The exit status to use @@ -391,13 +406,13 @@ pod2usage($exit_status); pod2usage( { -message => $message_text , - -exitval => $exit_status , - -verbose => $verbose_level, + -exitval => $exit_status , + -verbose => $verbose_level, -output => $filehandle } ); pod2usage( -msg => $message_text , - -exitval => $exit_status , - -verbose => $verbose_level, + -exitval => $exit_status , + -verbose => $verbose_level, -output => $filehandle ); pod2usage( -verbose => 2, @@ -443,39 +458,39 @@ =item C<-msg> I The text of a message to print immediately prior to printing the -program's usage message. +program's usage message. =item C<-exitval> I The desired exit status to pass to the B function. -This should be an integer, or else the string "NOEXIT" to +This should be an integer, or else the string C to indicate that control should simply be returned without terminating the invoking process. =item C<-verbose> I The desired level of "verboseness" to use when printing the usage message. -If the value is 0, then only the "SYNOPSIS" section of the pod documentation -is printed. If the value is 1, then the "SYNOPSIS" section, along with any -section entitled "OPTIONS", "ARGUMENTS", or "OPTIONS AND ARGUMENTS" is -printed. If the corresponding value is 2 or more then the entire manpage is -printed, using L if available; otherwise L is used for -the formatting. For better readability, the all-capital headings are -downcased, e.g. C =E C. +If the value is 0, then only the "SYNOPSIS" and/or "USAGE" sections of the +pod documentation are printed. If the value is 1, then the "SYNOPSIS" and/or +"USAGE" sections, along with any section entitled "OPTIONS", "ARGUMENTS", or +"OPTIONS AND ARGUMENTS" is printed. If the corresponding value is 2 or more +then the entire manpage is printed, using L if available; otherwise +L is used for the formatting. For better readability, the +all-capital headings are downcased, e.g. C =E C. The special verbosity level 99 requires to also specify the -sections parameter; then these sections are extracted and printed. =item C<-sections> I -There are two ways to specify the selection. Either a string (scalar) +There are two ways to specify the selection. Either a string (scalar) representing a selection regexp for sections to be printed when -verbose is set to 99, e.g. "NAME|SYNOPSIS|DESCRIPTION|VERSION" With the above regexp all content following (and including) any of the -given C<=head1> headings will be shown. It is possible to restrict the +given C<=head1> headings will be shown. It is possible to restrict the output to particular subsections only, e.g.: "DESCRIPTION/Algorithm" @@ -484,7 +499,7 @@ the C<=head1 DESCRIPTION> section. The regexp binding is stronger than the section separator, such that e.g.: - "DESCRIPTION|OPTIONS|ENVIORNMENT/Caveats" + "DESCRIPTION|OPTIONS|ENVIRONMENT/Caveats" will print any C<=head2 Caveats> section (only) within any of the three C<=head1> sections. @@ -494,7 +509,7 @@ pod2usage(-verbose => 99, -sections => [ qw(DESCRIPTION DESCRIPTION/Introduction) ] ); -This will print only the content of C<=head1 DESCRIPTION> and the +This will print only the content of C<=head1 DESCRIPTION> and the C<=head2 Introduction> sections, but no other C<=head2>, and no other C<=head1> either. @@ -528,17 +543,16 @@ =item C<-noperldoc> -By default, Pod::Usage will call L when -verbose >= 2 is -specified. This does not work well e.g. if the script was packed -with L. The -noperldoc option suppresses the external call to -L and uses the simple text formatter (L) to -output the POD. +By default, Pod::Usage will call L when -verbose >= 2 is specified. +This does not work well e.g. if the script was packed with L. This option +suppresses the external call to L and uses the simple text formatter +(L) to output the POD. =item C<-perlcmd> By default, Pod::Usage will call L when -verbose >= 2 is specified. In case of special or unusual Perl installations, -the -perlcmd option may be used to supply the path to a L executable +this option may be used to supply the path to a L executable which should run L. =item C<-perldoc> I @@ -551,7 +565,7 @@ =item C<-perldocopt> I By default, Pod::Usage will call L when -verbose >= 2 is specified. -The -perldocopt option may be used to supply options to L. The +This option may be used to supply options to L. The string may contain several, space-separated options. =back @@ -659,7 +673,7 @@ =back -B doesn't force the above conventions upon you, but it will +B does not force the above conventions upon you, but it will use them by default if you don't expressly tell it to do otherwise. The ability of B to accept a single number or a string makes it convenient to use as an innocent looking error message handling function: @@ -848,7 +862,7 @@ By default, B will use C<$0> as the path to the pod input file. Unfortunately, not all systems on which Perl runs will set C<$0> -properly (although if C<$0> isn't found, B will search +properly (although if C<$0> is not found, B will search C<$ENV{PATH}> or else the list specified by the C<-pathlist> option). If this is the case for your system, you may need to explicitly specify the path to the pod docs for the invoking script using something @@ -865,23 +879,45 @@ use FindBin; pod2usage(-input => $FindBin::Bin . "/" . $FindBin::Script); -=head1 AUTHOR +=head1 SUPPORT + +This module is managed in a GitHub repository, +L Feel free to fork and contribute, or +to clone and send patches! + +Please use L to file a bug +report. The previous ticketing system, +L, is deprecated for +this package. + +More general questions or discussion about POD should be sent to the +C mail list. Send an empty email to +C to subscribe. -Please report bugs using L. +=head1 AUTHOR Marek Rouchal Emarekr@cpan.orgE +Nicolas R Enicolas@atoomic.orgE + Brad Appleton Ebradapp@enteract.comE Based on code for B written by Tom Christiansen Etchrist@mox.perl.comE +=head1 LICENSE + +Pod::Usage (the distribution) is licensed under the same terms as Perl. + =head1 ACKNOWLEDGMENTS +Nicolas R (ATOOMIC) for setting up the Github repo and modernizing this +package. + rjbs for refactoring Pod::Usage to not use Pod::Parser any more. -Steven McDougall Eswmcd@world.std.comE for his help and patience -with re-writing this manpage. +Steven McDougall Eswmcd@world.std.comE for his help and patience with +re-writing this manpage. =head1 SEE ALSO diff -Nru perl-5.32.1/cpan/Pod-Usage/scripts/pod2usage.PL perl-5.34.0/cpan/Pod-Usage/scripts/pod2usage.PL --- perl-5.32.1/cpan/Pod-Usage/scripts/pod2usage.PL 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Usage/scripts/pod2usage.PL 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,7 @@ #!/usr/local/bin/perl +use strict; +use warnings; use Config; use File::Basename qw(&basename &dirname); use Cwd; @@ -13,19 +15,19 @@ # This forces PL files to create target in same directory as PL file. # This is so that make depend always knows where to find PL derivatives. -$origdir = cwd; -chdir(dirname($0)); -$file = basename($0, '.PL'); +my $origdir = cwd; +chdir( dirname($0) ); +my $file = basename( $0, '.PL' ); $file .= '.com' if $^O eq 'VMS'; -open OUT,">$file" or die "Can't create $file: $!"; +open my $OUT, '>', $file or die "Can't create $file: $!"; print "Extracting $file (with variable substitutions)\n"; # In this section, perl variables will be expanded during extraction. # You can use $Config{...} to use Configure variables. -print OUT <<"!GROK!THIS!"; +print {$OUT} <<"!GROK!THIS!"; $Config{'startperl'} eval 'exec perl -S \$0 "\$@"' if 0; @@ -33,7 +35,7 @@ # In the following, perl variables are not expanded during extraction. -print OUT <<'!NO!SUBS!'; +print {$OUT} <<'!NO!SUBS!'; ############################################################################# # pod2usage -- command to print usage messages from embedded pod docs @@ -120,7 +122,9 @@ =item I The pathname of a file containing pod documentation to be output in -usage message format (defaults to standard input). +usage message format. If omitted, standard input is read - but the +output is then formatted with L only - unless a specific +formatter has been specified with B<-formatter>. =back @@ -135,7 +139,8 @@ =head1 SEE ALSO -L, L +L, L, L, L, +L =head1 AUTHOR @@ -174,14 +179,13 @@ ## Dont default to STDIN if connected to a terminal pod2usage(2) if ((@ARGV == 0) && (-t STDIN)); -@ARGV = ('-') unless (@ARGV); if (@ARGV > 1) { print STDERR "pod2usage: Too many filenames given\n\n"; pod2usage(2); } my %usage = (); -$usage{-input} = shift(@ARGV); +$usage{-input} = shift(@ARGV) || \*STDIN; $usage{-exitval} = $options{'exit'} if (defined $options{'exit'}); $usage{-output} = $options{'output'} if (defined $options{'output'}); $usage{-verbose} = $options{'verbose'} if (defined $options{'verbose'}); @@ -193,7 +197,7 @@ !NO!SUBS! -close OUT or die "Can't close $file: $!"; -chmod 0755, $file or die "Can't reset permissions for $file: $!\n"; +close($OUT) or die "Can't close $file: $!"; +chmod( 0755, $file ) or die "Can't reset permissions for $file: $!\n"; exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':'; -chdir $origdir; +chdir($origdir); diff -Nru perl-5.32.1/cpan/Pod-Usage/t/inc/Pod/InputObjects.pm perl-5.34.0/cpan/Pod-Usage/t/inc/Pod/InputObjects.pm --- perl-5.32.1/cpan/Pod-Usage/t/inc/Pod/InputObjects.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Usage/t/inc/Pod/InputObjects.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,942 +1,941 @@ -############################################################################# -# Pod/InputObjects.pm -- package which defines objects for input streams -# and paragraphs and commands when parsing POD docs. -# -# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved. -# This file is part of "PodParser". PodParser is free software; -# you can redistribute it and/or modify it under the same terms -# as Perl itself. -############################################################################# - -package Pod::InputObjects; -use strict; - -use vars qw($VERSION); -$VERSION = '1.60'; ## Current version of this package -require 5.005; ## requires this Perl version or later - -############################################################################# - -=head1 NAME - -Pod::InputObjects - objects representing POD input paragraphs, commands, etc. - -=head1 SYNOPSIS - - use Pod::InputObjects; - -=head1 REQUIRES - -perl5.004, Carp - -=head1 EXPORTS - -Nothing. - -=head1 DESCRIPTION - -This module defines some basic input objects used by B when -reading and parsing POD text from an input source. The following objects -are defined: - -=begin __PRIVATE__ - -=over 4 - -=item package B - -An object corresponding to a source of POD input text. It is mostly a -wrapper around a filehandle or C-type object (or anything -that implements the C method) which keeps track of some -additional information relevant to the parsing of PODs. - -=back - -=end __PRIVATE__ - -=over 4 - -=item package B - -An object corresponding to a paragraph of POD input text. It may be a -plain paragraph, a verbatim paragraph, or a command paragraph (see -L). - -=item package B - -An object corresponding to an interior sequence command from the POD -input text (see L). - -=item package B - -An object corresponding to a tree of parsed POD text. Each "node" in -a parse-tree (or I) is either a text-string or a reference to -a B object. The nodes appear in the parse-tree -in the order in which they were parsed from left-to-right. - -=back - -Each of these input objects are described in further detail in the -sections which follow. - -=cut - -############################################################################# - -package Pod::InputSource; - -##--------------------------------------------------------------------------- - -=begin __PRIVATE__ - -=head1 B - -This object corresponds to an input source or stream of POD -documentation. When parsing PODs, it is necessary to associate and store -certain context information with each input source. All of this -information is kept together with the stream itself in one of these -C objects. Each such object is merely a wrapper around -an C object of some kind (or at least something that -implements the C method). They have the following -methods/attributes: - -=end __PRIVATE__ - -=cut - -##--------------------------------------------------------------------------- - -=begin __PRIVATE__ - -=head2 B - - my $pod_input1 = Pod::InputSource->new(-handle => $filehandle); - my $pod_input2 = new Pod::InputSource(-handle => $filehandle, - -name => $name); - my $pod_input3 = new Pod::InputSource(-handle => \*STDIN); - my $pod_input4 = Pod::InputSource->new(-handle => \*STDIN, - -name => "(STDIN)"); - -This is a class method that constructs a C object and -returns a reference to the new input source object. It takes one or more -keyword arguments in the form of a hash. The keyword C<-handle> is -required and designates the corresponding input handle. The keyword -C<-name> is optional and specifies the name associated with the input -handle (typically a file name). - -=end __PRIVATE__ - -=cut - -sub new { - ## Determine if we were called via an object-ref or a classname - my $this = shift; - my $class = ref($this) || $this; - - ## Any remaining arguments are treated as initial values for the - ## hash that is used to represent this object. Note that we default - ## certain values by specifying them *before* the arguments passed. - ## If they are in the argument list, they will override the defaults. - my $self = { -name => '(unknown)', - -handle => undef, - -was_cutting => 0, - @_ }; - - ## Bless ourselves into the desired class and perform any initialization - bless $self, $class; - return $self; -} - -##--------------------------------------------------------------------------- - -=begin __PRIVATE__ - -=head2 B - - my $filename = $pod_input->name(); - $pod_input->name($new_filename_to_use); - -This method gets/sets the name of the input source (usually a filename). -If no argument is given, it returns a string containing the name of -the input source; otherwise it sets the name of the input source to the -contents of the given argument. - -=end __PRIVATE__ - -=cut - -sub name { - (@_ > 1) and $_[0]->{'-name'} = $_[1]; - return $_[0]->{'-name'}; -} - -## allow 'filename' as an alias for 'name' -*filename = \&name; - -##--------------------------------------------------------------------------- - -=begin __PRIVATE__ - -=head2 B - - my $handle = $pod_input->handle(); - -Returns a reference to the handle object from which input is read (the -one used to contructed this input source object). - -=end __PRIVATE__ - -=cut - -sub handle { - return $_[0]->{'-handle'}; -} - -##--------------------------------------------------------------------------- - -=begin __PRIVATE__ - -=head2 B - - print "Yes.\n" if ($pod_input->was_cutting()); - -The value of the C state (that the B method would -have returned) immediately before any input was read from this input -stream. After all input from this stream has been read, the C -state is restored to this value. - -=end __PRIVATE__ - -=cut - -sub was_cutting { - (@_ > 1) and $_[0]->{-was_cutting} = $_[1]; - return $_[0]->{-was_cutting}; -} - -##--------------------------------------------------------------------------- - -############################################################################# - -package Pod::Paragraph; - -##--------------------------------------------------------------------------- - -=head1 B - -An object representing a paragraph of POD input text. -It has the following methods/attributes: - -=cut - -##--------------------------------------------------------------------------- - -=head2 Pod::Paragraph-EB - - my $pod_para1 = Pod::Paragraph->new(-text => $text); - my $pod_para2 = Pod::Paragraph->new(-name => $cmd, - -text => $text); - my $pod_para3 = new Pod::Paragraph(-text => $text); - my $pod_para4 = new Pod::Paragraph(-name => $cmd, - -text => $text); - my $pod_para5 = Pod::Paragraph->new(-name => $cmd, - -text => $text, - -file => $filename, - -line => $line_number); - -This is a class method that constructs a C object and -returns a reference to the new paragraph object. It may be given one or -two keyword arguments. The C<-text> keyword indicates the corresponding -text of the POD paragraph. The C<-name> keyword indicates the name of -the corresponding POD command, such as C or C (it should -I contain the C<=> prefix); this is needed only if the POD -paragraph corresponds to a command paragraph. The C<-file> and C<-line> -keywords indicate the filename and line number corresponding to the -beginning of the paragraph - -=cut - -sub new { - ## Determine if we were called via an object-ref or a classname - my $this = shift; - my $class = ref($this) || $this; - - ## Any remaining arguments are treated as initial values for the - ## hash that is used to represent this object. Note that we default - ## certain values by specifying them *before* the arguments passed. - ## If they are in the argument list, they will override the defaults. - my $self = { - -name => undef, - -text => (@_ == 1) ? shift : undef, - -file => '', - -line => 0, - -prefix => '=', - -separator => ' ', - -ptree => [], - @_ - }; - - ## Bless ourselves into the desired class and perform any initialization - bless $self, $class; - return $self; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_para-EB - - my $para_cmd = $pod_para->cmd_name(); - -If this paragraph is a command paragraph, then this method will return -the name of the command (I any leading C<=> prefix). - -=cut - -sub cmd_name { - (@_ > 1) and $_[0]->{'-name'} = $_[1]; - return $_[0]->{'-name'}; -} - -## let name() be an alias for cmd_name() -*name = \&cmd_name; - -##--------------------------------------------------------------------------- - -=head2 $pod_para-EB - - my $para_text = $pod_para->text(); - -This method will return the corresponding text of the paragraph. - -=cut - -sub text { - (@_ > 1) and $_[0]->{'-text'} = $_[1]; - return $_[0]->{'-text'}; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_para-EB - - my $raw_pod_para = $pod_para->raw_text(); - -This method will return the I text of the POD paragraph, exactly -as it appeared in the input. - -=cut - -sub raw_text { - return $_[0]->{'-text'} unless (defined $_[0]->{'-name'}); - return $_[0]->{'-prefix'} . $_[0]->{'-name'} . - $_[0]->{'-separator'} . $_[0]->{'-text'}; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_para-EB - - my $prefix = $pod_para->cmd_prefix(); - -If this paragraph is a command paragraph, then this method will return -the prefix used to denote the command (which should be the string "=" -or "=="). - -=cut - -sub cmd_prefix { - return $_[0]->{'-prefix'}; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_para-EB - - my $separator = $pod_para->cmd_separator(); - -If this paragraph is a command paragraph, then this method will return -the text used to separate the command name from the rest of the -paragraph (if any). - -=cut - -sub cmd_separator { - return $_[0]->{'-separator'}; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_para-EB - - my $ptree = $pod_parser->parse_text( $pod_para->text() ); - $pod_para->parse_tree( $ptree ); - $ptree = $pod_para->parse_tree(); - -This method will get/set the corresponding parse-tree of the paragraph's text. - -=cut - -sub parse_tree { - (@_ > 1) and $_[0]->{'-ptree'} = $_[1]; - return $_[0]->{'-ptree'}; -} - -## let ptree() be an alias for parse_tree() -*ptree = \&parse_tree; - -##--------------------------------------------------------------------------- - -=head2 $pod_para-EB - - my ($filename, $line_number) = $pod_para->file_line(); - my $position = $pod_para->file_line(); - -Returns the current filename and line number for the paragraph -object. If called in a list context, it returns a list of two -elements: first the filename, then the line number. If called in -a scalar context, it returns a string containing the filename, followed -by a colon (':'), followed by the line number. - -=cut - -sub file_line { - my @loc = ($_[0]->{'-file'} || '', - $_[0]->{'-line'} || 0); - return (wantarray) ? @loc : join(':', @loc); -} - -##--------------------------------------------------------------------------- - -############################################################################# - -package Pod::InteriorSequence; - -##--------------------------------------------------------------------------- - -=head1 B - -An object representing a POD interior sequence command. -It has the following methods/attributes: - -=cut - -##--------------------------------------------------------------------------- - -=head2 Pod::InteriorSequence-EB - - my $pod_seq1 = Pod::InteriorSequence->new(-name => $cmd - -ldelim => $delimiter); - my $pod_seq2 = new Pod::InteriorSequence(-name => $cmd, - -ldelim => $delimiter); - my $pod_seq3 = new Pod::InteriorSequence(-name => $cmd, - -ldelim => $delimiter, - -file => $filename, - -line => $line_number); - - my $pod_seq4 = new Pod::InteriorSequence(-name => $cmd, $ptree); - my $pod_seq5 = new Pod::InteriorSequence($cmd, $ptree); - -This is a class method that constructs a C object -and returns a reference to the new interior sequence object. It should -be given two keyword arguments. The C<-ldelim> keyword indicates the -corresponding left-delimiter of the interior sequence (e.g. 'E'). -The C<-name> keyword indicates the name of the corresponding interior -sequence command, such as C or C or C. The C<-file> and -C<-line> keywords indicate the filename and line number corresponding -to the beginning of the interior sequence. If the C<$ptree> argument is -given, it must be the last argument, and it must be either string, or -else an array-ref suitable for passing to B (or -it may be a reference to a Pod::ParseTree object). - -=cut - -sub new { - ## Determine if we were called via an object-ref or a classname - my $this = shift; - my $class = ref($this) || $this; - - ## See if first argument has no keyword - if (((@_ <= 2) or (@_ % 2)) and $_[0] !~ /^-\w/) { - ## Yup - need an implicit '-name' before first parameter - unshift @_, '-name'; - } - - ## See if odd number of args - if ((@_ % 2) != 0) { - ## Yup - need an implicit '-ptree' before the last parameter - splice @_, $#_, 0, '-ptree'; - } - - ## Any remaining arguments are treated as initial values for the - ## hash that is used to represent this object. Note that we default - ## certain values by specifying them *before* the arguments passed. - ## If they are in the argument list, they will override the defaults. - my $self = { - -name => (@_ == 1) ? $_[0] : undef, - -file => '', - -line => 0, - -ldelim => '<', - -rdelim => '>', - @_ - }; - - ## Initialize contents if they havent been already - my $ptree = $self->{'-ptree'} || new Pod::ParseTree(); - if ( ref $ptree =~ /^(ARRAY)?$/ ) { - ## We have an array-ref, or a normal scalar. Pass it as an - ## an argument to the ptree-constructor - $ptree = new Pod::ParseTree($1 ? [$ptree] : $ptree); - } - $self->{'-ptree'} = $ptree; - - ## Bless ourselves into the desired class and perform any initialization - bless $self, $class; - return $self; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-EB - - my $seq_cmd = $pod_seq->cmd_name(); - -The name of the interior sequence command. - -=cut - -sub cmd_name { - (@_ > 1) and $_[0]->{'-name'} = $_[1]; - return $_[0]->{'-name'}; -} - -## let name() be an alias for cmd_name() -*name = \&cmd_name; - -##--------------------------------------------------------------------------- - -## Private subroutine to set the parent pointer of all the given -## children that are interior-sequences to be $self - -sub _set_child2parent_links { - my ($self, @children) = @_; - ## Make sure any sequences know who their parent is - for (@children) { - next unless (length and ref and ref ne 'SCALAR'); - if (UNIVERSAL::isa($_, 'Pod::InteriorSequence') or - UNIVERSAL::can($_, 'nested')) - { - $_->nested($self); - } - } -} - -## Private subroutine to unset child->parent links - -sub _unset_child2parent_links { - my $self = shift; - $self->{'-parent_sequence'} = undef; - my $ptree = $self->{'-ptree'}; - for (@$ptree) { - next unless (length and ref and ref ne 'SCALAR'); - $_->_unset_child2parent_links() - if UNIVERSAL::isa($_, 'Pod::InteriorSequence'); - } -} - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-EB - - $pod_seq->prepend($text); - $pod_seq1->prepend($pod_seq2); - -Prepends the given string or parse-tree or sequence object to the parse-tree -of this interior sequence. - -=cut - -sub prepend { - my $self = shift; - $self->{'-ptree'}->prepend(@_); - _set_child2parent_links($self, @_); - return $self; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-EB - - $pod_seq->append($text); - $pod_seq1->append($pod_seq2); - -Appends the given string or parse-tree or sequence object to the parse-tree -of this interior sequence. - -=cut - -sub append { - my $self = shift; - $self->{'-ptree'}->append(@_); - _set_child2parent_links($self, @_); - return $self; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-EB - - $outer_seq = $pod_seq->nested || print "not nested"; - -If this interior sequence is nested inside of another interior -sequence, then the outer/parent sequence that contains it is -returned. Otherwise C is returned. - -=cut - -sub nested { - my $self = shift; - (@_ == 1) and $self->{'-parent_sequence'} = shift; - return $self->{'-parent_sequence'} || undef; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-EB - - my $seq_raw_text = $pod_seq->raw_text(); - -This method will return the I text of the POD interior sequence, -exactly as it appeared in the input. - -=cut - -sub raw_text { - my $self = shift; - my $text = $self->{'-name'} . $self->{'-ldelim'}; - for ( $self->{'-ptree'}->children ) { - $text .= (ref $_) ? $_->raw_text : $_; - } - $text .= $self->{'-rdelim'}; - return $text; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-EB - - my $ldelim = $pod_seq->left_delimiter(); - -The leftmost delimiter beginning the argument text to the interior -sequence (should be "<"). - -=cut - -sub left_delimiter { - (@_ > 1) and $_[0]->{'-ldelim'} = $_[1]; - return $_[0]->{'-ldelim'}; -} - -## let ldelim() be an alias for left_delimiter() -*ldelim = \&left_delimiter; - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-EB - -The rightmost delimiter beginning the argument text to the interior -sequence (should be ">"). - -=cut - -sub right_delimiter { - (@_ > 1) and $_[0]->{'-rdelim'} = $_[1]; - return $_[0]->{'-rdelim'}; -} - -## let rdelim() be an alias for right_delimiter() -*rdelim = \&right_delimiter; - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-EB - - my $ptree = $pod_parser->parse_text($paragraph_text); - $pod_seq->parse_tree( $ptree ); - $ptree = $pod_seq->parse_tree(); - -This method will get/set the corresponding parse-tree of the interior -sequence's text. - -=cut - -sub parse_tree { - (@_ > 1) and $_[0]->{'-ptree'} = $_[1]; - return $_[0]->{'-ptree'}; -} - -## let ptree() be an alias for parse_tree() -*ptree = \&parse_tree; - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-EB - - my ($filename, $line_number) = $pod_seq->file_line(); - my $position = $pod_seq->file_line(); - -Returns the current filename and line number for the interior sequence -object. If called in a list context, it returns a list of two -elements: first the filename, then the line number. If called in -a scalar context, it returns a string containing the filename, followed -by a colon (':'), followed by the line number. - -=cut - -sub file_line { - my @loc = ($_[0]->{'-file'} || '', - $_[0]->{'-line'} || 0); - return (wantarray) ? @loc : join(':', @loc); -} - -##--------------------------------------------------------------------------- - -=head2 Pod::InteriorSequence::B - -This method performs any necessary cleanup for the interior-sequence. -If you override this method then it is B that you invoke -the parent method from within your own method, otherwise -I - -=cut - -sub DESTROY { - ## We need to get rid of all child->parent pointers throughout the - ## tree so their reference counts will go to zero and they can be - ## garbage-collected - _unset_child2parent_links(@_); -} - -##--------------------------------------------------------------------------- - -############################################################################# - -package Pod::ParseTree; - -##--------------------------------------------------------------------------- - -=head1 B - -This object corresponds to a tree of parsed POD text. As POD text is -scanned from left to right, it is parsed into an ordered list of -text-strings and B objects (in order of -appearance). A B object corresponds to this list of -strings and sequences. Each interior sequence in the parse-tree may -itself contain a parse-tree (since interior sequences may be nested). - -=cut - -##--------------------------------------------------------------------------- - -=head2 Pod::ParseTree-EB - - my $ptree1 = Pod::ParseTree->new; - my $ptree2 = new Pod::ParseTree; - my $ptree4 = Pod::ParseTree->new($array_ref); - my $ptree3 = new Pod::ParseTree($array_ref); - -This is a class method that constructs a C object and -returns a reference to the new parse-tree. If a single-argument is given, -it must be a reference to an array, and is used to initialize the root -(top) of the parse tree. - -=cut - -sub new { - ## Determine if we were called via an object-ref or a classname - my $this = shift; - my $class = ref($this) || $this; - - my $self = (@_ == 1 and ref $_[0]) ? $_[0] : []; - - ## Bless ourselves into the desired class and perform any initialization - bless $self, $class; - return $self; -} - -##--------------------------------------------------------------------------- - -=head2 $ptree-EB - - my $top_node = $ptree->top(); - $ptree->top( $top_node ); - $ptree->top( @children ); - -This method gets/sets the top node of the parse-tree. If no arguments are -given, it returns the topmost node in the tree (the root), which is also -a B. If it is given a single argument that is a reference, -then the reference is assumed to a parse-tree and becomes the new top node. -Otherwise, if arguments are given, they are treated as the new list of -children for the top node. - -=cut - -sub top { - my $self = shift; - if (@_ > 0) { - @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_; - } - return $self; -} - -## let parse_tree() & ptree() be aliases for the 'top' method -*parse_tree = *ptree = \⊤ - -##--------------------------------------------------------------------------- - -=head2 $ptree-EB - -This method gets/sets the children of the top node in the parse-tree. -If no arguments are given, it returns the list (array) of children -(each of which should be either a string or a B. -Otherwise, if arguments are given, they are treated as the new list of -children for the top node. - -=cut - -sub children { - my $self = shift; - if (@_ > 0) { - @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_; - } - return @{ $self }; -} - -##--------------------------------------------------------------------------- - -=head2 $ptree-EB - -This method prepends the given text or parse-tree to the current parse-tree. -If the first item on the parse-tree is text and the argument is also text, -then the text is prepended to the first item (not added as a separate string). -Otherwise the argument is added as a new string or parse-tree I -the current one. - -=cut - -use vars qw(@ptree); ## an alias used for performance reasons - -sub prepend { - my $self = shift; - local *ptree = $self; - for (@_) { - next unless length; - if (@ptree && !(ref $ptree[0]) && !(ref $_)) { - $ptree[0] = $_ . $ptree[0]; - } - else { - unshift @ptree, $_; - } - } -} - -##--------------------------------------------------------------------------- - -=head2 $ptree-EB - -This method appends the given text or parse-tree to the current parse-tree. -If the last item on the parse-tree is text and the argument is also text, -then the text is appended to the last item (not added as a separate string). -Otherwise the argument is added as a new string or parse-tree I -the current one. - -=cut - -sub append { - my $self = shift; - local *ptree = $self; - my $can_append = @ptree && !(ref $ptree[-1]); - for (@_) { - if (ref) { - push @ptree, $_; - } - elsif(!length) { - next; - } - elsif ($can_append) { - $ptree[-1] .= $_; - } - else { - push @ptree, $_; - } - } -} - -=head2 $ptree-EB - - my $ptree_raw_text = $ptree->raw_text(); - -This method will return the I text of the POD parse-tree -exactly as it appeared in the input. - -=cut - -sub raw_text { - my $self = shift; - my $text = ''; - for ( @$self ) { - $text .= (ref $_) ? $_->raw_text : $_; - } - return $text; -} - -##--------------------------------------------------------------------------- - -## Private routines to set/unset child->parent links - -sub _unset_child2parent_links { - my $self = shift; - local *ptree = $self; - for (@ptree) { - next unless (defined and length and ref and ref ne 'SCALAR'); - $_->_unset_child2parent_links() - if UNIVERSAL::isa($_, 'Pod::InteriorSequence'); - } -} - -sub _set_child2parent_links { - ## nothing to do, Pod::ParseTrees cant have parent pointers -} - -=head2 Pod::ParseTree::B - -This method performs any necessary cleanup for the parse-tree. -If you override this method then it is B -that you invoke the parent method from within your own method, -otherwise I - -=cut - -sub DESTROY { - ## We need to get rid of all child->parent pointers throughout the - ## tree so their reference counts will go to zero and they can be - ## garbage-collected - _unset_child2parent_links(@_); -} - -############################################################################# - -=head1 SEE ALSO - -B is part of the L distribution. - -See L, L - -=head1 AUTHOR - -Please report bugs using L. - -Brad Appleton Ebradapp@enteract.comE - -=cut - -1; +############################################################################# +# Pod/InputObjects.pm -- package which defines objects for input streams +# and paragraphs and commands when parsing POD docs. +# +# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved. +# This file is part of "PodParser". PodParser is free software; +# you can redistribute it and/or modify it under the same terms +# as Perl itself. +############################################################################# + +package Pod::InputObjects; +use strict; +use warnings; + +use vars qw($VERSION); +$VERSION = '1.60'; ## Current version of this package +require 5.005; ## requires this Perl version or later + +############################################################################# + +=head1 NAME + +Pod::InputObjects - objects representing POD input paragraphs, commands, etc. + +=head1 SYNOPSIS + + use Pod::InputObjects; + +=head1 REQUIRES + +perl5.004, Carp + +=head1 EXPORTS + +Nothing. + +=head1 DESCRIPTION + +This module defines some basic input objects used by B when +reading and parsing POD text from an input source. The following objects +are defined: + +=begin __PRIVATE__ + +=over 4 + +=item package B + +An object corresponding to a source of POD input text. It is mostly a +wrapper around a filehandle or C-type object (or anything +that implements the C method) which keeps track of some +additional information relevant to the parsing of PODs. + +=back + +=end __PRIVATE__ + +=over 4 + +=item package B + +An object corresponding to a paragraph of POD input text. It may be a +plain paragraph, a verbatim paragraph, or a command paragraph (see +L). + +=item package B + +An object corresponding to an interior sequence command from the POD +input text (see L). + +=item package B + +An object corresponding to a tree of parsed POD text. Each "node" in +a parse-tree (or I) is either a text-string or a reference to +a B object. The nodes appear in the parse-tree +in the order in which they were parsed from left-to-right. + +=back + +Each of these input objects are described in further detail in the +sections which follow. + +=cut + +############################################################################# + +package Pod::InputSource; + +##--------------------------------------------------------------------------- + +=begin __PRIVATE__ + +=head1 B + +This object corresponds to an input source or stream of POD +documentation. When parsing PODs, it is necessary to associate and store +certain context information with each input source. All of this +information is kept together with the stream itself in one of these +C objects. Each such object is merely a wrapper around +an C object of some kind (or at least something that +implements the C method). They have the following +methods/attributes: + +=end __PRIVATE__ + +=cut + +##--------------------------------------------------------------------------- + +=begin __PRIVATE__ + +=head2 B + + my $pod_input1 = Pod::InputSource->new(-handle => $filehandle); + my $pod_input2 = Pod::InputSource->new(-handle => $filehandle, + -name => $name); + my $pod_input3 = Pod::InputSource->new(-handle => \*STDIN); + my $pod_input4 = Pod::InputSource->new(-handle => \*STDIN, + -name => "(STDIN)"); + +This is a class method that constructs a C object and +returns a reference to the new input source object. It takes one or more +keyword arguments in the form of a hash. The keyword C<-handle> is +required and designates the corresponding input handle. The keyword +C<-name> is optional and specifies the name associated with the input +handle (typically a file name). + +=end __PRIVATE__ + +=cut + +sub new { + ## Determine if we were called via an object-ref or a classname + my $this = shift; + my $class = ref($this) || $this; + + ## Any remaining arguments are treated as initial values for the + ## hash that is used to represent this object. Note that we default + ## certain values by specifying them *before* the arguments passed. + ## If they are in the argument list, they will override the defaults. + my $self = { -name => '(unknown)', + -handle => undef, + -was_cutting => 0, + @_ }; + + ## Bless ourselves into the desired class and perform any initialization + bless $self, $class; + return $self; +} + +##--------------------------------------------------------------------------- + +=begin __PRIVATE__ + +=head2 B + + my $filename = $pod_input->name(); + $pod_input->name($new_filename_to_use); + +This method gets/sets the name of the input source (usually a filename). +If no argument is given, it returns a string containing the name of +the input source; otherwise it sets the name of the input source to the +contents of the given argument. + +=end __PRIVATE__ + +=cut + +sub name { + (@_ > 1) and $_[0]->{'-name'} = $_[1]; + return $_[0]->{'-name'}; +} + +## allow 'filename' as an alias for 'name' +*filename = \&name; + +##--------------------------------------------------------------------------- + +=begin __PRIVATE__ + +=head2 B + + my $handle = $pod_input->handle(); + +Returns a reference to the handle object from which input is read (the +one used to contructed this input source object). + +=end __PRIVATE__ + +=cut + +sub handle { + return $_[0]->{'-handle'}; +} + +##--------------------------------------------------------------------------- + +=begin __PRIVATE__ + +=head2 B + + print "Yes.\n" if ($pod_input->was_cutting()); + +The value of the C state (that the B method would +have returned) immediately before any input was read from this input +stream. After all input from this stream has been read, the C +state is restored to this value. + +=end __PRIVATE__ + +=cut + +sub was_cutting { + (@_ > 1) and $_[0]->{-was_cutting} = $_[1]; + return $_[0]->{-was_cutting}; +} + +##--------------------------------------------------------------------------- + +############################################################################# + +package Pod::Paragraph; + +##--------------------------------------------------------------------------- + +=head1 B + +An object representing a paragraph of POD input text. +It has the following methods/attributes: + +=cut + +##--------------------------------------------------------------------------- + +=head2 Pod::Paragraph-EB + + my $pod_para1 = Pod::Paragraph->new(-text => $text); + my $pod_para2 = Pod::Paragraph->new(-name => $cmd, + -text => $text); + my $pod_para3 = Pod::Paragraph->new(-text => $text); + my $pod_para4 = Pod::Paragraph->new(-name => $cmd, + -text => $text); + my $pod_para5 = Pod::Paragraph->new(-name => $cmd, + -text => $text, + -file => $filename, + -line => $line_number); + +This is a class method that constructs a C object and +returns a reference to the new paragraph object. It may be given one or +two keyword arguments. The C<-text> keyword indicates the corresponding +text of the POD paragraph. The C<-name> keyword indicates the name of +the corresponding POD command, such as C or C (it should +I contain the C<=> prefix); this is needed only if the POD +paragraph corresponds to a command paragraph. The C<-file> and C<-line> +keywords indicate the filename and line number corresponding to the +beginning of the paragraph + +=cut + +sub new { + ## Determine if we were called via an object-ref or a classname + my $this = shift; + my $class = ref($this) || $this; + + ## Any remaining arguments are treated as initial values for the + ## hash that is used to represent this object. Note that we default + ## certain values by specifying them *before* the arguments passed. + ## If they are in the argument list, they will override the defaults. + my $self = { + -name => undef, + -text => (@_ == 1) ? shift : undef, + -file => '', + -line => 0, + -prefix => '=', + -separator => ' ', + -ptree => [], + @_ + }; + + ## Bless ourselves into the desired class and perform any initialization + bless $self, $class; + return $self; +} + +##--------------------------------------------------------------------------- + +=head2 $pod_para-EB + + my $para_cmd = $pod_para->cmd_name(); + +If this paragraph is a command paragraph, then this method will return +the name of the command (I any leading C<=> prefix). + +=cut + +sub cmd_name { + (@_ > 1) and $_[0]->{'-name'} = $_[1]; + return $_[0]->{'-name'}; +} + +## let name() be an alias for cmd_name() +*name = \&cmd_name; + +##--------------------------------------------------------------------------- + +=head2 $pod_para-EB + + my $para_text = $pod_para->text(); + +This method will return the corresponding text of the paragraph. + +=cut + +sub text { + (@_ > 1) and $_[0]->{'-text'} = $_[1]; + return $_[0]->{'-text'}; +} + +##--------------------------------------------------------------------------- + +=head2 $pod_para-EB + + my $raw_pod_para = $pod_para->raw_text(); + +This method will return the I text of the POD paragraph, exactly +as it appeared in the input. + +=cut + +sub raw_text { + return $_[0]->{'-text'} unless (defined $_[0]->{'-name'}); + return $_[0]->{'-prefix'} . $_[0]->{'-name'} . + $_[0]->{'-separator'} . $_[0]->{'-text'}; +} + +##--------------------------------------------------------------------------- + +=head2 $pod_para-EB + + my $prefix = $pod_para->cmd_prefix(); + +If this paragraph is a command paragraph, then this method will return +the prefix used to denote the command (which should be the string "=" +or "=="). + +=cut + +sub cmd_prefix { + return $_[0]->{'-prefix'}; +} + +##--------------------------------------------------------------------------- + +=head2 $pod_para-EB + + my $separator = $pod_para->cmd_separator(); + +If this paragraph is a command paragraph, then this method will return +the text used to separate the command name from the rest of the +paragraph (if any). + +=cut + +sub cmd_separator { + return $_[0]->{'-separator'}; +} + +##--------------------------------------------------------------------------- + +=head2 $pod_para-EB + + my $ptree = $pod_parser->parse_text( $pod_para->text() ); + $pod_para->parse_tree( $ptree ); + $ptree = $pod_para->parse_tree(); + +This method will get/set the corresponding parse-tree of the paragraph's text. + +=cut + +sub parse_tree { + (@_ > 1) and $_[0]->{'-ptree'} = $_[1]; + return $_[0]->{'-ptree'}; +} + +## let ptree() be an alias for parse_tree() +*ptree = \&parse_tree; + +##--------------------------------------------------------------------------- + +=head2 $pod_para-EB + + my ($filename, $line_number) = $pod_para->file_line(); + my $position = $pod_para->file_line(); + +Returns the current filename and line number for the paragraph +object. If called in a list context, it returns a list of two +elements: first the filename, then the line number. If called in +a scalar context, it returns a string containing the filename, followed +by a colon (':'), followed by the line number. + +=cut + +sub file_line { + my @loc = ($_[0]->{'-file'} || '', + $_[0]->{'-line'} || 0); + return (wantarray) ? @loc : join(':', @loc); +} + +##--------------------------------------------------------------------------- + +############################################################################# + +package Pod::InteriorSequence; + +##--------------------------------------------------------------------------- + +=head1 B + +An object representing a POD interior sequence command. +It has the following methods/attributes: + +=cut + +##--------------------------------------------------------------------------- + +=head2 Pod::InteriorSequence-EB + + my $pod_seq1 = Pod::InteriorSequence->new(-name => $cmd + -ldelim => $delimiter); + my $pod_seq2 = Pod::InteriorSequence->new(-name => $cmd, + -ldelim => $delimiter); + my $pod_seq3 = Pod::InteriorSequence->new(-name => $cmd, + -ldelim => $delimiter, + -file => $filename, + -line => $line_number); + + my $pod_seq4 = Pod::InteriorSequence->new(-name => $cmd, $ptree); + my $pod_seq5 = Pod::InteriorSequence->new($cmd, $ptree); + +This is a class method that constructs a C object +and returns a reference to the new interior sequence object. It should +be given two keyword arguments. The C<-ldelim> keyword indicates the +corresponding left-delimiter of the interior sequence (e.g. 'E'). +The C<-name> keyword indicates the name of the corresponding interior +sequence command, such as C or C or C. The C<-file> and +C<-line> keywords indicate the filename and line number corresponding +to the beginning of the interior sequence. If the C<$ptree> argument is +given, it must be the last argument, and it must be either string, or +else an array-ref suitable for passing to B (or +it may be a reference to a Pod::ParseTree object). + +=cut + +sub new { + ## Determine if we were called via an object-ref or a classname + my $this = shift; + my $class = ref($this) || $this; + + ## See if first argument has no keyword + if (((@_ <= 2) or (@_ % 2)) and $_[0] !~ /^-\w/) { + ## Yup - need an implicit '-name' before first parameter + unshift @_, '-name'; + } + + ## See if odd number of args + if ((@_ % 2) != 0) { + ## Yup - need an implicit '-ptree' before the last parameter + splice @_, $#_, 0, '-ptree'; + } + + ## Any remaining arguments are treated as initial values for the + ## hash that is used to represent this object. Note that we default + ## certain values by specifying them *before* the arguments passed. + ## If they are in the argument list, they will override the defaults. + my $self = { + -name => (@_ == 1) ? $_[0] : undef, + -file => '', + -line => 0, + -ldelim => '<', + -rdelim => '>', + @_ + }; + + ## Initialize contents if they havent been already + my $ptree = $self->{'-ptree'} || Pod::ParseTree->new(); + if ( ref $ptree =~ /^(ARRAY)?$/ ) { + ## We have an array-ref, or a normal scalar. Pass it as an + ## an argument to the ptree-constructor + $ptree = Pod::ParseTree->new($1 ? [$ptree] : $ptree); + } + $self->{'-ptree'} = $ptree; + + ## Bless ourselves into the desired class and perform any initialization + bless $self, $class; + return $self; +} + +##--------------------------------------------------------------------------- + +=head2 $pod_seq-EB + + my $seq_cmd = $pod_seq->cmd_name(); + +The name of the interior sequence command. + +=cut + +sub cmd_name { + (@_ > 1) and $_[0]->{'-name'} = $_[1]; + return $_[0]->{'-name'}; +} + +## let name() be an alias for cmd_name() +*name = \&cmd_name; + +##--------------------------------------------------------------------------- + +## Private subroutine to set the parent pointer of all the given +## children that are interior-sequences to be $self + +sub _set_child2parent_links { + my ($self, @children) = @_; + ## Make sure any sequences know who their parent is + for (@children) { + next unless (length and ref and ref ne 'SCALAR'); + if (UNIVERSAL::isa($_, 'Pod::InteriorSequence') or + UNIVERSAL::can($_, 'nested')) + { + $_->nested($self); + } + } +} + +## Private subroutine to unset child->parent links + +sub _unset_child2parent_links { + my $self = shift; + $self->{'-parent_sequence'} = undef; + my $ptree = $self->{'-ptree'}; + for (@$ptree) { + next unless (length and ref and ref ne 'SCALAR'); + $_->_unset_child2parent_links() + if UNIVERSAL::isa($_, 'Pod::InteriorSequence'); + } +} + +##--------------------------------------------------------------------------- + +=head2 $pod_seq-EB + + $pod_seq->prepend($text); + $pod_seq1->prepend($pod_seq2); + +Prepends the given string or parse-tree or sequence object to the parse-tree +of this interior sequence. + +=cut + +sub prepend { + my $self = shift; + $self->{'-ptree'}->prepend(@_); + _set_child2parent_links($self, @_); + return $self; +} + +##--------------------------------------------------------------------------- + +=head2 $pod_seq-EB + + $pod_seq->append($text); + $pod_seq1->append($pod_seq2); + +Appends the given string or parse-tree or sequence object to the parse-tree +of this interior sequence. + +=cut + +sub append { + my $self = shift; + $self->{'-ptree'}->append(@_); + _set_child2parent_links($self, @_); + return $self; +} + +##--------------------------------------------------------------------------- + +=head2 $pod_seq-EB + + $outer_seq = $pod_seq->nested || print "not nested"; + +If this interior sequence is nested inside of another interior +sequence, then the outer/parent sequence that contains it is +returned. Otherwise C is returned. + +=cut + +sub nested { + my $self = shift; + (@_ == 1) and $self->{'-parent_sequence'} = shift; + return $self->{'-parent_sequence'} || undef; +} + +##--------------------------------------------------------------------------- + +=head2 $pod_seq-EB + + my $seq_raw_text = $pod_seq->raw_text(); + +This method will return the I text of the POD interior sequence, +exactly as it appeared in the input. + +=cut + +sub raw_text { + my $self = shift; + my $text = $self->{'-name'} . $self->{'-ldelim'}; + for ( $self->{'-ptree'}->children ) { + $text .= (ref $_) ? $_->raw_text : $_; + } + $text .= $self->{'-rdelim'}; + return $text; +} + +##--------------------------------------------------------------------------- + +=head2 $pod_seq-EB + + my $ldelim = $pod_seq->left_delimiter(); + +The leftmost delimiter beginning the argument text to the interior +sequence (should be "<"). + +=cut + +sub left_delimiter { + (@_ > 1) and $_[0]->{'-ldelim'} = $_[1]; + return $_[0]->{'-ldelim'}; +} + +## let ldelim() be an alias for left_delimiter() +*ldelim = \&left_delimiter; + +##--------------------------------------------------------------------------- + +=head2 $pod_seq-EB + +The rightmost delimiter beginning the argument text to the interior +sequence (should be ">"). + +=cut + +sub right_delimiter { + (@_ > 1) and $_[0]->{'-rdelim'} = $_[1]; + return $_[0]->{'-rdelim'}; +} + +## let rdelim() be an alias for right_delimiter() +*rdelim = \&right_delimiter; + +##--------------------------------------------------------------------------- + +=head2 $pod_seq-EB + + my $ptree = $pod_parser->parse_text($paragraph_text); + $pod_seq->parse_tree( $ptree ); + $ptree = $pod_seq->parse_tree(); + +This method will get/set the corresponding parse-tree of the interior +sequence's text. + +=cut + +sub parse_tree { + (@_ > 1) and $_[0]->{'-ptree'} = $_[1]; + return $_[0]->{'-ptree'}; +} + +## let ptree() be an alias for parse_tree() +*ptree = \&parse_tree; + +##--------------------------------------------------------------------------- + +=head2 $pod_seq-EB + + my ($filename, $line_number) = $pod_seq->file_line(); + my $position = $pod_seq->file_line(); + +Returns the current filename and line number for the interior sequence +object. If called in a list context, it returns a list of two +elements: first the filename, then the line number. If called in +a scalar context, it returns a string containing the filename, followed +by a colon (':'), followed by the line number. + +=cut + +sub file_line { + my @loc = ($_[0]->{'-file'} || '', + $_[0]->{'-line'} || 0); + return (wantarray) ? @loc : join(':', @loc); +} + +##--------------------------------------------------------------------------- + +=head2 Pod::InteriorSequence::B + +This method performs any necessary cleanup for the interior-sequence. +If you override this method then it is B that you invoke +the parent method from within your own method, otherwise +I + +=cut + +sub DESTROY { + ## We need to get rid of all child->parent pointers throughout the + ## tree so their reference counts will go to zero and they can be + ## garbage-collected + _unset_child2parent_links(@_); +} + +##--------------------------------------------------------------------------- + +############################################################################# + +package Pod::ParseTree; + +##--------------------------------------------------------------------------- + +=head1 B + +This object corresponds to a tree of parsed POD text. As POD text is +scanned from left to right, it is parsed into an ordered list of +text-strings and B objects (in order of +appearance). A B object corresponds to this list of +strings and sequences. Each interior sequence in the parse-tree may +itself contain a parse-tree (since interior sequences may be nested). + +=cut + +##--------------------------------------------------------------------------- + +=head2 Pod::ParseTree-EB + + my $ptree1 = Pod::ParseTree->new; + my $ptree2 = Pod::ParseTree->new($array_ref); + +This is a class method that constructs a C object and +returns a reference to the new parse-tree. If a single-argument is given, +it must be a reference to an array, and is used to initialize the root +(top) of the parse tree. + +=cut + +sub new { + ## Determine if we were called via an object-ref or a classname + my $this = shift; + my $class = ref($this) || $this; + + my $self = (@_ == 1 and ref $_[0]) ? $_[0] : []; + + ## Bless ourselves into the desired class and perform any initialization + bless $self, $class; + return $self; +} + +##--------------------------------------------------------------------------- + +=head2 $ptree-EB + + my $top_node = $ptree->top(); + $ptree->top( $top_node ); + $ptree->top( @children ); + +This method gets/sets the top node of the parse-tree. If no arguments are +given, it returns the topmost node in the tree (the root), which is also +a B. If it is given a single argument that is a reference, +then the reference is assumed to a parse-tree and becomes the new top node. +Otherwise, if arguments are given, they are treated as the new list of +children for the top node. + +=cut + +sub top { + my $self = shift; + if (@_ > 0) { + @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_; + } + return $self; +} + +## let parse_tree() & ptree() be aliases for the 'top' method +*parse_tree = *ptree = \⊤ + +##--------------------------------------------------------------------------- + +=head2 $ptree-EB + +This method gets/sets the children of the top node in the parse-tree. +If no arguments are given, it returns the list (array) of children +(each of which should be either a string or a B. +Otherwise, if arguments are given, they are treated as the new list of +children for the top node. + +=cut + +sub children { + my $self = shift; + if (@_ > 0) { + @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_; + } + return @{ $self }; +} + +##--------------------------------------------------------------------------- + +=head2 $ptree-EB + +This method prepends the given text or parse-tree to the current parse-tree. +If the first item on the parse-tree is text and the argument is also text, +then the text is prepended to the first item (not added as a separate string). +Otherwise the argument is added as a new string or parse-tree I +the current one. + +=cut + +use vars qw(@ptree); ## an alias used for performance reasons + +sub prepend { + my $self = shift; + local *ptree = $self; + for (@_) { + next unless length; + if (@ptree && !(ref $ptree[0]) && !(ref $_)) { + $ptree[0] = $_ . $ptree[0]; + } + else { + unshift @ptree, $_; + } + } +} + +##--------------------------------------------------------------------------- + +=head2 $ptree-EB + +This method appends the given text or parse-tree to the current parse-tree. +If the last item on the parse-tree is text and the argument is also text, +then the text is appended to the last item (not added as a separate string). +Otherwise the argument is added as a new string or parse-tree I +the current one. + +=cut + +sub append { + my $self = shift; + local *ptree = $self; + my $can_append = @ptree && !(ref $ptree[-1]); + for (@_) { + if (ref) { + push @ptree, $_; + } + elsif(!length) { + next; + } + elsif ($can_append) { + $ptree[-1] .= $_; + } + else { + push @ptree, $_; + } + } +} + +=head2 $ptree-EB + + my $ptree_raw_text = $ptree->raw_text(); + +This method will return the I text of the POD parse-tree +exactly as it appeared in the input. + +=cut + +sub raw_text { + my $self = shift; + my $text = ''; + for ( @$self ) { + $text .= (ref $_) ? $_->raw_text : $_; + } + return $text; +} + +##--------------------------------------------------------------------------- + +## Private routines to set/unset child->parent links + +sub _unset_child2parent_links { + my $self = shift; + local *ptree = $self; + for (@ptree) { + next unless (defined and length and ref and ref ne 'SCALAR'); + $_->_unset_child2parent_links() + if UNIVERSAL::isa($_, 'Pod::InteriorSequence'); + } +} + +sub _set_child2parent_links { + ## nothing to do, Pod::ParseTrees cant have parent pointers +} + +=head2 Pod::ParseTree::B + +This method performs any necessary cleanup for the parse-tree. +If you override this method then it is B +that you invoke the parent method from within your own method, +otherwise I + +=cut + +sub DESTROY { + ## We need to get rid of all child->parent pointers throughout the + ## tree so their reference counts will go to zero and they can be + ## garbage-collected + _unset_child2parent_links(@_); +} + +############################################################################# + +=head1 SEE ALSO + +B is part of the L distribution. + +See L, L + +=head1 AUTHOR + +Please report bugs using L. + +Brad Appleton Ebradapp@enteract.comE + +=cut + +1; diff -Nru perl-5.32.1/cpan/Pod-Usage/t/inc/Pod/Parser.pm perl-5.34.0/cpan/Pod-Usage/t/inc/Pod/Parser.pm --- perl-5.32.1/cpan/Pod-Usage/t/inc/Pod/Parser.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Usage/t/inc/Pod/Parser.pm 2020-10-24 18:43:34.000000000 +0000 @@ -9,6 +9,7 @@ package Pod::Parser; use strict; +use warnings; ## These "variables" are used as local "glob aliases" for performance use vars qw($VERSION @ISA %myData %myOpts @input_stack); @@ -67,7 +68,7 @@ ## Create a parser object and have it parse file whose name was ## given on the command-line (use STDIN if no files were given). - $parser = new MyParser(); + $parser = MyParser->new(); $parser->parse_from_filehandle(\*STDIN) if (@ARGV == 0); for (@ARGV) { $parser->parse_from_file($_); } @@ -212,7 +213,7 @@ BEGIN { if ($] < 5.006) { require Symbol; - import Symbol; + Symbol->import; } } @ISA = qw(Exporter); @@ -416,8 +417,7 @@ any of the following constructor invocation styles: my $parser1 = MyParser->new(); - my $parser2 = new MyParser(); - my $parser3 = $parser2->new(); + my $parser2 = $parser1->new(); where C is some subclass of B. @@ -434,7 +434,7 @@ constructor, as in: my $parser1 = MyParser->new( MYDATA => $value1, MOREDATA => $value2 ); - my $parser2 = new MyParser( -myflag => 1 ); + my $parser2 = MyParser->new( -myflag => 1 ); All arguments passed to the B constructor will be treated as key/value pairs in a hash-table. The newly constructed object will be @@ -977,7 +977,7 @@ } } ## Save the attributes indicating how the command was specified. - $pod_para = new Pod::Paragraph( + $pod_para = Pod::Paragraph->new( -name => $cmd, -text => $text, -prefix => $pfx, @@ -1563,7 +1563,7 @@ $myData{_INFILE} = '(unknown)' unless (defined $myData{_INFILE}); $myData{_INPUT} = $in_fh; my $input_top = $myData{_TOP_STREAM} - = new Pod::InputSource( + = Pod::InputSource->new( -name => $myData{_INFILE}, -handle => $in_fh, -was_cutting => $myData{_CUTTING} @@ -1712,7 +1712,7 @@ package main; ... - my $parser = new MyPodParserTree(...); + my $parser = MyPodParserTree->new(...); $parser->parse_from_file(...); my $paragraphs_ref = $parser->{'-paragraphs'}; @@ -1727,7 +1727,7 @@ sub begin_pod { my $self = shift; - $self->{'-ptree'} = new Pod::ParseTree; ## initialize parse-tree + $self->{'-ptree'} = Pod::ParseTree->new(); ## initialize parse-tree } sub parse_tree { @@ -1759,7 +1759,7 @@ package main; ... - my $parser = new MyPodParserTree2(...); + my $parser = MyPodParserTree2->new(...); $parser->parse_from_file(...); my $ptree = $parser->parse_tree; ... diff -Nru perl-5.32.1/cpan/Pod-Usage/t/inc/Pod/PlainText.pm perl-5.34.0/cpan/Pod-Usage/t/inc/Pod/PlainText.pm --- perl-5.32.1/cpan/Pod-Usage/t/inc/Pod/PlainText.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Usage/t/inc/Pod/PlainText.pm 2020-10-24 18:43:34.000000000 +0000 @@ -17,6 +17,7 @@ package Pod::PlainText; use strict; +use warnings; require 5.005; @@ -34,7 +35,7 @@ BEGIN { if ($] < 5.006) { require Symbol; - import Symbol; + Symbol->import; } } diff -Nru perl-5.32.1/cpan/Pod-Usage/t/inc/Pod/Select.pm perl-5.34.0/cpan/Pod-Usage/t/inc/Pod/Select.pm --- perl-5.32.1/cpan/Pod-Usage/t/inc/Pod/Select.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Usage/t/inc/Pod/Select.pm 2020-10-24 18:43:34.000000000 +0000 @@ -9,6 +9,7 @@ package Pod::Select; use strict; +use warnings; use vars qw($VERSION @ISA @EXPORT $MAX_HEADING_LEVEL %myData @section_headings @selected_sections); $VERSION = '1.60'; ## Current version of this package @@ -44,7 +45,7 @@ use Pod::Select; ## Create a parser object for selecting POD sections from the input - $parser = new Pod::Select(); + $parser = Pod::Select->new(); ## Select all the POD sections for each file in @filelist ## and print the result to tmp.out. @@ -575,7 +576,7 @@ sub podselect { my(@argv) = @_; my %defaults = (); - my $pod_parser = new Pod::Select(%defaults); + my $pod_parser = Pod::Select->new(%defaults); my $num_inputs = 0; my $output = '>&STDOUT'; my %opts; diff -Nru perl-5.32.1/cpan/Pod-Usage/t/pod/headwithmarkup.t perl-5.34.0/cpan/Pod-Usage/t/pod/headwithmarkup.t --- perl-5.32.1/cpan/Pod-Usage/t/pod/headwithmarkup.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Usage/t/pod/headwithmarkup.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ use Test::More tests => 1; +use strict; +use warnings; + my $blib = $ENV{PERL_CORE} ? '-I../../lib' : '-Mblib'; my $pl = $0; diff -Nru perl-5.32.1/cpan/Pod-Usage/t/pod/p2u_data.pl perl-5.34.0/cpan/Pod-Usage/t/pod/p2u_data.pl --- perl-5.32.1/cpan/Pod-Usage/t/pod/p2u_data.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Usage/t/pod/p2u_data.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,4 +1,7 @@ use Pod::Usage; +use strict; +use warnings; + pod2usage(-verbose => 2, -exit => 17, -input => \*DATA); __DATA__ diff -Nru perl-5.32.1/cpan/Pod-Usage/t/pod/pod2usage2.t perl-5.34.0/cpan/Pod-Usage/t/pod/pod2usage2.t --- perl-5.32.1/cpan/Pod-Usage/t/pod/pod2usage2.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Usage/t/pod/pod2usage2.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,14 +1,17 @@ #!/usr/bin/perl -w -use Test::More; use strict; +use warnings; +use Test::More; +use File::Basename qw(fileparse); +use File::Spec; BEGIN { if ($^O eq 'MSWin32' || $^O eq 'VMS') { plan skip_all => "Not portable on Win32 or VMS\n"; } else { - plan tests => 33; + plan tests => 42; } use_ok ("Pod::Usage"); } @@ -16,24 +19,32 @@ sub getoutput { my ($code) = @_; - my $pid = open(TEST_IN, "-|"); - unless(defined $pid) { - die "Cannot fork: $!"; - } - if($pid) { + my $pid = open(my $in, "-|"); + die "Cannot fork: $!" unless defined $pid; + if ($pid) { # parent - my @out = ; - close(TEST_IN); + my @out = <$in>; + close($in); + my $exit = $?>>8; s/^/#/ for @out; + local $" = ""; + print "#EXIT=$exit OUTPUT=+++#@out#+++\n"; - return($exit, join("",@out)); + waitpid( $pid, 1 ); + + return ($exit, join("", @out) ); } # child - open(STDERR, ">&STDOUT"); + open (STDERR, ">&STDOUT"); + Test::More->builder->no_ending(1); - &$code; + local $SIG{ALRM} = sub { die "Alarm reached" }; + alarm(600); + + # this could hang + $code->(); print "--NORMAL-RETURN--\n"; exit 0; } @@ -69,17 +80,17 @@ #You naughty person, what did you say? # Usage: # frobnicate [ -r | --recursive ] [ -f | --force ] file ... -# +# # Options: # -r | --recursive # Run recursively. -# +# # -f | --force # Just do it! -# +# # -n number # Specify number of frobs, default is 42. -# +# EOT ($exit, $text) = getoutput( sub { pod2usage( @@ -214,7 +225,7 @@ ok (compare ($text, <<'EOT'), "Output test pod2usage with USAGE and verbose=99") or diag "Got:\n$text\n"; #Usage: # This is a test for CPAN#33020 -# +# EOT # test with self @@ -226,7 +237,7 @@ is ($exit, 0, "Exit status pod2usage with self"); ok (compare ($text, <<'EOT'), "Output test pod2usage with self") or diag "Got:\n$text\n"; #Usage: -# use Pod::Usage +# use Pod::Usage; # # my $message_text = "This text precedes the usage message."; # my $exit_status = 2; ## The exit status to use @@ -238,13 +249,13 @@ # pod2usage($exit_status); # # pod2usage( { -message => $message_text , -# -exitval => $exit_status , -# -verbose => $verbose_level, +# -exitval => $exit_status , +# -verbose => $verbose_level, # -output => $filehandle } ); # # pod2usage( -msg => $message_text , -# -exitval => $exit_status , -# -verbose => $verbose_level, +# -exitval => $exit_status , +# -verbose => $verbose_level, # -output => $filehandle ); # # pod2usage( -verbose => 2, @@ -323,6 +334,58 @@ # from the values by whitespace or the "=" character. # EOT + +# test various use cases of calling pod2usage to increase coverage +($exit, $text) = getoutput( sub { + pod2usage({ -input => $pod_file2, + -exitval => 3, -verbose => 0 }) } ); +is ($exit, 3, "Exit status pod2usage with hash options"); +like ($text, qr/^\s*$/s, "Output test pod2usage with hash options is empty") or diag "Got:\n$text\n"; + +# call with single string option +($exit, $text) = getoutput( sub { + pod2usage('Just print this') } ); +is ($exit, 2, "Exit status pod2usage with single string option"); +like ($text, qr/^#Just print this/, "Output test pod2usage with single string options has first line") or diag "Got:\n$text\n"; + +# call with search path and relative file name +my ($file, $dir) = fileparse($0); +($exit, $text) = getoutput( sub { + pod2usage({ -input => $file, -pathlist => [ $dir ], -exit => 0, -verbose => 2 } ) } ); +is ($exit, 0, "Exit status pod2usage with relative path"); +like ($text, qr/frobnicate - do what I mean/, "Output test pod2usage with relative path works OK") or diag "Got:\n$text\n"; + +# trigger specific perldoc case +# ...and one coverage line +{ no warnings; + *Pod::Usage::initialize = sub { 1; }; +} + +SKIP: { + my $perldoc = $^X . 'doc'; + skip "Missing perldoc binary", 2 unless -x $perldoc; + + my $out = qx[$perldoc 2>&1] || ''; + skip "Need perl-doc package", 2 if $out =~ qr[You need to install the perl-doc package to use this program]; + + ($exit, $text) = getoutput( sub { + require Pod::Perldoc; + my $devnull = File::Spec->devnull(); + open(SAVE_STDOUT, '>&', \*STDOUT); + open(STDOUT, '>', $devnull); + pod2usage({ -verbose => 2, -input => $0, -output => \*STDOUT, -exit => 0, -message => 'Special perldoc case', -perldocopt => '-i' }); + open(STDOUT, '>&', \*SAVE_STDOUT); + } ); + is ($exit, 0, "Exit status pod2usage with special perldoc case"); + # output went to devnull + like ($text, qr/^\s*$/s, "Output test pod2usage with special perldoc case") or diag "Got:\n$text\n"; + +} + +# bad regexp syntax +($exit, $text) = getoutput( sub { pod2usage( -verbose => 99, -sections => 'DESCRIPTION{BLAH') } ); +like ($text, qr/Bad regular expression/, "Output test pod2usage with bad section regexp"); + } # end SKIP __END__ diff -Nru perl-5.32.1/cpan/Pod-Usage/t/pod/pod2usage.t perl-5.34.0/cpan/Pod-Usage/t/pod/pod2usage.t --- perl-5.32.1/cpan/Pod-Usage/t/pod/pod2usage.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Usage/t/pod/pod2usage.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,9 +1,12 @@ +use strict; +use warnings; + BEGIN { use File::Basename; my $THISDIR = dirname $0; unshift @INC, $THISDIR; require "testp2pt.pl"; - import TestPodIncPlainText; + TestPodIncPlainText->import; } my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash diff -Nru perl-5.32.1/cpan/Pod-Usage/t/pod/pod2usage.xr perl-5.34.0/cpan/Pod-Usage/t/pod/pod2usage.xr --- perl-5.32.1/cpan/Pod-Usage/t/pod/pod2usage.xr 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Usage/t/pod/pod2usage.xr 2020-10-04 22:17:12.000000000 +0000 @@ -42,7 +42,10 @@ the option "utf8". It turns on generation of utf8 output. *file* The pathname of a file containing pod documentation to be output - in usage message format (defaults to standard input). + in usage message format. If omitted, standard input is read - + but the output is then formatted with the Pod::Text manpage only + - unless a specific formatter has been specified with + -formatter. DESCRIPTION pod2usage will read the given input file looking for pod documentation @@ -53,7 +56,8 @@ Please see the pod2usage() entry in the Pod::Usage manpage. SEE ALSO - the Pod::Usage manpage, the pod2text(1) manpage + the Pod::Usage manpage, the pod2text manpage, the Pod::Text manpage, the + Pod::Text::Termcap manpage, the perldoc manpage AUTHOR Please report bugs using http://rt.cpan.org. diff -Nru perl-5.32.1/cpan/Pod-Usage/t/pod/selectheaders.pl perl-5.34.0/cpan/Pod-Usage/t/pod/selectheaders.pl --- perl-5.32.1/cpan/Pod-Usage/t/pod/selectheaders.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Usage/t/pod/selectheaders.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/perl -w use strict; +use warnings; use Pod::Usage; my $h2 = shift @ARGV || '.*'; diff -Nru perl-5.32.1/cpan/Pod-Usage/t/pod/selectheaders.t perl-5.34.0/cpan/Pod-Usage/t/pod/selectheaders.t --- perl-5.32.1/cpan/Pod-Usage/t/pod/selectheaders.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Usage/t/pod/selectheaders.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ use Test::More tests => 2; +use strict; +use warnings; + my $blib = $ENV{PERL_CORE} ? '-I../../lib' : '-Mblib'; my $pl = $0; diff -Nru perl-5.32.1/cpan/Pod-Usage/t/pod/selectsections.pl perl-5.34.0/cpan/Pod-Usage/t/pod/selectsections.pl --- perl-5.32.1/cpan/Pod-Usage/t/pod/selectsections.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Usage/t/pod/selectsections.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,4 +1,7 @@ #!/usr/bin/env perl +use strict; +use warnings; + use Pod::Usage; my @tests = ( diff -Nru perl-5.32.1/cpan/Pod-Usage/t/pod/selectsections.t perl-5.34.0/cpan/Pod-Usage/t/pod/selectsections.t --- perl-5.32.1/cpan/Pod-Usage/t/pod/selectsections.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Usage/t/pod/selectsections.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ use Test::More tests => 2; +use strict; +use warnings; + my $blib = $ENV{PERL_CORE} ? '-I../../lib' : '-Mblib'; my $pl = $0; diff -Nru perl-5.32.1/cpan/Pod-Usage/t/pod/testp2pt.pl perl-5.34.0/cpan/Pod-Usage/t/pod/testp2pt.pl --- perl-5.32.1/cpan/Pod-Usage/t/pod/testp2pt.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Pod-Usage/t/pod/testp2pt.pl 2020-10-24 18:43:34.000000000 +0000 @@ -10,9 +10,10 @@ my $THISDIR = abs_path(dirname $0); unshift @INC, $THISDIR; require "testcmp.pl"; - import TestCompare; + TestCompare->import; + # RT#130418: previous use of dirname() was failing on VMS $PARENTDIR = File::Spec->catdir($THISDIR, File::Spec->updir()); - push @INC, map { File::Spec->catfile($_, 'lib') } ($PARENTDIR, $THISDIR); + push @INC, map { File::Spec->catdir($_, 'lib') } ($PARENTDIR, $THISDIR); } #use strict; @@ -27,8 +28,8 @@ @EXPORT = qw(&testpodplaintext); BEGIN { # we want this for testing only - unshift(@INC, File::Spec->catfile($PARENTDIR, 'inc')); -print "INC=@INC\n"; + unshift(@INC, File::Spec->catdir($PARENTDIR, 'inc')); + #print "INC=@INC\n"; require Pod::PlainText; @ISA = qw( Pod::PlainText ); @@ -39,7 +40,7 @@ ## reproducible results between environments @ENV{qw(TERMCAP COLUMNS)} = ('co=76:do=^J', 76); -sub catfile(@) { File::Spec->catfile(@_); } +sub catdir(@) { File::Spec->catdir(@_); } my $INSTDIR = abs_path(dirname $0); $INSTDIR = VMS::Filespec::unixpath($INSTDIR) if $^O eq 'VMS'; @@ -48,15 +49,15 @@ $INSTDIR = (dirname $INSTDIR) if (basename($INSTDIR) eq 'pod'); $INSTDIR =~ s#:$## if $^O eq 'MacOS'; $INSTDIR = (dirname $INSTDIR) if (basename($INSTDIR) eq 't'); -my @PODINCDIRS = ( catfile($INSTDIR, 'lib', 'Pod'), - catfile($INSTDIR, 'scripts'), - catfile($INSTDIR, 'pod'), - catfile($INSTDIR, 't', 'pod') +my @PODINCDIRS = ( catdir($INSTDIR, 'lib', 'Pod'), + catdir($INSTDIR, 'scripts'), + catdir($INSTDIR, 'pod'), + catdir($INSTDIR, 't', 'pod') ); # FIXME - we should make the core capable of finding utilities built in # locations in ext. -push @PODINCDIRS, catfile((File::Spec->updir()) x 2, 'pod') if $ENV{PERL_CORE}; +push @PODINCDIRS, catdir((File::Spec->updir()) x 2, 'pod') if $ENV{PERL_CORE}; ## Find the path to the file to =include sub findinclude { @@ -74,7 +75,7 @@ my @podincdirs = ($thispoddir, $parentdir, @PODINCDIRS); for (@podincdirs) { - my $incfile = catfile($_, $incname); + my $incfile = File::Spec->catfile($_, $incname); return $incfile if (-r $incfile); } warn("*** Can't find =include file $incname in @podincdirs\n"); diff -Nru perl-5.32.1/cpan/Socket/Makefile.PL perl-5.34.0/cpan/Socket/Makefile.PL --- perl-5.32.1/cpan/Socket/Makefile.PL 2020-12-18 09:58:13.000000000 +0000 +++ perl-5.34.0/cpan/Socket/Makefile.PL 2021-01-20 23:04:44.000000000 +0000 @@ -170,8 +170,7 @@ AF_WAN AF_X25 AI_ADDRCONFIG AI_ALL AI_CANONIDN AI_CANONNAME AI_IDN - AI_IDN_ALLOW_UNASSIGNED AI_IDN_USE_STD3_ASCII_RULES AI_NUMERICHOST - AI_NUMERICSERV AI_PASSIVE AI_V4MAPPED + AI_NUMERICHOST AI_NUMERICSERV AI_PASSIVE AI_V4MAPPED EAI_ADDRFAMILY EAI_AGAIN EAI_BADFLAGS EAI_BADHINTS EAI_FAIL EAI_FAMILY EAI_NODATA EAI_NONAME EAI_PROTOCOL EAI_SERVICE EAI_SOCKTYPE EAI_SYSTEM @@ -198,8 +197,7 @@ MSG_MCAST MSG_NOSIGNAL MSG_RST MSG_SYN MSG_TRUNC MSG_URG MSG_WAITALL MSG_WIRE - NI_DGRAM NI_IDN NI_IDN_ALLOW_UNASSIGNED NI_IDN_USE_STD3_ASCII_RULES - NI_NAMEREQD NI_NOFQDN NI_NUMERICHOST NI_NUMERICSERV + NI_DGRAM NI_IDN NI_NAMEREQD NI_NOFQDN NI_NUMERICHOST NI_NUMERICSERV PF_802 PF_AAL PF_APPLETALK PF_CCITT PF_CHAOS PF_CTF PF_DATAKIT PF_DECnet PF_DLI PF_ECMA PF_GOSIP PF_HYLINK PF_IMPLINK PF_INET PF_INET6 diff -Nru perl-5.32.1/cpan/Socket/Socket.pm perl-5.34.0/cpan/Socket/Socket.pm --- perl-5.32.1/cpan/Socket/Socket.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Socket/Socket.pm 2021-01-20 23:04:44.000000000 +0000 @@ -1,9 +1,9 @@ package Socket; use strict; -{ use 5.006001; } +{ use v5.6.1; } -our $VERSION = '2.029'; +our $VERSION = '2.031'; =head1 NAME @@ -110,7 +110,7 @@ =head2 IP_PMTUDISC_WANT, IP_PMTUDISC_DONT, ... -Socket option value contants for C socket option. +Socket option value constants for C socket option. =head2 IPTOS_LOWDELAY, IPTOS_THROUGHPUT, IPTOS_RELIABILITY, ... @@ -837,6 +837,14 @@ *LF = \LF(); *CRLF = \CRLF(); +# The four deprecated addrinfo constants +foreach my $name (qw( AI_IDN_ALLOW_UNASSIGNED AI_IDN_USE_STD3_ASCII_RULES NI_IDN_ALLOW_UNASSIGNED NI_IDN_USE_STD3_ASCII_RULES )) { + no strict 'refs'; + *$name = sub { + croak "The addrinfo constant $name is deprecated"; + }; +} + sub sockaddr_in { if (@_ == 6 && !wantarray) { # perl5.001m compat; use this && die my($af, $port, @quad) = @_; @@ -916,13 +924,9 @@ # Constants we don't support. Export them, but croak if anyone tries to # use them - AI_IDN => 64, - AI_CANONIDN => 128, - AI_IDN_ALLOW_UNASSIGNED => 256, - AI_IDN_USE_STD3_ASCII_RULES => 512, - NI_IDN => 32, - NI_IDN_ALLOW_UNASSIGNED => 64, - NI_IDN_USE_STD3_ASCII_RULES => 128, + AI_IDN => 64, + AI_CANONIDN => 128, + NI_IDN => 32, # Error constants we'll never return, so it doesn't matter what value # these have, nor that we don't provide strings for them @@ -992,7 +996,7 @@ # to talk AF_INET. If not we'd have to return no addresses at all. :) $flags &= ~(AI_V4MAPPED()|AI_ALL()|AI_ADDRCONFIG()); - $flags & (AI_IDN()|AI_CANONIDN()|AI_IDN_ALLOW_UNASSIGNED()|AI_IDN_USE_STD3_ASCII_RULES()) and + $flags & (AI_IDN()|AI_CANONIDN()) and croak "Socket::getaddrinfo() does not support IDN"; $flags == 0 or return fake_makeerr( EAI_BADFLAGS() ); @@ -1090,7 +1094,7 @@ my $flag_namereqd = $flags & NI_NAMEREQD(); $flags &= ~NI_NAMEREQD(); my $flag_dgram = $flags & NI_DGRAM() ; $flags &= ~NI_DGRAM(); - $flags & (NI_IDN()|NI_IDN_ALLOW_UNASSIGNED()|NI_IDN_USE_STD3_ASCII_RULES()) and + $flags & NI_IDN() and croak "Socket::getnameinfo() does not support IDN"; $flags == 0 or return fake_makeerr( EAI_BADFLAGS() ); diff -Nru perl-5.32.1/cpan/Socket/Socket.xs perl-5.34.0/cpan/Socket/Socket.xs --- perl-5.32.1/cpan/Socket/Socket.xs 2020-12-18 09:58:13.000000000 +0000 +++ perl-5.34.0/cpan/Socket/Socket.xs 2021-01-20 23:04:44.000000000 +0000 @@ -764,20 +764,33 @@ char * host CODE: { +#ifdef HAS_GETADDRINFO + struct addrinfo *res; + struct addrinfo hints = {0}; + hints.ai_family = AF_INET; + if (!getaddrinfo(host, NULL, &hints, &res)) { + ST(0) = sv_2mortal(newSVpvn( + (char *)&(((struct sockaddr_in *)res->ai_addr)->sin_addr.s_addr), + 4)); + freeaddrinfo(res); + XSRETURN(1); + } +#else struct in_addr ip_address; struct hostent * phe; - if ((*host != '\0') && inet_aton(host, &ip_address)) { ST(0) = sv_2mortal(newSVpvn((char *)&ip_address, sizeof(ip_address))); XSRETURN(1); } #ifdef HAS_GETHOSTBYNAME + /* gethostbyname is not thread-safe */ phe = gethostbyname(host); if (phe && phe->h_addrtype == AF_INET && phe->h_length == 4) { ST(0) = sv_2mortal(newSVpvn((char *)phe->h_addr, phe->h_length)); XSRETURN(1); } -#endif +#endif /* HAS_GETHOSTBYNAME */ +#endif /* HAS_GETADDRINFO */ XSRETURN_UNDEF; } @@ -794,10 +807,10 @@ ip_address = SvPVbyte(ip_address_sv, addrlen); if (addrlen == sizeof(addr) || addrlen == 4) addr.s_addr = - (ip_address[0] & 0xFF) << 24 | - (ip_address[1] & 0xFF) << 16 | - (ip_address[2] & 0xFF) << 8 | - (ip_address[3] & 0xFF); + (unsigned long)(ip_address[0] & 0xFF) << 24 | + (unsigned long)(ip_address[1] & 0xFF) << 16 | + (unsigned long)(ip_address[2] & 0xFF) << 8 | + (unsigned long)(ip_address[3] & 0xFF); else croak("Bad arg length for %s, length is %" UVuf ", should be %" UVuf, @@ -974,8 +987,12 @@ STRLEN addrlen; unsigned short port = 0; char * ip_address; - if (SvOK(port_sv)) + if (SvOK(port_sv)) { port = SvUV(port_sv); + if (SvUV(port_sv) > 0xFFFF) + warn("Port number above 0xFFFF, will be truncated to %d for %s", + port, "Socket::pack_sockaddr_in"); + } if (!SvOK(ip_address_sv)) croak("Undefined address for %s", "Socket::pack_sockaddr_in"); if (DO_UTF8(ip_address_sv) && !sv_utf8_downgrade(ip_address_sv, 1)) @@ -1049,8 +1066,12 @@ struct sockaddr_in6 sin6; char * addrbytes; STRLEN addrlen; - if (SvOK(port_sv)) + if (SvOK(port_sv)) { port = SvUV(port_sv); + if (SvUV(port_sv) > 0xFFFF) + warn("Port number above 0xFFFF, will be truncated to %d for %s", + port, "Socket::pack_sockaddr_in6"); + } if (!SvOK(sin6_addr)) croak("Undefined address for %s", "Socket::pack_sockaddr_in6"); if (DO_UTF8(sin6_addr) && !sv_utf8_downgrade(sin6_addr, 1)) diff -Nru perl-5.32.1/cpan/Socket/t/getaddrinfo.t perl-5.34.0/cpan/Socket/t/getaddrinfo.t --- perl-5.32.1/cpan/Socket/t/getaddrinfo.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Socket/t/getaddrinfo.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,4 @@ +use v5.6.1; use strict; use warnings; use Test::More tests => 31; diff -Nru perl-5.32.1/cpan/Socket/t/getnameinfo.t perl-5.34.0/cpan/Socket/t/getnameinfo.t --- perl-5.32.1/cpan/Socket/t/getnameinfo.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Socket/t/getnameinfo.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,4 @@ +use v5.6.1; use strict; use warnings; use Test::More tests => 13; diff -Nru perl-5.32.1/cpan/Socket/t/ip_mreq.t perl-5.34.0/cpan/Socket/t/ip_mreq.t --- perl-5.32.1/cpan/Socket/t/ip_mreq.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Socket/t/ip_mreq.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,4 @@ +use v5.6.1; use strict; use warnings; use Test::More; diff -Nru perl-5.32.1/cpan/Socket/t/ipv6_mreq.t perl-5.34.0/cpan/Socket/t/ipv6_mreq.t --- perl-5.32.1/cpan/Socket/t/ipv6_mreq.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Socket/t/ipv6_mreq.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,4 @@ +use v5.6.1; use strict; use warnings; use Test::More; diff -Nru perl-5.32.1/cpan/Socket/t/sockaddr.t perl-5.34.0/cpan/Socket/t/sockaddr.t --- perl-5.32.1/cpan/Socket/t/sockaddr.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Socket/t/sockaddr.t 2021-01-20 23:04:44.000000000 +0000 @@ -1,5 +1,6 @@ #!./perl +use v5.6.1; use strict; use warnings; @@ -11,7 +12,7 @@ sockaddr_family sockaddr_un ); -use Test::More tests => 46; +use Test::More tests => 50; # inet_aton, inet_ntoa { @@ -82,8 +83,8 @@ is(sockaddr_family(scalar sockaddr_in(200,v10.30.50.70)), AF_INET, 'sockaddr_in in scalar context packs'); - my $warnings = 0; - local $SIG{__WARN__} = sub { $warnings++ }; + my $warnings = ""; + local $SIG{__WARN__} = sub { $warnings .= $_[0]; }; ok( !eval { pack_sockaddr_in 0, undef; 1 }, 'pack_sockaddr_in undef addr is fatal' ); ok( !eval { unpack_sockaddr_in undef; 1 }, @@ -92,14 +93,19 @@ ok( eval { pack_sockaddr_in undef, "\0\0\0\0"; 1 }, 'pack_sockaddr_in undef port is allowed' ); - is( $warnings, 0, 'undefined values produced no warnings' ); + is( $warnings, "", 'undefined values produced no warnings' ); + + ok( eval { pack_sockaddr_in 98765, "\0\0\0\0"; 1 }, + 'pack_sockaddr_in oversized port is allowed' ); + like( $warnings, qr/^Port number above 0xFFFF, will be truncated to 33229 for Socket::pack_sockaddr_in at /, + 'pack_sockaddr_in oversized port warning' ); } # pack_sockaddr_in6, unpack_sockaddr_in6 # sockaddr_in6 SKIP: { - skip "No AF_INET6", 13 unless my $AF_INET6 = eval { Socket::AF_INET6() }; - skip "Cannot pack_sockaddr_in6()", 13 unless my $sin6 = eval { Socket::pack_sockaddr_in6(0x1234, "0123456789abcdef", 0, 89) }; + skip "No AF_INET6", 15 unless my $AF_INET6 = eval { Socket::AF_INET6() }; + skip "Cannot pack_sockaddr_in6()", 15 unless my $sin6 = eval { Socket::pack_sockaddr_in6(0x1234, "0123456789abcdef", 0, 89) }; ok(defined $sin6, 'pack_sockaddr_in6 defined'); @@ -118,8 +124,8 @@ is(sockaddr_family(scalar Socket::sockaddr_in6(0x1357, "02468ace13579bdf")), $AF_INET6, 'sockaddr_in6 in scalar context packs' ); - my $warnings = 0; - local $SIG{__WARN__} = sub { $warnings++ }; + my $warnings = ""; + local $SIG{__WARN__} = sub { $warnings .= $_[0]; }; ok( !eval { Socket::pack_sockaddr_in6( 0, undef ); 1 }, 'pack_sockaddr_in6 undef addr is fatal' ); ok( !eval { Socket::unpack_sockaddr_in6( undef ); 1 }, @@ -128,7 +134,12 @@ ok( eval { Socket::pack_sockaddr_in6( undef, "\0"x16 ); 1 }, 'pack_sockaddr_in6 undef port is allowed' ); - is( $warnings, 0, 'undefined values produced no warnings' ); + is( $warnings, "", 'undefined values produced no warnings' ); + + ok( eval { Socket::pack_sockaddr_in6( 98765, "\0"x16 ); 1 }, + 'pack_sockaddr_in6 oversized port is allowed' ); + like( $warnings, qr/^Port number above 0xFFFF, will be truncated to 33229 for Socket::pack_sockaddr_in6 at /, + 'pack_sockaddr_in6 oversized port warning' ); } # sockaddr_un on abstract paths diff -Nru perl-5.32.1/cpan/Socket/t/socketpair.t perl-5.34.0/cpan/Socket/t/socketpair.t --- perl-5.32.1/cpan/Socket/t/socketpair.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Socket/t/socketpair.t 2021-01-20 23:04:44.000000000 +0000 @@ -1,9 +1,14 @@ #!./perl -w +use v5.6.1; +use strict; +use warnings; + my $child; my $can_fork; my $has_perlio; +our %Config; BEGIN { require Config; import Config; $can_fork = $Config{'d_fork'} || $Config{'d_pseudofork'}; @@ -63,8 +68,9 @@ } elsif( !$can_fork ) { plan skip_all => "fork() not implemented on this platform"; } else { + my ($lefth, $righth); # This should fail but not die if there is real socketpair - eval {socketpair LEFT, RIGHT, -1, -1, -1}; + eval {socketpair $lefth, $righth, -1, -1, -1}; if ($@ =~ /^Unsupported socket function "socketpair" called/ || $! =~ /^The operation requested is not supported./) { # Stratus VOS plan skip_all => 'No socketpair (real or emulated)'; @@ -81,90 +87,95 @@ # But we'll install an alarm handler in case any of the races below fail. $SIG{ALRM} = sub {die "Unexpected alarm during testing"}; -ok (socketpair (LEFT, RIGHT, AF_UNIX, SOCK_STREAM, PF_UNSPEC), - "socketpair (LEFT, RIGHT, AF_UNIX, SOCK_STREAM, PF_UNSPEC)") - or print STDERR "# \$\! = $!\n"; - -if ($has_perlio) { - binmode(LEFT, ":bytes"); - binmode(RIGHT, ":bytes"); -} - my @left = ("hello ", "world\n"); my @right = ("perl ", "rules!"); # Not like I'm trying to bias any survey here. -foreach (@left) { - # is (syswrite (LEFT, $_), length $_, "write " . _qq ($_) . " to left"); - is (syswrite (LEFT, $_), length $_, "syswrite to left"); -} -foreach (@right) { - # is (syswrite (RIGHT, $_), length $_, "write " . _qq ($_) . " to right"); - is (syswrite (RIGHT, $_), length $_, "syswrite to right"); -} - -# stream socket, so our writes will become joined: -my ($buffer, $expect); -$expect = join '', @right; -undef $buffer; -is (read (LEFT, $buffer, length $expect), length $expect, "read on left"); -is ($buffer, $expect, "content what we expected?"); -$expect = join '', @left; -undef $buffer; -is (read (RIGHT, $buffer, length $expect), length $expect, "read on right"); -is ($buffer, $expect, "content what we expected?"); - -ok (shutdown(LEFT, SHUT_WR), "shutdown left for writing"); -# This will hang forever if eof is buggy, and alarm doesn't interrupt system -# Calls. Hence the child process minder. -SKIP: { - skip "SCO Unixware / OSR have a bug with shutdown",2 if $^O =~ /^(?:svr|sco)/; - local $SIG{ALRM} = sub { warn "EOF on right took over 3 seconds" }; - local $TODO = "Known problems with unix sockets on $^O" - if $^O eq 'hpux' || $^O eq 'super-ux'; - alarm 3; - $! = 0; - ok (eof RIGHT, "right is at EOF"); - local $TODO = "Known problems with unix sockets on $^O" - if $^O eq 'unicos' || $^O eq 'unicosmk'; - is ($!, '', 'and $! should report no error'); - alarm 60; -} +my @gripping = (chr 255, chr 127); -my $err = $!; -$SIG{PIPE} = 'IGNORE'; { - local $SIG{ALRM} = - sub { warn "syswrite to left didn't fail within 3 seconds" }; - alarm 3; - # Split the system call from the is() - is() does IO so - # (say) a flush may do a seek which on a pipe may disturb errno - my $ans = syswrite (LEFT, "void"); - $err = $!; - is ($ans, undef, "syswrite to shutdown left should fail"); - alarm 60; -} -{ - # This may need skipping on some OSes - restoring value saved above - # should help - $! = $err; - ok (($!{EPIPE} or $!{ESHUTDOWN}), '$! should be EPIPE or ESHUTDOWN') - or printf STDERR "# \$\! = %d (%s)\n", $err, $err; -} + my ($lefth, $righth); -my @gripping = (chr 255, chr 127); -foreach (@gripping) { - is (syswrite (RIGHT, $_), length $_, "syswrite to right"); -} + ok (socketpair ($lefth, $righth, AF_UNIX, SOCK_STREAM, PF_UNSPEC), + "socketpair (\$lefth, \$righth, AF_UNIX, SOCK_STREAM, PF_UNSPEC)") + or print STDERR "# \$\! = $!\n"; -ok (!eof LEFT, "left is not at EOF"); + if ($has_perlio) { + binmode($lefth, ":bytes"); + binmode($righth, ":bytes"); + } -$expect = join '', @gripping; -undef $buffer; -is (read (LEFT, $buffer, length $expect), length $expect, "read on left"); -is ($buffer, $expect, "content what we expected?"); + foreach (@left) { + # is (syswrite ($lefth, $_), length $_, "write " . _qq ($_) . " to left"); + is (syswrite ($lefth, $_), length $_, "syswrite to left"); + } + foreach (@right) { + # is (syswrite ($righth, $_), length $_, "write " . _qq ($_) . " to right"); + is (syswrite ($righth, $_), length $_, "syswrite to right"); + } + + # stream socket, so our writes will become joined: + my ($buffer, $expect); + $expect = join '', @right; + undef $buffer; + is (read ($lefth, $buffer, length $expect), length $expect, "read on left"); + is ($buffer, $expect, "content what we expected?"); + $expect = join '', @left; + undef $buffer; + is (read ($righth, $buffer, length $expect), length $expect, "read on right"); + is ($buffer, $expect, "content what we expected?"); + + ok (shutdown($lefth, SHUT_WR), "shutdown left for writing"); + # This will hang forever if eof is buggy, and alarm doesn't interrupt system + # Calls. Hence the child process minder. + SKIP: { + skip "SCO Unixware / OSR have a bug with shutdown",2 if $^O =~ /^(?:svr|sco)/; + local $SIG{ALRM} = sub { warn "EOF on right took over 3 seconds" }; + local $TODO = "Known problems with unix sockets on $^O" + if $^O eq 'hpux' || $^O eq 'super-ux'; + alarm 3; + $! = 0; + ok (eof $righth, "right is at EOF"); + local $TODO = "Known problems with unix sockets on $^O" + if $^O eq 'unicos' || $^O eq 'unicosmk'; + is ($!, '', 'and $! should report no error'); + alarm 60; + } + + my $err = $!; + $SIG{PIPE} = 'IGNORE'; + { + local $SIG{ALRM} = + sub { warn "syswrite to left didn't fail within 3 seconds" }; + alarm 3; + # Split the system call from the is() - is() does IO so + # (say) a flush may do a seek which on a pipe may disturb errno + my $ans = syswrite ($lefth, "void"); + $err = $!; + is ($ans, undef, "syswrite to shutdown left should fail"); + alarm 60; + } + { + # This may need skipping on some OSes - restoring value saved above + # should help + $! = $err; + ok (($!{EPIPE} or $!{ESHUTDOWN}), '$! should be EPIPE or ESHUTDOWN') + or printf STDERR "# \$\! = %d (%s)\n", $err, $err; + } -ok (close LEFT, "close left"); -ok (close RIGHT, "close right"); + foreach (@gripping) { + is (syswrite ($righth, $_), length $_, "syswrite to right"); + } + + ok (!eof $lefth, "left is not at EOF"); + + $expect = join '', @gripping; + undef $buffer; + is (read ($lefth, $buffer, length $expect), length $expect, "read on left"); + is ($buffer, $expect, "content what we expected?"); + + ok (close $lefth, "close left"); + ok (close $righth, "close right"); +} # And now datagrams @@ -172,44 +183,49 @@ # guarantee that the stack won't drop a UDP packet, even if it is for localhost. SKIP: { - skip "No usable SOCK_DGRAM for socketpair", 24 if ($^O =~ /^(MSWin32|os2)\z/); skip "alarm doesn't interrupt I/O on this Perl", 24 if "$]" < 5.008; + + my $success = socketpair my $lefth, my $righth, AF_UNIX, SOCK_DGRAM, PF_UNSPEC; + + skip "No useable SOCK_DGRAM for socketpair", 24 if !$success and + ($!{EAFNOSUPPORT} or $!{EOPNOTSUPP} or $!{EPROTONOSUPPORT} or $!{EPROTOTYPE}); + # Maybe this test is redundant now? + skip "No usable SOCK_DGRAM for socketpair", 24 if ($^O =~ /^(MSWin32|os2)\z/); local $TODO = "socketpair not supported on $^O" if $^O eq 'nto'; - ok (socketpair (LEFT, RIGHT, AF_UNIX, SOCK_DGRAM, PF_UNSPEC), - "socketpair (LEFT, RIGHT, AF_UNIX, SOCK_DGRAM, PF_UNSPEC)") + ok ($success, "socketpair (\$left, \$righth, AF_UNIX, SOCK_DGRAM, PF_UNSPEC)") or print STDERR "# \$\! = $!\n"; if ($has_perlio) { - binmode(LEFT, ":bytes"); - binmode(RIGHT, ":bytes"); + binmode($lefth, ":bytes"); + binmode($righth, ":bytes"); } foreach (@left) { - # is (syswrite (LEFT, $_), length $_, "write " . _qq ($_) . " to left"); - is (syswrite (LEFT, $_), length $_, "syswrite to left"); + # is (syswrite ($lefth, $_), length $_, "write " . _qq ($_) . " to left"); + is (syswrite ($lefth, $_), length $_, "syswrite to left"); } foreach (@right) { - # is (syswrite (RIGHT, $_), length $_, "write " . _qq ($_) . " to right"); - is (syswrite (RIGHT, $_), length $_, "syswrite to right"); + # is (syswrite ($righth, $_), length $_, "write " . _qq ($_) . " to right"); + is (syswrite ($righth, $_), length $_, "syswrite to right"); } # stream socket, so our writes will become joined: - my ($total); + my ($total, $buffer); $total = join '', @right; - foreach $expect (@right) { + foreach my $expect (@right) { undef $buffer; - is (sysread (LEFT, $buffer, length $total), length $expect, "read on left"); + is (sysread ($lefth, $buffer, length $total), length $expect, "read on left"); is ($buffer, $expect, "content what we expected?"); } $total = join '', @left; - foreach $expect (@left) { + foreach my $expect (@left) { undef $buffer; - is (sysread (RIGHT, $buffer, length $total), length $expect, "read on right"); + is (sysread ($righth, $buffer, length $total), length $expect, "read on right"); is ($buffer, $expect, "content what we expected?"); } - ok (shutdown(LEFT, 1), "shutdown left for writing"); + ok (shutdown($lefth, 1), "shutdown left for writing"); # eof uses buffering. eof is indicated by a sysread of zero. # but for a datagram socket there's no way it can know nothing will ever be @@ -222,7 +238,7 @@ print "# Approximate forever as 3 seconds. Wait 'forever'...\n"; alarm 3; undef $buffer; - is (sysread (RIGHT, $buffer, 1), undef, + is (sysread ($righth, $buffer, 1), undef, "read on right should be interrupted"); is ($alarmed, 1, "alarm should have fired"); } @@ -230,18 +246,18 @@ alarm 30; foreach (@gripping) { - is (syswrite (RIGHT, $_), length $_, "syswrite to right"); + is (syswrite ($righth, $_), length $_, "syswrite to right"); } $total = join '', @gripping; - foreach $expect (@gripping) { + foreach my $expect (@gripping) { undef $buffer; - is (sysread (LEFT, $buffer, length $total), length $expect, "read on left"); + is (sysread ($lefth, $buffer, length $total), length $expect, "read on left"); is ($buffer, $expect, "content what we expected?"); } - ok (close LEFT, "close left"); - ok (close RIGHT, "close right"); + ok (close $lefth, "close left"); + ok (close $righth, "close right"); } # end of DGRAM SKIP diff -Nru perl-5.32.1/cpan/Socket/t/Socket.t perl-5.34.0/cpan/Socket/t/Socket.t --- perl-5.32.1/cpan/Socket/t/Socket.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Socket/t/Socket.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,11 @@ #!./perl +use v5.6.1; +use strict; +use warnings; + +our %Config; +my $has_alarm; BEGIN { require Config; import Config; if ($Config{'extensions'} !~ /\bSocket\b/ && @@ -13,8 +19,8 @@ use Socket qw(:all); use Test::More tests => 6; -$has_echo = $^O ne 'MSWin32'; -$alarmed = 0; +my $has_echo = $^O ne 'MSWin32'; +my $alarmed = 0; sub arm { $alarmed = 0; alarm(shift) if $has_alarm } sub alarmed { $alarmed = 1 } $SIG{ALRM} = 'alarmed' if $has_alarm; @@ -48,7 +54,8 @@ arm(0); arm(5); - $read = sysread(T,$buff,10); # Connection may be granted, then closed! + my $buff; + my $read = sysread(T,$buff,10); # Connection may be granted, then closed! arm(0); while ($read > 0 && length($buff) < 5) { @@ -87,7 +94,8 @@ arm(0); arm(5); - $read = sysread(S,$buff,10); # Connection may be granted, then closed! + my $buff; + my $read = sysread(S,$buff,10); # Connection may be granted, then closed! arm(0); while ($read > 0 && length($buff) < 5) { diff -Nru perl-5.32.1/cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm perl-5.34.0/cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm --- perl-5.32.1/cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm 2021-01-20 23:04:44.000000000 +0000 @@ -9,11 +9,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/App/Prove/State/Result.pm perl-5.34.0/cpan/Test-Harness/lib/App/Prove/State/Result.pm --- perl-5.32.1/cpan/Test-Harness/lib/App/Prove/State/Result.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/App/Prove/State/Result.pm 2021-01-20 23:04:44.000000000 +0000 @@ -14,11 +14,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/App/Prove/State.pm perl-5.34.0/cpan/Test-Harness/lib/App/Prove/State.pm --- perl-5.32.1/cpan/Test-Harness/lib/App/Prove/State.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/App/Prove/State.pm 2021-01-20 23:04:44.000000000 +0000 @@ -25,11 +25,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/App/Prove.pm perl-5.34.0/cpan/Test-Harness/lib/App/Prove.pm --- perl-5.32.1/cpan/Test-Harness/lib/App/Prove.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/App/Prove.pm 2021-01-20 23:04:44.000000000 +0000 @@ -18,11 +18,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Base.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Base.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Base.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Base.pm 2021-01-20 23:04:44.000000000 +0000 @@ -12,11 +12,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; use constant GOT_TIME_HIRES => do { eval 'use Time::HiRes qw(time);'; diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Formatter/Base.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Formatter/Base.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Formatter/Base.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Formatter/Base.pm 2021-01-20 23:04:44.000000000 +0000 @@ -58,11 +58,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Formatter/Color.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Formatter/Color.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Formatter/Color.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Formatter/Color.pm 2021-01-20 23:04:44.000000000 +0000 @@ -39,11 +39,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Formatter/Console/ParallelSession.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Formatter/Console/ParallelSession.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Formatter/Console/ParallelSession.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Formatter/Console/ParallelSession.pm 2021-01-20 23:04:44.000000000 +0000 @@ -41,11 +41,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm 2021-01-20 23:04:44.000000000 +0000 @@ -26,11 +26,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Formatter/Console.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Formatter/Console.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Formatter/Console.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Formatter/Console.pm 2021-01-20 23:04:44.000000000 +0000 @@ -11,11 +11,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm 2021-01-20 23:04:44.000000000 +0000 @@ -10,11 +10,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Formatter/File.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Formatter/File.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Formatter/File.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Formatter/File.pm 2021-01-20 23:04:44.000000000 +0000 @@ -13,11 +13,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Formatter/Session.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Formatter/Session.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Formatter/Session.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Formatter/Session.pm 2021-01-20 23:04:44.000000000 +0000 @@ -23,11 +23,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 METHODS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Harness/Env.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Harness/Env.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Harness/Env.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Harness/Env.pm 2021-01-20 23:04:44.000000000 +0000 @@ -7,7 +7,7 @@ use TAP::Object; use Text::ParseWords qw/shellwords/; -our $VERSION = '3.42'; +our $VERSION = '3.43'; # Get the parts of @INC which are changed from the stock list AND # preserve reordering of stock directories. @@ -126,7 +126,7 @@ =head1 VERSION -Version 3.42 +Version 3.43 =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Harness.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Harness.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Harness.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Harness.pm 2021-01-20 23:04:44.000000000 +0000 @@ -16,11 +16,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; $ENV{HARNESS_ACTIVE} = 1; $ENV{HARNESS_VERSION} = $VERSION; @@ -619,6 +619,10 @@ my ( $parser, $session ) = $self->make_parser($job); $mux->add( $parser, [ $session, $job ] ); + + # The job has started: begin the timers + $parser->start_time( $parser->get_time ); + $parser->start_times( $parser->get_times ); } if ( my ( $parser, $stash, $result ) = $mux->next ) { diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Object.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Object.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Object.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Object.pm 2021-01-20 23:04:44.000000000 +0000 @@ -9,11 +9,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm 2021-01-20 23:04:44.000000000 +0000 @@ -12,11 +12,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Grammar.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Grammar.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Grammar.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Grammar.pm 2021-01-20 23:04:44.000000000 +0000 @@ -14,11 +14,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm 2021-01-20 23:04:44.000000000 +0000 @@ -11,11 +11,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm 2021-01-20 23:04:44.000000000 +0000 @@ -16,11 +16,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm 2021-01-20 23:04:44.000000000 +0000 @@ -11,11 +11,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm 2021-01-20 23:04:44.000000000 +0000 @@ -16,11 +16,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Iterator.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Iterator.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Iterator.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Iterator.pm 2021-01-20 23:04:44.000000000 +0000 @@ -11,11 +11,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm 2021-01-20 23:04:44.000000000 +0000 @@ -17,11 +17,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm 2021-01-20 23:04:44.000000000 +0000 @@ -11,11 +11,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm 2021-01-20 23:04:44.000000000 +0000 @@ -11,11 +11,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm 2021-01-20 23:04:44.000000000 +0000 @@ -11,11 +11,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm 2021-01-20 23:04:44.000000000 +0000 @@ -11,11 +11,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm 2021-01-20 23:04:44.000000000 +0000 @@ -11,11 +11,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm 2021-01-20 23:04:44.000000000 +0000 @@ -11,11 +11,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm 2021-01-20 23:04:44.000000000 +0000 @@ -11,11 +11,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm 2021-01-20 23:04:44.000000000 +0000 @@ -11,11 +11,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm 2021-01-20 23:04:44.000000000 +0000 @@ -29,11 +29,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head2 DESCRIPTION diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Result.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Result.pm 2021-01-20 23:04:44.000000000 +0000 @@ -24,11 +24,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm 2021-01-20 23:04:44.000000000 +0000 @@ -10,11 +10,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm 2021-01-20 23:04:44.000000000 +0000 @@ -10,11 +10,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm 2021-01-20 23:04:44.000000000 +0000 @@ -13,11 +13,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm 2021-01-20 23:04:44.000000000 +0000 @@ -16,11 +16,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm 2021-01-20 23:04:44.000000000 +0000 @@ -16,11 +16,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm 2021-01-20 23:04:44.000000000 +0000 @@ -16,11 +16,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm 2021-01-20 23:04:44.000000000 +0000 @@ -21,11 +21,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm 2021-01-20 23:04:44.000000000 +0000 @@ -16,11 +16,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm 2021-01-20 23:04:44.000000000 +0000 @@ -12,11 +12,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Source.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Source.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/Source.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/Source.pm 2021-01-20 23:04:44.000000000 +0000 @@ -14,11 +14,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm 2021-01-20 23:04:44.000000000 +0000 @@ -5,7 +5,7 @@ use base 'TAP::Object'; -our $VERSION = '3.42'; +our $VERSION = '3.43'; # TODO: # Handle blessed object syntax @@ -269,7 +269,7 @@ =head1 VERSION -Version 3.42 +Version 3.43 =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm 2021-01-20 23:04:44.000000000 +0000 @@ -5,7 +5,7 @@ use base 'TAP::Object'; -our $VERSION = '3.42'; +our $VERSION = '3.43'; my $ESCAPE_CHAR = qr{ [ \x00-\x1f \" ] }x; my $ESCAPE_KEY = qr{ (?: ^\W ) | $ESCAPE_CHAR }x; @@ -146,7 +146,7 @@ =head1 VERSION -Version 3.42 +Version 3.43 =head1 SYNOPSIS diff -Nru perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser.pm perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser.pm --- perl-5.32.1/cpan/Test-Harness/lib/TAP/Parser.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/TAP/Parser.pm 2021-01-20 23:04:44.000000000 +0000 @@ -27,11 +27,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; my $DEFAULT_TAP_VERSION = 12; my $MAX_TAP_VERSION = 13; @@ -1384,8 +1384,8 @@ my $state = 'INIT'; my $state_table = $self->_make_state_table; - $self->start_time( $self->get_time ); - $self->start_times( $self->get_times ); + $self->start_time( $self->get_time ) unless $self->{start_time}; + $self->start_times( $self->get_times ) unless $self->{start_times}; # Make next_state closure my $next_state = sub { diff -Nru perl-5.32.1/cpan/Test-Harness/lib/Test/Harness.pm perl-5.34.0/cpan/Test-Harness/lib/Test/Harness.pm --- perl-5.32.1/cpan/Test-Harness/lib/Test/Harness.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/lib/Test/Harness.pm 2021-01-20 23:04:44.000000000 +0000 @@ -31,11 +31,11 @@ =head1 VERSION -Version 3.42 +Version 3.43 =cut -our $VERSION = '3.42'; +our $VERSION = '3.43'; # Backwards compatibility for exportable variable names. *verbose = *Verbose; diff -Nru perl-5.32.1/cpan/Test-Harness/t/source.t perl-5.34.0/cpan/Test-Harness/t/source.t --- perl-5.32.1/cpan/Test-Harness/t/source.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Harness/t/source.t 2021-01-20 23:04:44.000000000 +0000 @@ -242,11 +242,12 @@ my $symlink = File::Spec->catfile( $dir, 'source_link.T' ); my $source = TAP::Parser::Source->new; - eval { symlink( File::Spec->rel2abs($test), $symlink ) }; + my $did_symlink = eval { symlink( File::Spec->rel2abs($test), $symlink ) }; if ( my $e = $@ ) { diag($@); die "aborting test"; } + skip "symlink not successful: $!", 9 unless $did_symlink; $source->raw( \$symlink ); my $meta = $source->assemble_meta; diff -Nru perl-5.32.1/cpan/Test-Simple/lib/ok.pm perl-5.34.0/cpan/Test-Simple/lib/ok.pm --- perl-5.32.1/cpan/Test-Simple/lib/ok.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/ok.pm 2020-11-18 22:09:15.000000000 +0000 @@ -1,5 +1,5 @@ package ok; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use strict; use Test::More (); diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test/Builder/Formatter.pm perl-5.34.0/cpan/Test-Simple/lib/Test/Builder/Formatter.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test/Builder/Formatter.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test/Builder/Formatter.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::Formatter::TAP; our @ISA = qw(Test2::Formatter::TAP) } @@ -97,7 +97,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test/Builder/Module.pm perl-5.34.0/cpan/Test-Simple/lib/Test/Builder/Module.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test/Builder/Module.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test/Builder/Module.pm 2020-11-18 22:09:15.000000000 +0000 @@ -7,7 +7,7 @@ require Exporter; our @ISA = qw(Exporter); -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; =head1 NAME diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm perl-5.34.0/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm 2020-11-18 22:09:15.000000000 +0000 @@ -1,7 +1,7 @@ package Test::Builder::Tester::Color; use strict; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; require Test::Builder::Tester; diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test/Builder/Tester.pm perl-5.34.0/cpan/Test-Simple/lib/Test/Builder/Tester.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test/Builder/Tester.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test/Builder/Tester.pm 2020-11-18 22:09:15.000000000 +0000 @@ -1,7 +1,7 @@ package Test::Builder::Tester; use strict; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Test::Builder; use Symbol; diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm perl-5.34.0/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::Event::Diag; our @ISA = qw(Test2::Event::Diag) } @@ -58,7 +58,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test/Builder.pm perl-5.34.0/cpan/Test-Simple/lib/Test/Builder.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test/Builder.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test/Builder.pm 2020-11-18 22:09:15.000000000 +0000 @@ -4,7 +4,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { if( $] < 5.008 ) { @@ -51,40 +51,80 @@ #$hub->add_context_aquire(sub {$_[0]->{level} += $Level - 1}); - $hub->pre_filter(sub { - my ($active_hub, $e) = @_; - - my $epkg = $$epkgr; - my $cpkg = $e->{trace} ? $e->{trace}->{frame}->[0] : undef; - - no strict 'refs'; - no warnings 'once'; - my $todo; - $todo = ${"$cpkg\::TODO"} if $cpkg; - $todo = ${"$epkg\::TODO"} if $epkg && !$todo; - - return $e unless defined($todo); - return $e unless length($todo); - - # Turn a diag into a todo diag - return Test::Builder::TodoDiag->new(%$e) if ref($e) eq 'Test2::Event::Diag'; + $hub->pre_filter( + sub { + my ($active_hub, $e) = @_; + + my $epkg = $$epkgr; + my $cpkg = $e->{trace} ? $e->{trace}->{frame}->[0] : undef; + + no strict 'refs'; + no warnings 'once'; + my $todo; + $todo = ${"$cpkg\::TODO"} if $cpkg; + $todo = ${"$epkg\::TODO"} if $epkg && !$todo; + + return $e unless defined($todo); + return $e unless length($todo); + + # Turn a diag into a todo diag + return Test::Builder::TodoDiag->new(%$e) if ref($e) eq 'Test2::Event::Diag'; + + $e->set_todo($todo) if $e->can('set_todo'); + $e->add_amnesty({tag => 'TODO', details => $todo}); + + # Set todo on ok's + if ($e->isa('Test2::Event::Ok')) { + $e->set_effective_pass(1); + + if (my $result = $e->get_meta(__PACKAGE__)) { + $result->{reason} ||= $todo; + $result->{type} ||= 'todo'; + $result->{ok} = 1; + } + } - $e->set_todo($todo) if $e->can('set_todo'); - $e->add_amnesty({tag => 'TODO', details => $todo}); + return $e; + }, - # Set todo on ok's - if ($e->isa('Test2::Event::Ok')) { - $e->set_effective_pass(1); - - if (my $result = $e->get_meta(__PACKAGE__)) { - $result->{reason} ||= $todo; - $result->{type} ||= 'todo'; - $result->{ok} = 1; - } - } + inherit => 1, - return $e; - }, inherit => 1); + intercept_inherit => { + clean => sub { + my %params = @_; + + my $state = $params{state}; + my $trace = $params{trace}; + + my $epkg = $$epkgr; + my $cpkg = $trace->{frame}->[0]; + + no strict 'refs'; + no warnings 'once'; + + $state->{+__PACKAGE__} = {}; + $state->{+__PACKAGE__}->{"$cpkg\::TODO"} = ${"$cpkg\::TODO"} if $cpkg; + $state->{+__PACKAGE__}->{"$epkg\::TODO"} = ${"$epkg\::TODO"} if $epkg; + + ${"$cpkg\::TODO"} = undef if $cpkg; + ${"$epkg\::TODO"} = undef if $epkg; + }, + restore => sub { + my %params = @_; + my $state = $params{state}; + + no strict 'refs'; + no warnings 'once'; + + for my $item (keys %{$state->{+__PACKAGE__}}) { + no strict 'refs'; + no warnings 'once'; + + ${"$item"} = $state->{+__PACKAGE__}->{$item}; + } + }, + }, + ); } { @@ -922,9 +962,14 @@ local( $@, $!, $SIG{__DIE__} ); # isolate eval my($pack, $file, $line) = $ctx->trace->call(); + my $warning_bits = $ctx->trace->warning_bits; + # convert this to a code string so the BEGIN doesn't have to close + # over it, which can lead to issues with Devel::Cover + my $bits_code = defined $warning_bits ? qq["\Q$warning_bits\E"] : 'undef'; # This is so that warnings come out at the caller's level $succ = eval qq[ +BEGIN {\${^WARNING_BITS} = $bits_code}; #line $line "(eval in cmp_ok) $file" \$test = (\$got $type \$expect); 1; diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test/More.pm perl-5.34.0/cpan/Test-Simple/lib/Test/More.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test/More.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test/More.pm 2020-11-18 22:09:15.000000000 +0000 @@ -17,7 +17,7 @@ return warn @_, " at $file line $line\n"; } -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Test::Builder::Module; our @ISA = qw(Test::Builder::Module); diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test/Simple.pm perl-5.34.0/cpan/Test-Simple/lib/Test/Simple.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test/Simple.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test/Simple.pm 2020-11-18 22:09:15.000000000 +0000 @@ -4,7 +4,7 @@ use strict; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Test::Builder::Module; our @ISA = qw(Test::Builder::Module); diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test/Tester/Capture.pm perl-5.34.0/cpan/Test-Simple/lib/Test/Tester/Capture.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test/Tester/Capture.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test/Tester/Capture.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ package Test::Tester::Capture; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Test::Builder; diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm perl-5.34.0/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm 2020-11-18 22:09:15.000000000 +0000 @@ -3,7 +3,7 @@ package Test::Tester::CaptureRunner; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Test::Tester::Capture; diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test/Tester/Delegate.pm perl-5.34.0/cpan/Test-Simple/lib/Test/Tester/Delegate.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test/Tester/Delegate.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test/Tester/Delegate.pm 2020-11-18 22:09:15.000000000 +0000 @@ -3,7 +3,7 @@ package Test::Tester::Delegate; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Scalar::Util(); diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test/Tester.pm perl-5.34.0/cpan/Test-Simple/lib/Test/Tester.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test/Tester.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test/Tester.pm 2020-11-18 22:09:15.000000000 +0000 @@ -18,7 +18,7 @@ use vars qw( @ISA @EXPORT ); -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; @EXPORT = qw( run_tests check_tests check_test cmp_results show_space ); @ISA = qw( Exporter ); diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test/use/ok.pm perl-5.34.0/cpan/Test-Simple/lib/Test/use/ok.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test/use/ok.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test/use/ok.pm 2020-11-18 22:09:15.000000000 +0000 @@ -1,7 +1,7 @@ package Test::use::ok; use 5.005; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; __END__ diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/API/Breakage.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/API/Breakage.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/API/Breakage.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/API/Breakage.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Test2::Util qw/pkg_to_file/; @@ -170,7 +170,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/API/Context.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/API/Context.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/API/Context.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/API/Context.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Carp qw/confess croak/; @@ -1009,7 +1009,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/API/Instance.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/API/Instance.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/API/Instance.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/API/Instance.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; our @CARP_NOT = qw/Test2::API Test2::API::Instance Test2::IPC::Driver Test2::Formatter/; use Carp qw/confess carp/; @@ -812,7 +812,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/API/InterceptResult/Event.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/API/InterceptResult/Event.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/API/InterceptResult/Event.pm 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/API/InterceptResult/Event.pm 2020-11-18 22:09:15.000000000 +0000 @@ -0,0 +1,1087 @@ +package Test2::API::InterceptResult::Event; +use strict; +use warnings; + +our $VERSION = '1.302183'; + +use List::Util qw/first/; +use Test2::Util qw/pkg_to_file/; +use Scalar::Util qw/reftype blessed/; + +use Storable qw/dclone/; +use Carp qw/confess croak/; + +use Test2::API::InterceptResult::Facet; +use Test2::API::InterceptResult::Hub; + +use Test2::Util::HashBase qw{ + +causes_failure + import( + # We will replace the sub later + require => 1, + on_require_error => sub { 1 }, + search_path => ['Test2::EventFacet'], + max_depth => 3, + min_depth => 3, + ); + + for my $facet_type (__PACKAGE__->plugins) { + my ($key, $list); + eval { + $key = $facet_type->facet_key; + $list = $facet_type->is_list; + }; + next unless $key && defined($list); + + $FACETS{$key} = {list => $list, class => $facet_type, loaded => 1}; + } + } + + $FACETS{__GENERIC__} = {class => 'Test2::API::InterceptResult::Facet', loaded => 1}; +} + +sub facet_map { \%FACETS } + +sub facet_info { + my $facet = pop; + + return $FACETS{$facet} if exists $FACETS{$facet}; + + my $mname = ucfirst(lc($facet)); + $mname =~ s/s$//; + + for my $name ($mname, "${mname}s") { + my $file = "Test2/EventFacet/$name.pm"; + my $class = "Test2::EventFacet::$name"; + + local $@; + my $ok = eval { + require $file; + + my $key = $class->facet_key; + my $list = $class->is_list; + + $FACETS{$key} = {list => $list, class => $class, loaded => 1}; + $FACETS{$facet} = $FACETS{$key} if $facet ne $key; + + 1; + }; + + return $FACETS{$facet} if $ok && $FACETS{$facet}; + } + + return $FACETS{$facet} = $FACETS{__GENERIC__}; +} + +sub init { + my $self = shift; + + my $rc = $self->{+RESULT_CLASS} ||= 'Test2::API::InterceptResult'; + my $rc_file = pkg_to_file($rc); + require($rc_file) unless $INC{$rc_file}; + + my $fd = $self->{+FACET_DATA} ||= {}; + + for my $facet (keys %$fd) { + my $finfo = $self->facet_info($facet); + my $is_list = $finfo->{list}; + next unless defined $is_list; + + my $type = reftype($fd->{$facet}); + + if ($is_list) { + confess "Facet '$facet' is a list facet, but got '$type' instead of an arrayref" + unless $type eq 'ARRAY'; + + for my $item (@{$fd->{$facet}}) { + my $itype = reftype($item); + next if $itype eq 'HASH'; + + confess "Got item type '$itype' in list-facet '$facet', all items must be hashrefs"; + } + } + else { + confess "Facet '$facet' is an only-one facet, but got '$type' instead of a hashref" + unless $type eq 'HASH'; + } + } +} + +sub clone { + my $self = shift; + my $class = blessed($self); + + my %data = %$self; + + $data{+FACET_DATA} = dclone($data{+FACET_DATA}); + + return bless(\%data, $class); +} + +sub _facet_class { + my $self = shift; + my ($name) = @_; + + my $spec = $self->facet_info($name); + my $class = $spec->{class}; + unless ($spec->{loaded}) { + my $file = pkg_to_file($class); + require $file unless $INC{$file}; + $spec->{loaded} = 1; + } + + return $class; +} + +sub the_facet { + my $self = shift; + my ($name) = @_; + + return undef unless defined $self->{+FACET_DATA}->{$name}; + + my $data = $self->{+FACET_DATA}->{$name}; + + my $type = reftype($data) or confess "Facet '$name' has a value that is not a reference, this should not happen"; + + return $self->_facet_class($name)->new(%{dclone($data)}) + if $type eq 'HASH'; + + if ($type eq 'ARRAY') { + return undef unless @$data; + croak "'the_facet' called for facet '$name', but '$name' has '" . @$data . "' items" if @$data != 1; + return $self->_facet_class($name)->new(%{dclone($data->[0])}); + } + + die "Invalid facet data type: $type"; +} + +sub facet { + my $self = shift; + my ($name) = @_; + + return () unless exists $self->{+FACET_DATA}->{$name}; + + my $data = $self->{+FACET_DATA}->{$name}; + + my $type = reftype($data) or confess "Facet '$name' has a value that is not a reference, this should not happen"; + + my @out; + @out = ($data) if $type eq 'HASH'; + @out = (@$data) if $type eq 'ARRAY'; + + my $class = $self->_facet_class($name); + + return map { $class->new(%{dclone($_)}) } @out; +} + +sub causes_failure { + my $self = shift; + + return $self->{+CAUSES_FAILURE} + if exists $self->{+CAUSES_FAILURE}; + + my $hub = Test2::API::InterceptResult::Hub->new(); + $hub->process($self); + + return $self->{+CAUSES_FAILURE} = ($hub->is_passing ? 0 : 1); +} + +sub causes_fail { shift->causes_failure } + +sub trace { $_[0]->facet('trace') } +sub the_trace { $_[0]->the_facet('trace') } +sub frame { my $t = $_[0]->the_trace or return undef; $t->{frame} || undef } +sub trace_details { my $t = $_[0]->the_trace or return undef; $t->{details} || undef } +sub trace_package { my $f = $_[0]->frame or return undef; $f->[0] || undef } +sub trace_file { my $f = $_[0]->frame or return undef; $f->[1] || undef } +sub trace_line { my $f = $_[0]->frame or return undef; $f->[2] || undef } +sub trace_subname { my $f = $_[0]->frame or return undef; $f->[3] || undef } +sub trace_tool { my $f = $_[0]->frame or return undef; $f->[3] || undef } + +sub trace_signature { my $t = $_[0]->the_trace or return undef; Test2::EventFacet::Trace::signature($t) || undef } + +sub brief { + my $self = shift; + + my @try = qw{ + bailout_brief + error_brief + assert_brief + plan_brief + }; + + for my $meth (@try) { + my $got = $self->$meth or next; + return $got; + } + + return; +} + +sub flatten { + my $self = shift; + my %params = @_; + + my $todo = {%{$self->{+FACET_DATA}}}; + delete $todo->{hubs}; + delete $todo->{meta}; + delete $todo->{trace}; + + my $out = $self->summary; + delete $out->{brief}; + delete $out->{facets}; + delete $out->{trace_tool}; + delete $out->{trace_details} unless defined($out->{trace_details}); + + for my $tagged (grep { my $finfo = $self->facet_info($_); $finfo->{list} && $finfo->{class}->can('tag') } keys %FACETS, keys %$todo) { + my $set = delete $todo->{$tagged} or next; + + my $fd = $self->{+FACET_DATA}; + my $has_assert = $self->has_assert; + my $has_parent = $self->has_subtest; + my $has_fatal_error = $self->has_errors && grep { $_->{fail} } $self->errors; + + next if $tagged eq 'amnesty' && !($has_assert || $has_parent || $has_fatal_error); + + for my $item (@$set) { + push @{$out->{lc($item->{tag})}} => $item->{fail} ? "FATAL: $item->{details}" : $item->{details}; + } + } + + if (my $assert = delete $todo->{assert}) { + $out->{pass} = $assert->{pass}; + $out->{name} = $assert->{details}; + } + + if (my $parent = delete $todo->{parent}) { + delete $out->{subtest}->{bailed_out} unless defined $out->{subtest}->{bailed_out}; + delete $out->{subtest}->{skip_reason} unless defined $out->{subtest}->{skip_reason}; + + if (my $res = $self->subtest_result) { + my $state = $res->state; + delete $state->{$_} for grep { !defined($state->{$_}) } keys %$state; + $out->{subtest} = $state; + $out->{subevents} = $res->flatten(%params) + if $params{include_subevents}; + } + } + + if (my $control = delete $todo->{control}) { + if ($control->{halt}) { + $out->{bailed_out} = $control->{details} || 1; + } + elsif(defined $control->{details}) { + $out->{control} = $control->{details}; + } + } + + if (my $plan = delete $todo->{plan}) { + $out->{plan} = $self->plan_brief; + $out->{plan} =~ s/^PLAN\s*//; + } + + for my $other (keys %$todo) { + my $data = $todo->{$other} or next; + + if (reftype($data) eq 'ARRAY') { + if (!$out->{$other} || reftype($out->{$other}) eq 'ARRAY') { + for my $item (@$data) { + push @{$out->{$other}} => $item->{details} if defined $item->{details}; + } + } + } + else { + $out->{$other} = $data->{details} if defined($data->{details}) && !defined($out->{$other}); + } + } + + if (my $fields = $params{fields}) { + $out = { map {exists($out->{$_}) ? ($_ => $out->{$_}) : ()} @$fields }; + } + + if (my $remove = $params{remove}) { + delete $out->{$_} for @$remove; + } + + return $out; +} + +sub summary { + my $self = shift; + my %params = @_; + + my $out = { + brief => $self->brief || '', + + causes_failure => $self->causes_failure, + + trace_line => $self->trace_line, + trace_file => $self->trace_file, + trace_tool => $self->trace_subname, + trace_details => $self->trace_details, + + facets => [ sort keys(%{$self->{+FACET_DATA}}) ], + }; + + if (my $fields = $params{fields}) { + $out = { map {exists($out->{$_}) ? ($_ => $out->{$_}) : ()} @$fields }; + } + + if (my $remove = $params{remove}) { + delete $out->{$_} for @$remove; + } + + return $out; +} + +sub has_assert { $_[0]->{+FACET_DATA}->{assert} ? 1 : 0 } +sub the_assert { $_[0]->the_facet('assert') } +sub assert { $_[0]->facet('assert') } + +sub assert_brief { + my $self = shift; + + my $fd = $self->{+FACET_DATA}; + my $as = $fd->{assert} or return; + my $am = $fd->{amnesty}; + + my $out = $as->{pass} ? "PASS" : "FAIL"; + $out .= " with amnesty" if $am; + return $out; +} + +sub has_subtest { $_[0]->{+FACET_DATA}->{parent} ? 1 : 0 } +sub the_subtest { $_[0]->the_facet('parent') } +sub subtest { $_[0]->facet('parent') } + +sub subtest_result { + my $self = shift; + + my $parent = $self->{+FACET_DATA}->{parent} or return; + my $children = $parent->{children} || []; + + $children = $self->{+RESULT_CLASS}->new(@$children)->upgrade + unless blessed($children) && $children->isa($self->{+RESULT_CLASS}); + + return $children; +} + +sub has_bailout { $_[0]->bailout ? 1 : 0 } +sub the_bailout { my ($b) = $_[0]->bailout; $b } + +sub bailout { + my $self = shift; + my $control = $self->{+FACET_DATA}->{control} or return; + return $control if $control->{halt}; + return; +} + +sub bailout_brief { + my $self = shift; + my $bo = $self->bailout or return; + + my $reason = $bo->{details} or return "BAILED OUT"; + return "BAILED OUT: $reason"; +} + +sub bailout_reason { + my $self = shift; + my $bo = $self->bailout or return; + return $bo->{details} || ''; +} + +sub has_plan { $_[0]->{+FACET_DATA}->{plan} ? 1 : 0 } +sub the_plan { $_[0]->the_facet('plan') } +sub plan { $_[0]->facet('plan') } + +sub plan_brief { + my $self = shift; + + my $plan = $self->{+FACET_DATA}->{plan} or return; + + my $base = $self->_plan_brief($plan); + + my $reason = $plan->{details} or return $base; + return "$base: $reason"; +} + +sub _plan_brief { + my $self = shift; + my ($plan) = @_; + + return 'NO PLAN' if $plan->{none}; + return "SKIP ALL" if $plan->{skip} || !$plan->{count}; + return "PLAN $plan->{count}"; +} + +sub has_amnesty { $_[0]->{+FACET_DATA}->{amnesty} ? 1 : 0 } +sub the_amnesty { $_[0]->the_facet('amnesty') } +sub amnesty { $_[0]->facet('amnesty') } +sub amnesty_reasons { map { $_->{details} } $_[0]->amnesty } + +sub has_todos { &first(sub { uc($_->{tag}) eq 'TODO' }, $_[0]->amnesty) ? 1 : 0 } +sub todos { grep { uc($_->{tag}) eq 'TODO' } $_[0]->amnesty } +sub todo_reasons { map { $_->{details} || 'TODO' } $_[0]->todos } + +sub has_skips { &first(sub { uc($_->{tag}) eq 'SKIP' }, $_[0]->amnesty) ? 1 : 0 } +sub skips { grep { uc($_->{tag}) eq 'SKIP' } $_[0]->amnesty } +sub skip_reasons { map { $_->{details} || 'SKIP' } $_[0]->skips } + +my %TODO_OR_SKIP = (SKIP => 1, TODO => 1); +sub has_other_amnesty { &first( sub { !$TODO_OR_SKIP{uc($_->{tag})} }, $_[0]->amnesty) ? 1 : 0 } +sub other_amnesty { grep { !$TODO_OR_SKIP{uc($_->{tag})} } $_[0]->amnesty } +sub other_amnesty_reasons { map { $_->{details} || $_->{tag} || 'AMNESTY' } $_[0]->other_amnesty } + +sub has_errors { $_[0]->{+FACET_DATA}->{errors} ? 1 : 0 } +sub the_errors { $_[0]->the_facet('errors') } +sub errors { $_[0]->facet('errors') } +sub error_messages { map { $_->{details} || $_->{tag} || 'ERROR' } $_[0]->errors } + +sub error_brief { + my $self = shift; + + my $errors = $self->{+FACET_DATA}->{errors} or return; + + my $base = @$errors > 1 ? "ERRORS" : "ERROR"; + + return $base unless @$errors; + + my ($msg, @extra) = split /[\n\r]+/, $errors->[0]->{details}; + + my $out = "$base: $msg"; + + $out .= " [...]" if @extra || @$errors > 1; + + return $out; +} + +sub has_info { $_[0]->{+FACET_DATA}->{info} ? 1 : 0 } +sub the_info { $_[0]->the_facet('info') } +sub info { $_[0]->facet('info') } +sub info_messages { map { $_->{details} } $_[0]->info } + +sub has_diags { &first(sub { uc($_->{tag}) eq 'DIAG' }, $_[0]->info) ? 1 : 0 } +sub diags { grep { uc($_->{tag}) eq 'DIAG' } $_[0]->info } +sub diag_messages { map { $_->{details} || 'DIAG' } $_[0]->diags } + +sub has_notes { &first(sub { uc($_->{tag}) eq 'NOTE' }, $_[0]->info) ? 1 : 0 } +sub notes { grep { uc($_->{tag}) eq 'NOTE' } $_[0]->info } +sub note_messages { map { $_->{details} || 'NOTE' } $_[0]->notes } + +my %NOTE_OR_DIAG = (NOTE => 1, DIAG => 1); +sub has_other_info { &first(sub { !$NOTE_OR_DIAG{uc($_->{tag})} }, $_[0]->info) ? 1 : 0 } +sub other_info { grep { !$NOTE_OR_DIAG{uc($_->{tag})} } $_[0]->info } +sub other_info_messages { map { $_->{details} || $_->{tag} || 'INFO' } $_[0]->other_info } + +1; + +__END__ + +=pod + +=encoding UTF-8 + +=head1 NAME + +Test2::API::InterceptResult::Event - Representation of an event for use in +testing other test tools. + +=head1 DESCRIPTION + +C from L returns an instance of +L which is a blessed arrayref of +L objects. + +This POD documents the methods of these events, which are mainly provided for +you to use when testing your test tools. + +=head1 SYNOPSIS + + use Test2::V0; + use Test2::API qw/intercept/; + + my $events = intercept { + ok(1, "A passing assertion"); + plan(1); + }; + + # This will convert all events into instances of + # Test2::API::InterceptResult::Event. Until we do this they are the + # original Test::Event::* instances + $events->upgrade(in_place => 1); + + # Now we can get individual events in this form + my $assert = $events->[0]; + my $plan = $events->[1]; + + # Or we can operate on all events at once: + my $flattened = $events->flatten; + is( + $flattened, + [ + { + causes_failure => 0, + + name => 'A passing assertion', + pass => 1, + + trace_file => 'xxx.t', + trace_line => 5, + }, + { + causes_failure => 0, + + plan => 1, + + trace_file => 'xxx.t', + trace_line => 6, + }, + ], + "Flattened both events and returned an arrayref of the results + ); + +=head1 METHODS + +=head2 !!! IMPORTANT NOTES ON DESIGN !!! + +Please pay attention to what these return, many return a scalar when +applicable or an empty list when not (as opposed to undef). Many also always +return a list of 0 or more items. Some always return a scalar. Note that none +of the methods care about context, their behavior is consistent regardless of +scalar, list, or void context. + +This was done because this class was specifically designed to be used in a list +and generate more lists in bulk operations. Sometimes in a map you want nothing +to show up for the event, and you do not want an undef in its place. In general +single event instances are not going to be used alone, though that is allowed. + +As a general rule any method prefixed with C implies the event should +have exactly 1 of the specified item, and and exception will be thrown if there +are 0, or more than 1 of the item. + +=head2 ATTRIBUTES + +=over 4 + +=item $hashref = $event->facet_data + +This will return the facet data hashref, which is all Test2 cares about for any +given event. + +=item $class = $event->result_class + +This is normally L. This is set at construction so +that subtest results can be turned into instances of it on demand. + +=back + +=head2 DUPLICATION + +=over 4 + +=item $copy = $event->clone + +Create a deep copy of the event. Modifying either event will not effect the +other. + +=back + +=head2 CONDENSED MULTI-FACET DATA + +=over 4 + +=item $bool = $event->causes_failure + +=item $bool = $event->causes_fail + +These are both aliases of the same functionality. + +This will always return either a true value, or a false value. This never +returns a list. + +This method may be relatively slow (still super fast) because it determines +pass or fail by creating an instance of L and asking it to process +the event, and then asks the hub for its pass/fail state. This is slower than +bulding in logic to do the check, but it is more reliable as it will always +tell you what the hub thinks, so the logic will never be out of date relative +to the Test2 logic that actually cares. + +=item STRING_OR_EMPTY_LIST = $event->brief + +Not all events have a brief, some events are not rendered by the formatter, +others have no "brief" data worth seeing. When this is the case an empty list +is returned. This is done intentionally so it can be used in a map operation +without having C being included in the result. + +When a brief can be generated it is always a single 1-line string, and is +returned as-is, not in a list. + +Possible briefs: + + # From control facets + "BAILED OUT" + "BAILED OUT: $why" + + # From error facets + "ERROR" + "ERROR: $message" + "ERROR: $partial_message [...]" + "ERRORS: $first_error_message [...]" + + # From assert facets + "PASS" + "FAIL" + "PASS with amnesty" + "FAIL with amnesty" + + # From plan facets + "PLAN $count" + "NO PLAN" + "SKIP ALL" + "SKIP ALL: $why" + +Note that only the first applicable brief is returned. This is essnetially a +poor-mans TAP that only includes facets that could (but not necessarily do) +cause a failure. + +=item $hashref = $event->flatten + +=item $hashref = $event->flatten(include_subevents => 1) + +This ALWAYS returns a hashref. This puts all the most useful data for the most +interesting facets into a single hashref for easy validation. + +If there are no meaningful facets this will return an empty hashref. + +If given the 'include_subevents' parameter it will also include subtest data: + +Here is a list of EVERY possible field. If a field is not applicable it will +not be present. + +=over 4 + +=item always present + + causes_failure => 1, # Always present + +=item Present if the event has a trace facet + + trace_line => 42, + trace_file => 'Foo/Bar.pm', + trace_details => 'Extra trace details', # usually not present + +=item If an assertion is present + + pass => 0, + name => "1 + 1 = 2, so math works", + +=item If a plan is present: + + plan => $count_or_SKIP_ALL_or_NO_PLAN, + +=item If amnesty facets are present + +You get an array for each type that is present. + + todo => [ # Yes you could be under multiple todos, this will list them all. + "I will fix this later", + "I promise to fix these", + ], + + skip => ["This will format the main drive, do not run"], + + ... => ["Other amnesty"] + +=item If Info (note/diag) facets are present + +You get an arrayref for any that are present, the key is not defined if they are not present. + + diag => [ + "Test failed at Foo/Bar.pm line 42", + "You forgot to tie your boots", + ], + + note => ["Your boots are red"], + + ... => ["Other info"], + +=item If error facets are present + +Always an arrayref + + error => [ + "non fatal error (does not cause test failure, just an FYI", + "FATAL: This is a fatal error (causes failure)", + ], + + # Errors can have alternative tags, but in practice are always 'error', + # listing this for completeness. + ... => [ ... ] + +=item Present if the event is a subtest + + subtest => { + count => 2, # Number of assertions made + failed => 1, # Number of test failures seen + is_passing => 0, # Boolean, true if the test would be passing + # after the events are processed. + + plan => 2, # Plan, either a number, undef, 'SKIP', or 'NO PLAN' + follows_plan => 1, # True if there is a plan and it was followed. + # False if the plan and assertions did not + # match, undef if no plan was present in the + # event list. + + bailed_out => "foo", # if there was a bail-out in the + # events in this will be a string explaining + # why there was a bailout, if no reason was + # given this will simply be set to true (1). + + skip_reason => "foo", # If there was a skip_all this will give the + # reason. + }, + +if C<< (include_subtest => 1) >> was provided as a parameter then the following +will be included. This is the result of turning all subtest child events into +an L instance and calling the C method on +it. + + subevents => Test2::API::InterceptResult->new(@child_events)->flatten(...), + +=item If a bail-out is being requested + +If no reason was given this will be set to 1. + + bailed_out => "reason", + +=back + +=item $hashref = $event->summary() + +This returns a limited summary. See C, which is usually a better +option. + + { + brief => $event->brief || '', + + causes_failure => $event->causes_failure, + + trace_line => $event->trace_line, + trace_file => $event->trace_file, + trace_tool => $event->trace_subname, + trace_details => $event->trace_details, + + facets => [ sort keys(%{$event->{+FACET_DATA}}) ], + } + +=back + +=head2 DIRECT ARBITRARY FACET ACCESS + +=over 4 + +=item @list_of_facets = $event->facet($name) + +This always returns a list of 0 or more items. This fetches the facet instances +from the event. For facets like 'assert' this will always return 0 or 1 +item. For events like 'info' (diags, notes) this will return 0 or more +instances, once for each instance of the facet. + +These will be blessed into the proper L subclass. If no +subclass can be found it will be blessed as an +L generic facet class. + +=item $undef_or_facet = $event->the_facet($name) + +If you know you will have exactly 1 instance of a facet you can call this. + +If you are correct and there is exactly one instance of the facet it will +always return the hashref. + +If there are 0 instances of the facet this will reutrn undef, not an empty +list. + +If there are more than 1 instance this will throw an exception because your +assumption was incorrect. + +=back + +=head2 TRACE FACET + +=over 4 + +=item @list_of_facets = $event->trace + +TODO + +=item $undef_or_hashref = $event->the_trace + +This returns the trace hashref, or undef if it is not present. + +=item $undef_or_arrayref = $event->frame + +If a trace is present, and has a caller frame, this will be an arrayref: + + [$package, $file, $line, $subname] + +If the trace is not present, or has no caller frame this will return undef. + +=item $undef_or_string = $event->trace_details + +This is usually undef, but occasionally has a string that overrides the +file/line number debugging a trace usually provides on test failure. + +=item $undef_or_string = $event->trace_package + +Same as C<(caller())[0]>, the first element of the trace frame. + +Will be undef if not present. + +=item $undef_or_string = $event->trace_file + +Same as C<(caller())[1]>, the second element of the trace frame. + +Will be undef if not present. + +=item $undef_or_integer = $event->trace_line + +Same as C<(caller())[2]>, the third element of the trace frame. + +Will be undef if not present. + +=item $undef_or_string = $event->trace_subname + +=item $undef_or_string = $event->trace_tool + +Aliases for the same thing + +Same as C<(caller($level))[4]>, the fourth element of the trace frame. + +Will be undef if not present. + +=item $undef_or_string = $event->trace_signature + +A string that is a unique signature for the trace. If a single context +generates multiple events they will all have the same signature. This can be +used to tie assertions and diagnostics sent as seperate events together after +the fact. + +=back + +=head2 ASSERT FACET + +=over 4 + +=item $bool = $event->has_assert + +Returns true if the event has an assert facet, false if it does not. + +=item $undef_or_hashref = $event->the_assert + +Returns the assert facet if present, undef if it is not. + +=item @list_of_facets = $event->assert + +TODO + +=item EMPTY_LIST_OR_STRING = $event->assert_brief + +Returns a string giving a brief of the assertion if an assertion is present. +Returns an empty list if no assertion is present. + +=back + +=head2 SUBTESTS (PARENT FACET) + +=over 4 + +=item $bool = $event->has_subtest + +True if a subetest is present in this event. + +=item $undef_or_hashref = $event->the_subtest + +Get the one subtest if present, otherwise undef. + +=item @list_of_facets = $event->subtest + +TODO + +=item EMPTY_LIST_OR_OBJECT = $event->subtest_result + +Returns an empty list if there is no subtest. + +Get an instance of L representing the subtest. + +=back + +=head2 CONTROL FACET (BAILOUT, ENCODING) + +=over 4 + +=item $bool = $event->has_bailout + +True if there was a bailout + +=item $undef_hashref = $event->the_bailout + +Return the control facet if it requested a bailout. + +=item EMPTY_LIST_OR_HASHREF = $event->bailout + +Get a list of 0 or 1 hashrefs. The hashref will be the control facet if a +bail-out was requested. + +=item EMPTY_LIST_OR_STRING = $event->bailout_brief + +Get the brief of the balout if present. + +=item EMPTY_LIST_OR_STRING = $event->bailout_reason + +Get the reason for the bailout, an empty string if no reason was provided, or +an empty list if there was no bailout. + +=back + +=head2 PLAN FACET + +TODO + +=over 4 + +=item $bool = $event->has_plan + +=item $undef_or_hashref = $event->the_plan + +=item @list_if_hashrefs = $event->plan + +=item EMPTY_LIST_OR_STRING $event->plan_brief + +=back + +=head2 AMNESTY FACET (TODO AND SKIP) + +TODO + +=over 4 + +=item $event->has_amnesty + +=item $event->the_amnesty + +=item $event->amnesty + +=item $event->amnesty_reasons + +=item $event->has_todos + +=item $event->todos + +=item $event->todo_reasons + +=item $event->has_skips + +=item $event->skips + +=item $event->skip_reasons + +=item $event->has_other_amnesty + +=item $event->other_amnesty + +=item $event->other_amnesty_reasons + +=back + +=head2 ERROR FACET (CAPTURED EXCEPTIONS) + +TODO + +=over 4 + +=item $event->has_errors + +=item $event->the_errors + +=item $event->errors + +=item $event->error_messages + +=item $event->error_brief + +=back + +=head2 INFO FACET (DIAG, NOTE) + +TODO + +=over 4 + +=item $event->has_info + +=item $event->the_info + +=item $event->info + +=item $event->info_messages + +=item $event->has_diags + +=item $event->diags + +=item $event->diag_messages + +=item $event->has_notes + +=item $event->notes + +=item $event->note_messages + +=item $event->has_other_info + +=item $event->other_info + +=item $event->other_info_messages + +=back + +=head1 SOURCE + +The source code repository for Test2 can be found at +F. + +=head1 MAINTAINERS + +=over 4 + +=item Chad Granum Eexodist@cpan.orgE + +=back + +=head1 AUTHORS + +=over 4 + +=item Chad Granum Eexodist@cpan.orgE + +=back + +=head1 COPYRIGHT + +Copyright 2020 Chad Granum Eexodist@cpan.orgE. + +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +See F + +=cut diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/API/InterceptResult/Facet.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/API/InterceptResult/Facet.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/API/InterceptResult/Facet.pm 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/API/InterceptResult/Facet.pm 2020-11-18 22:09:15.000000000 +0000 @@ -0,0 +1,25 @@ +package Test2::API::InterceptResult::Facet; +use strict; +use warnings; + +our $VERSION = '1.302183'; + +BEGIN { + require Test2::EventFacet; + our @ISA = ('Test2::EventFacet'); +} + +our $AUTOLOAD; +sub AUTOLOAD { + my $self = shift; + + my $name = $AUTOLOAD; + $name =~ s/^.*:://g; + + return undef unless exists $self->{$name}; + return $self->{$name}; +} + +sub DESTROY {} + +1; diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/API/InterceptResult/Hub.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/API/InterceptResult/Hub.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/API/InterceptResult/Hub.pm 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/API/InterceptResult/Hub.pm 2020-11-18 22:09:15.000000000 +0000 @@ -0,0 +1,66 @@ +package Test2::API::InterceptResult::Hub; +use strict; +use warnings; + +our $VERSION = '1.302183'; + +BEGIN { require Test2::Hub; our @ISA = qw(Test2::Hub) } +use Test2::Util::HashBase; + +sub init { + my $self = shift; + $self->SUPER::init(); + $self->{+NESTED} = 0; +} + +sub inherit { + my $self = shift; + + $self->{+NESTED} = 0; +} + +sub terminate { } + +1; + +__END__ + +=pod + +=encoding UTF-8 + +=head1 NAME + +Test2::API::InterceptResult::Hub - Hub used by InterceptResult. + +=head1 SOURCE + +The source code repository for Test2 can be found at +F. + +=head1 MAINTAINERS + +=over 4 + +=item Chad Granum Eexodist@cpan.orgE + +=back + +=head1 AUTHORS + +=over 4 + +=item Chad Granum Eexodist@cpan.orgE + +=back + +=head1 COPYRIGHT + +Copyright 2020 Chad Granum Eexodist@cpan.orgE. + +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +See F + +=cut diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/API/InterceptResult/Squasher.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/API/InterceptResult/Squasher.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/API/InterceptResult/Squasher.pm 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/API/InterceptResult/Squasher.pm 2020-11-18 22:09:15.000000000 +0000 @@ -0,0 +1,196 @@ +package Test2::API::InterceptResult::Squasher; +use strict; +use warnings; + +our $VERSION = '1.302183'; + +use Carp qw/croak/; +use List::Util qw/first/; + +use Test2::Util::HashBase qw{ + {+EVENTS}; +} + +sub can_squash { + my $self = shift; + my ($event) = @_; + + # No info, no squash + return unless $event->has_info; + + # Do not merge up if one of these is true + return if first { $event->$_ } 'causes_fail', 'has_assert', 'has_bailout', 'has_errors', 'has_plan', 'has_subtest'; + + # Signature if we can squash + return $event->trace_signature; +} + +sub process { + my $self = shift; + my ($event) = @_; + + return if $self->squash_up($event); + return if $self->squash_down($event); + + $self->flush_down($event); + + push @{$self->{+EVENTS}} => $event; + + return; +} + +sub squash_down { + my $self = shift; + my ($event) = @_; + + my $sig = $self->can_squash($event) + or return; + + $self->flush_down() + if $self->{+DOWN_SIG} && $self->{+DOWN_SIG} ne $sig; + + $self->{+DOWN_SIG} ||= $sig; + push @{$self->{+DOWN_BUFFER}} => $event; + + return 1; +} + +sub flush_down { + my $self = shift; + my ($into) = @_; + + my $sig = delete $self->{+DOWN_SIG}; + my $buffer = delete $self->{+DOWN_BUFFER}; + + return unless $buffer && @$buffer; + + my $fsig = $into ? $into->trace_signature : undef; + + if ($fsig && $fsig eq $sig) { + $self->squash($into, @$buffer); + } + else { + push @{$self->{+EVENTS}} => @$buffer if $buffer; + } +} + +sub clear_up { + my $self = shift; + + return unless $self->{+UP_CLEAR}; + + delete $self->{+UP_INTO}; + delete $self->{+UP_SIG}; + delete $self->{+UP_CLEAR}; +} + +sub squash_up { + my $self = shift; + my ($event) = @_; + no warnings 'uninitialized'; + + $self->clear_up; + + if ($event->has_assert) { + if(my $sig = $event->trace_signature) { + $self->{+UP_INTO} = $event; + $self->{+UP_SIG} = $sig; + $self->{+UP_CLEAR} = 0; + } + else { + $self->{+UP_CLEAR} = 1; + $self->clear_up; + } + + return; + } + + my $into = $self->{+UP_INTO} or return; + + # Next iteration should clear unless something below changes that + $self->{+UP_CLEAR} = 1; + + # Only merge into matching trace signatres + my $sig = $self->can_squash($event); + return unless $sig eq $self->{+UP_SIG}; + + # OK Merge! Do not clear merge in case the return event is also a matching sig diag-only + $self->{+UP_CLEAR} = 0; + + $self->squash($into, $event); + + return 1; +} + +sub squash { + my $self = shift; + my ($into, @from) = @_; + push @{$into->facet_data->{info}} => $_->info for @from; +} + +sub DESTROY { + my $self = shift; + + return unless $self->{+EVENTS}; + $self->flush_down(); + return; +} + +1; + +__END__ + +=pod + +=encoding UTF-8 + +=head1 NAME + +Test2::API::InterceptResult::Squasher - Encapsulation of the algorithm that +squashes diags into assertions. + +=head1 DESCRIPTION + +Internal use only, please ignore. + +=head1 SOURCE + +The source code repository for Test2 can be found at +F. + +=head1 MAINTAINERS + +=over 4 + +=item Chad Granum Eexodist@cpan.orgE + +=back + +=head1 AUTHORS + +=over 4 + +=item Chad Granum Eexodist@cpan.orgE + +=back + +=head1 COPYRIGHT + +Copyright 2020 Chad Granum Eexodist@cpan.orgE. + +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +See F + +=cut diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/API/InterceptResult.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/API/InterceptResult.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/API/InterceptResult.pm 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/API/InterceptResult.pm 2020-11-18 22:09:15.000000000 +0000 @@ -0,0 +1,634 @@ +package Test2::API::InterceptResult; +use strict; +use warnings; + +our $VERSION = '1.302183'; + +use Scalar::Util qw/blessed/; +use Test2::Util qw/pkg_to_file/; +use Storable qw/dclone/; +use Carp qw/croak/; + +use Test2::API::InterceptResult::Squasher; +use Test2::API::InterceptResult::Event; +use Test2::API::InterceptResult::Hub; + +sub new { + croak "Called a method that creates a new instance in void context" unless defined wantarray; + my $class = shift; + bless([@_], $class); +} + +sub new_from_ref { + croak "Called a method that creates a new instance in void context" unless defined wantarray; + bless($_[1], $_[0]); +} + +sub clone { blessed($_[0])->new(@{dclone($_[0])}) } + +sub event_list { @{$_[0]} } + +sub _upgrade { + my $self = shift; + my ($event, %params) = @_; + + my $blessed = blessed($event); + + my $upgrade_class = $params{upgrade_class} ||= 'Test2::API::InterceptResult::Event'; + + return $event if $blessed && $event->isa($upgrade_class) && !$params{_upgrade_clone}; + + my $fd = dclone($blessed ? $event->facet_data : $event); + + my $class = $params{result_class} ||= blessed($self); + + if (my $parent = $fd->{parent}) { + $parent->{children} = $class->new_from_ref($parent->{children} || [])->upgrade(%params); + } + + my $uc_file = pkg_to_file($upgrade_class); + require($uc_file) unless $INC{$uc_file}; + return $upgrade_class->new(facet_data => $fd, result_class => $class); +} + +sub hub { + my $self = shift; + + my $hub = Test2::API::InterceptResult::Hub->new(); + $hub->process($_) for @$self; + $hub->set_ended(1); + + return $hub; +} + +sub state { + my $self = shift; + my %params = @_; + + my $hub = $self->hub; + + my $out = { + map {($_ => scalar $hub->$_)} qw/count failed is_passing plan bailed_out skip_reason/ + }; + + $out->{bailed_out} = $self->_upgrade($out->{bailed_out}, %params)->bailout_reason || 1 + if $out->{bailed_out}; + + $out->{follows_plan} = $hub->check_plan; + + return $out; +} + +sub upgrade { + my $self = shift; + my %params = @_; + + my @out = map { $self->_upgrade($_, %params, _upgrade_clone => 1) } @$self; + + return blessed($self)->new_from_ref(\@out) + unless $params{in_place}; + + @$self = @out; + return $self; +} + +sub squash_info { + my $self = shift; + my %params = @_; + + my @out; + + { + my $squasher = Test2::API::InterceptResult::Squasher->new(events => \@out); + # Clone to make sure we do not indirectly modify an existing one if it + # is already upgraded + $squasher->process($self->_upgrade($_, %params)->clone) for @$self; + $squasher->flush_down(); + } + + return blessed($self)->new_from_ref(\@out) + unless $params{in_place}; + + @$self = @out; + return $self; +} + +sub asserts { shift->grep(has_assert => @_) } +sub subtests { shift->grep(has_subtest => @_) } +sub diags { shift->grep(has_diags => @_) } +sub notes { shift->grep(has_notes => @_) } +sub errors { shift->grep(has_errors => @_) } +sub plans { shift->grep(has_plan => @_) } +sub causes_fail { shift->grep(causes_fail => @_) } +sub causes_failure { shift->grep(causes_failure => @_) } + +sub flatten { shift->map(flatten => @_) } +sub briefs { shift->map(brief => @_) } +sub summaries { shift->map(summary => @_) } +sub subtest_results { shift->map(subtest_result => @_) } +sub diag_messages { shift->map(diag_messages => @_) } +sub note_messages { shift->map(note_messages => @_) } +sub error_messages { shift->map(error_messages => @_) } + +no warnings 'once'; + +*map = sub { + my $self = shift; + my ($call, %params) = @_; + + my $args = $params{args} ||= []; + + return [map { local $_ = $self->_upgrade($_, %params); $_->$call(@$args) } @$self]; +}; + +*grep = sub { + my $self = shift; + my ($call, %params) = @_; + + my $args = $params{args} ||= []; + + my @out = grep { local $_ = $self->_upgrade($_, %params); $_->$call(@$args) } @$self; + + return blessed($self)->new_from_ref(\@out) + unless $params{in_place}; + + @$self = @out; + return $self; +}; + +1; + +__END__ + +=pod + +=encoding UTF-8 + +=head1 NAME + +Test2::API::InterceptResult - Representation of a list of events. + +=head1 DESCRIPTION + +This class represents a list of events, normally obtained using C +from L. + +This class is intended for people who with to verify the results of test tools +they write. + +This class provides methods to normalize, summarize, or map the list of events. +The output of these operations makes verifying your testing tools and the +events they generate significantly easier. In most cases this spares you from +needing a deep understanding of the event/facet model. + +=head1 SYNOPSIS + +Usually you get an instance of this class when you use C from +L. + + use Test2::V0; + use Test2::API qw/intercept/; + + my $events = intercept { + ok(1, "pass"); + ok(0, "fail"); + todo "broken" => sub { ok(0, "fixme") }; + plan 3; + }; + + # This is typically the most useful construct + # squash_info() merges assertions and diagnostics that are associated + # (and returns a new instance with the modifications) + # flatten() condenses the facet data into the key details for each event + # (and returns those structures in an arrayref) + is( + $events->squash_info->flatten(), + [ + { + causes_failure => 0, + + name => 'pass', + pass => 1, + + trace_file => 'xxx.t', + trace_line => 5, + }, + { + causes_failure => 1, + + name => 'fail', + pass => 0, + + trace_file => 'xxx.t', + trace_line => 6, + + # There can be more than one diagnostics message so this is + # always an array when present. + diag => ["Failed test 'fail'\nat xxx.t line 6."], + }, + { + causes_failure => 0, + + name => 'fixme', + pass => 0, + + trace_file => 'xxx.t', + trace_line => 7, + + # There can be more than one diagnostics message or todo + # reason, so these are always an array when present. + todo => ['broken'], + + # Diag message was turned into a note since the assertion was + # TODO + note => ["Failed test 'fixme'\nat xxx.t line 7."], + }, + { + causes_failure => 0, + + plan => 3, + + trace_file => 'xxx.t', + trace_line => 8, + }, + ], + "Flattened events look like we expect" + ); + +See L for a full description of what +C provides for each event. + +=head1 METHODS + +Please note that no methods modify the original instance unless asked to do so. + +=head2 CONSTRUCTION + +=over 4 + +=item $events = Test2::API::InterceptResult->new(@EVENTS) + +=item $events = Test2::API::InterceptResult->new_from_ref(\@EVENTS) + +These create a new instance of Test2::API::InterceptResult from the given +events. + +In the first form a new blessed arrayref is returned. In the 'new_from_ref' +form the reference you pass in is directly blessed. + +Both of these will throw an exception if called in void context. This is mainly +important for the 'filtering' methods listed below which normally return a new +instance, they throw an exception in such cases as it probably means someone +meant to filter the original in place. + +=item $clone = $events->clone() + +Make a clone of the original events. Note that this is a deep copy, the entire +structure is duplicated. This uses C from L to achieve the +deep clone. + +=back + +=head2 NORMALIZATION + +=over 4 + +=item @events = $events->event_list + +This returns all the events in list-form. + +=item $hub = $events->hub + +This returns a new L instance that has processed all the events +contained in the instance. This gives you a simple way to inspect the state +changes your events cause. + +=item $state = $events->state + +This returns a summary of the state of a hub after processing all the events. + + { + count => 2, # Number of assertions made + failed => 1, # Number of test failures seen + is_passing => 0, # Boolean, true if the test would be passing + # after the events are processed. + + plan => 2, # Plan, either a number, undef, 'SKIP', or 'NO PLAN' + follows_plan => 1, # True if there is a plan and it was followed. + # False if the plan and assertions did not + # match, undef if no plan was present in the + # event list. + + bailed_out => undef, # undef unless there was a bail-out in the + # events in which case this will be a string + # explaining why there was a bailout, if no + # reason was given this will simply be set to + # true (1). + + skip_reason => undef, # If there was a skip_all this will give the + # reason. + } + + +=item $new = $events->upgrade + +=item $events->upgrade(in_place => $BOOL) + +B This normally returns a new instance, leaving the original unchanged. +If you call it in void context it will throw an exception. If you want to +modify the original you must pass in the C<< in_place => 1 >> option. You may +call this in void context when you ask to modify it in place. The in-place form +returns the instance that was modified so you can chain methods. + +This will create a clone of the list where all events have been converted into +L instances. This is extremely helpful as +L provide a much better interface for +working with events. This allows you to avoid thinking about legacy event +types. + +This also means your tests against the list are not fragile if the tool +you are testing randomly changes what type of events it generates (IE Changing +from L to L, both make assertions and +both will normalize to identical (or close enough) +L instances. + +Really you almost always want this, the only reason it is not done +automatically is to make sure the C tool is backwards compatible. + +=item $new = $events->squash_info + +=item $events->squash_info(in_place => $BOOL) + +B This normally returns a new instance, leaving the original unchanged. +If you call it in void context it will throw an exception. If you want to +modify the original you must pass in the C<< in_place => 1 >> option. You may +call this in void context when you ask to modify it in place. The in-place form +returns the instance that was modified so you can chain methods. + +B All events in the new or modified instance will be converted to +L instances. There is no way to avoid this, +the squash operation requires the upgraded event class. + +L and many other legacy tools would send notes, diags, and +assertions as seperate events. A subtest in L would send a note +with the subtest name, the subtest assertion, and finally a diagnostics event +if the subtest failed. This method will normalize things by squashing the note +and diag into the same event as the subtest (This is different from putting +them into the subtest, which is not what happens). + +=back + +=head2 FILTERING + +B These normally return new instances, leaving the originals unchanged. +If you call them in void context they will throw exceptions. If you want to +modify the originals you must pass in the C<< in_place => 1 >> option. You may +call these in void context when you ask to modify them in place. The in-place +forms return the instance that was modified so you can chain methods. + +=head3 %PARAMS + +These all accept the same 2 optional parameters: + +=over 4 + +=item in_place => $BOOL + +When true the method will modify the instance in place instead of returning a +new instance. + +=item args => \@ARGS + +If you wish to pass parameters into the event method being used for filtering, +you may do so here. + +=back + +=head3 METHODS + +=over 4 + +=item $events->grep($CALL, %PARAMS) + +This is essentially: + + Test2::API::InterceptResult->new( + grep { $_->$CALL( @{$PARAMS{args}} ) } $self->event_list, + ); + +B that $CALL is called on an upgraded version of the event, though +the events returned will be the original ones, not the upgraded ones. + +$CALL may be either the name of a method on +L, or a coderef. + +=item $events->asserts(%PARAMS) + +This is essentially: + + $events->grep(has_assert => @{$PARAMS{args}}) + +It returns a new instance containing only the events that made assertions. + +=item $events->subtests(%PARAMS) + +This is essentially: + + $events->grep(has_subtest => @{$PARAMS{args}}) + +It returns a new instance containing only the events that have subtests. + +=item $events->diags(%PARAMS) + +This is essentially: + + $events->grep(has_diags => @{$PARAMS{args}}) + +It returns a new instance containing only the events that have diags. + +=item $events->notes(%PARAMS) + +This is essentially: + + $events->grep(has_notes => @{$PARAMS{args}}) + +It returns a new instance containing only the events that have notes. + +=item $events->errors(%PARAMS) + +B Errors are NOT failing assertions. Failing assertions are a different +thing. + +This is essentially: + + $events->grep(has_errors => @{$PARAMS{args}}) + +It returns a new instance containing only the events that have errors. + +=item $events->plans(%PARAMS) + +This is essentially: + + $events->grep(has_plan => @{$PARAMS{args}}) + +It returns a new instance containing only the events that set the plan. + +=item $events->causes_fail(%PARAMS) + +=item $events->causes_failure(%PARAMS) + +These are essentially: + + $events->grep(causes_fail => @{$PARAMS{args}}) + $events->grep(causes_failure => @{$PARAMS{args}}) + +B C and C are both aliases for +eachother in events, so these methods are effectively aliases here as well. + +It returns a new instance containing only the events that cause failure. + +=back + +=head2 MAPPING + +These methods B return an arrayref. + +B No methods on L alter the event in +any way. + +B: + +L was tailor-made to be used in +event-lists. Most methods that are not applicable to a given event will return +an empty list, so you normally do not need to worry about unwanted C +values or exceptions being thrown. Mapping over event methods is an entended +use, so it works well to produce lists. + +B + +Some methods such as C always return a boolean true or false for +all events. Any method prefixed with C conveys the intent that the event +should have exactly 1 of something, so those will throw an exception when that +condition is not true. + +=over 4 + +=item $arrayref = $events->map($CALL, %PARAMS) + +This is essentially: + + [ map { $_->$CALL(@{ $PARAMS{args} }) } $events->upgrade->event_list ]; + +$CALL may be either the name of a method on +L, or a coderef. + +=item $arrayref = $events->flatten(%PARAMS) + +This is essentially: + + [ map { $_->flatten(@{ $PARAMS{args} }) } $events->upgrade->event_list ]; + +It returns a new list of flattened structures. + +See L for details on what C +returns. + +=item $arrayref = $events->briefs(%PARAMS) + +This is essentially: + + [ map { $_->briefs(@{ $PARAMS{args} }) } $events->upgrade->event_list ]; + +It returns a new list of event briefs. + +See L for details on what C +returns. + +=item $arrayref = $events->summaries(%PARAMS) + +This is essentially: + + [ map { $_->summaries(@{ $PARAMS{args} }) } $events->upgrade->event_list ]; + +It returns a new list of event summaries. + +See L for details on what C +returns. + +=item $arrayref = $events->subtest_results(%PARAMS) + +This is essentially: + + [ map { $_->subtest_result(@{ $PARAMS{args} }) } $events->upgrade->event_list ]; + +It returns a new list of event summaries. + +See L for details on what +C returns. + +=item $arrayref = $events->diag_messages(%PARAMS) + +This is essentially: + + [ map { $_->diag_messages(@{ $PARAMS{args} }) } $events->upgrade->event_list ]; + +It returns a new list of diagnostic messages (strings). + +See L for details on what +C returns. + +=item $arrayref = $events->note_messages(%PARAMS) + +This is essentially: + + [ map { $_->note_messages(@{ $PARAMS{args} }) } $events->upgrade->event_list ]; + +It returns a new list of notification messages (strings). + +See L for details on what +C returns. + +=item $arrayref = $events->error_messages(%PARAMS) + +This is essentially: + + [ map { $_->error_messages(@{ $PARAMS{args} }) } $events->upgrade->event_list ]; + +It returns a new list of error messages (strings). + +See L for details on what +C returns. + +=back + +=head1 SOURCE + +The source code repository for Test2 can be found at +F. + +=head1 MAINTAINERS + +=over 4 + +=item Chad Granum Eexodist@cpan.orgE + +=back + +=head1 AUTHORS + +=over 4 + +=item Chad Granum Eexodist@cpan.orgE + +=back + +=head1 COPYRIGHT + +Copyright 2020 Chad Granum Eexodist@cpan.orgE. + +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +See F + +=cut diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/API/Stack.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/API/Stack.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/API/Stack.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/API/Stack.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Test2::Hub(); @@ -216,7 +216,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/API.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/API.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/API.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/API.pm 2020-11-18 22:09:15.000000000 +0000 @@ -9,7 +9,7 @@ $ENV{TEST2_ACTIVE} = 1; } -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; my $INST; @@ -404,10 +404,10 @@ my $end_phase = $ENDING || $phase eq 'END' || $phase eq 'DESTRUCT'; my $level = 1 + $params{level}; - my ($pkg, $file, $line, $sub) = $end_phase ? caller(0) : caller($level); + my ($pkg, $file, $line, $sub, @other) = $end_phase ? caller(0) : caller($level); unless ($pkg || $end_phase) { confess "Could not find context at depth $level" unless $params{fudge}; - ($pkg, $file, $line, $sub) = caller(--$level) while ($level >= 0 && !$pkg); + ($pkg, $file, $line, $sub, @other) = caller(--$level) while ($level >= 0 && !$pkg); } my $depth = $level; @@ -460,6 +460,8 @@ nested => $hub->{nested}, buffered => $hub->{buffered}, + full_caller => [$pkg, $file, $line, $sub, @other], + $$UUID_VIA ? ( huuid => $hub->{uuid}, uuid => ${$UUID_VIA}->('context'), @@ -595,6 +597,10 @@ $ctx->stack->top; # Make sure there is a top hub before we begin. $ctx->stack->push($hub); + my $trace = $ctx->trace; + my $state = {}; + $hub->clean_inherited(trace => $trace, state => $state); + my ($ok, $err) = (1, undef); T2_SUBTEST_WRAPPER: { # Do not use 'try' cause it localizes __DIE__ @@ -611,7 +617,8 @@ $hub->cull; $ctx->stack->pop($hub); - my $trace = $ctx->trace; + $hub->restore_inherited(trace => $trace, state => $state); + $ctx->release; die $err unless $ok; @@ -621,7 +628,8 @@ && !$hub->no_ending && !$hub->ended; - return \@events; + require Test2::API::InterceptResult; + return Test2::API::InterceptResult->new_from_ref(\@events); } sub run_subtest { @@ -841,38 +849,9 @@ my_ok(0, "fail"); }; - my_ok(@$events == 2, "got 2 events, the pass and the fail"); - my_ok($events->[0]->pass, "first event passed"); - my_ok(!$events->[1]->pass, "second event failed"); - -=head3 DEEP EVENT INTERCEPTION - -Normally C only intercepts events sent to the main hub (as -added by intercept itself). Nested hubs, such as those created by subtests, -will not be intercepted. This is normally what you will still see the nested -events by inspecting the subtest event. However there are times where you want -to verify each event as it is sent, in that case use C. - - my $events = intercept_Deep { - buffered_subtest foo => sub { - ok(1, "pass"); - }; - }; - -C<$events> in this case will contain 3 items: - -=over 4 - -=item The event from C - -=item The plan event for the subtest - -=item The subtest event itself, with the first 2 events nested inside it as children. - -=back - -This lets you see the order in which the events were sent, unlike -C which only lets you see events as the main hub sees them. +As of version 1.302178 this now returns an arrayref that is also an instance of +L. See the L +documentation for details on how to best use it. =head2 OTHER API FUNCTIONS @@ -1161,8 +1140,13 @@ process. It will return an array reference with all the generated event objects. All events should be subclasses of L. -This is a very low-level subtest tool. This is useful for writing tools which -produce subtests. This is not intended for people simply writing tests. +As of version 1.302178 the events array that is returned is blssed as an +L instance. L +Provides a helpful interface for filtering and/or inspecting the events list +overall, or individual events within the list. + +This is intended to help you test your test code. This is not intended for +people simply writing tests. =head2 run_subtest(...) @@ -1679,7 +1663,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Bail.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Bail.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Bail.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Bail.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } @@ -99,7 +99,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Diag.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Diag.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Diag.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Diag.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } @@ -89,7 +89,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Encoding.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Encoding.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Encoding.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Encoding.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Carp qw/croak/; @@ -87,7 +87,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Exception.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Exception.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Exception.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Exception.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } @@ -103,7 +103,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Fail.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Fail.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Fail.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Fail.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Test2::EventFacet::Info; @@ -108,7 +108,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Generic.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Generic.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Generic.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Generic.pm 2020-11-18 22:09:15.000000000 +0000 @@ -5,7 +5,7 @@ use Carp qw/croak/; use Scalar::Util qw/reftype/; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } use Test2::Util::HashBase; @@ -270,7 +270,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Note.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Note.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Note.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Note.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } @@ -87,7 +87,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Ok.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Ok.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Ok.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Ok.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } @@ -69,7 +69,14 @@ }; if (my @exra_amnesty = $self->extra_amnesty) { - unshift @{$out->{amnesty}} => @exra_amnesty; + my %seen; + + # It is possible the extra amnesty can be a duplicate, so filter it. + $out->{amnesty} = [ + grep { !$seen{defined($_->{tag}) ? $_->{tag} : ''}->{defined($_->{details}) ? $_->{details} : ''}++ } + @exra_amnesty, + @{$out->{amnesty}}, + ]; } return $out; @@ -152,7 +159,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Pass.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Pass.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Pass.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Pass.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Test2::EventFacet::Info; @@ -104,7 +104,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Plan.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Plan.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Plan.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Plan.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } @@ -159,7 +159,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Skip.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Skip.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Skip.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Skip.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) } @@ -117,7 +117,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Subtest.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Subtest.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Subtest.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Subtest.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) } use Test2::Util::HashBase qw{subevents buffered subtest_id subtest_uuid}; @@ -150,7 +150,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Carp qw/croak/; @@ -91,7 +91,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/V2.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/V2.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/V2.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/V2.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Scalar::Util qw/reftype/; use Carp qw/croak/; @@ -33,7 +33,8 @@ $self->{+ABOUT}->{uuid} = $uuid; } - elsif ($uuid = $self->{+ABOUT}->{uuid}) { + elsif ($self->{+ABOUT} && $self->{+ABOUT}->{uuid}) { + $uuid = $self->{+ABOUT}->{uuid}; $self->SUPER::set_uuid($uuid); } @@ -228,7 +229,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Waiting.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Waiting.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Event/Waiting.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Event/Waiting.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } @@ -66,7 +66,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/About.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/About.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/About.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/About.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } use Test2::Util::HashBase qw{ -package -no_display -uuid -eid }; @@ -82,7 +82,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; sub is_list { 1 } @@ -81,7 +81,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } use Test2::Util::HashBase qw{ -pass -no_debug -number }; @@ -83,7 +83,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Control.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Control.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Control.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Control.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } use Test2::Util::HashBase qw{ -global -terminate -halt -has_callback -encoding -phase }; @@ -97,7 +97,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Error.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Error.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Error.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Error.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; sub facet_key { 'errors' } sub is_list { 1 } @@ -83,7 +83,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Hub.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Hub.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Hub.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Hub.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; sub is_list { 1 } sub facet_key { 'hubs' } @@ -99,7 +99,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Info/Table.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Info/Table.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Info/Table.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Info/Table.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Carp qw/confess/; @@ -134,7 +134,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Info.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Info.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Info.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Info.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; sub is_list { 1 } @@ -122,7 +122,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } use vars qw/$AUTOLOAD/; @@ -94,7 +94,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Carp qw/confess/; @@ -88,7 +88,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } use Test2::Util::HashBase qw{ -count -skip -none }; @@ -84,7 +84,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Render.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Render.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Render.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Render.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; sub is_list { 1 } @@ -96,7 +96,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,14 +2,14 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } use Test2::Util qw/get_tid pkg_to_file gen_uid/; use Carp qw/confess/; -use Test2::Util::HashBase qw{^frame ^pid ^tid ^cid -hid -nested details -buffered -uuid -huuid}; +use Test2::Util::HashBase qw{^frame ^pid ^tid ^cid -hid -nested details -buffered -uuid -huuid {+FRAME}} } +sub full_call { @{$_[0]->{+FULL_CALLER}} } + sub package { $_[0]->{+FRAME}->[0] } sub file { $_[0]->{+FRAME}->[1] } sub line { $_[0]->{+FRAME}->[2] } sub subname { $_[0]->{+FRAME}->[3] } +sub warning_bits { $_[0]->{+FULL_CALLER} ? $_[0]->{+FULL_CALLER}->[9] : undef } + 1; __END__ @@ -118,6 +122,8 @@ Get the call frame arrayref. + [$package, $file, $line, $subname] + =item $int = $trace->{pid} =item $int = $trace->pid() @@ -143,6 +149,27 @@ The UUID of the context that was used to create the event. (If uuid tagging was enabled) +=item ($pkg, $file, $line, $subname) = $trace->call + +Get the basic call info as a list. + +=item @caller = $trace->full_call + +Get the full caller(N) results. + +=item $warning_bits = $trace->warning_bits + +Get index 9 from the full caller info. This is the warnings_bits field. + +The value of this is not portable across perl versions or even processes. +However it can be used in the process that generated it to reproduce the +warnings settings in a new scope. + + eval <warning_bits }; + ... context's warning settings apply here ... + EOT + =back =head2 DISCOURAGED HUB RELATED FIELDS @@ -269,7 +296,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/EventFacet.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/EventFacet.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Test2::Util::HashBase qw/-details/; use Carp qw/croak/; @@ -83,7 +83,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Event.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Event.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Event.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Event.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Scalar::Util qw/blessed reftype/; use Carp qw/croak/; @@ -768,7 +768,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Test2::Util qw/clone_io/; @@ -518,7 +518,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Formatter.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Formatter.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Formatter.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Formatter.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; my %ADDED; @@ -148,7 +148,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; 1; @@ -41,7 +41,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Test2::Hub::Interceptor::Terminator(); @@ -27,6 +27,62 @@ $self->{+IPC} = $ipc; $ipc->add_hub($self->{+HID}); } + + if (my $ls = $from->{+_LISTENERS}) { + push @{$self->{+_LISTENERS}} => grep { $_->{intercept_inherit} } @$ls; + } + + if (my $pfs = $from->{+_PRE_FILTERS}) { + push @{$self->{+_PRE_FILTERS}} => grep { $_->{intercept_inherit} } @$pfs; + } + + if (my $fs = $from->{+_FILTERS}) { + push @{$self->{+_FILTERS}} => grep { $_->{intercept_inherit} } @$fs; + } +} + +sub clean_inherited { + my $self = shift; + my %params = @_; + + my @sets = ( + $self->{+_LISTENERS}, + $self->{+_PRE_FILTERS}, + $self->{+_FILTERS}, + ); + + for my $set (@sets) { + next unless $set; + + for my $i (@$set) { + my $cbs = $i->{intercept_inherit} or next; + next unless ref($cbs) eq 'HASH'; + my $cb = $cbs->{clean} or next; + $cb->(%params); + } + } +} + +sub restore_inherited { + my $self = shift; + my %params = @_; + + my @sets = ( + $self->{+_FILTERS}, + $self->{+_PRE_FILTERS}, + $self->{+_LISTENERS}, + ); + + for my $set (@sets) { + next unless $set; + + for my $i (@$set) { + my $cbs = $i->{intercept_inherit} or next; + next unless ref($cbs) eq 'HASH'; + my $cb = $cbs->{restore} or next; + $cb->(%params); + } + } } sub terminate { @@ -78,7 +134,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::Hub; our @ISA = qw(Test2::Hub) } use Test2::Util::HashBase qw/nested exit_code manual_skip_all/; @@ -126,7 +126,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Hub.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Hub.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Hub.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Hub.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Carp qw/carp croak confess/; @@ -351,7 +351,7 @@ $self->{+FAILED}++ if $fail && $f->{assert}; $self->{+_PASSING} = 0 if $fail; - my $code = $f->{control}->{terminate}; + my $code = $f->{control} ? $f->{control}->{terminate} : undef; my $count = $self->{+COUNT}; if (my $plan = $f->{plan}) { @@ -368,7 +368,7 @@ } } - $e->callback($self) if $f->{control}->{has_callback}; + $e->callback($self) if $f->{control} && $f->{control}->{has_callback}; $self->{+_FORMATTER}->write($e, $count, $f) if $self->{+_FORMATTER}; @@ -376,7 +376,7 @@ $_->{code}->($self, $e, $count, $f) for @{$self->{+_LISTENERS}}; } - if ($f->{control}->{halt}) { + if ($f->{control} && $f->{control}->{halt}) { $code ||= 255; $self->set_bailed_out($e); } @@ -899,7 +899,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Test2::IPC::Driver; our @ISA = qw(Test2::IPC::Driver) } @@ -181,10 +181,10 @@ # Write and rename the file. my ($ren_ok, $ren_err); - my ($ok, $err) = try_sig_mask { + my ($ok, $err) = try_sig_mask(sub { Storable::store($e, $file); ($ren_ok, $ren_err) = do_rename("$file", $ready); - }; + }); if ($ok) { $self->abort("Could not rename file '$file' -> '$ready': $ren_err") unless $ren_ok; @@ -493,7 +493,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/IPC/Driver.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/IPC/Driver.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/IPC/Driver.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/IPC/Driver.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Carp qw/confess/; @@ -277,7 +277,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/IPC.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/IPC.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/IPC.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/IPC.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Test2::API::Instance; @@ -150,7 +150,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Tools/Tiny.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Tools/Tiny.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Tools/Tiny.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Tools/Tiny.pm 2020-11-18 22:09:15.000000000 +0000 @@ -16,7 +16,7 @@ use Test2::Hub::Interceptor(); use Test2::Hub::Interceptor::Terminator(); -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; BEGIN { require Exporter; our @ISA = qw(Exporter) } our @EXPORT = qw{ @@ -425,7 +425,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Transition.pod perl-5.34.0/cpan/Test-Simple/lib/Test2/Transition.pod --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Transition.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Transition.pod 2020-10-04 22:17:12.000000000 +0000 @@ -502,7 +502,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Carp qw/croak/; @@ -172,7 +172,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use Carp qw/croak confess/; use Scalar::Util qw/blessed/; @@ -289,7 +289,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Util/HashBase.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Util/HashBase.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Util/HashBase.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Util/HashBase.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; ################################################################# # # diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Util/Trace.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Util/Trace.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Util/Trace.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Util/Trace.pm 2020-11-18 22:09:15.000000000 +0000 @@ -1,8 +1,12 @@ package Test2::Util::Trace; require Test2::EventFacet::Trace; -@ISA = ('Test2::EventFacet::Trace'); -our $VERSION = '1.302175'; +use warnings; +use strict; + +our @ISA = ('Test2::EventFacet::Trace'); + +our $VERSION = '1.302183'; 1; @@ -44,7 +48,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2/Util.pm perl-5.34.0/cpan/Test-Simple/lib/Test2/Util.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2/Util.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2/Util.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; use POSIX(); use Config qw/%Config/; @@ -438,7 +438,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/lib/Test2.pm perl-5.34.0/cpan/Test-Simple/lib/Test2.pm --- perl-5.32.1/cpan/Test-Simple/lib/Test2.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/lib/Test2.pm 2020-11-18 22:09:15.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '1.302175'; +our $VERSION = '1.302183'; 1; @@ -203,7 +203,7 @@ =head1 COPYRIGHT -Copyright 2019 Chad Granum Eexodist@cpan.orgE. +Copyright 2020 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru perl-5.32.1/cpan/Test-Simple/t/Legacy/buffer.t perl-5.34.0/cpan/Test-Simple/t/Legacy/buffer.t --- perl-5.32.1/cpan/Test-Simple/t/Legacy/buffer.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/t/Legacy/buffer.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,9 @@ #!/usr/bin/perl # HARNESS-NO-STREAM +use strict; +use warnings; + BEGIN { if( $ENV{PERL_CORE} ) { chdir 't'; @@ -16,7 +19,7 @@ $T->no_ending(1); for my $num (1..10) { - $tnum = $num * 2; + my $tnum = $num * 2; pass("I'm ok"); $T->current_test($tnum); print "ok $tnum - You're ok\n"; diff -Nru perl-5.32.1/cpan/Test-Simple/t/Legacy/Builder/current_test.t perl-5.34.0/cpan/Test-Simple/t/Legacy/Builder/current_test.t --- perl-5.32.1/cpan/Test-Simple/t/Legacy/Builder/current_test.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/t/Legacy/Builder/current_test.t 2020-10-04 22:17:12.000000000 +0000 @@ -3,8 +3,11 @@ # Dave Rolsky found a bug where if current_test() is used and no # tests are run via Test::Builder it will blow up. +use strict; +use warnings; + use Test::Builder; -$TB = Test::Builder->new; +my $TB = Test::Builder->new; $TB->plan(tests => 2); print "ok 1\n"; print "ok 2\n"; diff -Nru perl-5.32.1/cpan/Test-Simple/t/Legacy/fail-like.t perl-5.34.0/cpan/Test-Simple/t/Legacy/fail-like.t --- perl-5.32.1/cpan/Test-Simple/t/Legacy/fail-like.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/t/Legacy/fail-like.t 2020-10-04 22:17:12.000000000 +0000 @@ -16,6 +16,7 @@ # This tests against that. use strict; +use warnings; # Can't use Test.pm, that's a 5.005 thing. @@ -58,14 +59,14 @@ } { - # line 62 + # line 63 like("foo", "not a regex"); $TB->is_eq($out->read, <is_eq($err->read, < 36; -$Why = 'Just testing the todo interface.'; +my $Why = 'Just testing the todo interface.'; my $is_todo; TODO: { diff -Nru perl-5.32.1/cpan/Test-Simple/t/regression/862-intercept_tb_todo.t perl-5.34.0/cpan/Test-Simple/t/regression/862-intercept_tb_todo.t --- perl-5.32.1/cpan/Test-Simple/t/regression/862-intercept_tb_todo.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/t/regression/862-intercept_tb_todo.t 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1,62 @@ +use strict; +use warnings; + +use Test::More; +use Test2::API qw/intercept/; + +my $events; +{ + local $TODO = "main-outer-todo"; + + package Foo; + + our $TODO; + local $TODO = "foo-outer-todo"; + + $events = main::intercept(sub { + main::ok(1, "assertion 1"); + + { + local $main::TODO = "main-inner-todo"; + main::ok(1, "assertion 2"); + } + + { + local $Foo::TODO = "foo-inner-todo"; + main::ok(1, "assertion 3"); + } + + main::ok(1, "assertion 4"); + }); + + # Cannot use intercept, so make a failing test, the overall test file + # should still pass because this is todo. If this is not todo we know we + # broke something by the test failing overall. + main::ok(0, "Verifying todo, this should be a failed todo test"); +} + +@$events = grep { $_->facet_data->{assert} } @$events; + +ok(!$events->[0]->facet_data->{amnesty}, "No amnesty for the first event, \$TODO was cleaned"); + +is_deeply( + $events->[1]->facet_data->{amnesty}, + [{ + tag => 'TODO', + details => 'main-inner-todo', + }], + "The second event had the expected amnesty applied", +); + +is_deeply( + $events->[2]->facet_data->{amnesty}, + [{ + tag => 'TODO', + details => 'foo-inner-todo', + }], + "The third event had the expected amnesty applied", +); + +ok(!$events->[3]->facet_data->{amnesty}, "No amnesty for the fourth event, \$TODO was cleaned"); + +done_testing; diff -Nru perl-5.32.1/cpan/Test-Simple/t/Test2/modules/API/Breakage.t perl-5.34.0/cpan/Test-Simple/t/Test2/modules/API/Breakage.t --- perl-5.32.1/cpan/Test-Simple/t/Test2/modules/API/Breakage.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/t/Test2/modules/API/Breakage.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,6 +1,11 @@ use strict; use warnings; +if ($] lt "5.008") { + print "1..0 # SKIP Test cannot run on perls below 5.8.0 because local doesn't work on hash keys.\n"; + exit 0; +} + use Test2::IPC; use Test2::Tools::Tiny; use Test2::API::Breakage; @@ -31,15 +36,13 @@ ok(!$CLASS->report(1), "Still nothing to report"); { - local %INC = ( - %INC, - 'T2Test/UG1.pm' => 'T2Test/UG1.pm', - 'T2Test/UG2.pm' => 'T2Test/UG2.pm', - 'T2Test/UR1.pm' => 'T2Test/UR1.pm', - 'T2Test/UR2.pm' => 'T2Test/UR2.pm', - 'T2Test/KB1.pm' => 'T2Test/KB1.pm', - 'T2Test/KB2.pm' => 'T2Test/KB2.pm', - ); + local $INC{"T2Test/UG1.pm"} = "T2Test/UG1.pm"; + local $INC{"T2Test/UG2.pm"} = "T2Test/UG2.pm"; + local $INC{"T2Test/UR1.pm"} = "T2Test/UR1.pm"; + local $INC{"T2Test/UR2.pm"} = "T2Test/UR2.pm"; + local $INC{"T2Test/KB1.pm"} = "T2Test/KB1.pm"; + local $INC{"T2Test/KB2.pm"} = "T2Test/KB2.pm"; + local $T2Test::UG1::VERSION = '0.9'; local $T2Test::UG2::VERSION = '0.9'; local $T2Test::UR1::VERSION = '0.9'; diff -Nru perl-5.32.1/cpan/Test-Simple/t/Test2/modules/API/InterceptResult/Event.t perl-5.34.0/cpan/Test-Simple/t/Test2/modules/API/InterceptResult/Event.t --- perl-5.32.1/cpan/Test-Simple/t/Test2/modules/API/InterceptResult/Event.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/t/Test2/modules/API/InterceptResult/Event.t 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1,950 @@ +use strict; +use warnings; + +use Test2::Tools::Tiny; +use Test2::API::InterceptResult::Event; + +my $CLASS = 'Test2::API::InterceptResult::Event'; + +tests facet_map => sub { + ok(!$CLASS->can('plugins'), "Did not expose 'plugins' sub"); + + my $fm = $CLASS->facet_map; + + is_deeply($fm->{__GENERIC__}, {class => 'Test2::API::InterceptResult::Facet', loaded => 1}, "Generic '__GENERIC__'"); + + is_deeply($CLASS->facet_info('about'), {class => 'Test2::EventFacet::About', list => 0, loaded => 1}, "Found 'about' facet"); + is_deeply($CLASS->facet_info('amnesty'), {class => 'Test2::EventFacet::Amnesty', list => 1, loaded => 1}, "Found 'amnesty' facet"); + is_deeply($CLASS->facet_info('assert'), {class => 'Test2::EventFacet::Assert', list => 0, loaded => 1}, "Found 'assert' facet"); + is_deeply($CLASS->facet_info('control'), {class => 'Test2::EventFacet::Control', list => 0, loaded => 1}, "Found 'control' facet"); + is_deeply($CLASS->facet_info('errors'), {class => 'Test2::EventFacet::Error', list => 1, loaded => 1}, "Found 'errors' facet"); + is_deeply($CLASS->facet_info('hubs'), {class => 'Test2::EventFacet::Hub', list => 1, loaded => 1}, "Found 'hubs' facet"); + is_deeply($CLASS->facet_info('info'), {class => 'Test2::EventFacet::Info', list => 1, loaded => 1}, "Found 'info' facet"); + is_deeply($CLASS->facet_info('meta'), {class => 'Test2::EventFacet::Meta', list => 0, loaded => 1}, "Found 'meta' facet"); + is_deeply($CLASS->facet_info('parent'), {class => 'Test2::EventFacet::Parent', list => 0, loaded => 1}, "Found 'parent' facet"); + is_deeply($CLASS->facet_info('plan'), {class => 'Test2::EventFacet::Plan', list => 0, loaded => 1}, "Found 'plan' facet"); + is_deeply($CLASS->facet_info('render'), {class => 'Test2::EventFacet::Render', list => 1, loaded => 1}, "Found 'render' facet"); + is_deeply($CLASS->facet_info('trace'), {class => 'Test2::EventFacet::Trace', list => 0, loaded => 1}, "Found 'trace' facet"); +}; + +tests init => sub { + # This is just here to make sure the later test is meaningful. If this + # starts to fail it probably means this test needs to be changed. + ok(!$INC{'Test2/API/InterceptResult.pm'}, "Did not load result class yes"); + my $one = $CLASS->new(); + ok($one->isa($CLASS), "Got an instance"); + is_deeply($one->facet_data, {}, "Got empty data"); + is($one->result_class, 'Test2::API::InterceptResult', "Got default result class"); + ok($INC{'Test2/API/InterceptResult.pm'}, "Loaded result class"); + + like( + exception { $CLASS->new(facet_data => {assert => [{}]}) }, + qr/^Facet 'assert' is an only-one facet, but got 'ARRAY' instead of a hashref/, + "Check list vs non-list when we can (check for single)" + ); + + like( + exception { $CLASS->new(facet_data => {info => {}}) }, + qr/^Facet 'info' is a list facet, but got 'HASH' instead of an arrayref/, + "Check list vs non-list when we can (check for list)" + ); + + like( + exception { $CLASS->new(facet_data => {info => [{},[]]}) }, + qr/Got item type 'ARRAY' in list-facet 'info', all items must be hashrefs/, + "Check each item in a list facet is a hashref" + ); + + my $two = $CLASS->new(facet_data => {assert => {}, info => [{}]}); + ok($two->isa($CLASS), "Got an instance with some actual facets"); +}; + +tests facet => sub { + my $one = $CLASS->new(facet_data => { + other_single => {}, + other_list => [{}], + assert => {pass => 1, details => 'xxx'}, + info => [ + {tag => 'DIAG', details => 'xxx'}, + {tag => 'NOTE', details => 'xxx'}, + ], + }); + + ok(($one->facet('assert'))[0]->isa('Test2::EventFacet::Assert'), "Bless the assert facet"); + ok(($one->facet('other_list'))[0]->isa('Test2::EventFacet'), "Bless the other_list as generic"); + ok(($one->facet('other_single'))[0]->isa('Test2::EventFacet'), "Bless the other_single as generic"); + ok(($one->facet('other_list'))[0]->isa('Test2::API::InterceptResult::Facet'), "Bless the other_list as generic"); + ok(($one->facet('other_single'))[0]->isa('Test2::API::InterceptResult::Facet'), "Bless the other_single as generic"); + + is(($one->facet('other_list'))[0]->foo, undef, "Generic gives us autoload for field access"); + + is_deeply( + [$one->facet('xxx')], + [], + "Got an empty list when facet is not present", + ); + + is_deeply( + [$one->facet('assert')], + [{pass => 1, details => 'xxx'}], + "One item list for non-list facets", + ); + + is_deeply( + [$one->facet('info')], + [ + {tag => 'DIAG', details => 'xxx'}, + {tag => 'NOTE', details => 'xxx'}, + ], + "Full list for list facets" + ); +}; + +tests the_facet => sub { + my $one = $CLASS->new(facet_data => { + other_single => {}, + other_list => [{}], + assert => {pass => 1, details => 'xxx'}, + info => [ + {tag => 'DIAG', details => 'xxx'}, + {tag => 'NOTE', details => 'xxx'}, + ], + }); + + ok($one->the_facet('assert')->isa('Test2::EventFacet::Assert'), "Bless the assert facet"); + ok($one->the_facet('other_list')->isa('Test2::EventFacet'), "Bless the other_list as generic"); + ok($one->the_facet('other_single')->isa('Test2::EventFacet'), "Bless the other_single as generic"); + ok($one->the_facet('other_list')->isa('Test2::API::InterceptResult::Facet'), "Bless the other_list as generic"); + ok($one->the_facet('other_single')->isa('Test2::API::InterceptResult::Facet'), "Bless the other_single as generic"); + + is($one->the_facet('other_list')->foo, undef, "Generic gives us autoload for field access"); + + is_deeply( + $one->the_facet('xxx'), + undef, + "Got an undef when facet is not present", + ); + + is_deeply( + $one->the_facet('assert'), + {pass => 1, details => 'xxx'}, + "One item", + ); + + like( + exception { $one->the_facet('info') }, + qr/'the_facet' called for facet 'info', but 'info' has '2' items/, + "the_facet dies if there are more than one" + ); +}; + +tests causes_failure => sub { + my $one = $CLASS->new(facet_data => { assert => {pass => 1, details => 'xxx'}}); + ok(!$one->causes_fail, "No failure for passing test"); + ok(!$one->causes_failure, "No failure for passing test (alt name)"); + + my $two = $CLASS->new(facet_data => { assert => {pass => 0, details => 'xxx'}}); + ok($two->causes_fail, "Failure for failing test"); + ok($two->causes_failure, "Failure for failing test (alt name)"); + + my $three = $CLASS->new( + facet_data => { + assert => {pass => 0, details => 'xxx'}, + amnesty => [{tag => 'TODO', details => 'a todo'}], + } + ); + ok(!$three->causes_fail, "No failure for failing test (with amnesty)"); + ok(!$three->causes_failure, "No failure for failing test (with amnesty) (alt name)"); +}; + +tests trace => sub { + my $one = $CLASS->new; + is($one->trace, undef, "No trace to get"); + is($one->frame, undef, "No frame to get"); + is($one->trace_details, undef, "No trace to get trace_details from"); + is($one->trace_file, undef, "No trace to get trace_file from"); + is($one->trace_line, undef, "No trace to get trace_line from"); + is($one->trace_package, undef, "No trace to get trace_package from"); + is($one->trace_subname, undef, "No trace to get trace_subname from"); + is($one->trace_tool, undef, "No trace to get trace_tool from"); + + my $two = $CLASS->new( + facet_data => { + trace => { + frame => [], + details => 'xxx', + pid => 1, + tid => 1, + }, + } + ); + is_deeply($two->the_trace, {details => 'xxx', frame => [], pid => 1, tid => 1}, "Got trace"); + is_deeply([$two->trace], [{details => 'xxx', frame => [], pid => 1, tid => 1}], "Got trace"); + is($two->trace_details, 'xxx', "get trace_details"); + is_deeply($two->frame, [], "No frame to get"); + is($two->trace_file, undef, "No frame to get trace_file from"); + is($two->trace_line, undef, "No frame to get trace_line from"); + is($two->trace_package, undef, "No frame to get trace_package from"); + is($two->trace_subname, undef, "No frame to get trace_subname from"); + is($two->trace_tool, undef, "No frame to get trace_tool from"); + + my $three = $CLASS->new( + facet_data => { + trace => { + details => 'xxx', + frame => ['Foo::Bar', 'Foo/Bar.pm', 42, 'ok'], + pid => 1, + tid => 1, + }, + } + ); + is_deeply($three->the_trace, {details => 'xxx', frame => ['Foo::Bar', 'Foo/Bar.pm', 42, 'ok'], pid => 1, tid => 1}, "Got trace"); + is($three->trace_details, 'xxx', "get trace_details"); + is_deeply($three->frame, ['Foo::Bar', 'Foo/Bar.pm', 42, 'ok'], "Got frame"); + is($three->trace_file, 'Foo/Bar.pm', "Got trace_file"); + is($three->trace_line, 42, "Got trace_line"); + is($three->trace_package, 'Foo::Bar', "Got trace_package"); + is($three->trace_subname, 'ok', "Got trace_subname"); + is($three->trace_tool, 'ok', "Got trace_tool"); +}; + +tests brief => sub { + my $one = $CLASS->new( + facet_data => { + control => {halt => 1, details => "some reason to bail out"}, + errors => [{tag => 'ERROR', details => "some kind of error"}], + assert => {pass => 1, details => "some passing assert"}, + plan => {count => 42}, + } + ); + + is($one->brief, $one->bailout_brief, "bail-out is used when present"); + delete $one->{facet_data}->{control}; + + is($one->brief, $one->error_brief, "error is next"); + delete $one->{facet_data}->{errors}; + + is($one->brief, $one->assert_brief, "assert is next"); + delete $one->{facet_data}->{assert}; + + is($one->brief, $one->plan_brief, "plan is last"); + delete $one->{facet_data}->{plan}; + + is_deeply( + [$one->brief], + [], + "Empty list if no briefs are available." + ); +}; + +tests summary => sub { + my $one = $CLASS->new(); + + is_deeply( + $one->summary, + { + brief => '', + + causes_failure => 0, + + trace_line => undef, + trace_file => undef, + trace_tool => undef, + trace_details => undef, + + facets => [], + }, + "Got summary for empty event" + ); + + my $two = $CLASS->new(facet_data => { + assert => {pass => 0}, + trace => {frame => ['Foo::Bar', 'Foo/Bar.pm', 42, 'ok'], details => 'a trace'}, + parent => {}, + plan => {count => 1}, + control => {halt => 1, details => "bailout wins"}, + info => [ + {tag => 'DIAG', details => 'diag 1'}, + {tag => 'DIAG', details => 'diag 2'}, + {tag => 'NOTE', details => 'note 1'}, + {tag => 'NOTE', details => 'note 2'}, + {tag => 'OTHER', details => 'other 1'}, + {tag => 'OTHER', details => 'other 2'}, + ], + }); + + is_deeply( + $two->summary, + { + brief => 'BAILED OUT: bailout wins', + + causes_failure => 1, + + trace_line => 42, + trace_file => 'Foo/Bar.pm', + trace_tool => 'ok', + trace_details => 'a trace', + + facets => [qw{ assert control info parent plan trace }], + }, + "Got summary for lots" + ); + + is_deeply( + $two->summary(fields => [qw/trace_line trace_file/]), + { + trace_line => 42, + trace_file => 'Foo/Bar.pm', + }, + "Got summary, specific fields" + ); + + is_deeply( + $two->summary(remove => [qw/brief facets/]), + { + causes_failure => 1, + + trace_line => 42, + trace_file => 'Foo/Bar.pm', + trace_tool => 'ok', + trace_details => 'a trace', + }, + "Got summary, removed some fields" + ); +}; + +tests assert => sub { + my $one = $CLASS->new(); + ok(!$one->has_assert, "Not an assert"); + is_deeply([$one->assert], [], "empty list for assert()"); + is_deeply([$one->assert_brief], [], "empty list for assert_brief()"); + + my $two = $CLASS->new(facet_data => {assert => {pass => 1, details => 'foo'}}); + ok($two->has_assert, "Is an assert"); + is_deeply([$two->assert], [{pass => 1, details => 'foo'}], "got assert item"); + is($two->assert_brief, "PASS", "got PASS for assert_brief()"); + + my $three = $CLASS->new(facet_data => { + assert => {pass => 0, details => 'foo'}, + amnesty => [ + {tag => 'TODO', details => 'todo 1'}, + {tag => 'SKIP', details => 'skip 1'}, + {tag => 'OOPS', details => 'oops 1'}, + {tag => 'TODO', details => 'todo 2'}, + {tag => 'SKIP', details => 'skip 2'}, + {tag => 'OOPS', details => 'oops 2'}, + ], + }); + ok($three->has_assert, "Is an assert"); + is_deeply([$three->assert], [{pass => 0, details => 'foo'}], "got assert item"); + is($three->assert_brief, "FAIL with amnesty", "Fail with amnesty"); + + my $four = $CLASS->new(facet_data => { + assert => {pass => 0, details => 'foo'}, + amnesty => [ + {tag => 'TODO'}, + {tag => 'SKIP'}, + {tag => 'OOPS'}, + ], + }); + ok($four->has_assert, "Is an assert"); + is_deeply([$four->assert], [{pass => 0, details => 'foo'}], "got assert item"); + is($four->assert_brief, "FAIL with amnesty", "Fail with amnesty"); +}; + +tests subtest => sub { + my $one = $CLASS->new(); + ok(!$one->has_subtest, "Not a subtest"); + is_deeply([$one->subtest], [], "subtest() returns empty list"); + is_deeply([$one->subtest_result], [], "subtest_result returns an empty list"); + + my $two = $CLASS->new( + facet_data => { + parent => { + hid => '1234', + children => [], + state => { + bailed_out => undef, + count => 5, + failed => 1, + follows_plan => 1, + is_passing => 0, + nested => 1, + skip_reason => undef, + }, + }, + } + ); + + ok($two->has_subtest, "has a subtest"); + is_deeply([$two->subtest], [$two->facet_data->{parent}], "subtest() returns 1 item list"); + + my $res = $two->subtest_result; + ok($res->isa('Test2::API::InterceptResult'), "Got a result instance"); +}; + +tests flatten => sub { + my $one = $CLASS->new(); + is_deeply( + $one->flatten, + { + causes_failure => 0, + trace_file => undef, + trace_line => undef + }, + "Empty event flattens to almost nothing" + ); + + my $two = $CLASS->new( + facet_data => { + hubs => [{details => "DO NOT SHOW"}], + meta => {details => "DO NOT SHOW"}, + control => {details => "A control"}, + assert => {pass => 1, details => "Test Name"}, + + trace => { + frame => ['Foo::Bar', 'Foo/Bar.pm', 42, 'Test2::Tools::Tiny::ok'], + details => "Trace Details", + }, + + parent => { + details => "A Subtest", + children => [ + $CLASS->new(facet_data => {assert => {pass => 1, details => 'nested assertion'}}), + $CLASS->new(facet_data => {plan => {count => 1}}), + ], + }, + + errors => [ + {tag => 'error', fail => 0, details => "not a fatal error"}, + {tag => 'error', fail => 1, details => "a fatal error"}, + ], + + info => [ + {tag => 'DIAG', details => 'diag 1'}, + {tag => 'DIAG', details => 'diag 2'}, + {tag => 'NOTE', details => 'note 1'}, + {tag => 'NOTE', details => 'note 2'}, + {tag => 'INFO', details => 'info 1'}, + {tag => 'INFO', details => 'info 2'}, + ], + amnesty => [ + {tag => 'TODO', details => 'todo 1'}, + {tag => 'TODO', details => 'todo 2'}, + {tag => 'SKIP', details => 'skip 1'}, + {tag => 'SKIP', details => 'skip 2'}, + {tag => 'OKOK', details => 'okok 1'}, + {tag => 'OKOK', details => 'okok 2'}, + ], + + other_single => {details => 'other single'}, + other_multi => [{details => 'other multi'}], + }, + ); + + is_deeply( + $two->flatten(include_subevents => 1), + { + # Summaries + causes_failure => 0, + trace_details => 'Trace Details', + trace_file => 'Foo/Bar.pm', + trace_line => 42, + + # Info + diag => ['diag 1', 'diag 2'], + info => ['info 1', 'info 2'], + note => ['note 1', 'note 2'], + + # Amnesty + okok => ['okok 1', 'okok 2'], + skip => ['skip 1', 'skip 2'], + todo => ['todo 1', 'todo 2'], + + # Errors + error => ['not a fatal error', 'FATAL: a fatal error'], + + # Assert + name => 'Test Name', + pass => 1, + + # Control + control => 'A control', + + # Other + other_multi => ['other multi'], + other_single => 'other single', + + # Subtest related + subtest => { + follows_plan => 1, + is_passing => 1, + count => 1, + failed => 0, + plan => 1, + }, + + subevents => [ + { + name => 'nested assertion', + trace_line => undef, + causes_failure => 0, + pass => 1, + trace_file => undef, + }, + { + trace_file => undef, + plan => '1', + trace_line => undef, + causes_failure => 0, + } + ], + }, + "Very full flattening, with subevents" + ); + + is_deeply( + $two->flatten(), + { + # Summaries + causes_failure => 0, + trace_details => 'Trace Details', + trace_file => 'Foo/Bar.pm', + trace_line => 42, + + # Info + diag => ['diag 1', 'diag 2'], + info => ['info 1', 'info 2'], + note => ['note 1', 'note 2'], + + # Amnesty + okok => ['okok 1', 'okok 2'], + skip => ['skip 1', 'skip 2'], + todo => ['todo 1', 'todo 2'], + + # Errors + error => ['not a fatal error', 'FATAL: a fatal error'], + + # Assert + name => 'Test Name', + pass => 1, + + # Control + control => 'A control', + + # Other + other_multi => ['other multi'], + other_single => 'other single', + + # Subtest related + subtest => { + follows_plan => 1, + is_passing => 1, + count => 1, + failed => 0, + plan => 1, + }, + }, + "Very full flattening, no subevents" + ); + + my $three = $CLASS->new( + facet_data => { + trace => { + frame => ['Foo::Bar', 'Foo/Bar.pm', 42, 'Test2::Tools::Tiny::ok'], + }, + + control => {halt => 1, details => "need to bail dude!"}, + + amnesty => [{tag => 'TODO', details => 'todo 1'}], + }, + ); + + is_deeply( + $three->flatten(include_subevents => 1), + { + # Summaries + causes_failure => 0, + + trace_file => 'Foo/Bar.pm', + trace_line => 42, + + bailed_out => "need to bail dude!", + + # Amnesty does not show without an assert or parent + }, + "Bail-out test" + ); + + my $four = $CLASS->new( + facet_data => { + trace => {frame => ['Foo::Bar', 'Foo/Bar.pm', 42, 'Test2::Tools::Tiny::ok']}, + errors => [{tag => 'ERROR', details => 'an error', fail => 1}], + amnesty => [{tag => 'TODO', details => 'todo 1'}], + }, + ); + + is_deeply( + $four->flatten(), + { + # Summaries + causes_failure => 0, + + trace_file => 'Foo/Bar.pm', + trace_line => 42, + + todo => ['todo 1'], + error => ['FATAL: an error'], + }, + "Include amnesty when there is a fatal error" + ); + + is_deeply( + $four->flatten(fields => [qw/trace_file trace_line/]), + { + trace_file => 'Foo/Bar.pm', + trace_line => 42, + }, + "Filtered to only specific fields" + ); + + is_deeply( + $four->flatten(remove => [qw/todo error/]), + { + # Summaries + causes_failure => 0, + + trace_file => 'Foo/Bar.pm', + trace_line => 42, + }, + "Remove specific fields" + ); + +}; + +tests bailout => sub { + my $one = $CLASS->new(); + ok(!$one->has_bailout, "No bailout"); + is_deeply([$one->bailout], [], "no bailout"); + is_deeply([$one->bailout_brief], [], "no bailout"); + is_deeply([$one->bailout_reason], [], "no bailout"); + + my $two = $CLASS->new( + facet_data => { + trace => { + frame => ['Foo::Bar', 'Foo/Bar.pm', 42, 'Test2::Tools::Tiny::ok'], + }, + + control => {halt => 1, details => "need to bail dude!"}, + }, + ); + + ok($two->has_bailout, "did bail out"); + is_deeply([$two->bailout], [{halt => 1, details => "need to bail dude!"}], "Got the bailout"); + is_deeply([$two->bailout_brief], ["BAILED OUT: need to bail dude!"], "Got the bailout brief"); + is_deeply([$two->bailout_reason], ["need to bail dude!"], "Got the bailout reason"); +}; + +tests plan => sub { + my $one = $CLASS->new; + ok(!$one->has_plan, "No plan"); + is_deeply([$one->plan], [], "No plan"); + is_deeply([$one->plan_brief], [], "No plan"); + + my $two = $CLASS->new(facet_data => {plan => { count => 42 }}); + ok($two->has_plan, "Got a plan"); + is_deeply([$two->plan], [{ count => 42 }], "Got the plan facet"); + is_deeply([$two->plan_brief], ["PLAN 42"], "Got the brief"); + + $two->{facet_data}->{plan}->{details} = "foo bar baz"; + is_deeply([$two->plan_brief], ["PLAN 42: foo bar baz"], "Got the brief with details"); + + $two->{facet_data}->{plan}->{count} = 0; + is_deeply([$two->plan_brief], ["SKIP ALL: foo bar baz"], "Got the skip form no count with details"); + + $two->{facet_data}->{plan}->{count} = 1; + $two->{facet_data}->{plan}->{skip} = 1; + is_deeply([$two->plan_brief], ["SKIP ALL: foo bar baz"], "Got the skip with details"); + + $two->{facet_data}->{plan}->{skip} = 0; + $two->{facet_data}->{plan}->{none} = 1; + is_deeply([$two->plan_brief], ["NO PLAN: foo bar baz"], "Got the 'NO PLAN' with details"); +}; + +tests amnesty => sub { + my $one = $CLASS->new(); + + ok(!$one->has_amnesty, "No amnesty"); + ok(!$one->has_todos, "No todos"); + ok(!$one->has_skips, "No skips"); + ok(!$one->has_other_amnesty, "No other amnesty"); + + is_deeply([$one->amnesty], [], "amnesty list is empty"); + is_deeply([$one->todos], [], "todos list is empty"); + is_deeply([$one->skips], [], "skips list is empty"); + is_deeply([$one->other_amnesty], [], "other_amnesty list is empty"); + + is_deeply([$one->amnesty_reasons], [], "amnesty_reasons list is empty"); + is_deeply([$one->todo_reasons], [], "todo_reasons list is empty"); + is_deeply([$one->skip_reasons], [], "skip_reasons list is empty"); + is_deeply([$one->other_amnesty_reasons], [], "other_amnesty_reasons list is empty"); + + my $two = $CLASS->new( + facet_data => { + amnesty => [ + {tag => 'TODO', details => 'todo 1'}, + {tag => 'TODO', details => 'todo 2'}, + {tag => 'SKIP', details => 'skip 1'}, + {tag => 'SKIP', details => 'skip 2'}, + {tag => 'OKOK', details => 'okok 1'}, + {tag => 'OKOK', details => 'okok 2'}, + ], + }, + ); + + ok($two->has_amnesty, "amnesty"); + ok($two->has_todos, "todos"); + ok($two->has_skips, "skips"); + ok($two->has_other_amnesty, "other amnesty"); + + is_deeply( + [$two->amnesty], + [ + {tag => 'TODO', details => 'todo 1'}, + {tag => 'TODO', details => 'todo 2'}, + {tag => 'SKIP', details => 'skip 1'}, + {tag => 'SKIP', details => 'skip 2'}, + {tag => 'OKOK', details => 'okok 1'}, + {tag => 'OKOK', details => 'okok 2'}, + ], + "amnesty list", + ); + is_deeply( + [$two->todos], + [ + {tag => 'TODO', details => 'todo 1'}, + {tag => 'TODO', details => 'todo 2'}, + ], + "todos list", + ); + is_deeply( + [$two->skips], + [ + {tag => 'SKIP', details => 'skip 1'}, + {tag => 'SKIP', details => 'skip 2'}, + ], + "skips list", + ); + is_deeply( + [$two->other_amnesty], + [ + {tag => 'OKOK', details => 'okok 1'}, + {tag => 'OKOK', details => 'okok 2'}, + ], + "other_amnesty list", + ); + + is_deeply( + [$two->amnesty_reasons], + [ + 'todo 1', + 'todo 2', + 'skip 1', + 'skip 2', + 'okok 1', + 'okok 2', + ], + "amnesty_reasons list is empty" + ); + is_deeply( + [$two->todo_reasons], + [ + 'todo 1', + 'todo 2', + ], + "todo_reasons list is empty" + ); + is_deeply( + [$two->skip_reasons], + [ + 'skip 1', + 'skip 2', + ], + "skip_reasons list is empty" + ); + is_deeply( + [$two->other_amnesty_reasons], + [ + 'okok 1', + 'okok 2', + ], + "other_amnesty_reasons list is empty" + ); +}; + +tests errors => sub { + my $one = $CLASS->new(); + ok(!$one->has_errors, "No errors"); + is_deeply([$one->errors], [], "No errors"); + is_deeply([$one->error_messages], [], "No errors"); + is_deeply([$one->error_brief], [], "No errors"); + + my $two = $CLASS->new(facet_data => { + errors => [{tag => 'error', details => 'a non fatal error'}], + }); + ok($two->has_errors, "Got errors"); + is_deeply([$two->errors], [{tag => 'error', details => 'a non fatal error'}], "Got the error"); + is_deeply([$two->error_messages], ['a non fatal error'], "Got the message"); + is_deeply([$two->error_brief], ['ERROR: a non fatal error'], "Got the brief"); + + my $three = $CLASS->new(facet_data => { + errors => [{tag => 'error', details => "a non fatal\nerror"}], + }); + ok($three->has_errors, "Got errors"); + is_deeply([$three->errors], [{tag => 'error', details => "a non fatal\nerror"}], "Got the error"); + is_deeply([$three->error_messages], ["a non fatal\nerror"], "Got the message"); + is_deeply([$three->error_brief], ["ERROR: a non fatal [...]"], "Got the brief"); + + my $four = $CLASS->new(facet_data => { + errors => [ + {tag => 'error', details => "a fatal error", fail => 1}, + {tag => 'error', details => "a non fatal error", fail => 0}, + ], + }); + + ok($four->has_errors, "Got errors"); + + is_deeply( + [$four->errors], + [ + {tag => 'error', details => "a fatal error", fail => 1}, + {tag => 'error', details => "a non fatal error", fail => 0}, + ], + "Got the error" + ); + + is_deeply( + [$four->error_messages], + [ + "a fatal error", + "a non fatal error", + ], + "Got the message" + ); + + is_deeply([$four->error_brief], ['ERRORS: a fatal error [...]'], "Got the brief"); + +}; + +tests info => sub { + my $one = $CLASS->new(); + + ok(!$one->has_info, "No info"); + ok(!$one->has_diags, "No diags"); + ok(!$one->has_notes, "No notes"); + ok(!$one->has_other_info, "No other info"); + + is_deeply([$one->info], [], "info list is empty"); + is_deeply([$one->diags], [], "diags list is empty"); + is_deeply([$one->notes], [], "notes list is empty"); + is_deeply([$one->other_info], [], "other_info list is empty"); + + is_deeply([$one->info_messages], [], "info_messages list is empty"); + is_deeply([$one->diag_messages], [], "diag_messages list is empty"); + is_deeply([$one->note_messages], [], "note_messages list is empty"); + is_deeply([$one->other_info_messages], [], "other_info_messages list is empty"); + + my $two = $CLASS->new( + facet_data => { + info => [ + {tag => 'DIAG', details => 'diag 1'}, + {tag => 'DIAG', details => 'diag 2'}, + {tag => 'NOTE', details => 'note 1'}, + {tag => 'NOTE', details => 'note 2'}, + {tag => 'INFO', details => 'info 1'}, + {tag => 'INFO', details => 'info 2'}, + ], + }, + ); + + ok($two->has_info, "info"); + ok($two->has_diags, "diags"); + ok($two->has_notes, "notes"); + ok($two->has_other_info, "other info"); + + is_deeply( + [$two->info], + [ + {tag => 'DIAG', details => 'diag 1'}, + {tag => 'DIAG', details => 'diag 2'}, + {tag => 'NOTE', details => 'note 1'}, + {tag => 'NOTE', details => 'note 2'}, + {tag => 'INFO', details => 'info 1'}, + {tag => 'INFO', details => 'info 2'}, + ], + "info list", + ); + is_deeply( + [$two->diags], + [ + {tag => 'DIAG', details => 'diag 1'}, + {tag => 'DIAG', details => 'diag 2'}, + ], + "diags list", + ); + is_deeply( + [$two->notes], + [ + {tag => 'NOTE', details => 'note 1'}, + {tag => 'NOTE', details => 'note 2'}, + ], + "notes list", + ); + is_deeply( + [$two->other_info], + [ + {tag => 'INFO', details => 'info 1'}, + {tag => 'INFO', details => 'info 2'}, + ], + "other_info list", + ); + + is_deeply( + [$two->info_messages], + [ + 'diag 1', + 'diag 2', + 'note 1', + 'note 2', + 'info 1', + 'info 2', + ], + "info_messages list is empty" + ); + is_deeply( + [$two->diag_messages], + [ + 'diag 1', + 'diag 2', + ], + "diag_messages list is empty" + ); + is_deeply( + [$two->note_messages], + [ + 'note 1', + 'note 2', + ], + "note_messages list is empty" + ); + is_deeply( + [$two->other_info_messages], + [ + 'info 1', + 'info 2', + ], + "other_info_messages list is empty" + ); +}; + +done_testing; diff -Nru perl-5.32.1/cpan/Test-Simple/t/Test2/modules/API/InterceptResult/Squasher.t perl-5.34.0/cpan/Test-Simple/t/Test2/modules/API/InterceptResult/Squasher.t --- perl-5.32.1/cpan/Test-Simple/t/Test2/modules/API/InterceptResult/Squasher.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/t/Test2/modules/API/InterceptResult/Squasher.t 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1,117 @@ +use strict; +use warnings; + +use Test2::Tools::Tiny; +use Test2::API::InterceptResult::Squasher; +use Test2::API::InterceptResult::Event; + +my $CLASS = 'Test2::API::InterceptResult::Squasher'; + +my $trace1 = {pid => $$, tid => 0, cid => 1, frame => ['Foo::Bar', 'Foo/Bar.pm', 42, 'ok']}; +my $trace2 = {pid => $$, tid => 0, cid => 2, frame => ['Foo::Bar', 'Foo/Bar.pm', 43, 'note']}; +my $trace3 = {pid => $$, tid => 0, cid => 3, frame => ['Foo::Bar', 'Foo/Bar.pm', 44, 'subtest']}; +my $trace4 = {pid => $$, tid => 0, cid => 4, frame => ['Foo::Bar', 'Foo/Bar.pm', 45, 'diag']}; + +my @raw = ( + # These 4 should merge + Test2::API::InterceptResult::Event->new(facet_data => { + trace => $trace1, + info => [{tag => 'DIAG', details => 'about to fail'}], + }), + Test2::API::InterceptResult::Event->new(facet_data => { + trace => $trace1, + assert => { pass => 0, details => 'fail' }, + }), + Test2::API::InterceptResult::Event->new(facet_data => { + trace => $trace1, + info => [{tag => 'DIAG', details => 'it failed'}], + }), + Test2::API::InterceptResult::Event->new(facet_data => { + trace => $trace1, + info => [{tag => 'DIAG', details => 'it failed part 2'}], + }), + + # Same trace, but should not merge as it has an assert + Test2::API::InterceptResult::Event->new(facet_data => { + trace => $trace1, + assert => { pass => 0, details => 'fail again' }, + info => [{tag => 'DIAG', details => 'it failed again'}], + }), + + # Stand alone note + Test2::API::InterceptResult::Event->new(facet_data => { + trace => $trace2, + info => [{tag => 'NOTE', details => 'Take Note!'}], + }), + + # Subtest, note, assert, diag as 3 events, should be merged + Test2::API::InterceptResult::Event->new(facet_data => { + trace => $trace3, + info => [{tag => 'NOTE', details => 'About to start subtest'}], + }), + Test2::API::InterceptResult::Event->new(facet_data => { + trace => $trace3, + assert => { pass => 0, details => 'failed subtest' }, + parent => { details => 'foo', state => {}, children => [] }, + }), + Test2::API::InterceptResult::Event->new(facet_data => { + trace => $trace3, + info => [{tag => 'DIAG', details => 'Subtest failed'}], + }), + + # Stand alone diag + Test2::API::InterceptResult::Event->new(facet_data => { + trace => $trace4, + info => [{tag => 'DIAG', details => 'Diagnosis: Murder'}], + }), +); + +my @events; +my $squasher = $CLASS->new(events => \@events); +ok($squasher->isa($CLASS), "Got an instanct"); +$squasher->process($_) for @raw; +$squasher = undef; + +is_deeply( + [map { $_->facet_data } @events], + [ + { + trace => $trace1, + assert => {pass => 0, details => 'fail'}, + info => [ + {tag => 'DIAG', details => 'about to fail'}, + {tag => 'DIAG', details => 'it failed'}, + {tag => 'DIAG', details => 'it failed part 2'}, + ], + }, + + { + trace => $trace1, + assert => {pass => 0, details => 'fail again'}, + info => [{tag => 'DIAG', details => 'it failed again'}], + }, + + { + trace => $trace2, + info => [{tag => 'NOTE', details => 'Take Note!'}], + }, + + { + trace => $trace3, + assert => {pass => 0, details => 'failed subtest'}, + parent => {details => 'foo', state => {}, children => []}, + info => [ + {tag => 'NOTE', details => 'About to start subtest'}, + {tag => 'DIAG', details => 'Subtest failed'}, + ], + }, + + { + trace => $trace4, + info => [{tag => 'DIAG', details => 'Diagnosis: Murder'}], + }, + ], + "Squashed events as expected" +); + +done_testing; diff -Nru perl-5.32.1/cpan/Test-Simple/t/Test2/modules/API/InterceptResult.t perl-5.34.0/cpan/Test-Simple/t/Test2/modules/API/InterceptResult.t --- perl-5.32.1/cpan/Test-Simple/t/Test2/modules/API/InterceptResult.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/t/Test2/modules/API/InterceptResult.t 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1,302 @@ +use strict; +use warnings; + +use Test::Builder; +use Test2::Tools::Tiny; +use Test2::API::InterceptResult; +use Scalar::Util qw/reftype/; +use Test2::API qw/intercept context/; + +my $CLASS = 'Test2::API::InterceptResult'; + +tests construction => sub { + my $one = $CLASS->new('a'); + ok($one->isa($CLASS), "Got an instance"); + is(reftype($one), 'ARRAY', "Blessed arrayref"); + is_deeply($one, ['a'], "Ref looks good."); + + my $two = $CLASS->new_from_ref(['a']); + ok($two->isa($CLASS), "Got an instance"); + is(reftype($two), 'ARRAY', "Blessed arrayref"); + is_deeply($two, ['a'], "Ref looks good."); + + my $three = $two->clone; + ok($three->isa($CLASS), "Got an instance"); + is(reftype($three), 'ARRAY', "Blessed arrayref"); + is_deeply($three, ['a'], "Ref looks good."); + + push @$two => 'b'; + is_deeply($two, ['a', 'b'], "Modified two"); + is_deeply($three, ['a'], "three was not changed"); + + my $four = intercept { + ok(1, "Pass"); + }; + + ok($four->isa($CLASS), "Intercept returns an instance"); +}; + +tests event_list => sub { + my $one = $CLASS->new('a', 'b'); + is_deeply([$one->event_list], ['a', 'b'], "event_list is essentially \@{\$self}"); +}; + +tests _upgrade => sub { + require Test2::Event::Pass; + my $event = Test2::Event::Pass->new(name => 'soup for you', trace => {frame => ['foo', 'foo.pl', 42]}); + ok($event->isa('Test2::Event'), "Start with an event"); + + my $one = $CLASS->new; + my $up = $one->_upgrade($event); + ok($up->isa('Test2::API::InterceptResult::Event'), "Upgraded the event"); + is($up->result_class, $CLASS, "set the result class"); + + is_deeply($event->facet_data, $up->facet_data, "Facet data is identical"); + + $up->facet_data->{trace}->{frame}->[2] = 43; + is($up->trace_line, 43, "Modified the facet data in the upgraded clone"); + is($event->facet_data->{trace}->{frame}->[2], 42, "Did nto modify the original"); + + my $up2 = $one->_upgrade($up); + is("$up2", "$up", "Returned the ref unmodified because it is already an upgraded item"); + + require Test2::Event::V2; + my $subtest = 'Test2::Event::V2'->new( + trace => {frame => ['foo', 'foo.pl', 42]}, + assert => {pass => 1, details => 'pass'}, + parent => { + hid => 1, + children => [ $event ], + }, + ); + + my $subup = $one->_upgrade($subtest); + ok($subup->the_subtest->{children}->isa($CLASS), "Blessed subtest subevents"); + ok( + $subup->the_subtest->{children}->[0]->isa('Test2::API::InterceptResult::Event'), + "Upgraded the children" + ); +}; + +tests hub => sub { + my $one = intercept { + ok(1, "pass"); + ok(0, "fail"); + plan 2; + }; + + my $hub = $one->hub; + ok($hub->isa('Test2::Hub'), "Hub is a proper instance"); + ok($hub->check_plan, "Had a plan and followed it"); + is($hub->count, 2, "saw both events"); + is($hub->failed, 1, "saw a failure"); + ok($hub->ended, "Hub ended"); + + is_deeply( + $one->state, + { + count => 2, + failed => 1, + is_passing => 0, + plan => 2, + bailed_out => undef, + skip_reason => undef, + follows_plan => 1, + }, + "Got the hub state" + ); +}; + +tests upgrade => sub { + my $one = intercept { + require Test::More; + Test::More::ok(1, "pass"); + Test::More::ok(1, "pass"); + }; + + ok($one->[0]->isa('Test2::Event::Ok'), "Original event is not upgraded 0"); + ok($one->[1]->isa('Test2::Event::Ok'), "Original event is not upgraded 1"); + + my $two = $one->upgrade; + ok($one->[0]->isa('Test2::Event::Ok'), "Did not modify original 0"); + ok($one->[0]->isa('Test2::Event::Ok'), "Did not modify original 1"); + ok($two->[0]->isa('Test2::API::InterceptResult::Event'), "Upgraded copy 0"); + ok($two->[1]->isa('Test2::API::InterceptResult::Event'), "Upgraded copy 1"); + + my $three = $two->upgrade; + ok("$two->[0]" ne "$three->[0]", "Upgrade on an already upgraded instance returns copies of the events, not originals"); + + like( + exception { $one->upgrade() }, + qr/Called a method that creates a new instance in void context/, + "Calling upgrade() without keeping the result is a bug" + ); + + $one->upgrade(in_place => 1); + ok($one->[0]->isa('Test2::API::InterceptResult::Event'), "Upgraded in place 0"); + ok($one->[1]->isa('Test2::API::InterceptResult::Event'), "Upgraded in place 1"); +}; + +tests squash_info => sub { + my $one = intercept { + diag "isolated 1"; + note "isolated 2"; + sub { + my $ctx = context(); + diag "inline 1"; + note "inline 2"; + $ctx->fail; + diag "inline 3"; + note "inline 4"; + $ctx->release; + }->(); + diag "isolated 3"; + note "isolated 4"; + }; + + my $new = $one->squash_info; + $one->squash_info(in_place => 1); + is_deeply( + $new, + $one, + "Squash and squash in place produce the same result" + ); + + is(@$one, 5, "5 events after squash"); + is_deeply([$one->[0]->info_messages], ['isolated 1'], "First event not modified"); + is_deeply([$one->[1]->info_messages], ['isolated 2'], "Second event not modified"); + is_deeply([$one->[3]->info_messages], ['isolated 3'], "second to last event not modified"); + is_deeply([$one->[4]->info_messages], ['isolated 4'], "last event not modified"); + is_deeply( + [$one->[2]->info_messages], + [ + 'inline 1', + 'inline 2', + 'inline 3', + 'inline 4', + ], + "Assertion collected info generated in the same context" + ); + ok($one->[2]->has_assert, "Assertion is still an assertion"); + + + my $two = intercept { + + }; +}; + +tests messages => sub { + my $one = intercept { + note "foo"; + diag "bar"; + + ok(1); + + sub { + my $ctx = context(); + + $ctx->send_ev2( + errors => [ + {tag => 'error', details => "Error 1" }, + {tag => 'error', details => "Error 2" }, + ], + info => [ + {tag => 'DIAG', details => 'Diag 1'}, + {tag => 'DIAG', details => 'Diag 2'}, + {tag => 'NOTE', details => 'Note 1'}, + {tag => 'NOTE', details => 'Note 2'}, + ], + ); + + $ctx->release; + }->(); + + note "baz"; + diag "bat"; + }; + + is_deeply( + $one->diag_messages, + ['bar', 'Diag 1', 'Diag 2', 'bat'], + "Got diags" + ); + + is_deeply( + $one->note_messages, + ['foo', 'Note 1', 'Note 2', 'baz'], + "Got Notes" + ); + + is_deeply( + $one->error_messages, + ['Error 1', 'Error 2'], + "Got errors" + ); +}; + +tests grep => sub { + my $one = intercept { + ok(1), # 0 + note "A Note"; # 1 + diag "A Diag"; # 2 + tests foo => sub { ok(1) }; # 3 + + sub { # 4 + my $ctx = context(); + $ctx->send_ev2(errors => [{tag => 'error', details => "Error 1"}]); + $ctx->release; + }->(); # 4 + + plan 2; # 5 + }; + + $one->upgrade(in_place => 1); + + is_deeply($one->asserts, [$one->[0], $one->[3]], "Got the asserts"); + is_deeply($one->subtests, [$one->[3]], "Got the subtests"); + is_deeply($one->diags, [$one->[2]], "Got the diags"); + is_deeply($one->notes, [$one->[1]], "Got the notes"); + is_deeply($one->errors, [$one->[4]], "Got the errors"); + is_deeply($one->plans, [$one->[5]], "Got the plans"); + + $one->asserts(in_place => 1); + is(@$one, 2, "2 events"); + ok($_->has_assert, "Is an assert") for @$one; +}; + +tests map => sub { + my $one = intercept { ok(1); ok(2) }; + $one->upgrade(in_place => 1); + + is_deeply( + $one->flatten, + [ $one->[0]->flatten, $one->[1]->flatten ], + "Flattened both events" + ); + + is_deeply( + $one->briefs, + [ $one->[0]->brief, $one->[1]->brief ], + "Brief of both events" + ); + + is_deeply( + $one->summaries, + [ $one->[0]->summary, $one->[1]->summary ], + "Summaries of both events" + ); + + my $two = intercept { + tests foo => sub { ok(1) }; + ok(1); + tests bar => sub { ok(1) }; + }->upgrade; + + is_deeply( + $two->subtest_results, + [ $two->[0]->subtest_result, $two->[2]->subtest_result ], + "Got subtest results" + ); +}; + +done_testing; diff -Nru perl-5.32.1/cpan/Test-Simple/t/Test2/modules/Event/V2.t perl-5.34.0/cpan/Test-Simple/t/Test2/modules/Event/V2.t --- perl-5.32.1/cpan/Test-Simple/t/Test2/modules/Event/V2.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Test-Simple/t/Test2/modules/Event/V2.t 2020-10-04 22:17:12.000000000 +0000 @@ -47,7 +47,7 @@ $one = $CLASS->new; ok(!$one->uuid, "no uuid attribute"); -ok(!$one->about->{uuid}, "no uuid in about facet"); +ok(!($one->about && $one->about->{uuid}), "no uuid in about facet"); $one->set_uuid(123); is($one->about->{uuid}, 123, "Set uuid in about facet"); is($one->uuid, 123, "set uuid attribute"); diff -Nru perl-5.32.1/cpan/Text-Balanced/lib/Text/Balanced.pm perl-5.34.0/cpan/Text-Balanced/lib/Text/Balanced.pm --- perl-5.32.1/cpan/Text-Balanced/lib/Text/Balanced.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Text-Balanced/lib/Text/Balanced.pm 2021-01-20 23:04:44.000000000 +0000 @@ -1,35 +1,44 @@ +# Copyright (C) 1997-2001 Damian Conway. All rights reserved. +# Copyright (C) 2009 Adam Kennedy. +# Copyright (C) 2015 Steve Hay. All rights reserved. + +# This module is free software; you can redistribute it and/or modify it under +# the same terms as Perl itself, i.e. under the terms of either the GNU General +# Public License or the Artistic License, as specified in the F file. + package Text::Balanced; # EXTRACT VARIOUSLY DELIMITED TEXT SEQUENCES FROM STRINGS. # FOR FULL DOCUMENTATION SEE Balanced.pod -use 5.005; +use 5.008001; use strict; use Exporter (); -use SelfLoader; use vars qw { $VERSION @ISA %EXPORT_TAGS }; BEGIN { - $VERSION = '2.03'; - @ISA = 'Exporter'; - %EXPORT_TAGS = ( - ALL => [ qw{ - &extract_delimited - &extract_bracketed - &extract_quotelike - &extract_codeblock - &extract_variable - &extract_tagged - &extract_multiple - &gen_delimited_pat - &gen_extract_tagged - &delimited_pat - } ], - ); + $VERSION = '2.04'; + @ISA = 'Exporter'; + %EXPORT_TAGS = ( + ALL => [ qw{ + &extract_delimited + &extract_bracketed + &extract_quotelike + &extract_codeblock + &extract_variable + &extract_tagged + &extract_multiple + &gen_delimited_pat + &gen_extract_tagged + &delimited_pat + } ], + ); } Exporter::export_ok_tags('ALL'); +## no critic (Subroutines::ProhibitSubroutinePrototypes) + # PROTOTYPES sub _match_bracketed($$$$$$); @@ -40,80 +49,80 @@ # HANDLE RETURN VALUES IN VARIOUS CONTEXTS sub _failmsg { - my ($message, $pos) = @_; - $@ = bless { - error => $message, - pos => $pos, - }, 'Text::Balanced::ErrorMsg'; + my ($message, $pos) = @_; + $@ = bless { + error => $message, + pos => $pos, + }, 'Text::Balanced::ErrorMsg'; } sub _fail { - my ($wantarray, $textref, $message, $pos) = @_; - _failmsg $message, $pos if $message; - return (undef, $$textref, undef) if $wantarray; - return undef; + my ($wantarray, $textref, $message, $pos) = @_; + _failmsg $message, $pos if $message; + return (undef, $$textref, undef) if $wantarray; + return; } sub _succeed { - $@ = undef; - my ($wantarray,$textref) = splice @_, 0, 2; - my ($extrapos, $extralen) = @_ > 18 - ? splice(@_, -2, 2) - : (0, 0); - my ($startlen, $oppos) = @_[5,6]; - my $remainderpos = $_[2]; - if ( $wantarray ) { - my @res; - while (my ($from, $len) = splice @_, 0, 2) { - push @res, substr($$textref, $from, $len); - } - if ( $extralen ) { # CORRECT FILLET - my $extra = substr($res[0], $extrapos-$oppos, $extralen, "\n"); - $res[1] = "$extra$res[1]"; - eval { substr($$textref,$remainderpos,0) = $extra; - substr($$textref,$extrapos,$extralen,"\n")} ; - #REARRANGE HERE DOC AND FILLET IF POSSIBLE - pos($$textref) = $remainderpos-$extralen+1; # RESET \G - } else { - pos($$textref) = $remainderpos; # RESET \G - } - return @res; - } else { - my $match = substr($$textref,$_[0],$_[1]); - substr($match,$extrapos-$_[0]-$startlen,$extralen,"") if $extralen; - my $extra = $extralen - ? substr($$textref, $extrapos, $extralen)."\n" : ""; - eval {substr($$textref,$_[4],$_[1]+$_[5])=$extra} ; #CHOP OUT PREFIX & MATCH, IF POSSIBLE - pos($$textref) = $_[4]; # RESET \G - return $match; - } + $@ = undef; + my ($wantarray,$textref) = splice @_, 0, 2; + my ($extrapos, $extralen) = @_ > 18 + ? splice(@_, -2, 2) + : (0, 0); + my ($startlen, $oppos) = @_[5,6]; + my $remainderpos = $_[2]; + if ( $wantarray ) { + my @res; + while (my ($from, $len) = splice @_, 0, 2) { + push @res, substr($$textref, $from, $len); + } + if ( $extralen ) { # CORRECT FILLET + my $extra = substr($res[0], $extrapos-$oppos, $extralen, "\n"); + $res[1] = "$extra$res[1]"; + eval { substr($$textref,$remainderpos,0) = $extra; + substr($$textref,$extrapos,$extralen,"\n")} ; + #REARRANGE HERE DOC AND FILLET IF POSSIBLE + pos($$textref) = $remainderpos-$extralen+1; # RESET \G + } else { + pos($$textref) = $remainderpos; # RESET \G + } + return @res; + } else { + my $match = substr($$textref,$_[0],$_[1]); + substr($match,$extrapos-$_[0]-$startlen,$extralen,"") if $extralen; + my $extra = $extralen + ? substr($$textref, $extrapos, $extralen)."\n" : ""; + eval {substr($$textref,$_[4],$_[1]+$_[5])=$extra} ; #CHOP OUT PREFIX & MATCH, IF POSSIBLE + pos($$textref) = $_[4]; # RESET \G + return $match; + } } # BUILD A PATTERN MATCHING A SIMPLE DELIMITED STRING sub gen_delimited_pat($;$) # ($delimiters;$escapes) { - my ($dels, $escs) = @_; - return "" unless $dels =~ /\S/; - $escs = '\\' unless $escs; - $escs .= substr($escs,-1) x (length($dels)-length($escs)); - my @pat = (); - my $i; - for ($i=0; $i\0-\377/[[(({{</) - { - return _fail $wantarray, $textref, - "Did not find a suitable bracket in delimiter: \"$_[1]\"", - 0; - } - my $posbug = pos; - $ldel = join('|', map { quotemeta $_ } split('', $ldel)); - $rdel = join('|', map { quotemeta $_ } split('', $rdel)); - pos = $posbug; - - my $startpos = pos $$textref || 0; - my @match = _match_bracketed($textref,$pre, $ldel, $qdel, $quotelike, $rdel); - - return _fail ($wantarray, $textref) unless @match; - - return _succeed ( $wantarray, $textref, - $match[2], $match[5]+2, # MATCH - @match[8,9], # REMAINDER - @match[0,1], # PREFIX - ); + my $textref = defined $_[0] ? \$_[0] : \$_; + my $ldel = defined $_[1] ? $_[1] : '{([<'; + my $pre = defined $_[2] ? $_[2] : '\s*'; + my $wantarray = wantarray; + my $qdel = ""; + my $quotelike; + $ldel =~ s/'//g and $qdel .= q{'}; + $ldel =~ s/"//g and $qdel .= q{"}; + $ldel =~ s/`//g and $qdel .= q{`}; + $ldel =~ s/q//g and $quotelike = 1; + $ldel =~ tr/[](){}<>\0-\377/[[(({{</) + { + return _fail $wantarray, $textref, + "Did not find a suitable bracket in delimiter: \"$_[1]\"", + 0; + } + my $posbug = pos; + $ldel = join('|', map { quotemeta $_ } split('', $ldel)); + $rdel = join('|', map { quotemeta $_ } split('', $rdel)); + pos = $posbug; + + my $startpos = pos $$textref || 0; + my @match = _match_bracketed($textref,$pre, $ldel, $qdel, $quotelike, $rdel); + + return _fail ($wantarray, $textref) unless @match; + + return _succeed ( $wantarray, $textref, + $match[2], $match[5]+2, # MATCH + @match[8,9], # REMAINDER + @match[0,1], # PREFIX + ); } -sub _match_bracketed($$$$$$) # $textref, $pre, $ldel, $qdel, $quotelike, $rdel +sub _match_bracketed($$$$$$) # $textref, $pre, $ldel, $qdel, $quotelike, $rdel { - my ($textref, $pre, $ldel, $qdel, $quotelike, $rdel) = @_; - my ($startpos, $ldelpos, $endpos) = (pos $$textref = pos $$textref||0); - unless ($$textref =~ m/\G$pre/gc) - { - _failmsg "Did not find prefix: /$pre/", $startpos; - return; - } - - $ldelpos = pos $$textref; - - unless ($$textref =~ m/\G($ldel)/gc) - { - _failmsg "Did not find opening bracket after prefix: \"$pre\"", - pos $$textref; - pos $$textref = $startpos; - return; - } - - my @nesting = ( $1 ); - my $textlen = length $$textref; - while (pos $$textref < $textlen) - { - next if $$textref =~ m/\G\\./gcs; - - if ($$textref =~ m/\G($ldel)/gc) - { - push @nesting, $1; - } - elsif ($$textref =~ m/\G($rdel)/gc) - { - my ($found, $brackettype) = ($1, $1); - if ($#nesting < 0) - { - _failmsg "Unmatched closing bracket: \"$found\"", - pos $$textref; - pos $$textref = $startpos; - return; - } - my $expected = pop(@nesting); - $expected =~ tr/({[/; - if ($expected ne $brackettype) - { - _failmsg qq{Mismatched closing bracket: expected "$expected" but found "$found"}, - pos $$textref; - pos $$textref = $startpos; - return; - } - last if $#nesting < 0; - } - elsif ($qdel && $$textref =~ m/\G([$qdel])/gc) - { - $$textref =~ m/\G[^\\$1]*(?:\\.[^\\$1]*)*(\Q$1\E)/gsc and next; - _failmsg "Unmatched embedded quote ($1)", - pos $$textref; - pos $$textref = $startpos; - return; - } - elsif ($quotelike && _match_quotelike($textref,"",1,0)) - { - next; - } - - else { $$textref =~ m/\G(?:[a-zA-Z0-9]+|.)/gcs } - } - if ($#nesting>=0) - { - _failmsg "Unmatched opening bracket(s): " - . join("..",@nesting)."..", - pos $$textref; - pos $$textref = $startpos; - return; - } - - $endpos = pos $$textref; - - return ( - $startpos, $ldelpos-$startpos, # PREFIX - $ldelpos, 1, # OPENING BRACKET - $ldelpos+1, $endpos-$ldelpos-2, # CONTENTS - $endpos-1, 1, # CLOSING BRACKET - $endpos, length($$textref)-$endpos, # REMAINDER - ); + my ($textref, $pre, $ldel, $qdel, $quotelike, $rdel) = @_; + my ($startpos, $ldelpos, $endpos) = (pos $$textref = pos $$textref||0); + unless ($$textref =~ m/\G$pre/gc) + { + _failmsg "Did not find prefix: /$pre/", $startpos; + return; + } + + $ldelpos = pos $$textref; + + unless ($$textref =~ m/\G($ldel)/gc) + { + _failmsg "Did not find opening bracket after prefix: \"$pre\"", + pos $$textref; + pos $$textref = $startpos; + return; + } + + my @nesting = ( $1 ); + my $textlen = length $$textref; + while (pos $$textref < $textlen) + { + next if $$textref =~ m/\G\\./gcs; + + if ($$textref =~ m/\G($ldel)/gc) + { + push @nesting, $1; + } + elsif ($$textref =~ m/\G($rdel)/gc) + { + my ($found, $brackettype) = ($1, $1); + if ($#nesting < 0) + { + _failmsg "Unmatched closing bracket: \"$found\"", + pos $$textref; + pos $$textref = $startpos; + return; + } + my $expected = pop(@nesting); + $expected =~ tr/({[/; + if ($expected ne $brackettype) + { + _failmsg qq{Mismatched closing bracket: expected "$expected" but found "$found"}, + pos $$textref; + pos $$textref = $startpos; + return; + } + last if $#nesting < 0; + } + elsif ($qdel && $$textref =~ m/\G([$qdel])/gc) + { + $$textref =~ m/\G[^\\$1]*(?:\\.[^\\$1]*)*(\Q$1\E)/gsc and next; + _failmsg "Unmatched embedded quote ($1)", + pos $$textref; + pos $$textref = $startpos; + return; + } + elsif ($quotelike && _match_quotelike($textref,"",1,0)) + { + next; + } + + else { $$textref =~ m/\G(?:[a-zA-Z0-9]+|.)/gcs } + } + if ($#nesting>=0) + { + _failmsg "Unmatched opening bracket(s): " + . join("..",@nesting)."..", + pos $$textref; + pos $$textref = $startpos; + return; + } + + $endpos = pos $$textref; + + return ( + $startpos, $ldelpos-$startpos, # PREFIX + $ldelpos, 1, # OPENING BRACKET + $ldelpos+1, $endpos-$ldelpos-2, # CONTENTS + $endpos-1, 1, # CLOSING BRACKET + $endpos, length($$textref)-$endpos, # REMAINDER + ); } sub _revbracket($) { - my $brack = reverse $_[0]; - $brack =~ tr/[({/; - return $brack; + my $brack = reverse $_[0]; + $brack =~ tr/[({/; + return $brack; } my $XMLNAME = q{[a-zA-Z_:][a-zA-Z0-9_:.-]*}; sub extract_tagged (;$$$$$) # ($text, $opentag, $closetag, $pre, \%options) { - my $textref = defined $_[0] ? \$_[0] : \$_; - my $ldel = $_[1]; - my $rdel = $_[2]; - my $pre = defined $_[3] ? $_[3] : '\s*'; - my %options = defined $_[4] ? %{$_[4]} : (); - my $omode = defined $options{fail} ? $options{fail} : ''; - my $bad = ref($options{reject}) eq 'ARRAY' ? join('|', @{$options{reject}}) - : defined($options{reject}) ? $options{reject} - : '' - ; - my $ignore = ref($options{ignore}) eq 'ARRAY' ? join('|', @{$options{ignore}}) - : defined($options{ignore}) ? $options{ignore} - : '' - ; - - if (!defined $ldel) { $ldel = '<\w+(?:' . gen_delimited_pat(q{'"}) . '|[^>])*>'; } - $@ = undef; - - my @match = _match_tagged($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore); - - return _fail(wantarray, $textref) unless @match; - return _succeed wantarray, $textref, - $match[2], $match[3]+$match[5]+$match[7], # MATCH - @match[8..9,0..1,2..7]; # REM, PRE, BITS + my $textref = defined $_[0] ? \$_[0] : \$_; + my $ldel = $_[1]; + my $rdel = $_[2]; + my $pre = defined $_[3] ? $_[3] : '\s*'; + my %options = defined $_[4] ? %{$_[4]} : (); + my $omode = defined $options{fail} ? $options{fail} : ''; + my $bad = ref($options{reject}) eq 'ARRAY' ? join('|', @{$options{reject}}) + : defined($options{reject}) ? $options{reject} + : '' + ; + my $ignore = ref($options{ignore}) eq 'ARRAY' ? join('|', @{$options{ignore}}) + : defined($options{ignore}) ? $options{ignore} + : '' + ; + + if (!defined $ldel) { $ldel = '<\w+(?:' . gen_delimited_pat(q{'"}) . '|[^>])*>'; } + $@ = undef; + + my @match = _match_tagged($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore); + + return _fail(wantarray, $textref) unless @match; + return _succeed wantarray, $textref, + $match[2], $match[3]+$match[5]+$match[7], # MATCH + @match[8..9,0..1,2..7]; # REM, PRE, BITS } -sub _match_tagged # ($$$$$$$) +sub _match_tagged # ($$$$$$$) { - my ($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore) = @_; - my $rdelspec; + my ($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore) = @_; + my $rdelspec; - my ($startpos, $opentagpos, $textpos, $parapos, $closetagpos, $endpos) = ( pos($$textref) = pos($$textref)||0 ); + my ($startpos, $opentagpos, $textpos, $parapos, $closetagpos, $endpos) = ( pos($$textref) = pos($$textref)||0 ); - unless ($$textref =~ m/\G($pre)/gc) - { - _failmsg "Did not find prefix: /$pre/", pos $$textref; - goto failed; - } - - $opentagpos = pos($$textref); - - unless ($$textref =~ m/\G$ldel/gc) - { - _failmsg "Did not find opening tag: /$ldel/", pos $$textref; - goto failed; - } - - $textpos = pos($$textref); - - if (!defined $rdel) - { - $rdelspec = substr($$textref, $-[0], $+[0] - $-[0]); - unless ($rdelspec =~ s/\A([[(<{]+)($XMLNAME).*/ quotemeta "$1\/$2". _revbracket($1) /oes) - { - _failmsg "Unable to construct closing tag to match: $rdel", - pos $$textref; - goto failed; - } - } - else - { - $rdelspec = eval "qq{$rdel}" || do { - my $del; - for (qw,~ ! ^ & * ) _ + - = } ] : " ; ' > . ? / | ',) - { next if $rdel =~ /\Q$_/; $del = $_; last } - unless ($del) { - use Carp; - croak "Can't interpolate right delimiter $rdel" - } - eval "qq$del$rdel$del"; - }; - } - - while (pos($$textref) < length($$textref)) - { - next if $$textref =~ m/\G\\./gc; - - if ($$textref =~ m/\G(\n[ \t]*\n)/gc ) - { - $parapos = pos($$textref) - length($1) - unless defined $parapos; - } - elsif ($$textref =~ m/\G($rdelspec)/gc ) - { - $closetagpos = pos($$textref)-length($1); - goto matched; - } - elsif ($ignore && $$textref =~ m/\G(?:$ignore)/gc) - { - next; - } - elsif ($bad && $$textref =~ m/\G($bad)/gcs) - { - pos($$textref) -= length($1); # CUT OFF WHATEVER CAUSED THE SHORTNESS - goto short if ($omode eq 'PARA' || $omode eq 'MAX'); - _failmsg "Found invalid nested tag: $1", pos $$textref; - goto failed; - } - elsif ($$textref =~ m/\G($ldel)/gc) - { - my $tag = $1; - pos($$textref) -= length($tag); # REWIND TO NESTED TAG - unless (_match_tagged(@_)) # MATCH NESTED TAG - { - goto short if $omode eq 'PARA' || $omode eq 'MAX'; - _failmsg "Found unbalanced nested tag: $tag", - pos $$textref; - goto failed; - } - } - else { $$textref =~ m/./gcs } - } + unless ($$textref =~ m/\G($pre)/gc) + { + _failmsg "Did not find prefix: /$pre/", pos $$textref; + goto failed; + } + + $opentagpos = pos($$textref); + + unless ($$textref =~ m/\G$ldel/gc) + { + _failmsg "Did not find opening tag: /$ldel/", pos $$textref; + goto failed; + } + + $textpos = pos($$textref); + + if (!defined $rdel) + { + $rdelspec = substr($$textref, $-[0], $+[0] - $-[0]); + unless ($rdelspec =~ s/\A([[(<{]+)($XMLNAME).*/ quotemeta "$1\/$2". _revbracket($1) /oes) + { + _failmsg "Unable to construct closing tag to match: $rdel", + pos $$textref; + goto failed; + } + } + else + { + ## no critic (BuiltinFunctions::ProhibitStringyEval) + $rdelspec = eval "qq{$rdel}" || do { + my $del; + for (qw,~ ! ^ & * ) _ + - = } ] : " ; ' > . ? / | ',) + { next if $rdel =~ /\Q$_/; $del = $_; last } + unless ($del) { + use Carp; + croak "Can't interpolate right delimiter $rdel" + } + eval "qq$del$rdel$del"; + }; + } + + while (pos($$textref) < length($$textref)) + { + next if $$textref =~ m/\G\\./gc; + + if ($$textref =~ m/\G(\n[ \t]*\n)/gc ) + { + $parapos = pos($$textref) - length($1) + unless defined $parapos; + } + elsif ($$textref =~ m/\G($rdelspec)/gc ) + { + $closetagpos = pos($$textref)-length($1); + goto matched; + } + elsif ($ignore && $$textref =~ m/\G(?:$ignore)/gc) + { + next; + } + elsif ($bad && $$textref =~ m/\G($bad)/gcs) + { + pos($$textref) -= length($1); # CUT OFF WHATEVER CAUSED THE SHORTNESS + goto short if ($omode eq 'PARA' || $omode eq 'MAX'); + _failmsg "Found invalid nested tag: $1", pos $$textref; + goto failed; + } + elsif ($$textref =~ m/\G($ldel)/gc) + { + my $tag = $1; + pos($$textref) -= length($tag); # REWIND TO NESTED TAG + unless (_match_tagged(@_)) # MATCH NESTED TAG + { + goto short if $omode eq 'PARA' || $omode eq 'MAX'; + _failmsg "Found unbalanced nested tag: $tag", + pos $$textref; + goto failed; + } + } + else { $$textref =~ m/./gcs } + } short: - $closetagpos = pos($$textref); - goto matched if $omode eq 'MAX'; - goto failed unless $omode eq 'PARA'; - - if (defined $parapos) { pos($$textref) = $parapos } - else { $parapos = pos($$textref) } - - return ( - $startpos, $opentagpos-$startpos, # PREFIX - $opentagpos, $textpos-$opentagpos, # OPENING TAG - $textpos, $parapos-$textpos, # TEXT - $parapos, 0, # NO CLOSING TAG - $parapos, length($$textref)-$parapos, # REMAINDER - ); - + $closetagpos = pos($$textref); + goto matched if $omode eq 'MAX'; + goto failed unless $omode eq 'PARA'; + + if (defined $parapos) { pos($$textref) = $parapos } + else { $parapos = pos($$textref) } + + return ( + $startpos, $opentagpos-$startpos, # PREFIX + $opentagpos, $textpos-$opentagpos, # OPENING TAG + $textpos, $parapos-$textpos, # TEXT + $parapos, 0, # NO CLOSING TAG + $parapos, length($$textref)-$parapos, # REMAINDER + ); + matched: - $endpos = pos($$textref); - return ( - $startpos, $opentagpos-$startpos, # PREFIX - $opentagpos, $textpos-$opentagpos, # OPENING TAG - $textpos, $closetagpos-$textpos, # TEXT - $closetagpos, $endpos-$closetagpos, # CLOSING TAG - $endpos, length($$textref)-$endpos, # REMAINDER - ); + $endpos = pos($$textref); + return ( + $startpos, $opentagpos-$startpos, # PREFIX + $opentagpos, $textpos-$opentagpos, # OPENING TAG + $textpos, $closetagpos-$textpos, # TEXT + $closetagpos, $endpos-$closetagpos, # CLOSING TAG + $endpos, length($$textref)-$endpos, # REMAINDER + ); failed: - _failmsg "Did not find closing tag", pos $$textref unless $@; - pos($$textref) = $startpos; - return; + _failmsg "Did not find closing tag", pos $$textref unless $@; + pos($$textref) = $startpos; + return; } sub extract_variable (;$$) { - my $textref = defined $_[0] ? \$_[0] : \$_; - return ("","","") unless defined $$textref; - my $pre = defined $_[1] ? $_[1] : '\s*'; + my $textref = defined $_[0] ? \$_[0] : \$_; + return ("","","") unless defined $$textref; + my $pre = defined $_[1] ? $_[1] : '\s*'; - my @match = _match_variable($textref,$pre); + my @match = _match_variable($textref,$pre); - return _fail wantarray, $textref unless @match; + return _fail wantarray, $textref unless @match; - return _succeed wantarray, $textref, - @match[2..3,4..5,0..1]; # MATCH, REMAINDER, PREFIX + return _succeed wantarray, $textref, + @match[2..3,4..5,0..1]; # MATCH, REMAINDER, PREFIX } sub _match_variable($$) @@ -438,582 +448,581 @@ # $# # $^ # $$ - my ($textref, $pre) = @_; - my $startpos = pos($$textref) = pos($$textref)||0; - unless ($$textref =~ m/\G($pre)/gc) - { - _failmsg "Did not find prefix: /$pre/", pos $$textref; - return; - } - my $varpos = pos($$textref); - unless ($$textref =~ m{\G\$\s*(?!::)(\d+|[][&`'+*./|,";%=~:?!\@<>()-]|\^[a-z]?)}gci) - { - unless ($$textref =~ m/\G((\$#?|[*\@\%]|\\&)+)/gc) - { - _failmsg "Did not find leading dereferencer", pos $$textref; - pos $$textref = $startpos; - return; - } - my $deref = $1; - - unless ($$textref =~ m/\G\s*(?:::|')?(?:[_a-z]\w*(?:::|'))*[_a-z]\w*/gci - or _match_codeblock($textref, "", '\{', '\}', '\{', '\}', 0) - or $deref eq '$#' or $deref eq '$$' ) - { - _failmsg "Bad identifier after dereferencer", pos $$textref; - pos $$textref = $startpos; - return; - } - } - - while (1) - { - next if $$textref =~ m/\G\s*(?:->)?\s*[{]\w+[}]/gc; - next if _match_codeblock($textref, - qr/\s*->\s*(?:[_a-zA-Z]\w+\s*)?/, - qr/[({[]/, qr/[)}\]]/, - qr/[({[]/, qr/[)}\]]/, 0); - next if _match_codeblock($textref, - qr/\s*/, qr/[{[]/, qr/[}\]]/, - qr/[{[]/, qr/[}\]]/, 0); - next if _match_variable($textref,'\s*->\s*'); - next if $$textref =~ m/\G\s*->\s*\w+(?![{([])/gc; - last; - } - - my $endpos = pos($$textref); - return ($startpos, $varpos-$startpos, - $varpos, $endpos-$varpos, - $endpos, length($$textref)-$endpos - ); + my ($textref, $pre) = @_; + my $startpos = pos($$textref) = pos($$textref)||0; + unless ($$textref =~ m/\G($pre)/gc) + { + _failmsg "Did not find prefix: /$pre/", pos $$textref; + return; + } + my $varpos = pos($$textref); + unless ($$textref =~ m{\G\$\s*(?!::)(\d+|[][&`'+*./|,";%=~:?!\@<>()-]|\^[a-z]?)}gci) + { + unless ($$textref =~ m/\G((\$#?|[*\@\%]|\\&)+)/gc) + { + _failmsg "Did not find leading dereferencer", pos $$textref; + pos $$textref = $startpos; + return; + } + my $deref = $1; + + unless ($$textref =~ m/\G\s*(?:::|')?(?:[_a-z]\w*(?:::|'))*[_a-z]\w*/gci + or _match_codeblock($textref, "", '\{', '\}', '\{', '\}', 0) + or $deref eq '$#' or $deref eq '$$' ) + { + _failmsg "Bad identifier after dereferencer", pos $$textref; + pos $$textref = $startpos; + return; + } + } + + while (1) + { + next if $$textref =~ m/\G\s*(?:->)?\s*[{]\w+[}]/gc; + next if _match_codeblock($textref, + qr/\s*->\s*(?:[_a-zA-Z]\w+\s*)?/, + qr/[({[]/, qr/[)}\]]/, + qr/[({[]/, qr/[)}\]]/, 0); + next if _match_codeblock($textref, + qr/\s*/, qr/[{[]/, qr/[}\]]/, + qr/[{[]/, qr/[}\]]/, 0); + next if _match_variable($textref,'\s*->\s*'); + next if $$textref =~ m/\G\s*->\s*\w+(?![{([])/gc; + last; + } + + my $endpos = pos($$textref); + return ($startpos, $varpos-$startpos, + $varpos, $endpos-$varpos, + $endpos, length($$textref)-$endpos + ); } sub extract_codeblock (;$$$$$) { - my $textref = defined $_[0] ? \$_[0] : \$_; - my $wantarray = wantarray; - my $ldel_inner = defined $_[1] ? $_[1] : '{'; - my $pre = defined $_[2] ? $_[2] : '\s*'; - my $ldel_outer = defined $_[3] ? $_[3] : $ldel_inner; - my $rd = $_[4]; - my $rdel_inner = $ldel_inner; - my $rdel_outer = $ldel_outer; - my $posbug = pos; - for ($ldel_inner, $ldel_outer) { tr/[]()<>{}\0-\377/[[((<<{{/ds } - for ($rdel_inner, $rdel_outer) { tr/[]()<>{}\0-\377/]]))>>}}/ds } - for ($ldel_inner, $ldel_outer, $rdel_inner, $rdel_outer) - { - $_ = '('.join('|',map { quotemeta $_ } split('',$_)).')' - } - pos = $posbug; - - my @match = _match_codeblock($textref, $pre, - $ldel_outer, $rdel_outer, - $ldel_inner, $rdel_inner, - $rd); - return _fail($wantarray, $textref) unless @match; - return _succeed($wantarray, $textref, - @match[2..3,4..5,0..1] # MATCH, REMAINDER, PREFIX - ); + my $textref = defined $_[0] ? \$_[0] : \$_; + my $wantarray = wantarray; + my $ldel_inner = defined $_[1] ? $_[1] : '{'; + my $pre = defined $_[2] ? $_[2] : '\s*'; + my $ldel_outer = defined $_[3] ? $_[3] : $ldel_inner; + my $rd = $_[4]; + my $rdel_inner = $ldel_inner; + my $rdel_outer = $ldel_outer; + my $posbug = pos; + for ($ldel_inner, $ldel_outer) { tr/[]()<>{}\0-\377/[[((<<{{/ds } + for ($rdel_inner, $rdel_outer) { tr/[]()<>{}\0-\377/]]))>>}}/ds } + for ($ldel_inner, $ldel_outer, $rdel_inner, $rdel_outer) + { + $_ = '('.join('|',map { quotemeta $_ } split('',$_)).')' + } + pos = $posbug; + + my @match = _match_codeblock($textref, $pre, + $ldel_outer, $rdel_outer, + $ldel_inner, $rdel_inner, + $rd); + return _fail($wantarray, $textref) unless @match; + return _succeed($wantarray, $textref, + @match[2..3,4..5,0..1] # MATCH, REMAINDER, PREFIX + ); } sub _match_codeblock($$$$$$$) { - my ($textref, $pre, $ldel_outer, $rdel_outer, $ldel_inner, $rdel_inner, $rd) = @_; - my $startpos = pos($$textref) = pos($$textref) || 0; - unless ($$textref =~ m/\G($pre)/gc) - { - _failmsg qq{Did not match prefix /$pre/ at"} . - substr($$textref,pos($$textref),20) . - q{..."}, - pos $$textref; - return; - } - my $codepos = pos($$textref); - unless ($$textref =~ m/\G($ldel_outer)/gc) # OUTERMOST DELIMITER - { - _failmsg qq{Did not find expected opening bracket at "} . - substr($$textref,pos($$textref),20) . - q{..."}, - pos $$textref; - pos $$textref = $startpos; - return; - } - my $closing = $1; - $closing =~ tr/([<{/)]>}/; - my $matched; - my $patvalid = 1; - while (pos($$textref) < length($$textref)) - { - $matched = ''; - if ($rd && $$textref =~ m#\G(\Q(?)\E|\Q(s?)\E|\Q(s)\E)#gc) - { - $patvalid = 0; - next; - } - - if ($$textref =~ m/\G\s*#.*/gc) - { - next; - } - - if ($$textref =~ m/\G\s*($rdel_outer)/gc) - { - unless ($matched = ($closing && $1 eq $closing) ) - { - next if $1 eq '>'; # MIGHT BE A "LESS THAN" - _failmsg q{Mismatched closing bracket at "} . - substr($$textref,pos($$textref),20) . - qq{...". Expected '$closing'}, - pos $$textref; - } - last; - } - - if (_match_variable($textref,'\s*') || - _match_quotelike($textref,'\s*',$patvalid,$patvalid) ) - { - $patvalid = 0; - next; - } - - - # NEED TO COVER MANY MORE CASES HERE!!! - if ($$textref =~ m#\G\s*(?!$ldel_inner) - ( [-+*x/%^&|.]=? - | [!=]~ - | =(?!>) - | (\*\*|&&|\|\||<<|>>)=? - | split|grep|map|return - | [([] - )#gcx) - { - $patvalid = 1; - next; - } - - if ( _match_codeblock($textref, '\s*', $ldel_inner, $rdel_inner, $ldel_inner, $rdel_inner, $rd) ) - { - $patvalid = 1; - next; - } - - if ($$textref =~ m/\G\s*$ldel_outer/gc) - { - _failmsg q{Improperly nested codeblock at "} . - substr($$textref,pos($$textref),20) . - q{..."}, - pos $$textref; - last; - } - - $patvalid = 0; - $$textref =~ m/\G\s*(\w+|[-=>]>|.|\Z)/gc; - } - continue { $@ = undef } - - unless ($matched) - { - _failmsg 'No match found for opening bracket', pos $$textref - unless $@; - return; - } - - my $endpos = pos($$textref); - return ( $startpos, $codepos-$startpos, - $codepos, $endpos-$codepos, - $endpos, length($$textref)-$endpos, - ); + my ($textref, $pre, $ldel_outer, $rdel_outer, $ldel_inner, $rdel_inner, $rd) = @_; + my $startpos = pos($$textref) = pos($$textref) || 0; + unless ($$textref =~ m/\G($pre)/gc) + { + _failmsg qq{Did not match prefix /$pre/ at"} . + substr($$textref,pos($$textref),20) . + q{..."}, + pos $$textref; + return; + } + my $codepos = pos($$textref); + unless ($$textref =~ m/\G($ldel_outer)/gc) # OUTERMOST DELIMITER + { + _failmsg qq{Did not find expected opening bracket at "} . + substr($$textref,pos($$textref),20) . + q{..."}, + pos $$textref; + pos $$textref = $startpos; + return; + } + my $closing = $1; + $closing =~ tr/([<{/)]>}/; + my $matched; + my $patvalid = 1; + while (pos($$textref) < length($$textref)) + { + $matched = ''; + if ($rd && $$textref =~ m#\G(\Q(?)\E|\Q(s?)\E|\Q(s)\E)#gc) + { + $patvalid = 0; + next; + } + + if ($$textref =~ m/\G\s*#.*/gc) + { + next; + } + + if ($$textref =~ m/\G\s*($rdel_outer)/gc) + { + unless ($matched = ($closing && $1 eq $closing) ) + { + next if $1 eq '>'; # MIGHT BE A "LESS THAN" + _failmsg q{Mismatched closing bracket at "} . + substr($$textref,pos($$textref),20) . + qq{...". Expected '$closing'}, + pos $$textref; + } + last; + } + + if (_match_variable($textref,'\s*') || + _match_quotelike($textref,'\s*',$patvalid,$patvalid) ) + { + $patvalid = 0; + next; + } + + + # NEED TO COVER MANY MORE CASES HERE!!! + if ($$textref =~ m#\G\s*(?!$ldel_inner) + ( [-+*x/%^&|.]=? + | [!=]~ + | =(?!>) + | (\*\*|&&|\|\||<<|>>)=? + | split|grep|map|return + | [([] + )#gcx) + { + $patvalid = 1; + next; + } + + if ( _match_codeblock($textref, '\s*', $ldel_inner, $rdel_inner, $ldel_inner, $rdel_inner, $rd) ) + { + $patvalid = 1; + next; + } + + if ($$textref =~ m/\G\s*$ldel_outer/gc) + { + _failmsg q{Improperly nested codeblock at "} . + substr($$textref,pos($$textref),20) . + q{..."}, + pos $$textref; + last; + } + + $patvalid = 0; + $$textref =~ m/\G\s*(\w+|[-=>]>|.|\Z)/gc; + } + continue { $@ = undef } + + unless ($matched) + { + _failmsg 'No match found for opening bracket', pos $$textref + unless $@; + return; + } + + my $endpos = pos($$textref); + return ( $startpos, $codepos-$startpos, + $codepos, $endpos-$codepos, + $endpos, length($$textref)-$endpos, + ); } my %mods = ( - 'none' => '[cgimsox]*', - 'm' => '[cgimsox]*', - 's' => '[cegimsox]*', - 'tr' => '[cds]*', - 'y' => '[cds]*', - 'qq' => '', - 'qx' => '', - 'qw' => '', - 'qr' => '[imsx]*', - 'q' => '', - ); + 'none' => '[cgimsox]*', + 'm' => '[cgimsox]*', + 's' => '[cegimsox]*', + 'tr' => '[cds]*', + 'y' => '[cds]*', + 'qq' => '', + 'qx' => '', + 'qw' => '', + 'qr' => '[imsx]*', + 'q' => '', +); sub extract_quotelike (;$$) { - my $textref = $_[0] ? \$_[0] : \$_; - my $wantarray = wantarray; - my $pre = defined $_[1] ? $_[1] : '\s*'; - - my @match = _match_quotelike($textref,$pre,1,0); - return _fail($wantarray, $textref) unless @match; - return _succeed($wantarray, $textref, - $match[2], $match[18]-$match[2], # MATCH - @match[18,19], # REMAINDER - @match[0,1], # PREFIX - @match[2..17], # THE BITS - @match[20,21], # ANY FILLET? - ); + my $textref = $_[0] ? \$_[0] : \$_; + my $wantarray = wantarray; + my $pre = defined $_[1] ? $_[1] : '\s*'; + + my @match = _match_quotelike($textref,$pre,1,0); + return _fail($wantarray, $textref) unless @match; + return _succeed($wantarray, $textref, + $match[2], $match[18]-$match[2], # MATCH + @match[18,19], # REMAINDER + @match[0,1], # PREFIX + @match[2..17], # THE BITS + @match[20,21], # ANY FILLET? + ); }; -sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match) +sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match) { - my ($textref, $pre, $rawmatch, $qmark) = @_; + my ($textref, $pre, $rawmatch, $qmark) = @_; + + my ($textlen,$startpos, + $oppos, + $preld1pos,$ld1pos,$str1pos,$rd1pos, + $preld2pos,$ld2pos,$str2pos,$rd2pos, + $modpos) = ( length($$textref), pos($$textref) = pos($$textref) || 0 ); + + unless ($$textref =~ m/\G($pre)/gc) + { + _failmsg qq{Did not find prefix /$pre/ at "} . + substr($$textref, pos($$textref), 20) . + q{..."}, + pos $$textref; + return; + } + $oppos = pos($$textref); + + my $initial = substr($$textref,$oppos,1); + + if ($initial && $initial =~ m|^[\"\'\`]| + || $rawmatch && $initial =~ m|^/| + || $qmark && $initial =~ m|^\?|) + { + unless ($$textref =~ m/ \Q$initial\E [^\\$initial]* (\\.[^\\$initial]*)* \Q$initial\E /gcsx) + { + _failmsg qq{Did not find closing delimiter to match '$initial' at "} . + substr($$textref, $oppos, 20) . + q{..."}, + pos $$textref; + pos $$textref = $startpos; + return; + } + $modpos= pos($$textref); + $rd1pos = $modpos-1; + + if ($initial eq '/' || $initial eq '?') + { + $$textref =~ m/\G$mods{none}/gc + } - my ($textlen,$startpos, - $oppos, - $preld1pos,$ld1pos,$str1pos,$rd1pos, - $preld2pos,$ld2pos,$str2pos,$rd2pos, - $modpos) = ( length($$textref), pos($$textref) = pos($$textref) || 0 ); - - unless ($$textref =~ m/\G($pre)/gc) - { - _failmsg qq{Did not find prefix /$pre/ at "} . - substr($$textref, pos($$textref), 20) . - q{..."}, - pos $$textref; - return; - } - $oppos = pos($$textref); - - my $initial = substr($$textref,$oppos,1); - - if ($initial && $initial =~ m|^[\"\'\`]| - || $rawmatch && $initial =~ m|^/| - || $qmark && $initial =~ m|^\?|) - { - unless ($$textref =~ m/ \Q$initial\E [^\\$initial]* (\\.[^\\$initial]*)* \Q$initial\E /gcsx) - { - _failmsg qq{Did not find closing delimiter to match '$initial' at "} . - substr($$textref, $oppos, 20) . - q{..."}, - pos $$textref; - pos $$textref = $startpos; - return; - } - $modpos= pos($$textref); - $rd1pos = $modpos-1; - - if ($initial eq '/' || $initial eq '?') - { - $$textref =~ m/\G$mods{none}/gc - } - - my $endpos = pos($$textref); - return ( - $startpos, $oppos-$startpos, # PREFIX - $oppos, 0, # NO OPERATOR - $oppos, 1, # LEFT DEL - $oppos+1, $rd1pos-$oppos-1, # STR/PAT - $rd1pos, 1, # RIGHT DEL - $modpos, 0, # NO 2ND LDEL - $modpos, 0, # NO 2ND STR - $modpos, 0, # NO 2ND RDEL - $modpos, $endpos-$modpos, # MODIFIERS - $endpos, $textlen-$endpos, # REMAINDER - ); - } - - unless ($$textref =~ m{\G(\b(?:m|s|qq|qx|qw|q|qr|tr|y)\b(?=\s*\S)|<<)}gc) - { - _failmsg q{No quotelike operator found after prefix at "} . - substr($$textref, pos($$textref), 20) . - q{..."}, - pos $$textref; - pos $$textref = $startpos; - return; - } - - my $op = $1; - $preld1pos = pos($$textref); - if ($op eq '<<') { - $ld1pos = pos($$textref); - my $label; - if ($$textref =~ m{\G([A-Za-z_]\w*)}gc) { - $label = $1; - } - elsif ($$textref =~ m{ \G ' ([^'\\]* (?:\\.[^'\\]*)*) ' - | \G " ([^"\\]* (?:\\.[^"\\]*)*) " - | \G ` ([^`\\]* (?:\\.[^`\\]*)*) ` - }gcsx) { - $label = $+; - } - else { - $label = ""; - } - my $extrapos = pos($$textref); - $$textref =~ m{.*\n}gc; - $str1pos = pos($$textref)--; - unless ($$textref =~ m{.*?\n(?=\Q$label\E\n)}gc) { - _failmsg qq{Missing here doc terminator ('$label') after "} . - substr($$textref, $startpos, 20) . - q{..."}, - pos $$textref; - pos $$textref = $startpos; - return; - } - $rd1pos = pos($$textref); + my $endpos = pos($$textref); + return ( + $startpos, $oppos-$startpos, # PREFIX + $oppos, 0, # NO OPERATOR + $oppos, 1, # LEFT DEL + $oppos+1, $rd1pos-$oppos-1, # STR/PAT + $rd1pos, 1, # RIGHT DEL + $modpos, 0, # NO 2ND LDEL + $modpos, 0, # NO 2ND STR + $modpos, 0, # NO 2ND RDEL + $modpos, $endpos-$modpos, # MODIFIERS + $endpos, $textlen-$endpos, # REMAINDER + ); + } + + unless ($$textref =~ m{\G(\b(?:m|s|qq|qx|qw|q|qr|tr|y)\b(?=\s*\S)|<<)}gc) + { + _failmsg q{No quotelike operator found after prefix at "} . + substr($$textref, pos($$textref), 20) . + q{..."}, + pos $$textref; + pos $$textref = $startpos; + return; + } + + my $op = $1; + $preld1pos = pos($$textref); + if ($op eq '<<') { + $ld1pos = pos($$textref); + my $label; + if ($$textref =~ m{\G([A-Za-z_]\w*)}gc) { + $label = $1; + } + elsif ($$textref =~ m{ \G ' ([^'\\]* (?:\\.[^'\\]*)*) ' + | \G " ([^"\\]* (?:\\.[^"\\]*)*) " + | \G ` ([^`\\]* (?:\\.[^`\\]*)*) ` + }gcsx) { + $label = $+; + } + else { + $label = ""; + } + my $extrapos = pos($$textref); + $$textref =~ m{.*\n}gc; + $str1pos = pos($$textref)--; + unless ($$textref =~ m{.*?\n(?=\Q$label\E\n)}gc) { + _failmsg qq{Missing here doc terminator ('$label') after "} . + substr($$textref, $startpos, 20) . + q{..."}, + pos $$textref; + pos $$textref = $startpos; + return; + } + $rd1pos = pos($$textref); $$textref =~ m{\Q$label\E\n}gc; - $ld2pos = pos($$textref); - return ( - $startpos, $oppos-$startpos, # PREFIX - $oppos, length($op), # OPERATOR - $ld1pos, $extrapos-$ld1pos, # LEFT DEL - $str1pos, $rd1pos-$str1pos, # STR/PAT - $rd1pos, $ld2pos-$rd1pos, # RIGHT DEL - $ld2pos, 0, # NO 2ND LDEL - $ld2pos, 0, # NO 2ND STR - $ld2pos, 0, # NO 2ND RDEL - $ld2pos, 0, # NO MODIFIERS - $ld2pos, $textlen-$ld2pos, # REMAINDER - $extrapos, $str1pos-$extrapos, # FILLETED BIT - ); - } - - $$textref =~ m/\G\s*/gc; - $ld1pos = pos($$textref); - $str1pos = $ld1pos+1; - - unless ($$textref =~ m/\G(\S)/gc) # SHOULD USE LOOKAHEAD - { - _failmsg "No block delimiter found after quotelike $op", - pos $$textref; - pos $$textref = $startpos; - return; - } - pos($$textref) = $ld1pos; # HAVE TO DO THIS BECAUSE LOOKAHEAD BROKEN - my ($ldel1, $rdel1) = ("\Q$1","\Q$1"); - if ($ldel1 =~ /[[(<{]/) - { - $rdel1 =~ tr/[({/; - defined(_match_bracketed($textref,"",$ldel1,"","",$rdel1)) - || do { pos $$textref = $startpos; return }; + $ld2pos = pos($$textref); + return ( + $startpos, $oppos-$startpos, # PREFIX + $oppos, length($op), # OPERATOR + $ld1pos, $extrapos-$ld1pos, # LEFT DEL + $str1pos, $rd1pos-$str1pos, # STR/PAT + $rd1pos, $ld2pos-$rd1pos, # RIGHT DEL + $ld2pos, 0, # NO 2ND LDEL + $ld2pos, 0, # NO 2ND STR + $ld2pos, 0, # NO 2ND RDEL + $ld2pos, 0, # NO MODIFIERS + $ld2pos, $textlen-$ld2pos, # REMAINDER + $extrapos, $str1pos-$extrapos, # FILLETED BIT + ); + } + + $$textref =~ m/\G\s*/gc; + $ld1pos = pos($$textref); + $str1pos = $ld1pos+1; + + unless ($$textref =~ m/\G(\S)/gc) # SHOULD USE LOOKAHEAD + { + _failmsg "No block delimiter found after quotelike $op", + pos $$textref; + pos $$textref = $startpos; + return; + } + pos($$textref) = $ld1pos; # HAVE TO DO THIS BECAUSE LOOKAHEAD BROKEN + my ($ldel1, $rdel1) = ("\Q$1","\Q$1"); + if ($ldel1 =~ /[[(<{]/) + { + $rdel1 =~ tr/[({/; + defined(_match_bracketed($textref,"",$ldel1,"","",$rdel1)) + || do { pos $$textref = $startpos; return }; $ld2pos = pos($$textref); $rd1pos = $ld2pos-1; - } - else - { - $$textref =~ /\G$ldel1[^\\$ldel1]*(\\.[^\\$ldel1]*)*$ldel1/gcs - || do { pos $$textref = $startpos; return }; + } + else + { + $$textref =~ /\G$ldel1[^\\$ldel1]*(\\.[^\\$ldel1]*)*$ldel1/gcs + || do { pos $$textref = $startpos; return }; $ld2pos = $rd1pos = pos($$textref)-1; - } + } - my $second_arg = $op =~ /s|tr|y/ ? 1 : 0; - if ($second_arg) - { - my ($ldel2, $rdel2); - if ($ldel1 =~ /[[(<{]/) - { - unless ($$textref =~ /\G\s*(\S)/gc) # SHOULD USE LOOKAHEAD - { - _failmsg "Missing second block for quotelike $op", - pos $$textref; - pos $$textref = $startpos; - return; - } - $ldel2 = $rdel2 = "\Q$1"; - $rdel2 =~ tr/[({/; - } - else - { - $ldel2 = $rdel2 = $ldel1; - } - $str2pos = $ld2pos+1; - - if ($ldel2 =~ /[[(<{]/) - { - pos($$textref)--; # OVERCOME BROKEN LOOKAHEAD - defined(_match_bracketed($textref,"",$ldel2,"","",$rdel2)) - || do { pos $$textref = $startpos; return }; - } - else - { - $$textref =~ /[^\\$ldel2]*(\\.[^\\$ldel2]*)*$ldel2/gcs - || do { pos $$textref = $startpos; return }; - } - $rd2pos = pos($$textref)-1; - } - else - { - $ld2pos = $str2pos = $rd2pos = $rd1pos; - } - - $modpos = pos $$textref; - - $$textref =~ m/\G($mods{$op})/gc; - my $endpos = pos $$textref; - - return ( - $startpos, $oppos-$startpos, # PREFIX - $oppos, length($op), # OPERATOR - $ld1pos, 1, # LEFT DEL - $str1pos, $rd1pos-$str1pos, # STR/PAT - $rd1pos, 1, # RIGHT DEL - $ld2pos, $second_arg, # 2ND LDEL (MAYBE) - $str2pos, $rd2pos-$str2pos, # 2ND STR (MAYBE) - $rd2pos, $second_arg, # 2ND RDEL (MAYBE) - $modpos, $endpos-$modpos, # MODIFIERS - $endpos, $textlen-$endpos, # REMAINDER - ); + my $second_arg = $op =~ /s|tr|y/ ? 1 : 0; + if ($second_arg) + { + my ($ldel2, $rdel2); + if ($ldel1 =~ /[[(<{]/) + { + unless ($$textref =~ /\G\s*(\S)/gc) # SHOULD USE LOOKAHEAD + { + _failmsg "Missing second block for quotelike $op", + pos $$textref; + pos $$textref = $startpos; + return; + } + $ldel2 = $rdel2 = "\Q$1"; + $rdel2 =~ tr/[({/; + } + else + { + $ldel2 = $rdel2 = $ldel1; + } + $str2pos = $ld2pos+1; + + if ($ldel2 =~ /[[(<{]/) + { + pos($$textref)--; # OVERCOME BROKEN LOOKAHEAD + defined(_match_bracketed($textref,"",$ldel2,"","",$rdel2)) + || do { pos $$textref = $startpos; return }; + } + else + { + $$textref =~ /[^\\$ldel2]*(\\.[^\\$ldel2]*)*$ldel2/gcs + || do { pos $$textref = $startpos; return }; + } + $rd2pos = pos($$textref)-1; + } + else + { + $ld2pos = $str2pos = $rd2pos = $rd1pos; + } + + $modpos = pos $$textref; + + $$textref =~ m/\G($mods{$op})/gc; + my $endpos = pos $$textref; + + return ( + $startpos, $oppos-$startpos, # PREFIX + $oppos, length($op), # OPERATOR + $ld1pos, 1, # LEFT DEL + $str1pos, $rd1pos-$str1pos, # STR/PAT + $rd1pos, 1, # RIGHT DEL + $ld2pos, $second_arg, # 2ND LDEL (MAYBE) + $str2pos, $rd2pos-$str2pos, # 2ND STR (MAYBE) + $rd2pos, $second_arg, # 2ND RDEL (MAYBE) + $modpos, $endpos-$modpos, # MODIFIERS + $endpos, $textlen-$endpos, # REMAINDER + ); } my $def_func = [ - sub { extract_variable($_[0], '') }, - sub { extract_quotelike($_[0],'') }, - sub { extract_codeblock($_[0],'{}','') }, + sub { extract_variable($_[0], '') }, + sub { extract_quotelike($_[0],'') }, + sub { extract_codeblock($_[0],'{}','') }, ]; -sub extract_multiple (;$$$$) # ($text, $functions_ref, $max_fields, $ignoreunknown) +sub extract_multiple (;$$$$) # ($text, $functions_ref, $max_fields, $ignoreunknown) { - my $textref = defined($_[0]) ? \$_[0] : \$_; - my $posbug = pos; - my ($lastpos, $firstpos); - my @fields = (); - - #for ($$textref) - { - my @func = defined $_[1] ? @{$_[1]} : @{$def_func}; - my $max = defined $_[2] && $_[2]>0 ? $_[2] : 1_000_000_000; - my $igunk = $_[3]; - - pos $$textref ||= 0; - - unless (wantarray) - { - use Carp; - carp "extract_multiple reset maximal count to 1 in scalar context" - if $^W && defined($_[2]) && $max > 1; - $max = 1 - } - - my $unkpos; - my $func; - my $class; - - my @class; - foreach $func ( @func ) - { - if (ref($func) eq 'HASH') - { - push @class, (keys %$func)[0]; - $func = (values %$func)[0]; - } - else - { - push @class, undef; - } - } - - FIELD: while (pos($$textref) < length($$textref)) - { - my ($field, $rem); - my @bits; - foreach my $i ( 0..$#func ) - { - my $pref; - $func = $func[$i]; - $class = $class[$i]; - $lastpos = pos $$textref; - if (ref($func) eq 'CODE') - { ($field,$rem,$pref) = @bits = $func->($$textref) } - elsif (ref($func) eq 'Text::Balanced::Extractor') - { @bits = $field = $func->extract($$textref) } - elsif( $$textref =~ m/\G$func/gc ) - { @bits = $field = defined($1) - ? $1 - : substr($$textref, $-[0], $+[0] - $-[0]) + my $textref = defined($_[0]) ? \$_[0] : \$_; + my $posbug = pos; + my ($lastpos, $firstpos); + my @fields = (); + + #for ($$textref) + { + my @func = defined $_[1] ? @{$_[1]} : @{$def_func}; + my $max = defined $_[2] && $_[2]>0 ? $_[2] : 1_000_000_000; + my $igunk = $_[3]; + + pos $$textref ||= 0; + + unless (wantarray) + { + use Carp; + carp "extract_multiple reset maximal count to 1 in scalar context" + if $^W && defined($_[2]) && $max > 1; + $max = 1 + } + + my $unkpos; + my $class; + + my @class; + foreach my $func ( @func ) + { + if (ref($func) eq 'HASH') + { + push @class, (keys %$func)[0]; + $func = (values %$func)[0]; + } + else + { + push @class, undef; + } + } + + FIELD: while (pos($$textref) < length($$textref)) + { + my ($field, $rem); + my @bits; + foreach my $i ( 0..$#func ) + { + my $pref; + my $func = $func[$i]; + $class = $class[$i]; + $lastpos = pos $$textref; + if (ref($func) eq 'CODE') + { ($field,$rem,$pref) = @bits = $func->($$textref) } + elsif (ref($func) eq 'Text::Balanced::Extractor') + { @bits = $field = $func->extract($$textref) } + elsif( $$textref =~ m/\G$func/gc ) + { @bits = $field = defined($1) + ? $1 + : substr($$textref, $-[0], $+[0] - $-[0]) + } + $pref ||= ""; + if (defined($field) && length($field)) + { + if (!$igunk) { + $unkpos = $lastpos + if length($pref) && !defined($unkpos); + if (defined $unkpos) + { + push @fields, substr($$textref, $unkpos, $lastpos-$unkpos).$pref; + $firstpos = $unkpos unless defined $firstpos; + undef $unkpos; + last FIELD if @fields == $max; + } } - $pref ||= ""; - if (defined($field) && length($field)) - { - if (!$igunk) { - $unkpos = $lastpos - if length($pref) && !defined($unkpos); - if (defined $unkpos) - { - push @fields, substr($$textref, $unkpos, $lastpos-$unkpos).$pref; - $firstpos = $unkpos unless defined $firstpos; - undef $unkpos; - last FIELD if @fields == $max; - } - } - push @fields, $class - ? bless (\$field, $class) - : $field; - $firstpos = $lastpos unless defined $firstpos; - $lastpos = pos $$textref; - last FIELD if @fields == $max; - next FIELD; - } - } - if ($$textref =~ /\G(.)/gcs) - { - $unkpos = pos($$textref)-1 - unless $igunk || defined $unkpos; - } - } - - if (defined $unkpos) - { - push @fields, substr($$textref, $unkpos); - $firstpos = $unkpos unless defined $firstpos; - $lastpos = length $$textref; - } - last; - } - - pos $$textref = $lastpos; - return @fields if wantarray; - - $firstpos ||= 0; - eval { substr($$textref,$firstpos,$lastpos-$firstpos)=""; - pos $$textref = $firstpos }; - return $fields[0]; + push @fields, $class + ? bless (\$field, $class) + : $field; + $firstpos = $lastpos unless defined $firstpos; + $lastpos = pos $$textref; + last FIELD if @fields == $max; + next FIELD; + } + } + if ($$textref =~ /\G(.)/gcs) + { + $unkpos = pos($$textref)-1 + unless $igunk || defined $unkpos; + } + } + + if (defined $unkpos) + { + push @fields, substr($$textref, $unkpos); + $firstpos = $unkpos unless defined $firstpos; + $lastpos = length $$textref; + } + last; + } + + pos $$textref = $lastpos; + return @fields if wantarray; + + $firstpos ||= 0; + eval { substr($$textref,$firstpos,$lastpos-$firstpos)=""; + pos $$textref = $firstpos }; + return $fields[0]; } sub gen_extract_tagged # ($opentag, $closetag, $pre, \%options) { - my $ldel = $_[0]; - my $rdel = $_[1]; - my $pre = defined $_[2] ? $_[2] : '\s*'; - my %options = defined $_[3] ? %{$_[3]} : (); - my $omode = defined $options{fail} ? $options{fail} : ''; - my $bad = ref($options{reject}) eq 'ARRAY' ? join('|', @{$options{reject}}) - : defined($options{reject}) ? $options{reject} - : '' - ; - my $ignore = ref($options{ignore}) eq 'ARRAY' ? join('|', @{$options{ignore}}) - : defined($options{ignore}) ? $options{ignore} - : '' - ; - - if (!defined $ldel) { $ldel = '<\w+(?:' . gen_delimited_pat(q{'"}) . '|[^>])*>'; } - - my $posbug = pos; - for ($ldel, $pre, $bad, $ignore) { $_ = qr/$_/ if $_ } - pos = $posbug; - - my $closure = sub - { - my $textref = defined $_[0] ? \$_[0] : \$_; - my @match = Text::Balanced::_match_tagged($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore); - - return _fail(wantarray, $textref) unless @match; - return _succeed wantarray, $textref, - $match[2], $match[3]+$match[5]+$match[7], # MATCH - @match[8..9,0..1,2..7]; # REM, PRE, BITS - }; + my $ldel = $_[0]; + my $rdel = $_[1]; + my $pre = defined $_[2] ? $_[2] : '\s*'; + my %options = defined $_[3] ? %{$_[3]} : (); + my $omode = defined $options{fail} ? $options{fail} : ''; + my $bad = ref($options{reject}) eq 'ARRAY' ? join('|', @{$options{reject}}) + : defined($options{reject}) ? $options{reject} + : '' + ; + my $ignore = ref($options{ignore}) eq 'ARRAY' ? join('|', @{$options{ignore}}) + : defined($options{ignore}) ? $options{ignore} + : '' + ; + + if (!defined $ldel) { $ldel = '<\w+(?:' . gen_delimited_pat(q{'"}) . '|[^>])*>'; } + + my $posbug = pos; + for ($ldel, $pre, $bad, $ignore) { $_ = qr/$_/ if $_ } + pos = $posbug; + + my $closure = sub + { + my $textref = defined $_[0] ? \$_[0] : \$_; + my @match = Text::Balanced::_match_tagged($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore); + + return _fail(wantarray, $textref) unless @match; + return _succeed wantarray, $textref, + $match[2], $match[3]+$match[5]+$match[7], # MATCH + @match[8..9,0..1,2..7]; # REM, PRE, BITS + }; - bless $closure, 'Text::Balanced::Extractor'; + bless $closure, 'Text::Balanced::Extractor'; } package Text::Balanced::Extractor; -sub extract($$) # ($self, $text) +sub extract($$) # ($self, $text) { - &{$_[0]}($_[1]); + &{$_[0]}($_[1]); } package Text::Balanced::ErrorMsg; @@ -1032,83 +1041,76 @@ =head1 SYNOPSIS - use Text::Balanced qw ( - extract_delimited - extract_bracketed - extract_quotelike - extract_codeblock - extract_variable - extract_tagged - extract_multiple - gen_delimited_pat - gen_extract_tagged - ); - - # Extract the initial substring of $text that is delimited by - # two (unescaped) instances of the first character in $delim. - - ($extracted, $remainder) = extract_delimited($text,$delim); - + use Text::Balanced qw ( + extract_delimited + extract_bracketed + extract_quotelike + extract_codeblock + extract_variable + extract_tagged + extract_multiple + gen_delimited_pat + gen_extract_tagged + ); - # Extract the initial substring of $text that is bracketed - # with a delimiter(s) specified by $delim (where the string - # in $delim contains one or more of '(){}[]<>'). + # Extract the initial substring of $text that is delimited by + # two (unescaped) instances of the first character in $delim. - ($extracted, $remainder) = extract_bracketed($text,$delim); + ($extracted, $remainder) = extract_delimited($text,$delim); + # Extract the initial substring of $text that is bracketed + # with a delimiter(s) specified by $delim (where the string + # in $delim contains one or more of '(){}[]<>'). - # Extract the initial substring of $text that is bounded by - # an XML tag. + ($extracted, $remainder) = extract_bracketed($text,$delim); - ($extracted, $remainder) = extract_tagged($text); + # Extract the initial substring of $text that is bounded by + # an XML tag. + ($extracted, $remainder) = extract_tagged($text); - # Extract the initial substring of $text that is bounded by - # a C...C pair. Don't allow nested C tags + # Extract the initial substring of $text that is bounded by + # a C...C pair. Don't allow nested C tags - ($extracted, $remainder) = - extract_tagged($text,"BEGIN","END",undef,{bad=>["BEGIN"]}); + ($extracted, $remainder) = + extract_tagged($text,"BEGIN","END",undef,{bad=>["BEGIN"]}); + # Extract the initial substring of $text that represents a + # Perl "quote or quote-like operation" - # Extract the initial substring of $text that represents a - # Perl "quote or quote-like operation" + ($extracted, $remainder) = extract_quotelike($text); - ($extracted, $remainder) = extract_quotelike($text); + # Extract the initial substring of $text that represents a block + # of Perl code, bracketed by any of character(s) specified by $delim + # (where the string $delim contains one or more of '(){}[]<>'). + ($extracted, $remainder) = extract_codeblock($text,$delim); - # Extract the initial substring of $text that represents a block - # of Perl code, bracketed by any of character(s) specified by $delim - # (where the string $delim contains one or more of '(){}[]<>'). + # Extract the initial substrings of $text that would be extracted by + # one or more sequential applications of the specified functions + # or regular expressions - ($extracted, $remainder) = extract_codeblock($text,$delim); + @extracted = extract_multiple($text, + [ \&extract_bracketed, + \&extract_quotelike, + \&some_other_extractor_sub, + qr/[xyz]*/, + 'literal', + ]); + # Create a string representing an optimized pattern (a la Friedl) + # that matches a substring delimited by any of the specified characters + # (in this case: any type of quote or a slash) - # Extract the initial substrings of $text that would be extracted by - # one or more sequential applications of the specified functions - # or regular expressions + $patstring = gen_delimited_pat(q{'"`/}); - @extracted = extract_multiple($text, - [ \&extract_bracketed, - \&extract_quotelike, - \&some_other_extractor_sub, - qr/[xyz]*/, - 'literal', - ]); + # Generate a reference to an anonymous sub that is just like extract_tagged + # but pre-compiled and optimized for a specific pair of tags, and + # consequently much faster (i.e. 3 times faster). It uses qr// for better + # performance on repeated calls. -# Create a string representing an optimized pattern (a la Friedl) -# that matches a substring delimited by any of the specified characters -# (in this case: any type of quote or a slash) - - $patstring = gen_delimited_pat(q{'"`/}); - -# Generate a reference to an anonymous sub that is just like extract_tagged -# but pre-compiled and optimized for a specific pair of tags, and consequently -# much faster (i.e. 3 times faster). It uses qr// for better performance on -# repeated calls, so it only works under Perl 5.005 or later. - - $extract_head = gen_extract_tagged('',''); - - ($extracted, $remainder) = $extract_head->($text); + $extract_head = gen_extract_tagged('',''); + ($extracted, $remainder) = $extract_head->($text); =head1 DESCRIPTION @@ -1128,7 +1130,7 @@ immediately at the current matching position in the string (like a C<\G>-anchored regex would). -=head2 General behaviour in list contexts +=head2 General Behaviour in List Contexts In a list context, all the subroutines return a list, the first three elements of which are always: @@ -1150,31 +1152,31 @@ The skipped prefix (i.e. the characters before the extracted string). On failure, C is returned. -=back +=back Note that in a list context, the contents of the original input text (the first -argument) are not modified in any way. +argument) are not modified in any way. However, if the input text was passed in a variable, that variable's C value is updated to point at the first character after the extracted text. That means that in a list context the various subroutines can be used much like regular expressions. For example: - while ( $next = (extract_quotelike($text))[0] ) - { - # process next quote-like (in $next) - } + while ( $next = (extract_quotelike($text))[0] ) + { + # process next quote-like (in $next) + } -=head2 General behaviour in scalar and void contexts +=head2 General Behaviour in Scalar and Void Contexts In a scalar context, the extracted string is returned, having first been removed from the input text. Thus, the following code also processes each quote-like operation, but actually removes them from $text: - while ( $next = extract_quotelike($text) ) - { - # process next quote-like (in $next) - } + while ( $next = extract_quotelike($text) ) + { + # process next quote-like (in $next) + } Note that if the input text is a read-only string (i.e. a literal), no attempt is made to remove the extracted text. @@ -1183,7 +1185,7 @@ exactly the same as in a scalar context, except (of course) that the extracted substring is not returned. -=head2 A note about prefixes +=head2 A Note About Prefixes Prefix patterns are matched without any trailing modifiers (C etc.) This can bite you if you're expecting a prefix specification like @@ -1194,19 +1196,23 @@ To overcome this limitation, you need to turn on /s matching within the prefix pattern, using the C<(?s)> directive: '(?s).*?(?=

)' -=head2 C +=head2 Functions + +=over 4 + +=item C The C function formalizes the common idiom of extracting a single-character-delimited substring from the start of a string. For example, to extract a single-quote delimited string, the following code is typically used: - ($remainder = $text) =~ s/\A('(\\.|[^'])*')//s; - $extracted = $1; + ($remainder = $text) =~ s/\A('(\\.|[^'])*')//s; + $extracted = $1; but with C it can be simplified to: - ($extracted,$remainder) = extract_delimited($text, "'"); + ($extracted,$remainder) = extract_delimited($text, "'"); C takes up to four scalars (the input text, the delimiters, a prefix pattern to be skipped, and any escape characters) @@ -1240,42 +1246,42 @@ Examples: - # Remove a single-quoted substring from the very beginning of $text: + # Remove a single-quoted substring from the very beginning of $text: - $substring = extract_delimited($text, "'", ''); + $substring = extract_delimited($text, "'", ''); - # Remove a single-quoted Pascalish substring (i.e. one in which - # doubling the quote character escapes it) from the very - # beginning of $text: + # Remove a single-quoted Pascalish substring (i.e. one in which + # doubling the quote character escapes it) from the very + # beginning of $text: - $substring = extract_delimited($text, "'", '', "'"); + $substring = extract_delimited($text, "'", '', "'"); - # Extract a single- or double- quoted substring from the - # beginning of $text, optionally after some whitespace - # (note the list context to protect $text from modification): + # Extract a single- or double- quoted substring from the + # beginning of $text, optionally after some whitespace + # (note the list context to protect $text from modification): - ($substring) = extract_delimited $text, q{"'}; + ($substring) = extract_delimited $text, q{"'}; - # Delete the substring delimited by the first '/' in $text: + # Delete the substring delimited by the first '/' in $text: - $text = join '', (extract_delimited($text,'/','[^/]*')[2,1]; + $text = join '', (extract_delimited($text,'/','[^/]*')[2,1]; Note that this last example is I the same as deleting the first quote-like pattern. For instance, if C<$text> contained the string: - "if ('./cmd' =~ m/$UNIXCMD/s) { $cmd = $1; }" - + "if ('./cmd' =~ m/$UNIXCMD/s) { $cmd = $1; }" + then after the deletion it would contain: - "if ('.$UNIXCMD/s) { $cmd = $1; }" + "if ('.$UNIXCMD/s) { $cmd = $1; }" not: - "if ('./cmd' =~ ms) { $cmd = $1; }" - + "if ('./cmd' =~ ms) { $cmd = $1; }" + See L<"extract_quotelike"> for a (partial) solution to this problem. -=head2 C +=item C Like C<"extract_delimited">, the C function takes up to three optional scalar arguments: a string to extract from, a delimiter @@ -1307,15 +1313,15 @@ For example, given the string: - $text = "{ an '[irregularly :-(] {} parenthesized >:-)' string }"; + $text = "{ an '[irregularly :-(] {} parenthesized >:-)' string }"; then a call to C in a list context: - @result = extract_bracketed( $text, '{}' ); + @result = extract_bracketed( $text, '{}' ); would return: - ( "{ an '[irregularly :-(] {} parenthesized >:-)' string }" , "" , "" ) + ( "{ an '[irregularly :-(] {} parenthesized >:-)' string }" , "" , "" ) since both sets of C<'{..}'> brackets are properly nested and evenly balanced. (In a scalar context just the first element of the array would be returned. In @@ -1323,18 +1329,18 @@ Likewise the call in: - @result = extract_bracketed( $text, '{[' ); + @result = extract_bracketed( $text, '{[' ); would return the same result, since all sets of both types of specified delimiter brackets are correctly nested and balanced. However, the call in: - @result = extract_bracketed( $text, '{([<' ); + @result = extract_bracketed( $text, '{([<' ); would fail, returning: - ( undef , "{ an '[irregularly :-(] {} parenthesized >:-)' string }" ); + ( undef , "{ an '[irregularly :-(] {} parenthesized >:-)' string }" ); because the embedded pairs of C<'(..)'>s and C<'[..]'>s are "cross-nested" and the embedded C<'E'> is unbalanced. (In a scalar context, this call would @@ -1348,37 +1354,37 @@ delimiter specification, then that type of quote will be correctly handled. for example, if C<$text> is: - $text = 'link'; + $text = 'link'; then - @result = extract_bracketed( $text, '<">' ); + @result = extract_bracketed( $text, '<">' ); returns: - ( '', 'link', "" ) + ( '', 'link', "" ) as expected. Without the specification of C<"> as an embedded quoter: - @result = extract_bracketed( $text, '<>' ); + @result = extract_bracketed( $text, '<>' ); the result would be: - ( 'link', "" ) + ( 'link', "" ) In addition to the quote delimiters C<'>, C<">, and C<`>, full Perl quote-like quoting (i.e. q{string}, qq{string}, etc) can be specified by including the letter 'q' as a delimiter. Hence: - @result = extract_bracketed( $text, '' ); + @result = extract_bracketed( $text, '' ); would correctly match something like this: - $text = ''; + $text = ''; See also: C<"extract_quotelike"> and C<"extract_codeblock">. -=head2 C +=item C C extracts any valid Perl variable or variable-involved expression, including scalars, arrays, hashes, array @@ -1429,11 +1435,10 @@ In a void context, the input text just has the matched substring (and any specified prefix) removed. - -=head2 C +=item C C extracts and segments text between (balanced) -specified tags. +specified tags. The subroutine takes up to five optional arguments: @@ -1451,12 +1456,12 @@ =item 3. -A string specifying a pattern to be matched at the closing tag. +A string specifying a pattern to be matched at the closing tag. If the pattern string is omitted (or C) then the closing tag is constructed by inserting a C after any leading bracket characters in the actual opening tag that was matched (I the pattern that matched the tag). For example, if the opening tag pattern -is specified as C<'{{\w+}}'> and actually matched the opening tag +is specified as C<'{{\w+}}'> and actually matched the opening tag C<"{{DATA}}">, then the constructed closing tag would be C<"{{/DATA}}">. =item 4. @@ -1487,7 +1492,7 @@ =item C $listref> The list reference contains one or more strings specifying patterns -that are I be be treated as nested tags within the tagged text +that are I to be treated as nested tags within the tagged text (even if they would match the start tag pattern). For example, to extract an arbitrary XML tag, but ignore "empty" elements: @@ -1508,7 +1513,7 @@ If the string is "PARA", C returns only the first paragraph after the tag (up to the first line that is either empty or contains only whitespace characters). -If the string is "", the the default behaviour (i.e. failure) is reinstated. +If the string is "", the default behaviour (i.e. failure) is reinstated. For example, suppose the start tag "/para" introduces a paragraph, which then continues until the next "/endpara" tag or until another "/para" tag is @@ -1575,9 +1580,7 @@ In a void context, the input text just has the matched substring (and any specified prefix) removed. -=head2 C - -(Note: This subroutine is only available under Perl5.005) +=item C C generates a new anonymous subroutine which extracts text between (balanced) specified tags. In other words, @@ -1589,7 +1592,7 @@ =over 4 -=item * +=item * do not have to reparse tag specification or parsing options every time they are called (whereas C has to effectively rebuild @@ -1598,7 +1601,7 @@ =item * make use of the new qr// construct to pre-compile the regexes they use -(whereas C uses standard string variable interpolation +(whereas C uses standard string variable interpolation to create tag-matching patterns). =back @@ -1618,16 +1621,14 @@ return $extractor->($text); } -(although C is not currently implemented that way, in order -to preserve pre-5.005 compatibility). +(although C is not currently implemented that way). -Using C to create extraction functions for specific tags +Using C to create extraction functions for specific tags is a good idea if those functions are going to be called more than once, since their performance is typically twice as good as the more general-purpose C. - -=head2 C +=item C C attempts to recognize, extract, and segment any one of the various Perl quotes and quotelike operators (see @@ -1636,7 +1637,7 @@ all caught. For example, in: extract_quotelike 'q # an octothorpe: \# (not the end of the q!) #' - + extract_quotelike ' "You said, \"Use sed\"." ' extract_quotelike ' s{([A-Z]{1,8}\.[A-Z]{3})} /\L$1\E/; ' @@ -1664,7 +1665,7 @@ This behaviour is identical to that of the actual compiler. C takes two arguments: the text to be processed and -a prefix to be matched at the very beginning of the text. If no prefix +a prefix to be matched at the very beginning of the text. If no prefix is specified, optional whitespace is the default. If no text is given, C<$_> is used. @@ -1710,7 +1711,7 @@ =item [8] -the text of the second block of the operation +the text of the second block of the operation (that is, the replacement of a substitution or the translation list of a translation), @@ -1757,7 +1758,7 @@ print "$op is not a pattern matching operation\n"; } -=head2 C and "here documents" +=item C C can successfully extract "here documents" from an input string, but with an important caveat in list contexts. @@ -1842,7 +1843,7 @@ $quotelike = extract_quotelike("$var"); -=head2 C +=item C C attempts to recognize and extract a balanced bracket delimited substring that may contain unbalanced brackets @@ -1861,7 +1862,7 @@ Omitting the fourth argument (outermost delimiter brackets) indicates that the value of the second argument is to be used for the outermost delimiters. -Once the prefix an dthe outermost opening delimiter bracket have been +Once the prefix and the outermost opening delimiter bracket have been recognized, code blocks are extracted by stepping through the input text and trying the following alternatives in sequence: @@ -1933,9 +1934,9 @@ the '>' character is only treated as a delimited at the outermost level of the code block, so the directive is parsed correctly. -=head2 C +=item C -The C subroutine takes a string to be processed and a +The C subroutine takes a string to be processed and a list of extractors (subroutines or regular expressions) to apply to that string. In an array context C returns an array of substrings @@ -1947,7 +1948,7 @@ C starts at the current C of the string, and sets that C appropriately after it matches. -Hence, the aim of of a call to C in a list context +Hence, the aim of a call to C in a list context is to split the processed string into as many non-overlapping fields as possible, by repeatedly applying each of the specified extractors to the remainder of the string. Thus C is @@ -1982,11 +1983,11 @@ argument is omitted (or C), split continues as long as possible. If the third argument is I, then extraction continues until I fields -have been successfully extracted, or until the string has been completely +have been successfully extracted, or until the string has been completely processed. -Note that in scalar and void contexts the value of this argument is -automatically reset to 1 (under C<-w>, a warning is issued if the argument +Note that in scalar and void contexts the value of this argument is +automatically reset to 1 (under C<-w>, a warning is issued if the argument has to be reset). =item 4. @@ -2026,7 +2027,7 @@ If an extractor returns a defined value, that value is immediately treated as the next extracted field and pushed onto the list of fields. If the extractor was specified in a hash reference, the field is also -blessed into the appropriate class, +blessed into the appropriate class, If the extractor fails to match (in the case of a regex extractor), or returns an empty list or an undefined value (in the case of a subroutine extractor), it is assumed to have failed to extract. @@ -2080,7 +2081,7 @@ does if your split pattern has capturing parentheses), you would just make the last parameter undefined (or remove it). -=head2 C +=item C The C subroutine takes a single (string) argument and > builds a Friedl-style optimized regex that matches a string delimited @@ -2119,11 +2120,12 @@ is used for the remaining delimiters. If no escape char is specified for a given specified delimiter, '\' is used. -=head2 C +=item C Note that C was previously called C. That name may still be used, but is now deprecated. - + +=back =head1 DIAGNOSTICS @@ -2170,7 +2172,7 @@ =item C -C, C or C ran +C, C or C ran out of characters in the text before closing one or more levels of nested brackets. @@ -2257,25 +2259,125 @@ =back -=head1 AUTHOR +=head1 EXPORTS -Damian Conway (damian@conway.org) +The following symbols are, or can be, exported by this module: + +=over 4 -=head1 BUGS AND IRRITATIONS +=item Default Exports -There are undoubtedly serious bugs lurking somewhere in this code, if -only because parts of it give the impression of understanding a great deal -more about Perl than they really do. +I. -Bug reports and other feedback are most welcome. +=item Optional Exports + +C, +C, +C, +C, +C, +C, +C, +C, +C, +C. + +=item Export Tags + +=over 4 + +=item C<:ALL> + +C, +C, +C, +C, +C, +C, +C, +C, +C, +C. + +=back + +=back + +=head1 KNOWN BUGS + +See L. + +=head1 FEEDBACK + +Patches, bug reports, suggestions or any other feedback is welcome. + +Patches can be sent as GitHub pull requests at +L. + +Bug reports and suggestions can be made on the CPAN Request Tracker at +L. + +Currently active requests on the CPAN Request Tracker can be viewed at +L. + +Please test this distribution. See CPAN Testers Reports at +L for details of how to get involved. + +Previous test results on CPAN Testers Reports can be viewed at +L. + +Please rate this distribution on CPAN Ratings at +L. + +=head1 AVAILABILITY + +The latest version of this module is available from CPAN (see +L for details) at + +L or + +L or + +L. + +The latest source code is available from GitHub at +L. + +=head1 INSTALLATION + +See the F file. + +=head1 AUTHOR + +Damian Conway ELE. + +Steve Hay ELE is now maintaining +Text::Balanced as of version 2.03. =head1 COPYRIGHT -Copyright 1997 - 2001 Damian Conway. All Rights Reserved. +Copyright (C) 1997-2001 Damian Conway. All rights reserved. + +Copyright (C) 2009 Adam Kennedy. + +Copyright (C) 2015, 2020 Steve Hay. All rights reserved. + +=head1 LICENCE + +This module is free software; you can redistribute it and/or modify it under the +same terms as Perl itself, i.e. under the terms of either the GNU General Public +License or the Artistic License, as specified in the F file. + +=head1 VERSION + +Version 2.04 + +=head1 DATE + +11 Dec 2020 -Some (minor) parts copyright 2009 Adam Kennedy. +=head1 HISTORY -This module is free software. It may be used, redistributed -and/or modified under the same terms as Perl itself. +See the F file. =cut diff -Nru perl-5.32.1/cpan/Text-Balanced/t/01_compile.t perl-5.34.0/cpan/Text-Balanced/t/01_compile.t --- perl-5.32.1/cpan/Text-Balanced/t/01_compile.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Text-Balanced/t/01_compile.t 2021-01-20 23:04:44.000000000 +0000 @@ -1,10 +1,9 @@ #!/usr/bin/perl +use 5.008001; + use strict; -BEGIN { - $| = 1; - $^W = 1; -} +use warnings; use Test::More tests => 1; diff -Nru perl-5.32.1/cpan/Text-Balanced/t/02_extbrk.t perl-5.34.0/cpan/Text-Balanced/t/02_extbrk.t --- perl-5.32.1/cpan/Text-Balanced/t/02_extbrk.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Text-Balanced/t/02_extbrk.t 2021-01-20 23:04:44.000000000 +0000 @@ -1,52 +1,60 @@ # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.pl' +use 5.008001; + +use strict; +use warnings; + ######################### We start with some black magic to print on failure. # Change 1..1 below to 1..last_test_to_print . # (It may become useful if the test is moved to ./t subdirectory.) +my $loaded = 0; BEGIN { $| = 1; print "1..19\n"; } END {print "not ok 1\n" unless $loaded;} use Text::Balanced qw ( extract_bracketed ); $loaded = 1; print "ok 1\n"; -$count=2; +my $count=2; use vars qw( $DEBUG ); sub debug { print "\t>>>",@_ if $DEBUG } ######################### End of black magic. +## no critic (BuiltinFunctions::ProhibitStringyEval) -$cmd = "print"; -$neg = 0; +my $cmd = "print"; +my $neg = 0; +my $str; while (defined($str = )) { - chomp $str; - if ($str =~ s/\A# USING://) { $neg = 0; $cmd = $str; next; } - elsif ($str =~ /\A# TH[EI]SE? SHOULD FAIL/) { $neg = 1; next; } - elsif (!$str || $str =~ /\A#/) { $neg = 0; next } - $str =~ s/\\n/\n/g; - debug "\tUsing: $cmd\n"; - debug "\t on: [$str]\n"; - - $var = eval "() = $cmd"; - debug "\t list got: [$var]\n"; - debug "\t list left: [$str]\n"; - print "not " if (substr($str,pos($str),1) eq ';')==$neg; - print "ok ", $count++; - print " ($@)" if $@ && $DEBUG; - print "\n"; - - pos $str = 0; - $var = eval $cmd; - $var = "" unless defined $var; - debug "\t scalar got: [$var]\n"; - debug "\t scalar left: [$str]\n"; - print "not " if ($str =~ '\A;')==$neg; - print "ok ", $count++; - print " ($@)" if $@ && $DEBUG; - print "\n"; + chomp $str; + if ($str =~ s/\A# USING://) { $neg = 0; $cmd = $str; next; } + elsif ($str =~ /\A# TH[EI]SE? SHOULD FAIL/) { $neg = 1; next; } + elsif (!$str || $str =~ /\A#/) { $neg = 0; next } + $str =~ s/\\n/\n/g; + debug "\tUsing: $cmd\n"; + debug "\t on: [$str]\n"; + + my $var = eval "() = $cmd"; + debug "\t list got: [$var]\n"; + debug "\t list left: [$str]\n"; + print "not " if (substr($str,pos($str),1) eq ';')==$neg; + print "ok ", $count++; + print " ($@)" if $@ && $DEBUG; + print "\n"; + + pos $str = 0; + $var = eval $cmd; + $var = "" unless defined $var; + debug "\t scalar got: [$var]\n"; + debug "\t scalar left: [$str]\n"; + print "not " if ($str =~ '\A;')==$neg; + print "ok ", $count++; + print " ($@)" if $@ && $DEBUG; + print "\n"; } __DATA__ diff -Nru perl-5.32.1/cpan/Text-Balanced/t/03_extcbk.t perl-5.34.0/cpan/Text-Balanced/t/03_extcbk.t --- perl-5.32.1/cpan/Text-Balanced/t/03_extcbk.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Text-Balanced/t/03_extcbk.t 2021-01-20 23:04:44.000000000 +0000 @@ -1,53 +1,61 @@ # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.pl' +use 5.008001; + +use strict; +use warnings; + ######################### We start with some black magic to print on failure. # Change 1..1 below to 1..last_test_to_print . # (It may become useful if the test is moved to ./t subdirectory.) +my $loaded = 0; BEGIN { $| = 1; print "1..41\n"; } END {print "not ok 1\n" unless $loaded;} use Text::Balanced qw ( extract_codeblock ); $loaded = 1; print "ok 1\n"; -$count=2; +my $count=2; use vars qw( $DEBUG ); sub debug { print "\t>>>",@_ if $DEBUG } ######################### End of black magic. +## no critic (BuiltinFunctions::ProhibitStringyEval) -$cmd = "print"; -$neg = 0; +my $cmd = "print"; +my $neg = 0; +my $str; while (defined($str = )) { - chomp $str; - if ($str =~ s/\A# USING://) { $neg = 0; $cmd = $str; next; } - elsif ($str =~ /\A# TH[EI]SE? SHOULD FAIL/) { $neg = 1; next; } - elsif (!$str || $str =~ /\A#/) { $neg = 0; next } - $str =~ s/\\n/\n/g; - debug "\tUsing: $cmd\n"; - debug "\t on: [$str]\n"; - - my @res; - $var = eval "\@res = $cmd"; - debug "\t Failed: $@ at " . $@+0 .")" if $@; - debug "\t list got: [" . join("|", map {defined $_ ? $_ : ''} @res) . "]\n"; - debug "\t list left: [$str]\n"; - print "not " if (substr($str,pos($str)||0,1) eq ';')==$neg; - print "ok ", $count++; - print "\n"; - - pos $str = 0; - $var = eval $cmd; - $var = "" unless defined $var; - debug "\t scalar got: [$var]\n"; - debug "\t scalar left: [$str]\n"; - print "not " if ($str =~ '\A;')==$neg; - print "ok ", $count++; - print " ($@)" if $@ && $DEBUG; - print "\n"; + chomp $str; + if ($str =~ s/\A# USING://) { $neg = 0; $cmd = $str; next; } + elsif ($str =~ /\A# TH[EI]SE? SHOULD FAIL/) { $neg = 1; next; } + elsif (!$str || $str =~ /\A#/) { $neg = 0; next } + $str =~ s/\\n/\n/g; + debug "\tUsing: $cmd\n"; + debug "\t on: [$str]\n"; + + my @res; + my $var = eval "\@res = $cmd"; + debug "\t Failed: $@ at " . $@+0 .")" if $@; + debug "\t list got: [" . join("|", map {defined $_ ? $_ : ''} @res) . "]\n"; + debug "\t list left: [$str]\n"; + print "not " if (substr($str,pos($str)||0,1) eq ';')==$neg; + print "ok ", $count++; + print "\n"; + + pos $str = 0; + $var = eval $cmd; + $var = "" unless defined $var; + debug "\t scalar got: [$var]\n"; + debug "\t scalar left: [$str]\n"; + print "not " if ($str =~ '\A;')==$neg; + print "ok ", $count++; + print " ($@)" if $@ && $DEBUG; + print "\n"; } __DATA__ diff -Nru perl-5.32.1/cpan/Text-Balanced/t/04_extdel.t perl-5.34.0/cpan/Text-Balanced/t/04_extdel.t --- perl-5.32.1/cpan/Text-Balanced/t/04_extdel.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Text-Balanced/t/04_extdel.t 2021-01-20 23:04:44.000000000 +0000 @@ -1,52 +1,60 @@ # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.pl' +use 5.008001; + +use strict; +use warnings; + ######################### We start with some black magic to print on failure. # Change 1..1 below to 1..last_test_to_print . # (It may become useful if the test is moved to ./t subdirectory.) +my $loaded = 0; BEGIN { $| = 1; print "1..45\n"; } END {print "not ok 1\n" unless $loaded;} use Text::Balanced qw ( extract_delimited ); $loaded = 1; print "ok 1\n"; -$count=2; +my $count=2; use vars qw( $DEBUG ); sub debug { print "\t>>>",@_ if $DEBUG } ######################### End of black magic. +## no critic (BuiltinFunctions::ProhibitStringyEval) -$cmd = "print"; -$neg = 0; +my $cmd = "print"; +my $neg = 0; +my $str; while (defined($str = )) { - chomp $str; - if ($str =~ s/\A# USING://) { $neg = 0; $cmd = $str; next; } - elsif ($str =~ /\A# TH[EI]SE? SHOULD FAIL/) { $neg = 1; next; } - elsif (!$str || $str =~ /\A#/) { $neg = 0; next } - $str =~ s/\\n/\n/g; - debug "\tUsing: $cmd\n"; - debug "\t on: [$str]\n"; - - $var = eval "() = $cmd"; - debug "\t list got: [$var]\n"; - debug "\t list left: [$str]\n"; - print "not " if (substr($str,pos($str)||0,1) eq ';')==$neg; - print "ok ", $count++; - print " ($@)" if $@ && $DEBUG; - print "\n"; - - pos $str = 0; - $var = eval $cmd; - $var = "" unless defined $var; - debug "\t scalar got: [$var]\n"; - debug "\t scalar left: [$str]\n"; - print "not " if ($str =~ '\A;')==$neg; - print "ok ", $count++; - print " ($@)" if $@ && $DEBUG; - print "\n"; + chomp $str; + if ($str =~ s/\A# USING://) { $neg = 0; $cmd = $str; next; } + elsif ($str =~ /\A# TH[EI]SE? SHOULD FAIL/) { $neg = 1; next; } + elsif (!$str || $str =~ /\A#/) { $neg = 0; next } + $str =~ s/\\n/\n/g; + debug "\tUsing: $cmd\n"; + debug "\t on: [$str]\n"; + + my $var = eval "() = $cmd"; + debug "\t list got: [$var]\n"; + debug "\t list left: [$str]\n"; + print "not " if (substr($str,pos($str)||0,1) eq ';')==$neg; + print "ok ", $count++; + print " ($@)" if $@ && $DEBUG; + print "\n"; + + pos $str = 0; + $var = eval $cmd; + $var = "" unless defined $var; + debug "\t scalar got: [$var]\n"; + debug "\t scalar left: [$str]\n"; + print "not " if ($str =~ '\A;')==$neg; + print "ok ", $count++; + print " ($@)" if $@ && $DEBUG; + print "\n"; } __DATA__ diff -Nru perl-5.32.1/cpan/Text-Balanced/t/05_extmul.t perl-5.34.0/cpan/Text-Balanced/t/05_extmul.t --- perl-5.32.1/cpan/Text-Balanced/t/05_extmul.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Text-Balanced/t/05_extmul.t 2021-01-20 23:04:44.000000000 +0000 @@ -1,17 +1,23 @@ # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.pl' +use 5.008001; + +use strict; +use warnings; + ######################### We start with some black magic to print on failure. # Change 1..1 below to 1..last_test_to_print . # (It may become useful if the test is moved to ./t subdirectory.) +my $loaded = 0; BEGIN { $| = 1; print "1..86\n"; } END {print "not ok 1\n" unless $loaded;} use Text::Balanced qw ( :ALL ); $loaded = 1; print "ok 1\n"; -$count=2; +my $count=2; use vars qw( $DEBUG ); sub debug { print "\t>>>",@_ if $DEBUG } @@ -19,62 +25,62 @@ sub expect { - local $^W; - my ($l1, $l2) = @_; + local $^W; + my ($l1, $l2) = @_; - if (@$l1 != @$l2) - { - print "\@l1: ", join(", ", @$l1), "\n"; - print "\@l2: ", join(", ", @$l2), "\n"; - print "not "; - } - else - { - for (my $i = 0; $i < @$l1; $i++) - { - if ($l1->[$i] ne $l2->[$i]) - { - print "field $i: '$l1->[$i]' ne '$l2->[$i]'\n"; - print "not "; - last; - } - } - } + if (@$l1 != @$l2) + { + print "\@l1: ", join(", ", @$l1), "\n"; + print "\@l2: ", join(", ", @$l2), "\n"; + print "not "; + } + else + { + for (my $i = 0; $i < @$l1; $i++) + { + if ($l1->[$i] ne $l2->[$i]) + { + print "field $i: '$l1->[$i]' ne '$l2->[$i]'\n"; + print "not "; + last; + } + } + } - print "ok $count\n"; - $count++; + print "ok $count\n"; + $count++; } sub divide { - my ($text, @index) = @_; - my @bits = (); - unshift @index, 0; - push @index, length($text); - for ( my $i= 0; $i < $#index; $i++) - { - push @bits, substr($text, $index[$i], $index[$i+1]-$index[$i]); - } - pop @bits; - return @bits; + my ($text, @index) = @_; + my @bits = (); + unshift @index, 0; + push @index, length($text); + for ( my $i= 0; $i < $#index; $i++) + { + push @bits, substr($text, $index[$i], $index[$i+1]-$index[$i]); + } + pop @bits; + return @bits; } -$stdtext1 = q{$var = do {"val" && $val;};}; +my $stdtext1 = q{$var = do {"val" && $val;};}; # TESTS 2-4 -$text = $stdtext1; -expect [ extract_multiple($text,undef,1) ], - [ divide $stdtext1 => 4 ]; +my $text = $stdtext1; +expect [ extract_multiple($text,undef,1) ], + [ divide $stdtext1 => 4 ]; expect [ pos $text], [ 4 ]; expect [ $text ], [ $stdtext1 ]; # TESTS 5-7 $text = $stdtext1; -expect [ scalar extract_multiple($text,undef,1) ], - [ divide $stdtext1 => 4 ]; +expect [ scalar extract_multiple($text,undef,1) ], + [ divide $stdtext1 => 4 ]; expect [ pos $text], [ 0 ]; expect [ $text ], [ substr($stdtext1,4) ]; @@ -82,16 +88,16 @@ # TESTS 8-10 $text = $stdtext1; -expect [ extract_multiple($text,undef,2) ], - [ divide($stdtext1 => 4, 10) ]; +expect [ extract_multiple($text,undef,2) ], + [ divide($stdtext1 => 4, 10) ]; expect [ pos $text], [ 10 ]; expect [ $text ], [ $stdtext1 ]; # TESTS 11-13 $text = $stdtext1; -expect [ eval{local$^W;scalar extract_multiple($text,undef,2)} ], - [ substr($stdtext1,0,4) ]; +expect [ eval{local$^W;scalar extract_multiple($text,undef,2)} ], + [ substr($stdtext1,0,4) ]; expect [ pos $text], [ 0 ]; expect [ $text ], [ substr($stdtext1,4) ]; @@ -99,16 +105,16 @@ # TESTS 14-16 $text = $stdtext1; -expect [ extract_multiple($text,undef,3) ], - [ divide($stdtext1 => 4, 10, 26) ]; +expect [ extract_multiple($text,undef,3) ], + [ divide($stdtext1 => 4, 10, 26) ]; expect [ pos $text], [ 26 ]; expect [ $text ], [ $stdtext1 ]; # TESTS 17-19 $text = $stdtext1; -expect [ eval{local$^W;scalar extract_multiple($text,undef,3)} ], - [ substr($stdtext1,0,4) ]; +expect [ eval{local$^W;scalar extract_multiple($text,undef,3)} ], + [ substr($stdtext1,0,4) ]; expect [ pos $text], [ 0 ]; expect [ $text ], [ substr($stdtext1,4) ]; @@ -116,16 +122,16 @@ # TESTS 20-22 $text = $stdtext1; -expect [ extract_multiple($text,undef,4) ], - [ divide($stdtext1 => 4, 10, 26, 27) ]; +expect [ extract_multiple($text,undef,4) ], + [ divide($stdtext1 => 4, 10, 26, 27) ]; expect [ pos $text], [ 27 ]; expect [ $text ], [ $stdtext1 ]; # TESTS 23-25 $text = $stdtext1; -expect [ eval{local$^W;scalar extract_multiple($text,undef,4)} ], - [ substr($stdtext1,0,4) ]; +expect [ eval{local$^W;scalar extract_multiple($text,undef,4)} ], + [ substr($stdtext1,0,4) ]; expect [ pos $text], [ 0 ]; expect [ $text ], [ substr($stdtext1,4) ]; @@ -133,8 +139,8 @@ # TESTS 26-28 $text = $stdtext1; -expect [ extract_multiple($text,undef,5) ], - [ divide($stdtext1 => 4, 10, 26, 27) ]; +expect [ extract_multiple($text,undef,5) ], + [ divide($stdtext1 => 4, 10, 26, 27) ]; expect [ pos $text], [ 27 ]; expect [ $text ], [ $stdtext1 ]; @@ -142,8 +148,8 @@ # TESTS 29-31 $text = $stdtext1; -expect [ eval{local$^W;scalar extract_multiple($text,undef,5)} ], - [ substr($stdtext1,0,4) ]; +expect [ eval{local$^W;scalar extract_multiple($text,undef,5)} ], + [ substr($stdtext1,0,4) ]; expect [ pos $text], [ 0 ]; expect [ $text ], [ substr($stdtext1,4) ]; @@ -151,19 +157,19 @@ # TESTS 32-34 -$stdtext2 = q{$var = "val" && (1,2,3);}; +my $stdtext2 = q{$var = "val" && (1,2,3);}; $text = $stdtext2; -expect [ extract_multiple($text) ], - [ divide($stdtext2 => 4, 7, 12, 24) ]; +expect [ extract_multiple($text) ], + [ divide($stdtext2 => 4, 7, 12, 24) ]; expect [ pos $text], [ 24 ]; expect [ $text ], [ $stdtext2 ]; # TESTS 35-37 $text = $stdtext2; -expect [ scalar extract_multiple($text) ], - [ substr($stdtext2,0,4) ]; +expect [ scalar extract_multiple($text) ], + [ substr($stdtext2,0,4) ]; expect [ pos $text], [ 0 ]; expect [ $text ], [ substr($stdtext2,4) ]; @@ -171,16 +177,16 @@ # TESTS 38-40 $text = $stdtext2; -expect [ extract_multiple($text,[\&extract_bracketed]) ], - [ substr($stdtext2,0,16), substr($stdtext2,16,7), substr($stdtext2,23) ]; +expect [ extract_multiple($text,[\&extract_bracketed]) ], + [ substr($stdtext2,0,16), substr($stdtext2,16,7), substr($stdtext2,23) ]; expect [ pos $text], [ 24 ]; expect [ $text ], [ $stdtext2 ]; # TESTS 41-43 $text = $stdtext2; -expect [ scalar extract_multiple($text,[\&extract_bracketed]) ], - [ substr($stdtext2,0,16) ]; +expect [ scalar extract_multiple($text,[\&extract_bracketed]) ], + [ substr($stdtext2,0,16) ]; expect [ pos $text], [ 0 ]; expect [ $text ], [ substr($stdtext2,15) ]; @@ -188,16 +194,16 @@ # TESTS 44-46 $text = $stdtext2; -expect [ extract_multiple($text,[\&extract_variable]) ], - [ substr($stdtext2,0,4), substr($stdtext2,4) ]; +expect [ extract_multiple($text,[\&extract_variable]) ], + [ substr($stdtext2,0,4), substr($stdtext2,4) ]; expect [ pos $text], [ length($text) ]; expect [ $text ], [ $stdtext2 ]; # TESTS 47-49 $text = $stdtext2; -expect [ scalar extract_multiple($text,[\&extract_variable]) ], - [ substr($stdtext2,0,4) ]; +expect [ scalar extract_multiple($text,[\&extract_variable]) ], + [ substr($stdtext2,0,4) ]; expect [ pos $text], [ 0 ]; expect [ $text ], [ substr($stdtext2,4) ]; @@ -205,16 +211,16 @@ # TESTS 50-52 $text = $stdtext2; -expect [ extract_multiple($text,[\&extract_quotelike]) ], - [ substr($stdtext2,0,7), substr($stdtext2,7,5), substr($stdtext2,12) ]; +expect [ extract_multiple($text,[\&extract_quotelike]) ], + [ substr($stdtext2,0,7), substr($stdtext2,7,5), substr($stdtext2,12) ]; expect [ pos $text], [ length($text) ]; expect [ $text ], [ $stdtext2 ]; # TESTS 53-55 $text = $stdtext2; -expect [ scalar extract_multiple($text,[\&extract_quotelike]) ], - [ substr($stdtext2,0,7) ]; +expect [ scalar extract_multiple($text,[\&extract_quotelike]) ], + [ substr($stdtext2,0,7) ]; expect [ pos $text], [ 0 ]; expect [ $text ], [ substr($stdtext2,6) ]; @@ -222,16 +228,16 @@ # TESTS 56-58 $text = $stdtext2; -expect [ extract_multiple($text,[\&extract_quotelike],2,1) ], - [ substr($stdtext2,7,5) ]; +expect [ extract_multiple($text,[\&extract_quotelike],2,1) ], + [ substr($stdtext2,7,5) ]; expect [ pos $text], [ 23 ]; expect [ $text ], [ $stdtext2 ]; # TESTS 59-61 $text = $stdtext2; -expect [ eval{local$^W;scalar extract_multiple($text,[\&extract_quotelike],2,1)} ], - [ substr($stdtext2,7,5) ]; +expect [ eval{local$^W;scalar extract_multiple($text,[\&extract_quotelike],2,1)} ], + [ substr($stdtext2,7,5) ]; expect [ pos $text], [ 6 ]; expect [ $text ], [ substr($stdtext2,0,6). substr($stdtext2,12) ]; @@ -239,16 +245,16 @@ # TESTS 62-64 $text = $stdtext2; -expect [ extract_multiple($text,[\&extract_quotelike],1,1) ], - [ substr($stdtext2,7,5) ]; +expect [ extract_multiple($text,[\&extract_quotelike],1,1) ], + [ substr($stdtext2,7,5) ]; expect [ pos $text], [ 12 ]; expect [ $text ], [ $stdtext2 ]; # TESTS 65-67 $text = $stdtext2; -expect [ scalar extract_multiple($text,[\&extract_quotelike],1,1) ], - [ substr($stdtext2,7,5) ]; +expect [ scalar extract_multiple($text,[\&extract_quotelike],1,1) ], + [ substr($stdtext2,7,5) ]; expect [ pos $text], [ 6 ]; expect [ $text ], [ substr($stdtext2,0,6). substr($stdtext2,12) ]; @@ -257,8 +263,8 @@ my $stdtext3 = "a,b,c"; $_ = $stdtext3; -expect [ extract_multiple(undef, [ sub { /\G[a-z]/gc && $& } ]) ], - [ divide($stdtext3 => 1,2,3,4,5) ]; +expect [ extract_multiple(undef, [ sub { /\G[a-z]/gc && $& } ]) ], + [ divide($stdtext3 => 1,2,3,4,5) ]; expect [ pos ], [ 5 ]; expect [ $_ ], [ $stdtext3 ]; @@ -266,8 +272,8 @@ # TESTS 71-73 $_ = $stdtext3; -expect [ scalar extract_multiple(undef, [ sub { /\G[a-z]/gc && $& } ]) ], - [ divide($stdtext3 => 1) ]; +expect [ scalar extract_multiple(undef, [ sub { /\G[a-z]/gc && $& } ]) ], + [ divide($stdtext3 => 1) ]; expect [ pos ], [ 0 ]; expect [ $_ ], [ substr($stdtext3,1) ]; @@ -276,8 +282,8 @@ # TESTS 74-76 $_ = $stdtext3; -expect [ extract_multiple(undef, [ qr/\G[a-z]/ ]) ], - [ divide($stdtext3 => 1,2,3,4,5) ]; +expect [ extract_multiple(undef, [ qr/\G[a-z]/ ]) ], + [ divide($stdtext3 => 1,2,3,4,5) ]; expect [ pos ], [ 5 ]; expect [ $_ ], [ $stdtext3 ]; @@ -285,8 +291,8 @@ # TESTS 77-79 $_ = $stdtext3; -expect [ scalar extract_multiple(undef, [ qr/\G[a-z]/ ]) ], - [ divide($stdtext3 => 1) ]; +expect [ scalar extract_multiple(undef, [ qr/\G[a-z]/ ]) ], + [ divide($stdtext3 => 1) ]; expect [ pos ], [ 0 ]; expect [ $_ ], [ substr($stdtext3,1) ]; @@ -295,8 +301,8 @@ # TESTS 80-82 $_ = $stdtext3; -expect [ extract_multiple(undef, [ q/([a-z]),?/ ]) ], - [ qw(a b c) ]; +expect [ extract_multiple(undef, [ q/([a-z]),?/ ]) ], + [ qw(a b c) ]; expect [ pos ], [ 5 ]; expect [ $_ ], [ $stdtext3 ]; @@ -304,8 +310,8 @@ # TESTS 83-85 $_ = $stdtext3; -expect [ scalar extract_multiple(undef, [ q/([a-z]),?/ ]) ], - [ divide($stdtext3 => 1) ]; +expect [ scalar extract_multiple(undef, [ q/([a-z]),?/ ]) ], + [ divide($stdtext3 => 1) ]; expect [ pos ], [ 0 ]; expect [ $_ ], [ substr($stdtext3,2) ]; @@ -315,5 +321,5 @@ # Fails in Text-Balanced-1.95 with result ['1 ', '""', '1234'] $_ = q{ ""1234}; -expect [ extract_multiple(undef, [\&extract_quotelike]) ], - [ ' ', '""', '1234' ]; +expect [ extract_multiple(undef, [\&extract_quotelike]) ], + [ ' ', '""', '1234' ]; diff -Nru perl-5.32.1/cpan/Text-Balanced/t/06_extqlk.t perl-5.34.0/cpan/Text-Balanced/t/06_extqlk.t --- perl-5.32.1/cpan/Text-Balanced/t/06_extqlk.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Text-Balanced/t/06_extqlk.t 2021-01-20 23:04:44.000000000 +0000 @@ -2,17 +2,23 @@ # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.pl' +use 5.008001; + +use strict; +use warnings; + ######################### We start with some black magic to print on failure. # Change 1..1 below to 1..last_test_to_print . # (It may become useful if the test is moved to ./t subdirectory.) +my $loaded = 0; BEGIN { $| = 1; print "1..95\n"; } END {print "not ok 1\n" unless $loaded;} use Text::Balanced qw ( extract_quotelike ); $loaded = 1; print "ok 1\n"; -$count=2; +my $count=2; use vars qw( $DEBUG ); #$DEBUG=1; sub debug { print "\t>>>",@_ if $ENV{DEBUG} } @@ -20,48 +26,50 @@ ######################### End of black magic. +## no critic (BuiltinFunctions::ProhibitStringyEval) -$cmd = "print"; -$neg = 0; +my $cmd = "print"; +my $neg = 0; +my $str; while (defined($str = )) { - chomp $str; - if ($str =~ s/\A# USING://) { $neg = 0; $cmd = $str; next; } - elsif ($str =~ /\A# TH[EI]SE? SHOULD FAIL/) { $neg = 1; next; } - elsif (!$str || $str =~ /\A#/) { $neg = 0; next } - my $setup_cmd = ($str =~ s/\A\{(.*)\}//) ? $1 : ''; - my $tests = 'sl'; - $str =~ s/\\n/\n/g; - my $orig = $str; - - eval $setup_cmd if $setup_cmd ne ''; - if($tests =~ /l/) { - debug "\tUsing: $cmd\n"; - debug "\t on: [" . esc($setup_cmd) . "][" . esc($str) . "]\n"; - my @res; - eval qq{\@res = $cmd; }; - debug "\t got:\n" . join "", map { "\t\t\t$_: [" . esc($res[$_]) . "]\n"} (0..$#res); - debug "\t left: [" . esc($str) . "]\n"; - debug "\t pos: [" . esc(substr($str,pos($str))) . "...]\n"; - print "not " if (substr($str,pos($str),1) eq ';')==$neg; - print "ok ", $count++; - print "\n"; - } - - eval $setup_cmd if $setup_cmd ne ''; - if($tests =~ /s/) { - $str = $orig; - debug "\tUsing: scalar $cmd\n"; - debug "\t on: [" . esc($str) . "]\n"; - $var = eval $cmd; - print " ($@)" if $@ && $DEBUG; - $var = "" unless defined $var; - debug "\t scalar got: [" . esc($var) . "]\n"; - debug "\t scalar left: [" . esc($str) . "]\n"; - print "not " if ($str =~ '\A;')==$neg; - print "ok ", $count++; - print "\n"; - } + chomp $str; + if ($str =~ s/\A# USING://) { $neg = 0; $cmd = $str; next; } + elsif ($str =~ /\A# TH[EI]SE? SHOULD FAIL/) { $neg = 1; next; } + elsif (!$str || $str =~ /\A#/) { $neg = 0; next } + my $setup_cmd = ($str =~ s/\A\{(.*)\}//) ? $1 : ''; + my $tests = 'sl'; + $str =~ s/\\n/\n/g; + my $orig = $str; + + eval $setup_cmd if $setup_cmd ne ''; + if($tests =~ /l/) { + debug "\tUsing: $cmd\n"; + debug "\t on: [" . esc($setup_cmd) . "][" . esc($str) . "]\n"; + my @res; + eval qq{\@res = $cmd; }; + debug "\t got:\n" . join "", map { "\t\t\t$_: [" . esc($res[$_]) . "]\n"} (0..$#res); + debug "\t left: [" . esc($str) . "]\n"; + debug "\t pos: [" . esc(substr($str,pos($str))) . "...]\n"; + print "not " if (substr($str,pos($str),1) eq ';')==$neg; + print "ok ", $count++; + print "\n"; + } + + eval $setup_cmd if $setup_cmd ne ''; + if($tests =~ /s/) { + $str = $orig; + debug "\tUsing: scalar $cmd\n"; + debug "\t on: [" . esc($str) . "]\n"; + my $var = eval $cmd; + print " ($@)" if $@ && $DEBUG; + $var = "" unless defined $var; + debug "\t scalar got: [" . esc($var) . "]\n"; + debug "\t scalar left: [" . esc($str) . "]\n"; + print "not " if ($str =~ '\A;')==$neg; + print "ok ", $count++; + print "\n"; + } } # fails in Text::Balanced 1.95 @@ -71,7 +79,7 @@ print "ok ", $count++; print "\n"; - + __DATA__ # USING: extract_quotelike($str); @@ -92,9 +100,9 @@ <<""; done()\nline1\nline2\n\n and next <<; done()\nline1\nline2\n\n and next # fails in Text::Balanced 1.95 -<{pat}>{$self->{sub}}; # CAN'T HANDLE '>' in '->' -s-$self->{pap}-$self->{sub}-; # CAN'T HANDLE '-' in '->' -<{pat}>{$self->{sub}}; # CAN'T HANDLE '>' in '->' +s-$self->{pap}-$self->{sub}-; # CAN'T HANDLE '-' in '->' +<>>",@_ if $DEBUG } ######################### End of black magic. +## no critic (BuiltinFunctions::ProhibitStringyEval) -$cmd = "print"; -$neg = 0; +my $cmd = "print"; +my $neg = 0; +my $str; while (defined($str = )) { - chomp $str; - if ($str =~ s/\A# USING://) { $neg = 0; $cmd = $str; next; } - elsif ($str =~ /\A# TH[EI]SE? SHOULD FAIL/) { $neg = 1; next; } - elsif (!$str || $str =~ /\A#/) { $neg = 0; next } - $str =~ s/\\n/\n/g; - debug "\tUsing: $cmd\n"; - debug "\t on: [$str]\n"; - - my @res; - $var = eval "\@res = $cmd"; - debug "\t list got: [" . join("|",map {defined $_ ? $_ : ''} @res) . "]\n"; - debug "\t list left: [$str]\n"; - print "not " if (substr($str,pos($str)||0,1) eq ';')==$neg; - print "ok ", $count++; - print " ($@)" if $@ && $DEBUG; - print "\n"; - - pos $str = 0; - $var = eval $cmd; - $var = "" unless defined $var; - debug "\t scalar got: [$var]\n"; - debug "\t scalar left: [$str]\n"; - print "not " if ($str =~ '\A;')==$neg; - print "ok ", $count++; - print " ($@)" if $@ && $DEBUG; - print "\n"; + chomp $str; + if ($str =~ s/\A# USING://) { $neg = 0; $cmd = $str; next; } + elsif ($str =~ /\A# TH[EI]SE? SHOULD FAIL/) { $neg = 1; next; } + elsif (!$str || $str =~ /\A#/) { $neg = 0; next } + $str =~ s/\\n/\n/g; + debug "\tUsing: $cmd\n"; + debug "\t on: [$str]\n"; + + my @res; + my $var = eval "\@res = $cmd"; + debug "\t list got: [" . join("|",map {defined $_ ? $_ : ''} @res) . "]\n"; + debug "\t list left: [$str]\n"; + print "not " if (substr($str,pos($str)||0,1) eq ';')==$neg; + print "ok ", $count++; + print " ($@)" if $@ && $DEBUG; + print "\n"; + + pos $str = 0; + $var = eval $cmd; + $var = "" unless defined $var; + debug "\t scalar got: [$var]\n"; + debug "\t scalar left: [$str]\n"; + print "not " if ($str =~ '\A;')==$neg; + print "ok ", $count++; + print " ($@)" if $@ && $DEBUG; + print "\n"; } __DATA__ # USING: gen_extract_tagged("BEGIN([A-Z]+)",'END$1',"(?s).*?(?=BEGIN)")->($str); - ignore\n this and then BEGINHERE at the ENDHERE; - ignore\n this and then BEGINTHIS at the ENDTHIS; + ignore\n this and then BEGINHERE at the ENDHERE; + ignore\n this and then BEGINTHIS at the ENDTHIS; # USING: extract_tagged($str,"BEGIN([A-Z]+)",'END$1',"(?s).*?(?=BEGIN)"); - ignore\n this and then BEGINHERE at the ENDHERE; - ignore\n this and then BEGINTHIS at the ENDTHIS; + ignore\n this and then BEGINHERE at the ENDHERE; + ignore\n this and then BEGINTHIS at the ENDTHIS; # USING: extract_tagged($str,"BEGIN([A-Z]+)",'END$1',"(?s).*?(?=BEGIN)"); - ignore\n this and then BEGINHERE at the ENDHERE; - ignore\n this and then BEGINTHIS at the ENDTHIS; + ignore\n this and then BEGINHERE at the ENDHERE; + ignore\n this and then BEGINTHIS at the ENDTHIS; # THIS SHOULD FAIL - ignore\n this and then BEGINTHIS at the ENDTHAT; + ignore\n this and then BEGINTHIS at the ENDTHAT; # USING: extract_tagged($str,"BEGIN","END","(?s).*?(?=BEGIN)"); - ignore\n this and then BEGIN at the END; + ignore\n this and then BEGIN at the END; # USING: extract_tagged($str); - some text; + some text; # USING: extract_tagged($str,qr/<[A-Z]+>/,undef, undef, {ignore=>["
"]}); - aaabbb
ccc
ddd
; + aaabbb
ccc
ddd
; # USING: extract_tagged($str,"BEGIN","END"); - BEGIN at the BEGIN keyword and END at the END; - BEGIN at the beginning and end at the END; + BEGIN at the BEGIN keyword and END at the END; + BEGIN at the beginning and end at the END; # USING: extract_tagged($str,undef,undef,undef,{ignore=>["<[^>]*/>"]}); - aaabbb
ccc
ddd
; + aaabbb
ccc
ddd
; # USING: extract_tagged($str,";","-",undef,{reject=>[";"],fail=>"MAX"}); - ; at the ;-) keyword + ; at the ;-) keyword # USING: extract_tagged($str,"<[A-Z]+>",undef, undef, {ignore=>["
"]}); - aaabbb
ccc
ddd
; + aaabbb
ccc
ddd
; # THESE SHOULD FAIL - BEGIN at the beginning and end at the end; - BEGIN at the BEGIN keyword and END at the end; + BEGIN at the beginning and end at the end; + BEGIN at the BEGIN keyword and END at the end; # TEST EXTRACTION OF TAGGED STRINGS # USING: extract_tagged($str,"BEGIN","END",undef,{reject=>["BEGIN","END"]}); # THESE SHOULD FAIL - BEGIN at the BEGIN keyword and END at the end; + BEGIN at the BEGIN keyword and END at the end; # USING: extract_tagged($str,";","-",undef,{reject=>[";"],fail=>"PARA"}); - ; at the ;-) keyword + ; at the ;-) keyword # USING: extract_tagged($str); - some text; - some textother text; - some textother text; - some text; + some text; + some textother text; + some textother text; + some text; # THESE SHOULD FAIL - some text - some textother text; - some textother text; + some text + some textother text; + some textother text; diff -Nru perl-5.32.1/cpan/Text-Balanced/t/08_extvar.t perl-5.34.0/cpan/Text-Balanced/t/08_extvar.t --- perl-5.32.1/cpan/Text-Balanced/t/08_extvar.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Text-Balanced/t/08_extvar.t 2021-01-20 23:04:44.000000000 +0000 @@ -1,53 +1,61 @@ # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.pl' +use 5.008001; + +use strict; +use warnings; + ######################### We start with some black magic to print on failure. # Change 1..1 below to 1..last_test_to_print . # (It may become useful if the test is moved to ./t subdirectory.) +my $loaded = 0; BEGIN { $| = 1; print "1..183\n"; } END {print "not ok 1\n" unless $loaded;} use Text::Balanced qw ( extract_variable ); $loaded = 1; print "ok 1\n"; -$count=2; +my $count=2; use vars qw( $DEBUG ); sub debug { print "\t>>>",@_ if $DEBUG } ######################### End of black magic. +## no critic (BuiltinFunctions::ProhibitStringyEval) -$cmd = "print"; -$neg = 0; +my $cmd = "print"; +my $neg = 0; +my $str; while (defined($str = )) { - chomp $str; - if ($str =~ s/\A# USING://) { $neg = 0; $cmd = $str; next; } - elsif ($str =~ /\A# TH[EI]SE? SHOULD FAIL/) { $neg = 1; next; } - elsif (!$str || $str =~ /\A#/) { $neg = 0; next } - $str =~ s/\\n/\n/g; - debug "\tUsing: $cmd\n"; - debug "\t on: [$str]\n"; - - my @res; - $var = eval "\@res = $cmd"; - debug "\t list got: [" . join("|",map {defined $_ ? $_ : ''} @res) . "]\n"; - debug "\t list left: [$str]\n"; - print "not " if (substr($str,pos($str)||0,1) eq ';')==$neg; - print "ok ", $count++; - print " ($@)" if $@ && $DEBUG; - print "\n"; - - pos $str = 0; - $var = eval $cmd; - $var = "" unless defined $var; - debug "\t scalar got: [$var]\n"; - debug "\t scalar left: [$str]\n"; - print "not " if ($str =~ '\A;')==$neg; - print "ok ", $count++; - print " ($@)" if $@ && $DEBUG; - print "\n"; + chomp $str; + if ($str =~ s/\A# USING://) { $neg = 0; $cmd = $str; next; } + elsif ($str =~ /\A# TH[EI]SE? SHOULD FAIL/) { $neg = 1; next; } + elsif (!$str || $str =~ /\A#/) { $neg = 0; next } + $str =~ s/\\n/\n/g; + debug "\tUsing: $cmd\n"; + debug "\t on: [$str]\n"; + + my @res; + my $var = eval "\@res = $cmd"; + debug "\t list got: [" . join("|",map {defined $_ ? $_ : ''} @res) . "]\n"; + debug "\t list left: [$str]\n"; + print "not " if (substr($str,pos($str)||0,1) eq ';')==$neg; + print "ok ", $count++; + print " ($@)" if $@ && $DEBUG; + print "\n"; + + pos $str = 0; + $var = eval $cmd; + $var = "" unless defined $var; + debug "\t scalar got: [$var]\n"; + debug "\t scalar left: [$str]\n"; + print "not " if ($str =~ '\A;')==$neg; + print "ok ", $count++; + print " ($@)" if $@ && $DEBUG; + print "\n"; } __DATA__ diff -Nru perl-5.32.1/cpan/Text-Balanced/t/09_gentag.t perl-5.34.0/cpan/Text-Balanced/t/09_gentag.t --- perl-5.32.1/cpan/Text-Balanced/t/09_gentag.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Text-Balanced/t/09_gentag.t 2021-01-20 23:04:44.000000000 +0000 @@ -1,102 +1,115 @@ # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.pl' +use 5.008001; + +use strict; +use warnings; + ######################### We start with some black magic to print on failure. # Change 1..1 below to 1..last_test_to_print . # (It may become useful if the test is moved to ./t subdirectory.) +my $loaded = 0; BEGIN { $| = 1; print "1..37\n"; } END {print "not ok 1\n" unless $loaded;} use Text::Balanced qw ( gen_extract_tagged ); $loaded = 1; print "ok 1\n"; -$count=2; +my $count=2; use vars qw( $DEBUG ); sub debug { print "\t>>>",@_ if $DEBUG } ######################### End of black magic. +## no critic (BuiltinFunctions::ProhibitStringyEval) -$cmd = "print"; -$neg = 0; +my $cmd = "print"; +my $neg = 0; +my $str; while (defined($str = )) { - chomp $str; - $str =~ s/\\n/\n/g; - if ($str =~ s/\A# USING://) - { - $neg = 0; - eval{local$^W;*f = eval $str || die}; - next; - } - elsif ($str =~ /\A# TH[EI]SE? SHOULD FAIL/) { $neg = 1; next; } - elsif (!$str || $str =~ /\A#/) { $neg = 0; next } - $str =~ s/\\n/\n/g; - debug "\tUsing: $cmd\n"; - debug "\t on: [$str]\n"; - - my @res; - $var = eval { @res = f($str) }; - debug "\t list got: [" . join("|",map {defined $_ ? $_ : ''} @res) . "]\n"; - debug "\t list left: [$str]\n"; - print "not " if (substr($str,pos($str)||0,1) eq ';')==$neg; - print "ok ", $count++; - print " ($@)" if $@ && $DEBUG; - print "\n"; - - pos $str = 0; - $var = eval { scalar f($str) }; - $var = "" unless defined $var; - debug "\t scalar got: [$var]\n"; - debug "\t scalar left: [$str]\n"; - print "not " if ($str =~ '\A;')==$neg; - print "ok ", $count++; - print " ($@)" if $@ && $DEBUG; - print "\n"; + chomp $str; + $str =~ s/\\n/\n/g; + if ($str =~ s/\A# USING://) + { + $neg = 0; + eval { + # Capture "Subroutine main::f redefined" warning + my @warnings; + local $SIG{__WARN__} = sub { push @warnings, shift; }; + *f = eval $str || die; + }; + next; + } + elsif ($str =~ /\A# TH[EI]SE? SHOULD FAIL/) { $neg = 1; next; } + elsif (!$str || $str =~ /\A#/) { $neg = 0; next } + $str =~ s/\\n/\n/g; + debug "\tUsing: $cmd\n"; + debug "\t on: [$str]\n"; + + my @res; + my $var = eval { @res = f($str) }; + debug "\t list got: [" . join("|",map {defined $_ ? $_ : ''} @res) . "]\n"; + debug "\t list left: [$str]\n"; + print "not " if (substr($str,pos($str)||0,1) eq ';')==$neg; + print "ok ", $count++; + print " ($@)" if $@ && $DEBUG; + print "\n"; + + pos $str = 0; + $var = eval { scalar f($str) }; + $var = "" unless defined $var; + debug "\t scalar got: [$var]\n"; + debug "\t scalar left: [$str]\n"; + print "not " if ($str =~ '\A;')==$neg; + print "ok ", $count++; + print " ($@)" if $@ && $DEBUG; + print "\n"; } __DATA__ # USING: gen_extract_tagged('{','}'); - { a test }; + { a test }; # USING: gen_extract_tagged(qr/<[A-Z]+>/,undef, undef, {ignore=>["
"]}); -
aaabbb
ccc
ddd
; + aaabbb
ccc
ddd
; # USING: gen_extract_tagged("BEGIN","END"); - BEGIN at the BEGIN keyword and END at the END; - BEGIN at the beginning and end at the END; + BEGIN at the BEGIN keyword and END at the END; + BEGIN at the beginning and end at the END; # USING: gen_extract_tagged(undef,undef,undef,{ignore=>["<[^>]*/>"]}); - aaabbb
ccc
ddd
; + aaabbb
ccc
ddd
; # USING: gen_extract_tagged(";","-",undef,{reject=>[";"],fail=>"MAX"}); - ; at the ;-) keyword + ; at the ;-) keyword # USING: gen_extract_tagged("<[A-Z]+>",undef, undef, {ignore=>["
"]}); - aaabbb
ccc
ddd
; + aaabbb
ccc
ddd
; # THESE SHOULD FAIL - BEGIN at the beginning and end at the end; - BEGIN at the BEGIN keyword and END at the end; + BEGIN at the beginning and end at the end; + BEGIN at the BEGIN keyword and END at the end; # TEST EXTRACTION OF TAGGED STRINGS # USING: gen_extract_tagged("BEGIN","END",undef,{reject=>["BEGIN","END"]}); # THESE SHOULD FAIL - BEGIN at the BEGIN keyword and END at the end; + BEGIN at the BEGIN keyword and END at the end; # USING: gen_extract_tagged(";","-",undef,{reject=>[";"],fail=>"PARA"}); - ; at the ;-) keyword + ; at the ;-) keyword # USING: gen_extract_tagged(); - some text; - some textother text; - some textother text; - some text; + some text; + some textother text; + some textother text; + some text; # THESE SHOULD FAIL - some text - some textother text; - some textother text; + some text + some textother text; + some textother text; diff -Nru perl-5.32.1/cpan/Text-Balanced/t/94_changes.t perl-5.34.0/cpan/Text-Balanced/t/94_changes.t --- perl-5.32.1/cpan/Text-Balanced/t/94_changes.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Text-Balanced/t/94_changes.t 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,48 @@ +#!perl +#=============================================================================== +# +# t/94_changes.t +# +# DESCRIPTION +# Test script to check CPAN::Changes conformance. +# +# COPYRIGHT +# Copyright (C) 2015 Steve Hay. All rights reserved. +# +# LICENCE +# This script is free software; you can redistribute it and/or modify it under +# the same terms as Perl itself, i.e. under the terms of either the GNU +# General Public License or the Artistic License, as specified in the LICENCE +# file. +# +#=============================================================================== + +use 5.008001; + +use strict; +use warnings; + +use Test::More; + +#=============================================================================== +# MAIN PROGRAM +#=============================================================================== + +MAIN: { + plan skip_all => 'Author testing only' unless $ENV{AUTHOR_TESTING}; + + my $ok = eval { + require Test::CPAN::Changes; + Test::CPAN::Changes->import(); + 1; + }; + + if (not $ok) { + plan skip_all => 'Test::CPAN::Changes required to test Changes'; + } + else { + changes_ok(); + } +} + +#=============================================================================== diff -Nru perl-5.32.1/cpan/Text-Balanced/t/95_critic.t perl-5.34.0/cpan/Text-Balanced/t/95_critic.t --- perl-5.32.1/cpan/Text-Balanced/t/95_critic.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Text-Balanced/t/95_critic.t 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,48 @@ +#!perl +#=============================================================================== +# +# t/95_critic.t +# +# DESCRIPTION +# Test script to check Perl::Critic conformance. +# +# COPYRIGHT +# Copyright (C) 2015 Steve Hay. All rights reserved. +# +# LICENCE +# This script is free software; you can redistribute it and/or modify it under +# the same terms as Perl itself, i.e. under the terms of either the GNU +# General Public License or the Artistic License, as specified in the LICENCE +# file. +# +#=============================================================================== + +use 5.008001; + +use strict; +use warnings; + +use Test::More; + +#=============================================================================== +# MAIN PROGRAM +#=============================================================================== + +MAIN: { + plan skip_all => 'Author testing only' unless $ENV{AUTHOR_TESTING}; + + my $ok = eval { + require Test::Perl::Critic; + Test::Perl::Critic->import(-profile => ''); + 1; + }; + + if (not $ok) { + plan skip_all => 'Test::Perl::Critic required to test with Perl::Critic'; + } + else { + all_critic_ok('.'); + } +} + +#=============================================================================== diff -Nru perl-5.32.1/cpan/Text-Balanced/t/96_pmv.t perl-5.34.0/cpan/Text-Balanced/t/96_pmv.t --- perl-5.32.1/cpan/Text-Balanced/t/96_pmv.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Text-Balanced/t/96_pmv.t 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,32 @@ +#!/usr/bin/perl + +# Test that our declared minimum Perl version matches our syntax + +use 5.008001; + +use strict; +use warnings; + +use Test::More; + +my @MODULES = ( + 'Perl::MinimumVersion 1.20', + 'Test::MinimumVersion 0.101082', +); + +# Don't run tests for installs +use Test::More; +unless ( $ENV{AUTHOR_TESTING} ) { + plan( skip_all => "Author testing only" ); +} + +# Load the testing modules +foreach my $MODULE ( @MODULES ) { + ## no critic (BuiltinFunctions::ProhibitStringyEval) + eval "use $MODULE"; + if ( $@ ) { + plan( skip_all => "$MODULE not available for testing" ); + } +} + +all_minimum_version_from_mymetayml_ok(); diff -Nru perl-5.32.1/cpan/Text-Balanced/t/97_pod.t perl-5.34.0/cpan/Text-Balanced/t/97_pod.t --- perl-5.32.1/cpan/Text-Balanced/t/97_pod.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Text-Balanced/t/97_pod.t 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,32 @@ +#!/usr/bin/perl + +# Test that the syntax of our POD documentation is valid + +use 5.008001; + +use strict; +use warnings; + +use Test::More; + +my @MODULES = ( + 'Pod::Simple 3.07', + 'Test::Pod 1.26', +); + +# Don't run tests for installs +use Test::More; +unless ( $ENV{AUTHOR_TESTING} ) { + plan( skip_all => "Author testing only" ); +} + +# Load the testing modules +foreach my $MODULE ( @MODULES ) { + ## no critic (BuiltinFunctions::ProhibitStringyEval) + eval "use $MODULE"; + if ( $@ ) { + plan( skip_all => "$MODULE not available for testing" ); + } +} + +all_pod_files_ok(); diff -Nru perl-5.32.1/cpan/Text-Balanced/t/98_pod_coverage.t perl-5.34.0/cpan/Text-Balanced/t/98_pod_coverage.t --- perl-5.32.1/cpan/Text-Balanced/t/98_pod_coverage.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Text-Balanced/t/98_pod_coverage.t 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,51 @@ +#!perl +#=============================================================================== +# +# t/99_pod_coverage.t +# +# DESCRIPTION +# Test script to check POD coverage. +# +# COPYRIGHT +# Copyright (C) 2015 Steve Hay. All rights reserved. +# +# LICENCE +# This script is free software; you can redistribute it and/or modify it under +# the same terms as Perl itself, i.e. under the terms of either the GNU +# General Public License or the Artistic License, as specified in the LICENCE +# file. +# +#=============================================================================== + +use 5.008001; + +use strict; +use warnings; + +use Test::More; + +#=============================================================================== +# MAIN PROGRAM +#=============================================================================== + +MAIN: { + plan skip_all => 'Author testing only' unless $ENV{AUTHOR_TESTING}; + + my $ok = eval { + require Test::Pod::Coverage; + Test::Pod::Coverage->import(); + 1; + }; + + if (not $ok) { + plan skip_all => 'Test::Pod::Coverage required to test POD coverage'; + } + elsif ($Test::Pod::Coverage::VERSION < 0.08) { + plan skip_all => 'Test::Pod::Coverage 0.08 or higher required to test POD coverage'; + } + else { + all_pod_coverage_ok(); + } +} + +#=============================================================================== diff -Nru perl-5.32.1/cpan/Tie-RefHash/lib/Tie/RefHash.pm perl-5.34.0/cpan/Tie-RefHash/lib/Tie/RefHash.pm --- perl-5.32.1/cpan/Tie-RefHash/lib/Tie/RefHash.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Tie-RefHash/lib/Tie/RefHash.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,102 +1,80 @@ -package Tie::RefHash; +package Tie::RefHash; # git description: Tie-RefHash-1.39-10-g2cfa4bd +# ABSTRACT: Use references as hash keys -use vars qw/$VERSION/; +our $VERSION = '1.40'; -$VERSION = "1.39"; - -use 5.005; - -=head1 NAME - -Tie::RefHash - use references as hash keys - -=head1 SYNOPSIS - - require 5.004; - use Tie::RefHash; - tie HASHVARIABLE, 'Tie::RefHash', LIST; - tie HASHVARIABLE, 'Tie::RefHash::Nestable', LIST; - - untie HASHVARIABLE; - -=head1 DESCRIPTION - -This module provides the ability to use references as hash keys if you -first C the hash variable to this module. Normally, only the -keys of the tied hash itself are preserved as references; to use -references as keys in hashes-of-hashes, use Tie::RefHash::Nestable, -included as part of Tie::RefHash. - -It is implemented using the standard perl TIEHASH interface. Please -see the C entry in perlfunc(1) and perltie(1) for more information. - -The Nestable version works by looking for hash references being stored -and converting them to tied hashes so that they too can have -references as keys. This will happen without warning whenever you -store a reference to one of your own hashes in the tied hash. - -=head1 EXAMPLE - - use Tie::RefHash; - tie %h, 'Tie::RefHash'; - $a = []; - $b = {}; - $c = \*main; - $d = \"gunk"; - $e = sub { 'foo' }; - %h = ($a => 1, $b => 2, $c => 3, $d => 4, $e => 5); - $a->[0] = 'foo'; - $b->{foo} = 'bar'; - for (keys %h) { - print ref($_), "\n"; - } - - tie %h, 'Tie::RefHash::Nestable'; - $h{$a}->{$b} = 1; - for (keys %h, keys %{$h{$a}}) { - print ref($_), "\n"; - } - -=head1 THREAD SUPPORT - -L fully supports threading using the C method. - -=head1 STORABLE SUPPORT - -L hooks are provided for semantically correct serialization and -cloning of tied refhashes. - -=head1 RELIC SUPPORT - -This version of Tie::RefHash seems to no longer work with 5.004. This has not -been throughly investigated. Patches welcome ;-) - -=head1 LICENSE - -This program is free software; you can redistribute it and/or modify it under -the same terms as Perl itself - -=head1 MAINTAINER - -Yuval Kogman Enothingmuch@woobling.orgE - -=head1 AUTHOR - -Gurusamy Sarathy gsar@activestate.com - -'Nestable' by Ed Avis ed@membled.com - -=head1 SEE ALSO - -perl(1), perlfunc(1), perltie(1) - -=cut +#pod =head1 SYNOPSIS +#pod +#pod require 5.004; +#pod use Tie::RefHash; +#pod tie HASHVARIABLE, 'Tie::RefHash', LIST; +#pod tie HASHVARIABLE, 'Tie::RefHash::Nestable', LIST; +#pod +#pod untie HASHVARIABLE; +#pod +#pod =head1 DESCRIPTION +#pod +#pod This module provides the ability to use references as hash keys if you +#pod first C the hash variable to this module. Normally, only the +#pod keys of the tied hash itself are preserved as references; to use +#pod references as keys in hashes-of-hashes, use Tie::RefHash::Nestable, +#pod included as part of Tie::RefHash. +#pod +#pod It is implemented using the standard perl TIEHASH interface. Please +#pod see the C entry in perlfunc(1) and perltie(1) for more information. +#pod +#pod The Nestable version works by looking for hash references being stored +#pod and converting them to tied hashes so that they too can have +#pod references as keys. This will happen without warning whenever you +#pod store a reference to one of your own hashes in the tied hash. +#pod +#pod =head1 EXAMPLE +#pod +#pod use Tie::RefHash; +#pod tie %h, 'Tie::RefHash'; +#pod $a = []; +#pod $b = {}; +#pod $c = \*main; +#pod $d = \"gunk"; +#pod $e = sub { 'foo' }; +#pod %h = ($a => 1, $b => 2, $c => 3, $d => 4, $e => 5); +#pod $a->[0] = 'foo'; +#pod $b->{foo} = 'bar'; +#pod for (keys %h) { +#pod print ref($_), "\n"; +#pod } +#pod +#pod tie %h, 'Tie::RefHash::Nestable'; +#pod $h{$a}->{$b} = 1; +#pod for (keys %h, keys %{$h{$a}}) { +#pod print ref($_), "\n"; +#pod } +#pod +#pod =head1 THREAD SUPPORT +#pod +#pod L fully supports threading using the C method. +#pod +#pod =head1 STORABLE SUPPORT +#pod +#pod L hooks are provided for semantically correct serialization and +#pod cloning of tied refhashes. +#pod +#pod =head1 AUTHORS +#pod +#pod Gurusamy Sarathy +#pod +#pod Tie::RefHash::Nestable by Ed Avis +#pod +#pod =head1 SEE ALSO +#pod +#pod perl(1), perlfunc(1), perltie(1) +#pod +#pod =cut use Tie::Hash; -use vars '@ISA'; -@ISA = qw(Tie::Hash); +our @ISA = qw(Tie::Hash); use strict; -use Carp qw/croak/; +use Carp (); BEGIN { local $@; @@ -114,7 +92,7 @@ local $@; if ( _HAS_SCALAR_UTIL ) { - Scalar::Util->import("refaddr"); + *refaddr = sub { goto \&Scalar::Util::refaddr } } else { require overload; @@ -148,7 +126,7 @@ if ( ++$count > 1000 ) { # this ensures we don't fill up with a huge array dead weakrefs - @thread_object_registry = grep { defined } @thread_object_registry; + @thread_object_registry = grep defined, @thread_object_registry; $count = 0; } } else { @@ -169,7 +147,7 @@ sub STORABLE_thaw { my ( $self, $is_cloning, $version, $refs, $reg ) = @_; - croak "incompatible versions of Tie::RefHash between freeze and thaw" + Carp::croak "incompatible versions of Tie::RefHash between freeze and thaw" unless $version eq $storable_format_version; @$self = ( {}, $reg ); @@ -185,20 +163,20 @@ # when the thread has been cloned all the objects need to be updated. # dead weakrefs are undefined, so we filter them out - @thread_object_registry = grep { defined && do { $_->_reindex_keys; 1 } } @thread_object_registry; + @thread_object_registry = grep defined && do { $_->_reindex_keys; 1 }, @thread_object_registry; $count = 0; # we just cleaned up } sub _reindex_keys { my ( $self, $extra_keys ) = @_; # rehash all the ref keys based on their new StrVal - %{ $self->[0] } = map { refaddr($_->[0]) => $_ } (values(%{ $self->[0] }), @{ $extra_keys || [] }); + %{ $self->[0] } = map +(Scalar::Util::refaddr($_->[0]) => $_), (values(%{ $self->[0] }), @{ $extra_keys || [] }); } sub FETCH { my($s, $k) = @_; if (ref $k) { - my $kstr = refaddr($k); + my $kstr = Scalar::Util::refaddr($k); if (defined $s->[0]{$kstr}) { $s->[0]{$kstr}[1]; } @@ -214,7 +192,7 @@ sub STORE { my($s, $k, $v) = @_; if (ref $k) { - $s->[0]{refaddr($k)} = [$k, $v]; + $s->[0]{Scalar::Util::refaddr($k)} = [$k, $v]; } else { $s->[1]{$k} = $v; @@ -225,13 +203,13 @@ sub DELETE { my($s, $k) = @_; (ref $k) - ? (delete($s->[0]{refaddr($k)}) || [])->[1] + ? (delete($s->[0]{Scalar::Util::refaddr($k)}) || [])->[1] : delete($s->[1]{$k}); } sub EXISTS { my($s, $k) = @_; - (ref $k) ? exists($s->[0]{refaddr($k)}) : exists($s->[1]{$k}); + (ref $k) ? exists($s->[0]{Scalar::Util::refaddr($k)}) : exists($s->[1]{$k}); } sub FIRSTKEY { @@ -263,9 +241,9 @@ %{$s->[1]} = (); } -package Tie::RefHash::Nestable; -use vars '@ISA'; -@ISA = 'Tie::RefHash'; +package # hide from PAUSE + Tie::RefHash::Nestable; +our @ISA = 'Tie::RefHash'; sub STORE { my($s, $k, $v) = @_; @@ -277,3 +255,121 @@ } 1; + +__END__ + +=pod + +=encoding UTF-8 + +=head1 NAME + +Tie::RefHash - Use references as hash keys + +=head1 VERSION + +version 1.40 + +=head1 SYNOPSIS + + require 5.004; + use Tie::RefHash; + tie HASHVARIABLE, 'Tie::RefHash', LIST; + tie HASHVARIABLE, 'Tie::RefHash::Nestable', LIST; + + untie HASHVARIABLE; + +=head1 DESCRIPTION + +This module provides the ability to use references as hash keys if you +first C the hash variable to this module. Normally, only the +keys of the tied hash itself are preserved as references; to use +references as keys in hashes-of-hashes, use Tie::RefHash::Nestable, +included as part of Tie::RefHash. + +It is implemented using the standard perl TIEHASH interface. Please +see the C entry in perlfunc(1) and perltie(1) for more information. + +The Nestable version works by looking for hash references being stored +and converting them to tied hashes so that they too can have +references as keys. This will happen without warning whenever you +store a reference to one of your own hashes in the tied hash. + +=head1 EXAMPLE + + use Tie::RefHash; + tie %h, 'Tie::RefHash'; + $a = []; + $b = {}; + $c = \*main; + $d = \"gunk"; + $e = sub { 'foo' }; + %h = ($a => 1, $b => 2, $c => 3, $d => 4, $e => 5); + $a->[0] = 'foo'; + $b->{foo} = 'bar'; + for (keys %h) { + print ref($_), "\n"; + } + + tie %h, 'Tie::RefHash::Nestable'; + $h{$a}->{$b} = 1; + for (keys %h, keys %{$h{$a}}) { + print ref($_), "\n"; + } + +=head1 THREAD SUPPORT + +L fully supports threading using the C method. + +=head1 STORABLE SUPPORT + +L hooks are provided for semantically correct serialization and +cloning of tied refhashes. + +=head1 SEE ALSO + +perl(1), perlfunc(1), perltie(1) + +=head1 SUPPORT + +Bugs may be submitted through L +(or L). + +=head1 AUTHORS + +Gurusamy Sarathy + +Tie::RefHash::Nestable by Ed Avis + +=head1 CONTRIBUTORS + +=for stopwords Yuval Kogman Karen Etheridge Florian Ragwitz Jerry D. Hedden + +=over 4 + +=item * + +Yuval Kogman + +=item * + +Karen Etheridge + +=item * + +Florian Ragwitz + +=item * + +Jerry D. Hedden + +=back + +=head1 COPYRIGHT AND LICENCE + +This software is copyright (c) 2006 by יובל קוג'מן (Yuval Kogman) . + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut diff -Nru perl-5.32.1/cpan/Tie-RefHash/t/rebless.t perl-5.34.0/cpan/Tie-RefHash/t/rebless.t --- perl-5.32.1/cpan/Tie-RefHash/t/rebless.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Tie-RefHash/t/rebless.t 2020-10-24 18:43:34.000000000 +0000 @@ -16,8 +16,7 @@ sub new { bless { }, shift }; package Elk; - use vars qw/@ISA/; - @ISA = "Moose"; + our @ISA = "Moose"; } $\ = "\n"; diff -Nru perl-5.32.1/cpan/Tie-RefHash/t/refhash.t perl-5.34.0/cpan/Tie-RefHash/t/refhash.t --- perl-5.32.1/cpan/Tie-RefHash/t/refhash.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Tie-RefHash/t/refhash.t 2020-10-24 18:43:34.000000000 +0000 @@ -288,8 +288,8 @@ # Test storing and removing under ordinary keys my @things = ('boink', 0, 1, '', undef); - foreach my $key (map { dumped($_) } @things) { - foreach my $value ((map { dumped($_) } @things), '$ref') { + foreach my $key (map dumped($_), @things) { + foreach my $value ((map dumped($_), @things), '$ref') { push @r, split /\n/, <<"END" \$h{$key} = $value; $STD_TESTS; diff -Nru perl-5.32.1/cpan/Tie-RefHash/t/threaded.t perl-5.34.0/cpan/Tie-RefHash/t/threaded.t --- perl-5.32.1/cpan/Tie-RefHash/t/threaded.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Tie-RefHash/t/threaded.t 2020-10-24 18:43:34.000000000 +0000 @@ -20,12 +20,11 @@ exit 0; } if ( $Config{usethreads} and !$Config{use5005threads} - and defined(&Scalar::Util::weaken) - and eval { require threads; threads->import; 1 } + and eval { +require threads; threads->import; 1 } ) { print "1..14\n"; } else { - print "1..0 # Skip -- threads aren't enabled in your perl, or Scalar::Util::weaken is missing\n"; + print "1..0 # Skip -- threads aren't enabled in your perl"; exit 0; } } diff -Nru perl-5.32.1/cpan/Time-Local/lib/Time/Local.pm perl-5.34.0/cpan/Time-Local/lib/Time/Local.pm --- perl-5.32.1/cpan/Time-Local/lib/Time/Local.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Time-Local/lib/Time/Local.pm 2020-10-24 18:43:34.000000000 +0000 @@ -5,13 +5,19 @@ use Carp (); use Exporter; -our $VERSION = '1.28'; +our $VERSION = '1.30'; use parent 'Exporter'; -our @EXPORT = qw( timegm timelocal ); -our @EXPORT_OK - = qw( timegm_modern timelocal_modern timegm_nocheck timelocal_nocheck ); +our @EXPORT = qw( timegm timelocal ); +our @EXPORT_OK = qw( + timegm_modern + timelocal_modern + timegm_nocheck + timelocal_nocheck + timegm_posix + timelocal_posix +); my @MonthDays = ( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ); @@ -90,7 +96,7 @@ - int( $year / 100 ) + int( $year / 400 ) + int( ( ( $month * 306 ) + 5 ) / 10 ) ) - $Epoc; - } + } ); } @@ -109,7 +115,7 @@ if ( $Options{no_year_munging} ) { $year -= 1900; } - else { + elsif ( !$Options{posix_year} ) { if ( $year >= 1000 ) { $year -= 1900; } @@ -175,6 +181,11 @@ return &timegm; } +sub timegm_posix { + local $Options{posix_year} = 1; + return &timegm; +} + sub timelocal { my $ref_t = &timegm; my $loc_for_ref_t = _timegm( localtime($ref_t) ); @@ -204,8 +215,8 @@ return $loc_t if $dst_off > 0; - # If the original date was a non-extent gap in a forward DST jump, - # we should now have the wrong answer - undo the DST adjustment + # If the original date was a non-existent gap in a forward DST jump, we + # should now have the wrong answer - undo the DST adjustment my ( $s, $m, $h ) = localtime($loc_t); $loc_t -= $dst_off if $s != $_[0] || $m != $_[1] || $h != $_[2]; @@ -222,6 +233,11 @@ return &timelocal; } +sub timelocal_posix { + local $Options{posix_year} = 1; + return &timelocal; +} + 1; # ABSTRACT: Efficiently compute time from local and GMT time @@ -238,14 +254,14 @@ =head1 VERSION -version 1.28 +version 1.30 =head1 SYNOPSIS - use Time::Local; + use Time::Local qw( timelocal_posix timegm_posix ); - my $time = timelocal( $sec, $min, $hour, $mday, $mon, $year ); - my $time = timegm( $sec, $min, $hour, $mday, $mon, $year ); + my $time = timelocal_posix( $sec, $min, $hour, $mday, $mon, $year ); + my $time = timegm_posix( $sec, $min, $hour, $mday, $mon, $year ); =head1 DESCRIPTION @@ -263,6 +279,32 @@ =head1 FUNCTIONS +=head2 C and C + +These functions are the exact inverse of Perl's built-in C and +C functions. That means that calling C<< timelocal_posix( +localtime($value) ) >> will always give you the same C<$value> you started +with. The same applies to C<< timegm_posix( gmtime($value) ) >>. + +The one exception is when the value returned from C represents an +ambiguous local time because of a DST change. See the documentation below for +more details. + +These functions expect the year value to be the number of years since 1900, +which is what the C and C built-ins returns. + +They perform range checking by default on the input C<$sec>, C<$min>, +C<$hour>, C<$mday>, and C<$mon> values and will croak (using C) +if given a value outside the allowed ranges. + +While it would be nice to make this the default behavior, that would almost +certainly break a lot of code, so you must explicitly import these functions +and use them instead of the default C and C. + +You are B encouraged to use these functions in any new code which +uses this module. It will almost certainly make your code's behavior less +surprising. + =head2 C and C When C was first written, it was a common practice to represent @@ -274,41 +316,44 @@ calculation when given a year value less than 1000. This leads to surprising results in many cases. See L for details. -The C subs do not do this year munging and simply take the -year value as provided. - -While it would be nice to make this the default behavior, that would almost -certainly break a lot of code, so you must explicitly import these subs and -use them instead of the default C and C. +The C functions do not do this year munging and simply take +the year value as provided. -You are B encouraged to use these subs in any new code which uses -this module. It will almost certainly make your code's behavior less -surprising. +They perform range checking by default on the input C<$sec>, C<$min>, +C<$hour>, C<$mday>, and C<$mon> values and will croak (using C) +if given a value outside the allowed ranges. =head2 C and C This module exports two functions by default, C and C. -The C and C functions perform range checking on the -input $sec, $min, $hour, $mday, and $mon values by default. +They perform range checking by default on the input C<$sec>, C<$min>, +C<$hour>, C<$mday>, and C<$mon> values and will croak (using C) +if given a value outside the allowed ranges. + +B or +C<*_modern> functions if possible.> =head2 C and C -If you are working with data you know to be valid, you can speed your code up -by using the "nocheck" variants, C and -C. These variants must be explicitly imported. - - use Time::Local 'timelocal_nocheck'; - - # The 365th day of 1999 - print scalar localtime timelocal_nocheck( 0, 0, 0, 365, 0, 99 ); +If you are working with data you know to be valid, you can use the "nocheck" +variants, C and C. These variants must +be explicitly imported. If you supply data which is not valid (month 27, second 1,000) the results will be unpredictable (so don't do that). +Note that my benchmarks show that this is just a 3% speed increase over the +checked versions, so unless calling C is the hottest spot in your +application, using these nocheck variants is unlikely to have much impact on +your application. + =head2 Year Value Interpretation -B or C. Use those +B or C<*_modern> functions. Use those exports if you want to ensure consistent behavior as your code ages.> Strictly speaking, the year should be specified in a form consistent with @@ -343,7 +388,9 @@ =back The scheme above allows interpretation of a wide range of dates, particularly -if 4-digit years are used. +if 4-digit years are used. But it also means that the behavior of your code +changes as time passes, because the rolling "current century" changes each +year. =head2 Limits of time_t @@ -367,7 +414,7 @@ "Europe/Paris" time zone, the local time of 2001-10-28 02:30:00 can represent either 2001-10-28 00:30:00 GMT, B 2001-10-28 01:30:00 GMT. -When given an ambiguous local time, the timelocal() function should always +When given an ambiguous local time, the timelocal() function will always return the epoch for the I of the two possible GMT times. =head2 Non-Existent Local Times (DST) @@ -457,7 +504,7 @@ =head1 COPYRIGHT AND LICENSE -This software is copyright (c) 1997 - 2018 by Graham Barr & Dave Rolsky. +This software is copyright (c) 1997 - 2020 by Graham Barr & Dave Rolsky. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. diff -Nru perl-5.32.1/cpan/Time-Local/t/Local.t perl-5.34.0/cpan/Time-Local/t/Local.t --- perl-5.32.1/cpan/Time-Local/t/Local.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Time-Local/t/Local.t 2020-10-24 18:43:34.000000000 +0000 @@ -5,8 +5,30 @@ use Config; use Test::More 0.96; -use Time::Local - qw( timegm timelocal timegm_modern timelocal_modern timegm_nocheck timelocal_nocheck ); +use Time::Local qw( + timegm + timelocal + timegm_modern + timelocal_modern + timegm_nocheck + timelocal_nocheck + timegm_posix + timelocal_posix +); + +my @local_subs = qw( + timelocal + timelocal_modern + timelocal_posix + timelocal_nocheck +); + +my @gm_subs = qw( + timegm + timegm_modern + timegm_posix + timegm_nocheck +); # Use 3 days before the start of the epoch because with Borland on # Win32 it will work for -3600 _if_ your time zone is +01:00 (or @@ -16,17 +38,19 @@ my $large_epoch_ok = eval { ( gmtime 2**40 )[5] == 34912 }; -{ - my %tests = _valid_time_tests(); - for my $group ( sort keys %tests ) { - subtest( - $group, - sub { _test_group( $tests{$group} ) }, - ); - } -} +subtest( 'valid times', \&_test_valid_times ); +subtest( 'diff between two calls', \&_test_diff_between_two_calls ); +subtest( + 'DST transition bug - https://rt.perl.org/Ticket/Display.html?id=19393', + \&_test_dst_transition_bug, +); +subtest( 'Time::Local::_is_leap_year', \&_test_is_leap_year ); +subtest( 'negative epochs', \&_test_negative_epochs ); +subtest( 'large epoch values', \&_test_large_epoch_values ); +subtest( '2-digit years', \&_test_2_digit_years ); +subtest( 'invalid values', \&_test_invalid_values ); -sub _valid_time_tests { +sub _test_valid_times { my %tests = ( 'simple times' => [ [ 1970, 1, 2, 0, 0, 0 ], @@ -64,7 +88,12 @@ [ 1950, 4, 12, 9, 30, 31 ], ] if $neg_epoch_ok; - return %tests; + for my $group ( sort keys %tests ) { + subtest( + $group, + sub { _test_group( $tests{$group} ) }, + ); + } } sub _test_group { @@ -77,297 +106,374 @@ # 1970 test on VOS fails next if $^O eq 'vos' && $year == 1970; - for my $sub (qw( timelocal timelocal_nocheck timelocal_modern )) { - subtest( - $sub, - sub { - my $time = __PACKAGE__->can($sub) - ->( $sec, $min, $hour, $mday, $mon, $year ); - - is_deeply( - [ ( localtime($time) )[ 0 .. 5 ] ], - [ int($sec), $min, $hour, $mday, $mon, $year - 1900 ], - "timelocal for @{$vals}" - ); + for my $sub (@local_subs) { + my $y = $year; + $y -= 1900 if $sub =~ /posix/; + my $time = __PACKAGE__->can($sub) + ->( $sec, $min, $hour, $mday, $mon, $y ); + + my @lt = localtime($time); + is_deeply( + { + second => $lt[0], + minute => $lt[1], + hour => $lt[2], + day => $lt[3], + month => $lt[4], + year => $lt[5], }, + { + second => int($sec), + minute => $min, + hour => $hour, + day => $mday, + month => $mon, + year => $year - 1900, + }, + "$sub( $sec, $min, $hour, $mday, $mon, $y )" ); } - for my $sub (qw( timegm timegm_nocheck timegm_modern )) { - subtest( - $sub, - sub { - my $time = __PACKAGE__->can($sub) - ->( $sec, $min, $hour, $mday, $mon, $year ); - - is_deeply( - [ ( gmtime($time) )[ 0 .. 5 ] ], - [ int($sec), $min, $hour, $mday, $mon, $year - 1900 ], - "timegm for @{$vals}" - ); + for my $sub (@gm_subs) { + my $y = $year; + $y -= 1900 if $sub =~ /posix/; + my $time = __PACKAGE__->can($sub) + ->( $sec, $min, $hour, $mday, $mon, $y ); + + my @gt = gmtime($time); + is_deeply( + { + second => $gt[0], + minute => $gt[1], + hour => $gt[2], + day => $gt[3], + month => $gt[4], + year => $gt[5], + }, + { + second => int($sec), + minute => $min, + hour => $hour, + day => $mday, + month => $mon, + year => $year - 1900, }, + "$sub( $sec, $min, $hour, $mday, $mon, $y )" ); } } } -subtest( - 'bad times', - sub { - my %bad = ( - 'month too large' => [ 1995, 13, 1, 1, 1, 1 ], - 'day too large' => [ 1995, 2, 30, 1, 1, 1 ], - 'hour too large' => [ 1995, 2, 10, 25, 1, 1 ], - 'minute too large' => [ 1995, 2, 10, 1, 60, 1 ], - 'second too large' => [ 1995, 2, 10, 1, 1, 60 ], - ); - - for my $key ( sort keys %bad ) { - subtest( - $key, - sub { - my ( $year, $mon, $mday, $hour, $min, $sec ) - = @{ $bad{$key} }; - $mon--; +sub _test_diff_between_two_calls { + for my $sub (@local_subs) { + subtest( + $sub, + sub { + my $year = 1990; + $year -= 1900 if $sub =~ /posix/; + my $sub_ref = __PACKAGE__->can($sub); + is( + $sub_ref->( 0, 0, 1, 1, 0, $year ) + - $sub_ref->( 0, 0, 0, 1, 0, $year ), + 3600, + 'one hour difference between two calls' + ); - local $@ = undef; - eval { timegm( $sec, $min, $hour, $mday, $mon, $year ) }; + is( + $sub_ref->( 1, 2, 3, 1, 0, $year + 1 ) + - $sub_ref->( 1, 2, 3, 31, 11, $year ), + 24 * 3600, + 'one day difference between two calls across year boundary', + ); + }, + ); + } - like( - $@, qr/.*out of range.*/, - "invalid time caused an error - @{$bad{$key}}" - ); - } - ); - } - }, -); + for my $sub (@gm_subs) { + subtest( + $sub, + sub { + my $year = 1980; + $year -= 1900 if $sub =~ /posix/; + my $sub_ref = __PACKAGE__->can($sub); -subtest( - 'diff between two calls', - sub { - is( - timelocal( 0, 0, 1, 1, 0, 90 ) - timelocal( 0, 0, 0, 1, 0, 90 ), - 3600, - 'one hour difference between two calls to timelocal' + # Diff beween Jan 1, 1980 and Mar 1, 1980 = (31 + 29 = 60 days) + is( + $sub_ref->( 0, 0, 0, 1, 2, 80 ) + - $sub_ref->( 0, 0, 0, 1, 0, 80 ), + 60 * 24 * 3600, + '60 day difference between two calls', + ); + }, ); + } +} - is( - timelocal( 1, 2, 3, 1, 0, 100 ) - - timelocal( 1, 2, 3, 31, 11, 99 ), - 24 * 3600, - 'one day difference between two calls to timelocal' +sub _test_dst_transition_bug { + for my $sub (@local_subs) { + subtest( + $sub, + sub { + my $year = 2002; + $year -= 2002 if $sub =~ /posix/; + my $sub_ref = __PACKAGE__->can($sub); + + # At a DST transition, the clock skips forward, eg from + # 01:59:59 to 03:00:00. In this case, 02:00:00 is an + # invalid time, and should be treated like 03:00:00 rather + # than 01:00:00 - negative zone offsets used to do the + # latter. + my $hour + = ( localtime( $sub_ref->( 0, 0, 2, 7, 3, 102 ) ) )[2]; + + # testers in US/Pacific should get 3, + # other testers should get 2 + ok( $hour == 2 || $hour == 3, 'hour should be 2 or 3' ); + }, ); + } +} - # Diff beween Jan 1, 1980 and Mar 1, 1980 = (31 + 29 = 60 days) - is( - timegm( 0, 0, 0, 1, 2, 80 ) - timegm( 0, 0, 0, 1, 0, 80 ), - 60 * 24 * 3600, - '60 day difference between two calls to timegm' - ); - }, -); +sub _test_is_leap_year { + my @years = ( + [ 1900 => 0 ], + [ 1947 => 0 ], + [ 1996 => 1 ], + [ 2000 => 1 ], + [ 2100 => 0 ], + ); -subtest( - 'DST transition bug - https://rt.perl.org/Ticket/Display.html?id=19393', - sub { - # At a DST transition, the clock skips forward, eg from 01:59:59 to - # 03:00:00. In this case, 02:00:00 is an invalid time, and should be - # treated like 03:00:00 rather than 01:00:00 - negative zone offsets - # used to do the latter. - { - my $hour = ( localtime( timelocal( 0, 0, 2, 7, 3, 102 ) ) )[2]; - - # testers in US/Pacific should get 3, - # other testers should get 2 - ok( $hour == 2 || $hour == 3, 'hour should be 2 or 3' ); - } - }, -); + for my $p (@years) { + my ( $year, $is_leap_year ) = @$p; -subtest( - 'Time::Local::_is_leap_year', - sub { - my @years = ( - [ 1900 => 0 ], - [ 1947 => 0 ], - [ 1996 => 1 ], - [ 2000 => 1 ], - [ 2100 => 0 ], + my $string = $is_leap_year ? 'is' : 'is not'; + ## no critic (Subroutines::ProtectPrivateSubs) + is( + Time::Local::_is_leap_year($year), $is_leap_year, + "$year $string a leap year" ); - - for my $p (@years) { - my ( $year, $is_leap_year ) = @$p; - - my $string = $is_leap_year ? 'is' : 'is not'; - ## no critic (Subroutines::ProtectPrivateSubs) - is( - Time::Local::_is_leap_year($year), $is_leap_year, - "$year $string a leap year" - ); - } } -); +} -subtest( - 'negative epochs', - sub { - plan skip_all => 'this platform does not support negative epochs.' - unless $neg_epoch_ok; - - local $@ = undef; - eval { timegm( 0, 0, 0, 29, 1, 1900 ) }; - like( - $@, qr/Day '29' out of range 1\.\.28/, - 'does not accept leap day in 1900' - ); +sub _test_negative_epochs { + plan skip_all => 'this platform does not support negative epochs.' + unless $neg_epoch_ok; - local $@ = undef; - eval { timegm( 0, 0, 0, 29, 1, 200 ) }; - like( - $@, qr/Day '29' out of range 1\.\.28/, - 'does not accept leap day in 2100 (year passed as 200)' - ); + for my $sub (@gm_subs) { + subtest( + $sub, + sub { + my $year_mod = $sub =~ /posix/ ? -1900 : 0; + my $sub_ref = __PACKAGE__->can($sub); - local $@ = undef; - eval { timegm( 0, 0, 0, 29, 1, 0 ) }; - is( - $@, q{}, - 'no error with leap day of 2000 (year passed as 0)' - ); + unless ( $sub =~ /nocheck/ ) { + local $@ = undef; + eval { $sub_ref->( 0, 0, 0, 29, 1, 1900 + $year_mod ); }; + like( + $@, qr/Day '29' out of range 1\.\.28/, + 'does not accept leap day in 1900' + ); - local $@ = undef; - eval { timegm( 0, 0, 0, 29, 1, 1904 ) }; - is( $@, q{}, 'no error with leap day of 1904' ); + local $@ = undef; + eval { $sub_ref->( 0, 0, 0, 29, 1, 200 + $year_mod ) }; + like( + $@, qr/Day '29' out of range 1\.\.28/, + 'does not accept leap day in 2100 (year passed as 200)' + ); + } - local $@ = undef; - eval { timegm( 0, 0, 0, 29, 1, 4 ) }; - is( - $@, q{}, - 'no error with leap day of 2004 (year passed as 4)' - ); + local $@ = undef; + eval { $sub_ref->( 0, 0, 0, 29, 1, 0 + $year_mod ) }; + is( + $@, q{}, + 'no error with leap day of 2000 (year passed as 0)' + ); - local $@ = undef; - eval { timegm( 0, 0, 0, 29, 1, 96 ) }; - is( - $@, q{}, - 'no error with leap day of 1996 (year passed as 96)' - ); - }, -); + local $@ = undef; + eval { $sub_ref->( 0, 0, 0, 29, 1, 1904 + $year_mod ) }; + is( $@, q{}, 'no error with leap day of 1904' ); -subtest( - 'Large epoch values', - sub { - plan skip_all => 'These tests require support for large epoch values' - unless $large_epoch_ok; + local $@ = undef; + eval { $sub_ref->( 0, 0, 0, 29, 1, 4 + $year_mod ) }; + is( + $@, q{}, + 'no error with leap day of 2004 (year passed as 4)' + ); - is( - timegm( 8, 14, 3, 19, 0, 2038 ), 2**31, - 'can call timegm for 2**31 epoch seconds' - ); - is( - timegm( 16, 28, 6, 7, 1, 2106 ), 2**32, - 'can call timegm for 2**32 epoch seconds (on a 64-bit system)' - ); - is( - timegm( 16, 36, 0, 20, 1, 36812 ), 2**40, - 'can call timegm for 2**40 epoch seconds (on a 64-bit system)' + local $@ = undef; + eval { $sub_ref->( 0, 0, 0, 29, 1, 96 + $year_mod ) }; + is( + $@, q{}, + 'no error with leap day of 1996 (year passed as 96)' + ); + }, ); - }, -); + } +} -subtest( - '2-digit years', - sub { - my $current_year = ( localtime() )[5]; - my $pre_break = ( $current_year + 49 ) - 100; - my $break = ( $current_year + 50 ) - 100; - my $post_break = ( $current_year + 51 ) - 100; +sub _test_large_epoch_values { + plan skip_all => 'These tests require support for large epoch values' + unless $large_epoch_ok; + for my $sub (@gm_subs) { subtest( - 'legacy year munging', + $sub, sub { - plan skip_all => 'Requires support for an large epoch values' - unless $large_epoch_ok; + my $year_mod = $sub =~ /posix/ ? -1900 : 0; + my $sub_ref = __PACKAGE__->can($sub); is( - ( - ( - localtime( - timelocal( 0, 0, 0, 1, 1, $pre_break ) - ) - )[5] - ), - $pre_break + 100, - "year $pre_break is treated as next century", + $sub_ref->( 8, 14, 3, 19, 0, 2038 + $year_mod ), + 2**31, + 'can call with 2**31 epoch seconds', ); is( - ( - ( localtime( timelocal( 0, 0, 0, 1, 1, $break ) ) )[5] - ), - $break + 100, - "year $break is treated as next century", + $sub_ref->( 16, 28, 6, 7, 1, 2106 + $year_mod ), + 2**32, + 'can call with 2**32 epoch seconds (on a 64-bit system)', ); is( - ( - ( - localtime( - timelocal( 0, 0, 0, 1, 1, $post_break ) - ) - )[5] - ), - $post_break, - "year $post_break is treated as current century", + $sub_ref->( 16, 36, 0, 20, 1, 36812 + $year_mod ), + 2**40, + 'can call with 2**40 epoch seconds (on a 64-bit system)', ); - } + }, ); + } +} - subtest( - 'modern', - sub { - plan skip_all => - 'Requires negative epoch support and large epoch support' - unless $neg_epoch_ok && $large_epoch_ok; +sub _test_2_digit_years { + my $current_year = ( localtime() )[5]; + my $pre_break = ( $current_year + 49 ) - 100; + my $break = ( $current_year + 50 ) - 100; + my $post_break = ( $current_year + 51 ) - 100; + + subtest( + 'legacy year munging', + sub { + plan skip_all => 'Requires support for an large epoch values' + unless $large_epoch_ok; - is( + is( + ( + ( localtime( timelocal( 0, 0, 0, 1, 1, $pre_break ) ) )[5] + ), + $pre_break + 100, + "year $pre_break is treated as next century", + ); + is( + ( ( localtime( timelocal( 0, 0, 0, 1, 1, $break ) ) )[5] ), + $break + 100, + "year $break is treated as next century", + ); + is( + ( + ( localtime( timelocal( 0, 0, 0, 1, 1, $post_break ) ) ) + [5] + ), + $post_break, + "year $post_break is treated as current century", + ); + } + ); + + subtest( + 'modern', + sub { + plan skip_all => + 'Requires negative epoch support and large epoch support' + unless $neg_epoch_ok && $large_epoch_ok; + + is( + ( ( - ( - localtime( - timelocal_modern( 0, 0, 0, 1, 1, $pre_break ) - ) - )[5] - ) + 1900, - $pre_break, - "year $pre_break is treated as year $pre_break", - ); - is( + localtime( + timelocal_modern( 0, 0, 0, 1, 1, $pre_break ) + ) + )[5] + ) + 1900, + $pre_break, + "year $pre_break is treated as year $pre_break", + ); + is( + ( ( - ( - localtime( - timelocal_modern( 0, 0, 0, 1, 1, $break ) - ) - )[5] - ) + 1900, - $break, - "year $break is treated as year $break", - ); - is( + localtime( + timelocal_modern( 0, 0, 0, 1, 1, $break ) + ) + )[5] + ) + 1900, + $break, + "year $break is treated as year $break", + ); + is( + ( ( - ( - localtime( - timelocal_modern( - 0, 0, 0, 1, 1, $post_break - ) - ) - )[5] - ) + 1900, - $post_break, - "year $post_break is treated as year $post_break", - ); + localtime( + timelocal_modern( 0, 0, 0, 1, 1, $post_break ) + ) + )[5] + ) + 1900, + $post_break, + "year $post_break is treated as year $post_break", + ); + }, + ); +} + +sub _test_invalid_values { + my %bad = ( + 'month > bounds' => [ 1995, 13, 1, 1, 1, 1 ], + 'day > bounds' => [ 1995, 2, 30, 1, 1, 1 ], + 'hour > bounds' => [ 1995, 2, 10, 25, 1, 1 ], + 'minute > bounds' => [ 1995, 2, 10, 1, 60, 1 ], + 'second > bounds' => [ 1995, 2, 10, 1, 1, 60 ], + 'month < bounds' => [ 1995, -1, 1, 1, 1, 1 ], + 'day < bounds' => [ 1995, 2, -1, 1, 1, 1 ], + 'hour < bounds' => [ 1995, 2, 10, -1, 1, 1 ], + 'minute < bounds' => [ 1995, 2, 10, 1, -1, 1 ], + 'second < bounds' => [ 1995, 2, 10, 1, 1, -1 ], + ); + + for my $sub ( grep { !/nocheck/ } @local_subs, @gm_subs ) { + subtest( + $sub, + sub { + for my $key ( sort keys %bad ) { + my ( $year, $mon, $mday, $hour, $min, $sec ) + = @{ $bad{$key} }; + $mon--; + + local $@ = undef; + eval { + __PACKAGE__->can($sub) + ->( $sec, $min, $hour, $mday, $mon, $year ); + }; + + like( + $@, qr/.*out of range.*/, + "$key - @{ $bad{$key} }" + ); + } }, ); - }, -); + } + + for my $sub ( grep {/nocheck/} @local_subs, @gm_subs ) { + subtest( + $sub, + sub { + for my $key ( sort keys %bad ) { + local $@ = q{}; + eval { __PACKAGE__->can($sub)->( @{ $bad{$key} } ); }; + is( + $@, q{}, + "$key - @{ $bad{$key} } - no exception with checks disabled" + ); + } + }, + ); + } +} done_testing(); diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/allkeys.txt perl-5.34.0/cpan/Unicode-Collate/Collate/allkeys.txt --- perl-5.32.1/cpan/Unicode-Collate/Collate/allkeys.txt 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/allkeys.txt 2020-10-24 18:43:34.000000000 +0000 @@ -1,6 +1,6 @@ -# allkeys-10.0.0.txt -# Date: 2017-04-26, 11:47:03 GMT [KW] -# Copyright 2017 Unicode, Inc. +# allkeys-13.0.0.txt +# Date: 2020-01-28, 17:07:29 GMT [KW] +# Copyright 2020 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # # This file defines the Default Unicode Collation Element Table @@ -9,17 +9,21 @@ # See UTS #10, Unicode Collation Algorithm, for more information. # # Diagnostic weight ranges -# Primary weight range: 0200..56DA (21723) -# Secondary weight range: 0020..0115 (246) -# Variant secondaries: 0111..0115 (5) +# Primary weight range: 0200..5C37 (23096) +# Secondary weight range: 0020..011C (253) +# Variant secondaries: 0118..011C (5) # Tertiary weight range: 0002..001F (30) # -@version 10.0.0 +@version 13.0.0 @implicitweights 17000..18AFF; FB00 # Tangut and Tangut Components +@implicitweights 18D00..18D8F; FB00 # Tangut Supplement + @implicitweights 1B170..1B2FF; FB01 # Nushu +@implicitweights 18B00..18CFF; FB02 # Khitan Small Script + 0000 ; [.0000.0000.0000] # NULL (in ISO 6429) 0001 ; [.0000.0000.0000] # START OF HEADING (in ISO 6429) 0002 ; [.0000.0000.0000] # START OF TEXT (in ISO 6429) @@ -81,8 +85,6 @@ 009F ; [.0000.0000.0000] # APPLICATION PROGRAM COMMAND (in ISO 6429) 00AD ; [.0000.0000.0000] # SOFT HYPHEN 061C ; [.0000.0000.0000] # ARABIC LETTER MARK -070F ; [.0000.0000.0000] # SYRIAC ABBREVIATION MARK -08E2 ; [.0000.0000.0000] # ARABIC DISPUTED END OF AYAH 180B ; [.0000.0000.0000] # MONGOLIAN FREE VARIATION SELECTOR ONE 180C ; [.0000.0000.0000] # MONGOLIAN FREE VARIATION SELECTOR TWO 180D ; [.0000.0000.0000] # MONGOLIAN FREE VARIATION SELECTOR THREE @@ -128,6 +130,15 @@ FFF9 ; [.0000.0000.0000] # INTERLINEAR ANNOTATION ANCHOR FFFA ; [.0000.0000.0000] # INTERLINEAR ANNOTATION SEPARATOR FFFB ; [.0000.0000.0000] # INTERLINEAR ANNOTATION TERMINATOR +13430 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH VERTICAL JOINER +13431 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH HORIZONTAL JOINER +13432 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH INSERT AT TOP START +13433 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH INSERT AT BOTTOM START +13434 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH INSERT AT TOP END +13435 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH INSERT AT BOTTOM END +13436 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH OVERLAY MIDDLE +13437 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH BEGIN SEGMENT +13438 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH END SEGMENT 1BCA0 ; [.0000.0000.0000] # SHORTHAND FORMAT LETTER OVERLAP 1BCA1 ; [.0000.0000.0000] # SHORTHAND FORMAT CONTINUING OVERLAP 1BCA2 ; [.0000.0000.0000] # SHORTHAND FORMAT DOWN STEP @@ -483,135 +494,135 @@ 000C ; [*0204.0020.0002] # FORM FEED (in ISO 6429) 000D ; [*0205.0020.0002] # CARRIAGE RETURN (in ISO 6429) 0020 ; [*0209.0020.0002] # SPACE -0021 ; [*0261.0020.0002] # EXCLAMATION MARK -0022 ; [*030D.0020.0002] # QUOTATION MARK -0023 ; [*0399.0020.0002] # NUMBER SIGN -0025 ; [*039A.0020.0002] # PERCENT SIGN -0026 ; [*0397.0020.0002] # AMPERSAND -0027 ; [*0306.0020.0002] # APOSTROPHE -0028 ; [*0318.0020.0002] # LEFT PARENTHESIS -0029 ; [*0319.0020.0002] # RIGHT PARENTHESIS -002A ; [*0390.0020.0002] # ASTERISK -002B ; [*062C.0020.0002] # PLUS SIGN -002C ; [*0222.0020.0002] # COMMA +0021 ; [*0267.0020.0002] # EXCLAMATION MARK +0022 ; [*031D.0020.0002] # QUOTATION MARK +0023 ; [*03AC.0020.0002] # NUMBER SIGN +0025 ; [*03AD.0020.0002] # PERCENT SIGN +0026 ; [*03A9.0020.0002] # AMPERSAND +0027 ; [*0316.0020.0002] # APOSTROPHE +0028 ; [*0328.0020.0002] # LEFT PARENTHESIS +0029 ; [*0329.0020.0002] # RIGHT PARENTHESIS +002A ; [*03A1.0020.0002] # ASTERISK +002B ; [*0666.0020.0002] # PLUS SIGN +002C ; [*0223.0020.0002] # COMMA 002D ; [*020D.0020.0002] # HYPHEN-MINUS -002E ; [*0278.0020.0002] # FULL STOP -002F ; [*0395.0020.0002] # SOLIDUS -003A ; [*023A.0020.0002] # COLON -003B ; [*0234.0020.0002] # SEMICOLON -003C ; [*0630.0020.0002] # LESS-THAN SIGN -003D ; [*0631.0020.0002] # EQUALS SIGN -003E ; [*0632.0020.0002] # GREATER-THAN SIGN -003F ; [*0267.0020.0002] # QUESTION MARK -0040 ; [*038F.0020.0002] # COMMERCIAL AT -005B ; [*031A.0020.0002] # LEFT SQUARE BRACKET -005C ; [*0396.0020.0002] # REVERSE SOLIDUS -005D ; [*031B.0020.0002] # RIGHT SQUARE BRACKET -005E ; [*049B.0020.0002] # CIRCUMFLEX ACCENT +002E ; [*027E.0020.0002] # FULL STOP +002F ; [*03A6.0020.0002] # SOLIDUS +003A ; [*0240.0020.0002] # COLON +003B ; [*023A.0020.0002] # SEMICOLON +003C ; [*066A.0020.0002] # LESS-THAN SIGN +003D ; [*066B.0020.0002] # EQUALS SIGN +003E ; [*066C.0020.0002] # GREATER-THAN SIGN +003F ; [*026D.0020.0002] # QUESTION MARK +0040 ; [*03A0.0020.0002] # COMMERCIAL AT +005B ; [*032A.0020.0002] # LEFT SQUARE BRACKET +005C ; [*03A7.0020.0002] # REVERSE SOLIDUS +005D ; [*032B.0020.0002] # RIGHT SQUARE BRACKET +005E ; [*04B7.0020.0002] # CIRCUMFLEX ACCENT 005F ; [*020B.0020.0002] # LOW LINE -0060 ; [*0498.0020.0002] # GRAVE ACCENT -007B ; [*031C.0020.0002] # LEFT CURLY BRACKET -007C ; [*0634.0020.0002] # VERTICAL LINE -007D ; [*031D.0020.0002] # RIGHT CURLY BRACKET -007E ; [*0636.0020.0002] # TILDE +0060 ; [*04B4.0020.0002] # GRAVE ACCENT +007B ; [*032C.0020.0002] # LEFT CURLY BRACKET +007C ; [*066E.0020.0002] # VERTICAL LINE +007D ; [*032D.0020.0002] # RIGHT CURLY BRACKET +007E ; [*0670.0020.0002] # TILDE 0085 ; [*0206.0020.0002] # NEXT LINE (in ISO 6429) 00A0 ; [*0209.0020.001B] # NO-BREAK SPACE -00A1 ; [*0262.0020.0002] # INVERTED EXCLAMATION MARK -00A6 ; [*0635.0020.0002] # BROKEN BAR -00A7 ; [*038A.0020.0002] # SECTION SIGN -00A8 ; [*049F.0020.0002] # DIAERESIS -00A9 ; [*059A.0020.0002] # COPYRIGHT SIGN -00AB ; [*0316.0020.0002] # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -00AC ; [*0633.0020.0002] # NOT SIGN -00AE ; [*059B.0020.0002] # REGISTERED SIGN -00AF ; [*049C.0020.0002] # MACRON -00B0 ; [*050C.0020.0002] # DEGREE SIGN -00B1 ; [*062D.0020.0002] # PLUS-MINUS SIGN -00B4 ; [*0499.0020.0002] # ACUTE ACCENT -00B6 ; [*038C.0020.0002] # PILCROW SIGN -00B7 ; [*028C.0020.0002] # MIDDLE DOT -00B8 ; [*04A2.0020.0002] # CEDILLA -00BB ; [*0317.0020.0002] # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -00BF ; [*0268.0020.0002] # INVERTED QUESTION MARK -00D7 ; [*062F.0020.0002] # MULTIPLICATION SIGN -00F7 ; [*062E.0020.0002] # DIVISION SIGN -02B9 ; [*04A9.0020.0002] # MODIFIER LETTER PRIME -02BA ; [*04AB.0020.0002] # MODIFIER LETTER DOUBLE PRIME -02C2 ; [*04AC.0020.0002] # MODIFIER LETTER LEFT ARROWHEAD -02C3 ; [*04AD.0020.0002] # MODIFIER LETTER RIGHT ARROWHEAD -02C4 ; [*04AE.0020.0002] # MODIFIER LETTER UP ARROWHEAD -02C5 ; [*04AF.0020.0002] # MODIFIER LETTER DOWN ARROWHEAD -02C6 ; [*04B0.0020.0002] # MODIFIER LETTER CIRCUMFLEX ACCENT -02C7 ; [*04B1.0020.0002] # CARON -02C8 ; [*04B2.0020.0002] # MODIFIER LETTER VERTICAL LINE -02C9 ; [*04B3.0020.0002] # MODIFIER LETTER MACRON -02CA ; [*04B4.0020.0002] # MODIFIER LETTER ACUTE ACCENT -02CB ; [*04B5.0020.0002] # MODIFIER LETTER GRAVE ACCENT -02CC ; [*04B6.0020.0002] # MODIFIER LETTER LOW VERTICAL LINE -02CD ; [*04B7.0020.0002] # MODIFIER LETTER LOW MACRON -02CE ; [*04B8.0020.0002] # MODIFIER LETTER LOW GRAVE ACCENT -02CF ; [*04B9.0020.0002] # MODIFIER LETTER LOW ACUTE ACCENT -02D2 ; [*04BA.0020.0002] # MODIFIER LETTER CENTRED RIGHT HALF RING -02D3 ; [*04BB.0020.0002] # MODIFIER LETTER CENTRED LEFT HALF RING -02D4 ; [*04BC.0020.0002] # MODIFIER LETTER UP TACK -02D5 ; [*04BD.0020.0002] # MODIFIER LETTER DOWN TACK -02D6 ; [*04BE.0020.0002] # MODIFIER LETTER PLUS SIGN -02D7 ; [*04BF.0020.0002] # MODIFIER LETTER MINUS SIGN -02D8 ; [*049D.0020.0002] # BREVE -02D9 ; [*049E.0020.0002] # DOT ABOVE -02DA ; [*04A0.0020.0002] # RING ABOVE -02DB ; [*04A3.0020.0002] # OGONEK -02DC ; [*049A.0020.0002] # SMALL TILDE -02DD ; [*04A1.0020.0002] # DOUBLE ACUTE ACCENT -02DE ; [*04C0.0020.0002] # MODIFIER LETTER RHOTIC HOOK -02DF ; [*04C1.0020.0002] # MODIFIER LETTER CROSS ACCENT -02E5 ; [*04C2.0020.0002] # MODIFIER LETTER EXTRA-HIGH TONE BAR -02E6 ; [*04C3.0020.0002] # MODIFIER LETTER HIGH TONE BAR -02E7 ; [*04C4.0020.0002] # MODIFIER LETTER MID TONE BAR -02E8 ; [*04C5.0020.0002] # MODIFIER LETTER LOW TONE BAR -02E9 ; [*04C6.0020.0002] # MODIFIER LETTER EXTRA-LOW TONE BAR -02EA ; [*04C7.0020.0002] # MODIFIER LETTER YIN DEPARTING TONE MARK -02EB ; [*04C8.0020.0002] # MODIFIER LETTER YANG DEPARTING TONE MARK -02EC ; [*04C9.0020.0002] # MODIFIER LETTER VOICING -02ED ; [*04CA.0020.0002] # MODIFIER LETTER UNASPIRATED -02EF ; [*04CB.0020.0002] # MODIFIER LETTER LOW DOWN ARROWHEAD -02F0 ; [*04CC.0020.0002] # MODIFIER LETTER LOW UP ARROWHEAD -02F1 ; [*04CD.0020.0002] # MODIFIER LETTER LOW LEFT ARROWHEAD -02F2 ; [*04CE.0020.0002] # MODIFIER LETTER LOW RIGHT ARROWHEAD -02F3 ; [*04CF.0020.0002] # MODIFIER LETTER LOW RING -02F4 ; [*04D0.0020.0002] # MODIFIER LETTER MIDDLE GRAVE ACCENT -02F5 ; [*04D1.0020.0002] # MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT -02F6 ; [*04D2.0020.0002] # MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT -02F7 ; [*04D3.0020.0002] # MODIFIER LETTER LOW TILDE -02F8 ; [*04D4.0020.0002] # MODIFIER LETTER RAISED COLON -02F9 ; [*04D5.0020.0002] # MODIFIER LETTER BEGIN HIGH TONE -02FA ; [*04D6.0020.0002] # MODIFIER LETTER END HIGH TONE -02FB ; [*04D7.0020.0002] # MODIFIER LETTER BEGIN LOW TONE -02FC ; [*04D8.0020.0002] # MODIFIER LETTER END LOW TONE -02FD ; [*04D9.0020.0002] # MODIFIER LETTER SHELF -02FE ; [*04DA.0020.0002] # MODIFIER LETTER OPEN SHELF -02FF ; [*04DB.0020.0002] # MODIFIER LETTER LOW LEFT ARROW +00A1 ; [*0268.0020.0002] # INVERTED EXCLAMATION MARK +00A6 ; [*066F.0020.0002] # BROKEN BAR +00A7 ; [*039A.0020.0002] # SECTION SIGN +00A8 ; [*04BB.0020.0002] # DIAERESIS +00A9 ; [*05D2.0020.0002] # COPYRIGHT SIGN +00AB ; [*0326.0020.0002] # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +00AC ; [*066D.0020.0002] # NOT SIGN +00AE ; [*05D4.0020.0002] # REGISTERED SIGN +00AF ; [*04B8.0020.0002] # MACRON +00B0 ; [*052A.0020.0002] # DEGREE SIGN +00B1 ; [*0667.0020.0002] # PLUS-MINUS SIGN +00B4 ; [*04B5.0020.0002] # ACUTE ACCENT +00B6 ; [*039C.0020.0002] # PILCROW SIGN +00B7 ; [*0293.0020.0002] # MIDDLE DOT +00B8 ; [*04BE.0020.0002] # CEDILLA +00BB ; [*0327.0020.0002] # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +00BF ; [*026E.0020.0002] # INVERTED QUESTION MARK +00D7 ; [*0669.0020.0002] # MULTIPLICATION SIGN +00F7 ; [*0668.0020.0002] # DIVISION SIGN +02B9 ; [*04C5.0020.0002] # MODIFIER LETTER PRIME +02BA ; [*04C7.0020.0002] # MODIFIER LETTER DOUBLE PRIME +02C2 ; [*04C8.0020.0002] # MODIFIER LETTER LEFT ARROWHEAD +02C3 ; [*04C9.0020.0002] # MODIFIER LETTER RIGHT ARROWHEAD +02C4 ; [*04CA.0020.0002] # MODIFIER LETTER UP ARROWHEAD +02C5 ; [*04CB.0020.0002] # MODIFIER LETTER DOWN ARROWHEAD +02C6 ; [*04CC.0020.0002] # MODIFIER LETTER CIRCUMFLEX ACCENT +02C7 ; [*04CD.0020.0002] # CARON +02C8 ; [*04CE.0020.0002] # MODIFIER LETTER VERTICAL LINE +02C9 ; [*04CF.0020.0002] # MODIFIER LETTER MACRON +02CA ; [*04D0.0020.0002] # MODIFIER LETTER ACUTE ACCENT +02CB ; [*04D1.0020.0002] # MODIFIER LETTER GRAVE ACCENT +02CC ; [*04D2.0020.0002] # MODIFIER LETTER LOW VERTICAL LINE +02CD ; [*04D3.0020.0002] # MODIFIER LETTER LOW MACRON +02CE ; [*04D4.0020.0002] # MODIFIER LETTER LOW GRAVE ACCENT +02CF ; [*04D5.0020.0002] # MODIFIER LETTER LOW ACUTE ACCENT +02D2 ; [*04D6.0020.0002] # MODIFIER LETTER CENTRED RIGHT HALF RING +02D3 ; [*04D7.0020.0002] # MODIFIER LETTER CENTRED LEFT HALF RING +02D4 ; [*04D8.0020.0002] # MODIFIER LETTER UP TACK +02D5 ; [*04D9.0020.0002] # MODIFIER LETTER DOWN TACK +02D6 ; [*04DC.0020.0002] # MODIFIER LETTER PLUS SIGN +02D7 ; [*04DD.0020.0002] # MODIFIER LETTER MINUS SIGN +02D8 ; [*04B9.0020.0002] # BREVE +02D9 ; [*04BA.0020.0002] # DOT ABOVE +02DA ; [*04BC.0020.0002] # RING ABOVE +02DB ; [*04BF.0020.0002] # OGONEK +02DC ; [*04B6.0020.0002] # SMALL TILDE +02DD ; [*04BD.0020.0002] # DOUBLE ACUTE ACCENT +02DE ; [*04DE.0020.0002] # MODIFIER LETTER RHOTIC HOOK +02DF ; [*04DF.0020.0002] # MODIFIER LETTER CROSS ACCENT +02E5 ; [*04E0.0020.0002] # MODIFIER LETTER EXTRA-HIGH TONE BAR +02E6 ; [*04E1.0020.0002] # MODIFIER LETTER HIGH TONE BAR +02E7 ; [*04E2.0020.0002] # MODIFIER LETTER MID TONE BAR +02E8 ; [*04E3.0020.0002] # MODIFIER LETTER LOW TONE BAR +02E9 ; [*04E4.0020.0002] # MODIFIER LETTER EXTRA-LOW TONE BAR +02EA ; [*04E5.0020.0002] # MODIFIER LETTER YIN DEPARTING TONE MARK +02EB ; [*04E6.0020.0002] # MODIFIER LETTER YANG DEPARTING TONE MARK +02EC ; [*04E7.0020.0002] # MODIFIER LETTER VOICING +02ED ; [*04E8.0020.0002] # MODIFIER LETTER UNASPIRATED +02EF ; [*04E9.0020.0002] # MODIFIER LETTER LOW DOWN ARROWHEAD +02F0 ; [*04EA.0020.0002] # MODIFIER LETTER LOW UP ARROWHEAD +02F1 ; [*04EB.0020.0002] # MODIFIER LETTER LOW LEFT ARROWHEAD +02F2 ; [*04EC.0020.0002] # MODIFIER LETTER LOW RIGHT ARROWHEAD +02F3 ; [*04ED.0020.0002] # MODIFIER LETTER LOW RING +02F4 ; [*04EE.0020.0002] # MODIFIER LETTER MIDDLE GRAVE ACCENT +02F5 ; [*04EF.0020.0002] # MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT +02F6 ; [*04F0.0020.0002] # MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT +02F7 ; [*04F1.0020.0002] # MODIFIER LETTER LOW TILDE +02F8 ; [*04F2.0020.0002] # MODIFIER LETTER RAISED COLON +02F9 ; [*04F3.0020.0002] # MODIFIER LETTER BEGIN HIGH TONE +02FA ; [*04F4.0020.0002] # MODIFIER LETTER END HIGH TONE +02FB ; [*04F5.0020.0002] # MODIFIER LETTER BEGIN LOW TONE +02FC ; [*04F6.0020.0002] # MODIFIER LETTER END LOW TONE +02FD ; [*04F7.0020.0002] # MODIFIER LETTER SHELF +02FE ; [*04F8.0020.0002] # MODIFIER LETTER OPEN SHELF +02FF ; [*04F9.0020.0002] # MODIFIER LETTER LOW LEFT ARROW 034F ; [.0000.0000.0000] # COMBINING GRAPHEME JOINER -0374 ; [*04A9.0020.0002] # GREEK NUMERAL SIGN -0375 ; [*04AA.0020.0002] # GREEK LOWER NUMERAL SIGN -037E ; [*0234.0020.0002] # GREEK QUESTION MARK -0384 ; [*0499.0020.0002] # GREEK TONOS -0385 ; [*049F.0020.0002][.0000.0024.0002] # GREEK DIALYTIKA TONOS -0387 ; [*028C.0020.0002] # GREEK ANO TELEIA -03F6 ; [*0627.0020.0002] # GREEK REVERSED LUNATE EPSILON SYMBOL -0482 ; [*050D.0020.0002] # CYRILLIC THOUSANDS SIGN +0374 ; [*04C5.0020.0002] # GREEK NUMERAL SIGN +0375 ; [*04C6.0020.0002] # GREEK LOWER NUMERAL SIGN +037E ; [*023A.0020.0002] # GREEK QUESTION MARK +0384 ; [*04B5.0020.0002] # GREEK TONOS +0385 ; [*04BB.0020.0002][.0000.0024.0002] # GREEK DIALYTIKA TONOS +0387 ; [*0293.0020.0002] # GREEK ANO TELEIA +03F6 ; [*0661.0020.0002] # GREEK REVERSED LUNATE EPSILON SYMBOL +0482 ; [*052B.0020.0002] # CYRILLIC THOUSANDS SIGN 0488 ; [.0000.0000.0000] # COMBINING CYRILLIC HUNDRED THOUSANDS SIGN 0489 ; [.0000.0000.0000] # COMBINING CYRILLIC MILLIONS SIGN -055A ; [*03D0.0020.0002] # ARMENIAN APOSTROPHE -055B ; [*03D1.0020.0002] # ARMENIAN EMPHASIS MARK -055C ; [*0263.0020.0002] # ARMENIAN EXCLAMATION MARK -055D ; [*0226.0020.0002] # ARMENIAN COMMA -055E ; [*026A.0020.0002] # ARMENIAN QUESTION MARK -055F ; [*03D2.0020.0002] # ARMENIAN ABBREVIATION MARK -0589 ; [*023B.0020.0002] # ARMENIAN FULL STOP +055A ; [*03E4.0020.0002] # ARMENIAN APOSTROPHE +055B ; [*03E5.0020.0002] # ARMENIAN EMPHASIS MARK +055C ; [*0269.0020.0002] # ARMENIAN EXCLAMATION MARK +055D ; [*022A.0020.0002] # ARMENIAN COMMA +055E ; [*0270.0020.0002] # ARMENIAN QUESTION MARK +055F ; [*03E6.0020.0002] # ARMENIAN ABBREVIATION MARK +0589 ; [*0241.0020.0002] # ARMENIAN FULL STOP 058A ; [*020E.0020.0002] # ARMENIAN HYPHEN -058D ; [*050E.0020.0002] # RIGHT-FACING ARMENIAN ETERNITY SIGN -058E ; [*050F.0020.0002] # LEFT-FACING ARMENIAN ETERNITY SIGN +058D ; [*052C.0020.0002] # RIGHT-FACING ARMENIAN ETERNITY SIGN +058E ; [*052D.0020.0002] # LEFT-FACING ARMENIAN ETERNITY SIGN 0591 ; [.0000.0000.0000] # HEBREW ACCENT ETNAHTA 0592 ; [.0000.0000.0000] # HEBREW ACCENT SEGOL 0593 ; [.0000.0000.0000] # HEBREW ACCENT SHALSHELET @@ -644,29 +655,29 @@ 05AE ; [.0000.0000.0000] # HEBREW ACCENT ZINOR 05AF ; [.0000.0000.0000] # HEBREW MARK MASORA CIRCLE 05BD ; [.0000.0000.0000] # HEBREW POINT METEG -05BE ; [*03D3.0020.0002] # HEBREW PUNCTUATION MAQAF -05C0 ; [*03D4.0020.0002] # HEBREW PUNCTUATION PASEQ -05C3 ; [*03D5.0020.0002] # HEBREW PUNCTUATION SOF PASUQ +05BE ; [*03E7.0020.0002] # HEBREW PUNCTUATION MAQAF +05C0 ; [*03E8.0020.0002] # HEBREW PUNCTUATION PASEQ +05C3 ; [*03E9.0020.0002] # HEBREW PUNCTUATION SOF PASUQ 05C4 ; [.0000.0000.0000] # HEBREW MARK UPPER DOT 05C5 ; [.0000.0000.0000] # HEBREW MARK LOWER DOT -05C6 ; [*03D6.0020.0002] # HEBREW PUNCTUATION NUN HAFUKHA -05F3 ; [*03D7.0020.0002] # HEBREW PUNCTUATION GERESH -05F4 ; [*03D8.0020.0002] # HEBREW PUNCTUATION GERSHAYIM +05C6 ; [*03EA.0020.0002] # HEBREW PUNCTUATION NUN HAFUKHA +05F3 ; [*03EB.0020.0002] # HEBREW PUNCTUATION GERESH +05F4 ; [*03EC.0020.0002] # HEBREW PUNCTUATION GERSHAYIM 0600 ; [.0000.0000.0000] # ARABIC NUMBER SIGN 0601 ; [.0000.0000.0000] # ARABIC SIGN SANAH 0602 ; [.0000.0000.0000] # ARABIC FOOTNOTE MARKER 0603 ; [.0000.0000.0000] # ARABIC SIGN SAFHA 0604 ; [.0000.0000.0000] # ARABIC SIGN SAMVAT 0605 ; [.0000.0000.0000] # ARABIC NUMBER MARK ABOVE -0606 ; [*0643.0020.0002] # ARABIC-INDIC CUBE ROOT -0607 ; [*0645.0020.0002] # ARABIC-INDIC FOURTH ROOT -0608 ; [*0510.0020.0002] # ARABIC RAY -0609 ; [*039D.0020.0002] # ARABIC-INDIC PER MILLE SIGN -060A ; [*039F.0020.0002] # ARABIC-INDIC PER TEN THOUSAND SIGN -060C ; [*0227.0020.0002] # ARABIC COMMA -060D ; [*0228.0020.0002] # ARABIC DATE SEPARATOR -060E ; [*0513.0020.0002] # ARABIC POETIC VERSE SIGN -060F ; [*0514.0020.0002] # ARABIC SIGN MISRA +0606 ; [*067D.0020.0002] # ARABIC-INDIC CUBE ROOT +0607 ; [*067F.0020.0002] # ARABIC-INDIC FOURTH ROOT +0608 ; [*052E.0020.0002] # ARABIC RAY +0609 ; [*03B0.0020.0002] # ARABIC-INDIC PER MILLE SIGN +060A ; [*03B2.0020.0002] # ARABIC-INDIC PER TEN THOUSAND SIGN +060C ; [*022B.0020.0002] # ARABIC COMMA +060D ; [*022C.0020.0002] # ARABIC DATE SEPARATOR +060E ; [*0531.0020.0002] # ARABIC POETIC VERSE SIGN +060F ; [*0532.0020.0002] # ARABIC SIGN MISRA 0610 ; [.0000.0000.0000] # ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM 0611 ; [.0000.0000.0000] # ARABIC SIGN ALAYHE ASSALLAM 0612 ; [.0000.0000.0000] # ARABIC SIGN RAHMATULLAH ALAYHE @@ -678,15 +689,15 @@ 0618 ; [.0000.0000.0000] # ARABIC SMALL FATHA 0619 ; [.0000.0000.0000] # ARABIC SMALL DAMMA 061A ; [.0000.0000.0000] # ARABIC SMALL KASRA -061B ; [*0235.0020.0002] # ARABIC SEMICOLON -061E ; [*023C.0020.0002] # ARABIC TRIPLE DOT PUNCTUATION MARK -061F ; [*026B.0020.0002] # ARABIC QUESTION MARK +061B ; [*023B.0020.0002] # ARABIC SEMICOLON +061E ; [*0242.0020.0002] # ARABIC TRIPLE DOT PUNCTUATION MARK +061F ; [*0271.0020.0002] # ARABIC QUESTION MARK 0640 ; [.0000.0000.0000] # ARABIC TATWEEL -066A ; [*039B.0020.0002] # ARABIC PERCENT SIGN -066B ; [*0229.0020.0002] # ARABIC DECIMAL SEPARATOR -066C ; [*022A.0020.0002] # ARABIC THOUSANDS SEPARATOR -066D ; [*0393.0020.0002] # ARABIC FIVE POINTED STAR -06D4 ; [*027A.0020.0002] # ARABIC FULL STOP +066A ; [*03AE.0020.0002] # ARABIC PERCENT SIGN +066B ; [*022D.0020.0002] # ARABIC DECIMAL SEPARATOR +066C ; [*022E.0020.0002] # ARABIC THOUSANDS SEPARATOR +066D ; [*03A4.0020.0002] # ARABIC FIVE POINTED STAR +06D4 ; [*0280.0020.0002] # ARABIC FULL STOP 06D6 ; [.0000.0000.0000] # ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA 06D7 ; [.0000.0000.0000] # ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA 06D8 ; [.0000.0000.0000] # ARABIC SMALL HIGH MEEM INITIAL FORM @@ -695,7 +706,7 @@ 06DB ; [.0000.0000.0000] # ARABIC SMALL HIGH THREE DOTS 06DC ; [.0000.0000.0000] # ARABIC SMALL HIGH SEEN 06DD ; [.0000.0000.0000] # ARABIC END OF AYAH -06DE ; [*0515.0020.0002] # ARABIC START OF RUB EL HIZB +06DE ; [*0533.0020.0002] # ARABIC START OF RUB EL HIZB 06DF ; [.0000.0000.0000] # ARABIC SMALL HIGH ROUNDED ZERO 06E0 ; [.0000.0000.0000] # ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO 06E1 ; [.0000.0000.0000] # ARABIC SMALL HIGH DOTLESS HEAD OF KHAH @@ -704,25 +715,26 @@ 06E4 ; [.0000.0000.0000] # ARABIC SMALL HIGH MADDA 06E7 ; [.0000.0000.0000] # ARABIC SMALL HIGH YEH 06E8 ; [.0000.0000.0000] # ARABIC SMALL HIGH NOON -06E9 ; [*0516.0020.0002] # ARABIC PLACE OF SAJDAH +06E9 ; [*0534.0020.0002] # ARABIC PLACE OF SAJDAH 06EA ; [.0000.0000.0000] # ARABIC EMPTY CENTRE LOW STOP 06EB ; [.0000.0000.0000] # ARABIC EMPTY CENTRE HIGH STOP 06EC ; [.0000.0000.0000] # ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE 06ED ; [.0000.0000.0000] # ARABIC SMALL LOW MEEM -0700 ; [*02C5.0020.0002] # SYRIAC END OF PARAGRAPH -0701 ; [*027B.0020.0002] # SYRIAC SUPRALINEAR FULL STOP -0702 ; [*027C.0020.0002] # SYRIAC SUBLINEAR FULL STOP -0703 ; [*023D.0020.0002] # SYRIAC SUPRALINEAR COLON -0704 ; [*023E.0020.0002] # SYRIAC SUBLINEAR COLON -0705 ; [*023F.0020.0002] # SYRIAC HORIZONTAL COLON -0706 ; [*0240.0020.0002] # SYRIAC COLON SKEWED LEFT -0707 ; [*0241.0020.0002] # SYRIAC COLON SKEWED RIGHT -0708 ; [*0242.0020.0002] # SYRIAC SUPRALINEAR COLON SKEWED LEFT -0709 ; [*026C.0020.0002] # SYRIAC SUBLINEAR COLON SKEWED RIGHT -070A ; [*03D9.0020.0002] # SYRIAC CONTRACTION -070B ; [*03DA.0020.0002] # SYRIAC HARKLEAN OBELUS -070C ; [*03DB.0020.0002] # SYRIAC HARKLEAN METOBELUS -070D ; [*03DC.0020.0002] # SYRIAC HARKLEAN ASTERISCUS +0700 ; [*02CD.0020.0002] # SYRIAC END OF PARAGRAPH +0701 ; [*0281.0020.0002] # SYRIAC SUPRALINEAR FULL STOP +0702 ; [*0282.0020.0002] # SYRIAC SUBLINEAR FULL STOP +0703 ; [*0243.0020.0002] # SYRIAC SUPRALINEAR COLON +0704 ; [*0244.0020.0002] # SYRIAC SUBLINEAR COLON +0705 ; [*0245.0020.0002] # SYRIAC HORIZONTAL COLON +0706 ; [*0246.0020.0002] # SYRIAC COLON SKEWED LEFT +0707 ; [*0247.0020.0002] # SYRIAC COLON SKEWED RIGHT +0708 ; [*0248.0020.0002] # SYRIAC SUPRALINEAR COLON SKEWED LEFT +0709 ; [*0272.0020.0002] # SYRIAC SUBLINEAR COLON SKEWED RIGHT +070A ; [*03ED.0020.0002] # SYRIAC CONTRACTION +070B ; [*03EE.0020.0002] # SYRIAC HARKLEAN OBELUS +070C ; [*03EF.0020.0002] # SYRIAC HARKLEAN METOBELUS +070D ; [*03F0.0020.0002] # SYRIAC HARKLEAN ASTERISCUS +070F ; [.0000.0000.0000] # SYRIAC ABBREVIATION MARK 0740 ; [.0000.0000.0000] # SYRIAC FEMININE DOT 0743 ; [.0000.0000.0000] # SYRIAC TWO VERTICAL DOTS ABOVE 0744 ; [.0000.0000.0000] # SYRIAC TWO VERTICAL DOTS BELOW @@ -730,27 +742,28 @@ 0748 ; [.0000.0000.0000] # SYRIAC OBLIQUE LINE BELOW 0749 ; [.0000.0000.0000] # SYRIAC MUSIC 074A ; [.0000.0000.0000] # SYRIAC BARREKH -07F6 ; [*0528.0020.0002] # NKO SYMBOL OO DENNEN -07F7 ; [*02C6.0020.0002] # NKO SYMBOL GBAKURUNEN -07F8 ; [*022B.0020.0002] # NKO COMMA -07F9 ; [*0264.0020.0002] # NKO EXCLAMATION MARK +07F6 ; [*0546.0020.0002] # NKO SYMBOL OO DENNEN +07F7 ; [*02CE.0020.0002] # NKO SYMBOL GBAKURUNEN +07F8 ; [*022F.0020.0002] # NKO COMMA +07F9 ; [*026A.0020.0002] # NKO EXCLAMATION MARK 07FA ; [.0000.0000.0000] # NKO LAJANYALAN -0830 ; [*0243.0020.0002] # SAMARITAN PUNCTUATION NEQUDAA -0831 ; [*0244.0020.0002] # SAMARITAN PUNCTUATION AFSAAQ -0832 ; [*0245.0020.0002] # SAMARITAN PUNCTUATION ANGED -0833 ; [*0246.0020.0002] # SAMARITAN PUNCTUATION BAU -0834 ; [*0247.0020.0002] # SAMARITAN PUNCTUATION ATMAAU -0835 ; [*0248.0020.0002] # SAMARITAN PUNCTUATION SHIYYAALAA -0836 ; [*0249.0020.0002] # SAMARITAN ABBREVIATION MARK -0837 ; [*024A.0020.0002] # SAMARITAN PUNCTUATION MELODIC QITSA -0838 ; [*024B.0020.0002] # SAMARITAN PUNCTUATION ZIQAA -0839 ; [*024C.0020.0002] # SAMARITAN PUNCTUATION QITSA -083A ; [*024D.0020.0002] # SAMARITAN PUNCTUATION ZAEF -083B ; [*024E.0020.0002] # SAMARITAN PUNCTUATION TURU -083C ; [*024F.0020.0002] # SAMARITAN PUNCTUATION ARKAANU -083D ; [*0250.0020.0002] # SAMARITAN PUNCTUATION SOF MASHFAAT -083E ; [*0251.0020.0002] # SAMARITAN PUNCTUATION ANNAAU -085E ; [*03DD.0020.0002] # MANDAIC PUNCTUATION +0830 ; [*0249.0020.0002] # SAMARITAN PUNCTUATION NEQUDAA +0831 ; [*024A.0020.0002] # SAMARITAN PUNCTUATION AFSAAQ +0832 ; [*024B.0020.0002] # SAMARITAN PUNCTUATION ANGED +0833 ; [*024C.0020.0002] # SAMARITAN PUNCTUATION BAU +0834 ; [*024D.0020.0002] # SAMARITAN PUNCTUATION ATMAAU +0835 ; [*024E.0020.0002] # SAMARITAN PUNCTUATION SHIYYAALAA +0836 ; [*024F.0020.0002] # SAMARITAN ABBREVIATION MARK +0837 ; [*0250.0020.0002] # SAMARITAN PUNCTUATION MELODIC QITSA +0838 ; [*0251.0020.0002] # SAMARITAN PUNCTUATION ZIQAA +0839 ; [*0252.0020.0002] # SAMARITAN PUNCTUATION QITSA +083A ; [*0253.0020.0002] # SAMARITAN PUNCTUATION ZAEF +083B ; [*0254.0020.0002] # SAMARITAN PUNCTUATION TURU +083C ; [*0255.0020.0002] # SAMARITAN PUNCTUATION ARKAANU +083D ; [*0256.0020.0002] # SAMARITAN PUNCTUATION SOF MASHFAAT +083E ; [*0257.0020.0002] # SAMARITAN PUNCTUATION ANNAAU +085E ; [*03F1.0020.0002] # MANDAIC PUNCTUATION +08D3 ; [.0000.0000.0000] # ARABIC SMALL LOW WAW 08D4 ; [.0000.0000.0000] # ARABIC SMALL HIGH WORD AR-RUB 08D5 ; [.0000.0000.0000] # ARABIC SMALL HIGH SAD 08D6 ; [.0000.0000.0000] # ARABIC SMALL HIGH AIN @@ -765,6 +778,7 @@ 08DF ; [.0000.0000.0000] # ARABIC SMALL HIGH WORD WAQFA 08E0 ; [.0000.0000.0000] # ARABIC SMALL HIGH FOOTNOTE MARKER 08E1 ; [.0000.0000.0000] # ARABIC SMALL HIGH SIGN SAFHA +08E2 ; [.0000.0000.0000] # ARABIC DISPUTED END OF AYAH 08EA ; [.0000.0000.0000] # ARABIC TONE ONE DOT ABOVE 08EB ; [.0000.0000.0000] # ARABIC TONE TWO DOTS ABOVE 08EC ; [.0000.0000.0000] # ARABIC TONE LOOP ABOVE @@ -774,271 +788,274 @@ 08F3 ; [.0000.0000.0000] # ARABIC SMALL HIGH WAW 0951 ; [.0000.0000.0000] # DEVANAGARI STRESS SIGN UDATTA 0952 ; [.0000.0000.0000] # DEVANAGARI STRESS SIGN ANUDATTA -0964 ; [*028F.0020.0002] # DEVANAGARI DANDA -0965 ; [*0290.0020.0002] # DEVANAGARI DOUBLE DANDA -0970 ; [*03EC.0020.0002] # DEVANAGARI ABBREVIATION SIGN -09F4 ; [*1AFA.0020.0002] # BENGALI CURRENCY NUMERATOR ONE -09F5 ; [*1AFB.0020.0002] # BENGALI CURRENCY NUMERATOR TWO -09F6 ; [*1AFC.0020.0002] # BENGALI CURRENCY NUMERATOR THREE -09F7 ; [*1AFD.0020.0002] # BENGALI CURRENCY NUMERATOR FOUR -09F8 ; [*1AFE.0020.0002] # BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR -09F9 ; [*1AFF.0020.0002] # BENGALI CURRENCY DENOMINATOR SIXTEEN -09FA ; [*0529.0020.0002] # BENGALI ISSHAR -09FD ; [*03F1.0020.0002] # BENGALI ABBREVIATION SIGN -0AF0 ; [*03F2.0020.0002] # GUJARATI ABBREVIATION SIGN -0B70 ; [*052A.0020.0002] # ORIYA ISSHAR -0B72 ; [*1B00.0020.0002] # ORIYA FRACTION ONE QUARTER -0B73 ; [*1B01.0020.0002] # ORIYA FRACTION ONE HALF -0B74 ; [*1B02.0020.0002] # ORIYA FRACTION THREE QUARTERS -0B75 ; [*1B03.0020.0002] # ORIYA FRACTION ONE SIXTEENTH -0B76 ; [*1B04.0020.0002] # ORIYA FRACTION ONE EIGHTH -0B77 ; [*1B05.0020.0002] # ORIYA FRACTION THREE SIXTEENTHS -0BF0 ; [*1B0C.0020.0002] # TAMIL NUMBER TEN -0BF1 ; [*1B0D.0020.0002] # TAMIL NUMBER ONE HUNDRED -0BF2 ; [*1B0E.0020.0002] # TAMIL NUMBER ONE THOUSAND -0BF3 ; [*052B.0020.0002] # TAMIL DAY SIGN -0BF4 ; [*052C.0020.0002] # TAMIL MONTH SIGN -0BF5 ; [*052D.0020.0002] # TAMIL YEAR SIGN -0BF6 ; [*052E.0020.0002] # TAMIL DEBIT SIGN -0BF7 ; [*052F.0020.0002] # TAMIL CREDIT SIGN -0BF8 ; [*0530.0020.0002] # TAMIL AS ABOVE SIGN -0BFA ; [*0531.0020.0002] # TAMIL NUMBER SIGN -0C7F ; [*0532.0020.0002] # TELUGU SIGN TUUMU -0D4F ; [*0533.0020.0002] # MALAYALAM SIGN PARA -0D58 ; [*1B0F.0020.0002] # MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH -0D59 ; [*1B10.0020.0002] # MALAYALAM FRACTION ONE FORTIETH -0D5A ; [*1B11.0020.0002] # MALAYALAM FRACTION THREE EIGHTIETHS -0D5B ; [*1B12.0020.0002] # MALAYALAM FRACTION ONE TWENTIETH -0D5C ; [*1B13.0020.0002] # MALAYALAM FRACTION ONE TENTH -0D5D ; [*1B14.0020.0002] # MALAYALAM FRACTION THREE TWENTIETHS -0D5E ; [*1B15.0020.0002] # MALAYALAM FRACTION ONE FIFTH -0D70 ; [*1B16.0020.0002] # MALAYALAM NUMBER TEN -0D71 ; [*1B17.0020.0002] # MALAYALAM NUMBER ONE HUNDRED -0D72 ; [*1B18.0020.0002] # MALAYALAM NUMBER ONE THOUSAND -0D73 ; [*1B19.0020.0002] # MALAYALAM FRACTION ONE QUARTER -0D74 ; [*1B1A.0020.0002] # MALAYALAM FRACTION ONE HALF -0D75 ; [*1B1B.0020.0002] # MALAYALAM FRACTION THREE QUARTERS -0D76 ; [*1B1C.0020.0002] # MALAYALAM FRACTION ONE SIXTEENTH -0D77 ; [*1B1D.0020.0002] # MALAYALAM FRACTION ONE EIGHTH -0D78 ; [*1B1E.0020.0002] # MALAYALAM FRACTION THREE SIXTEENTHS -0D79 ; [*0534.0020.0002] # MALAYALAM DATE MARK -0DF4 ; [*03F3.0020.0002] # SINHALA PUNCTUATION KUNDDALIYA -0E4F ; [*03F4.0020.0002] # THAI CHARACTER FONGMAN -0E5A ; [*03F5.0020.0002] # THAI CHARACTER ANGKHANKHU -0E5B ; [*03F6.0020.0002] # THAI CHARACTER KHOMUT -0F01 ; [*053C.0020.0002] # TIBETAN MARK GTER YIG MGO TRUNCATED A -0F02 ; [*053D.0020.0002] # TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA -0F03 ; [*053E.0020.0002] # TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA -0F04 ; [*03F9.0020.0002] # TIBETAN MARK INITIAL YIG MGO MDUN MA -0F05 ; [*03FA.0020.0002] # TIBETAN MARK CLOSING YIG MGO SGAB MA -0F06 ; [*03FB.0020.0002] # TIBETAN MARK CARET YIG MGO PHUR SHAD MA -0F07 ; [*03FC.0020.0002] # TIBETAN MARK YIG MGO TSHEG SHAD MA -0F08 ; [*03FD.0020.0002] # TIBETAN MARK SBRUL SHAD -0F09 ; [*03FE.0020.0002] # TIBETAN MARK BSKUR YIG MGO -0F0A ; [*03FF.0020.0002] # TIBETAN MARK BKA- SHOG YIG MGO -0F0B ; [*0402.0020.0002] # TIBETAN MARK INTERSYLLABIC TSHEG -0F0C ; [*0402.0020.001B] # TIBETAN MARK DELIMITER TSHEG BSTAR -0F0D ; [*0403.0020.0002] # TIBETAN MARK SHAD -0F0E ; [*0404.0020.0002] # TIBETAN MARK NYIS SHAD -0F0F ; [*0405.0020.0002] # TIBETAN MARK TSHEG SHAD -0F10 ; [*0406.0020.0002] # TIBETAN MARK NYIS TSHEG SHAD -0F11 ; [*0407.0020.0002] # TIBETAN MARK RIN CHEN SPUNGS SHAD -0F12 ; [*0408.0020.0002] # TIBETAN MARK RGYA GRAM SHAD -0F13 ; [*053F.0020.0002] # TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN -0F14 ; [*0259.0020.0002] # TIBETAN MARK GTER TSHEG -0F15 ; [*0540.0020.0002] # TIBETAN LOGOTYPE SIGN CHAD RTAGS -0F16 ; [*0541.0020.0002] # TIBETAN LOGOTYPE SIGN LHAG RTAGS -0F17 ; [*0542.0020.0002] # TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS +0964 ; [*0296.0020.0002] # DEVANAGARI DANDA +0965 ; [*0297.0020.0002] # DEVANAGARI DOUBLE DANDA +0970 ; [*0400.0020.0002] # DEVANAGARI ABBREVIATION SIGN +09F4 ; [*1D56.0020.0002] # BENGALI CURRENCY NUMERATOR ONE +09F5 ; [*1D57.0020.0002] # BENGALI CURRENCY NUMERATOR TWO +09F6 ; [*1D58.0020.0002] # BENGALI CURRENCY NUMERATOR THREE +09F7 ; [*1D59.0020.0002] # BENGALI CURRENCY NUMERATOR FOUR +09F8 ; [*1D5A.0020.0002] # BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR +09F9 ; [*1D5B.0020.0002] # BENGALI CURRENCY DENOMINATOR SIXTEEN +09FA ; [*0547.0020.0002] # BENGALI ISSHAR +09FD ; [*0405.0020.0002] # BENGALI ABBREVIATION SIGN +0A76 ; [*0406.0020.0002] # GURMUKHI ABBREVIATION SIGN +0AF0 ; [*0407.0020.0002] # GUJARATI ABBREVIATION SIGN +0B70 ; [*0548.0020.0002] # ORIYA ISSHAR +0B72 ; [*1D5C.0020.0002] # ORIYA FRACTION ONE QUARTER +0B73 ; [*1D5D.0020.0002] # ORIYA FRACTION ONE HALF +0B74 ; [*1D5E.0020.0002] # ORIYA FRACTION THREE QUARTERS +0B75 ; [*1D5F.0020.0002] # ORIYA FRACTION ONE SIXTEENTH +0B76 ; [*1D60.0020.0002] # ORIYA FRACTION ONE EIGHTH +0B77 ; [*1D61.0020.0002] # ORIYA FRACTION THREE SIXTEENTHS +0BF0 ; [*1D68.0020.0002] # TAMIL NUMBER TEN +0BF1 ; [*1D69.0020.0002] # TAMIL NUMBER ONE HUNDRED +0BF2 ; [*1D6A.0020.0002] # TAMIL NUMBER ONE THOUSAND +0BF3 ; [*0549.0020.0002] # TAMIL DAY SIGN +0BF4 ; [*054A.0020.0002] # TAMIL MONTH SIGN +0BF5 ; [*054B.0020.0002] # TAMIL YEAR SIGN +0BF6 ; [*054C.0020.0002] # TAMIL DEBIT SIGN +0BF7 ; [*054D.0020.0002] # TAMIL CREDIT SIGN +0BF8 ; [*054E.0020.0002] # TAMIL AS ABOVE SIGN +0BFA ; [*054F.0020.0002] # TAMIL NUMBER SIGN +0C77 ; [*0408.0020.0002] # TELUGU SIGN SIDDHAM +0C7F ; [*0569.0020.0002] # TELUGU SIGN TUUMU +0C84 ; [*0409.0020.0002] # KANNADA SIGN SIDDHAM +0D4F ; [*056A.0020.0002] # MALAYALAM SIGN PARA +0D58 ; [*1D80.0020.0002] # MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH +0D59 ; [*1D81.0020.0002] # MALAYALAM FRACTION ONE FORTIETH +0D5A ; [*1D82.0020.0002] # MALAYALAM FRACTION THREE EIGHTIETHS +0D5B ; [*1D83.0020.0002] # MALAYALAM FRACTION ONE TWENTIETH +0D5C ; [*1D84.0020.0002] # MALAYALAM FRACTION ONE TENTH +0D5D ; [*1D85.0020.0002] # MALAYALAM FRACTION THREE TWENTIETHS +0D5E ; [*1D86.0020.0002] # MALAYALAM FRACTION ONE FIFTH +0D70 ; [*1D87.0020.0002] # MALAYALAM NUMBER TEN +0D71 ; [*1D88.0020.0002] # MALAYALAM NUMBER ONE HUNDRED +0D72 ; [*1D89.0020.0002] # MALAYALAM NUMBER ONE THOUSAND +0D73 ; [*1D8A.0020.0002] # MALAYALAM FRACTION ONE QUARTER +0D74 ; [*1D8B.0020.0002] # MALAYALAM FRACTION ONE HALF +0D75 ; [*1D8C.0020.0002] # MALAYALAM FRACTION THREE QUARTERS +0D76 ; [*1D8D.0020.0002] # MALAYALAM FRACTION ONE SIXTEENTH +0D77 ; [*1D8E.0020.0002] # MALAYALAM FRACTION ONE EIGHTH +0D78 ; [*1D8F.0020.0002] # MALAYALAM FRACTION THREE SIXTEENTHS +0D79 ; [*056B.0020.0002] # MALAYALAM DATE MARK +0DF4 ; [*040A.0020.0002] # SINHALA PUNCTUATION KUNDDALIYA +0E4F ; [*040B.0020.0002] # THAI CHARACTER FONGMAN +0E5A ; [*040C.0020.0002] # THAI CHARACTER ANGKHANKHU +0E5B ; [*040D.0020.0002] # THAI CHARACTER KHOMUT +0F01 ; [*0573.0020.0002] # TIBETAN MARK GTER YIG MGO TRUNCATED A +0F02 ; [*0574.0020.0002] # TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA +0F03 ; [*0575.0020.0002] # TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA +0F04 ; [*0410.0020.0002] # TIBETAN MARK INITIAL YIG MGO MDUN MA +0F05 ; [*0411.0020.0002] # TIBETAN MARK CLOSING YIG MGO SGAB MA +0F06 ; [*0412.0020.0002] # TIBETAN MARK CARET YIG MGO PHUR SHAD MA +0F07 ; [*0413.0020.0002] # TIBETAN MARK YIG MGO TSHEG SHAD MA +0F08 ; [*0414.0020.0002] # TIBETAN MARK SBRUL SHAD +0F09 ; [*0415.0020.0002] # TIBETAN MARK BSKUR YIG MGO +0F0A ; [*0416.0020.0002] # TIBETAN MARK BKA- SHOG YIG MGO +0F0B ; [*0419.0020.0002] # TIBETAN MARK INTERSYLLABIC TSHEG +0F0C ; [*0419.0020.001B] # TIBETAN MARK DELIMITER TSHEG BSTAR +0F0D ; [*041A.0020.0002] # TIBETAN MARK SHAD +0F0E ; [*041B.0020.0002] # TIBETAN MARK NYIS SHAD +0F0F ; [*041C.0020.0002] # TIBETAN MARK TSHEG SHAD +0F10 ; [*041D.0020.0002] # TIBETAN MARK NYIS TSHEG SHAD +0F11 ; [*041E.0020.0002] # TIBETAN MARK RIN CHEN SPUNGS SHAD +0F12 ; [*041F.0020.0002] # TIBETAN MARK RGYA GRAM SHAD +0F13 ; [*0576.0020.0002] # TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN +0F14 ; [*025F.0020.0002] # TIBETAN MARK GTER TSHEG +0F15 ; [*0577.0020.0002] # TIBETAN LOGOTYPE SIGN CHAD RTAGS +0F16 ; [*0578.0020.0002] # TIBETAN LOGOTYPE SIGN LHAG RTAGS +0F17 ; [*0579.0020.0002] # TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS 0F18 ; [.0000.0000.0000] # TIBETAN ASTROLOGICAL SIGN -KHYUD PA 0F19 ; [.0000.0000.0000] # TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS -0F1A ; [*0543.0020.0002] # TIBETAN SIGN RDEL DKAR GCIG -0F1B ; [*0544.0020.0002] # TIBETAN SIGN RDEL DKAR GNYIS -0F1C ; [*0545.0020.0002] # TIBETAN SIGN RDEL DKAR GSUM -0F1D ; [*0546.0020.0002] # TIBETAN SIGN RDEL NAG GCIG -0F1E ; [*0547.0020.0002] # TIBETAN SIGN RDEL NAG GNYIS -0F1F ; [*0548.0020.0002] # TIBETAN SIGN RDEL DKAR RDEL NAG -0F34 ; [*0549.0020.0002] # TIBETAN MARK BSDUS RTAGS +0F1A ; [*057A.0020.0002] # TIBETAN SIGN RDEL DKAR GCIG +0F1B ; [*057B.0020.0002] # TIBETAN SIGN RDEL DKAR GNYIS +0F1C ; [*057C.0020.0002] # TIBETAN SIGN RDEL DKAR GSUM +0F1D ; [*057D.0020.0002] # TIBETAN SIGN RDEL NAG GCIG +0F1E ; [*057E.0020.0002] # TIBETAN SIGN RDEL NAG GNYIS +0F1F ; [*057F.0020.0002] # TIBETAN SIGN RDEL DKAR RDEL NAG +0F34 ; [*0580.0020.0002] # TIBETAN MARK BSDUS RTAGS 0F35 ; [.0000.0000.0000] # TIBETAN MARK NGAS BZUNG NYI ZLA -0F36 ; [*054A.0020.0002] # TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN +0F36 ; [*0581.0020.0002] # TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN 0F37 ; [.0000.0000.0000] # TIBETAN MARK NGAS BZUNG SGOR RTAGS -0F38 ; [*054B.0020.0002] # TIBETAN MARK CHE MGO -0F3A ; [*031E.0020.0002] # TIBETAN MARK GUG RTAGS GYON -0F3B ; [*031F.0020.0002] # TIBETAN MARK GUG RTAGS GYAS -0F3C ; [*0320.0020.0002] # TIBETAN MARK ANG KHANG GYON -0F3D ; [*0321.0020.0002] # TIBETAN MARK ANG KHANG GYAS +0F38 ; [*0582.0020.0002] # TIBETAN MARK CHE MGO +0F3A ; [*032E.0020.0002] # TIBETAN MARK GUG RTAGS GYON +0F3B ; [*032F.0020.0002] # TIBETAN MARK GUG RTAGS GYAS +0F3C ; [*0330.0020.0002] # TIBETAN MARK ANG KHANG GYON +0F3D ; [*0331.0020.0002] # TIBETAN MARK ANG KHANG GYAS 0F3E ; [.0000.0000.0000] # TIBETAN SIGN YAR TSHES 0F3F ; [.0000.0000.0000] # TIBETAN SIGN MAR TSHES 0F82 ; [.0000.0000.0000] # TIBETAN SIGN NYI ZLA NAA DA 0F83 ; [.0000.0000.0000] # TIBETAN SIGN SNA LDAN -0F85 ; [*0409.0020.0002] # TIBETAN MARK PALUTA +0F85 ; [*0420.0020.0002] # TIBETAN MARK PALUTA 0F86 ; [.0000.0000.0000] # TIBETAN SIGN LCI RTAGS 0F87 ; [.0000.0000.0000] # TIBETAN SIGN YANG RTAGS -0FBE ; [*054C.0020.0002] # TIBETAN KU RU KHA -0FBF ; [*054D.0020.0002] # TIBETAN KU RU KHA BZHI MIG CAN -0FC0 ; [*054E.0020.0002] # TIBETAN CANTILLATION SIGN HEAVY BEAT -0FC1 ; [*054F.0020.0002] # TIBETAN CANTILLATION SIGN LIGHT BEAT -0FC2 ; [*0550.0020.0002] # TIBETAN CANTILLATION SIGN CANG TE-U -0FC3 ; [*0551.0020.0002] # TIBETAN CANTILLATION SIGN SBUB -CHAL -0FC4 ; [*0552.0020.0002] # TIBETAN SYMBOL DRIL BU -0FC5 ; [*0553.0020.0002] # TIBETAN SYMBOL RDO RJE +0FBE ; [*0583.0020.0002] # TIBETAN KU RU KHA +0FBF ; [*0584.0020.0002] # TIBETAN KU RU KHA BZHI MIG CAN +0FC0 ; [*0585.0020.0002] # TIBETAN CANTILLATION SIGN HEAVY BEAT +0FC1 ; [*0586.0020.0002] # TIBETAN CANTILLATION SIGN LIGHT BEAT +0FC2 ; [*0587.0020.0002] # TIBETAN CANTILLATION SIGN CANG TE-U +0FC3 ; [*0588.0020.0002] # TIBETAN CANTILLATION SIGN SBUB -CHAL +0FC4 ; [*0589.0020.0002] # TIBETAN SYMBOL DRIL BU +0FC5 ; [*058A.0020.0002] # TIBETAN SYMBOL RDO RJE 0FC6 ; [.0000.0000.0000] # TIBETAN SYMBOL PADMA GDAN -0FC7 ; [*0554.0020.0002] # TIBETAN SYMBOL RDO RJE RGYA GRAM -0FC8 ; [*0555.0020.0002] # TIBETAN SYMBOL PHUR PA -0FC9 ; [*0556.0020.0002] # TIBETAN SYMBOL NOR BU -0FCA ; [*0557.0020.0002] # TIBETAN SYMBOL NOR BU NYIS -KHYIL -0FCB ; [*0558.0020.0002] # TIBETAN SYMBOL NOR BU GSUM -KHYIL -0FCC ; [*0559.0020.0002] # TIBETAN SYMBOL NOR BU BZHI -KHYIL -0FCE ; [*055A.0020.0002] # TIBETAN SIGN RDEL NAG RDEL DKAR -0FCF ; [*055B.0020.0002] # TIBETAN SIGN RDEL NAG GSUM -0FD0 ; [*0400.0020.0002] # TIBETAN MARK BSKA- SHOG GI MGO RGYAN -0FD1 ; [*0401.0020.0002] # TIBETAN MARK MNYAM YIG GI MGO RGYAN -0FD2 ; [*040A.0020.0002] # TIBETAN MARK NYIS TSHEG -0FD3 ; [*040B.0020.0002] # TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA -0FD4 ; [*040C.0020.0002] # TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA -0FD5 ; [*055C.0020.0002] # RIGHT-FACING SVASTI SIGN -0FD6 ; [*055D.0020.0002] # LEFT-FACING SVASTI SIGN -0FD7 ; [*055E.0020.0002] # RIGHT-FACING SVASTI SIGN WITH DOTS -0FD8 ; [*055F.0020.0002] # LEFT-FACING SVASTI SIGN WITH DOTS -0FD9 ; [*040D.0020.0002] # TIBETAN MARK LEADING MCHAN RTAGS -0FDA ; [*040E.0020.0002] # TIBETAN MARK TRAILING MCHAN RTAGS -104A ; [*029A.0020.0002] # MYANMAR SIGN LITTLE SECTION -104B ; [*029B.0020.0002] # MYANMAR SIGN SECTION -104C ; [*0424.0020.0002] # MYANMAR SYMBOL LOCATIVE -104D ; [*0425.0020.0002] # MYANMAR SYMBOL COMPLETED -104E ; [*0426.0020.0002] # MYANMAR SYMBOL AFOREMENTIONED -104F ; [*0427.0020.0002] # MYANMAR SYMBOL GENITIVE -109E ; [*0561.0020.0002] # MYANMAR SYMBOL SHAN ONE -109F ; [*0562.0020.0002] # MYANMAR SYMBOL SHAN EXCLAMATION -10FB ; [*02C7.0020.0002] # GEORGIAN PARAGRAPH SEPARATOR -1360 ; [*02C8.0020.0002] # ETHIOPIC SECTION MARK -1361 ; [*0252.0020.0002] # ETHIOPIC WORDSPACE -1362 ; [*027D.0020.0002] # ETHIOPIC FULL STOP -1363 ; [*0253.0020.0002] # ETHIOPIC COMMA -1364 ; [*0254.0020.0002] # ETHIOPIC SEMICOLON -1365 ; [*0255.0020.0002] # ETHIOPIC COLON -1366 ; [*0256.0020.0002] # ETHIOPIC PREFACE COLON -1367 ; [*026D.0020.0002] # ETHIOPIC QUESTION MARK -1368 ; [*02C9.0020.0002] # ETHIOPIC PARAGRAPH SEPARATOR -1372 ; [*1B1F.0020.0002] # ETHIOPIC NUMBER TEN -1373 ; [*1B20.0020.0002] # ETHIOPIC NUMBER TWENTY -1374 ; [*1B21.0020.0002] # ETHIOPIC NUMBER THIRTY -1375 ; [*1B22.0020.0002] # ETHIOPIC NUMBER FORTY -1376 ; [*1B23.0020.0002] # ETHIOPIC NUMBER FIFTY -1377 ; [*1B24.0020.0002] # ETHIOPIC NUMBER SIXTY -1378 ; [*1B25.0020.0002] # ETHIOPIC NUMBER SEVENTY -1379 ; [*1B26.0020.0002] # ETHIOPIC NUMBER EIGHTY -137A ; [*1B27.0020.0002] # ETHIOPIC NUMBER NINETY -137B ; [*1B28.0020.0002] # ETHIOPIC NUMBER HUNDRED -137C ; [*1B29.0020.0002] # ETHIOPIC NUMBER TEN THOUSAND -1390 ; [*04DC.0020.0002] # ETHIOPIC TONAL MARK YIZET -1391 ; [*04DD.0020.0002] # ETHIOPIC TONAL MARK DERET -1392 ; [*04DE.0020.0002] # ETHIOPIC TONAL MARK RIKRIK -1393 ; [*04DF.0020.0002] # ETHIOPIC TONAL MARK SHORT RIKRIK -1394 ; [*04E0.0020.0002] # ETHIOPIC TONAL MARK DIFAT -1395 ; [*04E1.0020.0002] # ETHIOPIC TONAL MARK KENAT -1396 ; [*04E2.0020.0002] # ETHIOPIC TONAL MARK CHIRET -1397 ; [*04E3.0020.0002] # ETHIOPIC TONAL MARK HIDET -1398 ; [*04E4.0020.0002] # ETHIOPIC TONAL MARK DERET-HIDET -1399 ; [*04E5.0020.0002] # ETHIOPIC TONAL MARK KURT +0FC7 ; [*058B.0020.0002] # TIBETAN SYMBOL RDO RJE RGYA GRAM +0FC8 ; [*058C.0020.0002] # TIBETAN SYMBOL PHUR PA +0FC9 ; [*058D.0020.0002] # TIBETAN SYMBOL NOR BU +0FCA ; [*058E.0020.0002] # TIBETAN SYMBOL NOR BU NYIS -KHYIL +0FCB ; [*058F.0020.0002] # TIBETAN SYMBOL NOR BU GSUM -KHYIL +0FCC ; [*0590.0020.0002] # TIBETAN SYMBOL NOR BU BZHI -KHYIL +0FCE ; [*0591.0020.0002] # TIBETAN SIGN RDEL NAG RDEL DKAR +0FCF ; [*0592.0020.0002] # TIBETAN SIGN RDEL NAG GSUM +0FD0 ; [*0417.0020.0002] # TIBETAN MARK BSKA- SHOG GI MGO RGYAN +0FD1 ; [*0418.0020.0002] # TIBETAN MARK MNYAM YIG GI MGO RGYAN +0FD2 ; [*0421.0020.0002] # TIBETAN MARK NYIS TSHEG +0FD3 ; [*0422.0020.0002] # TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA +0FD4 ; [*0423.0020.0002] # TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA +0FD5 ; [*0593.0020.0002] # RIGHT-FACING SVASTI SIGN +0FD6 ; [*0594.0020.0002] # LEFT-FACING SVASTI SIGN +0FD7 ; [*0595.0020.0002] # RIGHT-FACING SVASTI SIGN WITH DOTS +0FD8 ; [*0596.0020.0002] # LEFT-FACING SVASTI SIGN WITH DOTS +0FD9 ; [*0424.0020.0002] # TIBETAN MARK LEADING MCHAN RTAGS +0FDA ; [*0425.0020.0002] # TIBETAN MARK TRAILING MCHAN RTAGS +104A ; [*02A1.0020.0002] # MYANMAR SIGN LITTLE SECTION +104B ; [*02A2.0020.0002] # MYANMAR SIGN SECTION +104C ; [*043B.0020.0002] # MYANMAR SYMBOL LOCATIVE +104D ; [*043C.0020.0002] # MYANMAR SYMBOL COMPLETED +104E ; [*043D.0020.0002] # MYANMAR SYMBOL AFOREMENTIONED +104F ; [*043E.0020.0002] # MYANMAR SYMBOL GENITIVE +109E ; [*0599.0020.0002] # MYANMAR SYMBOL SHAN ONE +109F ; [*059A.0020.0002] # MYANMAR SYMBOL SHAN EXCLAMATION +10FB ; [*02CF.0020.0002] # GEORGIAN PARAGRAPH SEPARATOR +1360 ; [*02D0.0020.0002] # ETHIOPIC SECTION MARK +1361 ; [*0258.0020.0002] # ETHIOPIC WORDSPACE +1362 ; [*0283.0020.0002] # ETHIOPIC FULL STOP +1363 ; [*0259.0020.0002] # ETHIOPIC COMMA +1364 ; [*025A.0020.0002] # ETHIOPIC SEMICOLON +1365 ; [*025B.0020.0002] # ETHIOPIC COLON +1366 ; [*025C.0020.0002] # ETHIOPIC PREFACE COLON +1367 ; [*0273.0020.0002] # ETHIOPIC QUESTION MARK +1368 ; [*02D1.0020.0002] # ETHIOPIC PARAGRAPH SEPARATOR +1372 ; [*1D90.0020.0002] # ETHIOPIC NUMBER TEN +1373 ; [*1D91.0020.0002] # ETHIOPIC NUMBER TWENTY +1374 ; [*1D92.0020.0002] # ETHIOPIC NUMBER THIRTY +1375 ; [*1D93.0020.0002] # ETHIOPIC NUMBER FORTY +1376 ; [*1D94.0020.0002] # ETHIOPIC NUMBER FIFTY +1377 ; [*1D95.0020.0002] # ETHIOPIC NUMBER SIXTY +1378 ; [*1D96.0020.0002] # ETHIOPIC NUMBER SEVENTY +1379 ; [*1D97.0020.0002] # ETHIOPIC NUMBER EIGHTY +137A ; [*1D98.0020.0002] # ETHIOPIC NUMBER NINETY +137B ; [*1D99.0020.0002] # ETHIOPIC NUMBER HUNDRED +137C ; [*1D9A.0020.0002] # ETHIOPIC NUMBER TEN THOUSAND +1390 ; [*04FA.0020.0002] # ETHIOPIC TONAL MARK YIZET +1391 ; [*04FB.0020.0002] # ETHIOPIC TONAL MARK DERET +1392 ; [*04FC.0020.0002] # ETHIOPIC TONAL MARK RIKRIK +1393 ; [*04FD.0020.0002] # ETHIOPIC TONAL MARK SHORT RIKRIK +1394 ; [*04FE.0020.0002] # ETHIOPIC TONAL MARK DIFAT +1395 ; [*04FF.0020.0002] # ETHIOPIC TONAL MARK KENAT +1396 ; [*0500.0020.0002] # ETHIOPIC TONAL MARK CHIRET +1397 ; [*0501.0020.0002] # ETHIOPIC TONAL MARK HIDET +1398 ; [*0502.0020.0002] # ETHIOPIC TONAL MARK DERET-HIDET +1399 ; [*0503.0020.0002] # ETHIOPIC TONAL MARK KURT 1400 ; [*020F.0020.0002] # CANADIAN SYLLABICS HYPHEN -166D ; [*0434.0020.0002] # CANADIAN SYLLABICS CHI SIGN -166E ; [*0280.0020.0002] # CANADIAN SYLLABICS FULL STOP +166D ; [*0597.0020.0002] # CANADIAN SYLLABICS CHI SIGN +166E ; [*0286.0020.0002] # CANADIAN SYLLABICS FULL STOP 1680 ; [*0209.0020.0004] # OGHAM SPACE MARK -169B ; [*0322.0020.0002] # OGHAM FEATHER MARK -169C ; [*0323.0020.0002] # OGHAM REVERSED FEATHER MARK -16EB ; [*025D.0020.0002] # RUNIC SINGLE PUNCTUATION -16EC ; [*025E.0020.0002] # RUNIC MULTIPLE PUNCTUATION -16ED ; [*025F.0020.0002] # RUNIC CROSS PUNCTUATION -1735 ; [*0297.0020.0002] # PHILIPPINE SINGLE PUNCTUATION -1736 ; [*0298.0020.0002] # PHILIPPINE DOUBLE PUNCTUATION +169B ; [*0332.0020.0002] # OGHAM FEATHER MARK +169C ; [*0333.0020.0002] # OGHAM REVERSED FEATHER MARK +16EB ; [*0263.0020.0002] # RUNIC SINGLE PUNCTUATION +16EC ; [*0264.0020.0002] # RUNIC MULTIPLE PUNCTUATION +16ED ; [*0265.0020.0002] # RUNIC CROSS PUNCTUATION +1735 ; [*029E.0020.0002] # PHILIPPINE SINGLE PUNCTUATION +1736 ; [*029F.0020.0002] # PHILIPPINE DOUBLE PUNCTUATION 17B4 ; [.0000.0000.0000] # KHMER VOWEL INHERENT AQ 17B5 ; [.0000.0000.0000] # KHMER VOWEL INHERENT AA 17D3 ; [.0000.0000.0000] # KHMER SIGN BATHAMASAT -17D4 ; [*029C.0020.0002] # KHMER SIGN KHAN -17D5 ; [*029D.0020.0002] # KHMER SIGN BARIYOOSAN -17D6 ; [*025A.0020.0002] # KHMER SIGN CAMNUC PII KUUH -17D8 ; [*0428.0020.0002] # KHMER SIGN BEYYAL -17D9 ; [*0429.0020.0002] # KHMER SIGN PHNAEK MUAN -17DA ; [*042A.0020.0002] # KHMER SIGN KOOMUUT -1800 ; [*03DE.0020.0002] # MONGOLIAN BIRGA -1801 ; [*0279.0020.0002] # MONGOLIAN ELLIPSIS -1802 ; [*022C.0020.0002] # MONGOLIAN COMMA -1803 ; [*027E.0020.0002] # MONGOLIAN FULL STOP -1804 ; [*0257.0020.0002] # MONGOLIAN COLON -1805 ; [*0258.0020.0002] # MONGOLIAN FOUR DOTS +17D4 ; [*02A3.0020.0002] # KHMER SIGN KHAN +17D5 ; [*02A4.0020.0002] # KHMER SIGN BARIYOOSAN +17D6 ; [*0260.0020.0002] # KHMER SIGN CAMNUC PII KUUH +17D8 ; [*043F.0020.0002] # KHMER SIGN BEYYAL +17D9 ; [*0440.0020.0002] # KHMER SIGN PHNAEK MUAN +17DA ; [*0441.0020.0002] # KHMER SIGN KOOMUUT +1800 ; [*03F2.0020.0002] # MONGOLIAN BIRGA +1801 ; [*027F.0020.0002] # MONGOLIAN ELLIPSIS +1802 ; [*0230.0020.0002] # MONGOLIAN COMMA +1803 ; [*0284.0020.0002] # MONGOLIAN FULL STOP +1804 ; [*025D.0020.0002] # MONGOLIAN COLON +1805 ; [*025E.0020.0002] # MONGOLIAN FOUR DOTS 1806 ; [*0211.0020.0002] # MONGOLIAN TODO SOFT HYPHEN 1807 ; [*0212.0020.0002] # MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER -1808 ; [*022D.0020.0002] # MONGOLIAN MANCHU COMMA -1809 ; [*027F.0020.0002] # MONGOLIAN MANCHU FULL STOP +1808 ; [*0231.0020.0002] # MONGOLIAN MANCHU COMMA +1809 ; [*0285.0020.0002] # MONGOLIAN MANCHU FULL STOP 180A ; [.0000.0000.0000] # MONGOLIAN NIRUGU -1940 ; [*0560.0020.0002] # LIMBU SIGN LOO -1944 ; [*0265.0020.0002] # LIMBU EXCLAMATION MARK -1945 ; [*026E.0020.0002] # LIMBU QUESTION MARK -19E0 ; [*0567.0020.0002] # KHMER SYMBOL PATHAMASAT -19E1 ; [*0568.0020.0002] # KHMER SYMBOL MUOY KOET -19E2 ; [*0569.0020.0002] # KHMER SYMBOL PII KOET -19E3 ; [*056A.0020.0002] # KHMER SYMBOL BEI KOET -19E4 ; [*056B.0020.0002] # KHMER SYMBOL BUON KOET -19E5 ; [*056C.0020.0002] # KHMER SYMBOL PRAM KOET -19E6 ; [*056D.0020.0002] # KHMER SYMBOL PRAM-MUOY KOET -19E7 ; [*056E.0020.0002] # KHMER SYMBOL PRAM-PII KOET -19E8 ; [*056F.0020.0002] # KHMER SYMBOL PRAM-BEI KOET -19E9 ; [*0570.0020.0002] # KHMER SYMBOL PRAM-BUON KOET -19EA ; [*0571.0020.0002] # KHMER SYMBOL DAP KOET -19EB ; [*0572.0020.0002] # KHMER SYMBOL DAP-MUOY KOET -19EC ; [*0573.0020.0002] # KHMER SYMBOL DAP-PII KOET -19ED ; [*0574.0020.0002] # KHMER SYMBOL DAP-BEI KOET -19EE ; [*0575.0020.0002] # KHMER SYMBOL DAP-BUON KOET -19EF ; [*0576.0020.0002] # KHMER SYMBOL DAP-PRAM KOET -19F0 ; [*0577.0020.0002] # KHMER SYMBOL TUTEYASAT -19F1 ; [*0578.0020.0002] # KHMER SYMBOL MUOY ROC -19F2 ; [*0579.0020.0002] # KHMER SYMBOL PII ROC -19F3 ; [*057A.0020.0002] # KHMER SYMBOL BEI ROC -19F4 ; [*057B.0020.0002] # KHMER SYMBOL BUON ROC -19F5 ; [*057C.0020.0002] # KHMER SYMBOL PRAM ROC -19F6 ; [*057D.0020.0002] # KHMER SYMBOL PRAM-MUOY ROC -19F7 ; [*057E.0020.0002] # KHMER SYMBOL PRAM-PII ROC -19F8 ; [*057F.0020.0002] # KHMER SYMBOL PRAM-BEI ROC -19F9 ; [*0580.0020.0002] # KHMER SYMBOL PRAM-BUON ROC -19FA ; [*0581.0020.0002] # KHMER SYMBOL DAP ROC -19FB ; [*0582.0020.0002] # KHMER SYMBOL DAP-MUOY ROC -19FC ; [*0583.0020.0002] # KHMER SYMBOL DAP-PII ROC -19FD ; [*0584.0020.0002] # KHMER SYMBOL DAP-BEI ROC -19FE ; [*0585.0020.0002] # KHMER SYMBOL DAP-BUON ROC -19FF ; [*0586.0020.0002] # KHMER SYMBOL DAP-PRAM ROC -1A1E ; [*02CA.0020.0002] # BUGINESE PALLAWA -1A1F ; [*02CB.0020.0002] # BUGINESE END OF SECTION +1940 ; [*0598.0020.0002] # LIMBU SIGN LOO +1944 ; [*026B.0020.0002] # LIMBU EXCLAMATION MARK +1945 ; [*0274.0020.0002] # LIMBU QUESTION MARK +19E0 ; [*059F.0020.0002] # KHMER SYMBOL PATHAMASAT +19E1 ; [*05A0.0020.0002] # KHMER SYMBOL MUOY KOET +19E2 ; [*05A1.0020.0002] # KHMER SYMBOL PII KOET +19E3 ; [*05A2.0020.0002] # KHMER SYMBOL BEI KOET +19E4 ; [*05A3.0020.0002] # KHMER SYMBOL BUON KOET +19E5 ; [*05A4.0020.0002] # KHMER SYMBOL PRAM KOET +19E6 ; [*05A5.0020.0002] # KHMER SYMBOL PRAM-MUOY KOET +19E7 ; [*05A6.0020.0002] # KHMER SYMBOL PRAM-PII KOET +19E8 ; [*05A7.0020.0002] # KHMER SYMBOL PRAM-BEI KOET +19E9 ; [*05A8.0020.0002] # KHMER SYMBOL PRAM-BUON KOET +19EA ; [*05A9.0020.0002] # KHMER SYMBOL DAP KOET +19EB ; [*05AA.0020.0002] # KHMER SYMBOL DAP-MUOY KOET +19EC ; [*05AB.0020.0002] # KHMER SYMBOL DAP-PII KOET +19ED ; [*05AC.0020.0002] # KHMER SYMBOL DAP-BEI KOET +19EE ; [*05AD.0020.0002] # KHMER SYMBOL DAP-BUON KOET +19EF ; [*05AE.0020.0002] # KHMER SYMBOL DAP-PRAM KOET +19F0 ; [*05AF.0020.0002] # KHMER SYMBOL TUTEYASAT +19F1 ; [*05B0.0020.0002] # KHMER SYMBOL MUOY ROC +19F2 ; [*05B1.0020.0002] # KHMER SYMBOL PII ROC +19F3 ; [*05B2.0020.0002] # KHMER SYMBOL BEI ROC +19F4 ; [*05B3.0020.0002] # KHMER SYMBOL BUON ROC +19F5 ; [*05B4.0020.0002] # KHMER SYMBOL PRAM ROC +19F6 ; [*05B5.0020.0002] # KHMER SYMBOL PRAM-MUOY ROC +19F7 ; [*05B6.0020.0002] # KHMER SYMBOL PRAM-PII ROC +19F8 ; [*05B7.0020.0002] # KHMER SYMBOL PRAM-BEI ROC +19F9 ; [*05B8.0020.0002] # KHMER SYMBOL PRAM-BUON ROC +19FA ; [*05B9.0020.0002] # KHMER SYMBOL DAP ROC +19FB ; [*05BA.0020.0002] # KHMER SYMBOL DAP-MUOY ROC +19FC ; [*05BB.0020.0002] # KHMER SYMBOL DAP-PII ROC +19FD ; [*05BC.0020.0002] # KHMER SYMBOL DAP-BEI ROC +19FE ; [*05BD.0020.0002] # KHMER SYMBOL DAP-BUON ROC +19FF ; [*05BE.0020.0002] # KHMER SYMBOL DAP-PRAM ROC +1A1E ; [*02D2.0020.0002] # BUGINESE PALLAWA +1A1F ; [*02D3.0020.0002] # BUGINESE END OF SECTION 1A7F ; [.0000.0000.0000] # TAI THAM COMBINING CRYPTOGRAMMIC DOT -1AA0 ; [*042B.0020.0002] # TAI THAM SIGN WIANG -1AA1 ; [*042C.0020.0002] # TAI THAM SIGN WIANGWAAK -1AA2 ; [*042D.0020.0002] # TAI THAM SIGN SAWAN -1AA3 ; [*042E.0020.0002] # TAI THAM SIGN KEOW -1AA4 ; [*042F.0020.0002] # TAI THAM SIGN HOY -1AA5 ; [*0430.0020.0002] # TAI THAM SIGN DOKMAI -1AA6 ; [*0431.0020.0002] # TAI THAM SIGN REVERSED ROTATED RANA -1AA8 ; [*029E.0020.0002] # TAI THAM SIGN KAAN -1AA9 ; [*029F.0020.0002] # TAI THAM SIGN KAANKUU -1AAA ; [*02A0.0020.0002] # TAI THAM SIGN SATKAAN -1AAB ; [*02A1.0020.0002] # TAI THAM SIGN SATKAANKUU -1AAC ; [*0432.0020.0002] # TAI THAM SIGN HANG -1AAD ; [*0433.0020.0002] # TAI THAM SIGN CAANG -1B5A ; [*02CC.0020.0002] # BALINESE PANTI -1B5B ; [*02CD.0020.0002] # BALINESE PAMADA -1B5C ; [*0281.0020.0002] # BALINESE WINDU -1B5D ; [*025B.0020.0002] # BALINESE CARIK PAMUNGKAH -1B5E ; [*02A2.0020.0002] # BALINESE CARIK SIKI -1B5F ; [*02A3.0020.0002] # BALINESE CARIK PAREREN +1AA0 ; [*0442.0020.0002] # TAI THAM SIGN WIANG +1AA1 ; [*0443.0020.0002] # TAI THAM SIGN WIANGWAAK +1AA2 ; [*0444.0020.0002] # TAI THAM SIGN SAWAN +1AA3 ; [*0445.0020.0002] # TAI THAM SIGN KEOW +1AA4 ; [*0446.0020.0002] # TAI THAM SIGN HOY +1AA5 ; [*0447.0020.0002] # TAI THAM SIGN DOKMAI +1AA6 ; [*0448.0020.0002] # TAI THAM SIGN REVERSED ROTATED RANA +1AA8 ; [*02A5.0020.0002] # TAI THAM SIGN KAAN +1AA9 ; [*02A6.0020.0002] # TAI THAM SIGN KAANKUU +1AAA ; [*02A7.0020.0002] # TAI THAM SIGN SATKAAN +1AAB ; [*02A8.0020.0002] # TAI THAM SIGN SATKAANKUU +1AAC ; [*0449.0020.0002] # TAI THAM SIGN HANG +1AAD ; [*044A.0020.0002] # TAI THAM SIGN CAANG +1B5A ; [*02D4.0020.0002] # BALINESE PANTI +1B5B ; [*02D5.0020.0002] # BALINESE PAMADA +1B5C ; [*0287.0020.0002] # BALINESE WINDU +1B5D ; [*0261.0020.0002] # BALINESE CARIK PAMUNGKAH +1B5E ; [*02A9.0020.0002] # BALINESE CARIK SIKI +1B5F ; [*02AA.0020.0002] # BALINESE CARIK PAREREN 1B60 ; [*0210.0020.0002] # BALINESE PAMENENG -1B61 ; [*0587.0020.0002] # BALINESE MUSICAL SYMBOL DONG -1B62 ; [*0588.0020.0002] # BALINESE MUSICAL SYMBOL DENG -1B63 ; [*0589.0020.0002] # BALINESE MUSICAL SYMBOL DUNG -1B64 ; [*058A.0020.0002] # BALINESE MUSICAL SYMBOL DANG -1B65 ; [*058B.0020.0002] # BALINESE MUSICAL SYMBOL DANG SURANG -1B66 ; [*058C.0020.0002] # BALINESE MUSICAL SYMBOL DING -1B67 ; [*058D.0020.0002] # BALINESE MUSICAL SYMBOL DAENG -1B68 ; [*058E.0020.0002] # BALINESE MUSICAL SYMBOL DEUNG -1B69 ; [*058F.0020.0002] # BALINESE MUSICAL SYMBOL DAING -1B6A ; [*0590.0020.0002] # BALINESE MUSICAL SYMBOL DANG GEDE +1B61 ; [*05BF.0020.0002] # BALINESE MUSICAL SYMBOL DONG +1B62 ; [*05C0.0020.0002] # BALINESE MUSICAL SYMBOL DENG +1B63 ; [*05C1.0020.0002] # BALINESE MUSICAL SYMBOL DUNG +1B64 ; [*05C2.0020.0002] # BALINESE MUSICAL SYMBOL DANG +1B65 ; [*05C3.0020.0002] # BALINESE MUSICAL SYMBOL DANG SURANG +1B66 ; [*05C4.0020.0002] # BALINESE MUSICAL SYMBOL DING +1B67 ; [*05C5.0020.0002] # BALINESE MUSICAL SYMBOL DAENG +1B68 ; [*05C6.0020.0002] # BALINESE MUSICAL SYMBOL DEUNG +1B69 ; [*05C7.0020.0002] # BALINESE MUSICAL SYMBOL DAING +1B6A ; [*05C8.0020.0002] # BALINESE MUSICAL SYMBOL DANG GEDE 1B6B ; [.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING TEGEH 1B6C ; [.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING ENDEP 1B6D ; [.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING KEMPUL @@ -1048,34 +1065,34 @@ 1B71 ; [.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN 1B72 ; [.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING BENDE 1B73 ; [.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING GONG -1B74 ; [*0591.0020.0002] # BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG -1B75 ; [*0592.0020.0002] # BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG -1B76 ; [*0593.0020.0002] # BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK -1B77 ; [*0594.0020.0002] # BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK -1B78 ; [*0595.0020.0002] # BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG -1B79 ; [*0596.0020.0002] # BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG -1B7A ; [*0597.0020.0002] # BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK -1B7B ; [*0598.0020.0002] # BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK -1B7C ; [*0599.0020.0002] # BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING -1BFC ; [*0440.0020.0002] # BATAK SYMBOL BINDU NA METEK -1BFD ; [*0441.0020.0002] # BATAK SYMBOL BINDU PINARBORAS -1BFE ; [*0442.0020.0002] # BATAK SYMBOL BINDU JUDUL -1BFF ; [*0443.0020.0002] # BATAK SYMBOL BINDU PANGOLAT -1C3B ; [*0293.0020.0002] # LEPCHA PUNCTUATION TA-ROL -1C3C ; [*0294.0020.0002] # LEPCHA PUNCTUATION NYET THYOOM TA-ROL -1C3D ; [*0421.0020.0002] # LEPCHA PUNCTUATION CER-WA -1C3E ; [*0422.0020.0002] # LEPCHA PUNCTUATION TSHOOK CER-WA -1C3F ; [*0423.0020.0002] # LEPCHA PUNCTUATION TSHOOK -1C7E ; [*02C3.0020.0002] # OL CHIKI PUNCTUATION MUCAAD -1C7F ; [*02C4.0020.0002] # OL CHIKI PUNCTUATION DOUBLE MUCAAD -1CC0 ; [*0435.0020.0002] # SUNDANESE PUNCTUATION BINDU SURYA -1CC1 ; [*0436.0020.0002] # SUNDANESE PUNCTUATION BINDU PANGLONG -1CC2 ; [*0437.0020.0002] # SUNDANESE PUNCTUATION BINDU PURNAMA -1CC3 ; [*0438.0020.0002] # SUNDANESE PUNCTUATION BINDU CAKRA -1CC4 ; [*0439.0020.0002] # SUNDANESE PUNCTUATION BINDU LEU SATANGA -1CC5 ; [*043A.0020.0002] # SUNDANESE PUNCTUATION BINDU KA SATANGA -1CC6 ; [*043B.0020.0002] # SUNDANESE PUNCTUATION BINDU DA SATANGA -1CC7 ; [*043C.0020.0002] # SUNDANESE PUNCTUATION BINDU BA SATANGA +1B74 ; [*05C9.0020.0002] # BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG +1B75 ; [*05CA.0020.0002] # BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG +1B76 ; [*05CB.0020.0002] # BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK +1B77 ; [*05CC.0020.0002] # BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK +1B78 ; [*05CD.0020.0002] # BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG +1B79 ; [*05CE.0020.0002] # BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG +1B7A ; [*05CF.0020.0002] # BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK +1B7B ; [*05D0.0020.0002] # BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK +1B7C ; [*05D1.0020.0002] # BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING +1BFC ; [*0456.0020.0002] # BATAK SYMBOL BINDU NA METEK +1BFD ; [*0457.0020.0002] # BATAK SYMBOL BINDU PINARBORAS +1BFE ; [*0458.0020.0002] # BATAK SYMBOL BINDU JUDUL +1BFF ; [*0459.0020.0002] # BATAK SYMBOL BINDU PANGOLAT +1C3B ; [*029A.0020.0002] # LEPCHA PUNCTUATION TA-ROL +1C3C ; [*029B.0020.0002] # LEPCHA PUNCTUATION NYET THYOOM TA-ROL +1C3D ; [*0438.0020.0002] # LEPCHA PUNCTUATION CER-WA +1C3E ; [*0439.0020.0002] # LEPCHA PUNCTUATION TSHOOK CER-WA +1C3F ; [*043A.0020.0002] # LEPCHA PUNCTUATION TSHOOK +1C7E ; [*02CB.0020.0002] # OL CHIKI PUNCTUATION MUCAAD +1C7F ; [*02CC.0020.0002] # OL CHIKI PUNCTUATION DOUBLE MUCAAD +1CC0 ; [*044B.0020.0002] # SUNDANESE PUNCTUATION BINDU SURYA +1CC1 ; [*044C.0020.0002] # SUNDANESE PUNCTUATION BINDU PANGLONG +1CC2 ; [*044D.0020.0002] # SUNDANESE PUNCTUATION BINDU PURNAMA +1CC3 ; [*044E.0020.0002] # SUNDANESE PUNCTUATION BINDU CAKRA +1CC4 ; [*044F.0020.0002] # SUNDANESE PUNCTUATION BINDU LEU SATANGA +1CC5 ; [*0450.0020.0002] # SUNDANESE PUNCTUATION BINDU KA SATANGA +1CC6 ; [*0451.0020.0002] # SUNDANESE PUNCTUATION BINDU DA SATANGA +1CC7 ; [*0452.0020.0002] # SUNDANESE PUNCTUATION BINDU BA SATANGA 1CD0 ; [.0000.0000.0000] # VEDIC TONE KARSHANA 1CD1 ; [.0000.0000.0000] # VEDIC TONE SHARA 1CD2 ; [.0000.0000.0000] # VEDIC TONE PRENKHA @@ -1105,21 +1122,21 @@ 1CF7 ; [.0000.0000.0000] # VEDIC SIGN ATIKRAMA 1CF8 ; [.0000.0000.0000] # VEDIC TONE RING ABOVE 1CF9 ; [.0000.0000.0000] # VEDIC TONE DOUBLE RING ABOVE -1FBD ; [*04A4.0020.0002] # GREEK KORONIS -1FBF ; [*04A4.0020.0002] # GREEK PSILI -1FC0 ; [*04A6.0020.0002] # GREEK PERISPOMENI -1FC1 ; [*049F.0020.0002][.0000.002A.0002] # GREEK DIALYTIKA AND PERISPOMENI -1FCD ; [*04A4.0020.0002][.0000.0025.0002] # GREEK PSILI AND VARIA -1FCE ; [*04A4.0020.0002][.0000.0024.0002] # GREEK PSILI AND OXIA -1FCF ; [*04A4.0020.0002][.0000.002A.0002] # GREEK PSILI AND PERISPOMENI -1FDD ; [*04A5.0020.0002][.0000.0025.0002] # GREEK DASIA AND VARIA -1FDE ; [*04A5.0020.0002][.0000.0024.0002] # GREEK DASIA AND OXIA -1FDF ; [*04A5.0020.0002][.0000.002A.0002] # GREEK DASIA AND PERISPOMENI -1FED ; [*049F.0020.0002][.0000.0025.0002] # GREEK DIALYTIKA AND VARIA -1FEE ; [*049F.0020.0002][.0000.0024.0002] # GREEK DIALYTIKA AND OXIA -1FEF ; [*0498.0020.0002] # GREEK VARIA -1FFD ; [*0499.0020.0002] # GREEK OXIA -1FFE ; [*04A5.0020.0002] # GREEK DASIA +1FBD ; [*04C0.0020.0002] # GREEK KORONIS +1FBF ; [*04C0.0020.0002] # GREEK PSILI +1FC0 ; [*04C2.0020.0002] # GREEK PERISPOMENI +1FC1 ; [*04BB.0020.0002][.0000.002A.0002] # GREEK DIALYTIKA AND PERISPOMENI +1FCD ; [*04C0.0020.0002][.0000.0025.0002] # GREEK PSILI AND VARIA +1FCE ; [*04C0.0020.0002][.0000.0024.0002] # GREEK PSILI AND OXIA +1FCF ; [*04C0.0020.0002][.0000.002A.0002] # GREEK PSILI AND PERISPOMENI +1FDD ; [*04C1.0020.0002][.0000.0025.0002] # GREEK DASIA AND VARIA +1FDE ; [*04C1.0020.0002][.0000.0024.0002] # GREEK DASIA AND OXIA +1FDF ; [*04C1.0020.0002][.0000.002A.0002] # GREEK DASIA AND PERISPOMENI +1FED ; [*04BB.0020.0002][.0000.0025.0002] # GREEK DIALYTIKA AND VARIA +1FEE ; [*04BB.0020.0002][.0000.0024.0002] # GREEK DIALYTIKA AND OXIA +1FEF ; [*04B4.0020.0002] # GREEK VARIA +1FFD ; [*04B5.0020.0002] # GREEK OXIA +1FFE ; [*04C1.0020.0002] # GREEK DASIA 2000 ; [*0209.0020.0004] # EN QUAD 2001 ; [*0209.0020.0004] # EM QUAD 2002 ; [*0209.0020.0004] # EN SPACE @@ -1137,2876 +1154,2931 @@ 2013 ; [*0215.0020.0002] # EN DASH 2014 ; [*0216.0020.0002] # EM DASH 2015 ; [*0217.0020.0002] # HORIZONTAL BAR -2016 ; [*0384.0020.0002] # DOUBLE VERTICAL LINE +2016 ; [*0394.0020.0002] # DOUBLE VERTICAL LINE 2017 ; [*020C.0020.0002] # DOUBLE LOW LINE -2018 ; [*0307.0020.0002] # LEFT SINGLE QUOTATION MARK -2019 ; [*0308.0020.0002] # RIGHT SINGLE QUOTATION MARK -201A ; [*0309.0020.0002] # SINGLE LOW-9 QUOTATION MARK -201B ; [*030A.0020.0002] # SINGLE HIGH-REVERSED-9 QUOTATION MARK -201C ; [*030E.0020.0002] # LEFT DOUBLE QUOTATION MARK -201D ; [*030F.0020.0002] # RIGHT DOUBLE QUOTATION MARK -201E ; [*0310.0020.0002] # DOUBLE LOW-9 QUOTATION MARK -201F ; [*0311.0020.0002] # DOUBLE HIGH-REVERSED-9 QUOTATION MARK -2020 ; [*03A0.0020.0002] # DAGGER -2021 ; [*03A1.0020.0002] # DOUBLE DAGGER -2022 ; [*03A5.0020.0002] # BULLET -2023 ; [*03A6.0020.0002] # TRIANGULAR BULLET -2024 ; [*0278.0020.0004] # ONE DOT LEADER -2025 ; [*0278.0020.0004][*0278.0020.0004] # TWO DOT LEADER -2026 ; [*0278.0020.0004][*0278.0020.0004][*0278.0020.0004] # HORIZONTAL ELLIPSIS -2027 ; [*03A7.0020.0002] # HYPHENATION POINT +2018 ; [*0317.0020.0002] # LEFT SINGLE QUOTATION MARK +2019 ; [*0318.0020.0002] # RIGHT SINGLE QUOTATION MARK +201A ; [*0319.0020.0002] # SINGLE LOW-9 QUOTATION MARK +201B ; [*031A.0020.0002] # SINGLE HIGH-REVERSED-9 QUOTATION MARK +201C ; [*031E.0020.0002] # LEFT DOUBLE QUOTATION MARK +201D ; [*031F.0020.0002] # RIGHT DOUBLE QUOTATION MARK +201E ; [*0320.0020.0002] # DOUBLE LOW-9 QUOTATION MARK +201F ; [*0321.0020.0002] # DOUBLE HIGH-REVERSED-9 QUOTATION MARK +2020 ; [*03B3.0020.0002] # DAGGER +2021 ; [*03B4.0020.0002] # DOUBLE DAGGER +2022 ; [*03B9.0020.0002] # BULLET +2023 ; [*03BA.0020.0002] # TRIANGULAR BULLET +2024 ; [*027E.0020.0004] # ONE DOT LEADER +2025 ; [*027E.0020.0004][*027E.0020.0004] # TWO DOT LEADER +2026 ; [*027E.0020.0004][*027E.0020.0004][*027E.0020.0004] # HORIZONTAL ELLIPSIS +2027 ; [*03BB.0020.0002] # HYPHENATION POINT 2028 ; [*0207.0020.0002] # LINE SEPARATOR 2029 ; [*0208.0020.0002] # PARAGRAPH SEPARATOR 202F ; [*0209.0020.001B] # NARROW NO-BREAK SPACE -2030 ; [*039C.0020.0002] # PER MILLE SIGN -2031 ; [*039E.0020.0002] # PER TEN THOUSAND SIGN -2032 ; [*03AB.0020.0002] # PRIME -2033 ; [*03AB.0020.0004][*03AB.0020.0004] # DOUBLE PRIME -2034 ; [*03AB.0020.0004][*03AB.0020.0004][*03AB.0020.0004] # TRIPLE PRIME -2035 ; [*03AC.0020.0002] # REVERSED PRIME -2036 ; [*03AC.0020.0004][*03AC.0020.0004] # REVERSED DOUBLE PRIME -2037 ; [*03AC.0020.0004][*03AC.0020.0004][*03AC.0020.0004] # REVERSED TRIPLE PRIME -2038 ; [*03AF.0020.0002] # CARET -2039 ; [*030B.0020.0002] # SINGLE LEFT-POINTING ANGLE QUOTATION MARK -203A ; [*030C.0020.0002] # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -203B ; [*03B0.0020.0002] # REFERENCE MARK -203C ; [*0261.0020.0004][*0261.0020.0004] # DOUBLE EXCLAMATION MARK -203D ; [*0276.0020.0002] # INTERROBANG +2030 ; [*03AF.0020.0002] # PER MILLE SIGN +2031 ; [*03B1.0020.0002] # PER TEN THOUSAND SIGN +2032 ; [*03BF.0020.0002] # PRIME +2033 ; [*03BF.0020.0004][*03BF.0020.0004] # DOUBLE PRIME +2034 ; [*03BF.0020.0004][*03BF.0020.0004][*03BF.0020.0004] # TRIPLE PRIME +2035 ; [*03C0.0020.0002] # REVERSED PRIME +2036 ; [*03C0.0020.0004][*03C0.0020.0004] # REVERSED DOUBLE PRIME +2037 ; [*03C0.0020.0004][*03C0.0020.0004][*03C0.0020.0004] # REVERSED TRIPLE PRIME +2038 ; [*03C3.0020.0002] # CARET +2039 ; [*031B.0020.0002] # SINGLE LEFT-POINTING ANGLE QUOTATION MARK +203A ; [*031C.0020.0002] # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +203B ; [*03C4.0020.0002] # REFERENCE MARK +203C ; [*0267.0020.0004][*0267.0020.0004] # DOUBLE EXCLAMATION MARK +203D ; [*027C.0020.0002] # INTERROBANG 203E ; [*020A.0020.0002] # OVERLINE -203F ; [*03B1.0020.0002] # UNDERTIE -2040 ; [*03B3.0020.0002] # CHARACTER TIE -2041 ; [*03B5.0020.0002] # CARET INSERTION POINT -2042 ; [*03B6.0020.0002] # ASTERISM -2043 ; [*03A8.0020.0002] # HYPHEN BULLET -2044 ; [*063C.0020.0002] # FRACTION SLASH -2045 ; [*0324.0020.0002] # LEFT SQUARE BRACKET WITH QUILL -2046 ; [*0325.0020.0002] # RIGHT SQUARE BRACKET WITH QUILL -2047 ; [*0267.0020.0004][*0267.0020.0004] # DOUBLE QUESTION MARK -2048 ; [*0267.0020.0004][*0261.0020.0004] # QUESTION EXCLAMATION MARK -2049 ; [*0261.0020.0004][*0267.0020.0004] # EXCLAMATION QUESTION MARK -204A ; [*0398.0020.0002] # TIRONIAN SIGN ET -204B ; [*038D.0020.0002] # REVERSED PILCROW SIGN -204C ; [*03A9.0020.0002] # BLACK LEFTWARDS BULLET -204D ; [*03AA.0020.0002] # BLACK RIGHTWARDS BULLET -204E ; [*0391.0020.0002] # LOW ASTERISK -204F ; [*0236.0020.0002] # REVERSED SEMICOLON -2050 ; [*03B4.0020.0002] # CLOSE UP -2051 ; [*0392.0020.0002] # TWO ASTERISKS ALIGNED VERTICALLY -2052 ; [*0638.0020.0002] # COMMERCIAL MINUS SIGN +203F ; [*03C5.0020.0002] # UNDERTIE +2040 ; [*03C7.0020.0002] # CHARACTER TIE +2041 ; [*03C9.0020.0002] # CARET INSERTION POINT +2042 ; [*03CA.0020.0002] # ASTERISM +2043 ; [*03BC.0020.0002] # HYPHEN BULLET +2044 ; [*0676.0020.0002] # FRACTION SLASH +2045 ; [*0334.0020.0002] # LEFT SQUARE BRACKET WITH QUILL +2046 ; [*0335.0020.0002] # RIGHT SQUARE BRACKET WITH QUILL +2047 ; [*026D.0020.0004][*026D.0020.0004] # DOUBLE QUESTION MARK +2048 ; [*026D.0020.0004][*0267.0020.0004] # QUESTION EXCLAMATION MARK +2049 ; [*0267.0020.0004][*026D.0020.0004] # EXCLAMATION QUESTION MARK +204A ; [*03AA.0020.0002] # TIRONIAN SIGN ET +204B ; [*039D.0020.0002] # REVERSED PILCROW SIGN +204C ; [*03BD.0020.0002] # BLACK LEFTWARDS BULLET +204D ; [*03BE.0020.0002] # BLACK RIGHTWARDS BULLET +204E ; [*03A2.0020.0002] # LOW ASTERISK +204F ; [*023C.0020.0002] # REVERSED SEMICOLON +2050 ; [*03C8.0020.0002] # CLOSE UP +2051 ; [*03A3.0020.0002] # TWO ASTERISKS ALIGNED VERTICALLY +2052 ; [*0672.0020.0002] # COMMERCIAL MINUS SIGN 2053 ; [*021A.0020.0002] # SWUNG DASH -2054 ; [*03B2.0020.0002] # INVERTED UNDERTIE -2055 ; [*02E9.0020.0002] # FLOWER PUNCTUATION MARK -2056 ; [*02EA.0020.0002] # THREE DOT PUNCTUATION -2057 ; [*03AB.0020.0004][*03AB.0020.0004][*03AB.0020.0004][*03AB.0020.0004] # QUADRUPLE PRIME -2058 ; [*02EB.0020.0002] # FOUR DOT PUNCTUATION -2059 ; [*02EC.0020.0002] # FIVE DOT PUNCTUATION -205A ; [*02ED.0020.0002] # TWO DOT PUNCTUATION -205B ; [*02EE.0020.0002] # FOUR DOT MARK -205C ; [*02EF.0020.0002] # DOTTED CROSS -205D ; [*02F0.0020.0002] # TRICOLON -205E ; [*02F1.0020.0002] # VERTICAL FOUR DOTS +2054 ; [*03C6.0020.0002] # INVERTED UNDERTIE +2055 ; [*02F9.0020.0002] # FLOWER PUNCTUATION MARK +2056 ; [*02FA.0020.0002] # THREE DOT PUNCTUATION +2057 ; [*03BF.0020.0004][*03BF.0020.0004][*03BF.0020.0004][*03BF.0020.0004] # QUADRUPLE PRIME +2058 ; [*02FB.0020.0002] # FOUR DOT PUNCTUATION +2059 ; [*02FC.0020.0002] # FIVE DOT PUNCTUATION +205A ; [*02FD.0020.0002] # TWO DOT PUNCTUATION +205B ; [*02FE.0020.0002] # FOUR DOT MARK +205C ; [*02FF.0020.0002] # DOTTED CROSS +205D ; [*0300.0020.0002] # TRICOLON +205E ; [*0301.0020.0002] # VERTICAL FOUR DOTS 205F ; [*0209.0020.0004] # MEDIUM MATHEMATICAL SPACE 2061 ; [.0000.0000.0000] # FUNCTION APPLICATION 2062 ; [.0000.0000.0000] # INVISIBLE TIMES 2063 ; [.0000.0000.0000] # INVISIBLE SEPARATOR 2064 ; [.0000.0000.0000] # INVISIBLE PLUS -207A ; [*062C.0020.0014] # SUPERSCRIPT PLUS SIGN -207B ; [*0637.0020.0014] # SUPERSCRIPT MINUS -207C ; [*0631.0020.0014] # SUPERSCRIPT EQUALS SIGN -207D ; [*0318.0020.0014] # SUPERSCRIPT LEFT PARENTHESIS -207E ; [*0319.0020.0014] # SUPERSCRIPT RIGHT PARENTHESIS -208A ; [*062C.0020.0015] # SUBSCRIPT PLUS SIGN -208B ; [*0637.0020.0015] # SUBSCRIPT MINUS -208C ; [*0631.0020.0015] # SUBSCRIPT EQUALS SIGN -208D ; [*0318.0020.0015] # SUBSCRIPT LEFT PARENTHESIS -208E ; [*0319.0020.0015] # SUBSCRIPT RIGHT PARENTHESIS -2104 ; [*059C.0020.0002] # CENTRE LINE SYMBOL -2108 ; [*059D.0020.0002] # SCRUPLE -2114 ; [*059E.0020.0002] # L B BAR SYMBOL -2117 ; [*059F.0020.0002] # SOUND RECORDING COPYRIGHT -2118 ; [*05A0.0020.0002] # SCRIPT CAPITAL P -211E ; [*05A1.0020.0002] # PRESCRIPTION TAKE -211F ; [*05A2.0020.0002] # RESPONSE -2123 ; [*05A3.0020.0002] # VERSICLE -2125 ; [*05A4.0020.0002] # OUNCE SIGN -2127 ; [*05A5.0020.0002] # INVERTED OHM SIGN -2129 ; [*05A6.0020.0002] # TURNED GREEK SMALL LETTER IOTA -212E ; [*05A7.0020.0002] # ESTIMATED SYMBOL -213A ; [*05A8.0020.0002] # ROTATED CAPITAL Q -2140 ; [*062B.0020.0005] # DOUBLE-STRUCK N-ARY SUMMATION -2141 ; [*05A9.0020.0002] # TURNED SANS-SERIF CAPITAL G -2142 ; [*05AA.0020.0002] # TURNED SANS-SERIF CAPITAL L -2143 ; [*05AB.0020.0002] # REVERSED SANS-SERIF CAPITAL L -2144 ; [*05AC.0020.0002] # TURNED SANS-SERIF CAPITAL Y -214A ; [*05AD.0020.0002] # PROPERTY LINE -214B ; [*06C7.0020.0002] # TURNED AMPERSAND -214C ; [*05AE.0020.0002] # PER SIGN -214F ; [*05AF.0020.0002] # SYMBOL FOR SAMARITAN SOURCE -2180 ; [*1B2A.0020.0002] # ROMAN NUMERAL ONE THOUSAND C D -2181 ; [*1B2B.0020.0002] # ROMAN NUMERAL FIVE THOUSAND -2182 ; [*1B2C.0020.0002] # ROMAN NUMERAL TEN THOUSAND -2186 ; [*1B2D.0020.0002] # ROMAN NUMERAL FIFTY EARLY FORM -2187 ; [*1B2E.0020.0002] # ROMAN NUMERAL FIFTY THOUSAND -2188 ; [*1B2F.0020.0002] # ROMAN NUMERAL ONE HUNDRED THOUSAND -218A ; [*05B0.0020.0002] # TURNED DIGIT TWO -218B ; [*05B1.0020.0002] # TURNED DIGIT THREE -2190 ; [*05B2.0020.0002] # LEFTWARDS ARROW -2191 ; [*05B4.0020.0002] # UPWARDS ARROW -2192 ; [*05B3.0020.0002] # RIGHTWARDS ARROW -2193 ; [*05B5.0020.0002] # DOWNWARDS ARROW -2194 ; [*05B6.0020.0002] # LEFT RIGHT ARROW -2195 ; [*05B7.0020.0002] # UP DOWN ARROW -2196 ; [*05B8.0020.0002] # NORTH WEST ARROW -2197 ; [*05B9.0020.0002] # NORTH EAST ARROW -2198 ; [*05BA.0020.0002] # SOUTH EAST ARROW -2199 ; [*05BB.0020.0002] # SOUTH WEST ARROW -219A ; [*05B2.0020.0002][.0000.002F.0002] # LEFTWARDS ARROW WITH STROKE -219B ; [*05B3.0020.0002][.0000.002F.0002] # RIGHTWARDS ARROW WITH STROKE -219C ; [*05BC.0020.0002] # LEFTWARDS WAVE ARROW -219D ; [*05BD.0020.0002] # RIGHTWARDS WAVE ARROW -219E ; [*05BE.0020.0002] # LEFTWARDS TWO HEADED ARROW -219F ; [*05BF.0020.0002] # UPWARDS TWO HEADED ARROW -21A0 ; [*05C0.0020.0002] # RIGHTWARDS TWO HEADED ARROW -21A1 ; [*05C1.0020.0002] # DOWNWARDS TWO HEADED ARROW -21A2 ; [*05C2.0020.0002] # LEFTWARDS ARROW WITH TAIL -21A3 ; [*05C3.0020.0002] # RIGHTWARDS ARROW WITH TAIL -21A4 ; [*05C4.0020.0002] # LEFTWARDS ARROW FROM BAR -21A5 ; [*05C5.0020.0002] # UPWARDS ARROW FROM BAR -21A6 ; [*05C6.0020.0002] # RIGHTWARDS ARROW FROM BAR -21A7 ; [*05C7.0020.0002] # DOWNWARDS ARROW FROM BAR -21A8 ; [*05C8.0020.0002] # UP DOWN ARROW WITH BASE -21A9 ; [*05C9.0020.0002] # LEFTWARDS ARROW WITH HOOK -21AA ; [*05CA.0020.0002] # RIGHTWARDS ARROW WITH HOOK -21AB ; [*05CB.0020.0002] # LEFTWARDS ARROW WITH LOOP -21AC ; [*05CC.0020.0002] # RIGHTWARDS ARROW WITH LOOP -21AD ; [*05CD.0020.0002] # LEFT RIGHT WAVE ARROW -21AE ; [*05B6.0020.0002][.0000.002F.0002] # LEFT RIGHT ARROW WITH STROKE -21AF ; [*05CE.0020.0002] # DOWNWARDS ZIGZAG ARROW -21B0 ; [*05CF.0020.0002] # UPWARDS ARROW WITH TIP LEFTWARDS -21B1 ; [*05D0.0020.0002] # UPWARDS ARROW WITH TIP RIGHTWARDS -21B2 ; [*05D1.0020.0002] # DOWNWARDS ARROW WITH TIP LEFTWARDS -21B3 ; [*05D2.0020.0002] # DOWNWARDS ARROW WITH TIP RIGHTWARDS -21B4 ; [*05D3.0020.0002] # RIGHTWARDS ARROW WITH CORNER DOWNWARDS -21B5 ; [*05D4.0020.0002] # DOWNWARDS ARROW WITH CORNER LEFTWARDS -21B6 ; [*05D5.0020.0002] # ANTICLOCKWISE TOP SEMICIRCLE ARROW -21B7 ; [*05D6.0020.0002] # CLOCKWISE TOP SEMICIRCLE ARROW -21B8 ; [*05D7.0020.0002] # NORTH WEST ARROW TO LONG BAR -21B9 ; [*05D8.0020.0002] # LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR -21BA ; [*05D9.0020.0002] # ANTICLOCKWISE OPEN CIRCLE ARROW -21BB ; [*05DA.0020.0002] # CLOCKWISE OPEN CIRCLE ARROW -21BC ; [*05DB.0020.0002] # LEFTWARDS HARPOON WITH BARB UPWARDS -21BD ; [*05DC.0020.0002] # LEFTWARDS HARPOON WITH BARB DOWNWARDS -21BE ; [*05DD.0020.0002] # UPWARDS HARPOON WITH BARB RIGHTWARDS -21BF ; [*05DE.0020.0002] # UPWARDS HARPOON WITH BARB LEFTWARDS -21C0 ; [*05DF.0020.0002] # RIGHTWARDS HARPOON WITH BARB UPWARDS -21C1 ; [*05E0.0020.0002] # RIGHTWARDS HARPOON WITH BARB DOWNWARDS -21C2 ; [*05E1.0020.0002] # DOWNWARDS HARPOON WITH BARB RIGHTWARDS -21C3 ; [*05E2.0020.0002] # DOWNWARDS HARPOON WITH BARB LEFTWARDS -21C4 ; [*05E3.0020.0002] # RIGHTWARDS ARROW OVER LEFTWARDS ARROW -21C5 ; [*05E4.0020.0002] # UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW -21C6 ; [*05E5.0020.0002] # LEFTWARDS ARROW OVER RIGHTWARDS ARROW -21C7 ; [*05E6.0020.0002] # LEFTWARDS PAIRED ARROWS -21C8 ; [*05E7.0020.0002] # UPWARDS PAIRED ARROWS -21C9 ; [*05E8.0020.0002] # RIGHTWARDS PAIRED ARROWS -21CA ; [*05E9.0020.0002] # DOWNWARDS PAIRED ARROWS -21CB ; [*05EA.0020.0002] # LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON -21CC ; [*05EB.0020.0002] # RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON -21CD ; [*05EC.0020.0002][.0000.002F.0002] # LEFTWARDS DOUBLE ARROW WITH STROKE -21CE ; [*05F0.0020.0002][.0000.002F.0002] # LEFT RIGHT DOUBLE ARROW WITH STROKE -21CF ; [*05EE.0020.0002][.0000.002F.0002] # RIGHTWARDS DOUBLE ARROW WITH STROKE -21D0 ; [*05EC.0020.0002] # LEFTWARDS DOUBLE ARROW -21D1 ; [*05ED.0020.0002] # UPWARDS DOUBLE ARROW -21D2 ; [*05EE.0020.0002] # RIGHTWARDS DOUBLE ARROW -21D3 ; [*05EF.0020.0002] # DOWNWARDS DOUBLE ARROW -21D4 ; [*05F0.0020.0002] # LEFT RIGHT DOUBLE ARROW -21D5 ; [*05F1.0020.0002] # UP DOWN DOUBLE ARROW -21D6 ; [*05F2.0020.0002] # NORTH WEST DOUBLE ARROW -21D7 ; [*05F3.0020.0002] # NORTH EAST DOUBLE ARROW -21D8 ; [*05F4.0020.0002] # SOUTH EAST DOUBLE ARROW -21D9 ; [*05F5.0020.0002] # SOUTH WEST DOUBLE ARROW -21DA ; [*05F6.0020.0002] # LEFTWARDS TRIPLE ARROW -21DB ; [*05F7.0020.0002] # RIGHTWARDS TRIPLE ARROW -21DC ; [*05F8.0020.0002] # LEFTWARDS SQUIGGLE ARROW -21DD ; [*05F9.0020.0002] # RIGHTWARDS SQUIGGLE ARROW -21DE ; [*05FA.0020.0002] # UPWARDS ARROW WITH DOUBLE STROKE -21DF ; [*05FB.0020.0002] # DOWNWARDS ARROW WITH DOUBLE STROKE -21E0 ; [*05FC.0020.0002] # LEFTWARDS DASHED ARROW -21E1 ; [*05FD.0020.0002] # UPWARDS DASHED ARROW -21E2 ; [*05FE.0020.0002] # RIGHTWARDS DASHED ARROW -21E3 ; [*05FF.0020.0002] # DOWNWARDS DASHED ARROW -21E4 ; [*0600.0020.0002] # LEFTWARDS ARROW TO BAR -21E5 ; [*0601.0020.0002] # RIGHTWARDS ARROW TO BAR -21E6 ; [*0602.0020.0002] # LEFTWARDS WHITE ARROW -21E7 ; [*0603.0020.0002] # UPWARDS WHITE ARROW -21E8 ; [*0604.0020.0002] # RIGHTWARDS WHITE ARROW -21E9 ; [*0605.0020.0002] # DOWNWARDS WHITE ARROW -21EA ; [*0606.0020.0002] # UPWARDS WHITE ARROW FROM BAR -21EB ; [*0607.0020.0002] # UPWARDS WHITE ARROW ON PEDESTAL -21EC ; [*0608.0020.0002] # UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR -21ED ; [*0609.0020.0002] # UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR -21EE ; [*060A.0020.0002] # UPWARDS WHITE DOUBLE ARROW -21EF ; [*060B.0020.0002] # UPWARDS WHITE DOUBLE ARROW ON PEDESTAL -21F0 ; [*060C.0020.0002] # RIGHTWARDS WHITE ARROW FROM WALL -21F1 ; [*060D.0020.0002] # NORTH WEST ARROW TO CORNER -21F2 ; [*060E.0020.0002] # SOUTH EAST ARROW TO CORNER -21F3 ; [*060F.0020.0002] # UP DOWN WHITE ARROW -21F4 ; [*0610.0020.0002] # RIGHT ARROW WITH SMALL CIRCLE -21F5 ; [*0611.0020.0002] # DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW -21F6 ; [*0612.0020.0002] # THREE RIGHTWARDS ARROWS -21F7 ; [*0613.0020.0002] # LEFTWARDS ARROW WITH VERTICAL STROKE -21F8 ; [*0614.0020.0002] # RIGHTWARDS ARROW WITH VERTICAL STROKE -21F9 ; [*0615.0020.0002] # LEFT RIGHT ARROW WITH VERTICAL STROKE -21FA ; [*0616.0020.0002] # LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE -21FB ; [*0617.0020.0002] # RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE -21FC ; [*0618.0020.0002] # LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE -21FD ; [*0619.0020.0002] # LEFTWARDS OPEN-HEADED ARROW -21FE ; [*061A.0020.0002] # RIGHTWARDS OPEN-HEADED ARROW -21FF ; [*061B.0020.0002] # LEFT RIGHT OPEN-HEADED ARROW -2200 ; [*061C.0020.0002] # FOR ALL -2201 ; [*061D.0020.0002] # COMPLEMENT -2202 ; [*061E.0020.0002] # PARTIAL DIFFERENTIAL -2203 ; [*061F.0020.0002] # THERE EXISTS -2204 ; [*061F.0020.0002][.0000.002F.0002] # THERE DOES NOT EXIST -2205 ; [*0620.0020.0002] # EMPTY SET -2206 ; [*0621.0020.0002] # INCREMENT -2207 ; [*0622.0020.0002] # NABLA -2208 ; [*0623.0020.0002] # ELEMENT OF -2209 ; [*0623.0020.0002][.0000.002F.0002] # NOT AN ELEMENT OF -220A ; [*0624.0020.0002] # SMALL ELEMENT OF -220B ; [*0625.0020.0002] # CONTAINS AS MEMBER -220C ; [*0625.0020.0002][.0000.002F.0002] # DOES NOT CONTAIN AS MEMBER -220D ; [*0626.0020.0002] # SMALL CONTAINS AS MEMBER -220E ; [*0628.0020.0002] # END OF PROOF -220F ; [*0629.0020.0002] # N-ARY PRODUCT -2210 ; [*062A.0020.0002] # N-ARY COPRODUCT -2211 ; [*062B.0020.0002] # N-ARY SUMMATION -2212 ; [*0637.0020.0002] # MINUS SIGN -2213 ; [*0639.0020.0002] # MINUS-OR-PLUS SIGN -2214 ; [*063A.0020.0002] # DOT PLUS -2215 ; [*063B.0020.0002] # DIVISION SLASH -2216 ; [*063D.0020.0002] # SET MINUS -2217 ; [*063E.0020.0002] # ASTERISK OPERATOR -2218 ; [*063F.0020.0002] # RING OPERATOR -2219 ; [*0640.0020.0002] # BULLET OPERATOR -221A ; [*0641.0020.0002] # SQUARE ROOT -221B ; [*0642.0020.0002] # CUBE ROOT -221C ; [*0644.0020.0002] # FOURTH ROOT -221D ; [*0646.0020.0002] # PROPORTIONAL TO -221E ; [*0647.0020.0002] # INFINITY -221F ; [*0648.0020.0002] # RIGHT ANGLE -2220 ; [*0649.0020.0002] # ANGLE -2221 ; [*064A.0020.0002] # MEASURED ANGLE -2222 ; [*064B.0020.0002] # SPHERICAL ANGLE -2223 ; [*064C.0020.0002] # DIVIDES -2224 ; [*064C.0020.0002][.0000.002F.0002] # DOES NOT DIVIDE -2225 ; [*064D.0020.0002] # PARALLEL TO -2226 ; [*064D.0020.0002][.0000.002F.0002] # NOT PARALLEL TO -2227 ; [*064E.0020.0002] # LOGICAL AND -2228 ; [*064F.0020.0002] # LOGICAL OR -2229 ; [*0650.0020.0002] # INTERSECTION -222A ; [*0651.0020.0002] # UNION -222B ; [*0652.0020.0002] # INTEGRAL -222C ; [*0652.0020.0004][*0652.0020.0004] # DOUBLE INTEGRAL -222D ; [*0652.0020.0004][*0652.0020.0004][*0652.0020.0004] # TRIPLE INTEGRAL -222E ; [*0653.0020.0002] # CONTOUR INTEGRAL -222F ; [*0653.0020.0004][*0653.0020.0004] # SURFACE INTEGRAL -2230 ; [*0653.0020.0004][*0653.0020.0004][*0653.0020.0004] # VOLUME INTEGRAL -2231 ; [*0654.0020.0002] # CLOCKWISE INTEGRAL -2232 ; [*0655.0020.0002] # CLOCKWISE CONTOUR INTEGRAL -2233 ; [*0656.0020.0002] # ANTICLOCKWISE CONTOUR INTEGRAL -2234 ; [*0657.0020.0002] # THEREFORE -2235 ; [*0658.0020.0002] # BECAUSE -2236 ; [*0659.0020.0002] # RATIO -2237 ; [*065A.0020.0002] # PROPORTION -2238 ; [*065B.0020.0002] # DOT MINUS -2239 ; [*065C.0020.0002] # EXCESS -223A ; [*065D.0020.0002] # GEOMETRIC PROPORTION -223B ; [*065E.0020.0002] # HOMOTHETIC -223C ; [*065F.0020.0002] # TILDE OPERATOR -223D ; [*0660.0020.0002] # REVERSED TILDE -223E ; [*0661.0020.0002] # INVERTED LAZY S -223F ; [*0662.0020.0002] # SINE WAVE -2240 ; [*0663.0020.0002] # WREATH PRODUCT -2241 ; [*065F.0020.0002][.0000.002F.0002] # NOT TILDE -2242 ; [*0664.0020.0002] # MINUS TILDE -2243 ; [*0665.0020.0002] # ASYMPTOTICALLY EQUAL TO -2244 ; [*0665.0020.0002][.0000.002F.0002] # NOT ASYMPTOTICALLY EQUAL TO -2245 ; [*0666.0020.0002] # APPROXIMATELY EQUAL TO -2246 ; [*0667.0020.0002] # APPROXIMATELY BUT NOT ACTUALLY EQUAL TO -2247 ; [*0666.0020.0002][.0000.002F.0002] # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO -2248 ; [*0668.0020.0002] # ALMOST EQUAL TO -2249 ; [*0668.0020.0002][.0000.002F.0002] # NOT ALMOST EQUAL TO -224A ; [*0669.0020.0002] # ALMOST EQUAL OR EQUAL TO -224B ; [*066A.0020.0002] # TRIPLE TILDE -224C ; [*066B.0020.0002] # ALL EQUAL TO -224D ; [*066C.0020.0002] # EQUIVALENT TO -224E ; [*066D.0020.0002] # GEOMETRICALLY EQUIVALENT TO -224F ; [*066E.0020.0002] # DIFFERENCE BETWEEN -2250 ; [*066F.0020.0002] # APPROACHES THE LIMIT -2251 ; [*0670.0020.0002] # GEOMETRICALLY EQUAL TO -2252 ; [*0671.0020.0002] # APPROXIMATELY EQUAL TO OR THE IMAGE OF -2253 ; [*0672.0020.0002] # IMAGE OF OR APPROXIMATELY EQUAL TO -2254 ; [*0673.0020.0002] # COLON EQUALS -2255 ; [*0674.0020.0002] # EQUALS COLON -2256 ; [*0675.0020.0002] # RING IN EQUAL TO -2257 ; [*0676.0020.0002] # RING EQUAL TO -2258 ; [*0677.0020.0002] # CORRESPONDS TO -2259 ; [*0678.0020.0002] # ESTIMATES -225A ; [*0679.0020.0002] # EQUIANGULAR TO -225B ; [*067A.0020.0002] # STAR EQUALS -225C ; [*067B.0020.0002] # DELTA EQUAL TO -225D ; [*067C.0020.0002] # EQUAL TO BY DEFINITION -225E ; [*067D.0020.0002] # MEASURED BY -225F ; [*067E.0020.0002] # QUESTIONED EQUAL TO -2260 ; [*0631.0020.0002][.0000.002F.0002] # NOT EQUAL TO -2261 ; [*067F.0020.0002] # IDENTICAL TO -2262 ; [*067F.0020.0002][.0000.002F.0002] # NOT IDENTICAL TO -2263 ; [*0680.0020.0002] # STRICTLY EQUIVALENT TO -2264 ; [*0681.0020.0002] # LESS-THAN OR EQUAL TO -2265 ; [*0682.0020.0002] # GREATER-THAN OR EQUAL TO -2266 ; [*0683.0020.0002] # LESS-THAN OVER EQUAL TO -2267 ; [*0684.0020.0002] # GREATER-THAN OVER EQUAL TO -2268 ; [*0685.0020.0002] # LESS-THAN BUT NOT EQUAL TO -2269 ; [*0686.0020.0002] # GREATER-THAN BUT NOT EQUAL TO -226A ; [*0687.0020.0002] # MUCH LESS-THAN -226B ; [*0688.0020.0002] # MUCH GREATER-THAN -226C ; [*0689.0020.0002] # BETWEEN -226D ; [*066C.0020.0002][.0000.002F.0002] # NOT EQUIVALENT TO -226E ; [*0630.0020.0002][.0000.002F.0002] # NOT LESS-THAN -226F ; [*0632.0020.0002][.0000.002F.0002] # NOT GREATER-THAN -2270 ; [*0681.0020.0002][.0000.002F.0002] # NEITHER LESS-THAN NOR EQUAL TO -2271 ; [*0682.0020.0002][.0000.002F.0002] # NEITHER GREATER-THAN NOR EQUAL TO -2272 ; [*068A.0020.0002] # LESS-THAN OR EQUIVALENT TO -2273 ; [*068B.0020.0002] # GREATER-THAN OR EQUIVALENT TO -2274 ; [*068A.0020.0002][.0000.002F.0002] # NEITHER LESS-THAN NOR EQUIVALENT TO -2275 ; [*068B.0020.0002][.0000.002F.0002] # NEITHER GREATER-THAN NOR EQUIVALENT TO -2276 ; [*068C.0020.0002] # LESS-THAN OR GREATER-THAN -2277 ; [*068D.0020.0002] # GREATER-THAN OR LESS-THAN -2278 ; [*068C.0020.0002][.0000.002F.0002] # NEITHER LESS-THAN NOR GREATER-THAN -2279 ; [*068D.0020.0002][.0000.002F.0002] # NEITHER GREATER-THAN NOR LESS-THAN -227A ; [*068E.0020.0002] # PRECEDES -227B ; [*068F.0020.0002] # SUCCEEDS -227C ; [*0690.0020.0002] # PRECEDES OR EQUAL TO -227D ; [*0691.0020.0002] # SUCCEEDS OR EQUAL TO -227E ; [*0692.0020.0002] # PRECEDES OR EQUIVALENT TO -227F ; [*0693.0020.0002] # SUCCEEDS OR EQUIVALENT TO -2280 ; [*068E.0020.0002][.0000.002F.0002] # DOES NOT PRECEDE -2281 ; [*068F.0020.0002][.0000.002F.0002] # DOES NOT SUCCEED -2282 ; [*0694.0020.0002] # SUBSET OF -2283 ; [*0695.0020.0002] # SUPERSET OF -2284 ; [*0694.0020.0002][.0000.002F.0002] # NOT A SUBSET OF -2285 ; [*0695.0020.0002][.0000.002F.0002] # NOT A SUPERSET OF -2286 ; [*0696.0020.0002] # SUBSET OF OR EQUAL TO -2287 ; [*0697.0020.0002] # SUPERSET OF OR EQUAL TO -2288 ; [*0696.0020.0002][.0000.002F.0002] # NEITHER A SUBSET OF NOR EQUAL TO -2289 ; [*0697.0020.0002][.0000.002F.0002] # NEITHER A SUPERSET OF NOR EQUAL TO -228A ; [*0698.0020.0002] # SUBSET OF WITH NOT EQUAL TO -228B ; [*0699.0020.0002] # SUPERSET OF WITH NOT EQUAL TO -228C ; [*069A.0020.0002] # MULTISET -228D ; [*069B.0020.0002] # MULTISET MULTIPLICATION -228E ; [*069C.0020.0002] # MULTISET UNION -228F ; [*069D.0020.0002] # SQUARE IMAGE OF -2290 ; [*069E.0020.0002] # SQUARE ORIGINAL OF -2291 ; [*069F.0020.0002] # SQUARE IMAGE OF OR EQUAL TO -2292 ; [*06A0.0020.0002] # SQUARE ORIGINAL OF OR EQUAL TO -2293 ; [*06A1.0020.0002] # SQUARE CAP -2294 ; [*06A2.0020.0002] # SQUARE CUP -2295 ; [*06A3.0020.0002] # CIRCLED PLUS -2296 ; [*06A4.0020.0002] # CIRCLED MINUS -2297 ; [*06A5.0020.0002] # CIRCLED TIMES -2298 ; [*06A6.0020.0002] # CIRCLED DIVISION SLASH -2299 ; [*06A7.0020.0002] # CIRCLED DOT OPERATOR -229A ; [*06A8.0020.0002] # CIRCLED RING OPERATOR -229B ; [*06A9.0020.0002] # CIRCLED ASTERISK OPERATOR -229C ; [*06AA.0020.0002] # CIRCLED EQUALS -229D ; [*06AB.0020.0002] # CIRCLED DASH -229E ; [*06AC.0020.0002] # SQUARED PLUS -229F ; [*06AD.0020.0002] # SQUARED MINUS -22A0 ; [*06AE.0020.0002] # SQUARED TIMES -22A1 ; [*06AF.0020.0002] # SQUARED DOT OPERATOR -22A2 ; [*06B0.0020.0002] # RIGHT TACK -22A3 ; [*06B1.0020.0002] # LEFT TACK -22A4 ; [*06B2.0020.0002] # DOWN TACK -22A5 ; [*06B3.0020.0002] # UP TACK -22A6 ; [*06B4.0020.0002] # ASSERTION -22A7 ; [*06B5.0020.0002] # MODELS -22A8 ; [*06B6.0020.0002] # TRUE -22A9 ; [*06B7.0020.0002] # FORCES -22AA ; [*06B8.0020.0002] # TRIPLE VERTICAL BAR RIGHT TURNSTILE -22AB ; [*06B9.0020.0002] # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE -22AC ; [*06B0.0020.0002][.0000.002F.0002] # DOES NOT PROVE -22AD ; [*06B6.0020.0002][.0000.002F.0002] # NOT TRUE -22AE ; [*06B7.0020.0002][.0000.002F.0002] # DOES NOT FORCE -22AF ; [*06B9.0020.0002][.0000.002F.0002] # NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE -22B0 ; [*06BA.0020.0002] # PRECEDES UNDER RELATION -22B1 ; [*06BB.0020.0002] # SUCCEEDS UNDER RELATION -22B2 ; [*06BC.0020.0002] # NORMAL SUBGROUP OF -22B3 ; [*06BD.0020.0002] # CONTAINS AS NORMAL SUBGROUP -22B4 ; [*06BE.0020.0002] # NORMAL SUBGROUP OF OR EQUAL TO -22B5 ; [*06BF.0020.0002] # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO -22B6 ; [*06C0.0020.0002] # ORIGINAL OF -22B7 ; [*06C1.0020.0002] # IMAGE OF -22B8 ; [*06C2.0020.0002] # MULTIMAP -22B9 ; [*06C3.0020.0002] # HERMITIAN CONJUGATE MATRIX -22BA ; [*06C4.0020.0002] # INTERCALATE -22BB ; [*06C5.0020.0002] # XOR -22BC ; [*06C6.0020.0002] # NAND -22BD ; [*06C8.0020.0002] # NOR -22BE ; [*06C9.0020.0002] # RIGHT ANGLE WITH ARC -22BF ; [*06CA.0020.0002] # RIGHT TRIANGLE -22C0 ; [*06CB.0020.0002] # N-ARY LOGICAL AND -22C1 ; [*06CC.0020.0002] # N-ARY LOGICAL OR -22C2 ; [*06CD.0020.0002] # N-ARY INTERSECTION -22C3 ; [*06CE.0020.0002] # N-ARY UNION -22C4 ; [*06CF.0020.0002] # DIAMOND OPERATOR -22C5 ; [*06D0.0020.0002] # DOT OPERATOR -22C6 ; [*06D1.0020.0002] # STAR OPERATOR -22C7 ; [*06D2.0020.0002] # DIVISION TIMES -22C8 ; [*06D3.0020.0002] # BOWTIE -22C9 ; [*06D4.0020.0002] # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT -22CA ; [*06D5.0020.0002] # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT -22CB ; [*06D6.0020.0002] # LEFT SEMIDIRECT PRODUCT -22CC ; [*06D7.0020.0002] # RIGHT SEMIDIRECT PRODUCT -22CD ; [*06D8.0020.0002] # REVERSED TILDE EQUALS -22CE ; [*06D9.0020.0002] # CURLY LOGICAL OR -22CF ; [*06DA.0020.0002] # CURLY LOGICAL AND -22D0 ; [*06DB.0020.0002] # DOUBLE SUBSET -22D1 ; [*06DC.0020.0002] # DOUBLE SUPERSET -22D2 ; [*06DD.0020.0002] # DOUBLE INTERSECTION -22D3 ; [*06DE.0020.0002] # DOUBLE UNION -22D4 ; [*06DF.0020.0002] # PITCHFORK -22D5 ; [*06E0.0020.0002] # EQUAL AND PARALLEL TO -22D6 ; [*06E1.0020.0002] # LESS-THAN WITH DOT -22D7 ; [*06E2.0020.0002] # GREATER-THAN WITH DOT -22D8 ; [*06E3.0020.0002] # VERY MUCH LESS-THAN -22D9 ; [*06E4.0020.0002] # VERY MUCH GREATER-THAN -22DA ; [*06E5.0020.0002] # LESS-THAN EQUAL TO OR GREATER-THAN -22DB ; [*06E6.0020.0002] # GREATER-THAN EQUAL TO OR LESS-THAN -22DC ; [*06E7.0020.0002] # EQUAL TO OR LESS-THAN -22DD ; [*06E8.0020.0002] # EQUAL TO OR GREATER-THAN -22DE ; [*06E9.0020.0002] # EQUAL TO OR PRECEDES -22DF ; [*06EA.0020.0002] # EQUAL TO OR SUCCEEDS -22E0 ; [*0690.0020.0002][.0000.002F.0002] # DOES NOT PRECEDE OR EQUAL -22E1 ; [*0691.0020.0002][.0000.002F.0002] # DOES NOT SUCCEED OR EQUAL -22E2 ; [*069F.0020.0002][.0000.002F.0002] # NOT SQUARE IMAGE OF OR EQUAL TO -22E3 ; [*06A0.0020.0002][.0000.002F.0002] # NOT SQUARE ORIGINAL OF OR EQUAL TO -22E4 ; [*06EB.0020.0002] # SQUARE IMAGE OF OR NOT EQUAL TO -22E5 ; [*06EC.0020.0002] # SQUARE ORIGINAL OF OR NOT EQUAL TO -22E6 ; [*06ED.0020.0002] # LESS-THAN BUT NOT EQUIVALENT TO -22E7 ; [*06EE.0020.0002] # GREATER-THAN BUT NOT EQUIVALENT TO -22E8 ; [*06EF.0020.0002] # PRECEDES BUT NOT EQUIVALENT TO -22E9 ; [*06F0.0020.0002] # SUCCEEDS BUT NOT EQUIVALENT TO -22EA ; [*06BC.0020.0002][.0000.002F.0002] # NOT NORMAL SUBGROUP OF -22EB ; [*06BD.0020.0002][.0000.002F.0002] # DOES NOT CONTAIN AS NORMAL SUBGROUP -22EC ; [*06BE.0020.0002][.0000.002F.0002] # NOT NORMAL SUBGROUP OF OR EQUAL TO -22ED ; [*06BF.0020.0002][.0000.002F.0002] # DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL -22EE ; [*06F1.0020.0002] # VERTICAL ELLIPSIS -22EF ; [*06F2.0020.0002] # MIDLINE HORIZONTAL ELLIPSIS -22F0 ; [*06F3.0020.0002] # UP RIGHT DIAGONAL ELLIPSIS -22F1 ; [*06F4.0020.0002] # DOWN RIGHT DIAGONAL ELLIPSIS -22F2 ; [*06F5.0020.0002] # ELEMENT OF WITH LONG HORIZONTAL STROKE -22F3 ; [*06F6.0020.0002] # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22F4 ; [*06F7.0020.0002] # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22F5 ; [*06F8.0020.0002] # ELEMENT OF WITH DOT ABOVE -22F6 ; [*06F9.0020.0002] # ELEMENT OF WITH OVERBAR -22F7 ; [*06FA.0020.0002] # SMALL ELEMENT OF WITH OVERBAR -22F8 ; [*06FB.0020.0002] # ELEMENT OF WITH UNDERBAR -22F9 ; [*06FC.0020.0002] # ELEMENT OF WITH TWO HORIZONTAL STROKES -22FA ; [*06FD.0020.0002] # CONTAINS WITH LONG HORIZONTAL STROKE -22FB ; [*06FE.0020.0002] # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22FC ; [*06FF.0020.0002] # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22FD ; [*0700.0020.0002] # CONTAINS WITH OVERBAR -22FE ; [*0701.0020.0002] # SMALL CONTAINS WITH OVERBAR -22FF ; [*0702.0020.0002] # Z NOTATION BAG MEMBERSHIP -2300 ; [*0703.0020.0002] # DIAMETER SIGN -2301 ; [*0704.0020.0002] # ELECTRIC ARROW -2302 ; [*0705.0020.0002] # HOUSE -2303 ; [*0706.0020.0002] # UP ARROWHEAD -2304 ; [*0707.0020.0002] # DOWN ARROWHEAD -2305 ; [*0708.0020.0002] # PROJECTIVE -2306 ; [*0709.0020.0002] # PERSPECTIVE -2307 ; [*070A.0020.0002] # WAVY LINE -2308 ; [*0326.0020.0002] # LEFT CEILING -2309 ; [*0327.0020.0002] # RIGHT CEILING -230A ; [*0328.0020.0002] # LEFT FLOOR -230B ; [*0329.0020.0002] # RIGHT FLOOR -230C ; [*070B.0020.0002] # BOTTOM RIGHT CROP -230D ; [*070C.0020.0002] # BOTTOM LEFT CROP -230E ; [*070D.0020.0002] # TOP RIGHT CROP -230F ; [*070E.0020.0002] # TOP LEFT CROP -2310 ; [*070F.0020.0002] # REVERSED NOT SIGN -2311 ; [*0710.0020.0002] # SQUARE LOZENGE -2312 ; [*0711.0020.0002] # ARC -2313 ; [*0712.0020.0002] # SEGMENT -2314 ; [*0713.0020.0002] # SECTOR -2315 ; [*0714.0020.0002] # TELEPHONE RECORDER -2316 ; [*0715.0020.0002] # POSITION INDICATOR -2317 ; [*0716.0020.0002] # VIEWDATA SQUARE -2318 ; [*0717.0020.0002] # PLACE OF INTEREST SIGN -2319 ; [*0718.0020.0002] # TURNED NOT SIGN -231A ; [*0719.0020.0002] # WATCH -231B ; [*071A.0020.0002] # HOURGLASS -231C ; [*071B.0020.0002] # TOP LEFT CORNER -231D ; [*071C.0020.0002] # TOP RIGHT CORNER -231E ; [*071D.0020.0002] # BOTTOM LEFT CORNER -231F ; [*071E.0020.0002] # BOTTOM RIGHT CORNER -2320 ; [*071F.0020.0002] # TOP HALF INTEGRAL -2321 ; [*0720.0020.0002] # BOTTOM HALF INTEGRAL -2322 ; [*0721.0020.0002] # FROWN -2323 ; [*0722.0020.0002] # SMILE -2324 ; [*0723.0020.0002] # UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS -2325 ; [*0724.0020.0002] # OPTION KEY -2326 ; [*0725.0020.0002] # ERASE TO THE RIGHT -2327 ; [*0726.0020.0002] # X IN A RECTANGLE BOX -2328 ; [*0727.0020.0002] # KEYBOARD -2329 ; [*0370.0020.0002] # LEFT-POINTING ANGLE BRACKET -232A ; [*0371.0020.0002] # RIGHT-POINTING ANGLE BRACKET -232B ; [*0728.0020.0002] # ERASE TO THE LEFT -232C ; [*0729.0020.0002] # BENZENE RING -232D ; [*072A.0020.0002] # CYLINDRICITY -232E ; [*072B.0020.0002] # ALL AROUND-PROFILE -232F ; [*072C.0020.0002] # SYMMETRY -2330 ; [*072D.0020.0002] # TOTAL RUNOUT -2331 ; [*072E.0020.0002] # DIMENSION ORIGIN -2332 ; [*072F.0020.0002] # CONICAL TAPER -2333 ; [*0730.0020.0002] # SLOPE -2334 ; [*0731.0020.0002] # COUNTERBORE -2335 ; [*0732.0020.0002] # COUNTERSINK -2336 ; [*0733.0020.0002] # APL FUNCTIONAL SYMBOL I-BEAM -2337 ; [*0734.0020.0002] # APL FUNCTIONAL SYMBOL SQUISH QUAD -2338 ; [*0735.0020.0002] # APL FUNCTIONAL SYMBOL QUAD EQUAL -2339 ; [*0736.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DIVIDE -233A ; [*0737.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DIAMOND -233B ; [*0738.0020.0002] # APL FUNCTIONAL SYMBOL QUAD JOT -233C ; [*0739.0020.0002] # APL FUNCTIONAL SYMBOL QUAD CIRCLE -233D ; [*073A.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE STILE -233E ; [*073B.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE JOT -233F ; [*073C.0020.0002] # APL FUNCTIONAL SYMBOL SLASH BAR -2340 ; [*073D.0020.0002] # APL FUNCTIONAL SYMBOL BACKSLASH BAR -2341 ; [*073E.0020.0002] # APL FUNCTIONAL SYMBOL QUAD SLASH -2342 ; [*073F.0020.0002] # APL FUNCTIONAL SYMBOL QUAD BACKSLASH -2343 ; [*0740.0020.0002] # APL FUNCTIONAL SYMBOL QUAD LESS-THAN -2344 ; [*0741.0020.0002] # APL FUNCTIONAL SYMBOL QUAD GREATER-THAN -2345 ; [*0742.0020.0002] # APL FUNCTIONAL SYMBOL LEFTWARDS VANE -2346 ; [*0743.0020.0002] # APL FUNCTIONAL SYMBOL RIGHTWARDS VANE -2347 ; [*0744.0020.0002] # APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW -2348 ; [*0745.0020.0002] # APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW -2349 ; [*0746.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH -234A ; [*0747.0020.0002] # APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR -234B ; [*0748.0020.0002] # APL FUNCTIONAL SYMBOL DELTA STILE -234C ; [*0749.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DOWN CARET -234D ; [*074A.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DELTA -234E ; [*074B.0020.0002] # APL FUNCTIONAL SYMBOL DOWN TACK JOT -234F ; [*074C.0020.0002] # APL FUNCTIONAL SYMBOL UPWARDS VANE -2350 ; [*074D.0020.0002] # APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW -2351 ; [*074E.0020.0002] # APL FUNCTIONAL SYMBOL UP TACK OVERBAR -2352 ; [*074F.0020.0002] # APL FUNCTIONAL SYMBOL DEL STILE -2353 ; [*0750.0020.0002] # APL FUNCTIONAL SYMBOL QUAD UP CARET -2354 ; [*0751.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DEL -2355 ; [*0752.0020.0002] # APL FUNCTIONAL SYMBOL UP TACK JOT -2356 ; [*0753.0020.0002] # APL FUNCTIONAL SYMBOL DOWNWARDS VANE -2357 ; [*0754.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW -2358 ; [*0755.0020.0002] # APL FUNCTIONAL SYMBOL QUOTE UNDERBAR -2359 ; [*0756.0020.0002] # APL FUNCTIONAL SYMBOL DELTA UNDERBAR -235A ; [*0757.0020.0002] # APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR -235B ; [*0758.0020.0002] # APL FUNCTIONAL SYMBOL JOT UNDERBAR -235C ; [*0759.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR -235D ; [*075A.0020.0002] # APL FUNCTIONAL SYMBOL UP SHOE JOT -235E ; [*075B.0020.0002] # APL FUNCTIONAL SYMBOL QUOTE QUAD -235F ; [*075C.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE STAR -2360 ; [*075D.0020.0002] # APL FUNCTIONAL SYMBOL QUAD COLON -2361 ; [*075E.0020.0002] # APL FUNCTIONAL SYMBOL UP TACK DIAERESIS -2362 ; [*075F.0020.0002] # APL FUNCTIONAL SYMBOL DEL DIAERESIS -2363 ; [*0760.0020.0002] # APL FUNCTIONAL SYMBOL STAR DIAERESIS -2364 ; [*0761.0020.0002] # APL FUNCTIONAL SYMBOL JOT DIAERESIS -2365 ; [*0762.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS -2366 ; [*0763.0020.0002] # APL FUNCTIONAL SYMBOL DOWN SHOE STILE -2367 ; [*0764.0020.0002] # APL FUNCTIONAL SYMBOL LEFT SHOE STILE -2368 ; [*0765.0020.0002] # APL FUNCTIONAL SYMBOL TILDE DIAERESIS -2369 ; [*0766.0020.0002] # APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS -236A ; [*0767.0020.0002] # APL FUNCTIONAL SYMBOL COMMA BAR -236B ; [*0768.0020.0002] # APL FUNCTIONAL SYMBOL DEL TILDE -236C ; [*0769.0020.0002] # APL FUNCTIONAL SYMBOL ZILDE -236D ; [*076A.0020.0002] # APL FUNCTIONAL SYMBOL STILE TILDE -236E ; [*076B.0020.0002] # APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR -236F ; [*076C.0020.0002] # APL FUNCTIONAL SYMBOL QUAD NOT EQUAL -2370 ; [*076D.0020.0002] # APL FUNCTIONAL SYMBOL QUAD QUESTION -2371 ; [*076E.0020.0002] # APL FUNCTIONAL SYMBOL DOWN CARET TILDE -2372 ; [*076F.0020.0002] # APL FUNCTIONAL SYMBOL UP CARET TILDE -2373 ; [*0770.0020.0002] # APL FUNCTIONAL SYMBOL IOTA -2374 ; [*0771.0020.0002] # APL FUNCTIONAL SYMBOL RHO -2375 ; [*0772.0020.0002] # APL FUNCTIONAL SYMBOL OMEGA -2376 ; [*0773.0020.0002] # APL FUNCTIONAL SYMBOL ALPHA UNDERBAR -2377 ; [*0774.0020.0002] # APL FUNCTIONAL SYMBOL EPSILON UNDERBAR -2378 ; [*0775.0020.0002] # APL FUNCTIONAL SYMBOL IOTA UNDERBAR -2379 ; [*0776.0020.0002] # APL FUNCTIONAL SYMBOL OMEGA UNDERBAR -237A ; [*0777.0020.0002] # APL FUNCTIONAL SYMBOL ALPHA -237B ; [*0778.0020.0002] # NOT CHECK MARK -237C ; [*0779.0020.0002] # RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW -237D ; [*077A.0020.0002] # SHOULDERED OPEN BOX -237E ; [*077B.0020.0002] # BELL SYMBOL -237F ; [*077C.0020.0002] # VERTICAL LINE WITH MIDDLE DOT -2380 ; [*077D.0020.0002] # INSERTION SYMBOL -2381 ; [*077E.0020.0002] # CONTINUOUS UNDERLINE SYMBOL -2382 ; [*077F.0020.0002] # DISCONTINUOUS UNDERLINE SYMBOL -2383 ; [*0780.0020.0002] # EMPHASIS SYMBOL -2384 ; [*0781.0020.0002] # COMPOSITION SYMBOL -2385 ; [*0782.0020.0002] # WHITE SQUARE WITH CENTRE VERTICAL LINE -2386 ; [*0783.0020.0002] # ENTER SYMBOL -2387 ; [*0784.0020.0002] # ALTERNATIVE KEY SYMBOL -2388 ; [*0785.0020.0002] # HELM SYMBOL -2389 ; [*0786.0020.0002] # CIRCLED HORIZONTAL BAR WITH NOTCH -238A ; [*0787.0020.0002] # CIRCLED TRIANGLE DOWN -238B ; [*0788.0020.0002] # BROKEN CIRCLE WITH NORTHWEST ARROW -238C ; [*0789.0020.0002] # UNDO SYMBOL -238D ; [*078A.0020.0002] # MONOSTABLE SYMBOL -238E ; [*078B.0020.0002] # HYSTERESIS SYMBOL -238F ; [*078C.0020.0002] # OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL -2390 ; [*078D.0020.0002] # OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL -2391 ; [*078E.0020.0002] # PASSIVE-PULL-DOWN-OUTPUT SYMBOL -2392 ; [*078F.0020.0002] # PASSIVE-PULL-UP-OUTPUT SYMBOL -2393 ; [*0790.0020.0002] # DIRECT CURRENT SYMBOL FORM TWO -2394 ; [*0791.0020.0002] # SOFTWARE-FUNCTION SYMBOL -2395 ; [*0792.0020.0002] # APL FUNCTIONAL SYMBOL QUAD -2396 ; [*0793.0020.0002] # DECIMAL SEPARATOR KEY SYMBOL -2397 ; [*0794.0020.0002] # PREVIOUS PAGE -2398 ; [*0795.0020.0002] # NEXT PAGE -2399 ; [*0796.0020.0002] # PRINT SCREEN SYMBOL -239A ; [*0797.0020.0002] # CLEAR SCREEN SYMBOL -239B ; [*0798.0020.0002] # LEFT PARENTHESIS UPPER HOOK -239C ; [*0799.0020.0002] # LEFT PARENTHESIS EXTENSION -239D ; [*079A.0020.0002] # LEFT PARENTHESIS LOWER HOOK -239E ; [*079B.0020.0002] # RIGHT PARENTHESIS UPPER HOOK -239F ; [*079C.0020.0002] # RIGHT PARENTHESIS EXTENSION -23A0 ; [*079D.0020.0002] # RIGHT PARENTHESIS LOWER HOOK -23A1 ; [*079E.0020.0002] # LEFT SQUARE BRACKET UPPER CORNER -23A2 ; [*079F.0020.0002] # LEFT SQUARE BRACKET EXTENSION -23A3 ; [*07A0.0020.0002] # LEFT SQUARE BRACKET LOWER CORNER -23A4 ; [*07A1.0020.0002] # RIGHT SQUARE BRACKET UPPER CORNER -23A5 ; [*07A2.0020.0002] # RIGHT SQUARE BRACKET EXTENSION -23A6 ; [*07A3.0020.0002] # RIGHT SQUARE BRACKET LOWER CORNER -23A7 ; [*07A4.0020.0002] # LEFT CURLY BRACKET UPPER HOOK -23A8 ; [*07A5.0020.0002] # LEFT CURLY BRACKET MIDDLE PIECE -23A9 ; [*07A6.0020.0002] # LEFT CURLY BRACKET LOWER HOOK -23AA ; [*07A7.0020.0002] # CURLY BRACKET EXTENSION -23AB ; [*07A8.0020.0002] # RIGHT CURLY BRACKET UPPER HOOK -23AC ; [*07A9.0020.0002] # RIGHT CURLY BRACKET MIDDLE PIECE -23AD ; [*07AA.0020.0002] # RIGHT CURLY BRACKET LOWER HOOK -23AE ; [*07AB.0020.0002] # INTEGRAL EXTENSION -23AF ; [*07AC.0020.0002] # HORIZONTAL LINE EXTENSION -23B0 ; [*07AD.0020.0002] # UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION -23B1 ; [*07AE.0020.0002] # UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION -23B2 ; [*07AF.0020.0002] # SUMMATION TOP -23B3 ; [*07B0.0020.0002] # SUMMATION BOTTOM -23B4 ; [*07B1.0020.0002] # TOP SQUARE BRACKET -23B5 ; [*07B2.0020.0002] # BOTTOM SQUARE BRACKET -23B6 ; [*07B3.0020.0002] # BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET -23B7 ; [*07B4.0020.0002] # RADICAL SYMBOL BOTTOM -23B8 ; [*07B5.0020.0002] # LEFT VERTICAL BOX LINE -23B9 ; [*07B6.0020.0002] # RIGHT VERTICAL BOX LINE -23BA ; [*07B7.0020.0002] # HORIZONTAL SCAN LINE-1 -23BB ; [*07B8.0020.0002] # HORIZONTAL SCAN LINE-3 -23BC ; [*07B9.0020.0002] # HORIZONTAL SCAN LINE-7 -23BD ; [*07BA.0020.0002] # HORIZONTAL SCAN LINE-9 -23BE ; [*07BB.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT -23BF ; [*07BC.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT -23C0 ; [*07BD.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE -23C1 ; [*07BE.0020.0002] # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE -23C2 ; [*07BF.0020.0002] # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE -23C3 ; [*07C0.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE -23C4 ; [*07C1.0020.0002] # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE -23C5 ; [*07C2.0020.0002] # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE -23C6 ; [*07C3.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE -23C7 ; [*07C4.0020.0002] # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE -23C8 ; [*07C5.0020.0002] # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE -23C9 ; [*07C6.0020.0002] # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL -23CA ; [*07C7.0020.0002] # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL -23CB ; [*07C8.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT -23CC ; [*07C9.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT -23CD ; [*07CA.0020.0002] # SQUARE FOOT -23CE ; [*07CB.0020.0002] # RETURN SYMBOL -23CF ; [*07CC.0020.0002] # EJECT SYMBOL -23D0 ; [*07CD.0020.0002] # VERTICAL LINE EXTENSION -23D1 ; [*07CE.0020.0002] # METRICAL BREVE -23D2 ; [*07CF.0020.0002] # METRICAL LONG OVER SHORT -23D3 ; [*07D0.0020.0002] # METRICAL SHORT OVER LONG -23D4 ; [*07D1.0020.0002] # METRICAL LONG OVER TWO SHORTS -23D5 ; [*07D2.0020.0002] # METRICAL TWO SHORTS OVER LONG -23D6 ; [*07D3.0020.0002] # METRICAL TWO SHORTS JOINED -23D7 ; [*07D4.0020.0002] # METRICAL TRISEME -23D8 ; [*07D5.0020.0002] # METRICAL TETRASEME -23D9 ; [*07D6.0020.0002] # METRICAL PENTASEME -23DA ; [*07D7.0020.0002] # EARTH GROUND -23DB ; [*07D8.0020.0002] # FUSE -23DC ; [*07D9.0020.0002] # TOP PARENTHESIS -23DD ; [*07DA.0020.0002] # BOTTOM PARENTHESIS -23DE ; [*07DB.0020.0002] # TOP CURLY BRACKET -23DF ; [*07DC.0020.0002] # BOTTOM CURLY BRACKET -23E0 ; [*07DD.0020.0002] # TOP TORTOISE SHELL BRACKET -23E1 ; [*07DE.0020.0002] # BOTTOM TORTOISE SHELL BRACKET -23E2 ; [*07DF.0020.0002] # WHITE TRAPEZIUM -23E3 ; [*07E0.0020.0002] # BENZENE RING WITH CIRCLE -23E4 ; [*07E1.0020.0002] # STRAIGHTNESS -23E5 ; [*07E2.0020.0002] # FLATNESS -23E6 ; [*07E3.0020.0002] # AC CURRENT -23E7 ; [*07E4.0020.0002] # ELECTRICAL INTERSECTION -23E8 ; [*07E5.0020.0002] # DECIMAL EXPONENT SYMBOL -23E9 ; [*07E6.0020.0002] # BLACK RIGHT-POINTING DOUBLE TRIANGLE -23EA ; [*07E7.0020.0002] # BLACK LEFT-POINTING DOUBLE TRIANGLE -23EB ; [*07E8.0020.0002] # BLACK UP-POINTING DOUBLE TRIANGLE -23EC ; [*07E9.0020.0002] # BLACK DOWN-POINTING DOUBLE TRIANGLE -23ED ; [*07EA.0020.0002] # BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR -23EE ; [*07EB.0020.0002] # BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR -23EF ; [*07EC.0020.0002] # BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR -23F0 ; [*07ED.0020.0002] # ALARM CLOCK -23F1 ; [*07EE.0020.0002] # STOPWATCH -23F2 ; [*07EF.0020.0002] # TIMER CLOCK -23F3 ; [*07F0.0020.0002] # HOURGLASS WITH FLOWING SAND -23F4 ; [*07F1.0020.0002] # BLACK MEDIUM LEFT-POINTING TRIANGLE -23F5 ; [*07F2.0020.0002] # BLACK MEDIUM RIGHT-POINTING TRIANGLE -23F6 ; [*07F3.0020.0002] # BLACK MEDIUM UP-POINTING TRIANGLE -23F7 ; [*07F4.0020.0002] # BLACK MEDIUM DOWN-POINTING TRIANGLE -23F8 ; [*07F5.0020.0002] # DOUBLE VERTICAL BAR -23F9 ; [*07F6.0020.0002] # BLACK SQUARE FOR STOP -23FA ; [*07F7.0020.0002] # BLACK CIRCLE FOR RECORD -23FB ; [*07F8.0020.0002] # POWER SYMBOL -23FC ; [*07F9.0020.0002] # POWER ON-OFF SYMBOL -23FD ; [*07FA.0020.0002] # POWER ON SYMBOL -23FE ; [*07FB.0020.0002] # POWER SLEEP SYMBOL -23FF ; [*07FC.0020.0002] # OBSERVER EYE SYMBOL -2400 ; [*07FD.0020.0002] # SYMBOL FOR NULL -2401 ; [*07FE.0020.0002] # SYMBOL FOR START OF HEADING -2402 ; [*07FF.0020.0002] # SYMBOL FOR START OF TEXT -2403 ; [*0800.0020.0002] # SYMBOL FOR END OF TEXT -2404 ; [*0801.0020.0002] # SYMBOL FOR END OF TRANSMISSION -2405 ; [*0802.0020.0002] # SYMBOL FOR ENQUIRY -2406 ; [*0803.0020.0002] # SYMBOL FOR ACKNOWLEDGE -2407 ; [*0804.0020.0002] # SYMBOL FOR BELL -2408 ; [*0805.0020.0002] # SYMBOL FOR BACKSPACE -2409 ; [*0806.0020.0002] # SYMBOL FOR HORIZONTAL TABULATION -240A ; [*0807.0020.0002] # SYMBOL FOR LINE FEED -240B ; [*0808.0020.0002] # SYMBOL FOR VERTICAL TABULATION -240C ; [*0809.0020.0002] # SYMBOL FOR FORM FEED -240D ; [*080A.0020.0002] # SYMBOL FOR CARRIAGE RETURN -240E ; [*080B.0020.0002] # SYMBOL FOR SHIFT OUT -240F ; [*080C.0020.0002] # SYMBOL FOR SHIFT IN -2410 ; [*080D.0020.0002] # SYMBOL FOR DATA LINK ESCAPE -2411 ; [*080E.0020.0002] # SYMBOL FOR DEVICE CONTROL ONE -2412 ; [*080F.0020.0002] # SYMBOL FOR DEVICE CONTROL TWO -2413 ; [*0810.0020.0002] # SYMBOL FOR DEVICE CONTROL THREE -2414 ; [*0811.0020.0002] # SYMBOL FOR DEVICE CONTROL FOUR -2415 ; [*0812.0020.0002] # SYMBOL FOR NEGATIVE ACKNOWLEDGE -2416 ; [*0813.0020.0002] # SYMBOL FOR SYNCHRONOUS IDLE -2417 ; [*0814.0020.0002] # SYMBOL FOR END OF TRANSMISSION BLOCK -2418 ; [*0815.0020.0002] # SYMBOL FOR CANCEL -2419 ; [*0816.0020.0002] # SYMBOL FOR END OF MEDIUM -241A ; [*0817.0020.0002] # SYMBOL FOR SUBSTITUTE -241B ; [*0818.0020.0002] # SYMBOL FOR ESCAPE -241C ; [*0819.0020.0002] # SYMBOL FOR FILE SEPARATOR -241D ; [*081A.0020.0002] # SYMBOL FOR GROUP SEPARATOR -241E ; [*081B.0020.0002] # SYMBOL FOR RECORD SEPARATOR -241F ; [*081C.0020.0002] # SYMBOL FOR UNIT SEPARATOR -2420 ; [*081D.0020.0002] # SYMBOL FOR SPACE -2421 ; [*081E.0020.0002] # SYMBOL FOR DELETE -2422 ; [*081F.0020.0002] # BLANK SYMBOL -2423 ; [*0820.0020.0002] # OPEN BOX -2424 ; [*0821.0020.0002] # SYMBOL FOR NEWLINE -2425 ; [*0822.0020.0002] # SYMBOL FOR DELETE FORM TWO -2426 ; [*0823.0020.0002] # SYMBOL FOR SUBSTITUTE FORM TWO -2440 ; [*0824.0020.0002] # OCR HOOK -2441 ; [*0825.0020.0002] # OCR CHAIR -2442 ; [*0826.0020.0002] # OCR FORK -2443 ; [*0827.0020.0002] # OCR INVERTED FORK -2444 ; [*0828.0020.0002] # OCR BELT BUCKLE -2445 ; [*0829.0020.0002] # OCR BOW TIE -2446 ; [*082A.0020.0002] # OCR BRANCH BANK IDENTIFICATION -2447 ; [*082B.0020.0002] # OCR AMOUNT OF CHECK -2448 ; [*082C.0020.0002] # OCR DASH -2449 ; [*082D.0020.0002] # OCR CUSTOMER ACCOUNT NUMBER -244A ; [*082E.0020.0002] # OCR DOUBLE BACKSLASH -2500 ; [*082F.0020.0002] # BOX DRAWINGS LIGHT HORIZONTAL -2501 ; [*0830.0020.0002] # BOX DRAWINGS HEAVY HORIZONTAL -2502 ; [*0831.0020.0002] # BOX DRAWINGS LIGHT VERTICAL -2503 ; [*0832.0020.0002] # BOX DRAWINGS HEAVY VERTICAL -2504 ; [*0833.0020.0002] # BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL -2505 ; [*0834.0020.0002] # BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL -2506 ; [*0835.0020.0002] # BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL -2507 ; [*0836.0020.0002] # BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL -2508 ; [*0837.0020.0002] # BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL -2509 ; [*0838.0020.0002] # BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL -250A ; [*0839.0020.0002] # BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL -250B ; [*083A.0020.0002] # BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL -250C ; [*083B.0020.0002] # BOX DRAWINGS LIGHT DOWN AND RIGHT -250D ; [*083C.0020.0002] # BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY -250E ; [*083D.0020.0002] # BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT -250F ; [*083E.0020.0002] # BOX DRAWINGS HEAVY DOWN AND RIGHT -2510 ; [*083F.0020.0002] # BOX DRAWINGS LIGHT DOWN AND LEFT -2511 ; [*0840.0020.0002] # BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY -2512 ; [*0841.0020.0002] # BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT -2513 ; [*0842.0020.0002] # BOX DRAWINGS HEAVY DOWN AND LEFT -2514 ; [*0843.0020.0002] # BOX DRAWINGS LIGHT UP AND RIGHT -2515 ; [*0844.0020.0002] # BOX DRAWINGS UP LIGHT AND RIGHT HEAVY -2516 ; [*0845.0020.0002] # BOX DRAWINGS UP HEAVY AND RIGHT LIGHT -2517 ; [*0846.0020.0002] # BOX DRAWINGS HEAVY UP AND RIGHT -2518 ; [*0847.0020.0002] # BOX DRAWINGS LIGHT UP AND LEFT -2519 ; [*0848.0020.0002] # BOX DRAWINGS UP LIGHT AND LEFT HEAVY -251A ; [*0849.0020.0002] # BOX DRAWINGS UP HEAVY AND LEFT LIGHT -251B ; [*084A.0020.0002] # BOX DRAWINGS HEAVY UP AND LEFT -251C ; [*084B.0020.0002] # BOX DRAWINGS LIGHT VERTICAL AND RIGHT -251D ; [*084C.0020.0002] # BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY -251E ; [*084D.0020.0002] # BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT -251F ; [*084E.0020.0002] # BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT -2520 ; [*084F.0020.0002] # BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT -2521 ; [*0850.0020.0002] # BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY -2522 ; [*0851.0020.0002] # BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY -2523 ; [*0852.0020.0002] # BOX DRAWINGS HEAVY VERTICAL AND RIGHT -2524 ; [*0853.0020.0002] # BOX DRAWINGS LIGHT VERTICAL AND LEFT -2525 ; [*0854.0020.0002] # BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY -2526 ; [*0855.0020.0002] # BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT -2527 ; [*0856.0020.0002] # BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT -2528 ; [*0857.0020.0002] # BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT -2529 ; [*0858.0020.0002] # BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY -252A ; [*0859.0020.0002] # BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY -252B ; [*085A.0020.0002] # BOX DRAWINGS HEAVY VERTICAL AND LEFT -252C ; [*085B.0020.0002] # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL -252D ; [*085C.0020.0002] # BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT -252E ; [*085D.0020.0002] # BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT -252F ; [*085E.0020.0002] # BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY -2530 ; [*085F.0020.0002] # BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT -2531 ; [*0860.0020.0002] # BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY -2532 ; [*0861.0020.0002] # BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY -2533 ; [*0862.0020.0002] # BOX DRAWINGS HEAVY DOWN AND HORIZONTAL -2534 ; [*0863.0020.0002] # BOX DRAWINGS LIGHT UP AND HORIZONTAL -2535 ; [*0864.0020.0002] # BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT -2536 ; [*0865.0020.0002] # BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT -2537 ; [*0866.0020.0002] # BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY -2538 ; [*0867.0020.0002] # BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT -2539 ; [*0868.0020.0002] # BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY -253A ; [*0869.0020.0002] # BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY -253B ; [*086A.0020.0002] # BOX DRAWINGS HEAVY UP AND HORIZONTAL -253C ; [*086B.0020.0002] # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL -253D ; [*086C.0020.0002] # BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT -253E ; [*086D.0020.0002] # BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT -253F ; [*086E.0020.0002] # BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY -2540 ; [*086F.0020.0002] # BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT -2541 ; [*0870.0020.0002] # BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT -2542 ; [*0871.0020.0002] # BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT -2543 ; [*0872.0020.0002] # BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT -2544 ; [*0873.0020.0002] # BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT -2545 ; [*0874.0020.0002] # BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT -2546 ; [*0875.0020.0002] # BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT -2547 ; [*0876.0020.0002] # BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY -2548 ; [*0877.0020.0002] # BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY -2549 ; [*0878.0020.0002] # BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY -254A ; [*0879.0020.0002] # BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY -254B ; [*087A.0020.0002] # BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL -254C ; [*087B.0020.0002] # BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL -254D ; [*087C.0020.0002] # BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL -254E ; [*087D.0020.0002] # BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL -254F ; [*087E.0020.0002] # BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL -2550 ; [*087F.0020.0002] # BOX DRAWINGS DOUBLE HORIZONTAL -2551 ; [*0880.0020.0002] # BOX DRAWINGS DOUBLE VERTICAL -2552 ; [*0881.0020.0002] # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE -2553 ; [*0882.0020.0002] # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE -2554 ; [*0883.0020.0002] # BOX DRAWINGS DOUBLE DOWN AND RIGHT -2555 ; [*0884.0020.0002] # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE -2556 ; [*0885.0020.0002] # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE -2557 ; [*0886.0020.0002] # BOX DRAWINGS DOUBLE DOWN AND LEFT -2558 ; [*0887.0020.0002] # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE -2559 ; [*0888.0020.0002] # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE -255A ; [*0889.0020.0002] # BOX DRAWINGS DOUBLE UP AND RIGHT -255B ; [*088A.0020.0002] # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE -255C ; [*088B.0020.0002] # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE -255D ; [*088C.0020.0002] # BOX DRAWINGS DOUBLE UP AND LEFT -255E ; [*088D.0020.0002] # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE -255F ; [*088E.0020.0002] # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE -2560 ; [*088F.0020.0002] # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT -2561 ; [*0890.0020.0002] # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE -2562 ; [*0891.0020.0002] # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE -2563 ; [*0892.0020.0002] # BOX DRAWINGS DOUBLE VERTICAL AND LEFT -2564 ; [*0893.0020.0002] # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE -2565 ; [*0894.0020.0002] # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE -2566 ; [*0895.0020.0002] # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL -2567 ; [*0896.0020.0002] # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE -2568 ; [*0897.0020.0002] # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE -2569 ; [*0898.0020.0002] # BOX DRAWINGS DOUBLE UP AND HORIZONTAL -256A ; [*0899.0020.0002] # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE -256B ; [*089A.0020.0002] # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE -256C ; [*089B.0020.0002] # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL -256D ; [*089C.0020.0002] # BOX DRAWINGS LIGHT ARC DOWN AND RIGHT -256E ; [*089D.0020.0002] # BOX DRAWINGS LIGHT ARC DOWN AND LEFT -256F ; [*089E.0020.0002] # BOX DRAWINGS LIGHT ARC UP AND LEFT -2570 ; [*089F.0020.0002] # BOX DRAWINGS LIGHT ARC UP AND RIGHT -2571 ; [*08A0.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT -2572 ; [*08A1.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT -2573 ; [*08A2.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL CROSS -2574 ; [*08A3.0020.0002] # BOX DRAWINGS LIGHT LEFT -2575 ; [*08A4.0020.0002] # BOX DRAWINGS LIGHT UP -2576 ; [*08A5.0020.0002] # BOX DRAWINGS LIGHT RIGHT -2577 ; [*08A6.0020.0002] # BOX DRAWINGS LIGHT DOWN -2578 ; [*08A7.0020.0002] # BOX DRAWINGS HEAVY LEFT -2579 ; [*08A8.0020.0002] # BOX DRAWINGS HEAVY UP -257A ; [*08A9.0020.0002] # BOX DRAWINGS HEAVY RIGHT -257B ; [*08AA.0020.0002] # BOX DRAWINGS HEAVY DOWN -257C ; [*08AB.0020.0002] # BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT -257D ; [*08AC.0020.0002] # BOX DRAWINGS LIGHT UP AND HEAVY DOWN -257E ; [*08AD.0020.0002] # BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT -257F ; [*08AE.0020.0002] # BOX DRAWINGS HEAVY UP AND LIGHT DOWN -2580 ; [*08AF.0020.0002] # UPPER HALF BLOCK -2581 ; [*08B0.0020.0002] # LOWER ONE EIGHTH BLOCK -2582 ; [*08B1.0020.0002] # LOWER ONE QUARTER BLOCK -2583 ; [*08B2.0020.0002] # LOWER THREE EIGHTHS BLOCK -2584 ; [*08B3.0020.0002] # LOWER HALF BLOCK -2585 ; [*08B4.0020.0002] # LOWER FIVE EIGHTHS BLOCK -2586 ; [*08B5.0020.0002] # LOWER THREE QUARTERS BLOCK -2587 ; [*08B6.0020.0002] # LOWER SEVEN EIGHTHS BLOCK -2588 ; [*08B7.0020.0002] # FULL BLOCK -2589 ; [*08B8.0020.0002] # LEFT SEVEN EIGHTHS BLOCK -258A ; [*08B9.0020.0002] # LEFT THREE QUARTERS BLOCK -258B ; [*08BA.0020.0002] # LEFT FIVE EIGHTHS BLOCK -258C ; [*08BB.0020.0002] # LEFT HALF BLOCK -258D ; [*08BC.0020.0002] # LEFT THREE EIGHTHS BLOCK -258E ; [*08BD.0020.0002] # LEFT ONE QUARTER BLOCK -258F ; [*08BE.0020.0002] # LEFT ONE EIGHTH BLOCK -2590 ; [*08BF.0020.0002] # RIGHT HALF BLOCK -2591 ; [*08C0.0020.0002] # LIGHT SHADE -2592 ; [*08C1.0020.0002] # MEDIUM SHADE -2593 ; [*08C2.0020.0002] # DARK SHADE -2594 ; [*08C3.0020.0002] # UPPER ONE EIGHTH BLOCK -2595 ; [*08C4.0020.0002] # RIGHT ONE EIGHTH BLOCK -2596 ; [*08C5.0020.0002] # QUADRANT LOWER LEFT -2597 ; [*08C6.0020.0002] # QUADRANT LOWER RIGHT -2598 ; [*08C7.0020.0002] # QUADRANT UPPER LEFT -2599 ; [*08C8.0020.0002] # QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT -259A ; [*08C9.0020.0002] # QUADRANT UPPER LEFT AND LOWER RIGHT -259B ; [*08CA.0020.0002] # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT -259C ; [*08CB.0020.0002] # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT -259D ; [*08CC.0020.0002] # QUADRANT UPPER RIGHT -259E ; [*08CD.0020.0002] # QUADRANT UPPER RIGHT AND LOWER LEFT -259F ; [*08CE.0020.0002] # QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT -25A0 ; [*08CF.0020.0002] # BLACK SQUARE -25A1 ; [*08D0.0020.0002] # WHITE SQUARE -25A2 ; [*08D1.0020.0002] # WHITE SQUARE WITH ROUNDED CORNERS -25A3 ; [*08D2.0020.0002] # WHITE SQUARE CONTAINING BLACK SMALL SQUARE -25A4 ; [*08D3.0020.0002] # SQUARE WITH HORIZONTAL FILL -25A5 ; [*08D4.0020.0002] # SQUARE WITH VERTICAL FILL -25A6 ; [*08D5.0020.0002] # SQUARE WITH ORTHOGONAL CROSSHATCH FILL -25A7 ; [*08D6.0020.0002] # SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL -25A8 ; [*08D7.0020.0002] # SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL -25A9 ; [*08D8.0020.0002] # SQUARE WITH DIAGONAL CROSSHATCH FILL -25AA ; [*08D9.0020.0002] # BLACK SMALL SQUARE -25AB ; [*08DA.0020.0002] # WHITE SMALL SQUARE -25AC ; [*08DB.0020.0002] # BLACK RECTANGLE -25AD ; [*08DC.0020.0002] # WHITE RECTANGLE -25AE ; [*08DD.0020.0002] # BLACK VERTICAL RECTANGLE -25AF ; [*08DE.0020.0002] # WHITE VERTICAL RECTANGLE -25B0 ; [*08DF.0020.0002] # BLACK PARALLELOGRAM -25B1 ; [*08E0.0020.0002] # WHITE PARALLELOGRAM -25B2 ; [*08E1.0020.0002] # BLACK UP-POINTING TRIANGLE -25B3 ; [*08E2.0020.0002] # WHITE UP-POINTING TRIANGLE -25B4 ; [*08E3.0020.0002] # BLACK UP-POINTING SMALL TRIANGLE -25B5 ; [*08E4.0020.0002] # WHITE UP-POINTING SMALL TRIANGLE -25B6 ; [*08E5.0020.0002] # BLACK RIGHT-POINTING TRIANGLE -25B7 ; [*08E6.0020.0002] # WHITE RIGHT-POINTING TRIANGLE -25B8 ; [*08E7.0020.0002] # BLACK RIGHT-POINTING SMALL TRIANGLE -25B9 ; [*08E8.0020.0002] # WHITE RIGHT-POINTING SMALL TRIANGLE -25BA ; [*08E9.0020.0002] # BLACK RIGHT-POINTING POINTER -25BB ; [*08EA.0020.0002] # WHITE RIGHT-POINTING POINTER -25BC ; [*08EB.0020.0002] # BLACK DOWN-POINTING TRIANGLE -25BD ; [*08EC.0020.0002] # WHITE DOWN-POINTING TRIANGLE -25BE ; [*08ED.0020.0002] # BLACK DOWN-POINTING SMALL TRIANGLE -25BF ; [*08EE.0020.0002] # WHITE DOWN-POINTING SMALL TRIANGLE -25C0 ; [*08EF.0020.0002] # BLACK LEFT-POINTING TRIANGLE -25C1 ; [*08F0.0020.0002] # WHITE LEFT-POINTING TRIANGLE -25C2 ; [*08F1.0020.0002] # BLACK LEFT-POINTING SMALL TRIANGLE -25C3 ; [*08F2.0020.0002] # WHITE LEFT-POINTING SMALL TRIANGLE -25C4 ; [*08F3.0020.0002] # BLACK LEFT-POINTING POINTER -25C5 ; [*08F4.0020.0002] # WHITE LEFT-POINTING POINTER -25C6 ; [*08F5.0020.0002] # BLACK DIAMOND -25C7 ; [*08F6.0020.0002] # WHITE DIAMOND -25C8 ; [*08F7.0020.0002] # WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND -25C9 ; [*08F8.0020.0002] # FISHEYE -25CA ; [*08F9.0020.0002] # LOZENGE -25CB ; [*08FA.0020.0002] # WHITE CIRCLE -25CC ; [*08FB.0020.0002] # DOTTED CIRCLE -25CD ; [*08FC.0020.0002] # CIRCLE WITH VERTICAL FILL -25CE ; [*08FD.0020.0002] # BULLSEYE -25CF ; [*08FE.0020.0002] # BLACK CIRCLE -25D0 ; [*08FF.0020.0002] # CIRCLE WITH LEFT HALF BLACK -25D1 ; [*0900.0020.0002] # CIRCLE WITH RIGHT HALF BLACK -25D2 ; [*0901.0020.0002] # CIRCLE WITH LOWER HALF BLACK -25D3 ; [*0902.0020.0002] # CIRCLE WITH UPPER HALF BLACK -25D4 ; [*0903.0020.0002] # CIRCLE WITH UPPER RIGHT QUADRANT BLACK -25D5 ; [*0904.0020.0002] # CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK -25D6 ; [*0905.0020.0002] # LEFT HALF BLACK CIRCLE -25D7 ; [*0906.0020.0002] # RIGHT HALF BLACK CIRCLE -25D8 ; [*0907.0020.0002] # INVERSE BULLET -25D9 ; [*0908.0020.0002] # INVERSE WHITE CIRCLE -25DA ; [*0909.0020.0002] # UPPER HALF INVERSE WHITE CIRCLE -25DB ; [*090A.0020.0002] # LOWER HALF INVERSE WHITE CIRCLE -25DC ; [*090B.0020.0002] # UPPER LEFT QUADRANT CIRCULAR ARC -25DD ; [*090C.0020.0002] # UPPER RIGHT QUADRANT CIRCULAR ARC -25DE ; [*090D.0020.0002] # LOWER RIGHT QUADRANT CIRCULAR ARC -25DF ; [*090E.0020.0002] # LOWER LEFT QUADRANT CIRCULAR ARC -25E0 ; [*090F.0020.0002] # UPPER HALF CIRCLE -25E1 ; [*0910.0020.0002] # LOWER HALF CIRCLE -25E2 ; [*0911.0020.0002] # BLACK LOWER RIGHT TRIANGLE -25E3 ; [*0912.0020.0002] # BLACK LOWER LEFT TRIANGLE -25E4 ; [*0913.0020.0002] # BLACK UPPER LEFT TRIANGLE -25E5 ; [*0914.0020.0002] # BLACK UPPER RIGHT TRIANGLE -25E6 ; [*0915.0020.0002] # WHITE BULLET -25E7 ; [*0916.0020.0002] # SQUARE WITH LEFT HALF BLACK -25E8 ; [*0917.0020.0002] # SQUARE WITH RIGHT HALF BLACK -25E9 ; [*0918.0020.0002] # SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK -25EA ; [*0919.0020.0002] # SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK -25EB ; [*091A.0020.0002] # WHITE SQUARE WITH VERTICAL BISECTING LINE -25EC ; [*091B.0020.0002] # WHITE UP-POINTING TRIANGLE WITH DOT -25ED ; [*091C.0020.0002] # UP-POINTING TRIANGLE WITH LEFT HALF BLACK -25EE ; [*091D.0020.0002] # UP-POINTING TRIANGLE WITH RIGHT HALF BLACK -25EF ; [*091E.0020.0002] # LARGE CIRCLE -25F0 ; [*091F.0020.0002] # WHITE SQUARE WITH UPPER LEFT QUADRANT -25F1 ; [*0920.0020.0002] # WHITE SQUARE WITH LOWER LEFT QUADRANT -25F2 ; [*0921.0020.0002] # WHITE SQUARE WITH LOWER RIGHT QUADRANT -25F3 ; [*0922.0020.0002] # WHITE SQUARE WITH UPPER RIGHT QUADRANT -25F4 ; [*0923.0020.0002] # WHITE CIRCLE WITH UPPER LEFT QUADRANT -25F5 ; [*0924.0020.0002] # WHITE CIRCLE WITH LOWER LEFT QUADRANT -25F6 ; [*0925.0020.0002] # WHITE CIRCLE WITH LOWER RIGHT QUADRANT -25F7 ; [*0926.0020.0002] # WHITE CIRCLE WITH UPPER RIGHT QUADRANT -25F8 ; [*0927.0020.0002] # UPPER LEFT TRIANGLE -25F9 ; [*0928.0020.0002] # UPPER RIGHT TRIANGLE -25FA ; [*0929.0020.0002] # LOWER LEFT TRIANGLE -25FB ; [*092A.0020.0002] # WHITE MEDIUM SQUARE -25FC ; [*092B.0020.0002] # BLACK MEDIUM SQUARE -25FD ; [*092C.0020.0002] # WHITE MEDIUM SMALL SQUARE -25FE ; [*092D.0020.0002] # BLACK MEDIUM SMALL SQUARE -25FF ; [*092E.0020.0002] # LOWER RIGHT TRIANGLE -2600 ; [*092F.0020.0002] # BLACK SUN WITH RAYS -2601 ; [*0930.0020.0002] # CLOUD -2602 ; [*0931.0020.0002] # UMBRELLA -2603 ; [*0932.0020.0002] # SNOWMAN -2604 ; [*0933.0020.0002] # COMET -2605 ; [*0934.0020.0002] # BLACK STAR -2606 ; [*0935.0020.0002] # WHITE STAR -2607 ; [*0936.0020.0002] # LIGHTNING -2608 ; [*0937.0020.0002] # THUNDERSTORM -2609 ; [*0938.0020.0002] # SUN -260A ; [*0939.0020.0002] # ASCENDING NODE -260B ; [*093A.0020.0002] # DESCENDING NODE -260C ; [*093B.0020.0002] # CONJUNCTION -260D ; [*093C.0020.0002] # OPPOSITION -260E ; [*093D.0020.0002] # BLACK TELEPHONE -260F ; [*093E.0020.0002] # WHITE TELEPHONE -2610 ; [*093F.0020.0002] # BALLOT BOX -2611 ; [*0940.0020.0002] # BALLOT BOX WITH CHECK -2612 ; [*0941.0020.0002] # BALLOT BOX WITH X -2613 ; [*0942.0020.0002] # SALTIRE -2614 ; [*0943.0020.0002] # UMBRELLA WITH RAIN DROPS -2615 ; [*0944.0020.0002] # HOT BEVERAGE -2616 ; [*0945.0020.0002] # WHITE SHOGI PIECE -2617 ; [*0946.0020.0002] # BLACK SHOGI PIECE -2618 ; [*0947.0020.0002] # SHAMROCK -2619 ; [*0948.0020.0002] # REVERSED ROTATED FLORAL HEART BULLET -261A ; [*0949.0020.0002] # BLACK LEFT POINTING INDEX -261B ; [*094A.0020.0002] # BLACK RIGHT POINTING INDEX -261C ; [*094B.0020.0002] # WHITE LEFT POINTING INDEX -261D ; [*094C.0020.0002] # WHITE UP POINTING INDEX -261E ; [*094D.0020.0002] # WHITE RIGHT POINTING INDEX -261F ; [*094E.0020.0002] # WHITE DOWN POINTING INDEX -2620 ; [*094F.0020.0002] # SKULL AND CROSSBONES -2621 ; [*0950.0020.0002] # CAUTION SIGN -2622 ; [*0951.0020.0002] # RADIOACTIVE SIGN -2623 ; [*0952.0020.0002] # BIOHAZARD SIGN -2624 ; [*0953.0020.0002] # CADUCEUS -2625 ; [*0954.0020.0002] # ANKH -2626 ; [*0955.0020.0002] # ORTHODOX CROSS -2627 ; [*0956.0020.0002] # CHI RHO -2628 ; [*0957.0020.0002] # CROSS OF LORRAINE -2629 ; [*0958.0020.0002] # CROSS OF JERUSALEM -262A ; [*0959.0020.0002] # STAR AND CRESCENT -262B ; [*095A.0020.0002] # FARSI SYMBOL -262C ; [*095B.0020.0002] # ADI SHAKTI -262D ; [*095C.0020.0002] # HAMMER AND SICKLE -262E ; [*095D.0020.0002] # PEACE SYMBOL -262F ; [*095E.0020.0002] # YIN YANG -2630 ; [*0EBA.0020.0002] # TRIGRAM FOR HEAVEN -2631 ; [*0EBB.0020.0002] # TRIGRAM FOR LAKE -2632 ; [*0EBC.0020.0002] # TRIGRAM FOR FIRE -2633 ; [*0EBD.0020.0002] # TRIGRAM FOR THUNDER -2634 ; [*0EBE.0020.0002] # TRIGRAM FOR WIND -2635 ; [*0EBF.0020.0002] # TRIGRAM FOR WATER -2636 ; [*0EC0.0020.0002] # TRIGRAM FOR MOUNTAIN -2637 ; [*0EC1.0020.0002] # TRIGRAM FOR EARTH -2638 ; [*095F.0020.0002] # WHEEL OF DHARMA -2639 ; [*0960.0020.0002] # WHITE FROWNING FACE -263A ; [*0961.0020.0002] # WHITE SMILING FACE -263B ; [*0962.0020.0002] # BLACK SMILING FACE -263C ; [*0963.0020.0002] # WHITE SUN WITH RAYS -263D ; [*0964.0020.0002] # FIRST QUARTER MOON -263E ; [*0965.0020.0002] # LAST QUARTER MOON -263F ; [*0966.0020.0002] # MERCURY -2640 ; [*0967.0020.0002] # FEMALE SIGN -2641 ; [*0968.0020.0002] # EARTH -2642 ; [*0969.0020.0002] # MALE SIGN -2643 ; [*096A.0020.0002] # JUPITER -2644 ; [*096B.0020.0002] # SATURN -2645 ; [*096C.0020.0002] # URANUS -2646 ; [*096D.0020.0002] # NEPTUNE -2647 ; [*096E.0020.0002] # PLUTO -2648 ; [*096F.0020.0002] # ARIES -2649 ; [*0970.0020.0002] # TAURUS -264A ; [*0971.0020.0002] # GEMINI -264B ; [*0972.0020.0002] # CANCER -264C ; [*0973.0020.0002] # LEO -264D ; [*0974.0020.0002] # VIRGO -264E ; [*0975.0020.0002] # LIBRA -264F ; [*0976.0020.0002] # SCORPIUS -2650 ; [*0977.0020.0002] # SAGITTARIUS -2651 ; [*0978.0020.0002] # CAPRICORN -2652 ; [*0979.0020.0002] # AQUARIUS -2653 ; [*097A.0020.0002] # PISCES -2654 ; [*097B.0020.0002] # WHITE CHESS KING -2655 ; [*097C.0020.0002] # WHITE CHESS QUEEN -2656 ; [*097D.0020.0002] # WHITE CHESS ROOK -2657 ; [*097E.0020.0002] # WHITE CHESS BISHOP -2658 ; [*097F.0020.0002] # WHITE CHESS KNIGHT -2659 ; [*0980.0020.0002] # WHITE CHESS PAWN -265A ; [*0981.0020.0002] # BLACK CHESS KING -265B ; [*0982.0020.0002] # BLACK CHESS QUEEN -265C ; [*0983.0020.0002] # BLACK CHESS ROOK -265D ; [*0984.0020.0002] # BLACK CHESS BISHOP -265E ; [*0985.0020.0002] # BLACK CHESS KNIGHT -265F ; [*0986.0020.0002] # BLACK CHESS PAWN -2660 ; [*0987.0020.0002] # BLACK SPADE SUIT -2661 ; [*0988.0020.0002] # WHITE HEART SUIT -2662 ; [*0989.0020.0002] # WHITE DIAMOND SUIT -2663 ; [*098A.0020.0002] # BLACK CLUB SUIT -2664 ; [*098B.0020.0002] # WHITE SPADE SUIT -2665 ; [*098C.0020.0002] # BLACK HEART SUIT -2666 ; [*098D.0020.0002] # BLACK DIAMOND SUIT -2667 ; [*098E.0020.0002] # WHITE CLUB SUIT -2668 ; [*098F.0020.0002] # HOT SPRINGS -2669 ; [*0990.0020.0002] # QUARTER NOTE -266A ; [*0991.0020.0002] # EIGHTH NOTE -266B ; [*0992.0020.0002] # BEAMED EIGHTH NOTES -266C ; [*0993.0020.0002] # BEAMED SIXTEENTH NOTES -266D ; [*110B.0020.0002] # MUSIC FLAT SIGN -266E ; [*110C.0020.0002] # MUSIC NATURAL SIGN -266F ; [*110D.0020.0002] # MUSIC SHARP SIGN -2670 ; [*0994.0020.0002] # WEST SYRIAC CROSS -2671 ; [*0995.0020.0002] # EAST SYRIAC CROSS -2672 ; [*0996.0020.0002] # UNIVERSAL RECYCLING SYMBOL -2673 ; [*0997.0020.0002] # RECYCLING SYMBOL FOR TYPE-1 PLASTICS -2674 ; [*0998.0020.0002] # RECYCLING SYMBOL FOR TYPE-2 PLASTICS -2675 ; [*0999.0020.0002] # RECYCLING SYMBOL FOR TYPE-3 PLASTICS -2676 ; [*099A.0020.0002] # RECYCLING SYMBOL FOR TYPE-4 PLASTICS -2677 ; [*099B.0020.0002] # RECYCLING SYMBOL FOR TYPE-5 PLASTICS -2678 ; [*099C.0020.0002] # RECYCLING SYMBOL FOR TYPE-6 PLASTICS -2679 ; [*099D.0020.0002] # RECYCLING SYMBOL FOR TYPE-7 PLASTICS -267A ; [*099E.0020.0002] # RECYCLING SYMBOL FOR GENERIC MATERIALS -267B ; [*099F.0020.0002] # BLACK UNIVERSAL RECYCLING SYMBOL -267C ; [*09A0.0020.0002] # RECYCLED PAPER SYMBOL -267D ; [*09A1.0020.0002] # PARTIALLY-RECYCLED PAPER SYMBOL -267E ; [*09A2.0020.0002] # PERMANENT PAPER SIGN -267F ; [*09A3.0020.0002] # WHEELCHAIR SYMBOL -2680 ; [*09A4.0020.0002] # DIE FACE-1 -2681 ; [*09A5.0020.0002] # DIE FACE-2 -2682 ; [*09A6.0020.0002] # DIE FACE-3 -2683 ; [*09A7.0020.0002] # DIE FACE-4 -2684 ; [*09A8.0020.0002] # DIE FACE-5 -2685 ; [*09A9.0020.0002] # DIE FACE-6 -2686 ; [*09AA.0020.0002] # WHITE CIRCLE WITH DOT RIGHT -2687 ; [*09AB.0020.0002] # WHITE CIRCLE WITH TWO DOTS -2688 ; [*09AC.0020.0002] # BLACK CIRCLE WITH WHITE DOT RIGHT -2689 ; [*09AD.0020.0002] # BLACK CIRCLE WITH TWO WHITE DOTS -268A ; [*0EB4.0020.0002] # MONOGRAM FOR YANG -268B ; [*0EB5.0020.0002] # MONOGRAM FOR YIN -268C ; [*0EB6.0020.0002] # DIGRAM FOR GREATER YANG -268D ; [*0EB7.0020.0002] # DIGRAM FOR LESSER YIN -268E ; [*0EB8.0020.0002] # DIGRAM FOR LESSER YANG -268F ; [*0EB9.0020.0002] # DIGRAM FOR GREATER YIN -2690 ; [*09AE.0020.0002] # WHITE FLAG -2691 ; [*09AF.0020.0002] # BLACK FLAG -2692 ; [*09B0.0020.0002] # HAMMER AND PICK -2693 ; [*09B1.0020.0002] # ANCHOR -2694 ; [*09B2.0020.0002] # CROSSED SWORDS -2695 ; [*09B3.0020.0002] # STAFF OF AESCULAPIUS -2696 ; [*09B4.0020.0002] # SCALES -2697 ; [*09B5.0020.0002] # ALEMBIC -2698 ; [*09B6.0020.0002] # FLOWER -2699 ; [*09B7.0020.0002] # GEAR -269A ; [*09B8.0020.0002] # STAFF OF HERMES -269B ; [*09B9.0020.0002] # ATOM SYMBOL -269C ; [*09BA.0020.0002] # FLEUR-DE-LIS -269D ; [*09BB.0020.0002] # OUTLINED WHITE STAR -269E ; [*09BC.0020.0002] # THREE LINES CONVERGING RIGHT -269F ; [*09BD.0020.0002] # THREE LINES CONVERGING LEFT -26A0 ; [*09BE.0020.0002] # WARNING SIGN -26A1 ; [*09BF.0020.0002] # HIGH VOLTAGE SIGN -26A2 ; [*09C0.0020.0002] # DOUBLED FEMALE SIGN -26A3 ; [*09C1.0020.0002] # DOUBLED MALE SIGN -26A4 ; [*09C2.0020.0002] # INTERLOCKED FEMALE AND MALE SIGN -26A5 ; [*09C3.0020.0002] # MALE AND FEMALE SIGN -26A6 ; [*09C4.0020.0002] # MALE WITH STROKE SIGN -26A7 ; [*09C5.0020.0002] # MALE WITH STROKE AND MALE AND FEMALE SIGN -26A8 ; [*09C6.0020.0002] # VERTICAL MALE WITH STROKE SIGN -26A9 ; [*09C7.0020.0002] # HORIZONTAL MALE WITH STROKE SIGN -26AA ; [*09C8.0020.0002] # MEDIUM WHITE CIRCLE -26AB ; [*09C9.0020.0002] # MEDIUM BLACK CIRCLE -26AC ; [*09CA.0020.0002] # MEDIUM SMALL WHITE CIRCLE -26AD ; [*09CB.0020.0002] # MARRIAGE SYMBOL -26AE ; [*09CC.0020.0002] # DIVORCE SYMBOL -26AF ; [*09CD.0020.0002] # UNMARRIED PARTNERSHIP SYMBOL -26B0 ; [*09CE.0020.0002] # COFFIN -26B1 ; [*09CF.0020.0002] # FUNERAL URN -26B2 ; [*09D0.0020.0002] # NEUTER -26B3 ; [*09D1.0020.0002] # CERES -26B4 ; [*09D2.0020.0002] # PALLAS -26B5 ; [*09D3.0020.0002] # JUNO -26B6 ; [*09D4.0020.0002] # VESTA -26B7 ; [*09D5.0020.0002] # CHIRON -26B8 ; [*09D6.0020.0002] # BLACK MOON LILITH -26B9 ; [*09D7.0020.0002] # SEXTILE -26BA ; [*09D8.0020.0002] # SEMISEXTILE -26BB ; [*09D9.0020.0002] # QUINCUNX -26BC ; [*09DA.0020.0002] # SESQUIQUADRATE -26BD ; [*09DB.0020.0002] # SOCCER BALL -26BE ; [*09DC.0020.0002] # BASEBALL -26BF ; [*09DD.0020.0002] # SQUARED KEY -26C0 ; [*09DE.0020.0002] # WHITE DRAUGHTS MAN -26C1 ; [*09DF.0020.0002] # WHITE DRAUGHTS KING -26C2 ; [*09E0.0020.0002] # BLACK DRAUGHTS MAN -26C3 ; [*09E1.0020.0002] # BLACK DRAUGHTS KING -26C4 ; [*09E2.0020.0002] # SNOWMAN WITHOUT SNOW -26C5 ; [*09E3.0020.0002] # SUN BEHIND CLOUD -26C6 ; [*09E4.0020.0002] # RAIN -26C7 ; [*09E5.0020.0002] # BLACK SNOWMAN -26C8 ; [*09E6.0020.0002] # THUNDER CLOUD AND RAIN -26C9 ; [*09E7.0020.0002] # TURNED WHITE SHOGI PIECE -26CA ; [*09E8.0020.0002] # TURNED BLACK SHOGI PIECE -26CB ; [*09E9.0020.0002] # WHITE DIAMOND IN SQUARE -26CC ; [*09EA.0020.0002] # CROSSING LANES -26CD ; [*09EB.0020.0002] # DISABLED CAR -26CE ; [*09EC.0020.0002] # OPHIUCHUS -26CF ; [*09ED.0020.0002] # PICK -26D0 ; [*09EE.0020.0002] # CAR SLIDING -26D1 ; [*09EF.0020.0002] # HELMET WITH WHITE CROSS -26D2 ; [*09F0.0020.0002] # CIRCLED CROSSING LANES -26D3 ; [*09F1.0020.0002] # CHAINS -26D4 ; [*09F2.0020.0002] # NO ENTRY -26D5 ; [*09F3.0020.0002] # ALTERNATE ONE-WAY LEFT WAY TRAFFIC -26D6 ; [*09F4.0020.0002] # BLACK TWO-WAY LEFT WAY TRAFFIC -26D7 ; [*09F5.0020.0002] # WHITE TWO-WAY LEFT WAY TRAFFIC -26D8 ; [*09F6.0020.0002] # BLACK LEFT LANE MERGE -26D9 ; [*09F7.0020.0002] # WHITE LEFT LANE MERGE -26DA ; [*09F8.0020.0002] # DRIVE SLOW SIGN -26DB ; [*09F9.0020.0002] # HEAVY WHITE DOWN-POINTING TRIANGLE -26DC ; [*09FA.0020.0002] # LEFT CLOSED ENTRY -26DD ; [*09FB.0020.0002] # SQUARED SALTIRE -26DE ; [*09FC.0020.0002] # FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE -26DF ; [*09FD.0020.0002] # BLACK TRUCK -26E0 ; [*09FE.0020.0002] # RESTRICTED LEFT ENTRY-1 -26E1 ; [*09FF.0020.0002] # RESTRICTED LEFT ENTRY-2 -26E2 ; [*0A00.0020.0002] # ASTRONOMICAL SYMBOL FOR URANUS -26E3 ; [*0A01.0020.0002] # HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE -26E4 ; [*0A02.0020.0002] # PENTAGRAM -26E5 ; [*0A03.0020.0002] # RIGHT-HANDED INTERLACED PENTAGRAM -26E6 ; [*0A04.0020.0002] # LEFT-HANDED INTERLACED PENTAGRAM -26E7 ; [*0A05.0020.0002] # INVERTED PENTAGRAM -26E8 ; [*0A06.0020.0002] # BLACK CROSS ON SHIELD -26E9 ; [*0A07.0020.0002] # SHINTO SHRINE -26EA ; [*0A08.0020.0002] # CHURCH -26EB ; [*0A09.0020.0002] # CASTLE -26EC ; [*0A0A.0020.0002] # HISTORIC SITE -26ED ; [*0A0B.0020.0002] # GEAR WITHOUT HUB -26EE ; [*0A0C.0020.0002] # GEAR WITH HANDLES -26EF ; [*0A0D.0020.0002] # MAP SYMBOL FOR LIGHTHOUSE -26F0 ; [*0A0E.0020.0002] # MOUNTAIN -26F1 ; [*0A0F.0020.0002] # UMBRELLA ON GROUND -26F2 ; [*0A10.0020.0002] # FOUNTAIN -26F3 ; [*0A11.0020.0002] # FLAG IN HOLE -26F4 ; [*0A12.0020.0002] # FERRY -26F5 ; [*0A13.0020.0002] # SAILBOAT -26F6 ; [*0A14.0020.0002] # SQUARE FOUR CORNERS -26F7 ; [*0A15.0020.0002] # SKIER -26F8 ; [*0A16.0020.0002] # ICE SKATE -26F9 ; [*0A17.0020.0002] # PERSON WITH BALL -26FA ; [*0A18.0020.0002] # TENT -26FB ; [*0A19.0020.0002] # JAPANESE BANK SYMBOL -26FC ; [*0A1A.0020.0002] # HEADSTONE GRAVEYARD SYMBOL -26FD ; [*0A1B.0020.0002] # FUEL PUMP -26FE ; [*0A1C.0020.0002] # CUP ON BLACK SQUARE -26FF ; [*0A1D.0020.0002] # WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE -2700 ; [*0A38.0020.0002] # BLACK SAFETY SCISSORS -2701 ; [*0A39.0020.0002] # UPPER BLADE SCISSORS -2702 ; [*0A3A.0020.0002] # BLACK SCISSORS -2703 ; [*0A3B.0020.0002] # LOWER BLADE SCISSORS -2704 ; [*0A3C.0020.0002] # WHITE SCISSORS -2705 ; [*0A3D.0020.0002] # WHITE HEAVY CHECK MARK -2706 ; [*0A3E.0020.0002] # TELEPHONE LOCATION SIGN -2707 ; [*0A3F.0020.0002] # TAPE DRIVE -2708 ; [*0A40.0020.0002] # AIRPLANE -2709 ; [*0A41.0020.0002] # ENVELOPE -270A ; [*0A42.0020.0002] # RAISED FIST -270B ; [*0A43.0020.0002] # RAISED HAND -270C ; [*0A44.0020.0002] # VICTORY HAND -270D ; [*0A45.0020.0002] # WRITING HAND -270E ; [*0A46.0020.0002] # LOWER RIGHT PENCIL -270F ; [*0A47.0020.0002] # PENCIL -2710 ; [*0A48.0020.0002] # UPPER RIGHT PENCIL -2711 ; [*0A49.0020.0002] # WHITE NIB -2712 ; [*0A4A.0020.0002] # BLACK NIB -2713 ; [*0A4B.0020.0002] # CHECK MARK -2714 ; [*0A4C.0020.0002] # HEAVY CHECK MARK -2715 ; [*0A4D.0020.0002] # MULTIPLICATION X -2716 ; [*0A4E.0020.0002] # HEAVY MULTIPLICATION X -2717 ; [*0A4F.0020.0002] # BALLOT X -2718 ; [*0A50.0020.0002] # HEAVY BALLOT X -2719 ; [*0A51.0020.0002] # OUTLINED GREEK CROSS -271A ; [*0A52.0020.0002] # HEAVY GREEK CROSS -271B ; [*0A53.0020.0002] # OPEN CENTRE CROSS -271C ; [*0A54.0020.0002] # HEAVY OPEN CENTRE CROSS -271D ; [*0A55.0020.0002] # LATIN CROSS -271E ; [*0A56.0020.0002] # SHADOWED WHITE LATIN CROSS -271F ; [*0A57.0020.0002] # OUTLINED LATIN CROSS -2720 ; [*0A58.0020.0002] # MALTESE CROSS -2721 ; [*0A59.0020.0002] # STAR OF DAVID -2722 ; [*0A5A.0020.0002] # FOUR TEARDROP-SPOKED ASTERISK -2723 ; [*0A5B.0020.0002] # FOUR BALLOON-SPOKED ASTERISK -2724 ; [*0A5C.0020.0002] # HEAVY FOUR BALLOON-SPOKED ASTERISK -2725 ; [*0A5D.0020.0002] # FOUR CLUB-SPOKED ASTERISK -2726 ; [*0A5E.0020.0002] # BLACK FOUR POINTED STAR -2727 ; [*0A5F.0020.0002] # WHITE FOUR POINTED STAR -2728 ; [*0A60.0020.0002] # SPARKLES -2729 ; [*0A61.0020.0002] # STRESS OUTLINED WHITE STAR -272A ; [*0A62.0020.0002] # CIRCLED WHITE STAR -272B ; [*0A63.0020.0002] # OPEN CENTRE BLACK STAR -272C ; [*0A64.0020.0002] # BLACK CENTRE WHITE STAR -272D ; [*0A65.0020.0002] # OUTLINED BLACK STAR -272E ; [*0A66.0020.0002] # HEAVY OUTLINED BLACK STAR -272F ; [*0A67.0020.0002] # PINWHEEL STAR -2730 ; [*0A68.0020.0002] # SHADOWED WHITE STAR -2731 ; [*0A69.0020.0002] # HEAVY ASTERISK -2732 ; [*0A6A.0020.0002] # OPEN CENTRE ASTERISK -2733 ; [*0A6B.0020.0002] # EIGHT SPOKED ASTERISK -2734 ; [*0A6C.0020.0002] # EIGHT POINTED BLACK STAR -2735 ; [*0A6D.0020.0002] # EIGHT POINTED PINWHEEL STAR -2736 ; [*0A6E.0020.0002] # SIX POINTED BLACK STAR -2737 ; [*0A6F.0020.0002] # EIGHT POINTED RECTILINEAR BLACK STAR -2738 ; [*0A70.0020.0002] # HEAVY EIGHT POINTED RECTILINEAR BLACK STAR -2739 ; [*0A71.0020.0002] # TWELVE POINTED BLACK STAR -273A ; [*0A72.0020.0002] # SIXTEEN POINTED ASTERISK -273B ; [*0A73.0020.0002] # TEARDROP-SPOKED ASTERISK -273C ; [*0A74.0020.0002] # OPEN CENTRE TEARDROP-SPOKED ASTERISK -273D ; [*0A75.0020.0002] # HEAVY TEARDROP-SPOKED ASTERISK -273E ; [*0A76.0020.0002] # SIX PETALLED BLACK AND WHITE FLORETTE -273F ; [*0A77.0020.0002] # BLACK FLORETTE -2740 ; [*0A78.0020.0002] # WHITE FLORETTE -2741 ; [*0A79.0020.0002] # EIGHT PETALLED OUTLINED BLACK FLORETTE -2742 ; [*0A7A.0020.0002] # CIRCLED OPEN CENTRE EIGHT POINTED STAR -2743 ; [*0A7B.0020.0002] # HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK -2744 ; [*0A7C.0020.0002] # SNOWFLAKE -2745 ; [*0A7D.0020.0002] # TIGHT TRIFOLIATE SNOWFLAKE -2746 ; [*0A7E.0020.0002] # HEAVY CHEVRON SNOWFLAKE -2747 ; [*0A7F.0020.0002] # SPARKLE -2748 ; [*0A80.0020.0002] # HEAVY SPARKLE -2749 ; [*0A81.0020.0002] # BALLOON-SPOKED ASTERISK -274A ; [*0A82.0020.0002] # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK -274B ; [*0A83.0020.0002] # HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK -274C ; [*0A84.0020.0002] # CROSS MARK -274D ; [*0A85.0020.0002] # SHADOWED WHITE CIRCLE -274E ; [*0A86.0020.0002] # NEGATIVE SQUARED CROSS MARK -274F ; [*0A87.0020.0002] # LOWER RIGHT DROP-SHADOWED WHITE SQUARE -2750 ; [*0A88.0020.0002] # UPPER RIGHT DROP-SHADOWED WHITE SQUARE -2751 ; [*0A89.0020.0002] # LOWER RIGHT SHADOWED WHITE SQUARE -2752 ; [*0A8A.0020.0002] # UPPER RIGHT SHADOWED WHITE SQUARE -2753 ; [*0A8B.0020.0002] # BLACK QUESTION MARK ORNAMENT -2754 ; [*0A8C.0020.0002] # WHITE QUESTION MARK ORNAMENT -2755 ; [*0A8D.0020.0002] # WHITE EXCLAMATION MARK ORNAMENT -2756 ; [*0A8E.0020.0002] # BLACK DIAMOND MINUS WHITE X -2757 ; [*0A8F.0020.0002] # HEAVY EXCLAMATION MARK SYMBOL -2758 ; [*0A90.0020.0002] # LIGHT VERTICAL BAR -2759 ; [*0A91.0020.0002] # MEDIUM VERTICAL BAR -275A ; [*0A92.0020.0002] # HEAVY VERTICAL BAR -275B ; [*0A93.0020.0002] # HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT -275C ; [*0A94.0020.0002] # HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT -275D ; [*0A95.0020.0002] # HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT -275E ; [*0A96.0020.0002] # HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT -275F ; [*0A97.0020.0002] # HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT -2760 ; [*0A98.0020.0002] # HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT -2761 ; [*0A99.0020.0002] # CURVED STEM PARAGRAPH SIGN ORNAMENT -2762 ; [*0A9A.0020.0002] # HEAVY EXCLAMATION MARK ORNAMENT -2763 ; [*0A9B.0020.0002] # HEAVY HEART EXCLAMATION MARK ORNAMENT -2764 ; [*0A9C.0020.0002] # HEAVY BLACK HEART -2765 ; [*0A9D.0020.0002] # ROTATED HEAVY BLACK HEART BULLET -2766 ; [*0A9E.0020.0002] # FLORAL HEART -2767 ; [*0A9F.0020.0002] # ROTATED FLORAL HEART BULLET -2768 ; [*034E.0020.0002] # MEDIUM LEFT PARENTHESIS ORNAMENT -2769 ; [*034F.0020.0002] # MEDIUM RIGHT PARENTHESIS ORNAMENT -276A ; [*0350.0020.0002] # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT -276B ; [*0351.0020.0002] # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT -276C ; [*0352.0020.0002] # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT -276D ; [*0353.0020.0002] # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT -276E ; [*0354.0020.0002] # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT -276F ; [*0355.0020.0002] # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT -2770 ; [*0356.0020.0002] # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT -2771 ; [*0357.0020.0002] # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT -2772 ; [*0358.0020.0002] # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT -2773 ; [*0359.0020.0002] # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT -2774 ; [*035A.0020.0002] # MEDIUM LEFT CURLY BRACKET ORNAMENT -2775 ; [*035B.0020.0002] # MEDIUM RIGHT CURLY BRACKET ORNAMENT -2794 ; [*0AA0.0020.0002] # HEAVY WIDE-HEADED RIGHTWARDS ARROW -2795 ; [*0AA1.0020.0002] # HEAVY PLUS SIGN -2796 ; [*0AA2.0020.0002] # HEAVY MINUS SIGN -2797 ; [*0AA3.0020.0002] # HEAVY DIVISION SIGN -2798 ; [*0AA4.0020.0002] # HEAVY SOUTH EAST ARROW -2799 ; [*0AA5.0020.0002] # HEAVY RIGHTWARDS ARROW -279A ; [*0AA6.0020.0002] # HEAVY NORTH EAST ARROW -279B ; [*0AA7.0020.0002] # DRAFTING POINT RIGHTWARDS ARROW -279C ; [*0AA8.0020.0002] # HEAVY ROUND-TIPPED RIGHTWARDS ARROW -279D ; [*0AA9.0020.0002] # TRIANGLE-HEADED RIGHTWARDS ARROW -279E ; [*0AAA.0020.0002] # HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW -279F ; [*0AAB.0020.0002] # DASHED TRIANGLE-HEADED RIGHTWARDS ARROW -27A0 ; [*0AAC.0020.0002] # HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW -27A1 ; [*0AAD.0020.0002] # BLACK RIGHTWARDS ARROW -27A2 ; [*0AAE.0020.0002] # THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD -27A3 ; [*0AAF.0020.0002] # THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD -27A4 ; [*0AB0.0020.0002] # BLACK RIGHTWARDS ARROWHEAD -27A5 ; [*0AB1.0020.0002] # HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW -27A6 ; [*0AB2.0020.0002] # HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW -27A7 ; [*0AB3.0020.0002] # SQUAT BLACK RIGHTWARDS ARROW -27A8 ; [*0AB4.0020.0002] # HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW -27A9 ; [*0AB5.0020.0002] # RIGHT-SHADED WHITE RIGHTWARDS ARROW -27AA ; [*0AB6.0020.0002] # LEFT-SHADED WHITE RIGHTWARDS ARROW -27AB ; [*0AB7.0020.0002] # BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW -27AC ; [*0AB8.0020.0002] # FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW -27AD ; [*0AB9.0020.0002] # HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27AE ; [*0ABA.0020.0002] # HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27AF ; [*0ABB.0020.0002] # NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27B0 ; [*0ABC.0020.0002] # CURLY LOOP -27B1 ; [*0ABD.0020.0002] # NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27B2 ; [*0ABE.0020.0002] # CIRCLED HEAVY WHITE RIGHTWARDS ARROW -27B3 ; [*0ABF.0020.0002] # WHITE-FEATHERED RIGHTWARDS ARROW -27B4 ; [*0AC0.0020.0002] # BLACK-FEATHERED SOUTH EAST ARROW -27B5 ; [*0AC1.0020.0002] # BLACK-FEATHERED RIGHTWARDS ARROW -27B6 ; [*0AC2.0020.0002] # BLACK-FEATHERED NORTH EAST ARROW -27B7 ; [*0AC3.0020.0002] # HEAVY BLACK-FEATHERED SOUTH EAST ARROW -27B8 ; [*0AC4.0020.0002] # HEAVY BLACK-FEATHERED RIGHTWARDS ARROW -27B9 ; [*0AC5.0020.0002] # HEAVY BLACK-FEATHERED NORTH EAST ARROW -27BA ; [*0AC6.0020.0002] # TEARDROP-BARBED RIGHTWARDS ARROW -27BB ; [*0AC7.0020.0002] # HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW -27BC ; [*0AC8.0020.0002] # WEDGE-TAILED RIGHTWARDS ARROW -27BD ; [*0AC9.0020.0002] # HEAVY WEDGE-TAILED RIGHTWARDS ARROW -27BE ; [*0ACA.0020.0002] # OPEN-OUTLINED RIGHTWARDS ARROW -27BF ; [*0ACB.0020.0002] # DOUBLE CURLY LOOP -27C0 ; [*0ACC.0020.0002] # THREE DIMENSIONAL ANGLE -27C1 ; [*0ACD.0020.0002] # WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE -27C2 ; [*0ACE.0020.0002] # PERPENDICULAR -27C3 ; [*0ACF.0020.0002] # OPEN SUBSET -27C4 ; [*0AD0.0020.0002] # OPEN SUPERSET -27C5 ; [*0342.0020.0002] # LEFT S-SHAPED BAG DELIMITER -27C6 ; [*0343.0020.0002] # RIGHT S-SHAPED BAG DELIMITER -27C7 ; [*0AD1.0020.0002] # OR WITH DOT INSIDE -27C8 ; [*0AD2.0020.0002] # REVERSE SOLIDUS PRECEDING SUBSET -27C9 ; [*0AD3.0020.0002] # SUPERSET PRECEDING SOLIDUS -27CA ; [*0AD4.0020.0002] # VERTICAL BAR WITH HORIZONTAL STROKE -27CB ; [*0AD5.0020.0002] # MATHEMATICAL RISING DIAGONAL -27CC ; [*0AD6.0020.0002] # LONG DIVISION -27CD ; [*0AD7.0020.0002] # MATHEMATICAL FALLING DIAGONAL -27CE ; [*0AD8.0020.0002] # SQUARED LOGICAL AND -27CF ; [*0AD9.0020.0002] # SQUARED LOGICAL OR -27D0 ; [*0ADA.0020.0002] # WHITE DIAMOND WITH CENTRED DOT -27D1 ; [*0ADB.0020.0002] # AND WITH DOT -27D2 ; [*0ADC.0020.0002] # ELEMENT OF OPENING UPWARDS -27D3 ; [*0ADD.0020.0002] # LOWER RIGHT CORNER WITH DOT -27D4 ; [*0ADE.0020.0002] # UPPER LEFT CORNER WITH DOT -27D5 ; [*0ADF.0020.0002] # LEFT OUTER JOIN -27D6 ; [*0AE0.0020.0002] # RIGHT OUTER JOIN -27D7 ; [*0AE1.0020.0002] # FULL OUTER JOIN -27D8 ; [*0AE2.0020.0002] # LARGE UP TACK -27D9 ; [*0AE3.0020.0002] # LARGE DOWN TACK -27DA ; [*0AE4.0020.0002] # LEFT AND RIGHT DOUBLE TURNSTILE -27DB ; [*0AE5.0020.0002] # LEFT AND RIGHT TACK -27DC ; [*0AE6.0020.0002] # LEFT MULTIMAP -27DD ; [*0AE7.0020.0002] # LONG RIGHT TACK -27DE ; [*0AE8.0020.0002] # LONG LEFT TACK -27DF ; [*0AE9.0020.0002] # UP TACK WITH CIRCLE ABOVE -27E0 ; [*0AEA.0020.0002] # LOZENGE DIVIDED BY HORIZONTAL RULE -27E1 ; [*0AEB.0020.0002] # WHITE CONCAVE-SIDED DIAMOND -27E2 ; [*0AEC.0020.0002] # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK -27E3 ; [*0AED.0020.0002] # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK -27E4 ; [*0AEE.0020.0002] # WHITE SQUARE WITH LEFTWARDS TICK -27E5 ; [*0AEF.0020.0002] # WHITE SQUARE WITH RIGHTWARDS TICK -27E6 ; [*0344.0020.0002] # MATHEMATICAL LEFT WHITE SQUARE BRACKET -27E7 ; [*0345.0020.0002] # MATHEMATICAL RIGHT WHITE SQUARE BRACKET -27E8 ; [*0346.0020.0002] # MATHEMATICAL LEFT ANGLE BRACKET -27E9 ; [*0347.0020.0002] # MATHEMATICAL RIGHT ANGLE BRACKET -27EA ; [*0348.0020.0002] # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET -27EB ; [*0349.0020.0002] # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET -27EC ; [*034A.0020.0002] # MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET -27ED ; [*034B.0020.0002] # MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET -27EE ; [*034C.0020.0002] # MATHEMATICAL LEFT FLATTENED PARENTHESIS -27EF ; [*034D.0020.0002] # MATHEMATICAL RIGHT FLATTENED PARENTHESIS -27F0 ; [*0AF0.0020.0002] # UPWARDS QUADRUPLE ARROW -27F1 ; [*0AF1.0020.0002] # DOWNWARDS QUADRUPLE ARROW -27F2 ; [*0AF2.0020.0002] # ANTICLOCKWISE GAPPED CIRCLE ARROW -27F3 ; [*0AF3.0020.0002] # CLOCKWISE GAPPED CIRCLE ARROW -27F4 ; [*0AF4.0020.0002] # RIGHT ARROW WITH CIRCLED PLUS -27F5 ; [*0AF5.0020.0002] # LONG LEFTWARDS ARROW -27F6 ; [*0AF6.0020.0002] # LONG RIGHTWARDS ARROW -27F7 ; [*0AF7.0020.0002] # LONG LEFT RIGHT ARROW -27F8 ; [*0AF8.0020.0002] # LONG LEFTWARDS DOUBLE ARROW -27F9 ; [*0AF9.0020.0002] # LONG RIGHTWARDS DOUBLE ARROW -27FA ; [*0AFA.0020.0002] # LONG LEFT RIGHT DOUBLE ARROW -27FB ; [*0AFB.0020.0002] # LONG LEFTWARDS ARROW FROM BAR -27FC ; [*0AFC.0020.0002] # LONG RIGHTWARDS ARROW FROM BAR -27FD ; [*0AFD.0020.0002] # LONG LEFTWARDS DOUBLE ARROW FROM BAR -27FE ; [*0AFE.0020.0002] # LONG RIGHTWARDS DOUBLE ARROW FROM BAR -27FF ; [*0AFF.0020.0002] # LONG RIGHTWARDS SQUIGGLE ARROW -2800 ; [*0DB4.0020.0002] # BRAILLE PATTERN BLANK -2801 ; [*0DB5.0020.0002] # BRAILLE PATTERN DOTS-1 -2802 ; [*0DB6.0020.0002] # BRAILLE PATTERN DOTS-2 -2803 ; [*0DB7.0020.0002] # BRAILLE PATTERN DOTS-12 -2804 ; [*0DB8.0020.0002] # BRAILLE PATTERN DOTS-3 -2805 ; [*0DB9.0020.0002] # BRAILLE PATTERN DOTS-13 -2806 ; [*0DBA.0020.0002] # BRAILLE PATTERN DOTS-23 -2807 ; [*0DBB.0020.0002] # BRAILLE PATTERN DOTS-123 -2808 ; [*0DBC.0020.0002] # BRAILLE PATTERN DOTS-4 -2809 ; [*0DBD.0020.0002] # BRAILLE PATTERN DOTS-14 -280A ; [*0DBE.0020.0002] # BRAILLE PATTERN DOTS-24 -280B ; [*0DBF.0020.0002] # BRAILLE PATTERN DOTS-124 -280C ; [*0DC0.0020.0002] # BRAILLE PATTERN DOTS-34 -280D ; [*0DC1.0020.0002] # BRAILLE PATTERN DOTS-134 -280E ; [*0DC2.0020.0002] # BRAILLE PATTERN DOTS-234 -280F ; [*0DC3.0020.0002] # BRAILLE PATTERN DOTS-1234 -2810 ; [*0DC4.0020.0002] # BRAILLE PATTERN DOTS-5 -2811 ; [*0DC5.0020.0002] # BRAILLE PATTERN DOTS-15 -2812 ; [*0DC6.0020.0002] # BRAILLE PATTERN DOTS-25 -2813 ; [*0DC7.0020.0002] # BRAILLE PATTERN DOTS-125 -2814 ; [*0DC8.0020.0002] # BRAILLE PATTERN DOTS-35 -2815 ; [*0DC9.0020.0002] # BRAILLE PATTERN DOTS-135 -2816 ; [*0DCA.0020.0002] # BRAILLE PATTERN DOTS-235 -2817 ; [*0DCB.0020.0002] # BRAILLE PATTERN DOTS-1235 -2818 ; [*0DCC.0020.0002] # BRAILLE PATTERN DOTS-45 -2819 ; [*0DCD.0020.0002] # BRAILLE PATTERN DOTS-145 -281A ; [*0DCE.0020.0002] # BRAILLE PATTERN DOTS-245 -281B ; [*0DCF.0020.0002] # BRAILLE PATTERN DOTS-1245 -281C ; [*0DD0.0020.0002] # BRAILLE PATTERN DOTS-345 -281D ; [*0DD1.0020.0002] # BRAILLE PATTERN DOTS-1345 -281E ; [*0DD2.0020.0002] # BRAILLE PATTERN DOTS-2345 -281F ; [*0DD3.0020.0002] # BRAILLE PATTERN DOTS-12345 -2820 ; [*0DD4.0020.0002] # BRAILLE PATTERN DOTS-6 -2821 ; [*0DD5.0020.0002] # BRAILLE PATTERN DOTS-16 -2822 ; [*0DD6.0020.0002] # BRAILLE PATTERN DOTS-26 -2823 ; [*0DD7.0020.0002] # BRAILLE PATTERN DOTS-126 -2824 ; [*0DD8.0020.0002] # BRAILLE PATTERN DOTS-36 -2825 ; [*0DD9.0020.0002] # BRAILLE PATTERN DOTS-136 -2826 ; [*0DDA.0020.0002] # BRAILLE PATTERN DOTS-236 -2827 ; [*0DDB.0020.0002] # BRAILLE PATTERN DOTS-1236 -2828 ; [*0DDC.0020.0002] # BRAILLE PATTERN DOTS-46 -2829 ; [*0DDD.0020.0002] # BRAILLE PATTERN DOTS-146 -282A ; [*0DDE.0020.0002] # BRAILLE PATTERN DOTS-246 -282B ; [*0DDF.0020.0002] # BRAILLE PATTERN DOTS-1246 -282C ; [*0DE0.0020.0002] # BRAILLE PATTERN DOTS-346 -282D ; [*0DE1.0020.0002] # BRAILLE PATTERN DOTS-1346 -282E ; [*0DE2.0020.0002] # BRAILLE PATTERN DOTS-2346 -282F ; [*0DE3.0020.0002] # BRAILLE PATTERN DOTS-12346 -2830 ; [*0DE4.0020.0002] # BRAILLE PATTERN DOTS-56 -2831 ; [*0DE5.0020.0002] # BRAILLE PATTERN DOTS-156 -2832 ; [*0DE6.0020.0002] # BRAILLE PATTERN DOTS-256 -2833 ; [*0DE7.0020.0002] # BRAILLE PATTERN DOTS-1256 -2834 ; [*0DE8.0020.0002] # BRAILLE PATTERN DOTS-356 -2835 ; [*0DE9.0020.0002] # BRAILLE PATTERN DOTS-1356 -2836 ; [*0DEA.0020.0002] # BRAILLE PATTERN DOTS-2356 -2837 ; [*0DEB.0020.0002] # BRAILLE PATTERN DOTS-12356 -2838 ; [*0DEC.0020.0002] # BRAILLE PATTERN DOTS-456 -2839 ; [*0DED.0020.0002] # BRAILLE PATTERN DOTS-1456 -283A ; [*0DEE.0020.0002] # BRAILLE PATTERN DOTS-2456 -283B ; [*0DEF.0020.0002] # BRAILLE PATTERN DOTS-12456 -283C ; [*0DF0.0020.0002] # BRAILLE PATTERN DOTS-3456 -283D ; [*0DF1.0020.0002] # BRAILLE PATTERN DOTS-13456 -283E ; [*0DF2.0020.0002] # BRAILLE PATTERN DOTS-23456 -283F ; [*0DF3.0020.0002] # BRAILLE PATTERN DOTS-123456 -2840 ; [*0DF4.0020.0002] # BRAILLE PATTERN DOTS-7 -2841 ; [*0DF5.0020.0002] # BRAILLE PATTERN DOTS-17 -2842 ; [*0DF6.0020.0002] # BRAILLE PATTERN DOTS-27 -2843 ; [*0DF7.0020.0002] # BRAILLE PATTERN DOTS-127 -2844 ; [*0DF8.0020.0002] # BRAILLE PATTERN DOTS-37 -2845 ; [*0DF9.0020.0002] # BRAILLE PATTERN DOTS-137 -2846 ; [*0DFA.0020.0002] # BRAILLE PATTERN DOTS-237 -2847 ; [*0DFB.0020.0002] # BRAILLE PATTERN DOTS-1237 -2848 ; [*0DFC.0020.0002] # BRAILLE PATTERN DOTS-47 -2849 ; [*0DFD.0020.0002] # BRAILLE PATTERN DOTS-147 -284A ; [*0DFE.0020.0002] # BRAILLE PATTERN DOTS-247 -284B ; [*0DFF.0020.0002] # BRAILLE PATTERN DOTS-1247 -284C ; [*0E00.0020.0002] # BRAILLE PATTERN DOTS-347 -284D ; [*0E01.0020.0002] # BRAILLE PATTERN DOTS-1347 -284E ; [*0E02.0020.0002] # BRAILLE PATTERN DOTS-2347 -284F ; [*0E03.0020.0002] # BRAILLE PATTERN DOTS-12347 -2850 ; [*0E04.0020.0002] # BRAILLE PATTERN DOTS-57 -2851 ; [*0E05.0020.0002] # BRAILLE PATTERN DOTS-157 -2852 ; [*0E06.0020.0002] # BRAILLE PATTERN DOTS-257 -2853 ; [*0E07.0020.0002] # BRAILLE PATTERN DOTS-1257 -2854 ; [*0E08.0020.0002] # BRAILLE PATTERN DOTS-357 -2855 ; [*0E09.0020.0002] # BRAILLE PATTERN DOTS-1357 -2856 ; [*0E0A.0020.0002] # BRAILLE PATTERN DOTS-2357 -2857 ; [*0E0B.0020.0002] # BRAILLE PATTERN DOTS-12357 -2858 ; [*0E0C.0020.0002] # BRAILLE PATTERN DOTS-457 -2859 ; [*0E0D.0020.0002] # BRAILLE PATTERN DOTS-1457 -285A ; [*0E0E.0020.0002] # BRAILLE PATTERN DOTS-2457 -285B ; [*0E0F.0020.0002] # BRAILLE PATTERN DOTS-12457 -285C ; [*0E10.0020.0002] # BRAILLE PATTERN DOTS-3457 -285D ; [*0E11.0020.0002] # BRAILLE PATTERN DOTS-13457 -285E ; [*0E12.0020.0002] # BRAILLE PATTERN DOTS-23457 -285F ; [*0E13.0020.0002] # BRAILLE PATTERN DOTS-123457 -2860 ; [*0E14.0020.0002] # BRAILLE PATTERN DOTS-67 -2861 ; [*0E15.0020.0002] # BRAILLE PATTERN DOTS-167 -2862 ; [*0E16.0020.0002] # BRAILLE PATTERN DOTS-267 -2863 ; [*0E17.0020.0002] # BRAILLE PATTERN DOTS-1267 -2864 ; [*0E18.0020.0002] # BRAILLE PATTERN DOTS-367 -2865 ; [*0E19.0020.0002] # BRAILLE PATTERN DOTS-1367 -2866 ; [*0E1A.0020.0002] # BRAILLE PATTERN DOTS-2367 -2867 ; [*0E1B.0020.0002] # BRAILLE PATTERN DOTS-12367 -2868 ; [*0E1C.0020.0002] # BRAILLE PATTERN DOTS-467 -2869 ; [*0E1D.0020.0002] # BRAILLE PATTERN DOTS-1467 -286A ; [*0E1E.0020.0002] # BRAILLE PATTERN DOTS-2467 -286B ; [*0E1F.0020.0002] # BRAILLE PATTERN DOTS-12467 -286C ; [*0E20.0020.0002] # BRAILLE PATTERN DOTS-3467 -286D ; [*0E21.0020.0002] # BRAILLE PATTERN DOTS-13467 -286E ; [*0E22.0020.0002] # BRAILLE PATTERN DOTS-23467 -286F ; [*0E23.0020.0002] # BRAILLE PATTERN DOTS-123467 -2870 ; [*0E24.0020.0002] # BRAILLE PATTERN DOTS-567 -2871 ; [*0E25.0020.0002] # BRAILLE PATTERN DOTS-1567 -2872 ; [*0E26.0020.0002] # BRAILLE PATTERN DOTS-2567 -2873 ; [*0E27.0020.0002] # BRAILLE PATTERN DOTS-12567 -2874 ; [*0E28.0020.0002] # BRAILLE PATTERN DOTS-3567 -2875 ; [*0E29.0020.0002] # BRAILLE PATTERN DOTS-13567 -2876 ; [*0E2A.0020.0002] # BRAILLE PATTERN DOTS-23567 -2877 ; [*0E2B.0020.0002] # BRAILLE PATTERN DOTS-123567 -2878 ; [*0E2C.0020.0002] # BRAILLE PATTERN DOTS-4567 -2879 ; [*0E2D.0020.0002] # BRAILLE PATTERN DOTS-14567 -287A ; [*0E2E.0020.0002] # BRAILLE PATTERN DOTS-24567 -287B ; [*0E2F.0020.0002] # BRAILLE PATTERN DOTS-124567 -287C ; [*0E30.0020.0002] # BRAILLE PATTERN DOTS-34567 -287D ; [*0E31.0020.0002] # BRAILLE PATTERN DOTS-134567 -287E ; [*0E32.0020.0002] # BRAILLE PATTERN DOTS-234567 -287F ; [*0E33.0020.0002] # BRAILLE PATTERN DOTS-1234567 -2880 ; [*0E34.0020.0002] # BRAILLE PATTERN DOTS-8 -2881 ; [*0E35.0020.0002] # BRAILLE PATTERN DOTS-18 -2882 ; [*0E36.0020.0002] # BRAILLE PATTERN DOTS-28 -2883 ; [*0E37.0020.0002] # BRAILLE PATTERN DOTS-128 -2884 ; [*0E38.0020.0002] # BRAILLE PATTERN DOTS-38 -2885 ; [*0E39.0020.0002] # BRAILLE PATTERN DOTS-138 -2886 ; [*0E3A.0020.0002] # BRAILLE PATTERN DOTS-238 -2887 ; [*0E3B.0020.0002] # BRAILLE PATTERN DOTS-1238 -2888 ; [*0E3C.0020.0002] # BRAILLE PATTERN DOTS-48 -2889 ; [*0E3D.0020.0002] # BRAILLE PATTERN DOTS-148 -288A ; [*0E3E.0020.0002] # BRAILLE PATTERN DOTS-248 -288B ; [*0E3F.0020.0002] # BRAILLE PATTERN DOTS-1248 -288C ; [*0E40.0020.0002] # BRAILLE PATTERN DOTS-348 -288D ; [*0E41.0020.0002] # BRAILLE PATTERN DOTS-1348 -288E ; [*0E42.0020.0002] # BRAILLE PATTERN DOTS-2348 -288F ; [*0E43.0020.0002] # BRAILLE PATTERN DOTS-12348 -2890 ; [*0E44.0020.0002] # BRAILLE PATTERN DOTS-58 -2891 ; [*0E45.0020.0002] # BRAILLE PATTERN DOTS-158 -2892 ; [*0E46.0020.0002] # BRAILLE PATTERN DOTS-258 -2893 ; [*0E47.0020.0002] # BRAILLE PATTERN DOTS-1258 -2894 ; [*0E48.0020.0002] # BRAILLE PATTERN DOTS-358 -2895 ; [*0E49.0020.0002] # BRAILLE PATTERN DOTS-1358 -2896 ; [*0E4A.0020.0002] # BRAILLE PATTERN DOTS-2358 -2897 ; [*0E4B.0020.0002] # BRAILLE PATTERN DOTS-12358 -2898 ; [*0E4C.0020.0002] # BRAILLE PATTERN DOTS-458 -2899 ; [*0E4D.0020.0002] # BRAILLE PATTERN DOTS-1458 -289A ; [*0E4E.0020.0002] # BRAILLE PATTERN DOTS-2458 -289B ; [*0E4F.0020.0002] # BRAILLE PATTERN DOTS-12458 -289C ; [*0E50.0020.0002] # BRAILLE PATTERN DOTS-3458 -289D ; [*0E51.0020.0002] # BRAILLE PATTERN DOTS-13458 -289E ; [*0E52.0020.0002] # BRAILLE PATTERN DOTS-23458 -289F ; [*0E53.0020.0002] # BRAILLE PATTERN DOTS-123458 -28A0 ; [*0E54.0020.0002] # BRAILLE PATTERN DOTS-68 -28A1 ; [*0E55.0020.0002] # BRAILLE PATTERN DOTS-168 -28A2 ; [*0E56.0020.0002] # BRAILLE PATTERN DOTS-268 -28A3 ; [*0E57.0020.0002] # BRAILLE PATTERN DOTS-1268 -28A4 ; [*0E58.0020.0002] # BRAILLE PATTERN DOTS-368 -28A5 ; [*0E59.0020.0002] # BRAILLE PATTERN DOTS-1368 -28A6 ; [*0E5A.0020.0002] # BRAILLE PATTERN DOTS-2368 -28A7 ; [*0E5B.0020.0002] # BRAILLE PATTERN DOTS-12368 -28A8 ; [*0E5C.0020.0002] # BRAILLE PATTERN DOTS-468 -28A9 ; [*0E5D.0020.0002] # BRAILLE PATTERN DOTS-1468 -28AA ; [*0E5E.0020.0002] # BRAILLE PATTERN DOTS-2468 -28AB ; [*0E5F.0020.0002] # BRAILLE PATTERN DOTS-12468 -28AC ; [*0E60.0020.0002] # BRAILLE PATTERN DOTS-3468 -28AD ; [*0E61.0020.0002] # BRAILLE PATTERN DOTS-13468 -28AE ; [*0E62.0020.0002] # BRAILLE PATTERN DOTS-23468 -28AF ; [*0E63.0020.0002] # BRAILLE PATTERN DOTS-123468 -28B0 ; [*0E64.0020.0002] # BRAILLE PATTERN DOTS-568 -28B1 ; [*0E65.0020.0002] # BRAILLE PATTERN DOTS-1568 -28B2 ; [*0E66.0020.0002] # BRAILLE PATTERN DOTS-2568 -28B3 ; [*0E67.0020.0002] # BRAILLE PATTERN DOTS-12568 -28B4 ; [*0E68.0020.0002] # BRAILLE PATTERN DOTS-3568 -28B5 ; [*0E69.0020.0002] # BRAILLE PATTERN DOTS-13568 -28B6 ; [*0E6A.0020.0002] # BRAILLE PATTERN DOTS-23568 -28B7 ; [*0E6B.0020.0002] # BRAILLE PATTERN DOTS-123568 -28B8 ; [*0E6C.0020.0002] # BRAILLE PATTERN DOTS-4568 -28B9 ; [*0E6D.0020.0002] # BRAILLE PATTERN DOTS-14568 -28BA ; [*0E6E.0020.0002] # BRAILLE PATTERN DOTS-24568 -28BB ; [*0E6F.0020.0002] # BRAILLE PATTERN DOTS-124568 -28BC ; [*0E70.0020.0002] # BRAILLE PATTERN DOTS-34568 -28BD ; [*0E71.0020.0002] # BRAILLE PATTERN DOTS-134568 -28BE ; [*0E72.0020.0002] # BRAILLE PATTERN DOTS-234568 -28BF ; [*0E73.0020.0002] # BRAILLE PATTERN DOTS-1234568 -28C0 ; [*0E74.0020.0002] # BRAILLE PATTERN DOTS-78 -28C1 ; [*0E75.0020.0002] # BRAILLE PATTERN DOTS-178 -28C2 ; [*0E76.0020.0002] # BRAILLE PATTERN DOTS-278 -28C3 ; [*0E77.0020.0002] # BRAILLE PATTERN DOTS-1278 -28C4 ; [*0E78.0020.0002] # BRAILLE PATTERN DOTS-378 -28C5 ; [*0E79.0020.0002] # BRAILLE PATTERN DOTS-1378 -28C6 ; [*0E7A.0020.0002] # BRAILLE PATTERN DOTS-2378 -28C7 ; [*0E7B.0020.0002] # BRAILLE PATTERN DOTS-12378 -28C8 ; [*0E7C.0020.0002] # BRAILLE PATTERN DOTS-478 -28C9 ; [*0E7D.0020.0002] # BRAILLE PATTERN DOTS-1478 -28CA ; [*0E7E.0020.0002] # BRAILLE PATTERN DOTS-2478 -28CB ; [*0E7F.0020.0002] # BRAILLE PATTERN DOTS-12478 -28CC ; [*0E80.0020.0002] # BRAILLE PATTERN DOTS-3478 -28CD ; [*0E81.0020.0002] # BRAILLE PATTERN DOTS-13478 -28CE ; [*0E82.0020.0002] # BRAILLE PATTERN DOTS-23478 -28CF ; [*0E83.0020.0002] # BRAILLE PATTERN DOTS-123478 -28D0 ; [*0E84.0020.0002] # BRAILLE PATTERN DOTS-578 -28D1 ; [*0E85.0020.0002] # BRAILLE PATTERN DOTS-1578 -28D2 ; [*0E86.0020.0002] # BRAILLE PATTERN DOTS-2578 -28D3 ; [*0E87.0020.0002] # BRAILLE PATTERN DOTS-12578 -28D4 ; [*0E88.0020.0002] # BRAILLE PATTERN DOTS-3578 -28D5 ; [*0E89.0020.0002] # BRAILLE PATTERN DOTS-13578 -28D6 ; [*0E8A.0020.0002] # BRAILLE PATTERN DOTS-23578 -28D7 ; [*0E8B.0020.0002] # BRAILLE PATTERN DOTS-123578 -28D8 ; [*0E8C.0020.0002] # BRAILLE PATTERN DOTS-4578 -28D9 ; [*0E8D.0020.0002] # BRAILLE PATTERN DOTS-14578 -28DA ; [*0E8E.0020.0002] # BRAILLE PATTERN DOTS-24578 -28DB ; [*0E8F.0020.0002] # BRAILLE PATTERN DOTS-124578 -28DC ; [*0E90.0020.0002] # BRAILLE PATTERN DOTS-34578 -28DD ; [*0E91.0020.0002] # BRAILLE PATTERN DOTS-134578 -28DE ; [*0E92.0020.0002] # BRAILLE PATTERN DOTS-234578 -28DF ; [*0E93.0020.0002] # BRAILLE PATTERN DOTS-1234578 -28E0 ; [*0E94.0020.0002] # BRAILLE PATTERN DOTS-678 -28E1 ; [*0E95.0020.0002] # BRAILLE PATTERN DOTS-1678 -28E2 ; [*0E96.0020.0002] # BRAILLE PATTERN DOTS-2678 -28E3 ; [*0E97.0020.0002] # BRAILLE PATTERN DOTS-12678 -28E4 ; [*0E98.0020.0002] # BRAILLE PATTERN DOTS-3678 -28E5 ; [*0E99.0020.0002] # BRAILLE PATTERN DOTS-13678 -28E6 ; [*0E9A.0020.0002] # BRAILLE PATTERN DOTS-23678 -28E7 ; [*0E9B.0020.0002] # BRAILLE PATTERN DOTS-123678 -28E8 ; [*0E9C.0020.0002] # BRAILLE PATTERN DOTS-4678 -28E9 ; [*0E9D.0020.0002] # BRAILLE PATTERN DOTS-14678 -28EA ; [*0E9E.0020.0002] # BRAILLE PATTERN DOTS-24678 -28EB ; [*0E9F.0020.0002] # BRAILLE PATTERN DOTS-124678 -28EC ; [*0EA0.0020.0002] # BRAILLE PATTERN DOTS-34678 -28ED ; [*0EA1.0020.0002] # BRAILLE PATTERN DOTS-134678 -28EE ; [*0EA2.0020.0002] # BRAILLE PATTERN DOTS-234678 -28EF ; [*0EA3.0020.0002] # BRAILLE PATTERN DOTS-1234678 -28F0 ; [*0EA4.0020.0002] # BRAILLE PATTERN DOTS-5678 -28F1 ; [*0EA5.0020.0002] # BRAILLE PATTERN DOTS-15678 -28F2 ; [*0EA6.0020.0002] # BRAILLE PATTERN DOTS-25678 -28F3 ; [*0EA7.0020.0002] # BRAILLE PATTERN DOTS-125678 -28F4 ; [*0EA8.0020.0002] # BRAILLE PATTERN DOTS-35678 -28F5 ; [*0EA9.0020.0002] # BRAILLE PATTERN DOTS-135678 -28F6 ; [*0EAA.0020.0002] # BRAILLE PATTERN DOTS-235678 -28F7 ; [*0EAB.0020.0002] # BRAILLE PATTERN DOTS-1235678 -28F8 ; [*0EAC.0020.0002] # BRAILLE PATTERN DOTS-45678 -28F9 ; [*0EAD.0020.0002] # BRAILLE PATTERN DOTS-145678 -28FA ; [*0EAE.0020.0002] # BRAILLE PATTERN DOTS-245678 -28FB ; [*0EAF.0020.0002] # BRAILLE PATTERN DOTS-1245678 -28FC ; [*0EB0.0020.0002] # BRAILLE PATTERN DOTS-345678 -28FD ; [*0EB1.0020.0002] # BRAILLE PATTERN DOTS-1345678 -28FE ; [*0EB2.0020.0002] # BRAILLE PATTERN DOTS-2345678 -28FF ; [*0EB3.0020.0002] # BRAILLE PATTERN DOTS-12345678 -2900 ; [*0B00.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE -2901 ; [*0B01.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE -2902 ; [*0B02.0020.0002] # LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE -2903 ; [*0B03.0020.0002] # RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE -2904 ; [*0B04.0020.0002] # LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE -2905 ; [*0B05.0020.0002] # RIGHTWARDS TWO-HEADED ARROW FROM BAR -2906 ; [*0B06.0020.0002] # LEFTWARDS DOUBLE ARROW FROM BAR -2907 ; [*0B07.0020.0002] # RIGHTWARDS DOUBLE ARROW FROM BAR -2908 ; [*0B08.0020.0002] # DOWNWARDS ARROW WITH HORIZONTAL STROKE -2909 ; [*0B09.0020.0002] # UPWARDS ARROW WITH HORIZONTAL STROKE -290A ; [*0B0A.0020.0002] # UPWARDS TRIPLE ARROW -290B ; [*0B0B.0020.0002] # DOWNWARDS TRIPLE ARROW -290C ; [*0B0C.0020.0002] # LEFTWARDS DOUBLE DASH ARROW -290D ; [*0B0D.0020.0002] # RIGHTWARDS DOUBLE DASH ARROW -290E ; [*0B0E.0020.0002] # LEFTWARDS TRIPLE DASH ARROW -290F ; [*0B0F.0020.0002] # RIGHTWARDS TRIPLE DASH ARROW -2910 ; [*0B10.0020.0002] # RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW -2911 ; [*0B11.0020.0002] # RIGHTWARDS ARROW WITH DOTTED STEM -2912 ; [*0B12.0020.0002] # UPWARDS ARROW TO BAR -2913 ; [*0B13.0020.0002] # DOWNWARDS ARROW TO BAR -2914 ; [*0B14.0020.0002] # RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE -2915 ; [*0B15.0020.0002] # RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE -2916 ; [*0B16.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH TAIL -2917 ; [*0B17.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE -2918 ; [*0B18.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE -2919 ; [*0B19.0020.0002] # LEFTWARDS ARROW-TAIL -291A ; [*0B1A.0020.0002] # RIGHTWARDS ARROW-TAIL -291B ; [*0B1B.0020.0002] # LEFTWARDS DOUBLE ARROW-TAIL -291C ; [*0B1C.0020.0002] # RIGHTWARDS DOUBLE ARROW-TAIL -291D ; [*0B1D.0020.0002] # LEFTWARDS ARROW TO BLACK DIAMOND -291E ; [*0B1E.0020.0002] # RIGHTWARDS ARROW TO BLACK DIAMOND -291F ; [*0B1F.0020.0002] # LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND -2920 ; [*0B20.0020.0002] # RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND -2921 ; [*0B21.0020.0002] # NORTH WEST AND SOUTH EAST ARROW -2922 ; [*0B22.0020.0002] # NORTH EAST AND SOUTH WEST ARROW -2923 ; [*0B23.0020.0002] # NORTH WEST ARROW WITH HOOK -2924 ; [*0B24.0020.0002] # NORTH EAST ARROW WITH HOOK -2925 ; [*0B25.0020.0002] # SOUTH EAST ARROW WITH HOOK -2926 ; [*0B26.0020.0002] # SOUTH WEST ARROW WITH HOOK -2927 ; [*0B27.0020.0002] # NORTH WEST ARROW AND NORTH EAST ARROW -2928 ; [*0B28.0020.0002] # NORTH EAST ARROW AND SOUTH EAST ARROW -2929 ; [*0B29.0020.0002] # SOUTH EAST ARROW AND SOUTH WEST ARROW -292A ; [*0B2A.0020.0002] # SOUTH WEST ARROW AND NORTH WEST ARROW -292B ; [*0B2B.0020.0002] # RISING DIAGONAL CROSSING FALLING DIAGONAL -292C ; [*0B2C.0020.0002] # FALLING DIAGONAL CROSSING RISING DIAGONAL -292D ; [*0B2D.0020.0002] # SOUTH EAST ARROW CROSSING NORTH EAST ARROW -292E ; [*0B2E.0020.0002] # NORTH EAST ARROW CROSSING SOUTH EAST ARROW -292F ; [*0B2F.0020.0002] # FALLING DIAGONAL CROSSING NORTH EAST ARROW -2930 ; [*0B30.0020.0002] # RISING DIAGONAL CROSSING SOUTH EAST ARROW -2931 ; [*0B31.0020.0002] # NORTH EAST ARROW CROSSING NORTH WEST ARROW -2932 ; [*0B32.0020.0002] # NORTH WEST ARROW CROSSING NORTH EAST ARROW -2933 ; [*0B33.0020.0002] # WAVE ARROW POINTING DIRECTLY RIGHT -2934 ; [*0B34.0020.0002] # ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS -2935 ; [*0B35.0020.0002] # ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS -2936 ; [*0B36.0020.0002] # ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS -2937 ; [*0B37.0020.0002] # ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS -2938 ; [*0B38.0020.0002] # RIGHT-SIDE ARC CLOCKWISE ARROW -2939 ; [*0B39.0020.0002] # LEFT-SIDE ARC ANTICLOCKWISE ARROW -293A ; [*0B3A.0020.0002] # TOP ARC ANTICLOCKWISE ARROW -293B ; [*0B3B.0020.0002] # BOTTOM ARC ANTICLOCKWISE ARROW -293C ; [*0B3C.0020.0002] # TOP ARC CLOCKWISE ARROW WITH MINUS -293D ; [*0B3D.0020.0002] # TOP ARC ANTICLOCKWISE ARROW WITH PLUS -293E ; [*0B3E.0020.0002] # LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW -293F ; [*0B3F.0020.0002] # LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW -2940 ; [*0B40.0020.0002] # ANTICLOCKWISE CLOSED CIRCLE ARROW -2941 ; [*0B41.0020.0002] # CLOCKWISE CLOSED CIRCLE ARROW -2942 ; [*0B42.0020.0002] # RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW -2943 ; [*0B43.0020.0002] # LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW -2944 ; [*0B44.0020.0002] # SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW -2945 ; [*0B45.0020.0002] # RIGHTWARDS ARROW WITH PLUS BELOW -2946 ; [*0B46.0020.0002] # LEFTWARDS ARROW WITH PLUS BELOW -2947 ; [*0B47.0020.0002] # RIGHTWARDS ARROW THROUGH X -2948 ; [*0B48.0020.0002] # LEFT RIGHT ARROW THROUGH SMALL CIRCLE -2949 ; [*0B49.0020.0002] # UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE -294A ; [*0B4A.0020.0002] # LEFT BARB UP RIGHT BARB DOWN HARPOON -294B ; [*0B4B.0020.0002] # LEFT BARB DOWN RIGHT BARB UP HARPOON -294C ; [*0B4C.0020.0002] # UP BARB RIGHT DOWN BARB LEFT HARPOON -294D ; [*0B4D.0020.0002] # UP BARB LEFT DOWN BARB RIGHT HARPOON -294E ; [*0B4E.0020.0002] # LEFT BARB UP RIGHT BARB UP HARPOON -294F ; [*0B4F.0020.0002] # UP BARB RIGHT DOWN BARB RIGHT HARPOON -2950 ; [*0B50.0020.0002] # LEFT BARB DOWN RIGHT BARB DOWN HARPOON -2951 ; [*0B51.0020.0002] # UP BARB LEFT DOWN BARB LEFT HARPOON -2952 ; [*0B52.0020.0002] # LEFTWARDS HARPOON WITH BARB UP TO BAR -2953 ; [*0B53.0020.0002] # RIGHTWARDS HARPOON WITH BARB UP TO BAR -2954 ; [*0B54.0020.0002] # UPWARDS HARPOON WITH BARB RIGHT TO BAR -2955 ; [*0B55.0020.0002] # DOWNWARDS HARPOON WITH BARB RIGHT TO BAR -2956 ; [*0B56.0020.0002] # LEFTWARDS HARPOON WITH BARB DOWN TO BAR -2957 ; [*0B57.0020.0002] # RIGHTWARDS HARPOON WITH BARB DOWN TO BAR -2958 ; [*0B58.0020.0002] # UPWARDS HARPOON WITH BARB LEFT TO BAR -2959 ; [*0B59.0020.0002] # DOWNWARDS HARPOON WITH BARB LEFT TO BAR -295A ; [*0B5A.0020.0002] # LEFTWARDS HARPOON WITH BARB UP FROM BAR -295B ; [*0B5B.0020.0002] # RIGHTWARDS HARPOON WITH BARB UP FROM BAR -295C ; [*0B5C.0020.0002] # UPWARDS HARPOON WITH BARB RIGHT FROM BAR -295D ; [*0B5D.0020.0002] # DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR -295E ; [*0B5E.0020.0002] # LEFTWARDS HARPOON WITH BARB DOWN FROM BAR -295F ; [*0B5F.0020.0002] # RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR -2960 ; [*0B60.0020.0002] # UPWARDS HARPOON WITH BARB LEFT FROM BAR -2961 ; [*0B61.0020.0002] # DOWNWARDS HARPOON WITH BARB LEFT FROM BAR -2962 ; [*0B62.0020.0002] # LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN -2963 ; [*0B63.0020.0002] # UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT -2964 ; [*0B64.0020.0002] # RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN -2965 ; [*0B65.0020.0002] # DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT -2966 ; [*0B66.0020.0002] # LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP -2967 ; [*0B67.0020.0002] # LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN -2968 ; [*0B68.0020.0002] # RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP -2969 ; [*0B69.0020.0002] # RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN -296A ; [*0B6A.0020.0002] # LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH -296B ; [*0B6B.0020.0002] # LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH -296C ; [*0B6C.0020.0002] # RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH -296D ; [*0B6D.0020.0002] # RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH -296E ; [*0B6E.0020.0002] # UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT -296F ; [*0B6F.0020.0002] # DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT -2970 ; [*0B70.0020.0002] # RIGHT DOUBLE ARROW WITH ROUNDED HEAD -2971 ; [*0B71.0020.0002] # EQUALS SIGN ABOVE RIGHTWARDS ARROW -2972 ; [*0B72.0020.0002] # TILDE OPERATOR ABOVE RIGHTWARDS ARROW -2973 ; [*0B73.0020.0002] # LEFTWARDS ARROW ABOVE TILDE OPERATOR -2974 ; [*0B74.0020.0002] # RIGHTWARDS ARROW ABOVE TILDE OPERATOR -2975 ; [*0B75.0020.0002] # RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO -2976 ; [*0B76.0020.0002] # LESS-THAN ABOVE LEFTWARDS ARROW -2977 ; [*0B77.0020.0002] # LEFTWARDS ARROW THROUGH LESS-THAN -2978 ; [*0B78.0020.0002] # GREATER-THAN ABOVE RIGHTWARDS ARROW -2979 ; [*0B79.0020.0002] # SUBSET ABOVE RIGHTWARDS ARROW -297A ; [*0B7A.0020.0002] # LEFTWARDS ARROW THROUGH SUBSET -297B ; [*0B7B.0020.0002] # SUPERSET ABOVE LEFTWARDS ARROW -297C ; [*0B7C.0020.0002] # LEFT FISH TAIL -297D ; [*0B7D.0020.0002] # RIGHT FISH TAIL -297E ; [*0B7E.0020.0002] # UP FISH TAIL -297F ; [*0B7F.0020.0002] # DOWN FISH TAIL -2980 ; [*0B80.0020.0002] # TRIPLE VERTICAL BAR DELIMITER -2981 ; [*0B81.0020.0002] # Z NOTATION SPOT -2982 ; [*0B82.0020.0002] # Z NOTATION TYPE COLON -2983 ; [*032C.0020.0002] # LEFT WHITE CURLY BRACKET -2984 ; [*032D.0020.0002] # RIGHT WHITE CURLY BRACKET -2985 ; [*032E.0020.0002] # LEFT WHITE PARENTHESIS -2986 ; [*032F.0020.0002] # RIGHT WHITE PARENTHESIS -2987 ; [*0330.0020.0002] # Z NOTATION LEFT IMAGE BRACKET -2988 ; [*0331.0020.0002] # Z NOTATION RIGHT IMAGE BRACKET -2989 ; [*0332.0020.0002] # Z NOTATION LEFT BINDING BRACKET -298A ; [*0333.0020.0002] # Z NOTATION RIGHT BINDING BRACKET -298B ; [*0334.0020.0002] # LEFT SQUARE BRACKET WITH UNDERBAR -298C ; [*0335.0020.0002] # RIGHT SQUARE BRACKET WITH UNDERBAR -298D ; [*0336.0020.0002] # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER -298E ; [*0337.0020.0002] # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -298F ; [*0338.0020.0002] # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -2990 ; [*0339.0020.0002] # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER -2991 ; [*033A.0020.0002] # LEFT ANGLE BRACKET WITH DOT -2992 ; [*033B.0020.0002] # RIGHT ANGLE BRACKET WITH DOT -2993 ; [*033C.0020.0002] # LEFT ARC LESS-THAN BRACKET -2994 ; [*033D.0020.0002] # RIGHT ARC GREATER-THAN BRACKET -2995 ; [*033E.0020.0002] # DOUBLE LEFT ARC GREATER-THAN BRACKET -2996 ; [*033F.0020.0002] # DOUBLE RIGHT ARC LESS-THAN BRACKET -2997 ; [*0340.0020.0002] # LEFT BLACK TORTOISE SHELL BRACKET -2998 ; [*0341.0020.0002] # RIGHT BLACK TORTOISE SHELL BRACKET -2999 ; [*0B83.0020.0002] # DOTTED FENCE -299A ; [*0B84.0020.0002] # VERTICAL ZIGZAG LINE -299B ; [*0B85.0020.0002] # MEASURED ANGLE OPENING LEFT -299C ; [*0B86.0020.0002] # RIGHT ANGLE VARIANT WITH SQUARE -299D ; [*0B87.0020.0002] # MEASURED RIGHT ANGLE WITH DOT -299E ; [*0B88.0020.0002] # ANGLE WITH S INSIDE -299F ; [*0B89.0020.0002] # ACUTE ANGLE -29A0 ; [*0B8A.0020.0002] # SPHERICAL ANGLE OPENING LEFT -29A1 ; [*0B8B.0020.0002] # SPHERICAL ANGLE OPENING UP -29A2 ; [*0B8C.0020.0002] # TURNED ANGLE -29A3 ; [*0B8D.0020.0002] # REVERSED ANGLE -29A4 ; [*0B8E.0020.0002] # ANGLE WITH UNDERBAR -29A5 ; [*0B8F.0020.0002] # REVERSED ANGLE WITH UNDERBAR -29A6 ; [*0B90.0020.0002] # OBLIQUE ANGLE OPENING UP -29A7 ; [*0B91.0020.0002] # OBLIQUE ANGLE OPENING DOWN -29A8 ; [*0B92.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT -29A9 ; [*0B93.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT -29AA ; [*0B94.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT -29AB ; [*0B95.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT -29AC ; [*0B96.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP -29AD ; [*0B97.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP -29AE ; [*0B98.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN -29AF ; [*0B99.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN -29B0 ; [*0B9A.0020.0002] # REVERSED EMPTY SET -29B1 ; [*0B9B.0020.0002] # EMPTY SET WITH OVERBAR -29B2 ; [*0B9C.0020.0002] # EMPTY SET WITH SMALL CIRCLE ABOVE -29B3 ; [*0B9D.0020.0002] # EMPTY SET WITH RIGHT ARROW ABOVE -29B4 ; [*0B9E.0020.0002] # EMPTY SET WITH LEFT ARROW ABOVE -29B5 ; [*0B9F.0020.0002] # CIRCLE WITH HORIZONTAL BAR -29B6 ; [*0BA0.0020.0002] # CIRCLED VERTICAL BAR -29B7 ; [*0BA1.0020.0002] # CIRCLED PARALLEL -29B8 ; [*0BA2.0020.0002] # CIRCLED REVERSE SOLIDUS -29B9 ; [*0BA3.0020.0002] # CIRCLED PERPENDICULAR -29BA ; [*0BA4.0020.0002] # CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR -29BB ; [*0BA5.0020.0002] # CIRCLE WITH SUPERIMPOSED X -29BC ; [*0BA6.0020.0002] # CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN -29BD ; [*0BA7.0020.0002] # UP ARROW THROUGH CIRCLE -29BE ; [*0BA8.0020.0002] # CIRCLED WHITE BULLET -29BF ; [*0BA9.0020.0002] # CIRCLED BULLET -29C0 ; [*0BAA.0020.0002] # CIRCLED LESS-THAN -29C1 ; [*0BAB.0020.0002] # CIRCLED GREATER-THAN -29C2 ; [*0BAC.0020.0002] # CIRCLE WITH SMALL CIRCLE TO THE RIGHT -29C3 ; [*0BAD.0020.0002] # CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT -29C4 ; [*0BAE.0020.0002] # SQUARED RISING DIAGONAL SLASH -29C5 ; [*0BAF.0020.0002] # SQUARED FALLING DIAGONAL SLASH -29C6 ; [*0BB0.0020.0002] # SQUARED ASTERISK -29C7 ; [*0BB1.0020.0002] # SQUARED SMALL CIRCLE -29C8 ; [*0BB2.0020.0002] # SQUARED SQUARE -29C9 ; [*0BB3.0020.0002] # TWO JOINED SQUARES -29CA ; [*0BB4.0020.0002] # TRIANGLE WITH DOT ABOVE -29CB ; [*0BB5.0020.0002] # TRIANGLE WITH UNDERBAR -29CC ; [*0BB6.0020.0002] # S IN TRIANGLE -29CD ; [*0BB7.0020.0002] # TRIANGLE WITH SERIFS AT BOTTOM -29CE ; [*0BB8.0020.0002] # RIGHT TRIANGLE ABOVE LEFT TRIANGLE -29CF ; [*0BB9.0020.0002] # LEFT TRIANGLE BESIDE VERTICAL BAR -29D0 ; [*0BBA.0020.0002] # VERTICAL BAR BESIDE RIGHT TRIANGLE -29D1 ; [*0BBB.0020.0002] # BOWTIE WITH LEFT HALF BLACK -29D2 ; [*0BBC.0020.0002] # BOWTIE WITH RIGHT HALF BLACK -29D3 ; [*0BBD.0020.0002] # BLACK BOWTIE -29D4 ; [*0BBE.0020.0002] # TIMES WITH LEFT HALF BLACK -29D5 ; [*0BBF.0020.0002] # TIMES WITH RIGHT HALF BLACK -29D6 ; [*0BC0.0020.0002] # WHITE HOURGLASS -29D7 ; [*0BC1.0020.0002] # BLACK HOURGLASS -29D8 ; [*0386.0020.0002] # LEFT WIGGLY FENCE -29D9 ; [*0387.0020.0002] # RIGHT WIGGLY FENCE -29DA ; [*0388.0020.0002] # LEFT DOUBLE WIGGLY FENCE -29DB ; [*0389.0020.0002] # RIGHT DOUBLE WIGGLY FENCE -29DC ; [*0BC2.0020.0002] # INCOMPLETE INFINITY -29DD ; [*0BC3.0020.0002] # TIE OVER INFINITY -29DE ; [*0BC4.0020.0002] # INFINITY NEGATED WITH VERTICAL BAR -29DF ; [*0BC5.0020.0002] # DOUBLE-ENDED MULTIMAP -29E0 ; [*0BC6.0020.0002] # SQUARE WITH CONTOURED OUTLINE -29E1 ; [*0BC7.0020.0002] # INCREASES AS -29E2 ; [*0BC8.0020.0002] # SHUFFLE PRODUCT -29E3 ; [*0BC9.0020.0002] # EQUALS SIGN AND SLANTED PARALLEL -29E4 ; [*0BCA.0020.0002] # EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE -29E5 ; [*0BCB.0020.0002] # IDENTICAL TO AND SLANTED PARALLEL -29E6 ; [*0BCC.0020.0002] # GLEICH STARK -29E7 ; [*0BCD.0020.0002] # THERMODYNAMIC -29E8 ; [*0BCE.0020.0002] # DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK -29E9 ; [*0BCF.0020.0002] # DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK -29EA ; [*0BD0.0020.0002] # BLACK DIAMOND WITH DOWN ARROW -29EB ; [*0BD1.0020.0002] # BLACK LOZENGE -29EC ; [*0BD2.0020.0002] # WHITE CIRCLE WITH DOWN ARROW -29ED ; [*0BD3.0020.0002] # BLACK CIRCLE WITH DOWN ARROW -29EE ; [*0BD4.0020.0002] # ERROR-BARRED WHITE SQUARE -29EF ; [*0BD5.0020.0002] # ERROR-BARRED BLACK SQUARE -29F0 ; [*0BD6.0020.0002] # ERROR-BARRED WHITE DIAMOND -29F1 ; [*0BD7.0020.0002] # ERROR-BARRED BLACK DIAMOND -29F2 ; [*0BD8.0020.0002] # ERROR-BARRED WHITE CIRCLE -29F3 ; [*0BD9.0020.0002] # ERROR-BARRED BLACK CIRCLE -29F4 ; [*0BDA.0020.0002] # RULE-DELAYED -29F5 ; [*0BDB.0020.0002] # REVERSE SOLIDUS OPERATOR -29F6 ; [*0BDC.0020.0002] # SOLIDUS WITH OVERBAR -29F7 ; [*0BDD.0020.0002] # REVERSE SOLIDUS WITH HORIZONTAL STROKE -29F8 ; [*0BDE.0020.0002] # BIG SOLIDUS -29F9 ; [*0BDF.0020.0002] # BIG REVERSE SOLIDUS -29FA ; [*0BE0.0020.0002] # DOUBLE PLUS -29FB ; [*0BE1.0020.0002] # TRIPLE PLUS -29FC ; [*032A.0020.0002] # LEFT-POINTING CURVED ANGLE BRACKET -29FD ; [*032B.0020.0002] # RIGHT-POINTING CURVED ANGLE BRACKET -29FE ; [*0BE2.0020.0002] # TINY -29FF ; [*0BE3.0020.0002] # MINY -2A00 ; [*0BE4.0020.0002] # N-ARY CIRCLED DOT OPERATOR -2A01 ; [*0BE5.0020.0002] # N-ARY CIRCLED PLUS OPERATOR -2A02 ; [*0BE6.0020.0002] # N-ARY CIRCLED TIMES OPERATOR -2A03 ; [*0BE7.0020.0002] # N-ARY UNION OPERATOR WITH DOT -2A04 ; [*0BE8.0020.0002] # N-ARY UNION OPERATOR WITH PLUS -2A05 ; [*0BE9.0020.0002] # N-ARY SQUARE INTERSECTION OPERATOR -2A06 ; [*0BEA.0020.0002] # N-ARY SQUARE UNION OPERATOR -2A07 ; [*0BEB.0020.0002] # TWO LOGICAL AND OPERATOR -2A08 ; [*0BEC.0020.0002] # TWO LOGICAL OR OPERATOR -2A09 ; [*0BED.0020.0002] # N-ARY TIMES OPERATOR -2A0A ; [*0BEE.0020.0002] # MODULO TWO SUM -2A0B ; [*0BEF.0020.0002] # SUMMATION WITH INTEGRAL -2A0C ; [*0652.0020.0004][*0652.0020.0004][*0652.0020.0004][*0652.0020.0004] # QUADRUPLE INTEGRAL OPERATOR -2A0D ; [*0BF0.0020.0002] # FINITE PART INTEGRAL -2A0E ; [*0BF1.0020.0002] # INTEGRAL WITH DOUBLE STROKE -2A0F ; [*0BF2.0020.0002] # INTEGRAL AVERAGE WITH SLASH -2A10 ; [*0BF3.0020.0002] # CIRCULATION FUNCTION -2A11 ; [*0BF4.0020.0002] # ANTICLOCKWISE INTEGRATION -2A12 ; [*0BF5.0020.0002] # LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE -2A13 ; [*0BF6.0020.0002] # LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE -2A14 ; [*0BF7.0020.0002] # LINE INTEGRATION NOT INCLUDING THE POLE -2A15 ; [*0BF8.0020.0002] # INTEGRAL AROUND A POINT OPERATOR -2A16 ; [*0BF9.0020.0002] # QUATERNION INTEGRAL OPERATOR -2A17 ; [*0BFA.0020.0002] # INTEGRAL WITH LEFTWARDS ARROW WITH HOOK -2A18 ; [*0BFB.0020.0002] # INTEGRAL WITH TIMES SIGN -2A19 ; [*0BFC.0020.0002] # INTEGRAL WITH INTERSECTION -2A1A ; [*0BFD.0020.0002] # INTEGRAL WITH UNION -2A1B ; [*0BFE.0020.0002] # INTEGRAL WITH OVERBAR -2A1C ; [*0BFF.0020.0002] # INTEGRAL WITH UNDERBAR -2A1D ; [*0C00.0020.0002] # JOIN -2A1E ; [*0C01.0020.0002] # LARGE LEFT TRIANGLE OPERATOR -2A1F ; [*0C02.0020.0002] # Z NOTATION SCHEMA COMPOSITION -2A20 ; [*0C03.0020.0002] # Z NOTATION SCHEMA PIPING -2A21 ; [*0C04.0020.0002] # Z NOTATION SCHEMA PROJECTION -2A22 ; [*0C05.0020.0002] # PLUS SIGN WITH SMALL CIRCLE ABOVE -2A23 ; [*0C06.0020.0002] # PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE -2A24 ; [*0C07.0020.0002] # PLUS SIGN WITH TILDE ABOVE -2A25 ; [*0C08.0020.0002] # PLUS SIGN WITH DOT BELOW -2A26 ; [*0C09.0020.0002] # PLUS SIGN WITH TILDE BELOW -2A27 ; [*0C0A.0020.0002] # PLUS SIGN WITH SUBSCRIPT TWO -2A28 ; [*0C0B.0020.0002] # PLUS SIGN WITH BLACK TRIANGLE -2A29 ; [*0C0C.0020.0002] # MINUS SIGN WITH COMMA ABOVE -2A2A ; [*0C0D.0020.0002] # MINUS SIGN WITH DOT BELOW -2A2B ; [*0C0E.0020.0002] # MINUS SIGN WITH FALLING DOTS -2A2C ; [*0C0F.0020.0002] # MINUS SIGN WITH RISING DOTS -2A2D ; [*0C10.0020.0002] # PLUS SIGN IN LEFT HALF CIRCLE -2A2E ; [*0C11.0020.0002] # PLUS SIGN IN RIGHT HALF CIRCLE -2A2F ; [*0C12.0020.0002] # VECTOR OR CROSS PRODUCT -2A30 ; [*0C13.0020.0002] # MULTIPLICATION SIGN WITH DOT ABOVE -2A31 ; [*0C14.0020.0002] # MULTIPLICATION SIGN WITH UNDERBAR -2A32 ; [*0C15.0020.0002] # SEMIDIRECT PRODUCT WITH BOTTOM CLOSED -2A33 ; [*0C16.0020.0002] # SMASH PRODUCT -2A34 ; [*0C17.0020.0002] # MULTIPLICATION SIGN IN LEFT HALF CIRCLE -2A35 ; [*0C18.0020.0002] # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE -2A36 ; [*0C19.0020.0002] # CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT -2A37 ; [*0C1A.0020.0002] # MULTIPLICATION SIGN IN DOUBLE CIRCLE -2A38 ; [*0C1B.0020.0002] # CIRCLED DIVISION SIGN -2A39 ; [*0C1C.0020.0002] # PLUS SIGN IN TRIANGLE -2A3A ; [*0C1D.0020.0002] # MINUS SIGN IN TRIANGLE -2A3B ; [*0C1E.0020.0002] # MULTIPLICATION SIGN IN TRIANGLE -2A3C ; [*0C1F.0020.0002] # INTERIOR PRODUCT -2A3D ; [*0C20.0020.0002] # RIGHTHAND INTERIOR PRODUCT -2A3E ; [*0C21.0020.0002] # Z NOTATION RELATIONAL COMPOSITION -2A3F ; [*0C22.0020.0002] # AMALGAMATION OR COPRODUCT -2A40 ; [*0C23.0020.0002] # INTERSECTION WITH DOT -2A41 ; [*0C24.0020.0002] # UNION WITH MINUS SIGN -2A42 ; [*0C25.0020.0002] # UNION WITH OVERBAR -2A43 ; [*0C26.0020.0002] # INTERSECTION WITH OVERBAR -2A44 ; [*0C27.0020.0002] # INTERSECTION WITH LOGICAL AND -2A45 ; [*0C28.0020.0002] # UNION WITH LOGICAL OR -2A46 ; [*0C29.0020.0002] # UNION ABOVE INTERSECTION -2A47 ; [*0C2A.0020.0002] # INTERSECTION ABOVE UNION -2A48 ; [*0C2B.0020.0002] # UNION ABOVE BAR ABOVE INTERSECTION -2A49 ; [*0C2C.0020.0002] # INTERSECTION ABOVE BAR ABOVE UNION -2A4A ; [*0C2D.0020.0002] # UNION BESIDE AND JOINED WITH UNION -2A4B ; [*0C2E.0020.0002] # INTERSECTION BESIDE AND JOINED WITH INTERSECTION -2A4C ; [*0C2F.0020.0002] # CLOSED UNION WITH SERIFS -2A4D ; [*0C30.0020.0002] # CLOSED INTERSECTION WITH SERIFS -2A4E ; [*0C31.0020.0002] # DOUBLE SQUARE INTERSECTION -2A4F ; [*0C32.0020.0002] # DOUBLE SQUARE UNION -2A50 ; [*0C33.0020.0002] # CLOSED UNION WITH SERIFS AND SMASH PRODUCT -2A51 ; [*0C34.0020.0002] # LOGICAL AND WITH DOT ABOVE -2A52 ; [*0C35.0020.0002] # LOGICAL OR WITH DOT ABOVE -2A53 ; [*0C36.0020.0002] # DOUBLE LOGICAL AND -2A54 ; [*0C37.0020.0002] # DOUBLE LOGICAL OR -2A55 ; [*0C38.0020.0002] # TWO INTERSECTING LOGICAL AND -2A56 ; [*0C39.0020.0002] # TWO INTERSECTING LOGICAL OR -2A57 ; [*0C3A.0020.0002] # SLOPING LARGE OR -2A58 ; [*0C3B.0020.0002] # SLOPING LARGE AND -2A59 ; [*0C3C.0020.0002] # LOGICAL OR OVERLAPPING LOGICAL AND -2A5A ; [*0C3D.0020.0002] # LOGICAL AND WITH MIDDLE STEM -2A5B ; [*0C3E.0020.0002] # LOGICAL OR WITH MIDDLE STEM -2A5C ; [*0C3F.0020.0002] # LOGICAL AND WITH HORIZONTAL DASH -2A5D ; [*0C40.0020.0002] # LOGICAL OR WITH HORIZONTAL DASH -2A5E ; [*0C41.0020.0002] # LOGICAL AND WITH DOUBLE OVERBAR -2A5F ; [*0C42.0020.0002] # LOGICAL AND WITH UNDERBAR -2A60 ; [*0C43.0020.0002] # LOGICAL AND WITH DOUBLE UNDERBAR -2A61 ; [*0C44.0020.0002] # SMALL VEE WITH UNDERBAR -2A62 ; [*0C45.0020.0002] # LOGICAL OR WITH DOUBLE OVERBAR -2A63 ; [*0C46.0020.0002] # LOGICAL OR WITH DOUBLE UNDERBAR -2A64 ; [*0C47.0020.0002] # Z NOTATION DOMAIN ANTIRESTRICTION -2A65 ; [*0C48.0020.0002] # Z NOTATION RANGE ANTIRESTRICTION -2A66 ; [*0C49.0020.0002] # EQUALS SIGN WITH DOT BELOW -2A67 ; [*0C4A.0020.0002] # IDENTICAL WITH DOT ABOVE -2A68 ; [*0C4B.0020.0002] # TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE -2A69 ; [*0C4C.0020.0002] # TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE -2A6A ; [*0C4D.0020.0002] # TILDE OPERATOR WITH DOT ABOVE -2A6B ; [*0C4E.0020.0002] # TILDE OPERATOR WITH RISING DOTS -2A6C ; [*0C4F.0020.0002] # SIMILAR MINUS SIMILAR -2A6D ; [*0C50.0020.0002] # CONGRUENT WITH DOT ABOVE -2A6E ; [*0C51.0020.0002] # EQUALS WITH ASTERISK -2A6F ; [*0C52.0020.0002] # ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT -2A70 ; [*0C53.0020.0002] # APPROXIMATELY EQUAL OR EQUAL TO -2A71 ; [*0C54.0020.0002] # EQUALS SIGN ABOVE PLUS SIGN -2A72 ; [*0C55.0020.0002] # PLUS SIGN ABOVE EQUALS SIGN -2A73 ; [*0C56.0020.0002] # EQUALS SIGN ABOVE TILDE OPERATOR -2A74 ; [*023A.0020.0004][*023A.0020.0004][*0631.0020.0004] # DOUBLE COLON EQUAL -2A75 ; [*0631.0020.0004][*0631.0020.0004] # TWO CONSECUTIVE EQUALS SIGNS -2A76 ; [*0631.0020.0004][*0631.0020.0004][*0631.0020.0004] # THREE CONSECUTIVE EQUALS SIGNS -2A77 ; [*0C57.0020.0002] # EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW -2A78 ; [*0C58.0020.0002] # EQUIVALENT WITH FOUR DOTS ABOVE -2A79 ; [*0C59.0020.0002] # LESS-THAN WITH CIRCLE INSIDE -2A7A ; [*0C5A.0020.0002] # GREATER-THAN WITH CIRCLE INSIDE -2A7B ; [*0C5B.0020.0002] # LESS-THAN WITH QUESTION MARK ABOVE -2A7C ; [*0C5C.0020.0002] # GREATER-THAN WITH QUESTION MARK ABOVE -2A7D ; [*0C5D.0020.0002] # LESS-THAN OR SLANTED EQUAL TO -2A7E ; [*0C5E.0020.0002] # GREATER-THAN OR SLANTED EQUAL TO -2A7F ; [*0C5F.0020.0002] # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE -2A80 ; [*0C60.0020.0002] # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE -2A81 ; [*0C61.0020.0002] # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE -2A82 ; [*0C62.0020.0002] # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE -2A83 ; [*0C63.0020.0002] # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT -2A84 ; [*0C64.0020.0002] # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT -2A85 ; [*0C65.0020.0002] # LESS-THAN OR APPROXIMATE -2A86 ; [*0C66.0020.0002] # GREATER-THAN OR APPROXIMATE -2A87 ; [*0C67.0020.0002] # LESS-THAN AND SINGLE-LINE NOT EQUAL TO -2A88 ; [*0C68.0020.0002] # GREATER-THAN AND SINGLE-LINE NOT EQUAL TO -2A89 ; [*0C69.0020.0002] # LESS-THAN AND NOT APPROXIMATE -2A8A ; [*0C6A.0020.0002] # GREATER-THAN AND NOT APPROXIMATE -2A8B ; [*0C6B.0020.0002] # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN -2A8C ; [*0C6C.0020.0002] # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN -2A8D ; [*0C6D.0020.0002] # LESS-THAN ABOVE SIMILAR OR EQUAL -2A8E ; [*0C6E.0020.0002] # GREATER-THAN ABOVE SIMILAR OR EQUAL -2A8F ; [*0C6F.0020.0002] # LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN -2A90 ; [*0C70.0020.0002] # GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN -2A91 ; [*0C71.0020.0002] # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL -2A92 ; [*0C72.0020.0002] # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL -2A93 ; [*0C73.0020.0002] # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL -2A94 ; [*0C74.0020.0002] # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL -2A95 ; [*0C75.0020.0002] # SLANTED EQUAL TO OR LESS-THAN -2A96 ; [*0C76.0020.0002] # SLANTED EQUAL TO OR GREATER-THAN -2A97 ; [*0C77.0020.0002] # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE -2A98 ; [*0C78.0020.0002] # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE -2A99 ; [*0C79.0020.0002] # DOUBLE-LINE EQUAL TO OR LESS-THAN -2A9A ; [*0C7A.0020.0002] # DOUBLE-LINE EQUAL TO OR GREATER-THAN -2A9B ; [*0C7B.0020.0002] # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN -2A9C ; [*0C7C.0020.0002] # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN -2A9D ; [*0C7D.0020.0002] # SIMILAR OR LESS-THAN -2A9E ; [*0C7E.0020.0002] # SIMILAR OR GREATER-THAN -2A9F ; [*0C7F.0020.0002] # SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN -2AA0 ; [*0C80.0020.0002] # SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN -2AA1 ; [*0C81.0020.0002] # DOUBLE NESTED LESS-THAN -2AA2 ; [*0C82.0020.0002] # DOUBLE NESTED GREATER-THAN -2AA3 ; [*0C83.0020.0002] # DOUBLE NESTED LESS-THAN WITH UNDERBAR -2AA4 ; [*0C84.0020.0002] # GREATER-THAN OVERLAPPING LESS-THAN -2AA5 ; [*0C85.0020.0002] # GREATER-THAN BESIDE LESS-THAN -2AA6 ; [*0C86.0020.0002] # LESS-THAN CLOSED BY CURVE -2AA7 ; [*0C87.0020.0002] # GREATER-THAN CLOSED BY CURVE -2AA8 ; [*0C88.0020.0002] # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL -2AA9 ; [*0C89.0020.0002] # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL -2AAA ; [*0C8A.0020.0002] # SMALLER THAN -2AAB ; [*0C8B.0020.0002] # LARGER THAN -2AAC ; [*0C8C.0020.0002] # SMALLER THAN OR EQUAL TO -2AAD ; [*0C8D.0020.0002] # LARGER THAN OR EQUAL TO -2AAE ; [*0C8E.0020.0002] # EQUALS SIGN WITH BUMPY ABOVE -2AAF ; [*0C8F.0020.0002] # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN -2AB0 ; [*0C90.0020.0002] # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN -2AB1 ; [*0C91.0020.0002] # PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO -2AB2 ; [*0C92.0020.0002] # SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO -2AB3 ; [*0C93.0020.0002] # PRECEDES ABOVE EQUALS SIGN -2AB4 ; [*0C94.0020.0002] # SUCCEEDS ABOVE EQUALS SIGN -2AB5 ; [*0C95.0020.0002] # PRECEDES ABOVE NOT EQUAL TO -2AB6 ; [*0C96.0020.0002] # SUCCEEDS ABOVE NOT EQUAL TO -2AB7 ; [*0C97.0020.0002] # PRECEDES ABOVE ALMOST EQUAL TO -2AB8 ; [*0C98.0020.0002] # SUCCEEDS ABOVE ALMOST EQUAL TO -2AB9 ; [*0C99.0020.0002] # PRECEDES ABOVE NOT ALMOST EQUAL TO -2ABA ; [*0C9A.0020.0002] # SUCCEEDS ABOVE NOT ALMOST EQUAL TO -2ABB ; [*0C9B.0020.0002] # DOUBLE PRECEDES -2ABC ; [*0C9C.0020.0002] # DOUBLE SUCCEEDS -2ABD ; [*0C9D.0020.0002] # SUBSET WITH DOT -2ABE ; [*0C9E.0020.0002] # SUPERSET WITH DOT -2ABF ; [*0C9F.0020.0002] # SUBSET WITH PLUS SIGN BELOW -2AC0 ; [*0CA0.0020.0002] # SUPERSET WITH PLUS SIGN BELOW -2AC1 ; [*0CA1.0020.0002] # SUBSET WITH MULTIPLICATION SIGN BELOW -2AC2 ; [*0CA2.0020.0002] # SUPERSET WITH MULTIPLICATION SIGN BELOW -2AC3 ; [*0CA3.0020.0002] # SUBSET OF OR EQUAL TO WITH DOT ABOVE -2AC4 ; [*0CA4.0020.0002] # SUPERSET OF OR EQUAL TO WITH DOT ABOVE -2AC5 ; [*0CA5.0020.0002] # SUBSET OF ABOVE EQUALS SIGN -2AC6 ; [*0CA6.0020.0002] # SUPERSET OF ABOVE EQUALS SIGN -2AC7 ; [*0CA7.0020.0002] # SUBSET OF ABOVE TILDE OPERATOR -2AC8 ; [*0CA8.0020.0002] # SUPERSET OF ABOVE TILDE OPERATOR -2AC9 ; [*0CA9.0020.0002] # SUBSET OF ABOVE ALMOST EQUAL TO -2ACA ; [*0CAA.0020.0002] # SUPERSET OF ABOVE ALMOST EQUAL TO -2ACB ; [*0CAB.0020.0002] # SUBSET OF ABOVE NOT EQUAL TO -2ACC ; [*0CAC.0020.0002] # SUPERSET OF ABOVE NOT EQUAL TO -2ACD ; [*0CAD.0020.0002] # SQUARE LEFT OPEN BOX OPERATOR -2ACE ; [*0CAE.0020.0002] # SQUARE RIGHT OPEN BOX OPERATOR -2ACF ; [*0CAF.0020.0002] # CLOSED SUBSET -2AD0 ; [*0CB0.0020.0002] # CLOSED SUPERSET -2AD1 ; [*0CB1.0020.0002] # CLOSED SUBSET OR EQUAL TO -2AD2 ; [*0CB2.0020.0002] # CLOSED SUPERSET OR EQUAL TO -2AD3 ; [*0CB3.0020.0002] # SUBSET ABOVE SUPERSET -2AD4 ; [*0CB4.0020.0002] # SUPERSET ABOVE SUBSET -2AD5 ; [*0CB5.0020.0002] # SUBSET ABOVE SUBSET -2AD6 ; [*0CB6.0020.0002] # SUPERSET ABOVE SUPERSET -2AD7 ; [*0CB7.0020.0002] # SUPERSET BESIDE SUBSET -2AD8 ; [*0CB8.0020.0002] # SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET -2AD9 ; [*0CB9.0020.0002] # ELEMENT OF OPENING DOWNWARDS -2ADA ; [*0CBA.0020.0002] # PITCHFORK WITH TEE TOP -2ADB ; [*0CBB.0020.0002] # TRANSVERSAL INTERSECTION -2ADC ; [*0CBC.0020.0002][.0000.002F.0002] # FORKING -2ADD ; [*0CBC.0020.0002] # NONFORKING -2ADE ; [*0CBD.0020.0002] # SHORT LEFT TACK -2ADF ; [*0CBE.0020.0002] # SHORT DOWN TACK -2AE0 ; [*0CBF.0020.0002] # SHORT UP TACK -2AE1 ; [*0CC0.0020.0002] # PERPENDICULAR WITH S -2AE2 ; [*0CC1.0020.0002] # VERTICAL BAR TRIPLE RIGHT TURNSTILE -2AE3 ; [*0CC2.0020.0002] # DOUBLE VERTICAL BAR LEFT TURNSTILE -2AE4 ; [*0CC3.0020.0002] # VERTICAL BAR DOUBLE LEFT TURNSTILE -2AE5 ; [*0CC4.0020.0002] # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE -2AE6 ; [*0CC5.0020.0002] # LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL -2AE7 ; [*0CC6.0020.0002] # SHORT DOWN TACK WITH OVERBAR -2AE8 ; [*0CC7.0020.0002] # SHORT UP TACK WITH UNDERBAR -2AE9 ; [*0CC8.0020.0002] # SHORT UP TACK ABOVE SHORT DOWN TACK -2AEA ; [*0CC9.0020.0002] # DOUBLE DOWN TACK -2AEB ; [*0CCA.0020.0002] # DOUBLE UP TACK -2AEC ; [*0CCB.0020.0002] # DOUBLE STROKE NOT SIGN -2AED ; [*0CCC.0020.0002] # REVERSED DOUBLE STROKE NOT SIGN -2AEE ; [*0CCD.0020.0002] # DOES NOT DIVIDE WITH REVERSED NEGATION SLASH -2AEF ; [*0CCE.0020.0002] # VERTICAL LINE WITH CIRCLE ABOVE -2AF0 ; [*0CCF.0020.0002] # VERTICAL LINE WITH CIRCLE BELOW -2AF1 ; [*0CD0.0020.0002] # DOWN TACK WITH CIRCLE BELOW -2AF2 ; [*0CD1.0020.0002] # PARALLEL WITH HORIZONTAL STROKE -2AF3 ; [*0CD2.0020.0002] # PARALLEL WITH TILDE OPERATOR -2AF4 ; [*0CD3.0020.0002] # TRIPLE VERTICAL BAR BINARY RELATION -2AF5 ; [*0CD4.0020.0002] # TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE -2AF6 ; [*0CD5.0020.0002] # TRIPLE COLON OPERATOR -2AF7 ; [*0CD6.0020.0002] # TRIPLE NESTED LESS-THAN -2AF8 ; [*0CD7.0020.0002] # TRIPLE NESTED GREATER-THAN -2AF9 ; [*0CD8.0020.0002] # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO -2AFA ; [*0CD9.0020.0002] # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO -2AFB ; [*0CDA.0020.0002] # TRIPLE SOLIDUS BINARY RELATION -2AFC ; [*0CDB.0020.0002] # LARGE TRIPLE VERTICAL BAR OPERATOR -2AFD ; [*0CDC.0020.0002] # DOUBLE SOLIDUS OPERATOR -2AFE ; [*0CDD.0020.0002] # WHITE VERTICAL BAR -2AFF ; [*0CDE.0020.0002] # N-ARY WHITE VERTICAL BAR -2B00 ; [*0CDF.0020.0002] # NORTH EAST WHITE ARROW -2B01 ; [*0CE0.0020.0002] # NORTH WEST WHITE ARROW -2B02 ; [*0CE1.0020.0002] # SOUTH EAST WHITE ARROW -2B03 ; [*0CE2.0020.0002] # SOUTH WEST WHITE ARROW -2B04 ; [*0CE3.0020.0002] # LEFT RIGHT WHITE ARROW -2B05 ; [*0CE4.0020.0002] # LEFTWARDS BLACK ARROW -2B06 ; [*0CE5.0020.0002] # UPWARDS BLACK ARROW -2B07 ; [*0CE6.0020.0002] # DOWNWARDS BLACK ARROW -2B08 ; [*0CE7.0020.0002] # NORTH EAST BLACK ARROW -2B09 ; [*0CE8.0020.0002] # NORTH WEST BLACK ARROW -2B0A ; [*0CE9.0020.0002] # SOUTH EAST BLACK ARROW -2B0B ; [*0CEA.0020.0002] # SOUTH WEST BLACK ARROW -2B0C ; [*0CEB.0020.0002] # LEFT RIGHT BLACK ARROW -2B0D ; [*0CEC.0020.0002] # UP DOWN BLACK ARROW -2B0E ; [*0CED.0020.0002] # RIGHTWARDS ARROW WITH TIP DOWNWARDS -2B0F ; [*0CEE.0020.0002] # RIGHTWARDS ARROW WITH TIP UPWARDS -2B10 ; [*0CEF.0020.0002] # LEFTWARDS ARROW WITH TIP DOWNWARDS -2B11 ; [*0CF0.0020.0002] # LEFTWARDS ARROW WITH TIP UPWARDS -2B12 ; [*0CF1.0020.0002] # SQUARE WITH TOP HALF BLACK -2B13 ; [*0CF2.0020.0002] # SQUARE WITH BOTTOM HALF BLACK -2B14 ; [*0CF3.0020.0002] # SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK -2B15 ; [*0CF4.0020.0002] # SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK -2B16 ; [*0CF5.0020.0002] # DIAMOND WITH LEFT HALF BLACK -2B17 ; [*0CF6.0020.0002] # DIAMOND WITH RIGHT HALF BLACK -2B18 ; [*0CF7.0020.0002] # DIAMOND WITH TOP HALF BLACK -2B19 ; [*0CF8.0020.0002] # DIAMOND WITH BOTTOM HALF BLACK -2B1A ; [*0CF9.0020.0002] # DOTTED SQUARE -2B1B ; [*0CFA.0020.0002] # BLACK LARGE SQUARE -2B1C ; [*0CFB.0020.0002] # WHITE LARGE SQUARE -2B1D ; [*0CFC.0020.0002] # BLACK VERY SMALL SQUARE -2B1E ; [*0CFD.0020.0002] # WHITE VERY SMALL SQUARE -2B1F ; [*0CFE.0020.0002] # BLACK PENTAGON -2B20 ; [*0CFF.0020.0002] # WHITE PENTAGON -2B21 ; [*0D00.0020.0002] # WHITE HEXAGON -2B22 ; [*0D01.0020.0002] # BLACK HEXAGON -2B23 ; [*0D02.0020.0002] # HORIZONTAL BLACK HEXAGON -2B24 ; [*0D03.0020.0002] # BLACK LARGE CIRCLE -2B25 ; [*0D04.0020.0002] # BLACK MEDIUM DIAMOND -2B26 ; [*0D05.0020.0002] # WHITE MEDIUM DIAMOND -2B27 ; [*0D06.0020.0002] # BLACK MEDIUM LOZENGE -2B28 ; [*0D07.0020.0002] # WHITE MEDIUM LOZENGE -2B29 ; [*0D08.0020.0002] # BLACK SMALL DIAMOND -2B2A ; [*0D09.0020.0002] # BLACK SMALL LOZENGE -2B2B ; [*0D0A.0020.0002] # WHITE SMALL LOZENGE -2B2C ; [*0D0B.0020.0002] # BLACK HORIZONTAL ELLIPSE -2B2D ; [*0D0C.0020.0002] # WHITE HORIZONTAL ELLIPSE -2B2E ; [*0D0D.0020.0002] # BLACK VERTICAL ELLIPSE -2B2F ; [*0D0E.0020.0002] # WHITE VERTICAL ELLIPSE -2B30 ; [*0D0F.0020.0002] # LEFT ARROW WITH SMALL CIRCLE -2B31 ; [*0D10.0020.0002] # THREE LEFTWARDS ARROWS -2B32 ; [*0D11.0020.0002] # LEFT ARROW WITH CIRCLED PLUS -2B33 ; [*0D12.0020.0002] # LONG LEFTWARDS SQUIGGLE ARROW -2B34 ; [*0D13.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE -2B35 ; [*0D14.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE -2B36 ; [*0D15.0020.0002] # LEFTWARDS TWO-HEADED ARROW FROM BAR -2B37 ; [*0D16.0020.0002] # LEFTWARDS TWO-HEADED TRIPLE DASH ARROW -2B38 ; [*0D17.0020.0002] # LEFTWARDS ARROW WITH DOTTED STEM -2B39 ; [*0D18.0020.0002] # LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE -2B3A ; [*0D19.0020.0002] # LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE -2B3B ; [*0D1A.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH TAIL -2B3C ; [*0D1B.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE -2B3D ; [*0D1C.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE -2B3E ; [*0D1D.0020.0002] # LEFTWARDS ARROW THROUGH X -2B3F ; [*0D1E.0020.0002] # WAVE ARROW POINTING DIRECTLY LEFT -2B40 ; [*0D1F.0020.0002] # EQUALS SIGN ABOVE LEFTWARDS ARROW -2B41 ; [*0D20.0020.0002] # REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW -2B42 ; [*0D21.0020.0002] # LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO -2B43 ; [*0D22.0020.0002] # RIGHTWARDS ARROW THROUGH GREATER-THAN -2B44 ; [*0D23.0020.0002] # RIGHTWARDS ARROW THROUGH SUPERSET -2B45 ; [*0D24.0020.0002] # LEFTWARDS QUADRUPLE ARROW -2B46 ; [*0D25.0020.0002] # RIGHTWARDS QUADRUPLE ARROW -2B47 ; [*0D26.0020.0002] # REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW -2B48 ; [*0D27.0020.0002] # RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO -2B49 ; [*0D28.0020.0002] # TILDE OPERATOR ABOVE LEFTWARDS ARROW -2B4A ; [*0D29.0020.0002] # LEFTWARDS ARROW ABOVE ALMOST EQUAL TO -2B4B ; [*0D2A.0020.0002] # LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR -2B4C ; [*0D2B.0020.0002] # RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR -2B4D ; [*0D2C.0020.0002] # DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW -2B4E ; [*0D2D.0020.0002] # SHORT SLANTED NORTH ARROW -2B4F ; [*0D2E.0020.0002] # SHORT BACKSLANTED SOUTH ARROW -2B50 ; [*0D2F.0020.0002] # WHITE MEDIUM STAR -2B51 ; [*0D30.0020.0002] # BLACK SMALL STAR -2B52 ; [*0D31.0020.0002] # WHITE SMALL STAR -2B53 ; [*0D32.0020.0002] # BLACK RIGHT-POINTING PENTAGON -2B54 ; [*0D33.0020.0002] # WHITE RIGHT-POINTING PENTAGON -2B55 ; [*0D34.0020.0002] # HEAVY LARGE CIRCLE -2B56 ; [*0D35.0020.0002] # HEAVY OVAL WITH OVAL INSIDE -2B57 ; [*0D36.0020.0002] # HEAVY CIRCLE WITH CIRCLE INSIDE -2B58 ; [*0D37.0020.0002] # HEAVY CIRCLE -2B59 ; [*0D38.0020.0002] # HEAVY CIRCLED SALTIRE -2B5A ; [*0D39.0020.0002] # SLANTED NORTH ARROW WITH HOOKED HEAD -2B5B ; [*0D3A.0020.0002] # BACKSLANTED SOUTH ARROW WITH HOOKED TAIL -2B5C ; [*0D3B.0020.0002] # SLANTED NORTH ARROW WITH HORIZONTAL TAIL -2B5D ; [*0D3C.0020.0002] # BACKSLANTED SOUTH ARROW WITH HORIZONTAL TAIL -2B5E ; [*0D3D.0020.0002] # BENT ARROW POINTING DOWNWARDS THEN NORTH EAST -2B5F ; [*0D3E.0020.0002] # SHORT BENT ARROW POINTING DOWNWARDS THEN NORTH EAST -2B60 ; [*0D3F.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW -2B61 ; [*0D40.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW -2B62 ; [*0D41.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW -2B63 ; [*0D42.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW -2B64 ; [*0D43.0020.0002] # LEFT RIGHT TRIANGLE-HEADED ARROW -2B65 ; [*0D44.0020.0002] # UP DOWN TRIANGLE-HEADED ARROW -2B66 ; [*0D45.0020.0002] # NORTH WEST TRIANGLE-HEADED ARROW -2B67 ; [*0D46.0020.0002] # NORTH EAST TRIANGLE-HEADED ARROW -2B68 ; [*0D47.0020.0002] # SOUTH EAST TRIANGLE-HEADED ARROW -2B69 ; [*0D48.0020.0002] # SOUTH WEST TRIANGLE-HEADED ARROW -2B6A ; [*0D49.0020.0002] # LEFTWARDS TRIANGLE-HEADED DASHED ARROW -2B6B ; [*0D4A.0020.0002] # UPWARDS TRIANGLE-HEADED DASHED ARROW -2B6C ; [*0D4B.0020.0002] # RIGHTWARDS TRIANGLE-HEADED DASHED ARROW -2B6D ; [*0D4C.0020.0002] # DOWNWARDS TRIANGLE-HEADED DASHED ARROW -2B6E ; [*0D4D.0020.0002] # CLOCKWISE TRIANGLE-HEADED OPEN CIRCLE ARROW -2B6F ; [*0D4E.0020.0002] # ANTICLOCKWISE TRIANGLE-HEADED OPEN CIRCLE ARROW -2B70 ; [*0D4F.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW TO BAR -2B71 ; [*0D50.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW TO BAR -2B72 ; [*0D51.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW TO BAR -2B73 ; [*0D52.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW TO BAR -2B76 ; [*0D53.0020.0002] # NORTH WEST TRIANGLE-HEADED ARROW TO BAR -2B77 ; [*0D54.0020.0002] # NORTH EAST TRIANGLE-HEADED ARROW TO BAR -2B78 ; [*0D55.0020.0002] # SOUTH EAST TRIANGLE-HEADED ARROW TO BAR -2B79 ; [*0D56.0020.0002] # SOUTH WEST TRIANGLE-HEADED ARROW TO BAR -2B7A ; [*0D57.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE -2B7B ; [*0D58.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE -2B7C ; [*0D59.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE -2B7D ; [*0D5A.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE -2B7E ; [*0D5B.0020.0002] # HORIZONTAL TAB KEY -2B7F ; [*0D5C.0020.0002] # VERTICAL TAB KEY -2B80 ; [*0D5D.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW OVER RIGHTWARDS TRIANGLE-HEADED ARROW -2B81 ; [*0D5E.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW LEFTWARDS OF DOWNWARDS TRIANGLE-HEADED ARROW -2B82 ; [*0D5F.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW OVER LEFTWARDS TRIANGLE-HEADED ARROW -2B83 ; [*0D60.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW LEFTWARDS OF UPWARDS TRIANGLE-HEADED ARROW -2B84 ; [*0D61.0020.0002] # LEFTWARDS TRIANGLE-HEADED PAIRED ARROWS -2B85 ; [*0D62.0020.0002] # UPWARDS TRIANGLE-HEADED PAIRED ARROWS -2B86 ; [*0D63.0020.0002] # RIGHTWARDS TRIANGLE-HEADED PAIRED ARROWS -2B87 ; [*0D64.0020.0002] # DOWNWARDS TRIANGLE-HEADED PAIRED ARROWS -2B88 ; [*0D65.0020.0002] # LEFTWARDS BLACK CIRCLED WHITE ARROW -2B89 ; [*0D66.0020.0002] # UPWARDS BLACK CIRCLED WHITE ARROW -2B8A ; [*0D67.0020.0002] # RIGHTWARDS BLACK CIRCLED WHITE ARROW -2B8B ; [*0D68.0020.0002] # DOWNWARDS BLACK CIRCLED WHITE ARROW -2B8C ; [*0D69.0020.0002] # ANTICLOCKWISE TRIANGLE-HEADED RIGHT U-SHAPED ARROW -2B8D ; [*0D6A.0020.0002] # ANTICLOCKWISE TRIANGLE-HEADED BOTTOM U-SHAPED ARROW -2B8E ; [*0D6B.0020.0002] # ANTICLOCKWISE TRIANGLE-HEADED LEFT U-SHAPED ARROW -2B8F ; [*0D6C.0020.0002] # ANTICLOCKWISE TRIANGLE-HEADED TOP U-SHAPED ARROW -2B90 ; [*0D6D.0020.0002] # RETURN LEFT -2B91 ; [*0D6E.0020.0002] # RETURN RIGHT -2B92 ; [*0D6F.0020.0002] # NEWLINE LEFT -2B93 ; [*0D70.0020.0002] # NEWLINE RIGHT -2B94 ; [*0D71.0020.0002] # FOUR CORNER ARROWS CIRCLING ANTICLOCKWISE -2B95 ; [*0D72.0020.0002] # RIGHTWARDS BLACK ARROW -2B98 ; [*0D73.0020.0002] # THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD -2B99 ; [*0D74.0020.0002] # THREE-D RIGHT-LIGHTED UPWARDS EQUILATERAL ARROWHEAD -2B9A ; [*0D75.0020.0002] # THREE-D TOP-LIGHTED RIGHTWARDS EQUILATERAL ARROWHEAD -2B9B ; [*0D76.0020.0002] # THREE-D LEFT-LIGHTED DOWNWARDS EQUILATERAL ARROWHEAD -2B9C ; [*0D77.0020.0002] # BLACK LEFTWARDS EQUILATERAL ARROWHEAD -2B9D ; [*0D78.0020.0002] # BLACK UPWARDS EQUILATERAL ARROWHEAD -2B9E ; [*0D79.0020.0002] # BLACK RIGHTWARDS EQUILATERAL ARROWHEAD -2B9F ; [*0D7A.0020.0002] # BLACK DOWNWARDS EQUILATERAL ARROWHEAD -2BA0 ; [*0D7B.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH LONG TIP LEFTWARDS -2BA1 ; [*0D7C.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH LONG TIP RIGHTWARDS -2BA2 ; [*0D7D.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH LONG TIP LEFTWARDS -2BA3 ; [*0D7E.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH LONG TIP RIGHTWARDS -2BA4 ; [*0D7F.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP UPWARDS -2BA5 ; [*0D80.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP UPWARDS -2BA6 ; [*0D81.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP DOWNWARDS -2BA7 ; [*0D82.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP DOWNWARDS -2BA8 ; [*0D83.0020.0002] # BLACK CURVED DOWNWARDS AND LEFTWARDS ARROW -2BA9 ; [*0D84.0020.0002] # BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW -2BAA ; [*0D85.0020.0002] # BLACK CURVED UPWARDS AND LEFTWARDS ARROW -2BAB ; [*0D86.0020.0002] # BLACK CURVED UPWARDS AND RIGHTWARDS ARROW -2BAC ; [*0D87.0020.0002] # BLACK CURVED LEFTWARDS AND UPWARDS ARROW -2BAD ; [*0D88.0020.0002] # BLACK CURVED RIGHTWARDS AND UPWARDS ARROW -2BAE ; [*0D89.0020.0002] # BLACK CURVED LEFTWARDS AND DOWNWARDS ARROW -2BAF ; [*0D8A.0020.0002] # BLACK CURVED RIGHTWARDS AND DOWNWARDS ARROW -2BB0 ; [*0D8B.0020.0002] # RIBBON ARROW DOWN LEFT -2BB1 ; [*0D8C.0020.0002] # RIBBON ARROW DOWN RIGHT -2BB2 ; [*0D8D.0020.0002] # RIBBON ARROW UP LEFT -2BB3 ; [*0D8E.0020.0002] # RIBBON ARROW UP RIGHT -2BB4 ; [*0D8F.0020.0002] # RIBBON ARROW LEFT UP -2BB5 ; [*0D90.0020.0002] # RIBBON ARROW RIGHT UP -2BB6 ; [*0D91.0020.0002] # RIBBON ARROW LEFT DOWN -2BB7 ; [*0D92.0020.0002] # RIBBON ARROW RIGHT DOWN -2BB8 ; [*0D93.0020.0002] # UPWARDS WHITE ARROW FROM BAR WITH HORIZONTAL BAR -2BB9 ; [*0D94.0020.0002] # UP ARROWHEAD IN A RECTANGLE BOX -2BBD ; [*0D95.0020.0002] # BALLOT BOX WITH LIGHT X -2BBE ; [*0D96.0020.0002] # CIRCLED X -2BBF ; [*0D97.0020.0002] # CIRCLED BOLD X -2BC0 ; [*0D98.0020.0002] # BLACK SQUARE CENTRED -2BC1 ; [*0D99.0020.0002] # BLACK DIAMOND CENTRED -2BC2 ; [*0D9A.0020.0002] # TURNED BLACK PENTAGON -2BC3 ; [*0D9B.0020.0002] # HORIZONTAL BLACK OCTAGON -2BC4 ; [*0D9C.0020.0002] # BLACK OCTAGON -2BC5 ; [*0D9D.0020.0002] # BLACK MEDIUM UP-POINTING TRIANGLE CENTRED -2BC6 ; [*0D9E.0020.0002] # BLACK MEDIUM DOWN-POINTING TRIANGLE CENTRED -2BC7 ; [*0D9F.0020.0002] # BLACK MEDIUM LEFT-POINTING TRIANGLE CENTRED -2BC8 ; [*0DA0.0020.0002] # BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED -2BCA ; [*0DA1.0020.0002] # TOP HALF BLACK CIRCLE -2BCB ; [*0DA2.0020.0002] # BOTTOM HALF BLACK CIRCLE -2BCC ; [*0DA3.0020.0002] # LIGHT FOUR POINTED BLACK CUSP -2BCD ; [*0DA4.0020.0002] # ROTATED LIGHT FOUR POINTED BLACK CUSP -2BCE ; [*0DA5.0020.0002] # WHITE FOUR POINTED CUSP -2BCF ; [*0DA6.0020.0002] # ROTATED WHITE FOUR POINTED CUSP -2BD0 ; [*0DA7.0020.0002] # SQUARE POSITION INDICATOR -2BD1 ; [*0DA8.0020.0002] # UNCERTAINTY SIGN -2BD2 ; [*0DA9.0020.0002] # GROUP MARK -2BEC ; [*0DAA.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS -2BED ; [*0DAB.0020.0002] # UPWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS -2BEE ; [*0DAC.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS -2BEF ; [*0DAD.0020.0002] # DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS -2CE5 ; [*0DAE.0020.0002] # COPTIC SYMBOL MI RO -2CE6 ; [*0DAF.0020.0002] # COPTIC SYMBOL PI RO -2CE7 ; [*0DB0.0020.0002] # COPTIC SYMBOL STAUROS -2CE8 ; [*0DB1.0020.0002] # COPTIC SYMBOL TAU RO -2CE9 ; [*0DB2.0020.0002] # COPTIC SYMBOL KHI RO -2CEA ; [*0DB3.0020.0002] # COPTIC SYMBOL SHIMA SIMA -2CF9 ; [*0282.0020.0002] # COPTIC OLD NUBIAN FULL STOP -2CFA ; [*026F.0020.0002] # COPTIC OLD NUBIAN DIRECT QUESTION MARK -2CFB ; [*0270.0020.0002] # COPTIC OLD NUBIAN INDIRECT QUESTION MARK -2CFC ; [*02F7.0020.0002] # COPTIC OLD NUBIAN VERSE DIVIDER -2CFD ; [*1B46.0020.0002] # COPTIC FRACTION ONE HALF -2CFE ; [*0283.0020.0002] # COPTIC FULL STOP -2CFF ; [*02F8.0020.0002] # COPTIC MORPHOLOGICAL DIVIDER -2D70 ; [*043D.0020.0002] # TIFINAGH SEPARATOR MARK +207A ; [*0666.0020.0014] # SUPERSCRIPT PLUS SIGN +207B ; [*0671.0020.0014] # SUPERSCRIPT MINUS +207C ; [*066B.0020.0014] # SUPERSCRIPT EQUALS SIGN +207D ; [*0328.0020.0014] # SUPERSCRIPT LEFT PARENTHESIS +207E ; [*0329.0020.0014] # SUPERSCRIPT RIGHT PARENTHESIS +208A ; [*0666.0020.0015] # SUBSCRIPT PLUS SIGN +208B ; [*0671.0020.0015] # SUBSCRIPT MINUS +208C ; [*066B.0020.0015] # SUBSCRIPT EQUALS SIGN +208D ; [*0328.0020.0015] # SUBSCRIPT LEFT PARENTHESIS +208E ; [*0329.0020.0015] # SUBSCRIPT RIGHT PARENTHESIS +2104 ; [*05D6.0020.0002] # CENTRE LINE SYMBOL +2108 ; [*05D7.0020.0002] # SCRUPLE +2114 ; [*05D8.0020.0002] # L B BAR SYMBOL +2117 ; [*05D9.0020.0002] # SOUND RECORDING COPYRIGHT +2118 ; [*05DA.0020.0002] # SCRIPT CAPITAL P +211E ; [*05DB.0020.0002] # PRESCRIPTION TAKE +211F ; [*05DC.0020.0002] # RESPONSE +2123 ; [*05DD.0020.0002] # VERSICLE +2125 ; [*05DE.0020.0002] # OUNCE SIGN +2127 ; [*05DF.0020.0002] # INVERTED OHM SIGN +2129 ; [*05E0.0020.0002] # TURNED GREEK SMALL LETTER IOTA +212E ; [*05E1.0020.0002] # ESTIMATED SYMBOL +213A ; [*05E2.0020.0002] # ROTATED CAPITAL Q +2140 ; [*0665.0020.0005] # DOUBLE-STRUCK N-ARY SUMMATION +2141 ; [*05E3.0020.0002] # TURNED SANS-SERIF CAPITAL G +2142 ; [*05E4.0020.0002] # TURNED SANS-SERIF CAPITAL L +2143 ; [*05E5.0020.0002] # REVERSED SANS-SERIF CAPITAL L +2144 ; [*05E6.0020.0002] # TURNED SANS-SERIF CAPITAL Y +214A ; [*05E7.0020.0002] # PROPERTY LINE +214B ; [*0701.0020.0002] # TURNED AMPERSAND +214C ; [*05E8.0020.0002] # PER SIGN +214F ; [*05E9.0020.0002] # SYMBOL FOR SAMARITAN SOURCE +2180 ; [*1D9B.0020.0002] # ROMAN NUMERAL ONE THOUSAND C D +2181 ; [*1D9C.0020.0002] # ROMAN NUMERAL FIVE THOUSAND +2182 ; [*1D9D.0020.0002] # ROMAN NUMERAL TEN THOUSAND +2186 ; [*1D9E.0020.0002] # ROMAN NUMERAL FIFTY EARLY FORM +2187 ; [*1D9F.0020.0002] # ROMAN NUMERAL FIFTY THOUSAND +2188 ; [*1DA0.0020.0002] # ROMAN NUMERAL ONE HUNDRED THOUSAND +218A ; [*05EA.0020.0002] # TURNED DIGIT TWO +218B ; [*05EB.0020.0002] # TURNED DIGIT THREE +2190 ; [*05EC.0020.0002] # LEFTWARDS ARROW +2191 ; [*05EE.0020.0002] # UPWARDS ARROW +2192 ; [*05ED.0020.0002] # RIGHTWARDS ARROW +2193 ; [*05EF.0020.0002] # DOWNWARDS ARROW +2194 ; [*05F0.0020.0002] # LEFT RIGHT ARROW +2195 ; [*05F1.0020.0002] # UP DOWN ARROW +2196 ; [*05F2.0020.0002] # NORTH WEST ARROW +2197 ; [*05F3.0020.0002] # NORTH EAST ARROW +2198 ; [*05F4.0020.0002] # SOUTH EAST ARROW +2199 ; [*05F5.0020.0002] # SOUTH WEST ARROW +219A ; [*05EC.0020.0002][.0000.002F.0002] # LEFTWARDS ARROW WITH STROKE +219B ; [*05ED.0020.0002][.0000.002F.0002] # RIGHTWARDS ARROW WITH STROKE +219C ; [*05F6.0020.0002] # LEFTWARDS WAVE ARROW +219D ; [*05F7.0020.0002] # RIGHTWARDS WAVE ARROW +219E ; [*05F8.0020.0002] # LEFTWARDS TWO HEADED ARROW +219F ; [*05F9.0020.0002] # UPWARDS TWO HEADED ARROW +21A0 ; [*05FA.0020.0002] # RIGHTWARDS TWO HEADED ARROW +21A1 ; [*05FB.0020.0002] # DOWNWARDS TWO HEADED ARROW +21A2 ; [*05FC.0020.0002] # LEFTWARDS ARROW WITH TAIL +21A3 ; [*05FD.0020.0002] # RIGHTWARDS ARROW WITH TAIL +21A4 ; [*05FE.0020.0002] # LEFTWARDS ARROW FROM BAR +21A5 ; [*05FF.0020.0002] # UPWARDS ARROW FROM BAR +21A6 ; [*0600.0020.0002] # RIGHTWARDS ARROW FROM BAR +21A7 ; [*0601.0020.0002] # DOWNWARDS ARROW FROM BAR +21A8 ; [*0602.0020.0002] # UP DOWN ARROW WITH BASE +21A9 ; [*0603.0020.0002] # LEFTWARDS ARROW WITH HOOK +21AA ; [*0604.0020.0002] # RIGHTWARDS ARROW WITH HOOK +21AB ; [*0605.0020.0002] # LEFTWARDS ARROW WITH LOOP +21AC ; [*0606.0020.0002] # RIGHTWARDS ARROW WITH LOOP +21AD ; [*0607.0020.0002] # LEFT RIGHT WAVE ARROW +21AE ; [*05F0.0020.0002][.0000.002F.0002] # LEFT RIGHT ARROW WITH STROKE +21AF ; [*0608.0020.0002] # DOWNWARDS ZIGZAG ARROW +21B0 ; [*0609.0020.0002] # UPWARDS ARROW WITH TIP LEFTWARDS +21B1 ; [*060A.0020.0002] # UPWARDS ARROW WITH TIP RIGHTWARDS +21B2 ; [*060B.0020.0002] # DOWNWARDS ARROW WITH TIP LEFTWARDS +21B3 ; [*060C.0020.0002] # DOWNWARDS ARROW WITH TIP RIGHTWARDS +21B4 ; [*060D.0020.0002] # RIGHTWARDS ARROW WITH CORNER DOWNWARDS +21B5 ; [*060E.0020.0002] # DOWNWARDS ARROW WITH CORNER LEFTWARDS +21B6 ; [*060F.0020.0002] # ANTICLOCKWISE TOP SEMICIRCLE ARROW +21B7 ; [*0610.0020.0002] # CLOCKWISE TOP SEMICIRCLE ARROW +21B8 ; [*0611.0020.0002] # NORTH WEST ARROW TO LONG BAR +21B9 ; [*0612.0020.0002] # LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR +21BA ; [*0613.0020.0002] # ANTICLOCKWISE OPEN CIRCLE ARROW +21BB ; [*0614.0020.0002] # CLOCKWISE OPEN CIRCLE ARROW +21BC ; [*0615.0020.0002] # LEFTWARDS HARPOON WITH BARB UPWARDS +21BD ; [*0616.0020.0002] # LEFTWARDS HARPOON WITH BARB DOWNWARDS +21BE ; [*0617.0020.0002] # UPWARDS HARPOON WITH BARB RIGHTWARDS +21BF ; [*0618.0020.0002] # UPWARDS HARPOON WITH BARB LEFTWARDS +21C0 ; [*0619.0020.0002] # RIGHTWARDS HARPOON WITH BARB UPWARDS +21C1 ; [*061A.0020.0002] # RIGHTWARDS HARPOON WITH BARB DOWNWARDS +21C2 ; [*061B.0020.0002] # DOWNWARDS HARPOON WITH BARB RIGHTWARDS +21C3 ; [*061C.0020.0002] # DOWNWARDS HARPOON WITH BARB LEFTWARDS +21C4 ; [*061D.0020.0002] # RIGHTWARDS ARROW OVER LEFTWARDS ARROW +21C5 ; [*061E.0020.0002] # UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW +21C6 ; [*061F.0020.0002] # LEFTWARDS ARROW OVER RIGHTWARDS ARROW +21C7 ; [*0620.0020.0002] # LEFTWARDS PAIRED ARROWS +21C8 ; [*0621.0020.0002] # UPWARDS PAIRED ARROWS +21C9 ; [*0622.0020.0002] # RIGHTWARDS PAIRED ARROWS +21CA ; [*0623.0020.0002] # DOWNWARDS PAIRED ARROWS +21CB ; [*0624.0020.0002] # LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON +21CC ; [*0625.0020.0002] # RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON +21CD ; [*0626.0020.0002][.0000.002F.0002] # LEFTWARDS DOUBLE ARROW WITH STROKE +21CE ; [*062A.0020.0002][.0000.002F.0002] # LEFT RIGHT DOUBLE ARROW WITH STROKE +21CF ; [*0628.0020.0002][.0000.002F.0002] # RIGHTWARDS DOUBLE ARROW WITH STROKE +21D0 ; [*0626.0020.0002] # LEFTWARDS DOUBLE ARROW +21D1 ; [*0627.0020.0002] # UPWARDS DOUBLE ARROW +21D2 ; [*0628.0020.0002] # RIGHTWARDS DOUBLE ARROW +21D3 ; [*0629.0020.0002] # DOWNWARDS DOUBLE ARROW +21D4 ; [*062A.0020.0002] # LEFT RIGHT DOUBLE ARROW +21D5 ; [*062B.0020.0002] # UP DOWN DOUBLE ARROW +21D6 ; [*062C.0020.0002] # NORTH WEST DOUBLE ARROW +21D7 ; [*062D.0020.0002] # NORTH EAST DOUBLE ARROW +21D8 ; [*062E.0020.0002] # SOUTH EAST DOUBLE ARROW +21D9 ; [*062F.0020.0002] # SOUTH WEST DOUBLE ARROW +21DA ; [*0630.0020.0002] # LEFTWARDS TRIPLE ARROW +21DB ; [*0631.0020.0002] # RIGHTWARDS TRIPLE ARROW +21DC ; [*0632.0020.0002] # LEFTWARDS SQUIGGLE ARROW +21DD ; [*0633.0020.0002] # RIGHTWARDS SQUIGGLE ARROW +21DE ; [*0634.0020.0002] # UPWARDS ARROW WITH DOUBLE STROKE +21DF ; [*0635.0020.0002] # DOWNWARDS ARROW WITH DOUBLE STROKE +21E0 ; [*0636.0020.0002] # LEFTWARDS DASHED ARROW +21E1 ; [*0637.0020.0002] # UPWARDS DASHED ARROW +21E2 ; [*0638.0020.0002] # RIGHTWARDS DASHED ARROW +21E3 ; [*0639.0020.0002] # DOWNWARDS DASHED ARROW +21E4 ; [*063A.0020.0002] # LEFTWARDS ARROW TO BAR +21E5 ; [*063B.0020.0002] # RIGHTWARDS ARROW TO BAR +21E6 ; [*063C.0020.0002] # LEFTWARDS WHITE ARROW +21E7 ; [*063D.0020.0002] # UPWARDS WHITE ARROW +21E8 ; [*063E.0020.0002] # RIGHTWARDS WHITE ARROW +21E9 ; [*063F.0020.0002] # DOWNWARDS WHITE ARROW +21EA ; [*0640.0020.0002] # UPWARDS WHITE ARROW FROM BAR +21EB ; [*0641.0020.0002] # UPWARDS WHITE ARROW ON PEDESTAL +21EC ; [*0642.0020.0002] # UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR +21ED ; [*0643.0020.0002] # UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR +21EE ; [*0644.0020.0002] # UPWARDS WHITE DOUBLE ARROW +21EF ; [*0645.0020.0002] # UPWARDS WHITE DOUBLE ARROW ON PEDESTAL +21F0 ; [*0646.0020.0002] # RIGHTWARDS WHITE ARROW FROM WALL +21F1 ; [*0647.0020.0002] # NORTH WEST ARROW TO CORNER +21F2 ; [*0648.0020.0002] # SOUTH EAST ARROW TO CORNER +21F3 ; [*0649.0020.0002] # UP DOWN WHITE ARROW +21F4 ; [*064A.0020.0002] # RIGHT ARROW WITH SMALL CIRCLE +21F5 ; [*064B.0020.0002] # DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW +21F6 ; [*064C.0020.0002] # THREE RIGHTWARDS ARROWS +21F7 ; [*064D.0020.0002] # LEFTWARDS ARROW WITH VERTICAL STROKE +21F8 ; [*064E.0020.0002] # RIGHTWARDS ARROW WITH VERTICAL STROKE +21F9 ; [*064F.0020.0002] # LEFT RIGHT ARROW WITH VERTICAL STROKE +21FA ; [*0650.0020.0002] # LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE +21FB ; [*0651.0020.0002] # RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE +21FC ; [*0652.0020.0002] # LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE +21FD ; [*0653.0020.0002] # LEFTWARDS OPEN-HEADED ARROW +21FE ; [*0654.0020.0002] # RIGHTWARDS OPEN-HEADED ARROW +21FF ; [*0655.0020.0002] # LEFT RIGHT OPEN-HEADED ARROW +2200 ; [*0656.0020.0002] # FOR ALL +2201 ; [*0657.0020.0002] # COMPLEMENT +2202 ; [*0658.0020.0002] # PARTIAL DIFFERENTIAL +2203 ; [*0659.0020.0002] # THERE EXISTS +2204 ; [*0659.0020.0002][.0000.002F.0002] # THERE DOES NOT EXIST +2205 ; [*065A.0020.0002] # EMPTY SET +2206 ; [*065B.0020.0002] # INCREMENT +2207 ; [*065C.0020.0002] # NABLA +2208 ; [*065D.0020.0002] # ELEMENT OF +2209 ; [*065D.0020.0002][.0000.002F.0002] # NOT AN ELEMENT OF +220A ; [*065E.0020.0002] # SMALL ELEMENT OF +220B ; [*065F.0020.0002] # CONTAINS AS MEMBER +220C ; [*065F.0020.0002][.0000.002F.0002] # DOES NOT CONTAIN AS MEMBER +220D ; [*0660.0020.0002] # SMALL CONTAINS AS MEMBER +220E ; [*0662.0020.0002] # END OF PROOF +220F ; [*0663.0020.0002] # N-ARY PRODUCT +2210 ; [*0664.0020.0002] # N-ARY COPRODUCT +2211 ; [*0665.0020.0002] # N-ARY SUMMATION +2212 ; [*0671.0020.0002] # MINUS SIGN +2213 ; [*0673.0020.0002] # MINUS-OR-PLUS SIGN +2214 ; [*0674.0020.0002] # DOT PLUS +2215 ; [*0675.0020.0002] # DIVISION SLASH +2216 ; [*0677.0020.0002] # SET MINUS +2217 ; [*0678.0020.0002] # ASTERISK OPERATOR +2218 ; [*0679.0020.0002] # RING OPERATOR +2219 ; [*067A.0020.0002] # BULLET OPERATOR +221A ; [*067B.0020.0002] # SQUARE ROOT +221B ; [*067C.0020.0002] # CUBE ROOT +221C ; [*067E.0020.0002] # FOURTH ROOT +221D ; [*0680.0020.0002] # PROPORTIONAL TO +221E ; [*0681.0020.0002] # INFINITY +221F ; [*0682.0020.0002] # RIGHT ANGLE +2220 ; [*0683.0020.0002] # ANGLE +2221 ; [*0684.0020.0002] # MEASURED ANGLE +2222 ; [*0685.0020.0002] # SPHERICAL ANGLE +2223 ; [*0686.0020.0002] # DIVIDES +2224 ; [*0686.0020.0002][.0000.002F.0002] # DOES NOT DIVIDE +2225 ; [*0687.0020.0002] # PARALLEL TO +2226 ; [*0687.0020.0002][.0000.002F.0002] # NOT PARALLEL TO +2227 ; [*0688.0020.0002] # LOGICAL AND +2228 ; [*0689.0020.0002] # LOGICAL OR +2229 ; [*068A.0020.0002] # INTERSECTION +222A ; [*068B.0020.0002] # UNION +222B ; [*068C.0020.0002] # INTEGRAL +222C ; [*068C.0020.0004][*068C.0020.0004] # DOUBLE INTEGRAL +222D ; [*068C.0020.0004][*068C.0020.0004][*068C.0020.0004] # TRIPLE INTEGRAL +222E ; [*068D.0020.0002] # CONTOUR INTEGRAL +222F ; [*068D.0020.0004][*068D.0020.0004] # SURFACE INTEGRAL +2230 ; [*068D.0020.0004][*068D.0020.0004][*068D.0020.0004] # VOLUME INTEGRAL +2231 ; [*068E.0020.0002] # CLOCKWISE INTEGRAL +2232 ; [*068F.0020.0002] # CLOCKWISE CONTOUR INTEGRAL +2233 ; [*0690.0020.0002] # ANTICLOCKWISE CONTOUR INTEGRAL +2234 ; [*0691.0020.0002] # THEREFORE +2235 ; [*0692.0020.0002] # BECAUSE +2236 ; [*0693.0020.0002] # RATIO +2237 ; [*0694.0020.0002] # PROPORTION +2238 ; [*0695.0020.0002] # DOT MINUS +2239 ; [*0696.0020.0002] # EXCESS +223A ; [*0697.0020.0002] # GEOMETRIC PROPORTION +223B ; [*0698.0020.0002] # HOMOTHETIC +223C ; [*0699.0020.0002] # TILDE OPERATOR +223D ; [*069A.0020.0002] # REVERSED TILDE +223E ; [*069B.0020.0002] # INVERTED LAZY S +223F ; [*069C.0020.0002] # SINE WAVE +2240 ; [*069D.0020.0002] # WREATH PRODUCT +2241 ; [*0699.0020.0002][.0000.002F.0002] # NOT TILDE +2242 ; [*069E.0020.0002] # MINUS TILDE +2243 ; [*069F.0020.0002] # ASYMPTOTICALLY EQUAL TO +2244 ; [*069F.0020.0002][.0000.002F.0002] # NOT ASYMPTOTICALLY EQUAL TO +2245 ; [*06A0.0020.0002] # APPROXIMATELY EQUAL TO +2246 ; [*06A1.0020.0002] # APPROXIMATELY BUT NOT ACTUALLY EQUAL TO +2247 ; [*06A0.0020.0002][.0000.002F.0002] # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO +2248 ; [*06A2.0020.0002] # ALMOST EQUAL TO +2249 ; [*06A2.0020.0002][.0000.002F.0002] # NOT ALMOST EQUAL TO +224A ; [*06A3.0020.0002] # ALMOST EQUAL OR EQUAL TO +224B ; [*06A4.0020.0002] # TRIPLE TILDE +224C ; [*06A5.0020.0002] # ALL EQUAL TO +224D ; [*06A6.0020.0002] # EQUIVALENT TO +224E ; [*06A7.0020.0002] # GEOMETRICALLY EQUIVALENT TO +224F ; [*06A8.0020.0002] # DIFFERENCE BETWEEN +2250 ; [*06A9.0020.0002] # APPROACHES THE LIMIT +2251 ; [*06AA.0020.0002] # GEOMETRICALLY EQUAL TO +2252 ; [*06AB.0020.0002] # APPROXIMATELY EQUAL TO OR THE IMAGE OF +2253 ; [*06AC.0020.0002] # IMAGE OF OR APPROXIMATELY EQUAL TO +2254 ; [*06AD.0020.0002] # COLON EQUALS +2255 ; [*06AE.0020.0002] # EQUALS COLON +2256 ; [*06AF.0020.0002] # RING IN EQUAL TO +2257 ; [*06B0.0020.0002] # RING EQUAL TO +2258 ; [*06B1.0020.0002] # CORRESPONDS TO +2259 ; [*06B2.0020.0002] # ESTIMATES +225A ; [*06B3.0020.0002] # EQUIANGULAR TO +225B ; [*06B4.0020.0002] # STAR EQUALS +225C ; [*06B5.0020.0002] # DELTA EQUAL TO +225D ; [*06B6.0020.0002] # EQUAL TO BY DEFINITION +225E ; [*06B7.0020.0002] # MEASURED BY +225F ; [*06B8.0020.0002] # QUESTIONED EQUAL TO +2260 ; [*066B.0020.0002][.0000.002F.0002] # NOT EQUAL TO +2261 ; [*06B9.0020.0002] # IDENTICAL TO +2262 ; [*06B9.0020.0002][.0000.002F.0002] # NOT IDENTICAL TO +2263 ; [*06BA.0020.0002] # STRICTLY EQUIVALENT TO +2264 ; [*06BB.0020.0002] # LESS-THAN OR EQUAL TO +2265 ; [*06BC.0020.0002] # GREATER-THAN OR EQUAL TO +2266 ; [*06BD.0020.0002] # LESS-THAN OVER EQUAL TO +2267 ; [*06BE.0020.0002] # GREATER-THAN OVER EQUAL TO +2268 ; [*06BF.0020.0002] # LESS-THAN BUT NOT EQUAL TO +2269 ; [*06C0.0020.0002] # GREATER-THAN BUT NOT EQUAL TO +226A ; [*06C1.0020.0002] # MUCH LESS-THAN +226B ; [*06C2.0020.0002] # MUCH GREATER-THAN +226C ; [*06C3.0020.0002] # BETWEEN +226D ; [*06A6.0020.0002][.0000.002F.0002] # NOT EQUIVALENT TO +226E ; [*066A.0020.0002][.0000.002F.0002] # NOT LESS-THAN +226F ; [*066C.0020.0002][.0000.002F.0002] # NOT GREATER-THAN +2270 ; [*06BB.0020.0002][.0000.002F.0002] # NEITHER LESS-THAN NOR EQUAL TO +2271 ; [*06BC.0020.0002][.0000.002F.0002] # NEITHER GREATER-THAN NOR EQUAL TO +2272 ; [*06C4.0020.0002] # LESS-THAN OR EQUIVALENT TO +2273 ; [*06C5.0020.0002] # GREATER-THAN OR EQUIVALENT TO +2274 ; [*06C4.0020.0002][.0000.002F.0002] # NEITHER LESS-THAN NOR EQUIVALENT TO +2275 ; [*06C5.0020.0002][.0000.002F.0002] # NEITHER GREATER-THAN NOR EQUIVALENT TO +2276 ; [*06C6.0020.0002] # LESS-THAN OR GREATER-THAN +2277 ; [*06C7.0020.0002] # GREATER-THAN OR LESS-THAN +2278 ; [*06C6.0020.0002][.0000.002F.0002] # NEITHER LESS-THAN NOR GREATER-THAN +2279 ; [*06C7.0020.0002][.0000.002F.0002] # NEITHER GREATER-THAN NOR LESS-THAN +227A ; [*06C8.0020.0002] # PRECEDES +227B ; [*06C9.0020.0002] # SUCCEEDS +227C ; [*06CA.0020.0002] # PRECEDES OR EQUAL TO +227D ; [*06CB.0020.0002] # SUCCEEDS OR EQUAL TO +227E ; [*06CC.0020.0002] # PRECEDES OR EQUIVALENT TO +227F ; [*06CD.0020.0002] # SUCCEEDS OR EQUIVALENT TO +2280 ; [*06C8.0020.0002][.0000.002F.0002] # DOES NOT PRECEDE +2281 ; [*06C9.0020.0002][.0000.002F.0002] # DOES NOT SUCCEED +2282 ; [*06CE.0020.0002] # SUBSET OF +2283 ; [*06CF.0020.0002] # SUPERSET OF +2284 ; [*06CE.0020.0002][.0000.002F.0002] # NOT A SUBSET OF +2285 ; [*06CF.0020.0002][.0000.002F.0002] # NOT A SUPERSET OF +2286 ; [*06D0.0020.0002] # SUBSET OF OR EQUAL TO +2287 ; [*06D1.0020.0002] # SUPERSET OF OR EQUAL TO +2288 ; [*06D0.0020.0002][.0000.002F.0002] # NEITHER A SUBSET OF NOR EQUAL TO +2289 ; [*06D1.0020.0002][.0000.002F.0002] # NEITHER A SUPERSET OF NOR EQUAL TO +228A ; [*06D2.0020.0002] # SUBSET OF WITH NOT EQUAL TO +228B ; [*06D3.0020.0002] # SUPERSET OF WITH NOT EQUAL TO +228C ; [*06D4.0020.0002] # MULTISET +228D ; [*06D5.0020.0002] # MULTISET MULTIPLICATION +228E ; [*06D6.0020.0002] # MULTISET UNION +228F ; [*06D7.0020.0002] # SQUARE IMAGE OF +2290 ; [*06D8.0020.0002] # SQUARE ORIGINAL OF +2291 ; [*06D9.0020.0002] # SQUARE IMAGE OF OR EQUAL TO +2292 ; [*06DA.0020.0002] # SQUARE ORIGINAL OF OR EQUAL TO +2293 ; [*06DB.0020.0002] # SQUARE CAP +2294 ; [*06DC.0020.0002] # SQUARE CUP +2295 ; [*06DD.0020.0002] # CIRCLED PLUS +2296 ; [*06DE.0020.0002] # CIRCLED MINUS +2297 ; [*06DF.0020.0002] # CIRCLED TIMES +2298 ; [*06E0.0020.0002] # CIRCLED DIVISION SLASH +2299 ; [*06E1.0020.0002] # CIRCLED DOT OPERATOR +229A ; [*06E2.0020.0002] # CIRCLED RING OPERATOR +229B ; [*06E3.0020.0002] # CIRCLED ASTERISK OPERATOR +229C ; [*06E4.0020.0002] # CIRCLED EQUALS +229D ; [*06E5.0020.0002] # CIRCLED DASH +229E ; [*06E6.0020.0002] # SQUARED PLUS +229F ; [*06E7.0020.0002] # SQUARED MINUS +22A0 ; [*06E8.0020.0002] # SQUARED TIMES +22A1 ; [*06E9.0020.0002] # SQUARED DOT OPERATOR +22A2 ; [*06EA.0020.0002] # RIGHT TACK +22A3 ; [*06EB.0020.0002] # LEFT TACK +22A4 ; [*06EC.0020.0002] # DOWN TACK +22A5 ; [*06ED.0020.0002] # UP TACK +22A6 ; [*06EE.0020.0002] # ASSERTION +22A7 ; [*06EF.0020.0002] # MODELS +22A8 ; [*06F0.0020.0002] # TRUE +22A9 ; [*06F1.0020.0002] # FORCES +22AA ; [*06F2.0020.0002] # TRIPLE VERTICAL BAR RIGHT TURNSTILE +22AB ; [*06F3.0020.0002] # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +22AC ; [*06EA.0020.0002][.0000.002F.0002] # DOES NOT PROVE +22AD ; [*06F0.0020.0002][.0000.002F.0002] # NOT TRUE +22AE ; [*06F1.0020.0002][.0000.002F.0002] # DOES NOT FORCE +22AF ; [*06F3.0020.0002][.0000.002F.0002] # NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +22B0 ; [*06F4.0020.0002] # PRECEDES UNDER RELATION +22B1 ; [*06F5.0020.0002] # SUCCEEDS UNDER RELATION +22B2 ; [*06F6.0020.0002] # NORMAL SUBGROUP OF +22B3 ; [*06F7.0020.0002] # CONTAINS AS NORMAL SUBGROUP +22B4 ; [*06F8.0020.0002] # NORMAL SUBGROUP OF OR EQUAL TO +22B5 ; [*06F9.0020.0002] # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO +22B6 ; [*06FA.0020.0002] # ORIGINAL OF +22B7 ; [*06FB.0020.0002] # IMAGE OF +22B8 ; [*06FC.0020.0002] # MULTIMAP +22B9 ; [*06FD.0020.0002] # HERMITIAN CONJUGATE MATRIX +22BA ; [*06FE.0020.0002] # INTERCALATE +22BB ; [*06FF.0020.0002] # XOR +22BC ; [*0700.0020.0002] # NAND +22BD ; [*0702.0020.0002] # NOR +22BE ; [*0703.0020.0002] # RIGHT ANGLE WITH ARC +22BF ; [*0704.0020.0002] # RIGHT TRIANGLE +22C0 ; [*0705.0020.0002] # N-ARY LOGICAL AND +22C1 ; [*0706.0020.0002] # N-ARY LOGICAL OR +22C2 ; [*0707.0020.0002] # N-ARY INTERSECTION +22C3 ; [*0708.0020.0002] # N-ARY UNION +22C4 ; [*0709.0020.0002] # DIAMOND OPERATOR +22C5 ; [*070A.0020.0002] # DOT OPERATOR +22C6 ; [*070B.0020.0002] # STAR OPERATOR +22C7 ; [*070C.0020.0002] # DIVISION TIMES +22C8 ; [*070D.0020.0002] # BOWTIE +22C9 ; [*070E.0020.0002] # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT +22CA ; [*070F.0020.0002] # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT +22CB ; [*0710.0020.0002] # LEFT SEMIDIRECT PRODUCT +22CC ; [*0711.0020.0002] # RIGHT SEMIDIRECT PRODUCT +22CD ; [*0712.0020.0002] # REVERSED TILDE EQUALS +22CE ; [*0713.0020.0002] # CURLY LOGICAL OR +22CF ; [*0714.0020.0002] # CURLY LOGICAL AND +22D0 ; [*0715.0020.0002] # DOUBLE SUBSET +22D1 ; [*0716.0020.0002] # DOUBLE SUPERSET +22D2 ; [*0717.0020.0002] # DOUBLE INTERSECTION +22D3 ; [*0718.0020.0002] # DOUBLE UNION +22D4 ; [*0719.0020.0002] # PITCHFORK +22D5 ; [*071A.0020.0002] # EQUAL AND PARALLEL TO +22D6 ; [*071B.0020.0002] # LESS-THAN WITH DOT +22D7 ; [*071C.0020.0002] # GREATER-THAN WITH DOT +22D8 ; [*071D.0020.0002] # VERY MUCH LESS-THAN +22D9 ; [*071E.0020.0002] # VERY MUCH GREATER-THAN +22DA ; [*071F.0020.0002] # LESS-THAN EQUAL TO OR GREATER-THAN +22DB ; [*0720.0020.0002] # GREATER-THAN EQUAL TO OR LESS-THAN +22DC ; [*0721.0020.0002] # EQUAL TO OR LESS-THAN +22DD ; [*0722.0020.0002] # EQUAL TO OR GREATER-THAN +22DE ; [*0723.0020.0002] # EQUAL TO OR PRECEDES +22DF ; [*0724.0020.0002] # EQUAL TO OR SUCCEEDS +22E0 ; [*06CA.0020.0002][.0000.002F.0002] # DOES NOT PRECEDE OR EQUAL +22E1 ; [*06CB.0020.0002][.0000.002F.0002] # DOES NOT SUCCEED OR EQUAL +22E2 ; [*06D9.0020.0002][.0000.002F.0002] # NOT SQUARE IMAGE OF OR EQUAL TO +22E3 ; [*06DA.0020.0002][.0000.002F.0002] # NOT SQUARE ORIGINAL OF OR EQUAL TO +22E4 ; [*0725.0020.0002] # SQUARE IMAGE OF OR NOT EQUAL TO +22E5 ; [*0726.0020.0002] # SQUARE ORIGINAL OF OR NOT EQUAL TO +22E6 ; [*0727.0020.0002] # LESS-THAN BUT NOT EQUIVALENT TO +22E7 ; [*0728.0020.0002] # GREATER-THAN BUT NOT EQUIVALENT TO +22E8 ; [*0729.0020.0002] # PRECEDES BUT NOT EQUIVALENT TO +22E9 ; [*072A.0020.0002] # SUCCEEDS BUT NOT EQUIVALENT TO +22EA ; [*06F6.0020.0002][.0000.002F.0002] # NOT NORMAL SUBGROUP OF +22EB ; [*06F7.0020.0002][.0000.002F.0002] # DOES NOT CONTAIN AS NORMAL SUBGROUP +22EC ; [*06F8.0020.0002][.0000.002F.0002] # NOT NORMAL SUBGROUP OF OR EQUAL TO +22ED ; [*06F9.0020.0002][.0000.002F.0002] # DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL +22EE ; [*072B.0020.0002] # VERTICAL ELLIPSIS +22EF ; [*072C.0020.0002] # MIDLINE HORIZONTAL ELLIPSIS +22F0 ; [*072D.0020.0002] # UP RIGHT DIAGONAL ELLIPSIS +22F1 ; [*072E.0020.0002] # DOWN RIGHT DIAGONAL ELLIPSIS +22F2 ; [*072F.0020.0002] # ELEMENT OF WITH LONG HORIZONTAL STROKE +22F3 ; [*0730.0020.0002] # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22F4 ; [*0731.0020.0002] # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22F5 ; [*0732.0020.0002] # ELEMENT OF WITH DOT ABOVE +22F6 ; [*0733.0020.0002] # ELEMENT OF WITH OVERBAR +22F7 ; [*0734.0020.0002] # SMALL ELEMENT OF WITH OVERBAR +22F8 ; [*0735.0020.0002] # ELEMENT OF WITH UNDERBAR +22F9 ; [*0736.0020.0002] # ELEMENT OF WITH TWO HORIZONTAL STROKES +22FA ; [*0737.0020.0002] # CONTAINS WITH LONG HORIZONTAL STROKE +22FB ; [*0738.0020.0002] # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22FC ; [*0739.0020.0002] # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22FD ; [*073A.0020.0002] # CONTAINS WITH OVERBAR +22FE ; [*073B.0020.0002] # SMALL CONTAINS WITH OVERBAR +22FF ; [*073C.0020.0002] # Z NOTATION BAG MEMBERSHIP +2300 ; [*073D.0020.0002] # DIAMETER SIGN +2301 ; [*073E.0020.0002] # ELECTRIC ARROW +2302 ; [*073F.0020.0002] # HOUSE +2303 ; [*0740.0020.0002] # UP ARROWHEAD +2304 ; [*0741.0020.0002] # DOWN ARROWHEAD +2305 ; [*0742.0020.0002] # PROJECTIVE +2306 ; [*0743.0020.0002] # PERSPECTIVE +2307 ; [*0744.0020.0002] # WAVY LINE +2308 ; [*0336.0020.0002] # LEFT CEILING +2309 ; [*0337.0020.0002] # RIGHT CEILING +230A ; [*0338.0020.0002] # LEFT FLOOR +230B ; [*0339.0020.0002] # RIGHT FLOOR +230C ; [*0745.0020.0002] # BOTTOM RIGHT CROP +230D ; [*0746.0020.0002] # BOTTOM LEFT CROP +230E ; [*0747.0020.0002] # TOP RIGHT CROP +230F ; [*0748.0020.0002] # TOP LEFT CROP +2310 ; [*0749.0020.0002] # REVERSED NOT SIGN +2311 ; [*074A.0020.0002] # SQUARE LOZENGE +2312 ; [*074B.0020.0002] # ARC +2313 ; [*074C.0020.0002] # SEGMENT +2314 ; [*074D.0020.0002] # SECTOR +2315 ; [*074E.0020.0002] # TELEPHONE RECORDER +2316 ; [*074F.0020.0002] # POSITION INDICATOR +2317 ; [*0750.0020.0002] # VIEWDATA SQUARE +2318 ; [*0751.0020.0002] # PLACE OF INTEREST SIGN +2319 ; [*0752.0020.0002] # TURNED NOT SIGN +231A ; [*0753.0020.0002] # WATCH +231B ; [*0754.0020.0002] # HOURGLASS +231C ; [*0755.0020.0002] # TOP LEFT CORNER +231D ; [*0756.0020.0002] # TOP RIGHT CORNER +231E ; [*0757.0020.0002] # BOTTOM LEFT CORNER +231F ; [*0758.0020.0002] # BOTTOM RIGHT CORNER +2320 ; [*0759.0020.0002] # TOP HALF INTEGRAL +2321 ; [*075A.0020.0002] # BOTTOM HALF INTEGRAL +2322 ; [*075B.0020.0002] # FROWN +2323 ; [*075C.0020.0002] # SMILE +2324 ; [*075D.0020.0002] # UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS +2325 ; [*075E.0020.0002] # OPTION KEY +2326 ; [*075F.0020.0002] # ERASE TO THE RIGHT +2327 ; [*0760.0020.0002] # X IN A RECTANGLE BOX +2328 ; [*0761.0020.0002] # KEYBOARD +2329 ; [*0380.0020.0002] # LEFT-POINTING ANGLE BRACKET +232A ; [*0381.0020.0002] # RIGHT-POINTING ANGLE BRACKET +232B ; [*0762.0020.0002] # ERASE TO THE LEFT +232C ; [*0763.0020.0002] # BENZENE RING +232D ; [*0764.0020.0002] # CYLINDRICITY +232E ; [*0765.0020.0002] # ALL AROUND-PROFILE +232F ; [*0766.0020.0002] # SYMMETRY +2330 ; [*0767.0020.0002] # TOTAL RUNOUT +2331 ; [*0768.0020.0002] # DIMENSION ORIGIN +2332 ; [*0769.0020.0002] # CONICAL TAPER +2333 ; [*076A.0020.0002] # SLOPE +2334 ; [*076B.0020.0002] # COUNTERBORE +2335 ; [*076C.0020.0002] # COUNTERSINK +2336 ; [*076D.0020.0002] # APL FUNCTIONAL SYMBOL I-BEAM +2337 ; [*076E.0020.0002] # APL FUNCTIONAL SYMBOL SQUISH QUAD +2338 ; [*076F.0020.0002] # APL FUNCTIONAL SYMBOL QUAD EQUAL +2339 ; [*0770.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DIVIDE +233A ; [*0771.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DIAMOND +233B ; [*0772.0020.0002] # APL FUNCTIONAL SYMBOL QUAD JOT +233C ; [*0773.0020.0002] # APL FUNCTIONAL SYMBOL QUAD CIRCLE +233D ; [*0774.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE STILE +233E ; [*0775.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE JOT +233F ; [*0776.0020.0002] # APL FUNCTIONAL SYMBOL SLASH BAR +2340 ; [*0777.0020.0002] # APL FUNCTIONAL SYMBOL BACKSLASH BAR +2341 ; [*0778.0020.0002] # APL FUNCTIONAL SYMBOL QUAD SLASH +2342 ; [*0779.0020.0002] # APL FUNCTIONAL SYMBOL QUAD BACKSLASH +2343 ; [*077A.0020.0002] # APL FUNCTIONAL SYMBOL QUAD LESS-THAN +2344 ; [*077B.0020.0002] # APL FUNCTIONAL SYMBOL QUAD GREATER-THAN +2345 ; [*077C.0020.0002] # APL FUNCTIONAL SYMBOL LEFTWARDS VANE +2346 ; [*077D.0020.0002] # APL FUNCTIONAL SYMBOL RIGHTWARDS VANE +2347 ; [*077E.0020.0002] # APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW +2348 ; [*077F.0020.0002] # APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW +2349 ; [*0780.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH +234A ; [*0781.0020.0002] # APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR +234B ; [*0782.0020.0002] # APL FUNCTIONAL SYMBOL DELTA STILE +234C ; [*0783.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DOWN CARET +234D ; [*0784.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DELTA +234E ; [*0785.0020.0002] # APL FUNCTIONAL SYMBOL DOWN TACK JOT +234F ; [*0786.0020.0002] # APL FUNCTIONAL SYMBOL UPWARDS VANE +2350 ; [*0787.0020.0002] # APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW +2351 ; [*0788.0020.0002] # APL FUNCTIONAL SYMBOL UP TACK OVERBAR +2352 ; [*0789.0020.0002] # APL FUNCTIONAL SYMBOL DEL STILE +2353 ; [*078A.0020.0002] # APL FUNCTIONAL SYMBOL QUAD UP CARET +2354 ; [*078B.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DEL +2355 ; [*078C.0020.0002] # APL FUNCTIONAL SYMBOL UP TACK JOT +2356 ; [*078D.0020.0002] # APL FUNCTIONAL SYMBOL DOWNWARDS VANE +2357 ; [*078E.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW +2358 ; [*078F.0020.0002] # APL FUNCTIONAL SYMBOL QUOTE UNDERBAR +2359 ; [*0790.0020.0002] # APL FUNCTIONAL SYMBOL DELTA UNDERBAR +235A ; [*0791.0020.0002] # APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR +235B ; [*0792.0020.0002] # APL FUNCTIONAL SYMBOL JOT UNDERBAR +235C ; [*0793.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR +235D ; [*0794.0020.0002] # APL FUNCTIONAL SYMBOL UP SHOE JOT +235E ; [*0795.0020.0002] # APL FUNCTIONAL SYMBOL QUOTE QUAD +235F ; [*0796.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE STAR +2360 ; [*0797.0020.0002] # APL FUNCTIONAL SYMBOL QUAD COLON +2361 ; [*0798.0020.0002] # APL FUNCTIONAL SYMBOL UP TACK DIAERESIS +2362 ; [*0799.0020.0002] # APL FUNCTIONAL SYMBOL DEL DIAERESIS +2363 ; [*079A.0020.0002] # APL FUNCTIONAL SYMBOL STAR DIAERESIS +2364 ; [*079B.0020.0002] # APL FUNCTIONAL SYMBOL JOT DIAERESIS +2365 ; [*079C.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS +2366 ; [*079D.0020.0002] # APL FUNCTIONAL SYMBOL DOWN SHOE STILE +2367 ; [*079E.0020.0002] # APL FUNCTIONAL SYMBOL LEFT SHOE STILE +2368 ; [*079F.0020.0002] # APL FUNCTIONAL SYMBOL TILDE DIAERESIS +2369 ; [*07A0.0020.0002] # APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS +236A ; [*07A1.0020.0002] # APL FUNCTIONAL SYMBOL COMMA BAR +236B ; [*07A2.0020.0002] # APL FUNCTIONAL SYMBOL DEL TILDE +236C ; [*07A3.0020.0002] # APL FUNCTIONAL SYMBOL ZILDE +236D ; [*07A4.0020.0002] # APL FUNCTIONAL SYMBOL STILE TILDE +236E ; [*07A5.0020.0002] # APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR +236F ; [*07A6.0020.0002] # APL FUNCTIONAL SYMBOL QUAD NOT EQUAL +2370 ; [*07A7.0020.0002] # APL FUNCTIONAL SYMBOL QUAD QUESTION +2371 ; [*07A8.0020.0002] # APL FUNCTIONAL SYMBOL DOWN CARET TILDE +2372 ; [*07A9.0020.0002] # APL FUNCTIONAL SYMBOL UP CARET TILDE +2373 ; [*07AA.0020.0002] # APL FUNCTIONAL SYMBOL IOTA +2374 ; [*07AB.0020.0002] # APL FUNCTIONAL SYMBOL RHO +2375 ; [*07AC.0020.0002] # APL FUNCTIONAL SYMBOL OMEGA +2376 ; [*07AD.0020.0002] # APL FUNCTIONAL SYMBOL ALPHA UNDERBAR +2377 ; [*07AE.0020.0002] # APL FUNCTIONAL SYMBOL EPSILON UNDERBAR +2378 ; [*07AF.0020.0002] # APL FUNCTIONAL SYMBOL IOTA UNDERBAR +2379 ; [*07B0.0020.0002] # APL FUNCTIONAL SYMBOL OMEGA UNDERBAR +237A ; [*07B1.0020.0002] # APL FUNCTIONAL SYMBOL ALPHA +237B ; [*07B2.0020.0002] # NOT CHECK MARK +237C ; [*07B3.0020.0002] # RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW +237D ; [*07B4.0020.0002] # SHOULDERED OPEN BOX +237E ; [*07B5.0020.0002] # BELL SYMBOL +237F ; [*07B6.0020.0002] # VERTICAL LINE WITH MIDDLE DOT +2380 ; [*07B7.0020.0002] # INSERTION SYMBOL +2381 ; [*07B8.0020.0002] # CONTINUOUS UNDERLINE SYMBOL +2382 ; [*07B9.0020.0002] # DISCONTINUOUS UNDERLINE SYMBOL +2383 ; [*07BA.0020.0002] # EMPHASIS SYMBOL +2384 ; [*07BB.0020.0002] # COMPOSITION SYMBOL +2385 ; [*07BC.0020.0002] # WHITE SQUARE WITH CENTRE VERTICAL LINE +2386 ; [*07BD.0020.0002] # ENTER SYMBOL +2387 ; [*07BE.0020.0002] # ALTERNATIVE KEY SYMBOL +2388 ; [*07BF.0020.0002] # HELM SYMBOL +2389 ; [*07C0.0020.0002] # CIRCLED HORIZONTAL BAR WITH NOTCH +238A ; [*07C1.0020.0002] # CIRCLED TRIANGLE DOWN +238B ; [*07C2.0020.0002] # BROKEN CIRCLE WITH NORTHWEST ARROW +238C ; [*07C3.0020.0002] # UNDO SYMBOL +238D ; [*07C4.0020.0002] # MONOSTABLE SYMBOL +238E ; [*07C5.0020.0002] # HYSTERESIS SYMBOL +238F ; [*07C6.0020.0002] # OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL +2390 ; [*07C7.0020.0002] # OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL +2391 ; [*07C8.0020.0002] # PASSIVE-PULL-DOWN-OUTPUT SYMBOL +2392 ; [*07C9.0020.0002] # PASSIVE-PULL-UP-OUTPUT SYMBOL +2393 ; [*07CA.0020.0002] # DIRECT CURRENT SYMBOL FORM TWO +2394 ; [*07CB.0020.0002] # SOFTWARE-FUNCTION SYMBOL +2395 ; [*07CC.0020.0002] # APL FUNCTIONAL SYMBOL QUAD +2396 ; [*07CD.0020.0002] # DECIMAL SEPARATOR KEY SYMBOL +2397 ; [*07CE.0020.0002] # PREVIOUS PAGE +2398 ; [*07CF.0020.0002] # NEXT PAGE +2399 ; [*07D0.0020.0002] # PRINT SCREEN SYMBOL +239A ; [*07D1.0020.0002] # CLEAR SCREEN SYMBOL +239B ; [*07D2.0020.0002] # LEFT PARENTHESIS UPPER HOOK +239C ; [*07D3.0020.0002] # LEFT PARENTHESIS EXTENSION +239D ; [*07D4.0020.0002] # LEFT PARENTHESIS LOWER HOOK +239E ; [*07D5.0020.0002] # RIGHT PARENTHESIS UPPER HOOK +239F ; [*07D6.0020.0002] # RIGHT PARENTHESIS EXTENSION +23A0 ; [*07D7.0020.0002] # RIGHT PARENTHESIS LOWER HOOK +23A1 ; [*07D8.0020.0002] # LEFT SQUARE BRACKET UPPER CORNER +23A2 ; [*07D9.0020.0002] # LEFT SQUARE BRACKET EXTENSION +23A3 ; [*07DA.0020.0002] # LEFT SQUARE BRACKET LOWER CORNER +23A4 ; [*07DB.0020.0002] # RIGHT SQUARE BRACKET UPPER CORNER +23A5 ; [*07DC.0020.0002] # RIGHT SQUARE BRACKET EXTENSION +23A6 ; [*07DD.0020.0002] # RIGHT SQUARE BRACKET LOWER CORNER +23A7 ; [*07DE.0020.0002] # LEFT CURLY BRACKET UPPER HOOK +23A8 ; [*07DF.0020.0002] # LEFT CURLY BRACKET MIDDLE PIECE +23A9 ; [*07E0.0020.0002] # LEFT CURLY BRACKET LOWER HOOK +23AA ; [*07E1.0020.0002] # CURLY BRACKET EXTENSION +23AB ; [*07E2.0020.0002] # RIGHT CURLY BRACKET UPPER HOOK +23AC ; [*07E3.0020.0002] # RIGHT CURLY BRACKET MIDDLE PIECE +23AD ; [*07E4.0020.0002] # RIGHT CURLY BRACKET LOWER HOOK +23AE ; [*07E5.0020.0002] # INTEGRAL EXTENSION +23AF ; [*07E6.0020.0002] # HORIZONTAL LINE EXTENSION +23B0 ; [*07E7.0020.0002] # UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION +23B1 ; [*07E8.0020.0002] # UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION +23B2 ; [*07E9.0020.0002] # SUMMATION TOP +23B3 ; [*07EA.0020.0002] # SUMMATION BOTTOM +23B4 ; [*07EB.0020.0002] # TOP SQUARE BRACKET +23B5 ; [*07EC.0020.0002] # BOTTOM SQUARE BRACKET +23B6 ; [*07ED.0020.0002] # BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET +23B7 ; [*07EE.0020.0002] # RADICAL SYMBOL BOTTOM +23B8 ; [*07EF.0020.0002] # LEFT VERTICAL BOX LINE +23B9 ; [*07F0.0020.0002] # RIGHT VERTICAL BOX LINE +23BA ; [*07F1.0020.0002] # HORIZONTAL SCAN LINE-1 +23BB ; [*07F2.0020.0002] # HORIZONTAL SCAN LINE-3 +23BC ; [*07F3.0020.0002] # HORIZONTAL SCAN LINE-7 +23BD ; [*07F4.0020.0002] # HORIZONTAL SCAN LINE-9 +23BE ; [*07F5.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT +23BF ; [*07F6.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT +23C0 ; [*07F7.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE +23C1 ; [*07F8.0020.0002] # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE +23C2 ; [*07F9.0020.0002] # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE +23C3 ; [*07FA.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE +23C4 ; [*07FB.0020.0002] # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE +23C5 ; [*07FC.0020.0002] # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE +23C6 ; [*07FD.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE +23C7 ; [*07FE.0020.0002] # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE +23C8 ; [*07FF.0020.0002] # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE +23C9 ; [*0800.0020.0002] # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL +23CA ; [*0801.0020.0002] # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL +23CB ; [*0802.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT +23CC ; [*0803.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT +23CD ; [*0804.0020.0002] # SQUARE FOOT +23CE ; [*0805.0020.0002] # RETURN SYMBOL +23CF ; [*0806.0020.0002] # EJECT SYMBOL +23D0 ; [*0807.0020.0002] # VERTICAL LINE EXTENSION +23D1 ; [*0808.0020.0002] # METRICAL BREVE +23D2 ; [*0809.0020.0002] # METRICAL LONG OVER SHORT +23D3 ; [*080A.0020.0002] # METRICAL SHORT OVER LONG +23D4 ; [*080B.0020.0002] # METRICAL LONG OVER TWO SHORTS +23D5 ; [*080C.0020.0002] # METRICAL TWO SHORTS OVER LONG +23D6 ; [*080D.0020.0002] # METRICAL TWO SHORTS JOINED +23D7 ; [*080E.0020.0002] # METRICAL TRISEME +23D8 ; [*080F.0020.0002] # METRICAL TETRASEME +23D9 ; [*0810.0020.0002] # METRICAL PENTASEME +23DA ; [*0811.0020.0002] # EARTH GROUND +23DB ; [*0812.0020.0002] # FUSE +23DC ; [*0813.0020.0002] # TOP PARENTHESIS +23DD ; [*0814.0020.0002] # BOTTOM PARENTHESIS +23DE ; [*0815.0020.0002] # TOP CURLY BRACKET +23DF ; [*0816.0020.0002] # BOTTOM CURLY BRACKET +23E0 ; [*0817.0020.0002] # TOP TORTOISE SHELL BRACKET +23E1 ; [*0818.0020.0002] # BOTTOM TORTOISE SHELL BRACKET +23E2 ; [*0819.0020.0002] # WHITE TRAPEZIUM +23E3 ; [*081A.0020.0002] # BENZENE RING WITH CIRCLE +23E4 ; [*081B.0020.0002] # STRAIGHTNESS +23E5 ; [*081C.0020.0002] # FLATNESS +23E6 ; [*081D.0020.0002] # AC CURRENT +23E7 ; [*081E.0020.0002] # ELECTRICAL INTERSECTION +23E8 ; [*081F.0020.0002] # DECIMAL EXPONENT SYMBOL +23E9 ; [*0820.0020.0002] # BLACK RIGHT-POINTING DOUBLE TRIANGLE +23EA ; [*0821.0020.0002] # BLACK LEFT-POINTING DOUBLE TRIANGLE +23EB ; [*0822.0020.0002] # BLACK UP-POINTING DOUBLE TRIANGLE +23EC ; [*0823.0020.0002] # BLACK DOWN-POINTING DOUBLE TRIANGLE +23ED ; [*0824.0020.0002] # BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR +23EE ; [*0825.0020.0002] # BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR +23EF ; [*0826.0020.0002] # BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR +23F0 ; [*0827.0020.0002] # ALARM CLOCK +23F1 ; [*0828.0020.0002] # STOPWATCH +23F2 ; [*0829.0020.0002] # TIMER CLOCK +23F3 ; [*082A.0020.0002] # HOURGLASS WITH FLOWING SAND +23F4 ; [*082B.0020.0002] # BLACK MEDIUM LEFT-POINTING TRIANGLE +23F5 ; [*082C.0020.0002] # BLACK MEDIUM RIGHT-POINTING TRIANGLE +23F6 ; [*082D.0020.0002] # BLACK MEDIUM UP-POINTING TRIANGLE +23F7 ; [*082E.0020.0002] # BLACK MEDIUM DOWN-POINTING TRIANGLE +23F8 ; [*082F.0020.0002] # DOUBLE VERTICAL BAR +23F9 ; [*0830.0020.0002] # BLACK SQUARE FOR STOP +23FA ; [*0831.0020.0002] # BLACK CIRCLE FOR RECORD +23FB ; [*0832.0020.0002] # POWER SYMBOL +23FC ; [*0833.0020.0002] # POWER ON-OFF SYMBOL +23FD ; [*0834.0020.0002] # POWER ON SYMBOL +23FE ; [*0835.0020.0002] # POWER SLEEP SYMBOL +23FF ; [*0836.0020.0002] # OBSERVER EYE SYMBOL +2400 ; [*0837.0020.0002] # SYMBOL FOR NULL +2401 ; [*0838.0020.0002] # SYMBOL FOR START OF HEADING +2402 ; [*0839.0020.0002] # SYMBOL FOR START OF TEXT +2403 ; [*083A.0020.0002] # SYMBOL FOR END OF TEXT +2404 ; [*083B.0020.0002] # SYMBOL FOR END OF TRANSMISSION +2405 ; [*083C.0020.0002] # SYMBOL FOR ENQUIRY +2406 ; [*083D.0020.0002] # SYMBOL FOR ACKNOWLEDGE +2407 ; [*083E.0020.0002] # SYMBOL FOR BELL +2408 ; [*083F.0020.0002] # SYMBOL FOR BACKSPACE +2409 ; [*0840.0020.0002] # SYMBOL FOR HORIZONTAL TABULATION +240A ; [*0841.0020.0002] # SYMBOL FOR LINE FEED +240B ; [*0842.0020.0002] # SYMBOL FOR VERTICAL TABULATION +240C ; [*0843.0020.0002] # SYMBOL FOR FORM FEED +240D ; [*0844.0020.0002] # SYMBOL FOR CARRIAGE RETURN +240E ; [*0845.0020.0002] # SYMBOL FOR SHIFT OUT +240F ; [*0846.0020.0002] # SYMBOL FOR SHIFT IN +2410 ; [*0847.0020.0002] # SYMBOL FOR DATA LINK ESCAPE +2411 ; [*0848.0020.0002] # SYMBOL FOR DEVICE CONTROL ONE +2412 ; [*0849.0020.0002] # SYMBOL FOR DEVICE CONTROL TWO +2413 ; [*084A.0020.0002] # SYMBOL FOR DEVICE CONTROL THREE +2414 ; [*084B.0020.0002] # SYMBOL FOR DEVICE CONTROL FOUR +2415 ; [*084C.0020.0002] # SYMBOL FOR NEGATIVE ACKNOWLEDGE +2416 ; [*084D.0020.0002] # SYMBOL FOR SYNCHRONOUS IDLE +2417 ; [*084E.0020.0002] # SYMBOL FOR END OF TRANSMISSION BLOCK +2418 ; [*084F.0020.0002] # SYMBOL FOR CANCEL +2419 ; [*0850.0020.0002] # SYMBOL FOR END OF MEDIUM +241A ; [*0851.0020.0002] # SYMBOL FOR SUBSTITUTE +241B ; [*0852.0020.0002] # SYMBOL FOR ESCAPE +241C ; [*0853.0020.0002] # SYMBOL FOR FILE SEPARATOR +241D ; [*0854.0020.0002] # SYMBOL FOR GROUP SEPARATOR +241E ; [*0855.0020.0002] # SYMBOL FOR RECORD SEPARATOR +241F ; [*0856.0020.0002] # SYMBOL FOR UNIT SEPARATOR +2420 ; [*0857.0020.0002] # SYMBOL FOR SPACE +2421 ; [*0858.0020.0002] # SYMBOL FOR DELETE +2422 ; [*0859.0020.0002] # BLANK SYMBOL +2423 ; [*085A.0020.0002] # OPEN BOX +2424 ; [*085B.0020.0002] # SYMBOL FOR NEWLINE +2425 ; [*085C.0020.0002] # SYMBOL FOR DELETE FORM TWO +2426 ; [*085D.0020.0002] # SYMBOL FOR SUBSTITUTE FORM TWO +2440 ; [*085E.0020.0002] # OCR HOOK +2441 ; [*085F.0020.0002] # OCR CHAIR +2442 ; [*0860.0020.0002] # OCR FORK +2443 ; [*0861.0020.0002] # OCR INVERTED FORK +2444 ; [*0862.0020.0002] # OCR BELT BUCKLE +2445 ; [*0863.0020.0002] # OCR BOW TIE +2446 ; [*0864.0020.0002] # OCR BRANCH BANK IDENTIFICATION +2447 ; [*0865.0020.0002] # OCR AMOUNT OF CHECK +2448 ; [*0866.0020.0002] # OCR DASH +2449 ; [*0867.0020.0002] # OCR CUSTOMER ACCOUNT NUMBER +244A ; [*0868.0020.0002] # OCR DOUBLE BACKSLASH +2500 ; [*0869.0020.0002] # BOX DRAWINGS LIGHT HORIZONTAL +2501 ; [*086A.0020.0002] # BOX DRAWINGS HEAVY HORIZONTAL +2502 ; [*086B.0020.0002] # BOX DRAWINGS LIGHT VERTICAL +2503 ; [*086C.0020.0002] # BOX DRAWINGS HEAVY VERTICAL +2504 ; [*086D.0020.0002] # BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL +2505 ; [*086E.0020.0002] # BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL +2506 ; [*086F.0020.0002] # BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL +2507 ; [*0870.0020.0002] # BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL +2508 ; [*0871.0020.0002] # BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL +2509 ; [*0872.0020.0002] # BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL +250A ; [*0873.0020.0002] # BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL +250B ; [*0874.0020.0002] # BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL +250C ; [*0875.0020.0002] # BOX DRAWINGS LIGHT DOWN AND RIGHT +250D ; [*0876.0020.0002] # BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY +250E ; [*0877.0020.0002] # BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT +250F ; [*0878.0020.0002] # BOX DRAWINGS HEAVY DOWN AND RIGHT +2510 ; [*0879.0020.0002] # BOX DRAWINGS LIGHT DOWN AND LEFT +2511 ; [*087A.0020.0002] # BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY +2512 ; [*087B.0020.0002] # BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT +2513 ; [*087C.0020.0002] # BOX DRAWINGS HEAVY DOWN AND LEFT +2514 ; [*087D.0020.0002] # BOX DRAWINGS LIGHT UP AND RIGHT +2515 ; [*087E.0020.0002] # BOX DRAWINGS UP LIGHT AND RIGHT HEAVY +2516 ; [*087F.0020.0002] # BOX DRAWINGS UP HEAVY AND RIGHT LIGHT +2517 ; [*0880.0020.0002] # BOX DRAWINGS HEAVY UP AND RIGHT +2518 ; [*0881.0020.0002] # BOX DRAWINGS LIGHT UP AND LEFT +2519 ; [*0882.0020.0002] # BOX DRAWINGS UP LIGHT AND LEFT HEAVY +251A ; [*0883.0020.0002] # BOX DRAWINGS UP HEAVY AND LEFT LIGHT +251B ; [*0884.0020.0002] # BOX DRAWINGS HEAVY UP AND LEFT +251C ; [*0885.0020.0002] # BOX DRAWINGS LIGHT VERTICAL AND RIGHT +251D ; [*0886.0020.0002] # BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY +251E ; [*0887.0020.0002] # BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT +251F ; [*0888.0020.0002] # BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT +2520 ; [*0889.0020.0002] # BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT +2521 ; [*088A.0020.0002] # BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY +2522 ; [*088B.0020.0002] # BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY +2523 ; [*088C.0020.0002] # BOX DRAWINGS HEAVY VERTICAL AND RIGHT +2524 ; [*088D.0020.0002] # BOX DRAWINGS LIGHT VERTICAL AND LEFT +2525 ; [*088E.0020.0002] # BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY +2526 ; [*088F.0020.0002] # BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT +2527 ; [*0890.0020.0002] # BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT +2528 ; [*0891.0020.0002] # BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT +2529 ; [*0892.0020.0002] # BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY +252A ; [*0893.0020.0002] # BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY +252B ; [*0894.0020.0002] # BOX DRAWINGS HEAVY VERTICAL AND LEFT +252C ; [*0895.0020.0002] # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +252D ; [*0896.0020.0002] # BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT +252E ; [*0897.0020.0002] # BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT +252F ; [*0898.0020.0002] # BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY +2530 ; [*0899.0020.0002] # BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT +2531 ; [*089A.0020.0002] # BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY +2532 ; [*089B.0020.0002] # BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY +2533 ; [*089C.0020.0002] # BOX DRAWINGS HEAVY DOWN AND HORIZONTAL +2534 ; [*089D.0020.0002] # BOX DRAWINGS LIGHT UP AND HORIZONTAL +2535 ; [*089E.0020.0002] # BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT +2536 ; [*089F.0020.0002] # BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT +2537 ; [*08A0.0020.0002] # BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY +2538 ; [*08A1.0020.0002] # BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT +2539 ; [*08A2.0020.0002] # BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY +253A ; [*08A3.0020.0002] # BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY +253B ; [*08A4.0020.0002] # BOX DRAWINGS HEAVY UP AND HORIZONTAL +253C ; [*08A5.0020.0002] # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +253D ; [*08A6.0020.0002] # BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT +253E ; [*08A7.0020.0002] # BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT +253F ; [*08A8.0020.0002] # BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY +2540 ; [*08A9.0020.0002] # BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT +2541 ; [*08AA.0020.0002] # BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT +2542 ; [*08AB.0020.0002] # BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT +2543 ; [*08AC.0020.0002] # BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT +2544 ; [*08AD.0020.0002] # BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT +2545 ; [*08AE.0020.0002] # BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT +2546 ; [*08AF.0020.0002] # BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT +2547 ; [*08B0.0020.0002] # BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY +2548 ; [*08B1.0020.0002] # BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY +2549 ; [*08B2.0020.0002] # BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY +254A ; [*08B3.0020.0002] # BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY +254B ; [*08B4.0020.0002] # BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL +254C ; [*08B5.0020.0002] # BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL +254D ; [*08B6.0020.0002] # BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL +254E ; [*08B7.0020.0002] # BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL +254F ; [*08B8.0020.0002] # BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL +2550 ; [*08B9.0020.0002] # BOX DRAWINGS DOUBLE HORIZONTAL +2551 ; [*08BA.0020.0002] # BOX DRAWINGS DOUBLE VERTICAL +2552 ; [*08BB.0020.0002] # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE +2553 ; [*08BC.0020.0002] # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE +2554 ; [*08BD.0020.0002] # BOX DRAWINGS DOUBLE DOWN AND RIGHT +2555 ; [*08BE.0020.0002] # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE +2556 ; [*08BF.0020.0002] # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE +2557 ; [*08C0.0020.0002] # BOX DRAWINGS DOUBLE DOWN AND LEFT +2558 ; [*08C1.0020.0002] # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE +2559 ; [*08C2.0020.0002] # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE +255A ; [*08C3.0020.0002] # BOX DRAWINGS DOUBLE UP AND RIGHT +255B ; [*08C4.0020.0002] # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE +255C ; [*08C5.0020.0002] # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE +255D ; [*08C6.0020.0002] # BOX DRAWINGS DOUBLE UP AND LEFT +255E ; [*08C7.0020.0002] # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE +255F ; [*08C8.0020.0002] # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE +2560 ; [*08C9.0020.0002] # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +2561 ; [*08CA.0020.0002] # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE +2562 ; [*08CB.0020.0002] # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE +2563 ; [*08CC.0020.0002] # BOX DRAWINGS DOUBLE VERTICAL AND LEFT +2564 ; [*08CD.0020.0002] # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE +2565 ; [*08CE.0020.0002] # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE +2566 ; [*08CF.0020.0002] # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +2567 ; [*08D0.0020.0002] # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE +2568 ; [*08D1.0020.0002] # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE +2569 ; [*08D2.0020.0002] # BOX DRAWINGS DOUBLE UP AND HORIZONTAL +256A ; [*08D3.0020.0002] # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE +256B ; [*08D4.0020.0002] # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE +256C ; [*08D5.0020.0002] # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +256D ; [*08D6.0020.0002] # BOX DRAWINGS LIGHT ARC DOWN AND RIGHT +256E ; [*08D7.0020.0002] # BOX DRAWINGS LIGHT ARC DOWN AND LEFT +256F ; [*08D8.0020.0002] # BOX DRAWINGS LIGHT ARC UP AND LEFT +2570 ; [*08D9.0020.0002] # BOX DRAWINGS LIGHT ARC UP AND RIGHT +2571 ; [*08DA.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT +2572 ; [*08DB.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT +2573 ; [*08DC.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL CROSS +2574 ; [*08DD.0020.0002] # BOX DRAWINGS LIGHT LEFT +2575 ; [*08DE.0020.0002] # BOX DRAWINGS LIGHT UP +2576 ; [*08DF.0020.0002] # BOX DRAWINGS LIGHT RIGHT +2577 ; [*08E0.0020.0002] # BOX DRAWINGS LIGHT DOWN +2578 ; [*08E1.0020.0002] # BOX DRAWINGS HEAVY LEFT +2579 ; [*08E2.0020.0002] # BOX DRAWINGS HEAVY UP +257A ; [*08E3.0020.0002] # BOX DRAWINGS HEAVY RIGHT +257B ; [*08E4.0020.0002] # BOX DRAWINGS HEAVY DOWN +257C ; [*08E5.0020.0002] # BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT +257D ; [*08E6.0020.0002] # BOX DRAWINGS LIGHT UP AND HEAVY DOWN +257E ; [*08E7.0020.0002] # BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT +257F ; [*08E8.0020.0002] # BOX DRAWINGS HEAVY UP AND LIGHT DOWN +2580 ; [*08E9.0020.0002] # UPPER HALF BLOCK +2581 ; [*08EA.0020.0002] # LOWER ONE EIGHTH BLOCK +2582 ; [*08EB.0020.0002] # LOWER ONE QUARTER BLOCK +2583 ; [*08EC.0020.0002] # LOWER THREE EIGHTHS BLOCK +2584 ; [*08ED.0020.0002] # LOWER HALF BLOCK +2585 ; [*08EE.0020.0002] # LOWER FIVE EIGHTHS BLOCK +2586 ; [*08EF.0020.0002] # LOWER THREE QUARTERS BLOCK +2587 ; [*08F0.0020.0002] # LOWER SEVEN EIGHTHS BLOCK +2588 ; [*08F1.0020.0002] # FULL BLOCK +2589 ; [*08F2.0020.0002] # LEFT SEVEN EIGHTHS BLOCK +258A ; [*08F3.0020.0002] # LEFT THREE QUARTERS BLOCK +258B ; [*08F4.0020.0002] # LEFT FIVE EIGHTHS BLOCK +258C ; [*08F5.0020.0002] # LEFT HALF BLOCK +258D ; [*08F6.0020.0002] # LEFT THREE EIGHTHS BLOCK +258E ; [*08F7.0020.0002] # LEFT ONE QUARTER BLOCK +258F ; [*08F8.0020.0002] # LEFT ONE EIGHTH BLOCK +2590 ; [*08F9.0020.0002] # RIGHT HALF BLOCK +2591 ; [*08FA.0020.0002] # LIGHT SHADE +2592 ; [*08FB.0020.0002] # MEDIUM SHADE +2593 ; [*08FC.0020.0002] # DARK SHADE +2594 ; [*08FD.0020.0002] # UPPER ONE EIGHTH BLOCK +2595 ; [*08FE.0020.0002] # RIGHT ONE EIGHTH BLOCK +2596 ; [*08FF.0020.0002] # QUADRANT LOWER LEFT +2597 ; [*0900.0020.0002] # QUADRANT LOWER RIGHT +2598 ; [*0901.0020.0002] # QUADRANT UPPER LEFT +2599 ; [*0902.0020.0002] # QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT +259A ; [*0903.0020.0002] # QUADRANT UPPER LEFT AND LOWER RIGHT +259B ; [*0904.0020.0002] # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT +259C ; [*0905.0020.0002] # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT +259D ; [*0906.0020.0002] # QUADRANT UPPER RIGHT +259E ; [*0907.0020.0002] # QUADRANT UPPER RIGHT AND LOWER LEFT +259F ; [*0908.0020.0002] # QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT +25A0 ; [*0909.0020.0002] # BLACK SQUARE +25A1 ; [*090A.0020.0002] # WHITE SQUARE +25A2 ; [*090B.0020.0002] # WHITE SQUARE WITH ROUNDED CORNERS +25A3 ; [*090C.0020.0002] # WHITE SQUARE CONTAINING BLACK SMALL SQUARE +25A4 ; [*090D.0020.0002] # SQUARE WITH HORIZONTAL FILL +25A5 ; [*090E.0020.0002] # SQUARE WITH VERTICAL FILL +25A6 ; [*090F.0020.0002] # SQUARE WITH ORTHOGONAL CROSSHATCH FILL +25A7 ; [*0910.0020.0002] # SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL +25A8 ; [*0911.0020.0002] # SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL +25A9 ; [*0912.0020.0002] # SQUARE WITH DIAGONAL CROSSHATCH FILL +25AA ; [*0913.0020.0002] # BLACK SMALL SQUARE +25AB ; [*0914.0020.0002] # WHITE SMALL SQUARE +25AC ; [*0915.0020.0002] # BLACK RECTANGLE +25AD ; [*0916.0020.0002] # WHITE RECTANGLE +25AE ; [*0917.0020.0002] # BLACK VERTICAL RECTANGLE +25AF ; [*0918.0020.0002] # WHITE VERTICAL RECTANGLE +25B0 ; [*0919.0020.0002] # BLACK PARALLELOGRAM +25B1 ; [*091A.0020.0002] # WHITE PARALLELOGRAM +25B2 ; [*091B.0020.0002] # BLACK UP-POINTING TRIANGLE +25B3 ; [*091C.0020.0002] # WHITE UP-POINTING TRIANGLE +25B4 ; [*091D.0020.0002] # BLACK UP-POINTING SMALL TRIANGLE +25B5 ; [*091E.0020.0002] # WHITE UP-POINTING SMALL TRIANGLE +25B6 ; [*091F.0020.0002] # BLACK RIGHT-POINTING TRIANGLE +25B7 ; [*0920.0020.0002] # WHITE RIGHT-POINTING TRIANGLE +25B8 ; [*0921.0020.0002] # BLACK RIGHT-POINTING SMALL TRIANGLE +25B9 ; [*0922.0020.0002] # WHITE RIGHT-POINTING SMALL TRIANGLE +25BA ; [*0923.0020.0002] # BLACK RIGHT-POINTING POINTER +25BB ; [*0924.0020.0002] # WHITE RIGHT-POINTING POINTER +25BC ; [*0925.0020.0002] # BLACK DOWN-POINTING TRIANGLE +25BD ; [*0926.0020.0002] # WHITE DOWN-POINTING TRIANGLE +25BE ; [*0927.0020.0002] # BLACK DOWN-POINTING SMALL TRIANGLE +25BF ; [*0928.0020.0002] # WHITE DOWN-POINTING SMALL TRIANGLE +25C0 ; [*0929.0020.0002] # BLACK LEFT-POINTING TRIANGLE +25C1 ; [*092A.0020.0002] # WHITE LEFT-POINTING TRIANGLE +25C2 ; [*092B.0020.0002] # BLACK LEFT-POINTING SMALL TRIANGLE +25C3 ; [*092C.0020.0002] # WHITE LEFT-POINTING SMALL TRIANGLE +25C4 ; [*092D.0020.0002] # BLACK LEFT-POINTING POINTER +25C5 ; [*092E.0020.0002] # WHITE LEFT-POINTING POINTER +25C6 ; [*092F.0020.0002] # BLACK DIAMOND +25C7 ; [*0930.0020.0002] # WHITE DIAMOND +25C8 ; [*0931.0020.0002] # WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND +25C9 ; [*0932.0020.0002] # FISHEYE +25CA ; [*0933.0020.0002] # LOZENGE +25CB ; [*0934.0020.0002] # WHITE CIRCLE +25CC ; [*0935.0020.0002] # DOTTED CIRCLE +25CD ; [*0936.0020.0002] # CIRCLE WITH VERTICAL FILL +25CE ; [*0937.0020.0002] # BULLSEYE +25CF ; [*0938.0020.0002] # BLACK CIRCLE +25D0 ; [*0939.0020.0002] # CIRCLE WITH LEFT HALF BLACK +25D1 ; [*093A.0020.0002] # CIRCLE WITH RIGHT HALF BLACK +25D2 ; [*093B.0020.0002] # CIRCLE WITH LOWER HALF BLACK +25D3 ; [*093C.0020.0002] # CIRCLE WITH UPPER HALF BLACK +25D4 ; [*093D.0020.0002] # CIRCLE WITH UPPER RIGHT QUADRANT BLACK +25D5 ; [*093E.0020.0002] # CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK +25D6 ; [*093F.0020.0002] # LEFT HALF BLACK CIRCLE +25D7 ; [*0940.0020.0002] # RIGHT HALF BLACK CIRCLE +25D8 ; [*0941.0020.0002] # INVERSE BULLET +25D9 ; [*0942.0020.0002] # INVERSE WHITE CIRCLE +25DA ; [*0943.0020.0002] # UPPER HALF INVERSE WHITE CIRCLE +25DB ; [*0944.0020.0002] # LOWER HALF INVERSE WHITE CIRCLE +25DC ; [*0945.0020.0002] # UPPER LEFT QUADRANT CIRCULAR ARC +25DD ; [*0946.0020.0002] # UPPER RIGHT QUADRANT CIRCULAR ARC +25DE ; [*0947.0020.0002] # LOWER RIGHT QUADRANT CIRCULAR ARC +25DF ; [*0948.0020.0002] # LOWER LEFT QUADRANT CIRCULAR ARC +25E0 ; [*0949.0020.0002] # UPPER HALF CIRCLE +25E1 ; [*094A.0020.0002] # LOWER HALF CIRCLE +25E2 ; [*094B.0020.0002] # BLACK LOWER RIGHT TRIANGLE +25E3 ; [*094C.0020.0002] # BLACK LOWER LEFT TRIANGLE +25E4 ; [*094D.0020.0002] # BLACK UPPER LEFT TRIANGLE +25E5 ; [*094E.0020.0002] # BLACK UPPER RIGHT TRIANGLE +25E6 ; [*094F.0020.0002] # WHITE BULLET +25E7 ; [*0950.0020.0002] # SQUARE WITH LEFT HALF BLACK +25E8 ; [*0951.0020.0002] # SQUARE WITH RIGHT HALF BLACK +25E9 ; [*0952.0020.0002] # SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK +25EA ; [*0953.0020.0002] # SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK +25EB ; [*0954.0020.0002] # WHITE SQUARE WITH VERTICAL BISECTING LINE +25EC ; [*0955.0020.0002] # WHITE UP-POINTING TRIANGLE WITH DOT +25ED ; [*0956.0020.0002] # UP-POINTING TRIANGLE WITH LEFT HALF BLACK +25EE ; [*0957.0020.0002] # UP-POINTING TRIANGLE WITH RIGHT HALF BLACK +25EF ; [*0958.0020.0002] # LARGE CIRCLE +25F0 ; [*0959.0020.0002] # WHITE SQUARE WITH UPPER LEFT QUADRANT +25F1 ; [*095A.0020.0002] # WHITE SQUARE WITH LOWER LEFT QUADRANT +25F2 ; [*095B.0020.0002] # WHITE SQUARE WITH LOWER RIGHT QUADRANT +25F3 ; [*095C.0020.0002] # WHITE SQUARE WITH UPPER RIGHT QUADRANT +25F4 ; [*095D.0020.0002] # WHITE CIRCLE WITH UPPER LEFT QUADRANT +25F5 ; [*095E.0020.0002] # WHITE CIRCLE WITH LOWER LEFT QUADRANT +25F6 ; [*095F.0020.0002] # WHITE CIRCLE WITH LOWER RIGHT QUADRANT +25F7 ; [*0960.0020.0002] # WHITE CIRCLE WITH UPPER RIGHT QUADRANT +25F8 ; [*0961.0020.0002] # UPPER LEFT TRIANGLE +25F9 ; [*0962.0020.0002] # UPPER RIGHT TRIANGLE +25FA ; [*0963.0020.0002] # LOWER LEFT TRIANGLE +25FB ; [*0964.0020.0002] # WHITE MEDIUM SQUARE +25FC ; [*0965.0020.0002] # BLACK MEDIUM SQUARE +25FD ; [*0966.0020.0002] # WHITE MEDIUM SMALL SQUARE +25FE ; [*0967.0020.0002] # BLACK MEDIUM SMALL SQUARE +25FF ; [*0968.0020.0002] # LOWER RIGHT TRIANGLE +2600 ; [*0A33.0020.0002] # BLACK SUN WITH RAYS +2601 ; [*0A34.0020.0002] # CLOUD +2602 ; [*0A35.0020.0002] # UMBRELLA +2603 ; [*0A36.0020.0002] # SNOWMAN +2604 ; [*0A37.0020.0002] # COMET +2605 ; [*0A38.0020.0002] # BLACK STAR +2606 ; [*0A39.0020.0002] # WHITE STAR +2607 ; [*0A3A.0020.0002] # LIGHTNING +2608 ; [*0A3B.0020.0002] # THUNDERSTORM +2609 ; [*0A3C.0020.0002] # SUN +260A ; [*0A3D.0020.0002] # ASCENDING NODE +260B ; [*0A3E.0020.0002] # DESCENDING NODE +260C ; [*0A3F.0020.0002] # CONJUNCTION +260D ; [*0A40.0020.0002] # OPPOSITION +260E ; [*0A41.0020.0002] # BLACK TELEPHONE +260F ; [*0A42.0020.0002] # WHITE TELEPHONE +2610 ; [*0A43.0020.0002] # BALLOT BOX +2611 ; [*0A44.0020.0002] # BALLOT BOX WITH CHECK +2612 ; [*0A45.0020.0002] # BALLOT BOX WITH X +2613 ; [*0A46.0020.0002] # SALTIRE +2614 ; [*0A47.0020.0002] # UMBRELLA WITH RAIN DROPS +2615 ; [*0A48.0020.0002] # HOT BEVERAGE +2616 ; [*0A49.0020.0002] # WHITE SHOGI PIECE +2617 ; [*0A4A.0020.0002] # BLACK SHOGI PIECE +2618 ; [*0A4B.0020.0002] # SHAMROCK +2619 ; [*0A4C.0020.0002] # REVERSED ROTATED FLORAL HEART BULLET +261A ; [*0A4D.0020.0002] # BLACK LEFT POINTING INDEX +261B ; [*0A4E.0020.0002] # BLACK RIGHT POINTING INDEX +261C ; [*0A4F.0020.0002] # WHITE LEFT POINTING INDEX +261D ; [*0A50.0020.0002] # WHITE UP POINTING INDEX +261E ; [*0A51.0020.0002] # WHITE RIGHT POINTING INDEX +261F ; [*0A52.0020.0002] # WHITE DOWN POINTING INDEX +2620 ; [*0A53.0020.0002] # SKULL AND CROSSBONES +2621 ; [*0A54.0020.0002] # CAUTION SIGN +2622 ; [*0A55.0020.0002] # RADIOACTIVE SIGN +2623 ; [*0A56.0020.0002] # BIOHAZARD SIGN +2624 ; [*0A57.0020.0002] # CADUCEUS +2625 ; [*0A58.0020.0002] # ANKH +2626 ; [*0A59.0020.0002] # ORTHODOX CROSS +2627 ; [*0A5A.0020.0002] # CHI RHO +2628 ; [*0A5B.0020.0002] # CROSS OF LORRAINE +2629 ; [*0A5C.0020.0002] # CROSS OF JERUSALEM +262A ; [*0A5D.0020.0002] # STAR AND CRESCENT +262B ; [*0A5E.0020.0002] # FARSI SYMBOL +262C ; [*0A5F.0020.0002] # ADI SHAKTI +262D ; [*0A60.0020.0002] # HAMMER AND SICKLE +262E ; [*0A61.0020.0002] # PEACE SYMBOL +262F ; [*0A62.0020.0002] # YIN YANG +2630 ; [*0FEE.0020.0002] # TRIGRAM FOR HEAVEN +2631 ; [*0FEF.0020.0002] # TRIGRAM FOR LAKE +2632 ; [*0FF0.0020.0002] # TRIGRAM FOR FIRE +2633 ; [*0FF1.0020.0002] # TRIGRAM FOR THUNDER +2634 ; [*0FF2.0020.0002] # TRIGRAM FOR WIND +2635 ; [*0FF3.0020.0002] # TRIGRAM FOR WATER +2636 ; [*0FF4.0020.0002] # TRIGRAM FOR MOUNTAIN +2637 ; [*0FF5.0020.0002] # TRIGRAM FOR EARTH +2638 ; [*0A63.0020.0002] # WHEEL OF DHARMA +2639 ; [*0A64.0020.0002] # WHITE FROWNING FACE +263A ; [*0A65.0020.0002] # WHITE SMILING FACE +263B ; [*0A66.0020.0002] # BLACK SMILING FACE +263C ; [*0A67.0020.0002] # WHITE SUN WITH RAYS +263D ; [*0A68.0020.0002] # FIRST QUARTER MOON +263E ; [*0A69.0020.0002] # LAST QUARTER MOON +263F ; [*0A6A.0020.0002] # MERCURY +2640 ; [*0A6B.0020.0002] # FEMALE SIGN +2641 ; [*0A6C.0020.0002] # EARTH +2642 ; [*0A6D.0020.0002] # MALE SIGN +2643 ; [*0A6E.0020.0002] # JUPITER +2644 ; [*0A6F.0020.0002] # SATURN +2645 ; [*0A70.0020.0002] # URANUS +2646 ; [*0A71.0020.0002] # NEPTUNE +2647 ; [*0A72.0020.0002] # PLUTO +2648 ; [*0A73.0020.0002] # ARIES +2649 ; [*0A74.0020.0002] # TAURUS +264A ; [*0A75.0020.0002] # GEMINI +264B ; [*0A76.0020.0002] # CANCER +264C ; [*0A77.0020.0002] # LEO +264D ; [*0A78.0020.0002] # VIRGO +264E ; [*0A79.0020.0002] # LIBRA +264F ; [*0A7A.0020.0002] # SCORPIUS +2650 ; [*0A7B.0020.0002] # SAGITTARIUS +2651 ; [*0A7C.0020.0002] # CAPRICORN +2652 ; [*0A7D.0020.0002] # AQUARIUS +2653 ; [*0A7E.0020.0002] # PISCES +2654 ; [*0A7F.0020.0002] # WHITE CHESS KING +2655 ; [*0A80.0020.0002] # WHITE CHESS QUEEN +2656 ; [*0A81.0020.0002] # WHITE CHESS ROOK +2657 ; [*0A82.0020.0002] # WHITE CHESS BISHOP +2658 ; [*0A83.0020.0002] # WHITE CHESS KNIGHT +2659 ; [*0A84.0020.0002] # WHITE CHESS PAWN +265A ; [*0A85.0020.0002] # BLACK CHESS KING +265B ; [*0A86.0020.0002] # BLACK CHESS QUEEN +265C ; [*0A87.0020.0002] # BLACK CHESS ROOK +265D ; [*0A88.0020.0002] # BLACK CHESS BISHOP +265E ; [*0A89.0020.0002] # BLACK CHESS KNIGHT +265F ; [*0A8A.0020.0002] # BLACK CHESS PAWN +2660 ; [*0A8B.0020.0002] # BLACK SPADE SUIT +2661 ; [*0A8C.0020.0002] # WHITE HEART SUIT +2662 ; [*0A8D.0020.0002] # WHITE DIAMOND SUIT +2663 ; [*0A8E.0020.0002] # BLACK CLUB SUIT +2664 ; [*0A8F.0020.0002] # WHITE SPADE SUIT +2665 ; [*0A90.0020.0002] # BLACK HEART SUIT +2666 ; [*0A91.0020.0002] # BLACK DIAMOND SUIT +2667 ; [*0A92.0020.0002] # WHITE CLUB SUIT +2668 ; [*0A93.0020.0002] # HOT SPRINGS +2669 ; [*0A94.0020.0002] # QUARTER NOTE +266A ; [*0A95.0020.0002] # EIGHTH NOTE +266B ; [*0A96.0020.0002] # BEAMED EIGHTH NOTES +266C ; [*0A97.0020.0002] # BEAMED SIXTEENTH NOTES +266D ; [*1241.0020.0002] # MUSIC FLAT SIGN +266E ; [*1242.0020.0002] # MUSIC NATURAL SIGN +266F ; [*1243.0020.0002] # MUSIC SHARP SIGN +2670 ; [*0A98.0020.0002] # WEST SYRIAC CROSS +2671 ; [*0A99.0020.0002] # EAST SYRIAC CROSS +2672 ; [*0A9A.0020.0002] # UNIVERSAL RECYCLING SYMBOL +2673 ; [*0A9B.0020.0002] # RECYCLING SYMBOL FOR TYPE-1 PLASTICS +2674 ; [*0A9C.0020.0002] # RECYCLING SYMBOL FOR TYPE-2 PLASTICS +2675 ; [*0A9D.0020.0002] # RECYCLING SYMBOL FOR TYPE-3 PLASTICS +2676 ; [*0A9E.0020.0002] # RECYCLING SYMBOL FOR TYPE-4 PLASTICS +2677 ; [*0A9F.0020.0002] # RECYCLING SYMBOL FOR TYPE-5 PLASTICS +2678 ; [*0AA0.0020.0002] # RECYCLING SYMBOL FOR TYPE-6 PLASTICS +2679 ; [*0AA1.0020.0002] # RECYCLING SYMBOL FOR TYPE-7 PLASTICS +267A ; [*0AA2.0020.0002] # RECYCLING SYMBOL FOR GENERIC MATERIALS +267B ; [*0AA3.0020.0002] # BLACK UNIVERSAL RECYCLING SYMBOL +267C ; [*0AA4.0020.0002] # RECYCLED PAPER SYMBOL +267D ; [*0AA5.0020.0002] # PARTIALLY-RECYCLED PAPER SYMBOL +267E ; [*0AA6.0020.0002] # PERMANENT PAPER SIGN +267F ; [*0AA7.0020.0002] # WHEELCHAIR SYMBOL +2680 ; [*0AA8.0020.0002] # DIE FACE-1 +2681 ; [*0AA9.0020.0002] # DIE FACE-2 +2682 ; [*0AAA.0020.0002] # DIE FACE-3 +2683 ; [*0AAB.0020.0002] # DIE FACE-4 +2684 ; [*0AAC.0020.0002] # DIE FACE-5 +2685 ; [*0AAD.0020.0002] # DIE FACE-6 +2686 ; [*0AAE.0020.0002] # WHITE CIRCLE WITH DOT RIGHT +2687 ; [*0AAF.0020.0002] # WHITE CIRCLE WITH TWO DOTS +2688 ; [*0AB0.0020.0002] # BLACK CIRCLE WITH WHITE DOT RIGHT +2689 ; [*0AB1.0020.0002] # BLACK CIRCLE WITH TWO WHITE DOTS +268A ; [*0FE8.0020.0002] # MONOGRAM FOR YANG +268B ; [*0FE9.0020.0002] # MONOGRAM FOR YIN +268C ; [*0FEA.0020.0002] # DIGRAM FOR GREATER YANG +268D ; [*0FEB.0020.0002] # DIGRAM FOR LESSER YIN +268E ; [*0FEC.0020.0002] # DIGRAM FOR LESSER YANG +268F ; [*0FED.0020.0002] # DIGRAM FOR GREATER YIN +2690 ; [*0AB2.0020.0002] # WHITE FLAG +2691 ; [*0AB3.0020.0002] # BLACK FLAG +2692 ; [*0AB4.0020.0002] # HAMMER AND PICK +2693 ; [*0AB5.0020.0002] # ANCHOR +2694 ; [*0AB6.0020.0002] # CROSSED SWORDS +2695 ; [*0AB7.0020.0002] # STAFF OF AESCULAPIUS +2696 ; [*0AB8.0020.0002] # SCALES +2697 ; [*0AB9.0020.0002] # ALEMBIC +2698 ; [*0ABA.0020.0002] # FLOWER +2699 ; [*0ABB.0020.0002] # GEAR +269A ; [*0ABC.0020.0002] # STAFF OF HERMES +269B ; [*0ABD.0020.0002] # ATOM SYMBOL +269C ; [*0ABE.0020.0002] # FLEUR-DE-LIS +269D ; [*0ABF.0020.0002] # OUTLINED WHITE STAR +269E ; [*0AC0.0020.0002] # THREE LINES CONVERGING RIGHT +269F ; [*0AC1.0020.0002] # THREE LINES CONVERGING LEFT +26A0 ; [*0AC2.0020.0002] # WARNING SIGN +26A1 ; [*0AC3.0020.0002] # HIGH VOLTAGE SIGN +26A2 ; [*0AC4.0020.0002] # DOUBLED FEMALE SIGN +26A3 ; [*0AC5.0020.0002] # DOUBLED MALE SIGN +26A4 ; [*0AC6.0020.0002] # INTERLOCKED FEMALE AND MALE SIGN +26A5 ; [*0AC7.0020.0002] # MALE AND FEMALE SIGN +26A6 ; [*0AC8.0020.0002] # MALE WITH STROKE SIGN +26A7 ; [*0AC9.0020.0002] # MALE WITH STROKE AND MALE AND FEMALE SIGN +26A8 ; [*0ACA.0020.0002] # VERTICAL MALE WITH STROKE SIGN +26A9 ; [*0ACB.0020.0002] # HORIZONTAL MALE WITH STROKE SIGN +26AA ; [*0ACC.0020.0002] # MEDIUM WHITE CIRCLE +26AB ; [*0ACD.0020.0002] # MEDIUM BLACK CIRCLE +26AC ; [*0ACE.0020.0002] # MEDIUM SMALL WHITE CIRCLE +26AD ; [*0ACF.0020.0002] # MARRIAGE SYMBOL +26AE ; [*0AD0.0020.0002] # DIVORCE SYMBOL +26AF ; [*0AD1.0020.0002] # UNMARRIED PARTNERSHIP SYMBOL +26B0 ; [*0AD2.0020.0002] # COFFIN +26B1 ; [*0AD3.0020.0002] # FUNERAL URN +26B2 ; [*0AD4.0020.0002] # NEUTER +26B3 ; [*0AD5.0020.0002] # CERES +26B4 ; [*0AD6.0020.0002] # PALLAS +26B5 ; [*0AD7.0020.0002] # JUNO +26B6 ; [*0AD8.0020.0002] # VESTA +26B7 ; [*0AD9.0020.0002] # CHIRON +26B8 ; [*0ADA.0020.0002] # BLACK MOON LILITH +26B9 ; [*0ADB.0020.0002] # SEXTILE +26BA ; [*0ADC.0020.0002] # SEMISEXTILE +26BB ; [*0ADD.0020.0002] # QUINCUNX +26BC ; [*0ADE.0020.0002] # SESQUIQUADRATE +26BD ; [*0ADF.0020.0002] # SOCCER BALL +26BE ; [*0AE0.0020.0002] # BASEBALL +26BF ; [*0AE1.0020.0002] # SQUARED KEY +26C0 ; [*0AE2.0020.0002] # WHITE DRAUGHTS MAN +26C1 ; [*0AE3.0020.0002] # WHITE DRAUGHTS KING +26C2 ; [*0AE4.0020.0002] # BLACK DRAUGHTS MAN +26C3 ; [*0AE5.0020.0002] # BLACK DRAUGHTS KING +26C4 ; [*0AE6.0020.0002] # SNOWMAN WITHOUT SNOW +26C5 ; [*0AE7.0020.0002] # SUN BEHIND CLOUD +26C6 ; [*0AE8.0020.0002] # RAIN +26C7 ; [*0AE9.0020.0002] # BLACK SNOWMAN +26C8 ; [*0AEA.0020.0002] # THUNDER CLOUD AND RAIN +26C9 ; [*0AEB.0020.0002] # TURNED WHITE SHOGI PIECE +26CA ; [*0AEC.0020.0002] # TURNED BLACK SHOGI PIECE +26CB ; [*0AED.0020.0002] # WHITE DIAMOND IN SQUARE +26CC ; [*0AEE.0020.0002] # CROSSING LANES +26CD ; [*0AEF.0020.0002] # DISABLED CAR +26CE ; [*0AF0.0020.0002] # OPHIUCHUS +26CF ; [*0AF1.0020.0002] # PICK +26D0 ; [*0AF2.0020.0002] # CAR SLIDING +26D1 ; [*0AF3.0020.0002] # HELMET WITH WHITE CROSS +26D2 ; [*0AF4.0020.0002] # CIRCLED CROSSING LANES +26D3 ; [*0AF5.0020.0002] # CHAINS +26D4 ; [*0AF6.0020.0002] # NO ENTRY +26D5 ; [*0AF7.0020.0002] # ALTERNATE ONE-WAY LEFT WAY TRAFFIC +26D6 ; [*0AF8.0020.0002] # BLACK TWO-WAY LEFT WAY TRAFFIC +26D7 ; [*0AF9.0020.0002] # WHITE TWO-WAY LEFT WAY TRAFFIC +26D8 ; [*0AFA.0020.0002] # BLACK LEFT LANE MERGE +26D9 ; [*0AFB.0020.0002] # WHITE LEFT LANE MERGE +26DA ; [*0AFC.0020.0002] # DRIVE SLOW SIGN +26DB ; [*0AFD.0020.0002] # HEAVY WHITE DOWN-POINTING TRIANGLE +26DC ; [*0AFE.0020.0002] # LEFT CLOSED ENTRY +26DD ; [*0AFF.0020.0002] # SQUARED SALTIRE +26DE ; [*0B00.0020.0002] # FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE +26DF ; [*0B01.0020.0002] # BLACK TRUCK +26E0 ; [*0B02.0020.0002] # RESTRICTED LEFT ENTRY-1 +26E1 ; [*0B03.0020.0002] # RESTRICTED LEFT ENTRY-2 +26E2 ; [*0B04.0020.0002] # ASTRONOMICAL SYMBOL FOR URANUS +26E3 ; [*0B05.0020.0002] # HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE +26E4 ; [*0B06.0020.0002] # PENTAGRAM +26E5 ; [*0B07.0020.0002] # RIGHT-HANDED INTERLACED PENTAGRAM +26E6 ; [*0B08.0020.0002] # LEFT-HANDED INTERLACED PENTAGRAM +26E7 ; [*0B09.0020.0002] # INVERTED PENTAGRAM +26E8 ; [*0B0A.0020.0002] # BLACK CROSS ON SHIELD +26E9 ; [*0B0B.0020.0002] # SHINTO SHRINE +26EA ; [*0B0C.0020.0002] # CHURCH +26EB ; [*0B0D.0020.0002] # CASTLE +26EC ; [*0B0E.0020.0002] # HISTORIC SITE +26ED ; [*0B0F.0020.0002] # GEAR WITHOUT HUB +26EE ; [*0B10.0020.0002] # GEAR WITH HANDLES +26EF ; [*0B11.0020.0002] # MAP SYMBOL FOR LIGHTHOUSE +26F0 ; [*0B12.0020.0002] # MOUNTAIN +26F1 ; [*0B13.0020.0002] # UMBRELLA ON GROUND +26F2 ; [*0B14.0020.0002] # FOUNTAIN +26F3 ; [*0B15.0020.0002] # FLAG IN HOLE +26F4 ; [*0B16.0020.0002] # FERRY +26F5 ; [*0B17.0020.0002] # SAILBOAT +26F6 ; [*0B18.0020.0002] # SQUARE FOUR CORNERS +26F7 ; [*0B19.0020.0002] # SKIER +26F8 ; [*0B1A.0020.0002] # ICE SKATE +26F9 ; [*0B1B.0020.0002] # PERSON WITH BALL +26FA ; [*0B1C.0020.0002] # TENT +26FB ; [*0B1D.0020.0002] # JAPANESE BANK SYMBOL +26FC ; [*0B1E.0020.0002] # HEADSTONE GRAVEYARD SYMBOL +26FD ; [*0B1F.0020.0002] # FUEL PUMP +26FE ; [*0B20.0020.0002] # CUP ON BLACK SQUARE +26FF ; [*0B21.0020.0002] # WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE +2700 ; [*0B3C.0020.0002] # BLACK SAFETY SCISSORS +2701 ; [*0B3D.0020.0002] # UPPER BLADE SCISSORS +2702 ; [*0B3E.0020.0002] # BLACK SCISSORS +2703 ; [*0B3F.0020.0002] # LOWER BLADE SCISSORS +2704 ; [*0B40.0020.0002] # WHITE SCISSORS +2705 ; [*0B41.0020.0002] # WHITE HEAVY CHECK MARK +2706 ; [*0B42.0020.0002] # TELEPHONE LOCATION SIGN +2707 ; [*0B43.0020.0002] # TAPE DRIVE +2708 ; [*0B44.0020.0002] # AIRPLANE +2709 ; [*0B45.0020.0002] # ENVELOPE +270A ; [*0B46.0020.0002] # RAISED FIST +270B ; [*0B47.0020.0002] # RAISED HAND +270C ; [*0B48.0020.0002] # VICTORY HAND +270D ; [*0B49.0020.0002] # WRITING HAND +270E ; [*0B4A.0020.0002] # LOWER RIGHT PENCIL +270F ; [*0B4B.0020.0002] # PENCIL +2710 ; [*0B4C.0020.0002] # UPPER RIGHT PENCIL +2711 ; [*0B4D.0020.0002] # WHITE NIB +2712 ; [*0B4E.0020.0002] # BLACK NIB +2713 ; [*0B4F.0020.0002] # CHECK MARK +2714 ; [*0B50.0020.0002] # HEAVY CHECK MARK +2715 ; [*0B51.0020.0002] # MULTIPLICATION X +2716 ; [*0B52.0020.0002] # HEAVY MULTIPLICATION X +2717 ; [*0B53.0020.0002] # BALLOT X +2718 ; [*0B54.0020.0002] # HEAVY BALLOT X +2719 ; [*0B55.0020.0002] # OUTLINED GREEK CROSS +271A ; [*0B56.0020.0002] # HEAVY GREEK CROSS +271B ; [*0B57.0020.0002] # OPEN CENTRE CROSS +271C ; [*0B58.0020.0002] # HEAVY OPEN CENTRE CROSS +271D ; [*0B59.0020.0002] # LATIN CROSS +271E ; [*0B5A.0020.0002] # SHADOWED WHITE LATIN CROSS +271F ; [*0B5B.0020.0002] # OUTLINED LATIN CROSS +2720 ; [*0B5C.0020.0002] # MALTESE CROSS +2721 ; [*0B5F.0020.0002] # STAR OF DAVID +2722 ; [*0B60.0020.0002] # FOUR TEARDROP-SPOKED ASTERISK +2723 ; [*0B61.0020.0002] # FOUR BALLOON-SPOKED ASTERISK +2724 ; [*0B62.0020.0002] # HEAVY FOUR BALLOON-SPOKED ASTERISK +2725 ; [*0B63.0020.0002] # FOUR CLUB-SPOKED ASTERISK +2726 ; [*0B64.0020.0002] # BLACK FOUR POINTED STAR +2727 ; [*0B65.0020.0002] # WHITE FOUR POINTED STAR +2728 ; [*0B66.0020.0002] # SPARKLES +2729 ; [*0B67.0020.0002] # STRESS OUTLINED WHITE STAR +272A ; [*0B68.0020.0002] # CIRCLED WHITE STAR +272B ; [*0B69.0020.0002] # OPEN CENTRE BLACK STAR +272C ; [*0B6A.0020.0002] # BLACK CENTRE WHITE STAR +272D ; [*0B6B.0020.0002] # OUTLINED BLACK STAR +272E ; [*0B6C.0020.0002] # HEAVY OUTLINED BLACK STAR +272F ; [*0B6D.0020.0002] # PINWHEEL STAR +2730 ; [*0B6E.0020.0002] # SHADOWED WHITE STAR +2731 ; [*0B6F.0020.0002] # HEAVY ASTERISK +2732 ; [*0B70.0020.0002] # OPEN CENTRE ASTERISK +2733 ; [*0B71.0020.0002] # EIGHT SPOKED ASTERISK +2734 ; [*0B72.0020.0002] # EIGHT POINTED BLACK STAR +2735 ; [*0B73.0020.0002] # EIGHT POINTED PINWHEEL STAR +2736 ; [*0B74.0020.0002] # SIX POINTED BLACK STAR +2737 ; [*0B75.0020.0002] # EIGHT POINTED RECTILINEAR BLACK STAR +2738 ; [*0B76.0020.0002] # HEAVY EIGHT POINTED RECTILINEAR BLACK STAR +2739 ; [*0B77.0020.0002] # TWELVE POINTED BLACK STAR +273A ; [*0B78.0020.0002] # SIXTEEN POINTED ASTERISK +273B ; [*0B79.0020.0002] # TEARDROP-SPOKED ASTERISK +273C ; [*0B7A.0020.0002] # OPEN CENTRE TEARDROP-SPOKED ASTERISK +273D ; [*0B7B.0020.0002] # HEAVY TEARDROP-SPOKED ASTERISK +273E ; [*0B7C.0020.0002] # SIX PETALLED BLACK AND WHITE FLORETTE +273F ; [*0B7D.0020.0002] # BLACK FLORETTE +2740 ; [*0B7E.0020.0002] # WHITE FLORETTE +2741 ; [*0B7F.0020.0002] # EIGHT PETALLED OUTLINED BLACK FLORETTE +2742 ; [*0B80.0020.0002] # CIRCLED OPEN CENTRE EIGHT POINTED STAR +2743 ; [*0B81.0020.0002] # HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK +2744 ; [*0B82.0020.0002] # SNOWFLAKE +2745 ; [*0B83.0020.0002] # TIGHT TRIFOLIATE SNOWFLAKE +2746 ; [*0B84.0020.0002] # HEAVY CHEVRON SNOWFLAKE +2747 ; [*0B85.0020.0002] # SPARKLE +2748 ; [*0B86.0020.0002] # HEAVY SPARKLE +2749 ; [*0B87.0020.0002] # BALLOON-SPOKED ASTERISK +274A ; [*0B88.0020.0002] # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK +274B ; [*0B89.0020.0002] # HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK +274C ; [*0B8A.0020.0002] # CROSS MARK +274D ; [*0B8B.0020.0002] # SHADOWED WHITE CIRCLE +274E ; [*0B8C.0020.0002] # NEGATIVE SQUARED CROSS MARK +274F ; [*0B8D.0020.0002] # LOWER RIGHT DROP-SHADOWED WHITE SQUARE +2750 ; [*0B8E.0020.0002] # UPPER RIGHT DROP-SHADOWED WHITE SQUARE +2751 ; [*0B8F.0020.0002] # LOWER RIGHT SHADOWED WHITE SQUARE +2752 ; [*0B90.0020.0002] # UPPER RIGHT SHADOWED WHITE SQUARE +2753 ; [*0B91.0020.0002] # BLACK QUESTION MARK ORNAMENT +2754 ; [*0B92.0020.0002] # WHITE QUESTION MARK ORNAMENT +2755 ; [*0B93.0020.0002] # WHITE EXCLAMATION MARK ORNAMENT +2756 ; [*0B94.0020.0002] # BLACK DIAMOND MINUS WHITE X +2757 ; [*0B95.0020.0002] # HEAVY EXCLAMATION MARK SYMBOL +2758 ; [*0B96.0020.0002] # LIGHT VERTICAL BAR +2759 ; [*0B97.0020.0002] # MEDIUM VERTICAL BAR +275A ; [*0B98.0020.0002] # HEAVY VERTICAL BAR +275B ; [*0B99.0020.0002] # HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT +275C ; [*0B9A.0020.0002] # HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT +275D ; [*0B9B.0020.0002] # HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT +275E ; [*0B9C.0020.0002] # HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT +275F ; [*0B9D.0020.0002] # HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT +2760 ; [*0B9E.0020.0002] # HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT +2761 ; [*0B9F.0020.0002] # CURVED STEM PARAGRAPH SIGN ORNAMENT +2762 ; [*0BA0.0020.0002] # HEAVY EXCLAMATION MARK ORNAMENT +2763 ; [*0BA1.0020.0002] # HEAVY HEART EXCLAMATION MARK ORNAMENT +2764 ; [*0BA2.0020.0002] # HEAVY BLACK HEART +2765 ; [*0BA3.0020.0002] # ROTATED HEAVY BLACK HEART BULLET +2766 ; [*0BA4.0020.0002] # FLORAL HEART +2767 ; [*0BA5.0020.0002] # ROTATED FLORAL HEART BULLET +2768 ; [*035E.0020.0002] # MEDIUM LEFT PARENTHESIS ORNAMENT +2769 ; [*035F.0020.0002] # MEDIUM RIGHT PARENTHESIS ORNAMENT +276A ; [*0360.0020.0002] # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT +276B ; [*0361.0020.0002] # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT +276C ; [*0362.0020.0002] # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT +276D ; [*0363.0020.0002] # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT +276E ; [*0364.0020.0002] # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT +276F ; [*0365.0020.0002] # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT +2770 ; [*0366.0020.0002] # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT +2771 ; [*0367.0020.0002] # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT +2772 ; [*0368.0020.0002] # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT +2773 ; [*0369.0020.0002] # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT +2774 ; [*036A.0020.0002] # MEDIUM LEFT CURLY BRACKET ORNAMENT +2775 ; [*036B.0020.0002] # MEDIUM RIGHT CURLY BRACKET ORNAMENT +2794 ; [*0BA6.0020.0002] # HEAVY WIDE-HEADED RIGHTWARDS ARROW +2795 ; [*0BA7.0020.0002] # HEAVY PLUS SIGN +2796 ; [*0BA8.0020.0002] # HEAVY MINUS SIGN +2797 ; [*0BA9.0020.0002] # HEAVY DIVISION SIGN +2798 ; [*0BAA.0020.0002] # HEAVY SOUTH EAST ARROW +2799 ; [*0BAB.0020.0002] # HEAVY RIGHTWARDS ARROW +279A ; [*0BAC.0020.0002] # HEAVY NORTH EAST ARROW +279B ; [*0BAD.0020.0002] # DRAFTING POINT RIGHTWARDS ARROW +279C ; [*0BAE.0020.0002] # HEAVY ROUND-TIPPED RIGHTWARDS ARROW +279D ; [*0BAF.0020.0002] # TRIANGLE-HEADED RIGHTWARDS ARROW +279E ; [*0BB0.0020.0002] # HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW +279F ; [*0BB1.0020.0002] # DASHED TRIANGLE-HEADED RIGHTWARDS ARROW +27A0 ; [*0BB2.0020.0002] # HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW +27A1 ; [*0BB3.0020.0002] # BLACK RIGHTWARDS ARROW +27A2 ; [*0BB4.0020.0002] # THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD +27A3 ; [*0BB5.0020.0002] # THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD +27A4 ; [*0BB6.0020.0002] # BLACK RIGHTWARDS ARROWHEAD +27A5 ; [*0BB7.0020.0002] # HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW +27A6 ; [*0BB8.0020.0002] # HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW +27A7 ; [*0BB9.0020.0002] # SQUAT BLACK RIGHTWARDS ARROW +27A8 ; [*0BBA.0020.0002] # HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW +27A9 ; [*0BBB.0020.0002] # RIGHT-SHADED WHITE RIGHTWARDS ARROW +27AA ; [*0BBC.0020.0002] # LEFT-SHADED WHITE RIGHTWARDS ARROW +27AB ; [*0BBD.0020.0002] # BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW +27AC ; [*0BBE.0020.0002] # FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW +27AD ; [*0BBF.0020.0002] # HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW +27AE ; [*0BC0.0020.0002] # HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW +27AF ; [*0BC1.0020.0002] # NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW +27B0 ; [*0BC2.0020.0002] # CURLY LOOP +27B1 ; [*0BC3.0020.0002] # NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW +27B2 ; [*0BC4.0020.0002] # CIRCLED HEAVY WHITE RIGHTWARDS ARROW +27B3 ; [*0BC5.0020.0002] # WHITE-FEATHERED RIGHTWARDS ARROW +27B4 ; [*0BC6.0020.0002] # BLACK-FEATHERED SOUTH EAST ARROW +27B5 ; [*0BC7.0020.0002] # BLACK-FEATHERED RIGHTWARDS ARROW +27B6 ; [*0BC8.0020.0002] # BLACK-FEATHERED NORTH EAST ARROW +27B7 ; [*0BC9.0020.0002] # HEAVY BLACK-FEATHERED SOUTH EAST ARROW +27B8 ; [*0BCA.0020.0002] # HEAVY BLACK-FEATHERED RIGHTWARDS ARROW +27B9 ; [*0BCB.0020.0002] # HEAVY BLACK-FEATHERED NORTH EAST ARROW +27BA ; [*0BCC.0020.0002] # TEARDROP-BARBED RIGHTWARDS ARROW +27BB ; [*0BCD.0020.0002] # HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW +27BC ; [*0BCE.0020.0002] # WEDGE-TAILED RIGHTWARDS ARROW +27BD ; [*0BCF.0020.0002] # HEAVY WEDGE-TAILED RIGHTWARDS ARROW +27BE ; [*0BD0.0020.0002] # OPEN-OUTLINED RIGHTWARDS ARROW +27BF ; [*0BD1.0020.0002] # DOUBLE CURLY LOOP +27C0 ; [*0BD2.0020.0002] # THREE DIMENSIONAL ANGLE +27C1 ; [*0BD3.0020.0002] # WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE +27C2 ; [*0BD4.0020.0002] # PERPENDICULAR +27C3 ; [*0BD5.0020.0002] # OPEN SUBSET +27C4 ; [*0BD6.0020.0002] # OPEN SUPERSET +27C5 ; [*0352.0020.0002] # LEFT S-SHAPED BAG DELIMITER +27C6 ; [*0353.0020.0002] # RIGHT S-SHAPED BAG DELIMITER +27C7 ; [*0BD7.0020.0002] # OR WITH DOT INSIDE +27C8 ; [*0BD8.0020.0002] # REVERSE SOLIDUS PRECEDING SUBSET +27C9 ; [*0BD9.0020.0002] # SUPERSET PRECEDING SOLIDUS +27CA ; [*0BDA.0020.0002] # VERTICAL BAR WITH HORIZONTAL STROKE +27CB ; [*0BDB.0020.0002] # MATHEMATICAL RISING DIAGONAL +27CC ; [*0BDC.0020.0002] # LONG DIVISION +27CD ; [*0BDD.0020.0002] # MATHEMATICAL FALLING DIAGONAL +27CE ; [*0BDE.0020.0002] # SQUARED LOGICAL AND +27CF ; [*0BDF.0020.0002] # SQUARED LOGICAL OR +27D0 ; [*0BE0.0020.0002] # WHITE DIAMOND WITH CENTRED DOT +27D1 ; [*0BE1.0020.0002] # AND WITH DOT +27D2 ; [*0BE2.0020.0002] # ELEMENT OF OPENING UPWARDS +27D3 ; [*0BE3.0020.0002] # LOWER RIGHT CORNER WITH DOT +27D4 ; [*0BE4.0020.0002] # UPPER LEFT CORNER WITH DOT +27D5 ; [*0BE5.0020.0002] # LEFT OUTER JOIN +27D6 ; [*0BE6.0020.0002] # RIGHT OUTER JOIN +27D7 ; [*0BE7.0020.0002] # FULL OUTER JOIN +27D8 ; [*0BE8.0020.0002] # LARGE UP TACK +27D9 ; [*0BE9.0020.0002] # LARGE DOWN TACK +27DA ; [*0BEA.0020.0002] # LEFT AND RIGHT DOUBLE TURNSTILE +27DB ; [*0BEB.0020.0002] # LEFT AND RIGHT TACK +27DC ; [*0BEC.0020.0002] # LEFT MULTIMAP +27DD ; [*0BED.0020.0002] # LONG RIGHT TACK +27DE ; [*0BEE.0020.0002] # LONG LEFT TACK +27DF ; [*0BEF.0020.0002] # UP TACK WITH CIRCLE ABOVE +27E0 ; [*0BF0.0020.0002] # LOZENGE DIVIDED BY HORIZONTAL RULE +27E1 ; [*0BF1.0020.0002] # WHITE CONCAVE-SIDED DIAMOND +27E2 ; [*0BF2.0020.0002] # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK +27E3 ; [*0BF3.0020.0002] # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK +27E4 ; [*0BF4.0020.0002] # WHITE SQUARE WITH LEFTWARDS TICK +27E5 ; [*0BF5.0020.0002] # WHITE SQUARE WITH RIGHTWARDS TICK +27E6 ; [*0354.0020.0002] # MATHEMATICAL LEFT WHITE SQUARE BRACKET +27E7 ; [*0355.0020.0002] # MATHEMATICAL RIGHT WHITE SQUARE BRACKET +27E8 ; [*0356.0020.0002] # MATHEMATICAL LEFT ANGLE BRACKET +27E9 ; [*0357.0020.0002] # MATHEMATICAL RIGHT ANGLE BRACKET +27EA ; [*0358.0020.0002] # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET +27EB ; [*0359.0020.0002] # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET +27EC ; [*035A.0020.0002] # MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET +27ED ; [*035B.0020.0002] # MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET +27EE ; [*035C.0020.0002] # MATHEMATICAL LEFT FLATTENED PARENTHESIS +27EF ; [*035D.0020.0002] # MATHEMATICAL RIGHT FLATTENED PARENTHESIS +27F0 ; [*0BF6.0020.0002] # UPWARDS QUADRUPLE ARROW +27F1 ; [*0BF7.0020.0002] # DOWNWARDS QUADRUPLE ARROW +27F2 ; [*0BF8.0020.0002] # ANTICLOCKWISE GAPPED CIRCLE ARROW +27F3 ; [*0BF9.0020.0002] # CLOCKWISE GAPPED CIRCLE ARROW +27F4 ; [*0BFA.0020.0002] # RIGHT ARROW WITH CIRCLED PLUS +27F5 ; [*0BFB.0020.0002] # LONG LEFTWARDS ARROW +27F6 ; [*0BFC.0020.0002] # LONG RIGHTWARDS ARROW +27F7 ; [*0BFD.0020.0002] # LONG LEFT RIGHT ARROW +27F8 ; [*0BFE.0020.0002] # LONG LEFTWARDS DOUBLE ARROW +27F9 ; [*0BFF.0020.0002] # LONG RIGHTWARDS DOUBLE ARROW +27FA ; [*0C00.0020.0002] # LONG LEFT RIGHT DOUBLE ARROW +27FB ; [*0C01.0020.0002] # LONG LEFTWARDS ARROW FROM BAR +27FC ; [*0C02.0020.0002] # LONG RIGHTWARDS ARROW FROM BAR +27FD ; [*0C03.0020.0002] # LONG LEFTWARDS DOUBLE ARROW FROM BAR +27FE ; [*0C04.0020.0002] # LONG RIGHTWARDS DOUBLE ARROW FROM BAR +27FF ; [*0C05.0020.0002] # LONG RIGHTWARDS SQUIGGLE ARROW +2800 ; [*0EE8.0020.0002] # BRAILLE PATTERN BLANK +2801 ; [*0EE9.0020.0002] # BRAILLE PATTERN DOTS-1 +2802 ; [*0EEA.0020.0002] # BRAILLE PATTERN DOTS-2 +2803 ; [*0EEB.0020.0002] # BRAILLE PATTERN DOTS-12 +2804 ; [*0EEC.0020.0002] # BRAILLE PATTERN DOTS-3 +2805 ; [*0EED.0020.0002] # BRAILLE PATTERN DOTS-13 +2806 ; [*0EEE.0020.0002] # BRAILLE PATTERN DOTS-23 +2807 ; [*0EEF.0020.0002] # BRAILLE PATTERN DOTS-123 +2808 ; [*0EF0.0020.0002] # BRAILLE PATTERN DOTS-4 +2809 ; [*0EF1.0020.0002] # BRAILLE PATTERN DOTS-14 +280A ; [*0EF2.0020.0002] # BRAILLE PATTERN DOTS-24 +280B ; [*0EF3.0020.0002] # BRAILLE PATTERN DOTS-124 +280C ; [*0EF4.0020.0002] # BRAILLE PATTERN DOTS-34 +280D ; [*0EF5.0020.0002] # BRAILLE PATTERN DOTS-134 +280E ; [*0EF6.0020.0002] # BRAILLE PATTERN DOTS-234 +280F ; [*0EF7.0020.0002] # BRAILLE PATTERN DOTS-1234 +2810 ; [*0EF8.0020.0002] # BRAILLE PATTERN DOTS-5 +2811 ; [*0EF9.0020.0002] # BRAILLE PATTERN DOTS-15 +2812 ; [*0EFA.0020.0002] # BRAILLE PATTERN DOTS-25 +2813 ; [*0EFB.0020.0002] # BRAILLE PATTERN DOTS-125 +2814 ; [*0EFC.0020.0002] # BRAILLE PATTERN DOTS-35 +2815 ; [*0EFD.0020.0002] # BRAILLE PATTERN DOTS-135 +2816 ; [*0EFE.0020.0002] # BRAILLE PATTERN DOTS-235 +2817 ; [*0EFF.0020.0002] # BRAILLE PATTERN DOTS-1235 +2818 ; [*0F00.0020.0002] # BRAILLE PATTERN DOTS-45 +2819 ; [*0F01.0020.0002] # BRAILLE PATTERN DOTS-145 +281A ; [*0F02.0020.0002] # BRAILLE PATTERN DOTS-245 +281B ; [*0F03.0020.0002] # BRAILLE PATTERN DOTS-1245 +281C ; [*0F04.0020.0002] # BRAILLE PATTERN DOTS-345 +281D ; [*0F05.0020.0002] # BRAILLE PATTERN DOTS-1345 +281E ; [*0F06.0020.0002] # BRAILLE PATTERN DOTS-2345 +281F ; [*0F07.0020.0002] # BRAILLE PATTERN DOTS-12345 +2820 ; [*0F08.0020.0002] # BRAILLE PATTERN DOTS-6 +2821 ; [*0F09.0020.0002] # BRAILLE PATTERN DOTS-16 +2822 ; [*0F0A.0020.0002] # BRAILLE PATTERN DOTS-26 +2823 ; [*0F0B.0020.0002] # BRAILLE PATTERN DOTS-126 +2824 ; [*0F0C.0020.0002] # BRAILLE PATTERN DOTS-36 +2825 ; [*0F0D.0020.0002] # BRAILLE PATTERN DOTS-136 +2826 ; [*0F0E.0020.0002] # BRAILLE PATTERN DOTS-236 +2827 ; [*0F0F.0020.0002] # BRAILLE PATTERN DOTS-1236 +2828 ; [*0F10.0020.0002] # BRAILLE PATTERN DOTS-46 +2829 ; [*0F11.0020.0002] # BRAILLE PATTERN DOTS-146 +282A ; [*0F12.0020.0002] # BRAILLE PATTERN DOTS-246 +282B ; [*0F13.0020.0002] # BRAILLE PATTERN DOTS-1246 +282C ; [*0F14.0020.0002] # BRAILLE PATTERN DOTS-346 +282D ; [*0F15.0020.0002] # BRAILLE PATTERN DOTS-1346 +282E ; [*0F16.0020.0002] # BRAILLE PATTERN DOTS-2346 +282F ; [*0F17.0020.0002] # BRAILLE PATTERN DOTS-12346 +2830 ; [*0F18.0020.0002] # BRAILLE PATTERN DOTS-56 +2831 ; [*0F19.0020.0002] # BRAILLE PATTERN DOTS-156 +2832 ; [*0F1A.0020.0002] # BRAILLE PATTERN DOTS-256 +2833 ; [*0F1B.0020.0002] # BRAILLE PATTERN DOTS-1256 +2834 ; [*0F1C.0020.0002] # BRAILLE PATTERN DOTS-356 +2835 ; [*0F1D.0020.0002] # BRAILLE PATTERN DOTS-1356 +2836 ; [*0F1E.0020.0002] # BRAILLE PATTERN DOTS-2356 +2837 ; [*0F1F.0020.0002] # BRAILLE PATTERN DOTS-12356 +2838 ; [*0F20.0020.0002] # BRAILLE PATTERN DOTS-456 +2839 ; [*0F21.0020.0002] # BRAILLE PATTERN DOTS-1456 +283A ; [*0F22.0020.0002] # BRAILLE PATTERN DOTS-2456 +283B ; [*0F23.0020.0002] # BRAILLE PATTERN DOTS-12456 +283C ; [*0F24.0020.0002] # BRAILLE PATTERN DOTS-3456 +283D ; [*0F25.0020.0002] # BRAILLE PATTERN DOTS-13456 +283E ; [*0F26.0020.0002] # BRAILLE PATTERN DOTS-23456 +283F ; [*0F27.0020.0002] # BRAILLE PATTERN DOTS-123456 +2840 ; [*0F28.0020.0002] # BRAILLE PATTERN DOTS-7 +2841 ; [*0F29.0020.0002] # BRAILLE PATTERN DOTS-17 +2842 ; [*0F2A.0020.0002] # BRAILLE PATTERN DOTS-27 +2843 ; [*0F2B.0020.0002] # BRAILLE PATTERN DOTS-127 +2844 ; [*0F2C.0020.0002] # BRAILLE PATTERN DOTS-37 +2845 ; [*0F2D.0020.0002] # BRAILLE PATTERN DOTS-137 +2846 ; [*0F2E.0020.0002] # BRAILLE PATTERN DOTS-237 +2847 ; [*0F2F.0020.0002] # BRAILLE PATTERN DOTS-1237 +2848 ; [*0F30.0020.0002] # BRAILLE PATTERN DOTS-47 +2849 ; [*0F31.0020.0002] # BRAILLE PATTERN DOTS-147 +284A ; [*0F32.0020.0002] # BRAILLE PATTERN DOTS-247 +284B ; [*0F33.0020.0002] # BRAILLE PATTERN DOTS-1247 +284C ; [*0F34.0020.0002] # BRAILLE PATTERN DOTS-347 +284D ; [*0F35.0020.0002] # BRAILLE PATTERN DOTS-1347 +284E ; [*0F36.0020.0002] # BRAILLE PATTERN DOTS-2347 +284F ; [*0F37.0020.0002] # BRAILLE PATTERN DOTS-12347 +2850 ; [*0F38.0020.0002] # BRAILLE PATTERN DOTS-57 +2851 ; [*0F39.0020.0002] # BRAILLE PATTERN DOTS-157 +2852 ; [*0F3A.0020.0002] # BRAILLE PATTERN DOTS-257 +2853 ; [*0F3B.0020.0002] # BRAILLE PATTERN DOTS-1257 +2854 ; [*0F3C.0020.0002] # BRAILLE PATTERN DOTS-357 +2855 ; [*0F3D.0020.0002] # BRAILLE PATTERN DOTS-1357 +2856 ; [*0F3E.0020.0002] # BRAILLE PATTERN DOTS-2357 +2857 ; [*0F3F.0020.0002] # BRAILLE PATTERN DOTS-12357 +2858 ; [*0F40.0020.0002] # BRAILLE PATTERN DOTS-457 +2859 ; [*0F41.0020.0002] # BRAILLE PATTERN DOTS-1457 +285A ; [*0F42.0020.0002] # BRAILLE PATTERN DOTS-2457 +285B ; [*0F43.0020.0002] # BRAILLE PATTERN DOTS-12457 +285C ; [*0F44.0020.0002] # BRAILLE PATTERN DOTS-3457 +285D ; [*0F45.0020.0002] # BRAILLE PATTERN DOTS-13457 +285E ; [*0F46.0020.0002] # BRAILLE PATTERN DOTS-23457 +285F ; [*0F47.0020.0002] # BRAILLE PATTERN DOTS-123457 +2860 ; [*0F48.0020.0002] # BRAILLE PATTERN DOTS-67 +2861 ; [*0F49.0020.0002] # BRAILLE PATTERN DOTS-167 +2862 ; [*0F4A.0020.0002] # BRAILLE PATTERN DOTS-267 +2863 ; [*0F4B.0020.0002] # BRAILLE PATTERN DOTS-1267 +2864 ; [*0F4C.0020.0002] # BRAILLE PATTERN DOTS-367 +2865 ; [*0F4D.0020.0002] # BRAILLE PATTERN DOTS-1367 +2866 ; [*0F4E.0020.0002] # BRAILLE PATTERN DOTS-2367 +2867 ; [*0F4F.0020.0002] # BRAILLE PATTERN DOTS-12367 +2868 ; [*0F50.0020.0002] # BRAILLE PATTERN DOTS-467 +2869 ; [*0F51.0020.0002] # BRAILLE PATTERN DOTS-1467 +286A ; [*0F52.0020.0002] # BRAILLE PATTERN DOTS-2467 +286B ; [*0F53.0020.0002] # BRAILLE PATTERN DOTS-12467 +286C ; [*0F54.0020.0002] # BRAILLE PATTERN DOTS-3467 +286D ; [*0F55.0020.0002] # BRAILLE PATTERN DOTS-13467 +286E ; [*0F56.0020.0002] # BRAILLE PATTERN DOTS-23467 +286F ; [*0F57.0020.0002] # BRAILLE PATTERN DOTS-123467 +2870 ; [*0F58.0020.0002] # BRAILLE PATTERN DOTS-567 +2871 ; [*0F59.0020.0002] # BRAILLE PATTERN DOTS-1567 +2872 ; [*0F5A.0020.0002] # BRAILLE PATTERN DOTS-2567 +2873 ; [*0F5B.0020.0002] # BRAILLE PATTERN DOTS-12567 +2874 ; [*0F5C.0020.0002] # BRAILLE PATTERN DOTS-3567 +2875 ; [*0F5D.0020.0002] # BRAILLE PATTERN DOTS-13567 +2876 ; [*0F5E.0020.0002] # BRAILLE PATTERN DOTS-23567 +2877 ; [*0F5F.0020.0002] # BRAILLE PATTERN DOTS-123567 +2878 ; [*0F60.0020.0002] # BRAILLE PATTERN DOTS-4567 +2879 ; [*0F61.0020.0002] # BRAILLE PATTERN DOTS-14567 +287A ; [*0F62.0020.0002] # BRAILLE PATTERN DOTS-24567 +287B ; [*0F63.0020.0002] # BRAILLE PATTERN DOTS-124567 +287C ; [*0F64.0020.0002] # BRAILLE PATTERN DOTS-34567 +287D ; [*0F65.0020.0002] # BRAILLE PATTERN DOTS-134567 +287E ; [*0F66.0020.0002] # BRAILLE PATTERN DOTS-234567 +287F ; [*0F67.0020.0002] # BRAILLE PATTERN DOTS-1234567 +2880 ; [*0F68.0020.0002] # BRAILLE PATTERN DOTS-8 +2881 ; [*0F69.0020.0002] # BRAILLE PATTERN DOTS-18 +2882 ; [*0F6A.0020.0002] # BRAILLE PATTERN DOTS-28 +2883 ; [*0F6B.0020.0002] # BRAILLE PATTERN DOTS-128 +2884 ; [*0F6C.0020.0002] # BRAILLE PATTERN DOTS-38 +2885 ; [*0F6D.0020.0002] # BRAILLE PATTERN DOTS-138 +2886 ; [*0F6E.0020.0002] # BRAILLE PATTERN DOTS-238 +2887 ; [*0F6F.0020.0002] # BRAILLE PATTERN DOTS-1238 +2888 ; [*0F70.0020.0002] # BRAILLE PATTERN DOTS-48 +2889 ; [*0F71.0020.0002] # BRAILLE PATTERN DOTS-148 +288A ; [*0F72.0020.0002] # BRAILLE PATTERN DOTS-248 +288B ; [*0F73.0020.0002] # BRAILLE PATTERN DOTS-1248 +288C ; [*0F74.0020.0002] # BRAILLE PATTERN DOTS-348 +288D ; [*0F75.0020.0002] # BRAILLE PATTERN DOTS-1348 +288E ; [*0F76.0020.0002] # BRAILLE PATTERN DOTS-2348 +288F ; [*0F77.0020.0002] # BRAILLE PATTERN DOTS-12348 +2890 ; [*0F78.0020.0002] # BRAILLE PATTERN DOTS-58 +2891 ; [*0F79.0020.0002] # BRAILLE PATTERN DOTS-158 +2892 ; [*0F7A.0020.0002] # BRAILLE PATTERN DOTS-258 +2893 ; [*0F7B.0020.0002] # BRAILLE PATTERN DOTS-1258 +2894 ; [*0F7C.0020.0002] # BRAILLE PATTERN DOTS-358 +2895 ; [*0F7D.0020.0002] # BRAILLE PATTERN DOTS-1358 +2896 ; [*0F7E.0020.0002] # BRAILLE PATTERN DOTS-2358 +2897 ; [*0F7F.0020.0002] # BRAILLE PATTERN DOTS-12358 +2898 ; [*0F80.0020.0002] # BRAILLE PATTERN DOTS-458 +2899 ; [*0F81.0020.0002] # BRAILLE PATTERN DOTS-1458 +289A ; [*0F82.0020.0002] # BRAILLE PATTERN DOTS-2458 +289B ; [*0F83.0020.0002] # BRAILLE PATTERN DOTS-12458 +289C ; [*0F84.0020.0002] # BRAILLE PATTERN DOTS-3458 +289D ; [*0F85.0020.0002] # BRAILLE PATTERN DOTS-13458 +289E ; [*0F86.0020.0002] # BRAILLE PATTERN DOTS-23458 +289F ; [*0F87.0020.0002] # BRAILLE PATTERN DOTS-123458 +28A0 ; [*0F88.0020.0002] # BRAILLE PATTERN DOTS-68 +28A1 ; [*0F89.0020.0002] # BRAILLE PATTERN DOTS-168 +28A2 ; [*0F8A.0020.0002] # BRAILLE PATTERN DOTS-268 +28A3 ; [*0F8B.0020.0002] # BRAILLE PATTERN DOTS-1268 +28A4 ; [*0F8C.0020.0002] # BRAILLE PATTERN DOTS-368 +28A5 ; [*0F8D.0020.0002] # BRAILLE PATTERN DOTS-1368 +28A6 ; [*0F8E.0020.0002] # BRAILLE PATTERN DOTS-2368 +28A7 ; [*0F8F.0020.0002] # BRAILLE PATTERN DOTS-12368 +28A8 ; [*0F90.0020.0002] # BRAILLE PATTERN DOTS-468 +28A9 ; [*0F91.0020.0002] # BRAILLE PATTERN DOTS-1468 +28AA ; [*0F92.0020.0002] # BRAILLE PATTERN DOTS-2468 +28AB ; [*0F93.0020.0002] # BRAILLE PATTERN DOTS-12468 +28AC ; [*0F94.0020.0002] # BRAILLE PATTERN DOTS-3468 +28AD ; [*0F95.0020.0002] # BRAILLE PATTERN DOTS-13468 +28AE ; [*0F96.0020.0002] # BRAILLE PATTERN DOTS-23468 +28AF ; [*0F97.0020.0002] # BRAILLE PATTERN DOTS-123468 +28B0 ; [*0F98.0020.0002] # BRAILLE PATTERN DOTS-568 +28B1 ; [*0F99.0020.0002] # BRAILLE PATTERN DOTS-1568 +28B2 ; [*0F9A.0020.0002] # BRAILLE PATTERN DOTS-2568 +28B3 ; [*0F9B.0020.0002] # BRAILLE PATTERN DOTS-12568 +28B4 ; [*0F9C.0020.0002] # BRAILLE PATTERN DOTS-3568 +28B5 ; [*0F9D.0020.0002] # BRAILLE PATTERN DOTS-13568 +28B6 ; [*0F9E.0020.0002] # BRAILLE PATTERN DOTS-23568 +28B7 ; [*0F9F.0020.0002] # BRAILLE PATTERN DOTS-123568 +28B8 ; [*0FA0.0020.0002] # BRAILLE PATTERN DOTS-4568 +28B9 ; [*0FA1.0020.0002] # BRAILLE PATTERN DOTS-14568 +28BA ; [*0FA2.0020.0002] # BRAILLE PATTERN DOTS-24568 +28BB ; [*0FA3.0020.0002] # BRAILLE PATTERN DOTS-124568 +28BC ; [*0FA4.0020.0002] # BRAILLE PATTERN DOTS-34568 +28BD ; [*0FA5.0020.0002] # BRAILLE PATTERN DOTS-134568 +28BE ; [*0FA6.0020.0002] # BRAILLE PATTERN DOTS-234568 +28BF ; [*0FA7.0020.0002] # BRAILLE PATTERN DOTS-1234568 +28C0 ; [*0FA8.0020.0002] # BRAILLE PATTERN DOTS-78 +28C1 ; [*0FA9.0020.0002] # BRAILLE PATTERN DOTS-178 +28C2 ; [*0FAA.0020.0002] # BRAILLE PATTERN DOTS-278 +28C3 ; [*0FAB.0020.0002] # BRAILLE PATTERN DOTS-1278 +28C4 ; [*0FAC.0020.0002] # BRAILLE PATTERN DOTS-378 +28C5 ; [*0FAD.0020.0002] # BRAILLE PATTERN DOTS-1378 +28C6 ; [*0FAE.0020.0002] # BRAILLE PATTERN DOTS-2378 +28C7 ; [*0FAF.0020.0002] # BRAILLE PATTERN DOTS-12378 +28C8 ; [*0FB0.0020.0002] # BRAILLE PATTERN DOTS-478 +28C9 ; [*0FB1.0020.0002] # BRAILLE PATTERN DOTS-1478 +28CA ; [*0FB2.0020.0002] # BRAILLE PATTERN DOTS-2478 +28CB ; [*0FB3.0020.0002] # BRAILLE PATTERN DOTS-12478 +28CC ; [*0FB4.0020.0002] # BRAILLE PATTERN DOTS-3478 +28CD ; [*0FB5.0020.0002] # BRAILLE PATTERN DOTS-13478 +28CE ; [*0FB6.0020.0002] # BRAILLE PATTERN DOTS-23478 +28CF ; [*0FB7.0020.0002] # BRAILLE PATTERN DOTS-123478 +28D0 ; [*0FB8.0020.0002] # BRAILLE PATTERN DOTS-578 +28D1 ; [*0FB9.0020.0002] # BRAILLE PATTERN DOTS-1578 +28D2 ; [*0FBA.0020.0002] # BRAILLE PATTERN DOTS-2578 +28D3 ; [*0FBB.0020.0002] # BRAILLE PATTERN DOTS-12578 +28D4 ; [*0FBC.0020.0002] # BRAILLE PATTERN DOTS-3578 +28D5 ; [*0FBD.0020.0002] # BRAILLE PATTERN DOTS-13578 +28D6 ; [*0FBE.0020.0002] # BRAILLE PATTERN DOTS-23578 +28D7 ; [*0FBF.0020.0002] # BRAILLE PATTERN DOTS-123578 +28D8 ; [*0FC0.0020.0002] # BRAILLE PATTERN DOTS-4578 +28D9 ; [*0FC1.0020.0002] # BRAILLE PATTERN DOTS-14578 +28DA ; [*0FC2.0020.0002] # BRAILLE PATTERN DOTS-24578 +28DB ; [*0FC3.0020.0002] # BRAILLE PATTERN DOTS-124578 +28DC ; [*0FC4.0020.0002] # BRAILLE PATTERN DOTS-34578 +28DD ; [*0FC5.0020.0002] # BRAILLE PATTERN DOTS-134578 +28DE ; [*0FC6.0020.0002] # BRAILLE PATTERN DOTS-234578 +28DF ; [*0FC7.0020.0002] # BRAILLE PATTERN DOTS-1234578 +28E0 ; [*0FC8.0020.0002] # BRAILLE PATTERN DOTS-678 +28E1 ; [*0FC9.0020.0002] # BRAILLE PATTERN DOTS-1678 +28E2 ; [*0FCA.0020.0002] # BRAILLE PATTERN DOTS-2678 +28E3 ; [*0FCB.0020.0002] # BRAILLE PATTERN DOTS-12678 +28E4 ; [*0FCC.0020.0002] # BRAILLE PATTERN DOTS-3678 +28E5 ; [*0FCD.0020.0002] # BRAILLE PATTERN DOTS-13678 +28E6 ; [*0FCE.0020.0002] # BRAILLE PATTERN DOTS-23678 +28E7 ; [*0FCF.0020.0002] # BRAILLE PATTERN DOTS-123678 +28E8 ; [*0FD0.0020.0002] # BRAILLE PATTERN DOTS-4678 +28E9 ; [*0FD1.0020.0002] # BRAILLE PATTERN DOTS-14678 +28EA ; [*0FD2.0020.0002] # BRAILLE PATTERN DOTS-24678 +28EB ; [*0FD3.0020.0002] # BRAILLE PATTERN DOTS-124678 +28EC ; [*0FD4.0020.0002] # BRAILLE PATTERN DOTS-34678 +28ED ; [*0FD5.0020.0002] # BRAILLE PATTERN DOTS-134678 +28EE ; [*0FD6.0020.0002] # BRAILLE PATTERN DOTS-234678 +28EF ; [*0FD7.0020.0002] # BRAILLE PATTERN DOTS-1234678 +28F0 ; [*0FD8.0020.0002] # BRAILLE PATTERN DOTS-5678 +28F1 ; [*0FD9.0020.0002] # BRAILLE PATTERN DOTS-15678 +28F2 ; [*0FDA.0020.0002] # BRAILLE PATTERN DOTS-25678 +28F3 ; [*0FDB.0020.0002] # BRAILLE PATTERN DOTS-125678 +28F4 ; [*0FDC.0020.0002] # BRAILLE PATTERN DOTS-35678 +28F5 ; [*0FDD.0020.0002] # BRAILLE PATTERN DOTS-135678 +28F6 ; [*0FDE.0020.0002] # BRAILLE PATTERN DOTS-235678 +28F7 ; [*0FDF.0020.0002] # BRAILLE PATTERN DOTS-1235678 +28F8 ; [*0FE0.0020.0002] # BRAILLE PATTERN DOTS-45678 +28F9 ; [*0FE1.0020.0002] # BRAILLE PATTERN DOTS-145678 +28FA ; [*0FE2.0020.0002] # BRAILLE PATTERN DOTS-245678 +28FB ; [*0FE3.0020.0002] # BRAILLE PATTERN DOTS-1245678 +28FC ; [*0FE4.0020.0002] # BRAILLE PATTERN DOTS-345678 +28FD ; [*0FE5.0020.0002] # BRAILLE PATTERN DOTS-1345678 +28FE ; [*0FE6.0020.0002] # BRAILLE PATTERN DOTS-2345678 +28FF ; [*0FE7.0020.0002] # BRAILLE PATTERN DOTS-12345678 +2900 ; [*0C06.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE +2901 ; [*0C07.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE +2902 ; [*0C08.0020.0002] # LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE +2903 ; [*0C09.0020.0002] # RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE +2904 ; [*0C0A.0020.0002] # LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE +2905 ; [*0C0B.0020.0002] # RIGHTWARDS TWO-HEADED ARROW FROM BAR +2906 ; [*0C0C.0020.0002] # LEFTWARDS DOUBLE ARROW FROM BAR +2907 ; [*0C0D.0020.0002] # RIGHTWARDS DOUBLE ARROW FROM BAR +2908 ; [*0C0E.0020.0002] # DOWNWARDS ARROW WITH HORIZONTAL STROKE +2909 ; [*0C0F.0020.0002] # UPWARDS ARROW WITH HORIZONTAL STROKE +290A ; [*0C10.0020.0002] # UPWARDS TRIPLE ARROW +290B ; [*0C11.0020.0002] # DOWNWARDS TRIPLE ARROW +290C ; [*0C12.0020.0002] # LEFTWARDS DOUBLE DASH ARROW +290D ; [*0C13.0020.0002] # RIGHTWARDS DOUBLE DASH ARROW +290E ; [*0C14.0020.0002] # LEFTWARDS TRIPLE DASH ARROW +290F ; [*0C15.0020.0002] # RIGHTWARDS TRIPLE DASH ARROW +2910 ; [*0C16.0020.0002] # RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW +2911 ; [*0C17.0020.0002] # RIGHTWARDS ARROW WITH DOTTED STEM +2912 ; [*0C18.0020.0002] # UPWARDS ARROW TO BAR +2913 ; [*0C19.0020.0002] # DOWNWARDS ARROW TO BAR +2914 ; [*0C1A.0020.0002] # RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE +2915 ; [*0C1B.0020.0002] # RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE +2916 ; [*0C1C.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH TAIL +2917 ; [*0C1D.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE +2918 ; [*0C1E.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE +2919 ; [*0C1F.0020.0002] # LEFTWARDS ARROW-TAIL +291A ; [*0C20.0020.0002] # RIGHTWARDS ARROW-TAIL +291B ; [*0C21.0020.0002] # LEFTWARDS DOUBLE ARROW-TAIL +291C ; [*0C22.0020.0002] # RIGHTWARDS DOUBLE ARROW-TAIL +291D ; [*0C23.0020.0002] # LEFTWARDS ARROW TO BLACK DIAMOND +291E ; [*0C24.0020.0002] # RIGHTWARDS ARROW TO BLACK DIAMOND +291F ; [*0C25.0020.0002] # LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND +2920 ; [*0C26.0020.0002] # RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND +2921 ; [*0C27.0020.0002] # NORTH WEST AND SOUTH EAST ARROW +2922 ; [*0C28.0020.0002] # NORTH EAST AND SOUTH WEST ARROW +2923 ; [*0C29.0020.0002] # NORTH WEST ARROW WITH HOOK +2924 ; [*0C2A.0020.0002] # NORTH EAST ARROW WITH HOOK +2925 ; [*0C2B.0020.0002] # SOUTH EAST ARROW WITH HOOK +2926 ; [*0C2C.0020.0002] # SOUTH WEST ARROW WITH HOOK +2927 ; [*0C2D.0020.0002] # NORTH WEST ARROW AND NORTH EAST ARROW +2928 ; [*0C2E.0020.0002] # NORTH EAST ARROW AND SOUTH EAST ARROW +2929 ; [*0C2F.0020.0002] # SOUTH EAST ARROW AND SOUTH WEST ARROW +292A ; [*0C30.0020.0002] # SOUTH WEST ARROW AND NORTH WEST ARROW +292B ; [*0C31.0020.0002] # RISING DIAGONAL CROSSING FALLING DIAGONAL +292C ; [*0C32.0020.0002] # FALLING DIAGONAL CROSSING RISING DIAGONAL +292D ; [*0C33.0020.0002] # SOUTH EAST ARROW CROSSING NORTH EAST ARROW +292E ; [*0C34.0020.0002] # NORTH EAST ARROW CROSSING SOUTH EAST ARROW +292F ; [*0C35.0020.0002] # FALLING DIAGONAL CROSSING NORTH EAST ARROW +2930 ; [*0C36.0020.0002] # RISING DIAGONAL CROSSING SOUTH EAST ARROW +2931 ; [*0C37.0020.0002] # NORTH EAST ARROW CROSSING NORTH WEST ARROW +2932 ; [*0C38.0020.0002] # NORTH WEST ARROW CROSSING NORTH EAST ARROW +2933 ; [*0C39.0020.0002] # WAVE ARROW POINTING DIRECTLY RIGHT +2934 ; [*0C3A.0020.0002] # ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS +2935 ; [*0C3B.0020.0002] # ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS +2936 ; [*0C3C.0020.0002] # ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS +2937 ; [*0C3D.0020.0002] # ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS +2938 ; [*0C3E.0020.0002] # RIGHT-SIDE ARC CLOCKWISE ARROW +2939 ; [*0C3F.0020.0002] # LEFT-SIDE ARC ANTICLOCKWISE ARROW +293A ; [*0C40.0020.0002] # TOP ARC ANTICLOCKWISE ARROW +293B ; [*0C41.0020.0002] # BOTTOM ARC ANTICLOCKWISE ARROW +293C ; [*0C42.0020.0002] # TOP ARC CLOCKWISE ARROW WITH MINUS +293D ; [*0C43.0020.0002] # TOP ARC ANTICLOCKWISE ARROW WITH PLUS +293E ; [*0C44.0020.0002] # LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW +293F ; [*0C45.0020.0002] # LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW +2940 ; [*0C46.0020.0002] # ANTICLOCKWISE CLOSED CIRCLE ARROW +2941 ; [*0C47.0020.0002] # CLOCKWISE CLOSED CIRCLE ARROW +2942 ; [*0C48.0020.0002] # RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW +2943 ; [*0C49.0020.0002] # LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW +2944 ; [*0C4A.0020.0002] # SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW +2945 ; [*0C4B.0020.0002] # RIGHTWARDS ARROW WITH PLUS BELOW +2946 ; [*0C4C.0020.0002] # LEFTWARDS ARROW WITH PLUS BELOW +2947 ; [*0C4D.0020.0002] # RIGHTWARDS ARROW THROUGH X +2948 ; [*0C4E.0020.0002] # LEFT RIGHT ARROW THROUGH SMALL CIRCLE +2949 ; [*0C4F.0020.0002] # UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE +294A ; [*0C50.0020.0002] # LEFT BARB UP RIGHT BARB DOWN HARPOON +294B ; [*0C51.0020.0002] # LEFT BARB DOWN RIGHT BARB UP HARPOON +294C ; [*0C52.0020.0002] # UP BARB RIGHT DOWN BARB LEFT HARPOON +294D ; [*0C53.0020.0002] # UP BARB LEFT DOWN BARB RIGHT HARPOON +294E ; [*0C54.0020.0002] # LEFT BARB UP RIGHT BARB UP HARPOON +294F ; [*0C55.0020.0002] # UP BARB RIGHT DOWN BARB RIGHT HARPOON +2950 ; [*0C56.0020.0002] # LEFT BARB DOWN RIGHT BARB DOWN HARPOON +2951 ; [*0C57.0020.0002] # UP BARB LEFT DOWN BARB LEFT HARPOON +2952 ; [*0C58.0020.0002] # LEFTWARDS HARPOON WITH BARB UP TO BAR +2953 ; [*0C59.0020.0002] # RIGHTWARDS HARPOON WITH BARB UP TO BAR +2954 ; [*0C5A.0020.0002] # UPWARDS HARPOON WITH BARB RIGHT TO BAR +2955 ; [*0C5B.0020.0002] # DOWNWARDS HARPOON WITH BARB RIGHT TO BAR +2956 ; [*0C5C.0020.0002] # LEFTWARDS HARPOON WITH BARB DOWN TO BAR +2957 ; [*0C5D.0020.0002] # RIGHTWARDS HARPOON WITH BARB DOWN TO BAR +2958 ; [*0C5E.0020.0002] # UPWARDS HARPOON WITH BARB LEFT TO BAR +2959 ; [*0C5F.0020.0002] # DOWNWARDS HARPOON WITH BARB LEFT TO BAR +295A ; [*0C60.0020.0002] # LEFTWARDS HARPOON WITH BARB UP FROM BAR +295B ; [*0C61.0020.0002] # RIGHTWARDS HARPOON WITH BARB UP FROM BAR +295C ; [*0C62.0020.0002] # UPWARDS HARPOON WITH BARB RIGHT FROM BAR +295D ; [*0C63.0020.0002] # DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR +295E ; [*0C64.0020.0002] # LEFTWARDS HARPOON WITH BARB DOWN FROM BAR +295F ; [*0C65.0020.0002] # RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR +2960 ; [*0C66.0020.0002] # UPWARDS HARPOON WITH BARB LEFT FROM BAR +2961 ; [*0C67.0020.0002] # DOWNWARDS HARPOON WITH BARB LEFT FROM BAR +2962 ; [*0C68.0020.0002] # LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN +2963 ; [*0C69.0020.0002] # UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT +2964 ; [*0C6A.0020.0002] # RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN +2965 ; [*0C6B.0020.0002] # DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT +2966 ; [*0C6C.0020.0002] # LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP +2967 ; [*0C6D.0020.0002] # LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN +2968 ; [*0C6E.0020.0002] # RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP +2969 ; [*0C6F.0020.0002] # RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN +296A ; [*0C70.0020.0002] # LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH +296B ; [*0C71.0020.0002] # LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH +296C ; [*0C72.0020.0002] # RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH +296D ; [*0C73.0020.0002] # RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH +296E ; [*0C74.0020.0002] # UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT +296F ; [*0C75.0020.0002] # DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT +2970 ; [*0C76.0020.0002] # RIGHT DOUBLE ARROW WITH ROUNDED HEAD +2971 ; [*0C77.0020.0002] # EQUALS SIGN ABOVE RIGHTWARDS ARROW +2972 ; [*0C78.0020.0002] # TILDE OPERATOR ABOVE RIGHTWARDS ARROW +2973 ; [*0C79.0020.0002] # LEFTWARDS ARROW ABOVE TILDE OPERATOR +2974 ; [*0C7A.0020.0002] # RIGHTWARDS ARROW ABOVE TILDE OPERATOR +2975 ; [*0C7B.0020.0002] # RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO +2976 ; [*0C7C.0020.0002] # LESS-THAN ABOVE LEFTWARDS ARROW +2977 ; [*0C7D.0020.0002] # LEFTWARDS ARROW THROUGH LESS-THAN +2978 ; [*0C7E.0020.0002] # GREATER-THAN ABOVE RIGHTWARDS ARROW +2979 ; [*0C7F.0020.0002] # SUBSET ABOVE RIGHTWARDS ARROW +297A ; [*0C80.0020.0002] # LEFTWARDS ARROW THROUGH SUBSET +297B ; [*0C81.0020.0002] # SUPERSET ABOVE LEFTWARDS ARROW +297C ; [*0C82.0020.0002] # LEFT FISH TAIL +297D ; [*0C83.0020.0002] # RIGHT FISH TAIL +297E ; [*0C84.0020.0002] # UP FISH TAIL +297F ; [*0C85.0020.0002] # DOWN FISH TAIL +2980 ; [*0C86.0020.0002] # TRIPLE VERTICAL BAR DELIMITER +2981 ; [*0C87.0020.0002] # Z NOTATION SPOT +2982 ; [*0C88.0020.0002] # Z NOTATION TYPE COLON +2983 ; [*033C.0020.0002] # LEFT WHITE CURLY BRACKET +2984 ; [*033D.0020.0002] # RIGHT WHITE CURLY BRACKET +2985 ; [*033E.0020.0002] # LEFT WHITE PARENTHESIS +2986 ; [*033F.0020.0002] # RIGHT WHITE PARENTHESIS +2987 ; [*0340.0020.0002] # Z NOTATION LEFT IMAGE BRACKET +2988 ; [*0341.0020.0002] # Z NOTATION RIGHT IMAGE BRACKET +2989 ; [*0342.0020.0002] # Z NOTATION LEFT BINDING BRACKET +298A ; [*0343.0020.0002] # Z NOTATION RIGHT BINDING BRACKET +298B ; [*0344.0020.0002] # LEFT SQUARE BRACKET WITH UNDERBAR +298C ; [*0345.0020.0002] # RIGHT SQUARE BRACKET WITH UNDERBAR +298D ; [*0346.0020.0002] # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER +298E ; [*0347.0020.0002] # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER +298F ; [*0348.0020.0002] # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER +2990 ; [*0349.0020.0002] # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER +2991 ; [*034A.0020.0002] # LEFT ANGLE BRACKET WITH DOT +2992 ; [*034B.0020.0002] # RIGHT ANGLE BRACKET WITH DOT +2993 ; [*034C.0020.0002] # LEFT ARC LESS-THAN BRACKET +2994 ; [*034D.0020.0002] # RIGHT ARC GREATER-THAN BRACKET +2995 ; [*034E.0020.0002] # DOUBLE LEFT ARC GREATER-THAN BRACKET +2996 ; [*034F.0020.0002] # DOUBLE RIGHT ARC LESS-THAN BRACKET +2997 ; [*0350.0020.0002] # LEFT BLACK TORTOISE SHELL BRACKET +2998 ; [*0351.0020.0002] # RIGHT BLACK TORTOISE SHELL BRACKET +2999 ; [*0C89.0020.0002] # DOTTED FENCE +299A ; [*0C8A.0020.0002] # VERTICAL ZIGZAG LINE +299B ; [*0C8B.0020.0002] # MEASURED ANGLE OPENING LEFT +299C ; [*0C8C.0020.0002] # RIGHT ANGLE VARIANT WITH SQUARE +299D ; [*0C8D.0020.0002] # MEASURED RIGHT ANGLE WITH DOT +299E ; [*0C8E.0020.0002] # ANGLE WITH S INSIDE +299F ; [*0C8F.0020.0002] # ACUTE ANGLE +29A0 ; [*0C90.0020.0002] # SPHERICAL ANGLE OPENING LEFT +29A1 ; [*0C91.0020.0002] # SPHERICAL ANGLE OPENING UP +29A2 ; [*0C92.0020.0002] # TURNED ANGLE +29A3 ; [*0C93.0020.0002] # REVERSED ANGLE +29A4 ; [*0C94.0020.0002] # ANGLE WITH UNDERBAR +29A5 ; [*0C95.0020.0002] # REVERSED ANGLE WITH UNDERBAR +29A6 ; [*0C96.0020.0002] # OBLIQUE ANGLE OPENING UP +29A7 ; [*0C97.0020.0002] # OBLIQUE ANGLE OPENING DOWN +29A8 ; [*0C98.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT +29A9 ; [*0C99.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT +29AA ; [*0C9A.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT +29AB ; [*0C9B.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT +29AC ; [*0C9C.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP +29AD ; [*0C9D.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP +29AE ; [*0C9E.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN +29AF ; [*0C9F.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN +29B0 ; [*0CA0.0020.0002] # REVERSED EMPTY SET +29B1 ; [*0CA1.0020.0002] # EMPTY SET WITH OVERBAR +29B2 ; [*0CA2.0020.0002] # EMPTY SET WITH SMALL CIRCLE ABOVE +29B3 ; [*0CA3.0020.0002] # EMPTY SET WITH RIGHT ARROW ABOVE +29B4 ; [*0CA4.0020.0002] # EMPTY SET WITH LEFT ARROW ABOVE +29B5 ; [*0CA5.0020.0002] # CIRCLE WITH HORIZONTAL BAR +29B6 ; [*0CA6.0020.0002] # CIRCLED VERTICAL BAR +29B7 ; [*0CA7.0020.0002] # CIRCLED PARALLEL +29B8 ; [*0CA8.0020.0002] # CIRCLED REVERSE SOLIDUS +29B9 ; [*0CA9.0020.0002] # CIRCLED PERPENDICULAR +29BA ; [*0CAA.0020.0002] # CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR +29BB ; [*0CAB.0020.0002] # CIRCLE WITH SUPERIMPOSED X +29BC ; [*0CAC.0020.0002] # CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN +29BD ; [*0CAD.0020.0002] # UP ARROW THROUGH CIRCLE +29BE ; [*0CAE.0020.0002] # CIRCLED WHITE BULLET +29BF ; [*0CAF.0020.0002] # CIRCLED BULLET +29C0 ; [*0CB0.0020.0002] # CIRCLED LESS-THAN +29C1 ; [*0CB1.0020.0002] # CIRCLED GREATER-THAN +29C2 ; [*0CB2.0020.0002] # CIRCLE WITH SMALL CIRCLE TO THE RIGHT +29C3 ; [*0CB3.0020.0002] # CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT +29C4 ; [*0CB4.0020.0002] # SQUARED RISING DIAGONAL SLASH +29C5 ; [*0CB5.0020.0002] # SQUARED FALLING DIAGONAL SLASH +29C6 ; [*0CB6.0020.0002] # SQUARED ASTERISK +29C7 ; [*0CB7.0020.0002] # SQUARED SMALL CIRCLE +29C8 ; [*0CB8.0020.0002] # SQUARED SQUARE +29C9 ; [*0CB9.0020.0002] # TWO JOINED SQUARES +29CA ; [*0CBA.0020.0002] # TRIANGLE WITH DOT ABOVE +29CB ; [*0CBB.0020.0002] # TRIANGLE WITH UNDERBAR +29CC ; [*0CBC.0020.0002] # S IN TRIANGLE +29CD ; [*0CBD.0020.0002] # TRIANGLE WITH SERIFS AT BOTTOM +29CE ; [*0CBE.0020.0002] # RIGHT TRIANGLE ABOVE LEFT TRIANGLE +29CF ; [*0CBF.0020.0002] # LEFT TRIANGLE BESIDE VERTICAL BAR +29D0 ; [*0CC0.0020.0002] # VERTICAL BAR BESIDE RIGHT TRIANGLE +29D1 ; [*0CC1.0020.0002] # BOWTIE WITH LEFT HALF BLACK +29D2 ; [*0CC2.0020.0002] # BOWTIE WITH RIGHT HALF BLACK +29D3 ; [*0CC3.0020.0002] # BLACK BOWTIE +29D4 ; [*0CC4.0020.0002] # TIMES WITH LEFT HALF BLACK +29D5 ; [*0CC5.0020.0002] # TIMES WITH RIGHT HALF BLACK +29D6 ; [*0CC6.0020.0002] # WHITE HOURGLASS +29D7 ; [*0CC7.0020.0002] # BLACK HOURGLASS +29D8 ; [*0396.0020.0002] # LEFT WIGGLY FENCE +29D9 ; [*0397.0020.0002] # RIGHT WIGGLY FENCE +29DA ; [*0398.0020.0002] # LEFT DOUBLE WIGGLY FENCE +29DB ; [*0399.0020.0002] # RIGHT DOUBLE WIGGLY FENCE +29DC ; [*0CC8.0020.0002] # INCOMPLETE INFINITY +29DD ; [*0CC9.0020.0002] # TIE OVER INFINITY +29DE ; [*0CCA.0020.0002] # INFINITY NEGATED WITH VERTICAL BAR +29DF ; [*0CCB.0020.0002] # DOUBLE-ENDED MULTIMAP +29E0 ; [*0CCC.0020.0002] # SQUARE WITH CONTOURED OUTLINE +29E1 ; [*0CCD.0020.0002] # INCREASES AS +29E2 ; [*0CCE.0020.0002] # SHUFFLE PRODUCT +29E3 ; [*0CCF.0020.0002] # EQUALS SIGN AND SLANTED PARALLEL +29E4 ; [*0CD0.0020.0002] # EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE +29E5 ; [*0CD1.0020.0002] # IDENTICAL TO AND SLANTED PARALLEL +29E6 ; [*0CD2.0020.0002] # GLEICH STARK +29E7 ; [*0CD3.0020.0002] # THERMODYNAMIC +29E8 ; [*0CD4.0020.0002] # DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK +29E9 ; [*0CD5.0020.0002] # DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK +29EA ; [*0CD6.0020.0002] # BLACK DIAMOND WITH DOWN ARROW +29EB ; [*0CD7.0020.0002] # BLACK LOZENGE +29EC ; [*0CD8.0020.0002] # WHITE CIRCLE WITH DOWN ARROW +29ED ; [*0CD9.0020.0002] # BLACK CIRCLE WITH DOWN ARROW +29EE ; [*0CDA.0020.0002] # ERROR-BARRED WHITE SQUARE +29EF ; [*0CDB.0020.0002] # ERROR-BARRED BLACK SQUARE +29F0 ; [*0CDC.0020.0002] # ERROR-BARRED WHITE DIAMOND +29F1 ; [*0CDD.0020.0002] # ERROR-BARRED BLACK DIAMOND +29F2 ; [*0CDE.0020.0002] # ERROR-BARRED WHITE CIRCLE +29F3 ; [*0CDF.0020.0002] # ERROR-BARRED BLACK CIRCLE +29F4 ; [*0CE0.0020.0002] # RULE-DELAYED +29F5 ; [*0CE1.0020.0002] # REVERSE SOLIDUS OPERATOR +29F6 ; [*0CE2.0020.0002] # SOLIDUS WITH OVERBAR +29F7 ; [*0CE3.0020.0002] # REVERSE SOLIDUS WITH HORIZONTAL STROKE +29F8 ; [*0CE4.0020.0002] # BIG SOLIDUS +29F9 ; [*0CE5.0020.0002] # BIG REVERSE SOLIDUS +29FA ; [*0CE6.0020.0002] # DOUBLE PLUS +29FB ; [*0CE7.0020.0002] # TRIPLE PLUS +29FC ; [*033A.0020.0002] # LEFT-POINTING CURVED ANGLE BRACKET +29FD ; [*033B.0020.0002] # RIGHT-POINTING CURVED ANGLE BRACKET +29FE ; [*0CE8.0020.0002] # TINY +29FF ; [*0CE9.0020.0002] # MINY +2A00 ; [*0CEA.0020.0002] # N-ARY CIRCLED DOT OPERATOR +2A01 ; [*0CEB.0020.0002] # N-ARY CIRCLED PLUS OPERATOR +2A02 ; [*0CEC.0020.0002] # N-ARY CIRCLED TIMES OPERATOR +2A03 ; [*0CED.0020.0002] # N-ARY UNION OPERATOR WITH DOT +2A04 ; [*0CEE.0020.0002] # N-ARY UNION OPERATOR WITH PLUS +2A05 ; [*0CEF.0020.0002] # N-ARY SQUARE INTERSECTION OPERATOR +2A06 ; [*0CF0.0020.0002] # N-ARY SQUARE UNION OPERATOR +2A07 ; [*0CF1.0020.0002] # TWO LOGICAL AND OPERATOR +2A08 ; [*0CF2.0020.0002] # TWO LOGICAL OR OPERATOR +2A09 ; [*0CF3.0020.0002] # N-ARY TIMES OPERATOR +2A0A ; [*0CF4.0020.0002] # MODULO TWO SUM +2A0B ; [*0CF5.0020.0002] # SUMMATION WITH INTEGRAL +2A0C ; [*068C.0020.0004][*068C.0020.0004][*068C.0020.0004][*068C.0020.0004] # QUADRUPLE INTEGRAL OPERATOR +2A0D ; [*0CF6.0020.0002] # FINITE PART INTEGRAL +2A0E ; [*0CF7.0020.0002] # INTEGRAL WITH DOUBLE STROKE +2A0F ; [*0CF8.0020.0002] # INTEGRAL AVERAGE WITH SLASH +2A10 ; [*0CF9.0020.0002] # CIRCULATION FUNCTION +2A11 ; [*0CFA.0020.0002] # ANTICLOCKWISE INTEGRATION +2A12 ; [*0CFB.0020.0002] # LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE +2A13 ; [*0CFC.0020.0002] # LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE +2A14 ; [*0CFD.0020.0002] # LINE INTEGRATION NOT INCLUDING THE POLE +2A15 ; [*0CFE.0020.0002] # INTEGRAL AROUND A POINT OPERATOR +2A16 ; [*0CFF.0020.0002] # QUATERNION INTEGRAL OPERATOR +2A17 ; [*0D00.0020.0002] # INTEGRAL WITH LEFTWARDS ARROW WITH HOOK +2A18 ; [*0D01.0020.0002] # INTEGRAL WITH TIMES SIGN +2A19 ; [*0D02.0020.0002] # INTEGRAL WITH INTERSECTION +2A1A ; [*0D03.0020.0002] # INTEGRAL WITH UNION +2A1B ; [*0D04.0020.0002] # INTEGRAL WITH OVERBAR +2A1C ; [*0D05.0020.0002] # INTEGRAL WITH UNDERBAR +2A1D ; [*0D06.0020.0002] # JOIN +2A1E ; [*0D07.0020.0002] # LARGE LEFT TRIANGLE OPERATOR +2A1F ; [*0D08.0020.0002] # Z NOTATION SCHEMA COMPOSITION +2A20 ; [*0D09.0020.0002] # Z NOTATION SCHEMA PIPING +2A21 ; [*0D0A.0020.0002] # Z NOTATION SCHEMA PROJECTION +2A22 ; [*0D0B.0020.0002] # PLUS SIGN WITH SMALL CIRCLE ABOVE +2A23 ; [*0D0C.0020.0002] # PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE +2A24 ; [*0D0D.0020.0002] # PLUS SIGN WITH TILDE ABOVE +2A25 ; [*0D0E.0020.0002] # PLUS SIGN WITH DOT BELOW +2A26 ; [*0D0F.0020.0002] # PLUS SIGN WITH TILDE BELOW +2A27 ; [*0D10.0020.0002] # PLUS SIGN WITH SUBSCRIPT TWO +2A28 ; [*0D11.0020.0002] # PLUS SIGN WITH BLACK TRIANGLE +2A29 ; [*0D12.0020.0002] # MINUS SIGN WITH COMMA ABOVE +2A2A ; [*0D13.0020.0002] # MINUS SIGN WITH DOT BELOW +2A2B ; [*0D14.0020.0002] # MINUS SIGN WITH FALLING DOTS +2A2C ; [*0D15.0020.0002] # MINUS SIGN WITH RISING DOTS +2A2D ; [*0D16.0020.0002] # PLUS SIGN IN LEFT HALF CIRCLE +2A2E ; [*0D17.0020.0002] # PLUS SIGN IN RIGHT HALF CIRCLE +2A2F ; [*0D18.0020.0002] # VECTOR OR CROSS PRODUCT +2A30 ; [*0D19.0020.0002] # MULTIPLICATION SIGN WITH DOT ABOVE +2A31 ; [*0D1A.0020.0002] # MULTIPLICATION SIGN WITH UNDERBAR +2A32 ; [*0D1B.0020.0002] # SEMIDIRECT PRODUCT WITH BOTTOM CLOSED +2A33 ; [*0D1C.0020.0002] # SMASH PRODUCT +2A34 ; [*0D1D.0020.0002] # MULTIPLICATION SIGN IN LEFT HALF CIRCLE +2A35 ; [*0D1E.0020.0002] # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE +2A36 ; [*0D1F.0020.0002] # CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT +2A37 ; [*0D20.0020.0002] # MULTIPLICATION SIGN IN DOUBLE CIRCLE +2A38 ; [*0D21.0020.0002] # CIRCLED DIVISION SIGN +2A39 ; [*0D22.0020.0002] # PLUS SIGN IN TRIANGLE +2A3A ; [*0D23.0020.0002] # MINUS SIGN IN TRIANGLE +2A3B ; [*0D24.0020.0002] # MULTIPLICATION SIGN IN TRIANGLE +2A3C ; [*0D25.0020.0002] # INTERIOR PRODUCT +2A3D ; [*0D26.0020.0002] # RIGHTHAND INTERIOR PRODUCT +2A3E ; [*0D27.0020.0002] # Z NOTATION RELATIONAL COMPOSITION +2A3F ; [*0D28.0020.0002] # AMALGAMATION OR COPRODUCT +2A40 ; [*0D29.0020.0002] # INTERSECTION WITH DOT +2A41 ; [*0D2A.0020.0002] # UNION WITH MINUS SIGN +2A42 ; [*0D2B.0020.0002] # UNION WITH OVERBAR +2A43 ; [*0D2C.0020.0002] # INTERSECTION WITH OVERBAR +2A44 ; [*0D2D.0020.0002] # INTERSECTION WITH LOGICAL AND +2A45 ; [*0D2E.0020.0002] # UNION WITH LOGICAL OR +2A46 ; [*0D2F.0020.0002] # UNION ABOVE INTERSECTION +2A47 ; [*0D30.0020.0002] # INTERSECTION ABOVE UNION +2A48 ; [*0D31.0020.0002] # UNION ABOVE BAR ABOVE INTERSECTION +2A49 ; [*0D32.0020.0002] # INTERSECTION ABOVE BAR ABOVE UNION +2A4A ; [*0D33.0020.0002] # UNION BESIDE AND JOINED WITH UNION +2A4B ; [*0D34.0020.0002] # INTERSECTION BESIDE AND JOINED WITH INTERSECTION +2A4C ; [*0D35.0020.0002] # CLOSED UNION WITH SERIFS +2A4D ; [*0D36.0020.0002] # CLOSED INTERSECTION WITH SERIFS +2A4E ; [*0D37.0020.0002] # DOUBLE SQUARE INTERSECTION +2A4F ; [*0D38.0020.0002] # DOUBLE SQUARE UNION +2A50 ; [*0D39.0020.0002] # CLOSED UNION WITH SERIFS AND SMASH PRODUCT +2A51 ; [*0D3A.0020.0002] # LOGICAL AND WITH DOT ABOVE +2A52 ; [*0D3B.0020.0002] # LOGICAL OR WITH DOT ABOVE +2A53 ; [*0D3C.0020.0002] # DOUBLE LOGICAL AND +2A54 ; [*0D3D.0020.0002] # DOUBLE LOGICAL OR +2A55 ; [*0D3E.0020.0002] # TWO INTERSECTING LOGICAL AND +2A56 ; [*0D3F.0020.0002] # TWO INTERSECTING LOGICAL OR +2A57 ; [*0D40.0020.0002] # SLOPING LARGE OR +2A58 ; [*0D41.0020.0002] # SLOPING LARGE AND +2A59 ; [*0D42.0020.0002] # LOGICAL OR OVERLAPPING LOGICAL AND +2A5A ; [*0D43.0020.0002] # LOGICAL AND WITH MIDDLE STEM +2A5B ; [*0D44.0020.0002] # LOGICAL OR WITH MIDDLE STEM +2A5C ; [*0D45.0020.0002] # LOGICAL AND WITH HORIZONTAL DASH +2A5D ; [*0D46.0020.0002] # LOGICAL OR WITH HORIZONTAL DASH +2A5E ; [*0D47.0020.0002] # LOGICAL AND WITH DOUBLE OVERBAR +2A5F ; [*0D48.0020.0002] # LOGICAL AND WITH UNDERBAR +2A60 ; [*0D49.0020.0002] # LOGICAL AND WITH DOUBLE UNDERBAR +2A61 ; [*0D4A.0020.0002] # SMALL VEE WITH UNDERBAR +2A62 ; [*0D4B.0020.0002] # LOGICAL OR WITH DOUBLE OVERBAR +2A63 ; [*0D4C.0020.0002] # LOGICAL OR WITH DOUBLE UNDERBAR +2A64 ; [*0D4D.0020.0002] # Z NOTATION DOMAIN ANTIRESTRICTION +2A65 ; [*0D4E.0020.0002] # Z NOTATION RANGE ANTIRESTRICTION +2A66 ; [*0D4F.0020.0002] # EQUALS SIGN WITH DOT BELOW +2A67 ; [*0D50.0020.0002] # IDENTICAL WITH DOT ABOVE +2A68 ; [*0D51.0020.0002] # TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE +2A69 ; [*0D52.0020.0002] # TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE +2A6A ; [*0D53.0020.0002] # TILDE OPERATOR WITH DOT ABOVE +2A6B ; [*0D54.0020.0002] # TILDE OPERATOR WITH RISING DOTS +2A6C ; [*0D55.0020.0002] # SIMILAR MINUS SIMILAR +2A6D ; [*0D56.0020.0002] # CONGRUENT WITH DOT ABOVE +2A6E ; [*0D57.0020.0002] # EQUALS WITH ASTERISK +2A6F ; [*0D58.0020.0002] # ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT +2A70 ; [*0D59.0020.0002] # APPROXIMATELY EQUAL OR EQUAL TO +2A71 ; [*0D5A.0020.0002] # EQUALS SIGN ABOVE PLUS SIGN +2A72 ; [*0D5B.0020.0002] # PLUS SIGN ABOVE EQUALS SIGN +2A73 ; [*0D5C.0020.0002] # EQUALS SIGN ABOVE TILDE OPERATOR +2A74 ; [*0240.0020.0004][*0240.0020.0004][*066B.0020.0004] # DOUBLE COLON EQUAL +2A75 ; [*066B.0020.0004][*066B.0020.0004] # TWO CONSECUTIVE EQUALS SIGNS +2A76 ; [*066B.0020.0004][*066B.0020.0004][*066B.0020.0004] # THREE CONSECUTIVE EQUALS SIGNS +2A77 ; [*0D5D.0020.0002] # EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW +2A78 ; [*0D5E.0020.0002] # EQUIVALENT WITH FOUR DOTS ABOVE +2A79 ; [*0D5F.0020.0002] # LESS-THAN WITH CIRCLE INSIDE +2A7A ; [*0D60.0020.0002] # GREATER-THAN WITH CIRCLE INSIDE +2A7B ; [*0D61.0020.0002] # LESS-THAN WITH QUESTION MARK ABOVE +2A7C ; [*0D62.0020.0002] # GREATER-THAN WITH QUESTION MARK ABOVE +2A7D ; [*0D63.0020.0002] # LESS-THAN OR SLANTED EQUAL TO +2A7E ; [*0D64.0020.0002] # GREATER-THAN OR SLANTED EQUAL TO +2A7F ; [*0D65.0020.0002] # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE +2A80 ; [*0D66.0020.0002] # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE +2A81 ; [*0D67.0020.0002] # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE +2A82 ; [*0D68.0020.0002] # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE +2A83 ; [*0D69.0020.0002] # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT +2A84 ; [*0D6A.0020.0002] # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT +2A85 ; [*0D6B.0020.0002] # LESS-THAN OR APPROXIMATE +2A86 ; [*0D6C.0020.0002] # GREATER-THAN OR APPROXIMATE +2A87 ; [*0D6D.0020.0002] # LESS-THAN AND SINGLE-LINE NOT EQUAL TO +2A88 ; [*0D6E.0020.0002] # GREATER-THAN AND SINGLE-LINE NOT EQUAL TO +2A89 ; [*0D6F.0020.0002] # LESS-THAN AND NOT APPROXIMATE +2A8A ; [*0D70.0020.0002] # GREATER-THAN AND NOT APPROXIMATE +2A8B ; [*0D71.0020.0002] # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN +2A8C ; [*0D72.0020.0002] # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN +2A8D ; [*0D73.0020.0002] # LESS-THAN ABOVE SIMILAR OR EQUAL +2A8E ; [*0D74.0020.0002] # GREATER-THAN ABOVE SIMILAR OR EQUAL +2A8F ; [*0D75.0020.0002] # LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN +2A90 ; [*0D76.0020.0002] # GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN +2A91 ; [*0D77.0020.0002] # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL +2A92 ; [*0D78.0020.0002] # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL +2A93 ; [*0D79.0020.0002] # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL +2A94 ; [*0D7A.0020.0002] # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL +2A95 ; [*0D7B.0020.0002] # SLANTED EQUAL TO OR LESS-THAN +2A96 ; [*0D7C.0020.0002] # SLANTED EQUAL TO OR GREATER-THAN +2A97 ; [*0D7D.0020.0002] # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE +2A98 ; [*0D7E.0020.0002] # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE +2A99 ; [*0D7F.0020.0002] # DOUBLE-LINE EQUAL TO OR LESS-THAN +2A9A ; [*0D80.0020.0002] # DOUBLE-LINE EQUAL TO OR GREATER-THAN +2A9B ; [*0D81.0020.0002] # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN +2A9C ; [*0D82.0020.0002] # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN +2A9D ; [*0D83.0020.0002] # SIMILAR OR LESS-THAN +2A9E ; [*0D84.0020.0002] # SIMILAR OR GREATER-THAN +2A9F ; [*0D85.0020.0002] # SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN +2AA0 ; [*0D86.0020.0002] # SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN +2AA1 ; [*0D87.0020.0002] # DOUBLE NESTED LESS-THAN +2AA2 ; [*0D88.0020.0002] # DOUBLE NESTED GREATER-THAN +2AA3 ; [*0D89.0020.0002] # DOUBLE NESTED LESS-THAN WITH UNDERBAR +2AA4 ; [*0D8A.0020.0002] # GREATER-THAN OVERLAPPING LESS-THAN +2AA5 ; [*0D8B.0020.0002] # GREATER-THAN BESIDE LESS-THAN +2AA6 ; [*0D8C.0020.0002] # LESS-THAN CLOSED BY CURVE +2AA7 ; [*0D8D.0020.0002] # GREATER-THAN CLOSED BY CURVE +2AA8 ; [*0D8E.0020.0002] # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL +2AA9 ; [*0D8F.0020.0002] # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL +2AAA ; [*0D90.0020.0002] # SMALLER THAN +2AAB ; [*0D91.0020.0002] # LARGER THAN +2AAC ; [*0D92.0020.0002] # SMALLER THAN OR EQUAL TO +2AAD ; [*0D93.0020.0002] # LARGER THAN OR EQUAL TO +2AAE ; [*0D94.0020.0002] # EQUALS SIGN WITH BUMPY ABOVE +2AAF ; [*0D95.0020.0002] # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN +2AB0 ; [*0D96.0020.0002] # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN +2AB1 ; [*0D97.0020.0002] # PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO +2AB2 ; [*0D98.0020.0002] # SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO +2AB3 ; [*0D99.0020.0002] # PRECEDES ABOVE EQUALS SIGN +2AB4 ; [*0D9A.0020.0002] # SUCCEEDS ABOVE EQUALS SIGN +2AB5 ; [*0D9B.0020.0002] # PRECEDES ABOVE NOT EQUAL TO +2AB6 ; [*0D9C.0020.0002] # SUCCEEDS ABOVE NOT EQUAL TO +2AB7 ; [*0D9D.0020.0002] # PRECEDES ABOVE ALMOST EQUAL TO +2AB8 ; [*0D9E.0020.0002] # SUCCEEDS ABOVE ALMOST EQUAL TO +2AB9 ; [*0D9F.0020.0002] # PRECEDES ABOVE NOT ALMOST EQUAL TO +2ABA ; [*0DA0.0020.0002] # SUCCEEDS ABOVE NOT ALMOST EQUAL TO +2ABB ; [*0DA1.0020.0002] # DOUBLE PRECEDES +2ABC ; [*0DA2.0020.0002] # DOUBLE SUCCEEDS +2ABD ; [*0DA3.0020.0002] # SUBSET WITH DOT +2ABE ; [*0DA4.0020.0002] # SUPERSET WITH DOT +2ABF ; [*0DA5.0020.0002] # SUBSET WITH PLUS SIGN BELOW +2AC0 ; [*0DA6.0020.0002] # SUPERSET WITH PLUS SIGN BELOW +2AC1 ; [*0DA7.0020.0002] # SUBSET WITH MULTIPLICATION SIGN BELOW +2AC2 ; [*0DA8.0020.0002] # SUPERSET WITH MULTIPLICATION SIGN BELOW +2AC3 ; [*0DA9.0020.0002] # SUBSET OF OR EQUAL TO WITH DOT ABOVE +2AC4 ; [*0DAA.0020.0002] # SUPERSET OF OR EQUAL TO WITH DOT ABOVE +2AC5 ; [*0DAB.0020.0002] # SUBSET OF ABOVE EQUALS SIGN +2AC6 ; [*0DAC.0020.0002] # SUPERSET OF ABOVE EQUALS SIGN +2AC7 ; [*0DAD.0020.0002] # SUBSET OF ABOVE TILDE OPERATOR +2AC8 ; [*0DAE.0020.0002] # SUPERSET OF ABOVE TILDE OPERATOR +2AC9 ; [*0DAF.0020.0002] # SUBSET OF ABOVE ALMOST EQUAL TO +2ACA ; [*0DB0.0020.0002] # SUPERSET OF ABOVE ALMOST EQUAL TO +2ACB ; [*0DB1.0020.0002] # SUBSET OF ABOVE NOT EQUAL TO +2ACC ; [*0DB2.0020.0002] # SUPERSET OF ABOVE NOT EQUAL TO +2ACD ; [*0DB3.0020.0002] # SQUARE LEFT OPEN BOX OPERATOR +2ACE ; [*0DB4.0020.0002] # SQUARE RIGHT OPEN BOX OPERATOR +2ACF ; [*0DB5.0020.0002] # CLOSED SUBSET +2AD0 ; [*0DB6.0020.0002] # CLOSED SUPERSET +2AD1 ; [*0DB7.0020.0002] # CLOSED SUBSET OR EQUAL TO +2AD2 ; [*0DB8.0020.0002] # CLOSED SUPERSET OR EQUAL TO +2AD3 ; [*0DB9.0020.0002] # SUBSET ABOVE SUPERSET +2AD4 ; [*0DBA.0020.0002] # SUPERSET ABOVE SUBSET +2AD5 ; [*0DBB.0020.0002] # SUBSET ABOVE SUBSET +2AD6 ; [*0DBC.0020.0002] # SUPERSET ABOVE SUPERSET +2AD7 ; [*0DBD.0020.0002] # SUPERSET BESIDE SUBSET +2AD8 ; [*0DBE.0020.0002] # SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET +2AD9 ; [*0DBF.0020.0002] # ELEMENT OF OPENING DOWNWARDS +2ADA ; [*0DC0.0020.0002] # PITCHFORK WITH TEE TOP +2ADB ; [*0DC1.0020.0002] # TRANSVERSAL INTERSECTION +2ADC ; [*0DC2.0020.0002][.0000.002F.0002] # FORKING +2ADD ; [*0DC2.0020.0002] # NONFORKING +2ADE ; [*0DC3.0020.0002] # SHORT LEFT TACK +2ADF ; [*0DC4.0020.0002] # SHORT DOWN TACK +2AE0 ; [*0DC5.0020.0002] # SHORT UP TACK +2AE1 ; [*0DC6.0020.0002] # PERPENDICULAR WITH S +2AE2 ; [*0DC7.0020.0002] # VERTICAL BAR TRIPLE RIGHT TURNSTILE +2AE3 ; [*0DC8.0020.0002] # DOUBLE VERTICAL BAR LEFT TURNSTILE +2AE4 ; [*0DC9.0020.0002] # VERTICAL BAR DOUBLE LEFT TURNSTILE +2AE5 ; [*0DCA.0020.0002] # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE +2AE6 ; [*0DCB.0020.0002] # LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL +2AE7 ; [*0DCC.0020.0002] # SHORT DOWN TACK WITH OVERBAR +2AE8 ; [*0DCD.0020.0002] # SHORT UP TACK WITH UNDERBAR +2AE9 ; [*0DCE.0020.0002] # SHORT UP TACK ABOVE SHORT DOWN TACK +2AEA ; [*0DCF.0020.0002] # DOUBLE DOWN TACK +2AEB ; [*0DD0.0020.0002] # DOUBLE UP TACK +2AEC ; [*0DD1.0020.0002] # DOUBLE STROKE NOT SIGN +2AED ; [*0DD2.0020.0002] # REVERSED DOUBLE STROKE NOT SIGN +2AEE ; [*0DD3.0020.0002] # DOES NOT DIVIDE WITH REVERSED NEGATION SLASH +2AEF ; [*0DD4.0020.0002] # VERTICAL LINE WITH CIRCLE ABOVE +2AF0 ; [*0DD5.0020.0002] # VERTICAL LINE WITH CIRCLE BELOW +2AF1 ; [*0DD6.0020.0002] # DOWN TACK WITH CIRCLE BELOW +2AF2 ; [*0DD7.0020.0002] # PARALLEL WITH HORIZONTAL STROKE +2AF3 ; [*0DD8.0020.0002] # PARALLEL WITH TILDE OPERATOR +2AF4 ; [*0DD9.0020.0002] # TRIPLE VERTICAL BAR BINARY RELATION +2AF5 ; [*0DDA.0020.0002] # TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE +2AF6 ; [*0DDB.0020.0002] # TRIPLE COLON OPERATOR +2AF7 ; [*0DDC.0020.0002] # TRIPLE NESTED LESS-THAN +2AF8 ; [*0DDD.0020.0002] # TRIPLE NESTED GREATER-THAN +2AF9 ; [*0DDE.0020.0002] # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO +2AFA ; [*0DDF.0020.0002] # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO +2AFB ; [*0DE0.0020.0002] # TRIPLE SOLIDUS BINARY RELATION +2AFC ; [*0DE1.0020.0002] # LARGE TRIPLE VERTICAL BAR OPERATOR +2AFD ; [*0DE2.0020.0002] # DOUBLE SOLIDUS OPERATOR +2AFE ; [*0DE3.0020.0002] # WHITE VERTICAL BAR +2AFF ; [*0DE4.0020.0002] # N-ARY WHITE VERTICAL BAR +2B00 ; [*0DE5.0020.0002] # NORTH EAST WHITE ARROW +2B01 ; [*0DE6.0020.0002] # NORTH WEST WHITE ARROW +2B02 ; [*0DE7.0020.0002] # SOUTH EAST WHITE ARROW +2B03 ; [*0DE8.0020.0002] # SOUTH WEST WHITE ARROW +2B04 ; [*0DE9.0020.0002] # LEFT RIGHT WHITE ARROW +2B05 ; [*0DEA.0020.0002] # LEFTWARDS BLACK ARROW +2B06 ; [*0DEB.0020.0002] # UPWARDS BLACK ARROW +2B07 ; [*0DEC.0020.0002] # DOWNWARDS BLACK ARROW +2B08 ; [*0DED.0020.0002] # NORTH EAST BLACK ARROW +2B09 ; [*0DEE.0020.0002] # NORTH WEST BLACK ARROW +2B0A ; [*0DEF.0020.0002] # SOUTH EAST BLACK ARROW +2B0B ; [*0DF0.0020.0002] # SOUTH WEST BLACK ARROW +2B0C ; [*0DF1.0020.0002] # LEFT RIGHT BLACK ARROW +2B0D ; [*0DF2.0020.0002] # UP DOWN BLACK ARROW +2B0E ; [*0DF3.0020.0002] # RIGHTWARDS ARROW WITH TIP DOWNWARDS +2B0F ; [*0DF4.0020.0002] # RIGHTWARDS ARROW WITH TIP UPWARDS +2B10 ; [*0DF5.0020.0002] # LEFTWARDS ARROW WITH TIP DOWNWARDS +2B11 ; [*0DF6.0020.0002] # LEFTWARDS ARROW WITH TIP UPWARDS +2B12 ; [*0DF7.0020.0002] # SQUARE WITH TOP HALF BLACK +2B13 ; [*0DF8.0020.0002] # SQUARE WITH BOTTOM HALF BLACK +2B14 ; [*0DF9.0020.0002] # SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK +2B15 ; [*0DFA.0020.0002] # SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK +2B16 ; [*0DFB.0020.0002] # DIAMOND WITH LEFT HALF BLACK +2B17 ; [*0DFC.0020.0002] # DIAMOND WITH RIGHT HALF BLACK +2B18 ; [*0DFD.0020.0002] # DIAMOND WITH TOP HALF BLACK +2B19 ; [*0DFE.0020.0002] # DIAMOND WITH BOTTOM HALF BLACK +2B1A ; [*0DFF.0020.0002] # DOTTED SQUARE +2B1B ; [*0E00.0020.0002] # BLACK LARGE SQUARE +2B1C ; [*0E01.0020.0002] # WHITE LARGE SQUARE +2B1D ; [*0E02.0020.0002] # BLACK VERY SMALL SQUARE +2B1E ; [*0E03.0020.0002] # WHITE VERY SMALL SQUARE +2B1F ; [*0E04.0020.0002] # BLACK PENTAGON +2B20 ; [*0E05.0020.0002] # WHITE PENTAGON +2B21 ; [*0E06.0020.0002] # WHITE HEXAGON +2B22 ; [*0E07.0020.0002] # BLACK HEXAGON +2B23 ; [*0E08.0020.0002] # HORIZONTAL BLACK HEXAGON +2B24 ; [*0E09.0020.0002] # BLACK LARGE CIRCLE +2B25 ; [*0E0A.0020.0002] # BLACK MEDIUM DIAMOND +2B26 ; [*0E0B.0020.0002] # WHITE MEDIUM DIAMOND +2B27 ; [*0E0C.0020.0002] # BLACK MEDIUM LOZENGE +2B28 ; [*0E0D.0020.0002] # WHITE MEDIUM LOZENGE +2B29 ; [*0E0E.0020.0002] # BLACK SMALL DIAMOND +2B2A ; [*0E0F.0020.0002] # BLACK SMALL LOZENGE +2B2B ; [*0E10.0020.0002] # WHITE SMALL LOZENGE +2B2C ; [*0E11.0020.0002] # BLACK HORIZONTAL ELLIPSE +2B2D ; [*0E12.0020.0002] # WHITE HORIZONTAL ELLIPSE +2B2E ; [*0E13.0020.0002] # BLACK VERTICAL ELLIPSE +2B2F ; [*0E14.0020.0002] # WHITE VERTICAL ELLIPSE +2B30 ; [*0E15.0020.0002] # LEFT ARROW WITH SMALL CIRCLE +2B31 ; [*0E16.0020.0002] # THREE LEFTWARDS ARROWS +2B32 ; [*0E17.0020.0002] # LEFT ARROW WITH CIRCLED PLUS +2B33 ; [*0E18.0020.0002] # LONG LEFTWARDS SQUIGGLE ARROW +2B34 ; [*0E19.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE +2B35 ; [*0E1A.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE +2B36 ; [*0E1B.0020.0002] # LEFTWARDS TWO-HEADED ARROW FROM BAR +2B37 ; [*0E1C.0020.0002] # LEFTWARDS TWO-HEADED TRIPLE DASH ARROW +2B38 ; [*0E1D.0020.0002] # LEFTWARDS ARROW WITH DOTTED STEM +2B39 ; [*0E1E.0020.0002] # LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE +2B3A ; [*0E1F.0020.0002] # LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE +2B3B ; [*0E20.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH TAIL +2B3C ; [*0E21.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE +2B3D ; [*0E22.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE +2B3E ; [*0E23.0020.0002] # LEFTWARDS ARROW THROUGH X +2B3F ; [*0E24.0020.0002] # WAVE ARROW POINTING DIRECTLY LEFT +2B40 ; [*0E25.0020.0002] # EQUALS SIGN ABOVE LEFTWARDS ARROW +2B41 ; [*0E26.0020.0002] # REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW +2B42 ; [*0E27.0020.0002] # LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO +2B43 ; [*0E28.0020.0002] # RIGHTWARDS ARROW THROUGH GREATER-THAN +2B44 ; [*0E29.0020.0002] # RIGHTWARDS ARROW THROUGH SUPERSET +2B45 ; [*0E2A.0020.0002] # LEFTWARDS QUADRUPLE ARROW +2B46 ; [*0E2B.0020.0002] # RIGHTWARDS QUADRUPLE ARROW +2B47 ; [*0E2C.0020.0002] # REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW +2B48 ; [*0E2D.0020.0002] # RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO +2B49 ; [*0E2E.0020.0002] # TILDE OPERATOR ABOVE LEFTWARDS ARROW +2B4A ; [*0E2F.0020.0002] # LEFTWARDS ARROW ABOVE ALMOST EQUAL TO +2B4B ; [*0E30.0020.0002] # LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR +2B4C ; [*0E31.0020.0002] # RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR +2B4D ; [*0E32.0020.0002] # DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW +2B4E ; [*0E33.0020.0002] # SHORT SLANTED NORTH ARROW +2B4F ; [*0E34.0020.0002] # SHORT BACKSLANTED SOUTH ARROW +2B50 ; [*0E35.0020.0002] # WHITE MEDIUM STAR +2B51 ; [*0E36.0020.0002] # BLACK SMALL STAR +2B52 ; [*0E37.0020.0002] # WHITE SMALL STAR +2B53 ; [*0E38.0020.0002] # BLACK RIGHT-POINTING PENTAGON +2B54 ; [*0E39.0020.0002] # WHITE RIGHT-POINTING PENTAGON +2B55 ; [*0E3A.0020.0002] # HEAVY LARGE CIRCLE +2B56 ; [*0E3B.0020.0002] # HEAVY OVAL WITH OVAL INSIDE +2B57 ; [*0E3C.0020.0002] # HEAVY CIRCLE WITH CIRCLE INSIDE +2B58 ; [*0E3D.0020.0002] # HEAVY CIRCLE +2B59 ; [*0E3E.0020.0002] # HEAVY CIRCLED SALTIRE +2B5A ; [*0E3F.0020.0002] # SLANTED NORTH ARROW WITH HOOKED HEAD +2B5B ; [*0E40.0020.0002] # BACKSLANTED SOUTH ARROW WITH HOOKED TAIL +2B5C ; [*0E41.0020.0002] # SLANTED NORTH ARROW WITH HORIZONTAL TAIL +2B5D ; [*0E42.0020.0002] # BACKSLANTED SOUTH ARROW WITH HORIZONTAL TAIL +2B5E ; [*0E43.0020.0002] # BENT ARROW POINTING DOWNWARDS THEN NORTH EAST +2B5F ; [*0E44.0020.0002] # SHORT BENT ARROW POINTING DOWNWARDS THEN NORTH EAST +2B60 ; [*0E45.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW +2B61 ; [*0E46.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW +2B62 ; [*0E47.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW +2B63 ; [*0E48.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW +2B64 ; [*0E49.0020.0002] # LEFT RIGHT TRIANGLE-HEADED ARROW +2B65 ; [*0E4A.0020.0002] # UP DOWN TRIANGLE-HEADED ARROW +2B66 ; [*0E4B.0020.0002] # NORTH WEST TRIANGLE-HEADED ARROW +2B67 ; [*0E4C.0020.0002] # NORTH EAST TRIANGLE-HEADED ARROW +2B68 ; [*0E4D.0020.0002] # SOUTH EAST TRIANGLE-HEADED ARROW +2B69 ; [*0E4E.0020.0002] # SOUTH WEST TRIANGLE-HEADED ARROW +2B6A ; [*0E4F.0020.0002] # LEFTWARDS TRIANGLE-HEADED DASHED ARROW +2B6B ; [*0E50.0020.0002] # UPWARDS TRIANGLE-HEADED DASHED ARROW +2B6C ; [*0E51.0020.0002] # RIGHTWARDS TRIANGLE-HEADED DASHED ARROW +2B6D ; [*0E52.0020.0002] # DOWNWARDS TRIANGLE-HEADED DASHED ARROW +2B6E ; [*0E53.0020.0002] # CLOCKWISE TRIANGLE-HEADED OPEN CIRCLE ARROW +2B6F ; [*0E54.0020.0002] # ANTICLOCKWISE TRIANGLE-HEADED OPEN CIRCLE ARROW +2B70 ; [*0E55.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW TO BAR +2B71 ; [*0E56.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW TO BAR +2B72 ; [*0E57.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW TO BAR +2B73 ; [*0E58.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW TO BAR +2B76 ; [*0E59.0020.0002] # NORTH WEST TRIANGLE-HEADED ARROW TO BAR +2B77 ; [*0E5A.0020.0002] # NORTH EAST TRIANGLE-HEADED ARROW TO BAR +2B78 ; [*0E5B.0020.0002] # SOUTH EAST TRIANGLE-HEADED ARROW TO BAR +2B79 ; [*0E5C.0020.0002] # SOUTH WEST TRIANGLE-HEADED ARROW TO BAR +2B7A ; [*0E5D.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE +2B7B ; [*0E5E.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE +2B7C ; [*0E5F.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE +2B7D ; [*0E60.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE +2B7E ; [*0E61.0020.0002] # HORIZONTAL TAB KEY +2B7F ; [*0E62.0020.0002] # VERTICAL TAB KEY +2B80 ; [*0E63.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW OVER RIGHTWARDS TRIANGLE-HEADED ARROW +2B81 ; [*0E64.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW LEFTWARDS OF DOWNWARDS TRIANGLE-HEADED ARROW +2B82 ; [*0E65.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW OVER LEFTWARDS TRIANGLE-HEADED ARROW +2B83 ; [*0E66.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW LEFTWARDS OF UPWARDS TRIANGLE-HEADED ARROW +2B84 ; [*0E67.0020.0002] # LEFTWARDS TRIANGLE-HEADED PAIRED ARROWS +2B85 ; [*0E68.0020.0002] # UPWARDS TRIANGLE-HEADED PAIRED ARROWS +2B86 ; [*0E69.0020.0002] # RIGHTWARDS TRIANGLE-HEADED PAIRED ARROWS +2B87 ; [*0E6A.0020.0002] # DOWNWARDS TRIANGLE-HEADED PAIRED ARROWS +2B88 ; [*0E6B.0020.0002] # LEFTWARDS BLACK CIRCLED WHITE ARROW +2B89 ; [*0E6C.0020.0002] # UPWARDS BLACK CIRCLED WHITE ARROW +2B8A ; [*0E6D.0020.0002] # RIGHTWARDS BLACK CIRCLED WHITE ARROW +2B8B ; [*0E6E.0020.0002] # DOWNWARDS BLACK CIRCLED WHITE ARROW +2B8C ; [*0E6F.0020.0002] # ANTICLOCKWISE TRIANGLE-HEADED RIGHT U-SHAPED ARROW +2B8D ; [*0E70.0020.0002] # ANTICLOCKWISE TRIANGLE-HEADED BOTTOM U-SHAPED ARROW +2B8E ; [*0E71.0020.0002] # ANTICLOCKWISE TRIANGLE-HEADED LEFT U-SHAPED ARROW +2B8F ; [*0E72.0020.0002] # ANTICLOCKWISE TRIANGLE-HEADED TOP U-SHAPED ARROW +2B90 ; [*0E73.0020.0002] # RETURN LEFT +2B91 ; [*0E74.0020.0002] # RETURN RIGHT +2B92 ; [*0E75.0020.0002] # NEWLINE LEFT +2B93 ; [*0E76.0020.0002] # NEWLINE RIGHT +2B94 ; [*0E77.0020.0002] # FOUR CORNER ARROWS CIRCLING ANTICLOCKWISE +2B95 ; [*0E78.0020.0002] # RIGHTWARDS BLACK ARROW +2B97 ; [*0E79.0020.0002] # SYMBOL FOR TYPE A ELECTRONICS +2B98 ; [*0E7A.0020.0002] # THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD +2B99 ; [*0E7B.0020.0002] # THREE-D RIGHT-LIGHTED UPWARDS EQUILATERAL ARROWHEAD +2B9A ; [*0E7C.0020.0002] # THREE-D TOP-LIGHTED RIGHTWARDS EQUILATERAL ARROWHEAD +2B9B ; [*0E7D.0020.0002] # THREE-D LEFT-LIGHTED DOWNWARDS EQUILATERAL ARROWHEAD +2B9C ; [*0E7E.0020.0002] # BLACK LEFTWARDS EQUILATERAL ARROWHEAD +2B9D ; [*0E7F.0020.0002] # BLACK UPWARDS EQUILATERAL ARROWHEAD +2B9E ; [*0E80.0020.0002] # BLACK RIGHTWARDS EQUILATERAL ARROWHEAD +2B9F ; [*0E81.0020.0002] # BLACK DOWNWARDS EQUILATERAL ARROWHEAD +2BA0 ; [*0E82.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH LONG TIP LEFTWARDS +2BA1 ; [*0E83.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH LONG TIP RIGHTWARDS +2BA2 ; [*0E84.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH LONG TIP LEFTWARDS +2BA3 ; [*0E85.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH LONG TIP RIGHTWARDS +2BA4 ; [*0E86.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP UPWARDS +2BA5 ; [*0E87.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP UPWARDS +2BA6 ; [*0E88.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP DOWNWARDS +2BA7 ; [*0E89.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP DOWNWARDS +2BA8 ; [*0E8A.0020.0002] # BLACK CURVED DOWNWARDS AND LEFTWARDS ARROW +2BA9 ; [*0E8B.0020.0002] # BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW +2BAA ; [*0E8C.0020.0002] # BLACK CURVED UPWARDS AND LEFTWARDS ARROW +2BAB ; [*0E8D.0020.0002] # BLACK CURVED UPWARDS AND RIGHTWARDS ARROW +2BAC ; [*0E8E.0020.0002] # BLACK CURVED LEFTWARDS AND UPWARDS ARROW +2BAD ; [*0E8F.0020.0002] # BLACK CURVED RIGHTWARDS AND UPWARDS ARROW +2BAE ; [*0E90.0020.0002] # BLACK CURVED LEFTWARDS AND DOWNWARDS ARROW +2BAF ; [*0E91.0020.0002] # BLACK CURVED RIGHTWARDS AND DOWNWARDS ARROW +2BB0 ; [*0E92.0020.0002] # RIBBON ARROW DOWN LEFT +2BB1 ; [*0E93.0020.0002] # RIBBON ARROW DOWN RIGHT +2BB2 ; [*0E94.0020.0002] # RIBBON ARROW UP LEFT +2BB3 ; [*0E95.0020.0002] # RIBBON ARROW UP RIGHT +2BB4 ; [*0E96.0020.0002] # RIBBON ARROW LEFT UP +2BB5 ; [*0E97.0020.0002] # RIBBON ARROW RIGHT UP +2BB6 ; [*0E98.0020.0002] # RIBBON ARROW LEFT DOWN +2BB7 ; [*0E99.0020.0002] # RIBBON ARROW RIGHT DOWN +2BB8 ; [*0E9A.0020.0002] # UPWARDS WHITE ARROW FROM BAR WITH HORIZONTAL BAR +2BB9 ; [*0E9B.0020.0002] # UP ARROWHEAD IN A RECTANGLE BOX +2BBA ; [*0E9C.0020.0002] # OVERLAPPING WHITE SQUARES +2BBB ; [*0E9D.0020.0002] # OVERLAPPING WHITE AND BLACK SQUARES +2BBC ; [*0E9E.0020.0002] # OVERLAPPING BLACK SQUARES +2BBD ; [*0E9F.0020.0002] # BALLOT BOX WITH LIGHT X +2BBE ; [*0EA0.0020.0002] # CIRCLED X +2BBF ; [*0EA1.0020.0002] # CIRCLED BOLD X +2BC0 ; [*0EA2.0020.0002] # BLACK SQUARE CENTRED +2BC1 ; [*0EA3.0020.0002] # BLACK DIAMOND CENTRED +2BC2 ; [*0EA4.0020.0002] # TURNED BLACK PENTAGON +2BC3 ; [*0EA5.0020.0002] # HORIZONTAL BLACK OCTAGON +2BC4 ; [*0EA6.0020.0002] # BLACK OCTAGON +2BC5 ; [*0EA7.0020.0002] # BLACK MEDIUM UP-POINTING TRIANGLE CENTRED +2BC6 ; [*0EA8.0020.0002] # BLACK MEDIUM DOWN-POINTING TRIANGLE CENTRED +2BC7 ; [*0EA9.0020.0002] # BLACK MEDIUM LEFT-POINTING TRIANGLE CENTRED +2BC8 ; [*0EAA.0020.0002] # BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED +2BC9 ; [*0EAB.0020.0002] # NEPTUNE FORM TWO +2BCA ; [*0EAC.0020.0002] # TOP HALF BLACK CIRCLE +2BCB ; [*0EAD.0020.0002] # BOTTOM HALF BLACK CIRCLE +2BCC ; [*0EAE.0020.0002] # LIGHT FOUR POINTED BLACK CUSP +2BCD ; [*0EAF.0020.0002] # ROTATED LIGHT FOUR POINTED BLACK CUSP +2BCE ; [*0EB0.0020.0002] # WHITE FOUR POINTED CUSP +2BCF ; [*0EB1.0020.0002] # ROTATED WHITE FOUR POINTED CUSP +2BD0 ; [*0EB2.0020.0002] # SQUARE POSITION INDICATOR +2BD1 ; [*0EB3.0020.0002] # UNCERTAINTY SIGN +2BD2 ; [*0EB4.0020.0002] # GROUP MARK +2BD3 ; [*0EB5.0020.0002] # PLUTO FORM TWO +2BD4 ; [*0EB6.0020.0002] # PLUTO FORM THREE +2BD5 ; [*0EB7.0020.0002] # PLUTO FORM FOUR +2BD6 ; [*0EB8.0020.0002] # PLUTO FORM FIVE +2BD7 ; [*0EB9.0020.0002] # TRANSPLUTO +2BD8 ; [*0EBA.0020.0002] # PROSERPINA +2BD9 ; [*0EBB.0020.0002] # ASTRAEA +2BDA ; [*0EBC.0020.0002] # HYGIEA +2BDB ; [*0EBD.0020.0002] # PHOLUS +2BDC ; [*0EBE.0020.0002] # NESSUS +2BDD ; [*0EBF.0020.0002] # WHITE MOON SELENA +2BDE ; [*0EC0.0020.0002] # BLACK DIAMOND ON CROSS +2BDF ; [*0EC1.0020.0002] # TRUE LIGHT MOON ARTA +2BE0 ; [*0EC2.0020.0002] # CUPIDO +2BE1 ; [*0EC3.0020.0002] # HADES +2BE2 ; [*0EC4.0020.0002] # ZEUS +2BE3 ; [*0EC5.0020.0002] # KRONOS +2BE4 ; [*0EC6.0020.0002] # APOLLON +2BE5 ; [*0EC7.0020.0002] # ADMETOS +2BE6 ; [*0EC8.0020.0002] # VULCANUS +2BE7 ; [*0EC9.0020.0002] # POSEIDON +2BE8 ; [*0ECA.0020.0002] # LEFT HALF BLACK STAR +2BE9 ; [*0ECB.0020.0002] # RIGHT HALF BLACK STAR +2BEA ; [*0ECC.0020.0002] # STAR WITH LEFT HALF BLACK +2BEB ; [*0ECD.0020.0002] # STAR WITH RIGHT HALF BLACK +2BEC ; [*0ECE.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS +2BED ; [*0ECF.0020.0002] # UPWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS +2BEE ; [*0ED0.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS +2BEF ; [*0ED1.0020.0002] # DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS +2BF0 ; [*0ED2.0020.0002] # ERIS FORM ONE +2BF1 ; [*0ED3.0020.0002] # ERIS FORM TWO +2BF2 ; [*0ED4.0020.0002] # SEDNA +2BF3 ; [*0ED5.0020.0002] # RUSSIAN ASTROLOGICAL SYMBOL VIGINTILE +2BF4 ; [*0ED6.0020.0002] # RUSSIAN ASTROLOGICAL SYMBOL NOVILE +2BF5 ; [*0ED7.0020.0002] # RUSSIAN ASTROLOGICAL SYMBOL QUINTILE +2BF6 ; [*0ED8.0020.0002] # RUSSIAN ASTROLOGICAL SYMBOL BINOVILE +2BF7 ; [*0ED9.0020.0002] # RUSSIAN ASTROLOGICAL SYMBOL SENTAGON +2BF8 ; [*0EDA.0020.0002] # RUSSIAN ASTROLOGICAL SYMBOL TREDECILE +2BF9 ; [*0EDB.0020.0002] # EQUALS SIGN WITH INFINITY BELOW +2BFA ; [*0EDC.0020.0002] # UNITED SYMBOL +2BFB ; [*0EDD.0020.0002] # SEPARATED SYMBOL +2BFC ; [*0EDE.0020.0002] # DOUBLED SYMBOL +2BFD ; [*0EDF.0020.0002] # PASSED SYMBOL +2BFE ; [*0EE0.0020.0002] # REVERSED RIGHT ANGLE +2BFF ; [*0EE1.0020.0002] # HELLSCHREIBER PAUSE SYMBOL +2CE5 ; [*0EE2.0020.0002] # COPTIC SYMBOL MI RO +2CE6 ; [*0EE3.0020.0002] # COPTIC SYMBOL PI RO +2CE7 ; [*0EE4.0020.0002] # COPTIC SYMBOL STAUROS +2CE8 ; [*0EE5.0020.0002] # COPTIC SYMBOL TAU RO +2CE9 ; [*0EE6.0020.0002] # COPTIC SYMBOL KHI RO +2CEA ; [*0EE7.0020.0002] # COPTIC SYMBOL SHIMA SIMA +2CF9 ; [*0288.0020.0002] # COPTIC OLD NUBIAN FULL STOP +2CFA ; [*0275.0020.0002] # COPTIC OLD NUBIAN DIRECT QUESTION MARK +2CFB ; [*0276.0020.0002] # COPTIC OLD NUBIAN INDIRECT QUESTION MARK +2CFC ; [*0307.0020.0002] # COPTIC OLD NUBIAN VERSE DIVIDER +2CFD ; [*1DB7.0020.0002] # COPTIC FRACTION ONE HALF +2CFE ; [*0289.0020.0002] # COPTIC FULL STOP +2CFF ; [*0308.0020.0002] # COPTIC MORPHOLOGICAL DIVIDER +2D70 ; [*0453.0020.0002] # TIFINAGH SEPARATOR MARK 2D7F ; [.0000.0000.0000] # TIFINAGH CONSONANT JOINER -2E00 ; [*03B7.0020.0002] # RIGHT ANGLE SUBSTITUTION MARKER -2E01 ; [*03B8.0020.0002] # RIGHT ANGLE DOTTED SUBSTITUTION MARKER -2E02 ; [*035C.0020.0002] # LEFT SUBSTITUTION BRACKET -2E03 ; [*035D.0020.0002] # RIGHT SUBSTITUTION BRACKET -2E04 ; [*035E.0020.0002] # LEFT DOTTED SUBSTITUTION BRACKET -2E05 ; [*035F.0020.0002] # RIGHT DOTTED SUBSTITUTION BRACKET -2E06 ; [*03B9.0020.0002] # RAISED INTERPOLATION MARKER -2E07 ; [*03BA.0020.0002] # RAISED DOTTED INTERPOLATION MARKER -2E08 ; [*03BB.0020.0002] # DOTTED TRANSPOSITION MARKER -2E09 ; [*0360.0020.0002] # LEFT TRANSPOSITION BRACKET -2E0A ; [*0361.0020.0002] # RIGHT TRANSPOSITION BRACKET -2E0B ; [*03BC.0020.0002] # RAISED SQUARE -2E0C ; [*0362.0020.0002] # LEFT RAISED OMISSION BRACKET -2E0D ; [*0363.0020.0002] # RIGHT RAISED OMISSION BRACKET -2E0E ; [*03BD.0020.0002] # EDITORIAL CORONIS -2E0F ; [*03BE.0020.0002] # PARAGRAPHOS -2E10 ; [*03BF.0020.0002] # FORKED PARAGRAPHOS -2E11 ; [*03C0.0020.0002] # REVERSED FORKED PARAGRAPHOS -2E12 ; [*03C1.0020.0002] # HYPODIASTOLE -2E13 ; [*03C2.0020.0002] # DOTTED OBELOS -2E14 ; [*03C3.0020.0002] # DOWNWARDS ANCORA -2E15 ; [*03C4.0020.0002] # UPWARDS ANCORA -2E16 ; [*03C5.0020.0002] # DOTTED RIGHT-POINTING ANGLE +2E00 ; [*03CB.0020.0002] # RIGHT ANGLE SUBSTITUTION MARKER +2E01 ; [*03CC.0020.0002] # RIGHT ANGLE DOTTED SUBSTITUTION MARKER +2E02 ; [*036C.0020.0002] # LEFT SUBSTITUTION BRACKET +2E03 ; [*036D.0020.0002] # RIGHT SUBSTITUTION BRACKET +2E04 ; [*036E.0020.0002] # LEFT DOTTED SUBSTITUTION BRACKET +2E05 ; [*036F.0020.0002] # RIGHT DOTTED SUBSTITUTION BRACKET +2E06 ; [*03CD.0020.0002] # RAISED INTERPOLATION MARKER +2E07 ; [*03CE.0020.0002] # RAISED DOTTED INTERPOLATION MARKER +2E08 ; [*03CF.0020.0002] # DOTTED TRANSPOSITION MARKER +2E09 ; [*0370.0020.0002] # LEFT TRANSPOSITION BRACKET +2E0A ; [*0371.0020.0002] # RIGHT TRANSPOSITION BRACKET +2E0B ; [*03D0.0020.0002] # RAISED SQUARE +2E0C ; [*0372.0020.0002] # LEFT RAISED OMISSION BRACKET +2E0D ; [*0373.0020.0002] # RIGHT RAISED OMISSION BRACKET +2E0E ; [*03D1.0020.0002] # EDITORIAL CORONIS +2E0F ; [*03D2.0020.0002] # PARAGRAPHOS +2E10 ; [*03D3.0020.0002] # FORKED PARAGRAPHOS +2E11 ; [*03D4.0020.0002] # REVERSED FORKED PARAGRAPHOS +2E12 ; [*03D5.0020.0002] # HYPODIASTOLE +2E13 ; [*03D6.0020.0002] # DOTTED OBELOS +2E14 ; [*03D7.0020.0002] # DOWNWARDS ANCORA +2E15 ; [*03D8.0020.0002] # UPWARDS ANCORA +2E16 ; [*03D9.0020.0002] # DOTTED RIGHT-POINTING ANGLE 2E17 ; [*021C.0020.0002] # DOUBLE OBLIQUE HYPHEN -2E18 ; [*0277.0020.0002] # INVERTED INTERROBANG -2E19 ; [*02F9.0020.0002] # PALM BRANCH -2E1A ; [*03C6.0020.0002] # HYPHEN WITH DIAERESIS -2E1B ; [*03C7.0020.0002] # TILDE WITH RING ABOVE -2E1C ; [*0364.0020.0002] # LEFT LOW PARAPHRASE BRACKET -2E1D ; [*0365.0020.0002] # RIGHT LOW PARAPHRASE BRACKET -2E1E ; [*03C8.0020.0002] # TILDE WITH DOT ABOVE -2E1F ; [*03C9.0020.0002] # TILDE WITH DOT BELOW -2E20 ; [*0366.0020.0002] # LEFT VERTICAL BAR WITH QUILL -2E21 ; [*0367.0020.0002] # RIGHT VERTICAL BAR WITH QUILL -2E22 ; [*0368.0020.0002] # TOP LEFT HALF BRACKET -2E23 ; [*0369.0020.0002] # TOP RIGHT HALF BRACKET -2E24 ; [*036A.0020.0002] # BOTTOM LEFT HALF BRACKET -2E25 ; [*036B.0020.0002] # BOTTOM RIGHT HALF BRACKET -2E26 ; [*036C.0020.0002] # LEFT SIDEWAYS U BRACKET -2E27 ; [*036D.0020.0002] # RIGHT SIDEWAYS U BRACKET -2E28 ; [*036E.0020.0002] # LEFT DOUBLE PARENTHESIS -2E29 ; [*036F.0020.0002] # RIGHT DOUBLE PARENTHESIS -2E2A ; [*02F2.0020.0002] # TWO DOTS OVER ONE DOT PUNCTUATION -2E2B ; [*02F3.0020.0002] # ONE DOT OVER TWO DOTS PUNCTUATION -2E2C ; [*02F4.0020.0002] # SQUARED FOUR DOT PUNCTUATION -2E2D ; [*02F5.0020.0002] # FIVE DOT MARK -2E2E ; [*0269.0020.0002] # REVERSED QUESTION MARK -2E30 ; [*0284.0020.0002] # RING POINT -2E31 ; [*028D.0020.0002] # WORD SEPARATOR MIDDLE DOT -2E32 ; [*0224.0020.0002] # TURNED COMMA -2E33 ; [*028E.0020.0002] # RAISED DOT -2E34 ; [*0223.0020.0002] # RAISED COMMA -2E35 ; [*0237.0020.0002] # TURNED SEMICOLON -2E36 ; [*03A2.0020.0002] # DAGGER WITH LEFT GUARD -2E37 ; [*03A3.0020.0002] # DAGGER WITH RIGHT GUARD -2E38 ; [*03A4.0020.0002] # TURNED DAGGER -2E39 ; [*038B.0020.0002] # TOP HALF SECTION SIGN +2E18 ; [*027D.0020.0002] # INVERTED INTERROBANG +2E19 ; [*0309.0020.0002] # PALM BRANCH +2E1A ; [*03DA.0020.0002] # HYPHEN WITH DIAERESIS +2E1B ; [*03DB.0020.0002] # TILDE WITH RING ABOVE +2E1C ; [*0374.0020.0002] # LEFT LOW PARAPHRASE BRACKET +2E1D ; [*0375.0020.0002] # RIGHT LOW PARAPHRASE BRACKET +2E1E ; [*03DC.0020.0002] # TILDE WITH DOT ABOVE +2E1F ; [*03DD.0020.0002] # TILDE WITH DOT BELOW +2E20 ; [*0376.0020.0002] # LEFT VERTICAL BAR WITH QUILL +2E21 ; [*0377.0020.0002] # RIGHT VERTICAL BAR WITH QUILL +2E22 ; [*0378.0020.0002] # TOP LEFT HALF BRACKET +2E23 ; [*0379.0020.0002] # TOP RIGHT HALF BRACKET +2E24 ; [*037A.0020.0002] # BOTTOM LEFT HALF BRACKET +2E25 ; [*037B.0020.0002] # BOTTOM RIGHT HALF BRACKET +2E26 ; [*037C.0020.0002] # LEFT SIDEWAYS U BRACKET +2E27 ; [*037D.0020.0002] # RIGHT SIDEWAYS U BRACKET +2E28 ; [*037E.0020.0002] # LEFT DOUBLE PARENTHESIS +2E29 ; [*037F.0020.0002] # RIGHT DOUBLE PARENTHESIS +2E2A ; [*0302.0020.0002] # TWO DOTS OVER ONE DOT PUNCTUATION +2E2B ; [*0303.0020.0002] # ONE DOT OVER TWO DOTS PUNCTUATION +2E2C ; [*0304.0020.0002] # SQUARED FOUR DOT PUNCTUATION +2E2D ; [*0305.0020.0002] # FIVE DOT MARK +2E2E ; [*026F.0020.0002] # REVERSED QUESTION MARK +2E30 ; [*028A.0020.0002] # RING POINT +2E31 ; [*0294.0020.0002] # WORD SEPARATOR MIDDLE DOT +2E32 ; [*0225.0020.0002] # TURNED COMMA +2E33 ; [*0295.0020.0002] # RAISED DOT +2E34 ; [*0224.0020.0002] # RAISED COMMA +2E35 ; [*023D.0020.0002] # TURNED SEMICOLON +2E36 ; [*03B5.0020.0002] # DAGGER WITH LEFT GUARD +2E37 ; [*03B6.0020.0002] # DAGGER WITH RIGHT GUARD +2E38 ; [*03B7.0020.0002] # TURNED DAGGER +2E39 ; [*039B.0020.0002] # TOP HALF SECTION SIGN 2E3A ; [*0218.0020.0002] # TWO-EM DASH 2E3B ; [*0219.0020.0002] # THREE-EM DASH -2E3C ; [*0285.0020.0002] # STENOGRAPHIC FULL STOP -2E3D ; [*02F6.0020.0002] # VERTICAL SIX DOTS -2E3E ; [*0385.0020.0002] # WIGGLY VERTICAL LINE -2E3F ; [*038E.0020.0002] # CAPITULUM +2E3C ; [*028B.0020.0002] # STENOGRAPHIC FULL STOP +2E3D ; [*0306.0020.0002] # VERTICAL SIX DOTS +2E3E ; [*0395.0020.0002] # WIGGLY VERTICAL LINE +2E3F ; [*039F.0020.0002] # CAPITULUM 2E40 ; [*021D.0020.0002] # DOUBLE HYPHEN -2E41 ; [*0225.0020.0002] # REVERSED COMMA -2E42 ; [*0312.0020.0002] # DOUBLE LOW-REVERSED-9 QUOTATION MARK +2E41 ; [*0226.0020.0002] # REVERSED COMMA +2E42 ; [*0322.0020.0002] # DOUBLE LOW-REVERSED-9 QUOTATION MARK 2E43 ; [*021B.0020.0002] # DASH WITH LEFT UPTURN -2E44 ; [*03CA.0020.0002] # DOUBLE SUSPENSION MARK -2E45 ; [*03CB.0020.0002] # INVERTED LOW KAVYKA -2E46 ; [*03CC.0020.0002] # INVERTED LOW KAVYKA WITH KAVYKA ABOVE -2E47 ; [*03CD.0020.0002] # LOW KAVYKA -2E48 ; [*03CE.0020.0002] # LOW KAVYKA WITH DOT -2E49 ; [*0239.0020.0002] # DOUBLE STACKED COMMA -2FF0 ; [*1ABF.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT -2FF1 ; [*1AC0.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW -2FF2 ; [*1AC1.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT -2FF3 ; [*1AC2.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW -2FF4 ; [*1AC3.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND -2FF5 ; [*1AC4.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE -2FF6 ; [*1AC5.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW -2FF7 ; [*1AC6.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT -2FF8 ; [*1AC7.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT -2FF9 ; [*1AC8.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT -2FFA ; [*1AC9.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT -2FFB ; [*1ACA.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID +2E44 ; [*03DE.0020.0002] # DOUBLE SUSPENSION MARK +2E45 ; [*03DF.0020.0002] # INVERTED LOW KAVYKA +2E46 ; [*03E0.0020.0002] # INVERTED LOW KAVYKA WITH KAVYKA ABOVE +2E47 ; [*03E1.0020.0002] # LOW KAVYKA +2E48 ; [*03E2.0020.0002] # LOW KAVYKA WITH DOT +2E49 ; [*023F.0020.0002] # DOUBLE STACKED COMMA +2E4A ; [*03A8.0020.0002] # DOTTED SOLIDUS +2E4B ; [*03B8.0020.0002] # TRIPLE DAGGER +2E4C ; [*0227.0020.0002] # MEDIEVAL COMMA +2E4D ; [*039E.0020.0002] # PARAGRAPHUS MARK +2E4E ; [*0228.0020.0002] # PUNCTUS ELEVATUS MARK +2E4F ; [*0229.0020.0002] # CORNISH VERSE DIVIDER +2E50 ; [*0B5D.0020.0002] # CROSS PATTY WITH RIGHT CROSSBAR +2E51 ; [*0B5E.0020.0002] # CROSS PATTY WITH LEFT CROSSBAR +2E52 ; [*03AB.0020.0002] # TIRONIAN SIGN CAPITAL ET +2FF0 ; [*1D1B.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT +2FF1 ; [*1D1C.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW +2FF2 ; [*1D1D.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT +2FF3 ; [*1D1E.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW +2FF4 ; [*1D1F.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND +2FF5 ; [*1D20.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE +2FF6 ; [*1D21.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW +2FF7 ; [*1D22.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT +2FF8 ; [*1D23.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT +2FF9 ; [*1D24.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT +2FFA ; [*1D25.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT +2FFB ; [*1D26.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID 3000 ; [*0209.0020.0003] # IDEOGRAPHIC SPACE -3001 ; [*0231.0020.0002] # IDEOGRAPHIC COMMA -3002 ; [*028B.0020.0002] # IDEOGRAPHIC FULL STOP -3003 ; [*03AD.0020.0002] # DITTO MARK -3004 ; [*1AEF.0020.0002] # JAPANESE INDUSTRIAL STANDARD SYMBOL -3008 ; [*0370.0020.0002] # LEFT ANGLE BRACKET -3009 ; [*0371.0020.0002] # RIGHT ANGLE BRACKET -300A ; [*0372.0020.0002] # LEFT DOUBLE ANGLE BRACKET -300B ; [*0373.0020.0002] # RIGHT DOUBLE ANGLE BRACKET -300C ; [*0374.0020.0002] # LEFT CORNER BRACKET -300D ; [*0375.0020.0002] # RIGHT CORNER BRACKET -300E ; [*0376.0020.0002] # LEFT WHITE CORNER BRACKET -300F ; [*0377.0020.0002] # RIGHT WHITE CORNER BRACKET -3010 ; [*0378.0020.0002] # LEFT BLACK LENTICULAR BRACKET -3011 ; [*0379.0020.0002] # RIGHT BLACK LENTICULAR BRACKET -3012 ; [*1AF0.0020.0002] # POSTAL MARK -3013 ; [*1AF1.0020.0002] # GETA MARK -3014 ; [*037A.0020.0002] # LEFT TORTOISE SHELL BRACKET -3015 ; [*037B.0020.0002] # RIGHT TORTOISE SHELL BRACKET -3016 ; [*037C.0020.0002] # LEFT WHITE LENTICULAR BRACKET -3017 ; [*037D.0020.0002] # RIGHT WHITE LENTICULAR BRACKET -3018 ; [*037E.0020.0002] # LEFT WHITE TORTOISE SHELL BRACKET -3019 ; [*037F.0020.0002] # RIGHT WHITE TORTOISE SHELL BRACKET -301A ; [*0380.0020.0002] # LEFT WHITE SQUARE BRACKET -301B ; [*0381.0020.0002] # RIGHT WHITE SQUARE BRACKET +3001 ; [*0236.0020.0002] # IDEOGRAPHIC COMMA +3002 ; [*0292.0020.0002] # IDEOGRAPHIC FULL STOP +3003 ; [*03C1.0020.0002] # DITTO MARK +3004 ; [*1D4B.0020.0002] # JAPANESE INDUSTRIAL STANDARD SYMBOL +3008 ; [*0380.0020.0002] # LEFT ANGLE BRACKET +3009 ; [*0381.0020.0002] # RIGHT ANGLE BRACKET +300A ; [*0382.0020.0002] # LEFT DOUBLE ANGLE BRACKET +300B ; [*0383.0020.0002] # RIGHT DOUBLE ANGLE BRACKET +300C ; [*0384.0020.0002] # LEFT CORNER BRACKET +300D ; [*0385.0020.0002] # RIGHT CORNER BRACKET +300E ; [*0386.0020.0002] # LEFT WHITE CORNER BRACKET +300F ; [*0387.0020.0002] # RIGHT WHITE CORNER BRACKET +3010 ; [*0388.0020.0002] # LEFT BLACK LENTICULAR BRACKET +3011 ; [*0389.0020.0002] # RIGHT BLACK LENTICULAR BRACKET +3012 ; [*1D4C.0020.0002] # POSTAL MARK +3013 ; [*1D4D.0020.0002] # GETA MARK +3014 ; [*038A.0020.0002] # LEFT TORTOISE SHELL BRACKET +3015 ; [*038B.0020.0002] # RIGHT TORTOISE SHELL BRACKET +3016 ; [*038C.0020.0002] # LEFT WHITE LENTICULAR BRACKET +3017 ; [*038D.0020.0002] # RIGHT WHITE LENTICULAR BRACKET +3018 ; [*038E.0020.0002] # LEFT WHITE TORTOISE SHELL BRACKET +3019 ; [*038F.0020.0002] # RIGHT WHITE TORTOISE SHELL BRACKET +301A ; [*0390.0020.0002] # LEFT WHITE SQUARE BRACKET +301B ; [*0391.0020.0002] # RIGHT WHITE SQUARE BRACKET 301C ; [*021E.0020.0002] # WAVE DASH -301D ; [*0313.0020.0002] # REVERSED DOUBLE PRIME QUOTATION MARK -301E ; [*0314.0020.0002] # DOUBLE PRIME QUOTATION MARK -301F ; [*0315.0020.0002] # LOW DOUBLE PRIME QUOTATION MARK -3020 ; [*1AF2.0020.0002] # POSTAL MARK FACE +301D ; [*0323.0020.0002] # REVERSED DOUBLE PRIME QUOTATION MARK +301E ; [*0324.0020.0002] # DOUBLE PRIME QUOTATION MARK +301F ; [*0325.0020.0002] # LOW DOUBLE PRIME QUOTATION MARK +3020 ; [*1D4E.0020.0002] # POSTAL MARK FACE 3030 ; [*021F.0020.0002] # WAVY DASH -3036 ; [*1AF0.0020.0004] # CIRCLED POSTAL MARK -3037 ; [*1AF3.0020.0002] # IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL -303D ; [*03AE.0020.0002] # PART ALTERNATION MARK -303E ; [*1AF4.0020.0002] # IDEOGRAPHIC VARIATION INDICATOR -303F ; [*1AF5.0020.0002] # IDEOGRAPHIC HALF FILL SPACE -309B ; [*04A7.0020.0002] # KATAKANA-HIRAGANA VOICED SOUND MARK -309C ; [*04A8.0020.0002] # KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK +3036 ; [*1D4C.0020.0004] # CIRCLED POSTAL MARK +3037 ; [*1D4F.0020.0002] # IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL +303D ; [*03C2.0020.0002] # PART ALTERNATION MARK +303E ; [*1D50.0020.0002] # IDEOGRAPHIC VARIATION INDICATOR +303F ; [*1D51.0020.0002] # IDEOGRAPHIC HALF FILL SPACE +309B ; [*04C3.0020.0002] # KATAKANA-HIRAGANA VOICED SOUND MARK +309C ; [*04C4.0020.0002] # KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK 30A0 ; [*0220.0020.0002] # KATAKANA-HIRAGANA DOUBLE HYPHEN 30FB ; [*0221.0020.0002] # KATAKANA MIDDLE DOT -3190 ; [*1AF6.0020.0002] # IDEOGRAPHIC ANNOTATION LINKING MARK -3191 ; [*1AF7.0020.0002] # IDEOGRAPHIC ANNOTATION REVERSE MARK -31C0 ; [*1ACB.0020.0002] # CJK STROKE T -31C1 ; [*1ACC.0020.0002] # CJK STROKE WG -31C2 ; [*1ACD.0020.0002] # CJK STROKE XG -31C3 ; [*1ACE.0020.0002] # CJK STROKE BXG -31C4 ; [*1ACF.0020.0002] # CJK STROKE SW -31C5 ; [*1AD0.0020.0002] # CJK STROKE HZZ -31C6 ; [*1AD1.0020.0002] # CJK STROKE HZG -31C7 ; [*1AD2.0020.0002] # CJK STROKE HP -31C8 ; [*1AD3.0020.0002] # CJK STROKE HZWG -31C9 ; [*1AD4.0020.0002] # CJK STROKE SZWG -31CA ; [*1AD5.0020.0002] # CJK STROKE HZT -31CB ; [*1AD6.0020.0002] # CJK STROKE HZZP -31CC ; [*1AD7.0020.0002] # CJK STROKE HPWG -31CD ; [*1AD8.0020.0002] # CJK STROKE HZW -31CE ; [*1AD9.0020.0002] # CJK STROKE HZZZ -31CF ; [*1ADA.0020.0002] # CJK STROKE N -31D0 ; [*1ADB.0020.0002] # CJK STROKE H -31D1 ; [*1ADC.0020.0002] # CJK STROKE S -31D2 ; [*1ADD.0020.0002] # CJK STROKE P -31D3 ; [*1ADE.0020.0002] # CJK STROKE SP -31D4 ; [*1ADF.0020.0002] # CJK STROKE D -31D5 ; [*1AE0.0020.0002] # CJK STROKE HZ -31D6 ; [*1AE1.0020.0002] # CJK STROKE HG -31D7 ; [*1AE2.0020.0002] # CJK STROKE SZ -31D8 ; [*1AE3.0020.0002] # CJK STROKE SWZ -31D9 ; [*1AE4.0020.0002] # CJK STROKE ST -31DA ; [*1AE5.0020.0002] # CJK STROKE SG -31DB ; [*1AE6.0020.0002] # CJK STROKE PD -31DC ; [*1AE7.0020.0002] # CJK STROKE PZ -31DD ; [*1AE8.0020.0002] # CJK STROKE TN -31DE ; [*1AE9.0020.0002] # CJK STROKE SZZ -31DF ; [*1AEA.0020.0002] # CJK STROKE SWG -31E0 ; [*1AEB.0020.0002] # CJK STROKE HXWG -31E1 ; [*1AEC.0020.0002] # CJK STROKE HZZZG -31E2 ; [*1AED.0020.0002] # CJK STROKE PG -31E3 ; [*1AEE.0020.0002] # CJK STROKE Q -327F ; [*1AF8.0020.0002] # KOREAN STANDARD SYMBOL -4DC0 ; [*0EC2.0020.0002] # HEXAGRAM FOR THE CREATIVE HEAVEN -4DC1 ; [*0EC3.0020.0002] # HEXAGRAM FOR THE RECEPTIVE EARTH -4DC2 ; [*0EC4.0020.0002] # HEXAGRAM FOR DIFFICULTY AT THE BEGINNING -4DC3 ; [*0EC5.0020.0002] # HEXAGRAM FOR YOUTHFUL FOLLY -4DC4 ; [*0EC6.0020.0002] # HEXAGRAM FOR WAITING -4DC5 ; [*0EC7.0020.0002] # HEXAGRAM FOR CONFLICT -4DC6 ; [*0EC8.0020.0002] # HEXAGRAM FOR THE ARMY -4DC7 ; [*0EC9.0020.0002] # HEXAGRAM FOR HOLDING TOGETHER -4DC8 ; [*0ECA.0020.0002] # HEXAGRAM FOR SMALL TAMING -4DC9 ; [*0ECB.0020.0002] # HEXAGRAM FOR TREADING -4DCA ; [*0ECC.0020.0002] # HEXAGRAM FOR PEACE -4DCB ; [*0ECD.0020.0002] # HEXAGRAM FOR STANDSTILL -4DCC ; [*0ECE.0020.0002] # HEXAGRAM FOR FELLOWSHIP -4DCD ; [*0ECF.0020.0002] # HEXAGRAM FOR GREAT POSSESSION -4DCE ; [*0ED0.0020.0002] # HEXAGRAM FOR MODESTY -4DCF ; [*0ED1.0020.0002] # HEXAGRAM FOR ENTHUSIASM -4DD0 ; [*0ED2.0020.0002] # HEXAGRAM FOR FOLLOWING -4DD1 ; [*0ED3.0020.0002] # HEXAGRAM FOR WORK ON THE DECAYED -4DD2 ; [*0ED4.0020.0002] # HEXAGRAM FOR APPROACH -4DD3 ; [*0ED5.0020.0002] # HEXAGRAM FOR CONTEMPLATION -4DD4 ; [*0ED6.0020.0002] # HEXAGRAM FOR BITING THROUGH -4DD5 ; [*0ED7.0020.0002] # HEXAGRAM FOR GRACE -4DD6 ; [*0ED8.0020.0002] # HEXAGRAM FOR SPLITTING APART -4DD7 ; [*0ED9.0020.0002] # HEXAGRAM FOR RETURN -4DD8 ; [*0EDA.0020.0002] # HEXAGRAM FOR INNOCENCE -4DD9 ; [*0EDB.0020.0002] # HEXAGRAM FOR GREAT TAMING -4DDA ; [*0EDC.0020.0002] # HEXAGRAM FOR MOUTH CORNERS -4DDB ; [*0EDD.0020.0002] # HEXAGRAM FOR GREAT PREPONDERANCE -4DDC ; [*0EDE.0020.0002] # HEXAGRAM FOR THE ABYSMAL WATER -4DDD ; [*0EDF.0020.0002] # HEXAGRAM FOR THE CLINGING FIRE -4DDE ; [*0EE0.0020.0002] # HEXAGRAM FOR INFLUENCE -4DDF ; [*0EE1.0020.0002] # HEXAGRAM FOR DURATION -4DE0 ; [*0EE2.0020.0002] # HEXAGRAM FOR RETREAT -4DE1 ; [*0EE3.0020.0002] # HEXAGRAM FOR GREAT POWER -4DE2 ; [*0EE4.0020.0002] # HEXAGRAM FOR PROGRESS -4DE3 ; [*0EE5.0020.0002] # HEXAGRAM FOR DARKENING OF THE LIGHT -4DE4 ; [*0EE6.0020.0002] # HEXAGRAM FOR THE FAMILY -4DE5 ; [*0EE7.0020.0002] # HEXAGRAM FOR OPPOSITION -4DE6 ; [*0EE8.0020.0002] # HEXAGRAM FOR OBSTRUCTION -4DE7 ; [*0EE9.0020.0002] # HEXAGRAM FOR DELIVERANCE -4DE8 ; [*0EEA.0020.0002] # HEXAGRAM FOR DECREASE -4DE9 ; [*0EEB.0020.0002] # HEXAGRAM FOR INCREASE -4DEA ; [*0EEC.0020.0002] # HEXAGRAM FOR BREAKTHROUGH -4DEB ; [*0EED.0020.0002] # HEXAGRAM FOR COMING TO MEET -4DEC ; [*0EEE.0020.0002] # HEXAGRAM FOR GATHERING TOGETHER -4DED ; [*0EEF.0020.0002] # HEXAGRAM FOR PUSHING UPWARD -4DEE ; [*0EF0.0020.0002] # HEXAGRAM FOR OPPRESSION -4DEF ; [*0EF1.0020.0002] # HEXAGRAM FOR THE WELL -4DF0 ; [*0EF2.0020.0002] # HEXAGRAM FOR REVOLUTION -4DF1 ; [*0EF3.0020.0002] # HEXAGRAM FOR THE CAULDRON -4DF2 ; [*0EF4.0020.0002] # HEXAGRAM FOR THE AROUSING THUNDER -4DF3 ; [*0EF5.0020.0002] # HEXAGRAM FOR THE KEEPING STILL MOUNTAIN -4DF4 ; [*0EF6.0020.0002] # HEXAGRAM FOR DEVELOPMENT -4DF5 ; [*0EF7.0020.0002] # HEXAGRAM FOR THE MARRYING MAIDEN -4DF6 ; [*0EF8.0020.0002] # HEXAGRAM FOR ABUNDANCE -4DF7 ; [*0EF9.0020.0002] # HEXAGRAM FOR THE WANDERER -4DF8 ; [*0EFA.0020.0002] # HEXAGRAM FOR THE GENTLE WIND -4DF9 ; [*0EFB.0020.0002] # HEXAGRAM FOR THE JOYOUS LAKE -4DFA ; [*0EFC.0020.0002] # HEXAGRAM FOR DISPERSION -4DFB ; [*0EFD.0020.0002] # HEXAGRAM FOR LIMITATION -4DFC ; [*0EFE.0020.0002] # HEXAGRAM FOR INNER TRUTH -4DFD ; [*0EFF.0020.0002] # HEXAGRAM FOR SMALL PREPONDERANCE -4DFE ; [*0F00.0020.0002] # HEXAGRAM FOR AFTER COMPLETION -4DFF ; [*0F01.0020.0002] # HEXAGRAM FOR BEFORE COMPLETION -A490 ; [*0F59.0020.0002] # YI RADICAL QOT -A491 ; [*0F5A.0020.0002] # YI RADICAL LI -A492 ; [*0F5B.0020.0002] # YI RADICAL KIT -A493 ; [*0F5C.0020.0002] # YI RADICAL NYIP -A494 ; [*0F5D.0020.0002] # YI RADICAL CYP -A495 ; [*0F5E.0020.0002] # YI RADICAL SSI -A496 ; [*0F5F.0020.0002] # YI RADICAL GGOP -A497 ; [*0F60.0020.0002] # YI RADICAL GEP -A498 ; [*0F61.0020.0002] # YI RADICAL MI -A499 ; [*0F62.0020.0002] # YI RADICAL HXIT -A49A ; [*0F63.0020.0002] # YI RADICAL LYR -A49B ; [*0F64.0020.0002] # YI RADICAL BBUT -A49C ; [*0F65.0020.0002] # YI RADICAL MOP -A49D ; [*0F66.0020.0002] # YI RADICAL YO -A49E ; [*0F67.0020.0002] # YI RADICAL PUT -A49F ; [*0F68.0020.0002] # YI RADICAL HXUO -A4A0 ; [*0F69.0020.0002] # YI RADICAL TAT -A4A1 ; [*0F6A.0020.0002] # YI RADICAL GA -A4A2 ; [*0F6B.0020.0002] # YI RADICAL ZUP -A4A3 ; [*0F6C.0020.0002] # YI RADICAL CYT -A4A4 ; [*0F6D.0020.0002] # YI RADICAL DDUR -A4A5 ; [*0F6E.0020.0002] # YI RADICAL BUR -A4A6 ; [*0F6F.0020.0002] # YI RADICAL GGUO -A4A7 ; [*0F70.0020.0002] # YI RADICAL NYOP -A4A8 ; [*0F71.0020.0002] # YI RADICAL TU -A4A9 ; [*0F72.0020.0002] # YI RADICAL OP -A4AA ; [*0F73.0020.0002] # YI RADICAL JJUT -A4AB ; [*0F74.0020.0002] # YI RADICAL ZOT -A4AC ; [*0F75.0020.0002] # YI RADICAL PYT -A4AD ; [*0F76.0020.0002] # YI RADICAL HMO -A4AE ; [*0F77.0020.0002] # YI RADICAL YIT -A4AF ; [*0F78.0020.0002] # YI RADICAL VUR -A4B0 ; [*0F79.0020.0002] # YI RADICAL SHY -A4B1 ; [*0F7A.0020.0002] # YI RADICAL VEP -A4B2 ; [*0F7B.0020.0002] # YI RADICAL ZA -A4B3 ; [*0F7C.0020.0002] # YI RADICAL JO -A4B4 ; [*0F7D.0020.0002] # YI RADICAL NZUP -A4B5 ; [*0F7E.0020.0002] # YI RADICAL JJY -A4B6 ; [*0F7F.0020.0002] # YI RADICAL GOT -A4B7 ; [*0F80.0020.0002] # YI RADICAL JJIE -A4B8 ; [*0F81.0020.0002] # YI RADICAL WO -A4B9 ; [*0F82.0020.0002] # YI RADICAL DU -A4BA ; [*0F83.0020.0002] # YI RADICAL SHUR -A4BB ; [*0F84.0020.0002] # YI RADICAL LIE -A4BC ; [*0F85.0020.0002] # YI RADICAL CY -A4BD ; [*0F86.0020.0002] # YI RADICAL CUOP -A4BE ; [*0F87.0020.0002] # YI RADICAL CIP -A4BF ; [*0F88.0020.0002] # YI RADICAL HXOP -A4C0 ; [*0F89.0020.0002] # YI RADICAL SHAT -A4C1 ; [*0F8A.0020.0002] # YI RADICAL ZUR -A4C2 ; [*0F8B.0020.0002] # YI RADICAL SHOP -A4C3 ; [*0F8C.0020.0002] # YI RADICAL CHE -A4C4 ; [*0F8D.0020.0002] # YI RADICAL ZZIET -A4C5 ; [*0F8E.0020.0002] # YI RADICAL NBIE -A4C6 ; [*0F8F.0020.0002] # YI RADICAL KE -A4FE ; [*022E.0020.0002] # LISU PUNCTUATION COMMA -A4FF ; [*0286.0020.0002] # LISU PUNCTUATION FULL STOP -A60D ; [*022F.0020.0002] # VAI COMMA -A60E ; [*0287.0020.0002] # VAI FULL STOP -A60F ; [*0271.0020.0002] # VAI QUESTION MARK +3190 ; [*1D52.0020.0002] # IDEOGRAPHIC ANNOTATION LINKING MARK +3191 ; [*1D53.0020.0002] # IDEOGRAPHIC ANNOTATION REVERSE MARK +31C0 ; [*1D27.0020.0002] # CJK STROKE T +31C1 ; [*1D28.0020.0002] # CJK STROKE WG +31C2 ; [*1D29.0020.0002] # CJK STROKE XG +31C3 ; [*1D2A.0020.0002] # CJK STROKE BXG +31C4 ; [*1D2B.0020.0002] # CJK STROKE SW +31C5 ; [*1D2C.0020.0002] # CJK STROKE HZZ +31C6 ; [*1D2D.0020.0002] # CJK STROKE HZG +31C7 ; [*1D2E.0020.0002] # CJK STROKE HP +31C8 ; [*1D2F.0020.0002] # CJK STROKE HZWG +31C9 ; [*1D30.0020.0002] # CJK STROKE SZWG +31CA ; [*1D31.0020.0002] # CJK STROKE HZT +31CB ; [*1D32.0020.0002] # CJK STROKE HZZP +31CC ; [*1D33.0020.0002] # CJK STROKE HPWG +31CD ; [*1D34.0020.0002] # CJK STROKE HZW +31CE ; [*1D35.0020.0002] # CJK STROKE HZZZ +31CF ; [*1D36.0020.0002] # CJK STROKE N +31D0 ; [*1D37.0020.0002] # CJK STROKE H +31D1 ; [*1D38.0020.0002] # CJK STROKE S +31D2 ; [*1D39.0020.0002] # CJK STROKE P +31D3 ; [*1D3A.0020.0002] # CJK STROKE SP +31D4 ; [*1D3B.0020.0002] # CJK STROKE D +31D5 ; [*1D3C.0020.0002] # CJK STROKE HZ +31D6 ; [*1D3D.0020.0002] # CJK STROKE HG +31D7 ; [*1D3E.0020.0002] # CJK STROKE SZ +31D8 ; [*1D3F.0020.0002] # CJK STROKE SWZ +31D9 ; [*1D40.0020.0002] # CJK STROKE ST +31DA ; [*1D41.0020.0002] # CJK STROKE SG +31DB ; [*1D42.0020.0002] # CJK STROKE PD +31DC ; [*1D43.0020.0002] # CJK STROKE PZ +31DD ; [*1D44.0020.0002] # CJK STROKE TN +31DE ; [*1D45.0020.0002] # CJK STROKE SZZ +31DF ; [*1D46.0020.0002] # CJK STROKE SWG +31E0 ; [*1D47.0020.0002] # CJK STROKE HXWG +31E1 ; [*1D48.0020.0002] # CJK STROKE HZZZG +31E2 ; [*1D49.0020.0002] # CJK STROKE PG +31E3 ; [*1D4A.0020.0002] # CJK STROKE Q +327F ; [*1D54.0020.0002] # KOREAN STANDARD SYMBOL +4DC0 ; [*0FF6.0020.0002] # HEXAGRAM FOR THE CREATIVE HEAVEN +4DC1 ; [*0FF7.0020.0002] # HEXAGRAM FOR THE RECEPTIVE EARTH +4DC2 ; [*0FF8.0020.0002] # HEXAGRAM FOR DIFFICULTY AT THE BEGINNING +4DC3 ; [*0FF9.0020.0002] # HEXAGRAM FOR YOUTHFUL FOLLY +4DC4 ; [*0FFA.0020.0002] # HEXAGRAM FOR WAITING +4DC5 ; [*0FFB.0020.0002] # HEXAGRAM FOR CONFLICT +4DC6 ; [*0FFC.0020.0002] # HEXAGRAM FOR THE ARMY +4DC7 ; [*0FFD.0020.0002] # HEXAGRAM FOR HOLDING TOGETHER +4DC8 ; [*0FFE.0020.0002] # HEXAGRAM FOR SMALL TAMING +4DC9 ; [*0FFF.0020.0002] # HEXAGRAM FOR TREADING +4DCA ; [*1000.0020.0002] # HEXAGRAM FOR PEACE +4DCB ; [*1001.0020.0002] # HEXAGRAM FOR STANDSTILL +4DCC ; [*1002.0020.0002] # HEXAGRAM FOR FELLOWSHIP +4DCD ; [*1003.0020.0002] # HEXAGRAM FOR GREAT POSSESSION +4DCE ; [*1004.0020.0002] # HEXAGRAM FOR MODESTY +4DCF ; [*1005.0020.0002] # HEXAGRAM FOR ENTHUSIASM +4DD0 ; [*1006.0020.0002] # HEXAGRAM FOR FOLLOWING +4DD1 ; [*1007.0020.0002] # HEXAGRAM FOR WORK ON THE DECAYED +4DD2 ; [*1008.0020.0002] # HEXAGRAM FOR APPROACH +4DD3 ; [*1009.0020.0002] # HEXAGRAM FOR CONTEMPLATION +4DD4 ; [*100A.0020.0002] # HEXAGRAM FOR BITING THROUGH +4DD5 ; [*100B.0020.0002] # HEXAGRAM FOR GRACE +4DD6 ; [*100C.0020.0002] # HEXAGRAM FOR SPLITTING APART +4DD7 ; [*100D.0020.0002] # HEXAGRAM FOR RETURN +4DD8 ; [*100E.0020.0002] # HEXAGRAM FOR INNOCENCE +4DD9 ; [*100F.0020.0002] # HEXAGRAM FOR GREAT TAMING +4DDA ; [*1010.0020.0002] # HEXAGRAM FOR MOUTH CORNERS +4DDB ; [*1011.0020.0002] # HEXAGRAM FOR GREAT PREPONDERANCE +4DDC ; [*1012.0020.0002] # HEXAGRAM FOR THE ABYSMAL WATER +4DDD ; [*1013.0020.0002] # HEXAGRAM FOR THE CLINGING FIRE +4DDE ; [*1014.0020.0002] # HEXAGRAM FOR INFLUENCE +4DDF ; [*1015.0020.0002] # HEXAGRAM FOR DURATION +4DE0 ; [*1016.0020.0002] # HEXAGRAM FOR RETREAT +4DE1 ; [*1017.0020.0002] # HEXAGRAM FOR GREAT POWER +4DE2 ; [*1018.0020.0002] # HEXAGRAM FOR PROGRESS +4DE3 ; [*1019.0020.0002] # HEXAGRAM FOR DARKENING OF THE LIGHT +4DE4 ; [*101A.0020.0002] # HEXAGRAM FOR THE FAMILY +4DE5 ; [*101B.0020.0002] # HEXAGRAM FOR OPPOSITION +4DE6 ; [*101C.0020.0002] # HEXAGRAM FOR OBSTRUCTION +4DE7 ; [*101D.0020.0002] # HEXAGRAM FOR DELIVERANCE +4DE8 ; [*101E.0020.0002] # HEXAGRAM FOR DECREASE +4DE9 ; [*101F.0020.0002] # HEXAGRAM FOR INCREASE +4DEA ; [*1020.0020.0002] # HEXAGRAM FOR BREAKTHROUGH +4DEB ; [*1021.0020.0002] # HEXAGRAM FOR COMING TO MEET +4DEC ; [*1022.0020.0002] # HEXAGRAM FOR GATHERING TOGETHER +4DED ; [*1023.0020.0002] # HEXAGRAM FOR PUSHING UPWARD +4DEE ; [*1024.0020.0002] # HEXAGRAM FOR OPPRESSION +4DEF ; [*1025.0020.0002] # HEXAGRAM FOR THE WELL +4DF0 ; [*1026.0020.0002] # HEXAGRAM FOR REVOLUTION +4DF1 ; [*1027.0020.0002] # HEXAGRAM FOR THE CAULDRON +4DF2 ; [*1028.0020.0002] # HEXAGRAM FOR THE AROUSING THUNDER +4DF3 ; [*1029.0020.0002] # HEXAGRAM FOR THE KEEPING STILL MOUNTAIN +4DF4 ; [*102A.0020.0002] # HEXAGRAM FOR DEVELOPMENT +4DF5 ; [*102B.0020.0002] # HEXAGRAM FOR THE MARRYING MAIDEN +4DF6 ; [*102C.0020.0002] # HEXAGRAM FOR ABUNDANCE +4DF7 ; [*102D.0020.0002] # HEXAGRAM FOR THE WANDERER +4DF8 ; [*102E.0020.0002] # HEXAGRAM FOR THE GENTLE WIND +4DF9 ; [*102F.0020.0002] # HEXAGRAM FOR THE JOYOUS LAKE +4DFA ; [*1030.0020.0002] # HEXAGRAM FOR DISPERSION +4DFB ; [*1031.0020.0002] # HEXAGRAM FOR LIMITATION +4DFC ; [*1032.0020.0002] # HEXAGRAM FOR INNER TRUTH +4DFD ; [*1033.0020.0002] # HEXAGRAM FOR SMALL PREPONDERANCE +4DFE ; [*1034.0020.0002] # HEXAGRAM FOR AFTER COMPLETION +4DFF ; [*1035.0020.0002] # HEXAGRAM FOR BEFORE COMPLETION +A490 ; [*108D.0020.0002] # YI RADICAL QOT +A491 ; [*108E.0020.0002] # YI RADICAL LI +A492 ; [*108F.0020.0002] # YI RADICAL KIT +A493 ; [*1090.0020.0002] # YI RADICAL NYIP +A494 ; [*1091.0020.0002] # YI RADICAL CYP +A495 ; [*1092.0020.0002] # YI RADICAL SSI +A496 ; [*1093.0020.0002] # YI RADICAL GGOP +A497 ; [*1094.0020.0002] # YI RADICAL GEP +A498 ; [*1095.0020.0002] # YI RADICAL MI +A499 ; [*1096.0020.0002] # YI RADICAL HXIT +A49A ; [*1097.0020.0002] # YI RADICAL LYR +A49B ; [*1098.0020.0002] # YI RADICAL BBUT +A49C ; [*1099.0020.0002] # YI RADICAL MOP +A49D ; [*109A.0020.0002] # YI RADICAL YO +A49E ; [*109B.0020.0002] # YI RADICAL PUT +A49F ; [*109C.0020.0002] # YI RADICAL HXUO +A4A0 ; [*109D.0020.0002] # YI RADICAL TAT +A4A1 ; [*109E.0020.0002] # YI RADICAL GA +A4A2 ; [*109F.0020.0002] # YI RADICAL ZUP +A4A3 ; [*10A0.0020.0002] # YI RADICAL CYT +A4A4 ; [*10A1.0020.0002] # YI RADICAL DDUR +A4A5 ; [*10A2.0020.0002] # YI RADICAL BUR +A4A6 ; [*10A3.0020.0002] # YI RADICAL GGUO +A4A7 ; [*10A4.0020.0002] # YI RADICAL NYOP +A4A8 ; [*10A5.0020.0002] # YI RADICAL TU +A4A9 ; [*10A6.0020.0002] # YI RADICAL OP +A4AA ; [*10A7.0020.0002] # YI RADICAL JJUT +A4AB ; [*10A8.0020.0002] # YI RADICAL ZOT +A4AC ; [*10A9.0020.0002] # YI RADICAL PYT +A4AD ; [*10AA.0020.0002] # YI RADICAL HMO +A4AE ; [*10AB.0020.0002] # YI RADICAL YIT +A4AF ; [*10AC.0020.0002] # YI RADICAL VUR +A4B0 ; [*10AD.0020.0002] # YI RADICAL SHY +A4B1 ; [*10AE.0020.0002] # YI RADICAL VEP +A4B2 ; [*10AF.0020.0002] # YI RADICAL ZA +A4B3 ; [*10B0.0020.0002] # YI RADICAL JO +A4B4 ; [*10B1.0020.0002] # YI RADICAL NZUP +A4B5 ; [*10B2.0020.0002] # YI RADICAL JJY +A4B6 ; [*10B3.0020.0002] # YI RADICAL GOT +A4B7 ; [*10B4.0020.0002] # YI RADICAL JJIE +A4B8 ; [*10B5.0020.0002] # YI RADICAL WO +A4B9 ; [*10B6.0020.0002] # YI RADICAL DU +A4BA ; [*10B7.0020.0002] # YI RADICAL SHUR +A4BB ; [*10B8.0020.0002] # YI RADICAL LIE +A4BC ; [*10B9.0020.0002] # YI RADICAL CY +A4BD ; [*10BA.0020.0002] # YI RADICAL CUOP +A4BE ; [*10BB.0020.0002] # YI RADICAL CIP +A4BF ; [*10BC.0020.0002] # YI RADICAL HXOP +A4C0 ; [*10BD.0020.0002] # YI RADICAL SHAT +A4C1 ; [*10BE.0020.0002] # YI RADICAL ZUR +A4C2 ; [*10BF.0020.0002] # YI RADICAL SHOP +A4C3 ; [*10C0.0020.0002] # YI RADICAL CHE +A4C4 ; [*10C1.0020.0002] # YI RADICAL ZZIET +A4C5 ; [*10C2.0020.0002] # YI RADICAL NBIE +A4C6 ; [*10C3.0020.0002] # YI RADICAL KE +A4FE ; [*0232.0020.0002] # LISU PUNCTUATION COMMA +A4FF ; [*028C.0020.0002] # LISU PUNCTUATION FULL STOP +A60D ; [*0233.0020.0002] # VAI COMMA +A60E ; [*028D.0020.0002] # VAI FULL STOP +A60F ; [*0277.0020.0002] # VAI QUESTION MARK A670 ; [.0000.0000.0000] # COMBINING CYRILLIC TEN MILLIONS SIGN A671 ; [.0000.0000.0000] # COMBINING CYRILLIC HUNDRED MILLIONS SIGN A672 ; [.0000.0000.0000] # COMBINING CYRILLIC THOUSAND MILLIONS SIGN -A673 ; [*0394.0020.0002] # SLAVONIC ASTERISK -A67E ; [*03CF.0020.0002] # CYRILLIC KAVYKA -A6F2 ; [*02D8.0020.0002] # BAMUM NJAEMLI -A6F3 ; [*0288.0020.0002] # BAMUM FULL STOP -A6F4 ; [*0260.0020.0002] # BAMUM COLON -A6F5 ; [*0230.0020.0002] # BAMUM COMMA -A6F6 ; [*0238.0020.0002] # BAMUM SEMICOLON -A6F7 ; [*0272.0020.0002] # BAMUM QUESTION MARK -A700 ; [*04E6.0020.0002] # MODIFIER LETTER CHINESE TONE YIN PING -A701 ; [*04E7.0020.0002] # MODIFIER LETTER CHINESE TONE YANG PING -A702 ; [*04E8.0020.0002] # MODIFIER LETTER CHINESE TONE YIN SHANG -A703 ; [*04E9.0020.0002] # MODIFIER LETTER CHINESE TONE YANG SHANG -A704 ; [*04EA.0020.0002] # MODIFIER LETTER CHINESE TONE YIN QU -A705 ; [*04EB.0020.0002] # MODIFIER LETTER CHINESE TONE YANG QU -A706 ; [*04EC.0020.0002] # MODIFIER LETTER CHINESE TONE YIN RU -A707 ; [*04ED.0020.0002] # MODIFIER LETTER CHINESE TONE YANG RU -A708 ; [*04EE.0020.0002] # MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR -A709 ; [*04EF.0020.0002] # MODIFIER LETTER HIGH DOTTED TONE BAR -A70A ; [*04F0.0020.0002] # MODIFIER LETTER MID DOTTED TONE BAR -A70B ; [*04F1.0020.0002] # MODIFIER LETTER LOW DOTTED TONE BAR -A70C ; [*04F2.0020.0002] # MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR -A70D ; [*04F3.0020.0002] # MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR -A70E ; [*04F4.0020.0002] # MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR -A70F ; [*04F5.0020.0002] # MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR -A710 ; [*04F6.0020.0002] # MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR -A711 ; [*04F7.0020.0002] # MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR -A712 ; [*04F8.0020.0002] # MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR -A713 ; [*04F9.0020.0002] # MODIFIER LETTER HIGH LEFT-STEM TONE BAR -A714 ; [*04FA.0020.0002] # MODIFIER LETTER MID LEFT-STEM TONE BAR -A715 ; [*04FB.0020.0002] # MODIFIER LETTER LOW LEFT-STEM TONE BAR -A716 ; [*04FC.0020.0002] # MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR -A717 ; [*04FD.0020.0002] # MODIFIER LETTER DOT VERTICAL BAR -A718 ; [*04FE.0020.0002] # MODIFIER LETTER DOT SLASH -A719 ; [*04FF.0020.0002] # MODIFIER LETTER DOT HORIZONTAL BAR -A71A ; [*0500.0020.0002] # MODIFIER LETTER LOWER RIGHT CORNER ANGLE -A71B ; [*0501.0020.0002] # MODIFIER LETTER RAISED UP ARROW -A71C ; [*0502.0020.0002] # MODIFIER LETTER RAISED DOWN ARROW -A71D ; [*0503.0020.0002] # MODIFIER LETTER RAISED EXCLAMATION MARK -A71E ; [*0504.0020.0002] # MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK -A71F ; [*0505.0020.0002] # MODIFIER LETTER LOW INVERTED EXCLAMATION MARK -A720 ; [*0506.0020.0002] # MODIFIER LETTER STRESS AND HIGH TONE -A721 ; [*0507.0020.0002] # MODIFIER LETTER STRESS AND LOW TONE -A788 ; [*0508.0020.0002] # MODIFIER LETTER LOW CIRCUMFLEX ACCENT -A789 ; [*0509.0020.0002] # MODIFIER LETTER COLON -A78A ; [*050A.0020.0002] # MODIFIER LETTER SHORT EQUALS SIGN -A828 ; [*0535.0020.0002] # SYLOTI NAGRI POETRY MARK-1 -A829 ; [*0536.0020.0002] # SYLOTI NAGRI POETRY MARK-2 -A82A ; [*0537.0020.0002] # SYLOTI NAGRI POETRY MARK-3 -A82B ; [*0538.0020.0002] # SYLOTI NAGRI POETRY MARK-4 -A830 ; [*1B06.0020.0002] # NORTH INDIC FRACTION ONE QUARTER -A831 ; [*1B07.0020.0002] # NORTH INDIC FRACTION ONE HALF -A832 ; [*1B08.0020.0002] # NORTH INDIC FRACTION THREE QUARTERS -A833 ; [*1B09.0020.0002] # NORTH INDIC FRACTION ONE SIXTEENTH -A834 ; [*1B0A.0020.0002] # NORTH INDIC FRACTION ONE EIGHTH -A835 ; [*1B0B.0020.0002] # NORTH INDIC FRACTION THREE SIXTEENTHS -A836 ; [*0539.0020.0002] # NORTH INDIC QUARTER MARK -A837 ; [*053A.0020.0002] # NORTH INDIC PLACEHOLDER MARK -A839 ; [*053B.0020.0002] # NORTH INDIC QUANTITY MARK -A874 ; [*043E.0020.0002] # PHAGS-PA SINGLE HEAD MARK -A875 ; [*043F.0020.0002] # PHAGS-PA DOUBLE HEAD MARK -A876 ; [*0295.0020.0002] # PHAGS-PA MARK SHAD -A877 ; [*0296.0020.0002] # PHAGS-PA MARK DOUBLE SHAD -A8CE ; [*0291.0020.0002] # SAURASHTRA DANDA -A8CF ; [*0292.0020.0002] # SAURASHTRA DOUBLE DANDA +A673 ; [*03A5.0020.0002] # SLAVONIC ASTERISK +A67E ; [*03E3.0020.0002] # CYRILLIC KAVYKA +A6F2 ; [*02E0.0020.0002] # BAMUM NJAEMLI +A6F3 ; [*028E.0020.0002] # BAMUM FULL STOP +A6F4 ; [*0266.0020.0002] # BAMUM COLON +A6F5 ; [*0234.0020.0002] # BAMUM COMMA +A6F6 ; [*023E.0020.0002] # BAMUM SEMICOLON +A6F7 ; [*0278.0020.0002] # BAMUM QUESTION MARK +A700 ; [*0504.0020.0002] # MODIFIER LETTER CHINESE TONE YIN PING +A701 ; [*0505.0020.0002] # MODIFIER LETTER CHINESE TONE YANG PING +A702 ; [*0506.0020.0002] # MODIFIER LETTER CHINESE TONE YIN SHANG +A703 ; [*0507.0020.0002] # MODIFIER LETTER CHINESE TONE YANG SHANG +A704 ; [*0508.0020.0002] # MODIFIER LETTER CHINESE TONE YIN QU +A705 ; [*0509.0020.0002] # MODIFIER LETTER CHINESE TONE YANG QU +A706 ; [*050A.0020.0002] # MODIFIER LETTER CHINESE TONE YIN RU +A707 ; [*050B.0020.0002] # MODIFIER LETTER CHINESE TONE YANG RU +A708 ; [*050C.0020.0002] # MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR +A709 ; [*050D.0020.0002] # MODIFIER LETTER HIGH DOTTED TONE BAR +A70A ; [*050E.0020.0002] # MODIFIER LETTER MID DOTTED TONE BAR +A70B ; [*050F.0020.0002] # MODIFIER LETTER LOW DOTTED TONE BAR +A70C ; [*0510.0020.0002] # MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR +A70D ; [*0511.0020.0002] # MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR +A70E ; [*0512.0020.0002] # MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR +A70F ; [*0513.0020.0002] # MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR +A710 ; [*0514.0020.0002] # MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR +A711 ; [*0515.0020.0002] # MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR +A712 ; [*0516.0020.0002] # MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR +A713 ; [*0517.0020.0002] # MODIFIER LETTER HIGH LEFT-STEM TONE BAR +A714 ; [*0518.0020.0002] # MODIFIER LETTER MID LEFT-STEM TONE BAR +A715 ; [*0519.0020.0002] # MODIFIER LETTER LOW LEFT-STEM TONE BAR +A716 ; [*051A.0020.0002] # MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR +A717 ; [*051B.0020.0002] # MODIFIER LETTER DOT VERTICAL BAR +A718 ; [*051C.0020.0002] # MODIFIER LETTER DOT SLASH +A719 ; [*051D.0020.0002] # MODIFIER LETTER DOT HORIZONTAL BAR +A71A ; [*051E.0020.0002] # MODIFIER LETTER LOWER RIGHT CORNER ANGLE +A71B ; [*051F.0020.0002] # MODIFIER LETTER RAISED UP ARROW +A71C ; [*0520.0020.0002] # MODIFIER LETTER RAISED DOWN ARROW +A71D ; [*0521.0020.0002] # MODIFIER LETTER RAISED EXCLAMATION MARK +A71E ; [*0522.0020.0002] # MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK +A71F ; [*0523.0020.0002] # MODIFIER LETTER LOW INVERTED EXCLAMATION MARK +A720 ; [*0524.0020.0002] # MODIFIER LETTER STRESS AND HIGH TONE +A721 ; [*0525.0020.0002] # MODIFIER LETTER STRESS AND LOW TONE +A788 ; [*0526.0020.0002] # MODIFIER LETTER LOW CIRCUMFLEX ACCENT +A789 ; [*0527.0020.0002] # MODIFIER LETTER COLON +A78A ; [*0528.0020.0002] # MODIFIER LETTER SHORT EQUALS SIGN +A828 ; [*056C.0020.0002] # SYLOTI NAGRI POETRY MARK-1 +A829 ; [*056D.0020.0002] # SYLOTI NAGRI POETRY MARK-2 +A82A ; [*056E.0020.0002] # SYLOTI NAGRI POETRY MARK-3 +A82B ; [*056F.0020.0002] # SYLOTI NAGRI POETRY MARK-4 +A830 ; [*1D62.0020.0002] # NORTH INDIC FRACTION ONE QUARTER +A831 ; [*1D63.0020.0002] # NORTH INDIC FRACTION ONE HALF +A832 ; [*1D64.0020.0002] # NORTH INDIC FRACTION THREE QUARTERS +A833 ; [*1D65.0020.0002] # NORTH INDIC FRACTION ONE SIXTEENTH +A834 ; [*1D66.0020.0002] # NORTH INDIC FRACTION ONE EIGHTH +A835 ; [*1D67.0020.0002] # NORTH INDIC FRACTION THREE SIXTEENTHS +A836 ; [*0570.0020.0002] # NORTH INDIC QUARTER MARK +A837 ; [*0571.0020.0002] # NORTH INDIC PLACEHOLDER MARK +A839 ; [*0572.0020.0002] # NORTH INDIC QUANTITY MARK +A874 ; [*0454.0020.0002] # PHAGS-PA SINGLE HEAD MARK +A875 ; [*0455.0020.0002] # PHAGS-PA DOUBLE HEAD MARK +A876 ; [*029C.0020.0002] # PHAGS-PA MARK SHAD +A877 ; [*029D.0020.0002] # PHAGS-PA MARK DOUBLE SHAD +A8CE ; [*0298.0020.0002] # SAURASHTRA DANDA +A8CF ; [*0299.0020.0002] # SAURASHTRA DOUBLE DANDA A8E0 ; [.0000.0000.0000] # COMBINING DEVANAGARI DIGIT ZERO A8E1 ; [.0000.0000.0000] # COMBINING DEVANAGARI DIGIT ONE A8E2 ; [.0000.0000.0000] # COMBINING DEVANAGARI DIGIT TWO @@ -4025,71 +4097,73 @@ A8EF ; [.0000.0000.0000] # COMBINING DEVANAGARI LETTER RA A8F0 ; [.0000.0000.0000] # COMBINING DEVANAGARI LETTER VI A8F1 ; [.0000.0000.0000] # COMBINING DEVANAGARI SIGN AVAGRAHA -A8F8 ; [*03ED.0020.0002] # DEVANAGARI SIGN PUSHPIKA -A8F9 ; [*03EE.0020.0002] # DEVANAGARI GAP FILLER -A8FA ; [*03EF.0020.0002] # DEVANAGARI CARET -A8FC ; [*03F0.0020.0002] # DEVANAGARI SIGN SIDDHAM -A92E ; [*0444.0020.0002] # KAYAH LI SIGN CWI -A92F ; [*0299.0020.0002] # KAYAH LI SIGN SHYA -A95F ; [*02D9.0020.0002] # REJANG SECTION MARK -A9C1 ; [*02CE.0020.0002] # JAVANESE LEFT RERENGGAN -A9C2 ; [*02CF.0020.0002] # JAVANESE RIGHT RERENGGAN -A9C3 ; [*02D0.0020.0002] # JAVANESE PADA ANDAP -A9C4 ; [*02D1.0020.0002] # JAVANESE PADA MADYA -A9C5 ; [*02D2.0020.0002] # JAVANESE PADA LUHUR -A9C6 ; [*02D3.0020.0002] # JAVANESE PADA WINDU -A9C7 ; [*025C.0020.0002] # JAVANESE PADA PANGKAT -A9C8 ; [*02A4.0020.0002] # JAVANESE PADA LINGSA -A9C9 ; [*02A5.0020.0002] # JAVANESE PADA LUNGSI -A9CA ; [*02D4.0020.0002] # JAVANESE PADA ADEG -A9CB ; [*02D5.0020.0002] # JAVANESE PADA ADEG ADEG -A9CC ; [*02D6.0020.0002] # JAVANESE PADA PISELEH -A9CD ; [*02D7.0020.0002] # JAVANESE TURNED PADA PISELEH -A9DE ; [*0445.0020.0002] # JAVANESE PADA TIRTA TUMETES -A9DF ; [*0446.0020.0002] # JAVANESE PADA ISEN-ISEN -AA5C ; [*0447.0020.0002] # CHAM PUNCTUATION SPIRAL -AA5D ; [*02A6.0020.0002] # CHAM PUNCTUATION DANDA -AA5E ; [*02A7.0020.0002] # CHAM PUNCTUATION DOUBLE DANDA -AA5F ; [*02A8.0020.0002] # CHAM PUNCTUATION TRIPLE DANDA -AA77 ; [*0563.0020.0002] # MYANMAR SYMBOL AITON EXCLAMATION -AA78 ; [*0564.0020.0002] # MYANMAR SYMBOL AITON ONE -AA79 ; [*0565.0020.0002] # MYANMAR SYMBOL AITON TWO -AADE ; [*03F7.0020.0002] # TAI VIET SYMBOL HO HOI -AADF ; [*03F8.0020.0002] # TAI VIET SYMBOL KOI KOI -AAF0 ; [*02A9.0020.0002] # MEETEI MAYEK CHEIKHAN -AAF1 ; [*0273.0020.0002] # MEETEI MAYEK AHANG KHUDAM -AB5B ; [*050B.0020.0002] # MODIFIER BREVE WITH INVERTED BREVE -ABEB ; [*02AA.0020.0002] # MEETEI MAYEK CHEIKHEI -FB29 ; [*062C.0020.0005] # HEBREW LETTER ALTERNATIVE PLUS SIGN -FBB2 ; [*0518.0020.0002] # ARABIC SYMBOL DOT ABOVE -FBB3 ; [*0519.0020.0002] # ARABIC SYMBOL DOT BELOW -FBB4 ; [*051A.0020.0002] # ARABIC SYMBOL TWO DOTS ABOVE -FBB5 ; [*051B.0020.0002] # ARABIC SYMBOL TWO DOTS BELOW -FBB6 ; [*051C.0020.0002] # ARABIC SYMBOL THREE DOTS ABOVE -FBB7 ; [*051D.0020.0002] # ARABIC SYMBOL THREE DOTS BELOW -FBB8 ; [*051E.0020.0002] # ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS ABOVE -FBB9 ; [*051F.0020.0002] # ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS BELOW -FBBA ; [*0520.0020.0002] # ARABIC SYMBOL FOUR DOTS ABOVE -FBBB ; [*0521.0020.0002] # ARABIC SYMBOL FOUR DOTS BELOW -FBBC ; [*0522.0020.0002] # ARABIC SYMBOL DOUBLE VERTICAL BAR BELOW -FBBD ; [*0523.0020.0002] # ARABIC SYMBOL TWO DOTS VERTICALLY ABOVE -FBBE ; [*0524.0020.0002] # ARABIC SYMBOL TWO DOTS VERTICALLY BELOW -FBBF ; [*0525.0020.0002] # ARABIC SYMBOL RING -FBC0 ; [*0526.0020.0002] # ARABIC SYMBOL SMALL TAH ABOVE -FBC1 ; [*0527.0020.0002] # ARABIC SYMBOL SMALL TAH BELOW -FD3E ; [*0382.0020.0002] # ORNATE LEFT PARENTHESIS -FD3F ; [*0383.0020.0002] # ORNATE RIGHT PARENTHESIS -FDFD ; [*0517.0020.0002] # ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM -FE10 ; [*0222.0020.0016] # PRESENTATION FORM FOR VERTICAL COMMA -FE11 ; [*0231.0020.0016] # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA -FE12 ; [*028B.0020.0016] # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP -FE13 ; [*023A.0020.0016] # PRESENTATION FORM FOR VERTICAL COLON -FE14 ; [*0234.0020.0016] # PRESENTATION FORM FOR VERTICAL SEMICOLON -FE15 ; [*0261.0020.0016] # PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK -FE16 ; [*0267.0020.0016] # PRESENTATION FORM FOR VERTICAL QUESTION MARK -FE17 ; [*037C.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET -FE18 ; [*037D.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET -FE19 ; [*0278.0020.0016][*0278.0020.0016][*0278.0020.0016] # PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS +A8F8 ; [*0401.0020.0002] # DEVANAGARI SIGN PUSHPIKA +A8F9 ; [*0402.0020.0002] # DEVANAGARI GAP FILLER +A8FA ; [*0403.0020.0002] # DEVANAGARI CARET +A8FC ; [*0404.0020.0002] # DEVANAGARI SIGN SIDDHAM +A92E ; [*045A.0020.0002] # KAYAH LI SIGN CWI +A92F ; [*02A0.0020.0002] # KAYAH LI SIGN SHYA +A95F ; [*02E1.0020.0002] # REJANG SECTION MARK +A9C1 ; [*02D6.0020.0002] # JAVANESE LEFT RERENGGAN +A9C2 ; [*02D7.0020.0002] # JAVANESE RIGHT RERENGGAN +A9C3 ; [*02D8.0020.0002] # JAVANESE PADA ANDAP +A9C4 ; [*02D9.0020.0002] # JAVANESE PADA MADYA +A9C5 ; [*02DA.0020.0002] # JAVANESE PADA LUHUR +A9C6 ; [*02DB.0020.0002] # JAVANESE PADA WINDU +A9C7 ; [*0262.0020.0002] # JAVANESE PADA PANGKAT +A9C8 ; [*02AB.0020.0002] # JAVANESE PADA LINGSA +A9C9 ; [*02AC.0020.0002] # JAVANESE PADA LUNGSI +A9CA ; [*02DC.0020.0002] # JAVANESE PADA ADEG +A9CB ; [*02DD.0020.0002] # JAVANESE PADA ADEG ADEG +A9CC ; [*02DE.0020.0002] # JAVANESE PADA PISELEH +A9CD ; [*02DF.0020.0002] # JAVANESE TURNED PADA PISELEH +A9DE ; [*045B.0020.0002] # JAVANESE PADA TIRTA TUMETES +A9DF ; [*045C.0020.0002] # JAVANESE PADA ISEN-ISEN +AA5C ; [*045D.0020.0002] # CHAM PUNCTUATION SPIRAL +AA5D ; [*02AD.0020.0002] # CHAM PUNCTUATION DANDA +AA5E ; [*02AE.0020.0002] # CHAM PUNCTUATION DOUBLE DANDA +AA5F ; [*02AF.0020.0002] # CHAM PUNCTUATION TRIPLE DANDA +AA77 ; [*059B.0020.0002] # MYANMAR SYMBOL AITON EXCLAMATION +AA78 ; [*059C.0020.0002] # MYANMAR SYMBOL AITON ONE +AA79 ; [*059D.0020.0002] # MYANMAR SYMBOL AITON TWO +AADE ; [*040E.0020.0002] # TAI VIET SYMBOL HO HOI +AADF ; [*040F.0020.0002] # TAI VIET SYMBOL KOI KOI +AAF0 ; [*02B0.0020.0002] # MEETEI MAYEK CHEIKHAN +AAF1 ; [*0279.0020.0002] # MEETEI MAYEK AHANG KHUDAM +AB5B ; [*0529.0020.0002] # MODIFIER BREVE WITH INVERTED BREVE +AB6A ; [*04DA.0020.0002] # MODIFIER LETTER LEFT TACK +AB6B ; [*04DB.0020.0002] # MODIFIER LETTER RIGHT TACK +ABEB ; [*02B1.0020.0002] # MEETEI MAYEK CHEIKHEI +FB29 ; [*0666.0020.0005] # HEBREW LETTER ALTERNATIVE PLUS SIGN +FBB2 ; [*0536.0020.0002] # ARABIC SYMBOL DOT ABOVE +FBB3 ; [*0537.0020.0002] # ARABIC SYMBOL DOT BELOW +FBB4 ; [*0538.0020.0002] # ARABIC SYMBOL TWO DOTS ABOVE +FBB5 ; [*0539.0020.0002] # ARABIC SYMBOL TWO DOTS BELOW +FBB6 ; [*053A.0020.0002] # ARABIC SYMBOL THREE DOTS ABOVE +FBB7 ; [*053B.0020.0002] # ARABIC SYMBOL THREE DOTS BELOW +FBB8 ; [*053C.0020.0002] # ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS ABOVE +FBB9 ; [*053D.0020.0002] # ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS BELOW +FBBA ; [*053E.0020.0002] # ARABIC SYMBOL FOUR DOTS ABOVE +FBBB ; [*053F.0020.0002] # ARABIC SYMBOL FOUR DOTS BELOW +FBBC ; [*0540.0020.0002] # ARABIC SYMBOL DOUBLE VERTICAL BAR BELOW +FBBD ; [*0541.0020.0002] # ARABIC SYMBOL TWO DOTS VERTICALLY ABOVE +FBBE ; [*0542.0020.0002] # ARABIC SYMBOL TWO DOTS VERTICALLY BELOW +FBBF ; [*0543.0020.0002] # ARABIC SYMBOL RING +FBC0 ; [*0544.0020.0002] # ARABIC SYMBOL SMALL TAH ABOVE +FBC1 ; [*0545.0020.0002] # ARABIC SYMBOL SMALL TAH BELOW +FD3E ; [*0392.0020.0002] # ORNATE LEFT PARENTHESIS +FD3F ; [*0393.0020.0002] # ORNATE RIGHT PARENTHESIS +FDFD ; [*0535.0020.0002] # ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM +FE10 ; [*0223.0020.0016] # PRESENTATION FORM FOR VERTICAL COMMA +FE11 ; [*0236.0020.0016] # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA +FE12 ; [*0292.0020.0016] # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP +FE13 ; [*0240.0020.0016] # PRESENTATION FORM FOR VERTICAL COLON +FE14 ; [*023A.0020.0016] # PRESENTATION FORM FOR VERTICAL SEMICOLON +FE15 ; [*0267.0020.0016] # PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK +FE16 ; [*026D.0020.0016] # PRESENTATION FORM FOR VERTICAL QUESTION MARK +FE17 ; [*038C.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET +FE18 ; [*038D.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET +FE19 ; [*027E.0020.0016][*027E.0020.0016][*027E.0020.0016] # PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS FE21 ; [.0000.0000.0000] # COMBINING LIGATURE RIGHT HALF FE23 ; [.0000.0000.0000] # COMBINING DOUBLE TILDE RIGHT HALF FE24 ; [.0000.0000.0000] # COMBINING MACRON LEFT HALF @@ -4101,31 +4175,31 @@ FE2C ; [.0000.0000.0000] # COMBINING MACRON RIGHT HALF BELOW FE2D ; [.0000.0000.0000] # COMBINING CONJOINING MACRON BELOW FE2F ; [.0000.0000.0000] # COMBINING CYRILLIC TITLO RIGHT HALF -FE30 ; [*0278.0020.0016][*0278.0020.0016] # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER +FE30 ; [*027E.0020.0016][*027E.0020.0016] # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER FE31 ; [*0216.0020.0016] # PRESENTATION FORM FOR VERTICAL EM DASH FE32 ; [*0215.0020.0016] # PRESENTATION FORM FOR VERTICAL EN DASH FE33 ; [*020B.0020.0016] # PRESENTATION FORM FOR VERTICAL LOW LINE FE34 ; [*020B.0020.0016] # PRESENTATION FORM FOR VERTICAL WAVY LOW LINE -FE35 ; [*0318.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS -FE36 ; [*0319.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS -FE37 ; [*031C.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET -FE38 ; [*031D.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET -FE39 ; [*037A.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET -FE3A ; [*037B.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET -FE3B ; [*0378.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET -FE3C ; [*0379.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET -FE3D ; [*0372.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET -FE3E ; [*0373.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET -FE3F ; [*0370.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET -FE40 ; [*0371.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET -FE41 ; [*0374.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET -FE42 ; [*0375.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET -FE43 ; [*0376.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET -FE44 ; [*0377.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET -FE45 ; [*0232.0020.0002] # SESAME DOT -FE46 ; [*0233.0020.0002] # WHITE SESAME DOT -FE47 ; [*031A.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET -FE48 ; [*031B.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET +FE35 ; [*0328.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS +FE36 ; [*0329.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS +FE37 ; [*032C.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET +FE38 ; [*032D.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET +FE39 ; [*038A.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET +FE3A ; [*038B.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET +FE3B ; [*0388.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET +FE3C ; [*0389.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET +FE3D ; [*0382.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET +FE3E ; [*0383.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET +FE3F ; [*0380.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET +FE40 ; [*0381.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET +FE41 ; [*0384.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET +FE42 ; [*0385.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET +FE43 ; [*0386.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET +FE44 ; [*0387.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET +FE45 ; [*0237.0020.0002] # SESAME DOT +FE46 ; [*0238.0020.0002] # WHITE SESAME DOT +FE47 ; [*032A.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET +FE48 ; [*032B.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET FE49 ; [*020A.0020.0004] # DASHED OVERLINE FE4A ; [*020A.0020.0004] # CENTRELINE OVERLINE FE4B ; [*020A.0020.0004] # WAVY OVERLINE @@ -4133,489 +4207,508 @@ FE4D ; [*020B.0020.0004] # DASHED LOW LINE FE4E ; [*020B.0020.0004] # CENTRELINE LOW LINE FE4F ; [*020B.0020.0004] # WAVY LOW LINE -FE50 ; [*0222.0020.000F] # SMALL COMMA -FE51 ; [*0231.0020.000F] # SMALL IDEOGRAPHIC COMMA -FE52 ; [*0278.0020.000F] # SMALL FULL STOP -FE54 ; [*0234.0020.000F] # SMALL SEMICOLON -FE55 ; [*023A.0020.000F] # SMALL COLON -FE56 ; [*0267.0020.000F] # SMALL QUESTION MARK -FE57 ; [*0261.0020.000F] # SMALL EXCLAMATION MARK +FE50 ; [*0223.0020.000F] # SMALL COMMA +FE51 ; [*0236.0020.000F] # SMALL IDEOGRAPHIC COMMA +FE52 ; [*027E.0020.000F] # SMALL FULL STOP +FE54 ; [*023A.0020.000F] # SMALL SEMICOLON +FE55 ; [*0240.0020.000F] # SMALL COLON +FE56 ; [*026D.0020.000F] # SMALL QUESTION MARK +FE57 ; [*0267.0020.000F] # SMALL EXCLAMATION MARK FE58 ; [*0216.0020.000F] # SMALL EM DASH -FE59 ; [*0318.0020.000F] # SMALL LEFT PARENTHESIS -FE5A ; [*0319.0020.000F] # SMALL RIGHT PARENTHESIS -FE5B ; [*031C.0020.000F] # SMALL LEFT CURLY BRACKET -FE5C ; [*031D.0020.000F] # SMALL RIGHT CURLY BRACKET -FE5D ; [*037A.0020.000F] # SMALL LEFT TORTOISE SHELL BRACKET -FE5E ; [*037B.0020.000F] # SMALL RIGHT TORTOISE SHELL BRACKET -FE5F ; [*0399.0020.000F] # SMALL NUMBER SIGN -FE60 ; [*0397.0020.000F] # SMALL AMPERSAND -FE61 ; [*0390.0020.000F] # SMALL ASTERISK -FE62 ; [*062C.0020.000F] # SMALL PLUS SIGN +FE59 ; [*0328.0020.000F] # SMALL LEFT PARENTHESIS +FE5A ; [*0329.0020.000F] # SMALL RIGHT PARENTHESIS +FE5B ; [*032C.0020.000F] # SMALL LEFT CURLY BRACKET +FE5C ; [*032D.0020.000F] # SMALL RIGHT CURLY BRACKET +FE5D ; [*038A.0020.000F] # SMALL LEFT TORTOISE SHELL BRACKET +FE5E ; [*038B.0020.000F] # SMALL RIGHT TORTOISE SHELL BRACKET +FE5F ; [*03AC.0020.000F] # SMALL NUMBER SIGN +FE60 ; [*03A9.0020.000F] # SMALL AMPERSAND +FE61 ; [*03A1.0020.000F] # SMALL ASTERISK +FE62 ; [*0666.0020.000F] # SMALL PLUS SIGN FE63 ; [*020D.0020.000F] # SMALL HYPHEN-MINUS -FE64 ; [*0630.0020.000F] # SMALL LESS-THAN SIGN -FE65 ; [*0632.0020.000F] # SMALL GREATER-THAN SIGN -FE66 ; [*0631.0020.000F] # SMALL EQUALS SIGN -FE68 ; [*0396.0020.000F] # SMALL REVERSE SOLIDUS -FE6A ; [*039A.0020.000F] # SMALL PERCENT SIGN -FE6B ; [*038F.0020.000F] # SMALL COMMERCIAL AT +FE64 ; [*066A.0020.000F] # SMALL LESS-THAN SIGN +FE65 ; [*066C.0020.000F] # SMALL GREATER-THAN SIGN +FE66 ; [*066B.0020.000F] # SMALL EQUALS SIGN +FE68 ; [*03A7.0020.000F] # SMALL REVERSE SOLIDUS +FE6A ; [*03AD.0020.000F] # SMALL PERCENT SIGN +FE6B ; [*03A0.0020.000F] # SMALL COMMERCIAL AT FE73 ; [.0000.0000.0000] # ARABIC TAIL FRAGMENT -FF01 ; [*0261.0020.0003] # FULLWIDTH EXCLAMATION MARK -FF02 ; [*030D.0020.0003] # FULLWIDTH QUOTATION MARK -FF03 ; [*0399.0020.0003] # FULLWIDTH NUMBER SIGN -FF05 ; [*039A.0020.0003] # FULLWIDTH PERCENT SIGN -FF06 ; [*0397.0020.0003] # FULLWIDTH AMPERSAND -FF07 ; [*0306.0020.0003] # FULLWIDTH APOSTROPHE -FF08 ; [*0318.0020.0003] # FULLWIDTH LEFT PARENTHESIS -FF09 ; [*0319.0020.0003] # FULLWIDTH RIGHT PARENTHESIS -FF0A ; [*0390.0020.0003] # FULLWIDTH ASTERISK -FF0B ; [*062C.0020.0003] # FULLWIDTH PLUS SIGN -FF0C ; [*0222.0020.0003] # FULLWIDTH COMMA +FF01 ; [*0267.0020.0003] # FULLWIDTH EXCLAMATION MARK +FF02 ; [*031D.0020.0003] # FULLWIDTH QUOTATION MARK +FF03 ; [*03AC.0020.0003] # FULLWIDTH NUMBER SIGN +FF05 ; [*03AD.0020.0003] # FULLWIDTH PERCENT SIGN +FF06 ; [*03A9.0020.0003] # FULLWIDTH AMPERSAND +FF07 ; [*0316.0020.0003] # FULLWIDTH APOSTROPHE +FF08 ; [*0328.0020.0003] # FULLWIDTH LEFT PARENTHESIS +FF09 ; [*0329.0020.0003] # FULLWIDTH RIGHT PARENTHESIS +FF0A ; [*03A1.0020.0003] # FULLWIDTH ASTERISK +FF0B ; [*0666.0020.0003] # FULLWIDTH PLUS SIGN +FF0C ; [*0223.0020.0003] # FULLWIDTH COMMA FF0D ; [*020D.0020.0003] # FULLWIDTH HYPHEN-MINUS -FF0E ; [*0278.0020.0003] # FULLWIDTH FULL STOP -FF0F ; [*0395.0020.0003] # FULLWIDTH SOLIDUS -FF1A ; [*023A.0020.0003] # FULLWIDTH COLON -FF1B ; [*0234.0020.0003] # FULLWIDTH SEMICOLON -FF1C ; [*0630.0020.0003] # FULLWIDTH LESS-THAN SIGN -FF1D ; [*0631.0020.0003] # FULLWIDTH EQUALS SIGN -FF1E ; [*0632.0020.0003] # FULLWIDTH GREATER-THAN SIGN -FF1F ; [*0267.0020.0003] # FULLWIDTH QUESTION MARK -FF20 ; [*038F.0020.0003] # FULLWIDTH COMMERCIAL AT -FF3B ; [*031A.0020.0003] # FULLWIDTH LEFT SQUARE BRACKET -FF3C ; [*0396.0020.0003] # FULLWIDTH REVERSE SOLIDUS -FF3D ; [*031B.0020.0003] # FULLWIDTH RIGHT SQUARE BRACKET -FF3E ; [*049B.0020.0003] # FULLWIDTH CIRCUMFLEX ACCENT +FF0E ; [*027E.0020.0003] # FULLWIDTH FULL STOP +FF0F ; [*03A6.0020.0003] # FULLWIDTH SOLIDUS +FF1A ; [*0240.0020.0003] # FULLWIDTH COLON +FF1B ; [*023A.0020.0003] # FULLWIDTH SEMICOLON +FF1C ; [*066A.0020.0003] # FULLWIDTH LESS-THAN SIGN +FF1D ; [*066B.0020.0003] # FULLWIDTH EQUALS SIGN +FF1E ; [*066C.0020.0003] # FULLWIDTH GREATER-THAN SIGN +FF1F ; [*026D.0020.0003] # FULLWIDTH QUESTION MARK +FF20 ; [*03A0.0020.0003] # FULLWIDTH COMMERCIAL AT +FF3B ; [*032A.0020.0003] # FULLWIDTH LEFT SQUARE BRACKET +FF3C ; [*03A7.0020.0003] # FULLWIDTH REVERSE SOLIDUS +FF3D ; [*032B.0020.0003] # FULLWIDTH RIGHT SQUARE BRACKET +FF3E ; [*04B7.0020.0003] # FULLWIDTH CIRCUMFLEX ACCENT FF3F ; [*020B.0020.0003] # FULLWIDTH LOW LINE -FF40 ; [*0498.0020.0003] # FULLWIDTH GRAVE ACCENT -FF5B ; [*031C.0020.0003] # FULLWIDTH LEFT CURLY BRACKET -FF5C ; [*0634.0020.0003] # FULLWIDTH VERTICAL LINE -FF5D ; [*031D.0020.0003] # FULLWIDTH RIGHT CURLY BRACKET -FF5E ; [*0636.0020.0003] # FULLWIDTH TILDE -FF5F ; [*032E.0020.0003] # FULLWIDTH LEFT WHITE PARENTHESIS -FF60 ; [*032F.0020.0003] # FULLWIDTH RIGHT WHITE PARENTHESIS -FF61 ; [*028B.0020.0012] # HALFWIDTH IDEOGRAPHIC FULL STOP -FF62 ; [*0374.0020.0012] # HALFWIDTH LEFT CORNER BRACKET -FF63 ; [*0375.0020.0012] # HALFWIDTH RIGHT CORNER BRACKET -FF64 ; [*0231.0020.0012] # HALFWIDTH IDEOGRAPHIC COMMA +FF40 ; [*04B4.0020.0003] # FULLWIDTH GRAVE ACCENT +FF5B ; [*032C.0020.0003] # FULLWIDTH LEFT CURLY BRACKET +FF5C ; [*066E.0020.0003] # FULLWIDTH VERTICAL LINE +FF5D ; [*032D.0020.0003] # FULLWIDTH RIGHT CURLY BRACKET +FF5E ; [*0670.0020.0003] # FULLWIDTH TILDE +FF5F ; [*033E.0020.0003] # FULLWIDTH LEFT WHITE PARENTHESIS +FF60 ; [*033F.0020.0003] # FULLWIDTH RIGHT WHITE PARENTHESIS +FF61 ; [*0292.0020.0012] # HALFWIDTH IDEOGRAPHIC FULL STOP +FF62 ; [*0384.0020.0012] # HALFWIDTH LEFT CORNER BRACKET +FF63 ; [*0385.0020.0012] # HALFWIDTH RIGHT CORNER BRACKET +FF64 ; [*0236.0020.0012] # HALFWIDTH IDEOGRAPHIC COMMA FF65 ; [*0221.0020.0012] # HALFWIDTH KATAKANA MIDDLE DOT -FFE2 ; [*0633.0020.0003] # FULLWIDTH NOT SIGN -FFE3 ; [*049C.0020.0003] # FULLWIDTH MACRON -FFE4 ; [*0635.0020.0003] # FULLWIDTH BROKEN BAR -FFE8 ; [*0831.0020.0012] # HALFWIDTH FORMS LIGHT VERTICAL -FFE9 ; [*05B2.0020.0012] # HALFWIDTH LEFTWARDS ARROW -FFEA ; [*05B4.0020.0012] # HALFWIDTH UPWARDS ARROW -FFEB ; [*05B3.0020.0012] # HALFWIDTH RIGHTWARDS ARROW -FFEC ; [*05B5.0020.0012] # HALFWIDTH DOWNWARDS ARROW -FFED ; [*08CF.0020.0012] # HALFWIDTH BLACK SQUARE -FFEE ; [*08FA.0020.0012] # HALFWIDTH WHITE CIRCLE -FFFC ; [*1AF9.0020.0002] # OBJECT REPLACEMENT CHARACTER -10100 ; [*02FB.0020.0002] # AEGEAN WORD SEPARATOR LINE -10101 ; [*02FC.0020.0002] # AEGEAN WORD SEPARATOR DOT -10102 ; [*02FD.0020.0002] # AEGEAN CHECK MARK -10110 ; [*1B4D.0020.0002] # AEGEAN NUMBER TEN -10111 ; [*1B4E.0020.0002] # AEGEAN NUMBER TWENTY -10112 ; [*1B4F.0020.0002] # AEGEAN NUMBER THIRTY -10113 ; [*1B50.0020.0002] # AEGEAN NUMBER FORTY -10114 ; [*1B51.0020.0002] # AEGEAN NUMBER FIFTY -10115 ; [*1B52.0020.0002] # AEGEAN NUMBER SIXTY -10116 ; [*1B53.0020.0002] # AEGEAN NUMBER SEVENTY -10117 ; [*1B54.0020.0002] # AEGEAN NUMBER EIGHTY -10118 ; [*1B55.0020.0002] # AEGEAN NUMBER NINETY -10119 ; [*1B56.0020.0002] # AEGEAN NUMBER ONE HUNDRED -1011A ; [*1B57.0020.0002] # AEGEAN NUMBER TWO HUNDRED -1011B ; [*1B58.0020.0002] # AEGEAN NUMBER THREE HUNDRED -1011C ; [*1B59.0020.0002] # AEGEAN NUMBER FOUR HUNDRED -1011D ; [*1B5A.0020.0002] # AEGEAN NUMBER FIVE HUNDRED -1011E ; [*1B5B.0020.0002] # AEGEAN NUMBER SIX HUNDRED -1011F ; [*1B5C.0020.0002] # AEGEAN NUMBER SEVEN HUNDRED -10120 ; [*1B5D.0020.0002] # AEGEAN NUMBER EIGHT HUNDRED -10121 ; [*1B5E.0020.0002] # AEGEAN NUMBER NINE HUNDRED -10122 ; [*1B5F.0020.0002] # AEGEAN NUMBER ONE THOUSAND -10123 ; [*1B60.0020.0002] # AEGEAN NUMBER TWO THOUSAND -10124 ; [*1B61.0020.0002] # AEGEAN NUMBER THREE THOUSAND -10125 ; [*1B62.0020.0002] # AEGEAN NUMBER FOUR THOUSAND -10126 ; [*1B63.0020.0002] # AEGEAN NUMBER FIVE THOUSAND -10127 ; [*1B64.0020.0002] # AEGEAN NUMBER SIX THOUSAND -10128 ; [*1B65.0020.0002] # AEGEAN NUMBER SEVEN THOUSAND -10129 ; [*1B66.0020.0002] # AEGEAN NUMBER EIGHT THOUSAND -1012A ; [*1B67.0020.0002] # AEGEAN NUMBER NINE THOUSAND -1012B ; [*1B68.0020.0002] # AEGEAN NUMBER TEN THOUSAND -1012C ; [*1B69.0020.0002] # AEGEAN NUMBER TWENTY THOUSAND -1012D ; [*1B6A.0020.0002] # AEGEAN NUMBER THIRTY THOUSAND -1012E ; [*1B6B.0020.0002] # AEGEAN NUMBER FORTY THOUSAND -1012F ; [*1B6C.0020.0002] # AEGEAN NUMBER FIFTY THOUSAND -10130 ; [*1B6D.0020.0002] # AEGEAN NUMBER SIXTY THOUSAND -10131 ; [*1B6E.0020.0002] # AEGEAN NUMBER SEVENTY THOUSAND -10132 ; [*1B6F.0020.0002] # AEGEAN NUMBER EIGHTY THOUSAND -10133 ; [*1B70.0020.0002] # AEGEAN NUMBER NINETY THOUSAND -10137 ; [*0F90.0020.0002] # AEGEAN WEIGHT BASE UNIT -10138 ; [*0F91.0020.0002] # AEGEAN WEIGHT FIRST SUBUNIT -10139 ; [*0F92.0020.0002] # AEGEAN WEIGHT SECOND SUBUNIT -1013A ; [*0F93.0020.0002] # AEGEAN WEIGHT THIRD SUBUNIT -1013B ; [*0F94.0020.0002] # AEGEAN WEIGHT FOURTH SUBUNIT -1013C ; [*0F95.0020.0002] # AEGEAN DRY MEASURE FIRST SUBUNIT -1013D ; [*0F96.0020.0002] # AEGEAN LIQUID MEASURE FIRST SUBUNIT -1013E ; [*0F97.0020.0002] # AEGEAN MEASURE SECOND SUBUNIT -1013F ; [*0F98.0020.0002] # AEGEAN MEASURE THIRD SUBUNIT -10140 ; [*1B71.0020.0002] # GREEK ACROPHONIC ATTIC ONE QUARTER -10141 ; [*1B72.0020.0002] # GREEK ACROPHONIC ATTIC ONE HALF -10144 ; [*1B73.0020.0002] # GREEK ACROPHONIC ATTIC FIFTY -10145 ; [*1B74.0020.0002] # GREEK ACROPHONIC ATTIC FIVE HUNDRED -10146 ; [*1B75.0020.0002] # GREEK ACROPHONIC ATTIC FIVE THOUSAND -10147 ; [*1B76.0020.0002] # GREEK ACROPHONIC ATTIC FIFTY THOUSAND -10149 ; [*1B77.0020.0002] # GREEK ACROPHONIC ATTIC TEN TALENTS -1014A ; [*1B78.0020.0002] # GREEK ACROPHONIC ATTIC FIFTY TALENTS -1014B ; [*1B79.0020.0002] # GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS -1014C ; [*1B7A.0020.0002] # GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS -1014D ; [*1B7B.0020.0002] # GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS -1014E ; [*1B7C.0020.0002] # GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS -10150 ; [*1B7D.0020.0002] # GREEK ACROPHONIC ATTIC TEN STATERS -10151 ; [*1B7E.0020.0002] # GREEK ACROPHONIC ATTIC FIFTY STATERS -10152 ; [*1B7F.0020.0002] # GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS -10153 ; [*1B80.0020.0002] # GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS -10154 ; [*1B81.0020.0002] # GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS -10155 ; [*1B82.0020.0002] # GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS -10156 ; [*1B83.0020.0002] # GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS -10157 ; [*1B84.0020.0002] # GREEK ACROPHONIC ATTIC TEN MNAS -10160 ; [*1B85.0020.0002] # GREEK ACROPHONIC TROEZENIAN TEN -10161 ; [*1B86.0020.0002] # GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM -10162 ; [*1B87.0020.0002] # GREEK ACROPHONIC HERMIONIAN TEN -10163 ; [*1B88.0020.0002] # GREEK ACROPHONIC MESSENIAN TEN -10164 ; [*1B89.0020.0002] # GREEK ACROPHONIC THESPIAN TEN -10165 ; [*1B8A.0020.0002] # GREEK ACROPHONIC THESPIAN THIRTY -10166 ; [*1B8B.0020.0002] # GREEK ACROPHONIC TROEZENIAN FIFTY -10167 ; [*1B8C.0020.0002] # GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM -10168 ; [*1B8D.0020.0002] # GREEK ACROPHONIC HERMIONIAN FIFTY -10169 ; [*1B8E.0020.0002] # GREEK ACROPHONIC THESPIAN FIFTY -1016A ; [*1B8F.0020.0002] # GREEK ACROPHONIC THESPIAN ONE HUNDRED -1016B ; [*1B90.0020.0002] # GREEK ACROPHONIC THESPIAN THREE HUNDRED -1016C ; [*1B91.0020.0002] # GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED -1016D ; [*1B92.0020.0002] # GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED -1016E ; [*1B93.0020.0002] # GREEK ACROPHONIC THESPIAN FIVE HUNDRED -1016F ; [*1B94.0020.0002] # GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED -10170 ; [*1B95.0020.0002] # GREEK ACROPHONIC NAXIAN FIVE HUNDRED -10171 ; [*1B96.0020.0002] # GREEK ACROPHONIC THESPIAN ONE THOUSAND -10172 ; [*1B97.0020.0002] # GREEK ACROPHONIC THESPIAN FIVE THOUSAND -10174 ; [*1B98.0020.0002] # GREEK ACROPHONIC STRATIAN FIFTY MNAS -10175 ; [*1B99.0020.0002] # GREEK ONE HALF SIGN -10176 ; [*1B9A.0020.0002] # GREEK ONE HALF SIGN ALTERNATE FORM -10177 ; [*1B9B.0020.0002] # GREEK TWO THIRDS SIGN -10178 ; [*1B9C.0020.0002] # GREEK THREE QUARTERS SIGN -10179 ; [*0F99.0020.0002] # GREEK YEAR SIGN -1017A ; [*0F9A.0020.0002] # GREEK TALENT SIGN -1017B ; [*0F9B.0020.0002] # GREEK DRACHMA SIGN -1017C ; [*0F9C.0020.0002] # GREEK OBOL SIGN -1017D ; [*0F9D.0020.0002] # GREEK TWO OBOLS SIGN -1017E ; [*0F9E.0020.0002] # GREEK THREE OBOLS SIGN -1017F ; [*0F9F.0020.0002] # GREEK FOUR OBOLS SIGN -10180 ; [*0FA0.0020.0002] # GREEK FIVE OBOLS SIGN -10181 ; [*0FA1.0020.0002] # GREEK METRETES SIGN -10182 ; [*0FA2.0020.0002] # GREEK KYATHOS BASE SIGN -10183 ; [*0FA3.0020.0002] # GREEK LITRA SIGN -10184 ; [*0FA4.0020.0002] # GREEK OUNKIA SIGN -10185 ; [*0FA5.0020.0002] # GREEK XESTES SIGN -10186 ; [*0FA6.0020.0002] # GREEK ARTABE SIGN -10187 ; [*0FA7.0020.0002] # GREEK AROURA SIGN -10188 ; [*0FA8.0020.0002] # GREEK GRAMMA SIGN -10189 ; [*0FA9.0020.0002] # GREEK TRYBLION BASE SIGN -1018B ; [*1B9D.0020.0002] # GREEK ONE QUARTER SIGN -1018C ; [*0FAA.0020.0002] # GREEK SINUSOID SIGN -1018D ; [*0FAB.0020.0002] # GREEK INDICTION SIGN -1018E ; [*0FAC.0020.0002] # NOMISMA SIGN -10190 ; [*0FAD.0020.0002] # ROMAN SEXTANS SIGN -10191 ; [*0FAE.0020.0002] # ROMAN UNCIA SIGN -10192 ; [*0FAF.0020.0002] # ROMAN SEMUNCIA SIGN -10193 ; [*0FB0.0020.0002] # ROMAN SEXTULA SIGN -10194 ; [*0FB1.0020.0002] # ROMAN DIMIDIA SEXTULA SIGN -10195 ; [*0FB2.0020.0002] # ROMAN SILIQUA SIGN -10196 ; [*0FB3.0020.0002] # ROMAN DENARIUS SIGN -10197 ; [*0FB4.0020.0002] # ROMAN QUINARIUS SIGN -10198 ; [*0FB5.0020.0002] # ROMAN SESTERTIUS SIGN -10199 ; [*0FB6.0020.0002] # ROMAN DUPONDIUS SIGN -1019A ; [*0FB7.0020.0002] # ROMAN AS SIGN -1019B ; [*0FB8.0020.0002] # ROMAN CENTURIAL SIGN -101A0 ; [*0FB9.0020.0002] # GREEK SYMBOL TAU RHO -101D0 ; [*0FBA.0020.0002] # PHAISTOS DISC SIGN PEDESTRIAN -101D1 ; [*0FBB.0020.0002] # PHAISTOS DISC SIGN PLUMED HEAD -101D2 ; [*0FBC.0020.0002] # PHAISTOS DISC SIGN TATTOOED HEAD -101D3 ; [*0FBD.0020.0002] # PHAISTOS DISC SIGN CAPTIVE -101D4 ; [*0FBE.0020.0002] # PHAISTOS DISC SIGN CHILD -101D5 ; [*0FBF.0020.0002] # PHAISTOS DISC SIGN WOMAN -101D6 ; [*0FC0.0020.0002] # PHAISTOS DISC SIGN HELMET -101D7 ; [*0FC1.0020.0002] # PHAISTOS DISC SIGN GAUNTLET -101D8 ; [*0FC2.0020.0002] # PHAISTOS DISC SIGN TIARA -101D9 ; [*0FC3.0020.0002] # PHAISTOS DISC SIGN ARROW -101DA ; [*0FC4.0020.0002] # PHAISTOS DISC SIGN BOW -101DB ; [*0FC5.0020.0002] # PHAISTOS DISC SIGN SHIELD -101DC ; [*0FC6.0020.0002] # PHAISTOS DISC SIGN CLUB -101DD ; [*0FC7.0020.0002] # PHAISTOS DISC SIGN MANACLES -101DE ; [*0FC8.0020.0002] # PHAISTOS DISC SIGN MATTOCK -101DF ; [*0FC9.0020.0002] # PHAISTOS DISC SIGN SAW -101E0 ; [*0FCA.0020.0002] # PHAISTOS DISC SIGN LID -101E1 ; [*0FCB.0020.0002] # PHAISTOS DISC SIGN BOOMERANG -101E2 ; [*0FCC.0020.0002] # PHAISTOS DISC SIGN CARPENTRY PLANE -101E3 ; [*0FCD.0020.0002] # PHAISTOS DISC SIGN DOLIUM -101E4 ; [*0FCE.0020.0002] # PHAISTOS DISC SIGN COMB -101E5 ; [*0FCF.0020.0002] # PHAISTOS DISC SIGN SLING -101E6 ; [*0FD0.0020.0002] # PHAISTOS DISC SIGN COLUMN -101E7 ; [*0FD1.0020.0002] # PHAISTOS DISC SIGN BEEHIVE -101E8 ; [*0FD2.0020.0002] # PHAISTOS DISC SIGN SHIP -101E9 ; [*0FD3.0020.0002] # PHAISTOS DISC SIGN HORN -101EA ; [*0FD4.0020.0002] # PHAISTOS DISC SIGN HIDE -101EB ; [*0FD5.0020.0002] # PHAISTOS DISC SIGN BULLS LEG -101EC ; [*0FD6.0020.0002] # PHAISTOS DISC SIGN CAT -101ED ; [*0FD7.0020.0002] # PHAISTOS DISC SIGN RAM -101EE ; [*0FD8.0020.0002] # PHAISTOS DISC SIGN EAGLE -101EF ; [*0FD9.0020.0002] # PHAISTOS DISC SIGN DOVE -101F0 ; [*0FDA.0020.0002] # PHAISTOS DISC SIGN TUNNY -101F1 ; [*0FDB.0020.0002] # PHAISTOS DISC SIGN BEE -101F2 ; [*0FDC.0020.0002] # PHAISTOS DISC SIGN PLANE TREE -101F3 ; [*0FDD.0020.0002] # PHAISTOS DISC SIGN VINE -101F4 ; [*0FDE.0020.0002] # PHAISTOS DISC SIGN PAPYRUS -101F5 ; [*0FDF.0020.0002] # PHAISTOS DISC SIGN ROSETTE -101F6 ; [*0FE0.0020.0002] # PHAISTOS DISC SIGN LILY -101F7 ; [*0FE1.0020.0002] # PHAISTOS DISC SIGN OX BACK -101F8 ; [*0FE2.0020.0002] # PHAISTOS DISC SIGN FLUTE -101F9 ; [*0FE3.0020.0002] # PHAISTOS DISC SIGN GRATER -101FA ; [*0FE4.0020.0002] # PHAISTOS DISC SIGN STRAINER -101FB ; [*0FE5.0020.0002] # PHAISTOS DISC SIGN SMALL AXE -101FC ; [*0FE6.0020.0002] # PHAISTOS DISC SIGN WAVY BAND +FFE2 ; [*066D.0020.0003] # FULLWIDTH NOT SIGN +FFE3 ; [*04B8.0020.0003] # FULLWIDTH MACRON +FFE4 ; [*066F.0020.0003] # FULLWIDTH BROKEN BAR +FFE8 ; [*086B.0020.0012] # HALFWIDTH FORMS LIGHT VERTICAL +FFE9 ; [*05EC.0020.0012] # HALFWIDTH LEFTWARDS ARROW +FFEA ; [*05EE.0020.0012] # HALFWIDTH UPWARDS ARROW +FFEB ; [*05ED.0020.0012] # HALFWIDTH RIGHTWARDS ARROW +FFEC ; [*05EF.0020.0012] # HALFWIDTH DOWNWARDS ARROW +FFED ; [*0909.0020.0012] # HALFWIDTH BLACK SQUARE +FFEE ; [*0934.0020.0012] # HALFWIDTH WHITE CIRCLE +FFFC ; [*1D55.0020.0002] # OBJECT REPLACEMENT CHARACTER +10100 ; [*030B.0020.0002] # AEGEAN WORD SEPARATOR LINE +10101 ; [*030C.0020.0002] # AEGEAN WORD SEPARATOR DOT +10102 ; [*030D.0020.0002] # AEGEAN CHECK MARK +10110 ; [*1DBE.0020.0002] # AEGEAN NUMBER TEN +10111 ; [*1DBF.0020.0002] # AEGEAN NUMBER TWENTY +10112 ; [*1DC0.0020.0002] # AEGEAN NUMBER THIRTY +10113 ; [*1DC1.0020.0002] # AEGEAN NUMBER FORTY +10114 ; [*1DC2.0020.0002] # AEGEAN NUMBER FIFTY +10115 ; [*1DC3.0020.0002] # AEGEAN NUMBER SIXTY +10116 ; [*1DC4.0020.0002] # AEGEAN NUMBER SEVENTY +10117 ; [*1DC5.0020.0002] # AEGEAN NUMBER EIGHTY +10118 ; [*1DC6.0020.0002] # AEGEAN NUMBER NINETY +10119 ; [*1DC7.0020.0002] # AEGEAN NUMBER ONE HUNDRED +1011A ; [*1DC8.0020.0002] # AEGEAN NUMBER TWO HUNDRED +1011B ; [*1DC9.0020.0002] # AEGEAN NUMBER THREE HUNDRED +1011C ; [*1DCA.0020.0002] # AEGEAN NUMBER FOUR HUNDRED +1011D ; [*1DCB.0020.0002] # AEGEAN NUMBER FIVE HUNDRED +1011E ; [*1DCC.0020.0002] # AEGEAN NUMBER SIX HUNDRED +1011F ; [*1DCD.0020.0002] # AEGEAN NUMBER SEVEN HUNDRED +10120 ; [*1DCE.0020.0002] # AEGEAN NUMBER EIGHT HUNDRED +10121 ; [*1DCF.0020.0002] # AEGEAN NUMBER NINE HUNDRED +10122 ; [*1DD0.0020.0002] # AEGEAN NUMBER ONE THOUSAND +10123 ; [*1DD1.0020.0002] # AEGEAN NUMBER TWO THOUSAND +10124 ; [*1DD2.0020.0002] # AEGEAN NUMBER THREE THOUSAND +10125 ; [*1DD3.0020.0002] # AEGEAN NUMBER FOUR THOUSAND +10126 ; [*1DD4.0020.0002] # AEGEAN NUMBER FIVE THOUSAND +10127 ; [*1DD5.0020.0002] # AEGEAN NUMBER SIX THOUSAND +10128 ; [*1DD6.0020.0002] # AEGEAN NUMBER SEVEN THOUSAND +10129 ; [*1DD7.0020.0002] # AEGEAN NUMBER EIGHT THOUSAND +1012A ; [*1DD8.0020.0002] # AEGEAN NUMBER NINE THOUSAND +1012B ; [*1DD9.0020.0002] # AEGEAN NUMBER TEN THOUSAND +1012C ; [*1DDA.0020.0002] # AEGEAN NUMBER TWENTY THOUSAND +1012D ; [*1DDB.0020.0002] # AEGEAN NUMBER THIRTY THOUSAND +1012E ; [*1DDC.0020.0002] # AEGEAN NUMBER FORTY THOUSAND +1012F ; [*1DDD.0020.0002] # AEGEAN NUMBER FIFTY THOUSAND +10130 ; [*1DDE.0020.0002] # AEGEAN NUMBER SIXTY THOUSAND +10131 ; [*1DDF.0020.0002] # AEGEAN NUMBER SEVENTY THOUSAND +10132 ; [*1DE0.0020.0002] # AEGEAN NUMBER EIGHTY THOUSAND +10133 ; [*1DE1.0020.0002] # AEGEAN NUMBER NINETY THOUSAND +10137 ; [*10C4.0020.0002] # AEGEAN WEIGHT BASE UNIT +10138 ; [*10C5.0020.0002] # AEGEAN WEIGHT FIRST SUBUNIT +10139 ; [*10C6.0020.0002] # AEGEAN WEIGHT SECOND SUBUNIT +1013A ; [*10C7.0020.0002] # AEGEAN WEIGHT THIRD SUBUNIT +1013B ; [*10C8.0020.0002] # AEGEAN WEIGHT FOURTH SUBUNIT +1013C ; [*10C9.0020.0002] # AEGEAN DRY MEASURE FIRST SUBUNIT +1013D ; [*10CA.0020.0002] # AEGEAN LIQUID MEASURE FIRST SUBUNIT +1013E ; [*10CB.0020.0002] # AEGEAN MEASURE SECOND SUBUNIT +1013F ; [*10CC.0020.0002] # AEGEAN MEASURE THIRD SUBUNIT +10140 ; [*1DE2.0020.0002] # GREEK ACROPHONIC ATTIC ONE QUARTER +10141 ; [*1DE3.0020.0002] # GREEK ACROPHONIC ATTIC ONE HALF +10144 ; [*1DE4.0020.0002] # GREEK ACROPHONIC ATTIC FIFTY +10145 ; [*1DE5.0020.0002] # GREEK ACROPHONIC ATTIC FIVE HUNDRED +10146 ; [*1DE6.0020.0002] # GREEK ACROPHONIC ATTIC FIVE THOUSAND +10147 ; [*1DE7.0020.0002] # GREEK ACROPHONIC ATTIC FIFTY THOUSAND +10149 ; [*1DE8.0020.0002] # GREEK ACROPHONIC ATTIC TEN TALENTS +1014A ; [*1DE9.0020.0002] # GREEK ACROPHONIC ATTIC FIFTY TALENTS +1014B ; [*1DEA.0020.0002] # GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS +1014C ; [*1DEB.0020.0002] # GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS +1014D ; [*1DEC.0020.0002] # GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS +1014E ; [*1DED.0020.0002] # GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS +10150 ; [*1DEE.0020.0002] # GREEK ACROPHONIC ATTIC TEN STATERS +10151 ; [*1DEF.0020.0002] # GREEK ACROPHONIC ATTIC FIFTY STATERS +10152 ; [*1DF0.0020.0002] # GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS +10153 ; [*1DF1.0020.0002] # GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS +10154 ; [*1DF2.0020.0002] # GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS +10155 ; [*1DF3.0020.0002] # GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS +10156 ; [*1DF4.0020.0002] # GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS +10157 ; [*1DF5.0020.0002] # GREEK ACROPHONIC ATTIC TEN MNAS +10160 ; [*1DF6.0020.0002] # GREEK ACROPHONIC TROEZENIAN TEN +10161 ; [*1DF7.0020.0002] # GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM +10162 ; [*1DF8.0020.0002] # GREEK ACROPHONIC HERMIONIAN TEN +10163 ; [*1DF9.0020.0002] # GREEK ACROPHONIC MESSENIAN TEN +10164 ; [*1DFA.0020.0002] # GREEK ACROPHONIC THESPIAN TEN +10165 ; [*1DFB.0020.0002] # GREEK ACROPHONIC THESPIAN THIRTY +10166 ; [*1DFC.0020.0002] # GREEK ACROPHONIC TROEZENIAN FIFTY +10167 ; [*1DFD.0020.0002] # GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM +10168 ; [*1DFE.0020.0002] # GREEK ACROPHONIC HERMIONIAN FIFTY +10169 ; [*1DFF.0020.0002] # GREEK ACROPHONIC THESPIAN FIFTY +1016A ; [*1E00.0020.0002] # GREEK ACROPHONIC THESPIAN ONE HUNDRED +1016B ; [*1E01.0020.0002] # GREEK ACROPHONIC THESPIAN THREE HUNDRED +1016C ; [*1E02.0020.0002] # GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED +1016D ; [*1E03.0020.0002] # GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED +1016E ; [*1E04.0020.0002] # GREEK ACROPHONIC THESPIAN FIVE HUNDRED +1016F ; [*1E05.0020.0002] # GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED +10170 ; [*1E06.0020.0002] # GREEK ACROPHONIC NAXIAN FIVE HUNDRED +10171 ; [*1E07.0020.0002] # GREEK ACROPHONIC THESPIAN ONE THOUSAND +10172 ; [*1E08.0020.0002] # GREEK ACROPHONIC THESPIAN FIVE THOUSAND +10174 ; [*1E09.0020.0002] # GREEK ACROPHONIC STRATIAN FIFTY MNAS +10175 ; [*1E0A.0020.0002] # GREEK ONE HALF SIGN +10176 ; [*1E0B.0020.0002] # GREEK ONE HALF SIGN ALTERNATE FORM +10177 ; [*1E0C.0020.0002] # GREEK TWO THIRDS SIGN +10178 ; [*1E0D.0020.0002] # GREEK THREE QUARTERS SIGN +10179 ; [*10CD.0020.0002] # GREEK YEAR SIGN +1017A ; [*10CE.0020.0002] # GREEK TALENT SIGN +1017B ; [*10CF.0020.0002] # GREEK DRACHMA SIGN +1017C ; [*10D0.0020.0002] # GREEK OBOL SIGN +1017D ; [*10D1.0020.0002] # GREEK TWO OBOLS SIGN +1017E ; [*10D2.0020.0002] # GREEK THREE OBOLS SIGN +1017F ; [*10D3.0020.0002] # GREEK FOUR OBOLS SIGN +10180 ; [*10D4.0020.0002] # GREEK FIVE OBOLS SIGN +10181 ; [*10D5.0020.0002] # GREEK METRETES SIGN +10182 ; [*10D6.0020.0002] # GREEK KYATHOS BASE SIGN +10183 ; [*10D7.0020.0002] # GREEK LITRA SIGN +10184 ; [*10D8.0020.0002] # GREEK OUNKIA SIGN +10185 ; [*10D9.0020.0002] # GREEK XESTES SIGN +10186 ; [*10DA.0020.0002] # GREEK ARTABE SIGN +10187 ; [*10DB.0020.0002] # GREEK AROURA SIGN +10188 ; [*10DC.0020.0002] # GREEK GRAMMA SIGN +10189 ; [*10DD.0020.0002] # GREEK TRYBLION BASE SIGN +1018B ; [*1E0E.0020.0002] # GREEK ONE QUARTER SIGN +1018C ; [*10DE.0020.0002] # GREEK SINUSOID SIGN +1018D ; [*10DF.0020.0002] # GREEK INDICTION SIGN +1018E ; [*10E0.0020.0002] # NOMISMA SIGN +10190 ; [*10E1.0020.0002] # ROMAN SEXTANS SIGN +10191 ; [*10E2.0020.0002] # ROMAN UNCIA SIGN +10192 ; [*10E3.0020.0002] # ROMAN SEMUNCIA SIGN +10193 ; [*10E4.0020.0002] # ROMAN SEXTULA SIGN +10194 ; [*10E5.0020.0002] # ROMAN DIMIDIA SEXTULA SIGN +10195 ; [*10E6.0020.0002] # ROMAN SILIQUA SIGN +10196 ; [*10E7.0020.0002] # ROMAN DENARIUS SIGN +10197 ; [*10E8.0020.0002] # ROMAN QUINARIUS SIGN +10198 ; [*10E9.0020.0002] # ROMAN SESTERTIUS SIGN +10199 ; [*10EA.0020.0002] # ROMAN DUPONDIUS SIGN +1019A ; [*10EB.0020.0002] # ROMAN AS SIGN +1019B ; [*10EC.0020.0002] # ROMAN CENTURIAL SIGN +1019C ; [*10ED.0020.0002] # ASCIA SYMBOL +101A0 ; [*10EE.0020.0002] # GREEK SYMBOL TAU RHO +101D0 ; [*10EF.0020.0002] # PHAISTOS DISC SIGN PEDESTRIAN +101D1 ; [*10F0.0020.0002] # PHAISTOS DISC SIGN PLUMED HEAD +101D2 ; [*10F1.0020.0002] # PHAISTOS DISC SIGN TATTOOED HEAD +101D3 ; [*10F2.0020.0002] # PHAISTOS DISC SIGN CAPTIVE +101D4 ; [*10F3.0020.0002] # PHAISTOS DISC SIGN CHILD +101D5 ; [*10F4.0020.0002] # PHAISTOS DISC SIGN WOMAN +101D6 ; [*10F5.0020.0002] # PHAISTOS DISC SIGN HELMET +101D7 ; [*10F6.0020.0002] # PHAISTOS DISC SIGN GAUNTLET +101D8 ; [*10F7.0020.0002] # PHAISTOS DISC SIGN TIARA +101D9 ; [*10F8.0020.0002] # PHAISTOS DISC SIGN ARROW +101DA ; [*10F9.0020.0002] # PHAISTOS DISC SIGN BOW +101DB ; [*10FA.0020.0002] # PHAISTOS DISC SIGN SHIELD +101DC ; [*10FB.0020.0002] # PHAISTOS DISC SIGN CLUB +101DD ; [*10FC.0020.0002] # PHAISTOS DISC SIGN MANACLES +101DE ; [*10FD.0020.0002] # PHAISTOS DISC SIGN MATTOCK +101DF ; [*10FE.0020.0002] # PHAISTOS DISC SIGN SAW +101E0 ; [*10FF.0020.0002] # PHAISTOS DISC SIGN LID +101E1 ; [*1100.0020.0002] # PHAISTOS DISC SIGN BOOMERANG +101E2 ; [*1101.0020.0002] # PHAISTOS DISC SIGN CARPENTRY PLANE +101E3 ; [*1102.0020.0002] # PHAISTOS DISC SIGN DOLIUM +101E4 ; [*1103.0020.0002] # PHAISTOS DISC SIGN COMB +101E5 ; [*1104.0020.0002] # PHAISTOS DISC SIGN SLING +101E6 ; [*1105.0020.0002] # PHAISTOS DISC SIGN COLUMN +101E7 ; [*1106.0020.0002] # PHAISTOS DISC SIGN BEEHIVE +101E8 ; [*1107.0020.0002] # PHAISTOS DISC SIGN SHIP +101E9 ; [*1108.0020.0002] # PHAISTOS DISC SIGN HORN +101EA ; [*1109.0020.0002] # PHAISTOS DISC SIGN HIDE +101EB ; [*110A.0020.0002] # PHAISTOS DISC SIGN BULLS LEG +101EC ; [*110B.0020.0002] # PHAISTOS DISC SIGN CAT +101ED ; [*110C.0020.0002] # PHAISTOS DISC SIGN RAM +101EE ; [*110D.0020.0002] # PHAISTOS DISC SIGN EAGLE +101EF ; [*110E.0020.0002] # PHAISTOS DISC SIGN DOVE +101F0 ; [*110F.0020.0002] # PHAISTOS DISC SIGN TUNNY +101F1 ; [*1110.0020.0002] # PHAISTOS DISC SIGN BEE +101F2 ; [*1111.0020.0002] # PHAISTOS DISC SIGN PLANE TREE +101F3 ; [*1112.0020.0002] # PHAISTOS DISC SIGN VINE +101F4 ; [*1113.0020.0002] # PHAISTOS DISC SIGN PAPYRUS +101F5 ; [*1114.0020.0002] # PHAISTOS DISC SIGN ROSETTE +101F6 ; [*1115.0020.0002] # PHAISTOS DISC SIGN LILY +101F7 ; [*1116.0020.0002] # PHAISTOS DISC SIGN OX BACK +101F8 ; [*1117.0020.0002] # PHAISTOS DISC SIGN FLUTE +101F9 ; [*1118.0020.0002] # PHAISTOS DISC SIGN GRATER +101FA ; [*1119.0020.0002] # PHAISTOS DISC SIGN STRAINER +101FB ; [*111A.0020.0002] # PHAISTOS DISC SIGN SMALL AXE +101FC ; [*111B.0020.0002] # PHAISTOS DISC SIGN WAVY BAND 102E0 ; [.0000.0000.0000] # COPTIC EPACT THOUSANDS MARK -102EA ; [*1B9E.0020.0002] # COPTIC EPACT NUMBER TEN -102EB ; [*1B9F.0020.0002] # COPTIC EPACT NUMBER TWENTY -102EC ; [*1BA0.0020.0002] # COPTIC EPACT NUMBER THIRTY -102ED ; [*1BA1.0020.0002] # COPTIC EPACT NUMBER FORTY -102EE ; [*1BA2.0020.0002] # COPTIC EPACT NUMBER FIFTY -102EF ; [*1BA3.0020.0002] # COPTIC EPACT NUMBER SIXTY -102F0 ; [*1BA4.0020.0002] # COPTIC EPACT NUMBER SEVENTY -102F1 ; [*1BA5.0020.0002] # COPTIC EPACT NUMBER EIGHTY -102F2 ; [*1BA6.0020.0002] # COPTIC EPACT NUMBER NINETY -102F3 ; [*1BA7.0020.0002] # COPTIC EPACT NUMBER ONE HUNDRED -102F4 ; [*1BA8.0020.0002] # COPTIC EPACT NUMBER TWO HUNDRED -102F5 ; [*1BA9.0020.0002] # COPTIC EPACT NUMBER THREE HUNDRED -102F6 ; [*1BAA.0020.0002] # COPTIC EPACT NUMBER FOUR HUNDRED -102F7 ; [*1BAB.0020.0002] # COPTIC EPACT NUMBER FIVE HUNDRED -102F8 ; [*1BAC.0020.0002] # COPTIC EPACT NUMBER SIX HUNDRED -102F9 ; [*1BAD.0020.0002] # COPTIC EPACT NUMBER SEVEN HUNDRED -102FA ; [*1BAE.0020.0002] # COPTIC EPACT NUMBER EIGHT HUNDRED -102FB ; [*1BAF.0020.0002] # COPTIC EPACT NUMBER NINE HUNDRED -10322 ; [*1B47.0020.0002] # OLD ITALIC NUMERAL TEN -10323 ; [*1B48.0020.0002] # OLD ITALIC NUMERAL FIFTY -1039F ; [*02FE.0020.0002] # UGARITIC WORD DIVIDER -103D0 ; [*02FF.0020.0002] # OLD PERSIAN WORD DIVIDER -103D3 ; [*1BB0.0020.0002] # OLD PERSIAN NUMBER TEN -103D4 ; [*1BB1.0020.0002] # OLD PERSIAN NUMBER TWENTY -103D5 ; [*1BB2.0020.0002] # OLD PERSIAN NUMBER HUNDRED -1056F ; [*0448.0020.0002] # CAUCASIAN ALBANIAN CITATION MARK -10857 ; [*02DA.0020.0002] # IMPERIAL ARAMAIC SECTION SIGN -1085B ; [*1BC2.0020.0002] # IMPERIAL ARAMAIC NUMBER TEN -1085C ; [*1BC3.0020.0002] # IMPERIAL ARAMAIC NUMBER TWENTY -1085D ; [*1BC4.0020.0002] # IMPERIAL ARAMAIC NUMBER ONE HUNDRED -1085E ; [*1BC5.0020.0002] # IMPERIAL ARAMAIC NUMBER ONE THOUSAND -1085F ; [*1BC6.0020.0002] # IMPERIAL ARAMAIC NUMBER TEN THOUSAND -10877 ; [*0FE7.0020.0002] # PALMYRENE LEFT-POINTING FLEURON -10878 ; [*0FE8.0020.0002] # PALMYRENE RIGHT-POINTING FLEURON -1087E ; [*1BB3.0020.0002] # PALMYRENE NUMBER TEN -1087F ; [*1BB4.0020.0002] # PALMYRENE NUMBER TWENTY -108AD ; [*1BB5.0020.0002] # NABATAEAN NUMBER TEN -108AE ; [*1BB6.0020.0002] # NABATAEAN NUMBER TWENTY -108AF ; [*1BB7.0020.0002] # NABATAEAN NUMBER ONE HUNDRED -108FD ; [*1BB8.0020.0002] # HATRAN NUMBER TEN -108FE ; [*1BB9.0020.0002] # HATRAN NUMBER TWENTY -108FF ; [*1BBA.0020.0002] # HATRAN NUMBER ONE HUNDRED -10917 ; [*1BBF.0020.0002] # PHOENICIAN NUMBER TEN -10918 ; [*1BC0.0020.0002] # PHOENICIAN NUMBER TWENTY -10919 ; [*1BC1.0020.0002] # PHOENICIAN NUMBER ONE HUNDRED -1091F ; [*0300.0020.0002] # PHOENICIAN WORD SEPARATOR -1093F ; [*02FA.0020.0002] # LYDIAN TRIANGULAR MARK -109BC ; [*1C41.0020.0002] # MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS -109BD ; [*1C36.0020.0002] # MEROITIC CURSIVE FRACTION ONE HALF -109C9 ; [*1C0B.0020.0002] # MEROITIC CURSIVE NUMBER TEN -109CA ; [*1C0C.0020.0002] # MEROITIC CURSIVE NUMBER TWENTY -109CB ; [*1C0D.0020.0002] # MEROITIC CURSIVE NUMBER THIRTY -109CC ; [*1C0E.0020.0002] # MEROITIC CURSIVE NUMBER FORTY -109CD ; [*1C0F.0020.0002] # MEROITIC CURSIVE NUMBER FIFTY -109CE ; [*1C10.0020.0002] # MEROITIC CURSIVE NUMBER SIXTY -109CF ; [*1C11.0020.0002] # MEROITIC CURSIVE NUMBER SEVENTY -109D2 ; [*1C12.0020.0002] # MEROITIC CURSIVE NUMBER ONE HUNDRED -109D3 ; [*1C13.0020.0002] # MEROITIC CURSIVE NUMBER TWO HUNDRED -109D4 ; [*1C14.0020.0002] # MEROITIC CURSIVE NUMBER THREE HUNDRED -109D5 ; [*1C15.0020.0002] # MEROITIC CURSIVE NUMBER FOUR HUNDRED -109D6 ; [*1C16.0020.0002] # MEROITIC CURSIVE NUMBER FIVE HUNDRED -109D7 ; [*1C17.0020.0002] # MEROITIC CURSIVE NUMBER SIX HUNDRED -109D8 ; [*1C18.0020.0002] # MEROITIC CURSIVE NUMBER SEVEN HUNDRED -109D9 ; [*1C19.0020.0002] # MEROITIC CURSIVE NUMBER EIGHT HUNDRED -109DA ; [*1C1A.0020.0002] # MEROITIC CURSIVE NUMBER NINE HUNDRED -109DB ; [*1C1B.0020.0002] # MEROITIC CURSIVE NUMBER ONE THOUSAND -109DC ; [*1C1C.0020.0002] # MEROITIC CURSIVE NUMBER TWO THOUSAND -109DD ; [*1C1D.0020.0002] # MEROITIC CURSIVE NUMBER THREE THOUSAND -109DE ; [*1C1E.0020.0002] # MEROITIC CURSIVE NUMBER FOUR THOUSAND -109DF ; [*1C1F.0020.0002] # MEROITIC CURSIVE NUMBER FIVE THOUSAND -109E0 ; [*1C20.0020.0002] # MEROITIC CURSIVE NUMBER SIX THOUSAND -109E1 ; [*1C21.0020.0002] # MEROITIC CURSIVE NUMBER SEVEN THOUSAND -109E2 ; [*1C22.0020.0002] # MEROITIC CURSIVE NUMBER EIGHT THOUSAND -109E3 ; [*1C23.0020.0002] # MEROITIC CURSIVE NUMBER NINE THOUSAND -109E4 ; [*1C24.0020.0002] # MEROITIC CURSIVE NUMBER TEN THOUSAND -109E5 ; [*1C25.0020.0002] # MEROITIC CURSIVE NUMBER TWENTY THOUSAND -109E6 ; [*1C26.0020.0002] # MEROITIC CURSIVE NUMBER THIRTY THOUSAND -109E7 ; [*1C27.0020.0002] # MEROITIC CURSIVE NUMBER FORTY THOUSAND -109E8 ; [*1C28.0020.0002] # MEROITIC CURSIVE NUMBER FIFTY THOUSAND -109E9 ; [*1C29.0020.0002] # MEROITIC CURSIVE NUMBER SIXTY THOUSAND -109EA ; [*1C2A.0020.0002] # MEROITIC CURSIVE NUMBER SEVENTY THOUSAND -109EB ; [*1C2B.0020.0002] # MEROITIC CURSIVE NUMBER EIGHTY THOUSAND -109EC ; [*1C2C.0020.0002] # MEROITIC CURSIVE NUMBER NINETY THOUSAND -109ED ; [*1C2D.0020.0002] # MEROITIC CURSIVE NUMBER ONE HUNDRED THOUSAND -109EE ; [*1C2E.0020.0002] # MEROITIC CURSIVE NUMBER TWO HUNDRED THOUSAND -109EF ; [*1C2F.0020.0002] # MEROITIC CURSIVE NUMBER THREE HUNDRED THOUSAND -109F0 ; [*1C30.0020.0002] # MEROITIC CURSIVE NUMBER FOUR HUNDRED THOUSAND -109F1 ; [*1C31.0020.0002] # MEROITIC CURSIVE NUMBER FIVE HUNDRED THOUSAND -109F2 ; [*1C32.0020.0002] # MEROITIC CURSIVE NUMBER SIX HUNDRED THOUSAND -109F3 ; [*1C33.0020.0002] # MEROITIC CURSIVE NUMBER SEVEN HUNDRED THOUSAND -109F4 ; [*1C34.0020.0002] # MEROITIC CURSIVE NUMBER EIGHT HUNDRED THOUSAND -109F5 ; [*1C35.0020.0002] # MEROITIC CURSIVE NUMBER NINE HUNDRED THOUSAND -109F6 ; [*1C37.0020.0002] # MEROITIC CURSIVE FRACTION ONE TWELFTH -109F7 ; [*1C38.0020.0002] # MEROITIC CURSIVE FRACTION TWO TWELFTHS -109F8 ; [*1C39.0020.0002] # MEROITIC CURSIVE FRACTION THREE TWELFTHS -109F9 ; [*1C3A.0020.0002] # MEROITIC CURSIVE FRACTION FOUR TWELFTHS -109FA ; [*1C3B.0020.0002] # MEROITIC CURSIVE FRACTION FIVE TWELFTHS -109FB ; [*1C3C.0020.0002] # MEROITIC CURSIVE FRACTION SIX TWELFTHS -109FC ; [*1C3D.0020.0002] # MEROITIC CURSIVE FRACTION SEVEN TWELFTHS -109FD ; [*1C3E.0020.0002] # MEROITIC CURSIVE FRACTION EIGHT TWELFTHS -109FE ; [*1C3F.0020.0002] # MEROITIC CURSIVE FRACTION NINE TWELFTHS -109FF ; [*1C40.0020.0002] # MEROITIC CURSIVE FRACTION TEN TWELFTHS -10A44 ; [*1BE2.0020.0002] # KHAROSHTHI NUMBER TEN -10A45 ; [*1BE3.0020.0002] # KHAROSHTHI NUMBER TWENTY -10A46 ; [*1BE4.0020.0002] # KHAROSHTHI NUMBER ONE HUNDRED -10A47 ; [*1BE5.0020.0002] # KHAROSHTHI NUMBER ONE THOUSAND -10A50 ; [*044E.0020.0002] # KHAROSHTHI PUNCTUATION DOT -10A51 ; [*044F.0020.0002] # KHAROSHTHI PUNCTUATION SMALL CIRCLE -10A52 ; [*0450.0020.0002] # KHAROSHTHI PUNCTUATION CIRCLE -10A53 ; [*0451.0020.0002] # KHAROSHTHI PUNCTUATION CRESCENT BAR -10A54 ; [*0452.0020.0002] # KHAROSHTHI PUNCTUATION MANGALAM -10A55 ; [*0453.0020.0002] # KHAROSHTHI PUNCTUATION LOTUS -10A56 ; [*02AB.0020.0002] # KHAROSHTHI PUNCTUATION DANDA -10A57 ; [*02AC.0020.0002] # KHAROSHTHI PUNCTUATION DOUBLE DANDA -10A58 ; [*0454.0020.0002] # KHAROSHTHI PUNCTUATION LINES -10A7E ; [*1BBB.0020.0002] # OLD SOUTH ARABIAN NUMBER FIFTY -10A7F ; [*1BBC.0020.0002] # OLD SOUTH ARABIAN NUMERIC INDICATOR -10A9E ; [*1BBD.0020.0002] # OLD NORTH ARABIAN NUMBER TEN -10A9F ; [*1BBE.0020.0002] # OLD NORTH ARABIAN NUMBER TWENTY -10AED ; [*1BC7.0020.0002] # MANICHAEAN NUMBER TEN -10AEE ; [*1BC8.0020.0002] # MANICHAEAN NUMBER TWENTY -10AEF ; [*1BC9.0020.0002] # MANICHAEAN NUMBER ONE HUNDRED -10AF0 ; [*0459.0020.0002] # MANICHAEAN PUNCTUATION STAR -10AF1 ; [*045A.0020.0002] # MANICHAEAN PUNCTUATION FLEURON -10AF2 ; [*045B.0020.0002] # MANICHAEAN PUNCTUATION DOUBLE DOT WITHIN DOT -10AF3 ; [*045C.0020.0002] # MANICHAEAN PUNCTUATION DOT WITHIN DOT -10AF4 ; [*045D.0020.0002] # MANICHAEAN PUNCTUATION DOT -10AF5 ; [*045E.0020.0002] # MANICHAEAN PUNCTUATION TWO DOTS -10AF6 ; [*045F.0020.0002] # MANICHAEAN PUNCTUATION LINE FILLER -10B39 ; [*0458.0020.0002] # AVESTAN ABBREVIATION MARK -10B3A ; [*02DB.0020.0002] # TINY TWO DOTS OVER ONE DOT PUNCTUATION -10B3B ; [*02DC.0020.0002] # SMALL TWO DOTS OVER ONE DOT PUNCTUATION -10B3C ; [*02DD.0020.0002] # LARGE TWO DOTS OVER ONE DOT PUNCTUATION -10B3D ; [*02DE.0020.0002] # LARGE ONE DOT OVER TWO DOTS PUNCTUATION -10B3E ; [*02DF.0020.0002] # LARGE TWO RINGS OVER ONE RING PUNCTUATION -10B3F ; [*02E0.0020.0002] # LARGE ONE RING OVER TWO RINGS PUNCTUATION -10B5C ; [*1BCA.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER TEN -10B5D ; [*1BCB.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER TWENTY -10B5E ; [*1BCC.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED -10B5F ; [*1BCD.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND -10B7C ; [*1BCE.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER TEN -10B7D ; [*1BCF.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER TWENTY -10B7E ; [*1BD0.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED -10B7F ; [*1BD1.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND -10B99 ; [*0460.0020.0002] # PSALTER PAHLAVI SECTION MARK -10B9A ; [*0461.0020.0002] # PSALTER PAHLAVI TURNED SECTION MARK -10B9B ; [*0462.0020.0002] # PSALTER PAHLAVI FOUR DOTS WITH CROSS -10B9C ; [*0463.0020.0002] # PSALTER PAHLAVI FOUR DOTS WITH DOT -10BAD ; [*1BD2.0020.0002] # PSALTER PAHLAVI NUMBER TEN -10BAE ; [*1BD3.0020.0002] # PSALTER PAHLAVI NUMBER TWENTY -10BAF ; [*1BD4.0020.0002] # PSALTER PAHLAVI NUMBER ONE HUNDRED -10CFC ; [*1B49.0020.0002] # OLD HUNGARIAN NUMBER TEN -10CFD ; [*1B4A.0020.0002] # OLD HUNGARIAN NUMBER FIFTY -10CFE ; [*1B4B.0020.0002] # OLD HUNGARIAN NUMBER ONE HUNDRED -10CFF ; [*1B4C.0020.0002] # OLD HUNGARIAN NUMBER ONE THOUSAND -10E69 ; [*1B30.0020.0002] # RUMI NUMBER TEN -10E6A ; [*1B31.0020.0002] # RUMI NUMBER TWENTY -10E6B ; [*1B32.0020.0002] # RUMI NUMBER THIRTY -10E6C ; [*1B33.0020.0002] # RUMI NUMBER FORTY -10E6D ; [*1B34.0020.0002] # RUMI NUMBER FIFTY -10E6E ; [*1B35.0020.0002] # RUMI NUMBER SIXTY -10E6F ; [*1B36.0020.0002] # RUMI NUMBER SEVENTY -10E70 ; [*1B37.0020.0002] # RUMI NUMBER EIGHTY -10E71 ; [*1B38.0020.0002] # RUMI NUMBER NINETY -10E72 ; [*1B39.0020.0002] # RUMI NUMBER ONE HUNDRED -10E73 ; [*1B3A.0020.0002] # RUMI NUMBER TWO HUNDRED -10E74 ; [*1B3B.0020.0002] # RUMI NUMBER THREE HUNDRED -10E75 ; [*1B3C.0020.0002] # RUMI NUMBER FOUR HUNDRED -10E76 ; [*1B3D.0020.0002] # RUMI NUMBER FIVE HUNDRED -10E77 ; [*1B3E.0020.0002] # RUMI NUMBER SIX HUNDRED -10E78 ; [*1B3F.0020.0002] # RUMI NUMBER SEVEN HUNDRED -10E79 ; [*1B40.0020.0002] # RUMI NUMBER EIGHT HUNDRED -10E7A ; [*1B41.0020.0002] # RUMI NUMBER NINE HUNDRED -10E7B ; [*1B42.0020.0002] # RUMI FRACTION ONE HALF -10E7C ; [*1B43.0020.0002] # RUMI FRACTION ONE QUARTER -10E7D ; [*1B44.0020.0002] # RUMI FRACTION ONE THIRD -10E7E ; [*1B45.0020.0002] # RUMI FRACTION TWO THIRDS -11047 ; [*02AD.0020.0002] # BRAHMI DANDA -11048 ; [*02AE.0020.0002] # BRAHMI DOUBLE DANDA -11049 ; [*0449.0020.0002] # BRAHMI PUNCTUATION DOT -1104A ; [*044A.0020.0002] # BRAHMI PUNCTUATION DOUBLE DOT -1104B ; [*044B.0020.0002] # BRAHMI PUNCTUATION LINE -1104C ; [*044C.0020.0002] # BRAHMI PUNCTUATION CRESCENT BAR -1104D ; [*044D.0020.0002] # BRAHMI PUNCTUATION LOTUS -1105B ; [*1BD7.0020.0002] # BRAHMI NUMBER TEN -1105C ; [*1BD8.0020.0002] # BRAHMI NUMBER TWENTY -1105D ; [*1BD9.0020.0002] # BRAHMI NUMBER THIRTY -1105E ; [*1BDA.0020.0002] # BRAHMI NUMBER FORTY -1105F ; [*1BDB.0020.0002] # BRAHMI NUMBER FIFTY -11060 ; [*1BDC.0020.0002] # BRAHMI NUMBER SIXTY -11061 ; [*1BDD.0020.0002] # BRAHMI NUMBER SEVENTY -11062 ; [*1BDE.0020.0002] # BRAHMI NUMBER EIGHTY -11063 ; [*1BDF.0020.0002] # BRAHMI NUMBER NINETY -11064 ; [*1BE0.0020.0002] # BRAHMI NUMBER ONE HUNDRED -11065 ; [*1BE1.0020.0002] # BRAHMI NUMBER ONE THOUSAND -110BB ; [*0464.0020.0002] # KAITHI ABBREVIATION SIGN -110BC ; [*0465.0020.0002] # KAITHI ENUMERATION SIGN +102EA ; [*1E0F.0020.0002] # COPTIC EPACT NUMBER TEN +102EB ; [*1E10.0020.0002] # COPTIC EPACT NUMBER TWENTY +102EC ; [*1E11.0020.0002] # COPTIC EPACT NUMBER THIRTY +102ED ; [*1E12.0020.0002] # COPTIC EPACT NUMBER FORTY +102EE ; [*1E13.0020.0002] # COPTIC EPACT NUMBER FIFTY +102EF ; [*1E14.0020.0002] # COPTIC EPACT NUMBER SIXTY +102F0 ; [*1E15.0020.0002] # COPTIC EPACT NUMBER SEVENTY +102F1 ; [*1E16.0020.0002] # COPTIC EPACT NUMBER EIGHTY +102F2 ; [*1E17.0020.0002] # COPTIC EPACT NUMBER NINETY +102F3 ; [*1E18.0020.0002] # COPTIC EPACT NUMBER ONE HUNDRED +102F4 ; [*1E19.0020.0002] # COPTIC EPACT NUMBER TWO HUNDRED +102F5 ; [*1E1A.0020.0002] # COPTIC EPACT NUMBER THREE HUNDRED +102F6 ; [*1E1B.0020.0002] # COPTIC EPACT NUMBER FOUR HUNDRED +102F7 ; [*1E1C.0020.0002] # COPTIC EPACT NUMBER FIVE HUNDRED +102F8 ; [*1E1D.0020.0002] # COPTIC EPACT NUMBER SIX HUNDRED +102F9 ; [*1E1E.0020.0002] # COPTIC EPACT NUMBER SEVEN HUNDRED +102FA ; [*1E1F.0020.0002] # COPTIC EPACT NUMBER EIGHT HUNDRED +102FB ; [*1E20.0020.0002] # COPTIC EPACT NUMBER NINE HUNDRED +10322 ; [*1DB8.0020.0002] # OLD ITALIC NUMERAL TEN +10323 ; [*1DB9.0020.0002] # OLD ITALIC NUMERAL FIFTY +1039F ; [*030E.0020.0002] # UGARITIC WORD DIVIDER +103D0 ; [*030F.0020.0002] # OLD PERSIAN WORD DIVIDER +103D3 ; [*1E21.0020.0002] # OLD PERSIAN NUMBER TEN +103D4 ; [*1E22.0020.0002] # OLD PERSIAN NUMBER TWENTY +103D5 ; [*1E23.0020.0002] # OLD PERSIAN NUMBER HUNDRED +1056F ; [*045E.0020.0002] # CAUCASIAN ALBANIAN CITATION MARK +10857 ; [*02E2.0020.0002] # IMPERIAL ARAMAIC SECTION SIGN +1085B ; [*1E33.0020.0002] # IMPERIAL ARAMAIC NUMBER TEN +1085C ; [*1E34.0020.0002] # IMPERIAL ARAMAIC NUMBER TWENTY +1085D ; [*1E35.0020.0002] # IMPERIAL ARAMAIC NUMBER ONE HUNDRED +1085E ; [*1E36.0020.0002] # IMPERIAL ARAMAIC NUMBER ONE THOUSAND +1085F ; [*1E37.0020.0002] # IMPERIAL ARAMAIC NUMBER TEN THOUSAND +10877 ; [*111C.0020.0002] # PALMYRENE LEFT-POINTING FLEURON +10878 ; [*111D.0020.0002] # PALMYRENE RIGHT-POINTING FLEURON +1087E ; [*1E24.0020.0002] # PALMYRENE NUMBER TEN +1087F ; [*1E25.0020.0002] # PALMYRENE NUMBER TWENTY +108AD ; [*1E26.0020.0002] # NABATAEAN NUMBER TEN +108AE ; [*1E27.0020.0002] # NABATAEAN NUMBER TWENTY +108AF ; [*1E28.0020.0002] # NABATAEAN NUMBER ONE HUNDRED +108FD ; [*1E29.0020.0002] # HATRAN NUMBER TEN +108FE ; [*1E2A.0020.0002] # HATRAN NUMBER TWENTY +108FF ; [*1E2B.0020.0002] # HATRAN NUMBER ONE HUNDRED +10917 ; [*1E30.0020.0002] # PHOENICIAN NUMBER TEN +10918 ; [*1E31.0020.0002] # PHOENICIAN NUMBER TWENTY +10919 ; [*1E32.0020.0002] # PHOENICIAN NUMBER ONE HUNDRED +1091F ; [*0310.0020.0002] # PHOENICIAN WORD SEPARATOR +1093F ; [*030A.0020.0002] # LYDIAN TRIANGULAR MARK +109BC ; [*1F2B.0020.0002] # MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS +109BD ; [*1F20.0020.0002] # MEROITIC CURSIVE FRACTION ONE HALF +109C9 ; [*1EF5.0020.0002] # MEROITIC CURSIVE NUMBER TEN +109CA ; [*1EF6.0020.0002] # MEROITIC CURSIVE NUMBER TWENTY +109CB ; [*1EF7.0020.0002] # MEROITIC CURSIVE NUMBER THIRTY +109CC ; [*1EF8.0020.0002] # MEROITIC CURSIVE NUMBER FORTY +109CD ; [*1EF9.0020.0002] # MEROITIC CURSIVE NUMBER FIFTY +109CE ; [*1EFA.0020.0002] # MEROITIC CURSIVE NUMBER SIXTY +109CF ; [*1EFB.0020.0002] # MEROITIC CURSIVE NUMBER SEVENTY +109D2 ; [*1EFC.0020.0002] # MEROITIC CURSIVE NUMBER ONE HUNDRED +109D3 ; [*1EFD.0020.0002] # MEROITIC CURSIVE NUMBER TWO HUNDRED +109D4 ; [*1EFE.0020.0002] # MEROITIC CURSIVE NUMBER THREE HUNDRED +109D5 ; [*1EFF.0020.0002] # MEROITIC CURSIVE NUMBER FOUR HUNDRED +109D6 ; [*1F00.0020.0002] # MEROITIC CURSIVE NUMBER FIVE HUNDRED +109D7 ; [*1F01.0020.0002] # MEROITIC CURSIVE NUMBER SIX HUNDRED +109D8 ; [*1F02.0020.0002] # MEROITIC CURSIVE NUMBER SEVEN HUNDRED +109D9 ; [*1F03.0020.0002] # MEROITIC CURSIVE NUMBER EIGHT HUNDRED +109DA ; [*1F04.0020.0002] # MEROITIC CURSIVE NUMBER NINE HUNDRED +109DB ; [*1F05.0020.0002] # MEROITIC CURSIVE NUMBER ONE THOUSAND +109DC ; [*1F06.0020.0002] # MEROITIC CURSIVE NUMBER TWO THOUSAND +109DD ; [*1F07.0020.0002] # MEROITIC CURSIVE NUMBER THREE THOUSAND +109DE ; [*1F08.0020.0002] # MEROITIC CURSIVE NUMBER FOUR THOUSAND +109DF ; [*1F09.0020.0002] # MEROITIC CURSIVE NUMBER FIVE THOUSAND +109E0 ; [*1F0A.0020.0002] # MEROITIC CURSIVE NUMBER SIX THOUSAND +109E1 ; [*1F0B.0020.0002] # MEROITIC CURSIVE NUMBER SEVEN THOUSAND +109E2 ; [*1F0C.0020.0002] # MEROITIC CURSIVE NUMBER EIGHT THOUSAND +109E3 ; [*1F0D.0020.0002] # MEROITIC CURSIVE NUMBER NINE THOUSAND +109E4 ; [*1F0E.0020.0002] # MEROITIC CURSIVE NUMBER TEN THOUSAND +109E5 ; [*1F0F.0020.0002] # MEROITIC CURSIVE NUMBER TWENTY THOUSAND +109E6 ; [*1F10.0020.0002] # MEROITIC CURSIVE NUMBER THIRTY THOUSAND +109E7 ; [*1F11.0020.0002] # MEROITIC CURSIVE NUMBER FORTY THOUSAND +109E8 ; [*1F12.0020.0002] # MEROITIC CURSIVE NUMBER FIFTY THOUSAND +109E9 ; [*1F13.0020.0002] # MEROITIC CURSIVE NUMBER SIXTY THOUSAND +109EA ; [*1F14.0020.0002] # MEROITIC CURSIVE NUMBER SEVENTY THOUSAND +109EB ; [*1F15.0020.0002] # MEROITIC CURSIVE NUMBER EIGHTY THOUSAND +109EC ; [*1F16.0020.0002] # MEROITIC CURSIVE NUMBER NINETY THOUSAND +109ED ; [*1F17.0020.0002] # MEROITIC CURSIVE NUMBER ONE HUNDRED THOUSAND +109EE ; [*1F18.0020.0002] # MEROITIC CURSIVE NUMBER TWO HUNDRED THOUSAND +109EF ; [*1F19.0020.0002] # MEROITIC CURSIVE NUMBER THREE HUNDRED THOUSAND +109F0 ; [*1F1A.0020.0002] # MEROITIC CURSIVE NUMBER FOUR HUNDRED THOUSAND +109F1 ; [*1F1B.0020.0002] # MEROITIC CURSIVE NUMBER FIVE HUNDRED THOUSAND +109F2 ; [*1F1C.0020.0002] # MEROITIC CURSIVE NUMBER SIX HUNDRED THOUSAND +109F3 ; [*1F1D.0020.0002] # MEROITIC CURSIVE NUMBER SEVEN HUNDRED THOUSAND +109F4 ; [*1F1E.0020.0002] # MEROITIC CURSIVE NUMBER EIGHT HUNDRED THOUSAND +109F5 ; [*1F1F.0020.0002] # MEROITIC CURSIVE NUMBER NINE HUNDRED THOUSAND +109F6 ; [*1F21.0020.0002] # MEROITIC CURSIVE FRACTION ONE TWELFTH +109F7 ; [*1F22.0020.0002] # MEROITIC CURSIVE FRACTION TWO TWELFTHS +109F8 ; [*1F23.0020.0002] # MEROITIC CURSIVE FRACTION THREE TWELFTHS +109F9 ; [*1F24.0020.0002] # MEROITIC CURSIVE FRACTION FOUR TWELFTHS +109FA ; [*1F25.0020.0002] # MEROITIC CURSIVE FRACTION FIVE TWELFTHS +109FB ; [*1F26.0020.0002] # MEROITIC CURSIVE FRACTION SIX TWELFTHS +109FC ; [*1F27.0020.0002] # MEROITIC CURSIVE FRACTION SEVEN TWELFTHS +109FD ; [*1F28.0020.0002] # MEROITIC CURSIVE FRACTION EIGHT TWELFTHS +109FE ; [*1F29.0020.0002] # MEROITIC CURSIVE FRACTION NINE TWELFTHS +109FF ; [*1F2A.0020.0002] # MEROITIC CURSIVE FRACTION TEN TWELFTHS +10A44 ; [*1E5E.0020.0002] # KHAROSHTHI NUMBER TEN +10A45 ; [*1E5F.0020.0002] # KHAROSHTHI NUMBER TWENTY +10A46 ; [*1E60.0020.0002] # KHAROSHTHI NUMBER ONE HUNDRED +10A47 ; [*1E61.0020.0002] # KHAROSHTHI NUMBER ONE THOUSAND +10A48 ; [*1E62.0020.0002] # KHAROSHTHI FRACTION ONE HALF +10A50 ; [*0464.0020.0002] # KHAROSHTHI PUNCTUATION DOT +10A51 ; [*0465.0020.0002] # KHAROSHTHI PUNCTUATION SMALL CIRCLE +10A52 ; [*0466.0020.0002] # KHAROSHTHI PUNCTUATION CIRCLE +10A53 ; [*0467.0020.0002] # KHAROSHTHI PUNCTUATION CRESCENT BAR +10A54 ; [*0468.0020.0002] # KHAROSHTHI PUNCTUATION MANGALAM +10A55 ; [*0469.0020.0002] # KHAROSHTHI PUNCTUATION LOTUS +10A56 ; [*02B2.0020.0002] # KHAROSHTHI PUNCTUATION DANDA +10A57 ; [*02B3.0020.0002] # KHAROSHTHI PUNCTUATION DOUBLE DANDA +10A58 ; [*046A.0020.0002] # KHAROSHTHI PUNCTUATION LINES +10A7E ; [*1E2C.0020.0002] # OLD SOUTH ARABIAN NUMBER FIFTY +10A7F ; [*1E2D.0020.0002] # OLD SOUTH ARABIAN NUMERIC INDICATOR +10A9E ; [*1E2E.0020.0002] # OLD NORTH ARABIAN NUMBER TEN +10A9F ; [*1E2F.0020.0002] # OLD NORTH ARABIAN NUMBER TWENTY +10AED ; [*1E38.0020.0002] # MANICHAEAN NUMBER TEN +10AEE ; [*1E39.0020.0002] # MANICHAEAN NUMBER TWENTY +10AEF ; [*1E3A.0020.0002] # MANICHAEAN NUMBER ONE HUNDRED +10AF0 ; [*046F.0020.0002] # MANICHAEAN PUNCTUATION STAR +10AF1 ; [*0470.0020.0002] # MANICHAEAN PUNCTUATION FLEURON +10AF2 ; [*0471.0020.0002] # MANICHAEAN PUNCTUATION DOUBLE DOT WITHIN DOT +10AF3 ; [*0472.0020.0002] # MANICHAEAN PUNCTUATION DOT WITHIN DOT +10AF4 ; [*0473.0020.0002] # MANICHAEAN PUNCTUATION DOT +10AF5 ; [*0474.0020.0002] # MANICHAEAN PUNCTUATION TWO DOTS +10AF6 ; [*0475.0020.0002] # MANICHAEAN PUNCTUATION LINE FILLER +10B39 ; [*046E.0020.0002] # AVESTAN ABBREVIATION MARK +10B3A ; [*02E3.0020.0002] # TINY TWO DOTS OVER ONE DOT PUNCTUATION +10B3B ; [*02E4.0020.0002] # SMALL TWO DOTS OVER ONE DOT PUNCTUATION +10B3C ; [*02E5.0020.0002] # LARGE TWO DOTS OVER ONE DOT PUNCTUATION +10B3D ; [*02E6.0020.0002] # LARGE ONE DOT OVER TWO DOTS PUNCTUATION +10B3E ; [*02E7.0020.0002] # LARGE TWO RINGS OVER ONE RING PUNCTUATION +10B3F ; [*02E8.0020.0002] # LARGE ONE RING OVER TWO RINGS PUNCTUATION +10B5C ; [*1E3B.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER TEN +10B5D ; [*1E3C.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER TWENTY +10B5E ; [*1E3D.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED +10B5F ; [*1E3E.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND +10B7C ; [*1E3F.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER TEN +10B7D ; [*1E40.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER TWENTY +10B7E ; [*1E41.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED +10B7F ; [*1E42.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND +10B99 ; [*0476.0020.0002] # PSALTER PAHLAVI SECTION MARK +10B9A ; [*0477.0020.0002] # PSALTER PAHLAVI TURNED SECTION MARK +10B9B ; [*0478.0020.0002] # PSALTER PAHLAVI FOUR DOTS WITH CROSS +10B9C ; [*0479.0020.0002] # PSALTER PAHLAVI FOUR DOTS WITH DOT +10BAD ; [*1E43.0020.0002] # PSALTER PAHLAVI NUMBER TEN +10BAE ; [*1E44.0020.0002] # PSALTER PAHLAVI NUMBER TWENTY +10BAF ; [*1E45.0020.0002] # PSALTER PAHLAVI NUMBER ONE HUNDRED +10CFC ; [*1DBA.0020.0002] # OLD HUNGARIAN NUMBER TEN +10CFD ; [*1DBB.0020.0002] # OLD HUNGARIAN NUMBER FIFTY +10CFE ; [*1DBC.0020.0002] # OLD HUNGARIAN NUMBER ONE HUNDRED +10CFF ; [*1DBD.0020.0002] # OLD HUNGARIAN NUMBER ONE THOUSAND +10E69 ; [*1DA1.0020.0002] # RUMI NUMBER TEN +10E6A ; [*1DA2.0020.0002] # RUMI NUMBER TWENTY +10E6B ; [*1DA3.0020.0002] # RUMI NUMBER THIRTY +10E6C ; [*1DA4.0020.0002] # RUMI NUMBER FORTY +10E6D ; [*1DA5.0020.0002] # RUMI NUMBER FIFTY +10E6E ; [*1DA6.0020.0002] # RUMI NUMBER SIXTY +10E6F ; [*1DA7.0020.0002] # RUMI NUMBER SEVENTY +10E70 ; [*1DA8.0020.0002] # RUMI NUMBER EIGHTY +10E71 ; [*1DA9.0020.0002] # RUMI NUMBER NINETY +10E72 ; [*1DAA.0020.0002] # RUMI NUMBER ONE HUNDRED +10E73 ; [*1DAB.0020.0002] # RUMI NUMBER TWO HUNDRED +10E74 ; [*1DAC.0020.0002] # RUMI NUMBER THREE HUNDRED +10E75 ; [*1DAD.0020.0002] # RUMI NUMBER FOUR HUNDRED +10E76 ; [*1DAE.0020.0002] # RUMI NUMBER FIVE HUNDRED +10E77 ; [*1DAF.0020.0002] # RUMI NUMBER SIX HUNDRED +10E78 ; [*1DB0.0020.0002] # RUMI NUMBER SEVEN HUNDRED +10E79 ; [*1DB1.0020.0002] # RUMI NUMBER EIGHT HUNDRED +10E7A ; [*1DB2.0020.0002] # RUMI NUMBER NINE HUNDRED +10E7B ; [*1DB3.0020.0002] # RUMI FRACTION ONE HALF +10E7C ; [*1DB4.0020.0002] # RUMI FRACTION ONE QUARTER +10E7D ; [*1DB5.0020.0002] # RUMI FRACTION ONE THIRD +10E7E ; [*1DB6.0020.0002] # RUMI FRACTION TWO THIRDS +10EAD ; [*0222.0020.0002] # YEZIDI HYPHENATION MARK +10F22 ; [*1E46.0020.0002] # OLD SOGDIAN NUMBER TEN +10F23 ; [*1E47.0020.0002] # OLD SOGDIAN NUMBER TWENTY +10F24 ; [*1E48.0020.0002] # OLD SOGDIAN NUMBER THIRTY +10F25 ; [*1E49.0020.0002] # OLD SOGDIAN NUMBER ONE HUNDRED +10F26 ; [*1E4A.0020.0002] # OLD SOGDIAN FRACTION ONE HALF +10F52 ; [*1E4B.0020.0002] # SOGDIAN NUMBER TEN +10F53 ; [*1E4C.0020.0002] # SOGDIAN NUMBER TWENTY +10F54 ; [*1E4D.0020.0002] # SOGDIAN NUMBER ONE HUNDRED +10F55 ; [*02E9.0020.0002] # SOGDIAN PUNCTUATION TWO VERTICAL BARS +10F56 ; [*02EA.0020.0002] # SOGDIAN PUNCTUATION TWO VERTICAL BARS WITH DOTS +10F57 ; [*02EB.0020.0002] # SOGDIAN PUNCTUATION CIRCLE WITH DOT +10F58 ; [*02EC.0020.0002] # SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS +10F59 ; [*02ED.0020.0002] # SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT +10FC9 ; [*1E4E.0020.0002] # CHORASMIAN NUMBER TEN +10FCA ; [*1E4F.0020.0002] # CHORASMIAN NUMBER TWENTY +10FCB ; [*1E50.0020.0002] # CHORASMIAN NUMBER ONE HUNDRED +11047 ; [*02B4.0020.0002] # BRAHMI DANDA +11048 ; [*02B5.0020.0002] # BRAHMI DOUBLE DANDA +11049 ; [*045F.0020.0002] # BRAHMI PUNCTUATION DOT +1104A ; [*0460.0020.0002] # BRAHMI PUNCTUATION DOUBLE DOT +1104B ; [*0461.0020.0002] # BRAHMI PUNCTUATION LINE +1104C ; [*0462.0020.0002] # BRAHMI PUNCTUATION CRESCENT BAR +1104D ; [*0463.0020.0002] # BRAHMI PUNCTUATION LOTUS +1105B ; [*1E53.0020.0002] # BRAHMI NUMBER TEN +1105C ; [*1E54.0020.0002] # BRAHMI NUMBER TWENTY +1105D ; [*1E55.0020.0002] # BRAHMI NUMBER THIRTY +1105E ; [*1E56.0020.0002] # BRAHMI NUMBER FORTY +1105F ; [*1E57.0020.0002] # BRAHMI NUMBER FIFTY +11060 ; [*1E58.0020.0002] # BRAHMI NUMBER SIXTY +11061 ; [*1E59.0020.0002] # BRAHMI NUMBER SEVENTY +11062 ; [*1E5A.0020.0002] # BRAHMI NUMBER EIGHTY +11063 ; [*1E5B.0020.0002] # BRAHMI NUMBER NINETY +11064 ; [*1E5C.0020.0002] # BRAHMI NUMBER ONE HUNDRED +11065 ; [*1E5D.0020.0002] # BRAHMI NUMBER ONE THOUSAND +110BB ; [*047A.0020.0002] # KAITHI ABBREVIATION SIGN +110BC ; [*047B.0020.0002] # KAITHI ENUMERATION SIGN 110BD ; [.0000.0000.0000] # KAITHI NUMBER SIGN -110BE ; [*02E1.0020.0002] # KAITHI SECTION MARK -110BF ; [*02E2.0020.0002] # KAITHI DOUBLE SECTION MARK -110C0 ; [*02AF.0020.0002] # KAITHI DANDA -110C1 ; [*02B0.0020.0002] # KAITHI DOUBLE DANDA -11140 ; [*02E3.0020.0002] # CHAKMA SECTION MARK -11141 ; [*02B1.0020.0002] # CHAKMA DANDA -11142 ; [*02B2.0020.0002] # CHAKMA DOUBLE DANDA -11143 ; [*0274.0020.0002] # CHAKMA QUESTION MARK -11174 ; [*0466.0020.0002] # MAHAJANI ABBREVIATION SIGN -11175 ; [*0467.0020.0002] # MAHAJANI SECTION MARK -111C5 ; [*02B3.0020.0002] # SHARADA DANDA -111C6 ; [*02B4.0020.0002] # SHARADA DOUBLE DANDA -111C7 ; [*0469.0020.0002] # SHARADA ABBREVIATION SIGN -111C8 ; [*02E4.0020.0002] # SHARADA SEPARATOR -111C9 ; [*046A.0020.0002] # SHARADA SANDHI MARK -111CD ; [*0468.0020.0002] # SHARADA SUTRA MARK -111DB ; [*046B.0020.0002] # SHARADA SIGN SIDDHAM -111DD ; [*046C.0020.0002] # SHARADA CONTINUATION SIGN -111DE ; [*02E5.0020.0002] # SHARADA SECTION MARK-1 -111DF ; [*02E6.0020.0002] # SHARADA SECTION MARK-2 -111EA ; [*1BF0.0020.0002] # SINHALA ARCHAIC NUMBER TEN -111EB ; [*1BF1.0020.0002] # SINHALA ARCHAIC NUMBER TWENTY -111EC ; [*1BF2.0020.0002] # SINHALA ARCHAIC NUMBER THIRTY -111ED ; [*1BF3.0020.0002] # SINHALA ARCHAIC NUMBER FORTY -111EE ; [*1BF4.0020.0002] # SINHALA ARCHAIC NUMBER FIFTY -111EF ; [*1BF5.0020.0002] # SINHALA ARCHAIC NUMBER SIXTY -111F0 ; [*1BF6.0020.0002] # SINHALA ARCHAIC NUMBER SEVENTY -111F1 ; [*1BF7.0020.0002] # SINHALA ARCHAIC NUMBER EIGHTY -111F2 ; [*1BF8.0020.0002] # SINHALA ARCHAIC NUMBER NINETY -111F3 ; [*1BF9.0020.0002] # SINHALA ARCHAIC NUMBER ONE HUNDRED -111F4 ; [*1BFA.0020.0002] # SINHALA ARCHAIC NUMBER ONE THOUSAND -11238 ; [*02B5.0020.0002] # KHOJKI DANDA -11239 ; [*02B6.0020.0002] # KHOJKI DOUBLE DANDA -1123A ; [*046D.0020.0002] # KHOJKI WORD SEPARATOR -1123B ; [*046E.0020.0002] # KHOJKI SECTION MARK -1123C ; [*046F.0020.0002] # KHOJKI DOUBLE SECTION MARK -1123D ; [*0470.0020.0002] # KHOJKI ABBREVIATION SIGN -112A9 ; [*02E7.0020.0002] # MULTANI SECTION MARK +110BE ; [*02EE.0020.0002] # KAITHI SECTION MARK +110BF ; [*02EF.0020.0002] # KAITHI DOUBLE SECTION MARK +110C0 ; [*02B6.0020.0002] # KAITHI DANDA +110C1 ; [*02B7.0020.0002] # KAITHI DOUBLE DANDA +110CD ; [.0000.0000.0000] # KAITHI NUMBER SIGN ABOVE +11140 ; [*02F0.0020.0002] # CHAKMA SECTION MARK +11141 ; [*02B8.0020.0002] # CHAKMA DANDA +11142 ; [*02B9.0020.0002] # CHAKMA DOUBLE DANDA +11143 ; [*027A.0020.0002] # CHAKMA QUESTION MARK +11174 ; [*047C.0020.0002] # MAHAJANI ABBREVIATION SIGN +11175 ; [*047D.0020.0002] # MAHAJANI SECTION MARK +111C5 ; [*02BA.0020.0002] # SHARADA DANDA +111C6 ; [*02BB.0020.0002] # SHARADA DOUBLE DANDA +111C7 ; [*047F.0020.0002] # SHARADA ABBREVIATION SIGN +111C8 ; [*02F1.0020.0002] # SHARADA SEPARATOR +111CD ; [*047E.0020.0002] # SHARADA SUTRA MARK +111DB ; [*0480.0020.0002] # SHARADA SIGN SIDDHAM +111DD ; [*0481.0020.0002] # SHARADA CONTINUATION SIGN +111DE ; [*02F2.0020.0002] # SHARADA SECTION MARK-1 +111DF ; [*02F3.0020.0002] # SHARADA SECTION MARK-2 +111EA ; [*1E6D.0020.0002] # SINHALA ARCHAIC NUMBER TEN +111EB ; [*1E6E.0020.0002] # SINHALA ARCHAIC NUMBER TWENTY +111EC ; [*1E6F.0020.0002] # SINHALA ARCHAIC NUMBER THIRTY +111ED ; [*1E70.0020.0002] # SINHALA ARCHAIC NUMBER FORTY +111EE ; [*1E71.0020.0002] # SINHALA ARCHAIC NUMBER FIFTY +111EF ; [*1E72.0020.0002] # SINHALA ARCHAIC NUMBER SIXTY +111F0 ; [*1E73.0020.0002] # SINHALA ARCHAIC NUMBER SEVENTY +111F1 ; [*1E74.0020.0002] # SINHALA ARCHAIC NUMBER EIGHTY +111F2 ; [*1E75.0020.0002] # SINHALA ARCHAIC NUMBER NINETY +111F3 ; [*1E76.0020.0002] # SINHALA ARCHAIC NUMBER ONE HUNDRED +111F4 ; [*1E77.0020.0002] # SINHALA ARCHAIC NUMBER ONE THOUSAND +11238 ; [*02BC.0020.0002] # KHOJKI DANDA +11239 ; [*02BD.0020.0002] # KHOJKI DOUBLE DANDA +1123A ; [*0482.0020.0002] # KHOJKI WORD SEPARATOR +1123B ; [*0483.0020.0002] # KHOJKI SECTION MARK +1123C ; [*0484.0020.0002] # KHOJKI DOUBLE SECTION MARK +1123D ; [*0485.0020.0002] # KHOJKI ABBREVIATION SIGN +112A9 ; [*02F4.0020.0002] # MULTANI SECTION MARK 11366 ; [.0000.0000.0000] # COMBINING GRANTHA DIGIT ZERO 11367 ; [.0000.0000.0000] # COMBINING GRANTHA DIGIT ONE 11368 ; [.0000.0000.0000] # COMBINING GRANTHA DIGIT TWO @@ -4628,499 +4721,570 @@ 11372 ; [.0000.0000.0000] # COMBINING GRANTHA LETTER NA 11373 ; [.0000.0000.0000] # COMBINING GRANTHA LETTER VI 11374 ; [.0000.0000.0000] # COMBINING GRANTHA LETTER PA -1144B ; [*02B7.0020.0002] # NEWA DANDA -1144C ; [*02B8.0020.0002] # NEWA DOUBLE DANDA -1144D ; [*0471.0020.0002] # NEWA COMMA -1144E ; [*0472.0020.0002] # NEWA GAP FILLER -1144F ; [*0473.0020.0002] # NEWA ABBREVIATION SIGN -1145B ; [*0474.0020.0002] # NEWA PLACEHOLDER MARK -1145D ; [*0475.0020.0002] # NEWA INSERTION SIGN -114C6 ; [*0476.0020.0002] # TIRHUTA ABBREVIATION SIGN -115C1 ; [*0477.0020.0002] # SIDDHAM SIGN SIDDHAM -115C2 ; [*02B9.0020.0002] # SIDDHAM DANDA -115C3 ; [*02BA.0020.0002] # SIDDHAM DOUBLE DANDA -115C4 ; [*0478.0020.0002] # SIDDHAM SEPARATOR DOT -115C5 ; [*0479.0020.0002] # SIDDHAM SEPARATOR BAR -115C6 ; [*047A.0020.0002] # SIDDHAM REPETITION MARK-1 -115C7 ; [*047B.0020.0002] # SIDDHAM REPETITION MARK-2 -115C8 ; [*047C.0020.0002] # SIDDHAM REPETITION MARK-3 -115C9 ; [*047D.0020.0002] # SIDDHAM END OF TEXT MARK -115CA ; [*047E.0020.0002] # SIDDHAM SECTION MARK WITH TRIDENT AND U-SHAPED ORNAMENTS -115CB ; [*047F.0020.0002] # SIDDHAM SECTION MARK WITH TRIDENT AND DOTTED CRESCENTS -115CC ; [*0480.0020.0002] # SIDDHAM SECTION MARK WITH RAYS AND DOTTED CRESCENTS -115CD ; [*0481.0020.0002] # SIDDHAM SECTION MARK WITH RAYS AND DOTTED DOUBLE CRESCENTS -115CE ; [*0482.0020.0002] # SIDDHAM SECTION MARK WITH RAYS AND DOTTED TRIPLE CRESCENTS -115CF ; [*0483.0020.0002] # SIDDHAM SECTION MARK DOUBLE RING -115D0 ; [*0484.0020.0002] # SIDDHAM SECTION MARK DOUBLE RING WITH RAYS -115D1 ; [*0485.0020.0002] # SIDDHAM SECTION MARK WITH DOUBLE CRESCENTS -115D2 ; [*0486.0020.0002] # SIDDHAM SECTION MARK WITH TRIPLE CRESCENTS -115D3 ; [*0487.0020.0002] # SIDDHAM SECTION MARK WITH QUADRUPLE CRESCENTS -115D4 ; [*0488.0020.0002] # SIDDHAM SECTION MARK WITH SEPTUPLE CRESCENTS -115D5 ; [*0489.0020.0002] # SIDDHAM SECTION MARK WITH CIRCLES AND RAYS -115D6 ; [*048A.0020.0002] # SIDDHAM SECTION MARK WITH CIRCLES AND TWO ENCLOSURES -115D7 ; [*048B.0020.0002] # SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES -11641 ; [*02BB.0020.0002] # MODI DANDA -11642 ; [*02BC.0020.0002] # MODI DOUBLE DANDA -11643 ; [*048C.0020.0002] # MODI ABBREVIATION SIGN -11660 ; [*03DF.0020.0002] # MONGOLIAN BIRGA WITH ORNAMENT -11661 ; [*03E0.0020.0002] # MONGOLIAN ROTATED BIRGA -11662 ; [*03E1.0020.0002] # MONGOLIAN DOUBLE BIRGA WITH ORNAMENT -11663 ; [*03E2.0020.0002] # MONGOLIAN TRIPLE BIRGA WITH ORNAMENT -11664 ; [*03E3.0020.0002] # MONGOLIAN BIRGA WITH DOUBLE ORNAMENT -11665 ; [*03E4.0020.0002] # MONGOLIAN ROTATED BIRGA WITH ORNAMENT -11666 ; [*03E5.0020.0002] # MONGOLIAN ROTATED BIRGA WITH DOUBLE ORNAMENT -11667 ; [*03E6.0020.0002] # MONGOLIAN INVERTED BIRGA -11668 ; [*03E7.0020.0002] # MONGOLIAN INVERTED BIRGA WITH DOUBLE ORNAMENT -11669 ; [*03E8.0020.0002] # MONGOLIAN SWIRL BIRGA -1166A ; [*03E9.0020.0002] # MONGOLIAN SWIRL BIRGA WITH ORNAMENT -1166B ; [*03EA.0020.0002] # MONGOLIAN SWIRL BIRGA WITH DOUBLE ORNAMENT -1166C ; [*03EB.0020.0002] # MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT -1173A ; [*1BD5.0020.0002] # AHOM NUMBER TEN -1173B ; [*1BD6.0020.0002] # AHOM NUMBER TWENTY -1173C ; [*02BD.0020.0002] # AHOM SIGN SMALL SECTION -1173D ; [*02BE.0020.0002] # AHOM SIGN SECTION -1173E ; [*02E8.0020.0002] # AHOM SIGN RULAI -1173F ; [*0566.0020.0002] # AHOM SYMBOL VI -118EA ; [*1BFB.0020.0002] # WARANG CITI NUMBER TEN -118EB ; [*1BFC.0020.0002] # WARANG CITI NUMBER TWENTY -118EC ; [*1BFD.0020.0002] # WARANG CITI NUMBER THIRTY -118ED ; [*1BFE.0020.0002] # WARANG CITI NUMBER FORTY -118EE ; [*1BFF.0020.0002] # WARANG CITI NUMBER FIFTY -118EF ; [*1C00.0020.0002] # WARANG CITI NUMBER SIXTY -118F0 ; [*1C01.0020.0002] # WARANG CITI NUMBER SEVENTY -118F1 ; [*1C02.0020.0002] # WARANG CITI NUMBER EIGHTY -118F2 ; [*1C03.0020.0002] # WARANG CITI NUMBER NINETY -11A3F ; [*040F.0020.0002] # ZANABAZAR SQUARE INITIAL HEAD MARK -11A40 ; [*0410.0020.0002] # ZANABAZAR SQUARE CLOSING HEAD MARK -11A41 ; [*0411.0020.0002] # ZANABAZAR SQUARE MARK TSHEG -11A42 ; [*0412.0020.0002] # ZANABAZAR SQUARE MARK SHAD -11A43 ; [*0413.0020.0002] # ZANABAZAR SQUARE MARK DOUBLE SHAD -11A44 ; [*0414.0020.0002] # ZANABAZAR SQUARE MARK LONG TSHEG -11A45 ; [*0415.0020.0002] # ZANABAZAR SQUARE INITIAL DOUBLE-LINED HEAD MARK -11A46 ; [*0416.0020.0002] # ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK -11A9A ; [*0417.0020.0002] # SOYOMBO MARK TSHEG -11A9B ; [*0418.0020.0002] # SOYOMBO MARK SHAD -11A9C ; [*0419.0020.0002] # SOYOMBO MARK DOUBLE SHAD -11A9E ; [*041A.0020.0002] # SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME -11A9F ; [*041B.0020.0002] # SOYOMBO HEAD MARK WITH MOON AND SUN AND FLAME -11AA0 ; [*041C.0020.0002] # SOYOMBO HEAD MARK WITH MOON AND SUN -11AA1 ; [*041D.0020.0002] # SOYOMBO TERMINAL MARK-1 -11AA2 ; [*041E.0020.0002] # SOYOMBO TERMINAL MARK-2 -11C41 ; [*02BF.0020.0002] # BHAIKSUKI DANDA -11C42 ; [*02C0.0020.0002] # BHAIKSUKI DOUBLE DANDA -11C43 ; [*0455.0020.0002] # BHAIKSUKI WORD SEPARATOR -11C44 ; [*0456.0020.0002] # BHAIKSUKI GAP FILLER-1 -11C45 ; [*0457.0020.0002] # BHAIKSUKI GAP FILLER-2 -11C63 ; [*1BE6.0020.0002] # BHAIKSUKI NUMBER TEN -11C64 ; [*1BE7.0020.0002] # BHAIKSUKI NUMBER TWENTY -11C65 ; [*1BE8.0020.0002] # BHAIKSUKI NUMBER THIRTY -11C66 ; [*1BE9.0020.0002] # BHAIKSUKI NUMBER FORTY -11C67 ; [*1BEA.0020.0002] # BHAIKSUKI NUMBER FIFTY -11C68 ; [*1BEB.0020.0002] # BHAIKSUKI NUMBER SIXTY -11C69 ; [*1BEC.0020.0002] # BHAIKSUKI NUMBER SEVENTY -11C6A ; [*1BED.0020.0002] # BHAIKSUKI NUMBER EIGHTY -11C6B ; [*1BEE.0020.0002] # BHAIKSUKI NUMBER NINETY -11C6C ; [*1BEF.0020.0002] # BHAIKSUKI HUNDREDS UNIT MARK -11C70 ; [*041F.0020.0002] # MARCHEN HEAD MARK -11C71 ; [*0420.0020.0002] # MARCHEN MARK SHAD -12432 ; [*1C42.0020.0002] # CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH -12433 ; [*1C43.0020.0002] # CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN -1245A ; [*1C44.0020.0002] # CUNEIFORM NUMERIC SIGN ONE THIRD DISH -1245B ; [*1C45.0020.0002] # CUNEIFORM NUMERIC SIGN TWO THIRDS DISH -1245C ; [*1C46.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH -1245D ; [*1C47.0020.0002] # CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A -1245E ; [*1C48.0020.0002] # CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A -1245F ; [*1C49.0020.0002] # CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH -12460 ; [*1C4A.0020.0002] # CUNEIFORM NUMERIC SIGN ONE QUARTER ASH -12461 ; [*1C4B.0020.0002] # CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH -12462 ; [*1C4C.0020.0002] # CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER -12463 ; [*1C4D.0020.0002] # CUNEIFORM NUMERIC SIGN ONE QUARTER GUR -12464 ; [*1C4E.0020.0002] # CUNEIFORM NUMERIC SIGN ONE HALF GUR -12465 ; [*1C4F.0020.0002] # CUNEIFORM NUMERIC SIGN ELAMITE ONE THIRD -12466 ; [*1C50.0020.0002] # CUNEIFORM NUMERIC SIGN ELAMITE TWO THIRDS -12467 ; [*1C51.0020.0002] # CUNEIFORM NUMERIC SIGN ELAMITE FORTY -12468 ; [*1C52.0020.0002] # CUNEIFORM NUMERIC SIGN ELAMITE FIFTY -12470 ; [*0301.0020.0002] # CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER -12471 ; [*0302.0020.0002] # CUNEIFORM PUNCTUATION SIGN VERTICAL COLON -12472 ; [*0303.0020.0002] # CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON -12473 ; [*0304.0020.0002] # CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON -12474 ; [*0305.0020.0002] # CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON -16A6E ; [*02C1.0020.0002] # MRO DANDA -16A6F ; [*02C2.0020.0002] # MRO DOUBLE DANDA -16AF5 ; [*0289.0020.0002] # BASSA VAH FULL STOP -16B37 ; [*048D.0020.0002] # PAHAWH HMONG SIGN VOS THOM -16B38 ; [*048E.0020.0002] # PAHAWH HMONG SIGN VOS TSHAB CEEB -16B39 ; [*048F.0020.0002] # PAHAWH HMONG SIGN CIM CHEEM -16B3A ; [*0490.0020.0002] # PAHAWH HMONG SIGN VOS THIAB -16B3B ; [*0491.0020.0002] # PAHAWH HMONG SIGN VOS FEEM -16B3C ; [*0FE9.0020.0002] # PAHAWH HMONG SIGN XYEEM NTXIV -16B3D ; [*0FEA.0020.0002] # PAHAWH HMONG SIGN XYEEM RHO -16B3E ; [*0FEB.0020.0002] # PAHAWH HMONG SIGN XYEEM TOV -16B3F ; [*0FEC.0020.0002] # PAHAWH HMONG SIGN XYEEM FAIB -16B44 ; [*0492.0020.0002] # PAHAWH HMONG SIGN XAUS -16B45 ; [*0FED.0020.0002] # PAHAWH HMONG SIGN CIM TSOV ROG -16B5B ; [*1C04.0020.0002] # PAHAWH HMONG NUMBER TENS -16B5C ; [*1C05.0020.0002] # PAHAWH HMONG NUMBER HUNDREDS -16B5D ; [*1C06.0020.0002] # PAHAWH HMONG NUMBER TEN THOUSANDS -16B5E ; [*1C07.0020.0002] # PAHAWH HMONG NUMBER MILLIONS -16B5F ; [*1C08.0020.0002] # PAHAWH HMONG NUMBER HUNDRED MILLIONS -16B60 ; [*1C09.0020.0002] # PAHAWH HMONG NUMBER TEN BILLIONS -16B61 ; [*1C0A.0020.0002] # PAHAWH HMONG NUMBER TRILLIONS -1BC9C ; [*11DE.0020.0002] # DUPLOYAN SIGN O WITH CROSS -1BC9F ; [*028A.0020.0002] # DUPLOYAN PUNCTUATION CHINOOK FULL STOP -1D000 ; [*0FEE.0020.0002] # BYZANTINE MUSICAL SYMBOL PSILI -1D001 ; [*0FEF.0020.0002] # BYZANTINE MUSICAL SYMBOL DASEIA -1D002 ; [*0FF0.0020.0002] # BYZANTINE MUSICAL SYMBOL PERISPOMENI -1D003 ; [*0FF1.0020.0002] # BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON -1D004 ; [*0FF2.0020.0002] # BYZANTINE MUSICAL SYMBOL OXEIA DIPLI -1D005 ; [*0FF3.0020.0002] # BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON -1D006 ; [*0FF4.0020.0002] # BYZANTINE MUSICAL SYMBOL VAREIA DIPLI -1D007 ; [*0FF5.0020.0002] # BYZANTINE MUSICAL SYMBOL KATHISTI -1D008 ; [*0FF6.0020.0002] # BYZANTINE MUSICAL SYMBOL SYRMATIKI -1D009 ; [*0FF7.0020.0002] # BYZANTINE MUSICAL SYMBOL PARAKLITIKI -1D00A ; [*0FF8.0020.0002] # BYZANTINE MUSICAL SYMBOL YPOKRISIS -1D00B ; [*0FF9.0020.0002] # BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI -1D00C ; [*0FFA.0020.0002] # BYZANTINE MUSICAL SYMBOL KREMASTI -1D00D ; [*0FFB.0020.0002] # BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON -1D00E ; [*0FFC.0020.0002] # BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON -1D00F ; [*0FFD.0020.0002] # BYZANTINE MUSICAL SYMBOL TELEIA -1D010 ; [*0FFE.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMATA -1D011 ; [*0FFF.0020.0002] # BYZANTINE MUSICAL SYMBOL APOSTROFOS -1D012 ; [*1000.0020.0002] # BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI -1D013 ; [*1001.0020.0002] # BYZANTINE MUSICAL SYMBOL SYNEVMA -1D014 ; [*1002.0020.0002] # BYZANTINE MUSICAL SYMBOL THITA -1D015 ; [*1003.0020.0002] # BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION -1D016 ; [*1004.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGON ARCHAION -1D017 ; [*1005.0020.0002] # BYZANTINE MUSICAL SYMBOL PSILON -1D018 ; [*1006.0020.0002] # BYZANTINE MUSICAL SYMBOL CHAMILON -1D019 ; [*1007.0020.0002] # BYZANTINE MUSICAL SYMBOL VATHY -1D01A ; [*1008.0020.0002] # BYZANTINE MUSICAL SYMBOL ISON ARCHAION -1D01B ; [*1009.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION -1D01C ; [*100A.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION -1D01D ; [*100B.0020.0002] # BYZANTINE MUSICAL SYMBOL SAXIMATA -1D01E ; [*100C.0020.0002] # BYZANTINE MUSICAL SYMBOL PARICHON -1D01F ; [*100D.0020.0002] # BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA -1D020 ; [*100E.0020.0002] # BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION -1D021 ; [*100F.0020.0002] # BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION -1D022 ; [*1010.0020.0002] # BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION -1D023 ; [*1011.0020.0002] # BYZANTINE MUSICAL SYMBOL APOTHEMA -1D024 ; [*1012.0020.0002] # BYZANTINE MUSICAL SYMBOL KLASMA -1D025 ; [*1013.0020.0002] # BYZANTINE MUSICAL SYMBOL REVMA -1D026 ; [*1014.0020.0002] # BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION -1D027 ; [*1015.0020.0002] # BYZANTINE MUSICAL SYMBOL TINAGMA -1D028 ; [*1016.0020.0002] # BYZANTINE MUSICAL SYMBOL ANATRICHISMA -1D029 ; [*1017.0020.0002] # BYZANTINE MUSICAL SYMBOL SEISMA -1D02A ; [*1018.0020.0002] # BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION -1D02B ; [*1019.0020.0002] # BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU -1D02C ; [*101A.0020.0002] # BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION -1D02D ; [*101B.0020.0002] # BYZANTINE MUSICAL SYMBOL THEMA -1D02E ; [*101C.0020.0002] # BYZANTINE MUSICAL SYMBOL LEMOI -1D02F ; [*101D.0020.0002] # BYZANTINE MUSICAL SYMBOL DYO -1D030 ; [*101E.0020.0002] # BYZANTINE MUSICAL SYMBOL TRIA -1D031 ; [*101F.0020.0002] # BYZANTINE MUSICAL SYMBOL TESSERA -1D032 ; [*1020.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMATA -1D033 ; [*1021.0020.0002] # BYZANTINE MUSICAL SYMBOL APESO EXO NEO -1D034 ; [*1022.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION -1D035 ; [*1023.0020.0002] # BYZANTINE MUSICAL SYMBOL IMIFTHORA -1D036 ; [*1024.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION -1D037 ; [*1025.0020.0002] # BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON -1D038 ; [*1026.0020.0002] # BYZANTINE MUSICAL SYMBOL PELASTON -1D039 ; [*1027.0020.0002] # BYZANTINE MUSICAL SYMBOL PSIFISTON -1D03A ; [*1028.0020.0002] # BYZANTINE MUSICAL SYMBOL KONTEVMA -1D03B ; [*1029.0020.0002] # BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION -1D03C ; [*102A.0020.0002] # BYZANTINE MUSICAL SYMBOL RAPISMA -1D03D ; [*102B.0020.0002] # BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION -1D03E ; [*102C.0020.0002] # BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION -1D03F ; [*102D.0020.0002] # BYZANTINE MUSICAL SYMBOL ICHADIN -1D040 ; [*102E.0020.0002] # BYZANTINE MUSICAL SYMBOL NANA -1D041 ; [*102F.0020.0002] # BYZANTINE MUSICAL SYMBOL PETASMA -1D042 ; [*1030.0020.0002] # BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO -1D043 ; [*1031.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKON ALLO -1D044 ; [*1032.0020.0002] # BYZANTINE MUSICAL SYMBOL STRAGGISMATA -1D045 ; [*1033.0020.0002] # BYZANTINE MUSICAL SYMBOL GRONTHISMATA -1D046 ; [*1034.0020.0002] # BYZANTINE MUSICAL SYMBOL ISON NEO -1D047 ; [*1035.0020.0002] # BYZANTINE MUSICAL SYMBOL OLIGON NEO -1D048 ; [*1036.0020.0002] # BYZANTINE MUSICAL SYMBOL OXEIA NEO -1D049 ; [*1037.0020.0002] # BYZANTINE MUSICAL SYMBOL PETASTI -1D04A ; [*1038.0020.0002] # BYZANTINE MUSICAL SYMBOL KOUFISMA -1D04B ; [*1039.0020.0002] # BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA -1D04C ; [*103A.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA -1D04D ; [*103B.0020.0002] # BYZANTINE MUSICAL SYMBOL PELASTON NEO -1D04E ; [*103C.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO -1D04F ; [*103D.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO -1D050 ; [*103E.0020.0002] # BYZANTINE MUSICAL SYMBOL YPSILI -1D051 ; [*103F.0020.0002] # BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO -1D052 ; [*1040.0020.0002] # BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO -1D053 ; [*1041.0020.0002] # BYZANTINE MUSICAL SYMBOL YPORROI -1D054 ; [*1042.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON -1D055 ; [*1043.0020.0002] # BYZANTINE MUSICAL SYMBOL ELAFRON -1D056 ; [*1044.0020.0002] # BYZANTINE MUSICAL SYMBOL CHAMILI -1D057 ; [*1045.0020.0002] # BYZANTINE MUSICAL SYMBOL MIKRON ISON -1D058 ; [*1046.0020.0002] # BYZANTINE MUSICAL SYMBOL VAREIA NEO -1D059 ; [*1047.0020.0002] # BYZANTINE MUSICAL SYMBOL PIASMA NEO -1D05A ; [*1048.0020.0002] # BYZANTINE MUSICAL SYMBOL PSIFISTON NEO -1D05B ; [*1049.0020.0002] # BYZANTINE MUSICAL SYMBOL OMALON -1D05C ; [*104A.0020.0002] # BYZANTINE MUSICAL SYMBOL ANTIKENOMA -1D05D ; [*104B.0020.0002] # BYZANTINE MUSICAL SYMBOL LYGISMA -1D05E ; [*104C.0020.0002] # BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO -1D05F ; [*104D.0020.0002] # BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO -1D060 ; [*104E.0020.0002] # BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA -1D061 ; [*104F.0020.0002] # BYZANTINE MUSICAL SYMBOL KYLISMA -1D062 ; [*1050.0020.0002] # BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA -1D063 ; [*1051.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKON NEO -1D064 ; [*1052.0020.0002] # BYZANTINE MUSICAL SYMBOL EKSTREPTON -1D065 ; [*1053.0020.0002] # BYZANTINE MUSICAL SYMBOL SYNAGMA NEO -1D066 ; [*1054.0020.0002] # BYZANTINE MUSICAL SYMBOL SYRMA -1D067 ; [*1055.0020.0002] # BYZANTINE MUSICAL SYMBOL CHOREVMA NEO -1D068 ; [*1056.0020.0002] # BYZANTINE MUSICAL SYMBOL EPEGERMA -1D069 ; [*1057.0020.0002] # BYZANTINE MUSICAL SYMBOL SEISMA NEO -1D06A ; [*1058.0020.0002] # BYZANTINE MUSICAL SYMBOL XIRON KLASMA -1D06B ; [*1059.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON -1D06C ; [*105A.0020.0002] # BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA -1D06D ; [*105B.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA -1D06E ; [*105C.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA -1D06F ; [*105D.0020.0002] # BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA -1D070 ; [*105E.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA -1D071 ; [*105F.0020.0002] # BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA -1D072 ; [*1060.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON -1D073 ; [*1061.0020.0002] # BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON -1D074 ; [*1062.0020.0002] # BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON -1D075 ; [*1063.0020.0002] # BYZANTINE MUSICAL SYMBOL OYRANISMA NEO -1D076 ; [*1064.0020.0002] # BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO -1D077 ; [*1065.0020.0002] # BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO -1D078 ; [*1066.0020.0002] # BYZANTINE MUSICAL SYMBOL THEMA APLOUN -1D079 ; [*1067.0020.0002] # BYZANTINE MUSICAL SYMBOL THES KAI APOTHES -1D07A ; [*1068.0020.0002] # BYZANTINE MUSICAL SYMBOL KATAVASMA -1D07B ; [*1069.0020.0002] # BYZANTINE MUSICAL SYMBOL ENDOFONON -1D07C ; [*106A.0020.0002] # BYZANTINE MUSICAL SYMBOL YFEN KATO -1D07D ; [*106B.0020.0002] # BYZANTINE MUSICAL SYMBOL YFEN ANO -1D07E ; [*106C.0020.0002] # BYZANTINE MUSICAL SYMBOL STAVROS -1D07F ; [*106D.0020.0002] # BYZANTINE MUSICAL SYMBOL KLASMA ANO -1D080 ; [*106E.0020.0002] # BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION -1D081 ; [*106F.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION -1D082 ; [*1070.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMA ALLO -1D083 ; [*1071.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMA NEO -1D084 ; [*1072.0020.0002] # BYZANTINE MUSICAL SYMBOL APODERMA NEO -1D085 ; [*1073.0020.0002] # BYZANTINE MUSICAL SYMBOL APLI -1D086 ; [*1074.0020.0002] # BYZANTINE MUSICAL SYMBOL DIPLI -1D087 ; [*1075.0020.0002] # BYZANTINE MUSICAL SYMBOL TRIPLI -1D088 ; [*1076.0020.0002] # BYZANTINE MUSICAL SYMBOL TETRAPLI -1D089 ; [*1077.0020.0002] # BYZANTINE MUSICAL SYMBOL KORONIS -1D08A ; [*1078.0020.0002] # BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU -1D08B ; [*1079.0020.0002] # BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON -1D08C ; [*107A.0020.0002] # BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON -1D08D ; [*107B.0020.0002] # BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON -1D08E ; [*107C.0020.0002] # BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU -1D08F ; [*107D.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGON NEO ANO -1D090 ; [*107E.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA -1D091 ; [*107F.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA -1D092 ; [*1080.0020.0002] # BYZANTINE MUSICAL SYMBOL DIGORGON -1D093 ; [*1081.0020.0002] # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO -1D094 ; [*1082.0020.0002] # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO -1D095 ; [*1083.0020.0002] # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA -1D096 ; [*1084.0020.0002] # BYZANTINE MUSICAL SYMBOL TRIGORGON -1D097 ; [*1085.0020.0002] # BYZANTINE MUSICAL SYMBOL ARGON -1D098 ; [*1086.0020.0002] # BYZANTINE MUSICAL SYMBOL IMIDIARGON -1D099 ; [*1087.0020.0002] # BYZANTINE MUSICAL SYMBOL DIARGON -1D09A ; [*1088.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI -1D09B ; [*1089.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI -1D09C ; [*108A.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI ARGI -1D09D ; [*108B.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI METRIA -1D09E ; [*108C.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI MESI -1D09F ; [*108D.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI GORGI -1D0A0 ; [*108E.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI -1D0A1 ; [*108F.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI -1D0A2 ; [*1090.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS -1D0A3 ; [*1091.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS -1D0A4 ; [*1092.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS -1D0A5 ; [*1093.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS -1D0A6 ; [*1094.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS -1D0A7 ; [*1095.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS -1D0A8 ; [*1096.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS -1D0A9 ; [*1097.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS -1D0AA ; [*1098.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS -1D0AB ; [*1099.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS -1D0AC ; [*109A.0020.0002] # BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS -1D0AD ; [*109B.0020.0002] # BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS -1D0AE ; [*109C.0020.0002] # BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS -1D0AF ; [*109D.0020.0002] # BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS -1D0B0 ; [*109E.0020.0002] # BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS -1D0B1 ; [*109F.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS -1D0B2 ; [*10A0.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS -1D0B3 ; [*10A1.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS -1D0B4 ; [*10A2.0020.0002] # BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN -1D0B5 ; [*10A3.0020.0002] # BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN -1D0B6 ; [*10A4.0020.0002] # BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU -1D0B7 ; [*10A5.0020.0002] # BYZANTINE MUSICAL SYMBOL IMIFONON -1D0B8 ; [*10A6.0020.0002] # BYZANTINE MUSICAL SYMBOL IMIFTHORON -1D0B9 ; [*10A7.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU -1D0BA ; [*10A8.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA -1D0BB ; [*10A9.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA -1D0BC ; [*10AA.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS -1D0BD ; [*10AB.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI -1D0BE ; [*10AC.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI -1D0BF ; [*10AD.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE -1D0C0 ; [*10AE.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO -1D0C1 ; [*10AF.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO -1D0C2 ; [*10B0.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO -1D0C3 ; [*10B1.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS -1D0C4 ; [*10B2.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS -1D0C5 ; [*10B3.0020.0002] # BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS -1D0C6 ; [*10B4.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI -1D0C7 ; [*10B5.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA NENANO -1D0C8 ; [*10B6.0020.0002] # BYZANTINE MUSICAL SYMBOL CHROA ZYGOS -1D0C9 ; [*10B7.0020.0002] # BYZANTINE MUSICAL SYMBOL CHROA KLITON -1D0CA ; [*10B8.0020.0002] # BYZANTINE MUSICAL SYMBOL CHROA SPATHI -1D0CB ; [*10B9.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION -1D0CC ; [*10BA.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA -1D0CD ; [*10BB.0020.0002] # BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION -1D0CE ; [*10BC.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION -1D0CF ; [*10BD.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION -1D0D0 ; [*10BE.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA -1D0D1 ; [*10BF.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA -1D0D2 ; [*10C0.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA -1D0D3 ; [*10C1.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA -1D0D4 ; [*10C2.0020.0002] # BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA -1D0D5 ; [*10C3.0020.0002] # BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA -1D0D6 ; [*10C4.0020.0002] # BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA -1D0D7 ; [*10C5.0020.0002] # BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA -1D0D8 ; [*10C6.0020.0002] # BYZANTINE MUSICAL SYMBOL GENIKI DIESIS -1D0D9 ; [*10C7.0020.0002] # BYZANTINE MUSICAL SYMBOL GENIKI YFESIS -1D0DA ; [*10C8.0020.0002] # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI -1D0DB ; [*10C9.0020.0002] # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI -1D0DC ; [*10CA.0020.0002] # BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI -1D0DD ; [*10CB.0020.0002] # BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS -1D0DE ; [*10CC.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS -1D0DF ; [*10CD.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU -1D0E0 ; [*10CE.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU -1D0E1 ; [*10CF.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU -1D0E2 ; [*10D0.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS -1D0E3 ; [*10D1.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU -1D0E4 ; [*10D2.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU -1D0E5 ; [*10D3.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU -1D0E6 ; [*10D4.0020.0002] # BYZANTINE MUSICAL SYMBOL DIGRAMMA GG -1D0E7 ; [*10D5.0020.0002] # BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU -1D0E8 ; [*10D6.0020.0002] # BYZANTINE MUSICAL SYMBOL STIGMA -1D0E9 ; [*10D7.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO PA -1D0EA ; [*10D8.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO VOU -1D0EB ; [*10D9.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO GA -1D0EC ; [*10DA.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO DI -1D0ED ; [*10DB.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO KE -1D0EE ; [*10DC.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO ZO -1D0EF ; [*10DD.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO NI -1D0F0 ; [*10DE.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO -1D0F1 ; [*10DF.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO -1D0F2 ; [*10E0.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO -1D0F3 ; [*10E1.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO -1D0F4 ; [*10E2.0020.0002] # BYZANTINE MUSICAL SYMBOL KLASMA KATO -1D0F5 ; [*10E3.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGON NEO KATO -1D100 ; [*10E4.0020.0002] # MUSICAL SYMBOL SINGLE BARLINE -1D101 ; [*10E5.0020.0002] # MUSICAL SYMBOL DOUBLE BARLINE -1D102 ; [*10E6.0020.0002] # MUSICAL SYMBOL FINAL BARLINE -1D103 ; [*10E7.0020.0002] # MUSICAL SYMBOL REVERSE FINAL BARLINE -1D104 ; [*10E8.0020.0002] # MUSICAL SYMBOL DASHED BARLINE -1D105 ; [*10E9.0020.0002] # MUSICAL SYMBOL SHORT BARLINE -1D106 ; [*10EA.0020.0002] # MUSICAL SYMBOL LEFT REPEAT SIGN -1D107 ; [*10EB.0020.0002] # MUSICAL SYMBOL RIGHT REPEAT SIGN -1D108 ; [*10EC.0020.0002] # MUSICAL SYMBOL REPEAT DOTS -1D109 ; [*10ED.0020.0002] # MUSICAL SYMBOL DAL SEGNO -1D10A ; [*10EE.0020.0002] # MUSICAL SYMBOL DA CAPO -1D10B ; [*10EF.0020.0002] # MUSICAL SYMBOL SEGNO -1D10C ; [*10F0.0020.0002] # MUSICAL SYMBOL CODA -1D10D ; [*10F1.0020.0002] # MUSICAL SYMBOL REPEATED FIGURE-1 -1D10E ; [*10F2.0020.0002] # MUSICAL SYMBOL REPEATED FIGURE-2 -1D10F ; [*10F3.0020.0002] # MUSICAL SYMBOL REPEATED FIGURE-3 -1D110 ; [*10F4.0020.0002] # MUSICAL SYMBOL FERMATA -1D111 ; [*10F5.0020.0002] # MUSICAL SYMBOL FERMATA BELOW -1D112 ; [*10F6.0020.0002] # MUSICAL SYMBOL BREATH MARK -1D113 ; [*10F7.0020.0002] # MUSICAL SYMBOL CAESURA -1D114 ; [*10F8.0020.0002] # MUSICAL SYMBOL BRACE -1D115 ; [*10F9.0020.0002] # MUSICAL SYMBOL BRACKET -1D116 ; [*10FA.0020.0002] # MUSICAL SYMBOL ONE-LINE STAFF -1D117 ; [*10FB.0020.0002] # MUSICAL SYMBOL TWO-LINE STAFF -1D118 ; [*10FC.0020.0002] # MUSICAL SYMBOL THREE-LINE STAFF -1D119 ; [*10FD.0020.0002] # MUSICAL SYMBOL FOUR-LINE STAFF -1D11A ; [*10FE.0020.0002] # MUSICAL SYMBOL FIVE-LINE STAFF -1D11B ; [*10FF.0020.0002] # MUSICAL SYMBOL SIX-LINE STAFF -1D11C ; [*1100.0020.0002] # MUSICAL SYMBOL SIX-STRING FRETBOARD -1D11D ; [*1101.0020.0002] # MUSICAL SYMBOL FOUR-STRING FRETBOARD -1D11E ; [*1102.0020.0002] # MUSICAL SYMBOL G CLEF -1D11F ; [*1103.0020.0002] # MUSICAL SYMBOL G CLEF OTTAVA ALTA -1D120 ; [*1104.0020.0002] # MUSICAL SYMBOL G CLEF OTTAVA BASSA -1D121 ; [*1105.0020.0002] # MUSICAL SYMBOL C CLEF -1D122 ; [*1106.0020.0002] # MUSICAL SYMBOL F CLEF -1D123 ; [*1107.0020.0002] # MUSICAL SYMBOL F CLEF OTTAVA ALTA -1D124 ; [*1108.0020.0002] # MUSICAL SYMBOL F CLEF OTTAVA BASSA -1D125 ; [*1109.0020.0002] # MUSICAL SYMBOL DRUM CLEF-1 -1D126 ; [*110A.0020.0002] # MUSICAL SYMBOL DRUM CLEF-2 -1D129 ; [*111E.0020.0002] # MUSICAL SYMBOL MULTIPLE MEASURE REST -1D12A ; [*110E.0020.0002] # MUSICAL SYMBOL DOUBLE SHARP -1D12B ; [*110F.0020.0002] # MUSICAL SYMBOL DOUBLE FLAT -1D12C ; [*1110.0020.0002] # MUSICAL SYMBOL FLAT UP -1D12D ; [*1111.0020.0002] # MUSICAL SYMBOL FLAT DOWN -1D12E ; [*1112.0020.0002] # MUSICAL SYMBOL NATURAL UP -1D12F ; [*1113.0020.0002] # MUSICAL SYMBOL NATURAL DOWN -1D130 ; [*1114.0020.0002] # MUSICAL SYMBOL SHARP UP -1D131 ; [*1115.0020.0002] # MUSICAL SYMBOL SHARP DOWN -1D132 ; [*1116.0020.0002] # MUSICAL SYMBOL QUARTER TONE SHARP -1D133 ; [*1117.0020.0002] # MUSICAL SYMBOL QUARTER TONE FLAT -1D134 ; [*1118.0020.0002] # MUSICAL SYMBOL COMMON TIME -1D135 ; [*1119.0020.0002] # MUSICAL SYMBOL CUT TIME -1D136 ; [*111A.0020.0002] # MUSICAL SYMBOL OTTAVA ALTA -1D137 ; [*111B.0020.0002] # MUSICAL SYMBOL OTTAVA BASSA -1D138 ; [*111C.0020.0002] # MUSICAL SYMBOL QUINDICESIMA ALTA -1D139 ; [*111D.0020.0002] # MUSICAL SYMBOL QUINDICESIMA BASSA -1D13A ; [*111F.0020.0002] # MUSICAL SYMBOL MULTI REST -1D13B ; [*1120.0020.0002] # MUSICAL SYMBOL WHOLE REST -1D13C ; [*1121.0020.0002] # MUSICAL SYMBOL HALF REST -1D13D ; [*1122.0020.0002] # MUSICAL SYMBOL QUARTER REST -1D13E ; [*1123.0020.0002] # MUSICAL SYMBOL EIGHTH REST -1D13F ; [*1124.0020.0002] # MUSICAL SYMBOL SIXTEENTH REST -1D140 ; [*1125.0020.0002] # MUSICAL SYMBOL THIRTY-SECOND REST -1D141 ; [*1126.0020.0002] # MUSICAL SYMBOL SIXTY-FOURTH REST -1D142 ; [*1127.0020.0002] # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST -1D143 ; [*1128.0020.0002] # MUSICAL SYMBOL X NOTEHEAD -1D144 ; [*1129.0020.0002] # MUSICAL SYMBOL PLUS NOTEHEAD -1D145 ; [*112A.0020.0002] # MUSICAL SYMBOL CIRCLE X NOTEHEAD -1D146 ; [*112B.0020.0002] # MUSICAL SYMBOL SQUARE NOTEHEAD WHITE -1D147 ; [*112C.0020.0002] # MUSICAL SYMBOL SQUARE NOTEHEAD BLACK -1D148 ; [*112D.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE -1D149 ; [*112E.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK -1D14A ; [*112F.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE -1D14B ; [*1130.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK -1D14C ; [*1131.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE -1D14D ; [*1132.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK -1D14E ; [*1133.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE -1D14F ; [*1134.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK -1D150 ; [*1135.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE -1D151 ; [*1136.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK -1D152 ; [*1137.0020.0002] # MUSICAL SYMBOL MOON NOTEHEAD WHITE -1D153 ; [*1138.0020.0002] # MUSICAL SYMBOL MOON NOTEHEAD BLACK -1D154 ; [*1139.0020.0002] # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE -1D155 ; [*113A.0020.0002] # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK -1D156 ; [*113B.0020.0002] # MUSICAL SYMBOL PARENTHESIS NOTEHEAD -1D157 ; [*113C.0020.0002] # MUSICAL SYMBOL VOID NOTEHEAD -1D158 ; [*113D.0020.0002] # MUSICAL SYMBOL NOTEHEAD BLACK -1D159 ; [*113E.0020.0002] # MUSICAL SYMBOL NULL NOTEHEAD -1D15A ; [*113F.0020.0002] # MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE -1D15B ; [*1140.0020.0002] # MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK -1D15C ; [*1141.0020.0002] # MUSICAL SYMBOL BREVE -1D15D ; [*1142.0020.0002] # MUSICAL SYMBOL WHOLE NOTE -1D15E ; [*113C.0020.0002][.0000.0000.0000] # MUSICAL SYMBOL HALF NOTE -1D15F ; [*113D.0020.0002][.0000.0000.0000] # MUSICAL SYMBOL QUARTER NOTE -1D160 ; [*113D.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL EIGHTH NOTE -1D161 ; [*113D.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL SIXTEENTH NOTE -1D162 ; [*113D.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL THIRTY-SECOND NOTE -1D163 ; [*113D.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL SIXTY-FOURTH NOTE -1D164 ; [*113D.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE +1144B ; [*02BE.0020.0002] # NEWA DANDA +1144C ; [*02BF.0020.0002] # NEWA DOUBLE DANDA +1144D ; [*0486.0020.0002] # NEWA COMMA +1144E ; [*0488.0020.0002] # NEWA GAP FILLER +1144F ; [*0489.0020.0002] # NEWA ABBREVIATION SIGN +1145A ; [*0487.0020.0002] # NEWA DOUBLE COMMA +1145B ; [*048A.0020.0002] # NEWA PLACEHOLDER MARK +1145D ; [*048B.0020.0002] # NEWA INSERTION SIGN +114C6 ; [*048C.0020.0002] # TIRHUTA ABBREVIATION SIGN +115C1 ; [*048D.0020.0002] # SIDDHAM SIGN SIDDHAM +115C2 ; [*02C0.0020.0002] # SIDDHAM DANDA +115C3 ; [*02C1.0020.0002] # SIDDHAM DOUBLE DANDA +115C4 ; [*048E.0020.0002] # SIDDHAM SEPARATOR DOT +115C5 ; [*048F.0020.0002] # SIDDHAM SEPARATOR BAR +115C6 ; [*0490.0020.0002] # SIDDHAM REPETITION MARK-1 +115C7 ; [*0491.0020.0002] # SIDDHAM REPETITION MARK-2 +115C8 ; [*0492.0020.0002] # SIDDHAM REPETITION MARK-3 +115C9 ; [*0493.0020.0002] # SIDDHAM END OF TEXT MARK +115CA ; [*0494.0020.0002] # SIDDHAM SECTION MARK WITH TRIDENT AND U-SHAPED ORNAMENTS +115CB ; [*0495.0020.0002] # SIDDHAM SECTION MARK WITH TRIDENT AND DOTTED CRESCENTS +115CC ; [*0496.0020.0002] # SIDDHAM SECTION MARK WITH RAYS AND DOTTED CRESCENTS +115CD ; [*0497.0020.0002] # SIDDHAM SECTION MARK WITH RAYS AND DOTTED DOUBLE CRESCENTS +115CE ; [*0498.0020.0002] # SIDDHAM SECTION MARK WITH RAYS AND DOTTED TRIPLE CRESCENTS +115CF ; [*0499.0020.0002] # SIDDHAM SECTION MARK DOUBLE RING +115D0 ; [*049A.0020.0002] # SIDDHAM SECTION MARK DOUBLE RING WITH RAYS +115D1 ; [*049B.0020.0002] # SIDDHAM SECTION MARK WITH DOUBLE CRESCENTS +115D2 ; [*049C.0020.0002] # SIDDHAM SECTION MARK WITH TRIPLE CRESCENTS +115D3 ; [*049D.0020.0002] # SIDDHAM SECTION MARK WITH QUADRUPLE CRESCENTS +115D4 ; [*049E.0020.0002] # SIDDHAM SECTION MARK WITH SEPTUPLE CRESCENTS +115D5 ; [*049F.0020.0002] # SIDDHAM SECTION MARK WITH CIRCLES AND RAYS +115D6 ; [*04A0.0020.0002] # SIDDHAM SECTION MARK WITH CIRCLES AND TWO ENCLOSURES +115D7 ; [*04A1.0020.0002] # SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES +11641 ; [*02C2.0020.0002] # MODI DANDA +11642 ; [*02C3.0020.0002] # MODI DOUBLE DANDA +11643 ; [*04A2.0020.0002] # MODI ABBREVIATION SIGN +11660 ; [*03F3.0020.0002] # MONGOLIAN BIRGA WITH ORNAMENT +11661 ; [*03F4.0020.0002] # MONGOLIAN ROTATED BIRGA +11662 ; [*03F5.0020.0002] # MONGOLIAN DOUBLE BIRGA WITH ORNAMENT +11663 ; [*03F6.0020.0002] # MONGOLIAN TRIPLE BIRGA WITH ORNAMENT +11664 ; [*03F7.0020.0002] # MONGOLIAN BIRGA WITH DOUBLE ORNAMENT +11665 ; [*03F8.0020.0002] # MONGOLIAN ROTATED BIRGA WITH ORNAMENT +11666 ; [*03F9.0020.0002] # MONGOLIAN ROTATED BIRGA WITH DOUBLE ORNAMENT +11667 ; [*03FA.0020.0002] # MONGOLIAN INVERTED BIRGA +11668 ; [*03FB.0020.0002] # MONGOLIAN INVERTED BIRGA WITH DOUBLE ORNAMENT +11669 ; [*03FC.0020.0002] # MONGOLIAN SWIRL BIRGA +1166A ; [*03FD.0020.0002] # MONGOLIAN SWIRL BIRGA WITH ORNAMENT +1166B ; [*03FE.0020.0002] # MONGOLIAN SWIRL BIRGA WITH DOUBLE ORNAMENT +1166C ; [*03FF.0020.0002] # MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT +1173A ; [*1E51.0020.0002] # AHOM NUMBER TEN +1173B ; [*1E52.0020.0002] # AHOM NUMBER TWENTY +1173C ; [*02C4.0020.0002] # AHOM SIGN SMALL SECTION +1173D ; [*02C5.0020.0002] # AHOM SIGN SECTION +1173E ; [*02F5.0020.0002] # AHOM SIGN RULAI +1173F ; [*059E.0020.0002] # AHOM SYMBOL VI +1183B ; [*04A3.0020.0002] # DOGRA ABBREVIATION SIGN +118EA ; [*1E78.0020.0002] # WARANG CITI NUMBER TEN +118EB ; [*1E79.0020.0002] # WARANG CITI NUMBER TWENTY +118EC ; [*1E7A.0020.0002] # WARANG CITI NUMBER THIRTY +118ED ; [*1E7B.0020.0002] # WARANG CITI NUMBER FORTY +118EE ; [*1E7C.0020.0002] # WARANG CITI NUMBER FIFTY +118EF ; [*1E7D.0020.0002] # WARANG CITI NUMBER SIXTY +118F0 ; [*1E7E.0020.0002] # WARANG CITI NUMBER SEVENTY +118F1 ; [*1E7F.0020.0002] # WARANG CITI NUMBER EIGHTY +118F2 ; [*1E80.0020.0002] # WARANG CITI NUMBER NINETY +11944 ; [*02C6.0020.0002] # DIVES AKURU DOUBLE DANDA +11945 ; [*04A4.0020.0002] # DIVES AKURU GAP FILLER +11946 ; [*02F6.0020.0002] # DIVES AKURU END OF TEXT MARK +119E2 ; [*04A5.0020.0002] # NANDINAGARI SIGN SIDDHAM +11A3F ; [*0426.0020.0002] # ZANABAZAR SQUARE INITIAL HEAD MARK +11A40 ; [*0427.0020.0002] # ZANABAZAR SQUARE CLOSING HEAD MARK +11A41 ; [*0428.0020.0002] # ZANABAZAR SQUARE MARK TSHEG +11A42 ; [*0429.0020.0002] # ZANABAZAR SQUARE MARK SHAD +11A43 ; [*042A.0020.0002] # ZANABAZAR SQUARE MARK DOUBLE SHAD +11A44 ; [*042B.0020.0002] # ZANABAZAR SQUARE MARK LONG TSHEG +11A45 ; [*042C.0020.0002] # ZANABAZAR SQUARE INITIAL DOUBLE-LINED HEAD MARK +11A46 ; [*042D.0020.0002] # ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK +11A9A ; [*042E.0020.0002] # SOYOMBO MARK TSHEG +11A9B ; [*042F.0020.0002] # SOYOMBO MARK SHAD +11A9C ; [*0430.0020.0002] # SOYOMBO MARK DOUBLE SHAD +11A9E ; [*0431.0020.0002] # SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME +11A9F ; [*0432.0020.0002] # SOYOMBO HEAD MARK WITH MOON AND SUN AND FLAME +11AA0 ; [*0433.0020.0002] # SOYOMBO HEAD MARK WITH MOON AND SUN +11AA1 ; [*0434.0020.0002] # SOYOMBO TERMINAL MARK-1 +11AA2 ; [*0435.0020.0002] # SOYOMBO TERMINAL MARK-2 +11C41 ; [*02C7.0020.0002] # BHAIKSUKI DANDA +11C42 ; [*02C8.0020.0002] # BHAIKSUKI DOUBLE DANDA +11C43 ; [*046B.0020.0002] # BHAIKSUKI WORD SEPARATOR +11C44 ; [*046C.0020.0002] # BHAIKSUKI GAP FILLER-1 +11C45 ; [*046D.0020.0002] # BHAIKSUKI GAP FILLER-2 +11C63 ; [*1E63.0020.0002] # BHAIKSUKI NUMBER TEN +11C64 ; [*1E64.0020.0002] # BHAIKSUKI NUMBER TWENTY +11C65 ; [*1E65.0020.0002] # BHAIKSUKI NUMBER THIRTY +11C66 ; [*1E66.0020.0002] # BHAIKSUKI NUMBER FORTY +11C67 ; [*1E67.0020.0002] # BHAIKSUKI NUMBER FIFTY +11C68 ; [*1E68.0020.0002] # BHAIKSUKI NUMBER SIXTY +11C69 ; [*1E69.0020.0002] # BHAIKSUKI NUMBER SEVENTY +11C6A ; [*1E6A.0020.0002] # BHAIKSUKI NUMBER EIGHTY +11C6B ; [*1E6B.0020.0002] # BHAIKSUKI NUMBER NINETY +11C6C ; [*1E6C.0020.0002] # BHAIKSUKI HUNDREDS UNIT MARK +11C70 ; [*0436.0020.0002] # MARCHEN HEAD MARK +11C71 ; [*0437.0020.0002] # MARCHEN MARK SHAD +11EF7 ; [*02F7.0020.0002] # MAKASAR PASSIMBANG +11EF8 ; [*02F8.0020.0002] # MAKASAR END OF SECTION +11FC0 ; [*1D6B.0020.0002] # TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH +11FC1 ; [*1D6C.0020.0002] # TAMIL FRACTION ONE ONE-HUNDRED-AND-SIXTIETH +11FC2 ; [*1D6D.0020.0002] # TAMIL FRACTION ONE EIGHTIETH +11FC3 ; [*1D6E.0020.0002] # TAMIL FRACTION ONE SIXTY-FOURTH +11FC4 ; [*1D6F.0020.0002] # TAMIL FRACTION ONE FORTIETH +11FC5 ; [*1D70.0020.0002] # TAMIL FRACTION ONE THIRTY-SECOND +11FC6 ; [*1D71.0020.0002] # TAMIL FRACTION THREE EIGHTIETHS +11FC7 ; [*1D72.0020.0002] # TAMIL FRACTION THREE SIXTY-FOURTHS +11FC8 ; [*1D73.0020.0002] # TAMIL FRACTION ONE TWENTIETH +11FC9 ; [*1D74.0020.0002] # TAMIL FRACTION ONE SIXTEENTH-1 +11FCA ; [*1D75.0020.0002] # TAMIL FRACTION ONE SIXTEENTH-2 +11FCB ; [*1D76.0020.0002] # TAMIL FRACTION ONE TENTH +11FCC ; [*1D77.0020.0002] # TAMIL FRACTION ONE EIGHTH +11FCD ; [*1D78.0020.0002] # TAMIL FRACTION THREE TWENTIETHS +11FCE ; [*1D79.0020.0002] # TAMIL FRACTION THREE SIXTEENTHS +11FCF ; [*1D7A.0020.0002] # TAMIL FRACTION ONE FIFTH +11FD0 ; [*1D7B.0020.0002] # TAMIL FRACTION ONE QUARTER +11FD1 ; [*1D7C.0020.0002] # TAMIL FRACTION ONE HALF-1 +11FD2 ; [*1D7D.0020.0002] # TAMIL FRACTION ONE HALF-2 +11FD3 ; [*1D7E.0020.0002] # TAMIL FRACTION THREE QUARTERS +11FD4 ; [*1D7F.0020.0002] # TAMIL FRACTION DOWNSCALING FACTOR KIIZH +11FD5 ; [*0550.0020.0002] # TAMIL SIGN NEL +11FD6 ; [*0551.0020.0002] # TAMIL SIGN CEVITU +11FD7 ; [*0552.0020.0002] # TAMIL SIGN AAZHAAKKU +11FD8 ; [*0553.0020.0002] # TAMIL SIGN UZHAKKU +11FD9 ; [*0554.0020.0002] # TAMIL SIGN MUUVUZHAKKU +11FDA ; [*0555.0020.0002] # TAMIL SIGN KURUNI +11FDB ; [*0556.0020.0002] # TAMIL SIGN PATHAKKU +11FDC ; [*0557.0020.0002] # TAMIL SIGN MUKKURUNI +11FE1 ; [*0558.0020.0002] # TAMIL SIGN PAARAM +11FE2 ; [*0559.0020.0002] # TAMIL SIGN KUZHI +11FE3 ; [*055A.0020.0002] # TAMIL SIGN VELI +11FE4 ; [*055B.0020.0002] # TAMIL WET CULTIVATION SIGN +11FE5 ; [*055C.0020.0002] # TAMIL DRY CULTIVATION SIGN +11FE6 ; [*055D.0020.0002] # TAMIL LAND SIGN +11FE7 ; [*055E.0020.0002] # TAMIL SALT PAN SIGN +11FE8 ; [*055F.0020.0002] # TAMIL TRADITIONAL CREDIT SIGN +11FE9 ; [*0560.0020.0002] # TAMIL TRADITIONAL NUMBER SIGN +11FEA ; [*0561.0020.0002] # TAMIL CURRENT SIGN +11FEB ; [*0562.0020.0002] # TAMIL AND ODD SIGN +11FEC ; [*0563.0020.0002] # TAMIL SPENT SIGN +11FED ; [*0564.0020.0002] # TAMIL TOTAL SIGN +11FEE ; [*0565.0020.0002] # TAMIL IN POSSESSION SIGN +11FEF ; [*0566.0020.0002] # TAMIL STARTING FROM SIGN +11FF0 ; [*0567.0020.0002] # TAMIL SIGN MUTHALIYA +11FF1 ; [*0568.0020.0002] # TAMIL SIGN VAKAIYARAA +11FFF ; [*04A6.0020.0002] # TAMIL PUNCTUATION END OF TEXT +12432 ; [*1F2C.0020.0002] # CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH +12433 ; [*1F2D.0020.0002] # CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN +1245A ; [*1F2E.0020.0002] # CUNEIFORM NUMERIC SIGN ONE THIRD DISH +1245B ; [*1F2F.0020.0002] # CUNEIFORM NUMERIC SIGN TWO THIRDS DISH +1245C ; [*1F30.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH +1245D ; [*1F31.0020.0002] # CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A +1245E ; [*1F32.0020.0002] # CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A +1245F ; [*1F33.0020.0002] # CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH +12460 ; [*1F34.0020.0002] # CUNEIFORM NUMERIC SIGN ONE QUARTER ASH +12461 ; [*1F35.0020.0002] # CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH +12462 ; [*1F36.0020.0002] # CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER +12463 ; [*1F37.0020.0002] # CUNEIFORM NUMERIC SIGN ONE QUARTER GUR +12464 ; [*1F38.0020.0002] # CUNEIFORM NUMERIC SIGN ONE HALF GUR +12465 ; [*1F39.0020.0002] # CUNEIFORM NUMERIC SIGN ELAMITE ONE THIRD +12466 ; [*1F3A.0020.0002] # CUNEIFORM NUMERIC SIGN ELAMITE TWO THIRDS +12467 ; [*1F3B.0020.0002] # CUNEIFORM NUMERIC SIGN ELAMITE FORTY +12468 ; [*1F3C.0020.0002] # CUNEIFORM NUMERIC SIGN ELAMITE FIFTY +12470 ; [*0311.0020.0002] # CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER +12471 ; [*0312.0020.0002] # CUNEIFORM PUNCTUATION SIGN VERTICAL COLON +12472 ; [*0313.0020.0002] # CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON +12473 ; [*0314.0020.0002] # CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON +12474 ; [*0315.0020.0002] # CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON +16A6E ; [*02C9.0020.0002] # MRO DANDA +16A6F ; [*02CA.0020.0002] # MRO DOUBLE DANDA +16AF5 ; [*028F.0020.0002] # BASSA VAH FULL STOP +16B37 ; [*04A7.0020.0002] # PAHAWH HMONG SIGN VOS THOM +16B38 ; [*04A8.0020.0002] # PAHAWH HMONG SIGN VOS TSHAB CEEB +16B39 ; [*04A9.0020.0002] # PAHAWH HMONG SIGN CIM CHEEM +16B3A ; [*04AA.0020.0002] # PAHAWH HMONG SIGN VOS THIAB +16B3B ; [*04AB.0020.0002] # PAHAWH HMONG SIGN VOS FEEM +16B3C ; [*111E.0020.0002] # PAHAWH HMONG SIGN XYEEM NTXIV +16B3D ; [*111F.0020.0002] # PAHAWH HMONG SIGN XYEEM RHO +16B3E ; [*1120.0020.0002] # PAHAWH HMONG SIGN XYEEM TOV +16B3F ; [*1121.0020.0002] # PAHAWH HMONG SIGN XYEEM FAIB +16B44 ; [*04AC.0020.0002] # PAHAWH HMONG SIGN XAUS +16B45 ; [*1122.0020.0002] # PAHAWH HMONG SIGN CIM TSOV ROG +16B5B ; [*1E81.0020.0002] # PAHAWH HMONG NUMBER TENS +16B5C ; [*1E82.0020.0002] # PAHAWH HMONG NUMBER HUNDREDS +16B5D ; [*1E83.0020.0002] # PAHAWH HMONG NUMBER TEN THOUSANDS +16B5E ; [*1E84.0020.0002] # PAHAWH HMONG NUMBER MILLIONS +16B5F ; [*1E85.0020.0002] # PAHAWH HMONG NUMBER HUNDRED MILLIONS +16B60 ; [*1E86.0020.0002] # PAHAWH HMONG NUMBER TEN BILLIONS +16B61 ; [*1E87.0020.0002] # PAHAWH HMONG NUMBER TRILLIONS +16E8A ; [*1E88.0020.0002] # MEDEFAIDRIN NUMBER TEN +16E8B ; [*1E89.0020.0002] # MEDEFAIDRIN NUMBER ELEVEN +16E8C ; [*1E8A.0020.0002] # MEDEFAIDRIN NUMBER TWELVE +16E8D ; [*1E8B.0020.0002] # MEDEFAIDRIN NUMBER THIRTEEN +16E8E ; [*1E8C.0020.0002] # MEDEFAIDRIN NUMBER FOURTEEN +16E8F ; [*1E8D.0020.0002] # MEDEFAIDRIN NUMBER FIFTEEN +16E90 ; [*1E8E.0020.0002] # MEDEFAIDRIN NUMBER SIXTEEN +16E91 ; [*1E8F.0020.0002] # MEDEFAIDRIN NUMBER SEVENTEEN +16E92 ; [*1E90.0020.0002] # MEDEFAIDRIN NUMBER EIGHTEEN +16E93 ; [*1E91.0020.0002] # MEDEFAIDRIN NUMBER NINETEEN +16E97 ; [*0235.0020.0002] # MEDEFAIDRIN COMMA +16E98 ; [*0290.0020.0002] # MEDEFAIDRIN FULL STOP +16E99 ; [*04AD.0020.0002] # MEDEFAIDRIN SYMBOL AIVA +16E9A ; [*04AE.0020.0002] # MEDEFAIDRIN EXCLAMATION OH +16FE2 ; [*0239.0020.0002] # OLD CHINESE HOOK MARK +16FE4 ; [.0000.0000.0000] # KHITAN SMALL SCRIPT FILLER +1BC9C ; [*1314.0020.0002] # DUPLOYAN SIGN O WITH CROSS +1BC9F ; [*0291.0020.0002] # DUPLOYAN PUNCTUATION CHINOOK FULL STOP +1D000 ; [*1124.0020.0002] # BYZANTINE MUSICAL SYMBOL PSILI +1D001 ; [*1125.0020.0002] # BYZANTINE MUSICAL SYMBOL DASEIA +1D002 ; [*1126.0020.0002] # BYZANTINE MUSICAL SYMBOL PERISPOMENI +1D003 ; [*1127.0020.0002] # BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON +1D004 ; [*1128.0020.0002] # BYZANTINE MUSICAL SYMBOL OXEIA DIPLI +1D005 ; [*1129.0020.0002] # BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON +1D006 ; [*112A.0020.0002] # BYZANTINE MUSICAL SYMBOL VAREIA DIPLI +1D007 ; [*112B.0020.0002] # BYZANTINE MUSICAL SYMBOL KATHISTI +1D008 ; [*112C.0020.0002] # BYZANTINE MUSICAL SYMBOL SYRMATIKI +1D009 ; [*112D.0020.0002] # BYZANTINE MUSICAL SYMBOL PARAKLITIKI +1D00A ; [*112E.0020.0002] # BYZANTINE MUSICAL SYMBOL YPOKRISIS +1D00B ; [*112F.0020.0002] # BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI +1D00C ; [*1130.0020.0002] # BYZANTINE MUSICAL SYMBOL KREMASTI +1D00D ; [*1131.0020.0002] # BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON +1D00E ; [*1132.0020.0002] # BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON +1D00F ; [*1133.0020.0002] # BYZANTINE MUSICAL SYMBOL TELEIA +1D010 ; [*1134.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMATA +1D011 ; [*1135.0020.0002] # BYZANTINE MUSICAL SYMBOL APOSTROFOS +1D012 ; [*1136.0020.0002] # BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI +1D013 ; [*1137.0020.0002] # BYZANTINE MUSICAL SYMBOL SYNEVMA +1D014 ; [*1138.0020.0002] # BYZANTINE MUSICAL SYMBOL THITA +1D015 ; [*1139.0020.0002] # BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION +1D016 ; [*113A.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGON ARCHAION +1D017 ; [*113B.0020.0002] # BYZANTINE MUSICAL SYMBOL PSILON +1D018 ; [*113C.0020.0002] # BYZANTINE MUSICAL SYMBOL CHAMILON +1D019 ; [*113D.0020.0002] # BYZANTINE MUSICAL SYMBOL VATHY +1D01A ; [*113E.0020.0002] # BYZANTINE MUSICAL SYMBOL ISON ARCHAION +1D01B ; [*113F.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION +1D01C ; [*1140.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION +1D01D ; [*1141.0020.0002] # BYZANTINE MUSICAL SYMBOL SAXIMATA +1D01E ; [*1142.0020.0002] # BYZANTINE MUSICAL SYMBOL PARICHON +1D01F ; [*1143.0020.0002] # BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA +1D020 ; [*1144.0020.0002] # BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION +1D021 ; [*1145.0020.0002] # BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION +1D022 ; [*1146.0020.0002] # BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION +1D023 ; [*1147.0020.0002] # BYZANTINE MUSICAL SYMBOL APOTHEMA +1D024 ; [*1148.0020.0002] # BYZANTINE MUSICAL SYMBOL KLASMA +1D025 ; [*1149.0020.0002] # BYZANTINE MUSICAL SYMBOL REVMA +1D026 ; [*114A.0020.0002] # BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION +1D027 ; [*114B.0020.0002] # BYZANTINE MUSICAL SYMBOL TINAGMA +1D028 ; [*114C.0020.0002] # BYZANTINE MUSICAL SYMBOL ANATRICHISMA +1D029 ; [*114D.0020.0002] # BYZANTINE MUSICAL SYMBOL SEISMA +1D02A ; [*114E.0020.0002] # BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION +1D02B ; [*114F.0020.0002] # BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU +1D02C ; [*1150.0020.0002] # BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION +1D02D ; [*1151.0020.0002] # BYZANTINE MUSICAL SYMBOL THEMA +1D02E ; [*1152.0020.0002] # BYZANTINE MUSICAL SYMBOL LEMOI +1D02F ; [*1153.0020.0002] # BYZANTINE MUSICAL SYMBOL DYO +1D030 ; [*1154.0020.0002] # BYZANTINE MUSICAL SYMBOL TRIA +1D031 ; [*1155.0020.0002] # BYZANTINE MUSICAL SYMBOL TESSERA +1D032 ; [*1156.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMATA +1D033 ; [*1157.0020.0002] # BYZANTINE MUSICAL SYMBOL APESO EXO NEO +1D034 ; [*1158.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION +1D035 ; [*1159.0020.0002] # BYZANTINE MUSICAL SYMBOL IMIFTHORA +1D036 ; [*115A.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION +1D037 ; [*115B.0020.0002] # BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON +1D038 ; [*115C.0020.0002] # BYZANTINE MUSICAL SYMBOL PELASTON +1D039 ; [*115D.0020.0002] # BYZANTINE MUSICAL SYMBOL PSIFISTON +1D03A ; [*115E.0020.0002] # BYZANTINE MUSICAL SYMBOL KONTEVMA +1D03B ; [*115F.0020.0002] # BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION +1D03C ; [*1160.0020.0002] # BYZANTINE MUSICAL SYMBOL RAPISMA +1D03D ; [*1161.0020.0002] # BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION +1D03E ; [*1162.0020.0002] # BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION +1D03F ; [*1163.0020.0002] # BYZANTINE MUSICAL SYMBOL ICHADIN +1D040 ; [*1164.0020.0002] # BYZANTINE MUSICAL SYMBOL NANA +1D041 ; [*1165.0020.0002] # BYZANTINE MUSICAL SYMBOL PETASMA +1D042 ; [*1166.0020.0002] # BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO +1D043 ; [*1167.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKON ALLO +1D044 ; [*1168.0020.0002] # BYZANTINE MUSICAL SYMBOL STRAGGISMATA +1D045 ; [*1169.0020.0002] # BYZANTINE MUSICAL SYMBOL GRONTHISMATA +1D046 ; [*116A.0020.0002] # BYZANTINE MUSICAL SYMBOL ISON NEO +1D047 ; [*116B.0020.0002] # BYZANTINE MUSICAL SYMBOL OLIGON NEO +1D048 ; [*116C.0020.0002] # BYZANTINE MUSICAL SYMBOL OXEIA NEO +1D049 ; [*116D.0020.0002] # BYZANTINE MUSICAL SYMBOL PETASTI +1D04A ; [*116E.0020.0002] # BYZANTINE MUSICAL SYMBOL KOUFISMA +1D04B ; [*116F.0020.0002] # BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA +1D04C ; [*1170.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA +1D04D ; [*1171.0020.0002] # BYZANTINE MUSICAL SYMBOL PELASTON NEO +1D04E ; [*1172.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO +1D04F ; [*1173.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO +1D050 ; [*1174.0020.0002] # BYZANTINE MUSICAL SYMBOL YPSILI +1D051 ; [*1175.0020.0002] # BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO +1D052 ; [*1176.0020.0002] # BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO +1D053 ; [*1177.0020.0002] # BYZANTINE MUSICAL SYMBOL YPORROI +1D054 ; [*1178.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON +1D055 ; [*1179.0020.0002] # BYZANTINE MUSICAL SYMBOL ELAFRON +1D056 ; [*117A.0020.0002] # BYZANTINE MUSICAL SYMBOL CHAMILI +1D057 ; [*117B.0020.0002] # BYZANTINE MUSICAL SYMBOL MIKRON ISON +1D058 ; [*117C.0020.0002] # BYZANTINE MUSICAL SYMBOL VAREIA NEO +1D059 ; [*117D.0020.0002] # BYZANTINE MUSICAL SYMBOL PIASMA NEO +1D05A ; [*117E.0020.0002] # BYZANTINE MUSICAL SYMBOL PSIFISTON NEO +1D05B ; [*117F.0020.0002] # BYZANTINE MUSICAL SYMBOL OMALON +1D05C ; [*1180.0020.0002] # BYZANTINE MUSICAL SYMBOL ANTIKENOMA +1D05D ; [*1181.0020.0002] # BYZANTINE MUSICAL SYMBOL LYGISMA +1D05E ; [*1182.0020.0002] # BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO +1D05F ; [*1183.0020.0002] # BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO +1D060 ; [*1184.0020.0002] # BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA +1D061 ; [*1185.0020.0002] # BYZANTINE MUSICAL SYMBOL KYLISMA +1D062 ; [*1186.0020.0002] # BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA +1D063 ; [*1187.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKON NEO +1D064 ; [*1188.0020.0002] # BYZANTINE MUSICAL SYMBOL EKSTREPTON +1D065 ; [*1189.0020.0002] # BYZANTINE MUSICAL SYMBOL SYNAGMA NEO +1D066 ; [*118A.0020.0002] # BYZANTINE MUSICAL SYMBOL SYRMA +1D067 ; [*118B.0020.0002] # BYZANTINE MUSICAL SYMBOL CHOREVMA NEO +1D068 ; [*118C.0020.0002] # BYZANTINE MUSICAL SYMBOL EPEGERMA +1D069 ; [*118D.0020.0002] # BYZANTINE MUSICAL SYMBOL SEISMA NEO +1D06A ; [*118E.0020.0002] # BYZANTINE MUSICAL SYMBOL XIRON KLASMA +1D06B ; [*118F.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON +1D06C ; [*1190.0020.0002] # BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA +1D06D ; [*1191.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA +1D06E ; [*1192.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA +1D06F ; [*1193.0020.0002] # BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA +1D070 ; [*1194.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA +1D071 ; [*1195.0020.0002] # BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA +1D072 ; [*1196.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON +1D073 ; [*1197.0020.0002] # BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON +1D074 ; [*1198.0020.0002] # BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON +1D075 ; [*1199.0020.0002] # BYZANTINE MUSICAL SYMBOL OYRANISMA NEO +1D076 ; [*119A.0020.0002] # BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO +1D077 ; [*119B.0020.0002] # BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO +1D078 ; [*119C.0020.0002] # BYZANTINE MUSICAL SYMBOL THEMA APLOUN +1D079 ; [*119D.0020.0002] # BYZANTINE MUSICAL SYMBOL THES KAI APOTHES +1D07A ; [*119E.0020.0002] # BYZANTINE MUSICAL SYMBOL KATAVASMA +1D07B ; [*119F.0020.0002] # BYZANTINE MUSICAL SYMBOL ENDOFONON +1D07C ; [*11A0.0020.0002] # BYZANTINE MUSICAL SYMBOL YFEN KATO +1D07D ; [*11A1.0020.0002] # BYZANTINE MUSICAL SYMBOL YFEN ANO +1D07E ; [*11A2.0020.0002] # BYZANTINE MUSICAL SYMBOL STAVROS +1D07F ; [*11A3.0020.0002] # BYZANTINE MUSICAL SYMBOL KLASMA ANO +1D080 ; [*11A4.0020.0002] # BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION +1D081 ; [*11A5.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION +1D082 ; [*11A6.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMA ALLO +1D083 ; [*11A7.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMA NEO +1D084 ; [*11A8.0020.0002] # BYZANTINE MUSICAL SYMBOL APODERMA NEO +1D085 ; [*11A9.0020.0002] # BYZANTINE MUSICAL SYMBOL APLI +1D086 ; [*11AA.0020.0002] # BYZANTINE MUSICAL SYMBOL DIPLI +1D087 ; [*11AB.0020.0002] # BYZANTINE MUSICAL SYMBOL TRIPLI +1D088 ; [*11AC.0020.0002] # BYZANTINE MUSICAL SYMBOL TETRAPLI +1D089 ; [*11AD.0020.0002] # BYZANTINE MUSICAL SYMBOL KORONIS +1D08A ; [*11AE.0020.0002] # BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU +1D08B ; [*11AF.0020.0002] # BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON +1D08C ; [*11B0.0020.0002] # BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON +1D08D ; [*11B1.0020.0002] # BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON +1D08E ; [*11B2.0020.0002] # BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU +1D08F ; [*11B3.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGON NEO ANO +1D090 ; [*11B4.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA +1D091 ; [*11B5.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA +1D092 ; [*11B6.0020.0002] # BYZANTINE MUSICAL SYMBOL DIGORGON +1D093 ; [*11B7.0020.0002] # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO +1D094 ; [*11B8.0020.0002] # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO +1D095 ; [*11B9.0020.0002] # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA +1D096 ; [*11BA.0020.0002] # BYZANTINE MUSICAL SYMBOL TRIGORGON +1D097 ; [*11BB.0020.0002] # BYZANTINE MUSICAL SYMBOL ARGON +1D098 ; [*11BC.0020.0002] # BYZANTINE MUSICAL SYMBOL IMIDIARGON +1D099 ; [*11BD.0020.0002] # BYZANTINE MUSICAL SYMBOL DIARGON +1D09A ; [*11BE.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI +1D09B ; [*11BF.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI +1D09C ; [*11C0.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI ARGI +1D09D ; [*11C1.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI METRIA +1D09E ; [*11C2.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI MESI +1D09F ; [*11C3.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI GORGI +1D0A0 ; [*11C4.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI +1D0A1 ; [*11C5.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI +1D0A2 ; [*11C6.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS +1D0A3 ; [*11C7.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS +1D0A4 ; [*11C8.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS +1D0A5 ; [*11C9.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS +1D0A6 ; [*11CA.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS +1D0A7 ; [*11CB.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS +1D0A8 ; [*11CC.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS +1D0A9 ; [*11CD.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS +1D0AA ; [*11CE.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS +1D0AB ; [*11CF.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS +1D0AC ; [*11D0.0020.0002] # BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS +1D0AD ; [*11D1.0020.0002] # BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS +1D0AE ; [*11D2.0020.0002] # BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS +1D0AF ; [*11D3.0020.0002] # BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS +1D0B0 ; [*11D4.0020.0002] # BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS +1D0B1 ; [*11D5.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS +1D0B2 ; [*11D6.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS +1D0B3 ; [*11D7.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS +1D0B4 ; [*11D8.0020.0002] # BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN +1D0B5 ; [*11D9.0020.0002] # BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN +1D0B6 ; [*11DA.0020.0002] # BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU +1D0B7 ; [*11DB.0020.0002] # BYZANTINE MUSICAL SYMBOL IMIFONON +1D0B8 ; [*11DC.0020.0002] # BYZANTINE MUSICAL SYMBOL IMIFTHORON +1D0B9 ; [*11DD.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU +1D0BA ; [*11DE.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA +1D0BB ; [*11DF.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA +1D0BC ; [*11E0.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS +1D0BD ; [*11E1.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI +1D0BE ; [*11E2.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI +1D0BF ; [*11E3.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE +1D0C0 ; [*11E4.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO +1D0C1 ; [*11E5.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO +1D0C2 ; [*11E6.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO +1D0C3 ; [*11E7.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS +1D0C4 ; [*11E8.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS +1D0C5 ; [*11E9.0020.0002] # BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS +1D0C6 ; [*11EA.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI +1D0C7 ; [*11EB.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA NENANO +1D0C8 ; [*11EC.0020.0002] # BYZANTINE MUSICAL SYMBOL CHROA ZYGOS +1D0C9 ; [*11ED.0020.0002] # BYZANTINE MUSICAL SYMBOL CHROA KLITON +1D0CA ; [*11EE.0020.0002] # BYZANTINE MUSICAL SYMBOL CHROA SPATHI +1D0CB ; [*11EF.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION +1D0CC ; [*11F0.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA +1D0CD ; [*11F1.0020.0002] # BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION +1D0CE ; [*11F2.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION +1D0CF ; [*11F3.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION +1D0D0 ; [*11F4.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA +1D0D1 ; [*11F5.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA +1D0D2 ; [*11F6.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA +1D0D3 ; [*11F7.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA +1D0D4 ; [*11F8.0020.0002] # BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA +1D0D5 ; [*11F9.0020.0002] # BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA +1D0D6 ; [*11FA.0020.0002] # BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA +1D0D7 ; [*11FB.0020.0002] # BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA +1D0D8 ; [*11FC.0020.0002] # BYZANTINE MUSICAL SYMBOL GENIKI DIESIS +1D0D9 ; [*11FD.0020.0002] # BYZANTINE MUSICAL SYMBOL GENIKI YFESIS +1D0DA ; [*11FE.0020.0002] # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI +1D0DB ; [*11FF.0020.0002] # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI +1D0DC ; [*1200.0020.0002] # BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI +1D0DD ; [*1201.0020.0002] # BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS +1D0DE ; [*1202.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS +1D0DF ; [*1203.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU +1D0E0 ; [*1204.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU +1D0E1 ; [*1205.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU +1D0E2 ; [*1206.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS +1D0E3 ; [*1207.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU +1D0E4 ; [*1208.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU +1D0E5 ; [*1209.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU +1D0E6 ; [*120A.0020.0002] # BYZANTINE MUSICAL SYMBOL DIGRAMMA GG +1D0E7 ; [*120B.0020.0002] # BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU +1D0E8 ; [*120C.0020.0002] # BYZANTINE MUSICAL SYMBOL STIGMA +1D0E9 ; [*120D.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO PA +1D0EA ; [*120E.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO VOU +1D0EB ; [*120F.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO GA +1D0EC ; [*1210.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO DI +1D0ED ; [*1211.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO KE +1D0EE ; [*1212.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO ZO +1D0EF ; [*1213.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO NI +1D0F0 ; [*1214.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO +1D0F1 ; [*1215.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO +1D0F2 ; [*1216.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO +1D0F3 ; [*1217.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO +1D0F4 ; [*1218.0020.0002] # BYZANTINE MUSICAL SYMBOL KLASMA KATO +1D0F5 ; [*1219.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGON NEO KATO +1D100 ; [*121A.0020.0002] # MUSICAL SYMBOL SINGLE BARLINE +1D101 ; [*121B.0020.0002] # MUSICAL SYMBOL DOUBLE BARLINE +1D102 ; [*121C.0020.0002] # MUSICAL SYMBOL FINAL BARLINE +1D103 ; [*121D.0020.0002] # MUSICAL SYMBOL REVERSE FINAL BARLINE +1D104 ; [*121E.0020.0002] # MUSICAL SYMBOL DASHED BARLINE +1D105 ; [*121F.0020.0002] # MUSICAL SYMBOL SHORT BARLINE +1D106 ; [*1220.0020.0002] # MUSICAL SYMBOL LEFT REPEAT SIGN +1D107 ; [*1221.0020.0002] # MUSICAL SYMBOL RIGHT REPEAT SIGN +1D108 ; [*1222.0020.0002] # MUSICAL SYMBOL REPEAT DOTS +1D109 ; [*1223.0020.0002] # MUSICAL SYMBOL DAL SEGNO +1D10A ; [*1224.0020.0002] # MUSICAL SYMBOL DA CAPO +1D10B ; [*1225.0020.0002] # MUSICAL SYMBOL SEGNO +1D10C ; [*1226.0020.0002] # MUSICAL SYMBOL CODA +1D10D ; [*1227.0020.0002] # MUSICAL SYMBOL REPEATED FIGURE-1 +1D10E ; [*1228.0020.0002] # MUSICAL SYMBOL REPEATED FIGURE-2 +1D10F ; [*1229.0020.0002] # MUSICAL SYMBOL REPEATED FIGURE-3 +1D110 ; [*122A.0020.0002] # MUSICAL SYMBOL FERMATA +1D111 ; [*122B.0020.0002] # MUSICAL SYMBOL FERMATA BELOW +1D112 ; [*122C.0020.0002] # MUSICAL SYMBOL BREATH MARK +1D113 ; [*122D.0020.0002] # MUSICAL SYMBOL CAESURA +1D114 ; [*122E.0020.0002] # MUSICAL SYMBOL BRACE +1D115 ; [*122F.0020.0002] # MUSICAL SYMBOL BRACKET +1D116 ; [*1230.0020.0002] # MUSICAL SYMBOL ONE-LINE STAFF +1D117 ; [*1231.0020.0002] # MUSICAL SYMBOL TWO-LINE STAFF +1D118 ; [*1232.0020.0002] # MUSICAL SYMBOL THREE-LINE STAFF +1D119 ; [*1233.0020.0002] # MUSICAL SYMBOL FOUR-LINE STAFF +1D11A ; [*1234.0020.0002] # MUSICAL SYMBOL FIVE-LINE STAFF +1D11B ; [*1235.0020.0002] # MUSICAL SYMBOL SIX-LINE STAFF +1D11C ; [*1236.0020.0002] # MUSICAL SYMBOL SIX-STRING FRETBOARD +1D11D ; [*1237.0020.0002] # MUSICAL SYMBOL FOUR-STRING FRETBOARD +1D11E ; [*1238.0020.0002] # MUSICAL SYMBOL G CLEF +1D11F ; [*1239.0020.0002] # MUSICAL SYMBOL G CLEF OTTAVA ALTA +1D120 ; [*123A.0020.0002] # MUSICAL SYMBOL G CLEF OTTAVA BASSA +1D121 ; [*123B.0020.0002] # MUSICAL SYMBOL C CLEF +1D122 ; [*123C.0020.0002] # MUSICAL SYMBOL F CLEF +1D123 ; [*123D.0020.0002] # MUSICAL SYMBOL F CLEF OTTAVA ALTA +1D124 ; [*123E.0020.0002] # MUSICAL SYMBOL F CLEF OTTAVA BASSA +1D125 ; [*123F.0020.0002] # MUSICAL SYMBOL DRUM CLEF-1 +1D126 ; [*1240.0020.0002] # MUSICAL SYMBOL DRUM CLEF-2 +1D129 ; [*1254.0020.0002] # MUSICAL SYMBOL MULTIPLE MEASURE REST +1D12A ; [*1244.0020.0002] # MUSICAL SYMBOL DOUBLE SHARP +1D12B ; [*1245.0020.0002] # MUSICAL SYMBOL DOUBLE FLAT +1D12C ; [*1246.0020.0002] # MUSICAL SYMBOL FLAT UP +1D12D ; [*1247.0020.0002] # MUSICAL SYMBOL FLAT DOWN +1D12E ; [*1248.0020.0002] # MUSICAL SYMBOL NATURAL UP +1D12F ; [*1249.0020.0002] # MUSICAL SYMBOL NATURAL DOWN +1D130 ; [*124A.0020.0002] # MUSICAL SYMBOL SHARP UP +1D131 ; [*124B.0020.0002] # MUSICAL SYMBOL SHARP DOWN +1D132 ; [*124C.0020.0002] # MUSICAL SYMBOL QUARTER TONE SHARP +1D133 ; [*124D.0020.0002] # MUSICAL SYMBOL QUARTER TONE FLAT +1D134 ; [*124E.0020.0002] # MUSICAL SYMBOL COMMON TIME +1D135 ; [*124F.0020.0002] # MUSICAL SYMBOL CUT TIME +1D136 ; [*1250.0020.0002] # MUSICAL SYMBOL OTTAVA ALTA +1D137 ; [*1251.0020.0002] # MUSICAL SYMBOL OTTAVA BASSA +1D138 ; [*1252.0020.0002] # MUSICAL SYMBOL QUINDICESIMA ALTA +1D139 ; [*1253.0020.0002] # MUSICAL SYMBOL QUINDICESIMA BASSA +1D13A ; [*1255.0020.0002] # MUSICAL SYMBOL MULTI REST +1D13B ; [*1256.0020.0002] # MUSICAL SYMBOL WHOLE REST +1D13C ; [*1257.0020.0002] # MUSICAL SYMBOL HALF REST +1D13D ; [*1258.0020.0002] # MUSICAL SYMBOL QUARTER REST +1D13E ; [*1259.0020.0002] # MUSICAL SYMBOL EIGHTH REST +1D13F ; [*125A.0020.0002] # MUSICAL SYMBOL SIXTEENTH REST +1D140 ; [*125B.0020.0002] # MUSICAL SYMBOL THIRTY-SECOND REST +1D141 ; [*125C.0020.0002] # MUSICAL SYMBOL SIXTY-FOURTH REST +1D142 ; [*125D.0020.0002] # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST +1D143 ; [*125E.0020.0002] # MUSICAL SYMBOL X NOTEHEAD +1D144 ; [*125F.0020.0002] # MUSICAL SYMBOL PLUS NOTEHEAD +1D145 ; [*1260.0020.0002] # MUSICAL SYMBOL CIRCLE X NOTEHEAD +1D146 ; [*1261.0020.0002] # MUSICAL SYMBOL SQUARE NOTEHEAD WHITE +1D147 ; [*1262.0020.0002] # MUSICAL SYMBOL SQUARE NOTEHEAD BLACK +1D148 ; [*1263.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE +1D149 ; [*1264.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK +1D14A ; [*1265.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE +1D14B ; [*1266.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK +1D14C ; [*1267.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE +1D14D ; [*1268.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK +1D14E ; [*1269.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE +1D14F ; [*126A.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK +1D150 ; [*126B.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE +1D151 ; [*126C.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK +1D152 ; [*126D.0020.0002] # MUSICAL SYMBOL MOON NOTEHEAD WHITE +1D153 ; [*126E.0020.0002] # MUSICAL SYMBOL MOON NOTEHEAD BLACK +1D154 ; [*126F.0020.0002] # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE +1D155 ; [*1270.0020.0002] # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK +1D156 ; [*1271.0020.0002] # MUSICAL SYMBOL PARENTHESIS NOTEHEAD +1D157 ; [*1272.0020.0002] # MUSICAL SYMBOL VOID NOTEHEAD +1D158 ; [*1273.0020.0002] # MUSICAL SYMBOL NOTEHEAD BLACK +1D159 ; [*1274.0020.0002] # MUSICAL SYMBOL NULL NOTEHEAD +1D15A ; [*1275.0020.0002] # MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE +1D15B ; [*1276.0020.0002] # MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK +1D15C ; [*1277.0020.0002] # MUSICAL SYMBOL BREVE +1D15D ; [*1278.0020.0002] # MUSICAL SYMBOL WHOLE NOTE +1D15E ; [*1272.0020.0002][.0000.0000.0000] # MUSICAL SYMBOL HALF NOTE +1D15F ; [*1273.0020.0002][.0000.0000.0000] # MUSICAL SYMBOL QUARTER NOTE +1D160 ; [*1273.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL EIGHTH NOTE +1D161 ; [*1273.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL SIXTEENTH NOTE +1D162 ; [*1273.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL THIRTY-SECOND NOTE +1D163 ; [*1273.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL SIXTY-FOURTH NOTE +1D164 ; [*1273.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE 1D165 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING STEM 1D166 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING SPRECHGESANG STEM 1D167 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING TREMOLO-1 1D168 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING TREMOLO-2 1D169 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING TREMOLO-3 -1D16A ; [*1143.0020.0002] # MUSICAL SYMBOL FINGERED TREMOLO-1 -1D16B ; [*1144.0020.0002] # MUSICAL SYMBOL FINGERED TREMOLO-2 -1D16C ; [*1145.0020.0002] # MUSICAL SYMBOL FINGERED TREMOLO-3 +1D16A ; [*1279.0020.0002] # MUSICAL SYMBOL FINGERED TREMOLO-1 +1D16B ; [*127A.0020.0002] # MUSICAL SYMBOL FINGERED TREMOLO-2 +1D16C ; [*127B.0020.0002] # MUSICAL SYMBOL FINGERED TREMOLO-3 1D16D ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING AUGMENTATION DOT 1D16E ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING FLAG-1 1D16F ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING FLAG-2 @@ -5135,8 +5299,8 @@ 1D180 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING MARCATO-STACCATO 1D181 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING ACCENT-STACCATO 1D182 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING LOURE -1D183 ; [*1146.0020.0002] # MUSICAL SYMBOL ARPEGGIATO UP -1D184 ; [*1147.0020.0002] # MUSICAL SYMBOL ARPEGGIATO DOWN +1D183 ; [*127C.0020.0002] # MUSICAL SYMBOL ARPEGGIATO UP +1D184 ; [*127D.0020.0002] # MUSICAL SYMBOL ARPEGGIATO DOWN 1D185 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING DOIT 1D186 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING RIP 1D187 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING FLIP @@ -5144,787 +5308,797 @@ 1D189 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING BEND 1D18A ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING DOUBLE TONGUE 1D18B ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING TRIPLE TONGUE -1D18C ; [*1148.0020.0002] # MUSICAL SYMBOL RINFORZANDO -1D18D ; [*1149.0020.0002] # MUSICAL SYMBOL SUBITO -1D18E ; [*114A.0020.0002] # MUSICAL SYMBOL Z -1D18F ; [*114B.0020.0002] # MUSICAL SYMBOL PIANO -1D190 ; [*114C.0020.0002] # MUSICAL SYMBOL MEZZO -1D191 ; [*114D.0020.0002] # MUSICAL SYMBOL FORTE -1D192 ; [*114E.0020.0002] # MUSICAL SYMBOL CRESCENDO -1D193 ; [*114F.0020.0002] # MUSICAL SYMBOL DECRESCENDO -1D194 ; [*1150.0020.0002] # MUSICAL SYMBOL GRACE NOTE SLASH -1D195 ; [*1151.0020.0002] # MUSICAL SYMBOL GRACE NOTE NO SLASH -1D196 ; [*1152.0020.0002] # MUSICAL SYMBOL TR -1D197 ; [*1153.0020.0002] # MUSICAL SYMBOL TURN -1D198 ; [*1154.0020.0002] # MUSICAL SYMBOL INVERTED TURN -1D199 ; [*1155.0020.0002] # MUSICAL SYMBOL TURN SLASH -1D19A ; [*1156.0020.0002] # MUSICAL SYMBOL TURN UP -1D19B ; [*1157.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-1 -1D19C ; [*1158.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-2 -1D19D ; [*1159.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-3 -1D19E ; [*115A.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-4 -1D19F ; [*115B.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-5 -1D1A0 ; [*115C.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-6 -1D1A1 ; [*115D.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-7 -1D1A2 ; [*115E.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-8 -1D1A3 ; [*115F.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-9 -1D1A4 ; [*1160.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-10 -1D1A5 ; [*1161.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-11 -1D1A6 ; [*1162.0020.0002] # MUSICAL SYMBOL HAUPTSTIMME -1D1A7 ; [*1163.0020.0002] # MUSICAL SYMBOL NEBENSTIMME -1D1A8 ; [*1164.0020.0002] # MUSICAL SYMBOL END OF STIMME -1D1A9 ; [*1165.0020.0002] # MUSICAL SYMBOL DEGREE SLASH +1D18C ; [*127E.0020.0002] # MUSICAL SYMBOL RINFORZANDO +1D18D ; [*127F.0020.0002] # MUSICAL SYMBOL SUBITO +1D18E ; [*1280.0020.0002] # MUSICAL SYMBOL Z +1D18F ; [*1281.0020.0002] # MUSICAL SYMBOL PIANO +1D190 ; [*1282.0020.0002] # MUSICAL SYMBOL MEZZO +1D191 ; [*1283.0020.0002] # MUSICAL SYMBOL FORTE +1D192 ; [*1284.0020.0002] # MUSICAL SYMBOL CRESCENDO +1D193 ; [*1285.0020.0002] # MUSICAL SYMBOL DECRESCENDO +1D194 ; [*1286.0020.0002] # MUSICAL SYMBOL GRACE NOTE SLASH +1D195 ; [*1287.0020.0002] # MUSICAL SYMBOL GRACE NOTE NO SLASH +1D196 ; [*1288.0020.0002] # MUSICAL SYMBOL TR +1D197 ; [*1289.0020.0002] # MUSICAL SYMBOL TURN +1D198 ; [*128A.0020.0002] # MUSICAL SYMBOL INVERTED TURN +1D199 ; [*128B.0020.0002] # MUSICAL SYMBOL TURN SLASH +1D19A ; [*128C.0020.0002] # MUSICAL SYMBOL TURN UP +1D19B ; [*128D.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-1 +1D19C ; [*128E.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-2 +1D19D ; [*128F.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-3 +1D19E ; [*1290.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-4 +1D19F ; [*1291.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-5 +1D1A0 ; [*1292.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-6 +1D1A1 ; [*1293.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-7 +1D1A2 ; [*1294.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-8 +1D1A3 ; [*1295.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-9 +1D1A4 ; [*1296.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-10 +1D1A5 ; [*1297.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-11 +1D1A6 ; [*1298.0020.0002] # MUSICAL SYMBOL HAUPTSTIMME +1D1A7 ; [*1299.0020.0002] # MUSICAL SYMBOL NEBENSTIMME +1D1A8 ; [*129A.0020.0002] # MUSICAL SYMBOL END OF STIMME +1D1A9 ; [*129B.0020.0002] # MUSICAL SYMBOL DEGREE SLASH 1D1AA ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING DOWN BOW 1D1AB ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING UP BOW 1D1AC ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING HARMONIC 1D1AD ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING SNAP PIZZICATO -1D1AE ; [*1166.0020.0002] # MUSICAL SYMBOL PEDAL MARK -1D1AF ; [*1167.0020.0002] # MUSICAL SYMBOL PEDAL UP MARK -1D1B0 ; [*1168.0020.0002] # MUSICAL SYMBOL HALF PEDAL MARK -1D1B1 ; [*1169.0020.0002] # MUSICAL SYMBOL GLISSANDO UP -1D1B2 ; [*116A.0020.0002] # MUSICAL SYMBOL GLISSANDO DOWN -1D1B3 ; [*116B.0020.0002] # MUSICAL SYMBOL WITH FINGERNAILS -1D1B4 ; [*116C.0020.0002] # MUSICAL SYMBOL DAMP -1D1B5 ; [*116D.0020.0002] # MUSICAL SYMBOL DAMP ALL -1D1B6 ; [*116E.0020.0002] # MUSICAL SYMBOL MAXIMA -1D1B7 ; [*116F.0020.0002] # MUSICAL SYMBOL LONGA -1D1B8 ; [*1170.0020.0002] # MUSICAL SYMBOL BREVIS -1D1B9 ; [*1171.0020.0002] # MUSICAL SYMBOL SEMIBREVIS WHITE -1D1BA ; [*1172.0020.0002] # MUSICAL SYMBOL SEMIBREVIS BLACK -1D1BB ; [*1171.0020.0002][.0000.0000.0000] # MUSICAL SYMBOL MINIMA -1D1BC ; [*1172.0020.0002][.0000.0000.0000] # MUSICAL SYMBOL MINIMA BLACK -1D1BD ; [*1171.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL SEMIMINIMA WHITE -1D1BE ; [*1172.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL SEMIMINIMA BLACK -1D1BF ; [*1171.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL FUSA WHITE -1D1C0 ; [*1172.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL FUSA BLACK -1D1C1 ; [*1173.0020.0002] # MUSICAL SYMBOL LONGA PERFECTA REST -1D1C2 ; [*1174.0020.0002] # MUSICAL SYMBOL LONGA IMPERFECTA REST -1D1C3 ; [*1175.0020.0002] # MUSICAL SYMBOL BREVIS REST -1D1C4 ; [*1176.0020.0002] # MUSICAL SYMBOL SEMIBREVIS REST -1D1C5 ; [*1177.0020.0002] # MUSICAL SYMBOL MINIMA REST -1D1C6 ; [*1178.0020.0002] # MUSICAL SYMBOL SEMIMINIMA REST -1D1C7 ; [*1179.0020.0002] # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA -1D1C8 ; [*117A.0020.0002] # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA -1D1C9 ; [*117B.0020.0002] # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1 -1D1CA ; [*117C.0020.0002] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA -1D1CB ; [*117D.0020.0002] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA -1D1CC ; [*117E.0020.0002] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1 -1D1CD ; [*117F.0020.0002] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2 -1D1CE ; [*1180.0020.0002] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3 -1D1CF ; [*1181.0020.0002] # MUSICAL SYMBOL CROIX -1D1D0 ; [*1182.0020.0002] # MUSICAL SYMBOL GREGORIAN C CLEF -1D1D1 ; [*1183.0020.0002] # MUSICAL SYMBOL GREGORIAN F CLEF -1D1D2 ; [*1184.0020.0002] # MUSICAL SYMBOL SQUARE B -1D1D3 ; [*1185.0020.0002] # MUSICAL SYMBOL VIRGA -1D1D4 ; [*1186.0020.0002] # MUSICAL SYMBOL PODATUS -1D1D5 ; [*1187.0020.0002] # MUSICAL SYMBOL CLIVIS -1D1D6 ; [*1188.0020.0002] # MUSICAL SYMBOL SCANDICUS -1D1D7 ; [*1189.0020.0002] # MUSICAL SYMBOL CLIMACUS -1D1D8 ; [*118A.0020.0002] # MUSICAL SYMBOL TORCULUS -1D1D9 ; [*118B.0020.0002] # MUSICAL SYMBOL PORRECTUS -1D1DA ; [*118C.0020.0002] # MUSICAL SYMBOL PORRECTUS FLEXUS -1D1DB ; [*118D.0020.0002] # MUSICAL SYMBOL SCANDICUS FLEXUS -1D1DC ; [*118E.0020.0002] # MUSICAL SYMBOL TORCULUS RESUPINUS -1D1DD ; [*118F.0020.0002] # MUSICAL SYMBOL PES SUBPUNCTIS -1D1DE ; [*1190.0020.0002] # MUSICAL SYMBOL KIEVAN C CLEF -1D1DF ; [*1191.0020.0002] # MUSICAL SYMBOL KIEVAN END OF PIECE -1D1E0 ; [*1192.0020.0002] # MUSICAL SYMBOL KIEVAN FINAL NOTE -1D1E1 ; [*1193.0020.0002] # MUSICAL SYMBOL KIEVAN RECITATIVE MARK -1D1E2 ; [*1194.0020.0002] # MUSICAL SYMBOL KIEVAN WHOLE NOTE -1D1E3 ; [*1195.0020.0002] # MUSICAL SYMBOL KIEVAN HALF NOTE -1D1E4 ; [*1196.0020.0002] # MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM DOWN -1D1E5 ; [*1197.0020.0002] # MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM UP -1D1E6 ; [*1198.0020.0002] # MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM DOWN -1D1E7 ; [*1199.0020.0002] # MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM UP -1D1E8 ; [*119A.0020.0002] # MUSICAL SYMBOL KIEVAN FLAT SIGN -1D200 ; [*119B.0020.0002] # GREEK VOCAL NOTATION SYMBOL-1 -1D201 ; [*119C.0020.0002] # GREEK VOCAL NOTATION SYMBOL-2 -1D202 ; [*119D.0020.0002] # GREEK VOCAL NOTATION SYMBOL-3 -1D203 ; [*119E.0020.0002] # GREEK VOCAL NOTATION SYMBOL-4 -1D204 ; [*119F.0020.0002] # GREEK VOCAL NOTATION SYMBOL-5 -1D205 ; [*11A0.0020.0002] # GREEK VOCAL NOTATION SYMBOL-6 -1D206 ; [*11A1.0020.0002] # GREEK VOCAL NOTATION SYMBOL-7 -1D207 ; [*11A2.0020.0002] # GREEK VOCAL NOTATION SYMBOL-8 -1D208 ; [*11A3.0020.0002] # GREEK VOCAL NOTATION SYMBOL-9 -1D209 ; [*11A4.0020.0002] # GREEK VOCAL NOTATION SYMBOL-10 -1D20A ; [*11A5.0020.0002] # GREEK VOCAL NOTATION SYMBOL-11 -1D20B ; [*11A6.0020.0002] # GREEK VOCAL NOTATION SYMBOL-12 -1D20C ; [*11A7.0020.0002] # GREEK VOCAL NOTATION SYMBOL-13 -1D20D ; [*11A8.0020.0002] # GREEK VOCAL NOTATION SYMBOL-14 -1D20E ; [*11A9.0020.0002] # GREEK VOCAL NOTATION SYMBOL-15 -1D20F ; [*11AA.0020.0002] # GREEK VOCAL NOTATION SYMBOL-16 -1D210 ; [*11AB.0020.0002] # GREEK VOCAL NOTATION SYMBOL-17 -1D211 ; [*11AC.0020.0002] # GREEK VOCAL NOTATION SYMBOL-18 -1D212 ; [*11AD.0020.0002] # GREEK VOCAL NOTATION SYMBOL-19 -1D213 ; [*11AE.0020.0002] # GREEK VOCAL NOTATION SYMBOL-20 -1D214 ; [*11AF.0020.0002] # GREEK VOCAL NOTATION SYMBOL-21 -1D215 ; [*11B0.0020.0002] # GREEK VOCAL NOTATION SYMBOL-22 -1D216 ; [*11B1.0020.0002] # GREEK VOCAL NOTATION SYMBOL-23 -1D217 ; [*11B2.0020.0002] # GREEK VOCAL NOTATION SYMBOL-24 -1D218 ; [*11B3.0020.0002] # GREEK VOCAL NOTATION SYMBOL-50 -1D219 ; [*11B4.0020.0002] # GREEK VOCAL NOTATION SYMBOL-51 -1D21A ; [*11B5.0020.0002] # GREEK VOCAL NOTATION SYMBOL-52 -1D21B ; [*11B6.0020.0002] # GREEK VOCAL NOTATION SYMBOL-53 -1D21C ; [*11B7.0020.0002] # GREEK VOCAL NOTATION SYMBOL-54 -1D21D ; [*11B8.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-1 -1D21E ; [*11B9.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-2 -1D21F ; [*11BA.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-4 -1D220 ; [*11BB.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-5 -1D221 ; [*11BC.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-7 -1D222 ; [*11BD.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-8 -1D223 ; [*11BE.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-11 -1D224 ; [*11BF.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-12 -1D225 ; [*11C0.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-13 -1D226 ; [*11C1.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-14 -1D227 ; [*11C2.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-17 -1D228 ; [*11C3.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-18 -1D229 ; [*11C4.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-19 -1D22A ; [*11C5.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-23 -1D22B ; [*11C6.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-24 -1D22C ; [*11C7.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-25 -1D22D ; [*11C8.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-26 -1D22E ; [*11C9.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-27 -1D22F ; [*11CA.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-29 -1D230 ; [*11CB.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-30 -1D231 ; [*11CC.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-32 -1D232 ; [*11CD.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-36 -1D233 ; [*11CE.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-37 -1D234 ; [*11CF.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-38 -1D235 ; [*11D0.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-39 -1D236 ; [*11D1.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-40 -1D237 ; [*11D2.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-42 -1D238 ; [*11D3.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-43 -1D239 ; [*11D4.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-45 -1D23A ; [*11D5.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-47 -1D23B ; [*11D6.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-48 -1D23C ; [*11D7.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-49 -1D23D ; [*11D8.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-50 -1D23E ; [*11D9.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-51 -1D23F ; [*11DA.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-52 -1D240 ; [*11DB.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-53 -1D241 ; [*11DC.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-54 +1D1AE ; [*129C.0020.0002] # MUSICAL SYMBOL PEDAL MARK +1D1AF ; [*129D.0020.0002] # MUSICAL SYMBOL PEDAL UP MARK +1D1B0 ; [*129E.0020.0002] # MUSICAL SYMBOL HALF PEDAL MARK +1D1B1 ; [*129F.0020.0002] # MUSICAL SYMBOL GLISSANDO UP +1D1B2 ; [*12A0.0020.0002] # MUSICAL SYMBOL GLISSANDO DOWN +1D1B3 ; [*12A1.0020.0002] # MUSICAL SYMBOL WITH FINGERNAILS +1D1B4 ; [*12A2.0020.0002] # MUSICAL SYMBOL DAMP +1D1B5 ; [*12A3.0020.0002] # MUSICAL SYMBOL DAMP ALL +1D1B6 ; [*12A4.0020.0002] # MUSICAL SYMBOL MAXIMA +1D1B7 ; [*12A5.0020.0002] # MUSICAL SYMBOL LONGA +1D1B8 ; [*12A6.0020.0002] # MUSICAL SYMBOL BREVIS +1D1B9 ; [*12A7.0020.0002] # MUSICAL SYMBOL SEMIBREVIS WHITE +1D1BA ; [*12A8.0020.0002] # MUSICAL SYMBOL SEMIBREVIS BLACK +1D1BB ; [*12A7.0020.0002][.0000.0000.0000] # MUSICAL SYMBOL MINIMA +1D1BC ; [*12A8.0020.0002][.0000.0000.0000] # MUSICAL SYMBOL MINIMA BLACK +1D1BD ; [*12A7.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL SEMIMINIMA WHITE +1D1BE ; [*12A8.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL SEMIMINIMA BLACK +1D1BF ; [*12A7.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL FUSA WHITE +1D1C0 ; [*12A8.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL FUSA BLACK +1D1C1 ; [*12A9.0020.0002] # MUSICAL SYMBOL LONGA PERFECTA REST +1D1C2 ; [*12AA.0020.0002] # MUSICAL SYMBOL LONGA IMPERFECTA REST +1D1C3 ; [*12AB.0020.0002] # MUSICAL SYMBOL BREVIS REST +1D1C4 ; [*12AC.0020.0002] # MUSICAL SYMBOL SEMIBREVIS REST +1D1C5 ; [*12AD.0020.0002] # MUSICAL SYMBOL MINIMA REST +1D1C6 ; [*12AE.0020.0002] # MUSICAL SYMBOL SEMIMINIMA REST +1D1C7 ; [*12AF.0020.0002] # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA +1D1C8 ; [*12B0.0020.0002] # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA +1D1C9 ; [*12B1.0020.0002] # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1 +1D1CA ; [*12B2.0020.0002] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA +1D1CB ; [*12B3.0020.0002] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA +1D1CC ; [*12B4.0020.0002] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1 +1D1CD ; [*12B5.0020.0002] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2 +1D1CE ; [*12B6.0020.0002] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3 +1D1CF ; [*12B7.0020.0002] # MUSICAL SYMBOL CROIX +1D1D0 ; [*12B8.0020.0002] # MUSICAL SYMBOL GREGORIAN C CLEF +1D1D1 ; [*12B9.0020.0002] # MUSICAL SYMBOL GREGORIAN F CLEF +1D1D2 ; [*12BA.0020.0002] # MUSICAL SYMBOL SQUARE B +1D1D3 ; [*12BB.0020.0002] # MUSICAL SYMBOL VIRGA +1D1D4 ; [*12BC.0020.0002] # MUSICAL SYMBOL PODATUS +1D1D5 ; [*12BD.0020.0002] # MUSICAL SYMBOL CLIVIS +1D1D6 ; [*12BE.0020.0002] # MUSICAL SYMBOL SCANDICUS +1D1D7 ; [*12BF.0020.0002] # MUSICAL SYMBOL CLIMACUS +1D1D8 ; [*12C0.0020.0002] # MUSICAL SYMBOL TORCULUS +1D1D9 ; [*12C1.0020.0002] # MUSICAL SYMBOL PORRECTUS +1D1DA ; [*12C2.0020.0002] # MUSICAL SYMBOL PORRECTUS FLEXUS +1D1DB ; [*12C3.0020.0002] # MUSICAL SYMBOL SCANDICUS FLEXUS +1D1DC ; [*12C4.0020.0002] # MUSICAL SYMBOL TORCULUS RESUPINUS +1D1DD ; [*12C5.0020.0002] # MUSICAL SYMBOL PES SUBPUNCTIS +1D1DE ; [*12C6.0020.0002] # MUSICAL SYMBOL KIEVAN C CLEF +1D1DF ; [*12C7.0020.0002] # MUSICAL SYMBOL KIEVAN END OF PIECE +1D1E0 ; [*12C8.0020.0002] # MUSICAL SYMBOL KIEVAN FINAL NOTE +1D1E1 ; [*12C9.0020.0002] # MUSICAL SYMBOL KIEVAN RECITATIVE MARK +1D1E2 ; [*12CA.0020.0002] # MUSICAL SYMBOL KIEVAN WHOLE NOTE +1D1E3 ; [*12CB.0020.0002] # MUSICAL SYMBOL KIEVAN HALF NOTE +1D1E4 ; [*12CC.0020.0002] # MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM DOWN +1D1E5 ; [*12CD.0020.0002] # MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM UP +1D1E6 ; [*12CE.0020.0002] # MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM DOWN +1D1E7 ; [*12CF.0020.0002] # MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM UP +1D1E8 ; [*12D0.0020.0002] # MUSICAL SYMBOL KIEVAN FLAT SIGN +1D200 ; [*12D1.0020.0002] # GREEK VOCAL NOTATION SYMBOL-1 +1D201 ; [*12D2.0020.0002] # GREEK VOCAL NOTATION SYMBOL-2 +1D202 ; [*12D3.0020.0002] # GREEK VOCAL NOTATION SYMBOL-3 +1D203 ; [*12D4.0020.0002] # GREEK VOCAL NOTATION SYMBOL-4 +1D204 ; [*12D5.0020.0002] # GREEK VOCAL NOTATION SYMBOL-5 +1D205 ; [*12D6.0020.0002] # GREEK VOCAL NOTATION SYMBOL-6 +1D206 ; [*12D7.0020.0002] # GREEK VOCAL NOTATION SYMBOL-7 +1D207 ; [*12D8.0020.0002] # GREEK VOCAL NOTATION SYMBOL-8 +1D208 ; [*12D9.0020.0002] # GREEK VOCAL NOTATION SYMBOL-9 +1D209 ; [*12DA.0020.0002] # GREEK VOCAL NOTATION SYMBOL-10 +1D20A ; [*12DB.0020.0002] # GREEK VOCAL NOTATION SYMBOL-11 +1D20B ; [*12DC.0020.0002] # GREEK VOCAL NOTATION SYMBOL-12 +1D20C ; [*12DD.0020.0002] # GREEK VOCAL NOTATION SYMBOL-13 +1D20D ; [*12DE.0020.0002] # GREEK VOCAL NOTATION SYMBOL-14 +1D20E ; [*12DF.0020.0002] # GREEK VOCAL NOTATION SYMBOL-15 +1D20F ; [*12E0.0020.0002] # GREEK VOCAL NOTATION SYMBOL-16 +1D210 ; [*12E1.0020.0002] # GREEK VOCAL NOTATION SYMBOL-17 +1D211 ; [*12E2.0020.0002] # GREEK VOCAL NOTATION SYMBOL-18 +1D212 ; [*12E3.0020.0002] # GREEK VOCAL NOTATION SYMBOL-19 +1D213 ; [*12E4.0020.0002] # GREEK VOCAL NOTATION SYMBOL-20 +1D214 ; [*12E5.0020.0002] # GREEK VOCAL NOTATION SYMBOL-21 +1D215 ; [*12E6.0020.0002] # GREEK VOCAL NOTATION SYMBOL-22 +1D216 ; [*12E7.0020.0002] # GREEK VOCAL NOTATION SYMBOL-23 +1D217 ; [*12E8.0020.0002] # GREEK VOCAL NOTATION SYMBOL-24 +1D218 ; [*12E9.0020.0002] # GREEK VOCAL NOTATION SYMBOL-50 +1D219 ; [*12EA.0020.0002] # GREEK VOCAL NOTATION SYMBOL-51 +1D21A ; [*12EB.0020.0002] # GREEK VOCAL NOTATION SYMBOL-52 +1D21B ; [*12EC.0020.0002] # GREEK VOCAL NOTATION SYMBOL-53 +1D21C ; [*12ED.0020.0002] # GREEK VOCAL NOTATION SYMBOL-54 +1D21D ; [*12EE.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-1 +1D21E ; [*12EF.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-2 +1D21F ; [*12F0.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-4 +1D220 ; [*12F1.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-5 +1D221 ; [*12F2.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-7 +1D222 ; [*12F3.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-8 +1D223 ; [*12F4.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-11 +1D224 ; [*12F5.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-12 +1D225 ; [*12F6.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-13 +1D226 ; [*12F7.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-14 +1D227 ; [*12F8.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-17 +1D228 ; [*12F9.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-18 +1D229 ; [*12FA.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-19 +1D22A ; [*12FB.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-23 +1D22B ; [*12FC.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-24 +1D22C ; [*12FD.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-25 +1D22D ; [*12FE.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-26 +1D22E ; [*12FF.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-27 +1D22F ; [*1300.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-29 +1D230 ; [*1301.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-30 +1D231 ; [*1302.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-32 +1D232 ; [*1303.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-36 +1D233 ; [*1304.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-37 +1D234 ; [*1305.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-38 +1D235 ; [*1306.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-39 +1D236 ; [*1307.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-40 +1D237 ; [*1308.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-42 +1D238 ; [*1309.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-43 +1D239 ; [*130A.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-45 +1D23A ; [*130B.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-47 +1D23B ; [*130C.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-48 +1D23C ; [*130D.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-49 +1D23D ; [*130E.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-50 +1D23E ; [*130F.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-51 +1D23F ; [*1310.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-52 +1D240 ; [*1311.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-53 +1D241 ; [*1312.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-54 1D242 ; [.0000.0000.0000] # COMBINING GREEK MUSICAL TRISEME 1D243 ; [.0000.0000.0000] # COMBINING GREEK MUSICAL TETRASEME 1D244 ; [.0000.0000.0000] # COMBINING GREEK MUSICAL PENTASEME -1D245 ; [*11DD.0020.0002] # GREEK MUSICAL LEIMMA -1D300 ; [*0F02.0020.0002] # MONOGRAM FOR EARTH -1D301 ; [*0F03.0020.0002] # DIGRAM FOR HEAVENLY EARTH -1D302 ; [*0F04.0020.0002] # DIGRAM FOR HUMAN EARTH -1D303 ; [*0F05.0020.0002] # DIGRAM FOR EARTHLY HEAVEN -1D304 ; [*0F06.0020.0002] # DIGRAM FOR EARTHLY HUMAN -1D305 ; [*0F07.0020.0002] # DIGRAM FOR EARTH -1D306 ; [*0F08.0020.0002] # TETRAGRAM FOR CENTRE -1D307 ; [*0F09.0020.0002] # TETRAGRAM FOR FULL CIRCLE -1D308 ; [*0F0A.0020.0002] # TETRAGRAM FOR MIRED -1D309 ; [*0F0B.0020.0002] # TETRAGRAM FOR BARRIER -1D30A ; [*0F0C.0020.0002] # TETRAGRAM FOR KEEPING SMALL -1D30B ; [*0F0D.0020.0002] # TETRAGRAM FOR CONTRARIETY -1D30C ; [*0F0E.0020.0002] # TETRAGRAM FOR ASCENT -1D30D ; [*0F0F.0020.0002] # TETRAGRAM FOR OPPOSITION -1D30E ; [*0F10.0020.0002] # TETRAGRAM FOR BRANCHING OUT -1D30F ; [*0F11.0020.0002] # TETRAGRAM FOR DEFECTIVENESS OR DISTORTION -1D310 ; [*0F12.0020.0002] # TETRAGRAM FOR DIVERGENCE -1D311 ; [*0F13.0020.0002] # TETRAGRAM FOR YOUTHFULNESS -1D312 ; [*0F14.0020.0002] # TETRAGRAM FOR INCREASE -1D313 ; [*0F15.0020.0002] # TETRAGRAM FOR PENETRATION -1D314 ; [*0F16.0020.0002] # TETRAGRAM FOR REACH -1D315 ; [*0F17.0020.0002] # TETRAGRAM FOR CONTACT -1D316 ; [*0F18.0020.0002] # TETRAGRAM FOR HOLDING BACK -1D317 ; [*0F19.0020.0002] # TETRAGRAM FOR WAITING -1D318 ; [*0F1A.0020.0002] # TETRAGRAM FOR FOLLOWING -1D319 ; [*0F1B.0020.0002] # TETRAGRAM FOR ADVANCE -1D31A ; [*0F1C.0020.0002] # TETRAGRAM FOR RELEASE -1D31B ; [*0F1D.0020.0002] # TETRAGRAM FOR RESISTANCE -1D31C ; [*0F1E.0020.0002] # TETRAGRAM FOR EASE -1D31D ; [*0F1F.0020.0002] # TETRAGRAM FOR JOY -1D31E ; [*0F20.0020.0002] # TETRAGRAM FOR CONTENTION -1D31F ; [*0F21.0020.0002] # TETRAGRAM FOR ENDEAVOUR -1D320 ; [*0F22.0020.0002] # TETRAGRAM FOR DUTIES -1D321 ; [*0F23.0020.0002] # TETRAGRAM FOR CHANGE -1D322 ; [*0F24.0020.0002] # TETRAGRAM FOR DECISIVENESS -1D323 ; [*0F25.0020.0002] # TETRAGRAM FOR BOLD RESOLUTION -1D324 ; [*0F26.0020.0002] # TETRAGRAM FOR PACKING -1D325 ; [*0F27.0020.0002] # TETRAGRAM FOR LEGION -1D326 ; [*0F28.0020.0002] # TETRAGRAM FOR CLOSENESS -1D327 ; [*0F29.0020.0002] # TETRAGRAM FOR KINSHIP -1D328 ; [*0F2A.0020.0002] # TETRAGRAM FOR GATHERING -1D329 ; [*0F2B.0020.0002] # TETRAGRAM FOR STRENGTH -1D32A ; [*0F2C.0020.0002] # TETRAGRAM FOR PURITY -1D32B ; [*0F2D.0020.0002] # TETRAGRAM FOR FULLNESS -1D32C ; [*0F2E.0020.0002] # TETRAGRAM FOR RESIDENCE -1D32D ; [*0F2F.0020.0002] # TETRAGRAM FOR LAW OR MODEL -1D32E ; [*0F30.0020.0002] # TETRAGRAM FOR RESPONSE -1D32F ; [*0F31.0020.0002] # TETRAGRAM FOR GOING TO MEET -1D330 ; [*0F32.0020.0002] # TETRAGRAM FOR ENCOUNTERS -1D331 ; [*0F33.0020.0002] # TETRAGRAM FOR STOVE -1D332 ; [*0F34.0020.0002] # TETRAGRAM FOR GREATNESS -1D333 ; [*0F35.0020.0002] # TETRAGRAM FOR ENLARGEMENT -1D334 ; [*0F36.0020.0002] # TETRAGRAM FOR PATTERN -1D335 ; [*0F37.0020.0002] # TETRAGRAM FOR RITUAL -1D336 ; [*0F38.0020.0002] # TETRAGRAM FOR FLIGHT -1D337 ; [*0F39.0020.0002] # TETRAGRAM FOR VASTNESS OR WASTING -1D338 ; [*0F3A.0020.0002] # TETRAGRAM FOR CONSTANCY -1D339 ; [*0F3B.0020.0002] # TETRAGRAM FOR MEASURE -1D33A ; [*0F3C.0020.0002] # TETRAGRAM FOR ETERNITY -1D33B ; [*0F3D.0020.0002] # TETRAGRAM FOR UNITY -1D33C ; [*0F3E.0020.0002] # TETRAGRAM FOR DIMINISHMENT -1D33D ; [*0F3F.0020.0002] # TETRAGRAM FOR CLOSED MOUTH -1D33E ; [*0F40.0020.0002] # TETRAGRAM FOR GUARDEDNESS -1D33F ; [*0F41.0020.0002] # TETRAGRAM FOR GATHERING IN -1D340 ; [*0F42.0020.0002] # TETRAGRAM FOR MASSING -1D341 ; [*0F43.0020.0002] # TETRAGRAM FOR ACCUMULATION -1D342 ; [*0F44.0020.0002] # TETRAGRAM FOR EMBELLISHMENT -1D343 ; [*0F45.0020.0002] # TETRAGRAM FOR DOUBT -1D344 ; [*0F46.0020.0002] # TETRAGRAM FOR WATCH -1D345 ; [*0F47.0020.0002] # TETRAGRAM FOR SINKING -1D346 ; [*0F48.0020.0002] # TETRAGRAM FOR INNER -1D347 ; [*0F49.0020.0002] # TETRAGRAM FOR DEPARTURE -1D348 ; [*0F4A.0020.0002] # TETRAGRAM FOR DARKENING -1D349 ; [*0F4B.0020.0002] # TETRAGRAM FOR DIMMING -1D34A ; [*0F4C.0020.0002] # TETRAGRAM FOR EXHAUSTION -1D34B ; [*0F4D.0020.0002] # TETRAGRAM FOR SEVERANCE -1D34C ; [*0F4E.0020.0002] # TETRAGRAM FOR STOPPAGE -1D34D ; [*0F4F.0020.0002] # TETRAGRAM FOR HARDNESS -1D34E ; [*0F50.0020.0002] # TETRAGRAM FOR COMPLETION -1D34F ; [*0F51.0020.0002] # TETRAGRAM FOR CLOSURE -1D350 ; [*0F52.0020.0002] # TETRAGRAM FOR FAILURE -1D351 ; [*0F53.0020.0002] # TETRAGRAM FOR AGGRAVATION -1D352 ; [*0F54.0020.0002] # TETRAGRAM FOR COMPLIANCE -1D353 ; [*0F55.0020.0002] # TETRAGRAM FOR ON THE VERGE -1D354 ; [*0F56.0020.0002] # TETRAGRAM FOR DIFFICULTIES -1D355 ; [*0F57.0020.0002] # TETRAGRAM FOR LABOURING -1D356 ; [*0F58.0020.0002] # TETRAGRAM FOR FOSTERING -1D369 ; [*1C53.0020.0002] # COUNTING ROD TENS DIGIT ONE -1D36A ; [*1C54.0020.0002] # COUNTING ROD TENS DIGIT TWO -1D36B ; [*1C55.0020.0002] # COUNTING ROD TENS DIGIT THREE -1D36C ; [*1C56.0020.0002] # COUNTING ROD TENS DIGIT FOUR -1D36D ; [*1C57.0020.0002] # COUNTING ROD TENS DIGIT FIVE -1D36E ; [*1C58.0020.0002] # COUNTING ROD TENS DIGIT SIX -1D36F ; [*1C59.0020.0002] # COUNTING ROD TENS DIGIT SEVEN -1D370 ; [*1C5A.0020.0002] # COUNTING ROD TENS DIGIT EIGHT -1D371 ; [*1C5B.0020.0002] # COUNTING ROD TENS DIGIT NINE -1D6C1 ; [*0622.0020.0005] # MATHEMATICAL BOLD NABLA -1D6DB ; [*061E.0020.0005] # MATHEMATICAL BOLD PARTIAL DIFFERENTIAL -1D6FB ; [*0622.0020.0005] # MATHEMATICAL ITALIC NABLA -1D715 ; [*061E.0020.0005] # MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL -1D735 ; [*0622.0020.0005] # MATHEMATICAL BOLD ITALIC NABLA -1D74F ; [*061E.0020.0005] # MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL -1D76F ; [*0622.0020.0005] # MATHEMATICAL SANS-SERIF BOLD NABLA -1D789 ; [*061E.0020.0005] # MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL -1D7A9 ; [*0622.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA -1D7C3 ; [*061E.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL -1D800 ; [*18A3.0020.0002] # SIGNWRITING HAND-FIST INDEX -1D801 ; [*18A4.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX -1D802 ; [*18A5.0020.0002] # SIGNWRITING HAND-CUP INDEX -1D803 ; [*18A6.0020.0002] # SIGNWRITING HAND-OVAL INDEX -1D804 ; [*18A7.0020.0002] # SIGNWRITING HAND-HINGE INDEX -1D805 ; [*18A8.0020.0002] # SIGNWRITING HAND-ANGLE INDEX -1D806 ; [*18A9.0020.0002] # SIGNWRITING HAND-FIST INDEX BENT -1D807 ; [*18AA.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX BENT -1D808 ; [*18AB.0020.0002] # SIGNWRITING HAND-FIST THUMB UNDER INDEX BENT -1D809 ; [*18AC.0020.0002] # SIGNWRITING HAND-FIST INDEX RAISED KNUCKLE -1D80A ; [*18AD.0020.0002] # SIGNWRITING HAND-FIST INDEX CUPPED -1D80B ; [*18AE.0020.0002] # SIGNWRITING HAND-FIST INDEX HINGED -1D80C ; [*18AF.0020.0002] # SIGNWRITING HAND-FIST INDEX HINGED LOW -1D80D ; [*18B0.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX HINGE -1D80E ; [*18B1.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE -1D80F ; [*18B2.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE -1D810 ; [*18B3.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE BENT -1D811 ; [*18B4.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE RAISED KNUCKLES -1D812 ; [*18B5.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE HINGED -1D813 ; [*18B6.0020.0002] # SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED -1D814 ; [*18B7.0020.0002] # SIGNWRITING HAND-FIST INDEX HINGED MIDDLE UP -1D815 ; [*18B8.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED -1D816 ; [*18B9.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED INDEX BENT -1D817 ; [*18BA.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED MIDDLE BENT -1D818 ; [*18BB.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED CUPPED -1D819 ; [*18BC.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGED -1D81A ; [*18BD.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CROSSED -1D81B ; [*18BE.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE CROSSED -1D81C ; [*18BF.0020.0002] # SIGNWRITING HAND-FIST MIDDLE BENT OVER INDEX -1D81D ; [*18C0.0020.0002] # SIGNWRITING HAND-FIST INDEX BENT OVER MIDDLE -1D81E ; [*18C1.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB -1D81F ; [*18C2.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE THUMB -1D820 ; [*18C3.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE STRAIGHT THUMB BENT -1D821 ; [*18C4.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE BENT THUMB STRAIGHT -1D822 ; [*18C5.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB BENT -1D823 ; [*18C6.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE HINGED SPREAD THUMB SIDE -1D824 ; [*18C7.0020.0002] # SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED THUMB SIDE -1D825 ; [*18C8.0020.0002] # SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED THUMB CONJOINED -1D826 ; [*18C9.0020.0002] # SIGNWRITING HAND-FIST INDEX HINGED MIDDLE UP THUMB SIDE -1D827 ; [*18CA.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE UP SPREAD THUMB FORWARD -1D828 ; [*18CB.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CUPPED -1D829 ; [*18CC.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CIRCLED -1D82A ; [*18CD.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB HOOKED -1D82B ; [*18CE.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB HINGED -1D82C ; [*18CF.0020.0002] # SIGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLE STRAIGHT -1D82D ; [*18D0.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE -1D82E ; [*18D1.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE CONJOINED -1D82F ; [*18D2.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE BENT -1D830 ; [*18D3.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB HOOKED INDEX UP -1D831 ; [*18D4.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB HOOKED MIDDLE UP -1D832 ; [*18D5.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGED THUMB SIDE -1D833 ; [*18D6.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CROSSED THUMB SIDE -1D834 ; [*18D7.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB FORWARD -1D835 ; [*18D8.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED CUPPED THUMB FORWARD -1D836 ; [*18D9.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB CUPPED INDEX UP -1D837 ; [*18DA.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CUPPED MIDDLE UP -1D838 ; [*18DB.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB CIRCLED INDEX UP -1D839 ; [*18DC.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB CIRCLED INDEX HINGED -1D83A ; [*18DD.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB ANGLED OUT MIDDLE UP -1D83B ; [*18DE.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB ANGLED IN MIDDLE UP -1D83C ; [*18DF.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CIRCLED MIDDLE UP -1D83D ; [*18E0.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CONJOINED HINGED -1D83E ; [*18E1.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB ANGLED OUT -1D83F ; [*18E2.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB ANGLED -1D840 ; [*18E3.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED OUT INDEX UP -1D841 ; [*18E4.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED OUT INDEX CROSSED -1D842 ; [*18E5.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED INDEX UP -1D843 ; [*18E6.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB HOOKED MIDDLE HINGED -1D844 ; [*18E7.0020.0002] # SIGNWRITING HAND-FLAT FOUR FINGERS -1D845 ; [*18E8.0020.0002] # SIGNWRITING HAND-FLAT FOUR FINGERS BENT -1D846 ; [*18E9.0020.0002] # SIGNWRITING HAND-FLAT FOUR FINGERS HINGED -1D847 ; [*18EA.0020.0002] # SIGNWRITING HAND-FLAT FOUR FINGERS CONJOINED -1D848 ; [*18EB.0020.0002] # SIGNWRITING HAND-FLAT FOUR FINGERS CONJOINED SPLIT -1D849 ; [*18EC.0020.0002] # SIGNWRITING HAND-CLAW FOUR FINGERS CONJOINED -1D84A ; [*18ED.0020.0002] # SIGNWRITING HAND-FIST FOUR FINGERS CONJOINED BENT -1D84B ; [*18EE.0020.0002] # SIGNWRITING HAND-HINGE FOUR FINGERS CONJOINED -1D84C ; [*18EF.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD -1D84D ; [*18F0.0020.0002] # SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD -1D84E ; [*18F1.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD FOUR BENT -1D84F ; [*18F2.0020.0002] # SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD FOUR BENT -1D850 ; [*18F3.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD BENT -1D851 ; [*18F4.0020.0002] # SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD BENT -1D852 ; [*18F5.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD THUMB FORWARD -1D853 ; [*18F6.0020.0002] # SIGNWRITING HAND-CUP FIVE FINGERS SPREAD -1D854 ; [*18F7.0020.0002] # SIGNWRITING HAND-CUP FIVE FINGERS SPREAD OPEN -1D855 ; [*18F8.0020.0002] # SIGNWRITING HAND-HINGE FIVE FINGERS SPREAD OPEN -1D856 ; [*18F9.0020.0002] # SIGNWRITING HAND-OVAL FIVE FINGERS SPREAD -1D857 ; [*18FA.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED -1D858 ; [*18FB.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED THUMB SIDE -1D859 ; [*18FC.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED NO THUMB -1D85A ; [*18FD.0020.0002] # SIGNWRITING HAND-FLAT -1D85B ; [*18FE.0020.0002] # SIGNWRITING HAND-FLAT BETWEEN PALM FACINGS -1D85C ; [*18FF.0020.0002] # SIGNWRITING HAND-FLAT HEEL -1D85D ; [*1900.0020.0002] # SIGNWRITING HAND-FLAT THUMB SIDE -1D85E ; [*1901.0020.0002] # SIGNWRITING HAND-FLAT HEEL THUMB SIDE -1D85F ; [*1902.0020.0002] # SIGNWRITING HAND-FLAT THUMB BENT -1D860 ; [*1903.0020.0002] # SIGNWRITING HAND-FLAT THUMB FORWARD -1D861 ; [*1904.0020.0002] # SIGNWRITING HAND-FLAT SPLIT INDEX THUMB SIDE -1D862 ; [*1905.0020.0002] # SIGNWRITING HAND-FLAT SPLIT CENTRE -1D863 ; [*1906.0020.0002] # SIGNWRITING HAND-FLAT SPLIT CENTRE THUMB SIDE -1D864 ; [*1907.0020.0002] # SIGNWRITING HAND-FLAT SPLIT CENTRE THUMB SIDE BENT -1D865 ; [*1908.0020.0002] # SIGNWRITING HAND-FLAT SPLIT LITTLE -1D866 ; [*1909.0020.0002] # SIGNWRITING HAND-CLAW -1D867 ; [*190A.0020.0002] # SIGNWRITING HAND-CLAW THUMB SIDE -1D868 ; [*190B.0020.0002] # SIGNWRITING HAND-CLAW NO THUMB -1D869 ; [*190C.0020.0002] # SIGNWRITING HAND-CLAW THUMB FORWARD -1D86A ; [*190D.0020.0002] # SIGNWRITING HAND-HOOK CURLICUE -1D86B ; [*190E.0020.0002] # SIGNWRITING HAND-HOOK -1D86C ; [*190F.0020.0002] # SIGNWRITING HAND-CUP OPEN -1D86D ; [*1910.0020.0002] # SIGNWRITING HAND-CUP -1D86E ; [*1911.0020.0002] # SIGNWRITING HAND-CUP OPEN THUMB SIDE -1D86F ; [*1912.0020.0002] # SIGNWRITING HAND-CUP THUMB SIDE -1D870 ; [*1913.0020.0002] # SIGNWRITING HAND-CUP OPEN NO THUMB -1D871 ; [*1914.0020.0002] # SIGNWRITING HAND-CUP NO THUMB -1D872 ; [*1915.0020.0002] # SIGNWRITING HAND-CUP OPEN THUMB FORWARD -1D873 ; [*1916.0020.0002] # SIGNWRITING HAND-CUP THUMB FORWARD -1D874 ; [*1917.0020.0002] # SIGNWRITING HAND-CURLICUE OPEN -1D875 ; [*1918.0020.0002] # SIGNWRITING HAND-CURLICUE -1D876 ; [*1919.0020.0002] # SIGNWRITING HAND-CIRCLE -1D877 ; [*191A.0020.0002] # SIGNWRITING HAND-OVAL -1D878 ; [*191B.0020.0002] # SIGNWRITING HAND-OVAL THUMB SIDE -1D879 ; [*191C.0020.0002] # SIGNWRITING HAND-OVAL NO THUMB -1D87A ; [*191D.0020.0002] # SIGNWRITING HAND-OVAL THUMB FORWARD -1D87B ; [*191E.0020.0002] # SIGNWRITING HAND-HINGE OPEN -1D87C ; [*191F.0020.0002] # SIGNWRITING HAND-HINGE OPEN THUMB FORWARD -1D87D ; [*1920.0020.0002] # SIGNWRITING HAND-HINGE -1D87E ; [*1921.0020.0002] # SIGNWRITING HAND-HINGE SMALL -1D87F ; [*1922.0020.0002] # SIGNWRITING HAND-HINGE OPEN THUMB SIDE -1D880 ; [*1923.0020.0002] # SIGNWRITING HAND-HINGE THUMB SIDE -1D881 ; [*1924.0020.0002] # SIGNWRITING HAND-HINGE OPEN NO THUMB -1D882 ; [*1925.0020.0002] # SIGNWRITING HAND-HINGE NO THUMB -1D883 ; [*1926.0020.0002] # SIGNWRITING HAND-HINGE THUMB SIDE TOUCHING INDEX -1D884 ; [*1927.0020.0002] # SIGNWRITING HAND-HINGE THUMB BETWEEN MIDDLE RING -1D885 ; [*1928.0020.0002] # SIGNWRITING HAND-ANGLE -1D886 ; [*1929.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE RING -1D887 ; [*192A.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE RING -1D888 ; [*192B.0020.0002] # SIGNWRITING HAND-HINGE INDEX MIDDLE RING -1D889 ; [*192C.0020.0002] # SIGNWRITING HAND-ANGLE INDEX MIDDLE RING -1D88A ; [*192D.0020.0002] # SIGNWRITING HAND-HINGE LITTLE -1D88B ; [*192E.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE RING BENT -1D88C ; [*192F.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE RING CONJOINED -1D88D ; [*1930.0020.0002] # SIGNWRITING HAND-HINGE INDEX MIDDLE RING CONJOINED -1D88E ; [*1931.0020.0002] # SIGNWRITING HAND-FIST LITTLE DOWN -1D88F ; [*1932.0020.0002] # SIGNWRITING HAND-FIST LITTLE DOWN RIPPLE STRAIGHT -1D890 ; [*1933.0020.0002] # SIGNWRITING HAND-FIST LITTLE DOWN RIPPLE CURVED -1D891 ; [*1934.0020.0002] # SIGNWRITING HAND-FIST LITTLE DOWN OTHERS CIRCLED -1D892 ; [*1935.0020.0002] # SIGNWRITING HAND-FIST LITTLE UP -1D893 ; [*1936.0020.0002] # SIGNWRITING HAND-FIST THUMB UNDER LITTLE UP -1D894 ; [*1937.0020.0002] # SIGNWRITING HAND-CIRCLE LITTLE UP -1D895 ; [*1938.0020.0002] # SIGNWRITING HAND-OVAL LITTLE UP -1D896 ; [*1939.0020.0002] # SIGNWRITING HAND-ANGLE LITTLE UP -1D897 ; [*193A.0020.0002] # SIGNWRITING HAND-FIST LITTLE RAISED KNUCKLE -1D898 ; [*193B.0020.0002] # SIGNWRITING HAND-FIST LITTLE BENT -1D899 ; [*193C.0020.0002] # SIGNWRITING HAND-FIST LITTLE TOUCHES THUMB -1D89A ; [*193D.0020.0002] # SIGNWRITING HAND-FIST LITTLE THUMB -1D89B ; [*193E.0020.0002] # SIGNWRITING HAND-HINGE LITTLE THUMB -1D89C ; [*193F.0020.0002] # SIGNWRITING HAND-FIST LITTLE INDEX THUMB -1D89D ; [*1940.0020.0002] # SIGNWRITING HAND-HINGE LITTLE INDEX THUMB -1D89E ; [*1941.0020.0002] # SIGNWRITING HAND-ANGLE LITTLE INDEX THUMB INDEX THUMB OUT -1D89F ; [*1942.0020.0002] # SIGNWRITING HAND-ANGLE LITTLE INDEX THUMB INDEX THUMB -1D8A0 ; [*1943.0020.0002] # SIGNWRITING HAND-FIST LITTLE INDEX -1D8A1 ; [*1944.0020.0002] # SIGNWRITING HAND-CIRCLE LITTLE INDEX -1D8A2 ; [*1945.0020.0002] # SIGNWRITING HAND-HINGE LITTLE INDEX -1D8A3 ; [*1946.0020.0002] # SIGNWRITING HAND-ANGLE LITTLE INDEX -1D8A4 ; [*1947.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE LITTLE -1D8A5 ; [*1948.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE LITTLE -1D8A6 ; [*1949.0020.0002] # SIGNWRITING HAND-HINGE INDEX MIDDLE LITTLE -1D8A7 ; [*194A.0020.0002] # SIGNWRITING HAND-HINGE RING -1D8A8 ; [*194B.0020.0002] # SIGNWRITING HAND-ANGLE INDEX MIDDLE LITTLE -1D8A9 ; [*194C.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CROSS LITTLE -1D8AA ; [*194D.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE CROSS LITTLE -1D8AB ; [*194E.0020.0002] # SIGNWRITING HAND-FIST RING DOWN -1D8AC ; [*194F.0020.0002] # SIGNWRITING HAND-HINGE RING DOWN INDEX THUMB HOOK MIDDLE -1D8AD ; [*1950.0020.0002] # SIGNWRITING HAND-ANGLE RING DOWN MIDDLE THUMB INDEX CROSS -1D8AE ; [*1951.0020.0002] # SIGNWRITING HAND-FIST RING UP -1D8AF ; [*1952.0020.0002] # SIGNWRITING HAND-FIST RING RAISED KNUCKLE -1D8B0 ; [*1953.0020.0002] # SIGNWRITING HAND-FIST RING LITTLE -1D8B1 ; [*1954.0020.0002] # SIGNWRITING HAND-CIRCLE RING LITTLE -1D8B2 ; [*1955.0020.0002] # SIGNWRITING HAND-OVAL RING LITTLE -1D8B3 ; [*1956.0020.0002] # SIGNWRITING HAND-ANGLE RING LITTLE -1D8B4 ; [*1957.0020.0002] # SIGNWRITING HAND-FIST RING MIDDLE -1D8B5 ; [*1958.0020.0002] # SIGNWRITING HAND-FIST RING MIDDLE CONJOINED -1D8B6 ; [*1959.0020.0002] # SIGNWRITING HAND-FIST RING MIDDLE RAISED KNUCKLES -1D8B7 ; [*195A.0020.0002] # SIGNWRITING HAND-FIST RING INDEX -1D8B8 ; [*195B.0020.0002] # SIGNWRITING HAND-FIST RING THUMB -1D8B9 ; [*195C.0020.0002] # SIGNWRITING HAND-HOOK RING THUMB -1D8BA ; [*195D.0020.0002] # SIGNWRITING HAND-FIST INDEX RING LITTLE -1D8BB ; [*195E.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX RING LITTLE -1D8BC ; [*195F.0020.0002] # SIGNWRITING HAND-CURLICUE INDEX RING LITTLE ON -1D8BD ; [*1960.0020.0002] # SIGNWRITING HAND-HOOK INDEX RING LITTLE OUT -1D8BE ; [*1961.0020.0002] # SIGNWRITING HAND-HOOK INDEX RING LITTLE IN -1D8BF ; [*1962.0020.0002] # SIGNWRITING HAND-HOOK INDEX RING LITTLE UNDER -1D8C0 ; [*1963.0020.0002] # SIGNWRITING HAND-CUP INDEX RING LITTLE -1D8C1 ; [*1964.0020.0002] # SIGNWRITING HAND-HINGE INDEX RING LITTLE -1D8C2 ; [*1965.0020.0002] # SIGNWRITING HAND-ANGLE INDEX RING LITTLE OUT -1D8C3 ; [*1966.0020.0002] # SIGNWRITING HAND-ANGLE INDEX RING LITTLE -1D8C4 ; [*1967.0020.0002] # SIGNWRITING HAND-FIST MIDDLE DOWN -1D8C5 ; [*1968.0020.0002] # SIGNWRITING HAND-HINGE MIDDLE -1D8C6 ; [*1969.0020.0002] # SIGNWRITING HAND-FIST MIDDLE UP -1D8C7 ; [*196A.0020.0002] # SIGNWRITING HAND-CIRCLE MIDDLE UP -1D8C8 ; [*196B.0020.0002] # SIGNWRITING HAND-FIST MIDDLE RAISED KNUCKLE -1D8C9 ; [*196C.0020.0002] # SIGNWRITING HAND-FIST MIDDLE UP THUMB SIDE -1D8CA ; [*196D.0020.0002] # SIGNWRITING HAND-HOOK MIDDLE THUMB -1D8CB ; [*196E.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB LITTLE -1D8CC ; [*196F.0020.0002] # SIGNWRITING HAND-FIST MIDDLE LITTLE -1D8CD ; [*1970.0020.0002] # SIGNWRITING HAND-FIST MIDDLE RING LITTLE -1D8CE ; [*1971.0020.0002] # SIGNWRITING HAND-CIRCLE MIDDLE RING LITTLE -1D8CF ; [*1972.0020.0002] # SIGNWRITING HAND-CURLICUE MIDDLE RING LITTLE ON -1D8D0 ; [*1973.0020.0002] # SIGNWRITING HAND-CUP MIDDLE RING LITTLE -1D8D1 ; [*1974.0020.0002] # SIGNWRITING HAND-HINGE MIDDLE RING LITTLE -1D8D2 ; [*1975.0020.0002] # SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE OUT -1D8D3 ; [*1976.0020.0002] # SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE IN -1D8D4 ; [*1977.0020.0002] # SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE -1D8D5 ; [*1978.0020.0002] # SIGNWRITING HAND-CIRCLE MIDDLE RING LITTLE BENT -1D8D6 ; [*1979.0020.0002] # SIGNWRITING HAND-CLAW MIDDLE RING LITTLE CONJOINED -1D8D7 ; [*197A.0020.0002] # SIGNWRITING HAND-CLAW MIDDLE RING LITTLE CONJOINED SIDE -1D8D8 ; [*197B.0020.0002] # SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED OUT -1D8D9 ; [*197C.0020.0002] # SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED IN -1D8DA ; [*197D.0020.0002] # SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED -1D8DB ; [*197E.0020.0002] # SIGNWRITING HAND-HINGE INDEX HINGED -1D8DC ; [*197F.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE -1D8DD ; [*1980.0020.0002] # SIGNWRITING HAND-HINGE INDEX THUMB SIDE -1D8DE ; [*1981.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB DIAGONAL -1D8DF ; [*1982.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB CONJOINED -1D8E0 ; [*1983.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB BENT -1D8E1 ; [*1984.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE INDEX BENT -1D8E2 ; [*1985.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE BOTH BENT -1D8E3 ; [*1986.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE INDEX HINGE -1D8E4 ; [*1987.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB FORWARD INDEX STRAIGHT -1D8E5 ; [*1988.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB FORWARD INDEX BENT -1D8E6 ; [*1989.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB HOOK -1D8E7 ; [*198A.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CURLICUE -1D8E8 ; [*198B.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CURVE THUMB INSIDE -1D8E9 ; [*198C.0020.0002] # SIGNWRITING HAND-CLAW INDEX THUMB CURVE THUMB INSIDE -1D8EA ; [*198D.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CURVE THUMB UNDER -1D8EB ; [*198E.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CIRCLE -1D8EC ; [*198F.0020.0002] # SIGNWRITING HAND-CUP INDEX THUMB -1D8ED ; [*1990.0020.0002] # SIGNWRITING HAND-CUP INDEX THUMB OPEN -1D8EE ; [*1991.0020.0002] # SIGNWRITING HAND-HINGE INDEX THUMB OPEN -1D8EF ; [*1992.0020.0002] # SIGNWRITING HAND-HINGE INDEX THUMB LARGE -1D8F0 ; [*1993.0020.0002] # SIGNWRITING HAND-HINGE INDEX THUMB -1D8F1 ; [*1994.0020.0002] # SIGNWRITING HAND-HINGE INDEX THUMB SMALL -1D8F2 ; [*1995.0020.0002] # SIGNWRITING HAND-ANGLE INDEX THUMB OUT -1D8F3 ; [*1996.0020.0002] # SIGNWRITING HAND-ANGLE INDEX THUMB IN -1D8F4 ; [*1997.0020.0002] # SIGNWRITING HAND-ANGLE INDEX THUMB -1D8F5 ; [*1998.0020.0002] # SIGNWRITING HAND-FIST THUMB -1D8F6 ; [*1999.0020.0002] # SIGNWRITING HAND-FIST THUMB HEEL -1D8F7 ; [*199A.0020.0002] # SIGNWRITING HAND-FIST THUMB SIDE DIAGONAL -1D8F8 ; [*199B.0020.0002] # SIGNWRITING HAND-FIST THUMB SIDE CONJOINED -1D8F9 ; [*199C.0020.0002] # SIGNWRITING HAND-FIST THUMB SIDE BENT -1D8FA ; [*199D.0020.0002] # SIGNWRITING HAND-FIST THUMB FORWARD -1D8FB ; [*199E.0020.0002] # SIGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLE -1D8FC ; [*199F.0020.0002] # SIGNWRITING HAND-FIST THUMB BETWEEN MIDDLE RING -1D8FD ; [*19A0.0020.0002] # SIGNWRITING HAND-FIST THUMB BETWEEN RING LITTLE -1D8FE ; [*19A1.0020.0002] # SIGNWRITING HAND-FIST THUMB UNDER TWO FINGERS -1D8FF ; [*19A2.0020.0002] # SIGNWRITING HAND-FIST THUMB OVER TWO FINGERS -1D900 ; [*19A3.0020.0002] # SIGNWRITING HAND-FIST THUMB UNDER THREE FINGERS -1D901 ; [*19A4.0020.0002] # SIGNWRITING HAND-FIST THUMB UNDER FOUR FINGERS -1D902 ; [*19A5.0020.0002] # SIGNWRITING HAND-FIST THUMB OVER FOUR RAISED KNUCKLES -1D903 ; [*19A6.0020.0002] # SIGNWRITING HAND-FIST -1D904 ; [*19A7.0020.0002] # SIGNWRITING HAND-FIST HEEL -1D905 ; [*19A8.0020.0002] # SIGNWRITING TOUCH SINGLE -1D906 ; [*19A9.0020.0002] # SIGNWRITING TOUCH MULTIPLE -1D907 ; [*19AA.0020.0002] # SIGNWRITING TOUCH BETWEEN -1D908 ; [*19AB.0020.0002] # SIGNWRITING GRASP SINGLE -1D909 ; [*19AC.0020.0002] # SIGNWRITING GRASP MULTIPLE -1D90A ; [*19AD.0020.0002] # SIGNWRITING GRASP BETWEEN -1D90B ; [*19AE.0020.0002] # SIGNWRITING STRIKE SINGLE -1D90C ; [*19AF.0020.0002] # SIGNWRITING STRIKE MULTIPLE -1D90D ; [*19B0.0020.0002] # SIGNWRITING STRIKE BETWEEN -1D90E ; [*19B1.0020.0002] # SIGNWRITING BRUSH SINGLE -1D90F ; [*19B2.0020.0002] # SIGNWRITING BRUSH MULTIPLE -1D910 ; [*19B3.0020.0002] # SIGNWRITING BRUSH BETWEEN -1D911 ; [*19B4.0020.0002] # SIGNWRITING RUB SINGLE -1D912 ; [*19B5.0020.0002] # SIGNWRITING RUB MULTIPLE -1D913 ; [*19B6.0020.0002] # SIGNWRITING RUB BETWEEN -1D914 ; [*19B7.0020.0002] # SIGNWRITING SURFACE SYMBOLS -1D915 ; [*19B8.0020.0002] # SIGNWRITING SURFACE BETWEEN -1D916 ; [*19B9.0020.0002] # SIGNWRITING SQUEEZE LARGE SINGLE -1D917 ; [*19BA.0020.0002] # SIGNWRITING SQUEEZE SMALL SINGLE -1D918 ; [*19BB.0020.0002] # SIGNWRITING SQUEEZE LARGE MULTIPLE -1D919 ; [*19BC.0020.0002] # SIGNWRITING SQUEEZE SMALL MULTIPLE -1D91A ; [*19BD.0020.0002] # SIGNWRITING SQUEEZE SEQUENTIAL -1D91B ; [*19BE.0020.0002] # SIGNWRITING FLICK LARGE SINGLE -1D91C ; [*19BF.0020.0002] # SIGNWRITING FLICK SMALL SINGLE -1D91D ; [*19C0.0020.0002] # SIGNWRITING FLICK LARGE MULTIPLE -1D91E ; [*19C1.0020.0002] # SIGNWRITING FLICK SMALL MULTIPLE -1D91F ; [*19C2.0020.0002] # SIGNWRITING FLICK SEQUENTIAL -1D920 ; [*19C3.0020.0002] # SIGNWRITING SQUEEZE FLICK ALTERNATING -1D921 ; [*19C4.0020.0002] # SIGNWRITING MOVEMENT-HINGE UP DOWN LARGE -1D922 ; [*19C5.0020.0002] # SIGNWRITING MOVEMENT-HINGE UP DOWN SMALL -1D923 ; [*19C6.0020.0002] # SIGNWRITING MOVEMENT-HINGE UP SEQUENTIAL -1D924 ; [*19C7.0020.0002] # SIGNWRITING MOVEMENT-HINGE DOWN SEQUENTIAL -1D925 ; [*19C8.0020.0002] # SIGNWRITING MOVEMENT-HINGE UP DOWN ALTERNATING LARGE -1D926 ; [*19C9.0020.0002] # SIGNWRITING MOVEMENT-HINGE UP DOWN ALTERNATING SMALL -1D927 ; [*19CA.0020.0002] # SIGNWRITING MOVEMENT-HINGE SIDE TO SIDE SCISSORS -1D928 ; [*19CB.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE FINGER CONTACT -1D929 ; [*19CC.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE FINGER CONTACT -1D92A ; [*19CD.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT SMALL -1D92B ; [*19CE.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT MEDIUM -1D92C ; [*19CF.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT LARGE -1D92D ; [*19D0.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT LARGEST -1D92E ; [*19D1.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SINGLE WRIST FLEX -1D92F ; [*19D2.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE DOUBLE STRAIGHT -1D930 ; [*19D3.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE DOUBLE WRIST FLEX -1D931 ; [*19D4.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE DOUBLE ALTERNATING -1D932 ; [*19D5.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE DOUBLE ALTERNATING WRIST FLEX -1D933 ; [*19D6.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CROSS -1D934 ; [*19D7.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE TRIPLE STRAIGHT MOVEMENT -1D935 ; [*19D8.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE TRIPLE WRIST FLEX -1D936 ; [*19D9.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE TRIPLE ALTERNATING -1D937 ; [*19DA.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE TRIPLE ALTERNATING WRIST FLEX -1D938 ; [*19DB.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BEND SMALL -1D939 ; [*19DC.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BEND MEDIUM -1D93A ; [*19DD.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BEND LARGE -1D93B ; [*19DE.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CORNER SMALL -1D93C ; [*19DF.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CORNER MEDIUM -1D93D ; [*19E0.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CORNER LARGE -1D93E ; [*19E1.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CORNER ROTATION -1D93F ; [*19E2.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CHECK SMALL -1D940 ; [*19E3.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CHECK MEDIUM -1D941 ; [*19E4.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CHECK LARGE -1D942 ; [*19E5.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BOX SMALL -1D943 ; [*19E6.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BOX MEDIUM -1D944 ; [*19E7.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BOX LARGE -1D945 ; [*19E8.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG SMALL -1D946 ; [*19E9.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG MEDIUM -1D947 ; [*19EA.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG LARGE -1D948 ; [*19EB.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE PEAKS SMALL -1D949 ; [*19EC.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE PEAKS MEDIUM -1D94A ; [*19ED.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE PEAKS LARGE -1D94B ; [*19EE.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE SINGLE -1D94C ; [*19EF.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE DOUBLE -1D94D ; [*19F0.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE ALTERNATING -1D94E ; [*19F1.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE SINGLE -1D94F ; [*19F2.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE DOUBLE -1D950 ; [*19F3.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE ALTERNATING -1D951 ; [*19F4.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE SHAKING -1D952 ; [*19F5.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL SINGLE -1D953 ; [*19F6.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL DOUBLE -1D954 ; [*19F7.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL TRIPLE -1D955 ; [*19F8.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL AWAY SMALL -1D956 ; [*19F9.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL AWAY MEDIUM -1D957 ; [*19FA.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL AWAY LARGE -1D958 ; [*19FB.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL AWAY LARGEST -1D959 ; [*19FC.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL TOWARDS SMALL -1D95A ; [*19FD.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL TOWARDS MEDIUM -1D95B ; [*19FE.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL TOWARDS LARGE -1D95C ; [*19FF.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL TOWARDS LARGEST -1D95D ; [*1A00.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY SMALL -1D95E ; [*1A01.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY MEDIUM -1D95F ; [*1A02.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY LARGE -1D960 ; [*1A03.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY LARGEST -1D961 ; [*1A04.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS SMALL -1D962 ; [*1A05.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS MEDIUM -1D963 ; [*1A06.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGE -1D964 ; [*1A07.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGEST -1D965 ; [*1A08.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT SMALL -1D966 ; [*1A09.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT MEDIUM -1D967 ; [*1A0A.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGE -1D968 ; [*1A0B.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGEST -1D969 ; [*1A0C.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SINGLE WRIST FLEX -1D96A ; [*1A0D.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE STRAIGHT -1D96B ; [*1A0E.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE WRIST FLEX -1D96C ; [*1A0F.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE ALTERNATING -1D96D ; [*1A10.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE ALTERNATING WRIST FLEX -1D96E ; [*1A11.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CROSS -1D96F ; [*1A12.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE STRAIGHT MOVEMENT -1D970 ; [*1A13.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE WRIST FLEX -1D971 ; [*1A14.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING MOVEMENT -1D972 ; [*1A15.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING WRIST FLEX -1D973 ; [*1A16.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE BEND -1D974 ; [*1A17.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CORNER SMALL -1D975 ; [*1A18.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CORNER MEDIUM -1D976 ; [*1A19.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CORNER LARGE -1D977 ; [*1A1A.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CHECK -1D978 ; [*1A1B.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE BOX SMALL -1D979 ; [*1A1C.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE BOX MEDIUM -1D97A ; [*1A1D.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE BOX LARGE -1D97B ; [*1A1E.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG SMALL -1D97C ; [*1A1F.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG MEDIUM -1D97D ; [*1A20.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG LARGE -1D97E ; [*1A21.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE PEAKS SMALL -1D97F ; [*1A22.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE PEAKS MEDIUM -1D980 ; [*1A23.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE PEAKS LARGE -1D981 ; [*1A24.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE SINGLE -1D982 ; [*1A25.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE DOUBLE -1D983 ; [*1A26.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE ALTERNATING -1D984 ; [*1A27.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE SINGLE -1D985 ; [*1A28.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE DOUBLE -1D986 ; [*1A29.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE ALTERNATING -1D987 ; [*1A2A.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE SHAKING -1D988 ; [*1A2B.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER SMALL -1D989 ; [*1A2C.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER MEDIUM -1D98A ; [*1A2D.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER LARGE -1D98B ; [*1A2E.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER LARGEST -1D98C ; [*1A2F.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE SMALL -1D98D ; [*1A30.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE MEDIUM -1D98E ; [*1A31.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE LARGE -1D98F ; [*1A32.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE LARGEST -1D990 ; [*1A33.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CIRCLE SMALL -1D991 ; [*1A34.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CIRCLE MEDIUM -1D992 ; [*1A35.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE HUMP SMALL -1D993 ; [*1A36.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE HUMP MEDIUM -1D994 ; [*1A37.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE HUMP LARGE -1D995 ; [*1A38.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP SMALL -1D996 ; [*1A39.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP MEDIUM -1D997 ; [*1A3A.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP LARGE -1D998 ; [*1A3B.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP SMALL DOUBLE -1D999 ; [*1A3C.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE SMALL -1D99A ; [*1A3D.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE MEDIUM -1D99B ; [*1A3E.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE LARGE -1D99C ; [*1A3F.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE SMALL -1D99D ; [*1A40.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE MEDIUM -1D99E ; [*1A41.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE LARGE -1D99F ; [*1A42.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE THEN STRAIGHT -1D9A0 ; [*1A43.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS SMALL -1D9A1 ; [*1A44.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS MEDIUM -1D9A2 ; [*1A45.0020.0002] # SIGNWRITING ROTATION-WALLPLANE SINGLE -1D9A3 ; [*1A46.0020.0002] # SIGNWRITING ROTATION-WALLPLANE DOUBLE -1D9A4 ; [*1A47.0020.0002] # SIGNWRITING ROTATION-WALLPLANE ALTERNATE -1D9A5 ; [*1A48.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SHAKING -1D9A6 ; [*1A49.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HITTING FRONT WALL -1D9A7 ; [*1A4A.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE HUMP HITTING FRONT WALL -1D9A8 ; [*1A4B.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP HITTING FRONT WALL -1D9A9 ; [*1A4C.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING FRONT WALL -1D9AA ; [*1A4D.0020.0002] # SIGNWRITING ROTATION-WALLPLANE SINGLE HITTING FRONT WALL -1D9AB ; [*1A4E.0020.0002] # SIGNWRITING ROTATION-WALLPLANE DOUBLE HITTING FRONT WALL -1D9AC ; [*1A4F.0020.0002] # SIGNWRITING ROTATION-WALLPLANE ALTERNATING HITTING FRONT WALL -1D9AD ; [*1A50.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HITTING CHEST -1D9AE ; [*1A51.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE HUMP HITTING CHEST -1D9AF ; [*1A52.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP HITTING CHEST -1D9B0 ; [*1A53.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING CHEST -1D9B1 ; [*1A54.0020.0002] # SIGNWRITING ROTATION-WALLPLANE SINGLE HITTING CHEST -1D9B2 ; [*1A55.0020.0002] # SIGNWRITING ROTATION-WALLPLANE DOUBLE HITTING CHEST -1D9B3 ; [*1A56.0020.0002] # SIGNWRITING ROTATION-WALLPLANE ALTERNATING HITTING CHEST -1D9B4 ; [*1A57.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH SMALL -1D9B5 ; [*1A58.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH MEDIUM -1D9B6 ; [*1A59.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH LARGE -1D9B7 ; [*1A5A.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING CEILING SMALL -1D9B8 ; [*1A5B.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING CEILING LARGE -1D9B9 ; [*1A5C.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL DOUBLE -1D9BA ; [*1A5D.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE DOUBLE -1D9BB ; [*1A5E.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL TRIPLE -1D9BC ; [*1A5F.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE TRIPLE -1D9BD ; [*1A60.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING SMALL SINGLE -1D9BE ; [*1A61.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING LARGE SINGLE -1D9BF ; [*1A62.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING SMALL DOUBLE -1D9C0 ; [*1A63.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING LARGE DOUBLE -1D9C1 ; [*1A64.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING CEILING SMALL -1D9C2 ; [*1A65.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING CEILING LARGE -1D9C3 ; [*1A66.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE SINGLE HITTING CEILING -1D9C4 ; [*1A67.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE DOUBLE HITTING CEILING -1D9C5 ; [*1A68.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE ALTERNATING HITTING CEILING -1D9C6 ; [*1A69.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR SMALL -1D9C7 ; [*1A6A.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR LARGE -1D9C8 ; [*1A6B.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR SMALL DOUBLE -1D9C9 ; [*1A6C.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR LARGE DOUBLE -1D9CA ; [*1A6D.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR TRIPLE SMALL TRIPLE -1D9CB ; [*1A6E.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR TRIPLE LARGE TRIPLE -1D9CC ; [*1A6F.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR SMALL SINGLE -1D9CD ; [*1A70.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR LARGE SINGLE -1D9CE ; [*1A71.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR SMALL DOUBLE -1D9CF ; [*1A72.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR LARGE DOUBLE -1D9D0 ; [*1A73.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING FLOOR SMALL -1D9D1 ; [*1A74.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING FLOOR LARGE -1D9D2 ; [*1A75.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE SINGLE HITTING FLOOR -1D9D3 ; [*1A76.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE DOUBLE HITTING FLOOR -1D9D4 ; [*1A77.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE ALTERNATING HITTING FLOOR -1D9D5 ; [*1A78.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE SMALL -1D9D6 ; [*1A79.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE MEDIUM -1D9D7 ; [*1A7A.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE LARGE -1D9D8 ; [*1A7B.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE LARGEST -1D9D9 ; [*1A7C.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE COMBINED -1D9DA ; [*1A7D.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP SMALL -1D9DB ; [*1A7E.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP SMALL -1D9DC ; [*1A7F.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE SNAKE -1D9DD ; [*1A80.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE SMALL -1D9DE ; [*1A81.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE LARGE -1D9DF ; [*1A82.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE SINGLE -1D9E0 ; [*1A83.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE DOUBLE -1D9E1 ; [*1A84.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE ALTERNATING -1D9E2 ; [*1A85.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SHAKING PARALLEL -1D9E3 ; [*1A86.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE SMALL SINGLE -1D9E4 ; [*1A87.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE MEDIUM SINGLE -1D9E5 ; [*1A88.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE SMALL DOUBLE -1D9E6 ; [*1A89.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE MEDIUM DOUBLE -1D9E7 ; [*1A8A.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SMALL SINGLE -1D9E8 ; [*1A8B.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM SINGLE -1D9E9 ; [*1A8C.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE SINGLE -1D9EA ; [*1A8D.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SMALL DOUBLE -1D9EB ; [*1A8E.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM DOUBLE -1D9EC ; [*1A8F.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE DOUBLE -1D9ED ; [*1A90.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WRIST CIRCLE FRONT SINGLE -1D9EE ; [*1A91.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WRIST CIRCLE FRONT DOUBLE -1D9EF ; [*1A92.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WRIST CIRCLE HITTING WALL SINGLE -1D9F0 ; [*1A93.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WRIST CIRCLE HITTING WALL DOUBLE -1D9F1 ; [*1A94.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE FINGER CIRCLES SINGLE -1D9F2 ; [*1A95.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE FINGER CIRCLES DOUBLE -1D9F3 ; [*1A96.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE FINGER CIRCLES HITTING WALL SINGLE -1D9F4 ; [*1A97.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE FINGER CIRCLES HITTING WALL DOUBLE -1D9F5 ; [*1A98.0020.0002] # SIGNWRITING DYNAMIC ARROWHEAD SMALL -1D9F6 ; [*1A99.0020.0002] # SIGNWRITING DYNAMIC ARROWHEAD LARGE -1D9F7 ; [*1A9A.0020.0002] # SIGNWRITING DYNAMIC FAST -1D9F8 ; [*1A9B.0020.0002] # SIGNWRITING DYNAMIC SLOW -1D9F9 ; [*1A9C.0020.0002] # SIGNWRITING DYNAMIC TENSE -1D9FA ; [*1A9D.0020.0002] # SIGNWRITING DYNAMIC RELAXED -1D9FB ; [*1A9E.0020.0002] # SIGNWRITING DYNAMIC SIMULTANEOUS -1D9FC ; [*1A9F.0020.0002] # SIGNWRITING DYNAMIC SIMULTANEOUS ALTERNATING -1D9FD ; [*1AA0.0020.0002] # SIGNWRITING DYNAMIC EVERY OTHER TIME -1D9FE ; [*1AA1.0020.0002] # SIGNWRITING DYNAMIC GRADUAL -1D9FF ; [*1AA2.0020.0002] # SIGNWRITING HEAD +1D245 ; [*1313.0020.0002] # GREEK MUSICAL LEIMMA +1D2EA ; [*1E92.0020.0002] # MAYAN NUMERAL TEN +1D2EB ; [*1E93.0020.0002] # MAYAN NUMERAL ELEVEN +1D2EC ; [*1E94.0020.0002] # MAYAN NUMERAL TWELVE +1D2ED ; [*1E95.0020.0002] # MAYAN NUMERAL THIRTEEN +1D2EE ; [*1E96.0020.0002] # MAYAN NUMERAL FOURTEEN +1D2EF ; [*1E97.0020.0002] # MAYAN NUMERAL FIFTEEN +1D2F0 ; [*1E98.0020.0002] # MAYAN NUMERAL SIXTEEN +1D2F1 ; [*1E99.0020.0002] # MAYAN NUMERAL SEVENTEEN +1D2F2 ; [*1E9A.0020.0002] # MAYAN NUMERAL EIGHTEEN +1D2F3 ; [*1E9B.0020.0002] # MAYAN NUMERAL NINETEEN +1D300 ; [*1036.0020.0002] # MONOGRAM FOR EARTH +1D301 ; [*1037.0020.0002] # DIGRAM FOR HEAVENLY EARTH +1D302 ; [*1038.0020.0002] # DIGRAM FOR HUMAN EARTH +1D303 ; [*1039.0020.0002] # DIGRAM FOR EARTHLY HEAVEN +1D304 ; [*103A.0020.0002] # DIGRAM FOR EARTHLY HUMAN +1D305 ; [*103B.0020.0002] # DIGRAM FOR EARTH +1D306 ; [*103C.0020.0002] # TETRAGRAM FOR CENTRE +1D307 ; [*103D.0020.0002] # TETRAGRAM FOR FULL CIRCLE +1D308 ; [*103E.0020.0002] # TETRAGRAM FOR MIRED +1D309 ; [*103F.0020.0002] # TETRAGRAM FOR BARRIER +1D30A ; [*1040.0020.0002] # TETRAGRAM FOR KEEPING SMALL +1D30B ; [*1041.0020.0002] # TETRAGRAM FOR CONTRARIETY +1D30C ; [*1042.0020.0002] # TETRAGRAM FOR ASCENT +1D30D ; [*1043.0020.0002] # TETRAGRAM FOR OPPOSITION +1D30E ; [*1044.0020.0002] # TETRAGRAM FOR BRANCHING OUT +1D30F ; [*1045.0020.0002] # TETRAGRAM FOR DEFECTIVENESS OR DISTORTION +1D310 ; [*1046.0020.0002] # TETRAGRAM FOR DIVERGENCE +1D311 ; [*1047.0020.0002] # TETRAGRAM FOR YOUTHFULNESS +1D312 ; [*1048.0020.0002] # TETRAGRAM FOR INCREASE +1D313 ; [*1049.0020.0002] # TETRAGRAM FOR PENETRATION +1D314 ; [*104A.0020.0002] # TETRAGRAM FOR REACH +1D315 ; [*104B.0020.0002] # TETRAGRAM FOR CONTACT +1D316 ; [*104C.0020.0002] # TETRAGRAM FOR HOLDING BACK +1D317 ; [*104D.0020.0002] # TETRAGRAM FOR WAITING +1D318 ; [*104E.0020.0002] # TETRAGRAM FOR FOLLOWING +1D319 ; [*104F.0020.0002] # TETRAGRAM FOR ADVANCE +1D31A ; [*1050.0020.0002] # TETRAGRAM FOR RELEASE +1D31B ; [*1051.0020.0002] # TETRAGRAM FOR RESISTANCE +1D31C ; [*1052.0020.0002] # TETRAGRAM FOR EASE +1D31D ; [*1053.0020.0002] # TETRAGRAM FOR JOY +1D31E ; [*1054.0020.0002] # TETRAGRAM FOR CONTENTION +1D31F ; [*1055.0020.0002] # TETRAGRAM FOR ENDEAVOUR +1D320 ; [*1056.0020.0002] # TETRAGRAM FOR DUTIES +1D321 ; [*1057.0020.0002] # TETRAGRAM FOR CHANGE +1D322 ; [*1058.0020.0002] # TETRAGRAM FOR DECISIVENESS +1D323 ; [*1059.0020.0002] # TETRAGRAM FOR BOLD RESOLUTION +1D324 ; [*105A.0020.0002] # TETRAGRAM FOR PACKING +1D325 ; [*105B.0020.0002] # TETRAGRAM FOR LEGION +1D326 ; [*105C.0020.0002] # TETRAGRAM FOR CLOSENESS +1D327 ; [*105D.0020.0002] # TETRAGRAM FOR KINSHIP +1D328 ; [*105E.0020.0002] # TETRAGRAM FOR GATHERING +1D329 ; [*105F.0020.0002] # TETRAGRAM FOR STRENGTH +1D32A ; [*1060.0020.0002] # TETRAGRAM FOR PURITY +1D32B ; [*1061.0020.0002] # TETRAGRAM FOR FULLNESS +1D32C ; [*1062.0020.0002] # TETRAGRAM FOR RESIDENCE +1D32D ; [*1063.0020.0002] # TETRAGRAM FOR LAW OR MODEL +1D32E ; [*1064.0020.0002] # TETRAGRAM FOR RESPONSE +1D32F ; [*1065.0020.0002] # TETRAGRAM FOR GOING TO MEET +1D330 ; [*1066.0020.0002] # TETRAGRAM FOR ENCOUNTERS +1D331 ; [*1067.0020.0002] # TETRAGRAM FOR STOVE +1D332 ; [*1068.0020.0002] # TETRAGRAM FOR GREATNESS +1D333 ; [*1069.0020.0002] # TETRAGRAM FOR ENLARGEMENT +1D334 ; [*106A.0020.0002] # TETRAGRAM FOR PATTERN +1D335 ; [*106B.0020.0002] # TETRAGRAM FOR RITUAL +1D336 ; [*106C.0020.0002] # TETRAGRAM FOR FLIGHT +1D337 ; [*106D.0020.0002] # TETRAGRAM FOR VASTNESS OR WASTING +1D338 ; [*106E.0020.0002] # TETRAGRAM FOR CONSTANCY +1D339 ; [*106F.0020.0002] # TETRAGRAM FOR MEASURE +1D33A ; [*1070.0020.0002] # TETRAGRAM FOR ETERNITY +1D33B ; [*1071.0020.0002] # TETRAGRAM FOR UNITY +1D33C ; [*1072.0020.0002] # TETRAGRAM FOR DIMINISHMENT +1D33D ; [*1073.0020.0002] # TETRAGRAM FOR CLOSED MOUTH +1D33E ; [*1074.0020.0002] # TETRAGRAM FOR GUARDEDNESS +1D33F ; [*1075.0020.0002] # TETRAGRAM FOR GATHERING IN +1D340 ; [*1076.0020.0002] # TETRAGRAM FOR MASSING +1D341 ; [*1077.0020.0002] # TETRAGRAM FOR ACCUMULATION +1D342 ; [*1078.0020.0002] # TETRAGRAM FOR EMBELLISHMENT +1D343 ; [*1079.0020.0002] # TETRAGRAM FOR DOUBT +1D344 ; [*107A.0020.0002] # TETRAGRAM FOR WATCH +1D345 ; [*107B.0020.0002] # TETRAGRAM FOR SINKING +1D346 ; [*107C.0020.0002] # TETRAGRAM FOR INNER +1D347 ; [*107D.0020.0002] # TETRAGRAM FOR DEPARTURE +1D348 ; [*107E.0020.0002] # TETRAGRAM FOR DARKENING +1D349 ; [*107F.0020.0002] # TETRAGRAM FOR DIMMING +1D34A ; [*1080.0020.0002] # TETRAGRAM FOR EXHAUSTION +1D34B ; [*1081.0020.0002] # TETRAGRAM FOR SEVERANCE +1D34C ; [*1082.0020.0002] # TETRAGRAM FOR STOPPAGE +1D34D ; [*1083.0020.0002] # TETRAGRAM FOR HARDNESS +1D34E ; [*1084.0020.0002] # TETRAGRAM FOR COMPLETION +1D34F ; [*1085.0020.0002] # TETRAGRAM FOR CLOSURE +1D350 ; [*1086.0020.0002] # TETRAGRAM FOR FAILURE +1D351 ; [*1087.0020.0002] # TETRAGRAM FOR AGGRAVATION +1D352 ; [*1088.0020.0002] # TETRAGRAM FOR COMPLIANCE +1D353 ; [*1089.0020.0002] # TETRAGRAM FOR ON THE VERGE +1D354 ; [*108A.0020.0002] # TETRAGRAM FOR DIFFICULTIES +1D355 ; [*108B.0020.0002] # TETRAGRAM FOR LABOURING +1D356 ; [*108C.0020.0002] # TETRAGRAM FOR FOSTERING +1D369 ; [*1F3D.0020.0002] # COUNTING ROD TENS DIGIT ONE +1D36A ; [*1F3E.0020.0002] # COUNTING ROD TENS DIGIT TWO +1D36B ; [*1F3F.0020.0002] # COUNTING ROD TENS DIGIT THREE +1D36C ; [*1F40.0020.0002] # COUNTING ROD TENS DIGIT FOUR +1D36D ; [*1F41.0020.0002] # COUNTING ROD TENS DIGIT FIVE +1D36E ; [*1F42.0020.0002] # COUNTING ROD TENS DIGIT SIX +1D36F ; [*1F43.0020.0002] # COUNTING ROD TENS DIGIT SEVEN +1D370 ; [*1F44.0020.0002] # COUNTING ROD TENS DIGIT EIGHT +1D371 ; [*1F45.0020.0002] # COUNTING ROD TENS DIGIT NINE +1D6C1 ; [*065C.0020.0005] # MATHEMATICAL BOLD NABLA +1D6DB ; [*0658.0020.0005] # MATHEMATICAL BOLD PARTIAL DIFFERENTIAL +1D6FB ; [*065C.0020.0005] # MATHEMATICAL ITALIC NABLA +1D715 ; [*0658.0020.0005] # MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL +1D735 ; [*065C.0020.0005] # MATHEMATICAL BOLD ITALIC NABLA +1D74F ; [*0658.0020.0005] # MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL +1D76F ; [*065C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD NABLA +1D789 ; [*0658.0020.0005] # MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL +1D7A9 ; [*065C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA +1D7C3 ; [*0658.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL +1D800 ; [*1AFF.0020.0002] # SIGNWRITING HAND-FIST INDEX +1D801 ; [*1B00.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX +1D802 ; [*1B01.0020.0002] # SIGNWRITING HAND-CUP INDEX +1D803 ; [*1B02.0020.0002] # SIGNWRITING HAND-OVAL INDEX +1D804 ; [*1B03.0020.0002] # SIGNWRITING HAND-HINGE INDEX +1D805 ; [*1B04.0020.0002] # SIGNWRITING HAND-ANGLE INDEX +1D806 ; [*1B05.0020.0002] # SIGNWRITING HAND-FIST INDEX BENT +1D807 ; [*1B06.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX BENT +1D808 ; [*1B07.0020.0002] # SIGNWRITING HAND-FIST THUMB UNDER INDEX BENT +1D809 ; [*1B08.0020.0002] # SIGNWRITING HAND-FIST INDEX RAISED KNUCKLE +1D80A ; [*1B09.0020.0002] # SIGNWRITING HAND-FIST INDEX CUPPED +1D80B ; [*1B0A.0020.0002] # SIGNWRITING HAND-FIST INDEX HINGED +1D80C ; [*1B0B.0020.0002] # SIGNWRITING HAND-FIST INDEX HINGED LOW +1D80D ; [*1B0C.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX HINGE +1D80E ; [*1B0D.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE +1D80F ; [*1B0E.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE +1D810 ; [*1B0F.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE BENT +1D811 ; [*1B10.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE RAISED KNUCKLES +1D812 ; [*1B11.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE HINGED +1D813 ; [*1B12.0020.0002] # SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED +1D814 ; [*1B13.0020.0002] # SIGNWRITING HAND-FIST INDEX HINGED MIDDLE UP +1D815 ; [*1B14.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED +1D816 ; [*1B15.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED INDEX BENT +1D817 ; [*1B16.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED MIDDLE BENT +1D818 ; [*1B17.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED CUPPED +1D819 ; [*1B18.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGED +1D81A ; [*1B19.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CROSSED +1D81B ; [*1B1A.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE CROSSED +1D81C ; [*1B1B.0020.0002] # SIGNWRITING HAND-FIST MIDDLE BENT OVER INDEX +1D81D ; [*1B1C.0020.0002] # SIGNWRITING HAND-FIST INDEX BENT OVER MIDDLE +1D81E ; [*1B1D.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB +1D81F ; [*1B1E.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE THUMB +1D820 ; [*1B1F.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE STRAIGHT THUMB BENT +1D821 ; [*1B20.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE BENT THUMB STRAIGHT +1D822 ; [*1B21.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB BENT +1D823 ; [*1B22.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE HINGED SPREAD THUMB SIDE +1D824 ; [*1B23.0020.0002] # SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED THUMB SIDE +1D825 ; [*1B24.0020.0002] # SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED THUMB CONJOINED +1D826 ; [*1B25.0020.0002] # SIGNWRITING HAND-FIST INDEX HINGED MIDDLE UP THUMB SIDE +1D827 ; [*1B26.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE UP SPREAD THUMB FORWARD +1D828 ; [*1B27.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CUPPED +1D829 ; [*1B28.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CIRCLED +1D82A ; [*1B29.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB HOOKED +1D82B ; [*1B2A.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB HINGED +1D82C ; [*1B2B.0020.0002] # SIGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLE STRAIGHT +1D82D ; [*1B2C.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE +1D82E ; [*1B2D.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE CONJOINED +1D82F ; [*1B2E.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE BENT +1D830 ; [*1B2F.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB HOOKED INDEX UP +1D831 ; [*1B30.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB HOOKED MIDDLE UP +1D832 ; [*1B31.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGED THUMB SIDE +1D833 ; [*1B32.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CROSSED THUMB SIDE +1D834 ; [*1B33.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB FORWARD +1D835 ; [*1B34.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED CUPPED THUMB FORWARD +1D836 ; [*1B35.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB CUPPED INDEX UP +1D837 ; [*1B36.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CUPPED MIDDLE UP +1D838 ; [*1B37.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB CIRCLED INDEX UP +1D839 ; [*1B38.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB CIRCLED INDEX HINGED +1D83A ; [*1B39.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB ANGLED OUT MIDDLE UP +1D83B ; [*1B3A.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB ANGLED IN MIDDLE UP +1D83C ; [*1B3B.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CIRCLED MIDDLE UP +1D83D ; [*1B3C.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CONJOINED HINGED +1D83E ; [*1B3D.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB ANGLED OUT +1D83F ; [*1B3E.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB ANGLED +1D840 ; [*1B3F.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED OUT INDEX UP +1D841 ; [*1B40.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED OUT INDEX CROSSED +1D842 ; [*1B41.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED INDEX UP +1D843 ; [*1B42.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB HOOKED MIDDLE HINGED +1D844 ; [*1B43.0020.0002] # SIGNWRITING HAND-FLAT FOUR FINGERS +1D845 ; [*1B44.0020.0002] # SIGNWRITING HAND-FLAT FOUR FINGERS BENT +1D846 ; [*1B45.0020.0002] # SIGNWRITING HAND-FLAT FOUR FINGERS HINGED +1D847 ; [*1B46.0020.0002] # SIGNWRITING HAND-FLAT FOUR FINGERS CONJOINED +1D848 ; [*1B47.0020.0002] # SIGNWRITING HAND-FLAT FOUR FINGERS CONJOINED SPLIT +1D849 ; [*1B48.0020.0002] # SIGNWRITING HAND-CLAW FOUR FINGERS CONJOINED +1D84A ; [*1B49.0020.0002] # SIGNWRITING HAND-FIST FOUR FINGERS CONJOINED BENT +1D84B ; [*1B4A.0020.0002] # SIGNWRITING HAND-HINGE FOUR FINGERS CONJOINED +1D84C ; [*1B4B.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD +1D84D ; [*1B4C.0020.0002] # SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD +1D84E ; [*1B4D.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD FOUR BENT +1D84F ; [*1B4E.0020.0002] # SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD FOUR BENT +1D850 ; [*1B4F.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD BENT +1D851 ; [*1B50.0020.0002] # SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD BENT +1D852 ; [*1B51.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD THUMB FORWARD +1D853 ; [*1B52.0020.0002] # SIGNWRITING HAND-CUP FIVE FINGERS SPREAD +1D854 ; [*1B53.0020.0002] # SIGNWRITING HAND-CUP FIVE FINGERS SPREAD OPEN +1D855 ; [*1B54.0020.0002] # SIGNWRITING HAND-HINGE FIVE FINGERS SPREAD OPEN +1D856 ; [*1B55.0020.0002] # SIGNWRITING HAND-OVAL FIVE FINGERS SPREAD +1D857 ; [*1B56.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED +1D858 ; [*1B57.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED THUMB SIDE +1D859 ; [*1B58.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED NO THUMB +1D85A ; [*1B59.0020.0002] # SIGNWRITING HAND-FLAT +1D85B ; [*1B5A.0020.0002] # SIGNWRITING HAND-FLAT BETWEEN PALM FACINGS +1D85C ; [*1B5B.0020.0002] # SIGNWRITING HAND-FLAT HEEL +1D85D ; [*1B5C.0020.0002] # SIGNWRITING HAND-FLAT THUMB SIDE +1D85E ; [*1B5D.0020.0002] # SIGNWRITING HAND-FLAT HEEL THUMB SIDE +1D85F ; [*1B5E.0020.0002] # SIGNWRITING HAND-FLAT THUMB BENT +1D860 ; [*1B5F.0020.0002] # SIGNWRITING HAND-FLAT THUMB FORWARD +1D861 ; [*1B60.0020.0002] # SIGNWRITING HAND-FLAT SPLIT INDEX THUMB SIDE +1D862 ; [*1B61.0020.0002] # SIGNWRITING HAND-FLAT SPLIT CENTRE +1D863 ; [*1B62.0020.0002] # SIGNWRITING HAND-FLAT SPLIT CENTRE THUMB SIDE +1D864 ; [*1B63.0020.0002] # SIGNWRITING HAND-FLAT SPLIT CENTRE THUMB SIDE BENT +1D865 ; [*1B64.0020.0002] # SIGNWRITING HAND-FLAT SPLIT LITTLE +1D866 ; [*1B65.0020.0002] # SIGNWRITING HAND-CLAW +1D867 ; [*1B66.0020.0002] # SIGNWRITING HAND-CLAW THUMB SIDE +1D868 ; [*1B67.0020.0002] # SIGNWRITING HAND-CLAW NO THUMB +1D869 ; [*1B68.0020.0002] # SIGNWRITING HAND-CLAW THUMB FORWARD +1D86A ; [*1B69.0020.0002] # SIGNWRITING HAND-HOOK CURLICUE +1D86B ; [*1B6A.0020.0002] # SIGNWRITING HAND-HOOK +1D86C ; [*1B6B.0020.0002] # SIGNWRITING HAND-CUP OPEN +1D86D ; [*1B6C.0020.0002] # SIGNWRITING HAND-CUP +1D86E ; [*1B6D.0020.0002] # SIGNWRITING HAND-CUP OPEN THUMB SIDE +1D86F ; [*1B6E.0020.0002] # SIGNWRITING HAND-CUP THUMB SIDE +1D870 ; [*1B6F.0020.0002] # SIGNWRITING HAND-CUP OPEN NO THUMB +1D871 ; [*1B70.0020.0002] # SIGNWRITING HAND-CUP NO THUMB +1D872 ; [*1B71.0020.0002] # SIGNWRITING HAND-CUP OPEN THUMB FORWARD +1D873 ; [*1B72.0020.0002] # SIGNWRITING HAND-CUP THUMB FORWARD +1D874 ; [*1B73.0020.0002] # SIGNWRITING HAND-CURLICUE OPEN +1D875 ; [*1B74.0020.0002] # SIGNWRITING HAND-CURLICUE +1D876 ; [*1B75.0020.0002] # SIGNWRITING HAND-CIRCLE +1D877 ; [*1B76.0020.0002] # SIGNWRITING HAND-OVAL +1D878 ; [*1B77.0020.0002] # SIGNWRITING HAND-OVAL THUMB SIDE +1D879 ; [*1B78.0020.0002] # SIGNWRITING HAND-OVAL NO THUMB +1D87A ; [*1B79.0020.0002] # SIGNWRITING HAND-OVAL THUMB FORWARD +1D87B ; [*1B7A.0020.0002] # SIGNWRITING HAND-HINGE OPEN +1D87C ; [*1B7B.0020.0002] # SIGNWRITING HAND-HINGE OPEN THUMB FORWARD +1D87D ; [*1B7C.0020.0002] # SIGNWRITING HAND-HINGE +1D87E ; [*1B7D.0020.0002] # SIGNWRITING HAND-HINGE SMALL +1D87F ; [*1B7E.0020.0002] # SIGNWRITING HAND-HINGE OPEN THUMB SIDE +1D880 ; [*1B7F.0020.0002] # SIGNWRITING HAND-HINGE THUMB SIDE +1D881 ; [*1B80.0020.0002] # SIGNWRITING HAND-HINGE OPEN NO THUMB +1D882 ; [*1B81.0020.0002] # SIGNWRITING HAND-HINGE NO THUMB +1D883 ; [*1B82.0020.0002] # SIGNWRITING HAND-HINGE THUMB SIDE TOUCHING INDEX +1D884 ; [*1B83.0020.0002] # SIGNWRITING HAND-HINGE THUMB BETWEEN MIDDLE RING +1D885 ; [*1B84.0020.0002] # SIGNWRITING HAND-ANGLE +1D886 ; [*1B85.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE RING +1D887 ; [*1B86.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE RING +1D888 ; [*1B87.0020.0002] # SIGNWRITING HAND-HINGE INDEX MIDDLE RING +1D889 ; [*1B88.0020.0002] # SIGNWRITING HAND-ANGLE INDEX MIDDLE RING +1D88A ; [*1B89.0020.0002] # SIGNWRITING HAND-HINGE LITTLE +1D88B ; [*1B8A.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE RING BENT +1D88C ; [*1B8B.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE RING CONJOINED +1D88D ; [*1B8C.0020.0002] # SIGNWRITING HAND-HINGE INDEX MIDDLE RING CONJOINED +1D88E ; [*1B8D.0020.0002] # SIGNWRITING HAND-FIST LITTLE DOWN +1D88F ; [*1B8E.0020.0002] # SIGNWRITING HAND-FIST LITTLE DOWN RIPPLE STRAIGHT +1D890 ; [*1B8F.0020.0002] # SIGNWRITING HAND-FIST LITTLE DOWN RIPPLE CURVED +1D891 ; [*1B90.0020.0002] # SIGNWRITING HAND-FIST LITTLE DOWN OTHERS CIRCLED +1D892 ; [*1B91.0020.0002] # SIGNWRITING HAND-FIST LITTLE UP +1D893 ; [*1B92.0020.0002] # SIGNWRITING HAND-FIST THUMB UNDER LITTLE UP +1D894 ; [*1B93.0020.0002] # SIGNWRITING HAND-CIRCLE LITTLE UP +1D895 ; [*1B94.0020.0002] # SIGNWRITING HAND-OVAL LITTLE UP +1D896 ; [*1B95.0020.0002] # SIGNWRITING HAND-ANGLE LITTLE UP +1D897 ; [*1B96.0020.0002] # SIGNWRITING HAND-FIST LITTLE RAISED KNUCKLE +1D898 ; [*1B97.0020.0002] # SIGNWRITING HAND-FIST LITTLE BENT +1D899 ; [*1B98.0020.0002] # SIGNWRITING HAND-FIST LITTLE TOUCHES THUMB +1D89A ; [*1B99.0020.0002] # SIGNWRITING HAND-FIST LITTLE THUMB +1D89B ; [*1B9A.0020.0002] # SIGNWRITING HAND-HINGE LITTLE THUMB +1D89C ; [*1B9B.0020.0002] # SIGNWRITING HAND-FIST LITTLE INDEX THUMB +1D89D ; [*1B9C.0020.0002] # SIGNWRITING HAND-HINGE LITTLE INDEX THUMB +1D89E ; [*1B9D.0020.0002] # SIGNWRITING HAND-ANGLE LITTLE INDEX THUMB INDEX THUMB OUT +1D89F ; [*1B9E.0020.0002] # SIGNWRITING HAND-ANGLE LITTLE INDEX THUMB INDEX THUMB +1D8A0 ; [*1B9F.0020.0002] # SIGNWRITING HAND-FIST LITTLE INDEX +1D8A1 ; [*1BA0.0020.0002] # SIGNWRITING HAND-CIRCLE LITTLE INDEX +1D8A2 ; [*1BA1.0020.0002] # SIGNWRITING HAND-HINGE LITTLE INDEX +1D8A3 ; [*1BA2.0020.0002] # SIGNWRITING HAND-ANGLE LITTLE INDEX +1D8A4 ; [*1BA3.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE LITTLE +1D8A5 ; [*1BA4.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE LITTLE +1D8A6 ; [*1BA5.0020.0002] # SIGNWRITING HAND-HINGE INDEX MIDDLE LITTLE +1D8A7 ; [*1BA6.0020.0002] # SIGNWRITING HAND-HINGE RING +1D8A8 ; [*1BA7.0020.0002] # SIGNWRITING HAND-ANGLE INDEX MIDDLE LITTLE +1D8A9 ; [*1BA8.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CROSS LITTLE +1D8AA ; [*1BA9.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE CROSS LITTLE +1D8AB ; [*1BAA.0020.0002] # SIGNWRITING HAND-FIST RING DOWN +1D8AC ; [*1BAB.0020.0002] # SIGNWRITING HAND-HINGE RING DOWN INDEX THUMB HOOK MIDDLE +1D8AD ; [*1BAC.0020.0002] # SIGNWRITING HAND-ANGLE RING DOWN MIDDLE THUMB INDEX CROSS +1D8AE ; [*1BAD.0020.0002] # SIGNWRITING HAND-FIST RING UP +1D8AF ; [*1BAE.0020.0002] # SIGNWRITING HAND-FIST RING RAISED KNUCKLE +1D8B0 ; [*1BAF.0020.0002] # SIGNWRITING HAND-FIST RING LITTLE +1D8B1 ; [*1BB0.0020.0002] # SIGNWRITING HAND-CIRCLE RING LITTLE +1D8B2 ; [*1BB1.0020.0002] # SIGNWRITING HAND-OVAL RING LITTLE +1D8B3 ; [*1BB2.0020.0002] # SIGNWRITING HAND-ANGLE RING LITTLE +1D8B4 ; [*1BB3.0020.0002] # SIGNWRITING HAND-FIST RING MIDDLE +1D8B5 ; [*1BB4.0020.0002] # SIGNWRITING HAND-FIST RING MIDDLE CONJOINED +1D8B6 ; [*1BB5.0020.0002] # SIGNWRITING HAND-FIST RING MIDDLE RAISED KNUCKLES +1D8B7 ; [*1BB6.0020.0002] # SIGNWRITING HAND-FIST RING INDEX +1D8B8 ; [*1BB7.0020.0002] # SIGNWRITING HAND-FIST RING THUMB +1D8B9 ; [*1BB8.0020.0002] # SIGNWRITING HAND-HOOK RING THUMB +1D8BA ; [*1BB9.0020.0002] # SIGNWRITING HAND-FIST INDEX RING LITTLE +1D8BB ; [*1BBA.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX RING LITTLE +1D8BC ; [*1BBB.0020.0002] # SIGNWRITING HAND-CURLICUE INDEX RING LITTLE ON +1D8BD ; [*1BBC.0020.0002] # SIGNWRITING HAND-HOOK INDEX RING LITTLE OUT +1D8BE ; [*1BBD.0020.0002] # SIGNWRITING HAND-HOOK INDEX RING LITTLE IN +1D8BF ; [*1BBE.0020.0002] # SIGNWRITING HAND-HOOK INDEX RING LITTLE UNDER +1D8C0 ; [*1BBF.0020.0002] # SIGNWRITING HAND-CUP INDEX RING LITTLE +1D8C1 ; [*1BC0.0020.0002] # SIGNWRITING HAND-HINGE INDEX RING LITTLE +1D8C2 ; [*1BC1.0020.0002] # SIGNWRITING HAND-ANGLE INDEX RING LITTLE OUT +1D8C3 ; [*1BC2.0020.0002] # SIGNWRITING HAND-ANGLE INDEX RING LITTLE +1D8C4 ; [*1BC3.0020.0002] # SIGNWRITING HAND-FIST MIDDLE DOWN +1D8C5 ; [*1BC4.0020.0002] # SIGNWRITING HAND-HINGE MIDDLE +1D8C6 ; [*1BC5.0020.0002] # SIGNWRITING HAND-FIST MIDDLE UP +1D8C7 ; [*1BC6.0020.0002] # SIGNWRITING HAND-CIRCLE MIDDLE UP +1D8C8 ; [*1BC7.0020.0002] # SIGNWRITING HAND-FIST MIDDLE RAISED KNUCKLE +1D8C9 ; [*1BC8.0020.0002] # SIGNWRITING HAND-FIST MIDDLE UP THUMB SIDE +1D8CA ; [*1BC9.0020.0002] # SIGNWRITING HAND-HOOK MIDDLE THUMB +1D8CB ; [*1BCA.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB LITTLE +1D8CC ; [*1BCB.0020.0002] # SIGNWRITING HAND-FIST MIDDLE LITTLE +1D8CD ; [*1BCC.0020.0002] # SIGNWRITING HAND-FIST MIDDLE RING LITTLE +1D8CE ; [*1BCD.0020.0002] # SIGNWRITING HAND-CIRCLE MIDDLE RING LITTLE +1D8CF ; [*1BCE.0020.0002] # SIGNWRITING HAND-CURLICUE MIDDLE RING LITTLE ON +1D8D0 ; [*1BCF.0020.0002] # SIGNWRITING HAND-CUP MIDDLE RING LITTLE +1D8D1 ; [*1BD0.0020.0002] # SIGNWRITING HAND-HINGE MIDDLE RING LITTLE +1D8D2 ; [*1BD1.0020.0002] # SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE OUT +1D8D3 ; [*1BD2.0020.0002] # SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE IN +1D8D4 ; [*1BD3.0020.0002] # SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE +1D8D5 ; [*1BD4.0020.0002] # SIGNWRITING HAND-CIRCLE MIDDLE RING LITTLE BENT +1D8D6 ; [*1BD5.0020.0002] # SIGNWRITING HAND-CLAW MIDDLE RING LITTLE CONJOINED +1D8D7 ; [*1BD6.0020.0002] # SIGNWRITING HAND-CLAW MIDDLE RING LITTLE CONJOINED SIDE +1D8D8 ; [*1BD7.0020.0002] # SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED OUT +1D8D9 ; [*1BD8.0020.0002] # SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED IN +1D8DA ; [*1BD9.0020.0002] # SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED +1D8DB ; [*1BDA.0020.0002] # SIGNWRITING HAND-HINGE INDEX HINGED +1D8DC ; [*1BDB.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE +1D8DD ; [*1BDC.0020.0002] # SIGNWRITING HAND-HINGE INDEX THUMB SIDE +1D8DE ; [*1BDD.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB DIAGONAL +1D8DF ; [*1BDE.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB CONJOINED +1D8E0 ; [*1BDF.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB BENT +1D8E1 ; [*1BE0.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE INDEX BENT +1D8E2 ; [*1BE1.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE BOTH BENT +1D8E3 ; [*1BE2.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE INDEX HINGE +1D8E4 ; [*1BE3.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB FORWARD INDEX STRAIGHT +1D8E5 ; [*1BE4.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB FORWARD INDEX BENT +1D8E6 ; [*1BE5.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB HOOK +1D8E7 ; [*1BE6.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CURLICUE +1D8E8 ; [*1BE7.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CURVE THUMB INSIDE +1D8E9 ; [*1BE8.0020.0002] # SIGNWRITING HAND-CLAW INDEX THUMB CURVE THUMB INSIDE +1D8EA ; [*1BE9.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CURVE THUMB UNDER +1D8EB ; [*1BEA.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CIRCLE +1D8EC ; [*1BEB.0020.0002] # SIGNWRITING HAND-CUP INDEX THUMB +1D8ED ; [*1BEC.0020.0002] # SIGNWRITING HAND-CUP INDEX THUMB OPEN +1D8EE ; [*1BED.0020.0002] # SIGNWRITING HAND-HINGE INDEX THUMB OPEN +1D8EF ; [*1BEE.0020.0002] # SIGNWRITING HAND-HINGE INDEX THUMB LARGE +1D8F0 ; [*1BEF.0020.0002] # SIGNWRITING HAND-HINGE INDEX THUMB +1D8F1 ; [*1BF0.0020.0002] # SIGNWRITING HAND-HINGE INDEX THUMB SMALL +1D8F2 ; [*1BF1.0020.0002] # SIGNWRITING HAND-ANGLE INDEX THUMB OUT +1D8F3 ; [*1BF2.0020.0002] # SIGNWRITING HAND-ANGLE INDEX THUMB IN +1D8F4 ; [*1BF3.0020.0002] # SIGNWRITING HAND-ANGLE INDEX THUMB +1D8F5 ; [*1BF4.0020.0002] # SIGNWRITING HAND-FIST THUMB +1D8F6 ; [*1BF5.0020.0002] # SIGNWRITING HAND-FIST THUMB HEEL +1D8F7 ; [*1BF6.0020.0002] # SIGNWRITING HAND-FIST THUMB SIDE DIAGONAL +1D8F8 ; [*1BF7.0020.0002] # SIGNWRITING HAND-FIST THUMB SIDE CONJOINED +1D8F9 ; [*1BF8.0020.0002] # SIGNWRITING HAND-FIST THUMB SIDE BENT +1D8FA ; [*1BF9.0020.0002] # SIGNWRITING HAND-FIST THUMB FORWARD +1D8FB ; [*1BFA.0020.0002] # SIGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLE +1D8FC ; [*1BFB.0020.0002] # SIGNWRITING HAND-FIST THUMB BETWEEN MIDDLE RING +1D8FD ; [*1BFC.0020.0002] # SIGNWRITING HAND-FIST THUMB BETWEEN RING LITTLE +1D8FE ; [*1BFD.0020.0002] # SIGNWRITING HAND-FIST THUMB UNDER TWO FINGERS +1D8FF ; [*1BFE.0020.0002] # SIGNWRITING HAND-FIST THUMB OVER TWO FINGERS +1D900 ; [*1BFF.0020.0002] # SIGNWRITING HAND-FIST THUMB UNDER THREE FINGERS +1D901 ; [*1C00.0020.0002] # SIGNWRITING HAND-FIST THUMB UNDER FOUR FINGERS +1D902 ; [*1C01.0020.0002] # SIGNWRITING HAND-FIST THUMB OVER FOUR RAISED KNUCKLES +1D903 ; [*1C02.0020.0002] # SIGNWRITING HAND-FIST +1D904 ; [*1C03.0020.0002] # SIGNWRITING HAND-FIST HEEL +1D905 ; [*1C04.0020.0002] # SIGNWRITING TOUCH SINGLE +1D906 ; [*1C05.0020.0002] # SIGNWRITING TOUCH MULTIPLE +1D907 ; [*1C06.0020.0002] # SIGNWRITING TOUCH BETWEEN +1D908 ; [*1C07.0020.0002] # SIGNWRITING GRASP SINGLE +1D909 ; [*1C08.0020.0002] # SIGNWRITING GRASP MULTIPLE +1D90A ; [*1C09.0020.0002] # SIGNWRITING GRASP BETWEEN +1D90B ; [*1C0A.0020.0002] # SIGNWRITING STRIKE SINGLE +1D90C ; [*1C0B.0020.0002] # SIGNWRITING STRIKE MULTIPLE +1D90D ; [*1C0C.0020.0002] # SIGNWRITING STRIKE BETWEEN +1D90E ; [*1C0D.0020.0002] # SIGNWRITING BRUSH SINGLE +1D90F ; [*1C0E.0020.0002] # SIGNWRITING BRUSH MULTIPLE +1D910 ; [*1C0F.0020.0002] # SIGNWRITING BRUSH BETWEEN +1D911 ; [*1C10.0020.0002] # SIGNWRITING RUB SINGLE +1D912 ; [*1C11.0020.0002] # SIGNWRITING RUB MULTIPLE +1D913 ; [*1C12.0020.0002] # SIGNWRITING RUB BETWEEN +1D914 ; [*1C13.0020.0002] # SIGNWRITING SURFACE SYMBOLS +1D915 ; [*1C14.0020.0002] # SIGNWRITING SURFACE BETWEEN +1D916 ; [*1C15.0020.0002] # SIGNWRITING SQUEEZE LARGE SINGLE +1D917 ; [*1C16.0020.0002] # SIGNWRITING SQUEEZE SMALL SINGLE +1D918 ; [*1C17.0020.0002] # SIGNWRITING SQUEEZE LARGE MULTIPLE +1D919 ; [*1C18.0020.0002] # SIGNWRITING SQUEEZE SMALL MULTIPLE +1D91A ; [*1C19.0020.0002] # SIGNWRITING SQUEEZE SEQUENTIAL +1D91B ; [*1C1A.0020.0002] # SIGNWRITING FLICK LARGE SINGLE +1D91C ; [*1C1B.0020.0002] # SIGNWRITING FLICK SMALL SINGLE +1D91D ; [*1C1C.0020.0002] # SIGNWRITING FLICK LARGE MULTIPLE +1D91E ; [*1C1D.0020.0002] # SIGNWRITING FLICK SMALL MULTIPLE +1D91F ; [*1C1E.0020.0002] # SIGNWRITING FLICK SEQUENTIAL +1D920 ; [*1C1F.0020.0002] # SIGNWRITING SQUEEZE FLICK ALTERNATING +1D921 ; [*1C20.0020.0002] # SIGNWRITING MOVEMENT-HINGE UP DOWN LARGE +1D922 ; [*1C21.0020.0002] # SIGNWRITING MOVEMENT-HINGE UP DOWN SMALL +1D923 ; [*1C22.0020.0002] # SIGNWRITING MOVEMENT-HINGE UP SEQUENTIAL +1D924 ; [*1C23.0020.0002] # SIGNWRITING MOVEMENT-HINGE DOWN SEQUENTIAL +1D925 ; [*1C24.0020.0002] # SIGNWRITING MOVEMENT-HINGE UP DOWN ALTERNATING LARGE +1D926 ; [*1C25.0020.0002] # SIGNWRITING MOVEMENT-HINGE UP DOWN ALTERNATING SMALL +1D927 ; [*1C26.0020.0002] # SIGNWRITING MOVEMENT-HINGE SIDE TO SIDE SCISSORS +1D928 ; [*1C27.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE FINGER CONTACT +1D929 ; [*1C28.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE FINGER CONTACT +1D92A ; [*1C29.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT SMALL +1D92B ; [*1C2A.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT MEDIUM +1D92C ; [*1C2B.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT LARGE +1D92D ; [*1C2C.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT LARGEST +1D92E ; [*1C2D.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SINGLE WRIST FLEX +1D92F ; [*1C2E.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE DOUBLE STRAIGHT +1D930 ; [*1C2F.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE DOUBLE WRIST FLEX +1D931 ; [*1C30.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE DOUBLE ALTERNATING +1D932 ; [*1C31.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE DOUBLE ALTERNATING WRIST FLEX +1D933 ; [*1C32.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CROSS +1D934 ; [*1C33.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE TRIPLE STRAIGHT MOVEMENT +1D935 ; [*1C34.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE TRIPLE WRIST FLEX +1D936 ; [*1C35.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE TRIPLE ALTERNATING +1D937 ; [*1C36.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE TRIPLE ALTERNATING WRIST FLEX +1D938 ; [*1C37.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BEND SMALL +1D939 ; [*1C38.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BEND MEDIUM +1D93A ; [*1C39.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BEND LARGE +1D93B ; [*1C3A.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CORNER SMALL +1D93C ; [*1C3B.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CORNER MEDIUM +1D93D ; [*1C3C.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CORNER LARGE +1D93E ; [*1C3D.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CORNER ROTATION +1D93F ; [*1C3E.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CHECK SMALL +1D940 ; [*1C3F.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CHECK MEDIUM +1D941 ; [*1C40.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CHECK LARGE +1D942 ; [*1C41.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BOX SMALL +1D943 ; [*1C42.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BOX MEDIUM +1D944 ; [*1C43.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BOX LARGE +1D945 ; [*1C44.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG SMALL +1D946 ; [*1C45.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG MEDIUM +1D947 ; [*1C46.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG LARGE +1D948 ; [*1C47.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE PEAKS SMALL +1D949 ; [*1C48.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE PEAKS MEDIUM +1D94A ; [*1C49.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE PEAKS LARGE +1D94B ; [*1C4A.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE SINGLE +1D94C ; [*1C4B.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE DOUBLE +1D94D ; [*1C4C.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE ALTERNATING +1D94E ; [*1C4D.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE SINGLE +1D94F ; [*1C4E.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE DOUBLE +1D950 ; [*1C4F.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE ALTERNATING +1D951 ; [*1C50.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE SHAKING +1D952 ; [*1C51.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL SINGLE +1D953 ; [*1C52.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL DOUBLE +1D954 ; [*1C53.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL TRIPLE +1D955 ; [*1C54.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL AWAY SMALL +1D956 ; [*1C55.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL AWAY MEDIUM +1D957 ; [*1C56.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL AWAY LARGE +1D958 ; [*1C57.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL AWAY LARGEST +1D959 ; [*1C58.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL TOWARDS SMALL +1D95A ; [*1C59.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL TOWARDS MEDIUM +1D95B ; [*1C5A.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL TOWARDS LARGE +1D95C ; [*1C5B.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL TOWARDS LARGEST +1D95D ; [*1C5C.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY SMALL +1D95E ; [*1C5D.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY MEDIUM +1D95F ; [*1C5E.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY LARGE +1D960 ; [*1C5F.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY LARGEST +1D961 ; [*1C60.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS SMALL +1D962 ; [*1C61.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS MEDIUM +1D963 ; [*1C62.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGE +1D964 ; [*1C63.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGEST +1D965 ; [*1C64.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT SMALL +1D966 ; [*1C65.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT MEDIUM +1D967 ; [*1C66.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGE +1D968 ; [*1C67.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGEST +1D969 ; [*1C68.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SINGLE WRIST FLEX +1D96A ; [*1C69.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE STRAIGHT +1D96B ; [*1C6A.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE WRIST FLEX +1D96C ; [*1C6B.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE ALTERNATING +1D96D ; [*1C6C.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE ALTERNATING WRIST FLEX +1D96E ; [*1C6D.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CROSS +1D96F ; [*1C6E.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE STRAIGHT MOVEMENT +1D970 ; [*1C6F.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE WRIST FLEX +1D971 ; [*1C70.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING MOVEMENT +1D972 ; [*1C71.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING WRIST FLEX +1D973 ; [*1C72.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE BEND +1D974 ; [*1C73.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CORNER SMALL +1D975 ; [*1C74.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CORNER MEDIUM +1D976 ; [*1C75.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CORNER LARGE +1D977 ; [*1C76.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CHECK +1D978 ; [*1C77.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE BOX SMALL +1D979 ; [*1C78.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE BOX MEDIUM +1D97A ; [*1C79.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE BOX LARGE +1D97B ; [*1C7A.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG SMALL +1D97C ; [*1C7B.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG MEDIUM +1D97D ; [*1C7C.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG LARGE +1D97E ; [*1C7D.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE PEAKS SMALL +1D97F ; [*1C7E.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE PEAKS MEDIUM +1D980 ; [*1C7F.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE PEAKS LARGE +1D981 ; [*1C80.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE SINGLE +1D982 ; [*1C81.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE DOUBLE +1D983 ; [*1C82.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE ALTERNATING +1D984 ; [*1C83.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE SINGLE +1D985 ; [*1C84.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE DOUBLE +1D986 ; [*1C85.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE ALTERNATING +1D987 ; [*1C86.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE SHAKING +1D988 ; [*1C87.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER SMALL +1D989 ; [*1C88.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER MEDIUM +1D98A ; [*1C89.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER LARGE +1D98B ; [*1C8A.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER LARGEST +1D98C ; [*1C8B.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE SMALL +1D98D ; [*1C8C.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE MEDIUM +1D98E ; [*1C8D.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE LARGE +1D98F ; [*1C8E.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE LARGEST +1D990 ; [*1C8F.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CIRCLE SMALL +1D991 ; [*1C90.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CIRCLE MEDIUM +1D992 ; [*1C91.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE HUMP SMALL +1D993 ; [*1C92.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE HUMP MEDIUM +1D994 ; [*1C93.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE HUMP LARGE +1D995 ; [*1C94.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP SMALL +1D996 ; [*1C95.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP MEDIUM +1D997 ; [*1C96.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP LARGE +1D998 ; [*1C97.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP SMALL DOUBLE +1D999 ; [*1C98.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE SMALL +1D99A ; [*1C99.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE MEDIUM +1D99B ; [*1C9A.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE LARGE +1D99C ; [*1C9B.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE SMALL +1D99D ; [*1C9C.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE MEDIUM +1D99E ; [*1C9D.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE LARGE +1D99F ; [*1C9E.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE THEN STRAIGHT +1D9A0 ; [*1C9F.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS SMALL +1D9A1 ; [*1CA0.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS MEDIUM +1D9A2 ; [*1CA1.0020.0002] # SIGNWRITING ROTATION-WALLPLANE SINGLE +1D9A3 ; [*1CA2.0020.0002] # SIGNWRITING ROTATION-WALLPLANE DOUBLE +1D9A4 ; [*1CA3.0020.0002] # SIGNWRITING ROTATION-WALLPLANE ALTERNATE +1D9A5 ; [*1CA4.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SHAKING +1D9A6 ; [*1CA5.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HITTING FRONT WALL +1D9A7 ; [*1CA6.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE HUMP HITTING FRONT WALL +1D9A8 ; [*1CA7.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP HITTING FRONT WALL +1D9A9 ; [*1CA8.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING FRONT WALL +1D9AA ; [*1CA9.0020.0002] # SIGNWRITING ROTATION-WALLPLANE SINGLE HITTING FRONT WALL +1D9AB ; [*1CAA.0020.0002] # SIGNWRITING ROTATION-WALLPLANE DOUBLE HITTING FRONT WALL +1D9AC ; [*1CAB.0020.0002] # SIGNWRITING ROTATION-WALLPLANE ALTERNATING HITTING FRONT WALL +1D9AD ; [*1CAC.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HITTING CHEST +1D9AE ; [*1CAD.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE HUMP HITTING CHEST +1D9AF ; [*1CAE.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP HITTING CHEST +1D9B0 ; [*1CAF.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING CHEST +1D9B1 ; [*1CB0.0020.0002] # SIGNWRITING ROTATION-WALLPLANE SINGLE HITTING CHEST +1D9B2 ; [*1CB1.0020.0002] # SIGNWRITING ROTATION-WALLPLANE DOUBLE HITTING CHEST +1D9B3 ; [*1CB2.0020.0002] # SIGNWRITING ROTATION-WALLPLANE ALTERNATING HITTING CHEST +1D9B4 ; [*1CB3.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH SMALL +1D9B5 ; [*1CB4.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH MEDIUM +1D9B6 ; [*1CB5.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH LARGE +1D9B7 ; [*1CB6.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING CEILING SMALL +1D9B8 ; [*1CB7.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING CEILING LARGE +1D9B9 ; [*1CB8.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL DOUBLE +1D9BA ; [*1CB9.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE DOUBLE +1D9BB ; [*1CBA.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL TRIPLE +1D9BC ; [*1CBB.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE TRIPLE +1D9BD ; [*1CBC.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING SMALL SINGLE +1D9BE ; [*1CBD.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING LARGE SINGLE +1D9BF ; [*1CBE.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING SMALL DOUBLE +1D9C0 ; [*1CBF.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING LARGE DOUBLE +1D9C1 ; [*1CC0.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING CEILING SMALL +1D9C2 ; [*1CC1.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING CEILING LARGE +1D9C3 ; [*1CC2.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE SINGLE HITTING CEILING +1D9C4 ; [*1CC3.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE DOUBLE HITTING CEILING +1D9C5 ; [*1CC4.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE ALTERNATING HITTING CEILING +1D9C6 ; [*1CC5.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR SMALL +1D9C7 ; [*1CC6.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR LARGE +1D9C8 ; [*1CC7.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR SMALL DOUBLE +1D9C9 ; [*1CC8.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR LARGE DOUBLE +1D9CA ; [*1CC9.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR TRIPLE SMALL TRIPLE +1D9CB ; [*1CCA.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR TRIPLE LARGE TRIPLE +1D9CC ; [*1CCB.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR SMALL SINGLE +1D9CD ; [*1CCC.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR LARGE SINGLE +1D9CE ; [*1CCD.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR SMALL DOUBLE +1D9CF ; [*1CCE.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR LARGE DOUBLE +1D9D0 ; [*1CCF.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING FLOOR SMALL +1D9D1 ; [*1CD0.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING FLOOR LARGE +1D9D2 ; [*1CD1.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE SINGLE HITTING FLOOR +1D9D3 ; [*1CD2.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE DOUBLE HITTING FLOOR +1D9D4 ; [*1CD3.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE ALTERNATING HITTING FLOOR +1D9D5 ; [*1CD4.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE SMALL +1D9D6 ; [*1CD5.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE MEDIUM +1D9D7 ; [*1CD6.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE LARGE +1D9D8 ; [*1CD7.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE LARGEST +1D9D9 ; [*1CD8.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE COMBINED +1D9DA ; [*1CD9.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP SMALL +1D9DB ; [*1CDA.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP SMALL +1D9DC ; [*1CDB.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE SNAKE +1D9DD ; [*1CDC.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE SMALL +1D9DE ; [*1CDD.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE LARGE +1D9DF ; [*1CDE.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE SINGLE +1D9E0 ; [*1CDF.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE DOUBLE +1D9E1 ; [*1CE0.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE ALTERNATING +1D9E2 ; [*1CE1.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SHAKING PARALLEL +1D9E3 ; [*1CE2.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE SMALL SINGLE +1D9E4 ; [*1CE3.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE MEDIUM SINGLE +1D9E5 ; [*1CE4.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE SMALL DOUBLE +1D9E6 ; [*1CE5.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE MEDIUM DOUBLE +1D9E7 ; [*1CE6.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SMALL SINGLE +1D9E8 ; [*1CE7.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM SINGLE +1D9E9 ; [*1CE8.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE SINGLE +1D9EA ; [*1CE9.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SMALL DOUBLE +1D9EB ; [*1CEA.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM DOUBLE +1D9EC ; [*1CEB.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE DOUBLE +1D9ED ; [*1CEC.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WRIST CIRCLE FRONT SINGLE +1D9EE ; [*1CED.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WRIST CIRCLE FRONT DOUBLE +1D9EF ; [*1CEE.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WRIST CIRCLE HITTING WALL SINGLE +1D9F0 ; [*1CEF.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WRIST CIRCLE HITTING WALL DOUBLE +1D9F1 ; [*1CF0.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE FINGER CIRCLES SINGLE +1D9F2 ; [*1CF1.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE FINGER CIRCLES DOUBLE +1D9F3 ; [*1CF2.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE FINGER CIRCLES HITTING WALL SINGLE +1D9F4 ; [*1CF3.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE FINGER CIRCLES HITTING WALL DOUBLE +1D9F5 ; [*1CF4.0020.0002] # SIGNWRITING DYNAMIC ARROWHEAD SMALL +1D9F6 ; [*1CF5.0020.0002] # SIGNWRITING DYNAMIC ARROWHEAD LARGE +1D9F7 ; [*1CF6.0020.0002] # SIGNWRITING DYNAMIC FAST +1D9F8 ; [*1CF7.0020.0002] # SIGNWRITING DYNAMIC SLOW +1D9F9 ; [*1CF8.0020.0002] # SIGNWRITING DYNAMIC TENSE +1D9FA ; [*1CF9.0020.0002] # SIGNWRITING DYNAMIC RELAXED +1D9FB ; [*1CFA.0020.0002] # SIGNWRITING DYNAMIC SIMULTANEOUS +1D9FC ; [*1CFB.0020.0002] # SIGNWRITING DYNAMIC SIMULTANEOUS ALTERNATING +1D9FD ; [*1CFC.0020.0002] # SIGNWRITING DYNAMIC EVERY OTHER TIME +1D9FE ; [*1CFD.0020.0002] # SIGNWRITING DYNAMIC GRADUAL +1D9FF ; [*1CFE.0020.0002] # SIGNWRITING HEAD 1DA00 ; [.0000.0000.0000] # SIGNWRITING HEAD RIM 1DA01 ; [.0000.0000.0000] # SIGNWRITING HEAD MOVEMENT-WALLPLANE STRAIGHT 1DA02 ; [.0000.0000.0000] # SIGNWRITING HEAD MOVEMENT-WALLPLANE TILT @@ -5980,10 +6154,10 @@ 1DA34 ; [.0000.0000.0000] # SIGNWRITING NOSE WIGGLES 1DA35 ; [.0000.0000.0000] # SIGNWRITING AIR BLOWING OUT 1DA36 ; [.0000.0000.0000] # SIGNWRITING AIR SUCKING IN -1DA37 ; [*1AA3.0020.0002] # SIGNWRITING AIR BLOW SMALL ROTATIONS -1DA38 ; [*1AA4.0020.0002] # SIGNWRITING AIR SUCK SMALL ROTATIONS -1DA39 ; [*1AA5.0020.0002] # SIGNWRITING BREATH INHALE -1DA3A ; [*1AA6.0020.0002] # SIGNWRITING BREATH EXHALE +1DA37 ; [*1CFF.0020.0002] # SIGNWRITING AIR BLOW SMALL ROTATIONS +1DA38 ; [*1D00.0020.0002] # SIGNWRITING AIR SUCK SMALL ROTATIONS +1DA39 ; [*1D01.0020.0002] # SIGNWRITING BREATH INHALE +1DA3A ; [*1D02.0020.0002] # SIGNWRITING BREATH EXHALE 1DA3B ; [.0000.0000.0000] # SIGNWRITING MOUTH CLOSED NEUTRAL 1DA3C ; [.0000.0000.0000] # SIGNWRITING MOUTH CLOSED FORWARD 1DA3D ; [.0000.0000.0000] # SIGNWRITING MOUTH CLOSED CONTACT @@ -6034,37 +6208,37 @@ 1DA6A ; [.0000.0000.0000] # SIGNWRITING NECK 1DA6B ; [.0000.0000.0000] # SIGNWRITING HAIR 1DA6C ; [.0000.0000.0000] # SIGNWRITING EXCITEMENT -1DA6D ; [*1AA7.0020.0002] # SIGNWRITING SHOULDER HIP SPINE -1DA6E ; [*1AA8.0020.0002] # SIGNWRITING SHOULDER HIP POSITIONS -1DA6F ; [*1AA9.0020.0002] # SIGNWRITING WALLPLANE SHOULDER HIP MOVE -1DA70 ; [*1AAA.0020.0002] # SIGNWRITING FLOORPLANE SHOULDER HIP MOVE -1DA71 ; [*1AAB.0020.0002] # SIGNWRITING SHOULDER TILTING FROM WAIST -1DA72 ; [*1AAC.0020.0002] # SIGNWRITING TORSO-WALLPLANE STRAIGHT STRETCH -1DA73 ; [*1AAD.0020.0002] # SIGNWRITING TORSO-WALLPLANE CURVED BEND -1DA74 ; [*1AAE.0020.0002] # SIGNWRITING TORSO-FLOORPLANE TWISTING +1DA6D ; [*1D03.0020.0002] # SIGNWRITING SHOULDER HIP SPINE +1DA6E ; [*1D04.0020.0002] # SIGNWRITING SHOULDER HIP POSITIONS +1DA6F ; [*1D05.0020.0002] # SIGNWRITING WALLPLANE SHOULDER HIP MOVE +1DA70 ; [*1D06.0020.0002] # SIGNWRITING FLOORPLANE SHOULDER HIP MOVE +1DA71 ; [*1D07.0020.0002] # SIGNWRITING SHOULDER TILTING FROM WAIST +1DA72 ; [*1D08.0020.0002] # SIGNWRITING TORSO-WALLPLANE STRAIGHT STRETCH +1DA73 ; [*1D09.0020.0002] # SIGNWRITING TORSO-WALLPLANE CURVED BEND +1DA74 ; [*1D0A.0020.0002] # SIGNWRITING TORSO-FLOORPLANE TWISTING 1DA75 ; [.0000.0000.0000] # SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS -1DA76 ; [*1AAF.0020.0002] # SIGNWRITING LIMB COMBINATION -1DA77 ; [*1AB0.0020.0002] # SIGNWRITING LIMB LENGTH-1 -1DA78 ; [*1AB1.0020.0002] # SIGNWRITING LIMB LENGTH-2 -1DA79 ; [*1AB2.0020.0002] # SIGNWRITING LIMB LENGTH-3 -1DA7A ; [*1AB3.0020.0002] # SIGNWRITING LIMB LENGTH-4 -1DA7B ; [*1AB4.0020.0002] # SIGNWRITING LIMB LENGTH-5 -1DA7C ; [*1AB5.0020.0002] # SIGNWRITING LIMB LENGTH-6 -1DA7D ; [*1AB6.0020.0002] # SIGNWRITING LIMB LENGTH-7 -1DA7E ; [*1AB7.0020.0002] # SIGNWRITING FINGER -1DA7F ; [*1AB8.0020.0002] # SIGNWRITING LOCATION-WALLPLANE SPACE -1DA80 ; [*1AB9.0020.0002] # SIGNWRITING LOCATION-FLOORPLANE SPACE -1DA81 ; [*1ABA.0020.0002] # SIGNWRITING LOCATION HEIGHT -1DA82 ; [*1ABB.0020.0002] # SIGNWRITING LOCATION WIDTH -1DA83 ; [*1ABC.0020.0002] # SIGNWRITING LOCATION DEPTH +1DA76 ; [*1D0B.0020.0002] # SIGNWRITING LIMB COMBINATION +1DA77 ; [*1D0C.0020.0002] # SIGNWRITING LIMB LENGTH-1 +1DA78 ; [*1D0D.0020.0002] # SIGNWRITING LIMB LENGTH-2 +1DA79 ; [*1D0E.0020.0002] # SIGNWRITING LIMB LENGTH-3 +1DA7A ; [*1D0F.0020.0002] # SIGNWRITING LIMB LENGTH-4 +1DA7B ; [*1D10.0020.0002] # SIGNWRITING LIMB LENGTH-5 +1DA7C ; [*1D11.0020.0002] # SIGNWRITING LIMB LENGTH-6 +1DA7D ; [*1D12.0020.0002] # SIGNWRITING LIMB LENGTH-7 +1DA7E ; [*1D13.0020.0002] # SIGNWRITING FINGER +1DA7F ; [*1D14.0020.0002] # SIGNWRITING LOCATION-WALLPLANE SPACE +1DA80 ; [*1D15.0020.0002] # SIGNWRITING LOCATION-FLOORPLANE SPACE +1DA81 ; [*1D16.0020.0002] # SIGNWRITING LOCATION HEIGHT +1DA82 ; [*1D17.0020.0002] # SIGNWRITING LOCATION WIDTH +1DA83 ; [*1D18.0020.0002] # SIGNWRITING LOCATION DEPTH 1DA84 ; [.0000.0000.0000] # SIGNWRITING LOCATION HEAD NECK -1DA85 ; [*1ABD.0020.0002] # SIGNWRITING LOCATION TORSO -1DA86 ; [*1ABE.0020.0002] # SIGNWRITING LOCATION LIMBS DIGITS -1DA87 ; [*0493.0020.0002] # SIGNWRITING COMMA -1DA88 ; [*0494.0020.0002] # SIGNWRITING FULL STOP -1DA89 ; [*0495.0020.0002] # SIGNWRITING SEMICOLON -1DA8A ; [*0496.0020.0002] # SIGNWRITING COLON -1DA8B ; [*0497.0020.0002] # SIGNWRITING PARENTHESIS +1DA85 ; [*1D19.0020.0002] # SIGNWRITING LOCATION TORSO +1DA86 ; [*1D1A.0020.0002] # SIGNWRITING LOCATION LIMBS DIGITS +1DA87 ; [*04AF.0020.0002] # SIGNWRITING COMMA +1DA88 ; [*04B0.0020.0002] # SIGNWRITING FULL STOP +1DA89 ; [*04B1.0020.0002] # SIGNWRITING SEMICOLON +1DA8A ; [*04B2.0020.0002] # SIGNWRITING COLON +1DA8B ; [*04B3.0020.0002] # SIGNWRITING PARENTHESIS 1DA9B ; [.0000.0000.0000] # SIGNWRITING FILL MODIFIER-2 1DA9C ; [.0000.0000.0000] # SIGNWRITING FILL MODIFIER-3 1DA9D ; [.0000.0000.0000] # SIGNWRITING FILL MODIFIER-4 @@ -6085,6 +6259,7 @@ 1DAAD ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-14 1DAAE ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-15 1DAAF ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-16 +1E14F ; [*1123.0020.0002] # NYIAKENG PUACHUE HMONG CIRCLED CA 1E8D0 ; [.0000.0000.0000] # MENDE KIKAKUI COMBINING NUMBER TEENS 1E8D1 ; [.0000.0000.0000] # MENDE KIKAKUI COMBINING NUMBER TENS 1E8D2 ; [.0000.0000.0000] # MENDE KIKAKUI COMBINING NUMBER HUNDREDS @@ -6092,1768 +6267,2355 @@ 1E8D4 ; [.0000.0000.0000] # MENDE KIKAKUI COMBINING NUMBER TEN THOUSANDS 1E8D5 ; [.0000.0000.0000] # MENDE KIKAKUI COMBINING NUMBER HUNDRED THOUSANDS 1E8D6 ; [.0000.0000.0000] # MENDE KIKAKUI COMBINING NUMBER MILLIONS -1E95E ; [*0266.0020.0002] # ADLAM INITIAL EXCLAMATION MARK -1E95F ; [*0275.0020.0002] # ADLAM INITIAL QUESTION MARK -1EEF0 ; [*0511.0020.0002] # ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL -1EEF1 ; [*0512.0020.0002] # ARABIC MATHEMATICAL OPERATOR HAH WITH DAL -1F000 ; [*11DF.0020.0002] # MAHJONG TILE EAST WIND -1F001 ; [*11E0.0020.0002] # MAHJONG TILE SOUTH WIND -1F002 ; [*11E1.0020.0002] # MAHJONG TILE WEST WIND -1F003 ; [*11E2.0020.0002] # MAHJONG TILE NORTH WIND -1F004 ; [*11E3.0020.0002] # MAHJONG TILE RED DRAGON -1F005 ; [*11E4.0020.0002] # MAHJONG TILE GREEN DRAGON -1F006 ; [*11E5.0020.0002] # MAHJONG TILE WHITE DRAGON -1F007 ; [*11E6.0020.0002] # MAHJONG TILE ONE OF CHARACTERS -1F008 ; [*11E7.0020.0002] # MAHJONG TILE TWO OF CHARACTERS -1F009 ; [*11E8.0020.0002] # MAHJONG TILE THREE OF CHARACTERS -1F00A ; [*11E9.0020.0002] # MAHJONG TILE FOUR OF CHARACTERS -1F00B ; [*11EA.0020.0002] # MAHJONG TILE FIVE OF CHARACTERS -1F00C ; [*11EB.0020.0002] # MAHJONG TILE SIX OF CHARACTERS -1F00D ; [*11EC.0020.0002] # MAHJONG TILE SEVEN OF CHARACTERS -1F00E ; [*11ED.0020.0002] # MAHJONG TILE EIGHT OF CHARACTERS -1F00F ; [*11EE.0020.0002] # MAHJONG TILE NINE OF CHARACTERS -1F010 ; [*11EF.0020.0002] # MAHJONG TILE ONE OF BAMBOOS -1F011 ; [*11F0.0020.0002] # MAHJONG TILE TWO OF BAMBOOS -1F012 ; [*11F1.0020.0002] # MAHJONG TILE THREE OF BAMBOOS -1F013 ; [*11F2.0020.0002] # MAHJONG TILE FOUR OF BAMBOOS -1F014 ; [*11F3.0020.0002] # MAHJONG TILE FIVE OF BAMBOOS -1F015 ; [*11F4.0020.0002] # MAHJONG TILE SIX OF BAMBOOS -1F016 ; [*11F5.0020.0002] # MAHJONG TILE SEVEN OF BAMBOOS -1F017 ; [*11F6.0020.0002] # MAHJONG TILE EIGHT OF BAMBOOS -1F018 ; [*11F7.0020.0002] # MAHJONG TILE NINE OF BAMBOOS -1F019 ; [*11F8.0020.0002] # MAHJONG TILE ONE OF CIRCLES -1F01A ; [*11F9.0020.0002] # MAHJONG TILE TWO OF CIRCLES -1F01B ; [*11FA.0020.0002] # MAHJONG TILE THREE OF CIRCLES -1F01C ; [*11FB.0020.0002] # MAHJONG TILE FOUR OF CIRCLES -1F01D ; [*11FC.0020.0002] # MAHJONG TILE FIVE OF CIRCLES -1F01E ; [*11FD.0020.0002] # MAHJONG TILE SIX OF CIRCLES -1F01F ; [*11FE.0020.0002] # MAHJONG TILE SEVEN OF CIRCLES -1F020 ; [*11FF.0020.0002] # MAHJONG TILE EIGHT OF CIRCLES -1F021 ; [*1200.0020.0002] # MAHJONG TILE NINE OF CIRCLES -1F022 ; [*1201.0020.0002] # MAHJONG TILE PLUM -1F023 ; [*1202.0020.0002] # MAHJONG TILE ORCHID -1F024 ; [*1203.0020.0002] # MAHJONG TILE BAMBOO -1F025 ; [*1204.0020.0002] # MAHJONG TILE CHRYSANTHEMUM -1F026 ; [*1205.0020.0002] # MAHJONG TILE SPRING -1F027 ; [*1206.0020.0002] # MAHJONG TILE SUMMER -1F028 ; [*1207.0020.0002] # MAHJONG TILE AUTUMN -1F029 ; [*1208.0020.0002] # MAHJONG TILE WINTER -1F02A ; [*1209.0020.0002] # MAHJONG TILE JOKER -1F02B ; [*120A.0020.0002] # MAHJONG TILE BACK -1F030 ; [*120B.0020.0002] # DOMINO TILE HORIZONTAL BACK -1F031 ; [*120C.0020.0002] # DOMINO TILE HORIZONTAL-00-00 -1F032 ; [*120D.0020.0002] # DOMINO TILE HORIZONTAL-00-01 -1F033 ; [*120E.0020.0002] # DOMINO TILE HORIZONTAL-00-02 -1F034 ; [*120F.0020.0002] # DOMINO TILE HORIZONTAL-00-03 -1F035 ; [*1210.0020.0002] # DOMINO TILE HORIZONTAL-00-04 -1F036 ; [*1211.0020.0002] # DOMINO TILE HORIZONTAL-00-05 -1F037 ; [*1212.0020.0002] # DOMINO TILE HORIZONTAL-00-06 -1F038 ; [*1213.0020.0002] # DOMINO TILE HORIZONTAL-01-00 -1F039 ; [*1214.0020.0002] # DOMINO TILE HORIZONTAL-01-01 -1F03A ; [*1215.0020.0002] # DOMINO TILE HORIZONTAL-01-02 -1F03B ; [*1216.0020.0002] # DOMINO TILE HORIZONTAL-01-03 -1F03C ; [*1217.0020.0002] # DOMINO TILE HORIZONTAL-01-04 -1F03D ; [*1218.0020.0002] # DOMINO TILE HORIZONTAL-01-05 -1F03E ; [*1219.0020.0002] # DOMINO TILE HORIZONTAL-01-06 -1F03F ; [*121A.0020.0002] # DOMINO TILE HORIZONTAL-02-00 -1F040 ; [*121B.0020.0002] # DOMINO TILE HORIZONTAL-02-01 -1F041 ; [*121C.0020.0002] # DOMINO TILE HORIZONTAL-02-02 -1F042 ; [*121D.0020.0002] # DOMINO TILE HORIZONTAL-02-03 -1F043 ; [*121E.0020.0002] # DOMINO TILE HORIZONTAL-02-04 -1F044 ; [*121F.0020.0002] # DOMINO TILE HORIZONTAL-02-05 -1F045 ; [*1220.0020.0002] # DOMINO TILE HORIZONTAL-02-06 -1F046 ; [*1221.0020.0002] # DOMINO TILE HORIZONTAL-03-00 -1F047 ; [*1222.0020.0002] # DOMINO TILE HORIZONTAL-03-01 -1F048 ; [*1223.0020.0002] # DOMINO TILE HORIZONTAL-03-02 -1F049 ; [*1224.0020.0002] # DOMINO TILE HORIZONTAL-03-03 -1F04A ; [*1225.0020.0002] # DOMINO TILE HORIZONTAL-03-04 -1F04B ; [*1226.0020.0002] # DOMINO TILE HORIZONTAL-03-05 -1F04C ; [*1227.0020.0002] # DOMINO TILE HORIZONTAL-03-06 -1F04D ; [*1228.0020.0002] # DOMINO TILE HORIZONTAL-04-00 -1F04E ; [*1229.0020.0002] # DOMINO TILE HORIZONTAL-04-01 -1F04F ; [*122A.0020.0002] # DOMINO TILE HORIZONTAL-04-02 -1F050 ; [*122B.0020.0002] # DOMINO TILE HORIZONTAL-04-03 -1F051 ; [*122C.0020.0002] # DOMINO TILE HORIZONTAL-04-04 -1F052 ; [*122D.0020.0002] # DOMINO TILE HORIZONTAL-04-05 -1F053 ; [*122E.0020.0002] # DOMINO TILE HORIZONTAL-04-06 -1F054 ; [*122F.0020.0002] # DOMINO TILE HORIZONTAL-05-00 -1F055 ; [*1230.0020.0002] # DOMINO TILE HORIZONTAL-05-01 -1F056 ; [*1231.0020.0002] # DOMINO TILE HORIZONTAL-05-02 -1F057 ; [*1232.0020.0002] # DOMINO TILE HORIZONTAL-05-03 -1F058 ; [*1233.0020.0002] # DOMINO TILE HORIZONTAL-05-04 -1F059 ; [*1234.0020.0002] # DOMINO TILE HORIZONTAL-05-05 -1F05A ; [*1235.0020.0002] # DOMINO TILE HORIZONTAL-05-06 -1F05B ; [*1236.0020.0002] # DOMINO TILE HORIZONTAL-06-00 -1F05C ; [*1237.0020.0002] # DOMINO TILE HORIZONTAL-06-01 -1F05D ; [*1238.0020.0002] # DOMINO TILE HORIZONTAL-06-02 -1F05E ; [*1239.0020.0002] # DOMINO TILE HORIZONTAL-06-03 -1F05F ; [*123A.0020.0002] # DOMINO TILE HORIZONTAL-06-04 -1F060 ; [*123B.0020.0002] # DOMINO TILE HORIZONTAL-06-05 -1F061 ; [*123C.0020.0002] # DOMINO TILE HORIZONTAL-06-06 -1F062 ; [*123D.0020.0002] # DOMINO TILE VERTICAL BACK -1F063 ; [*123E.0020.0002] # DOMINO TILE VERTICAL-00-00 -1F064 ; [*123F.0020.0002] # DOMINO TILE VERTICAL-00-01 -1F065 ; [*1240.0020.0002] # DOMINO TILE VERTICAL-00-02 -1F066 ; [*1241.0020.0002] # DOMINO TILE VERTICAL-00-03 -1F067 ; [*1242.0020.0002] # DOMINO TILE VERTICAL-00-04 -1F068 ; [*1243.0020.0002] # DOMINO TILE VERTICAL-00-05 -1F069 ; [*1244.0020.0002] # DOMINO TILE VERTICAL-00-06 -1F06A ; [*1245.0020.0002] # DOMINO TILE VERTICAL-01-00 -1F06B ; [*1246.0020.0002] # DOMINO TILE VERTICAL-01-01 -1F06C ; [*1247.0020.0002] # DOMINO TILE VERTICAL-01-02 -1F06D ; [*1248.0020.0002] # DOMINO TILE VERTICAL-01-03 -1F06E ; [*1249.0020.0002] # DOMINO TILE VERTICAL-01-04 -1F06F ; [*124A.0020.0002] # DOMINO TILE VERTICAL-01-05 -1F070 ; [*124B.0020.0002] # DOMINO TILE VERTICAL-01-06 -1F071 ; [*124C.0020.0002] # DOMINO TILE VERTICAL-02-00 -1F072 ; [*124D.0020.0002] # DOMINO TILE VERTICAL-02-01 -1F073 ; [*124E.0020.0002] # DOMINO TILE VERTICAL-02-02 -1F074 ; [*124F.0020.0002] # DOMINO TILE VERTICAL-02-03 -1F075 ; [*1250.0020.0002] # DOMINO TILE VERTICAL-02-04 -1F076 ; [*1251.0020.0002] # DOMINO TILE VERTICAL-02-05 -1F077 ; [*1252.0020.0002] # DOMINO TILE VERTICAL-02-06 -1F078 ; [*1253.0020.0002] # DOMINO TILE VERTICAL-03-00 -1F079 ; [*1254.0020.0002] # DOMINO TILE VERTICAL-03-01 -1F07A ; [*1255.0020.0002] # DOMINO TILE VERTICAL-03-02 -1F07B ; [*1256.0020.0002] # DOMINO TILE VERTICAL-03-03 -1F07C ; [*1257.0020.0002] # DOMINO TILE VERTICAL-03-04 -1F07D ; [*1258.0020.0002] # DOMINO TILE VERTICAL-03-05 -1F07E ; [*1259.0020.0002] # DOMINO TILE VERTICAL-03-06 -1F07F ; [*125A.0020.0002] # DOMINO TILE VERTICAL-04-00 -1F080 ; [*125B.0020.0002] # DOMINO TILE VERTICAL-04-01 -1F081 ; [*125C.0020.0002] # DOMINO TILE VERTICAL-04-02 -1F082 ; [*125D.0020.0002] # DOMINO TILE VERTICAL-04-03 -1F083 ; [*125E.0020.0002] # DOMINO TILE VERTICAL-04-04 -1F084 ; [*125F.0020.0002] # DOMINO TILE VERTICAL-04-05 -1F085 ; [*1260.0020.0002] # DOMINO TILE VERTICAL-04-06 -1F086 ; [*1261.0020.0002] # DOMINO TILE VERTICAL-05-00 -1F087 ; [*1262.0020.0002] # DOMINO TILE VERTICAL-05-01 -1F088 ; [*1263.0020.0002] # DOMINO TILE VERTICAL-05-02 -1F089 ; [*1264.0020.0002] # DOMINO TILE VERTICAL-05-03 -1F08A ; [*1265.0020.0002] # DOMINO TILE VERTICAL-05-04 -1F08B ; [*1266.0020.0002] # DOMINO TILE VERTICAL-05-05 -1F08C ; [*1267.0020.0002] # DOMINO TILE VERTICAL-05-06 -1F08D ; [*1268.0020.0002] # DOMINO TILE VERTICAL-06-00 -1F08E ; [*1269.0020.0002] # DOMINO TILE VERTICAL-06-01 -1F08F ; [*126A.0020.0002] # DOMINO TILE VERTICAL-06-02 -1F090 ; [*126B.0020.0002] # DOMINO TILE VERTICAL-06-03 -1F091 ; [*126C.0020.0002] # DOMINO TILE VERTICAL-06-04 -1F092 ; [*126D.0020.0002] # DOMINO TILE VERTICAL-06-05 -1F093 ; [*126E.0020.0002] # DOMINO TILE VERTICAL-06-06 -1F0A0 ; [*126F.0020.0002] # PLAYING CARD BACK -1F0A1 ; [*1270.0020.0002] # PLAYING CARD ACE OF SPADES -1F0A2 ; [*1271.0020.0002] # PLAYING CARD TWO OF SPADES -1F0A3 ; [*1272.0020.0002] # PLAYING CARD THREE OF SPADES -1F0A4 ; [*1273.0020.0002] # PLAYING CARD FOUR OF SPADES -1F0A5 ; [*1274.0020.0002] # PLAYING CARD FIVE OF SPADES -1F0A6 ; [*1275.0020.0002] # PLAYING CARD SIX OF SPADES -1F0A7 ; [*1276.0020.0002] # PLAYING CARD SEVEN OF SPADES -1F0A8 ; [*1277.0020.0002] # PLAYING CARD EIGHT OF SPADES -1F0A9 ; [*1278.0020.0002] # PLAYING CARD NINE OF SPADES -1F0AA ; [*1279.0020.0002] # PLAYING CARD TEN OF SPADES -1F0AB ; [*127A.0020.0002] # PLAYING CARD JACK OF SPADES -1F0AC ; [*127B.0020.0002] # PLAYING CARD KNIGHT OF SPADES -1F0AD ; [*127C.0020.0002] # PLAYING CARD QUEEN OF SPADES -1F0AE ; [*127D.0020.0002] # PLAYING CARD KING OF SPADES -1F0B1 ; [*127E.0020.0002] # PLAYING CARD ACE OF HEARTS -1F0B2 ; [*127F.0020.0002] # PLAYING CARD TWO OF HEARTS -1F0B3 ; [*1280.0020.0002] # PLAYING CARD THREE OF HEARTS -1F0B4 ; [*1281.0020.0002] # PLAYING CARD FOUR OF HEARTS -1F0B5 ; [*1282.0020.0002] # PLAYING CARD FIVE OF HEARTS -1F0B6 ; [*1283.0020.0002] # PLAYING CARD SIX OF HEARTS -1F0B7 ; [*1284.0020.0002] # PLAYING CARD SEVEN OF HEARTS -1F0B8 ; [*1285.0020.0002] # PLAYING CARD EIGHT OF HEARTS -1F0B9 ; [*1286.0020.0002] # PLAYING CARD NINE OF HEARTS -1F0BA ; [*1287.0020.0002] # PLAYING CARD TEN OF HEARTS -1F0BB ; [*1288.0020.0002] # PLAYING CARD JACK OF HEARTS -1F0BC ; [*1289.0020.0002] # PLAYING CARD KNIGHT OF HEARTS -1F0BD ; [*128A.0020.0002] # PLAYING CARD QUEEN OF HEARTS -1F0BE ; [*128B.0020.0002] # PLAYING CARD KING OF HEARTS -1F0BF ; [*128C.0020.0002] # PLAYING CARD RED JOKER -1F0C1 ; [*128D.0020.0002] # PLAYING CARD ACE OF DIAMONDS -1F0C2 ; [*128E.0020.0002] # PLAYING CARD TWO OF DIAMONDS -1F0C3 ; [*128F.0020.0002] # PLAYING CARD THREE OF DIAMONDS -1F0C4 ; [*1290.0020.0002] # PLAYING CARD FOUR OF DIAMONDS -1F0C5 ; [*1291.0020.0002] # PLAYING CARD FIVE OF DIAMONDS -1F0C6 ; [*1292.0020.0002] # PLAYING CARD SIX OF DIAMONDS -1F0C7 ; [*1293.0020.0002] # PLAYING CARD SEVEN OF DIAMONDS -1F0C8 ; [*1294.0020.0002] # PLAYING CARD EIGHT OF DIAMONDS -1F0C9 ; [*1295.0020.0002] # PLAYING CARD NINE OF DIAMONDS -1F0CA ; [*1296.0020.0002] # PLAYING CARD TEN OF DIAMONDS -1F0CB ; [*1297.0020.0002] # PLAYING CARD JACK OF DIAMONDS -1F0CC ; [*1298.0020.0002] # PLAYING CARD KNIGHT OF DIAMONDS -1F0CD ; [*1299.0020.0002] # PLAYING CARD QUEEN OF DIAMONDS -1F0CE ; [*129A.0020.0002] # PLAYING CARD KING OF DIAMONDS -1F0CF ; [*129B.0020.0002] # PLAYING CARD BLACK JOKER -1F0D1 ; [*129C.0020.0002] # PLAYING CARD ACE OF CLUBS -1F0D2 ; [*129D.0020.0002] # PLAYING CARD TWO OF CLUBS -1F0D3 ; [*129E.0020.0002] # PLAYING CARD THREE OF CLUBS -1F0D4 ; [*129F.0020.0002] # PLAYING CARD FOUR OF CLUBS -1F0D5 ; [*12A0.0020.0002] # PLAYING CARD FIVE OF CLUBS -1F0D6 ; [*12A1.0020.0002] # PLAYING CARD SIX OF CLUBS -1F0D7 ; [*12A2.0020.0002] # PLAYING CARD SEVEN OF CLUBS -1F0D8 ; [*12A3.0020.0002] # PLAYING CARD EIGHT OF CLUBS -1F0D9 ; [*12A4.0020.0002] # PLAYING CARD NINE OF CLUBS -1F0DA ; [*12A5.0020.0002] # PLAYING CARD TEN OF CLUBS -1F0DB ; [*12A6.0020.0002] # PLAYING CARD JACK OF CLUBS -1F0DC ; [*12A7.0020.0002] # PLAYING CARD KNIGHT OF CLUBS -1F0DD ; [*12A8.0020.0002] # PLAYING CARD QUEEN OF CLUBS -1F0DE ; [*12A9.0020.0002] # PLAYING CARD KING OF CLUBS -1F0DF ; [*12AA.0020.0002] # PLAYING CARD WHITE JOKER -1F0E0 ; [*12AB.0020.0002] # PLAYING CARD FOOL -1F0E1 ; [*12AC.0020.0002] # PLAYING CARD TRUMP-1 -1F0E2 ; [*12AD.0020.0002] # PLAYING CARD TRUMP-2 -1F0E3 ; [*12AE.0020.0002] # PLAYING CARD TRUMP-3 -1F0E4 ; [*12AF.0020.0002] # PLAYING CARD TRUMP-4 -1F0E5 ; [*12B0.0020.0002] # PLAYING CARD TRUMP-5 -1F0E6 ; [*12B1.0020.0002] # PLAYING CARD TRUMP-6 -1F0E7 ; [*12B2.0020.0002] # PLAYING CARD TRUMP-7 -1F0E8 ; [*12B3.0020.0002] # PLAYING CARD TRUMP-8 -1F0E9 ; [*12B4.0020.0002] # PLAYING CARD TRUMP-9 -1F0EA ; [*12B5.0020.0002] # PLAYING CARD TRUMP-10 -1F0EB ; [*12B6.0020.0002] # PLAYING CARD TRUMP-11 -1F0EC ; [*12B7.0020.0002] # PLAYING CARD TRUMP-12 -1F0ED ; [*12B8.0020.0002] # PLAYING CARD TRUMP-13 -1F0EE ; [*12B9.0020.0002] # PLAYING CARD TRUMP-14 -1F0EF ; [*12BA.0020.0002] # PLAYING CARD TRUMP-15 -1F0F0 ; [*12BB.0020.0002] # PLAYING CARD TRUMP-16 -1F0F1 ; [*12BC.0020.0002] # PLAYING CARD TRUMP-17 -1F0F2 ; [*12BD.0020.0002] # PLAYING CARD TRUMP-18 -1F0F3 ; [*12BE.0020.0002] # PLAYING CARD TRUMP-19 -1F0F4 ; [*12BF.0020.0002] # PLAYING CARD TRUMP-20 -1F0F5 ; [*12C0.0020.0002] # PLAYING CARD TRUMP-21 -1F1E6 ; [*0A1E.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER A -1F1E7 ; [*0A1F.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER B -1F1E8 ; [*0A20.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER C -1F1E9 ; [*0A21.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER D -1F1EA ; [*0A22.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER E -1F1EB ; [*0A23.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER F -1F1EC ; [*0A24.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER G -1F1ED ; [*0A25.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER H -1F1EE ; [*0A26.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER I -1F1EF ; [*0A27.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER J -1F1F0 ; [*0A28.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER K -1F1F1 ; [*0A29.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER L -1F1F2 ; [*0A2A.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER M -1F1F3 ; [*0A2B.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER N -1F1F4 ; [*0A2C.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER O -1F1F5 ; [*0A2D.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER P -1F1F6 ; [*0A2E.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER Q -1F1F7 ; [*0A2F.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER R -1F1F8 ; [*0A30.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER S -1F1F9 ; [*0A31.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER T -1F1FA ; [*0A32.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER U -1F1FB ; [*0A33.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER V -1F1FC ; [*0A34.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER W -1F1FD ; [*0A35.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER X -1F1FE ; [*0A36.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER Y -1F1FF ; [*0A37.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER Z -1F260 ; [*12C1.0020.0002] # ROUNDED SYMBOL FOR FU -1F261 ; [*12C2.0020.0002] # ROUNDED SYMBOL FOR LU -1F262 ; [*12C3.0020.0002] # ROUNDED SYMBOL FOR SHOU -1F263 ; [*12C4.0020.0002] # ROUNDED SYMBOL FOR XI -1F264 ; [*12C5.0020.0002] # ROUNDED SYMBOL FOR SHUANGXI -1F265 ; [*12C6.0020.0002] # ROUNDED SYMBOL FOR CAI -1F300 ; [*12C7.0020.0002] # CYCLONE -1F301 ; [*12C8.0020.0002] # FOGGY -1F302 ; [*12C9.0020.0002] # CLOSED UMBRELLA -1F303 ; [*12CA.0020.0002] # NIGHT WITH STARS -1F304 ; [*12CB.0020.0002] # SUNRISE OVER MOUNTAINS -1F305 ; [*12CC.0020.0002] # SUNRISE -1F306 ; [*12CD.0020.0002] # CITYSCAPE AT DUSK -1F307 ; [*12CE.0020.0002] # SUNSET OVER BUILDINGS -1F308 ; [*12CF.0020.0002] # RAINBOW -1F309 ; [*12D0.0020.0002] # BRIDGE AT NIGHT -1F30A ; [*12D1.0020.0002] # WATER WAVE -1F30B ; [*12D2.0020.0002] # VOLCANO -1F30C ; [*12D3.0020.0002] # MILKY WAY -1F30D ; [*12D4.0020.0002] # EARTH GLOBE EUROPE-AFRICA -1F30E ; [*12D5.0020.0002] # EARTH GLOBE AMERICAS -1F30F ; [*12D6.0020.0002] # EARTH GLOBE ASIA-AUSTRALIA -1F310 ; [*12D7.0020.0002] # GLOBE WITH MERIDIANS -1F311 ; [*12D8.0020.0002] # NEW MOON SYMBOL -1F312 ; [*12D9.0020.0002] # WAXING CRESCENT MOON SYMBOL -1F313 ; [*12DA.0020.0002] # FIRST QUARTER MOON SYMBOL -1F314 ; [*12DB.0020.0002] # WAXING GIBBOUS MOON SYMBOL -1F315 ; [*12DC.0020.0002] # FULL MOON SYMBOL -1F316 ; [*12DD.0020.0002] # WANING GIBBOUS MOON SYMBOL -1F317 ; [*12DE.0020.0002] # LAST QUARTER MOON SYMBOL -1F318 ; [*12DF.0020.0002] # WANING CRESCENT MOON SYMBOL -1F319 ; [*12E0.0020.0002] # CRESCENT MOON -1F31A ; [*12E1.0020.0002] # NEW MOON WITH FACE -1F31B ; [*12E2.0020.0002] # FIRST QUARTER MOON WITH FACE -1F31C ; [*12E3.0020.0002] # LAST QUARTER MOON WITH FACE -1F31D ; [*12E4.0020.0002] # FULL MOON WITH FACE -1F31E ; [*12E5.0020.0002] # SUN WITH FACE -1F31F ; [*12E6.0020.0002] # GLOWING STAR -1F320 ; [*12E7.0020.0002] # SHOOTING STAR -1F321 ; [*12E8.0020.0002] # THERMOMETER -1F322 ; [*12E9.0020.0002] # BLACK DROPLET -1F323 ; [*12EA.0020.0002] # WHITE SUN -1F324 ; [*12EB.0020.0002] # WHITE SUN WITH SMALL CLOUD -1F325 ; [*12EC.0020.0002] # WHITE SUN BEHIND CLOUD -1F326 ; [*12ED.0020.0002] # WHITE SUN BEHIND CLOUD WITH RAIN -1F327 ; [*12EE.0020.0002] # CLOUD WITH RAIN -1F328 ; [*12EF.0020.0002] # CLOUD WITH SNOW -1F329 ; [*12F0.0020.0002] # CLOUD WITH LIGHTNING -1F32A ; [*12F1.0020.0002] # CLOUD WITH TORNADO -1F32B ; [*12F2.0020.0002] # FOG -1F32C ; [*12F3.0020.0002] # WIND BLOWING FACE -1F32D ; [*12F4.0020.0002] # HOT DOG -1F32E ; [*12F5.0020.0002] # TACO -1F32F ; [*12F6.0020.0002] # BURRITO -1F330 ; [*12F7.0020.0002] # CHESTNUT -1F331 ; [*12F8.0020.0002] # SEEDLING -1F332 ; [*12F9.0020.0002] # EVERGREEN TREE -1F333 ; [*12FA.0020.0002] # DECIDUOUS TREE -1F334 ; [*12FB.0020.0002] # PALM TREE -1F335 ; [*12FC.0020.0002] # CACTUS -1F336 ; [*12FD.0020.0002] # HOT PEPPER -1F337 ; [*12FE.0020.0002] # TULIP -1F338 ; [*12FF.0020.0002] # CHERRY BLOSSOM -1F339 ; [*1300.0020.0002] # ROSE -1F33A ; [*1301.0020.0002] # HIBISCUS -1F33B ; [*1302.0020.0002] # SUNFLOWER -1F33C ; [*1303.0020.0002] # BLOSSOM -1F33D ; [*1304.0020.0002] # EAR OF MAIZE -1F33E ; [*1305.0020.0002] # EAR OF RICE -1F33F ; [*1306.0020.0002] # HERB -1F340 ; [*1307.0020.0002] # FOUR LEAF CLOVER -1F341 ; [*1308.0020.0002] # MAPLE LEAF -1F342 ; [*1309.0020.0002] # FALLEN LEAF -1F343 ; [*130A.0020.0002] # LEAF FLUTTERING IN WIND -1F344 ; [*130B.0020.0002] # MUSHROOM -1F345 ; [*130C.0020.0002] # TOMATO -1F346 ; [*130D.0020.0002] # AUBERGINE -1F347 ; [*130E.0020.0002] # GRAPES -1F348 ; [*130F.0020.0002] # MELON -1F349 ; [*1310.0020.0002] # WATERMELON -1F34A ; [*1311.0020.0002] # TANGERINE -1F34B ; [*1312.0020.0002] # LEMON -1F34C ; [*1313.0020.0002] # BANANA -1F34D ; [*1314.0020.0002] # PINEAPPLE -1F34E ; [*1315.0020.0002] # RED APPLE -1F34F ; [*1316.0020.0002] # GREEN APPLE -1F350 ; [*1317.0020.0002] # PEAR -1F351 ; [*1318.0020.0002] # PEACH -1F352 ; [*1319.0020.0002] # CHERRIES -1F353 ; [*131A.0020.0002] # STRAWBERRY -1F354 ; [*131B.0020.0002] # HAMBURGER -1F355 ; [*131C.0020.0002] # SLICE OF PIZZA -1F356 ; [*131D.0020.0002] # MEAT ON BONE -1F357 ; [*131E.0020.0002] # POULTRY LEG -1F358 ; [*131F.0020.0002] # RICE CRACKER -1F359 ; [*1320.0020.0002] # RICE BALL -1F35A ; [*1321.0020.0002] # COOKED RICE -1F35B ; [*1322.0020.0002] # CURRY AND RICE -1F35C ; [*1323.0020.0002] # STEAMING BOWL -1F35D ; [*1324.0020.0002] # SPAGHETTI -1F35E ; [*1325.0020.0002] # BREAD -1F35F ; [*1326.0020.0002] # FRENCH FRIES -1F360 ; [*1327.0020.0002] # ROASTED SWEET POTATO -1F361 ; [*1328.0020.0002] # DANGO -1F362 ; [*1329.0020.0002] # ODEN -1F363 ; [*132A.0020.0002] # SUSHI -1F364 ; [*132B.0020.0002] # FRIED SHRIMP -1F365 ; [*132C.0020.0002] # FISH CAKE WITH SWIRL DESIGN -1F366 ; [*132D.0020.0002] # SOFT ICE CREAM -1F367 ; [*132E.0020.0002] # SHAVED ICE -1F368 ; [*132F.0020.0002] # ICE CREAM -1F369 ; [*1330.0020.0002] # DOUGHNUT -1F36A ; [*1331.0020.0002] # COOKIE -1F36B ; [*1332.0020.0002] # CHOCOLATE BAR -1F36C ; [*1333.0020.0002] # CANDY -1F36D ; [*1334.0020.0002] # LOLLIPOP -1F36E ; [*1335.0020.0002] # CUSTARD -1F36F ; [*1336.0020.0002] # HONEY POT -1F370 ; [*1337.0020.0002] # SHORTCAKE -1F371 ; [*1338.0020.0002] # BENTO BOX -1F372 ; [*1339.0020.0002] # POT OF FOOD -1F373 ; [*133A.0020.0002] # COOKING -1F374 ; [*133B.0020.0002] # FORK AND KNIFE -1F375 ; [*133C.0020.0002] # TEACUP WITHOUT HANDLE -1F376 ; [*133D.0020.0002] # SAKE BOTTLE AND CUP -1F377 ; [*133E.0020.0002] # WINE GLASS -1F378 ; [*133F.0020.0002] # COCKTAIL GLASS -1F379 ; [*1340.0020.0002] # TROPICAL DRINK -1F37A ; [*1341.0020.0002] # BEER MUG -1F37B ; [*1342.0020.0002] # CLINKING BEER MUGS -1F37C ; [*1343.0020.0002] # BABY BOTTLE -1F37D ; [*1344.0020.0002] # FORK AND KNIFE WITH PLATE -1F37E ; [*1345.0020.0002] # BOTTLE WITH POPPING CORK -1F37F ; [*1346.0020.0002] # POPCORN -1F380 ; [*1347.0020.0002] # RIBBON -1F381 ; [*1348.0020.0002] # WRAPPED PRESENT -1F382 ; [*1349.0020.0002] # BIRTHDAY CAKE -1F383 ; [*134A.0020.0002] # JACK-O-LANTERN -1F384 ; [*134B.0020.0002] # CHRISTMAS TREE -1F385 ; [*134C.0020.0002] # FATHER CHRISTMAS -1F386 ; [*134D.0020.0002] # FIREWORKS -1F387 ; [*134E.0020.0002] # FIREWORK SPARKLER -1F388 ; [*134F.0020.0002] # BALLOON -1F389 ; [*1350.0020.0002] # PARTY POPPER -1F38A ; [*1351.0020.0002] # CONFETTI BALL -1F38B ; [*1352.0020.0002] # TANABATA TREE -1F38C ; [*1353.0020.0002] # CROSSED FLAGS -1F38D ; [*1354.0020.0002] # PINE DECORATION -1F38E ; [*1355.0020.0002] # JAPANESE DOLLS -1F38F ; [*1356.0020.0002] # CARP STREAMER -1F390 ; [*1357.0020.0002] # WIND CHIME -1F391 ; [*1358.0020.0002] # MOON VIEWING CEREMONY -1F392 ; [*1359.0020.0002] # SCHOOL SATCHEL -1F393 ; [*135A.0020.0002] # GRADUATION CAP -1F394 ; [*135B.0020.0002] # HEART WITH TIP ON THE LEFT -1F395 ; [*135C.0020.0002] # BOUQUET OF FLOWERS -1F396 ; [*135D.0020.0002] # MILITARY MEDAL -1F397 ; [*135E.0020.0002] # REMINDER RIBBON -1F398 ; [*135F.0020.0002] # MUSICAL KEYBOARD WITH JACKS -1F399 ; [*1360.0020.0002] # STUDIO MICROPHONE -1F39A ; [*1361.0020.0002] # LEVEL SLIDER -1F39B ; [*1362.0020.0002] # CONTROL KNOBS -1F39C ; [*1363.0020.0002] # BEAMED ASCENDING MUSICAL NOTES -1F39D ; [*1364.0020.0002] # BEAMED DESCENDING MUSICAL NOTES -1F39E ; [*1365.0020.0002] # FILM FRAMES -1F39F ; [*1366.0020.0002] # ADMISSION TICKETS -1F3A0 ; [*1367.0020.0002] # CAROUSEL HORSE -1F3A1 ; [*1368.0020.0002] # FERRIS WHEEL -1F3A2 ; [*1369.0020.0002] # ROLLER COASTER -1F3A3 ; [*136A.0020.0002] # FISHING POLE AND FISH -1F3A4 ; [*136B.0020.0002] # MICROPHONE -1F3A5 ; [*136C.0020.0002] # MOVIE CAMERA -1F3A6 ; [*136D.0020.0002] # CINEMA -1F3A7 ; [*136E.0020.0002] # HEADPHONE -1F3A8 ; [*136F.0020.0002] # ARTIST PALETTE -1F3A9 ; [*1370.0020.0002] # TOP HAT -1F3AA ; [*1371.0020.0002] # CIRCUS TENT -1F3AB ; [*1372.0020.0002] # TICKET -1F3AC ; [*1373.0020.0002] # CLAPPER BOARD -1F3AD ; [*1374.0020.0002] # PERFORMING ARTS -1F3AE ; [*1375.0020.0002] # VIDEO GAME -1F3AF ; [*1376.0020.0002] # DIRECT HIT -1F3B0 ; [*1377.0020.0002] # SLOT MACHINE -1F3B1 ; [*1378.0020.0002] # BILLIARDS -1F3B2 ; [*1379.0020.0002] # GAME DIE -1F3B3 ; [*137A.0020.0002] # BOWLING -1F3B4 ; [*137B.0020.0002] # FLOWER PLAYING CARDS -1F3B5 ; [*137C.0020.0002] # MUSICAL NOTE -1F3B6 ; [*137D.0020.0002] # MULTIPLE MUSICAL NOTES -1F3B7 ; [*137E.0020.0002] # SAXOPHONE -1F3B8 ; [*137F.0020.0002] # GUITAR -1F3B9 ; [*1380.0020.0002] # MUSICAL KEYBOARD -1F3BA ; [*1381.0020.0002] # TRUMPET -1F3BB ; [*1382.0020.0002] # VIOLIN -1F3BC ; [*1383.0020.0002] # MUSICAL SCORE -1F3BD ; [*1384.0020.0002] # RUNNING SHIRT WITH SASH -1F3BE ; [*1385.0020.0002] # TENNIS RACQUET AND BALL -1F3BF ; [*1386.0020.0002] # SKI AND SKI BOOT -1F3C0 ; [*1387.0020.0002] # BASKETBALL AND HOOP -1F3C1 ; [*1388.0020.0002] # CHEQUERED FLAG -1F3C2 ; [*1389.0020.0002] # SNOWBOARDER -1F3C3 ; [*138A.0020.0002] # RUNNER -1F3C4 ; [*138B.0020.0002] # SURFER -1F3C5 ; [*138C.0020.0002] # SPORTS MEDAL -1F3C6 ; [*138D.0020.0002] # TROPHY -1F3C7 ; [*138E.0020.0002] # HORSE RACING -1F3C8 ; [*138F.0020.0002] # AMERICAN FOOTBALL -1F3C9 ; [*1390.0020.0002] # RUGBY FOOTBALL -1F3CA ; [*1391.0020.0002] # SWIMMER -1F3CB ; [*1392.0020.0002] # WEIGHT LIFTER -1F3CC ; [*1393.0020.0002] # GOLFER -1F3CD ; [*1394.0020.0002] # RACING MOTORCYCLE -1F3CE ; [*1395.0020.0002] # RACING CAR -1F3CF ; [*1396.0020.0002] # CRICKET BAT AND BALL -1F3D0 ; [*1397.0020.0002] # VOLLEYBALL -1F3D1 ; [*1398.0020.0002] # FIELD HOCKEY STICK AND BALL -1F3D2 ; [*1399.0020.0002] # ICE HOCKEY STICK AND PUCK -1F3D3 ; [*139A.0020.0002] # TABLE TENNIS PADDLE AND BALL -1F3D4 ; [*139B.0020.0002] # SNOW CAPPED MOUNTAIN -1F3D5 ; [*139C.0020.0002] # CAMPING -1F3D6 ; [*139D.0020.0002] # BEACH WITH UMBRELLA -1F3D7 ; [*139E.0020.0002] # BUILDING CONSTRUCTION -1F3D8 ; [*139F.0020.0002] # HOUSE BUILDINGS -1F3D9 ; [*13A0.0020.0002] # CITYSCAPE -1F3DA ; [*13A1.0020.0002] # DERELICT HOUSE BUILDING -1F3DB ; [*13A2.0020.0002] # CLASSICAL BUILDING -1F3DC ; [*13A3.0020.0002] # DESERT -1F3DD ; [*13A4.0020.0002] # DESERT ISLAND -1F3DE ; [*13A5.0020.0002] # NATIONAL PARK -1F3DF ; [*13A6.0020.0002] # STADIUM -1F3E0 ; [*13A7.0020.0002] # HOUSE BUILDING -1F3E1 ; [*13A8.0020.0002] # HOUSE WITH GARDEN -1F3E2 ; [*13A9.0020.0002] # OFFICE BUILDING -1F3E3 ; [*13AA.0020.0002] # JAPANESE POST OFFICE -1F3E4 ; [*13AB.0020.0002] # EUROPEAN POST OFFICE -1F3E5 ; [*13AC.0020.0002] # HOSPITAL -1F3E6 ; [*13AD.0020.0002] # BANK -1F3E7 ; [*13AE.0020.0002] # AUTOMATED TELLER MACHINE -1F3E8 ; [*13AF.0020.0002] # HOTEL -1F3E9 ; [*13B0.0020.0002] # LOVE HOTEL -1F3EA ; [*13B1.0020.0002] # CONVENIENCE STORE -1F3EB ; [*13B2.0020.0002] # SCHOOL -1F3EC ; [*13B3.0020.0002] # DEPARTMENT STORE -1F3ED ; [*13B4.0020.0002] # FACTORY -1F3EE ; [*13B5.0020.0002] # IZAKAYA LANTERN -1F3EF ; [*13B6.0020.0002] # JAPANESE CASTLE -1F3F0 ; [*13B7.0020.0002] # EUROPEAN CASTLE -1F3F1 ; [*13B8.0020.0002] # WHITE PENNANT -1F3F2 ; [*13B9.0020.0002] # BLACK PENNANT -1F3F3 ; [*13BA.0020.0002] # WAVING WHITE FLAG -1F3F4 ; [*13BB.0020.0002] # WAVING BLACK FLAG -1F3F5 ; [*13BC.0020.0002] # ROSETTE -1F3F6 ; [*13BD.0020.0002] # BLACK ROSETTE -1F3F7 ; [*13BE.0020.0002] # LABEL -1F3F8 ; [*13BF.0020.0002] # BADMINTON RACQUET AND SHUTTLECOCK -1F3F9 ; [*13C0.0020.0002] # BOW AND ARROW -1F3FA ; [*13C1.0020.0002] # AMPHORA -1F3FB ; [*13C2.0020.0002] # EMOJI MODIFIER FITZPATRICK TYPE-1-2 -1F3FC ; [*13C3.0020.0002] # EMOJI MODIFIER FITZPATRICK TYPE-3 -1F3FD ; [*13C4.0020.0002] # EMOJI MODIFIER FITZPATRICK TYPE-4 -1F3FE ; [*13C5.0020.0002] # EMOJI MODIFIER FITZPATRICK TYPE-5 -1F3FF ; [*13C6.0020.0002] # EMOJI MODIFIER FITZPATRICK TYPE-6 -1F400 ; [*13C7.0020.0002] # RAT -1F401 ; [*13C8.0020.0002] # MOUSE -1F402 ; [*13C9.0020.0002] # OX -1F403 ; [*13CA.0020.0002] # WATER BUFFALO -1F404 ; [*13CB.0020.0002] # COW -1F405 ; [*13CC.0020.0002] # TIGER -1F406 ; [*13CD.0020.0002] # LEOPARD -1F407 ; [*13CE.0020.0002] # RABBIT -1F408 ; [*13CF.0020.0002] # CAT -1F409 ; [*13D0.0020.0002] # DRAGON -1F40A ; [*13D1.0020.0002] # CROCODILE -1F40B ; [*13D2.0020.0002] # WHALE -1F40C ; [*13D3.0020.0002] # SNAIL -1F40D ; [*13D4.0020.0002] # SNAKE -1F40E ; [*13D5.0020.0002] # HORSE -1F40F ; [*13D6.0020.0002] # RAM -1F410 ; [*13D7.0020.0002] # GOAT -1F411 ; [*13D8.0020.0002] # SHEEP -1F412 ; [*13D9.0020.0002] # MONKEY -1F413 ; [*13DA.0020.0002] # ROOSTER -1F414 ; [*13DB.0020.0002] # CHICKEN -1F415 ; [*13DC.0020.0002] # DOG -1F416 ; [*13DD.0020.0002] # PIG -1F417 ; [*13DE.0020.0002] # BOAR -1F418 ; [*13DF.0020.0002] # ELEPHANT -1F419 ; [*13E0.0020.0002] # OCTOPUS -1F41A ; [*13E1.0020.0002] # SPIRAL SHELL -1F41B ; [*13E2.0020.0002] # BUG -1F41C ; [*13E3.0020.0002] # ANT -1F41D ; [*13E4.0020.0002] # HONEYBEE -1F41E ; [*13E5.0020.0002] # LADY BEETLE -1F41F ; [*13E6.0020.0002] # FISH -1F420 ; [*13E7.0020.0002] # TROPICAL FISH -1F421 ; [*13E8.0020.0002] # BLOWFISH -1F422 ; [*13E9.0020.0002] # TURTLE -1F423 ; [*13EA.0020.0002] # HATCHING CHICK -1F424 ; [*13EB.0020.0002] # BABY CHICK -1F425 ; [*13EC.0020.0002] # FRONT-FACING BABY CHICK -1F426 ; [*13ED.0020.0002] # BIRD -1F427 ; [*13EE.0020.0002] # PENGUIN -1F428 ; [*13EF.0020.0002] # KOALA -1F429 ; [*13F0.0020.0002] # POODLE -1F42A ; [*13F1.0020.0002] # DROMEDARY CAMEL -1F42B ; [*13F2.0020.0002] # BACTRIAN CAMEL -1F42C ; [*13F3.0020.0002] # DOLPHIN -1F42D ; [*13F4.0020.0002] # MOUSE FACE -1F42E ; [*13F5.0020.0002] # COW FACE -1F42F ; [*13F6.0020.0002] # TIGER FACE -1F430 ; [*13F7.0020.0002] # RABBIT FACE -1F431 ; [*13F8.0020.0002] # CAT FACE -1F432 ; [*13F9.0020.0002] # DRAGON FACE -1F433 ; [*13FA.0020.0002] # SPOUTING WHALE -1F434 ; [*13FB.0020.0002] # HORSE FACE -1F435 ; [*13FC.0020.0002] # MONKEY FACE -1F436 ; [*13FD.0020.0002] # DOG FACE -1F437 ; [*13FE.0020.0002] # PIG FACE -1F438 ; [*13FF.0020.0002] # FROG FACE -1F439 ; [*1400.0020.0002] # HAMSTER FACE -1F43A ; [*1401.0020.0002] # WOLF FACE -1F43B ; [*1402.0020.0002] # BEAR FACE -1F43C ; [*1403.0020.0002] # PANDA FACE -1F43D ; [*1404.0020.0002] # PIG NOSE -1F43E ; [*1405.0020.0002] # PAW PRINTS -1F43F ; [*1406.0020.0002] # CHIPMUNK -1F440 ; [*1407.0020.0002] # EYES -1F441 ; [*1408.0020.0002] # EYE -1F442 ; [*1409.0020.0002] # EAR -1F443 ; [*140A.0020.0002] # NOSE -1F444 ; [*140B.0020.0002] # MOUTH -1F445 ; [*140C.0020.0002] # TONGUE -1F446 ; [*140D.0020.0002] # WHITE UP POINTING BACKHAND INDEX -1F447 ; [*140E.0020.0002] # WHITE DOWN POINTING BACKHAND INDEX -1F448 ; [*140F.0020.0002] # WHITE LEFT POINTING BACKHAND INDEX -1F449 ; [*1410.0020.0002] # WHITE RIGHT POINTING BACKHAND INDEX -1F44A ; [*1411.0020.0002] # FISTED HAND SIGN -1F44B ; [*1412.0020.0002] # WAVING HAND SIGN -1F44C ; [*1413.0020.0002] # OK HAND SIGN -1F44D ; [*1414.0020.0002] # THUMBS UP SIGN -1F44E ; [*1415.0020.0002] # THUMBS DOWN SIGN -1F44F ; [*1416.0020.0002] # CLAPPING HANDS SIGN -1F450 ; [*1417.0020.0002] # OPEN HANDS SIGN -1F451 ; [*1418.0020.0002] # CROWN -1F452 ; [*1419.0020.0002] # WOMANS HAT -1F453 ; [*141A.0020.0002] # EYEGLASSES -1F454 ; [*141B.0020.0002] # NECKTIE -1F455 ; [*141C.0020.0002] # T-SHIRT -1F456 ; [*141D.0020.0002] # JEANS -1F457 ; [*141E.0020.0002] # DRESS -1F458 ; [*141F.0020.0002] # KIMONO -1F459 ; [*1420.0020.0002] # BIKINI -1F45A ; [*1421.0020.0002] # WOMANS CLOTHES -1F45B ; [*1422.0020.0002] # PURSE -1F45C ; [*1423.0020.0002] # HANDBAG -1F45D ; [*1424.0020.0002] # POUCH -1F45E ; [*1425.0020.0002] # MANS SHOE -1F45F ; [*1426.0020.0002] # ATHLETIC SHOE -1F460 ; [*1427.0020.0002] # HIGH-HEELED SHOE -1F461 ; [*1428.0020.0002] # WOMANS SANDAL -1F462 ; [*1429.0020.0002] # WOMANS BOOTS -1F463 ; [*142A.0020.0002] # FOOTPRINTS -1F464 ; [*142B.0020.0002] # BUST IN SILHOUETTE -1F465 ; [*142C.0020.0002] # BUSTS IN SILHOUETTE -1F466 ; [*142D.0020.0002] # BOY -1F467 ; [*142E.0020.0002] # GIRL -1F468 ; [*142F.0020.0002] # MAN -1F469 ; [*1430.0020.0002] # WOMAN -1F46A ; [*1431.0020.0002] # FAMILY -1F46B ; [*1432.0020.0002] # MAN AND WOMAN HOLDING HANDS -1F46C ; [*1433.0020.0002] # TWO MEN HOLDING HANDS -1F46D ; [*1434.0020.0002] # TWO WOMEN HOLDING HANDS -1F46E ; [*1435.0020.0002] # POLICE OFFICER -1F46F ; [*1436.0020.0002] # WOMAN WITH BUNNY EARS -1F470 ; [*1437.0020.0002] # BRIDE WITH VEIL -1F471 ; [*1438.0020.0002] # PERSON WITH BLOND HAIR -1F472 ; [*1439.0020.0002] # MAN WITH GUA PI MAO -1F473 ; [*143A.0020.0002] # MAN WITH TURBAN -1F474 ; [*143B.0020.0002] # OLDER MAN -1F475 ; [*143C.0020.0002] # OLDER WOMAN -1F476 ; [*143D.0020.0002] # BABY -1F477 ; [*143E.0020.0002] # CONSTRUCTION WORKER -1F478 ; [*143F.0020.0002] # PRINCESS -1F479 ; [*1440.0020.0002] # JAPANESE OGRE -1F47A ; [*1441.0020.0002] # JAPANESE GOBLIN -1F47B ; [*1442.0020.0002] # GHOST -1F47C ; [*1443.0020.0002] # BABY ANGEL -1F47D ; [*1444.0020.0002] # EXTRATERRESTRIAL ALIEN -1F47E ; [*1445.0020.0002] # ALIEN MONSTER -1F47F ; [*1446.0020.0002] # IMP -1F480 ; [*1447.0020.0002] # SKULL -1F481 ; [*1448.0020.0002] # INFORMATION DESK PERSON -1F482 ; [*1449.0020.0002] # GUARDSMAN -1F483 ; [*144A.0020.0002] # DANCER -1F484 ; [*144B.0020.0002] # LIPSTICK -1F485 ; [*144C.0020.0002] # NAIL POLISH -1F486 ; [*144D.0020.0002] # FACE MASSAGE -1F487 ; [*144E.0020.0002] # HAIRCUT -1F488 ; [*144F.0020.0002] # BARBER POLE -1F489 ; [*1450.0020.0002] # SYRINGE -1F48A ; [*1451.0020.0002] # PILL -1F48B ; [*1452.0020.0002] # KISS MARK -1F48C ; [*1453.0020.0002] # LOVE LETTER -1F48D ; [*1454.0020.0002] # RING -1F48E ; [*1455.0020.0002] # GEM STONE -1F48F ; [*1456.0020.0002] # KISS -1F490 ; [*1457.0020.0002] # BOUQUET -1F491 ; [*1458.0020.0002] # COUPLE WITH HEART -1F492 ; [*1459.0020.0002] # WEDDING -1F493 ; [*145A.0020.0002] # BEATING HEART -1F494 ; [*145B.0020.0002] # BROKEN HEART -1F495 ; [*145C.0020.0002] # TWO HEARTS -1F496 ; [*145D.0020.0002] # SPARKLING HEART -1F497 ; [*145E.0020.0002] # GROWING HEART -1F498 ; [*145F.0020.0002] # HEART WITH ARROW -1F499 ; [*1460.0020.0002] # BLUE HEART -1F49A ; [*1461.0020.0002] # GREEN HEART -1F49B ; [*1462.0020.0002] # YELLOW HEART -1F49C ; [*1463.0020.0002] # PURPLE HEART -1F49D ; [*1464.0020.0002] # HEART WITH RIBBON -1F49E ; [*1465.0020.0002] # REVOLVING HEARTS -1F49F ; [*1466.0020.0002] # HEART DECORATION -1F4A0 ; [*1467.0020.0002] # DIAMOND SHAPE WITH A DOT INSIDE -1F4A1 ; [*1468.0020.0002] # ELECTRIC LIGHT BULB -1F4A2 ; [*1469.0020.0002] # ANGER SYMBOL -1F4A3 ; [*146A.0020.0002] # BOMB -1F4A4 ; [*146B.0020.0002] # SLEEPING SYMBOL -1F4A5 ; [*146C.0020.0002] # COLLISION SYMBOL -1F4A6 ; [*146D.0020.0002] # SPLASHING SWEAT SYMBOL -1F4A7 ; [*146E.0020.0002] # DROPLET -1F4A8 ; [*146F.0020.0002] # DASH SYMBOL -1F4A9 ; [*1470.0020.0002] # PILE OF POO -1F4AA ; [*1471.0020.0002] # FLEXED BICEPS -1F4AB ; [*1472.0020.0002] # DIZZY SYMBOL -1F4AC ; [*1473.0020.0002] # SPEECH BALLOON -1F4AD ; [*1474.0020.0002] # THOUGHT BALLOON -1F4AE ; [*1475.0020.0002] # WHITE FLOWER -1F4AF ; [*1476.0020.0002] # HUNDRED POINTS SYMBOL -1F4B0 ; [*1477.0020.0002] # MONEY BAG -1F4B1 ; [*1478.0020.0002] # CURRENCY EXCHANGE -1F4B2 ; [*1479.0020.0002] # HEAVY DOLLAR SIGN -1F4B3 ; [*147A.0020.0002] # CREDIT CARD -1F4B4 ; [*147B.0020.0002] # BANKNOTE WITH YEN SIGN -1F4B5 ; [*147C.0020.0002] # BANKNOTE WITH DOLLAR SIGN -1F4B6 ; [*147D.0020.0002] # BANKNOTE WITH EURO SIGN -1F4B7 ; [*147E.0020.0002] # BANKNOTE WITH POUND SIGN -1F4B8 ; [*147F.0020.0002] # MONEY WITH WINGS -1F4B9 ; [*1480.0020.0002] # CHART WITH UPWARDS TREND AND YEN SIGN -1F4BA ; [*1481.0020.0002] # SEAT -1F4BB ; [*1482.0020.0002] # PERSONAL COMPUTER -1F4BC ; [*1483.0020.0002] # BRIEFCASE -1F4BD ; [*1484.0020.0002] # MINIDISC -1F4BE ; [*1485.0020.0002] # FLOPPY DISK -1F4BF ; [*1486.0020.0002] # OPTICAL DISC -1F4C0 ; [*1487.0020.0002] # DVD -1F4C1 ; [*1488.0020.0002] # FILE FOLDER -1F4C2 ; [*1489.0020.0002] # OPEN FILE FOLDER -1F4C3 ; [*148A.0020.0002] # PAGE WITH CURL -1F4C4 ; [*148B.0020.0002] # PAGE FACING UP -1F4C5 ; [*148C.0020.0002] # CALENDAR -1F4C6 ; [*148D.0020.0002] # TEAR-OFF CALENDAR -1F4C7 ; [*148E.0020.0002] # CARD INDEX -1F4C8 ; [*148F.0020.0002] # CHART WITH UPWARDS TREND -1F4C9 ; [*1490.0020.0002] # CHART WITH DOWNWARDS TREND -1F4CA ; [*1491.0020.0002] # BAR CHART -1F4CB ; [*1492.0020.0002] # CLIPBOARD -1F4CC ; [*1493.0020.0002] # PUSHPIN -1F4CD ; [*1494.0020.0002] # ROUND PUSHPIN -1F4CE ; [*1495.0020.0002] # PAPERCLIP -1F4CF ; [*1496.0020.0002] # STRAIGHT RULER -1F4D0 ; [*1497.0020.0002] # TRIANGULAR RULER -1F4D1 ; [*1498.0020.0002] # BOOKMARK TABS -1F4D2 ; [*1499.0020.0002] # LEDGER -1F4D3 ; [*149A.0020.0002] # NOTEBOOK -1F4D4 ; [*149B.0020.0002] # NOTEBOOK WITH DECORATIVE COVER -1F4D5 ; [*149C.0020.0002] # CLOSED BOOK -1F4D6 ; [*149D.0020.0002] # OPEN BOOK -1F4D7 ; [*149E.0020.0002] # GREEN BOOK -1F4D8 ; [*149F.0020.0002] # BLUE BOOK -1F4D9 ; [*14A0.0020.0002] # ORANGE BOOK -1F4DA ; [*14A1.0020.0002] # BOOKS -1F4DB ; [*14A2.0020.0002] # NAME BADGE -1F4DC ; [*14A3.0020.0002] # SCROLL -1F4DD ; [*14A4.0020.0002] # MEMO -1F4DE ; [*14A5.0020.0002] # TELEPHONE RECEIVER -1F4DF ; [*14A6.0020.0002] # PAGER -1F4E0 ; [*14A7.0020.0002] # FAX MACHINE -1F4E1 ; [*14A8.0020.0002] # SATELLITE ANTENNA -1F4E2 ; [*14A9.0020.0002] # PUBLIC ADDRESS LOUDSPEAKER -1F4E3 ; [*14AA.0020.0002] # CHEERING MEGAPHONE -1F4E4 ; [*14AB.0020.0002] # OUTBOX TRAY -1F4E5 ; [*14AC.0020.0002] # INBOX TRAY -1F4E6 ; [*14AD.0020.0002] # PACKAGE -1F4E7 ; [*14AE.0020.0002] # E-MAIL SYMBOL -1F4E8 ; [*14AF.0020.0002] # INCOMING ENVELOPE -1F4E9 ; [*14B0.0020.0002] # ENVELOPE WITH DOWNWARDS ARROW ABOVE -1F4EA ; [*14B1.0020.0002] # CLOSED MAILBOX WITH LOWERED FLAG -1F4EB ; [*14B2.0020.0002] # CLOSED MAILBOX WITH RAISED FLAG -1F4EC ; [*14B3.0020.0002] # OPEN MAILBOX WITH RAISED FLAG -1F4ED ; [*14B4.0020.0002] # OPEN MAILBOX WITH LOWERED FLAG -1F4EE ; [*14B5.0020.0002] # POSTBOX -1F4EF ; [*14B6.0020.0002] # POSTAL HORN -1F4F0 ; [*14B7.0020.0002] # NEWSPAPER -1F4F1 ; [*14B8.0020.0002] # MOBILE PHONE -1F4F2 ; [*14B9.0020.0002] # MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT -1F4F3 ; [*14BA.0020.0002] # VIBRATION MODE -1F4F4 ; [*14BB.0020.0002] # MOBILE PHONE OFF -1F4F5 ; [*14BC.0020.0002] # NO MOBILE PHONES -1F4F6 ; [*14BD.0020.0002] # ANTENNA WITH BARS -1F4F7 ; [*14BE.0020.0002] # CAMERA -1F4F8 ; [*14BF.0020.0002] # CAMERA WITH FLASH -1F4F9 ; [*14C0.0020.0002] # VIDEO CAMERA -1F4FA ; [*14C1.0020.0002] # TELEVISION -1F4FB ; [*14C2.0020.0002] # RADIO -1F4FC ; [*14C3.0020.0002] # VIDEOCASSETTE -1F4FD ; [*14C4.0020.0002] # FILM PROJECTOR -1F4FE ; [*14C5.0020.0002] # PORTABLE STEREO -1F4FF ; [*14C6.0020.0002] # PRAYER BEADS -1F500 ; [*14C7.0020.0002] # TWISTED RIGHTWARDS ARROWS -1F501 ; [*14C8.0020.0002] # CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS -1F502 ; [*14C9.0020.0002] # CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY -1F503 ; [*14CA.0020.0002] # CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS -1F504 ; [*14CB.0020.0002] # ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS -1F505 ; [*14CC.0020.0002] # LOW BRIGHTNESS SYMBOL -1F506 ; [*14CD.0020.0002] # HIGH BRIGHTNESS SYMBOL -1F507 ; [*14CE.0020.0002] # SPEAKER WITH CANCELLATION STROKE -1F508 ; [*14CF.0020.0002] # SPEAKER -1F509 ; [*14D0.0020.0002] # SPEAKER WITH ONE SOUND WAVE -1F50A ; [*14D1.0020.0002] # SPEAKER WITH THREE SOUND WAVES -1F50B ; [*14D2.0020.0002] # BATTERY -1F50C ; [*14D3.0020.0002] # ELECTRIC PLUG -1F50D ; [*14D4.0020.0002] # LEFT-POINTING MAGNIFYING GLASS -1F50E ; [*14D5.0020.0002] # RIGHT-POINTING MAGNIFYING GLASS -1F50F ; [*14D6.0020.0002] # LOCK WITH INK PEN -1F510 ; [*14D7.0020.0002] # CLOSED LOCK WITH KEY -1F511 ; [*14D8.0020.0002] # KEY -1F512 ; [*14D9.0020.0002] # LOCK -1F513 ; [*14DA.0020.0002] # OPEN LOCK -1F514 ; [*14DB.0020.0002] # BELL -1F515 ; [*14DC.0020.0002] # BELL WITH CANCELLATION STROKE -1F516 ; [*14DD.0020.0002] # BOOKMARK -1F517 ; [*14DE.0020.0002] # LINK SYMBOL -1F518 ; [*14DF.0020.0002] # RADIO BUTTON -1F519 ; [*14E0.0020.0002] # BACK WITH LEFTWARDS ARROW ABOVE -1F51A ; [*14E1.0020.0002] # END WITH LEFTWARDS ARROW ABOVE -1F51B ; [*14E2.0020.0002] # ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE -1F51C ; [*14E3.0020.0002] # SOON WITH RIGHTWARDS ARROW ABOVE -1F51D ; [*14E4.0020.0002] # TOP WITH UPWARDS ARROW ABOVE -1F51E ; [*14E5.0020.0002] # NO ONE UNDER EIGHTEEN SYMBOL -1F51F ; [*14E6.0020.0002] # KEYCAP TEN -1F520 ; [*14E7.0020.0002] # INPUT SYMBOL FOR LATIN CAPITAL LETTERS -1F521 ; [*14E8.0020.0002] # INPUT SYMBOL FOR LATIN SMALL LETTERS -1F522 ; [*14E9.0020.0002] # INPUT SYMBOL FOR NUMBERS -1F523 ; [*14EA.0020.0002] # INPUT SYMBOL FOR SYMBOLS -1F524 ; [*14EB.0020.0002] # INPUT SYMBOL FOR LATIN LETTERS -1F525 ; [*14EC.0020.0002] # FIRE -1F526 ; [*14ED.0020.0002] # ELECTRIC TORCH -1F527 ; [*14EE.0020.0002] # WRENCH -1F528 ; [*14EF.0020.0002] # HAMMER -1F529 ; [*14F0.0020.0002] # NUT AND BOLT -1F52A ; [*14F1.0020.0002] # HOCHO -1F52B ; [*14F2.0020.0002] # PISTOL -1F52C ; [*14F3.0020.0002] # MICROSCOPE -1F52D ; [*14F4.0020.0002] # TELESCOPE -1F52E ; [*14F5.0020.0002] # CRYSTAL BALL -1F52F ; [*14F6.0020.0002] # SIX POINTED STAR WITH MIDDLE DOT -1F530 ; [*14F7.0020.0002] # JAPANESE SYMBOL FOR BEGINNER -1F531 ; [*14F8.0020.0002] # TRIDENT EMBLEM -1F532 ; [*14F9.0020.0002] # BLACK SQUARE BUTTON -1F533 ; [*14FA.0020.0002] # WHITE SQUARE BUTTON -1F534 ; [*14FB.0020.0002] # LARGE RED CIRCLE -1F535 ; [*14FC.0020.0002] # LARGE BLUE CIRCLE -1F536 ; [*14FD.0020.0002] # LARGE ORANGE DIAMOND -1F537 ; [*14FE.0020.0002] # LARGE BLUE DIAMOND -1F538 ; [*14FF.0020.0002] # SMALL ORANGE DIAMOND -1F539 ; [*1500.0020.0002] # SMALL BLUE DIAMOND -1F53A ; [*1501.0020.0002] # UP-POINTING RED TRIANGLE -1F53B ; [*1502.0020.0002] # DOWN-POINTING RED TRIANGLE -1F53C ; [*1503.0020.0002] # UP-POINTING SMALL RED TRIANGLE -1F53D ; [*1504.0020.0002] # DOWN-POINTING SMALL RED TRIANGLE -1F53E ; [*1505.0020.0002] # LOWER RIGHT SHADOWED WHITE CIRCLE -1F53F ; [*1506.0020.0002] # UPPER RIGHT SHADOWED WHITE CIRCLE -1F540 ; [*1507.0020.0002] # CIRCLED CROSS POMMEE -1F541 ; [*1508.0020.0002] # CROSS POMMEE WITH HALF-CIRCLE BELOW -1F542 ; [*1509.0020.0002] # CROSS POMMEE -1F543 ; [*150A.0020.0002] # NOTCHED LEFT SEMICIRCLE WITH THREE DOTS -1F544 ; [*150B.0020.0002] # NOTCHED RIGHT SEMICIRCLE WITH THREE DOTS -1F545 ; [*150C.0020.0002] # SYMBOL FOR MARKS CHAPTER -1F546 ; [*150D.0020.0002] # WHITE LATIN CROSS -1F547 ; [*150E.0020.0002] # HEAVY LATIN CROSS -1F548 ; [*150F.0020.0002] # CELTIC CROSS -1F549 ; [*1510.0020.0002] # OM SYMBOL -1F54A ; [*1511.0020.0002] # DOVE OF PEACE -1F54B ; [*1512.0020.0002] # KAABA -1F54C ; [*1513.0020.0002] # MOSQUE -1F54D ; [*1514.0020.0002] # SYNAGOGUE -1F54E ; [*1515.0020.0002] # MENORAH WITH NINE BRANCHES -1F54F ; [*1516.0020.0002] # BOWL OF HYGIEIA -1F550 ; [*1517.0020.0002] # CLOCK FACE ONE OCLOCK -1F551 ; [*1518.0020.0002] # CLOCK FACE TWO OCLOCK -1F552 ; [*1519.0020.0002] # CLOCK FACE THREE OCLOCK -1F553 ; [*151A.0020.0002] # CLOCK FACE FOUR OCLOCK -1F554 ; [*151B.0020.0002] # CLOCK FACE FIVE OCLOCK -1F555 ; [*151C.0020.0002] # CLOCK FACE SIX OCLOCK -1F556 ; [*151D.0020.0002] # CLOCK FACE SEVEN OCLOCK -1F557 ; [*151E.0020.0002] # CLOCK FACE EIGHT OCLOCK -1F558 ; [*151F.0020.0002] # CLOCK FACE NINE OCLOCK -1F559 ; [*1520.0020.0002] # CLOCK FACE TEN OCLOCK -1F55A ; [*1521.0020.0002] # CLOCK FACE ELEVEN OCLOCK -1F55B ; [*1522.0020.0002] # CLOCK FACE TWELVE OCLOCK -1F55C ; [*1523.0020.0002] # CLOCK FACE ONE-THIRTY -1F55D ; [*1524.0020.0002] # CLOCK FACE TWO-THIRTY -1F55E ; [*1525.0020.0002] # CLOCK FACE THREE-THIRTY -1F55F ; [*1526.0020.0002] # CLOCK FACE FOUR-THIRTY -1F560 ; [*1527.0020.0002] # CLOCK FACE FIVE-THIRTY -1F561 ; [*1528.0020.0002] # CLOCK FACE SIX-THIRTY -1F562 ; [*1529.0020.0002] # CLOCK FACE SEVEN-THIRTY -1F563 ; [*152A.0020.0002] # CLOCK FACE EIGHT-THIRTY -1F564 ; [*152B.0020.0002] # CLOCK FACE NINE-THIRTY -1F565 ; [*152C.0020.0002] # CLOCK FACE TEN-THIRTY -1F566 ; [*152D.0020.0002] # CLOCK FACE ELEVEN-THIRTY -1F567 ; [*152E.0020.0002] # CLOCK FACE TWELVE-THIRTY -1F568 ; [*152F.0020.0002] # RIGHT SPEAKER -1F569 ; [*1530.0020.0002] # RIGHT SPEAKER WITH ONE SOUND WAVE -1F56A ; [*1531.0020.0002] # RIGHT SPEAKER WITH THREE SOUND WAVES -1F56B ; [*1532.0020.0002] # BULLHORN -1F56C ; [*1533.0020.0002] # BULLHORN WITH SOUND WAVES -1F56D ; [*1534.0020.0002] # RINGING BELL -1F56E ; [*1535.0020.0002] # BOOK -1F56F ; [*1536.0020.0002] # CANDLE -1F570 ; [*1537.0020.0002] # MANTELPIECE CLOCK -1F571 ; [*1538.0020.0002] # BLACK SKULL AND CROSSBONES -1F572 ; [*1539.0020.0002] # NO PIRACY -1F573 ; [*153A.0020.0002] # HOLE -1F574 ; [*153B.0020.0002] # MAN IN BUSINESS SUIT LEVITATING -1F575 ; [*153C.0020.0002] # SLEUTH OR SPY -1F576 ; [*153D.0020.0002] # DARK SUNGLASSES -1F577 ; [*153E.0020.0002] # SPIDER -1F578 ; [*153F.0020.0002] # SPIDER WEB -1F579 ; [*1540.0020.0002] # JOYSTICK -1F57A ; [*1541.0020.0002] # MAN DANCING -1F57B ; [*1542.0020.0002] # LEFT HAND TELEPHONE RECEIVER -1F57C ; [*1543.0020.0002] # TELEPHONE RECEIVER WITH PAGE -1F57D ; [*1544.0020.0002] # RIGHT HAND TELEPHONE RECEIVER -1F57E ; [*1545.0020.0002] # WHITE TOUCHTONE TELEPHONE -1F57F ; [*1546.0020.0002] # BLACK TOUCHTONE TELEPHONE -1F580 ; [*1547.0020.0002] # TELEPHONE ON TOP OF MODEM -1F581 ; [*1548.0020.0002] # CLAMSHELL MOBILE PHONE -1F582 ; [*1549.0020.0002] # BACK OF ENVELOPE -1F583 ; [*154A.0020.0002] # STAMPED ENVELOPE -1F584 ; [*154B.0020.0002] # ENVELOPE WITH LIGHTNING -1F585 ; [*154C.0020.0002] # FLYING ENVELOPE -1F586 ; [*154D.0020.0002] # PEN OVER STAMPED ENVELOPE -1F587 ; [*154E.0020.0002] # LINKED PAPERCLIPS -1F588 ; [*154F.0020.0002] # BLACK PUSHPIN -1F589 ; [*1550.0020.0002] # LOWER LEFT PENCIL -1F58A ; [*1551.0020.0002] # LOWER LEFT BALLPOINT PEN -1F58B ; [*1552.0020.0002] # LOWER LEFT FOUNTAIN PEN -1F58C ; [*1553.0020.0002] # LOWER LEFT PAINTBRUSH -1F58D ; [*1554.0020.0002] # LOWER LEFT CRAYON -1F58E ; [*1555.0020.0002] # LEFT WRITING HAND -1F58F ; [*1556.0020.0002] # TURNED OK HAND SIGN -1F590 ; [*1557.0020.0002] # RAISED HAND WITH FINGERS SPLAYED -1F591 ; [*1558.0020.0002] # REVERSED RAISED HAND WITH FINGERS SPLAYED -1F592 ; [*1559.0020.0002] # REVERSED THUMBS UP SIGN -1F593 ; [*155A.0020.0002] # REVERSED THUMBS DOWN SIGN -1F594 ; [*155B.0020.0002] # REVERSED VICTORY HAND -1F595 ; [*155C.0020.0002] # REVERSED HAND WITH MIDDLE FINGER EXTENDED -1F596 ; [*155D.0020.0002] # RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS -1F597 ; [*155E.0020.0002] # WHITE DOWN POINTING LEFT HAND INDEX -1F598 ; [*155F.0020.0002] # SIDEWAYS WHITE LEFT POINTING INDEX -1F599 ; [*1560.0020.0002] # SIDEWAYS WHITE RIGHT POINTING INDEX -1F59A ; [*1561.0020.0002] # SIDEWAYS BLACK LEFT POINTING INDEX -1F59B ; [*1562.0020.0002] # SIDEWAYS BLACK RIGHT POINTING INDEX -1F59C ; [*1563.0020.0002] # BLACK LEFT POINTING BACKHAND INDEX -1F59D ; [*1564.0020.0002] # BLACK RIGHT POINTING BACKHAND INDEX -1F59E ; [*1565.0020.0002] # SIDEWAYS WHITE UP POINTING INDEX -1F59F ; [*1566.0020.0002] # SIDEWAYS WHITE DOWN POINTING INDEX -1F5A0 ; [*1567.0020.0002] # SIDEWAYS BLACK UP POINTING INDEX -1F5A1 ; [*1568.0020.0002] # SIDEWAYS BLACK DOWN POINTING INDEX -1F5A2 ; [*1569.0020.0002] # BLACK UP POINTING BACKHAND INDEX -1F5A3 ; [*156A.0020.0002] # BLACK DOWN POINTING BACKHAND INDEX -1F5A4 ; [*156B.0020.0002] # BLACK HEART -1F5A5 ; [*156C.0020.0002] # DESKTOP COMPUTER -1F5A6 ; [*156D.0020.0002] # KEYBOARD AND MOUSE -1F5A7 ; [*156E.0020.0002] # THREE NETWORKED COMPUTERS -1F5A8 ; [*156F.0020.0002] # PRINTER -1F5A9 ; [*1570.0020.0002] # POCKET CALCULATOR -1F5AA ; [*1571.0020.0002] # BLACK HARD SHELL FLOPPY DISK -1F5AB ; [*1572.0020.0002] # WHITE HARD SHELL FLOPPY DISK -1F5AC ; [*1573.0020.0002] # SOFT SHELL FLOPPY DISK -1F5AD ; [*1574.0020.0002] # TAPE CARTRIDGE -1F5AE ; [*1575.0020.0002] # WIRED KEYBOARD -1F5AF ; [*1576.0020.0002] # ONE BUTTON MOUSE -1F5B0 ; [*1577.0020.0002] # TWO BUTTON MOUSE -1F5B1 ; [*1578.0020.0002] # THREE BUTTON MOUSE -1F5B2 ; [*1579.0020.0002] # TRACKBALL -1F5B3 ; [*157A.0020.0002] # OLD PERSONAL COMPUTER -1F5B4 ; [*157B.0020.0002] # HARD DISK -1F5B5 ; [*157C.0020.0002] # SCREEN -1F5B6 ; [*157D.0020.0002] # PRINTER ICON -1F5B7 ; [*157E.0020.0002] # FAX ICON -1F5B8 ; [*157F.0020.0002] # OPTICAL DISC ICON -1F5B9 ; [*1580.0020.0002] # DOCUMENT WITH TEXT -1F5BA ; [*1581.0020.0002] # DOCUMENT WITH TEXT AND PICTURE -1F5BB ; [*1582.0020.0002] # DOCUMENT WITH PICTURE -1F5BC ; [*1583.0020.0002] # FRAME WITH PICTURE -1F5BD ; [*1584.0020.0002] # FRAME WITH TILES -1F5BE ; [*1585.0020.0002] # FRAME WITH AN X -1F5BF ; [*1586.0020.0002] # BLACK FOLDER -1F5C0 ; [*1587.0020.0002] # FOLDER -1F5C1 ; [*1588.0020.0002] # OPEN FOLDER -1F5C2 ; [*1589.0020.0002] # CARD INDEX DIVIDERS -1F5C3 ; [*158A.0020.0002] # CARD FILE BOX -1F5C4 ; [*158B.0020.0002] # FILE CABINET -1F5C5 ; [*158C.0020.0002] # EMPTY NOTE -1F5C6 ; [*158D.0020.0002] # EMPTY NOTE PAGE -1F5C7 ; [*158E.0020.0002] # EMPTY NOTE PAD -1F5C8 ; [*158F.0020.0002] # NOTE -1F5C9 ; [*1590.0020.0002] # NOTE PAGE -1F5CA ; [*1591.0020.0002] # NOTE PAD -1F5CB ; [*1592.0020.0002] # EMPTY DOCUMENT -1F5CC ; [*1593.0020.0002] # EMPTY PAGE -1F5CD ; [*1594.0020.0002] # EMPTY PAGES -1F5CE ; [*1595.0020.0002] # DOCUMENT -1F5CF ; [*1596.0020.0002] # PAGE -1F5D0 ; [*1597.0020.0002] # PAGES -1F5D1 ; [*1598.0020.0002] # WASTEBASKET -1F5D2 ; [*1599.0020.0002] # SPIRAL NOTE PAD -1F5D3 ; [*159A.0020.0002] # SPIRAL CALENDAR PAD -1F5D4 ; [*159B.0020.0002] # DESKTOP WINDOW -1F5D5 ; [*159C.0020.0002] # MINIMIZE -1F5D6 ; [*159D.0020.0002] # MAXIMIZE -1F5D7 ; [*159E.0020.0002] # OVERLAP -1F5D8 ; [*159F.0020.0002] # CLOCKWISE RIGHT AND LEFT SEMICIRCLE ARROWS -1F5D9 ; [*15A0.0020.0002] # CANCELLATION X -1F5DA ; [*15A1.0020.0002] # INCREASE FONT SIZE SYMBOL -1F5DB ; [*15A2.0020.0002] # DECREASE FONT SIZE SYMBOL -1F5DC ; [*15A3.0020.0002] # COMPRESSION -1F5DD ; [*15A4.0020.0002] # OLD KEY -1F5DE ; [*15A5.0020.0002] # ROLLED-UP NEWSPAPER -1F5DF ; [*15A6.0020.0002] # PAGE WITH CIRCLED TEXT -1F5E0 ; [*15A7.0020.0002] # STOCK CHART -1F5E1 ; [*15A8.0020.0002] # DAGGER KNIFE -1F5E2 ; [*15A9.0020.0002] # LIPS -1F5E3 ; [*15AA.0020.0002] # SPEAKING HEAD IN SILHOUETTE -1F5E4 ; [*15AB.0020.0002] # THREE RAYS ABOVE -1F5E5 ; [*15AC.0020.0002] # THREE RAYS BELOW -1F5E6 ; [*15AD.0020.0002] # THREE RAYS LEFT -1F5E7 ; [*15AE.0020.0002] # THREE RAYS RIGHT -1F5E8 ; [*15AF.0020.0002] # LEFT SPEECH BUBBLE -1F5E9 ; [*15B0.0020.0002] # RIGHT SPEECH BUBBLE -1F5EA ; [*15B1.0020.0002] # TWO SPEECH BUBBLES -1F5EB ; [*15B2.0020.0002] # THREE SPEECH BUBBLES -1F5EC ; [*15B3.0020.0002] # LEFT THOUGHT BUBBLE -1F5ED ; [*15B4.0020.0002] # RIGHT THOUGHT BUBBLE -1F5EE ; [*15B5.0020.0002] # LEFT ANGER BUBBLE -1F5EF ; [*15B6.0020.0002] # RIGHT ANGER BUBBLE -1F5F0 ; [*15B7.0020.0002] # MOOD BUBBLE -1F5F1 ; [*15B8.0020.0002] # LIGHTNING MOOD BUBBLE -1F5F2 ; [*15B9.0020.0002] # LIGHTNING MOOD -1F5F3 ; [*15BA.0020.0002] # BALLOT BOX WITH BALLOT -1F5F4 ; [*15BB.0020.0002] # BALLOT SCRIPT X -1F5F5 ; [*15BC.0020.0002] # BALLOT BOX WITH SCRIPT X -1F5F6 ; [*15BD.0020.0002] # BALLOT BOLD SCRIPT X -1F5F7 ; [*15BE.0020.0002] # BALLOT BOX WITH BOLD SCRIPT X -1F5F8 ; [*15BF.0020.0002] # LIGHT CHECK MARK -1F5F9 ; [*15C0.0020.0002] # BALLOT BOX WITH BOLD CHECK -1F5FA ; [*15C1.0020.0002] # WORLD MAP -1F5FB ; [*15C2.0020.0002] # MOUNT FUJI -1F5FC ; [*15C3.0020.0002] # TOKYO TOWER -1F5FD ; [*15C4.0020.0002] # STATUE OF LIBERTY -1F5FE ; [*15C5.0020.0002] # SILHOUETTE OF JAPAN -1F5FF ; [*15C6.0020.0002] # MOYAI -1F600 ; [*165B.0020.0002] # GRINNING FACE -1F601 ; [*165C.0020.0002] # GRINNING FACE WITH SMILING EYES -1F602 ; [*165D.0020.0002] # FACE WITH TEARS OF JOY -1F603 ; [*165E.0020.0002] # SMILING FACE WITH OPEN MOUTH -1F604 ; [*165F.0020.0002] # SMILING FACE WITH OPEN MOUTH AND SMILING EYES -1F605 ; [*1660.0020.0002] # SMILING FACE WITH OPEN MOUTH AND COLD SWEAT -1F606 ; [*1661.0020.0002] # SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES -1F607 ; [*1662.0020.0002] # SMILING FACE WITH HALO -1F608 ; [*1663.0020.0002] # SMILING FACE WITH HORNS -1F609 ; [*1664.0020.0002] # WINKING FACE -1F60A ; [*1665.0020.0002] # SMILING FACE WITH SMILING EYES -1F60B ; [*1666.0020.0002] # FACE SAVOURING DELICIOUS FOOD -1F60C ; [*1667.0020.0002] # RELIEVED FACE -1F60D ; [*1668.0020.0002] # SMILING FACE WITH HEART-SHAPED EYES -1F60E ; [*1669.0020.0002] # SMILING FACE WITH SUNGLASSES -1F60F ; [*166A.0020.0002] # SMIRKING FACE -1F610 ; [*166B.0020.0002] # NEUTRAL FACE -1F611 ; [*166C.0020.0002] # EXPRESSIONLESS FACE -1F612 ; [*166D.0020.0002] # UNAMUSED FACE -1F613 ; [*166E.0020.0002] # FACE WITH COLD SWEAT -1F614 ; [*166F.0020.0002] # PENSIVE FACE -1F615 ; [*1670.0020.0002] # CONFUSED FACE -1F616 ; [*1671.0020.0002] # CONFOUNDED FACE -1F617 ; [*1672.0020.0002] # KISSING FACE -1F618 ; [*1673.0020.0002] # FACE THROWING A KISS -1F619 ; [*1674.0020.0002] # KISSING FACE WITH SMILING EYES -1F61A ; [*1675.0020.0002] # KISSING FACE WITH CLOSED EYES -1F61B ; [*1676.0020.0002] # FACE WITH STUCK-OUT TONGUE -1F61C ; [*1677.0020.0002] # FACE WITH STUCK-OUT TONGUE AND WINKING EYE -1F61D ; [*1678.0020.0002] # FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES -1F61E ; [*1679.0020.0002] # DISAPPOINTED FACE -1F61F ; [*167A.0020.0002] # WORRIED FACE -1F620 ; [*167B.0020.0002] # ANGRY FACE -1F621 ; [*167C.0020.0002] # POUTING FACE -1F622 ; [*167D.0020.0002] # CRYING FACE -1F623 ; [*167E.0020.0002] # PERSEVERING FACE -1F624 ; [*167F.0020.0002] # FACE WITH LOOK OF TRIUMPH -1F625 ; [*1680.0020.0002] # DISAPPOINTED BUT RELIEVED FACE -1F626 ; [*1681.0020.0002] # FROWNING FACE WITH OPEN MOUTH -1F627 ; [*1682.0020.0002] # ANGUISHED FACE -1F628 ; [*1683.0020.0002] # FEARFUL FACE -1F629 ; [*1684.0020.0002] # WEARY FACE -1F62A ; [*1685.0020.0002] # SLEEPY FACE -1F62B ; [*1686.0020.0002] # TIRED FACE -1F62C ; [*1687.0020.0002] # GRIMACING FACE -1F62D ; [*1688.0020.0002] # LOUDLY CRYING FACE -1F62E ; [*1689.0020.0002] # FACE WITH OPEN MOUTH -1F62F ; [*168A.0020.0002] # HUSHED FACE -1F630 ; [*168B.0020.0002] # FACE WITH OPEN MOUTH AND COLD SWEAT -1F631 ; [*168C.0020.0002] # FACE SCREAMING IN FEAR -1F632 ; [*168D.0020.0002] # ASTONISHED FACE -1F633 ; [*168E.0020.0002] # FLUSHED FACE -1F634 ; [*168F.0020.0002] # SLEEPING FACE -1F635 ; [*1690.0020.0002] # DIZZY FACE -1F636 ; [*1691.0020.0002] # FACE WITHOUT MOUTH -1F637 ; [*1692.0020.0002] # FACE WITH MEDICAL MASK -1F638 ; [*1693.0020.0002] # GRINNING CAT FACE WITH SMILING EYES -1F639 ; [*1694.0020.0002] # CAT FACE WITH TEARS OF JOY -1F63A ; [*1695.0020.0002] # SMILING CAT FACE WITH OPEN MOUTH -1F63B ; [*1696.0020.0002] # SMILING CAT FACE WITH HEART-SHAPED EYES -1F63C ; [*1697.0020.0002] # CAT FACE WITH WRY SMILE -1F63D ; [*1698.0020.0002] # KISSING CAT FACE WITH CLOSED EYES -1F63E ; [*1699.0020.0002] # POUTING CAT FACE -1F63F ; [*169A.0020.0002] # CRYING CAT FACE -1F640 ; [*169B.0020.0002] # WEARY CAT FACE -1F641 ; [*169C.0020.0002] # SLIGHTLY FROWNING FACE -1F642 ; [*169D.0020.0002] # SLIGHTLY SMILING FACE -1F643 ; [*169E.0020.0002] # UPSIDE-DOWN FACE -1F644 ; [*169F.0020.0002] # FACE WITH ROLLING EYES -1F645 ; [*16A0.0020.0002] # FACE WITH NO GOOD GESTURE -1F646 ; [*16A1.0020.0002] # FACE WITH OK GESTURE -1F647 ; [*16A2.0020.0002] # PERSON BOWING DEEPLY -1F648 ; [*16A3.0020.0002] # SEE-NO-EVIL MONKEY -1F649 ; [*16A4.0020.0002] # HEAR-NO-EVIL MONKEY -1F64A ; [*16A5.0020.0002] # SPEAK-NO-EVIL MONKEY -1F64B ; [*16A6.0020.0002] # HAPPY PERSON RAISING ONE HAND -1F64C ; [*16A7.0020.0002] # PERSON RAISING BOTH HANDS IN CELEBRATION -1F64D ; [*16A8.0020.0002] # PERSON FROWNING -1F64E ; [*16A9.0020.0002] # PERSON WITH POUTING FACE -1F64F ; [*16AA.0020.0002] # PERSON WITH FOLDED HANDS -1F650 ; [*16AB.0020.0002] # NORTH WEST POINTING LEAF -1F651 ; [*16AC.0020.0002] # SOUTH WEST POINTING LEAF -1F652 ; [*16AD.0020.0002] # NORTH EAST POINTING LEAF -1F653 ; [*16AE.0020.0002] # SOUTH EAST POINTING LEAF -1F654 ; [*16AF.0020.0002] # TURNED NORTH WEST POINTING LEAF -1F655 ; [*16B0.0020.0002] # TURNED SOUTH WEST POINTING LEAF -1F656 ; [*16B1.0020.0002] # TURNED NORTH EAST POINTING LEAF -1F657 ; [*16B2.0020.0002] # TURNED SOUTH EAST POINTING LEAF -1F658 ; [*16B3.0020.0002] # NORTH WEST POINTING VINE LEAF -1F659 ; [*16B4.0020.0002] # SOUTH WEST POINTING VINE LEAF -1F65A ; [*16B5.0020.0002] # NORTH EAST POINTING VINE LEAF -1F65B ; [*16B6.0020.0002] # SOUTH EAST POINTING VINE LEAF -1F65C ; [*16B7.0020.0002] # HEAVY NORTH WEST POINTING VINE LEAF -1F65D ; [*16B8.0020.0002] # HEAVY SOUTH WEST POINTING VINE LEAF -1F65E ; [*16B9.0020.0002] # HEAVY NORTH EAST POINTING VINE LEAF -1F65F ; [*16BA.0020.0002] # HEAVY SOUTH EAST POINTING VINE LEAF -1F660 ; [*16BB.0020.0002] # NORTH WEST POINTING BUD -1F661 ; [*16BC.0020.0002] # SOUTH WEST POINTING BUD -1F662 ; [*16BD.0020.0002] # NORTH EAST POINTING BUD -1F663 ; [*16BE.0020.0002] # SOUTH EAST POINTING BUD -1F664 ; [*16BF.0020.0002] # HEAVY NORTH WEST POINTING BUD -1F665 ; [*16C0.0020.0002] # HEAVY SOUTH WEST POINTING BUD -1F666 ; [*16C1.0020.0002] # HEAVY NORTH EAST POINTING BUD -1F667 ; [*16C2.0020.0002] # HEAVY SOUTH EAST POINTING BUD -1F668 ; [*16C3.0020.0002] # HOLLOW QUILT SQUARE ORNAMENT -1F669 ; [*16C4.0020.0002] # HOLLOW QUILT SQUARE ORNAMENT IN BLACK SQUARE -1F66A ; [*16C5.0020.0002] # SOLID QUILT SQUARE ORNAMENT -1F66B ; [*16C6.0020.0002] # SOLID QUILT SQUARE ORNAMENT IN BLACK SQUARE -1F66C ; [*16C7.0020.0002] # LEFTWARDS ROCKET -1F66D ; [*16C8.0020.0002] # UPWARDS ROCKET -1F66E ; [*16C9.0020.0002] # RIGHTWARDS ROCKET -1F66F ; [*16CA.0020.0002] # DOWNWARDS ROCKET -1F670 ; [*16CB.0020.0002] # SCRIPT LIGATURE ET ORNAMENT -1F671 ; [*16CC.0020.0002] # HEAVY SCRIPT LIGATURE ET ORNAMENT -1F672 ; [*16CD.0020.0002] # LIGATURE OPEN ET ORNAMENT -1F673 ; [*16CE.0020.0002] # HEAVY LIGATURE OPEN ET ORNAMENT -1F674 ; [*16CF.0020.0002] # HEAVY AMPERSAND ORNAMENT -1F675 ; [*16D0.0020.0002] # SWASH AMPERSAND ORNAMENT -1F676 ; [*16D1.0020.0002] # SANS-SERIF HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT -1F677 ; [*16D2.0020.0002] # SANS-SERIF HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT -1F678 ; [*16D3.0020.0002] # SANS-SERIF HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT -1F679 ; [*16D4.0020.0002] # HEAVY INTERROBANG ORNAMENT -1F67A ; [*16D5.0020.0002] # SANS-SERIF INTERROBANG ORNAMENT -1F67B ; [*16D6.0020.0002] # HEAVY SANS-SERIF INTERROBANG ORNAMENT -1F67C ; [*16D7.0020.0002] # VERY HEAVY SOLIDUS -1F67D ; [*16D8.0020.0002] # VERY HEAVY REVERSE SOLIDUS -1F67E ; [*16D9.0020.0002] # CHECKER BOARD -1F67F ; [*16DA.0020.0002] # REVERSE CHECKER BOARD -1F680 ; [*16DB.0020.0002] # ROCKET -1F681 ; [*16DC.0020.0002] # HELICOPTER -1F682 ; [*16DD.0020.0002] # STEAM LOCOMOTIVE -1F683 ; [*16DE.0020.0002] # RAILWAY CAR -1F684 ; [*16DF.0020.0002] # HIGH-SPEED TRAIN -1F685 ; [*16E0.0020.0002] # HIGH-SPEED TRAIN WITH BULLET NOSE -1F686 ; [*16E1.0020.0002] # TRAIN -1F687 ; [*16E2.0020.0002] # METRO -1F688 ; [*16E3.0020.0002] # LIGHT RAIL -1F689 ; [*16E4.0020.0002] # STATION -1F68A ; [*16E5.0020.0002] # TRAM -1F68B ; [*16E6.0020.0002] # TRAM CAR -1F68C ; [*16E7.0020.0002] # BUS -1F68D ; [*16E8.0020.0002] # ONCOMING BUS -1F68E ; [*16E9.0020.0002] # TROLLEYBUS -1F68F ; [*16EA.0020.0002] # BUS STOP -1F690 ; [*16EB.0020.0002] # MINIBUS -1F691 ; [*16EC.0020.0002] # AMBULANCE -1F692 ; [*16ED.0020.0002] # FIRE ENGINE -1F693 ; [*16EE.0020.0002] # POLICE CAR -1F694 ; [*16EF.0020.0002] # ONCOMING POLICE CAR -1F695 ; [*16F0.0020.0002] # TAXI -1F696 ; [*16F1.0020.0002] # ONCOMING TAXI -1F697 ; [*16F2.0020.0002] # AUTOMOBILE -1F698 ; [*16F3.0020.0002] # ONCOMING AUTOMOBILE -1F699 ; [*16F4.0020.0002] # RECREATIONAL VEHICLE -1F69A ; [*16F5.0020.0002] # DELIVERY TRUCK -1F69B ; [*16F6.0020.0002] # ARTICULATED LORRY -1F69C ; [*16F7.0020.0002] # TRACTOR -1F69D ; [*16F8.0020.0002] # MONORAIL -1F69E ; [*16F9.0020.0002] # MOUNTAIN RAILWAY -1F69F ; [*16FA.0020.0002] # SUSPENSION RAILWAY -1F6A0 ; [*16FB.0020.0002] # MOUNTAIN CABLEWAY -1F6A1 ; [*16FC.0020.0002] # AERIAL TRAMWAY -1F6A2 ; [*16FD.0020.0002] # SHIP -1F6A3 ; [*16FE.0020.0002] # ROWBOAT -1F6A4 ; [*16FF.0020.0002] # SPEEDBOAT -1F6A5 ; [*1700.0020.0002] # HORIZONTAL TRAFFIC LIGHT -1F6A6 ; [*1701.0020.0002] # VERTICAL TRAFFIC LIGHT -1F6A7 ; [*1702.0020.0002] # CONSTRUCTION SIGN -1F6A8 ; [*1703.0020.0002] # POLICE CARS REVOLVING LIGHT -1F6A9 ; [*1704.0020.0002] # TRIANGULAR FLAG ON POST -1F6AA ; [*1705.0020.0002] # DOOR -1F6AB ; [*1706.0020.0002] # NO ENTRY SIGN -1F6AC ; [*1707.0020.0002] # SMOKING SYMBOL -1F6AD ; [*1708.0020.0002] # NO SMOKING SYMBOL -1F6AE ; [*1709.0020.0002] # PUT LITTER IN ITS PLACE SYMBOL -1F6AF ; [*170A.0020.0002] # DO NOT LITTER SYMBOL -1F6B0 ; [*170B.0020.0002] # POTABLE WATER SYMBOL -1F6B1 ; [*170C.0020.0002] # NON-POTABLE WATER SYMBOL -1F6B2 ; [*170D.0020.0002] # BICYCLE -1F6B3 ; [*170E.0020.0002] # NO BICYCLES -1F6B4 ; [*170F.0020.0002] # BICYCLIST -1F6B5 ; [*1710.0020.0002] # MOUNTAIN BICYCLIST -1F6B6 ; [*1711.0020.0002] # PEDESTRIAN -1F6B7 ; [*1712.0020.0002] # NO PEDESTRIANS -1F6B8 ; [*1713.0020.0002] # CHILDREN CROSSING -1F6B9 ; [*1714.0020.0002] # MENS SYMBOL -1F6BA ; [*1715.0020.0002] # WOMENS SYMBOL -1F6BB ; [*1716.0020.0002] # RESTROOM -1F6BC ; [*1717.0020.0002] # BABY SYMBOL -1F6BD ; [*1718.0020.0002] # TOILET -1F6BE ; [*1719.0020.0002] # WATER CLOSET -1F6BF ; [*171A.0020.0002] # SHOWER -1F6C0 ; [*171B.0020.0002] # BATH -1F6C1 ; [*171C.0020.0002] # BATHTUB -1F6C2 ; [*171D.0020.0002] # PASSPORT CONTROL -1F6C3 ; [*171E.0020.0002] # CUSTOMS -1F6C4 ; [*171F.0020.0002] # BAGGAGE CLAIM -1F6C5 ; [*1720.0020.0002] # LEFT LUGGAGE -1F6C6 ; [*1721.0020.0002] # TRIANGLE WITH ROUNDED CORNERS -1F6C7 ; [*1722.0020.0002] # PROHIBITED SIGN -1F6C8 ; [*1723.0020.0002] # CIRCLED INFORMATION SOURCE -1F6C9 ; [*1724.0020.0002] # BOYS SYMBOL -1F6CA ; [*1725.0020.0002] # GIRLS SYMBOL -1F6CB ; [*1726.0020.0002] # COUCH AND LAMP -1F6CC ; [*1727.0020.0002] # SLEEPING ACCOMMODATION -1F6CD ; [*1728.0020.0002] # SHOPPING BAGS -1F6CE ; [*1729.0020.0002] # BELLHOP BELL -1F6CF ; [*172A.0020.0002] # BED -1F6D0 ; [*172B.0020.0002] # PLACE OF WORSHIP -1F6D1 ; [*172C.0020.0002] # OCTAGONAL SIGN -1F6D2 ; [*172D.0020.0002] # SHOPPING TROLLEY -1F6D3 ; [*172E.0020.0002] # STUPA -1F6D4 ; [*172F.0020.0002] # PAGODA -1F6E0 ; [*1730.0020.0002] # HAMMER AND WRENCH -1F6E1 ; [*1731.0020.0002] # SHIELD -1F6E2 ; [*1732.0020.0002] # OIL DRUM -1F6E3 ; [*1733.0020.0002] # MOTORWAY -1F6E4 ; [*1734.0020.0002] # RAILWAY TRACK -1F6E5 ; [*1735.0020.0002] # MOTOR BOAT -1F6E6 ; [*1736.0020.0002] # UP-POINTING MILITARY AIRPLANE -1F6E7 ; [*1737.0020.0002] # UP-POINTING AIRPLANE -1F6E8 ; [*1738.0020.0002] # UP-POINTING SMALL AIRPLANE -1F6E9 ; [*1739.0020.0002] # SMALL AIRPLANE -1F6EA ; [*173A.0020.0002] # NORTHEAST-POINTING AIRPLANE -1F6EB ; [*173B.0020.0002] # AIRPLANE DEPARTURE -1F6EC ; [*173C.0020.0002] # AIRPLANE ARRIVING -1F6F0 ; [*173D.0020.0002] # SATELLITE -1F6F1 ; [*173E.0020.0002] # ONCOMING FIRE ENGINE -1F6F2 ; [*173F.0020.0002] # DIESEL LOCOMOTIVE -1F6F3 ; [*1740.0020.0002] # PASSENGER SHIP -1F6F4 ; [*1741.0020.0002] # SCOOTER -1F6F5 ; [*1742.0020.0002] # MOTOR SCOOTER -1F6F6 ; [*1743.0020.0002] # CANOE -1F6F7 ; [*1744.0020.0002] # SLED -1F6F8 ; [*1745.0020.0002] # FLYING SAUCER -1F700 ; [*1746.0020.0002] # ALCHEMICAL SYMBOL FOR QUINTESSENCE -1F701 ; [*1747.0020.0002] # ALCHEMICAL SYMBOL FOR AIR -1F702 ; [*1748.0020.0002] # ALCHEMICAL SYMBOL FOR FIRE -1F703 ; [*1749.0020.0002] # ALCHEMICAL SYMBOL FOR EARTH -1F704 ; [*174A.0020.0002] # ALCHEMICAL SYMBOL FOR WATER -1F705 ; [*174B.0020.0002] # ALCHEMICAL SYMBOL FOR AQUAFORTIS -1F706 ; [*174C.0020.0002] # ALCHEMICAL SYMBOL FOR AQUA REGIA -1F707 ; [*174D.0020.0002] # ALCHEMICAL SYMBOL FOR AQUA REGIA-2 -1F708 ; [*174E.0020.0002] # ALCHEMICAL SYMBOL FOR AQUA VITAE -1F709 ; [*174F.0020.0002] # ALCHEMICAL SYMBOL FOR AQUA VITAE-2 -1F70A ; [*1750.0020.0002] # ALCHEMICAL SYMBOL FOR VINEGAR -1F70B ; [*1751.0020.0002] # ALCHEMICAL SYMBOL FOR VINEGAR-2 -1F70C ; [*1752.0020.0002] # ALCHEMICAL SYMBOL FOR VINEGAR-3 -1F70D ; [*1753.0020.0002] # ALCHEMICAL SYMBOL FOR SULFUR -1F70E ; [*1754.0020.0002] # ALCHEMICAL SYMBOL FOR PHILOSOPHERS SULFUR -1F70F ; [*1755.0020.0002] # ALCHEMICAL SYMBOL FOR BLACK SULFUR -1F710 ; [*1756.0020.0002] # ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE -1F711 ; [*1757.0020.0002] # ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-2 -1F712 ; [*1758.0020.0002] # ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-3 -1F713 ; [*1759.0020.0002] # ALCHEMICAL SYMBOL FOR CINNABAR -1F714 ; [*175A.0020.0002] # ALCHEMICAL SYMBOL FOR SALT -1F715 ; [*175B.0020.0002] # ALCHEMICAL SYMBOL FOR NITRE -1F716 ; [*175C.0020.0002] # ALCHEMICAL SYMBOL FOR VITRIOL -1F717 ; [*175D.0020.0002] # ALCHEMICAL SYMBOL FOR VITRIOL-2 -1F718 ; [*175E.0020.0002] # ALCHEMICAL SYMBOL FOR ROCK SALT -1F719 ; [*175F.0020.0002] # ALCHEMICAL SYMBOL FOR ROCK SALT-2 -1F71A ; [*1760.0020.0002] # ALCHEMICAL SYMBOL FOR GOLD -1F71B ; [*1761.0020.0002] # ALCHEMICAL SYMBOL FOR SILVER -1F71C ; [*1762.0020.0002] # ALCHEMICAL SYMBOL FOR IRON ORE -1F71D ; [*1763.0020.0002] # ALCHEMICAL SYMBOL FOR IRON ORE-2 -1F71E ; [*1764.0020.0002] # ALCHEMICAL SYMBOL FOR CROCUS OF IRON -1F71F ; [*1765.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS OF IRON -1F720 ; [*1766.0020.0002] # ALCHEMICAL SYMBOL FOR COPPER ORE -1F721 ; [*1767.0020.0002] # ALCHEMICAL SYMBOL FOR IRON-COPPER ORE -1F722 ; [*1768.0020.0002] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF COPPER -1F723 ; [*1769.0020.0002] # ALCHEMICAL SYMBOL FOR CROCUS OF COPPER -1F724 ; [*176A.0020.0002] # ALCHEMICAL SYMBOL FOR CROCUS OF COPPER-2 -1F725 ; [*176B.0020.0002] # ALCHEMICAL SYMBOL FOR COPPER ANTIMONIATE -1F726 ; [*176C.0020.0002] # ALCHEMICAL SYMBOL FOR SALT OF COPPER ANTIMONIATE -1F727 ; [*176D.0020.0002] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF COPPER -1F728 ; [*176E.0020.0002] # ALCHEMICAL SYMBOL FOR VERDIGRIS -1F729 ; [*176F.0020.0002] # ALCHEMICAL SYMBOL FOR TIN ORE -1F72A ; [*1770.0020.0002] # ALCHEMICAL SYMBOL FOR LEAD ORE -1F72B ; [*1771.0020.0002] # ALCHEMICAL SYMBOL FOR ANTIMONY ORE -1F72C ; [*1772.0020.0002] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF ANTIMONY -1F72D ; [*1773.0020.0002] # ALCHEMICAL SYMBOL FOR SALT OF ANTIMONY -1F72E ; [*1774.0020.0002] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF ANTIMONY -1F72F ; [*1775.0020.0002] # ALCHEMICAL SYMBOL FOR VINEGAR OF ANTIMONY -1F730 ; [*1776.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY -1F731 ; [*1777.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY-2 -1F732 ; [*1778.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS -1F733 ; [*1779.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS-2 -1F734 ; [*177A.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS-3 -1F735 ; [*177B.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS-4 -1F736 ; [*177C.0020.0002] # ALCHEMICAL SYMBOL FOR ALKALI -1F737 ; [*177D.0020.0002] # ALCHEMICAL SYMBOL FOR ALKALI-2 -1F738 ; [*177E.0020.0002] # ALCHEMICAL SYMBOL FOR MARCASITE -1F739 ; [*177F.0020.0002] # ALCHEMICAL SYMBOL FOR SAL-AMMONIAC -1F73A ; [*1780.0020.0002] # ALCHEMICAL SYMBOL FOR ARSENIC -1F73B ; [*1781.0020.0002] # ALCHEMICAL SYMBOL FOR REALGAR -1F73C ; [*1782.0020.0002] # ALCHEMICAL SYMBOL FOR REALGAR-2 -1F73D ; [*1783.0020.0002] # ALCHEMICAL SYMBOL FOR AURIPIGMENT -1F73E ; [*1784.0020.0002] # ALCHEMICAL SYMBOL FOR BISMUTH ORE -1F73F ; [*1785.0020.0002] # ALCHEMICAL SYMBOL FOR TARTAR -1F740 ; [*1786.0020.0002] # ALCHEMICAL SYMBOL FOR TARTAR-2 -1F741 ; [*1787.0020.0002] # ALCHEMICAL SYMBOL FOR QUICK LIME -1F742 ; [*1788.0020.0002] # ALCHEMICAL SYMBOL FOR BORAX -1F743 ; [*1789.0020.0002] # ALCHEMICAL SYMBOL FOR BORAX-2 -1F744 ; [*178A.0020.0002] # ALCHEMICAL SYMBOL FOR BORAX-3 -1F745 ; [*178B.0020.0002] # ALCHEMICAL SYMBOL FOR ALUM -1F746 ; [*178C.0020.0002] # ALCHEMICAL SYMBOL FOR OIL -1F747 ; [*178D.0020.0002] # ALCHEMICAL SYMBOL FOR SPIRIT -1F748 ; [*178E.0020.0002] # ALCHEMICAL SYMBOL FOR TINCTURE -1F749 ; [*178F.0020.0002] # ALCHEMICAL SYMBOL FOR GUM -1F74A ; [*1790.0020.0002] # ALCHEMICAL SYMBOL FOR WAX -1F74B ; [*1791.0020.0002] # ALCHEMICAL SYMBOL FOR POWDER -1F74C ; [*1792.0020.0002] # ALCHEMICAL SYMBOL FOR CALX -1F74D ; [*1793.0020.0002] # ALCHEMICAL SYMBOL FOR TUTTY -1F74E ; [*1794.0020.0002] # ALCHEMICAL SYMBOL FOR CAPUT MORTUUM -1F74F ; [*1795.0020.0002] # ALCHEMICAL SYMBOL FOR SCEPTER OF JOVE -1F750 ; [*1796.0020.0002] # ALCHEMICAL SYMBOL FOR CADUCEUS -1F751 ; [*1797.0020.0002] # ALCHEMICAL SYMBOL FOR TRIDENT -1F752 ; [*1798.0020.0002] # ALCHEMICAL SYMBOL FOR STARRED TRIDENT -1F753 ; [*1799.0020.0002] # ALCHEMICAL SYMBOL FOR LODESTONE -1F754 ; [*179A.0020.0002] # ALCHEMICAL SYMBOL FOR SOAP -1F755 ; [*179B.0020.0002] # ALCHEMICAL SYMBOL FOR URINE -1F756 ; [*179C.0020.0002] # ALCHEMICAL SYMBOL FOR HORSE DUNG -1F757 ; [*179D.0020.0002] # ALCHEMICAL SYMBOL FOR ASHES -1F758 ; [*179E.0020.0002] # ALCHEMICAL SYMBOL FOR POT ASHES -1F759 ; [*179F.0020.0002] # ALCHEMICAL SYMBOL FOR BRICK -1F75A ; [*17A0.0020.0002] # ALCHEMICAL SYMBOL FOR POWDERED BRICK -1F75B ; [*17A1.0020.0002] # ALCHEMICAL SYMBOL FOR AMALGAM -1F75C ; [*17A2.0020.0002] # ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM -1F75D ; [*17A3.0020.0002] # ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM-2 -1F75E ; [*17A4.0020.0002] # ALCHEMICAL SYMBOL FOR SUBLIMATION -1F75F ; [*17A5.0020.0002] # ALCHEMICAL SYMBOL FOR PRECIPITATE -1F760 ; [*17A6.0020.0002] # ALCHEMICAL SYMBOL FOR DISTILL -1F761 ; [*17A7.0020.0002] # ALCHEMICAL SYMBOL FOR DISSOLVE -1F762 ; [*17A8.0020.0002] # ALCHEMICAL SYMBOL FOR DISSOLVE-2 -1F763 ; [*17A9.0020.0002] # ALCHEMICAL SYMBOL FOR PURIFY -1F764 ; [*17AA.0020.0002] # ALCHEMICAL SYMBOL FOR PUTREFACTION -1F765 ; [*17AB.0020.0002] # ALCHEMICAL SYMBOL FOR CRUCIBLE -1F766 ; [*17AC.0020.0002] # ALCHEMICAL SYMBOL FOR CRUCIBLE-2 -1F767 ; [*17AD.0020.0002] # ALCHEMICAL SYMBOL FOR CRUCIBLE-3 -1F768 ; [*17AE.0020.0002] # ALCHEMICAL SYMBOL FOR CRUCIBLE-4 -1F769 ; [*17AF.0020.0002] # ALCHEMICAL SYMBOL FOR CRUCIBLE-5 -1F76A ; [*17B0.0020.0002] # ALCHEMICAL SYMBOL FOR ALEMBIC -1F76B ; [*17B1.0020.0002] # ALCHEMICAL SYMBOL FOR BATH OF MARY -1F76C ; [*17B2.0020.0002] # ALCHEMICAL SYMBOL FOR BATH OF VAPOURS -1F76D ; [*17B3.0020.0002] # ALCHEMICAL SYMBOL FOR RETORT -1F76E ; [*17B4.0020.0002] # ALCHEMICAL SYMBOL FOR HOUR -1F76F ; [*17B5.0020.0002] # ALCHEMICAL SYMBOL FOR NIGHT -1F770 ; [*17B6.0020.0002] # ALCHEMICAL SYMBOL FOR DAY-NIGHT -1F771 ; [*17B7.0020.0002] # ALCHEMICAL SYMBOL FOR MONTH -1F772 ; [*17B8.0020.0002] # ALCHEMICAL SYMBOL FOR HALF DRAM -1F773 ; [*17B9.0020.0002] # ALCHEMICAL SYMBOL FOR HALF OUNCE -1F780 ; [*17BA.0020.0002] # BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE -1F781 ; [*17BB.0020.0002] # BLACK UP-POINTING ISOSCELES RIGHT TRIANGLE -1F782 ; [*17BC.0020.0002] # BLACK RIGHT-POINTING ISOSCELES RIGHT TRIANGLE -1F783 ; [*17BD.0020.0002] # BLACK DOWN-POINTING ISOSCELES RIGHT TRIANGLE -1F784 ; [*17BE.0020.0002] # BLACK SLIGHTLY SMALL CIRCLE -1F785 ; [*17BF.0020.0002] # MEDIUM BOLD WHITE CIRCLE -1F786 ; [*17C0.0020.0002] # BOLD WHITE CIRCLE -1F787 ; [*17C1.0020.0002] # HEAVY WHITE CIRCLE -1F788 ; [*17C2.0020.0002] # VERY HEAVY WHITE CIRCLE -1F789 ; [*17C3.0020.0002] # EXTREMELY HEAVY WHITE CIRCLE -1F78A ; [*17C4.0020.0002] # WHITE CIRCLE CONTAINING BLACK SMALL CIRCLE -1F78B ; [*17C5.0020.0002] # ROUND TARGET -1F78C ; [*17C6.0020.0002] # BLACK TINY SQUARE -1F78D ; [*17C7.0020.0002] # BLACK SLIGHTLY SMALL SQUARE -1F78E ; [*17C8.0020.0002] # LIGHT WHITE SQUARE -1F78F ; [*17C9.0020.0002] # MEDIUM WHITE SQUARE -1F790 ; [*17CA.0020.0002] # BOLD WHITE SQUARE -1F791 ; [*17CB.0020.0002] # HEAVY WHITE SQUARE -1F792 ; [*17CC.0020.0002] # VERY HEAVY WHITE SQUARE -1F793 ; [*17CD.0020.0002] # EXTREMELY HEAVY WHITE SQUARE -1F794 ; [*17CE.0020.0002] # WHITE SQUARE CONTAINING BLACK VERY SMALL SQUARE -1F795 ; [*17CF.0020.0002] # WHITE SQUARE CONTAINING BLACK MEDIUM SQUARE -1F796 ; [*17D0.0020.0002] # SQUARE TARGET -1F797 ; [*17D1.0020.0002] # BLACK TINY DIAMOND -1F798 ; [*17D2.0020.0002] # BLACK VERY SMALL DIAMOND -1F799 ; [*17D3.0020.0002] # BLACK MEDIUM SMALL DIAMOND -1F79A ; [*17D4.0020.0002] # WHITE DIAMOND CONTAINING BLACK VERY SMALL DIAMOND -1F79B ; [*17D5.0020.0002] # WHITE DIAMOND CONTAINING BLACK MEDIUM DIAMOND -1F79C ; [*17D6.0020.0002] # DIAMOND TARGET -1F79D ; [*17D7.0020.0002] # BLACK TINY LOZENGE -1F79E ; [*17D8.0020.0002] # BLACK VERY SMALL LOZENGE -1F79F ; [*17D9.0020.0002] # BLACK MEDIUM SMALL LOZENGE -1F7A0 ; [*17DA.0020.0002] # WHITE LOZENGE CONTAINING BLACK SMALL LOZENGE -1F7A1 ; [*17DB.0020.0002] # THIN GREEK CROSS -1F7A2 ; [*17DC.0020.0002] # LIGHT GREEK CROSS -1F7A3 ; [*17DD.0020.0002] # MEDIUM GREEK CROSS -1F7A4 ; [*17DE.0020.0002] # BOLD GREEK CROSS -1F7A5 ; [*17DF.0020.0002] # VERY BOLD GREEK CROSS -1F7A6 ; [*17E0.0020.0002] # VERY HEAVY GREEK CROSS -1F7A7 ; [*17E1.0020.0002] # EXTREMELY HEAVY GREEK CROSS -1F7A8 ; [*17E2.0020.0002] # THIN SALTIRE -1F7A9 ; [*17E3.0020.0002] # LIGHT SALTIRE -1F7AA ; [*17E4.0020.0002] # MEDIUM SALTIRE -1F7AB ; [*17E5.0020.0002] # BOLD SALTIRE -1F7AC ; [*17E6.0020.0002] # HEAVY SALTIRE -1F7AD ; [*17E7.0020.0002] # VERY HEAVY SALTIRE -1F7AE ; [*17E8.0020.0002] # EXTREMELY HEAVY SALTIRE -1F7AF ; [*17E9.0020.0002] # LIGHT FIVE SPOKED ASTERISK -1F7B0 ; [*17EA.0020.0002] # MEDIUM FIVE SPOKED ASTERISK -1F7B1 ; [*17EB.0020.0002] # BOLD FIVE SPOKED ASTERISK -1F7B2 ; [*17EC.0020.0002] # HEAVY FIVE SPOKED ASTERISK -1F7B3 ; [*17ED.0020.0002] # VERY HEAVY FIVE SPOKED ASTERISK -1F7B4 ; [*17EE.0020.0002] # EXTREMELY HEAVY FIVE SPOKED ASTERISK -1F7B5 ; [*17EF.0020.0002] # LIGHT SIX SPOKED ASTERISK -1F7B6 ; [*17F0.0020.0002] # MEDIUM SIX SPOKED ASTERISK -1F7B7 ; [*17F1.0020.0002] # BOLD SIX SPOKED ASTERISK -1F7B8 ; [*17F2.0020.0002] # HEAVY SIX SPOKED ASTERISK -1F7B9 ; [*17F3.0020.0002] # VERY HEAVY SIX SPOKED ASTERISK -1F7BA ; [*17F4.0020.0002] # EXTREMELY HEAVY SIX SPOKED ASTERISK -1F7BB ; [*17F5.0020.0002] # LIGHT EIGHT SPOKED ASTERISK -1F7BC ; [*17F6.0020.0002] # MEDIUM EIGHT SPOKED ASTERISK -1F7BD ; [*17F7.0020.0002] # BOLD EIGHT SPOKED ASTERISK -1F7BE ; [*17F8.0020.0002] # HEAVY EIGHT SPOKED ASTERISK -1F7BF ; [*17F9.0020.0002] # VERY HEAVY EIGHT SPOKED ASTERISK -1F7C0 ; [*17FA.0020.0002] # LIGHT THREE POINTED BLACK STAR -1F7C1 ; [*17FB.0020.0002] # MEDIUM THREE POINTED BLACK STAR -1F7C2 ; [*17FC.0020.0002] # THREE POINTED BLACK STAR -1F7C3 ; [*17FD.0020.0002] # MEDIUM THREE POINTED PINWHEEL STAR -1F7C4 ; [*17FE.0020.0002] # LIGHT FOUR POINTED BLACK STAR -1F7C5 ; [*17FF.0020.0002] # MEDIUM FOUR POINTED BLACK STAR -1F7C6 ; [*1800.0020.0002] # FOUR POINTED BLACK STAR -1F7C7 ; [*1801.0020.0002] # MEDIUM FOUR POINTED PINWHEEL STAR -1F7C8 ; [*1802.0020.0002] # REVERSE LIGHT FOUR POINTED PINWHEEL STAR -1F7C9 ; [*1803.0020.0002] # LIGHT FIVE POINTED BLACK STAR -1F7CA ; [*1804.0020.0002] # HEAVY FIVE POINTED BLACK STAR -1F7CB ; [*1805.0020.0002] # MEDIUM SIX POINTED BLACK STAR -1F7CC ; [*1806.0020.0002] # HEAVY SIX POINTED BLACK STAR -1F7CD ; [*1807.0020.0002] # SIX POINTED PINWHEEL STAR -1F7CE ; [*1808.0020.0002] # MEDIUM EIGHT POINTED BLACK STAR -1F7CF ; [*1809.0020.0002] # HEAVY EIGHT POINTED BLACK STAR -1F7D0 ; [*180A.0020.0002] # VERY HEAVY EIGHT POINTED BLACK STAR -1F7D1 ; [*180B.0020.0002] # HEAVY EIGHT POINTED PINWHEEL STAR -1F7D2 ; [*180C.0020.0002] # LIGHT TWELVE POINTED BLACK STAR -1F7D3 ; [*180D.0020.0002] # HEAVY TWELVE POINTED BLACK STAR -1F7D4 ; [*180E.0020.0002] # HEAVY TWELVE POINTED PINWHEEL STAR -1F800 ; [*180F.0020.0002] # LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD -1F801 ; [*1810.0020.0002] # UPWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD -1F802 ; [*1811.0020.0002] # RIGHTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD -1F803 ; [*1812.0020.0002] # DOWNWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD -1F804 ; [*1813.0020.0002] # LEFTWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD -1F805 ; [*1814.0020.0002] # UPWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD -1F806 ; [*1815.0020.0002] # RIGHTWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD -1F807 ; [*1816.0020.0002] # DOWNWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD -1F808 ; [*1817.0020.0002] # LEFTWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD -1F809 ; [*1818.0020.0002] # UPWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD -1F80A ; [*1819.0020.0002] # RIGHTWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD -1F80B ; [*181A.0020.0002] # DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD -1F810 ; [*181B.0020.0002] # LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD -1F811 ; [*181C.0020.0002] # UPWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD -1F812 ; [*181D.0020.0002] # RIGHTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD -1F813 ; [*181E.0020.0002] # DOWNWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD -1F814 ; [*181F.0020.0002] # LEFTWARDS ARROW WITH EQUILATERAL ARROWHEAD -1F815 ; [*1820.0020.0002] # UPWARDS ARROW WITH EQUILATERAL ARROWHEAD -1F816 ; [*1821.0020.0002] # RIGHTWARDS ARROW WITH EQUILATERAL ARROWHEAD -1F817 ; [*1822.0020.0002] # DOWNWARDS ARROW WITH EQUILATERAL ARROWHEAD -1F818 ; [*1823.0020.0002] # HEAVY LEFTWARDS ARROW WITH EQUILATERAL ARROWHEAD -1F819 ; [*1824.0020.0002] # HEAVY UPWARDS ARROW WITH EQUILATERAL ARROWHEAD -1F81A ; [*1825.0020.0002] # HEAVY RIGHTWARDS ARROW WITH EQUILATERAL ARROWHEAD -1F81B ; [*1826.0020.0002] # HEAVY DOWNWARDS ARROW WITH EQUILATERAL ARROWHEAD -1F81C ; [*1827.0020.0002] # HEAVY LEFTWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD -1F81D ; [*1828.0020.0002] # HEAVY UPWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD -1F81E ; [*1829.0020.0002] # HEAVY RIGHTWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD -1F81F ; [*182A.0020.0002] # HEAVY DOWNWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD -1F820 ; [*182B.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT -1F821 ; [*182C.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT -1F822 ; [*182D.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT -1F823 ; [*182E.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT -1F824 ; [*182F.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT -1F825 ; [*1830.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT -1F826 ; [*1831.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT -1F827 ; [*1832.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT -1F828 ; [*1833.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT -1F829 ; [*1834.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT -1F82A ; [*1835.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT -1F82B ; [*1836.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT -1F82C ; [*1837.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT -1F82D ; [*1838.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT -1F82E ; [*1839.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT -1F82F ; [*183A.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT -1F830 ; [*183B.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT -1F831 ; [*183C.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT -1F832 ; [*183D.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT -1F833 ; [*183E.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT -1F834 ; [*183F.0020.0002] # LEFTWARDS FINGER-POST ARROW -1F835 ; [*1840.0020.0002] # UPWARDS FINGER-POST ARROW -1F836 ; [*1841.0020.0002] # RIGHTWARDS FINGER-POST ARROW -1F837 ; [*1842.0020.0002] # DOWNWARDS FINGER-POST ARROW -1F838 ; [*1843.0020.0002] # LEFTWARDS SQUARED ARROW -1F839 ; [*1844.0020.0002] # UPWARDS SQUARED ARROW -1F83A ; [*1845.0020.0002] # RIGHTWARDS SQUARED ARROW -1F83B ; [*1846.0020.0002] # DOWNWARDS SQUARED ARROW -1F83C ; [*1847.0020.0002] # LEFTWARDS COMPRESSED ARROW -1F83D ; [*1848.0020.0002] # UPWARDS COMPRESSED ARROW -1F83E ; [*1849.0020.0002] # RIGHTWARDS COMPRESSED ARROW -1F83F ; [*184A.0020.0002] # DOWNWARDS COMPRESSED ARROW -1F840 ; [*184B.0020.0002] # LEFTWARDS HEAVY COMPRESSED ARROW -1F841 ; [*184C.0020.0002] # UPWARDS HEAVY COMPRESSED ARROW -1F842 ; [*184D.0020.0002] # RIGHTWARDS HEAVY COMPRESSED ARROW -1F843 ; [*184E.0020.0002] # DOWNWARDS HEAVY COMPRESSED ARROW -1F844 ; [*184F.0020.0002] # LEFTWARDS HEAVY ARROW -1F845 ; [*1850.0020.0002] # UPWARDS HEAVY ARROW -1F846 ; [*1851.0020.0002] # RIGHTWARDS HEAVY ARROW -1F847 ; [*1852.0020.0002] # DOWNWARDS HEAVY ARROW -1F850 ; [*1853.0020.0002] # LEFTWARDS SANS-SERIF ARROW -1F851 ; [*1854.0020.0002] # UPWARDS SANS-SERIF ARROW -1F852 ; [*1855.0020.0002] # RIGHTWARDS SANS-SERIF ARROW -1F853 ; [*1856.0020.0002] # DOWNWARDS SANS-SERIF ARROW -1F854 ; [*1857.0020.0002] # NORTH WEST SANS-SERIF ARROW -1F855 ; [*1858.0020.0002] # NORTH EAST SANS-SERIF ARROW -1F856 ; [*1859.0020.0002] # SOUTH EAST SANS-SERIF ARROW -1F857 ; [*185A.0020.0002] # SOUTH WEST SANS-SERIF ARROW -1F858 ; [*185B.0020.0002] # LEFT RIGHT SANS-SERIF ARROW -1F859 ; [*185C.0020.0002] # UP DOWN SANS-SERIF ARROW -1F860 ; [*185D.0020.0002] # WIDE-HEADED LEFTWARDS LIGHT BARB ARROW -1F861 ; [*185E.0020.0002] # WIDE-HEADED UPWARDS LIGHT BARB ARROW -1F862 ; [*185F.0020.0002] # WIDE-HEADED RIGHTWARDS LIGHT BARB ARROW -1F863 ; [*1860.0020.0002] # WIDE-HEADED DOWNWARDS LIGHT BARB ARROW -1F864 ; [*1861.0020.0002] # WIDE-HEADED NORTH WEST LIGHT BARB ARROW -1F865 ; [*1862.0020.0002] # WIDE-HEADED NORTH EAST LIGHT BARB ARROW -1F866 ; [*1863.0020.0002] # WIDE-HEADED SOUTH EAST LIGHT BARB ARROW -1F867 ; [*1864.0020.0002] # WIDE-HEADED SOUTH WEST LIGHT BARB ARROW -1F868 ; [*1865.0020.0002] # WIDE-HEADED LEFTWARDS BARB ARROW -1F869 ; [*1866.0020.0002] # WIDE-HEADED UPWARDS BARB ARROW -1F86A ; [*1867.0020.0002] # WIDE-HEADED RIGHTWARDS BARB ARROW -1F86B ; [*1868.0020.0002] # WIDE-HEADED DOWNWARDS BARB ARROW -1F86C ; [*1869.0020.0002] # WIDE-HEADED NORTH WEST BARB ARROW -1F86D ; [*186A.0020.0002] # WIDE-HEADED NORTH EAST BARB ARROW -1F86E ; [*186B.0020.0002] # WIDE-HEADED SOUTH EAST BARB ARROW -1F86F ; [*186C.0020.0002] # WIDE-HEADED SOUTH WEST BARB ARROW -1F870 ; [*186D.0020.0002] # WIDE-HEADED LEFTWARDS MEDIUM BARB ARROW -1F871 ; [*186E.0020.0002] # WIDE-HEADED UPWARDS MEDIUM BARB ARROW -1F872 ; [*186F.0020.0002] # WIDE-HEADED RIGHTWARDS MEDIUM BARB ARROW -1F873 ; [*1870.0020.0002] # WIDE-HEADED DOWNWARDS MEDIUM BARB ARROW -1F874 ; [*1871.0020.0002] # WIDE-HEADED NORTH WEST MEDIUM BARB ARROW -1F875 ; [*1872.0020.0002] # WIDE-HEADED NORTH EAST MEDIUM BARB ARROW -1F876 ; [*1873.0020.0002] # WIDE-HEADED SOUTH EAST MEDIUM BARB ARROW -1F877 ; [*1874.0020.0002] # WIDE-HEADED SOUTH WEST MEDIUM BARB ARROW -1F878 ; [*1875.0020.0002] # WIDE-HEADED LEFTWARDS HEAVY BARB ARROW -1F879 ; [*1876.0020.0002] # WIDE-HEADED UPWARDS HEAVY BARB ARROW -1F87A ; [*1877.0020.0002] # WIDE-HEADED RIGHTWARDS HEAVY BARB ARROW -1F87B ; [*1878.0020.0002] # WIDE-HEADED DOWNWARDS HEAVY BARB ARROW -1F87C ; [*1879.0020.0002] # WIDE-HEADED NORTH WEST HEAVY BARB ARROW -1F87D ; [*187A.0020.0002] # WIDE-HEADED NORTH EAST HEAVY BARB ARROW -1F87E ; [*187B.0020.0002] # WIDE-HEADED SOUTH EAST HEAVY BARB ARROW -1F87F ; [*187C.0020.0002] # WIDE-HEADED SOUTH WEST HEAVY BARB ARROW -1F880 ; [*187D.0020.0002] # WIDE-HEADED LEFTWARDS VERY HEAVY BARB ARROW -1F881 ; [*187E.0020.0002] # WIDE-HEADED UPWARDS VERY HEAVY BARB ARROW -1F882 ; [*187F.0020.0002] # WIDE-HEADED RIGHTWARDS VERY HEAVY BARB ARROW -1F883 ; [*1880.0020.0002] # WIDE-HEADED DOWNWARDS VERY HEAVY BARB ARROW -1F884 ; [*1881.0020.0002] # WIDE-HEADED NORTH WEST VERY HEAVY BARB ARROW -1F885 ; [*1882.0020.0002] # WIDE-HEADED NORTH EAST VERY HEAVY BARB ARROW -1F886 ; [*1883.0020.0002] # WIDE-HEADED SOUTH EAST VERY HEAVY BARB ARROW -1F887 ; [*1884.0020.0002] # WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW -1F890 ; [*1885.0020.0002] # LEFTWARDS TRIANGLE ARROWHEAD -1F891 ; [*1886.0020.0002] # UPWARDS TRIANGLE ARROWHEAD -1F892 ; [*1887.0020.0002] # RIGHTWARDS TRIANGLE ARROWHEAD -1F893 ; [*1888.0020.0002] # DOWNWARDS TRIANGLE ARROWHEAD -1F894 ; [*1889.0020.0002] # LEFTWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD -1F895 ; [*188A.0020.0002] # UPWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD -1F896 ; [*188B.0020.0002] # RIGHTWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD -1F897 ; [*188C.0020.0002] # DOWNWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD -1F898 ; [*188D.0020.0002] # LEFTWARDS ARROW WITH NOTCHED TAIL -1F899 ; [*188E.0020.0002] # UPWARDS ARROW WITH NOTCHED TAIL -1F89A ; [*188F.0020.0002] # RIGHTWARDS ARROW WITH NOTCHED TAIL -1F89B ; [*1890.0020.0002] # DOWNWARDS ARROW WITH NOTCHED TAIL -1F89C ; [*1891.0020.0002] # HEAVY ARROW SHAFT WIDTH ONE -1F89D ; [*1892.0020.0002] # HEAVY ARROW SHAFT WIDTH TWO THIRDS -1F89E ; [*1893.0020.0002] # HEAVY ARROW SHAFT WIDTH ONE HALF -1F89F ; [*1894.0020.0002] # HEAVY ARROW SHAFT WIDTH ONE THIRD -1F8A0 ; [*1895.0020.0002] # LEFTWARDS BOTTOM-SHADED WHITE ARROW -1F8A1 ; [*1896.0020.0002] # RIGHTWARDS BOTTOM SHADED WHITE ARROW -1F8A2 ; [*1897.0020.0002] # LEFTWARDS TOP SHADED WHITE ARROW -1F8A3 ; [*1898.0020.0002] # RIGHTWARDS TOP SHADED WHITE ARROW -1F8A4 ; [*1899.0020.0002] # LEFTWARDS LEFT-SHADED WHITE ARROW -1F8A5 ; [*189A.0020.0002] # RIGHTWARDS RIGHT-SHADED WHITE ARROW -1F8A6 ; [*189B.0020.0002] # LEFTWARDS RIGHT-SHADED WHITE ARROW -1F8A7 ; [*189C.0020.0002] # RIGHTWARDS LEFT-SHADED WHITE ARROW -1F8A8 ; [*189D.0020.0002] # LEFTWARDS BACK-TILTED SHADOWED WHITE ARROW -1F8A9 ; [*189E.0020.0002] # RIGHTWARDS BACK-TILTED SHADOWED WHITE ARROW -1F8AA ; [*189F.0020.0002] # LEFTWARDS FRONT-TILTED SHADOWED WHITE ARROW -1F8AB ; [*18A0.0020.0002] # RIGHTWARDS FRONT-TILTED SHADOWED WHITE ARROW -1F8AC ; [*18A1.0020.0002] # WHITE ARROW SHAFT WIDTH ONE -1F8AD ; [*18A2.0020.0002] # WHITE ARROW SHAFT WIDTH TWO THIRDS -1F900 ; [*15C7.0020.0002] # CIRCLED CROSS FORMEE WITH FOUR DOTS -1F901 ; [*15C8.0020.0002] # CIRCLED CROSS FORMEE WITH TWO DOTS -1F902 ; [*15C9.0020.0002] # CIRCLED CROSS FORMEE -1F903 ; [*15CA.0020.0002] # LEFT HALF CIRCLE WITH FOUR DOTS -1F904 ; [*15CB.0020.0002] # LEFT HALF CIRCLE WITH THREE DOTS -1F905 ; [*15CC.0020.0002] # LEFT HALF CIRCLE WITH TWO DOTS -1F906 ; [*15CD.0020.0002] # LEFT HALF CIRCLE WITH DOT -1F907 ; [*15CE.0020.0002] # LEFT HALF CIRCLE -1F908 ; [*15CF.0020.0002] # DOWNWARD FACING HOOK -1F909 ; [*15D0.0020.0002] # DOWNWARD FACING NOTCHED HOOK -1F90A ; [*15D1.0020.0002] # DOWNWARD FACING HOOK WITH DOT -1F90B ; [*15D2.0020.0002] # DOWNWARD FACING NOTCHED HOOK WITH DOT -1F910 ; [*15D3.0020.0002] # ZIPPER-MOUTH FACE -1F911 ; [*15D4.0020.0002] # MONEY-MOUTH FACE -1F912 ; [*15D5.0020.0002] # FACE WITH THERMOMETER -1F913 ; [*15D6.0020.0002] # NERD FACE -1F914 ; [*15D7.0020.0002] # THINKING FACE -1F915 ; [*15D8.0020.0002] # FACE WITH HEAD-BANDAGE -1F916 ; [*15D9.0020.0002] # ROBOT FACE -1F917 ; [*15DA.0020.0002] # HUGGING FACE -1F918 ; [*15DB.0020.0002] # SIGN OF THE HORNS -1F919 ; [*15DC.0020.0002] # CALL ME HAND -1F91A ; [*15DD.0020.0002] # RAISED BACK OF HAND -1F91B ; [*15DE.0020.0002] # LEFT-FACING FIST -1F91C ; [*15DF.0020.0002] # RIGHT-FACING FIST -1F91D ; [*15E0.0020.0002] # HANDSHAKE -1F91E ; [*15E1.0020.0002] # HAND WITH INDEX AND MIDDLE FINGERS CROSSED -1F91F ; [*15E2.0020.0002] # I LOVE YOU HAND SIGN -1F920 ; [*15E3.0020.0002] # FACE WITH COWBOY HAT -1F921 ; [*15E4.0020.0002] # CLOWN FACE -1F922 ; [*15E5.0020.0002] # NAUSEATED FACE -1F923 ; [*15E6.0020.0002] # ROLLING ON THE FLOOR LAUGHING -1F924 ; [*15E7.0020.0002] # DROOLING FACE -1F925 ; [*15E8.0020.0002] # LYING FACE -1F926 ; [*15E9.0020.0002] # FACE PALM -1F927 ; [*15EA.0020.0002] # SNEEZING FACE -1F928 ; [*15EB.0020.0002] # FACE WITH ONE EYEBROW RAISED -1F929 ; [*15EC.0020.0002] # GRINNING FACE WITH STAR EYES -1F92A ; [*15ED.0020.0002] # GRINNING FACE WITH ONE LARGE AND ONE SMALL EYE -1F92B ; [*15EE.0020.0002] # FACE WITH FINGER COVERING CLOSED LIPS -1F92C ; [*15EF.0020.0002] # SERIOUS FACE WITH SYMBOLS COVERING MOUTH -1F92D ; [*15F0.0020.0002] # SMILING FACE WITH SMILING EYES AND HAND COVERING MOUTH -1F92E ; [*15F1.0020.0002] # FACE WITH OPEN MOUTH VOMITING -1F92F ; [*15F2.0020.0002] # SHOCKED FACE WITH EXPLODING HEAD -1F930 ; [*15F3.0020.0002] # PREGNANT WOMAN -1F931 ; [*15F4.0020.0002] # BREAST-FEEDING -1F932 ; [*15F5.0020.0002] # PALMS UP TOGETHER -1F933 ; [*15F6.0020.0002] # SELFIE -1F934 ; [*15F7.0020.0002] # PRINCE -1F935 ; [*15F8.0020.0002] # MAN IN TUXEDO -1F936 ; [*15F9.0020.0002] # MOTHER CHRISTMAS -1F937 ; [*15FA.0020.0002] # SHRUG -1F938 ; [*15FB.0020.0002] # PERSON DOING CARTWHEEL -1F939 ; [*15FC.0020.0002] # JUGGLING -1F93A ; [*15FD.0020.0002] # FENCER -1F93B ; [*15FE.0020.0002] # MODERN PENTATHLON -1F93C ; [*15FF.0020.0002] # WRESTLERS -1F93D ; [*1600.0020.0002] # WATER POLO -1F93E ; [*1601.0020.0002] # HANDBALL -1F940 ; [*1602.0020.0002] # WILTED FLOWER -1F941 ; [*1603.0020.0002] # DRUM WITH DRUMSTICKS -1F942 ; [*1604.0020.0002] # CLINKING GLASSES -1F943 ; [*1605.0020.0002] # TUMBLER GLASS -1F944 ; [*1606.0020.0002] # SPOON -1F945 ; [*1607.0020.0002] # GOAL NET -1F946 ; [*1608.0020.0002] # RIFLE -1F947 ; [*1609.0020.0002] # FIRST PLACE MEDAL -1F948 ; [*160A.0020.0002] # SECOND PLACE MEDAL -1F949 ; [*160B.0020.0002] # THIRD PLACE MEDAL -1F94A ; [*160C.0020.0002] # BOXING GLOVE -1F94B ; [*160D.0020.0002] # MARTIAL ARTS UNIFORM -1F94C ; [*160E.0020.0002] # CURLING STONE -1F950 ; [*160F.0020.0002] # CROISSANT -1F951 ; [*1610.0020.0002] # AVOCADO -1F952 ; [*1611.0020.0002] # CUCUMBER -1F953 ; [*1612.0020.0002] # BACON -1F954 ; [*1613.0020.0002] # POTATO -1F955 ; [*1614.0020.0002] # CARROT -1F956 ; [*1615.0020.0002] # BAGUETTE BREAD -1F957 ; [*1616.0020.0002] # GREEN SALAD -1F958 ; [*1617.0020.0002] # SHALLOW PAN OF FOOD -1F959 ; [*1618.0020.0002] # STUFFED FLATBREAD -1F95A ; [*1619.0020.0002] # EGG -1F95B ; [*161A.0020.0002] # GLASS OF MILK -1F95C ; [*161B.0020.0002] # PEANUTS -1F95D ; [*161C.0020.0002] # KIWIFRUIT -1F95E ; [*161D.0020.0002] # PANCAKES -1F95F ; [*161E.0020.0002] # DUMPLING -1F960 ; [*161F.0020.0002] # FORTUNE COOKIE -1F961 ; [*1620.0020.0002] # TAKEOUT BOX -1F962 ; [*1621.0020.0002] # CHOPSTICKS -1F963 ; [*1622.0020.0002] # BOWL WITH SPOON -1F964 ; [*1623.0020.0002] # CUP WITH STRAW -1F965 ; [*1624.0020.0002] # COCONUT -1F966 ; [*1625.0020.0002] # BROCCOLI -1F967 ; [*1626.0020.0002] # PIE -1F968 ; [*1627.0020.0002] # PRETZEL -1F969 ; [*1628.0020.0002] # CUT OF MEAT -1F96A ; [*1629.0020.0002] # SANDWICH -1F96B ; [*162A.0020.0002] # CANNED FOOD -1F980 ; [*162B.0020.0002] # CRAB -1F981 ; [*162C.0020.0002] # LION FACE -1F982 ; [*162D.0020.0002] # SCORPION -1F983 ; [*162E.0020.0002] # TURKEY -1F984 ; [*162F.0020.0002] # UNICORN FACE -1F985 ; [*1630.0020.0002] # EAGLE -1F986 ; [*1631.0020.0002] # DUCK -1F987 ; [*1632.0020.0002] # BAT -1F988 ; [*1633.0020.0002] # SHARK -1F989 ; [*1634.0020.0002] # OWL -1F98A ; [*1635.0020.0002] # FOX FACE -1F98B ; [*1636.0020.0002] # BUTTERFLY -1F98C ; [*1637.0020.0002] # DEER -1F98D ; [*1638.0020.0002] # GORILLA -1F98E ; [*1639.0020.0002] # LIZARD -1F98F ; [*163A.0020.0002] # RHINOCEROS -1F990 ; [*163B.0020.0002] # SHRIMP -1F991 ; [*163C.0020.0002] # SQUID -1F992 ; [*163D.0020.0002] # GIRAFFE FACE -1F993 ; [*163E.0020.0002] # ZEBRA FACE -1F994 ; [*163F.0020.0002] # HEDGEHOG -1F995 ; [*1640.0020.0002] # SAUROPOD -1F996 ; [*1641.0020.0002] # T-REX -1F997 ; [*1642.0020.0002] # CRICKET -1F9C0 ; [*1643.0020.0002] # CHEESE WEDGE -1F9D0 ; [*1644.0020.0002] # FACE WITH MONOCLE -1F9D1 ; [*1645.0020.0002] # ADULT -1F9D2 ; [*1646.0020.0002] # CHILD -1F9D3 ; [*1647.0020.0002] # OLDER ADULT -1F9D4 ; [*1648.0020.0002] # BEARDED PERSON -1F9D5 ; [*1649.0020.0002] # PERSON WITH HEADSCARF -1F9D6 ; [*164A.0020.0002] # PERSON IN STEAMY ROOM -1F9D7 ; [*164B.0020.0002] # PERSON CLIMBING -1F9D8 ; [*164C.0020.0002] # PERSON IN LOTUS POSITION -1F9D9 ; [*164D.0020.0002] # MAGE -1F9DA ; [*164E.0020.0002] # FAIRY -1F9DB ; [*164F.0020.0002] # VAMPIRE -1F9DC ; [*1650.0020.0002] # MERPERSON -1F9DD ; [*1651.0020.0002] # ELF -1F9DE ; [*1652.0020.0002] # GENIE -1F9DF ; [*1653.0020.0002] # ZOMBIE -1F9E0 ; [*1654.0020.0002] # BRAIN -1F9E1 ; [*1655.0020.0002] # ORANGE HEART -1F9E2 ; [*1656.0020.0002] # BILLED CAP -1F9E3 ; [*1657.0020.0002] # SCARF -1F9E4 ; [*1658.0020.0002] # GLOVES -1F9E5 ; [*1659.0020.0002] # COAT -1F9E6 ; [*165A.0020.0002] # SOCKS +1E95E ; [*026C.0020.0002] # ADLAM INITIAL EXCLAMATION MARK +1E95F ; [*027B.0020.0002] # ADLAM INITIAL QUESTION MARK +1EC7A ; [*1E9C.0020.0002] # INDIC SIYAQ NUMBER TEN +1EC7B ; [*1E9D.0020.0002] # INDIC SIYAQ NUMBER TWENTY +1EC7C ; [*1E9E.0020.0002] # INDIC SIYAQ NUMBER THIRTY +1EC7D ; [*1E9F.0020.0002] # INDIC SIYAQ NUMBER FORTY +1EC7E ; [*1EA0.0020.0002] # INDIC SIYAQ NUMBER FIFTY +1EC7F ; [*1EA1.0020.0002] # INDIC SIYAQ NUMBER SIXTY +1EC80 ; [*1EA2.0020.0002] # INDIC SIYAQ NUMBER SEVENTY +1EC81 ; [*1EA3.0020.0002] # INDIC SIYAQ NUMBER EIGHTY +1EC82 ; [*1EA4.0020.0002] # INDIC SIYAQ NUMBER NINETY +1EC83 ; [*1EA5.0020.0002] # INDIC SIYAQ NUMBER ONE HUNDRED +1EC84 ; [*1EA6.0020.0002] # INDIC SIYAQ NUMBER TWO HUNDRED +1EC85 ; [*1EA7.0020.0002] # INDIC SIYAQ NUMBER THREE HUNDRED +1EC86 ; [*1EA8.0020.0002] # INDIC SIYAQ NUMBER FOUR HUNDRED +1EC87 ; [*1EA9.0020.0002] # INDIC SIYAQ NUMBER FIVE HUNDRED +1EC88 ; [*1EAA.0020.0002] # INDIC SIYAQ NUMBER SIX HUNDRED +1EC89 ; [*1EAB.0020.0002] # INDIC SIYAQ NUMBER SEVEN HUNDRED +1EC8A ; [*1EAC.0020.0002] # INDIC SIYAQ NUMBER EIGHT HUNDRED +1EC8B ; [*1EAD.0020.0002] # INDIC SIYAQ NUMBER NINE HUNDRED +1EC8C ; [*1EAE.0020.0002] # INDIC SIYAQ NUMBER ONE THOUSAND +1EC8D ; [*1EAF.0020.0002] # INDIC SIYAQ NUMBER TWO THOUSAND +1EC8E ; [*1EB0.0020.0002] # INDIC SIYAQ NUMBER THREE THOUSAND +1EC8F ; [*1EB1.0020.0002] # INDIC SIYAQ NUMBER FOUR THOUSAND +1EC90 ; [*1EB2.0020.0002] # INDIC SIYAQ NUMBER FIVE THOUSAND +1EC91 ; [*1EB3.0020.0002] # INDIC SIYAQ NUMBER SIX THOUSAND +1EC92 ; [*1EB4.0020.0002] # INDIC SIYAQ NUMBER SEVEN THOUSAND +1EC93 ; [*1EB5.0020.0002] # INDIC SIYAQ NUMBER EIGHT THOUSAND +1EC94 ; [*1EB6.0020.0002] # INDIC SIYAQ NUMBER NINE THOUSAND +1EC95 ; [*1EB7.0020.0002] # INDIC SIYAQ NUMBER TEN THOUSAND +1EC96 ; [*1EB8.0020.0002] # INDIC SIYAQ NUMBER TWENTY THOUSAND +1EC97 ; [*1EB9.0020.0002] # INDIC SIYAQ NUMBER THIRTY THOUSAND +1EC98 ; [*1EBA.0020.0002] # INDIC SIYAQ NUMBER FORTY THOUSAND +1EC99 ; [*1EBB.0020.0002] # INDIC SIYAQ NUMBER FIFTY THOUSAND +1EC9A ; [*1EBC.0020.0002] # INDIC SIYAQ NUMBER SIXTY THOUSAND +1EC9B ; [*1EBD.0020.0002] # INDIC SIYAQ NUMBER SEVENTY THOUSAND +1EC9C ; [*1EBE.0020.0002] # INDIC SIYAQ NUMBER EIGHTY THOUSAND +1EC9D ; [*1EBF.0020.0002] # INDIC SIYAQ NUMBER NINETY THOUSAND +1EC9E ; [*1EC0.0020.0002] # INDIC SIYAQ NUMBER LAKH +1EC9F ; [*1EC1.0020.0002] # INDIC SIYAQ NUMBER LAKHAN +1ECA0 ; [*1EC2.0020.0002] # INDIC SIYAQ LAKH MARK +1ECA1 ; [*1EC3.0020.0002] # INDIC SIYAQ NUMBER KAROR +1ECA2 ; [*1EC4.0020.0002] # INDIC SIYAQ NUMBER KARORAN +1ECAC ; [*1315.0020.0002] # INDIC SIYAQ PLACEHOLDER +1ECAD ; [*1EC5.0020.0002] # INDIC SIYAQ FRACTION ONE QUARTER +1ECAE ; [*1EC6.0020.0002] # INDIC SIYAQ FRACTION ONE HALF +1ECAF ; [*1EC7.0020.0002] # INDIC SIYAQ FRACTION THREE QUARTERS +1ECB3 ; [*1EC8.0020.0002] # INDIC SIYAQ NUMBER ALTERNATE TEN THOUSAND +1ECB4 ; [*1EC9.0020.0002] # INDIC SIYAQ ALTERNATE LAKH MARK +1ED0A ; [*1ECA.0020.0002] # OTTOMAN SIYAQ NUMBER TEN +1ED0B ; [*1ECB.0020.0002] # OTTOMAN SIYAQ NUMBER TWENTY +1ED0C ; [*1ECC.0020.0002] # OTTOMAN SIYAQ NUMBER THIRTY +1ED0D ; [*1ECD.0020.0002] # OTTOMAN SIYAQ NUMBER FORTY +1ED0E ; [*1ECE.0020.0002] # OTTOMAN SIYAQ NUMBER FIFTY +1ED0F ; [*1ECF.0020.0002] # OTTOMAN SIYAQ NUMBER SIXTY +1ED10 ; [*1ED0.0020.0002] # OTTOMAN SIYAQ NUMBER SEVENTY +1ED11 ; [*1ED1.0020.0002] # OTTOMAN SIYAQ NUMBER EIGHTY +1ED12 ; [*1ED2.0020.0002] # OTTOMAN SIYAQ NUMBER NINETY +1ED13 ; [*1ED3.0020.0002] # OTTOMAN SIYAQ NUMBER ONE HUNDRED +1ED14 ; [*1ED4.0020.0002] # OTTOMAN SIYAQ NUMBER TWO HUNDRED +1ED15 ; [*1ED5.0020.0002] # OTTOMAN SIYAQ NUMBER THREE HUNDRED +1ED16 ; [*1ED6.0020.0002] # OTTOMAN SIYAQ NUMBER FOUR HUNDRED +1ED17 ; [*1ED7.0020.0002] # OTTOMAN SIYAQ NUMBER FIVE HUNDRED +1ED18 ; [*1ED8.0020.0002] # OTTOMAN SIYAQ NUMBER SIX HUNDRED +1ED19 ; [*1ED9.0020.0002] # OTTOMAN SIYAQ NUMBER SEVEN HUNDRED +1ED1A ; [*1EDA.0020.0002] # OTTOMAN SIYAQ NUMBER EIGHT HUNDRED +1ED1B ; [*1EDB.0020.0002] # OTTOMAN SIYAQ NUMBER NINE HUNDRED +1ED1C ; [*1EDC.0020.0002] # OTTOMAN SIYAQ NUMBER ONE THOUSAND +1ED1D ; [*1EDD.0020.0002] # OTTOMAN SIYAQ NUMBER TWO THOUSAND +1ED1E ; [*1EDE.0020.0002] # OTTOMAN SIYAQ NUMBER THREE THOUSAND +1ED1F ; [*1EDF.0020.0002] # OTTOMAN SIYAQ NUMBER FOUR THOUSAND +1ED20 ; [*1EE0.0020.0002] # OTTOMAN SIYAQ NUMBER FIVE THOUSAND +1ED21 ; [*1EE1.0020.0002] # OTTOMAN SIYAQ NUMBER SIX THOUSAND +1ED22 ; [*1EE2.0020.0002] # OTTOMAN SIYAQ NUMBER SEVEN THOUSAND +1ED23 ; [*1EE3.0020.0002] # OTTOMAN SIYAQ NUMBER EIGHT THOUSAND +1ED24 ; [*1EE4.0020.0002] # OTTOMAN SIYAQ NUMBER NINE THOUSAND +1ED25 ; [*1EE5.0020.0002] # OTTOMAN SIYAQ NUMBER TEN THOUSAND +1ED26 ; [*1EE6.0020.0002] # OTTOMAN SIYAQ NUMBER TWENTY THOUSAND +1ED27 ; [*1EE7.0020.0002] # OTTOMAN SIYAQ NUMBER THIRTY THOUSAND +1ED28 ; [*1EE8.0020.0002] # OTTOMAN SIYAQ NUMBER FORTY THOUSAND +1ED29 ; [*1EE9.0020.0002] # OTTOMAN SIYAQ NUMBER FIFTY THOUSAND +1ED2A ; [*1EEA.0020.0002] # OTTOMAN SIYAQ NUMBER SIXTY THOUSAND +1ED2B ; [*1EEB.0020.0002] # OTTOMAN SIYAQ NUMBER SEVENTY THOUSAND +1ED2C ; [*1EEC.0020.0002] # OTTOMAN SIYAQ NUMBER EIGHTY THOUSAND +1ED2D ; [*1EED.0020.0002] # OTTOMAN SIYAQ NUMBER NINETY THOUSAND +1ED2E ; [*1316.0020.0002] # OTTOMAN SIYAQ MARRATAN +1ED37 ; [*1EEE.0020.0002] # OTTOMAN SIYAQ ALTERNATE NUMBER TEN +1ED38 ; [*1EEF.0020.0002] # OTTOMAN SIYAQ ALTERNATE NUMBER FOUR HUNDRED +1ED39 ; [*1EF0.0020.0002] # OTTOMAN SIYAQ ALTERNATE NUMBER SIX HUNDRED +1ED3A ; [*1EF1.0020.0002] # OTTOMAN SIYAQ ALTERNATE NUMBER TWO THOUSAND +1ED3B ; [*1EF2.0020.0002] # OTTOMAN SIYAQ ALTERNATE NUMBER TEN THOUSAND +1ED3C ; [*1EF3.0020.0002] # OTTOMAN SIYAQ FRACTION ONE HALF +1ED3D ; [*1EF4.0020.0002] # OTTOMAN SIYAQ FRACTION ONE SIXTH +1EEF0 ; [*052F.0020.0002] # ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL +1EEF1 ; [*0530.0020.0002] # ARABIC MATHEMATICAL OPERATOR HAH WITH DAL +1F000 ; [*1317.0020.0002] # MAHJONG TILE EAST WIND +1F001 ; [*1318.0020.0002] # MAHJONG TILE SOUTH WIND +1F002 ; [*1319.0020.0002] # MAHJONG TILE WEST WIND +1F003 ; [*131A.0020.0002] # MAHJONG TILE NORTH WIND +1F004 ; [*131B.0020.0002] # MAHJONG TILE RED DRAGON +1F005 ; [*131C.0020.0002] # MAHJONG TILE GREEN DRAGON +1F006 ; [*131D.0020.0002] # MAHJONG TILE WHITE DRAGON +1F007 ; [*131E.0020.0002] # MAHJONG TILE ONE OF CHARACTERS +1F008 ; [*131F.0020.0002] # MAHJONG TILE TWO OF CHARACTERS +1F009 ; [*1320.0020.0002] # MAHJONG TILE THREE OF CHARACTERS +1F00A ; [*1321.0020.0002] # MAHJONG TILE FOUR OF CHARACTERS +1F00B ; [*1322.0020.0002] # MAHJONG TILE FIVE OF CHARACTERS +1F00C ; [*1323.0020.0002] # MAHJONG TILE SIX OF CHARACTERS +1F00D ; [*1324.0020.0002] # MAHJONG TILE SEVEN OF CHARACTERS +1F00E ; [*1325.0020.0002] # MAHJONG TILE EIGHT OF CHARACTERS +1F00F ; [*1326.0020.0002] # MAHJONG TILE NINE OF CHARACTERS +1F010 ; [*1327.0020.0002] # MAHJONG TILE ONE OF BAMBOOS +1F011 ; [*1328.0020.0002] # MAHJONG TILE TWO OF BAMBOOS +1F012 ; [*1329.0020.0002] # MAHJONG TILE THREE OF BAMBOOS +1F013 ; [*132A.0020.0002] # MAHJONG TILE FOUR OF BAMBOOS +1F014 ; [*132B.0020.0002] # MAHJONG TILE FIVE OF BAMBOOS +1F015 ; [*132C.0020.0002] # MAHJONG TILE SIX OF BAMBOOS +1F016 ; [*132D.0020.0002] # MAHJONG TILE SEVEN OF BAMBOOS +1F017 ; [*132E.0020.0002] # MAHJONG TILE EIGHT OF BAMBOOS +1F018 ; [*132F.0020.0002] # MAHJONG TILE NINE OF BAMBOOS +1F019 ; [*1330.0020.0002] # MAHJONG TILE ONE OF CIRCLES +1F01A ; [*1331.0020.0002] # MAHJONG TILE TWO OF CIRCLES +1F01B ; [*1332.0020.0002] # MAHJONG TILE THREE OF CIRCLES +1F01C ; [*1333.0020.0002] # MAHJONG TILE FOUR OF CIRCLES +1F01D ; [*1334.0020.0002] # MAHJONG TILE FIVE OF CIRCLES +1F01E ; [*1335.0020.0002] # MAHJONG TILE SIX OF CIRCLES +1F01F ; [*1336.0020.0002] # MAHJONG TILE SEVEN OF CIRCLES +1F020 ; [*1337.0020.0002] # MAHJONG TILE EIGHT OF CIRCLES +1F021 ; [*1338.0020.0002] # MAHJONG TILE NINE OF CIRCLES +1F022 ; [*1339.0020.0002] # MAHJONG TILE PLUM +1F023 ; [*133A.0020.0002] # MAHJONG TILE ORCHID +1F024 ; [*133B.0020.0002] # MAHJONG TILE BAMBOO +1F025 ; [*133C.0020.0002] # MAHJONG TILE CHRYSANTHEMUM +1F026 ; [*133D.0020.0002] # MAHJONG TILE SPRING +1F027 ; [*133E.0020.0002] # MAHJONG TILE SUMMER +1F028 ; [*133F.0020.0002] # MAHJONG TILE AUTUMN +1F029 ; [*1340.0020.0002] # MAHJONG TILE WINTER +1F02A ; [*1341.0020.0002] # MAHJONG TILE JOKER +1F02B ; [*1342.0020.0002] # MAHJONG TILE BACK +1F030 ; [*1343.0020.0002] # DOMINO TILE HORIZONTAL BACK +1F031 ; [*1344.0020.0002] # DOMINO TILE HORIZONTAL-00-00 +1F032 ; [*1345.0020.0002] # DOMINO TILE HORIZONTAL-00-01 +1F033 ; [*1346.0020.0002] # DOMINO TILE HORIZONTAL-00-02 +1F034 ; [*1347.0020.0002] # DOMINO TILE HORIZONTAL-00-03 +1F035 ; [*1348.0020.0002] # DOMINO TILE HORIZONTAL-00-04 +1F036 ; [*1349.0020.0002] # DOMINO TILE HORIZONTAL-00-05 +1F037 ; [*134A.0020.0002] # DOMINO TILE HORIZONTAL-00-06 +1F038 ; [*134B.0020.0002] # DOMINO TILE HORIZONTAL-01-00 +1F039 ; [*134C.0020.0002] # DOMINO TILE HORIZONTAL-01-01 +1F03A ; [*134D.0020.0002] # DOMINO TILE HORIZONTAL-01-02 +1F03B ; [*134E.0020.0002] # DOMINO TILE HORIZONTAL-01-03 +1F03C ; [*134F.0020.0002] # DOMINO TILE HORIZONTAL-01-04 +1F03D ; [*1350.0020.0002] # DOMINO TILE HORIZONTAL-01-05 +1F03E ; [*1351.0020.0002] # DOMINO TILE HORIZONTAL-01-06 +1F03F ; [*1352.0020.0002] # DOMINO TILE HORIZONTAL-02-00 +1F040 ; [*1353.0020.0002] # DOMINO TILE HORIZONTAL-02-01 +1F041 ; [*1354.0020.0002] # DOMINO TILE HORIZONTAL-02-02 +1F042 ; [*1355.0020.0002] # DOMINO TILE HORIZONTAL-02-03 +1F043 ; [*1356.0020.0002] # DOMINO TILE HORIZONTAL-02-04 +1F044 ; [*1357.0020.0002] # DOMINO TILE HORIZONTAL-02-05 +1F045 ; [*1358.0020.0002] # DOMINO TILE HORIZONTAL-02-06 +1F046 ; [*1359.0020.0002] # DOMINO TILE HORIZONTAL-03-00 +1F047 ; [*135A.0020.0002] # DOMINO TILE HORIZONTAL-03-01 +1F048 ; [*135B.0020.0002] # DOMINO TILE HORIZONTAL-03-02 +1F049 ; [*135C.0020.0002] # DOMINO TILE HORIZONTAL-03-03 +1F04A ; [*135D.0020.0002] # DOMINO TILE HORIZONTAL-03-04 +1F04B ; [*135E.0020.0002] # DOMINO TILE HORIZONTAL-03-05 +1F04C ; [*135F.0020.0002] # DOMINO TILE HORIZONTAL-03-06 +1F04D ; [*1360.0020.0002] # DOMINO TILE HORIZONTAL-04-00 +1F04E ; [*1361.0020.0002] # DOMINO TILE HORIZONTAL-04-01 +1F04F ; [*1362.0020.0002] # DOMINO TILE HORIZONTAL-04-02 +1F050 ; [*1363.0020.0002] # DOMINO TILE HORIZONTAL-04-03 +1F051 ; [*1364.0020.0002] # DOMINO TILE HORIZONTAL-04-04 +1F052 ; [*1365.0020.0002] # DOMINO TILE HORIZONTAL-04-05 +1F053 ; [*1366.0020.0002] # DOMINO TILE HORIZONTAL-04-06 +1F054 ; [*1367.0020.0002] # DOMINO TILE HORIZONTAL-05-00 +1F055 ; [*1368.0020.0002] # DOMINO TILE HORIZONTAL-05-01 +1F056 ; [*1369.0020.0002] # DOMINO TILE HORIZONTAL-05-02 +1F057 ; [*136A.0020.0002] # DOMINO TILE HORIZONTAL-05-03 +1F058 ; [*136B.0020.0002] # DOMINO TILE HORIZONTAL-05-04 +1F059 ; [*136C.0020.0002] # DOMINO TILE HORIZONTAL-05-05 +1F05A ; [*136D.0020.0002] # DOMINO TILE HORIZONTAL-05-06 +1F05B ; [*136E.0020.0002] # DOMINO TILE HORIZONTAL-06-00 +1F05C ; [*136F.0020.0002] # DOMINO TILE HORIZONTAL-06-01 +1F05D ; [*1370.0020.0002] # DOMINO TILE HORIZONTAL-06-02 +1F05E ; [*1371.0020.0002] # DOMINO TILE HORIZONTAL-06-03 +1F05F ; [*1372.0020.0002] # DOMINO TILE HORIZONTAL-06-04 +1F060 ; [*1373.0020.0002] # DOMINO TILE HORIZONTAL-06-05 +1F061 ; [*1374.0020.0002] # DOMINO TILE HORIZONTAL-06-06 +1F062 ; [*1375.0020.0002] # DOMINO TILE VERTICAL BACK +1F063 ; [*1376.0020.0002] # DOMINO TILE VERTICAL-00-00 +1F064 ; [*1377.0020.0002] # DOMINO TILE VERTICAL-00-01 +1F065 ; [*1378.0020.0002] # DOMINO TILE VERTICAL-00-02 +1F066 ; [*1379.0020.0002] # DOMINO TILE VERTICAL-00-03 +1F067 ; [*137A.0020.0002] # DOMINO TILE VERTICAL-00-04 +1F068 ; [*137B.0020.0002] # DOMINO TILE VERTICAL-00-05 +1F069 ; [*137C.0020.0002] # DOMINO TILE VERTICAL-00-06 +1F06A ; [*137D.0020.0002] # DOMINO TILE VERTICAL-01-00 +1F06B ; [*137E.0020.0002] # DOMINO TILE VERTICAL-01-01 +1F06C ; [*137F.0020.0002] # DOMINO TILE VERTICAL-01-02 +1F06D ; [*1380.0020.0002] # DOMINO TILE VERTICAL-01-03 +1F06E ; [*1381.0020.0002] # DOMINO TILE VERTICAL-01-04 +1F06F ; [*1382.0020.0002] # DOMINO TILE VERTICAL-01-05 +1F070 ; [*1383.0020.0002] # DOMINO TILE VERTICAL-01-06 +1F071 ; [*1384.0020.0002] # DOMINO TILE VERTICAL-02-00 +1F072 ; [*1385.0020.0002] # DOMINO TILE VERTICAL-02-01 +1F073 ; [*1386.0020.0002] # DOMINO TILE VERTICAL-02-02 +1F074 ; [*1387.0020.0002] # DOMINO TILE VERTICAL-02-03 +1F075 ; [*1388.0020.0002] # DOMINO TILE VERTICAL-02-04 +1F076 ; [*1389.0020.0002] # DOMINO TILE VERTICAL-02-05 +1F077 ; [*138A.0020.0002] # DOMINO TILE VERTICAL-02-06 +1F078 ; [*138B.0020.0002] # DOMINO TILE VERTICAL-03-00 +1F079 ; [*138C.0020.0002] # DOMINO TILE VERTICAL-03-01 +1F07A ; [*138D.0020.0002] # DOMINO TILE VERTICAL-03-02 +1F07B ; [*138E.0020.0002] # DOMINO TILE VERTICAL-03-03 +1F07C ; [*138F.0020.0002] # DOMINO TILE VERTICAL-03-04 +1F07D ; [*1390.0020.0002] # DOMINO TILE VERTICAL-03-05 +1F07E ; [*1391.0020.0002] # DOMINO TILE VERTICAL-03-06 +1F07F ; [*1392.0020.0002] # DOMINO TILE VERTICAL-04-00 +1F080 ; [*1393.0020.0002] # DOMINO TILE VERTICAL-04-01 +1F081 ; [*1394.0020.0002] # DOMINO TILE VERTICAL-04-02 +1F082 ; [*1395.0020.0002] # DOMINO TILE VERTICAL-04-03 +1F083 ; [*1396.0020.0002] # DOMINO TILE VERTICAL-04-04 +1F084 ; [*1397.0020.0002] # DOMINO TILE VERTICAL-04-05 +1F085 ; [*1398.0020.0002] # DOMINO TILE VERTICAL-04-06 +1F086 ; [*1399.0020.0002] # DOMINO TILE VERTICAL-05-00 +1F087 ; [*139A.0020.0002] # DOMINO TILE VERTICAL-05-01 +1F088 ; [*139B.0020.0002] # DOMINO TILE VERTICAL-05-02 +1F089 ; [*139C.0020.0002] # DOMINO TILE VERTICAL-05-03 +1F08A ; [*139D.0020.0002] # DOMINO TILE VERTICAL-05-04 +1F08B ; [*139E.0020.0002] # DOMINO TILE VERTICAL-05-05 +1F08C ; [*139F.0020.0002] # DOMINO TILE VERTICAL-05-06 +1F08D ; [*13A0.0020.0002] # DOMINO TILE VERTICAL-06-00 +1F08E ; [*13A1.0020.0002] # DOMINO TILE VERTICAL-06-01 +1F08F ; [*13A2.0020.0002] # DOMINO TILE VERTICAL-06-02 +1F090 ; [*13A3.0020.0002] # DOMINO TILE VERTICAL-06-03 +1F091 ; [*13A4.0020.0002] # DOMINO TILE VERTICAL-06-04 +1F092 ; [*13A5.0020.0002] # DOMINO TILE VERTICAL-06-05 +1F093 ; [*13A6.0020.0002] # DOMINO TILE VERTICAL-06-06 +1F0A0 ; [*13A7.0020.0002] # PLAYING CARD BACK +1F0A1 ; [*13A8.0020.0002] # PLAYING CARD ACE OF SPADES +1F0A2 ; [*13A9.0020.0002] # PLAYING CARD TWO OF SPADES +1F0A3 ; [*13AA.0020.0002] # PLAYING CARD THREE OF SPADES +1F0A4 ; [*13AB.0020.0002] # PLAYING CARD FOUR OF SPADES +1F0A5 ; [*13AC.0020.0002] # PLAYING CARD FIVE OF SPADES +1F0A6 ; [*13AD.0020.0002] # PLAYING CARD SIX OF SPADES +1F0A7 ; [*13AE.0020.0002] # PLAYING CARD SEVEN OF SPADES +1F0A8 ; [*13AF.0020.0002] # PLAYING CARD EIGHT OF SPADES +1F0A9 ; [*13B0.0020.0002] # PLAYING CARD NINE OF SPADES +1F0AA ; [*13B1.0020.0002] # PLAYING CARD TEN OF SPADES +1F0AB ; [*13B2.0020.0002] # PLAYING CARD JACK OF SPADES +1F0AC ; [*13B3.0020.0002] # PLAYING CARD KNIGHT OF SPADES +1F0AD ; [*13B4.0020.0002] # PLAYING CARD QUEEN OF SPADES +1F0AE ; [*13B5.0020.0002] # PLAYING CARD KING OF SPADES +1F0B1 ; [*13B6.0020.0002] # PLAYING CARD ACE OF HEARTS +1F0B2 ; [*13B7.0020.0002] # PLAYING CARD TWO OF HEARTS +1F0B3 ; [*13B8.0020.0002] # PLAYING CARD THREE OF HEARTS +1F0B4 ; [*13B9.0020.0002] # PLAYING CARD FOUR OF HEARTS +1F0B5 ; [*13BA.0020.0002] # PLAYING CARD FIVE OF HEARTS +1F0B6 ; [*13BB.0020.0002] # PLAYING CARD SIX OF HEARTS +1F0B7 ; [*13BC.0020.0002] # PLAYING CARD SEVEN OF HEARTS +1F0B8 ; [*13BD.0020.0002] # PLAYING CARD EIGHT OF HEARTS +1F0B9 ; [*13BE.0020.0002] # PLAYING CARD NINE OF HEARTS +1F0BA ; [*13BF.0020.0002] # PLAYING CARD TEN OF HEARTS +1F0BB ; [*13C0.0020.0002] # PLAYING CARD JACK OF HEARTS +1F0BC ; [*13C1.0020.0002] # PLAYING CARD KNIGHT OF HEARTS +1F0BD ; [*13C2.0020.0002] # PLAYING CARD QUEEN OF HEARTS +1F0BE ; [*13C3.0020.0002] # PLAYING CARD KING OF HEARTS +1F0BF ; [*13C4.0020.0002] # PLAYING CARD RED JOKER +1F0C1 ; [*13C5.0020.0002] # PLAYING CARD ACE OF DIAMONDS +1F0C2 ; [*13C6.0020.0002] # PLAYING CARD TWO OF DIAMONDS +1F0C3 ; [*13C7.0020.0002] # PLAYING CARD THREE OF DIAMONDS +1F0C4 ; [*13C8.0020.0002] # PLAYING CARD FOUR OF DIAMONDS +1F0C5 ; [*13C9.0020.0002] # PLAYING CARD FIVE OF DIAMONDS +1F0C6 ; [*13CA.0020.0002] # PLAYING CARD SIX OF DIAMONDS +1F0C7 ; [*13CB.0020.0002] # PLAYING CARD SEVEN OF DIAMONDS +1F0C8 ; [*13CC.0020.0002] # PLAYING CARD EIGHT OF DIAMONDS +1F0C9 ; [*13CD.0020.0002] # PLAYING CARD NINE OF DIAMONDS +1F0CA ; [*13CE.0020.0002] # PLAYING CARD TEN OF DIAMONDS +1F0CB ; [*13CF.0020.0002] # PLAYING CARD JACK OF DIAMONDS +1F0CC ; [*13D0.0020.0002] # PLAYING CARD KNIGHT OF DIAMONDS +1F0CD ; [*13D1.0020.0002] # PLAYING CARD QUEEN OF DIAMONDS +1F0CE ; [*13D2.0020.0002] # PLAYING CARD KING OF DIAMONDS +1F0CF ; [*13D3.0020.0002] # PLAYING CARD BLACK JOKER +1F0D1 ; [*13D4.0020.0002] # PLAYING CARD ACE OF CLUBS +1F0D2 ; [*13D5.0020.0002] # PLAYING CARD TWO OF CLUBS +1F0D3 ; [*13D6.0020.0002] # PLAYING CARD THREE OF CLUBS +1F0D4 ; [*13D7.0020.0002] # PLAYING CARD FOUR OF CLUBS +1F0D5 ; [*13D8.0020.0002] # PLAYING CARD FIVE OF CLUBS +1F0D6 ; [*13D9.0020.0002] # PLAYING CARD SIX OF CLUBS +1F0D7 ; [*13DA.0020.0002] # PLAYING CARD SEVEN OF CLUBS +1F0D8 ; [*13DB.0020.0002] # PLAYING CARD EIGHT OF CLUBS +1F0D9 ; [*13DC.0020.0002] # PLAYING CARD NINE OF CLUBS +1F0DA ; [*13DD.0020.0002] # PLAYING CARD TEN OF CLUBS +1F0DB ; [*13DE.0020.0002] # PLAYING CARD JACK OF CLUBS +1F0DC ; [*13DF.0020.0002] # PLAYING CARD KNIGHT OF CLUBS +1F0DD ; [*13E0.0020.0002] # PLAYING CARD QUEEN OF CLUBS +1F0DE ; [*13E1.0020.0002] # PLAYING CARD KING OF CLUBS +1F0DF ; [*13E2.0020.0002] # PLAYING CARD WHITE JOKER +1F0E0 ; [*13E3.0020.0002] # PLAYING CARD FOOL +1F0E1 ; [*13E4.0020.0002] # PLAYING CARD TRUMP-1 +1F0E2 ; [*13E5.0020.0002] # PLAYING CARD TRUMP-2 +1F0E3 ; [*13E6.0020.0002] # PLAYING CARD TRUMP-3 +1F0E4 ; [*13E7.0020.0002] # PLAYING CARD TRUMP-4 +1F0E5 ; [*13E8.0020.0002] # PLAYING CARD TRUMP-5 +1F0E6 ; [*13E9.0020.0002] # PLAYING CARD TRUMP-6 +1F0E7 ; [*13EA.0020.0002] # PLAYING CARD TRUMP-7 +1F0E8 ; [*13EB.0020.0002] # PLAYING CARD TRUMP-8 +1F0E9 ; [*13EC.0020.0002] # PLAYING CARD TRUMP-9 +1F0EA ; [*13ED.0020.0002] # PLAYING CARD TRUMP-10 +1F0EB ; [*13EE.0020.0002] # PLAYING CARD TRUMP-11 +1F0EC ; [*13EF.0020.0002] # PLAYING CARD TRUMP-12 +1F0ED ; [*13F0.0020.0002] # PLAYING CARD TRUMP-13 +1F0EE ; [*13F1.0020.0002] # PLAYING CARD TRUMP-14 +1F0EF ; [*13F2.0020.0002] # PLAYING CARD TRUMP-15 +1F0F0 ; [*13F3.0020.0002] # PLAYING CARD TRUMP-16 +1F0F1 ; [*13F4.0020.0002] # PLAYING CARD TRUMP-17 +1F0F2 ; [*13F5.0020.0002] # PLAYING CARD TRUMP-18 +1F0F3 ; [*13F6.0020.0002] # PLAYING CARD TRUMP-19 +1F0F4 ; [*13F7.0020.0002] # PLAYING CARD TRUMP-20 +1F0F5 ; [*13F8.0020.0002] # PLAYING CARD TRUMP-21 +1F10D ; [*145B.0020.0002] # CIRCLED ZERO WITH SLASH +1F10E ; [*145C.0020.0002] # CIRCLED ANTICLOCKWISE ARROW +1F10F ; [*145D.0020.0002] # CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH +1F12F ; [*05D3.0020.0002] # COPYLEFT SYMBOL +1F16D ; [*145E.0020.0002] # CIRCLED CC +1F16E ; [*145F.0020.0002] # CIRCLED C WITH OVERLAID BACKSLASH +1F16F ; [*1460.0020.0002] # CIRCLED HUMAN FIGURE +1F1AD ; [*05D5.0020.0002] # MASK WORK SYMBOL +1F1E6 ; [*0B22.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER A +1F1E7 ; [*0B23.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER B +1F1E8 ; [*0B24.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER C +1F1E9 ; [*0B25.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER D +1F1EA ; [*0B26.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER E +1F1EB ; [*0B27.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER F +1F1EC ; [*0B28.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER G +1F1ED ; [*0B29.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER H +1F1EE ; [*0B2A.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER I +1F1EF ; [*0B2B.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER J +1F1F0 ; [*0B2C.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER K +1F1F1 ; [*0B2D.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER L +1F1F2 ; [*0B2E.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER M +1F1F3 ; [*0B2F.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER N +1F1F4 ; [*0B30.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER O +1F1F5 ; [*0B31.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER P +1F1F6 ; [*0B32.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER Q +1F1F7 ; [*0B33.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER R +1F1F8 ; [*0B34.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER S +1F1F9 ; [*0B35.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER T +1F1FA ; [*0B36.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER U +1F1FB ; [*0B37.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER V +1F1FC ; [*0B38.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER W +1F1FD ; [*0B39.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER X +1F1FE ; [*0B3A.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER Y +1F1FF ; [*0B3B.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER Z +1F260 ; [*1461.0020.0002] # ROUNDED SYMBOL FOR FU +1F261 ; [*1462.0020.0002] # ROUNDED SYMBOL FOR LU +1F262 ; [*1463.0020.0002] # ROUNDED SYMBOL FOR SHOU +1F263 ; [*1464.0020.0002] # ROUNDED SYMBOL FOR XI +1F264 ; [*1465.0020.0002] # ROUNDED SYMBOL FOR SHUANGXI +1F265 ; [*1466.0020.0002] # ROUNDED SYMBOL FOR CAI +1F300 ; [*1467.0020.0002] # CYCLONE +1F301 ; [*1468.0020.0002] # FOGGY +1F302 ; [*1469.0020.0002] # CLOSED UMBRELLA +1F303 ; [*146A.0020.0002] # NIGHT WITH STARS +1F304 ; [*146B.0020.0002] # SUNRISE OVER MOUNTAINS +1F305 ; [*146C.0020.0002] # SUNRISE +1F306 ; [*146D.0020.0002] # CITYSCAPE AT DUSK +1F307 ; [*146E.0020.0002] # SUNSET OVER BUILDINGS +1F308 ; [*146F.0020.0002] # RAINBOW +1F309 ; [*1470.0020.0002] # BRIDGE AT NIGHT +1F30A ; [*1471.0020.0002] # WATER WAVE +1F30B ; [*1472.0020.0002] # VOLCANO +1F30C ; [*1473.0020.0002] # MILKY WAY +1F30D ; [*1474.0020.0002] # EARTH GLOBE EUROPE-AFRICA +1F30E ; [*1475.0020.0002] # EARTH GLOBE AMERICAS +1F30F ; [*1476.0020.0002] # EARTH GLOBE ASIA-AUSTRALIA +1F310 ; [*1477.0020.0002] # GLOBE WITH MERIDIANS +1F311 ; [*1478.0020.0002] # NEW MOON SYMBOL +1F312 ; [*1479.0020.0002] # WAXING CRESCENT MOON SYMBOL +1F313 ; [*147A.0020.0002] # FIRST QUARTER MOON SYMBOL +1F314 ; [*147B.0020.0002] # WAXING GIBBOUS MOON SYMBOL +1F315 ; [*147C.0020.0002] # FULL MOON SYMBOL +1F316 ; [*147D.0020.0002] # WANING GIBBOUS MOON SYMBOL +1F317 ; [*147E.0020.0002] # LAST QUARTER MOON SYMBOL +1F318 ; [*147F.0020.0002] # WANING CRESCENT MOON SYMBOL +1F319 ; [*1480.0020.0002] # CRESCENT MOON +1F31A ; [*1481.0020.0002] # NEW MOON WITH FACE +1F31B ; [*1482.0020.0002] # FIRST QUARTER MOON WITH FACE +1F31C ; [*1483.0020.0002] # LAST QUARTER MOON WITH FACE +1F31D ; [*1484.0020.0002] # FULL MOON WITH FACE +1F31E ; [*1485.0020.0002] # SUN WITH FACE +1F31F ; [*1486.0020.0002] # GLOWING STAR +1F320 ; [*1487.0020.0002] # SHOOTING STAR +1F321 ; [*1488.0020.0002] # THERMOMETER +1F322 ; [*1489.0020.0002] # BLACK DROPLET +1F323 ; [*148A.0020.0002] # WHITE SUN +1F324 ; [*148B.0020.0002] # WHITE SUN WITH SMALL CLOUD +1F325 ; [*148C.0020.0002] # WHITE SUN BEHIND CLOUD +1F326 ; [*148D.0020.0002] # WHITE SUN BEHIND CLOUD WITH RAIN +1F327 ; [*148E.0020.0002] # CLOUD WITH RAIN +1F328 ; [*148F.0020.0002] # CLOUD WITH SNOW +1F329 ; [*1490.0020.0002] # CLOUD WITH LIGHTNING +1F32A ; [*1491.0020.0002] # CLOUD WITH TORNADO +1F32B ; [*1492.0020.0002] # FOG +1F32C ; [*1493.0020.0002] # WIND BLOWING FACE +1F32D ; [*1494.0020.0002] # HOT DOG +1F32E ; [*1495.0020.0002] # TACO +1F32F ; [*1496.0020.0002] # BURRITO +1F330 ; [*1497.0020.0002] # CHESTNUT +1F331 ; [*1498.0020.0002] # SEEDLING +1F332 ; [*1499.0020.0002] # EVERGREEN TREE +1F333 ; [*149A.0020.0002] # DECIDUOUS TREE +1F334 ; [*149B.0020.0002] # PALM TREE +1F335 ; [*149C.0020.0002] # CACTUS +1F336 ; [*149D.0020.0002] # HOT PEPPER +1F337 ; [*149E.0020.0002] # TULIP +1F338 ; [*149F.0020.0002] # CHERRY BLOSSOM +1F339 ; [*14A0.0020.0002] # ROSE +1F33A ; [*14A1.0020.0002] # HIBISCUS +1F33B ; [*14A2.0020.0002] # SUNFLOWER +1F33C ; [*14A3.0020.0002] # BLOSSOM +1F33D ; [*14A4.0020.0002] # EAR OF MAIZE +1F33E ; [*14A5.0020.0002] # EAR OF RICE +1F33F ; [*14A6.0020.0002] # HERB +1F340 ; [*14A7.0020.0002] # FOUR LEAF CLOVER +1F341 ; [*14A8.0020.0002] # MAPLE LEAF +1F342 ; [*14A9.0020.0002] # FALLEN LEAF +1F343 ; [*14AA.0020.0002] # LEAF FLUTTERING IN WIND +1F344 ; [*14AB.0020.0002] # MUSHROOM +1F345 ; [*14AC.0020.0002] # TOMATO +1F346 ; [*14AD.0020.0002] # AUBERGINE +1F347 ; [*14AE.0020.0002] # GRAPES +1F348 ; [*14AF.0020.0002] # MELON +1F349 ; [*14B0.0020.0002] # WATERMELON +1F34A ; [*14B1.0020.0002] # TANGERINE +1F34B ; [*14B2.0020.0002] # LEMON +1F34C ; [*14B3.0020.0002] # BANANA +1F34D ; [*14B4.0020.0002] # PINEAPPLE +1F34E ; [*14B5.0020.0002] # RED APPLE +1F34F ; [*14B6.0020.0002] # GREEN APPLE +1F350 ; [*14B7.0020.0002] # PEAR +1F351 ; [*14B8.0020.0002] # PEACH +1F352 ; [*14B9.0020.0002] # CHERRIES +1F353 ; [*14BA.0020.0002] # STRAWBERRY +1F354 ; [*14BB.0020.0002] # HAMBURGER +1F355 ; [*14BC.0020.0002] # SLICE OF PIZZA +1F356 ; [*14BD.0020.0002] # MEAT ON BONE +1F357 ; [*14BE.0020.0002] # POULTRY LEG +1F358 ; [*14BF.0020.0002] # RICE CRACKER +1F359 ; [*14C0.0020.0002] # RICE BALL +1F35A ; [*14C1.0020.0002] # COOKED RICE +1F35B ; [*14C2.0020.0002] # CURRY AND RICE +1F35C ; [*14C3.0020.0002] # STEAMING BOWL +1F35D ; [*14C4.0020.0002] # SPAGHETTI +1F35E ; [*14C5.0020.0002] # BREAD +1F35F ; [*14C6.0020.0002] # FRENCH FRIES +1F360 ; [*14C7.0020.0002] # ROASTED SWEET POTATO +1F361 ; [*14C8.0020.0002] # DANGO +1F362 ; [*14C9.0020.0002] # ODEN +1F363 ; [*14CA.0020.0002] # SUSHI +1F364 ; [*14CB.0020.0002] # FRIED SHRIMP +1F365 ; [*14CC.0020.0002] # FISH CAKE WITH SWIRL DESIGN +1F366 ; [*14CD.0020.0002] # SOFT ICE CREAM +1F367 ; [*14CE.0020.0002] # SHAVED ICE +1F368 ; [*14CF.0020.0002] # ICE CREAM +1F369 ; [*14D0.0020.0002] # DOUGHNUT +1F36A ; [*14D1.0020.0002] # COOKIE +1F36B ; [*14D2.0020.0002] # CHOCOLATE BAR +1F36C ; [*14D3.0020.0002] # CANDY +1F36D ; [*14D4.0020.0002] # LOLLIPOP +1F36E ; [*14D5.0020.0002] # CUSTARD +1F36F ; [*14D6.0020.0002] # HONEY POT +1F370 ; [*14D7.0020.0002] # SHORTCAKE +1F371 ; [*14D8.0020.0002] # BENTO BOX +1F372 ; [*14D9.0020.0002] # POT OF FOOD +1F373 ; [*14DA.0020.0002] # COOKING +1F374 ; [*14DB.0020.0002] # FORK AND KNIFE +1F375 ; [*14DC.0020.0002] # TEACUP WITHOUT HANDLE +1F376 ; [*14DD.0020.0002] # SAKE BOTTLE AND CUP +1F377 ; [*14DE.0020.0002] # WINE GLASS +1F378 ; [*14DF.0020.0002] # COCKTAIL GLASS +1F379 ; [*14E0.0020.0002] # TROPICAL DRINK +1F37A ; [*14E1.0020.0002] # BEER MUG +1F37B ; [*14E2.0020.0002] # CLINKING BEER MUGS +1F37C ; [*14E3.0020.0002] # BABY BOTTLE +1F37D ; [*14E4.0020.0002] # FORK AND KNIFE WITH PLATE +1F37E ; [*14E5.0020.0002] # BOTTLE WITH POPPING CORK +1F37F ; [*14E6.0020.0002] # POPCORN +1F380 ; [*14E7.0020.0002] # RIBBON +1F381 ; [*14E8.0020.0002] # WRAPPED PRESENT +1F382 ; [*14E9.0020.0002] # BIRTHDAY CAKE +1F383 ; [*14EA.0020.0002] # JACK-O-LANTERN +1F384 ; [*14EB.0020.0002] # CHRISTMAS TREE +1F385 ; [*14EC.0020.0002] # FATHER CHRISTMAS +1F386 ; [*14ED.0020.0002] # FIREWORKS +1F387 ; [*14EE.0020.0002] # FIREWORK SPARKLER +1F388 ; [*14EF.0020.0002] # BALLOON +1F389 ; [*14F0.0020.0002] # PARTY POPPER +1F38A ; [*14F1.0020.0002] # CONFETTI BALL +1F38B ; [*14F2.0020.0002] # TANABATA TREE +1F38C ; [*14F3.0020.0002] # CROSSED FLAGS +1F38D ; [*14F4.0020.0002] # PINE DECORATION +1F38E ; [*14F5.0020.0002] # JAPANESE DOLLS +1F38F ; [*14F6.0020.0002] # CARP STREAMER +1F390 ; [*14F7.0020.0002] # WIND CHIME +1F391 ; [*14F8.0020.0002] # MOON VIEWING CEREMONY +1F392 ; [*14F9.0020.0002] # SCHOOL SATCHEL +1F393 ; [*14FA.0020.0002] # GRADUATION CAP +1F394 ; [*14FB.0020.0002] # HEART WITH TIP ON THE LEFT +1F395 ; [*14FC.0020.0002] # BOUQUET OF FLOWERS +1F396 ; [*14FD.0020.0002] # MILITARY MEDAL +1F397 ; [*14FE.0020.0002] # REMINDER RIBBON +1F398 ; [*14FF.0020.0002] # MUSICAL KEYBOARD WITH JACKS +1F399 ; [*1500.0020.0002] # STUDIO MICROPHONE +1F39A ; [*1501.0020.0002] # LEVEL SLIDER +1F39B ; [*1502.0020.0002] # CONTROL KNOBS +1F39C ; [*1503.0020.0002] # BEAMED ASCENDING MUSICAL NOTES +1F39D ; [*1504.0020.0002] # BEAMED DESCENDING MUSICAL NOTES +1F39E ; [*1505.0020.0002] # FILM FRAMES +1F39F ; [*1506.0020.0002] # ADMISSION TICKETS +1F3A0 ; [*1507.0020.0002] # CAROUSEL HORSE +1F3A1 ; [*1508.0020.0002] # FERRIS WHEEL +1F3A2 ; [*1509.0020.0002] # ROLLER COASTER +1F3A3 ; [*150A.0020.0002] # FISHING POLE AND FISH +1F3A4 ; [*150B.0020.0002] # MICROPHONE +1F3A5 ; [*150C.0020.0002] # MOVIE CAMERA +1F3A6 ; [*150D.0020.0002] # CINEMA +1F3A7 ; [*150E.0020.0002] # HEADPHONE +1F3A8 ; [*150F.0020.0002] # ARTIST PALETTE +1F3A9 ; [*1510.0020.0002] # TOP HAT +1F3AA ; [*1511.0020.0002] # CIRCUS TENT +1F3AB ; [*1512.0020.0002] # TICKET +1F3AC ; [*1513.0020.0002] # CLAPPER BOARD +1F3AD ; [*1514.0020.0002] # PERFORMING ARTS +1F3AE ; [*1515.0020.0002] # VIDEO GAME +1F3AF ; [*1516.0020.0002] # DIRECT HIT +1F3B0 ; [*1517.0020.0002] # SLOT MACHINE +1F3B1 ; [*1518.0020.0002] # BILLIARDS +1F3B2 ; [*1519.0020.0002] # GAME DIE +1F3B3 ; [*151A.0020.0002] # BOWLING +1F3B4 ; [*151B.0020.0002] # FLOWER PLAYING CARDS +1F3B5 ; [*151C.0020.0002] # MUSICAL NOTE +1F3B6 ; [*151D.0020.0002] # MULTIPLE MUSICAL NOTES +1F3B7 ; [*151E.0020.0002] # SAXOPHONE +1F3B8 ; [*151F.0020.0002] # GUITAR +1F3B9 ; [*1520.0020.0002] # MUSICAL KEYBOARD +1F3BA ; [*1521.0020.0002] # TRUMPET +1F3BB ; [*1522.0020.0002] # VIOLIN +1F3BC ; [*1523.0020.0002] # MUSICAL SCORE +1F3BD ; [*1524.0020.0002] # RUNNING SHIRT WITH SASH +1F3BE ; [*1525.0020.0002] # TENNIS RACQUET AND BALL +1F3BF ; [*1526.0020.0002] # SKI AND SKI BOOT +1F3C0 ; [*1527.0020.0002] # BASKETBALL AND HOOP +1F3C1 ; [*1528.0020.0002] # CHEQUERED FLAG +1F3C2 ; [*1529.0020.0002] # SNOWBOARDER +1F3C3 ; [*152A.0020.0002] # RUNNER +1F3C4 ; [*152B.0020.0002] # SURFER +1F3C5 ; [*152C.0020.0002] # SPORTS MEDAL +1F3C6 ; [*152D.0020.0002] # TROPHY +1F3C7 ; [*152E.0020.0002] # HORSE RACING +1F3C8 ; [*152F.0020.0002] # AMERICAN FOOTBALL +1F3C9 ; [*1530.0020.0002] # RUGBY FOOTBALL +1F3CA ; [*1531.0020.0002] # SWIMMER +1F3CB ; [*1532.0020.0002] # WEIGHT LIFTER +1F3CC ; [*1533.0020.0002] # GOLFER +1F3CD ; [*1534.0020.0002] # RACING MOTORCYCLE +1F3CE ; [*1535.0020.0002] # RACING CAR +1F3CF ; [*1536.0020.0002] # CRICKET BAT AND BALL +1F3D0 ; [*1537.0020.0002] # VOLLEYBALL +1F3D1 ; [*1538.0020.0002] # FIELD HOCKEY STICK AND BALL +1F3D2 ; [*1539.0020.0002] # ICE HOCKEY STICK AND PUCK +1F3D3 ; [*153A.0020.0002] # TABLE TENNIS PADDLE AND BALL +1F3D4 ; [*153B.0020.0002] # SNOW CAPPED MOUNTAIN +1F3D5 ; [*153C.0020.0002] # CAMPING +1F3D6 ; [*153D.0020.0002] # BEACH WITH UMBRELLA +1F3D7 ; [*153E.0020.0002] # BUILDING CONSTRUCTION +1F3D8 ; [*153F.0020.0002] # HOUSE BUILDINGS +1F3D9 ; [*1540.0020.0002] # CITYSCAPE +1F3DA ; [*1541.0020.0002] # DERELICT HOUSE BUILDING +1F3DB ; [*1542.0020.0002] # CLASSICAL BUILDING +1F3DC ; [*1543.0020.0002] # DESERT +1F3DD ; [*1544.0020.0002] # DESERT ISLAND +1F3DE ; [*1545.0020.0002] # NATIONAL PARK +1F3DF ; [*1546.0020.0002] # STADIUM +1F3E0 ; [*1547.0020.0002] # HOUSE BUILDING +1F3E1 ; [*1548.0020.0002] # HOUSE WITH GARDEN +1F3E2 ; [*1549.0020.0002] # OFFICE BUILDING +1F3E3 ; [*154A.0020.0002] # JAPANESE POST OFFICE +1F3E4 ; [*154B.0020.0002] # EUROPEAN POST OFFICE +1F3E5 ; [*154C.0020.0002] # HOSPITAL +1F3E6 ; [*154D.0020.0002] # BANK +1F3E7 ; [*154E.0020.0002] # AUTOMATED TELLER MACHINE +1F3E8 ; [*154F.0020.0002] # HOTEL +1F3E9 ; [*1550.0020.0002] # LOVE HOTEL +1F3EA ; [*1551.0020.0002] # CONVENIENCE STORE +1F3EB ; [*1552.0020.0002] # SCHOOL +1F3EC ; [*1553.0020.0002] # DEPARTMENT STORE +1F3ED ; [*1554.0020.0002] # FACTORY +1F3EE ; [*1555.0020.0002] # IZAKAYA LANTERN +1F3EF ; [*1556.0020.0002] # JAPANESE CASTLE +1F3F0 ; [*1557.0020.0002] # EUROPEAN CASTLE +1F3F1 ; [*1558.0020.0002] # WHITE PENNANT +1F3F2 ; [*1559.0020.0002] # BLACK PENNANT +1F3F3 ; [*155A.0020.0002] # WAVING WHITE FLAG +1F3F4 ; [*155B.0020.0002] # WAVING BLACK FLAG +1F3F5 ; [*155C.0020.0002] # ROSETTE +1F3F6 ; [*155D.0020.0002] # BLACK ROSETTE +1F3F7 ; [*155E.0020.0002] # LABEL +1F3F8 ; [*155F.0020.0002] # BADMINTON RACQUET AND SHUTTLECOCK +1F3F9 ; [*1560.0020.0002] # BOW AND ARROW +1F3FA ; [*1561.0020.0002] # AMPHORA +1F3FB ; [*1562.0020.0002] # EMOJI MODIFIER FITZPATRICK TYPE-1-2 +1F3FC ; [*1563.0020.0002] # EMOJI MODIFIER FITZPATRICK TYPE-3 +1F3FD ; [*1564.0020.0002] # EMOJI MODIFIER FITZPATRICK TYPE-4 +1F3FE ; [*1565.0020.0002] # EMOJI MODIFIER FITZPATRICK TYPE-5 +1F3FF ; [*1566.0020.0002] # EMOJI MODIFIER FITZPATRICK TYPE-6 +1F400 ; [*1567.0020.0002] # RAT +1F401 ; [*1568.0020.0002] # MOUSE +1F402 ; [*1569.0020.0002] # OX +1F403 ; [*156A.0020.0002] # WATER BUFFALO +1F404 ; [*156B.0020.0002] # COW +1F405 ; [*156C.0020.0002] # TIGER +1F406 ; [*156D.0020.0002] # LEOPARD +1F407 ; [*156E.0020.0002] # RABBIT +1F408 ; [*156F.0020.0002] # CAT +1F409 ; [*1570.0020.0002] # DRAGON +1F40A ; [*1571.0020.0002] # CROCODILE +1F40B ; [*1572.0020.0002] # WHALE +1F40C ; [*1573.0020.0002] # SNAIL +1F40D ; [*1574.0020.0002] # SNAKE +1F40E ; [*1575.0020.0002] # HORSE +1F40F ; [*1576.0020.0002] # RAM +1F410 ; [*1577.0020.0002] # GOAT +1F411 ; [*1578.0020.0002] # SHEEP +1F412 ; [*1579.0020.0002] # MONKEY +1F413 ; [*157A.0020.0002] # ROOSTER +1F414 ; [*157B.0020.0002] # CHICKEN +1F415 ; [*157C.0020.0002] # DOG +1F416 ; [*157D.0020.0002] # PIG +1F417 ; [*157E.0020.0002] # BOAR +1F418 ; [*157F.0020.0002] # ELEPHANT +1F419 ; [*1580.0020.0002] # OCTOPUS +1F41A ; [*1581.0020.0002] # SPIRAL SHELL +1F41B ; [*1582.0020.0002] # BUG +1F41C ; [*1583.0020.0002] # ANT +1F41D ; [*1584.0020.0002] # HONEYBEE +1F41E ; [*1585.0020.0002] # LADY BEETLE +1F41F ; [*1586.0020.0002] # FISH +1F420 ; [*1587.0020.0002] # TROPICAL FISH +1F421 ; [*1588.0020.0002] # BLOWFISH +1F422 ; [*1589.0020.0002] # TURTLE +1F423 ; [*158A.0020.0002] # HATCHING CHICK +1F424 ; [*158B.0020.0002] # BABY CHICK +1F425 ; [*158C.0020.0002] # FRONT-FACING BABY CHICK +1F426 ; [*158D.0020.0002] # BIRD +1F427 ; [*158E.0020.0002] # PENGUIN +1F428 ; [*158F.0020.0002] # KOALA +1F429 ; [*1590.0020.0002] # POODLE +1F42A ; [*1591.0020.0002] # DROMEDARY CAMEL +1F42B ; [*1592.0020.0002] # BACTRIAN CAMEL +1F42C ; [*1593.0020.0002] # DOLPHIN +1F42D ; [*1594.0020.0002] # MOUSE FACE +1F42E ; [*1595.0020.0002] # COW FACE +1F42F ; [*1596.0020.0002] # TIGER FACE +1F430 ; [*1597.0020.0002] # RABBIT FACE +1F431 ; [*1598.0020.0002] # CAT FACE +1F432 ; [*1599.0020.0002] # DRAGON FACE +1F433 ; [*159A.0020.0002] # SPOUTING WHALE +1F434 ; [*159B.0020.0002] # HORSE FACE +1F435 ; [*159C.0020.0002] # MONKEY FACE +1F436 ; [*159D.0020.0002] # DOG FACE +1F437 ; [*159E.0020.0002] # PIG FACE +1F438 ; [*159F.0020.0002] # FROG FACE +1F439 ; [*15A0.0020.0002] # HAMSTER FACE +1F43A ; [*15A1.0020.0002] # WOLF FACE +1F43B ; [*15A2.0020.0002] # BEAR FACE +1F43C ; [*15A3.0020.0002] # PANDA FACE +1F43D ; [*15A4.0020.0002] # PIG NOSE +1F43E ; [*15A5.0020.0002] # PAW PRINTS +1F43F ; [*15A6.0020.0002] # CHIPMUNK +1F440 ; [*15A7.0020.0002] # EYES +1F441 ; [*15A8.0020.0002] # EYE +1F442 ; [*15A9.0020.0002] # EAR +1F443 ; [*15AA.0020.0002] # NOSE +1F444 ; [*15AB.0020.0002] # MOUTH +1F445 ; [*15AC.0020.0002] # TONGUE +1F446 ; [*15AD.0020.0002] # WHITE UP POINTING BACKHAND INDEX +1F447 ; [*15AE.0020.0002] # WHITE DOWN POINTING BACKHAND INDEX +1F448 ; [*15AF.0020.0002] # WHITE LEFT POINTING BACKHAND INDEX +1F449 ; [*15B0.0020.0002] # WHITE RIGHT POINTING BACKHAND INDEX +1F44A ; [*15B1.0020.0002] # FISTED HAND SIGN +1F44B ; [*15B2.0020.0002] # WAVING HAND SIGN +1F44C ; [*15B3.0020.0002] # OK HAND SIGN +1F44D ; [*15B4.0020.0002] # THUMBS UP SIGN +1F44E ; [*15B5.0020.0002] # THUMBS DOWN SIGN +1F44F ; [*15B6.0020.0002] # CLAPPING HANDS SIGN +1F450 ; [*15B7.0020.0002] # OPEN HANDS SIGN +1F451 ; [*15B8.0020.0002] # CROWN +1F452 ; [*15B9.0020.0002] # WOMANS HAT +1F453 ; [*15BA.0020.0002] # EYEGLASSES +1F454 ; [*15BB.0020.0002] # NECKTIE +1F455 ; [*15BC.0020.0002] # T-SHIRT +1F456 ; [*15BD.0020.0002] # JEANS +1F457 ; [*15BE.0020.0002] # DRESS +1F458 ; [*15BF.0020.0002] # KIMONO +1F459 ; [*15C0.0020.0002] # BIKINI +1F45A ; [*15C1.0020.0002] # WOMANS CLOTHES +1F45B ; [*15C2.0020.0002] # PURSE +1F45C ; [*15C3.0020.0002] # HANDBAG +1F45D ; [*15C4.0020.0002] # POUCH +1F45E ; [*15C5.0020.0002] # MANS SHOE +1F45F ; [*15C6.0020.0002] # ATHLETIC SHOE +1F460 ; [*15C7.0020.0002] # HIGH-HEELED SHOE +1F461 ; [*15C8.0020.0002] # WOMANS SANDAL +1F462 ; [*15C9.0020.0002] # WOMANS BOOTS +1F463 ; [*15CA.0020.0002] # FOOTPRINTS +1F464 ; [*15CB.0020.0002] # BUST IN SILHOUETTE +1F465 ; [*15CC.0020.0002] # BUSTS IN SILHOUETTE +1F466 ; [*15CD.0020.0002] # BOY +1F467 ; [*15CE.0020.0002] # GIRL +1F468 ; [*15CF.0020.0002] # MAN +1F469 ; [*15D0.0020.0002] # WOMAN +1F46A ; [*15D1.0020.0002] # FAMILY +1F46B ; [*15D2.0020.0002] # MAN AND WOMAN HOLDING HANDS +1F46C ; [*15D3.0020.0002] # TWO MEN HOLDING HANDS +1F46D ; [*15D4.0020.0002] # TWO WOMEN HOLDING HANDS +1F46E ; [*15D5.0020.0002] # POLICE OFFICER +1F46F ; [*15D6.0020.0002] # WOMAN WITH BUNNY EARS +1F470 ; [*15D7.0020.0002] # BRIDE WITH VEIL +1F471 ; [*15D8.0020.0002] # PERSON WITH BLOND HAIR +1F472 ; [*15D9.0020.0002] # MAN WITH GUA PI MAO +1F473 ; [*15DA.0020.0002] # MAN WITH TURBAN +1F474 ; [*15DB.0020.0002] # OLDER MAN +1F475 ; [*15DC.0020.0002] # OLDER WOMAN +1F476 ; [*15DD.0020.0002] # BABY +1F477 ; [*15DE.0020.0002] # CONSTRUCTION WORKER +1F478 ; [*15DF.0020.0002] # PRINCESS +1F479 ; [*15E0.0020.0002] # JAPANESE OGRE +1F47A ; [*15E1.0020.0002] # JAPANESE GOBLIN +1F47B ; [*15E2.0020.0002] # GHOST +1F47C ; [*15E3.0020.0002] # BABY ANGEL +1F47D ; [*15E4.0020.0002] # EXTRATERRESTRIAL ALIEN +1F47E ; [*15E5.0020.0002] # ALIEN MONSTER +1F47F ; [*15E6.0020.0002] # IMP +1F480 ; [*15E7.0020.0002] # SKULL +1F481 ; [*15E8.0020.0002] # INFORMATION DESK PERSON +1F482 ; [*15E9.0020.0002] # GUARDSMAN +1F483 ; [*15EA.0020.0002] # DANCER +1F484 ; [*15EB.0020.0002] # LIPSTICK +1F485 ; [*15EC.0020.0002] # NAIL POLISH +1F486 ; [*15ED.0020.0002] # FACE MASSAGE +1F487 ; [*15EE.0020.0002] # HAIRCUT +1F488 ; [*15EF.0020.0002] # BARBER POLE +1F489 ; [*15F0.0020.0002] # SYRINGE +1F48A ; [*15F1.0020.0002] # PILL +1F48B ; [*15F2.0020.0002] # KISS MARK +1F48C ; [*15F3.0020.0002] # LOVE LETTER +1F48D ; [*15F4.0020.0002] # RING +1F48E ; [*15F5.0020.0002] # GEM STONE +1F48F ; [*15F6.0020.0002] # KISS +1F490 ; [*15F7.0020.0002] # BOUQUET +1F491 ; [*15F8.0020.0002] # COUPLE WITH HEART +1F492 ; [*15F9.0020.0002] # WEDDING +1F493 ; [*15FA.0020.0002] # BEATING HEART +1F494 ; [*15FB.0020.0002] # BROKEN HEART +1F495 ; [*15FC.0020.0002] # TWO HEARTS +1F496 ; [*15FD.0020.0002] # SPARKLING HEART +1F497 ; [*15FE.0020.0002] # GROWING HEART +1F498 ; [*15FF.0020.0002] # HEART WITH ARROW +1F499 ; [*1600.0020.0002] # BLUE HEART +1F49A ; [*1601.0020.0002] # GREEN HEART +1F49B ; [*1602.0020.0002] # YELLOW HEART +1F49C ; [*1603.0020.0002] # PURPLE HEART +1F49D ; [*1604.0020.0002] # HEART WITH RIBBON +1F49E ; [*1605.0020.0002] # REVOLVING HEARTS +1F49F ; [*1606.0020.0002] # HEART DECORATION +1F4A0 ; [*1607.0020.0002] # DIAMOND SHAPE WITH A DOT INSIDE +1F4A1 ; [*1608.0020.0002] # ELECTRIC LIGHT BULB +1F4A2 ; [*1609.0020.0002] # ANGER SYMBOL +1F4A3 ; [*160A.0020.0002] # BOMB +1F4A4 ; [*160B.0020.0002] # SLEEPING SYMBOL +1F4A5 ; [*160C.0020.0002] # COLLISION SYMBOL +1F4A6 ; [*160D.0020.0002] # SPLASHING SWEAT SYMBOL +1F4A7 ; [*160E.0020.0002] # DROPLET +1F4A8 ; [*160F.0020.0002] # DASH SYMBOL +1F4A9 ; [*1610.0020.0002] # PILE OF POO +1F4AA ; [*1611.0020.0002] # FLEXED BICEPS +1F4AB ; [*1612.0020.0002] # DIZZY SYMBOL +1F4AC ; [*1613.0020.0002] # SPEECH BALLOON +1F4AD ; [*1614.0020.0002] # THOUGHT BALLOON +1F4AE ; [*1615.0020.0002] # WHITE FLOWER +1F4AF ; [*1616.0020.0002] # HUNDRED POINTS SYMBOL +1F4B0 ; [*1617.0020.0002] # MONEY BAG +1F4B1 ; [*1618.0020.0002] # CURRENCY EXCHANGE +1F4B2 ; [*1619.0020.0002] # HEAVY DOLLAR SIGN +1F4B3 ; [*161A.0020.0002] # CREDIT CARD +1F4B4 ; [*161B.0020.0002] # BANKNOTE WITH YEN SIGN +1F4B5 ; [*161C.0020.0002] # BANKNOTE WITH DOLLAR SIGN +1F4B6 ; [*161D.0020.0002] # BANKNOTE WITH EURO SIGN +1F4B7 ; [*161E.0020.0002] # BANKNOTE WITH POUND SIGN +1F4B8 ; [*161F.0020.0002] # MONEY WITH WINGS +1F4B9 ; [*1620.0020.0002] # CHART WITH UPWARDS TREND AND YEN SIGN +1F4BA ; [*1621.0020.0002] # SEAT +1F4BB ; [*1622.0020.0002] # PERSONAL COMPUTER +1F4BC ; [*1623.0020.0002] # BRIEFCASE +1F4BD ; [*1624.0020.0002] # MINIDISC +1F4BE ; [*1625.0020.0002] # FLOPPY DISK +1F4BF ; [*1626.0020.0002] # OPTICAL DISC +1F4C0 ; [*1627.0020.0002] # DVD +1F4C1 ; [*1628.0020.0002] # FILE FOLDER +1F4C2 ; [*1629.0020.0002] # OPEN FILE FOLDER +1F4C3 ; [*162A.0020.0002] # PAGE WITH CURL +1F4C4 ; [*162B.0020.0002] # PAGE FACING UP +1F4C5 ; [*162C.0020.0002] # CALENDAR +1F4C6 ; [*162D.0020.0002] # TEAR-OFF CALENDAR +1F4C7 ; [*162E.0020.0002] # CARD INDEX +1F4C8 ; [*162F.0020.0002] # CHART WITH UPWARDS TREND +1F4C9 ; [*1630.0020.0002] # CHART WITH DOWNWARDS TREND +1F4CA ; [*1631.0020.0002] # BAR CHART +1F4CB ; [*1632.0020.0002] # CLIPBOARD +1F4CC ; [*1633.0020.0002] # PUSHPIN +1F4CD ; [*1634.0020.0002] # ROUND PUSHPIN +1F4CE ; [*1635.0020.0002] # PAPERCLIP +1F4CF ; [*1636.0020.0002] # STRAIGHT RULER +1F4D0 ; [*1637.0020.0002] # TRIANGULAR RULER +1F4D1 ; [*1638.0020.0002] # BOOKMARK TABS +1F4D2 ; [*1639.0020.0002] # LEDGER +1F4D3 ; [*163A.0020.0002] # NOTEBOOK +1F4D4 ; [*163B.0020.0002] # NOTEBOOK WITH DECORATIVE COVER +1F4D5 ; [*163C.0020.0002] # CLOSED BOOK +1F4D6 ; [*163D.0020.0002] # OPEN BOOK +1F4D7 ; [*163E.0020.0002] # GREEN BOOK +1F4D8 ; [*163F.0020.0002] # BLUE BOOK +1F4D9 ; [*1640.0020.0002] # ORANGE BOOK +1F4DA ; [*1641.0020.0002] # BOOKS +1F4DB ; [*1642.0020.0002] # NAME BADGE +1F4DC ; [*1643.0020.0002] # SCROLL +1F4DD ; [*1644.0020.0002] # MEMO +1F4DE ; [*1645.0020.0002] # TELEPHONE RECEIVER +1F4DF ; [*1646.0020.0002] # PAGER +1F4E0 ; [*1647.0020.0002] # FAX MACHINE +1F4E1 ; [*1648.0020.0002] # SATELLITE ANTENNA +1F4E2 ; [*1649.0020.0002] # PUBLIC ADDRESS LOUDSPEAKER +1F4E3 ; [*164A.0020.0002] # CHEERING MEGAPHONE +1F4E4 ; [*164B.0020.0002] # OUTBOX TRAY +1F4E5 ; [*164C.0020.0002] # INBOX TRAY +1F4E6 ; [*164D.0020.0002] # PACKAGE +1F4E7 ; [*164E.0020.0002] # E-MAIL SYMBOL +1F4E8 ; [*164F.0020.0002] # INCOMING ENVELOPE +1F4E9 ; [*1650.0020.0002] # ENVELOPE WITH DOWNWARDS ARROW ABOVE +1F4EA ; [*1651.0020.0002] # CLOSED MAILBOX WITH LOWERED FLAG +1F4EB ; [*1652.0020.0002] # CLOSED MAILBOX WITH RAISED FLAG +1F4EC ; [*1653.0020.0002] # OPEN MAILBOX WITH RAISED FLAG +1F4ED ; [*1654.0020.0002] # OPEN MAILBOX WITH LOWERED FLAG +1F4EE ; [*1655.0020.0002] # POSTBOX +1F4EF ; [*1656.0020.0002] # POSTAL HORN +1F4F0 ; [*1657.0020.0002] # NEWSPAPER +1F4F1 ; [*1658.0020.0002] # MOBILE PHONE +1F4F2 ; [*1659.0020.0002] # MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT +1F4F3 ; [*165A.0020.0002] # VIBRATION MODE +1F4F4 ; [*165B.0020.0002] # MOBILE PHONE OFF +1F4F5 ; [*165C.0020.0002] # NO MOBILE PHONES +1F4F6 ; [*165D.0020.0002] # ANTENNA WITH BARS +1F4F7 ; [*165E.0020.0002] # CAMERA +1F4F8 ; [*165F.0020.0002] # CAMERA WITH FLASH +1F4F9 ; [*1660.0020.0002] # VIDEO CAMERA +1F4FA ; [*1661.0020.0002] # TELEVISION +1F4FB ; [*1662.0020.0002] # RADIO +1F4FC ; [*1663.0020.0002] # VIDEOCASSETTE +1F4FD ; [*1664.0020.0002] # FILM PROJECTOR +1F4FE ; [*1665.0020.0002] # PORTABLE STEREO +1F4FF ; [*1666.0020.0002] # PRAYER BEADS +1F500 ; [*1667.0020.0002] # TWISTED RIGHTWARDS ARROWS +1F501 ; [*1668.0020.0002] # CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS +1F502 ; [*1669.0020.0002] # CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY +1F503 ; [*166A.0020.0002] # CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS +1F504 ; [*166B.0020.0002] # ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS +1F505 ; [*166C.0020.0002] # LOW BRIGHTNESS SYMBOL +1F506 ; [*166D.0020.0002] # HIGH BRIGHTNESS SYMBOL +1F507 ; [*166E.0020.0002] # SPEAKER WITH CANCELLATION STROKE +1F508 ; [*166F.0020.0002] # SPEAKER +1F509 ; [*1670.0020.0002] # SPEAKER WITH ONE SOUND WAVE +1F50A ; [*1671.0020.0002] # SPEAKER WITH THREE SOUND WAVES +1F50B ; [*1672.0020.0002] # BATTERY +1F50C ; [*1673.0020.0002] # ELECTRIC PLUG +1F50D ; [*1674.0020.0002] # LEFT-POINTING MAGNIFYING GLASS +1F50E ; [*1675.0020.0002] # RIGHT-POINTING MAGNIFYING GLASS +1F50F ; [*1676.0020.0002] # LOCK WITH INK PEN +1F510 ; [*1677.0020.0002] # CLOSED LOCK WITH KEY +1F511 ; [*1678.0020.0002] # KEY +1F512 ; [*1679.0020.0002] # LOCK +1F513 ; [*167A.0020.0002] # OPEN LOCK +1F514 ; [*167B.0020.0002] # BELL +1F515 ; [*167C.0020.0002] # BELL WITH CANCELLATION STROKE +1F516 ; [*167D.0020.0002] # BOOKMARK +1F517 ; [*167E.0020.0002] # LINK SYMBOL +1F518 ; [*167F.0020.0002] # RADIO BUTTON +1F519 ; [*1680.0020.0002] # BACK WITH LEFTWARDS ARROW ABOVE +1F51A ; [*1681.0020.0002] # END WITH LEFTWARDS ARROW ABOVE +1F51B ; [*1682.0020.0002] # ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE +1F51C ; [*1683.0020.0002] # SOON WITH RIGHTWARDS ARROW ABOVE +1F51D ; [*1684.0020.0002] # TOP WITH UPWARDS ARROW ABOVE +1F51E ; [*1685.0020.0002] # NO ONE UNDER EIGHTEEN SYMBOL +1F51F ; [*1686.0020.0002] # KEYCAP TEN +1F520 ; [*1687.0020.0002] # INPUT SYMBOL FOR LATIN CAPITAL LETTERS +1F521 ; [*1688.0020.0002] # INPUT SYMBOL FOR LATIN SMALL LETTERS +1F522 ; [*1689.0020.0002] # INPUT SYMBOL FOR NUMBERS +1F523 ; [*168A.0020.0002] # INPUT SYMBOL FOR SYMBOLS +1F524 ; [*168B.0020.0002] # INPUT SYMBOL FOR LATIN LETTERS +1F525 ; [*168C.0020.0002] # FIRE +1F526 ; [*168D.0020.0002] # ELECTRIC TORCH +1F527 ; [*168E.0020.0002] # WRENCH +1F528 ; [*168F.0020.0002] # HAMMER +1F529 ; [*1690.0020.0002] # NUT AND BOLT +1F52A ; [*1691.0020.0002] # HOCHO +1F52B ; [*1692.0020.0002] # PISTOL +1F52C ; [*1693.0020.0002] # MICROSCOPE +1F52D ; [*1694.0020.0002] # TELESCOPE +1F52E ; [*1695.0020.0002] # CRYSTAL BALL +1F52F ; [*1696.0020.0002] # SIX POINTED STAR WITH MIDDLE DOT +1F530 ; [*1697.0020.0002] # JAPANESE SYMBOL FOR BEGINNER +1F531 ; [*1698.0020.0002] # TRIDENT EMBLEM +1F532 ; [*1699.0020.0002] # BLACK SQUARE BUTTON +1F533 ; [*169A.0020.0002] # WHITE SQUARE BUTTON +1F534 ; [*169B.0020.0002] # LARGE RED CIRCLE +1F535 ; [*169C.0020.0002] # LARGE BLUE CIRCLE +1F536 ; [*169D.0020.0002] # LARGE ORANGE DIAMOND +1F537 ; [*169E.0020.0002] # LARGE BLUE DIAMOND +1F538 ; [*169F.0020.0002] # SMALL ORANGE DIAMOND +1F539 ; [*16A0.0020.0002] # SMALL BLUE DIAMOND +1F53A ; [*16A1.0020.0002] # UP-POINTING RED TRIANGLE +1F53B ; [*16A2.0020.0002] # DOWN-POINTING RED TRIANGLE +1F53C ; [*16A3.0020.0002] # UP-POINTING SMALL RED TRIANGLE +1F53D ; [*16A4.0020.0002] # DOWN-POINTING SMALL RED TRIANGLE +1F53E ; [*16A5.0020.0002] # LOWER RIGHT SHADOWED WHITE CIRCLE +1F53F ; [*16A6.0020.0002] # UPPER RIGHT SHADOWED WHITE CIRCLE +1F540 ; [*16A7.0020.0002] # CIRCLED CROSS POMMEE +1F541 ; [*16A8.0020.0002] # CROSS POMMEE WITH HALF-CIRCLE BELOW +1F542 ; [*16A9.0020.0002] # CROSS POMMEE +1F543 ; [*16AA.0020.0002] # NOTCHED LEFT SEMICIRCLE WITH THREE DOTS +1F544 ; [*16AB.0020.0002] # NOTCHED RIGHT SEMICIRCLE WITH THREE DOTS +1F545 ; [*16AC.0020.0002] # SYMBOL FOR MARKS CHAPTER +1F546 ; [*16AD.0020.0002] # WHITE LATIN CROSS +1F547 ; [*16AE.0020.0002] # HEAVY LATIN CROSS +1F548 ; [*16AF.0020.0002] # CELTIC CROSS +1F549 ; [*16B0.0020.0002] # OM SYMBOL +1F54A ; [*16B1.0020.0002] # DOVE OF PEACE +1F54B ; [*16B2.0020.0002] # KAABA +1F54C ; [*16B3.0020.0002] # MOSQUE +1F54D ; [*16B4.0020.0002] # SYNAGOGUE +1F54E ; [*16B5.0020.0002] # MENORAH WITH NINE BRANCHES +1F54F ; [*16B6.0020.0002] # BOWL OF HYGIEIA +1F550 ; [*16B7.0020.0002] # CLOCK FACE ONE OCLOCK +1F551 ; [*16B8.0020.0002] # CLOCK FACE TWO OCLOCK +1F552 ; [*16B9.0020.0002] # CLOCK FACE THREE OCLOCK +1F553 ; [*16BA.0020.0002] # CLOCK FACE FOUR OCLOCK +1F554 ; [*16BB.0020.0002] # CLOCK FACE FIVE OCLOCK +1F555 ; [*16BC.0020.0002] # CLOCK FACE SIX OCLOCK +1F556 ; [*16BD.0020.0002] # CLOCK FACE SEVEN OCLOCK +1F557 ; [*16BE.0020.0002] # CLOCK FACE EIGHT OCLOCK +1F558 ; [*16BF.0020.0002] # CLOCK FACE NINE OCLOCK +1F559 ; [*16C0.0020.0002] # CLOCK FACE TEN OCLOCK +1F55A ; [*16C1.0020.0002] # CLOCK FACE ELEVEN OCLOCK +1F55B ; [*16C2.0020.0002] # CLOCK FACE TWELVE OCLOCK +1F55C ; [*16C3.0020.0002] # CLOCK FACE ONE-THIRTY +1F55D ; [*16C4.0020.0002] # CLOCK FACE TWO-THIRTY +1F55E ; [*16C5.0020.0002] # CLOCK FACE THREE-THIRTY +1F55F ; [*16C6.0020.0002] # CLOCK FACE FOUR-THIRTY +1F560 ; [*16C7.0020.0002] # CLOCK FACE FIVE-THIRTY +1F561 ; [*16C8.0020.0002] # CLOCK FACE SIX-THIRTY +1F562 ; [*16C9.0020.0002] # CLOCK FACE SEVEN-THIRTY +1F563 ; [*16CA.0020.0002] # CLOCK FACE EIGHT-THIRTY +1F564 ; [*16CB.0020.0002] # CLOCK FACE NINE-THIRTY +1F565 ; [*16CC.0020.0002] # CLOCK FACE TEN-THIRTY +1F566 ; [*16CD.0020.0002] # CLOCK FACE ELEVEN-THIRTY +1F567 ; [*16CE.0020.0002] # CLOCK FACE TWELVE-THIRTY +1F568 ; [*16CF.0020.0002] # RIGHT SPEAKER +1F569 ; [*16D0.0020.0002] # RIGHT SPEAKER WITH ONE SOUND WAVE +1F56A ; [*16D1.0020.0002] # RIGHT SPEAKER WITH THREE SOUND WAVES +1F56B ; [*16D2.0020.0002] # BULLHORN +1F56C ; [*16D3.0020.0002] # BULLHORN WITH SOUND WAVES +1F56D ; [*16D4.0020.0002] # RINGING BELL +1F56E ; [*16D5.0020.0002] # BOOK +1F56F ; [*16D6.0020.0002] # CANDLE +1F570 ; [*16D7.0020.0002] # MANTELPIECE CLOCK +1F571 ; [*16D8.0020.0002] # BLACK SKULL AND CROSSBONES +1F572 ; [*16D9.0020.0002] # NO PIRACY +1F573 ; [*16DA.0020.0002] # HOLE +1F574 ; [*16DB.0020.0002] # MAN IN BUSINESS SUIT LEVITATING +1F575 ; [*16DC.0020.0002] # SLEUTH OR SPY +1F576 ; [*16DD.0020.0002] # DARK SUNGLASSES +1F577 ; [*16DE.0020.0002] # SPIDER +1F578 ; [*16DF.0020.0002] # SPIDER WEB +1F579 ; [*16E0.0020.0002] # JOYSTICK +1F57A ; [*16E1.0020.0002] # MAN DANCING +1F57B ; [*16E2.0020.0002] # LEFT HAND TELEPHONE RECEIVER +1F57C ; [*16E3.0020.0002] # TELEPHONE RECEIVER WITH PAGE +1F57D ; [*16E4.0020.0002] # RIGHT HAND TELEPHONE RECEIVER +1F57E ; [*16E5.0020.0002] # WHITE TOUCHTONE TELEPHONE +1F57F ; [*16E6.0020.0002] # BLACK TOUCHTONE TELEPHONE +1F580 ; [*16E7.0020.0002] # TELEPHONE ON TOP OF MODEM +1F581 ; [*16E8.0020.0002] # CLAMSHELL MOBILE PHONE +1F582 ; [*16E9.0020.0002] # BACK OF ENVELOPE +1F583 ; [*16EA.0020.0002] # STAMPED ENVELOPE +1F584 ; [*16EB.0020.0002] # ENVELOPE WITH LIGHTNING +1F585 ; [*16EC.0020.0002] # FLYING ENVELOPE +1F586 ; [*16ED.0020.0002] # PEN OVER STAMPED ENVELOPE +1F587 ; [*16EE.0020.0002] # LINKED PAPERCLIPS +1F588 ; [*16EF.0020.0002] # BLACK PUSHPIN +1F589 ; [*16F0.0020.0002] # LOWER LEFT PENCIL +1F58A ; [*16F1.0020.0002] # LOWER LEFT BALLPOINT PEN +1F58B ; [*16F2.0020.0002] # LOWER LEFT FOUNTAIN PEN +1F58C ; [*16F3.0020.0002] # LOWER LEFT PAINTBRUSH +1F58D ; [*16F4.0020.0002] # LOWER LEFT CRAYON +1F58E ; [*16F5.0020.0002] # LEFT WRITING HAND +1F58F ; [*16F6.0020.0002] # TURNED OK HAND SIGN +1F590 ; [*16F7.0020.0002] # RAISED HAND WITH FINGERS SPLAYED +1F591 ; [*16F8.0020.0002] # REVERSED RAISED HAND WITH FINGERS SPLAYED +1F592 ; [*16F9.0020.0002] # REVERSED THUMBS UP SIGN +1F593 ; [*16FA.0020.0002] # REVERSED THUMBS DOWN SIGN +1F594 ; [*16FB.0020.0002] # REVERSED VICTORY HAND +1F595 ; [*16FC.0020.0002] # REVERSED HAND WITH MIDDLE FINGER EXTENDED +1F596 ; [*16FD.0020.0002] # RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS +1F597 ; [*16FE.0020.0002] # WHITE DOWN POINTING LEFT HAND INDEX +1F598 ; [*16FF.0020.0002] # SIDEWAYS WHITE LEFT POINTING INDEX +1F599 ; [*1700.0020.0002] # SIDEWAYS WHITE RIGHT POINTING INDEX +1F59A ; [*1701.0020.0002] # SIDEWAYS BLACK LEFT POINTING INDEX +1F59B ; [*1702.0020.0002] # SIDEWAYS BLACK RIGHT POINTING INDEX +1F59C ; [*1703.0020.0002] # BLACK LEFT POINTING BACKHAND INDEX +1F59D ; [*1704.0020.0002] # BLACK RIGHT POINTING BACKHAND INDEX +1F59E ; [*1705.0020.0002] # SIDEWAYS WHITE UP POINTING INDEX +1F59F ; [*1706.0020.0002] # SIDEWAYS WHITE DOWN POINTING INDEX +1F5A0 ; [*1707.0020.0002] # SIDEWAYS BLACK UP POINTING INDEX +1F5A1 ; [*1708.0020.0002] # SIDEWAYS BLACK DOWN POINTING INDEX +1F5A2 ; [*1709.0020.0002] # BLACK UP POINTING BACKHAND INDEX +1F5A3 ; [*170A.0020.0002] # BLACK DOWN POINTING BACKHAND INDEX +1F5A4 ; [*170B.0020.0002] # BLACK HEART +1F5A5 ; [*170C.0020.0002] # DESKTOP COMPUTER +1F5A6 ; [*170D.0020.0002] # KEYBOARD AND MOUSE +1F5A7 ; [*170E.0020.0002] # THREE NETWORKED COMPUTERS +1F5A8 ; [*170F.0020.0002] # PRINTER +1F5A9 ; [*1710.0020.0002] # POCKET CALCULATOR +1F5AA ; [*1711.0020.0002] # BLACK HARD SHELL FLOPPY DISK +1F5AB ; [*1712.0020.0002] # WHITE HARD SHELL FLOPPY DISK +1F5AC ; [*1713.0020.0002] # SOFT SHELL FLOPPY DISK +1F5AD ; [*1714.0020.0002] # TAPE CARTRIDGE +1F5AE ; [*1715.0020.0002] # WIRED KEYBOARD +1F5AF ; [*1716.0020.0002] # ONE BUTTON MOUSE +1F5B0 ; [*1717.0020.0002] # TWO BUTTON MOUSE +1F5B1 ; [*1718.0020.0002] # THREE BUTTON MOUSE +1F5B2 ; [*1719.0020.0002] # TRACKBALL +1F5B3 ; [*171A.0020.0002] # OLD PERSONAL COMPUTER +1F5B4 ; [*171B.0020.0002] # HARD DISK +1F5B5 ; [*171C.0020.0002] # SCREEN +1F5B6 ; [*171D.0020.0002] # PRINTER ICON +1F5B7 ; [*171E.0020.0002] # FAX ICON +1F5B8 ; [*171F.0020.0002] # OPTICAL DISC ICON +1F5B9 ; [*1720.0020.0002] # DOCUMENT WITH TEXT +1F5BA ; [*1721.0020.0002] # DOCUMENT WITH TEXT AND PICTURE +1F5BB ; [*1722.0020.0002] # DOCUMENT WITH PICTURE +1F5BC ; [*1723.0020.0002] # FRAME WITH PICTURE +1F5BD ; [*1724.0020.0002] # FRAME WITH TILES +1F5BE ; [*1725.0020.0002] # FRAME WITH AN X +1F5BF ; [*1726.0020.0002] # BLACK FOLDER +1F5C0 ; [*1727.0020.0002] # FOLDER +1F5C1 ; [*1728.0020.0002] # OPEN FOLDER +1F5C2 ; [*1729.0020.0002] # CARD INDEX DIVIDERS +1F5C3 ; [*172A.0020.0002] # CARD FILE BOX +1F5C4 ; [*172B.0020.0002] # FILE CABINET +1F5C5 ; [*172C.0020.0002] # EMPTY NOTE +1F5C6 ; [*172D.0020.0002] # EMPTY NOTE PAGE +1F5C7 ; [*172E.0020.0002] # EMPTY NOTE PAD +1F5C8 ; [*172F.0020.0002] # NOTE +1F5C9 ; [*1730.0020.0002] # NOTE PAGE +1F5CA ; [*1731.0020.0002] # NOTE PAD +1F5CB ; [*1732.0020.0002] # EMPTY DOCUMENT +1F5CC ; [*1733.0020.0002] # EMPTY PAGE +1F5CD ; [*1734.0020.0002] # EMPTY PAGES +1F5CE ; [*1735.0020.0002] # DOCUMENT +1F5CF ; [*1736.0020.0002] # PAGE +1F5D0 ; [*1737.0020.0002] # PAGES +1F5D1 ; [*1738.0020.0002] # WASTEBASKET +1F5D2 ; [*1739.0020.0002] # SPIRAL NOTE PAD +1F5D3 ; [*173A.0020.0002] # SPIRAL CALENDAR PAD +1F5D4 ; [*173B.0020.0002] # DESKTOP WINDOW +1F5D5 ; [*173C.0020.0002] # MINIMIZE +1F5D6 ; [*173D.0020.0002] # MAXIMIZE +1F5D7 ; [*173E.0020.0002] # OVERLAP +1F5D8 ; [*173F.0020.0002] # CLOCKWISE RIGHT AND LEFT SEMICIRCLE ARROWS +1F5D9 ; [*1740.0020.0002] # CANCELLATION X +1F5DA ; [*1741.0020.0002] # INCREASE FONT SIZE SYMBOL +1F5DB ; [*1742.0020.0002] # DECREASE FONT SIZE SYMBOL +1F5DC ; [*1743.0020.0002] # COMPRESSION +1F5DD ; [*1744.0020.0002] # OLD KEY +1F5DE ; [*1745.0020.0002] # ROLLED-UP NEWSPAPER +1F5DF ; [*1746.0020.0002] # PAGE WITH CIRCLED TEXT +1F5E0 ; [*1747.0020.0002] # STOCK CHART +1F5E1 ; [*1748.0020.0002] # DAGGER KNIFE +1F5E2 ; [*1749.0020.0002] # LIPS +1F5E3 ; [*174A.0020.0002] # SPEAKING HEAD IN SILHOUETTE +1F5E4 ; [*174B.0020.0002] # THREE RAYS ABOVE +1F5E5 ; [*174C.0020.0002] # THREE RAYS BELOW +1F5E6 ; [*174D.0020.0002] # THREE RAYS LEFT +1F5E7 ; [*174E.0020.0002] # THREE RAYS RIGHT +1F5E8 ; [*174F.0020.0002] # LEFT SPEECH BUBBLE +1F5E9 ; [*1750.0020.0002] # RIGHT SPEECH BUBBLE +1F5EA ; [*1751.0020.0002] # TWO SPEECH BUBBLES +1F5EB ; [*1752.0020.0002] # THREE SPEECH BUBBLES +1F5EC ; [*1753.0020.0002] # LEFT THOUGHT BUBBLE +1F5ED ; [*1754.0020.0002] # RIGHT THOUGHT BUBBLE +1F5EE ; [*1755.0020.0002] # LEFT ANGER BUBBLE +1F5EF ; [*1756.0020.0002] # RIGHT ANGER BUBBLE +1F5F0 ; [*1757.0020.0002] # MOOD BUBBLE +1F5F1 ; [*1758.0020.0002] # LIGHTNING MOOD BUBBLE +1F5F2 ; [*1759.0020.0002] # LIGHTNING MOOD +1F5F3 ; [*175A.0020.0002] # BALLOT BOX WITH BALLOT +1F5F4 ; [*175B.0020.0002] # BALLOT SCRIPT X +1F5F5 ; [*175C.0020.0002] # BALLOT BOX WITH SCRIPT X +1F5F6 ; [*175D.0020.0002] # BALLOT BOLD SCRIPT X +1F5F7 ; [*175E.0020.0002] # BALLOT BOX WITH BOLD SCRIPT X +1F5F8 ; [*175F.0020.0002] # LIGHT CHECK MARK +1F5F9 ; [*1760.0020.0002] # BALLOT BOX WITH BOLD CHECK +1F5FA ; [*1761.0020.0002] # WORLD MAP +1F5FB ; [*1762.0020.0002] # MOUNT FUJI +1F5FC ; [*1763.0020.0002] # TOKYO TOWER +1F5FD ; [*1764.0020.0002] # STATUE OF LIBERTY +1F5FE ; [*1765.0020.0002] # SILHOUETTE OF JAPAN +1F5FF ; [*1766.0020.0002] # MOYAI +1F600 ; [*189E.0020.0002] # GRINNING FACE +1F601 ; [*189F.0020.0002] # GRINNING FACE WITH SMILING EYES +1F602 ; [*18A0.0020.0002] # FACE WITH TEARS OF JOY +1F603 ; [*18A1.0020.0002] # SMILING FACE WITH OPEN MOUTH +1F604 ; [*18A2.0020.0002] # SMILING FACE WITH OPEN MOUTH AND SMILING EYES +1F605 ; [*18A3.0020.0002] # SMILING FACE WITH OPEN MOUTH AND COLD SWEAT +1F606 ; [*18A4.0020.0002] # SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES +1F607 ; [*18A5.0020.0002] # SMILING FACE WITH HALO +1F608 ; [*18A6.0020.0002] # SMILING FACE WITH HORNS +1F609 ; [*18A7.0020.0002] # WINKING FACE +1F60A ; [*18A8.0020.0002] # SMILING FACE WITH SMILING EYES +1F60B ; [*18A9.0020.0002] # FACE SAVOURING DELICIOUS FOOD +1F60C ; [*18AA.0020.0002] # RELIEVED FACE +1F60D ; [*18AB.0020.0002] # SMILING FACE WITH HEART-SHAPED EYES +1F60E ; [*18AC.0020.0002] # SMILING FACE WITH SUNGLASSES +1F60F ; [*18AD.0020.0002] # SMIRKING FACE +1F610 ; [*18AE.0020.0002] # NEUTRAL FACE +1F611 ; [*18AF.0020.0002] # EXPRESSIONLESS FACE +1F612 ; [*18B0.0020.0002] # UNAMUSED FACE +1F613 ; [*18B1.0020.0002] # FACE WITH COLD SWEAT +1F614 ; [*18B2.0020.0002] # PENSIVE FACE +1F615 ; [*18B3.0020.0002] # CONFUSED FACE +1F616 ; [*18B4.0020.0002] # CONFOUNDED FACE +1F617 ; [*18B5.0020.0002] # KISSING FACE +1F618 ; [*18B6.0020.0002] # FACE THROWING A KISS +1F619 ; [*18B7.0020.0002] # KISSING FACE WITH SMILING EYES +1F61A ; [*18B8.0020.0002] # KISSING FACE WITH CLOSED EYES +1F61B ; [*18B9.0020.0002] # FACE WITH STUCK-OUT TONGUE +1F61C ; [*18BA.0020.0002] # FACE WITH STUCK-OUT TONGUE AND WINKING EYE +1F61D ; [*18BB.0020.0002] # FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES +1F61E ; [*18BC.0020.0002] # DISAPPOINTED FACE +1F61F ; [*18BD.0020.0002] # WORRIED FACE +1F620 ; [*18BE.0020.0002] # ANGRY FACE +1F621 ; [*18BF.0020.0002] # POUTING FACE +1F622 ; [*18C0.0020.0002] # CRYING FACE +1F623 ; [*18C1.0020.0002] # PERSEVERING FACE +1F624 ; [*18C2.0020.0002] # FACE WITH LOOK OF TRIUMPH +1F625 ; [*18C3.0020.0002] # DISAPPOINTED BUT RELIEVED FACE +1F626 ; [*18C4.0020.0002] # FROWNING FACE WITH OPEN MOUTH +1F627 ; [*18C5.0020.0002] # ANGUISHED FACE +1F628 ; [*18C6.0020.0002] # FEARFUL FACE +1F629 ; [*18C7.0020.0002] # WEARY FACE +1F62A ; [*18C8.0020.0002] # SLEEPY FACE +1F62B ; [*18C9.0020.0002] # TIRED FACE +1F62C ; [*18CA.0020.0002] # GRIMACING FACE +1F62D ; [*18CB.0020.0002] # LOUDLY CRYING FACE +1F62E ; [*18CC.0020.0002] # FACE WITH OPEN MOUTH +1F62F ; [*18CD.0020.0002] # HUSHED FACE +1F630 ; [*18CE.0020.0002] # FACE WITH OPEN MOUTH AND COLD SWEAT +1F631 ; [*18CF.0020.0002] # FACE SCREAMING IN FEAR +1F632 ; [*18D0.0020.0002] # ASTONISHED FACE +1F633 ; [*18D1.0020.0002] # FLUSHED FACE +1F634 ; [*18D2.0020.0002] # SLEEPING FACE +1F635 ; [*18D3.0020.0002] # DIZZY FACE +1F636 ; [*18D4.0020.0002] # FACE WITHOUT MOUTH +1F637 ; [*18D5.0020.0002] # FACE WITH MEDICAL MASK +1F638 ; [*18D6.0020.0002] # GRINNING CAT FACE WITH SMILING EYES +1F639 ; [*18D7.0020.0002] # CAT FACE WITH TEARS OF JOY +1F63A ; [*18D8.0020.0002] # SMILING CAT FACE WITH OPEN MOUTH +1F63B ; [*18D9.0020.0002] # SMILING CAT FACE WITH HEART-SHAPED EYES +1F63C ; [*18DA.0020.0002] # CAT FACE WITH WRY SMILE +1F63D ; [*18DB.0020.0002] # KISSING CAT FACE WITH CLOSED EYES +1F63E ; [*18DC.0020.0002] # POUTING CAT FACE +1F63F ; [*18DD.0020.0002] # CRYING CAT FACE +1F640 ; [*18DE.0020.0002] # WEARY CAT FACE +1F641 ; [*18DF.0020.0002] # SLIGHTLY FROWNING FACE +1F642 ; [*18E0.0020.0002] # SLIGHTLY SMILING FACE +1F643 ; [*18E1.0020.0002] # UPSIDE-DOWN FACE +1F644 ; [*18E2.0020.0002] # FACE WITH ROLLING EYES +1F645 ; [*18E3.0020.0002] # FACE WITH NO GOOD GESTURE +1F646 ; [*18E4.0020.0002] # FACE WITH OK GESTURE +1F647 ; [*18E5.0020.0002] # PERSON BOWING DEEPLY +1F648 ; [*18E6.0020.0002] # SEE-NO-EVIL MONKEY +1F649 ; [*18E7.0020.0002] # HEAR-NO-EVIL MONKEY +1F64A ; [*18E8.0020.0002] # SPEAK-NO-EVIL MONKEY +1F64B ; [*18E9.0020.0002] # HAPPY PERSON RAISING ONE HAND +1F64C ; [*18EA.0020.0002] # PERSON RAISING BOTH HANDS IN CELEBRATION +1F64D ; [*18EB.0020.0002] # PERSON FROWNING +1F64E ; [*18EC.0020.0002] # PERSON WITH POUTING FACE +1F64F ; [*18ED.0020.0002] # PERSON WITH FOLDED HANDS +1F650 ; [*18EE.0020.0002] # NORTH WEST POINTING LEAF +1F651 ; [*18EF.0020.0002] # SOUTH WEST POINTING LEAF +1F652 ; [*18F0.0020.0002] # NORTH EAST POINTING LEAF +1F653 ; [*18F1.0020.0002] # SOUTH EAST POINTING LEAF +1F654 ; [*18F2.0020.0002] # TURNED NORTH WEST POINTING LEAF +1F655 ; [*18F3.0020.0002] # TURNED SOUTH WEST POINTING LEAF +1F656 ; [*18F4.0020.0002] # TURNED NORTH EAST POINTING LEAF +1F657 ; [*18F5.0020.0002] # TURNED SOUTH EAST POINTING LEAF +1F658 ; [*18F6.0020.0002] # NORTH WEST POINTING VINE LEAF +1F659 ; [*18F7.0020.0002] # SOUTH WEST POINTING VINE LEAF +1F65A ; [*18F8.0020.0002] # NORTH EAST POINTING VINE LEAF +1F65B ; [*18F9.0020.0002] # SOUTH EAST POINTING VINE LEAF +1F65C ; [*18FA.0020.0002] # HEAVY NORTH WEST POINTING VINE LEAF +1F65D ; [*18FB.0020.0002] # HEAVY SOUTH WEST POINTING VINE LEAF +1F65E ; [*18FC.0020.0002] # HEAVY NORTH EAST POINTING VINE LEAF +1F65F ; [*18FD.0020.0002] # HEAVY SOUTH EAST POINTING VINE LEAF +1F660 ; [*18FE.0020.0002] # NORTH WEST POINTING BUD +1F661 ; [*18FF.0020.0002] # SOUTH WEST POINTING BUD +1F662 ; [*1900.0020.0002] # NORTH EAST POINTING BUD +1F663 ; [*1901.0020.0002] # SOUTH EAST POINTING BUD +1F664 ; [*1902.0020.0002] # HEAVY NORTH WEST POINTING BUD +1F665 ; [*1903.0020.0002] # HEAVY SOUTH WEST POINTING BUD +1F666 ; [*1904.0020.0002] # HEAVY NORTH EAST POINTING BUD +1F667 ; [*1905.0020.0002] # HEAVY SOUTH EAST POINTING BUD +1F668 ; [*1906.0020.0002] # HOLLOW QUILT SQUARE ORNAMENT +1F669 ; [*1907.0020.0002] # HOLLOW QUILT SQUARE ORNAMENT IN BLACK SQUARE +1F66A ; [*1908.0020.0002] # SOLID QUILT SQUARE ORNAMENT +1F66B ; [*1909.0020.0002] # SOLID QUILT SQUARE ORNAMENT IN BLACK SQUARE +1F66C ; [*190A.0020.0002] # LEFTWARDS ROCKET +1F66D ; [*190B.0020.0002] # UPWARDS ROCKET +1F66E ; [*190C.0020.0002] # RIGHTWARDS ROCKET +1F66F ; [*190D.0020.0002] # DOWNWARDS ROCKET +1F670 ; [*190E.0020.0002] # SCRIPT LIGATURE ET ORNAMENT +1F671 ; [*190F.0020.0002] # HEAVY SCRIPT LIGATURE ET ORNAMENT +1F672 ; [*1910.0020.0002] # LIGATURE OPEN ET ORNAMENT +1F673 ; [*1911.0020.0002] # HEAVY LIGATURE OPEN ET ORNAMENT +1F674 ; [*1912.0020.0002] # HEAVY AMPERSAND ORNAMENT +1F675 ; [*1913.0020.0002] # SWASH AMPERSAND ORNAMENT +1F676 ; [*1914.0020.0002] # SANS-SERIF HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT +1F677 ; [*1915.0020.0002] # SANS-SERIF HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT +1F678 ; [*1916.0020.0002] # SANS-SERIF HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT +1F679 ; [*1917.0020.0002] # HEAVY INTERROBANG ORNAMENT +1F67A ; [*1918.0020.0002] # SANS-SERIF INTERROBANG ORNAMENT +1F67B ; [*1919.0020.0002] # HEAVY SANS-SERIF INTERROBANG ORNAMENT +1F67C ; [*191A.0020.0002] # VERY HEAVY SOLIDUS +1F67D ; [*191B.0020.0002] # VERY HEAVY REVERSE SOLIDUS +1F67E ; [*191C.0020.0002] # CHECKER BOARD +1F67F ; [*191D.0020.0002] # REVERSE CHECKER BOARD +1F680 ; [*191E.0020.0002] # ROCKET +1F681 ; [*191F.0020.0002] # HELICOPTER +1F682 ; [*1920.0020.0002] # STEAM LOCOMOTIVE +1F683 ; [*1921.0020.0002] # RAILWAY CAR +1F684 ; [*1922.0020.0002] # HIGH-SPEED TRAIN +1F685 ; [*1923.0020.0002] # HIGH-SPEED TRAIN WITH BULLET NOSE +1F686 ; [*1924.0020.0002] # TRAIN +1F687 ; [*1925.0020.0002] # METRO +1F688 ; [*1926.0020.0002] # LIGHT RAIL +1F689 ; [*1927.0020.0002] # STATION +1F68A ; [*1928.0020.0002] # TRAM +1F68B ; [*1929.0020.0002] # TRAM CAR +1F68C ; [*192A.0020.0002] # BUS +1F68D ; [*192B.0020.0002] # ONCOMING BUS +1F68E ; [*192C.0020.0002] # TROLLEYBUS +1F68F ; [*192D.0020.0002] # BUS STOP +1F690 ; [*192E.0020.0002] # MINIBUS +1F691 ; [*192F.0020.0002] # AMBULANCE +1F692 ; [*1930.0020.0002] # FIRE ENGINE +1F693 ; [*1931.0020.0002] # POLICE CAR +1F694 ; [*1932.0020.0002] # ONCOMING POLICE CAR +1F695 ; [*1933.0020.0002] # TAXI +1F696 ; [*1934.0020.0002] # ONCOMING TAXI +1F697 ; [*1935.0020.0002] # AUTOMOBILE +1F698 ; [*1936.0020.0002] # ONCOMING AUTOMOBILE +1F699 ; [*1937.0020.0002] # RECREATIONAL VEHICLE +1F69A ; [*1938.0020.0002] # DELIVERY TRUCK +1F69B ; [*1939.0020.0002] # ARTICULATED LORRY +1F69C ; [*193A.0020.0002] # TRACTOR +1F69D ; [*193B.0020.0002] # MONORAIL +1F69E ; [*193C.0020.0002] # MOUNTAIN RAILWAY +1F69F ; [*193D.0020.0002] # SUSPENSION RAILWAY +1F6A0 ; [*193E.0020.0002] # MOUNTAIN CABLEWAY +1F6A1 ; [*193F.0020.0002] # AERIAL TRAMWAY +1F6A2 ; [*1940.0020.0002] # SHIP +1F6A3 ; [*1941.0020.0002] # ROWBOAT +1F6A4 ; [*1942.0020.0002] # SPEEDBOAT +1F6A5 ; [*1943.0020.0002] # HORIZONTAL TRAFFIC LIGHT +1F6A6 ; [*1944.0020.0002] # VERTICAL TRAFFIC LIGHT +1F6A7 ; [*1945.0020.0002] # CONSTRUCTION SIGN +1F6A8 ; [*1946.0020.0002] # POLICE CARS REVOLVING LIGHT +1F6A9 ; [*1947.0020.0002] # TRIANGULAR FLAG ON POST +1F6AA ; [*1948.0020.0002] # DOOR +1F6AB ; [*1949.0020.0002] # NO ENTRY SIGN +1F6AC ; [*194A.0020.0002] # SMOKING SYMBOL +1F6AD ; [*194B.0020.0002] # NO SMOKING SYMBOL +1F6AE ; [*194C.0020.0002] # PUT LITTER IN ITS PLACE SYMBOL +1F6AF ; [*194D.0020.0002] # DO NOT LITTER SYMBOL +1F6B0 ; [*194E.0020.0002] # POTABLE WATER SYMBOL +1F6B1 ; [*194F.0020.0002] # NON-POTABLE WATER SYMBOL +1F6B2 ; [*1950.0020.0002] # BICYCLE +1F6B3 ; [*1951.0020.0002] # NO BICYCLES +1F6B4 ; [*1952.0020.0002] # BICYCLIST +1F6B5 ; [*1953.0020.0002] # MOUNTAIN BICYCLIST +1F6B6 ; [*1954.0020.0002] # PEDESTRIAN +1F6B7 ; [*1955.0020.0002] # NO PEDESTRIANS +1F6B8 ; [*1956.0020.0002] # CHILDREN CROSSING +1F6B9 ; [*1957.0020.0002] # MENS SYMBOL +1F6BA ; [*1958.0020.0002] # WOMENS SYMBOL +1F6BB ; [*1959.0020.0002] # RESTROOM +1F6BC ; [*195A.0020.0002] # BABY SYMBOL +1F6BD ; [*195B.0020.0002] # TOILET +1F6BE ; [*195C.0020.0002] # WATER CLOSET +1F6BF ; [*195D.0020.0002] # SHOWER +1F6C0 ; [*195E.0020.0002] # BATH +1F6C1 ; [*195F.0020.0002] # BATHTUB +1F6C2 ; [*1960.0020.0002] # PASSPORT CONTROL +1F6C3 ; [*1961.0020.0002] # CUSTOMS +1F6C4 ; [*1962.0020.0002] # BAGGAGE CLAIM +1F6C5 ; [*1963.0020.0002] # LEFT LUGGAGE +1F6C6 ; [*1964.0020.0002] # TRIANGLE WITH ROUNDED CORNERS +1F6C7 ; [*1965.0020.0002] # PROHIBITED SIGN +1F6C8 ; [*1966.0020.0002] # CIRCLED INFORMATION SOURCE +1F6C9 ; [*1967.0020.0002] # BOYS SYMBOL +1F6CA ; [*1968.0020.0002] # GIRLS SYMBOL +1F6CB ; [*1969.0020.0002] # COUCH AND LAMP +1F6CC ; [*196A.0020.0002] # SLEEPING ACCOMMODATION +1F6CD ; [*196B.0020.0002] # SHOPPING BAGS +1F6CE ; [*196C.0020.0002] # BELLHOP BELL +1F6CF ; [*196D.0020.0002] # BED +1F6D0 ; [*196E.0020.0002] # PLACE OF WORSHIP +1F6D1 ; [*196F.0020.0002] # OCTAGONAL SIGN +1F6D2 ; [*1970.0020.0002] # SHOPPING TROLLEY +1F6D3 ; [*1971.0020.0002] # STUPA +1F6D4 ; [*1972.0020.0002] # PAGODA +1F6D5 ; [*1973.0020.0002] # HINDU TEMPLE +1F6D6 ; [*1974.0020.0002] # HUT +1F6D7 ; [*1975.0020.0002] # ELEVATOR +1F6E0 ; [*1976.0020.0002] # HAMMER AND WRENCH +1F6E1 ; [*1977.0020.0002] # SHIELD +1F6E2 ; [*1978.0020.0002] # OIL DRUM +1F6E3 ; [*1979.0020.0002] # MOTORWAY +1F6E4 ; [*197A.0020.0002] # RAILWAY TRACK +1F6E5 ; [*197B.0020.0002] # MOTOR BOAT +1F6E6 ; [*197C.0020.0002] # UP-POINTING MILITARY AIRPLANE +1F6E7 ; [*197D.0020.0002] # UP-POINTING AIRPLANE +1F6E8 ; [*197E.0020.0002] # UP-POINTING SMALL AIRPLANE +1F6E9 ; [*197F.0020.0002] # SMALL AIRPLANE +1F6EA ; [*1980.0020.0002] # NORTHEAST-POINTING AIRPLANE +1F6EB ; [*1981.0020.0002] # AIRPLANE DEPARTURE +1F6EC ; [*1982.0020.0002] # AIRPLANE ARRIVING +1F6F0 ; [*1983.0020.0002] # SATELLITE +1F6F1 ; [*1984.0020.0002] # ONCOMING FIRE ENGINE +1F6F2 ; [*1985.0020.0002] # DIESEL LOCOMOTIVE +1F6F3 ; [*1986.0020.0002] # PASSENGER SHIP +1F6F4 ; [*1987.0020.0002] # SCOOTER +1F6F5 ; [*1988.0020.0002] # MOTOR SCOOTER +1F6F6 ; [*1989.0020.0002] # CANOE +1F6F7 ; [*198A.0020.0002] # SLED +1F6F8 ; [*198B.0020.0002] # FLYING SAUCER +1F6F9 ; [*198C.0020.0002] # SKATEBOARD +1F6FA ; [*198D.0020.0002] # AUTO RICKSHAW +1F6FB ; [*198E.0020.0002] # PICKUP TRUCK +1F6FC ; [*198F.0020.0002] # ROLLER SKATE +1F700 ; [*1990.0020.0002] # ALCHEMICAL SYMBOL FOR QUINTESSENCE +1F701 ; [*1991.0020.0002] # ALCHEMICAL SYMBOL FOR AIR +1F702 ; [*1992.0020.0002] # ALCHEMICAL SYMBOL FOR FIRE +1F703 ; [*1993.0020.0002] # ALCHEMICAL SYMBOL FOR EARTH +1F704 ; [*1994.0020.0002] # ALCHEMICAL SYMBOL FOR WATER +1F705 ; [*1995.0020.0002] # ALCHEMICAL SYMBOL FOR AQUAFORTIS +1F706 ; [*1996.0020.0002] # ALCHEMICAL SYMBOL FOR AQUA REGIA +1F707 ; [*1997.0020.0002] # ALCHEMICAL SYMBOL FOR AQUA REGIA-2 +1F708 ; [*1998.0020.0002] # ALCHEMICAL SYMBOL FOR AQUA VITAE +1F709 ; [*1999.0020.0002] # ALCHEMICAL SYMBOL FOR AQUA VITAE-2 +1F70A ; [*199A.0020.0002] # ALCHEMICAL SYMBOL FOR VINEGAR +1F70B ; [*199B.0020.0002] # ALCHEMICAL SYMBOL FOR VINEGAR-2 +1F70C ; [*199C.0020.0002] # ALCHEMICAL SYMBOL FOR VINEGAR-3 +1F70D ; [*199D.0020.0002] # ALCHEMICAL SYMBOL FOR SULFUR +1F70E ; [*199E.0020.0002] # ALCHEMICAL SYMBOL FOR PHILOSOPHERS SULFUR +1F70F ; [*199F.0020.0002] # ALCHEMICAL SYMBOL FOR BLACK SULFUR +1F710 ; [*19A0.0020.0002] # ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE +1F711 ; [*19A1.0020.0002] # ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-2 +1F712 ; [*19A2.0020.0002] # ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-3 +1F713 ; [*19A3.0020.0002] # ALCHEMICAL SYMBOL FOR CINNABAR +1F714 ; [*19A4.0020.0002] # ALCHEMICAL SYMBOL FOR SALT +1F715 ; [*19A5.0020.0002] # ALCHEMICAL SYMBOL FOR NITRE +1F716 ; [*19A6.0020.0002] # ALCHEMICAL SYMBOL FOR VITRIOL +1F717 ; [*19A7.0020.0002] # ALCHEMICAL SYMBOL FOR VITRIOL-2 +1F718 ; [*19A8.0020.0002] # ALCHEMICAL SYMBOL FOR ROCK SALT +1F719 ; [*19A9.0020.0002] # ALCHEMICAL SYMBOL FOR ROCK SALT-2 +1F71A ; [*19AA.0020.0002] # ALCHEMICAL SYMBOL FOR GOLD +1F71B ; [*19AB.0020.0002] # ALCHEMICAL SYMBOL FOR SILVER +1F71C ; [*19AC.0020.0002] # ALCHEMICAL SYMBOL FOR IRON ORE +1F71D ; [*19AD.0020.0002] # ALCHEMICAL SYMBOL FOR IRON ORE-2 +1F71E ; [*19AE.0020.0002] # ALCHEMICAL SYMBOL FOR CROCUS OF IRON +1F71F ; [*19AF.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS OF IRON +1F720 ; [*19B0.0020.0002] # ALCHEMICAL SYMBOL FOR COPPER ORE +1F721 ; [*19B1.0020.0002] # ALCHEMICAL SYMBOL FOR IRON-COPPER ORE +1F722 ; [*19B2.0020.0002] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF COPPER +1F723 ; [*19B3.0020.0002] # ALCHEMICAL SYMBOL FOR CROCUS OF COPPER +1F724 ; [*19B4.0020.0002] # ALCHEMICAL SYMBOL FOR CROCUS OF COPPER-2 +1F725 ; [*19B5.0020.0002] # ALCHEMICAL SYMBOL FOR COPPER ANTIMONIATE +1F726 ; [*19B6.0020.0002] # ALCHEMICAL SYMBOL FOR SALT OF COPPER ANTIMONIATE +1F727 ; [*19B7.0020.0002] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF COPPER +1F728 ; [*19B8.0020.0002] # ALCHEMICAL SYMBOL FOR VERDIGRIS +1F729 ; [*19B9.0020.0002] # ALCHEMICAL SYMBOL FOR TIN ORE +1F72A ; [*19BA.0020.0002] # ALCHEMICAL SYMBOL FOR LEAD ORE +1F72B ; [*19BB.0020.0002] # ALCHEMICAL SYMBOL FOR ANTIMONY ORE +1F72C ; [*19BC.0020.0002] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF ANTIMONY +1F72D ; [*19BD.0020.0002] # ALCHEMICAL SYMBOL FOR SALT OF ANTIMONY +1F72E ; [*19BE.0020.0002] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF ANTIMONY +1F72F ; [*19BF.0020.0002] # ALCHEMICAL SYMBOL FOR VINEGAR OF ANTIMONY +1F730 ; [*19C0.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY +1F731 ; [*19C1.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY-2 +1F732 ; [*19C2.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS +1F733 ; [*19C3.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS-2 +1F734 ; [*19C4.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS-3 +1F735 ; [*19C5.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS-4 +1F736 ; [*19C6.0020.0002] # ALCHEMICAL SYMBOL FOR ALKALI +1F737 ; [*19C7.0020.0002] # ALCHEMICAL SYMBOL FOR ALKALI-2 +1F738 ; [*19C8.0020.0002] # ALCHEMICAL SYMBOL FOR MARCASITE +1F739 ; [*19C9.0020.0002] # ALCHEMICAL SYMBOL FOR SAL-AMMONIAC +1F73A ; [*19CA.0020.0002] # ALCHEMICAL SYMBOL FOR ARSENIC +1F73B ; [*19CB.0020.0002] # ALCHEMICAL SYMBOL FOR REALGAR +1F73C ; [*19CC.0020.0002] # ALCHEMICAL SYMBOL FOR REALGAR-2 +1F73D ; [*19CD.0020.0002] # ALCHEMICAL SYMBOL FOR AURIPIGMENT +1F73E ; [*19CE.0020.0002] # ALCHEMICAL SYMBOL FOR BISMUTH ORE +1F73F ; [*19CF.0020.0002] # ALCHEMICAL SYMBOL FOR TARTAR +1F740 ; [*19D0.0020.0002] # ALCHEMICAL SYMBOL FOR TARTAR-2 +1F741 ; [*19D1.0020.0002] # ALCHEMICAL SYMBOL FOR QUICK LIME +1F742 ; [*19D2.0020.0002] # ALCHEMICAL SYMBOL FOR BORAX +1F743 ; [*19D3.0020.0002] # ALCHEMICAL SYMBOL FOR BORAX-2 +1F744 ; [*19D4.0020.0002] # ALCHEMICAL SYMBOL FOR BORAX-3 +1F745 ; [*19D5.0020.0002] # ALCHEMICAL SYMBOL FOR ALUM +1F746 ; [*19D6.0020.0002] # ALCHEMICAL SYMBOL FOR OIL +1F747 ; [*19D7.0020.0002] # ALCHEMICAL SYMBOL FOR SPIRIT +1F748 ; [*19D8.0020.0002] # ALCHEMICAL SYMBOL FOR TINCTURE +1F749 ; [*19D9.0020.0002] # ALCHEMICAL SYMBOL FOR GUM +1F74A ; [*19DA.0020.0002] # ALCHEMICAL SYMBOL FOR WAX +1F74B ; [*19DB.0020.0002] # ALCHEMICAL SYMBOL FOR POWDER +1F74C ; [*19DC.0020.0002] # ALCHEMICAL SYMBOL FOR CALX +1F74D ; [*19DD.0020.0002] # ALCHEMICAL SYMBOL FOR TUTTY +1F74E ; [*19DE.0020.0002] # ALCHEMICAL SYMBOL FOR CAPUT MORTUUM +1F74F ; [*19DF.0020.0002] # ALCHEMICAL SYMBOL FOR SCEPTER OF JOVE +1F750 ; [*19E0.0020.0002] # ALCHEMICAL SYMBOL FOR CADUCEUS +1F751 ; [*19E1.0020.0002] # ALCHEMICAL SYMBOL FOR TRIDENT +1F752 ; [*19E2.0020.0002] # ALCHEMICAL SYMBOL FOR STARRED TRIDENT +1F753 ; [*19E3.0020.0002] # ALCHEMICAL SYMBOL FOR LODESTONE +1F754 ; [*19E4.0020.0002] # ALCHEMICAL SYMBOL FOR SOAP +1F755 ; [*19E5.0020.0002] # ALCHEMICAL SYMBOL FOR URINE +1F756 ; [*19E6.0020.0002] # ALCHEMICAL SYMBOL FOR HORSE DUNG +1F757 ; [*19E7.0020.0002] # ALCHEMICAL SYMBOL FOR ASHES +1F758 ; [*19E8.0020.0002] # ALCHEMICAL SYMBOL FOR POT ASHES +1F759 ; [*19E9.0020.0002] # ALCHEMICAL SYMBOL FOR BRICK +1F75A ; [*19EA.0020.0002] # ALCHEMICAL SYMBOL FOR POWDERED BRICK +1F75B ; [*19EB.0020.0002] # ALCHEMICAL SYMBOL FOR AMALGAM +1F75C ; [*19EC.0020.0002] # ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM +1F75D ; [*19ED.0020.0002] # ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM-2 +1F75E ; [*19EE.0020.0002] # ALCHEMICAL SYMBOL FOR SUBLIMATION +1F75F ; [*19EF.0020.0002] # ALCHEMICAL SYMBOL FOR PRECIPITATE +1F760 ; [*19F0.0020.0002] # ALCHEMICAL SYMBOL FOR DISTILL +1F761 ; [*19F1.0020.0002] # ALCHEMICAL SYMBOL FOR DISSOLVE +1F762 ; [*19F2.0020.0002] # ALCHEMICAL SYMBOL FOR DISSOLVE-2 +1F763 ; [*19F3.0020.0002] # ALCHEMICAL SYMBOL FOR PURIFY +1F764 ; [*19F4.0020.0002] # ALCHEMICAL SYMBOL FOR PUTREFACTION +1F765 ; [*19F5.0020.0002] # ALCHEMICAL SYMBOL FOR CRUCIBLE +1F766 ; [*19F6.0020.0002] # ALCHEMICAL SYMBOL FOR CRUCIBLE-2 +1F767 ; [*19F7.0020.0002] # ALCHEMICAL SYMBOL FOR CRUCIBLE-3 +1F768 ; [*19F8.0020.0002] # ALCHEMICAL SYMBOL FOR CRUCIBLE-4 +1F769 ; [*19F9.0020.0002] # ALCHEMICAL SYMBOL FOR CRUCIBLE-5 +1F76A ; [*19FA.0020.0002] # ALCHEMICAL SYMBOL FOR ALEMBIC +1F76B ; [*19FB.0020.0002] # ALCHEMICAL SYMBOL FOR BATH OF MARY +1F76C ; [*19FC.0020.0002] # ALCHEMICAL SYMBOL FOR BATH OF VAPOURS +1F76D ; [*19FD.0020.0002] # ALCHEMICAL SYMBOL FOR RETORT +1F76E ; [*19FE.0020.0002] # ALCHEMICAL SYMBOL FOR HOUR +1F76F ; [*19FF.0020.0002] # ALCHEMICAL SYMBOL FOR NIGHT +1F770 ; [*1A00.0020.0002] # ALCHEMICAL SYMBOL FOR DAY-NIGHT +1F771 ; [*1A01.0020.0002] # ALCHEMICAL SYMBOL FOR MONTH +1F772 ; [*1A02.0020.0002] # ALCHEMICAL SYMBOL FOR HALF DRAM +1F773 ; [*1A03.0020.0002] # ALCHEMICAL SYMBOL FOR HALF OUNCE +1F780 ; [*1A04.0020.0002] # BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE +1F781 ; [*1A05.0020.0002] # BLACK UP-POINTING ISOSCELES RIGHT TRIANGLE +1F782 ; [*1A06.0020.0002] # BLACK RIGHT-POINTING ISOSCELES RIGHT TRIANGLE +1F783 ; [*1A07.0020.0002] # BLACK DOWN-POINTING ISOSCELES RIGHT TRIANGLE +1F784 ; [*1A08.0020.0002] # BLACK SLIGHTLY SMALL CIRCLE +1F785 ; [*1A09.0020.0002] # MEDIUM BOLD WHITE CIRCLE +1F786 ; [*1A0A.0020.0002] # BOLD WHITE CIRCLE +1F787 ; [*1A0B.0020.0002] # HEAVY WHITE CIRCLE +1F788 ; [*1A0C.0020.0002] # VERY HEAVY WHITE CIRCLE +1F789 ; [*1A0D.0020.0002] # EXTREMELY HEAVY WHITE CIRCLE +1F78A ; [*1A0E.0020.0002] # WHITE CIRCLE CONTAINING BLACK SMALL CIRCLE +1F78B ; [*1A0F.0020.0002] # ROUND TARGET +1F78C ; [*1A10.0020.0002] # BLACK TINY SQUARE +1F78D ; [*1A11.0020.0002] # BLACK SLIGHTLY SMALL SQUARE +1F78E ; [*1A12.0020.0002] # LIGHT WHITE SQUARE +1F78F ; [*1A13.0020.0002] # MEDIUM WHITE SQUARE +1F790 ; [*1A14.0020.0002] # BOLD WHITE SQUARE +1F791 ; [*1A15.0020.0002] # HEAVY WHITE SQUARE +1F792 ; [*1A16.0020.0002] # VERY HEAVY WHITE SQUARE +1F793 ; [*1A17.0020.0002] # EXTREMELY HEAVY WHITE SQUARE +1F794 ; [*1A18.0020.0002] # WHITE SQUARE CONTAINING BLACK VERY SMALL SQUARE +1F795 ; [*1A19.0020.0002] # WHITE SQUARE CONTAINING BLACK MEDIUM SQUARE +1F796 ; [*1A1A.0020.0002] # SQUARE TARGET +1F797 ; [*1A1B.0020.0002] # BLACK TINY DIAMOND +1F798 ; [*1A1C.0020.0002] # BLACK VERY SMALL DIAMOND +1F799 ; [*1A1D.0020.0002] # BLACK MEDIUM SMALL DIAMOND +1F79A ; [*1A1E.0020.0002] # WHITE DIAMOND CONTAINING BLACK VERY SMALL DIAMOND +1F79B ; [*1A1F.0020.0002] # WHITE DIAMOND CONTAINING BLACK MEDIUM DIAMOND +1F79C ; [*1A20.0020.0002] # DIAMOND TARGET +1F79D ; [*1A21.0020.0002] # BLACK TINY LOZENGE +1F79E ; [*1A22.0020.0002] # BLACK VERY SMALL LOZENGE +1F79F ; [*1A23.0020.0002] # BLACK MEDIUM SMALL LOZENGE +1F7A0 ; [*1A24.0020.0002] # WHITE LOZENGE CONTAINING BLACK SMALL LOZENGE +1F7A1 ; [*1A25.0020.0002] # THIN GREEK CROSS +1F7A2 ; [*1A26.0020.0002] # LIGHT GREEK CROSS +1F7A3 ; [*1A27.0020.0002] # MEDIUM GREEK CROSS +1F7A4 ; [*1A28.0020.0002] # BOLD GREEK CROSS +1F7A5 ; [*1A29.0020.0002] # VERY BOLD GREEK CROSS +1F7A6 ; [*1A2A.0020.0002] # VERY HEAVY GREEK CROSS +1F7A7 ; [*1A2B.0020.0002] # EXTREMELY HEAVY GREEK CROSS +1F7A8 ; [*1A2C.0020.0002] # THIN SALTIRE +1F7A9 ; [*1A2D.0020.0002] # LIGHT SALTIRE +1F7AA ; [*1A2E.0020.0002] # MEDIUM SALTIRE +1F7AB ; [*1A2F.0020.0002] # BOLD SALTIRE +1F7AC ; [*1A30.0020.0002] # HEAVY SALTIRE +1F7AD ; [*1A31.0020.0002] # VERY HEAVY SALTIRE +1F7AE ; [*1A32.0020.0002] # EXTREMELY HEAVY SALTIRE +1F7AF ; [*1A33.0020.0002] # LIGHT FIVE SPOKED ASTERISK +1F7B0 ; [*1A34.0020.0002] # MEDIUM FIVE SPOKED ASTERISK +1F7B1 ; [*1A35.0020.0002] # BOLD FIVE SPOKED ASTERISK +1F7B2 ; [*1A36.0020.0002] # HEAVY FIVE SPOKED ASTERISK +1F7B3 ; [*1A37.0020.0002] # VERY HEAVY FIVE SPOKED ASTERISK +1F7B4 ; [*1A38.0020.0002] # EXTREMELY HEAVY FIVE SPOKED ASTERISK +1F7B5 ; [*1A39.0020.0002] # LIGHT SIX SPOKED ASTERISK +1F7B6 ; [*1A3A.0020.0002] # MEDIUM SIX SPOKED ASTERISK +1F7B7 ; [*1A3B.0020.0002] # BOLD SIX SPOKED ASTERISK +1F7B8 ; [*1A3C.0020.0002] # HEAVY SIX SPOKED ASTERISK +1F7B9 ; [*1A3D.0020.0002] # VERY HEAVY SIX SPOKED ASTERISK +1F7BA ; [*1A3E.0020.0002] # EXTREMELY HEAVY SIX SPOKED ASTERISK +1F7BB ; [*1A3F.0020.0002] # LIGHT EIGHT SPOKED ASTERISK +1F7BC ; [*1A40.0020.0002] # MEDIUM EIGHT SPOKED ASTERISK +1F7BD ; [*1A41.0020.0002] # BOLD EIGHT SPOKED ASTERISK +1F7BE ; [*1A42.0020.0002] # HEAVY EIGHT SPOKED ASTERISK +1F7BF ; [*1A43.0020.0002] # VERY HEAVY EIGHT SPOKED ASTERISK +1F7C0 ; [*1A44.0020.0002] # LIGHT THREE POINTED BLACK STAR +1F7C1 ; [*1A45.0020.0002] # MEDIUM THREE POINTED BLACK STAR +1F7C2 ; [*1A46.0020.0002] # THREE POINTED BLACK STAR +1F7C3 ; [*1A47.0020.0002] # MEDIUM THREE POINTED PINWHEEL STAR +1F7C4 ; [*1A48.0020.0002] # LIGHT FOUR POINTED BLACK STAR +1F7C5 ; [*1A49.0020.0002] # MEDIUM FOUR POINTED BLACK STAR +1F7C6 ; [*1A4A.0020.0002] # FOUR POINTED BLACK STAR +1F7C7 ; [*1A4B.0020.0002] # MEDIUM FOUR POINTED PINWHEEL STAR +1F7C8 ; [*1A4C.0020.0002] # REVERSE LIGHT FOUR POINTED PINWHEEL STAR +1F7C9 ; [*1A4D.0020.0002] # LIGHT FIVE POINTED BLACK STAR +1F7CA ; [*1A4E.0020.0002] # HEAVY FIVE POINTED BLACK STAR +1F7CB ; [*1A4F.0020.0002] # MEDIUM SIX POINTED BLACK STAR +1F7CC ; [*1A50.0020.0002] # HEAVY SIX POINTED BLACK STAR +1F7CD ; [*1A51.0020.0002] # SIX POINTED PINWHEEL STAR +1F7CE ; [*1A52.0020.0002] # MEDIUM EIGHT POINTED BLACK STAR +1F7CF ; [*1A53.0020.0002] # HEAVY EIGHT POINTED BLACK STAR +1F7D0 ; [*1A54.0020.0002] # VERY HEAVY EIGHT POINTED BLACK STAR +1F7D1 ; [*1A55.0020.0002] # HEAVY EIGHT POINTED PINWHEEL STAR +1F7D2 ; [*1A56.0020.0002] # LIGHT TWELVE POINTED BLACK STAR +1F7D3 ; [*1A57.0020.0002] # HEAVY TWELVE POINTED BLACK STAR +1F7D4 ; [*1A58.0020.0002] # HEAVY TWELVE POINTED PINWHEEL STAR +1F7D5 ; [*1A59.0020.0002] # CIRCLED TRIANGLE +1F7D6 ; [*1A5A.0020.0002] # NEGATIVE CIRCLED TRIANGLE +1F7D7 ; [*1A5B.0020.0002] # CIRCLED SQUARE +1F7D8 ; [*1A5C.0020.0002] # NEGATIVE CIRCLED SQUARE +1F7E0 ; [*1A5D.0020.0002] # LARGE ORANGE CIRCLE +1F7E1 ; [*1A5E.0020.0002] # LARGE YELLOW CIRCLE +1F7E2 ; [*1A5F.0020.0002] # LARGE GREEN CIRCLE +1F7E3 ; [*1A60.0020.0002] # LARGE PURPLE CIRCLE +1F7E4 ; [*1A61.0020.0002] # LARGE BROWN CIRCLE +1F7E5 ; [*1A62.0020.0002] # LARGE RED SQUARE +1F7E6 ; [*1A63.0020.0002] # LARGE BLUE SQUARE +1F7E7 ; [*1A64.0020.0002] # LARGE ORANGE SQUARE +1F7E8 ; [*1A65.0020.0002] # LARGE YELLOW SQUARE +1F7E9 ; [*1A66.0020.0002] # LARGE GREEN SQUARE +1F7EA ; [*1A67.0020.0002] # LARGE PURPLE SQUARE +1F7EB ; [*1A68.0020.0002] # LARGE BROWN SQUARE +1F800 ; [*1A69.0020.0002] # LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD +1F801 ; [*1A6A.0020.0002] # UPWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD +1F802 ; [*1A6B.0020.0002] # RIGHTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD +1F803 ; [*1A6C.0020.0002] # DOWNWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD +1F804 ; [*1A6D.0020.0002] # LEFTWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD +1F805 ; [*1A6E.0020.0002] # UPWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD +1F806 ; [*1A6F.0020.0002] # RIGHTWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD +1F807 ; [*1A70.0020.0002] # DOWNWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD +1F808 ; [*1A71.0020.0002] # LEFTWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD +1F809 ; [*1A72.0020.0002] # UPWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD +1F80A ; [*1A73.0020.0002] # RIGHTWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD +1F80B ; [*1A74.0020.0002] # DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD +1F810 ; [*1A75.0020.0002] # LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD +1F811 ; [*1A76.0020.0002] # UPWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD +1F812 ; [*1A77.0020.0002] # RIGHTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD +1F813 ; [*1A78.0020.0002] # DOWNWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD +1F814 ; [*1A79.0020.0002] # LEFTWARDS ARROW WITH EQUILATERAL ARROWHEAD +1F815 ; [*1A7A.0020.0002] # UPWARDS ARROW WITH EQUILATERAL ARROWHEAD +1F816 ; [*1A7B.0020.0002] # RIGHTWARDS ARROW WITH EQUILATERAL ARROWHEAD +1F817 ; [*1A7C.0020.0002] # DOWNWARDS ARROW WITH EQUILATERAL ARROWHEAD +1F818 ; [*1A7D.0020.0002] # HEAVY LEFTWARDS ARROW WITH EQUILATERAL ARROWHEAD +1F819 ; [*1A7E.0020.0002] # HEAVY UPWARDS ARROW WITH EQUILATERAL ARROWHEAD +1F81A ; [*1A7F.0020.0002] # HEAVY RIGHTWARDS ARROW WITH EQUILATERAL ARROWHEAD +1F81B ; [*1A80.0020.0002] # HEAVY DOWNWARDS ARROW WITH EQUILATERAL ARROWHEAD +1F81C ; [*1A81.0020.0002] # HEAVY LEFTWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD +1F81D ; [*1A82.0020.0002] # HEAVY UPWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD +1F81E ; [*1A83.0020.0002] # HEAVY RIGHTWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD +1F81F ; [*1A84.0020.0002] # HEAVY DOWNWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD +1F820 ; [*1A85.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT +1F821 ; [*1A86.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT +1F822 ; [*1A87.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT +1F823 ; [*1A88.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT +1F824 ; [*1A89.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT +1F825 ; [*1A8A.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT +1F826 ; [*1A8B.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT +1F827 ; [*1A8C.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT +1F828 ; [*1A8D.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT +1F829 ; [*1A8E.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT +1F82A ; [*1A8F.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT +1F82B ; [*1A90.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT +1F82C ; [*1A91.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT +1F82D ; [*1A92.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT +1F82E ; [*1A93.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT +1F82F ; [*1A94.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT +1F830 ; [*1A95.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT +1F831 ; [*1A96.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT +1F832 ; [*1A97.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT +1F833 ; [*1A98.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT +1F834 ; [*1A99.0020.0002] # LEFTWARDS FINGER-POST ARROW +1F835 ; [*1A9A.0020.0002] # UPWARDS FINGER-POST ARROW +1F836 ; [*1A9B.0020.0002] # RIGHTWARDS FINGER-POST ARROW +1F837 ; [*1A9C.0020.0002] # DOWNWARDS FINGER-POST ARROW +1F838 ; [*1A9D.0020.0002] # LEFTWARDS SQUARED ARROW +1F839 ; [*1A9E.0020.0002] # UPWARDS SQUARED ARROW +1F83A ; [*1A9F.0020.0002] # RIGHTWARDS SQUARED ARROW +1F83B ; [*1AA0.0020.0002] # DOWNWARDS SQUARED ARROW +1F83C ; [*1AA1.0020.0002] # LEFTWARDS COMPRESSED ARROW +1F83D ; [*1AA2.0020.0002] # UPWARDS COMPRESSED ARROW +1F83E ; [*1AA3.0020.0002] # RIGHTWARDS COMPRESSED ARROW +1F83F ; [*1AA4.0020.0002] # DOWNWARDS COMPRESSED ARROW +1F840 ; [*1AA5.0020.0002] # LEFTWARDS HEAVY COMPRESSED ARROW +1F841 ; [*1AA6.0020.0002] # UPWARDS HEAVY COMPRESSED ARROW +1F842 ; [*1AA7.0020.0002] # RIGHTWARDS HEAVY COMPRESSED ARROW +1F843 ; [*1AA8.0020.0002] # DOWNWARDS HEAVY COMPRESSED ARROW +1F844 ; [*1AA9.0020.0002] # LEFTWARDS HEAVY ARROW +1F845 ; [*1AAA.0020.0002] # UPWARDS HEAVY ARROW +1F846 ; [*1AAB.0020.0002] # RIGHTWARDS HEAVY ARROW +1F847 ; [*1AAC.0020.0002] # DOWNWARDS HEAVY ARROW +1F850 ; [*1AAD.0020.0002] # LEFTWARDS SANS-SERIF ARROW +1F851 ; [*1AAE.0020.0002] # UPWARDS SANS-SERIF ARROW +1F852 ; [*1AAF.0020.0002] # RIGHTWARDS SANS-SERIF ARROW +1F853 ; [*1AB0.0020.0002] # DOWNWARDS SANS-SERIF ARROW +1F854 ; [*1AB1.0020.0002] # NORTH WEST SANS-SERIF ARROW +1F855 ; [*1AB2.0020.0002] # NORTH EAST SANS-SERIF ARROW +1F856 ; [*1AB3.0020.0002] # SOUTH EAST SANS-SERIF ARROW +1F857 ; [*1AB4.0020.0002] # SOUTH WEST SANS-SERIF ARROW +1F858 ; [*1AB5.0020.0002] # LEFT RIGHT SANS-SERIF ARROW +1F859 ; [*1AB6.0020.0002] # UP DOWN SANS-SERIF ARROW +1F860 ; [*1AB7.0020.0002] # WIDE-HEADED LEFTWARDS LIGHT BARB ARROW +1F861 ; [*1AB8.0020.0002] # WIDE-HEADED UPWARDS LIGHT BARB ARROW +1F862 ; [*1AB9.0020.0002] # WIDE-HEADED RIGHTWARDS LIGHT BARB ARROW +1F863 ; [*1ABA.0020.0002] # WIDE-HEADED DOWNWARDS LIGHT BARB ARROW +1F864 ; [*1ABB.0020.0002] # WIDE-HEADED NORTH WEST LIGHT BARB ARROW +1F865 ; [*1ABC.0020.0002] # WIDE-HEADED NORTH EAST LIGHT BARB ARROW +1F866 ; [*1ABD.0020.0002] # WIDE-HEADED SOUTH EAST LIGHT BARB ARROW +1F867 ; [*1ABE.0020.0002] # WIDE-HEADED SOUTH WEST LIGHT BARB ARROW +1F868 ; [*1ABF.0020.0002] # WIDE-HEADED LEFTWARDS BARB ARROW +1F869 ; [*1AC0.0020.0002] # WIDE-HEADED UPWARDS BARB ARROW +1F86A ; [*1AC1.0020.0002] # WIDE-HEADED RIGHTWARDS BARB ARROW +1F86B ; [*1AC2.0020.0002] # WIDE-HEADED DOWNWARDS BARB ARROW +1F86C ; [*1AC3.0020.0002] # WIDE-HEADED NORTH WEST BARB ARROW +1F86D ; [*1AC4.0020.0002] # WIDE-HEADED NORTH EAST BARB ARROW +1F86E ; [*1AC5.0020.0002] # WIDE-HEADED SOUTH EAST BARB ARROW +1F86F ; [*1AC6.0020.0002] # WIDE-HEADED SOUTH WEST BARB ARROW +1F870 ; [*1AC7.0020.0002] # WIDE-HEADED LEFTWARDS MEDIUM BARB ARROW +1F871 ; [*1AC8.0020.0002] # WIDE-HEADED UPWARDS MEDIUM BARB ARROW +1F872 ; [*1AC9.0020.0002] # WIDE-HEADED RIGHTWARDS MEDIUM BARB ARROW +1F873 ; [*1ACA.0020.0002] # WIDE-HEADED DOWNWARDS MEDIUM BARB ARROW +1F874 ; [*1ACB.0020.0002] # WIDE-HEADED NORTH WEST MEDIUM BARB ARROW +1F875 ; [*1ACC.0020.0002] # WIDE-HEADED NORTH EAST MEDIUM BARB ARROW +1F876 ; [*1ACD.0020.0002] # WIDE-HEADED SOUTH EAST MEDIUM BARB ARROW +1F877 ; [*1ACE.0020.0002] # WIDE-HEADED SOUTH WEST MEDIUM BARB ARROW +1F878 ; [*1ACF.0020.0002] # WIDE-HEADED LEFTWARDS HEAVY BARB ARROW +1F879 ; [*1AD0.0020.0002] # WIDE-HEADED UPWARDS HEAVY BARB ARROW +1F87A ; [*1AD1.0020.0002] # WIDE-HEADED RIGHTWARDS HEAVY BARB ARROW +1F87B ; [*1AD2.0020.0002] # WIDE-HEADED DOWNWARDS HEAVY BARB ARROW +1F87C ; [*1AD3.0020.0002] # WIDE-HEADED NORTH WEST HEAVY BARB ARROW +1F87D ; [*1AD4.0020.0002] # WIDE-HEADED NORTH EAST HEAVY BARB ARROW +1F87E ; [*1AD5.0020.0002] # WIDE-HEADED SOUTH EAST HEAVY BARB ARROW +1F87F ; [*1AD6.0020.0002] # WIDE-HEADED SOUTH WEST HEAVY BARB ARROW +1F880 ; [*1AD7.0020.0002] # WIDE-HEADED LEFTWARDS VERY HEAVY BARB ARROW +1F881 ; [*1AD8.0020.0002] # WIDE-HEADED UPWARDS VERY HEAVY BARB ARROW +1F882 ; [*1AD9.0020.0002] # WIDE-HEADED RIGHTWARDS VERY HEAVY BARB ARROW +1F883 ; [*1ADA.0020.0002] # WIDE-HEADED DOWNWARDS VERY HEAVY BARB ARROW +1F884 ; [*1ADB.0020.0002] # WIDE-HEADED NORTH WEST VERY HEAVY BARB ARROW +1F885 ; [*1ADC.0020.0002] # WIDE-HEADED NORTH EAST VERY HEAVY BARB ARROW +1F886 ; [*1ADD.0020.0002] # WIDE-HEADED SOUTH EAST VERY HEAVY BARB ARROW +1F887 ; [*1ADE.0020.0002] # WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW +1F890 ; [*1ADF.0020.0002] # LEFTWARDS TRIANGLE ARROWHEAD +1F891 ; [*1AE0.0020.0002] # UPWARDS TRIANGLE ARROWHEAD +1F892 ; [*1AE1.0020.0002] # RIGHTWARDS TRIANGLE ARROWHEAD +1F893 ; [*1AE2.0020.0002] # DOWNWARDS TRIANGLE ARROWHEAD +1F894 ; [*1AE3.0020.0002] # LEFTWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD +1F895 ; [*1AE4.0020.0002] # UPWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD +1F896 ; [*1AE5.0020.0002] # RIGHTWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD +1F897 ; [*1AE6.0020.0002] # DOWNWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD +1F898 ; [*1AE7.0020.0002] # LEFTWARDS ARROW WITH NOTCHED TAIL +1F899 ; [*1AE8.0020.0002] # UPWARDS ARROW WITH NOTCHED TAIL +1F89A ; [*1AE9.0020.0002] # RIGHTWARDS ARROW WITH NOTCHED TAIL +1F89B ; [*1AEA.0020.0002] # DOWNWARDS ARROW WITH NOTCHED TAIL +1F89C ; [*1AEB.0020.0002] # HEAVY ARROW SHAFT WIDTH ONE +1F89D ; [*1AEC.0020.0002] # HEAVY ARROW SHAFT WIDTH TWO THIRDS +1F89E ; [*1AED.0020.0002] # HEAVY ARROW SHAFT WIDTH ONE HALF +1F89F ; [*1AEE.0020.0002] # HEAVY ARROW SHAFT WIDTH ONE THIRD +1F8A0 ; [*1AEF.0020.0002] # LEFTWARDS BOTTOM-SHADED WHITE ARROW +1F8A1 ; [*1AF0.0020.0002] # RIGHTWARDS BOTTOM SHADED WHITE ARROW +1F8A2 ; [*1AF1.0020.0002] # LEFTWARDS TOP SHADED WHITE ARROW +1F8A3 ; [*1AF2.0020.0002] # RIGHTWARDS TOP SHADED WHITE ARROW +1F8A4 ; [*1AF3.0020.0002] # LEFTWARDS LEFT-SHADED WHITE ARROW +1F8A5 ; [*1AF4.0020.0002] # RIGHTWARDS RIGHT-SHADED WHITE ARROW +1F8A6 ; [*1AF5.0020.0002] # LEFTWARDS RIGHT-SHADED WHITE ARROW +1F8A7 ; [*1AF6.0020.0002] # RIGHTWARDS LEFT-SHADED WHITE ARROW +1F8A8 ; [*1AF7.0020.0002] # LEFTWARDS BACK-TILTED SHADOWED WHITE ARROW +1F8A9 ; [*1AF8.0020.0002] # RIGHTWARDS BACK-TILTED SHADOWED WHITE ARROW +1F8AA ; [*1AF9.0020.0002] # LEFTWARDS FRONT-TILTED SHADOWED WHITE ARROW +1F8AB ; [*1AFA.0020.0002] # RIGHTWARDS FRONT-TILTED SHADOWED WHITE ARROW +1F8AC ; [*1AFB.0020.0002] # WHITE ARROW SHAFT WIDTH ONE +1F8AD ; [*1AFC.0020.0002] # WHITE ARROW SHAFT WIDTH TWO THIRDS +1F8B0 ; [*1AFD.0020.0002] # ARROW POINTING UPWARDS THEN NORTH WEST +1F8B1 ; [*1AFE.0020.0002] # ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST +1F900 ; [*1767.0020.0002] # CIRCLED CROSS FORMEE WITH FOUR DOTS +1F901 ; [*1768.0020.0002] # CIRCLED CROSS FORMEE WITH TWO DOTS +1F902 ; [*1769.0020.0002] # CIRCLED CROSS FORMEE +1F903 ; [*176A.0020.0002] # LEFT HALF CIRCLE WITH FOUR DOTS +1F904 ; [*176B.0020.0002] # LEFT HALF CIRCLE WITH THREE DOTS +1F905 ; [*176C.0020.0002] # LEFT HALF CIRCLE WITH TWO DOTS +1F906 ; [*176D.0020.0002] # LEFT HALF CIRCLE WITH DOT +1F907 ; [*176E.0020.0002] # LEFT HALF CIRCLE +1F908 ; [*176F.0020.0002] # DOWNWARD FACING HOOK +1F909 ; [*1770.0020.0002] # DOWNWARD FACING NOTCHED HOOK +1F90A ; [*1771.0020.0002] # DOWNWARD FACING HOOK WITH DOT +1F90B ; [*1772.0020.0002] # DOWNWARD FACING NOTCHED HOOK WITH DOT +1F90C ; [*1773.0020.0002] # PINCHED FINGERS +1F90D ; [*1774.0020.0002] # WHITE HEART +1F90E ; [*1775.0020.0002] # BROWN HEART +1F90F ; [*1776.0020.0002] # PINCHING HAND +1F910 ; [*1777.0020.0002] # ZIPPER-MOUTH FACE +1F911 ; [*1778.0020.0002] # MONEY-MOUTH FACE +1F912 ; [*1779.0020.0002] # FACE WITH THERMOMETER +1F913 ; [*177A.0020.0002] # NERD FACE +1F914 ; [*177B.0020.0002] # THINKING FACE +1F915 ; [*177C.0020.0002] # FACE WITH HEAD-BANDAGE +1F916 ; [*177D.0020.0002] # ROBOT FACE +1F917 ; [*177E.0020.0002] # HUGGING FACE +1F918 ; [*177F.0020.0002] # SIGN OF THE HORNS +1F919 ; [*1780.0020.0002] # CALL ME HAND +1F91A ; [*1781.0020.0002] # RAISED BACK OF HAND +1F91B ; [*1782.0020.0002] # LEFT-FACING FIST +1F91C ; [*1783.0020.0002] # RIGHT-FACING FIST +1F91D ; [*1784.0020.0002] # HANDSHAKE +1F91E ; [*1785.0020.0002] # HAND WITH INDEX AND MIDDLE FINGERS CROSSED +1F91F ; [*1786.0020.0002] # I LOVE YOU HAND SIGN +1F920 ; [*1787.0020.0002] # FACE WITH COWBOY HAT +1F921 ; [*1788.0020.0002] # CLOWN FACE +1F922 ; [*1789.0020.0002] # NAUSEATED FACE +1F923 ; [*178A.0020.0002] # ROLLING ON THE FLOOR LAUGHING +1F924 ; [*178B.0020.0002] # DROOLING FACE +1F925 ; [*178C.0020.0002] # LYING FACE +1F926 ; [*178D.0020.0002] # FACE PALM +1F927 ; [*178E.0020.0002] # SNEEZING FACE +1F928 ; [*178F.0020.0002] # FACE WITH ONE EYEBROW RAISED +1F929 ; [*1790.0020.0002] # GRINNING FACE WITH STAR EYES +1F92A ; [*1791.0020.0002] # GRINNING FACE WITH ONE LARGE AND ONE SMALL EYE +1F92B ; [*1792.0020.0002] # FACE WITH FINGER COVERING CLOSED LIPS +1F92C ; [*1793.0020.0002] # SERIOUS FACE WITH SYMBOLS COVERING MOUTH +1F92D ; [*1794.0020.0002] # SMILING FACE WITH SMILING EYES AND HAND COVERING MOUTH +1F92E ; [*1795.0020.0002] # FACE WITH OPEN MOUTH VOMITING +1F92F ; [*1796.0020.0002] # SHOCKED FACE WITH EXPLODING HEAD +1F930 ; [*1797.0020.0002] # PREGNANT WOMAN +1F931 ; [*1798.0020.0002] # BREAST-FEEDING +1F932 ; [*1799.0020.0002] # PALMS UP TOGETHER +1F933 ; [*179A.0020.0002] # SELFIE +1F934 ; [*179B.0020.0002] # PRINCE +1F935 ; [*179C.0020.0002] # MAN IN TUXEDO +1F936 ; [*179D.0020.0002] # MOTHER CHRISTMAS +1F937 ; [*179E.0020.0002] # SHRUG +1F938 ; [*179F.0020.0002] # PERSON DOING CARTWHEEL +1F939 ; [*17A0.0020.0002] # JUGGLING +1F93A ; [*17A1.0020.0002] # FENCER +1F93B ; [*17A2.0020.0002] # MODERN PENTATHLON +1F93C ; [*17A3.0020.0002] # WRESTLERS +1F93D ; [*17A4.0020.0002] # WATER POLO +1F93E ; [*17A5.0020.0002] # HANDBALL +1F93F ; [*17A6.0020.0002] # DIVING MASK +1F940 ; [*17A7.0020.0002] # WILTED FLOWER +1F941 ; [*17A8.0020.0002] # DRUM WITH DRUMSTICKS +1F942 ; [*17A9.0020.0002] # CLINKING GLASSES +1F943 ; [*17AA.0020.0002] # TUMBLER GLASS +1F944 ; [*17AB.0020.0002] # SPOON +1F945 ; [*17AC.0020.0002] # GOAL NET +1F946 ; [*17AD.0020.0002] # RIFLE +1F947 ; [*17AE.0020.0002] # FIRST PLACE MEDAL +1F948 ; [*17AF.0020.0002] # SECOND PLACE MEDAL +1F949 ; [*17B0.0020.0002] # THIRD PLACE MEDAL +1F94A ; [*17B1.0020.0002] # BOXING GLOVE +1F94B ; [*17B2.0020.0002] # MARTIAL ARTS UNIFORM +1F94C ; [*17B3.0020.0002] # CURLING STONE +1F94D ; [*17B4.0020.0002] # LACROSSE STICK AND BALL +1F94E ; [*17B5.0020.0002] # SOFTBALL +1F94F ; [*17B6.0020.0002] # FLYING DISC +1F950 ; [*17B7.0020.0002] # CROISSANT +1F951 ; [*17B8.0020.0002] # AVOCADO +1F952 ; [*17B9.0020.0002] # CUCUMBER +1F953 ; [*17BA.0020.0002] # BACON +1F954 ; [*17BB.0020.0002] # POTATO +1F955 ; [*17BC.0020.0002] # CARROT +1F956 ; [*17BD.0020.0002] # BAGUETTE BREAD +1F957 ; [*17BE.0020.0002] # GREEN SALAD +1F958 ; [*17BF.0020.0002] # SHALLOW PAN OF FOOD +1F959 ; [*17C0.0020.0002] # STUFFED FLATBREAD +1F95A ; [*17C1.0020.0002] # EGG +1F95B ; [*17C2.0020.0002] # GLASS OF MILK +1F95C ; [*17C3.0020.0002] # PEANUTS +1F95D ; [*17C4.0020.0002] # KIWIFRUIT +1F95E ; [*17C5.0020.0002] # PANCAKES +1F95F ; [*17C6.0020.0002] # DUMPLING +1F960 ; [*17C7.0020.0002] # FORTUNE COOKIE +1F961 ; [*17C8.0020.0002] # TAKEOUT BOX +1F962 ; [*17C9.0020.0002] # CHOPSTICKS +1F963 ; [*17CA.0020.0002] # BOWL WITH SPOON +1F964 ; [*17CB.0020.0002] # CUP WITH STRAW +1F965 ; [*17CC.0020.0002] # COCONUT +1F966 ; [*17CD.0020.0002] # BROCCOLI +1F967 ; [*17CE.0020.0002] # PIE +1F968 ; [*17CF.0020.0002] # PRETZEL +1F969 ; [*17D0.0020.0002] # CUT OF MEAT +1F96A ; [*17D1.0020.0002] # SANDWICH +1F96B ; [*17D2.0020.0002] # CANNED FOOD +1F96C ; [*17D3.0020.0002] # LEAFY GREEN +1F96D ; [*17D4.0020.0002] # MANGO +1F96E ; [*17D5.0020.0002] # MOON CAKE +1F96F ; [*17D6.0020.0002] # BAGEL +1F970 ; [*17D7.0020.0002] # SMILING FACE WITH SMILING EYES AND THREE HEARTS +1F971 ; [*17D8.0020.0002] # YAWNING FACE +1F972 ; [*17D9.0020.0002] # SMILING FACE WITH TEAR +1F973 ; [*17DA.0020.0002] # FACE WITH PARTY HORN AND PARTY HAT +1F974 ; [*17DB.0020.0002] # FACE WITH UNEVEN EYES AND WAVY MOUTH +1F975 ; [*17DC.0020.0002] # OVERHEATED FACE +1F976 ; [*17DD.0020.0002] # FREEZING FACE +1F977 ; [*17DE.0020.0002] # NINJA +1F978 ; [*17DF.0020.0002] # DISGUISED FACE +1F97A ; [*17E0.0020.0002] # FACE WITH PLEADING EYES +1F97B ; [*17E1.0020.0002] # SARI +1F97C ; [*17E2.0020.0002] # LAB COAT +1F97D ; [*17E3.0020.0002] # GOGGLES +1F97E ; [*17E4.0020.0002] # HIKING BOOT +1F97F ; [*17E5.0020.0002] # FLAT SHOE +1F980 ; [*17E6.0020.0002] # CRAB +1F981 ; [*17E7.0020.0002] # LION FACE +1F982 ; [*17E8.0020.0002] # SCORPION +1F983 ; [*17E9.0020.0002] # TURKEY +1F984 ; [*17EA.0020.0002] # UNICORN FACE +1F985 ; [*17EB.0020.0002] # EAGLE +1F986 ; [*17EC.0020.0002] # DUCK +1F987 ; [*17ED.0020.0002] # BAT +1F988 ; [*17EE.0020.0002] # SHARK +1F989 ; [*17EF.0020.0002] # OWL +1F98A ; [*17F0.0020.0002] # FOX FACE +1F98B ; [*17F1.0020.0002] # BUTTERFLY +1F98C ; [*17F2.0020.0002] # DEER +1F98D ; [*17F3.0020.0002] # GORILLA +1F98E ; [*17F4.0020.0002] # LIZARD +1F98F ; [*17F5.0020.0002] # RHINOCEROS +1F990 ; [*17F6.0020.0002] # SHRIMP +1F991 ; [*17F7.0020.0002] # SQUID +1F992 ; [*17F8.0020.0002] # GIRAFFE FACE +1F993 ; [*17F9.0020.0002] # ZEBRA FACE +1F994 ; [*17FA.0020.0002] # HEDGEHOG +1F995 ; [*17FB.0020.0002] # SAUROPOD +1F996 ; [*17FC.0020.0002] # T-REX +1F997 ; [*17FD.0020.0002] # CRICKET +1F998 ; [*17FE.0020.0002] # KANGAROO +1F999 ; [*17FF.0020.0002] # LLAMA +1F99A ; [*1800.0020.0002] # PEACOCK +1F99B ; [*1801.0020.0002] # HIPPOPOTAMUS +1F99C ; [*1802.0020.0002] # PARROT +1F99D ; [*1803.0020.0002] # RACCOON +1F99E ; [*1804.0020.0002] # LOBSTER +1F99F ; [*1805.0020.0002] # MOSQUITO +1F9A0 ; [*1806.0020.0002] # MICROBE +1F9A1 ; [*1807.0020.0002] # BADGER +1F9A2 ; [*1808.0020.0002] # SWAN +1F9A3 ; [*1809.0020.0002] # MAMMOTH +1F9A4 ; [*180A.0020.0002] # DODO +1F9A5 ; [*180B.0020.0002] # SLOTH +1F9A6 ; [*180C.0020.0002] # OTTER +1F9A7 ; [*180D.0020.0002] # ORANGUTAN +1F9A8 ; [*180E.0020.0002] # SKUNK +1F9A9 ; [*180F.0020.0002] # FLAMINGO +1F9AA ; [*1810.0020.0002] # OYSTER +1F9AB ; [*1811.0020.0002] # BEAVER +1F9AC ; [*1812.0020.0002] # BISON +1F9AD ; [*1813.0020.0002] # SEAL +1F9AE ; [*1814.0020.0002] # GUIDE DOG +1F9AF ; [*1815.0020.0002] # PROBING CANE +1F9B0 ; [*1816.0020.0002] # EMOJI COMPONENT RED HAIR +1F9B1 ; [*1817.0020.0002] # EMOJI COMPONENT CURLY HAIR +1F9B2 ; [*1818.0020.0002] # EMOJI COMPONENT BALD +1F9B3 ; [*1819.0020.0002] # EMOJI COMPONENT WHITE HAIR +1F9B4 ; [*181A.0020.0002] # BONE +1F9B5 ; [*181B.0020.0002] # LEG +1F9B6 ; [*181C.0020.0002] # FOOT +1F9B7 ; [*181D.0020.0002] # TOOTH +1F9B8 ; [*181E.0020.0002] # SUPERHERO +1F9B9 ; [*181F.0020.0002] # SUPERVILLAIN +1F9BA ; [*1820.0020.0002] # SAFETY VEST +1F9BB ; [*1821.0020.0002] # EAR WITH HEARING AID +1F9BC ; [*1822.0020.0002] # MOTORIZED WHEELCHAIR +1F9BD ; [*1823.0020.0002] # MANUAL WHEELCHAIR +1F9BE ; [*1824.0020.0002] # MECHANICAL ARM +1F9BF ; [*1825.0020.0002] # MECHANICAL LEG +1F9C0 ; [*1826.0020.0002] # CHEESE WEDGE +1F9C1 ; [*1827.0020.0002] # CUPCAKE +1F9C2 ; [*1828.0020.0002] # SALT SHAKER +1F9C3 ; [*1829.0020.0002] # BEVERAGE BOX +1F9C4 ; [*182A.0020.0002] # GARLIC +1F9C5 ; [*182B.0020.0002] # ONION +1F9C6 ; [*182C.0020.0002] # FALAFEL +1F9C7 ; [*182D.0020.0002] # WAFFLE +1F9C8 ; [*182E.0020.0002] # BUTTER +1F9C9 ; [*182F.0020.0002] # MATE DRINK +1F9CA ; [*1830.0020.0002] # ICE CUBE +1F9CB ; [*1831.0020.0002] # BUBBLE TEA +1F9CD ; [*1832.0020.0002] # STANDING PERSON +1F9CE ; [*1833.0020.0002] # KNEELING PERSON +1F9CF ; [*1834.0020.0002] # DEAF PERSON +1F9D0 ; [*1835.0020.0002] # FACE WITH MONOCLE +1F9D1 ; [*1836.0020.0002] # ADULT +1F9D2 ; [*1837.0020.0002] # CHILD +1F9D3 ; [*1838.0020.0002] # OLDER ADULT +1F9D4 ; [*1839.0020.0002] # BEARDED PERSON +1F9D5 ; [*183A.0020.0002] # PERSON WITH HEADSCARF +1F9D6 ; [*183B.0020.0002] # PERSON IN STEAMY ROOM +1F9D7 ; [*183C.0020.0002] # PERSON CLIMBING +1F9D8 ; [*183D.0020.0002] # PERSON IN LOTUS POSITION +1F9D9 ; [*183E.0020.0002] # MAGE +1F9DA ; [*183F.0020.0002] # FAIRY +1F9DB ; [*1840.0020.0002] # VAMPIRE +1F9DC ; [*1841.0020.0002] # MERPERSON +1F9DD ; [*1842.0020.0002] # ELF +1F9DE ; [*1843.0020.0002] # GENIE +1F9DF ; [*1844.0020.0002] # ZOMBIE +1F9E0 ; [*1845.0020.0002] # BRAIN +1F9E1 ; [*1846.0020.0002] # ORANGE HEART +1F9E2 ; [*1847.0020.0002] # BILLED CAP +1F9E3 ; [*1848.0020.0002] # SCARF +1F9E4 ; [*1849.0020.0002] # GLOVES +1F9E5 ; [*184A.0020.0002] # COAT +1F9E6 ; [*184B.0020.0002] # SOCKS +1F9E7 ; [*184C.0020.0002] # RED GIFT ENVELOPE +1F9E8 ; [*184D.0020.0002] # FIRECRACKER +1F9E9 ; [*184E.0020.0002] # JIGSAW PUZZLE PIECE +1F9EA ; [*184F.0020.0002] # TEST TUBE +1F9EB ; [*1850.0020.0002] # PETRI DISH +1F9EC ; [*1851.0020.0002] # DNA DOUBLE HELIX +1F9ED ; [*1852.0020.0002] # COMPASS +1F9EE ; [*1853.0020.0002] # ABACUS +1F9EF ; [*1854.0020.0002] # FIRE EXTINGUISHER +1F9F0 ; [*1855.0020.0002] # TOOLBOX +1F9F1 ; [*1856.0020.0002] # BRICK +1F9F2 ; [*1857.0020.0002] # MAGNET +1F9F3 ; [*1858.0020.0002] # LUGGAGE +1F9F4 ; [*1859.0020.0002] # LOTION BOTTLE +1F9F5 ; [*185A.0020.0002] # SPOOL OF THREAD +1F9F6 ; [*185B.0020.0002] # BALL OF YARN +1F9F7 ; [*185C.0020.0002] # SAFETY PIN +1F9F8 ; [*185D.0020.0002] # TEDDY BEAR +1F9F9 ; [*185E.0020.0002] # BROOM +1F9FA ; [*185F.0020.0002] # BASKET +1F9FB ; [*1860.0020.0002] # ROLL OF PAPER +1F9FC ; [*1861.0020.0002] # BAR OF SOAP +1F9FD ; [*1862.0020.0002] # SPONGE +1F9FE ; [*1863.0020.0002] # RECEIPT +1F9FF ; [*1864.0020.0002] # NAZAR AMULET +1FA00 ; [*13F9.0020.0002] # NEUTRAL CHESS KING +1FA01 ; [*13FA.0020.0002] # NEUTRAL CHESS QUEEN +1FA02 ; [*13FB.0020.0002] # NEUTRAL CHESS ROOK +1FA03 ; [*13FC.0020.0002] # NEUTRAL CHESS BISHOP +1FA04 ; [*13FD.0020.0002] # NEUTRAL CHESS KNIGHT +1FA05 ; [*13FE.0020.0002] # NEUTRAL CHESS PAWN +1FA06 ; [*13FF.0020.0002] # WHITE CHESS KNIGHT ROTATED FORTY-FIVE DEGREES +1FA07 ; [*1400.0020.0002] # BLACK CHESS KNIGHT ROTATED FORTY-FIVE DEGREES +1FA08 ; [*1401.0020.0002] # NEUTRAL CHESS KNIGHT ROTATED FORTY-FIVE DEGREES +1FA09 ; [*1402.0020.0002] # WHITE CHESS KING ROTATED NINETY DEGREES +1FA0A ; [*1403.0020.0002] # WHITE CHESS QUEEN ROTATED NINETY DEGREES +1FA0B ; [*1404.0020.0002] # WHITE CHESS ROOK ROTATED NINETY DEGREES +1FA0C ; [*1405.0020.0002] # WHITE CHESS BISHOP ROTATED NINETY DEGREES +1FA0D ; [*1406.0020.0002] # WHITE CHESS KNIGHT ROTATED NINETY DEGREES +1FA0E ; [*1407.0020.0002] # WHITE CHESS PAWN ROTATED NINETY DEGREES +1FA0F ; [*1408.0020.0002] # BLACK CHESS KING ROTATED NINETY DEGREES +1FA10 ; [*1409.0020.0002] # BLACK CHESS QUEEN ROTATED NINETY DEGREES +1FA11 ; [*140A.0020.0002] # BLACK CHESS ROOK ROTATED NINETY DEGREES +1FA12 ; [*140B.0020.0002] # BLACK CHESS BISHOP ROTATED NINETY DEGREES +1FA13 ; [*140C.0020.0002] # BLACK CHESS KNIGHT ROTATED NINETY DEGREES +1FA14 ; [*140D.0020.0002] # BLACK CHESS PAWN ROTATED NINETY DEGREES +1FA15 ; [*140E.0020.0002] # NEUTRAL CHESS KING ROTATED NINETY DEGREES +1FA16 ; [*140F.0020.0002] # NEUTRAL CHESS QUEEN ROTATED NINETY DEGREES +1FA17 ; [*1410.0020.0002] # NEUTRAL CHESS ROOK ROTATED NINETY DEGREES +1FA18 ; [*1411.0020.0002] # NEUTRAL CHESS BISHOP ROTATED NINETY DEGREES +1FA19 ; [*1412.0020.0002] # NEUTRAL CHESS KNIGHT ROTATED NINETY DEGREES +1FA1A ; [*1413.0020.0002] # NEUTRAL CHESS PAWN ROTATED NINETY DEGREES +1FA1B ; [*1414.0020.0002] # WHITE CHESS KNIGHT ROTATED ONE HUNDRED THIRTY-FIVE DEGREES +1FA1C ; [*1415.0020.0002] # BLACK CHESS KNIGHT ROTATED ONE HUNDRED THIRTY-FIVE DEGREES +1FA1D ; [*1416.0020.0002] # NEUTRAL CHESS KNIGHT ROTATED ONE HUNDRED THIRTY-FIVE DEGREES +1FA1E ; [*1417.0020.0002] # WHITE CHESS TURNED KING +1FA1F ; [*1418.0020.0002] # WHITE CHESS TURNED QUEEN +1FA20 ; [*1419.0020.0002] # WHITE CHESS TURNED ROOK +1FA21 ; [*141A.0020.0002] # WHITE CHESS TURNED BISHOP +1FA22 ; [*141B.0020.0002] # WHITE CHESS TURNED KNIGHT +1FA23 ; [*141C.0020.0002] # WHITE CHESS TURNED PAWN +1FA24 ; [*141D.0020.0002] # BLACK CHESS TURNED KING +1FA25 ; [*141E.0020.0002] # BLACK CHESS TURNED QUEEN +1FA26 ; [*141F.0020.0002] # BLACK CHESS TURNED ROOK +1FA27 ; [*1420.0020.0002] # BLACK CHESS TURNED BISHOP +1FA28 ; [*1421.0020.0002] # BLACK CHESS TURNED KNIGHT +1FA29 ; [*1422.0020.0002] # BLACK CHESS TURNED PAWN +1FA2A ; [*1423.0020.0002] # NEUTRAL CHESS TURNED KING +1FA2B ; [*1424.0020.0002] # NEUTRAL CHESS TURNED QUEEN +1FA2C ; [*1425.0020.0002] # NEUTRAL CHESS TURNED ROOK +1FA2D ; [*1426.0020.0002] # NEUTRAL CHESS TURNED BISHOP +1FA2E ; [*1427.0020.0002] # NEUTRAL CHESS TURNED KNIGHT +1FA2F ; [*1428.0020.0002] # NEUTRAL CHESS TURNED PAWN +1FA30 ; [*1429.0020.0002] # WHITE CHESS KNIGHT ROTATED TWO HUNDRED TWENTY-FIVE DEGREES +1FA31 ; [*142A.0020.0002] # BLACK CHESS KNIGHT ROTATED TWO HUNDRED TWENTY-FIVE DEGREES +1FA32 ; [*142B.0020.0002] # NEUTRAL CHESS KNIGHT ROTATED TWO HUNDRED TWENTY-FIVE DEGREES +1FA33 ; [*142C.0020.0002] # WHITE CHESS KING ROTATED TWO HUNDRED SEVENTY DEGREES +1FA34 ; [*142D.0020.0002] # WHITE CHESS QUEEN ROTATED TWO HUNDRED SEVENTY DEGREES +1FA35 ; [*142E.0020.0002] # WHITE CHESS ROOK ROTATED TWO HUNDRED SEVENTY DEGREES +1FA36 ; [*142F.0020.0002] # WHITE CHESS BISHOP ROTATED TWO HUNDRED SEVENTY DEGREES +1FA37 ; [*1430.0020.0002] # WHITE CHESS KNIGHT ROTATED TWO HUNDRED SEVENTY DEGREES +1FA38 ; [*1431.0020.0002] # WHITE CHESS PAWN ROTATED TWO HUNDRED SEVENTY DEGREES +1FA39 ; [*1432.0020.0002] # BLACK CHESS KING ROTATED TWO HUNDRED SEVENTY DEGREES +1FA3A ; [*1433.0020.0002] # BLACK CHESS QUEEN ROTATED TWO HUNDRED SEVENTY DEGREES +1FA3B ; [*1434.0020.0002] # BLACK CHESS ROOK ROTATED TWO HUNDRED SEVENTY DEGREES +1FA3C ; [*1435.0020.0002] # BLACK CHESS BISHOP ROTATED TWO HUNDRED SEVENTY DEGREES +1FA3D ; [*1436.0020.0002] # BLACK CHESS KNIGHT ROTATED TWO HUNDRED SEVENTY DEGREES +1FA3E ; [*1437.0020.0002] # BLACK CHESS PAWN ROTATED TWO HUNDRED SEVENTY DEGREES +1FA3F ; [*1438.0020.0002] # NEUTRAL CHESS KING ROTATED TWO HUNDRED SEVENTY DEGREES +1FA40 ; [*1439.0020.0002] # NEUTRAL CHESS QUEEN ROTATED TWO HUNDRED SEVENTY DEGREES +1FA41 ; [*143A.0020.0002] # NEUTRAL CHESS ROOK ROTATED TWO HUNDRED SEVENTY DEGREES +1FA42 ; [*143B.0020.0002] # NEUTRAL CHESS BISHOP ROTATED TWO HUNDRED SEVENTY DEGREES +1FA43 ; [*143C.0020.0002] # NEUTRAL CHESS KNIGHT ROTATED TWO HUNDRED SEVENTY DEGREES +1FA44 ; [*143D.0020.0002] # NEUTRAL CHESS PAWN ROTATED TWO HUNDRED SEVENTY DEGREES +1FA45 ; [*143E.0020.0002] # WHITE CHESS KNIGHT ROTATED THREE HUNDRED FIFTEEN DEGREES +1FA46 ; [*143F.0020.0002] # BLACK CHESS KNIGHT ROTATED THREE HUNDRED FIFTEEN DEGREES +1FA47 ; [*1440.0020.0002] # NEUTRAL CHESS KNIGHT ROTATED THREE HUNDRED FIFTEEN DEGREES +1FA48 ; [*1441.0020.0002] # WHITE CHESS EQUIHOPPER +1FA49 ; [*1442.0020.0002] # BLACK CHESS EQUIHOPPER +1FA4A ; [*1443.0020.0002] # NEUTRAL CHESS EQUIHOPPER +1FA4B ; [*1444.0020.0002] # WHITE CHESS EQUIHOPPER ROTATED NINETY DEGREES +1FA4C ; [*1445.0020.0002] # BLACK CHESS EQUIHOPPER ROTATED NINETY DEGREES +1FA4D ; [*1446.0020.0002] # NEUTRAL CHESS EQUIHOPPER ROTATED NINETY DEGREES +1FA4E ; [*1447.0020.0002] # WHITE CHESS KNIGHT-QUEEN +1FA4F ; [*1448.0020.0002] # WHITE CHESS KNIGHT-ROOK +1FA50 ; [*1449.0020.0002] # WHITE CHESS KNIGHT-BISHOP +1FA51 ; [*144A.0020.0002] # BLACK CHESS KNIGHT-QUEEN +1FA52 ; [*144B.0020.0002] # BLACK CHESS KNIGHT-ROOK +1FA53 ; [*144C.0020.0002] # BLACK CHESS KNIGHT-BISHOP +1FA60 ; [*144D.0020.0002] # XIANGQI RED GENERAL +1FA61 ; [*144E.0020.0002] # XIANGQI RED MANDARIN +1FA62 ; [*144F.0020.0002] # XIANGQI RED ELEPHANT +1FA63 ; [*1450.0020.0002] # XIANGQI RED HORSE +1FA64 ; [*1451.0020.0002] # XIANGQI RED CHARIOT +1FA65 ; [*1452.0020.0002] # XIANGQI RED CANNON +1FA66 ; [*1453.0020.0002] # XIANGQI RED SOLDIER +1FA67 ; [*1454.0020.0002] # XIANGQI BLACK GENERAL +1FA68 ; [*1455.0020.0002] # XIANGQI BLACK MANDARIN +1FA69 ; [*1456.0020.0002] # XIANGQI BLACK ELEPHANT +1FA6A ; [*1457.0020.0002] # XIANGQI BLACK HORSE +1FA6B ; [*1458.0020.0002] # XIANGQI BLACK CHARIOT +1FA6C ; [*1459.0020.0002] # XIANGQI BLACK CANNON +1FA6D ; [*145A.0020.0002] # XIANGQI BLACK SOLDIER +1FA70 ; [*1865.0020.0002] # BALLET SHOES +1FA71 ; [*1866.0020.0002] # ONE-PIECE SWIMSUIT +1FA72 ; [*1867.0020.0002] # BRIEFS +1FA73 ; [*1868.0020.0002] # SHORTS +1FA74 ; [*1869.0020.0002] # THONG SANDAL +1FA78 ; [*186A.0020.0002] # DROP OF BLOOD +1FA79 ; [*186B.0020.0002] # ADHESIVE BANDAGE +1FA7A ; [*186C.0020.0002] # STETHOSCOPE +1FA80 ; [*186D.0020.0002] # YO-YO +1FA81 ; [*186E.0020.0002] # KITE +1FA82 ; [*186F.0020.0002] # PARACHUTE +1FA83 ; [*1870.0020.0002] # BOOMERANG +1FA84 ; [*1871.0020.0002] # MAGIC WAND +1FA85 ; [*1872.0020.0002] # PINATA +1FA86 ; [*1873.0020.0002] # NESTING DOLLS +1FA90 ; [*1874.0020.0002] # RINGED PLANET +1FA91 ; [*1875.0020.0002] # CHAIR +1FA92 ; [*1876.0020.0002] # RAZOR +1FA93 ; [*1877.0020.0002] # AXE +1FA94 ; [*1878.0020.0002] # DIYA LAMP +1FA95 ; [*1879.0020.0002] # BANJO +1FA96 ; [*187A.0020.0002] # MILITARY HELMET +1FA97 ; [*187B.0020.0002] # ACCORDION +1FA98 ; [*187C.0020.0002] # LONG DRUM +1FA99 ; [*187D.0020.0002] # COIN +1FA9A ; [*187E.0020.0002] # CARPENTRY SAW +1FA9B ; [*187F.0020.0002] # SCREWDRIVER +1FA9C ; [*1880.0020.0002] # LADDER +1FA9D ; [*1881.0020.0002] # HOOK +1FA9E ; [*1882.0020.0002] # MIRROR +1FA9F ; [*1883.0020.0002] # WINDOW +1FAA0 ; [*1884.0020.0002] # PLUNGER +1FAA1 ; [*1885.0020.0002] # SEWING NEEDLE +1FAA2 ; [*1886.0020.0002] # KNOT +1FAA3 ; [*1887.0020.0002] # BUCKET +1FAA4 ; [*1888.0020.0002] # MOUSE TRAP +1FAA5 ; [*1889.0020.0002] # TOOTHBRUSH +1FAA6 ; [*188A.0020.0002] # HEADSTONE +1FAA7 ; [*188B.0020.0002] # PLACARD +1FAA8 ; [*188C.0020.0002] # ROCK +1FAB0 ; [*188D.0020.0002] # FLY +1FAB1 ; [*188E.0020.0002] # WORM +1FAB2 ; [*188F.0020.0002] # BEETLE +1FAB3 ; [*1890.0020.0002] # COCKROACH +1FAB4 ; [*1891.0020.0002] # POTTED PLANT +1FAB5 ; [*1892.0020.0002] # WOOD +1FAB6 ; [*1893.0020.0002] # FEATHER +1FAC0 ; [*1894.0020.0002] # ANATOMICAL HEART +1FAC1 ; [*1895.0020.0002] # LUNGS +1FAC2 ; [*1896.0020.0002] # PEOPLE HUGGING +1FAD0 ; [*1897.0020.0002] # BLUEBERRIES +1FAD1 ; [*1898.0020.0002] # BELL PEPPER +1FAD2 ; [*1899.0020.0002] # OLIVE +1FAD3 ; [*189A.0020.0002] # FLATBREAD +1FAD4 ; [*189B.0020.0002] # TAMALE +1FAD5 ; [*189C.0020.0002] # FONDUE +1FAD6 ; [*189D.0020.0002] # TEAPOT +1FB00 ; [*0969.0020.0002] # BLOCK SEXTANT-1 +1FB01 ; [*096A.0020.0002] # BLOCK SEXTANT-2 +1FB02 ; [*096B.0020.0002] # BLOCK SEXTANT-12 +1FB03 ; [*096C.0020.0002] # BLOCK SEXTANT-3 +1FB04 ; [*096D.0020.0002] # BLOCK SEXTANT-13 +1FB05 ; [*096E.0020.0002] # BLOCK SEXTANT-23 +1FB06 ; [*096F.0020.0002] # BLOCK SEXTANT-123 +1FB07 ; [*0970.0020.0002] # BLOCK SEXTANT-4 +1FB08 ; [*0971.0020.0002] # BLOCK SEXTANT-14 +1FB09 ; [*0972.0020.0002] # BLOCK SEXTANT-24 +1FB0A ; [*0973.0020.0002] # BLOCK SEXTANT-124 +1FB0B ; [*0974.0020.0002] # BLOCK SEXTANT-34 +1FB0C ; [*0975.0020.0002] # BLOCK SEXTANT-134 +1FB0D ; [*0976.0020.0002] # BLOCK SEXTANT-234 +1FB0E ; [*0977.0020.0002] # BLOCK SEXTANT-1234 +1FB0F ; [*0978.0020.0002] # BLOCK SEXTANT-5 +1FB10 ; [*0979.0020.0002] # BLOCK SEXTANT-15 +1FB11 ; [*097A.0020.0002] # BLOCK SEXTANT-25 +1FB12 ; [*097B.0020.0002] # BLOCK SEXTANT-125 +1FB13 ; [*097C.0020.0002] # BLOCK SEXTANT-35 +1FB14 ; [*097D.0020.0002] # BLOCK SEXTANT-235 +1FB15 ; [*097E.0020.0002] # BLOCK SEXTANT-1235 +1FB16 ; [*097F.0020.0002] # BLOCK SEXTANT-45 +1FB17 ; [*0980.0020.0002] # BLOCK SEXTANT-145 +1FB18 ; [*0981.0020.0002] # BLOCK SEXTANT-245 +1FB19 ; [*0982.0020.0002] # BLOCK SEXTANT-1245 +1FB1A ; [*0983.0020.0002] # BLOCK SEXTANT-345 +1FB1B ; [*0984.0020.0002] # BLOCK SEXTANT-1345 +1FB1C ; [*0985.0020.0002] # BLOCK SEXTANT-2345 +1FB1D ; [*0986.0020.0002] # BLOCK SEXTANT-12345 +1FB1E ; [*0987.0020.0002] # BLOCK SEXTANT-6 +1FB1F ; [*0988.0020.0002] # BLOCK SEXTANT-16 +1FB20 ; [*0989.0020.0002] # BLOCK SEXTANT-26 +1FB21 ; [*098A.0020.0002] # BLOCK SEXTANT-126 +1FB22 ; [*098B.0020.0002] # BLOCK SEXTANT-36 +1FB23 ; [*098C.0020.0002] # BLOCK SEXTANT-136 +1FB24 ; [*098D.0020.0002] # BLOCK SEXTANT-236 +1FB25 ; [*098E.0020.0002] # BLOCK SEXTANT-1236 +1FB26 ; [*098F.0020.0002] # BLOCK SEXTANT-46 +1FB27 ; [*0990.0020.0002] # BLOCK SEXTANT-146 +1FB28 ; [*0991.0020.0002] # BLOCK SEXTANT-1246 +1FB29 ; [*0992.0020.0002] # BLOCK SEXTANT-346 +1FB2A ; [*0993.0020.0002] # BLOCK SEXTANT-1346 +1FB2B ; [*0994.0020.0002] # BLOCK SEXTANT-2346 +1FB2C ; [*0995.0020.0002] # BLOCK SEXTANT-12346 +1FB2D ; [*0996.0020.0002] # BLOCK SEXTANT-56 +1FB2E ; [*0997.0020.0002] # BLOCK SEXTANT-156 +1FB2F ; [*0998.0020.0002] # BLOCK SEXTANT-256 +1FB30 ; [*0999.0020.0002] # BLOCK SEXTANT-1256 +1FB31 ; [*099A.0020.0002] # BLOCK SEXTANT-356 +1FB32 ; [*099B.0020.0002] # BLOCK SEXTANT-1356 +1FB33 ; [*099C.0020.0002] # BLOCK SEXTANT-2356 +1FB34 ; [*099D.0020.0002] # BLOCK SEXTANT-12356 +1FB35 ; [*099E.0020.0002] # BLOCK SEXTANT-456 +1FB36 ; [*099F.0020.0002] # BLOCK SEXTANT-1456 +1FB37 ; [*09A0.0020.0002] # BLOCK SEXTANT-2456 +1FB38 ; [*09A1.0020.0002] # BLOCK SEXTANT-12456 +1FB39 ; [*09A2.0020.0002] # BLOCK SEXTANT-3456 +1FB3A ; [*09A3.0020.0002] # BLOCK SEXTANT-13456 +1FB3B ; [*09A4.0020.0002] # BLOCK SEXTANT-23456 +1FB3C ; [*09A5.0020.0002] # LOWER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER CENTRE +1FB3D ; [*09A6.0020.0002] # LOWER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER RIGHT +1FB3E ; [*09A7.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER CENTRE +1FB3F ; [*09A8.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER RIGHT +1FB40 ; [*09A9.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER LEFT TO LOWER CENTRE +1FB41 ; [*09AA.0020.0002] # LOWER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER CENTRE +1FB42 ; [*09AB.0020.0002] # LOWER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER RIGHT +1FB43 ; [*09AC.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER CENTRE +1FB44 ; [*09AD.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER RIGHT +1FB45 ; [*09AE.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER LEFT TO UPPER CENTRE +1FB46 ; [*09AF.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER MIDDLE RIGHT +1FB47 ; [*09B0.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER CENTRE TO LOWER MIDDLE RIGHT +1FB48 ; [*09B1.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER LEFT TO LOWER MIDDLE RIGHT +1FB49 ; [*09B2.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER CENTRE TO UPPER MIDDLE RIGHT +1FB4A ; [*09B3.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER LEFT TO UPPER MIDDLE RIGHT +1FB4B ; [*09B4.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER CENTRE TO UPPER RIGHT +1FB4C ; [*09B5.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER CENTRE TO UPPER MIDDLE RIGHT +1FB4D ; [*09B6.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER LEFT TO UPPER MIDDLE RIGHT +1FB4E ; [*09B7.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER CENTRE TO LOWER MIDDLE RIGHT +1FB4F ; [*09B8.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER LEFT TO LOWER MIDDLE RIGHT +1FB50 ; [*09B9.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER CENTRE TO LOWER RIGHT +1FB51 ; [*09BA.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER MIDDLE RIGHT +1FB52 ; [*09BB.0020.0002] # UPPER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER CENTRE +1FB53 ; [*09BC.0020.0002] # UPPER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER RIGHT +1FB54 ; [*09BD.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER CENTRE +1FB55 ; [*09BE.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER RIGHT +1FB56 ; [*09BF.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER LEFT TO LOWER CENTRE +1FB57 ; [*09C0.0020.0002] # UPPER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER CENTRE +1FB58 ; [*09C1.0020.0002] # UPPER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER RIGHT +1FB59 ; [*09C2.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER CENTRE +1FB5A ; [*09C3.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER RIGHT +1FB5B ; [*09C4.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER LEFT TO UPPER CENTRE +1FB5C ; [*09C5.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER MIDDLE RIGHT +1FB5D ; [*09C6.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER CENTRE TO LOWER MIDDLE RIGHT +1FB5E ; [*09C7.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER LEFT TO LOWER MIDDLE RIGHT +1FB5F ; [*09C8.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER CENTRE TO UPPER MIDDLE RIGHT +1FB60 ; [*09C9.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER LEFT TO UPPER MIDDLE RIGHT +1FB61 ; [*09CA.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER CENTRE TO UPPER RIGHT +1FB62 ; [*09CB.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER CENTRE TO UPPER MIDDLE RIGHT +1FB63 ; [*09CC.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER LEFT TO UPPER MIDDLE RIGHT +1FB64 ; [*09CD.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER CENTRE TO LOWER MIDDLE RIGHT +1FB65 ; [*09CE.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER LEFT TO LOWER MIDDLE RIGHT +1FB66 ; [*09CF.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER CENTRE TO LOWER RIGHT +1FB67 ; [*09D0.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER MIDDLE RIGHT +1FB68 ; [*09D1.0020.0002] # UPPER AND RIGHT AND LOWER TRIANGULAR THREE QUARTERS BLOCK +1FB69 ; [*09D2.0020.0002] # LEFT AND LOWER AND RIGHT TRIANGULAR THREE QUARTERS BLOCK +1FB6A ; [*09D3.0020.0002] # UPPER AND LEFT AND LOWER TRIANGULAR THREE QUARTERS BLOCK +1FB6B ; [*09D4.0020.0002] # LEFT AND UPPER AND RIGHT TRIANGULAR THREE QUARTERS BLOCK +1FB6C ; [*09D5.0020.0002] # LEFT TRIANGULAR ONE QUARTER BLOCK +1FB6D ; [*09D6.0020.0002] # UPPER TRIANGULAR ONE QUARTER BLOCK +1FB6E ; [*09D7.0020.0002] # RIGHT TRIANGULAR ONE QUARTER BLOCK +1FB6F ; [*09D8.0020.0002] # LOWER TRIANGULAR ONE QUARTER BLOCK +1FB70 ; [*09D9.0020.0002] # VERTICAL ONE EIGHTH BLOCK-2 +1FB71 ; [*09DA.0020.0002] # VERTICAL ONE EIGHTH BLOCK-3 +1FB72 ; [*09DB.0020.0002] # VERTICAL ONE EIGHTH BLOCK-4 +1FB73 ; [*09DC.0020.0002] # VERTICAL ONE EIGHTH BLOCK-5 +1FB74 ; [*09DD.0020.0002] # VERTICAL ONE EIGHTH BLOCK-6 +1FB75 ; [*09DE.0020.0002] # VERTICAL ONE EIGHTH BLOCK-7 +1FB76 ; [*09DF.0020.0002] # HORIZONTAL ONE EIGHTH BLOCK-2 +1FB77 ; [*09E0.0020.0002] # HORIZONTAL ONE EIGHTH BLOCK-3 +1FB78 ; [*09E1.0020.0002] # HORIZONTAL ONE EIGHTH BLOCK-4 +1FB79 ; [*09E2.0020.0002] # HORIZONTAL ONE EIGHTH BLOCK-5 +1FB7A ; [*09E3.0020.0002] # HORIZONTAL ONE EIGHTH BLOCK-6 +1FB7B ; [*09E4.0020.0002] # HORIZONTAL ONE EIGHTH BLOCK-7 +1FB7C ; [*09E5.0020.0002] # LEFT AND LOWER ONE EIGHTH BLOCK +1FB7D ; [*09E6.0020.0002] # LEFT AND UPPER ONE EIGHTH BLOCK +1FB7E ; [*09E7.0020.0002] # RIGHT AND UPPER ONE EIGHTH BLOCK +1FB7F ; [*09E8.0020.0002] # RIGHT AND LOWER ONE EIGHTH BLOCK +1FB80 ; [*09E9.0020.0002] # UPPER AND LOWER ONE EIGHTH BLOCK +1FB81 ; [*09EA.0020.0002] # HORIZONTAL ONE EIGHTH BLOCK-1358 +1FB82 ; [*09EB.0020.0002] # UPPER ONE QUARTER BLOCK +1FB83 ; [*09EC.0020.0002] # UPPER THREE EIGHTHS BLOCK +1FB84 ; [*09ED.0020.0002] # UPPER FIVE EIGHTHS BLOCK +1FB85 ; [*09EE.0020.0002] # UPPER THREE QUARTERS BLOCK +1FB86 ; [*09EF.0020.0002] # UPPER SEVEN EIGHTHS BLOCK +1FB87 ; [*09F0.0020.0002] # RIGHT ONE QUARTER BLOCK +1FB88 ; [*09F1.0020.0002] # RIGHT THREE EIGHTHS BLOCK +1FB89 ; [*09F2.0020.0002] # RIGHT FIVE EIGHTHS BLOCK +1FB8A ; [*09F3.0020.0002] # RIGHT THREE QUARTERS BLOCK +1FB8B ; [*09F4.0020.0002] # RIGHT SEVEN EIGHTHS BLOCK +1FB8C ; [*09F5.0020.0002] # LEFT HALF MEDIUM SHADE +1FB8D ; [*09F6.0020.0002] # RIGHT HALF MEDIUM SHADE +1FB8E ; [*09F7.0020.0002] # UPPER HALF MEDIUM SHADE +1FB8F ; [*09F8.0020.0002] # LOWER HALF MEDIUM SHADE +1FB90 ; [*09F9.0020.0002] # INVERSE MEDIUM SHADE +1FB91 ; [*09FA.0020.0002] # UPPER HALF BLOCK AND LOWER HALF INVERSE MEDIUM SHADE +1FB92 ; [*09FB.0020.0002] # UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK +1FB94 ; [*09FC.0020.0002] # LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK +1FB95 ; [*09FD.0020.0002] # CHECKER BOARD FILL +1FB96 ; [*09FE.0020.0002] # INVERSE CHECKER BOARD FILL +1FB97 ; [*09FF.0020.0002] # HEAVY HORIZONTAL FILL +1FB98 ; [*0A00.0020.0002] # UPPER LEFT TO LOWER RIGHT FILL +1FB99 ; [*0A01.0020.0002] # UPPER RIGHT TO LOWER LEFT FILL +1FB9A ; [*0A02.0020.0002] # UPPER AND LOWER TRIANGULAR HALF BLOCK +1FB9B ; [*0A03.0020.0002] # LEFT AND RIGHT TRIANGULAR HALF BLOCK +1FB9C ; [*0A04.0020.0002] # UPPER LEFT TRIANGULAR MEDIUM SHADE +1FB9D ; [*0A05.0020.0002] # UPPER RIGHT TRIANGULAR MEDIUM SHADE +1FB9E ; [*0A06.0020.0002] # LOWER RIGHT TRIANGULAR MEDIUM SHADE +1FB9F ; [*0A07.0020.0002] # LOWER LEFT TRIANGULAR MEDIUM SHADE +1FBA0 ; [*0A08.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT +1FBA1 ; [*0A09.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT +1FBA2 ; [*0A0A.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO LOWER CENTRE +1FBA3 ; [*0A0B.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL MIDDLE RIGHT TO LOWER CENTRE +1FBA4 ; [*0A0C.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT TO LOWER CENTRE +1FBA5 ; [*0A0D.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT TO LOWER CENTRE +1FBA6 ; [*0A0E.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO LOWER CENTRE TO MIDDLE RIGHT +1FBA7 ; [*0A0F.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO UPPER CENTRE TO MIDDLE RIGHT +1FBA8 ; [*0A10.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT AND MIDDLE RIGHT TO LOWER CENTRE +1FBA9 ; [*0A11.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT AND MIDDLE LEFT TO LOWER CENTRE +1FBAA ; [*0A12.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT TO LOWER CENTRE TO MIDDLE LEFT +1FBAB ; [*0A13.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT TO LOWER CENTRE TO MIDDLE RIGHT +1FBAC ; [*0A14.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO UPPER CENTRE TO MIDDLE RIGHT TO LOWER CENTRE +1FBAD ; [*0A15.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL MIDDLE RIGHT TO UPPER CENTRE TO MIDDLE LEFT TO LOWER CENTRE +1FBAE ; [*0A16.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL DIAMOND +1FBAF ; [*0A17.0020.0002] # BOX DRAWINGS LIGHT HORIZONTAL WITH VERTICAL STROKE +1FBB0 ; [*0A18.0020.0002] # ARROWHEAD-SHAPED POINTER +1FBB1 ; [*0A19.0020.0002] # INVERSE CHECK MARK +1FBB2 ; [*0A1A.0020.0002] # LEFT HALF RUNNING MAN +1FBB3 ; [*0A1B.0020.0002] # RIGHT HALF RUNNING MAN +1FBB4 ; [*0A1C.0020.0002] # INVERSE DOWNWARDS ARROW WITH TIP LEFTWARDS +1FBB5 ; [*0A1D.0020.0002] # LEFTWARDS ARROW AND UPPER AND LOWER ONE EIGHTH BLOCK +1FBB6 ; [*0A1E.0020.0002] # RIGHTWARDS ARROW AND UPPER AND LOWER ONE EIGHTH BLOCK +1FBB7 ; [*0A1F.0020.0002] # DOWNWARDS ARROW AND RIGHT ONE EIGHTH BLOCK +1FBB8 ; [*0A20.0020.0002] # UPWARDS ARROW AND RIGHT ONE EIGHTH BLOCK +1FBB9 ; [*0A21.0020.0002] # LEFT HALF FOLDER +1FBBA ; [*0A22.0020.0002] # RIGHT HALF FOLDER +1FBBB ; [*0A23.0020.0002] # VOIDED GREEK CROSS +1FBBC ; [*0A24.0020.0002] # RIGHT OPEN SQUARED DOT +1FBBD ; [*0A25.0020.0002] # NEGATIVE DIAGONAL CROSS +1FBBE ; [*0A26.0020.0002] # NEGATIVE DIAGONAL MIDDLE RIGHT TO LOWER CENTRE +1FBBF ; [*0A27.0020.0002] # NEGATIVE DIAGONAL DIAMOND +1FBC0 ; [*0A28.0020.0002] # WHITE HEAVY SALTIRE WITH ROUNDED CORNERS +1FBC1 ; [*0A29.0020.0002] # LEFT THIRD WHITE RIGHT POINTING INDEX +1FBC2 ; [*0A2A.0020.0002] # MIDDLE THIRD WHITE RIGHT POINTING INDEX +1FBC3 ; [*0A2B.0020.0002] # RIGHT THIRD WHITE RIGHT POINTING INDEX +1FBC4 ; [*0A2C.0020.0002] # NEGATIVE SQUARED QUESTION MARK +1FBC5 ; [*0A2D.0020.0002] # STICK FIGURE +1FBC6 ; [*0A2E.0020.0002] # STICK FIGURE WITH ARMS RAISED +1FBC7 ; [*0A2F.0020.0002] # STICK FIGURE LEANING LEFT +1FBC8 ; [*0A30.0020.0002] # STICK FIGURE LEANING RIGHT +1FBC9 ; [*0A31.0020.0002] # STICK FIGURE WITH DRESS +1FBCA ; [*0A32.0020.0002] # WHITE UP-POINTING CHEVRON 0332 ; [.0000.0021.0002] # COMBINING LOW LINE 0313 ; [.0000.0022.0002] # COMBINING COMMA ABOVE 0343 ; [.0000.0022.0002] # COMBINING GREEK KORONIS @@ -7905,6 +8667,7 @@ 0487 ; [.0000.0033.0002] # COMBINING CYRILLIC POKRYTIE 0741 ; [.0000.0033.0002] # SYRIAC QUSHSHAYA 0745 ; [.0000.0033.0002] # SYRIAC THREE DOTS ABOVE +0B55 ; [.0000.0033.0002] # ORIYA SIGN OVERLINE 17CB ; [.0000.0033.0002] # KHMER SIGN BANTOC 17CC ; [.0000.0033.0002] # KHMER SIGN ROBAT 17CD ; [.0000.0033.0002] # KHMER SIGN TOANDAKHIAT @@ -7945,6 +8708,14 @@ A67C ; [.0000.0033.0002] # COMBINING CYRILLIC KAVYKA A67D ; [.0000.0033.0002] # COMBINING CYRILLIC PAYEROK 10AE5 ; [.0000.0033.0002] # MANICHAEAN ABBREVIATION MARK ABOVE +10D24 ; [.0000.0033.0002] # HANIFI ROHINGYA SIGN HARBAHAY +10D25 ; [.0000.0033.0002] # HANIFI ROHINGYA SIGN TAHALA +10D26 ; [.0000.0033.0002] # HANIFI ROHINGYA SIGN TANA +10D27 ; [.0000.0033.0002] # HANIFI ROHINGYA SIGN TASSI +10F48 ; [.0000.0033.0002] # SOGDIAN COMBINING DOT ABOVE +10F49 ; [.0000.0033.0002] # SOGDIAN COMBINING TWO DOTS ABOVE +10F4A ; [.0000.0033.0002] # SOGDIAN COMBINING CURVE ABOVE +10F4C ; [.0000.0033.0002] # SOGDIAN COMBINING HOOK ABOVE 1BC9D ; [.0000.0033.0002] # DUPLOYAN THICK LETTER SELECTOR 0316 ; [.0000.0034.0002] # COMBINING GRAVE ACCENT BELOW 0317 ; [.0000.0034.0002] # COMBINING ACUTE ACCENT BELOW @@ -7980,6 +8751,7 @@ 0362 ; [.0000.0034.0002] # COMBINING DOUBLE RIGHTWARDS ARROW BELOW 0742 ; [.0000.0034.0002] # SYRIAC RUKKAKHA 0746 ; [.0000.0034.0002] # SYRIAC THREE DOTS BELOW +07FD ; [.0000.0034.0002] # NKO DANTAYALAN 0859 ; [.0000.0034.0002] # MANDAIC AFFRICATION MARK 085A ; [.0000.0034.0002] # MANDAIC VOCALIZATION MARK 085B ; [.0000.0034.0002] # MANDAIC GEMINATION MARK @@ -8004,6 +8776,13 @@ FE27 ; [.0000.0034.0002] # COMBINING LIGATURE LEFT HALF BELOW 10A0D ; [.0000.0034.0002] # KHAROSHTHI SIGN DOUBLE RING BELOW 10AE6 ; [.0000.0034.0002] # MANICHAEAN ABBREVIATION MARK BELOW +10F46 ; [.0000.0034.0002] # SOGDIAN COMBINING DOT BELOW +10F47 ; [.0000.0034.0002] # SOGDIAN COMBINING TWO DOTS BELOW +10F4B ; [.0000.0034.0002] # SOGDIAN COMBINING CURVE BELOW +10F4D ; [.0000.0034.0002] # SOGDIAN COMBINING HOOK BELOW +10F4E ; [.0000.0034.0002] # SOGDIAN COMBINING LONG HOOK BELOW +10F4F ; [.0000.0034.0002] # SOGDIAN COMBINING RESH BELOW +10F50 ; [.0000.0034.0002] # SOGDIAN COMBINING STROKE BELOW 0336 ; [.0000.0035.0002] # COMBINING LONG STROKE OVERLAY 0337 ; [.0000.0035.0002] # COMBINING SHORT SOLIDUS OVERLAY 20D8 ; [.0000.0035.0002] # COMBINING RING OVERLAY @@ -8142,7 +8921,9 @@ FE7E ; [.0000.0081.001A] # ARABIC SUKUN ISOLATED FORM 0653 ; [.0000.0082.0002] # ARABIC MADDAH ABOVE 0AFC ; [.0000.0082.0002] # GUJARATI SIGN MADDAH +10EAC ; [.0000.0082.0002] # YEZIDI COMBINING MADDA MARK 0654 ; [.0000.0083.0002] # ARABIC HAMZA ABOVE +10EAB ; [.0000.0083.0002] # YEZIDI COMBINING HAMZA MARK 0655 ; [.0000.0084.0002] # ARABIC HAMZA BELOW 065F ; [.0000.0085.0002] # ARABIC WAVY HAMZA BELOW 0656 ; [.0000.0086.0002] # ARABIC SUBSCRIPT ALEF @@ -8225,11 +9006,14 @@ 111CA ; [.0000.00C2.0002] # SHARADA SIGN NUKTA 11236 ; [.0000.00C2.0002] # KHOJKI SIGN NUKTA 112E9 ; [.0000.00C2.0002] # KHUDAWADI SIGN NUKTA +1133B ; [.0000.00C2.0002] # COMBINING BINDU BELOW 1133C ; [.0000.00C2.0002] # GRANTHA SIGN NUKTA 11446 ; [.0000.00C2.0002] # NEWA SIGN NUKTA 114C3 ; [.0000.00C2.0002] # TIRHUTA SIGN NUKTA 115C0 ; [.0000.00C2.0002] # SIDDHAM SIGN NUKTA 116B7 ; [.0000.00C2.0002] # TAKRI SIGN NUKTA +1183A ; [.0000.00C2.0002] # DOGRA SIGN NUKTA +11943 ; [.0000.00C2.0002] # DIVES AKURU SIGN NUKTA 11A33 ; [.0000.00C2.0002] # ZANABAZAR SQUARE FINAL CONSONANT MARK 11D42 ; [.0000.00C2.0002] # MASARAM GONDI SIGN NUKTA 0900 ; [.0000.00C3.0002] # DEVANAGARI SIGN INVERTED CANDRABINDU @@ -8242,6 +9026,7 @@ 0C01 ; [.0000.00C3.0002] # TELUGU SIGN CANDRABINDU 0C81 ; [.0000.00C3.0002] # KANNADA SIGN CANDRABINDU 0D01 ; [.0000.00C3.0002] # MALAYALAM SIGN CANDRABINDU +0D81 ; [.0000.00C3.0002] # SINHALA SIGN CANDRABINDU 1B00 ; [.0000.00C3.0002] # BALINESE SIGN ULU RICEM 1B01 ; [.0000.00C3.0002] # BALINESE SIGN ULU CANDRA A8C5 ; [.0000.00C3.0002] # SAURASHTRA SIGN CANDRABINDU @@ -8250,11 +9035,13 @@ 11080 ; [.0000.00C3.0002] # KAITHI SIGN CANDRABINDU 11100 ; [.0000.00C3.0002] # CHAKMA SIGN CANDRABINDU 11180 ; [.0000.00C3.0002] # SHARADA SIGN CANDRABINDU +111CF ; [.0000.00C3.0002] # SHARADA SIGN INVERTED CANDRABINDU 11301 ; [.0000.00C3.0002] # GRANTHA SIGN CANDRABINDU 11443 ; [.0000.00C3.0002] # NEWA SIGN CANDRABINDU 114BF ; [.0000.00C3.0002] # TIRHUTA SIGN CANDRABINDU 115BC ; [.0000.00C3.0002] # SIDDHAM SIGN CANDRABINDU 11640 ; [.0000.00C3.0002] # MODI SIGN ARDHACANDRA +1193C ; [.0000.00C3.0002] # DIVES AKURU SIGN CANDRABINDU 11A35 ; [.0000.00C3.0002] # ZANABAZAR SQUARE SIGN CANDRABINDU 11A36 ; [.0000.00C3.0002] # ZANABAZAR SQUARE SIGN CANDRABINDU WITH ORNAMENT 11A37 ; [.0000.00C3.0002] # ZANABAZAR SQUARE SIGN CANDRA WITH ORNAMENT @@ -8268,6 +9055,7 @@ 0B02 ; [.0000.00C4.0002] # ORIYA SIGN ANUSVARA 0B82 ; [.0000.00C4.0002] # TAMIL SIGN ANUSVARA 0C02 ; [.0000.00C4.0002] # TELUGU SIGN ANUSVARA +0C04 ; [.0000.00C4.0002] # TELUGU SIGN COMBINING ANUSVARA ABOVE 0C82 ; [.0000.00C4.0002] # KANNADA SIGN ANUSVARA 0D00 ; [.0000.00C4.0002] # MALAYALAM SIGN COMBINING ANUSVARA ABOVE 0D02 ; [.0000.00C4.0002] # MALAYALAM SIGN ANUSVARA @@ -8296,11 +9084,15 @@ 115BD ; [.0000.00C4.0002] # SIDDHAM SIGN ANUSVARA 1163D ; [.0000.00C4.0002] # MODI SIGN ANUSVARA 116AB ; [.0000.00C4.0002] # TAKRI SIGN ANUSVARA +11837 ; [.0000.00C4.0002] # DOGRA SIGN ANUSVARA +1193B ; [.0000.00C4.0002] # DIVES AKURU SIGN ANUSVARA +119DE ; [.0000.00C4.0002] # NANDINAGARI SIGN ANUSVARA 11A38 ; [.0000.00C4.0002] # ZANABAZAR SQUARE SIGN ANUSVARA 11A96 ; [.0000.00C4.0002] # SOYOMBO SIGN ANUSVARA 11C3D ; [.0000.00C4.0002] # BHAIKSUKI SIGN ANUSVARA 11CB5 ; [.0000.00C4.0002] # MARCHEN SIGN ANUSVARA 11D40 ; [.0000.00C4.0002] # MASARAM GONDI SIGN ANUSVARA +11D95 ; [.0000.00C4.0002] # GUNJALA GONDI SIGN ANUSVARA 0903 ; [.0000.00C5.0002] # DEVANAGARI SIGN VISARGA 0983 ; [.0000.00C5.0002] # BENGALI SIGN VISARGA 0A03 ; [.0000.00C5.0002] # GURMUKHI SIGN VISARGA @@ -8330,21502 +9122,22476 @@ 115BE ; [.0000.00C5.0002] # SIDDHAM SIGN VISARGA 1163E ; [.0000.00C5.0002] # MODI SIGN VISARGA 116AC ; [.0000.00C5.0002] # TAKRI SIGN VISARGA +11838 ; [.0000.00C5.0002] # DOGRA SIGN VISARGA +119DF ; [.0000.00C5.0002] # NANDINAGARI SIGN VISARGA 11A39 ; [.0000.00C5.0002] # ZANABAZAR SQUARE SIGN VISARGA 11A97 ; [.0000.00C5.0002] # SOYOMBO SIGN VISARGA 11C3E ; [.0000.00C5.0002] # BHAIKSUKI SIGN VISARGA 11D41 ; [.0000.00C5.0002] # MASARAM GONDI SIGN VISARGA -0A70 ; [.0000.00C6.0002] # GURMUKHI TIPPI -0A71 ; [.0000.00C7.0002] # GURMUKHI ADDAK -1B03 ; [.0000.00C8.0002] # BALINESE SIGN SURANG -A982 ; [.0000.00C9.0002] # JAVANESE SIGN LAYAR -1B81 ; [.0000.00CA.0002] # SUNDANESE SIGN PANGLAYAR -ABEC ; [.0000.00CB.0002] # MEETEI MAYEK LUM IYEK -10A38 ; [.0000.00CC.0002] # KHAROSHTHI SIGN BAR ABOVE -10A39 ; [.0000.00CD.0002] # KHAROSHTHI SIGN CAUDA -10A3A ; [.0000.00CE.0002] # KHAROSHTHI SIGN DOT BELOW -111CB ; [.0000.00CF.0002] # SHARADA VOWEL MODIFIER MARK -111CC ; [.0000.00D0.0002] # SHARADA EXTRA SHORT VOWEL MARK -11A98 ; [.0000.00D1.0002] # SOYOMBO GEMINATION MARK -0E4E ; [.0000.00D2.0002] # THAI CHARACTER YAMAKKAN -0E47 ; [.0000.00D3.0002] # THAI CHARACTER MAITAIKHU -0E48 ; [.0000.00D4.0002] # THAI CHARACTER MAI EK -0E49 ; [.0000.00D5.0002] # THAI CHARACTER MAI THO -0E4A ; [.0000.00D6.0002] # THAI CHARACTER MAI TRI -0E4B ; [.0000.00D7.0002] # THAI CHARACTER MAI CHATTAWA -0E4C ; [.0000.00D8.0002] # THAI CHARACTER THANTHAKHAT -0E4D ; [.0000.00D9.0002] # THAI CHARACTER NIKHAHIT -0EC8 ; [.0000.00DA.0002] # LAO TONE MAI EK -0EC9 ; [.0000.00DB.0002] # LAO TONE MAI THO -0ECA ; [.0000.00DC.0002] # LAO TONE MAI TI -0ECB ; [.0000.00DD.0002] # LAO TONE MAI CATAWA -0ECC ; [.0000.00DE.0002] # LAO CANCELLATION MARK -0ECD ; [.0000.00DF.0002] # LAO NIGGAHITA -AABF ; [.0000.00E0.0002] # TAI VIET TONE MAI EK -AAC1 ; [.0000.00E1.0002] # TAI VIET TONE MAI THO -0F39 ; [.0000.00E2.0002] # TIBETAN MARK TSA -PHRU -A92B ; [.0000.00E3.0002] # KAYAH LI TONE PLOPHU -A92C ; [.0000.00E4.0002] # KAYAH LI TONE CALYA -A92D ; [.0000.00E5.0002] # KAYAH LI TONE CALYA PLOPHU -1037 ; [.0000.00E6.0002] # MYANMAR SIGN DOT BELOW -17C8 ; [.0000.00E7.0002] # KHMER SIGN YUUKALEAPINTU -17C9 ; [.0000.00E8.0002] # KHMER SIGN MUUSIKATOAN -17CA ; [.0000.00E9.0002] # KHMER SIGN TRIISAP -1A75 ; [.0000.00EA.0002] # TAI THAM SIGN TONE-1 -1A76 ; [.0000.00EB.0002] # TAI THAM SIGN TONE-2 -1A77 ; [.0000.00EC.0002] # TAI THAM SIGN KHUEN TONE-3 -1A78 ; [.0000.00ED.0002] # TAI THAM SIGN KHUEN TONE-4 -1A79 ; [.0000.00EE.0002] # TAI THAM SIGN KHUEN TONE-5 -1A7A ; [.0000.00EF.0002] # TAI THAM SIGN RA HAAM -1A7B ; [.0000.00F0.0002] # TAI THAM SIGN MAI SAM -1A7C ; [.0000.00F1.0002] # TAI THAM SIGN KHUEN-LUE KARAN -1939 ; [.0000.00F2.0002] # LIMBU SIGN MUKPHRENG -193A ; [.0000.00F3.0002] # LIMBU SIGN KEMPHRENG -193B ; [.0000.00F4.0002] # LIMBU SIGN SA-I -16B30 ; [.0000.00F5.0002] # PAHAWH HMONG MARK CIM TUB -16B31 ; [.0000.00F6.0002] # PAHAWH HMONG MARK CIM SO -16B32 ; [.0000.00F7.0002] # PAHAWH HMONG MARK CIM KES -16B33 ; [.0000.00F8.0002] # PAHAWH HMONG MARK CIM KHAV -16B34 ; [.0000.00F9.0002] # PAHAWH HMONG MARK CIM SUAM -16B35 ; [.0000.00FA.0002] # PAHAWH HMONG MARK CIM HOM -16B36 ; [.0000.00FB.0002] # PAHAWH HMONG MARK CIM TAUM -302A ; [.0000.00FC.0002] # IDEOGRAPHIC LEVEL TONE MARK -302B ; [.0000.00FD.0002] # IDEOGRAPHIC RISING TONE MARK -302C ; [.0000.00FE.0002] # IDEOGRAPHIC DEPARTING TONE MARK -302D ; [.0000.00FF.0002] # IDEOGRAPHIC ENTERING TONE MARK -302E ; [.0000.0100.0002] # HANGUL SINGLE DOT TONE MARK -302F ; [.0000.0101.0002] # HANGUL DOUBLE DOT TONE MARK -20D0 ; [.0000.0102.0002] # COMBINING LEFT HARPOON ABOVE -20D1 ; [.0000.0103.0002] # COMBINING RIGHT HARPOON ABOVE -20D2 ; [.0000.0104.0002] # COMBINING LONG VERTICAL LINE OVERLAY -20D3 ; [.0000.0104.0002] # COMBINING SHORT VERTICAL LINE OVERLAY -20D4 ; [.0000.0105.0002] # COMBINING ANTICLOCKWISE ARROW ABOVE -20D5 ; [.0000.0106.0002] # COMBINING CLOCKWISE ARROW ABOVE -20D6 ; [.0000.0107.0002] # COMBINING LEFT ARROW ABOVE -20D7 ; [.0000.0108.0002] # COMBINING RIGHT ARROW ABOVE -20DB ; [.0000.0109.0002] # COMBINING THREE DOTS ABOVE -20DC ; [.0000.010A.0002] # COMBINING FOUR DOTS ABOVE -20E1 ; [.0000.010B.0002] # COMBINING LEFT RIGHT ARROW ABOVE -20E6 ; [.0000.010C.0002] # COMBINING DOUBLE VERTICAL STROKE OVERLAY -20E7 ; [.0000.010D.0002] # COMBINING ANNUITY SYMBOL -20E8 ; [.0000.010E.0002] # COMBINING TRIPLE UNDERDOT -20E9 ; [.0000.010F.0002] # COMBINING WIDE BRIDGE ABOVE -101FD ; [.0000.0110.0002] # PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE -02D0 ; [.1C5C.0020.0002] # MODIFIER LETTER TRIANGULAR COLON -02D1 ; [.1C5D.0020.0002] # MODIFIER LETTER HALF TRIANGULAR COLON -0971 ; [.1C5E.0020.0002] # DEVANAGARI SIGN HIGH SPACING DOT -0E46 ; [.1C5F.0020.0002] # THAI CHARACTER MAIYAMOK -0EC6 ; [.1C60.0020.0002] # LAO KO LA -17D7 ; [.1C61.0020.0002] # KHMER SIGN LEK TOO -1AA7 ; [.1C62.0020.0002] # TAI THAM SIGN MAI YAMOK -A9CF ; [.1C63.0020.0002] # JAVANESE PANGRANGKEP -A9E6 ; [.1C64.0020.0002] # MYANMAR MODIFIER LETTER SHAN REDUPLICATION -AA70 ; [.1C65.0020.0002] # MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION -AADD ; [.1C66.0020.0002] # TAI VIET SYMBOL SAM -AAF3 ; [.1C67.0020.0002] # MEETEI MAYEK SYLLABLE REPETITION MARK -AAF4 ; [.1C68.0020.0002] # MEETEI MAYEK WORD REPETITION MARK -16B42 ; [.1C69.0020.0002] # PAHAWH HMONG SIGN VOS NRUA -16B43 ; [.1C6A.0020.0002] # PAHAWH HMONG SIGN IB YAM -3005 ; [.1C6B.0020.0002] # IDEOGRAPHIC ITERATION MARK -303B ; [.1C6C.0020.0002] # VERTICAL IDEOGRAPHIC ITERATION MARK -16FE0 ; [.1C6D.0020.0002] # TANGUT ITERATION MARK -16FE1 ; [.1C6E.0020.0002] # NUSHU ITERATION MARK -3031 ; [.1C6F.0020.0002] # VERTICAL KANA REPEAT MARK -3032 ; [.1C6F.0020.0002][.0000.0037.0002] # VERTICAL KANA REPEAT WITH VOICED SOUND MARK -3033 ; [.1C70.0020.0002] # VERTICAL KANA REPEAT MARK UPPER HALF -3034 ; [.1C70.0020.0002][.0000.0037.0002] # VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF -3035 ; [.1C71.0020.0002] # VERTICAL KANA REPEAT MARK LOWER HALF -309D ; [.1C72.0020.0002] # HIRAGANA ITERATION MARK -309E ; [.1C72.0020.0002][.0000.0037.0002] # HIRAGANA VOICED ITERATION MARK -30FC ; [.1C73.0020.0002] # KATAKANA-HIRAGANA PROLONGED SOUND MARK -FF70 ; [.1C73.0020.0012] # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK -30FD ; [.1C74.0020.0002] # KATAKANA ITERATION MARK -30FE ; [.1C74.0020.0002][.0000.0037.0002] # KATAKANA VOICED ITERATION MARK -00A4 ; [.1C75.0020.0002] # CURRENCY SIGN -00A2 ; [.1C76.0020.0002] # CENT SIGN -FFE0 ; [.1C76.0020.0003] # FULLWIDTH CENT SIGN -0024 ; [.1C77.0020.0002] # DOLLAR SIGN -FF04 ; [.1C77.0020.0003] # FULLWIDTH DOLLAR SIGN -FE69 ; [.1C77.0020.000F] # SMALL DOLLAR SIGN -00A3 ; [.1C78.0020.0002] # POUND SIGN -FFE1 ; [.1C78.0020.0003] # FULLWIDTH POUND SIGN -00A5 ; [.1C79.0020.0002] # YEN SIGN -FFE5 ; [.1C79.0020.0003] # FULLWIDTH YEN SIGN -058F ; [.1C7A.0020.0002] # ARMENIAN DRAM SIGN -060B ; [.1C7B.0020.0002] # AFGHANI SIGN -09F2 ; [.1C7C.0020.0002] # BENGALI RUPEE MARK -09F3 ; [.1C7D.0020.0002] # BENGALI RUPEE SIGN -09FB ; [.1C7E.0020.0002] # BENGALI GANDA MARK -0AF1 ; [.1C7F.0020.0002] # GUJARATI RUPEE SIGN -A838 ; [.1C80.0020.0002] # NORTH INDIC RUPEE MARK -0BF9 ; [.1C81.0020.0002] # TAMIL RUPEE SIGN -0E3F ; [.1C82.0020.0002] # THAI CURRENCY SYMBOL BAHT -17DB ; [.1C83.0020.0002] # KHMER CURRENCY SYMBOL RIEL -20A0 ; [.1C84.0020.0002] # EURO-CURRENCY SIGN -20A1 ; [.1C85.0020.0002] # COLON SIGN -20A2 ; [.1C86.0020.0002] # CRUZEIRO SIGN -20A3 ; [.1C87.0020.0002] # FRENCH FRANC SIGN -20A4 ; [.1C88.0020.0002] # LIRA SIGN -20A5 ; [.1C89.0020.0002] # MILL SIGN -20A6 ; [.1C8A.0020.0002] # NAIRA SIGN -20A7 ; [.1C8B.0020.0002] # PESETA SIGN -20A9 ; [.1C8C.0020.0002] # WON SIGN -FFE6 ; [.1C8C.0020.0003] # FULLWIDTH WON SIGN -20AA ; [.1C8D.0020.0002] # NEW SHEQEL SIGN -20AB ; [.1C8E.0020.0002] # DONG SIGN -20AC ; [.1C8F.0020.0002] # EURO SIGN -20AD ; [.1C90.0020.0002] # KIP SIGN -20AE ; [.1C91.0020.0002] # TUGRIK SIGN -20AF ; [.1C92.0020.0002] # DRACHMA SIGN -20B0 ; [.1C93.0020.0002] # GERMAN PENNY SIGN -20B1 ; [.1C94.0020.0002] # PESO SIGN -20B2 ; [.1C95.0020.0002] # GUARANI SIGN -20B3 ; [.1C96.0020.0002] # AUSTRAL SIGN -20B4 ; [.1C97.0020.0002] # HRYVNIA SIGN -20B5 ; [.1C98.0020.0002] # CEDI SIGN -20B6 ; [.1C99.0020.0002] # LIVRE TOURNOIS SIGN -20B7 ; [.1C9A.0020.0002] # SPESMILO SIGN -20B8 ; [.1C9B.0020.0002] # TENGE SIGN -20B9 ; [.1C9C.0020.0002] # INDIAN RUPEE SIGN -20BA ; [.1C9D.0020.0002] # TURKISH LIRA SIGN -20BB ; [.1C9E.0020.0002] # NORDIC MARK SIGN -20BC ; [.1C9F.0020.0002] # MANAT SIGN -20BD ; [.1CA0.0020.0002] # RUBLE SIGN -20BE ; [.1CA1.0020.0002] # LARI SIGN -20BF ; [.1CA2.0020.0002] # BITCOIN SIGN -0030 ; [.1CA3.0020.0002] # DIGIT ZERO -0660 ; [.1CA3.0020.0002] # ARABIC-INDIC DIGIT ZERO -06F0 ; [.1CA3.0020.0002] # EXTENDED ARABIC-INDIC DIGIT ZERO -07C0 ; [.1CA3.0020.0002] # NKO DIGIT ZERO -0966 ; [.1CA3.0020.0002] # DEVANAGARI DIGIT ZERO -09E6 ; [.1CA3.0020.0002] # BENGALI DIGIT ZERO -0A66 ; [.1CA3.0020.0002] # GURMUKHI DIGIT ZERO -0AE6 ; [.1CA3.0020.0002] # GUJARATI DIGIT ZERO -0B66 ; [.1CA3.0020.0002] # ORIYA DIGIT ZERO -0BE6 ; [.1CA3.0020.0002] # TAMIL DIGIT ZERO -0C66 ; [.1CA3.0020.0002] # TELUGU DIGIT ZERO -0C78 ; [.1CA3.0020.0002] # TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR -0CE6 ; [.1CA3.0020.0002] # KANNADA DIGIT ZERO -0D66 ; [.1CA3.0020.0002] # MALAYALAM DIGIT ZERO -0DE6 ; [.1CA3.0020.0002] # SINHALA LITH DIGIT ZERO -0E50 ; [.1CA3.0020.0002] # THAI DIGIT ZERO -0ED0 ; [.1CA3.0020.0002] # LAO DIGIT ZERO -0F20 ; [.1CA3.0020.0002] # TIBETAN DIGIT ZERO -1040 ; [.1CA3.0020.0002] # MYANMAR DIGIT ZERO -1090 ; [.1CA3.0020.0002] # MYANMAR SHAN DIGIT ZERO -17E0 ; [.1CA3.0020.0002] # KHMER DIGIT ZERO -17F0 ; [.1CA3.0020.0002] # KHMER SYMBOL LEK ATTAK SON -1810 ; [.1CA3.0020.0002] # MONGOLIAN DIGIT ZERO -1946 ; [.1CA3.0020.0002] # LIMBU DIGIT ZERO -19D0 ; [.1CA3.0020.0002] # NEW TAI LUE DIGIT ZERO -1A80 ; [.1CA3.0020.0002] # TAI THAM HORA DIGIT ZERO -1A90 ; [.1CA3.0020.0002] # TAI THAM THAM DIGIT ZERO -1B50 ; [.1CA3.0020.0002] # BALINESE DIGIT ZERO -1BB0 ; [.1CA3.0020.0002] # SUNDANESE DIGIT ZERO -1C40 ; [.1CA3.0020.0002] # LEPCHA DIGIT ZERO -1C50 ; [.1CA3.0020.0002] # OL CHIKI DIGIT ZERO -3007 ; [.1CA3.0020.0002] # IDEOGRAPHIC NUMBER ZERO -A620 ; [.1CA3.0020.0002] # VAI DIGIT ZERO -A8D0 ; [.1CA3.0020.0002] # SAURASHTRA DIGIT ZERO -A900 ; [.1CA3.0020.0002] # KAYAH LI DIGIT ZERO -A9D0 ; [.1CA3.0020.0002] # JAVANESE DIGIT ZERO -A9F0 ; [.1CA3.0020.0002] # MYANMAR TAI LAING DIGIT ZERO -AA50 ; [.1CA3.0020.0002] # CHAM DIGIT ZERO -ABF0 ; [.1CA3.0020.0002] # MEETEI MAYEK DIGIT ZERO -1018A ; [.1CA3.0020.0002] # GREEK ZERO SIGN -104A0 ; [.1CA3.0020.0002] # OSMANYA DIGIT ZERO -11066 ; [.1CA3.0020.0002] # BRAHMI DIGIT ZERO -110F0 ; [.1CA3.0020.0002] # SORA SOMPENG DIGIT ZERO -11136 ; [.1CA3.0020.0002] # CHAKMA DIGIT ZERO -111D0 ; [.1CA3.0020.0002] # SHARADA DIGIT ZERO -112F0 ; [.1CA3.0020.0002] # KHUDAWADI DIGIT ZERO -11450 ; [.1CA3.0020.0002] # NEWA DIGIT ZERO -114D0 ; [.1CA3.0020.0002] # TIRHUTA DIGIT ZERO -11650 ; [.1CA3.0020.0002] # MODI DIGIT ZERO -116C0 ; [.1CA3.0020.0002] # TAKRI DIGIT ZERO -11730 ; [.1CA3.0020.0002] # AHOM DIGIT ZERO -118E0 ; [.1CA3.0020.0002] # WARANG CITI DIGIT ZERO -11C50 ; [.1CA3.0020.0002] # BHAIKSUKI DIGIT ZERO -11D50 ; [.1CA3.0020.0002] # MASARAM GONDI DIGIT ZERO -16A60 ; [.1CA3.0020.0002] # MRO DIGIT ZERO -16B50 ; [.1CA3.0020.0002] # PAHAWH HMONG DIGIT ZERO -1E950 ; [.1CA3.0020.0002] # ADLAM DIGIT ZERO -FF10 ; [.1CA3.0020.0003] # FULLWIDTH DIGIT ZERO -0F33 ; [.1CA3.0020.0004] # TIBETAN DIGIT HALF ZERO -1F100 ; [.1CA3.0020.0004][*0278.0020.0004] # DIGIT ZERO FULL STOP -1F101 ; [.1CA3.0020.0004][*0222.0020.0004] # DIGIT ZERO COMMA -1D7CE ; [.1CA3.0020.0005] # MATHEMATICAL BOLD DIGIT ZERO -1D7D8 ; [.1CA3.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO -1D7E2 ; [.1CA3.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT ZERO -1D7EC ; [.1CA3.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO -1D7F6 ; [.1CA3.0020.0005] # MATHEMATICAL MONOSPACE DIGIT ZERO -24EA ; [.1CA3.0020.0006] # CIRCLED DIGIT ZERO -24FF ; [.1CA3.0020.0006] # NEGATIVE CIRCLED DIGIT ZERO -1F10B ; [.1CA3.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT ZERO -1F10C ; [.1CA3.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO -2070 ; [.1CA3.0020.0014] # SUPERSCRIPT ZERO -2080 ; [.1CA3.0020.0015] # SUBSCRIPT ZERO -2189 ; [.1CA3.0020.001E][*063C.0020.001E][.1CA6.0020.001E] # VULGAR FRACTION ZERO THIRDS -3358 ; [.1CA3.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO -0031 ; [.1CA4.0020.0002] # DIGIT ONE -0661 ; [.1CA4.0020.0002] # ARABIC-INDIC DIGIT ONE -06F1 ; [.1CA4.0020.0002] # EXTENDED ARABIC-INDIC DIGIT ONE -07C1 ; [.1CA4.0020.0002] # NKO DIGIT ONE -0967 ; [.1CA4.0020.0002] # DEVANAGARI DIGIT ONE -09E7 ; [.1CA4.0020.0002] # BENGALI DIGIT ONE -0A67 ; [.1CA4.0020.0002] # GURMUKHI DIGIT ONE -0AE7 ; [.1CA4.0020.0002] # GUJARATI DIGIT ONE -0B67 ; [.1CA4.0020.0002] # ORIYA DIGIT ONE -0BE7 ; [.1CA4.0020.0002] # TAMIL DIGIT ONE -0C67 ; [.1CA4.0020.0002] # TELUGU DIGIT ONE -0C79 ; [.1CA4.0020.0002] # TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR -0C7C ; [.1CA4.0020.0002] # TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR -0CE7 ; [.1CA4.0020.0002] # KANNADA DIGIT ONE -0D67 ; [.1CA4.0020.0002] # MALAYALAM DIGIT ONE -0DE7 ; [.1CA4.0020.0002] # SINHALA LITH DIGIT ONE -0E51 ; [.1CA4.0020.0002] # THAI DIGIT ONE -0ED1 ; [.1CA4.0020.0002] # LAO DIGIT ONE -0F21 ; [.1CA4.0020.0002] # TIBETAN DIGIT ONE -1041 ; [.1CA4.0020.0002] # MYANMAR DIGIT ONE -1091 ; [.1CA4.0020.0002] # MYANMAR SHAN DIGIT ONE -1369 ; [.1CA4.0020.0002] # ETHIOPIC DIGIT ONE -17E1 ; [.1CA4.0020.0002] # KHMER DIGIT ONE -17F1 ; [.1CA4.0020.0002] # KHMER SYMBOL LEK ATTAK MUOY -1811 ; [.1CA4.0020.0002] # MONGOLIAN DIGIT ONE -1947 ; [.1CA4.0020.0002] # LIMBU DIGIT ONE -19D1 ; [.1CA4.0020.0002] # NEW TAI LUE DIGIT ONE -19DA ; [.1CA4.0020.0002] # NEW TAI LUE THAM DIGIT ONE -1A81 ; [.1CA4.0020.0002] # TAI THAM HORA DIGIT ONE -1A91 ; [.1CA4.0020.0002] # TAI THAM THAM DIGIT ONE -1B51 ; [.1CA4.0020.0002] # BALINESE DIGIT ONE -1BB1 ; [.1CA4.0020.0002] # SUNDANESE DIGIT ONE -1C41 ; [.1CA4.0020.0002] # LEPCHA DIGIT ONE -1C51 ; [.1CA4.0020.0002] # OL CHIKI DIGIT ONE -3021 ; [.1CA4.0020.0002] # HANGZHOU NUMERAL ONE -A621 ; [.1CA4.0020.0002] # VAI DIGIT ONE -A8D1 ; [.1CA4.0020.0002] # SAURASHTRA DIGIT ONE -A901 ; [.1CA4.0020.0002] # KAYAH LI DIGIT ONE -A9D1 ; [.1CA4.0020.0002] # JAVANESE DIGIT ONE -A9F1 ; [.1CA4.0020.0002] # MYANMAR TAI LAING DIGIT ONE -AA51 ; [.1CA4.0020.0002] # CHAM DIGIT ONE -ABF1 ; [.1CA4.0020.0002] # MEETEI MAYEK DIGIT ONE -10107 ; [.1CA4.0020.0002] # AEGEAN NUMBER ONE -10142 ; [.1CA4.0020.0002] # GREEK ACROPHONIC ATTIC ONE DRACHMA -10158 ; [.1CA4.0020.0002] # GREEK ACROPHONIC HERAEUM ONE PLETHRON -10159 ; [.1CA4.0020.0002] # GREEK ACROPHONIC THESPIAN ONE -1015A ; [.1CA4.0020.0002] # GREEK ACROPHONIC HERMIONIAN ONE -102E1 ; [.1CA4.0020.0002] # COPTIC EPACT DIGIT ONE -10320 ; [.1CA4.0020.0002] # OLD ITALIC NUMERAL ONE -103D1 ; [.1CA4.0020.0002] # OLD PERSIAN NUMBER ONE -104A1 ; [.1CA4.0020.0002] # OSMANYA DIGIT ONE -10858 ; [.1CA4.0020.0002] # IMPERIAL ARAMAIC NUMBER ONE -10879 ; [.1CA4.0020.0002] # PALMYRENE NUMBER ONE -108A7 ; [.1CA4.0020.0002] # NABATAEAN NUMBER ONE -108FB ; [.1CA4.0020.0002] # HATRAN NUMBER ONE -10916 ; [.1CA4.0020.0002] # PHOENICIAN NUMBER ONE -109C0 ; [.1CA4.0020.0002] # MEROITIC CURSIVE NUMBER ONE -10A40 ; [.1CA4.0020.0002] # KHAROSHTHI DIGIT ONE -10A7D ; [.1CA4.0020.0002] # OLD SOUTH ARABIAN NUMBER ONE -10A9D ; [.1CA4.0020.0002] # OLD NORTH ARABIAN NUMBER ONE -10AEB ; [.1CA4.0020.0002] # MANICHAEAN NUMBER ONE -10B58 ; [.1CA4.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER ONE -10B78 ; [.1CA4.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER ONE -10BA9 ; [.1CA4.0020.0002] # PSALTER PAHLAVI NUMBER ONE -10CFA ; [.1CA4.0020.0002] # OLD HUNGARIAN NUMBER ONE -10E60 ; [.1CA4.0020.0002] # RUMI DIGIT ONE -11052 ; [.1CA4.0020.0002] # BRAHMI NUMBER ONE -11067 ; [.1CA4.0020.0002] # BRAHMI DIGIT ONE -110F1 ; [.1CA4.0020.0002] # SORA SOMPENG DIGIT ONE -11137 ; [.1CA4.0020.0002] # CHAKMA DIGIT ONE -111D1 ; [.1CA4.0020.0002] # SHARADA DIGIT ONE -111E1 ; [.1CA4.0020.0002] # SINHALA ARCHAIC DIGIT ONE -112F1 ; [.1CA4.0020.0002] # KHUDAWADI DIGIT ONE -11451 ; [.1CA4.0020.0002] # NEWA DIGIT ONE -114D1 ; [.1CA4.0020.0002] # TIRHUTA DIGIT ONE -11651 ; [.1CA4.0020.0002] # MODI DIGIT ONE -116C1 ; [.1CA4.0020.0002] # TAKRI DIGIT ONE -11731 ; [.1CA4.0020.0002] # AHOM DIGIT ONE -118E1 ; [.1CA4.0020.0002] # WARANG CITI DIGIT ONE -11C51 ; [.1CA4.0020.0002] # BHAIKSUKI DIGIT ONE -11C5A ; [.1CA4.0020.0002] # BHAIKSUKI NUMBER ONE -11D51 ; [.1CA4.0020.0002] # MASARAM GONDI DIGIT ONE -12415 ; [.1CA4.0020.0002] # CUNEIFORM NUMERIC SIGN ONE GESH2 -1241E ; [.1CA4.0020.0002] # CUNEIFORM NUMERIC SIGN ONE GESHU -1242C ; [.1CA4.0020.0002] # CUNEIFORM NUMERIC SIGN ONE SHARU -12434 ; [.1CA4.0020.0002] # CUNEIFORM NUMERIC SIGN ONE BURU -1244F ; [.1CA4.0020.0002] # CUNEIFORM NUMERIC SIGN ONE BAN2 -12458 ; [.1CA4.0020.0002] # CUNEIFORM NUMERIC SIGN ONE ESHE3 -16A61 ; [.1CA4.0020.0002] # MRO DIGIT ONE -16B51 ; [.1CA4.0020.0002] # PAHAWH HMONG DIGIT ONE -1D360 ; [.1CA4.0020.0002] # COUNTING ROD UNIT DIGIT ONE -1E8C7 ; [.1CA4.0020.0002] # MENDE KIKAKUI DIGIT ONE -1E951 ; [.1CA4.0020.0002] # ADLAM DIGIT ONE -FF11 ; [.1CA4.0020.0003] # FULLWIDTH DIGIT ONE -0F2A ; [.1CA4.0020.0004] # TIBETAN DIGIT HALF ONE -2474 ; [*0318.0020.0004][.1CA4.0020.0004][*0319.0020.0004] # PARENTHESIZED DIGIT ONE -2488 ; [.1CA4.0020.0004][*0278.0020.0004] # DIGIT ONE FULL STOP -1F102 ; [.1CA4.0020.0004][*0222.0020.0004] # DIGIT ONE COMMA -1D7CF ; [.1CA4.0020.0005] # MATHEMATICAL BOLD DIGIT ONE -1D7D9 ; [.1CA4.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT ONE -1D7E3 ; [.1CA4.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT ONE -1D7ED ; [.1CA4.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT ONE -1D7F7 ; [.1CA4.0020.0005] # MATHEMATICAL MONOSPACE DIGIT ONE -2460 ; [.1CA4.0020.0006] # CIRCLED DIGIT ONE -24F5 ; [.1CA4.0020.0006] # DOUBLE CIRCLED DIGIT ONE -2776 ; [.1CA4.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT ONE -2780 ; [.1CA4.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT ONE -278A ; [.1CA4.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE -00B9 ; [.1CA4.0020.0014] # SUPERSCRIPT ONE -2081 ; [.1CA4.0020.0015] # SUBSCRIPT ONE -215F ; [.1CA4.0020.001E][*063C.0020.001E] # FRACTION NUMERATOR ONE -247D ; [*0318.0020.0004][.1CA4.0020.0004][.1CA3.0020.0004][*0319.0020.0004] # PARENTHESIZED NUMBER TEN -2491 ; [.1CA4.0020.0004][.1CA3.0020.0004][*0278.0020.0004] # NUMBER TEN FULL STOP -2469 ; [.1CA4.0020.0006][.1CA3.0020.0006] # CIRCLED NUMBER TEN -24FE ; [.1CA4.0020.0006][.1CA3.0020.0006] # DOUBLE CIRCLED NUMBER TEN -277F ; [.1CA4.0020.0006][.1CA3.0020.0006] # DINGBAT NEGATIVE CIRCLED NUMBER TEN -2789 ; [.1CA4.0020.0006][.1CA3.0020.0006] # DINGBAT CIRCLED SANS-SERIF NUMBER TEN -2793 ; [.1CA4.0020.0006][.1CA3.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN -3248 ; [.1CA4.0020.0006][.1CA3.0020.0006] # CIRCLED NUMBER TEN ON BLACK SQUARE -33E9 ; [.1CA4.0020.0004][.1CA3.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN -32C9 ; [.1CA4.0020.0004][.1CA3.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER -3362 ; [.1CA4.0020.0004][.1CA3.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN -247E ; [*0318.0020.0004][.1CA4.0020.0004][.1CA4.0020.0004][*0319.0020.0004] # PARENTHESIZED NUMBER ELEVEN -2492 ; [.1CA4.0020.0004][.1CA4.0020.0004][*0278.0020.0004] # NUMBER ELEVEN FULL STOP -246A ; [.1CA4.0020.0006][.1CA4.0020.0006] # CIRCLED NUMBER ELEVEN -24EB ; [.1CA4.0020.0006][.1CA4.0020.0006] # NEGATIVE CIRCLED NUMBER ELEVEN -2152 ; [.1CA4.0020.001E][*063C.0020.001E][.1CA4.0020.001E][.1CA3.0020.001E] # VULGAR FRACTION ONE TENTH -33EA ; [.1CA4.0020.0004][.1CA4.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN -32CA ; [.1CA4.0020.0004][.1CA4.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER -3363 ; [.1CA4.0020.0004][.1CA4.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN -247F ; [*0318.0020.0004][.1CA4.0020.0004][.1CA5.0020.0004][*0319.0020.0004] # PARENTHESIZED NUMBER TWELVE -2493 ; [.1CA4.0020.0004][.1CA5.0020.0004][*0278.0020.0004] # NUMBER TWELVE FULL STOP -246B ; [.1CA4.0020.0006][.1CA5.0020.0006] # CIRCLED NUMBER TWELVE -24EC ; [.1CA4.0020.0006][.1CA5.0020.0006] # NEGATIVE CIRCLED NUMBER TWELVE -00BD ; [.1CA4.0020.001E][*063C.0020.001E][.1CA5.0020.001E] # VULGAR FRACTION ONE HALF -1F1A4 ; [.1CA4.0020.001C][.1CA5.0020.001C][.1CA3.0020.001C][.1E72.0020.001D] # SQUARED ONE HUNDRED TWENTY P -33EB ; [.1CA4.0020.0004][.1CA5.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE -32CB ; [.1CA4.0020.0004][.1CA5.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER -3364 ; [.1CA4.0020.0004][.1CA5.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE -2480 ; [*0318.0020.0004][.1CA4.0020.0004][.1CA6.0020.0004][*0319.0020.0004] # PARENTHESIZED NUMBER THIRTEEN -2494 ; [.1CA4.0020.0004][.1CA6.0020.0004][*0278.0020.0004] # NUMBER THIRTEEN FULL STOP -246C ; [.1CA4.0020.0006][.1CA6.0020.0006] # CIRCLED NUMBER THIRTEEN -24ED ; [.1CA4.0020.0006][.1CA6.0020.0006] # NEGATIVE CIRCLED NUMBER THIRTEEN -2153 ; [.1CA4.0020.001E][*063C.0020.001E][.1CA6.0020.001E] # VULGAR FRACTION ONE THIRD -33EC ; [.1CA4.0020.0004][.1CA6.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN -3365 ; [.1CA4.0020.0004][.1CA6.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN -2481 ; [*0318.0020.0004][.1CA4.0020.0004][.1CA7.0020.0004][*0319.0020.0004] # PARENTHESIZED NUMBER FOURTEEN -2495 ; [.1CA4.0020.0004][.1CA7.0020.0004][*0278.0020.0004] # NUMBER FOURTEEN FULL STOP -246D ; [.1CA4.0020.0006][.1CA7.0020.0006] # CIRCLED NUMBER FOURTEEN -24EE ; [.1CA4.0020.0006][.1CA7.0020.0006] # NEGATIVE CIRCLED NUMBER FOURTEEN -00BC ; [.1CA4.0020.001E][*063C.0020.001E][.1CA7.0020.001E] # VULGAR FRACTION ONE QUARTER -33ED ; [.1CA4.0020.0004][.1CA7.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN -3366 ; [.1CA4.0020.0004][.1CA7.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN -2482 ; [*0318.0020.0004][.1CA4.0020.0004][.1CA8.0020.0004][*0319.0020.0004] # PARENTHESIZED NUMBER FIFTEEN -2496 ; [.1CA4.0020.0004][.1CA8.0020.0004][*0278.0020.0004] # NUMBER FIFTEEN FULL STOP -246E ; [.1CA4.0020.0006][.1CA8.0020.0006] # CIRCLED NUMBER FIFTEEN -24EF ; [.1CA4.0020.0006][.1CA8.0020.0006] # NEGATIVE CIRCLED NUMBER FIFTEEN -2155 ; [.1CA4.0020.001E][*063C.0020.001E][.1CA8.0020.001E] # VULGAR FRACTION ONE FIFTH -33EE ; [.1CA4.0020.0004][.1CA8.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN -3367 ; [.1CA4.0020.0004][.1CA8.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN -2483 ; [*0318.0020.0004][.1CA4.0020.0004][.1CA9.0020.0004][*0319.0020.0004] # PARENTHESIZED NUMBER SIXTEEN -2497 ; [.1CA4.0020.0004][.1CA9.0020.0004][*0278.0020.0004] # NUMBER SIXTEEN FULL STOP -246F ; [.1CA4.0020.0006][.1CA9.0020.0006] # CIRCLED NUMBER SIXTEEN -24F0 ; [.1CA4.0020.0006][.1CA9.0020.0006] # NEGATIVE CIRCLED NUMBER SIXTEEN -2159 ; [.1CA4.0020.001E][*063C.0020.001E][.1CA9.0020.001E] # VULGAR FRACTION ONE SIXTH -33EF ; [.1CA4.0020.0004][.1CA9.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN -3368 ; [.1CA4.0020.0004][.1CA9.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN -2484 ; [*0318.0020.0004][.1CA4.0020.0004][.1CAA.0020.0004][*0319.0020.0004] # PARENTHESIZED NUMBER SEVENTEEN -2498 ; [.1CA4.0020.0004][.1CAA.0020.0004][*0278.0020.0004] # NUMBER SEVENTEEN FULL STOP -2470 ; [.1CA4.0020.0006][.1CAA.0020.0006] # CIRCLED NUMBER SEVENTEEN -24F1 ; [.1CA4.0020.0006][.1CAA.0020.0006] # NEGATIVE CIRCLED NUMBER SEVENTEEN -2150 ; [.1CA4.0020.001E][*063C.0020.001E][.1CAA.0020.001E] # VULGAR FRACTION ONE SEVENTH -33F0 ; [.1CA4.0020.0004][.1CAA.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN -3369 ; [.1CA4.0020.0004][.1CAA.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN -2485 ; [*0318.0020.0004][.1CA4.0020.0004][.1CAB.0020.0004][*0319.0020.0004] # PARENTHESIZED NUMBER EIGHTEEN -2499 ; [.1CA4.0020.0004][.1CAB.0020.0004][*0278.0020.0004] # NUMBER EIGHTEEN FULL STOP -2471 ; [.1CA4.0020.0006][.1CAB.0020.0006] # CIRCLED NUMBER EIGHTEEN -24F2 ; [.1CA4.0020.0006][.1CAB.0020.0006] # NEGATIVE CIRCLED NUMBER EIGHTEEN -215B ; [.1CA4.0020.001E][*063C.0020.001E][.1CAB.0020.001E] # VULGAR FRACTION ONE EIGHTH -33F1 ; [.1CA4.0020.0004][.1CAB.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN -336A ; [.1CA4.0020.0004][.1CAB.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN -2486 ; [*0318.0020.0004][.1CA4.0020.0004][.1CAC.0020.0004][*0319.0020.0004] # PARENTHESIZED NUMBER NINETEEN -249A ; [.1CA4.0020.0004][.1CAC.0020.0004][*0278.0020.0004] # NUMBER NINETEEN FULL STOP -2472 ; [.1CA4.0020.0006][.1CAC.0020.0006] # CIRCLED NUMBER NINETEEN -24F3 ; [.1CA4.0020.0006][.1CAC.0020.0006] # NEGATIVE CIRCLED NUMBER NINETEEN -2151 ; [.1CA4.0020.001E][*063C.0020.001E][.1CAC.0020.001E] # VULGAR FRACTION ONE NINTH -33F2 ; [.1CA4.0020.0004][.1CAC.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN -336B ; [.1CA4.0020.0004][.1CAC.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN -33E0 ; [.1CA4.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE -32C0 ; [.1CA4.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY -3359 ; [.1CA4.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE -0032 ; [.1CA5.0020.0002] # DIGIT TWO -0662 ; [.1CA5.0020.0002] # ARABIC-INDIC DIGIT TWO -06F2 ; [.1CA5.0020.0002] # EXTENDED ARABIC-INDIC DIGIT TWO -07C2 ; [.1CA5.0020.0002] # NKO DIGIT TWO -0968 ; [.1CA5.0020.0002] # DEVANAGARI DIGIT TWO -09E8 ; [.1CA5.0020.0002] # BENGALI DIGIT TWO -0A68 ; [.1CA5.0020.0002] # GURMUKHI DIGIT TWO -0AE8 ; [.1CA5.0020.0002] # GUJARATI DIGIT TWO -0B68 ; [.1CA5.0020.0002] # ORIYA DIGIT TWO -0BE8 ; [.1CA5.0020.0002] # TAMIL DIGIT TWO -0C68 ; [.1CA5.0020.0002] # TELUGU DIGIT TWO -0C7A ; [.1CA5.0020.0002] # TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR -0C7D ; [.1CA5.0020.0002] # TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR -0CE8 ; [.1CA5.0020.0002] # KANNADA DIGIT TWO -0D68 ; [.1CA5.0020.0002] # MALAYALAM DIGIT TWO -0DE8 ; [.1CA5.0020.0002] # SINHALA LITH DIGIT TWO -0E52 ; [.1CA5.0020.0002] # THAI DIGIT TWO -0ED2 ; [.1CA5.0020.0002] # LAO DIGIT TWO -0F22 ; [.1CA5.0020.0002] # TIBETAN DIGIT TWO -1042 ; [.1CA5.0020.0002] # MYANMAR DIGIT TWO -1092 ; [.1CA5.0020.0002] # MYANMAR SHAN DIGIT TWO -136A ; [.1CA5.0020.0002] # ETHIOPIC DIGIT TWO -17E2 ; [.1CA5.0020.0002] # KHMER DIGIT TWO -17F2 ; [.1CA5.0020.0002] # KHMER SYMBOL LEK ATTAK PII -1812 ; [.1CA5.0020.0002] # MONGOLIAN DIGIT TWO -1948 ; [.1CA5.0020.0002] # LIMBU DIGIT TWO -19D2 ; [.1CA5.0020.0002] # NEW TAI LUE DIGIT TWO -1A82 ; [.1CA5.0020.0002] # TAI THAM HORA DIGIT TWO -1A92 ; [.1CA5.0020.0002] # TAI THAM THAM DIGIT TWO -1B52 ; [.1CA5.0020.0002] # BALINESE DIGIT TWO -1BB2 ; [.1CA5.0020.0002] # SUNDANESE DIGIT TWO -1C42 ; [.1CA5.0020.0002] # LEPCHA DIGIT TWO -1C52 ; [.1CA5.0020.0002] # OL CHIKI DIGIT TWO -3022 ; [.1CA5.0020.0002] # HANGZHOU NUMERAL TWO -A622 ; [.1CA5.0020.0002] # VAI DIGIT TWO -A8D2 ; [.1CA5.0020.0002] # SAURASHTRA DIGIT TWO -A902 ; [.1CA5.0020.0002] # KAYAH LI DIGIT TWO -A9D2 ; [.1CA5.0020.0002] # JAVANESE DIGIT TWO -A9F2 ; [.1CA5.0020.0002] # MYANMAR TAI LAING DIGIT TWO -AA52 ; [.1CA5.0020.0002] # CHAM DIGIT TWO -ABF2 ; [.1CA5.0020.0002] # MEETEI MAYEK DIGIT TWO -10108 ; [.1CA5.0020.0002] # AEGEAN NUMBER TWO -1015B ; [.1CA5.0020.0002] # GREEK ACROPHONIC EPIDAUREAN TWO -1015C ; [.1CA5.0020.0002] # GREEK ACROPHONIC THESPIAN TWO -1015D ; [.1CA5.0020.0002] # GREEK ACROPHONIC CYRENAIC TWO DRACHMAS -1015E ; [.1CA5.0020.0002] # GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS -102E2 ; [.1CA5.0020.0002] # COPTIC EPACT DIGIT TWO -103D2 ; [.1CA5.0020.0002] # OLD PERSIAN NUMBER TWO -104A2 ; [.1CA5.0020.0002] # OSMANYA DIGIT TWO -10859 ; [.1CA5.0020.0002] # IMPERIAL ARAMAIC NUMBER TWO -1087A ; [.1CA5.0020.0002] # PALMYRENE NUMBER TWO -108A8 ; [.1CA5.0020.0002] # NABATAEAN NUMBER TWO -1091A ; [.1CA5.0020.0002] # PHOENICIAN NUMBER TWO -109C1 ; [.1CA5.0020.0002] # MEROITIC CURSIVE NUMBER TWO -10A41 ; [.1CA5.0020.0002] # KHAROSHTHI DIGIT TWO -10B59 ; [.1CA5.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER TWO -10B79 ; [.1CA5.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER TWO -10BAA ; [.1CA5.0020.0002] # PSALTER PAHLAVI NUMBER TWO -10E61 ; [.1CA5.0020.0002] # RUMI DIGIT TWO -11053 ; [.1CA5.0020.0002] # BRAHMI NUMBER TWO -11068 ; [.1CA5.0020.0002] # BRAHMI DIGIT TWO -110F2 ; [.1CA5.0020.0002] # SORA SOMPENG DIGIT TWO -11138 ; [.1CA5.0020.0002] # CHAKMA DIGIT TWO -111D2 ; [.1CA5.0020.0002] # SHARADA DIGIT TWO -111E2 ; [.1CA5.0020.0002] # SINHALA ARCHAIC DIGIT TWO -112F2 ; [.1CA5.0020.0002] # KHUDAWADI DIGIT TWO -11452 ; [.1CA5.0020.0002] # NEWA DIGIT TWO -114D2 ; [.1CA5.0020.0002] # TIRHUTA DIGIT TWO -11652 ; [.1CA5.0020.0002] # MODI DIGIT TWO -116C2 ; [.1CA5.0020.0002] # TAKRI DIGIT TWO -11732 ; [.1CA5.0020.0002] # AHOM DIGIT TWO -118E2 ; [.1CA5.0020.0002] # WARANG CITI DIGIT TWO -11C52 ; [.1CA5.0020.0002] # BHAIKSUKI DIGIT TWO -11C5B ; [.1CA5.0020.0002] # BHAIKSUKI NUMBER TWO -11D52 ; [.1CA5.0020.0002] # MASARAM GONDI DIGIT TWO -12400 ; [.1CA5.0020.0002] # CUNEIFORM NUMERIC SIGN TWO ASH -12416 ; [.1CA5.0020.0002] # CUNEIFORM NUMERIC SIGN TWO GESH2 -1241F ; [.1CA5.0020.0002] # CUNEIFORM NUMERIC SIGN TWO GESHU -12423 ; [.1CA5.0020.0002] # CUNEIFORM NUMERIC SIGN TWO SHAR2 -1242D ; [.1CA5.0020.0002] # CUNEIFORM NUMERIC SIGN TWO SHARU -12435 ; [.1CA5.0020.0002] # CUNEIFORM NUMERIC SIGN TWO BURU -1244A ; [.1CA5.0020.0002] # CUNEIFORM NUMERIC SIGN TWO ASH TENU -12450 ; [.1CA5.0020.0002] # CUNEIFORM NUMERIC SIGN TWO BAN2 -12456 ; [.1CA5.0020.0002] # CUNEIFORM NUMERIC SIGN NIGIDAMIN -12459 ; [.1CA5.0020.0002] # CUNEIFORM NUMERIC SIGN TWO ESHE3 -16A62 ; [.1CA5.0020.0002] # MRO DIGIT TWO -16B52 ; [.1CA5.0020.0002] # PAHAWH HMONG DIGIT TWO -1D361 ; [.1CA5.0020.0002] # COUNTING ROD UNIT DIGIT TWO -1E8C8 ; [.1CA5.0020.0002] # MENDE KIKAKUI DIGIT TWO -1E952 ; [.1CA5.0020.0002] # ADLAM DIGIT TWO -FF12 ; [.1CA5.0020.0003] # FULLWIDTH DIGIT TWO -0F2B ; [.1CA5.0020.0004] # TIBETAN DIGIT HALF TWO -2475 ; [*0318.0020.0004][.1CA5.0020.0004][*0319.0020.0004] # PARENTHESIZED DIGIT TWO -2489 ; [.1CA5.0020.0004][*0278.0020.0004] # DIGIT TWO FULL STOP -1F103 ; [.1CA5.0020.0004][*0222.0020.0004] # DIGIT TWO COMMA -1D7D0 ; [.1CA5.0020.0005] # MATHEMATICAL BOLD DIGIT TWO -1D7DA ; [.1CA5.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT TWO -1D7E4 ; [.1CA5.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT TWO -1D7EE ; [.1CA5.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT TWO -1D7F8 ; [.1CA5.0020.0005] # MATHEMATICAL MONOSPACE DIGIT TWO -2461 ; [.1CA5.0020.0006] # CIRCLED DIGIT TWO -24F6 ; [.1CA5.0020.0006] # DOUBLE CIRCLED DIGIT TWO -2777 ; [.1CA5.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT TWO -2781 ; [.1CA5.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT TWO -278B ; [.1CA5.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO -00B2 ; [.1CA5.0020.0014] # SUPERSCRIPT TWO -2082 ; [.1CA5.0020.0015] # SUBSCRIPT TWO -2487 ; [*0318.0020.0004][.1CA5.0020.0004][.1CA3.0020.0004][*0319.0020.0004] # PARENTHESIZED NUMBER TWENTY -249B ; [.1CA5.0020.0004][.1CA3.0020.0004][*0278.0020.0004] # NUMBER TWENTY FULL STOP -2473 ; [.1CA5.0020.0006][.1CA3.0020.0006] # CIRCLED NUMBER TWENTY -24F4 ; [.1CA5.0020.0006][.1CA3.0020.0006] # NEGATIVE CIRCLED NUMBER TWENTY -3249 ; [.1CA5.0020.0006][.1CA3.0020.0006] # CIRCLED NUMBER TWENTY ON BLACK SQUARE -33F3 ; [.1CA5.0020.0004][.1CA3.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY -336C ; [.1CA5.0020.0004][.1CA3.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY -3251 ; [.1CA5.0020.0006][.1CA4.0020.0006] # CIRCLED NUMBER TWENTY ONE -33F4 ; [.1CA5.0020.0004][.1CA4.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE -336D ; [.1CA5.0020.0004][.1CA4.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE -3252 ; [.1CA5.0020.0006][.1CA5.0020.0006] # CIRCLED NUMBER TWENTY TWO -1F1A2 ; [.1CA5.0020.001C][.1CA5.0020.001C][*0278.0020.001C][.1CA5.0020.001C] # SQUARED TWENTY-TWO POINT TWO -33F5 ; [.1CA5.0020.0004][.1CA5.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO -336E ; [.1CA5.0020.0004][.1CA5.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO -3253 ; [.1CA5.0020.0006][.1CA6.0020.0006] # CIRCLED NUMBER TWENTY THREE -2154 ; [.1CA5.0020.001E][*063C.0020.001E][.1CA6.0020.001E] # VULGAR FRACTION TWO THIRDS -33F6 ; [.1CA5.0020.0004][.1CA6.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE -336F ; [.1CA5.0020.0004][.1CA6.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE -3254 ; [.1CA5.0020.0006][.1CA7.0020.0006] # CIRCLED NUMBER TWENTY FOUR -33F7 ; [.1CA5.0020.0004][.1CA7.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR -3370 ; [.1CA5.0020.0004][.1CA7.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR -3255 ; [.1CA5.0020.0006][.1CA8.0020.0006] # CIRCLED NUMBER TWENTY FIVE -2156 ; [.1CA5.0020.001E][*063C.0020.001E][.1CA8.0020.001E] # VULGAR FRACTION TWO FIFTHS -33F8 ; [.1CA5.0020.0004][.1CA8.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE -3256 ; [.1CA5.0020.0006][.1CA9.0020.0006] # CIRCLED NUMBER TWENTY SIX -33F9 ; [.1CA5.0020.0004][.1CA9.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX -3257 ; [.1CA5.0020.0006][.1CAA.0020.0006] # CIRCLED NUMBER TWENTY SEVEN -33FA ; [.1CA5.0020.0004][.1CAA.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN -3258 ; [.1CA5.0020.0006][.1CAB.0020.0006] # CIRCLED NUMBER TWENTY EIGHT -33FB ; [.1CA5.0020.0004][.1CAB.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT -3259 ; [.1CA5.0020.0006][.1CAC.0020.0006] # CIRCLED NUMBER TWENTY NINE -33FC ; [.1CA5.0020.0004][.1CAC.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE -1F19D ; [.1CA5.0020.001C][.1DCB.0020.001D] # SQUARED TWO K -1F19C ; [.1CA5.0020.001C][.1E1F.0020.001C][.1CF5.0020.001C][*0209.0020.001C][.1ED7.0020.001D][.1CE0.0020.001C][.1E99.0020.001C] # SQUARED SECOND SCREEN -33E1 ; [.1CA5.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO -32C1 ; [.1CA5.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY -335A ; [.1CA5.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO -0033 ; [.1CA6.0020.0002] # DIGIT THREE -0663 ; [.1CA6.0020.0002] # ARABIC-INDIC DIGIT THREE -06F3 ; [.1CA6.0020.0002] # EXTENDED ARABIC-INDIC DIGIT THREE -07C3 ; [.1CA6.0020.0002] # NKO DIGIT THREE -0969 ; [.1CA6.0020.0002] # DEVANAGARI DIGIT THREE -09E9 ; [.1CA6.0020.0002] # BENGALI DIGIT THREE -0A69 ; [.1CA6.0020.0002] # GURMUKHI DIGIT THREE -0AE9 ; [.1CA6.0020.0002] # GUJARATI DIGIT THREE -0B69 ; [.1CA6.0020.0002] # ORIYA DIGIT THREE -0BE9 ; [.1CA6.0020.0002] # TAMIL DIGIT THREE -0C69 ; [.1CA6.0020.0002] # TELUGU DIGIT THREE -0C7B ; [.1CA6.0020.0002] # TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR -0C7E ; [.1CA6.0020.0002] # TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR -0CE9 ; [.1CA6.0020.0002] # KANNADA DIGIT THREE -0D69 ; [.1CA6.0020.0002] # MALAYALAM DIGIT THREE -0DE9 ; [.1CA6.0020.0002] # SINHALA LITH DIGIT THREE -0E53 ; [.1CA6.0020.0002] # THAI DIGIT THREE -0ED3 ; [.1CA6.0020.0002] # LAO DIGIT THREE -0F23 ; [.1CA6.0020.0002] # TIBETAN DIGIT THREE -1043 ; [.1CA6.0020.0002] # MYANMAR DIGIT THREE -1093 ; [.1CA6.0020.0002] # MYANMAR SHAN DIGIT THREE -136B ; [.1CA6.0020.0002] # ETHIOPIC DIGIT THREE -17E3 ; [.1CA6.0020.0002] # KHMER DIGIT THREE -17F3 ; [.1CA6.0020.0002] # KHMER SYMBOL LEK ATTAK BEI -1813 ; [.1CA6.0020.0002] # MONGOLIAN DIGIT THREE -1949 ; [.1CA6.0020.0002] # LIMBU DIGIT THREE -19D3 ; [.1CA6.0020.0002] # NEW TAI LUE DIGIT THREE -1A83 ; [.1CA6.0020.0002] # TAI THAM HORA DIGIT THREE -1A93 ; [.1CA6.0020.0002] # TAI THAM THAM DIGIT THREE -1B53 ; [.1CA6.0020.0002] # BALINESE DIGIT THREE -1BB3 ; [.1CA6.0020.0002] # SUNDANESE DIGIT THREE -1C43 ; [.1CA6.0020.0002] # LEPCHA DIGIT THREE -1C53 ; [.1CA6.0020.0002] # OL CHIKI DIGIT THREE -3023 ; [.1CA6.0020.0002] # HANGZHOU NUMERAL THREE -A623 ; [.1CA6.0020.0002] # VAI DIGIT THREE -A8D3 ; [.1CA6.0020.0002] # SAURASHTRA DIGIT THREE -A903 ; [.1CA6.0020.0002] # KAYAH LI DIGIT THREE -A9D3 ; [.1CA6.0020.0002] # JAVANESE DIGIT THREE -A9F3 ; [.1CA6.0020.0002] # MYANMAR TAI LAING DIGIT THREE -AA53 ; [.1CA6.0020.0002] # CHAM DIGIT THREE -ABF3 ; [.1CA6.0020.0002] # MEETEI MAYEK DIGIT THREE -10109 ; [.1CA6.0020.0002] # AEGEAN NUMBER THREE -102E3 ; [.1CA6.0020.0002] # COPTIC EPACT DIGIT THREE -104A3 ; [.1CA6.0020.0002] # OSMANYA DIGIT THREE -1085A ; [.1CA6.0020.0002] # IMPERIAL ARAMAIC NUMBER THREE -1087B ; [.1CA6.0020.0002] # PALMYRENE NUMBER THREE -108A9 ; [.1CA6.0020.0002] # NABATAEAN NUMBER THREE -1091B ; [.1CA6.0020.0002] # PHOENICIAN NUMBER THREE -109C2 ; [.1CA6.0020.0002] # MEROITIC CURSIVE NUMBER THREE -10A42 ; [.1CA6.0020.0002] # KHAROSHTHI DIGIT THREE -10B5A ; [.1CA6.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER THREE -10B7A ; [.1CA6.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER THREE -10BAB ; [.1CA6.0020.0002] # PSALTER PAHLAVI NUMBER THREE -10E62 ; [.1CA6.0020.0002] # RUMI DIGIT THREE -11054 ; [.1CA6.0020.0002] # BRAHMI NUMBER THREE -11069 ; [.1CA6.0020.0002] # BRAHMI DIGIT THREE -110F3 ; [.1CA6.0020.0002] # SORA SOMPENG DIGIT THREE -11139 ; [.1CA6.0020.0002] # CHAKMA DIGIT THREE -111D3 ; [.1CA6.0020.0002] # SHARADA DIGIT THREE -111E3 ; [.1CA6.0020.0002] # SINHALA ARCHAIC DIGIT THREE -112F3 ; [.1CA6.0020.0002] # KHUDAWADI DIGIT THREE -11453 ; [.1CA6.0020.0002] # NEWA DIGIT THREE -114D3 ; [.1CA6.0020.0002] # TIRHUTA DIGIT THREE -11653 ; [.1CA6.0020.0002] # MODI DIGIT THREE -116C3 ; [.1CA6.0020.0002] # TAKRI DIGIT THREE -11733 ; [.1CA6.0020.0002] # AHOM DIGIT THREE -118E3 ; [.1CA6.0020.0002] # WARANG CITI DIGIT THREE -11C53 ; [.1CA6.0020.0002] # BHAIKSUKI DIGIT THREE -11C5C ; [.1CA6.0020.0002] # BHAIKSUKI NUMBER THREE -11D53 ; [.1CA6.0020.0002] # MASARAM GONDI DIGIT THREE -12401 ; [.1CA6.0020.0002] # CUNEIFORM NUMERIC SIGN THREE ASH -12408 ; [.1CA6.0020.0002] # CUNEIFORM NUMERIC SIGN THREE DISH -12417 ; [.1CA6.0020.0002] # CUNEIFORM NUMERIC SIGN THREE GESH2 -12420 ; [.1CA6.0020.0002] # CUNEIFORM NUMERIC SIGN THREE GESHU -12424 ; [.1CA6.0020.0002] # CUNEIFORM NUMERIC SIGN THREE SHAR2 -12425 ; [.1CA6.0020.0002] # CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM -1242E ; [.1CA6.0020.0002] # CUNEIFORM NUMERIC SIGN THREE SHARU -1242F ; [.1CA6.0020.0002] # CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM -12436 ; [.1CA6.0020.0002] # CUNEIFORM NUMERIC SIGN THREE BURU -12437 ; [.1CA6.0020.0002] # CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM -1243A ; [.1CA6.0020.0002] # CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16 -1243B ; [.1CA6.0020.0002] # CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21 -1244B ; [.1CA6.0020.0002] # CUNEIFORM NUMERIC SIGN THREE ASH TENU -12451 ; [.1CA6.0020.0002] # CUNEIFORM NUMERIC SIGN THREE BAN2 -12457 ; [.1CA6.0020.0002] # CUNEIFORM NUMERIC SIGN NIGIDAESH -16A63 ; [.1CA6.0020.0002] # MRO DIGIT THREE -16B53 ; [.1CA6.0020.0002] # PAHAWH HMONG DIGIT THREE -1D362 ; [.1CA6.0020.0002] # COUNTING ROD UNIT DIGIT THREE -1E8C9 ; [.1CA6.0020.0002] # MENDE KIKAKUI DIGIT THREE -1E953 ; [.1CA6.0020.0002] # ADLAM DIGIT THREE -FF13 ; [.1CA6.0020.0003] # FULLWIDTH DIGIT THREE -0F2C ; [.1CA6.0020.0004] # TIBETAN DIGIT HALF THREE -2476 ; [*0318.0020.0004][.1CA6.0020.0004][*0319.0020.0004] # PARENTHESIZED DIGIT THREE -248A ; [.1CA6.0020.0004][*0278.0020.0004] # DIGIT THREE FULL STOP -1F104 ; [.1CA6.0020.0004][*0222.0020.0004] # DIGIT THREE COMMA -1D7D1 ; [.1CA6.0020.0005] # MATHEMATICAL BOLD DIGIT THREE -1D7DB ; [.1CA6.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT THREE -1D7E5 ; [.1CA6.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT THREE -1D7EF ; [.1CA6.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT THREE -1D7F9 ; [.1CA6.0020.0005] # MATHEMATICAL MONOSPACE DIGIT THREE -2462 ; [.1CA6.0020.0006] # CIRCLED DIGIT THREE -24F7 ; [.1CA6.0020.0006] # DOUBLE CIRCLED DIGIT THREE -2778 ; [.1CA6.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT THREE -2782 ; [.1CA6.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT THREE -278C ; [.1CA6.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE -00B3 ; [.1CA6.0020.0014] # SUPERSCRIPT THREE -2083 ; [.1CA6.0020.0015] # SUBSCRIPT THREE -324A ; [.1CA6.0020.0006][.1CA3.0020.0006] # CIRCLED NUMBER THIRTY ON BLACK SQUARE -325A ; [.1CA6.0020.0006][.1CA3.0020.0006] # CIRCLED NUMBER THIRTY -33FD ; [.1CA6.0020.0004][.1CA3.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY -325B ; [.1CA6.0020.0006][.1CA4.0020.0006] # CIRCLED NUMBER THIRTY ONE -33FE ; [.1CA6.0020.0004][.1CA4.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE -325C ; [.1CA6.0020.0006][.1CA5.0020.0006] # CIRCLED NUMBER THIRTY TWO -325D ; [.1CA6.0020.0006][.1CA6.0020.0006] # CIRCLED NUMBER THIRTY THREE -325E ; [.1CA6.0020.0006][.1CA7.0020.0006] # CIRCLED NUMBER THIRTY FOUR -00BE ; [.1CA6.0020.001E][*063C.0020.001E][.1CA7.0020.001E] # VULGAR FRACTION THREE QUARTERS -325F ; [.1CA6.0020.0006][.1CA8.0020.0006] # CIRCLED NUMBER THIRTY FIVE -2157 ; [.1CA6.0020.001E][*063C.0020.001E][.1CA8.0020.001E] # VULGAR FRACTION THREE FIFTHS -32B1 ; [.1CA6.0020.0006][.1CA9.0020.0006] # CIRCLED NUMBER THIRTY SIX -32B2 ; [.1CA6.0020.0006][.1CAA.0020.0006] # CIRCLED NUMBER THIRTY SEVEN -32B3 ; [.1CA6.0020.0006][.1CAB.0020.0006] # CIRCLED NUMBER THIRTY EIGHT -215C ; [.1CA6.0020.001E][*063C.0020.001E][.1CAB.0020.001E] # VULGAR FRACTION THREE EIGHTHS -32B4 ; [.1CA6.0020.0006][.1CAC.0020.0006] # CIRCLED NUMBER THIRTY NINE -1F19B ; [.1CA6.0020.001C][.1CF5.0020.001D] # SQUARED THREE D -33E2 ; [.1CA6.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE -32C2 ; [.1CA6.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH -335B ; [.1CA6.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE -0034 ; [.1CA7.0020.0002] # DIGIT FOUR -0664 ; [.1CA7.0020.0002] # ARABIC-INDIC DIGIT FOUR -06F4 ; [.1CA7.0020.0002] # EXTENDED ARABIC-INDIC DIGIT FOUR -07C4 ; [.1CA7.0020.0002] # NKO DIGIT FOUR -096A ; [.1CA7.0020.0002] # DEVANAGARI DIGIT FOUR -09EA ; [.1CA7.0020.0002] # BENGALI DIGIT FOUR -0A6A ; [.1CA7.0020.0002] # GURMUKHI DIGIT FOUR -0AEA ; [.1CA7.0020.0002] # GUJARATI DIGIT FOUR -0B6A ; [.1CA7.0020.0002] # ORIYA DIGIT FOUR -0BEA ; [.1CA7.0020.0002] # TAMIL DIGIT FOUR -0C6A ; [.1CA7.0020.0002] # TELUGU DIGIT FOUR -0CEA ; [.1CA7.0020.0002] # KANNADA DIGIT FOUR -0D6A ; [.1CA7.0020.0002] # MALAYALAM DIGIT FOUR -0DEA ; [.1CA7.0020.0002] # SINHALA LITH DIGIT FOUR -0E54 ; [.1CA7.0020.0002] # THAI DIGIT FOUR -0ED4 ; [.1CA7.0020.0002] # LAO DIGIT FOUR -0F24 ; [.1CA7.0020.0002] # TIBETAN DIGIT FOUR -1044 ; [.1CA7.0020.0002] # MYANMAR DIGIT FOUR -1094 ; [.1CA7.0020.0002] # MYANMAR SHAN DIGIT FOUR -136C ; [.1CA7.0020.0002] # ETHIOPIC DIGIT FOUR -17E4 ; [.1CA7.0020.0002] # KHMER DIGIT FOUR -17F4 ; [.1CA7.0020.0002] # KHMER SYMBOL LEK ATTAK BUON -1814 ; [.1CA7.0020.0002] # MONGOLIAN DIGIT FOUR -194A ; [.1CA7.0020.0002] # LIMBU DIGIT FOUR -19D4 ; [.1CA7.0020.0002] # NEW TAI LUE DIGIT FOUR -1A84 ; [.1CA7.0020.0002] # TAI THAM HORA DIGIT FOUR -1A94 ; [.1CA7.0020.0002] # TAI THAM THAM DIGIT FOUR -1B54 ; [.1CA7.0020.0002] # BALINESE DIGIT FOUR -1BB4 ; [.1CA7.0020.0002] # SUNDANESE DIGIT FOUR -1C44 ; [.1CA7.0020.0002] # LEPCHA DIGIT FOUR -1C54 ; [.1CA7.0020.0002] # OL CHIKI DIGIT FOUR -3024 ; [.1CA7.0020.0002] # HANGZHOU NUMERAL FOUR -A624 ; [.1CA7.0020.0002] # VAI DIGIT FOUR -A8D4 ; [.1CA7.0020.0002] # SAURASHTRA DIGIT FOUR -A904 ; [.1CA7.0020.0002] # KAYAH LI DIGIT FOUR -A9D4 ; [.1CA7.0020.0002] # JAVANESE DIGIT FOUR -A9F4 ; [.1CA7.0020.0002] # MYANMAR TAI LAING DIGIT FOUR -AA54 ; [.1CA7.0020.0002] # CHAM DIGIT FOUR -ABF4 ; [.1CA7.0020.0002] # MEETEI MAYEK DIGIT FOUR -1010A ; [.1CA7.0020.0002] # AEGEAN NUMBER FOUR -102E4 ; [.1CA7.0020.0002] # COPTIC EPACT DIGIT FOUR -104A4 ; [.1CA7.0020.0002] # OSMANYA DIGIT FOUR -1087C ; [.1CA7.0020.0002] # PALMYRENE NUMBER FOUR -108AA ; [.1CA7.0020.0002] # NABATAEAN NUMBER FOUR -108AB ; [.1CA7.0020.0002] # NABATAEAN CRUCIFORM NUMBER FOUR -109C3 ; [.1CA7.0020.0002] # MEROITIC CURSIVE NUMBER FOUR -10A43 ; [.1CA7.0020.0002] # KHAROSHTHI DIGIT FOUR -10B5B ; [.1CA7.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER FOUR -10B7B ; [.1CA7.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER FOUR -10BAC ; [.1CA7.0020.0002] # PSALTER PAHLAVI NUMBER FOUR -10E63 ; [.1CA7.0020.0002] # RUMI DIGIT FOUR -11055 ; [.1CA7.0020.0002] # BRAHMI NUMBER FOUR -1106A ; [.1CA7.0020.0002] # BRAHMI DIGIT FOUR -110F4 ; [.1CA7.0020.0002] # SORA SOMPENG DIGIT FOUR -1113A ; [.1CA7.0020.0002] # CHAKMA DIGIT FOUR -111D4 ; [.1CA7.0020.0002] # SHARADA DIGIT FOUR -111E4 ; [.1CA7.0020.0002] # SINHALA ARCHAIC DIGIT FOUR -112F4 ; [.1CA7.0020.0002] # KHUDAWADI DIGIT FOUR -11454 ; [.1CA7.0020.0002] # NEWA DIGIT FOUR -114D4 ; [.1CA7.0020.0002] # TIRHUTA DIGIT FOUR -11654 ; [.1CA7.0020.0002] # MODI DIGIT FOUR -116C4 ; [.1CA7.0020.0002] # TAKRI DIGIT FOUR -11734 ; [.1CA7.0020.0002] # AHOM DIGIT FOUR -118E4 ; [.1CA7.0020.0002] # WARANG CITI DIGIT FOUR -11C54 ; [.1CA7.0020.0002] # BHAIKSUKI DIGIT FOUR -11C5D ; [.1CA7.0020.0002] # BHAIKSUKI NUMBER FOUR -11D54 ; [.1CA7.0020.0002] # MASARAM GONDI DIGIT FOUR -12402 ; [.1CA7.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR ASH -12409 ; [.1CA7.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR DISH -1240F ; [.1CA7.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR U -12418 ; [.1CA7.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR GESH2 -12421 ; [.1CA7.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR GESHU -12426 ; [.1CA7.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR SHAR2 -12430 ; [.1CA7.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR SHARU -12438 ; [.1CA7.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR BURU -1243C ; [.1CA7.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU -1243D ; [.1CA7.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4 -1243E ; [.1CA7.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A -1243F ; [.1CA7.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B -1244C ; [.1CA7.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR ASH TENU -12452 ; [.1CA7.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR BAN2 -12453 ; [.1CA7.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM -12469 ; [.1CA7.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR U VARIANT FORM -16A64 ; [.1CA7.0020.0002] # MRO DIGIT FOUR -16B54 ; [.1CA7.0020.0002] # PAHAWH HMONG DIGIT FOUR -1D363 ; [.1CA7.0020.0002] # COUNTING ROD UNIT DIGIT FOUR -1E8CA ; [.1CA7.0020.0002] # MENDE KIKAKUI DIGIT FOUR -1E954 ; [.1CA7.0020.0002] # ADLAM DIGIT FOUR -FF14 ; [.1CA7.0020.0003] # FULLWIDTH DIGIT FOUR -0F2D ; [.1CA7.0020.0004] # TIBETAN DIGIT HALF FOUR -2477 ; [*0318.0020.0004][.1CA7.0020.0004][*0319.0020.0004] # PARENTHESIZED DIGIT FOUR -248B ; [.1CA7.0020.0004][*0278.0020.0004] # DIGIT FOUR FULL STOP -1F105 ; [.1CA7.0020.0004][*0222.0020.0004] # DIGIT FOUR COMMA -1D7D2 ; [.1CA7.0020.0005] # MATHEMATICAL BOLD DIGIT FOUR -1D7DC ; [.1CA7.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR -1D7E6 ; [.1CA7.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT FOUR -1D7F0 ; [.1CA7.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR -1D7FA ; [.1CA7.0020.0005] # MATHEMATICAL MONOSPACE DIGIT FOUR -2463 ; [.1CA7.0020.0006] # CIRCLED DIGIT FOUR -24F8 ; [.1CA7.0020.0006] # DOUBLE CIRCLED DIGIT FOUR -2779 ; [.1CA7.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT FOUR -2783 ; [.1CA7.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT FOUR -278D ; [.1CA7.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR -2074 ; [.1CA7.0020.0014] # SUPERSCRIPT FOUR -2084 ; [.1CA7.0020.0015] # SUBSCRIPT FOUR -324B ; [.1CA7.0020.0006][.1CA3.0020.0006] # CIRCLED NUMBER FORTY ON BLACK SQUARE -32B5 ; [.1CA7.0020.0006][.1CA3.0020.0006] # CIRCLED NUMBER FORTY -32B6 ; [.1CA7.0020.0006][.1CA4.0020.0006] # CIRCLED NUMBER FORTY ONE -32B7 ; [.1CA7.0020.0006][.1CA5.0020.0006] # CIRCLED NUMBER FORTY TWO -32B8 ; [.1CA7.0020.0006][.1CA6.0020.0006] # CIRCLED NUMBER FORTY THREE -32B9 ; [.1CA7.0020.0006][.1CA7.0020.0006] # CIRCLED NUMBER FORTY FOUR -32BA ; [.1CA7.0020.0006][.1CA8.0020.0006] # CIRCLED NUMBER FORTY FIVE -2158 ; [.1CA7.0020.001E][*063C.0020.001E][.1CA8.0020.001E] # VULGAR FRACTION FOUR FIFTHS -32BB ; [.1CA7.0020.0006][.1CA9.0020.0006] # CIRCLED NUMBER FORTY SIX -32BC ; [.1CA7.0020.0006][.1CAA.0020.0006] # CIRCLED NUMBER FORTY SEVEN -32BD ; [.1CA7.0020.0006][.1CAB.0020.0006] # CIRCLED NUMBER FORTY EIGHT -32BE ; [.1CA7.0020.0006][.1CAC.0020.0006] # CIRCLED NUMBER FORTY NINE -1F19E ; [.1CA7.0020.001C][.1DCB.0020.001D] # SQUARED FOUR K -33E3 ; [.1CA7.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR -32C3 ; [.1CA7.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL -335C ; [.1CA7.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR -0035 ; [.1CA8.0020.0002] # DIGIT FIVE -0665 ; [.1CA8.0020.0002] # ARABIC-INDIC DIGIT FIVE -06F5 ; [.1CA8.0020.0002] # EXTENDED ARABIC-INDIC DIGIT FIVE -07C5 ; [.1CA8.0020.0002] # NKO DIGIT FIVE -096B ; [.1CA8.0020.0002] # DEVANAGARI DIGIT FIVE -09EB ; [.1CA8.0020.0002] # BENGALI DIGIT FIVE -0A6B ; [.1CA8.0020.0002] # GURMUKHI DIGIT FIVE -0AEB ; [.1CA8.0020.0002] # GUJARATI DIGIT FIVE -0B6B ; [.1CA8.0020.0002] # ORIYA DIGIT FIVE -0BEB ; [.1CA8.0020.0002] # TAMIL DIGIT FIVE -0C6B ; [.1CA8.0020.0002] # TELUGU DIGIT FIVE -0CEB ; [.1CA8.0020.0002] # KANNADA DIGIT FIVE -0D6B ; [.1CA8.0020.0002] # MALAYALAM DIGIT FIVE -0DEB ; [.1CA8.0020.0002] # SINHALA LITH DIGIT FIVE -0E55 ; [.1CA8.0020.0002] # THAI DIGIT FIVE -0ED5 ; [.1CA8.0020.0002] # LAO DIGIT FIVE -0F25 ; [.1CA8.0020.0002] # TIBETAN DIGIT FIVE -1045 ; [.1CA8.0020.0002] # MYANMAR DIGIT FIVE -1095 ; [.1CA8.0020.0002] # MYANMAR SHAN DIGIT FIVE -136D ; [.1CA8.0020.0002] # ETHIOPIC DIGIT FIVE -17E5 ; [.1CA8.0020.0002] # KHMER DIGIT FIVE -17F5 ; [.1CA8.0020.0002] # KHMER SYMBOL LEK ATTAK PRAM -1815 ; [.1CA8.0020.0002] # MONGOLIAN DIGIT FIVE -194B ; [.1CA8.0020.0002] # LIMBU DIGIT FIVE -19D5 ; [.1CA8.0020.0002] # NEW TAI LUE DIGIT FIVE -1A85 ; [.1CA8.0020.0002] # TAI THAM HORA DIGIT FIVE -1A95 ; [.1CA8.0020.0002] # TAI THAM THAM DIGIT FIVE -1B55 ; [.1CA8.0020.0002] # BALINESE DIGIT FIVE -1BB5 ; [.1CA8.0020.0002] # SUNDANESE DIGIT FIVE -1C45 ; [.1CA8.0020.0002] # LEPCHA DIGIT FIVE -1C55 ; [.1CA8.0020.0002] # OL CHIKI DIGIT FIVE -3025 ; [.1CA8.0020.0002] # HANGZHOU NUMERAL FIVE -A625 ; [.1CA8.0020.0002] # VAI DIGIT FIVE -A8D5 ; [.1CA8.0020.0002] # SAURASHTRA DIGIT FIVE -A905 ; [.1CA8.0020.0002] # KAYAH LI DIGIT FIVE -A9D5 ; [.1CA8.0020.0002] # JAVANESE DIGIT FIVE -A9F5 ; [.1CA8.0020.0002] # MYANMAR TAI LAING DIGIT FIVE -AA55 ; [.1CA8.0020.0002] # CHAM DIGIT FIVE -ABF5 ; [.1CA8.0020.0002] # MEETEI MAYEK DIGIT FIVE -1010B ; [.1CA8.0020.0002] # AEGEAN NUMBER FIVE -10143 ; [.1CA8.0020.0002] # GREEK ACROPHONIC ATTIC FIVE -10148 ; [.1CA8.0020.0002] # GREEK ACROPHONIC ATTIC FIVE TALENTS -1014F ; [.1CA8.0020.0002] # GREEK ACROPHONIC ATTIC FIVE STATERS -1015F ; [.1CA8.0020.0002] # GREEK ACROPHONIC TROEZENIAN FIVE -10173 ; [.1CA8.0020.0002] # GREEK ACROPHONIC DELPHIC FIVE MNAS -102E5 ; [.1CA8.0020.0002] # COPTIC EPACT DIGIT FIVE -10321 ; [.1CA8.0020.0002] # OLD ITALIC NUMERAL FIVE -104A5 ; [.1CA8.0020.0002] # OSMANYA DIGIT FIVE -1087D ; [.1CA8.0020.0002] # PALMYRENE NUMBER FIVE -108AC ; [.1CA8.0020.0002] # NABATAEAN NUMBER FIVE -108FC ; [.1CA8.0020.0002] # HATRAN NUMBER FIVE -109C4 ; [.1CA8.0020.0002] # MEROITIC CURSIVE NUMBER FIVE -10AEC ; [.1CA8.0020.0002] # MANICHAEAN NUMBER FIVE -10CFB ; [.1CA8.0020.0002] # OLD HUNGARIAN NUMBER FIVE -10E64 ; [.1CA8.0020.0002] # RUMI DIGIT FIVE -11056 ; [.1CA8.0020.0002] # BRAHMI NUMBER FIVE -1106B ; [.1CA8.0020.0002] # BRAHMI DIGIT FIVE -110F5 ; [.1CA8.0020.0002] # SORA SOMPENG DIGIT FIVE -1113B ; [.1CA8.0020.0002] # CHAKMA DIGIT FIVE -111D5 ; [.1CA8.0020.0002] # SHARADA DIGIT FIVE -111E5 ; [.1CA8.0020.0002] # SINHALA ARCHAIC DIGIT FIVE -112F5 ; [.1CA8.0020.0002] # KHUDAWADI DIGIT FIVE -11455 ; [.1CA8.0020.0002] # NEWA DIGIT FIVE -114D5 ; [.1CA8.0020.0002] # TIRHUTA DIGIT FIVE -11655 ; [.1CA8.0020.0002] # MODI DIGIT FIVE -116C5 ; [.1CA8.0020.0002] # TAKRI DIGIT FIVE -11735 ; [.1CA8.0020.0002] # AHOM DIGIT FIVE -118E5 ; [.1CA8.0020.0002] # WARANG CITI DIGIT FIVE -11C55 ; [.1CA8.0020.0002] # BHAIKSUKI DIGIT FIVE -11C5E ; [.1CA8.0020.0002] # BHAIKSUKI NUMBER FIVE -11D55 ; [.1CA8.0020.0002] # MASARAM GONDI DIGIT FIVE -12403 ; [.1CA8.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE ASH -1240A ; [.1CA8.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE DISH -12410 ; [.1CA8.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE U -12419 ; [.1CA8.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE GESH2 -12422 ; [.1CA8.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE GESHU -12427 ; [.1CA8.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE SHAR2 -12431 ; [.1CA8.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE SHARU -12439 ; [.1CA8.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE BURU -1244D ; [.1CA8.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE ASH TENU -12454 ; [.1CA8.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE BAN2 -12455 ; [.1CA8.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM -1246A ; [.1CA8.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE U VARIANT FORM -16A65 ; [.1CA8.0020.0002] # MRO DIGIT FIVE -16B55 ; [.1CA8.0020.0002] # PAHAWH HMONG DIGIT FIVE -1D364 ; [.1CA8.0020.0002] # COUNTING ROD UNIT DIGIT FIVE -1E8CB ; [.1CA8.0020.0002] # MENDE KIKAKUI DIGIT FIVE -1E955 ; [.1CA8.0020.0002] # ADLAM DIGIT FIVE -FF15 ; [.1CA8.0020.0003] # FULLWIDTH DIGIT FIVE -0F2E ; [.1CA8.0020.0004] # TIBETAN DIGIT HALF FIVE -2478 ; [*0318.0020.0004][.1CA8.0020.0004][*0319.0020.0004] # PARENTHESIZED DIGIT FIVE -248C ; [.1CA8.0020.0004][*0278.0020.0004] # DIGIT FIVE FULL STOP -1F106 ; [.1CA8.0020.0004][*0222.0020.0004] # DIGIT FIVE COMMA -1D7D3 ; [.1CA8.0020.0005] # MATHEMATICAL BOLD DIGIT FIVE -1D7DD ; [.1CA8.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE -1D7E7 ; [.1CA8.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT FIVE -1D7F1 ; [.1CA8.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE -1D7FB ; [.1CA8.0020.0005] # MATHEMATICAL MONOSPACE DIGIT FIVE -2464 ; [.1CA8.0020.0006] # CIRCLED DIGIT FIVE -24F9 ; [.1CA8.0020.0006] # DOUBLE CIRCLED DIGIT FIVE -277A ; [.1CA8.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT FIVE -2784 ; [.1CA8.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT FIVE -278E ; [.1CA8.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE -2075 ; [.1CA8.0020.0014] # SUPERSCRIPT FIVE -2085 ; [.1CA8.0020.0015] # SUBSCRIPT FIVE -324C ; [.1CA8.0020.0006][.1CA3.0020.0006] # CIRCLED NUMBER FIFTY ON BLACK SQUARE -32BF ; [.1CA8.0020.0006][.1CA3.0020.0006] # CIRCLED NUMBER FIFTY -1F1A0 ; [.1CA8.0020.001C][*0278.0020.001C][.1CA4.0020.001C] # SQUARED FIVE POINT ONE -215A ; [.1CA8.0020.001E][*063C.0020.001E][.1CA9.0020.001E] # VULGAR FRACTION FIVE SIXTHS -215D ; [.1CA8.0020.001E][*063C.0020.001E][.1CAB.0020.001E] # VULGAR FRACTION FIVE EIGHTHS -33E4 ; [.1CA8.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE -32C4 ; [.1CA8.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY -335D ; [.1CA8.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE -0036 ; [.1CA9.0020.0002] # DIGIT SIX -0666 ; [.1CA9.0020.0002] # ARABIC-INDIC DIGIT SIX -06F6 ; [.1CA9.0020.0002] # EXTENDED ARABIC-INDIC DIGIT SIX -07C6 ; [.1CA9.0020.0002] # NKO DIGIT SIX -096C ; [.1CA9.0020.0002] # DEVANAGARI DIGIT SIX -09EC ; [.1CA9.0020.0002] # BENGALI DIGIT SIX -0A6C ; [.1CA9.0020.0002] # GURMUKHI DIGIT SIX -0AEC ; [.1CA9.0020.0002] # GUJARATI DIGIT SIX -0B6C ; [.1CA9.0020.0002] # ORIYA DIGIT SIX -0BEC ; [.1CA9.0020.0002] # TAMIL DIGIT SIX -0C6C ; [.1CA9.0020.0002] # TELUGU DIGIT SIX -0CEC ; [.1CA9.0020.0002] # KANNADA DIGIT SIX -0D6C ; [.1CA9.0020.0002] # MALAYALAM DIGIT SIX -0DEC ; [.1CA9.0020.0002] # SINHALA LITH DIGIT SIX -0E56 ; [.1CA9.0020.0002] # THAI DIGIT SIX -0ED6 ; [.1CA9.0020.0002] # LAO DIGIT SIX -0F26 ; [.1CA9.0020.0002] # TIBETAN DIGIT SIX -1046 ; [.1CA9.0020.0002] # MYANMAR DIGIT SIX -1096 ; [.1CA9.0020.0002] # MYANMAR SHAN DIGIT SIX -136E ; [.1CA9.0020.0002] # ETHIOPIC DIGIT SIX -17E6 ; [.1CA9.0020.0002] # KHMER DIGIT SIX -17F6 ; [.1CA9.0020.0002] # KHMER SYMBOL LEK ATTAK PRAM-MUOY -1816 ; [.1CA9.0020.0002] # MONGOLIAN DIGIT SIX -194C ; [.1CA9.0020.0002] # LIMBU DIGIT SIX -19D6 ; [.1CA9.0020.0002] # NEW TAI LUE DIGIT SIX -1A86 ; [.1CA9.0020.0002] # TAI THAM HORA DIGIT SIX -1A96 ; [.1CA9.0020.0002] # TAI THAM THAM DIGIT SIX -1B56 ; [.1CA9.0020.0002] # BALINESE DIGIT SIX -1BB6 ; [.1CA9.0020.0002] # SUNDANESE DIGIT SIX -1C46 ; [.1CA9.0020.0002] # LEPCHA DIGIT SIX -1C56 ; [.1CA9.0020.0002] # OL CHIKI DIGIT SIX -2185 ; [.1CA9.0020.0002] # ROMAN NUMERAL SIX LATE FORM -3026 ; [.1CA9.0020.0002] # HANGZHOU NUMERAL SIX -A626 ; [.1CA9.0020.0002] # VAI DIGIT SIX -A8D6 ; [.1CA9.0020.0002] # SAURASHTRA DIGIT SIX -A906 ; [.1CA9.0020.0002] # KAYAH LI DIGIT SIX -A9D6 ; [.1CA9.0020.0002] # JAVANESE DIGIT SIX -A9F6 ; [.1CA9.0020.0002] # MYANMAR TAI LAING DIGIT SIX -AA56 ; [.1CA9.0020.0002] # CHAM DIGIT SIX -ABF6 ; [.1CA9.0020.0002] # MEETEI MAYEK DIGIT SIX -1010C ; [.1CA9.0020.0002] # AEGEAN NUMBER SIX -102E6 ; [.1CA9.0020.0002] # COPTIC EPACT DIGIT SIX -104A6 ; [.1CA9.0020.0002] # OSMANYA DIGIT SIX -109C5 ; [.1CA9.0020.0002] # MEROITIC CURSIVE NUMBER SIX -10E65 ; [.1CA9.0020.0002] # RUMI DIGIT SIX -11057 ; [.1CA9.0020.0002] # BRAHMI NUMBER SIX -1106C ; [.1CA9.0020.0002] # BRAHMI DIGIT SIX -110F6 ; [.1CA9.0020.0002] # SORA SOMPENG DIGIT SIX -1113C ; [.1CA9.0020.0002] # CHAKMA DIGIT SIX -111D6 ; [.1CA9.0020.0002] # SHARADA DIGIT SIX -111E6 ; [.1CA9.0020.0002] # SINHALA ARCHAIC DIGIT SIX -112F6 ; [.1CA9.0020.0002] # KHUDAWADI DIGIT SIX -11456 ; [.1CA9.0020.0002] # NEWA DIGIT SIX -114D6 ; [.1CA9.0020.0002] # TIRHUTA DIGIT SIX -11656 ; [.1CA9.0020.0002] # MODI DIGIT SIX -116C6 ; [.1CA9.0020.0002] # TAKRI DIGIT SIX -11736 ; [.1CA9.0020.0002] # AHOM DIGIT SIX -118E6 ; [.1CA9.0020.0002] # WARANG CITI DIGIT SIX -11C56 ; [.1CA9.0020.0002] # BHAIKSUKI DIGIT SIX -11C5F ; [.1CA9.0020.0002] # BHAIKSUKI NUMBER SIX -11D56 ; [.1CA9.0020.0002] # MASARAM GONDI DIGIT SIX -12404 ; [.1CA9.0020.0002] # CUNEIFORM NUMERIC SIGN SIX ASH -1240B ; [.1CA9.0020.0002] # CUNEIFORM NUMERIC SIGN SIX DISH -12411 ; [.1CA9.0020.0002] # CUNEIFORM NUMERIC SIGN SIX U -1241A ; [.1CA9.0020.0002] # CUNEIFORM NUMERIC SIGN SIX GESH2 -12428 ; [.1CA9.0020.0002] # CUNEIFORM NUMERIC SIGN SIX SHAR2 -12440 ; [.1CA9.0020.0002] # CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9 -1244E ; [.1CA9.0020.0002] # CUNEIFORM NUMERIC SIGN SIX ASH TENU -1246B ; [.1CA9.0020.0002] # CUNEIFORM NUMERIC SIGN SIX U VARIANT FORM -16A66 ; [.1CA9.0020.0002] # MRO DIGIT SIX -16B56 ; [.1CA9.0020.0002] # PAHAWH HMONG DIGIT SIX -1D365 ; [.1CA9.0020.0002] # COUNTING ROD UNIT DIGIT SIX -1E8CC ; [.1CA9.0020.0002] # MENDE KIKAKUI DIGIT SIX -1E956 ; [.1CA9.0020.0002] # ADLAM DIGIT SIX -FF16 ; [.1CA9.0020.0003] # FULLWIDTH DIGIT SIX -0F2F ; [.1CA9.0020.0004] # TIBETAN DIGIT HALF SIX -2479 ; [*0318.0020.0004][.1CA9.0020.0004][*0319.0020.0004] # PARENTHESIZED DIGIT SIX -248D ; [.1CA9.0020.0004][*0278.0020.0004] # DIGIT SIX FULL STOP -1F107 ; [.1CA9.0020.0004][*0222.0020.0004] # DIGIT SIX COMMA -1D7D4 ; [.1CA9.0020.0005] # MATHEMATICAL BOLD DIGIT SIX -1D7DE ; [.1CA9.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT SIX -1D7E8 ; [.1CA9.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT SIX -1D7F2 ; [.1CA9.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT SIX -1D7FC ; [.1CA9.0020.0005] # MATHEMATICAL MONOSPACE DIGIT SIX -2465 ; [.1CA9.0020.0006] # CIRCLED DIGIT SIX -24FA ; [.1CA9.0020.0006] # DOUBLE CIRCLED DIGIT SIX -277B ; [.1CA9.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT SIX -2785 ; [.1CA9.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT SIX -278F ; [.1CA9.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX -2076 ; [.1CA9.0020.0014] # SUPERSCRIPT SIX -2086 ; [.1CA9.0020.0015] # SUBSCRIPT SIX -324D ; [.1CA9.0020.0006][.1CA3.0020.0006] # CIRCLED NUMBER SIXTY ON BLACK SQUARE -1F1A3 ; [.1CA9.0020.001C][.1CA3.0020.001C][.1E72.0020.001D] # SQUARED SIXTY P -33E5 ; [.1CA9.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX -32C5 ; [.1CA9.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE -335E ; [.1CA9.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX -0037 ; [.1CAA.0020.0002] # DIGIT SEVEN -0667 ; [.1CAA.0020.0002] # ARABIC-INDIC DIGIT SEVEN -06F7 ; [.1CAA.0020.0002] # EXTENDED ARABIC-INDIC DIGIT SEVEN -07C7 ; [.1CAA.0020.0002] # NKO DIGIT SEVEN -096D ; [.1CAA.0020.0002] # DEVANAGARI DIGIT SEVEN -09ED ; [.1CAA.0020.0002] # BENGALI DIGIT SEVEN -0A6D ; [.1CAA.0020.0002] # GURMUKHI DIGIT SEVEN -0AED ; [.1CAA.0020.0002] # GUJARATI DIGIT SEVEN -0B6D ; [.1CAA.0020.0002] # ORIYA DIGIT SEVEN -0BED ; [.1CAA.0020.0002] # TAMIL DIGIT SEVEN -0C6D ; [.1CAA.0020.0002] # TELUGU DIGIT SEVEN -0CED ; [.1CAA.0020.0002] # KANNADA DIGIT SEVEN -0D6D ; [.1CAA.0020.0002] # MALAYALAM DIGIT SEVEN -0DED ; [.1CAA.0020.0002] # SINHALA LITH DIGIT SEVEN -0E57 ; [.1CAA.0020.0002] # THAI DIGIT SEVEN -0ED7 ; [.1CAA.0020.0002] # LAO DIGIT SEVEN -0F27 ; [.1CAA.0020.0002] # TIBETAN DIGIT SEVEN -1047 ; [.1CAA.0020.0002] # MYANMAR DIGIT SEVEN -1097 ; [.1CAA.0020.0002] # MYANMAR SHAN DIGIT SEVEN -136F ; [.1CAA.0020.0002] # ETHIOPIC DIGIT SEVEN -17E7 ; [.1CAA.0020.0002] # KHMER DIGIT SEVEN -17F7 ; [.1CAA.0020.0002] # KHMER SYMBOL LEK ATTAK PRAM-PII -1817 ; [.1CAA.0020.0002] # MONGOLIAN DIGIT SEVEN -194D ; [.1CAA.0020.0002] # LIMBU DIGIT SEVEN -19D7 ; [.1CAA.0020.0002] # NEW TAI LUE DIGIT SEVEN -1A87 ; [.1CAA.0020.0002] # TAI THAM HORA DIGIT SEVEN -1A97 ; [.1CAA.0020.0002] # TAI THAM THAM DIGIT SEVEN -1B57 ; [.1CAA.0020.0002] # BALINESE DIGIT SEVEN -1BB7 ; [.1CAA.0020.0002] # SUNDANESE DIGIT SEVEN -1C47 ; [.1CAA.0020.0002] # LEPCHA DIGIT SEVEN -1C57 ; [.1CAA.0020.0002] # OL CHIKI DIGIT SEVEN -3027 ; [.1CAA.0020.0002] # HANGZHOU NUMERAL SEVEN -A627 ; [.1CAA.0020.0002] # VAI DIGIT SEVEN -A8D7 ; [.1CAA.0020.0002] # SAURASHTRA DIGIT SEVEN -A907 ; [.1CAA.0020.0002] # KAYAH LI DIGIT SEVEN -A9D7 ; [.1CAA.0020.0002] # JAVANESE DIGIT SEVEN -A9F7 ; [.1CAA.0020.0002] # MYANMAR TAI LAING DIGIT SEVEN -AA57 ; [.1CAA.0020.0002] # CHAM DIGIT SEVEN -ABF7 ; [.1CAA.0020.0002] # MEETEI MAYEK DIGIT SEVEN -1010D ; [.1CAA.0020.0002] # AEGEAN NUMBER SEVEN -102E7 ; [.1CAA.0020.0002] # COPTIC EPACT DIGIT SEVEN -104A7 ; [.1CAA.0020.0002] # OSMANYA DIGIT SEVEN -109C6 ; [.1CAA.0020.0002] # MEROITIC CURSIVE NUMBER SEVEN -10E66 ; [.1CAA.0020.0002] # RUMI DIGIT SEVEN -11058 ; [.1CAA.0020.0002] # BRAHMI NUMBER SEVEN -1106D ; [.1CAA.0020.0002] # BRAHMI DIGIT SEVEN -110F7 ; [.1CAA.0020.0002] # SORA SOMPENG DIGIT SEVEN -1113D ; [.1CAA.0020.0002] # CHAKMA DIGIT SEVEN -111D7 ; [.1CAA.0020.0002] # SHARADA DIGIT SEVEN -111E7 ; [.1CAA.0020.0002] # SINHALA ARCHAIC DIGIT SEVEN -112F7 ; [.1CAA.0020.0002] # KHUDAWADI DIGIT SEVEN -11457 ; [.1CAA.0020.0002] # NEWA DIGIT SEVEN -114D7 ; [.1CAA.0020.0002] # TIRHUTA DIGIT SEVEN -11657 ; [.1CAA.0020.0002] # MODI DIGIT SEVEN -116C7 ; [.1CAA.0020.0002] # TAKRI DIGIT SEVEN -11737 ; [.1CAA.0020.0002] # AHOM DIGIT SEVEN -118E7 ; [.1CAA.0020.0002] # WARANG CITI DIGIT SEVEN -11C57 ; [.1CAA.0020.0002] # BHAIKSUKI DIGIT SEVEN -11C60 ; [.1CAA.0020.0002] # BHAIKSUKI NUMBER SEVEN -11D57 ; [.1CAA.0020.0002] # MASARAM GONDI DIGIT SEVEN -12405 ; [.1CAA.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN ASH -1240C ; [.1CAA.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN DISH -12412 ; [.1CAA.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN U -1241B ; [.1CAA.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN GESH2 -12429 ; [.1CAA.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN SHAR2 -12441 ; [.1CAA.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3 -12442 ; [.1CAA.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A -12443 ; [.1CAA.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B -1246C ; [.1CAA.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN U VARIANT FORM -16A67 ; [.1CAA.0020.0002] # MRO DIGIT SEVEN -16B57 ; [.1CAA.0020.0002] # PAHAWH HMONG DIGIT SEVEN -1D366 ; [.1CAA.0020.0002] # COUNTING ROD UNIT DIGIT SEVEN -1E8CD ; [.1CAA.0020.0002] # MENDE KIKAKUI DIGIT SEVEN -1E957 ; [.1CAA.0020.0002] # ADLAM DIGIT SEVEN -FF17 ; [.1CAA.0020.0003] # FULLWIDTH DIGIT SEVEN -0F30 ; [.1CAA.0020.0004] # TIBETAN DIGIT HALF SEVEN -247A ; [*0318.0020.0004][.1CAA.0020.0004][*0319.0020.0004] # PARENTHESIZED DIGIT SEVEN -248E ; [.1CAA.0020.0004][*0278.0020.0004] # DIGIT SEVEN FULL STOP -1F108 ; [.1CAA.0020.0004][*0222.0020.0004] # DIGIT SEVEN COMMA -1D7D5 ; [.1CAA.0020.0005] # MATHEMATICAL BOLD DIGIT SEVEN -1D7DF ; [.1CAA.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN -1D7E9 ; [.1CAA.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT SEVEN -1D7F3 ; [.1CAA.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN -1D7FD ; [.1CAA.0020.0005] # MATHEMATICAL MONOSPACE DIGIT SEVEN -2466 ; [.1CAA.0020.0006] # CIRCLED DIGIT SEVEN -24FB ; [.1CAA.0020.0006] # DOUBLE CIRCLED DIGIT SEVEN -277C ; [.1CAA.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN -2786 ; [.1CAA.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN -2790 ; [.1CAA.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN -2077 ; [.1CAA.0020.0014] # SUPERSCRIPT SEVEN -2087 ; [.1CAA.0020.0015] # SUBSCRIPT SEVEN -324E ; [.1CAA.0020.0006][.1CA3.0020.0006] # CIRCLED NUMBER SEVENTY ON BLACK SQUARE -1F1A1 ; [.1CAA.0020.001C][*0278.0020.001C][.1CA4.0020.001C] # SQUARED SEVEN POINT ONE -215E ; [.1CAA.0020.001E][*063C.0020.001E][.1CAB.0020.001E] # VULGAR FRACTION SEVEN EIGHTHS -33E6 ; [.1CAA.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN -32C6 ; [.1CAA.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY -335F ; [.1CAA.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN -0038 ; [.1CAB.0020.0002] # DIGIT EIGHT -0668 ; [.1CAB.0020.0002] # ARABIC-INDIC DIGIT EIGHT -06F8 ; [.1CAB.0020.0002] # EXTENDED ARABIC-INDIC DIGIT EIGHT -07C8 ; [.1CAB.0020.0002] # NKO DIGIT EIGHT -096E ; [.1CAB.0020.0002] # DEVANAGARI DIGIT EIGHT -09EE ; [.1CAB.0020.0002] # BENGALI DIGIT EIGHT -0A6E ; [.1CAB.0020.0002] # GURMUKHI DIGIT EIGHT -0AEE ; [.1CAB.0020.0002] # GUJARATI DIGIT EIGHT -0B6E ; [.1CAB.0020.0002] # ORIYA DIGIT EIGHT -0BEE ; [.1CAB.0020.0002] # TAMIL DIGIT EIGHT -0C6E ; [.1CAB.0020.0002] # TELUGU DIGIT EIGHT -0CEE ; [.1CAB.0020.0002] # KANNADA DIGIT EIGHT -0D6E ; [.1CAB.0020.0002] # MALAYALAM DIGIT EIGHT -0DEE ; [.1CAB.0020.0002] # SINHALA LITH DIGIT EIGHT -0E58 ; [.1CAB.0020.0002] # THAI DIGIT EIGHT -0ED8 ; [.1CAB.0020.0002] # LAO DIGIT EIGHT -0F28 ; [.1CAB.0020.0002] # TIBETAN DIGIT EIGHT -1048 ; [.1CAB.0020.0002] # MYANMAR DIGIT EIGHT -1098 ; [.1CAB.0020.0002] # MYANMAR SHAN DIGIT EIGHT -1370 ; [.1CAB.0020.0002] # ETHIOPIC DIGIT EIGHT -17E8 ; [.1CAB.0020.0002] # KHMER DIGIT EIGHT -17F8 ; [.1CAB.0020.0002] # KHMER SYMBOL LEK ATTAK PRAM-BEI -1818 ; [.1CAB.0020.0002] # MONGOLIAN DIGIT EIGHT -194E ; [.1CAB.0020.0002] # LIMBU DIGIT EIGHT -19D8 ; [.1CAB.0020.0002] # NEW TAI LUE DIGIT EIGHT -1A88 ; [.1CAB.0020.0002] # TAI THAM HORA DIGIT EIGHT -1A98 ; [.1CAB.0020.0002] # TAI THAM THAM DIGIT EIGHT -1B58 ; [.1CAB.0020.0002] # BALINESE DIGIT EIGHT -1BB8 ; [.1CAB.0020.0002] # SUNDANESE DIGIT EIGHT -1C48 ; [.1CAB.0020.0002] # LEPCHA DIGIT EIGHT -1C58 ; [.1CAB.0020.0002] # OL CHIKI DIGIT EIGHT -3028 ; [.1CAB.0020.0002] # HANGZHOU NUMERAL EIGHT -A628 ; [.1CAB.0020.0002] # VAI DIGIT EIGHT -A8D8 ; [.1CAB.0020.0002] # SAURASHTRA DIGIT EIGHT -A908 ; [.1CAB.0020.0002] # KAYAH LI DIGIT EIGHT -A9D8 ; [.1CAB.0020.0002] # JAVANESE DIGIT EIGHT -A9F8 ; [.1CAB.0020.0002] # MYANMAR TAI LAING DIGIT EIGHT -AA58 ; [.1CAB.0020.0002] # CHAM DIGIT EIGHT -ABF8 ; [.1CAB.0020.0002] # MEETEI MAYEK DIGIT EIGHT -1010E ; [.1CAB.0020.0002] # AEGEAN NUMBER EIGHT -102E8 ; [.1CAB.0020.0002] # COPTIC EPACT DIGIT EIGHT -104A8 ; [.1CAB.0020.0002] # OSMANYA DIGIT EIGHT -109C7 ; [.1CAB.0020.0002] # MEROITIC CURSIVE NUMBER EIGHT -10E67 ; [.1CAB.0020.0002] # RUMI DIGIT EIGHT -11059 ; [.1CAB.0020.0002] # BRAHMI NUMBER EIGHT -1106E ; [.1CAB.0020.0002] # BRAHMI DIGIT EIGHT -110F8 ; [.1CAB.0020.0002] # SORA SOMPENG DIGIT EIGHT -1113E ; [.1CAB.0020.0002] # CHAKMA DIGIT EIGHT -111D8 ; [.1CAB.0020.0002] # SHARADA DIGIT EIGHT -111E8 ; [.1CAB.0020.0002] # SINHALA ARCHAIC DIGIT EIGHT -112F8 ; [.1CAB.0020.0002] # KHUDAWADI DIGIT EIGHT -11458 ; [.1CAB.0020.0002] # NEWA DIGIT EIGHT -114D8 ; [.1CAB.0020.0002] # TIRHUTA DIGIT EIGHT -11658 ; [.1CAB.0020.0002] # MODI DIGIT EIGHT -116C8 ; [.1CAB.0020.0002] # TAKRI DIGIT EIGHT -11738 ; [.1CAB.0020.0002] # AHOM DIGIT EIGHT -118E8 ; [.1CAB.0020.0002] # WARANG CITI DIGIT EIGHT -11C58 ; [.1CAB.0020.0002] # BHAIKSUKI DIGIT EIGHT -11C61 ; [.1CAB.0020.0002] # BHAIKSUKI NUMBER EIGHT -11D58 ; [.1CAB.0020.0002] # MASARAM GONDI DIGIT EIGHT -12406 ; [.1CAB.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT ASH -1240D ; [.1CAB.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT DISH -12413 ; [.1CAB.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT U -1241C ; [.1CAB.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT GESH2 -1242A ; [.1CAB.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT SHAR2 -12444 ; [.1CAB.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU -12445 ; [.1CAB.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3 -1246D ; [.1CAB.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT U VARIANT FORM -16A68 ; [.1CAB.0020.0002] # MRO DIGIT EIGHT -16B58 ; [.1CAB.0020.0002] # PAHAWH HMONG DIGIT EIGHT -1D367 ; [.1CAB.0020.0002] # COUNTING ROD UNIT DIGIT EIGHT -1E8CE ; [.1CAB.0020.0002] # MENDE KIKAKUI DIGIT EIGHT -1E958 ; [.1CAB.0020.0002] # ADLAM DIGIT EIGHT -FF18 ; [.1CAB.0020.0003] # FULLWIDTH DIGIT EIGHT -0F31 ; [.1CAB.0020.0004] # TIBETAN DIGIT HALF EIGHT -247B ; [*0318.0020.0004][.1CAB.0020.0004][*0319.0020.0004] # PARENTHESIZED DIGIT EIGHT -248F ; [.1CAB.0020.0004][*0278.0020.0004] # DIGIT EIGHT FULL STOP -1F109 ; [.1CAB.0020.0004][*0222.0020.0004] # DIGIT EIGHT COMMA -1D7D6 ; [.1CAB.0020.0005] # MATHEMATICAL BOLD DIGIT EIGHT -1D7E0 ; [.1CAB.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT -1D7EA ; [.1CAB.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT EIGHT -1D7F4 ; [.1CAB.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT -1D7FE ; [.1CAB.0020.0005] # MATHEMATICAL MONOSPACE DIGIT EIGHT -2467 ; [.1CAB.0020.0006] # CIRCLED DIGIT EIGHT -24FC ; [.1CAB.0020.0006] # DOUBLE CIRCLED DIGIT EIGHT -277D ; [.1CAB.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT -2787 ; [.1CAB.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT -2791 ; [.1CAB.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT -2078 ; [.1CAB.0020.0014] # SUPERSCRIPT EIGHT -2088 ; [.1CAB.0020.0015] # SUBSCRIPT EIGHT -324F ; [.1CAB.0020.0006][.1CA3.0020.0006] # CIRCLED NUMBER EIGHTY ON BLACK SQUARE -1F19F ; [.1CAB.0020.001C][.1DCB.0020.001D] # SQUARED EIGHT K -33E7 ; [.1CAB.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT -32C7 ; [.1CAB.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST -3360 ; [.1CAB.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT -0039 ; [.1CAC.0020.0002] # DIGIT NINE -0669 ; [.1CAC.0020.0002] # ARABIC-INDIC DIGIT NINE -06F9 ; [.1CAC.0020.0002] # EXTENDED ARABIC-INDIC DIGIT NINE -07C9 ; [.1CAC.0020.0002] # NKO DIGIT NINE -096F ; [.1CAC.0020.0002] # DEVANAGARI DIGIT NINE -09EF ; [.1CAC.0020.0002] # BENGALI DIGIT NINE -0A6F ; [.1CAC.0020.0002] # GURMUKHI DIGIT NINE -0AEF ; [.1CAC.0020.0002] # GUJARATI DIGIT NINE -0B6F ; [.1CAC.0020.0002] # ORIYA DIGIT NINE -0BEF ; [.1CAC.0020.0002] # TAMIL DIGIT NINE -0C6F ; [.1CAC.0020.0002] # TELUGU DIGIT NINE -0CEF ; [.1CAC.0020.0002] # KANNADA DIGIT NINE -0D6F ; [.1CAC.0020.0002] # MALAYALAM DIGIT NINE -0DEF ; [.1CAC.0020.0002] # SINHALA LITH DIGIT NINE -0E59 ; [.1CAC.0020.0002] # THAI DIGIT NINE -0ED9 ; [.1CAC.0020.0002] # LAO DIGIT NINE -0F29 ; [.1CAC.0020.0002] # TIBETAN DIGIT NINE -1049 ; [.1CAC.0020.0002] # MYANMAR DIGIT NINE -1099 ; [.1CAC.0020.0002] # MYANMAR SHAN DIGIT NINE -1371 ; [.1CAC.0020.0002] # ETHIOPIC DIGIT NINE -17E9 ; [.1CAC.0020.0002] # KHMER DIGIT NINE -17F9 ; [.1CAC.0020.0002] # KHMER SYMBOL LEK ATTAK PRAM-BUON -1819 ; [.1CAC.0020.0002] # MONGOLIAN DIGIT NINE -194F ; [.1CAC.0020.0002] # LIMBU DIGIT NINE -19D9 ; [.1CAC.0020.0002] # NEW TAI LUE DIGIT NINE -1A89 ; [.1CAC.0020.0002] # TAI THAM HORA DIGIT NINE -1A99 ; [.1CAC.0020.0002] # TAI THAM THAM DIGIT NINE -1B59 ; [.1CAC.0020.0002] # BALINESE DIGIT NINE -1BB9 ; [.1CAC.0020.0002] # SUNDANESE DIGIT NINE -1C49 ; [.1CAC.0020.0002] # LEPCHA DIGIT NINE -1C59 ; [.1CAC.0020.0002] # OL CHIKI DIGIT NINE -3029 ; [.1CAC.0020.0002] # HANGZHOU NUMERAL NINE -A629 ; [.1CAC.0020.0002] # VAI DIGIT NINE -A8D9 ; [.1CAC.0020.0002] # SAURASHTRA DIGIT NINE -A909 ; [.1CAC.0020.0002] # KAYAH LI DIGIT NINE -A9D9 ; [.1CAC.0020.0002] # JAVANESE DIGIT NINE -A9F9 ; [.1CAC.0020.0002] # MYANMAR TAI LAING DIGIT NINE -AA59 ; [.1CAC.0020.0002] # CHAM DIGIT NINE -ABF9 ; [.1CAC.0020.0002] # MEETEI MAYEK DIGIT NINE -1010F ; [.1CAC.0020.0002] # AEGEAN NUMBER NINE -102E9 ; [.1CAC.0020.0002] # COPTIC EPACT DIGIT NINE -104A9 ; [.1CAC.0020.0002] # OSMANYA DIGIT NINE -109C8 ; [.1CAC.0020.0002] # MEROITIC CURSIVE NUMBER NINE -10E68 ; [.1CAC.0020.0002] # RUMI DIGIT NINE -1105A ; [.1CAC.0020.0002] # BRAHMI NUMBER NINE -1106F ; [.1CAC.0020.0002] # BRAHMI DIGIT NINE -110F9 ; [.1CAC.0020.0002] # SORA SOMPENG DIGIT NINE -1113F ; [.1CAC.0020.0002] # CHAKMA DIGIT NINE -111D9 ; [.1CAC.0020.0002] # SHARADA DIGIT NINE -111E9 ; [.1CAC.0020.0002] # SINHALA ARCHAIC DIGIT NINE -112F9 ; [.1CAC.0020.0002] # KHUDAWADI DIGIT NINE -11459 ; [.1CAC.0020.0002] # NEWA DIGIT NINE -114D9 ; [.1CAC.0020.0002] # TIRHUTA DIGIT NINE -11659 ; [.1CAC.0020.0002] # MODI DIGIT NINE -116C9 ; [.1CAC.0020.0002] # TAKRI DIGIT NINE -11739 ; [.1CAC.0020.0002] # AHOM DIGIT NINE -118E9 ; [.1CAC.0020.0002] # WARANG CITI DIGIT NINE -11C59 ; [.1CAC.0020.0002] # BHAIKSUKI DIGIT NINE -11C62 ; [.1CAC.0020.0002] # BHAIKSUKI NUMBER NINE -11D59 ; [.1CAC.0020.0002] # MASARAM GONDI DIGIT NINE -12407 ; [.1CAC.0020.0002] # CUNEIFORM NUMERIC SIGN NINE ASH -1240E ; [.1CAC.0020.0002] # CUNEIFORM NUMERIC SIGN NINE DISH -12414 ; [.1CAC.0020.0002] # CUNEIFORM NUMERIC SIGN NINE U -1241D ; [.1CAC.0020.0002] # CUNEIFORM NUMERIC SIGN NINE GESH2 -1242B ; [.1CAC.0020.0002] # CUNEIFORM NUMERIC SIGN NINE SHAR2 -12446 ; [.1CAC.0020.0002] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU -12447 ; [.1CAC.0020.0002] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3 -12448 ; [.1CAC.0020.0002] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4 -12449 ; [.1CAC.0020.0002] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A -1246E ; [.1CAC.0020.0002] # CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM -16A69 ; [.1CAC.0020.0002] # MRO DIGIT NINE -16B59 ; [.1CAC.0020.0002] # PAHAWH HMONG DIGIT NINE -1D368 ; [.1CAC.0020.0002] # COUNTING ROD UNIT DIGIT NINE -1E8CF ; [.1CAC.0020.0002] # MENDE KIKAKUI DIGIT NINE -1E959 ; [.1CAC.0020.0002] # ADLAM DIGIT NINE -FF19 ; [.1CAC.0020.0003] # FULLWIDTH DIGIT NINE -0F32 ; [.1CAC.0020.0004] # TIBETAN DIGIT HALF NINE -247C ; [*0318.0020.0004][.1CAC.0020.0004][*0319.0020.0004] # PARENTHESIZED DIGIT NINE -2490 ; [.1CAC.0020.0004][*0278.0020.0004] # DIGIT NINE FULL STOP -1F10A ; [.1CAC.0020.0004][*0222.0020.0004] # DIGIT NINE COMMA -1D7D7 ; [.1CAC.0020.0005] # MATHEMATICAL BOLD DIGIT NINE -1D7E1 ; [.1CAC.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT NINE -1D7EB ; [.1CAC.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT NINE -1D7F5 ; [.1CAC.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT NINE -1D7FF ; [.1CAC.0020.0005] # MATHEMATICAL MONOSPACE DIGIT NINE -2468 ; [.1CAC.0020.0006] # CIRCLED DIGIT NINE -24FD ; [.1CAC.0020.0006] # DOUBLE CIRCLED DIGIT NINE -277E ; [.1CAC.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT NINE -2788 ; [.1CAC.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT NINE -2792 ; [.1CAC.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE -2079 ; [.1CAC.0020.0014] # SUPERSCRIPT NINE -2089 ; [.1CAC.0020.0015] # SUBSCRIPT NINE -33E8 ; [.1CAC.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE -32C8 ; [.1CAC.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER -3361 ; [.1CAC.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE -0061 ; [.1CAD.0020.0002] # LATIN SMALL LETTER A -FF41 ; [.1CAD.0020.0003] # FULLWIDTH LATIN SMALL LETTER A -0363 ; [.1CAD.0020.0004] # COMBINING LATIN SMALL LETTER A -249C ; [*0318.0020.0004][.1CAD.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER A -1D41A ; [.1CAD.0020.0005] # MATHEMATICAL BOLD SMALL A -1D44E ; [.1CAD.0020.0005] # MATHEMATICAL ITALIC SMALL A -1D482 ; [.1CAD.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL A -1D4B6 ; [.1CAD.0020.0005] # MATHEMATICAL SCRIPT SMALL A -1D4EA ; [.1CAD.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL A -1D51E ; [.1CAD.0020.0005] # MATHEMATICAL FRAKTUR SMALL A -1D552 ; [.1CAD.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL A -1D586 ; [.1CAD.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL A -1D5BA ; [.1CAD.0020.0005] # MATHEMATICAL SANS-SERIF SMALL A -1D5EE ; [.1CAD.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL A -1D622 ; [.1CAD.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL A -1D656 ; [.1CAD.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A -1D68A ; [.1CAD.0020.0005] # MATHEMATICAL MONOSPACE SMALL A -24D0 ; [.1CAD.0020.0006] # CIRCLED LATIN SMALL LETTER A -0041 ; [.1CAD.0020.0008] # LATIN CAPITAL LETTER A -FF21 ; [.1CAD.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER A -1F110 ; [*0318.0020.0004][.1CAD.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER A -1D400 ; [.1CAD.0020.000B] # MATHEMATICAL BOLD CAPITAL A -1D434 ; [.1CAD.0020.000B] # MATHEMATICAL ITALIC CAPITAL A -1D468 ; [.1CAD.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL A -1D49C ; [.1CAD.0020.000B] # MATHEMATICAL SCRIPT CAPITAL A -1D4D0 ; [.1CAD.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL A -1D504 ; [.1CAD.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL A -1D538 ; [.1CAD.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL A -1D56C ; [.1CAD.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL A -1D5A0 ; [.1CAD.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL A -1D5D4 ; [.1CAD.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL A -1D608 ; [.1CAD.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL A -1D63C ; [.1CAD.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A -1D670 ; [.1CAD.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL A -24B6 ; [.1CAD.0020.000C] # CIRCLED LATIN CAPITAL LETTER A -1F150 ; [.1CAD.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER A -00AA ; [.1CAD.0020.0014] # FEMININE ORDINAL INDICATOR -1D43 ; [.1CAD.0020.0014] # MODIFIER LETTER SMALL A -2090 ; [.1CAD.0020.0015] # LATIN SUBSCRIPT SMALL LETTER A -1D2C ; [.1CAD.0020.001D] # MODIFIER LETTER CAPITAL A -1F130 ; [.1CAD.0020.001D] # SQUARED LATIN CAPITAL LETTER A -1F170 ; [.1CAD.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER A -00E1 ; [.1CAD.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH ACUTE -00C1 ; [.1CAD.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH ACUTE -00E0 ; [.1CAD.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER A WITH GRAVE -00C0 ; [.1CAD.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER A WITH GRAVE -0103 ; [.1CAD.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER A WITH BREVE -0102 ; [.1CAD.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER A WITH BREVE -1EAF ; [.1CAD.0020.0002][.0000.0026.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH BREVE AND ACUTE -1EAE ; [.1CAD.0020.0008][.0000.0026.0002][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE -1EB1 ; [.1CAD.0020.0002][.0000.0026.0002][.0000.0025.0002] # LATIN SMALL LETTER A WITH BREVE AND GRAVE -1EB0 ; [.1CAD.0020.0008][.0000.0026.0002][.0000.0025.0002] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE -1EB5 ; [.1CAD.0020.0002][.0000.0026.0002][.0000.002D.0002] # LATIN SMALL LETTER A WITH BREVE AND TILDE -1EB4 ; [.1CAD.0020.0008][.0000.0026.0002][.0000.002D.0002] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE -1EB3 ; [.1CAD.0020.0002][.0000.0026.0002][.0000.003B.0002] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE -1EB2 ; [.1CAD.0020.0008][.0000.0026.0002][.0000.003B.0002] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE -00E2 ; [.1CAD.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX -00C2 ; [.1CAD.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX -1EA5 ; [.1CAD.0020.0002][.0000.0027.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE -1EA4 ; [.1CAD.0020.0008][.0000.0027.0002][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE -1EA7 ; [.1CAD.0020.0002][.0000.0027.0002][.0000.0025.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE -1EA6 ; [.1CAD.0020.0008][.0000.0027.0002][.0000.0025.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE -1EAB ; [.1CAD.0020.0002][.0000.0027.0002][.0000.002D.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE -1EAA ; [.1CAD.0020.0008][.0000.0027.0002][.0000.002D.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE -1EA9 ; [.1CAD.0020.0002][.0000.0027.0002][.0000.003B.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE -1EA8 ; [.1CAD.0020.0008][.0000.0027.0002][.0000.003B.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE -01CE ; [.1CAD.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER A WITH CARON -01CD ; [.1CAD.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER A WITH CARON -00E5 ; [.1CAD.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER A WITH RING ABOVE -00C5 ; [.1CAD.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE -212B ; [.1CAD.0020.0008][.0000.0029.0002] # ANGSTROM SIGN -01FB ; [.1CAD.0020.0002][.0000.0029.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE -01FA ; [.1CAD.0020.0008][.0000.0029.0002][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE -00E4 ; [.1CAD.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER A WITH DIAERESIS -1DF2 ; [.1CAD.0020.0004][.0000.002B.0004] # COMBINING LATIN SMALL LETTER A WITH DIAERESIS -A79B ; [.1CAD.0020.0004][.0000.002B.0004] # LATIN SMALL LETTER VOLAPUK AE -00C4 ; [.1CAD.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS -A79A ; [.1CAD.0020.000A][.0000.002B.0004] # LATIN CAPITAL LETTER VOLAPUK AE -01DF ; [.1CAD.0020.0002][.0000.002B.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1CAD.0020.0008][.0000.002B.0002][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -00E3 ; [.1CAD.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER A WITH TILDE -00C3 ; [.1CAD.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER A WITH TILDE -0227 ; [.1CAD.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER A WITH DOT ABOVE -0226 ; [.1CAD.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER A WITH DOT ABOVE -01E1 ; [.1CAD.0020.0002][.0000.002E.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON -01E0 ; [.1CAD.0020.0008][.0000.002E.0002][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON -0105 ; [.1CAD.0020.0002][.0000.0031.0002] # LATIN SMALL LETTER A WITH OGONEK -0104 ; [.1CAD.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER A WITH OGONEK -0101 ; [.1CAD.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH MACRON -0100 ; [.1CAD.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH MACRON -1EA3 ; [.1CAD.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER A WITH HOOK ABOVE -1EA2 ; [.1CAD.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER A WITH HOOK ABOVE -0201 ; [.1CAD.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER A WITH DOUBLE GRAVE -0200 ; [.1CAD.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE -0203 ; [.1CAD.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER A WITH INVERTED BREVE -0202 ; [.1CAD.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER A WITH INVERTED BREVE -1EA1 ; [.1CAD.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER A WITH DOT BELOW -1EA0 ; [.1CAD.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER A WITH DOT BELOW -1EB7 ; [.1CAD.0020.0002][.0000.0042.0002][.0000.0026.0002] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW -1EB6 ; [.1CAD.0020.0008][.0000.0042.0002][.0000.0026.0002] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW -1EAD ; [.1CAD.0020.0002][.0000.0042.0002][.0000.0027.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW -1EAC ; [.1CAD.0020.0008][.0000.0042.0002][.0000.0027.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW -1E01 ; [.1CAD.0020.0002][.0000.0044.0002] # LATIN SMALL LETTER A WITH RING BELOW -1E00 ; [.1CAD.0020.0008][.0000.0044.0002] # LATIN CAPITAL LETTER A WITH RING BELOW -1DD3 ; [.1CAD.0020.0004][.0000.0111.0004] # COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE -A733 ; [.1CAD.0020.0004][.1CAD.0020.0004] # LATIN SMALL LETTER AA -A732 ; [.1CAD.0020.000A][.1CAD.0020.000A] # LATIN CAPITAL LETTER AA -1F18E ; [.1CAD.0020.001D][.1CC6.0020.001D] # NEGATIVE SQUARED AB -2100 ; [.1CAD.0020.0004][*0395.0020.0004][.1CE0.0020.0004] # ACCOUNT OF -00E6 ; [.1CAD.0020.0004][.0000.0111.0004][.1D10.0020.0004] # LATIN SMALL LETTER AE -1DD4 ; [.1CAD.0020.0004][.0000.0111.0004][.1D10.0020.0004] # COMBINING LATIN SMALL LETTER AE -00C6 ; [.1CAD.0020.000A][.0000.0111.0004][.1D10.0020.000A] # LATIN CAPITAL LETTER AE -1D2D ; [.1CAD.0020.0014][.0000.0111.0014][.1D10.0020.0014] # MODIFIER LETTER CAPITAL AE -01FD ; [.1CAD.0020.0004][.0000.0111.0004][.1D10.0020.0004][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE -01FC ; [.1CAD.0020.000A][.0000.0111.0004][.1D10.0020.000A][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE -01E3 ; [.1CAD.0020.0004][.0000.0111.0004][.1D10.0020.0004][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON -01E2 ; [.1CAD.0020.000A][.0000.0111.0004][.1D10.0020.000A][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON -33C2 ; [.1CAD.0020.001C][*0278.0020.001C][.1E10.0020.001C][*0278.0020.001C] # SQUARE AM -33DF ; [.1CAD.0020.001D][*063B.0020.001C][.1E10.0020.001C] # SQUARE A OVER M -1DD5 ; [.1CAD.0020.0004][.1E43.0020.0004] # COMBINING LATIN SMALL LETTER AO -A735 ; [.1CAD.0020.0004][.1E43.0020.0004] # LATIN SMALL LETTER AO -A734 ; [.1CAD.0020.000A][.1E43.0020.000A] # LATIN CAPITAL LETTER AO -2101 ; [.1CAD.0020.0004][*0395.0020.0004][.1ED7.0020.0004] # ADDRESSED TO THE SUBJECT -214D ; [.1CAD.0020.000A][*0395.0020.0004][.1ED7.0020.000A] # AKTIESELSKAB -A737 ; [.1CAD.0020.0004][.1F1B.0020.0004] # LATIN SMALL LETTER AU -A736 ; [.1CAD.0020.000A][.1F1B.0020.000A] # LATIN CAPITAL LETTER AU -3373 ; [.1CAD.0020.001D][.1F1B.0020.001D] # SQUARE AU -1DD6 ; [.1CAD.0020.0004][.1F49.0020.0004] # COMBINING LATIN SMALL LETTER AV -A739 ; [.1CAD.0020.0004][.1F49.0020.0004] # LATIN SMALL LETTER AV -A738 ; [.1CAD.0020.000A][.1F49.0020.000A] # LATIN CAPITAL LETTER AV -A73B ; [.1CAD.0020.0004][.0000.0111.0004][.1F49.0020.0004] # LATIN SMALL LETTER AV WITH HORIZONTAL BAR -A73A ; [.1CAD.0020.000A][.0000.0111.0004][.1F49.0020.000A] # LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR -A73D ; [.1CAD.0020.0004][.1F71.0020.0004] # LATIN SMALL LETTER AY -A73C ; [.1CAD.0020.000A][.1F71.0020.000A] # LATIN CAPITAL LETTER AY -1E9A ; [.1CAD.0020.0004][.1FE6.0020.0004] # LATIN SMALL LETTER A WITH RIGHT HALF RING -1D00 ; [.1CB1.0020.0002] # LATIN LETTER SMALL CAPITAL A -2C65 ; [.1CB2.0020.0002] # LATIN SMALL LETTER A WITH STROKE -023A ; [.1CB2.0020.0008] # LATIN CAPITAL LETTER A WITH STROKE -1D8F ; [.1CB3.0020.0002] # LATIN SMALL LETTER A WITH RETROFLEX HOOK -1D01 ; [.1CB4.0020.0002] # LATIN LETTER SMALL CAPITAL AE -1D02 ; [.1CB5.0020.0002] # LATIN SMALL LETTER TURNED AE -1D46 ; [.1CB5.0020.0014] # MODIFIER LETTER SMALL TURNED AE -AB31 ; [.1CB6.0020.0002] # LATIN SMALL LETTER A REVERSED-SCHWA -0250 ; [.1CB7.0020.0002] # LATIN SMALL LETTER TURNED A -2C6F ; [.1CB7.0020.0008] # LATIN CAPITAL LETTER TURNED A -1D44 ; [.1CB7.0020.0014] # MODIFIER LETTER SMALL TURNED A -0251 ; [.1CBB.0020.0002] # LATIN SMALL LETTER ALPHA -1DE7 ; [.1CBB.0020.0004] # COMBINING LATIN SMALL LETTER ALPHA -2C6D ; [.1CBB.0020.0008] # LATIN CAPITAL LETTER ALPHA -1D45 ; [.1CBB.0020.0014] # MODIFIER LETTER SMALL ALPHA -AB30 ; [.1CBF.0020.0002] # LATIN SMALL LETTER BARRED ALPHA -1D90 ; [.1CC0.0020.0002] # LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK -0252 ; [.1CC1.0020.0002] # LATIN SMALL LETTER TURNED ALPHA -2C70 ; [.1CC1.0020.0008] # LATIN CAPITAL LETTER TURNED ALPHA -1D9B ; [.1CC1.0020.0014] # MODIFIER LETTER SMALL TURNED ALPHA -AB64 ; [.1CC5.0020.0002] # LATIN SMALL LETTER INVERTED ALPHA -0062 ; [.1CC6.0020.0002] # LATIN SMALL LETTER B -FF42 ; [.1CC6.0020.0003] # FULLWIDTH LATIN SMALL LETTER B -1DE8 ; [.1CC6.0020.0004] # COMBINING LATIN SMALL LETTER B -249D ; [*0318.0020.0004][.1CC6.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER B -1D41B ; [.1CC6.0020.0005] # MATHEMATICAL BOLD SMALL B -1D44F ; [.1CC6.0020.0005] # MATHEMATICAL ITALIC SMALL B -1D483 ; [.1CC6.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL B -1D4B7 ; [.1CC6.0020.0005] # MATHEMATICAL SCRIPT SMALL B -1D4EB ; [.1CC6.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL B -1D51F ; [.1CC6.0020.0005] # MATHEMATICAL FRAKTUR SMALL B -1D553 ; [.1CC6.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL B -1D587 ; [.1CC6.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL B -1D5BB ; [.1CC6.0020.0005] # MATHEMATICAL SANS-SERIF SMALL B -1D5EF ; [.1CC6.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL B -1D623 ; [.1CC6.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL B -1D657 ; [.1CC6.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B -1D68B ; [.1CC6.0020.0005] # MATHEMATICAL MONOSPACE SMALL B -24D1 ; [.1CC6.0020.0006] # CIRCLED LATIN SMALL LETTER B -0042 ; [.1CC6.0020.0008] # LATIN CAPITAL LETTER B -FF22 ; [.1CC6.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER B -1F111 ; [*0318.0020.0004][.1CC6.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER B -212C ; [.1CC6.0020.000B] # SCRIPT CAPITAL B -1D401 ; [.1CC6.0020.000B] # MATHEMATICAL BOLD CAPITAL B -1D435 ; [.1CC6.0020.000B] # MATHEMATICAL ITALIC CAPITAL B -1D469 ; [.1CC6.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL B -1D4D1 ; [.1CC6.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL B -1D505 ; [.1CC6.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL B -1D539 ; [.1CC6.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL B -1D56D ; [.1CC6.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL B -1D5A1 ; [.1CC6.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL B -1D5D5 ; [.1CC6.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL B -1D609 ; [.1CC6.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL B -1D63D ; [.1CC6.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B -1D671 ; [.1CC6.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL B -24B7 ; [.1CC6.0020.000C] # CIRCLED LATIN CAPITAL LETTER B -1F151 ; [.1CC6.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER B -1D47 ; [.1CC6.0020.0014] # MODIFIER LETTER SMALL B -1D2E ; [.1CC6.0020.001D] # MODIFIER LETTER CAPITAL B -1F131 ; [.1CC6.0020.001D] # SQUARED LATIN CAPITAL LETTER B -1F171 ; [.1CC6.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER B -1E03 ; [.1CC6.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER B WITH DOT ABOVE -1E02 ; [.1CC6.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER B WITH DOT ABOVE -1E05 ; [.1CC6.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER B WITH DOT BELOW -1E04 ; [.1CC6.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER B WITH DOT BELOW -1E07 ; [.1CC6.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER B WITH LINE BELOW -1E06 ; [.1CC6.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER B WITH LINE BELOW -3374 ; [.1CC6.0020.001C][.1CAD.0020.001C][.1E99.0020.001C] # SQUARE BAR -33C3 ; [.1CC6.0020.001D][.1E87.0020.001C] # SQUARE BQ -0299 ; [.1CCA.0020.0002] # LATIN LETTER SMALL CAPITAL B -0180 ; [.1CCE.0020.0002] # LATIN SMALL LETTER B WITH STROKE -0243 ; [.1CCE.0020.0008] # LATIN CAPITAL LETTER B WITH STROKE -1D2F ; [.1CD2.0020.0002] # MODIFIER LETTER CAPITAL BARRED B -1D03 ; [.1CD3.0020.0002] # LATIN LETTER SMALL CAPITAL BARRED B -1D6C ; [.1CD4.0020.0002] # LATIN SMALL LETTER B WITH MIDDLE TILDE -A797 ; [.1CD5.0020.0002] # LATIN SMALL LETTER B WITH FLOURISH -A796 ; [.1CD5.0020.0008] # LATIN CAPITAL LETTER B WITH FLOURISH -1D80 ; [.1CD6.0020.0002] # LATIN SMALL LETTER B WITH PALATAL HOOK -0253 ; [.1CD7.0020.0002] # LATIN SMALL LETTER B WITH HOOK -0181 ; [.1CD7.0020.0008] # LATIN CAPITAL LETTER B WITH HOOK -0183 ; [.1CDB.0020.0002] # LATIN SMALL LETTER B WITH TOPBAR -0182 ; [.1CDB.0020.0008] # LATIN CAPITAL LETTER B WITH TOPBAR -A7B5 ; [.1CDF.0020.0002] # LATIN SMALL LETTER BETA -1DE9 ; [.1CDF.0020.0004] # COMBINING LATIN SMALL LETTER BETA -A7B4 ; [.1CDF.0020.0008] # LATIN CAPITAL LETTER BETA -0063 ; [.1CE0.0020.0002] # LATIN SMALL LETTER C -FF43 ; [.1CE0.0020.0003] # FULLWIDTH LATIN SMALL LETTER C -0368 ; [.1CE0.0020.0004] # COMBINING LATIN SMALL LETTER C -217D ; [.1CE0.0020.0004] # SMALL ROMAN NUMERAL ONE HUNDRED -249E ; [*0318.0020.0004][.1CE0.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER C -1D41C ; [.1CE0.0020.0005] # MATHEMATICAL BOLD SMALL C -1D450 ; [.1CE0.0020.0005] # MATHEMATICAL ITALIC SMALL C -1D484 ; [.1CE0.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL C -1D4B8 ; [.1CE0.0020.0005] # MATHEMATICAL SCRIPT SMALL C -1D4EC ; [.1CE0.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL C -1D520 ; [.1CE0.0020.0005] # MATHEMATICAL FRAKTUR SMALL C -1D554 ; [.1CE0.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL C -1D588 ; [.1CE0.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL C -1D5BC ; [.1CE0.0020.0005] # MATHEMATICAL SANS-SERIF SMALL C -1D5F0 ; [.1CE0.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL C -1D624 ; [.1CE0.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL C -1D658 ; [.1CE0.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C -1D68C ; [.1CE0.0020.0005] # MATHEMATICAL MONOSPACE SMALL C -24D2 ; [.1CE0.0020.0006] # CIRCLED LATIN SMALL LETTER C -0043 ; [.1CE0.0020.0008] # LATIN CAPITAL LETTER C -FF23 ; [.1CE0.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER C -2103 ; [*050C.0020.0004][.1CE0.0020.000A] # DEGREE CELSIUS -216D ; [.1CE0.0020.000A] # ROMAN NUMERAL ONE HUNDRED -1F112 ; [*0318.0020.0004][.1CE0.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER C -2102 ; [.1CE0.0020.000B] # DOUBLE-STRUCK CAPITAL C -212D ; [.1CE0.0020.000B] # BLACK-LETTER CAPITAL C -1D402 ; [.1CE0.0020.000B] # MATHEMATICAL BOLD CAPITAL C -1D436 ; [.1CE0.0020.000B] # MATHEMATICAL ITALIC CAPITAL C -1D46A ; [.1CE0.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL C -1D49E ; [.1CE0.0020.000B] # MATHEMATICAL SCRIPT CAPITAL C -1D4D2 ; [.1CE0.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL C -1D56E ; [.1CE0.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL C -1D5A2 ; [.1CE0.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL C -1D5D6 ; [.1CE0.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL C -1D60A ; [.1CE0.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL C -1D63E ; [.1CE0.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C -1D672 ; [.1CE0.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL C -24B8 ; [.1CE0.0020.000C] # CIRCLED LATIN CAPITAL LETTER C -1F12B ; [.1CE0.0020.000C] # CIRCLED ITALIC LATIN CAPITAL LETTER C -1F152 ; [.1CE0.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER C -1D9C ; [.1CE0.0020.0014] # MODIFIER LETTER SMALL C -1F132 ; [.1CE0.0020.001D] # SQUARED LATIN CAPITAL LETTER C -1F172 ; [.1CE0.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER C -0107 ; [.1CE0.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER C WITH ACUTE -0106 ; [.1CE0.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER C WITH ACUTE -0109 ; [.1CE0.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER C WITH CIRCUMFLEX -0108 ; [.1CE0.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER C WITH CIRCUMFLEX -010D ; [.1CE0.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER C WITH CARON -010C ; [.1CE0.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER C WITH CARON -010B ; [.1CE0.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER C WITH DOT ABOVE -010A ; [.1CE0.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER C WITH DOT ABOVE -00E7 ; [.1CE0.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER C WITH CEDILLA -1DD7 ; [.1CE0.0020.0004][.0000.0030.0004] # COMBINING LATIN SMALL LETTER C CEDILLA -00C7 ; [.1CE0.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER C WITH CEDILLA -1E09 ; [.1CE0.0020.0002][.0000.0030.0002][.0000.0024.0002] # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE -1E08 ; [.1CE0.0020.0008][.0000.0030.0002][.0000.0024.0002] # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE -3388 ; [.1CE0.0020.001C][.1CAD.0020.001C][.1DDD.0020.001C] # SQUARE CAL -33C4 ; [.1CE0.0020.001C][.1CE0.0020.001C] # SQUARE CC -1F12D ; [.1CE0.0020.000C][.1CF5.0020.000C] # CIRCLED CD -33C5 ; [.1CE0.0020.001C][.1CF5.0020.001C] # SQUARE CD -33C6 ; [.1CE0.0020.001D][*063B.0020.001C][.1DCB.0020.001C][.1D5A.0020.001C] # SQUARE C OVER KG -1F191 ; [.1CE0.0020.001D][.1DDD.0020.001D] # SQUARED CL -339D ; [.1CE0.0020.001C][.1E10.0020.001C] # SQUARE CM -33A0 ; [.1CE0.0020.001C][.1E10.0020.001C][.1CA5.0020.001C] # SQUARE CM SQUARED -33A4 ; [.1CE0.0020.001C][.1E10.0020.001C][.1CA6.0020.001C] # SQUARE CM CUBED -2105 ; [.1CE0.0020.0004][*0395.0020.0004][.1E43.0020.0004] # CARE OF -33C7 ; [.1CE0.0020.001D][.1E43.0020.001C][*0278.0020.001C] # SQUARE CO -1F192 ; [.1CE0.0020.001D][.1E43.0020.001D][.1E43.0020.001D][.1DDD.0020.001D] # SQUARED COOL -2106 ; [.1CE0.0020.0004][*0395.0020.0004][.1F1B.0020.0004] # CADA UNA -1D04 ; [.1CE4.0020.0002] # LATIN LETTER SMALL CAPITAL C -023C ; [.1CE5.0020.0002] # LATIN SMALL LETTER C WITH STROKE -023B ; [.1CE5.0020.0008] # LATIN CAPITAL LETTER C WITH STROKE -A793 ; [.1CE9.0020.0002] # LATIN SMALL LETTER C WITH BAR -A792 ; [.1CE9.0020.0008] # LATIN CAPITAL LETTER C WITH BAR -A794 ; [.1CEA.0020.0002] # LATIN SMALL LETTER C WITH PALATAL HOOK -0188 ; [.1CEB.0020.0002] # LATIN SMALL LETTER C WITH HOOK -0187 ; [.1CEB.0020.0008] # LATIN CAPITAL LETTER C WITH HOOK -0255 ; [.1CEF.0020.0002] # LATIN SMALL LETTER C WITH CURL -1D9D ; [.1CEF.0020.0014] # MODIFIER LETTER SMALL C WITH CURL -2184 ; [.1CF3.0020.0002] # LATIN SMALL LETTER REVERSED C -2183 ; [.1CF3.0020.0008] # ROMAN NUMERAL REVERSED ONE HUNDRED -A73F ; [.1CF4.0020.0002] # LATIN SMALL LETTER REVERSED C WITH DOT -A73E ; [.1CF4.0020.0008] # LATIN CAPITAL LETTER REVERSED C WITH DOT -0064 ; [.1CF5.0020.0002] # LATIN SMALL LETTER D -FF44 ; [.1CF5.0020.0003] # FULLWIDTH LATIN SMALL LETTER D -0369 ; [.1CF5.0020.0004] # COMBINING LATIN SMALL LETTER D -217E ; [.1CF5.0020.0004] # SMALL ROMAN NUMERAL FIVE HUNDRED -249F ; [*0318.0020.0004][.1CF5.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER D -2146 ; [.1CF5.0020.0005] # DOUBLE-STRUCK ITALIC SMALL D -1D41D ; [.1CF5.0020.0005] # MATHEMATICAL BOLD SMALL D -1D451 ; [.1CF5.0020.0005] # MATHEMATICAL ITALIC SMALL D -1D485 ; [.1CF5.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL D -1D4B9 ; [.1CF5.0020.0005] # MATHEMATICAL SCRIPT SMALL D -1D4ED ; [.1CF5.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL D -1D521 ; [.1CF5.0020.0005] # MATHEMATICAL FRAKTUR SMALL D -1D555 ; [.1CF5.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL D -1D589 ; [.1CF5.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL D -1D5BD ; [.1CF5.0020.0005] # MATHEMATICAL SANS-SERIF SMALL D -1D5F1 ; [.1CF5.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL D -1D625 ; [.1CF5.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL D -1D659 ; [.1CF5.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D -1D68D ; [.1CF5.0020.0005] # MATHEMATICAL MONOSPACE SMALL D -24D3 ; [.1CF5.0020.0006] # CIRCLED LATIN SMALL LETTER D -0044 ; [.1CF5.0020.0008] # LATIN CAPITAL LETTER D -FF24 ; [.1CF5.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER D -216E ; [.1CF5.0020.000A] # ROMAN NUMERAL FIVE HUNDRED -1F113 ; [*0318.0020.0004][.1CF5.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER D -2145 ; [.1CF5.0020.000B] # DOUBLE-STRUCK ITALIC CAPITAL D -1D403 ; [.1CF5.0020.000B] # MATHEMATICAL BOLD CAPITAL D -1D437 ; [.1CF5.0020.000B] # MATHEMATICAL ITALIC CAPITAL D -1D46B ; [.1CF5.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL D -1D49F ; [.1CF5.0020.000B] # MATHEMATICAL SCRIPT CAPITAL D -1D4D3 ; [.1CF5.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL D -1D507 ; [.1CF5.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL D -1D53B ; [.1CF5.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL D -1D56F ; [.1CF5.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL D -1D5A3 ; [.1CF5.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL D -1D5D7 ; [.1CF5.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL D -1D60B ; [.1CF5.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL D -1D63F ; [.1CF5.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D -1D673 ; [.1CF5.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL D -24B9 ; [.1CF5.0020.000C] # CIRCLED LATIN CAPITAL LETTER D -1F153 ; [.1CF5.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER D -1D48 ; [.1CF5.0020.0014] # MODIFIER LETTER SMALL D -1F1A5 ; [.1CF5.0020.001C] # SQUARED LATIN SMALL LETTER D -1D30 ; [.1CF5.0020.001D] # MODIFIER LETTER CAPITAL D -1F133 ; [.1CF5.0020.001D] # SQUARED LATIN CAPITAL LETTER D -1F173 ; [.1CF5.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER D -010F ; [.1CF5.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER D WITH CARON -010E ; [.1CF5.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER D WITH CARON -1E0B ; [.1CF5.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER D WITH DOT ABOVE -1E0A ; [.1CF5.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER D WITH DOT ABOVE -1E11 ; [.1CF5.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER D WITH CEDILLA -1E10 ; [.1CF5.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER D WITH CEDILLA -0111 ; [.1CF5.0020.0002][.0000.0039.0002] # LATIN SMALL LETTER D WITH STROKE -0110 ; [.1CF5.0020.0008][.0000.0039.0002] # LATIN CAPITAL LETTER D WITH STROKE -1E0D ; [.1CF5.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER D WITH DOT BELOW -1E0C ; [.1CF5.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER D WITH DOT BELOW -1E13 ; [.1CF5.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW -1E12 ; [.1CF5.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW -1E0F ; [.1CF5.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER D WITH LINE BELOW -1E0E ; [.1CF5.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER D WITH LINE BELOW -00F0 ; [.1CF5.0020.0004][.0000.0111.0004] # LATIN SMALL LETTER ETH -1DD9 ; [.1CF5.0020.0004][.0000.0111.0004] # COMBINING LATIN SMALL LETTER ETH -00D0 ; [.1CF5.0020.000A][.0000.0111.0004] # LATIN CAPITAL LETTER ETH -1D9E ; [.1CF5.0020.0014][.0000.0111.0014] # MODIFIER LETTER SMALL ETH -1DD8 ; [.1CF5.0020.0004][.0000.0112.0004] # COMBINING LATIN SMALL LETTER INSULAR D -A77A ; [.1CF5.0020.0004][.0000.0112.0004] # LATIN SMALL LETTER INSULAR D -A779 ; [.1CF5.0020.000A][.0000.0112.0004] # LATIN CAPITAL LETTER INSULAR D -3372 ; [.1CF5.0020.001C][.1CAD.0020.001C] # SQUARE DA -0238 ; [.1CF5.0020.0004][.1CC6.0020.0004] # LATIN SMALL LETTER DB DIGRAPH -33C8 ; [.1CF5.0020.001C][.1CC6.0020.001D] # SQUARE DB -1F190 ; [.1CF5.0020.001D][.1DB2.0020.001D] # SQUARE DJ -3397 ; [.1CF5.0020.001C][.1DDD.0020.001C] # SQUARE DL -3377 ; [.1CF5.0020.001C][.1E10.0020.001C] # SQUARE DM -3378 ; [.1CF5.0020.001C][.1E10.0020.001C][.1CA5.0020.001C] # SQUARE DM SQUARED -3379 ; [.1CF5.0020.001C][.1E10.0020.001C][.1CA6.0020.001C] # SQUARE DM CUBED -01F3 ; [.1CF5.0020.0004][.1F87.0020.0004] # LATIN SMALL LETTER DZ -02A3 ; [.1CF5.0020.0004][.1F87.0020.0004] # LATIN SMALL LETTER DZ DIGRAPH -01F2 ; [.1CF5.0020.000A][.1F87.0020.0004] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z -01F1 ; [.1CF5.0020.000A][.1F87.0020.000A] # LATIN CAPITAL LETTER DZ -01C6 ; [.1CF5.0020.0004][.1F87.0020.0004][.0000.0028.0004] # LATIN SMALL LETTER DZ WITH CARON -01C5 ; [.1CF5.0020.000A][.1F87.0020.0004][.0000.0028.0004] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON -01C4 ; [.1CF5.0020.000A][.1F87.0020.000A][.0000.0028.0004] # LATIN CAPITAL LETTER DZ WITH CARON -02A5 ; [.1CF5.0020.0004][.1F9A.0020.0004] # LATIN SMALL LETTER DZ DIGRAPH WITH CURL -02A4 ; [.1CF5.0020.0004][.1FA4.0020.0004] # LATIN SMALL LETTER DEZH DIGRAPH -1D05 ; [.1CF9.0020.0002] # LATIN LETTER SMALL CAPITAL D -1D06 ; [.1CFA.0020.0002] # LATIN LETTER SMALL CAPITAL ETH -1D6D ; [.1CFB.0020.0002] # LATIN SMALL LETTER D WITH MIDDLE TILDE -1D81 ; [.1CFC.0020.0002] # LATIN SMALL LETTER D WITH PALATAL HOOK -0256 ; [.1CFD.0020.0002] # LATIN SMALL LETTER D WITH TAIL -0189 ; [.1CFD.0020.0008] # LATIN CAPITAL LETTER AFRICAN D -0257 ; [.1D01.0020.0002] # LATIN SMALL LETTER D WITH HOOK -018A ; [.1D01.0020.0008] # LATIN CAPITAL LETTER D WITH HOOK -1D91 ; [.1D05.0020.0002] # LATIN SMALL LETTER D WITH HOOK AND TAIL -018C ; [.1D06.0020.0002] # LATIN SMALL LETTER D WITH TOPBAR -018B ; [.1D06.0020.0008] # LATIN CAPITAL LETTER D WITH TOPBAR -0221 ; [.1D0A.0020.0002] # LATIN SMALL LETTER D WITH CURL -A771 ; [.1D0E.0020.0002] # LATIN SMALL LETTER DUM -1E9F ; [.1D0F.0020.0002] # LATIN SMALL LETTER DELTA -0065 ; [.1D10.0020.0002] # LATIN SMALL LETTER E -FF45 ; [.1D10.0020.0003] # FULLWIDTH LATIN SMALL LETTER E -0364 ; [.1D10.0020.0004] # COMBINING LATIN SMALL LETTER E -24A0 ; [*0318.0020.0004][.1D10.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER E -212F ; [.1D10.0020.0005] # SCRIPT SMALL E -2147 ; [.1D10.0020.0005] # DOUBLE-STRUCK ITALIC SMALL E -1D41E ; [.1D10.0020.0005] # MATHEMATICAL BOLD SMALL E -1D452 ; [.1D10.0020.0005] # MATHEMATICAL ITALIC SMALL E -1D486 ; [.1D10.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL E -1D4EE ; [.1D10.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL E -1D522 ; [.1D10.0020.0005] # MATHEMATICAL FRAKTUR SMALL E -1D556 ; [.1D10.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL E -1D58A ; [.1D10.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL E -1D5BE ; [.1D10.0020.0005] # MATHEMATICAL SANS-SERIF SMALL E -1D5F2 ; [.1D10.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL E -1D626 ; [.1D10.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL E -1D65A ; [.1D10.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E -1D68E ; [.1D10.0020.0005] # MATHEMATICAL MONOSPACE SMALL E -24D4 ; [.1D10.0020.0006] # CIRCLED LATIN SMALL LETTER E -0045 ; [.1D10.0020.0008] # LATIN CAPITAL LETTER E -FF25 ; [.1D10.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER E -1F114 ; [*0318.0020.0004][.1D10.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER E -2130 ; [.1D10.0020.000B] # SCRIPT CAPITAL E -1D404 ; [.1D10.0020.000B] # MATHEMATICAL BOLD CAPITAL E -1D438 ; [.1D10.0020.000B] # MATHEMATICAL ITALIC CAPITAL E -1D46C ; [.1D10.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL E -1D4D4 ; [.1D10.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL E -1D508 ; [.1D10.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL E -1D53C ; [.1D10.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL E -1D570 ; [.1D10.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL E -1D5A4 ; [.1D10.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL E -1D5D8 ; [.1D10.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL E -1D60C ; [.1D10.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL E -1D640 ; [.1D10.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E -1D674 ; [.1D10.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL E -24BA ; [.1D10.0020.000C] # CIRCLED LATIN CAPITAL LETTER E -1F154 ; [.1D10.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER E -1D49 ; [.1D10.0020.0014] # MODIFIER LETTER SMALL E -2091 ; [.1D10.0020.0015] # LATIN SUBSCRIPT SMALL LETTER E -1D31 ; [.1D10.0020.001D] # MODIFIER LETTER CAPITAL E -1F134 ; [.1D10.0020.001D] # SQUARED LATIN CAPITAL LETTER E -1F174 ; [.1D10.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER E -00E9 ; [.1D10.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER E WITH ACUTE -00C9 ; [.1D10.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER E WITH ACUTE -00E8 ; [.1D10.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER E WITH GRAVE -00C8 ; [.1D10.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER E WITH GRAVE -0115 ; [.1D10.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER E WITH BREVE -0114 ; [.1D10.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER E WITH BREVE -00EA ; [.1D10.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -00CA ; [.1D10.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -1EBF ; [.1D10.0020.0002][.0000.0027.0002][.0000.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -1EBE ; [.1D10.0020.0008][.0000.0027.0002][.0000.0024.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -1EC1 ; [.1D10.0020.0002][.0000.0027.0002][.0000.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC0 ; [.1D10.0020.0008][.0000.0027.0002][.0000.0025.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC5 ; [.1D10.0020.0002][.0000.0027.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE -1EC4 ; [.1D10.0020.0008][.0000.0027.0002][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE -1EC3 ; [.1D10.0020.0002][.0000.0027.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC2 ; [.1D10.0020.0008][.0000.0027.0002][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -011B ; [.1D10.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER E WITH CARON -011A ; [.1D10.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER E WITH CARON -00EB ; [.1D10.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER E WITH DIAERESIS -00CB ; [.1D10.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER E WITH DIAERESIS -1EBD ; [.1D10.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH TILDE -1EBC ; [.1D10.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH TILDE -0117 ; [.1D10.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER E WITH DOT ABOVE -0116 ; [.1D10.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER E WITH DOT ABOVE -0229 ; [.1D10.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER E WITH CEDILLA -0228 ; [.1D10.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER E WITH CEDILLA -1E1D ; [.1D10.0020.0002][.0000.0030.0002][.0000.0026.0002] # LATIN SMALL LETTER E WITH CEDILLA AND BREVE -1E1C ; [.1D10.0020.0008][.0000.0030.0002][.0000.0026.0002] # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE -0119 ; [.1D10.0020.0002][.0000.0031.0002] # LATIN SMALL LETTER E WITH OGONEK -0118 ; [.1D10.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER E WITH OGONEK -0113 ; [.1D10.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER E WITH MACRON -0112 ; [.1D10.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER E WITH MACRON -1E17 ; [.1D10.0020.0002][.0000.0032.0002][.0000.0024.0002] # LATIN SMALL LETTER E WITH MACRON AND ACUTE -1E16 ; [.1D10.0020.0008][.0000.0032.0002][.0000.0024.0002] # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE -1E15 ; [.1D10.0020.0002][.0000.0032.0002][.0000.0025.0002] # LATIN SMALL LETTER E WITH MACRON AND GRAVE -1E14 ; [.1D10.0020.0008][.0000.0032.0002][.0000.0025.0002] # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE -1EBB ; [.1D10.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH HOOK ABOVE -1EBA ; [.1D10.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH HOOK ABOVE -0205 ; [.1D10.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER E WITH DOUBLE GRAVE -0204 ; [.1D10.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE -0207 ; [.1D10.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER E WITH INVERTED BREVE -0206 ; [.1D10.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER E WITH INVERTED BREVE -1EB9 ; [.1D10.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH DOT BELOW -1EB8 ; [.1D10.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH DOT BELOW -1EC7 ; [.1D10.0020.0002][.0000.0042.0002][.0000.0027.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC6 ; [.1D10.0020.0008][.0000.0042.0002][.0000.0027.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1E19 ; [.1D10.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW -1E18 ; [.1D10.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW -1E1B ; [.1D10.0020.0002][.0000.0048.0002] # LATIN SMALL LETTER E WITH TILDE BELOW -1E1A ; [.1D10.0020.0008][.0000.0048.0002] # LATIN CAPITAL LETTER E WITH TILDE BELOW -32CD ; [.1D10.0020.001C][.1E99.0020.001C][.1D5A.0020.001C] # SQUARE ERG -32CE ; [.1D10.0020.001C][.1F49.0020.001D] # SQUARE EV -1D07 ; [.1D14.0020.0002] # LATIN LETTER SMALL CAPITAL E -AB32 ; [.1D15.0020.0002] # LATIN SMALL LETTER BLACKLETTER E -AB33 ; [.1D16.0020.0002] # LATIN SMALL LETTER BARRED E -0247 ; [.1D17.0020.0002] # LATIN SMALL LETTER E WITH STROKE -0246 ; [.1D17.0020.0008] # LATIN CAPITAL LETTER E WITH STROKE -1D92 ; [.1D1B.0020.0002] # LATIN SMALL LETTER E WITH RETROFLEX HOOK -AB34 ; [.1D1C.0020.0002] # LATIN SMALL LETTER E WITH FLOURISH -2C78 ; [.1D1D.0020.0002] # LATIN SMALL LETTER E WITH NOTCH -01DD ; [.1D1E.0020.0002] # LATIN SMALL LETTER TURNED E -018E ; [.1D1E.0020.0008] # LATIN CAPITAL LETTER REVERSED E -1D32 ; [.1D1E.0020.001D] # MODIFIER LETTER CAPITAL REVERSED E -2C7B ; [.1D22.0020.0002] # LATIN LETTER SMALL CAPITAL TURNED E -0259 ; [.1D23.0020.0002] # LATIN SMALL LETTER SCHWA -1DEA ; [.1D23.0020.0004] # COMBINING LATIN SMALL LETTER SCHWA -018F ; [.1D23.0020.0008] # LATIN CAPITAL LETTER SCHWA -1D4A ; [.1D23.0020.0014] # MODIFIER LETTER SMALL SCHWA -2094 ; [.1D23.0020.0015] # LATIN SUBSCRIPT SMALL LETTER SCHWA -1D95 ; [.1D27.0020.0002] # LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK -025B ; [.1D28.0020.0002] # LATIN SMALL LETTER OPEN E -0190 ; [.1D28.0020.0008] # LATIN CAPITAL LETTER OPEN E -2107 ; [.1D28.0020.000A] # EULER CONSTANT -1D4B ; [.1D28.0020.0014] # MODIFIER LETTER SMALL OPEN E -1D93 ; [.1D2C.0020.0002] # LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK -0258 ; [.1D2D.0020.0002] # LATIN SMALL LETTER REVERSED E -025A ; [.1D31.0020.0002] # LATIN SMALL LETTER SCHWA WITH HOOK -025C ; [.1D35.0020.0002] # LATIN SMALL LETTER REVERSED OPEN E -A7AB ; [.1D35.0020.0008] # LATIN CAPITAL LETTER REVERSED OPEN E -1D9F ; [.1D35.0020.0014] # MODIFIER LETTER SMALL REVERSED OPEN E -1D94 ; [.1D39.0020.0002] # LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK -1D08 ; [.1D3A.0020.0002] # LATIN SMALL LETTER TURNED OPEN E -1D4C ; [.1D3A.0020.0014] # MODIFIER LETTER SMALL TURNED OPEN E -025D ; [.1D3B.0020.0002] # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK -025E ; [.1D3F.0020.0002] # LATIN SMALL LETTER CLOSED REVERSED OPEN E -029A ; [.1D43.0020.0002] # LATIN SMALL LETTER CLOSED OPEN E -0264 ; [.1D47.0020.0002] # LATIN SMALL LETTER RAMS HORN -0066 ; [.1D4B.0020.0002] # LATIN SMALL LETTER F -FF46 ; [.1D4B.0020.0003] # FULLWIDTH LATIN SMALL LETTER F -1DEB ; [.1D4B.0020.0004] # COMBINING LATIN SMALL LETTER F -24A1 ; [*0318.0020.0004][.1D4B.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER F -1D41F ; [.1D4B.0020.0005] # MATHEMATICAL BOLD SMALL F -1D453 ; [.1D4B.0020.0005] # MATHEMATICAL ITALIC SMALL F -1D487 ; [.1D4B.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL F -1D4BB ; [.1D4B.0020.0005] # MATHEMATICAL SCRIPT SMALL F -1D4EF ; [.1D4B.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL F -1D523 ; [.1D4B.0020.0005] # MATHEMATICAL FRAKTUR SMALL F -1D557 ; [.1D4B.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL F -1D58B ; [.1D4B.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL F -1D5BF ; [.1D4B.0020.0005] # MATHEMATICAL SANS-SERIF SMALL F -1D5F3 ; [.1D4B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL F -1D627 ; [.1D4B.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL F -1D65B ; [.1D4B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F -1D68F ; [.1D4B.0020.0005] # MATHEMATICAL MONOSPACE SMALL F -24D5 ; [.1D4B.0020.0006] # CIRCLED LATIN SMALL LETTER F -0046 ; [.1D4B.0020.0008] # LATIN CAPITAL LETTER F -FF26 ; [.1D4B.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER F -2109 ; [*050C.0020.0004][.1D4B.0020.000A] # DEGREE FAHRENHEIT -1F115 ; [*0318.0020.0004][.1D4B.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER F -2131 ; [.1D4B.0020.000B] # SCRIPT CAPITAL F -1D405 ; [.1D4B.0020.000B] # MATHEMATICAL BOLD CAPITAL F -1D439 ; [.1D4B.0020.000B] # MATHEMATICAL ITALIC CAPITAL F -1D46D ; [.1D4B.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL F -1D4D5 ; [.1D4B.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL F -1D509 ; [.1D4B.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL F -1D53D ; [.1D4B.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL F -1D571 ; [.1D4B.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL F -1D5A5 ; [.1D4B.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL F -1D5D9 ; [.1D4B.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL F -1D60D ; [.1D4B.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL F -1D641 ; [.1D4B.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F -1D675 ; [.1D4B.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL F -24BB ; [.1D4B.0020.000C] # CIRCLED LATIN CAPITAL LETTER F -1F155 ; [.1D4B.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER F -1DA0 ; [.1D4B.0020.0014] # MODIFIER LETTER SMALL F -1F135 ; [.1D4B.0020.001D] # SQUARED LATIN CAPITAL LETTER F -1F175 ; [.1D4B.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER F -1E1F ; [.1D4B.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER F WITH DOT ABOVE -1E1E ; [.1D4B.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER F WITH DOT ABOVE -A77C ; [.1D4B.0020.0004][.0000.0112.0004] # LATIN SMALL LETTER INSULAR F -A77B ; [.1D4B.0020.000A][.0000.0112.0004] # LATIN CAPITAL LETTER INSULAR F -213B ; [.1D4B.0020.000A][.1CAD.0020.000A][.1F65.0020.000A] # FACSIMILE SIGN -FB00 ; [.1D4B.0020.0004][.1D4B.0020.0004] # LATIN SMALL LIGATURE FF -FB03 ; [.1D4B.0020.0004][.1D4B.0020.0004][.1D98.0020.0004] # LATIN SMALL LIGATURE FFI -FB04 ; [.1D4B.0020.0004][.1D4B.0020.0004][.1DDD.0020.0004] # LATIN SMALL LIGATURE FFL -FB01 ; [.1D4B.0020.0004][.1D98.0020.0004] # LATIN SMALL LIGATURE FI -FB02 ; [.1D4B.0020.0004][.1DDD.0020.0004] # LATIN SMALL LIGATURE FL -3399 ; [.1D4B.0020.001C][.1E10.0020.001C] # SQUARE FM -02A9 ; [.1D4B.0020.0004][.1E3E.0020.0004] # LATIN SMALL LETTER FENG DIGRAPH -1F193 ; [.1D4B.0020.001D][.1E99.0020.001D][.1D10.0020.001D][.1D10.0020.001D] # SQUARED FREE -A730 ; [.1D4F.0020.0002] # LATIN LETTER SMALL CAPITAL F -AB35 ; [.1D50.0020.0002] # LATIN SMALL LETTER LENIS F -A799 ; [.1D51.0020.0002] # LATIN SMALL LETTER F WITH STROKE -A798 ; [.1D51.0020.0008] # LATIN CAPITAL LETTER F WITH STROKE -1D6E ; [.1D52.0020.0002] # LATIN SMALL LETTER F WITH MIDDLE TILDE -1D82 ; [.1D53.0020.0002] # LATIN SMALL LETTER F WITH PALATAL HOOK -0192 ; [.1D54.0020.0002] # LATIN SMALL LETTER F WITH HOOK -0191 ; [.1D54.0020.0008] # LATIN CAPITAL LETTER F WITH HOOK -214E ; [.1D58.0020.0002] # TURNED SMALL F -2132 ; [.1D58.0020.0008] # TURNED CAPITAL F -A7FB ; [.1D59.0020.0002] # LATIN EPIGRAPHIC LETTER REVERSED F -0067 ; [.1D5A.0020.0002] # LATIN SMALL LETTER G -FF47 ; [.1D5A.0020.0003] # FULLWIDTH LATIN SMALL LETTER G -1DDA ; [.1D5A.0020.0004] # COMBINING LATIN SMALL LETTER G -24A2 ; [*0318.0020.0004][.1D5A.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER G -210A ; [.1D5A.0020.0005] # SCRIPT SMALL G -1D420 ; [.1D5A.0020.0005] # MATHEMATICAL BOLD SMALL G -1D454 ; [.1D5A.0020.0005] # MATHEMATICAL ITALIC SMALL G -1D488 ; [.1D5A.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL G -1D4F0 ; [.1D5A.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL G -1D524 ; [.1D5A.0020.0005] # MATHEMATICAL FRAKTUR SMALL G -1D558 ; [.1D5A.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL G -1D58C ; [.1D5A.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL G -1D5C0 ; [.1D5A.0020.0005] # MATHEMATICAL SANS-SERIF SMALL G -1D5F4 ; [.1D5A.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL G -1D628 ; [.1D5A.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL G -1D65C ; [.1D5A.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G -1D690 ; [.1D5A.0020.0005] # MATHEMATICAL MONOSPACE SMALL G -24D6 ; [.1D5A.0020.0006] # CIRCLED LATIN SMALL LETTER G -0047 ; [.1D5A.0020.0008] # LATIN CAPITAL LETTER G -FF27 ; [.1D5A.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER G -1F116 ; [*0318.0020.0004][.1D5A.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER G -1D406 ; [.1D5A.0020.000B] # MATHEMATICAL BOLD CAPITAL G -1D43A ; [.1D5A.0020.000B] # MATHEMATICAL ITALIC CAPITAL G -1D46E ; [.1D5A.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL G -1D4A2 ; [.1D5A.0020.000B] # MATHEMATICAL SCRIPT CAPITAL G -1D4D6 ; [.1D5A.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL G -1D50A ; [.1D5A.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL G -1D53E ; [.1D5A.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL G -1D572 ; [.1D5A.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL G -1D5A6 ; [.1D5A.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL G -1D5DA ; [.1D5A.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL G -1D60E ; [.1D5A.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL G -1D642 ; [.1D5A.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G -1D676 ; [.1D5A.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL G -24BC ; [.1D5A.0020.000C] # CIRCLED LATIN CAPITAL LETTER G -1F156 ; [.1D5A.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER G -1D4D ; [.1D5A.0020.0014] # MODIFIER LETTER SMALL G -1D33 ; [.1D5A.0020.001D] # MODIFIER LETTER CAPITAL G -1F136 ; [.1D5A.0020.001D] # SQUARED LATIN CAPITAL LETTER G -1F176 ; [.1D5A.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER G -01F5 ; [.1D5A.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER G WITH ACUTE -01F4 ; [.1D5A.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER G WITH ACUTE -011F ; [.1D5A.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER G WITH BREVE -011E ; [.1D5A.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER G WITH BREVE -011D ; [.1D5A.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER G WITH CIRCUMFLEX -011C ; [.1D5A.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER G WITH CIRCUMFLEX -01E7 ; [.1D5A.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER G WITH CARON -01E6 ; [.1D5A.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER G WITH CARON -0121 ; [.1D5A.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER G WITH DOT ABOVE -0120 ; [.1D5A.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER G WITH DOT ABOVE -0123 ; [.1D5A.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER G WITH CEDILLA -0122 ; [.1D5A.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER G WITH CEDILLA -1E21 ; [.1D5A.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER G WITH MACRON -1E20 ; [.1D5A.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER G WITH MACRON -A7A1 ; [.1D5A.0020.0004][.0000.0035.0004] # LATIN SMALL LETTER G WITH OBLIQUE STROKE -A7A0 ; [.1D5A.0020.000A][.0000.0035.0004] # LATIN CAPITAL LETTER G WITH OBLIQUE STROKE -1D79 ; [.1D5A.0020.0004][.0000.0112.0004] # LATIN SMALL LETTER INSULAR G -A77D ; [.1D5A.0020.000A][.0000.0112.0004] # LATIN CAPITAL LETTER INSULAR G -33FF ; [.1D5A.0020.001C][.1CAD.0020.001C][.1DDD.0020.001C] # SQUARE GAL -3387 ; [.1D5A.0020.001D][.1CC6.0020.001D] # SQUARE GB -3393 ; [.1D5A.0020.001D][.1D7E.0020.001D][.1F87.0020.001C] # SQUARE GHZ -33AC ; [.1D5A.0020.001D][.1E72.0020.001D][.1CAD.0020.001C] # SQUARE GPA -33C9 ; [.1D5A.0020.001D][.1F71.0020.001C] # SQUARE GY -0261 ; [.1D5E.0020.0002] # LATIN SMALL LETTER SCRIPT G -A7AC ; [.1D5E.0020.0008] # LATIN CAPITAL LETTER SCRIPT G -1DA2 ; [.1D5E.0020.0014] # MODIFIER LETTER SMALL SCRIPT G -AB36 ; [.1D62.0020.0002] # LATIN SMALL LETTER SCRIPT G WITH CROSSED-TAIL -0262 ; [.1D63.0020.0002] # LATIN LETTER SMALL CAPITAL G -1DDB ; [.1D63.0020.0004] # COMBINING LATIN LETTER SMALL CAPITAL G -01E5 ; [.1D67.0020.0002] # LATIN SMALL LETTER G WITH STROKE -01E4 ; [.1D67.0020.0008] # LATIN CAPITAL LETTER G WITH STROKE -1D83 ; [.1D6B.0020.0002] # LATIN SMALL LETTER G WITH PALATAL HOOK -0260 ; [.1D6C.0020.0002] # LATIN SMALL LETTER G WITH HOOK -0193 ; [.1D6C.0020.0008] # LATIN CAPITAL LETTER G WITH HOOK -029B ; [.1D70.0020.0002] # LATIN LETTER SMALL CAPITAL G WITH HOOK -1D77 ; [.1D74.0020.0002] # LATIN SMALL LETTER TURNED G -A77F ; [.1D75.0020.0002] # LATIN SMALL LETTER TURNED INSULAR G -A77E ; [.1D75.0020.0008] # LATIN CAPITAL LETTER TURNED INSULAR G -0263 ; [.1D76.0020.0002] # LATIN SMALL LETTER GAMMA -0194 ; [.1D76.0020.0008] # LATIN CAPITAL LETTER GAMMA -02E0 ; [.1D76.0020.0014] # MODIFIER LETTER SMALL GAMMA -01A3 ; [.1D7A.0020.0002] # LATIN SMALL LETTER OI -01A2 ; [.1D7A.0020.0008] # LATIN CAPITAL LETTER OI -0068 ; [.1D7E.0020.0002] # LATIN SMALL LETTER H -FF48 ; [.1D7E.0020.0003] # FULLWIDTH LATIN SMALL LETTER H -036A ; [.1D7E.0020.0004] # COMBINING LATIN SMALL LETTER H -24A3 ; [*0318.0020.0004][.1D7E.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER H -210E ; [.1D7E.0020.0005] # PLANCK CONSTANT -1D421 ; [.1D7E.0020.0005] # MATHEMATICAL BOLD SMALL H -1D489 ; [.1D7E.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL H -1D4BD ; [.1D7E.0020.0005] # MATHEMATICAL SCRIPT SMALL H -1D4F1 ; [.1D7E.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL H -1D525 ; [.1D7E.0020.0005] # MATHEMATICAL FRAKTUR SMALL H -1D559 ; [.1D7E.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL H -1D58D ; [.1D7E.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL H -1D5C1 ; [.1D7E.0020.0005] # MATHEMATICAL SANS-SERIF SMALL H -1D5F5 ; [.1D7E.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL H -1D629 ; [.1D7E.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL H -1D65D ; [.1D7E.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H -1D691 ; [.1D7E.0020.0005] # MATHEMATICAL MONOSPACE SMALL H -24D7 ; [.1D7E.0020.0006] # CIRCLED LATIN SMALL LETTER H -0048 ; [.1D7E.0020.0008] # LATIN CAPITAL LETTER H -FF28 ; [.1D7E.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER H -1F117 ; [*0318.0020.0004][.1D7E.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER H -210B ; [.1D7E.0020.000B] # SCRIPT CAPITAL H -210C ; [.1D7E.0020.000B] # BLACK-LETTER CAPITAL H -210D ; [.1D7E.0020.000B] # DOUBLE-STRUCK CAPITAL H -1D407 ; [.1D7E.0020.000B] # MATHEMATICAL BOLD CAPITAL H -1D43B ; [.1D7E.0020.000B] # MATHEMATICAL ITALIC CAPITAL H -1D46F ; [.1D7E.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL H -1D4D7 ; [.1D7E.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL H -1D573 ; [.1D7E.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL H -1D5A7 ; [.1D7E.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL H -1D5DB ; [.1D7E.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL H -1D60F ; [.1D7E.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL H -1D643 ; [.1D7E.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H -1D677 ; [.1D7E.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL H -24BD ; [.1D7E.0020.000C] # CIRCLED LATIN CAPITAL LETTER H -1F157 ; [.1D7E.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER H -02B0 ; [.1D7E.0020.0014] # MODIFIER LETTER SMALL H -2095 ; [.1D7E.0020.0015] # LATIN SUBSCRIPT SMALL LETTER H -1D34 ; [.1D7E.0020.001D] # MODIFIER LETTER CAPITAL H -1F137 ; [.1D7E.0020.001D] # SQUARED LATIN CAPITAL LETTER H -1F177 ; [.1D7E.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER H -0125 ; [.1D7E.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER H WITH CIRCUMFLEX -0124 ; [.1D7E.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER H WITH CIRCUMFLEX -021F ; [.1D7E.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER H WITH CARON -021E ; [.1D7E.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER H WITH CARON -1E27 ; [.1D7E.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER H WITH DIAERESIS -1E26 ; [.1D7E.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER H WITH DIAERESIS -1E23 ; [.1D7E.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER H WITH DOT ABOVE -1E22 ; [.1D7E.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER H WITH DOT ABOVE -1E29 ; [.1D7E.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER H WITH CEDILLA -1E28 ; [.1D7E.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER H WITH CEDILLA -0127 ; [.1D7E.0020.0002][.0000.0039.0002] # LATIN SMALL LETTER H WITH STROKE -210F ; [.1D7E.0020.0002][.0000.0039.0002] # PLANCK CONSTANT OVER TWO PI -0126 ; [.1D7E.0020.0008][.0000.0039.0002] # LATIN CAPITAL LETTER H WITH STROKE -A7F8 ; [.1D7E.0020.0014][.0000.0039.0014] # MODIFIER LETTER CAPITAL H WITH STROKE -1E25 ; [.1D7E.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER H WITH DOT BELOW -1E24 ; [.1D7E.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER H WITH DOT BELOW -1E2B ; [.1D7E.0020.0002][.0000.0047.0002] # LATIN SMALL LETTER H WITH BREVE BELOW -1E2A ; [.1D7E.0020.0008][.0000.0047.0002] # LATIN CAPITAL LETTER H WITH BREVE BELOW -1E96 ; [.1D7E.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER H WITH LINE BELOW -33CA ; [.1D7E.0020.001C][.1CAD.0020.001C] # SQUARE HA -1F1A6 ; [.1D7E.0020.001D][.1CE0.0020.001C] # SQUARED HC -1F1A7 ; [.1D7E.0020.001D][.1CF5.0020.001C][.1E99.0020.001D] # SQUARED HDR -32CC ; [.1D7E.0020.001D][.1D5A.0020.001C] # SQUARE HG -1F1A8 ; [.1D7E.0020.001D][.1D98.0020.001C][*0209.0020.001C][.1E99.0020.001D][.1D10.0020.001C][.1ED7.0020.001C] # SQUARED HI-RES -33CB ; [.1D7E.0020.001D][.1E72.0020.001D] # SQUARE HP -3371 ; [.1D7E.0020.001C][.1E72.0020.001D][.1CAD.0020.001C] # SQUARE HPA -1F14A ; [.1D7E.0020.001D][.1F49.0020.001D] # SQUARED HV -3390 ; [.1D7E.0020.001D][.1F87.0020.001C] # SQUARE HZ -029C ; [.1D82.0020.0002] # LATIN LETTER SMALL CAPITAL H -0195 ; [.1D86.0020.0002] # LATIN SMALL LETTER HV -01F6 ; [.1D86.0020.0008] # LATIN CAPITAL LETTER HWAIR -A795 ; [.1D8A.0020.0002] # LATIN SMALL LETTER H WITH PALATAL HOOK -0266 ; [.1D8B.0020.0002] # LATIN SMALL LETTER H WITH HOOK -A7AA ; [.1D8B.0020.0008] # LATIN CAPITAL LETTER H WITH HOOK -02B1 ; [.1D8B.0020.0014] # MODIFIER LETTER SMALL H WITH HOOK -2C68 ; [.1D8F.0020.0002] # LATIN SMALL LETTER H WITH DESCENDER -2C67 ; [.1D8F.0020.0008] # LATIN CAPITAL LETTER H WITH DESCENDER -2C76 ; [.1D90.0020.0002] # LATIN SMALL LETTER HALF H -2C75 ; [.1D90.0020.0008] # LATIN CAPITAL LETTER HALF H -A727 ; [.1D91.0020.0002] # LATIN SMALL LETTER HENG -A726 ; [.1D91.0020.0008] # LATIN CAPITAL LETTER HENG -AB5C ; [.1D91.0020.0014] # MODIFIER LETTER SMALL HENG -0267 ; [.1D92.0020.0002] # LATIN SMALL LETTER HENG WITH HOOK -02BB ; [.1D96.0020.0002] # MODIFIER LETTER TURNED COMMA -02BD ; [.1D97.0020.0002] # MODIFIER LETTER REVERSED COMMA -0069 ; [.1D98.0020.0002] # LATIN SMALL LETTER I -FF49 ; [.1D98.0020.0003] # FULLWIDTH LATIN SMALL LETTER I -0365 ; [.1D98.0020.0004] # COMBINING LATIN SMALL LETTER I -2170 ; [.1D98.0020.0004] # SMALL ROMAN NUMERAL ONE -24A4 ; [*0318.0020.0004][.1D98.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER I -2139 ; [.1D98.0020.0005] # INFORMATION SOURCE -2148 ; [.1D98.0020.0005] # DOUBLE-STRUCK ITALIC SMALL I -1D422 ; [.1D98.0020.0005] # MATHEMATICAL BOLD SMALL I -1D456 ; [.1D98.0020.0005] # MATHEMATICAL ITALIC SMALL I -1D48A ; [.1D98.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL I -1D4BE ; [.1D98.0020.0005] # MATHEMATICAL SCRIPT SMALL I -1D4F2 ; [.1D98.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL I -1D526 ; [.1D98.0020.0005] # MATHEMATICAL FRAKTUR SMALL I -1D55A ; [.1D98.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL I -1D58E ; [.1D98.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL I -1D5C2 ; [.1D98.0020.0005] # MATHEMATICAL SANS-SERIF SMALL I -1D5F6 ; [.1D98.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL I -1D62A ; [.1D98.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL I -1D65E ; [.1D98.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I -1D692 ; [.1D98.0020.0005] # MATHEMATICAL MONOSPACE SMALL I -24D8 ; [.1D98.0020.0006] # CIRCLED LATIN SMALL LETTER I -0049 ; [.1D98.0020.0008] # LATIN CAPITAL LETTER I -FF29 ; [.1D98.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER I -2160 ; [.1D98.0020.000A] # ROMAN NUMERAL ONE -1F118 ; [*0318.0020.0004][.1D98.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER I -2110 ; [.1D98.0020.000B] # SCRIPT CAPITAL I -2111 ; [.1D98.0020.000B] # BLACK-LETTER CAPITAL I -1D408 ; [.1D98.0020.000B] # MATHEMATICAL BOLD CAPITAL I -1D43C ; [.1D98.0020.000B] # MATHEMATICAL ITALIC CAPITAL I -1D470 ; [.1D98.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL I -1D4D8 ; [.1D98.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL I -1D540 ; [.1D98.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL I -1D574 ; [.1D98.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL I -1D5A8 ; [.1D98.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL I -1D5DC ; [.1D98.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL I -1D610 ; [.1D98.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL I -1D644 ; [.1D98.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I -1D678 ; [.1D98.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL I -24BE ; [.1D98.0020.000C] # CIRCLED LATIN CAPITAL LETTER I -1F158 ; [.1D98.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER I -2071 ; [.1D98.0020.0014] # SUPERSCRIPT LATIN SMALL LETTER I -1D62 ; [.1D98.0020.0015] # LATIN SUBSCRIPT SMALL LETTER I -1D35 ; [.1D98.0020.001D] # MODIFIER LETTER CAPITAL I -1F138 ; [.1D98.0020.001D] # SQUARED LATIN CAPITAL LETTER I -1F178 ; [.1D98.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER I -00ED ; [.1D98.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER I WITH ACUTE -00CD ; [.1D98.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER I WITH ACUTE -00EC ; [.1D98.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER I WITH GRAVE -00CC ; [.1D98.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER I WITH GRAVE -012D ; [.1D98.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER I WITH BREVE -012C ; [.1D98.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER I WITH BREVE -00EE ; [.1D98.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER I WITH CIRCUMFLEX -00CE ; [.1D98.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX -01D0 ; [.1D98.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER I WITH CARON -01CF ; [.1D98.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER I WITH CARON -00EF ; [.1D98.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER I WITH DIAERESIS -00CF ; [.1D98.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER I WITH DIAERESIS -1E2F ; [.1D98.0020.0002][.0000.002B.0002][.0000.0024.0002] # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE -1E2E ; [.1D98.0020.0008][.0000.002B.0002][.0000.0024.0002] # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE -0129 ; [.1D98.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER I WITH TILDE -0128 ; [.1D98.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER I WITH TILDE -0130 ; [.1D98.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER I WITH DOT ABOVE -012F ; [.1D98.0020.0002][.0000.0031.0002] # LATIN SMALL LETTER I WITH OGONEK -012E ; [.1D98.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER I WITH OGONEK -012B ; [.1D98.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER I WITH MACRON -012A ; [.1D98.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER I WITH MACRON -1EC9 ; [.1D98.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER I WITH HOOK ABOVE -1EC8 ; [.1D98.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER I WITH HOOK ABOVE -0209 ; [.1D98.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER I WITH DOUBLE GRAVE -0208 ; [.1D98.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE -020B ; [.1D98.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER I WITH INVERTED BREVE -020A ; [.1D98.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER I WITH INVERTED BREVE -1ECB ; [.1D98.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER I WITH DOT BELOW -1ECA ; [.1D98.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER I WITH DOT BELOW -1E2D ; [.1D98.0020.0002][.0000.0048.0002] # LATIN SMALL LETTER I WITH TILDE BELOW -1E2C ; [.1D98.0020.0008][.0000.0048.0002] # LATIN CAPITAL LETTER I WITH TILDE BELOW -1F18B ; [.1D98.0020.001D][.1CE0.0020.001D] # NEGATIVE SQUARED IC -1F194 ; [.1D98.0020.001D][.1CF5.0020.001D] # SQUARED ID -2171 ; [.1D98.0020.0004][.1D98.0020.0004] # SMALL ROMAN NUMERAL TWO -2161 ; [.1D98.0020.000A][.1D98.0020.000A] # ROMAN NUMERAL TWO -2172 ; [.1D98.0020.0004][.1D98.0020.0004][.1D98.0020.0004] # SMALL ROMAN NUMERAL THREE -2162 ; [.1D98.0020.000A][.1D98.0020.000A][.1D98.0020.000A] # ROMAN NUMERAL THREE -0133 ; [.1D98.0020.0004][.1DB2.0020.0004] # LATIN SMALL LIGATURE IJ -0132 ; [.1D98.0020.000A][.1DB2.0020.000A] # LATIN CAPITAL LIGATURE IJ -33CC ; [.1D98.0020.001C][.1E1F.0020.001C] # SQUARE IN -337A ; [.1D98.0020.001D][.1F1B.0020.001D] # SQUARE IU -2173 ; [.1D98.0020.0004][.1F49.0020.0004] # SMALL ROMAN NUMERAL FOUR -2163 ; [.1D98.0020.000A][.1F49.0020.000A] # ROMAN NUMERAL FOUR -2178 ; [.1D98.0020.0004][.1F65.0020.0004] # SMALL ROMAN NUMERAL NINE -2168 ; [.1D98.0020.000A][.1F65.0020.000A] # ROMAN NUMERAL NINE -0131 ; [.1D9C.0020.0002] # LATIN SMALL LETTER DOTLESS I -1D6A4 ; [.1D9C.0020.0005] # MATHEMATICAL ITALIC SMALL DOTLESS I -026A ; [.1DA0.0020.0002] # LATIN LETTER SMALL CAPITAL I -A7AE ; [.1DA0.0020.0008] # LATIN CAPITAL LETTER SMALL CAPITAL I -1DA6 ; [.1DA0.0020.0014] # MODIFIER LETTER SMALL CAPITAL I -A7FE ; [.1DA4.0020.0002] # LATIN EPIGRAPHIC LETTER I LONGA -A7F7 ; [.1DA5.0020.0002] # LATIN EPIGRAPHIC LETTER SIDEWAYS I -1D09 ; [.1DA6.0020.0002] # LATIN SMALL LETTER TURNED I -1D4E ; [.1DA6.0020.0014] # MODIFIER LETTER SMALL TURNED I -0268 ; [.1DA7.0020.0002] # LATIN SMALL LETTER I WITH STROKE -0197 ; [.1DA7.0020.0008] # LATIN CAPITAL LETTER I WITH STROKE -1DA4 ; [.1DA7.0020.0014] # MODIFIER LETTER SMALL I WITH STROKE -1D7B ; [.1DAB.0020.0002] # LATIN SMALL CAPITAL LETTER I WITH STROKE -1DA7 ; [.1DAB.0020.0014] # MODIFIER LETTER SMALL CAPITAL I WITH STROKE -1D96 ; [.1DAC.0020.0002] # LATIN SMALL LETTER I WITH RETROFLEX HOOK -0269 ; [.1DAD.0020.0002] # LATIN SMALL LETTER IOTA -0196 ; [.1DAD.0020.0008] # LATIN CAPITAL LETTER IOTA -1DA5 ; [.1DAD.0020.0014] # MODIFIER LETTER SMALL IOTA -1D7C ; [.1DB1.0020.0002] # LATIN SMALL LETTER IOTA WITH STROKE -006A ; [.1DB2.0020.0002] # LATIN SMALL LETTER J -FF4A ; [.1DB2.0020.0003] # FULLWIDTH LATIN SMALL LETTER J -24A5 ; [*0318.0020.0004][.1DB2.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER J -2149 ; [.1DB2.0020.0005] # DOUBLE-STRUCK ITALIC SMALL J -1D423 ; [.1DB2.0020.0005] # MATHEMATICAL BOLD SMALL J -1D457 ; [.1DB2.0020.0005] # MATHEMATICAL ITALIC SMALL J -1D48B ; [.1DB2.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL J -1D4BF ; [.1DB2.0020.0005] # MATHEMATICAL SCRIPT SMALL J -1D4F3 ; [.1DB2.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL J -1D527 ; [.1DB2.0020.0005] # MATHEMATICAL FRAKTUR SMALL J -1D55B ; [.1DB2.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL J -1D58F ; [.1DB2.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL J -1D5C3 ; [.1DB2.0020.0005] # MATHEMATICAL SANS-SERIF SMALL J -1D5F7 ; [.1DB2.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL J -1D62B ; [.1DB2.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL J -1D65F ; [.1DB2.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J -1D693 ; [.1DB2.0020.0005] # MATHEMATICAL MONOSPACE SMALL J -24D9 ; [.1DB2.0020.0006] # CIRCLED LATIN SMALL LETTER J -004A ; [.1DB2.0020.0008] # LATIN CAPITAL LETTER J -FF2A ; [.1DB2.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER J -1F119 ; [*0318.0020.0004][.1DB2.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER J -1D409 ; [.1DB2.0020.000B] # MATHEMATICAL BOLD CAPITAL J -1D43D ; [.1DB2.0020.000B] # MATHEMATICAL ITALIC CAPITAL J -1D471 ; [.1DB2.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL J -1D4A5 ; [.1DB2.0020.000B] # MATHEMATICAL SCRIPT CAPITAL J -1D4D9 ; [.1DB2.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL J -1D50D ; [.1DB2.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL J -1D541 ; [.1DB2.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL J -1D575 ; [.1DB2.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL J -1D5A9 ; [.1DB2.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL J -1D5DD ; [.1DB2.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL J -1D611 ; [.1DB2.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL J -1D645 ; [.1DB2.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J -1D679 ; [.1DB2.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL J -24BF ; [.1DB2.0020.000C] # CIRCLED LATIN CAPITAL LETTER J -1F159 ; [.1DB2.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER J -02B2 ; [.1DB2.0020.0014] # MODIFIER LETTER SMALL J -2C7C ; [.1DB2.0020.0015] # LATIN SUBSCRIPT SMALL LETTER J -1D36 ; [.1DB2.0020.001D] # MODIFIER LETTER CAPITAL J -1F139 ; [.1DB2.0020.001D] # SQUARED LATIN CAPITAL LETTER J -1F179 ; [.1DB2.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER J -0135 ; [.1DB2.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER J WITH CIRCUMFLEX -0134 ; [.1DB2.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER J WITH CIRCUMFLEX -01F0 ; [.1DB2.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER J WITH CARON -0237 ; [.1DB6.0020.0002] # LATIN SMALL LETTER DOTLESS J -1D6A5 ; [.1DB6.0020.0005] # MATHEMATICAL ITALIC SMALL DOTLESS J -1D0A ; [.1DBA.0020.0002] # LATIN LETTER SMALL CAPITAL J -0249 ; [.1DBB.0020.0002] # LATIN SMALL LETTER J WITH STROKE -0248 ; [.1DBB.0020.0008] # LATIN CAPITAL LETTER J WITH STROKE -029D ; [.1DBF.0020.0002] # LATIN SMALL LETTER J WITH CROSSED-TAIL -A7B2 ; [.1DBF.0020.0008] # LATIN CAPITAL LETTER J WITH CROSSED-TAIL -1DA8 ; [.1DBF.0020.0014] # MODIFIER LETTER SMALL J WITH CROSSED-TAIL -025F ; [.1DC3.0020.0002] # LATIN SMALL LETTER DOTLESS J WITH STROKE -1DA1 ; [.1DC3.0020.0014] # MODIFIER LETTER SMALL DOTLESS J WITH STROKE -0284 ; [.1DC7.0020.0002] # LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK -006B ; [.1DCB.0020.0002] # LATIN SMALL LETTER K -FF4B ; [.1DCB.0020.0003] # FULLWIDTH LATIN SMALL LETTER K -1DDC ; [.1DCB.0020.0004] # COMBINING LATIN SMALL LETTER K -24A6 ; [*0318.0020.0004][.1DCB.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER K -1D424 ; [.1DCB.0020.0005] # MATHEMATICAL BOLD SMALL K -1D458 ; [.1DCB.0020.0005] # MATHEMATICAL ITALIC SMALL K -1D48C ; [.1DCB.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL K -1D4C0 ; [.1DCB.0020.0005] # MATHEMATICAL SCRIPT SMALL K -1D4F4 ; [.1DCB.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL K -1D528 ; [.1DCB.0020.0005] # MATHEMATICAL FRAKTUR SMALL K -1D55C ; [.1DCB.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL K -1D590 ; [.1DCB.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL K -1D5C4 ; [.1DCB.0020.0005] # MATHEMATICAL SANS-SERIF SMALL K -1D5F8 ; [.1DCB.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL K -1D62C ; [.1DCB.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL K -1D660 ; [.1DCB.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K -1D694 ; [.1DCB.0020.0005] # MATHEMATICAL MONOSPACE SMALL K -24DA ; [.1DCB.0020.0006] # CIRCLED LATIN SMALL LETTER K -004B ; [.1DCB.0020.0008] # LATIN CAPITAL LETTER K -212A ; [.1DCB.0020.0008] # KELVIN SIGN -FF2B ; [.1DCB.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER K -1F11A ; [*0318.0020.0004][.1DCB.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER K -1D40A ; [.1DCB.0020.000B] # MATHEMATICAL BOLD CAPITAL K -1D43E ; [.1DCB.0020.000B] # MATHEMATICAL ITALIC CAPITAL K -1D472 ; [.1DCB.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL K -1D4A6 ; [.1DCB.0020.000B] # MATHEMATICAL SCRIPT CAPITAL K -1D4DA ; [.1DCB.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL K -1D50E ; [.1DCB.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL K -1D542 ; [.1DCB.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL K -1D576 ; [.1DCB.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL K -1D5AA ; [.1DCB.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL K -1D5DE ; [.1DCB.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL K -1D612 ; [.1DCB.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL K -1D646 ; [.1DCB.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K -1D67A ; [.1DCB.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL K -24C0 ; [.1DCB.0020.000C] # CIRCLED LATIN CAPITAL LETTER K -1F15A ; [.1DCB.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER K -1D4F ; [.1DCB.0020.0014] # MODIFIER LETTER SMALL K -2096 ; [.1DCB.0020.0015] # LATIN SUBSCRIPT SMALL LETTER K -1D37 ; [.1DCB.0020.001D] # MODIFIER LETTER CAPITAL K -1F13A ; [.1DCB.0020.001D] # SQUARED LATIN CAPITAL LETTER K -1F17A ; [.1DCB.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER K -1E31 ; [.1DCB.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER K WITH ACUTE -1E30 ; [.1DCB.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER K WITH ACUTE -01E9 ; [.1DCB.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER K WITH CARON -01E8 ; [.1DCB.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER K WITH CARON -0137 ; [.1DCB.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER K WITH CEDILLA -0136 ; [.1DCB.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER K WITH CEDILLA -A7A3 ; [.1DCB.0020.0004][.0000.0035.0004] # LATIN SMALL LETTER K WITH OBLIQUE STROKE -A7A2 ; [.1DCB.0020.000A][.0000.0035.0004] # LATIN CAPITAL LETTER K WITH OBLIQUE STROKE -1E33 ; [.1DCB.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER K WITH DOT BELOW -1E32 ; [.1DCB.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER K WITH DOT BELOW -1E35 ; [.1DCB.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER K WITH LINE BELOW -1E34 ; [.1DCB.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER K WITH LINE BELOW -3384 ; [.1DCB.0020.001C][.1CAD.0020.001D] # SQUARE KA -3385 ; [.1DCB.0020.001D][.1CC6.0020.001D] # SQUARE KB -3389 ; [.1DCB.0020.001C][.1CE0.0020.001C][.1CAD.0020.001C][.1DDD.0020.001C] # SQUARE KCAL -338F ; [.1DCB.0020.001C][.1D5A.0020.001C] # SQUARE KG -3391 ; [.1DCB.0020.001C][.1D7E.0020.001D][.1F87.0020.001C] # SQUARE KHZ -33CD ; [.1DCB.0020.001D][.1DCB.0020.001D] # SQUARE KK -3398 ; [.1DCB.0020.001C][.1DDD.0020.001C] # SQUARE KL -339E ; [.1DCB.0020.001C][.1E10.0020.001C] # SQUARE KM -33CE ; [.1DCB.0020.001D][.1E10.0020.001D] # SQUARE KM CAPITAL -33A2 ; [.1DCB.0020.001C][.1E10.0020.001C][.1CA5.0020.001C] # SQUARE KM SQUARED -33A6 ; [.1DCB.0020.001C][.1E10.0020.001C][.1CA6.0020.001C] # SQUARE KM CUBED -33AA ; [.1DCB.0020.001C][.1E72.0020.001D][.1CAD.0020.001C] # SQUARE KPA -33CF ; [.1DCB.0020.001C][.1EFB.0020.001C] # SQUARE KT -33B8 ; [.1DCB.0020.001C][.1F49.0020.001D] # SQUARE KV -33BE ; [.1DCB.0020.001C][.1F5B.0020.001D] # SQUARE KW -33C0 ; [.1DCB.0020.001C][.2047.0020.001D] # SQUARE K OHM -1D0B ; [.1DCF.0020.0002] # LATIN LETTER SMALL CAPITAL K -1D84 ; [.1DD0.0020.0002] # LATIN SMALL LETTER K WITH PALATAL HOOK -0199 ; [.1DD1.0020.0002] # LATIN SMALL LETTER K WITH HOOK -0198 ; [.1DD1.0020.0008] # LATIN CAPITAL LETTER K WITH HOOK -2C6A ; [.1DD5.0020.0002] # LATIN SMALL LETTER K WITH DESCENDER -2C69 ; [.1DD5.0020.0008] # LATIN CAPITAL LETTER K WITH DESCENDER -A741 ; [.1DD6.0020.0002] # LATIN SMALL LETTER K WITH STROKE -A740 ; [.1DD6.0020.0008] # LATIN CAPITAL LETTER K WITH STROKE -A743 ; [.1DD7.0020.0002] # LATIN SMALL LETTER K WITH DIAGONAL STROKE -A742 ; [.1DD7.0020.0008] # LATIN CAPITAL LETTER K WITH DIAGONAL STROKE -A745 ; [.1DD8.0020.0002] # LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE -A744 ; [.1DD8.0020.0008] # LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE -029E ; [.1DD9.0020.0002] # LATIN SMALL LETTER TURNED K -A7B0 ; [.1DD9.0020.0008] # LATIN CAPITAL LETTER TURNED K -006C ; [.1DDD.0020.0002] # LATIN SMALL LETTER L -FF4C ; [.1DDD.0020.0003] # FULLWIDTH LATIN SMALL LETTER L -1DDD ; [.1DDD.0020.0004] # COMBINING LATIN SMALL LETTER L -217C ; [.1DDD.0020.0004] # SMALL ROMAN NUMERAL FIFTY -24A7 ; [*0318.0020.0004][.1DDD.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER L -2113 ; [.1DDD.0020.0005] # SCRIPT SMALL L -1D425 ; [.1DDD.0020.0005] # MATHEMATICAL BOLD SMALL L -1D459 ; [.1DDD.0020.0005] # MATHEMATICAL ITALIC SMALL L -1D48D ; [.1DDD.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL L -1D4C1 ; [.1DDD.0020.0005] # MATHEMATICAL SCRIPT SMALL L -1D4F5 ; [.1DDD.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL L -1D529 ; [.1DDD.0020.0005] # MATHEMATICAL FRAKTUR SMALL L -1D55D ; [.1DDD.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL L -1D591 ; [.1DDD.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL L -1D5C5 ; [.1DDD.0020.0005] # MATHEMATICAL SANS-SERIF SMALL L -1D5F9 ; [.1DDD.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL L -1D62D ; [.1DDD.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL L -1D661 ; [.1DDD.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L -1D695 ; [.1DDD.0020.0005] # MATHEMATICAL MONOSPACE SMALL L -24DB ; [.1DDD.0020.0006] # CIRCLED LATIN SMALL LETTER L -004C ; [.1DDD.0020.0008] # LATIN CAPITAL LETTER L -FF2C ; [.1DDD.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER L -216C ; [.1DDD.0020.000A] # ROMAN NUMERAL FIFTY -1F11B ; [*0318.0020.0004][.1DDD.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER L -2112 ; [.1DDD.0020.000B] # SCRIPT CAPITAL L -1D40B ; [.1DDD.0020.000B] # MATHEMATICAL BOLD CAPITAL L -1D43F ; [.1DDD.0020.000B] # MATHEMATICAL ITALIC CAPITAL L -1D473 ; [.1DDD.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL L -1D4DB ; [.1DDD.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL L -1D50F ; [.1DDD.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL L -1D543 ; [.1DDD.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL L -1D577 ; [.1DDD.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL L -1D5AB ; [.1DDD.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL L -1D5DF ; [.1DDD.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL L -1D613 ; [.1DDD.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL L -1D647 ; [.1DDD.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L -1D67B ; [.1DDD.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL L -24C1 ; [.1DDD.0020.000C] # CIRCLED LATIN CAPITAL LETTER L -1F15B ; [.1DDD.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER L -02E1 ; [.1DDD.0020.0014] # MODIFIER LETTER SMALL L -2097 ; [.1DDD.0020.0015] # LATIN SUBSCRIPT SMALL LETTER L -1D38 ; [.1DDD.0020.001D] # MODIFIER LETTER CAPITAL L -1F13B ; [.1DDD.0020.001D] # SQUARED LATIN CAPITAL LETTER L -1F17B ; [.1DDD.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER L -013A ; [.1DDD.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER L WITH ACUTE -0139 ; [.1DDD.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER L WITH ACUTE -013E ; [.1DDD.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER L WITH CARON -013D ; [.1DDD.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER L WITH CARON -013C ; [.1DDD.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER L WITH CEDILLA -013B ; [.1DDD.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER L WITH CEDILLA -0142 ; [.1DDD.0020.0002][.0000.0039.0002] # LATIN SMALL LETTER L WITH STROKE -0141 ; [.1DDD.0020.0008][.0000.0039.0002] # LATIN CAPITAL LETTER L WITH STROKE -1E37 ; [.1DDD.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER L WITH DOT BELOW -1E36 ; [.1DDD.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER L WITH DOT BELOW -1E39 ; [.1DDD.0020.0002][.0000.0042.0002][.0000.0032.0002] # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON -1E38 ; [.1DDD.0020.0008][.0000.0042.0002][.0000.0032.0002] # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON -1E3D ; [.1DDD.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW -1E3C ; [.1DDD.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW -1E3B ; [.1DDD.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER L WITH LINE BELOW -1E3A ; [.1DDD.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER L WITH LINE BELOW -0140 ; [.1DDD.0020.0002][.0000.0111.0002] # LATIN SMALL LETTER L WITH MIDDLE DOT -006C 00B7 ; [.1DDD.0020.0002][.0000.0111.0002] # LATIN SMALL LETTER L WITH MIDDLE DOT -006C 0387 ; [.1DDD.0020.0002][.0000.0111.0002] # LATIN SMALL LETTER L WITH MIDDLE DOT -013F ; [.1DDD.0020.0008][.0000.0111.0002] # LATIN CAPITAL LETTER L WITH MIDDLE DOT -004C 00B7 ; [.1DDD.0020.0008][.0000.0111.0002] # LATIN CAPITAL LETTER L WITH MIDDLE DOT -004C 0387 ; [.1DDD.0020.0008][.0000.0111.0002] # LATIN CAPITAL LETTER L WITH MIDDLE DOT -01C9 ; [.1DDD.0020.0004][.1DB2.0020.0004] # LATIN SMALL LETTER LJ -01C8 ; [.1DDD.0020.000A][.1DB2.0020.0004] # LATIN CAPITAL LETTER L WITH SMALL LETTER J -01C7 ; [.1DDD.0020.000A][.1DB2.0020.000A] # LATIN CAPITAL LETTER LJ -1EFB ; [.1DDD.0020.0004][.1DDD.0020.0004] # LATIN SMALL LETTER MIDDLE-WELSH LL -1EFA ; [.1DDD.0020.000A][.1DDD.0020.000A] # LATIN CAPITAL LETTER MIDDLE-WELSH LL -33D0 ; [.1DDD.0020.001C][.1E10.0020.001C] # SQUARE LM -33D1 ; [.1DDD.0020.001C][.1E1F.0020.001C] # SQUARE LN -33D2 ; [.1DDD.0020.001C][.1E43.0020.001C][.1D5A.0020.001C] # SQUARE LOG -1F1A9 ; [.1DDD.0020.001D][.1E43.0020.001C][.1ED7.0020.001C][.1ED7.0020.001C][.1DDD.0020.001C][.1D10.0020.001C][.1ED7.0020.001C][.1ED7.0020.001C] # SQUARED LOSSLESS -02AA ; [.1DDD.0020.0004][.1ED7.0020.0004] # LATIN SMALL LETTER LS DIGRAPH -32CF ; [.1DDD.0020.001D][.1EFB.0020.001D][.1CF5.0020.001D] # LIMITED LIABILITY SIGN -33D3 ; [.1DDD.0020.001C][.1F65.0020.001C] # SQUARE LX -02AB ; [.1DDD.0020.0004][.1F87.0020.0004] # LATIN SMALL LETTER LZ DIGRAPH -029F ; [.1DE1.0020.0002] # LATIN LETTER SMALL CAPITAL L -1DDE ; [.1DE1.0020.0004] # COMBINING LATIN LETTER SMALL CAPITAL L -1DAB ; [.1DE1.0020.0014] # MODIFIER LETTER SMALL CAPITAL L -A747 ; [.1DE5.0020.0002] # LATIN SMALL LETTER BROKEN L -A746 ; [.1DE5.0020.0008] # LATIN CAPITAL LETTER BROKEN L -1D0C ; [.1DE6.0020.0002] # LATIN LETTER SMALL CAPITAL L WITH STROKE -A749 ; [.1DE7.0020.0002] # LATIN SMALL LETTER L WITH HIGH STROKE -A748 ; [.1DE7.0020.0008] # LATIN CAPITAL LETTER L WITH HIGH STROKE -019A ; [.1DE8.0020.0002] # LATIN SMALL LETTER L WITH BAR -023D ; [.1DE8.0020.0008] # LATIN CAPITAL LETTER L WITH BAR -2C61 ; [.1DEC.0020.0002] # LATIN SMALL LETTER L WITH DOUBLE BAR -2C60 ; [.1DEC.0020.0008] # LATIN CAPITAL LETTER L WITH DOUBLE BAR -026B ; [.1DED.0020.0002] # LATIN SMALL LETTER L WITH MIDDLE TILDE -2C62 ; [.1DED.0020.0008] # LATIN CAPITAL LETTER L WITH MIDDLE TILDE -AB5E ; [.1DED.0020.0014] # MODIFIER LETTER SMALL L WITH MIDDLE TILDE -AB38 ; [.1DF1.0020.0002] # LATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDE -1DEC ; [.1DF1.0020.0004] # COMBINING LATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDE -AB39 ; [.1DF2.0020.0002] # LATIN SMALL LETTER L WITH MIDDLE RING -026C ; [.1DF3.0020.0002] # LATIN SMALL LETTER L WITH BELT -A7AD ; [.1DF3.0020.0008] # LATIN CAPITAL LETTER L WITH BELT -AB37 ; [.1DF7.0020.0002] # LATIN SMALL LETTER L WITH INVERTED LAZY S -AB5D ; [.1DF7.0020.0014] # MODIFIER LETTER SMALL L WITH INVERTED LAZY S -1D85 ; [.1DF8.0020.0002] # LATIN SMALL LETTER L WITH PALATAL HOOK -1DAA ; [.1DF8.0020.0014] # MODIFIER LETTER SMALL L WITH PALATAL HOOK -026D ; [.1DF9.0020.0002] # LATIN SMALL LETTER L WITH RETROFLEX HOOK -1DA9 ; [.1DF9.0020.0014] # MODIFIER LETTER SMALL L WITH RETROFLEX HOOK -A78E ; [.1DFD.0020.0002] # LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT -0234 ; [.1DFE.0020.0002] # LATIN SMALL LETTER L WITH CURL -A772 ; [.1E02.0020.0002] # LATIN SMALL LETTER LUM -026E ; [.1E03.0020.0002] # LATIN SMALL LETTER LEZH -A781 ; [.1E07.0020.0002] # LATIN SMALL LETTER TURNED L -A780 ; [.1E07.0020.0008] # LATIN CAPITAL LETTER TURNED L -019B ; [.1E08.0020.0002] # LATIN SMALL LETTER LAMBDA WITH STROKE -028E ; [.1E0C.0020.0002] # LATIN SMALL LETTER TURNED Y -006D ; [.1E10.0020.0002] # LATIN SMALL LETTER M -FF4D ; [.1E10.0020.0003] # FULLWIDTH LATIN SMALL LETTER M -036B ; [.1E10.0020.0004] # COMBINING LATIN SMALL LETTER M -217F ; [.1E10.0020.0004] # SMALL ROMAN NUMERAL ONE THOUSAND -24A8 ; [*0318.0020.0004][.1E10.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER M -1D426 ; [.1E10.0020.0005] # MATHEMATICAL BOLD SMALL M -1D45A ; [.1E10.0020.0005] # MATHEMATICAL ITALIC SMALL M -1D48E ; [.1E10.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL M -1D4C2 ; [.1E10.0020.0005] # MATHEMATICAL SCRIPT SMALL M -1D4F6 ; [.1E10.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL M -1D52A ; [.1E10.0020.0005] # MATHEMATICAL FRAKTUR SMALL M -1D55E ; [.1E10.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL M -1D592 ; [.1E10.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL M -1D5C6 ; [.1E10.0020.0005] # MATHEMATICAL SANS-SERIF SMALL M -1D5FA ; [.1E10.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL M -1D62E ; [.1E10.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL M -1D662 ; [.1E10.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M -1D696 ; [.1E10.0020.0005] # MATHEMATICAL MONOSPACE SMALL M -24DC ; [.1E10.0020.0006] # CIRCLED LATIN SMALL LETTER M -004D ; [.1E10.0020.0008] # LATIN CAPITAL LETTER M -FF2D ; [.1E10.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER M -216F ; [.1E10.0020.000A] # ROMAN NUMERAL ONE THOUSAND -1F11C ; [*0318.0020.0004][.1E10.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER M -2133 ; [.1E10.0020.000B] # SCRIPT CAPITAL M -1D40C ; [.1E10.0020.000B] # MATHEMATICAL BOLD CAPITAL M -1D440 ; [.1E10.0020.000B] # MATHEMATICAL ITALIC CAPITAL M -1D474 ; [.1E10.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL M -1D4DC ; [.1E10.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL M -1D510 ; [.1E10.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL M -1D544 ; [.1E10.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL M -1D578 ; [.1E10.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL M -1D5AC ; [.1E10.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL M -1D5E0 ; [.1E10.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL M -1D614 ; [.1E10.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL M -1D648 ; [.1E10.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M -1D67C ; [.1E10.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL M -24C2 ; [.1E10.0020.000C] # CIRCLED LATIN CAPITAL LETTER M -1F15C ; [.1E10.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER M -1D50 ; [.1E10.0020.0014] # MODIFIER LETTER SMALL M -2098 ; [.1E10.0020.0015] # LATIN SUBSCRIPT SMALL LETTER M -1D39 ; [.1E10.0020.001D] # MODIFIER LETTER CAPITAL M -1F13C ; [.1E10.0020.001D] # SQUARED LATIN CAPITAL LETTER M -1F17C ; [.1E10.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER M -1E3F ; [.1E10.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER M WITH ACUTE -1E3E ; [.1E10.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER M WITH ACUTE -1E41 ; [.1E10.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER M WITH DOT ABOVE -1E40 ; [.1E10.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER M WITH DOT ABOVE -1E43 ; [.1E10.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER M WITH DOT BELOW -1E42 ; [.1E10.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER M WITH DOT BELOW -33A1 ; [.1E10.0020.001C][.1CA5.0020.001C] # SQUARE M SQUARED -33A5 ; [.1E10.0020.001C][.1CA6.0020.001C] # SQUARE M CUBED -3383 ; [.1E10.0020.001C][.1CAD.0020.001D] # SQUARE MA -33D4 ; [.1E10.0020.001C][.1CC6.0020.001C] # SQUARE MB SMALL -3386 ; [.1E10.0020.001D][.1CC6.0020.001D] # SQUARE MB -1F16A ; [.1E10.0020.0014][.1CE0.0020.0014] # RAISED MC SIGN -1F16B ; [.1E10.0020.0014][.1CF5.0020.0014] # RAISED MD SIGN -338E ; [.1E10.0020.001C][.1D5A.0020.001C] # SQUARE MG -3392 ; [.1E10.0020.001D][.1D7E.0020.001D][.1F87.0020.001C] # SQUARE MHZ -33D5 ; [.1E10.0020.001C][.1D98.0020.001C][.1DDD.0020.001C] # SQUARE MIL -3396 ; [.1E10.0020.001C][.1DDD.0020.001C] # SQUARE ML -339C ; [.1E10.0020.001C][.1E10.0020.001C] # SQUARE MM -339F ; [.1E10.0020.001C][.1E10.0020.001C][.1CA5.0020.001C] # SQUARE MM SQUARED -33A3 ; [.1E10.0020.001C][.1E10.0020.001C][.1CA6.0020.001C] # SQUARE MM CUBED -33D6 ; [.1E10.0020.001C][.1E43.0020.001C][.1DDD.0020.001C] # SQUARE MOL -33AB ; [.1E10.0020.001D][.1E72.0020.001D][.1CAD.0020.001C] # SQUARE MPA -33A7 ; [.1E10.0020.001C][*063B.0020.001C][.1ED7.0020.001C] # SQUARE M OVER S -33B3 ; [.1E10.0020.001C][.1ED7.0020.001C] # SQUARE MS -33A8 ; [.1E10.0020.001C][*063B.0020.001C][.1ED7.0020.001C][.1CA5.0020.001C] # SQUARE M OVER S SQUARED -33B7 ; [.1E10.0020.001C][.1F49.0020.001D] # SQUARE MV -33B9 ; [.1E10.0020.001D][.1F49.0020.001D] # SQUARE MV MEGA -1F14B ; [.1E10.0020.001D][.1F49.0020.001D] # SQUARED MV -33BD ; [.1E10.0020.001C][.1F5B.0020.001D] # SQUARE MW -33BF ; [.1E10.0020.001D][.1F5B.0020.001D] # SQUARE MW MEGA -33C1 ; [.1E10.0020.001D][.2047.0020.001D] # SQUARE M OHM -1D0D ; [.1E14.0020.0002] # LATIN LETTER SMALL CAPITAL M -1DDF ; [.1E14.0020.0004] # COMBINING LATIN LETTER SMALL CAPITAL M -1D6F ; [.1E15.0020.0002] # LATIN SMALL LETTER M WITH MIDDLE TILDE -1D86 ; [.1E16.0020.0002] # LATIN SMALL LETTER M WITH PALATAL HOOK -0271 ; [.1E17.0020.0002] # LATIN SMALL LETTER M WITH HOOK -2C6E ; [.1E17.0020.0008] # LATIN CAPITAL LETTER M WITH HOOK -1DAC ; [.1E17.0020.0014] # MODIFIER LETTER SMALL M WITH HOOK -AB3A ; [.1E1B.0020.0002] # LATIN SMALL LETTER M WITH CROSSED-TAIL -A7FD ; [.1E1C.0020.0002] # LATIN EPIGRAPHIC LETTER INVERTED M -A7FF ; [.1E1D.0020.0002] # LATIN EPIGRAPHIC LETTER ARCHAIC M -A773 ; [.1E1E.0020.0002] # LATIN SMALL LETTER MUM -006E ; [.1E1F.0020.0002] # LATIN SMALL LETTER N -FF4E ; [.1E1F.0020.0003] # FULLWIDTH LATIN SMALL LETTER N -1DE0 ; [.1E1F.0020.0004] # COMBINING LATIN SMALL LETTER N -24A9 ; [*0318.0020.0004][.1E1F.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER N -1D427 ; [.1E1F.0020.0005] # MATHEMATICAL BOLD SMALL N -1D45B ; [.1E1F.0020.0005] # MATHEMATICAL ITALIC SMALL N -1D48F ; [.1E1F.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL N -1D4C3 ; [.1E1F.0020.0005] # MATHEMATICAL SCRIPT SMALL N -1D4F7 ; [.1E1F.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL N -1D52B ; [.1E1F.0020.0005] # MATHEMATICAL FRAKTUR SMALL N -1D55F ; [.1E1F.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL N -1D593 ; [.1E1F.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL N -1D5C7 ; [.1E1F.0020.0005] # MATHEMATICAL SANS-SERIF SMALL N -1D5FB ; [.1E1F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL N -1D62F ; [.1E1F.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL N -1D663 ; [.1E1F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N -1D697 ; [.1E1F.0020.0005] # MATHEMATICAL MONOSPACE SMALL N -24DD ; [.1E1F.0020.0006] # CIRCLED LATIN SMALL LETTER N -004E ; [.1E1F.0020.0008] # LATIN CAPITAL LETTER N -FF2E ; [.1E1F.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER N -1F11D ; [*0318.0020.0004][.1E1F.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER N -2115 ; [.1E1F.0020.000B] # DOUBLE-STRUCK CAPITAL N -1D40D ; [.1E1F.0020.000B] # MATHEMATICAL BOLD CAPITAL N -1D441 ; [.1E1F.0020.000B] # MATHEMATICAL ITALIC CAPITAL N -1D475 ; [.1E1F.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL N -1D4A9 ; [.1E1F.0020.000B] # MATHEMATICAL SCRIPT CAPITAL N -1D4DD ; [.1E1F.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL N -1D511 ; [.1E1F.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL N -1D579 ; [.1E1F.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL N -1D5AD ; [.1E1F.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL N -1D5E1 ; [.1E1F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL N -1D615 ; [.1E1F.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL N -1D649 ; [.1E1F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N -1D67D ; [.1E1F.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL N -24C3 ; [.1E1F.0020.000C] # CIRCLED LATIN CAPITAL LETTER N -1F15D ; [.1E1F.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER N -207F ; [.1E1F.0020.0014] # SUPERSCRIPT LATIN SMALL LETTER N -2099 ; [.1E1F.0020.0015] # LATIN SUBSCRIPT SMALL LETTER N -1D3A ; [.1E1F.0020.001D] # MODIFIER LETTER CAPITAL N -1F13D ; [.1E1F.0020.001D] # SQUARED LATIN CAPITAL LETTER N -1F17D ; [.1E1F.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER N -0144 ; [.1E1F.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER N WITH ACUTE -0143 ; [.1E1F.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER N WITH ACUTE -01F9 ; [.1E1F.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER N WITH GRAVE -01F8 ; [.1E1F.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER N WITH GRAVE -0148 ; [.1E1F.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER N WITH CARON -0147 ; [.1E1F.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER N WITH CARON -00F1 ; [.1E1F.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER N WITH TILDE -00D1 ; [.1E1F.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER N WITH TILDE -1E45 ; [.1E1F.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER N WITH DOT ABOVE -1E44 ; [.1E1F.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER N WITH DOT ABOVE -0146 ; [.1E1F.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER N WITH CEDILLA -0145 ; [.1E1F.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER N WITH CEDILLA -A7A5 ; [.1E1F.0020.0004][.0000.0035.0004] # LATIN SMALL LETTER N WITH OBLIQUE STROKE -A7A4 ; [.1E1F.0020.000A][.0000.0035.0004] # LATIN CAPITAL LETTER N WITH OBLIQUE STROKE -1E47 ; [.1E1F.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER N WITH DOT BELOW -1E46 ; [.1E1F.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER N WITH DOT BELOW -1E4B ; [.1E1F.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW -1E4A ; [.1E1F.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW -1E49 ; [.1E1F.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER N WITH LINE BELOW -1E48 ; [.1E1F.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER N WITH LINE BELOW -3381 ; [.1E1F.0020.001C][.1CAD.0020.001D] # SQUARE NA -1F195 ; [.1E1F.0020.001D][.1D10.0020.001D][.1F5B.0020.001D] # SQUARED NEW -338B ; [.1E1F.0020.001C][.1D4B.0020.001D] # SQUARE NF -1F196 ; [.1E1F.0020.001D][.1D5A.0020.001D] # SQUARED NG -01CC ; [.1E1F.0020.0004][.1DB2.0020.0004] # LATIN SMALL LETTER NJ -01CB ; [.1E1F.0020.000A][.1DB2.0020.0004] # LATIN CAPITAL LETTER N WITH SMALL LETTER J -01CA ; [.1E1F.0020.000A][.1DB2.0020.000A] # LATIN CAPITAL LETTER NJ -339A ; [.1E1F.0020.001C][.1E10.0020.001C] # SQUARE NM -2116 ; [.1E1F.0020.000A][.1E43.0020.0004] # NUMERO SIGN -33B1 ; [.1E1F.0020.001C][.1ED7.0020.001C] # SQUARE NS -33B5 ; [.1E1F.0020.001C][.1F49.0020.001D] # SQUARE NV -33BB ; [.1E1F.0020.001C][.1F5B.0020.001D] # SQUARE NW -0274 ; [.1E23.0020.0002] # LATIN LETTER SMALL CAPITAL N -1DE1 ; [.1E23.0020.0004] # COMBINING LATIN LETTER SMALL CAPITAL N -1DB0 ; [.1E23.0020.0014] # MODIFIER LETTER SMALL CAPITAL N -1D3B ; [.1E27.0020.0002] # MODIFIER LETTER CAPITAL REVERSED N -1D0E ; [.1E28.0020.0002] # LATIN LETTER SMALL CAPITAL REVERSED N -1D70 ; [.1E29.0020.0002] # LATIN SMALL LETTER N WITH MIDDLE TILDE -0272 ; [.1E2A.0020.0002] # LATIN SMALL LETTER N WITH LEFT HOOK -019D ; [.1E2A.0020.0008] # LATIN CAPITAL LETTER N WITH LEFT HOOK -1DAE ; [.1E2A.0020.0014] # MODIFIER LETTER SMALL N WITH LEFT HOOK -019E ; [.1E2E.0020.0002] # LATIN SMALL LETTER N WITH LONG RIGHT LEG -0220 ; [.1E2E.0020.0008] # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG -A791 ; [.1E32.0020.0002] # LATIN SMALL LETTER N WITH DESCENDER -A790 ; [.1E32.0020.0008] # LATIN CAPITAL LETTER N WITH DESCENDER -1D87 ; [.1E33.0020.0002] # LATIN SMALL LETTER N WITH PALATAL HOOK -0273 ; [.1E34.0020.0002] # LATIN SMALL LETTER N WITH RETROFLEX HOOK -1DAF ; [.1E34.0020.0014] # MODIFIER LETTER SMALL N WITH RETROFLEX HOOK -0235 ; [.1E38.0020.0002] # LATIN SMALL LETTER N WITH CURL -AB3B ; [.1E3C.0020.0002] # LATIN SMALL LETTER N WITH CROSSED-TAIL -A774 ; [.1E3D.0020.0002] # LATIN SMALL LETTER NUM -014B ; [.1E3E.0020.0002] # LATIN SMALL LETTER ENG -014A ; [.1E3E.0020.0008] # LATIN CAPITAL LETTER ENG -1D51 ; [.1E3E.0020.0014] # MODIFIER LETTER SMALL ENG -AB3C ; [.1E42.0020.0002] # LATIN SMALL LETTER ENG WITH CROSSED-TAIL -006F ; [.1E43.0020.0002] # LATIN SMALL LETTER O -FF4F ; [.1E43.0020.0003] # FULLWIDTH LATIN SMALL LETTER O -0366 ; [.1E43.0020.0004] # COMBINING LATIN SMALL LETTER O -24AA ; [*0318.0020.0004][.1E43.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER O -2134 ; [.1E43.0020.0005] # SCRIPT SMALL O -1D428 ; [.1E43.0020.0005] # MATHEMATICAL BOLD SMALL O -1D45C ; [.1E43.0020.0005] # MATHEMATICAL ITALIC SMALL O -1D490 ; [.1E43.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL O -1D4F8 ; [.1E43.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL O -1D52C ; [.1E43.0020.0005] # MATHEMATICAL FRAKTUR SMALL O -1D560 ; [.1E43.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL O -1D594 ; [.1E43.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL O -1D5C8 ; [.1E43.0020.0005] # MATHEMATICAL SANS-SERIF SMALL O -1D5FC ; [.1E43.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL O -1D630 ; [.1E43.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL O -1D664 ; [.1E43.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O -1D698 ; [.1E43.0020.0005] # MATHEMATICAL MONOSPACE SMALL O -24DE ; [.1E43.0020.0006] # CIRCLED LATIN SMALL LETTER O -004F ; [.1E43.0020.0008] # LATIN CAPITAL LETTER O -FF2F ; [.1E43.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER O -1F11E ; [*0318.0020.0004][.1E43.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER O -1D40E ; [.1E43.0020.000B] # MATHEMATICAL BOLD CAPITAL O -1D442 ; [.1E43.0020.000B] # MATHEMATICAL ITALIC CAPITAL O -1D476 ; [.1E43.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL O -1D4AA ; [.1E43.0020.000B] # MATHEMATICAL SCRIPT CAPITAL O -1D4DE ; [.1E43.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL O -1D512 ; [.1E43.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL O -1D546 ; [.1E43.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL O -1D57A ; [.1E43.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL O -1D5AE ; [.1E43.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL O -1D5E2 ; [.1E43.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL O -1D616 ; [.1E43.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL O -1D64A ; [.1E43.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O -1D67E ; [.1E43.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL O -24C4 ; [.1E43.0020.000C] # CIRCLED LATIN CAPITAL LETTER O -1F15E ; [.1E43.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER O -00BA ; [.1E43.0020.0014] # MASCULINE ORDINAL INDICATOR -1D52 ; [.1E43.0020.0014] # MODIFIER LETTER SMALL O -2092 ; [.1E43.0020.0015] # LATIN SUBSCRIPT SMALL LETTER O -1D3C ; [.1E43.0020.001D] # MODIFIER LETTER CAPITAL O -1F13E ; [.1E43.0020.001D] # SQUARED LATIN CAPITAL LETTER O -1F17E ; [.1E43.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER O -00F3 ; [.1E43.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH ACUTE -00D3 ; [.1E43.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH ACUTE -00F2 ; [.1E43.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH GRAVE -00D2 ; [.1E43.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH GRAVE -014F ; [.1E43.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER O WITH BREVE -014E ; [.1E43.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER O WITH BREVE -00F4 ; [.1E43.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX -00D4 ; [.1E43.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -1ED1 ; [.1E43.0020.0002][.0000.0027.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED0 ; [.1E43.0020.0008][.0000.0027.0002][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED3 ; [.1E43.0020.0002][.0000.0027.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED2 ; [.1E43.0020.0008][.0000.0027.0002][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED7 ; [.1E43.0020.0002][.0000.0027.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE -1ED6 ; [.1E43.0020.0008][.0000.0027.0002][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE -1ED5 ; [.1E43.0020.0002][.0000.0027.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED4 ; [.1E43.0020.0008][.0000.0027.0002][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -01D2 ; [.1E43.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER O WITH CARON -01D1 ; [.1E43.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER O WITH CARON -00F6 ; [.1E43.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER O WITH DIAERESIS -1DF3 ; [.1E43.0020.0004][.0000.002B.0004] # COMBINING LATIN SMALL LETTER O WITH DIAERESIS -A79D ; [.1E43.0020.0004][.0000.002B.0004] # LATIN SMALL LETTER VOLAPUK OE -00D6 ; [.1E43.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS -A79C ; [.1E43.0020.000A][.0000.002B.0004] # LATIN CAPITAL LETTER VOLAPUK OE -022B ; [.1E43.0020.0002][.0000.002B.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1E43.0020.0008][.0000.002B.0002][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -0151 ; [.1E43.0020.0002][.0000.002C.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -0150 ; [.1E43.0020.0008][.0000.002C.0002] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -00F5 ; [.1E43.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH TILDE -00D5 ; [.1E43.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH TILDE -1E4D ; [.1E43.0020.0002][.0000.002D.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH TILDE AND ACUTE -1E4C ; [.1E43.0020.0008][.0000.002D.0002][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE -1E4F ; [.1E43.0020.0002][.0000.002D.0002][.0000.002B.0002] # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS -1E4E ; [.1E43.0020.0008][.0000.002D.0002][.0000.002B.0002] # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS -022D ; [.1E43.0020.0002][.0000.002D.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH TILDE AND MACRON -022C ; [.1E43.0020.0008][.0000.002D.0002][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH TILDE AND MACRON -022F ; [.1E43.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER O WITH DOT ABOVE -022E ; [.1E43.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER O WITH DOT ABOVE -0231 ; [.1E43.0020.0002][.0000.002E.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON -0230 ; [.1E43.0020.0008][.0000.002E.0002][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON -00F8 ; [.1E43.0020.0002][.0000.002F.0002] # LATIN SMALL LETTER O WITH STROKE -00D8 ; [.1E43.0020.0008][.0000.002F.0002] # LATIN CAPITAL LETTER O WITH STROKE -01FF ; [.1E43.0020.0002][.0000.002F.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE -01FE ; [.1E43.0020.0008][.0000.002F.0002][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE -01EB ; [.1E43.0020.0002][.0000.0031.0002] # LATIN SMALL LETTER O WITH OGONEK -01EA ; [.1E43.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER O WITH OGONEK -01ED ; [.1E43.0020.0002][.0000.0031.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH OGONEK AND MACRON -01EC ; [.1E43.0020.0008][.0000.0031.0002][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON -014D ; [.1E43.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH MACRON -014C ; [.1E43.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH MACRON -1E53 ; [.1E43.0020.0002][.0000.0032.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH MACRON AND ACUTE -1E52 ; [.1E43.0020.0008][.0000.0032.0002][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE -1E51 ; [.1E43.0020.0002][.0000.0032.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH MACRON AND GRAVE -1E50 ; [.1E43.0020.0008][.0000.0032.0002][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE -1DED ; [.1E43.0020.0004][.0000.0034.0004] # COMBINING LATIN SMALL LETTER O WITH LIGHT CENTRALIZATION STROKE -1ECF ; [.1E43.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH HOOK ABOVE -1ECE ; [.1E43.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH HOOK ABOVE -020D ; [.1E43.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER O WITH DOUBLE GRAVE -020C ; [.1E43.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE -020F ; [.1E43.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER O WITH INVERTED BREVE -020E ; [.1E43.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER O WITH INVERTED BREVE -01A1 ; [.1E43.0020.0002][.0000.003F.0002] # LATIN SMALL LETTER O WITH HORN -01A0 ; [.1E43.0020.0008][.0000.003F.0002] # LATIN CAPITAL LETTER O WITH HORN -1EDB ; [.1E43.0020.0002][.0000.003F.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH HORN AND ACUTE -1EDA ; [.1E43.0020.0008][.0000.003F.0002][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH HORN AND ACUTE -1EDD ; [.1E43.0020.0002][.0000.003F.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH HORN AND GRAVE -1EDC ; [.1E43.0020.0008][.0000.003F.0002][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH HORN AND GRAVE -1EE1 ; [.1E43.0020.0002][.0000.003F.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH HORN AND TILDE -1EE0 ; [.1E43.0020.0008][.0000.003F.0002][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH HORN AND TILDE -1EDF ; [.1E43.0020.0002][.0000.003F.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE -1EDE ; [.1E43.0020.0008][.0000.003F.0002][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE -1EE3 ; [.1E43.0020.0002][.0000.003F.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW -1EE2 ; [.1E43.0020.0008][.0000.003F.0002][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW -1ECD ; [.1E43.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH DOT BELOW -1ECC ; [.1E43.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH DOT BELOW -1ED9 ; [.1E43.0020.0002][.0000.0042.0002][.0000.0027.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1ED8 ; [.1E43.0020.0008][.0000.0042.0002][.0000.0027.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW -0153 ; [.1E43.0020.0004][.0000.0111.0004][.1D10.0020.0004] # LATIN SMALL LIGATURE OE -0152 ; [.1E43.0020.000A][.0000.0111.0004][.1D10.0020.000A] # LATIN CAPITAL LIGATURE OE -A7F9 ; [.1E43.0020.0014][.0000.0111.0014][.1D10.0020.0014] # MODIFIER LETTER SMALL LIGATURE OE -1F197 ; [.1E43.0020.001D][.1DCB.0020.001D] # SQUARED OK -A74F ; [.1E43.0020.0004][.1E43.0020.0004] # LATIN SMALL LETTER OO -A74E ; [.1E43.0020.000A][.1E43.0020.000A] # LATIN CAPITAL LETTER OO -3375 ; [.1E43.0020.001C][.1F49.0020.001D] # SQUARE OV -1D0F ; [.1E47.0020.0002] # LATIN LETTER SMALL CAPITAL O -1D11 ; [.1E48.0020.0002] # LATIN SMALL LETTER SIDEWAYS O -AB3D ; [.1E49.0020.0002] # LATIN SMALL LETTER BLACKLETTER O -0276 ; [.1E4A.0020.0002] # LATIN LETTER SMALL CAPITAL OE -1D14 ; [.1E4E.0020.0002] # LATIN SMALL LETTER TURNED OE -AB41 ; [.1E4F.0020.0002] # LATIN SMALL LETTER TURNED OE WITH STROKE -AB42 ; [.1E50.0020.0002] # LATIN SMALL LETTER TURNED OE WITH HORIZONTAL STROKE -AB40 ; [.1E51.0020.0002] # LATIN SMALL LETTER INVERTED OE -AB43 ; [.1E52.0020.0002] # LATIN SMALL LETTER TURNED O OPEN-O -AB44 ; [.1E53.0020.0002] # LATIN SMALL LETTER TURNED O OPEN-O WITH STROKE -1D13 ; [.1E54.0020.0002] # LATIN SMALL LETTER SIDEWAYS O WITH STROKE -AB3E ; [.1E55.0020.0002] # LATIN SMALL LETTER BLACKLETTER O WITH STROKE -0254 ; [.1E56.0020.0002] # LATIN SMALL LETTER OPEN O -0186 ; [.1E56.0020.0008] # LATIN CAPITAL LETTER OPEN O -1D53 ; [.1E56.0020.0014] # MODIFIER LETTER SMALL OPEN O -1D10 ; [.1E5A.0020.0002] # LATIN LETTER SMALL CAPITAL OPEN O -1D12 ; [.1E5B.0020.0002] # LATIN SMALL LETTER SIDEWAYS OPEN O -AB3F ; [.1E5C.0020.0002] # LATIN SMALL LETTER OPEN O WITH STROKE -1D97 ; [.1E5D.0020.0002] # LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK -AB62 ; [.1E5E.0020.0002] # LATIN SMALL LETTER OPEN OE -A74D ; [.1E5F.0020.0002] # LATIN SMALL LETTER O WITH LOOP -A74C ; [.1E5F.0020.0008] # LATIN CAPITAL LETTER O WITH LOOP -1D16 ; [.1E60.0020.0002] # LATIN SMALL LETTER TOP HALF O -1D54 ; [.1E60.0020.0014] # MODIFIER LETTER SMALL TOP HALF O -1D17 ; [.1E61.0020.0002] # LATIN SMALL LETTER BOTTOM HALF O -1D55 ; [.1E61.0020.0014] # MODIFIER LETTER SMALL BOTTOM HALF O -2C7A ; [.1E62.0020.0002] # LATIN SMALL LETTER O WITH LOW RING INSIDE -0275 ; [.1E63.0020.0002] # LATIN SMALL LETTER BARRED O -019F ; [.1E63.0020.0008] # LATIN CAPITAL LETTER O WITH MIDDLE TILDE -1DB1 ; [.1E63.0020.0014] # MODIFIER LETTER SMALL BARRED O -A74B ; [.1E67.0020.0002] # LATIN SMALL LETTER O WITH LONG STROKE OVERLAY -A74A ; [.1E67.0020.0008] # LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY -0277 ; [.1E68.0020.0002] # LATIN SMALL LETTER CLOSED OMEGA -A7B7 ; [.1E6C.0020.0002] # LATIN SMALL LETTER OMEGA -A7B6 ; [.1E6C.0020.0008] # LATIN CAPITAL LETTER OMEGA -0223 ; [.1E6D.0020.0002] # LATIN SMALL LETTER OU -0222 ; [.1E6D.0020.0008] # LATIN CAPITAL LETTER OU -1D3D ; [.1E6D.0020.001D] # MODIFIER LETTER CAPITAL OU -1D15 ; [.1E71.0020.0002] # LATIN LETTER SMALL CAPITAL OU -0070 ; [.1E72.0020.0002] # LATIN SMALL LETTER P -FF50 ; [.1E72.0020.0003] # FULLWIDTH LATIN SMALL LETTER P -1DEE ; [.1E72.0020.0004] # COMBINING LATIN SMALL LETTER P -24AB ; [*0318.0020.0004][.1E72.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER P -1D429 ; [.1E72.0020.0005] # MATHEMATICAL BOLD SMALL P -1D45D ; [.1E72.0020.0005] # MATHEMATICAL ITALIC SMALL P -1D491 ; [.1E72.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL P -1D4C5 ; [.1E72.0020.0005] # MATHEMATICAL SCRIPT SMALL P -1D4F9 ; [.1E72.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL P -1D52D ; [.1E72.0020.0005] # MATHEMATICAL FRAKTUR SMALL P -1D561 ; [.1E72.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL P -1D595 ; [.1E72.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL P -1D5C9 ; [.1E72.0020.0005] # MATHEMATICAL SANS-SERIF SMALL P -1D5FD ; [.1E72.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL P -1D631 ; [.1E72.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL P -1D665 ; [.1E72.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P -1D699 ; [.1E72.0020.0005] # MATHEMATICAL MONOSPACE SMALL P -24DF ; [.1E72.0020.0006] # CIRCLED LATIN SMALL LETTER P -0050 ; [.1E72.0020.0008] # LATIN CAPITAL LETTER P -FF30 ; [.1E72.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER P -1F11F ; [*0318.0020.0004][.1E72.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER P -2119 ; [.1E72.0020.000B] # DOUBLE-STRUCK CAPITAL P -1D40F ; [.1E72.0020.000B] # MATHEMATICAL BOLD CAPITAL P -1D443 ; [.1E72.0020.000B] # MATHEMATICAL ITALIC CAPITAL P -1D477 ; [.1E72.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL P -1D4AB ; [.1E72.0020.000B] # MATHEMATICAL SCRIPT CAPITAL P -1D4DF ; [.1E72.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL P -1D513 ; [.1E72.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL P -1D57B ; [.1E72.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL P -1D5AF ; [.1E72.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL P -1D5E3 ; [.1E72.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL P -1D617 ; [.1E72.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL P -1D64B ; [.1E72.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P -1D67F ; [.1E72.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL P -24C5 ; [.1E72.0020.000C] # CIRCLED LATIN CAPITAL LETTER P -1F15F ; [.1E72.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER P -1D56 ; [.1E72.0020.0014] # MODIFIER LETTER SMALL P -209A ; [.1E72.0020.0015] # LATIN SUBSCRIPT SMALL LETTER P -1D3E ; [.1E72.0020.001D] # MODIFIER LETTER CAPITAL P -1F13F ; [.1E72.0020.001D] # SQUARED LATIN CAPITAL LETTER P -1F17F ; [.1E72.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER P -1F18A ; [.1E72.0020.001D] # CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P -1E55 ; [.1E72.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER P WITH ACUTE -1E54 ; [.1E72.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER P WITH ACUTE -1E57 ; [.1E72.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER P WITH DOT ABOVE -1E56 ; [.1E72.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER P WITH DOT ABOVE -3380 ; [.1E72.0020.001C][.1CAD.0020.001D] # SQUARE PA AMPS -33A9 ; [.1E72.0020.001D][.1CAD.0020.001C] # SQUARE PA -1F18C ; [.1E72.0020.001D][.1CAD.0020.001D] # NEGATIVE SQUARED PA -3376 ; [.1E72.0020.001C][.1CE0.0020.001C] # SQUARE PC -338A ; [.1E72.0020.001C][.1D4B.0020.001D] # SQUARE PF -33D7 ; [.1E72.0020.001D][.1D7E.0020.001D] # SQUARE PH -33D8 ; [.1E72.0020.001C][*0278.0020.001C][.1E10.0020.001C][*0278.0020.001C] # SQUARE PM -33D9 ; [.1E72.0020.001D][.1E72.0020.001D][.1E10.0020.001D] # SQUARE PPM -1F14E ; [.1E72.0020.001D][.1E72.0020.001D][.1F49.0020.001D] # SQUARED PPV -33DA ; [.1E72.0020.001D][.1E99.0020.001D] # SQUARE PR -33B0 ; [.1E72.0020.001C][.1ED7.0020.001C] # SQUARE PS -3250 ; [.1E72.0020.001D][.1EFB.0020.001D][.1D10.0020.001D] # PARTNERSHIP SIGN -33B4 ; [.1E72.0020.001C][.1F49.0020.001D] # SQUARE PV -33BA ; [.1E72.0020.001C][.1F5B.0020.001D] # SQUARE PW -1D18 ; [.1E76.0020.0002] # LATIN LETTER SMALL CAPITAL P -1D7D ; [.1E77.0020.0002] # LATIN SMALL LETTER P WITH STROKE -2C63 ; [.1E77.0020.0008] # LATIN CAPITAL LETTER P WITH STROKE -A751 ; [.1E78.0020.0002] # LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER -A750 ; [.1E78.0020.0008] # LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER -1D71 ; [.1E79.0020.0002] # LATIN SMALL LETTER P WITH MIDDLE TILDE -1D88 ; [.1E7A.0020.0002] # LATIN SMALL LETTER P WITH PALATAL HOOK -01A5 ; [.1E7B.0020.0002] # LATIN SMALL LETTER P WITH HOOK -01A4 ; [.1E7B.0020.0008] # LATIN CAPITAL LETTER P WITH HOOK -A753 ; [.1E7F.0020.0002] # LATIN SMALL LETTER P WITH FLOURISH -A752 ; [.1E7F.0020.0008] # LATIN CAPITAL LETTER P WITH FLOURISH -A755 ; [.1E80.0020.0002] # LATIN SMALL LETTER P WITH SQUIRREL TAIL -A754 ; [.1E80.0020.0008] # LATIN CAPITAL LETTER P WITH SQUIRREL TAIL -A7FC ; [.1E81.0020.0002] # LATIN EPIGRAPHIC LETTER REVERSED P -0278 ; [.1E82.0020.0002] # LATIN SMALL LETTER PHI -1DB2 ; [.1E82.0020.0014] # MODIFIER LETTER SMALL PHI -2C77 ; [.1E86.0020.0002] # LATIN SMALL LETTER TAILLESS PHI -0071 ; [.1E87.0020.0002] # LATIN SMALL LETTER Q -FF51 ; [.1E87.0020.0003] # FULLWIDTH LATIN SMALL LETTER Q -24AC ; [*0318.0020.0004][.1E87.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER Q -1D42A ; [.1E87.0020.0005] # MATHEMATICAL BOLD SMALL Q -1D45E ; [.1E87.0020.0005] # MATHEMATICAL ITALIC SMALL Q -1D492 ; [.1E87.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL Q -1D4C6 ; [.1E87.0020.0005] # MATHEMATICAL SCRIPT SMALL Q -1D4FA ; [.1E87.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL Q -1D52E ; [.1E87.0020.0005] # MATHEMATICAL FRAKTUR SMALL Q -1D562 ; [.1E87.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL Q -1D596 ; [.1E87.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL Q -1D5CA ; [.1E87.0020.0005] # MATHEMATICAL SANS-SERIF SMALL Q -1D5FE ; [.1E87.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL Q -1D632 ; [.1E87.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL Q -1D666 ; [.1E87.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q -1D69A ; [.1E87.0020.0005] # MATHEMATICAL MONOSPACE SMALL Q -24E0 ; [.1E87.0020.0006] # CIRCLED LATIN SMALL LETTER Q -0051 ; [.1E87.0020.0008] # LATIN CAPITAL LETTER Q -FF31 ; [.1E87.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER Q -1F120 ; [*0318.0020.0004][.1E87.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER Q -211A ; [.1E87.0020.000B] # DOUBLE-STRUCK CAPITAL Q -1D410 ; [.1E87.0020.000B] # MATHEMATICAL BOLD CAPITAL Q -1D444 ; [.1E87.0020.000B] # MATHEMATICAL ITALIC CAPITAL Q -1D478 ; [.1E87.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL Q -1D4AC ; [.1E87.0020.000B] # MATHEMATICAL SCRIPT CAPITAL Q -1D4E0 ; [.1E87.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL Q -1D514 ; [.1E87.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL Q -1D57C ; [.1E87.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL Q -1D5B0 ; [.1E87.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL Q -1D5E4 ; [.1E87.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL Q -1D618 ; [.1E87.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q -1D64C ; [.1E87.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q -1D680 ; [.1E87.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL Q -24C6 ; [.1E87.0020.000C] # CIRCLED LATIN CAPITAL LETTER Q -1F160 ; [.1E87.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER Q -1F140 ; [.1E87.0020.001D] # SQUARED LATIN CAPITAL LETTER Q -1F180 ; [.1E87.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER Q -0239 ; [.1E87.0020.0004][.1E72.0020.0004] # LATIN SMALL LETTER QP DIGRAPH -A757 ; [.1E8B.0020.0002] # LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER -A756 ; [.1E8B.0020.0008] # LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER -A759 ; [.1E8C.0020.0002] # LATIN SMALL LETTER Q WITH DIAGONAL STROKE -A758 ; [.1E8C.0020.0008] # LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE -02A0 ; [.1E8D.0020.0002] # LATIN SMALL LETTER Q WITH HOOK -024B ; [.1E91.0020.0002] # LATIN SMALL LETTER Q WITH HOOK TAIL -024A ; [.1E91.0020.0008] # LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL -0138 ; [.1E95.0020.0002] # LATIN SMALL LETTER KRA -0072 ; [.1E99.0020.0002] # LATIN SMALL LETTER R -FF52 ; [.1E99.0020.0003] # FULLWIDTH LATIN SMALL LETTER R -036C ; [.1E99.0020.0004] # COMBINING LATIN SMALL LETTER R -1DCA ; [.1E99.0020.0004] # COMBINING LATIN SMALL LETTER R BELOW -24AD ; [*0318.0020.0004][.1E99.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER R -1D42B ; [.1E99.0020.0005] # MATHEMATICAL BOLD SMALL R -1D45F ; [.1E99.0020.0005] # MATHEMATICAL ITALIC SMALL R -1D493 ; [.1E99.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL R -1D4C7 ; [.1E99.0020.0005] # MATHEMATICAL SCRIPT SMALL R -1D4FB ; [.1E99.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL R -1D52F ; [.1E99.0020.0005] # MATHEMATICAL FRAKTUR SMALL R -1D563 ; [.1E99.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL R -1D597 ; [.1E99.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL R -1D5CB ; [.1E99.0020.0005] # MATHEMATICAL SANS-SERIF SMALL R -1D5FF ; [.1E99.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL R -1D633 ; [.1E99.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL R -1D667 ; [.1E99.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R -1D69B ; [.1E99.0020.0005] # MATHEMATICAL MONOSPACE SMALL R -24E1 ; [.1E99.0020.0006] # CIRCLED LATIN SMALL LETTER R -0052 ; [.1E99.0020.0008] # LATIN CAPITAL LETTER R -FF32 ; [.1E99.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER R -1F121 ; [*0318.0020.0004][.1E99.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER R -211B ; [.1E99.0020.000B] # SCRIPT CAPITAL R -211C ; [.1E99.0020.000B] # BLACK-LETTER CAPITAL R -211D ; [.1E99.0020.000B] # DOUBLE-STRUCK CAPITAL R -1D411 ; [.1E99.0020.000B] # MATHEMATICAL BOLD CAPITAL R -1D445 ; [.1E99.0020.000B] # MATHEMATICAL ITALIC CAPITAL R -1D479 ; [.1E99.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL R -1D4E1 ; [.1E99.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL R -1D57D ; [.1E99.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL R -1D5B1 ; [.1E99.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL R -1D5E5 ; [.1E99.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL R -1D619 ; [.1E99.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL R -1D64D ; [.1E99.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R -1D681 ; [.1E99.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL R -24C7 ; [.1E99.0020.000C] # CIRCLED LATIN CAPITAL LETTER R -1F12C ; [.1E99.0020.000C] # CIRCLED ITALIC LATIN CAPITAL LETTER R -1F161 ; [.1E99.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER R -02B3 ; [.1E99.0020.0014] # MODIFIER LETTER SMALL R -1D63 ; [.1E99.0020.0015] # LATIN SUBSCRIPT SMALL LETTER R -1D3F ; [.1E99.0020.001D] # MODIFIER LETTER CAPITAL R -1F141 ; [.1E99.0020.001D] # SQUARED LATIN CAPITAL LETTER R -1F181 ; [.1E99.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER R -0155 ; [.1E99.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER R WITH ACUTE -0154 ; [.1E99.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER R WITH ACUTE -0159 ; [.1E99.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER R WITH CARON -0158 ; [.1E99.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER R WITH CARON -1E59 ; [.1E99.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER R WITH DOT ABOVE -1E58 ; [.1E99.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER R WITH DOT ABOVE -0157 ; [.1E99.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER R WITH CEDILLA -0156 ; [.1E99.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER R WITH CEDILLA -A7A7 ; [.1E99.0020.0004][.0000.0035.0004] # LATIN SMALL LETTER R WITH OBLIQUE STROKE -A7A6 ; [.1E99.0020.000A][.0000.0035.0004] # LATIN CAPITAL LETTER R WITH OBLIQUE STROKE -0211 ; [.1E99.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER R WITH DOUBLE GRAVE -0210 ; [.1E99.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE -0213 ; [.1E99.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER R WITH INVERTED BREVE -0212 ; [.1E99.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER R WITH INVERTED BREVE -1E5B ; [.1E99.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER R WITH DOT BELOW -1E5A ; [.1E99.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER R WITH DOT BELOW -1E5D ; [.1E99.0020.0002][.0000.0042.0002][.0000.0032.0002] # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON -1E5C ; [.1E99.0020.0008][.0000.0042.0002][.0000.0032.0002] # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON -1E5F ; [.1E99.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER R WITH LINE BELOW -1E5E ; [.1E99.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER R WITH LINE BELOW -A783 ; [.1E99.0020.0004][.0000.0112.0004] # LATIN SMALL LETTER INSULAR R -A782 ; [.1E99.0020.000A][.0000.0112.0004] # LATIN CAPITAL LETTER INSULAR R -33AD ; [.1E99.0020.001C][.1CAD.0020.001C][.1CF5.0020.001C] # SQUARE RAD -33AE ; [.1E99.0020.001C][.1CAD.0020.001C][.1CF5.0020.001C][*063B.0020.001C][.1ED7.0020.001C] # SQUARE RAD OVER S -33AF ; [.1E99.0020.001C][.1CAD.0020.001C][.1CF5.0020.001C][*063B.0020.001C][.1ED7.0020.001C][.1CA5.0020.001C] # SQUARE RAD OVER S SQUARED -20A8 ; [.1E99.0020.000A][.1ED7.0020.0004] # RUPEE SIGN -AB45 ; [.1E9D.0020.0002] # LATIN SMALL LETTER STIRRUP R -0280 ; [.1E9E.0020.0002] # LATIN LETTER SMALL CAPITAL R -1DE2 ; [.1E9E.0020.0004] # COMBINING LATIN LETTER SMALL CAPITAL R -01A6 ; [.1E9E.0020.0008] # LATIN LETTER YR -AB46 ; [.1EA2.0020.0002] # LATIN LETTER SMALL CAPITAL R WITH RIGHT LEG -A75B ; [.1EA3.0020.0002] # LATIN SMALL LETTER R ROTUNDA -1DE3 ; [.1EA3.0020.0004] # COMBINING LATIN SMALL LETTER R ROTUNDA -A75A ; [.1EA3.0020.0008] # LATIN CAPITAL LETTER R ROTUNDA -1D19 ; [.1EA4.0020.0002] # LATIN LETTER SMALL CAPITAL REVERSED R -024D ; [.1EA5.0020.0002] # LATIN SMALL LETTER R WITH STROKE -024C ; [.1EA5.0020.0008] # LATIN CAPITAL LETTER R WITH STROKE -1D72 ; [.1EA9.0020.0002] # LATIN SMALL LETTER R WITH MIDDLE TILDE -0279 ; [.1EAA.0020.0002] # LATIN SMALL LETTER TURNED R -02B4 ; [.1EAA.0020.0014] # MODIFIER LETTER SMALL TURNED R -1D1A ; [.1EAE.0020.0002] # LATIN LETTER SMALL CAPITAL TURNED R -027A ; [.1EAF.0020.0002] # LATIN SMALL LETTER TURNED R WITH LONG LEG -1D89 ; [.1EB3.0020.0002] # LATIN SMALL LETTER R WITH PALATAL HOOK -027B ; [.1EB4.0020.0002] # LATIN SMALL LETTER TURNED R WITH HOOK -02B5 ; [.1EB4.0020.0014] # MODIFIER LETTER SMALL TURNED R WITH HOOK -2C79 ; [.1EB8.0020.0002] # LATIN SMALL LETTER TURNED R WITH TAIL -027C ; [.1EB9.0020.0002] # LATIN SMALL LETTER R WITH LONG LEG -027D ; [.1EBD.0020.0002] # LATIN SMALL LETTER R WITH TAIL -2C64 ; [.1EBD.0020.0008] # LATIN CAPITAL LETTER R WITH TAIL -AB49 ; [.1EC1.0020.0002] # LATIN SMALL LETTER R WITH CROSSED-TAIL -027E ; [.1EC2.0020.0002] # LATIN SMALL LETTER R WITH FISHHOOK -1D73 ; [.1EC6.0020.0002] # LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE -027F ; [.1EC7.0020.0002] # LATIN SMALL LETTER REVERSED R WITH FISHHOOK -AB47 ; [.1ECB.0020.0002] # LATIN SMALL LETTER R WITHOUT HANDLE -AB48 ; [.1ECC.0020.0002] # LATIN SMALL LETTER DOUBLE R -AB4A ; [.1ECD.0020.0002] # LATIN SMALL LETTER DOUBLE R WITH CROSSED-TAIL -AB4B ; [.1ECE.0020.0002] # LATIN SMALL LETTER SCRIPT R -AB4C ; [.1ECF.0020.0002] # LATIN SMALL LETTER SCRIPT R WITH RING -0281 ; [.1ED0.0020.0002] # LATIN LETTER SMALL CAPITAL INVERTED R -02B6 ; [.1ED0.0020.0014] # MODIFIER LETTER SMALL CAPITAL INVERTED R -A775 ; [.1ED4.0020.0002] # LATIN SMALL LETTER RUM -A776 ; [.1ED5.0020.0002] # LATIN LETTER SMALL CAPITAL RUM -A75D ; [.1ED6.0020.0002] # LATIN SMALL LETTER RUM ROTUNDA -A75C ; [.1ED6.0020.0008] # LATIN CAPITAL LETTER RUM ROTUNDA -0073 ; [.1ED7.0020.0002] # LATIN SMALL LETTER S -FF53 ; [.1ED7.0020.0003] # FULLWIDTH LATIN SMALL LETTER S -1DE4 ; [.1ED7.0020.0004] # COMBINING LATIN SMALL LETTER S -24AE ; [*0318.0020.0004][.1ED7.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER S -1D42C ; [.1ED7.0020.0005] # MATHEMATICAL BOLD SMALL S -1D460 ; [.1ED7.0020.0005] # MATHEMATICAL ITALIC SMALL S -1D494 ; [.1ED7.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL S -1D4C8 ; [.1ED7.0020.0005] # MATHEMATICAL SCRIPT SMALL S -1D4FC ; [.1ED7.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL S -1D530 ; [.1ED7.0020.0005] # MATHEMATICAL FRAKTUR SMALL S -1D564 ; [.1ED7.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL S -1D598 ; [.1ED7.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL S -1D5CC ; [.1ED7.0020.0005] # MATHEMATICAL SANS-SERIF SMALL S -1D600 ; [.1ED7.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL S -1D634 ; [.1ED7.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL S -1D668 ; [.1ED7.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S -1D69C ; [.1ED7.0020.0005] # MATHEMATICAL MONOSPACE SMALL S -24E2 ; [.1ED7.0020.0006] # CIRCLED LATIN SMALL LETTER S -0053 ; [.1ED7.0020.0008] # LATIN CAPITAL LETTER S -FF33 ; [.1ED7.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER S -1F122 ; [*0318.0020.0004][.1ED7.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER S -1F12A ; [*037A.0020.0004][.1ED7.0020.000A][*037B.0020.0004] # TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S -1D412 ; [.1ED7.0020.000B] # MATHEMATICAL BOLD CAPITAL S -1D446 ; [.1ED7.0020.000B] # MATHEMATICAL ITALIC CAPITAL S -1D47A ; [.1ED7.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL S -1D4AE ; [.1ED7.0020.000B] # MATHEMATICAL SCRIPT CAPITAL S -1D4E2 ; [.1ED7.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL S -1D516 ; [.1ED7.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL S -1D54A ; [.1ED7.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL S -1D57E ; [.1ED7.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL S -1D5B2 ; [.1ED7.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL S -1D5E6 ; [.1ED7.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL S -1D61A ; [.1ED7.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL S -1D64E ; [.1ED7.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S -1D682 ; [.1ED7.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL S -24C8 ; [.1ED7.0020.000C] # CIRCLED LATIN CAPITAL LETTER S -1F162 ; [.1ED7.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER S -02E2 ; [.1ED7.0020.0014] # MODIFIER LETTER SMALL S -209B ; [.1ED7.0020.0015] # LATIN SUBSCRIPT SMALL LETTER S -1F142 ; [.1ED7.0020.001D] # SQUARED LATIN CAPITAL LETTER S -1F182 ; [.1ED7.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER S -015B ; [.1ED7.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER S WITH ACUTE -015A ; [.1ED7.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER S WITH ACUTE -1E65 ; [.1ED7.0020.0002][.0000.0024.0002][.0000.002E.0002] # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE -1E64 ; [.1ED7.0020.0008][.0000.0024.0002][.0000.002E.0002] # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE -015D ; [.1ED7.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER S WITH CIRCUMFLEX -015C ; [.1ED7.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER S WITH CIRCUMFLEX -0161 ; [.1ED7.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER S WITH CARON -0160 ; [.1ED7.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER S WITH CARON -1E67 ; [.1ED7.0020.0002][.0000.0028.0002][.0000.002E.0002] # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE -1E66 ; [.1ED7.0020.0008][.0000.0028.0002][.0000.002E.0002] # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE -1E61 ; [.1ED7.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER S WITH DOT ABOVE -1E60 ; [.1ED7.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER S WITH DOT ABOVE -015F ; [.1ED7.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER S WITH CEDILLA -015E ; [.1ED7.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER S WITH CEDILLA -A7A9 ; [.1ED7.0020.0004][.0000.0035.0004] # LATIN SMALL LETTER S WITH OBLIQUE STROKE -A7A8 ; [.1ED7.0020.000A][.0000.0035.0004] # LATIN CAPITAL LETTER S WITH OBLIQUE STROKE -1E63 ; [.1ED7.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER S WITH DOT BELOW -1E62 ; [.1ED7.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER S WITH DOT BELOW -1E69 ; [.1ED7.0020.0002][.0000.0042.0002][.0000.002E.0002] # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE -1E68 ; [.1ED7.0020.0008][.0000.0042.0002][.0000.002E.0002] # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE -0219 ; [.1ED7.0020.0002][.0000.0045.0002] # LATIN SMALL LETTER S WITH COMMA BELOW -0218 ; [.1ED7.0020.0008][.0000.0045.0002] # LATIN CAPITAL LETTER S WITH COMMA BELOW -017F ; [.1ED7.0020.0004][.0000.0112.0004] # LATIN SMALL LETTER LONG S -1DE5 ; [.1ED7.0020.0004][.0000.0112.0004] # COMBINING LATIN SMALL LETTER LONG S -A785 ; [.1ED7.0020.0004][.0000.0112.0004] # LATIN SMALL LETTER INSULAR S -A784 ; [.1ED7.0020.000A][.0000.0112.0004] # LATIN CAPITAL LETTER INSULAR S -1E9B ; [.1ED7.0020.0004][.0000.0112.0004][.0000.002E.0002] # LATIN SMALL LETTER LONG S WITH DOT ABOVE -1F18D ; [.1ED7.0020.001D][.1CAD.0020.001D] # NEGATIVE SQUARED SA -1F14C ; [.1ED7.0020.001D][.1CF5.0020.001D] # SQUARED SD -1F1AA ; [.1ED7.0020.001D][.1D7E.0020.001D][.1F49.0020.001D] # SQUARED SHV -2120 ; [.1ED7.0020.0014][.1E10.0020.0014] # SERVICE MARK -1F198 ; [.1ED7.0020.001D][.1E43.0020.001D][.1ED7.0020.001D] # SQUARED SOS -33DB ; [.1ED7.0020.001C][.1E99.0020.001C] # SQUARE SR -1F14D ; [.1ED7.0020.001D][.1ED7.0020.001D] # SQUARED SS -00DF ; [.1ED7.0020.0004][.0000.0111.0004][.1ED7.0020.0004] # LATIN SMALL LETTER SHARP S -1E9E ; [.1ED7.0020.000A][.0000.0111.0004][.1ED7.0020.000A] # LATIN CAPITAL LETTER SHARP S -FB06 ; [.1ED7.0020.0004][.1EFB.0020.0004] # LATIN SMALL LIGATURE ST -FB05 ; [.1ED7.0020.0004][.0000.0112.0004][.1EFB.0020.0004] # LATIN SMALL LIGATURE LONG S T -33DC ; [.1ED7.0020.001D][.1F49.0020.001C] # SQUARE SV -A731 ; [.1EDB.0020.0002] # LATIN LETTER SMALL CAPITAL S -1D74 ; [.1EDC.0020.0002] # LATIN SMALL LETTER S WITH MIDDLE TILDE -1D8A ; [.1EDD.0020.0002] # LATIN SMALL LETTER S WITH PALATAL HOOK -0282 ; [.1EDE.0020.0002] # LATIN SMALL LETTER S WITH HOOK -1DB3 ; [.1EDE.0020.0014] # MODIFIER LETTER SMALL S WITH HOOK -023F ; [.1EE2.0020.0002] # LATIN SMALL LETTER S WITH SWASH TAIL -2C7E ; [.1EE2.0020.0008] # LATIN CAPITAL LETTER S WITH SWASH TAIL -1E9C ; [.1EE6.0020.0002] # LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE -1E9D ; [.1EE7.0020.0002] # LATIN SMALL LETTER LONG S WITH HIGH STROKE -0283 ; [.1EE8.0020.0002] # LATIN SMALL LETTER ESH -1DEF ; [.1EE8.0020.0004] # COMBINING LATIN SMALL LETTER ESH -01A9 ; [.1EE8.0020.0008] # LATIN CAPITAL LETTER ESH -1DB4 ; [.1EE8.0020.0014] # MODIFIER LETTER SMALL ESH -AB4D ; [.1EEC.0020.0002] # LATIN SMALL LETTER BASELINE ESH -1D8B ; [.1EED.0020.0002] # LATIN SMALL LETTER ESH WITH PALATAL HOOK -01AA ; [.1EEE.0020.0002] # LATIN LETTER REVERSED ESH LOOP -0285 ; [.1EF2.0020.0002] # LATIN SMALL LETTER SQUAT REVERSED ESH -1D98 ; [.1EF6.0020.0002] # LATIN SMALL LETTER ESH WITH RETROFLEX HOOK -0286 ; [.1EF7.0020.0002] # LATIN SMALL LETTER ESH WITH CURL -0074 ; [.1EFB.0020.0002] # LATIN SMALL LETTER T -FF54 ; [.1EFB.0020.0003] # FULLWIDTH LATIN SMALL LETTER T -036D ; [.1EFB.0020.0004] # COMBINING LATIN SMALL LETTER T -24AF ; [*0318.0020.0004][.1EFB.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER T -1D42D ; [.1EFB.0020.0005] # MATHEMATICAL BOLD SMALL T -1D461 ; [.1EFB.0020.0005] # MATHEMATICAL ITALIC SMALL T -1D495 ; [.1EFB.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL T -1D4C9 ; [.1EFB.0020.0005] # MATHEMATICAL SCRIPT SMALL T -1D4FD ; [.1EFB.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL T -1D531 ; [.1EFB.0020.0005] # MATHEMATICAL FRAKTUR SMALL T -1D565 ; [.1EFB.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL T -1D599 ; [.1EFB.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL T -1D5CD ; [.1EFB.0020.0005] # MATHEMATICAL SANS-SERIF SMALL T -1D601 ; [.1EFB.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL T -1D635 ; [.1EFB.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL T -1D669 ; [.1EFB.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T -1D69D ; [.1EFB.0020.0005] # MATHEMATICAL MONOSPACE SMALL T -24E3 ; [.1EFB.0020.0006] # CIRCLED LATIN SMALL LETTER T -0054 ; [.1EFB.0020.0008] # LATIN CAPITAL LETTER T -FF34 ; [.1EFB.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER T -1F123 ; [*0318.0020.0004][.1EFB.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER T -1D413 ; [.1EFB.0020.000B] # MATHEMATICAL BOLD CAPITAL T -1D447 ; [.1EFB.0020.000B] # MATHEMATICAL ITALIC CAPITAL T -1D47B ; [.1EFB.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL T -1D4AF ; [.1EFB.0020.000B] # MATHEMATICAL SCRIPT CAPITAL T -1D4E3 ; [.1EFB.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL T -1D517 ; [.1EFB.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL T -1D54B ; [.1EFB.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL T -1D57F ; [.1EFB.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL T -1D5B3 ; [.1EFB.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL T -1D5E7 ; [.1EFB.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL T -1D61B ; [.1EFB.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL T -1D64F ; [.1EFB.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T -1D683 ; [.1EFB.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL T -24C9 ; [.1EFB.0020.000C] # CIRCLED LATIN CAPITAL LETTER T -1F163 ; [.1EFB.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER T -1D57 ; [.1EFB.0020.0014] # MODIFIER LETTER SMALL T -209C ; [.1EFB.0020.0015] # LATIN SUBSCRIPT SMALL LETTER T -1D40 ; [.1EFB.0020.001D] # MODIFIER LETTER CAPITAL T -1F143 ; [.1EFB.0020.001D] # SQUARED LATIN CAPITAL LETTER T -1F183 ; [.1EFB.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER T -0165 ; [.1EFB.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER T WITH CARON -0164 ; [.1EFB.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER T WITH CARON -1E97 ; [.1EFB.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER T WITH DIAERESIS -1E6B ; [.1EFB.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER T WITH DOT ABOVE -1E6A ; [.1EFB.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER T WITH DOT ABOVE -0163 ; [.1EFB.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER T WITH CEDILLA -0162 ; [.1EFB.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER T WITH CEDILLA -1E6D ; [.1EFB.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER T WITH DOT BELOW -1E6C ; [.1EFB.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER T WITH DOT BELOW -021B ; [.1EFB.0020.0002][.0000.0045.0002] # LATIN SMALL LETTER T WITH COMMA BELOW -021A ; [.1EFB.0020.0008][.0000.0045.0002] # LATIN CAPITAL LETTER T WITH COMMA BELOW -1E71 ; [.1EFB.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW -1E70 ; [.1EFB.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW -1E6F ; [.1EFB.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER T WITH LINE BELOW -1E6E ; [.1EFB.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER T WITH LINE BELOW -A787 ; [.1EFB.0020.0004][.0000.0112.0004] # LATIN SMALL LETTER INSULAR T -A786 ; [.1EFB.0020.000A][.0000.0112.0004] # LATIN CAPITAL LETTER INSULAR T -02A8 ; [.1EFB.0020.0004][.1CEF.0020.0004] # LATIN SMALL LETTER TC DIGRAPH WITH CURL -2121 ; [.1EFB.0020.000A][.1D10.0020.000A][.1DDD.0020.000A] # TELEPHONE SIGN -1D7A ; [.1EFB.0020.0004][.0000.0111.0004][.1D7E.0020.0004] # LATIN SMALL LETTER TH WITH STRIKETHROUGH -3394 ; [.1EFB.0020.001D][.1D7E.0020.001D][.1F87.0020.001C] # SQUARE THZ -2122 ; [.1EFB.0020.0014][.1E10.0020.0014] # TRADE MARK SIGN -01BE ; [.1EFB.0020.0004][.1ED7.0020.0004] # LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE -02A6 ; [.1EFB.0020.0004][.1ED7.0020.0004] # LATIN SMALL LETTER TS DIGRAPH -02A7 ; [.1EFB.0020.0004][.1EE8.0020.0004] # LATIN SMALL LETTER TESH DIGRAPH -A729 ; [.1EFB.0020.0004][.1F87.0020.0004] # LATIN SMALL LETTER TZ -A728 ; [.1EFB.0020.000A][.1F87.0020.0004] # LATIN CAPITAL LETTER TZ -1D1B ; [.1EFF.0020.0002] # LATIN LETTER SMALL CAPITAL T -0167 ; [.1F00.0020.0002] # LATIN SMALL LETTER T WITH STROKE -0166 ; [.1F00.0020.0008] # LATIN CAPITAL LETTER T WITH STROKE -2C66 ; [.1F04.0020.0002] # LATIN SMALL LETTER T WITH DIAGONAL STROKE -023E ; [.1F04.0020.0008] # LATIN CAPITAL LETTER T WITH DIAGONAL STROKE -1D75 ; [.1F05.0020.0002] # LATIN SMALL LETTER T WITH MIDDLE TILDE -01AB ; [.1F06.0020.0002] # LATIN SMALL LETTER T WITH PALATAL HOOK -1DB5 ; [.1F06.0020.0014] # MODIFIER LETTER SMALL T WITH PALATAL HOOK -01AD ; [.1F0A.0020.0002] # LATIN SMALL LETTER T WITH HOOK -01AC ; [.1F0A.0020.0008] # LATIN CAPITAL LETTER T WITH HOOK -0288 ; [.1F0E.0020.0002] # LATIN SMALL LETTER T WITH RETROFLEX HOOK -01AE ; [.1F0E.0020.0008] # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK -0236 ; [.1F12.0020.0002] # LATIN SMALL LETTER T WITH CURL -A777 ; [.1F16.0020.0002] # LATIN SMALL LETTER TUM -0287 ; [.1F17.0020.0002] # LATIN SMALL LETTER TURNED T -A7B1 ; [.1F17.0020.0008] # LATIN CAPITAL LETTER TURNED T -0075 ; [.1F1B.0020.0002] # LATIN SMALL LETTER U -FF55 ; [.1F1B.0020.0003] # FULLWIDTH LATIN SMALL LETTER U -0367 ; [.1F1B.0020.0004] # COMBINING LATIN SMALL LETTER U -24B0 ; [*0318.0020.0004][.1F1B.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER U -1D42E ; [.1F1B.0020.0005] # MATHEMATICAL BOLD SMALL U -1D462 ; [.1F1B.0020.0005] # MATHEMATICAL ITALIC SMALL U -1D496 ; [.1F1B.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL U -1D4CA ; [.1F1B.0020.0005] # MATHEMATICAL SCRIPT SMALL U -1D4FE ; [.1F1B.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL U -1D532 ; [.1F1B.0020.0005] # MATHEMATICAL FRAKTUR SMALL U -1D566 ; [.1F1B.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL U -1D59A ; [.1F1B.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL U -1D5CE ; [.1F1B.0020.0005] # MATHEMATICAL SANS-SERIF SMALL U -1D602 ; [.1F1B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL U -1D636 ; [.1F1B.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL U -1D66A ; [.1F1B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U -1D69E ; [.1F1B.0020.0005] # MATHEMATICAL MONOSPACE SMALL U -24E4 ; [.1F1B.0020.0006] # CIRCLED LATIN SMALL LETTER U -0055 ; [.1F1B.0020.0008] # LATIN CAPITAL LETTER U -FF35 ; [.1F1B.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER U -1F124 ; [*0318.0020.0004][.1F1B.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER U -1D414 ; [.1F1B.0020.000B] # MATHEMATICAL BOLD CAPITAL U -1D448 ; [.1F1B.0020.000B] # MATHEMATICAL ITALIC CAPITAL U -1D47C ; [.1F1B.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL U -1D4B0 ; [.1F1B.0020.000B] # MATHEMATICAL SCRIPT CAPITAL U -1D4E4 ; [.1F1B.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL U -1D518 ; [.1F1B.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL U -1D54C ; [.1F1B.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL U -1D580 ; [.1F1B.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL U -1D5B4 ; [.1F1B.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL U -1D5E8 ; [.1F1B.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL U -1D61C ; [.1F1B.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL U -1D650 ; [.1F1B.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U -1D684 ; [.1F1B.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL U -24CA ; [.1F1B.0020.000C] # CIRCLED LATIN CAPITAL LETTER U -1F164 ; [.1F1B.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER U -1D58 ; [.1F1B.0020.0014] # MODIFIER LETTER SMALL U -1D64 ; [.1F1B.0020.0015] # LATIN SUBSCRIPT SMALL LETTER U -1D41 ; [.1F1B.0020.001D] # MODIFIER LETTER CAPITAL U -1F144 ; [.1F1B.0020.001D] # SQUARED LATIN CAPITAL LETTER U -1F184 ; [.1F1B.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER U -00FA ; [.1F1B.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH ACUTE -00DA ; [.1F1B.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH ACUTE -00F9 ; [.1F1B.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH GRAVE -00D9 ; [.1F1B.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH GRAVE -016D ; [.1F1B.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER U WITH BREVE -016C ; [.1F1B.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER U WITH BREVE -00FB ; [.1F1B.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER U WITH CIRCUMFLEX -00DB ; [.1F1B.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER U WITH CIRCUMFLEX -01D4 ; [.1F1B.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH CARON -01D3 ; [.1F1B.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH CARON -016F ; [.1F1B.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER U WITH RING ABOVE -016E ; [.1F1B.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER U WITH RING ABOVE -00FC ; [.1F1B.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER U WITH DIAERESIS -1DF4 ; [.1F1B.0020.0004][.0000.002B.0004] # COMBINING LATIN SMALL LETTER U WITH DIAERESIS -A79F ; [.1F1B.0020.0004][.0000.002B.0004] # LATIN SMALL LETTER VOLAPUK UE -00DC ; [.1F1B.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS -A79E ; [.1F1B.0020.000A][.0000.002B.0004] # LATIN CAPITAL LETTER VOLAPUK UE -01D8 ; [.1F1B.0020.0002][.0000.002B.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F1B.0020.0008][.0000.002B.0002][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01DC ; [.1F1B.0020.0002][.0000.002B.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F1B.0020.0008][.0000.002B.0002][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01DA ; [.1F1B.0020.0002][.0000.002B.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F1B.0020.0008][.0000.002B.0002][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -01D6 ; [.1F1B.0020.0002][.0000.002B.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F1B.0020.0008][.0000.002B.0002][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -0171 ; [.1F1B.0020.0002][.0000.002C.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0170 ; [.1F1B.0020.0008][.0000.002C.0002] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -0169 ; [.1F1B.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER U WITH TILDE -0168 ; [.1F1B.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER U WITH TILDE -1E79 ; [.1F1B.0020.0002][.0000.002D.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH TILDE AND ACUTE -1E78 ; [.1F1B.0020.0008][.0000.002D.0002][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE -0173 ; [.1F1B.0020.0002][.0000.0031.0002] # LATIN SMALL LETTER U WITH OGONEK -0172 ; [.1F1B.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER U WITH OGONEK -016B ; [.1F1B.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH MACRON -016A ; [.1F1B.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH MACRON -1E7B ; [.1F1B.0020.0002][.0000.0032.0002][.0000.002B.0002] # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS -1E7A ; [.1F1B.0020.0008][.0000.0032.0002][.0000.002B.0002] # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS -1DF0 ; [.1F1B.0020.0004][.0000.0034.0004] # COMBINING LATIN SMALL LETTER U WITH LIGHT CENTRALIZATION STROKE -1EE7 ; [.1F1B.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER U WITH HOOK ABOVE -1EE6 ; [.1F1B.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER U WITH HOOK ABOVE -0215 ; [.1F1B.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER U WITH DOUBLE GRAVE -0214 ; [.1F1B.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE -0217 ; [.1F1B.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER U WITH INVERTED BREVE -0216 ; [.1F1B.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER U WITH INVERTED BREVE -01B0 ; [.1F1B.0020.0002][.0000.003F.0002] # LATIN SMALL LETTER U WITH HORN -01AF ; [.1F1B.0020.0008][.0000.003F.0002] # LATIN CAPITAL LETTER U WITH HORN -1EE9 ; [.1F1B.0020.0002][.0000.003F.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH HORN AND ACUTE -1EE8 ; [.1F1B.0020.0008][.0000.003F.0002][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH HORN AND ACUTE -1EEB ; [.1F1B.0020.0002][.0000.003F.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH HORN AND GRAVE -1EEA ; [.1F1B.0020.0008][.0000.003F.0002][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH HORN AND GRAVE -1EEF ; [.1F1B.0020.0002][.0000.003F.0002][.0000.002D.0002] # LATIN SMALL LETTER U WITH HORN AND TILDE -1EEE ; [.1F1B.0020.0008][.0000.003F.0002][.0000.002D.0002] # LATIN CAPITAL LETTER U WITH HORN AND TILDE -1EED ; [.1F1B.0020.0002][.0000.003F.0002][.0000.003B.0002] # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE -1EEC ; [.1F1B.0020.0008][.0000.003F.0002][.0000.003B.0002] # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE -1EF1 ; [.1F1B.0020.0002][.0000.003F.0002][.0000.0042.0002] # LATIN SMALL LETTER U WITH HORN AND DOT BELOW -1EF0 ; [.1F1B.0020.0008][.0000.003F.0002][.0000.0042.0002] # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW -1EE5 ; [.1F1B.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER U WITH DOT BELOW -1EE4 ; [.1F1B.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER U WITH DOT BELOW -1E73 ; [.1F1B.0020.0002][.0000.0043.0002] # LATIN SMALL LETTER U WITH DIAERESIS BELOW -1E72 ; [.1F1B.0020.0008][.0000.0043.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW -1E77 ; [.1F1B.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW -1E76 ; [.1F1B.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW -1E75 ; [.1F1B.0020.0002][.0000.0048.0002] # LATIN SMALL LETTER U WITH TILDE BELOW -1E74 ; [.1F1B.0020.0008][.0000.0048.0002] # LATIN CAPITAL LETTER U WITH TILDE BELOW -1F1AB ; [.1F1B.0020.001D][.1D7E.0020.001D][.1CF5.0020.001D] # SQUARED UHD -1F199 ; [.1F1B.0020.001D][.1E72.0020.001D][*0261.0020.001C] # SQUARED UP WITH EXCLAMATION MARK -1D1C ; [.1F1F.0020.0002] # LATIN LETTER SMALL CAPITAL U -1DB8 ; [.1F1F.0020.0014] # MODIFIER LETTER SMALL CAPITAL U -AB4E ; [.1F20.0020.0002] # LATIN SMALL LETTER U WITH SHORT RIGHT LEG -1D1D ; [.1F21.0020.0002] # LATIN SMALL LETTER SIDEWAYS U -1D59 ; [.1F21.0020.0014] # MODIFIER LETTER SMALL SIDEWAYS U -1D1E ; [.1F22.0020.0002] # LATIN SMALL LETTER SIDEWAYS DIAERESIZED U -1D6B ; [.1F23.0020.0002] # LATIN SMALL LETTER UE -AB50 ; [.1F24.0020.0002] # LATIN SMALL LETTER UI -AB51 ; [.1F25.0020.0002] # LATIN SMALL LETTER TURNED UI -0289 ; [.1F26.0020.0002] # LATIN SMALL LETTER U BAR -0244 ; [.1F26.0020.0008] # LATIN CAPITAL LETTER U BAR -1DB6 ; [.1F26.0020.0014] # MODIFIER LETTER SMALL U BAR -AB4F ; [.1F2A.0020.0002] # LATIN SMALL LETTER U BAR WITH SHORT RIGHT LEG -1D7E ; [.1F2B.0020.0002] # LATIN SMALL CAPITAL LETTER U WITH STROKE -1D99 ; [.1F2C.0020.0002] # LATIN SMALL LETTER U WITH RETROFLEX HOOK -AB52 ; [.1F2D.0020.0002] # LATIN SMALL LETTER U WITH LEFT HOOK -AB5F ; [.1F2D.0020.0014] # MODIFIER LETTER SMALL U WITH LEFT HOOK -0265 ; [.1F2E.0020.0002] # LATIN SMALL LETTER TURNED H -A78D ; [.1F2E.0020.0008] # LATIN CAPITAL LETTER TURNED H -1DA3 ; [.1F2E.0020.0014] # MODIFIER LETTER SMALL TURNED H -02AE ; [.1F32.0020.0002] # LATIN SMALL LETTER TURNED H WITH FISHHOOK -02AF ; [.1F36.0020.0002] # LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL -026F ; [.1F3A.0020.0002] # LATIN SMALL LETTER TURNED M -019C ; [.1F3A.0020.0008] # LATIN CAPITAL LETTER TURNED M -1D5A ; [.1F3A.0020.0014] # MODIFIER LETTER SMALL TURNED M -A7FA ; [.1F3E.0020.0002] # LATIN LETTER SMALL CAPITAL TURNED M -1D1F ; [.1F3F.0020.0002] # LATIN SMALL LETTER SIDEWAYS TURNED M -0270 ; [.1F40.0020.0002] # LATIN SMALL LETTER TURNED M WITH LONG LEG -1DAD ; [.1F40.0020.0014] # MODIFIER LETTER SMALL TURNED M WITH LONG LEG -028A ; [.1F44.0020.0002] # LATIN SMALL LETTER UPSILON -01B1 ; [.1F44.0020.0008] # LATIN CAPITAL LETTER UPSILON -1DB7 ; [.1F44.0020.0014] # MODIFIER LETTER SMALL UPSILON -1D7F ; [.1F48.0020.0002] # LATIN SMALL LETTER UPSILON WITH STROKE -0076 ; [.1F49.0020.0002] # LATIN SMALL LETTER V -FF56 ; [.1F49.0020.0003] # FULLWIDTH LATIN SMALL LETTER V -036E ; [.1F49.0020.0004] # COMBINING LATIN SMALL LETTER V -2174 ; [.1F49.0020.0004] # SMALL ROMAN NUMERAL FIVE -24B1 ; [*0318.0020.0004][.1F49.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER V -1D42F ; [.1F49.0020.0005] # MATHEMATICAL BOLD SMALL V -1D463 ; [.1F49.0020.0005] # MATHEMATICAL ITALIC SMALL V -1D497 ; [.1F49.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL V -1D4CB ; [.1F49.0020.0005] # MATHEMATICAL SCRIPT SMALL V -1D4FF ; [.1F49.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL V -1D533 ; [.1F49.0020.0005] # MATHEMATICAL FRAKTUR SMALL V -1D567 ; [.1F49.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL V -1D59B ; [.1F49.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL V -1D5CF ; [.1F49.0020.0005] # MATHEMATICAL SANS-SERIF SMALL V -1D603 ; [.1F49.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL V -1D637 ; [.1F49.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL V -1D66B ; [.1F49.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V -1D69F ; [.1F49.0020.0005] # MATHEMATICAL MONOSPACE SMALL V -24E5 ; [.1F49.0020.0006] # CIRCLED LATIN SMALL LETTER V -0056 ; [.1F49.0020.0008] # LATIN CAPITAL LETTER V -FF36 ; [.1F49.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER V -2164 ; [.1F49.0020.000A] # ROMAN NUMERAL FIVE -1F125 ; [*0318.0020.0004][.1F49.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER V -1D415 ; [.1F49.0020.000B] # MATHEMATICAL BOLD CAPITAL V -1D449 ; [.1F49.0020.000B] # MATHEMATICAL ITALIC CAPITAL V -1D47D ; [.1F49.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL V -1D4B1 ; [.1F49.0020.000B] # MATHEMATICAL SCRIPT CAPITAL V -1D4E5 ; [.1F49.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL V -1D519 ; [.1F49.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL V -1D54D ; [.1F49.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL V -1D581 ; [.1F49.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL V -1D5B5 ; [.1F49.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL V -1D5E9 ; [.1F49.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL V -1D61D ; [.1F49.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL V -1D651 ; [.1F49.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V -1D685 ; [.1F49.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL V -24CB ; [.1F49.0020.000C] # CIRCLED LATIN CAPITAL LETTER V -1F165 ; [.1F49.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER V -1D5B ; [.1F49.0020.0014] # MODIFIER LETTER SMALL V -1D65 ; [.1F49.0020.0015] # LATIN SUBSCRIPT SMALL LETTER V -2C7D ; [.1F49.0020.001D] # MODIFIER LETTER CAPITAL V -1F145 ; [.1F49.0020.001D] # SQUARED LATIN CAPITAL LETTER V -1F185 ; [.1F49.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER V -1E7D ; [.1F49.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER V WITH TILDE -1E7C ; [.1F49.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER V WITH TILDE -1E7F ; [.1F49.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER V WITH DOT BELOW -1E7E ; [.1F49.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER V WITH DOT BELOW -2175 ; [.1F49.0020.0004][.1D98.0020.0004] # SMALL ROMAN NUMERAL SIX -2165 ; [.1F49.0020.000A][.1D98.0020.000A] # ROMAN NUMERAL SIX -2176 ; [.1F49.0020.0004][.1D98.0020.0004][.1D98.0020.0004] # SMALL ROMAN NUMERAL SEVEN -2166 ; [.1F49.0020.000A][.1D98.0020.000A][.1D98.0020.000A] # ROMAN NUMERAL SEVEN -2177 ; [.1F49.0020.0004][.1D98.0020.0004][.1D98.0020.0004][.1D98.0020.0004] # SMALL ROMAN NUMERAL EIGHT -2167 ; [.1F49.0020.000A][.1D98.0020.000A][.1D98.0020.000A][.1D98.0020.000A] # ROMAN NUMERAL EIGHT -33DE ; [.1F49.0020.001D][*063B.0020.001C][.1E10.0020.001C] # SQUARE V OVER M -1F1AC ; [.1F49.0020.001D][.1E43.0020.001D][.1CF5.0020.001D] # SQUARED VOD -1F19A ; [.1F49.0020.001D][.1ED7.0020.001D] # SQUARED VS -A761 ; [.1F49.0020.0004][.1F71.0020.0004] # LATIN SMALL LETTER VY -A760 ; [.1F49.0020.000A][.1F71.0020.000A] # LATIN CAPITAL LETTER VY -1D20 ; [.1F4D.0020.0002] # LATIN LETTER SMALL CAPITAL V -A75F ; [.1F4E.0020.0002] # LATIN SMALL LETTER V WITH DIAGONAL STROKE -A75E ; [.1F4E.0020.0008] # LATIN CAPITAL LETTER V WITH DIAGONAL STROKE -1D8C ; [.1F4F.0020.0002] # LATIN SMALL LETTER V WITH PALATAL HOOK -028B ; [.1F50.0020.0002] # LATIN SMALL LETTER V WITH HOOK -01B2 ; [.1F50.0020.0008] # LATIN CAPITAL LETTER V WITH HOOK -1DB9 ; [.1F50.0020.0014] # MODIFIER LETTER SMALL V WITH HOOK -2C71 ; [.1F54.0020.0002] # LATIN SMALL LETTER V WITH RIGHT HOOK -2C74 ; [.1F55.0020.0002] # LATIN SMALL LETTER V WITH CURL -1EFD ; [.1F56.0020.0002] # LATIN SMALL LETTER MIDDLE-WELSH V -1EFC ; [.1F56.0020.0008] # LATIN CAPITAL LETTER MIDDLE-WELSH V -028C ; [.1F57.0020.0002] # LATIN SMALL LETTER TURNED V -0245 ; [.1F57.0020.0008] # LATIN CAPITAL LETTER TURNED V -1DBA ; [.1F57.0020.0014] # MODIFIER LETTER SMALL TURNED V -0077 ; [.1F5B.0020.0002] # LATIN SMALL LETTER W -FF57 ; [.1F5B.0020.0003] # FULLWIDTH LATIN SMALL LETTER W -1DF1 ; [.1F5B.0020.0004] # COMBINING LATIN SMALL LETTER W -24B2 ; [*0318.0020.0004][.1F5B.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER W -1D430 ; [.1F5B.0020.0005] # MATHEMATICAL BOLD SMALL W -1D464 ; [.1F5B.0020.0005] # MATHEMATICAL ITALIC SMALL W -1D498 ; [.1F5B.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL W -1D4CC ; [.1F5B.0020.0005] # MATHEMATICAL SCRIPT SMALL W -1D500 ; [.1F5B.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL W -1D534 ; [.1F5B.0020.0005] # MATHEMATICAL FRAKTUR SMALL W -1D568 ; [.1F5B.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL W -1D59C ; [.1F5B.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL W -1D5D0 ; [.1F5B.0020.0005] # MATHEMATICAL SANS-SERIF SMALL W -1D604 ; [.1F5B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL W -1D638 ; [.1F5B.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL W -1D66C ; [.1F5B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W -1D6A0 ; [.1F5B.0020.0005] # MATHEMATICAL MONOSPACE SMALL W -24E6 ; [.1F5B.0020.0006] # CIRCLED LATIN SMALL LETTER W -0057 ; [.1F5B.0020.0008] # LATIN CAPITAL LETTER W -FF37 ; [.1F5B.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER W -1F126 ; [*0318.0020.0004][.1F5B.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER W -1D416 ; [.1F5B.0020.000B] # MATHEMATICAL BOLD CAPITAL W -1D44A ; [.1F5B.0020.000B] # MATHEMATICAL ITALIC CAPITAL W -1D47E ; [.1F5B.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL W -1D4B2 ; [.1F5B.0020.000B] # MATHEMATICAL SCRIPT CAPITAL W -1D4E6 ; [.1F5B.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL W -1D51A ; [.1F5B.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL W -1D54E ; [.1F5B.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL W -1D582 ; [.1F5B.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL W -1D5B6 ; [.1F5B.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL W -1D5EA ; [.1F5B.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL W -1D61E ; [.1F5B.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL W -1D652 ; [.1F5B.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W -1D686 ; [.1F5B.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL W -24CC ; [.1F5B.0020.000C] # CIRCLED LATIN CAPITAL LETTER W -1F166 ; [.1F5B.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER W -02B7 ; [.1F5B.0020.0014] # MODIFIER LETTER SMALL W -1D42 ; [.1F5B.0020.001D] # MODIFIER LETTER CAPITAL W -1F146 ; [.1F5B.0020.001D] # SQUARED LATIN CAPITAL LETTER W -1F186 ; [.1F5B.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER W -1E83 ; [.1F5B.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER W WITH ACUTE -1E82 ; [.1F5B.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER W WITH ACUTE -1E81 ; [.1F5B.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER W WITH GRAVE -1E80 ; [.1F5B.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER W WITH GRAVE -0175 ; [.1F5B.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER W WITH CIRCUMFLEX -0174 ; [.1F5B.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER W WITH CIRCUMFLEX -1E98 ; [.1F5B.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER W WITH RING ABOVE -1E85 ; [.1F5B.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER W WITH DIAERESIS -1E84 ; [.1F5B.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER W WITH DIAERESIS -1E87 ; [.1F5B.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER W WITH DOT ABOVE -1E86 ; [.1F5B.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER W WITH DOT ABOVE -1E89 ; [.1F5B.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER W WITH DOT BELOW -1E88 ; [.1F5B.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER W WITH DOT BELOW -33DD ; [.1F5B.0020.001D][.1CC6.0020.001C] # SQUARE WB -1F14F ; [.1F5B.0020.001D][.1CE0.0020.001D] # SQUARED WC -1F18F ; [.1F5B.0020.001D][.1CE0.0020.001D] # NEGATIVE SQUARED WC -1F12E ; [.1F5B.0020.000C][.1F87.0020.000C] # CIRCLED WZ -1D21 ; [.1F5F.0020.0002] # LATIN LETTER SMALL CAPITAL W -2C73 ; [.1F60.0020.0002] # LATIN SMALL LETTER W WITH HOOK -2C72 ; [.1F60.0020.0008] # LATIN CAPITAL LETTER W WITH HOOK -028D ; [.1F61.0020.0002] # LATIN SMALL LETTER TURNED W -0078 ; [.1F65.0020.0002] # LATIN SMALL LETTER X -FF58 ; [.1F65.0020.0003] # FULLWIDTH LATIN SMALL LETTER X -036F ; [.1F65.0020.0004] # COMBINING LATIN SMALL LETTER X -2179 ; [.1F65.0020.0004] # SMALL ROMAN NUMERAL TEN -24B3 ; [*0318.0020.0004][.1F65.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER X -1D431 ; [.1F65.0020.0005] # MATHEMATICAL BOLD SMALL X -1D465 ; [.1F65.0020.0005] # MATHEMATICAL ITALIC SMALL X -1D499 ; [.1F65.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL X -1D4CD ; [.1F65.0020.0005] # MATHEMATICAL SCRIPT SMALL X -1D501 ; [.1F65.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL X -1D535 ; [.1F65.0020.0005] # MATHEMATICAL FRAKTUR SMALL X -1D569 ; [.1F65.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL X -1D59D ; [.1F65.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL X -1D5D1 ; [.1F65.0020.0005] # MATHEMATICAL SANS-SERIF SMALL X -1D605 ; [.1F65.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL X -1D639 ; [.1F65.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL X -1D66D ; [.1F65.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X -1D6A1 ; [.1F65.0020.0005] # MATHEMATICAL MONOSPACE SMALL X -24E7 ; [.1F65.0020.0006] # CIRCLED LATIN SMALL LETTER X -0058 ; [.1F65.0020.0008] # LATIN CAPITAL LETTER X -FF38 ; [.1F65.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER X -2169 ; [.1F65.0020.000A] # ROMAN NUMERAL TEN -1F127 ; [*0318.0020.0004][.1F65.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER X -1D417 ; [.1F65.0020.000B] # MATHEMATICAL BOLD CAPITAL X -1D44B ; [.1F65.0020.000B] # MATHEMATICAL ITALIC CAPITAL X -1D47F ; [.1F65.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL X -1D4B3 ; [.1F65.0020.000B] # MATHEMATICAL SCRIPT CAPITAL X -1D4E7 ; [.1F65.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL X -1D51B ; [.1F65.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL X -1D54F ; [.1F65.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL X -1D583 ; [.1F65.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL X -1D5B7 ; [.1F65.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL X -1D5EB ; [.1F65.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL X -1D61F ; [.1F65.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL X -1D653 ; [.1F65.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X -1D687 ; [.1F65.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL X -24CD ; [.1F65.0020.000C] # CIRCLED LATIN CAPITAL LETTER X -1F167 ; [.1F65.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER X -02E3 ; [.1F65.0020.0014] # MODIFIER LETTER SMALL X -2093 ; [.1F65.0020.0015] # LATIN SUBSCRIPT SMALL LETTER X -1F147 ; [.1F65.0020.001D] # SQUARED LATIN CAPITAL LETTER X -1F187 ; [.1F65.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER X -1E8D ; [.1F65.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER X WITH DIAERESIS -1E8C ; [.1F65.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER X WITH DIAERESIS -1E8B ; [.1F65.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER X WITH DOT ABOVE -1E8A ; [.1F65.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER X WITH DOT ABOVE -217A ; [.1F65.0020.0004][.1D98.0020.0004] # SMALL ROMAN NUMERAL ELEVEN -216A ; [.1F65.0020.000A][.1D98.0020.000A] # ROMAN NUMERAL ELEVEN -217B ; [.1F65.0020.0004][.1D98.0020.0004][.1D98.0020.0004] # SMALL ROMAN NUMERAL TWELVE -216B ; [.1F65.0020.000A][.1D98.0020.000A][.1D98.0020.000A] # ROMAN NUMERAL TWELVE -1D8D ; [.1F69.0020.0002] # LATIN SMALL LETTER X WITH PALATAL HOOK -AB56 ; [.1F6A.0020.0002] # LATIN SMALL LETTER X WITH LOW RIGHT RING -AB57 ; [.1F6B.0020.0002] # LATIN SMALL LETTER X WITH LONG LEFT LEG -AB58 ; [.1F6C.0020.0002] # LATIN SMALL LETTER X WITH LONG LEFT LEG AND LOW RIGHT RING -AB59 ; [.1F6D.0020.0002] # LATIN SMALL LETTER X WITH LONG LEFT LEG WITH SERIF -AB53 ; [.1F6E.0020.0002] # LATIN SMALL LETTER CHI -A7B3 ; [.1F6E.0020.0008] # LATIN CAPITAL LETTER CHI -AB54 ; [.1F6F.0020.0002] # LATIN SMALL LETTER CHI WITH LOW RIGHT RING -AB55 ; [.1F70.0020.0002] # LATIN SMALL LETTER CHI WITH LOW LEFT SERIF -0079 ; [.1F71.0020.0002] # LATIN SMALL LETTER Y -FF59 ; [.1F71.0020.0003] # FULLWIDTH LATIN SMALL LETTER Y -24B4 ; [*0318.0020.0004][.1F71.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER Y -1D432 ; [.1F71.0020.0005] # MATHEMATICAL BOLD SMALL Y -1D466 ; [.1F71.0020.0005] # MATHEMATICAL ITALIC SMALL Y -1D49A ; [.1F71.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL Y -1D4CE ; [.1F71.0020.0005] # MATHEMATICAL SCRIPT SMALL Y -1D502 ; [.1F71.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL Y -1D536 ; [.1F71.0020.0005] # MATHEMATICAL FRAKTUR SMALL Y -1D56A ; [.1F71.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL Y -1D59E ; [.1F71.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL Y -1D5D2 ; [.1F71.0020.0005] # MATHEMATICAL SANS-SERIF SMALL Y -1D606 ; [.1F71.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL Y -1D63A ; [.1F71.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL Y -1D66E ; [.1F71.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y -1D6A2 ; [.1F71.0020.0005] # MATHEMATICAL MONOSPACE SMALL Y -24E8 ; [.1F71.0020.0006] # CIRCLED LATIN SMALL LETTER Y -0059 ; [.1F71.0020.0008] # LATIN CAPITAL LETTER Y -FF39 ; [.1F71.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER Y -1F128 ; [*0318.0020.0004][.1F71.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER Y -1D418 ; [.1F71.0020.000B] # MATHEMATICAL BOLD CAPITAL Y -1D44C ; [.1F71.0020.000B] # MATHEMATICAL ITALIC CAPITAL Y -1D480 ; [.1F71.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL Y -1D4B4 ; [.1F71.0020.000B] # MATHEMATICAL SCRIPT CAPITAL Y -1D4E8 ; [.1F71.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL Y -1D51C ; [.1F71.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL Y -1D550 ; [.1F71.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL Y -1D584 ; [.1F71.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL Y -1D5B8 ; [.1F71.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL Y -1D5EC ; [.1F71.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL Y -1D620 ; [.1F71.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y -1D654 ; [.1F71.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y -1D688 ; [.1F71.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL Y -24CE ; [.1F71.0020.000C] # CIRCLED LATIN CAPITAL LETTER Y -1F168 ; [.1F71.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER Y -02B8 ; [.1F71.0020.0014] # MODIFIER LETTER SMALL Y -1F148 ; [.1F71.0020.001D] # SQUARED LATIN CAPITAL LETTER Y -1F188 ; [.1F71.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER Y -00FD ; [.1F71.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER Y WITH ACUTE -00DD ; [.1F71.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER Y WITH ACUTE -1EF3 ; [.1F71.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER Y WITH GRAVE -1EF2 ; [.1F71.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER Y WITH GRAVE -0177 ; [.1F71.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER Y WITH CIRCUMFLEX -0176 ; [.1F71.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX -1E99 ; [.1F71.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER Y WITH RING ABOVE -00FF ; [.1F71.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER Y WITH DIAERESIS -0178 ; [.1F71.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER Y WITH DIAERESIS -1EF9 ; [.1F71.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER Y WITH TILDE -1EF8 ; [.1F71.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER Y WITH TILDE -1E8F ; [.1F71.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER Y WITH DOT ABOVE -1E8E ; [.1F71.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER Y WITH DOT ABOVE -0233 ; [.1F71.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER Y WITH MACRON -0232 ; [.1F71.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER Y WITH MACRON -1EF7 ; [.1F71.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER Y WITH HOOK ABOVE -1EF6 ; [.1F71.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER Y WITH HOOK ABOVE -1EF5 ; [.1F71.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER Y WITH DOT BELOW -1EF4 ; [.1F71.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER Y WITH DOT BELOW -028F ; [.1F75.0020.0002] # LATIN LETTER SMALL CAPITAL Y -024F ; [.1F79.0020.0002] # LATIN SMALL LETTER Y WITH STROKE -024E ; [.1F79.0020.0008] # LATIN CAPITAL LETTER Y WITH STROKE -01B4 ; [.1F7D.0020.0002] # LATIN SMALL LETTER Y WITH HOOK -01B3 ; [.1F7D.0020.0008] # LATIN CAPITAL LETTER Y WITH HOOK -1EFF ; [.1F81.0020.0002] # LATIN SMALL LETTER Y WITH LOOP -1EFE ; [.1F81.0020.0008] # LATIN CAPITAL LETTER Y WITH LOOP -AB5A ; [.1F82.0020.0002] # LATIN SMALL LETTER Y WITH SHORT RIGHT LEG -021D ; [.1F83.0020.0002] # LATIN SMALL LETTER YOGH -021C ; [.1F83.0020.0008] # LATIN CAPITAL LETTER YOGH -007A ; [.1F87.0020.0002] # LATIN SMALL LETTER Z -FF5A ; [.1F87.0020.0003] # FULLWIDTH LATIN SMALL LETTER Z -1DE6 ; [.1F87.0020.0004] # COMBINING LATIN SMALL LETTER Z -24B5 ; [*0318.0020.0004][.1F87.0020.0004][*0319.0020.0004] # PARENTHESIZED LATIN SMALL LETTER Z -1D433 ; [.1F87.0020.0005] # MATHEMATICAL BOLD SMALL Z -1D467 ; [.1F87.0020.0005] # MATHEMATICAL ITALIC SMALL Z -1D49B ; [.1F87.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL Z -1D4CF ; [.1F87.0020.0005] # MATHEMATICAL SCRIPT SMALL Z -1D503 ; [.1F87.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL Z -1D537 ; [.1F87.0020.0005] # MATHEMATICAL FRAKTUR SMALL Z -1D56B ; [.1F87.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL Z -1D59F ; [.1F87.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL Z -1D5D3 ; [.1F87.0020.0005] # MATHEMATICAL SANS-SERIF SMALL Z -1D607 ; [.1F87.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL Z -1D63B ; [.1F87.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL Z -1D66F ; [.1F87.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z -1D6A3 ; [.1F87.0020.0005] # MATHEMATICAL MONOSPACE SMALL Z -24E9 ; [.1F87.0020.0006] # CIRCLED LATIN SMALL LETTER Z -005A ; [.1F87.0020.0008] # LATIN CAPITAL LETTER Z -FF3A ; [.1F87.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER Z -1F129 ; [*0318.0020.0004][.1F87.0020.000A][*0319.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER Z -2124 ; [.1F87.0020.000B] # DOUBLE-STRUCK CAPITAL Z -2128 ; [.1F87.0020.000B] # BLACK-LETTER CAPITAL Z -1D419 ; [.1F87.0020.000B] # MATHEMATICAL BOLD CAPITAL Z -1D44D ; [.1F87.0020.000B] # MATHEMATICAL ITALIC CAPITAL Z -1D481 ; [.1F87.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL Z -1D4B5 ; [.1F87.0020.000B] # MATHEMATICAL SCRIPT CAPITAL Z -1D4E9 ; [.1F87.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL Z -1D585 ; [.1F87.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL Z -1D5B9 ; [.1F87.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL Z -1D5ED ; [.1F87.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL Z -1D621 ; [.1F87.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z -1D655 ; [.1F87.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z -1D689 ; [.1F87.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL Z -24CF ; [.1F87.0020.000C] # CIRCLED LATIN CAPITAL LETTER Z -1F169 ; [.1F87.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER Z -1DBB ; [.1F87.0020.0014] # MODIFIER LETTER SMALL Z -1F149 ; [.1F87.0020.001D] # SQUARED LATIN CAPITAL LETTER Z -1F189 ; [.1F87.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER Z -017A ; [.1F87.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER Z WITH ACUTE -0179 ; [.1F87.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER Z WITH ACUTE -1E91 ; [.1F87.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER Z WITH CIRCUMFLEX -1E90 ; [.1F87.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX -017E ; [.1F87.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER Z WITH CARON -017D ; [.1F87.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER Z WITH CARON -017C ; [.1F87.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER Z WITH DOT ABOVE -017B ; [.1F87.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER Z WITH DOT ABOVE -1E93 ; [.1F87.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER Z WITH DOT BELOW -1E92 ; [.1F87.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER Z WITH DOT BELOW -1E95 ; [.1F87.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER Z WITH LINE BELOW -1E94 ; [.1F87.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER Z WITH LINE BELOW -018D ; [.1F87.0020.0004][.1F5B.0020.0004] # LATIN SMALL LETTER TURNED DELTA -1D22 ; [.1F8B.0020.0002] # LATIN LETTER SMALL CAPITAL Z -01B6 ; [.1F8C.0020.0002] # LATIN SMALL LETTER Z WITH STROKE -01B5 ; [.1F8C.0020.0008] # LATIN CAPITAL LETTER Z WITH STROKE -1D76 ; [.1F90.0020.0002] # LATIN SMALL LETTER Z WITH MIDDLE TILDE -1D8E ; [.1F91.0020.0002] # LATIN SMALL LETTER Z WITH PALATAL HOOK -0225 ; [.1F92.0020.0002] # LATIN SMALL LETTER Z WITH HOOK -0224 ; [.1F92.0020.0008] # LATIN CAPITAL LETTER Z WITH HOOK -0290 ; [.1F96.0020.0002] # LATIN SMALL LETTER Z WITH RETROFLEX HOOK -1DBC ; [.1F96.0020.0014] # MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK -0291 ; [.1F9A.0020.0002] # LATIN SMALL LETTER Z WITH CURL -1DBD ; [.1F9A.0020.0014] # MODIFIER LETTER SMALL Z WITH CURL -0240 ; [.1F9E.0020.0002] # LATIN SMALL LETTER Z WITH SWASH TAIL -2C7F ; [.1F9E.0020.0008] # LATIN CAPITAL LETTER Z WITH SWASH TAIL -2C6C ; [.1FA2.0020.0002] # LATIN SMALL LETTER Z WITH DESCENDER -2C6B ; [.1FA2.0020.0008] # LATIN CAPITAL LETTER Z WITH DESCENDER -A763 ; [.1FA3.0020.0002] # LATIN SMALL LETTER VISIGOTHIC Z -A762 ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER VISIGOTHIC Z -0292 ; [.1FA4.0020.0002] # LATIN SMALL LETTER EZH -01B7 ; [.1FA4.0020.0008] # LATIN CAPITAL LETTER EZH -1DBE ; [.1FA4.0020.0014] # MODIFIER LETTER SMALL EZH -01EF ; [.1FA4.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER EZH WITH CARON -01EE ; [.1FA4.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER EZH WITH CARON -1D23 ; [.1FA8.0020.0002] # LATIN LETTER SMALL CAPITAL EZH -01B9 ; [.1FA9.0020.0002] # LATIN SMALL LETTER EZH REVERSED -01B8 ; [.1FA9.0020.0008] # LATIN CAPITAL LETTER EZH REVERSED -1D9A ; [.1FAD.0020.0002] # LATIN SMALL LETTER EZH WITH RETROFLEX HOOK -01BA ; [.1FAE.0020.0002] # LATIN SMALL LETTER EZH WITH TAIL -0293 ; [.1FB2.0020.0002] # LATIN SMALL LETTER EZH WITH CURL -00FE ; [.1FB6.0020.0002] # LATIN SMALL LETTER THORN -00DE ; [.1FB6.0020.0008] # LATIN CAPITAL LETTER THORN -A765 ; [.1FBA.0020.0002] # LATIN SMALL LETTER THORN WITH STROKE -A764 ; [.1FBA.0020.0008] # LATIN CAPITAL LETTER THORN WITH STROKE -A767 ; [.1FBB.0020.0002] # LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER -A766 ; [.1FBB.0020.0008] # LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER -01BF ; [.1FBC.0020.0002] # LATIN LETTER WYNN -01F7 ; [.1FBC.0020.0008] # LATIN CAPITAL LETTER WYNN -A769 ; [.1FC0.0020.0002] # LATIN SMALL LETTER VEND -A768 ; [.1FC0.0020.0008] # LATIN CAPITAL LETTER VEND -AB60 ; [.1FC1.0020.0002] # LATIN SMALL LETTER SAKHA YAT -AB61 ; [.1FC2.0020.0002] # LATIN SMALL LETTER IOTIFIED E -AB63 ; [.1FC3.0020.0002] # LATIN SMALL LETTER UO -A76B ; [.1FC4.0020.0002] # LATIN SMALL LETTER ET -A76A ; [.1FC4.0020.0008] # LATIN CAPITAL LETTER ET -A76D ; [.1FC5.0020.0002] # LATIN SMALL LETTER IS -A76C ; [.1FC5.0020.0008] # LATIN CAPITAL LETTER IS -A76F ; [.1FC6.0020.0002] # LATIN SMALL LETTER CON -1DD2 ; [.1FC6.0020.0004] # COMBINING US ABOVE -A76E ; [.1FC6.0020.0008] # LATIN CAPITAL LETTER CON -A770 ; [.1FC6.0020.0014] # MODIFIER LETTER US -A778 ; [.1FC7.0020.0002] # LATIN SMALL LETTER UM -01BB ; [.1FC8.0020.0002] # LATIN LETTER TWO WITH STROKE -A72B ; [.1FCC.0020.0002] # LATIN SMALL LETTER TRESILLO -A72A ; [.1FCC.0020.0008] # LATIN CAPITAL LETTER TRESILLO -A72D ; [.1FCD.0020.0002] # LATIN SMALL LETTER CUATRILLO -A72C ; [.1FCD.0020.0008] # LATIN CAPITAL LETTER CUATRILLO -A72F ; [.1FCE.0020.0002] # LATIN SMALL LETTER CUATRILLO WITH COMMA -A72E ; [.1FCE.0020.0008] # LATIN CAPITAL LETTER CUATRILLO WITH COMMA -01A8 ; [.1FCF.0020.0002] # LATIN SMALL LETTER TONE TWO -01A7 ; [.1FCF.0020.0008] # LATIN CAPITAL LETTER TONE TWO -01BD ; [.1FD3.0020.0002] # LATIN SMALL LETTER TONE FIVE -01BC ; [.1FD3.0020.0008] # LATIN CAPITAL LETTER TONE FIVE -0185 ; [.1FD7.0020.0002] # LATIN SMALL LETTER TONE SIX -0184 ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER TONE SIX -0294 ; [.1FDB.0020.0002] # LATIN LETTER GLOTTAL STOP -0242 ; [.1FDF.0020.0002] # LATIN SMALL LETTER GLOTTAL STOP -0241 ; [.1FDF.0020.0008] # LATIN CAPITAL LETTER GLOTTAL STOP -02C0 ; [.1FE3.0020.0002] # MODIFIER LETTER GLOTTAL STOP -02BC ; [.1FE4.0020.0002] # MODIFIER LETTER APOSTROPHE -0149 ; [.1FE4.0020.0004][.1E1F.0020.0004] # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE -02EE ; [.1FE5.0020.0002] # MODIFIER LETTER DOUBLE APOSTROPHE -02BE ; [.1FE6.0020.0002] # MODIFIER LETTER RIGHT HALF RING -A723 ; [.1FE7.0020.0002] # LATIN SMALL LETTER EGYPTOLOGICAL ALEF -A722 ; [.1FE7.0020.0008] # LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF -A78C ; [.1FE8.0020.0002] # LATIN SMALL LETTER SALTILLO -A78B ; [.1FE8.0020.0008] # LATIN CAPITAL LETTER SALTILLO -A78F ; [.1FE9.0020.0002] # LATIN LETTER SINOLOGICAL DOT -0295 ; [.1FEA.0020.0002] # LATIN LETTER PHARYNGEAL VOICED FRICATIVE -02E4 ; [.1FEA.0020.0014] # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP -02BF ; [.1FEE.0020.0002] # MODIFIER LETTER LEFT HALF RING -02C1 ; [.1FEF.0020.0002] # MODIFIER LETTER REVERSED GLOTTAL STOP -1D24 ; [.1FF0.0020.0002] # LATIN LETTER VOICED LARYNGEAL SPIRANT -1D25 ; [.1FF1.0020.0002] # LATIN LETTER AIN -1D5C ; [.1FF1.0020.0014] # MODIFIER LETTER SMALL AIN -A725 ; [.1FF2.0020.0002] # LATIN SMALL LETTER EGYPTOLOGICAL AIN -A724 ; [.1FF2.0020.0008] # LATIN CAPITAL LETTER EGYPTOLOGICAL AIN -02A1 ; [.1FF3.0020.0002] # LATIN LETTER GLOTTAL STOP WITH STROKE -02A2 ; [.1FF7.0020.0002] # LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE -0296 ; [.1FFB.0020.0002] # LATIN LETTER INVERTED GLOTTAL STOP -01C0 ; [.1FFF.0020.0002] # LATIN LETTER DENTAL CLICK -01C1 ; [.2003.0020.0002] # LATIN LETTER LATERAL CLICK -01C2 ; [.2007.0020.0002] # LATIN LETTER ALVEOLAR CLICK -01C3 ; [.200B.0020.0002] # LATIN LETTER RETROFLEX CLICK -0297 ; [.200F.0020.0002] # LATIN LETTER STRETCHED C -0298 ; [.2013.0020.0002] # LATIN LETTER BILABIAL CLICK -02AC ; [.2017.0020.0002] # LATIN LETTER BILABIAL PERCUSSIVE -02AD ; [.201B.0020.0002] # LATIN LETTER BIDENTAL PERCUSSIVE -03B1 ; [.201F.0020.0002] # GREEK SMALL LETTER ALPHA -1D6C2 ; [.201F.0020.0005] # MATHEMATICAL BOLD SMALL ALPHA -1D6FC ; [.201F.0020.0005] # MATHEMATICAL ITALIC SMALL ALPHA -1D736 ; [.201F.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL ALPHA -1D770 ; [.201F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA -1D7AA ; [.201F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA -0391 ; [.201F.0020.0008] # GREEK CAPITAL LETTER ALPHA -1D6A8 ; [.201F.0020.000B] # MATHEMATICAL BOLD CAPITAL ALPHA -1D6E2 ; [.201F.0020.000B] # MATHEMATICAL ITALIC CAPITAL ALPHA -1D71C ; [.201F.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL ALPHA -1D756 ; [.201F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA -1D790 ; [.201F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA -1F00 ; [.201F.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER ALPHA WITH PSILI -1F08 ; [.201F.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI -1F04 ; [.201F.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA -1F0C ; [.201F.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA -1F84 ; [.201F.0020.0002][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1F8C ; [.201F.0020.0008][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F02 ; [.201F.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA -1F0A ; [.201F.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA -1F82 ; [.201F.0020.0002][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1F8A ; [.201F.0020.0008][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F06 ; [.201F.0020.0002][.0000.0022.0002][.0000.002A.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI -1F0E ; [.201F.0020.0008][.0000.0022.0002][.0000.002A.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI -1F86 ; [.201F.0020.0002][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1F8E ; [.201F.0020.0008][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F80 ; [.201F.0020.0002][.0000.0022.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI -1F88 ; [.201F.0020.0008][.0000.0022.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI -1F01 ; [.201F.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER ALPHA WITH DASIA -1F09 ; [.201F.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA -1F05 ; [.201F.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA -1F0D ; [.201F.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA -1F85 ; [.201F.0020.0002][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1F8D ; [.201F.0020.0008][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F03 ; [.201F.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA -1F0B ; [.201F.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA -1F83 ; [.201F.0020.0002][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1F8B ; [.201F.0020.0008][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F07 ; [.201F.0020.0002][.0000.0023.0002][.0000.002A.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI -1F0F ; [.201F.0020.0008][.0000.0023.0002][.0000.002A.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI -1F87 ; [.201F.0020.0002][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1F8F ; [.201F.0020.0008][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1F81 ; [.201F.0020.0002][.0000.0023.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI -1F89 ; [.201F.0020.0008][.0000.0023.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI -03AC ; [.201F.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER ALPHA WITH TONOS -1F71 ; [.201F.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER ALPHA WITH OXIA -0386 ; [.201F.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER ALPHA WITH TONOS -1FBB ; [.201F.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER ALPHA WITH OXIA -1FB4 ; [.201F.0020.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI -1F70 ; [.201F.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER ALPHA WITH VARIA -1FBA ; [.201F.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER ALPHA WITH VARIA -1FB2 ; [.201F.0020.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI -1FB0 ; [.201F.0020.0002][.0000.0026.0002] # GREEK SMALL LETTER ALPHA WITH VRACHY -1FB8 ; [.201F.0020.0008][.0000.0026.0002] # GREEK CAPITAL LETTER ALPHA WITH VRACHY -1FB6 ; [.201F.0020.0002][.0000.002A.0002] # GREEK SMALL LETTER ALPHA WITH PERISPOMENI -1FB7 ; [.201F.0020.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI -1FB1 ; [.201F.0020.0002][.0000.0032.0002] # GREEK SMALL LETTER ALPHA WITH MACRON -1FB9 ; [.201F.0020.0008][.0000.0032.0002] # GREEK CAPITAL LETTER ALPHA WITH MACRON -1FB3 ; [.201F.0020.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI -1FBC ; [.201F.0020.0008][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI -03B2 ; [.2020.0020.0002] # GREEK SMALL LETTER BETA -03D0 ; [.2020.0020.0004] # GREEK BETA SYMBOL -1D6C3 ; [.2020.0020.0005] # MATHEMATICAL BOLD SMALL BETA -1D6FD ; [.2020.0020.0005] # MATHEMATICAL ITALIC SMALL BETA -1D737 ; [.2020.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL BETA -1D771 ; [.2020.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL BETA -1D7AB ; [.2020.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA -0392 ; [.2020.0020.0008] # GREEK CAPITAL LETTER BETA -1D6A9 ; [.2020.0020.000B] # MATHEMATICAL BOLD CAPITAL BETA -1D6E3 ; [.2020.0020.000B] # MATHEMATICAL ITALIC CAPITAL BETA -1D71D ; [.2020.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL BETA -1D757 ; [.2020.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA -1D791 ; [.2020.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA -1D5D ; [.2020.0020.0014] # MODIFIER LETTER SMALL BETA -1D66 ; [.2020.0020.0015] # GREEK SUBSCRIPT SMALL LETTER BETA -03B3 ; [.2021.0020.0002] # GREEK SMALL LETTER GAMMA -213D ; [.2021.0020.0005] # DOUBLE-STRUCK SMALL GAMMA -1D6C4 ; [.2021.0020.0005] # MATHEMATICAL BOLD SMALL GAMMA -1D6FE ; [.2021.0020.0005] # MATHEMATICAL ITALIC SMALL GAMMA -1D738 ; [.2021.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL GAMMA -1D772 ; [.2021.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA -1D7AC ; [.2021.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA -0393 ; [.2021.0020.0008] # GREEK CAPITAL LETTER GAMMA -213E ; [.2021.0020.000B] # DOUBLE-STRUCK CAPITAL GAMMA -1D6AA ; [.2021.0020.000B] # MATHEMATICAL BOLD CAPITAL GAMMA -1D6E4 ; [.2021.0020.000B] # MATHEMATICAL ITALIC CAPITAL GAMMA -1D71E ; [.2021.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL GAMMA -1D758 ; [.2021.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA -1D792 ; [.2021.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA -1D5E ; [.2021.0020.0014] # MODIFIER LETTER SMALL GREEK GAMMA -1D67 ; [.2021.0020.0015] # GREEK SUBSCRIPT SMALL LETTER GAMMA -1D26 ; [.2022.0020.0002] # GREEK LETTER SMALL CAPITAL GAMMA -03B4 ; [.2023.0020.0002] # GREEK SMALL LETTER DELTA -1D6C5 ; [.2023.0020.0005] # MATHEMATICAL BOLD SMALL DELTA -1D6FF ; [.2023.0020.0005] # MATHEMATICAL ITALIC SMALL DELTA -1D739 ; [.2023.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL DELTA -1D773 ; [.2023.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL DELTA -1D7AD ; [.2023.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA -0394 ; [.2023.0020.0008] # GREEK CAPITAL LETTER DELTA -1D6AB ; [.2023.0020.000B] # MATHEMATICAL BOLD CAPITAL DELTA -1D6E5 ; [.2023.0020.000B] # MATHEMATICAL ITALIC CAPITAL DELTA -1D71F ; [.2023.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL DELTA -1D759 ; [.2023.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA -1D793 ; [.2023.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA -1D5F ; [.2023.0020.0014] # MODIFIER LETTER SMALL DELTA -03B5 ; [.2024.0020.0002] # GREEK SMALL LETTER EPSILON -03F5 ; [.2024.0020.0004] # GREEK LUNATE EPSILON SYMBOL -1D6C6 ; [.2024.0020.0005] # MATHEMATICAL BOLD SMALL EPSILON -1D6DC ; [.2024.0020.0005] # MATHEMATICAL BOLD EPSILON SYMBOL -1D700 ; [.2024.0020.0005] # MATHEMATICAL ITALIC SMALL EPSILON -1D716 ; [.2024.0020.0005] # MATHEMATICAL ITALIC EPSILON SYMBOL -1D73A ; [.2024.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL EPSILON -1D750 ; [.2024.0020.0005] # MATHEMATICAL BOLD ITALIC EPSILON SYMBOL -1D774 ; [.2024.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON -1D78A ; [.2024.0020.0005] # MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL -1D7AE ; [.2024.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON -1D7C4 ; [.2024.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL -0395 ; [.2024.0020.0008] # GREEK CAPITAL LETTER EPSILON -1D6AC ; [.2024.0020.000B] # MATHEMATICAL BOLD CAPITAL EPSILON -1D6E6 ; [.2024.0020.000B] # MATHEMATICAL ITALIC CAPITAL EPSILON -1D720 ; [.2024.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL EPSILON -1D75A ; [.2024.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON -1D794 ; [.2024.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON -1F10 ; [.2024.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER EPSILON WITH PSILI -1F18 ; [.2024.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER EPSILON WITH PSILI -1F14 ; [.2024.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA -1F1C ; [.2024.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA -1F12 ; [.2024.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA -1F1A ; [.2024.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA -1F11 ; [.2024.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER EPSILON WITH DASIA -1F19 ; [.2024.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER EPSILON WITH DASIA -1F15 ; [.2024.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA -1F1D ; [.2024.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA -1F13 ; [.2024.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA -1F1B ; [.2024.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA -03AD ; [.2024.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER EPSILON WITH TONOS -1F73 ; [.2024.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER EPSILON WITH OXIA -0388 ; [.2024.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER EPSILON WITH TONOS -1FC9 ; [.2024.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER EPSILON WITH OXIA -1F72 ; [.2024.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER EPSILON WITH VARIA -1FC8 ; [.2024.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER EPSILON WITH VARIA -03DD ; [.2025.0020.0002] # GREEK SMALL LETTER DIGAMMA -1D7CB ; [.2025.0020.0005] # MATHEMATICAL BOLD SMALL DIGAMMA -03DC ; [.2025.0020.0008] # GREEK LETTER DIGAMMA -1D7CA ; [.2025.0020.000B] # MATHEMATICAL BOLD CAPITAL DIGAMMA -0377 ; [.2026.0020.0002] # GREEK SMALL LETTER PAMPHYLIAN DIGAMMA -0376 ; [.2026.0020.0008] # GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA -03DB ; [.2027.0020.0002] # GREEK SMALL LETTER STIGMA -03DA ; [.2027.0020.0008] # GREEK LETTER STIGMA -03B6 ; [.2028.0020.0002] # GREEK SMALL LETTER ZETA -1D6C7 ; [.2028.0020.0005] # MATHEMATICAL BOLD SMALL ZETA -1D701 ; [.2028.0020.0005] # MATHEMATICAL ITALIC SMALL ZETA -1D73B ; [.2028.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL ZETA -1D775 ; [.2028.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL ZETA -1D7AF ; [.2028.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA -0396 ; [.2028.0020.0008] # GREEK CAPITAL LETTER ZETA -1D6AD ; [.2028.0020.000B] # MATHEMATICAL BOLD CAPITAL ZETA -1D6E7 ; [.2028.0020.000B] # MATHEMATICAL ITALIC CAPITAL ZETA -1D721 ; [.2028.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL ZETA -1D75B ; [.2028.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA -1D795 ; [.2028.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA -0371 ; [.2029.0020.0002] # GREEK SMALL LETTER HETA -0370 ; [.2029.0020.0008] # GREEK CAPITAL LETTER HETA -03B7 ; [.202A.0020.0002] # GREEK SMALL LETTER ETA -1D6C8 ; [.202A.0020.0005] # MATHEMATICAL BOLD SMALL ETA -1D702 ; [.202A.0020.0005] # MATHEMATICAL ITALIC SMALL ETA -1D73C ; [.202A.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL ETA -1D776 ; [.202A.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL ETA -1D7B0 ; [.202A.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA -0397 ; [.202A.0020.0008] # GREEK CAPITAL LETTER ETA -1D6AE ; [.202A.0020.000B] # MATHEMATICAL BOLD CAPITAL ETA -1D6E8 ; [.202A.0020.000B] # MATHEMATICAL ITALIC CAPITAL ETA -1D722 ; [.202A.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL ETA -1D75C ; [.202A.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA -1D796 ; [.202A.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA -1F20 ; [.202A.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER ETA WITH PSILI -1F28 ; [.202A.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER ETA WITH PSILI -1F24 ; [.202A.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER ETA WITH PSILI AND OXIA -1F2C ; [.202A.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA -1F94 ; [.202A.0020.0002][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1F9C ; [.202A.0020.0008][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F22 ; [.202A.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER ETA WITH PSILI AND VARIA -1F2A ; [.202A.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA -1F92 ; [.202A.0020.0002][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1F9A ; [.202A.0020.0008][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F26 ; [.202A.0020.0002][.0000.0022.0002][.0000.002A.0002] # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI -1F2E ; [.202A.0020.0008][.0000.0022.0002][.0000.002A.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI -1F96 ; [.202A.0020.0002][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1F9E ; [.202A.0020.0008][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F90 ; [.202A.0020.0002][.0000.0022.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI -1F98 ; [.202A.0020.0008][.0000.0022.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI -1F21 ; [.202A.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER ETA WITH DASIA -1F29 ; [.202A.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER ETA WITH DASIA -1F25 ; [.202A.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER ETA WITH DASIA AND OXIA -1F2D ; [.202A.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA -1F95 ; [.202A.0020.0002][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1F9D ; [.202A.0020.0008][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F23 ; [.202A.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER ETA WITH DASIA AND VARIA -1F2B ; [.202A.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA -1F93 ; [.202A.0020.0002][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1F9B ; [.202A.0020.0008][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F27 ; [.202A.0020.0002][.0000.0023.0002][.0000.002A.0002] # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI -1F2F ; [.202A.0020.0008][.0000.0023.0002][.0000.002A.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI -1F97 ; [.202A.0020.0002][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1F9F ; [.202A.0020.0008][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1F91 ; [.202A.0020.0002][.0000.0023.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI -1F99 ; [.202A.0020.0008][.0000.0023.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI -03AE ; [.202A.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER ETA WITH TONOS -1F75 ; [.202A.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER ETA WITH OXIA -0389 ; [.202A.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER ETA WITH TONOS -1FCB ; [.202A.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER ETA WITH OXIA -1FC4 ; [.202A.0020.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI -1F74 ; [.202A.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER ETA WITH VARIA -1FCA ; [.202A.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER ETA WITH VARIA -1FC2 ; [.202A.0020.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI -1FC6 ; [.202A.0020.0002][.0000.002A.0002] # GREEK SMALL LETTER ETA WITH PERISPOMENI -1FC7 ; [.202A.0020.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI -1FC3 ; [.202A.0020.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI -1FCC ; [.202A.0020.0008][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI -03B8 ; [.202B.0020.0002] # GREEK SMALL LETTER THETA -03D1 ; [.202B.0020.0004] # GREEK THETA SYMBOL -1D6C9 ; [.202B.0020.0005] # MATHEMATICAL BOLD SMALL THETA -1D6DD ; [.202B.0020.0005] # MATHEMATICAL BOLD THETA SYMBOL -1D703 ; [.202B.0020.0005] # MATHEMATICAL ITALIC SMALL THETA -1D717 ; [.202B.0020.0005] # MATHEMATICAL ITALIC THETA SYMBOL -1D73D ; [.202B.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL THETA -1D751 ; [.202B.0020.0005] # MATHEMATICAL BOLD ITALIC THETA SYMBOL -1D777 ; [.202B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL THETA -1D78B ; [.202B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL -1D7B1 ; [.202B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA -1D7C5 ; [.202B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL -0398 ; [.202B.0020.0008] # GREEK CAPITAL LETTER THETA -03F4 ; [.202B.0020.000A] # GREEK CAPITAL THETA SYMBOL -1D6AF ; [.202B.0020.000B] # MATHEMATICAL BOLD CAPITAL THETA -1D6B9 ; [.202B.0020.000B] # MATHEMATICAL BOLD CAPITAL THETA SYMBOL -1D6E9 ; [.202B.0020.000B] # MATHEMATICAL ITALIC CAPITAL THETA -1D6F3 ; [.202B.0020.000B] # MATHEMATICAL ITALIC CAPITAL THETA SYMBOL -1D723 ; [.202B.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL THETA -1D72D ; [.202B.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL -1D75D ; [.202B.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA -1D767 ; [.202B.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL -1D797 ; [.202B.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA -1D7A1 ; [.202B.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL -1DBF ; [.202B.0020.0014] # MODIFIER LETTER SMALL THETA -03B9 ; [.202C.0020.0002] # GREEK SMALL LETTER IOTA -1FBE ; [.202C.0020.0002] # GREEK PROSGEGRAMMENI -037A ; [.202C.0020.0004] # GREEK YPOGEGRAMMENI -1D6CA ; [.202C.0020.0005] # MATHEMATICAL BOLD SMALL IOTA -1D704 ; [.202C.0020.0005] # MATHEMATICAL ITALIC SMALL IOTA -1D73E ; [.202C.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL IOTA -1D778 ; [.202C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL IOTA -1D7B2 ; [.202C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA -0399 ; [.202C.0020.0008] # GREEK CAPITAL LETTER IOTA -1D6B0 ; [.202C.0020.000B] # MATHEMATICAL BOLD CAPITAL IOTA -1D6EA ; [.202C.0020.000B] # MATHEMATICAL ITALIC CAPITAL IOTA -1D724 ; [.202C.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL IOTA -1D75E ; [.202C.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA -1D798 ; [.202C.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA -1F30 ; [.202C.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER IOTA WITH PSILI -1F38 ; [.202C.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER IOTA WITH PSILI -1F34 ; [.202C.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA -1F3C ; [.202C.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA -1F32 ; [.202C.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA -1F3A ; [.202C.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA -1F36 ; [.202C.0020.0002][.0000.0022.0002][.0000.002A.0002] # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI -1F3E ; [.202C.0020.0008][.0000.0022.0002][.0000.002A.0002] # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI -1F31 ; [.202C.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER IOTA WITH DASIA -1F39 ; [.202C.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER IOTA WITH DASIA -1F35 ; [.202C.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA -1F3D ; [.202C.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA -1F33 ; [.202C.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA -1F3B ; [.202C.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA -1F37 ; [.202C.0020.0002][.0000.0023.0002][.0000.002A.0002] # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI -1F3F ; [.202C.0020.0008][.0000.0023.0002][.0000.002A.0002] # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI -03AF ; [.202C.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH TONOS -1F77 ; [.202C.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH OXIA -038A ; [.202C.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER IOTA WITH TONOS -1FDB ; [.202C.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER IOTA WITH OXIA -1F76 ; [.202C.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER IOTA WITH VARIA -1FDA ; [.202C.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER IOTA WITH VARIA -1FD0 ; [.202C.0020.0002][.0000.0026.0002] # GREEK SMALL LETTER IOTA WITH VRACHY -1FD8 ; [.202C.0020.0008][.0000.0026.0002] # GREEK CAPITAL LETTER IOTA WITH VRACHY -1FD6 ; [.202C.0020.0002][.0000.002A.0002] # GREEK SMALL LETTER IOTA WITH PERISPOMENI -03CA ; [.202C.0020.0002][.0000.002B.0002] # GREEK SMALL LETTER IOTA WITH DIALYTIKA -03AA ; [.202C.0020.0008][.0000.002B.0002] # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA -0390 ; [.202C.0020.0002][.0000.002B.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS -1FD3 ; [.202C.0020.0002][.0000.002B.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA -1FD2 ; [.202C.0020.0002][.0000.002B.0002][.0000.0025.0002] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA -1FD7 ; [.202C.0020.0002][.0000.002B.0002][.0000.002A.0002] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI -1FD1 ; [.202C.0020.0002][.0000.0032.0002] # GREEK SMALL LETTER IOTA WITH MACRON -1FD9 ; [.202C.0020.0008][.0000.0032.0002] # GREEK CAPITAL LETTER IOTA WITH MACRON -03F3 ; [.202D.0020.0002] # GREEK LETTER YOT -037F ; [.202D.0020.0008] # GREEK CAPITAL LETTER YOT -03BA ; [.202E.0020.0002] # GREEK SMALL LETTER KAPPA -03F0 ; [.202E.0020.0004] # GREEK KAPPA SYMBOL -1D6CB ; [.202E.0020.0005] # MATHEMATICAL BOLD SMALL KAPPA -1D6DE ; [.202E.0020.0005] # MATHEMATICAL BOLD KAPPA SYMBOL -1D705 ; [.202E.0020.0005] # MATHEMATICAL ITALIC SMALL KAPPA -1D718 ; [.202E.0020.0005] # MATHEMATICAL ITALIC KAPPA SYMBOL -1D73F ; [.202E.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL KAPPA -1D752 ; [.202E.0020.0005] # MATHEMATICAL BOLD ITALIC KAPPA SYMBOL -1D779 ; [.202E.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA -1D78C ; [.202E.0020.0005] # MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL -1D7B3 ; [.202E.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA -1D7C6 ; [.202E.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL -039A ; [.202E.0020.0008] # GREEK CAPITAL LETTER KAPPA -1D6B1 ; [.202E.0020.000B] # MATHEMATICAL BOLD CAPITAL KAPPA -1D6EB ; [.202E.0020.000B] # MATHEMATICAL ITALIC CAPITAL KAPPA -1D725 ; [.202E.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL KAPPA -1D75F ; [.202E.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA -1D799 ; [.202E.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA -03D7 ; [.202E.0020.0004][.201F.0020.0004][.202C.0020.0004] # GREEK KAI SYMBOL -03CF ; [.202E.0020.000A][.201F.0020.0004][.202C.0020.0004] # GREEK CAPITAL KAI SYMBOL -03BB ; [.202F.0020.0002] # GREEK SMALL LETTER LAMDA -1D6CC ; [.202F.0020.0005] # MATHEMATICAL BOLD SMALL LAMDA -1D706 ; [.202F.0020.0005] # MATHEMATICAL ITALIC SMALL LAMDA -1D740 ; [.202F.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL LAMDA -1D77A ; [.202F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA -1D7B4 ; [.202F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA -039B ; [.202F.0020.0008] # GREEK CAPITAL LETTER LAMDA -1D6B2 ; [.202F.0020.000B] # MATHEMATICAL BOLD CAPITAL LAMDA -1D6EC ; [.202F.0020.000B] # MATHEMATICAL ITALIC CAPITAL LAMDA -1D726 ; [.202F.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL LAMDA -1D760 ; [.202F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA -1D79A ; [.202F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA -1D27 ; [.2030.0020.0002] # GREEK LETTER SMALL CAPITAL LAMDA -03BC ; [.2031.0020.0002] # GREEK SMALL LETTER MU -00B5 ; [.2031.0020.0004] # MICRO SIGN -1D6CD ; [.2031.0020.0005] # MATHEMATICAL BOLD SMALL MU -1D707 ; [.2031.0020.0005] # MATHEMATICAL ITALIC SMALL MU -1D741 ; [.2031.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL MU -1D77B ; [.2031.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL MU -1D7B5 ; [.2031.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU -039C ; [.2031.0020.0008] # GREEK CAPITAL LETTER MU -1D6B3 ; [.2031.0020.000B] # MATHEMATICAL BOLD CAPITAL MU -1D6ED ; [.2031.0020.000B] # MATHEMATICAL ITALIC CAPITAL MU -1D727 ; [.2031.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL MU -1D761 ; [.2031.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL MU -1D79B ; [.2031.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU -3382 ; [.2031.0020.001C][.1CAD.0020.001D] # SQUARE MU A -338C ; [.2031.0020.001C][.1D4B.0020.001D] # SQUARE MU F -338D ; [.2031.0020.001C][.1D5A.0020.001C] # SQUARE MU G -3395 ; [.2031.0020.001C][.1DDD.0020.001C] # SQUARE MU L -339B ; [.2031.0020.001C][.1E10.0020.001C] # SQUARE MU M -33B2 ; [.2031.0020.001C][.1ED7.0020.001C] # SQUARE MU S -33B6 ; [.2031.0020.001C][.1F49.0020.001D] # SQUARE MU V -33BC ; [.2031.0020.001C][.1F5B.0020.001D] # SQUARE MU W -03BD ; [.2032.0020.0002] # GREEK SMALL LETTER NU -1D6CE ; [.2032.0020.0005] # MATHEMATICAL BOLD SMALL NU -1D708 ; [.2032.0020.0005] # MATHEMATICAL ITALIC SMALL NU -1D742 ; [.2032.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL NU -1D77C ; [.2032.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL NU -1D7B6 ; [.2032.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU -039D ; [.2032.0020.0008] # GREEK CAPITAL LETTER NU -1D6B4 ; [.2032.0020.000B] # MATHEMATICAL BOLD CAPITAL NU -1D6EE ; [.2032.0020.000B] # MATHEMATICAL ITALIC CAPITAL NU -1D728 ; [.2032.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL NU -1D762 ; [.2032.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL NU -1D79C ; [.2032.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU -03BE ; [.2033.0020.0002] # GREEK SMALL LETTER XI -1D6CF ; [.2033.0020.0005] # MATHEMATICAL BOLD SMALL XI -1D709 ; [.2033.0020.0005] # MATHEMATICAL ITALIC SMALL XI -1D743 ; [.2033.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL XI -1D77D ; [.2033.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL XI -1D7B7 ; [.2033.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI -039E ; [.2033.0020.0008] # GREEK CAPITAL LETTER XI -1D6B5 ; [.2033.0020.000B] # MATHEMATICAL BOLD CAPITAL XI -1D6EF ; [.2033.0020.000B] # MATHEMATICAL ITALIC CAPITAL XI -1D729 ; [.2033.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL XI -1D763 ; [.2033.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL XI -1D79D ; [.2033.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI -03BF ; [.2034.0020.0002] # GREEK SMALL LETTER OMICRON -1D6D0 ; [.2034.0020.0005] # MATHEMATICAL BOLD SMALL OMICRON -1D70A ; [.2034.0020.0005] # MATHEMATICAL ITALIC SMALL OMICRON -1D744 ; [.2034.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL OMICRON -1D77E ; [.2034.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON -1D7B8 ; [.2034.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON -039F ; [.2034.0020.0008] # GREEK CAPITAL LETTER OMICRON -1D6B6 ; [.2034.0020.000B] # MATHEMATICAL BOLD CAPITAL OMICRON -1D6F0 ; [.2034.0020.000B] # MATHEMATICAL ITALIC CAPITAL OMICRON -1D72A ; [.2034.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL OMICRON -1D764 ; [.2034.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON -1D79E ; [.2034.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON -1F40 ; [.2034.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER OMICRON WITH PSILI -1F48 ; [.2034.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER OMICRON WITH PSILI -1F44 ; [.2034.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA -1F4C ; [.2034.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA -1F42 ; [.2034.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA -1F4A ; [.2034.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA -1F41 ; [.2034.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER OMICRON WITH DASIA -1F49 ; [.2034.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER OMICRON WITH DASIA -1F45 ; [.2034.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA -1F4D ; [.2034.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA -1F43 ; [.2034.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA -1F4B ; [.2034.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA -03CC ; [.2034.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER OMICRON WITH TONOS -1F79 ; [.2034.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER OMICRON WITH OXIA -038C ; [.2034.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER OMICRON WITH TONOS -1FF9 ; [.2034.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER OMICRON WITH OXIA -1F78 ; [.2034.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER OMICRON WITH VARIA -1FF8 ; [.2034.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER OMICRON WITH VARIA -03C0 ; [.2035.0020.0002] # GREEK SMALL LETTER PI -03D6 ; [.2035.0020.0004] # GREEK PI SYMBOL -213C ; [.2035.0020.0005] # DOUBLE-STRUCK SMALL PI -1D6D1 ; [.2035.0020.0005] # MATHEMATICAL BOLD SMALL PI -1D6E1 ; [.2035.0020.0005] # MATHEMATICAL BOLD PI SYMBOL -1D70B ; [.2035.0020.0005] # MATHEMATICAL ITALIC SMALL PI -1D71B ; [.2035.0020.0005] # MATHEMATICAL ITALIC PI SYMBOL -1D745 ; [.2035.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL PI -1D755 ; [.2035.0020.0005] # MATHEMATICAL BOLD ITALIC PI SYMBOL -1D77F ; [.2035.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL PI -1D78F ; [.2035.0020.0005] # MATHEMATICAL SANS-SERIF BOLD PI SYMBOL -1D7B9 ; [.2035.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI -1D7C9 ; [.2035.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL -03A0 ; [.2035.0020.0008] # GREEK CAPITAL LETTER PI -213F ; [.2035.0020.000B] # DOUBLE-STRUCK CAPITAL PI -1D6B7 ; [.2035.0020.000B] # MATHEMATICAL BOLD CAPITAL PI -1D6F1 ; [.2035.0020.000B] # MATHEMATICAL ITALIC CAPITAL PI -1D72B ; [.2035.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL PI -1D765 ; [.2035.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL PI -1D79F ; [.2035.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI -1D28 ; [.2036.0020.0002] # GREEK LETTER SMALL CAPITAL PI -03FB ; [.2037.0020.0002] # GREEK SMALL LETTER SAN -03FA ; [.2037.0020.0008] # GREEK CAPITAL LETTER SAN -03DF ; [.2038.0020.0002] # GREEK SMALL LETTER KOPPA -03DE ; [.2038.0020.0008] # GREEK LETTER KOPPA -03D9 ; [.2039.0020.0002] # GREEK SMALL LETTER ARCHAIC KOPPA -03D8 ; [.2039.0020.0008] # GREEK LETTER ARCHAIC KOPPA -03C1 ; [.203A.0020.0002] # GREEK SMALL LETTER RHO -03F1 ; [.203A.0020.0004] # GREEK RHO SYMBOL -1D6D2 ; [.203A.0020.0005] # MATHEMATICAL BOLD SMALL RHO -1D6E0 ; [.203A.0020.0005] # MATHEMATICAL BOLD RHO SYMBOL -1D70C ; [.203A.0020.0005] # MATHEMATICAL ITALIC SMALL RHO -1D71A ; [.203A.0020.0005] # MATHEMATICAL ITALIC RHO SYMBOL -1D746 ; [.203A.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL RHO -1D754 ; [.203A.0020.0005] # MATHEMATICAL BOLD ITALIC RHO SYMBOL -1D780 ; [.203A.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL RHO -1D78E ; [.203A.0020.0005] # MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL -1D7BA ; [.203A.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO -1D7C8 ; [.203A.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL -03A1 ; [.203A.0020.0008] # GREEK CAPITAL LETTER RHO -1D6B8 ; [.203A.0020.000B] # MATHEMATICAL BOLD CAPITAL RHO -1D6F2 ; [.203A.0020.000B] # MATHEMATICAL ITALIC CAPITAL RHO -1D72C ; [.203A.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL RHO -1D766 ; [.203A.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO -1D7A0 ; [.203A.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO -1D68 ; [.203A.0020.0015] # GREEK SUBSCRIPT SMALL LETTER RHO -1FE4 ; [.203A.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER RHO WITH PSILI -1FE5 ; [.203A.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER RHO WITH DASIA -1FEC ; [.203A.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER RHO WITH DASIA -1D29 ; [.203B.0020.0002] # GREEK LETTER SMALL CAPITAL RHO -03FC ; [.203C.0020.0002] # GREEK RHO WITH STROKE SYMBOL -03C3 ; [.203D.0020.0002] # GREEK SMALL LETTER SIGMA -03F2 ; [.203D.0020.0004] # GREEK LUNATE SIGMA SYMBOL -1D6D3 ; [.203D.0020.0005] # MATHEMATICAL BOLD SMALL FINAL SIGMA -1D6D4 ; [.203D.0020.0005] # MATHEMATICAL BOLD SMALL SIGMA -1D70D ; [.203D.0020.0005] # MATHEMATICAL ITALIC SMALL FINAL SIGMA -1D70E ; [.203D.0020.0005] # MATHEMATICAL ITALIC SMALL SIGMA -1D747 ; [.203D.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA -1D748 ; [.203D.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL SIGMA -1D781 ; [.203D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA -1D782 ; [.203D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA -1D7BB ; [.203D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA -1D7BC ; [.203D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA -03A3 ; [.203D.0020.0008] # GREEK CAPITAL LETTER SIGMA -03F9 ; [.203D.0020.000A] # GREEK CAPITAL LUNATE SIGMA SYMBOL -1D6BA ; [.203D.0020.000B] # MATHEMATICAL BOLD CAPITAL SIGMA -1D6F4 ; [.203D.0020.000B] # MATHEMATICAL ITALIC CAPITAL SIGMA -1D72E ; [.203D.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL SIGMA -1D768 ; [.203D.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA -1D7A2 ; [.203D.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA -03C2 ; [.203D.0020.0019] # GREEK SMALL LETTER FINAL SIGMA -037C ; [.203E.0020.0002] # GREEK SMALL DOTTED LUNATE SIGMA SYMBOL -03FE ; [.203E.0020.0008] # GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL -037B ; [.203F.0020.0002] # GREEK SMALL REVERSED LUNATE SIGMA SYMBOL -03FD ; [.203F.0020.0008] # GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL -037D ; [.2040.0020.0002] # GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL -03FF ; [.2040.0020.0008] # GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL -03C4 ; [.2041.0020.0002] # GREEK SMALL LETTER TAU -1D6D5 ; [.2041.0020.0005] # MATHEMATICAL BOLD SMALL TAU -1D70F ; [.2041.0020.0005] # MATHEMATICAL ITALIC SMALL TAU -1D749 ; [.2041.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL TAU -1D783 ; [.2041.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL TAU -1D7BD ; [.2041.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU -03A4 ; [.2041.0020.0008] # GREEK CAPITAL LETTER TAU -1D6BB ; [.2041.0020.000B] # MATHEMATICAL BOLD CAPITAL TAU -1D6F5 ; [.2041.0020.000B] # MATHEMATICAL ITALIC CAPITAL TAU -1D72F ; [.2041.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL TAU -1D769 ; [.2041.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU -1D7A3 ; [.2041.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU -03C5 ; [.2042.0020.0002] # GREEK SMALL LETTER UPSILON -1D6D6 ; [.2042.0020.0005] # MATHEMATICAL BOLD SMALL UPSILON -1D710 ; [.2042.0020.0005] # MATHEMATICAL ITALIC SMALL UPSILON -1D74A ; [.2042.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL UPSILON -1D784 ; [.2042.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON -1D7BE ; [.2042.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON -03A5 ; [.2042.0020.0008] # GREEK CAPITAL LETTER UPSILON -03D2 ; [.2042.0020.000A] # GREEK UPSILON WITH HOOK SYMBOL -1D6BC ; [.2042.0020.000B] # MATHEMATICAL BOLD CAPITAL UPSILON -1D6F6 ; [.2042.0020.000B] # MATHEMATICAL ITALIC CAPITAL UPSILON -1D730 ; [.2042.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL UPSILON -1D76A ; [.2042.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON -1D7A4 ; [.2042.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON -1F50 ; [.2042.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER UPSILON WITH PSILI -1F54 ; [.2042.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA -1F52 ; [.2042.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA -1F56 ; [.2042.0020.0002][.0000.0022.0002][.0000.002A.0002] # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI -1F51 ; [.2042.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER UPSILON WITH DASIA -1F59 ; [.2042.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER UPSILON WITH DASIA -1F55 ; [.2042.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA -1F5D ; [.2042.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA -1F53 ; [.2042.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA -1F5B ; [.2042.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA -1F57 ; [.2042.0020.0002][.0000.0023.0002][.0000.002A.0002] # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI -1F5F ; [.2042.0020.0008][.0000.0023.0002][.0000.002A.0002] # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI -03CD ; [.2042.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH TONOS -1F7B ; [.2042.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH OXIA -038E ; [.2042.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER UPSILON WITH TONOS -1FEB ; [.2042.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER UPSILON WITH OXIA -03D3 ; [.2042.0020.000A][.0000.0024.0002] # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL -1F7A ; [.2042.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER UPSILON WITH VARIA -1FEA ; [.2042.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER UPSILON WITH VARIA -1FE0 ; [.2042.0020.0002][.0000.0026.0002] # GREEK SMALL LETTER UPSILON WITH VRACHY -1FE8 ; [.2042.0020.0008][.0000.0026.0002] # GREEK CAPITAL LETTER UPSILON WITH VRACHY -1FE6 ; [.2042.0020.0002][.0000.002A.0002] # GREEK SMALL LETTER UPSILON WITH PERISPOMENI -03CB ; [.2042.0020.0002][.0000.002B.0002] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA -03AB ; [.2042.0020.0008][.0000.002B.0002] # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA -03D4 ; [.2042.0020.000A][.0000.002B.0002] # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL -03B0 ; [.2042.0020.0002][.0000.002B.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS -1FE3 ; [.2042.0020.0002][.0000.002B.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA -1FE2 ; [.2042.0020.0002][.0000.002B.0002][.0000.0025.0002] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA -1FE7 ; [.2042.0020.0002][.0000.002B.0002][.0000.002A.0002] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI -1FE1 ; [.2042.0020.0002][.0000.0032.0002] # GREEK SMALL LETTER UPSILON WITH MACRON -1FE9 ; [.2042.0020.0008][.0000.0032.0002] # GREEK CAPITAL LETTER UPSILON WITH MACRON -03C6 ; [.2043.0020.0002] # GREEK SMALL LETTER PHI -03D5 ; [.2043.0020.0004] # GREEK PHI SYMBOL -1D6D7 ; [.2043.0020.0005] # MATHEMATICAL BOLD SMALL PHI -1D6DF ; [.2043.0020.0005] # MATHEMATICAL BOLD PHI SYMBOL -1D711 ; [.2043.0020.0005] # MATHEMATICAL ITALIC SMALL PHI -1D719 ; [.2043.0020.0005] # MATHEMATICAL ITALIC PHI SYMBOL -1D74B ; [.2043.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL PHI -1D753 ; [.2043.0020.0005] # MATHEMATICAL BOLD ITALIC PHI SYMBOL -1D785 ; [.2043.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL PHI -1D78D ; [.2043.0020.0005] # MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL -1D7BF ; [.2043.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI -1D7C7 ; [.2043.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL -03A6 ; [.2043.0020.0008] # GREEK CAPITAL LETTER PHI -1D6BD ; [.2043.0020.000B] # MATHEMATICAL BOLD CAPITAL PHI -1D6F7 ; [.2043.0020.000B] # MATHEMATICAL ITALIC CAPITAL PHI -1D731 ; [.2043.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL PHI -1D76B ; [.2043.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI -1D7A5 ; [.2043.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI -1D60 ; [.2043.0020.0014] # MODIFIER LETTER SMALL GREEK PHI -1D69 ; [.2043.0020.0015] # GREEK SUBSCRIPT SMALL LETTER PHI -03C7 ; [.2044.0020.0002] # GREEK SMALL LETTER CHI -1D6D8 ; [.2044.0020.0005] # MATHEMATICAL BOLD SMALL CHI -1D712 ; [.2044.0020.0005] # MATHEMATICAL ITALIC SMALL CHI -1D74C ; [.2044.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL CHI -1D786 ; [.2044.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL CHI -1D7C0 ; [.2044.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI -03A7 ; [.2044.0020.0008] # GREEK CAPITAL LETTER CHI -1D6BE ; [.2044.0020.000B] # MATHEMATICAL BOLD CAPITAL CHI -1D6F8 ; [.2044.0020.000B] # MATHEMATICAL ITALIC CAPITAL CHI -1D732 ; [.2044.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL CHI -1D76C ; [.2044.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI -1D7A6 ; [.2044.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI -1D61 ; [.2044.0020.0014] # MODIFIER LETTER SMALL CHI -1D6A ; [.2044.0020.0015] # GREEK SUBSCRIPT SMALL LETTER CHI -03C8 ; [.2045.0020.0002] # GREEK SMALL LETTER PSI -1D6D9 ; [.2045.0020.0005] # MATHEMATICAL BOLD SMALL PSI -1D713 ; [.2045.0020.0005] # MATHEMATICAL ITALIC SMALL PSI -1D74D ; [.2045.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL PSI -1D787 ; [.2045.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL PSI -1D7C1 ; [.2045.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI -03A8 ; [.2045.0020.0008] # GREEK CAPITAL LETTER PSI -1D6BF ; [.2045.0020.000B] # MATHEMATICAL BOLD CAPITAL PSI -1D6F9 ; [.2045.0020.000B] # MATHEMATICAL ITALIC CAPITAL PSI -1D733 ; [.2045.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL PSI -1D76D ; [.2045.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI -1D7A7 ; [.2045.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI -1D2A ; [.2046.0020.0002] # GREEK LETTER SMALL CAPITAL PSI -03C9 ; [.2047.0020.0002] # GREEK SMALL LETTER OMEGA -1D6DA ; [.2047.0020.0005] # MATHEMATICAL BOLD SMALL OMEGA -1D714 ; [.2047.0020.0005] # MATHEMATICAL ITALIC SMALL OMEGA -1D74E ; [.2047.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL OMEGA -1D788 ; [.2047.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA -1D7C2 ; [.2047.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA -03A9 ; [.2047.0020.0008] # GREEK CAPITAL LETTER OMEGA -2126 ; [.2047.0020.0008] # OHM SIGN -1D6C0 ; [.2047.0020.000B] # MATHEMATICAL BOLD CAPITAL OMEGA -1D6FA ; [.2047.0020.000B] # MATHEMATICAL ITALIC CAPITAL OMEGA -1D734 ; [.2047.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL OMEGA -1D76E ; [.2047.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA -1D7A8 ; [.2047.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA -1F60 ; [.2047.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER OMEGA WITH PSILI -1F68 ; [.2047.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI -1F64 ; [.2047.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA -1F6C ; [.2047.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA -1FA4 ; [.2047.0020.0002][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1FAC ; [.2047.0020.0008][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F62 ; [.2047.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA -1F6A ; [.2047.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA -1FA2 ; [.2047.0020.0002][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1FAA ; [.2047.0020.0008][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F66 ; [.2047.0020.0002][.0000.0022.0002][.0000.002A.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI -1F6E ; [.2047.0020.0008][.0000.0022.0002][.0000.002A.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI -1FA6 ; [.2047.0020.0002][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1FAE ; [.2047.0020.0008][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1FA0 ; [.2047.0020.0002][.0000.0022.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI -1FA8 ; [.2047.0020.0008][.0000.0022.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI -1F61 ; [.2047.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER OMEGA WITH DASIA -1F69 ; [.2047.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA -1F65 ; [.2047.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA -1F6D ; [.2047.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA -1FA5 ; [.2047.0020.0002][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1FAD ; [.2047.0020.0008][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F63 ; [.2047.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA -1F6B ; [.2047.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA -1FA3 ; [.2047.0020.0002][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1FAB ; [.2047.0020.0008][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F67 ; [.2047.0020.0002][.0000.0023.0002][.0000.002A.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI -1F6F ; [.2047.0020.0008][.0000.0023.0002][.0000.002A.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI -1FA7 ; [.2047.0020.0002][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1FAF ; [.2047.0020.0008][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1FA1 ; [.2047.0020.0002][.0000.0023.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI -1FA9 ; [.2047.0020.0008][.0000.0023.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI -03CE ; [.2047.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER OMEGA WITH TONOS -1F7D ; [.2047.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER OMEGA WITH OXIA -038F ; [.2047.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER OMEGA WITH TONOS -1FFB ; [.2047.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER OMEGA WITH OXIA -1FF4 ; [.2047.0020.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI -1F7C ; [.2047.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER OMEGA WITH VARIA -1FFA ; [.2047.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER OMEGA WITH VARIA -1FF2 ; [.2047.0020.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI -1FF6 ; [.2047.0020.0002][.0000.002A.0002] # GREEK SMALL LETTER OMEGA WITH PERISPOMENI -1FF7 ; [.2047.0020.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI -1FF3 ; [.2047.0020.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI -1FFC ; [.2047.0020.0008][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI -AB65 ; [.2048.0020.0002] # GREEK LETTER SMALL CAPITAL OMEGA -03E1 ; [.2049.0020.0002] # GREEK SMALL LETTER SAMPI -03E0 ; [.2049.0020.0008] # GREEK LETTER SAMPI -0373 ; [.204A.0020.0002] # GREEK SMALL LETTER ARCHAIC SAMPI -0372 ; [.204A.0020.0008] # GREEK CAPITAL LETTER ARCHAIC SAMPI -03F8 ; [.204B.0020.0002] # GREEK SMALL LETTER SHO -03F7 ; [.204B.0020.0008] # GREEK CAPITAL LETTER SHO -2C81 ; [.204C.0020.0002] # COPTIC SMALL LETTER ALFA -2C80 ; [.204C.0020.0008] # COPTIC CAPITAL LETTER ALFA -2C83 ; [.204D.0020.0002] # COPTIC SMALL LETTER VIDA -2C82 ; [.204D.0020.0008] # COPTIC CAPITAL LETTER VIDA -2C85 ; [.204E.0020.0002] # COPTIC SMALL LETTER GAMMA -2C84 ; [.204E.0020.0008] # COPTIC CAPITAL LETTER GAMMA -2C87 ; [.204F.0020.0002] # COPTIC SMALL LETTER DALDA -2C86 ; [.204F.0020.0008] # COPTIC CAPITAL LETTER DALDA -2C89 ; [.2050.0020.0002] # COPTIC SMALL LETTER EIE -2C88 ; [.2050.0020.0008] # COPTIC CAPITAL LETTER EIE -2CB7 ; [.2051.0020.0002] # COPTIC SMALL LETTER CRYPTOGRAMMIC EIE -2CB6 ; [.2051.0020.0008] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE -2C8B ; [.2052.0020.0002] # COPTIC SMALL LETTER SOU -2C8A ; [.2052.0020.0008] # COPTIC CAPITAL LETTER SOU -2C8D ; [.2053.0020.0002] # COPTIC SMALL LETTER ZATA -2C8C ; [.2053.0020.0008] # COPTIC CAPITAL LETTER ZATA -2C8F ; [.2054.0020.0002] # COPTIC SMALL LETTER HATE -2C8E ; [.2054.0020.0008] # COPTIC CAPITAL LETTER HATE -2C91 ; [.2055.0020.0002] # COPTIC SMALL LETTER THETHE -2C90 ; [.2055.0020.0008] # COPTIC CAPITAL LETTER THETHE -2C93 ; [.2056.0020.0002] # COPTIC SMALL LETTER IAUDA -2C92 ; [.2056.0020.0008] # COPTIC CAPITAL LETTER IAUDA -2C95 ; [.2057.0020.0002] # COPTIC SMALL LETTER KAPA -2C94 ; [.2057.0020.0008] # COPTIC CAPITAL LETTER KAPA -2CE4 ; [.2057.0020.0004][.204C.0020.0004][.2056.0020.0004] # COPTIC SYMBOL KAI -2CB9 ; [.2058.0020.0002] # COPTIC SMALL LETTER DIALECT-P KAPA -2CB8 ; [.2058.0020.0008] # COPTIC CAPITAL LETTER DIALECT-P KAPA -2C97 ; [.2059.0020.0002] # COPTIC SMALL LETTER LAULA -2C96 ; [.2059.0020.0008] # COPTIC CAPITAL LETTER LAULA -2C99 ; [.205A.0020.0002] # COPTIC SMALL LETTER MI -2C98 ; [.205A.0020.0008] # COPTIC CAPITAL LETTER MI -2C9B ; [.205B.0020.0002] # COPTIC SMALL LETTER NI -2C9A ; [.205B.0020.0008] # COPTIC CAPITAL LETTER NI -2CBB ; [.205C.0020.0002] # COPTIC SMALL LETTER DIALECT-P NI -2CBA ; [.205C.0020.0008] # COPTIC CAPITAL LETTER DIALECT-P NI -2CBD ; [.205D.0020.0002] # COPTIC SMALL LETTER CRYPTOGRAMMIC NI -2CBC ; [.205D.0020.0008] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI -2C9D ; [.205E.0020.0002] # COPTIC SMALL LETTER KSI -2C9C ; [.205E.0020.0008] # COPTIC CAPITAL LETTER KSI -2C9F ; [.205F.0020.0002] # COPTIC SMALL LETTER O -2C9E ; [.205F.0020.0008] # COPTIC CAPITAL LETTER O -2CA1 ; [.2060.0020.0002] # COPTIC SMALL LETTER PI -2CA0 ; [.2060.0020.0008] # COPTIC CAPITAL LETTER PI -2CA3 ; [.2061.0020.0002] # COPTIC SMALL LETTER RO -2CA2 ; [.2061.0020.0008] # COPTIC CAPITAL LETTER RO -2CA5 ; [.2062.0020.0002] # COPTIC SMALL LETTER SIMA -2CA4 ; [.2062.0020.0008] # COPTIC CAPITAL LETTER SIMA -2CA7 ; [.2063.0020.0002] # COPTIC SMALL LETTER TAU -2CA6 ; [.2063.0020.0008] # COPTIC CAPITAL LETTER TAU -2CA9 ; [.2064.0020.0002] # COPTIC SMALL LETTER UA -2CA8 ; [.2064.0020.0008] # COPTIC CAPITAL LETTER UA -2CAB ; [.2065.0020.0002] # COPTIC SMALL LETTER FI -2CAA ; [.2065.0020.0008] # COPTIC CAPITAL LETTER FI -2CAD ; [.2066.0020.0002] # COPTIC SMALL LETTER KHI -2CAC ; [.2066.0020.0008] # COPTIC CAPITAL LETTER KHI -2CAF ; [.2067.0020.0002] # COPTIC SMALL LETTER PSI -2CAE ; [.2067.0020.0008] # COPTIC CAPITAL LETTER PSI -2CB1 ; [.2068.0020.0002] # COPTIC SMALL LETTER OOU -2CB0 ; [.2068.0020.0008] # COPTIC CAPITAL LETTER OOU -2CBF ; [.2069.0020.0002] # COPTIC SMALL LETTER OLD COPTIC OOU -2CBE ; [.2069.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC OOU -2CC1 ; [.206A.0020.0002] # COPTIC SMALL LETTER SAMPI -2CC0 ; [.206A.0020.0008] # COPTIC CAPITAL LETTER SAMPI -03E3 ; [.206B.0020.0002] # COPTIC SMALL LETTER SHEI -03E2 ; [.206B.0020.0008] # COPTIC CAPITAL LETTER SHEI -2CEC ; [.206C.0020.0002] # COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI -2CEB ; [.206C.0020.0008] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI -2CC3 ; [.206D.0020.0002] # COPTIC SMALL LETTER CROSSED SHEI -2CC2 ; [.206D.0020.0008] # COPTIC CAPITAL LETTER CROSSED SHEI -2CC5 ; [.206E.0020.0002] # COPTIC SMALL LETTER OLD COPTIC SHEI -2CC4 ; [.206E.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC SHEI -2CC7 ; [.206F.0020.0002] # COPTIC SMALL LETTER OLD COPTIC ESH -2CC6 ; [.206F.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC ESH -03E5 ; [.2070.0020.0002] # COPTIC SMALL LETTER FEI -03E4 ; [.2070.0020.0008] # COPTIC CAPITAL LETTER FEI -03E7 ; [.2071.0020.0002] # COPTIC SMALL LETTER KHEI -03E6 ; [.2071.0020.0008] # COPTIC CAPITAL LETTER KHEI -2CF3 ; [.2072.0020.0002] # COPTIC SMALL LETTER BOHAIRIC KHEI -2CF2 ; [.2072.0020.0008] # COPTIC CAPITAL LETTER BOHAIRIC KHEI -2CC9 ; [.2073.0020.0002] # COPTIC SMALL LETTER AKHMIMIC KHEI -2CC8 ; [.2073.0020.0008] # COPTIC CAPITAL LETTER AKHMIMIC KHEI -03E9 ; [.2074.0020.0002] # COPTIC SMALL LETTER HORI -03E8 ; [.2074.0020.0008] # COPTIC CAPITAL LETTER HORI -2CCB ; [.2075.0020.0002] # COPTIC SMALL LETTER DIALECT-P HORI -2CCA ; [.2075.0020.0008] # COPTIC CAPITAL LETTER DIALECT-P HORI -2CCD ; [.2076.0020.0002] # COPTIC SMALL LETTER OLD COPTIC HORI -2CCC ; [.2076.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC HORI -2CCF ; [.2077.0020.0002] # COPTIC SMALL LETTER OLD COPTIC HA -2CCE ; [.2077.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC HA -2CD1 ; [.2078.0020.0002] # COPTIC SMALL LETTER L-SHAPED HA -2CD0 ; [.2078.0020.0008] # COPTIC CAPITAL LETTER L-SHAPED HA -2CD3 ; [.2079.0020.0002] # COPTIC SMALL LETTER OLD COPTIC HEI -2CD2 ; [.2079.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC HEI -2CD5 ; [.207A.0020.0002] # COPTIC SMALL LETTER OLD COPTIC HAT -2CD4 ; [.207A.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC HAT -03EB ; [.207B.0020.0002] # COPTIC SMALL LETTER GANGIA -03EA ; [.207B.0020.0008] # COPTIC CAPITAL LETTER GANGIA -2CEE ; [.207C.0020.0002] # COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA -2CED ; [.207C.0020.0008] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA -2CD7 ; [.207D.0020.0002] # COPTIC SMALL LETTER OLD COPTIC GANGIA -2CD6 ; [.207D.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC GANGIA -03ED ; [.207E.0020.0002] # COPTIC SMALL LETTER SHIMA -03EC ; [.207E.0020.0008] # COPTIC CAPITAL LETTER SHIMA -2CD9 ; [.207F.0020.0002] # COPTIC SMALL LETTER OLD COPTIC DJA -2CD8 ; [.207F.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC DJA -2CDB ; [.2080.0020.0002] # COPTIC SMALL LETTER OLD COPTIC SHIMA -2CDA ; [.2080.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC SHIMA -2CDD ; [.2081.0020.0002] # COPTIC SMALL LETTER OLD NUBIAN SHIMA -2CDC ; [.2081.0020.0008] # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA -03EF ; [.2082.0020.0002] # COPTIC SMALL LETTER DEI -03EE ; [.2082.0020.0008] # COPTIC CAPITAL LETTER DEI -2CB3 ; [.2083.0020.0002] # COPTIC SMALL LETTER DIALECT-P ALEF -2CB2 ; [.2083.0020.0008] # COPTIC CAPITAL LETTER DIALECT-P ALEF -2CB5 ; [.2084.0020.0002] # COPTIC SMALL LETTER OLD COPTIC AIN -2CB4 ; [.2084.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC AIN -2CDF ; [.2085.0020.0002] # COPTIC SMALL LETTER OLD NUBIAN NGI -2CDE ; [.2085.0020.0008] # COPTIC CAPITAL LETTER OLD NUBIAN NGI -2CE1 ; [.2086.0020.0002] # COPTIC SMALL LETTER OLD NUBIAN NYI -2CE0 ; [.2086.0020.0008] # COPTIC CAPITAL LETTER OLD NUBIAN NYI -2CE3 ; [.2087.0020.0002] # COPTIC SMALL LETTER OLD NUBIAN WAU -2CE2 ; [.2087.0020.0008] # COPTIC CAPITAL LETTER OLD NUBIAN WAU -0430 ; [.2088.0020.0002] # CYRILLIC SMALL LETTER A -2DF6 ; [.2088.0020.0004] # COMBINING CYRILLIC LETTER A -0410 ; [.2088.0020.0008] # CYRILLIC CAPITAL LETTER A -04D1 ; [.2088.0020.0002][.0000.0026.0002] # CYRILLIC SMALL LETTER A WITH BREVE -04D0 ; [.2088.0020.0008][.0000.0026.0002] # CYRILLIC CAPITAL LETTER A WITH BREVE -04D3 ; [.2088.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER A WITH DIAERESIS -04D2 ; [.2088.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS -04D9 ; [.208C.0020.0002] # CYRILLIC SMALL LETTER SCHWA -04D8 ; [.208C.0020.0008] # CYRILLIC CAPITAL LETTER SCHWA -04DB ; [.208C.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS -04DA ; [.208C.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS -04D5 ; [.2090.0020.0002] # CYRILLIC SMALL LIGATURE A IE -04D4 ; [.2090.0020.0008] # CYRILLIC CAPITAL LIGATURE A IE -0431 ; [.2094.0020.0002] # CYRILLIC SMALL LETTER BE -2DE0 ; [.2094.0020.0004] # COMBINING CYRILLIC LETTER BE -0411 ; [.2094.0020.0008] # CYRILLIC CAPITAL LETTER BE -0432 ; [.2098.0020.0002] # CYRILLIC SMALL LETTER VE -1C80 ; [.2098.0020.0004] # CYRILLIC SMALL LETTER ROUNDED VE -2DE1 ; [.2098.0020.0004] # COMBINING CYRILLIC LETTER VE -0412 ; [.2098.0020.0008] # CYRILLIC CAPITAL LETTER VE -0433 ; [.209C.0020.0002] # CYRILLIC SMALL LETTER GHE -2DE2 ; [.209C.0020.0004] # COMBINING CYRILLIC LETTER GHE -0413 ; [.209C.0020.0008] # CYRILLIC CAPITAL LETTER GHE -0453 ; [.209C.0020.0002][.0000.0024.0002] # CYRILLIC SMALL LETTER GJE -0403 ; [.209C.0020.0008][.0000.0024.0002] # CYRILLIC CAPITAL LETTER GJE -0491 ; [.209C.0020.0004][.0000.0112.0004] # CYRILLIC SMALL LETTER GHE WITH UPTURN -0490 ; [.209C.0020.000A][.0000.0112.0004] # CYRILLIC CAPITAL LETTER GHE WITH UPTURN -0493 ; [.20A0.0020.0002] # CYRILLIC SMALL LETTER GHE WITH STROKE -0492 ; [.20A0.0020.0008] # CYRILLIC CAPITAL LETTER GHE WITH STROKE -04FB ; [.20A4.0020.0002] # CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK -04FA ; [.20A4.0020.0008] # CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK -0495 ; [.20A8.0020.0002] # CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK -0494 ; [.20A8.0020.0008] # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK -04F7 ; [.20AC.0020.0002] # CYRILLIC SMALL LETTER GHE WITH DESCENDER -04F6 ; [.20AC.0020.0008] # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER -0434 ; [.20B0.0020.0002] # CYRILLIC SMALL LETTER DE -1C81 ; [.20B0.0020.0004] # CYRILLIC SMALL LETTER LONG-LEGGED DE -2DE3 ; [.20B0.0020.0004] # COMBINING CYRILLIC LETTER DE -0414 ; [.20B0.0020.0008] # CYRILLIC CAPITAL LETTER DE -0501 ; [.20B4.0020.0002] # CYRILLIC SMALL LETTER KOMI DE -0500 ; [.20B4.0020.0008] # CYRILLIC CAPITAL LETTER KOMI DE -A681 ; [.20B5.0020.0002] # CYRILLIC SMALL LETTER DWE -A680 ; [.20B5.0020.0008] # CYRILLIC CAPITAL LETTER DWE -0452 ; [.20B6.0020.0002] # CYRILLIC SMALL LETTER DJE -0402 ; [.20B6.0020.0008] # CYRILLIC CAPITAL LETTER DJE -A663 ; [.20BA.0020.0002] # CYRILLIC SMALL LETTER SOFT DE -A662 ; [.20BA.0020.0008] # CYRILLIC CAPITAL LETTER SOFT DE -0503 ; [.20BB.0020.0002] # CYRILLIC SMALL LETTER KOMI DJE -0502 ; [.20BB.0020.0008] # CYRILLIC CAPITAL LETTER KOMI DJE -0499 ; [.20BC.0020.0002] # CYRILLIC SMALL LETTER ZE WITH DESCENDER -0498 ; [.20BC.0020.0008] # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER -0435 ; [.20C0.0020.0002] # CYRILLIC SMALL LETTER IE -2DF7 ; [.20C0.0020.0004] # COMBINING CYRILLIC LETTER IE -0415 ; [.20C0.0020.0008] # CYRILLIC CAPITAL LETTER IE -0450 ; [.20C0.0020.0002][.0000.0025.0002] # CYRILLIC SMALL LETTER IE WITH GRAVE -0400 ; [.20C0.0020.0008][.0000.0025.0002] # CYRILLIC CAPITAL LETTER IE WITH GRAVE -04D7 ; [.20C0.0020.0002][.0000.0026.0002] # CYRILLIC SMALL LETTER IE WITH BREVE -04D6 ; [.20C0.0020.0008][.0000.0026.0002] # CYRILLIC CAPITAL LETTER IE WITH BREVE -0451 ; [.20C0.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER IO -0401 ; [.20C0.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER IO -0454 ; [.20C4.0020.0002] # CYRILLIC SMALL LETTER UKRAINIAN IE -A674 ; [.20C4.0020.0004] # COMBINING CYRILLIC LETTER UKRAINIAN IE -0404 ; [.20C4.0020.0008] # CYRILLIC CAPITAL LETTER UKRAINIAN IE -0436 ; [.20C8.0020.0002] # CYRILLIC SMALL LETTER ZHE -2DE4 ; [.20C8.0020.0004] # COMBINING CYRILLIC LETTER ZHE -0416 ; [.20C8.0020.0008] # CYRILLIC CAPITAL LETTER ZHE -04C2 ; [.20C8.0020.0002][.0000.0026.0002] # CYRILLIC SMALL LETTER ZHE WITH BREVE -04C1 ; [.20C8.0020.0008][.0000.0026.0002] # CYRILLIC CAPITAL LETTER ZHE WITH BREVE -04DD ; [.20C8.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS -04DC ; [.20C8.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS -052B ; [.20CC.0020.0002] # CYRILLIC SMALL LETTER DZZHE -052A ; [.20CC.0020.0008] # CYRILLIC CAPITAL LETTER DZZHE -A685 ; [.20CD.0020.0002] # CYRILLIC SMALL LETTER ZHWE -A684 ; [.20CD.0020.0008] # CYRILLIC CAPITAL LETTER ZHWE -0497 ; [.20CE.0020.0002] # CYRILLIC SMALL LETTER ZHE WITH DESCENDER -0496 ; [.20CE.0020.0008] # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER -0437 ; [.20D2.0020.0002] # CYRILLIC SMALL LETTER ZE -2DE5 ; [.20D2.0020.0004] # COMBINING CYRILLIC LETTER ZE -0417 ; [.20D2.0020.0008] # CYRILLIC CAPITAL LETTER ZE -04DF ; [.20D2.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS -04DE ; [.20D2.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS -A641 ; [.20D6.0020.0002] # CYRILLIC SMALL LETTER ZEMLYA -A640 ; [.20D6.0020.0008] # CYRILLIC CAPITAL LETTER ZEMLYA -0505 ; [.20D7.0020.0002] # CYRILLIC SMALL LETTER KOMI ZJE -0504 ; [.20D7.0020.0008] # CYRILLIC CAPITAL LETTER KOMI ZJE -0511 ; [.20D8.0020.0002] # CYRILLIC SMALL LETTER REVERSED ZE -0510 ; [.20D8.0020.0008] # CYRILLIC CAPITAL LETTER REVERSED ZE -A643 ; [.20D9.0020.0002] # CYRILLIC SMALL LETTER DZELO -A642 ; [.20D9.0020.0008] # CYRILLIC CAPITAL LETTER DZELO -0455 ; [.20DA.0020.0002] # CYRILLIC SMALL LETTER DZE -0405 ; [.20DA.0020.0008] # CYRILLIC CAPITAL LETTER DZE -A645 ; [.20DE.0020.0002] # CYRILLIC SMALL LETTER REVERSED DZE -A644 ; [.20DE.0020.0008] # CYRILLIC CAPITAL LETTER REVERSED DZE -04E1 ; [.20DF.0020.0002] # CYRILLIC SMALL LETTER ABKHASIAN DZE -04E0 ; [.20DF.0020.0008] # CYRILLIC CAPITAL LETTER ABKHASIAN DZE -A689 ; [.20E3.0020.0002] # CYRILLIC SMALL LETTER DZZE -A688 ; [.20E3.0020.0008] # CYRILLIC CAPITAL LETTER DZZE -0507 ; [.20E4.0020.0002] # CYRILLIC SMALL LETTER KOMI DZJE -0506 ; [.20E4.0020.0008] # CYRILLIC CAPITAL LETTER KOMI DZJE -A683 ; [.20E5.0020.0002] # CYRILLIC SMALL LETTER DZWE -A682 ; [.20E5.0020.0008] # CYRILLIC CAPITAL LETTER DZWE -0438 ; [.20E6.0020.0002] # CYRILLIC SMALL LETTER I -A675 ; [.20E6.0020.0004] # COMBINING CYRILLIC LETTER I -0418 ; [.20E6.0020.0008] # CYRILLIC CAPITAL LETTER I -045D ; [.20E6.0020.0002][.0000.0025.0002] # CYRILLIC SMALL LETTER I WITH GRAVE -040D ; [.20E6.0020.0008][.0000.0025.0002] # CYRILLIC CAPITAL LETTER I WITH GRAVE -04E5 ; [.20E6.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER I WITH DIAERESIS -04E4 ; [.20E6.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS -04E3 ; [.20E6.0020.0002][.0000.0032.0002] # CYRILLIC SMALL LETTER I WITH MACRON -04E2 ; [.20E6.0020.0008][.0000.0032.0002] # CYRILLIC CAPITAL LETTER I WITH MACRON -048B ; [.20EA.0020.0002] # CYRILLIC SMALL LETTER SHORT I WITH TAIL -048A ; [.20EA.0020.0008] # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL -0456 ; [.20EE.0020.0002] # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -0406 ; [.20EE.0020.0008] # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I -0457 ; [.20EE.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER YI -A676 ; [.20EE.0020.0004][.0000.002B.0004] # COMBINING CYRILLIC LETTER YI -0407 ; [.20EE.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER YI -A647 ; [.20F2.0020.0002] # CYRILLIC SMALL LETTER IOTA -A646 ; [.20F2.0020.0008] # CYRILLIC CAPITAL LETTER IOTA -0439 ; [.20F3.0020.0002] # CYRILLIC SMALL LETTER SHORT I -0438 0306 ; [.20F3.0020.0002] # CYRILLIC SMALL LETTER SHORT I -0419 ; [.20F3.0020.0008] # CYRILLIC CAPITAL LETTER SHORT I -0418 0306 ; [.20F3.0020.0008] # CYRILLIC CAPITAL LETTER SHORT I -0458 ; [.20F7.0020.0002] # CYRILLIC SMALL LETTER JE -0408 ; [.20F7.0020.0008] # CYRILLIC CAPITAL LETTER JE -A649 ; [.20FB.0020.0002] # CYRILLIC SMALL LETTER DJERV -2DF8 ; [.20FB.0020.0004] # COMBINING CYRILLIC LETTER DJERV -A648 ; [.20FB.0020.0008] # CYRILLIC CAPITAL LETTER DJERV -043A ; [.20FC.0020.0002] # CYRILLIC SMALL LETTER KA -2DE6 ; [.20FC.0020.0004] # COMBINING CYRILLIC LETTER KA -041A ; [.20FC.0020.0008] # CYRILLIC CAPITAL LETTER KA -045C ; [.20FC.0020.0002][.0000.0024.0002] # CYRILLIC SMALL LETTER KJE -040C ; [.20FC.0020.0008][.0000.0024.0002] # CYRILLIC CAPITAL LETTER KJE -049B ; [.2100.0020.0002] # CYRILLIC SMALL LETTER KA WITH DESCENDER -049A ; [.2100.0020.0008] # CYRILLIC CAPITAL LETTER KA WITH DESCENDER -04C4 ; [.2104.0020.0002] # CYRILLIC SMALL LETTER KA WITH HOOK -04C3 ; [.2104.0020.0008] # CYRILLIC CAPITAL LETTER KA WITH HOOK -04A1 ; [.2108.0020.0002] # CYRILLIC SMALL LETTER BASHKIR KA -04A0 ; [.2108.0020.0008] # CYRILLIC CAPITAL LETTER BASHKIR KA -049F ; [.210C.0020.0002] # CYRILLIC SMALL LETTER KA WITH STROKE -049E ; [.210C.0020.0008] # CYRILLIC CAPITAL LETTER KA WITH STROKE -049D ; [.2110.0020.0002] # CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE -049C ; [.2110.0020.0008] # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE -051F ; [.2114.0020.0002] # CYRILLIC SMALL LETTER ALEUT KA -051E ; [.2114.0020.0008] # CYRILLIC CAPITAL LETTER ALEUT KA -051B ; [.2115.0020.0002] # CYRILLIC SMALL LETTER QA -051A ; [.2115.0020.0008] # CYRILLIC CAPITAL LETTER QA -043B ; [.2116.0020.0002] # CYRILLIC SMALL LETTER EL -2DE7 ; [.2116.0020.0004] # COMBINING CYRILLIC LETTER EL -041B ; [.2116.0020.0008] # CYRILLIC CAPITAL LETTER EL -1D2B ; [.211A.0020.0002] # CYRILLIC LETTER SMALL CAPITAL EL -04C6 ; [.211B.0020.0002] # CYRILLIC SMALL LETTER EL WITH TAIL -04C5 ; [.211B.0020.0008] # CYRILLIC CAPITAL LETTER EL WITH TAIL -052F ; [.211F.0020.0002] # CYRILLIC SMALL LETTER EL WITH DESCENDER -052E ; [.211F.0020.0008] # CYRILLIC CAPITAL LETTER EL WITH DESCENDER -0513 ; [.2120.0020.0002] # CYRILLIC SMALL LETTER EL WITH HOOK -0512 ; [.2120.0020.0008] # CYRILLIC CAPITAL LETTER EL WITH HOOK -0521 ; [.2121.0020.0002] # CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK -0520 ; [.2121.0020.0008] # CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK -0459 ; [.2122.0020.0002] # CYRILLIC SMALL LETTER LJE -0409 ; [.2122.0020.0008] # CYRILLIC CAPITAL LETTER LJE -A665 ; [.2126.0020.0002] # CYRILLIC SMALL LETTER SOFT EL -A664 ; [.2126.0020.0008] # CYRILLIC CAPITAL LETTER SOFT EL -0509 ; [.2127.0020.0002] # CYRILLIC SMALL LETTER KOMI LJE -0508 ; [.2127.0020.0008] # CYRILLIC CAPITAL LETTER KOMI LJE -0515 ; [.2128.0020.0002] # CYRILLIC SMALL LETTER LHA -0514 ; [.2128.0020.0008] # CYRILLIC CAPITAL LETTER LHA -043C ; [.2129.0020.0002] # CYRILLIC SMALL LETTER EM -2DE8 ; [.2129.0020.0004] # COMBINING CYRILLIC LETTER EM -041C ; [.2129.0020.0008] # CYRILLIC CAPITAL LETTER EM -04CE ; [.212D.0020.0002] # CYRILLIC SMALL LETTER EM WITH TAIL -04CD ; [.212D.0020.0008] # CYRILLIC CAPITAL LETTER EM WITH TAIL -A667 ; [.2131.0020.0002] # CYRILLIC SMALL LETTER SOFT EM -A666 ; [.2131.0020.0008] # CYRILLIC CAPITAL LETTER SOFT EM -043D ; [.2132.0020.0002] # CYRILLIC SMALL LETTER EN -2DE9 ; [.2132.0020.0004] # COMBINING CYRILLIC LETTER EN -041D ; [.2132.0020.0008] # CYRILLIC CAPITAL LETTER EN -1D78 ; [.2132.0020.0014] # MODIFIER LETTER CYRILLIC EN -0529 ; [.2136.0020.0002] # CYRILLIC SMALL LETTER EN WITH LEFT HOOK -0528 ; [.2136.0020.0008] # CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK -04CA ; [.2137.0020.0002] # CYRILLIC SMALL LETTER EN WITH TAIL -04C9 ; [.2137.0020.0008] # CYRILLIC CAPITAL LETTER EN WITH TAIL -04A3 ; [.213B.0020.0002] # CYRILLIC SMALL LETTER EN WITH DESCENDER -04A2 ; [.213B.0020.0008] # CYRILLIC CAPITAL LETTER EN WITH DESCENDER -04C8 ; [.213F.0020.0002] # CYRILLIC SMALL LETTER EN WITH HOOK -04C7 ; [.213F.0020.0008] # CYRILLIC CAPITAL LETTER EN WITH HOOK -0523 ; [.2143.0020.0002] # CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK -0522 ; [.2143.0020.0008] # CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK -04A5 ; [.2144.0020.0002] # CYRILLIC SMALL LIGATURE EN GHE -04A4 ; [.2144.0020.0008] # CYRILLIC CAPITAL LIGATURE EN GHE -045A ; [.2148.0020.0002] # CYRILLIC SMALL LETTER NJE -040A ; [.2148.0020.0008] # CYRILLIC CAPITAL LETTER NJE -050B ; [.214C.0020.0002] # CYRILLIC SMALL LETTER KOMI NJE -050A ; [.214C.0020.0008] # CYRILLIC CAPITAL LETTER KOMI NJE -043E ; [.214D.0020.0002] # CYRILLIC SMALL LETTER O -1C82 ; [.214D.0020.0004] # CYRILLIC SMALL LETTER NARROW O -2DEA ; [.214D.0020.0004] # COMBINING CYRILLIC LETTER O -A669 ; [.214D.0020.0004] # CYRILLIC SMALL LETTER MONOCULAR O -A66B ; [.214D.0020.0004] # CYRILLIC SMALL LETTER BINOCULAR O -A66D ; [.214D.0020.0004] # CYRILLIC SMALL LETTER DOUBLE MONOCULAR O -A66E ; [.214D.0020.0004] # CYRILLIC LETTER MULTIOCULAR O -A699 ; [.214D.0020.0004] # CYRILLIC SMALL LETTER DOUBLE O -A69B ; [.214D.0020.0004] # CYRILLIC SMALL LETTER CROSSED O -041E ; [.214D.0020.0008] # CYRILLIC CAPITAL LETTER O -A668 ; [.214D.0020.000A] # CYRILLIC CAPITAL LETTER MONOCULAR O -A66A ; [.214D.0020.000A] # CYRILLIC CAPITAL LETTER BINOCULAR O -A66C ; [.214D.0020.000A] # CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O -A698 ; [.214D.0020.000A] # CYRILLIC CAPITAL LETTER DOUBLE O -A69A ; [.214D.0020.000A] # CYRILLIC CAPITAL LETTER CROSSED O -04E7 ; [.214D.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER O WITH DIAERESIS -04E6 ; [.214D.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS -04E9 ; [.2151.0020.0002] # CYRILLIC SMALL LETTER BARRED O -04E8 ; [.2151.0020.0008] # CYRILLIC CAPITAL LETTER BARRED O -04EB ; [.2151.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS -04EA ; [.2151.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS -043F ; [.2155.0020.0002] # CYRILLIC SMALL LETTER PE -2DEB ; [.2155.0020.0004] # COMBINING CYRILLIC LETTER PE -041F ; [.2155.0020.0008] # CYRILLIC CAPITAL LETTER PE -0525 ; [.2159.0020.0002] # CYRILLIC SMALL LETTER PE WITH DESCENDER -0524 ; [.2159.0020.0008] # CYRILLIC CAPITAL LETTER PE WITH DESCENDER -04A7 ; [.215A.0020.0002] # CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK -04A6 ; [.215A.0020.0008] # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK -0481 ; [.215E.0020.0002] # CYRILLIC SMALL LETTER KOPPA -0480 ; [.215E.0020.0008] # CYRILLIC CAPITAL LETTER KOPPA -0440 ; [.2162.0020.0002] # CYRILLIC SMALL LETTER ER -2DEC ; [.2162.0020.0004] # COMBINING CYRILLIC LETTER ER -0420 ; [.2162.0020.0008] # CYRILLIC CAPITAL LETTER ER -048F ; [.2166.0020.0002] # CYRILLIC SMALL LETTER ER WITH TICK -048E ; [.2166.0020.0008] # CYRILLIC CAPITAL LETTER ER WITH TICK -0517 ; [.216A.0020.0002] # CYRILLIC SMALL LETTER RHA -0516 ; [.216A.0020.0008] # CYRILLIC CAPITAL LETTER RHA -0441 ; [.216B.0020.0002] # CYRILLIC SMALL LETTER ES -1C83 ; [.216B.0020.0004] # CYRILLIC SMALL LETTER WIDE ES -2DED ; [.216B.0020.0004] # COMBINING CYRILLIC LETTER ES -0421 ; [.216B.0020.0008] # CYRILLIC CAPITAL LETTER ES -2DF5 ; [.216B.0020.0004][.2174.0020.0004] # COMBINING CYRILLIC LETTER ES-TE -050D ; [.216F.0020.0002] # CYRILLIC SMALL LETTER KOMI SJE -050C ; [.216F.0020.0008] # CYRILLIC CAPITAL LETTER KOMI SJE -04AB ; [.2170.0020.0002] # CYRILLIC SMALL LETTER ES WITH DESCENDER -04AA ; [.2170.0020.0008] # CYRILLIC CAPITAL LETTER ES WITH DESCENDER -0442 ; [.2174.0020.0002] # CYRILLIC SMALL LETTER TE -1C84 ; [.2174.0020.0004] # CYRILLIC SMALL LETTER TALL TE -1C85 ; [.2174.0020.0004] # CYRILLIC SMALL LETTER THREE-LEGGED TE -2DEE ; [.2174.0020.0004] # COMBINING CYRILLIC LETTER TE -0422 ; [.2174.0020.0008] # CYRILLIC CAPITAL LETTER TE -A68D ; [.2178.0020.0002] # CYRILLIC SMALL LETTER TWE -A68C ; [.2178.0020.0008] # CYRILLIC CAPITAL LETTER TWE -050F ; [.2179.0020.0002] # CYRILLIC SMALL LETTER KOMI TJE -050E ; [.2179.0020.0008] # CYRILLIC CAPITAL LETTER KOMI TJE -04AD ; [.217A.0020.0002] # CYRILLIC SMALL LETTER TE WITH DESCENDER -04AC ; [.217A.0020.0008] # CYRILLIC CAPITAL LETTER TE WITH DESCENDER -A68B ; [.217E.0020.0002] # CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK -A68A ; [.217E.0020.0008] # CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK -045B ; [.217F.0020.0002] # CYRILLIC SMALL LETTER TSHE -040B ; [.217F.0020.0008] # CYRILLIC CAPITAL LETTER TSHE -0443 ; [.2183.0020.0002] # CYRILLIC SMALL LETTER U -A677 ; [.2183.0020.0004] # COMBINING CYRILLIC LETTER U -0423 ; [.2183.0020.0008] # CYRILLIC CAPITAL LETTER U -045E ; [.2183.0020.0002][.0000.0026.0002] # CYRILLIC SMALL LETTER SHORT U -040E ; [.2183.0020.0008][.0000.0026.0002] # CYRILLIC CAPITAL LETTER SHORT U -04F1 ; [.2183.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER U WITH DIAERESIS -04F0 ; [.2183.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS -04F3 ; [.2183.0020.0002][.0000.002C.0002] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE -04F2 ; [.2183.0020.0008][.0000.002C.0002] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE -04EF ; [.2183.0020.0002][.0000.0032.0002] # CYRILLIC SMALL LETTER U WITH MACRON -04EE ; [.2183.0020.0008][.0000.0032.0002] # CYRILLIC CAPITAL LETTER U WITH MACRON -04AF ; [.2187.0020.0002] # CYRILLIC SMALL LETTER STRAIGHT U -04AE ; [.2187.0020.0008] # CYRILLIC CAPITAL LETTER STRAIGHT U -04B1 ; [.218B.0020.0002] # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE -04B0 ; [.218B.0020.0008] # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE -A64B ; [.218F.0020.0002] # CYRILLIC SMALL LETTER MONOGRAPH UK -1C88 ; [.218F.0020.0004] # CYRILLIC SMALL LETTER UNBLENDED UK -2DF9 ; [.218F.0020.0004] # COMBINING CYRILLIC LETTER MONOGRAPH UK -A64A ; [.218F.0020.0008] # CYRILLIC CAPITAL LETTER MONOGRAPH UK -0479 ; [.2190.0020.0002] # CYRILLIC SMALL LETTER UK -0478 ; [.2190.0020.0008] # CYRILLIC CAPITAL LETTER UK -0444 ; [.2194.0020.0002] # CYRILLIC SMALL LETTER EF -A69E ; [.2194.0020.0004] # COMBINING CYRILLIC LETTER EF -0424 ; [.2194.0020.0008] # CYRILLIC CAPITAL LETTER EF -0445 ; [.2198.0020.0002] # CYRILLIC SMALL LETTER HA -2DEF ; [.2198.0020.0004] # COMBINING CYRILLIC LETTER HA -0425 ; [.2198.0020.0008] # CYRILLIC CAPITAL LETTER HA -04FD ; [.219C.0020.0002] # CYRILLIC SMALL LETTER HA WITH HOOK -04FC ; [.219C.0020.0008] # CYRILLIC CAPITAL LETTER HA WITH HOOK -04FF ; [.21A0.0020.0002] # CYRILLIC SMALL LETTER HA WITH STROKE -04FE ; [.21A0.0020.0008] # CYRILLIC CAPITAL LETTER HA WITH STROKE -04B3 ; [.21A4.0020.0002] # CYRILLIC SMALL LETTER HA WITH DESCENDER -04B2 ; [.21A4.0020.0008] # CYRILLIC CAPITAL LETTER HA WITH DESCENDER -04BB ; [.21A8.0020.0002] # CYRILLIC SMALL LETTER SHHA -04BA ; [.21A8.0020.0008] # CYRILLIC CAPITAL LETTER SHHA -0527 ; [.21AC.0020.0002] # CYRILLIC SMALL LETTER SHHA WITH DESCENDER -0526 ; [.21AC.0020.0008] # CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER -A695 ; [.21AD.0020.0002] # CYRILLIC SMALL LETTER HWE -A694 ; [.21AD.0020.0008] # CYRILLIC CAPITAL LETTER HWE -0461 ; [.21AE.0020.0002] # CYRILLIC SMALL LETTER OMEGA -A67B ; [.21AE.0020.0004] # COMBINING CYRILLIC LETTER OMEGA -0460 ; [.21AE.0020.0008] # CYRILLIC CAPITAL LETTER OMEGA -047F ; [.21B2.0020.0002] # CYRILLIC SMALL LETTER OT -047E ; [.21B2.0020.0008] # CYRILLIC CAPITAL LETTER OT -A64D ; [.21B6.0020.0002] # CYRILLIC SMALL LETTER BROAD OMEGA -A64C ; [.21B6.0020.0008] # CYRILLIC CAPITAL LETTER BROAD OMEGA -047D ; [.21B7.0020.0002] # CYRILLIC SMALL LETTER OMEGA WITH TITLO -047C ; [.21B7.0020.0008] # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO -047B ; [.21BB.0020.0002] # CYRILLIC SMALL LETTER ROUND OMEGA -047A ; [.21BB.0020.0008] # CYRILLIC CAPITAL LETTER ROUND OMEGA -0446 ; [.21BF.0020.0002] # CYRILLIC SMALL LETTER TSE -2DF0 ; [.21BF.0020.0004] # COMBINING CYRILLIC LETTER TSE -0426 ; [.21BF.0020.0008] # CYRILLIC CAPITAL LETTER TSE -A661 ; [.21C3.0020.0002] # CYRILLIC SMALL LETTER REVERSED TSE -A660 ; [.21C3.0020.0008] # CYRILLIC CAPITAL LETTER REVERSED TSE -A68F ; [.21C4.0020.0002] # CYRILLIC SMALL LETTER TSWE -A68E ; [.21C4.0020.0008] # CYRILLIC CAPITAL LETTER TSWE -04B5 ; [.21C5.0020.0002] # CYRILLIC SMALL LIGATURE TE TSE -04B4 ; [.21C5.0020.0008] # CYRILLIC CAPITAL LIGATURE TE TSE -A691 ; [.21C9.0020.0002] # CYRILLIC SMALL LETTER TSSE -A690 ; [.21C9.0020.0008] # CYRILLIC CAPITAL LETTER TSSE -0447 ; [.21CA.0020.0002] # CYRILLIC SMALL LETTER CHE -2DF1 ; [.21CA.0020.0004] # COMBINING CYRILLIC LETTER CHE -0427 ; [.21CA.0020.0008] # CYRILLIC CAPITAL LETTER CHE -04F5 ; [.21CA.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS -04F4 ; [.21CA.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS -052D ; [.21CE.0020.0002] # CYRILLIC SMALL LETTER DCHE -052C ; [.21CE.0020.0008] # CYRILLIC CAPITAL LETTER DCHE -A693 ; [.21CF.0020.0002] # CYRILLIC SMALL LETTER TCHE -A692 ; [.21CF.0020.0008] # CYRILLIC CAPITAL LETTER TCHE -04B7 ; [.21D0.0020.0002] # CYRILLIC SMALL LETTER CHE WITH DESCENDER -04B6 ; [.21D0.0020.0008] # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER -04CC ; [.21D4.0020.0002] # CYRILLIC SMALL LETTER KHAKASSIAN CHE -04CB ; [.21D4.0020.0008] # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE -04B9 ; [.21D8.0020.0002] # CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE -04B8 ; [.21D8.0020.0008] # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE -A687 ; [.21DC.0020.0002] # CYRILLIC SMALL LETTER CCHE -A686 ; [.21DC.0020.0008] # CYRILLIC CAPITAL LETTER CCHE -04BD ; [.21DD.0020.0002] # CYRILLIC SMALL LETTER ABKHASIAN CHE -04BC ; [.21DD.0020.0008] # CYRILLIC CAPITAL LETTER ABKHASIAN CHE -04BF ; [.21E1.0020.0002] # CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER -04BE ; [.21E1.0020.0008] # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER -045F ; [.21E5.0020.0002] # CYRILLIC SMALL LETTER DZHE -040F ; [.21E5.0020.0008] # CYRILLIC CAPITAL LETTER DZHE -0448 ; [.21E9.0020.0002] # CYRILLIC SMALL LETTER SHA -2DF2 ; [.21E9.0020.0004] # COMBINING CYRILLIC LETTER SHA -0428 ; [.21E9.0020.0008] # CYRILLIC CAPITAL LETTER SHA -A697 ; [.21ED.0020.0002] # CYRILLIC SMALL LETTER SHWE -A696 ; [.21ED.0020.0008] # CYRILLIC CAPITAL LETTER SHWE -0449 ; [.21EE.0020.0002] # CYRILLIC SMALL LETTER SHCHA -2DF3 ; [.21EE.0020.0004] # COMBINING CYRILLIC LETTER SHCHA -0429 ; [.21EE.0020.0008] # CYRILLIC CAPITAL LETTER SHCHA -A64F ; [.21F2.0020.0002] # CYRILLIC SMALL LETTER NEUTRAL YER -A64E ; [.21F2.0020.0008] # CYRILLIC CAPITAL LETTER NEUTRAL YER -2E2F ; [.21F3.0020.0002] # VERTICAL TILDE -A67F ; [.21F4.0020.0002] # CYRILLIC PAYEROK -044A ; [.21F5.0020.0002] # CYRILLIC SMALL LETTER HARD SIGN -1C86 ; [.21F5.0020.0004] # CYRILLIC SMALL LETTER TALL HARD SIGN -A678 ; [.21F5.0020.0004] # COMBINING CYRILLIC LETTER HARD SIGN -042A ; [.21F5.0020.0008] # CYRILLIC CAPITAL LETTER HARD SIGN -A69C ; [.21F5.0020.0014] # MODIFIER LETTER CYRILLIC HARD SIGN -A651 ; [.21F9.0020.0002] # CYRILLIC SMALL LETTER YERU WITH BACK YER -A650 ; [.21F9.0020.0008] # CYRILLIC CAPITAL LETTER YERU WITH BACK YER -044B ; [.21FA.0020.0002] # CYRILLIC SMALL LETTER YERU -A679 ; [.21FA.0020.0004] # COMBINING CYRILLIC LETTER YERU -042B ; [.21FA.0020.0008] # CYRILLIC CAPITAL LETTER YERU -04F9 ; [.21FA.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS -04F8 ; [.21FA.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS -044C ; [.21FE.0020.0002] # CYRILLIC SMALL LETTER SOFT SIGN -A67A ; [.21FE.0020.0004] # COMBINING CYRILLIC LETTER SOFT SIGN -042C ; [.21FE.0020.0008] # CYRILLIC CAPITAL LETTER SOFT SIGN -A69D ; [.21FE.0020.0014] # MODIFIER LETTER CYRILLIC SOFT SIGN -048D ; [.2202.0020.0002] # CYRILLIC SMALL LETTER SEMISOFT SIGN -048C ; [.2202.0020.0008] # CYRILLIC CAPITAL LETTER SEMISOFT SIGN -0463 ; [.2206.0020.0002] # CYRILLIC SMALL LETTER YAT -1C87 ; [.2206.0020.0004] # CYRILLIC SMALL LETTER TALL YAT -2DFA ; [.2206.0020.0004] # COMBINING CYRILLIC LETTER YAT -0462 ; [.2206.0020.0008] # CYRILLIC CAPITAL LETTER YAT -A653 ; [.220A.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED YAT -A652 ; [.220A.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED YAT -044D ; [.220B.0020.0002] # CYRILLIC SMALL LETTER E -042D ; [.220B.0020.0008] # CYRILLIC CAPITAL LETTER E -04ED ; [.220B.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER E WITH DIAERESIS -04EC ; [.220B.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS -044E ; [.220F.0020.0002] # CYRILLIC SMALL LETTER YU -2DFB ; [.220F.0020.0004] # COMBINING CYRILLIC LETTER YU -042E ; [.220F.0020.0008] # CYRILLIC CAPITAL LETTER YU -A655 ; [.2213.0020.0002] # CYRILLIC SMALL LETTER REVERSED YU -A654 ; [.2213.0020.0008] # CYRILLIC CAPITAL LETTER REVERSED YU -A657 ; [.2214.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED A -2DFC ; [.2214.0020.0004] # COMBINING CYRILLIC LETTER IOTIFIED A -A656 ; [.2214.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED A -044F ; [.2215.0020.0002] # CYRILLIC SMALL LETTER YA -042F ; [.2215.0020.0008] # CYRILLIC CAPITAL LETTER YA -0519 ; [.2219.0020.0002] # CYRILLIC SMALL LETTER YAE -0518 ; [.2219.0020.0008] # CYRILLIC CAPITAL LETTER YAE -0465 ; [.221A.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED E -A69F ; [.221A.0020.0004] # COMBINING CYRILLIC LETTER IOTIFIED E -0464 ; [.221A.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED E -0467 ; [.221E.0020.0002] # CYRILLIC SMALL LETTER LITTLE YUS -2DFD ; [.221E.0020.0004] # COMBINING CYRILLIC LETTER LITTLE YUS -0466 ; [.221E.0020.0008] # CYRILLIC CAPITAL LETTER LITTLE YUS -A659 ; [.2222.0020.0002] # CYRILLIC SMALL LETTER CLOSED LITTLE YUS -A658 ; [.2222.0020.0008] # CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS -046B ; [.2223.0020.0002] # CYRILLIC SMALL LETTER BIG YUS -2DFE ; [.2223.0020.0004] # COMBINING CYRILLIC LETTER BIG YUS -046A ; [.2223.0020.0008] # CYRILLIC CAPITAL LETTER BIG YUS -A65B ; [.2227.0020.0002] # CYRILLIC SMALL LETTER BLENDED YUS -A65A ; [.2227.0020.0008] # CYRILLIC CAPITAL LETTER BLENDED YUS -0469 ; [.2228.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS -0468 ; [.2228.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS -A65D ; [.222C.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS -A65C ; [.222C.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS -046D ; [.222D.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED BIG YUS -2DFF ; [.222D.0020.0004] # COMBINING CYRILLIC LETTER IOTIFIED BIG YUS -046C ; [.222D.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS -046F ; [.2231.0020.0002] # CYRILLIC SMALL LETTER KSI -046E ; [.2231.0020.0008] # CYRILLIC CAPITAL LETTER KSI -0471 ; [.2235.0020.0002] # CYRILLIC SMALL LETTER PSI -0470 ; [.2235.0020.0008] # CYRILLIC CAPITAL LETTER PSI -0473 ; [.2239.0020.0002] # CYRILLIC SMALL LETTER FITA -2DF4 ; [.2239.0020.0004] # COMBINING CYRILLIC LETTER FITA -0472 ; [.2239.0020.0008] # CYRILLIC CAPITAL LETTER FITA -0475 ; [.223D.0020.0002] # CYRILLIC SMALL LETTER IZHITSA -0474 ; [.223D.0020.0008] # CYRILLIC CAPITAL LETTER IZHITSA -0477 ; [.223D.0020.0002][.0000.003C.0002] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT -0476 ; [.223D.0020.0008][.0000.003C.0002] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT -A65F ; [.2241.0020.0002] # CYRILLIC SMALL LETTER YN -A65E ; [.2241.0020.0008] # CYRILLIC CAPITAL LETTER YN -04A9 ; [.2242.0020.0002] # CYRILLIC SMALL LETTER ABKHASIAN HA -04A8 ; [.2242.0020.0008] # CYRILLIC CAPITAL LETTER ABKHASIAN HA -051D ; [.2246.0020.0002] # CYRILLIC SMALL LETTER WE -051C ; [.2246.0020.0008] # CYRILLIC CAPITAL LETTER WE -04CF ; [.2247.0020.0002] # CYRILLIC SMALL LETTER PALOCHKA -04C0 ; [.2247.0020.0008] # CYRILLIC LETTER PALOCHKA -2C30 ; [.224B.0020.0002] # GLAGOLITIC SMALL LETTER AZU -1E000 ; [.224B.0020.0004] # COMBINING GLAGOLITIC LETTER AZU -2C00 ; [.224B.0020.0008] # GLAGOLITIC CAPITAL LETTER AZU -2C31 ; [.224C.0020.0002] # GLAGOLITIC SMALL LETTER BUKY -1E001 ; [.224C.0020.0004] # COMBINING GLAGOLITIC LETTER BUKY -2C01 ; [.224C.0020.0008] # GLAGOLITIC CAPITAL LETTER BUKY -2C32 ; [.224D.0020.0002] # GLAGOLITIC SMALL LETTER VEDE -1E002 ; [.224D.0020.0004] # COMBINING GLAGOLITIC LETTER VEDE -2C02 ; [.224D.0020.0008] # GLAGOLITIC CAPITAL LETTER VEDE -2C33 ; [.224E.0020.0002] # GLAGOLITIC SMALL LETTER GLAGOLI -1E003 ; [.224E.0020.0004] # COMBINING GLAGOLITIC LETTER GLAGOLI -2C03 ; [.224E.0020.0008] # GLAGOLITIC CAPITAL LETTER GLAGOLI -2C34 ; [.224F.0020.0002] # GLAGOLITIC SMALL LETTER DOBRO -1E004 ; [.224F.0020.0004] # COMBINING GLAGOLITIC LETTER DOBRO -2C04 ; [.224F.0020.0008] # GLAGOLITIC CAPITAL LETTER DOBRO -2C35 ; [.2250.0020.0002] # GLAGOLITIC SMALL LETTER YESTU -1E005 ; [.2250.0020.0004] # COMBINING GLAGOLITIC LETTER YESTU -2C05 ; [.2250.0020.0008] # GLAGOLITIC CAPITAL LETTER YESTU -2C36 ; [.2251.0020.0002] # GLAGOLITIC SMALL LETTER ZHIVETE -1E006 ; [.2251.0020.0004] # COMBINING GLAGOLITIC LETTER ZHIVETE -2C06 ; [.2251.0020.0008] # GLAGOLITIC CAPITAL LETTER ZHIVETE -2C37 ; [.2252.0020.0002] # GLAGOLITIC SMALL LETTER DZELO -2C07 ; [.2252.0020.0008] # GLAGOLITIC CAPITAL LETTER DZELO -2C38 ; [.2253.0020.0002] # GLAGOLITIC SMALL LETTER ZEMLJA -1E008 ; [.2253.0020.0004] # COMBINING GLAGOLITIC LETTER ZEMLJA -2C08 ; [.2253.0020.0008] # GLAGOLITIC CAPITAL LETTER ZEMLJA -2C39 ; [.2254.0020.0002] # GLAGOLITIC SMALL LETTER IZHE -1E009 ; [.2254.0020.0004] # COMBINING GLAGOLITIC LETTER IZHE -2C09 ; [.2254.0020.0008] # GLAGOLITIC CAPITAL LETTER IZHE -2C3A ; [.2255.0020.0002] # GLAGOLITIC SMALL LETTER INITIAL IZHE -1E00A ; [.2255.0020.0004] # COMBINING GLAGOLITIC LETTER INITIAL IZHE -2C0A ; [.2255.0020.0008] # GLAGOLITIC CAPITAL LETTER INITIAL IZHE -2C3B ; [.2256.0020.0002] # GLAGOLITIC SMALL LETTER I -1E00B ; [.2256.0020.0004] # COMBINING GLAGOLITIC LETTER I -2C0B ; [.2256.0020.0008] # GLAGOLITIC CAPITAL LETTER I -2C3C ; [.2257.0020.0002] # GLAGOLITIC SMALL LETTER DJERVI -1E00C ; [.2257.0020.0004] # COMBINING GLAGOLITIC LETTER DJERVI -2C0C ; [.2257.0020.0008] # GLAGOLITIC CAPITAL LETTER DJERVI -2C3D ; [.2258.0020.0002] # GLAGOLITIC SMALL LETTER KAKO -1E00D ; [.2258.0020.0004] # COMBINING GLAGOLITIC LETTER KAKO -2C0D ; [.2258.0020.0008] # GLAGOLITIC CAPITAL LETTER KAKO -2C3E ; [.2259.0020.0002] # GLAGOLITIC SMALL LETTER LJUDIJE -1E00E ; [.2259.0020.0004] # COMBINING GLAGOLITIC LETTER LJUDIJE -2C0E ; [.2259.0020.0008] # GLAGOLITIC CAPITAL LETTER LJUDIJE -2C3F ; [.225A.0020.0002] # GLAGOLITIC SMALL LETTER MYSLITE -1E00F ; [.225A.0020.0004] # COMBINING GLAGOLITIC LETTER MYSLITE -2C0F ; [.225A.0020.0008] # GLAGOLITIC CAPITAL LETTER MYSLITE -2C40 ; [.225B.0020.0002] # GLAGOLITIC SMALL LETTER NASHI -1E010 ; [.225B.0020.0004] # COMBINING GLAGOLITIC LETTER NASHI -2C10 ; [.225B.0020.0008] # GLAGOLITIC CAPITAL LETTER NASHI -2C41 ; [.225C.0020.0002] # GLAGOLITIC SMALL LETTER ONU -1E011 ; [.225C.0020.0004] # COMBINING GLAGOLITIC LETTER ONU -2C11 ; [.225C.0020.0008] # GLAGOLITIC CAPITAL LETTER ONU -2C42 ; [.225D.0020.0002] # GLAGOLITIC SMALL LETTER POKOJI -1E012 ; [.225D.0020.0004] # COMBINING GLAGOLITIC LETTER POKOJI -2C12 ; [.225D.0020.0008] # GLAGOLITIC CAPITAL LETTER POKOJI -2C43 ; [.225E.0020.0002] # GLAGOLITIC SMALL LETTER RITSI -1E013 ; [.225E.0020.0004] # COMBINING GLAGOLITIC LETTER RITSI -2C13 ; [.225E.0020.0008] # GLAGOLITIC CAPITAL LETTER RITSI -2C44 ; [.225F.0020.0002] # GLAGOLITIC SMALL LETTER SLOVO -1E014 ; [.225F.0020.0004] # COMBINING GLAGOLITIC LETTER SLOVO -2C14 ; [.225F.0020.0008] # GLAGOLITIC CAPITAL LETTER SLOVO -2C45 ; [.2260.0020.0002] # GLAGOLITIC SMALL LETTER TVRIDO -1E015 ; [.2260.0020.0004] # COMBINING GLAGOLITIC LETTER TVRIDO -2C15 ; [.2260.0020.0008] # GLAGOLITIC CAPITAL LETTER TVRIDO -2C46 ; [.2261.0020.0002] # GLAGOLITIC SMALL LETTER UKU -1E016 ; [.2261.0020.0004] # COMBINING GLAGOLITIC LETTER UKU -2C16 ; [.2261.0020.0008] # GLAGOLITIC CAPITAL LETTER UKU -2C47 ; [.2262.0020.0002] # GLAGOLITIC SMALL LETTER FRITU -1E017 ; [.2262.0020.0004] # COMBINING GLAGOLITIC LETTER FRITU -2C17 ; [.2262.0020.0008] # GLAGOLITIC CAPITAL LETTER FRITU -2C48 ; [.2263.0020.0002] # GLAGOLITIC SMALL LETTER HERU -1E018 ; [.2263.0020.0004] # COMBINING GLAGOLITIC LETTER HERU -2C18 ; [.2263.0020.0008] # GLAGOLITIC CAPITAL LETTER HERU -2C49 ; [.2264.0020.0002] # GLAGOLITIC SMALL LETTER OTU -2C19 ; [.2264.0020.0008] # GLAGOLITIC CAPITAL LETTER OTU -2C4A ; [.2265.0020.0002] # GLAGOLITIC SMALL LETTER PE -2C1A ; [.2265.0020.0008] # GLAGOLITIC CAPITAL LETTER PE -2C4B ; [.2266.0020.0002] # GLAGOLITIC SMALL LETTER SHTA -1E01B ; [.2266.0020.0004] # COMBINING GLAGOLITIC LETTER SHTA -2C1B ; [.2266.0020.0008] # GLAGOLITIC CAPITAL LETTER SHTA -2C4C ; [.2267.0020.0002] # GLAGOLITIC SMALL LETTER TSI -1E01C ; [.2267.0020.0004] # COMBINING GLAGOLITIC LETTER TSI -2C1C ; [.2267.0020.0008] # GLAGOLITIC CAPITAL LETTER TSI -2C4D ; [.2268.0020.0002] # GLAGOLITIC SMALL LETTER CHRIVI -1E01D ; [.2268.0020.0004] # COMBINING GLAGOLITIC LETTER CHRIVI -2C1D ; [.2268.0020.0008] # GLAGOLITIC CAPITAL LETTER CHRIVI -2C4E ; [.2269.0020.0002] # GLAGOLITIC SMALL LETTER SHA -1E01E ; [.2269.0020.0004] # COMBINING GLAGOLITIC LETTER SHA -2C1E ; [.2269.0020.0008] # GLAGOLITIC CAPITAL LETTER SHA -2C4F ; [.226A.0020.0002] # GLAGOLITIC SMALL LETTER YERU -1E01F ; [.226A.0020.0004] # COMBINING GLAGOLITIC LETTER YERU -2C1F ; [.226A.0020.0008] # GLAGOLITIC CAPITAL LETTER YERU -2C50 ; [.226B.0020.0002] # GLAGOLITIC SMALL LETTER YERI -1E020 ; [.226B.0020.0004] # COMBINING GLAGOLITIC LETTER YERI -2C20 ; [.226B.0020.0008] # GLAGOLITIC CAPITAL LETTER YERI -2C51 ; [.226C.0020.0002] # GLAGOLITIC SMALL LETTER YATI -1E021 ; [.226C.0020.0004] # COMBINING GLAGOLITIC LETTER YATI -2C21 ; [.226C.0020.0008] # GLAGOLITIC CAPITAL LETTER YATI -2C52 ; [.226D.0020.0002] # GLAGOLITIC SMALL LETTER SPIDERY HA -2C22 ; [.226D.0020.0008] # GLAGOLITIC CAPITAL LETTER SPIDERY HA -2C53 ; [.226E.0020.0002] # GLAGOLITIC SMALL LETTER YU -1E023 ; [.226E.0020.0004] # COMBINING GLAGOLITIC LETTER YU -2C23 ; [.226E.0020.0008] # GLAGOLITIC CAPITAL LETTER YU -2C54 ; [.226F.0020.0002] # GLAGOLITIC SMALL LETTER SMALL YUS -1E024 ; [.226F.0020.0004] # COMBINING GLAGOLITIC LETTER SMALL YUS -2C24 ; [.226F.0020.0008] # GLAGOLITIC CAPITAL LETTER SMALL YUS -2C55 ; [.2270.0020.0002] # GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL -2C25 ; [.2270.0020.0008] # GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL -2C56 ; [.2271.0020.0002] # GLAGOLITIC SMALL LETTER YO -1E026 ; [.2271.0020.0004] # COMBINING GLAGOLITIC LETTER YO -2C26 ; [.2271.0020.0008] # GLAGOLITIC CAPITAL LETTER YO -2C57 ; [.2272.0020.0002] # GLAGOLITIC SMALL LETTER IOTATED SMALL YUS -1E027 ; [.2272.0020.0004] # COMBINING GLAGOLITIC LETTER IOTATED SMALL YUS -2C27 ; [.2272.0020.0008] # GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS -2C58 ; [.2273.0020.0002] # GLAGOLITIC SMALL LETTER BIG YUS -1E028 ; [.2273.0020.0004] # COMBINING GLAGOLITIC LETTER BIG YUS -2C28 ; [.2273.0020.0008] # GLAGOLITIC CAPITAL LETTER BIG YUS -2C59 ; [.2274.0020.0002] # GLAGOLITIC SMALL LETTER IOTATED BIG YUS -1E029 ; [.2274.0020.0004] # COMBINING GLAGOLITIC LETTER IOTATED BIG YUS -2C29 ; [.2274.0020.0008] # GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS -2C5A ; [.2275.0020.0002] # GLAGOLITIC SMALL LETTER FITA -1E02A ; [.2275.0020.0004] # COMBINING GLAGOLITIC LETTER FITA -2C2A ; [.2275.0020.0008] # GLAGOLITIC CAPITAL LETTER FITA -2C5B ; [.2276.0020.0002] # GLAGOLITIC SMALL LETTER IZHITSA -2C2B ; [.2276.0020.0008] # GLAGOLITIC CAPITAL LETTER IZHITSA -2C5C ; [.2277.0020.0002] # GLAGOLITIC SMALL LETTER SHTAPIC -2C2C ; [.2277.0020.0008] # GLAGOLITIC CAPITAL LETTER SHTAPIC -2C5D ; [.2278.0020.0002] # GLAGOLITIC SMALL LETTER TROKUTASTI A -2C2D ; [.2278.0020.0008] # GLAGOLITIC CAPITAL LETTER TROKUTASTI A -2C5E ; [.2279.0020.0002] # GLAGOLITIC SMALL LETTER LATINATE MYSLITE -2C2E ; [.2279.0020.0008] # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -10350 ; [.227A.0020.0002] # OLD PERMIC LETTER AN -10376 ; [.227A.0020.0004] # COMBINING OLD PERMIC LETTER AN -10351 ; [.227B.0020.0002] # OLD PERMIC LETTER BUR -10352 ; [.227C.0020.0002] # OLD PERMIC LETTER GAI -10353 ; [.227D.0020.0002] # OLD PERMIC LETTER DOI -10377 ; [.227D.0020.0004] # COMBINING OLD PERMIC LETTER DOI -10354 ; [.227E.0020.0002] # OLD PERMIC LETTER E -10355 ; [.227F.0020.0002] # OLD PERMIC LETTER ZHOI -10356 ; [.2280.0020.0002] # OLD PERMIC LETTER DZHOI -10357 ; [.2281.0020.0002] # OLD PERMIC LETTER ZATA -10378 ; [.2281.0020.0004] # COMBINING OLD PERMIC LETTER ZATA -10358 ; [.2282.0020.0002] # OLD PERMIC LETTER DZITA -10359 ; [.2283.0020.0002] # OLD PERMIC LETTER I -1035A ; [.2284.0020.0002] # OLD PERMIC LETTER KOKE -1035B ; [.2285.0020.0002] # OLD PERMIC LETTER LEI -1035C ; [.2286.0020.0002] # OLD PERMIC LETTER MENOE -1035D ; [.2287.0020.0002] # OLD PERMIC LETTER NENOE -10379 ; [.2287.0020.0004] # COMBINING OLD PERMIC LETTER NENOE -1035E ; [.2288.0020.0002] # OLD PERMIC LETTER VOOI -1035F ; [.2289.0020.0002] # OLD PERMIC LETTER PEEI -10360 ; [.228A.0020.0002] # OLD PERMIC LETTER REI -10361 ; [.228B.0020.0002] # OLD PERMIC LETTER SII -1037A ; [.228B.0020.0004] # COMBINING OLD PERMIC LETTER SII -10362 ; [.228C.0020.0002] # OLD PERMIC LETTER TAI -10363 ; [.228D.0020.0002] # OLD PERMIC LETTER U -10364 ; [.228E.0020.0002] # OLD PERMIC LETTER CHERY -10365 ; [.228F.0020.0002] # OLD PERMIC LETTER SHOOI -10366 ; [.2290.0020.0002] # OLD PERMIC LETTER SHCHOOI -10367 ; [.2291.0020.0002] # OLD PERMIC LETTER YRY -10368 ; [.2292.0020.0002] # OLD PERMIC LETTER YERU -10369 ; [.2293.0020.0002] # OLD PERMIC LETTER O -1036A ; [.2294.0020.0002] # OLD PERMIC LETTER OO -1036B ; [.2295.0020.0002] # OLD PERMIC LETTER EF -1036C ; [.2296.0020.0002] # OLD PERMIC LETTER HA -1036D ; [.2297.0020.0002] # OLD PERMIC LETTER TSIU -1036E ; [.2298.0020.0002] # OLD PERMIC LETTER VER -1036F ; [.2299.0020.0002] # OLD PERMIC LETTER YER -10370 ; [.229A.0020.0002] # OLD PERMIC LETTER YERI -10371 ; [.229B.0020.0002] # OLD PERMIC LETTER YAT -10372 ; [.229C.0020.0002] # OLD PERMIC LETTER IE -10373 ; [.229D.0020.0002] # OLD PERMIC LETTER YU -10374 ; [.229E.0020.0002] # OLD PERMIC LETTER YA -10375 ; [.229F.0020.0002] # OLD PERMIC LETTER IA -10D0 ; [.22A0.0020.0002] # GEORGIAN LETTER AN -2D00 ; [.22A1.0020.0002] # GEORGIAN SMALL LETTER AN -10A0 ; [.22A1.0020.0008] # GEORGIAN CAPITAL LETTER AN -10D1 ; [.22A2.0020.0002] # GEORGIAN LETTER BAN -2D01 ; [.22A3.0020.0002] # GEORGIAN SMALL LETTER BAN -10A1 ; [.22A3.0020.0008] # GEORGIAN CAPITAL LETTER BAN -10D2 ; [.22A4.0020.0002] # GEORGIAN LETTER GAN -2D02 ; [.22A5.0020.0002] # GEORGIAN SMALL LETTER GAN -10A2 ; [.22A5.0020.0008] # GEORGIAN CAPITAL LETTER GAN -10D3 ; [.22A6.0020.0002] # GEORGIAN LETTER DON -2D03 ; [.22A7.0020.0002] # GEORGIAN SMALL LETTER DON -10A3 ; [.22A7.0020.0008] # GEORGIAN CAPITAL LETTER DON -10D4 ; [.22A8.0020.0002] # GEORGIAN LETTER EN -2D04 ; [.22A9.0020.0002] # GEORGIAN SMALL LETTER EN -10A4 ; [.22A9.0020.0008] # GEORGIAN CAPITAL LETTER EN -10D5 ; [.22AA.0020.0002] # GEORGIAN LETTER VIN -2D05 ; [.22AB.0020.0002] # GEORGIAN SMALL LETTER VIN -10A5 ; [.22AB.0020.0008] # GEORGIAN CAPITAL LETTER VIN -10D6 ; [.22AC.0020.0002] # GEORGIAN LETTER ZEN -2D06 ; [.22AD.0020.0002] # GEORGIAN SMALL LETTER ZEN -10A6 ; [.22AD.0020.0008] # GEORGIAN CAPITAL LETTER ZEN -10F1 ; [.22AE.0020.0002] # GEORGIAN LETTER HE -2D21 ; [.22AF.0020.0002] # GEORGIAN SMALL LETTER HE -10C1 ; [.22AF.0020.0008] # GEORGIAN CAPITAL LETTER HE -10D7 ; [.22B0.0020.0002] # GEORGIAN LETTER TAN -2D07 ; [.22B1.0020.0002] # GEORGIAN SMALL LETTER TAN -10A7 ; [.22B1.0020.0008] # GEORGIAN CAPITAL LETTER TAN -10D8 ; [.22B2.0020.0002] # GEORGIAN LETTER IN -2D08 ; [.22B3.0020.0002] # GEORGIAN SMALL LETTER IN -10A8 ; [.22B3.0020.0008] # GEORGIAN CAPITAL LETTER IN -10D9 ; [.22B4.0020.0002] # GEORGIAN LETTER KAN -2D09 ; [.22B5.0020.0002] # GEORGIAN SMALL LETTER KAN -10A9 ; [.22B5.0020.0008] # GEORGIAN CAPITAL LETTER KAN -10DA ; [.22B6.0020.0002] # GEORGIAN LETTER LAS -2D0A ; [.22B7.0020.0002] # GEORGIAN SMALL LETTER LAS -10AA ; [.22B7.0020.0008] # GEORGIAN CAPITAL LETTER LAS -10DB ; [.22B8.0020.0002] # GEORGIAN LETTER MAN -2D0B ; [.22B9.0020.0002] # GEORGIAN SMALL LETTER MAN -10AB ; [.22B9.0020.0008] # GEORGIAN CAPITAL LETTER MAN -10DC ; [.22BA.0020.0002] # GEORGIAN LETTER NAR -10FC ; [.22BA.0020.0014] # MODIFIER LETTER GEORGIAN NAR -2D0C ; [.22BB.0020.0002] # GEORGIAN SMALL LETTER NAR -10AC ; [.22BB.0020.0008] # GEORGIAN CAPITAL LETTER NAR -10F2 ; [.22BC.0020.0002] # GEORGIAN LETTER HIE -2D22 ; [.22BD.0020.0002] # GEORGIAN SMALL LETTER HIE -10C2 ; [.22BD.0020.0008] # GEORGIAN CAPITAL LETTER HIE -10DD ; [.22BE.0020.0002] # GEORGIAN LETTER ON -2D0D ; [.22BF.0020.0002] # GEORGIAN SMALL LETTER ON -10AD ; [.22BF.0020.0008] # GEORGIAN CAPITAL LETTER ON -10DE ; [.22C0.0020.0002] # GEORGIAN LETTER PAR -2D0E ; [.22C1.0020.0002] # GEORGIAN SMALL LETTER PAR -10AE ; [.22C1.0020.0008] # GEORGIAN CAPITAL LETTER PAR -10DF ; [.22C2.0020.0002] # GEORGIAN LETTER ZHAR -2D0F ; [.22C3.0020.0002] # GEORGIAN SMALL LETTER ZHAR -10AF ; [.22C3.0020.0008] # GEORGIAN CAPITAL LETTER ZHAR -10E0 ; [.22C4.0020.0002] # GEORGIAN LETTER RAE -2D10 ; [.22C5.0020.0002] # GEORGIAN SMALL LETTER RAE -10B0 ; [.22C5.0020.0008] # GEORGIAN CAPITAL LETTER RAE -10E1 ; [.22C6.0020.0002] # GEORGIAN LETTER SAN -2D11 ; [.22C7.0020.0002] # GEORGIAN SMALL LETTER SAN -10B1 ; [.22C7.0020.0008] # GEORGIAN CAPITAL LETTER SAN -10E2 ; [.22C8.0020.0002] # GEORGIAN LETTER TAR -2D12 ; [.22C9.0020.0002] # GEORGIAN SMALL LETTER TAR -10B2 ; [.22C9.0020.0008] # GEORGIAN CAPITAL LETTER TAR -10F3 ; [.22CA.0020.0002] # GEORGIAN LETTER WE -2D23 ; [.22CB.0020.0002] # GEORGIAN SMALL LETTER WE -10C3 ; [.22CB.0020.0008] # GEORGIAN CAPITAL LETTER WE -10E3 ; [.22CC.0020.0002] # GEORGIAN LETTER UN -2D13 ; [.22CD.0020.0002] # GEORGIAN SMALL LETTER UN -10B3 ; [.22CD.0020.0008] # GEORGIAN CAPITAL LETTER UN -10E4 ; [.22CE.0020.0002] # GEORGIAN LETTER PHAR -2D14 ; [.22CF.0020.0002] # GEORGIAN SMALL LETTER PHAR -10B4 ; [.22CF.0020.0008] # GEORGIAN CAPITAL LETTER PHAR -10E5 ; [.22D0.0020.0002] # GEORGIAN LETTER KHAR -2D15 ; [.22D1.0020.0002] # GEORGIAN SMALL LETTER KHAR -10B5 ; [.22D1.0020.0008] # GEORGIAN CAPITAL LETTER KHAR -10E6 ; [.22D2.0020.0002] # GEORGIAN LETTER GHAN -2D16 ; [.22D3.0020.0002] # GEORGIAN SMALL LETTER GHAN -10B6 ; [.22D3.0020.0008] # GEORGIAN CAPITAL LETTER GHAN -10E7 ; [.22D4.0020.0002] # GEORGIAN LETTER QAR -2D17 ; [.22D5.0020.0002] # GEORGIAN SMALL LETTER QAR -10B7 ; [.22D5.0020.0008] # GEORGIAN CAPITAL LETTER QAR -10E8 ; [.22D6.0020.0002] # GEORGIAN LETTER SHIN -2D18 ; [.22D7.0020.0002] # GEORGIAN SMALL LETTER SHIN -10B8 ; [.22D7.0020.0008] # GEORGIAN CAPITAL LETTER SHIN -10E9 ; [.22D8.0020.0002] # GEORGIAN LETTER CHIN -2D19 ; [.22D9.0020.0002] # GEORGIAN SMALL LETTER CHIN -10B9 ; [.22D9.0020.0008] # GEORGIAN CAPITAL LETTER CHIN -10EA ; [.22DA.0020.0002] # GEORGIAN LETTER CAN -2D1A ; [.22DB.0020.0002] # GEORGIAN SMALL LETTER CAN -10BA ; [.22DB.0020.0008] # GEORGIAN CAPITAL LETTER CAN -10EB ; [.22DC.0020.0002] # GEORGIAN LETTER JIL -2D1B ; [.22DD.0020.0002] # GEORGIAN SMALL LETTER JIL -10BB ; [.22DD.0020.0008] # GEORGIAN CAPITAL LETTER JIL -10EC ; [.22DE.0020.0002] # GEORGIAN LETTER CIL -2D1C ; [.22DF.0020.0002] # GEORGIAN SMALL LETTER CIL -10BC ; [.22DF.0020.0008] # GEORGIAN CAPITAL LETTER CIL -10ED ; [.22E0.0020.0002] # GEORGIAN LETTER CHAR -2D1D ; [.22E1.0020.0002] # GEORGIAN SMALL LETTER CHAR -10BD ; [.22E1.0020.0008] # GEORGIAN CAPITAL LETTER CHAR -10EE ; [.22E2.0020.0002] # GEORGIAN LETTER XAN -2D1E ; [.22E3.0020.0002] # GEORGIAN SMALL LETTER XAN -10BE ; [.22E3.0020.0008] # GEORGIAN CAPITAL LETTER XAN -10F4 ; [.22E4.0020.0002] # GEORGIAN LETTER HAR -2D24 ; [.22E5.0020.0002] # GEORGIAN SMALL LETTER HAR -10C4 ; [.22E5.0020.0008] # GEORGIAN CAPITAL LETTER HAR -10EF ; [.22E6.0020.0002] # GEORGIAN LETTER JHAN -2D1F ; [.22E7.0020.0002] # GEORGIAN SMALL LETTER JHAN -10BF ; [.22E7.0020.0008] # GEORGIAN CAPITAL LETTER JHAN -10F0 ; [.22E8.0020.0002] # GEORGIAN LETTER HAE -2D20 ; [.22E9.0020.0002] # GEORGIAN SMALL LETTER HAE -10C0 ; [.22E9.0020.0008] # GEORGIAN CAPITAL LETTER HAE -10F5 ; [.22EA.0020.0002] # GEORGIAN LETTER HOE -2D25 ; [.22EB.0020.0002] # GEORGIAN SMALL LETTER HOE -10C5 ; [.22EB.0020.0008] # GEORGIAN CAPITAL LETTER HOE -10F6 ; [.22EC.0020.0002] # GEORGIAN LETTER FI -10F7 ; [.22ED.0020.0002] # GEORGIAN LETTER YN -2D27 ; [.22EE.0020.0002] # GEORGIAN SMALL LETTER YN -10C7 ; [.22EE.0020.0008] # GEORGIAN CAPITAL LETTER YN -10F8 ; [.22EF.0020.0002] # GEORGIAN LETTER ELIFI -10F9 ; [.22F0.0020.0002] # GEORGIAN LETTER TURNED GAN -10FA ; [.22F1.0020.0002] # GEORGIAN LETTER AIN -10FD ; [.22F2.0020.0002] # GEORGIAN LETTER AEN -2D2D ; [.22F3.0020.0002] # GEORGIAN SMALL LETTER AEN -10CD ; [.22F3.0020.0008] # GEORGIAN CAPITAL LETTER AEN -10FE ; [.22F4.0020.0002] # GEORGIAN LETTER HARD SIGN -10FF ; [.22F5.0020.0002] # GEORGIAN LETTER LABIAL SIGN -0561 ; [.22F6.0020.0002] # ARMENIAN SMALL LETTER AYB -0531 ; [.22F6.0020.0008] # ARMENIAN CAPITAL LETTER AYB -0562 ; [.22F7.0020.0002] # ARMENIAN SMALL LETTER BEN -0532 ; [.22F7.0020.0008] # ARMENIAN CAPITAL LETTER BEN -0563 ; [.22F8.0020.0002] # ARMENIAN SMALL LETTER GIM -0533 ; [.22F8.0020.0008] # ARMENIAN CAPITAL LETTER GIM -0564 ; [.22F9.0020.0002] # ARMENIAN SMALL LETTER DA -0534 ; [.22F9.0020.0008] # ARMENIAN CAPITAL LETTER DA -0565 ; [.22FA.0020.0002] # ARMENIAN SMALL LETTER ECH -0535 ; [.22FA.0020.0008] # ARMENIAN CAPITAL LETTER ECH -0587 ; [.22FA.0020.0004][.2317.0020.0004] # ARMENIAN SMALL LIGATURE ECH YIWN -0566 ; [.22FB.0020.0002] # ARMENIAN SMALL LETTER ZA -0536 ; [.22FB.0020.0008] # ARMENIAN CAPITAL LETTER ZA -0567 ; [.22FC.0020.0002] # ARMENIAN SMALL LETTER EH -0537 ; [.22FC.0020.0008] # ARMENIAN CAPITAL LETTER EH -0568 ; [.22FD.0020.0002] # ARMENIAN SMALL LETTER ET -0538 ; [.22FD.0020.0008] # ARMENIAN CAPITAL LETTER ET -0569 ; [.22FE.0020.0002] # ARMENIAN SMALL LETTER TO -0539 ; [.22FE.0020.0008] # ARMENIAN CAPITAL LETTER TO -056A ; [.22FF.0020.0002] # ARMENIAN SMALL LETTER ZHE -053A ; [.22FF.0020.0008] # ARMENIAN CAPITAL LETTER ZHE -056B ; [.2300.0020.0002] # ARMENIAN SMALL LETTER INI -053B ; [.2300.0020.0008] # ARMENIAN CAPITAL LETTER INI -056C ; [.2301.0020.0002] # ARMENIAN SMALL LETTER LIWN -053C ; [.2301.0020.0008] # ARMENIAN CAPITAL LETTER LIWN -056D ; [.2302.0020.0002] # ARMENIAN SMALL LETTER XEH -053D ; [.2302.0020.0008] # ARMENIAN CAPITAL LETTER XEH -056E ; [.2303.0020.0002] # ARMENIAN SMALL LETTER CA -053E ; [.2303.0020.0008] # ARMENIAN CAPITAL LETTER CA -056F ; [.2304.0020.0002] # ARMENIAN SMALL LETTER KEN -053F ; [.2304.0020.0008] # ARMENIAN CAPITAL LETTER KEN -0570 ; [.2305.0020.0002] # ARMENIAN SMALL LETTER HO -0540 ; [.2305.0020.0008] # ARMENIAN CAPITAL LETTER HO -0571 ; [.2306.0020.0002] # ARMENIAN SMALL LETTER JA -0541 ; [.2306.0020.0008] # ARMENIAN CAPITAL LETTER JA -0572 ; [.2307.0020.0002] # ARMENIAN SMALL LETTER GHAD -0542 ; [.2307.0020.0008] # ARMENIAN CAPITAL LETTER GHAD -0573 ; [.2308.0020.0002] # ARMENIAN SMALL LETTER CHEH -0543 ; [.2308.0020.0008] # ARMENIAN CAPITAL LETTER CHEH -0574 ; [.2309.0020.0002] # ARMENIAN SMALL LETTER MEN -0544 ; [.2309.0020.0008] # ARMENIAN CAPITAL LETTER MEN -FB14 ; [.2309.0020.0004][.22FA.0020.0004] # ARMENIAN SMALL LIGATURE MEN ECH -FB15 ; [.2309.0020.0004][.2300.0020.0004] # ARMENIAN SMALL LIGATURE MEN INI -FB17 ; [.2309.0020.0004][.2302.0020.0004] # ARMENIAN SMALL LIGATURE MEN XEH -FB13 ; [.2309.0020.0004][.230B.0020.0004] # ARMENIAN SMALL LIGATURE MEN NOW -0575 ; [.230A.0020.0002] # ARMENIAN SMALL LETTER YI -0545 ; [.230A.0020.0008] # ARMENIAN CAPITAL LETTER YI -0576 ; [.230B.0020.0002] # ARMENIAN SMALL LETTER NOW -0546 ; [.230B.0020.0008] # ARMENIAN CAPITAL LETTER NOW -0577 ; [.230C.0020.0002] # ARMENIAN SMALL LETTER SHA -0547 ; [.230C.0020.0008] # ARMENIAN CAPITAL LETTER SHA -0578 ; [.230D.0020.0002] # ARMENIAN SMALL LETTER VO -0548 ; [.230D.0020.0008] # ARMENIAN CAPITAL LETTER VO -0579 ; [.230E.0020.0002] # ARMENIAN SMALL LETTER CHA -0549 ; [.230E.0020.0008] # ARMENIAN CAPITAL LETTER CHA -057A ; [.230F.0020.0002] # ARMENIAN SMALL LETTER PEH -054A ; [.230F.0020.0008] # ARMENIAN CAPITAL LETTER PEH -057B ; [.2310.0020.0002] # ARMENIAN SMALL LETTER JHEH -054B ; [.2310.0020.0008] # ARMENIAN CAPITAL LETTER JHEH -057C ; [.2311.0020.0002] # ARMENIAN SMALL LETTER RA -054C ; [.2311.0020.0008] # ARMENIAN CAPITAL LETTER RA -057D ; [.2312.0020.0002] # ARMENIAN SMALL LETTER SEH -054D ; [.2312.0020.0008] # ARMENIAN CAPITAL LETTER SEH -057E ; [.2313.0020.0002] # ARMENIAN SMALL LETTER VEW -054E ; [.2313.0020.0008] # ARMENIAN CAPITAL LETTER VEW -FB16 ; [.2313.0020.0004][.230B.0020.0004] # ARMENIAN SMALL LIGATURE VEW NOW -057F ; [.2314.0020.0002] # ARMENIAN SMALL LETTER TIWN -054F ; [.2314.0020.0008] # ARMENIAN CAPITAL LETTER TIWN -0580 ; [.2315.0020.0002] # ARMENIAN SMALL LETTER REH -0550 ; [.2315.0020.0008] # ARMENIAN CAPITAL LETTER REH -0581 ; [.2316.0020.0002] # ARMENIAN SMALL LETTER CO -0551 ; [.2316.0020.0008] # ARMENIAN CAPITAL LETTER CO -0582 ; [.2317.0020.0002] # ARMENIAN SMALL LETTER YIWN -0552 ; [.2317.0020.0008] # ARMENIAN CAPITAL LETTER YIWN -0583 ; [.2318.0020.0002] # ARMENIAN SMALL LETTER PIWR -0553 ; [.2318.0020.0008] # ARMENIAN CAPITAL LETTER PIWR -0584 ; [.2319.0020.0002] # ARMENIAN SMALL LETTER KEH -0554 ; [.2319.0020.0008] # ARMENIAN CAPITAL LETTER KEH -0585 ; [.231A.0020.0002] # ARMENIAN SMALL LETTER OH -0555 ; [.231A.0020.0008] # ARMENIAN CAPITAL LETTER OH -0586 ; [.231B.0020.0002] # ARMENIAN SMALL LETTER FEH -0556 ; [.231B.0020.0008] # ARMENIAN CAPITAL LETTER FEH -0559 ; [.231C.0020.0002] # ARMENIAN MODIFIER LETTER LEFT HALF RING -05D0 ; [.231D.0020.0002] # HEBREW LETTER ALEF -2135 ; [.231D.0020.0004] # ALEF SYMBOL -FB21 ; [.231D.0020.0005] # HEBREW LETTER WIDE ALEF -FB2E ; [.231D.0020.0002][.0000.0059.0002] # HEBREW LETTER ALEF WITH PATAH -FB2F ; [.231D.0020.0002][.0000.005A.0002] # HEBREW LETTER ALEF WITH QAMATS -FB30 ; [.231D.0020.0002][.0000.005F.0002] # HEBREW LETTER ALEF WITH MAPIQ -FB4F ; [.231D.0020.0004][.2328.0020.0004] # HEBREW LIGATURE ALEF LAMED -05D1 ; [.231E.0020.0002] # HEBREW LETTER BET -2136 ; [.231E.0020.0004] # BET SYMBOL -FB31 ; [.231E.0020.0002][.0000.005F.0002] # HEBREW LETTER BET WITH DAGESH -FB4C ; [.231E.0020.0002][.0000.0060.0002] # HEBREW LETTER BET WITH RAFE -05D2 ; [.231F.0020.0002] # HEBREW LETTER GIMEL -2137 ; [.231F.0020.0004] # GIMEL SYMBOL -FB32 ; [.231F.0020.0002][.0000.005F.0002] # HEBREW LETTER GIMEL WITH DAGESH -05D3 ; [.2320.0020.0002] # HEBREW LETTER DALET -2138 ; [.2320.0020.0004] # DALET SYMBOL -FB22 ; [.2320.0020.0005] # HEBREW LETTER WIDE DALET -FB33 ; [.2320.0020.0002][.0000.005F.0002] # HEBREW LETTER DALET WITH DAGESH -05D4 ; [.2321.0020.0002] # HEBREW LETTER HE -FB23 ; [.2321.0020.0005] # HEBREW LETTER WIDE HE -FB34 ; [.2321.0020.0002][.0000.005F.0002] # HEBREW LETTER HE WITH MAPIQ -05D5 ; [.2322.0020.0002] # HEBREW LETTER VAV -FB4B ; [.2322.0020.0002][.0000.005B.0002] # HEBREW LETTER VAV WITH HOLAM -FB35 ; [.2322.0020.0002][.0000.005F.0002] # HEBREW LETTER VAV WITH DAGESH -05F0 ; [.2322.0020.0004][.2322.0020.0004] # HEBREW LIGATURE YIDDISH DOUBLE VAV -05F1 ; [.2322.0020.0004][.2326.0020.0004] # HEBREW LIGATURE YIDDISH VAV YOD -05D6 ; [.2323.0020.0002] # HEBREW LETTER ZAYIN -FB36 ; [.2323.0020.0002][.0000.005F.0002] # HEBREW LETTER ZAYIN WITH DAGESH -05D7 ; [.2324.0020.0002] # HEBREW LETTER HET -05D8 ; [.2325.0020.0002] # HEBREW LETTER TET -FB38 ; [.2325.0020.0002][.0000.005F.0002] # HEBREW LETTER TET WITH DAGESH -05D9 ; [.2326.0020.0002] # HEBREW LETTER YOD -FB1D ; [.2326.0020.0002][.0000.0056.0002] # HEBREW LETTER YOD WITH HIRIQ -FB39 ; [.2326.0020.0002][.0000.005F.0002] # HEBREW LETTER YOD WITH DAGESH -05F2 ; [.2326.0020.0004][.2326.0020.0004] # HEBREW LIGATURE YIDDISH DOUBLE YOD -FB1F ; [.2326.0020.0004][.2326.0020.0004][.0000.0059.0002] # HEBREW LIGATURE YIDDISH YOD YOD PATAH -05DB ; [.2327.0020.0002] # HEBREW LETTER KAF -FB24 ; [.2327.0020.0005] # HEBREW LETTER WIDE KAF -05DA ; [.2327.0020.0019] # HEBREW LETTER FINAL KAF -FB3B ; [.2327.0020.0002][.0000.005F.0002] # HEBREW LETTER KAF WITH DAGESH -FB3A ; [.2327.0020.0019][.0000.005F.0002] # HEBREW LETTER FINAL KAF WITH DAGESH -FB4D ; [.2327.0020.0002][.0000.0060.0002] # HEBREW LETTER KAF WITH RAFE -05DC ; [.2328.0020.0002] # HEBREW LETTER LAMED -FB25 ; [.2328.0020.0005] # HEBREW LETTER WIDE LAMED -FB3C ; [.2328.0020.0002][.0000.005F.0002] # HEBREW LETTER LAMED WITH DAGESH -05DE ; [.2329.0020.0002] # HEBREW LETTER MEM -FB26 ; [.2329.0020.0005] # HEBREW LETTER WIDE FINAL MEM -05DD ; [.2329.0020.0019] # HEBREW LETTER FINAL MEM -FB3E ; [.2329.0020.0002][.0000.005F.0002] # HEBREW LETTER MEM WITH DAGESH -05E0 ; [.232A.0020.0002] # HEBREW LETTER NUN -05DF ; [.232A.0020.0019] # HEBREW LETTER FINAL NUN -FB40 ; [.232A.0020.0002][.0000.005F.0002] # HEBREW LETTER NUN WITH DAGESH -05E1 ; [.232B.0020.0002] # HEBREW LETTER SAMEKH -FB41 ; [.232B.0020.0002][.0000.005F.0002] # HEBREW LETTER SAMEKH WITH DAGESH -05E2 ; [.232C.0020.0002] # HEBREW LETTER AYIN -FB20 ; [.232C.0020.0005] # HEBREW LETTER ALTERNATIVE AYIN -05E4 ; [.232D.0020.0002] # HEBREW LETTER PE -05E3 ; [.232D.0020.0019] # HEBREW LETTER FINAL PE -FB44 ; [.232D.0020.0002][.0000.005F.0002] # HEBREW LETTER PE WITH DAGESH -FB43 ; [.232D.0020.0019][.0000.005F.0002] # HEBREW LETTER FINAL PE WITH DAGESH -FB4E ; [.232D.0020.0002][.0000.0060.0002] # HEBREW LETTER PE WITH RAFE -05E6 ; [.232E.0020.0002] # HEBREW LETTER TSADI -05E5 ; [.232E.0020.0019] # HEBREW LETTER FINAL TSADI -FB46 ; [.232E.0020.0002][.0000.005F.0002] # HEBREW LETTER TSADI WITH DAGESH -05E7 ; [.232F.0020.0002] # HEBREW LETTER QOF -FB47 ; [.232F.0020.0002][.0000.005F.0002] # HEBREW LETTER QOF WITH DAGESH -05E8 ; [.2330.0020.0002] # HEBREW LETTER RESH -FB27 ; [.2330.0020.0005] # HEBREW LETTER WIDE RESH -FB48 ; [.2330.0020.0002][.0000.005F.0002] # HEBREW LETTER RESH WITH DAGESH -05E9 ; [.2331.0020.0002] # HEBREW LETTER SHIN -FB2B ; [.2331.0020.0002][.0000.005D.0002] # HEBREW LETTER SHIN WITH SIN DOT -FB2A ; [.2331.0020.0002][.0000.005E.0002] # HEBREW LETTER SHIN WITH SHIN DOT -FB49 ; [.2331.0020.0002][.0000.005F.0002] # HEBREW LETTER SHIN WITH DAGESH -FB2D ; [.2331.0020.0002][.0000.005F.0002][.0000.005D.0002] # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT -FB2C ; [.2331.0020.0002][.0000.005F.0002][.0000.005E.0002] # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT -05EA ; [.2332.0020.0002] # HEBREW LETTER TAV -FB28 ; [.2332.0020.0005] # HEBREW LETTER WIDE TAV -FB4A ; [.2332.0020.0002][.0000.005F.0002] # HEBREW LETTER TAV WITH DAGESH -10900 ; [.2333.0020.0002] # PHOENICIAN LETTER ALF -10901 ; [.2334.0020.0002] # PHOENICIAN LETTER BET -10902 ; [.2335.0020.0002] # PHOENICIAN LETTER GAML -10903 ; [.2336.0020.0002] # PHOENICIAN LETTER DELT -10904 ; [.2337.0020.0002] # PHOENICIAN LETTER HE -10905 ; [.2338.0020.0002] # PHOENICIAN LETTER WAU -10906 ; [.2339.0020.0002] # PHOENICIAN LETTER ZAI -10907 ; [.233A.0020.0002] # PHOENICIAN LETTER HET -10908 ; [.233B.0020.0002] # PHOENICIAN LETTER TET -10909 ; [.233C.0020.0002] # PHOENICIAN LETTER YOD -1090A ; [.233D.0020.0002] # PHOENICIAN LETTER KAF -1090B ; [.233E.0020.0002] # PHOENICIAN LETTER LAMD -1090C ; [.233F.0020.0002] # PHOENICIAN LETTER MEM -1090D ; [.2340.0020.0002] # PHOENICIAN LETTER NUN -1090E ; [.2341.0020.0002] # PHOENICIAN LETTER SEMK -1090F ; [.2342.0020.0002] # PHOENICIAN LETTER AIN -10910 ; [.2343.0020.0002] # PHOENICIAN LETTER PE -10911 ; [.2344.0020.0002] # PHOENICIAN LETTER SADE -10912 ; [.2345.0020.0002] # PHOENICIAN LETTER QOF -10913 ; [.2346.0020.0002] # PHOENICIAN LETTER ROSH -10914 ; [.2347.0020.0002] # PHOENICIAN LETTER SHIN -10915 ; [.2348.0020.0002] # PHOENICIAN LETTER TAU -0800 ; [.2349.0020.0002] # SAMARITAN LETTER ALAF -0801 ; [.234A.0020.0002] # SAMARITAN LETTER BIT -0802 ; [.234B.0020.0002] # SAMARITAN LETTER GAMAN -0803 ; [.234C.0020.0002] # SAMARITAN LETTER DALAT -0804 ; [.234D.0020.0002] # SAMARITAN LETTER IY -0805 ; [.234E.0020.0002] # SAMARITAN LETTER BAA -0806 ; [.234F.0020.0002] # SAMARITAN LETTER ZEN -0807 ; [.2350.0020.0002] # SAMARITAN LETTER IT -0808 ; [.2351.0020.0002] # SAMARITAN LETTER TIT -0809 ; [.2352.0020.0002] # SAMARITAN LETTER YUT -080A ; [.2353.0020.0002] # SAMARITAN LETTER KAAF -080B ; [.2354.0020.0002] # SAMARITAN LETTER LABAT -080C ; [.2355.0020.0002] # SAMARITAN LETTER MIM -080D ; [.2356.0020.0002] # SAMARITAN LETTER NUN -080E ; [.2357.0020.0002] # SAMARITAN LETTER SINGAAT -080F ; [.2358.0020.0002] # SAMARITAN LETTER IN -0810 ; [.2359.0020.0002] # SAMARITAN LETTER FI -0811 ; [.235A.0020.0002] # SAMARITAN LETTER TSAADIY -0812 ; [.235B.0020.0002] # SAMARITAN LETTER QUF -0813 ; [.235C.0020.0002] # SAMARITAN LETTER RISH -0814 ; [.235D.0020.0002] # SAMARITAN LETTER SHAN -0815 ; [.235E.0020.0002] # SAMARITAN LETTER TAAF -0816 ; [.235F.0020.0002] # SAMARITAN MARK IN -0817 ; [.2360.0020.0002] # SAMARITAN MARK IN-ALAF -081A ; [.2361.0020.0002] # SAMARITAN MODIFIER LETTER EPENTHETIC YUT -081B ; [.2362.0020.0002] # SAMARITAN MARK EPENTHETIC YUT -0621 ; [.2363.0020.0002] # ARABIC LETTER HAMZA -0674 ; [.2363.0020.0004] # ARABIC LETTER HIGH HAMZA -FE80 ; [.2363.0020.001A] # ARABIC LETTER HAMZA ISOLATED FORM -06FD ; [.2363.0020.0004][.0000.0112.0004] # ARABIC SIGN SINDHI AMPERSAND -0622 ; [.2364.0020.0002] # ARABIC LETTER ALEF WITH MADDA ABOVE -0627 0653 ; [.2364.0020.0002] # ARABIC LETTER ALEF WITH MADDA ABOVE -FE82 ; [.2364.0020.0019] # ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM -FE81 ; [.2364.0020.001A] # ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM -0623 ; [.2365.0020.0002] # ARABIC LETTER ALEF WITH HAMZA ABOVE -0627 0654 ; [.2365.0020.0002] # ARABIC LETTER ALEF WITH HAMZA ABOVE -FE84 ; [.2365.0020.0019] # ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM -FE83 ; [.2365.0020.001A] # ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM -0672 ; [.2366.0020.0002] # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE -0671 ; [.2367.0020.0002] # ARABIC LETTER ALEF WASLA -FB51 ; [.2367.0020.0019] # ARABIC LETTER ALEF WASLA FINAL FORM -FB50 ; [.2367.0020.001A] # ARABIC LETTER ALEF WASLA ISOLATED FORM -0624 ; [.2368.0020.0002] # ARABIC LETTER WAW WITH HAMZA ABOVE -0648 0654 ; [.2368.0020.0002] # ARABIC LETTER WAW WITH HAMZA ABOVE -FE86 ; [.2368.0020.0019] # ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM -FE85 ; [.2368.0020.001A] # ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM -0625 ; [.2369.0020.0002] # ARABIC LETTER ALEF WITH HAMZA BELOW -0627 0655 ; [.2369.0020.0002] # ARABIC LETTER ALEF WITH HAMZA BELOW -FE88 ; [.2369.0020.0019] # ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM -FE87 ; [.2369.0020.001A] # ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM -0673 ; [.236A.0020.0002] # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW -0773 ; [.236B.0020.0002] # ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE -0774 ; [.236C.0020.0002] # ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE -0626 ; [.236D.0020.0002] # ARABIC LETTER YEH WITH HAMZA ABOVE -064A 0654 ; [.236D.0020.0002] # ARABIC LETTER YEH WITH HAMZA ABOVE -FE8B ; [.236D.0020.0017] # ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM -FE8C ; [.236D.0020.0018] # ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM -FE8A ; [.236D.0020.0019] # ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM -FE89 ; [.236D.0020.001A] # ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM -FBEB ; [.236D.0020.0019][.2371.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM -FBEA ; [.236D.0020.001A][.2371.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM -FC97 ; [.236D.0020.0017][.238B.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM -FC00 ; [.236D.0020.001A][.238B.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM -FC98 ; [.236D.0020.0017][.2392.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM -FC01 ; [.236D.0020.001A][.2392.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM -FC99 ; [.236D.0020.0017][.2393.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM -FC64 ; [.236D.0020.0019][.23AC.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM -FC65 ; [.236D.0020.0019][.23AD.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM -FC9A ; [.236D.0020.0017][.2409.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM -FCDF ; [.236D.0020.0018][.2409.0020.0018] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM -FC66 ; [.236D.0020.0019][.2409.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM -FC02 ; [.236D.0020.001A][.2409.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM -FC67 ; [.236D.0020.0019][.240D.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM -FC9B ; [.236D.0020.0017][.2417.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM -FCE0 ; [.236D.0020.0018][.2417.0020.0018] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM -FBED ; [.236D.0020.0019][.241C.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM -FBEC ; [.236D.0020.001A][.241C.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM -FBEF ; [.236D.0020.0019][.241D.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM -FBEE ; [.236D.0020.001A][.241D.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM -FBF3 ; [.236D.0020.0019][.2420.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM -FBF2 ; [.236D.0020.001A][.2420.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM -FBF1 ; [.236D.0020.0019][.2421.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM -FBF0 ; [.236D.0020.001A][.2421.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM -FBF5 ; [.236D.0020.0019][.2422.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM -FBF4 ; [.236D.0020.001A][.2422.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM -FBFB ; [.236D.0020.0017][.242B.0020.0017] # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM -FBFA ; [.236D.0020.0019][.242B.0020.0019] # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM -FC68 ; [.236D.0020.0019][.242B.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM -FBF9 ; [.236D.0020.001A][.242B.0020.001A] # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM -FC03 ; [.236D.0020.001A][.242B.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM -FC69 ; [.236D.0020.0019][.242C.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM -FC04 ; [.236D.0020.001A][.242C.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM -FBF8 ; [.236D.0020.0017][.2430.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM -FBF7 ; [.236D.0020.0019][.2430.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM -FBF6 ; [.236D.0020.001A][.2430.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM -08A8 ; [.236E.0020.0002] # ARABIC LETTER YEH WITH TWO DOTS BELOW AND HAMZA ABOVE -08A9 ; [.236F.0020.0002] # ARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVE -08AC ; [.2370.0020.0002] # ARABIC LETTER ROHINGYA YEH -0627 ; [.2371.0020.0002] # ARABIC LETTER ALEF -08AD ; [.2371.0020.0004] # ARABIC LETTER LOW ALEF -1EE00 ; [.2371.0020.0005] # ARABIC MATHEMATICAL ALEF -1EE80 ; [.2371.0020.0005] # ARABIC MATHEMATICAL LOOPED ALEF -FE8E ; [.2371.0020.0019] # ARABIC LETTER ALEF FINAL FORM -FE8D ; [.2371.0020.001A] # ARABIC LETTER ALEF ISOLATED FORM -FD3C ; [.2371.0020.0019][.0000.006D.0019] # ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM -FD3D ; [.2371.0020.001A][.0000.006D.001A] # ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM -0675 ; [.2371.0020.0004][.2363.0020.0004] # ARABIC LETTER HIGH HAMZA ALEF -FDF3 ; [.2371.0020.001A][.23ED.0020.001A][.2373.0020.001A][.23AC.0020.001A] # ARABIC LIGATURE AKBAR ISOLATED FORM -FDF2 ; [.2371.0020.001A][.2402.0020.001A][.2402.0020.001A][.2417.0020.001A] # ARABIC LIGATURE ALLAH ISOLATED FORM -066E ; [.2372.0020.0002] # ARABIC LETTER DOTLESS BEH -1EE1C ; [.2372.0020.0005] # ARABIC MATHEMATICAL DOTLESS BEH -1EE7C ; [.2372.0020.0005] # ARABIC MATHEMATICAL STRETCHED DOTLESS BEH -0628 ; [.2373.0020.0002] # ARABIC LETTER BEH -1EE01 ; [.2373.0020.0005] # ARABIC MATHEMATICAL BEH -1EE21 ; [.2373.0020.0005] # ARABIC MATHEMATICAL INITIAL BEH -1EE61 ; [.2373.0020.0005] # ARABIC MATHEMATICAL STRETCHED BEH -1EE81 ; [.2373.0020.0005] # ARABIC MATHEMATICAL LOOPED BEH -1EEA1 ; [.2373.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK BEH -FE91 ; [.2373.0020.0017] # ARABIC LETTER BEH INITIAL FORM -FE92 ; [.2373.0020.0018] # ARABIC LETTER BEH MEDIAL FORM -FE90 ; [.2373.0020.0019] # ARABIC LETTER BEH FINAL FORM -FE8F ; [.2373.0020.001A] # ARABIC LETTER BEH ISOLATED FORM -FC9C ; [.2373.0020.0017][.238B.0020.0017] # ARABIC LIGATURE BEH WITH JEEM INITIAL FORM -FC05 ; [.2373.0020.001A][.238B.0020.001A] # ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM -FC9D ; [.2373.0020.0017][.2392.0020.0017] # ARABIC LIGATURE BEH WITH HAH INITIAL FORM -FC06 ; [.2373.0020.001A][.2392.0020.001A] # ARABIC LIGATURE BEH WITH HAH ISOLATED FORM -FDC2 ; [.2373.0020.0019][.2392.0020.0019][.242C.0020.0019] # ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM -FC9E ; [.2373.0020.0017][.2393.0020.0017] # ARABIC LIGATURE BEH WITH KHAH INITIAL FORM -FC07 ; [.2373.0020.001A][.2393.0020.001A] # ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM -FD9E ; [.2373.0020.0019][.2393.0020.0019][.242C.0020.0019] # ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM -FC6A ; [.2373.0020.0019][.23AC.0020.0019] # ARABIC LIGATURE BEH WITH REH FINAL FORM -FC6B ; [.2373.0020.0019][.23AD.0020.0019] # ARABIC LIGATURE BEH WITH ZAIN FINAL FORM -FC9F ; [.2373.0020.0017][.2409.0020.0017] # ARABIC LIGATURE BEH WITH MEEM INITIAL FORM -FCE1 ; [.2373.0020.0018][.2409.0020.0018] # ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM -FC6C ; [.2373.0020.0019][.2409.0020.0019] # ARABIC LIGATURE BEH WITH MEEM FINAL FORM -FC08 ; [.2373.0020.001A][.2409.0020.001A] # ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM -FC6D ; [.2373.0020.0019][.240D.0020.0019] # ARABIC LIGATURE BEH WITH NOON FINAL FORM -FCA0 ; [.2373.0020.0017][.2417.0020.0017] # ARABIC LIGATURE BEH WITH HEH INITIAL FORM -FCE2 ; [.2373.0020.0018][.2417.0020.0018] # ARABIC LIGATURE BEH WITH HEH MEDIAL FORM -FC6E ; [.2373.0020.0019][.242B.0020.0019] # ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM -FC09 ; [.2373.0020.001A][.242B.0020.001A] # ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM -FC6F ; [.2373.0020.0019][.242C.0020.0019] # ARABIC LIGATURE BEH WITH YEH FINAL FORM -FC0A ; [.2373.0020.001A][.242C.0020.001A] # ARABIC LIGATURE BEH WITH YEH ISOLATED FORM -067B ; [.2374.0020.0002] # ARABIC LETTER BEEH -FB54 ; [.2374.0020.0017] # ARABIC LETTER BEEH INITIAL FORM -FB55 ; [.2374.0020.0018] # ARABIC LETTER BEEH MEDIAL FORM -FB53 ; [.2374.0020.0019] # ARABIC LETTER BEEH FINAL FORM -FB52 ; [.2374.0020.001A] # ARABIC LETTER BEEH ISOLATED FORM -067E ; [.2375.0020.0002] # ARABIC LETTER PEH -FB58 ; [.2375.0020.0017] # ARABIC LETTER PEH INITIAL FORM -FB59 ; [.2375.0020.0018] # ARABIC LETTER PEH MEDIAL FORM -FB57 ; [.2375.0020.0019] # ARABIC LETTER PEH FINAL FORM -FB56 ; [.2375.0020.001A] # ARABIC LETTER PEH ISOLATED FORM -0680 ; [.2376.0020.0002] # ARABIC LETTER BEHEH -FB5C ; [.2376.0020.0017] # ARABIC LETTER BEHEH INITIAL FORM -FB5D ; [.2376.0020.0018] # ARABIC LETTER BEHEH MEDIAL FORM -FB5B ; [.2376.0020.0019] # ARABIC LETTER BEHEH FINAL FORM -FB5A ; [.2376.0020.001A] # ARABIC LETTER BEHEH ISOLATED FORM -0750 ; [.2377.0020.0002] # ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW -0751 ; [.2378.0020.0002] # ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE -0752 ; [.2379.0020.0002] # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW -0753 ; [.237A.0020.0002] # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE -0754 ; [.237B.0020.0002] # ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE -0755 ; [.237C.0020.0002] # ARABIC LETTER BEH WITH INVERTED SMALL V BELOW -08A0 ; [.237D.0020.0002] # ARABIC LETTER BEH WITH SMALL V BELOW -0756 ; [.237E.0020.0002] # ARABIC LETTER BEH WITH SMALL V -08A1 ; [.237F.0020.0002] # ARABIC LETTER BEH WITH HAMZA ABOVE -08B6 ; [.2380.0020.0002] # ARABIC LETTER BEH WITH SMALL MEEM ABOVE -08B7 ; [.2381.0020.0002] # ARABIC LETTER PEH WITH SMALL MEEM ABOVE -0629 ; [.2382.0020.0002] # ARABIC LETTER TEH MARBUTA -FE94 ; [.2382.0020.0019] # ARABIC LETTER TEH MARBUTA FINAL FORM -FE93 ; [.2382.0020.001A] # ARABIC LETTER TEH MARBUTA ISOLATED FORM -062A ; [.2383.0020.0002] # ARABIC LETTER TEH -1EE15 ; [.2383.0020.0005] # ARABIC MATHEMATICAL TEH -1EE35 ; [.2383.0020.0005] # ARABIC MATHEMATICAL INITIAL TEH -1EE75 ; [.2383.0020.0005] # ARABIC MATHEMATICAL STRETCHED TEH -1EE95 ; [.2383.0020.0005] # ARABIC MATHEMATICAL LOOPED TEH -1EEB5 ; [.2383.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK TEH -FE97 ; [.2383.0020.0017] # ARABIC LETTER TEH INITIAL FORM -FE98 ; [.2383.0020.0018] # ARABIC LETTER TEH MEDIAL FORM -FE96 ; [.2383.0020.0019] # ARABIC LETTER TEH FINAL FORM -FE95 ; [.2383.0020.001A] # ARABIC LETTER TEH ISOLATED FORM -FCA1 ; [.2383.0020.0017][.238B.0020.0017] # ARABIC LIGATURE TEH WITH JEEM INITIAL FORM -FC0B ; [.2383.0020.001A][.238B.0020.001A] # ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM -FD50 ; [.2383.0020.0017][.238B.0020.0017][.2409.0020.0017] # ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM -FDA0 ; [.2383.0020.0019][.238B.0020.0019][.242B.0020.0019] # ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM -FD9F ; [.2383.0020.0019][.238B.0020.0019][.242C.0020.0019] # ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM -FCA2 ; [.2383.0020.0017][.2392.0020.0017] # ARABIC LIGATURE TEH WITH HAH INITIAL FORM -FC0C ; [.2383.0020.001A][.2392.0020.001A] # ARABIC LIGATURE TEH WITH HAH ISOLATED FORM -FD52 ; [.2383.0020.0017][.2392.0020.0017][.238B.0020.0017] # ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM -FD51 ; [.2383.0020.0019][.2392.0020.0019][.238B.0020.0019] # ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM -FD53 ; [.2383.0020.0017][.2392.0020.0017][.2409.0020.0017] # ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM -FCA3 ; [.2383.0020.0017][.2393.0020.0017] # ARABIC LIGATURE TEH WITH KHAH INITIAL FORM -FC0D ; [.2383.0020.001A][.2393.0020.001A] # ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM -FD54 ; [.2383.0020.0017][.2393.0020.0017][.2409.0020.0017] # ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM -FDA2 ; [.2383.0020.0019][.2393.0020.0019][.242B.0020.0019] # ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM -FDA1 ; [.2383.0020.0019][.2393.0020.0019][.242C.0020.0019] # ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM -FC70 ; [.2383.0020.0019][.23AC.0020.0019] # ARABIC LIGATURE TEH WITH REH FINAL FORM -FC71 ; [.2383.0020.0019][.23AD.0020.0019] # ARABIC LIGATURE TEH WITH ZAIN FINAL FORM -FCA4 ; [.2383.0020.0017][.2409.0020.0017] # ARABIC LIGATURE TEH WITH MEEM INITIAL FORM -FCE3 ; [.2383.0020.0018][.2409.0020.0018] # ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM -FC72 ; [.2383.0020.0019][.2409.0020.0019] # ARABIC LIGATURE TEH WITH MEEM FINAL FORM -FC0E ; [.2383.0020.001A][.2409.0020.001A] # ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM -FD55 ; [.2383.0020.0017][.2409.0020.0017][.238B.0020.0017] # ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM -FD56 ; [.2383.0020.0017][.2409.0020.0017][.2392.0020.0017] # ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM -FD57 ; [.2383.0020.0017][.2409.0020.0017][.2393.0020.0017] # ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM -FDA4 ; [.2383.0020.0019][.2409.0020.0019][.242B.0020.0019] # ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM -FDA3 ; [.2383.0020.0019][.2409.0020.0019][.242C.0020.0019] # ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM -FC73 ; [.2383.0020.0019][.240D.0020.0019] # ARABIC LIGATURE TEH WITH NOON FINAL FORM -FCA5 ; [.2383.0020.0017][.2417.0020.0017] # ARABIC LIGATURE TEH WITH HEH INITIAL FORM -FCE4 ; [.2383.0020.0018][.2417.0020.0018] # ARABIC LIGATURE TEH WITH HEH MEDIAL FORM -FC74 ; [.2383.0020.0019][.242B.0020.0019] # ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM -FC0F ; [.2383.0020.001A][.242B.0020.001A] # ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM -FC75 ; [.2383.0020.0019][.242C.0020.0019] # ARABIC LIGATURE TEH WITH YEH FINAL FORM -FC10 ; [.2383.0020.001A][.242C.0020.001A] # ARABIC LIGATURE TEH WITH YEH ISOLATED FORM -062B ; [.2384.0020.0002] # ARABIC LETTER THEH -1EE16 ; [.2384.0020.0005] # ARABIC MATHEMATICAL THEH -1EE36 ; [.2384.0020.0005] # ARABIC MATHEMATICAL INITIAL THEH -1EE76 ; [.2384.0020.0005] # ARABIC MATHEMATICAL STRETCHED THEH -1EE96 ; [.2384.0020.0005] # ARABIC MATHEMATICAL LOOPED THEH -1EEB6 ; [.2384.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK THEH -FE9B ; [.2384.0020.0017] # ARABIC LETTER THEH INITIAL FORM -FE9C ; [.2384.0020.0018] # ARABIC LETTER THEH MEDIAL FORM -FE9A ; [.2384.0020.0019] # ARABIC LETTER THEH FINAL FORM -FE99 ; [.2384.0020.001A] # ARABIC LETTER THEH ISOLATED FORM -FC11 ; [.2384.0020.001A][.238B.0020.001A] # ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM -FC76 ; [.2384.0020.0019][.23AC.0020.0019] # ARABIC LIGATURE THEH WITH REH FINAL FORM -FC77 ; [.2384.0020.0019][.23AD.0020.0019] # ARABIC LIGATURE THEH WITH ZAIN FINAL FORM -FCA6 ; [.2384.0020.0017][.2409.0020.0017] # ARABIC LIGATURE THEH WITH MEEM INITIAL FORM -FCE5 ; [.2384.0020.0018][.2409.0020.0018] # ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM -FC78 ; [.2384.0020.0019][.2409.0020.0019] # ARABIC LIGATURE THEH WITH MEEM FINAL FORM -FC12 ; [.2384.0020.001A][.2409.0020.001A] # ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM -FC79 ; [.2384.0020.0019][.240D.0020.0019] # ARABIC LIGATURE THEH WITH NOON FINAL FORM -FCE6 ; [.2384.0020.0018][.2417.0020.0018] # ARABIC LIGATURE THEH WITH HEH MEDIAL FORM -FC7A ; [.2384.0020.0019][.242B.0020.0019] # ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM -FC13 ; [.2384.0020.001A][.242B.0020.001A] # ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM -FC7B ; [.2384.0020.0019][.242C.0020.0019] # ARABIC LIGATURE THEH WITH YEH FINAL FORM -FC14 ; [.2384.0020.001A][.242C.0020.001A] # ARABIC LIGATURE THEH WITH YEH ISOLATED FORM -0679 ; [.2385.0020.0002] # ARABIC LETTER TTEH -FB68 ; [.2385.0020.0017] # ARABIC LETTER TTEH INITIAL FORM -FB69 ; [.2385.0020.0018] # ARABIC LETTER TTEH MEDIAL FORM -FB67 ; [.2385.0020.0019] # ARABIC LETTER TTEH FINAL FORM -FB66 ; [.2385.0020.001A] # ARABIC LETTER TTEH ISOLATED FORM -067A ; [.2386.0020.0002] # ARABIC LETTER TTEHEH -FB60 ; [.2386.0020.0017] # ARABIC LETTER TTEHEH INITIAL FORM -FB61 ; [.2386.0020.0018] # ARABIC LETTER TTEHEH MEDIAL FORM -FB5F ; [.2386.0020.0019] # ARABIC LETTER TTEHEH FINAL FORM -FB5E ; [.2386.0020.001A] # ARABIC LETTER TTEHEH ISOLATED FORM -067C ; [.2387.0020.0002] # ARABIC LETTER TEH WITH RING -067D ; [.2388.0020.0002] # ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS -067F ; [.2389.0020.0002] # ARABIC LETTER TEHEH -FB64 ; [.2389.0020.0017] # ARABIC LETTER TEHEH INITIAL FORM -FB65 ; [.2389.0020.0018] # ARABIC LETTER TEHEH MEDIAL FORM -FB63 ; [.2389.0020.0019] # ARABIC LETTER TEHEH FINAL FORM -FB62 ; [.2389.0020.001A] # ARABIC LETTER TEHEH ISOLATED FORM -08B8 ; [.238A.0020.0002] # ARABIC LETTER TEH WITH SMALL TEH ABOVE -062C ; [.238B.0020.0002] # ARABIC LETTER JEEM -1EE02 ; [.238B.0020.0005] # ARABIC MATHEMATICAL JEEM -1EE22 ; [.238B.0020.0005] # ARABIC MATHEMATICAL INITIAL JEEM -1EE42 ; [.238B.0020.0005] # ARABIC MATHEMATICAL TAILED JEEM -1EE62 ; [.238B.0020.0005] # ARABIC MATHEMATICAL STRETCHED JEEM -1EE82 ; [.238B.0020.0005] # ARABIC MATHEMATICAL LOOPED JEEM -1EEA2 ; [.238B.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK JEEM -FE9F ; [.238B.0020.0017] # ARABIC LETTER JEEM INITIAL FORM -FEA0 ; [.238B.0020.0018] # ARABIC LETTER JEEM MEDIAL FORM -FE9E ; [.238B.0020.0019] # ARABIC LETTER JEEM FINAL FORM -FE9D ; [.238B.0020.001A] # ARABIC LETTER JEEM ISOLATED FORM -FCA7 ; [.238B.0020.0017][.2392.0020.0017] # ARABIC LIGATURE JEEM WITH HAH INITIAL FORM -FC15 ; [.238B.0020.001A][.2392.0020.001A] # ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM -FDA6 ; [.238B.0020.0019][.2392.0020.0019][.242B.0020.0019] # ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM -FDBE ; [.238B.0020.0019][.2392.0020.0019][.242C.0020.0019] # ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM -FDFB ; [.238B.0020.001A][.2402.0020.001A][*0209.0020.001A][.238B.0020.001A][.2402.0020.001A][.2371.0020.001A][.2402.0020.001A][.2417.0020.001A] # ARABIC LIGATURE JALLAJALALOUHOU -FCA8 ; [.238B.0020.0017][.2409.0020.0017] # ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM -FC16 ; [.238B.0020.001A][.2409.0020.001A] # ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM -FD59 ; [.238B.0020.0017][.2409.0020.0017][.2392.0020.0017] # ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM -FD58 ; [.238B.0020.0019][.2409.0020.0019][.2392.0020.0019] # ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM -FDA7 ; [.238B.0020.0019][.2409.0020.0019][.242B.0020.0019] # ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM -FDA5 ; [.238B.0020.0019][.2409.0020.0019][.242C.0020.0019] # ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM -FD1D ; [.238B.0020.0019][.242B.0020.0019] # ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM -FD01 ; [.238B.0020.001A][.242B.0020.001A] # ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM -FD1E ; [.238B.0020.0019][.242C.0020.0019] # ARABIC LIGATURE JEEM WITH YEH FINAL FORM -FD02 ; [.238B.0020.001A][.242C.0020.001A] # ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM -0683 ; [.238C.0020.0002] # ARABIC LETTER NYEH -FB78 ; [.238C.0020.0017] # ARABIC LETTER NYEH INITIAL FORM -FB79 ; [.238C.0020.0018] # ARABIC LETTER NYEH MEDIAL FORM -FB77 ; [.238C.0020.0019] # ARABIC LETTER NYEH FINAL FORM -FB76 ; [.238C.0020.001A] # ARABIC LETTER NYEH ISOLATED FORM -0684 ; [.238D.0020.0002] # ARABIC LETTER DYEH -FB74 ; [.238D.0020.0017] # ARABIC LETTER DYEH INITIAL FORM -FB75 ; [.238D.0020.0018] # ARABIC LETTER DYEH MEDIAL FORM -FB73 ; [.238D.0020.0019] # ARABIC LETTER DYEH FINAL FORM -FB72 ; [.238D.0020.001A] # ARABIC LETTER DYEH ISOLATED FORM -0686 ; [.238E.0020.0002] # ARABIC LETTER TCHEH -FB7C ; [.238E.0020.0017] # ARABIC LETTER TCHEH INITIAL FORM -FB7D ; [.238E.0020.0018] # ARABIC LETTER TCHEH MEDIAL FORM -FB7B ; [.238E.0020.0019] # ARABIC LETTER TCHEH FINAL FORM -FB7A ; [.238E.0020.001A] # ARABIC LETTER TCHEH ISOLATED FORM -06BF ; [.238F.0020.0002] # ARABIC LETTER TCHEH WITH DOT ABOVE -0687 ; [.2390.0020.0002] # ARABIC LETTER TCHEHEH -FB80 ; [.2390.0020.0017] # ARABIC LETTER TCHEHEH INITIAL FORM -FB81 ; [.2390.0020.0018] # ARABIC LETTER TCHEHEH MEDIAL FORM -FB7F ; [.2390.0020.0019] # ARABIC LETTER TCHEHEH FINAL FORM -FB7E ; [.2390.0020.001A] # ARABIC LETTER TCHEHEH ISOLATED FORM -08A2 ; [.2391.0020.0002] # ARABIC LETTER JEEM WITH TWO DOTS ABOVE -062D ; [.2392.0020.0002] # ARABIC LETTER HAH -1EE07 ; [.2392.0020.0005] # ARABIC MATHEMATICAL HAH -1EE27 ; [.2392.0020.0005] # ARABIC MATHEMATICAL INITIAL HAH -1EE47 ; [.2392.0020.0005] # ARABIC MATHEMATICAL TAILED HAH -1EE67 ; [.2392.0020.0005] # ARABIC MATHEMATICAL STRETCHED HAH -1EE87 ; [.2392.0020.0005] # ARABIC MATHEMATICAL LOOPED HAH -1EEA7 ; [.2392.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK HAH -FEA3 ; [.2392.0020.0017] # ARABIC LETTER HAH INITIAL FORM -FEA4 ; [.2392.0020.0018] # ARABIC LETTER HAH MEDIAL FORM -FEA2 ; [.2392.0020.0019] # ARABIC LETTER HAH FINAL FORM -FEA1 ; [.2392.0020.001A] # ARABIC LETTER HAH ISOLATED FORM -FCA9 ; [.2392.0020.0017][.238B.0020.0017] # ARABIC LIGATURE HAH WITH JEEM INITIAL FORM -FC17 ; [.2392.0020.001A][.238B.0020.001A] # ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM -FDBF ; [.2392.0020.0019][.238B.0020.0019][.242C.0020.0019] # ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM -FCAA ; [.2392.0020.0017][.2409.0020.0017] # ARABIC LIGATURE HAH WITH MEEM INITIAL FORM -FC18 ; [.2392.0020.001A][.2409.0020.001A] # ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM -FD5B ; [.2392.0020.0019][.2409.0020.0019][.242B.0020.0019] # ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM -FD5A ; [.2392.0020.0019][.2409.0020.0019][.242C.0020.0019] # ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM -FD1B ; [.2392.0020.0019][.242B.0020.0019] # ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM -FCFF ; [.2392.0020.001A][.242B.0020.001A] # ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM -FD1C ; [.2392.0020.0019][.242C.0020.0019] # ARABIC LIGATURE HAH WITH YEH FINAL FORM -FD00 ; [.2392.0020.001A][.242C.0020.001A] # ARABIC LIGATURE HAH WITH YEH ISOLATED FORM -062E ; [.2393.0020.0002] # ARABIC LETTER KHAH -1EE17 ; [.2393.0020.0005] # ARABIC MATHEMATICAL KHAH -1EE37 ; [.2393.0020.0005] # ARABIC MATHEMATICAL INITIAL KHAH -1EE57 ; [.2393.0020.0005] # ARABIC MATHEMATICAL TAILED KHAH -1EE77 ; [.2393.0020.0005] # ARABIC MATHEMATICAL STRETCHED KHAH -1EE97 ; [.2393.0020.0005] # ARABIC MATHEMATICAL LOOPED KHAH -1EEB7 ; [.2393.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK KHAH -FEA7 ; [.2393.0020.0017] # ARABIC LETTER KHAH INITIAL FORM -FEA8 ; [.2393.0020.0018] # ARABIC LETTER KHAH MEDIAL FORM -FEA6 ; [.2393.0020.0019] # ARABIC LETTER KHAH FINAL FORM -FEA5 ; [.2393.0020.001A] # ARABIC LETTER KHAH ISOLATED FORM -FCAB ; [.2393.0020.0017][.238B.0020.0017] # ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM -FC19 ; [.2393.0020.001A][.238B.0020.001A] # ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM -FC1A ; [.2393.0020.001A][.2392.0020.001A] # ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM -FCAC ; [.2393.0020.0017][.2409.0020.0017] # ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM -FC1B ; [.2393.0020.001A][.2409.0020.001A] # ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM -FD1F ; [.2393.0020.0019][.242B.0020.0019] # ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM -FD03 ; [.2393.0020.001A][.242B.0020.001A] # ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM -FD20 ; [.2393.0020.0019][.242C.0020.0019] # ARABIC LIGATURE KHAH WITH YEH FINAL FORM -FD04 ; [.2393.0020.001A][.242C.0020.001A] # ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM -0681 ; [.2394.0020.0002] # ARABIC LETTER HAH WITH HAMZA ABOVE -0682 ; [.2395.0020.0002] # ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE -0685 ; [.2396.0020.0002] # ARABIC LETTER HAH WITH THREE DOTS ABOVE -0757 ; [.2397.0020.0002] # ARABIC LETTER HAH WITH TWO DOTS ABOVE -0758 ; [.2398.0020.0002] # ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW -076E ; [.2399.0020.0002] # ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW -076F ; [.239A.0020.0002] # ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS -0772 ; [.239B.0020.0002] # ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE -077C ; [.239C.0020.0002] # ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW -062F ; [.239D.0020.0002] # ARABIC LETTER DAL -1EE03 ; [.239D.0020.0005] # ARABIC MATHEMATICAL DAL -1EE83 ; [.239D.0020.0005] # ARABIC MATHEMATICAL LOOPED DAL -1EEA3 ; [.239D.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK DAL -FEAA ; [.239D.0020.0019] # ARABIC LETTER DAL FINAL FORM -FEA9 ; [.239D.0020.001A] # ARABIC LETTER DAL ISOLATED FORM -0630 ; [.239E.0020.0002] # ARABIC LETTER THAL -1EE18 ; [.239E.0020.0005] # ARABIC MATHEMATICAL THAL -1EE98 ; [.239E.0020.0005] # ARABIC MATHEMATICAL LOOPED THAL -1EEB8 ; [.239E.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK THAL -FEAC ; [.239E.0020.0019] # ARABIC LETTER THAL FINAL FORM -FEAB ; [.239E.0020.001A] # ARABIC LETTER THAL ISOLATED FORM -FC5B ; [.239E.0020.001A][.0000.0098.001A] # ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM -0688 ; [.239F.0020.0002] # ARABIC LETTER DDAL -FB89 ; [.239F.0020.0019] # ARABIC LETTER DDAL FINAL FORM -FB88 ; [.239F.0020.001A] # ARABIC LETTER DDAL ISOLATED FORM -0689 ; [.23A0.0020.0002] # ARABIC LETTER DAL WITH RING -068A ; [.23A1.0020.0002] # ARABIC LETTER DAL WITH DOT BELOW -068B ; [.23A2.0020.0002] # ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH -068C ; [.23A3.0020.0002] # ARABIC LETTER DAHAL -FB85 ; [.23A3.0020.0019] # ARABIC LETTER DAHAL FINAL FORM -FB84 ; [.23A3.0020.001A] # ARABIC LETTER DAHAL ISOLATED FORM -068D ; [.23A4.0020.0002] # ARABIC LETTER DDAHAL -FB83 ; [.23A4.0020.0019] # ARABIC LETTER DDAHAL FINAL FORM -FB82 ; [.23A4.0020.001A] # ARABIC LETTER DDAHAL ISOLATED FORM -08AE ; [.23A5.0020.0002] # ARABIC LETTER DAL WITH THREE DOTS BELOW -068E ; [.23A6.0020.0002] # ARABIC LETTER DUL -FB87 ; [.23A6.0020.0019] # ARABIC LETTER DUL FINAL FORM -FB86 ; [.23A6.0020.001A] # ARABIC LETTER DUL ISOLATED FORM -068F ; [.23A7.0020.0002] # ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS -0690 ; [.23A8.0020.0002] # ARABIC LETTER DAL WITH FOUR DOTS ABOVE -06EE ; [.23A9.0020.0002] # ARABIC LETTER DAL WITH INVERTED V -0759 ; [.23AA.0020.0002] # ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH -075A ; [.23AB.0020.0002] # ARABIC LETTER DAL WITH INVERTED SMALL V BELOW -0631 ; [.23AC.0020.0002] # ARABIC LETTER REH -1EE13 ; [.23AC.0020.0005] # ARABIC MATHEMATICAL REH -1EE93 ; [.23AC.0020.0005] # ARABIC MATHEMATICAL LOOPED REH -1EEB3 ; [.23AC.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK REH -FEAE ; [.23AC.0020.0019] # ARABIC LETTER REH FINAL FORM -FEAD ; [.23AC.0020.001A] # ARABIC LETTER REH ISOLATED FORM -FC5C ; [.23AC.0020.001A][.0000.0098.001A] # ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM -FDF6 ; [.23AC.0020.001A][.23BF.0020.001A][.241D.0020.001A][.2402.0020.001A] # ARABIC LIGATURE RASOUL ISOLATED FORM -FDFC ; [.23AC.0020.001A][.242D.0020.001A][.2371.0020.001A][.2402.0020.001A] # RIAL SIGN -0632 ; [.23AD.0020.0002] # ARABIC LETTER ZAIN -1EE06 ; [.23AD.0020.0005] # ARABIC MATHEMATICAL ZAIN -1EE86 ; [.23AD.0020.0005] # ARABIC MATHEMATICAL LOOPED ZAIN -1EEA6 ; [.23AD.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK ZAIN -FEB0 ; [.23AD.0020.0019] # ARABIC LETTER ZAIN FINAL FORM -FEAF ; [.23AD.0020.001A] # ARABIC LETTER ZAIN ISOLATED FORM -0691 ; [.23AE.0020.0002] # ARABIC LETTER RREH -FB8D ; [.23AE.0020.0019] # ARABIC LETTER RREH FINAL FORM -FB8C ; [.23AE.0020.001A] # ARABIC LETTER RREH ISOLATED FORM -0692 ; [.23AF.0020.0002] # ARABIC LETTER REH WITH SMALL V -0693 ; [.23B0.0020.0002] # ARABIC LETTER REH WITH RING -0694 ; [.23B1.0020.0002] # ARABIC LETTER REH WITH DOT BELOW -0695 ; [.23B2.0020.0002] # ARABIC LETTER REH WITH SMALL V BELOW -0696 ; [.23B3.0020.0002] # ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE -0697 ; [.23B4.0020.0002] # ARABIC LETTER REH WITH TWO DOTS ABOVE -0698 ; [.23B5.0020.0002] # ARABIC LETTER JEH -FB8B ; [.23B5.0020.0019] # ARABIC LETTER JEH FINAL FORM -FB8A ; [.23B5.0020.001A] # ARABIC LETTER JEH ISOLATED FORM -0699 ; [.23B6.0020.0002] # ARABIC LETTER REH WITH FOUR DOTS ABOVE -06EF ; [.23B7.0020.0002] # ARABIC LETTER REH WITH INVERTED V -075B ; [.23B8.0020.0002] # ARABIC LETTER REH WITH STROKE -076B ; [.23B9.0020.0002] # ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE -076C ; [.23BA.0020.0002] # ARABIC LETTER REH WITH HAMZA ABOVE -0771 ; [.23BB.0020.0002] # ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS -08AA ; [.23BC.0020.0002] # ARABIC LETTER REH WITH LOOP -08B2 ; [.23BD.0020.0002] # ARABIC LETTER ZAIN WITH INVERTED V ABOVE -08B9 ; [.23BE.0020.0002] # ARABIC LETTER REH WITH SMALL NOON ABOVE -0633 ; [.23BF.0020.0002] # ARABIC LETTER SEEN -1EE0E ; [.23BF.0020.0005] # ARABIC MATHEMATICAL SEEN -1EE2E ; [.23BF.0020.0005] # ARABIC MATHEMATICAL INITIAL SEEN -1EE4E ; [.23BF.0020.0005] # ARABIC MATHEMATICAL TAILED SEEN -1EE6E ; [.23BF.0020.0005] # ARABIC MATHEMATICAL STRETCHED SEEN -1EE8E ; [.23BF.0020.0005] # ARABIC MATHEMATICAL LOOPED SEEN -1EEAE ; [.23BF.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK SEEN -FEB3 ; [.23BF.0020.0017] # ARABIC LETTER SEEN INITIAL FORM -FEB4 ; [.23BF.0020.0018] # ARABIC LETTER SEEN MEDIAL FORM -FEB2 ; [.23BF.0020.0019] # ARABIC LETTER SEEN FINAL FORM -FEB1 ; [.23BF.0020.001A] # ARABIC LETTER SEEN ISOLATED FORM -FCAD ; [.23BF.0020.0017][.238B.0020.0017] # ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM -FD34 ; [.23BF.0020.0018][.238B.0020.0018] # ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM -FC1C ; [.23BF.0020.001A][.238B.0020.001A] # ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM -FD5D ; [.23BF.0020.0017][.238B.0020.0017][.2392.0020.0017] # ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM -FD5E ; [.23BF.0020.0019][.238B.0020.0019][.242B.0020.0019] # ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM -FCAE ; [.23BF.0020.0017][.2392.0020.0017] # ARABIC LIGATURE SEEN WITH HAH INITIAL FORM -FD35 ; [.23BF.0020.0018][.2392.0020.0018] # ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM -FC1D ; [.23BF.0020.001A][.2392.0020.001A] # ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM -FD5C ; [.23BF.0020.0017][.2392.0020.0017][.238B.0020.0017] # ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM -FCAF ; [.23BF.0020.0017][.2393.0020.0017] # ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM -FD36 ; [.23BF.0020.0018][.2393.0020.0018] # ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM -FC1E ; [.23BF.0020.001A][.2393.0020.001A] # ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM -FDA8 ; [.23BF.0020.0019][.2393.0020.0019][.242B.0020.0019] # ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM -FDC6 ; [.23BF.0020.0019][.2393.0020.0019][.242C.0020.0019] # ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM -FD2A ; [.23BF.0020.0019][.23AC.0020.0019] # ARABIC LIGATURE SEEN WITH REH FINAL FORM -FD0E ; [.23BF.0020.001A][.23AC.0020.001A] # ARABIC LIGATURE SEEN WITH REH ISOLATED FORM -FCB0 ; [.23BF.0020.0017][.2409.0020.0017] # ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM -FCE7 ; [.23BF.0020.0018][.2409.0020.0018] # ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM -FC1F ; [.23BF.0020.001A][.2409.0020.001A] # ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM -FD61 ; [.23BF.0020.0017][.2409.0020.0017][.238B.0020.0017] # ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM -FD60 ; [.23BF.0020.0017][.2409.0020.0017][.2392.0020.0017] # ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM -FD5F ; [.23BF.0020.0019][.2409.0020.0019][.2392.0020.0019] # ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM -FD63 ; [.23BF.0020.0017][.2409.0020.0017][.2409.0020.0017] # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM -FD62 ; [.23BF.0020.0019][.2409.0020.0019][.2409.0020.0019] # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM -FD31 ; [.23BF.0020.0017][.2417.0020.0017] # ARABIC LIGATURE SEEN WITH HEH INITIAL FORM -FCE8 ; [.23BF.0020.0018][.2417.0020.0018] # ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM -FD17 ; [.23BF.0020.0019][.242B.0020.0019] # ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM -FCFB ; [.23BF.0020.001A][.242B.0020.001A] # ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM -FD18 ; [.23BF.0020.0019][.242C.0020.0019] # ARABIC LIGATURE SEEN WITH YEH FINAL FORM -FCFC ; [.23BF.0020.001A][.242C.0020.001A] # ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM -0634 ; [.23C0.0020.0002] # ARABIC LETTER SHEEN -1EE14 ; [.23C0.0020.0005] # ARABIC MATHEMATICAL SHEEN -1EE34 ; [.23C0.0020.0005] # ARABIC MATHEMATICAL INITIAL SHEEN -1EE54 ; [.23C0.0020.0005] # ARABIC MATHEMATICAL TAILED SHEEN -1EE74 ; [.23C0.0020.0005] # ARABIC MATHEMATICAL STRETCHED SHEEN -1EE94 ; [.23C0.0020.0005] # ARABIC MATHEMATICAL LOOPED SHEEN -1EEB4 ; [.23C0.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK SHEEN -FEB7 ; [.23C0.0020.0017] # ARABIC LETTER SHEEN INITIAL FORM -FEB8 ; [.23C0.0020.0018] # ARABIC LETTER SHEEN MEDIAL FORM -FEB6 ; [.23C0.0020.0019] # ARABIC LETTER SHEEN FINAL FORM -FEB5 ; [.23C0.0020.001A] # ARABIC LETTER SHEEN ISOLATED FORM -FD2D ; [.23C0.0020.0017][.238B.0020.0017] # ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM -FD37 ; [.23C0.0020.0018][.238B.0020.0018] # ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM -FD25 ; [.23C0.0020.0019][.238B.0020.0019] # ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM -FD09 ; [.23C0.0020.001A][.238B.0020.001A] # ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM -FD69 ; [.23C0.0020.0019][.238B.0020.0019][.242C.0020.0019] # ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM -FD2E ; [.23C0.0020.0017][.2392.0020.0017] # ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM -FD38 ; [.23C0.0020.0018][.2392.0020.0018] # ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM -FD26 ; [.23C0.0020.0019][.2392.0020.0019] # ARABIC LIGATURE SHEEN WITH HAH FINAL FORM -FD0A ; [.23C0.0020.001A][.2392.0020.001A] # ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM -FD68 ; [.23C0.0020.0017][.2392.0020.0017][.2409.0020.0017] # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM -FD67 ; [.23C0.0020.0019][.2392.0020.0019][.2409.0020.0019] # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM -FDAA ; [.23C0.0020.0019][.2392.0020.0019][.242C.0020.0019] # ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM -FD2F ; [.23C0.0020.0017][.2393.0020.0017] # ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM -FD39 ; [.23C0.0020.0018][.2393.0020.0018] # ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM -FD27 ; [.23C0.0020.0019][.2393.0020.0019] # ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM -FD0B ; [.23C0.0020.001A][.2393.0020.001A] # ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM -FD29 ; [.23C0.0020.0019][.23AC.0020.0019] # ARABIC LIGATURE SHEEN WITH REH FINAL FORM -FD0D ; [.23C0.0020.001A][.23AC.0020.001A] # ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM -FD30 ; [.23C0.0020.0017][.2409.0020.0017] # ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM -FCE9 ; [.23C0.0020.0018][.2409.0020.0018] # ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM -FD28 ; [.23C0.0020.0019][.2409.0020.0019] # ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM -FD0C ; [.23C0.0020.001A][.2409.0020.001A] # ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM -FD6B ; [.23C0.0020.0017][.2409.0020.0017][.2393.0020.0017] # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM -FD6A ; [.23C0.0020.0019][.2409.0020.0019][.2393.0020.0019] # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM -FD6D ; [.23C0.0020.0017][.2409.0020.0017][.2409.0020.0017] # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM -FD6C ; [.23C0.0020.0019][.2409.0020.0019][.2409.0020.0019] # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM -FD32 ; [.23C0.0020.0017][.2417.0020.0017] # ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM -FCEA ; [.23C0.0020.0018][.2417.0020.0018] # ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM -FD19 ; [.23C0.0020.0019][.242B.0020.0019] # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM -FCFD ; [.23C0.0020.001A][.242B.0020.001A] # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM -FD1A ; [.23C0.0020.0019][.242C.0020.0019] # ARABIC LIGATURE SHEEN WITH YEH FINAL FORM -FCFE ; [.23C0.0020.001A][.242C.0020.001A] # ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM -069A ; [.23C1.0020.0002] # ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE -069B ; [.23C2.0020.0002] # ARABIC LETTER SEEN WITH THREE DOTS BELOW -069C ; [.23C3.0020.0002] # ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE -06FA ; [.23C4.0020.0002] # ARABIC LETTER SHEEN WITH DOT BELOW -075C ; [.23C5.0020.0002] # ARABIC LETTER SEEN WITH FOUR DOTS ABOVE -076D ; [.23C6.0020.0002] # ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE -0770 ; [.23C7.0020.0002] # ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS -077D ; [.23C8.0020.0002] # ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE -077E ; [.23C9.0020.0002] # ARABIC LETTER SEEN WITH INVERTED V -0635 ; [.23CA.0020.0002] # ARABIC LETTER SAD -1EE11 ; [.23CA.0020.0005] # ARABIC MATHEMATICAL SAD -1EE31 ; [.23CA.0020.0005] # ARABIC MATHEMATICAL INITIAL SAD -1EE51 ; [.23CA.0020.0005] # ARABIC MATHEMATICAL TAILED SAD -1EE71 ; [.23CA.0020.0005] # ARABIC MATHEMATICAL STRETCHED SAD -1EE91 ; [.23CA.0020.0005] # ARABIC MATHEMATICAL LOOPED SAD -1EEB1 ; [.23CA.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK SAD -FEBB ; [.23CA.0020.0017] # ARABIC LETTER SAD INITIAL FORM -FEBC ; [.23CA.0020.0018] # ARABIC LETTER SAD MEDIAL FORM -FEBA ; [.23CA.0020.0019] # ARABIC LETTER SAD FINAL FORM -FEB9 ; [.23CA.0020.001A] # ARABIC LETTER SAD ISOLATED FORM -FCB1 ; [.23CA.0020.0017][.2392.0020.0017] # ARABIC LIGATURE SAD WITH HAH INITIAL FORM -FC20 ; [.23CA.0020.001A][.2392.0020.001A] # ARABIC LIGATURE SAD WITH HAH ISOLATED FORM -FD65 ; [.23CA.0020.0017][.2392.0020.0017][.2392.0020.0017] # ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM -FD64 ; [.23CA.0020.0019][.2392.0020.0019][.2392.0020.0019] # ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM -FDA9 ; [.23CA.0020.0019][.2392.0020.0019][.242C.0020.0019] # ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM -FCB2 ; [.23CA.0020.0017][.2393.0020.0017] # ARABIC LIGATURE SAD WITH KHAH INITIAL FORM -FD2B ; [.23CA.0020.0019][.23AC.0020.0019] # ARABIC LIGATURE SAD WITH REH FINAL FORM -FD0F ; [.23CA.0020.001A][.23AC.0020.001A] # ARABIC LIGATURE SAD WITH REH ISOLATED FORM -FDF5 ; [.23CA.0020.001A][.2402.0020.001A][.23D4.0020.001A][.2409.0020.001A] # ARABIC LIGATURE SALAM ISOLATED FORM -FDF9 ; [.23CA.0020.001A][.2402.0020.001A][.242B.0020.001A] # ARABIC LIGATURE SALLA ISOLATED FORM -FDFA ; [.23CA.0020.001A][.2402.0020.001A][.242B.0020.001A][*0209.0020.001A][.2371.0020.001A][.2402.0020.001A][.2402.0020.001A][.2417.0020.001A][*0209.0020.001A][.23D4.0020.001A][.2402.0020.001A][.242C.0020.001A][.2417.0020.001A][*0209.0020.001A][.241D.0020.001A][.23BF.0020.001A][.2402.0020.001A][.2409.0020.001A] # ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM -FDF0 ; [.23CA.0020.001A][.2402.0020.001A][.243A.0020.001A] # ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM -FCB3 ; [.23CA.0020.0017][.2409.0020.0017] # ARABIC LIGATURE SAD WITH MEEM INITIAL FORM -FC21 ; [.23CA.0020.001A][.2409.0020.001A] # ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM -FDC5 ; [.23CA.0020.0017][.2409.0020.0017][.2409.0020.0017] # ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM -FD66 ; [.23CA.0020.0019][.2409.0020.0019][.2409.0020.0019] # ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM -FD21 ; [.23CA.0020.0019][.242B.0020.0019] # ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM -FD05 ; [.23CA.0020.001A][.242B.0020.001A] # ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM -FD22 ; [.23CA.0020.0019][.242C.0020.0019] # ARABIC LIGATURE SAD WITH YEH FINAL FORM -FD06 ; [.23CA.0020.001A][.242C.0020.001A] # ARABIC LIGATURE SAD WITH YEH ISOLATED FORM -0636 ; [.23CB.0020.0002] # ARABIC LETTER DAD -1EE19 ; [.23CB.0020.0005] # ARABIC MATHEMATICAL DAD -1EE39 ; [.23CB.0020.0005] # ARABIC MATHEMATICAL INITIAL DAD -1EE59 ; [.23CB.0020.0005] # ARABIC MATHEMATICAL TAILED DAD -1EE79 ; [.23CB.0020.0005] # ARABIC MATHEMATICAL STRETCHED DAD -1EE99 ; [.23CB.0020.0005] # ARABIC MATHEMATICAL LOOPED DAD -1EEB9 ; [.23CB.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK DAD -FEBF ; [.23CB.0020.0017] # ARABIC LETTER DAD INITIAL FORM -FEC0 ; [.23CB.0020.0018] # ARABIC LETTER DAD MEDIAL FORM -FEBE ; [.23CB.0020.0019] # ARABIC LETTER DAD FINAL FORM -FEBD ; [.23CB.0020.001A] # ARABIC LETTER DAD ISOLATED FORM -FCB4 ; [.23CB.0020.0017][.238B.0020.0017] # ARABIC LIGATURE DAD WITH JEEM INITIAL FORM -FC22 ; [.23CB.0020.001A][.238B.0020.001A] # ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM -FCB5 ; [.23CB.0020.0017][.2392.0020.0017] # ARABIC LIGATURE DAD WITH HAH INITIAL FORM -FC23 ; [.23CB.0020.001A][.2392.0020.001A] # ARABIC LIGATURE DAD WITH HAH ISOLATED FORM -FD6E ; [.23CB.0020.0019][.2392.0020.0019][.242B.0020.0019] # ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM -FDAB ; [.23CB.0020.0019][.2392.0020.0019][.242C.0020.0019] # ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM -FCB6 ; [.23CB.0020.0017][.2393.0020.0017] # ARABIC LIGATURE DAD WITH KHAH INITIAL FORM -FC24 ; [.23CB.0020.001A][.2393.0020.001A] # ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM -FD70 ; [.23CB.0020.0017][.2393.0020.0017][.2409.0020.0017] # ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM -FD6F ; [.23CB.0020.0019][.2393.0020.0019][.2409.0020.0019] # ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM -FD2C ; [.23CB.0020.0019][.23AC.0020.0019] # ARABIC LIGATURE DAD WITH REH FINAL FORM -FD10 ; [.23CB.0020.001A][.23AC.0020.001A] # ARABIC LIGATURE DAD WITH REH ISOLATED FORM -FCB7 ; [.23CB.0020.0017][.2409.0020.0017] # ARABIC LIGATURE DAD WITH MEEM INITIAL FORM -FC25 ; [.23CB.0020.001A][.2409.0020.001A] # ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM -FD23 ; [.23CB.0020.0019][.242B.0020.0019] # ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM -FD07 ; [.23CB.0020.001A][.242B.0020.001A] # ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM -FD24 ; [.23CB.0020.0019][.242C.0020.0019] # ARABIC LIGATURE DAD WITH YEH FINAL FORM -FD08 ; [.23CB.0020.001A][.242C.0020.001A] # ARABIC LIGATURE DAD WITH YEH ISOLATED FORM -069D ; [.23CC.0020.0002] # ARABIC LETTER SAD WITH TWO DOTS BELOW -08AF ; [.23CD.0020.0002] # ARABIC LETTER SAD WITH THREE DOTS BELOW -069E ; [.23CE.0020.0002] # ARABIC LETTER SAD WITH THREE DOTS ABOVE -06FB ; [.23CF.0020.0002] # ARABIC LETTER DAD WITH DOT BELOW -0637 ; [.23D0.0020.0002] # ARABIC LETTER TAH -1EE08 ; [.23D0.0020.0005] # ARABIC MATHEMATICAL TAH -1EE68 ; [.23D0.0020.0005] # ARABIC MATHEMATICAL STRETCHED TAH -1EE88 ; [.23D0.0020.0005] # ARABIC MATHEMATICAL LOOPED TAH -1EEA8 ; [.23D0.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK TAH -FEC3 ; [.23D0.0020.0017] # ARABIC LETTER TAH INITIAL FORM -FEC4 ; [.23D0.0020.0018] # ARABIC LETTER TAH MEDIAL FORM -FEC2 ; [.23D0.0020.0019] # ARABIC LETTER TAH FINAL FORM -FEC1 ; [.23D0.0020.001A] # ARABIC LETTER TAH ISOLATED FORM -FCB8 ; [.23D0.0020.0017][.2392.0020.0017] # ARABIC LIGATURE TAH WITH HAH INITIAL FORM -FC26 ; [.23D0.0020.001A][.2392.0020.001A] # ARABIC LIGATURE TAH WITH HAH ISOLATED FORM -FD33 ; [.23D0.0020.0017][.2409.0020.0017] # ARABIC LIGATURE TAH WITH MEEM INITIAL FORM -FD3A ; [.23D0.0020.0018][.2409.0020.0018] # ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM -FC27 ; [.23D0.0020.001A][.2409.0020.001A] # ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM -FD72 ; [.23D0.0020.0017][.2409.0020.0017][.2392.0020.0017] # ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM -FD71 ; [.23D0.0020.0019][.2409.0020.0019][.2392.0020.0019] # ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM -FD73 ; [.23D0.0020.0017][.2409.0020.0017][.2409.0020.0017] # ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM -FD74 ; [.23D0.0020.0019][.2409.0020.0019][.242C.0020.0019] # ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM -FD11 ; [.23D0.0020.0019][.242B.0020.0019] # ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM -FCF5 ; [.23D0.0020.001A][.242B.0020.001A] # ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM -FD12 ; [.23D0.0020.0019][.242C.0020.0019] # ARABIC LIGATURE TAH WITH YEH FINAL FORM -FCF6 ; [.23D0.0020.001A][.242C.0020.001A] # ARABIC LIGATURE TAH WITH YEH ISOLATED FORM -0638 ; [.23D1.0020.0002] # ARABIC LETTER ZAH -1EE1A ; [.23D1.0020.0005] # ARABIC MATHEMATICAL ZAH -1EE7A ; [.23D1.0020.0005] # ARABIC MATHEMATICAL STRETCHED ZAH -1EE9A ; [.23D1.0020.0005] # ARABIC MATHEMATICAL LOOPED ZAH -1EEBA ; [.23D1.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK ZAH -FEC7 ; [.23D1.0020.0017] # ARABIC LETTER ZAH INITIAL FORM -FEC8 ; [.23D1.0020.0018] # ARABIC LETTER ZAH MEDIAL FORM -FEC6 ; [.23D1.0020.0019] # ARABIC LETTER ZAH FINAL FORM -FEC5 ; [.23D1.0020.001A] # ARABIC LETTER ZAH ISOLATED FORM -FCB9 ; [.23D1.0020.0017][.2409.0020.0017] # ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM -FD3B ; [.23D1.0020.0018][.2409.0020.0018] # ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM -FC28 ; [.23D1.0020.001A][.2409.0020.001A] # ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM -069F ; [.23D2.0020.0002] # ARABIC LETTER TAH WITH THREE DOTS ABOVE -08A3 ; [.23D3.0020.0002] # ARABIC LETTER TAH WITH TWO DOTS ABOVE -0639 ; [.23D4.0020.0002] # ARABIC LETTER AIN -1EE0F ; [.23D4.0020.0005] # ARABIC MATHEMATICAL AIN -1EE2F ; [.23D4.0020.0005] # ARABIC MATHEMATICAL INITIAL AIN -1EE4F ; [.23D4.0020.0005] # ARABIC MATHEMATICAL TAILED AIN -1EE6F ; [.23D4.0020.0005] # ARABIC MATHEMATICAL STRETCHED AIN -1EE8F ; [.23D4.0020.0005] # ARABIC MATHEMATICAL LOOPED AIN -1EEAF ; [.23D4.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK AIN -FECB ; [.23D4.0020.0017] # ARABIC LETTER AIN INITIAL FORM -FECC ; [.23D4.0020.0018] # ARABIC LETTER AIN MEDIAL FORM -FECA ; [.23D4.0020.0019] # ARABIC LETTER AIN FINAL FORM -FEC9 ; [.23D4.0020.001A] # ARABIC LETTER AIN ISOLATED FORM -FCBA ; [.23D4.0020.0017][.238B.0020.0017] # ARABIC LIGATURE AIN WITH JEEM INITIAL FORM -FC29 ; [.23D4.0020.001A][.238B.0020.001A] # ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM -FDC4 ; [.23D4.0020.0017][.238B.0020.0017][.2409.0020.0017] # ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM -FD75 ; [.23D4.0020.0019][.238B.0020.0019][.2409.0020.0019] # ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM -FDF7 ; [.23D4.0020.001A][.2402.0020.001A][.242C.0020.001A][.2417.0020.001A] # ARABIC LIGATURE ALAYHE ISOLATED FORM -FCBB ; [.23D4.0020.0017][.2409.0020.0017] # ARABIC LIGATURE AIN WITH MEEM INITIAL FORM -FC2A ; [.23D4.0020.001A][.2409.0020.001A] # ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM -FD77 ; [.23D4.0020.0017][.2409.0020.0017][.2409.0020.0017] # ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM -FD76 ; [.23D4.0020.0019][.2409.0020.0019][.2409.0020.0019] # ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM -FD78 ; [.23D4.0020.0019][.2409.0020.0019][.242B.0020.0019] # ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM -FDB6 ; [.23D4.0020.0019][.2409.0020.0019][.242C.0020.0019] # ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM -FD13 ; [.23D4.0020.0019][.242B.0020.0019] # ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM -FCF7 ; [.23D4.0020.001A][.242B.0020.001A] # ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM -FD14 ; [.23D4.0020.0019][.242C.0020.0019] # ARABIC LIGATURE AIN WITH YEH FINAL FORM -FCF8 ; [.23D4.0020.001A][.242C.0020.001A] # ARABIC LIGATURE AIN WITH YEH ISOLATED FORM -063A ; [.23D5.0020.0002] # ARABIC LETTER GHAIN -1EE1B ; [.23D5.0020.0005] # ARABIC MATHEMATICAL GHAIN -1EE3B ; [.23D5.0020.0005] # ARABIC MATHEMATICAL INITIAL GHAIN -1EE5B ; [.23D5.0020.0005] # ARABIC MATHEMATICAL TAILED GHAIN -1EE7B ; [.23D5.0020.0005] # ARABIC MATHEMATICAL STRETCHED GHAIN -1EE9B ; [.23D5.0020.0005] # ARABIC MATHEMATICAL LOOPED GHAIN -1EEBB ; [.23D5.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN -FECF ; [.23D5.0020.0017] # ARABIC LETTER GHAIN INITIAL FORM -FED0 ; [.23D5.0020.0018] # ARABIC LETTER GHAIN MEDIAL FORM -FECE ; [.23D5.0020.0019] # ARABIC LETTER GHAIN FINAL FORM -FECD ; [.23D5.0020.001A] # ARABIC LETTER GHAIN ISOLATED FORM -FCBC ; [.23D5.0020.0017][.238B.0020.0017] # ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM -FC2B ; [.23D5.0020.001A][.238B.0020.001A] # ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM -FCBD ; [.23D5.0020.0017][.2409.0020.0017] # ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM -FC2C ; [.23D5.0020.001A][.2409.0020.001A] # ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM -FD79 ; [.23D5.0020.0019][.2409.0020.0019][.2409.0020.0019] # ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM -FD7B ; [.23D5.0020.0019][.2409.0020.0019][.242B.0020.0019] # ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM -FD7A ; [.23D5.0020.0019][.2409.0020.0019][.242C.0020.0019] # ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM -FD15 ; [.23D5.0020.0019][.242B.0020.0019] # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM -FCF9 ; [.23D5.0020.001A][.242B.0020.001A] # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM -FD16 ; [.23D5.0020.0019][.242C.0020.0019] # ARABIC LIGATURE GHAIN WITH YEH FINAL FORM -FCFA ; [.23D5.0020.001A][.242C.0020.001A] # ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM -06A0 ; [.23D6.0020.0002] # ARABIC LETTER AIN WITH THREE DOTS ABOVE -06FC ; [.23D7.0020.0002] # ARABIC LETTER GHAIN WITH DOT BELOW -075D ; [.23D8.0020.0002] # ARABIC LETTER AIN WITH TWO DOTS ABOVE -075E ; [.23D9.0020.0002] # ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE -075F ; [.23DA.0020.0002] # ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE -08B3 ; [.23DB.0020.0002] # ARABIC LETTER AIN WITH THREE DOTS BELOW -0641 ; [.23DC.0020.0002] # ARABIC LETTER FEH -1EE10 ; [.23DC.0020.0005] # ARABIC MATHEMATICAL FEH -1EE30 ; [.23DC.0020.0005] # ARABIC MATHEMATICAL INITIAL FEH -1EE70 ; [.23DC.0020.0005] # ARABIC MATHEMATICAL STRETCHED FEH -1EE90 ; [.23DC.0020.0005] # ARABIC MATHEMATICAL LOOPED FEH -1EEB0 ; [.23DC.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK FEH -FED3 ; [.23DC.0020.0017] # ARABIC LETTER FEH INITIAL FORM -FED4 ; [.23DC.0020.0018] # ARABIC LETTER FEH MEDIAL FORM -FED2 ; [.23DC.0020.0019] # ARABIC LETTER FEH FINAL FORM -FED1 ; [.23DC.0020.001A] # ARABIC LETTER FEH ISOLATED FORM -FCBE ; [.23DC.0020.0017][.238B.0020.0017] # ARABIC LIGATURE FEH WITH JEEM INITIAL FORM -FC2D ; [.23DC.0020.001A][.238B.0020.001A] # ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM -FCBF ; [.23DC.0020.0017][.2392.0020.0017] # ARABIC LIGATURE FEH WITH HAH INITIAL FORM -FC2E ; [.23DC.0020.001A][.2392.0020.001A] # ARABIC LIGATURE FEH WITH HAH ISOLATED FORM -FCC0 ; [.23DC.0020.0017][.2393.0020.0017] # ARABIC LIGATURE FEH WITH KHAH INITIAL FORM -FC2F ; [.23DC.0020.001A][.2393.0020.001A] # ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM -FD7D ; [.23DC.0020.0017][.2393.0020.0017][.2409.0020.0017] # ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM -FD7C ; [.23DC.0020.0019][.2393.0020.0019][.2409.0020.0019] # ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM -FCC1 ; [.23DC.0020.0017][.2409.0020.0017] # ARABIC LIGATURE FEH WITH MEEM INITIAL FORM -FC30 ; [.23DC.0020.001A][.2409.0020.001A] # ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM -FDC1 ; [.23DC.0020.0019][.2409.0020.0019][.242C.0020.0019] # ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM -FC7C ; [.23DC.0020.0019][.242B.0020.0019] # ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM -FC31 ; [.23DC.0020.001A][.242B.0020.001A] # ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM -FC7D ; [.23DC.0020.0019][.242C.0020.0019] # ARABIC LIGATURE FEH WITH YEH FINAL FORM -FC32 ; [.23DC.0020.001A][.242C.0020.001A] # ARABIC LIGATURE FEH WITH YEH ISOLATED FORM -06A1 ; [.23DD.0020.0002] # ARABIC LETTER DOTLESS FEH -1EE1E ; [.23DD.0020.0005] # ARABIC MATHEMATICAL DOTLESS FEH -1EE7E ; [.23DD.0020.0005] # ARABIC MATHEMATICAL STRETCHED DOTLESS FEH -06A2 ; [.23DE.0020.0002] # ARABIC LETTER FEH WITH DOT MOVED BELOW -08BB ; [.23DF.0020.0002] # ARABIC LETTER AFRICAN FEH -06A3 ; [.23E0.0020.0002] # ARABIC LETTER FEH WITH DOT BELOW -06A4 ; [.23E1.0020.0002] # ARABIC LETTER VEH -FB6C ; [.23E1.0020.0017] # ARABIC LETTER VEH INITIAL FORM -FB6D ; [.23E1.0020.0018] # ARABIC LETTER VEH MEDIAL FORM -FB6B ; [.23E1.0020.0019] # ARABIC LETTER VEH FINAL FORM -FB6A ; [.23E1.0020.001A] # ARABIC LETTER VEH ISOLATED FORM -08A4 ; [.23E2.0020.0002] # ARABIC LETTER FEH WITH DOT BELOW AND THREE DOTS ABOVE -06A5 ; [.23E3.0020.0002] # ARABIC LETTER FEH WITH THREE DOTS BELOW -06A6 ; [.23E4.0020.0002] # ARABIC LETTER PEHEH -FB70 ; [.23E4.0020.0017] # ARABIC LETTER PEHEH INITIAL FORM -FB71 ; [.23E4.0020.0018] # ARABIC LETTER PEHEH MEDIAL FORM -FB6F ; [.23E4.0020.0019] # ARABIC LETTER PEHEH FINAL FORM -FB6E ; [.23E4.0020.001A] # ARABIC LETTER PEHEH ISOLATED FORM -0760 ; [.23E5.0020.0002] # ARABIC LETTER FEH WITH TWO DOTS BELOW -0761 ; [.23E6.0020.0002] # ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW -066F ; [.23E7.0020.0002] # ARABIC LETTER DOTLESS QAF -1EE1F ; [.23E7.0020.0005] # ARABIC MATHEMATICAL DOTLESS QAF -1EE5F ; [.23E7.0020.0005] # ARABIC MATHEMATICAL TAILED DOTLESS QAF -0642 ; [.23E8.0020.0002] # ARABIC LETTER QAF -1EE12 ; [.23E8.0020.0005] # ARABIC MATHEMATICAL QAF -1EE32 ; [.23E8.0020.0005] # ARABIC MATHEMATICAL INITIAL QAF -1EE52 ; [.23E8.0020.0005] # ARABIC MATHEMATICAL TAILED QAF -1EE72 ; [.23E8.0020.0005] # ARABIC MATHEMATICAL STRETCHED QAF -1EE92 ; [.23E8.0020.0005] # ARABIC MATHEMATICAL LOOPED QAF -1EEB2 ; [.23E8.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK QAF -FED7 ; [.23E8.0020.0017] # ARABIC LETTER QAF INITIAL FORM -FED8 ; [.23E8.0020.0018] # ARABIC LETTER QAF MEDIAL FORM -FED6 ; [.23E8.0020.0019] # ARABIC LETTER QAF FINAL FORM -FED5 ; [.23E8.0020.001A] # ARABIC LETTER QAF ISOLATED FORM -FCC2 ; [.23E8.0020.0017][.2392.0020.0017] # ARABIC LIGATURE QAF WITH HAH INITIAL FORM -FC33 ; [.23E8.0020.001A][.2392.0020.001A] # ARABIC LIGATURE QAF WITH HAH ISOLATED FORM -FDF1 ; [.23E8.0020.001A][.2402.0020.001A][.243A.0020.001A] # ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM -FCC3 ; [.23E8.0020.0017][.2409.0020.0017] # ARABIC LIGATURE QAF WITH MEEM INITIAL FORM -FC34 ; [.23E8.0020.001A][.2409.0020.001A] # ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM -FDB4 ; [.23E8.0020.0017][.2409.0020.0017][.2392.0020.0017] # ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM -FD7E ; [.23E8.0020.0019][.2409.0020.0019][.2392.0020.0019] # ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM -FD7F ; [.23E8.0020.0019][.2409.0020.0019][.2409.0020.0019] # ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM -FDB2 ; [.23E8.0020.0019][.2409.0020.0019][.242C.0020.0019] # ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM -FC7E ; [.23E8.0020.0019][.242B.0020.0019] # ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM -FC35 ; [.23E8.0020.001A][.242B.0020.001A] # ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM -FC7F ; [.23E8.0020.0019][.242C.0020.0019] # ARABIC LIGATURE QAF WITH YEH FINAL FORM -FC36 ; [.23E8.0020.001A][.242C.0020.001A] # ARABIC LIGATURE QAF WITH YEH ISOLATED FORM -06A7 ; [.23E9.0020.0002] # ARABIC LETTER QAF WITH DOT ABOVE -08BC ; [.23EA.0020.0002] # ARABIC LETTER AFRICAN QAF -06A8 ; [.23EB.0020.0002] # ARABIC LETTER QAF WITH THREE DOTS ABOVE -08A5 ; [.23EC.0020.0002] # ARABIC LETTER QAF WITH DOT BELOW -0643 ; [.23ED.0020.0002] # ARABIC LETTER KAF -1EE0A ; [.23ED.0020.0005] # ARABIC MATHEMATICAL KAF -1EE2A ; [.23ED.0020.0005] # ARABIC MATHEMATICAL INITIAL KAF -1EE6A ; [.23ED.0020.0005] # ARABIC MATHEMATICAL STRETCHED KAF -FEDB ; [.23ED.0020.0017] # ARABIC LETTER KAF INITIAL FORM -FEDC ; [.23ED.0020.0018] # ARABIC LETTER KAF MEDIAL FORM -FEDA ; [.23ED.0020.0019] # ARABIC LETTER KAF FINAL FORM -FED9 ; [.23ED.0020.001A] # ARABIC LETTER KAF ISOLATED FORM -FC80 ; [.23ED.0020.0019][.2371.0020.0019] # ARABIC LIGATURE KAF WITH ALEF FINAL FORM -FC37 ; [.23ED.0020.001A][.2371.0020.001A] # ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM -FCC4 ; [.23ED.0020.0017][.238B.0020.0017] # ARABIC LIGATURE KAF WITH JEEM INITIAL FORM -FC38 ; [.23ED.0020.001A][.238B.0020.001A] # ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM -FCC5 ; [.23ED.0020.0017][.2392.0020.0017] # ARABIC LIGATURE KAF WITH HAH INITIAL FORM -FC39 ; [.23ED.0020.001A][.2392.0020.001A] # ARABIC LIGATURE KAF WITH HAH ISOLATED FORM -FCC6 ; [.23ED.0020.0017][.2393.0020.0017] # ARABIC LIGATURE KAF WITH KHAH INITIAL FORM -FC3A ; [.23ED.0020.001A][.2393.0020.001A] # ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM -FCC7 ; [.23ED.0020.0017][.2402.0020.0017] # ARABIC LIGATURE KAF WITH LAM INITIAL FORM -FCEB ; [.23ED.0020.0018][.2402.0020.0018] # ARABIC LIGATURE KAF WITH LAM MEDIAL FORM -FC81 ; [.23ED.0020.0019][.2402.0020.0019] # ARABIC LIGATURE KAF WITH LAM FINAL FORM -FC3B ; [.23ED.0020.001A][.2402.0020.001A] # ARABIC LIGATURE KAF WITH LAM ISOLATED FORM -FCC8 ; [.23ED.0020.0017][.2409.0020.0017] # ARABIC LIGATURE KAF WITH MEEM INITIAL FORM -FCEC ; [.23ED.0020.0018][.2409.0020.0018] # ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM -FC82 ; [.23ED.0020.0019][.2409.0020.0019] # ARABIC LIGATURE KAF WITH MEEM FINAL FORM -FC3C ; [.23ED.0020.001A][.2409.0020.001A] # ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM -FDC3 ; [.23ED.0020.0017][.2409.0020.0017][.2409.0020.0017] # ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM -FDBB ; [.23ED.0020.0019][.2409.0020.0019][.2409.0020.0019] # ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM -FDB7 ; [.23ED.0020.0019][.2409.0020.0019][.242C.0020.0019] # ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM -FC83 ; [.23ED.0020.0019][.242B.0020.0019] # ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM -FC3D ; [.23ED.0020.001A][.242B.0020.001A] # ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM -FC84 ; [.23ED.0020.0019][.242C.0020.0019] # ARABIC LIGATURE KAF WITH YEH FINAL FORM -FC3E ; [.23ED.0020.001A][.242C.0020.001A] # ARABIC LIGATURE KAF WITH YEH ISOLATED FORM -06A9 ; [.23EE.0020.0002] # ARABIC LETTER KEHEH -FB90 ; [.23EE.0020.0017] # ARABIC LETTER KEHEH INITIAL FORM -FB91 ; [.23EE.0020.0018] # ARABIC LETTER KEHEH MEDIAL FORM -FB8F ; [.23EE.0020.0019] # ARABIC LETTER KEHEH FINAL FORM -FB8E ; [.23EE.0020.001A] # ARABIC LETTER KEHEH ISOLATED FORM -06AA ; [.23EF.0020.0002] # ARABIC LETTER SWASH KAF -06AB ; [.23F0.0020.0002] # ARABIC LETTER KAF WITH RING -06AC ; [.23F1.0020.0002] # ARABIC LETTER KAF WITH DOT ABOVE -077F ; [.23F2.0020.0002] # ARABIC LETTER KAF WITH TWO DOTS ABOVE -06AD ; [.23F3.0020.0002] # ARABIC LETTER NG -FBD5 ; [.23F3.0020.0017] # ARABIC LETTER NG INITIAL FORM -FBD6 ; [.23F3.0020.0018] # ARABIC LETTER NG MEDIAL FORM -FBD4 ; [.23F3.0020.0019] # ARABIC LETTER NG FINAL FORM -FBD3 ; [.23F3.0020.001A] # ARABIC LETTER NG ISOLATED FORM -06AE ; [.23F4.0020.0002] # ARABIC LETTER KAF WITH THREE DOTS BELOW -08B4 ; [.23F5.0020.0002] # ARABIC LETTER KAF WITH DOT BELOW -06AF ; [.23F6.0020.0002] # ARABIC LETTER GAF -FB94 ; [.23F6.0020.0017] # ARABIC LETTER GAF INITIAL FORM -FB95 ; [.23F6.0020.0018] # ARABIC LETTER GAF MEDIAL FORM -FB93 ; [.23F6.0020.0019] # ARABIC LETTER GAF FINAL FORM -FB92 ; [.23F6.0020.001A] # ARABIC LETTER GAF ISOLATED FORM -08B0 ; [.23F7.0020.0002] # ARABIC LETTER GAF WITH INVERTED STROKE -06B0 ; [.23F8.0020.0002] # ARABIC LETTER GAF WITH RING -06B1 ; [.23F9.0020.0002] # ARABIC LETTER NGOEH -FB9C ; [.23F9.0020.0017] # ARABIC LETTER NGOEH INITIAL FORM -FB9D ; [.23F9.0020.0018] # ARABIC LETTER NGOEH MEDIAL FORM -FB9B ; [.23F9.0020.0019] # ARABIC LETTER NGOEH FINAL FORM -FB9A ; [.23F9.0020.001A] # ARABIC LETTER NGOEH ISOLATED FORM -06B2 ; [.23FA.0020.0002] # ARABIC LETTER GAF WITH TWO DOTS BELOW -06B3 ; [.23FB.0020.0002] # ARABIC LETTER GUEH -FB98 ; [.23FB.0020.0017] # ARABIC LETTER GUEH INITIAL FORM -FB99 ; [.23FB.0020.0018] # ARABIC LETTER GUEH MEDIAL FORM -FB97 ; [.23FB.0020.0019] # ARABIC LETTER GUEH FINAL FORM -FB96 ; [.23FB.0020.001A] # ARABIC LETTER GUEH ISOLATED FORM -06B4 ; [.23FC.0020.0002] # ARABIC LETTER GAF WITH THREE DOTS ABOVE -0762 ; [.23FD.0020.0002] # ARABIC LETTER KEHEH WITH DOT ABOVE -063B ; [.23FE.0020.0002] # ARABIC LETTER KEHEH WITH TWO DOTS ABOVE -063C ; [.23FF.0020.0002] # ARABIC LETTER KEHEH WITH THREE DOTS BELOW -0763 ; [.2400.0020.0002] # ARABIC LETTER KEHEH WITH THREE DOTS ABOVE -0764 ; [.2401.0020.0002] # ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW -0644 ; [.2402.0020.0002] # ARABIC LETTER LAM -1EE0B ; [.2402.0020.0005] # ARABIC MATHEMATICAL LAM -1EE2B ; [.2402.0020.0005] # ARABIC MATHEMATICAL INITIAL LAM -1EE4B ; [.2402.0020.0005] # ARABIC MATHEMATICAL TAILED LAM -1EE8B ; [.2402.0020.0005] # ARABIC MATHEMATICAL LOOPED LAM -1EEAB ; [.2402.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK LAM -FEDF ; [.2402.0020.0017] # ARABIC LETTER LAM INITIAL FORM -FEE0 ; [.2402.0020.0018] # ARABIC LETTER LAM MEDIAL FORM -FEDE ; [.2402.0020.0019] # ARABIC LETTER LAM FINAL FORM -FEDD ; [.2402.0020.001A] # ARABIC LETTER LAM ISOLATED FORM -FEF6 ; [.2402.0020.0019][.2364.0020.0019] # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM -FEF5 ; [.2402.0020.001A][.2364.0020.001A] # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM -FEF8 ; [.2402.0020.0019][.2365.0020.0019] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM -FEF7 ; [.2402.0020.001A][.2365.0020.001A] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM -FEFA ; [.2402.0020.0019][.2369.0020.0019] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM -FEF9 ; [.2402.0020.001A][.2369.0020.001A] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM -FEFC ; [.2402.0020.0019][.2371.0020.0019] # ARABIC LIGATURE LAM WITH ALEF FINAL FORM -FEFB ; [.2402.0020.001A][.2371.0020.001A] # ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM -FCC9 ; [.2402.0020.0017][.238B.0020.0017] # ARABIC LIGATURE LAM WITH JEEM INITIAL FORM -FC3F ; [.2402.0020.001A][.238B.0020.001A] # ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM -FD83 ; [.2402.0020.0017][.238B.0020.0017][.238B.0020.0017] # ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM -FD84 ; [.2402.0020.0019][.238B.0020.0019][.238B.0020.0019] # ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM -FDBA ; [.2402.0020.0017][.238B.0020.0017][.2409.0020.0017] # ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM -FDBC ; [.2402.0020.0019][.238B.0020.0019][.2409.0020.0019] # ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM -FDAC ; [.2402.0020.0019][.238B.0020.0019][.242C.0020.0019] # ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM -FCCA ; [.2402.0020.0017][.2392.0020.0017] # ARABIC LIGATURE LAM WITH HAH INITIAL FORM -FC40 ; [.2402.0020.001A][.2392.0020.001A] # ARABIC LIGATURE LAM WITH HAH ISOLATED FORM -FDB5 ; [.2402.0020.0017][.2392.0020.0017][.2409.0020.0017] # ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM -FD80 ; [.2402.0020.0019][.2392.0020.0019][.2409.0020.0019] # ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM -FD82 ; [.2402.0020.0019][.2392.0020.0019][.242B.0020.0019] # ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM -FD81 ; [.2402.0020.0019][.2392.0020.0019][.242C.0020.0019] # ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM -FCCB ; [.2402.0020.0017][.2393.0020.0017] # ARABIC LIGATURE LAM WITH KHAH INITIAL FORM -FC41 ; [.2402.0020.001A][.2393.0020.001A] # ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM -FD86 ; [.2402.0020.0017][.2393.0020.0017][.2409.0020.0017] # ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM -FD85 ; [.2402.0020.0019][.2393.0020.0019][.2409.0020.0019] # ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM -FCCC ; [.2402.0020.0017][.2409.0020.0017] # ARABIC LIGATURE LAM WITH MEEM INITIAL FORM -FCED ; [.2402.0020.0018][.2409.0020.0018] # ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM -FC85 ; [.2402.0020.0019][.2409.0020.0019] # ARABIC LIGATURE LAM WITH MEEM FINAL FORM -FC42 ; [.2402.0020.001A][.2409.0020.001A] # ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM -FD88 ; [.2402.0020.0017][.2409.0020.0017][.2392.0020.0017] # ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM -FD87 ; [.2402.0020.0019][.2409.0020.0019][.2392.0020.0019] # ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM -FDAD ; [.2402.0020.0019][.2409.0020.0019][.242C.0020.0019] # ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM -FCCD ; [.2402.0020.0017][.2417.0020.0017] # ARABIC LIGATURE LAM WITH HEH INITIAL FORM -FC86 ; [.2402.0020.0019][.242B.0020.0019] # ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM -FC43 ; [.2402.0020.001A][.242B.0020.001A] # ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM -FC87 ; [.2402.0020.0019][.242C.0020.0019] # ARABIC LIGATURE LAM WITH YEH FINAL FORM -FC44 ; [.2402.0020.001A][.242C.0020.001A] # ARABIC LIGATURE LAM WITH YEH ISOLATED FORM -06B5 ; [.2403.0020.0002] # ARABIC LETTER LAM WITH SMALL V -06B6 ; [.2404.0020.0002] # ARABIC LETTER LAM WITH DOT ABOVE -06B7 ; [.2405.0020.0002] # ARABIC LETTER LAM WITH THREE DOTS ABOVE -06B8 ; [.2406.0020.0002] # ARABIC LETTER LAM WITH THREE DOTS BELOW -076A ; [.2407.0020.0002] # ARABIC LETTER LAM WITH BAR -08A6 ; [.2408.0020.0002] # ARABIC LETTER LAM WITH DOUBLE BAR -0645 ; [.2409.0020.0002] # ARABIC LETTER MEEM -1EE0C ; [.2409.0020.0005] # ARABIC MATHEMATICAL MEEM -1EE2C ; [.2409.0020.0005] # ARABIC MATHEMATICAL INITIAL MEEM -1EE6C ; [.2409.0020.0005] # ARABIC MATHEMATICAL STRETCHED MEEM -1EE8C ; [.2409.0020.0005] # ARABIC MATHEMATICAL LOOPED MEEM -1EEAC ; [.2409.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK MEEM -FEE3 ; [.2409.0020.0017] # ARABIC LETTER MEEM INITIAL FORM -FEE4 ; [.2409.0020.0018] # ARABIC LETTER MEEM MEDIAL FORM -FEE2 ; [.2409.0020.0019] # ARABIC LETTER MEEM FINAL FORM -FEE1 ; [.2409.0020.001A] # ARABIC LETTER MEEM ISOLATED FORM -06FE ; [.2409.0020.0004][.0000.0112.0004] # ARABIC SIGN SINDHI POSTPOSITION MEN -FC88 ; [.2409.0020.0019][.2371.0020.0019] # ARABIC LIGATURE MEEM WITH ALEF FINAL FORM -FCCE ; [.2409.0020.0017][.238B.0020.0017] # ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM -FC45 ; [.2409.0020.001A][.238B.0020.001A] # ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM -FD8C ; [.2409.0020.0017][.238B.0020.0017][.2392.0020.0017] # ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM -FD92 ; [.2409.0020.0017][.238B.0020.0017][.2393.0020.0017] # ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM -FD8D ; [.2409.0020.0017][.238B.0020.0017][.2409.0020.0017] # ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM -FDC0 ; [.2409.0020.0019][.238B.0020.0019][.242C.0020.0019] # ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM -FCCF ; [.2409.0020.0017][.2392.0020.0017] # ARABIC LIGATURE MEEM WITH HAH INITIAL FORM -FC46 ; [.2409.0020.001A][.2392.0020.001A] # ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM -FD89 ; [.2409.0020.0017][.2392.0020.0017][.238B.0020.0017] # ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM -FD8A ; [.2409.0020.0017][.2392.0020.0017][.2409.0020.0017] # ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM -FDF4 ; [.2409.0020.001A][.2392.0020.001A][.2409.0020.001A][.239D.0020.001A] # ARABIC LIGATURE MOHAMMAD ISOLATED FORM -FD8B ; [.2409.0020.0019][.2392.0020.0019][.242C.0020.0019] # ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM -FCD0 ; [.2409.0020.0017][.2393.0020.0017] # ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM -FC47 ; [.2409.0020.001A][.2393.0020.001A] # ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM -FD8E ; [.2409.0020.0017][.2393.0020.0017][.238B.0020.0017] # ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM -FD8F ; [.2409.0020.0017][.2393.0020.0017][.2409.0020.0017] # ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM -FDB9 ; [.2409.0020.0019][.2393.0020.0019][.242C.0020.0019] # ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM -FCD1 ; [.2409.0020.0017][.2409.0020.0017] # ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM -FC89 ; [.2409.0020.0019][.2409.0020.0019] # ARABIC LIGATURE MEEM WITH MEEM FINAL FORM -FC48 ; [.2409.0020.001A][.2409.0020.001A] # ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM -FDB1 ; [.2409.0020.0019][.2409.0020.0019][.242C.0020.0019] # ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM -FC49 ; [.2409.0020.001A][.242B.0020.001A] # ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM -FC4A ; [.2409.0020.001A][.242C.0020.001A] # ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM -0765 ; [.240A.0020.0002] # ARABIC LETTER MEEM WITH DOT ABOVE -0766 ; [.240B.0020.0002] # ARABIC LETTER MEEM WITH DOT BELOW -08A7 ; [.240C.0020.0002] # ARABIC LETTER MEEM WITH THREE DOTS ABOVE -0646 ; [.240D.0020.0002] # ARABIC LETTER NOON -1EE0D ; [.240D.0020.0005] # ARABIC MATHEMATICAL NOON -1EE2D ; [.240D.0020.0005] # ARABIC MATHEMATICAL INITIAL NOON -1EE4D ; [.240D.0020.0005] # ARABIC MATHEMATICAL TAILED NOON -1EE6D ; [.240D.0020.0005] # ARABIC MATHEMATICAL STRETCHED NOON -1EE8D ; [.240D.0020.0005] # ARABIC MATHEMATICAL LOOPED NOON -1EEAD ; [.240D.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK NOON -FEE7 ; [.240D.0020.0017] # ARABIC LETTER NOON INITIAL FORM -FEE8 ; [.240D.0020.0018] # ARABIC LETTER NOON MEDIAL FORM -FEE6 ; [.240D.0020.0019] # ARABIC LETTER NOON FINAL FORM -FEE5 ; [.240D.0020.001A] # ARABIC LETTER NOON ISOLATED FORM -FCD2 ; [.240D.0020.0017][.238B.0020.0017] # ARABIC LIGATURE NOON WITH JEEM INITIAL FORM -FC4B ; [.240D.0020.001A][.238B.0020.001A] # ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM -FDB8 ; [.240D.0020.0017][.238B.0020.0017][.2392.0020.0017] # ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM -FDBD ; [.240D.0020.0019][.238B.0020.0019][.2392.0020.0019] # ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM -FD98 ; [.240D.0020.0017][.238B.0020.0017][.2409.0020.0017] # ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM -FD97 ; [.240D.0020.0019][.238B.0020.0019][.2409.0020.0019] # ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM -FD99 ; [.240D.0020.0019][.238B.0020.0019][.242B.0020.0019] # ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM -FDC7 ; [.240D.0020.0019][.238B.0020.0019][.242C.0020.0019] # ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM -FCD3 ; [.240D.0020.0017][.2392.0020.0017] # ARABIC LIGATURE NOON WITH HAH INITIAL FORM -FC4C ; [.240D.0020.001A][.2392.0020.001A] # ARABIC LIGATURE NOON WITH HAH ISOLATED FORM -FD95 ; [.240D.0020.0017][.2392.0020.0017][.2409.0020.0017] # ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM -FD96 ; [.240D.0020.0019][.2392.0020.0019][.242B.0020.0019] # ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM -FDB3 ; [.240D.0020.0019][.2392.0020.0019][.242C.0020.0019] # ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM -FCD4 ; [.240D.0020.0017][.2393.0020.0017] # ARABIC LIGATURE NOON WITH KHAH INITIAL FORM -FC4D ; [.240D.0020.001A][.2393.0020.001A] # ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM -FC8A ; [.240D.0020.0019][.23AC.0020.0019] # ARABIC LIGATURE NOON WITH REH FINAL FORM -FC8B ; [.240D.0020.0019][.23AD.0020.0019] # ARABIC LIGATURE NOON WITH ZAIN FINAL FORM -FCD5 ; [.240D.0020.0017][.2409.0020.0017] # ARABIC LIGATURE NOON WITH MEEM INITIAL FORM -FCEE ; [.240D.0020.0018][.2409.0020.0018] # ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM -FC8C ; [.240D.0020.0019][.2409.0020.0019] # ARABIC LIGATURE NOON WITH MEEM FINAL FORM -FC4E ; [.240D.0020.001A][.2409.0020.001A] # ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM -FD9B ; [.240D.0020.0019][.2409.0020.0019][.242B.0020.0019] # ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM -FD9A ; [.240D.0020.0019][.2409.0020.0019][.242C.0020.0019] # ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM -FC8D ; [.240D.0020.0019][.240D.0020.0019] # ARABIC LIGATURE NOON WITH NOON FINAL FORM -FCD6 ; [.240D.0020.0017][.2417.0020.0017] # ARABIC LIGATURE NOON WITH HEH INITIAL FORM -FCEF ; [.240D.0020.0018][.2417.0020.0018] # ARABIC LIGATURE NOON WITH HEH MEDIAL FORM -FC8E ; [.240D.0020.0019][.242B.0020.0019] # ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM -FC4F ; [.240D.0020.001A][.242B.0020.001A] # ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM -FC8F ; [.240D.0020.0019][.242C.0020.0019] # ARABIC LIGATURE NOON WITH YEH FINAL FORM -FC50 ; [.240D.0020.001A][.242C.0020.001A] # ARABIC LIGATURE NOON WITH YEH ISOLATED FORM -06BA ; [.240E.0020.0002] # ARABIC LETTER NOON GHUNNA -1EE1D ; [.240E.0020.0005] # ARABIC MATHEMATICAL DOTLESS NOON -1EE5D ; [.240E.0020.0005] # ARABIC MATHEMATICAL TAILED DOTLESS NOON -FB9F ; [.240E.0020.0019] # ARABIC LETTER NOON GHUNNA FINAL FORM -FB9E ; [.240E.0020.001A] # ARABIC LETTER NOON GHUNNA ISOLATED FORM -08BD ; [.240F.0020.0002] # ARABIC LETTER AFRICAN NOON -06BB ; [.2410.0020.0002] # ARABIC LETTER RNOON -FBA2 ; [.2410.0020.0017] # ARABIC LETTER RNOON INITIAL FORM -FBA3 ; [.2410.0020.0018] # ARABIC LETTER RNOON MEDIAL FORM -FBA1 ; [.2410.0020.0019] # ARABIC LETTER RNOON FINAL FORM -FBA0 ; [.2410.0020.001A] # ARABIC LETTER RNOON ISOLATED FORM -06BC ; [.2411.0020.0002] # ARABIC LETTER NOON WITH RING -06BD ; [.2412.0020.0002] # ARABIC LETTER NOON WITH THREE DOTS ABOVE -06B9 ; [.2413.0020.0002] # ARABIC LETTER NOON WITH DOT BELOW -0767 ; [.2414.0020.0002] # ARABIC LETTER NOON WITH TWO DOTS BELOW -0768 ; [.2415.0020.0002] # ARABIC LETTER NOON WITH SMALL TAH -0769 ; [.2416.0020.0002] # ARABIC LETTER NOON WITH SMALL V -0647 ; [.2417.0020.0002] # ARABIC LETTER HEH -1EE24 ; [.2417.0020.0005] # ARABIC MATHEMATICAL INITIAL HEH -1EE64 ; [.2417.0020.0005] # ARABIC MATHEMATICAL STRETCHED HEH -1EE84 ; [.2417.0020.0005] # ARABIC MATHEMATICAL LOOPED HEH -FEEB ; [.2417.0020.0017] # ARABIC LETTER HEH INITIAL FORM -FEEC ; [.2417.0020.0018] # ARABIC LETTER HEH MEDIAL FORM -FEEA ; [.2417.0020.0019] # ARABIC LETTER HEH FINAL FORM -FEE9 ; [.2417.0020.001A] # ARABIC LETTER HEH ISOLATED FORM -FCD9 ; [.2417.0020.0017][.0000.0098.0017] # ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM -FCD7 ; [.2417.0020.0017][.238B.0020.0017] # ARABIC LIGATURE HEH WITH JEEM INITIAL FORM -FC51 ; [.2417.0020.001A][.238B.0020.001A] # ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM -FCD8 ; [.2417.0020.0017][.2409.0020.0017] # ARABIC LIGATURE HEH WITH MEEM INITIAL FORM -FC52 ; [.2417.0020.001A][.2409.0020.001A] # ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM -FD93 ; [.2417.0020.0017][.2409.0020.0017][.238B.0020.0017] # ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM -FD94 ; [.2417.0020.0017][.2409.0020.0017][.2409.0020.0017] # ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM -FC53 ; [.2417.0020.001A][.242B.0020.001A] # ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM -FC54 ; [.2417.0020.001A][.242C.0020.001A] # ARABIC LIGATURE HEH WITH YEH ISOLATED FORM -06BE ; [.2418.0020.0002] # ARABIC LETTER HEH DOACHASHMEE -FBAC ; [.2418.0020.0017] # ARABIC LETTER HEH DOACHASHMEE INITIAL FORM -FBAD ; [.2418.0020.0018] # ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM -FBAB ; [.2418.0020.0019] # ARABIC LETTER HEH DOACHASHMEE FINAL FORM -FBAA ; [.2418.0020.001A] # ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM -06C1 ; [.2419.0020.0002] # ARABIC LETTER HEH GOAL -FBA8 ; [.2419.0020.0017] # ARABIC LETTER HEH GOAL INITIAL FORM -FBA9 ; [.2419.0020.0018] # ARABIC LETTER HEH GOAL MEDIAL FORM -FBA7 ; [.2419.0020.0019] # ARABIC LETTER HEH GOAL FINAL FORM -FBA6 ; [.2419.0020.001A] # ARABIC LETTER HEH GOAL ISOLATED FORM -06C2 ; [.2419.0020.0002][.0000.0083.0002] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE -06C3 ; [.241A.0020.0002] # ARABIC LETTER TEH MARBUTA GOAL -06FF ; [.241B.0020.0002] # ARABIC LETTER HEH WITH INVERTED V -06D5 ; [.241C.0020.0002] # ARABIC LETTER AE -06C0 ; [.241C.0020.0002][.0000.0083.0002] # ARABIC LETTER HEH WITH YEH ABOVE -FBA5 ; [.241C.0020.0019][.0000.0083.0019] # ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM -FBA4 ; [.241C.0020.001A][.0000.0083.001A] # ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM -0648 ; [.241D.0020.0002] # ARABIC LETTER WAW -06E5 ; [.241D.0020.0004] # ARABIC SMALL WAW -1EE05 ; [.241D.0020.0005] # ARABIC MATHEMATICAL WAW -1EE85 ; [.241D.0020.0005] # ARABIC MATHEMATICAL LOOPED WAW -1EEA5 ; [.241D.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK WAW -FEEE ; [.241D.0020.0019] # ARABIC LETTER WAW FINAL FORM -FEED ; [.241D.0020.001A] # ARABIC LETTER WAW ISOLATED FORM -0676 ; [.241D.0020.0004][.2363.0020.0004] # ARABIC LETTER HIGH HAMZA WAW -FDF8 ; [.241D.0020.001A][.23BF.0020.001A][.2402.0020.001A][.2409.0020.001A] # ARABIC LIGATURE WASALLAM ISOLATED FORM -06C4 ; [.241E.0020.0002] # ARABIC LETTER WAW WITH RING -06C5 ; [.241F.0020.0002] # ARABIC LETTER KIRGHIZ OE -FBE1 ; [.241F.0020.0019] # ARABIC LETTER KIRGHIZ OE FINAL FORM -FBE0 ; [.241F.0020.001A] # ARABIC LETTER KIRGHIZ OE ISOLATED FORM -06C6 ; [.2420.0020.0002] # ARABIC LETTER OE -FBDA ; [.2420.0020.0019] # ARABIC LETTER OE FINAL FORM -FBD9 ; [.2420.0020.001A] # ARABIC LETTER OE ISOLATED FORM -06C7 ; [.2421.0020.0002] # ARABIC LETTER U -FBD8 ; [.2421.0020.0019] # ARABIC LETTER U FINAL FORM -FBD7 ; [.2421.0020.001A] # ARABIC LETTER U ISOLATED FORM -0677 ; [.2421.0020.0004][.2363.0020.0004] # ARABIC LETTER U WITH HAMZA ABOVE -FBDD ; [.2421.0020.001A][.2363.0020.001A] # ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM -06C8 ; [.2422.0020.0002] # ARABIC LETTER YU -FBDC ; [.2422.0020.0019] # ARABIC LETTER YU FINAL FORM -FBDB ; [.2422.0020.001A] # ARABIC LETTER YU ISOLATED FORM -06C9 ; [.2423.0020.0002] # ARABIC LETTER KIRGHIZ YU -FBE3 ; [.2423.0020.0019] # ARABIC LETTER KIRGHIZ YU FINAL FORM -FBE2 ; [.2423.0020.001A] # ARABIC LETTER KIRGHIZ YU ISOLATED FORM -06CA ; [.2424.0020.0002] # ARABIC LETTER WAW WITH TWO DOTS ABOVE -06CB ; [.2425.0020.0002] # ARABIC LETTER VE -FBDF ; [.2425.0020.0019] # ARABIC LETTER VE FINAL FORM -FBDE ; [.2425.0020.001A] # ARABIC LETTER VE ISOLATED FORM -08B1 ; [.2426.0020.0002] # ARABIC LETTER STRAIGHT WAW -06CF ; [.2427.0020.0002] # ARABIC LETTER WAW WITH DOT ABOVE -0778 ; [.2428.0020.0002] # ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE -0779 ; [.2429.0020.0002] # ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE -08AB ; [.242A.0020.0002] # ARABIC LETTER WAW WITH DOT WITHIN -0649 ; [.242B.0020.0002] # ARABIC LETTER ALEF MAKSURA -FBE8 ; [.242B.0020.0017] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM -FBE9 ; [.242B.0020.0018] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM -FEF0 ; [.242B.0020.0019] # ARABIC LETTER ALEF MAKSURA FINAL FORM -FEEF ; [.242B.0020.001A] # ARABIC LETTER ALEF MAKSURA ISOLATED FORM -FC90 ; [.242B.0020.0019][.0000.0098.0019] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM -FC5D ; [.242B.0020.001A][.0000.0098.001A] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM -064A ; [.242C.0020.0002] # ARABIC LETTER YEH -06E6 ; [.242C.0020.0004] # ARABIC SMALL YEH -1EE09 ; [.242C.0020.0005] # ARABIC MATHEMATICAL YEH -1EE29 ; [.242C.0020.0005] # ARABIC MATHEMATICAL INITIAL YEH -1EE49 ; [.242C.0020.0005] # ARABIC MATHEMATICAL TAILED YEH -1EE69 ; [.242C.0020.0005] # ARABIC MATHEMATICAL STRETCHED YEH -1EE89 ; [.242C.0020.0005] # ARABIC MATHEMATICAL LOOPED YEH -1EEA9 ; [.242C.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK YEH -FEF3 ; [.242C.0020.0017] # ARABIC LETTER YEH INITIAL FORM -FEF4 ; [.242C.0020.0018] # ARABIC LETTER YEH MEDIAL FORM -FEF2 ; [.242C.0020.0019] # ARABIC LETTER YEH FINAL FORM -FEF1 ; [.242C.0020.001A] # ARABIC LETTER YEH ISOLATED FORM -0678 ; [.242C.0020.0004][.2363.0020.0004] # ARABIC LETTER HIGH HAMZA YEH -FCDA ; [.242C.0020.0017][.238B.0020.0017] # ARABIC LIGATURE YEH WITH JEEM INITIAL FORM -FC55 ; [.242C.0020.001A][.238B.0020.001A] # ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM -FDAF ; [.242C.0020.0019][.238B.0020.0019][.242C.0020.0019] # ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM -FCDB ; [.242C.0020.0017][.2392.0020.0017] # ARABIC LIGATURE YEH WITH HAH INITIAL FORM -FC56 ; [.242C.0020.001A][.2392.0020.001A] # ARABIC LIGATURE YEH WITH HAH ISOLATED FORM -FDAE ; [.242C.0020.0019][.2392.0020.0019][.242C.0020.0019] # ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM -FCDC ; [.242C.0020.0017][.2393.0020.0017] # ARABIC LIGATURE YEH WITH KHAH INITIAL FORM -FC57 ; [.242C.0020.001A][.2393.0020.001A] # ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM -FC91 ; [.242C.0020.0019][.23AC.0020.0019] # ARABIC LIGATURE YEH WITH REH FINAL FORM -FC92 ; [.242C.0020.0019][.23AD.0020.0019] # ARABIC LIGATURE YEH WITH ZAIN FINAL FORM -FCDD ; [.242C.0020.0017][.2409.0020.0017] # ARABIC LIGATURE YEH WITH MEEM INITIAL FORM -FCF0 ; [.242C.0020.0018][.2409.0020.0018] # ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM -FC93 ; [.242C.0020.0019][.2409.0020.0019] # ARABIC LIGATURE YEH WITH MEEM FINAL FORM -FC58 ; [.242C.0020.001A][.2409.0020.001A] # ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM -FD9D ; [.242C.0020.0017][.2409.0020.0017][.2409.0020.0017] # ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM -FD9C ; [.242C.0020.0019][.2409.0020.0019][.2409.0020.0019] # ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM -FDB0 ; [.242C.0020.0019][.2409.0020.0019][.242C.0020.0019] # ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM -FC94 ; [.242C.0020.0019][.240D.0020.0019] # ARABIC LIGATURE YEH WITH NOON FINAL FORM -FCDE ; [.242C.0020.0017][.2417.0020.0017] # ARABIC LIGATURE YEH WITH HEH INITIAL FORM -FCF1 ; [.242C.0020.0018][.2417.0020.0018] # ARABIC LIGATURE YEH WITH HEH MEDIAL FORM -FC95 ; [.242C.0020.0019][.242B.0020.0019] # ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM -FC59 ; [.242C.0020.001A][.242B.0020.001A] # ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM -FC96 ; [.242C.0020.0019][.242C.0020.0019] # ARABIC LIGATURE YEH WITH YEH FINAL FORM -FC5A ; [.242C.0020.001A][.242C.0020.001A] # ARABIC LIGATURE YEH WITH YEH ISOLATED FORM -06CC ; [.242D.0020.0002] # ARABIC LETTER FARSI YEH -FBFE ; [.242D.0020.0017] # ARABIC LETTER FARSI YEH INITIAL FORM -FBFF ; [.242D.0020.0018] # ARABIC LETTER FARSI YEH MEDIAL FORM -FBFD ; [.242D.0020.0019] # ARABIC LETTER FARSI YEH FINAL FORM -FBFC ; [.242D.0020.001A] # ARABIC LETTER FARSI YEH ISOLATED FORM -06CD ; [.242E.0020.0002] # ARABIC LETTER YEH WITH TAIL -06CE ; [.242F.0020.0002] # ARABIC LETTER YEH WITH SMALL V -06D0 ; [.2430.0020.0002] # ARABIC LETTER E -FBE6 ; [.2430.0020.0017] # ARABIC LETTER E INITIAL FORM -FBE7 ; [.2430.0020.0018] # ARABIC LETTER E MEDIAL FORM -FBE5 ; [.2430.0020.0019] # ARABIC LETTER E FINAL FORM -FBE4 ; [.2430.0020.001A] # ARABIC LETTER E ISOLATED FORM -06D1 ; [.2431.0020.0002] # ARABIC LETTER YEH WITH THREE DOTS BELOW -063D ; [.2432.0020.0002] # ARABIC LETTER FARSI YEH WITH INVERTED V -063E ; [.2433.0020.0002] # ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE -063F ; [.2434.0020.0002] # ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE -0620 ; [.2435.0020.0002] # ARABIC LETTER KASHMIRI YEH -0775 ; [.2436.0020.0002] # ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE -0776 ; [.2437.0020.0002] # ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE -0777 ; [.2438.0020.0002] # ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW -08BA ; [.2439.0020.0002] # ARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVE -06D2 ; [.243A.0020.0002] # ARABIC LETTER YEH BARREE -FBAF ; [.243A.0020.0019] # ARABIC LETTER YEH BARREE FINAL FORM -FBAE ; [.243A.0020.001A] # ARABIC LETTER YEH BARREE ISOLATED FORM -06D3 ; [.243A.0020.0002][.0000.0083.0002] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE -FBB1 ; [.243A.0020.0019][.0000.0083.0019] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM -FBB0 ; [.243A.0020.001A][.0000.0083.001A] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM -077A ; [.243B.0020.0002] # ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE -077B ; [.243C.0020.0002] # ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE -0710 ; [.243D.0020.0002] # SYRIAC LETTER ALAPH -0712 ; [.243E.0020.0002] # SYRIAC LETTER BETH -072D ; [.243E.0020.0004][.0000.0113.0004] # SYRIAC LETTER PERSIAN BHETH -0713 ; [.243F.0020.0002] # SYRIAC LETTER GAMAL -0714 ; [.243F.0020.0004][.0000.0112.0004] # SYRIAC LETTER GAMAL GARSHUNI -072E ; [.243F.0020.0004][.0000.0113.0004] # SYRIAC LETTER PERSIAN GHAMAL -0716 ; [.2440.0020.0002] # SYRIAC LETTER DOTLESS DALATH RISH -0715 ; [.2441.0020.0002] # SYRIAC LETTER DALATH -072F ; [.2441.0020.0004][.0000.0113.0004] # SYRIAC LETTER PERSIAN DHALATH -0717 ; [.2442.0020.0002] # SYRIAC LETTER HE -0718 ; [.2443.0020.0002] # SYRIAC LETTER WAW -0719 ; [.2444.0020.0002] # SYRIAC LETTER ZAIN -074D ; [.2445.0020.0002] # SYRIAC LETTER SOGDIAN ZHAIN -071A ; [.2446.0020.0002] # SYRIAC LETTER HETH -071B ; [.2447.0020.0002] # SYRIAC LETTER TETH -071C ; [.2447.0020.0004][.0000.0112.0004] # SYRIAC LETTER TETH GARSHUNI -071D ; [.2448.0020.0002] # SYRIAC LETTER YUDH -071E ; [.2449.0020.0002] # SYRIAC LETTER YUDH HE -071F ; [.244A.0020.0002] # SYRIAC LETTER KAPH -074E ; [.244B.0020.0002] # SYRIAC LETTER SOGDIAN KHAPH -0720 ; [.244C.0020.0002] # SYRIAC LETTER LAMADH -0721 ; [.244D.0020.0002] # SYRIAC LETTER MIM -0722 ; [.244E.0020.0002] # SYRIAC LETTER NUN -0723 ; [.244F.0020.0002] # SYRIAC LETTER SEMKATH -0724 ; [.244F.0020.0019] # SYRIAC LETTER FINAL SEMKATH -0725 ; [.2450.0020.0002] # SYRIAC LETTER E -0726 ; [.2451.0020.0002] # SYRIAC LETTER PE -0727 ; [.2451.0020.0004][.0000.0112.0004] # SYRIAC LETTER REVERSED PE -074F ; [.2452.0020.0002] # SYRIAC LETTER SOGDIAN FE -0728 ; [.2453.0020.0002] # SYRIAC LETTER SADHE -0729 ; [.2454.0020.0002] # SYRIAC LETTER QAPH -072A ; [.2455.0020.0002] # SYRIAC LETTER RISH -072B ; [.2456.0020.0002] # SYRIAC LETTER SHIN -072C ; [.2457.0020.0002] # SYRIAC LETTER TAW -0860 ; [.2458.0020.0002] # SYRIAC LETTER MALAYALAM NGA -0861 ; [.2459.0020.0002] # SYRIAC LETTER MALAYALAM JA -0862 ; [.245A.0020.0002] # SYRIAC LETTER MALAYALAM NYA -0863 ; [.245B.0020.0002] # SYRIAC LETTER MALAYALAM TTA -0864 ; [.245C.0020.0002] # SYRIAC LETTER MALAYALAM NNA -0865 ; [.245D.0020.0002] # SYRIAC LETTER MALAYALAM NNNA -0866 ; [.245E.0020.0002] # SYRIAC LETTER MALAYALAM BHA -0867 ; [.245F.0020.0002] # SYRIAC LETTER MALAYALAM RA -0868 ; [.2460.0020.0002] # SYRIAC LETTER MALAYALAM LLA -0869 ; [.2461.0020.0002] # SYRIAC LETTER MALAYALAM LLLA -086A ; [.2462.0020.0002] # SYRIAC LETTER MALAYALAM SSA -0840 ; [.2463.0020.0002] # MANDAIC LETTER HALQA -0841 ; [.2464.0020.0002] # MANDAIC LETTER AB -0842 ; [.2465.0020.0002] # MANDAIC LETTER AG -0843 ; [.2466.0020.0002] # MANDAIC LETTER AD -0844 ; [.2467.0020.0002] # MANDAIC LETTER AH -0845 ; [.2468.0020.0002] # MANDAIC LETTER USHENNA -0846 ; [.2469.0020.0002] # MANDAIC LETTER AZ -0847 ; [.246A.0020.0002] # MANDAIC LETTER IT -0848 ; [.246B.0020.0002] # MANDAIC LETTER ATT -0849 ; [.246C.0020.0002] # MANDAIC LETTER AKSA -084A ; [.246D.0020.0002] # MANDAIC LETTER AK -084B ; [.246E.0020.0002] # MANDAIC LETTER AL -084C ; [.246F.0020.0002] # MANDAIC LETTER AM -084D ; [.2470.0020.0002] # MANDAIC LETTER AN -084E ; [.2471.0020.0002] # MANDAIC LETTER AS -084F ; [.2472.0020.0002] # MANDAIC LETTER IN -0850 ; [.2473.0020.0002] # MANDAIC LETTER AP -0851 ; [.2474.0020.0002] # MANDAIC LETTER ASZ -0852 ; [.2475.0020.0002] # MANDAIC LETTER AQ -0853 ; [.2476.0020.0002] # MANDAIC LETTER AR -0854 ; [.2477.0020.0002] # MANDAIC LETTER ASH -0855 ; [.2478.0020.0002] # MANDAIC LETTER AT -0856 ; [.2479.0020.0002] # MANDAIC LETTER DUSHENNA -0857 ; [.247A.0020.0002] # MANDAIC LETTER KAD -0858 ; [.247B.0020.0002] # MANDAIC LETTER AIN -0780 ; [.247C.0020.0002] # THAANA LETTER HAA -0799 ; [.247D.0020.0002] # THAANA LETTER HHAA -079A ; [.247E.0020.0002] # THAANA LETTER KHAA -0781 ; [.247F.0020.0002] # THAANA LETTER SHAVIYANI -0782 ; [.2480.0020.0002] # THAANA LETTER NOONU -0783 ; [.2481.0020.0002] # THAANA LETTER RAA -079C ; [.2482.0020.0002] # THAANA LETTER ZAA -0784 ; [.2483.0020.0002] # THAANA LETTER BAA -0785 ; [.2484.0020.0002] # THAANA LETTER LHAVIYANI -0786 ; [.2485.0020.0002] # THAANA LETTER KAAFU -0787 ; [.2486.0020.0002] # THAANA LETTER ALIFU -07A2 ; [.2487.0020.0002] # THAANA LETTER AINU -07A3 ; [.2488.0020.0002] # THAANA LETTER GHAINU -0788 ; [.2489.0020.0002] # THAANA LETTER VAAVU -07A5 ; [.248A.0020.0002] # THAANA LETTER WAAVU -0789 ; [.248B.0020.0002] # THAANA LETTER MEEMU -078A ; [.248C.0020.0002] # THAANA LETTER FAAFU -078B ; [.248D.0020.0002] # THAANA LETTER DHAALU -079B ; [.248E.0020.0002] # THAANA LETTER THAALU -078C ; [.248F.0020.0002] # THAANA LETTER THAA -0798 ; [.2490.0020.0002] # THAANA LETTER TTAA -07A0 ; [.2491.0020.0002] # THAANA LETTER TO -07A1 ; [.2492.0020.0002] # THAANA LETTER ZO -078D ; [.2493.0020.0002] # THAANA LETTER LAAMU -078E ; [.2494.0020.0002] # THAANA LETTER GAAFU -07A4 ; [.2495.0020.0002] # THAANA LETTER QAAFU -078F ; [.2496.0020.0002] # THAANA LETTER GNAVIYANI -0790 ; [.2497.0020.0002] # THAANA LETTER SEENU -079D ; [.2498.0020.0002] # THAANA LETTER SHEENU -079E ; [.2499.0020.0002] # THAANA LETTER SAADHU -079F ; [.249A.0020.0002] # THAANA LETTER DAADHU -0791 ; [.249B.0020.0002] # THAANA LETTER DAVIYANI -0792 ; [.249C.0020.0002] # THAANA LETTER ZAVIYANI -0793 ; [.249D.0020.0002] # THAANA LETTER TAVIYANI -0794 ; [.249E.0020.0002] # THAANA LETTER YAA -0795 ; [.249F.0020.0002] # THAANA LETTER PAVIYANI -0796 ; [.24A0.0020.0002] # THAANA LETTER JAVIYANI -0797 ; [.24A1.0020.0002] # THAANA LETTER CHAVIYANI -07B1 ; [.24A2.0020.0002] # THAANA LETTER NAA -07A6 ; [.24A3.0020.0002] # THAANA ABAFILI -07A7 ; [.24A4.0020.0002] # THAANA AABAAFILI -07A8 ; [.24A5.0020.0002] # THAANA IBIFILI -07A9 ; [.24A6.0020.0002] # THAANA EEBEEFILI -07AA ; [.24A7.0020.0002] # THAANA UBUFILI -07AB ; [.24A8.0020.0002] # THAANA OOBOOFILI -07AC ; [.24A9.0020.0002] # THAANA EBEFILI -07AD ; [.24AA.0020.0002] # THAANA EYBEYFILI -07AE ; [.24AB.0020.0002] # THAANA OBOFILI -07AF ; [.24AC.0020.0002] # THAANA OABOAFILI -07B0 ; [.24AD.0020.0002] # THAANA SUKUN -07CA ; [.24AE.0020.0002] # NKO LETTER A -07CB ; [.24AF.0020.0002] # NKO LETTER EE -07CC ; [.24B0.0020.0002] # NKO LETTER I -07CD ; [.24B1.0020.0002] # NKO LETTER E -07CE ; [.24B2.0020.0002] # NKO LETTER U -07CF ; [.24B3.0020.0002] # NKO LETTER OO -07D0 ; [.24B4.0020.0002] # NKO LETTER O -07D1 ; [.24B5.0020.0002] # NKO LETTER DAGBASINNA -07D2 ; [.24B6.0020.0002] # NKO LETTER N -07D3 ; [.24B7.0020.0002] # NKO LETTER BA -07D4 ; [.24B8.0020.0002] # NKO LETTER PA -07D5 ; [.24B9.0020.0002] # NKO LETTER TA -07D6 ; [.24BA.0020.0002] # NKO LETTER JA -07E8 ; [.24BA.0020.0004][.0000.0111.0004] # NKO LETTER JONA JA -07D7 ; [.24BB.0020.0002] # NKO LETTER CHA -07E9 ; [.24BB.0020.0004][.0000.0111.0004] # NKO LETTER JONA CHA -07D8 ; [.24BC.0020.0002] # NKO LETTER DA -07D9 ; [.24BD.0020.0002] # NKO LETTER RA -07EA ; [.24BD.0020.0004][.0000.0111.0004] # NKO LETTER JONA RA -07DA ; [.24BE.0020.0002] # NKO LETTER RRA -07DB ; [.24BF.0020.0002] # NKO LETTER SA -07DC ; [.24C0.0020.0002] # NKO LETTER GBA -07DD ; [.24C1.0020.0002] # NKO LETTER FA -07DE ; [.24C2.0020.0002] # NKO LETTER KA -07DF ; [.24C3.0020.0002] # NKO LETTER LA -07E0 ; [.24C4.0020.0002] # NKO LETTER NA WOLOSO -07E1 ; [.24C5.0020.0002] # NKO LETTER MA -07E2 ; [.24C6.0020.0002] # NKO LETTER NYA -07E3 ; [.24C7.0020.0002] # NKO LETTER NA -07E4 ; [.24C8.0020.0002] # NKO LETTER HA -07E5 ; [.24C9.0020.0002] # NKO LETTER WA -07E6 ; [.24CA.0020.0002] # NKO LETTER YA -07E7 ; [.24CB.0020.0002] # NKO LETTER NYA WOLOSO -07F4 ; [.24CC.0020.0002] # NKO HIGH TONE APOSTROPHE -07F5 ; [.24CD.0020.0002] # NKO LOW TONE APOSTROPHE -2D30 ; [.24CE.0020.0002] # TIFINAGH LETTER YA -2D31 ; [.24CF.0020.0002] # TIFINAGH LETTER YAB -2D32 ; [.24D0.0020.0002] # TIFINAGH LETTER YABH -2D33 ; [.24D1.0020.0002] # TIFINAGH LETTER YAG -2D34 ; [.24D2.0020.0002] # TIFINAGH LETTER YAGHH -2D35 ; [.24D3.0020.0002] # TIFINAGH LETTER BERBER ACADEMY YAJ -2D36 ; [.24D4.0020.0002] # TIFINAGH LETTER YAJ -2D37 ; [.24D5.0020.0002] # TIFINAGH LETTER YAD -2D38 ; [.24D6.0020.0002] # TIFINAGH LETTER YADH -2D39 ; [.24D7.0020.0002] # TIFINAGH LETTER YADD -2D3A ; [.24D8.0020.0002] # TIFINAGH LETTER YADDH -2D3B ; [.24D9.0020.0002] # TIFINAGH LETTER YEY -2D66 ; [.24DA.0020.0002] # TIFINAGH LETTER YE -2D3C ; [.24DB.0020.0002] # TIFINAGH LETTER YAF -2D3D ; [.24DC.0020.0002] # TIFINAGH LETTER YAK -2D3E ; [.24DD.0020.0002] # TIFINAGH LETTER TUAREG YAK -2D3F ; [.24DE.0020.0002] # TIFINAGH LETTER YAKHH -2D40 ; [.24DF.0020.0002] # TIFINAGH LETTER YAH -2D41 ; [.24E0.0020.0002] # TIFINAGH LETTER BERBER ACADEMY YAH -2D42 ; [.24E1.0020.0002] # TIFINAGH LETTER TUAREG YAH -2D43 ; [.24E2.0020.0002] # TIFINAGH LETTER YAHH -2D44 ; [.24E3.0020.0002] # TIFINAGH LETTER YAA -2D45 ; [.24E4.0020.0002] # TIFINAGH LETTER YAKH -2D46 ; [.24E5.0020.0002] # TIFINAGH LETTER TUAREG YAKH -2D47 ; [.24E6.0020.0002] # TIFINAGH LETTER YAQ -2D48 ; [.24E7.0020.0002] # TIFINAGH LETTER TUAREG YAQ -2D49 ; [.24E8.0020.0002] # TIFINAGH LETTER YI -2D4A ; [.24E9.0020.0002] # TIFINAGH LETTER YAZH -2D4B ; [.24EA.0020.0002] # TIFINAGH LETTER AHAGGAR YAZH -2D4C ; [.24EB.0020.0002] # TIFINAGH LETTER TUAREG YAZH -2D4D ; [.24EC.0020.0002] # TIFINAGH LETTER YAL -2D4E ; [.24ED.0020.0002] # TIFINAGH LETTER YAM -2D4F ; [.24EE.0020.0002] # TIFINAGH LETTER YAN -2D50 ; [.24EF.0020.0002] # TIFINAGH LETTER TUAREG YAGN -2D51 ; [.24F0.0020.0002] # TIFINAGH LETTER TUAREG YANG -2D52 ; [.24F1.0020.0002] # TIFINAGH LETTER YAP -2D53 ; [.24F2.0020.0002] # TIFINAGH LETTER YU -2D67 ; [.24F3.0020.0002] # TIFINAGH LETTER YO -2D54 ; [.24F4.0020.0002] # TIFINAGH LETTER YAR -2D55 ; [.24F5.0020.0002] # TIFINAGH LETTER YARR -2D56 ; [.24F6.0020.0002] # TIFINAGH LETTER YAGH -2D57 ; [.24F7.0020.0002] # TIFINAGH LETTER TUAREG YAGH -2D58 ; [.24F8.0020.0002] # TIFINAGH LETTER AYER YAGH -2D59 ; [.24F9.0020.0002] # TIFINAGH LETTER YAS -2D5A ; [.24FA.0020.0002] # TIFINAGH LETTER YASS -2D5B ; [.24FB.0020.0002] # TIFINAGH LETTER YASH -2D5C ; [.24FC.0020.0002] # TIFINAGH LETTER YAT -2D5D ; [.24FD.0020.0002] # TIFINAGH LETTER YATH -2D5E ; [.24FE.0020.0002] # TIFINAGH LETTER YACH -2D5F ; [.24FF.0020.0002] # TIFINAGH LETTER YATT -2D60 ; [.2500.0020.0002] # TIFINAGH LETTER YAV -2D61 ; [.2501.0020.0002] # TIFINAGH LETTER YAW -2D62 ; [.2502.0020.0002] # TIFINAGH LETTER YAY -2D63 ; [.2503.0020.0002] # TIFINAGH LETTER YAZ -2D64 ; [.2504.0020.0002] # TIFINAGH LETTER TAWELLEMET YAZ -2D65 ; [.2505.0020.0002] # TIFINAGH LETTER YAZZ -2D6F ; [.2506.0020.0002] # TIFINAGH MODIFIER LETTER LABIALIZATION MARK -1200 ; [.2507.0020.0002] # ETHIOPIC SYLLABLE HA -1201 ; [.2508.0020.0002] # ETHIOPIC SYLLABLE HU -1202 ; [.2509.0020.0002] # ETHIOPIC SYLLABLE HI -1203 ; [.250A.0020.0002] # ETHIOPIC SYLLABLE HAA -1204 ; [.250B.0020.0002] # ETHIOPIC SYLLABLE HEE -1205 ; [.250C.0020.0002] # ETHIOPIC SYLLABLE HE -1206 ; [.250D.0020.0002] # ETHIOPIC SYLLABLE HO -1207 ; [.250E.0020.0002] # ETHIOPIC SYLLABLE HOA -1208 ; [.250F.0020.0002] # ETHIOPIC SYLLABLE LA -1209 ; [.2510.0020.0002] # ETHIOPIC SYLLABLE LU -120A ; [.2511.0020.0002] # ETHIOPIC SYLLABLE LI -120B ; [.2512.0020.0002] # ETHIOPIC SYLLABLE LAA -120C ; [.2513.0020.0002] # ETHIOPIC SYLLABLE LEE -120D ; [.2514.0020.0002] # ETHIOPIC SYLLABLE LE -120E ; [.2515.0020.0002] # ETHIOPIC SYLLABLE LO -120F ; [.2516.0020.0002] # ETHIOPIC SYLLABLE LWA -2D80 ; [.2517.0020.0002] # ETHIOPIC SYLLABLE LOA -1210 ; [.2518.0020.0002] # ETHIOPIC SYLLABLE HHA -1211 ; [.2519.0020.0002] # ETHIOPIC SYLLABLE HHU -1212 ; [.251A.0020.0002] # ETHIOPIC SYLLABLE HHI -1213 ; [.251B.0020.0002] # ETHIOPIC SYLLABLE HHAA -1214 ; [.251C.0020.0002] # ETHIOPIC SYLLABLE HHEE -1215 ; [.251D.0020.0002] # ETHIOPIC SYLLABLE HHE -1216 ; [.251E.0020.0002] # ETHIOPIC SYLLABLE HHO -1217 ; [.251F.0020.0002] # ETHIOPIC SYLLABLE HHWA -1218 ; [.2520.0020.0002] # ETHIOPIC SYLLABLE MA -1219 ; [.2521.0020.0002] # ETHIOPIC SYLLABLE MU -121A ; [.2522.0020.0002] # ETHIOPIC SYLLABLE MI -121B ; [.2523.0020.0002] # ETHIOPIC SYLLABLE MAA -121C ; [.2524.0020.0002] # ETHIOPIC SYLLABLE MEE -121D ; [.2525.0020.0002] # ETHIOPIC SYLLABLE ME -121E ; [.2526.0020.0002] # ETHIOPIC SYLLABLE MO -121F ; [.2527.0020.0002] # ETHIOPIC SYLLABLE MWA -1380 ; [.2528.0020.0002] # ETHIOPIC SYLLABLE SEBATBEIT MWA -1381 ; [.2529.0020.0002] # ETHIOPIC SYLLABLE MWI -1382 ; [.252A.0020.0002] # ETHIOPIC SYLLABLE MWEE -1383 ; [.252B.0020.0002] # ETHIOPIC SYLLABLE MWE -2D81 ; [.252C.0020.0002] # ETHIOPIC SYLLABLE MOA -1220 ; [.252D.0020.0002] # ETHIOPIC SYLLABLE SZA -1221 ; [.252E.0020.0002] # ETHIOPIC SYLLABLE SZU -1222 ; [.252F.0020.0002] # ETHIOPIC SYLLABLE SZI -1223 ; [.2530.0020.0002] # ETHIOPIC SYLLABLE SZAA -1224 ; [.2531.0020.0002] # ETHIOPIC SYLLABLE SZEE -1225 ; [.2532.0020.0002] # ETHIOPIC SYLLABLE SZE -1226 ; [.2533.0020.0002] # ETHIOPIC SYLLABLE SZO -1227 ; [.2534.0020.0002] # ETHIOPIC SYLLABLE SZWA -1228 ; [.2535.0020.0002] # ETHIOPIC SYLLABLE RA -1229 ; [.2536.0020.0002] # ETHIOPIC SYLLABLE RU -122A ; [.2537.0020.0002] # ETHIOPIC SYLLABLE RI -122B ; [.2538.0020.0002] # ETHIOPIC SYLLABLE RAA -122C ; [.2539.0020.0002] # ETHIOPIC SYLLABLE REE -122D ; [.253A.0020.0002] # ETHIOPIC SYLLABLE RE -122E ; [.253B.0020.0002] # ETHIOPIC SYLLABLE RO -122F ; [.253C.0020.0002] # ETHIOPIC SYLLABLE RWA -2D82 ; [.253D.0020.0002] # ETHIOPIC SYLLABLE ROA -1230 ; [.253E.0020.0002] # ETHIOPIC SYLLABLE SA -1231 ; [.253F.0020.0002] # ETHIOPIC SYLLABLE SU -1232 ; [.2540.0020.0002] # ETHIOPIC SYLLABLE SI -1233 ; [.2541.0020.0002] # ETHIOPIC SYLLABLE SAA -1234 ; [.2542.0020.0002] # ETHIOPIC SYLLABLE SEE -1235 ; [.2543.0020.0002] # ETHIOPIC SYLLABLE SE -1236 ; [.2544.0020.0002] # ETHIOPIC SYLLABLE SO -1237 ; [.2545.0020.0002] # ETHIOPIC SYLLABLE SWA -2D83 ; [.2546.0020.0002] # ETHIOPIC SYLLABLE SOA -AB01 ; [.2547.0020.0002] # ETHIOPIC SYLLABLE TTHU -AB02 ; [.2548.0020.0002] # ETHIOPIC SYLLABLE TTHI -AB03 ; [.2549.0020.0002] # ETHIOPIC SYLLABLE TTHAA -AB04 ; [.254A.0020.0002] # ETHIOPIC SYLLABLE TTHEE -AB05 ; [.254B.0020.0002] # ETHIOPIC SYLLABLE TTHE -AB06 ; [.254C.0020.0002] # ETHIOPIC SYLLABLE TTHO -1238 ; [.254D.0020.0002] # ETHIOPIC SYLLABLE SHA -1239 ; [.254E.0020.0002] # ETHIOPIC SYLLABLE SHU -123A ; [.254F.0020.0002] # ETHIOPIC SYLLABLE SHI -123B ; [.2550.0020.0002] # ETHIOPIC SYLLABLE SHAA -123C ; [.2551.0020.0002] # ETHIOPIC SYLLABLE SHEE -123D ; [.2552.0020.0002] # ETHIOPIC SYLLABLE SHE -123E ; [.2553.0020.0002] # ETHIOPIC SYLLABLE SHO -123F ; [.2554.0020.0002] # ETHIOPIC SYLLABLE SHWA -2D84 ; [.2555.0020.0002] # ETHIOPIC SYLLABLE SHOA -1240 ; [.2556.0020.0002] # ETHIOPIC SYLLABLE QA -1241 ; [.2557.0020.0002] # ETHIOPIC SYLLABLE QU -1242 ; [.2558.0020.0002] # ETHIOPIC SYLLABLE QI -1243 ; [.2559.0020.0002] # ETHIOPIC SYLLABLE QAA -1244 ; [.255A.0020.0002] # ETHIOPIC SYLLABLE QEE -1245 ; [.255B.0020.0002] # ETHIOPIC SYLLABLE QE -1246 ; [.255C.0020.0002] # ETHIOPIC SYLLABLE QO -1247 ; [.255D.0020.0002] # ETHIOPIC SYLLABLE QOA -1248 ; [.255E.0020.0002] # ETHIOPIC SYLLABLE QWA -124A ; [.255F.0020.0002] # ETHIOPIC SYLLABLE QWI -124B ; [.2560.0020.0002] # ETHIOPIC SYLLABLE QWAA -124C ; [.2561.0020.0002] # ETHIOPIC SYLLABLE QWEE -124D ; [.2562.0020.0002] # ETHIOPIC SYLLABLE QWE -1250 ; [.2563.0020.0002] # ETHIOPIC SYLLABLE QHA -1251 ; [.2564.0020.0002] # ETHIOPIC SYLLABLE QHU -1252 ; [.2565.0020.0002] # ETHIOPIC SYLLABLE QHI -1253 ; [.2566.0020.0002] # ETHIOPIC SYLLABLE QHAA -1254 ; [.2567.0020.0002] # ETHIOPIC SYLLABLE QHEE -1255 ; [.2568.0020.0002] # ETHIOPIC SYLLABLE QHE -1256 ; [.2569.0020.0002] # ETHIOPIC SYLLABLE QHO -1258 ; [.256A.0020.0002] # ETHIOPIC SYLLABLE QHWA -125A ; [.256B.0020.0002] # ETHIOPIC SYLLABLE QHWI -125B ; [.256C.0020.0002] # ETHIOPIC SYLLABLE QHWAA -125C ; [.256D.0020.0002] # ETHIOPIC SYLLABLE QHWEE -125D ; [.256E.0020.0002] # ETHIOPIC SYLLABLE QHWE -1260 ; [.256F.0020.0002] # ETHIOPIC SYLLABLE BA -1261 ; [.2570.0020.0002] # ETHIOPIC SYLLABLE BU -1262 ; [.2571.0020.0002] # ETHIOPIC SYLLABLE BI -1263 ; [.2572.0020.0002] # ETHIOPIC SYLLABLE BAA -1264 ; [.2573.0020.0002] # ETHIOPIC SYLLABLE BEE -1265 ; [.2574.0020.0002] # ETHIOPIC SYLLABLE BE -1266 ; [.2575.0020.0002] # ETHIOPIC SYLLABLE BO -1267 ; [.2576.0020.0002] # ETHIOPIC SYLLABLE BWA -1384 ; [.2577.0020.0002] # ETHIOPIC SYLLABLE SEBATBEIT BWA -1385 ; [.2578.0020.0002] # ETHIOPIC SYLLABLE BWI -1386 ; [.2579.0020.0002] # ETHIOPIC SYLLABLE BWEE -1387 ; [.257A.0020.0002] # ETHIOPIC SYLLABLE BWE -2D85 ; [.257B.0020.0002] # ETHIOPIC SYLLABLE BOA -1268 ; [.257C.0020.0002] # ETHIOPIC SYLLABLE VA -1269 ; [.257D.0020.0002] # ETHIOPIC SYLLABLE VU -126A ; [.257E.0020.0002] # ETHIOPIC SYLLABLE VI -126B ; [.257F.0020.0002] # ETHIOPIC SYLLABLE VAA -126C ; [.2580.0020.0002] # ETHIOPIC SYLLABLE VEE -126D ; [.2581.0020.0002] # ETHIOPIC SYLLABLE VE -126E ; [.2582.0020.0002] # ETHIOPIC SYLLABLE VO -126F ; [.2583.0020.0002] # ETHIOPIC SYLLABLE VWA -1270 ; [.2584.0020.0002] # ETHIOPIC SYLLABLE TA -1271 ; [.2585.0020.0002] # ETHIOPIC SYLLABLE TU -1272 ; [.2586.0020.0002] # ETHIOPIC SYLLABLE TI -1273 ; [.2587.0020.0002] # ETHIOPIC SYLLABLE TAA -1274 ; [.2588.0020.0002] # ETHIOPIC SYLLABLE TEE -1275 ; [.2589.0020.0002] # ETHIOPIC SYLLABLE TE -1276 ; [.258A.0020.0002] # ETHIOPIC SYLLABLE TO -1277 ; [.258B.0020.0002] # ETHIOPIC SYLLABLE TWA -2D86 ; [.258C.0020.0002] # ETHIOPIC SYLLABLE TOA -1278 ; [.258D.0020.0002] # ETHIOPIC SYLLABLE CA -1279 ; [.258E.0020.0002] # ETHIOPIC SYLLABLE CU -127A ; [.258F.0020.0002] # ETHIOPIC SYLLABLE CI -127B ; [.2590.0020.0002] # ETHIOPIC SYLLABLE CAA -127C ; [.2591.0020.0002] # ETHIOPIC SYLLABLE CEE -127D ; [.2592.0020.0002] # ETHIOPIC SYLLABLE CE -127E ; [.2593.0020.0002] # ETHIOPIC SYLLABLE CO -127F ; [.2594.0020.0002] # ETHIOPIC SYLLABLE CWA -2D87 ; [.2595.0020.0002] # ETHIOPIC SYLLABLE COA -1280 ; [.2596.0020.0002] # ETHIOPIC SYLLABLE XA -1281 ; [.2597.0020.0002] # ETHIOPIC SYLLABLE XU -1282 ; [.2598.0020.0002] # ETHIOPIC SYLLABLE XI -1283 ; [.2599.0020.0002] # ETHIOPIC SYLLABLE XAA -1284 ; [.259A.0020.0002] # ETHIOPIC SYLLABLE XEE -1285 ; [.259B.0020.0002] # ETHIOPIC SYLLABLE XE -1286 ; [.259C.0020.0002] # ETHIOPIC SYLLABLE XO -1287 ; [.259D.0020.0002] # ETHIOPIC SYLLABLE XOA -1288 ; [.259E.0020.0002] # ETHIOPIC SYLLABLE XWA -128A ; [.259F.0020.0002] # ETHIOPIC SYLLABLE XWI -128B ; [.25A0.0020.0002] # ETHIOPIC SYLLABLE XWAA -128C ; [.25A1.0020.0002] # ETHIOPIC SYLLABLE XWEE -128D ; [.25A2.0020.0002] # ETHIOPIC SYLLABLE XWE -1290 ; [.25A3.0020.0002] # ETHIOPIC SYLLABLE NA -1291 ; [.25A4.0020.0002] # ETHIOPIC SYLLABLE NU -1292 ; [.25A5.0020.0002] # ETHIOPIC SYLLABLE NI -1293 ; [.25A6.0020.0002] # ETHIOPIC SYLLABLE NAA -1294 ; [.25A7.0020.0002] # ETHIOPIC SYLLABLE NEE -1295 ; [.25A8.0020.0002] # ETHIOPIC SYLLABLE NE -1296 ; [.25A9.0020.0002] # ETHIOPIC SYLLABLE NO -1297 ; [.25AA.0020.0002] # ETHIOPIC SYLLABLE NWA -2D88 ; [.25AB.0020.0002] # ETHIOPIC SYLLABLE NOA -1298 ; [.25AC.0020.0002] # ETHIOPIC SYLLABLE NYA -1299 ; [.25AD.0020.0002] # ETHIOPIC SYLLABLE NYU -129A ; [.25AE.0020.0002] # ETHIOPIC SYLLABLE NYI -129B ; [.25AF.0020.0002] # ETHIOPIC SYLLABLE NYAA -129C ; [.25B0.0020.0002] # ETHIOPIC SYLLABLE NYEE -129D ; [.25B1.0020.0002] # ETHIOPIC SYLLABLE NYE -129E ; [.25B2.0020.0002] # ETHIOPIC SYLLABLE NYO -129F ; [.25B3.0020.0002] # ETHIOPIC SYLLABLE NYWA -2D89 ; [.25B4.0020.0002] # ETHIOPIC SYLLABLE NYOA -12A0 ; [.25B5.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL A -12A1 ; [.25B6.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL U -12A2 ; [.25B7.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL I -12A3 ; [.25B8.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL AA -12A4 ; [.25B9.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL EE -12A5 ; [.25BA.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL E -12A6 ; [.25BB.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL O -12A7 ; [.25BC.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL WA -2D8A ; [.25BD.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL OA -12A8 ; [.25BE.0020.0002] # ETHIOPIC SYLLABLE KA -12A9 ; [.25BF.0020.0002] # ETHIOPIC SYLLABLE KU -12AA ; [.25C0.0020.0002] # ETHIOPIC SYLLABLE KI -12AB ; [.25C1.0020.0002] # ETHIOPIC SYLLABLE KAA -12AC ; [.25C2.0020.0002] # ETHIOPIC SYLLABLE KEE -12AD ; [.25C3.0020.0002] # ETHIOPIC SYLLABLE KE -12AE ; [.25C4.0020.0002] # ETHIOPIC SYLLABLE KO -12AF ; [.25C5.0020.0002] # ETHIOPIC SYLLABLE KOA -12B0 ; [.25C6.0020.0002] # ETHIOPIC SYLLABLE KWA -12B2 ; [.25C7.0020.0002] # ETHIOPIC SYLLABLE KWI -12B3 ; [.25C8.0020.0002] # ETHIOPIC SYLLABLE KWAA -12B4 ; [.25C9.0020.0002] # ETHIOPIC SYLLABLE KWEE -12B5 ; [.25CA.0020.0002] # ETHIOPIC SYLLABLE KWE -12B8 ; [.25CB.0020.0002] # ETHIOPIC SYLLABLE KXA -12B9 ; [.25CC.0020.0002] # ETHIOPIC SYLLABLE KXU -12BA ; [.25CD.0020.0002] # ETHIOPIC SYLLABLE KXI -12BB ; [.25CE.0020.0002] # ETHIOPIC SYLLABLE KXAA -12BC ; [.25CF.0020.0002] # ETHIOPIC SYLLABLE KXEE -12BD ; [.25D0.0020.0002] # ETHIOPIC SYLLABLE KXE -12BE ; [.25D1.0020.0002] # ETHIOPIC SYLLABLE KXO -12C0 ; [.25D2.0020.0002] # ETHIOPIC SYLLABLE KXWA -12C2 ; [.25D3.0020.0002] # ETHIOPIC SYLLABLE KXWI -12C3 ; [.25D4.0020.0002] # ETHIOPIC SYLLABLE KXWAA -12C4 ; [.25D5.0020.0002] # ETHIOPIC SYLLABLE KXWEE -12C5 ; [.25D6.0020.0002] # ETHIOPIC SYLLABLE KXWE -12C8 ; [.25D7.0020.0002] # ETHIOPIC SYLLABLE WA -12C9 ; [.25D8.0020.0002] # ETHIOPIC SYLLABLE WU -12CA ; [.25D9.0020.0002] # ETHIOPIC SYLLABLE WI -12CB ; [.25DA.0020.0002] # ETHIOPIC SYLLABLE WAA -12CC ; [.25DB.0020.0002] # ETHIOPIC SYLLABLE WEE -12CD ; [.25DC.0020.0002] # ETHIOPIC SYLLABLE WE -12CE ; [.25DD.0020.0002] # ETHIOPIC SYLLABLE WO -12CF ; [.25DE.0020.0002] # ETHIOPIC SYLLABLE WOA -12D0 ; [.25DF.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL A -12D1 ; [.25E0.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL U -12D2 ; [.25E1.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL I -12D3 ; [.25E2.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL AA -12D4 ; [.25E3.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL EE -12D5 ; [.25E4.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL E -12D6 ; [.25E5.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL O -12D8 ; [.25E6.0020.0002] # ETHIOPIC SYLLABLE ZA -12D9 ; [.25E7.0020.0002] # ETHIOPIC SYLLABLE ZU -12DA ; [.25E8.0020.0002] # ETHIOPIC SYLLABLE ZI -12DB ; [.25E9.0020.0002] # ETHIOPIC SYLLABLE ZAA -12DC ; [.25EA.0020.0002] # ETHIOPIC SYLLABLE ZEE -12DD ; [.25EB.0020.0002] # ETHIOPIC SYLLABLE ZE -12DE ; [.25EC.0020.0002] # ETHIOPIC SYLLABLE ZO -12DF ; [.25ED.0020.0002] # ETHIOPIC SYLLABLE ZWA -2D8B ; [.25EE.0020.0002] # ETHIOPIC SYLLABLE ZOA -AB11 ; [.25EF.0020.0002] # ETHIOPIC SYLLABLE DZU -AB12 ; [.25F0.0020.0002] # ETHIOPIC SYLLABLE DZI -AB13 ; [.25F1.0020.0002] # ETHIOPIC SYLLABLE DZAA -AB14 ; [.25F2.0020.0002] # ETHIOPIC SYLLABLE DZEE -AB15 ; [.25F3.0020.0002] # ETHIOPIC SYLLABLE DZE -AB16 ; [.25F4.0020.0002] # ETHIOPIC SYLLABLE DZO -12E0 ; [.25F5.0020.0002] # ETHIOPIC SYLLABLE ZHA -12E1 ; [.25F6.0020.0002] # ETHIOPIC SYLLABLE ZHU -12E2 ; [.25F7.0020.0002] # ETHIOPIC SYLLABLE ZHI -12E3 ; [.25F8.0020.0002] # ETHIOPIC SYLLABLE ZHAA -12E4 ; [.25F9.0020.0002] # ETHIOPIC SYLLABLE ZHEE -12E5 ; [.25FA.0020.0002] # ETHIOPIC SYLLABLE ZHE -12E6 ; [.25FB.0020.0002] # ETHIOPIC SYLLABLE ZHO -12E7 ; [.25FC.0020.0002] # ETHIOPIC SYLLABLE ZHWA -12E8 ; [.25FD.0020.0002] # ETHIOPIC SYLLABLE YA -12E9 ; [.25FE.0020.0002] # ETHIOPIC SYLLABLE YU -12EA ; [.25FF.0020.0002] # ETHIOPIC SYLLABLE YI -12EB ; [.2600.0020.0002] # ETHIOPIC SYLLABLE YAA -12EC ; [.2601.0020.0002] # ETHIOPIC SYLLABLE YEE -12ED ; [.2602.0020.0002] # ETHIOPIC SYLLABLE YE -12EE ; [.2603.0020.0002] # ETHIOPIC SYLLABLE YO -12EF ; [.2604.0020.0002] # ETHIOPIC SYLLABLE YOA -12F0 ; [.2605.0020.0002] # ETHIOPIC SYLLABLE DA -12F1 ; [.2606.0020.0002] # ETHIOPIC SYLLABLE DU -12F2 ; [.2607.0020.0002] # ETHIOPIC SYLLABLE DI -12F3 ; [.2608.0020.0002] # ETHIOPIC SYLLABLE DAA -12F4 ; [.2609.0020.0002] # ETHIOPIC SYLLABLE DEE -12F5 ; [.260A.0020.0002] # ETHIOPIC SYLLABLE DE -12F6 ; [.260B.0020.0002] # ETHIOPIC SYLLABLE DO -12F7 ; [.260C.0020.0002] # ETHIOPIC SYLLABLE DWA -2D8C ; [.260D.0020.0002] # ETHIOPIC SYLLABLE DOA -AB09 ; [.260E.0020.0002] # ETHIOPIC SYLLABLE DDHU -AB0A ; [.260F.0020.0002] # ETHIOPIC SYLLABLE DDHI -AB0B ; [.2610.0020.0002] # ETHIOPIC SYLLABLE DDHAA -AB0C ; [.2611.0020.0002] # ETHIOPIC SYLLABLE DDHEE -AB0D ; [.2612.0020.0002] # ETHIOPIC SYLLABLE DDHE -AB0E ; [.2613.0020.0002] # ETHIOPIC SYLLABLE DDHO -12F8 ; [.2614.0020.0002] # ETHIOPIC SYLLABLE DDA -12F9 ; [.2615.0020.0002] # ETHIOPIC SYLLABLE DDU -12FA ; [.2616.0020.0002] # ETHIOPIC SYLLABLE DDI -12FB ; [.2617.0020.0002] # ETHIOPIC SYLLABLE DDAA -12FC ; [.2618.0020.0002] # ETHIOPIC SYLLABLE DDEE -12FD ; [.2619.0020.0002] # ETHIOPIC SYLLABLE DDE -12FE ; [.261A.0020.0002] # ETHIOPIC SYLLABLE DDO -12FF ; [.261B.0020.0002] # ETHIOPIC SYLLABLE DDWA -2D8D ; [.261C.0020.0002] # ETHIOPIC SYLLABLE DDOA -1300 ; [.261D.0020.0002] # ETHIOPIC SYLLABLE JA -1301 ; [.261E.0020.0002] # ETHIOPIC SYLLABLE JU -1302 ; [.261F.0020.0002] # ETHIOPIC SYLLABLE JI -1303 ; [.2620.0020.0002] # ETHIOPIC SYLLABLE JAA -1304 ; [.2621.0020.0002] # ETHIOPIC SYLLABLE JEE -1305 ; [.2622.0020.0002] # ETHIOPIC SYLLABLE JE -1306 ; [.2623.0020.0002] # ETHIOPIC SYLLABLE JO -1307 ; [.2624.0020.0002] # ETHIOPIC SYLLABLE JWA -2D8E ; [.2625.0020.0002] # ETHIOPIC SYLLABLE JOA -1308 ; [.2626.0020.0002] # ETHIOPIC SYLLABLE GA -1309 ; [.2627.0020.0002] # ETHIOPIC SYLLABLE GU -130A ; [.2628.0020.0002] # ETHIOPIC SYLLABLE GI -130B ; [.2629.0020.0002] # ETHIOPIC SYLLABLE GAA -130C ; [.262A.0020.0002] # ETHIOPIC SYLLABLE GEE -130D ; [.262B.0020.0002] # ETHIOPIC SYLLABLE GE -130E ; [.262C.0020.0002] # ETHIOPIC SYLLABLE GO -130F ; [.262D.0020.0002] # ETHIOPIC SYLLABLE GOA -1310 ; [.262E.0020.0002] # ETHIOPIC SYLLABLE GWA -1312 ; [.262F.0020.0002] # ETHIOPIC SYLLABLE GWI -1313 ; [.2630.0020.0002] # ETHIOPIC SYLLABLE GWAA -1314 ; [.2631.0020.0002] # ETHIOPIC SYLLABLE GWEE -1315 ; [.2632.0020.0002] # ETHIOPIC SYLLABLE GWE -1318 ; [.2633.0020.0002] # ETHIOPIC SYLLABLE GGA -1319 ; [.2634.0020.0002] # ETHIOPIC SYLLABLE GGU -131A ; [.2635.0020.0002] # ETHIOPIC SYLLABLE GGI -131B ; [.2636.0020.0002] # ETHIOPIC SYLLABLE GGAA -131C ; [.2637.0020.0002] # ETHIOPIC SYLLABLE GGEE -131D ; [.2638.0020.0002] # ETHIOPIC SYLLABLE GGE -131E ; [.2639.0020.0002] # ETHIOPIC SYLLABLE GGO -131F ; [.263A.0020.0002] # ETHIOPIC SYLLABLE GGWAA -2D93 ; [.263B.0020.0002] # ETHIOPIC SYLLABLE GGWA -2D94 ; [.263C.0020.0002] # ETHIOPIC SYLLABLE GGWI -2D95 ; [.263D.0020.0002] # ETHIOPIC SYLLABLE GGWEE -2D96 ; [.263E.0020.0002] # ETHIOPIC SYLLABLE GGWE -1320 ; [.263F.0020.0002] # ETHIOPIC SYLLABLE THA -1321 ; [.2640.0020.0002] # ETHIOPIC SYLLABLE THU -1322 ; [.2641.0020.0002] # ETHIOPIC SYLLABLE THI -1323 ; [.2642.0020.0002] # ETHIOPIC SYLLABLE THAA -1324 ; [.2643.0020.0002] # ETHIOPIC SYLLABLE THEE -1325 ; [.2644.0020.0002] # ETHIOPIC SYLLABLE THE -1326 ; [.2645.0020.0002] # ETHIOPIC SYLLABLE THO -1327 ; [.2646.0020.0002] # ETHIOPIC SYLLABLE THWA -2D8F ; [.2647.0020.0002] # ETHIOPIC SYLLABLE THOA -1328 ; [.2648.0020.0002] # ETHIOPIC SYLLABLE CHA -1329 ; [.2649.0020.0002] # ETHIOPIC SYLLABLE CHU -132A ; [.264A.0020.0002] # ETHIOPIC SYLLABLE CHI -132B ; [.264B.0020.0002] # ETHIOPIC SYLLABLE CHAA -132C ; [.264C.0020.0002] # ETHIOPIC SYLLABLE CHEE -132D ; [.264D.0020.0002] # ETHIOPIC SYLLABLE CHE -132E ; [.264E.0020.0002] # ETHIOPIC SYLLABLE CHO -132F ; [.264F.0020.0002] # ETHIOPIC SYLLABLE CHWA -2D90 ; [.2650.0020.0002] # ETHIOPIC SYLLABLE CHOA -AB20 ; [.2651.0020.0002] # ETHIOPIC SYLLABLE CCHHA -AB21 ; [.2652.0020.0002] # ETHIOPIC SYLLABLE CCHHU -AB22 ; [.2653.0020.0002] # ETHIOPIC SYLLABLE CCHHI -AB23 ; [.2654.0020.0002] # ETHIOPIC SYLLABLE CCHHAA -AB24 ; [.2655.0020.0002] # ETHIOPIC SYLLABLE CCHHEE -AB25 ; [.2656.0020.0002] # ETHIOPIC SYLLABLE CCHHE -AB26 ; [.2657.0020.0002] # ETHIOPIC SYLLABLE CCHHO -1330 ; [.2658.0020.0002] # ETHIOPIC SYLLABLE PHA -1331 ; [.2659.0020.0002] # ETHIOPIC SYLLABLE PHU -1332 ; [.265A.0020.0002] # ETHIOPIC SYLLABLE PHI -1333 ; [.265B.0020.0002] # ETHIOPIC SYLLABLE PHAA -1334 ; [.265C.0020.0002] # ETHIOPIC SYLLABLE PHEE -1335 ; [.265D.0020.0002] # ETHIOPIC SYLLABLE PHE -1336 ; [.265E.0020.0002] # ETHIOPIC SYLLABLE PHO -1337 ; [.265F.0020.0002] # ETHIOPIC SYLLABLE PHWA -2D91 ; [.2660.0020.0002] # ETHIOPIC SYLLABLE PHOA -1338 ; [.2661.0020.0002] # ETHIOPIC SYLLABLE TSA -1339 ; [.2662.0020.0002] # ETHIOPIC SYLLABLE TSU -133A ; [.2663.0020.0002] # ETHIOPIC SYLLABLE TSI -133B ; [.2664.0020.0002] # ETHIOPIC SYLLABLE TSAA -133C ; [.2665.0020.0002] # ETHIOPIC SYLLABLE TSEE -133D ; [.2666.0020.0002] # ETHIOPIC SYLLABLE TSE -133E ; [.2667.0020.0002] # ETHIOPIC SYLLABLE TSO -133F ; [.2668.0020.0002] # ETHIOPIC SYLLABLE TSWA -AB28 ; [.2669.0020.0002] # ETHIOPIC SYLLABLE BBA -AB29 ; [.266A.0020.0002] # ETHIOPIC SYLLABLE BBU -AB2A ; [.266B.0020.0002] # ETHIOPIC SYLLABLE BBI -AB2B ; [.266C.0020.0002] # ETHIOPIC SYLLABLE BBAA -AB2C ; [.266D.0020.0002] # ETHIOPIC SYLLABLE BBEE -AB2D ; [.266E.0020.0002] # ETHIOPIC SYLLABLE BBE -AB2E ; [.266F.0020.0002] # ETHIOPIC SYLLABLE BBO -1340 ; [.2670.0020.0002] # ETHIOPIC SYLLABLE TZA -1341 ; [.2671.0020.0002] # ETHIOPIC SYLLABLE TZU -1342 ; [.2672.0020.0002] # ETHIOPIC SYLLABLE TZI -1343 ; [.2673.0020.0002] # ETHIOPIC SYLLABLE TZAA -1344 ; [.2674.0020.0002] # ETHIOPIC SYLLABLE TZEE -1345 ; [.2675.0020.0002] # ETHIOPIC SYLLABLE TZE -1346 ; [.2676.0020.0002] # ETHIOPIC SYLLABLE TZO -1347 ; [.2677.0020.0002] # ETHIOPIC SYLLABLE TZOA -1348 ; [.2678.0020.0002] # ETHIOPIC SYLLABLE FA -1349 ; [.2679.0020.0002] # ETHIOPIC SYLLABLE FU -134A ; [.267A.0020.0002] # ETHIOPIC SYLLABLE FI -134B ; [.267B.0020.0002] # ETHIOPIC SYLLABLE FAA -134C ; [.267C.0020.0002] # ETHIOPIC SYLLABLE FEE -134D ; [.267D.0020.0002] # ETHIOPIC SYLLABLE FE -134E ; [.267E.0020.0002] # ETHIOPIC SYLLABLE FO -134F ; [.267F.0020.0002] # ETHIOPIC SYLLABLE FWA -1388 ; [.2680.0020.0002] # ETHIOPIC SYLLABLE SEBATBEIT FWA -1389 ; [.2681.0020.0002] # ETHIOPIC SYLLABLE FWI -138A ; [.2682.0020.0002] # ETHIOPIC SYLLABLE FWEE -138B ; [.2683.0020.0002] # ETHIOPIC SYLLABLE FWE -1350 ; [.2684.0020.0002] # ETHIOPIC SYLLABLE PA -1351 ; [.2685.0020.0002] # ETHIOPIC SYLLABLE PU -1352 ; [.2686.0020.0002] # ETHIOPIC SYLLABLE PI -1353 ; [.2687.0020.0002] # ETHIOPIC SYLLABLE PAA -1354 ; [.2688.0020.0002] # ETHIOPIC SYLLABLE PEE -1355 ; [.2689.0020.0002] # ETHIOPIC SYLLABLE PE -1356 ; [.268A.0020.0002] # ETHIOPIC SYLLABLE PO -1357 ; [.268B.0020.0002] # ETHIOPIC SYLLABLE PWA -138C ; [.268C.0020.0002] # ETHIOPIC SYLLABLE SEBATBEIT PWA -138D ; [.268D.0020.0002] # ETHIOPIC SYLLABLE PWI -138E ; [.268E.0020.0002] # ETHIOPIC SYLLABLE PWEE -138F ; [.268F.0020.0002] # ETHIOPIC SYLLABLE PWE -2D92 ; [.2690.0020.0002] # ETHIOPIC SYLLABLE POA -1358 ; [.2691.0020.0002] # ETHIOPIC SYLLABLE RYA -1359 ; [.2692.0020.0002] # ETHIOPIC SYLLABLE MYA -135A ; [.2693.0020.0002] # ETHIOPIC SYLLABLE FYA -2DA0 ; [.2694.0020.0002] # ETHIOPIC SYLLABLE SSA -2DA1 ; [.2695.0020.0002] # ETHIOPIC SYLLABLE SSU -2DA2 ; [.2696.0020.0002] # ETHIOPIC SYLLABLE SSI -2DA3 ; [.2697.0020.0002] # ETHIOPIC SYLLABLE SSAA -2DA4 ; [.2698.0020.0002] # ETHIOPIC SYLLABLE SSEE -2DA5 ; [.2699.0020.0002] # ETHIOPIC SYLLABLE SSE -2DA6 ; [.269A.0020.0002] # ETHIOPIC SYLLABLE SSO -2DA8 ; [.269B.0020.0002] # ETHIOPIC SYLLABLE CCA -2DA9 ; [.269C.0020.0002] # ETHIOPIC SYLLABLE CCU -2DAA ; [.269D.0020.0002] # ETHIOPIC SYLLABLE CCI -2DAB ; [.269E.0020.0002] # ETHIOPIC SYLLABLE CCAA -2DAC ; [.269F.0020.0002] # ETHIOPIC SYLLABLE CCEE -2DAD ; [.26A0.0020.0002] # ETHIOPIC SYLLABLE CCE -2DAE ; [.26A1.0020.0002] # ETHIOPIC SYLLABLE CCO -2DB0 ; [.26A2.0020.0002] # ETHIOPIC SYLLABLE ZZA -2DB1 ; [.26A3.0020.0002] # ETHIOPIC SYLLABLE ZZU -2DB2 ; [.26A4.0020.0002] # ETHIOPIC SYLLABLE ZZI -2DB3 ; [.26A5.0020.0002] # ETHIOPIC SYLLABLE ZZAA -2DB4 ; [.26A6.0020.0002] # ETHIOPIC SYLLABLE ZZEE -2DB5 ; [.26A7.0020.0002] # ETHIOPIC SYLLABLE ZZE -2DB6 ; [.26A8.0020.0002] # ETHIOPIC SYLLABLE ZZO -2DB8 ; [.26A9.0020.0002] # ETHIOPIC SYLLABLE CCHA -2DB9 ; [.26AA.0020.0002] # ETHIOPIC SYLLABLE CCHU -2DBA ; [.26AB.0020.0002] # ETHIOPIC SYLLABLE CCHI -2DBB ; [.26AC.0020.0002] # ETHIOPIC SYLLABLE CCHAA -2DBC ; [.26AD.0020.0002] # ETHIOPIC SYLLABLE CCHEE -2DBD ; [.26AE.0020.0002] # ETHIOPIC SYLLABLE CCHE -2DBE ; [.26AF.0020.0002] # ETHIOPIC SYLLABLE CCHO -2DC0 ; [.26B0.0020.0002] # ETHIOPIC SYLLABLE QYA -2DC1 ; [.26B1.0020.0002] # ETHIOPIC SYLLABLE QYU -2DC2 ; [.26B2.0020.0002] # ETHIOPIC SYLLABLE QYI -2DC3 ; [.26B3.0020.0002] # ETHIOPIC SYLLABLE QYAA -2DC4 ; [.26B4.0020.0002] # ETHIOPIC SYLLABLE QYEE -2DC5 ; [.26B5.0020.0002] # ETHIOPIC SYLLABLE QYE -2DC6 ; [.26B6.0020.0002] # ETHIOPIC SYLLABLE QYO -2DC8 ; [.26B7.0020.0002] # ETHIOPIC SYLLABLE KYA -2DC9 ; [.26B8.0020.0002] # ETHIOPIC SYLLABLE KYU -2DCA ; [.26B9.0020.0002] # ETHIOPIC SYLLABLE KYI -2DCB ; [.26BA.0020.0002] # ETHIOPIC SYLLABLE KYAA -2DCC ; [.26BB.0020.0002] # ETHIOPIC SYLLABLE KYEE -2DCD ; [.26BC.0020.0002] # ETHIOPIC SYLLABLE KYE -2DCE ; [.26BD.0020.0002] # ETHIOPIC SYLLABLE KYO -2DD0 ; [.26BE.0020.0002] # ETHIOPIC SYLLABLE XYA -2DD1 ; [.26BF.0020.0002] # ETHIOPIC SYLLABLE XYU -2DD2 ; [.26C0.0020.0002] # ETHIOPIC SYLLABLE XYI -2DD3 ; [.26C1.0020.0002] # ETHIOPIC SYLLABLE XYAA -2DD4 ; [.26C2.0020.0002] # ETHIOPIC SYLLABLE XYEE -2DD5 ; [.26C3.0020.0002] # ETHIOPIC SYLLABLE XYE -2DD6 ; [.26C4.0020.0002] # ETHIOPIC SYLLABLE XYO -2DD8 ; [.26C5.0020.0002] # ETHIOPIC SYLLABLE GYA -2DD9 ; [.26C6.0020.0002] # ETHIOPIC SYLLABLE GYU -2DDA ; [.26C7.0020.0002] # ETHIOPIC SYLLABLE GYI -2DDB ; [.26C8.0020.0002] # ETHIOPIC SYLLABLE GYAA -2DDC ; [.26C9.0020.0002] # ETHIOPIC SYLLABLE GYEE -2DDD ; [.26CA.0020.0002] # ETHIOPIC SYLLABLE GYE -2DDE ; [.26CB.0020.0002] # ETHIOPIC SYLLABLE GYO -0950 ; [.26CC.0020.0002] # DEVANAGARI OM -A8FD ; [.26CD.0020.0002] # DEVANAGARI JAIN OM -0972 ; [.26CE.0020.0002] # DEVANAGARI LETTER CANDRA A -0904 ; [.26CF.0020.0002] # DEVANAGARI LETTER SHORT A -0905 ; [.26D0.0020.0002] # DEVANAGARI LETTER A -0906 ; [.26D1.0020.0002] # DEVANAGARI LETTER AA -0973 ; [.26D2.0020.0002] # DEVANAGARI LETTER OE -0974 ; [.26D3.0020.0002] # DEVANAGARI LETTER OOE -0975 ; [.26D4.0020.0002] # DEVANAGARI LETTER AW -0976 ; [.26D5.0020.0002] # DEVANAGARI LETTER UE -0977 ; [.26D6.0020.0002] # DEVANAGARI LETTER UUE -0907 ; [.26D7.0020.0002] # DEVANAGARI LETTER I -0908 ; [.26D8.0020.0002] # DEVANAGARI LETTER II -0909 ; [.26D9.0020.0002] # DEVANAGARI LETTER U -090A ; [.26DA.0020.0002] # DEVANAGARI LETTER UU -090B ; [.26DB.0020.0002] # DEVANAGARI LETTER VOCALIC R -0960 ; [.26DC.0020.0002] # DEVANAGARI LETTER VOCALIC RR -090C ; [.26DD.0020.0002] # DEVANAGARI LETTER VOCALIC L -0961 ; [.26DE.0020.0002] # DEVANAGARI LETTER VOCALIC LL -090D ; [.26DF.0020.0002] # DEVANAGARI LETTER CANDRA E -090E ; [.26E0.0020.0002] # DEVANAGARI LETTER SHORT E -090F ; [.26E1.0020.0002] # DEVANAGARI LETTER E -0910 ; [.26E2.0020.0002] # DEVANAGARI LETTER AI -0911 ; [.26E3.0020.0002] # DEVANAGARI LETTER CANDRA O -0912 ; [.26E4.0020.0002] # DEVANAGARI LETTER SHORT O -0913 ; [.26E5.0020.0002] # DEVANAGARI LETTER O -0914 ; [.26E6.0020.0002] # DEVANAGARI LETTER AU -0915 ; [.26E7.0020.0002] # DEVANAGARI LETTER KA -0958 ; [.26E7.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER QA -0916 ; [.26E8.0020.0002] # DEVANAGARI LETTER KHA -0959 ; [.26E8.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER KHHA -0917 ; [.26E9.0020.0002] # DEVANAGARI LETTER GA -095A ; [.26E9.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER GHHA -097B ; [.26EA.0020.0002] # DEVANAGARI LETTER GGA -0918 ; [.26EB.0020.0002] # DEVANAGARI LETTER GHA -0919 ; [.26EC.0020.0002] # DEVANAGARI LETTER NGA -091A ; [.26ED.0020.0002] # DEVANAGARI LETTER CA -091B ; [.26EE.0020.0002] # DEVANAGARI LETTER CHA -091C ; [.26EF.0020.0002] # DEVANAGARI LETTER JA -095B ; [.26EF.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER ZA -0979 ; [.26F0.0020.0002] # DEVANAGARI LETTER ZHA -097C ; [.26F1.0020.0002] # DEVANAGARI LETTER JJA -091D ; [.26F2.0020.0002] # DEVANAGARI LETTER JHA -091E ; [.26F3.0020.0002] # DEVANAGARI LETTER NYA -091F ; [.26F4.0020.0002] # DEVANAGARI LETTER TTA -0920 ; [.26F5.0020.0002] # DEVANAGARI LETTER TTHA -0978 ; [.26F6.0020.0002] # DEVANAGARI LETTER MARWARI DDA -0921 ; [.26F7.0020.0002] # DEVANAGARI LETTER DDA -095C ; [.26F7.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER DDDHA -097E ; [.26F8.0020.0002] # DEVANAGARI LETTER DDDA -0922 ; [.26F9.0020.0002] # DEVANAGARI LETTER DDHA -095D ; [.26F9.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER RHA -0923 ; [.26FA.0020.0002] # DEVANAGARI LETTER NNA -0924 ; [.26FB.0020.0002] # DEVANAGARI LETTER TA -0925 ; [.26FC.0020.0002] # DEVANAGARI LETTER THA -0926 ; [.26FD.0020.0002] # DEVANAGARI LETTER DA -0927 ; [.26FE.0020.0002] # DEVANAGARI LETTER DHA -0928 ; [.26FF.0020.0002] # DEVANAGARI LETTER NA -0929 ; [.26FF.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER NNNA -092A ; [.2700.0020.0002] # DEVANAGARI LETTER PA -092B ; [.2701.0020.0002] # DEVANAGARI LETTER PHA -095E ; [.2701.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER FA -092C ; [.2702.0020.0002] # DEVANAGARI LETTER BA -097F ; [.2703.0020.0002] # DEVANAGARI LETTER BBA -092D ; [.2704.0020.0002] # DEVANAGARI LETTER BHA -092E ; [.2705.0020.0002] # DEVANAGARI LETTER MA -092F ; [.2706.0020.0002] # DEVANAGARI LETTER YA -095F ; [.2706.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER YYA -097A ; [.2707.0020.0002] # DEVANAGARI LETTER HEAVY YA -0930 ; [.2708.0020.0002] # DEVANAGARI LETTER RA -0931 ; [.2708.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER RRA -0932 ; [.2709.0020.0002] # DEVANAGARI LETTER LA -0933 ; [.270A.0020.0002] # DEVANAGARI LETTER LLA -0934 ; [.270A.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER LLLA -0935 ; [.270B.0020.0002] # DEVANAGARI LETTER VA -0936 ; [.270C.0020.0002] # DEVANAGARI LETTER SHA -0937 ; [.270D.0020.0002] # DEVANAGARI LETTER SSA -0938 ; [.270E.0020.0002] # DEVANAGARI LETTER SA -0939 ; [.270F.0020.0002] # DEVANAGARI LETTER HA -093D ; [.2710.0020.0002] # DEVANAGARI SIGN AVAGRAHA -097D ; [.2711.0020.0002] # DEVANAGARI LETTER GLOTTAL STOP -1CE9 ; [.2712.0020.0002] # VEDIC SIGN ANUSVARA ANTARGOMUKHA -1CEA ; [.2712.0020.0004] # VEDIC SIGN ANUSVARA BAHIRGOMUKHA -1CEB ; [.2712.0020.0004] # VEDIC SIGN ANUSVARA VAMAGOMUKHA -1CEC ; [.2712.0020.0004] # VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL -1CEE ; [.2712.0020.0004] # VEDIC SIGN HEXIFORM LONG ANUSVARA -1CEF ; [.2712.0020.0004] # VEDIC SIGN LONG ANUSVARA -1CF0 ; [.2712.0020.0004] # VEDIC SIGN RTHANG LONG ANUSVARA -1CF1 ; [.2712.0020.0004] # VEDIC SIGN ANUSVARA UBHAYATO MUKHA -1CF5 ; [.2713.0020.0002] # VEDIC SIGN JIHVAMULIYA -1CF6 ; [.2714.0020.0002] # VEDIC SIGN UPADHMANIYA -A8F2 ; [.2715.0020.0002] # DEVANAGARI SIGN SPACING CANDRABINDU -A8F3 ; [.2715.0020.0004] # DEVANAGARI SIGN CANDRABINDU VIRAMA -A8F4 ; [.2715.0020.0004] # DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA -A8F5 ; [.2715.0020.0004] # DEVANAGARI SIGN CANDRABINDU TWO -A8F6 ; [.2715.0020.0004] # DEVANAGARI SIGN CANDRABINDU THREE -A8F7 ; [.2715.0020.0004] # DEVANAGARI SIGN CANDRABINDU AVAGRAHA -A8FB ; [.2716.0020.0002] # DEVANAGARI HEADSTROKE -093E ; [.2717.0020.0002] # DEVANAGARI VOWEL SIGN AA -093A ; [.2718.0020.0002] # DEVANAGARI VOWEL SIGN OE -093B ; [.2719.0020.0002] # DEVANAGARI VOWEL SIGN OOE -094F ; [.271A.0020.0002] # DEVANAGARI VOWEL SIGN AW -0956 ; [.271B.0020.0002] # DEVANAGARI VOWEL SIGN UE -0957 ; [.271C.0020.0002] # DEVANAGARI VOWEL SIGN UUE -093F ; [.271D.0020.0002] # DEVANAGARI VOWEL SIGN I -0940 ; [.271E.0020.0002] # DEVANAGARI VOWEL SIGN II -0941 ; [.271F.0020.0002] # DEVANAGARI VOWEL SIGN U -0942 ; [.2720.0020.0002] # DEVANAGARI VOWEL SIGN UU -0943 ; [.2721.0020.0002] # DEVANAGARI VOWEL SIGN VOCALIC R -0944 ; [.2722.0020.0002] # DEVANAGARI VOWEL SIGN VOCALIC RR -0962 ; [.2723.0020.0002] # DEVANAGARI VOWEL SIGN VOCALIC L -0963 ; [.2724.0020.0002] # DEVANAGARI VOWEL SIGN VOCALIC LL -0945 ; [.2725.0020.0002] # DEVANAGARI VOWEL SIGN CANDRA E -0955 ; [.2726.0020.0002] # DEVANAGARI VOWEL SIGN CANDRA LONG E -0946 ; [.2727.0020.0002] # DEVANAGARI VOWEL SIGN SHORT E -0947 ; [.2728.0020.0002] # DEVANAGARI VOWEL SIGN E -094E ; [.2729.0020.0002] # DEVANAGARI VOWEL SIGN PRISHTHAMATRA E -0948 ; [.272A.0020.0002] # DEVANAGARI VOWEL SIGN AI -0949 ; [.272B.0020.0002] # DEVANAGARI VOWEL SIGN CANDRA O -094A ; [.272C.0020.0002] # DEVANAGARI VOWEL SIGN SHORT O -094B ; [.272D.0020.0002] # DEVANAGARI VOWEL SIGN O -094C ; [.272E.0020.0002] # DEVANAGARI VOWEL SIGN AU -094D ; [.272F.0020.0002] # DEVANAGARI SIGN VIRAMA -0980 ; [.2730.0020.0002] # BENGALI ANJI -0985 ; [.2731.0020.0002] # BENGALI LETTER A -0986 ; [.2732.0020.0002] # BENGALI LETTER AA -0987 ; [.2733.0020.0002] # BENGALI LETTER I -0988 ; [.2734.0020.0002] # BENGALI LETTER II -0989 ; [.2735.0020.0002] # BENGALI LETTER U -098A ; [.2736.0020.0002] # BENGALI LETTER UU -098B ; [.2737.0020.0002] # BENGALI LETTER VOCALIC R -09E0 ; [.2738.0020.0002] # BENGALI LETTER VOCALIC RR -098C ; [.2739.0020.0002] # BENGALI LETTER VOCALIC L -09E1 ; [.273A.0020.0002] # BENGALI LETTER VOCALIC LL -098F ; [.273B.0020.0002] # BENGALI LETTER E -0990 ; [.273C.0020.0002] # BENGALI LETTER AI -0993 ; [.273D.0020.0002] # BENGALI LETTER O -0994 ; [.273E.0020.0002] # BENGALI LETTER AU -0995 ; [.273F.0020.0002] # BENGALI LETTER KA -0996 ; [.2740.0020.0002] # BENGALI LETTER KHA -0997 ; [.2741.0020.0002] # BENGALI LETTER GA -0998 ; [.2742.0020.0002] # BENGALI LETTER GHA -0999 ; [.2743.0020.0002] # BENGALI LETTER NGA -099A ; [.2744.0020.0002] # BENGALI LETTER CA -099B ; [.2745.0020.0002] # BENGALI LETTER CHA -099C ; [.2746.0020.0002] # BENGALI LETTER JA -099D ; [.2747.0020.0002] # BENGALI LETTER JHA -099E ; [.2748.0020.0002] # BENGALI LETTER NYA -099F ; [.2749.0020.0002] # BENGALI LETTER TTA -09A0 ; [.274A.0020.0002] # BENGALI LETTER TTHA -09A1 ; [.274B.0020.0002] # BENGALI LETTER DDA -09DC ; [.274B.0020.0002][.0000.00C2.0002] # BENGALI LETTER RRA -09A2 ; [.274C.0020.0002] # BENGALI LETTER DDHA -09DD ; [.274C.0020.0002][.0000.00C2.0002] # BENGALI LETTER RHA -09A3 ; [.274D.0020.0002] # BENGALI LETTER NNA -09A4 ; [.274E.0020.0002] # BENGALI LETTER TA -09CE ; [.274E.0020.0004][.276F.0020.0004] # BENGALI LETTER KHANDA TA -09A5 ; [.274F.0020.0002] # BENGALI LETTER THA -09A6 ; [.2750.0020.0002] # BENGALI LETTER DA -09A7 ; [.2751.0020.0002] # BENGALI LETTER DHA -09A8 ; [.2752.0020.0002] # BENGALI LETTER NA -09AA ; [.2753.0020.0002] # BENGALI LETTER PA -09AB ; [.2754.0020.0002] # BENGALI LETTER PHA -09AC ; [.2755.0020.0002] # BENGALI LETTER BA -09AD ; [.2756.0020.0002] # BENGALI LETTER BHA -09AE ; [.2757.0020.0002] # BENGALI LETTER MA -09AF ; [.2758.0020.0002] # BENGALI LETTER YA -09DF ; [.2758.0020.0002][.0000.00C2.0002] # BENGALI LETTER YYA -09B0 ; [.2759.0020.0002] # BENGALI LETTER RA -09F0 ; [.275A.0020.0002] # BENGALI LETTER RA WITH MIDDLE DIAGONAL -09B2 ; [.275B.0020.0002] # BENGALI LETTER LA -09F1 ; [.275C.0020.0002] # BENGALI LETTER RA WITH LOWER DIAGONAL -09B6 ; [.275D.0020.0002] # BENGALI LETTER SHA -09B7 ; [.275E.0020.0002] # BENGALI LETTER SSA -09B8 ; [.275F.0020.0002] # BENGALI LETTER SA -09B9 ; [.2760.0020.0002] # BENGALI LETTER HA -09BD ; [.2761.0020.0002] # BENGALI SIGN AVAGRAHA -09BE ; [.2762.0020.0002] # BENGALI VOWEL SIGN AA -09BF ; [.2763.0020.0002] # BENGALI VOWEL SIGN I -09C0 ; [.2764.0020.0002] # BENGALI VOWEL SIGN II -09C1 ; [.2765.0020.0002] # BENGALI VOWEL SIGN U -09C2 ; [.2766.0020.0002] # BENGALI VOWEL SIGN UU -09C3 ; [.2767.0020.0002] # BENGALI VOWEL SIGN VOCALIC R -09C4 ; [.2768.0020.0002] # BENGALI VOWEL SIGN VOCALIC RR -09E2 ; [.2769.0020.0002] # BENGALI VOWEL SIGN VOCALIC L -09E3 ; [.276A.0020.0002] # BENGALI VOWEL SIGN VOCALIC LL -09C7 ; [.276B.0020.0002] # BENGALI VOWEL SIGN E -09C8 ; [.276C.0020.0002] # BENGALI VOWEL SIGN AI -09CB ; [.276D.0020.0002] # BENGALI VOWEL SIGN O -09C7 09BE ; [.276D.0020.0002] # BENGALI VOWEL SIGN O -09CC ; [.276E.0020.0002] # BENGALI VOWEL SIGN AU -09C7 09D7 ; [.276E.0020.0002] # BENGALI VOWEL SIGN AU -09CD ; [.276F.0020.0002] # BENGALI SIGN VIRAMA -09D7 ; [.2770.0020.0002] # BENGALI AU LENGTH MARK -09FC ; [.2771.0020.0002] # BENGALI LETTER VEDIC ANUSVARA -0A74 ; [.2772.0020.0002] # GURMUKHI EK ONKAR -0A73 ; [.2773.0020.0002] # GURMUKHI URA -0A09 ; [.2774.0020.0002] # GURMUKHI LETTER U -0A0A ; [.2775.0020.0002] # GURMUKHI LETTER UU -0A13 ; [.2776.0020.0002] # GURMUKHI LETTER OO -0A05 ; [.2777.0020.0002] # GURMUKHI LETTER A -0A06 ; [.2778.0020.0002] # GURMUKHI LETTER AA -0A10 ; [.2779.0020.0002] # GURMUKHI LETTER AI -0A14 ; [.277A.0020.0002] # GURMUKHI LETTER AU -0A72 ; [.277B.0020.0002] # GURMUKHI IRI -0A07 ; [.277C.0020.0002] # GURMUKHI LETTER I -0A08 ; [.277D.0020.0002] # GURMUKHI LETTER II -0A0F ; [.277E.0020.0002] # GURMUKHI LETTER EE -0A38 ; [.277F.0020.0002] # GURMUKHI LETTER SA -0A36 ; [.277F.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER SHA -0A39 ; [.2780.0020.0002] # GURMUKHI LETTER HA -0A51 ; [.2781.0020.0002] # GURMUKHI SIGN UDAAT -0A15 ; [.2782.0020.0002] # GURMUKHI LETTER KA -0A16 ; [.2783.0020.0002] # GURMUKHI LETTER KHA -0A59 ; [.2783.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER KHHA -0A17 ; [.2784.0020.0002] # GURMUKHI LETTER GA -0A5A ; [.2784.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER GHHA -0A18 ; [.2785.0020.0002] # GURMUKHI LETTER GHA -0A19 ; [.2786.0020.0002] # GURMUKHI LETTER NGA -0A1A ; [.2787.0020.0002] # GURMUKHI LETTER CA -0A1B ; [.2788.0020.0002] # GURMUKHI LETTER CHA -0A1C ; [.2789.0020.0002] # GURMUKHI LETTER JA -0A5B ; [.2789.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER ZA -0A1D ; [.278A.0020.0002] # GURMUKHI LETTER JHA -0A1E ; [.278B.0020.0002] # GURMUKHI LETTER NYA -0A1F ; [.278C.0020.0002] # GURMUKHI LETTER TTA -0A20 ; [.278D.0020.0002] # GURMUKHI LETTER TTHA -0A21 ; [.278E.0020.0002] # GURMUKHI LETTER DDA -0A22 ; [.278F.0020.0002] # GURMUKHI LETTER DDHA -0A23 ; [.2790.0020.0002] # GURMUKHI LETTER NNA -0A24 ; [.2791.0020.0002] # GURMUKHI LETTER TA -0A25 ; [.2792.0020.0002] # GURMUKHI LETTER THA -0A26 ; [.2793.0020.0002] # GURMUKHI LETTER DA -0A27 ; [.2794.0020.0002] # GURMUKHI LETTER DHA -0A28 ; [.2795.0020.0002] # GURMUKHI LETTER NA -0A2A ; [.2796.0020.0002] # GURMUKHI LETTER PA -0A2B ; [.2797.0020.0002] # GURMUKHI LETTER PHA -0A5E ; [.2797.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER FA -0A2C ; [.2798.0020.0002] # GURMUKHI LETTER BA -0A2D ; [.2799.0020.0002] # GURMUKHI LETTER BHA -0A2E ; [.279A.0020.0002] # GURMUKHI LETTER MA -0A2F ; [.279B.0020.0002] # GURMUKHI LETTER YA -0A75 ; [.279C.0020.0002] # GURMUKHI SIGN YAKASH -0A30 ; [.279D.0020.0002] # GURMUKHI LETTER RA -0A32 ; [.279E.0020.0002] # GURMUKHI LETTER LA -0A33 ; [.279E.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER LLA -0A35 ; [.279F.0020.0002] # GURMUKHI LETTER VA -0A5C ; [.27A0.0020.0002] # GURMUKHI LETTER RRA -0A3E ; [.27A1.0020.0002] # GURMUKHI VOWEL SIGN AA -0A3F ; [.27A2.0020.0002] # GURMUKHI VOWEL SIGN I -0A40 ; [.27A3.0020.0002] # GURMUKHI VOWEL SIGN II -0A41 ; [.27A4.0020.0002] # GURMUKHI VOWEL SIGN U -0A42 ; [.27A5.0020.0002] # GURMUKHI VOWEL SIGN UU -0A47 ; [.27A6.0020.0002] # GURMUKHI VOWEL SIGN EE -0A48 ; [.27A7.0020.0002] # GURMUKHI VOWEL SIGN AI -0A4B ; [.27A8.0020.0002] # GURMUKHI VOWEL SIGN OO -0A4C ; [.27A9.0020.0002] # GURMUKHI VOWEL SIGN AU -0A4D ; [.27AA.0020.0002] # GURMUKHI SIGN VIRAMA -0AD0 ; [.27AB.0020.0002] # GUJARATI OM -0A85 ; [.27AC.0020.0002] # GUJARATI LETTER A -0A86 ; [.27AD.0020.0002] # GUJARATI LETTER AA -0A87 ; [.27AE.0020.0002] # GUJARATI LETTER I -0A88 ; [.27AF.0020.0002] # GUJARATI LETTER II -0A89 ; [.27B0.0020.0002] # GUJARATI LETTER U -0A8A ; [.27B1.0020.0002] # GUJARATI LETTER UU -0A8B ; [.27B2.0020.0002] # GUJARATI LETTER VOCALIC R -0AE0 ; [.27B3.0020.0002] # GUJARATI LETTER VOCALIC RR -0A8C ; [.27B4.0020.0002] # GUJARATI LETTER VOCALIC L -0AE1 ; [.27B5.0020.0002] # GUJARATI LETTER VOCALIC LL -0A8D ; [.27B6.0020.0002] # GUJARATI VOWEL CANDRA E -0A8F ; [.27B7.0020.0002] # GUJARATI LETTER E -0A90 ; [.27B8.0020.0002] # GUJARATI LETTER AI -0A91 ; [.27B9.0020.0002] # GUJARATI VOWEL CANDRA O -0A93 ; [.27BA.0020.0002] # GUJARATI LETTER O -0A94 ; [.27BB.0020.0002] # GUJARATI LETTER AU -0A95 ; [.27BC.0020.0002] # GUJARATI LETTER KA -0A96 ; [.27BD.0020.0002] # GUJARATI LETTER KHA -0A97 ; [.27BE.0020.0002] # GUJARATI LETTER GA -0A98 ; [.27BF.0020.0002] # GUJARATI LETTER GHA -0A99 ; [.27C0.0020.0002] # GUJARATI LETTER NGA -0A9A ; [.27C1.0020.0002] # GUJARATI LETTER CA -0A9B ; [.27C2.0020.0002] # GUJARATI LETTER CHA -0A9C ; [.27C3.0020.0002] # GUJARATI LETTER JA -0AF9 ; [.27C4.0020.0002] # GUJARATI LETTER ZHA -0A9D ; [.27C5.0020.0002] # GUJARATI LETTER JHA -0A9E ; [.27C6.0020.0002] # GUJARATI LETTER NYA -0A9F ; [.27C7.0020.0002] # GUJARATI LETTER TTA -0AA0 ; [.27C8.0020.0002] # GUJARATI LETTER TTHA -0AA1 ; [.27C9.0020.0002] # GUJARATI LETTER DDA -0AA2 ; [.27CA.0020.0002] # GUJARATI LETTER DDHA -0AA3 ; [.27CB.0020.0002] # GUJARATI LETTER NNA -0AA4 ; [.27CC.0020.0002] # GUJARATI LETTER TA -0AA5 ; [.27CD.0020.0002] # GUJARATI LETTER THA -0AA6 ; [.27CE.0020.0002] # GUJARATI LETTER DA -0AA7 ; [.27CF.0020.0002] # GUJARATI LETTER DHA -0AA8 ; [.27D0.0020.0002] # GUJARATI LETTER NA -0AAA ; [.27D1.0020.0002] # GUJARATI LETTER PA -0AAB ; [.27D2.0020.0002] # GUJARATI LETTER PHA -0AAC ; [.27D3.0020.0002] # GUJARATI LETTER BA -0AAD ; [.27D4.0020.0002] # GUJARATI LETTER BHA -0AAE ; [.27D5.0020.0002] # GUJARATI LETTER MA -0AAF ; [.27D6.0020.0002] # GUJARATI LETTER YA -0AB0 ; [.27D7.0020.0002] # GUJARATI LETTER RA -0AB2 ; [.27D8.0020.0002] # GUJARATI LETTER LA -0AB5 ; [.27D9.0020.0002] # GUJARATI LETTER VA -0AB6 ; [.27DA.0020.0002] # GUJARATI LETTER SHA -0AB7 ; [.27DB.0020.0002] # GUJARATI LETTER SSA -0AB8 ; [.27DC.0020.0002] # GUJARATI LETTER SA -0AB9 ; [.27DD.0020.0002] # GUJARATI LETTER HA -0AB3 ; [.27DE.0020.0002] # GUJARATI LETTER LLA -0ABD ; [.27DF.0020.0002] # GUJARATI SIGN AVAGRAHA -0ABE ; [.27E0.0020.0002] # GUJARATI VOWEL SIGN AA -0ABF ; [.27E1.0020.0002] # GUJARATI VOWEL SIGN I -0AC0 ; [.27E2.0020.0002] # GUJARATI VOWEL SIGN II -0AC1 ; [.27E3.0020.0002] # GUJARATI VOWEL SIGN U -0AC2 ; [.27E4.0020.0002] # GUJARATI VOWEL SIGN UU -0AC3 ; [.27E5.0020.0002] # GUJARATI VOWEL SIGN VOCALIC R -0AC4 ; [.27E6.0020.0002] # GUJARATI VOWEL SIGN VOCALIC RR -0AE2 ; [.27E7.0020.0002] # GUJARATI VOWEL SIGN VOCALIC L -0AE3 ; [.27E8.0020.0002] # GUJARATI VOWEL SIGN VOCALIC LL -0AC5 ; [.27E9.0020.0002] # GUJARATI VOWEL SIGN CANDRA E -0AC7 ; [.27EA.0020.0002] # GUJARATI VOWEL SIGN E -0AC8 ; [.27EB.0020.0002] # GUJARATI VOWEL SIGN AI -0AC9 ; [.27EC.0020.0002] # GUJARATI VOWEL SIGN CANDRA O -0ACB ; [.27ED.0020.0002] # GUJARATI VOWEL SIGN O -0ACC ; [.27EE.0020.0002] # GUJARATI VOWEL SIGN AU -0ACD ; [.27EF.0020.0002] # GUJARATI SIGN VIRAMA -0B05 ; [.27F0.0020.0002] # ORIYA LETTER A -0B06 ; [.27F1.0020.0002] # ORIYA LETTER AA -0B07 ; [.27F2.0020.0002] # ORIYA LETTER I -0B08 ; [.27F3.0020.0002] # ORIYA LETTER II -0B09 ; [.27F4.0020.0002] # ORIYA LETTER U -0B0A ; [.27F5.0020.0002] # ORIYA LETTER UU -0B0B ; [.27F6.0020.0002] # ORIYA LETTER VOCALIC R -0B60 ; [.27F7.0020.0002] # ORIYA LETTER VOCALIC RR -0B0C ; [.27F8.0020.0002] # ORIYA LETTER VOCALIC L -0B61 ; [.27F9.0020.0002] # ORIYA LETTER VOCALIC LL -0B0F ; [.27FA.0020.0002] # ORIYA LETTER E -0B10 ; [.27FB.0020.0002] # ORIYA LETTER AI -0B13 ; [.27FC.0020.0002] # ORIYA LETTER O -0B14 ; [.27FD.0020.0002] # ORIYA LETTER AU -0B15 ; [.27FE.0020.0002] # ORIYA LETTER KA -0B16 ; [.27FF.0020.0002] # ORIYA LETTER KHA -0B17 ; [.2800.0020.0002] # ORIYA LETTER GA -0B18 ; [.2801.0020.0002] # ORIYA LETTER GHA -0B19 ; [.2802.0020.0002] # ORIYA LETTER NGA -0B1A ; [.2803.0020.0002] # ORIYA LETTER CA -0B1B ; [.2804.0020.0002] # ORIYA LETTER CHA -0B1C ; [.2805.0020.0002] # ORIYA LETTER JA -0B1D ; [.2806.0020.0002] # ORIYA LETTER JHA -0B1E ; [.2807.0020.0002] # ORIYA LETTER NYA -0B1F ; [.2808.0020.0002] # ORIYA LETTER TTA -0B20 ; [.2809.0020.0002] # ORIYA LETTER TTHA -0B21 ; [.280A.0020.0002] # ORIYA LETTER DDA -0B5C ; [.280A.0020.0002][.0000.00C2.0002] # ORIYA LETTER RRA -0B22 ; [.280B.0020.0002] # ORIYA LETTER DDHA -0B5D ; [.280B.0020.0002][.0000.00C2.0002] # ORIYA LETTER RHA -0B23 ; [.280C.0020.0002] # ORIYA LETTER NNA -0B24 ; [.280D.0020.0002] # ORIYA LETTER TA -0B25 ; [.280E.0020.0002] # ORIYA LETTER THA -0B26 ; [.280F.0020.0002] # ORIYA LETTER DA -0B27 ; [.2810.0020.0002] # ORIYA LETTER DHA -0B28 ; [.2811.0020.0002] # ORIYA LETTER NA -0B2A ; [.2812.0020.0002] # ORIYA LETTER PA -0B2B ; [.2813.0020.0002] # ORIYA LETTER PHA -0B2C ; [.2814.0020.0002] # ORIYA LETTER BA -0B2D ; [.2815.0020.0002] # ORIYA LETTER BHA -0B2E ; [.2816.0020.0002] # ORIYA LETTER MA -0B2F ; [.2817.0020.0002] # ORIYA LETTER YA -0B5F ; [.2818.0020.0002] # ORIYA LETTER YYA -0B30 ; [.2819.0020.0002] # ORIYA LETTER RA -0B32 ; [.281A.0020.0002] # ORIYA LETTER LA -0B33 ; [.281B.0020.0002] # ORIYA LETTER LLA -0B35 ; [.281C.0020.0002] # ORIYA LETTER VA -0B71 ; [.281D.0020.0002] # ORIYA LETTER WA -0B36 ; [.281E.0020.0002] # ORIYA LETTER SHA -0B37 ; [.281F.0020.0002] # ORIYA LETTER SSA -0B38 ; [.2820.0020.0002] # ORIYA LETTER SA -0B39 ; [.2821.0020.0002] # ORIYA LETTER HA -0B3D ; [.2822.0020.0002] # ORIYA SIGN AVAGRAHA -0B3E ; [.2823.0020.0002] # ORIYA VOWEL SIGN AA -0B3F ; [.2824.0020.0002] # ORIYA VOWEL SIGN I -0B40 ; [.2825.0020.0002] # ORIYA VOWEL SIGN II -0B41 ; [.2826.0020.0002] # ORIYA VOWEL SIGN U -0B42 ; [.2827.0020.0002] # ORIYA VOWEL SIGN UU -0B43 ; [.2828.0020.0002] # ORIYA VOWEL SIGN VOCALIC R -0B44 ; [.2829.0020.0002] # ORIYA VOWEL SIGN VOCALIC RR -0B62 ; [.282A.0020.0002] # ORIYA VOWEL SIGN VOCALIC L -0B63 ; [.282B.0020.0002] # ORIYA VOWEL SIGN VOCALIC LL -0B47 ; [.282C.0020.0002] # ORIYA VOWEL SIGN E -0B48 ; [.282D.0020.0002] # ORIYA VOWEL SIGN AI -0B47 0B56 ; [.282D.0020.0002] # ORIYA VOWEL SIGN AI -0B4B ; [.282E.0020.0002] # ORIYA VOWEL SIGN O -0B47 0B3E ; [.282E.0020.0002] # ORIYA VOWEL SIGN O -0B4C ; [.282F.0020.0002] # ORIYA VOWEL SIGN AU -0B47 0B57 ; [.282F.0020.0002] # ORIYA VOWEL SIGN AU -0B4D ; [.2830.0020.0002] # ORIYA SIGN VIRAMA -0B56 ; [.2831.0020.0002] # ORIYA AI LENGTH MARK -0B57 ; [.2832.0020.0002] # ORIYA AU LENGTH MARK -0BD0 ; [.2833.0020.0002] # TAMIL OM -0B85 ; [.2834.0020.0002] # TAMIL LETTER A -0B86 ; [.2835.0020.0002] # TAMIL LETTER AA -0B87 ; [.2836.0020.0002] # TAMIL LETTER I -0B88 ; [.2837.0020.0002] # TAMIL LETTER II -0B89 ; [.2838.0020.0002] # TAMIL LETTER U -0B8A ; [.2839.0020.0002] # TAMIL LETTER UU -0B8E ; [.283A.0020.0002] # TAMIL LETTER E -0B8F ; [.283B.0020.0002] # TAMIL LETTER EE -0B90 ; [.283C.0020.0002] # TAMIL LETTER AI -0B92 ; [.283D.0020.0002] # TAMIL LETTER O -0B93 ; [.283E.0020.0002] # TAMIL LETTER OO -0B94 ; [.283F.0020.0002] # TAMIL LETTER AU -0B92 0BD7 ; [.283F.0020.0002] # TAMIL LETTER AU -0B83 ; [.2840.0020.0002] # TAMIL SIGN VISARGA -0B95 ; [.2841.0020.0002] # TAMIL LETTER KA -0B99 ; [.2842.0020.0002] # TAMIL LETTER NGA -0B9A ; [.2843.0020.0002] # TAMIL LETTER CA -0B9E ; [.2844.0020.0002] # TAMIL LETTER NYA -0B9F ; [.2845.0020.0002] # TAMIL LETTER TTA -0BA3 ; [.2846.0020.0002] # TAMIL LETTER NNA -0BA4 ; [.2847.0020.0002] # TAMIL LETTER TA -0BA8 ; [.2848.0020.0002] # TAMIL LETTER NA -0BAA ; [.2849.0020.0002] # TAMIL LETTER PA -0BAE ; [.284A.0020.0002] # TAMIL LETTER MA -0BAF ; [.284B.0020.0002] # TAMIL LETTER YA -0BB0 ; [.284C.0020.0002] # TAMIL LETTER RA -0BB2 ; [.284D.0020.0002] # TAMIL LETTER LA -0BB5 ; [.284E.0020.0002] # TAMIL LETTER VA -0BB4 ; [.284F.0020.0002] # TAMIL LETTER LLLA -0BB3 ; [.2850.0020.0002] # TAMIL LETTER LLA -0BB1 ; [.2851.0020.0002] # TAMIL LETTER RRA -0BA9 ; [.2852.0020.0002] # TAMIL LETTER NNNA -0B9C ; [.2853.0020.0002] # TAMIL LETTER JA -0BB6 ; [.2854.0020.0002] # TAMIL LETTER SHA -0BB7 ; [.2855.0020.0002] # TAMIL LETTER SSA -0BB8 ; [.2856.0020.0002] # TAMIL LETTER SA -0BB9 ; [.2857.0020.0002] # TAMIL LETTER HA -0BBE ; [.2858.0020.0002] # TAMIL VOWEL SIGN AA -0BBF ; [.2859.0020.0002] # TAMIL VOWEL SIGN I -0BC0 ; [.285A.0020.0002] # TAMIL VOWEL SIGN II -0BC1 ; [.285B.0020.0002] # TAMIL VOWEL SIGN U -0BC2 ; [.285C.0020.0002] # TAMIL VOWEL SIGN UU -0BC6 ; [.285D.0020.0002] # TAMIL VOWEL SIGN E -0BC7 ; [.285E.0020.0002] # TAMIL VOWEL SIGN EE -0BC8 ; [.285F.0020.0002] # TAMIL VOWEL SIGN AI -0BCA ; [.2860.0020.0002] # TAMIL VOWEL SIGN O -0BC6 0BBE ; [.2860.0020.0002] # TAMIL VOWEL SIGN O -0BCB ; [.2861.0020.0002] # TAMIL VOWEL SIGN OO -0BC7 0BBE ; [.2861.0020.0002] # TAMIL VOWEL SIGN OO -0BCC ; [.2862.0020.0002] # TAMIL VOWEL SIGN AU -0BC6 0BD7 ; [.2862.0020.0002] # TAMIL VOWEL SIGN AU -0BCD ; [.2863.0020.0002] # TAMIL SIGN VIRAMA -0BD7 ; [.2864.0020.0002] # TAMIL AU LENGTH MARK -0C05 ; [.2865.0020.0002] # TELUGU LETTER A -0C06 ; [.2866.0020.0002] # TELUGU LETTER AA -0C07 ; [.2867.0020.0002] # TELUGU LETTER I -0C08 ; [.2868.0020.0002] # TELUGU LETTER II -0C09 ; [.2869.0020.0002] # TELUGU LETTER U -0C0A ; [.286A.0020.0002] # TELUGU LETTER UU -0C0B ; [.286B.0020.0002] # TELUGU LETTER VOCALIC R -0C60 ; [.286C.0020.0002] # TELUGU LETTER VOCALIC RR -0C0C ; [.286D.0020.0002] # TELUGU LETTER VOCALIC L -0C61 ; [.286E.0020.0002] # TELUGU LETTER VOCALIC LL -0C0E ; [.286F.0020.0002] # TELUGU LETTER E -0C0F ; [.2870.0020.0002] # TELUGU LETTER EE -0C10 ; [.2871.0020.0002] # TELUGU LETTER AI -0C12 ; [.2872.0020.0002] # TELUGU LETTER O -0C13 ; [.2873.0020.0002] # TELUGU LETTER OO -0C14 ; [.2874.0020.0002] # TELUGU LETTER AU -0C15 ; [.2875.0020.0002] # TELUGU LETTER KA -0C16 ; [.2876.0020.0002] # TELUGU LETTER KHA -0C17 ; [.2877.0020.0002] # TELUGU LETTER GA -0C18 ; [.2878.0020.0002] # TELUGU LETTER GHA -0C19 ; [.2879.0020.0002] # TELUGU LETTER NGA -0C1A ; [.287A.0020.0002] # TELUGU LETTER CA -0C58 ; [.287B.0020.0002] # TELUGU LETTER TSA -0C1B ; [.287C.0020.0002] # TELUGU LETTER CHA -0C1C ; [.287D.0020.0002] # TELUGU LETTER JA -0C59 ; [.287E.0020.0002] # TELUGU LETTER DZA -0C1D ; [.287F.0020.0002] # TELUGU LETTER JHA -0C1E ; [.2880.0020.0002] # TELUGU LETTER NYA -0C1F ; [.2881.0020.0002] # TELUGU LETTER TTA -0C20 ; [.2882.0020.0002] # TELUGU LETTER TTHA -0C21 ; [.2883.0020.0002] # TELUGU LETTER DDA -0C22 ; [.2884.0020.0002] # TELUGU LETTER DDHA -0C23 ; [.2885.0020.0002] # TELUGU LETTER NNA -0C24 ; [.2886.0020.0002] # TELUGU LETTER TA -0C25 ; [.2887.0020.0002] # TELUGU LETTER THA -0C26 ; [.2888.0020.0002] # TELUGU LETTER DA -0C27 ; [.2889.0020.0002] # TELUGU LETTER DHA -0C28 ; [.288A.0020.0002] # TELUGU LETTER NA -0C2A ; [.288B.0020.0002] # TELUGU LETTER PA -0C2B ; [.288C.0020.0002] # TELUGU LETTER PHA -0C2C ; [.288D.0020.0002] # TELUGU LETTER BA -0C2D ; [.288E.0020.0002] # TELUGU LETTER BHA -0C2E ; [.288F.0020.0002] # TELUGU LETTER MA -0C2F ; [.2890.0020.0002] # TELUGU LETTER YA -0C30 ; [.2891.0020.0002] # TELUGU LETTER RA -0C31 ; [.2892.0020.0002] # TELUGU LETTER RRA -0C32 ; [.2893.0020.0002] # TELUGU LETTER LA -0C35 ; [.2894.0020.0002] # TELUGU LETTER VA -0C36 ; [.2895.0020.0002] # TELUGU LETTER SHA -0C37 ; [.2896.0020.0002] # TELUGU LETTER SSA -0C38 ; [.2897.0020.0002] # TELUGU LETTER SA -0C39 ; [.2898.0020.0002] # TELUGU LETTER HA -0C33 ; [.2899.0020.0002] # TELUGU LETTER LLA -0C34 ; [.289A.0020.0002] # TELUGU LETTER LLLA -0C5A ; [.289B.0020.0002] # TELUGU LETTER RRRA -0C3D ; [.289C.0020.0002] # TELUGU SIGN AVAGRAHA -0C3E ; [.289D.0020.0002] # TELUGU VOWEL SIGN AA -0C3F ; [.289E.0020.0002] # TELUGU VOWEL SIGN I -0C40 ; [.289F.0020.0002] # TELUGU VOWEL SIGN II -0C41 ; [.28A0.0020.0002] # TELUGU VOWEL SIGN U -0C42 ; [.28A1.0020.0002] # TELUGU VOWEL SIGN UU -0C43 ; [.28A2.0020.0002] # TELUGU VOWEL SIGN VOCALIC R -0C44 ; [.28A3.0020.0002] # TELUGU VOWEL SIGN VOCALIC RR -0C62 ; [.28A4.0020.0002] # TELUGU VOWEL SIGN VOCALIC L -0C63 ; [.28A5.0020.0002] # TELUGU VOWEL SIGN VOCALIC LL -0C46 ; [.28A6.0020.0002] # TELUGU VOWEL SIGN E -0C47 ; [.28A7.0020.0002] # TELUGU VOWEL SIGN EE -0C48 ; [.28A8.0020.0002] # TELUGU VOWEL SIGN AI -0C46 0C56 ; [.28A8.0020.0002] # TELUGU VOWEL SIGN AI -0C4A ; [.28A9.0020.0002] # TELUGU VOWEL SIGN O -0C4B ; [.28AA.0020.0002] # TELUGU VOWEL SIGN OO -0C4C ; [.28AB.0020.0002] # TELUGU VOWEL SIGN AU -0C4D ; [.28AC.0020.0002] # TELUGU SIGN VIRAMA -0C55 ; [.28AD.0020.0002] # TELUGU LENGTH MARK -0C56 ; [.28AE.0020.0002] # TELUGU AI LENGTH MARK -0C85 ; [.28AF.0020.0002] # KANNADA LETTER A -0C86 ; [.28B0.0020.0002] # KANNADA LETTER AA -0C87 ; [.28B1.0020.0002] # KANNADA LETTER I -0C88 ; [.28B2.0020.0002] # KANNADA LETTER II -0C89 ; [.28B3.0020.0002] # KANNADA LETTER U -0C8A ; [.28B4.0020.0002] # KANNADA LETTER UU -0C8B ; [.28B5.0020.0002] # KANNADA LETTER VOCALIC R -0CE0 ; [.28B6.0020.0002] # KANNADA LETTER VOCALIC RR -0C8C ; [.28B7.0020.0002] # KANNADA LETTER VOCALIC L -0CE1 ; [.28B8.0020.0002] # KANNADA LETTER VOCALIC LL -0C8E ; [.28B9.0020.0002] # KANNADA LETTER E -0C8F ; [.28BA.0020.0002] # KANNADA LETTER EE -0C90 ; [.28BB.0020.0002] # KANNADA LETTER AI -0C92 ; [.28BC.0020.0002] # KANNADA LETTER O -0C93 ; [.28BD.0020.0002] # KANNADA LETTER OO -0C94 ; [.28BE.0020.0002] # KANNADA LETTER AU -0C95 ; [.28BF.0020.0002] # KANNADA LETTER KA -0C96 ; [.28C0.0020.0002] # KANNADA LETTER KHA -0C97 ; [.28C1.0020.0002] # KANNADA LETTER GA -0C98 ; [.28C2.0020.0002] # KANNADA LETTER GHA -0C99 ; [.28C3.0020.0002] # KANNADA LETTER NGA -0C9A ; [.28C4.0020.0002] # KANNADA LETTER CA -0C9B ; [.28C5.0020.0002] # KANNADA LETTER CHA -0C9C ; [.28C6.0020.0002] # KANNADA LETTER JA -0C9D ; [.28C7.0020.0002] # KANNADA LETTER JHA -0C9E ; [.28C8.0020.0002] # KANNADA LETTER NYA -0C9F ; [.28C9.0020.0002] # KANNADA LETTER TTA -0CA0 ; [.28CA.0020.0002] # KANNADA LETTER TTHA -0CA1 ; [.28CB.0020.0002] # KANNADA LETTER DDA -0CA2 ; [.28CC.0020.0002] # KANNADA LETTER DDHA -0CA3 ; [.28CD.0020.0002] # KANNADA LETTER NNA -0CA4 ; [.28CE.0020.0002] # KANNADA LETTER TA -0CA5 ; [.28CF.0020.0002] # KANNADA LETTER THA -0CA6 ; [.28D0.0020.0002] # KANNADA LETTER DA -0CA7 ; [.28D1.0020.0002] # KANNADA LETTER DHA -0CA8 ; [.28D2.0020.0002] # KANNADA LETTER NA -0CAA ; [.28D3.0020.0002] # KANNADA LETTER PA -0CAB ; [.28D4.0020.0002] # KANNADA LETTER PHA -0CAC ; [.28D5.0020.0002] # KANNADA LETTER BA -0CAD ; [.28D6.0020.0002] # KANNADA LETTER BHA -0CAE ; [.28D7.0020.0002] # KANNADA LETTER MA -0CAF ; [.28D8.0020.0002] # KANNADA LETTER YA -0CB0 ; [.28D9.0020.0002] # KANNADA LETTER RA -0CB1 ; [.28DA.0020.0002] # KANNADA LETTER RRA -0CB2 ; [.28DB.0020.0002] # KANNADA LETTER LA -0CB5 ; [.28DC.0020.0002] # KANNADA LETTER VA -0CB6 ; [.28DD.0020.0002] # KANNADA LETTER SHA -0CB7 ; [.28DE.0020.0002] # KANNADA LETTER SSA -0CB8 ; [.28DF.0020.0002] # KANNADA LETTER SA -0CB9 ; [.28E0.0020.0002] # KANNADA LETTER HA -0CB3 ; [.28E1.0020.0002] # KANNADA LETTER LLA -0CDE ; [.28E2.0020.0002] # KANNADA LETTER FA -0CBD ; [.28E3.0020.0002] # KANNADA SIGN AVAGRAHA -0CF1 ; [.28E4.0020.0002] # KANNADA SIGN JIHVAMULIYA -0CF2 ; [.28E5.0020.0002] # KANNADA SIGN UPADHMANIYA -0C80 ; [.28E6.0020.0002] # KANNADA SIGN SPACING CANDRABINDU -0CBE ; [.28E7.0020.0002] # KANNADA VOWEL SIGN AA -0CBF ; [.28E8.0020.0002] # KANNADA VOWEL SIGN I -0CC0 ; [.28E9.0020.0002] # KANNADA VOWEL SIGN II -0CBF 0CD5 ; [.28E9.0020.0002] # KANNADA VOWEL SIGN II -0CC1 ; [.28EA.0020.0002] # KANNADA VOWEL SIGN U -0CC2 ; [.28EB.0020.0002] # KANNADA VOWEL SIGN UU -0CC3 ; [.28EC.0020.0002] # KANNADA VOWEL SIGN VOCALIC R -0CC4 ; [.28ED.0020.0002] # KANNADA VOWEL SIGN VOCALIC RR -0CE2 ; [.28EE.0020.0002] # KANNADA VOWEL SIGN VOCALIC L -0CE3 ; [.28EF.0020.0002] # KANNADA VOWEL SIGN VOCALIC LL -0CC6 ; [.28F0.0020.0002] # KANNADA VOWEL SIGN E -0CC7 ; [.28F1.0020.0002] # KANNADA VOWEL SIGN EE -0CC6 0CD5 ; [.28F1.0020.0002] # KANNADA VOWEL SIGN EE -0CC8 ; [.28F2.0020.0002] # KANNADA VOWEL SIGN AI -0CC6 0CD6 ; [.28F2.0020.0002] # KANNADA VOWEL SIGN AI -0CCA ; [.28F3.0020.0002] # KANNADA VOWEL SIGN O -0CC6 0CC2 ; [.28F3.0020.0002] # KANNADA VOWEL SIGN O -0CCB ; [.28F4.0020.0002] # KANNADA VOWEL SIGN OO -0CC6 0CC2 0CD5 ; [.28F4.0020.0002] # KANNADA VOWEL SIGN OO -0CCA 0CD5 ; [.28F4.0020.0002] # KANNADA VOWEL SIGN OO -0CCC ; [.28F5.0020.0002] # KANNADA VOWEL SIGN AU -0CCD ; [.28F6.0020.0002] # KANNADA SIGN VIRAMA -0CD5 ; [.28F7.0020.0002] # KANNADA LENGTH MARK -0CD6 ; [.28F8.0020.0002] # KANNADA AI LENGTH MARK -0D05 ; [.28F9.0020.0002] # MALAYALAM LETTER A -0D06 ; [.28FA.0020.0002] # MALAYALAM LETTER AA -0D07 ; [.28FB.0020.0002] # MALAYALAM LETTER I -0D08 ; [.28FC.0020.0002] # MALAYALAM LETTER II -0D5F ; [.28FD.0020.0002] # MALAYALAM LETTER ARCHAIC II -0D09 ; [.28FE.0020.0002] # MALAYALAM LETTER U -0D0A ; [.28FF.0020.0002] # MALAYALAM LETTER UU -0D0B ; [.2900.0020.0002] # MALAYALAM LETTER VOCALIC R -0D60 ; [.2901.0020.0002] # MALAYALAM LETTER VOCALIC RR -0D0C ; [.2902.0020.0002] # MALAYALAM LETTER VOCALIC L -0D61 ; [.2903.0020.0002] # MALAYALAM LETTER VOCALIC LL -0D0E ; [.2904.0020.0002] # MALAYALAM LETTER E -0D0F ; [.2905.0020.0002] # MALAYALAM LETTER EE -0D10 ; [.2906.0020.0002] # MALAYALAM LETTER AI -0D12 ; [.2907.0020.0002] # MALAYALAM LETTER O -0D13 ; [.2908.0020.0002] # MALAYALAM LETTER OO -0D14 ; [.2909.0020.0002] # MALAYALAM LETTER AU -0D15 ; [.290A.0020.0002] # MALAYALAM LETTER KA -0D7F ; [.290A.0020.0004][.2941.0020.0004] # MALAYALAM LETTER CHILLU K -0D16 ; [.290B.0020.0002] # MALAYALAM LETTER KHA -0D17 ; [.290C.0020.0002] # MALAYALAM LETTER GA -0D18 ; [.290D.0020.0002] # MALAYALAM LETTER GHA -0D19 ; [.290E.0020.0002] # MALAYALAM LETTER NGA -0D1A ; [.290F.0020.0002] # MALAYALAM LETTER CA -0D1B ; [.2910.0020.0002] # MALAYALAM LETTER CHA -0D1C ; [.2911.0020.0002] # MALAYALAM LETTER JA -0D1D ; [.2912.0020.0002] # MALAYALAM LETTER JHA -0D1E ; [.2913.0020.0002] # MALAYALAM LETTER NYA -0D1F ; [.2914.0020.0002] # MALAYALAM LETTER TTA -0D20 ; [.2915.0020.0002] # MALAYALAM LETTER TTHA -0D21 ; [.2916.0020.0002] # MALAYALAM LETTER DDA -0D22 ; [.2917.0020.0002] # MALAYALAM LETTER DDHA -0D23 ; [.2918.0020.0002] # MALAYALAM LETTER NNA -0D7A ; [.2918.0020.0004][.2941.0020.0004] # MALAYALAM LETTER CHILLU NN -0D24 ; [.2919.0020.0002] # MALAYALAM LETTER TA -0D25 ; [.291A.0020.0002] # MALAYALAM LETTER THA -0D26 ; [.291B.0020.0002] # MALAYALAM LETTER DA -0D27 ; [.291C.0020.0002] # MALAYALAM LETTER DHA -0D28 ; [.291D.0020.0002] # MALAYALAM LETTER NA -0D7B ; [.291D.0020.0004][.2941.0020.0004] # MALAYALAM LETTER CHILLU N -0D29 ; [.291E.0020.0002] # MALAYALAM LETTER NNNA -0D2A ; [.291F.0020.0002] # MALAYALAM LETTER PA -0D2B ; [.2920.0020.0002] # MALAYALAM LETTER PHA -0D2C ; [.2921.0020.0002] # MALAYALAM LETTER BA -0D2D ; [.2922.0020.0002] # MALAYALAM LETTER BHA -0D2E ; [.2923.0020.0002] # MALAYALAM LETTER MA -0D54 ; [.2923.0020.0004][.2941.0020.0004] # MALAYALAM LETTER CHILLU M -0D2F ; [.2924.0020.0002] # MALAYALAM LETTER YA -0D55 ; [.2924.0020.0004][.2941.0020.0004] # MALAYALAM LETTER CHILLU Y -0D30 ; [.2925.0020.0002] # MALAYALAM LETTER RA -0D4E ; [.2925.0020.0004][.2941.0020.0004] # MALAYALAM LETTER DOT REPH -0D7C ; [.2925.0020.0004][.2941.0020.0004] # MALAYALAM LETTER CHILLU RR -0D32 ; [.2926.0020.0002] # MALAYALAM LETTER LA -0D7D ; [.2926.0020.0004][.2941.0020.0004] # MALAYALAM LETTER CHILLU L -0D35 ; [.2927.0020.0002] # MALAYALAM LETTER VA -0D36 ; [.2928.0020.0002] # MALAYALAM LETTER SHA -0D37 ; [.2929.0020.0002] # MALAYALAM LETTER SSA -0D38 ; [.292A.0020.0002] # MALAYALAM LETTER SA -0D39 ; [.292B.0020.0002] # MALAYALAM LETTER HA -0D33 ; [.292C.0020.0002] # MALAYALAM LETTER LLA -0D7E ; [.292C.0020.0004][.2941.0020.0004] # MALAYALAM LETTER CHILLU LL -0D34 ; [.292D.0020.0002] # MALAYALAM LETTER LLLA -0D56 ; [.292D.0020.0004][.2941.0020.0004] # MALAYALAM LETTER CHILLU LLL -0D31 ; [.292E.0020.0002] # MALAYALAM LETTER RRA -0D3A ; [.292F.0020.0002] # MALAYALAM LETTER TTTA -0D3D ; [.2930.0020.0002] # MALAYALAM SIGN AVAGRAHA -0D3E ; [.2931.0020.0002] # MALAYALAM VOWEL SIGN AA -0D3F ; [.2932.0020.0002] # MALAYALAM VOWEL SIGN I -0D40 ; [.2933.0020.0002] # MALAYALAM VOWEL SIGN II -0D41 ; [.2934.0020.0002] # MALAYALAM VOWEL SIGN U -0D42 ; [.2935.0020.0002] # MALAYALAM VOWEL SIGN UU -0D43 ; [.2936.0020.0002] # MALAYALAM VOWEL SIGN VOCALIC R -0D44 ; [.2937.0020.0002] # MALAYALAM VOWEL SIGN VOCALIC RR -0D62 ; [.2938.0020.0002] # MALAYALAM VOWEL SIGN VOCALIC L -0D63 ; [.2939.0020.0002] # MALAYALAM VOWEL SIGN VOCALIC LL -0D46 ; [.293A.0020.0002] # MALAYALAM VOWEL SIGN E -0D47 ; [.293B.0020.0002] # MALAYALAM VOWEL SIGN EE -0D48 ; [.293C.0020.0002] # MALAYALAM VOWEL SIGN AI -0D4A ; [.293D.0020.0002] # MALAYALAM VOWEL SIGN O -0D46 0D3E ; [.293D.0020.0002] # MALAYALAM VOWEL SIGN O -0D4B ; [.293E.0020.0002] # MALAYALAM VOWEL SIGN OO -0D47 0D3E ; [.293E.0020.0002] # MALAYALAM VOWEL SIGN OO -0D4C ; [.293F.0020.0002] # MALAYALAM VOWEL SIGN AU -0D46 0D57 ; [.293F.0020.0002] # MALAYALAM VOWEL SIGN AU -0D57 ; [.2940.0020.0002] # MALAYALAM AU LENGTH MARK -0D4D ; [.2941.0020.0002] # MALAYALAM SIGN VIRAMA -0D3B ; [.2941.0020.0004] # MALAYALAM SIGN VERTICAL BAR VIRAMA -0D3C ; [.2941.0020.0004] # MALAYALAM SIGN CIRCULAR VIRAMA -0D85 ; [.2942.0020.0002] # SINHALA LETTER AYANNA -0D86 ; [.2943.0020.0002] # SINHALA LETTER AAYANNA -0D87 ; [.2944.0020.0002] # SINHALA LETTER AEYANNA -0D88 ; [.2945.0020.0002] # SINHALA LETTER AEEYANNA -0D89 ; [.2946.0020.0002] # SINHALA LETTER IYANNA -0D8A ; [.2947.0020.0002] # SINHALA LETTER IIYANNA -0D8B ; [.2948.0020.0002] # SINHALA LETTER UYANNA -0D8C ; [.2949.0020.0002] # SINHALA LETTER UUYANNA -0D8D ; [.294A.0020.0002] # SINHALA LETTER IRUYANNA -0D8E ; [.294B.0020.0002] # SINHALA LETTER IRUUYANNA -0D8F ; [.294C.0020.0002] # SINHALA LETTER ILUYANNA -0D90 ; [.294D.0020.0002] # SINHALA LETTER ILUUYANNA -0D91 ; [.294E.0020.0002] # SINHALA LETTER EYANNA -0D92 ; [.294F.0020.0002] # SINHALA LETTER EEYANNA -0D93 ; [.2950.0020.0002] # SINHALA LETTER AIYANNA -0D94 ; [.2951.0020.0002] # SINHALA LETTER OYANNA -0D95 ; [.2952.0020.0002] # SINHALA LETTER OOYANNA -0D96 ; [.2953.0020.0002] # SINHALA LETTER AUYANNA -0D9A ; [.2954.0020.0002] # SINHALA LETTER ALPAPRAANA KAYANNA -0D9B ; [.2955.0020.0002] # SINHALA LETTER MAHAAPRAANA KAYANNA -0D9C ; [.2956.0020.0002] # SINHALA LETTER ALPAPRAANA GAYANNA -0D9D ; [.2957.0020.0002] # SINHALA LETTER MAHAAPRAANA GAYANNA -0D9E ; [.2958.0020.0002] # SINHALA LETTER KANTAJA NAASIKYAYA -0D9F ; [.2959.0020.0002] # SINHALA LETTER SANYAKA GAYANNA -0DA0 ; [.295A.0020.0002] # SINHALA LETTER ALPAPRAANA CAYANNA -0DA1 ; [.295B.0020.0002] # SINHALA LETTER MAHAAPRAANA CAYANNA -0DA2 ; [.295C.0020.0002] # SINHALA LETTER ALPAPRAANA JAYANNA -0DA3 ; [.295D.0020.0002] # SINHALA LETTER MAHAAPRAANA JAYANNA -0DA4 ; [.295E.0020.0002] # SINHALA LETTER TAALUJA NAASIKYAYA -0DA5 ; [.295F.0020.0002] # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA -0DA6 ; [.2960.0020.0002] # SINHALA LETTER SANYAKA JAYANNA -0DA7 ; [.2961.0020.0002] # SINHALA LETTER ALPAPRAANA TTAYANNA -0DA8 ; [.2962.0020.0002] # SINHALA LETTER MAHAAPRAANA TTAYANNA -0DA9 ; [.2963.0020.0002] # SINHALA LETTER ALPAPRAANA DDAYANNA -0DAA ; [.2964.0020.0002] # SINHALA LETTER MAHAAPRAANA DDAYANNA -0DAB ; [.2965.0020.0002] # SINHALA LETTER MUURDHAJA NAYANNA -0DAC ; [.2966.0020.0002] # SINHALA LETTER SANYAKA DDAYANNA -0DAD ; [.2967.0020.0002] # SINHALA LETTER ALPAPRAANA TAYANNA -0DAE ; [.2968.0020.0002] # SINHALA LETTER MAHAAPRAANA TAYANNA -0DAF ; [.2969.0020.0002] # SINHALA LETTER ALPAPRAANA DAYANNA -0DB0 ; [.296A.0020.0002] # SINHALA LETTER MAHAAPRAANA DAYANNA -0DB1 ; [.296B.0020.0002] # SINHALA LETTER DANTAJA NAYANNA -0DB3 ; [.296C.0020.0002] # SINHALA LETTER SANYAKA DAYANNA -0DB4 ; [.296D.0020.0002] # SINHALA LETTER ALPAPRAANA PAYANNA -0DB5 ; [.296E.0020.0002] # SINHALA LETTER MAHAAPRAANA PAYANNA -0DB6 ; [.296F.0020.0002] # SINHALA LETTER ALPAPRAANA BAYANNA -0DB7 ; [.2970.0020.0002] # SINHALA LETTER MAHAAPRAANA BAYANNA -0DB8 ; [.2971.0020.0002] # SINHALA LETTER MAYANNA -0DB9 ; [.2972.0020.0002] # SINHALA LETTER AMBA BAYANNA -0DBA ; [.2973.0020.0002] # SINHALA LETTER YAYANNA -0DBB ; [.2974.0020.0002] # SINHALA LETTER RAYANNA -0DBD ; [.2975.0020.0002] # SINHALA LETTER DANTAJA LAYANNA -0DC0 ; [.2976.0020.0002] # SINHALA LETTER VAYANNA -0DC1 ; [.2977.0020.0002] # SINHALA LETTER TAALUJA SAYANNA -0DC2 ; [.2978.0020.0002] # SINHALA LETTER MUURDHAJA SAYANNA -0DC3 ; [.2979.0020.0002] # SINHALA LETTER DANTAJA SAYANNA -0DC4 ; [.297A.0020.0002] # SINHALA LETTER HAYANNA -0DC5 ; [.297B.0020.0002] # SINHALA LETTER MUURDHAJA LAYANNA -0DC6 ; [.297C.0020.0002] # SINHALA LETTER FAYANNA -0DCF ; [.297D.0020.0002] # SINHALA VOWEL SIGN AELA-PILLA -0DD0 ; [.297E.0020.0002] # SINHALA VOWEL SIGN KETTI AEDA-PILLA -0DD1 ; [.297F.0020.0002] # SINHALA VOWEL SIGN DIGA AEDA-PILLA -0DD2 ; [.2980.0020.0002] # SINHALA VOWEL SIGN KETTI IS-PILLA -0DD3 ; [.2981.0020.0002] # SINHALA VOWEL SIGN DIGA IS-PILLA -0DD4 ; [.2982.0020.0002] # SINHALA VOWEL SIGN KETTI PAA-PILLA -0DD6 ; [.2983.0020.0002] # SINHALA VOWEL SIGN DIGA PAA-PILLA -0DD8 ; [.2984.0020.0002] # SINHALA VOWEL SIGN GAETTA-PILLA -0DF2 ; [.2985.0020.0002] # SINHALA VOWEL SIGN DIGA GAETTA-PILLA -0DDF ; [.2986.0020.0002] # SINHALA VOWEL SIGN GAYANUKITTA -0DF3 ; [.2987.0020.0002] # SINHALA VOWEL SIGN DIGA GAYANUKITTA -0DD9 ; [.2988.0020.0002] # SINHALA VOWEL SIGN KOMBUVA -0DDA ; [.2989.0020.0002] # SINHALA VOWEL SIGN DIGA KOMBUVA -0DD9 0DCA ; [.2989.0020.0002] # SINHALA VOWEL SIGN DIGA KOMBUVA -0DDB ; [.298A.0020.0002] # SINHALA VOWEL SIGN KOMBU DEKA -0DDC ; [.298B.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA -0DD9 0DCF ; [.298B.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA -0DDD ; [.298C.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA -0DD9 0DCF 0DCA ; [.298C.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA -0DDC 0DCA ; [.298C.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA -0DDE ; [.298D.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA -0DD9 0DDF ; [.298D.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA -0DCA ; [.298E.0020.0002] # SINHALA SIGN AL-LAKUNA -AAF2 ; [.298F.0020.0002] # MEETEI MAYEK ANJI -ABC0 ; [.2990.0020.0002] # MEETEI MAYEK LETTER KOK -ABC1 ; [.2991.0020.0002] # MEETEI MAYEK LETTER SAM -ABC2 ; [.2992.0020.0002] # MEETEI MAYEK LETTER LAI -ABC3 ; [.2993.0020.0002] # MEETEI MAYEK LETTER MIT -ABC4 ; [.2994.0020.0002] # MEETEI MAYEK LETTER PA -ABC5 ; [.2995.0020.0002] # MEETEI MAYEK LETTER NA -ABC6 ; [.2996.0020.0002] # MEETEI MAYEK LETTER CHIL -ABC7 ; [.2997.0020.0002] # MEETEI MAYEK LETTER TIL -ABC8 ; [.2998.0020.0002] # MEETEI MAYEK LETTER KHOU -ABC9 ; [.2999.0020.0002] # MEETEI MAYEK LETTER NGOU -ABCA ; [.299A.0020.0002] # MEETEI MAYEK LETTER THOU -ABCB ; [.299B.0020.0002] # MEETEI MAYEK LETTER WAI -ABCC ; [.299C.0020.0002] # MEETEI MAYEK LETTER YANG -ABCD ; [.299D.0020.0002] # MEETEI MAYEK LETTER HUK -ABCE ; [.299E.0020.0002] # MEETEI MAYEK LETTER UN -ABCF ; [.299F.0020.0002] # MEETEI MAYEK LETTER I -ABD0 ; [.29A0.0020.0002] # MEETEI MAYEK LETTER PHAM -ABD1 ; [.29A1.0020.0002] # MEETEI MAYEK LETTER ATIYA -ABD2 ; [.29A2.0020.0002] # MEETEI MAYEK LETTER GOK -ABD3 ; [.29A3.0020.0002] # MEETEI MAYEK LETTER JHAM -ABD4 ; [.29A4.0020.0002] # MEETEI MAYEK LETTER RAI -ABD5 ; [.29A5.0020.0002] # MEETEI MAYEK LETTER BA -ABD6 ; [.29A6.0020.0002] # MEETEI MAYEK LETTER JIL -ABD7 ; [.29A7.0020.0002] # MEETEI MAYEK LETTER DIL -ABD8 ; [.29A8.0020.0002] # MEETEI MAYEK LETTER GHOU -ABD9 ; [.29A9.0020.0002] # MEETEI MAYEK LETTER DHOU -ABDA ; [.29AA.0020.0002] # MEETEI MAYEK LETTER BHAM -AAE0 ; [.29AB.0020.0002] # MEETEI MAYEK LETTER E -AAE1 ; [.29AC.0020.0002] # MEETEI MAYEK LETTER O -AAE2 ; [.29AD.0020.0002] # MEETEI MAYEK LETTER CHA -AAE3 ; [.29AE.0020.0002] # MEETEI MAYEK LETTER NYA -AAE4 ; [.29AF.0020.0002] # MEETEI MAYEK LETTER TTA -AAE5 ; [.29B0.0020.0002] # MEETEI MAYEK LETTER TTHA -AAE6 ; [.29B1.0020.0002] # MEETEI MAYEK LETTER DDA -AAE7 ; [.29B2.0020.0002] # MEETEI MAYEK LETTER DDHA -AAE8 ; [.29B3.0020.0002] # MEETEI MAYEK LETTER NNA -AAE9 ; [.29B4.0020.0002] # MEETEI MAYEK LETTER SHA -AAEA ; [.29B5.0020.0002] # MEETEI MAYEK LETTER SSA -ABE3 ; [.29B6.0020.0002] # MEETEI MAYEK VOWEL SIGN ONAP -ABE4 ; [.29B7.0020.0002] # MEETEI MAYEK VOWEL SIGN INAP -ABE5 ; [.29B8.0020.0002] # MEETEI MAYEK VOWEL SIGN ANAP -ABE6 ; [.29B9.0020.0002] # MEETEI MAYEK VOWEL SIGN YENAP -ABE7 ; [.29BA.0020.0002] # MEETEI MAYEK VOWEL SIGN SOUNAP -ABE8 ; [.29BB.0020.0002] # MEETEI MAYEK VOWEL SIGN UNAP -ABE9 ; [.29BC.0020.0002] # MEETEI MAYEK VOWEL SIGN CHEINAP -ABEA ; [.29BD.0020.0002] # MEETEI MAYEK VOWEL SIGN NUNG -AAEB ; [.29BE.0020.0002] # MEETEI MAYEK VOWEL SIGN II -AAEC ; [.29BF.0020.0002] # MEETEI MAYEK VOWEL SIGN UU -AAED ; [.29C0.0020.0002] # MEETEI MAYEK VOWEL SIGN AAI -AAEE ; [.29C1.0020.0002] # MEETEI MAYEK VOWEL SIGN AU -AAEF ; [.29C2.0020.0002] # MEETEI MAYEK VOWEL SIGN AAU -AAF5 ; [.29C3.0020.0002] # MEETEI MAYEK VOWEL SIGN VISARGA -ABDB ; [.29C4.0020.0002] # MEETEI MAYEK LETTER KOK LONSUM -ABDC ; [.29C5.0020.0002] # MEETEI MAYEK LETTER LAI LONSUM -ABDD ; [.29C6.0020.0002] # MEETEI MAYEK LETTER MIT LONSUM -ABDE ; [.29C7.0020.0002] # MEETEI MAYEK LETTER PA LONSUM -ABDF ; [.29C8.0020.0002] # MEETEI MAYEK LETTER NA LONSUM -ABE0 ; [.29C9.0020.0002] # MEETEI MAYEK LETTER TIL LONSUM -ABE1 ; [.29CA.0020.0002] # MEETEI MAYEK LETTER NGOU LONSUM -ABE2 ; [.29CB.0020.0002] # MEETEI MAYEK LETTER I LONSUM -ABED ; [.29CC.0020.0002] # MEETEI MAYEK APUN IYEK -AAF6 ; [.29CD.0020.0002] # MEETEI MAYEK VIRAMA -A800 ; [.29CE.0020.0002] # SYLOTI NAGRI LETTER A -A801 ; [.29CF.0020.0002] # SYLOTI NAGRI LETTER I -A802 ; [.29D0.0020.0002] # SYLOTI NAGRI SIGN DVISVARA -A803 ; [.29D1.0020.0002] # SYLOTI NAGRI LETTER U -A804 ; [.29D2.0020.0002] # SYLOTI NAGRI LETTER E -A805 ; [.29D3.0020.0002] # SYLOTI NAGRI LETTER O -A806 ; [.29D4.0020.0002] # SYLOTI NAGRI SIGN HASANTA -A807 ; [.29D5.0020.0002] # SYLOTI NAGRI LETTER KO -A808 ; [.29D6.0020.0002] # SYLOTI NAGRI LETTER KHO -A809 ; [.29D7.0020.0002] # SYLOTI NAGRI LETTER GO -A80A ; [.29D8.0020.0002] # SYLOTI NAGRI LETTER GHO -A80C ; [.29D9.0020.0002] # SYLOTI NAGRI LETTER CO -A80D ; [.29DA.0020.0002] # SYLOTI NAGRI LETTER CHO -A80E ; [.29DB.0020.0002] # SYLOTI NAGRI LETTER JO -A80F ; [.29DC.0020.0002] # SYLOTI NAGRI LETTER JHO -A810 ; [.29DD.0020.0002] # SYLOTI NAGRI LETTER TTO -A811 ; [.29DE.0020.0002] # SYLOTI NAGRI LETTER TTHO -A812 ; [.29DF.0020.0002] # SYLOTI NAGRI LETTER DDO -A813 ; [.29E0.0020.0002] # SYLOTI NAGRI LETTER DDHO -A814 ; [.29E1.0020.0002] # SYLOTI NAGRI LETTER TO -A815 ; [.29E2.0020.0002] # SYLOTI NAGRI LETTER THO -A816 ; [.29E3.0020.0002] # SYLOTI NAGRI LETTER DO -A817 ; [.29E4.0020.0002] # SYLOTI NAGRI LETTER DHO -A818 ; [.29E5.0020.0002] # SYLOTI NAGRI LETTER NO -A819 ; [.29E6.0020.0002] # SYLOTI NAGRI LETTER PO -A81A ; [.29E7.0020.0002] # SYLOTI NAGRI LETTER PHO -A81B ; [.29E8.0020.0002] # SYLOTI NAGRI LETTER BO -A81C ; [.29E9.0020.0002] # SYLOTI NAGRI LETTER BHO -A81D ; [.29EA.0020.0002] # SYLOTI NAGRI LETTER MO -A81E ; [.29EB.0020.0002] # SYLOTI NAGRI LETTER RO -A81F ; [.29EC.0020.0002] # SYLOTI NAGRI LETTER LO -A820 ; [.29ED.0020.0002] # SYLOTI NAGRI LETTER RRO -A821 ; [.29EE.0020.0002] # SYLOTI NAGRI LETTER SO -A822 ; [.29EF.0020.0002] # SYLOTI NAGRI LETTER HO -A823 ; [.29F0.0020.0002] # SYLOTI NAGRI VOWEL SIGN A -A824 ; [.29F1.0020.0002] # SYLOTI NAGRI VOWEL SIGN I -A825 ; [.29F2.0020.0002] # SYLOTI NAGRI VOWEL SIGN U -A826 ; [.29F3.0020.0002] # SYLOTI NAGRI VOWEL SIGN E -A827 ; [.29F4.0020.0002] # SYLOTI NAGRI VOWEL SIGN OO -A882 ; [.29F5.0020.0002] # SAURASHTRA LETTER A -A883 ; [.29F6.0020.0002] # SAURASHTRA LETTER AA -A884 ; [.29F7.0020.0002] # SAURASHTRA LETTER I -A885 ; [.29F8.0020.0002] # SAURASHTRA LETTER II -A886 ; [.29F9.0020.0002] # SAURASHTRA LETTER U -A887 ; [.29FA.0020.0002] # SAURASHTRA LETTER UU -A888 ; [.29FB.0020.0002] # SAURASHTRA LETTER VOCALIC R -A889 ; [.29FC.0020.0002] # SAURASHTRA LETTER VOCALIC RR -A88A ; [.29FD.0020.0002] # SAURASHTRA LETTER VOCALIC L -A88B ; [.29FE.0020.0002] # SAURASHTRA LETTER VOCALIC LL -A88C ; [.29FF.0020.0002] # SAURASHTRA LETTER E -A88D ; [.2A00.0020.0002] # SAURASHTRA LETTER EE -A88E ; [.2A01.0020.0002] # SAURASHTRA LETTER AI -A88F ; [.2A02.0020.0002] # SAURASHTRA LETTER O -A890 ; [.2A03.0020.0002] # SAURASHTRA LETTER OO -A891 ; [.2A04.0020.0002] # SAURASHTRA LETTER AU -A892 ; [.2A05.0020.0002] # SAURASHTRA LETTER KA -A893 ; [.2A06.0020.0002] # SAURASHTRA LETTER KHA -A894 ; [.2A07.0020.0002] # SAURASHTRA LETTER GA -A895 ; [.2A08.0020.0002] # SAURASHTRA LETTER GHA -A896 ; [.2A09.0020.0002] # SAURASHTRA LETTER NGA -A897 ; [.2A0A.0020.0002] # SAURASHTRA LETTER CA -A898 ; [.2A0B.0020.0002] # SAURASHTRA LETTER CHA -A899 ; [.2A0C.0020.0002] # SAURASHTRA LETTER JA -A89A ; [.2A0D.0020.0002] # SAURASHTRA LETTER JHA -A89B ; [.2A0E.0020.0002] # SAURASHTRA LETTER NYA -A89C ; [.2A0F.0020.0002] # SAURASHTRA LETTER TTA -A89D ; [.2A10.0020.0002] # SAURASHTRA LETTER TTHA -A89E ; [.2A11.0020.0002] # SAURASHTRA LETTER DDA -A89F ; [.2A12.0020.0002] # SAURASHTRA LETTER DDHA -A8A0 ; [.2A13.0020.0002] # SAURASHTRA LETTER NNA -A8A1 ; [.2A14.0020.0002] # SAURASHTRA LETTER TA -A8A2 ; [.2A15.0020.0002] # SAURASHTRA LETTER THA -A8A3 ; [.2A16.0020.0002] # SAURASHTRA LETTER DA -A8A4 ; [.2A17.0020.0002] # SAURASHTRA LETTER DHA -A8A5 ; [.2A18.0020.0002] # SAURASHTRA LETTER NA -A8A6 ; [.2A19.0020.0002] # SAURASHTRA LETTER PA -A8A7 ; [.2A1A.0020.0002] # SAURASHTRA LETTER PHA -A8A8 ; [.2A1B.0020.0002] # SAURASHTRA LETTER BA -A8A9 ; [.2A1C.0020.0002] # SAURASHTRA LETTER BHA -A8AA ; [.2A1D.0020.0002] # SAURASHTRA LETTER MA -A8AB ; [.2A1E.0020.0002] # SAURASHTRA LETTER YA -A8AC ; [.2A1F.0020.0002] # SAURASHTRA LETTER RA -A8AD ; [.2A20.0020.0002] # SAURASHTRA LETTER LA -A8AE ; [.2A21.0020.0002] # SAURASHTRA LETTER VA -A8AF ; [.2A22.0020.0002] # SAURASHTRA LETTER SHA -A8B0 ; [.2A23.0020.0002] # SAURASHTRA LETTER SSA -A8B1 ; [.2A24.0020.0002] # SAURASHTRA LETTER SA -A8B2 ; [.2A25.0020.0002] # SAURASHTRA LETTER HA -A8B3 ; [.2A26.0020.0002] # SAURASHTRA LETTER LLA -A8B4 ; [.2A27.0020.0002] # SAURASHTRA CONSONANT SIGN HAARU -A8B5 ; [.2A28.0020.0002] # SAURASHTRA VOWEL SIGN AA -A8B6 ; [.2A29.0020.0002] # SAURASHTRA VOWEL SIGN I -A8B7 ; [.2A2A.0020.0002] # SAURASHTRA VOWEL SIGN II -A8B8 ; [.2A2B.0020.0002] # SAURASHTRA VOWEL SIGN U -A8B9 ; [.2A2C.0020.0002] # SAURASHTRA VOWEL SIGN UU -A8BA ; [.2A2D.0020.0002] # SAURASHTRA VOWEL SIGN VOCALIC R -A8BB ; [.2A2E.0020.0002] # SAURASHTRA VOWEL SIGN VOCALIC RR -A8BC ; [.2A2F.0020.0002] # SAURASHTRA VOWEL SIGN VOCALIC L -A8BD ; [.2A30.0020.0002] # SAURASHTRA VOWEL SIGN VOCALIC LL -A8BE ; [.2A31.0020.0002] # SAURASHTRA VOWEL SIGN E -A8BF ; [.2A32.0020.0002] # SAURASHTRA VOWEL SIGN EE -A8C0 ; [.2A33.0020.0002] # SAURASHTRA VOWEL SIGN AI -A8C1 ; [.2A34.0020.0002] # SAURASHTRA VOWEL SIGN O -A8C2 ; [.2A35.0020.0002] # SAURASHTRA VOWEL SIGN OO -A8C3 ; [.2A36.0020.0002] # SAURASHTRA VOWEL SIGN AU -A8C4 ; [.2A37.0020.0002] # SAURASHTRA SIGN VIRAMA -11083 ; [.2A38.0020.0002] # KAITHI LETTER A -11084 ; [.2A39.0020.0002] # KAITHI LETTER AA -11085 ; [.2A3A.0020.0002] # KAITHI LETTER I -11086 ; [.2A3B.0020.0002] # KAITHI LETTER II -11087 ; [.2A3C.0020.0002] # KAITHI LETTER U -11088 ; [.2A3D.0020.0002] # KAITHI LETTER UU -11089 ; [.2A3E.0020.0002] # KAITHI LETTER E -1108A ; [.2A3F.0020.0002] # KAITHI LETTER AI -1108B ; [.2A40.0020.0002] # KAITHI LETTER O -1108C ; [.2A41.0020.0002] # KAITHI LETTER AU -1108D ; [.2A42.0020.0002] # KAITHI LETTER KA -1108E ; [.2A43.0020.0002] # KAITHI LETTER KHA -1108F ; [.2A44.0020.0002] # KAITHI LETTER GA -11090 ; [.2A45.0020.0002] # KAITHI LETTER GHA -11091 ; [.2A46.0020.0002] # KAITHI LETTER NGA -11092 ; [.2A47.0020.0002] # KAITHI LETTER CA -11093 ; [.2A48.0020.0002] # KAITHI LETTER CHA -11094 ; [.2A49.0020.0002] # KAITHI LETTER JA -11095 ; [.2A4A.0020.0002] # KAITHI LETTER JHA -11096 ; [.2A4B.0020.0002] # KAITHI LETTER NYA -11097 ; [.2A4C.0020.0002] # KAITHI LETTER TTA -11098 ; [.2A4D.0020.0002] # KAITHI LETTER TTHA -11099 ; [.2A4E.0020.0002] # KAITHI LETTER DDA -1109A ; [.2A4E.0020.0002][.0000.00C2.0002] # KAITHI LETTER DDDHA -1109B ; [.2A4F.0020.0002] # KAITHI LETTER DDHA -1109C ; [.2A4F.0020.0002][.0000.00C2.0002] # KAITHI LETTER RHA -1109D ; [.2A50.0020.0002] # KAITHI LETTER NNA -1109E ; [.2A51.0020.0002] # KAITHI LETTER TA -1109F ; [.2A52.0020.0002] # KAITHI LETTER THA -110A0 ; [.2A53.0020.0002] # KAITHI LETTER DA -110A1 ; [.2A54.0020.0002] # KAITHI LETTER DHA -110A2 ; [.2A55.0020.0002] # KAITHI LETTER NA -110A3 ; [.2A56.0020.0002] # KAITHI LETTER PA -110A4 ; [.2A57.0020.0002] # KAITHI LETTER PHA -110A5 ; [.2A58.0020.0002] # KAITHI LETTER BA -110AB ; [.2A58.0020.0002][.0000.00C2.0002] # KAITHI LETTER VA -110A6 ; [.2A59.0020.0002] # KAITHI LETTER BHA -110A7 ; [.2A5A.0020.0002] # KAITHI LETTER MA -110A8 ; [.2A5B.0020.0002] # KAITHI LETTER YA -110A9 ; [.2A5C.0020.0002] # KAITHI LETTER RA -110AA ; [.2A5D.0020.0002] # KAITHI LETTER LA -110AC ; [.2A5E.0020.0002] # KAITHI LETTER SHA -110AD ; [.2A5F.0020.0002] # KAITHI LETTER SSA -110AE ; [.2A60.0020.0002] # KAITHI LETTER SA -110AF ; [.2A61.0020.0002] # KAITHI LETTER HA -110B0 ; [.2A62.0020.0002] # KAITHI VOWEL SIGN AA -110B1 ; [.2A63.0020.0002] # KAITHI VOWEL SIGN I -110B2 ; [.2A64.0020.0002] # KAITHI VOWEL SIGN II -110B3 ; [.2A65.0020.0002] # KAITHI VOWEL SIGN U -110B4 ; [.2A66.0020.0002] # KAITHI VOWEL SIGN UU -110B5 ; [.2A67.0020.0002] # KAITHI VOWEL SIGN E -110B6 ; [.2A68.0020.0002] # KAITHI VOWEL SIGN AI -110B7 ; [.2A69.0020.0002] # KAITHI VOWEL SIGN O -110B8 ; [.2A6A.0020.0002] # KAITHI VOWEL SIGN AU -110B9 ; [.2A6B.0020.0002] # KAITHI SIGN VIRAMA -11150 ; [.2A6C.0020.0002] # MAHAJANI LETTER A -11151 ; [.2A6D.0020.0002] # MAHAJANI LETTER I -11152 ; [.2A6E.0020.0002] # MAHAJANI LETTER U -11153 ; [.2A6F.0020.0002] # MAHAJANI LETTER E -11154 ; [.2A70.0020.0002] # MAHAJANI LETTER O -11155 ; [.2A71.0020.0002] # MAHAJANI LETTER KA -11156 ; [.2A72.0020.0002] # MAHAJANI LETTER KHA -11157 ; [.2A73.0020.0002] # MAHAJANI LETTER GA -11158 ; [.2A74.0020.0002] # MAHAJANI LETTER GHA -11159 ; [.2A75.0020.0002] # MAHAJANI LETTER CA -1115A ; [.2A76.0020.0002] # MAHAJANI LETTER CHA -1115B ; [.2A77.0020.0002] # MAHAJANI LETTER JA -1115C ; [.2A78.0020.0002] # MAHAJANI LETTER JHA -1115D ; [.2A79.0020.0002] # MAHAJANI LETTER NYA -1115E ; [.2A7A.0020.0002] # MAHAJANI LETTER TTA -1115F ; [.2A7B.0020.0002] # MAHAJANI LETTER TTHA -11160 ; [.2A7C.0020.0002] # MAHAJANI LETTER DDA -11161 ; [.2A7D.0020.0002] # MAHAJANI LETTER DDHA -11162 ; [.2A7E.0020.0002] # MAHAJANI LETTER NNA -11163 ; [.2A7F.0020.0002] # MAHAJANI LETTER TA -11164 ; [.2A80.0020.0002] # MAHAJANI LETTER THA -11165 ; [.2A81.0020.0002] # MAHAJANI LETTER DA -11166 ; [.2A82.0020.0002] # MAHAJANI LETTER DHA -11167 ; [.2A83.0020.0002] # MAHAJANI LETTER NA -11168 ; [.2A84.0020.0002] # MAHAJANI LETTER PA -11169 ; [.2A85.0020.0002] # MAHAJANI LETTER PHA -1116A ; [.2A86.0020.0002] # MAHAJANI LETTER BA -1116B ; [.2A87.0020.0002] # MAHAJANI LETTER BHA -1116C ; [.2A88.0020.0002] # MAHAJANI LETTER MA -1116D ; [.2A89.0020.0002] # MAHAJANI LETTER RA -1116E ; [.2A8A.0020.0002] # MAHAJANI LETTER LA -1116F ; [.2A8B.0020.0002] # MAHAJANI LETTER VA -11176 ; [.2A8C.0020.0002] # MAHAJANI LIGATURE SHRI -11170 ; [.2A8D.0020.0002] # MAHAJANI LETTER SA -11171 ; [.2A8E.0020.0002] # MAHAJANI LETTER HA -11172 ; [.2A8F.0020.0002] # MAHAJANI LETTER RRA -111C4 ; [.2A90.0020.0002] # SHARADA OM -111DA ; [.2A91.0020.0002] # SHARADA EKAM -11183 ; [.2A92.0020.0002] # SHARADA LETTER A -11184 ; [.2A93.0020.0002] # SHARADA LETTER AA -11185 ; [.2A94.0020.0002] # SHARADA LETTER I -11186 ; [.2A95.0020.0002] # SHARADA LETTER II -11187 ; [.2A96.0020.0002] # SHARADA LETTER U -11188 ; [.2A97.0020.0002] # SHARADA LETTER UU -11189 ; [.2A98.0020.0002] # SHARADA LETTER VOCALIC R -1118A ; [.2A99.0020.0002] # SHARADA LETTER VOCALIC RR -1118B ; [.2A9A.0020.0002] # SHARADA LETTER VOCALIC L -1118C ; [.2A9B.0020.0002] # SHARADA LETTER VOCALIC LL -1118D ; [.2A9C.0020.0002] # SHARADA LETTER E -1118E ; [.2A9D.0020.0002] # SHARADA LETTER AI -1118F ; [.2A9E.0020.0002] # SHARADA LETTER O -11190 ; [.2A9F.0020.0002] # SHARADA LETTER AU -11191 ; [.2AA0.0020.0002] # SHARADA LETTER KA -11192 ; [.2AA1.0020.0002] # SHARADA LETTER KHA -11193 ; [.2AA2.0020.0002] # SHARADA LETTER GA -11194 ; [.2AA3.0020.0002] # SHARADA LETTER GHA -11195 ; [.2AA4.0020.0002] # SHARADA LETTER NGA -11196 ; [.2AA5.0020.0002] # SHARADA LETTER CA -11197 ; [.2AA6.0020.0002] # SHARADA LETTER CHA -11198 ; [.2AA7.0020.0002] # SHARADA LETTER JA -11199 ; [.2AA8.0020.0002] # SHARADA LETTER JHA -1119A ; [.2AA9.0020.0002] # SHARADA LETTER NYA -1119B ; [.2AAA.0020.0002] # SHARADA LETTER TTA -1119C ; [.2AAB.0020.0002] # SHARADA LETTER TTHA -1119D ; [.2AAC.0020.0002] # SHARADA LETTER DDA -1119E ; [.2AAD.0020.0002] # SHARADA LETTER DDHA -1119F ; [.2AAE.0020.0002] # SHARADA LETTER NNA -111A0 ; [.2AAF.0020.0002] # SHARADA LETTER TA -111A1 ; [.2AB0.0020.0002] # SHARADA LETTER THA -111A2 ; [.2AB1.0020.0002] # SHARADA LETTER DA -111A3 ; [.2AB2.0020.0002] # SHARADA LETTER DHA -111A4 ; [.2AB3.0020.0002] # SHARADA LETTER NA -111A5 ; [.2AB4.0020.0002] # SHARADA LETTER PA -111A6 ; [.2AB5.0020.0002] # SHARADA LETTER PHA -111A7 ; [.2AB6.0020.0002] # SHARADA LETTER BA -111A8 ; [.2AB7.0020.0002] # SHARADA LETTER BHA -111A9 ; [.2AB8.0020.0002] # SHARADA LETTER MA -111AA ; [.2AB9.0020.0002] # SHARADA LETTER YA -111AB ; [.2ABA.0020.0002] # SHARADA LETTER RA -111AC ; [.2ABB.0020.0002] # SHARADA LETTER LA -111AD ; [.2ABC.0020.0002] # SHARADA LETTER LLA -111AE ; [.2ABD.0020.0002] # SHARADA LETTER VA -111AF ; [.2ABE.0020.0002] # SHARADA LETTER SHA -111B0 ; [.2ABF.0020.0002] # SHARADA LETTER SSA -111B1 ; [.2AC0.0020.0002] # SHARADA LETTER SA -111B2 ; [.2AC1.0020.0002] # SHARADA LETTER HA -111C1 ; [.2AC2.0020.0002] # SHARADA SIGN AVAGRAHA -111C2 ; [.2AC3.0020.0002] # SHARADA SIGN JIHVAMULIYA -111C3 ; [.2AC4.0020.0002] # SHARADA SIGN UPADHMANIYA -111DC ; [.2AC5.0020.0002] # SHARADA HEADSTROKE -111B3 ; [.2AC6.0020.0002] # SHARADA VOWEL SIGN AA -111B4 ; [.2AC7.0020.0002] # SHARADA VOWEL SIGN I -111B5 ; [.2AC8.0020.0002] # SHARADA VOWEL SIGN II -111B6 ; [.2AC9.0020.0002] # SHARADA VOWEL SIGN U -111B7 ; [.2ACA.0020.0002] # SHARADA VOWEL SIGN UU -111B8 ; [.2ACB.0020.0002] # SHARADA VOWEL SIGN VOCALIC R -111B9 ; [.2ACC.0020.0002] # SHARADA VOWEL SIGN VOCALIC RR -111BA ; [.2ACD.0020.0002] # SHARADA VOWEL SIGN VOCALIC L -111BB ; [.2ACE.0020.0002] # SHARADA VOWEL SIGN VOCALIC LL -111BC ; [.2ACF.0020.0002] # SHARADA VOWEL SIGN E -111BD ; [.2AD0.0020.0002] # SHARADA VOWEL SIGN AI -111BE ; [.2AD1.0020.0002] # SHARADA VOWEL SIGN O -111BF ; [.2AD2.0020.0002] # SHARADA VOWEL SIGN AU -111C0 ; [.2AD3.0020.0002] # SHARADA SIGN VIRAMA -11200 ; [.2AD4.0020.0002] # KHOJKI LETTER A -11201 ; [.2AD5.0020.0002] # KHOJKI LETTER AA -11202 ; [.2AD6.0020.0002] # KHOJKI LETTER I -11203 ; [.2AD7.0020.0002] # KHOJKI LETTER U -11204 ; [.2AD8.0020.0002] # KHOJKI LETTER E -11205 ; [.2AD9.0020.0002] # KHOJKI LETTER AI -11206 ; [.2ADA.0020.0002] # KHOJKI LETTER O -11207 ; [.2ADB.0020.0002] # KHOJKI LETTER AU -11208 ; [.2ADC.0020.0002] # KHOJKI LETTER KA -11209 ; [.2ADD.0020.0002] # KHOJKI LETTER KHA -1120A ; [.2ADE.0020.0002] # KHOJKI LETTER GA -1120B ; [.2ADF.0020.0002] # KHOJKI LETTER GGA -1120C ; [.2AE0.0020.0002] # KHOJKI LETTER GHA -1120D ; [.2AE1.0020.0002] # KHOJKI LETTER NGA -1120E ; [.2AE2.0020.0002] # KHOJKI LETTER CA -1120F ; [.2AE3.0020.0002] # KHOJKI LETTER CHA -11210 ; [.2AE4.0020.0002] # KHOJKI LETTER JA -11211 ; [.2AE5.0020.0002] # KHOJKI LETTER JJA -11213 ; [.2AE6.0020.0002] # KHOJKI LETTER NYA -11214 ; [.2AE7.0020.0002] # KHOJKI LETTER TTA -11215 ; [.2AE8.0020.0002] # KHOJKI LETTER TTHA -11216 ; [.2AE9.0020.0002] # KHOJKI LETTER DDA -11217 ; [.2AEA.0020.0002] # KHOJKI LETTER DDHA -11218 ; [.2AEB.0020.0002] # KHOJKI LETTER NNA -11219 ; [.2AEC.0020.0002] # KHOJKI LETTER TA -1121A ; [.2AED.0020.0002] # KHOJKI LETTER THA -1121B ; [.2AEE.0020.0002] # KHOJKI LETTER DA -1121C ; [.2AEF.0020.0002] # KHOJKI LETTER DDDA -1121D ; [.2AF0.0020.0002] # KHOJKI LETTER DHA -1121E ; [.2AF1.0020.0002] # KHOJKI LETTER NA -1121F ; [.2AF2.0020.0002] # KHOJKI LETTER PA -11220 ; [.2AF3.0020.0002] # KHOJKI LETTER PHA -11221 ; [.2AF4.0020.0002] # KHOJKI LETTER BA -11222 ; [.2AF5.0020.0002] # KHOJKI LETTER BBA -11223 ; [.2AF6.0020.0002] # KHOJKI LETTER BHA -11224 ; [.2AF7.0020.0002] # KHOJKI LETTER MA -11225 ; [.2AF8.0020.0002] # KHOJKI LETTER YA -11226 ; [.2AF9.0020.0002] # KHOJKI LETTER RA -11227 ; [.2AFA.0020.0002] # KHOJKI LETTER LA -11228 ; [.2AFB.0020.0002] # KHOJKI LETTER VA -11229 ; [.2AFC.0020.0002] # KHOJKI LETTER SA -1122A ; [.2AFD.0020.0002] # KHOJKI LETTER HA -1122B ; [.2AFE.0020.0002] # KHOJKI LETTER LLA -1122C ; [.2AFF.0020.0002] # KHOJKI VOWEL SIGN AA -1122D ; [.2B00.0020.0002] # KHOJKI VOWEL SIGN I -1122E ; [.2B01.0020.0002] # KHOJKI VOWEL SIGN II -1122F ; [.2B02.0020.0002] # KHOJKI VOWEL SIGN U -11230 ; [.2B03.0020.0002] # KHOJKI VOWEL SIGN E -11231 ; [.2B04.0020.0002] # KHOJKI VOWEL SIGN AI -11232 ; [.2B05.0020.0002] # KHOJKI VOWEL SIGN O -11233 ; [.2B06.0020.0002] # KHOJKI VOWEL SIGN AU -11235 ; [.2B07.0020.0002] # KHOJKI SIGN VIRAMA -112B0 ; [.2B08.0020.0002] # KHUDAWADI LETTER A -112B1 ; [.2B09.0020.0002] # KHUDAWADI LETTER AA -112B2 ; [.2B0A.0020.0002] # KHUDAWADI LETTER I -112B3 ; [.2B0B.0020.0002] # KHUDAWADI LETTER II -112B4 ; [.2B0C.0020.0002] # KHUDAWADI LETTER U -112B5 ; [.2B0D.0020.0002] # KHUDAWADI LETTER UU -112B6 ; [.2B0E.0020.0002] # KHUDAWADI LETTER E -112B7 ; [.2B0F.0020.0002] # KHUDAWADI LETTER AI -112B8 ; [.2B10.0020.0002] # KHUDAWADI LETTER O -112B9 ; [.2B11.0020.0002] # KHUDAWADI LETTER AU -112BA ; [.2B12.0020.0002] # KHUDAWADI LETTER KA -112BB ; [.2B13.0020.0002] # KHUDAWADI LETTER KHA -112BC ; [.2B14.0020.0002] # KHUDAWADI LETTER GA -112BD ; [.2B15.0020.0002] # KHUDAWADI LETTER GGA -112BE ; [.2B16.0020.0002] # KHUDAWADI LETTER GHA -112BF ; [.2B17.0020.0002] # KHUDAWADI LETTER NGA -112C0 ; [.2B18.0020.0002] # KHUDAWADI LETTER CA -112C1 ; [.2B19.0020.0002] # KHUDAWADI LETTER CHA -112C2 ; [.2B1A.0020.0002] # KHUDAWADI LETTER JA -112C3 ; [.2B1B.0020.0002] # KHUDAWADI LETTER JJA -112C4 ; [.2B1C.0020.0002] # KHUDAWADI LETTER JHA -112C5 ; [.2B1D.0020.0002] # KHUDAWADI LETTER NYA -112C6 ; [.2B1E.0020.0002] # KHUDAWADI LETTER TTA -112C7 ; [.2B1F.0020.0002] # KHUDAWADI LETTER TTHA -112C8 ; [.2B20.0020.0002] # KHUDAWADI LETTER DDA -112C9 ; [.2B21.0020.0002] # KHUDAWADI LETTER DDDA -112CA ; [.2B22.0020.0002] # KHUDAWADI LETTER RRA -112CB ; [.2B23.0020.0002] # KHUDAWADI LETTER DDHA -112CC ; [.2B24.0020.0002] # KHUDAWADI LETTER NNA -112CD ; [.2B25.0020.0002] # KHUDAWADI LETTER TA -112CE ; [.2B26.0020.0002] # KHUDAWADI LETTER THA -112CF ; [.2B27.0020.0002] # KHUDAWADI LETTER DA -112D0 ; [.2B28.0020.0002] # KHUDAWADI LETTER DHA -112D1 ; [.2B29.0020.0002] # KHUDAWADI LETTER NA -112D2 ; [.2B2A.0020.0002] # KHUDAWADI LETTER PA -112D3 ; [.2B2B.0020.0002] # KHUDAWADI LETTER PHA -112D4 ; [.2B2C.0020.0002] # KHUDAWADI LETTER BA -112D5 ; [.2B2D.0020.0002] # KHUDAWADI LETTER BBA -112D6 ; [.2B2E.0020.0002] # KHUDAWADI LETTER BHA -112D7 ; [.2B2F.0020.0002] # KHUDAWADI LETTER MA -112D8 ; [.2B30.0020.0002] # KHUDAWADI LETTER YA -112D9 ; [.2B31.0020.0002] # KHUDAWADI LETTER RA -112DA ; [.2B32.0020.0002] # KHUDAWADI LETTER LA -112DB ; [.2B33.0020.0002] # KHUDAWADI LETTER VA -112DC ; [.2B34.0020.0002] # KHUDAWADI LETTER SHA -112DD ; [.2B35.0020.0002] # KHUDAWADI LETTER SA -112DE ; [.2B36.0020.0002] # KHUDAWADI LETTER HA -112E0 ; [.2B37.0020.0002] # KHUDAWADI VOWEL SIGN AA -112E1 ; [.2B38.0020.0002] # KHUDAWADI VOWEL SIGN I -112E2 ; [.2B39.0020.0002] # KHUDAWADI VOWEL SIGN II -112E3 ; [.2B3A.0020.0002] # KHUDAWADI VOWEL SIGN U -112E4 ; [.2B3B.0020.0002] # KHUDAWADI VOWEL SIGN UU -112E5 ; [.2B3C.0020.0002] # KHUDAWADI VOWEL SIGN E -112E6 ; [.2B3D.0020.0002] # KHUDAWADI VOWEL SIGN AI -112E7 ; [.2B3E.0020.0002] # KHUDAWADI VOWEL SIGN O -112E8 ; [.2B3F.0020.0002] # KHUDAWADI VOWEL SIGN AU -112EA ; [.2B40.0020.0002] # KHUDAWADI SIGN VIRAMA -11280 ; [.2B41.0020.0002] # MULTANI LETTER A -11281 ; [.2B42.0020.0002] # MULTANI LETTER I -11282 ; [.2B43.0020.0002] # MULTANI LETTER U -11283 ; [.2B44.0020.0002] # MULTANI LETTER E -112A5 ; [.2B45.0020.0002] # MULTANI LETTER SA -112A6 ; [.2B46.0020.0002] # MULTANI LETTER HA -11284 ; [.2B47.0020.0002] # MULTANI LETTER KA -11285 ; [.2B48.0020.0002] # MULTANI LETTER KHA -11286 ; [.2B49.0020.0002] # MULTANI LETTER GA -11288 ; [.2B4A.0020.0002] # MULTANI LETTER GHA -1128A ; [.2B4B.0020.0002] # MULTANI LETTER CA -1128B ; [.2B4C.0020.0002] # MULTANI LETTER CHA -1128C ; [.2B4D.0020.0002] # MULTANI LETTER JA -1128D ; [.2B4E.0020.0002] # MULTANI LETTER JJA -1128F ; [.2B4F.0020.0002] # MULTANI LETTER NYA -11290 ; [.2B50.0020.0002] # MULTANI LETTER TTA -11291 ; [.2B51.0020.0002] # MULTANI LETTER TTHA -11292 ; [.2B52.0020.0002] # MULTANI LETTER DDA -11293 ; [.2B53.0020.0002] # MULTANI LETTER DDDA -11294 ; [.2B54.0020.0002] # MULTANI LETTER DDHA -11295 ; [.2B55.0020.0002] # MULTANI LETTER NNA -11296 ; [.2B56.0020.0002] # MULTANI LETTER TA -11297 ; [.2B57.0020.0002] # MULTANI LETTER THA -11298 ; [.2B58.0020.0002] # MULTANI LETTER DA -11299 ; [.2B59.0020.0002] # MULTANI LETTER DHA -1129A ; [.2B5A.0020.0002] # MULTANI LETTER NA -1129B ; [.2B5B.0020.0002] # MULTANI LETTER PA -1129C ; [.2B5C.0020.0002] # MULTANI LETTER PHA -1129D ; [.2B5D.0020.0002] # MULTANI LETTER BA -1129F ; [.2B5E.0020.0002] # MULTANI LETTER BHA -112A0 ; [.2B5F.0020.0002] # MULTANI LETTER MA -112A1 ; [.2B60.0020.0002] # MULTANI LETTER YA -112A2 ; [.2B61.0020.0002] # MULTANI LETTER RA -112A3 ; [.2B62.0020.0002] # MULTANI LETTER LA -112A4 ; [.2B63.0020.0002] # MULTANI LETTER VA -112A7 ; [.2B64.0020.0002] # MULTANI LETTER RRA -112A8 ; [.2B65.0020.0002] # MULTANI LETTER RHA -11350 ; [.2B66.0020.0002] # GRANTHA OM -11305 ; [.2B67.0020.0002] # GRANTHA LETTER A -11306 ; [.2B68.0020.0002] # GRANTHA LETTER AA -11307 ; [.2B69.0020.0002] # GRANTHA LETTER I -11308 ; [.2B6A.0020.0002] # GRANTHA LETTER II -11309 ; [.2B6B.0020.0002] # GRANTHA LETTER U -1130A ; [.2B6C.0020.0002] # GRANTHA LETTER UU -1130B ; [.2B6D.0020.0002] # GRANTHA LETTER VOCALIC R -11360 ; [.2B6E.0020.0002] # GRANTHA LETTER VOCALIC RR -1130C ; [.2B6F.0020.0002] # GRANTHA LETTER VOCALIC L -11361 ; [.2B70.0020.0002] # GRANTHA LETTER VOCALIC LL -1130F ; [.2B71.0020.0002] # GRANTHA LETTER EE -11310 ; [.2B72.0020.0002] # GRANTHA LETTER AI -11313 ; [.2B73.0020.0002] # GRANTHA LETTER OO -11314 ; [.2B74.0020.0002] # GRANTHA LETTER AU -11315 ; [.2B75.0020.0002] # GRANTHA LETTER KA -11316 ; [.2B76.0020.0002] # GRANTHA LETTER KHA -11317 ; [.2B77.0020.0002] # GRANTHA LETTER GA -11318 ; [.2B78.0020.0002] # GRANTHA LETTER GHA -11319 ; [.2B79.0020.0002] # GRANTHA LETTER NGA -1131A ; [.2B7A.0020.0002] # GRANTHA LETTER CA -1131B ; [.2B7B.0020.0002] # GRANTHA LETTER CHA -1131C ; [.2B7C.0020.0002] # GRANTHA LETTER JA -1131D ; [.2B7D.0020.0002] # GRANTHA LETTER JHA -1131E ; [.2B7E.0020.0002] # GRANTHA LETTER NYA -1131F ; [.2B7F.0020.0002] # GRANTHA LETTER TTA -11320 ; [.2B80.0020.0002] # GRANTHA LETTER TTHA -11321 ; [.2B81.0020.0002] # GRANTHA LETTER DDA -11322 ; [.2B82.0020.0002] # GRANTHA LETTER DDHA -11323 ; [.2B83.0020.0002] # GRANTHA LETTER NNA -11324 ; [.2B84.0020.0002] # GRANTHA LETTER TA -11325 ; [.2B85.0020.0002] # GRANTHA LETTER THA -11326 ; [.2B86.0020.0002] # GRANTHA LETTER DA -11327 ; [.2B87.0020.0002] # GRANTHA LETTER DHA -11328 ; [.2B88.0020.0002] # GRANTHA LETTER NA -1132A ; [.2B89.0020.0002] # GRANTHA LETTER PA -1132B ; [.2B8A.0020.0002] # GRANTHA LETTER PHA -1132C ; [.2B8B.0020.0002] # GRANTHA LETTER BA -1132D ; [.2B8C.0020.0002] # GRANTHA LETTER BHA -1132E ; [.2B8D.0020.0002] # GRANTHA LETTER MA -1132F ; [.2B8E.0020.0002] # GRANTHA LETTER YA -11330 ; [.2B8F.0020.0002] # GRANTHA LETTER RA -11332 ; [.2B90.0020.0002] # GRANTHA LETTER LA -11333 ; [.2B91.0020.0002] # GRANTHA LETTER LLA -11335 ; [.2B92.0020.0002] # GRANTHA LETTER VA -11336 ; [.2B93.0020.0002] # GRANTHA LETTER SHA -11337 ; [.2B94.0020.0002] # GRANTHA LETTER SSA -11338 ; [.2B95.0020.0002] # GRANTHA LETTER SA -11339 ; [.2B96.0020.0002] # GRANTHA LETTER HA -1133D ; [.2B97.0020.0002] # GRANTHA SIGN AVAGRAHA -1135E ; [.2B98.0020.0002] # GRANTHA LETTER VEDIC ANUSVARA -1135F ; [.2B99.0020.0002] # GRANTHA LETTER VEDIC DOUBLE ANUSVARA -1133E ; [.2B9A.0020.0002] # GRANTHA VOWEL SIGN AA -1133F ; [.2B9B.0020.0002] # GRANTHA VOWEL SIGN I -11340 ; [.2B9C.0020.0002] # GRANTHA VOWEL SIGN II -11341 ; [.2B9D.0020.0002] # GRANTHA VOWEL SIGN U -11342 ; [.2B9E.0020.0002] # GRANTHA VOWEL SIGN UU -11343 ; [.2B9F.0020.0002] # GRANTHA VOWEL SIGN VOCALIC R -11344 ; [.2BA0.0020.0002] # GRANTHA VOWEL SIGN VOCALIC RR -11362 ; [.2BA1.0020.0002] # GRANTHA VOWEL SIGN VOCALIC L -11363 ; [.2BA2.0020.0002] # GRANTHA VOWEL SIGN VOCALIC LL -11347 ; [.2BA3.0020.0002] # GRANTHA VOWEL SIGN EE -11348 ; [.2BA4.0020.0002] # GRANTHA VOWEL SIGN AI -1134B ; [.2BA5.0020.0002] # GRANTHA VOWEL SIGN OO -11347 1133E ; [.2BA5.0020.0002] # GRANTHA VOWEL SIGN OO -1134C ; [.2BA6.0020.0002] # GRANTHA VOWEL SIGN AU -11347 11357 ; [.2BA6.0020.0002] # GRANTHA VOWEL SIGN AU -1134D ; [.2BA7.0020.0002] # GRANTHA SIGN VIRAMA -11357 ; [.2BA8.0020.0002] # GRANTHA AU LENGTH MARK -1135D ; [.2BA9.0020.0002] # GRANTHA SIGN PLUTA -11449 ; [.2BAA.0020.0002] # NEWA OM -1144A ; [.2BAB.0020.0002] # NEWA SIDDHI -11400 ; [.2BAC.0020.0002] # NEWA LETTER A -11401 ; [.2BAD.0020.0002] # NEWA LETTER AA -11402 ; [.2BAE.0020.0002] # NEWA LETTER I -11403 ; [.2BAF.0020.0002] # NEWA LETTER II -11404 ; [.2BB0.0020.0002] # NEWA LETTER U -11405 ; [.2BB1.0020.0002] # NEWA LETTER UU -11406 ; [.2BB2.0020.0002] # NEWA LETTER VOCALIC R -11407 ; [.2BB3.0020.0002] # NEWA LETTER VOCALIC RR -11408 ; [.2BB4.0020.0002] # NEWA LETTER VOCALIC L -11409 ; [.2BB5.0020.0002] # NEWA LETTER VOCALIC LL -1140A ; [.2BB6.0020.0002] # NEWA LETTER E -1140B ; [.2BB7.0020.0002] # NEWA LETTER AI -1140C ; [.2BB8.0020.0002] # NEWA LETTER O -1140D ; [.2BB9.0020.0002] # NEWA LETTER AU -1140E ; [.2BBA.0020.0002] # NEWA LETTER KA -1140F ; [.2BBB.0020.0002] # NEWA LETTER KHA -11410 ; [.2BBC.0020.0002] # NEWA LETTER GA -11411 ; [.2BBD.0020.0002] # NEWA LETTER GHA -11412 ; [.2BBE.0020.0002] # NEWA LETTER NGA -11413 ; [.2BBF.0020.0002] # NEWA LETTER NGHA -11414 ; [.2BC0.0020.0002] # NEWA LETTER CA -11415 ; [.2BC1.0020.0002] # NEWA LETTER CHA -11416 ; [.2BC2.0020.0002] # NEWA LETTER JA -11417 ; [.2BC3.0020.0002] # NEWA LETTER JHA -11418 ; [.2BC4.0020.0002] # NEWA LETTER NYA -11419 ; [.2BC5.0020.0002] # NEWA LETTER NYHA -1141A ; [.2BC6.0020.0002] # NEWA LETTER TTA -1141B ; [.2BC7.0020.0002] # NEWA LETTER TTHA -1141C ; [.2BC8.0020.0002] # NEWA LETTER DDA -1141D ; [.2BC9.0020.0002] # NEWA LETTER DDHA -1141E ; [.2BCA.0020.0002] # NEWA LETTER NNA -1141F ; [.2BCB.0020.0002] # NEWA LETTER TA -11420 ; [.2BCC.0020.0002] # NEWA LETTER THA -11421 ; [.2BCD.0020.0002] # NEWA LETTER DA -11422 ; [.2BCE.0020.0002] # NEWA LETTER DHA -11423 ; [.2BCF.0020.0002] # NEWA LETTER NA -11424 ; [.2BD0.0020.0002] # NEWA LETTER NHA -11425 ; [.2BD1.0020.0002] # NEWA LETTER PA -11426 ; [.2BD2.0020.0002] # NEWA LETTER PHA -11427 ; [.2BD3.0020.0002] # NEWA LETTER BA -11428 ; [.2BD4.0020.0002] # NEWA LETTER BHA -11429 ; [.2BD5.0020.0002] # NEWA LETTER MA -1142A ; [.2BD6.0020.0002] # NEWA LETTER MHA -1142B ; [.2BD7.0020.0002] # NEWA LETTER YA -1142C ; [.2BD8.0020.0002] # NEWA LETTER RA -1142D ; [.2BD9.0020.0002] # NEWA LETTER RHA -1142E ; [.2BDA.0020.0002] # NEWA LETTER LA -1142F ; [.2BDB.0020.0002] # NEWA LETTER LHA -11430 ; [.2BDC.0020.0002] # NEWA LETTER WA -11431 ; [.2BDD.0020.0002] # NEWA LETTER SHA -11432 ; [.2BDE.0020.0002] # NEWA LETTER SSA -11433 ; [.2BDF.0020.0002] # NEWA LETTER SA -11434 ; [.2BE0.0020.0002] # NEWA LETTER HA -11447 ; [.2BE1.0020.0002] # NEWA SIGN AVAGRAHA -11448 ; [.2BE2.0020.0002] # NEWA SIGN FINAL ANUSVARA -11435 ; [.2BE3.0020.0002] # NEWA VOWEL SIGN AA -11436 ; [.2BE4.0020.0002] # NEWA VOWEL SIGN I -11437 ; [.2BE5.0020.0002] # NEWA VOWEL SIGN II -11438 ; [.2BE6.0020.0002] # NEWA VOWEL SIGN U -11439 ; [.2BE7.0020.0002] # NEWA VOWEL SIGN UU -1143A ; [.2BE8.0020.0002] # NEWA VOWEL SIGN VOCALIC R -1143B ; [.2BE9.0020.0002] # NEWA VOWEL SIGN VOCALIC RR -1143C ; [.2BEA.0020.0002] # NEWA VOWEL SIGN VOCALIC L -1143D ; [.2BEB.0020.0002] # NEWA VOWEL SIGN VOCALIC LL -1143E ; [.2BEC.0020.0002] # NEWA VOWEL SIGN E -1143F ; [.2BED.0020.0002] # NEWA VOWEL SIGN AI -11440 ; [.2BEE.0020.0002] # NEWA VOWEL SIGN O -11441 ; [.2BEF.0020.0002] # NEWA VOWEL SIGN AU -11442 ; [.2BF0.0020.0002] # NEWA SIGN VIRAMA -114C7 ; [.2BF1.0020.0002] # TIRHUTA OM -11480 ; [.2BF2.0020.0002] # TIRHUTA ANJI -11481 ; [.2BF3.0020.0002] # TIRHUTA LETTER A -11482 ; [.2BF4.0020.0002] # TIRHUTA LETTER AA -11483 ; [.2BF5.0020.0002] # TIRHUTA LETTER I -11484 ; [.2BF6.0020.0002] # TIRHUTA LETTER II -11485 ; [.2BF7.0020.0002] # TIRHUTA LETTER U -11486 ; [.2BF8.0020.0002] # TIRHUTA LETTER UU -11487 ; [.2BF9.0020.0002] # TIRHUTA LETTER VOCALIC R -11488 ; [.2BFA.0020.0002] # TIRHUTA LETTER VOCALIC RR -11489 ; [.2BFB.0020.0002] # TIRHUTA LETTER VOCALIC L -1148A ; [.2BFC.0020.0002] # TIRHUTA LETTER VOCALIC LL -1148B ; [.2BFD.0020.0002] # TIRHUTA LETTER E -1148C ; [.2BFE.0020.0002] # TIRHUTA LETTER AI -1148D ; [.2BFF.0020.0002] # TIRHUTA LETTER O -1148E ; [.2C00.0020.0002] # TIRHUTA LETTER AU -1148F ; [.2C01.0020.0002] # TIRHUTA LETTER KA -11490 ; [.2C02.0020.0002] # TIRHUTA LETTER KHA -11491 ; [.2C03.0020.0002] # TIRHUTA LETTER GA -11492 ; [.2C04.0020.0002] # TIRHUTA LETTER GHA -11493 ; [.2C05.0020.0002] # TIRHUTA LETTER NGA -11494 ; [.2C06.0020.0002] # TIRHUTA LETTER CA -11495 ; [.2C07.0020.0002] # TIRHUTA LETTER CHA -11496 ; [.2C08.0020.0002] # TIRHUTA LETTER JA -11497 ; [.2C09.0020.0002] # TIRHUTA LETTER JHA -11498 ; [.2C0A.0020.0002] # TIRHUTA LETTER NYA -11499 ; [.2C0B.0020.0002] # TIRHUTA LETTER TTA -1149A ; [.2C0C.0020.0002] # TIRHUTA LETTER TTHA -1149B ; [.2C0D.0020.0002] # TIRHUTA LETTER DDA -1149C ; [.2C0E.0020.0002] # TIRHUTA LETTER DDHA -1149D ; [.2C0F.0020.0002] # TIRHUTA LETTER NNA -1149E ; [.2C10.0020.0002] # TIRHUTA LETTER TA -1149F ; [.2C11.0020.0002] # TIRHUTA LETTER THA -114A0 ; [.2C12.0020.0002] # TIRHUTA LETTER DA -114A1 ; [.2C13.0020.0002] # TIRHUTA LETTER DHA -114A2 ; [.2C14.0020.0002] # TIRHUTA LETTER NA -114A3 ; [.2C15.0020.0002] # TIRHUTA LETTER PA -114A4 ; [.2C16.0020.0002] # TIRHUTA LETTER PHA -114A5 ; [.2C17.0020.0002] # TIRHUTA LETTER BA -114A6 ; [.2C18.0020.0002] # TIRHUTA LETTER BHA -114A7 ; [.2C19.0020.0002] # TIRHUTA LETTER MA -114A8 ; [.2C1A.0020.0002] # TIRHUTA LETTER YA -114A9 ; [.2C1B.0020.0002] # TIRHUTA LETTER RA -114AA ; [.2C1C.0020.0002] # TIRHUTA LETTER LA -114AB ; [.2C1D.0020.0002] # TIRHUTA LETTER VA -114AC ; [.2C1E.0020.0002] # TIRHUTA LETTER SHA -114AD ; [.2C1F.0020.0002] # TIRHUTA LETTER SSA -114AE ; [.2C20.0020.0002] # TIRHUTA LETTER SA -114AF ; [.2C21.0020.0002] # TIRHUTA LETTER HA -114C4 ; [.2C22.0020.0002] # TIRHUTA SIGN AVAGRAHA -114C5 ; [.2C23.0020.0002] # TIRHUTA GVANG -114B0 ; [.2C24.0020.0002] # TIRHUTA VOWEL SIGN AA -114B1 ; [.2C25.0020.0002] # TIRHUTA VOWEL SIGN I -114B2 ; [.2C26.0020.0002] # TIRHUTA VOWEL SIGN II -114B3 ; [.2C27.0020.0002] # TIRHUTA VOWEL SIGN U -114B4 ; [.2C28.0020.0002] # TIRHUTA VOWEL SIGN UU -114B5 ; [.2C29.0020.0002] # TIRHUTA VOWEL SIGN VOCALIC R -114B6 ; [.2C2A.0020.0002] # TIRHUTA VOWEL SIGN VOCALIC RR -114B7 ; [.2C2B.0020.0002] # TIRHUTA VOWEL SIGN VOCALIC L -114B8 ; [.2C2C.0020.0002] # TIRHUTA VOWEL SIGN VOCALIC LL -114B9 ; [.2C2D.0020.0002] # TIRHUTA VOWEL SIGN E -114BA ; [.2C2E.0020.0002] # TIRHUTA VOWEL SIGN SHORT E -114BB ; [.2C2F.0020.0002] # TIRHUTA VOWEL SIGN AI -114B9 114BA ; [.2C2F.0020.0002] # TIRHUTA VOWEL SIGN AI -114BC ; [.2C30.0020.0002] # TIRHUTA VOWEL SIGN O -114B9 114B0 ; [.2C30.0020.0002] # TIRHUTA VOWEL SIGN O -114BD ; [.2C31.0020.0002] # TIRHUTA VOWEL SIGN SHORT O -114BE ; [.2C32.0020.0002] # TIRHUTA VOWEL SIGN AU -114B9 114BD ; [.2C32.0020.0002] # TIRHUTA VOWEL SIGN AU -114C2 ; [.2C33.0020.0002] # TIRHUTA SIGN VIRAMA -11580 ; [.2C34.0020.0002] # SIDDHAM LETTER A -11581 ; [.2C35.0020.0002] # SIDDHAM LETTER AA -11582 ; [.2C36.0020.0002] # SIDDHAM LETTER I -115D8 ; [.2C36.0020.0004][.0000.0111.0004] # SIDDHAM LETTER THREE-CIRCLE ALTERNATE I -115D9 ; [.2C36.0020.0004][.0000.0112.0004] # SIDDHAM LETTER TWO-CIRCLE ALTERNATE I -11583 ; [.2C37.0020.0002] # SIDDHAM LETTER II -115DA ; [.2C37.0020.0004][.0000.0111.0004] # SIDDHAM LETTER TWO-CIRCLE ALTERNATE II -11584 ; [.2C38.0020.0002] # SIDDHAM LETTER U -115DB ; [.2C38.0020.0004][.0000.0111.0004] # SIDDHAM LETTER ALTERNATE U -11585 ; [.2C39.0020.0002] # SIDDHAM LETTER UU -11586 ; [.2C3A.0020.0002] # SIDDHAM LETTER VOCALIC R -11587 ; [.2C3B.0020.0002] # SIDDHAM LETTER VOCALIC RR -11588 ; [.2C3C.0020.0002] # SIDDHAM LETTER VOCALIC L -11589 ; [.2C3D.0020.0002] # SIDDHAM LETTER VOCALIC LL -1158A ; [.2C3E.0020.0002] # SIDDHAM LETTER E -1158B ; [.2C3F.0020.0002] # SIDDHAM LETTER AI -1158C ; [.2C40.0020.0002] # SIDDHAM LETTER O -1158D ; [.2C41.0020.0002] # SIDDHAM LETTER AU -1158E ; [.2C42.0020.0002] # SIDDHAM LETTER KA -1158F ; [.2C43.0020.0002] # SIDDHAM LETTER KHA -11590 ; [.2C44.0020.0002] # SIDDHAM LETTER GA -11591 ; [.2C45.0020.0002] # SIDDHAM LETTER GHA -11592 ; [.2C46.0020.0002] # SIDDHAM LETTER NGA -11593 ; [.2C47.0020.0002] # SIDDHAM LETTER CA -11594 ; [.2C48.0020.0002] # SIDDHAM LETTER CHA -11595 ; [.2C49.0020.0002] # SIDDHAM LETTER JA -11596 ; [.2C4A.0020.0002] # SIDDHAM LETTER JHA -11597 ; [.2C4B.0020.0002] # SIDDHAM LETTER NYA -11598 ; [.2C4C.0020.0002] # SIDDHAM LETTER TTA -11599 ; [.2C4D.0020.0002] # SIDDHAM LETTER TTHA -1159A ; [.2C4E.0020.0002] # SIDDHAM LETTER DDA -1159B ; [.2C4F.0020.0002] # SIDDHAM LETTER DDHA -1159C ; [.2C50.0020.0002] # SIDDHAM LETTER NNA -1159D ; [.2C51.0020.0002] # SIDDHAM LETTER TA -1159E ; [.2C52.0020.0002] # SIDDHAM LETTER THA -1159F ; [.2C53.0020.0002] # SIDDHAM LETTER DA -115A0 ; [.2C54.0020.0002] # SIDDHAM LETTER DHA -115A1 ; [.2C55.0020.0002] # SIDDHAM LETTER NA -115A2 ; [.2C56.0020.0002] # SIDDHAM LETTER PA -115A3 ; [.2C57.0020.0002] # SIDDHAM LETTER PHA -115A4 ; [.2C58.0020.0002] # SIDDHAM LETTER BA -115A5 ; [.2C59.0020.0002] # SIDDHAM LETTER BHA -115A6 ; [.2C5A.0020.0002] # SIDDHAM LETTER MA -115A7 ; [.2C5B.0020.0002] # SIDDHAM LETTER YA -115A8 ; [.2C5C.0020.0002] # SIDDHAM LETTER RA -115A9 ; [.2C5D.0020.0002] # SIDDHAM LETTER LA -115AA ; [.2C5E.0020.0002] # SIDDHAM LETTER VA -115AB ; [.2C5F.0020.0002] # SIDDHAM LETTER SHA -115AC ; [.2C60.0020.0002] # SIDDHAM LETTER SSA -115AD ; [.2C61.0020.0002] # SIDDHAM LETTER SA -115AE ; [.2C62.0020.0002] # SIDDHAM LETTER HA -115AF ; [.2C63.0020.0002] # SIDDHAM VOWEL SIGN AA -115B0 ; [.2C64.0020.0002] # SIDDHAM VOWEL SIGN I -115B1 ; [.2C65.0020.0002] # SIDDHAM VOWEL SIGN II -115B2 ; [.2C66.0020.0002] # SIDDHAM VOWEL SIGN U -115DC ; [.2C66.0020.0004][.0000.0111.0004] # SIDDHAM VOWEL SIGN ALTERNATE U -115B3 ; [.2C67.0020.0002] # SIDDHAM VOWEL SIGN UU -115DD ; [.2C67.0020.0004][.0000.0111.0004] # SIDDHAM VOWEL SIGN ALTERNATE UU -115B4 ; [.2C68.0020.0002] # SIDDHAM VOWEL SIGN VOCALIC R -115B5 ; [.2C69.0020.0002] # SIDDHAM VOWEL SIGN VOCALIC RR -115B8 ; [.2C6A.0020.0002] # SIDDHAM VOWEL SIGN E -115B9 ; [.2C6B.0020.0002] # SIDDHAM VOWEL SIGN AI -115BA ; [.2C6C.0020.0002] # SIDDHAM VOWEL SIGN O -115B8 115AF ; [.2C6C.0020.0002] # SIDDHAM VOWEL SIGN O -115BB ; [.2C6D.0020.0002] # SIDDHAM VOWEL SIGN AU -115B9 115AF ; [.2C6D.0020.0002] # SIDDHAM VOWEL SIGN AU -115BF ; [.2C6E.0020.0002] # SIDDHAM SIGN VIRAMA -11600 ; [.2C6F.0020.0002] # MODI LETTER A -11601 ; [.2C70.0020.0002] # MODI LETTER AA -11602 ; [.2C71.0020.0002] # MODI LETTER I -11603 ; [.2C72.0020.0002] # MODI LETTER II -11604 ; [.2C73.0020.0002] # MODI LETTER U -11605 ; [.2C74.0020.0002] # MODI LETTER UU -11606 ; [.2C75.0020.0002] # MODI LETTER VOCALIC R -11607 ; [.2C76.0020.0002] # MODI LETTER VOCALIC RR -11608 ; [.2C77.0020.0002] # MODI LETTER VOCALIC L -11609 ; [.2C78.0020.0002] # MODI LETTER VOCALIC LL -1160A ; [.2C79.0020.0002] # MODI LETTER E -1160B ; [.2C7A.0020.0002] # MODI LETTER AI -1160C ; [.2C7B.0020.0002] # MODI LETTER O -1160D ; [.2C7C.0020.0002] # MODI LETTER AU -1160E ; [.2C7D.0020.0002] # MODI LETTER KA -1160F ; [.2C7E.0020.0002] # MODI LETTER KHA -11610 ; [.2C7F.0020.0002] # MODI LETTER GA -11611 ; [.2C80.0020.0002] # MODI LETTER GHA -11612 ; [.2C81.0020.0002] # MODI LETTER NGA -11613 ; [.2C82.0020.0002] # MODI LETTER CA -11614 ; [.2C83.0020.0002] # MODI LETTER CHA -11615 ; [.2C84.0020.0002] # MODI LETTER JA -11616 ; [.2C85.0020.0002] # MODI LETTER JHA -11617 ; [.2C86.0020.0002] # MODI LETTER NYA -11618 ; [.2C87.0020.0002] # MODI LETTER TTA -11619 ; [.2C88.0020.0002] # MODI LETTER TTHA -1161A ; [.2C89.0020.0002] # MODI LETTER DDA -1161B ; [.2C8A.0020.0002] # MODI LETTER DDHA -1161C ; [.2C8B.0020.0002] # MODI LETTER NNA -1161D ; [.2C8C.0020.0002] # MODI LETTER TA -1161E ; [.2C8D.0020.0002] # MODI LETTER THA -1161F ; [.2C8E.0020.0002] # MODI LETTER DA -11620 ; [.2C8F.0020.0002] # MODI LETTER DHA -11621 ; [.2C90.0020.0002] # MODI LETTER NA -11622 ; [.2C91.0020.0002] # MODI LETTER PA -11623 ; [.2C92.0020.0002] # MODI LETTER PHA -11624 ; [.2C93.0020.0002] # MODI LETTER BA -11625 ; [.2C94.0020.0002] # MODI LETTER BHA -11626 ; [.2C95.0020.0002] # MODI LETTER MA -11627 ; [.2C96.0020.0002] # MODI LETTER YA -11628 ; [.2C97.0020.0002] # MODI LETTER RA -11629 ; [.2C98.0020.0002] # MODI LETTER LA -1162A ; [.2C99.0020.0002] # MODI LETTER VA -1162B ; [.2C9A.0020.0002] # MODI LETTER SHA -1162C ; [.2C9B.0020.0002] # MODI LETTER SSA -1162D ; [.2C9C.0020.0002] # MODI LETTER SA -1162E ; [.2C9D.0020.0002] # MODI LETTER HA -1162F ; [.2C9E.0020.0002] # MODI LETTER LLA -11630 ; [.2C9F.0020.0002] # MODI VOWEL SIGN AA -11631 ; [.2CA0.0020.0002] # MODI VOWEL SIGN I -11632 ; [.2CA1.0020.0002] # MODI VOWEL SIGN II -11633 ; [.2CA2.0020.0002] # MODI VOWEL SIGN U -11634 ; [.2CA3.0020.0002] # MODI VOWEL SIGN UU -11635 ; [.2CA4.0020.0002] # MODI VOWEL SIGN VOCALIC R -11636 ; [.2CA5.0020.0002] # MODI VOWEL SIGN VOCALIC RR -11637 ; [.2CA6.0020.0002] # MODI VOWEL SIGN VOCALIC L -11638 ; [.2CA7.0020.0002] # MODI VOWEL SIGN VOCALIC LL -11639 ; [.2CA8.0020.0002] # MODI VOWEL SIGN E -1163A ; [.2CA9.0020.0002] # MODI VOWEL SIGN AI -1163B ; [.2CAA.0020.0002] # MODI VOWEL SIGN O -1163C ; [.2CAB.0020.0002] # MODI VOWEL SIGN AU -1163F ; [.2CAC.0020.0002] # MODI SIGN VIRAMA -11644 ; [.2CAD.0020.0002] # MODI SIGN HUVA -11680 ; [.2CAE.0020.0002] # TAKRI LETTER A -11681 ; [.2CAF.0020.0002] # TAKRI LETTER AA -11682 ; [.2CB0.0020.0002] # TAKRI LETTER I -11683 ; [.2CB1.0020.0002] # TAKRI LETTER II -11684 ; [.2CB2.0020.0002] # TAKRI LETTER U -11685 ; [.2CB3.0020.0002] # TAKRI LETTER UU -11686 ; [.2CB4.0020.0002] # TAKRI LETTER E -11687 ; [.2CB5.0020.0002] # TAKRI LETTER AI -11688 ; [.2CB6.0020.0002] # TAKRI LETTER O -11689 ; [.2CB7.0020.0002] # TAKRI LETTER AU -116A8 ; [.2CB8.0020.0002] # TAKRI LETTER SA -116A7 ; [.2CB9.0020.0002] # TAKRI LETTER SHA -116A9 ; [.2CBA.0020.0002] # TAKRI LETTER HA -1168A ; [.2CBB.0020.0002] # TAKRI LETTER KA -1168B ; [.2CBC.0020.0002] # TAKRI LETTER KHA -1168C ; [.2CBD.0020.0002] # TAKRI LETTER GA -1168D ; [.2CBE.0020.0002] # TAKRI LETTER GHA -1168E ; [.2CBF.0020.0002] # TAKRI LETTER NGA -1168F ; [.2CC0.0020.0002] # TAKRI LETTER CA -11690 ; [.2CC1.0020.0002] # TAKRI LETTER CHA -11691 ; [.2CC2.0020.0002] # TAKRI LETTER JA -11692 ; [.2CC3.0020.0002] # TAKRI LETTER JHA -11693 ; [.2CC4.0020.0002] # TAKRI LETTER NYA -11694 ; [.2CC5.0020.0002] # TAKRI LETTER TTA -11695 ; [.2CC6.0020.0002] # TAKRI LETTER TTHA -11696 ; [.2CC7.0020.0002] # TAKRI LETTER DDA -11697 ; [.2CC8.0020.0002] # TAKRI LETTER DDHA -11698 ; [.2CC9.0020.0002] # TAKRI LETTER NNA -11699 ; [.2CCA.0020.0002] # TAKRI LETTER TA -1169A ; [.2CCB.0020.0002] # TAKRI LETTER THA -1169B ; [.2CCC.0020.0002] # TAKRI LETTER DA -1169C ; [.2CCD.0020.0002] # TAKRI LETTER DHA -1169D ; [.2CCE.0020.0002] # TAKRI LETTER NA -1169E ; [.2CCF.0020.0002] # TAKRI LETTER PA -1169F ; [.2CD0.0020.0002] # TAKRI LETTER PHA -116A0 ; [.2CD1.0020.0002] # TAKRI LETTER BA -116A1 ; [.2CD2.0020.0002] # TAKRI LETTER BHA -116A2 ; [.2CD3.0020.0002] # TAKRI LETTER MA -116A3 ; [.2CD4.0020.0002] # TAKRI LETTER YA -116A4 ; [.2CD5.0020.0002] # TAKRI LETTER RA -116A5 ; [.2CD6.0020.0002] # TAKRI LETTER LA -116A6 ; [.2CD7.0020.0002] # TAKRI LETTER VA -116AA ; [.2CD8.0020.0002] # TAKRI LETTER RRA -116AD ; [.2CD9.0020.0002] # TAKRI VOWEL SIGN AA -116AE ; [.2CDA.0020.0002] # TAKRI VOWEL SIGN I -116AF ; [.2CDB.0020.0002] # TAKRI VOWEL SIGN II -116B0 ; [.2CDC.0020.0002] # TAKRI VOWEL SIGN U -116B1 ; [.2CDD.0020.0002] # TAKRI VOWEL SIGN UU -116B2 ; [.2CDE.0020.0002] # TAKRI VOWEL SIGN E -116B3 ; [.2CDF.0020.0002] # TAKRI VOWEL SIGN AI -116B4 ; [.2CE0.0020.0002] # TAKRI VOWEL SIGN O -116B5 ; [.2CE1.0020.0002] # TAKRI VOWEL SIGN AU -116B6 ; [.2CE2.0020.0002] # TAKRI SIGN VIRAMA -11700 ; [.2CE3.0020.0002] # AHOM LETTER KA -11701 ; [.2CE4.0020.0002] # AHOM LETTER KHA -11702 ; [.2CE5.0020.0002] # AHOM LETTER NGA -11703 ; [.2CE6.0020.0002] # AHOM LETTER NA -11704 ; [.2CE7.0020.0002] # AHOM LETTER TA -11705 ; [.2CE7.0020.0004][.0000.0111.0004] # AHOM LETTER ALTERNATE TA -11706 ; [.2CE8.0020.0002] # AHOM LETTER PA -11707 ; [.2CE9.0020.0002] # AHOM LETTER PHA -11708 ; [.2CEA.0020.0002] # AHOM LETTER BA -11709 ; [.2CEB.0020.0002] # AHOM LETTER MA -1170A ; [.2CEC.0020.0002] # AHOM LETTER JA -1170B ; [.2CED.0020.0002] # AHOM LETTER CHA -1170C ; [.2CEE.0020.0002] # AHOM LETTER THA -1170D ; [.2CEF.0020.0002] # AHOM LETTER RA -1170E ; [.2CF0.0020.0002] # AHOM LETTER LA -1170F ; [.2CF1.0020.0002] # AHOM LETTER SA -11710 ; [.2CF2.0020.0002] # AHOM LETTER NYA -11711 ; [.2CF3.0020.0002] # AHOM LETTER HA -11712 ; [.2CF4.0020.0002] # AHOM LETTER A -11713 ; [.2CF5.0020.0002] # AHOM LETTER DA -11714 ; [.2CF6.0020.0002] # AHOM LETTER DHA -11715 ; [.2CF7.0020.0002] # AHOM LETTER GA -11716 ; [.2CF7.0020.0004][.0000.0111.0004] # AHOM LETTER ALTERNATE GA -11717 ; [.2CF8.0020.0002] # AHOM LETTER GHA -11718 ; [.2CF9.0020.0002] # AHOM LETTER BHA -11719 ; [.2CFA.0020.0002] # AHOM LETTER JHA -11720 ; [.2CFB.0020.0002] # AHOM VOWEL SIGN A -11721 ; [.2CFC.0020.0002] # AHOM VOWEL SIGN AA -11722 ; [.2CFD.0020.0002] # AHOM VOWEL SIGN I -11723 ; [.2CFE.0020.0002] # AHOM VOWEL SIGN II -11724 ; [.2CFF.0020.0002] # AHOM VOWEL SIGN U -11725 ; [.2D00.0020.0002] # AHOM VOWEL SIGN UU -11726 ; [.2D01.0020.0002] # AHOM VOWEL SIGN E -11727 ; [.2D02.0020.0002] # AHOM VOWEL SIGN AW -11728 ; [.2D03.0020.0002] # AHOM VOWEL SIGN O -11729 ; [.2D04.0020.0002] # AHOM VOWEL SIGN AI -1172A ; [.2D05.0020.0002] # AHOM VOWEL SIGN AM -1172B ; [.2D06.0020.0002] # AHOM SIGN KILLER -1171D ; [.2D07.0020.0002] # AHOM CONSONANT SIGN MEDIAL LA -1171E ; [.2D08.0020.0002] # AHOM CONSONANT SIGN MEDIAL RA -1171F ; [.2D09.0020.0002] # AHOM CONSONANT SIGN MEDIAL LIGATING RA -11D00 ; [.2D0A.0020.0002] # MASARAM GONDI LETTER A -11D01 ; [.2D0B.0020.0002] # MASARAM GONDI LETTER AA -11D02 ; [.2D0C.0020.0002] # MASARAM GONDI LETTER I -11D03 ; [.2D0D.0020.0002] # MASARAM GONDI LETTER II -11D04 ; [.2D0E.0020.0002] # MASARAM GONDI LETTER U -11D05 ; [.2D0F.0020.0002] # MASARAM GONDI LETTER UU -11D06 ; [.2D10.0020.0002] # MASARAM GONDI LETTER E -11D08 ; [.2D11.0020.0002] # MASARAM GONDI LETTER AI -11D09 ; [.2D12.0020.0002] # MASARAM GONDI LETTER O -11D0B ; [.2D13.0020.0002] # MASARAM GONDI LETTER AU -11D0C ; [.2D14.0020.0002] # MASARAM GONDI LETTER KA -11D0D ; [.2D15.0020.0002] # MASARAM GONDI LETTER KHA -11D0E ; [.2D16.0020.0002] # MASARAM GONDI LETTER GA -11D0F ; [.2D17.0020.0002] # MASARAM GONDI LETTER GHA -11D10 ; [.2D18.0020.0002] # MASARAM GONDI LETTER NGA -11D11 ; [.2D19.0020.0002] # MASARAM GONDI LETTER CA -11D12 ; [.2D1A.0020.0002] # MASARAM GONDI LETTER CHA -11D13 ; [.2D1B.0020.0002] # MASARAM GONDI LETTER JA -11D14 ; [.2D1C.0020.0002] # MASARAM GONDI LETTER JHA -11D15 ; [.2D1D.0020.0002] # MASARAM GONDI LETTER NYA -11D16 ; [.2D1E.0020.0002] # MASARAM GONDI LETTER TTA -11D17 ; [.2D1F.0020.0002] # MASARAM GONDI LETTER TTHA -11D18 ; [.2D20.0020.0002] # MASARAM GONDI LETTER DDA -11D19 ; [.2D21.0020.0002] # MASARAM GONDI LETTER DDHA -11D1A ; [.2D22.0020.0002] # MASARAM GONDI LETTER NNA -11D1B ; [.2D23.0020.0002] # MASARAM GONDI LETTER TA -11D1C ; [.2D24.0020.0002] # MASARAM GONDI LETTER THA -11D1D ; [.2D25.0020.0002] # MASARAM GONDI LETTER DA -11D1E ; [.2D26.0020.0002] # MASARAM GONDI LETTER DHA -11D1F ; [.2D27.0020.0002] # MASARAM GONDI LETTER NA -11D20 ; [.2D28.0020.0002] # MASARAM GONDI LETTER PA -11D21 ; [.2D29.0020.0002] # MASARAM GONDI LETTER PHA -11D22 ; [.2D2A.0020.0002] # MASARAM GONDI LETTER BA -11D23 ; [.2D2B.0020.0002] # MASARAM GONDI LETTER BHA -11D24 ; [.2D2C.0020.0002] # MASARAM GONDI LETTER MA -11D25 ; [.2D2D.0020.0002] # MASARAM GONDI LETTER YA -11D26 ; [.2D2E.0020.0002] # MASARAM GONDI LETTER RA -11D46 ; [.2D2E.0020.0017] # MASARAM GONDI REPHA -11D47 ; [.2D2E.0020.0019] # MASARAM GONDI RA-KARA -11D27 ; [.2D2F.0020.0002] # MASARAM GONDI LETTER LA -11D28 ; [.2D30.0020.0002] # MASARAM GONDI LETTER VA -11D29 ; [.2D31.0020.0002] # MASARAM GONDI LETTER SHA -11D2A ; [.2D32.0020.0002] # MASARAM GONDI LETTER SSA -11D2B ; [.2D33.0020.0002] # MASARAM GONDI LETTER SA -11D2C ; [.2D34.0020.0002] # MASARAM GONDI LETTER HA -11D2D ; [.2D35.0020.0002] # MASARAM GONDI LETTER LLA -11D2E ; [.2D36.0020.0002] # MASARAM GONDI LETTER KSSA -11D2F ; [.2D37.0020.0002] # MASARAM GONDI LETTER JNYA -11D30 ; [.2D38.0020.0002] # MASARAM GONDI LETTER TRA -11D31 ; [.2D39.0020.0002] # MASARAM GONDI VOWEL SIGN AA -11D32 ; [.2D3A.0020.0002] # MASARAM GONDI VOWEL SIGN I -11D33 ; [.2D3B.0020.0002] # MASARAM GONDI VOWEL SIGN II -11D34 ; [.2D3C.0020.0002] # MASARAM GONDI VOWEL SIGN U -11D35 ; [.2D3D.0020.0002] # MASARAM GONDI VOWEL SIGN UU -11D36 ; [.2D3E.0020.0002] # MASARAM GONDI VOWEL SIGN VOCALIC R -11D3A ; [.2D3F.0020.0002] # MASARAM GONDI VOWEL SIGN E -11D3C ; [.2D40.0020.0002] # MASARAM GONDI VOWEL SIGN AI -11D3D ; [.2D41.0020.0002] # MASARAM GONDI VOWEL SIGN O -11D3F ; [.2D42.0020.0002] # MASARAM GONDI VOWEL SIGN AU -11D44 ; [.2D43.0020.0002] # MASARAM GONDI SIGN HALANTA -11D45 ; [.2D44.0020.0002] # MASARAM GONDI VIRAMA -1B83 ; [.2D45.0020.0002] # SUNDANESE LETTER A -1BBA ; [.2D45.0020.0004] # SUNDANESE AVAGRAHA -1B84 ; [.2D46.0020.0002] # SUNDANESE LETTER I -1B85 ; [.2D47.0020.0002] # SUNDANESE LETTER U -1B86 ; [.2D48.0020.0002] # SUNDANESE LETTER AE -1B87 ; [.2D49.0020.0002] # SUNDANESE LETTER O -1B88 ; [.2D4A.0020.0002] # SUNDANESE LETTER E -1B89 ; [.2D4B.0020.0002] # SUNDANESE LETTER EU -1B8A ; [.2D4C.0020.0002] # SUNDANESE LETTER KA -1BBE ; [.2D4C.0020.0019] # SUNDANESE LETTER FINAL K -1BAE ; [.2D4D.0020.0002] # SUNDANESE LETTER KHA -1B8B ; [.2D4E.0020.0002] # SUNDANESE LETTER QA -1B8C ; [.2D4F.0020.0002] # SUNDANESE LETTER GA -1B8D ; [.2D50.0020.0002] # SUNDANESE LETTER NGA -1B8E ; [.2D51.0020.0002] # SUNDANESE LETTER CA -1B8F ; [.2D52.0020.0002] # SUNDANESE LETTER JA -1B90 ; [.2D53.0020.0002] # SUNDANESE LETTER ZA -1B91 ; [.2D54.0020.0002] # SUNDANESE LETTER NYA -1B92 ; [.2D55.0020.0002] # SUNDANESE LETTER TA -1B93 ; [.2D56.0020.0002] # SUNDANESE LETTER DA -1B94 ; [.2D57.0020.0002] # SUNDANESE LETTER NA -1B95 ; [.2D58.0020.0002] # SUNDANESE LETTER PA -1B96 ; [.2D59.0020.0002] # SUNDANESE LETTER FA -1B97 ; [.2D5A.0020.0002] # SUNDANESE LETTER VA -1B98 ; [.2D5B.0020.0002] # SUNDANESE LETTER BA -1BBD ; [.2D5C.0020.0002] # SUNDANESE LETTER BHA -1B99 ; [.2D5D.0020.0002] # SUNDANESE LETTER MA -1BBF ; [.2D5D.0020.0019] # SUNDANESE LETTER FINAL M -1BAC ; [.2D5E.0020.0002] # SUNDANESE CONSONANT SIGN PASANGAN MA -1B9A ; [.2D5F.0020.0002] # SUNDANESE LETTER YA -1BA1 ; [.2D60.0020.0002] # SUNDANESE CONSONANT SIGN PAMINGKAL -1B9B ; [.2D61.0020.0002] # SUNDANESE LETTER RA -1BA2 ; [.2D62.0020.0002] # SUNDANESE CONSONANT SIGN PANYAKRA -1BBB ; [.2D63.0020.0002] # SUNDANESE LETTER REU -1B9C ; [.2D64.0020.0002] # SUNDANESE LETTER LA -1BA3 ; [.2D65.0020.0002] # SUNDANESE CONSONANT SIGN PANYIKU -1BBC ; [.2D66.0020.0002] # SUNDANESE LETTER LEU -1B9D ; [.2D67.0020.0002] # SUNDANESE LETTER WA -1BAD ; [.2D68.0020.0002] # SUNDANESE CONSONANT SIGN PASANGAN WA -1B9E ; [.2D69.0020.0002] # SUNDANESE LETTER SA -1B9F ; [.2D6A.0020.0002] # SUNDANESE LETTER XA -1BAF ; [.2D6B.0020.0002] # SUNDANESE LETTER SYA -1BA0 ; [.2D6C.0020.0002] # SUNDANESE LETTER HA -1BA4 ; [.2D6D.0020.0002] # SUNDANESE VOWEL SIGN PANGHULU -1BA5 ; [.2D6E.0020.0002] # SUNDANESE VOWEL SIGN PANYUKU -1BA6 ; [.2D6F.0020.0002] # SUNDANESE VOWEL SIGN PANAELAENG -1BA7 ; [.2D70.0020.0002] # SUNDANESE VOWEL SIGN PANOLONG -1BA8 ; [.2D71.0020.0002] # SUNDANESE VOWEL SIGN PAMEPET -1BA9 ; [.2D72.0020.0002] # SUNDANESE VOWEL SIGN PANEULEUNG -1BAA ; [.2D73.0020.0002] # SUNDANESE SIGN PAMAAEH -1BAB ; [.2D74.0020.0002] # SUNDANESE SIGN VIRAMA -11005 ; [.2D75.0020.0002] # BRAHMI LETTER A -11006 ; [.2D76.0020.0002] # BRAHMI LETTER AA -11007 ; [.2D77.0020.0002] # BRAHMI LETTER I -11008 ; [.2D78.0020.0002] # BRAHMI LETTER II -11009 ; [.2D79.0020.0002] # BRAHMI LETTER U -1100A ; [.2D7A.0020.0002] # BRAHMI LETTER UU -1100B ; [.2D7B.0020.0002] # BRAHMI LETTER VOCALIC R -1100C ; [.2D7C.0020.0002] # BRAHMI LETTER VOCALIC RR -1100D ; [.2D7D.0020.0002] # BRAHMI LETTER VOCALIC L -1100E ; [.2D7E.0020.0002] # BRAHMI LETTER VOCALIC LL -1100F ; [.2D7F.0020.0002] # BRAHMI LETTER E -11010 ; [.2D80.0020.0002] # BRAHMI LETTER AI -11011 ; [.2D81.0020.0002] # BRAHMI LETTER O -11012 ; [.2D82.0020.0002] # BRAHMI LETTER AU -11013 ; [.2D83.0020.0002] # BRAHMI LETTER KA -11014 ; [.2D84.0020.0002] # BRAHMI LETTER KHA -11015 ; [.2D85.0020.0002] # BRAHMI LETTER GA -11016 ; [.2D86.0020.0002] # BRAHMI LETTER GHA -11017 ; [.2D87.0020.0002] # BRAHMI LETTER NGA -11018 ; [.2D88.0020.0002] # BRAHMI LETTER CA -11019 ; [.2D89.0020.0002] # BRAHMI LETTER CHA -1101A ; [.2D8A.0020.0002] # BRAHMI LETTER JA -1101B ; [.2D8B.0020.0002] # BRAHMI LETTER JHA -1101C ; [.2D8C.0020.0002] # BRAHMI LETTER NYA -1101D ; [.2D8D.0020.0002] # BRAHMI LETTER TTA -1101E ; [.2D8E.0020.0002] # BRAHMI LETTER TTHA -1101F ; [.2D8F.0020.0002] # BRAHMI LETTER DDA -11020 ; [.2D90.0020.0002] # BRAHMI LETTER DDHA -11021 ; [.2D91.0020.0002] # BRAHMI LETTER NNA -11022 ; [.2D92.0020.0002] # BRAHMI LETTER TA -11023 ; [.2D93.0020.0002] # BRAHMI LETTER THA -11024 ; [.2D94.0020.0002] # BRAHMI LETTER DA -11025 ; [.2D95.0020.0002] # BRAHMI LETTER DHA -11026 ; [.2D96.0020.0002] # BRAHMI LETTER NA -11027 ; [.2D97.0020.0002] # BRAHMI LETTER PA -11028 ; [.2D98.0020.0002] # BRAHMI LETTER PHA -11029 ; [.2D99.0020.0002] # BRAHMI LETTER BA -1102A ; [.2D9A.0020.0002] # BRAHMI LETTER BHA -1102B ; [.2D9B.0020.0002] # BRAHMI LETTER MA -1102C ; [.2D9C.0020.0002] # BRAHMI LETTER YA -1102D ; [.2D9D.0020.0002] # BRAHMI LETTER RA -1102E ; [.2D9E.0020.0002] # BRAHMI LETTER LA -1102F ; [.2D9F.0020.0002] # BRAHMI LETTER VA -11030 ; [.2DA0.0020.0002] # BRAHMI LETTER SHA -11031 ; [.2DA1.0020.0002] # BRAHMI LETTER SSA -11032 ; [.2DA2.0020.0002] # BRAHMI LETTER SA -11033 ; [.2DA3.0020.0002] # BRAHMI LETTER HA -11003 ; [.2DA4.0020.0002] # BRAHMI SIGN JIHVAMULIYA -11004 ; [.2DA5.0020.0002] # BRAHMI SIGN UPADHMANIYA -11034 ; [.2DA6.0020.0002] # BRAHMI LETTER LLA -11035 ; [.2DA7.0020.0002] # BRAHMI LETTER OLD TAMIL LLLA -11036 ; [.2DA8.0020.0002] # BRAHMI LETTER OLD TAMIL RRA -11037 ; [.2DA9.0020.0002] # BRAHMI LETTER OLD TAMIL NNNA -11038 ; [.2DAA.0020.0002] # BRAHMI VOWEL SIGN AA -11039 ; [.2DAB.0020.0002] # BRAHMI VOWEL SIGN BHATTIPROLU AA -1103A ; [.2DAC.0020.0002] # BRAHMI VOWEL SIGN I -1103B ; [.2DAD.0020.0002] # BRAHMI VOWEL SIGN II -1103C ; [.2DAE.0020.0002] # BRAHMI VOWEL SIGN U -1103D ; [.2DAF.0020.0002] # BRAHMI VOWEL SIGN UU -1103E ; [.2DB0.0020.0002] # BRAHMI VOWEL SIGN VOCALIC R -1103F ; [.2DB1.0020.0002] # BRAHMI VOWEL SIGN VOCALIC RR -11040 ; [.2DB2.0020.0002] # BRAHMI VOWEL SIGN VOCALIC L -11041 ; [.2DB3.0020.0002] # BRAHMI VOWEL SIGN VOCALIC LL -11042 ; [.2DB4.0020.0002] # BRAHMI VOWEL SIGN E -11043 ; [.2DB5.0020.0002] # BRAHMI VOWEL SIGN AI -11044 ; [.2DB6.0020.0002] # BRAHMI VOWEL SIGN O -11045 ; [.2DB7.0020.0002] # BRAHMI VOWEL SIGN AU -11046 ; [.2DB8.0020.0002] # BRAHMI VIRAMA -1107F ; [.2DB9.0020.0002] # BRAHMI NUMBER JOINER -10A00 ; [.2DBA.0020.0002] # KHAROSHTHI LETTER A -10A01 ; [.2DBB.0020.0002] # KHAROSHTHI VOWEL SIGN I -10A02 ; [.2DBC.0020.0002] # KHAROSHTHI VOWEL SIGN U -10A03 ; [.2DBD.0020.0002] # KHAROSHTHI VOWEL SIGN VOCALIC R -10A05 ; [.2DBE.0020.0002] # KHAROSHTHI VOWEL SIGN E -10A06 ; [.2DBF.0020.0002] # KHAROSHTHI VOWEL SIGN O -10A0C ; [.2DC0.0020.0002] # KHAROSHTHI VOWEL LENGTH MARK -10A10 ; [.2DC1.0020.0002] # KHAROSHTHI LETTER KA -10A11 ; [.2DC2.0020.0002] # KHAROSHTHI LETTER KHA -10A12 ; [.2DC3.0020.0002] # KHAROSHTHI LETTER GA -10A13 ; [.2DC4.0020.0002] # KHAROSHTHI LETTER GHA -10A15 ; [.2DC5.0020.0002] # KHAROSHTHI LETTER CA -10A16 ; [.2DC6.0020.0002] # KHAROSHTHI LETTER CHA -10A17 ; [.2DC7.0020.0002] # KHAROSHTHI LETTER JA -10A19 ; [.2DC8.0020.0002] # KHAROSHTHI LETTER NYA -10A1A ; [.2DC9.0020.0002] # KHAROSHTHI LETTER TTA -10A1B ; [.2DCA.0020.0002] # KHAROSHTHI LETTER TTHA -10A1C ; [.2DCB.0020.0002] # KHAROSHTHI LETTER DDA -10A1D ; [.2DCC.0020.0002] # KHAROSHTHI LETTER DDHA -10A1E ; [.2DCD.0020.0002] # KHAROSHTHI LETTER NNA -10A1F ; [.2DCE.0020.0002] # KHAROSHTHI LETTER TA -10A20 ; [.2DCF.0020.0002] # KHAROSHTHI LETTER THA -10A21 ; [.2DD0.0020.0002] # KHAROSHTHI LETTER DA -10A22 ; [.2DD1.0020.0002] # KHAROSHTHI LETTER DHA -10A23 ; [.2DD2.0020.0002] # KHAROSHTHI LETTER NA -10A24 ; [.2DD3.0020.0002] # KHAROSHTHI LETTER PA -10A25 ; [.2DD4.0020.0002] # KHAROSHTHI LETTER PHA -10A26 ; [.2DD5.0020.0002] # KHAROSHTHI LETTER BA -10A27 ; [.2DD6.0020.0002] # KHAROSHTHI LETTER BHA -10A28 ; [.2DD7.0020.0002] # KHAROSHTHI LETTER MA -10A29 ; [.2DD8.0020.0002] # KHAROSHTHI LETTER YA -10A2A ; [.2DD9.0020.0002] # KHAROSHTHI LETTER RA -10A2B ; [.2DDA.0020.0002] # KHAROSHTHI LETTER LA -10A2C ; [.2DDB.0020.0002] # KHAROSHTHI LETTER VA -10A2D ; [.2DDC.0020.0002] # KHAROSHTHI LETTER SHA -10A2E ; [.2DDD.0020.0002] # KHAROSHTHI LETTER SSA -10A2F ; [.2DDE.0020.0002] # KHAROSHTHI LETTER SA -10A30 ; [.2DDF.0020.0002] # KHAROSHTHI LETTER ZA -10A31 ; [.2DE0.0020.0002] # KHAROSHTHI LETTER HA -10A32 ; [.2DE1.0020.0002] # KHAROSHTHI LETTER KKA -10A33 ; [.2DE2.0020.0002] # KHAROSHTHI LETTER TTTHA -10A3F ; [.2DE3.0020.0002] # KHAROSHTHI VIRAMA -11C00 ; [.2DE4.0020.0002] # BHAIKSUKI LETTER A -11C01 ; [.2DE5.0020.0002] # BHAIKSUKI LETTER AA -11C02 ; [.2DE6.0020.0002] # BHAIKSUKI LETTER I -11C03 ; [.2DE7.0020.0002] # BHAIKSUKI LETTER II -11C04 ; [.2DE8.0020.0002] # BHAIKSUKI LETTER U -11C05 ; [.2DE9.0020.0002] # BHAIKSUKI LETTER UU -11C06 ; [.2DEA.0020.0002] # BHAIKSUKI LETTER VOCALIC R -11C07 ; [.2DEB.0020.0002] # BHAIKSUKI LETTER VOCALIC RR -11C08 ; [.2DEC.0020.0002] # BHAIKSUKI LETTER VOCALIC L -11C0A ; [.2DED.0020.0002] # BHAIKSUKI LETTER E -11C0B ; [.2DEE.0020.0002] # BHAIKSUKI LETTER AI -11C0C ; [.2DEF.0020.0002] # BHAIKSUKI LETTER O -11C0D ; [.2DF0.0020.0002] # BHAIKSUKI LETTER AU -11C0E ; [.2DF1.0020.0002] # BHAIKSUKI LETTER KA -11C0F ; [.2DF2.0020.0002] # BHAIKSUKI LETTER KHA -11C10 ; [.2DF3.0020.0002] # BHAIKSUKI LETTER GA -11C11 ; [.2DF4.0020.0002] # BHAIKSUKI LETTER GHA -11C12 ; [.2DF5.0020.0002] # BHAIKSUKI LETTER NGA -11C13 ; [.2DF6.0020.0002] # BHAIKSUKI LETTER CA -11C14 ; [.2DF7.0020.0002] # BHAIKSUKI LETTER CHA -11C15 ; [.2DF8.0020.0002] # BHAIKSUKI LETTER JA -11C16 ; [.2DF9.0020.0002] # BHAIKSUKI LETTER JHA -11C17 ; [.2DFA.0020.0002] # BHAIKSUKI LETTER NYA -11C18 ; [.2DFB.0020.0002] # BHAIKSUKI LETTER TTA -11C19 ; [.2DFC.0020.0002] # BHAIKSUKI LETTER TTHA -11C1A ; [.2DFD.0020.0002] # BHAIKSUKI LETTER DDA -11C1B ; [.2DFE.0020.0002] # BHAIKSUKI LETTER DDHA -11C1C ; [.2DFF.0020.0002] # BHAIKSUKI LETTER NNA -11C1D ; [.2E00.0020.0002] # BHAIKSUKI LETTER TA -11C1E ; [.2E01.0020.0002] # BHAIKSUKI LETTER THA -11C1F ; [.2E02.0020.0002] # BHAIKSUKI LETTER DA -11C20 ; [.2E03.0020.0002] # BHAIKSUKI LETTER DHA -11C21 ; [.2E04.0020.0002] # BHAIKSUKI LETTER NA -11C22 ; [.2E05.0020.0002] # BHAIKSUKI LETTER PA -11C23 ; [.2E06.0020.0002] # BHAIKSUKI LETTER PHA -11C24 ; [.2E07.0020.0002] # BHAIKSUKI LETTER BA -11C25 ; [.2E08.0020.0002] # BHAIKSUKI LETTER BHA -11C26 ; [.2E09.0020.0002] # BHAIKSUKI LETTER MA -11C27 ; [.2E0A.0020.0002] # BHAIKSUKI LETTER YA -11C28 ; [.2E0B.0020.0002] # BHAIKSUKI LETTER RA -11C29 ; [.2E0C.0020.0002] # BHAIKSUKI LETTER LA -11C2A ; [.2E0D.0020.0002] # BHAIKSUKI LETTER VA -11C2B ; [.2E0E.0020.0002] # BHAIKSUKI LETTER SHA -11C2C ; [.2E0F.0020.0002] # BHAIKSUKI LETTER SSA -11C2D ; [.2E10.0020.0002] # BHAIKSUKI LETTER SA -11C2E ; [.2E11.0020.0002] # BHAIKSUKI LETTER HA -11C40 ; [.2E12.0020.0002] # BHAIKSUKI SIGN AVAGRAHA -11C2F ; [.2E13.0020.0002] # BHAIKSUKI VOWEL SIGN AA -11C30 ; [.2E14.0020.0002] # BHAIKSUKI VOWEL SIGN I -11C31 ; [.2E15.0020.0002] # BHAIKSUKI VOWEL SIGN II -11C32 ; [.2E16.0020.0002] # BHAIKSUKI VOWEL SIGN U -11C33 ; [.2E17.0020.0002] # BHAIKSUKI VOWEL SIGN UU -11C34 ; [.2E18.0020.0002] # BHAIKSUKI VOWEL SIGN VOCALIC R -11C35 ; [.2E19.0020.0002] # BHAIKSUKI VOWEL SIGN VOCALIC RR -11C36 ; [.2E1A.0020.0002] # BHAIKSUKI VOWEL SIGN VOCALIC L -11C38 ; [.2E1B.0020.0002] # BHAIKSUKI VOWEL SIGN E -11C39 ; [.2E1C.0020.0002] # BHAIKSUKI VOWEL SIGN AI -11C3A ; [.2E1D.0020.0002] # BHAIKSUKI VOWEL SIGN O -11C3B ; [.2E1E.0020.0002] # BHAIKSUKI VOWEL SIGN AU -11C3F ; [.2E1F.0020.0002] # BHAIKSUKI SIGN VIRAMA -0E01 ; [.2E20.0020.0002] # THAI CHARACTER KO KAI -0E40 0E01 ; [.2E20.0020.0002][.2E5A.0020.0002] # -0E41 0E01 ; [.2E20.0020.0002][.2E5B.0020.0002] # -0E42 0E01 ; [.2E20.0020.0002][.2E5C.0020.0002] # -0E43 0E01 ; [.2E20.0020.0002][.2E5D.0020.0002] # -0E44 0E01 ; [.2E20.0020.0002][.2E5E.0020.0002] # -0E02 ; [.2E21.0020.0002] # THAI CHARACTER KHO KHAI -0E40 0E02 ; [.2E21.0020.0002][.2E5A.0020.0002] # -0E41 0E02 ; [.2E21.0020.0002][.2E5B.0020.0002] # -0E42 0E02 ; [.2E21.0020.0002][.2E5C.0020.0002] # -0E43 0E02 ; [.2E21.0020.0002][.2E5D.0020.0002] # -0E44 0E02 ; [.2E21.0020.0002][.2E5E.0020.0002] # -0E03 ; [.2E22.0020.0002] # THAI CHARACTER KHO KHUAT -0E40 0E03 ; [.2E22.0020.0002][.2E5A.0020.0002] # -0E41 0E03 ; [.2E22.0020.0002][.2E5B.0020.0002] # -0E42 0E03 ; [.2E22.0020.0002][.2E5C.0020.0002] # -0E43 0E03 ; [.2E22.0020.0002][.2E5D.0020.0002] # -0E44 0E03 ; [.2E22.0020.0002][.2E5E.0020.0002] # -0E04 ; [.2E23.0020.0002] # THAI CHARACTER KHO KHWAI -0E40 0E04 ; [.2E23.0020.0002][.2E5A.0020.0002] # -0E41 0E04 ; [.2E23.0020.0002][.2E5B.0020.0002] # -0E42 0E04 ; [.2E23.0020.0002][.2E5C.0020.0002] # -0E43 0E04 ; [.2E23.0020.0002][.2E5D.0020.0002] # -0E44 0E04 ; [.2E23.0020.0002][.2E5E.0020.0002] # -0E05 ; [.2E24.0020.0002] # THAI CHARACTER KHO KHON -0E40 0E05 ; [.2E24.0020.0002][.2E5A.0020.0002] # -0E41 0E05 ; [.2E24.0020.0002][.2E5B.0020.0002] # -0E42 0E05 ; [.2E24.0020.0002][.2E5C.0020.0002] # -0E43 0E05 ; [.2E24.0020.0002][.2E5D.0020.0002] # -0E44 0E05 ; [.2E24.0020.0002][.2E5E.0020.0002] # -0E06 ; [.2E25.0020.0002] # THAI CHARACTER KHO RAKHANG -0E40 0E06 ; [.2E25.0020.0002][.2E5A.0020.0002] # -0E41 0E06 ; [.2E25.0020.0002][.2E5B.0020.0002] # -0E42 0E06 ; [.2E25.0020.0002][.2E5C.0020.0002] # -0E43 0E06 ; [.2E25.0020.0002][.2E5D.0020.0002] # -0E44 0E06 ; [.2E25.0020.0002][.2E5E.0020.0002] # -0E07 ; [.2E26.0020.0002] # THAI CHARACTER NGO NGU -0E40 0E07 ; [.2E26.0020.0002][.2E5A.0020.0002] # -0E41 0E07 ; [.2E26.0020.0002][.2E5B.0020.0002] # -0E42 0E07 ; [.2E26.0020.0002][.2E5C.0020.0002] # -0E43 0E07 ; [.2E26.0020.0002][.2E5D.0020.0002] # -0E44 0E07 ; [.2E26.0020.0002][.2E5E.0020.0002] # -0E08 ; [.2E27.0020.0002] # THAI CHARACTER CHO CHAN -0E40 0E08 ; [.2E27.0020.0002][.2E5A.0020.0002] # -0E41 0E08 ; [.2E27.0020.0002][.2E5B.0020.0002] # -0E42 0E08 ; [.2E27.0020.0002][.2E5C.0020.0002] # -0E43 0E08 ; [.2E27.0020.0002][.2E5D.0020.0002] # -0E44 0E08 ; [.2E27.0020.0002][.2E5E.0020.0002] # -0E09 ; [.2E28.0020.0002] # THAI CHARACTER CHO CHING -0E40 0E09 ; [.2E28.0020.0002][.2E5A.0020.0002] # -0E41 0E09 ; [.2E28.0020.0002][.2E5B.0020.0002] # -0E42 0E09 ; [.2E28.0020.0002][.2E5C.0020.0002] # -0E43 0E09 ; [.2E28.0020.0002][.2E5D.0020.0002] # -0E44 0E09 ; [.2E28.0020.0002][.2E5E.0020.0002] # -0E0A ; [.2E29.0020.0002] # THAI CHARACTER CHO CHANG -0E40 0E0A ; [.2E29.0020.0002][.2E5A.0020.0002] # -0E41 0E0A ; [.2E29.0020.0002][.2E5B.0020.0002] # -0E42 0E0A ; [.2E29.0020.0002][.2E5C.0020.0002] # -0E43 0E0A ; [.2E29.0020.0002][.2E5D.0020.0002] # -0E44 0E0A ; [.2E29.0020.0002][.2E5E.0020.0002] # -0E0B ; [.2E2A.0020.0002] # THAI CHARACTER SO SO -0E40 0E0B ; [.2E2A.0020.0002][.2E5A.0020.0002] # -0E41 0E0B ; [.2E2A.0020.0002][.2E5B.0020.0002] # -0E42 0E0B ; [.2E2A.0020.0002][.2E5C.0020.0002] # -0E43 0E0B ; [.2E2A.0020.0002][.2E5D.0020.0002] # -0E44 0E0B ; [.2E2A.0020.0002][.2E5E.0020.0002] # -0E0C ; [.2E2B.0020.0002] # THAI CHARACTER CHO CHOE -0E40 0E0C ; [.2E2B.0020.0002][.2E5A.0020.0002] # -0E41 0E0C ; [.2E2B.0020.0002][.2E5B.0020.0002] # -0E42 0E0C ; [.2E2B.0020.0002][.2E5C.0020.0002] # -0E43 0E0C ; [.2E2B.0020.0002][.2E5D.0020.0002] # -0E44 0E0C ; [.2E2B.0020.0002][.2E5E.0020.0002] # -0E0D ; [.2E2C.0020.0002] # THAI CHARACTER YO YING -0E40 0E0D ; [.2E2C.0020.0002][.2E5A.0020.0002] # -0E41 0E0D ; [.2E2C.0020.0002][.2E5B.0020.0002] # -0E42 0E0D ; [.2E2C.0020.0002][.2E5C.0020.0002] # -0E43 0E0D ; [.2E2C.0020.0002][.2E5D.0020.0002] # -0E44 0E0D ; [.2E2C.0020.0002][.2E5E.0020.0002] # -0E0E ; [.2E2D.0020.0002] # THAI CHARACTER DO CHADA -0E40 0E0E ; [.2E2D.0020.0002][.2E5A.0020.0002] # -0E41 0E0E ; [.2E2D.0020.0002][.2E5B.0020.0002] # -0E42 0E0E ; [.2E2D.0020.0002][.2E5C.0020.0002] # -0E43 0E0E ; [.2E2D.0020.0002][.2E5D.0020.0002] # -0E44 0E0E ; [.2E2D.0020.0002][.2E5E.0020.0002] # -0E0F ; [.2E2E.0020.0002] # THAI CHARACTER TO PATAK -0E40 0E0F ; [.2E2E.0020.0002][.2E5A.0020.0002] # -0E41 0E0F ; [.2E2E.0020.0002][.2E5B.0020.0002] # -0E42 0E0F ; [.2E2E.0020.0002][.2E5C.0020.0002] # -0E43 0E0F ; [.2E2E.0020.0002][.2E5D.0020.0002] # -0E44 0E0F ; [.2E2E.0020.0002][.2E5E.0020.0002] # -0E10 ; [.2E2F.0020.0002] # THAI CHARACTER THO THAN -0E40 0E10 ; [.2E2F.0020.0002][.2E5A.0020.0002] # -0E41 0E10 ; [.2E2F.0020.0002][.2E5B.0020.0002] # -0E42 0E10 ; [.2E2F.0020.0002][.2E5C.0020.0002] # -0E43 0E10 ; [.2E2F.0020.0002][.2E5D.0020.0002] # -0E44 0E10 ; [.2E2F.0020.0002][.2E5E.0020.0002] # -0E11 ; [.2E30.0020.0002] # THAI CHARACTER THO NANGMONTHO -0E40 0E11 ; [.2E30.0020.0002][.2E5A.0020.0002] # -0E41 0E11 ; [.2E30.0020.0002][.2E5B.0020.0002] # -0E42 0E11 ; [.2E30.0020.0002][.2E5C.0020.0002] # -0E43 0E11 ; [.2E30.0020.0002][.2E5D.0020.0002] # -0E44 0E11 ; [.2E30.0020.0002][.2E5E.0020.0002] # -0E12 ; [.2E31.0020.0002] # THAI CHARACTER THO PHUTHAO -0E40 0E12 ; [.2E31.0020.0002][.2E5A.0020.0002] # -0E41 0E12 ; [.2E31.0020.0002][.2E5B.0020.0002] # -0E42 0E12 ; [.2E31.0020.0002][.2E5C.0020.0002] # -0E43 0E12 ; [.2E31.0020.0002][.2E5D.0020.0002] # -0E44 0E12 ; [.2E31.0020.0002][.2E5E.0020.0002] # -0E13 ; [.2E32.0020.0002] # THAI CHARACTER NO NEN -0E40 0E13 ; [.2E32.0020.0002][.2E5A.0020.0002] # -0E41 0E13 ; [.2E32.0020.0002][.2E5B.0020.0002] # -0E42 0E13 ; [.2E32.0020.0002][.2E5C.0020.0002] # -0E43 0E13 ; [.2E32.0020.0002][.2E5D.0020.0002] # -0E44 0E13 ; [.2E32.0020.0002][.2E5E.0020.0002] # -0E14 ; [.2E33.0020.0002] # THAI CHARACTER DO DEK -0E40 0E14 ; [.2E33.0020.0002][.2E5A.0020.0002] # -0E41 0E14 ; [.2E33.0020.0002][.2E5B.0020.0002] # -0E42 0E14 ; [.2E33.0020.0002][.2E5C.0020.0002] # -0E43 0E14 ; [.2E33.0020.0002][.2E5D.0020.0002] # -0E44 0E14 ; [.2E33.0020.0002][.2E5E.0020.0002] # -0E15 ; [.2E34.0020.0002] # THAI CHARACTER TO TAO -0E40 0E15 ; [.2E34.0020.0002][.2E5A.0020.0002] # -0E41 0E15 ; [.2E34.0020.0002][.2E5B.0020.0002] # -0E42 0E15 ; [.2E34.0020.0002][.2E5C.0020.0002] # -0E43 0E15 ; [.2E34.0020.0002][.2E5D.0020.0002] # -0E44 0E15 ; [.2E34.0020.0002][.2E5E.0020.0002] # -0E16 ; [.2E35.0020.0002] # THAI CHARACTER THO THUNG -0E40 0E16 ; [.2E35.0020.0002][.2E5A.0020.0002] # -0E41 0E16 ; [.2E35.0020.0002][.2E5B.0020.0002] # -0E42 0E16 ; [.2E35.0020.0002][.2E5C.0020.0002] # -0E43 0E16 ; [.2E35.0020.0002][.2E5D.0020.0002] # -0E44 0E16 ; [.2E35.0020.0002][.2E5E.0020.0002] # -0E17 ; [.2E36.0020.0002] # THAI CHARACTER THO THAHAN -0E40 0E17 ; [.2E36.0020.0002][.2E5A.0020.0002] # -0E41 0E17 ; [.2E36.0020.0002][.2E5B.0020.0002] # -0E42 0E17 ; [.2E36.0020.0002][.2E5C.0020.0002] # -0E43 0E17 ; [.2E36.0020.0002][.2E5D.0020.0002] # -0E44 0E17 ; [.2E36.0020.0002][.2E5E.0020.0002] # -0E18 ; [.2E37.0020.0002] # THAI CHARACTER THO THONG -0E40 0E18 ; [.2E37.0020.0002][.2E5A.0020.0002] # -0E41 0E18 ; [.2E37.0020.0002][.2E5B.0020.0002] # -0E42 0E18 ; [.2E37.0020.0002][.2E5C.0020.0002] # -0E43 0E18 ; [.2E37.0020.0002][.2E5D.0020.0002] # -0E44 0E18 ; [.2E37.0020.0002][.2E5E.0020.0002] # -0E19 ; [.2E38.0020.0002] # THAI CHARACTER NO NU -0E40 0E19 ; [.2E38.0020.0002][.2E5A.0020.0002] # -0E41 0E19 ; [.2E38.0020.0002][.2E5B.0020.0002] # -0E42 0E19 ; [.2E38.0020.0002][.2E5C.0020.0002] # -0E43 0E19 ; [.2E38.0020.0002][.2E5D.0020.0002] # -0E44 0E19 ; [.2E38.0020.0002][.2E5E.0020.0002] # -0E1A ; [.2E39.0020.0002] # THAI CHARACTER BO BAIMAI -0E40 0E1A ; [.2E39.0020.0002][.2E5A.0020.0002] # -0E41 0E1A ; [.2E39.0020.0002][.2E5B.0020.0002] # -0E42 0E1A ; [.2E39.0020.0002][.2E5C.0020.0002] # -0E43 0E1A ; [.2E39.0020.0002][.2E5D.0020.0002] # -0E44 0E1A ; [.2E39.0020.0002][.2E5E.0020.0002] # -0E1B ; [.2E3A.0020.0002] # THAI CHARACTER PO PLA -0E40 0E1B ; [.2E3A.0020.0002][.2E5A.0020.0002] # -0E41 0E1B ; [.2E3A.0020.0002][.2E5B.0020.0002] # -0E42 0E1B ; [.2E3A.0020.0002][.2E5C.0020.0002] # -0E43 0E1B ; [.2E3A.0020.0002][.2E5D.0020.0002] # -0E44 0E1B ; [.2E3A.0020.0002][.2E5E.0020.0002] # -0E1C ; [.2E3B.0020.0002] # THAI CHARACTER PHO PHUNG -0E40 0E1C ; [.2E3B.0020.0002][.2E5A.0020.0002] # -0E41 0E1C ; [.2E3B.0020.0002][.2E5B.0020.0002] # -0E42 0E1C ; [.2E3B.0020.0002][.2E5C.0020.0002] # -0E43 0E1C ; [.2E3B.0020.0002][.2E5D.0020.0002] # -0E44 0E1C ; [.2E3B.0020.0002][.2E5E.0020.0002] # -0E1D ; [.2E3C.0020.0002] # THAI CHARACTER FO FA -0E40 0E1D ; [.2E3C.0020.0002][.2E5A.0020.0002] # -0E41 0E1D ; [.2E3C.0020.0002][.2E5B.0020.0002] # -0E42 0E1D ; [.2E3C.0020.0002][.2E5C.0020.0002] # -0E43 0E1D ; [.2E3C.0020.0002][.2E5D.0020.0002] # -0E44 0E1D ; [.2E3C.0020.0002][.2E5E.0020.0002] # -0E1E ; [.2E3D.0020.0002] # THAI CHARACTER PHO PHAN -0E40 0E1E ; [.2E3D.0020.0002][.2E5A.0020.0002] # -0E41 0E1E ; [.2E3D.0020.0002][.2E5B.0020.0002] # -0E42 0E1E ; [.2E3D.0020.0002][.2E5C.0020.0002] # -0E43 0E1E ; [.2E3D.0020.0002][.2E5D.0020.0002] # -0E44 0E1E ; [.2E3D.0020.0002][.2E5E.0020.0002] # -0E1F ; [.2E3E.0020.0002] # THAI CHARACTER FO FAN -0E40 0E1F ; [.2E3E.0020.0002][.2E5A.0020.0002] # -0E41 0E1F ; [.2E3E.0020.0002][.2E5B.0020.0002] # -0E42 0E1F ; [.2E3E.0020.0002][.2E5C.0020.0002] # -0E43 0E1F ; [.2E3E.0020.0002][.2E5D.0020.0002] # -0E44 0E1F ; [.2E3E.0020.0002][.2E5E.0020.0002] # -0E20 ; [.2E3F.0020.0002] # THAI CHARACTER PHO SAMPHAO -0E40 0E20 ; [.2E3F.0020.0002][.2E5A.0020.0002] # -0E41 0E20 ; [.2E3F.0020.0002][.2E5B.0020.0002] # -0E42 0E20 ; [.2E3F.0020.0002][.2E5C.0020.0002] # -0E43 0E20 ; [.2E3F.0020.0002][.2E5D.0020.0002] # -0E44 0E20 ; [.2E3F.0020.0002][.2E5E.0020.0002] # -0E21 ; [.2E40.0020.0002] # THAI CHARACTER MO MA -0E40 0E21 ; [.2E40.0020.0002][.2E5A.0020.0002] # -0E41 0E21 ; [.2E40.0020.0002][.2E5B.0020.0002] # -0E42 0E21 ; [.2E40.0020.0002][.2E5C.0020.0002] # -0E43 0E21 ; [.2E40.0020.0002][.2E5D.0020.0002] # -0E44 0E21 ; [.2E40.0020.0002][.2E5E.0020.0002] # -0E22 ; [.2E41.0020.0002] # THAI CHARACTER YO YAK -0E40 0E22 ; [.2E41.0020.0002][.2E5A.0020.0002] # -0E41 0E22 ; [.2E41.0020.0002][.2E5B.0020.0002] # -0E42 0E22 ; [.2E41.0020.0002][.2E5C.0020.0002] # -0E43 0E22 ; [.2E41.0020.0002][.2E5D.0020.0002] # -0E44 0E22 ; [.2E41.0020.0002][.2E5E.0020.0002] # -0E23 ; [.2E42.0020.0002] # THAI CHARACTER RO RUA -0E40 0E23 ; [.2E42.0020.0002][.2E5A.0020.0002] # -0E41 0E23 ; [.2E42.0020.0002][.2E5B.0020.0002] # -0E42 0E23 ; [.2E42.0020.0002][.2E5C.0020.0002] # -0E43 0E23 ; [.2E42.0020.0002][.2E5D.0020.0002] # -0E44 0E23 ; [.2E42.0020.0002][.2E5E.0020.0002] # -0E24 ; [.2E43.0020.0002] # THAI CHARACTER RU -0E40 0E24 ; [.2E43.0020.0002][.2E5A.0020.0002] # -0E41 0E24 ; [.2E43.0020.0002][.2E5B.0020.0002] # -0E42 0E24 ; [.2E43.0020.0002][.2E5C.0020.0002] # -0E43 0E24 ; [.2E43.0020.0002][.2E5D.0020.0002] # -0E44 0E24 ; [.2E43.0020.0002][.2E5E.0020.0002] # -0E25 ; [.2E44.0020.0002] # THAI CHARACTER LO LING -0E40 0E25 ; [.2E44.0020.0002][.2E5A.0020.0002] # -0E41 0E25 ; [.2E44.0020.0002][.2E5B.0020.0002] # -0E42 0E25 ; [.2E44.0020.0002][.2E5C.0020.0002] # -0E43 0E25 ; [.2E44.0020.0002][.2E5D.0020.0002] # -0E44 0E25 ; [.2E44.0020.0002][.2E5E.0020.0002] # -0E26 ; [.2E45.0020.0002] # THAI CHARACTER LU -0E40 0E26 ; [.2E45.0020.0002][.2E5A.0020.0002] # -0E41 0E26 ; [.2E45.0020.0002][.2E5B.0020.0002] # -0E42 0E26 ; [.2E45.0020.0002][.2E5C.0020.0002] # -0E43 0E26 ; [.2E45.0020.0002][.2E5D.0020.0002] # -0E44 0E26 ; [.2E45.0020.0002][.2E5E.0020.0002] # -0E27 ; [.2E46.0020.0002] # THAI CHARACTER WO WAEN -0E40 0E27 ; [.2E46.0020.0002][.2E5A.0020.0002] # -0E41 0E27 ; [.2E46.0020.0002][.2E5B.0020.0002] # -0E42 0E27 ; [.2E46.0020.0002][.2E5C.0020.0002] # -0E43 0E27 ; [.2E46.0020.0002][.2E5D.0020.0002] # -0E44 0E27 ; [.2E46.0020.0002][.2E5E.0020.0002] # -0E28 ; [.2E47.0020.0002] # THAI CHARACTER SO SALA -0E40 0E28 ; [.2E47.0020.0002][.2E5A.0020.0002] # -0E41 0E28 ; [.2E47.0020.0002][.2E5B.0020.0002] # -0E42 0E28 ; [.2E47.0020.0002][.2E5C.0020.0002] # -0E43 0E28 ; [.2E47.0020.0002][.2E5D.0020.0002] # -0E44 0E28 ; [.2E47.0020.0002][.2E5E.0020.0002] # -0E29 ; [.2E48.0020.0002] # THAI CHARACTER SO RUSI -0E40 0E29 ; [.2E48.0020.0002][.2E5A.0020.0002] # -0E41 0E29 ; [.2E48.0020.0002][.2E5B.0020.0002] # -0E42 0E29 ; [.2E48.0020.0002][.2E5C.0020.0002] # -0E43 0E29 ; [.2E48.0020.0002][.2E5D.0020.0002] # -0E44 0E29 ; [.2E48.0020.0002][.2E5E.0020.0002] # -0E2A ; [.2E49.0020.0002] # THAI CHARACTER SO SUA -0E40 0E2A ; [.2E49.0020.0002][.2E5A.0020.0002] # -0E41 0E2A ; [.2E49.0020.0002][.2E5B.0020.0002] # -0E42 0E2A ; [.2E49.0020.0002][.2E5C.0020.0002] # -0E43 0E2A ; [.2E49.0020.0002][.2E5D.0020.0002] # -0E44 0E2A ; [.2E49.0020.0002][.2E5E.0020.0002] # -0E2B ; [.2E4A.0020.0002] # THAI CHARACTER HO HIP -0E40 0E2B ; [.2E4A.0020.0002][.2E5A.0020.0002] # -0E41 0E2B ; [.2E4A.0020.0002][.2E5B.0020.0002] # -0E42 0E2B ; [.2E4A.0020.0002][.2E5C.0020.0002] # -0E43 0E2B ; [.2E4A.0020.0002][.2E5D.0020.0002] # -0E44 0E2B ; [.2E4A.0020.0002][.2E5E.0020.0002] # -0E2C ; [.2E4B.0020.0002] # THAI CHARACTER LO CHULA -0E40 0E2C ; [.2E4B.0020.0002][.2E5A.0020.0002] # -0E41 0E2C ; [.2E4B.0020.0002][.2E5B.0020.0002] # -0E42 0E2C ; [.2E4B.0020.0002][.2E5C.0020.0002] # -0E43 0E2C ; [.2E4B.0020.0002][.2E5D.0020.0002] # -0E44 0E2C ; [.2E4B.0020.0002][.2E5E.0020.0002] # -0E2D ; [.2E4C.0020.0002] # THAI CHARACTER O ANG -0E40 0E2D ; [.2E4C.0020.0002][.2E5A.0020.0002] # -0E41 0E2D ; [.2E4C.0020.0002][.2E5B.0020.0002] # -0E42 0E2D ; [.2E4C.0020.0002][.2E5C.0020.0002] # -0E43 0E2D ; [.2E4C.0020.0002][.2E5D.0020.0002] # -0E44 0E2D ; [.2E4C.0020.0002][.2E5E.0020.0002] # -0E2E ; [.2E4D.0020.0002] # THAI CHARACTER HO NOKHUK -0E40 0E2E ; [.2E4D.0020.0002][.2E5A.0020.0002] # -0E41 0E2E ; [.2E4D.0020.0002][.2E5B.0020.0002] # -0E42 0E2E ; [.2E4D.0020.0002][.2E5C.0020.0002] # -0E43 0E2E ; [.2E4D.0020.0002][.2E5D.0020.0002] # -0E44 0E2E ; [.2E4D.0020.0002][.2E5E.0020.0002] # -0E2F ; [.2E4E.0020.0002] # THAI CHARACTER PAIYANNOI -0E30 ; [.2E4F.0020.0002] # THAI CHARACTER SARA A -0E31 ; [.2E50.0020.0002] # THAI CHARACTER MAI HAN-AKAT -0E32 ; [.2E51.0020.0002] # THAI CHARACTER SARA AA -0E33 ; [.2E52.0020.0002] # THAI CHARACTER SARA AM -0E4D 0E32 ; [.2E52.0020.0002] # THAI CHARACTER SARA AM -0E34 ; [.2E53.0020.0002] # THAI CHARACTER SARA I -0E35 ; [.2E54.0020.0002] # THAI CHARACTER SARA II -0E36 ; [.2E55.0020.0002] # THAI CHARACTER SARA UE -0E37 ; [.2E56.0020.0002] # THAI CHARACTER SARA UEE -0E38 ; [.2E57.0020.0002] # THAI CHARACTER SARA U -0E39 ; [.2E58.0020.0002] # THAI CHARACTER SARA UU -0E3A ; [.2E59.0020.0002] # THAI CHARACTER PHINTHU -0E40 ; [.2E5A.0020.0002] # THAI CHARACTER SARA E -0E41 ; [.2E5B.0020.0002] # THAI CHARACTER SARA AE -0E42 ; [.2E5C.0020.0002] # THAI CHARACTER SARA O -0E43 ; [.2E5D.0020.0002] # THAI CHARACTER SARA AI MAIMUAN -0E44 ; [.2E5E.0020.0002] # THAI CHARACTER SARA AI MAIMALAI -0E45 ; [.2E5F.0020.0002] # THAI CHARACTER LAKKHANGYAO -0EDE ; [.2E60.0020.0002] # LAO LETTER KHMU GO -0EC0 0EDE ; [.2E60.0020.0002][.2E8B.0020.0002] # -0EC1 0EDE ; [.2E60.0020.0002][.2E8C.0020.0002] # -0EC2 0EDE ; [.2E60.0020.0002][.2E8D.0020.0002] # -0EC3 0EDE ; [.2E60.0020.0002][.2E8E.0020.0002] # -0EC4 0EDE ; [.2E60.0020.0002][.2E8F.0020.0002] # -0E81 ; [.2E61.0020.0002] # LAO LETTER KO -0EC0 0E81 ; [.2E61.0020.0002][.2E8B.0020.0002] # -0EC1 0E81 ; [.2E61.0020.0002][.2E8C.0020.0002] # -0EC2 0E81 ; [.2E61.0020.0002][.2E8D.0020.0002] # -0EC3 0E81 ; [.2E61.0020.0002][.2E8E.0020.0002] # -0EC4 0E81 ; [.2E61.0020.0002][.2E8F.0020.0002] # -0E82 ; [.2E62.0020.0002] # LAO LETTER KHO SUNG -0EC0 0E82 ; [.2E62.0020.0002][.2E8B.0020.0002] # -0EC1 0E82 ; [.2E62.0020.0002][.2E8C.0020.0002] # -0EC2 0E82 ; [.2E62.0020.0002][.2E8D.0020.0002] # -0EC3 0E82 ; [.2E62.0020.0002][.2E8E.0020.0002] # -0EC4 0E82 ; [.2E62.0020.0002][.2E8F.0020.0002] # -0E84 ; [.2E63.0020.0002] # LAO LETTER KHO TAM -0EC0 0E84 ; [.2E63.0020.0002][.2E8B.0020.0002] # -0EC1 0E84 ; [.2E63.0020.0002][.2E8C.0020.0002] # -0EC2 0E84 ; [.2E63.0020.0002][.2E8D.0020.0002] # -0EC3 0E84 ; [.2E63.0020.0002][.2E8E.0020.0002] # -0EC4 0E84 ; [.2E63.0020.0002][.2E8F.0020.0002] # -0E87 ; [.2E64.0020.0002] # LAO LETTER NGO -0EC0 0E87 ; [.2E64.0020.0002][.2E8B.0020.0002] # -0EC1 0E87 ; [.2E64.0020.0002][.2E8C.0020.0002] # -0EC2 0E87 ; [.2E64.0020.0002][.2E8D.0020.0002] # -0EC3 0E87 ; [.2E64.0020.0002][.2E8E.0020.0002] # -0EC4 0E87 ; [.2E64.0020.0002][.2E8F.0020.0002] # -0E88 ; [.2E65.0020.0002] # LAO LETTER CO -0EC0 0E88 ; [.2E65.0020.0002][.2E8B.0020.0002] # -0EC1 0E88 ; [.2E65.0020.0002][.2E8C.0020.0002] # -0EC2 0E88 ; [.2E65.0020.0002][.2E8D.0020.0002] # -0EC3 0E88 ; [.2E65.0020.0002][.2E8E.0020.0002] # -0EC4 0E88 ; [.2E65.0020.0002][.2E8F.0020.0002] # -0EAA ; [.2E66.0020.0002] # LAO LETTER SO SUNG -0EC0 0EAA ; [.2E66.0020.0002][.2E8B.0020.0002] # -0EC1 0EAA ; [.2E66.0020.0002][.2E8C.0020.0002] # -0EC2 0EAA ; [.2E66.0020.0002][.2E8D.0020.0002] # -0EC3 0EAA ; [.2E66.0020.0002][.2E8E.0020.0002] # -0EC4 0EAA ; [.2E66.0020.0002][.2E8F.0020.0002] # -0E8A ; [.2E67.0020.0002] # LAO LETTER SO TAM -0EC0 0E8A ; [.2E67.0020.0002][.2E8B.0020.0002] # -0EC1 0E8A ; [.2E67.0020.0002][.2E8C.0020.0002] # -0EC2 0E8A ; [.2E67.0020.0002][.2E8D.0020.0002] # -0EC3 0E8A ; [.2E67.0020.0002][.2E8E.0020.0002] # -0EC4 0E8A ; [.2E67.0020.0002][.2E8F.0020.0002] # -0EDF ; [.2E68.0020.0002] # LAO LETTER KHMU NYO -0EC0 0EDF ; [.2E68.0020.0002][.2E8B.0020.0002] # -0EC1 0EDF ; [.2E68.0020.0002][.2E8C.0020.0002] # -0EC2 0EDF ; [.2E68.0020.0002][.2E8D.0020.0002] # -0EC3 0EDF ; [.2E68.0020.0002][.2E8E.0020.0002] # -0EC4 0EDF ; [.2E68.0020.0002][.2E8F.0020.0002] # -0E8D ; [.2E69.0020.0002] # LAO LETTER NYO -0EC0 0E8D ; [.2E69.0020.0002][.2E8B.0020.0002] # -0EC1 0E8D ; [.2E69.0020.0002][.2E8C.0020.0002] # -0EC2 0E8D ; [.2E69.0020.0002][.2E8D.0020.0002] # -0EC3 0E8D ; [.2E69.0020.0002][.2E8E.0020.0002] # -0EC4 0E8D ; [.2E69.0020.0002][.2E8F.0020.0002] # -0E94 ; [.2E6A.0020.0002] # LAO LETTER DO -0EC0 0E94 ; [.2E6A.0020.0002][.2E8B.0020.0002] # -0EC1 0E94 ; [.2E6A.0020.0002][.2E8C.0020.0002] # -0EC2 0E94 ; [.2E6A.0020.0002][.2E8D.0020.0002] # -0EC3 0E94 ; [.2E6A.0020.0002][.2E8E.0020.0002] # -0EC4 0E94 ; [.2E6A.0020.0002][.2E8F.0020.0002] # -0E95 ; [.2E6B.0020.0002] # LAO LETTER TO -0EC0 0E95 ; [.2E6B.0020.0002][.2E8B.0020.0002] # -0EC1 0E95 ; [.2E6B.0020.0002][.2E8C.0020.0002] # -0EC2 0E95 ; [.2E6B.0020.0002][.2E8D.0020.0002] # -0EC3 0E95 ; [.2E6B.0020.0002][.2E8E.0020.0002] # -0EC4 0E95 ; [.2E6B.0020.0002][.2E8F.0020.0002] # -0E96 ; [.2E6C.0020.0002] # LAO LETTER THO SUNG -0EC0 0E96 ; [.2E6C.0020.0002][.2E8B.0020.0002] # -0EC1 0E96 ; [.2E6C.0020.0002][.2E8C.0020.0002] # -0EC2 0E96 ; [.2E6C.0020.0002][.2E8D.0020.0002] # -0EC3 0E96 ; [.2E6C.0020.0002][.2E8E.0020.0002] # -0EC4 0E96 ; [.2E6C.0020.0002][.2E8F.0020.0002] # -0E97 ; [.2E6D.0020.0002] # LAO LETTER THO TAM -0EC0 0E97 ; [.2E6D.0020.0002][.2E8B.0020.0002] # -0EC1 0E97 ; [.2E6D.0020.0002][.2E8C.0020.0002] # -0EC2 0E97 ; [.2E6D.0020.0002][.2E8D.0020.0002] # -0EC3 0E97 ; [.2E6D.0020.0002][.2E8E.0020.0002] # -0EC4 0E97 ; [.2E6D.0020.0002][.2E8F.0020.0002] # -0E99 ; [.2E6E.0020.0002] # LAO LETTER NO -0EC0 0E99 ; [.2E6E.0020.0002][.2E8B.0020.0002] # -0EC1 0E99 ; [.2E6E.0020.0002][.2E8C.0020.0002] # -0EC2 0E99 ; [.2E6E.0020.0002][.2E8D.0020.0002] # -0EC3 0E99 ; [.2E6E.0020.0002][.2E8E.0020.0002] # -0EC4 0E99 ; [.2E6E.0020.0002][.2E8F.0020.0002] # -0E9A ; [.2E6F.0020.0002] # LAO LETTER BO -0EC0 0E9A ; [.2E6F.0020.0002][.2E8B.0020.0002] # -0EC1 0E9A ; [.2E6F.0020.0002][.2E8C.0020.0002] # -0EC2 0E9A ; [.2E6F.0020.0002][.2E8D.0020.0002] # -0EC3 0E9A ; [.2E6F.0020.0002][.2E8E.0020.0002] # -0EC4 0E9A ; [.2E6F.0020.0002][.2E8F.0020.0002] # -0E9B ; [.2E70.0020.0002] # LAO LETTER PO -0EC0 0E9B ; [.2E70.0020.0002][.2E8B.0020.0002] # -0EC1 0E9B ; [.2E70.0020.0002][.2E8C.0020.0002] # -0EC2 0E9B ; [.2E70.0020.0002][.2E8D.0020.0002] # -0EC3 0E9B ; [.2E70.0020.0002][.2E8E.0020.0002] # -0EC4 0E9B ; [.2E70.0020.0002][.2E8F.0020.0002] # -0E9C ; [.2E71.0020.0002] # LAO LETTER PHO SUNG -0EC0 0E9C ; [.2E71.0020.0002][.2E8B.0020.0002] # -0EC1 0E9C ; [.2E71.0020.0002][.2E8C.0020.0002] # -0EC2 0E9C ; [.2E71.0020.0002][.2E8D.0020.0002] # -0EC3 0E9C ; [.2E71.0020.0002][.2E8E.0020.0002] # -0EC4 0E9C ; [.2E71.0020.0002][.2E8F.0020.0002] # -0E9D ; [.2E72.0020.0002] # LAO LETTER FO TAM -0EC0 0E9D ; [.2E72.0020.0002][.2E8B.0020.0002] # -0EC1 0E9D ; [.2E72.0020.0002][.2E8C.0020.0002] # -0EC2 0E9D ; [.2E72.0020.0002][.2E8D.0020.0002] # -0EC3 0E9D ; [.2E72.0020.0002][.2E8E.0020.0002] # -0EC4 0E9D ; [.2E72.0020.0002][.2E8F.0020.0002] # -0E9E ; [.2E73.0020.0002] # LAO LETTER PHO TAM -0EC0 0E9E ; [.2E73.0020.0002][.2E8B.0020.0002] # -0EC1 0E9E ; [.2E73.0020.0002][.2E8C.0020.0002] # -0EC2 0E9E ; [.2E73.0020.0002][.2E8D.0020.0002] # -0EC3 0E9E ; [.2E73.0020.0002][.2E8E.0020.0002] # -0EC4 0E9E ; [.2E73.0020.0002][.2E8F.0020.0002] # -0E9F ; [.2E74.0020.0002] # LAO LETTER FO SUNG -0EC0 0E9F ; [.2E74.0020.0002][.2E8B.0020.0002] # -0EC1 0E9F ; [.2E74.0020.0002][.2E8C.0020.0002] # -0EC2 0E9F ; [.2E74.0020.0002][.2E8D.0020.0002] # -0EC3 0E9F ; [.2E74.0020.0002][.2E8E.0020.0002] # -0EC4 0E9F ; [.2E74.0020.0002][.2E8F.0020.0002] # -0EA1 ; [.2E75.0020.0002] # LAO LETTER MO -0EC0 0EA1 ; [.2E75.0020.0002][.2E8B.0020.0002] # -0EC1 0EA1 ; [.2E75.0020.0002][.2E8C.0020.0002] # -0EC2 0EA1 ; [.2E75.0020.0002][.2E8D.0020.0002] # -0EC3 0EA1 ; [.2E75.0020.0002][.2E8E.0020.0002] # -0EC4 0EA1 ; [.2E75.0020.0002][.2E8F.0020.0002] # -0EA2 ; [.2E76.0020.0002] # LAO LETTER YO -0EC0 0EA2 ; [.2E76.0020.0002][.2E8B.0020.0002] # -0EC1 0EA2 ; [.2E76.0020.0002][.2E8C.0020.0002] # -0EC2 0EA2 ; [.2E76.0020.0002][.2E8D.0020.0002] # -0EC3 0EA2 ; [.2E76.0020.0002][.2E8E.0020.0002] # -0EC4 0EA2 ; [.2E76.0020.0002][.2E8F.0020.0002] # -0EA3 ; [.2E77.0020.0002] # LAO LETTER LO LING -0EC0 0EA3 ; [.2E77.0020.0002][.2E8B.0020.0002] # -0EC1 0EA3 ; [.2E77.0020.0002][.2E8C.0020.0002] # -0EC2 0EA3 ; [.2E77.0020.0002][.2E8D.0020.0002] # -0EC3 0EA3 ; [.2E77.0020.0002][.2E8E.0020.0002] # -0EC4 0EA3 ; [.2E77.0020.0002][.2E8F.0020.0002] # -0EA5 ; [.2E78.0020.0002] # LAO LETTER LO LOOT -0EC0 0EA5 ; [.2E78.0020.0002][.2E8B.0020.0002] # -0EC1 0EA5 ; [.2E78.0020.0002][.2E8C.0020.0002] # -0EC2 0EA5 ; [.2E78.0020.0002][.2E8D.0020.0002] # -0EC3 0EA5 ; [.2E78.0020.0002][.2E8E.0020.0002] # -0EC4 0EA5 ; [.2E78.0020.0002][.2E8F.0020.0002] # -0EA7 ; [.2E79.0020.0002] # LAO LETTER WO -0EC0 0EA7 ; [.2E79.0020.0002][.2E8B.0020.0002] # -0EC1 0EA7 ; [.2E79.0020.0002][.2E8C.0020.0002] # -0EC2 0EA7 ; [.2E79.0020.0002][.2E8D.0020.0002] # -0EC3 0EA7 ; [.2E79.0020.0002][.2E8E.0020.0002] # -0EC4 0EA7 ; [.2E79.0020.0002][.2E8F.0020.0002] # -0EAB ; [.2E7A.0020.0002] # LAO LETTER HO SUNG -0EDC ; [.2E7A.0020.0004][.2E6E.0020.0004] # LAO HO NO -0EC0 0EDC ; [.2E7A.0020.0004][.2E6E.0020.0004][.2E8B.0020.0002] # -0EC1 0EDC ; [.2E7A.0020.0004][.2E6E.0020.0004][.2E8C.0020.0002] # -0EC2 0EDC ; [.2E7A.0020.0004][.2E6E.0020.0004][.2E8D.0020.0002] # -0EC3 0EDC ; [.2E7A.0020.0004][.2E6E.0020.0004][.2E8E.0020.0002] # -0EC4 0EDC ; [.2E7A.0020.0004][.2E6E.0020.0004][.2E8F.0020.0002] # -0EDD ; [.2E7A.0020.0004][.2E75.0020.0004] # LAO HO MO -0EC0 0EDD ; [.2E7A.0020.0004][.2E75.0020.0004][.2E8B.0020.0002] # -0EC1 0EDD ; [.2E7A.0020.0004][.2E75.0020.0004][.2E8C.0020.0002] # -0EC2 0EDD ; [.2E7A.0020.0004][.2E75.0020.0004][.2E8D.0020.0002] # -0EC3 0EDD ; [.2E7A.0020.0004][.2E75.0020.0004][.2E8E.0020.0002] # -0EC4 0EDD ; [.2E7A.0020.0004][.2E75.0020.0004][.2E8F.0020.0002] # -0EC0 0EAB ; [.2E7A.0020.0002][.2E8B.0020.0002] # -0EC1 0EAB ; [.2E7A.0020.0002][.2E8C.0020.0002] # -0EC2 0EAB ; [.2E7A.0020.0002][.2E8D.0020.0002] # -0EC3 0EAB ; [.2E7A.0020.0002][.2E8E.0020.0002] # -0EC4 0EAB ; [.2E7A.0020.0002][.2E8F.0020.0002] # -0EAD ; [.2E7B.0020.0002] # LAO LETTER O -0EC0 0EAD ; [.2E7B.0020.0002][.2E8B.0020.0002] # -0EC1 0EAD ; [.2E7B.0020.0002][.2E8C.0020.0002] # -0EC2 0EAD ; [.2E7B.0020.0002][.2E8D.0020.0002] # -0EC3 0EAD ; [.2E7B.0020.0002][.2E8E.0020.0002] # -0EC4 0EAD ; [.2E7B.0020.0002][.2E8F.0020.0002] # -0EAE ; [.2E7C.0020.0002] # LAO LETTER HO TAM -0EC0 0EAE ; [.2E7C.0020.0002][.2E8B.0020.0002] # -0EC1 0EAE ; [.2E7C.0020.0002][.2E8C.0020.0002] # -0EC2 0EAE ; [.2E7C.0020.0002][.2E8D.0020.0002] # -0EC3 0EAE ; [.2E7C.0020.0002][.2E8E.0020.0002] # -0EC4 0EAE ; [.2E7C.0020.0002][.2E8F.0020.0002] # -0EAF ; [.2E7D.0020.0002] # LAO ELLIPSIS -0EB0 ; [.2E7E.0020.0002] # LAO VOWEL SIGN A -0EB1 ; [.2E7F.0020.0002] # LAO VOWEL SIGN MAI KAN -0EB2 ; [.2E80.0020.0002] # LAO VOWEL SIGN AA -0EB3 ; [.2E81.0020.0002] # LAO VOWEL SIGN AM -0ECD 0EB2 ; [.2E81.0020.0002] # LAO VOWEL SIGN AM -0EB4 ; [.2E82.0020.0002] # LAO VOWEL SIGN I -0EB5 ; [.2E83.0020.0002] # LAO VOWEL SIGN II -0EB6 ; [.2E84.0020.0002] # LAO VOWEL SIGN Y -0EB7 ; [.2E85.0020.0002] # LAO VOWEL SIGN YY -0EB8 ; [.2E86.0020.0002] # LAO VOWEL SIGN U -0EB9 ; [.2E87.0020.0002] # LAO VOWEL SIGN UU -0EBB ; [.2E88.0020.0002] # LAO VOWEL SIGN MAI KON -0EBC ; [.2E89.0020.0002] # LAO SEMIVOWEL SIGN LO -0EBD ; [.2E8A.0020.0002] # LAO SEMIVOWEL SIGN NYO -0EC0 ; [.2E8B.0020.0002] # LAO VOWEL SIGN E -0EC1 ; [.2E8C.0020.0002] # LAO VOWEL SIGN EI -0EC2 ; [.2E8D.0020.0002] # LAO VOWEL SIGN O -0EC3 ; [.2E8E.0020.0002] # LAO VOWEL SIGN AY -0EC4 ; [.2E8F.0020.0002] # LAO VOWEL SIGN AI -AA80 ; [.2E90.0020.0002] # TAI VIET LETTER LOW KO -AAB5 AA80 ; [.2E90.0020.0002][.2EC5.0020.0002] # -AAB6 AA80 ; [.2E90.0020.0002][.2EC6.0020.0002] # -AAB9 AA80 ; [.2E90.0020.0002][.2EC9.0020.0002] # -AABB AA80 ; [.2E90.0020.0002][.2ECB.0020.0002] # -AABC AA80 ; [.2E90.0020.0002][.2ECC.0020.0002] # -AA81 ; [.2E91.0020.0002] # TAI VIET LETTER HIGH KO -AAB5 AA81 ; [.2E91.0020.0002][.2EC5.0020.0002] # -AAB6 AA81 ; [.2E91.0020.0002][.2EC6.0020.0002] # -AAB9 AA81 ; [.2E91.0020.0002][.2EC9.0020.0002] # -AABB AA81 ; [.2E91.0020.0002][.2ECB.0020.0002] # -AABC AA81 ; [.2E91.0020.0002][.2ECC.0020.0002] # -AA82 ; [.2E92.0020.0002] # TAI VIET LETTER LOW KHO -AAB5 AA82 ; [.2E92.0020.0002][.2EC5.0020.0002] # -AAB6 AA82 ; [.2E92.0020.0002][.2EC6.0020.0002] # -AAB9 AA82 ; [.2E92.0020.0002][.2EC9.0020.0002] # -AABB AA82 ; [.2E92.0020.0002][.2ECB.0020.0002] # -AABC AA82 ; [.2E92.0020.0002][.2ECC.0020.0002] # -AA83 ; [.2E93.0020.0002] # TAI VIET LETTER HIGH KHO -AAB5 AA83 ; [.2E93.0020.0002][.2EC5.0020.0002] # -AAB6 AA83 ; [.2E93.0020.0002][.2EC6.0020.0002] # -AAB9 AA83 ; [.2E93.0020.0002][.2EC9.0020.0002] # -AABB AA83 ; [.2E93.0020.0002][.2ECB.0020.0002] # -AABC AA83 ; [.2E93.0020.0002][.2ECC.0020.0002] # -AA84 ; [.2E94.0020.0002] # TAI VIET LETTER LOW KHHO -AAB5 AA84 ; [.2E94.0020.0002][.2EC5.0020.0002] # -AAB6 AA84 ; [.2E94.0020.0002][.2EC6.0020.0002] # -AAB9 AA84 ; [.2E94.0020.0002][.2EC9.0020.0002] # -AABB AA84 ; [.2E94.0020.0002][.2ECB.0020.0002] # -AABC AA84 ; [.2E94.0020.0002][.2ECC.0020.0002] # -AA85 ; [.2E95.0020.0002] # TAI VIET LETTER HIGH KHHO -AAB5 AA85 ; [.2E95.0020.0002][.2EC5.0020.0002] # -AAB6 AA85 ; [.2E95.0020.0002][.2EC6.0020.0002] # -AAB9 AA85 ; [.2E95.0020.0002][.2EC9.0020.0002] # -AABB AA85 ; [.2E95.0020.0002][.2ECB.0020.0002] # -AABC AA85 ; [.2E95.0020.0002][.2ECC.0020.0002] # -AA86 ; [.2E96.0020.0002] # TAI VIET LETTER LOW GO -AAB5 AA86 ; [.2E96.0020.0002][.2EC5.0020.0002] # -AAB6 AA86 ; [.2E96.0020.0002][.2EC6.0020.0002] # -AAB9 AA86 ; [.2E96.0020.0002][.2EC9.0020.0002] # -AABB AA86 ; [.2E96.0020.0002][.2ECB.0020.0002] # -AABC AA86 ; [.2E96.0020.0002][.2ECC.0020.0002] # -AA87 ; [.2E97.0020.0002] # TAI VIET LETTER HIGH GO -AAB5 AA87 ; [.2E97.0020.0002][.2EC5.0020.0002] # -AAB6 AA87 ; [.2E97.0020.0002][.2EC6.0020.0002] # -AAB9 AA87 ; [.2E97.0020.0002][.2EC9.0020.0002] # -AABB AA87 ; [.2E97.0020.0002][.2ECB.0020.0002] # -AABC AA87 ; [.2E97.0020.0002][.2ECC.0020.0002] # -AA88 ; [.2E98.0020.0002] # TAI VIET LETTER LOW NGO -AAB5 AA88 ; [.2E98.0020.0002][.2EC5.0020.0002] # -AAB6 AA88 ; [.2E98.0020.0002][.2EC6.0020.0002] # -AAB9 AA88 ; [.2E98.0020.0002][.2EC9.0020.0002] # -AABB AA88 ; [.2E98.0020.0002][.2ECB.0020.0002] # -AABC AA88 ; [.2E98.0020.0002][.2ECC.0020.0002] # -AA89 ; [.2E99.0020.0002] # TAI VIET LETTER HIGH NGO -AAB5 AA89 ; [.2E99.0020.0002][.2EC5.0020.0002] # -AAB6 AA89 ; [.2E99.0020.0002][.2EC6.0020.0002] # -AAB9 AA89 ; [.2E99.0020.0002][.2EC9.0020.0002] # -AABB AA89 ; [.2E99.0020.0002][.2ECB.0020.0002] # -AABC AA89 ; [.2E99.0020.0002][.2ECC.0020.0002] # -AA8A ; [.2E9A.0020.0002] # TAI VIET LETTER LOW CO -AAB5 AA8A ; [.2E9A.0020.0002][.2EC5.0020.0002] # -AAB6 AA8A ; [.2E9A.0020.0002][.2EC6.0020.0002] # -AAB9 AA8A ; [.2E9A.0020.0002][.2EC9.0020.0002] # -AABB AA8A ; [.2E9A.0020.0002][.2ECB.0020.0002] # -AABC AA8A ; [.2E9A.0020.0002][.2ECC.0020.0002] # -AA8B ; [.2E9B.0020.0002] # TAI VIET LETTER HIGH CO -AAB5 AA8B ; [.2E9B.0020.0002][.2EC5.0020.0002] # -AAB6 AA8B ; [.2E9B.0020.0002][.2EC6.0020.0002] # -AAB9 AA8B ; [.2E9B.0020.0002][.2EC9.0020.0002] # -AABB AA8B ; [.2E9B.0020.0002][.2ECB.0020.0002] # -AABC AA8B ; [.2E9B.0020.0002][.2ECC.0020.0002] # -AA8C ; [.2E9C.0020.0002] # TAI VIET LETTER LOW CHO -AAB5 AA8C ; [.2E9C.0020.0002][.2EC5.0020.0002] # -AAB6 AA8C ; [.2E9C.0020.0002][.2EC6.0020.0002] # -AAB9 AA8C ; [.2E9C.0020.0002][.2EC9.0020.0002] # -AABB AA8C ; [.2E9C.0020.0002][.2ECB.0020.0002] # -AABC AA8C ; [.2E9C.0020.0002][.2ECC.0020.0002] # -AA8D ; [.2E9D.0020.0002] # TAI VIET LETTER HIGH CHO -AAB5 AA8D ; [.2E9D.0020.0002][.2EC5.0020.0002] # -AAB6 AA8D ; [.2E9D.0020.0002][.2EC6.0020.0002] # -AAB9 AA8D ; [.2E9D.0020.0002][.2EC9.0020.0002] # -AABB AA8D ; [.2E9D.0020.0002][.2ECB.0020.0002] # -AABC AA8D ; [.2E9D.0020.0002][.2ECC.0020.0002] # -AA8E ; [.2E9E.0020.0002] # TAI VIET LETTER LOW SO -AAB5 AA8E ; [.2E9E.0020.0002][.2EC5.0020.0002] # -AAB6 AA8E ; [.2E9E.0020.0002][.2EC6.0020.0002] # -AAB9 AA8E ; [.2E9E.0020.0002][.2EC9.0020.0002] # -AABB AA8E ; [.2E9E.0020.0002][.2ECB.0020.0002] # -AABC AA8E ; [.2E9E.0020.0002][.2ECC.0020.0002] # -AA8F ; [.2E9F.0020.0002] # TAI VIET LETTER HIGH SO -AAB5 AA8F ; [.2E9F.0020.0002][.2EC5.0020.0002] # -AAB6 AA8F ; [.2E9F.0020.0002][.2EC6.0020.0002] # -AAB9 AA8F ; [.2E9F.0020.0002][.2EC9.0020.0002] # -AABB AA8F ; [.2E9F.0020.0002][.2ECB.0020.0002] # -AABC AA8F ; [.2E9F.0020.0002][.2ECC.0020.0002] # -AA90 ; [.2EA0.0020.0002] # TAI VIET LETTER LOW NYO -AAB5 AA90 ; [.2EA0.0020.0002][.2EC5.0020.0002] # -AAB6 AA90 ; [.2EA0.0020.0002][.2EC6.0020.0002] # -AAB9 AA90 ; [.2EA0.0020.0002][.2EC9.0020.0002] # -AABB AA90 ; [.2EA0.0020.0002][.2ECB.0020.0002] # -AABC AA90 ; [.2EA0.0020.0002][.2ECC.0020.0002] # -AA91 ; [.2EA1.0020.0002] # TAI VIET LETTER HIGH NYO -AAB5 AA91 ; [.2EA1.0020.0002][.2EC5.0020.0002] # -AAB6 AA91 ; [.2EA1.0020.0002][.2EC6.0020.0002] # -AAB9 AA91 ; [.2EA1.0020.0002][.2EC9.0020.0002] # -AABB AA91 ; [.2EA1.0020.0002][.2ECB.0020.0002] # -AABC AA91 ; [.2EA1.0020.0002][.2ECC.0020.0002] # -AA92 ; [.2EA2.0020.0002] # TAI VIET LETTER LOW DO -AAB5 AA92 ; [.2EA2.0020.0002][.2EC5.0020.0002] # -AAB6 AA92 ; [.2EA2.0020.0002][.2EC6.0020.0002] # -AAB9 AA92 ; [.2EA2.0020.0002][.2EC9.0020.0002] # -AABB AA92 ; [.2EA2.0020.0002][.2ECB.0020.0002] # -AABC AA92 ; [.2EA2.0020.0002][.2ECC.0020.0002] # -AA93 ; [.2EA3.0020.0002] # TAI VIET LETTER HIGH DO -AAB5 AA93 ; [.2EA3.0020.0002][.2EC5.0020.0002] # -AAB6 AA93 ; [.2EA3.0020.0002][.2EC6.0020.0002] # -AAB9 AA93 ; [.2EA3.0020.0002][.2EC9.0020.0002] # -AABB AA93 ; [.2EA3.0020.0002][.2ECB.0020.0002] # -AABC AA93 ; [.2EA3.0020.0002][.2ECC.0020.0002] # -AA94 ; [.2EA4.0020.0002] # TAI VIET LETTER LOW TO -AAB5 AA94 ; [.2EA4.0020.0002][.2EC5.0020.0002] # -AAB6 AA94 ; [.2EA4.0020.0002][.2EC6.0020.0002] # -AAB9 AA94 ; [.2EA4.0020.0002][.2EC9.0020.0002] # -AABB AA94 ; [.2EA4.0020.0002][.2ECB.0020.0002] # -AABC AA94 ; [.2EA4.0020.0002][.2ECC.0020.0002] # -AA95 ; [.2EA5.0020.0002] # TAI VIET LETTER HIGH TO -AAB5 AA95 ; [.2EA5.0020.0002][.2EC5.0020.0002] # -AAB6 AA95 ; [.2EA5.0020.0002][.2EC6.0020.0002] # -AAB9 AA95 ; [.2EA5.0020.0002][.2EC9.0020.0002] # -AABB AA95 ; [.2EA5.0020.0002][.2ECB.0020.0002] # -AABC AA95 ; [.2EA5.0020.0002][.2ECC.0020.0002] # -AA96 ; [.2EA6.0020.0002] # TAI VIET LETTER LOW THO -AAB5 AA96 ; [.2EA6.0020.0002][.2EC5.0020.0002] # -AAB6 AA96 ; [.2EA6.0020.0002][.2EC6.0020.0002] # -AAB9 AA96 ; [.2EA6.0020.0002][.2EC9.0020.0002] # -AABB AA96 ; [.2EA6.0020.0002][.2ECB.0020.0002] # -AABC AA96 ; [.2EA6.0020.0002][.2ECC.0020.0002] # -AA97 ; [.2EA7.0020.0002] # TAI VIET LETTER HIGH THO -AAB5 AA97 ; [.2EA7.0020.0002][.2EC5.0020.0002] # -AAB6 AA97 ; [.2EA7.0020.0002][.2EC6.0020.0002] # -AAB9 AA97 ; [.2EA7.0020.0002][.2EC9.0020.0002] # -AABB AA97 ; [.2EA7.0020.0002][.2ECB.0020.0002] # -AABC AA97 ; [.2EA7.0020.0002][.2ECC.0020.0002] # -AA98 ; [.2EA8.0020.0002] # TAI VIET LETTER LOW NO -AAB5 AA98 ; [.2EA8.0020.0002][.2EC5.0020.0002] # -AAB6 AA98 ; [.2EA8.0020.0002][.2EC6.0020.0002] # -AAB9 AA98 ; [.2EA8.0020.0002][.2EC9.0020.0002] # -AABB AA98 ; [.2EA8.0020.0002][.2ECB.0020.0002] # -AABC AA98 ; [.2EA8.0020.0002][.2ECC.0020.0002] # -AA99 ; [.2EA9.0020.0002] # TAI VIET LETTER HIGH NO -AAB5 AA99 ; [.2EA9.0020.0002][.2EC5.0020.0002] # -AAB6 AA99 ; [.2EA9.0020.0002][.2EC6.0020.0002] # -AAB9 AA99 ; [.2EA9.0020.0002][.2EC9.0020.0002] # -AABB AA99 ; [.2EA9.0020.0002][.2ECB.0020.0002] # -AABC AA99 ; [.2EA9.0020.0002][.2ECC.0020.0002] # -AA9A ; [.2EAA.0020.0002] # TAI VIET LETTER LOW BO -AAB5 AA9A ; [.2EAA.0020.0002][.2EC5.0020.0002] # -AAB6 AA9A ; [.2EAA.0020.0002][.2EC6.0020.0002] # -AAB9 AA9A ; [.2EAA.0020.0002][.2EC9.0020.0002] # -AABB AA9A ; [.2EAA.0020.0002][.2ECB.0020.0002] # -AABC AA9A ; [.2EAA.0020.0002][.2ECC.0020.0002] # -AA9B ; [.2EAB.0020.0002] # TAI VIET LETTER HIGH BO -AAB5 AA9B ; [.2EAB.0020.0002][.2EC5.0020.0002] # -AAB6 AA9B ; [.2EAB.0020.0002][.2EC6.0020.0002] # -AAB9 AA9B ; [.2EAB.0020.0002][.2EC9.0020.0002] # -AABB AA9B ; [.2EAB.0020.0002][.2ECB.0020.0002] # -AABC AA9B ; [.2EAB.0020.0002][.2ECC.0020.0002] # -AA9C ; [.2EAC.0020.0002] # TAI VIET LETTER LOW PO -AAB5 AA9C ; [.2EAC.0020.0002][.2EC5.0020.0002] # -AAB6 AA9C ; [.2EAC.0020.0002][.2EC6.0020.0002] # -AAB9 AA9C ; [.2EAC.0020.0002][.2EC9.0020.0002] # -AABB AA9C ; [.2EAC.0020.0002][.2ECB.0020.0002] # -AABC AA9C ; [.2EAC.0020.0002][.2ECC.0020.0002] # -AA9D ; [.2EAD.0020.0002] # TAI VIET LETTER HIGH PO -AAB5 AA9D ; [.2EAD.0020.0002][.2EC5.0020.0002] # -AAB6 AA9D ; [.2EAD.0020.0002][.2EC6.0020.0002] # -AAB9 AA9D ; [.2EAD.0020.0002][.2EC9.0020.0002] # -AABB AA9D ; [.2EAD.0020.0002][.2ECB.0020.0002] # -AABC AA9D ; [.2EAD.0020.0002][.2ECC.0020.0002] # -AA9E ; [.2EAE.0020.0002] # TAI VIET LETTER LOW PHO -AAB5 AA9E ; [.2EAE.0020.0002][.2EC5.0020.0002] # -AAB6 AA9E ; [.2EAE.0020.0002][.2EC6.0020.0002] # -AAB9 AA9E ; [.2EAE.0020.0002][.2EC9.0020.0002] # -AABB AA9E ; [.2EAE.0020.0002][.2ECB.0020.0002] # -AABC AA9E ; [.2EAE.0020.0002][.2ECC.0020.0002] # -AA9F ; [.2EAF.0020.0002] # TAI VIET LETTER HIGH PHO -AAB5 AA9F ; [.2EAF.0020.0002][.2EC5.0020.0002] # -AAB6 AA9F ; [.2EAF.0020.0002][.2EC6.0020.0002] # -AAB9 AA9F ; [.2EAF.0020.0002][.2EC9.0020.0002] # -AABB AA9F ; [.2EAF.0020.0002][.2ECB.0020.0002] # -AABC AA9F ; [.2EAF.0020.0002][.2ECC.0020.0002] # -AAA0 ; [.2EB0.0020.0002] # TAI VIET LETTER LOW FO -AAB5 AAA0 ; [.2EB0.0020.0002][.2EC5.0020.0002] # -AAB6 AAA0 ; [.2EB0.0020.0002][.2EC6.0020.0002] # -AAB9 AAA0 ; [.2EB0.0020.0002][.2EC9.0020.0002] # -AABB AAA0 ; [.2EB0.0020.0002][.2ECB.0020.0002] # -AABC AAA0 ; [.2EB0.0020.0002][.2ECC.0020.0002] # -AAA1 ; [.2EB1.0020.0002] # TAI VIET LETTER HIGH FO -AAB5 AAA1 ; [.2EB1.0020.0002][.2EC5.0020.0002] # -AAB6 AAA1 ; [.2EB1.0020.0002][.2EC6.0020.0002] # -AAB9 AAA1 ; [.2EB1.0020.0002][.2EC9.0020.0002] # -AABB AAA1 ; [.2EB1.0020.0002][.2ECB.0020.0002] # -AABC AAA1 ; [.2EB1.0020.0002][.2ECC.0020.0002] # -AAA2 ; [.2EB2.0020.0002] # TAI VIET LETTER LOW MO -AAB5 AAA2 ; [.2EB2.0020.0002][.2EC5.0020.0002] # -AAB6 AAA2 ; [.2EB2.0020.0002][.2EC6.0020.0002] # -AAB9 AAA2 ; [.2EB2.0020.0002][.2EC9.0020.0002] # -AABB AAA2 ; [.2EB2.0020.0002][.2ECB.0020.0002] # -AABC AAA2 ; [.2EB2.0020.0002][.2ECC.0020.0002] # -AAA3 ; [.2EB3.0020.0002] # TAI VIET LETTER HIGH MO -AAB5 AAA3 ; [.2EB3.0020.0002][.2EC5.0020.0002] # -AAB6 AAA3 ; [.2EB3.0020.0002][.2EC6.0020.0002] # -AAB9 AAA3 ; [.2EB3.0020.0002][.2EC9.0020.0002] # -AABB AAA3 ; [.2EB3.0020.0002][.2ECB.0020.0002] # -AABC AAA3 ; [.2EB3.0020.0002][.2ECC.0020.0002] # -AAA4 ; [.2EB4.0020.0002] # TAI VIET LETTER LOW YO -AAB5 AAA4 ; [.2EB4.0020.0002][.2EC5.0020.0002] # -AAB6 AAA4 ; [.2EB4.0020.0002][.2EC6.0020.0002] # -AAB9 AAA4 ; [.2EB4.0020.0002][.2EC9.0020.0002] # -AABB AAA4 ; [.2EB4.0020.0002][.2ECB.0020.0002] # -AABC AAA4 ; [.2EB4.0020.0002][.2ECC.0020.0002] # -AAA5 ; [.2EB5.0020.0002] # TAI VIET LETTER HIGH YO -AAB5 AAA5 ; [.2EB5.0020.0002][.2EC5.0020.0002] # -AAB6 AAA5 ; [.2EB5.0020.0002][.2EC6.0020.0002] # -AAB9 AAA5 ; [.2EB5.0020.0002][.2EC9.0020.0002] # -AABB AAA5 ; [.2EB5.0020.0002][.2ECB.0020.0002] # -AABC AAA5 ; [.2EB5.0020.0002][.2ECC.0020.0002] # -AAA6 ; [.2EB6.0020.0002] # TAI VIET LETTER LOW RO -AAB5 AAA6 ; [.2EB6.0020.0002][.2EC5.0020.0002] # -AAB6 AAA6 ; [.2EB6.0020.0002][.2EC6.0020.0002] # -AAB9 AAA6 ; [.2EB6.0020.0002][.2EC9.0020.0002] # -AABB AAA6 ; [.2EB6.0020.0002][.2ECB.0020.0002] # -AABC AAA6 ; [.2EB6.0020.0002][.2ECC.0020.0002] # -AAA7 ; [.2EB7.0020.0002] # TAI VIET LETTER HIGH RO -AAB5 AAA7 ; [.2EB7.0020.0002][.2EC5.0020.0002] # -AAB6 AAA7 ; [.2EB7.0020.0002][.2EC6.0020.0002] # -AAB9 AAA7 ; [.2EB7.0020.0002][.2EC9.0020.0002] # -AABB AAA7 ; [.2EB7.0020.0002][.2ECB.0020.0002] # -AABC AAA7 ; [.2EB7.0020.0002][.2ECC.0020.0002] # -AAA8 ; [.2EB8.0020.0002] # TAI VIET LETTER LOW LO -AAB5 AAA8 ; [.2EB8.0020.0002][.2EC5.0020.0002] # -AAB6 AAA8 ; [.2EB8.0020.0002][.2EC6.0020.0002] # -AAB9 AAA8 ; [.2EB8.0020.0002][.2EC9.0020.0002] # -AABB AAA8 ; [.2EB8.0020.0002][.2ECB.0020.0002] # -AABC AAA8 ; [.2EB8.0020.0002][.2ECC.0020.0002] # -AAA9 ; [.2EB9.0020.0002] # TAI VIET LETTER HIGH LO -AAB5 AAA9 ; [.2EB9.0020.0002][.2EC5.0020.0002] # -AAB6 AAA9 ; [.2EB9.0020.0002][.2EC6.0020.0002] # -AAB9 AAA9 ; [.2EB9.0020.0002][.2EC9.0020.0002] # -AABB AAA9 ; [.2EB9.0020.0002][.2ECB.0020.0002] # -AABC AAA9 ; [.2EB9.0020.0002][.2ECC.0020.0002] # -AAAA ; [.2EBA.0020.0002] # TAI VIET LETTER LOW VO -AAB5 AAAA ; [.2EBA.0020.0002][.2EC5.0020.0002] # -AAB6 AAAA ; [.2EBA.0020.0002][.2EC6.0020.0002] # -AAB9 AAAA ; [.2EBA.0020.0002][.2EC9.0020.0002] # -AABB AAAA ; [.2EBA.0020.0002][.2ECB.0020.0002] # -AABC AAAA ; [.2EBA.0020.0002][.2ECC.0020.0002] # -AAAB ; [.2EBB.0020.0002] # TAI VIET LETTER HIGH VO -AAB5 AAAB ; [.2EBB.0020.0002][.2EC5.0020.0002] # -AAB6 AAAB ; [.2EBB.0020.0002][.2EC6.0020.0002] # -AAB9 AAAB ; [.2EBB.0020.0002][.2EC9.0020.0002] # -AABB AAAB ; [.2EBB.0020.0002][.2ECB.0020.0002] # -AABC AAAB ; [.2EBB.0020.0002][.2ECC.0020.0002] # -AAAC ; [.2EBC.0020.0002] # TAI VIET LETTER LOW HO -AAB5 AAAC ; [.2EBC.0020.0002][.2EC5.0020.0002] # -AAB6 AAAC ; [.2EBC.0020.0002][.2EC6.0020.0002] # -AAB9 AAAC ; [.2EBC.0020.0002][.2EC9.0020.0002] # -AABB AAAC ; [.2EBC.0020.0002][.2ECB.0020.0002] # -AABC AAAC ; [.2EBC.0020.0002][.2ECC.0020.0002] # -AAAD ; [.2EBD.0020.0002] # TAI VIET LETTER HIGH HO -AAB5 AAAD ; [.2EBD.0020.0002][.2EC5.0020.0002] # -AAB6 AAAD ; [.2EBD.0020.0002][.2EC6.0020.0002] # -AAB9 AAAD ; [.2EBD.0020.0002][.2EC9.0020.0002] # -AABB AAAD ; [.2EBD.0020.0002][.2ECB.0020.0002] # -AABC AAAD ; [.2EBD.0020.0002][.2ECC.0020.0002] # -AAAE ; [.2EBE.0020.0002] # TAI VIET LETTER LOW O -AAB5 AAAE ; [.2EBE.0020.0002][.2EC5.0020.0002] # -AAB6 AAAE ; [.2EBE.0020.0002][.2EC6.0020.0002] # -AAB9 AAAE ; [.2EBE.0020.0002][.2EC9.0020.0002] # -AABB AAAE ; [.2EBE.0020.0002][.2ECB.0020.0002] # -AABC AAAE ; [.2EBE.0020.0002][.2ECC.0020.0002] # -AAAF ; [.2EBF.0020.0002] # TAI VIET LETTER HIGH O -AAB5 AAAF ; [.2EBF.0020.0002][.2EC5.0020.0002] # -AAB6 AAAF ; [.2EBF.0020.0002][.2EC6.0020.0002] # -AAB9 AAAF ; [.2EBF.0020.0002][.2EC9.0020.0002] # -AABB AAAF ; [.2EBF.0020.0002][.2ECB.0020.0002] # -AABC AAAF ; [.2EBF.0020.0002][.2ECC.0020.0002] # -AAB0 ; [.2EC0.0020.0002] # TAI VIET MAI KANG -AAB1 ; [.2EC1.0020.0002] # TAI VIET VOWEL AA -AAB2 ; [.2EC2.0020.0002] # TAI VIET VOWEL I -AAB3 ; [.2EC3.0020.0002] # TAI VIET VOWEL UE -AAB4 ; [.2EC4.0020.0002] # TAI VIET VOWEL U -AAB5 ; [.2EC5.0020.0002] # TAI VIET VOWEL E -AAB6 ; [.2EC6.0020.0002] # TAI VIET VOWEL O -AAB7 ; [.2EC7.0020.0002] # TAI VIET MAI KHIT -AAB8 ; [.2EC8.0020.0002] # TAI VIET VOWEL IA -AAB9 ; [.2EC9.0020.0002] # TAI VIET VOWEL UEA -AABA ; [.2ECA.0020.0002] # TAI VIET VOWEL UA -AABB ; [.2ECB.0020.0002] # TAI VIET VOWEL AUE -AABC ; [.2ECC.0020.0002] # TAI VIET VOWEL AY -AABD ; [.2ECD.0020.0002] # TAI VIET VOWEL AN -AABE ; [.2ECE.0020.0002] # TAI VIET VOWEL AM -AAC0 ; [.2ECF.0020.0002] # TAI VIET TONE MAI NUENG -AAC2 ; [.2ED0.0020.0002] # TAI VIET TONE MAI SONG -AADB ; [.2ED1.0020.0002] # TAI VIET SYMBOL KON -AADC ; [.2ED2.0020.0002] # TAI VIET SYMBOL NUENG -0F40 ; [.2ED3.0020.0002] # TIBETAN LETTER KA -0F69 ; [.2ED3.0020.0002][.2F14.0020.0002] # TIBETAN LETTER KSSA -0F90 ; [.2ED4.0020.0002] # TIBETAN SUBJOINED LETTER KA -0FB9 ; [.2ED4.0020.0002][.2F14.0020.0002] # TIBETAN SUBJOINED LETTER KSSA -0F6B ; [.2ED5.0020.0002] # TIBETAN LETTER KKA -0F41 ; [.2ED6.0020.0002] # TIBETAN LETTER KHA -0F91 ; [.2ED7.0020.0002] # TIBETAN SUBJOINED LETTER KHA -0F42 ; [.2ED8.0020.0002] # TIBETAN LETTER GA -0F43 ; [.2ED8.0020.0002][.2F18.0020.0002] # TIBETAN LETTER GHA -0F92 ; [.2ED9.0020.0002] # TIBETAN SUBJOINED LETTER GA -0F93 ; [.2ED9.0020.0002][.2F18.0020.0002] # TIBETAN SUBJOINED LETTER GHA -0F44 ; [.2EDA.0020.0002] # TIBETAN LETTER NGA -0F94 ; [.2EDB.0020.0002] # TIBETAN SUBJOINED LETTER NGA -0F45 ; [.2EDC.0020.0002] # TIBETAN LETTER CA -0F95 ; [.2EDD.0020.0002] # TIBETAN SUBJOINED LETTER CA -0F46 ; [.2EDE.0020.0002] # TIBETAN LETTER CHA -0F96 ; [.2EDF.0020.0002] # TIBETAN SUBJOINED LETTER CHA -0F47 ; [.2EE0.0020.0002] # TIBETAN LETTER JA -0F97 ; [.2EE1.0020.0002] # TIBETAN SUBJOINED LETTER JA -0F49 ; [.2EE2.0020.0002] # TIBETAN LETTER NYA -0F99 ; [.2EE3.0020.0002] # TIBETAN SUBJOINED LETTER NYA -0F4A ; [.2EE4.0020.0002] # TIBETAN LETTER TTA -0F9A ; [.2EE5.0020.0002] # TIBETAN SUBJOINED LETTER TTA -0F4B ; [.2EE6.0020.0002] # TIBETAN LETTER TTHA -0F9B ; [.2EE7.0020.0002] # TIBETAN SUBJOINED LETTER TTHA -0F4C ; [.2EE8.0020.0002] # TIBETAN LETTER DDA -0F4D ; [.2EE8.0020.0002][.2F18.0020.0002] # TIBETAN LETTER DDHA -0F9C ; [.2EE9.0020.0002] # TIBETAN SUBJOINED LETTER DDA -0F9D ; [.2EE9.0020.0002][.2F18.0020.0002] # TIBETAN SUBJOINED LETTER DDHA -0F4E ; [.2EEA.0020.0002] # TIBETAN LETTER NNA -0F9E ; [.2EEB.0020.0002] # TIBETAN SUBJOINED LETTER NNA -0F4F ; [.2EEC.0020.0002] # TIBETAN LETTER TA -0F9F ; [.2EED.0020.0002] # TIBETAN SUBJOINED LETTER TA -0F50 ; [.2EEE.0020.0002] # TIBETAN LETTER THA -0FA0 ; [.2EEF.0020.0002] # TIBETAN SUBJOINED LETTER THA -0F51 ; [.2EF0.0020.0002] # TIBETAN LETTER DA -0F52 ; [.2EF0.0020.0002][.2F18.0020.0002] # TIBETAN LETTER DHA -0FA1 ; [.2EF1.0020.0002] # TIBETAN SUBJOINED LETTER DA -0FA2 ; [.2EF1.0020.0002][.2F18.0020.0002] # TIBETAN SUBJOINED LETTER DHA -0F53 ; [.2EF2.0020.0002] # TIBETAN LETTER NA -0FA3 ; [.2EF3.0020.0002] # TIBETAN SUBJOINED LETTER NA -0F54 ; [.2EF4.0020.0002] # TIBETAN LETTER PA -0FA4 ; [.2EF5.0020.0002] # TIBETAN SUBJOINED LETTER PA -0F55 ; [.2EF6.0020.0002] # TIBETAN LETTER PHA -0FA5 ; [.2EF7.0020.0002] # TIBETAN SUBJOINED LETTER PHA -0F56 ; [.2EF8.0020.0002] # TIBETAN LETTER BA -0F57 ; [.2EF8.0020.0002][.2F18.0020.0002] # TIBETAN LETTER BHA -0FA6 ; [.2EF9.0020.0002] # TIBETAN SUBJOINED LETTER BA -0FA7 ; [.2EF9.0020.0002][.2F18.0020.0002] # TIBETAN SUBJOINED LETTER BHA -0F58 ; [.2EFA.0020.0002] # TIBETAN LETTER MA -0FA8 ; [.2EFB.0020.0002] # TIBETAN SUBJOINED LETTER MA -0F59 ; [.2EFC.0020.0002] # TIBETAN LETTER TSA -0FA9 ; [.2EFD.0020.0002] # TIBETAN SUBJOINED LETTER TSA -0F5A ; [.2EFE.0020.0002] # TIBETAN LETTER TSHA -0FAA ; [.2EFF.0020.0002] # TIBETAN SUBJOINED LETTER TSHA -0F5B ; [.2F00.0020.0002] # TIBETAN LETTER DZA -0F5C ; [.2F00.0020.0002][.2F18.0020.0002] # TIBETAN LETTER DZHA -0FAB ; [.2F01.0020.0002] # TIBETAN SUBJOINED LETTER DZA -0FAC ; [.2F01.0020.0002][.2F18.0020.0002] # TIBETAN SUBJOINED LETTER DZHA -0F5D ; [.2F02.0020.0002] # TIBETAN LETTER WA -0FAD ; [.2F03.0020.0002] # TIBETAN SUBJOINED LETTER WA -0FBA ; [.2F03.0020.0004][.0000.0112.0004] # TIBETAN SUBJOINED LETTER FIXED-FORM WA -0F5E ; [.2F04.0020.0002] # TIBETAN LETTER ZHA -0FAE ; [.2F05.0020.0002] # TIBETAN SUBJOINED LETTER ZHA -0F5F ; [.2F06.0020.0002] # TIBETAN LETTER ZA -0FAF ; [.2F07.0020.0002] # TIBETAN SUBJOINED LETTER ZA -0F60 ; [.2F08.0020.0002] # TIBETAN LETTER -A -0FB0 ; [.2F09.0020.0002] # TIBETAN SUBJOINED LETTER -A -0F61 ; [.2F0A.0020.0002] # TIBETAN LETTER YA -0FB1 ; [.2F0B.0020.0002] # TIBETAN SUBJOINED LETTER YA -0FBB ; [.2F0B.0020.0004][.0000.0112.0004] # TIBETAN SUBJOINED LETTER FIXED-FORM YA -0F62 ; [.2F0C.0020.0002] # TIBETAN LETTER RA -0F6A ; [.2F0C.0020.0004][.0000.0112.0004] # TIBETAN LETTER FIXED-FORM RA -0FB2 ; [.2F0D.0020.0002] # TIBETAN SUBJOINED LETTER RA -0FBC ; [.2F0D.0020.0004][.0000.0112.0004] # TIBETAN SUBJOINED LETTER FIXED-FORM RA -0F6C ; [.2F0E.0020.0002] # TIBETAN LETTER RRA -0F63 ; [.2F0F.0020.0002] # TIBETAN LETTER LA -0FB3 ; [.2F10.0020.0002] # TIBETAN SUBJOINED LETTER LA -0F64 ; [.2F11.0020.0002] # TIBETAN LETTER SHA -0FB4 ; [.2F12.0020.0002] # TIBETAN SUBJOINED LETTER SHA -0F65 ; [.2F13.0020.0002] # TIBETAN LETTER SSA -0FB5 ; [.2F14.0020.0002] # TIBETAN SUBJOINED LETTER SSA -0F66 ; [.2F15.0020.0002] # TIBETAN LETTER SA -0FB6 ; [.2F16.0020.0002] # TIBETAN SUBJOINED LETTER SA -0F67 ; [.2F17.0020.0002] # TIBETAN LETTER HA -0FB7 ; [.2F18.0020.0002] # TIBETAN SUBJOINED LETTER HA -0F68 ; [.2F19.0020.0002] # TIBETAN LETTER A -0F00 ; [.2F19.0020.0004][.2F30.0020.0004][.0000.00C4.0004] # TIBETAN SYLLABLE OM -0FB8 ; [.2F1A.0020.0002] # TIBETAN SUBJOINED LETTER A -0F88 ; [.2F1B.0020.0002] # TIBETAN SIGN LCE TSA CAN -0F8D ; [.2F1C.0020.0002] # TIBETAN SUBJOINED SIGN LCE TSA CAN -0F89 ; [.2F1D.0020.0002] # TIBETAN SIGN MCHU CAN -0F8E ; [.2F1E.0020.0002] # TIBETAN SUBJOINED SIGN MCHU CAN -0F8C ; [.2F1F.0020.0002] # TIBETAN SIGN INVERTED MCHU CAN -0F8F ; [.2F20.0020.0002] # TIBETAN SUBJOINED SIGN INVERTED MCHU CAN -0F8A ; [.2F21.0020.0002] # TIBETAN SIGN GRU CAN RGYINGS -0F8B ; [.2F22.0020.0002] # TIBETAN SIGN GRU MED RGYINGS -0F71 ; [.2F23.0020.0002] # TIBETAN VOWEL SIGN AA -0F72 ; [.2F24.0020.0002] # TIBETAN VOWEL SIGN I -0F73 ; [.2F25.0020.0002] # TIBETAN VOWEL SIGN II -0F71 0F72 ; [.2F25.0020.0002] # TIBETAN VOWEL SIGN II -0F80 ; [.2F26.0020.0002] # TIBETAN VOWEL SIGN REVERSED I -0F81 ; [.2F27.0020.0002] # TIBETAN VOWEL SIGN REVERSED II -0F71 0F80 ; [.2F27.0020.0002] # TIBETAN VOWEL SIGN REVERSED II -0F74 ; [.2F28.0020.0002] # TIBETAN VOWEL SIGN U -0F75 ; [.2F29.0020.0002] # TIBETAN VOWEL SIGN UU -0F71 0F74 ; [.2F29.0020.0002] # TIBETAN VOWEL SIGN UU -0F76 ; [.2F2A.0020.0002] # TIBETAN VOWEL SIGN VOCALIC R -0FB2 0F80 ; [.2F2A.0020.0002] # TIBETAN VOWEL SIGN VOCALIC R -0F77 ; [.2F2B.0020.0002] # TIBETAN VOWEL SIGN VOCALIC RR -0FB2 0F71 0F80 ; [.2F2B.0020.0002] # TIBETAN VOWEL SIGN VOCALIC RR -0FB2 0F81 ; [.2F2B.0020.0002] # TIBETAN VOWEL SIGN VOCALIC RR -0F78 ; [.2F2C.0020.0002] # TIBETAN VOWEL SIGN VOCALIC L -0FB3 0F80 ; [.2F2C.0020.0002] # TIBETAN VOWEL SIGN VOCALIC L -0F79 ; [.2F2D.0020.0002] # TIBETAN VOWEL SIGN VOCALIC LL -0FB3 0F71 0F80 ; [.2F2D.0020.0002] # TIBETAN VOWEL SIGN VOCALIC LL -0FB3 0F81 ; [.2F2D.0020.0002] # TIBETAN VOWEL SIGN VOCALIC LL -0F7A ; [.2F2E.0020.0002] # TIBETAN VOWEL SIGN E -0F7B ; [.2F2F.0020.0002] # TIBETAN VOWEL SIGN EE -0F7C ; [.2F30.0020.0002] # TIBETAN VOWEL SIGN O -0F7D ; [.2F31.0020.0002] # TIBETAN VOWEL SIGN OO -0F84 ; [.2F32.0020.0002] # TIBETAN MARK HALANTA -11A0B ; [.2F33.0020.0002] # ZANABAZAR SQUARE LETTER KA -11A32 ; [.2F34.0020.0002] # ZANABAZAR SQUARE LETTER KSSA -11A0C ; [.2F35.0020.0002] # ZANABAZAR SQUARE LETTER KHA -11A0D ; [.2F36.0020.0002] # ZANABAZAR SQUARE LETTER GA -11A0E ; [.2F37.0020.0002] # ZANABAZAR SQUARE LETTER GHA -11A0F ; [.2F38.0020.0002] # ZANABAZAR SQUARE LETTER NGA -11A10 ; [.2F39.0020.0002] # ZANABAZAR SQUARE LETTER CA -11A11 ; [.2F3A.0020.0002] # ZANABAZAR SQUARE LETTER CHA -11A12 ; [.2F3B.0020.0002] # ZANABAZAR SQUARE LETTER JA -11A13 ; [.2F3C.0020.0002] # ZANABAZAR SQUARE LETTER NYA -11A14 ; [.2F3D.0020.0002] # ZANABAZAR SQUARE LETTER TTA -11A15 ; [.2F3E.0020.0002] # ZANABAZAR SQUARE LETTER TTHA -11A16 ; [.2F3F.0020.0002] # ZANABAZAR SQUARE LETTER DDA -11A17 ; [.2F40.0020.0002] # ZANABAZAR SQUARE LETTER DDHA -11A18 ; [.2F41.0020.0002] # ZANABAZAR SQUARE LETTER NNA -11A19 ; [.2F42.0020.0002] # ZANABAZAR SQUARE LETTER TA -11A1A ; [.2F43.0020.0002] # ZANABAZAR SQUARE LETTER THA -11A1B ; [.2F44.0020.0002] # ZANABAZAR SQUARE LETTER DA -11A1C ; [.2F45.0020.0002] # ZANABAZAR SQUARE LETTER DHA -11A1D ; [.2F46.0020.0002] # ZANABAZAR SQUARE LETTER NA -11A1E ; [.2F47.0020.0002] # ZANABAZAR SQUARE LETTER PA -11A1F ; [.2F48.0020.0002] # ZANABAZAR SQUARE LETTER PHA -11A20 ; [.2F49.0020.0002] # ZANABAZAR SQUARE LETTER BA -11A21 ; [.2F4A.0020.0002] # ZANABAZAR SQUARE LETTER BHA -11A22 ; [.2F4B.0020.0002] # ZANABAZAR SQUARE LETTER MA -11A23 ; [.2F4C.0020.0002] # ZANABAZAR SQUARE LETTER TSA -11A24 ; [.2F4D.0020.0002] # ZANABAZAR SQUARE LETTER TSHA -11A25 ; [.2F4E.0020.0002] # ZANABAZAR SQUARE LETTER DZA -11A26 ; [.2F4F.0020.0002] # ZANABAZAR SQUARE LETTER DZHA -11A27 ; [.2F50.0020.0002] # ZANABAZAR SQUARE LETTER ZHA -11A28 ; [.2F51.0020.0002] # ZANABAZAR SQUARE LETTER ZA -11A29 ; [.2F52.0020.0002] # ZANABAZAR SQUARE LETTER -A -11A2A ; [.2F53.0020.0002] # ZANABAZAR SQUARE LETTER YA -11A3B ; [.2F53.0020.0019] # ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA -11A2B ; [.2F54.0020.0002] # ZANABAZAR SQUARE LETTER RA -11A3A ; [.2F54.0020.0017] # ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA -11A3C ; [.2F54.0020.0019] # ZANABAZAR SQUARE CLUSTER-FINAL LETTER RA -11A2C ; [.2F55.0020.0002] # ZANABAZAR SQUARE LETTER LA -11A3D ; [.2F55.0020.0019] # ZANABAZAR SQUARE CLUSTER-FINAL LETTER LA -11A2D ; [.2F56.0020.0002] # ZANABAZAR SQUARE LETTER VA -11A3E ; [.2F56.0020.0019] # ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA -11A2E ; [.2F57.0020.0002] # ZANABAZAR SQUARE LETTER SHA -11A2F ; [.2F58.0020.0002] # ZANABAZAR SQUARE LETTER SSA -11A30 ; [.2F59.0020.0002] # ZANABAZAR SQUARE LETTER SA -11A31 ; [.2F5A.0020.0002] # ZANABAZAR SQUARE LETTER HA -11A00 ; [.2F5B.0020.0002] # ZANABAZAR SQUARE LETTER A -11A01 ; [.2F5C.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN I -11A02 ; [.2F5D.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN UE -11A03 ; [.2F5E.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN U -11A04 ; [.2F5F.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN E -11A05 ; [.2F60.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN OE -11A06 ; [.2F61.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN O -11A07 ; [.2F62.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN AI -11A08 ; [.2F63.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN AU -11A09 ; [.2F64.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN REVERSED I -11A0A ; [.2F65.0020.0002] # ZANABAZAR SQUARE VOWEL LENGTH MARK -11A34 ; [.2F66.0020.0002] # ZANABAZAR SQUARE SIGN VIRAMA -11A47 ; [.2F67.0020.0002] # ZANABAZAR SQUARE SUBJOINER -11A50 ; [.2F68.0020.0002] # SOYOMBO LETTER A -11A51 ; [.2F69.0020.0002] # SOYOMBO VOWEL SIGN I -11A52 ; [.2F6A.0020.0002] # SOYOMBO VOWEL SIGN UE -11A53 ; [.2F6B.0020.0002] # SOYOMBO VOWEL SIGN U -11A59 ; [.2F6C.0020.0002] # SOYOMBO VOWEL SIGN VOCALIC R -11A5A ; [.2F6D.0020.0002] # SOYOMBO VOWEL SIGN VOCALIC L -11A54 ; [.2F6E.0020.0002] # SOYOMBO VOWEL SIGN E -11A56 ; [.2F6F.0020.0002] # SOYOMBO VOWEL SIGN OE -11A55 ; [.2F70.0020.0002] # SOYOMBO VOWEL SIGN O -11A57 ; [.2F71.0020.0002] # SOYOMBO VOWEL SIGN AI -11A58 ; [.2F72.0020.0002] # SOYOMBO VOWEL SIGN AU -11A5B ; [.2F73.0020.0002] # SOYOMBO VOWEL LENGTH MARK -11A5C ; [.2F74.0020.0002] # SOYOMBO LETTER KA -11A8A ; [.2F74.0020.0019] # SOYOMBO FINAL CONSONANT SIGN G -11A83 ; [.2F75.0020.0002] # SOYOMBO LETTER KSSA -11A5D ; [.2F76.0020.0002] # SOYOMBO LETTER KHA -11A8B ; [.2F76.0020.0019] # SOYOMBO FINAL CONSONANT SIGN K -11A5E ; [.2F77.0020.0002] # SOYOMBO LETTER GA -11A5F ; [.2F78.0020.0002] # SOYOMBO LETTER GHA -11A60 ; [.2F79.0020.0002] # SOYOMBO LETTER NGA -11A8C ; [.2F79.0020.0019] # SOYOMBO FINAL CONSONANT SIGN NG -11A61 ; [.2F7A.0020.0002] # SOYOMBO LETTER CA -11A62 ; [.2F7B.0020.0002] # SOYOMBO LETTER CHA -11A63 ; [.2F7C.0020.0002] # SOYOMBO LETTER JA -11A64 ; [.2F7D.0020.0002] # SOYOMBO LETTER JHA -11A65 ; [.2F7E.0020.0002] # SOYOMBO LETTER NYA -11A66 ; [.2F7F.0020.0002] # SOYOMBO LETTER TTA -11A67 ; [.2F80.0020.0002] # SOYOMBO LETTER TTHA -11A68 ; [.2F81.0020.0002] # SOYOMBO LETTER DDA -11A69 ; [.2F82.0020.0002] # SOYOMBO LETTER DDHA -11A6A ; [.2F83.0020.0002] # SOYOMBO LETTER NNA -11A6B ; [.2F84.0020.0002] # SOYOMBO LETTER TA -11A8D ; [.2F84.0020.0019] # SOYOMBO FINAL CONSONANT SIGN D -11A6C ; [.2F85.0020.0002] # SOYOMBO LETTER THA -11A6D ; [.2F86.0020.0002] # SOYOMBO LETTER DA -11A6E ; [.2F87.0020.0002] # SOYOMBO LETTER DHA -11A6F ; [.2F88.0020.0002] # SOYOMBO LETTER NA -11A8E ; [.2F88.0020.0019] # SOYOMBO FINAL CONSONANT SIGN N -11A70 ; [.2F89.0020.0002] # SOYOMBO LETTER PA -11A8F ; [.2F89.0020.0019] # SOYOMBO FINAL CONSONANT SIGN B -11A71 ; [.2F8A.0020.0002] # SOYOMBO LETTER PHA -11A72 ; [.2F8B.0020.0002] # SOYOMBO LETTER BA -11A73 ; [.2F8C.0020.0002] # SOYOMBO LETTER BHA -11A74 ; [.2F8D.0020.0002] # SOYOMBO LETTER MA -11A90 ; [.2F8D.0020.0019] # SOYOMBO FINAL CONSONANT SIGN M -11A75 ; [.2F8E.0020.0002] # SOYOMBO LETTER TSA -11A76 ; [.2F8F.0020.0002] # SOYOMBO LETTER TSHA -11A77 ; [.2F90.0020.0002] # SOYOMBO LETTER DZA -11A78 ; [.2F91.0020.0002] # SOYOMBO LETTER ZHA -11A79 ; [.2F92.0020.0002] # SOYOMBO LETTER ZA -11A7A ; [.2F93.0020.0002] # SOYOMBO LETTER -A -11A95 ; [.2F93.0020.0019] # SOYOMBO FINAL CONSONANT SIGN -A -11A7B ; [.2F94.0020.0002] # SOYOMBO LETTER YA -11A7C ; [.2F95.0020.0002] # SOYOMBO LETTER RA -11A86 ; [.2F95.0020.0017] # SOYOMBO CLUSTER-INITIAL LETTER RA -11A91 ; [.2F95.0020.0019] # SOYOMBO FINAL CONSONANT SIGN R -11A7D ; [.2F96.0020.0002] # SOYOMBO LETTER LA -11A87 ; [.2F96.0020.0017] # SOYOMBO CLUSTER-INITIAL LETTER LA -11A92 ; [.2F96.0020.0019] # SOYOMBO FINAL CONSONANT SIGN L -11A7E ; [.2F97.0020.0002] # SOYOMBO LETTER VA -11A7F ; [.2F98.0020.0002] # SOYOMBO LETTER SHA -11A88 ; [.2F98.0020.0017] # SOYOMBO CLUSTER-INITIAL LETTER SHA -11A93 ; [.2F98.0020.0019] # SOYOMBO FINAL CONSONANT SIGN SH -11A80 ; [.2F99.0020.0002] # SOYOMBO LETTER SSA -11A81 ; [.2F9A.0020.0002] # SOYOMBO LETTER SA -11A89 ; [.2F9A.0020.0017] # SOYOMBO CLUSTER-INITIAL LETTER SA -11A94 ; [.2F9A.0020.0019] # SOYOMBO FINAL CONSONANT SIGN S -11A82 ; [.2F9B.0020.0002] # SOYOMBO LETTER HA -11A99 ; [.2F9C.0020.0002] # SOYOMBO SUBJOINER -11C72 ; [.2F9D.0020.0002] # MARCHEN LETTER KA -11C92 ; [.2F9E.0020.0002] # MARCHEN SUBJOINED LETTER KA -11C73 ; [.2F9F.0020.0002] # MARCHEN LETTER KHA -11C93 ; [.2FA0.0020.0002] # MARCHEN SUBJOINED LETTER KHA -11C74 ; [.2FA1.0020.0002] # MARCHEN LETTER GA -11C94 ; [.2FA2.0020.0002] # MARCHEN SUBJOINED LETTER GA -11C75 ; [.2FA3.0020.0002] # MARCHEN LETTER NGA -11C95 ; [.2FA4.0020.0002] # MARCHEN SUBJOINED LETTER NGA -11C76 ; [.2FA5.0020.0002] # MARCHEN LETTER CA -11C96 ; [.2FA6.0020.0002] # MARCHEN SUBJOINED LETTER CA -11C77 ; [.2FA7.0020.0002] # MARCHEN LETTER CHA -11C97 ; [.2FA8.0020.0002] # MARCHEN SUBJOINED LETTER CHA -11C78 ; [.2FA9.0020.0002] # MARCHEN LETTER JA -11C98 ; [.2FAA.0020.0002] # MARCHEN SUBJOINED LETTER JA -11C79 ; [.2FAB.0020.0002] # MARCHEN LETTER NYA -11C99 ; [.2FAC.0020.0002] # MARCHEN SUBJOINED LETTER NYA -11C7A ; [.2FAD.0020.0002] # MARCHEN LETTER TA -11C9A ; [.2FAE.0020.0002] # MARCHEN SUBJOINED LETTER TA -11C7B ; [.2FAF.0020.0002] # MARCHEN LETTER THA -11C9B ; [.2FB0.0020.0002] # MARCHEN SUBJOINED LETTER THA -11C7C ; [.2FB1.0020.0002] # MARCHEN LETTER DA -11C9C ; [.2FB2.0020.0002] # MARCHEN SUBJOINED LETTER DA -11C7D ; [.2FB3.0020.0002] # MARCHEN LETTER NA -11C9D ; [.2FB4.0020.0002] # MARCHEN SUBJOINED LETTER NA -11C7E ; [.2FB5.0020.0002] # MARCHEN LETTER PA -11C9E ; [.2FB6.0020.0002] # MARCHEN SUBJOINED LETTER PA -11C7F ; [.2FB7.0020.0002] # MARCHEN LETTER PHA -11C9F ; [.2FB8.0020.0002] # MARCHEN SUBJOINED LETTER PHA -11C80 ; [.2FB9.0020.0002] # MARCHEN LETTER BA -11CA0 ; [.2FBA.0020.0002] # MARCHEN SUBJOINED LETTER BA -11C81 ; [.2FBB.0020.0002] # MARCHEN LETTER MA -11CA1 ; [.2FBC.0020.0002] # MARCHEN SUBJOINED LETTER MA -11C82 ; [.2FBD.0020.0002] # MARCHEN LETTER TSA -11CA2 ; [.2FBE.0020.0002] # MARCHEN SUBJOINED LETTER TSA -11C83 ; [.2FBF.0020.0002] # MARCHEN LETTER TSHA -11CA3 ; [.2FC0.0020.0002] # MARCHEN SUBJOINED LETTER TSHA -11C84 ; [.2FC1.0020.0002] # MARCHEN LETTER DZA -11CA4 ; [.2FC2.0020.0002] # MARCHEN SUBJOINED LETTER DZA -11C85 ; [.2FC3.0020.0002] # MARCHEN LETTER WA -11CA5 ; [.2FC4.0020.0002] # MARCHEN SUBJOINED LETTER WA -11C86 ; [.2FC5.0020.0002] # MARCHEN LETTER ZHA -11CA6 ; [.2FC6.0020.0002] # MARCHEN SUBJOINED LETTER ZHA -11C87 ; [.2FC7.0020.0002] # MARCHEN LETTER ZA -11CA7 ; [.2FC8.0020.0002] # MARCHEN SUBJOINED LETTER ZA -11C88 ; [.2FC9.0020.0002] # MARCHEN LETTER -A -11C89 ; [.2FCA.0020.0002] # MARCHEN LETTER YA -11CA9 ; [.2FCB.0020.0002] # MARCHEN SUBJOINED LETTER YA -11C8A ; [.2FCC.0020.0002] # MARCHEN LETTER RA -11CAA ; [.2FCD.0020.0002] # MARCHEN SUBJOINED LETTER RA -11C8B ; [.2FCE.0020.0002] # MARCHEN LETTER LA -11CAB ; [.2FCF.0020.0002] # MARCHEN SUBJOINED LETTER LA -11C8C ; [.2FD0.0020.0002] # MARCHEN LETTER SHA -11CAC ; [.2FD1.0020.0002] # MARCHEN SUBJOINED LETTER SHA -11C8D ; [.2FD2.0020.0002] # MARCHEN LETTER SA -11CAD ; [.2FD3.0020.0002] # MARCHEN SUBJOINED LETTER SA -11C8E ; [.2FD4.0020.0002] # MARCHEN LETTER HA -11CAE ; [.2FD5.0020.0002] # MARCHEN SUBJOINED LETTER HA -11C8F ; [.2FD6.0020.0002] # MARCHEN LETTER A -11CAF ; [.2FD7.0020.0002] # MARCHEN SUBJOINED LETTER A -11CB0 ; [.2FD8.0020.0002] # MARCHEN VOWEL SIGN AA -11CB1 ; [.2FD9.0020.0002] # MARCHEN VOWEL SIGN I -11CB2 ; [.2FDA.0020.0002] # MARCHEN VOWEL SIGN U -11CB3 ; [.2FDB.0020.0002] # MARCHEN VOWEL SIGN E -11CB4 ; [.2FDC.0020.0002] # MARCHEN VOWEL SIGN O -1C00 ; [.2FDD.0020.0002] # LEPCHA LETTER KA -1C01 ; [.2FDE.0020.0002] # LEPCHA LETTER KLA -1C02 ; [.2FDF.0020.0002] # LEPCHA LETTER KHA -1C03 ; [.2FE0.0020.0002] # LEPCHA LETTER GA -1C04 ; [.2FE1.0020.0002] # LEPCHA LETTER GLA -1C05 ; [.2FE2.0020.0002] # LEPCHA LETTER NGA -1C06 ; [.2FE3.0020.0002] # LEPCHA LETTER CA -1C07 ; [.2FE4.0020.0002] # LEPCHA LETTER CHA -1C08 ; [.2FE5.0020.0002] # LEPCHA LETTER JA -1C09 ; [.2FE6.0020.0002] # LEPCHA LETTER NYA -1C4D ; [.2FE7.0020.0002] # LEPCHA LETTER TTA -1C4E ; [.2FE8.0020.0002] # LEPCHA LETTER TTHA -1C4F ; [.2FE9.0020.0002] # LEPCHA LETTER DDA -1C0A ; [.2FEA.0020.0002] # LEPCHA LETTER TA -1C0B ; [.2FEB.0020.0002] # LEPCHA LETTER THA -1C0C ; [.2FEC.0020.0002] # LEPCHA LETTER DA -1C0D ; [.2FED.0020.0002] # LEPCHA LETTER NA -1C0E ; [.2FEE.0020.0002] # LEPCHA LETTER PA -1C0F ; [.2FEF.0020.0002] # LEPCHA LETTER PLA -1C10 ; [.2FF0.0020.0002] # LEPCHA LETTER PHA -1C11 ; [.2FF1.0020.0002] # LEPCHA LETTER FA -1C12 ; [.2FF2.0020.0002] # LEPCHA LETTER FLA -1C13 ; [.2FF3.0020.0002] # LEPCHA LETTER BA -1C14 ; [.2FF4.0020.0002] # LEPCHA LETTER BLA -1C15 ; [.2FF5.0020.0002] # LEPCHA LETTER MA -1C16 ; [.2FF6.0020.0002] # LEPCHA LETTER MLA -1C17 ; [.2FF7.0020.0002] # LEPCHA LETTER TSA -1C18 ; [.2FF8.0020.0002] # LEPCHA LETTER TSHA -1C19 ; [.2FF9.0020.0002] # LEPCHA LETTER DZA -1C1A ; [.2FFA.0020.0002] # LEPCHA LETTER YA -1C24 ; [.2FFB.0020.0002] # LEPCHA SUBJOINED LETTER YA -1C1B ; [.2FFC.0020.0002] # LEPCHA LETTER RA -1C25 ; [.2FFD.0020.0002] # LEPCHA SUBJOINED LETTER RA -1C1C ; [.2FFE.0020.0002] # LEPCHA LETTER LA -1C1D ; [.2FFF.0020.0002] # LEPCHA LETTER HA -1C1E ; [.3000.0020.0002] # LEPCHA LETTER HLA -1C1F ; [.3001.0020.0002] # LEPCHA LETTER VA -1C20 ; [.3002.0020.0002] # LEPCHA LETTER SA -1C21 ; [.3003.0020.0002] # LEPCHA LETTER SHA -1C22 ; [.3004.0020.0002] # LEPCHA LETTER WA -1C23 ; [.3005.0020.0002] # LEPCHA LETTER A -1C36 ; [.3006.0020.0002] # LEPCHA SIGN RAN -1C26 ; [.3007.0020.0002] # LEPCHA VOWEL SIGN AA -1C27 ; [.3008.0020.0002] # LEPCHA VOWEL SIGN I -1C28 ; [.3009.0020.0002] # LEPCHA VOWEL SIGN O -1C29 ; [.300A.0020.0002] # LEPCHA VOWEL SIGN OO -1C2A ; [.300B.0020.0002] # LEPCHA VOWEL SIGN U -1C2B ; [.300C.0020.0002] # LEPCHA VOWEL SIGN UU -1C2C ; [.300D.0020.0002] # LEPCHA VOWEL SIGN E -1C2D ; [.300E.0020.0002] # LEPCHA CONSONANT SIGN K -1C2E ; [.300F.0020.0002] # LEPCHA CONSONANT SIGN M -1C2F ; [.3010.0020.0002] # LEPCHA CONSONANT SIGN L -1C30 ; [.3011.0020.0002] # LEPCHA CONSONANT SIGN N -1C31 ; [.3012.0020.0002] # LEPCHA CONSONANT SIGN P -1C32 ; [.3013.0020.0002] # LEPCHA CONSONANT SIGN R -1C33 ; [.3014.0020.0002] # LEPCHA CONSONANT SIGN T -1C34 ; [.3015.0020.0002] # LEPCHA CONSONANT SIGN NYIN-DO -1C35 ; [.3016.0020.0002] # LEPCHA CONSONANT SIGN KANG -A840 ; [.3017.0020.0002] # PHAGS-PA LETTER KA -A841 ; [.3018.0020.0002] # PHAGS-PA LETTER KHA -A842 ; [.3019.0020.0002] # PHAGS-PA LETTER GA -A843 ; [.301A.0020.0002] # PHAGS-PA LETTER NGA -A844 ; [.301B.0020.0002] # PHAGS-PA LETTER CA -A845 ; [.301C.0020.0002] # PHAGS-PA LETTER CHA -A846 ; [.301D.0020.0002] # PHAGS-PA LETTER JA -A847 ; [.301E.0020.0002] # PHAGS-PA LETTER NYA -A869 ; [.301F.0020.0002] # PHAGS-PA LETTER TTA -A86A ; [.3020.0020.0002] # PHAGS-PA LETTER TTHA -A86B ; [.3021.0020.0002] # PHAGS-PA LETTER DDA -A86C ; [.3022.0020.0002] # PHAGS-PA LETTER NNA -A848 ; [.3023.0020.0002] # PHAGS-PA LETTER TA -A849 ; [.3024.0020.0002] # PHAGS-PA LETTER THA -A84A ; [.3025.0020.0002] # PHAGS-PA LETTER DA -A84B ; [.3026.0020.0002] # PHAGS-PA LETTER NA -A84C ; [.3027.0020.0002] # PHAGS-PA LETTER PA -A84D ; [.3028.0020.0002] # PHAGS-PA LETTER PHA -A84E ; [.3029.0020.0002] # PHAGS-PA LETTER BA -A84F ; [.302A.0020.0002] # PHAGS-PA LETTER MA -A850 ; [.302B.0020.0002] # PHAGS-PA LETTER TSA -A851 ; [.302C.0020.0002] # PHAGS-PA LETTER TSHA -A852 ; [.302D.0020.0002] # PHAGS-PA LETTER DZA -A853 ; [.302E.0020.0002] # PHAGS-PA LETTER WA -A867 ; [.302F.0020.0002] # PHAGS-PA SUBJOINED LETTER WA -A854 ; [.3030.0020.0002] # PHAGS-PA LETTER ZHA -A855 ; [.3031.0020.0002] # PHAGS-PA LETTER ZA -A856 ; [.3032.0020.0002] # PHAGS-PA LETTER SMALL A -A857 ; [.3033.0020.0002] # PHAGS-PA LETTER YA -A868 ; [.3034.0020.0002] # PHAGS-PA SUBJOINED LETTER YA -A86D ; [.3035.0020.0002] # PHAGS-PA LETTER ALTERNATE YA -A858 ; [.3036.0020.0002] # PHAGS-PA LETTER RA -A871 ; [.3037.0020.0002] # PHAGS-PA SUBJOINED LETTER RA -A872 ; [.3038.0020.0002] # PHAGS-PA SUPERFIXED LETTER RA -A859 ; [.3039.0020.0002] # PHAGS-PA LETTER LA -A85A ; [.303A.0020.0002] # PHAGS-PA LETTER SHA -A86E ; [.303B.0020.0002] # PHAGS-PA LETTER VOICELESS SHA -A85B ; [.303C.0020.0002] # PHAGS-PA LETTER SA -A85C ; [.303D.0020.0002] # PHAGS-PA LETTER HA -A86F ; [.303E.0020.0002] # PHAGS-PA LETTER VOICED HA -A870 ; [.303F.0020.0002] # PHAGS-PA LETTER ASPIRATED FA -A85D ; [.3040.0020.0002] # PHAGS-PA LETTER A -A862 ; [.3041.0020.0002] # PHAGS-PA LETTER QA -A863 ; [.3042.0020.0002] # PHAGS-PA LETTER XA -A864 ; [.3043.0020.0002] # PHAGS-PA LETTER FA -A865 ; [.3044.0020.0002] # PHAGS-PA LETTER GGA -A85E ; [.3045.0020.0002] # PHAGS-PA LETTER I -A85F ; [.3046.0020.0002] # PHAGS-PA LETTER U -A860 ; [.3047.0020.0002] # PHAGS-PA LETTER E -A861 ; [.3048.0020.0002] # PHAGS-PA LETTER O -A866 ; [.3049.0020.0002] # PHAGS-PA LETTER EE -A873 ; [.304A.0020.0002] # PHAGS-PA LETTER CANDRABINDU -1900 ; [.304B.0020.0002] # LIMBU VOWEL-CARRIER LETTER -1901 ; [.304C.0020.0002] # LIMBU LETTER KA -1902 ; [.304D.0020.0002] # LIMBU LETTER KHA -1903 ; [.304E.0020.0002] # LIMBU LETTER GA -1904 ; [.304F.0020.0002] # LIMBU LETTER GHA -1905 ; [.3050.0020.0002] # LIMBU LETTER NGA -1906 ; [.3051.0020.0002] # LIMBU LETTER CA -1907 ; [.3052.0020.0002] # LIMBU LETTER CHA -1908 ; [.3053.0020.0002] # LIMBU LETTER JA -191D ; [.3053.0020.0004][.3071.0020.0004] # LIMBU LETTER GYAN -1909 ; [.3054.0020.0002] # LIMBU LETTER JHA -190A ; [.3055.0020.0002] # LIMBU LETTER YAN -190B ; [.3056.0020.0002] # LIMBU LETTER TA -191E ; [.3056.0020.0004][.3072.0020.0004] # LIMBU LETTER TRA -190C ; [.3057.0020.0002] # LIMBU LETTER THA -190D ; [.3058.0020.0002] # LIMBU LETTER DA -190E ; [.3059.0020.0002] # LIMBU LETTER DHA -190F ; [.305A.0020.0002] # LIMBU LETTER NA -1910 ; [.305B.0020.0002] # LIMBU LETTER PA -1911 ; [.305C.0020.0002] # LIMBU LETTER PHA -1912 ; [.305D.0020.0002] # LIMBU LETTER BA -1913 ; [.305E.0020.0002] # LIMBU LETTER BHA -1914 ; [.305F.0020.0002] # LIMBU LETTER MA -1915 ; [.3060.0020.0002] # LIMBU LETTER YA -1916 ; [.3061.0020.0002] # LIMBU LETTER RA -1917 ; [.3062.0020.0002] # LIMBU LETTER LA -1918 ; [.3063.0020.0002] # LIMBU LETTER WA -1919 ; [.3064.0020.0002] # LIMBU LETTER SHA -191A ; [.3065.0020.0002] # LIMBU LETTER SSA -191B ; [.3066.0020.0002] # LIMBU LETTER SA -191C ; [.3067.0020.0002] # LIMBU LETTER HA -1920 ; [.3068.0020.0002] # LIMBU VOWEL SIGN A -1921 ; [.3069.0020.0002] # LIMBU VOWEL SIGN I -1922 ; [.306A.0020.0002] # LIMBU VOWEL SIGN U -1923 ; [.306B.0020.0002] # LIMBU VOWEL SIGN EE -1924 ; [.306C.0020.0002] # LIMBU VOWEL SIGN AI -1925 ; [.306D.0020.0002] # LIMBU VOWEL SIGN OO -1926 ; [.306E.0020.0002] # LIMBU VOWEL SIGN AU -1927 ; [.306F.0020.0002] # LIMBU VOWEL SIGN E -1928 ; [.3070.0020.0002] # LIMBU VOWEL SIGN O -1929 ; [.3071.0020.0002] # LIMBU SUBJOINED LETTER YA -192A ; [.3072.0020.0002] # LIMBU SUBJOINED LETTER RA -192B ; [.3073.0020.0002] # LIMBU SUBJOINED LETTER WA -1930 ; [.3074.0020.0002] # LIMBU SMALL LETTER KA -1931 ; [.3075.0020.0002] # LIMBU SMALL LETTER NGA -1932 ; [.3076.0020.0002] # LIMBU SMALL LETTER ANUSVARA -1933 ; [.3077.0020.0002] # LIMBU SMALL LETTER TA -1934 ; [.3078.0020.0002] # LIMBU SMALL LETTER NA -1935 ; [.3079.0020.0002] # LIMBU SMALL LETTER PA -1936 ; [.307A.0020.0002] # LIMBU SMALL LETTER MA -1937 ; [.307B.0020.0002] # LIMBU SMALL LETTER RA -1938 ; [.307C.0020.0002] # LIMBU SMALL LETTER LA -1700 ; [.307D.0020.0002] # TAGALOG LETTER A -1701 ; [.307E.0020.0002] # TAGALOG LETTER I -1702 ; [.307F.0020.0002] # TAGALOG LETTER U -1703 ; [.3080.0020.0002] # TAGALOG LETTER KA -1704 ; [.3081.0020.0002] # TAGALOG LETTER GA -1705 ; [.3082.0020.0002] # TAGALOG LETTER NGA -1706 ; [.3083.0020.0002] # TAGALOG LETTER TA -1707 ; [.3084.0020.0002] # TAGALOG LETTER DA -1708 ; [.3085.0020.0002] # TAGALOG LETTER NA -1709 ; [.3086.0020.0002] # TAGALOG LETTER PA -170A ; [.3087.0020.0002] # TAGALOG LETTER BA -170B ; [.3088.0020.0002] # TAGALOG LETTER MA -170C ; [.3089.0020.0002] # TAGALOG LETTER YA -170E ; [.308A.0020.0002] # TAGALOG LETTER LA -170F ; [.308B.0020.0002] # TAGALOG LETTER WA -1710 ; [.308C.0020.0002] # TAGALOG LETTER SA -1711 ; [.308D.0020.0002] # TAGALOG LETTER HA -1712 ; [.308E.0020.0002] # TAGALOG VOWEL SIGN I -1713 ; [.308F.0020.0002] # TAGALOG VOWEL SIGN U -1714 ; [.3090.0020.0002] # TAGALOG SIGN VIRAMA -1720 ; [.3091.0020.0002] # HANUNOO LETTER A -1721 ; [.3092.0020.0002] # HANUNOO LETTER I -1722 ; [.3093.0020.0002] # HANUNOO LETTER U -1723 ; [.3094.0020.0002] # HANUNOO LETTER KA -1724 ; [.3095.0020.0002] # HANUNOO LETTER GA -1725 ; [.3096.0020.0002] # HANUNOO LETTER NGA -1726 ; [.3097.0020.0002] # HANUNOO LETTER TA -1727 ; [.3098.0020.0002] # HANUNOO LETTER DA -1728 ; [.3099.0020.0002] # HANUNOO LETTER NA -1729 ; [.309A.0020.0002] # HANUNOO LETTER PA -172A ; [.309B.0020.0002] # HANUNOO LETTER BA -172B ; [.309C.0020.0002] # HANUNOO LETTER MA -172C ; [.309D.0020.0002] # HANUNOO LETTER YA -172D ; [.309E.0020.0002] # HANUNOO LETTER RA -172E ; [.309F.0020.0002] # HANUNOO LETTER LA -172F ; [.30A0.0020.0002] # HANUNOO LETTER WA -1730 ; [.30A1.0020.0002] # HANUNOO LETTER SA -1731 ; [.30A2.0020.0002] # HANUNOO LETTER HA -1732 ; [.30A3.0020.0002] # HANUNOO VOWEL SIGN I -1733 ; [.30A4.0020.0002] # HANUNOO VOWEL SIGN U -1734 ; [.30A5.0020.0002] # HANUNOO SIGN PAMUDPOD -1740 ; [.30A6.0020.0002] # BUHID LETTER A -1741 ; [.30A7.0020.0002] # BUHID LETTER I -1742 ; [.30A8.0020.0002] # BUHID LETTER U -1743 ; [.30A9.0020.0002] # BUHID LETTER KA -1744 ; [.30AA.0020.0002] # BUHID LETTER GA -1745 ; [.30AB.0020.0002] # BUHID LETTER NGA -1746 ; [.30AC.0020.0002] # BUHID LETTER TA -1747 ; [.30AD.0020.0002] # BUHID LETTER DA -1748 ; [.30AE.0020.0002] # BUHID LETTER NA -1749 ; [.30AF.0020.0002] # BUHID LETTER PA -174A ; [.30B0.0020.0002] # BUHID LETTER BA -174B ; [.30B1.0020.0002] # BUHID LETTER MA -174C ; [.30B2.0020.0002] # BUHID LETTER YA -174D ; [.30B3.0020.0002] # BUHID LETTER RA -174E ; [.30B4.0020.0002] # BUHID LETTER LA -174F ; [.30B5.0020.0002] # BUHID LETTER WA -1750 ; [.30B6.0020.0002] # BUHID LETTER SA -1751 ; [.30B7.0020.0002] # BUHID LETTER HA -1752 ; [.30B8.0020.0002] # BUHID VOWEL SIGN I -1753 ; [.30B9.0020.0002] # BUHID VOWEL SIGN U -1760 ; [.30BA.0020.0002] # TAGBANWA LETTER A -1761 ; [.30BB.0020.0002] # TAGBANWA LETTER I -1762 ; [.30BC.0020.0002] # TAGBANWA LETTER U -1763 ; [.30BD.0020.0002] # TAGBANWA LETTER KA -1764 ; [.30BE.0020.0002] # TAGBANWA LETTER GA -1765 ; [.30BF.0020.0002] # TAGBANWA LETTER NGA -1766 ; [.30C0.0020.0002] # TAGBANWA LETTER TA -1767 ; [.30C1.0020.0002] # TAGBANWA LETTER DA -1768 ; [.30C2.0020.0002] # TAGBANWA LETTER NA -1769 ; [.30C3.0020.0002] # TAGBANWA LETTER PA -176A ; [.30C4.0020.0002] # TAGBANWA LETTER BA -176B ; [.30C5.0020.0002] # TAGBANWA LETTER MA -176C ; [.30C6.0020.0002] # TAGBANWA LETTER YA -176E ; [.30C7.0020.0002] # TAGBANWA LETTER LA -176F ; [.30C8.0020.0002] # TAGBANWA LETTER WA -1770 ; [.30C9.0020.0002] # TAGBANWA LETTER SA -1772 ; [.30CA.0020.0002] # TAGBANWA VOWEL SIGN I -1773 ; [.30CB.0020.0002] # TAGBANWA VOWEL SIGN U -1A00 ; [.30CC.0020.0002] # BUGINESE LETTER KA -1A01 ; [.30CD.0020.0002] # BUGINESE LETTER GA -1A02 ; [.30CE.0020.0002] # BUGINESE LETTER NGA -1A03 ; [.30CF.0020.0002] # BUGINESE LETTER NGKA -1A04 ; [.30D0.0020.0002] # BUGINESE LETTER PA -1A05 ; [.30D1.0020.0002] # BUGINESE LETTER BA -1A06 ; [.30D2.0020.0002] # BUGINESE LETTER MA -1A07 ; [.30D3.0020.0002] # BUGINESE LETTER MPA -1A08 ; [.30D4.0020.0002] # BUGINESE LETTER TA -1A09 ; [.30D5.0020.0002] # BUGINESE LETTER DA -1A0A ; [.30D6.0020.0002] # BUGINESE LETTER NA -1A0B ; [.30D7.0020.0002] # BUGINESE LETTER NRA -1A0C ; [.30D8.0020.0002] # BUGINESE LETTER CA -1A0D ; [.30D9.0020.0002] # BUGINESE LETTER JA -1A0E ; [.30DA.0020.0002] # BUGINESE LETTER NYA -1A0F ; [.30DB.0020.0002] # BUGINESE LETTER NYCA -1A10 ; [.30DC.0020.0002] # BUGINESE LETTER YA -1A11 ; [.30DD.0020.0002] # BUGINESE LETTER RA -1A12 ; [.30DE.0020.0002] # BUGINESE LETTER LA -1A13 ; [.30DF.0020.0002] # BUGINESE LETTER VA -1A14 ; [.30E0.0020.0002] # BUGINESE LETTER SA -1A15 ; [.30E1.0020.0002] # BUGINESE LETTER A -1A16 ; [.30E2.0020.0002] # BUGINESE LETTER HA -1A17 ; [.30E3.0020.0002] # BUGINESE VOWEL SIGN I -1A18 ; [.30E4.0020.0002] # BUGINESE VOWEL SIGN U -1A19 ; [.30E5.0020.0002] # BUGINESE VOWEL SIGN E -1A1A ; [.30E6.0020.0002] # BUGINESE VOWEL SIGN O -1A1B ; [.30E7.0020.0002] # BUGINESE VOWEL SIGN AE -1BC0 ; [.30E8.0020.0002] # BATAK LETTER A -1BC1 ; [.30E8.0020.0004] # BATAK LETTER SIMALUNGUN A -1BC2 ; [.30E9.0020.0002] # BATAK LETTER HA -1BC3 ; [.30E9.0020.0004] # BATAK LETTER SIMALUNGUN HA -1BC4 ; [.30E9.0020.0004] # BATAK LETTER MANDAILING HA -1BC5 ; [.30EA.0020.0002] # BATAK LETTER BA -1BC6 ; [.30EA.0020.0004] # BATAK LETTER KARO BA -1BC7 ; [.30EB.0020.0002] # BATAK LETTER PA -1BC8 ; [.30EB.0020.0004] # BATAK LETTER SIMALUNGUN PA -1BC9 ; [.30EC.0020.0002] # BATAK LETTER NA -1BCA ; [.30EC.0020.0004] # BATAK LETTER MANDAILING NA -1BCB ; [.30ED.0020.0002] # BATAK LETTER WA -1BCC ; [.30ED.0020.0004] # BATAK LETTER SIMALUNGUN WA -1BCD ; [.30ED.0020.0004] # BATAK LETTER PAKPAK WA -1BCE ; [.30EE.0020.0002] # BATAK LETTER GA -1BCF ; [.30EE.0020.0004] # BATAK LETTER SIMALUNGUN GA -1BD0 ; [.30EF.0020.0002] # BATAK LETTER JA -1BD1 ; [.30F0.0020.0002] # BATAK LETTER DA -1BD2 ; [.30F1.0020.0002] # BATAK LETTER RA -1BD3 ; [.30F1.0020.0004] # BATAK LETTER SIMALUNGUN RA -1BD4 ; [.30F2.0020.0002] # BATAK LETTER MA -1BD5 ; [.30F2.0020.0004] # BATAK LETTER SIMALUNGUN MA -1BD6 ; [.30F3.0020.0002] # BATAK LETTER SOUTHERN TA -1BD7 ; [.30F3.0020.0004] # BATAK LETTER NORTHERN TA -1BD8 ; [.30F4.0020.0002] # BATAK LETTER SA -1BD9 ; [.30F4.0020.0004] # BATAK LETTER SIMALUNGUN SA -1BDA ; [.30F4.0020.0004] # BATAK LETTER MANDAILING SA -1BDB ; [.30F5.0020.0002] # BATAK LETTER YA -1BDC ; [.30F5.0020.0004] # BATAK LETTER SIMALUNGUN YA -1BDD ; [.30F6.0020.0002] # BATAK LETTER NGA -1BDE ; [.30F7.0020.0002] # BATAK LETTER LA -1BDF ; [.30F7.0020.0004] # BATAK LETTER SIMALUNGUN LA -1BE0 ; [.30F8.0020.0002] # BATAK LETTER NYA -1BE1 ; [.30F9.0020.0002] # BATAK LETTER CA -1BE2 ; [.30FA.0020.0002] # BATAK LETTER NDA -1BE3 ; [.30FB.0020.0002] # BATAK LETTER MBA -1BE4 ; [.30FC.0020.0002] # BATAK LETTER I -1BE5 ; [.30FD.0020.0002] # BATAK LETTER U -1BE7 ; [.30FE.0020.0002] # BATAK VOWEL SIGN E -1BE8 ; [.30FE.0020.0004] # BATAK VOWEL SIGN PAKPAK E -1BE9 ; [.30FF.0020.0002] # BATAK VOWEL SIGN EE -1BEA ; [.3100.0020.0002] # BATAK VOWEL SIGN I -1BEB ; [.3100.0020.0004] # BATAK VOWEL SIGN KARO I -1BEC ; [.3101.0020.0002] # BATAK VOWEL SIGN O -1BED ; [.3101.0020.0004] # BATAK VOWEL SIGN KARO O -1BEE ; [.3102.0020.0002] # BATAK VOWEL SIGN U -1BEF ; [.3102.0020.0004] # BATAK VOWEL SIGN U FOR SIMALUNGUN SA -1BF0 ; [.3103.0020.0002] # BATAK CONSONANT SIGN NG -1BF1 ; [.3104.0020.0002] # BATAK CONSONANT SIGN H -1BF2 ; [.3105.0020.0002] # BATAK PANGOLAT -1BF3 ; [.3106.0020.0002] # BATAK PANONGONAN -A930 ; [.3107.0020.0002] # REJANG LETTER KA -A931 ; [.3108.0020.0002] # REJANG LETTER GA -A932 ; [.3109.0020.0002] # REJANG LETTER NGA -A933 ; [.310A.0020.0002] # REJANG LETTER TA -A934 ; [.310B.0020.0002] # REJANG LETTER DA -A935 ; [.310C.0020.0002] # REJANG LETTER NA -A936 ; [.310D.0020.0002] # REJANG LETTER PA -A937 ; [.310E.0020.0002] # REJANG LETTER BA -A938 ; [.310F.0020.0002] # REJANG LETTER MA -A939 ; [.3110.0020.0002] # REJANG LETTER CA -A93A ; [.3111.0020.0002] # REJANG LETTER JA -A93B ; [.3112.0020.0002] # REJANG LETTER NYA -A93C ; [.3113.0020.0002] # REJANG LETTER SA -A93D ; [.3114.0020.0002] # REJANG LETTER RA -A93E ; [.3115.0020.0002] # REJANG LETTER LA -A93F ; [.3116.0020.0002] # REJANG LETTER YA -A940 ; [.3117.0020.0002] # REJANG LETTER WA -A941 ; [.3118.0020.0002] # REJANG LETTER HA -A942 ; [.3119.0020.0002] # REJANG LETTER MBA -A943 ; [.311A.0020.0002] # REJANG LETTER NGGA -A944 ; [.311B.0020.0002] # REJANG LETTER NDA -A945 ; [.311C.0020.0002] # REJANG LETTER NYJA -A946 ; [.311D.0020.0002] # REJANG LETTER A -A947 ; [.311E.0020.0002] # REJANG VOWEL SIGN I -A948 ; [.311F.0020.0002] # REJANG VOWEL SIGN U -A949 ; [.3120.0020.0002] # REJANG VOWEL SIGN E -A94A ; [.3121.0020.0002] # REJANG VOWEL SIGN AI -A94B ; [.3122.0020.0002] # REJANG VOWEL SIGN O -A94C ; [.3123.0020.0002] # REJANG VOWEL SIGN AU -A94D ; [.3124.0020.0002] # REJANG VOWEL SIGN EU -A94E ; [.3125.0020.0002] # REJANG VOWEL SIGN EA -A94F ; [.3126.0020.0002] # REJANG CONSONANT SIGN NG -A950 ; [.3127.0020.0002] # REJANG CONSONANT SIGN N -A951 ; [.3128.0020.0002] # REJANG CONSONANT SIGN R -A952 ; [.3129.0020.0002] # REJANG CONSONANT SIGN H -A953 ; [.312A.0020.0002] # REJANG VIRAMA -A90A ; [.312B.0020.0002] # KAYAH LI LETTER KA -A90B ; [.312C.0020.0002] # KAYAH LI LETTER KHA -A90C ; [.312D.0020.0002] # KAYAH LI LETTER GA -A90D ; [.312E.0020.0002] # KAYAH LI LETTER NGA -A90E ; [.312F.0020.0002] # KAYAH LI LETTER SA -A90F ; [.3130.0020.0002] # KAYAH LI LETTER SHA -A910 ; [.3131.0020.0002] # KAYAH LI LETTER ZA -A911 ; [.3132.0020.0002] # KAYAH LI LETTER NYA -A912 ; [.3133.0020.0002] # KAYAH LI LETTER TA -A913 ; [.3134.0020.0002] # KAYAH LI LETTER HTA -A914 ; [.3135.0020.0002] # KAYAH LI LETTER NA -A915 ; [.3136.0020.0002] # KAYAH LI LETTER PA -A916 ; [.3137.0020.0002] # KAYAH LI LETTER PHA -A917 ; [.3138.0020.0002] # KAYAH LI LETTER MA -A918 ; [.3139.0020.0002] # KAYAH LI LETTER DA -A919 ; [.313A.0020.0002] # KAYAH LI LETTER BA -A91A ; [.313B.0020.0002] # KAYAH LI LETTER RA -A91B ; [.313C.0020.0002] # KAYAH LI LETTER YA -A91C ; [.313D.0020.0002] # KAYAH LI LETTER LA -A91D ; [.313E.0020.0002] # KAYAH LI LETTER WA -A91E ; [.313F.0020.0002] # KAYAH LI LETTER THA -A91F ; [.3140.0020.0002] # KAYAH LI LETTER HA -A920 ; [.3141.0020.0002] # KAYAH LI LETTER VA -A921 ; [.3142.0020.0002] # KAYAH LI LETTER CA -A922 ; [.3143.0020.0002] # KAYAH LI LETTER A -A923 ; [.3144.0020.0002] # KAYAH LI LETTER OE -A924 ; [.3145.0020.0002] # KAYAH LI LETTER I -A925 ; [.3146.0020.0002] # KAYAH LI LETTER OO -A926 ; [.3147.0020.0002] # KAYAH LI VOWEL UE -A927 ; [.3148.0020.0002] # KAYAH LI VOWEL E -A928 ; [.3149.0020.0002] # KAYAH LI VOWEL U -A929 ; [.314A.0020.0002] # KAYAH LI VOWEL EE -A92A ; [.314B.0020.0002] # KAYAH LI VOWEL O -1000 ; [.314C.0020.0002] # MYANMAR LETTER KA -1075 ; [.314D.0020.0002] # MYANMAR LETTER SHAN KA -1001 ; [.314E.0020.0002] # MYANMAR LETTER KHA -1076 ; [.314F.0020.0002] # MYANMAR LETTER SHAN KHA -1002 ; [.3150.0020.0002] # MYANMAR LETTER GA -1077 ; [.3151.0020.0002] # MYANMAR LETTER SHAN GA -AA60 ; [.3152.0020.0002] # MYANMAR LETTER KHAMTI GA -A9E9 ; [.3153.0020.0002] # MYANMAR LETTER TAI LAING GA -1003 ; [.3154.0020.0002] # MYANMAR LETTER GHA -A9E0 ; [.3155.0020.0002] # MYANMAR LETTER SHAN GHA -A9EA ; [.3156.0020.0002] # MYANMAR LETTER TAI LAING GHA -1004 ; [.3157.0020.0002] # MYANMAR LETTER NGA -105A ; [.3158.0020.0002] # MYANMAR LETTER MON NGA -1005 ; [.3159.0020.0002] # MYANMAR LETTER CA -1078 ; [.315A.0020.0002] # MYANMAR LETTER SHAN CA -AA61 ; [.315B.0020.0002] # MYANMAR LETTER KHAMTI CA -1006 ; [.315C.0020.0002] # MYANMAR LETTER CHA -A9E1 ; [.315D.0020.0002] # MYANMAR LETTER SHAN CHA -AA62 ; [.315E.0020.0002] # MYANMAR LETTER KHAMTI CHA -AA7E ; [.315F.0020.0002] # MYANMAR LETTER SHWE PALAUNG CHA -1007 ; [.3160.0020.0002] # MYANMAR LETTER JA -AA63 ; [.3161.0020.0002] # MYANMAR LETTER KHAMTI JA -A9EB ; [.3162.0020.0002] # MYANMAR LETTER TAI LAING JA -1079 ; [.3163.0020.0002] # MYANMAR LETTER SHAN ZA -AA72 ; [.3164.0020.0002] # MYANMAR LETTER KHAMTI ZA -1008 ; [.3165.0020.0002] # MYANMAR LETTER JHA -105B ; [.3166.0020.0002] # MYANMAR LETTER MON JHA -A9E2 ; [.3167.0020.0002] # MYANMAR LETTER SHAN JHA -AA64 ; [.3168.0020.0002] # MYANMAR LETTER KHAMTI JHA -A9EC ; [.3169.0020.0002] # MYANMAR LETTER TAI LAING JHA -1061 ; [.316A.0020.0002] # MYANMAR LETTER SGAW KAREN SHA -AA7F ; [.316B.0020.0002] # MYANMAR LETTER SHWE PALAUNG SHA -1009 ; [.316C.0020.0002] # MYANMAR LETTER NYA -107A ; [.316D.0020.0002] # MYANMAR LETTER SHAN NYA -AA65 ; [.316E.0020.0002] # MYANMAR LETTER KHAMTI NYA -A9E7 ; [.316F.0020.0002] # MYANMAR LETTER TAI LAING NYA -100A ; [.3170.0020.0002] # MYANMAR LETTER NNYA -100B ; [.3171.0020.0002] # MYANMAR LETTER TTA -AA66 ; [.3172.0020.0002] # MYANMAR LETTER KHAMTI TTA -100C ; [.3173.0020.0002] # MYANMAR LETTER TTHA -AA67 ; [.3174.0020.0002] # MYANMAR LETTER KHAMTI TTHA -100D ; [.3175.0020.0002] # MYANMAR LETTER DDA -AA68 ; [.3176.0020.0002] # MYANMAR LETTER KHAMTI DDA -A9ED ; [.3177.0020.0002] # MYANMAR LETTER TAI LAING DDA -100E ; [.3178.0020.0002] # MYANMAR LETTER DDHA -AA69 ; [.3179.0020.0002] # MYANMAR LETTER KHAMTI DDHA -A9EE ; [.317A.0020.0002] # MYANMAR LETTER TAI LAING DDHA -100F ; [.317B.0020.0002] # MYANMAR LETTER NNA -106E ; [.317C.0020.0002] # MYANMAR LETTER EASTERN PWO KAREN NNA -A9E3 ; [.317D.0020.0002] # MYANMAR LETTER SHAN NNA -A9EF ; [.317E.0020.0002] # MYANMAR LETTER TAI LAING NNA -1010 ; [.317F.0020.0002] # MYANMAR LETTER TA -1011 ; [.3180.0020.0002] # MYANMAR LETTER THA -1012 ; [.3181.0020.0002] # MYANMAR LETTER DA -107B ; [.3182.0020.0002] # MYANMAR LETTER SHAN DA -A9FB ; [.3183.0020.0002] # MYANMAR LETTER TAI LAING DA -1013 ; [.3184.0020.0002] # MYANMAR LETTER DHA -AA6A ; [.3185.0020.0002] # MYANMAR LETTER KHAMTI DHA -A9FC ; [.3186.0020.0002] # MYANMAR LETTER TAI LAING DHA -1014 ; [.3187.0020.0002] # MYANMAR LETTER NA -107C ; [.3188.0020.0002] # MYANMAR LETTER SHAN NA -AA6B ; [.3189.0020.0002] # MYANMAR LETTER KHAMTI NA -105E ; [.318A.0020.0002] # MYANMAR CONSONANT SIGN MON MEDIAL NA -1015 ; [.318B.0020.0002] # MYANMAR LETTER PA -1016 ; [.318C.0020.0002] # MYANMAR LETTER PHA -107D ; [.318D.0020.0002] # MYANMAR LETTER SHAN PHA -107E ; [.318E.0020.0002] # MYANMAR LETTER SHAN FA -AA6F ; [.318F.0020.0002] # MYANMAR LETTER KHAMTI FA -108E ; [.3190.0020.0002] # MYANMAR LETTER RUMAI PALAUNG FA -A9E8 ; [.3191.0020.0002] # MYANMAR LETTER TAI LAING FA -1017 ; [.3192.0020.0002] # MYANMAR LETTER BA -107F ; [.3193.0020.0002] # MYANMAR LETTER SHAN BA -A9FD ; [.3194.0020.0002] # MYANMAR LETTER TAI LAING BA -1018 ; [.3195.0020.0002] # MYANMAR LETTER BHA -A9E4 ; [.3196.0020.0002] # MYANMAR LETTER SHAN BHA -A9FE ; [.3197.0020.0002] # MYANMAR LETTER TAI LAING BHA -1019 ; [.3198.0020.0002] # MYANMAR LETTER MA -105F ; [.3199.0020.0002] # MYANMAR CONSONANT SIGN MON MEDIAL MA -101A ; [.319A.0020.0002] # MYANMAR LETTER YA -103B ; [.319B.0020.0002] # MYANMAR CONSONANT SIGN MEDIAL YA -101B ; [.319C.0020.0002] # MYANMAR LETTER RA -AA73 ; [.319D.0020.0002] # MYANMAR LETTER KHAMTI RA -AA7A ; [.319E.0020.0002] # MYANMAR LETTER AITON RA -103C ; [.319F.0020.0002] # MYANMAR CONSONANT SIGN MEDIAL RA -101C ; [.31A0.0020.0002] # MYANMAR LETTER LA -1060 ; [.31A1.0020.0002] # MYANMAR CONSONANT SIGN MON MEDIAL LA -101D ; [.31A2.0020.0002] # MYANMAR LETTER WA -103D ; [.31A3.0020.0002] # MYANMAR CONSONANT SIGN MEDIAL WA -1082 ; [.31A4.0020.0002] # MYANMAR CONSONANT SIGN SHAN MEDIAL WA -1080 ; [.31A5.0020.0002] # MYANMAR LETTER SHAN THA -1050 ; [.31A6.0020.0002] # MYANMAR LETTER SHA -1051 ; [.31A7.0020.0002] # MYANMAR LETTER SSA -1065 ; [.31A8.0020.0002] # MYANMAR LETTER WESTERN PWO KAREN THA -101E ; [.31A9.0020.0002] # MYANMAR LETTER SA -103F ; [.31A9.0020.0004][.31E2.0020.0004][.31A9.0020.0004] # MYANMAR LETTER GREAT SA -AA6C ; [.31AA.0020.0002] # MYANMAR LETTER KHAMTI SA -101F ; [.31AB.0020.0002] # MYANMAR LETTER HA -1081 ; [.31AC.0020.0002] # MYANMAR LETTER SHAN HA -AA6D ; [.31AD.0020.0002] # MYANMAR LETTER KHAMTI HA -103E ; [.31AE.0020.0002] # MYANMAR CONSONANT SIGN MEDIAL HA -AA6E ; [.31AF.0020.0002] # MYANMAR LETTER KHAMTI HHA -AA71 ; [.31B0.0020.0002] # MYANMAR LETTER KHAMTI XA -1020 ; [.31B1.0020.0002] # MYANMAR LETTER LLA -A9FA ; [.31B2.0020.0002] # MYANMAR LETTER TAI LAING LLA -105C ; [.31B3.0020.0002] # MYANMAR LETTER MON BBA -105D ; [.31B4.0020.0002] # MYANMAR LETTER MON BBE -106F ; [.31B5.0020.0002] # MYANMAR LETTER EASTERN PWO KAREN YWA -1070 ; [.31B6.0020.0002] # MYANMAR LETTER EASTERN PWO KAREN GHWA -1066 ; [.31B7.0020.0002] # MYANMAR LETTER WESTERN PWO KAREN PWA -1021 ; [.31B8.0020.0002] # MYANMAR LETTER A -1022 ; [.31B9.0020.0002] # MYANMAR LETTER SHAN A -1023 ; [.31BA.0020.0002] # MYANMAR LETTER I -1024 ; [.31BB.0020.0002] # MYANMAR LETTER II -1025 ; [.31BC.0020.0002] # MYANMAR LETTER U -1026 ; [.31BD.0020.0002] # MYANMAR LETTER UU -1025 102E ; [.31BD.0020.0002] # MYANMAR LETTER UU -1052 ; [.31BE.0020.0002] # MYANMAR LETTER VOCALIC R -1053 ; [.31BF.0020.0002] # MYANMAR LETTER VOCALIC RR -1054 ; [.31C0.0020.0002] # MYANMAR LETTER VOCALIC L -1055 ; [.31C1.0020.0002] # MYANMAR LETTER VOCALIC LL -1027 ; [.31C2.0020.0002] # MYANMAR LETTER E -1028 ; [.31C3.0020.0002] # MYANMAR LETTER MON E -1029 ; [.31C4.0020.0002] # MYANMAR LETTER O -102A ; [.31C5.0020.0002] # MYANMAR LETTER AU -102C ; [.31C6.0020.0002] # MYANMAR VOWEL SIGN AA -102B ; [.31C6.0020.0004] # MYANMAR VOWEL SIGN TALL AA -1083 ; [.31C7.0020.0002] # MYANMAR VOWEL SIGN SHAN AA -1072 ; [.31C8.0020.0002] # MYANMAR VOWEL SIGN KAYAH OE -109C ; [.31C9.0020.0002] # MYANMAR VOWEL SIGN AITON A -102D ; [.31CA.0020.0002] # MYANMAR VOWEL SIGN I -1071 ; [.31CB.0020.0002] # MYANMAR VOWEL SIGN GEBA KAREN I -102E ; [.31CC.0020.0002] # MYANMAR VOWEL SIGN II -1033 ; [.31CD.0020.0002] # MYANMAR VOWEL SIGN MON II -102F ; [.31CE.0020.0002] # MYANMAR VOWEL SIGN U -1073 ; [.31CF.0020.0002] # MYANMAR VOWEL SIGN KAYAH U -1074 ; [.31D0.0020.0002] # MYANMAR VOWEL SIGN KAYAH EE -1030 ; [.31D1.0020.0002] # MYANMAR VOWEL SIGN UU -1056 ; [.31D2.0020.0002] # MYANMAR VOWEL SIGN VOCALIC R -1057 ; [.31D3.0020.0002] # MYANMAR VOWEL SIGN VOCALIC RR -1058 ; [.31D4.0020.0002] # MYANMAR VOWEL SIGN VOCALIC L -1059 ; [.31D5.0020.0002] # MYANMAR VOWEL SIGN VOCALIC LL -1031 ; [.31D6.0020.0002] # MYANMAR VOWEL SIGN E -1084 ; [.31D7.0020.0002] # MYANMAR VOWEL SIGN SHAN E -1035 ; [.31D8.0020.0002] # MYANMAR VOWEL SIGN E ABOVE -1085 ; [.31D9.0020.0002] # MYANMAR VOWEL SIGN SHAN E ABOVE -1032 ; [.31DA.0020.0002] # MYANMAR VOWEL SIGN AI -109D ; [.31DB.0020.0002] # MYANMAR VOWEL SIGN AITON AI -1034 ; [.31DC.0020.0002] # MYANMAR VOWEL SIGN MON O -1062 ; [.31DD.0020.0002] # MYANMAR VOWEL SIGN SGAW KAREN EU -1067 ; [.31DE.0020.0002] # MYANMAR VOWEL SIGN WESTERN PWO KAREN EU -1068 ; [.31DF.0020.0002] # MYANMAR VOWEL SIGN WESTERN PWO KAREN UE -A9E5 ; [.31E0.0020.0002] # MYANMAR SIGN SHAN SAW -1086 ; [.31E1.0020.0002] # MYANMAR VOWEL SIGN SHAN FINAL Y -1039 ; [.31E2.0020.0002] # MYANMAR SIGN VIRAMA -103A ; [.31E3.0020.0002] # MYANMAR SIGN ASAT -1063 ; [.31E4.0020.0002] # MYANMAR TONE MARK SGAW KAREN HATHI -1064 ; [.31E5.0020.0002] # MYANMAR TONE MARK SGAW KAREN KE PHO -1069 ; [.31E6.0020.0002] # MYANMAR SIGN WESTERN PWO KAREN TONE-1 -106A ; [.31E7.0020.0002] # MYANMAR SIGN WESTERN PWO KAREN TONE-2 -106B ; [.31E8.0020.0002] # MYANMAR SIGN WESTERN PWO KAREN TONE-3 -106C ; [.31E9.0020.0002] # MYANMAR SIGN WESTERN PWO KAREN TONE-4 -106D ; [.31EA.0020.0002] # MYANMAR SIGN WESTERN PWO KAREN TONE-5 -1087 ; [.31EB.0020.0002] # MYANMAR SIGN SHAN TONE-2 -108B ; [.31EC.0020.0002] # MYANMAR SIGN SHAN COUNCIL TONE-2 -1088 ; [.31ED.0020.0002] # MYANMAR SIGN SHAN TONE-3 -108C ; [.31EE.0020.0002] # MYANMAR SIGN SHAN COUNCIL TONE-3 -108D ; [.31EF.0020.0002] # MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE -1089 ; [.31F0.0020.0002] # MYANMAR SIGN SHAN TONE-5 -108A ; [.31F1.0020.0002] # MYANMAR SIGN SHAN TONE-6 -108F ; [.31F2.0020.0002] # MYANMAR SIGN RUMAI PALAUNG TONE-5 -109A ; [.31F3.0020.0002] # MYANMAR SIGN KHAMTI TONE-1 -109B ; [.31F4.0020.0002] # MYANMAR SIGN KHAMTI TONE-3 -AA7B ; [.31F5.0020.0002] # MYANMAR SIGN PAO KAREN TONE -AA7C ; [.31F6.0020.0002] # MYANMAR SIGN TAI LAING TONE-2 -AA7D ; [.31F7.0020.0002] # MYANMAR SIGN TAI LAING TONE-5 -AA74 ; [.31F8.0020.0002] # MYANMAR LOGOGRAM KHAMTI OAY -AA75 ; [.31F9.0020.0002] # MYANMAR LOGOGRAM KHAMTI QN -AA76 ; [.31FA.0020.0002] # MYANMAR LOGOGRAM KHAMTI HM -11103 ; [.31FB.0020.0002] # CHAKMA LETTER AA -11104 ; [.31FC.0020.0002] # CHAKMA LETTER I -11105 ; [.31FD.0020.0002] # CHAKMA LETTER U -11106 ; [.31FE.0020.0002] # CHAKMA LETTER E -11107 ; [.31FF.0020.0002] # CHAKMA LETTER KAA -11108 ; [.3200.0020.0002] # CHAKMA LETTER KHAA -11109 ; [.3201.0020.0002] # CHAKMA LETTER GAA -1110A ; [.3202.0020.0002] # CHAKMA LETTER GHAA -1110B ; [.3203.0020.0002] # CHAKMA LETTER NGAA -1110C ; [.3204.0020.0002] # CHAKMA LETTER CAA -1110D ; [.3205.0020.0002] # CHAKMA LETTER CHAA -1110E ; [.3206.0020.0002] # CHAKMA LETTER JAA -1110F ; [.3207.0020.0002] # CHAKMA LETTER JHAA -11110 ; [.3208.0020.0002] # CHAKMA LETTER NYAA -11111 ; [.3209.0020.0002] # CHAKMA LETTER TTAA -11112 ; [.320A.0020.0002] # CHAKMA LETTER TTHAA -11113 ; [.320B.0020.0002] # CHAKMA LETTER DDAA -11114 ; [.320C.0020.0002] # CHAKMA LETTER DDHAA -11115 ; [.320D.0020.0002] # CHAKMA LETTER NNAA -11116 ; [.320E.0020.0002] # CHAKMA LETTER TAA -11117 ; [.320F.0020.0002] # CHAKMA LETTER THAA -11118 ; [.3210.0020.0002] # CHAKMA LETTER DAA -11119 ; [.3211.0020.0002] # CHAKMA LETTER DHAA -1111A ; [.3212.0020.0002] # CHAKMA LETTER NAA -1111B ; [.3213.0020.0002] # CHAKMA LETTER PAA -1111C ; [.3214.0020.0002] # CHAKMA LETTER PHAA -1111D ; [.3215.0020.0002] # CHAKMA LETTER BAA -1111E ; [.3216.0020.0002] # CHAKMA LETTER BHAA -1111F ; [.3217.0020.0002] # CHAKMA LETTER MAA -11120 ; [.3218.0020.0002] # CHAKMA LETTER YYAA -11121 ; [.3219.0020.0002] # CHAKMA LETTER YAA -11122 ; [.321A.0020.0002] # CHAKMA LETTER RAA -11123 ; [.321B.0020.0002] # CHAKMA LETTER LAA -11124 ; [.321C.0020.0002] # CHAKMA LETTER WAA -11125 ; [.321D.0020.0002] # CHAKMA LETTER SAA -11126 ; [.321E.0020.0002] # CHAKMA LETTER HAA -11127 ; [.321F.0020.0002] # CHAKMA VOWEL SIGN A -11128 ; [.3220.0020.0002] # CHAKMA VOWEL SIGN I -11129 ; [.3221.0020.0002] # CHAKMA VOWEL SIGN II -1112A ; [.3222.0020.0002] # CHAKMA VOWEL SIGN U -1112B ; [.3223.0020.0002] # CHAKMA VOWEL SIGN UU -1112C ; [.3224.0020.0002] # CHAKMA VOWEL SIGN E -1112D ; [.3225.0020.0002] # CHAKMA VOWEL SIGN AI -1112E ; [.3226.0020.0002] # CHAKMA VOWEL SIGN O -11131 11127 ; [.3226.0020.0002] # CHAKMA VOWEL SIGN O -1112F ; [.3227.0020.0002] # CHAKMA VOWEL SIGN AU -11132 11127 ; [.3227.0020.0002] # CHAKMA VOWEL SIGN AU -11130 ; [.3228.0020.0002] # CHAKMA VOWEL SIGN OI -11131 ; [.3229.0020.0002] # CHAKMA O MARK -11132 ; [.322A.0020.0002] # CHAKMA AU MARK -11133 ; [.322B.0020.0002] # CHAKMA VIRAMA -11134 ; [.322C.0020.0002] # CHAKMA MAAYYAA -1780 ; [.322D.0020.0002] # KHMER LETTER KA -1781 ; [.322E.0020.0002] # KHMER LETTER KHA -1782 ; [.322F.0020.0002] # KHMER LETTER KO -1783 ; [.3230.0020.0002] # KHMER LETTER KHO -1784 ; [.3231.0020.0002] # KHMER LETTER NGO -1785 ; [.3232.0020.0002] # KHMER LETTER CA -1786 ; [.3233.0020.0002] # KHMER LETTER CHA -1787 ; [.3234.0020.0002] # KHMER LETTER CO -1788 ; [.3235.0020.0002] # KHMER LETTER CHO -1789 ; [.3236.0020.0002] # KHMER LETTER NYO -178A ; [.3237.0020.0002] # KHMER LETTER DA -178B ; [.3238.0020.0002] # KHMER LETTER TTHA -178C ; [.3239.0020.0002] # KHMER LETTER DO -178D ; [.323A.0020.0002] # KHMER LETTER TTHO -178E ; [.323B.0020.0002] # KHMER LETTER NNO -178F ; [.323C.0020.0002] # KHMER LETTER TA -1790 ; [.323D.0020.0002] # KHMER LETTER THA -1791 ; [.323E.0020.0002] # KHMER LETTER TO -1792 ; [.323F.0020.0002] # KHMER LETTER THO -1793 ; [.3240.0020.0002] # KHMER LETTER NO -1794 ; [.3241.0020.0002] # KHMER LETTER BA -1795 ; [.3242.0020.0002] # KHMER LETTER PHA -1796 ; [.3243.0020.0002] # KHMER LETTER PO -1797 ; [.3244.0020.0002] # KHMER LETTER PHO -1798 ; [.3245.0020.0002] # KHMER LETTER MO -1799 ; [.3246.0020.0002] # KHMER LETTER YO -179A ; [.3247.0020.0002] # KHMER LETTER RO -179B ; [.3248.0020.0002] # KHMER LETTER LO -179C ; [.3249.0020.0002] # KHMER LETTER VO -179D ; [.324A.0020.0002] # KHMER LETTER SHA -179E ; [.324B.0020.0002] # KHMER LETTER SSO -179F ; [.324C.0020.0002] # KHMER LETTER SA -17A0 ; [.324D.0020.0002] # KHMER LETTER HA -17A1 ; [.324E.0020.0002] # KHMER LETTER LA -17A2 ; [.324F.0020.0002] # KHMER LETTER QA -17DC ; [.3250.0020.0002] # KHMER SIGN AVAKRAHASANYA -17A3 ; [.3251.0020.0002] # KHMER INDEPENDENT VOWEL QAQ -17A4 ; [.3252.0020.0002] # KHMER INDEPENDENT VOWEL QAA -17A5 ; [.3253.0020.0002] # KHMER INDEPENDENT VOWEL QI -17A6 ; [.3254.0020.0002] # KHMER INDEPENDENT VOWEL QII -17A7 ; [.3255.0020.0002] # KHMER INDEPENDENT VOWEL QU -17A8 ; [.3256.0020.0002] # KHMER INDEPENDENT VOWEL QUK -17A9 ; [.3257.0020.0002] # KHMER INDEPENDENT VOWEL QUU -17AA ; [.3258.0020.0002] # KHMER INDEPENDENT VOWEL QUUV -17AB ; [.3259.0020.0002] # KHMER INDEPENDENT VOWEL RY -17AC ; [.325A.0020.0002] # KHMER INDEPENDENT VOWEL RYY -17AD ; [.325B.0020.0002] # KHMER INDEPENDENT VOWEL LY -17AE ; [.325C.0020.0002] # KHMER INDEPENDENT VOWEL LYY -17AF ; [.325D.0020.0002] # KHMER INDEPENDENT VOWEL QE -17B0 ; [.325E.0020.0002] # KHMER INDEPENDENT VOWEL QAI -17B1 ; [.325F.0020.0002] # KHMER INDEPENDENT VOWEL QOO TYPE ONE -17B2 ; [.3260.0020.0002] # KHMER INDEPENDENT VOWEL QOO TYPE TWO -17B3 ; [.3261.0020.0002] # KHMER INDEPENDENT VOWEL QAU -17B6 ; [.3262.0020.0002] # KHMER VOWEL SIGN AA -17B7 ; [.3263.0020.0002] # KHMER VOWEL SIGN I -17B8 ; [.3264.0020.0002] # KHMER VOWEL SIGN II -17B9 ; [.3265.0020.0002] # KHMER VOWEL SIGN Y -17BA ; [.3266.0020.0002] # KHMER VOWEL SIGN YY -17BB ; [.3267.0020.0002] # KHMER VOWEL SIGN U -17BC ; [.3268.0020.0002] # KHMER VOWEL SIGN UU -17BD ; [.3269.0020.0002] # KHMER VOWEL SIGN UA -17BE ; [.326A.0020.0002] # KHMER VOWEL SIGN OE -17BF ; [.326B.0020.0002] # KHMER VOWEL SIGN YA -17C0 ; [.326C.0020.0002] # KHMER VOWEL SIGN IE -17C1 ; [.326D.0020.0002] # KHMER VOWEL SIGN E -17C2 ; [.326E.0020.0002] # KHMER VOWEL SIGN AE -17C3 ; [.326F.0020.0002] # KHMER VOWEL SIGN AI -17C4 ; [.3270.0020.0002] # KHMER VOWEL SIGN OO -17C5 ; [.3271.0020.0002] # KHMER VOWEL SIGN AU -17D2 ; [.3272.0020.0002] # KHMER SIGN COENG -1950 ; [.3273.0020.0002] # TAI LE LETTER KA -1951 ; [.3274.0020.0002] # TAI LE LETTER XA -1952 ; [.3275.0020.0002] # TAI LE LETTER NGA -1953 ; [.3276.0020.0002] # TAI LE LETTER TSA -1954 ; [.3277.0020.0002] # TAI LE LETTER SA -1955 ; [.3278.0020.0002] # TAI LE LETTER YA -1956 ; [.3279.0020.0002] # TAI LE LETTER TA -1957 ; [.327A.0020.0002] # TAI LE LETTER THA -1958 ; [.327B.0020.0002] # TAI LE LETTER LA -1959 ; [.327C.0020.0002] # TAI LE LETTER PA -195A ; [.327D.0020.0002] # TAI LE LETTER PHA -195B ; [.327E.0020.0002] # TAI LE LETTER MA -195C ; [.327F.0020.0002] # TAI LE LETTER FA -195D ; [.3280.0020.0002] # TAI LE LETTER VA -195E ; [.3281.0020.0002] # TAI LE LETTER HA -195F ; [.3282.0020.0002] # TAI LE LETTER QA -1960 ; [.3283.0020.0002] # TAI LE LETTER KHA -1961 ; [.3284.0020.0002] # TAI LE LETTER TSHA -1962 ; [.3285.0020.0002] # TAI LE LETTER NA -1963 ; [.3286.0020.0002] # TAI LE LETTER A -1964 ; [.3287.0020.0002] # TAI LE LETTER I -1965 ; [.3288.0020.0002] # TAI LE LETTER EE -1966 ; [.3289.0020.0002] # TAI LE LETTER EH -1967 ; [.328A.0020.0002] # TAI LE LETTER U -1968 ; [.328B.0020.0002] # TAI LE LETTER OO -1969 ; [.328C.0020.0002] # TAI LE LETTER O -196A ; [.328D.0020.0002] # TAI LE LETTER UE -196B ; [.328E.0020.0002] # TAI LE LETTER E -196C ; [.328F.0020.0002] # TAI LE LETTER AUE -196D ; [.3290.0020.0002] # TAI LE LETTER AI -1970 ; [.3291.0020.0002] # TAI LE LETTER TONE-2 -1971 ; [.3292.0020.0002] # TAI LE LETTER TONE-3 -1972 ; [.3293.0020.0002] # TAI LE LETTER TONE-4 -1973 ; [.3294.0020.0002] # TAI LE LETTER TONE-5 -1974 ; [.3295.0020.0002] # TAI LE LETTER TONE-6 -1980 ; [.3296.0020.0002] # NEW TAI LUE LETTER HIGH QA -19B5 1980 ; [.3296.0020.0002][.32C7.0020.0002] # -19B6 1980 ; [.3296.0020.0002][.32C8.0020.0002] # -19B7 1980 ; [.3296.0020.0002][.32C9.0020.0002] # -19BA 1980 ; [.3296.0020.0002][.32CC.0020.0002] # -1981 ; [.3297.0020.0002] # NEW TAI LUE LETTER LOW QA -19B5 1981 ; [.3297.0020.0002][.32C7.0020.0002] # -19B6 1981 ; [.3297.0020.0002][.32C8.0020.0002] # -19B7 1981 ; [.3297.0020.0002][.32C9.0020.0002] # -19BA 1981 ; [.3297.0020.0002][.32CC.0020.0002] # -1982 ; [.3298.0020.0002] # NEW TAI LUE LETTER HIGH KA -19B5 1982 ; [.3298.0020.0002][.32C7.0020.0002] # -19B6 1982 ; [.3298.0020.0002][.32C8.0020.0002] # -19B7 1982 ; [.3298.0020.0002][.32C9.0020.0002] # -19BA 1982 ; [.3298.0020.0002][.32CC.0020.0002] # -1983 ; [.3299.0020.0002] # NEW TAI LUE LETTER HIGH XA -19B5 1983 ; [.3299.0020.0002][.32C7.0020.0002] # -19B6 1983 ; [.3299.0020.0002][.32C8.0020.0002] # -19B7 1983 ; [.3299.0020.0002][.32C9.0020.0002] # -19BA 1983 ; [.3299.0020.0002][.32CC.0020.0002] # -1984 ; [.329A.0020.0002] # NEW TAI LUE LETTER HIGH NGA -19B5 1984 ; [.329A.0020.0002][.32C7.0020.0002] # -19B6 1984 ; [.329A.0020.0002][.32C8.0020.0002] # -19B7 1984 ; [.329A.0020.0002][.32C9.0020.0002] # -19BA 1984 ; [.329A.0020.0002][.32CC.0020.0002] # -1985 ; [.329B.0020.0002] # NEW TAI LUE LETTER LOW KA -19B5 1985 ; [.329B.0020.0002][.32C7.0020.0002] # -19B6 1985 ; [.329B.0020.0002][.32C8.0020.0002] # -19B7 1985 ; [.329B.0020.0002][.32C9.0020.0002] # -19BA 1985 ; [.329B.0020.0002][.32CC.0020.0002] # -1986 ; [.329C.0020.0002] # NEW TAI LUE LETTER LOW XA -19B5 1986 ; [.329C.0020.0002][.32C7.0020.0002] # -19B6 1986 ; [.329C.0020.0002][.32C8.0020.0002] # -19B7 1986 ; [.329C.0020.0002][.32C9.0020.0002] # -19BA 1986 ; [.329C.0020.0002][.32CC.0020.0002] # -1987 ; [.329D.0020.0002] # NEW TAI LUE LETTER LOW NGA -19B5 1987 ; [.329D.0020.0002][.32C7.0020.0002] # -19B6 1987 ; [.329D.0020.0002][.32C8.0020.0002] # -19B7 1987 ; [.329D.0020.0002][.32C9.0020.0002] # -19BA 1987 ; [.329D.0020.0002][.32CC.0020.0002] # -1988 ; [.329E.0020.0002] # NEW TAI LUE LETTER HIGH TSA -19B5 1988 ; [.329E.0020.0002][.32C7.0020.0002] # -19B6 1988 ; [.329E.0020.0002][.32C8.0020.0002] # -19B7 1988 ; [.329E.0020.0002][.32C9.0020.0002] # -19BA 1988 ; [.329E.0020.0002][.32CC.0020.0002] # -1989 ; [.329F.0020.0002] # NEW TAI LUE LETTER HIGH SA -19B5 1989 ; [.329F.0020.0002][.32C7.0020.0002] # -19B6 1989 ; [.329F.0020.0002][.32C8.0020.0002] # -19B7 1989 ; [.329F.0020.0002][.32C9.0020.0002] # -19BA 1989 ; [.329F.0020.0002][.32CC.0020.0002] # -198A ; [.32A0.0020.0002] # NEW TAI LUE LETTER HIGH YA -19B5 198A ; [.32A0.0020.0002][.32C7.0020.0002] # -19B6 198A ; [.32A0.0020.0002][.32C8.0020.0002] # -19B7 198A ; [.32A0.0020.0002][.32C9.0020.0002] # -19BA 198A ; [.32A0.0020.0002][.32CC.0020.0002] # -198B ; [.32A1.0020.0002] # NEW TAI LUE LETTER LOW TSA -19B5 198B ; [.32A1.0020.0002][.32C7.0020.0002] # -19B6 198B ; [.32A1.0020.0002][.32C8.0020.0002] # -19B7 198B ; [.32A1.0020.0002][.32C9.0020.0002] # -19BA 198B ; [.32A1.0020.0002][.32CC.0020.0002] # -198C ; [.32A2.0020.0002] # NEW TAI LUE LETTER LOW SA -19B5 198C ; [.32A2.0020.0002][.32C7.0020.0002] # -19B6 198C ; [.32A2.0020.0002][.32C8.0020.0002] # -19B7 198C ; [.32A2.0020.0002][.32C9.0020.0002] # -19BA 198C ; [.32A2.0020.0002][.32CC.0020.0002] # -198D ; [.32A3.0020.0002] # NEW TAI LUE LETTER LOW YA -19B5 198D ; [.32A3.0020.0002][.32C7.0020.0002] # -19B6 198D ; [.32A3.0020.0002][.32C8.0020.0002] # -19B7 198D ; [.32A3.0020.0002][.32C9.0020.0002] # -19BA 198D ; [.32A3.0020.0002][.32CC.0020.0002] # -198E ; [.32A4.0020.0002] # NEW TAI LUE LETTER HIGH TA -19B5 198E ; [.32A4.0020.0002][.32C7.0020.0002] # -19B6 198E ; [.32A4.0020.0002][.32C8.0020.0002] # -19B7 198E ; [.32A4.0020.0002][.32C9.0020.0002] # -19BA 198E ; [.32A4.0020.0002][.32CC.0020.0002] # -198F ; [.32A5.0020.0002] # NEW TAI LUE LETTER HIGH THA -19B5 198F ; [.32A5.0020.0002][.32C7.0020.0002] # -19B6 198F ; [.32A5.0020.0002][.32C8.0020.0002] # -19B7 198F ; [.32A5.0020.0002][.32C9.0020.0002] # -19BA 198F ; [.32A5.0020.0002][.32CC.0020.0002] # -1990 ; [.32A6.0020.0002] # NEW TAI LUE LETTER HIGH NA -19B5 1990 ; [.32A6.0020.0002][.32C7.0020.0002] # -19B6 1990 ; [.32A6.0020.0002][.32C8.0020.0002] # -19B7 1990 ; [.32A6.0020.0002][.32C9.0020.0002] # -19BA 1990 ; [.32A6.0020.0002][.32CC.0020.0002] # -1991 ; [.32A7.0020.0002] # NEW TAI LUE LETTER LOW TA -19B5 1991 ; [.32A7.0020.0002][.32C7.0020.0002] # -19B6 1991 ; [.32A7.0020.0002][.32C8.0020.0002] # -19B7 1991 ; [.32A7.0020.0002][.32C9.0020.0002] # -19BA 1991 ; [.32A7.0020.0002][.32CC.0020.0002] # -1992 ; [.32A8.0020.0002] # NEW TAI LUE LETTER LOW THA -19B5 1992 ; [.32A8.0020.0002][.32C7.0020.0002] # -19B6 1992 ; [.32A8.0020.0002][.32C8.0020.0002] # -19B7 1992 ; [.32A8.0020.0002][.32C9.0020.0002] # -19BA 1992 ; [.32A8.0020.0002][.32CC.0020.0002] # -1993 ; [.32A9.0020.0002] # NEW TAI LUE LETTER LOW NA -19B5 1993 ; [.32A9.0020.0002][.32C7.0020.0002] # -19B6 1993 ; [.32A9.0020.0002][.32C8.0020.0002] # -19B7 1993 ; [.32A9.0020.0002][.32C9.0020.0002] # -19BA 1993 ; [.32A9.0020.0002][.32CC.0020.0002] # -1994 ; [.32AA.0020.0002] # NEW TAI LUE LETTER HIGH PA -19B5 1994 ; [.32AA.0020.0002][.32C7.0020.0002] # -19B6 1994 ; [.32AA.0020.0002][.32C8.0020.0002] # -19B7 1994 ; [.32AA.0020.0002][.32C9.0020.0002] # -19BA 1994 ; [.32AA.0020.0002][.32CC.0020.0002] # -1995 ; [.32AB.0020.0002] # NEW TAI LUE LETTER HIGH PHA -19B5 1995 ; [.32AB.0020.0002][.32C7.0020.0002] # -19B6 1995 ; [.32AB.0020.0002][.32C8.0020.0002] # -19B7 1995 ; [.32AB.0020.0002][.32C9.0020.0002] # -19BA 1995 ; [.32AB.0020.0002][.32CC.0020.0002] # -1996 ; [.32AC.0020.0002] # NEW TAI LUE LETTER HIGH MA -19B5 1996 ; [.32AC.0020.0002][.32C7.0020.0002] # -19B6 1996 ; [.32AC.0020.0002][.32C8.0020.0002] # -19B7 1996 ; [.32AC.0020.0002][.32C9.0020.0002] # -19BA 1996 ; [.32AC.0020.0002][.32CC.0020.0002] # -1997 ; [.32AD.0020.0002] # NEW TAI LUE LETTER LOW PA -19B5 1997 ; [.32AD.0020.0002][.32C7.0020.0002] # -19B6 1997 ; [.32AD.0020.0002][.32C8.0020.0002] # -19B7 1997 ; [.32AD.0020.0002][.32C9.0020.0002] # -19BA 1997 ; [.32AD.0020.0002][.32CC.0020.0002] # -1998 ; [.32AE.0020.0002] # NEW TAI LUE LETTER LOW PHA -19B5 1998 ; [.32AE.0020.0002][.32C7.0020.0002] # -19B6 1998 ; [.32AE.0020.0002][.32C8.0020.0002] # -19B7 1998 ; [.32AE.0020.0002][.32C9.0020.0002] # -19BA 1998 ; [.32AE.0020.0002][.32CC.0020.0002] # -1999 ; [.32AF.0020.0002] # NEW TAI LUE LETTER LOW MA -19B5 1999 ; [.32AF.0020.0002][.32C7.0020.0002] # -19B6 1999 ; [.32AF.0020.0002][.32C8.0020.0002] # -19B7 1999 ; [.32AF.0020.0002][.32C9.0020.0002] # -19BA 1999 ; [.32AF.0020.0002][.32CC.0020.0002] # -199A ; [.32B0.0020.0002] # NEW TAI LUE LETTER HIGH FA -19B5 199A ; [.32B0.0020.0002][.32C7.0020.0002] # -19B6 199A ; [.32B0.0020.0002][.32C8.0020.0002] # -19B7 199A ; [.32B0.0020.0002][.32C9.0020.0002] # -19BA 199A ; [.32B0.0020.0002][.32CC.0020.0002] # -199B ; [.32B1.0020.0002] # NEW TAI LUE LETTER HIGH VA -19B5 199B ; [.32B1.0020.0002][.32C7.0020.0002] # -19B6 199B ; [.32B1.0020.0002][.32C8.0020.0002] # -19B7 199B ; [.32B1.0020.0002][.32C9.0020.0002] # -19BA 199B ; [.32B1.0020.0002][.32CC.0020.0002] # -199C ; [.32B2.0020.0002] # NEW TAI LUE LETTER HIGH LA -19B5 199C ; [.32B2.0020.0002][.32C7.0020.0002] # -19B6 199C ; [.32B2.0020.0002][.32C8.0020.0002] # -19DE ; [.32B2.0020.0004][.32C8.0020.0004] # NEW TAI LUE SIGN LAE -19DF ; [.32B2.0020.0004][.32C8.0020.0004][.32D3.0020.0004] # NEW TAI LUE SIGN LAEV -19B7 199C ; [.32B2.0020.0002][.32C9.0020.0002] # -19BA 199C ; [.32B2.0020.0002][.32CC.0020.0002] # -199D ; [.32B3.0020.0002] # NEW TAI LUE LETTER LOW FA -19B5 199D ; [.32B3.0020.0002][.32C7.0020.0002] # -19B6 199D ; [.32B3.0020.0002][.32C8.0020.0002] # -19B7 199D ; [.32B3.0020.0002][.32C9.0020.0002] # -19BA 199D ; [.32B3.0020.0002][.32CC.0020.0002] # -199E ; [.32B4.0020.0002] # NEW TAI LUE LETTER LOW VA -19B5 199E ; [.32B4.0020.0002][.32C7.0020.0002] # -19B6 199E ; [.32B4.0020.0002][.32C8.0020.0002] # -19B7 199E ; [.32B4.0020.0002][.32C9.0020.0002] # -19BA 199E ; [.32B4.0020.0002][.32CC.0020.0002] # -199F ; [.32B5.0020.0002] # NEW TAI LUE LETTER LOW LA -19B5 199F ; [.32B5.0020.0002][.32C7.0020.0002] # -19B6 199F ; [.32B5.0020.0002][.32C8.0020.0002] # -19B7 199F ; [.32B5.0020.0002][.32C9.0020.0002] # -19BA 199F ; [.32B5.0020.0002][.32CC.0020.0002] # -19A0 ; [.32B6.0020.0002] # NEW TAI LUE LETTER HIGH HA -19B5 19A0 ; [.32B6.0020.0002][.32C7.0020.0002] # -19B6 19A0 ; [.32B6.0020.0002][.32C8.0020.0002] # -19B7 19A0 ; [.32B6.0020.0002][.32C9.0020.0002] # -19BA 19A0 ; [.32B6.0020.0002][.32CC.0020.0002] # -19A1 ; [.32B7.0020.0002] # NEW TAI LUE LETTER HIGH DA -19B5 19A1 ; [.32B7.0020.0002][.32C7.0020.0002] # -19B6 19A1 ; [.32B7.0020.0002][.32C8.0020.0002] # -19B7 19A1 ; [.32B7.0020.0002][.32C9.0020.0002] # -19BA 19A1 ; [.32B7.0020.0002][.32CC.0020.0002] # -19A2 ; [.32B8.0020.0002] # NEW TAI LUE LETTER HIGH BA -19B5 19A2 ; [.32B8.0020.0002][.32C7.0020.0002] # -19B6 19A2 ; [.32B8.0020.0002][.32C8.0020.0002] # -19B7 19A2 ; [.32B8.0020.0002][.32C9.0020.0002] # -19BA 19A2 ; [.32B8.0020.0002][.32CC.0020.0002] # -19A3 ; [.32B9.0020.0002] # NEW TAI LUE LETTER LOW HA -19B5 19A3 ; [.32B9.0020.0002][.32C7.0020.0002] # -19B6 19A3 ; [.32B9.0020.0002][.32C8.0020.0002] # -19B7 19A3 ; [.32B9.0020.0002][.32C9.0020.0002] # -19BA 19A3 ; [.32B9.0020.0002][.32CC.0020.0002] # -19A4 ; [.32BA.0020.0002] # NEW TAI LUE LETTER LOW DA -19B5 19A4 ; [.32BA.0020.0002][.32C7.0020.0002] # -19B6 19A4 ; [.32BA.0020.0002][.32C8.0020.0002] # -19B7 19A4 ; [.32BA.0020.0002][.32C9.0020.0002] # -19BA 19A4 ; [.32BA.0020.0002][.32CC.0020.0002] # -19A5 ; [.32BB.0020.0002] # NEW TAI LUE LETTER LOW BA -19B5 19A5 ; [.32BB.0020.0002][.32C7.0020.0002] # -19B6 19A5 ; [.32BB.0020.0002][.32C8.0020.0002] # -19B7 19A5 ; [.32BB.0020.0002][.32C9.0020.0002] # -19BA 19A5 ; [.32BB.0020.0002][.32CC.0020.0002] # -19A6 ; [.32BC.0020.0002] # NEW TAI LUE LETTER HIGH KVA -19B5 19A6 ; [.32BC.0020.0002][.32C7.0020.0002] # -19B6 19A6 ; [.32BC.0020.0002][.32C8.0020.0002] # -19B7 19A6 ; [.32BC.0020.0002][.32C9.0020.0002] # -19BA 19A6 ; [.32BC.0020.0002][.32CC.0020.0002] # -19A7 ; [.32BD.0020.0002] # NEW TAI LUE LETTER HIGH XVA -19B5 19A7 ; [.32BD.0020.0002][.32C7.0020.0002] # -19B6 19A7 ; [.32BD.0020.0002][.32C8.0020.0002] # -19B7 19A7 ; [.32BD.0020.0002][.32C9.0020.0002] # -19BA 19A7 ; [.32BD.0020.0002][.32CC.0020.0002] # -19A8 ; [.32BE.0020.0002] # NEW TAI LUE LETTER LOW KVA -19B5 19A8 ; [.32BE.0020.0002][.32C7.0020.0002] # -19B6 19A8 ; [.32BE.0020.0002][.32C8.0020.0002] # -19B7 19A8 ; [.32BE.0020.0002][.32C9.0020.0002] # -19BA 19A8 ; [.32BE.0020.0002][.32CC.0020.0002] # -19A9 ; [.32BF.0020.0002] # NEW TAI LUE LETTER LOW XVA -19B5 19A9 ; [.32BF.0020.0002][.32C7.0020.0002] # -19B6 19A9 ; [.32BF.0020.0002][.32C8.0020.0002] # -19B7 19A9 ; [.32BF.0020.0002][.32C9.0020.0002] # -19BA 19A9 ; [.32BF.0020.0002][.32CC.0020.0002] # -19AA ; [.32C0.0020.0002] # NEW TAI LUE LETTER HIGH SUA -19B5 19AA ; [.32C0.0020.0002][.32C7.0020.0002] # -19B6 19AA ; [.32C0.0020.0002][.32C8.0020.0002] # -19B7 19AA ; [.32C0.0020.0002][.32C9.0020.0002] # -19BA 19AA ; [.32C0.0020.0002][.32CC.0020.0002] # -19AB ; [.32C1.0020.0002] # NEW TAI LUE LETTER LOW SUA -19B5 19AB ; [.32C1.0020.0002][.32C7.0020.0002] # -19B6 19AB ; [.32C1.0020.0002][.32C8.0020.0002] # -19B7 19AB ; [.32C1.0020.0002][.32C9.0020.0002] # -19BA 19AB ; [.32C1.0020.0002][.32CC.0020.0002] # -19B0 ; [.32C2.0020.0002] # NEW TAI LUE VOWEL SIGN VOWEL SHORTENER -19B1 ; [.32C3.0020.0002] # NEW TAI LUE VOWEL SIGN AA -19B2 ; [.32C4.0020.0002] # NEW TAI LUE VOWEL SIGN II -19B3 ; [.32C5.0020.0002] # NEW TAI LUE VOWEL SIGN U -19B4 ; [.32C6.0020.0002] # NEW TAI LUE VOWEL SIGN UU -19B5 ; [.32C7.0020.0002] # NEW TAI LUE VOWEL SIGN E -19B6 ; [.32C8.0020.0002] # NEW TAI LUE VOWEL SIGN AE -19B7 ; [.32C9.0020.0002] # NEW TAI LUE VOWEL SIGN O -19B8 ; [.32CA.0020.0002] # NEW TAI LUE VOWEL SIGN OA -19B9 ; [.32CB.0020.0002] # NEW TAI LUE VOWEL SIGN UE -19BA ; [.32CC.0020.0002] # NEW TAI LUE VOWEL SIGN AY -19BB ; [.32CD.0020.0002] # NEW TAI LUE VOWEL SIGN AAY -19BC ; [.32CE.0020.0002] # NEW TAI LUE VOWEL SIGN UY -19BD ; [.32CF.0020.0002] # NEW TAI LUE VOWEL SIGN OY -19BE ; [.32D0.0020.0002] # NEW TAI LUE VOWEL SIGN OAY -19BF ; [.32D1.0020.0002] # NEW TAI LUE VOWEL SIGN UEY -19C0 ; [.32D2.0020.0002] # NEW TAI LUE VOWEL SIGN IY -19C1 ; [.32D3.0020.0002] # NEW TAI LUE LETTER FINAL V -19C2 ; [.32D4.0020.0002] # NEW TAI LUE LETTER FINAL NG -19C3 ; [.32D5.0020.0002] # NEW TAI LUE LETTER FINAL N -19C4 ; [.32D6.0020.0002] # NEW TAI LUE LETTER FINAL M -19C5 ; [.32D7.0020.0002] # NEW TAI LUE LETTER FINAL K -19C6 ; [.32D8.0020.0002] # NEW TAI LUE LETTER FINAL D -19C7 ; [.32D9.0020.0002] # NEW TAI LUE LETTER FINAL B -19C8 ; [.32DA.0020.0002] # NEW TAI LUE TONE MARK-1 -19C9 ; [.32DB.0020.0002] # NEW TAI LUE TONE MARK-2 -1A20 ; [.32DC.0020.0002] # TAI THAM LETTER HIGH KA -1A21 ; [.32DD.0020.0002] # TAI THAM LETTER HIGH KHA -1A22 ; [.32DE.0020.0002] # TAI THAM LETTER HIGH KXA -1A23 ; [.32DF.0020.0002] # TAI THAM LETTER LOW KA -1A24 ; [.32E0.0020.0002] # TAI THAM LETTER LOW KXA -1A25 ; [.32E1.0020.0002] # TAI THAM LETTER LOW KHA -1A26 ; [.32E2.0020.0002] # TAI THAM LETTER NGA -1A58 ; [.32E2.0020.0004] # TAI THAM SIGN MAI KANG LAI -1A59 ; [.32E2.0020.0004] # TAI THAM CONSONANT SIGN FINAL NGA -1A27 ; [.32E3.0020.0002] # TAI THAM LETTER HIGH CA -1A28 ; [.32E4.0020.0002] # TAI THAM LETTER HIGH CHA -1A29 ; [.32E5.0020.0002] # TAI THAM LETTER LOW CA -1A2A ; [.32E6.0020.0002] # TAI THAM LETTER LOW SA -1A2B ; [.32E7.0020.0002] # TAI THAM LETTER LOW CHA -1A2C ; [.32E8.0020.0002] # TAI THAM LETTER NYA -1A2D ; [.32E9.0020.0002] # TAI THAM LETTER RATA -1A2E ; [.32EA.0020.0002] # TAI THAM LETTER HIGH RATHA -1A2F ; [.32EB.0020.0002] # TAI THAM LETTER DA -1A30 ; [.32EC.0020.0002] # TAI THAM LETTER LOW RATHA -1A31 ; [.32ED.0020.0002] # TAI THAM LETTER RANA -1A32 ; [.32EE.0020.0002] # TAI THAM LETTER HIGH TA -1A33 ; [.32EF.0020.0002] # TAI THAM LETTER HIGH THA -1A34 ; [.32F0.0020.0002] # TAI THAM LETTER LOW TA -1A35 ; [.32F1.0020.0002] # TAI THAM LETTER LOW THA -1A36 ; [.32F2.0020.0002] # TAI THAM LETTER NA -1A37 ; [.32F3.0020.0002] # TAI THAM LETTER BA -1A38 ; [.32F4.0020.0002] # TAI THAM LETTER HIGH PA -1A39 ; [.32F5.0020.0002] # TAI THAM LETTER HIGH PHA -1A3A ; [.32F6.0020.0002] # TAI THAM LETTER HIGH FA -1A3B ; [.32F7.0020.0002] # TAI THAM LETTER LOW PA -1A5A ; [.32F7.0020.0004] # TAI THAM CONSONANT SIGN LOW PA -1A5B ; [.32F7.0020.0004] # TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA -1A3C ; [.32F8.0020.0002] # TAI THAM LETTER LOW FA -1A3D ; [.32F9.0020.0002] # TAI THAM LETTER LOW PHA -1A3E ; [.32FA.0020.0002] # TAI THAM LETTER MA -1A3F ; [.32FB.0020.0002] # TAI THAM LETTER LOW YA -1A40 ; [.32FC.0020.0002] # TAI THAM LETTER HIGH YA -1A41 ; [.32FD.0020.0002] # TAI THAM LETTER RA -1A42 ; [.32FE.0020.0002] # TAI THAM LETTER RUE -1A43 ; [.32FF.0020.0002] # TAI THAM LETTER LA -1A44 ; [.3300.0020.0002] # TAI THAM LETTER LUE -1A45 ; [.3301.0020.0002] # TAI THAM LETTER WA -1A46 ; [.3302.0020.0002] # TAI THAM LETTER HIGH SHA -1A54 ; [.3302.0020.0004][.3328.0020.0004][.3302.0020.0004] # TAI THAM LETTER GREAT SA -1A47 ; [.3303.0020.0002] # TAI THAM LETTER HIGH SSA -1A48 ; [.3304.0020.0002] # TAI THAM LETTER HIGH SA -1A49 ; [.3305.0020.0002] # TAI THAM LETTER HIGH HA -1A4A ; [.3306.0020.0002] # TAI THAM LETTER LLA -1A4B ; [.3307.0020.0002] # TAI THAM LETTER A -1A4C ; [.3308.0020.0002] # TAI THAM LETTER LOW HA -1A53 ; [.3309.0020.0002] # TAI THAM LETTER LAE -1A6B ; [.330A.0020.0002] # TAI THAM VOWEL SIGN O -1A55 ; [.330B.0020.0002] # TAI THAM CONSONANT SIGN MEDIAL RA -1A56 ; [.330C.0020.0002] # TAI THAM CONSONANT SIGN MEDIAL LA -1A57 ; [.330D.0020.0002] # TAI THAM CONSONANT SIGN LA TANG LAI -1A5C ; [.330E.0020.0002] # TAI THAM CONSONANT SIGN MA -1A5D ; [.330F.0020.0002] # TAI THAM CONSONANT SIGN BA -1A5E ; [.3310.0020.0002] # TAI THAM CONSONANT SIGN SA -1A4D ; [.3311.0020.0002] # TAI THAM LETTER I -1A4E ; [.3312.0020.0002] # TAI THAM LETTER II -1A4F ; [.3313.0020.0002] # TAI THAM LETTER U -1A50 ; [.3314.0020.0002] # TAI THAM LETTER UU -1A51 ; [.3315.0020.0002] # TAI THAM LETTER EE -1A52 ; [.3316.0020.0002] # TAI THAM LETTER OO -1A61 ; [.3317.0020.0002] # TAI THAM VOWEL SIGN A -1A6C ; [.3318.0020.0002] # TAI THAM VOWEL SIGN OA BELOW -1A62 ; [.3319.0020.0002] # TAI THAM VOWEL SIGN MAI SAT -1A63 ; [.331A.0020.0002] # TAI THAM VOWEL SIGN AA -1A64 ; [.331A.0020.0004] # TAI THAM VOWEL SIGN TALL AA -1A65 ; [.331B.0020.0002] # TAI THAM VOWEL SIGN I -1A66 ; [.331C.0020.0002] # TAI THAM VOWEL SIGN II -1A67 ; [.331D.0020.0002] # TAI THAM VOWEL SIGN UE -1A68 ; [.331E.0020.0002] # TAI THAM VOWEL SIGN UUE -1A69 ; [.331F.0020.0002] # TAI THAM VOWEL SIGN U -1A6A ; [.3320.0020.0002] # TAI THAM VOWEL SIGN UU -1A6E ; [.3321.0020.0002] # TAI THAM VOWEL SIGN E -1A6F ; [.3322.0020.0002] # TAI THAM VOWEL SIGN AE -1A73 ; [.3323.0020.0002] # TAI THAM VOWEL SIGN OA ABOVE -1A70 ; [.3324.0020.0002] # TAI THAM VOWEL SIGN OO -1A71 ; [.3325.0020.0002] # TAI THAM VOWEL SIGN AI -1A72 ; [.3326.0020.0002] # TAI THAM VOWEL SIGN THAM AI -1A6D ; [.3327.0020.0002] # TAI THAM VOWEL SIGN OY -1A60 ; [.3328.0020.0002] # TAI THAM SIGN SAKOT -AA00 ; [.3329.0020.0002] # CHAM LETTER A -AA01 ; [.332A.0020.0002] # CHAM LETTER I -AA02 ; [.332B.0020.0002] # CHAM LETTER U -AA03 ; [.332C.0020.0002] # CHAM LETTER E -AA04 ; [.332D.0020.0002] # CHAM LETTER AI -AA05 ; [.332E.0020.0002] # CHAM LETTER O -AA06 ; [.332F.0020.0002] # CHAM LETTER KA -AA07 ; [.3330.0020.0002] # CHAM LETTER KHA -AA08 ; [.3331.0020.0002] # CHAM LETTER GA -AA09 ; [.3332.0020.0002] # CHAM LETTER GHA -AA0A ; [.3333.0020.0002] # CHAM LETTER NGUE -AA0B ; [.3334.0020.0002] # CHAM LETTER NGA -AA0C ; [.3335.0020.0002] # CHAM LETTER CHA -AA0D ; [.3336.0020.0002] # CHAM LETTER CHHA -AA0E ; [.3337.0020.0002] # CHAM LETTER JA -AA0F ; [.3338.0020.0002] # CHAM LETTER JHA -AA10 ; [.3339.0020.0002] # CHAM LETTER NHUE -AA11 ; [.333A.0020.0002] # CHAM LETTER NHA -AA12 ; [.333B.0020.0002] # CHAM LETTER NHJA -AA13 ; [.333C.0020.0002] # CHAM LETTER TA -AA14 ; [.333D.0020.0002] # CHAM LETTER THA -AA15 ; [.333E.0020.0002] # CHAM LETTER DA -AA16 ; [.333F.0020.0002] # CHAM LETTER DHA -AA17 ; [.3340.0020.0002] # CHAM LETTER NUE -AA18 ; [.3341.0020.0002] # CHAM LETTER NA -AA19 ; [.3342.0020.0002] # CHAM LETTER DDA -AA1A ; [.3343.0020.0002] # CHAM LETTER PA -AA1B ; [.3344.0020.0002] # CHAM LETTER PPA -AA1C ; [.3345.0020.0002] # CHAM LETTER PHA -AA1D ; [.3346.0020.0002] # CHAM LETTER BA -AA1E ; [.3347.0020.0002] # CHAM LETTER BHA -AA1F ; [.3348.0020.0002] # CHAM LETTER MUE -AA20 ; [.3349.0020.0002] # CHAM LETTER MA -AA21 ; [.334A.0020.0002] # CHAM LETTER BBA -AA22 ; [.334B.0020.0002] # CHAM LETTER YA -AA23 ; [.334C.0020.0002] # CHAM LETTER RA -AA24 ; [.334D.0020.0002] # CHAM LETTER LA -AA25 ; [.334E.0020.0002] # CHAM LETTER VA -AA26 ; [.334F.0020.0002] # CHAM LETTER SSA -AA27 ; [.3350.0020.0002] # CHAM LETTER SA -AA28 ; [.3351.0020.0002] # CHAM LETTER HA -AA33 ; [.3352.0020.0002] # CHAM CONSONANT SIGN YA -AA34 ; [.3353.0020.0002] # CHAM CONSONANT SIGN RA -AA35 ; [.3354.0020.0002] # CHAM CONSONANT SIGN LA -AA36 ; [.3355.0020.0002] # CHAM CONSONANT SIGN WA -AA29 ; [.3356.0020.0002] # CHAM VOWEL SIGN AA -AA2A ; [.3357.0020.0002] # CHAM VOWEL SIGN I -AA2B ; [.3358.0020.0002] # CHAM VOWEL SIGN II -AA2C ; [.3359.0020.0002] # CHAM VOWEL SIGN EI -AA2D ; [.335A.0020.0002] # CHAM VOWEL SIGN U -AA2E ; [.335B.0020.0002] # CHAM VOWEL SIGN OE -AA2F ; [.335C.0020.0002] # CHAM VOWEL SIGN O -AA30 ; [.335D.0020.0002] # CHAM VOWEL SIGN AI -AA31 ; [.335E.0020.0002] # CHAM VOWEL SIGN AU -AA32 ; [.335F.0020.0002] # CHAM VOWEL SIGN UE -AA40 ; [.3360.0020.0002] # CHAM LETTER FINAL K -AA41 ; [.3361.0020.0002] # CHAM LETTER FINAL G -AA42 ; [.3362.0020.0002] # CHAM LETTER FINAL NG -AA43 ; [.3363.0020.0002] # CHAM CONSONANT SIGN FINAL NG -AA44 ; [.3364.0020.0002] # CHAM LETTER FINAL CH -AA45 ; [.3365.0020.0002] # CHAM LETTER FINAL T -AA46 ; [.3366.0020.0002] # CHAM LETTER FINAL N -AA47 ; [.3367.0020.0002] # CHAM LETTER FINAL P -AA48 ; [.3368.0020.0002] # CHAM LETTER FINAL Y -AA49 ; [.3369.0020.0002] # CHAM LETTER FINAL R -AA4A ; [.336A.0020.0002] # CHAM LETTER FINAL L -AA4B ; [.336B.0020.0002] # CHAM LETTER FINAL SS -AA4C ; [.336C.0020.0002] # CHAM CONSONANT SIGN FINAL M -AA4D ; [.336D.0020.0002] # CHAM CONSONANT SIGN FINAL H -1B05 ; [.336E.0020.0002] # BALINESE LETTER AKARA -1B06 ; [.336F.0020.0002] # BALINESE LETTER AKARA TEDUNG -1B05 1B35 ; [.336F.0020.0002] # BALINESE LETTER AKARA TEDUNG -1B07 ; [.3370.0020.0002] # BALINESE LETTER IKARA -1B08 ; [.3371.0020.0002] # BALINESE LETTER IKARA TEDUNG -1B07 1B35 ; [.3371.0020.0002] # BALINESE LETTER IKARA TEDUNG -1B09 ; [.3372.0020.0002] # BALINESE LETTER UKARA -1B0A ; [.3373.0020.0002] # BALINESE LETTER UKARA TEDUNG -1B09 1B35 ; [.3373.0020.0002] # BALINESE LETTER UKARA TEDUNG -1B0B ; [.3374.0020.0002] # BALINESE LETTER RA REPA -1B0C ; [.3375.0020.0002] # BALINESE LETTER RA REPA TEDUNG -1B0B 1B35 ; [.3375.0020.0002] # BALINESE LETTER RA REPA TEDUNG -1B0D ; [.3376.0020.0002] # BALINESE LETTER LA LENGA -1B0E ; [.3377.0020.0002] # BALINESE LETTER LA LENGA TEDUNG -1B0D 1B35 ; [.3377.0020.0002] # BALINESE LETTER LA LENGA TEDUNG -1B0F ; [.3378.0020.0002] # BALINESE LETTER EKARA -1B10 ; [.3379.0020.0002] # BALINESE LETTER AIKARA -1B11 ; [.337A.0020.0002] # BALINESE LETTER OKARA -1B12 ; [.337B.0020.0002] # BALINESE LETTER OKARA TEDUNG -1B11 1B35 ; [.337B.0020.0002] # BALINESE LETTER OKARA TEDUNG -1B13 ; [.337C.0020.0002] # BALINESE LETTER KA -1B45 ; [.337D.0020.0002] # BALINESE LETTER KAF SASAK -1B46 ; [.337E.0020.0002] # BALINESE LETTER KHOT SASAK -1B14 ; [.337F.0020.0002] # BALINESE LETTER KA MAHAPRANA -1B15 ; [.3380.0020.0002] # BALINESE LETTER GA -1B16 ; [.3381.0020.0002] # BALINESE LETTER GA GORA -1B17 ; [.3382.0020.0002] # BALINESE LETTER NGA -1B18 ; [.3383.0020.0002] # BALINESE LETTER CA -1B19 ; [.3384.0020.0002] # BALINESE LETTER CA LACA -1B1A ; [.3385.0020.0002] # BALINESE LETTER JA -1B1B ; [.3386.0020.0002] # BALINESE LETTER JA JERA -1B1C ; [.3387.0020.0002] # BALINESE LETTER NYA -1B1D ; [.3388.0020.0002] # BALINESE LETTER TA LATIK -1B1E ; [.3389.0020.0002] # BALINESE LETTER TA MURDA MAHAPRANA -1B1F ; [.338A.0020.0002] # BALINESE LETTER DA MURDA ALPAPRANA -1B20 ; [.338B.0020.0002] # BALINESE LETTER DA MURDA MAHAPRANA -1B21 ; [.338C.0020.0002] # BALINESE LETTER NA RAMBAT -1B22 ; [.338D.0020.0002] # BALINESE LETTER TA -1B47 ; [.338E.0020.0002] # BALINESE LETTER TZIR SASAK -1B23 ; [.338F.0020.0002] # BALINESE LETTER TA TAWA -1B24 ; [.3390.0020.0002] # BALINESE LETTER DA -1B25 ; [.3391.0020.0002] # BALINESE LETTER DA MADU -1B26 ; [.3392.0020.0002] # BALINESE LETTER NA -1B27 ; [.3393.0020.0002] # BALINESE LETTER PA -1B48 ; [.3394.0020.0002] # BALINESE LETTER EF SASAK -1B28 ; [.3395.0020.0002] # BALINESE LETTER PA KAPAL -1B29 ; [.3396.0020.0002] # BALINESE LETTER BA -1B2A ; [.3397.0020.0002] # BALINESE LETTER BA KEMBANG -1B2B ; [.3398.0020.0002] # BALINESE LETTER MA -1B2C ; [.3399.0020.0002] # BALINESE LETTER YA -1B2D ; [.339A.0020.0002] # BALINESE LETTER RA -1B2E ; [.339B.0020.0002] # BALINESE LETTER LA -1B2F ; [.339C.0020.0002] # BALINESE LETTER WA -1B49 ; [.339D.0020.0002] # BALINESE LETTER VE SASAK -1B30 ; [.339E.0020.0002] # BALINESE LETTER SA SAGA -1B31 ; [.339F.0020.0002] # BALINESE LETTER SA SAPA -1B32 ; [.33A0.0020.0002] # BALINESE LETTER SA -1B4A ; [.33A1.0020.0002] # BALINESE LETTER ZAL SASAK -1B4B ; [.33A2.0020.0002] # BALINESE LETTER ASYURA SASAK -1B33 ; [.33A3.0020.0002] # BALINESE LETTER HA -1B35 ; [.33A4.0020.0002] # BALINESE VOWEL SIGN TEDUNG -1B36 ; [.33A5.0020.0002] # BALINESE VOWEL SIGN ULU -1B37 ; [.33A6.0020.0002] # BALINESE VOWEL SIGN ULU SARI -1B38 ; [.33A7.0020.0002] # BALINESE VOWEL SIGN SUKU -1B39 ; [.33A8.0020.0002] # BALINESE VOWEL SIGN SUKU ILUT -1B3A ; [.33A9.0020.0002] # BALINESE VOWEL SIGN RA REPA -1B3B ; [.33AA.0020.0002] # BALINESE VOWEL SIGN RA REPA TEDUNG -1B3A 1B35 ; [.33AA.0020.0002] # BALINESE VOWEL SIGN RA REPA TEDUNG -1B3C ; [.33AB.0020.0002] # BALINESE VOWEL SIGN LA LENGA -1B3D ; [.33AC.0020.0002] # BALINESE VOWEL SIGN LA LENGA TEDUNG -1B3C 1B35 ; [.33AC.0020.0002] # BALINESE VOWEL SIGN LA LENGA TEDUNG -1B3E ; [.33AD.0020.0002] # BALINESE VOWEL SIGN TALING -1B3F ; [.33AE.0020.0002] # BALINESE VOWEL SIGN TALING REPA -1B40 ; [.33AF.0020.0002] # BALINESE VOWEL SIGN TALING TEDUNG -1B3E 1B35 ; [.33AF.0020.0002] # BALINESE VOWEL SIGN TALING TEDUNG -1B41 ; [.33B0.0020.0002] # BALINESE VOWEL SIGN TALING REPA TEDUNG -1B3F 1B35 ; [.33B0.0020.0002] # BALINESE VOWEL SIGN TALING REPA TEDUNG -1B42 ; [.33B1.0020.0002] # BALINESE VOWEL SIGN PEPET -1B43 ; [.33B2.0020.0002] # BALINESE VOWEL SIGN PEPET TEDUNG -1B42 1B35 ; [.33B2.0020.0002] # BALINESE VOWEL SIGN PEPET TEDUNG -1B44 ; [.33B3.0020.0002] # BALINESE ADEG ADEG -A984 ; [.33B4.0020.0002] # JAVANESE LETTER A -A985 ; [.33B5.0020.0002] # JAVANESE LETTER I KAWI -A986 ; [.33B6.0020.0002] # JAVANESE LETTER I -A987 ; [.33B7.0020.0002] # JAVANESE LETTER II -A988 ; [.33B8.0020.0002] # JAVANESE LETTER U -A989 ; [.33B9.0020.0002] # JAVANESE LETTER PA CEREK -A98A ; [.33BA.0020.0002] # JAVANESE LETTER NGA LELET -A98B ; [.33BB.0020.0002] # JAVANESE LETTER NGA LELET RASWADI -A98C ; [.33BC.0020.0002] # JAVANESE LETTER E -A98D ; [.33BD.0020.0002] # JAVANESE LETTER AI -A98E ; [.33BE.0020.0002] # JAVANESE LETTER O -A98F ; [.33BF.0020.0002] # JAVANESE LETTER KA -A990 ; [.33C0.0020.0002] # JAVANESE LETTER KA SASAK -A991 ; [.33C1.0020.0002] # JAVANESE LETTER KA MURDA -A992 ; [.33C2.0020.0002] # JAVANESE LETTER GA -A993 ; [.33C3.0020.0002] # JAVANESE LETTER GA MURDA -A994 ; [.33C4.0020.0002] # JAVANESE LETTER NGA -A995 ; [.33C5.0020.0002] # JAVANESE LETTER CA -A996 ; [.33C6.0020.0002] # JAVANESE LETTER CA MURDA -A997 ; [.33C7.0020.0002] # JAVANESE LETTER JA -A998 ; [.33C8.0020.0002] # JAVANESE LETTER NYA MURDA -A999 ; [.33C9.0020.0002] # JAVANESE LETTER JA MAHAPRANA -A99A ; [.33CA.0020.0002] # JAVANESE LETTER NYA -A99B ; [.33CB.0020.0002] # JAVANESE LETTER TTA -A99C ; [.33CC.0020.0002] # JAVANESE LETTER TTA MAHAPRANA -A99D ; [.33CD.0020.0002] # JAVANESE LETTER DDA -A99E ; [.33CE.0020.0002] # JAVANESE LETTER DDA MAHAPRANA -A99F ; [.33CF.0020.0002] # JAVANESE LETTER NA MURDA -A9A0 ; [.33D0.0020.0002] # JAVANESE LETTER TA -A9A1 ; [.33D1.0020.0002] # JAVANESE LETTER TA MURDA -A9A2 ; [.33D2.0020.0002] # JAVANESE LETTER DA -A9A3 ; [.33D3.0020.0002] # JAVANESE LETTER DA MAHAPRANA -A9A4 ; [.33D4.0020.0002] # JAVANESE LETTER NA -A9A5 ; [.33D5.0020.0002] # JAVANESE LETTER PA -A9A6 ; [.33D6.0020.0002] # JAVANESE LETTER PA MURDA -A9A7 ; [.33D7.0020.0002] # JAVANESE LETTER BA -A9A8 ; [.33D8.0020.0002] # JAVANESE LETTER BA MURDA -A9A9 ; [.33D9.0020.0002] # JAVANESE LETTER MA -A9AA ; [.33DA.0020.0002] # JAVANESE LETTER YA -A9BE ; [.33DB.0020.0002] # JAVANESE CONSONANT SIGN PENGKAL -A9AB ; [.33DC.0020.0002] # JAVANESE LETTER RA -A9AC ; [.33DC.0020.0004] # JAVANESE LETTER RA AGUNG -A9BF ; [.33DD.0020.0002] # JAVANESE CONSONANT SIGN CAKRA -A9AD ; [.33DE.0020.0002] # JAVANESE LETTER LA -A9AE ; [.33DF.0020.0002] # JAVANESE LETTER WA -A9AF ; [.33E0.0020.0002] # JAVANESE LETTER SA MURDA -A9B0 ; [.33E1.0020.0002] # JAVANESE LETTER SA MAHAPRANA -A9B1 ; [.33E2.0020.0002] # JAVANESE LETTER SA -A9B2 ; [.33E3.0020.0002] # JAVANESE LETTER HA -A9B4 ; [.33E4.0020.0002] # JAVANESE VOWEL SIGN TARUNG -A9BC ; [.33E5.0020.0002] # JAVANESE VOWEL SIGN PEPET -A9B6 ; [.33E6.0020.0002] # JAVANESE VOWEL SIGN WULU -A9B7 ; [.33E7.0020.0002] # JAVANESE VOWEL SIGN WULU MELIK -A9B8 ; [.33E8.0020.0002] # JAVANESE VOWEL SIGN SUKU -A9B9 ; [.33E9.0020.0002] # JAVANESE VOWEL SIGN SUKU MENDUT -A9BD ; [.33EA.0020.0002] # JAVANESE CONSONANT SIGN KERET -A9BA ; [.33EB.0020.0002] # JAVANESE VOWEL SIGN TALING -A9BB ; [.33EC.0020.0002] # JAVANESE VOWEL SIGN DIRGA MURE -A9B5 ; [.33ED.0020.0002] # JAVANESE VOWEL SIGN TOLONG -A9C0 ; [.33EE.0020.0002] # JAVANESE PANGKON -1880 ; [.33EF.0020.0002] # MONGOLIAN LETTER ALI GALI ANUSVARA ONE -1881 ; [.33F0.0020.0002] # MONGOLIAN LETTER ALI GALI VISARGA ONE -1882 ; [.33F1.0020.0002] # MONGOLIAN LETTER ALI GALI DAMARU -1883 ; [.33F2.0020.0002] # MONGOLIAN LETTER ALI GALI UBADAMA -1884 ; [.33F3.0020.0002] # MONGOLIAN LETTER ALI GALI INVERTED UBADAMA -1885 ; [.33F4.0020.0002] # MONGOLIAN LETTER ALI GALI BALUDA -1886 ; [.33F5.0020.0002] # MONGOLIAN LETTER ALI GALI THREE BALUDA -1843 ; [.33F6.0020.0002] # MONGOLIAN LETTER TODO LONG VOWEL SIGN -1820 ; [.33F7.0020.0002] # MONGOLIAN LETTER A -1887 ; [.33F8.0020.0002] # MONGOLIAN LETTER ALI GALI A -1821 ; [.33F9.0020.0002] # MONGOLIAN LETTER E -1844 ; [.33FA.0020.0002] # MONGOLIAN LETTER TODO E -185D ; [.33FB.0020.0002] # MONGOLIAN LETTER SIBE E -1822 ; [.33FC.0020.0002] # MONGOLIAN LETTER I -1845 ; [.33FD.0020.0002] # MONGOLIAN LETTER TODO I -185E ; [.33FE.0020.0002] # MONGOLIAN LETTER SIBE I -1873 ; [.33FF.0020.0002] # MONGOLIAN LETTER MANCHU I -1888 ; [.3400.0020.0002] # MONGOLIAN LETTER ALI GALI I -185F ; [.3401.0020.0002] # MONGOLIAN LETTER SIBE IY -1823 ; [.3402.0020.0002] # MONGOLIAN LETTER O -1846 ; [.3403.0020.0002] # MONGOLIAN LETTER TODO O -1824 ; [.3404.0020.0002] # MONGOLIAN LETTER U -1847 ; [.3405.0020.0002] # MONGOLIAN LETTER TODO U -1861 ; [.3406.0020.0002] # MONGOLIAN LETTER SIBE U -1825 ; [.3407.0020.0002] # MONGOLIAN LETTER OE -1848 ; [.3408.0020.0002] # MONGOLIAN LETTER TODO OE -1826 ; [.3409.0020.0002] # MONGOLIAN LETTER UE -1849 ; [.340A.0020.0002] # MONGOLIAN LETTER TODO UE -1860 ; [.340B.0020.0002] # MONGOLIAN LETTER SIBE UE -1827 ; [.340C.0020.0002] # MONGOLIAN LETTER EE -1828 ; [.340D.0020.0002] # MONGOLIAN LETTER NA -1829 ; [.340E.0020.0002] # MONGOLIAN LETTER ANG -184A ; [.340F.0020.0002] # MONGOLIAN LETTER TODO ANG -1862 ; [.3410.0020.0002] # MONGOLIAN LETTER SIBE ANG -188A ; [.3411.0020.0002] # MONGOLIAN LETTER ALI GALI NGA -189B ; [.3412.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI NGA -182A ; [.3413.0020.0002] # MONGOLIAN LETTER BA -184B ; [.3414.0020.0002] # MONGOLIAN LETTER TODO BA -182B ; [.3415.0020.0002] # MONGOLIAN LETTER PA -184C ; [.3416.0020.0002] # MONGOLIAN LETTER TODO PA -1866 ; [.3417.0020.0002] # MONGOLIAN LETTER SIBE PA -182C ; [.3418.0020.0002] # MONGOLIAN LETTER QA -184D ; [.3419.0020.0002] # MONGOLIAN LETTER TODO QA -182D ; [.341A.0020.0002] # MONGOLIAN LETTER GA -184E ; [.341B.0020.0002] # MONGOLIAN LETTER TODO GA -1864 ; [.341C.0020.0002] # MONGOLIAN LETTER SIBE GA -189A ; [.341D.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI GHA -1865 ; [.341E.0020.0002] # MONGOLIAN LETTER SIBE HA -182E ; [.341F.0020.0002] # MONGOLIAN LETTER MA -184F ; [.3420.0020.0002] # MONGOLIAN LETTER TODO MA -182F ; [.3421.0020.0002] # MONGOLIAN LETTER LA -1830 ; [.3422.0020.0002] # MONGOLIAN LETTER SA -1831 ; [.3423.0020.0002] # MONGOLIAN LETTER SHA -1867 ; [.3424.0020.0002] # MONGOLIAN LETTER SIBE SHA -189C ; [.3425.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI CA -189D ; [.3426.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI JHA -18A2 ; [.3427.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI SSA -18A4 ; [.3428.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI ZHA -18A5 ; [.3429.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI ZA -1832 ; [.342A.0020.0002] # MONGOLIAN LETTER TA -1850 ; [.342B.0020.0002] # MONGOLIAN LETTER TODO TA -1868 ; [.342C.0020.0002] # MONGOLIAN LETTER SIBE TA -1833 ; [.342D.0020.0002] # MONGOLIAN LETTER DA -1851 ; [.342E.0020.0002] # MONGOLIAN LETTER TODO DA -1869 ; [.342F.0020.0002] # MONGOLIAN LETTER SIBE DA -1834 ; [.3430.0020.0002] # MONGOLIAN LETTER CHA -1852 ; [.3431.0020.0002] # MONGOLIAN LETTER TODO CHA -1871 ; [.3432.0020.0002] # MONGOLIAN LETTER SIBE CHA -185C ; [.3433.0020.0002] # MONGOLIAN LETTER TODO DZA -188B ; [.3434.0020.0002] # MONGOLIAN LETTER ALI GALI CA -1835 ; [.3435.0020.0002] # MONGOLIAN LETTER JA -1853 ; [.3436.0020.0002] # MONGOLIAN LETTER TODO JA -186A ; [.3437.0020.0002] # MONGOLIAN LETTER SIBE JA -1877 ; [.3438.0020.0002] # MONGOLIAN LETTER MANCHU ZHA -1836 ; [.3439.0020.0002] # MONGOLIAN LETTER YA -1855 ; [.343A.0020.0002] # MONGOLIAN LETTER TODO YA -1872 ; [.343B.0020.0002] # MONGOLIAN LETTER SIBE ZHA -1837 ; [.343C.0020.0002] # MONGOLIAN LETTER RA -1875 ; [.343D.0020.0002] # MONGOLIAN LETTER MANCHU RA -1838 ; [.343E.0020.0002] # MONGOLIAN LETTER WA -1856 ; [.343F.0020.0002] # MONGOLIAN LETTER TODO WA -1839 ; [.3440.0020.0002] # MONGOLIAN LETTER FA -186B ; [.3441.0020.0002] # MONGOLIAN LETTER SIBE FA -1876 ; [.3442.0020.0002] # MONGOLIAN LETTER MANCHU FA -183A ; [.3443.0020.0002] # MONGOLIAN LETTER KA -1857 ; [.3444.0020.0002] # MONGOLIAN LETTER TODO KA -1863 ; [.3445.0020.0002] # MONGOLIAN LETTER SIBE KA -1874 ; [.3446.0020.0002] # MONGOLIAN LETTER MANCHU KA -1889 ; [.3447.0020.0002] # MONGOLIAN LETTER ALI GALI KA -183B ; [.3448.0020.0002] # MONGOLIAN LETTER KHA -183C ; [.3449.0020.0002] # MONGOLIAN LETTER TSA -1854 ; [.344A.0020.0002] # MONGOLIAN LETTER TODO TSA -186E ; [.344B.0020.0002] # MONGOLIAN LETTER SIBE TSA -183D ; [.344C.0020.0002] # MONGOLIAN LETTER ZA -186F ; [.344D.0020.0002] # MONGOLIAN LETTER SIBE ZA -1858 ; [.344E.0020.0002] # MONGOLIAN LETTER TODO GAA -186C ; [.344F.0020.0002] # MONGOLIAN LETTER SIBE GAA -183E ; [.3450.0020.0002] # MONGOLIAN LETTER HAA -1859 ; [.3451.0020.0002] # MONGOLIAN LETTER TODO HAA -186D ; [.3452.0020.0002] # MONGOLIAN LETTER SIBE HAA -183F ; [.3453.0020.0002] # MONGOLIAN LETTER ZRA -1840 ; [.3454.0020.0002] # MONGOLIAN LETTER LHA -1841 ; [.3455.0020.0002] # MONGOLIAN LETTER ZHI -1842 ; [.3456.0020.0002] # MONGOLIAN LETTER CHI -185A ; [.3457.0020.0002] # MONGOLIAN LETTER TODO JIA -185B ; [.3458.0020.0002] # MONGOLIAN LETTER TODO NIA -1870 ; [.3459.0020.0002] # MONGOLIAN LETTER SIBE RAA -188C ; [.345A.0020.0002] # MONGOLIAN LETTER ALI GALI TTA -189E ; [.345B.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI TTA -188D ; [.345C.0020.0002] # MONGOLIAN LETTER ALI GALI TTHA -188E ; [.345D.0020.0002] # MONGOLIAN LETTER ALI GALI DDA -189F ; [.345E.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI DDHA -188F ; [.345F.0020.0002] # MONGOLIAN LETTER ALI GALI NNA -1890 ; [.3460.0020.0002] # MONGOLIAN LETTER ALI GALI TA -1898 ; [.3461.0020.0002] # MONGOLIAN LETTER TODO ALI GALI TA -18A0 ; [.3462.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI TA -1891 ; [.3463.0020.0002] # MONGOLIAN LETTER ALI GALI DA -18A1 ; [.3464.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI DHA -1892 ; [.3465.0020.0002] # MONGOLIAN LETTER ALI GALI PA -1893 ; [.3466.0020.0002] # MONGOLIAN LETTER ALI GALI PHA -18A8 ; [.3467.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI BHA -1894 ; [.3468.0020.0002] # MONGOLIAN LETTER ALI GALI SSA -18A3 ; [.3469.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI CYA -1895 ; [.346A.0020.0002] # MONGOLIAN LETTER ALI GALI ZHA -1899 ; [.346B.0020.0002] # MONGOLIAN LETTER TODO ALI GALI ZHA -1896 ; [.346C.0020.0002] # MONGOLIAN LETTER ALI GALI ZA -1897 ; [.346D.0020.0002] # MONGOLIAN LETTER ALI GALI AH -18A6 ; [.346E.0020.0002] # MONGOLIAN LETTER ALI GALI HALF U -18A7 ; [.346F.0020.0002] # MONGOLIAN LETTER ALI GALI HALF YA -18AA ; [.3470.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI LHA -18A9 ; [.3471.0020.0002] # MONGOLIAN LETTER ALI GALI DAGALGA -1C5A ; [.3472.0020.0002] # OL CHIKI LETTER LA -1C5B ; [.3473.0020.0002] # OL CHIKI LETTER AT -1C5C ; [.3474.0020.0002] # OL CHIKI LETTER AG -1C5D ; [.3475.0020.0002] # OL CHIKI LETTER ANG -1C5E ; [.3476.0020.0002] # OL CHIKI LETTER AL -1C5F ; [.3477.0020.0002] # OL CHIKI LETTER LAA -1C60 ; [.3478.0020.0002] # OL CHIKI LETTER AAK -1C61 ; [.3479.0020.0002] # OL CHIKI LETTER AAJ -1C62 ; [.347A.0020.0002] # OL CHIKI LETTER AAM -1C63 ; [.347B.0020.0002] # OL CHIKI LETTER AAW -1C64 ; [.347C.0020.0002] # OL CHIKI LETTER LI -1C65 ; [.347D.0020.0002] # OL CHIKI LETTER IS -1C66 ; [.347E.0020.0002] # OL CHIKI LETTER IH -1C67 ; [.347F.0020.0002] # OL CHIKI LETTER INY -1C68 ; [.3480.0020.0002] # OL CHIKI LETTER IR -1C69 ; [.3481.0020.0002] # OL CHIKI LETTER LU -1C6A ; [.3482.0020.0002] # OL CHIKI LETTER UC -1C6B ; [.3483.0020.0002] # OL CHIKI LETTER UD -1C6C ; [.3484.0020.0002] # OL CHIKI LETTER UNN -1C6D ; [.3485.0020.0002] # OL CHIKI LETTER UY -1C6E ; [.3486.0020.0002] # OL CHIKI LETTER LE -1C6F ; [.3487.0020.0002] # OL CHIKI LETTER EP -1C70 ; [.3488.0020.0002] # OL CHIKI LETTER EDD -1C71 ; [.3489.0020.0002] # OL CHIKI LETTER EN -1C72 ; [.348A.0020.0002] # OL CHIKI LETTER ERR -1C73 ; [.348B.0020.0002] # OL CHIKI LETTER LO -1C74 ; [.348C.0020.0002] # OL CHIKI LETTER OTT -1C75 ; [.348D.0020.0002] # OL CHIKI LETTER OB -1C76 ; [.348E.0020.0002] # OL CHIKI LETTER OV -1C77 ; [.348F.0020.0002] # OL CHIKI LETTER OH -1C78 ; [.3490.0020.0002] # OL CHIKI MU TTUDDAG -1C79 ; [.3491.0020.0002] # OL CHIKI GAAHLAA TTUDDAAG -1C7A ; [.3492.0020.0002] # OL CHIKI MU-GAAHLAA TTUDDAAG -1C7B ; [.3493.0020.0002] # OL CHIKI RELAA -1C7C ; [.3494.0020.0002] # OL CHIKI PHAARKAA -1C7D ; [.3495.0020.0002] # OL CHIKI AHAD -AB70 ; [.3496.0020.0002] # CHEROKEE SMALL LETTER A -13A0 ; [.3496.0020.0008] # CHEROKEE LETTER A -AB71 ; [.3497.0020.0002] # CHEROKEE SMALL LETTER E -13A1 ; [.3497.0020.0008] # CHEROKEE LETTER E -AB72 ; [.3498.0020.0002] # CHEROKEE SMALL LETTER I -13A2 ; [.3498.0020.0008] # CHEROKEE LETTER I -AB73 ; [.3499.0020.0002] # CHEROKEE SMALL LETTER O -13A3 ; [.3499.0020.0008] # CHEROKEE LETTER O -AB74 ; [.349A.0020.0002] # CHEROKEE SMALL LETTER U -13A4 ; [.349A.0020.0008] # CHEROKEE LETTER U -AB75 ; [.349B.0020.0002] # CHEROKEE SMALL LETTER V -13A5 ; [.349B.0020.0008] # CHEROKEE LETTER V -AB76 ; [.349C.0020.0002] # CHEROKEE SMALL LETTER GA -13A6 ; [.349C.0020.0008] # CHEROKEE LETTER GA -AB77 ; [.349D.0020.0002] # CHEROKEE SMALL LETTER KA -13A7 ; [.349D.0020.0008] # CHEROKEE LETTER KA -AB78 ; [.349E.0020.0002] # CHEROKEE SMALL LETTER GE -13A8 ; [.349E.0020.0008] # CHEROKEE LETTER GE -AB79 ; [.349F.0020.0002] # CHEROKEE SMALL LETTER GI -13A9 ; [.349F.0020.0008] # CHEROKEE LETTER GI -AB7A ; [.34A0.0020.0002] # CHEROKEE SMALL LETTER GO -13AA ; [.34A0.0020.0008] # CHEROKEE LETTER GO -AB7B ; [.34A1.0020.0002] # CHEROKEE SMALL LETTER GU -13AB ; [.34A1.0020.0008] # CHEROKEE LETTER GU -AB7C ; [.34A2.0020.0002] # CHEROKEE SMALL LETTER GV -13AC ; [.34A2.0020.0008] # CHEROKEE LETTER GV -AB7D ; [.34A3.0020.0002] # CHEROKEE SMALL LETTER HA -13AD ; [.34A3.0020.0008] # CHEROKEE LETTER HA -AB7E ; [.34A4.0020.0002] # CHEROKEE SMALL LETTER HE -13AE ; [.34A4.0020.0008] # CHEROKEE LETTER HE -AB7F ; [.34A5.0020.0002] # CHEROKEE SMALL LETTER HI -13AF ; [.34A5.0020.0008] # CHEROKEE LETTER HI -AB80 ; [.34A6.0020.0002] # CHEROKEE SMALL LETTER HO -13B0 ; [.34A6.0020.0008] # CHEROKEE LETTER HO -AB81 ; [.34A7.0020.0002] # CHEROKEE SMALL LETTER HU -13B1 ; [.34A7.0020.0008] # CHEROKEE LETTER HU -AB82 ; [.34A8.0020.0002] # CHEROKEE SMALL LETTER HV -13B2 ; [.34A8.0020.0008] # CHEROKEE LETTER HV -AB83 ; [.34A9.0020.0002] # CHEROKEE SMALL LETTER LA -13B3 ; [.34A9.0020.0008] # CHEROKEE LETTER LA -AB84 ; [.34AA.0020.0002] # CHEROKEE SMALL LETTER LE -13B4 ; [.34AA.0020.0008] # CHEROKEE LETTER LE -AB85 ; [.34AB.0020.0002] # CHEROKEE SMALL LETTER LI -13B5 ; [.34AB.0020.0008] # CHEROKEE LETTER LI -AB86 ; [.34AC.0020.0002] # CHEROKEE SMALL LETTER LO -13B6 ; [.34AC.0020.0008] # CHEROKEE LETTER LO -AB87 ; [.34AD.0020.0002] # CHEROKEE SMALL LETTER LU -13B7 ; [.34AD.0020.0008] # CHEROKEE LETTER LU -AB88 ; [.34AE.0020.0002] # CHEROKEE SMALL LETTER LV -13B8 ; [.34AE.0020.0008] # CHEROKEE LETTER LV -AB89 ; [.34AF.0020.0002] # CHEROKEE SMALL LETTER MA -13B9 ; [.34AF.0020.0008] # CHEROKEE LETTER MA -AB8A ; [.34B0.0020.0002] # CHEROKEE SMALL LETTER ME -13BA ; [.34B0.0020.0008] # CHEROKEE LETTER ME -AB8B ; [.34B1.0020.0002] # CHEROKEE SMALL LETTER MI -13BB ; [.34B1.0020.0008] # CHEROKEE LETTER MI -AB8C ; [.34B2.0020.0002] # CHEROKEE SMALL LETTER MO -13BC ; [.34B2.0020.0008] # CHEROKEE LETTER MO -AB8D ; [.34B3.0020.0002] # CHEROKEE SMALL LETTER MU -13BD ; [.34B3.0020.0008] # CHEROKEE LETTER MU -AB8E ; [.34B4.0020.0002] # CHEROKEE SMALL LETTER NA -13BE ; [.34B4.0020.0008] # CHEROKEE LETTER NA -AB8F ; [.34B5.0020.0002] # CHEROKEE SMALL LETTER HNA -13BF ; [.34B5.0020.0008] # CHEROKEE LETTER HNA -AB90 ; [.34B6.0020.0002] # CHEROKEE SMALL LETTER NAH -13C0 ; [.34B6.0020.0008] # CHEROKEE LETTER NAH -AB91 ; [.34B7.0020.0002] # CHEROKEE SMALL LETTER NE -13C1 ; [.34B7.0020.0008] # CHEROKEE LETTER NE -AB92 ; [.34B8.0020.0002] # CHEROKEE SMALL LETTER NI -13C2 ; [.34B8.0020.0008] # CHEROKEE LETTER NI -AB93 ; [.34B9.0020.0002] # CHEROKEE SMALL LETTER NO -13C3 ; [.34B9.0020.0008] # CHEROKEE LETTER NO -AB94 ; [.34BA.0020.0002] # CHEROKEE SMALL LETTER NU -13C4 ; [.34BA.0020.0008] # CHEROKEE LETTER NU -AB95 ; [.34BB.0020.0002] # CHEROKEE SMALL LETTER NV -13C5 ; [.34BB.0020.0008] # CHEROKEE LETTER NV -AB96 ; [.34BC.0020.0002] # CHEROKEE SMALL LETTER QUA -13C6 ; [.34BC.0020.0008] # CHEROKEE LETTER QUA -AB97 ; [.34BD.0020.0002] # CHEROKEE SMALL LETTER QUE -13C7 ; [.34BD.0020.0008] # CHEROKEE LETTER QUE -AB98 ; [.34BE.0020.0002] # CHEROKEE SMALL LETTER QUI -13C8 ; [.34BE.0020.0008] # CHEROKEE LETTER QUI -AB99 ; [.34BF.0020.0002] # CHEROKEE SMALL LETTER QUO -13C9 ; [.34BF.0020.0008] # CHEROKEE LETTER QUO -AB9A ; [.34C0.0020.0002] # CHEROKEE SMALL LETTER QUU -13CA ; [.34C0.0020.0008] # CHEROKEE LETTER QUU -AB9B ; [.34C1.0020.0002] # CHEROKEE SMALL LETTER QUV -13CB ; [.34C1.0020.0008] # CHEROKEE LETTER QUV -AB9C ; [.34C2.0020.0002] # CHEROKEE SMALL LETTER SA -13CC ; [.34C2.0020.0008] # CHEROKEE LETTER SA -AB9D ; [.34C3.0020.0002] # CHEROKEE SMALL LETTER S -13CD ; [.34C3.0020.0008] # CHEROKEE LETTER S -AB9E ; [.34C4.0020.0002] # CHEROKEE SMALL LETTER SE -13CE ; [.34C4.0020.0008] # CHEROKEE LETTER SE -AB9F ; [.34C5.0020.0002] # CHEROKEE SMALL LETTER SI -13CF ; [.34C5.0020.0008] # CHEROKEE LETTER SI -ABA0 ; [.34C6.0020.0002] # CHEROKEE SMALL LETTER SO -13D0 ; [.34C6.0020.0008] # CHEROKEE LETTER SO -ABA1 ; [.34C7.0020.0002] # CHEROKEE SMALL LETTER SU -13D1 ; [.34C7.0020.0008] # CHEROKEE LETTER SU -ABA2 ; [.34C8.0020.0002] # CHEROKEE SMALL LETTER SV -13D2 ; [.34C8.0020.0008] # CHEROKEE LETTER SV -ABA3 ; [.34C9.0020.0002] # CHEROKEE SMALL LETTER DA -13D3 ; [.34C9.0020.0008] # CHEROKEE LETTER DA -ABA4 ; [.34CA.0020.0002] # CHEROKEE SMALL LETTER TA -13D4 ; [.34CA.0020.0008] # CHEROKEE LETTER TA -ABA5 ; [.34CB.0020.0002] # CHEROKEE SMALL LETTER DE -13D5 ; [.34CB.0020.0008] # CHEROKEE LETTER DE -ABA6 ; [.34CC.0020.0002] # CHEROKEE SMALL LETTER TE -13D6 ; [.34CC.0020.0008] # CHEROKEE LETTER TE -ABA7 ; [.34CD.0020.0002] # CHEROKEE SMALL LETTER DI -13D7 ; [.34CD.0020.0008] # CHEROKEE LETTER DI -ABA8 ; [.34CE.0020.0002] # CHEROKEE SMALL LETTER TI -13D8 ; [.34CE.0020.0008] # CHEROKEE LETTER TI -ABA9 ; [.34CF.0020.0002] # CHEROKEE SMALL LETTER DO -13D9 ; [.34CF.0020.0008] # CHEROKEE LETTER DO -ABAA ; [.34D0.0020.0002] # CHEROKEE SMALL LETTER DU -13DA ; [.34D0.0020.0008] # CHEROKEE LETTER DU -ABAB ; [.34D1.0020.0002] # CHEROKEE SMALL LETTER DV -13DB ; [.34D1.0020.0008] # CHEROKEE LETTER DV -ABAC ; [.34D2.0020.0002] # CHEROKEE SMALL LETTER DLA -13DC ; [.34D2.0020.0008] # CHEROKEE LETTER DLA -ABAD ; [.34D3.0020.0002] # CHEROKEE SMALL LETTER TLA -13DD ; [.34D3.0020.0008] # CHEROKEE LETTER TLA -ABAE ; [.34D4.0020.0002] # CHEROKEE SMALL LETTER TLE -13DE ; [.34D4.0020.0008] # CHEROKEE LETTER TLE -ABAF ; [.34D5.0020.0002] # CHEROKEE SMALL LETTER TLI -13DF ; [.34D5.0020.0008] # CHEROKEE LETTER TLI -ABB0 ; [.34D6.0020.0002] # CHEROKEE SMALL LETTER TLO -13E0 ; [.34D6.0020.0008] # CHEROKEE LETTER TLO -ABB1 ; [.34D7.0020.0002] # CHEROKEE SMALL LETTER TLU -13E1 ; [.34D7.0020.0008] # CHEROKEE LETTER TLU -ABB2 ; [.34D8.0020.0002] # CHEROKEE SMALL LETTER TLV -13E2 ; [.34D8.0020.0008] # CHEROKEE LETTER TLV -ABB3 ; [.34D9.0020.0002] # CHEROKEE SMALL LETTER TSA -13E3 ; [.34D9.0020.0008] # CHEROKEE LETTER TSA -ABB4 ; [.34DA.0020.0002] # CHEROKEE SMALL LETTER TSE -13E4 ; [.34DA.0020.0008] # CHEROKEE LETTER TSE -ABB5 ; [.34DB.0020.0002] # CHEROKEE SMALL LETTER TSI -13E5 ; [.34DB.0020.0008] # CHEROKEE LETTER TSI -ABB6 ; [.34DC.0020.0002] # CHEROKEE SMALL LETTER TSO -13E6 ; [.34DC.0020.0008] # CHEROKEE LETTER TSO -ABB7 ; [.34DD.0020.0002] # CHEROKEE SMALL LETTER TSU -13E7 ; [.34DD.0020.0008] # CHEROKEE LETTER TSU -ABB8 ; [.34DE.0020.0002] # CHEROKEE SMALL LETTER TSV -13E8 ; [.34DE.0020.0008] # CHEROKEE LETTER TSV -ABB9 ; [.34DF.0020.0002] # CHEROKEE SMALL LETTER WA -13E9 ; [.34DF.0020.0008] # CHEROKEE LETTER WA -ABBA ; [.34E0.0020.0002] # CHEROKEE SMALL LETTER WE -13EA ; [.34E0.0020.0008] # CHEROKEE LETTER WE -ABBB ; [.34E1.0020.0002] # CHEROKEE SMALL LETTER WI -13EB ; [.34E1.0020.0008] # CHEROKEE LETTER WI -ABBC ; [.34E2.0020.0002] # CHEROKEE SMALL LETTER WO -13EC ; [.34E2.0020.0008] # CHEROKEE LETTER WO -ABBD ; [.34E3.0020.0002] # CHEROKEE SMALL LETTER WU -13ED ; [.34E3.0020.0008] # CHEROKEE LETTER WU -ABBE ; [.34E4.0020.0002] # CHEROKEE SMALL LETTER WV -13EE ; [.34E4.0020.0008] # CHEROKEE LETTER WV -ABBF ; [.34E5.0020.0002] # CHEROKEE SMALL LETTER YA -13EF ; [.34E5.0020.0008] # CHEROKEE LETTER YA -13F8 ; [.34E6.0020.0002] # CHEROKEE SMALL LETTER YE -13F0 ; [.34E6.0020.0008] # CHEROKEE LETTER YE -13F9 ; [.34E7.0020.0002] # CHEROKEE SMALL LETTER YI -13F1 ; [.34E7.0020.0008] # CHEROKEE LETTER YI -13FA ; [.34E8.0020.0002] # CHEROKEE SMALL LETTER YO -13F2 ; [.34E8.0020.0008] # CHEROKEE LETTER YO -13FB ; [.34E9.0020.0002] # CHEROKEE SMALL LETTER YU -13F3 ; [.34E9.0020.0008] # CHEROKEE LETTER YU -13FC ; [.34EA.0020.0002] # CHEROKEE SMALL LETTER YV -13F4 ; [.34EA.0020.0008] # CHEROKEE LETTER YV -13FD ; [.34EB.0020.0002] # CHEROKEE SMALL LETTER MV -13F5 ; [.34EB.0020.0008] # CHEROKEE LETTER MV -104D8 ; [.34EC.0020.0002] # OSAGE SMALL LETTER A -104B0 ; [.34EC.0020.0008] # OSAGE CAPITAL LETTER A -104D9 ; [.34ED.0020.0002] # OSAGE SMALL LETTER AI -104B1 ; [.34ED.0020.0008] # OSAGE CAPITAL LETTER AI -104DA ; [.34EE.0020.0002] # OSAGE SMALL LETTER AIN -104B2 ; [.34EE.0020.0008] # OSAGE CAPITAL LETTER AIN -104DB ; [.34EF.0020.0002] # OSAGE SMALL LETTER AH -104B3 ; [.34EF.0020.0008] # OSAGE CAPITAL LETTER AH -104DC ; [.34F0.0020.0002] # OSAGE SMALL LETTER BRA -104B4 ; [.34F0.0020.0008] # OSAGE CAPITAL LETTER BRA -104DD ; [.34F1.0020.0002] # OSAGE SMALL LETTER CHA -104B5 ; [.34F1.0020.0008] # OSAGE CAPITAL LETTER CHA -104DE ; [.34F2.0020.0002] # OSAGE SMALL LETTER EHCHA -104B6 ; [.34F2.0020.0008] # OSAGE CAPITAL LETTER EHCHA -104DF ; [.34F3.0020.0002] # OSAGE SMALL LETTER E -104B7 ; [.34F3.0020.0008] # OSAGE CAPITAL LETTER E -104E0 ; [.34F4.0020.0002] # OSAGE SMALL LETTER EIN -104B8 ; [.34F4.0020.0008] # OSAGE CAPITAL LETTER EIN -104E1 ; [.34F5.0020.0002] # OSAGE SMALL LETTER HA -104B9 ; [.34F5.0020.0008] # OSAGE CAPITAL LETTER HA -104E2 ; [.34F6.0020.0002] # OSAGE SMALL LETTER HYA -104BA ; [.34F6.0020.0008] # OSAGE CAPITAL LETTER HYA -104E3 ; [.34F7.0020.0002] # OSAGE SMALL LETTER I -104BB ; [.34F7.0020.0008] # OSAGE CAPITAL LETTER I -104E4 ; [.34F8.0020.0002] # OSAGE SMALL LETTER KA -104BC ; [.34F8.0020.0008] # OSAGE CAPITAL LETTER KA -104E5 ; [.34F9.0020.0002] # OSAGE SMALL LETTER EHKA -104BD ; [.34F9.0020.0008] # OSAGE CAPITAL LETTER EHKA -104E6 ; [.34FA.0020.0002] # OSAGE SMALL LETTER KYA -104BE ; [.34FA.0020.0008] # OSAGE CAPITAL LETTER KYA -104E7 ; [.34FB.0020.0002] # OSAGE SMALL LETTER LA -104BF ; [.34FB.0020.0008] # OSAGE CAPITAL LETTER LA -104E8 ; [.34FC.0020.0002] # OSAGE SMALL LETTER MA -104C0 ; [.34FC.0020.0008] # OSAGE CAPITAL LETTER MA -104E9 ; [.34FD.0020.0002] # OSAGE SMALL LETTER NA -104C1 ; [.34FD.0020.0008] # OSAGE CAPITAL LETTER NA -104EA ; [.34FE.0020.0002] # OSAGE SMALL LETTER O -104C2 ; [.34FE.0020.0008] # OSAGE CAPITAL LETTER O -104EB ; [.34FF.0020.0002] # OSAGE SMALL LETTER OIN -104C3 ; [.34FF.0020.0008] # OSAGE CAPITAL LETTER OIN -104EC ; [.3500.0020.0002] # OSAGE SMALL LETTER PA -104C4 ; [.3500.0020.0008] # OSAGE CAPITAL LETTER PA -104ED ; [.3501.0020.0002] # OSAGE SMALL LETTER EHPA -104C5 ; [.3501.0020.0008] # OSAGE CAPITAL LETTER EHPA -104EE ; [.3502.0020.0002] # OSAGE SMALL LETTER SA -104C6 ; [.3502.0020.0008] # OSAGE CAPITAL LETTER SA -104EF ; [.3503.0020.0002] # OSAGE SMALL LETTER SHA -104C7 ; [.3503.0020.0008] # OSAGE CAPITAL LETTER SHA -104F0 ; [.3504.0020.0002] # OSAGE SMALL LETTER TA -104C8 ; [.3504.0020.0008] # OSAGE CAPITAL LETTER TA -104F1 ; [.3505.0020.0002] # OSAGE SMALL LETTER EHTA -104C9 ; [.3505.0020.0008] # OSAGE CAPITAL LETTER EHTA -104F2 ; [.3506.0020.0002] # OSAGE SMALL LETTER TSA -104CA ; [.3506.0020.0008] # OSAGE CAPITAL LETTER TSA -104F3 ; [.3507.0020.0002] # OSAGE SMALL LETTER EHTSA -104CB ; [.3507.0020.0008] # OSAGE CAPITAL LETTER EHTSA -104F4 ; [.3508.0020.0002] # OSAGE SMALL LETTER TSHA -104CC ; [.3508.0020.0008] # OSAGE CAPITAL LETTER TSHA -104F5 ; [.3509.0020.0002] # OSAGE SMALL LETTER DHA -104CD ; [.3509.0020.0008] # OSAGE CAPITAL LETTER DHA -104F6 ; [.350A.0020.0002] # OSAGE SMALL LETTER U -104CE ; [.350A.0020.0008] # OSAGE CAPITAL LETTER U -104F7 ; [.350B.0020.0002] # OSAGE SMALL LETTER WA -104CF ; [.350B.0020.0008] # OSAGE CAPITAL LETTER WA -104F8 ; [.350C.0020.0002] # OSAGE SMALL LETTER KHA -104D0 ; [.350C.0020.0008] # OSAGE CAPITAL LETTER KHA -104F9 ; [.350D.0020.0002] # OSAGE SMALL LETTER GHA -104D1 ; [.350D.0020.0008] # OSAGE CAPITAL LETTER GHA -104FA ; [.350E.0020.0002] # OSAGE SMALL LETTER ZA -104D2 ; [.350E.0020.0008] # OSAGE CAPITAL LETTER ZA -104FB ; [.350F.0020.0002] # OSAGE SMALL LETTER ZHA -104D3 ; [.350F.0020.0008] # OSAGE CAPITAL LETTER ZHA -1401 ; [.3510.0020.0002] # CANADIAN SYLLABICS E -1402 ; [.3511.0020.0002] # CANADIAN SYLLABICS AAI -1403 ; [.3512.0020.0002] # CANADIAN SYLLABICS I -1404 ; [.3513.0020.0002] # CANADIAN SYLLABICS II -1405 ; [.3514.0020.0002] # CANADIAN SYLLABICS O -1406 ; [.3515.0020.0002] # CANADIAN SYLLABICS OO -1407 ; [.3516.0020.0002] # CANADIAN SYLLABICS Y-CREE OO -1408 ; [.3517.0020.0002] # CANADIAN SYLLABICS CARRIER EE -1409 ; [.3518.0020.0002] # CANADIAN SYLLABICS CARRIER I -140A ; [.3519.0020.0002] # CANADIAN SYLLABICS A -140B ; [.351A.0020.0002] # CANADIAN SYLLABICS AA -140C ; [.351B.0020.0002] # CANADIAN SYLLABICS WE -140D ; [.351C.0020.0002] # CANADIAN SYLLABICS WEST-CREE WE -140E ; [.351D.0020.0002] # CANADIAN SYLLABICS WI -140F ; [.351E.0020.0002] # CANADIAN SYLLABICS WEST-CREE WI -1410 ; [.351F.0020.0002] # CANADIAN SYLLABICS WII -1411 ; [.3520.0020.0002] # CANADIAN SYLLABICS WEST-CREE WII -1412 ; [.3521.0020.0002] # CANADIAN SYLLABICS WO -1413 ; [.3522.0020.0002] # CANADIAN SYLLABICS WEST-CREE WO -1414 ; [.3523.0020.0002] # CANADIAN SYLLABICS WOO -1415 ; [.3524.0020.0002] # CANADIAN SYLLABICS WEST-CREE WOO -1416 ; [.3525.0020.0002] # CANADIAN SYLLABICS NASKAPI WOO -1417 ; [.3526.0020.0002] # CANADIAN SYLLABICS WA -1418 ; [.3527.0020.0002] # CANADIAN SYLLABICS WEST-CREE WA -1419 ; [.3528.0020.0002] # CANADIAN SYLLABICS WAA -141A ; [.3529.0020.0002] # CANADIAN SYLLABICS WEST-CREE WAA -141B ; [.352A.0020.0002] # CANADIAN SYLLABICS NASKAPI WAA -141C ; [.352B.0020.0002] # CANADIAN SYLLABICS AI -141D ; [.352C.0020.0002] # CANADIAN SYLLABICS Y-CREE W -141E ; [.352D.0020.0002] # CANADIAN SYLLABICS GLOTTAL STOP -141F ; [.352E.0020.0002] # CANADIAN SYLLABICS FINAL ACUTE -1420 ; [.352F.0020.0002] # CANADIAN SYLLABICS FINAL GRAVE -1421 ; [.3530.0020.0002] # CANADIAN SYLLABICS FINAL BOTTOM HALF RING -1422 ; [.3531.0020.0002] # CANADIAN SYLLABICS FINAL TOP HALF RING -1423 ; [.3532.0020.0002] # CANADIAN SYLLABICS FINAL RIGHT HALF RING -1424 ; [.3533.0020.0002] # CANADIAN SYLLABICS FINAL RING -1425 ; [.3534.0020.0002] # CANADIAN SYLLABICS FINAL DOUBLE ACUTE -1426 ; [.3535.0020.0002] # CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES -1427 ; [.3536.0020.0002] # CANADIAN SYLLABICS FINAL MIDDLE DOT -1428 ; [.3537.0020.0002] # CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE -1429 ; [.3538.0020.0002] # CANADIAN SYLLABICS FINAL PLUS -142A ; [.3539.0020.0002] # CANADIAN SYLLABICS FINAL DOWN TACK -142B ; [.353A.0020.0002] # CANADIAN SYLLABICS EN -142C ; [.353B.0020.0002] # CANADIAN SYLLABICS IN -142D ; [.353C.0020.0002] # CANADIAN SYLLABICS ON -142E ; [.353D.0020.0002] # CANADIAN SYLLABICS AN -142F ; [.353E.0020.0002] # CANADIAN SYLLABICS PE -1430 ; [.353F.0020.0002] # CANADIAN SYLLABICS PAAI -1431 ; [.3540.0020.0002] # CANADIAN SYLLABICS PI -1432 ; [.3541.0020.0002] # CANADIAN SYLLABICS PII -1433 ; [.3542.0020.0002] # CANADIAN SYLLABICS PO -1434 ; [.3543.0020.0002] # CANADIAN SYLLABICS POO -1435 ; [.3544.0020.0002] # CANADIAN SYLLABICS Y-CREE POO -1436 ; [.3545.0020.0002] # CANADIAN SYLLABICS CARRIER HEE -1437 ; [.3546.0020.0002] # CANADIAN SYLLABICS CARRIER HI -1438 ; [.3547.0020.0002] # CANADIAN SYLLABICS PA -1439 ; [.3548.0020.0002] # CANADIAN SYLLABICS PAA -143A ; [.3549.0020.0002] # CANADIAN SYLLABICS PWE -143B ; [.354A.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWE -143C ; [.354B.0020.0002] # CANADIAN SYLLABICS PWI -143D ; [.354C.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWI -143E ; [.354D.0020.0002] # CANADIAN SYLLABICS PWII -143F ; [.354E.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWII -1440 ; [.354F.0020.0002] # CANADIAN SYLLABICS PWO -1441 ; [.3550.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWO -1442 ; [.3551.0020.0002] # CANADIAN SYLLABICS PWOO -1443 ; [.3552.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWOO -1444 ; [.3553.0020.0002] # CANADIAN SYLLABICS PWA -1445 ; [.3554.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWA -1446 ; [.3555.0020.0002] # CANADIAN SYLLABICS PWAA -1447 ; [.3556.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWAA -1448 ; [.3557.0020.0002] # CANADIAN SYLLABICS Y-CREE PWAA -1449 ; [.3558.0020.0002] # CANADIAN SYLLABICS P -144A ; [.3559.0020.0002] # CANADIAN SYLLABICS WEST-CREE P -144B ; [.355A.0020.0002] # CANADIAN SYLLABICS CARRIER H -144C ; [.355B.0020.0002] # CANADIAN SYLLABICS TE -144D ; [.355C.0020.0002] # CANADIAN SYLLABICS TAAI -144E ; [.355D.0020.0002] # CANADIAN SYLLABICS TI -144F ; [.355E.0020.0002] # CANADIAN SYLLABICS TII -1450 ; [.355F.0020.0002] # CANADIAN SYLLABICS TO -1451 ; [.3560.0020.0002] # CANADIAN SYLLABICS TOO -1452 ; [.3561.0020.0002] # CANADIAN SYLLABICS Y-CREE TOO -1453 ; [.3562.0020.0002] # CANADIAN SYLLABICS CARRIER DEE -1454 ; [.3563.0020.0002] # CANADIAN SYLLABICS CARRIER DI -1455 ; [.3564.0020.0002] # CANADIAN SYLLABICS TA -1456 ; [.3565.0020.0002] # CANADIAN SYLLABICS TAA -1457 ; [.3566.0020.0002] # CANADIAN SYLLABICS TWE -1458 ; [.3567.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWE -1459 ; [.3568.0020.0002] # CANADIAN SYLLABICS TWI -145A ; [.3569.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWI -145B ; [.356A.0020.0002] # CANADIAN SYLLABICS TWII -145C ; [.356B.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWII -145D ; [.356C.0020.0002] # CANADIAN SYLLABICS TWO -145E ; [.356D.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWO -145F ; [.356E.0020.0002] # CANADIAN SYLLABICS TWOO -1460 ; [.356F.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWOO -1461 ; [.3570.0020.0002] # CANADIAN SYLLABICS TWA -1462 ; [.3571.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWA -1463 ; [.3572.0020.0002] # CANADIAN SYLLABICS TWAA -1464 ; [.3573.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWAA -1465 ; [.3574.0020.0002] # CANADIAN SYLLABICS NASKAPI TWAA -1466 ; [.3575.0020.0002] # CANADIAN SYLLABICS T -1467 ; [.3576.0020.0002] # CANADIAN SYLLABICS TTE -1468 ; [.3577.0020.0002] # CANADIAN SYLLABICS TTI -1469 ; [.3578.0020.0002] # CANADIAN SYLLABICS TTO -146A ; [.3579.0020.0002] # CANADIAN SYLLABICS TTA -146B ; [.357A.0020.0002] # CANADIAN SYLLABICS KE -146C ; [.357B.0020.0002] # CANADIAN SYLLABICS KAAI -146D ; [.357C.0020.0002] # CANADIAN SYLLABICS KI -146E ; [.357D.0020.0002] # CANADIAN SYLLABICS KII -146F ; [.357E.0020.0002] # CANADIAN SYLLABICS KO -1470 ; [.357F.0020.0002] # CANADIAN SYLLABICS KOO -1471 ; [.3580.0020.0002] # CANADIAN SYLLABICS Y-CREE KOO -1472 ; [.3581.0020.0002] # CANADIAN SYLLABICS KA -1473 ; [.3582.0020.0002] # CANADIAN SYLLABICS KAA -1474 ; [.3583.0020.0002] # CANADIAN SYLLABICS KWE -1475 ; [.3584.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWE -1476 ; [.3585.0020.0002] # CANADIAN SYLLABICS KWI -1477 ; [.3586.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWI -1478 ; [.3587.0020.0002] # CANADIAN SYLLABICS KWII -1479 ; [.3588.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWII -147A ; [.3589.0020.0002] # CANADIAN SYLLABICS KWO -147B ; [.358A.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWO -147C ; [.358B.0020.0002] # CANADIAN SYLLABICS KWOO -147D ; [.358C.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWOO -147E ; [.358D.0020.0002] # CANADIAN SYLLABICS KWA -147F ; [.358E.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWA -1480 ; [.358F.0020.0002] # CANADIAN SYLLABICS KWAA -1481 ; [.3590.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWAA -1482 ; [.3591.0020.0002] # CANADIAN SYLLABICS NASKAPI KWAA -1483 ; [.3592.0020.0002] # CANADIAN SYLLABICS K -1484 ; [.3593.0020.0002] # CANADIAN SYLLABICS KW -1485 ; [.3594.0020.0002] # CANADIAN SYLLABICS SOUTH-SLAVEY KEH -1486 ; [.3595.0020.0002] # CANADIAN SYLLABICS SOUTH-SLAVEY KIH -1487 ; [.3596.0020.0002] # CANADIAN SYLLABICS SOUTH-SLAVEY KOH -1488 ; [.3597.0020.0002] # CANADIAN SYLLABICS SOUTH-SLAVEY KAH -1489 ; [.3598.0020.0002] # CANADIAN SYLLABICS CE -148A ; [.3599.0020.0002] # CANADIAN SYLLABICS CAAI -148B ; [.359A.0020.0002] # CANADIAN SYLLABICS CI -148C ; [.359B.0020.0002] # CANADIAN SYLLABICS CII -148D ; [.359C.0020.0002] # CANADIAN SYLLABICS CO -148E ; [.359D.0020.0002] # CANADIAN SYLLABICS COO -148F ; [.359E.0020.0002] # CANADIAN SYLLABICS Y-CREE COO -1490 ; [.359F.0020.0002] # CANADIAN SYLLABICS CA -1491 ; [.35A0.0020.0002] # CANADIAN SYLLABICS CAA -1492 ; [.35A1.0020.0002] # CANADIAN SYLLABICS CWE -1493 ; [.35A2.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWE -1494 ; [.35A3.0020.0002] # CANADIAN SYLLABICS CWI -1495 ; [.35A4.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWI -1496 ; [.35A5.0020.0002] # CANADIAN SYLLABICS CWII -1497 ; [.35A6.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWII -1498 ; [.35A7.0020.0002] # CANADIAN SYLLABICS CWO -1499 ; [.35A8.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWO -149A ; [.35A9.0020.0002] # CANADIAN SYLLABICS CWOO -149B ; [.35AA.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWOO -149C ; [.35AB.0020.0002] # CANADIAN SYLLABICS CWA -149D ; [.35AC.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWA -149E ; [.35AD.0020.0002] # CANADIAN SYLLABICS CWAA -149F ; [.35AE.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWAA -14A0 ; [.35AF.0020.0002] # CANADIAN SYLLABICS NASKAPI CWAA -14A1 ; [.35B0.0020.0002] # CANADIAN SYLLABICS C -14A2 ; [.35B1.0020.0002] # CANADIAN SYLLABICS SAYISI TH -14A3 ; [.35B2.0020.0002] # CANADIAN SYLLABICS ME -14A4 ; [.35B3.0020.0002] # CANADIAN SYLLABICS MAAI -14A5 ; [.35B4.0020.0002] # CANADIAN SYLLABICS MI -14A6 ; [.35B5.0020.0002] # CANADIAN SYLLABICS MII -14A7 ; [.35B6.0020.0002] # CANADIAN SYLLABICS MO -14A8 ; [.35B7.0020.0002] # CANADIAN SYLLABICS MOO -14A9 ; [.35B8.0020.0002] # CANADIAN SYLLABICS Y-CREE MOO -14AA ; [.35B9.0020.0002] # CANADIAN SYLLABICS MA -14AB ; [.35BA.0020.0002] # CANADIAN SYLLABICS MAA -14AC ; [.35BB.0020.0002] # CANADIAN SYLLABICS MWE -14AD ; [.35BC.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWE -14AE ; [.35BD.0020.0002] # CANADIAN SYLLABICS MWI -14AF ; [.35BE.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWI -14B0 ; [.35BF.0020.0002] # CANADIAN SYLLABICS MWII -14B1 ; [.35C0.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWII -14B2 ; [.35C1.0020.0002] # CANADIAN SYLLABICS MWO -14B3 ; [.35C2.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWO -14B4 ; [.35C3.0020.0002] # CANADIAN SYLLABICS MWOO -14B5 ; [.35C4.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWOO -14B6 ; [.35C5.0020.0002] # CANADIAN SYLLABICS MWA -14B7 ; [.35C6.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWA -14B8 ; [.35C7.0020.0002] # CANADIAN SYLLABICS MWAA -14B9 ; [.35C8.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWAA -14BA ; [.35C9.0020.0002] # CANADIAN SYLLABICS NASKAPI MWAA -14BB ; [.35CA.0020.0002] # CANADIAN SYLLABICS M -14BC ; [.35CB.0020.0002] # CANADIAN SYLLABICS WEST-CREE M -14BD ; [.35CC.0020.0002] # CANADIAN SYLLABICS MH -14BE ; [.35CD.0020.0002] # CANADIAN SYLLABICS ATHAPASCAN M -14BF ; [.35CE.0020.0002] # CANADIAN SYLLABICS SAYISI M -14C0 ; [.35CF.0020.0002] # CANADIAN SYLLABICS NE -14C1 ; [.35D0.0020.0002] # CANADIAN SYLLABICS NAAI -14C2 ; [.35D1.0020.0002] # CANADIAN SYLLABICS NI -14C3 ; [.35D2.0020.0002] # CANADIAN SYLLABICS NII -14C4 ; [.35D3.0020.0002] # CANADIAN SYLLABICS NO -14C5 ; [.35D4.0020.0002] # CANADIAN SYLLABICS NOO -14C6 ; [.35D5.0020.0002] # CANADIAN SYLLABICS Y-CREE NOO -14C7 ; [.35D6.0020.0002] # CANADIAN SYLLABICS NA -14C8 ; [.35D7.0020.0002] # CANADIAN SYLLABICS NAA -14C9 ; [.35D8.0020.0002] # CANADIAN SYLLABICS NWE -14CA ; [.35D9.0020.0002] # CANADIAN SYLLABICS WEST-CREE NWE -14CB ; [.35DA.0020.0002] # CANADIAN SYLLABICS NWA -14CC ; [.35DB.0020.0002] # CANADIAN SYLLABICS WEST-CREE NWA -14CD ; [.35DC.0020.0002] # CANADIAN SYLLABICS NWAA -14CE ; [.35DD.0020.0002] # CANADIAN SYLLABICS WEST-CREE NWAA -14CF ; [.35DE.0020.0002] # CANADIAN SYLLABICS NASKAPI NWAA -14D0 ; [.35DF.0020.0002] # CANADIAN SYLLABICS N -14D1 ; [.35E0.0020.0002] # CANADIAN SYLLABICS CARRIER NG -14D2 ; [.35E1.0020.0002] # CANADIAN SYLLABICS NH -14D3 ; [.35E2.0020.0002] # CANADIAN SYLLABICS LE -14D4 ; [.35E3.0020.0002] # CANADIAN SYLLABICS LAAI -14D5 ; [.35E4.0020.0002] # CANADIAN SYLLABICS LI -14D6 ; [.35E5.0020.0002] # CANADIAN SYLLABICS LII -14D7 ; [.35E6.0020.0002] # CANADIAN SYLLABICS LO -14D8 ; [.35E7.0020.0002] # CANADIAN SYLLABICS LOO -14D9 ; [.35E8.0020.0002] # CANADIAN SYLLABICS Y-CREE LOO -14DA ; [.35E9.0020.0002] # CANADIAN SYLLABICS LA -14DB ; [.35EA.0020.0002] # CANADIAN SYLLABICS LAA -14DC ; [.35EB.0020.0002] # CANADIAN SYLLABICS LWE -14DD ; [.35EC.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWE -14DE ; [.35ED.0020.0002] # CANADIAN SYLLABICS LWI -14DF ; [.35EE.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWI -14E0 ; [.35EF.0020.0002] # CANADIAN SYLLABICS LWII -14E1 ; [.35F0.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWII -14E2 ; [.35F1.0020.0002] # CANADIAN SYLLABICS LWO -14E3 ; [.35F2.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWO -14E4 ; [.35F3.0020.0002] # CANADIAN SYLLABICS LWOO -14E5 ; [.35F4.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWOO -14E6 ; [.35F5.0020.0002] # CANADIAN SYLLABICS LWA -14E7 ; [.35F6.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWA -14E8 ; [.35F7.0020.0002] # CANADIAN SYLLABICS LWAA -14E9 ; [.35F8.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWAA -14EA ; [.35F9.0020.0002] # CANADIAN SYLLABICS L -14EB ; [.35FA.0020.0002] # CANADIAN SYLLABICS WEST-CREE L -14EC ; [.35FB.0020.0002] # CANADIAN SYLLABICS MEDIAL L -14ED ; [.35FC.0020.0002] # CANADIAN SYLLABICS SE -14EE ; [.35FD.0020.0002] # CANADIAN SYLLABICS SAAI -14EF ; [.35FE.0020.0002] # CANADIAN SYLLABICS SI -14F0 ; [.35FF.0020.0002] # CANADIAN SYLLABICS SII -14F1 ; [.3600.0020.0002] # CANADIAN SYLLABICS SO -14F2 ; [.3601.0020.0002] # CANADIAN SYLLABICS SOO -14F3 ; [.3602.0020.0002] # CANADIAN SYLLABICS Y-CREE SOO -14F4 ; [.3603.0020.0002] # CANADIAN SYLLABICS SA -14F5 ; [.3604.0020.0002] # CANADIAN SYLLABICS SAA -14F6 ; [.3605.0020.0002] # CANADIAN SYLLABICS SWE -14F7 ; [.3606.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWE -14F8 ; [.3607.0020.0002] # CANADIAN SYLLABICS SWI -14F9 ; [.3608.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWI -14FA ; [.3609.0020.0002] # CANADIAN SYLLABICS SWII -14FB ; [.360A.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWII -14FC ; [.360B.0020.0002] # CANADIAN SYLLABICS SWO -14FD ; [.360C.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWO -14FE ; [.360D.0020.0002] # CANADIAN SYLLABICS SWOO -14FF ; [.360E.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWOO -1500 ; [.360F.0020.0002] # CANADIAN SYLLABICS SWA -1501 ; [.3610.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWA -1502 ; [.3611.0020.0002] # CANADIAN SYLLABICS SWAA -1503 ; [.3612.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWAA -1504 ; [.3613.0020.0002] # CANADIAN SYLLABICS NASKAPI SWAA -1505 ; [.3614.0020.0002] # CANADIAN SYLLABICS S -1506 ; [.3615.0020.0002] # CANADIAN SYLLABICS ATHAPASCAN S -1507 ; [.3616.0020.0002] # CANADIAN SYLLABICS SW -1508 ; [.3617.0020.0002] # CANADIAN SYLLABICS BLACKFOOT S -1509 ; [.3618.0020.0002] # CANADIAN SYLLABICS MOOSE-CREE SK -150A ; [.3619.0020.0002] # CANADIAN SYLLABICS NASKAPI SKW -150B ; [.361A.0020.0002] # CANADIAN SYLLABICS NASKAPI S-W -150C ; [.361B.0020.0002] # CANADIAN SYLLABICS NASKAPI SPWA -150D ; [.361C.0020.0002] # CANADIAN SYLLABICS NASKAPI STWA -150E ; [.361D.0020.0002] # CANADIAN SYLLABICS NASKAPI SKWA -150F ; [.361E.0020.0002] # CANADIAN SYLLABICS NASKAPI SCWA -1510 ; [.361F.0020.0002] # CANADIAN SYLLABICS SHE -1511 ; [.3620.0020.0002] # CANADIAN SYLLABICS SHI -1512 ; [.3621.0020.0002] # CANADIAN SYLLABICS SHII -1513 ; [.3622.0020.0002] # CANADIAN SYLLABICS SHO -1514 ; [.3623.0020.0002] # CANADIAN SYLLABICS SHOO -1515 ; [.3624.0020.0002] # CANADIAN SYLLABICS SHA -1516 ; [.3625.0020.0002] # CANADIAN SYLLABICS SHAA -1517 ; [.3626.0020.0002] # CANADIAN SYLLABICS SHWE -1518 ; [.3627.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWE -1519 ; [.3628.0020.0002] # CANADIAN SYLLABICS SHWI -151A ; [.3629.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWI -151B ; [.362A.0020.0002] # CANADIAN SYLLABICS SHWII -151C ; [.362B.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWII -151D ; [.362C.0020.0002] # CANADIAN SYLLABICS SHWO -151E ; [.362D.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWO -151F ; [.362E.0020.0002] # CANADIAN SYLLABICS SHWOO -1520 ; [.362F.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWOO -1521 ; [.3630.0020.0002] # CANADIAN SYLLABICS SHWA -1522 ; [.3631.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWA -1523 ; [.3632.0020.0002] # CANADIAN SYLLABICS SHWAA -1524 ; [.3633.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWAA -1525 ; [.3634.0020.0002] # CANADIAN SYLLABICS SH -1526 ; [.3635.0020.0002] # CANADIAN SYLLABICS YE -1527 ; [.3636.0020.0002] # CANADIAN SYLLABICS YAAI -1528 ; [.3637.0020.0002] # CANADIAN SYLLABICS YI -1529 ; [.3638.0020.0002] # CANADIAN SYLLABICS YII -152A ; [.3639.0020.0002] # CANADIAN SYLLABICS YO -152B ; [.363A.0020.0002] # CANADIAN SYLLABICS YOO -152C ; [.363B.0020.0002] # CANADIAN SYLLABICS Y-CREE YOO -152D ; [.363C.0020.0002] # CANADIAN SYLLABICS YA -152E ; [.363D.0020.0002] # CANADIAN SYLLABICS YAA -152F ; [.363E.0020.0002] # CANADIAN SYLLABICS YWE -1530 ; [.363F.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWE -1531 ; [.3640.0020.0002] # CANADIAN SYLLABICS YWI -1532 ; [.3641.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWI -1533 ; [.3642.0020.0002] # CANADIAN SYLLABICS YWII -1534 ; [.3643.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWII -1535 ; [.3644.0020.0002] # CANADIAN SYLLABICS YWO -1536 ; [.3645.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWO -1537 ; [.3646.0020.0002] # CANADIAN SYLLABICS YWOO -1538 ; [.3647.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWOO -1539 ; [.3648.0020.0002] # CANADIAN SYLLABICS YWA -153A ; [.3649.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWA -153B ; [.364A.0020.0002] # CANADIAN SYLLABICS YWAA -153C ; [.364B.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWAA -153D ; [.364C.0020.0002] # CANADIAN SYLLABICS NASKAPI YWAA -153E ; [.364D.0020.0002] # CANADIAN SYLLABICS Y -153F ; [.364E.0020.0002] # CANADIAN SYLLABICS BIBLE-CREE Y -1540 ; [.364F.0020.0002] # CANADIAN SYLLABICS WEST-CREE Y -1541 ; [.3650.0020.0002] # CANADIAN SYLLABICS SAYISI YI -1542 ; [.3651.0020.0002] # CANADIAN SYLLABICS RE -1543 ; [.3652.0020.0002] # CANADIAN SYLLABICS R-CREE RE -1544 ; [.3653.0020.0002] # CANADIAN SYLLABICS WEST-CREE LE -1545 ; [.3654.0020.0002] # CANADIAN SYLLABICS RAAI -1546 ; [.3655.0020.0002] # CANADIAN SYLLABICS RI -1547 ; [.3656.0020.0002] # CANADIAN SYLLABICS RII -1548 ; [.3657.0020.0002] # CANADIAN SYLLABICS RO -1549 ; [.3658.0020.0002] # CANADIAN SYLLABICS ROO -154A ; [.3659.0020.0002] # CANADIAN SYLLABICS WEST-CREE LO -154B ; [.365A.0020.0002] # CANADIAN SYLLABICS RA -154C ; [.365B.0020.0002] # CANADIAN SYLLABICS RAA -154D ; [.365C.0020.0002] # CANADIAN SYLLABICS WEST-CREE LA -154E ; [.365D.0020.0002] # CANADIAN SYLLABICS RWAA -154F ; [.365E.0020.0002] # CANADIAN SYLLABICS WEST-CREE RWAA -1550 ; [.365F.0020.0002] # CANADIAN SYLLABICS R -1551 ; [.3660.0020.0002] # CANADIAN SYLLABICS WEST-CREE R -1552 ; [.3661.0020.0002] # CANADIAN SYLLABICS MEDIAL R -1553 ; [.3662.0020.0002] # CANADIAN SYLLABICS FE -1554 ; [.3663.0020.0002] # CANADIAN SYLLABICS FAAI -1555 ; [.3664.0020.0002] # CANADIAN SYLLABICS FI -1556 ; [.3665.0020.0002] # CANADIAN SYLLABICS FII -1557 ; [.3666.0020.0002] # CANADIAN SYLLABICS FO -1558 ; [.3667.0020.0002] # CANADIAN SYLLABICS FOO -1559 ; [.3668.0020.0002] # CANADIAN SYLLABICS FA -155A ; [.3669.0020.0002] # CANADIAN SYLLABICS FAA -155B ; [.366A.0020.0002] # CANADIAN SYLLABICS FWAA -155C ; [.366B.0020.0002] # CANADIAN SYLLABICS WEST-CREE FWAA -155D ; [.366C.0020.0002] # CANADIAN SYLLABICS F -155E ; [.366D.0020.0002] # CANADIAN SYLLABICS THE -155F ; [.366E.0020.0002] # CANADIAN SYLLABICS N-CREE THE -1560 ; [.366F.0020.0002] # CANADIAN SYLLABICS THI -1561 ; [.3670.0020.0002] # CANADIAN SYLLABICS N-CREE THI -1562 ; [.3671.0020.0002] # CANADIAN SYLLABICS THII -1563 ; [.3672.0020.0002] # CANADIAN SYLLABICS N-CREE THII -1564 ; [.3673.0020.0002] # CANADIAN SYLLABICS THO -1565 ; [.3674.0020.0002] # CANADIAN SYLLABICS THOO -1566 ; [.3675.0020.0002] # CANADIAN SYLLABICS THA -1567 ; [.3676.0020.0002] # CANADIAN SYLLABICS THAA -1568 ; [.3677.0020.0002] # CANADIAN SYLLABICS THWAA -1569 ; [.3678.0020.0002] # CANADIAN SYLLABICS WEST-CREE THWAA -156A ; [.3679.0020.0002] # CANADIAN SYLLABICS TH -156B ; [.367A.0020.0002] # CANADIAN SYLLABICS TTHE -156C ; [.367B.0020.0002] # CANADIAN SYLLABICS TTHI -156D ; [.367C.0020.0002] # CANADIAN SYLLABICS TTHO -156E ; [.367D.0020.0002] # CANADIAN SYLLABICS TTHA -156F ; [.367E.0020.0002] # CANADIAN SYLLABICS TTH -1570 ; [.367F.0020.0002] # CANADIAN SYLLABICS TYE -1571 ; [.3680.0020.0002] # CANADIAN SYLLABICS TYI -1572 ; [.3681.0020.0002] # CANADIAN SYLLABICS TYO -1573 ; [.3682.0020.0002] # CANADIAN SYLLABICS TYA -1574 ; [.3683.0020.0002] # CANADIAN SYLLABICS NUNAVIK HE -1575 ; [.3684.0020.0002] # CANADIAN SYLLABICS NUNAVIK HI -1576 ; [.3685.0020.0002] # CANADIAN SYLLABICS NUNAVIK HII -1577 ; [.3686.0020.0002] # CANADIAN SYLLABICS NUNAVIK HO -1578 ; [.3687.0020.0002] # CANADIAN SYLLABICS NUNAVIK HOO -1579 ; [.3688.0020.0002] # CANADIAN SYLLABICS NUNAVIK HA -157A ; [.3689.0020.0002] # CANADIAN SYLLABICS NUNAVIK HAA -157B ; [.368A.0020.0002] # CANADIAN SYLLABICS NUNAVIK H -157D ; [.368B.0020.0002] # CANADIAN SYLLABICS HK -166F ; [.368C.0020.0002] # CANADIAN SYLLABICS QAI -157E ; [.368D.0020.0002] # CANADIAN SYLLABICS QAAI -157F ; [.368E.0020.0002] # CANADIAN SYLLABICS QI -1580 ; [.368F.0020.0002] # CANADIAN SYLLABICS QII -1581 ; [.3690.0020.0002] # CANADIAN SYLLABICS QO -1582 ; [.3691.0020.0002] # CANADIAN SYLLABICS QOO -1583 ; [.3692.0020.0002] # CANADIAN SYLLABICS QA -1584 ; [.3693.0020.0002] # CANADIAN SYLLABICS QAA -1585 ; [.3694.0020.0002] # CANADIAN SYLLABICS Q -1586 ; [.3695.0020.0002] # CANADIAN SYLLABICS TLHE -1587 ; [.3696.0020.0002] # CANADIAN SYLLABICS TLHI -1588 ; [.3697.0020.0002] # CANADIAN SYLLABICS TLHO -1589 ; [.3698.0020.0002] # CANADIAN SYLLABICS TLHA -158A ; [.3699.0020.0002] # CANADIAN SYLLABICS WEST-CREE RE -158B ; [.369A.0020.0002] # CANADIAN SYLLABICS WEST-CREE RI -158C ; [.369B.0020.0002] # CANADIAN SYLLABICS WEST-CREE RO -158D ; [.369C.0020.0002] # CANADIAN SYLLABICS WEST-CREE RA -1670 ; [.369D.0020.0002] # CANADIAN SYLLABICS NGAI -158E ; [.369E.0020.0002] # CANADIAN SYLLABICS NGAAI -158F ; [.369F.0020.0002] # CANADIAN SYLLABICS NGI -1590 ; [.36A0.0020.0002] # CANADIAN SYLLABICS NGII -1591 ; [.36A1.0020.0002] # CANADIAN SYLLABICS NGO -1592 ; [.36A2.0020.0002] # CANADIAN SYLLABICS NGOO -1593 ; [.36A3.0020.0002] # CANADIAN SYLLABICS NGA -1594 ; [.36A4.0020.0002] # CANADIAN SYLLABICS NGAA -1595 ; [.36A5.0020.0002] # CANADIAN SYLLABICS NG -1671 ; [.36A6.0020.0002] # CANADIAN SYLLABICS NNGI -1672 ; [.36A7.0020.0002] # CANADIAN SYLLABICS NNGII -1673 ; [.36A8.0020.0002] # CANADIAN SYLLABICS NNGO -1674 ; [.36A9.0020.0002] # CANADIAN SYLLABICS NNGOO -1675 ; [.36AA.0020.0002] # CANADIAN SYLLABICS NNGA -1676 ; [.36AB.0020.0002] # CANADIAN SYLLABICS NNGAA -1596 ; [.36AC.0020.0002] # CANADIAN SYLLABICS NNG -1597 ; [.36AD.0020.0002] # CANADIAN SYLLABICS SAYISI SHE -1598 ; [.36AE.0020.0002] # CANADIAN SYLLABICS SAYISI SHI -1599 ; [.36AF.0020.0002] # CANADIAN SYLLABICS SAYISI SHO -159A ; [.36B0.0020.0002] # CANADIAN SYLLABICS SAYISI SHA -159B ; [.36B1.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THE -159C ; [.36B2.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THI -159D ; [.36B3.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THO -159E ; [.36B4.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THA -159F ; [.36B5.0020.0002] # CANADIAN SYLLABICS WOODS-CREE TH -15A0 ; [.36B6.0020.0002] # CANADIAN SYLLABICS LHI -15A1 ; [.36B7.0020.0002] # CANADIAN SYLLABICS LHII -15A2 ; [.36B8.0020.0002] # CANADIAN SYLLABICS LHO -15A3 ; [.36B9.0020.0002] # CANADIAN SYLLABICS LHOO -15A4 ; [.36BA.0020.0002] # CANADIAN SYLLABICS LHA -15A5 ; [.36BB.0020.0002] # CANADIAN SYLLABICS LHAA -15A6 ; [.36BC.0020.0002] # CANADIAN SYLLABICS LH -157C ; [.36BD.0020.0002] # CANADIAN SYLLABICS NUNAVUT H -15A7 ; [.36BE.0020.0002] # CANADIAN SYLLABICS TH-CREE THE -15A8 ; [.36BF.0020.0002] # CANADIAN SYLLABICS TH-CREE THI -15A9 ; [.36C0.0020.0002] # CANADIAN SYLLABICS TH-CREE THII -15AA ; [.36C1.0020.0002] # CANADIAN SYLLABICS TH-CREE THO -15AB ; [.36C2.0020.0002] # CANADIAN SYLLABICS TH-CREE THOO -15AC ; [.36C3.0020.0002] # CANADIAN SYLLABICS TH-CREE THA -15AD ; [.36C4.0020.0002] # CANADIAN SYLLABICS TH-CREE THAA -15AE ; [.36C5.0020.0002] # CANADIAN SYLLABICS TH-CREE TH -15AF ; [.36C6.0020.0002] # CANADIAN SYLLABICS AIVILIK B -15B0 ; [.36C7.0020.0002] # CANADIAN SYLLABICS BLACKFOOT E -15B1 ; [.36C8.0020.0002] # CANADIAN SYLLABICS BLACKFOOT I -15B2 ; [.36C9.0020.0002] # CANADIAN SYLLABICS BLACKFOOT O -15B3 ; [.36CA.0020.0002] # CANADIAN SYLLABICS BLACKFOOT A -15B4 ; [.36CB.0020.0002] # CANADIAN SYLLABICS BLACKFOOT WE -15B5 ; [.36CC.0020.0002] # CANADIAN SYLLABICS BLACKFOOT WI -15B6 ; [.36CD.0020.0002] # CANADIAN SYLLABICS BLACKFOOT WO -15B7 ; [.36CE.0020.0002] # CANADIAN SYLLABICS BLACKFOOT WA -15B8 ; [.36CF.0020.0002] # CANADIAN SYLLABICS BLACKFOOT NE -15B9 ; [.36D0.0020.0002] # CANADIAN SYLLABICS BLACKFOOT NI -15BA ; [.36D1.0020.0002] # CANADIAN SYLLABICS BLACKFOOT NO -15BB ; [.36D2.0020.0002] # CANADIAN SYLLABICS BLACKFOOT NA -15BC ; [.36D3.0020.0002] # CANADIAN SYLLABICS BLACKFOOT KE -15BD ; [.36D4.0020.0002] # CANADIAN SYLLABICS BLACKFOOT KI -15BE ; [.36D5.0020.0002] # CANADIAN SYLLABICS BLACKFOOT KO -15BF ; [.36D6.0020.0002] # CANADIAN SYLLABICS BLACKFOOT KA -15C0 ; [.36D7.0020.0002] # CANADIAN SYLLABICS SAYISI HE -15C1 ; [.36D8.0020.0002] # CANADIAN SYLLABICS SAYISI HI -15C2 ; [.36D9.0020.0002] # CANADIAN SYLLABICS SAYISI HO -15C3 ; [.36DA.0020.0002] # CANADIAN SYLLABICS SAYISI HA -15C4 ; [.36DB.0020.0002] # CANADIAN SYLLABICS CARRIER GHU -15C5 ; [.36DC.0020.0002] # CANADIAN SYLLABICS CARRIER GHO -15C6 ; [.36DD.0020.0002] # CANADIAN SYLLABICS CARRIER GHE -15C7 ; [.36DE.0020.0002] # CANADIAN SYLLABICS CARRIER GHEE -15C8 ; [.36DF.0020.0002] # CANADIAN SYLLABICS CARRIER GHI -15C9 ; [.36E0.0020.0002] # CANADIAN SYLLABICS CARRIER GHA -15CA ; [.36E1.0020.0002] # CANADIAN SYLLABICS CARRIER RU -15CB ; [.36E2.0020.0002] # CANADIAN SYLLABICS CARRIER RO -15CC ; [.36E3.0020.0002] # CANADIAN SYLLABICS CARRIER RE -15CD ; [.36E4.0020.0002] # CANADIAN SYLLABICS CARRIER REE -15CE ; [.36E5.0020.0002] # CANADIAN SYLLABICS CARRIER RI -15CF ; [.36E6.0020.0002] # CANADIAN SYLLABICS CARRIER RA -15D0 ; [.36E7.0020.0002] # CANADIAN SYLLABICS CARRIER WU -15D1 ; [.36E8.0020.0002] # CANADIAN SYLLABICS CARRIER WO -15D2 ; [.36E9.0020.0002] # CANADIAN SYLLABICS CARRIER WE -15D3 ; [.36EA.0020.0002] # CANADIAN SYLLABICS CARRIER WEE -15D4 ; [.36EB.0020.0002] # CANADIAN SYLLABICS CARRIER WI -15D5 ; [.36EC.0020.0002] # CANADIAN SYLLABICS CARRIER WA -15D6 ; [.36ED.0020.0002] # CANADIAN SYLLABICS CARRIER HWU -15D7 ; [.36EE.0020.0002] # CANADIAN SYLLABICS CARRIER HWO -15D8 ; [.36EF.0020.0002] # CANADIAN SYLLABICS CARRIER HWE -15D9 ; [.36F0.0020.0002] # CANADIAN SYLLABICS CARRIER HWEE -15DA ; [.36F1.0020.0002] # CANADIAN SYLLABICS CARRIER HWI -15DB ; [.36F2.0020.0002] # CANADIAN SYLLABICS CARRIER HWA -15DC ; [.36F3.0020.0002] # CANADIAN SYLLABICS CARRIER THU -15DD ; [.36F4.0020.0002] # CANADIAN SYLLABICS CARRIER THO -15DE ; [.36F5.0020.0002] # CANADIAN SYLLABICS CARRIER THE -15DF ; [.36F6.0020.0002] # CANADIAN SYLLABICS CARRIER THEE -15E0 ; [.36F7.0020.0002] # CANADIAN SYLLABICS CARRIER THI -15E1 ; [.36F8.0020.0002] # CANADIAN SYLLABICS CARRIER THA -15E2 ; [.36F9.0020.0002] # CANADIAN SYLLABICS CARRIER TTU -15E3 ; [.36FA.0020.0002] # CANADIAN SYLLABICS CARRIER TTO -15E4 ; [.36FB.0020.0002] # CANADIAN SYLLABICS CARRIER TTE -15E5 ; [.36FC.0020.0002] # CANADIAN SYLLABICS CARRIER TTEE -15E6 ; [.36FD.0020.0002] # CANADIAN SYLLABICS CARRIER TTI -15E7 ; [.36FE.0020.0002] # CANADIAN SYLLABICS CARRIER TTA -15E8 ; [.36FF.0020.0002] # CANADIAN SYLLABICS CARRIER PU -15E9 ; [.3700.0020.0002] # CANADIAN SYLLABICS CARRIER PO -15EA ; [.3701.0020.0002] # CANADIAN SYLLABICS CARRIER PE -15EB ; [.3702.0020.0002] # CANADIAN SYLLABICS CARRIER PEE -15EC ; [.3703.0020.0002] # CANADIAN SYLLABICS CARRIER PI -15ED ; [.3704.0020.0002] # CANADIAN SYLLABICS CARRIER PA -15EE ; [.3705.0020.0002] # CANADIAN SYLLABICS CARRIER P -15EF ; [.3706.0020.0002] # CANADIAN SYLLABICS CARRIER GU -15F0 ; [.3707.0020.0002] # CANADIAN SYLLABICS CARRIER GO -15F1 ; [.3708.0020.0002] # CANADIAN SYLLABICS CARRIER GE -15F2 ; [.3709.0020.0002] # CANADIAN SYLLABICS CARRIER GEE -15F3 ; [.370A.0020.0002] # CANADIAN SYLLABICS CARRIER GI -15F4 ; [.370B.0020.0002] # CANADIAN SYLLABICS CARRIER GA -15F5 ; [.370C.0020.0002] # CANADIAN SYLLABICS CARRIER KHU -15F6 ; [.370D.0020.0002] # CANADIAN SYLLABICS CARRIER KHO -15F7 ; [.370E.0020.0002] # CANADIAN SYLLABICS CARRIER KHE -15F8 ; [.370F.0020.0002] # CANADIAN SYLLABICS CARRIER KHEE -15F9 ; [.3710.0020.0002] # CANADIAN SYLLABICS CARRIER KHI -15FA ; [.3711.0020.0002] # CANADIAN SYLLABICS CARRIER KHA -15FB ; [.3712.0020.0002] # CANADIAN SYLLABICS CARRIER KKU -15FC ; [.3713.0020.0002] # CANADIAN SYLLABICS CARRIER KKO -15FD ; [.3714.0020.0002] # CANADIAN SYLLABICS CARRIER KKE -15FE ; [.3715.0020.0002] # CANADIAN SYLLABICS CARRIER KKEE -15FF ; [.3716.0020.0002] # CANADIAN SYLLABICS CARRIER KKI -1600 ; [.3717.0020.0002] # CANADIAN SYLLABICS CARRIER KKA -1601 ; [.3718.0020.0002] # CANADIAN SYLLABICS CARRIER KK -1602 ; [.3719.0020.0002] # CANADIAN SYLLABICS CARRIER NU -1603 ; [.371A.0020.0002] # CANADIAN SYLLABICS CARRIER NO -1604 ; [.371B.0020.0002] # CANADIAN SYLLABICS CARRIER NE -1605 ; [.371C.0020.0002] # CANADIAN SYLLABICS CARRIER NEE -1606 ; [.371D.0020.0002] # CANADIAN SYLLABICS CARRIER NI -1607 ; [.371E.0020.0002] # CANADIAN SYLLABICS CARRIER NA -1608 ; [.371F.0020.0002] # CANADIAN SYLLABICS CARRIER MU -1609 ; [.3720.0020.0002] # CANADIAN SYLLABICS CARRIER MO -160A ; [.3721.0020.0002] # CANADIAN SYLLABICS CARRIER ME -160B ; [.3722.0020.0002] # CANADIAN SYLLABICS CARRIER MEE -160C ; [.3723.0020.0002] # CANADIAN SYLLABICS CARRIER MI -160D ; [.3724.0020.0002] # CANADIAN SYLLABICS CARRIER MA -160E ; [.3725.0020.0002] # CANADIAN SYLLABICS CARRIER YU -160F ; [.3726.0020.0002] # CANADIAN SYLLABICS CARRIER YO -1610 ; [.3727.0020.0002] # CANADIAN SYLLABICS CARRIER YE -1611 ; [.3728.0020.0002] # CANADIAN SYLLABICS CARRIER YEE -1612 ; [.3729.0020.0002] # CANADIAN SYLLABICS CARRIER YI -1613 ; [.372A.0020.0002] # CANADIAN SYLLABICS CARRIER YA -1614 ; [.372B.0020.0002] # CANADIAN SYLLABICS CARRIER JU -1615 ; [.372C.0020.0002] # CANADIAN SYLLABICS SAYISI JU -1616 ; [.372D.0020.0002] # CANADIAN SYLLABICS CARRIER JO -1617 ; [.372E.0020.0002] # CANADIAN SYLLABICS CARRIER JE -1618 ; [.372F.0020.0002] # CANADIAN SYLLABICS CARRIER JEE -1619 ; [.3730.0020.0002] # CANADIAN SYLLABICS CARRIER JI -161A ; [.3731.0020.0002] # CANADIAN SYLLABICS SAYISI JI -161B ; [.3732.0020.0002] # CANADIAN SYLLABICS CARRIER JA -161C ; [.3733.0020.0002] # CANADIAN SYLLABICS CARRIER JJU -161D ; [.3734.0020.0002] # CANADIAN SYLLABICS CARRIER JJO -161E ; [.3735.0020.0002] # CANADIAN SYLLABICS CARRIER JJE -161F ; [.3736.0020.0002] # CANADIAN SYLLABICS CARRIER JJEE -1620 ; [.3737.0020.0002] # CANADIAN SYLLABICS CARRIER JJI -1621 ; [.3738.0020.0002] # CANADIAN SYLLABICS CARRIER JJA -1622 ; [.3739.0020.0002] # CANADIAN SYLLABICS CARRIER LU -1623 ; [.373A.0020.0002] # CANADIAN SYLLABICS CARRIER LO -1624 ; [.373B.0020.0002] # CANADIAN SYLLABICS CARRIER LE -1625 ; [.373C.0020.0002] # CANADIAN SYLLABICS CARRIER LEE -1626 ; [.373D.0020.0002] # CANADIAN SYLLABICS CARRIER LI -1627 ; [.373E.0020.0002] # CANADIAN SYLLABICS CARRIER LA -1628 ; [.373F.0020.0002] # CANADIAN SYLLABICS CARRIER DLU -1629 ; [.3740.0020.0002] # CANADIAN SYLLABICS CARRIER DLO -162A ; [.3741.0020.0002] # CANADIAN SYLLABICS CARRIER DLE -162B ; [.3742.0020.0002] # CANADIAN SYLLABICS CARRIER DLEE -162C ; [.3743.0020.0002] # CANADIAN SYLLABICS CARRIER DLI -162D ; [.3744.0020.0002] # CANADIAN SYLLABICS CARRIER DLA -162E ; [.3745.0020.0002] # CANADIAN SYLLABICS CARRIER LHU -162F ; [.3746.0020.0002] # CANADIAN SYLLABICS CARRIER LHO -1630 ; [.3747.0020.0002] # CANADIAN SYLLABICS CARRIER LHE -1631 ; [.3748.0020.0002] # CANADIAN SYLLABICS CARRIER LHEE -1632 ; [.3749.0020.0002] # CANADIAN SYLLABICS CARRIER LHI -1633 ; [.374A.0020.0002] # CANADIAN SYLLABICS CARRIER LHA -1634 ; [.374B.0020.0002] # CANADIAN SYLLABICS CARRIER TLHU -1635 ; [.374C.0020.0002] # CANADIAN SYLLABICS CARRIER TLHO -1636 ; [.374D.0020.0002] # CANADIAN SYLLABICS CARRIER TLHE -1637 ; [.374E.0020.0002] # CANADIAN SYLLABICS CARRIER TLHEE -1638 ; [.374F.0020.0002] # CANADIAN SYLLABICS CARRIER TLHI -1639 ; [.3750.0020.0002] # CANADIAN SYLLABICS CARRIER TLHA -163A ; [.3751.0020.0002] # CANADIAN SYLLABICS CARRIER TLU -163B ; [.3752.0020.0002] # CANADIAN SYLLABICS CARRIER TLO -163C ; [.3753.0020.0002] # CANADIAN SYLLABICS CARRIER TLE -163D ; [.3754.0020.0002] # CANADIAN SYLLABICS CARRIER TLEE -163E ; [.3755.0020.0002] # CANADIAN SYLLABICS CARRIER TLI -163F ; [.3756.0020.0002] # CANADIAN SYLLABICS CARRIER TLA -1640 ; [.3757.0020.0002] # CANADIAN SYLLABICS CARRIER ZU -1641 ; [.3758.0020.0002] # CANADIAN SYLLABICS CARRIER ZO -1642 ; [.3759.0020.0002] # CANADIAN SYLLABICS CARRIER ZE -1643 ; [.375A.0020.0002] # CANADIAN SYLLABICS CARRIER ZEE -1644 ; [.375B.0020.0002] # CANADIAN SYLLABICS CARRIER ZI -1645 ; [.375C.0020.0002] # CANADIAN SYLLABICS CARRIER ZA -1646 ; [.375D.0020.0002] # CANADIAN SYLLABICS CARRIER Z -1647 ; [.375E.0020.0002] # CANADIAN SYLLABICS CARRIER INITIAL Z -1648 ; [.375F.0020.0002] # CANADIAN SYLLABICS CARRIER DZU -1649 ; [.3760.0020.0002] # CANADIAN SYLLABICS CARRIER DZO -164A ; [.3761.0020.0002] # CANADIAN SYLLABICS CARRIER DZE -164B ; [.3762.0020.0002] # CANADIAN SYLLABICS CARRIER DZEE -164C ; [.3763.0020.0002] # CANADIAN SYLLABICS CARRIER DZI -164D ; [.3764.0020.0002] # CANADIAN SYLLABICS CARRIER DZA -164E ; [.3765.0020.0002] # CANADIAN SYLLABICS CARRIER SU -164F ; [.3766.0020.0002] # CANADIAN SYLLABICS CARRIER SO -1650 ; [.3767.0020.0002] # CANADIAN SYLLABICS CARRIER SE -1651 ; [.3768.0020.0002] # CANADIAN SYLLABICS CARRIER SEE -1652 ; [.3769.0020.0002] # CANADIAN SYLLABICS CARRIER SI -1653 ; [.376A.0020.0002] # CANADIAN SYLLABICS CARRIER SA -1654 ; [.376B.0020.0002] # CANADIAN SYLLABICS CARRIER SHU -1655 ; [.376C.0020.0002] # CANADIAN SYLLABICS CARRIER SHO -1656 ; [.376D.0020.0002] # CANADIAN SYLLABICS CARRIER SHE -1657 ; [.376E.0020.0002] # CANADIAN SYLLABICS CARRIER SHEE -1658 ; [.376F.0020.0002] # CANADIAN SYLLABICS CARRIER SHI -1659 ; [.3770.0020.0002] # CANADIAN SYLLABICS CARRIER SHA -165A ; [.3771.0020.0002] # CANADIAN SYLLABICS CARRIER SH -165B ; [.3772.0020.0002] # CANADIAN SYLLABICS CARRIER TSU -165C ; [.3773.0020.0002] # CANADIAN SYLLABICS CARRIER TSO -165D ; [.3774.0020.0002] # CANADIAN SYLLABICS CARRIER TSE -165E ; [.3775.0020.0002] # CANADIAN SYLLABICS CARRIER TSEE -165F ; [.3776.0020.0002] # CANADIAN SYLLABICS CARRIER TSI -1660 ; [.3777.0020.0002] # CANADIAN SYLLABICS CARRIER TSA -1661 ; [.3778.0020.0002] # CANADIAN SYLLABICS CARRIER CHU -1662 ; [.3779.0020.0002] # CANADIAN SYLLABICS CARRIER CHO -1663 ; [.377A.0020.0002] # CANADIAN SYLLABICS CARRIER CHE -1664 ; [.377B.0020.0002] # CANADIAN SYLLABICS CARRIER CHEE -1665 ; [.377C.0020.0002] # CANADIAN SYLLABICS CARRIER CHI -1666 ; [.377D.0020.0002] # CANADIAN SYLLABICS CARRIER CHA -1667 ; [.377E.0020.0002] # CANADIAN SYLLABICS CARRIER TTSU -1668 ; [.377F.0020.0002] # CANADIAN SYLLABICS CARRIER TTSO -1669 ; [.3780.0020.0002] # CANADIAN SYLLABICS CARRIER TTSE -166A ; [.3781.0020.0002] # CANADIAN SYLLABICS CARRIER TTSEE -166B ; [.3782.0020.0002] # CANADIAN SYLLABICS CARRIER TTSI -166C ; [.3783.0020.0002] # CANADIAN SYLLABICS CARRIER TTSA -1677 ; [.3784.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWEE -1678 ; [.3785.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWI -1679 ; [.3786.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWII -167A ; [.3787.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWO -167B ; [.3788.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWOO -167C ; [.3789.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWA -167D ; [.378A.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWAA -167E ; [.378B.0020.0002] # CANADIAN SYLLABICS WOODS-CREE FINAL TH -167F ; [.378C.0020.0002] # CANADIAN SYLLABICS BLACKFOOT W -18B0 ; [.378D.0020.0002] # CANADIAN SYLLABICS OY -18B1 ; [.378E.0020.0002] # CANADIAN SYLLABICS AY -18B2 ; [.378F.0020.0002] # CANADIAN SYLLABICS AAY -18B3 ; [.3790.0020.0002] # CANADIAN SYLLABICS WAY -18B4 ; [.3791.0020.0002] # CANADIAN SYLLABICS POY -18B5 ; [.3792.0020.0002] # CANADIAN SYLLABICS PAY -18B6 ; [.3793.0020.0002] # CANADIAN SYLLABICS PWOY -18B7 ; [.3794.0020.0002] # CANADIAN SYLLABICS TAY -18B8 ; [.3795.0020.0002] # CANADIAN SYLLABICS KAY -18B9 ; [.3796.0020.0002] # CANADIAN SYLLABICS KWAY -18BA ; [.3797.0020.0002] # CANADIAN SYLLABICS MAY -18BB ; [.3798.0020.0002] # CANADIAN SYLLABICS NOY -18BC ; [.3799.0020.0002] # CANADIAN SYLLABICS NAY -18BD ; [.379A.0020.0002] # CANADIAN SYLLABICS LAY -18BE ; [.379B.0020.0002] # CANADIAN SYLLABICS SOY -18BF ; [.379C.0020.0002] # CANADIAN SYLLABICS SAY -18C0 ; [.379D.0020.0002] # CANADIAN SYLLABICS SHOY -18C1 ; [.379E.0020.0002] # CANADIAN SYLLABICS SHAY -18C2 ; [.379F.0020.0002] # CANADIAN SYLLABICS SHWOY -18C3 ; [.37A0.0020.0002] # CANADIAN SYLLABICS YOY -18C4 ; [.37A1.0020.0002] # CANADIAN SYLLABICS YAY -18C5 ; [.37A2.0020.0002] # CANADIAN SYLLABICS RAY -18C6 ; [.37A3.0020.0002] # CANADIAN SYLLABICS NWI -18C7 ; [.37A4.0020.0002] # CANADIAN SYLLABICS OJIBWAY NWI -18C8 ; [.37A5.0020.0002] # CANADIAN SYLLABICS NWII -18C9 ; [.37A6.0020.0002] # CANADIAN SYLLABICS OJIBWAY NWII -18CA ; [.37A7.0020.0002] # CANADIAN SYLLABICS NWO -18CB ; [.37A8.0020.0002] # CANADIAN SYLLABICS OJIBWAY NWO -18CC ; [.37A9.0020.0002] # CANADIAN SYLLABICS NWOO -18CD ; [.37AA.0020.0002] # CANADIAN SYLLABICS OJIBWAY NWOO -18CE ; [.37AB.0020.0002] # CANADIAN SYLLABICS RWEE -18CF ; [.37AC.0020.0002] # CANADIAN SYLLABICS RWI -18D0 ; [.37AD.0020.0002] # CANADIAN SYLLABICS RWII -18D1 ; [.37AE.0020.0002] # CANADIAN SYLLABICS RWO -18D2 ; [.37AF.0020.0002] # CANADIAN SYLLABICS RWOO -18D3 ; [.37B0.0020.0002] # CANADIAN SYLLABICS RWA -18D4 ; [.37B1.0020.0002] # CANADIAN SYLLABICS OJIBWAY P -18D5 ; [.37B2.0020.0002] # CANADIAN SYLLABICS OJIBWAY T -18D6 ; [.37B3.0020.0002] # CANADIAN SYLLABICS OJIBWAY K -18D7 ; [.37B4.0020.0002] # CANADIAN SYLLABICS OJIBWAY C -18D8 ; [.37B5.0020.0002] # CANADIAN SYLLABICS OJIBWAY M -18D9 ; [.37B6.0020.0002] # CANADIAN SYLLABICS OJIBWAY N -18DA ; [.37B7.0020.0002] # CANADIAN SYLLABICS OJIBWAY S -18DB ; [.37B8.0020.0002] # CANADIAN SYLLABICS OJIBWAY SH -18DC ; [.37B9.0020.0002] # CANADIAN SYLLABICS EASTERN W -18DD ; [.37BA.0020.0002] # CANADIAN SYLLABICS WESTERN W -18DE ; [.37BB.0020.0002] # CANADIAN SYLLABICS FINAL SMALL RING -18DF ; [.37BC.0020.0002] # CANADIAN SYLLABICS FINAL RAISED DOT -18E0 ; [.37BD.0020.0002] # CANADIAN SYLLABICS R-CREE RWE -18E1 ; [.37BE.0020.0002] # CANADIAN SYLLABICS WEST-CREE LOO -18E2 ; [.37BF.0020.0002] # CANADIAN SYLLABICS WEST-CREE LAA -18E3 ; [.37C0.0020.0002] # CANADIAN SYLLABICS THWE -18E4 ; [.37C1.0020.0002] # CANADIAN SYLLABICS THWA -18E5 ; [.37C2.0020.0002] # CANADIAN SYLLABICS TTHWE -18E6 ; [.37C3.0020.0002] # CANADIAN SYLLABICS TTHOO -18E7 ; [.37C4.0020.0002] # CANADIAN SYLLABICS TTHAA -18E8 ; [.37C5.0020.0002] # CANADIAN SYLLABICS TLHWE -18E9 ; [.37C6.0020.0002] # CANADIAN SYLLABICS TLHOO -18EA ; [.37C7.0020.0002] # CANADIAN SYLLABICS SAYISI SHWE -18EB ; [.37C8.0020.0002] # CANADIAN SYLLABICS SAYISI SHOO -18EC ; [.37C9.0020.0002] # CANADIAN SYLLABICS SAYISI HOO -18ED ; [.37CA.0020.0002] # CANADIAN SYLLABICS CARRIER GWU -18EE ; [.37CB.0020.0002] # CANADIAN SYLLABICS CARRIER DENE GEE -18EF ; [.37CC.0020.0002] # CANADIAN SYLLABICS CARRIER GAA -18F0 ; [.37CD.0020.0002] # CANADIAN SYLLABICS CARRIER GWA -18F1 ; [.37CE.0020.0002] # CANADIAN SYLLABICS SAYISI JUU -18F2 ; [.37CF.0020.0002] # CANADIAN SYLLABICS CARRIER JWA -18F3 ; [.37D0.0020.0002] # CANADIAN SYLLABICS BEAVER DENE L -18F4 ; [.37D1.0020.0002] # CANADIAN SYLLABICS BEAVER DENE R -18F5 ; [.37D2.0020.0002] # CANADIAN SYLLABICS CARRIER DENTAL S -1681 ; [.37D3.0020.0002] # OGHAM LETTER BEITH -1682 ; [.37D4.0020.0002] # OGHAM LETTER LUIS -1683 ; [.37D5.0020.0002] # OGHAM LETTER FEARN -1684 ; [.37D6.0020.0002] # OGHAM LETTER SAIL -1685 ; [.37D7.0020.0002] # OGHAM LETTER NION -1686 ; [.37D8.0020.0002] # OGHAM LETTER UATH -1687 ; [.37D9.0020.0002] # OGHAM LETTER DAIR -1688 ; [.37DA.0020.0002] # OGHAM LETTER TINNE -1689 ; [.37DB.0020.0002] # OGHAM LETTER COLL -168A ; [.37DC.0020.0002] # OGHAM LETTER CEIRT -168B ; [.37DD.0020.0002] # OGHAM LETTER MUIN -168C ; [.37DE.0020.0002] # OGHAM LETTER GORT -168D ; [.37DF.0020.0002] # OGHAM LETTER NGEADAL -168E ; [.37E0.0020.0002] # OGHAM LETTER STRAIF -168F ; [.37E1.0020.0002] # OGHAM LETTER RUIS -1690 ; [.37E2.0020.0002] # OGHAM LETTER AILM -1691 ; [.37E3.0020.0002] # OGHAM LETTER ONN -1692 ; [.37E4.0020.0002] # OGHAM LETTER UR -1693 ; [.37E5.0020.0002] # OGHAM LETTER EADHADH -1694 ; [.37E6.0020.0002] # OGHAM LETTER IODHADH -1695 ; [.37E7.0020.0002] # OGHAM LETTER EABHADH -1696 ; [.37E8.0020.0002] # OGHAM LETTER OR -1697 ; [.37E9.0020.0002] # OGHAM LETTER UILLEANN -1698 ; [.37EA.0020.0002] # OGHAM LETTER IFIN -1699 ; [.37EB.0020.0002] # OGHAM LETTER EAMHANCHOLL -169A ; [.37EC.0020.0002] # OGHAM LETTER PEITH -16A0 ; [.37ED.0020.0002] # RUNIC LETTER FEHU FEOH FE F -16A1 ; [.37ED.0020.0004][.0000.0111.0004] # RUNIC LETTER V -16A2 ; [.37EE.0020.0002] # RUNIC LETTER URUZ UR U -16A4 ; [.37EE.0020.0004][.0000.0111.0004] # RUNIC LETTER Y -16A5 ; [.37EE.0020.0004][.0000.0112.0004] # RUNIC LETTER W -16A6 ; [.37EF.0020.0002] # RUNIC LETTER THURISAZ THURS THORN -16A7 ; [.37EF.0020.0004][.0000.0111.0004] # RUNIC LETTER ETH -16F0 ; [.37EF.0020.0004][.37EF.0020.0004] # RUNIC BELGTHOR SYMBOL -16A8 ; [.37F0.0020.0002] # RUNIC LETTER ANSUZ A -16A9 ; [.37F0.0020.0004][.0000.0111.0004] # RUNIC LETTER OS O -16AC ; [.37F0.0020.0004][.0000.0112.0004] # RUNIC LETTER LONG-BRANCH-OSS O -16AD ; [.37F0.0020.0004][.0000.0113.0004] # RUNIC LETTER SHORT-TWIG-OSS O -16AE ; [.37F0.0020.0004][.0000.0114.0004] # RUNIC LETTER O -16F4 ; [.37F1.0020.0002] # RUNIC LETTER FRANKS CASKET OS -16AF ; [.37F2.0020.0002] # RUNIC LETTER OE -16B0 ; [.37F3.0020.0002] # RUNIC LETTER ON -16B1 ; [.37F4.0020.0002] # RUNIC LETTER RAIDO RAD REID R -16B2 ; [.37F5.0020.0002] # RUNIC LETTER KAUNA -16B3 ; [.37F5.0020.0004][.0000.0111.0004] # RUNIC LETTER CEN -16B4 ; [.37F5.0020.0004][.0000.0112.0004] # RUNIC LETTER KAUN K -16B5 ; [.37F5.0020.0004][.0000.0113.0004] # RUNIC LETTER G -16B6 ; [.37F5.0020.0004][.0000.0114.0004] # RUNIC LETTER ENG -16F1 ; [.37F6.0020.0002] # RUNIC LETTER K -16B7 ; [.37F7.0020.0002] # RUNIC LETTER GEBO GYFU G -16B9 ; [.37F8.0020.0002] # RUNIC LETTER WUNJO WYNN W -16E9 ; [.37F8.0020.0004][.0000.0111.0004] # RUNIC LETTER Q -16BA ; [.37F9.0020.0002] # RUNIC LETTER HAGLAZ H -16BB ; [.37F9.0020.0004][.0000.0111.0004] # RUNIC LETTER HAEGL H -16BC ; [.37F9.0020.0004][.0000.0112.0004] # RUNIC LETTER LONG-BRANCH-HAGALL H -16BD ; [.37F9.0020.0004][.0000.0113.0004] # RUNIC LETTER SHORT-TWIG-HAGALL H -16BE ; [.37FA.0020.0002] # RUNIC LETTER NAUDIZ NYD NAUD N -16BF ; [.37FA.0020.0004][.0000.0111.0004] # RUNIC LETTER SHORT-TWIG-NAUD N -16C0 ; [.37FA.0020.0004][.0000.0112.0004] # RUNIC LETTER DOTTED-N -16C1 ; [.37FB.0020.0002] # RUNIC LETTER ISAZ IS ISS I -16C2 ; [.37FB.0020.0004][.0000.0111.0004] # RUNIC LETTER E -16F5 ; [.37FC.0020.0002] # RUNIC LETTER FRANKS CASKET IS -16C3 ; [.37FD.0020.0002] # RUNIC LETTER JERAN J -16C4 ; [.37FD.0020.0004][.0000.0111.0004] # RUNIC LETTER GER -16C5 ; [.37FE.0020.0002] # RUNIC LETTER LONG-BRANCH-AR AE -16C6 ; [.37FE.0020.0004][.0000.0111.0004] # RUNIC LETTER SHORT-TWIG-AR A -16EE ; [.37FE.0020.0004][.3809.0020.0004] # RUNIC ARLAUG SYMBOL -16C7 ; [.37FF.0020.0002] # RUNIC LETTER IWAZ EOH -16C8 ; [.3800.0020.0002] # RUNIC LETTER PERTHO PEORTH P -16D5 ; [.3800.0020.0004][.0000.0111.0004] # RUNIC LETTER OPEN-P -16C9 ; [.3801.0020.0002] # RUNIC LETTER ALGIZ EOLHX -16CA ; [.3802.0020.0002] # RUNIC LETTER SOWILO S -16CB ; [.3802.0020.0004][.0000.0111.0004] # RUNIC LETTER SIGEL LONG-BRANCH-SOL S -16EA ; [.3802.0020.0004][.0000.0112.0004] # RUNIC LETTER X -16CC ; [.3802.0020.0004][.0000.0113.0004] # RUNIC LETTER SHORT-TWIG-SOL S -16CD ; [.3802.0020.0004][.0000.0114.0004] # RUNIC LETTER C -16CE ; [.3802.0020.0004][.0000.0115.0004] # RUNIC LETTER Z -16F2 ; [.3803.0020.0002] # RUNIC LETTER SH -16CF ; [.3804.0020.0002] # RUNIC LETTER TIWAZ TIR TYR T -16D0 ; [.3804.0020.0004][.0000.0111.0004] # RUNIC LETTER SHORT-TWIG-TYR T -16D1 ; [.3804.0020.0004][.0000.0112.0004] # RUNIC LETTER D -16D2 ; [.3805.0020.0002] # RUNIC LETTER BERKANAN BEORC BJARKAN B -16D3 ; [.3805.0020.0004][.0000.0111.0004] # RUNIC LETTER SHORT-TWIG-BJARKAN B -16D4 ; [.3805.0020.0004][.0000.0112.0004] # RUNIC LETTER DOTTED-P -16D6 ; [.3806.0020.0002] # RUNIC LETTER EHWAZ EH E -16F6 ; [.3807.0020.0002] # RUNIC LETTER FRANKS CASKET EH -16D7 ; [.3808.0020.0002] # RUNIC LETTER MANNAZ MAN M -16D8 ; [.3808.0020.0004][.0000.0111.0004] # RUNIC LETTER LONG-BRANCH-MADR M -16D9 ; [.3808.0020.0004][.0000.0112.0004] # RUNIC LETTER SHORT-TWIG-MADR M -16EF ; [.3808.0020.0004][.0000.0111.0004][.3808.0020.0004][.0000.0111.0004] # RUNIC TVIMADUR SYMBOL -16DA ; [.3809.0020.0002] # RUNIC LETTER LAUKAZ LAGU LOGR L -16DB ; [.3809.0020.0004][.0000.0111.0004] # RUNIC LETTER DOTTED-L -16DC ; [.380A.0020.0002] # RUNIC LETTER INGWAZ -16DD ; [.380A.0020.0004][.0000.0111.0004] # RUNIC LETTER ING -16DE ; [.380B.0020.0002] # RUNIC LETTER DAGAZ DAEG D -16DF ; [.380C.0020.0002] # RUNIC LETTER OTHALAN ETHEL O -16F3 ; [.380D.0020.0002] # RUNIC LETTER OO -16AA ; [.380E.0020.0002] # RUNIC LETTER AC A -16F7 ; [.380F.0020.0002] # RUNIC LETTER FRANKS CASKET AC -16AB ; [.3810.0020.0002] # RUNIC LETTER AESC -16F8 ; [.3811.0020.0002] # RUNIC LETTER FRANKS CASKET AESC -16A3 ; [.3812.0020.0002] # RUNIC LETTER YR -16E0 ; [.3813.0020.0002] # RUNIC LETTER EAR -16E3 ; [.3814.0020.0002] # RUNIC LETTER CALC -16B8 ; [.3815.0020.0002] # RUNIC LETTER GAR -16E4 ; [.3816.0020.0002] # RUNIC LETTER CEALC -16E1 ; [.3817.0020.0002] # RUNIC LETTER IOR -16E2 ; [.3818.0020.0002] # RUNIC LETTER CWEORTH -16E5 ; [.3819.0020.0002] # RUNIC LETTER STAN -16E6 ; [.381A.0020.0002] # RUNIC LETTER LONG-BRANCH-YR -16E7 ; [.381A.0020.0004][.0000.0111.0004] # RUNIC LETTER SHORT-TWIG-YR -16E8 ; [.381A.0020.0004][.0000.0112.0004] # RUNIC LETTER ICELANDIC-YR -10CC0 ; [.381B.0020.0002] # OLD HUNGARIAN SMALL LETTER A -10C80 ; [.381B.0020.0008] # OLD HUNGARIAN CAPITAL LETTER A -10CC1 ; [.381B.0020.0004][.0000.0111.0004] # OLD HUNGARIAN SMALL LETTER AA -10C81 ; [.381B.0020.000A][.0000.0111.0004] # OLD HUNGARIAN CAPITAL LETTER AA -10CC2 ; [.381C.0020.0002] # OLD HUNGARIAN SMALL LETTER EB -10C82 ; [.381C.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EB -10CC3 ; [.381D.0020.0002] # OLD HUNGARIAN SMALL LETTER AMB -10C83 ; [.381D.0020.0008] # OLD HUNGARIAN CAPITAL LETTER AMB -10CC4 ; [.381E.0020.0002] # OLD HUNGARIAN SMALL LETTER EC -10C84 ; [.381E.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EC -10CC5 ; [.381F.0020.0002] # OLD HUNGARIAN SMALL LETTER ENC -10C85 ; [.381F.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ENC -10CC6 ; [.3820.0020.0002] # OLD HUNGARIAN SMALL LETTER ECS -10C86 ; [.3820.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ECS -10CC7 ; [.3821.0020.0002] # OLD HUNGARIAN SMALL LETTER ED -10C87 ; [.3821.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ED -10CC8 ; [.3822.0020.0002] # OLD HUNGARIAN SMALL LETTER AND -10C88 ; [.3822.0020.0008] # OLD HUNGARIAN CAPITAL LETTER AND -10CC9 ; [.3823.0020.0002] # OLD HUNGARIAN SMALL LETTER E -10C89 ; [.3823.0020.0008] # OLD HUNGARIAN CAPITAL LETTER E -10CCA ; [.3823.0020.0004][.0000.0111.0004] # OLD HUNGARIAN SMALL LETTER CLOSE E -10C8A ; [.3823.0020.000A][.0000.0111.0004] # OLD HUNGARIAN CAPITAL LETTER CLOSE E -10CCB ; [.3823.0020.0004][.0000.0112.0004] # OLD HUNGARIAN SMALL LETTER EE -10C8B ; [.3823.0020.000A][.0000.0112.0004] # OLD HUNGARIAN CAPITAL LETTER EE -10CCC ; [.3824.0020.0002] # OLD HUNGARIAN SMALL LETTER EF -10C8C ; [.3824.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EF -10CCD ; [.3825.0020.0002] # OLD HUNGARIAN SMALL LETTER EG -10C8D ; [.3825.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EG -10CCE ; [.3826.0020.0002] # OLD HUNGARIAN SMALL LETTER EGY -10C8E ; [.3826.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EGY -10CCF ; [.3827.0020.0002] # OLD HUNGARIAN SMALL LETTER EH -10C8F ; [.3827.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EH -10CD0 ; [.3828.0020.0002] # OLD HUNGARIAN SMALL LETTER I -10C90 ; [.3828.0020.0008] # OLD HUNGARIAN CAPITAL LETTER I -10CD1 ; [.3828.0020.0004][.0000.0111.0004] # OLD HUNGARIAN SMALL LETTER II -10C91 ; [.3828.0020.000A][.0000.0111.0004] # OLD HUNGARIAN CAPITAL LETTER II -10CD2 ; [.3829.0020.0002] # OLD HUNGARIAN SMALL LETTER EJ -10C92 ; [.3829.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EJ -10CD3 ; [.382A.0020.0002] # OLD HUNGARIAN SMALL LETTER EK -10C93 ; [.382A.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EK -10CD4 ; [.382B.0020.0002] # OLD HUNGARIAN SMALL LETTER AK -10C94 ; [.382B.0020.0008] # OLD HUNGARIAN CAPITAL LETTER AK -10CD5 ; [.382C.0020.0002] # OLD HUNGARIAN SMALL LETTER UNK -10C95 ; [.382C.0020.0008] # OLD HUNGARIAN CAPITAL LETTER UNK -10CD6 ; [.382D.0020.0002] # OLD HUNGARIAN SMALL LETTER EL -10C96 ; [.382D.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EL -10CD7 ; [.382E.0020.0002] # OLD HUNGARIAN SMALL LETTER ELY -10C97 ; [.382E.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ELY -10CD8 ; [.382F.0020.0002] # OLD HUNGARIAN SMALL LETTER EM -10C98 ; [.382F.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EM -10CD9 ; [.3830.0020.0002] # OLD HUNGARIAN SMALL LETTER EN -10C99 ; [.3830.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EN -10CDA ; [.3831.0020.0002] # OLD HUNGARIAN SMALL LETTER ENY -10C9A ; [.3831.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ENY -10CDB ; [.3832.0020.0002] # OLD HUNGARIAN SMALL LETTER O -10C9B ; [.3832.0020.0008] # OLD HUNGARIAN CAPITAL LETTER O -10CDC ; [.3832.0020.0004][.0000.0111.0004] # OLD HUNGARIAN SMALL LETTER OO -10C9C ; [.3832.0020.000A][.0000.0111.0004] # OLD HUNGARIAN CAPITAL LETTER OO -10CDD ; [.3833.0020.0002] # OLD HUNGARIAN SMALL LETTER NIKOLSBURG OE -10C9D ; [.3833.0020.0008] # OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE -10CDE ; [.3833.0020.0004][.0000.0111.0004] # OLD HUNGARIAN SMALL LETTER RUDIMENTA OE -10C9E ; [.3833.0020.000A][.0000.0111.0004] # OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE -10CDF ; [.3833.0020.0004][.0000.0112.0004] # OLD HUNGARIAN SMALL LETTER OEE -10C9F ; [.3833.0020.000A][.0000.0112.0004] # OLD HUNGARIAN CAPITAL LETTER OEE -10CE0 ; [.3834.0020.0002] # OLD HUNGARIAN SMALL LETTER EP -10CA0 ; [.3834.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EP -10CE1 ; [.3835.0020.0002] # OLD HUNGARIAN SMALL LETTER EMP -10CA1 ; [.3835.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EMP -10CE2 ; [.3836.0020.0002] # OLD HUNGARIAN SMALL LETTER ER -10CA2 ; [.3836.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ER -10CE3 ; [.3836.0020.0004][.0000.0111.0004] # OLD HUNGARIAN SMALL LETTER SHORT ER -10CA3 ; [.3836.0020.000A][.0000.0111.0004] # OLD HUNGARIAN CAPITAL LETTER SHORT ER -10CE4 ; [.3837.0020.0002] # OLD HUNGARIAN SMALL LETTER ES -10CA4 ; [.3837.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ES -10CE5 ; [.3838.0020.0002] # OLD HUNGARIAN SMALL LETTER ESZ -10CA5 ; [.3838.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ESZ -10CE6 ; [.3839.0020.0002] # OLD HUNGARIAN SMALL LETTER ET -10CA6 ; [.3839.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ET -10CE7 ; [.383A.0020.0002] # OLD HUNGARIAN SMALL LETTER ENT -10CA7 ; [.383A.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ENT -10CE8 ; [.383B.0020.0002] # OLD HUNGARIAN SMALL LETTER ETY -10CA8 ; [.383B.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ETY -10CE9 ; [.383C.0020.0002] # OLD HUNGARIAN SMALL LETTER ECH -10CA9 ; [.383C.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ECH -10CEA ; [.383D.0020.0002] # OLD HUNGARIAN SMALL LETTER U -10CAA ; [.383D.0020.0008] # OLD HUNGARIAN CAPITAL LETTER U -10CEB ; [.383D.0020.0004][.0000.0111.0004] # OLD HUNGARIAN SMALL LETTER UU -10CAB ; [.383D.0020.000A][.0000.0111.0004] # OLD HUNGARIAN CAPITAL LETTER UU -10CEC ; [.383E.0020.0002] # OLD HUNGARIAN SMALL LETTER NIKOLSBURG UE -10CAC ; [.383E.0020.0008] # OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE -10CED ; [.383E.0020.0004][.0000.0111.0004] # OLD HUNGARIAN SMALL LETTER RUDIMENTA UE -10CAD ; [.383E.0020.000A][.0000.0111.0004] # OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE -10CEE ; [.383F.0020.0002] # OLD HUNGARIAN SMALL LETTER EV -10CAE ; [.383F.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EV -10CEF ; [.3840.0020.0002] # OLD HUNGARIAN SMALL LETTER EZ -10CAF ; [.3840.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EZ -10CF0 ; [.3841.0020.0002] # OLD HUNGARIAN SMALL LETTER EZS -10CB0 ; [.3841.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EZS -10CF1 ; [.3842.0020.0002] # OLD HUNGARIAN SMALL LETTER ENT-SHAPED SIGN -10CB1 ; [.3842.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN -10CF2 ; [.3843.0020.0002] # OLD HUNGARIAN SMALL LETTER US -10CB2 ; [.3843.0020.0008] # OLD HUNGARIAN CAPITAL LETTER US -10C00 ; [.3844.0020.0002] # OLD TURKIC LETTER ORKHON A -10C01 ; [.3844.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI A -10C02 ; [.3845.0020.0002] # OLD TURKIC LETTER YENISEI AE -10C03 ; [.3846.0020.0002] # OLD TURKIC LETTER ORKHON I -10C04 ; [.3846.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI I -10C05 ; [.3847.0020.0002] # OLD TURKIC LETTER YENISEI E -10C06 ; [.3848.0020.0002] # OLD TURKIC LETTER ORKHON O -10C07 ; [.3849.0020.0002] # OLD TURKIC LETTER ORKHON OE -10C08 ; [.3849.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI OE -10C09 ; [.384A.0020.0002] # OLD TURKIC LETTER ORKHON AB -10C0A ; [.384A.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI AB -10C0B ; [.384B.0020.0002] # OLD TURKIC LETTER ORKHON AEB -10C0C ; [.384B.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI AEB -10C0D ; [.384C.0020.0002] # OLD TURKIC LETTER ORKHON AG -10C0E ; [.384C.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI AG -10C0F ; [.384D.0020.0002] # OLD TURKIC LETTER ORKHON AEG -10C10 ; [.384D.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI AEG -10C11 ; [.384E.0020.0002] # OLD TURKIC LETTER ORKHON AD -10C12 ; [.384E.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI AD -10C13 ; [.384F.0020.0002] # OLD TURKIC LETTER ORKHON AED -10C14 ; [.3850.0020.0002] # OLD TURKIC LETTER ORKHON EZ -10C15 ; [.3850.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI EZ -10C16 ; [.3851.0020.0002] # OLD TURKIC LETTER ORKHON AY -10C17 ; [.3851.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI AY -10C18 ; [.3852.0020.0002] # OLD TURKIC LETTER ORKHON AEY -10C19 ; [.3852.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI AEY -10C1A ; [.3853.0020.0002] # OLD TURKIC LETTER ORKHON AEK -10C1B ; [.3853.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI AEK -10C1C ; [.3854.0020.0002] # OLD TURKIC LETTER ORKHON OEK -10C1D ; [.3854.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI OEK -10C1E ; [.3855.0020.0002] # OLD TURKIC LETTER ORKHON AL -10C1F ; [.3855.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI AL -10C20 ; [.3856.0020.0002] # OLD TURKIC LETTER ORKHON AEL -10C21 ; [.3857.0020.0002] # OLD TURKIC LETTER ORKHON ELT -10C22 ; [.3858.0020.0002] # OLD TURKIC LETTER ORKHON EM -10C23 ; [.3859.0020.0002] # OLD TURKIC LETTER ORKHON AN -10C24 ; [.385A.0020.0002] # OLD TURKIC LETTER ORKHON AEN -10C25 ; [.385A.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI AEN -10C26 ; [.385B.0020.0002] # OLD TURKIC LETTER ORKHON ENT -10C27 ; [.385B.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI ENT -10C28 ; [.385C.0020.0002] # OLD TURKIC LETTER ORKHON ENC -10C29 ; [.385C.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI ENC -10C2A ; [.385D.0020.0002] # OLD TURKIC LETTER ORKHON ENY -10C2B ; [.385D.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI ENY -10C2C ; [.385E.0020.0002] # OLD TURKIC LETTER YENISEI ANG -10C2D ; [.385F.0020.0002] # OLD TURKIC LETTER ORKHON ENG -10C2E ; [.385F.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI AENG -10C2F ; [.3860.0020.0002] # OLD TURKIC LETTER ORKHON EP -10C30 ; [.3861.0020.0002] # OLD TURKIC LETTER ORKHON OP -10C31 ; [.3862.0020.0002] # OLD TURKIC LETTER ORKHON IC -10C32 ; [.3863.0020.0002] # OLD TURKIC LETTER ORKHON EC -10C33 ; [.3863.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI EC -10C34 ; [.3864.0020.0002] # OLD TURKIC LETTER ORKHON AQ -10C35 ; [.3864.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI AQ -10C36 ; [.3865.0020.0002] # OLD TURKIC LETTER ORKHON IQ -10C37 ; [.3865.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI IQ -10C38 ; [.3866.0020.0002] # OLD TURKIC LETTER ORKHON OQ -10C39 ; [.3866.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI OQ -10C3A ; [.3867.0020.0002] # OLD TURKIC LETTER ORKHON AR -10C3B ; [.3867.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI AR -10C3C ; [.3868.0020.0002] # OLD TURKIC LETTER ORKHON AER -10C3D ; [.3869.0020.0002] # OLD TURKIC LETTER ORKHON AS -10C3E ; [.386A.0020.0002] # OLD TURKIC LETTER ORKHON AES -10C3F ; [.386B.0020.0002] # OLD TURKIC LETTER ORKHON ASH -10C40 ; [.386B.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI ASH -10C41 ; [.386C.0020.0002] # OLD TURKIC LETTER ORKHON ESH -10C42 ; [.386C.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI ESH -10C43 ; [.386D.0020.0002] # OLD TURKIC LETTER ORKHON AT -10C44 ; [.386D.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI AT -10C45 ; [.386E.0020.0002] # OLD TURKIC LETTER ORKHON AET -10C46 ; [.386E.0020.0004][.0000.0111.0004] # OLD TURKIC LETTER YENISEI AET -10C47 ; [.386F.0020.0002] # OLD TURKIC LETTER ORKHON OT -10C48 ; [.3870.0020.0002] # OLD TURKIC LETTER ORKHON BASH -A500 ; [.3871.0020.0002] # VAI SYLLABLE EE -A501 ; [.3872.0020.0002] # VAI SYLLABLE EEN -A502 ; [.3873.0020.0002] # VAI SYLLABLE HEE -A503 ; [.3874.0020.0002] # VAI SYLLABLE WEE -A504 ; [.3875.0020.0002] # VAI SYLLABLE WEEN -A505 ; [.3876.0020.0002] # VAI SYLLABLE PEE -A506 ; [.3877.0020.0002] # VAI SYLLABLE BHEE -A507 ; [.3878.0020.0002] # VAI SYLLABLE BEE -A508 ; [.3879.0020.0002] # VAI SYLLABLE MBEE -A509 ; [.387A.0020.0002] # VAI SYLLABLE KPEE -A50A ; [.387B.0020.0002] # VAI SYLLABLE MGBEE -A50B ; [.387C.0020.0002] # VAI SYLLABLE GBEE -A50C ; [.387D.0020.0002] # VAI SYLLABLE FEE -A613 ; [.387D.0020.0004][.397C.0020.0004] # VAI SYMBOL FEENG -A50D ; [.387E.0020.0002] # VAI SYLLABLE VEE -A50E ; [.387F.0020.0002] # VAI SYLLABLE TEE -A50F ; [.3880.0020.0002] # VAI SYLLABLE THEE -A510 ; [.3881.0020.0002] # VAI SYLLABLE DHEE -A511 ; [.3882.0020.0002] # VAI SYLLABLE DHHEE -A512 ; [.3883.0020.0002] # VAI SYLLABLE LEE -A513 ; [.3884.0020.0002] # VAI SYLLABLE REE -A514 ; [.3885.0020.0002] # VAI SYLLABLE DEE -A515 ; [.3886.0020.0002] # VAI SYLLABLE NDEE -A516 ; [.3887.0020.0002] # VAI SYLLABLE SEE -A517 ; [.3888.0020.0002] # VAI SYLLABLE SHEE -A518 ; [.3889.0020.0002] # VAI SYLLABLE ZEE -A519 ; [.388A.0020.0002] # VAI SYLLABLE ZHEE -A51A ; [.388B.0020.0002] # VAI SYLLABLE CEE -A51B ; [.388C.0020.0002] # VAI SYLLABLE JEE -A51C ; [.388D.0020.0002] # VAI SYLLABLE NJEE -A51D ; [.388E.0020.0002] # VAI SYLLABLE YEE -A51E ; [.388F.0020.0002] # VAI SYLLABLE KEE -A614 ; [.388F.0020.0004][.397C.0020.0004] # VAI SYMBOL KEENG -A51F ; [.3890.0020.0002] # VAI SYLLABLE NGGEE -A520 ; [.3891.0020.0002] # VAI SYLLABLE GEE -A521 ; [.3892.0020.0002] # VAI SYLLABLE MEE -A522 ; [.3893.0020.0002] # VAI SYLLABLE NEE -A523 ; [.3894.0020.0002] # VAI SYLLABLE NYEE -A524 ; [.3895.0020.0002] # VAI SYLLABLE I -A525 ; [.3896.0020.0002] # VAI SYLLABLE IN -A526 ; [.3897.0020.0002] # VAI SYLLABLE HI -A527 ; [.3898.0020.0002] # VAI SYLLABLE HIN -A528 ; [.3899.0020.0002] # VAI SYLLABLE WI -A529 ; [.389A.0020.0002] # VAI SYLLABLE WIN -A52A ; [.389B.0020.0002] # VAI SYLLABLE PI -A52B ; [.389C.0020.0002] # VAI SYLLABLE BHI -A52C ; [.389D.0020.0002] # VAI SYLLABLE BI -A52D ; [.389E.0020.0002] # VAI SYLLABLE MBI -A52E ; [.389F.0020.0002] # VAI SYLLABLE KPI -A52F ; [.38A0.0020.0002] # VAI SYLLABLE MGBI -A530 ; [.38A1.0020.0002] # VAI SYLLABLE GBI -A531 ; [.38A2.0020.0002] # VAI SYLLABLE FI -A532 ; [.38A3.0020.0002] # VAI SYLLABLE VI -A533 ; [.38A4.0020.0002] # VAI SYLLABLE TI -A615 ; [.38A4.0020.0004][.397C.0020.0004] # VAI SYMBOL TING -A534 ; [.38A5.0020.0002] # VAI SYLLABLE THI -A535 ; [.38A6.0020.0002] # VAI SYLLABLE DHI -A536 ; [.38A7.0020.0002] # VAI SYLLABLE DHHI -A537 ; [.38A8.0020.0002] # VAI SYLLABLE LI -A538 ; [.38A9.0020.0002] # VAI SYLLABLE RI -A539 ; [.38AA.0020.0002] # VAI SYLLABLE DI -A53A ; [.38AB.0020.0002] # VAI SYLLABLE NDI -A53B ; [.38AC.0020.0002] # VAI SYLLABLE SI -A53C ; [.38AD.0020.0002] # VAI SYLLABLE SHI -A53D ; [.38AE.0020.0002] # VAI SYLLABLE ZI -A53E ; [.38AF.0020.0002] # VAI SYLLABLE ZHI -A53F ; [.38B0.0020.0002] # VAI SYLLABLE CI -A540 ; [.38B1.0020.0002] # VAI SYLLABLE JI -A541 ; [.38B2.0020.0002] # VAI SYLLABLE NJI -A542 ; [.38B3.0020.0002] # VAI SYLLABLE YI -A543 ; [.38B4.0020.0002] # VAI SYLLABLE KI -A544 ; [.38B5.0020.0002] # VAI SYLLABLE NGGI -A545 ; [.38B6.0020.0002] # VAI SYLLABLE GI -A546 ; [.38B7.0020.0002] # VAI SYLLABLE MI -A547 ; [.38B8.0020.0002] # VAI SYLLABLE NI -A616 ; [.38B8.0020.0004][.397D.0020.0004] # VAI SYMBOL NII -A548 ; [.38B9.0020.0002] # VAI SYLLABLE NYI -A549 ; [.38BA.0020.0002] # VAI SYLLABLE A -A54A ; [.38BB.0020.0002] # VAI SYLLABLE AN -A54B ; [.38BC.0020.0002] # VAI SYLLABLE NGAN -A54C ; [.38BD.0020.0002] # VAI SYLLABLE HA -A54D ; [.38BE.0020.0002] # VAI SYLLABLE HAN -A54E ; [.38BF.0020.0002] # VAI SYLLABLE WA -A54F ; [.38C0.0020.0002] # VAI SYLLABLE WAN -A550 ; [.38C1.0020.0002] # VAI SYLLABLE PA -A551 ; [.38C2.0020.0002] # VAI SYLLABLE BHA -A552 ; [.38C3.0020.0002] # VAI SYLLABLE BA -A617 ; [.38C3.0020.0004][.397C.0020.0004] # VAI SYMBOL BANG -A553 ; [.38C4.0020.0002] # VAI SYLLABLE MBA -A554 ; [.38C5.0020.0002] # VAI SYLLABLE KPA -A555 ; [.38C6.0020.0002] # VAI SYLLABLE KPAN -A556 ; [.38C7.0020.0002] # VAI SYLLABLE MGBA -A557 ; [.38C8.0020.0002] # VAI SYLLABLE GBA -A558 ; [.38C9.0020.0002] # VAI SYLLABLE FA -A610 ; [.38C9.0020.0004] # VAI SYLLABLE NDOLE FA -A618 ; [.38C9.0020.0004][.397D.0020.0004] # VAI SYMBOL FAA -A559 ; [.38CA.0020.0002] # VAI SYLLABLE VA -A55A ; [.38CB.0020.0002] # VAI SYLLABLE TA -A619 ; [.38CB.0020.0004][.397D.0020.0004] # VAI SYMBOL TAA -A55B ; [.38CC.0020.0002] # VAI SYLLABLE THA -A55C ; [.38CD.0020.0002] # VAI SYLLABLE DHA -A55D ; [.38CE.0020.0002] # VAI SYLLABLE DHHA -A55E ; [.38CF.0020.0002] # VAI SYLLABLE LA -A55F ; [.38D0.0020.0002] # VAI SYLLABLE RA -A560 ; [.38D1.0020.0002] # VAI SYLLABLE DA -A61A ; [.38D1.0020.0004][.397C.0020.0004] # VAI SYMBOL DANG -A561 ; [.38D2.0020.0002] # VAI SYLLABLE NDA -A562 ; [.38D3.0020.0002] # VAI SYLLABLE SA -A563 ; [.38D4.0020.0002] # VAI SYLLABLE SHA -A564 ; [.38D5.0020.0002] # VAI SYLLABLE ZA -A565 ; [.38D6.0020.0002] # VAI SYLLABLE ZHA -A566 ; [.38D7.0020.0002] # VAI SYLLABLE CA -A567 ; [.38D8.0020.0002] # VAI SYLLABLE JA -A568 ; [.38D9.0020.0002] # VAI SYLLABLE NJA -A569 ; [.38DA.0020.0002] # VAI SYLLABLE YA -A56A ; [.38DB.0020.0002] # VAI SYLLABLE KA -A611 ; [.38DB.0020.0004] # VAI SYLLABLE NDOLE KA -A56B ; [.38DC.0020.0002] # VAI SYLLABLE KAN -A56C ; [.38DD.0020.0002] # VAI SYLLABLE NGGA -A56D ; [.38DE.0020.0002] # VAI SYLLABLE GA -A56E ; [.38DF.0020.0002] # VAI SYLLABLE MA -A62A ; [.38DF.0020.0004] # VAI SYLLABLE NDOLE MA -A56F ; [.38E0.0020.0002] # VAI SYLLABLE NA -A570 ; [.38E1.0020.0002] # VAI SYLLABLE NYA -A571 ; [.38E2.0020.0002] # VAI SYLLABLE OO -A572 ; [.38E3.0020.0002] # VAI SYLLABLE OON -A573 ; [.38E4.0020.0002] # VAI SYLLABLE HOO -A574 ; [.38E5.0020.0002] # VAI SYLLABLE WOO -A575 ; [.38E6.0020.0002] # VAI SYLLABLE WOON -A576 ; [.38E7.0020.0002] # VAI SYLLABLE POO -A577 ; [.38E8.0020.0002] # VAI SYLLABLE BHOO -A578 ; [.38E9.0020.0002] # VAI SYLLABLE BOO -A579 ; [.38EA.0020.0002] # VAI SYLLABLE MBOO -A57A ; [.38EB.0020.0002] # VAI SYLLABLE KPOO -A57B ; [.38EC.0020.0002] # VAI SYLLABLE MGBOO -A57C ; [.38ED.0020.0002] # VAI SYLLABLE GBOO -A57D ; [.38EE.0020.0002] # VAI SYLLABLE FOO -A57E ; [.38EF.0020.0002] # VAI SYLLABLE VOO -A57F ; [.38F0.0020.0002] # VAI SYLLABLE TOO -A580 ; [.38F1.0020.0002] # VAI SYLLABLE THOO -A581 ; [.38F2.0020.0002] # VAI SYLLABLE DHOO -A582 ; [.38F3.0020.0002] # VAI SYLLABLE DHHOO -A583 ; [.38F4.0020.0002] # VAI SYLLABLE LOO -A584 ; [.38F5.0020.0002] # VAI SYLLABLE ROO -A585 ; [.38F6.0020.0002] # VAI SYLLABLE DOO -A61B ; [.38F6.0020.0004][.397C.0020.0004] # VAI SYMBOL DOONG -A586 ; [.38F7.0020.0002] # VAI SYLLABLE NDOO -A587 ; [.38F8.0020.0002] # VAI SYLLABLE SOO -A612 ; [.38F8.0020.0004] # VAI SYLLABLE NDOLE SOO -A588 ; [.38F9.0020.0002] # VAI SYLLABLE SHOO -A589 ; [.38FA.0020.0002] # VAI SYLLABLE ZOO -A58A ; [.38FB.0020.0002] # VAI SYLLABLE ZHOO -A58B ; [.38FC.0020.0002] # VAI SYLLABLE COO -A58C ; [.38FD.0020.0002] # VAI SYLLABLE JOO -A58D ; [.38FE.0020.0002] # VAI SYLLABLE NJOO -A58E ; [.38FF.0020.0002] # VAI SYLLABLE YOO -A58F ; [.3900.0020.0002] # VAI SYLLABLE KOO -A590 ; [.3901.0020.0002] # VAI SYLLABLE NGGOO -A591 ; [.3902.0020.0002] # VAI SYLLABLE GOO -A592 ; [.3903.0020.0002] # VAI SYLLABLE MOO -A593 ; [.3904.0020.0002] # VAI SYLLABLE NOO -A594 ; [.3905.0020.0002] # VAI SYLLABLE NYOO -A595 ; [.3906.0020.0002] # VAI SYLLABLE U -A596 ; [.3907.0020.0002] # VAI SYLLABLE UN -A597 ; [.3908.0020.0002] # VAI SYLLABLE HU -A598 ; [.3909.0020.0002] # VAI SYLLABLE HUN -A599 ; [.390A.0020.0002] # VAI SYLLABLE WU -A59A ; [.390B.0020.0002] # VAI SYLLABLE WUN -A59B ; [.390C.0020.0002] # VAI SYLLABLE PU -A59C ; [.390D.0020.0002] # VAI SYLLABLE BHU -A59D ; [.390E.0020.0002] # VAI SYLLABLE BU -A59E ; [.390F.0020.0002] # VAI SYLLABLE MBU -A59F ; [.3910.0020.0002] # VAI SYLLABLE KPU -A5A0 ; [.3911.0020.0002] # VAI SYLLABLE MGBU -A5A1 ; [.3912.0020.0002] # VAI SYLLABLE GBU -A5A2 ; [.3913.0020.0002] # VAI SYLLABLE FU -A5A3 ; [.3914.0020.0002] # VAI SYLLABLE VU -A5A4 ; [.3915.0020.0002] # VAI SYLLABLE TU -A5A5 ; [.3916.0020.0002] # VAI SYLLABLE THU -A5A6 ; [.3917.0020.0002] # VAI SYLLABLE DHU -A5A7 ; [.3918.0020.0002] # VAI SYLLABLE DHHU -A5A8 ; [.3919.0020.0002] # VAI SYLLABLE LU -A5A9 ; [.391A.0020.0002] # VAI SYLLABLE RU -A5AA ; [.391B.0020.0002] # VAI SYLLABLE DU -A5AB ; [.391C.0020.0002] # VAI SYLLABLE NDU -A5AC ; [.391D.0020.0002] # VAI SYLLABLE SU -A5AD ; [.391E.0020.0002] # VAI SYLLABLE SHU -A5AE ; [.391F.0020.0002] # VAI SYLLABLE ZU -A5AF ; [.3920.0020.0002] # VAI SYLLABLE ZHU -A5B0 ; [.3921.0020.0002] # VAI SYLLABLE CU -A5B1 ; [.3922.0020.0002] # VAI SYLLABLE JU -A5B2 ; [.3923.0020.0002] # VAI SYLLABLE NJU -A5B3 ; [.3924.0020.0002] # VAI SYLLABLE YU -A5B4 ; [.3925.0020.0002] # VAI SYLLABLE KU -A61C ; [.3925.0020.0004][.397C.0020.0004] # VAI SYMBOL KUNG -A5B5 ; [.3926.0020.0002] # VAI SYLLABLE NGGU -A5B6 ; [.3927.0020.0002] # VAI SYLLABLE GU -A5B7 ; [.3928.0020.0002] # VAI SYLLABLE MU -A5B8 ; [.3929.0020.0002] # VAI SYLLABLE NU -A5B9 ; [.392A.0020.0002] # VAI SYLLABLE NYU -A5BA ; [.392B.0020.0002] # VAI SYLLABLE O -A5BB ; [.392C.0020.0002] # VAI SYLLABLE ON -A5BC ; [.392D.0020.0002] # VAI SYLLABLE NGON -A5BD ; [.392E.0020.0002] # VAI SYLLABLE HO -A5BE ; [.392F.0020.0002] # VAI SYLLABLE HON -A5BF ; [.3930.0020.0002] # VAI SYLLABLE WO -A5C0 ; [.3931.0020.0002] # VAI SYLLABLE WON -A5C1 ; [.3932.0020.0002] # VAI SYLLABLE PO -A5C2 ; [.3933.0020.0002] # VAI SYLLABLE BHO -A5C3 ; [.3934.0020.0002] # VAI SYLLABLE BO -A5C4 ; [.3935.0020.0002] # VAI SYLLABLE MBO -A5C5 ; [.3936.0020.0002] # VAI SYLLABLE KPO -A5C6 ; [.3937.0020.0002] # VAI SYLLABLE MGBO -A5C7 ; [.3938.0020.0002] # VAI SYLLABLE GBO -A5C8 ; [.3939.0020.0002] # VAI SYLLABLE GBON -A5C9 ; [.393A.0020.0002] # VAI SYLLABLE FO -A5CA ; [.393B.0020.0002] # VAI SYLLABLE VO -A5CB ; [.393C.0020.0002] # VAI SYLLABLE TO -A61D ; [.393C.0020.0004][.397C.0020.0004] # VAI SYMBOL TONG -A5CC ; [.393D.0020.0002] # VAI SYLLABLE THO -A5CD ; [.393E.0020.0002] # VAI SYLLABLE DHO -A5CE ; [.393F.0020.0002] # VAI SYLLABLE DHHO -A5CF ; [.3940.0020.0002] # VAI SYLLABLE LO -A5D0 ; [.3941.0020.0002] # VAI SYLLABLE RO -A5D1 ; [.3942.0020.0002] # VAI SYLLABLE DO -A62B ; [.3942.0020.0004] # VAI SYLLABLE NDOLE DO -A61E ; [.3942.0020.0004][.397D.0020.0004] # VAI SYMBOL DO-O -A5D2 ; [.3943.0020.0002] # VAI SYLLABLE NDO -A5D3 ; [.3944.0020.0002] # VAI SYLLABLE SO -A5D4 ; [.3945.0020.0002] # VAI SYLLABLE SHO -A5D5 ; [.3946.0020.0002] # VAI SYLLABLE ZO -A5D6 ; [.3947.0020.0002] # VAI SYLLABLE ZHO -A5D7 ; [.3948.0020.0002] # VAI SYLLABLE CO -A5D8 ; [.3949.0020.0002] # VAI SYLLABLE JO -A61F ; [.3949.0020.0004][.397C.0020.0004] # VAI SYMBOL JONG -A5D9 ; [.394A.0020.0002] # VAI SYLLABLE NJO -A5DA ; [.394B.0020.0002] # VAI SYLLABLE YO -A5DB ; [.394C.0020.0002] # VAI SYLLABLE KO -A5DC ; [.394D.0020.0002] # VAI SYLLABLE NGGO -A5DD ; [.394E.0020.0002] # VAI SYLLABLE GO -A5DE ; [.394F.0020.0002] # VAI SYLLABLE MO -A5DF ; [.3950.0020.0002] # VAI SYLLABLE NO -A5E0 ; [.3951.0020.0002] # VAI SYLLABLE NYO -A5E1 ; [.3952.0020.0002] # VAI SYLLABLE E -A5E2 ; [.3953.0020.0002] # VAI SYLLABLE EN -A5E3 ; [.3954.0020.0002] # VAI SYLLABLE NGEN -A5E4 ; [.3955.0020.0002] # VAI SYLLABLE HE -A5E5 ; [.3956.0020.0002] # VAI SYLLABLE HEN -A5E6 ; [.3957.0020.0002] # VAI SYLLABLE WE -A5E7 ; [.3958.0020.0002] # VAI SYLLABLE WEN -A5E8 ; [.3959.0020.0002] # VAI SYLLABLE PE -A5E9 ; [.395A.0020.0002] # VAI SYLLABLE BHE -A5EA ; [.395B.0020.0002] # VAI SYLLABLE BE -A5EB ; [.395C.0020.0002] # VAI SYLLABLE MBE -A5EC ; [.395D.0020.0002] # VAI SYLLABLE KPE -A5ED ; [.395E.0020.0002] # VAI SYLLABLE KPEN -A5EE ; [.395F.0020.0002] # VAI SYLLABLE MGBE -A5EF ; [.3960.0020.0002] # VAI SYLLABLE GBE -A5F0 ; [.3961.0020.0002] # VAI SYLLABLE GBEN -A5F1 ; [.3962.0020.0002] # VAI SYLLABLE FE -A5F2 ; [.3963.0020.0002] # VAI SYLLABLE VE -A5F3 ; [.3964.0020.0002] # VAI SYLLABLE TE -A5F4 ; [.3965.0020.0002] # VAI SYLLABLE THE -A5F5 ; [.3966.0020.0002] # VAI SYLLABLE DHE -A5F6 ; [.3967.0020.0002] # VAI SYLLABLE DHHE -A5F7 ; [.3968.0020.0002] # VAI SYLLABLE LE -A5F8 ; [.3969.0020.0002] # VAI SYLLABLE RE -A5F9 ; [.396A.0020.0002] # VAI SYLLABLE DE -A5FA ; [.396B.0020.0002] # VAI SYLLABLE NDE -A5FB ; [.396C.0020.0002] # VAI SYLLABLE SE -A5FC ; [.396D.0020.0002] # VAI SYLLABLE SHE -A5FD ; [.396E.0020.0002] # VAI SYLLABLE ZE -A5FE ; [.396F.0020.0002] # VAI SYLLABLE ZHE -A5FF ; [.3970.0020.0002] # VAI SYLLABLE CE -A600 ; [.3971.0020.0002] # VAI SYLLABLE JE -A601 ; [.3972.0020.0002] # VAI SYLLABLE NJE -A602 ; [.3973.0020.0002] # VAI SYLLABLE YE -A603 ; [.3974.0020.0002] # VAI SYLLABLE KE -A604 ; [.3975.0020.0002] # VAI SYLLABLE NGGE -A605 ; [.3976.0020.0002] # VAI SYLLABLE NGGEN -A606 ; [.3977.0020.0002] # VAI SYLLABLE GE -A607 ; [.3978.0020.0002] # VAI SYLLABLE GEN -A608 ; [.3979.0020.0002] # VAI SYLLABLE ME -A609 ; [.397A.0020.0002] # VAI SYLLABLE NE -A60A ; [.397B.0020.0002] # VAI SYLLABLE NYE -A60B ; [.397C.0020.0002] # VAI SYLLABLE NG -A60C ; [.397D.0020.0002] # VAI SYLLABLE LENGTHENER -A6A0 ; [.397E.0020.0002] # BAMUM LETTER A -A6A1 ; [.397F.0020.0002] # BAMUM LETTER KA -A6A2 ; [.3980.0020.0002] # BAMUM LETTER U -A6A3 ; [.3981.0020.0002] # BAMUM LETTER KU -A6A4 ; [.3982.0020.0002] # BAMUM LETTER EE -A6A5 ; [.3983.0020.0002] # BAMUM LETTER REE -A6A6 ; [.3984.0020.0002] # BAMUM LETTER TAE -A6A7 ; [.3985.0020.0002] # BAMUM LETTER O -A6A8 ; [.3986.0020.0002] # BAMUM LETTER NYI -A6A9 ; [.3987.0020.0002] # BAMUM LETTER I -A6AA ; [.3988.0020.0002] # BAMUM LETTER LA -A6AB ; [.3989.0020.0002] # BAMUM LETTER PA -A6AC ; [.398A.0020.0002] # BAMUM LETTER RII -A6AD ; [.398B.0020.0002] # BAMUM LETTER RIEE -A6AE ; [.398C.0020.0002] # BAMUM LETTER LEEEE -A6AF ; [.398D.0020.0002] # BAMUM LETTER MEEEE -A6B0 ; [.398E.0020.0002] # BAMUM LETTER TAA -A6B1 ; [.398F.0020.0002] # BAMUM LETTER NDAA -A6B2 ; [.3990.0020.0002] # BAMUM LETTER NJAEM -A6B3 ; [.3991.0020.0002] # BAMUM LETTER M -A6B4 ; [.3992.0020.0002] # BAMUM LETTER SUU -A6B5 ; [.3993.0020.0002] # BAMUM LETTER MU -A6B6 ; [.3994.0020.0002] # BAMUM LETTER SHII -A6B7 ; [.3995.0020.0002] # BAMUM LETTER SI -A6B8 ; [.3996.0020.0002] # BAMUM LETTER SHEUX -A6B9 ; [.3997.0020.0002] # BAMUM LETTER SEUX -A6BA ; [.3998.0020.0002] # BAMUM LETTER KYEE -A6BB ; [.3999.0020.0002] # BAMUM LETTER KET -A6BC ; [.399A.0020.0002] # BAMUM LETTER NUAE -A6BD ; [.399B.0020.0002] # BAMUM LETTER NU -A6BE ; [.399C.0020.0002] # BAMUM LETTER NJUAE -A6BF ; [.399D.0020.0002] # BAMUM LETTER YOQ -A6C0 ; [.399E.0020.0002] # BAMUM LETTER SHU -A6C1 ; [.399F.0020.0002] # BAMUM LETTER YUQ -A6C2 ; [.39A0.0020.0002] # BAMUM LETTER YA -A6C3 ; [.39A1.0020.0002] # BAMUM LETTER NSHA -A6C4 ; [.39A2.0020.0002] # BAMUM LETTER KEUX -A6C5 ; [.39A3.0020.0002] # BAMUM LETTER PEUX -A6C6 ; [.39A4.0020.0002] # BAMUM LETTER NJEE -A6C7 ; [.39A5.0020.0002] # BAMUM LETTER NTEE -A6C8 ; [.39A6.0020.0002] # BAMUM LETTER PUE -A6C9 ; [.39A7.0020.0002] # BAMUM LETTER WUE -A6CA ; [.39A8.0020.0002] # BAMUM LETTER PEE -A6CB ; [.39A9.0020.0002] # BAMUM LETTER FEE -A6CC ; [.39AA.0020.0002] # BAMUM LETTER RU -A6CD ; [.39AB.0020.0002] # BAMUM LETTER LU -A6CE ; [.39AC.0020.0002] # BAMUM LETTER MI -A6CF ; [.39AD.0020.0002] # BAMUM LETTER NI -A6D0 ; [.39AE.0020.0002] # BAMUM LETTER REUX -A6D1 ; [.39AF.0020.0002] # BAMUM LETTER RAE -A6D2 ; [.39B0.0020.0002] # BAMUM LETTER KEN -A6D3 ; [.39B1.0020.0002] # BAMUM LETTER NGKWAEN -A6D4 ; [.39B2.0020.0002] # BAMUM LETTER NGGA -A6D5 ; [.39B3.0020.0002] # BAMUM LETTER NGA -A6D6 ; [.39B4.0020.0002] # BAMUM LETTER SHO -A6D7 ; [.39B5.0020.0002] # BAMUM LETTER PUAE -A6D8 ; [.39B6.0020.0002] # BAMUM LETTER FU -A6D9 ; [.39B7.0020.0002] # BAMUM LETTER FOM -A6DA ; [.39B8.0020.0002] # BAMUM LETTER WA -A6DB ; [.39B9.0020.0002] # BAMUM LETTER NA -A6DC ; [.39BA.0020.0002] # BAMUM LETTER LI -A6DD ; [.39BB.0020.0002] # BAMUM LETTER PI -A6DE ; [.39BC.0020.0002] # BAMUM LETTER LOQ -A6DF ; [.39BD.0020.0002] # BAMUM LETTER KO -A6E0 ; [.39BE.0020.0002] # BAMUM LETTER MBEN -A6E1 ; [.39BF.0020.0002] # BAMUM LETTER REN -A6E2 ; [.39C0.0020.0002] # BAMUM LETTER MEN -A6E3 ; [.39C1.0020.0002] # BAMUM LETTER MA -A6E4 ; [.39C2.0020.0002] # BAMUM LETTER TI -A6E5 ; [.39C3.0020.0002] # BAMUM LETTER KI -A6E6 ; [.39C4.0020.0002] # BAMUM LETTER MO -A6E7 ; [.39C5.0020.0002] # BAMUM LETTER MBAA -A6E8 ; [.39C6.0020.0002] # BAMUM LETTER TET -A6E9 ; [.39C7.0020.0002] # BAMUM LETTER KPA -A6EA ; [.39C8.0020.0002] # BAMUM LETTER TEN -A6EB ; [.39C9.0020.0002] # BAMUM LETTER NTUU -A6EC ; [.39CA.0020.0002] # BAMUM LETTER SAMBA -A6ED ; [.39CB.0020.0002] # BAMUM LETTER FAAMAE -A6EE ; [.39CC.0020.0002] # BAMUM LETTER KOVUU -A6EF ; [.39CD.0020.0002] # BAMUM LETTER KOGHOM -16800 ; [.39CE.0020.0002] # BAMUM LETTER PHASE-A NGKUE MFON -16801 ; [.39CF.0020.0002] # BAMUM LETTER PHASE-A GBIEE FON -16802 ; [.39D0.0020.0002] # BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE -16803 ; [.39D1.0020.0002] # BAMUM LETTER PHASE-A PON MFON PIPAEMBA -16804 ; [.39D2.0020.0002] # BAMUM LETTER PHASE-A NAA MFON -16805 ; [.39D3.0020.0002] # BAMUM LETTER PHASE-A SHUENSHUET -16806 ; [.39D4.0020.0002] # BAMUM LETTER PHASE-A TITA MFON -16807 ; [.39D5.0020.0002] # BAMUM LETTER PHASE-A NZA MFON -16808 ; [.39D6.0020.0002] # BAMUM LETTER PHASE-A SHINDA PA NJI -16809 ; [.39D7.0020.0002] # BAMUM LETTER PHASE-A PON PA NJI PIPAEMGBIEE -1680A ; [.39D8.0020.0002] # BAMUM LETTER PHASE-A PON PA NJI PIPAEMBA -1680B ; [.39D9.0020.0002] # BAMUM LETTER PHASE-A MAEMBGBIEE -1680C ; [.39DA.0020.0002] # BAMUM LETTER PHASE-A TU MAEMBA -1680D ; [.39DB.0020.0002] # BAMUM LETTER PHASE-A NGANGU -1680E ; [.39DC.0020.0002] # BAMUM LETTER PHASE-A MAEMVEUX -1680F ; [.39DD.0020.0002] # BAMUM LETTER PHASE-A MANSUAE -16810 ; [.39DE.0020.0002] # BAMUM LETTER PHASE-A MVEUAENGAM -16811 ; [.39DF.0020.0002] # BAMUM LETTER PHASE-A SEUNYAM -16812 ; [.39E0.0020.0002] # BAMUM LETTER PHASE-A NTOQPEN -16813 ; [.39E1.0020.0002] # BAMUM LETTER PHASE-A KEUKEUTNDA -16814 ; [.39E2.0020.0002] # BAMUM LETTER PHASE-A NKINDI -16815 ; [.39E3.0020.0002] # BAMUM LETTER PHASE-A SUU -16816 ; [.39E4.0020.0002] # BAMUM LETTER PHASE-A NGKUENZEUM -16817 ; [.39E5.0020.0002] # BAMUM LETTER PHASE-A LAPAQ -16818 ; [.39E6.0020.0002] # BAMUM LETTER PHASE-A LET KUT -16819 ; [.39E7.0020.0002] # BAMUM LETTER PHASE-A NTAP MFAA -1681A ; [.39E8.0020.0002] # BAMUM LETTER PHASE-A MAEKEUP -1681B ; [.39E9.0020.0002] # BAMUM LETTER PHASE-A PASHAE -1681C ; [.39EA.0020.0002] # BAMUM LETTER PHASE-A GHEUAERAE -1681D ; [.39EB.0020.0002] # BAMUM LETTER PHASE-A PAMSHAE -1681E ; [.39EC.0020.0002] # BAMUM LETTER PHASE-A MON NGGEUAET -1681F ; [.39ED.0020.0002] # BAMUM LETTER PHASE-A NZUN MEUT -16820 ; [.39EE.0020.0002] # BAMUM LETTER PHASE-A U YUQ NAE -16821 ; [.39EF.0020.0002] # BAMUM LETTER PHASE-A GHEUAEGHEUAE -16822 ; [.39F0.0020.0002] # BAMUM LETTER PHASE-A NTAP NTAA -16823 ; [.39F1.0020.0002] # BAMUM LETTER PHASE-A SISA -16824 ; [.39F2.0020.0002] # BAMUM LETTER PHASE-A MGBASA -16825 ; [.39F3.0020.0002] # BAMUM LETTER PHASE-A MEUNJOMNDEUQ -16826 ; [.39F4.0020.0002] # BAMUM LETTER PHASE-A MOOMPUQ -16827 ; [.39F5.0020.0002] # BAMUM LETTER PHASE-A KAFA -16828 ; [.39F6.0020.0002] # BAMUM LETTER PHASE-A PA LEERAEWA -16829 ; [.39F7.0020.0002] # BAMUM LETTER PHASE-A NDA LEERAEWA -1682A ; [.39F8.0020.0002] # BAMUM LETTER PHASE-A PET -1682B ; [.39F9.0020.0002] # BAMUM LETTER PHASE-A MAEMKPEN -1682C ; [.39FA.0020.0002] # BAMUM LETTER PHASE-A NIKA -1682D ; [.39FB.0020.0002] # BAMUM LETTER PHASE-A PUP -1682E ; [.39FC.0020.0002] # BAMUM LETTER PHASE-A TUAEP -1682F ; [.39FD.0020.0002] # BAMUM LETTER PHASE-A LUAEP -16830 ; [.39FE.0020.0002] # BAMUM LETTER PHASE-A SONJAM -16831 ; [.39FF.0020.0002] # BAMUM LETTER PHASE-A TEUTEUWEN -16832 ; [.3A00.0020.0002] # BAMUM LETTER PHASE-A MAENYI -16833 ; [.3A01.0020.0002] # BAMUM LETTER PHASE-A KET -16834 ; [.3A02.0020.0002] # BAMUM LETTER PHASE-A NDAANGGEUAET -16835 ; [.3A03.0020.0002] # BAMUM LETTER PHASE-A KUOQ -16836 ; [.3A04.0020.0002] # BAMUM LETTER PHASE-A MOOMEUT -16837 ; [.3A05.0020.0002] # BAMUM LETTER PHASE-A SHUM -16838 ; [.3A06.0020.0002] # BAMUM LETTER PHASE-A LOMMAE -16839 ; [.3A07.0020.0002] # BAMUM LETTER PHASE-A FIRI -1683A ; [.3A08.0020.0002] # BAMUM LETTER PHASE-A ROM -1683B ; [.3A09.0020.0002] # BAMUM LETTER PHASE-A KPOQ -1683C ; [.3A0A.0020.0002] # BAMUM LETTER PHASE-A SOQ -1683D ; [.3A0B.0020.0002] # BAMUM LETTER PHASE-A MAP PIEET -1683E ; [.3A0C.0020.0002] # BAMUM LETTER PHASE-A SHIRAE -1683F ; [.3A0D.0020.0002] # BAMUM LETTER PHASE-A NTAP -16840 ; [.3A0E.0020.0002] # BAMUM LETTER PHASE-A SHOQ NSHUT YUM -16841 ; [.3A0F.0020.0002] # BAMUM LETTER PHASE-A NYIT MONGKEUAEQ -16842 ; [.3A10.0020.0002] # BAMUM LETTER PHASE-A PAARAE -16843 ; [.3A11.0020.0002] # BAMUM LETTER PHASE-A NKAARAE -16844 ; [.3A12.0020.0002] # BAMUM LETTER PHASE-A UNKNOWN -16845 ; [.3A13.0020.0002] # BAMUM LETTER PHASE-A NGGEN -16846 ; [.3A14.0020.0002] # BAMUM LETTER PHASE-A MAESI -16847 ; [.3A15.0020.0002] # BAMUM LETTER PHASE-A NJAM -16848 ; [.3A16.0020.0002] # BAMUM LETTER PHASE-A MBANYI -16849 ; [.3A17.0020.0002] # BAMUM LETTER PHASE-A NYET -1684A ; [.3A18.0020.0002] # BAMUM LETTER PHASE-A TEUAEN -1684B ; [.3A19.0020.0002] # BAMUM LETTER PHASE-A SOT -1684C ; [.3A1A.0020.0002] # BAMUM LETTER PHASE-A PAAM -1684D ; [.3A1B.0020.0002] # BAMUM LETTER PHASE-A NSHIEE -1684E ; [.3A1C.0020.0002] # BAMUM LETTER PHASE-A MAEM -1684F ; [.3A1D.0020.0002] # BAMUM LETTER PHASE-A NYI -16850 ; [.3A1E.0020.0002] # BAMUM LETTER PHASE-A KAQ -16851 ; [.3A1F.0020.0002] # BAMUM LETTER PHASE-A NSHA -16852 ; [.3A20.0020.0002] # BAMUM LETTER PHASE-A VEE -16853 ; [.3A21.0020.0002] # BAMUM LETTER PHASE-A LU -16854 ; [.3A22.0020.0002] # BAMUM LETTER PHASE-A NEN -16855 ; [.3A23.0020.0002] # BAMUM LETTER PHASE-A NAQ -16856 ; [.3A24.0020.0002] # BAMUM LETTER PHASE-A MBAQ -16857 ; [.3A25.0020.0002] # BAMUM LETTER PHASE-B NSHUET -16858 ; [.3A26.0020.0002] # BAMUM LETTER PHASE-B TU MAEMGBIEE -16859 ; [.3A27.0020.0002] # BAMUM LETTER PHASE-B SIEE -1685A ; [.3A28.0020.0002] # BAMUM LETTER PHASE-B SET TU -1685B ; [.3A29.0020.0002] # BAMUM LETTER PHASE-B LOM NTEUM -1685C ; [.3A2A.0020.0002] # BAMUM LETTER PHASE-B MBA MAELEE -1685D ; [.3A2B.0020.0002] # BAMUM LETTER PHASE-B KIEEM -1685E ; [.3A2C.0020.0002] # BAMUM LETTER PHASE-B YEURAE -1685F ; [.3A2D.0020.0002] # BAMUM LETTER PHASE-B MBAARAE -16860 ; [.3A2E.0020.0002] # BAMUM LETTER PHASE-B KAM -16861 ; [.3A2F.0020.0002] # BAMUM LETTER PHASE-B PEESHI -16862 ; [.3A30.0020.0002] # BAMUM LETTER PHASE-B YAFU LEERAEWA -16863 ; [.3A31.0020.0002] # BAMUM LETTER PHASE-B LAM NSHUT NYAM -16864 ; [.3A32.0020.0002] # BAMUM LETTER PHASE-B NTIEE SHEUOQ -16865 ; [.3A33.0020.0002] # BAMUM LETTER PHASE-B NDU NJAA -16866 ; [.3A34.0020.0002] # BAMUM LETTER PHASE-B GHEUGHEUAEM -16867 ; [.3A35.0020.0002] # BAMUM LETTER PHASE-B PIT -16868 ; [.3A36.0020.0002] # BAMUM LETTER PHASE-B TU NSIEE -16869 ; [.3A37.0020.0002] # BAMUM LETTER PHASE-B SHET NJAQ -1686A ; [.3A38.0020.0002] # BAMUM LETTER PHASE-B SHEUAEQTU -1686B ; [.3A39.0020.0002] # BAMUM LETTER PHASE-B MFON TEUAEQ -1686C ; [.3A3A.0020.0002] # BAMUM LETTER PHASE-B MBIT MBAAKET -1686D ; [.3A3B.0020.0002] # BAMUM LETTER PHASE-B NYI NTEUM -1686E ; [.3A3C.0020.0002] # BAMUM LETTER PHASE-B KEUPUQ -1686F ; [.3A3D.0020.0002] # BAMUM LETTER PHASE-B GHEUGHEN -16870 ; [.3A3E.0020.0002] # BAMUM LETTER PHASE-B KEUYEUX -16871 ; [.3A3F.0020.0002] # BAMUM LETTER PHASE-B LAANAE -16872 ; [.3A40.0020.0002] # BAMUM LETTER PHASE-B PARUM -16873 ; [.3A41.0020.0002] # BAMUM LETTER PHASE-B VEUM -16874 ; [.3A42.0020.0002] # BAMUM LETTER PHASE-B NGKINDI MVOP -16875 ; [.3A43.0020.0002] # BAMUM LETTER PHASE-B NGGEU MBU -16876 ; [.3A44.0020.0002] # BAMUM LETTER PHASE-B WUAET -16877 ; [.3A45.0020.0002] # BAMUM LETTER PHASE-B SAKEUAE -16878 ; [.3A46.0020.0002] # BAMUM LETTER PHASE-B TAAM -16879 ; [.3A47.0020.0002] # BAMUM LETTER PHASE-B MEUQ -1687A ; [.3A48.0020.0002] # BAMUM LETTER PHASE-B NGGUOQ -1687B ; [.3A49.0020.0002] # BAMUM LETTER PHASE-B NGGUOQ LARGE -1687C ; [.3A4A.0020.0002] # BAMUM LETTER PHASE-B MFIYAQ -1687D ; [.3A4B.0020.0002] # BAMUM LETTER PHASE-B SUE -1687E ; [.3A4C.0020.0002] # BAMUM LETTER PHASE-B MBEURI -1687F ; [.3A4D.0020.0002] # BAMUM LETTER PHASE-B MONTIEEN -16880 ; [.3A4E.0020.0002] # BAMUM LETTER PHASE-B NYAEMAE -16881 ; [.3A4F.0020.0002] # BAMUM LETTER PHASE-B PUNGAAM -16882 ; [.3A50.0020.0002] # BAMUM LETTER PHASE-B MEUT NGGEET -16883 ; [.3A51.0020.0002] # BAMUM LETTER PHASE-B FEUX -16884 ; [.3A52.0020.0002] # BAMUM LETTER PHASE-B MBUOQ -16885 ; [.3A53.0020.0002] # BAMUM LETTER PHASE-B FEE -16886 ; [.3A54.0020.0002] # BAMUM LETTER PHASE-B KEUAEM -16887 ; [.3A55.0020.0002] # BAMUM LETTER PHASE-B MA NJEUAENA -16888 ; [.3A56.0020.0002] # BAMUM LETTER PHASE-B MA NJUQA -16889 ; [.3A57.0020.0002] # BAMUM LETTER PHASE-B LET -1688A ; [.3A58.0020.0002] # BAMUM LETTER PHASE-B NGGAAM -1688B ; [.3A59.0020.0002] # BAMUM LETTER PHASE-B NSEN -1688C ; [.3A5A.0020.0002] # BAMUM LETTER PHASE-B MA -1688D ; [.3A5B.0020.0002] # BAMUM LETTER PHASE-B KIQ -1688E ; [.3A5C.0020.0002] # BAMUM LETTER PHASE-B NGOM -1688F ; [.3A5D.0020.0002] # BAMUM LETTER PHASE-C NGKUE MAEMBA -16890 ; [.3A5E.0020.0002] # BAMUM LETTER PHASE-C NZA -16891 ; [.3A5F.0020.0002] # BAMUM LETTER PHASE-C YUM -16892 ; [.3A60.0020.0002] # BAMUM LETTER PHASE-C WANGKUOQ -16893 ; [.3A61.0020.0002] # BAMUM LETTER PHASE-C NGGEN -16894 ; [.3A62.0020.0002] # BAMUM LETTER PHASE-C NDEUAEREE -16895 ; [.3A63.0020.0002] # BAMUM LETTER PHASE-C NGKAQ -16896 ; [.3A64.0020.0002] # BAMUM LETTER PHASE-C GHARAE -16897 ; [.3A65.0020.0002] # BAMUM LETTER PHASE-C MBEEKEET -16898 ; [.3A66.0020.0002] # BAMUM LETTER PHASE-C GBAYI -16899 ; [.3A67.0020.0002] # BAMUM LETTER PHASE-C NYIR MKPARAQ MEUN -1689A ; [.3A68.0020.0002] # BAMUM LETTER PHASE-C NTU MBIT -1689B ; [.3A69.0020.0002] # BAMUM LETTER PHASE-C MBEUM -1689C ; [.3A6A.0020.0002] # BAMUM LETTER PHASE-C PIRIEEN -1689D ; [.3A6B.0020.0002] # BAMUM LETTER PHASE-C NDOMBU -1689E ; [.3A6C.0020.0002] # BAMUM LETTER PHASE-C MBAA CABBAGE-TREE -1689F ; [.3A6D.0020.0002] # BAMUM LETTER PHASE-C KEUSHEUAEP -168A0 ; [.3A6E.0020.0002] # BAMUM LETTER PHASE-C GHAP -168A1 ; [.3A6F.0020.0002] # BAMUM LETTER PHASE-C KEUKAQ -168A2 ; [.3A70.0020.0002] # BAMUM LETTER PHASE-C YU MUOMAE -168A3 ; [.3A71.0020.0002] # BAMUM LETTER PHASE-C NZEUM -168A4 ; [.3A72.0020.0002] # BAMUM LETTER PHASE-C MBUE -168A5 ; [.3A73.0020.0002] # BAMUM LETTER PHASE-C NSEUAEN -168A6 ; [.3A74.0020.0002] # BAMUM LETTER PHASE-C MBIT -168A7 ; [.3A75.0020.0002] # BAMUM LETTER PHASE-C YEUQ -168A8 ; [.3A76.0020.0002] # BAMUM LETTER PHASE-C KPARAQ -168A9 ; [.3A77.0020.0002] # BAMUM LETTER PHASE-C KAA -168AA ; [.3A78.0020.0002] # BAMUM LETTER PHASE-C SEUX -168AB ; [.3A79.0020.0002] # BAMUM LETTER PHASE-C NDIDA -168AC ; [.3A7A.0020.0002] # BAMUM LETTER PHASE-C TAASHAE -168AD ; [.3A7B.0020.0002] # BAMUM LETTER PHASE-C NJUEQ -168AE ; [.3A7C.0020.0002] # BAMUM LETTER PHASE-C TITA YUE -168AF ; [.3A7D.0020.0002] # BAMUM LETTER PHASE-C SUAET -168B0 ; [.3A7E.0020.0002] # BAMUM LETTER PHASE-C NGGUAEN NYAM -168B1 ; [.3A7F.0020.0002] # BAMUM LETTER PHASE-C VEUX -168B2 ; [.3A80.0020.0002] # BAMUM LETTER PHASE-C NANSANAQ -168B3 ; [.3A81.0020.0002] # BAMUM LETTER PHASE-C MA KEUAERI -168B4 ; [.3A82.0020.0002] # BAMUM LETTER PHASE-C NTAA -168B5 ; [.3A83.0020.0002] # BAMUM LETTER PHASE-C NGGUON -168B6 ; [.3A84.0020.0002] # BAMUM LETTER PHASE-C LAP -168B7 ; [.3A85.0020.0002] # BAMUM LETTER PHASE-C MBIRIEEN -168B8 ; [.3A86.0020.0002] # BAMUM LETTER PHASE-C MGBASAQ -168B9 ; [.3A87.0020.0002] # BAMUM LETTER PHASE-C NTEUNGBA -168BA ; [.3A88.0020.0002] # BAMUM LETTER PHASE-C TEUTEUX -168BB ; [.3A89.0020.0002] # BAMUM LETTER PHASE-C NGGUM -168BC ; [.3A8A.0020.0002] # BAMUM LETTER PHASE-C FUE -168BD ; [.3A8B.0020.0002] # BAMUM LETTER PHASE-C NDEUT -168BE ; [.3A8C.0020.0002] # BAMUM LETTER PHASE-C NSA -168BF ; [.3A8D.0020.0002] # BAMUM LETTER PHASE-C NSHAQ -168C0 ; [.3A8E.0020.0002] # BAMUM LETTER PHASE-C BUNG -168C1 ; [.3A8F.0020.0002] # BAMUM LETTER PHASE-C VEUAEPEN -168C2 ; [.3A90.0020.0002] # BAMUM LETTER PHASE-C MBERAE -168C3 ; [.3A91.0020.0002] # BAMUM LETTER PHASE-C RU -168C4 ; [.3A92.0020.0002] # BAMUM LETTER PHASE-C NJAEM -168C5 ; [.3A93.0020.0002] # BAMUM LETTER PHASE-C LAM -168C6 ; [.3A94.0020.0002] # BAMUM LETTER PHASE-C TITUAEP -168C7 ; [.3A95.0020.0002] # BAMUM LETTER PHASE-C NSUOT NGOM -168C8 ; [.3A96.0020.0002] # BAMUM LETTER PHASE-C NJEEEE -168C9 ; [.3A97.0020.0002] # BAMUM LETTER PHASE-C KET -168CA ; [.3A98.0020.0002] # BAMUM LETTER PHASE-C NGGU -168CB ; [.3A99.0020.0002] # BAMUM LETTER PHASE-C MAESI -168CC ; [.3A9A.0020.0002] # BAMUM LETTER PHASE-C MBUAEM -168CD ; [.3A9B.0020.0002] # BAMUM LETTER PHASE-C LU -168CE ; [.3A9C.0020.0002] # BAMUM LETTER PHASE-C KUT -168CF ; [.3A9D.0020.0002] # BAMUM LETTER PHASE-C NJAM -168D0 ; [.3A9E.0020.0002] # BAMUM LETTER PHASE-C NGOM -168D1 ; [.3A9F.0020.0002] # BAMUM LETTER PHASE-C WUP -168D2 ; [.3AA0.0020.0002] # BAMUM LETTER PHASE-C NGGUEET -168D3 ; [.3AA1.0020.0002] # BAMUM LETTER PHASE-C NSOM -168D4 ; [.3AA2.0020.0002] # BAMUM LETTER PHASE-C NTEN -168D5 ; [.3AA3.0020.0002] # BAMUM LETTER PHASE-C KUOP NKAARAE -168D6 ; [.3AA4.0020.0002] # BAMUM LETTER PHASE-C NSUN -168D7 ; [.3AA5.0020.0002] # BAMUM LETTER PHASE-C NDAM -168D8 ; [.3AA6.0020.0002] # BAMUM LETTER PHASE-C MA NSIEE -168D9 ; [.3AA7.0020.0002] # BAMUM LETTER PHASE-C YAA -168DA ; [.3AA8.0020.0002] # BAMUM LETTER PHASE-C NDAP -168DB ; [.3AA9.0020.0002] # BAMUM LETTER PHASE-C SHUEQ -168DC ; [.3AAA.0020.0002] # BAMUM LETTER PHASE-C SETFON -168DD ; [.3AAB.0020.0002] # BAMUM LETTER PHASE-C MBI -168DE ; [.3AAC.0020.0002] # BAMUM LETTER PHASE-C MAEMBA -168DF ; [.3AAD.0020.0002] # BAMUM LETTER PHASE-C MBANYI -168E0 ; [.3AAE.0020.0002] # BAMUM LETTER PHASE-C KEUSEUX -168E1 ; [.3AAF.0020.0002] # BAMUM LETTER PHASE-C MBEUX -168E2 ; [.3AB0.0020.0002] # BAMUM LETTER PHASE-C KEUM -168E3 ; [.3AB1.0020.0002] # BAMUM LETTER PHASE-C MBAA PICKET -168E4 ; [.3AB2.0020.0002] # BAMUM LETTER PHASE-C YUWOQ -168E5 ; [.3AB3.0020.0002] # BAMUM LETTER PHASE-C NJEUX -168E6 ; [.3AB4.0020.0002] # BAMUM LETTER PHASE-C MIEE -168E7 ; [.3AB5.0020.0002] # BAMUM LETTER PHASE-C MUAE -168E8 ; [.3AB6.0020.0002] # BAMUM LETTER PHASE-C SHIQ -168E9 ; [.3AB7.0020.0002] # BAMUM LETTER PHASE-C KEN LAW -168EA ; [.3AB8.0020.0002] # BAMUM LETTER PHASE-C KEN FATIGUE -168EB ; [.3AB9.0020.0002] # BAMUM LETTER PHASE-C NGAQ -168EC ; [.3ABA.0020.0002] # BAMUM LETTER PHASE-C NAQ -168ED ; [.3ABB.0020.0002] # BAMUM LETTER PHASE-C LIQ -168EE ; [.3ABC.0020.0002] # BAMUM LETTER PHASE-C PIN -168EF ; [.3ABD.0020.0002] # BAMUM LETTER PHASE-C PEN -168F0 ; [.3ABE.0020.0002] # BAMUM LETTER PHASE-C TET -168F1 ; [.3ABF.0020.0002] # BAMUM LETTER PHASE-D MBUO -168F2 ; [.3AC0.0020.0002] # BAMUM LETTER PHASE-D WAP -168F3 ; [.3AC1.0020.0002] # BAMUM LETTER PHASE-D NJI -168F4 ; [.3AC2.0020.0002] # BAMUM LETTER PHASE-D MFON -168F5 ; [.3AC3.0020.0002] # BAMUM LETTER PHASE-D NJIEE -168F6 ; [.3AC4.0020.0002] # BAMUM LETTER PHASE-D LIEE -168F7 ; [.3AC5.0020.0002] # BAMUM LETTER PHASE-D NJEUT -168F8 ; [.3AC6.0020.0002] # BAMUM LETTER PHASE-D NSHEE -168F9 ; [.3AC7.0020.0002] # BAMUM LETTER PHASE-D NGGAAMAE -168FA ; [.3AC8.0020.0002] # BAMUM LETTER PHASE-D NYAM -168FB ; [.3AC9.0020.0002] # BAMUM LETTER PHASE-D WUAEN -168FC ; [.3ACA.0020.0002] # BAMUM LETTER PHASE-D NGKUN -168FD ; [.3ACB.0020.0002] # BAMUM LETTER PHASE-D SHEE -168FE ; [.3ACC.0020.0002] # BAMUM LETTER PHASE-D NGKAP -168FF ; [.3ACD.0020.0002] # BAMUM LETTER PHASE-D KEUAETMEUN -16900 ; [.3ACE.0020.0002] # BAMUM LETTER PHASE-D TEUT -16901 ; [.3ACF.0020.0002] # BAMUM LETTER PHASE-D SHEUAE -16902 ; [.3AD0.0020.0002] # BAMUM LETTER PHASE-D NJAP -16903 ; [.3AD1.0020.0002] # BAMUM LETTER PHASE-D SUE -16904 ; [.3AD2.0020.0002] # BAMUM LETTER PHASE-D KET -16905 ; [.3AD3.0020.0002] # BAMUM LETTER PHASE-D YAEMMAE -16906 ; [.3AD4.0020.0002] # BAMUM LETTER PHASE-D KUOM -16907 ; [.3AD5.0020.0002] # BAMUM LETTER PHASE-D SAP -16908 ; [.3AD6.0020.0002] # BAMUM LETTER PHASE-D MFEUT -16909 ; [.3AD7.0020.0002] # BAMUM LETTER PHASE-D NDEUX -1690A ; [.3AD8.0020.0002] # BAMUM LETTER PHASE-D MALEERI -1690B ; [.3AD9.0020.0002] # BAMUM LETTER PHASE-D MEUT -1690C ; [.3ADA.0020.0002] # BAMUM LETTER PHASE-D SEUAEQ -1690D ; [.3ADB.0020.0002] # BAMUM LETTER PHASE-D YEN -1690E ; [.3ADC.0020.0002] # BAMUM LETTER PHASE-D NJEUAEM -1690F ; [.3ADD.0020.0002] # BAMUM LETTER PHASE-D KEUOT MBUAE -16910 ; [.3ADE.0020.0002] # BAMUM LETTER PHASE-D NGKEURI -16911 ; [.3ADF.0020.0002] # BAMUM LETTER PHASE-D TU -16912 ; [.3AE0.0020.0002] # BAMUM LETTER PHASE-D GHAA -16913 ; [.3AE1.0020.0002] # BAMUM LETTER PHASE-D NGKYEE -16914 ; [.3AE2.0020.0002] # BAMUM LETTER PHASE-D FEUFEUAET -16915 ; [.3AE3.0020.0002] # BAMUM LETTER PHASE-D NDEE -16916 ; [.3AE4.0020.0002] # BAMUM LETTER PHASE-D MGBOFUM -16917 ; [.3AE5.0020.0002] # BAMUM LETTER PHASE-D LEUAEP -16918 ; [.3AE6.0020.0002] # BAMUM LETTER PHASE-D NDON -16919 ; [.3AE7.0020.0002] # BAMUM LETTER PHASE-D MONI -1691A ; [.3AE8.0020.0002] # BAMUM LETTER PHASE-D MGBEUN -1691B ; [.3AE9.0020.0002] # BAMUM LETTER PHASE-D PUUT -1691C ; [.3AEA.0020.0002] # BAMUM LETTER PHASE-D MGBIEE -1691D ; [.3AEB.0020.0002] # BAMUM LETTER PHASE-D MFO -1691E ; [.3AEC.0020.0002] # BAMUM LETTER PHASE-D LUM -1691F ; [.3AED.0020.0002] # BAMUM LETTER PHASE-D NSIEEP -16920 ; [.3AEE.0020.0002] # BAMUM LETTER PHASE-D MBAA -16921 ; [.3AEF.0020.0002] # BAMUM LETTER PHASE-D KWAET -16922 ; [.3AF0.0020.0002] # BAMUM LETTER PHASE-D NYET -16923 ; [.3AF1.0020.0002] # BAMUM LETTER PHASE-D TEUAEN -16924 ; [.3AF2.0020.0002] # BAMUM LETTER PHASE-D SOT -16925 ; [.3AF3.0020.0002] # BAMUM LETTER PHASE-D YUWOQ -16926 ; [.3AF4.0020.0002] # BAMUM LETTER PHASE-D KEUM -16927 ; [.3AF5.0020.0002] # BAMUM LETTER PHASE-D RAEM -16928 ; [.3AF6.0020.0002] # BAMUM LETTER PHASE-D TEEEE -16929 ; [.3AF7.0020.0002] # BAMUM LETTER PHASE-D NGKEUAEQ -1692A ; [.3AF8.0020.0002] # BAMUM LETTER PHASE-D MFEUAE -1692B ; [.3AF9.0020.0002] # BAMUM LETTER PHASE-D NSIEET -1692C ; [.3AFA.0020.0002] # BAMUM LETTER PHASE-D KEUP -1692D ; [.3AFB.0020.0002] # BAMUM LETTER PHASE-D PIP -1692E ; [.3AFC.0020.0002] # BAMUM LETTER PHASE-D PEUTAE -1692F ; [.3AFD.0020.0002] # BAMUM LETTER PHASE-D NYUE -16930 ; [.3AFE.0020.0002] # BAMUM LETTER PHASE-D LET -16931 ; [.3AFF.0020.0002] # BAMUM LETTER PHASE-D NGGAAM -16932 ; [.3B00.0020.0002] # BAMUM LETTER PHASE-D MFIEE -16933 ; [.3B01.0020.0002] # BAMUM LETTER PHASE-D NGGWAEN -16934 ; [.3B02.0020.0002] # BAMUM LETTER PHASE-D YUOM -16935 ; [.3B03.0020.0002] # BAMUM LETTER PHASE-D PAP -16936 ; [.3B04.0020.0002] # BAMUM LETTER PHASE-D YUOP -16937 ; [.3B05.0020.0002] # BAMUM LETTER PHASE-D NDAM -16938 ; [.3B06.0020.0002] # BAMUM LETTER PHASE-D NTEUM -16939 ; [.3B07.0020.0002] # BAMUM LETTER PHASE-D SUAE -1693A ; [.3B08.0020.0002] # BAMUM LETTER PHASE-D KUN -1693B ; [.3B09.0020.0002] # BAMUM LETTER PHASE-D NGGEUX -1693C ; [.3B0A.0020.0002] # BAMUM LETTER PHASE-D NGKIEE -1693D ; [.3B0B.0020.0002] # BAMUM LETTER PHASE-D TUOT -1693E ; [.3B0C.0020.0002] # BAMUM LETTER PHASE-D MEUN -1693F ; [.3B0D.0020.0002] # BAMUM LETTER PHASE-D KUQ -16940 ; [.3B0E.0020.0002] # BAMUM LETTER PHASE-D NSUM -16941 ; [.3B0F.0020.0002] # BAMUM LETTER PHASE-D TEUN -16942 ; [.3B10.0020.0002] # BAMUM LETTER PHASE-D MAENJET -16943 ; [.3B11.0020.0002] # BAMUM LETTER PHASE-D NGGAP -16944 ; [.3B12.0020.0002] # BAMUM LETTER PHASE-D LEUM -16945 ; [.3B13.0020.0002] # BAMUM LETTER PHASE-D NGGUOM -16946 ; [.3B14.0020.0002] # BAMUM LETTER PHASE-D NSHUT -16947 ; [.3B15.0020.0002] # BAMUM LETTER PHASE-D NJUEQ -16948 ; [.3B16.0020.0002] # BAMUM LETTER PHASE-D GHEUAE -16949 ; [.3B17.0020.0002] # BAMUM LETTER PHASE-D KU -1694A ; [.3B18.0020.0002] # BAMUM LETTER PHASE-D REN OLD -1694B ; [.3B19.0020.0002] # BAMUM LETTER PHASE-D TAE -1694C ; [.3B1A.0020.0002] # BAMUM LETTER PHASE-D TOQ -1694D ; [.3B1B.0020.0002] # BAMUM LETTER PHASE-D NYI -1694E ; [.3B1C.0020.0002] # BAMUM LETTER PHASE-D RII -1694F ; [.3B1D.0020.0002] # BAMUM LETTER PHASE-D LEEEE -16950 ; [.3B1E.0020.0002] # BAMUM LETTER PHASE-D MEEEE -16951 ; [.3B1F.0020.0002] # BAMUM LETTER PHASE-D M -16952 ; [.3B20.0020.0002] # BAMUM LETTER PHASE-D SUU -16953 ; [.3B21.0020.0002] # BAMUM LETTER PHASE-D MU -16954 ; [.3B22.0020.0002] # BAMUM LETTER PHASE-D SHII -16955 ; [.3B23.0020.0002] # BAMUM LETTER PHASE-D SHEUX -16956 ; [.3B24.0020.0002] # BAMUM LETTER PHASE-D KYEE -16957 ; [.3B25.0020.0002] # BAMUM LETTER PHASE-D NU -16958 ; [.3B26.0020.0002] # BAMUM LETTER PHASE-D SHU -16959 ; [.3B27.0020.0002] # BAMUM LETTER PHASE-D NTEE -1695A ; [.3B28.0020.0002] # BAMUM LETTER PHASE-D PEE -1695B ; [.3B29.0020.0002] # BAMUM LETTER PHASE-D NI -1695C ; [.3B2A.0020.0002] # BAMUM LETTER PHASE-D SHOQ -1695D ; [.3B2B.0020.0002] # BAMUM LETTER PHASE-D PUQ -1695E ; [.3B2C.0020.0002] # BAMUM LETTER PHASE-D MVOP -1695F ; [.3B2D.0020.0002] # BAMUM LETTER PHASE-D LOQ -16960 ; [.3B2E.0020.0002] # BAMUM LETTER PHASE-D REN MUCH -16961 ; [.3B2F.0020.0002] # BAMUM LETTER PHASE-D TI -16962 ; [.3B30.0020.0002] # BAMUM LETTER PHASE-D NTUU -16963 ; [.3B31.0020.0002] # BAMUM LETTER PHASE-D MBAA SEVEN -16964 ; [.3B32.0020.0002] # BAMUM LETTER PHASE-D SAQ -16965 ; [.3B33.0020.0002] # BAMUM LETTER PHASE-D FAA -16966 ; [.3B34.0020.0002] # BAMUM LETTER PHASE-E NDAP -16967 ; [.3B35.0020.0002] # BAMUM LETTER PHASE-E TOON -16968 ; [.3B36.0020.0002] # BAMUM LETTER PHASE-E MBEUM -16969 ; [.3B37.0020.0002] # BAMUM LETTER PHASE-E LAP -1696A ; [.3B38.0020.0002] # BAMUM LETTER PHASE-E VOM -1696B ; [.3B39.0020.0002] # BAMUM LETTER PHASE-E LOON -1696C ; [.3B3A.0020.0002] # BAMUM LETTER PHASE-E PAA -1696D ; [.3B3B.0020.0002] # BAMUM LETTER PHASE-E SOM -1696E ; [.3B3C.0020.0002] # BAMUM LETTER PHASE-E RAQ -1696F ; [.3B3D.0020.0002] # BAMUM LETTER PHASE-E NSHUOP -16970 ; [.3B3E.0020.0002] # BAMUM LETTER PHASE-E NDUN -16971 ; [.3B3F.0020.0002] # BAMUM LETTER PHASE-E PUAE -16972 ; [.3B40.0020.0002] # BAMUM LETTER PHASE-E TAM -16973 ; [.3B41.0020.0002] # BAMUM LETTER PHASE-E NGKA -16974 ; [.3B42.0020.0002] # BAMUM LETTER PHASE-E KPEUX -16975 ; [.3B43.0020.0002] # BAMUM LETTER PHASE-E WUO -16976 ; [.3B44.0020.0002] # BAMUM LETTER PHASE-E SEE -16977 ; [.3B45.0020.0002] # BAMUM LETTER PHASE-E NGGEUAET -16978 ; [.3B46.0020.0002] # BAMUM LETTER PHASE-E PAAM -16979 ; [.3B47.0020.0002] # BAMUM LETTER PHASE-E TOO -1697A ; [.3B48.0020.0002] # BAMUM LETTER PHASE-E KUOP -1697B ; [.3B49.0020.0002] # BAMUM LETTER PHASE-E LOM -1697C ; [.3B4A.0020.0002] # BAMUM LETTER PHASE-E NSHIEE -1697D ; [.3B4B.0020.0002] # BAMUM LETTER PHASE-E NGOP -1697E ; [.3B4C.0020.0002] # BAMUM LETTER PHASE-E MAEM -1697F ; [.3B4D.0020.0002] # BAMUM LETTER PHASE-E NGKEUX -16980 ; [.3B4E.0020.0002] # BAMUM LETTER PHASE-E NGOQ -16981 ; [.3B4F.0020.0002] # BAMUM LETTER PHASE-E NSHUE -16982 ; [.3B50.0020.0002] # BAMUM LETTER PHASE-E RIMGBA -16983 ; [.3B51.0020.0002] # BAMUM LETTER PHASE-E NJEUX -16984 ; [.3B52.0020.0002] # BAMUM LETTER PHASE-E PEEM -16985 ; [.3B53.0020.0002] # BAMUM LETTER PHASE-E SAA -16986 ; [.3B54.0020.0002] # BAMUM LETTER PHASE-E NGGURAE -16987 ; [.3B55.0020.0002] # BAMUM LETTER PHASE-E MGBA -16988 ; [.3B56.0020.0002] # BAMUM LETTER PHASE-E GHEUX -16989 ; [.3B57.0020.0002] # BAMUM LETTER PHASE-E NGKEUAEM -1698A ; [.3B58.0020.0002] # BAMUM LETTER PHASE-E NJAEMLI -1698B ; [.3B59.0020.0002] # BAMUM LETTER PHASE-E MAP -1698C ; [.3B5A.0020.0002] # BAMUM LETTER PHASE-E LOOT -1698D ; [.3B5B.0020.0002] # BAMUM LETTER PHASE-E NGGEEEE -1698E ; [.3B5C.0020.0002] # BAMUM LETTER PHASE-E NDIQ -1698F ; [.3B5D.0020.0002] # BAMUM LETTER PHASE-E TAEN NTEUM -16990 ; [.3B5E.0020.0002] # BAMUM LETTER PHASE-E SET -16991 ; [.3B5F.0020.0002] # BAMUM LETTER PHASE-E PUM -16992 ; [.3B60.0020.0002] # BAMUM LETTER PHASE-E NDAA SOFTNESS -16993 ; [.3B61.0020.0002] # BAMUM LETTER PHASE-E NGGUAESHAE NYAM -16994 ; [.3B62.0020.0002] # BAMUM LETTER PHASE-E YIEE -16995 ; [.3B63.0020.0002] # BAMUM LETTER PHASE-E GHEUN -16996 ; [.3B64.0020.0002] # BAMUM LETTER PHASE-E TUAE -16997 ; [.3B65.0020.0002] # BAMUM LETTER PHASE-E YEUAE -16998 ; [.3B66.0020.0002] # BAMUM LETTER PHASE-E PO -16999 ; [.3B67.0020.0002] # BAMUM LETTER PHASE-E TUMAE -1699A ; [.3B68.0020.0002] # BAMUM LETTER PHASE-E KEUAE -1699B ; [.3B69.0020.0002] # BAMUM LETTER PHASE-E SUAEN -1699C ; [.3B6A.0020.0002] # BAMUM LETTER PHASE-E TEUAEQ -1699D ; [.3B6B.0020.0002] # BAMUM LETTER PHASE-E VEUAE -1699E ; [.3B6C.0020.0002] # BAMUM LETTER PHASE-E WEUX -1699F ; [.3B6D.0020.0002] # BAMUM LETTER PHASE-E LAAM -169A0 ; [.3B6E.0020.0002] # BAMUM LETTER PHASE-E PU -169A1 ; [.3B6F.0020.0002] # BAMUM LETTER PHASE-E TAAQ -169A2 ; [.3B70.0020.0002] # BAMUM LETTER PHASE-E GHAAMAE -169A3 ; [.3B71.0020.0002] # BAMUM LETTER PHASE-E NGEUREUT -169A4 ; [.3B72.0020.0002] # BAMUM LETTER PHASE-E SHEUAEQ -169A5 ; [.3B73.0020.0002] # BAMUM LETTER PHASE-E MGBEN -169A6 ; [.3B74.0020.0002] # BAMUM LETTER PHASE-E MBEE -169A7 ; [.3B75.0020.0002] # BAMUM LETTER PHASE-E NZAQ -169A8 ; [.3B76.0020.0002] # BAMUM LETTER PHASE-E NKOM -169A9 ; [.3B77.0020.0002] # BAMUM LETTER PHASE-E GBET -169AA ; [.3B78.0020.0002] # BAMUM LETTER PHASE-E TUM -169AB ; [.3B79.0020.0002] # BAMUM LETTER PHASE-E KUET -169AC ; [.3B7A.0020.0002] # BAMUM LETTER PHASE-E YAP -169AD ; [.3B7B.0020.0002] # BAMUM LETTER PHASE-E NYI CLEAVER -169AE ; [.3B7C.0020.0002] # BAMUM LETTER PHASE-E YIT -169AF ; [.3B7D.0020.0002] # BAMUM LETTER PHASE-E MFEUQ -169B0 ; [.3B7E.0020.0002] # BAMUM LETTER PHASE-E NDIAQ -169B1 ; [.3B7F.0020.0002] # BAMUM LETTER PHASE-E PIEEQ -169B2 ; [.3B80.0020.0002] # BAMUM LETTER PHASE-E YUEQ -169B3 ; [.3B81.0020.0002] # BAMUM LETTER PHASE-E LEUAEM -169B4 ; [.3B82.0020.0002] # BAMUM LETTER PHASE-E FUE -169B5 ; [.3B83.0020.0002] # BAMUM LETTER PHASE-E GBEUX -169B6 ; [.3B84.0020.0002] # BAMUM LETTER PHASE-E NGKUP -169B7 ; [.3B85.0020.0002] # BAMUM LETTER PHASE-E KET -169B8 ; [.3B86.0020.0002] # BAMUM LETTER PHASE-E MAE -169B9 ; [.3B87.0020.0002] # BAMUM LETTER PHASE-E NGKAAMI -169BA ; [.3B88.0020.0002] # BAMUM LETTER PHASE-E GHET -169BB ; [.3B89.0020.0002] # BAMUM LETTER PHASE-E FA -169BC ; [.3B8A.0020.0002] # BAMUM LETTER PHASE-E NTUM -169BD ; [.3B8B.0020.0002] # BAMUM LETTER PHASE-E PEUT -169BE ; [.3B8C.0020.0002] # BAMUM LETTER PHASE-E YEUM -169BF ; [.3B8D.0020.0002] # BAMUM LETTER PHASE-E NGGEUAE -169C0 ; [.3B8E.0020.0002] # BAMUM LETTER PHASE-E NYI BETWEEN -169C1 ; [.3B8F.0020.0002] # BAMUM LETTER PHASE-E NZUQ -169C2 ; [.3B90.0020.0002] # BAMUM LETTER PHASE-E POON -169C3 ; [.3B91.0020.0002] # BAMUM LETTER PHASE-E MIEE -169C4 ; [.3B92.0020.0002] # BAMUM LETTER PHASE-E FUET -169C5 ; [.3B93.0020.0002] # BAMUM LETTER PHASE-E NAE -169C6 ; [.3B94.0020.0002] # BAMUM LETTER PHASE-E MUAE -169C7 ; [.3B95.0020.0002] # BAMUM LETTER PHASE-E GHEUAE -169C8 ; [.3B96.0020.0002] # BAMUM LETTER PHASE-E FU I -169C9 ; [.3B97.0020.0002] # BAMUM LETTER PHASE-E MVI -169CA ; [.3B98.0020.0002] # BAMUM LETTER PHASE-E PUAQ -169CB ; [.3B99.0020.0002] # BAMUM LETTER PHASE-E NGKUM -169CC ; [.3B9A.0020.0002] # BAMUM LETTER PHASE-E KUT -169CD ; [.3B9B.0020.0002] # BAMUM LETTER PHASE-E PIET -169CE ; [.3B9C.0020.0002] # BAMUM LETTER PHASE-E NTAP -169CF ; [.3B9D.0020.0002] # BAMUM LETTER PHASE-E YEUAET -169D0 ; [.3B9E.0020.0002] # BAMUM LETTER PHASE-E NGGUP -169D1 ; [.3B9F.0020.0002] # BAMUM LETTER PHASE-E PA PEOPLE -169D2 ; [.3BA0.0020.0002] # BAMUM LETTER PHASE-E FU CALL -169D3 ; [.3BA1.0020.0002] # BAMUM LETTER PHASE-E FOM -169D4 ; [.3BA2.0020.0002] # BAMUM LETTER PHASE-E NJEE -169D5 ; [.3BA3.0020.0002] # BAMUM LETTER PHASE-E A -169D6 ; [.3BA4.0020.0002] # BAMUM LETTER PHASE-E TOQ -169D7 ; [.3BA5.0020.0002] # BAMUM LETTER PHASE-E O -169D8 ; [.3BA6.0020.0002] # BAMUM LETTER PHASE-E I -169D9 ; [.3BA7.0020.0002] # BAMUM LETTER PHASE-E LAQ -169DA ; [.3BA8.0020.0002] # BAMUM LETTER PHASE-E PA PLURAL -169DB ; [.3BA9.0020.0002] # BAMUM LETTER PHASE-E TAA -169DC ; [.3BAA.0020.0002] # BAMUM LETTER PHASE-E TAQ -169DD ; [.3BAB.0020.0002] # BAMUM LETTER PHASE-E NDAA MY HOUSE -169DE ; [.3BAC.0020.0002] # BAMUM LETTER PHASE-E SHIQ -169DF ; [.3BAD.0020.0002] # BAMUM LETTER PHASE-E YEUX -169E0 ; [.3BAE.0020.0002] # BAMUM LETTER PHASE-E NGUAE -169E1 ; [.3BAF.0020.0002] # BAMUM LETTER PHASE-E YUAEN -169E2 ; [.3BB0.0020.0002] # BAMUM LETTER PHASE-E YOQ SWIMMING -169E3 ; [.3BB1.0020.0002] # BAMUM LETTER PHASE-E YOQ COVER -169E4 ; [.3BB2.0020.0002] # BAMUM LETTER PHASE-E YUQ -169E5 ; [.3BB3.0020.0002] # BAMUM LETTER PHASE-E YUN -169E6 ; [.3BB4.0020.0002] # BAMUM LETTER PHASE-E KEUX -169E7 ; [.3BB5.0020.0002] # BAMUM LETTER PHASE-E PEUX -169E8 ; [.3BB6.0020.0002] # BAMUM LETTER PHASE-E NJEE EPOCH -169E9 ; [.3BB7.0020.0002] # BAMUM LETTER PHASE-E PUE -169EA ; [.3BB8.0020.0002] # BAMUM LETTER PHASE-E WUE -169EB ; [.3BB9.0020.0002] # BAMUM LETTER PHASE-E FEE -169EC ; [.3BBA.0020.0002] # BAMUM LETTER PHASE-E VEE -169ED ; [.3BBB.0020.0002] # BAMUM LETTER PHASE-E LU -169EE ; [.3BBC.0020.0002] # BAMUM LETTER PHASE-E MI -169EF ; [.3BBD.0020.0002] # BAMUM LETTER PHASE-E REUX -169F0 ; [.3BBE.0020.0002] # BAMUM LETTER PHASE-E RAE -169F1 ; [.3BBF.0020.0002] # BAMUM LETTER PHASE-E NGUAET -169F2 ; [.3BC0.0020.0002] # BAMUM LETTER PHASE-E NGA -169F3 ; [.3BC1.0020.0002] # BAMUM LETTER PHASE-E SHO -169F4 ; [.3BC2.0020.0002] # BAMUM LETTER PHASE-E SHOQ -169F5 ; [.3BC3.0020.0002] # BAMUM LETTER PHASE-E FU REMEDY -169F6 ; [.3BC4.0020.0002] # BAMUM LETTER PHASE-E NA -169F7 ; [.3BC5.0020.0002] # BAMUM LETTER PHASE-E PI -169F8 ; [.3BC6.0020.0002] # BAMUM LETTER PHASE-E LOQ -169F9 ; [.3BC7.0020.0002] # BAMUM LETTER PHASE-E KO -169FA ; [.3BC8.0020.0002] # BAMUM LETTER PHASE-E MEN -169FB ; [.3BC9.0020.0002] # BAMUM LETTER PHASE-E MA -169FC ; [.3BCA.0020.0002] # BAMUM LETTER PHASE-E MAQ -169FD ; [.3BCB.0020.0002] # BAMUM LETTER PHASE-E TEU -169FE ; [.3BCC.0020.0002] # BAMUM LETTER PHASE-E KI -169FF ; [.3BCD.0020.0002] # BAMUM LETTER PHASE-E MON -16A00 ; [.3BCE.0020.0002] # BAMUM LETTER PHASE-E TEN -16A01 ; [.3BCF.0020.0002] # BAMUM LETTER PHASE-E FAQ -16A02 ; [.3BD0.0020.0002] # BAMUM LETTER PHASE-E GHOM -16A03 ; [.3BD1.0020.0002] # BAMUM LETTER PHASE-F KA -16A04 ; [.3BD2.0020.0002] # BAMUM LETTER PHASE-F U -16A05 ; [.3BD3.0020.0002] # BAMUM LETTER PHASE-F KU -16A06 ; [.3BD4.0020.0002] # BAMUM LETTER PHASE-F EE -16A07 ; [.3BD5.0020.0002] # BAMUM LETTER PHASE-F REE -16A08 ; [.3BD6.0020.0002] # BAMUM LETTER PHASE-F TAE -16A09 ; [.3BD7.0020.0002] # BAMUM LETTER PHASE-F NYI -16A0A ; [.3BD8.0020.0002] # BAMUM LETTER PHASE-F LA -16A0B ; [.3BD9.0020.0002] # BAMUM LETTER PHASE-F RII -16A0C ; [.3BDA.0020.0002] # BAMUM LETTER PHASE-F RIEE -16A0D ; [.3BDB.0020.0002] # BAMUM LETTER PHASE-F MEEEE -16A0E ; [.3BDC.0020.0002] # BAMUM LETTER PHASE-F TAA -16A0F ; [.3BDD.0020.0002] # BAMUM LETTER PHASE-F NDAA -16A10 ; [.3BDE.0020.0002] # BAMUM LETTER PHASE-F NJAEM -16A11 ; [.3BDF.0020.0002] # BAMUM LETTER PHASE-F M -16A12 ; [.3BE0.0020.0002] # BAMUM LETTER PHASE-F SUU -16A13 ; [.3BE1.0020.0002] # BAMUM LETTER PHASE-F SHII -16A14 ; [.3BE2.0020.0002] # BAMUM LETTER PHASE-F SI -16A15 ; [.3BE3.0020.0002] # BAMUM LETTER PHASE-F SEUX -16A16 ; [.3BE4.0020.0002] # BAMUM LETTER PHASE-F KYEE -16A17 ; [.3BE5.0020.0002] # BAMUM LETTER PHASE-F KET -16A18 ; [.3BE6.0020.0002] # BAMUM LETTER PHASE-F NUAE -16A19 ; [.3BE7.0020.0002] # BAMUM LETTER PHASE-F NU -16A1A ; [.3BE8.0020.0002] # BAMUM LETTER PHASE-F NJUAE -16A1B ; [.3BE9.0020.0002] # BAMUM LETTER PHASE-F YOQ -16A1C ; [.3BEA.0020.0002] # BAMUM LETTER PHASE-F SHU -16A1D ; [.3BEB.0020.0002] # BAMUM LETTER PHASE-F YA -16A1E ; [.3BEC.0020.0002] # BAMUM LETTER PHASE-F NSHA -16A1F ; [.3BED.0020.0002] # BAMUM LETTER PHASE-F PEUX -16A20 ; [.3BEE.0020.0002] # BAMUM LETTER PHASE-F NTEE -16A21 ; [.3BEF.0020.0002] # BAMUM LETTER PHASE-F WUE -16A22 ; [.3BF0.0020.0002] # BAMUM LETTER PHASE-F PEE -16A23 ; [.3BF1.0020.0002] # BAMUM LETTER PHASE-F RU -16A24 ; [.3BF2.0020.0002] # BAMUM LETTER PHASE-F NI -16A25 ; [.3BF3.0020.0002] # BAMUM LETTER PHASE-F REUX -16A26 ; [.3BF4.0020.0002] # BAMUM LETTER PHASE-F KEN -16A27 ; [.3BF5.0020.0002] # BAMUM LETTER PHASE-F NGKWAEN -16A28 ; [.3BF6.0020.0002] # BAMUM LETTER PHASE-F NGGA -16A29 ; [.3BF7.0020.0002] # BAMUM LETTER PHASE-F SHO -16A2A ; [.3BF8.0020.0002] # BAMUM LETTER PHASE-F PUAE -16A2B ; [.3BF9.0020.0002] # BAMUM LETTER PHASE-F FOM -16A2C ; [.3BFA.0020.0002] # BAMUM LETTER PHASE-F WA -16A2D ; [.3BFB.0020.0002] # BAMUM LETTER PHASE-F LI -16A2E ; [.3BFC.0020.0002] # BAMUM LETTER PHASE-F LOQ -16A2F ; [.3BFD.0020.0002] # BAMUM LETTER PHASE-F KO -16A30 ; [.3BFE.0020.0002] # BAMUM LETTER PHASE-F MBEN -16A31 ; [.3BFF.0020.0002] # BAMUM LETTER PHASE-F REN -16A32 ; [.3C00.0020.0002] # BAMUM LETTER PHASE-F MA -16A33 ; [.3C01.0020.0002] # BAMUM LETTER PHASE-F MO -16A34 ; [.3C02.0020.0002] # BAMUM LETTER PHASE-F MBAA -16A35 ; [.3C03.0020.0002] # BAMUM LETTER PHASE-F TET -16A36 ; [.3C04.0020.0002] # BAMUM LETTER PHASE-F KPA -16A37 ; [.3C05.0020.0002] # BAMUM LETTER PHASE-F SAMBA -16A38 ; [.3C06.0020.0002] # BAMUM LETTER PHASE-F VUEQ -16AD0 ; [.3C07.0020.0002] # BASSA VAH LETTER ENNI -16AD1 ; [.3C08.0020.0002] # BASSA VAH LETTER KA -16AD2 ; [.3C09.0020.0002] # BASSA VAH LETTER SE -16AD3 ; [.3C0A.0020.0002] # BASSA VAH LETTER FA -16AD4 ; [.3C0B.0020.0002] # BASSA VAH LETTER MBE -16AD5 ; [.3C0C.0020.0002] # BASSA VAH LETTER YIE -16AD6 ; [.3C0D.0020.0002] # BASSA VAH LETTER GAH -16AD7 ; [.3C0E.0020.0002] # BASSA VAH LETTER DHII -16AD8 ; [.3C0F.0020.0002] # BASSA VAH LETTER KPAH -16AD9 ; [.3C10.0020.0002] # BASSA VAH LETTER JO -16ADA ; [.3C11.0020.0002] # BASSA VAH LETTER HWAH -16ADB ; [.3C12.0020.0002] # BASSA VAH LETTER WA -16ADC ; [.3C13.0020.0002] # BASSA VAH LETTER ZO -16ADD ; [.3C14.0020.0002] # BASSA VAH LETTER GBU -16ADE ; [.3C15.0020.0002] # BASSA VAH LETTER DO -16ADF ; [.3C16.0020.0002] # BASSA VAH LETTER CE -16AE0 ; [.3C17.0020.0002] # BASSA VAH LETTER UWU -16AE1 ; [.3C18.0020.0002] # BASSA VAH LETTER TO -16AE2 ; [.3C19.0020.0002] # BASSA VAH LETTER BA -16AE3 ; [.3C1A.0020.0002] # BASSA VAH LETTER VU -16AE4 ; [.3C1B.0020.0002] # BASSA VAH LETTER YEIN -16AE5 ; [.3C1C.0020.0002] # BASSA VAH LETTER PA -16AE6 ; [.3C1D.0020.0002] # BASSA VAH LETTER WADDA -16AE7 ; [.3C1E.0020.0002] # BASSA VAH LETTER A -16AE8 ; [.3C1F.0020.0002] # BASSA VAH LETTER O -16AE9 ; [.3C20.0020.0002] # BASSA VAH LETTER OO -16AEA ; [.3C21.0020.0002] # BASSA VAH LETTER U -16AEB ; [.3C22.0020.0002] # BASSA VAH LETTER EE -16AEC ; [.3C23.0020.0002] # BASSA VAH LETTER E -16AED ; [.3C24.0020.0002] # BASSA VAH LETTER I -1E800 ; [.3C25.0020.0002] # MENDE KIKAKUI SYLLABLE M001 KI -1E801 ; [.3C26.0020.0002] # MENDE KIKAKUI SYLLABLE M002 KA -1E802 ; [.3C27.0020.0002] # MENDE KIKAKUI SYLLABLE M003 KU -1E803 ; [.3C28.0020.0002] # MENDE KIKAKUI SYLLABLE M065 KEE -1E804 ; [.3C29.0020.0002] # MENDE KIKAKUI SYLLABLE M095 KE -1E805 ; [.3C2A.0020.0002] # MENDE KIKAKUI SYLLABLE M076 KOO -1E806 ; [.3C2B.0020.0002] # MENDE KIKAKUI SYLLABLE M048 KO -1E807 ; [.3C2C.0020.0002] # MENDE KIKAKUI SYLLABLE M179 KUA -1E808 ; [.3C2D.0020.0002] # MENDE KIKAKUI SYLLABLE M004 WI -1E809 ; [.3C2E.0020.0002] # MENDE KIKAKUI SYLLABLE M005 WA -1E80A ; [.3C2F.0020.0002] # MENDE KIKAKUI SYLLABLE M006 WU -1E80B ; [.3C30.0020.0002] # MENDE KIKAKUI SYLLABLE M126 WEE -1E80C ; [.3C31.0020.0002] # MENDE KIKAKUI SYLLABLE M118 WE -1E80D ; [.3C32.0020.0002] # MENDE KIKAKUI SYLLABLE M114 WOO -1E80E ; [.3C33.0020.0002] # MENDE KIKAKUI SYLLABLE M045 WO -1E80F ; [.3C34.0020.0002] # MENDE KIKAKUI SYLLABLE M194 WUI -1E810 ; [.3C35.0020.0002] # MENDE KIKAKUI SYLLABLE M143 WEI -1E811 ; [.3C36.0020.0002] # MENDE KIKAKUI SYLLABLE M061 WVI -1E812 ; [.3C37.0020.0002] # MENDE KIKAKUI SYLLABLE M049 WVA -1E813 ; [.3C38.0020.0002] # MENDE KIKAKUI SYLLABLE M139 WVE -1E814 ; [.3C39.0020.0002] # MENDE KIKAKUI SYLLABLE M007 MIN -1E815 ; [.3C3A.0020.0002] # MENDE KIKAKUI SYLLABLE M008 MAN -1E816 ; [.3C3B.0020.0002] # MENDE KIKAKUI SYLLABLE M009 MUN -1E817 ; [.3C3C.0020.0002] # MENDE KIKAKUI SYLLABLE M059 MEN -1E818 ; [.3C3D.0020.0002] # MENDE KIKAKUI SYLLABLE M094 MON -1E819 ; [.3C3E.0020.0002] # MENDE KIKAKUI SYLLABLE M154 MUAN -1E81A ; [.3C3F.0020.0002] # MENDE KIKAKUI SYLLABLE M189 MUEN -1E81B ; [.3C40.0020.0002] # MENDE KIKAKUI SYLLABLE M010 BI -1E81C ; [.3C41.0020.0002] # MENDE KIKAKUI SYLLABLE M011 BA -1E81D ; [.3C42.0020.0002] # MENDE KIKAKUI SYLLABLE M012 BU -1E81E ; [.3C43.0020.0002] # MENDE KIKAKUI SYLLABLE M150 BEE -1E81F ; [.3C44.0020.0002] # MENDE KIKAKUI SYLLABLE M097 BE -1E820 ; [.3C45.0020.0002] # MENDE KIKAKUI SYLLABLE M103 BOO -1E821 ; [.3C46.0020.0002] # MENDE KIKAKUI SYLLABLE M138 BO -1E822 ; [.3C47.0020.0002] # MENDE KIKAKUI SYLLABLE M013 I -1E823 ; [.3C48.0020.0002] # MENDE KIKAKUI SYLLABLE M014 A -1E824 ; [.3C49.0020.0002] # MENDE KIKAKUI SYLLABLE M015 U -1E825 ; [.3C4A.0020.0002] # MENDE KIKAKUI SYLLABLE M163 EE -1E826 ; [.3C4B.0020.0002] # MENDE KIKAKUI SYLLABLE M100 E -1E827 ; [.3C4C.0020.0002] # MENDE KIKAKUI SYLLABLE M165 OO -1E828 ; [.3C4D.0020.0002] # MENDE KIKAKUI SYLLABLE M147 O -1E829 ; [.3C4E.0020.0002] # MENDE KIKAKUI SYLLABLE M137 EI -1E82A ; [.3C4F.0020.0002] # MENDE KIKAKUI SYLLABLE M131 IN -1E82B ; [.3C50.0020.0002] # MENDE KIKAKUI SYLLABLE M135 IN -1E82C ; [.3C51.0020.0002] # MENDE KIKAKUI SYLLABLE M195 AN -1E82D ; [.3C52.0020.0002] # MENDE KIKAKUI SYLLABLE M178 EN -1E82E ; [.3C53.0020.0002] # MENDE KIKAKUI SYLLABLE M019 SI -1E82F ; [.3C54.0020.0002] # MENDE KIKAKUI SYLLABLE M020 SA -1E830 ; [.3C55.0020.0002] # MENDE KIKAKUI SYLLABLE M021 SU -1E831 ; [.3C56.0020.0002] # MENDE KIKAKUI SYLLABLE M162 SEE -1E832 ; [.3C57.0020.0002] # MENDE KIKAKUI SYLLABLE M116 SE -1E833 ; [.3C58.0020.0002] # MENDE KIKAKUI SYLLABLE M136 SOO -1E834 ; [.3C59.0020.0002] # MENDE KIKAKUI SYLLABLE M079 SO -1E835 ; [.3C5A.0020.0002] # MENDE KIKAKUI SYLLABLE M196 SIA -1E836 ; [.3C5B.0020.0002] # MENDE KIKAKUI SYLLABLE M025 LI -1E837 ; [.3C5C.0020.0002] # MENDE KIKAKUI SYLLABLE M026 LA -1E838 ; [.3C5D.0020.0002] # MENDE KIKAKUI SYLLABLE M027 LU -1E839 ; [.3C5E.0020.0002] # MENDE KIKAKUI SYLLABLE M084 LEE -1E83A ; [.3C5F.0020.0002] # MENDE KIKAKUI SYLLABLE M073 LE -1E83B ; [.3C60.0020.0002] # MENDE KIKAKUI SYLLABLE M054 LOO -1E83C ; [.3C61.0020.0002] # MENDE KIKAKUI SYLLABLE M153 LO -1E83D ; [.3C62.0020.0002] # MENDE KIKAKUI SYLLABLE M110 LONG LE -1E83E ; [.3C63.0020.0002] # MENDE KIKAKUI SYLLABLE M016 DI -1E83F ; [.3C64.0020.0002] # MENDE KIKAKUI SYLLABLE M017 DA -1E840 ; [.3C65.0020.0002] # MENDE KIKAKUI SYLLABLE M018 DU -1E841 ; [.3C66.0020.0002] # MENDE KIKAKUI SYLLABLE M089 DEE -1E842 ; [.3C67.0020.0002] # MENDE KIKAKUI SYLLABLE M180 DOO -1E843 ; [.3C68.0020.0002] # MENDE KIKAKUI SYLLABLE M181 DO -1E844 ; [.3C69.0020.0002] # MENDE KIKAKUI SYLLABLE M022 TI -1E845 ; [.3C6A.0020.0002] # MENDE KIKAKUI SYLLABLE M023 TA -1E846 ; [.3C6B.0020.0002] # MENDE KIKAKUI SYLLABLE M024 TU -1E847 ; [.3C6C.0020.0002] # MENDE KIKAKUI SYLLABLE M091 TEE -1E848 ; [.3C6D.0020.0002] # MENDE KIKAKUI SYLLABLE M055 TE -1E849 ; [.3C6E.0020.0002] # MENDE KIKAKUI SYLLABLE M104 TOO -1E84A ; [.3C6F.0020.0002] # MENDE KIKAKUI SYLLABLE M069 TO -1E84B ; [.3C70.0020.0002] # MENDE KIKAKUI SYLLABLE M028 JI -1E84C ; [.3C71.0020.0002] # MENDE KIKAKUI SYLLABLE M029 JA -1E84D ; [.3C72.0020.0002] # MENDE KIKAKUI SYLLABLE M030 JU -1E84E ; [.3C73.0020.0002] # MENDE KIKAKUI SYLLABLE M157 JEE -1E84F ; [.3C74.0020.0002] # MENDE KIKAKUI SYLLABLE M113 JE -1E850 ; [.3C75.0020.0002] # MENDE KIKAKUI SYLLABLE M160 JOO -1E851 ; [.3C76.0020.0002] # MENDE KIKAKUI SYLLABLE M063 JO -1E852 ; [.3C77.0020.0002] # MENDE KIKAKUI SYLLABLE M175 LONG JO -1E853 ; [.3C78.0020.0002] # MENDE KIKAKUI SYLLABLE M031 YI -1E854 ; [.3C79.0020.0002] # MENDE KIKAKUI SYLLABLE M032 YA -1E855 ; [.3C7A.0020.0002] # MENDE KIKAKUI SYLLABLE M033 YU -1E856 ; [.3C7B.0020.0002] # MENDE KIKAKUI SYLLABLE M109 YEE -1E857 ; [.3C7C.0020.0002] # MENDE KIKAKUI SYLLABLE M080 YE -1E858 ; [.3C7D.0020.0002] # MENDE KIKAKUI SYLLABLE M141 YOO -1E859 ; [.3C7E.0020.0002] # MENDE KIKAKUI SYLLABLE M121 YO -1E85A ; [.3C7F.0020.0002] # MENDE KIKAKUI SYLLABLE M034 FI -1E85B ; [.3C80.0020.0002] # MENDE KIKAKUI SYLLABLE M035 FA -1E85C ; [.3C81.0020.0002] # MENDE KIKAKUI SYLLABLE M036 FU -1E85D ; [.3C82.0020.0002] # MENDE KIKAKUI SYLLABLE M078 FEE -1E85E ; [.3C83.0020.0002] # MENDE KIKAKUI SYLLABLE M075 FE -1E85F ; [.3C84.0020.0002] # MENDE KIKAKUI SYLLABLE M133 FOO -1E860 ; [.3C85.0020.0002] # MENDE KIKAKUI SYLLABLE M088 FO -1E861 ; [.3C86.0020.0002] # MENDE KIKAKUI SYLLABLE M197 FUA -1E862 ; [.3C87.0020.0002] # MENDE KIKAKUI SYLLABLE M101 FAN -1E863 ; [.3C88.0020.0002] # MENDE KIKAKUI SYLLABLE M037 NIN -1E864 ; [.3C89.0020.0002] # MENDE KIKAKUI SYLLABLE M038 NAN -1E865 ; [.3C8A.0020.0002] # MENDE KIKAKUI SYLLABLE M039 NUN -1E866 ; [.3C8B.0020.0002] # MENDE KIKAKUI SYLLABLE M117 NEN -1E867 ; [.3C8C.0020.0002] # MENDE KIKAKUI SYLLABLE M169 NON -1E868 ; [.3C8D.0020.0002] # MENDE KIKAKUI SYLLABLE M176 HI -1E869 ; [.3C8E.0020.0002] # MENDE KIKAKUI SYLLABLE M041 HA -1E86A ; [.3C8F.0020.0002] # MENDE KIKAKUI SYLLABLE M186 HU -1E86B ; [.3C90.0020.0002] # MENDE KIKAKUI SYLLABLE M040 HEE -1E86C ; [.3C91.0020.0002] # MENDE KIKAKUI SYLLABLE M096 HE -1E86D ; [.3C92.0020.0002] # MENDE KIKAKUI SYLLABLE M042 HOO -1E86E ; [.3C93.0020.0002] # MENDE KIKAKUI SYLLABLE M140 HO -1E86F ; [.3C94.0020.0002] # MENDE KIKAKUI SYLLABLE M083 HEEI -1E870 ; [.3C95.0020.0002] # MENDE KIKAKUI SYLLABLE M128 HOOU -1E871 ; [.3C96.0020.0002] # MENDE KIKAKUI SYLLABLE M053 HIN -1E872 ; [.3C97.0020.0002] # MENDE KIKAKUI SYLLABLE M130 HAN -1E873 ; [.3C98.0020.0002] # MENDE KIKAKUI SYLLABLE M087 HUN -1E874 ; [.3C99.0020.0002] # MENDE KIKAKUI SYLLABLE M052 HEN -1E875 ; [.3C9A.0020.0002] # MENDE KIKAKUI SYLLABLE M193 HON -1E876 ; [.3C9B.0020.0002] # MENDE KIKAKUI SYLLABLE M046 HUAN -1E877 ; [.3C9C.0020.0002] # MENDE KIKAKUI SYLLABLE M090 NGGI -1E878 ; [.3C9D.0020.0002] # MENDE KIKAKUI SYLLABLE M043 NGGA -1E879 ; [.3C9E.0020.0002] # MENDE KIKAKUI SYLLABLE M082 NGGU -1E87A ; [.3C9F.0020.0002] # MENDE KIKAKUI SYLLABLE M115 NGGEE -1E87B ; [.3CA0.0020.0002] # MENDE KIKAKUI SYLLABLE M146 NGGE -1E87C ; [.3CA1.0020.0002] # MENDE KIKAKUI SYLLABLE M156 NGGOO -1E87D ; [.3CA2.0020.0002] # MENDE KIKAKUI SYLLABLE M120 NGGO -1E87E ; [.3CA3.0020.0002] # MENDE KIKAKUI SYLLABLE M159 NGGAA -1E87F ; [.3CA4.0020.0002] # MENDE KIKAKUI SYLLABLE M127 NGGUA -1E880 ; [.3CA5.0020.0002] # MENDE KIKAKUI SYLLABLE M086 LONG NGGE -1E881 ; [.3CA6.0020.0002] # MENDE KIKAKUI SYLLABLE M106 LONG NGGOO -1E882 ; [.3CA7.0020.0002] # MENDE KIKAKUI SYLLABLE M183 LONG NGGO -1E883 ; [.3CA8.0020.0002] # MENDE KIKAKUI SYLLABLE M155 GI -1E884 ; [.3CA9.0020.0002] # MENDE KIKAKUI SYLLABLE M111 GA -1E885 ; [.3CAA.0020.0002] # MENDE KIKAKUI SYLLABLE M168 GU -1E886 ; [.3CAB.0020.0002] # MENDE KIKAKUI SYLLABLE M190 GEE -1E887 ; [.3CAC.0020.0002] # MENDE KIKAKUI SYLLABLE M166 GUEI -1E888 ; [.3CAD.0020.0002] # MENDE KIKAKUI SYLLABLE M167 GUAN -1E889 ; [.3CAE.0020.0002] # MENDE KIKAKUI SYLLABLE M184 NGEN -1E88A ; [.3CAF.0020.0002] # MENDE KIKAKUI SYLLABLE M057 NGON -1E88B ; [.3CB0.0020.0002] # MENDE KIKAKUI SYLLABLE M177 NGUAN -1E88C ; [.3CB1.0020.0002] # MENDE KIKAKUI SYLLABLE M068 PI -1E88D ; [.3CB2.0020.0002] # MENDE KIKAKUI SYLLABLE M099 PA -1E88E ; [.3CB3.0020.0002] # MENDE KIKAKUI SYLLABLE M050 PU -1E88F ; [.3CB4.0020.0002] # MENDE KIKAKUI SYLLABLE M081 PEE -1E890 ; [.3CB5.0020.0002] # MENDE KIKAKUI SYLLABLE M051 PE -1E891 ; [.3CB6.0020.0002] # MENDE KIKAKUI SYLLABLE M102 POO -1E892 ; [.3CB7.0020.0002] # MENDE KIKAKUI SYLLABLE M066 PO -1E893 ; [.3CB8.0020.0002] # MENDE KIKAKUI SYLLABLE M145 MBI -1E894 ; [.3CB9.0020.0002] # MENDE KIKAKUI SYLLABLE M062 MBA -1E895 ; [.3CBA.0020.0002] # MENDE KIKAKUI SYLLABLE M122 MBU -1E896 ; [.3CBB.0020.0002] # MENDE KIKAKUI SYLLABLE M047 MBEE -1E897 ; [.3CBC.0020.0002] # MENDE KIKAKUI SYLLABLE M188 MBEE -1E898 ; [.3CBD.0020.0002] # MENDE KIKAKUI SYLLABLE M072 MBE -1E899 ; [.3CBE.0020.0002] # MENDE KIKAKUI SYLLABLE M172 MBOO -1E89A ; [.3CBF.0020.0002] # MENDE KIKAKUI SYLLABLE M174 MBO -1E89B ; [.3CC0.0020.0002] # MENDE KIKAKUI SYLLABLE M187 MBUU -1E89C ; [.3CC1.0020.0002] # MENDE KIKAKUI SYLLABLE M161 LONG MBE -1E89D ; [.3CC2.0020.0002] # MENDE KIKAKUI SYLLABLE M105 LONG MBOO -1E89E ; [.3CC3.0020.0002] # MENDE KIKAKUI SYLLABLE M142 LONG MBO -1E89F ; [.3CC4.0020.0002] # MENDE KIKAKUI SYLLABLE M132 KPI -1E8A0 ; [.3CC5.0020.0002] # MENDE KIKAKUI SYLLABLE M092 KPA -1E8A1 ; [.3CC6.0020.0002] # MENDE KIKAKUI SYLLABLE M074 KPU -1E8A2 ; [.3CC7.0020.0002] # MENDE KIKAKUI SYLLABLE M044 KPEE -1E8A3 ; [.3CC8.0020.0002] # MENDE KIKAKUI SYLLABLE M108 KPE -1E8A4 ; [.3CC9.0020.0002] # MENDE KIKAKUI SYLLABLE M112 KPOO -1E8A5 ; [.3CCA.0020.0002] # MENDE KIKAKUI SYLLABLE M158 KPO -1E8A6 ; [.3CCB.0020.0002] # MENDE KIKAKUI SYLLABLE M124 GBI -1E8A7 ; [.3CCC.0020.0002] # MENDE KIKAKUI SYLLABLE M056 GBA -1E8A8 ; [.3CCD.0020.0002] # MENDE KIKAKUI SYLLABLE M148 GBU -1E8A9 ; [.3CCE.0020.0002] # MENDE KIKAKUI SYLLABLE M093 GBEE -1E8AA ; [.3CCF.0020.0002] # MENDE KIKAKUI SYLLABLE M107 GBE -1E8AB ; [.3CD0.0020.0002] # MENDE KIKAKUI SYLLABLE M071 GBOO -1E8AC ; [.3CD1.0020.0002] # MENDE KIKAKUI SYLLABLE M070 GBO -1E8AD ; [.3CD2.0020.0002] # MENDE KIKAKUI SYLLABLE M171 RA -1E8AE ; [.3CD3.0020.0002] # MENDE KIKAKUI SYLLABLE M123 NDI -1E8AF ; [.3CD4.0020.0002] # MENDE KIKAKUI SYLLABLE M129 NDA -1E8B0 ; [.3CD5.0020.0002] # MENDE KIKAKUI SYLLABLE M125 NDU -1E8B1 ; [.3CD6.0020.0002] # MENDE KIKAKUI SYLLABLE M191 NDEE -1E8B2 ; [.3CD7.0020.0002] # MENDE KIKAKUI SYLLABLE M119 NDE -1E8B3 ; [.3CD8.0020.0002] # MENDE KIKAKUI SYLLABLE M067 NDOO -1E8B4 ; [.3CD9.0020.0002] # MENDE KIKAKUI SYLLABLE M064 NDO -1E8B5 ; [.3CDA.0020.0002] # MENDE KIKAKUI SYLLABLE M152 NJA -1E8B6 ; [.3CDB.0020.0002] # MENDE KIKAKUI SYLLABLE M192 NJU -1E8B7 ; [.3CDC.0020.0002] # MENDE KIKAKUI SYLLABLE M149 NJEE -1E8B8 ; [.3CDD.0020.0002] # MENDE KIKAKUI SYLLABLE M134 NJOO -1E8B9 ; [.3CDE.0020.0002] # MENDE KIKAKUI SYLLABLE M182 VI -1E8BA ; [.3CDF.0020.0002] # MENDE KIKAKUI SYLLABLE M185 VA -1E8BB ; [.3CE0.0020.0002] # MENDE KIKAKUI SYLLABLE M151 VU -1E8BC ; [.3CE1.0020.0002] # MENDE KIKAKUI SYLLABLE M173 VEE -1E8BD ; [.3CE2.0020.0002] # MENDE KIKAKUI SYLLABLE M085 VE -1E8BE ; [.3CE3.0020.0002] # MENDE KIKAKUI SYLLABLE M144 VOO -1E8BF ; [.3CE4.0020.0002] # MENDE KIKAKUI SYLLABLE M077 VO -1E8C0 ; [.3CE5.0020.0002] # MENDE KIKAKUI SYLLABLE M164 NYIN -1E8C1 ; [.3CE6.0020.0002] # MENDE KIKAKUI SYLLABLE M058 NYAN -1E8C2 ; [.3CE7.0020.0002] # MENDE KIKAKUI SYLLABLE M170 NYUN -1E8C3 ; [.3CE8.0020.0002] # MENDE KIKAKUI SYLLABLE M098 NYEN -1E8C4 ; [.3CE9.0020.0002] # MENDE KIKAKUI SYLLABLE M060 NYON -1E922 ; [.3CEA.0020.0002] # ADLAM SMALL LETTER ALIF -1E900 ; [.3CEA.0020.0008] # ADLAM CAPITAL LETTER ALIF -1E923 ; [.3CEB.0020.0002] # ADLAM SMALL LETTER DAALI -1E901 ; [.3CEB.0020.0008] # ADLAM CAPITAL LETTER DAALI -1E924 ; [.3CEC.0020.0002] # ADLAM SMALL LETTER LAAM -1E902 ; [.3CEC.0020.0008] # ADLAM CAPITAL LETTER LAAM -1E925 ; [.3CED.0020.0002] # ADLAM SMALL LETTER MIIM -1E903 ; [.3CED.0020.0008] # ADLAM CAPITAL LETTER MIIM -1E926 ; [.3CEE.0020.0002] # ADLAM SMALL LETTER BA -1E904 ; [.3CEE.0020.0008] # ADLAM CAPITAL LETTER BA -1E927 ; [.3CEF.0020.0002] # ADLAM SMALL LETTER SINNYIIYHE -1E905 ; [.3CEF.0020.0008] # ADLAM CAPITAL LETTER SINNYIIYHE -1E928 ; [.3CF0.0020.0002] # ADLAM SMALL LETTER PE -1E906 ; [.3CF0.0020.0008] # ADLAM CAPITAL LETTER PE -1E929 ; [.3CF1.0020.0002] # ADLAM SMALL LETTER BHE -1E907 ; [.3CF1.0020.0008] # ADLAM CAPITAL LETTER BHE -1E92A ; [.3CF2.0020.0002] # ADLAM SMALL LETTER RA -1E908 ; [.3CF2.0020.0008] # ADLAM CAPITAL LETTER RA -1E92B ; [.3CF3.0020.0002] # ADLAM SMALL LETTER E -1E909 ; [.3CF3.0020.0008] # ADLAM CAPITAL LETTER E -1E92C ; [.3CF4.0020.0002] # ADLAM SMALL LETTER FA -1E90A ; [.3CF4.0020.0008] # ADLAM CAPITAL LETTER FA -1E92D ; [.3CF5.0020.0002] # ADLAM SMALL LETTER I -1E90B ; [.3CF5.0020.0008] # ADLAM CAPITAL LETTER I -1E92E ; [.3CF6.0020.0002] # ADLAM SMALL LETTER O -1E90C ; [.3CF6.0020.0008] # ADLAM CAPITAL LETTER O -1E92F ; [.3CF7.0020.0002] # ADLAM SMALL LETTER DHA -1E90D ; [.3CF7.0020.0008] # ADLAM CAPITAL LETTER DHA -1E930 ; [.3CF8.0020.0002] # ADLAM SMALL LETTER YHE -1E90E ; [.3CF8.0020.0008] # ADLAM CAPITAL LETTER YHE -1E931 ; [.3CF9.0020.0002] # ADLAM SMALL LETTER WAW -1E90F ; [.3CF9.0020.0008] # ADLAM CAPITAL LETTER WAW -1E932 ; [.3CFA.0020.0002] # ADLAM SMALL LETTER NUN -1E910 ; [.3CFA.0020.0008] # ADLAM CAPITAL LETTER NUN -1E933 ; [.3CFB.0020.0002] # ADLAM SMALL LETTER KAF -1E911 ; [.3CFB.0020.0008] # ADLAM CAPITAL LETTER KAF -1E934 ; [.3CFC.0020.0002] # ADLAM SMALL LETTER YA -1E912 ; [.3CFC.0020.0008] # ADLAM CAPITAL LETTER YA -1E935 ; [.3CFD.0020.0002] # ADLAM SMALL LETTER U -1E913 ; [.3CFD.0020.0008] # ADLAM CAPITAL LETTER U -1E936 ; [.3CFE.0020.0002] # ADLAM SMALL LETTER JIIM -1E914 ; [.3CFE.0020.0008] # ADLAM CAPITAL LETTER JIIM -1E937 ; [.3CFF.0020.0002] # ADLAM SMALL LETTER CHI -1E915 ; [.3CFF.0020.0008] # ADLAM CAPITAL LETTER CHI -1E938 ; [.3D00.0020.0002] # ADLAM SMALL LETTER HA -1E916 ; [.3D00.0020.0008] # ADLAM CAPITAL LETTER HA -1E939 ; [.3D01.0020.0002] # ADLAM SMALL LETTER QAAF -1E917 ; [.3D01.0020.0008] # ADLAM CAPITAL LETTER QAAF -1E93A ; [.3D02.0020.0002] # ADLAM SMALL LETTER GA -1E918 ; [.3D02.0020.0008] # ADLAM CAPITAL LETTER GA -1E93B ; [.3D03.0020.0002] # ADLAM SMALL LETTER NYA -1E919 ; [.3D03.0020.0008] # ADLAM CAPITAL LETTER NYA -1E93C ; [.3D04.0020.0002] # ADLAM SMALL LETTER TU -1E91A ; [.3D04.0020.0008] # ADLAM CAPITAL LETTER TU -1E93D ; [.3D05.0020.0002] # ADLAM SMALL LETTER NHA -1E91B ; [.3D05.0020.0008] # ADLAM CAPITAL LETTER NHA -1E93E ; [.3D06.0020.0002] # ADLAM SMALL LETTER VA -1E91C ; [.3D06.0020.0008] # ADLAM CAPITAL LETTER VA -1E93F ; [.3D07.0020.0002] # ADLAM SMALL LETTER KHA -1E91D ; [.3D07.0020.0008] # ADLAM CAPITAL LETTER KHA -1E940 ; [.3D08.0020.0002] # ADLAM SMALL LETTER GBE -1E91E ; [.3D08.0020.0008] # ADLAM CAPITAL LETTER GBE -1E941 ; [.3D09.0020.0002] # ADLAM SMALL LETTER ZAL -1E91F ; [.3D09.0020.0008] # ADLAM CAPITAL LETTER ZAL -1E942 ; [.3D0A.0020.0002] # ADLAM SMALL LETTER KPO -1E920 ; [.3D0A.0020.0008] # ADLAM CAPITAL LETTER KPO -1E943 ; [.3D0B.0020.0002] # ADLAM SMALL LETTER SHA -1E921 ; [.3D0B.0020.0008] # ADLAM CAPITAL LETTER SHA -1100 ; [.3D0C.0020.0002] # HANGUL CHOSEONG KIYEOK -3131 ; [.3D0C.0020.0004] # HANGUL LETTER KIYEOK -3200 ; [*0318.0020.0004][.3D0C.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL KIYEOK -3260 ; [.3D0C.0020.0006] # CIRCLED HANGUL KIYEOK -FFA1 ; [.3D0C.0020.0012] # HALFWIDTH HANGUL LETTER KIYEOK -320E ; [*0318.0020.0004][.3D0C.0020.0004][.3D8A.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL KIYEOK A -326E ; [.3D0C.0020.0006][.3D8A.0020.0006] # CIRCLED HANGUL KIYEOK A -1101 ; [.3D0D.0020.0002] # HANGUL CHOSEONG SSANGKIYEOK -3132 ; [.3D0D.0020.0004] # HANGUL LETTER SSANGKIYEOK -FFA2 ; [.3D0D.0020.0012] # HALFWIDTH HANGUL LETTER SSANGKIYEOK -1102 ; [.3D0E.0020.0002] # HANGUL CHOSEONG NIEUN -3134 ; [.3D0E.0020.0004] # HANGUL LETTER NIEUN -3201 ; [*0318.0020.0004][.3D0E.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL NIEUN -3261 ; [.3D0E.0020.0006] # CIRCLED HANGUL NIEUN -FFA4 ; [.3D0E.0020.0012] # HALFWIDTH HANGUL LETTER NIEUN -320F ; [*0318.0020.0004][.3D0E.0020.0004][.3D8A.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL NIEUN A -326F ; [.3D0E.0020.0006][.3D8A.0020.0006] # CIRCLED HANGUL NIEUN A -1103 ; [.3D0F.0020.0002] # HANGUL CHOSEONG TIKEUT -3137 ; [.3D0F.0020.0004] # HANGUL LETTER TIKEUT -3202 ; [*0318.0020.0004][.3D0F.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL TIKEUT -3262 ; [.3D0F.0020.0006] # CIRCLED HANGUL TIKEUT -FFA7 ; [.3D0F.0020.0012] # HALFWIDTH HANGUL LETTER TIKEUT -3210 ; [*0318.0020.0004][.3D0F.0020.0004][.3D8A.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL TIKEUT A -3270 ; [.3D0F.0020.0006][.3D8A.0020.0006] # CIRCLED HANGUL TIKEUT A -1104 ; [.3D10.0020.0002] # HANGUL CHOSEONG SSANGTIKEUT -3138 ; [.3D10.0020.0004] # HANGUL LETTER SSANGTIKEUT -FFA8 ; [.3D10.0020.0012] # HALFWIDTH HANGUL LETTER SSANGTIKEUT -1105 ; [.3D11.0020.0002] # HANGUL CHOSEONG RIEUL -3139 ; [.3D11.0020.0004] # HANGUL LETTER RIEUL -3203 ; [*0318.0020.0004][.3D11.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL RIEUL -3263 ; [.3D11.0020.0006] # CIRCLED HANGUL RIEUL -FFA9 ; [.3D11.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL -3211 ; [*0318.0020.0004][.3D11.0020.0004][.3D8A.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL RIEUL A -3271 ; [.3D11.0020.0006][.3D8A.0020.0006] # CIRCLED HANGUL RIEUL A -1106 ; [.3D12.0020.0002] # HANGUL CHOSEONG MIEUM -3141 ; [.3D12.0020.0004] # HANGUL LETTER MIEUM -3204 ; [*0318.0020.0004][.3D12.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL MIEUM -3264 ; [.3D12.0020.0006] # CIRCLED HANGUL MIEUM -FFB1 ; [.3D12.0020.0012] # HALFWIDTH HANGUL LETTER MIEUM -3212 ; [*0318.0020.0004][.3D12.0020.0004][.3D8A.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL MIEUM A -3272 ; [.3D12.0020.0006][.3D8A.0020.0006] # CIRCLED HANGUL MIEUM A -1107 ; [.3D13.0020.0002] # HANGUL CHOSEONG PIEUP -3142 ; [.3D13.0020.0004] # HANGUL LETTER PIEUP -3205 ; [*0318.0020.0004][.3D13.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL PIEUP -3265 ; [.3D13.0020.0006] # CIRCLED HANGUL PIEUP -FFB2 ; [.3D13.0020.0012] # HALFWIDTH HANGUL LETTER PIEUP -3213 ; [*0318.0020.0004][.3D13.0020.0004][.3D8A.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL PIEUP A -3273 ; [.3D13.0020.0006][.3D8A.0020.0006] # CIRCLED HANGUL PIEUP A -1108 ; [.3D14.0020.0002] # HANGUL CHOSEONG SSANGPIEUP -3143 ; [.3D14.0020.0004] # HANGUL LETTER SSANGPIEUP -FFB3 ; [.3D14.0020.0012] # HALFWIDTH HANGUL LETTER SSANGPIEUP -1109 ; [.3D15.0020.0002] # HANGUL CHOSEONG SIOS -3145 ; [.3D15.0020.0004] # HANGUL LETTER SIOS -3206 ; [*0318.0020.0004][.3D15.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL SIOS -3266 ; [.3D15.0020.0006] # CIRCLED HANGUL SIOS -FFB5 ; [.3D15.0020.0012] # HALFWIDTH HANGUL LETTER SIOS -3214 ; [*0318.0020.0004][.3D15.0020.0004][.3D8A.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL SIOS A -3274 ; [.3D15.0020.0006][.3D8A.0020.0006] # CIRCLED HANGUL SIOS A -110A ; [.3D16.0020.0002] # HANGUL CHOSEONG SSANGSIOS -3146 ; [.3D16.0020.0004] # HANGUL LETTER SSANGSIOS -FFB6 ; [.3D16.0020.0012] # HALFWIDTH HANGUL LETTER SSANGSIOS -110B ; [.3D17.0020.0002] # HANGUL CHOSEONG IEUNG -3147 ; [.3D17.0020.0004] # HANGUL LETTER IEUNG -3207 ; [*0318.0020.0004][.3D17.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL IEUNG -3267 ; [.3D17.0020.0006] # CIRCLED HANGUL IEUNG -FFB7 ; [.3D17.0020.0012] # HALFWIDTH HANGUL LETTER IEUNG -3215 ; [*0318.0020.0004][.3D17.0020.0004][.3D8A.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL IEUNG A -3275 ; [.3D17.0020.0006][.3D8A.0020.0006] # CIRCLED HANGUL IEUNG A -321D ; [*0318.0020.0004][.3D17.0020.0004][.3D92.0020.0004][.3D18.0020.0004][.3D8E.0020.0004][.3DEB.0020.0004][*0319.0020.0004] # PARENTHESIZED KOREAN CHARACTER OJEON -321E ; [*0318.0020.0004][.3D17.0020.0004][.3D92.0020.0004][.3D1E.0020.0004][.3D97.0020.0004][*0319.0020.0004] # PARENTHESIZED KOREAN CHARACTER O HU -327E ; [.3D17.0020.0006][.3D97.0020.0006] # CIRCLED HANGUL IEUNG U -110C ; [.3D18.0020.0002] # HANGUL CHOSEONG CIEUC -3148 ; [.3D18.0020.0004] # HANGUL LETTER CIEUC -3208 ; [*0318.0020.0004][.3D18.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL CIEUC -3268 ; [.3D18.0020.0006] # CIRCLED HANGUL CIEUC -FFB8 ; [.3D18.0020.0012] # HALFWIDTH HANGUL LETTER CIEUC -3216 ; [*0318.0020.0004][.3D18.0020.0004][.3D8A.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL CIEUC A -3276 ; [.3D18.0020.0006][.3D8A.0020.0006] # CIRCLED HANGUL CIEUC A -321C ; [*0318.0020.0004][.3D18.0020.0004][.3D97.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL CIEUC U -327D ; [.3D18.0020.0006][.3D97.0020.0006][.3D17.0020.0006][.3D9D.0020.0006] # CIRCLED KOREAN CHARACTER JUEUI -110D ; [.3D19.0020.0002] # HANGUL CHOSEONG SSANGCIEUC -3149 ; [.3D19.0020.0004] # HANGUL LETTER SSANGCIEUC -FFB9 ; [.3D19.0020.0012] # HALFWIDTH HANGUL LETTER SSANGCIEUC -110E ; [.3D1A.0020.0002] # HANGUL CHOSEONG CHIEUCH -314A ; [.3D1A.0020.0004] # HANGUL LETTER CHIEUCH -3209 ; [*0318.0020.0004][.3D1A.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL CHIEUCH -3269 ; [.3D1A.0020.0006] # CIRCLED HANGUL CHIEUCH -FFBA ; [.3D1A.0020.0012] # HALFWIDTH HANGUL LETTER CHIEUCH -3217 ; [*0318.0020.0004][.3D1A.0020.0004][.3D8A.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL CHIEUCH A -3277 ; [.3D1A.0020.0006][.3D8A.0020.0006] # CIRCLED HANGUL CHIEUCH A -327C ; [.3D1A.0020.0006][.3D8A.0020.0006][.3DF7.0020.0006][.3D0C.0020.0006][.3D92.0020.0006] # CIRCLED KOREAN CHARACTER CHAMKO -110F ; [.3D1B.0020.0002] # HANGUL CHOSEONG KHIEUKH -314B ; [.3D1B.0020.0004] # HANGUL LETTER KHIEUKH -320A ; [*0318.0020.0004][.3D1B.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL KHIEUKH -326A ; [.3D1B.0020.0006] # CIRCLED HANGUL KHIEUKH -FFBB ; [.3D1B.0020.0012] # HALFWIDTH HANGUL LETTER KHIEUKH -3218 ; [*0318.0020.0004][.3D1B.0020.0004][.3D8A.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL KHIEUKH A -3278 ; [.3D1B.0020.0006][.3D8A.0020.0006] # CIRCLED HANGUL KHIEUKH A -1110 ; [.3D1C.0020.0002] # HANGUL CHOSEONG THIEUTH -314C ; [.3D1C.0020.0004] # HANGUL LETTER THIEUTH -320B ; [*0318.0020.0004][.3D1C.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL THIEUTH -326B ; [.3D1C.0020.0006] # CIRCLED HANGUL THIEUTH -FFBC ; [.3D1C.0020.0012] # HALFWIDTH HANGUL LETTER THIEUTH -3219 ; [*0318.0020.0004][.3D1C.0020.0004][.3D8A.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL THIEUTH A -3279 ; [.3D1C.0020.0006][.3D8A.0020.0006] # CIRCLED HANGUL THIEUTH A -1111 ; [.3D1D.0020.0002] # HANGUL CHOSEONG PHIEUPH -314D ; [.3D1D.0020.0004] # HANGUL LETTER PHIEUPH -320C ; [*0318.0020.0004][.3D1D.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL PHIEUPH -326C ; [.3D1D.0020.0006] # CIRCLED HANGUL PHIEUPH -FFBD ; [.3D1D.0020.0012] # HALFWIDTH HANGUL LETTER PHIEUPH -321A ; [*0318.0020.0004][.3D1D.0020.0004][.3D8A.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL PHIEUPH A -327A ; [.3D1D.0020.0006][.3D8A.0020.0006] # CIRCLED HANGUL PHIEUPH A -1112 ; [.3D1E.0020.0002] # HANGUL CHOSEONG HIEUH -314E ; [.3D1E.0020.0004] # HANGUL LETTER HIEUH -320D ; [*0318.0020.0004][.3D1E.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL HIEUH -326D ; [.3D1E.0020.0006] # CIRCLED HANGUL HIEUH -FFBE ; [.3D1E.0020.0012] # HALFWIDTH HANGUL LETTER HIEUH -321B ; [*0318.0020.0004][.3D1E.0020.0004][.3D8A.0020.0004][*0319.0020.0004] # PARENTHESIZED HANGUL HIEUH A -327B ; [.3D1E.0020.0006][.3D8A.0020.0006] # CIRCLED HANGUL HIEUH A -1113 ; [.3D1F.0020.0002] # HANGUL CHOSEONG NIEUN-KIYEOK -1114 ; [.3D20.0020.0002] # HANGUL CHOSEONG SSANGNIEUN -3165 ; [.3D20.0020.0004] # HANGUL LETTER SSANGNIEUN -1115 ; [.3D21.0020.0002] # HANGUL CHOSEONG NIEUN-TIKEUT -3166 ; [.3D21.0020.0004] # HANGUL LETTER NIEUN-TIKEUT -1116 ; [.3D22.0020.0002] # HANGUL CHOSEONG NIEUN-PIEUP -1117 ; [.3D23.0020.0002] # HANGUL CHOSEONG TIKEUT-KIYEOK -1118 ; [.3D24.0020.0002] # HANGUL CHOSEONG RIEUL-NIEUN -1119 ; [.3D25.0020.0002] # HANGUL CHOSEONG SSANGRIEUL -111A ; [.3D26.0020.0002] # HANGUL CHOSEONG RIEUL-HIEUH -3140 ; [.3D26.0020.0004] # HANGUL LETTER RIEUL-HIEUH -FFB0 ; [.3D26.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-HIEUH -111B ; [.3D27.0020.0002] # HANGUL CHOSEONG KAPYEOUNRIEUL -111C ; [.3D28.0020.0002] # HANGUL CHOSEONG MIEUM-PIEUP -316E ; [.3D28.0020.0004] # HANGUL LETTER MIEUM-PIEUP -111D ; [.3D29.0020.0002] # HANGUL CHOSEONG KAPYEOUNMIEUM -3171 ; [.3D29.0020.0004] # HANGUL LETTER KAPYEOUNMIEUM -111E ; [.3D2A.0020.0002] # HANGUL CHOSEONG PIEUP-KIYEOK -3172 ; [.3D2A.0020.0004] # HANGUL LETTER PIEUP-KIYEOK -111F ; [.3D2B.0020.0002] # HANGUL CHOSEONG PIEUP-NIEUN -1120 ; [.3D2C.0020.0002] # HANGUL CHOSEONG PIEUP-TIKEUT -3173 ; [.3D2C.0020.0004] # HANGUL LETTER PIEUP-TIKEUT -1121 ; [.3D2D.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS -3144 ; [.3D2D.0020.0004] # HANGUL LETTER PIEUP-SIOS -FFB4 ; [.3D2D.0020.0012] # HALFWIDTH HANGUL LETTER PIEUP-SIOS -1122 ; [.3D2E.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK -3174 ; [.3D2E.0020.0004] # HANGUL LETTER PIEUP-SIOS-KIYEOK -1123 ; [.3D2F.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT -3175 ; [.3D2F.0020.0004] # HANGUL LETTER PIEUP-SIOS-TIKEUT -1124 ; [.3D30.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS-PIEUP -1125 ; [.3D31.0020.0002] # HANGUL CHOSEONG PIEUP-SSANGSIOS -1126 ; [.3D32.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS-CIEUC -1127 ; [.3D33.0020.0002] # HANGUL CHOSEONG PIEUP-CIEUC -3176 ; [.3D33.0020.0004] # HANGUL LETTER PIEUP-CIEUC -1128 ; [.3D34.0020.0002] # HANGUL CHOSEONG PIEUP-CHIEUCH -1129 ; [.3D35.0020.0002] # HANGUL CHOSEONG PIEUP-THIEUTH -3177 ; [.3D35.0020.0004] # HANGUL LETTER PIEUP-THIEUTH -112A ; [.3D36.0020.0002] # HANGUL CHOSEONG PIEUP-PHIEUPH -112B ; [.3D37.0020.0002] # HANGUL CHOSEONG KAPYEOUNPIEUP -3178 ; [.3D37.0020.0004] # HANGUL LETTER KAPYEOUNPIEUP -112C ; [.3D38.0020.0002] # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP -3179 ; [.3D38.0020.0004] # HANGUL LETTER KAPYEOUNSSANGPIEUP -112D ; [.3D39.0020.0002] # HANGUL CHOSEONG SIOS-KIYEOK -317A ; [.3D39.0020.0004] # HANGUL LETTER SIOS-KIYEOK -112E ; [.3D3A.0020.0002] # HANGUL CHOSEONG SIOS-NIEUN -317B ; [.3D3A.0020.0004] # HANGUL LETTER SIOS-NIEUN -112F ; [.3D3B.0020.0002] # HANGUL CHOSEONG SIOS-TIKEUT -317C ; [.3D3B.0020.0004] # HANGUL LETTER SIOS-TIKEUT -1130 ; [.3D3C.0020.0002] # HANGUL CHOSEONG SIOS-RIEUL -1131 ; [.3D3D.0020.0002] # HANGUL CHOSEONG SIOS-MIEUM -1132 ; [.3D3E.0020.0002] # HANGUL CHOSEONG SIOS-PIEUP -317D ; [.3D3E.0020.0004] # HANGUL LETTER SIOS-PIEUP -1133 ; [.3D3F.0020.0002] # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK -1134 ; [.3D40.0020.0002] # HANGUL CHOSEONG SIOS-SSANGSIOS -1135 ; [.3D41.0020.0002] # HANGUL CHOSEONG SIOS-IEUNG -1136 ; [.3D42.0020.0002] # HANGUL CHOSEONG SIOS-CIEUC -317E ; [.3D42.0020.0004] # HANGUL LETTER SIOS-CIEUC -1137 ; [.3D43.0020.0002] # HANGUL CHOSEONG SIOS-CHIEUCH -1138 ; [.3D44.0020.0002] # HANGUL CHOSEONG SIOS-KHIEUKH -1139 ; [.3D45.0020.0002] # HANGUL CHOSEONG SIOS-THIEUTH -113A ; [.3D46.0020.0002] # HANGUL CHOSEONG SIOS-PHIEUPH -113B ; [.3D47.0020.0002] # HANGUL CHOSEONG SIOS-HIEUH -113C ; [.3D48.0020.0002] # HANGUL CHOSEONG CHITUEUMSIOS -113D ; [.3D49.0020.0002] # HANGUL CHOSEONG CHITUEUMSSANGSIOS -113E ; [.3D4A.0020.0002] # HANGUL CHOSEONG CEONGCHIEUMSIOS -113F ; [.3D4B.0020.0002] # HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS -1140 ; [.3D4C.0020.0002] # HANGUL CHOSEONG PANSIOS -317F ; [.3D4C.0020.0004] # HANGUL LETTER PANSIOS -1141 ; [.3D4D.0020.0002] # HANGUL CHOSEONG IEUNG-KIYEOK -1142 ; [.3D4E.0020.0002] # HANGUL CHOSEONG IEUNG-TIKEUT -1143 ; [.3D4F.0020.0002] # HANGUL CHOSEONG IEUNG-MIEUM -1144 ; [.3D50.0020.0002] # HANGUL CHOSEONG IEUNG-PIEUP -1145 ; [.3D51.0020.0002] # HANGUL CHOSEONG IEUNG-SIOS -1146 ; [.3D52.0020.0002] # HANGUL CHOSEONG IEUNG-PANSIOS -1147 ; [.3D53.0020.0002] # HANGUL CHOSEONG SSANGIEUNG -3180 ; [.3D53.0020.0004] # HANGUL LETTER SSANGIEUNG -1148 ; [.3D54.0020.0002] # HANGUL CHOSEONG IEUNG-CIEUC -1149 ; [.3D55.0020.0002] # HANGUL CHOSEONG IEUNG-CHIEUCH -114A ; [.3D56.0020.0002] # HANGUL CHOSEONG IEUNG-THIEUTH -114B ; [.3D57.0020.0002] # HANGUL CHOSEONG IEUNG-PHIEUPH -114C ; [.3D58.0020.0002] # HANGUL CHOSEONG YESIEUNG -3181 ; [.3D58.0020.0004] # HANGUL LETTER YESIEUNG -114D ; [.3D59.0020.0002] # HANGUL CHOSEONG CIEUC-IEUNG -114E ; [.3D5A.0020.0002] # HANGUL CHOSEONG CHITUEUMCIEUC -114F ; [.3D5B.0020.0002] # HANGUL CHOSEONG CHITUEUMSSANGCIEUC -1150 ; [.3D5C.0020.0002] # HANGUL CHOSEONG CEONGCHIEUMCIEUC -1151 ; [.3D5D.0020.0002] # HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC -1152 ; [.3D5E.0020.0002] # HANGUL CHOSEONG CHIEUCH-KHIEUKH -1153 ; [.3D5F.0020.0002] # HANGUL CHOSEONG CHIEUCH-HIEUH -1154 ; [.3D60.0020.0002] # HANGUL CHOSEONG CHITUEUMCHIEUCH -1155 ; [.3D61.0020.0002] # HANGUL CHOSEONG CEONGCHIEUMCHIEUCH -1156 ; [.3D62.0020.0002] # HANGUL CHOSEONG PHIEUPH-PIEUP -1157 ; [.3D63.0020.0002] # HANGUL CHOSEONG KAPYEOUNPHIEUPH -3184 ; [.3D63.0020.0004] # HANGUL LETTER KAPYEOUNPHIEUPH -1158 ; [.3D64.0020.0002] # HANGUL CHOSEONG SSANGHIEUH -3185 ; [.3D64.0020.0004] # HANGUL LETTER SSANGHIEUH -1159 ; [.3D65.0020.0002] # HANGUL CHOSEONG YEORINHIEUH -3186 ; [.3D65.0020.0004] # HANGUL LETTER YEORINHIEUH -115A ; [.3D66.0020.0002] # HANGUL CHOSEONG KIYEOK-TIKEUT -115B ; [.3D67.0020.0002] # HANGUL CHOSEONG NIEUN-SIOS -115C ; [.3D68.0020.0002] # HANGUL CHOSEONG NIEUN-CIEUC -115D ; [.3D69.0020.0002] # HANGUL CHOSEONG NIEUN-HIEUH -115E ; [.3D6A.0020.0002] # HANGUL CHOSEONG TIKEUT-RIEUL -A960 ; [.3D6B.0020.0002] # HANGUL CHOSEONG TIKEUT-MIEUM -A961 ; [.3D6C.0020.0002] # HANGUL CHOSEONG TIKEUT-PIEUP -A962 ; [.3D6D.0020.0002] # HANGUL CHOSEONG TIKEUT-SIOS -A963 ; [.3D6E.0020.0002] # HANGUL CHOSEONG TIKEUT-CIEUC -A964 ; [.3D6F.0020.0002] # HANGUL CHOSEONG RIEUL-KIYEOK -A965 ; [.3D70.0020.0002] # HANGUL CHOSEONG RIEUL-SSANGKIYEOK -A966 ; [.3D71.0020.0002] # HANGUL CHOSEONG RIEUL-TIKEUT -A967 ; [.3D72.0020.0002] # HANGUL CHOSEONG RIEUL-SSANGTIKEUT -A968 ; [.3D73.0020.0002] # HANGUL CHOSEONG RIEUL-MIEUM -A969 ; [.3D74.0020.0002] # HANGUL CHOSEONG RIEUL-PIEUP -A96A ; [.3D75.0020.0002] # HANGUL CHOSEONG RIEUL-SSANGPIEUP -A96B ; [.3D76.0020.0002] # HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP -A96C ; [.3D77.0020.0002] # HANGUL CHOSEONG RIEUL-SIOS -A96D ; [.3D78.0020.0002] # HANGUL CHOSEONG RIEUL-CIEUC -A96E ; [.3D79.0020.0002] # HANGUL CHOSEONG RIEUL-KHIEUKH -A96F ; [.3D7A.0020.0002] # HANGUL CHOSEONG MIEUM-KIYEOK -A970 ; [.3D7B.0020.0002] # HANGUL CHOSEONG MIEUM-TIKEUT -A971 ; [.3D7C.0020.0002] # HANGUL CHOSEONG MIEUM-SIOS -A972 ; [.3D7D.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS-THIEUTH -A973 ; [.3D7E.0020.0002] # HANGUL CHOSEONG PIEUP-KHIEUKH -A974 ; [.3D7F.0020.0002] # HANGUL CHOSEONG PIEUP-HIEUH -A975 ; [.3D80.0020.0002] # HANGUL CHOSEONG SSANGSIOS-PIEUP -A976 ; [.3D81.0020.0002] # HANGUL CHOSEONG IEUNG-RIEUL -A977 ; [.3D82.0020.0002] # HANGUL CHOSEONG IEUNG-HIEUH -A978 ; [.3D83.0020.0002] # HANGUL CHOSEONG SSANGCIEUC-HIEUH -A979 ; [.3D84.0020.0002] # HANGUL CHOSEONG SSANGTHIEUTH -A97A ; [.3D85.0020.0002] # HANGUL CHOSEONG PHIEUPH-HIEUH -A97B ; [.3D86.0020.0002] # HANGUL CHOSEONG HIEUH-SIOS -A97C ; [.3D87.0020.0002] # HANGUL CHOSEONG SSANGYEORINHIEUH -115F ; [.3D88.0020.0002] # HANGUL CHOSEONG FILLER -1160 ; [.3D89.0020.0002] # HANGUL JUNGSEONG FILLER -3164 ; [.3D89.0020.0004] # HANGUL FILLER -FFA0 ; [.3D89.0020.0012] # HALFWIDTH HANGUL FILLER -1161 ; [.3D8A.0020.0002] # HANGUL JUNGSEONG A -314F ; [.3D8A.0020.0004] # HANGUL LETTER A -FFC2 ; [.3D8A.0020.0012] # HALFWIDTH HANGUL LETTER A -1162 ; [.3D8B.0020.0002] # HANGUL JUNGSEONG AE -3150 ; [.3D8B.0020.0004] # HANGUL LETTER AE -FFC3 ; [.3D8B.0020.0012] # HALFWIDTH HANGUL LETTER AE -1163 ; [.3D8C.0020.0002] # HANGUL JUNGSEONG YA -3151 ; [.3D8C.0020.0004] # HANGUL LETTER YA -FFC4 ; [.3D8C.0020.0012] # HALFWIDTH HANGUL LETTER YA -1164 ; [.3D8D.0020.0002] # HANGUL JUNGSEONG YAE -3152 ; [.3D8D.0020.0004] # HANGUL LETTER YAE -FFC5 ; [.3D8D.0020.0012] # HALFWIDTH HANGUL LETTER YAE -1165 ; [.3D8E.0020.0002] # HANGUL JUNGSEONG EO -3153 ; [.3D8E.0020.0004] # HANGUL LETTER EO -FFC6 ; [.3D8E.0020.0012] # HALFWIDTH HANGUL LETTER EO -1166 ; [.3D8F.0020.0002] # HANGUL JUNGSEONG E -3154 ; [.3D8F.0020.0004] # HANGUL LETTER E -FFC7 ; [.3D8F.0020.0012] # HALFWIDTH HANGUL LETTER E -1167 ; [.3D90.0020.0002] # HANGUL JUNGSEONG YEO -3155 ; [.3D90.0020.0004] # HANGUL LETTER YEO -FFCA ; [.3D90.0020.0012] # HALFWIDTH HANGUL LETTER YEO -1168 ; [.3D91.0020.0002] # HANGUL JUNGSEONG YE -3156 ; [.3D91.0020.0004] # HANGUL LETTER YE -FFCB ; [.3D91.0020.0012] # HALFWIDTH HANGUL LETTER YE -1169 ; [.3D92.0020.0002] # HANGUL JUNGSEONG O -3157 ; [.3D92.0020.0004] # HANGUL LETTER O -FFCC ; [.3D92.0020.0012] # HALFWIDTH HANGUL LETTER O -116A ; [.3D93.0020.0002] # HANGUL JUNGSEONG WA -3158 ; [.3D93.0020.0004] # HANGUL LETTER WA -FFCD ; [.3D93.0020.0012] # HALFWIDTH HANGUL LETTER WA -116B ; [.3D94.0020.0002] # HANGUL JUNGSEONG WAE -3159 ; [.3D94.0020.0004] # HANGUL LETTER WAE -FFCE ; [.3D94.0020.0012] # HALFWIDTH HANGUL LETTER WAE -116C ; [.3D95.0020.0002] # HANGUL JUNGSEONG OE -315A ; [.3D95.0020.0004] # HANGUL LETTER OE -FFCF ; [.3D95.0020.0012] # HALFWIDTH HANGUL LETTER OE -116D ; [.3D96.0020.0002] # HANGUL JUNGSEONG YO -315B ; [.3D96.0020.0004] # HANGUL LETTER YO -FFD2 ; [.3D96.0020.0012] # HALFWIDTH HANGUL LETTER YO -116E ; [.3D97.0020.0002] # HANGUL JUNGSEONG U -315C ; [.3D97.0020.0004] # HANGUL LETTER U -FFD3 ; [.3D97.0020.0012] # HALFWIDTH HANGUL LETTER U -116F ; [.3D98.0020.0002] # HANGUL JUNGSEONG WEO -315D ; [.3D98.0020.0004] # HANGUL LETTER WEO -FFD4 ; [.3D98.0020.0012] # HALFWIDTH HANGUL LETTER WEO -1170 ; [.3D99.0020.0002] # HANGUL JUNGSEONG WE -315E ; [.3D99.0020.0004] # HANGUL LETTER WE -FFD5 ; [.3D99.0020.0012] # HALFWIDTH HANGUL LETTER WE -1171 ; [.3D9A.0020.0002] # HANGUL JUNGSEONG WI -315F ; [.3D9A.0020.0004] # HANGUL LETTER WI -FFD6 ; [.3D9A.0020.0012] # HALFWIDTH HANGUL LETTER WI -1172 ; [.3D9B.0020.0002] # HANGUL JUNGSEONG YU -3160 ; [.3D9B.0020.0004] # HANGUL LETTER YU -FFD7 ; [.3D9B.0020.0012] # HALFWIDTH HANGUL LETTER YU -1173 ; [.3D9C.0020.0002] # HANGUL JUNGSEONG EU -3161 ; [.3D9C.0020.0004] # HANGUL LETTER EU -FFDA ; [.3D9C.0020.0012] # HALFWIDTH HANGUL LETTER EU -1174 ; [.3D9D.0020.0002] # HANGUL JUNGSEONG YI -3162 ; [.3D9D.0020.0004] # HANGUL LETTER YI -FFDB ; [.3D9D.0020.0012] # HALFWIDTH HANGUL LETTER YI -1175 ; [.3D9E.0020.0002] # HANGUL JUNGSEONG I -3163 ; [.3D9E.0020.0004] # HANGUL LETTER I -FFDC ; [.3D9E.0020.0012] # HALFWIDTH HANGUL LETTER I -1176 ; [.3D9F.0020.0002] # HANGUL JUNGSEONG A-O -1177 ; [.3DA0.0020.0002] # HANGUL JUNGSEONG A-U -1178 ; [.3DA1.0020.0002] # HANGUL JUNGSEONG YA-O -1179 ; [.3DA2.0020.0002] # HANGUL JUNGSEONG YA-YO -117A ; [.3DA3.0020.0002] # HANGUL JUNGSEONG EO-O -117B ; [.3DA4.0020.0002] # HANGUL JUNGSEONG EO-U -117C ; [.3DA5.0020.0002] # HANGUL JUNGSEONG EO-EU -117D ; [.3DA6.0020.0002] # HANGUL JUNGSEONG YEO-O -117E ; [.3DA7.0020.0002] # HANGUL JUNGSEONG YEO-U -117F ; [.3DA8.0020.0002] # HANGUL JUNGSEONG O-EO -1180 ; [.3DA9.0020.0002] # HANGUL JUNGSEONG O-E -1181 ; [.3DAA.0020.0002] # HANGUL JUNGSEONG O-YE -1182 ; [.3DAB.0020.0002] # HANGUL JUNGSEONG O-O -1183 ; [.3DAC.0020.0002] # HANGUL JUNGSEONG O-U -1184 ; [.3DAD.0020.0002] # HANGUL JUNGSEONG YO-YA -3187 ; [.3DAD.0020.0004] # HANGUL LETTER YO-YA -1185 ; [.3DAE.0020.0002] # HANGUL JUNGSEONG YO-YAE -3188 ; [.3DAE.0020.0004] # HANGUL LETTER YO-YAE -1186 ; [.3DAF.0020.0002] # HANGUL JUNGSEONG YO-YEO -1187 ; [.3DB0.0020.0002] # HANGUL JUNGSEONG YO-O -1188 ; [.3DB1.0020.0002] # HANGUL JUNGSEONG YO-I -3189 ; [.3DB1.0020.0004] # HANGUL LETTER YO-I -1189 ; [.3DB2.0020.0002] # HANGUL JUNGSEONG U-A -118A ; [.3DB3.0020.0002] # HANGUL JUNGSEONG U-AE -118B ; [.3DB4.0020.0002] # HANGUL JUNGSEONG U-EO-EU -118C ; [.3DB5.0020.0002] # HANGUL JUNGSEONG U-YE -118D ; [.3DB6.0020.0002] # HANGUL JUNGSEONG U-U -118E ; [.3DB7.0020.0002] # HANGUL JUNGSEONG YU-A -118F ; [.3DB8.0020.0002] # HANGUL JUNGSEONG YU-EO -1190 ; [.3DB9.0020.0002] # HANGUL JUNGSEONG YU-E -1191 ; [.3DBA.0020.0002] # HANGUL JUNGSEONG YU-YEO -318A ; [.3DBA.0020.0004] # HANGUL LETTER YU-YEO -1192 ; [.3DBB.0020.0002] # HANGUL JUNGSEONG YU-YE -318B ; [.3DBB.0020.0004] # HANGUL LETTER YU-YE -1193 ; [.3DBC.0020.0002] # HANGUL JUNGSEONG YU-U -1194 ; [.3DBD.0020.0002] # HANGUL JUNGSEONG YU-I -318C ; [.3DBD.0020.0004] # HANGUL LETTER YU-I -1195 ; [.3DBE.0020.0002] # HANGUL JUNGSEONG EU-U -1196 ; [.3DBF.0020.0002] # HANGUL JUNGSEONG EU-EU -1197 ; [.3DC0.0020.0002] # HANGUL JUNGSEONG YI-U -1198 ; [.3DC1.0020.0002] # HANGUL JUNGSEONG I-A -1199 ; [.3DC2.0020.0002] # HANGUL JUNGSEONG I-YA -119A ; [.3DC3.0020.0002] # HANGUL JUNGSEONG I-O -119B ; [.3DC4.0020.0002] # HANGUL JUNGSEONG I-U -119C ; [.3DC5.0020.0002] # HANGUL JUNGSEONG I-EU -119D ; [.3DC6.0020.0002] # HANGUL JUNGSEONG I-ARAEA -119E ; [.3DC7.0020.0002] # HANGUL JUNGSEONG ARAEA -318D ; [.3DC7.0020.0004] # HANGUL LETTER ARAEA -119F ; [.3DC8.0020.0002] # HANGUL JUNGSEONG ARAEA-EO -11A0 ; [.3DC9.0020.0002] # HANGUL JUNGSEONG ARAEA-U -11A1 ; [.3DCA.0020.0002] # HANGUL JUNGSEONG ARAEA-I -318E ; [.3DCA.0020.0004] # HANGUL LETTER ARAEAE -11A2 ; [.3DCB.0020.0002] # HANGUL JUNGSEONG SSANGARAEA -11A3 ; [.3DCC.0020.0002] # HANGUL JUNGSEONG A-EU -11A4 ; [.3DCD.0020.0002] # HANGUL JUNGSEONG YA-U -11A5 ; [.3DCE.0020.0002] # HANGUL JUNGSEONG YEO-YA -11A6 ; [.3DCF.0020.0002] # HANGUL JUNGSEONG O-YA -11A7 ; [.3DD0.0020.0002] # HANGUL JUNGSEONG O-YAE -D7B0 ; [.3DD1.0020.0002] # HANGUL JUNGSEONG O-YEO -D7B1 ; [.3DD2.0020.0002] # HANGUL JUNGSEONG O-O-I -D7B2 ; [.3DD3.0020.0002] # HANGUL JUNGSEONG YO-A -D7B3 ; [.3DD4.0020.0002] # HANGUL JUNGSEONG YO-AE -D7B4 ; [.3DD5.0020.0002] # HANGUL JUNGSEONG YO-EO -D7B5 ; [.3DD6.0020.0002] # HANGUL JUNGSEONG U-YEO -D7B6 ; [.3DD7.0020.0002] # HANGUL JUNGSEONG U-I-I -D7B7 ; [.3DD8.0020.0002] # HANGUL JUNGSEONG YU-AE -D7B8 ; [.3DD9.0020.0002] # HANGUL JUNGSEONG YU-O -D7B9 ; [.3DDA.0020.0002] # HANGUL JUNGSEONG EU-A -D7BA ; [.3DDB.0020.0002] # HANGUL JUNGSEONG EU-EO -D7BB ; [.3DDC.0020.0002] # HANGUL JUNGSEONG EU-E -D7BC ; [.3DDD.0020.0002] # HANGUL JUNGSEONG EU-O -D7BD ; [.3DDE.0020.0002] # HANGUL JUNGSEONG I-YA-O -D7BE ; [.3DDF.0020.0002] # HANGUL JUNGSEONG I-YAE -D7BF ; [.3DE0.0020.0002] # HANGUL JUNGSEONG I-YEO -D7C0 ; [.3DE1.0020.0002] # HANGUL JUNGSEONG I-YE -D7C1 ; [.3DE2.0020.0002] # HANGUL JUNGSEONG I-O-I -D7C2 ; [.3DE3.0020.0002] # HANGUL JUNGSEONG I-YO -D7C3 ; [.3DE4.0020.0002] # HANGUL JUNGSEONG I-YU -D7C4 ; [.3DE5.0020.0002] # HANGUL JUNGSEONG I-I -D7C5 ; [.3DE6.0020.0002] # HANGUL JUNGSEONG ARAEA-A -D7C6 ; [.3DE7.0020.0002] # HANGUL JUNGSEONG ARAEA-E -11A8 ; [.3DE8.0020.0002] # HANGUL JONGSEONG KIYEOK -11A9 ; [.3DE9.0020.0002] # HANGUL JONGSEONG SSANGKIYEOK -11AA ; [.3DEA.0020.0002] # HANGUL JONGSEONG KIYEOK-SIOS -3133 ; [.3DEA.0020.0004] # HANGUL LETTER KIYEOK-SIOS -FFA3 ; [.3DEA.0020.0012] # HALFWIDTH HANGUL LETTER KIYEOK-SIOS -11AB ; [.3DEB.0020.0002] # HANGUL JONGSEONG NIEUN -11AC ; [.3DEC.0020.0002] # HANGUL JONGSEONG NIEUN-CIEUC -3135 ; [.3DEC.0020.0004] # HANGUL LETTER NIEUN-CIEUC -FFA5 ; [.3DEC.0020.0012] # HALFWIDTH HANGUL LETTER NIEUN-CIEUC -11AD ; [.3DED.0020.0002] # HANGUL JONGSEONG NIEUN-HIEUH -3136 ; [.3DED.0020.0004] # HANGUL LETTER NIEUN-HIEUH -FFA6 ; [.3DED.0020.0012] # HALFWIDTH HANGUL LETTER NIEUN-HIEUH -11AE ; [.3DEE.0020.0002] # HANGUL JONGSEONG TIKEUT -11AF ; [.3DEF.0020.0002] # HANGUL JONGSEONG RIEUL -11B0 ; [.3DF0.0020.0002] # HANGUL JONGSEONG RIEUL-KIYEOK -313A ; [.3DF0.0020.0004] # HANGUL LETTER RIEUL-KIYEOK -FFAA ; [.3DF0.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-KIYEOK -11B1 ; [.3DF1.0020.0002] # HANGUL JONGSEONG RIEUL-MIEUM -313B ; [.3DF1.0020.0004] # HANGUL LETTER RIEUL-MIEUM -FFAB ; [.3DF1.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-MIEUM -11B2 ; [.3DF2.0020.0002] # HANGUL JONGSEONG RIEUL-PIEUP -313C ; [.3DF2.0020.0004] # HANGUL LETTER RIEUL-PIEUP -FFAC ; [.3DF2.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-PIEUP -11B3 ; [.3DF3.0020.0002] # HANGUL JONGSEONG RIEUL-SIOS -313D ; [.3DF3.0020.0004] # HANGUL LETTER RIEUL-SIOS -FFAD ; [.3DF3.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-SIOS -11B4 ; [.3DF4.0020.0002] # HANGUL JONGSEONG RIEUL-THIEUTH -313E ; [.3DF4.0020.0004] # HANGUL LETTER RIEUL-THIEUTH -FFAE ; [.3DF4.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-THIEUTH -11B5 ; [.3DF5.0020.0002] # HANGUL JONGSEONG RIEUL-PHIEUPH -313F ; [.3DF5.0020.0004] # HANGUL LETTER RIEUL-PHIEUPH -FFAF ; [.3DF5.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH -11B6 ; [.3DF6.0020.0002] # HANGUL JONGSEONG RIEUL-HIEUH -11B7 ; [.3DF7.0020.0002] # HANGUL JONGSEONG MIEUM -11B8 ; [.3DF8.0020.0002] # HANGUL JONGSEONG PIEUP -11B9 ; [.3DF9.0020.0002] # HANGUL JONGSEONG PIEUP-SIOS -11BA ; [.3DFA.0020.0002] # HANGUL JONGSEONG SIOS -11BB ; [.3DFB.0020.0002] # HANGUL JONGSEONG SSANGSIOS -11BC ; [.3DFC.0020.0002] # HANGUL JONGSEONG IEUNG -11BD ; [.3DFD.0020.0002] # HANGUL JONGSEONG CIEUC -11BE ; [.3DFE.0020.0002] # HANGUL JONGSEONG CHIEUCH -11BF ; [.3DFF.0020.0002] # HANGUL JONGSEONG KHIEUKH -11C0 ; [.3E00.0020.0002] # HANGUL JONGSEONG THIEUTH -11C1 ; [.3E01.0020.0002] # HANGUL JONGSEONG PHIEUPH -11C2 ; [.3E02.0020.0002] # HANGUL JONGSEONG HIEUH -11C3 ; [.3E03.0020.0002] # HANGUL JONGSEONG KIYEOK-RIEUL -11C4 ; [.3E04.0020.0002] # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK -11C5 ; [.3E05.0020.0002] # HANGUL JONGSEONG NIEUN-KIYEOK -11C6 ; [.3E06.0020.0002] # HANGUL JONGSEONG NIEUN-TIKEUT -11C7 ; [.3E07.0020.0002] # HANGUL JONGSEONG NIEUN-SIOS -3167 ; [.3E07.0020.0004] # HANGUL LETTER NIEUN-SIOS -11C8 ; [.3E08.0020.0002] # HANGUL JONGSEONG NIEUN-PANSIOS -3168 ; [.3E08.0020.0004] # HANGUL LETTER NIEUN-PANSIOS -11C9 ; [.3E09.0020.0002] # HANGUL JONGSEONG NIEUN-THIEUTH -11CA ; [.3E0A.0020.0002] # HANGUL JONGSEONG TIKEUT-KIYEOK -11CB ; [.3E0B.0020.0002] # HANGUL JONGSEONG TIKEUT-RIEUL -11CC ; [.3E0C.0020.0002] # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS -3169 ; [.3E0C.0020.0004] # HANGUL LETTER RIEUL-KIYEOK-SIOS -11CD ; [.3E0D.0020.0002] # HANGUL JONGSEONG RIEUL-NIEUN -11CE ; [.3E0E.0020.0002] # HANGUL JONGSEONG RIEUL-TIKEUT -316A ; [.3E0E.0020.0004] # HANGUL LETTER RIEUL-TIKEUT -11CF ; [.3E0F.0020.0002] # HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH -11D0 ; [.3E10.0020.0002] # HANGUL JONGSEONG SSANGRIEUL -11D1 ; [.3E11.0020.0002] # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK -11D2 ; [.3E12.0020.0002] # HANGUL JONGSEONG RIEUL-MIEUM-SIOS -11D3 ; [.3E13.0020.0002] # HANGUL JONGSEONG RIEUL-PIEUP-SIOS -316B ; [.3E13.0020.0004] # HANGUL LETTER RIEUL-PIEUP-SIOS -11D4 ; [.3E14.0020.0002] # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH -11D5 ; [.3E15.0020.0002] # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP -11D6 ; [.3E16.0020.0002] # HANGUL JONGSEONG RIEUL-SSANGSIOS -11D7 ; [.3E17.0020.0002] # HANGUL JONGSEONG RIEUL-PANSIOS -316C ; [.3E17.0020.0004] # HANGUL LETTER RIEUL-PANSIOS -11D8 ; [.3E18.0020.0002] # HANGUL JONGSEONG RIEUL-KHIEUKH -11D9 ; [.3E19.0020.0002] # HANGUL JONGSEONG RIEUL-YEORINHIEUH -316D ; [.3E19.0020.0004] # HANGUL LETTER RIEUL-YEORINHIEUH -11DA ; [.3E1A.0020.0002] # HANGUL JONGSEONG MIEUM-KIYEOK -11DB ; [.3E1B.0020.0002] # HANGUL JONGSEONG MIEUM-RIEUL -11DC ; [.3E1C.0020.0002] # HANGUL JONGSEONG MIEUM-PIEUP -11DD ; [.3E1D.0020.0002] # HANGUL JONGSEONG MIEUM-SIOS -316F ; [.3E1D.0020.0004] # HANGUL LETTER MIEUM-SIOS -11DE ; [.3E1E.0020.0002] # HANGUL JONGSEONG MIEUM-SSANGSIOS -11DF ; [.3E1F.0020.0002] # HANGUL JONGSEONG MIEUM-PANSIOS -3170 ; [.3E1F.0020.0004] # HANGUL LETTER MIEUM-PANSIOS -11E0 ; [.3E20.0020.0002] # HANGUL JONGSEONG MIEUM-CHIEUCH -11E1 ; [.3E21.0020.0002] # HANGUL JONGSEONG MIEUM-HIEUH -11E2 ; [.3E22.0020.0002] # HANGUL JONGSEONG KAPYEOUNMIEUM -11E3 ; [.3E23.0020.0002] # HANGUL JONGSEONG PIEUP-RIEUL -11E4 ; [.3E24.0020.0002] # HANGUL JONGSEONG PIEUP-PHIEUPH -11E5 ; [.3E25.0020.0002] # HANGUL JONGSEONG PIEUP-HIEUH -11E6 ; [.3E26.0020.0002] # HANGUL JONGSEONG KAPYEOUNPIEUP -11E7 ; [.3E27.0020.0002] # HANGUL JONGSEONG SIOS-KIYEOK -11E8 ; [.3E28.0020.0002] # HANGUL JONGSEONG SIOS-TIKEUT -11E9 ; [.3E29.0020.0002] # HANGUL JONGSEONG SIOS-RIEUL -11EA ; [.3E2A.0020.0002] # HANGUL JONGSEONG SIOS-PIEUP -11EB ; [.3E2B.0020.0002] # HANGUL JONGSEONG PANSIOS -11EC ; [.3E2C.0020.0002] # HANGUL JONGSEONG IEUNG-KIYEOK -11ED ; [.3E2D.0020.0002] # HANGUL JONGSEONG IEUNG-SSANGKIYEOK -11EE ; [.3E2E.0020.0002] # HANGUL JONGSEONG SSANGIEUNG -11EF ; [.3E2F.0020.0002] # HANGUL JONGSEONG IEUNG-KHIEUKH -11F0 ; [.3E30.0020.0002] # HANGUL JONGSEONG YESIEUNG -11F1 ; [.3E31.0020.0002] # HANGUL JONGSEONG YESIEUNG-SIOS -3182 ; [.3E31.0020.0004] # HANGUL LETTER YESIEUNG-SIOS -11F2 ; [.3E32.0020.0002] # HANGUL JONGSEONG YESIEUNG-PANSIOS -3183 ; [.3E32.0020.0004] # HANGUL LETTER YESIEUNG-PANSIOS -11F3 ; [.3E33.0020.0002] # HANGUL JONGSEONG PHIEUPH-PIEUP -11F4 ; [.3E34.0020.0002] # HANGUL JONGSEONG KAPYEOUNPHIEUPH -11F5 ; [.3E35.0020.0002] # HANGUL JONGSEONG HIEUH-NIEUN -11F6 ; [.3E36.0020.0002] # HANGUL JONGSEONG HIEUH-RIEUL -11F7 ; [.3E37.0020.0002] # HANGUL JONGSEONG HIEUH-MIEUM -11F8 ; [.3E38.0020.0002] # HANGUL JONGSEONG HIEUH-PIEUP -11F9 ; [.3E39.0020.0002] # HANGUL JONGSEONG YEORINHIEUH -11FA ; [.3E3A.0020.0002] # HANGUL JONGSEONG KIYEOK-NIEUN -11FB ; [.3E3B.0020.0002] # HANGUL JONGSEONG KIYEOK-PIEUP -11FC ; [.3E3C.0020.0002] # HANGUL JONGSEONG KIYEOK-CHIEUCH -11FD ; [.3E3D.0020.0002] # HANGUL JONGSEONG KIYEOK-KHIEUKH -11FE ; [.3E3E.0020.0002] # HANGUL JONGSEONG KIYEOK-HIEUH -11FF ; [.3E3F.0020.0002] # HANGUL JONGSEONG SSANGNIEUN -D7CB ; [.3E40.0020.0002] # HANGUL JONGSEONG NIEUN-RIEUL -D7CC ; [.3E41.0020.0002] # HANGUL JONGSEONG NIEUN-CHIEUCH -D7CD ; [.3E42.0020.0002] # HANGUL JONGSEONG SSANGTIKEUT -D7CE ; [.3E43.0020.0002] # HANGUL JONGSEONG SSANGTIKEUT-PIEUP -D7CF ; [.3E44.0020.0002] # HANGUL JONGSEONG TIKEUT-PIEUP -D7D0 ; [.3E45.0020.0002] # HANGUL JONGSEONG TIKEUT-SIOS -D7D1 ; [.3E46.0020.0002] # HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK -D7D2 ; [.3E47.0020.0002] # HANGUL JONGSEONG TIKEUT-CIEUC -D7D3 ; [.3E48.0020.0002] # HANGUL JONGSEONG TIKEUT-CHIEUCH -D7D4 ; [.3E49.0020.0002] # HANGUL JONGSEONG TIKEUT-THIEUTH -D7D5 ; [.3E4A.0020.0002] # HANGUL JONGSEONG RIEUL-SSANGKIYEOK -D7D6 ; [.3E4B.0020.0002] # HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH -D7D7 ; [.3E4C.0020.0002] # HANGUL JONGSEONG SSANGRIEUL-KHIEUKH -D7D8 ; [.3E4D.0020.0002] # HANGUL JONGSEONG RIEUL-MIEUM-HIEUH -D7D9 ; [.3E4E.0020.0002] # HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT -D7DA ; [.3E4F.0020.0002] # HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH -D7DB ; [.3E50.0020.0002] # HANGUL JONGSEONG RIEUL-YESIEUNG -D7DC ; [.3E51.0020.0002] # HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH -D7DD ; [.3E52.0020.0002] # HANGUL JONGSEONG KAPYEOUNRIEUL -D7DE ; [.3E53.0020.0002] # HANGUL JONGSEONG MIEUM-NIEUN -D7DF ; [.3E54.0020.0002] # HANGUL JONGSEONG MIEUM-SSANGNIEUN -D7E0 ; [.3E55.0020.0002] # HANGUL JONGSEONG SSANGMIEUM -D7E1 ; [.3E56.0020.0002] # HANGUL JONGSEONG MIEUM-PIEUP-SIOS -D7E2 ; [.3E57.0020.0002] # HANGUL JONGSEONG MIEUM-CIEUC -D7E3 ; [.3E58.0020.0002] # HANGUL JONGSEONG PIEUP-TIKEUT -D7E4 ; [.3E59.0020.0002] # HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH -D7E5 ; [.3E5A.0020.0002] # HANGUL JONGSEONG PIEUP-MIEUM -D7E6 ; [.3E5B.0020.0002] # HANGUL JONGSEONG SSANGPIEUP -D7E7 ; [.3E5C.0020.0002] # HANGUL JONGSEONG PIEUP-SIOS-TIKEUT -D7E8 ; [.3E5D.0020.0002] # HANGUL JONGSEONG PIEUP-CIEUC -D7E9 ; [.3E5E.0020.0002] # HANGUL JONGSEONG PIEUP-CHIEUCH -D7EA ; [.3E5F.0020.0002] # HANGUL JONGSEONG SIOS-MIEUM -D7EB ; [.3E60.0020.0002] # HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP -D7EC ; [.3E61.0020.0002] # HANGUL JONGSEONG SSANGSIOS-KIYEOK -D7ED ; [.3E62.0020.0002] # HANGUL JONGSEONG SSANGSIOS-TIKEUT -D7EE ; [.3E63.0020.0002] # HANGUL JONGSEONG SIOS-PANSIOS -D7EF ; [.3E64.0020.0002] # HANGUL JONGSEONG SIOS-CIEUC -D7F0 ; [.3E65.0020.0002] # HANGUL JONGSEONG SIOS-CHIEUCH -D7F1 ; [.3E66.0020.0002] # HANGUL JONGSEONG SIOS-THIEUTH -D7F2 ; [.3E67.0020.0002] # HANGUL JONGSEONG SIOS-HIEUH -D7F3 ; [.3E68.0020.0002] # HANGUL JONGSEONG PANSIOS-PIEUP -D7F4 ; [.3E69.0020.0002] # HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP -D7F5 ; [.3E6A.0020.0002] # HANGUL JONGSEONG YESIEUNG-MIEUM -D7F6 ; [.3E6B.0020.0002] # HANGUL JONGSEONG YESIEUNG-HIEUH -D7F7 ; [.3E6C.0020.0002] # HANGUL JONGSEONG CIEUC-PIEUP -D7F8 ; [.3E6D.0020.0002] # HANGUL JONGSEONG CIEUC-SSANGPIEUP -D7F9 ; [.3E6E.0020.0002] # HANGUL JONGSEONG SSANGCIEUC -D7FA ; [.3E6F.0020.0002] # HANGUL JONGSEONG PHIEUPH-SIOS -D7FB ; [.3E70.0020.0002] # HANGUL JONGSEONG PHIEUPH-THIEUTH -3041 ; [.3E71.0020.000D] # HIRAGANA LETTER SMALL A -3042 ; [.3E71.0020.000E] # HIRAGANA LETTER A -30A1 ; [.3E71.0020.000F] # KATAKANA LETTER SMALL A -FF67 ; [.3E71.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL A -30A2 ; [.3E71.0020.0011] # KATAKANA LETTER A -FF71 ; [.3E71.0020.0012] # HALFWIDTH KATAKANA LETTER A -32D0 ; [.3E71.0020.0013] # CIRCLED KATAKANA A -3303 ; [.3E71.0020.001C][.1C73.0020.001C][.3E9A.0020.001C] # SQUARE AARU -3300 ; [.3E71.0020.001C][.3E8B.0020.001C][.0000.0038.001C][.1C73.0020.001C][.3E85.0020.001C] # SQUARE APAATO -3301 ; [.3E71.0020.001C][.3E9A.0020.001C][.3E8D.0020.001C][.3E71.0020.001C] # SQUARE ARUHUA -3302 ; [.3E71.0020.001C][.3EA1.0020.001C][.3E8E.0020.001C][.0000.0038.001C][.3E71.0020.001C] # SQUARE ANPEA -3043 ; [.3E72.0020.000D] # HIRAGANA LETTER SMALL I -3044 ; [.3E72.0020.000E] # HIRAGANA LETTER I -30A3 ; [.3E72.0020.000F] # KATAKANA LETTER SMALL I -FF68 ; [.3E72.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL I -30A4 ; [.3E72.0020.0011] # KATAKANA LETTER I -FF72 ; [.3E72.0020.0012] # HALFWIDTH KATAKANA LETTER I -32D1 ; [.3E72.0020.0013] # CIRCLED KATAKANA I -3304 ; [.3E72.0020.001C][.3E87.0020.001C][.3EA1.0020.001C][.3E79.0020.001C][.0000.0037.001C] # SQUARE ININGU -3305 ; [.3E72.0020.001C][.3EA1.0020.001C][.3E82.0020.001C] # SQUARE INTI -3045 ; [.3E73.0020.000D] # HIRAGANA LETTER SMALL U -3046 ; [.3E73.0020.000E] # HIRAGANA LETTER U -30A5 ; [.3E73.0020.000F] # KATAKANA LETTER SMALL U -FF69 ; [.3E73.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL U -30A6 ; [.3E73.0020.0011] # KATAKANA LETTER U -FF73 ; [.3E73.0020.0012] # HALFWIDTH KATAKANA LETTER U -32D2 ; [.3E73.0020.0013] # CIRCLED KATAKANA U -3094 ; [.3E73.0020.000E][.0000.0037.0002] # HIRAGANA LETTER VU -30F4 ; [.3E73.0020.0011][.0000.0037.0002] # KATAKANA LETTER VU -3306 ; [.3E73.0020.001C][.3E76.0020.001C][.3EA1.0020.001C] # SQUARE UON -1B000 ; [.3E74.0020.0011] # KATAKANA LETTER ARCHAIC E -3047 ; [.3E75.0020.000D] # HIRAGANA LETTER SMALL E -3048 ; [.3E75.0020.000E] # HIRAGANA LETTER E -30A7 ; [.3E75.0020.000F] # KATAKANA LETTER SMALL E -FF6A ; [.3E75.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL E -30A8 ; [.3E75.0020.0011] # KATAKANA LETTER E -FF74 ; [.3E75.0020.0012] # HALFWIDTH KATAKANA LETTER E -32D3 ; [.3E75.0020.0013] # CIRCLED KATAKANA E -3308 ; [.3E75.0020.001C][.1C73.0020.001C][.3E77.0020.001C][.1C73.0020.001C] # SQUARE EEKAA -3307 ; [.3E75.0020.001C][.3E7E.0020.001C][.3E79.0020.001C][.1C73.0020.001C][.3E85.0020.001C][.0000.0037.001C] # SQUARE ESUKUUDO -3049 ; [.3E76.0020.000D] # HIRAGANA LETTER SMALL O -304A ; [.3E76.0020.000E] # HIRAGANA LETTER O -30A9 ; [.3E76.0020.000F] # KATAKANA LETTER SMALL O -FF6B ; [.3E76.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL O -30AA ; [.3E76.0020.0011] # KATAKANA LETTER O -FF75 ; [.3E76.0020.0012] # HALFWIDTH KATAKANA LETTER O -32D4 ; [.3E76.0020.0013] # CIRCLED KATAKANA O -330A ; [.3E76.0020.001C][.1C73.0020.001C][.3E92.0020.001C] # SQUARE OOMU -3309 ; [.3E76.0020.001C][.3EA1.0020.001C][.3E7E.0020.001C] # SQUARE ONSU -3095 ; [.3E77.0020.000D] # HIRAGANA LETTER SMALL KA -304B ; [.3E77.0020.000E] # HIRAGANA LETTER KA -30F5 ; [.3E77.0020.000F] # KATAKANA LETTER SMALL KA -30AB ; [.3E77.0020.0011] # KATAKANA LETTER KA -FF76 ; [.3E77.0020.0012] # HALFWIDTH KATAKANA LETTER KA -32D5 ; [.3E77.0020.0013] # CIRCLED KATAKANA KA -304C ; [.3E77.0020.000E][.0000.0037.0002] # HIRAGANA LETTER GA -30AC ; [.3E77.0020.0011][.0000.0037.0002] # KATAKANA LETTER GA -330B ; [.3E77.0020.001C][.3E72.0020.001C][.3E99.0020.001C] # SQUARE KAIRI -330C ; [.3E77.0020.001C][.3E98.0020.001C][.3E83.0020.001C][.3E85.0020.001C] # SQUARE KARATTO -330D ; [.3E77.0020.001C][.3E9C.0020.001C][.3E99.0020.001C][.1C73.0020.001C] # SQUARE KARORII -330E ; [.3E77.0020.001C][.0000.0037.001C][.3E9C.0020.001C][.3EA1.0020.001C] # SQUARE GARON -330F ; [.3E77.0020.001C][.0000.0037.001C][.3EA1.0020.001C][.3E90.0020.001C] # SQUARE GANMA -304D ; [.3E78.0020.000E] # HIRAGANA LETTER KI -30AD ; [.3E78.0020.0011] # KATAKANA LETTER KI -FF77 ; [.3E78.0020.0012] # HALFWIDTH KATAKANA LETTER KI -32D6 ; [.3E78.0020.0013] # CIRCLED KATAKANA KI -304E ; [.3E78.0020.000E][.0000.0037.0002] # HIRAGANA LETTER GI -30AE ; [.3E78.0020.0011][.0000.0037.0002] # KATAKANA LETTER GI -3310 ; [.3E78.0020.001C][.0000.0037.001C][.3E77.0020.001C][.0000.0037.001C] # SQUARE GIGA -3311 ; [.3E78.0020.001C][.0000.0037.001C][.3E87.0020.001C][.1C73.0020.001C] # SQUARE GINII -3312 ; [.3E78.0020.001C][.3E96.0020.001C][.3E99.0020.001C][.1C73.0020.001C] # SQUARE KYURII -3313 ; [.3E78.0020.001C][.0000.0037.001C][.3E9A.0020.001C][.3E81.0020.001C][.0000.0037.001C][.1C73.0020.001C] # SQUARE GIRUDAA -3314 ; [.3E78.0020.001C][.3E9C.0020.001C] # SQUARE KIRO -3315 ; [.3E78.0020.001C][.3E9C.0020.001C][.3E79.0020.001C][.0000.0037.001C][.3E98.0020.001C][.3E92.0020.001C] # SQUARE KIROGURAMU -3316 ; [.3E78.0020.001C][.3E9C.0020.001C][.3E93.0020.001C][.1C73.0020.001C][.3E85.0020.001C][.3E9A.0020.001C] # SQUARE KIROMEETORU -3317 ; [.3E78.0020.001C][.3E9C.0020.001C][.3E9D.0020.001C][.3E83.0020.001C][.3E85.0020.001C] # SQUARE KIROWATTO -304F ; [.3E79.0020.000E] # HIRAGANA LETTER KU -31F0 ; [.3E79.0020.000F] # KATAKANA LETTER SMALL KU -30AF ; [.3E79.0020.0011] # KATAKANA LETTER KU -FF78 ; [.3E79.0020.0012] # HALFWIDTH KATAKANA LETTER KU -32D7 ; [.3E79.0020.0013] # CIRCLED KATAKANA KU -3050 ; [.3E79.0020.000E][.0000.0037.0002] # HIRAGANA LETTER GU -30B0 ; [.3E79.0020.0011][.0000.0037.0002] # KATAKANA LETTER GU -3318 ; [.3E79.0020.001C][.0000.0037.001C][.3E98.0020.001C][.3E92.0020.001C] # SQUARE GURAMU -3319 ; [.3E79.0020.001C][.0000.0037.001C][.3E98.0020.001C][.3E92.0020.001C][.3E85.0020.001C][.3EA1.0020.001C] # SQUARE GURAMUTON -331A ; [.3E79.0020.001C][.3E9A.0020.001C][.3E7F.0020.001C][.0000.0037.001C][.3E72.0020.001C][.3E9C.0020.001C] # SQUARE KURUZEIRO -331B ; [.3E79.0020.001C][.3E9C.0020.001C][.1C73.0020.001C][.3E89.0020.001C] # SQUARE KUROONE -3096 ; [.3E7A.0020.000D] # HIRAGANA LETTER SMALL KE -3051 ; [.3E7A.0020.000E] # HIRAGANA LETTER KE -30F6 ; [.3E7A.0020.000F] # KATAKANA LETTER SMALL KE -30B1 ; [.3E7A.0020.0011] # KATAKANA LETTER KE -FF79 ; [.3E7A.0020.0012] # HALFWIDTH KATAKANA LETTER KE -32D8 ; [.3E7A.0020.0013] # CIRCLED KATAKANA KE -3052 ; [.3E7A.0020.000E][.0000.0037.0002] # HIRAGANA LETTER GE -30B2 ; [.3E7A.0020.0011][.0000.0037.0002] # KATAKANA LETTER GE -331C ; [.3E7A.0020.001C][.1C73.0020.001C][.3E7E.0020.001C] # SQUARE KEESU -3053 ; [.3E7B.0020.000E] # HIRAGANA LETTER KO -30B3 ; [.3E7B.0020.0011] # KATAKANA LETTER KO -FF7A ; [.3E7B.0020.0012] # HALFWIDTH KATAKANA LETTER KO -32D9 ; [.3E7B.0020.0013] # CIRCLED KATAKANA KO -3054 ; [.3E7B.0020.000E][.0000.0037.0002] # HIRAGANA LETTER GO -30B4 ; [.3E7B.0020.0011][.0000.0037.0002] # KATAKANA LETTER GO -331E ; [.3E7B.0020.001C][.1C73.0020.001C][.3E8F.0020.001C][.0000.0038.001C] # SQUARE KOOPO -1F201 ; [.3E7B.0020.001C][.3E7B.0020.001C] # SQUARED KATAKANA KOKO -30FF ; [.3E7B.0020.0016][.3E85.0020.0016] # KATAKANA DIGRAPH KOTO -331D ; [.3E7B.0020.001C][.3E9A.0020.001C][.3E86.0020.001C] # SQUARE KORUNA -3055 ; [.3E7C.0020.000E] # HIRAGANA LETTER SA -30B5 ; [.3E7C.0020.0011] # KATAKANA LETTER SA -FF7B ; [.3E7C.0020.0012] # HALFWIDTH KATAKANA LETTER SA -32DA ; [.3E7C.0020.0013] # CIRCLED KATAKANA SA -1F202 ; [.3E7C.0020.001C] # SQUARED KATAKANA SA -3056 ; [.3E7C.0020.000E][.0000.0037.0002] # HIRAGANA LETTER ZA -30B6 ; [.3E7C.0020.0011][.0000.0037.0002] # KATAKANA LETTER ZA -331F ; [.3E7C.0020.001C][.3E72.0020.001C][.3E79.0020.001C][.3E9A.0020.001C] # SQUARE SAIKURU -3320 ; [.3E7C.0020.001C][.3EA1.0020.001C][.3E82.0020.001C][.1C73.0020.001C][.3E92.0020.001C] # SQUARE SANTIIMU -3057 ; [.3E7D.0020.000E] # HIRAGANA LETTER SI -31F1 ; [.3E7D.0020.000F] # KATAKANA LETTER SMALL SI -30B7 ; [.3E7D.0020.0011] # KATAKANA LETTER SI -FF7C ; [.3E7D.0020.0012] # HALFWIDTH KATAKANA LETTER SI -32DB ; [.3E7D.0020.0013] # CIRCLED KATAKANA SI -3058 ; [.3E7D.0020.000E][.0000.0037.0002] # HIRAGANA LETTER ZI -30B8 ; [.3E7D.0020.0011][.0000.0037.0002] # KATAKANA LETTER ZI -3006 ; [.3E7D.0020.0004][.3E93.0020.0004] # IDEOGRAPHIC CLOSING MARK -3321 ; [.3E7D.0020.001C][.3E99.0020.001C][.3EA1.0020.001C][.3E79.0020.001C][.0000.0037.001C] # SQUARE SIRINGU -3059 ; [.3E7E.0020.000E] # HIRAGANA LETTER SU -31F2 ; [.3E7E.0020.000F] # KATAKANA LETTER SMALL SU -30B9 ; [.3E7E.0020.0011] # KATAKANA LETTER SU -FF7D ; [.3E7E.0020.0012] # HALFWIDTH KATAKANA LETTER SU -32DC ; [.3E7E.0020.0013] # CIRCLED KATAKANA SU -305A ; [.3E7E.0020.000E][.0000.0037.0002] # HIRAGANA LETTER ZU -30BA ; [.3E7E.0020.0011][.0000.0037.0002] # KATAKANA LETTER ZU -305B ; [.3E7F.0020.000E] # HIRAGANA LETTER SE -30BB ; [.3E7F.0020.0011] # KATAKANA LETTER SE -FF7E ; [.3E7F.0020.0012] # HALFWIDTH KATAKANA LETTER SE -32DD ; [.3E7F.0020.0013] # CIRCLED KATAKANA SE -305C ; [.3E7F.0020.000E][.0000.0037.0002] # HIRAGANA LETTER ZE -30BC ; [.3E7F.0020.0011][.0000.0037.0002] # KATAKANA LETTER ZE -3322 ; [.3E7F.0020.001C][.3EA1.0020.001C][.3E82.0020.001C] # SQUARE SENTI -3323 ; [.3E7F.0020.001C][.3EA1.0020.001C][.3E85.0020.001C] # SQUARE SENTO -305D ; [.3E80.0020.000E] # HIRAGANA LETTER SO -30BD ; [.3E80.0020.0011] # KATAKANA LETTER SO -FF7F ; [.3E80.0020.0012] # HALFWIDTH KATAKANA LETTER SO -32DE ; [.3E80.0020.0013] # CIRCLED KATAKANA SO -305E ; [.3E80.0020.000E][.0000.0037.0002] # HIRAGANA LETTER ZO -30BE ; [.3E80.0020.0011][.0000.0037.0002] # KATAKANA LETTER ZO -305F ; [.3E81.0020.000E] # HIRAGANA LETTER TA -30BF ; [.3E81.0020.0011] # KATAKANA LETTER TA -FF80 ; [.3E81.0020.0012] # HALFWIDTH KATAKANA LETTER TA -32DF ; [.3E81.0020.0013] # CIRCLED KATAKANA TA -3060 ; [.3E81.0020.000E][.0000.0037.0002] # HIRAGANA LETTER DA -30C0 ; [.3E81.0020.0011][.0000.0037.0002] # KATAKANA LETTER DA -3324 ; [.3E81.0020.001C][.0000.0037.001C][.1C73.0020.001C][.3E7E.0020.001C] # SQUARE DAASU -3061 ; [.3E82.0020.000E] # HIRAGANA LETTER TI -30C1 ; [.3E82.0020.0011] # KATAKANA LETTER TI -FF81 ; [.3E82.0020.0012] # HALFWIDTH KATAKANA LETTER TI -32E0 ; [.3E82.0020.0013] # CIRCLED KATAKANA TI -3062 ; [.3E82.0020.000E][.0000.0037.0002] # HIRAGANA LETTER DI -30C2 ; [.3E82.0020.0011][.0000.0037.0002] # KATAKANA LETTER DI -3063 ; [.3E83.0020.000D] # HIRAGANA LETTER SMALL TU -3064 ; [.3E83.0020.000E] # HIRAGANA LETTER TU -30C3 ; [.3E83.0020.000F] # KATAKANA LETTER SMALL TU -FF6F ; [.3E83.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL TU -30C4 ; [.3E83.0020.0011] # KATAKANA LETTER TU -FF82 ; [.3E83.0020.0012] # HALFWIDTH KATAKANA LETTER TU -32E1 ; [.3E83.0020.0013] # CIRCLED KATAKANA TU -3065 ; [.3E83.0020.000E][.0000.0037.0002] # HIRAGANA LETTER DU -30C5 ; [.3E83.0020.0011][.0000.0037.0002] # KATAKANA LETTER DU -3066 ; [.3E84.0020.000E] # HIRAGANA LETTER TE -30C6 ; [.3E84.0020.0011] # KATAKANA LETTER TE -FF83 ; [.3E84.0020.0012] # HALFWIDTH KATAKANA LETTER TE -32E2 ; [.3E84.0020.0013] # CIRCLED KATAKANA TE -3067 ; [.3E84.0020.000E][.0000.0037.0002] # HIRAGANA LETTER DE -30C7 ; [.3E84.0020.0011][.0000.0037.0002] # KATAKANA LETTER DE -1F213 ; [.3E84.0020.001C][.0000.0037.001C] # SQUARED KATAKANA DE -3325 ; [.3E84.0020.001C][.0000.0037.001C][.3E7D.0020.001C] # SQUARE DESI -3068 ; [.3E85.0020.000E] # HIRAGANA LETTER TO -31F3 ; [.3E85.0020.000F] # KATAKANA LETTER SMALL TO -30C8 ; [.3E85.0020.0011] # KATAKANA LETTER TO -FF84 ; [.3E85.0020.0012] # HALFWIDTH KATAKANA LETTER TO -32E3 ; [.3E85.0020.0013] # CIRCLED KATAKANA TO -3069 ; [.3E85.0020.000E][.0000.0037.0002] # HIRAGANA LETTER DO -30C9 ; [.3E85.0020.0011][.0000.0037.0002] # KATAKANA LETTER DO -3326 ; [.3E85.0020.001C][.0000.0037.001C][.3E9A.0020.001C] # SQUARE DORU -3327 ; [.3E85.0020.001C][.3EA1.0020.001C] # SQUARE TON -306A ; [.3E86.0020.000E] # HIRAGANA LETTER NA -30CA ; [.3E86.0020.0011] # KATAKANA LETTER NA -FF85 ; [.3E86.0020.0012] # HALFWIDTH KATAKANA LETTER NA -32E4 ; [.3E86.0020.0013] # CIRCLED KATAKANA NA -3328 ; [.3E86.0020.001C][.3E8A.0020.001C] # SQUARE NANO -306B ; [.3E87.0020.000E] # HIRAGANA LETTER NI -30CB ; [.3E87.0020.0011] # KATAKANA LETTER NI -FF86 ; [.3E87.0020.0012] # HALFWIDTH KATAKANA LETTER NI -32E5 ; [.3E87.0020.0013] # CIRCLED KATAKANA NI -306C ; [.3E88.0020.000E] # HIRAGANA LETTER NU -31F4 ; [.3E88.0020.000F] # KATAKANA LETTER SMALL NU -30CC ; [.3E88.0020.0011] # KATAKANA LETTER NU -FF87 ; [.3E88.0020.0012] # HALFWIDTH KATAKANA LETTER NU -32E6 ; [.3E88.0020.0013] # CIRCLED KATAKANA NU -306D ; [.3E89.0020.000E] # HIRAGANA LETTER NE -30CD ; [.3E89.0020.0011] # KATAKANA LETTER NE -FF88 ; [.3E89.0020.0012] # HALFWIDTH KATAKANA LETTER NE -32E7 ; [.3E89.0020.0013] # CIRCLED KATAKANA NE -306E ; [.3E8A.0020.000E] # HIRAGANA LETTER NO -30CE ; [.3E8A.0020.0011] # KATAKANA LETTER NO -FF89 ; [.3E8A.0020.0012] # HALFWIDTH KATAKANA LETTER NO -32E8 ; [.3E8A.0020.0013] # CIRCLED KATAKANA NO -3329 ; [.3E8A.0020.001C][.3E83.0020.001C][.3E85.0020.001C] # SQUARE NOTTO -306F ; [.3E8B.0020.000E] # HIRAGANA LETTER HA -31F5 ; [.3E8B.0020.000F] # KATAKANA LETTER SMALL HA -30CF ; [.3E8B.0020.0011] # KATAKANA LETTER HA -FF8A ; [.3E8B.0020.0012] # HALFWIDTH KATAKANA LETTER HA -32E9 ; [.3E8B.0020.0013] # CIRCLED KATAKANA HA -3070 ; [.3E8B.0020.000E][.0000.0037.0002] # HIRAGANA LETTER BA -30D0 ; [.3E8B.0020.0011][.0000.0037.0002] # KATAKANA LETTER BA -3071 ; [.3E8B.0020.000E][.0000.0038.0002] # HIRAGANA LETTER PA -30D1 ; [.3E8B.0020.0011][.0000.0038.0002] # KATAKANA LETTER PA -332B ; [.3E8B.0020.001C][.0000.0038.001C][.1C73.0020.001C][.3E7F.0020.001C][.3EA1.0020.001C][.3E85.0020.001C] # SQUARE PAASENTO -332C ; [.3E8B.0020.001C][.0000.0038.001C][.1C73.0020.001C][.3E83.0020.001C] # SQUARE PAATU -332D ; [.3E8B.0020.001C][.0000.0037.001C][.1C73.0020.001C][.3E9B.0020.001C][.3E9A.0020.001C] # SQUARE BAARERU -332A ; [.3E8B.0020.001C][.3E72.0020.001C][.3E83.0020.001C] # SQUARE HAITU -3072 ; [.3E8C.0020.000E] # HIRAGANA LETTER HI -31F6 ; [.3E8C.0020.000F] # KATAKANA LETTER SMALL HI -30D2 ; [.3E8C.0020.0011] # KATAKANA LETTER HI -FF8B ; [.3E8C.0020.0012] # HALFWIDTH KATAKANA LETTER HI -32EA ; [.3E8C.0020.0013] # CIRCLED KATAKANA HI -3073 ; [.3E8C.0020.000E][.0000.0037.0002] # HIRAGANA LETTER BI -30D3 ; [.3E8C.0020.0011][.0000.0037.0002] # KATAKANA LETTER BI -3074 ; [.3E8C.0020.000E][.0000.0038.0002] # HIRAGANA LETTER PI -30D4 ; [.3E8C.0020.0011][.0000.0038.0002] # KATAKANA LETTER PI -332E ; [.3E8C.0020.001C][.0000.0038.001C][.3E71.0020.001C][.3E7E.0020.001C][.3E85.0020.001C][.3E9A.0020.001C] # SQUARE PIASUTORU -332F ; [.3E8C.0020.001C][.0000.0038.001C][.3E79.0020.001C][.3E9A.0020.001C] # SQUARE PIKURU -3330 ; [.3E8C.0020.001C][.0000.0038.001C][.3E7B.0020.001C] # SQUARE PIKO -3331 ; [.3E8C.0020.001C][.0000.0037.001C][.3E9A.0020.001C] # SQUARE BIRU -3075 ; [.3E8D.0020.000E] # HIRAGANA LETTER HU -31F7 ; [.3E8D.0020.000F] # KATAKANA LETTER SMALL HU -30D5 ; [.3E8D.0020.0011] # KATAKANA LETTER HU -FF8C ; [.3E8D.0020.0012] # HALFWIDTH KATAKANA LETTER HU -32EB ; [.3E8D.0020.0013] # CIRCLED KATAKANA HU -3076 ; [.3E8D.0020.000E][.0000.0037.0002] # HIRAGANA LETTER BU -30D6 ; [.3E8D.0020.0011][.0000.0037.0002] # KATAKANA LETTER BU -3077 ; [.3E8D.0020.000E][.0000.0038.0002] # HIRAGANA LETTER PU -30D7 ; [.3E8D.0020.0011][.0000.0038.0002] # KATAKANA LETTER PU -3332 ; [.3E8D.0020.001C][.3E71.0020.001C][.3E98.0020.001C][.3E83.0020.001C][.3E85.0020.001C][.0000.0037.001C] # SQUARE HUARADDO -3333 ; [.3E8D.0020.001C][.3E72.0020.001C][.1C73.0020.001C][.3E85.0020.001C] # SQUARE HUIITO -3334 ; [.3E8D.0020.001C][.0000.0037.001C][.3E83.0020.001C][.3E7D.0020.001C][.3E75.0020.001C][.3E9A.0020.001C] # SQUARE BUSSYERU -3335 ; [.3E8D.0020.001C][.3E98.0020.001C][.3EA1.0020.001C] # SQUARE HURAN -3078 ; [.3E8E.0020.000E] # HIRAGANA LETTER HE -31F8 ; [.3E8E.0020.000F] # KATAKANA LETTER SMALL HE -30D8 ; [.3E8E.0020.0011] # KATAKANA LETTER HE -FF8D ; [.3E8E.0020.0012] # HALFWIDTH KATAKANA LETTER HE -32EC ; [.3E8E.0020.0013] # CIRCLED KATAKANA HE -3079 ; [.3E8E.0020.000E][.0000.0037.0002] # HIRAGANA LETTER BE -30D9 ; [.3E8E.0020.0011][.0000.0037.0002] # KATAKANA LETTER BE -307A ; [.3E8E.0020.000E][.0000.0038.0002] # HIRAGANA LETTER PE -30DA ; [.3E8E.0020.0011][.0000.0038.0002] # KATAKANA LETTER PE -333B ; [.3E8E.0020.001C][.0000.0038.001C][.1C73.0020.001C][.3E7D.0020.001C][.0000.0037.001C] # SQUARE PEEZI -333C ; [.3E8E.0020.001C][.0000.0037.001C][.1C73.0020.001C][.3E81.0020.001C] # SQUARE BEETA -3336 ; [.3E8E.0020.001C][.3E79.0020.001C][.3E81.0020.001C][.1C73.0020.001C][.3E9A.0020.001C] # SQUARE HEKUTAARU -3337 ; [.3E8E.0020.001C][.0000.0038.001C][.3E80.0020.001C] # SQUARE PESO -3338 ; [.3E8E.0020.001C][.0000.0038.001C][.3E87.0020.001C][.3E8C.0020.001C] # SQUARE PENIHI -3339 ; [.3E8E.0020.001C][.3E9A.0020.001C][.3E83.0020.001C] # SQUARE HERUTU -333A ; [.3E8E.0020.001C][.0000.0038.001C][.3EA1.0020.001C][.3E7E.0020.001C] # SQUARE PENSU -307B ; [.3E8F.0020.000E] # HIRAGANA LETTER HO -31F9 ; [.3E8F.0020.000F] # KATAKANA LETTER SMALL HO -30DB ; [.3E8F.0020.0011] # KATAKANA LETTER HO -FF8E ; [.3E8F.0020.0012] # HALFWIDTH KATAKANA LETTER HO -32ED ; [.3E8F.0020.0013] # CIRCLED KATAKANA HO -307C ; [.3E8F.0020.000E][.0000.0037.0002] # HIRAGANA LETTER BO -30DC ; [.3E8F.0020.0011][.0000.0037.0002] # KATAKANA LETTER BO -307D ; [.3E8F.0020.000E][.0000.0038.0002] # HIRAGANA LETTER PO -30DD ; [.3E8F.0020.0011][.0000.0038.0002] # KATAKANA LETTER PO -3341 ; [.3E8F.0020.001C][.1C73.0020.001C][.3E9A.0020.001C] # SQUARE HOORU -3342 ; [.3E8F.0020.001C][.1C73.0020.001C][.3EA1.0020.001C] # SQUARE HOON -333D ; [.3E8F.0020.001C][.0000.0038.001C][.3E72.0020.001C][.3EA1.0020.001C][.3E85.0020.001C] # SQUARE POINTO -1F200 ; [.3E8F.0020.001C][.3E77.0020.001C] # SQUARE HIRAGANA HOKA -333E ; [.3E8F.0020.001C][.0000.0037.001C][.3E9A.0020.001C][.3E85.0020.001C] # SQUARE BORUTO -333F ; [.3E8F.0020.001C][.3EA1.0020.001C] # SQUARE HON -3340 ; [.3E8F.0020.001C][.0000.0038.001C][.3EA1.0020.001C][.3E85.0020.001C][.0000.0037.001C] # SQUARE PONDO -307E ; [.3E90.0020.000E] # HIRAGANA LETTER MA -30DE ; [.3E90.0020.0011] # KATAKANA LETTER MA -FF8F ; [.3E90.0020.0012] # HALFWIDTH KATAKANA LETTER MA -32EE ; [.3E90.0020.0013] # CIRCLED KATAKANA MA -3343 ; [.3E90.0020.001C][.3E72.0020.001C][.3E79.0020.001C][.3E9C.0020.001C] # SQUARE MAIKURO -3344 ; [.3E90.0020.001C][.3E72.0020.001C][.3E9A.0020.001C] # SQUARE MAIRU -303C ; [.3E90.0020.0004][.3E7E.0020.0004] # MASU MARK -3345 ; [.3E90.0020.001C][.3E83.0020.001C][.3E8B.0020.001C] # SQUARE MAHHA -3346 ; [.3E90.0020.001C][.3E9A.0020.001C][.3E79.0020.001C] # SQUARE MARUKU -3347 ; [.3E90.0020.001C][.3EA1.0020.001C][.3E7D.0020.001C][.3E97.0020.001C][.3EA1.0020.001C] # SQUARE MANSYON -307F ; [.3E91.0020.000E] # HIRAGANA LETTER MI -30DF ; [.3E91.0020.0011] # KATAKANA LETTER MI -FF90 ; [.3E91.0020.0012] # HALFWIDTH KATAKANA LETTER MI -32EF ; [.3E91.0020.0013] # CIRCLED KATAKANA MI -3348 ; [.3E91.0020.001C][.3E79.0020.001C][.3E9C.0020.001C][.3EA1.0020.001C] # SQUARE MIKURON -3349 ; [.3E91.0020.001C][.3E99.0020.001C] # SQUARE MIRI -334A ; [.3E91.0020.001C][.3E99.0020.001C][.3E8B.0020.001C][.0000.0037.001C][.1C73.0020.001C][.3E9A.0020.001C] # SQUARE MIRIBAARU -3080 ; [.3E92.0020.000E] # HIRAGANA LETTER MU -31FA ; [.3E92.0020.000F] # KATAKANA LETTER SMALL MU -30E0 ; [.3E92.0020.0011] # KATAKANA LETTER MU -FF91 ; [.3E92.0020.0012] # HALFWIDTH KATAKANA LETTER MU -32F0 ; [.3E92.0020.0013] # CIRCLED KATAKANA MU -3081 ; [.3E93.0020.000E] # HIRAGANA LETTER ME -30E1 ; [.3E93.0020.0011] # KATAKANA LETTER ME -FF92 ; [.3E93.0020.0012] # HALFWIDTH KATAKANA LETTER ME -32F1 ; [.3E93.0020.0013] # CIRCLED KATAKANA ME -334D ; [.3E93.0020.001C][.1C73.0020.001C][.3E85.0020.001C][.3E9A.0020.001C] # SQUARE MEETORU -334B ; [.3E93.0020.001C][.3E77.0020.001C][.0000.0037.001C] # SQUARE MEGA -334C ; [.3E93.0020.001C][.3E77.0020.001C][.0000.0037.001C][.3E85.0020.001C][.3EA1.0020.001C] # SQUARE MEGATON -3082 ; [.3E94.0020.000E] # HIRAGANA LETTER MO -30E2 ; [.3E94.0020.0011] # KATAKANA LETTER MO -FF93 ; [.3E94.0020.0012] # HALFWIDTH KATAKANA LETTER MO -32F2 ; [.3E94.0020.0013] # CIRCLED KATAKANA MO -3083 ; [.3E95.0020.000D] # HIRAGANA LETTER SMALL YA -3084 ; [.3E95.0020.000E] # HIRAGANA LETTER YA -30E3 ; [.3E95.0020.000F] # KATAKANA LETTER SMALL YA -FF6C ; [.3E95.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL YA -30E4 ; [.3E95.0020.0011] # KATAKANA LETTER YA -FF94 ; [.3E95.0020.0012] # HALFWIDTH KATAKANA LETTER YA -32F3 ; [.3E95.0020.0013] # CIRCLED KATAKANA YA -334E ; [.3E95.0020.001C][.1C73.0020.001C][.3E85.0020.001C][.0000.0037.001C] # SQUARE YAADO -334F ; [.3E95.0020.001C][.1C73.0020.001C][.3E9A.0020.001C] # SQUARE YAARU -3085 ; [.3E96.0020.000D] # HIRAGANA LETTER SMALL YU -3086 ; [.3E96.0020.000E] # HIRAGANA LETTER YU -30E5 ; [.3E96.0020.000F] # KATAKANA LETTER SMALL YU -FF6D ; [.3E96.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL YU -30E6 ; [.3E96.0020.0011] # KATAKANA LETTER YU -FF95 ; [.3E96.0020.0012] # HALFWIDTH KATAKANA LETTER YU -32F4 ; [.3E96.0020.0013] # CIRCLED KATAKANA YU -3350 ; [.3E96.0020.001C][.3E71.0020.001C][.3EA1.0020.001C] # SQUARE YUAN -3087 ; [.3E97.0020.000D] # HIRAGANA LETTER SMALL YO -3088 ; [.3E97.0020.000E] # HIRAGANA LETTER YO -30E7 ; [.3E97.0020.000F] # KATAKANA LETTER SMALL YO -FF6E ; [.3E97.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL YO -30E8 ; [.3E97.0020.0011] # KATAKANA LETTER YO -FF96 ; [.3E97.0020.0012] # HALFWIDTH KATAKANA LETTER YO -32F5 ; [.3E97.0020.0013] # CIRCLED KATAKANA YO -309F ; [.3E97.0020.0016][.3E99.0020.0016] # HIRAGANA DIGRAPH YORI -3089 ; [.3E98.0020.000E] # HIRAGANA LETTER RA -31FB ; [.3E98.0020.000F] # KATAKANA LETTER SMALL RA -30E9 ; [.3E98.0020.0011] # KATAKANA LETTER RA -FF97 ; [.3E98.0020.0012] # HALFWIDTH KATAKANA LETTER RA -32F6 ; [.3E98.0020.0013] # CIRCLED KATAKANA RA -308A ; [.3E99.0020.000E] # HIRAGANA LETTER RI -31FC ; [.3E99.0020.000F] # KATAKANA LETTER SMALL RI -30EA ; [.3E99.0020.0011] # KATAKANA LETTER RI -FF98 ; [.3E99.0020.0012] # HALFWIDTH KATAKANA LETTER RI -32F7 ; [.3E99.0020.0013] # CIRCLED KATAKANA RI -3351 ; [.3E99.0020.001C][.3E83.0020.001C][.3E85.0020.001C][.3E9A.0020.001C] # SQUARE RITTORU -3352 ; [.3E99.0020.001C][.3E98.0020.001C] # SQUARE RIRA -308B ; [.3E9A.0020.000E] # HIRAGANA LETTER RU -31FD ; [.3E9A.0020.000F] # KATAKANA LETTER SMALL RU -30EB ; [.3E9A.0020.0011] # KATAKANA LETTER RU -FF99 ; [.3E9A.0020.0012] # HALFWIDTH KATAKANA LETTER RU -32F8 ; [.3E9A.0020.0013] # CIRCLED KATAKANA RU -3354 ; [.3E9A.0020.001C][.1C73.0020.001C][.3E8D.0020.001C][.0000.0037.001C][.3E9A.0020.001C] # SQUARE RUUBURU -3353 ; [.3E9A.0020.001C][.3E8C.0020.001C][.0000.0038.001C][.1C73.0020.001C] # SQUARE RUPII -308C ; [.3E9B.0020.000E] # HIRAGANA LETTER RE -31FE ; [.3E9B.0020.000F] # KATAKANA LETTER SMALL RE -30EC ; [.3E9B.0020.0011] # KATAKANA LETTER RE -FF9A ; [.3E9B.0020.0012] # HALFWIDTH KATAKANA LETTER RE -32F9 ; [.3E9B.0020.0013] # CIRCLED KATAKANA RE -3355 ; [.3E9B.0020.001C][.3E92.0020.001C] # SQUARE REMU -3356 ; [.3E9B.0020.001C][.3EA1.0020.001C][.3E85.0020.001C][.3E7A.0020.001C][.0000.0037.001C][.3EA1.0020.001C] # SQUARE RENTOGEN -308D ; [.3E9C.0020.000E] # HIRAGANA LETTER RO -31FF ; [.3E9C.0020.000F] # KATAKANA LETTER SMALL RO -30ED ; [.3E9C.0020.0011] # KATAKANA LETTER RO -FF9B ; [.3E9C.0020.0012] # HALFWIDTH KATAKANA LETTER RO -32FA ; [.3E9C.0020.0013] # CIRCLED KATAKANA RO -308E ; [.3E9D.0020.000D] # HIRAGANA LETTER SMALL WA -308F ; [.3E9D.0020.000E] # HIRAGANA LETTER WA -30EE ; [.3E9D.0020.000F] # KATAKANA LETTER SMALL WA -30EF ; [.3E9D.0020.0011] # KATAKANA LETTER WA -FF9C ; [.3E9D.0020.0012] # HALFWIDTH KATAKANA LETTER WA -32FB ; [.3E9D.0020.0013] # CIRCLED KATAKANA WA -30F7 ; [.3E9D.0020.0011][.0000.0037.0002] # KATAKANA LETTER VA -3357 ; [.3E9D.0020.001C][.3E83.0020.001C][.3E85.0020.001C] # SQUARE WATTO -3090 ; [.3E9E.0020.000E] # HIRAGANA LETTER WI -30F0 ; [.3E9E.0020.0011] # KATAKANA LETTER WI -32FC ; [.3E9E.0020.0013] # CIRCLED KATAKANA WI -30F8 ; [.3E9E.0020.0011][.0000.0037.0002] # KATAKANA LETTER VI -3091 ; [.3E9F.0020.000E] # HIRAGANA LETTER WE -30F1 ; [.3E9F.0020.0011] # KATAKANA LETTER WE -32FD ; [.3E9F.0020.0013] # CIRCLED KATAKANA WE -30F9 ; [.3E9F.0020.0011][.0000.0037.0002] # KATAKANA LETTER VE -3092 ; [.3EA0.0020.000E] # HIRAGANA LETTER WO -30F2 ; [.3EA0.0020.0011] # KATAKANA LETTER WO -FF66 ; [.3EA0.0020.0012] # HALFWIDTH KATAKANA LETTER WO -32FE ; [.3EA0.0020.0013] # CIRCLED KATAKANA WO -30FA ; [.3EA0.0020.0011][.0000.0037.0002] # KATAKANA LETTER VO -3093 ; [.3EA1.0020.000E] # HIRAGANA LETTER N -30F3 ; [.3EA1.0020.0011] # KATAKANA LETTER N -FF9D ; [.3EA1.0020.0012] # HALFWIDTH KATAKANA LETTER N -1B002 ; [.3EA2.0020.0002] # HENTAIGANA LETTER A-1 -1B003 ; [.3EA3.0020.0002] # HENTAIGANA LETTER A-2 -1B004 ; [.3EA4.0020.0002] # HENTAIGANA LETTER A-3 -1B005 ; [.3EA5.0020.0002] # HENTAIGANA LETTER A-WO -1B006 ; [.3EA6.0020.0002] # HENTAIGANA LETTER I-1 -1B007 ; [.3EA7.0020.0002] # HENTAIGANA LETTER I-2 -1B008 ; [.3EA8.0020.0002] # HENTAIGANA LETTER I-3 -1B009 ; [.3EA9.0020.0002] # HENTAIGANA LETTER I-4 -1B00A ; [.3EAA.0020.0002] # HENTAIGANA LETTER U-1 -1B00B ; [.3EAB.0020.0002] # HENTAIGANA LETTER U-2 -1B00C ; [.3EAC.0020.0002] # HENTAIGANA LETTER U-3 -1B00D ; [.3EAD.0020.0002] # HENTAIGANA LETTER U-4 -1B00E ; [.3EAE.0020.0002] # HENTAIGANA LETTER U-5 -1B001 ; [.3EAF.0020.0002] # HIRAGANA LETTER ARCHAIC YE -1B00F ; [.3EB0.0020.0002] # HENTAIGANA LETTER E-2 -1B010 ; [.3EB1.0020.0002] # HENTAIGANA LETTER E-3 -1B011 ; [.3EB2.0020.0002] # HENTAIGANA LETTER E-4 -1B012 ; [.3EB3.0020.0002] # HENTAIGANA LETTER E-5 -1B013 ; [.3EB4.0020.0002] # HENTAIGANA LETTER E-6 -1B014 ; [.3EB5.0020.0002] # HENTAIGANA LETTER O-1 -1B015 ; [.3EB6.0020.0002] # HENTAIGANA LETTER O-2 -1B016 ; [.3EB7.0020.0002] # HENTAIGANA LETTER O-3 -1B017 ; [.3EB8.0020.0002] # HENTAIGANA LETTER KA-1 -1B018 ; [.3EB9.0020.0002] # HENTAIGANA LETTER KA-2 -1B019 ; [.3EBA.0020.0002] # HENTAIGANA LETTER KA-3 -1B01A ; [.3EBB.0020.0002] # HENTAIGANA LETTER KA-4 -1B01B ; [.3EBC.0020.0002] # HENTAIGANA LETTER KA-5 -1B01C ; [.3EBD.0020.0002] # HENTAIGANA LETTER KA-6 -1B01D ; [.3EBE.0020.0002] # HENTAIGANA LETTER KA-7 -1B01E ; [.3EBF.0020.0002] # HENTAIGANA LETTER KA-8 -1B01F ; [.3EC0.0020.0002] # HENTAIGANA LETTER KA-9 -1B020 ; [.3EC1.0020.0002] # HENTAIGANA LETTER KA-10 -1B021 ; [.3EC2.0020.0002] # HENTAIGANA LETTER KA-11 -1B022 ; [.3EC3.0020.0002] # HENTAIGANA LETTER KA-KE -1B023 ; [.3EC4.0020.0002] # HENTAIGANA LETTER KI-1 -1B024 ; [.3EC5.0020.0002] # HENTAIGANA LETTER KI-2 -1B025 ; [.3EC6.0020.0002] # HENTAIGANA LETTER KI-3 -1B026 ; [.3EC7.0020.0002] # HENTAIGANA LETTER KI-4 -1B027 ; [.3EC8.0020.0002] # HENTAIGANA LETTER KI-5 -1B028 ; [.3EC9.0020.0002] # HENTAIGANA LETTER KI-6 -1B029 ; [.3ECA.0020.0002] # HENTAIGANA LETTER KI-7 -1B02A ; [.3ECB.0020.0002] # HENTAIGANA LETTER KI-8 -1B02B ; [.3ECC.0020.0002] # HENTAIGANA LETTER KU-1 -1B02C ; [.3ECD.0020.0002] # HENTAIGANA LETTER KU-2 -1B02D ; [.3ECE.0020.0002] # HENTAIGANA LETTER KU-3 -1B02E ; [.3ECF.0020.0002] # HENTAIGANA LETTER KU-4 -1B02F ; [.3ED0.0020.0002] # HENTAIGANA LETTER KU-5 -1B030 ; [.3ED1.0020.0002] # HENTAIGANA LETTER KU-6 -1B031 ; [.3ED2.0020.0002] # HENTAIGANA LETTER KU-7 -1B032 ; [.3ED3.0020.0002] # HENTAIGANA LETTER KE-1 -1B033 ; [.3ED4.0020.0002] # HENTAIGANA LETTER KE-2 -1B034 ; [.3ED5.0020.0002] # HENTAIGANA LETTER KE-3 -1B035 ; [.3ED6.0020.0002] # HENTAIGANA LETTER KE-4 -1B036 ; [.3ED7.0020.0002] # HENTAIGANA LETTER KE-5 -1B037 ; [.3ED8.0020.0002] # HENTAIGANA LETTER KE-6 -1B038 ; [.3ED9.0020.0002] # HENTAIGANA LETTER KO-1 -1B039 ; [.3EDA.0020.0002] # HENTAIGANA LETTER KO-2 -1B03A ; [.3EDB.0020.0002] # HENTAIGANA LETTER KO-3 -1B03B ; [.3EDC.0020.0002] # HENTAIGANA LETTER KO-KI -1B03C ; [.3EDD.0020.0002] # HENTAIGANA LETTER SA-1 -1B03D ; [.3EDE.0020.0002] # HENTAIGANA LETTER SA-2 -1B03E ; [.3EDF.0020.0002] # HENTAIGANA LETTER SA-3 -1B03F ; [.3EE0.0020.0002] # HENTAIGANA LETTER SA-4 -1B040 ; [.3EE1.0020.0002] # HENTAIGANA LETTER SA-5 -1B041 ; [.3EE2.0020.0002] # HENTAIGANA LETTER SA-6 -1B042 ; [.3EE3.0020.0002] # HENTAIGANA LETTER SA-7 -1B043 ; [.3EE4.0020.0002] # HENTAIGANA LETTER SA-8 -1B044 ; [.3EE5.0020.0002] # HENTAIGANA LETTER SI-1 -1B045 ; [.3EE6.0020.0002] # HENTAIGANA LETTER SI-2 -1B046 ; [.3EE7.0020.0002] # HENTAIGANA LETTER SI-3 -1B047 ; [.3EE8.0020.0002] # HENTAIGANA LETTER SI-4 -1B048 ; [.3EE9.0020.0002] # HENTAIGANA LETTER SI-5 -1B049 ; [.3EEA.0020.0002] # HENTAIGANA LETTER SI-6 -1B04A ; [.3EEB.0020.0002] # HENTAIGANA LETTER SU-1 -1B04B ; [.3EEC.0020.0002] # HENTAIGANA LETTER SU-2 -1B04C ; [.3EED.0020.0002] # HENTAIGANA LETTER SU-3 -1B04D ; [.3EEE.0020.0002] # HENTAIGANA LETTER SU-4 -1B04E ; [.3EEF.0020.0002] # HENTAIGANA LETTER SU-5 -1B04F ; [.3EF0.0020.0002] # HENTAIGANA LETTER SU-6 -1B050 ; [.3EF1.0020.0002] # HENTAIGANA LETTER SU-7 -1B051 ; [.3EF2.0020.0002] # HENTAIGANA LETTER SU-8 -1B052 ; [.3EF3.0020.0002] # HENTAIGANA LETTER SE-1 -1B053 ; [.3EF4.0020.0002] # HENTAIGANA LETTER SE-2 -1B054 ; [.3EF5.0020.0002] # HENTAIGANA LETTER SE-3 -1B055 ; [.3EF6.0020.0002] # HENTAIGANA LETTER SE-4 -1B056 ; [.3EF7.0020.0002] # HENTAIGANA LETTER SE-5 -1B057 ; [.3EF8.0020.0002] # HENTAIGANA LETTER SO-1 -1B058 ; [.3EF9.0020.0002] # HENTAIGANA LETTER SO-2 -1B059 ; [.3EFA.0020.0002] # HENTAIGANA LETTER SO-3 -1B05A ; [.3EFB.0020.0002] # HENTAIGANA LETTER SO-4 -1B05B ; [.3EFC.0020.0002] # HENTAIGANA LETTER SO-5 -1B05C ; [.3EFD.0020.0002] # HENTAIGANA LETTER SO-6 -1B05D ; [.3EFE.0020.0002] # HENTAIGANA LETTER SO-7 -1B05E ; [.3EFF.0020.0002] # HENTAIGANA LETTER TA-1 -1B05F ; [.3F00.0020.0002] # HENTAIGANA LETTER TA-2 -1B060 ; [.3F01.0020.0002] # HENTAIGANA LETTER TA-3 -1B061 ; [.3F02.0020.0002] # HENTAIGANA LETTER TA-4 -1B062 ; [.3F03.0020.0002] # HENTAIGANA LETTER TI-1 -1B063 ; [.3F04.0020.0002] # HENTAIGANA LETTER TI-2 -1B064 ; [.3F05.0020.0002] # HENTAIGANA LETTER TI-3 -1B065 ; [.3F06.0020.0002] # HENTAIGANA LETTER TI-4 -1B066 ; [.3F07.0020.0002] # HENTAIGANA LETTER TI-5 -1B067 ; [.3F08.0020.0002] # HENTAIGANA LETTER TI-6 -1B068 ; [.3F09.0020.0002] # HENTAIGANA LETTER TI-7 -1B069 ; [.3F0A.0020.0002] # HENTAIGANA LETTER TU-1 -1B06A ; [.3F0B.0020.0002] # HENTAIGANA LETTER TU-2 -1B06B ; [.3F0C.0020.0002] # HENTAIGANA LETTER TU-3 -1B06C ; [.3F0D.0020.0002] # HENTAIGANA LETTER TU-4 -1B06D ; [.3F0E.0020.0002] # HENTAIGANA LETTER TU-TO -1B06E ; [.3F0F.0020.0002] # HENTAIGANA LETTER TE-1 -1B06F ; [.3F10.0020.0002] # HENTAIGANA LETTER TE-2 -1B070 ; [.3F11.0020.0002] # HENTAIGANA LETTER TE-3 -1B071 ; [.3F12.0020.0002] # HENTAIGANA LETTER TE-4 -1B072 ; [.3F13.0020.0002] # HENTAIGANA LETTER TE-5 -1B073 ; [.3F14.0020.0002] # HENTAIGANA LETTER TE-6 -1B074 ; [.3F15.0020.0002] # HENTAIGANA LETTER TE-7 -1B075 ; [.3F16.0020.0002] # HENTAIGANA LETTER TE-8 -1B076 ; [.3F17.0020.0002] # HENTAIGANA LETTER TE-9 -1B077 ; [.3F18.0020.0002] # HENTAIGANA LETTER TO-1 -1B078 ; [.3F19.0020.0002] # HENTAIGANA LETTER TO-2 -1B079 ; [.3F1A.0020.0002] # HENTAIGANA LETTER TO-3 -1B07A ; [.3F1B.0020.0002] # HENTAIGANA LETTER TO-4 -1B07B ; [.3F1C.0020.0002] # HENTAIGANA LETTER TO-5 -1B07C ; [.3F1D.0020.0002] # HENTAIGANA LETTER TO-6 -1B07D ; [.3F1E.0020.0002] # HENTAIGANA LETTER TO-RA -1B07E ; [.3F1F.0020.0002] # HENTAIGANA LETTER NA-1 -1B07F ; [.3F20.0020.0002] # HENTAIGANA LETTER NA-2 -1B080 ; [.3F21.0020.0002] # HENTAIGANA LETTER NA-3 -1B081 ; [.3F22.0020.0002] # HENTAIGANA LETTER NA-4 -1B082 ; [.3F23.0020.0002] # HENTAIGANA LETTER NA-5 -1B083 ; [.3F24.0020.0002] # HENTAIGANA LETTER NA-6 -1B084 ; [.3F25.0020.0002] # HENTAIGANA LETTER NA-7 -1B085 ; [.3F26.0020.0002] # HENTAIGANA LETTER NA-8 -1B086 ; [.3F27.0020.0002] # HENTAIGANA LETTER NA-9 -1B087 ; [.3F28.0020.0002] # HENTAIGANA LETTER NI-1 -1B088 ; [.3F29.0020.0002] # HENTAIGANA LETTER NI-2 -1B089 ; [.3F2A.0020.0002] # HENTAIGANA LETTER NI-3 -1B08A ; [.3F2B.0020.0002] # HENTAIGANA LETTER NI-4 -1B08B ; [.3F2C.0020.0002] # HENTAIGANA LETTER NI-5 -1B08C ; [.3F2D.0020.0002] # HENTAIGANA LETTER NI-6 -1B08D ; [.3F2E.0020.0002] # HENTAIGANA LETTER NI-7 -1B08E ; [.3F2F.0020.0002] # HENTAIGANA LETTER NI-TE -1B08F ; [.3F30.0020.0002] # HENTAIGANA LETTER NU-1 -1B090 ; [.3F31.0020.0002] # HENTAIGANA LETTER NU-2 -1B091 ; [.3F32.0020.0002] # HENTAIGANA LETTER NU-3 -1B092 ; [.3F33.0020.0002] # HENTAIGANA LETTER NE-1 -1B093 ; [.3F34.0020.0002] # HENTAIGANA LETTER NE-2 -1B094 ; [.3F35.0020.0002] # HENTAIGANA LETTER NE-3 -1B095 ; [.3F36.0020.0002] # HENTAIGANA LETTER NE-4 -1B096 ; [.3F37.0020.0002] # HENTAIGANA LETTER NE-5 -1B097 ; [.3F38.0020.0002] # HENTAIGANA LETTER NE-6 -1B098 ; [.3F39.0020.0002] # HENTAIGANA LETTER NE-KO -1B099 ; [.3F3A.0020.0002] # HENTAIGANA LETTER NO-1 -1B09A ; [.3F3B.0020.0002] # HENTAIGANA LETTER NO-2 -1B09B ; [.3F3C.0020.0002] # HENTAIGANA LETTER NO-3 -1B09C ; [.3F3D.0020.0002] # HENTAIGANA LETTER NO-4 -1B09D ; [.3F3E.0020.0002] # HENTAIGANA LETTER NO-5 -1B09E ; [.3F3F.0020.0002] # HENTAIGANA LETTER HA-1 -1B09F ; [.3F40.0020.0002] # HENTAIGANA LETTER HA-2 -1B0A0 ; [.3F41.0020.0002] # HENTAIGANA LETTER HA-3 -1B0A1 ; [.3F42.0020.0002] # HENTAIGANA LETTER HA-4 -1B0A2 ; [.3F43.0020.0002] # HENTAIGANA LETTER HA-5 -1B0A3 ; [.3F44.0020.0002] # HENTAIGANA LETTER HA-6 -1B0A4 ; [.3F45.0020.0002] # HENTAIGANA LETTER HA-7 -1B0A5 ; [.3F46.0020.0002] # HENTAIGANA LETTER HA-8 -1B0A6 ; [.3F47.0020.0002] # HENTAIGANA LETTER HA-9 -1B0A7 ; [.3F48.0020.0002] # HENTAIGANA LETTER HA-10 -1B0A8 ; [.3F49.0020.0002] # HENTAIGANA LETTER HA-11 -1B0A9 ; [.3F4A.0020.0002] # HENTAIGANA LETTER HI-1 -1B0AA ; [.3F4B.0020.0002] # HENTAIGANA LETTER HI-2 -1B0AB ; [.3F4C.0020.0002] # HENTAIGANA LETTER HI-3 -1B0AC ; [.3F4D.0020.0002] # HENTAIGANA LETTER HI-4 -1B0AD ; [.3F4E.0020.0002] # HENTAIGANA LETTER HI-5 -1B0AE ; [.3F4F.0020.0002] # HENTAIGANA LETTER HI-6 -1B0AF ; [.3F50.0020.0002] # HENTAIGANA LETTER HI-7 -1B0B0 ; [.3F51.0020.0002] # HENTAIGANA LETTER HU-1 -1B0B1 ; [.3F52.0020.0002] # HENTAIGANA LETTER HU-2 -1B0B2 ; [.3F53.0020.0002] # HENTAIGANA LETTER HU-3 -1B0B3 ; [.3F54.0020.0002] # HENTAIGANA LETTER HE-1 -1B0B4 ; [.3F55.0020.0002] # HENTAIGANA LETTER HE-2 -1B0B5 ; [.3F56.0020.0002] # HENTAIGANA LETTER HE-3 -1B0B6 ; [.3F57.0020.0002] # HENTAIGANA LETTER HE-4 -1B0B7 ; [.3F58.0020.0002] # HENTAIGANA LETTER HE-5 -1B0B8 ; [.3F59.0020.0002] # HENTAIGANA LETTER HE-6 -1B0B9 ; [.3F5A.0020.0002] # HENTAIGANA LETTER HE-7 -1B0BA ; [.3F5B.0020.0002] # HENTAIGANA LETTER HO-1 -1B0BB ; [.3F5C.0020.0002] # HENTAIGANA LETTER HO-2 -1B0BC ; [.3F5D.0020.0002] # HENTAIGANA LETTER HO-3 -1B0BD ; [.3F5E.0020.0002] # HENTAIGANA LETTER HO-4 -1B0BE ; [.3F5F.0020.0002] # HENTAIGANA LETTER HO-5 -1B0BF ; [.3F60.0020.0002] # HENTAIGANA LETTER HO-6 -1B0C0 ; [.3F61.0020.0002] # HENTAIGANA LETTER HO-7 -1B0C1 ; [.3F62.0020.0002] # HENTAIGANA LETTER HO-8 -1B0C2 ; [.3F63.0020.0002] # HENTAIGANA LETTER MA-1 -1B0C3 ; [.3F64.0020.0002] # HENTAIGANA LETTER MA-2 -1B0C4 ; [.3F65.0020.0002] # HENTAIGANA LETTER MA-3 -1B0C5 ; [.3F66.0020.0002] # HENTAIGANA LETTER MA-4 -1B0C6 ; [.3F67.0020.0002] # HENTAIGANA LETTER MA-5 -1B0C7 ; [.3F68.0020.0002] # HENTAIGANA LETTER MA-6 -1B0C8 ; [.3F69.0020.0002] # HENTAIGANA LETTER MA-7 -1B0C9 ; [.3F6A.0020.0002] # HENTAIGANA LETTER MI-1 -1B0CA ; [.3F6B.0020.0002] # HENTAIGANA LETTER MI-2 -1B0CB ; [.3F6C.0020.0002] # HENTAIGANA LETTER MI-3 -1B0CC ; [.3F6D.0020.0002] # HENTAIGANA LETTER MI-4 -1B0CD ; [.3F6E.0020.0002] # HENTAIGANA LETTER MI-5 -1B0CE ; [.3F6F.0020.0002] # HENTAIGANA LETTER MI-6 -1B0CF ; [.3F70.0020.0002] # HENTAIGANA LETTER MI-7 -1B0D0 ; [.3F71.0020.0002] # HENTAIGANA LETTER MU-1 -1B0D1 ; [.3F72.0020.0002] # HENTAIGANA LETTER MU-2 -1B0D2 ; [.3F73.0020.0002] # HENTAIGANA LETTER MU-3 -1B0D3 ; [.3F74.0020.0002] # HENTAIGANA LETTER MU-4 -1B0D4 ; [.3F75.0020.0002] # HENTAIGANA LETTER ME-1 -1B0D5 ; [.3F76.0020.0002] # HENTAIGANA LETTER ME-2 -1B0D6 ; [.3F77.0020.0002] # HENTAIGANA LETTER ME-MA -1B0D7 ; [.3F78.0020.0002] # HENTAIGANA LETTER MO-1 -1B0D8 ; [.3F79.0020.0002] # HENTAIGANA LETTER MO-2 -1B0D9 ; [.3F7A.0020.0002] # HENTAIGANA LETTER MO-3 -1B0DA ; [.3F7B.0020.0002] # HENTAIGANA LETTER MO-4 -1B0DB ; [.3F7C.0020.0002] # HENTAIGANA LETTER MO-5 -1B0DC ; [.3F7D.0020.0002] # HENTAIGANA LETTER MO-6 -1B0DD ; [.3F7E.0020.0002] # HENTAIGANA LETTER YA-1 -1B0DE ; [.3F7F.0020.0002] # HENTAIGANA LETTER YA-2 -1B0DF ; [.3F80.0020.0002] # HENTAIGANA LETTER YA-3 -1B0E0 ; [.3F81.0020.0002] # HENTAIGANA LETTER YA-4 -1B0E1 ; [.3F82.0020.0002] # HENTAIGANA LETTER YA-5 -1B0E2 ; [.3F83.0020.0002] # HENTAIGANA LETTER YA-YO -1B0E3 ; [.3F84.0020.0002] # HENTAIGANA LETTER YU-1 -1B0E4 ; [.3F85.0020.0002] # HENTAIGANA LETTER YU-2 -1B0E5 ; [.3F86.0020.0002] # HENTAIGANA LETTER YU-3 -1B0E6 ; [.3F87.0020.0002] # HENTAIGANA LETTER YU-4 -1B0E7 ; [.3F88.0020.0002] # HENTAIGANA LETTER YO-1 -1B0E8 ; [.3F89.0020.0002] # HENTAIGANA LETTER YO-2 -1B0E9 ; [.3F8A.0020.0002] # HENTAIGANA LETTER YO-3 -1B0EA ; [.3F8B.0020.0002] # HENTAIGANA LETTER YO-4 -1B0EB ; [.3F8C.0020.0002] # HENTAIGANA LETTER YO-5 -1B0EC ; [.3F8D.0020.0002] # HENTAIGANA LETTER YO-6 -1B0ED ; [.3F8E.0020.0002] # HENTAIGANA LETTER RA-1 -1B0EE ; [.3F8F.0020.0002] # HENTAIGANA LETTER RA-2 -1B0EF ; [.3F90.0020.0002] # HENTAIGANA LETTER RA-3 -1B0F0 ; [.3F91.0020.0002] # HENTAIGANA LETTER RA-4 -1B0F1 ; [.3F92.0020.0002] # HENTAIGANA LETTER RI-1 -1B0F2 ; [.3F93.0020.0002] # HENTAIGANA LETTER RI-2 -1B0F3 ; [.3F94.0020.0002] # HENTAIGANA LETTER RI-3 -1B0F4 ; [.3F95.0020.0002] # HENTAIGANA LETTER RI-4 -1B0F5 ; [.3F96.0020.0002] # HENTAIGANA LETTER RI-5 -1B0F6 ; [.3F97.0020.0002] # HENTAIGANA LETTER RI-6 -1B0F7 ; [.3F98.0020.0002] # HENTAIGANA LETTER RI-7 -1B0F8 ; [.3F99.0020.0002] # HENTAIGANA LETTER RU-1 -1B0F9 ; [.3F9A.0020.0002] # HENTAIGANA LETTER RU-2 -1B0FA ; [.3F9B.0020.0002] # HENTAIGANA LETTER RU-3 -1B0FB ; [.3F9C.0020.0002] # HENTAIGANA LETTER RU-4 -1B0FC ; [.3F9D.0020.0002] # HENTAIGANA LETTER RU-5 -1B0FD ; [.3F9E.0020.0002] # HENTAIGANA LETTER RU-6 -1B0FE ; [.3F9F.0020.0002] # HENTAIGANA LETTER RE-1 -1B0FF ; [.3FA0.0020.0002] # HENTAIGANA LETTER RE-2 -1B100 ; [.3FA1.0020.0002] # HENTAIGANA LETTER RE-3 -1B101 ; [.3FA2.0020.0002] # HENTAIGANA LETTER RE-4 -1B102 ; [.3FA3.0020.0002] # HENTAIGANA LETTER RO-1 -1B103 ; [.3FA4.0020.0002] # HENTAIGANA LETTER RO-2 -1B104 ; [.3FA5.0020.0002] # HENTAIGANA LETTER RO-3 -1B105 ; [.3FA6.0020.0002] # HENTAIGANA LETTER RO-4 -1B106 ; [.3FA7.0020.0002] # HENTAIGANA LETTER RO-5 -1B107 ; [.3FA8.0020.0002] # HENTAIGANA LETTER RO-6 -1B108 ; [.3FA9.0020.0002] # HENTAIGANA LETTER WA-1 -1B109 ; [.3FAA.0020.0002] # HENTAIGANA LETTER WA-2 -1B10A ; [.3FAB.0020.0002] # HENTAIGANA LETTER WA-3 -1B10B ; [.3FAC.0020.0002] # HENTAIGANA LETTER WA-4 -1B10C ; [.3FAD.0020.0002] # HENTAIGANA LETTER WA-5 -1B10D ; [.3FAE.0020.0002] # HENTAIGANA LETTER WI-1 -1B10E ; [.3FAF.0020.0002] # HENTAIGANA LETTER WI-2 -1B10F ; [.3FB0.0020.0002] # HENTAIGANA LETTER WI-3 -1B110 ; [.3FB1.0020.0002] # HENTAIGANA LETTER WI-4 -1B111 ; [.3FB2.0020.0002] # HENTAIGANA LETTER WI-5 -1B112 ; [.3FB3.0020.0002] # HENTAIGANA LETTER WE-1 -1B113 ; [.3FB4.0020.0002] # HENTAIGANA LETTER WE-2 -1B114 ; [.3FB5.0020.0002] # HENTAIGANA LETTER WE-3 -1B115 ; [.3FB6.0020.0002] # HENTAIGANA LETTER WE-4 -1B116 ; [.3FB7.0020.0002] # HENTAIGANA LETTER WO-1 -1B117 ; [.3FB8.0020.0002] # HENTAIGANA LETTER WO-2 -1B118 ; [.3FB9.0020.0002] # HENTAIGANA LETTER WO-3 -1B119 ; [.3FBA.0020.0002] # HENTAIGANA LETTER WO-4 -1B11A ; [.3FBB.0020.0002] # HENTAIGANA LETTER WO-5 -1B11B ; [.3FBC.0020.0002] # HENTAIGANA LETTER WO-6 -1B11C ; [.3FBD.0020.0002] # HENTAIGANA LETTER WO-7 -1B11D ; [.3FBE.0020.0002] # HENTAIGANA LETTER N-MU-MO-1 -1B11E ; [.3FBF.0020.0002] # HENTAIGANA LETTER N-MU-MO-2 -3105 ; [.3FC0.0020.0002] # BOPOMOFO LETTER B -31A0 ; [.3FC0.0020.0004][.0000.0112.0004] # BOPOMOFO LETTER BU -3106 ; [.3FC1.0020.0002] # BOPOMOFO LETTER P -31B4 ; [.3FC1.0020.0019] # BOPOMOFO FINAL LETTER P -3107 ; [.3FC2.0020.0002] # BOPOMOFO LETTER M -3108 ; [.3FC3.0020.0002] # BOPOMOFO LETTER F -312A ; [.3FC4.0020.0002] # BOPOMOFO LETTER V -3109 ; [.3FC5.0020.0002] # BOPOMOFO LETTER D -310A ; [.3FC6.0020.0002] # BOPOMOFO LETTER T -31B5 ; [.3FC6.0020.0019] # BOPOMOFO FINAL LETTER T -310B ; [.3FC7.0020.0002] # BOPOMOFO LETTER N -310C ; [.3FC8.0020.0002] # BOPOMOFO LETTER L -310D ; [.3FC9.0020.0002] # BOPOMOFO LETTER G -31A3 ; [.3FC9.0020.0004][.0000.0112.0004] # BOPOMOFO LETTER GU -310E ; [.3FCA.0020.0002] # BOPOMOFO LETTER K -31B6 ; [.3FCA.0020.0019] # BOPOMOFO FINAL LETTER K -312B ; [.3FCB.0020.0002] # BOPOMOFO LETTER NG -31AD ; [.3FCC.0020.0002] # BOPOMOFO LETTER NGG -310F ; [.3FCD.0020.0002] # BOPOMOFO LETTER H -31B7 ; [.3FCD.0020.0019] # BOPOMOFO FINAL LETTER H -3110 ; [.3FCE.0020.0002] # BOPOMOFO LETTER J -31A2 ; [.3FCE.0020.0004][.0000.0112.0004] # BOPOMOFO LETTER JI -3111 ; [.3FCF.0020.0002] # BOPOMOFO LETTER Q -3112 ; [.3FD0.0020.0002] # BOPOMOFO LETTER X -312C ; [.3FD1.0020.0002] # BOPOMOFO LETTER GN -3113 ; [.3FD2.0020.0002] # BOPOMOFO LETTER ZH -3114 ; [.3FD3.0020.0002] # BOPOMOFO LETTER CH -3115 ; [.3FD4.0020.0002] # BOPOMOFO LETTER SH -3116 ; [.3FD5.0020.0002] # BOPOMOFO LETTER R -3117 ; [.3FD6.0020.0002] # BOPOMOFO LETTER Z -31A1 ; [.3FD6.0020.0004][.0000.0112.0004] # BOPOMOFO LETTER ZI -3118 ; [.3FD7.0020.0002] # BOPOMOFO LETTER C -3119 ; [.3FD8.0020.0002] # BOPOMOFO LETTER S -31B8 ; [.3FD9.0020.0002] # BOPOMOFO LETTER GH -31B9 ; [.3FDA.0020.0002] # BOPOMOFO LETTER LH -31BA ; [.3FDB.0020.0002] # BOPOMOFO LETTER ZY -311A ; [.3FDC.0020.0002] # BOPOMOFO LETTER A -31A9 ; [.3FDC.0020.0004][.0000.0112.0004] # BOPOMOFO LETTER ANN -311B ; [.3FDD.0020.0002] # BOPOMOFO LETTER O -31A7 ; [.3FDD.0020.0004][.0000.0112.0004] # BOPOMOFO LETTER ONN -31A6 ; [.3FDE.0020.0002] # BOPOMOFO LETTER OO -311C ; [.3FDF.0020.0002] # BOPOMOFO LETTER E -312E ; [.3FDF.0020.0004] # BOPOMOFO LETTER O WITH DOT ABOVE -311D ; [.3FE0.0020.0002] # BOPOMOFO LETTER EH -31A4 ; [.3FE1.0020.0002] # BOPOMOFO LETTER EE -31A5 ; [.3FE1.0020.0004][.0000.0112.0004] # BOPOMOFO LETTER ENN -311E ; [.3FE2.0020.0002] # BOPOMOFO LETTER AI -31AE ; [.3FE2.0020.0004][.0000.0112.0004] # BOPOMOFO LETTER AINN -311F ; [.3FE3.0020.0002] # BOPOMOFO LETTER EI -3120 ; [.3FE4.0020.0002] # BOPOMOFO LETTER AU -31AF ; [.3FE4.0020.0004][.0000.0112.0004] # BOPOMOFO LETTER AUNN -3121 ; [.3FE5.0020.0002] # BOPOMOFO LETTER OU -3122 ; [.3FE6.0020.0002] # BOPOMOFO LETTER AN -3123 ; [.3FE7.0020.0002] # BOPOMOFO LETTER EN -3124 ; [.3FE8.0020.0002] # BOPOMOFO LETTER ANG -31B2 ; [.3FE9.0020.0002] # BOPOMOFO LETTER ONG -3125 ; [.3FEA.0020.0002] # BOPOMOFO LETTER ENG -31B0 ; [.3FEB.0020.0002] # BOPOMOFO LETTER AM -31B1 ; [.3FEC.0020.0002] # BOPOMOFO LETTER OM -31AC ; [.3FED.0020.0002] # BOPOMOFO LETTER IM -3126 ; [.3FEE.0020.0002] # BOPOMOFO LETTER ER -3127 ; [.3FEF.0020.0002] # BOPOMOFO LETTER I -31AA ; [.3FEF.0020.0004][.0000.0112.0004] # BOPOMOFO LETTER INN -31B3 ; [.3FEF.0020.0016][.0000.0112.0016] # BOPOMOFO LETTER INNN -3128 ; [.3FF0.0020.0002] # BOPOMOFO LETTER U -31AB ; [.3FF0.0020.0004][.0000.0112.0004] # BOPOMOFO LETTER UNN -31A8 ; [.3FF0.0020.0004][.0000.0113.0004] # BOPOMOFO LETTER IR -3129 ; [.3FF1.0020.0002] # BOPOMOFO LETTER IU -312D ; [.3FF2.0020.0002] # BOPOMOFO LETTER IH -A000 ; [.3FF3.0020.0002] # YI SYLLABLE IT -A001 ; [.3FF4.0020.0002] # YI SYLLABLE IX -A002 ; [.3FF5.0020.0002] # YI SYLLABLE I -A003 ; [.3FF6.0020.0002] # YI SYLLABLE IP -A004 ; [.3FF7.0020.0002] # YI SYLLABLE IET -A005 ; [.3FF8.0020.0002] # YI SYLLABLE IEX -A006 ; [.3FF9.0020.0002] # YI SYLLABLE IE -A007 ; [.3FFA.0020.0002] # YI SYLLABLE IEP -A008 ; [.3FFB.0020.0002] # YI SYLLABLE AT -A009 ; [.3FFC.0020.0002] # YI SYLLABLE AX -A00A ; [.3FFD.0020.0002] # YI SYLLABLE A -A00B ; [.3FFE.0020.0002] # YI SYLLABLE AP -A00C ; [.3FFF.0020.0002] # YI SYLLABLE UOX -A00D ; [.4000.0020.0002] # YI SYLLABLE UO -A00E ; [.4001.0020.0002] # YI SYLLABLE UOP -A00F ; [.4002.0020.0002] # YI SYLLABLE OT -A010 ; [.4003.0020.0002] # YI SYLLABLE OX -A011 ; [.4004.0020.0002] # YI SYLLABLE O -A012 ; [.4005.0020.0002] # YI SYLLABLE OP -A013 ; [.4006.0020.0002] # YI SYLLABLE EX -A014 ; [.4007.0020.0002] # YI SYLLABLE E -A015 ; [.4008.0020.0002] # YI SYLLABLE WU -A016 ; [.4009.0020.0002] # YI SYLLABLE BIT -A017 ; [.400A.0020.0002] # YI SYLLABLE BIX -A018 ; [.400B.0020.0002] # YI SYLLABLE BI -A019 ; [.400C.0020.0002] # YI SYLLABLE BIP -A01A ; [.400D.0020.0002] # YI SYLLABLE BIET -A01B ; [.400E.0020.0002] # YI SYLLABLE BIEX -A01C ; [.400F.0020.0002] # YI SYLLABLE BIE -A01D ; [.4010.0020.0002] # YI SYLLABLE BIEP -A01E ; [.4011.0020.0002] # YI SYLLABLE BAT -A01F ; [.4012.0020.0002] # YI SYLLABLE BAX -A020 ; [.4013.0020.0002] # YI SYLLABLE BA -A021 ; [.4014.0020.0002] # YI SYLLABLE BAP -A022 ; [.4015.0020.0002] # YI SYLLABLE BUOX -A023 ; [.4016.0020.0002] # YI SYLLABLE BUO -A024 ; [.4017.0020.0002] # YI SYLLABLE BUOP -A025 ; [.4018.0020.0002] # YI SYLLABLE BOT -A026 ; [.4019.0020.0002] # YI SYLLABLE BOX -A027 ; [.401A.0020.0002] # YI SYLLABLE BO -A028 ; [.401B.0020.0002] # YI SYLLABLE BOP -A029 ; [.401C.0020.0002] # YI SYLLABLE BEX -A02A ; [.401D.0020.0002] # YI SYLLABLE BE -A02B ; [.401E.0020.0002] # YI SYLLABLE BEP -A02C ; [.401F.0020.0002] # YI SYLLABLE BUT -A02D ; [.4020.0020.0002] # YI SYLLABLE BUX -A02E ; [.4021.0020.0002] # YI SYLLABLE BU -A02F ; [.4022.0020.0002] # YI SYLLABLE BUP -A030 ; [.4023.0020.0002] # YI SYLLABLE BURX -A031 ; [.4024.0020.0002] # YI SYLLABLE BUR -A032 ; [.4025.0020.0002] # YI SYLLABLE BYT -A033 ; [.4026.0020.0002] # YI SYLLABLE BYX -A034 ; [.4027.0020.0002] # YI SYLLABLE BY -A035 ; [.4028.0020.0002] # YI SYLLABLE BYP -A036 ; [.4029.0020.0002] # YI SYLLABLE BYRX -A037 ; [.402A.0020.0002] # YI SYLLABLE BYR -A038 ; [.402B.0020.0002] # YI SYLLABLE PIT -A039 ; [.402C.0020.0002] # YI SYLLABLE PIX -A03A ; [.402D.0020.0002] # YI SYLLABLE PI -A03B ; [.402E.0020.0002] # YI SYLLABLE PIP -A03C ; [.402F.0020.0002] # YI SYLLABLE PIEX -A03D ; [.4030.0020.0002] # YI SYLLABLE PIE -A03E ; [.4031.0020.0002] # YI SYLLABLE PIEP -A03F ; [.4032.0020.0002] # YI SYLLABLE PAT -A040 ; [.4033.0020.0002] # YI SYLLABLE PAX -A041 ; [.4034.0020.0002] # YI SYLLABLE PA -A042 ; [.4035.0020.0002] # YI SYLLABLE PAP -A043 ; [.4036.0020.0002] # YI SYLLABLE PUOX -A044 ; [.4037.0020.0002] # YI SYLLABLE PUO -A045 ; [.4038.0020.0002] # YI SYLLABLE PUOP -A046 ; [.4039.0020.0002] # YI SYLLABLE POT -A047 ; [.403A.0020.0002] # YI SYLLABLE POX -A048 ; [.403B.0020.0002] # YI SYLLABLE PO -A049 ; [.403C.0020.0002] # YI SYLLABLE POP -A04A ; [.403D.0020.0002] # YI SYLLABLE PUT -A04B ; [.403E.0020.0002] # YI SYLLABLE PUX -A04C ; [.403F.0020.0002] # YI SYLLABLE PU -A04D ; [.4040.0020.0002] # YI SYLLABLE PUP -A04E ; [.4041.0020.0002] # YI SYLLABLE PURX -A04F ; [.4042.0020.0002] # YI SYLLABLE PUR -A050 ; [.4043.0020.0002] # YI SYLLABLE PYT -A051 ; [.4044.0020.0002] # YI SYLLABLE PYX -A052 ; [.4045.0020.0002] # YI SYLLABLE PY -A053 ; [.4046.0020.0002] # YI SYLLABLE PYP -A054 ; [.4047.0020.0002] # YI SYLLABLE PYRX -A055 ; [.4048.0020.0002] # YI SYLLABLE PYR -A056 ; [.4049.0020.0002] # YI SYLLABLE BBIT -A057 ; [.404A.0020.0002] # YI SYLLABLE BBIX -A058 ; [.404B.0020.0002] # YI SYLLABLE BBI -A059 ; [.404C.0020.0002] # YI SYLLABLE BBIP -A05A ; [.404D.0020.0002] # YI SYLLABLE BBIET -A05B ; [.404E.0020.0002] # YI SYLLABLE BBIEX -A05C ; [.404F.0020.0002] # YI SYLLABLE BBIE -A05D ; [.4050.0020.0002] # YI SYLLABLE BBIEP -A05E ; [.4051.0020.0002] # YI SYLLABLE BBAT -A05F ; [.4052.0020.0002] # YI SYLLABLE BBAX -A060 ; [.4053.0020.0002] # YI SYLLABLE BBA -A061 ; [.4054.0020.0002] # YI SYLLABLE BBAP -A062 ; [.4055.0020.0002] # YI SYLLABLE BBUOX -A063 ; [.4056.0020.0002] # YI SYLLABLE BBUO -A064 ; [.4057.0020.0002] # YI SYLLABLE BBUOP -A065 ; [.4058.0020.0002] # YI SYLLABLE BBOT -A066 ; [.4059.0020.0002] # YI SYLLABLE BBOX -A067 ; [.405A.0020.0002] # YI SYLLABLE BBO -A068 ; [.405B.0020.0002] # YI SYLLABLE BBOP -A069 ; [.405C.0020.0002] # YI SYLLABLE BBEX -A06A ; [.405D.0020.0002] # YI SYLLABLE BBE -A06B ; [.405E.0020.0002] # YI SYLLABLE BBEP -A06C ; [.405F.0020.0002] # YI SYLLABLE BBUT -A06D ; [.4060.0020.0002] # YI SYLLABLE BBUX -A06E ; [.4061.0020.0002] # YI SYLLABLE BBU -A06F ; [.4062.0020.0002] # YI SYLLABLE BBUP -A070 ; [.4063.0020.0002] # YI SYLLABLE BBURX -A071 ; [.4064.0020.0002] # YI SYLLABLE BBUR -A072 ; [.4065.0020.0002] # YI SYLLABLE BBYT -A073 ; [.4066.0020.0002] # YI SYLLABLE BBYX -A074 ; [.4067.0020.0002] # YI SYLLABLE BBY -A075 ; [.4068.0020.0002] # YI SYLLABLE BBYP -A076 ; [.4069.0020.0002] # YI SYLLABLE NBIT -A077 ; [.406A.0020.0002] # YI SYLLABLE NBIX -A078 ; [.406B.0020.0002] # YI SYLLABLE NBI -A079 ; [.406C.0020.0002] # YI SYLLABLE NBIP -A07A ; [.406D.0020.0002] # YI SYLLABLE NBIEX -A07B ; [.406E.0020.0002] # YI SYLLABLE NBIE -A07C ; [.406F.0020.0002] # YI SYLLABLE NBIEP -A07D ; [.4070.0020.0002] # YI SYLLABLE NBAT -A07E ; [.4071.0020.0002] # YI SYLLABLE NBAX -A07F ; [.4072.0020.0002] # YI SYLLABLE NBA -A080 ; [.4073.0020.0002] # YI SYLLABLE NBAP -A081 ; [.4074.0020.0002] # YI SYLLABLE NBOT -A082 ; [.4075.0020.0002] # YI SYLLABLE NBOX -A083 ; [.4076.0020.0002] # YI SYLLABLE NBO -A084 ; [.4077.0020.0002] # YI SYLLABLE NBOP -A085 ; [.4078.0020.0002] # YI SYLLABLE NBUT -A086 ; [.4079.0020.0002] # YI SYLLABLE NBUX -A087 ; [.407A.0020.0002] # YI SYLLABLE NBU -A088 ; [.407B.0020.0002] # YI SYLLABLE NBUP -A089 ; [.407C.0020.0002] # YI SYLLABLE NBURX -A08A ; [.407D.0020.0002] # YI SYLLABLE NBUR -A08B ; [.407E.0020.0002] # YI SYLLABLE NBYT -A08C ; [.407F.0020.0002] # YI SYLLABLE NBYX -A08D ; [.4080.0020.0002] # YI SYLLABLE NBY -A08E ; [.4081.0020.0002] # YI SYLLABLE NBYP -A08F ; [.4082.0020.0002] # YI SYLLABLE NBYRX -A090 ; [.4083.0020.0002] # YI SYLLABLE NBYR -A091 ; [.4084.0020.0002] # YI SYLLABLE HMIT -A092 ; [.4085.0020.0002] # YI SYLLABLE HMIX -A093 ; [.4086.0020.0002] # YI SYLLABLE HMI -A094 ; [.4087.0020.0002] # YI SYLLABLE HMIP -A095 ; [.4088.0020.0002] # YI SYLLABLE HMIEX -A096 ; [.4089.0020.0002] # YI SYLLABLE HMIE -A097 ; [.408A.0020.0002] # YI SYLLABLE HMIEP -A098 ; [.408B.0020.0002] # YI SYLLABLE HMAT -A099 ; [.408C.0020.0002] # YI SYLLABLE HMAX -A09A ; [.408D.0020.0002] # YI SYLLABLE HMA -A09B ; [.408E.0020.0002] # YI SYLLABLE HMAP -A09C ; [.408F.0020.0002] # YI SYLLABLE HMUOX -A09D ; [.4090.0020.0002] # YI SYLLABLE HMUO -A09E ; [.4091.0020.0002] # YI SYLLABLE HMUOP -A09F ; [.4092.0020.0002] # YI SYLLABLE HMOT -A0A0 ; [.4093.0020.0002] # YI SYLLABLE HMOX -A0A1 ; [.4094.0020.0002] # YI SYLLABLE HMO -A0A2 ; [.4095.0020.0002] # YI SYLLABLE HMOP -A0A3 ; [.4096.0020.0002] # YI SYLLABLE HMUT -A0A4 ; [.4097.0020.0002] # YI SYLLABLE HMUX -A0A5 ; [.4098.0020.0002] # YI SYLLABLE HMU -A0A6 ; [.4099.0020.0002] # YI SYLLABLE HMUP -A0A7 ; [.409A.0020.0002] # YI SYLLABLE HMURX -A0A8 ; [.409B.0020.0002] # YI SYLLABLE HMUR -A0A9 ; [.409C.0020.0002] # YI SYLLABLE HMYX -A0AA ; [.409D.0020.0002] # YI SYLLABLE HMY -A0AB ; [.409E.0020.0002] # YI SYLLABLE HMYP -A0AC ; [.409F.0020.0002] # YI SYLLABLE HMYRX -A0AD ; [.40A0.0020.0002] # YI SYLLABLE HMYR -A0AE ; [.40A1.0020.0002] # YI SYLLABLE MIT -A0AF ; [.40A2.0020.0002] # YI SYLLABLE MIX -A0B0 ; [.40A3.0020.0002] # YI SYLLABLE MI -A0B1 ; [.40A4.0020.0002] # YI SYLLABLE MIP -A0B2 ; [.40A5.0020.0002] # YI SYLLABLE MIEX -A0B3 ; [.40A6.0020.0002] # YI SYLLABLE MIE -A0B4 ; [.40A7.0020.0002] # YI SYLLABLE MIEP -A0B5 ; [.40A8.0020.0002] # YI SYLLABLE MAT -A0B6 ; [.40A9.0020.0002] # YI SYLLABLE MAX -A0B7 ; [.40AA.0020.0002] # YI SYLLABLE MA -A0B8 ; [.40AB.0020.0002] # YI SYLLABLE MAP -A0B9 ; [.40AC.0020.0002] # YI SYLLABLE MUOT -A0BA ; [.40AD.0020.0002] # YI SYLLABLE MUOX -A0BB ; [.40AE.0020.0002] # YI SYLLABLE MUO -A0BC ; [.40AF.0020.0002] # YI SYLLABLE MUOP -A0BD ; [.40B0.0020.0002] # YI SYLLABLE MOT -A0BE ; [.40B1.0020.0002] # YI SYLLABLE MOX -A0BF ; [.40B2.0020.0002] # YI SYLLABLE MO -A0C0 ; [.40B3.0020.0002] # YI SYLLABLE MOP -A0C1 ; [.40B4.0020.0002] # YI SYLLABLE MEX -A0C2 ; [.40B5.0020.0002] # YI SYLLABLE ME -A0C3 ; [.40B6.0020.0002] # YI SYLLABLE MUT -A0C4 ; [.40B7.0020.0002] # YI SYLLABLE MUX -A0C5 ; [.40B8.0020.0002] # YI SYLLABLE MU -A0C6 ; [.40B9.0020.0002] # YI SYLLABLE MUP -A0C7 ; [.40BA.0020.0002] # YI SYLLABLE MURX -A0C8 ; [.40BB.0020.0002] # YI SYLLABLE MUR -A0C9 ; [.40BC.0020.0002] # YI SYLLABLE MYT -A0CA ; [.40BD.0020.0002] # YI SYLLABLE MYX -A0CB ; [.40BE.0020.0002] # YI SYLLABLE MY -A0CC ; [.40BF.0020.0002] # YI SYLLABLE MYP -A0CD ; [.40C0.0020.0002] # YI SYLLABLE FIT -A0CE ; [.40C1.0020.0002] # YI SYLLABLE FIX -A0CF ; [.40C2.0020.0002] # YI SYLLABLE FI -A0D0 ; [.40C3.0020.0002] # YI SYLLABLE FIP -A0D1 ; [.40C4.0020.0002] # YI SYLLABLE FAT -A0D2 ; [.40C5.0020.0002] # YI SYLLABLE FAX -A0D3 ; [.40C6.0020.0002] # YI SYLLABLE FA -A0D4 ; [.40C7.0020.0002] # YI SYLLABLE FAP -A0D5 ; [.40C8.0020.0002] # YI SYLLABLE FOX -A0D6 ; [.40C9.0020.0002] # YI SYLLABLE FO -A0D7 ; [.40CA.0020.0002] # YI SYLLABLE FOP -A0D8 ; [.40CB.0020.0002] # YI SYLLABLE FUT -A0D9 ; [.40CC.0020.0002] # YI SYLLABLE FUX -A0DA ; [.40CD.0020.0002] # YI SYLLABLE FU -A0DB ; [.40CE.0020.0002] # YI SYLLABLE FUP -A0DC ; [.40CF.0020.0002] # YI SYLLABLE FURX -A0DD ; [.40D0.0020.0002] # YI SYLLABLE FUR -A0DE ; [.40D1.0020.0002] # YI SYLLABLE FYT -A0DF ; [.40D2.0020.0002] # YI SYLLABLE FYX -A0E0 ; [.40D3.0020.0002] # YI SYLLABLE FY -A0E1 ; [.40D4.0020.0002] # YI SYLLABLE FYP -A0E2 ; [.40D5.0020.0002] # YI SYLLABLE VIT -A0E3 ; [.40D6.0020.0002] # YI SYLLABLE VIX -A0E4 ; [.40D7.0020.0002] # YI SYLLABLE VI -A0E5 ; [.40D8.0020.0002] # YI SYLLABLE VIP -A0E6 ; [.40D9.0020.0002] # YI SYLLABLE VIET -A0E7 ; [.40DA.0020.0002] # YI SYLLABLE VIEX -A0E8 ; [.40DB.0020.0002] # YI SYLLABLE VIE -A0E9 ; [.40DC.0020.0002] # YI SYLLABLE VIEP -A0EA ; [.40DD.0020.0002] # YI SYLLABLE VAT -A0EB ; [.40DE.0020.0002] # YI SYLLABLE VAX -A0EC ; [.40DF.0020.0002] # YI SYLLABLE VA -A0ED ; [.40E0.0020.0002] # YI SYLLABLE VAP -A0EE ; [.40E1.0020.0002] # YI SYLLABLE VOT -A0EF ; [.40E2.0020.0002] # YI SYLLABLE VOX -A0F0 ; [.40E3.0020.0002] # YI SYLLABLE VO -A0F1 ; [.40E4.0020.0002] # YI SYLLABLE VOP -A0F2 ; [.40E5.0020.0002] # YI SYLLABLE VEX -A0F3 ; [.40E6.0020.0002] # YI SYLLABLE VEP -A0F4 ; [.40E7.0020.0002] # YI SYLLABLE VUT -A0F5 ; [.40E8.0020.0002] # YI SYLLABLE VUX -A0F6 ; [.40E9.0020.0002] # YI SYLLABLE VU -A0F7 ; [.40EA.0020.0002] # YI SYLLABLE VUP -A0F8 ; [.40EB.0020.0002] # YI SYLLABLE VURX -A0F9 ; [.40EC.0020.0002] # YI SYLLABLE VUR -A0FA ; [.40ED.0020.0002] # YI SYLLABLE VYT -A0FB ; [.40EE.0020.0002] # YI SYLLABLE VYX -A0FC ; [.40EF.0020.0002] # YI SYLLABLE VY -A0FD ; [.40F0.0020.0002] # YI SYLLABLE VYP -A0FE ; [.40F1.0020.0002] # YI SYLLABLE VYRX -A0FF ; [.40F2.0020.0002] # YI SYLLABLE VYR -A100 ; [.40F3.0020.0002] # YI SYLLABLE DIT -A101 ; [.40F4.0020.0002] # YI SYLLABLE DIX -A102 ; [.40F5.0020.0002] # YI SYLLABLE DI -A103 ; [.40F6.0020.0002] # YI SYLLABLE DIP -A104 ; [.40F7.0020.0002] # YI SYLLABLE DIEX -A105 ; [.40F8.0020.0002] # YI SYLLABLE DIE -A106 ; [.40F9.0020.0002] # YI SYLLABLE DIEP -A107 ; [.40FA.0020.0002] # YI SYLLABLE DAT -A108 ; [.40FB.0020.0002] # YI SYLLABLE DAX -A109 ; [.40FC.0020.0002] # YI SYLLABLE DA -A10A ; [.40FD.0020.0002] # YI SYLLABLE DAP -A10B ; [.40FE.0020.0002] # YI SYLLABLE DUOX -A10C ; [.40FF.0020.0002] # YI SYLLABLE DUO -A10D ; [.4100.0020.0002] # YI SYLLABLE DOT -A10E ; [.4101.0020.0002] # YI SYLLABLE DOX -A10F ; [.4102.0020.0002] # YI SYLLABLE DO -A110 ; [.4103.0020.0002] # YI SYLLABLE DOP -A111 ; [.4104.0020.0002] # YI SYLLABLE DEX -A112 ; [.4105.0020.0002] # YI SYLLABLE DE -A113 ; [.4106.0020.0002] # YI SYLLABLE DEP -A114 ; [.4107.0020.0002] # YI SYLLABLE DUT -A115 ; [.4108.0020.0002] # YI SYLLABLE DUX -A116 ; [.4109.0020.0002] # YI SYLLABLE DU -A117 ; [.410A.0020.0002] # YI SYLLABLE DUP -A118 ; [.410B.0020.0002] # YI SYLLABLE DURX -A119 ; [.410C.0020.0002] # YI SYLLABLE DUR -A11A ; [.410D.0020.0002] # YI SYLLABLE TIT -A11B ; [.410E.0020.0002] # YI SYLLABLE TIX -A11C ; [.410F.0020.0002] # YI SYLLABLE TI -A11D ; [.4110.0020.0002] # YI SYLLABLE TIP -A11E ; [.4111.0020.0002] # YI SYLLABLE TIEX -A11F ; [.4112.0020.0002] # YI SYLLABLE TIE -A120 ; [.4113.0020.0002] # YI SYLLABLE TIEP -A121 ; [.4114.0020.0002] # YI SYLLABLE TAT -A122 ; [.4115.0020.0002] # YI SYLLABLE TAX -A123 ; [.4116.0020.0002] # YI SYLLABLE TA -A124 ; [.4117.0020.0002] # YI SYLLABLE TAP -A125 ; [.4118.0020.0002] # YI SYLLABLE TUOT -A126 ; [.4119.0020.0002] # YI SYLLABLE TUOX -A127 ; [.411A.0020.0002] # YI SYLLABLE TUO -A128 ; [.411B.0020.0002] # YI SYLLABLE TUOP -A129 ; [.411C.0020.0002] # YI SYLLABLE TOT -A12A ; [.411D.0020.0002] # YI SYLLABLE TOX -A12B ; [.411E.0020.0002] # YI SYLLABLE TO -A12C ; [.411F.0020.0002] # YI SYLLABLE TOP -A12D ; [.4120.0020.0002] # YI SYLLABLE TEX -A12E ; [.4121.0020.0002] # YI SYLLABLE TE -A12F ; [.4122.0020.0002] # YI SYLLABLE TEP -A130 ; [.4123.0020.0002] # YI SYLLABLE TUT -A131 ; [.4124.0020.0002] # YI SYLLABLE TUX -A132 ; [.4125.0020.0002] # YI SYLLABLE TU -A133 ; [.4126.0020.0002] # YI SYLLABLE TUP -A134 ; [.4127.0020.0002] # YI SYLLABLE TURX -A135 ; [.4128.0020.0002] # YI SYLLABLE TUR -A136 ; [.4129.0020.0002] # YI SYLLABLE DDIT -A137 ; [.412A.0020.0002] # YI SYLLABLE DDIX -A138 ; [.412B.0020.0002] # YI SYLLABLE DDI -A139 ; [.412C.0020.0002] # YI SYLLABLE DDIP -A13A ; [.412D.0020.0002] # YI SYLLABLE DDIEX -A13B ; [.412E.0020.0002] # YI SYLLABLE DDIE -A13C ; [.412F.0020.0002] # YI SYLLABLE DDIEP -A13D ; [.4130.0020.0002] # YI SYLLABLE DDAT -A13E ; [.4131.0020.0002] # YI SYLLABLE DDAX -A13F ; [.4132.0020.0002] # YI SYLLABLE DDA -A140 ; [.4133.0020.0002] # YI SYLLABLE DDAP -A141 ; [.4134.0020.0002] # YI SYLLABLE DDUOX -A142 ; [.4135.0020.0002] # YI SYLLABLE DDUO -A143 ; [.4136.0020.0002] # YI SYLLABLE DDUOP -A144 ; [.4137.0020.0002] # YI SYLLABLE DDOT -A145 ; [.4138.0020.0002] # YI SYLLABLE DDOX -A146 ; [.4139.0020.0002] # YI SYLLABLE DDO -A147 ; [.413A.0020.0002] # YI SYLLABLE DDOP -A148 ; [.413B.0020.0002] # YI SYLLABLE DDEX -A149 ; [.413C.0020.0002] # YI SYLLABLE DDE -A14A ; [.413D.0020.0002] # YI SYLLABLE DDEP -A14B ; [.413E.0020.0002] # YI SYLLABLE DDUT -A14C ; [.413F.0020.0002] # YI SYLLABLE DDUX -A14D ; [.4140.0020.0002] # YI SYLLABLE DDU -A14E ; [.4141.0020.0002] # YI SYLLABLE DDUP -A14F ; [.4142.0020.0002] # YI SYLLABLE DDURX -A150 ; [.4143.0020.0002] # YI SYLLABLE DDUR -A151 ; [.4144.0020.0002] # YI SYLLABLE NDIT -A152 ; [.4145.0020.0002] # YI SYLLABLE NDIX -A153 ; [.4146.0020.0002] # YI SYLLABLE NDI -A154 ; [.4147.0020.0002] # YI SYLLABLE NDIP -A155 ; [.4148.0020.0002] # YI SYLLABLE NDIEX -A156 ; [.4149.0020.0002] # YI SYLLABLE NDIE -A157 ; [.414A.0020.0002] # YI SYLLABLE NDAT -A158 ; [.414B.0020.0002] # YI SYLLABLE NDAX -A159 ; [.414C.0020.0002] # YI SYLLABLE NDA -A15A ; [.414D.0020.0002] # YI SYLLABLE NDAP -A15B ; [.414E.0020.0002] # YI SYLLABLE NDOT -A15C ; [.414F.0020.0002] # YI SYLLABLE NDOX -A15D ; [.4150.0020.0002] # YI SYLLABLE NDO -A15E ; [.4151.0020.0002] # YI SYLLABLE NDOP -A15F ; [.4152.0020.0002] # YI SYLLABLE NDEX -A160 ; [.4153.0020.0002] # YI SYLLABLE NDE -A161 ; [.4154.0020.0002] # YI SYLLABLE NDEP -A162 ; [.4155.0020.0002] # YI SYLLABLE NDUT -A163 ; [.4156.0020.0002] # YI SYLLABLE NDUX -A164 ; [.4157.0020.0002] # YI SYLLABLE NDU -A165 ; [.4158.0020.0002] # YI SYLLABLE NDUP -A166 ; [.4159.0020.0002] # YI SYLLABLE NDURX -A167 ; [.415A.0020.0002] # YI SYLLABLE NDUR -A168 ; [.415B.0020.0002] # YI SYLLABLE HNIT -A169 ; [.415C.0020.0002] # YI SYLLABLE HNIX -A16A ; [.415D.0020.0002] # YI SYLLABLE HNI -A16B ; [.415E.0020.0002] # YI SYLLABLE HNIP -A16C ; [.415F.0020.0002] # YI SYLLABLE HNIET -A16D ; [.4160.0020.0002] # YI SYLLABLE HNIEX -A16E ; [.4161.0020.0002] # YI SYLLABLE HNIE -A16F ; [.4162.0020.0002] # YI SYLLABLE HNIEP -A170 ; [.4163.0020.0002] # YI SYLLABLE HNAT -A171 ; [.4164.0020.0002] # YI SYLLABLE HNAX -A172 ; [.4165.0020.0002] # YI SYLLABLE HNA -A173 ; [.4166.0020.0002] # YI SYLLABLE HNAP -A174 ; [.4167.0020.0002] # YI SYLLABLE HNUOX -A175 ; [.4168.0020.0002] # YI SYLLABLE HNUO -A176 ; [.4169.0020.0002] # YI SYLLABLE HNOT -A177 ; [.416A.0020.0002] # YI SYLLABLE HNOX -A178 ; [.416B.0020.0002] # YI SYLLABLE HNOP -A179 ; [.416C.0020.0002] # YI SYLLABLE HNEX -A17A ; [.416D.0020.0002] # YI SYLLABLE HNE -A17B ; [.416E.0020.0002] # YI SYLLABLE HNEP -A17C ; [.416F.0020.0002] # YI SYLLABLE HNUT -A17D ; [.4170.0020.0002] # YI SYLLABLE NIT -A17E ; [.4171.0020.0002] # YI SYLLABLE NIX -A17F ; [.4172.0020.0002] # YI SYLLABLE NI -A180 ; [.4173.0020.0002] # YI SYLLABLE NIP -A181 ; [.4174.0020.0002] # YI SYLLABLE NIEX -A182 ; [.4175.0020.0002] # YI SYLLABLE NIE -A183 ; [.4176.0020.0002] # YI SYLLABLE NIEP -A184 ; [.4177.0020.0002] # YI SYLLABLE NAX -A185 ; [.4178.0020.0002] # YI SYLLABLE NA -A186 ; [.4179.0020.0002] # YI SYLLABLE NAP -A187 ; [.417A.0020.0002] # YI SYLLABLE NUOX -A188 ; [.417B.0020.0002] # YI SYLLABLE NUO -A189 ; [.417C.0020.0002] # YI SYLLABLE NUOP -A18A ; [.417D.0020.0002] # YI SYLLABLE NOT -A18B ; [.417E.0020.0002] # YI SYLLABLE NOX -A18C ; [.417F.0020.0002] # YI SYLLABLE NO -A18D ; [.4180.0020.0002] # YI SYLLABLE NOP -A18E ; [.4181.0020.0002] # YI SYLLABLE NEX -A18F ; [.4182.0020.0002] # YI SYLLABLE NE -A190 ; [.4183.0020.0002] # YI SYLLABLE NEP -A191 ; [.4184.0020.0002] # YI SYLLABLE NUT -A192 ; [.4185.0020.0002] # YI SYLLABLE NUX -A193 ; [.4186.0020.0002] # YI SYLLABLE NU -A194 ; [.4187.0020.0002] # YI SYLLABLE NUP -A195 ; [.4188.0020.0002] # YI SYLLABLE NURX -A196 ; [.4189.0020.0002] # YI SYLLABLE NUR -A197 ; [.418A.0020.0002] # YI SYLLABLE HLIT -A198 ; [.418B.0020.0002] # YI SYLLABLE HLIX -A199 ; [.418C.0020.0002] # YI SYLLABLE HLI -A19A ; [.418D.0020.0002] # YI SYLLABLE HLIP -A19B ; [.418E.0020.0002] # YI SYLLABLE HLIEX -A19C ; [.418F.0020.0002] # YI SYLLABLE HLIE -A19D ; [.4190.0020.0002] # YI SYLLABLE HLIEP -A19E ; [.4191.0020.0002] # YI SYLLABLE HLAT -A19F ; [.4192.0020.0002] # YI SYLLABLE HLAX -A1A0 ; [.4193.0020.0002] # YI SYLLABLE HLA -A1A1 ; [.4194.0020.0002] # YI SYLLABLE HLAP -A1A2 ; [.4195.0020.0002] # YI SYLLABLE HLUOX -A1A3 ; [.4196.0020.0002] # YI SYLLABLE HLUO -A1A4 ; [.4197.0020.0002] # YI SYLLABLE HLUOP -A1A5 ; [.4198.0020.0002] # YI SYLLABLE HLOX -A1A6 ; [.4199.0020.0002] # YI SYLLABLE HLO -A1A7 ; [.419A.0020.0002] # YI SYLLABLE HLOP -A1A8 ; [.419B.0020.0002] # YI SYLLABLE HLEX -A1A9 ; [.419C.0020.0002] # YI SYLLABLE HLE -A1AA ; [.419D.0020.0002] # YI SYLLABLE HLEP -A1AB ; [.419E.0020.0002] # YI SYLLABLE HLUT -A1AC ; [.419F.0020.0002] # YI SYLLABLE HLUX -A1AD ; [.41A0.0020.0002] # YI SYLLABLE HLU -A1AE ; [.41A1.0020.0002] # YI SYLLABLE HLUP -A1AF ; [.41A2.0020.0002] # YI SYLLABLE HLURX -A1B0 ; [.41A3.0020.0002] # YI SYLLABLE HLUR -A1B1 ; [.41A4.0020.0002] # YI SYLLABLE HLYT -A1B2 ; [.41A5.0020.0002] # YI SYLLABLE HLYX -A1B3 ; [.41A6.0020.0002] # YI SYLLABLE HLY -A1B4 ; [.41A7.0020.0002] # YI SYLLABLE HLYP -A1B5 ; [.41A8.0020.0002] # YI SYLLABLE HLYRX -A1B6 ; [.41A9.0020.0002] # YI SYLLABLE HLYR -A1B7 ; [.41AA.0020.0002] # YI SYLLABLE LIT -A1B8 ; [.41AB.0020.0002] # YI SYLLABLE LIX -A1B9 ; [.41AC.0020.0002] # YI SYLLABLE LI -A1BA ; [.41AD.0020.0002] # YI SYLLABLE LIP -A1BB ; [.41AE.0020.0002] # YI SYLLABLE LIET -A1BC ; [.41AF.0020.0002] # YI SYLLABLE LIEX -A1BD ; [.41B0.0020.0002] # YI SYLLABLE LIE -A1BE ; [.41B1.0020.0002] # YI SYLLABLE LIEP -A1BF ; [.41B2.0020.0002] # YI SYLLABLE LAT -A1C0 ; [.41B3.0020.0002] # YI SYLLABLE LAX -A1C1 ; [.41B4.0020.0002] # YI SYLLABLE LA -A1C2 ; [.41B5.0020.0002] # YI SYLLABLE LAP -A1C3 ; [.41B6.0020.0002] # YI SYLLABLE LUOT -A1C4 ; [.41B7.0020.0002] # YI SYLLABLE LUOX -A1C5 ; [.41B8.0020.0002] # YI SYLLABLE LUO -A1C6 ; [.41B9.0020.0002] # YI SYLLABLE LUOP -A1C7 ; [.41BA.0020.0002] # YI SYLLABLE LOT -A1C8 ; [.41BB.0020.0002] # YI SYLLABLE LOX -A1C9 ; [.41BC.0020.0002] # YI SYLLABLE LO -A1CA ; [.41BD.0020.0002] # YI SYLLABLE LOP -A1CB ; [.41BE.0020.0002] # YI SYLLABLE LEX -A1CC ; [.41BF.0020.0002] # YI SYLLABLE LE -A1CD ; [.41C0.0020.0002] # YI SYLLABLE LEP -A1CE ; [.41C1.0020.0002] # YI SYLLABLE LUT -A1CF ; [.41C2.0020.0002] # YI SYLLABLE LUX -A1D0 ; [.41C3.0020.0002] # YI SYLLABLE LU -A1D1 ; [.41C4.0020.0002] # YI SYLLABLE LUP -A1D2 ; [.41C5.0020.0002] # YI SYLLABLE LURX -A1D3 ; [.41C6.0020.0002] # YI SYLLABLE LUR -A1D4 ; [.41C7.0020.0002] # YI SYLLABLE LYT -A1D5 ; [.41C8.0020.0002] # YI SYLLABLE LYX -A1D6 ; [.41C9.0020.0002] # YI SYLLABLE LY -A1D7 ; [.41CA.0020.0002] # YI SYLLABLE LYP -A1D8 ; [.41CB.0020.0002] # YI SYLLABLE LYRX -A1D9 ; [.41CC.0020.0002] # YI SYLLABLE LYR -A1DA ; [.41CD.0020.0002] # YI SYLLABLE GIT -A1DB ; [.41CE.0020.0002] # YI SYLLABLE GIX -A1DC ; [.41CF.0020.0002] # YI SYLLABLE GI -A1DD ; [.41D0.0020.0002] # YI SYLLABLE GIP -A1DE ; [.41D1.0020.0002] # YI SYLLABLE GIET -A1DF ; [.41D2.0020.0002] # YI SYLLABLE GIEX -A1E0 ; [.41D3.0020.0002] # YI SYLLABLE GIE -A1E1 ; [.41D4.0020.0002] # YI SYLLABLE GIEP -A1E2 ; [.41D5.0020.0002] # YI SYLLABLE GAT -A1E3 ; [.41D6.0020.0002] # YI SYLLABLE GAX -A1E4 ; [.41D7.0020.0002] # YI SYLLABLE GA -A1E5 ; [.41D8.0020.0002] # YI SYLLABLE GAP -A1E6 ; [.41D9.0020.0002] # YI SYLLABLE GUOT -A1E7 ; [.41DA.0020.0002] # YI SYLLABLE GUOX -A1E8 ; [.41DB.0020.0002] # YI SYLLABLE GUO -A1E9 ; [.41DC.0020.0002] # YI SYLLABLE GUOP -A1EA ; [.41DD.0020.0002] # YI SYLLABLE GOT -A1EB ; [.41DE.0020.0002] # YI SYLLABLE GOX -A1EC ; [.41DF.0020.0002] # YI SYLLABLE GO -A1ED ; [.41E0.0020.0002] # YI SYLLABLE GOP -A1EE ; [.41E1.0020.0002] # YI SYLLABLE GET -A1EF ; [.41E2.0020.0002] # YI SYLLABLE GEX -A1F0 ; [.41E3.0020.0002] # YI SYLLABLE GE -A1F1 ; [.41E4.0020.0002] # YI SYLLABLE GEP -A1F2 ; [.41E5.0020.0002] # YI SYLLABLE GUT -A1F3 ; [.41E6.0020.0002] # YI SYLLABLE GUX -A1F4 ; [.41E7.0020.0002] # YI SYLLABLE GU -A1F5 ; [.41E8.0020.0002] # YI SYLLABLE GUP -A1F6 ; [.41E9.0020.0002] # YI SYLLABLE GURX -A1F7 ; [.41EA.0020.0002] # YI SYLLABLE GUR -A1F8 ; [.41EB.0020.0002] # YI SYLLABLE KIT -A1F9 ; [.41EC.0020.0002] # YI SYLLABLE KIX -A1FA ; [.41ED.0020.0002] # YI SYLLABLE KI -A1FB ; [.41EE.0020.0002] # YI SYLLABLE KIP -A1FC ; [.41EF.0020.0002] # YI SYLLABLE KIEX -A1FD ; [.41F0.0020.0002] # YI SYLLABLE KIE -A1FE ; [.41F1.0020.0002] # YI SYLLABLE KIEP -A1FF ; [.41F2.0020.0002] # YI SYLLABLE KAT -A200 ; [.41F3.0020.0002] # YI SYLLABLE KAX -A201 ; [.41F4.0020.0002] # YI SYLLABLE KA -A202 ; [.41F5.0020.0002] # YI SYLLABLE KAP -A203 ; [.41F6.0020.0002] # YI SYLLABLE KUOX -A204 ; [.41F7.0020.0002] # YI SYLLABLE KUO -A205 ; [.41F8.0020.0002] # YI SYLLABLE KUOP -A206 ; [.41F9.0020.0002] # YI SYLLABLE KOT -A207 ; [.41FA.0020.0002] # YI SYLLABLE KOX -A208 ; [.41FB.0020.0002] # YI SYLLABLE KO -A209 ; [.41FC.0020.0002] # YI SYLLABLE KOP -A20A ; [.41FD.0020.0002] # YI SYLLABLE KET -A20B ; [.41FE.0020.0002] # YI SYLLABLE KEX -A20C ; [.41FF.0020.0002] # YI SYLLABLE KE -A20D ; [.4200.0020.0002] # YI SYLLABLE KEP -A20E ; [.4201.0020.0002] # YI SYLLABLE KUT -A20F ; [.4202.0020.0002] # YI SYLLABLE KUX -A210 ; [.4203.0020.0002] # YI SYLLABLE KU -A211 ; [.4204.0020.0002] # YI SYLLABLE KUP -A212 ; [.4205.0020.0002] # YI SYLLABLE KURX -A213 ; [.4206.0020.0002] # YI SYLLABLE KUR -A214 ; [.4207.0020.0002] # YI SYLLABLE GGIT -A215 ; [.4208.0020.0002] # YI SYLLABLE GGIX -A216 ; [.4209.0020.0002] # YI SYLLABLE GGI -A217 ; [.420A.0020.0002] # YI SYLLABLE GGIEX -A218 ; [.420B.0020.0002] # YI SYLLABLE GGIE -A219 ; [.420C.0020.0002] # YI SYLLABLE GGIEP -A21A ; [.420D.0020.0002] # YI SYLLABLE GGAT -A21B ; [.420E.0020.0002] # YI SYLLABLE GGAX -A21C ; [.420F.0020.0002] # YI SYLLABLE GGA -A21D ; [.4210.0020.0002] # YI SYLLABLE GGAP -A21E ; [.4211.0020.0002] # YI SYLLABLE GGUOT -A21F ; [.4212.0020.0002] # YI SYLLABLE GGUOX -A220 ; [.4213.0020.0002] # YI SYLLABLE GGUO -A221 ; [.4214.0020.0002] # YI SYLLABLE GGUOP -A222 ; [.4215.0020.0002] # YI SYLLABLE GGOT -A223 ; [.4216.0020.0002] # YI SYLLABLE GGOX -A224 ; [.4217.0020.0002] # YI SYLLABLE GGO -A225 ; [.4218.0020.0002] # YI SYLLABLE GGOP -A226 ; [.4219.0020.0002] # YI SYLLABLE GGET -A227 ; [.421A.0020.0002] # YI SYLLABLE GGEX -A228 ; [.421B.0020.0002] # YI SYLLABLE GGE -A229 ; [.421C.0020.0002] # YI SYLLABLE GGEP -A22A ; [.421D.0020.0002] # YI SYLLABLE GGUT -A22B ; [.421E.0020.0002] # YI SYLLABLE GGUX -A22C ; [.421F.0020.0002] # YI SYLLABLE GGU -A22D ; [.4220.0020.0002] # YI SYLLABLE GGUP -A22E ; [.4221.0020.0002] # YI SYLLABLE GGURX -A22F ; [.4222.0020.0002] # YI SYLLABLE GGUR -A230 ; [.4223.0020.0002] # YI SYLLABLE MGIEX -A231 ; [.4224.0020.0002] # YI SYLLABLE MGIE -A232 ; [.4225.0020.0002] # YI SYLLABLE MGAT -A233 ; [.4226.0020.0002] # YI SYLLABLE MGAX -A234 ; [.4227.0020.0002] # YI SYLLABLE MGA -A235 ; [.4228.0020.0002] # YI SYLLABLE MGAP -A236 ; [.4229.0020.0002] # YI SYLLABLE MGUOX -A237 ; [.422A.0020.0002] # YI SYLLABLE MGUO -A238 ; [.422B.0020.0002] # YI SYLLABLE MGUOP -A239 ; [.422C.0020.0002] # YI SYLLABLE MGOT -A23A ; [.422D.0020.0002] # YI SYLLABLE MGOX -A23B ; [.422E.0020.0002] # YI SYLLABLE MGO -A23C ; [.422F.0020.0002] # YI SYLLABLE MGOP -A23D ; [.4230.0020.0002] # YI SYLLABLE MGEX -A23E ; [.4231.0020.0002] # YI SYLLABLE MGE -A23F ; [.4232.0020.0002] # YI SYLLABLE MGEP -A240 ; [.4233.0020.0002] # YI SYLLABLE MGUT -A241 ; [.4234.0020.0002] # YI SYLLABLE MGUX -A242 ; [.4235.0020.0002] # YI SYLLABLE MGU -A243 ; [.4236.0020.0002] # YI SYLLABLE MGUP -A244 ; [.4237.0020.0002] # YI SYLLABLE MGURX -A245 ; [.4238.0020.0002] # YI SYLLABLE MGUR -A246 ; [.4239.0020.0002] # YI SYLLABLE HXIT -A247 ; [.423A.0020.0002] # YI SYLLABLE HXIX -A248 ; [.423B.0020.0002] # YI SYLLABLE HXI -A249 ; [.423C.0020.0002] # YI SYLLABLE HXIP -A24A ; [.423D.0020.0002] # YI SYLLABLE HXIET -A24B ; [.423E.0020.0002] # YI SYLLABLE HXIEX -A24C ; [.423F.0020.0002] # YI SYLLABLE HXIE -A24D ; [.4240.0020.0002] # YI SYLLABLE HXIEP -A24E ; [.4241.0020.0002] # YI SYLLABLE HXAT -A24F ; [.4242.0020.0002] # YI SYLLABLE HXAX -A250 ; [.4243.0020.0002] # YI SYLLABLE HXA -A251 ; [.4244.0020.0002] # YI SYLLABLE HXAP -A252 ; [.4245.0020.0002] # YI SYLLABLE HXUOT -A253 ; [.4246.0020.0002] # YI SYLLABLE HXUOX -A254 ; [.4247.0020.0002] # YI SYLLABLE HXUO -A255 ; [.4248.0020.0002] # YI SYLLABLE HXUOP -A256 ; [.4249.0020.0002] # YI SYLLABLE HXOT -A257 ; [.424A.0020.0002] # YI SYLLABLE HXOX -A258 ; [.424B.0020.0002] # YI SYLLABLE HXO -A259 ; [.424C.0020.0002] # YI SYLLABLE HXOP -A25A ; [.424D.0020.0002] # YI SYLLABLE HXEX -A25B ; [.424E.0020.0002] # YI SYLLABLE HXE -A25C ; [.424F.0020.0002] # YI SYLLABLE HXEP -A25D ; [.4250.0020.0002] # YI SYLLABLE NGIEX -A25E ; [.4251.0020.0002] # YI SYLLABLE NGIE -A25F ; [.4252.0020.0002] # YI SYLLABLE NGIEP -A260 ; [.4253.0020.0002] # YI SYLLABLE NGAT -A261 ; [.4254.0020.0002] # YI SYLLABLE NGAX -A262 ; [.4255.0020.0002] # YI SYLLABLE NGA -A263 ; [.4256.0020.0002] # YI SYLLABLE NGAP -A264 ; [.4257.0020.0002] # YI SYLLABLE NGUOT -A265 ; [.4258.0020.0002] # YI SYLLABLE NGUOX -A266 ; [.4259.0020.0002] # YI SYLLABLE NGUO -A267 ; [.425A.0020.0002] # YI SYLLABLE NGOT -A268 ; [.425B.0020.0002] # YI SYLLABLE NGOX -A269 ; [.425C.0020.0002] # YI SYLLABLE NGO -A26A ; [.425D.0020.0002] # YI SYLLABLE NGOP -A26B ; [.425E.0020.0002] # YI SYLLABLE NGEX -A26C ; [.425F.0020.0002] # YI SYLLABLE NGE -A26D ; [.4260.0020.0002] # YI SYLLABLE NGEP -A26E ; [.4261.0020.0002] # YI SYLLABLE HIT -A26F ; [.4262.0020.0002] # YI SYLLABLE HIEX -A270 ; [.4263.0020.0002] # YI SYLLABLE HIE -A271 ; [.4264.0020.0002] # YI SYLLABLE HAT -A272 ; [.4265.0020.0002] # YI SYLLABLE HAX -A273 ; [.4266.0020.0002] # YI SYLLABLE HA -A274 ; [.4267.0020.0002] # YI SYLLABLE HAP -A275 ; [.4268.0020.0002] # YI SYLLABLE HUOT -A276 ; [.4269.0020.0002] # YI SYLLABLE HUOX -A277 ; [.426A.0020.0002] # YI SYLLABLE HUO -A278 ; [.426B.0020.0002] # YI SYLLABLE HUOP -A279 ; [.426C.0020.0002] # YI SYLLABLE HOT -A27A ; [.426D.0020.0002] # YI SYLLABLE HOX -A27B ; [.426E.0020.0002] # YI SYLLABLE HO -A27C ; [.426F.0020.0002] # YI SYLLABLE HOP -A27D ; [.4270.0020.0002] # YI SYLLABLE HEX -A27E ; [.4271.0020.0002] # YI SYLLABLE HE -A27F ; [.4272.0020.0002] # YI SYLLABLE HEP -A280 ; [.4273.0020.0002] # YI SYLLABLE WAT -A281 ; [.4274.0020.0002] # YI SYLLABLE WAX -A282 ; [.4275.0020.0002] # YI SYLLABLE WA -A283 ; [.4276.0020.0002] # YI SYLLABLE WAP -A284 ; [.4277.0020.0002] # YI SYLLABLE WUOX -A285 ; [.4278.0020.0002] # YI SYLLABLE WUO -A286 ; [.4279.0020.0002] # YI SYLLABLE WUOP -A287 ; [.427A.0020.0002] # YI SYLLABLE WOX -A288 ; [.427B.0020.0002] # YI SYLLABLE WO -A289 ; [.427C.0020.0002] # YI SYLLABLE WOP -A28A ; [.427D.0020.0002] # YI SYLLABLE WEX -A28B ; [.427E.0020.0002] # YI SYLLABLE WE -A28C ; [.427F.0020.0002] # YI SYLLABLE WEP -A28D ; [.4280.0020.0002] # YI SYLLABLE ZIT -A28E ; [.4281.0020.0002] # YI SYLLABLE ZIX -A28F ; [.4282.0020.0002] # YI SYLLABLE ZI -A290 ; [.4283.0020.0002] # YI SYLLABLE ZIP -A291 ; [.4284.0020.0002] # YI SYLLABLE ZIEX -A292 ; [.4285.0020.0002] # YI SYLLABLE ZIE -A293 ; [.4286.0020.0002] # YI SYLLABLE ZIEP -A294 ; [.4287.0020.0002] # YI SYLLABLE ZAT -A295 ; [.4288.0020.0002] # YI SYLLABLE ZAX -A296 ; [.4289.0020.0002] # YI SYLLABLE ZA -A297 ; [.428A.0020.0002] # YI SYLLABLE ZAP -A298 ; [.428B.0020.0002] # YI SYLLABLE ZUOX -A299 ; [.428C.0020.0002] # YI SYLLABLE ZUO -A29A ; [.428D.0020.0002] # YI SYLLABLE ZUOP -A29B ; [.428E.0020.0002] # YI SYLLABLE ZOT -A29C ; [.428F.0020.0002] # YI SYLLABLE ZOX -A29D ; [.4290.0020.0002] # YI SYLLABLE ZO -A29E ; [.4291.0020.0002] # YI SYLLABLE ZOP -A29F ; [.4292.0020.0002] # YI SYLLABLE ZEX -A2A0 ; [.4293.0020.0002] # YI SYLLABLE ZE -A2A1 ; [.4294.0020.0002] # YI SYLLABLE ZEP -A2A2 ; [.4295.0020.0002] # YI SYLLABLE ZUT -A2A3 ; [.4296.0020.0002] # YI SYLLABLE ZUX -A2A4 ; [.4297.0020.0002] # YI SYLLABLE ZU -A2A5 ; [.4298.0020.0002] # YI SYLLABLE ZUP -A2A6 ; [.4299.0020.0002] # YI SYLLABLE ZURX -A2A7 ; [.429A.0020.0002] # YI SYLLABLE ZUR -A2A8 ; [.429B.0020.0002] # YI SYLLABLE ZYT -A2A9 ; [.429C.0020.0002] # YI SYLLABLE ZYX -A2AA ; [.429D.0020.0002] # YI SYLLABLE ZY -A2AB ; [.429E.0020.0002] # YI SYLLABLE ZYP -A2AC ; [.429F.0020.0002] # YI SYLLABLE ZYRX -A2AD ; [.42A0.0020.0002] # YI SYLLABLE ZYR -A2AE ; [.42A1.0020.0002] # YI SYLLABLE CIT -A2AF ; [.42A2.0020.0002] # YI SYLLABLE CIX -A2B0 ; [.42A3.0020.0002] # YI SYLLABLE CI -A2B1 ; [.42A4.0020.0002] # YI SYLLABLE CIP -A2B2 ; [.42A5.0020.0002] # YI SYLLABLE CIET -A2B3 ; [.42A6.0020.0002] # YI SYLLABLE CIEX -A2B4 ; [.42A7.0020.0002] # YI SYLLABLE CIE -A2B5 ; [.42A8.0020.0002] # YI SYLLABLE CIEP -A2B6 ; [.42A9.0020.0002] # YI SYLLABLE CAT -A2B7 ; [.42AA.0020.0002] # YI SYLLABLE CAX -A2B8 ; [.42AB.0020.0002] # YI SYLLABLE CA -A2B9 ; [.42AC.0020.0002] # YI SYLLABLE CAP -A2BA ; [.42AD.0020.0002] # YI SYLLABLE CUOX -A2BB ; [.42AE.0020.0002] # YI SYLLABLE CUO -A2BC ; [.42AF.0020.0002] # YI SYLLABLE CUOP -A2BD ; [.42B0.0020.0002] # YI SYLLABLE COT -A2BE ; [.42B1.0020.0002] # YI SYLLABLE COX -A2BF ; [.42B2.0020.0002] # YI SYLLABLE CO -A2C0 ; [.42B3.0020.0002] # YI SYLLABLE COP -A2C1 ; [.42B4.0020.0002] # YI SYLLABLE CEX -A2C2 ; [.42B5.0020.0002] # YI SYLLABLE CE -A2C3 ; [.42B6.0020.0002] # YI SYLLABLE CEP -A2C4 ; [.42B7.0020.0002] # YI SYLLABLE CUT -A2C5 ; [.42B8.0020.0002] # YI SYLLABLE CUX -A2C6 ; [.42B9.0020.0002] # YI SYLLABLE CU -A2C7 ; [.42BA.0020.0002] # YI SYLLABLE CUP -A2C8 ; [.42BB.0020.0002] # YI SYLLABLE CURX -A2C9 ; [.42BC.0020.0002] # YI SYLLABLE CUR -A2CA ; [.42BD.0020.0002] # YI SYLLABLE CYT -A2CB ; [.42BE.0020.0002] # YI SYLLABLE CYX -A2CC ; [.42BF.0020.0002] # YI SYLLABLE CY -A2CD ; [.42C0.0020.0002] # YI SYLLABLE CYP -A2CE ; [.42C1.0020.0002] # YI SYLLABLE CYRX -A2CF ; [.42C2.0020.0002] # YI SYLLABLE CYR -A2D0 ; [.42C3.0020.0002] # YI SYLLABLE ZZIT -A2D1 ; [.42C4.0020.0002] # YI SYLLABLE ZZIX -A2D2 ; [.42C5.0020.0002] # YI SYLLABLE ZZI -A2D3 ; [.42C6.0020.0002] # YI SYLLABLE ZZIP -A2D4 ; [.42C7.0020.0002] # YI SYLLABLE ZZIET -A2D5 ; [.42C8.0020.0002] # YI SYLLABLE ZZIEX -A2D6 ; [.42C9.0020.0002] # YI SYLLABLE ZZIE -A2D7 ; [.42CA.0020.0002] # YI SYLLABLE ZZIEP -A2D8 ; [.42CB.0020.0002] # YI SYLLABLE ZZAT -A2D9 ; [.42CC.0020.0002] # YI SYLLABLE ZZAX -A2DA ; [.42CD.0020.0002] # YI SYLLABLE ZZA -A2DB ; [.42CE.0020.0002] # YI SYLLABLE ZZAP -A2DC ; [.42CF.0020.0002] # YI SYLLABLE ZZOX -A2DD ; [.42D0.0020.0002] # YI SYLLABLE ZZO -A2DE ; [.42D1.0020.0002] # YI SYLLABLE ZZOP -A2DF ; [.42D2.0020.0002] # YI SYLLABLE ZZEX -A2E0 ; [.42D3.0020.0002] # YI SYLLABLE ZZE -A2E1 ; [.42D4.0020.0002] # YI SYLLABLE ZZEP -A2E2 ; [.42D5.0020.0002] # YI SYLLABLE ZZUX -A2E3 ; [.42D6.0020.0002] # YI SYLLABLE ZZU -A2E4 ; [.42D7.0020.0002] # YI SYLLABLE ZZUP -A2E5 ; [.42D8.0020.0002] # YI SYLLABLE ZZURX -A2E6 ; [.42D9.0020.0002] # YI SYLLABLE ZZUR -A2E7 ; [.42DA.0020.0002] # YI SYLLABLE ZZYT -A2E8 ; [.42DB.0020.0002] # YI SYLLABLE ZZYX -A2E9 ; [.42DC.0020.0002] # YI SYLLABLE ZZY -A2EA ; [.42DD.0020.0002] # YI SYLLABLE ZZYP -A2EB ; [.42DE.0020.0002] # YI SYLLABLE ZZYRX -A2EC ; [.42DF.0020.0002] # YI SYLLABLE ZZYR -A2ED ; [.42E0.0020.0002] # YI SYLLABLE NZIT -A2EE ; [.42E1.0020.0002] # YI SYLLABLE NZIX -A2EF ; [.42E2.0020.0002] # YI SYLLABLE NZI -A2F0 ; [.42E3.0020.0002] # YI SYLLABLE NZIP -A2F1 ; [.42E4.0020.0002] # YI SYLLABLE NZIEX -A2F2 ; [.42E5.0020.0002] # YI SYLLABLE NZIE -A2F3 ; [.42E6.0020.0002] # YI SYLLABLE NZIEP -A2F4 ; [.42E7.0020.0002] # YI SYLLABLE NZAT -A2F5 ; [.42E8.0020.0002] # YI SYLLABLE NZAX -A2F6 ; [.42E9.0020.0002] # YI SYLLABLE NZA -A2F7 ; [.42EA.0020.0002] # YI SYLLABLE NZAP -A2F8 ; [.42EB.0020.0002] # YI SYLLABLE NZUOX -A2F9 ; [.42EC.0020.0002] # YI SYLLABLE NZUO -A2FA ; [.42ED.0020.0002] # YI SYLLABLE NZOX -A2FB ; [.42EE.0020.0002] # YI SYLLABLE NZOP -A2FC ; [.42EF.0020.0002] # YI SYLLABLE NZEX -A2FD ; [.42F0.0020.0002] # YI SYLLABLE NZE -A2FE ; [.42F1.0020.0002] # YI SYLLABLE NZUX -A2FF ; [.42F2.0020.0002] # YI SYLLABLE NZU -A300 ; [.42F3.0020.0002] # YI SYLLABLE NZUP -A301 ; [.42F4.0020.0002] # YI SYLLABLE NZURX -A302 ; [.42F5.0020.0002] # YI SYLLABLE NZUR -A303 ; [.42F6.0020.0002] # YI SYLLABLE NZYT -A304 ; [.42F7.0020.0002] # YI SYLLABLE NZYX -A305 ; [.42F8.0020.0002] # YI SYLLABLE NZY -A306 ; [.42F9.0020.0002] # YI SYLLABLE NZYP -A307 ; [.42FA.0020.0002] # YI SYLLABLE NZYRX -A308 ; [.42FB.0020.0002] # YI SYLLABLE NZYR -A309 ; [.42FC.0020.0002] # YI SYLLABLE SIT -A30A ; [.42FD.0020.0002] # YI SYLLABLE SIX -A30B ; [.42FE.0020.0002] # YI SYLLABLE SI -A30C ; [.42FF.0020.0002] # YI SYLLABLE SIP -A30D ; [.4300.0020.0002] # YI SYLLABLE SIEX -A30E ; [.4301.0020.0002] # YI SYLLABLE SIE -A30F ; [.4302.0020.0002] # YI SYLLABLE SIEP -A310 ; [.4303.0020.0002] # YI SYLLABLE SAT -A311 ; [.4304.0020.0002] # YI SYLLABLE SAX -A312 ; [.4305.0020.0002] # YI SYLLABLE SA -A313 ; [.4306.0020.0002] # YI SYLLABLE SAP -A314 ; [.4307.0020.0002] # YI SYLLABLE SUOX -A315 ; [.4308.0020.0002] # YI SYLLABLE SUO -A316 ; [.4309.0020.0002] # YI SYLLABLE SUOP -A317 ; [.430A.0020.0002] # YI SYLLABLE SOT -A318 ; [.430B.0020.0002] # YI SYLLABLE SOX -A319 ; [.430C.0020.0002] # YI SYLLABLE SO -A31A ; [.430D.0020.0002] # YI SYLLABLE SOP -A31B ; [.430E.0020.0002] # YI SYLLABLE SEX -A31C ; [.430F.0020.0002] # YI SYLLABLE SE -A31D ; [.4310.0020.0002] # YI SYLLABLE SEP -A31E ; [.4311.0020.0002] # YI SYLLABLE SUT -A31F ; [.4312.0020.0002] # YI SYLLABLE SUX -A320 ; [.4313.0020.0002] # YI SYLLABLE SU -A321 ; [.4314.0020.0002] # YI SYLLABLE SUP -A322 ; [.4315.0020.0002] # YI SYLLABLE SURX -A323 ; [.4316.0020.0002] # YI SYLLABLE SUR -A324 ; [.4317.0020.0002] # YI SYLLABLE SYT -A325 ; [.4318.0020.0002] # YI SYLLABLE SYX -A326 ; [.4319.0020.0002] # YI SYLLABLE SY -A327 ; [.431A.0020.0002] # YI SYLLABLE SYP -A328 ; [.431B.0020.0002] # YI SYLLABLE SYRX -A329 ; [.431C.0020.0002] # YI SYLLABLE SYR -A32A ; [.431D.0020.0002] # YI SYLLABLE SSIT -A32B ; [.431E.0020.0002] # YI SYLLABLE SSIX -A32C ; [.431F.0020.0002] # YI SYLLABLE SSI -A32D ; [.4320.0020.0002] # YI SYLLABLE SSIP -A32E ; [.4321.0020.0002] # YI SYLLABLE SSIEX -A32F ; [.4322.0020.0002] # YI SYLLABLE SSIE -A330 ; [.4323.0020.0002] # YI SYLLABLE SSIEP -A331 ; [.4324.0020.0002] # YI SYLLABLE SSAT -A332 ; [.4325.0020.0002] # YI SYLLABLE SSAX -A333 ; [.4326.0020.0002] # YI SYLLABLE SSA -A334 ; [.4327.0020.0002] # YI SYLLABLE SSAP -A335 ; [.4328.0020.0002] # YI SYLLABLE SSOT -A336 ; [.4329.0020.0002] # YI SYLLABLE SSOX -A337 ; [.432A.0020.0002] # YI SYLLABLE SSO -A338 ; [.432B.0020.0002] # YI SYLLABLE SSOP -A339 ; [.432C.0020.0002] # YI SYLLABLE SSEX -A33A ; [.432D.0020.0002] # YI SYLLABLE SSE -A33B ; [.432E.0020.0002] # YI SYLLABLE SSEP -A33C ; [.432F.0020.0002] # YI SYLLABLE SSUT -A33D ; [.4330.0020.0002] # YI SYLLABLE SSUX -A33E ; [.4331.0020.0002] # YI SYLLABLE SSU -A33F ; [.4332.0020.0002] # YI SYLLABLE SSUP -A340 ; [.4333.0020.0002] # YI SYLLABLE SSYT -A341 ; [.4334.0020.0002] # YI SYLLABLE SSYX -A342 ; [.4335.0020.0002] # YI SYLLABLE SSY -A343 ; [.4336.0020.0002] # YI SYLLABLE SSYP -A344 ; [.4337.0020.0002] # YI SYLLABLE SSYRX -A345 ; [.4338.0020.0002] # YI SYLLABLE SSYR -A346 ; [.4339.0020.0002] # YI SYLLABLE ZHAT -A347 ; [.433A.0020.0002] # YI SYLLABLE ZHAX -A348 ; [.433B.0020.0002] # YI SYLLABLE ZHA -A349 ; [.433C.0020.0002] # YI SYLLABLE ZHAP -A34A ; [.433D.0020.0002] # YI SYLLABLE ZHUOX -A34B ; [.433E.0020.0002] # YI SYLLABLE ZHUO -A34C ; [.433F.0020.0002] # YI SYLLABLE ZHUOP -A34D ; [.4340.0020.0002] # YI SYLLABLE ZHOT -A34E ; [.4341.0020.0002] # YI SYLLABLE ZHOX -A34F ; [.4342.0020.0002] # YI SYLLABLE ZHO -A350 ; [.4343.0020.0002] # YI SYLLABLE ZHOP -A351 ; [.4344.0020.0002] # YI SYLLABLE ZHET -A352 ; [.4345.0020.0002] # YI SYLLABLE ZHEX -A353 ; [.4346.0020.0002] # YI SYLLABLE ZHE -A354 ; [.4347.0020.0002] # YI SYLLABLE ZHEP -A355 ; [.4348.0020.0002] # YI SYLLABLE ZHUT -A356 ; [.4349.0020.0002] # YI SYLLABLE ZHUX -A357 ; [.434A.0020.0002] # YI SYLLABLE ZHU -A358 ; [.434B.0020.0002] # YI SYLLABLE ZHUP -A359 ; [.434C.0020.0002] # YI SYLLABLE ZHURX -A35A ; [.434D.0020.0002] # YI SYLLABLE ZHUR -A35B ; [.434E.0020.0002] # YI SYLLABLE ZHYT -A35C ; [.434F.0020.0002] # YI SYLLABLE ZHYX -A35D ; [.4350.0020.0002] # YI SYLLABLE ZHY -A35E ; [.4351.0020.0002] # YI SYLLABLE ZHYP -A35F ; [.4352.0020.0002] # YI SYLLABLE ZHYRX -A360 ; [.4353.0020.0002] # YI SYLLABLE ZHYR -A361 ; [.4354.0020.0002] # YI SYLLABLE CHAT -A362 ; [.4355.0020.0002] # YI SYLLABLE CHAX -A363 ; [.4356.0020.0002] # YI SYLLABLE CHA -A364 ; [.4357.0020.0002] # YI SYLLABLE CHAP -A365 ; [.4358.0020.0002] # YI SYLLABLE CHUOT -A366 ; [.4359.0020.0002] # YI SYLLABLE CHUOX -A367 ; [.435A.0020.0002] # YI SYLLABLE CHUO -A368 ; [.435B.0020.0002] # YI SYLLABLE CHUOP -A369 ; [.435C.0020.0002] # YI SYLLABLE CHOT -A36A ; [.435D.0020.0002] # YI SYLLABLE CHOX -A36B ; [.435E.0020.0002] # YI SYLLABLE CHO -A36C ; [.435F.0020.0002] # YI SYLLABLE CHOP -A36D ; [.4360.0020.0002] # YI SYLLABLE CHET -A36E ; [.4361.0020.0002] # YI SYLLABLE CHEX -A36F ; [.4362.0020.0002] # YI SYLLABLE CHE -A370 ; [.4363.0020.0002] # YI SYLLABLE CHEP -A371 ; [.4364.0020.0002] # YI SYLLABLE CHUX -A372 ; [.4365.0020.0002] # YI SYLLABLE CHU -A373 ; [.4366.0020.0002] # YI SYLLABLE CHUP -A374 ; [.4367.0020.0002] # YI SYLLABLE CHURX -A375 ; [.4368.0020.0002] # YI SYLLABLE CHUR -A376 ; [.4369.0020.0002] # YI SYLLABLE CHYT -A377 ; [.436A.0020.0002] # YI SYLLABLE CHYX -A378 ; [.436B.0020.0002] # YI SYLLABLE CHY -A379 ; [.436C.0020.0002] # YI SYLLABLE CHYP -A37A ; [.436D.0020.0002] # YI SYLLABLE CHYRX -A37B ; [.436E.0020.0002] # YI SYLLABLE CHYR -A37C ; [.436F.0020.0002] # YI SYLLABLE RRAX -A37D ; [.4370.0020.0002] # YI SYLLABLE RRA -A37E ; [.4371.0020.0002] # YI SYLLABLE RRUOX -A37F ; [.4372.0020.0002] # YI SYLLABLE RRUO -A380 ; [.4373.0020.0002] # YI SYLLABLE RROT -A381 ; [.4374.0020.0002] # YI SYLLABLE RROX -A382 ; [.4375.0020.0002] # YI SYLLABLE RRO -A383 ; [.4376.0020.0002] # YI SYLLABLE RROP -A384 ; [.4377.0020.0002] # YI SYLLABLE RRET -A385 ; [.4378.0020.0002] # YI SYLLABLE RREX -A386 ; [.4379.0020.0002] # YI SYLLABLE RRE -A387 ; [.437A.0020.0002] # YI SYLLABLE RREP -A388 ; [.437B.0020.0002] # YI SYLLABLE RRUT -A389 ; [.437C.0020.0002] # YI SYLLABLE RRUX -A38A ; [.437D.0020.0002] # YI SYLLABLE RRU -A38B ; [.437E.0020.0002] # YI SYLLABLE RRUP -A38C ; [.437F.0020.0002] # YI SYLLABLE RRURX -A38D ; [.4380.0020.0002] # YI SYLLABLE RRUR -A38E ; [.4381.0020.0002] # YI SYLLABLE RRYT -A38F ; [.4382.0020.0002] # YI SYLLABLE RRYX -A390 ; [.4383.0020.0002] # YI SYLLABLE RRY -A391 ; [.4384.0020.0002] # YI SYLLABLE RRYP -A392 ; [.4385.0020.0002] # YI SYLLABLE RRYRX -A393 ; [.4386.0020.0002] # YI SYLLABLE RRYR -A394 ; [.4387.0020.0002] # YI SYLLABLE NRAT -A395 ; [.4388.0020.0002] # YI SYLLABLE NRAX -A396 ; [.4389.0020.0002] # YI SYLLABLE NRA -A397 ; [.438A.0020.0002] # YI SYLLABLE NRAP -A398 ; [.438B.0020.0002] # YI SYLLABLE NROX -A399 ; [.438C.0020.0002] # YI SYLLABLE NRO -A39A ; [.438D.0020.0002] # YI SYLLABLE NROP -A39B ; [.438E.0020.0002] # YI SYLLABLE NRET -A39C ; [.438F.0020.0002] # YI SYLLABLE NREX -A39D ; [.4390.0020.0002] # YI SYLLABLE NRE -A39E ; [.4391.0020.0002] # YI SYLLABLE NREP -A39F ; [.4392.0020.0002] # YI SYLLABLE NRUT -A3A0 ; [.4393.0020.0002] # YI SYLLABLE NRUX -A3A1 ; [.4394.0020.0002] # YI SYLLABLE NRU -A3A2 ; [.4395.0020.0002] # YI SYLLABLE NRUP -A3A3 ; [.4396.0020.0002] # YI SYLLABLE NRURX -A3A4 ; [.4397.0020.0002] # YI SYLLABLE NRUR -A3A5 ; [.4398.0020.0002] # YI SYLLABLE NRYT -A3A6 ; [.4399.0020.0002] # YI SYLLABLE NRYX -A3A7 ; [.439A.0020.0002] # YI SYLLABLE NRY -A3A8 ; [.439B.0020.0002] # YI SYLLABLE NRYP -A3A9 ; [.439C.0020.0002] # YI SYLLABLE NRYRX -A3AA ; [.439D.0020.0002] # YI SYLLABLE NRYR -A3AB ; [.439E.0020.0002] # YI SYLLABLE SHAT -A3AC ; [.439F.0020.0002] # YI SYLLABLE SHAX -A3AD ; [.43A0.0020.0002] # YI SYLLABLE SHA -A3AE ; [.43A1.0020.0002] # YI SYLLABLE SHAP -A3AF ; [.43A2.0020.0002] # YI SYLLABLE SHUOX -A3B0 ; [.43A3.0020.0002] # YI SYLLABLE SHUO -A3B1 ; [.43A4.0020.0002] # YI SYLLABLE SHUOP -A3B2 ; [.43A5.0020.0002] # YI SYLLABLE SHOT -A3B3 ; [.43A6.0020.0002] # YI SYLLABLE SHOX -A3B4 ; [.43A7.0020.0002] # YI SYLLABLE SHO -A3B5 ; [.43A8.0020.0002] # YI SYLLABLE SHOP -A3B6 ; [.43A9.0020.0002] # YI SYLLABLE SHET -A3B7 ; [.43AA.0020.0002] # YI SYLLABLE SHEX -A3B8 ; [.43AB.0020.0002] # YI SYLLABLE SHE -A3B9 ; [.43AC.0020.0002] # YI SYLLABLE SHEP -A3BA ; [.43AD.0020.0002] # YI SYLLABLE SHUT -A3BB ; [.43AE.0020.0002] # YI SYLLABLE SHUX -A3BC ; [.43AF.0020.0002] # YI SYLLABLE SHU -A3BD ; [.43B0.0020.0002] # YI SYLLABLE SHUP -A3BE ; [.43B1.0020.0002] # YI SYLLABLE SHURX -A3BF ; [.43B2.0020.0002] # YI SYLLABLE SHUR -A3C0 ; [.43B3.0020.0002] # YI SYLLABLE SHYT -A3C1 ; [.43B4.0020.0002] # YI SYLLABLE SHYX -A3C2 ; [.43B5.0020.0002] # YI SYLLABLE SHY -A3C3 ; [.43B6.0020.0002] # YI SYLLABLE SHYP -A3C4 ; [.43B7.0020.0002] # YI SYLLABLE SHYRX -A3C5 ; [.43B8.0020.0002] # YI SYLLABLE SHYR -A3C6 ; [.43B9.0020.0002] # YI SYLLABLE RAT -A3C7 ; [.43BA.0020.0002] # YI SYLLABLE RAX -A3C8 ; [.43BB.0020.0002] # YI SYLLABLE RA -A3C9 ; [.43BC.0020.0002] # YI SYLLABLE RAP -A3CA ; [.43BD.0020.0002] # YI SYLLABLE RUOX -A3CB ; [.43BE.0020.0002] # YI SYLLABLE RUO -A3CC ; [.43BF.0020.0002] # YI SYLLABLE RUOP -A3CD ; [.43C0.0020.0002] # YI SYLLABLE ROT -A3CE ; [.43C1.0020.0002] # YI SYLLABLE ROX -A3CF ; [.43C2.0020.0002] # YI SYLLABLE RO -A3D0 ; [.43C3.0020.0002] # YI SYLLABLE ROP -A3D1 ; [.43C4.0020.0002] # YI SYLLABLE REX -A3D2 ; [.43C5.0020.0002] # YI SYLLABLE RE -A3D3 ; [.43C6.0020.0002] # YI SYLLABLE REP -A3D4 ; [.43C7.0020.0002] # YI SYLLABLE RUT -A3D5 ; [.43C8.0020.0002] # YI SYLLABLE RUX -A3D6 ; [.43C9.0020.0002] # YI SYLLABLE RU -A3D7 ; [.43CA.0020.0002] # YI SYLLABLE RUP -A3D8 ; [.43CB.0020.0002] # YI SYLLABLE RURX -A3D9 ; [.43CC.0020.0002] # YI SYLLABLE RUR -A3DA ; [.43CD.0020.0002] # YI SYLLABLE RYT -A3DB ; [.43CE.0020.0002] # YI SYLLABLE RYX -A3DC ; [.43CF.0020.0002] # YI SYLLABLE RY -A3DD ; [.43D0.0020.0002] # YI SYLLABLE RYP -A3DE ; [.43D1.0020.0002] # YI SYLLABLE RYRX -A3DF ; [.43D2.0020.0002] # YI SYLLABLE RYR -A3E0 ; [.43D3.0020.0002] # YI SYLLABLE JIT -A3E1 ; [.43D4.0020.0002] # YI SYLLABLE JIX -A3E2 ; [.43D5.0020.0002] # YI SYLLABLE JI -A3E3 ; [.43D6.0020.0002] # YI SYLLABLE JIP -A3E4 ; [.43D7.0020.0002] # YI SYLLABLE JIET -A3E5 ; [.43D8.0020.0002] # YI SYLLABLE JIEX -A3E6 ; [.43D9.0020.0002] # YI SYLLABLE JIE -A3E7 ; [.43DA.0020.0002] # YI SYLLABLE JIEP -A3E8 ; [.43DB.0020.0002] # YI SYLLABLE JUOT -A3E9 ; [.43DC.0020.0002] # YI SYLLABLE JUOX -A3EA ; [.43DD.0020.0002] # YI SYLLABLE JUO -A3EB ; [.43DE.0020.0002] # YI SYLLABLE JUOP -A3EC ; [.43DF.0020.0002] # YI SYLLABLE JOT -A3ED ; [.43E0.0020.0002] # YI SYLLABLE JOX -A3EE ; [.43E1.0020.0002] # YI SYLLABLE JO -A3EF ; [.43E2.0020.0002] # YI SYLLABLE JOP -A3F0 ; [.43E3.0020.0002] # YI SYLLABLE JUT -A3F1 ; [.43E4.0020.0002] # YI SYLLABLE JUX -A3F2 ; [.43E5.0020.0002] # YI SYLLABLE JU -A3F3 ; [.43E6.0020.0002] # YI SYLLABLE JUP -A3F4 ; [.43E7.0020.0002] # YI SYLLABLE JURX -A3F5 ; [.43E8.0020.0002] # YI SYLLABLE JUR -A3F6 ; [.43E9.0020.0002] # YI SYLLABLE JYT -A3F7 ; [.43EA.0020.0002] # YI SYLLABLE JYX -A3F8 ; [.43EB.0020.0002] # YI SYLLABLE JY -A3F9 ; [.43EC.0020.0002] # YI SYLLABLE JYP -A3FA ; [.43ED.0020.0002] # YI SYLLABLE JYRX -A3FB ; [.43EE.0020.0002] # YI SYLLABLE JYR -A3FC ; [.43EF.0020.0002] # YI SYLLABLE QIT -A3FD ; [.43F0.0020.0002] # YI SYLLABLE QIX -A3FE ; [.43F1.0020.0002] # YI SYLLABLE QI -A3FF ; [.43F2.0020.0002] # YI SYLLABLE QIP -A400 ; [.43F3.0020.0002] # YI SYLLABLE QIET -A401 ; [.43F4.0020.0002] # YI SYLLABLE QIEX -A402 ; [.43F5.0020.0002] # YI SYLLABLE QIE -A403 ; [.43F6.0020.0002] # YI SYLLABLE QIEP -A404 ; [.43F7.0020.0002] # YI SYLLABLE QUOT -A405 ; [.43F8.0020.0002] # YI SYLLABLE QUOX -A406 ; [.43F9.0020.0002] # YI SYLLABLE QUO -A407 ; [.43FA.0020.0002] # YI SYLLABLE QUOP -A408 ; [.43FB.0020.0002] # YI SYLLABLE QOT -A409 ; [.43FC.0020.0002] # YI SYLLABLE QOX -A40A ; [.43FD.0020.0002] # YI SYLLABLE QO -A40B ; [.43FE.0020.0002] # YI SYLLABLE QOP -A40C ; [.43FF.0020.0002] # YI SYLLABLE QUT -A40D ; [.4400.0020.0002] # YI SYLLABLE QUX -A40E ; [.4401.0020.0002] # YI SYLLABLE QU -A40F ; [.4402.0020.0002] # YI SYLLABLE QUP -A410 ; [.4403.0020.0002] # YI SYLLABLE QURX -A411 ; [.4404.0020.0002] # YI SYLLABLE QUR -A412 ; [.4405.0020.0002] # YI SYLLABLE QYT -A413 ; [.4406.0020.0002] # YI SYLLABLE QYX -A414 ; [.4407.0020.0002] # YI SYLLABLE QY -A415 ; [.4408.0020.0002] # YI SYLLABLE QYP -A416 ; [.4409.0020.0002] # YI SYLLABLE QYRX -A417 ; [.440A.0020.0002] # YI SYLLABLE QYR -A418 ; [.440B.0020.0002] # YI SYLLABLE JJIT -A419 ; [.440C.0020.0002] # YI SYLLABLE JJIX -A41A ; [.440D.0020.0002] # YI SYLLABLE JJI -A41B ; [.440E.0020.0002] # YI SYLLABLE JJIP -A41C ; [.440F.0020.0002] # YI SYLLABLE JJIET -A41D ; [.4410.0020.0002] # YI SYLLABLE JJIEX -A41E ; [.4411.0020.0002] # YI SYLLABLE JJIE -A41F ; [.4412.0020.0002] # YI SYLLABLE JJIEP -A420 ; [.4413.0020.0002] # YI SYLLABLE JJUOX -A421 ; [.4414.0020.0002] # YI SYLLABLE JJUO -A422 ; [.4415.0020.0002] # YI SYLLABLE JJUOP -A423 ; [.4416.0020.0002] # YI SYLLABLE JJOT -A424 ; [.4417.0020.0002] # YI SYLLABLE JJOX -A425 ; [.4418.0020.0002] # YI SYLLABLE JJO -A426 ; [.4419.0020.0002] # YI SYLLABLE JJOP -A427 ; [.441A.0020.0002] # YI SYLLABLE JJUT -A428 ; [.441B.0020.0002] # YI SYLLABLE JJUX -A429 ; [.441C.0020.0002] # YI SYLLABLE JJU -A42A ; [.441D.0020.0002] # YI SYLLABLE JJUP -A42B ; [.441E.0020.0002] # YI SYLLABLE JJURX -A42C ; [.441F.0020.0002] # YI SYLLABLE JJUR -A42D ; [.4420.0020.0002] # YI SYLLABLE JJYT -A42E ; [.4421.0020.0002] # YI SYLLABLE JJYX -A42F ; [.4422.0020.0002] # YI SYLLABLE JJY -A430 ; [.4423.0020.0002] # YI SYLLABLE JJYP -A431 ; [.4424.0020.0002] # YI SYLLABLE NJIT -A432 ; [.4425.0020.0002] # YI SYLLABLE NJIX -A433 ; [.4426.0020.0002] # YI SYLLABLE NJI -A434 ; [.4427.0020.0002] # YI SYLLABLE NJIP -A435 ; [.4428.0020.0002] # YI SYLLABLE NJIET -A436 ; [.4429.0020.0002] # YI SYLLABLE NJIEX -A437 ; [.442A.0020.0002] # YI SYLLABLE NJIE -A438 ; [.442B.0020.0002] # YI SYLLABLE NJIEP -A439 ; [.442C.0020.0002] # YI SYLLABLE NJUOX -A43A ; [.442D.0020.0002] # YI SYLLABLE NJUO -A43B ; [.442E.0020.0002] # YI SYLLABLE NJOT -A43C ; [.442F.0020.0002] # YI SYLLABLE NJOX -A43D ; [.4430.0020.0002] # YI SYLLABLE NJO -A43E ; [.4431.0020.0002] # YI SYLLABLE NJOP -A43F ; [.4432.0020.0002] # YI SYLLABLE NJUX -A440 ; [.4433.0020.0002] # YI SYLLABLE NJU -A441 ; [.4434.0020.0002] # YI SYLLABLE NJUP -A442 ; [.4435.0020.0002] # YI SYLLABLE NJURX -A443 ; [.4436.0020.0002] # YI SYLLABLE NJUR -A444 ; [.4437.0020.0002] # YI SYLLABLE NJYT -A445 ; [.4438.0020.0002] # YI SYLLABLE NJYX -A446 ; [.4439.0020.0002] # YI SYLLABLE NJY -A447 ; [.443A.0020.0002] # YI SYLLABLE NJYP -A448 ; [.443B.0020.0002] # YI SYLLABLE NJYRX -A449 ; [.443C.0020.0002] # YI SYLLABLE NJYR -A44A ; [.443D.0020.0002] # YI SYLLABLE NYIT -A44B ; [.443E.0020.0002] # YI SYLLABLE NYIX -A44C ; [.443F.0020.0002] # YI SYLLABLE NYI -A44D ; [.4440.0020.0002] # YI SYLLABLE NYIP -A44E ; [.4441.0020.0002] # YI SYLLABLE NYIET -A44F ; [.4442.0020.0002] # YI SYLLABLE NYIEX -A450 ; [.4443.0020.0002] # YI SYLLABLE NYIE -A451 ; [.4444.0020.0002] # YI SYLLABLE NYIEP -A452 ; [.4445.0020.0002] # YI SYLLABLE NYUOX -A453 ; [.4446.0020.0002] # YI SYLLABLE NYUO -A454 ; [.4447.0020.0002] # YI SYLLABLE NYUOP -A455 ; [.4448.0020.0002] # YI SYLLABLE NYOT -A456 ; [.4449.0020.0002] # YI SYLLABLE NYOX -A457 ; [.444A.0020.0002] # YI SYLLABLE NYO -A458 ; [.444B.0020.0002] # YI SYLLABLE NYOP -A459 ; [.444C.0020.0002] # YI SYLLABLE NYUT -A45A ; [.444D.0020.0002] # YI SYLLABLE NYUX -A45B ; [.444E.0020.0002] # YI SYLLABLE NYU -A45C ; [.444F.0020.0002] # YI SYLLABLE NYUP -A45D ; [.4450.0020.0002] # YI SYLLABLE XIT -A45E ; [.4451.0020.0002] # YI SYLLABLE XIX -A45F ; [.4452.0020.0002] # YI SYLLABLE XI -A460 ; [.4453.0020.0002] # YI SYLLABLE XIP -A461 ; [.4454.0020.0002] # YI SYLLABLE XIET -A462 ; [.4455.0020.0002] # YI SYLLABLE XIEX -A463 ; [.4456.0020.0002] # YI SYLLABLE XIE -A464 ; [.4457.0020.0002] # YI SYLLABLE XIEP -A465 ; [.4458.0020.0002] # YI SYLLABLE XUOX -A466 ; [.4459.0020.0002] # YI SYLLABLE XUO -A467 ; [.445A.0020.0002] # YI SYLLABLE XOT -A468 ; [.445B.0020.0002] # YI SYLLABLE XOX -A469 ; [.445C.0020.0002] # YI SYLLABLE XO -A46A ; [.445D.0020.0002] # YI SYLLABLE XOP -A46B ; [.445E.0020.0002] # YI SYLLABLE XYT -A46C ; [.445F.0020.0002] # YI SYLLABLE XYX -A46D ; [.4460.0020.0002] # YI SYLLABLE XY -A46E ; [.4461.0020.0002] # YI SYLLABLE XYP -A46F ; [.4462.0020.0002] # YI SYLLABLE XYRX -A470 ; [.4463.0020.0002] # YI SYLLABLE XYR -A471 ; [.4464.0020.0002] # YI SYLLABLE YIT -A472 ; [.4465.0020.0002] # YI SYLLABLE YIX -A473 ; [.4466.0020.0002] # YI SYLLABLE YI -A474 ; [.4467.0020.0002] # YI SYLLABLE YIP -A475 ; [.4468.0020.0002] # YI SYLLABLE YIET -A476 ; [.4469.0020.0002] # YI SYLLABLE YIEX -A477 ; [.446A.0020.0002] # YI SYLLABLE YIE -A478 ; [.446B.0020.0002] # YI SYLLABLE YIEP -A479 ; [.446C.0020.0002] # YI SYLLABLE YUOT -A47A ; [.446D.0020.0002] # YI SYLLABLE YUOX -A47B ; [.446E.0020.0002] # YI SYLLABLE YUO -A47C ; [.446F.0020.0002] # YI SYLLABLE YUOP -A47D ; [.4470.0020.0002] # YI SYLLABLE YOT -A47E ; [.4471.0020.0002] # YI SYLLABLE YOX -A47F ; [.4472.0020.0002] # YI SYLLABLE YO -A480 ; [.4473.0020.0002] # YI SYLLABLE YOP -A481 ; [.4474.0020.0002] # YI SYLLABLE YUT -A482 ; [.4475.0020.0002] # YI SYLLABLE YUX -A483 ; [.4476.0020.0002] # YI SYLLABLE YU -A484 ; [.4477.0020.0002] # YI SYLLABLE YUP -A485 ; [.4478.0020.0002] # YI SYLLABLE YURX -A486 ; [.4479.0020.0002] # YI SYLLABLE YUR -A487 ; [.447A.0020.0002] # YI SYLLABLE YYT -A488 ; [.447B.0020.0002] # YI SYLLABLE YYX -A489 ; [.447C.0020.0002] # YI SYLLABLE YY -A48A ; [.447D.0020.0002] # YI SYLLABLE YYP -A48B ; [.447E.0020.0002] # YI SYLLABLE YYRX -A48C ; [.447F.0020.0002] # YI SYLLABLE YYR -A4F8 ; [.4480.0020.0002] # LISU LETTER TONE MYA TI -A4F9 ; [.4481.0020.0002] # LISU LETTER TONE NA PO -A4FA ; [.4482.0020.0002] # LISU LETTER TONE MYA CYA -A4FB ; [.4483.0020.0002] # LISU LETTER TONE MYA BO -A4FD ; [.4484.0020.0002] # LISU LETTER TONE MYA JEU -A4FC ; [.4485.0020.0002] # LISU LETTER TONE MYA NA -A4D0 ; [.4486.0020.0002] # LISU LETTER BA -A4D1 ; [.4487.0020.0002] # LISU LETTER PA -A4D2 ; [.4488.0020.0002] # LISU LETTER PHA -A4D3 ; [.4489.0020.0002] # LISU LETTER DA -A4D4 ; [.448A.0020.0002] # LISU LETTER TA -A4D5 ; [.448B.0020.0002] # LISU LETTER THA -A4D6 ; [.448C.0020.0002] # LISU LETTER GA -A4D7 ; [.448D.0020.0002] # LISU LETTER KA -A4D8 ; [.448E.0020.0002] # LISU LETTER KHA -A4D9 ; [.448F.0020.0002] # LISU LETTER JA -A4DA ; [.4490.0020.0002] # LISU LETTER CA -A4DB ; [.4491.0020.0002] # LISU LETTER CHA -A4DC ; [.4492.0020.0002] # LISU LETTER DZA -A4DD ; [.4493.0020.0002] # LISU LETTER TSA -A4DE ; [.4494.0020.0002] # LISU LETTER TSHA -A4DF ; [.4495.0020.0002] # LISU LETTER MA -A4E0 ; [.4496.0020.0002] # LISU LETTER NA -A4E1 ; [.4497.0020.0002] # LISU LETTER LA -A4E2 ; [.4498.0020.0002] # LISU LETTER SA -A4E3 ; [.4499.0020.0002] # LISU LETTER ZHA -A4E4 ; [.449A.0020.0002] # LISU LETTER ZA -A4E5 ; [.449B.0020.0002] # LISU LETTER NGA -A4E6 ; [.449C.0020.0002] # LISU LETTER HA -A4E7 ; [.449D.0020.0002] # LISU LETTER XA -A4E8 ; [.449E.0020.0002] # LISU LETTER HHA -A4E9 ; [.449F.0020.0002] # LISU LETTER FA -A4EB ; [.44A0.0020.0002] # LISU LETTER SHA -A4ED ; [.44A1.0020.0002] # LISU LETTER GHA -A4EA ; [.44A2.0020.0002] # LISU LETTER WA -A4EC ; [.44A3.0020.0002] # LISU LETTER YA -A4EE ; [.44A4.0020.0002] # LISU LETTER A -A4EF ; [.44A5.0020.0002] # LISU LETTER AE -A4F0 ; [.44A6.0020.0002] # LISU LETTER E -A4F1 ; [.44A7.0020.0002] # LISU LETTER EU -A4F2 ; [.44A8.0020.0002] # LISU LETTER I -A4F3 ; [.44A9.0020.0002] # LISU LETTER O -A4F4 ; [.44AA.0020.0002] # LISU LETTER U -A4F5 ; [.44AB.0020.0002] # LISU LETTER UE -A4F6 ; [.44AC.0020.0002] # LISU LETTER UH -A4F7 ; [.44AD.0020.0002] # LISU LETTER OE -16F00 ; [.44AE.0020.0002] # MIAO LETTER PA -16F01 ; [.44AF.0020.0002] # MIAO LETTER BA -16F02 ; [.44B0.0020.0002] # MIAO LETTER YI PA -16F03 ; [.44B1.0020.0002] # MIAO LETTER PLA -16F04 ; [.44B2.0020.0002] # MIAO LETTER MA -16F06 ; [.44B2.0020.0004] # MIAO LETTER ARCHAIC MA -16F05 ; [.44B3.0020.0002] # MIAO LETTER MHA -16F07 ; [.44B4.0020.0002] # MIAO LETTER FA -16F08 ; [.44B5.0020.0002] # MIAO LETTER VA -16F09 ; [.44B6.0020.0002] # MIAO LETTER VFA -16F0A ; [.44B7.0020.0002] # MIAO LETTER TA -16F0B ; [.44B8.0020.0002] # MIAO LETTER DA -16F0C ; [.44B9.0020.0002] # MIAO LETTER YI TTA -16F0D ; [.44BA.0020.0002] # MIAO LETTER YI TA -16F0E ; [.44BB.0020.0002] # MIAO LETTER TTA -16F0F ; [.44BC.0020.0002] # MIAO LETTER DDA -16F10 ; [.44BD.0020.0002] # MIAO LETTER NA -16F13 ; [.44BD.0020.0004] # MIAO LETTER ARCHAIC NA -16F11 ; [.44BE.0020.0002] # MIAO LETTER NHA -16F12 ; [.44BF.0020.0002] # MIAO LETTER YI NNA -16F14 ; [.44C0.0020.0002] # MIAO LETTER NNA -16F15 ; [.44C1.0020.0002] # MIAO LETTER NNHA -16F16 ; [.44C2.0020.0002] # MIAO LETTER LA -16F17 ; [.44C3.0020.0002] # MIAO LETTER LYA -16F18 ; [.44C4.0020.0002] # MIAO LETTER LHA -16F19 ; [.44C5.0020.0002] # MIAO LETTER LHYA -16F1A ; [.44C6.0020.0002] # MIAO LETTER TLHA -16F1B ; [.44C7.0020.0002] # MIAO LETTER DLHA -16F1C ; [.44C8.0020.0002] # MIAO LETTER TLHYA -16F1D ; [.44C9.0020.0002] # MIAO LETTER DLHYA -16F1E ; [.44CA.0020.0002] # MIAO LETTER KA -16F1F ; [.44CB.0020.0002] # MIAO LETTER GA -16F20 ; [.44CC.0020.0002] # MIAO LETTER YI KA -16F21 ; [.44CD.0020.0002] # MIAO LETTER QA -16F22 ; [.44CE.0020.0002] # MIAO LETTER QGA -16F23 ; [.44CF.0020.0002] # MIAO LETTER NGA -16F25 ; [.44CF.0020.0004] # MIAO LETTER ARCHAIC NGA -16F24 ; [.44D0.0020.0002] # MIAO LETTER NGHA -16F26 ; [.44D1.0020.0002] # MIAO LETTER HA -16F27 ; [.44D2.0020.0002] # MIAO LETTER XA -16F28 ; [.44D3.0020.0002] # MIAO LETTER GHA -16F29 ; [.44D4.0020.0002] # MIAO LETTER GHHA -16F2A ; [.44D5.0020.0002] # MIAO LETTER TSSA -16F2B ; [.44D6.0020.0002] # MIAO LETTER DZZA -16F2C ; [.44D7.0020.0002] # MIAO LETTER NYA -16F2D ; [.44D8.0020.0002] # MIAO LETTER NYHA -16F2E ; [.44D9.0020.0002] # MIAO LETTER TSHA -16F2F ; [.44DA.0020.0002] # MIAO LETTER DZHA -16F30 ; [.44DB.0020.0002] # MIAO LETTER YI TSHA -16F31 ; [.44DC.0020.0002] # MIAO LETTER YI DZHA -16F32 ; [.44DD.0020.0002] # MIAO LETTER REFORMED TSHA -16F33 ; [.44DE.0020.0002] # MIAO LETTER SHA -16F34 ; [.44DF.0020.0002] # MIAO LETTER SSA -16F35 ; [.44E0.0020.0002] # MIAO LETTER ZHA -16F36 ; [.44E1.0020.0002] # MIAO LETTER ZSHA -16F37 ; [.44E2.0020.0002] # MIAO LETTER TSA -16F38 ; [.44E3.0020.0002] # MIAO LETTER DZA -16F39 ; [.44E4.0020.0002] # MIAO LETTER YI TSA -16F3A ; [.44E5.0020.0002] # MIAO LETTER SA -16F3B ; [.44E6.0020.0002] # MIAO LETTER ZA -16F3C ; [.44E7.0020.0002] # MIAO LETTER ZSA -16F3D ; [.44E8.0020.0002] # MIAO LETTER ZZA -16F3F ; [.44E8.0020.0004] # MIAO LETTER ARCHAIC ZZA -16F3E ; [.44E9.0020.0002] # MIAO LETTER ZZSA -16F40 ; [.44EA.0020.0002] # MIAO LETTER ZZYA -16F41 ; [.44EB.0020.0002] # MIAO LETTER ZZSYA -16F42 ; [.44EC.0020.0002] # MIAO LETTER WA -16F43 ; [.44ED.0020.0002] # MIAO LETTER AH -16F44 ; [.44EE.0020.0002] # MIAO LETTER HHA -16F50 ; [.44EF.0020.0002] # MIAO LETTER NASALIZATION -16F51 ; [.44F0.0020.0002] # MIAO SIGN ASPIRATION -16F52 ; [.44F1.0020.0002] # MIAO SIGN REFORMED VOICING -16F53 ; [.44F2.0020.0002] # MIAO SIGN REFORMED ASPIRATION -16F54 ; [.44F3.0020.0002] # MIAO VOWEL SIGN A -16F55 ; [.44F4.0020.0002] # MIAO VOWEL SIGN AA -16F56 ; [.44F5.0020.0002] # MIAO VOWEL SIGN AHH -16F57 ; [.44F6.0020.0002] # MIAO VOWEL SIGN AN -16F58 ; [.44F7.0020.0002] # MIAO VOWEL SIGN ANG -16F59 ; [.44F8.0020.0002] # MIAO VOWEL SIGN O -16F5A ; [.44F9.0020.0002] # MIAO VOWEL SIGN OO -16F5B ; [.44FA.0020.0002] # MIAO VOWEL SIGN WO -16F5C ; [.44FB.0020.0002] # MIAO VOWEL SIGN W -16F5D ; [.44FC.0020.0002] # MIAO VOWEL SIGN E -16F5E ; [.44FD.0020.0002] # MIAO VOWEL SIGN EN -16F5F ; [.44FE.0020.0002] # MIAO VOWEL SIGN ENG -16F60 ; [.44FF.0020.0002] # MIAO VOWEL SIGN OEY -16F61 ; [.4500.0020.0002] # MIAO VOWEL SIGN I -16F62 ; [.4501.0020.0002] # MIAO VOWEL SIGN IA -16F63 ; [.4502.0020.0002] # MIAO VOWEL SIGN IAN -16F64 ; [.4503.0020.0002] # MIAO VOWEL SIGN IANG -16F65 ; [.4504.0020.0002] # MIAO VOWEL SIGN IO -16F66 ; [.4505.0020.0002] # MIAO VOWEL SIGN IE -16F67 ; [.4506.0020.0002] # MIAO VOWEL SIGN II -16F68 ; [.4507.0020.0002] # MIAO VOWEL SIGN IU -16F69 ; [.4508.0020.0002] # MIAO VOWEL SIGN ING -16F6A ; [.4509.0020.0002] # MIAO VOWEL SIGN U -16F6B ; [.450A.0020.0002] # MIAO VOWEL SIGN UA -16F6C ; [.450B.0020.0002] # MIAO VOWEL SIGN UAN -16F6D ; [.450C.0020.0002] # MIAO VOWEL SIGN UANG -16F6E ; [.450D.0020.0002] # MIAO VOWEL SIGN UU -16F6F ; [.450E.0020.0002] # MIAO VOWEL SIGN UEI -16F70 ; [.450F.0020.0002] # MIAO VOWEL SIGN UNG -16F71 ; [.4510.0020.0002] # MIAO VOWEL SIGN Y -16F72 ; [.4511.0020.0002] # MIAO VOWEL SIGN YI -16F73 ; [.4512.0020.0002] # MIAO VOWEL SIGN AE -16F74 ; [.4513.0020.0002] # MIAO VOWEL SIGN AEE -16F75 ; [.4514.0020.0002] # MIAO VOWEL SIGN ERR -16F76 ; [.4515.0020.0002] # MIAO VOWEL SIGN ROUNDED ERR -16F77 ; [.4516.0020.0002] # MIAO VOWEL SIGN ER -16F78 ; [.4517.0020.0002] # MIAO VOWEL SIGN ROUNDED ER -16F79 ; [.4518.0020.0002] # MIAO VOWEL SIGN AI -16F7A ; [.4519.0020.0002] # MIAO VOWEL SIGN EI -16F7B ; [.451A.0020.0002] # MIAO VOWEL SIGN AU -16F7C ; [.451B.0020.0002] # MIAO VOWEL SIGN OU -16F7D ; [.451C.0020.0002] # MIAO VOWEL SIGN N -16F7E ; [.451D.0020.0002] # MIAO VOWEL SIGN NG -16F8F ; [.451E.0020.0002] # MIAO TONE RIGHT -16F90 ; [.451F.0020.0002] # MIAO TONE TOP RIGHT -16F91 ; [.4520.0020.0002] # MIAO TONE ABOVE -16F92 ; [.4521.0020.0002] # MIAO TONE BELOW -16F93 ; [.4522.0020.0002] # MIAO LETTER TONE-2 -16F94 ; [.4523.0020.0002] # MIAO LETTER TONE-3 -16F95 ; [.4524.0020.0002] # MIAO LETTER TONE-4 -16F96 ; [.4525.0020.0002] # MIAO LETTER TONE-5 -16F97 ; [.4526.0020.0002] # MIAO LETTER TONE-6 -16F98 ; [.4527.0020.0002] # MIAO LETTER TONE-7 -16F99 ; [.4528.0020.0002] # MIAO LETTER TONE-8 -16F9A ; [.4529.0020.0002] # MIAO LETTER REFORMED TONE-1 -16F9B ; [.452A.0020.0002] # MIAO LETTER REFORMED TONE-2 -16F9C ; [.452B.0020.0002] # MIAO LETTER REFORMED TONE-4 -16F9D ; [.452C.0020.0002] # MIAO LETTER REFORMED TONE-5 -16F9E ; [.452D.0020.0002] # MIAO LETTER REFORMED TONE-6 -16F9F ; [.452E.0020.0002] # MIAO LETTER REFORMED TONE-8 -118FF ; [.452F.0020.0002] # WARANG CITI OM -118C0 ; [.4530.0020.0002] # WARANG CITI SMALL LETTER NGAA -118A0 ; [.4530.0020.0008] # WARANG CITI CAPITAL LETTER NGAA -118C1 ; [.4531.0020.0002] # WARANG CITI SMALL LETTER A -118A1 ; [.4531.0020.0008] # WARANG CITI CAPITAL LETTER A -118C2 ; [.4532.0020.0002] # WARANG CITI SMALL LETTER WI -118A2 ; [.4532.0020.0008] # WARANG CITI CAPITAL LETTER WI -118C3 ; [.4533.0020.0002] # WARANG CITI SMALL LETTER YU -118A3 ; [.4533.0020.0008] # WARANG CITI CAPITAL LETTER YU -118C4 ; [.4534.0020.0002] # WARANG CITI SMALL LETTER YA -118A4 ; [.4534.0020.0008] # WARANG CITI CAPITAL LETTER YA -118C5 ; [.4535.0020.0002] # WARANG CITI SMALL LETTER YO -118A5 ; [.4535.0020.0008] # WARANG CITI CAPITAL LETTER YO -118C6 ; [.4536.0020.0002] # WARANG CITI SMALL LETTER II -118A6 ; [.4536.0020.0008] # WARANG CITI CAPITAL LETTER II -118C7 ; [.4537.0020.0002] # WARANG CITI SMALL LETTER UU -118A7 ; [.4537.0020.0008] # WARANG CITI CAPITAL LETTER UU -118C8 ; [.4538.0020.0002] # WARANG CITI SMALL LETTER E -118A8 ; [.4538.0020.0008] # WARANG CITI CAPITAL LETTER E -118C9 ; [.4539.0020.0002] # WARANG CITI SMALL LETTER O -118A9 ; [.4539.0020.0008] # WARANG CITI CAPITAL LETTER O -118CA ; [.453A.0020.0002] # WARANG CITI SMALL LETTER ANG -118AA ; [.453A.0020.0008] # WARANG CITI CAPITAL LETTER ANG -118CB ; [.453B.0020.0002] # WARANG CITI SMALL LETTER GA -118AB ; [.453B.0020.0008] # WARANG CITI CAPITAL LETTER GA -118CC ; [.453C.0020.0002] # WARANG CITI SMALL LETTER KO -118AC ; [.453C.0020.0008] # WARANG CITI CAPITAL LETTER KO -118CD ; [.453D.0020.0002] # WARANG CITI SMALL LETTER ENY -118AD ; [.453D.0020.0008] # WARANG CITI CAPITAL LETTER ENY -118CE ; [.453E.0020.0002] # WARANG CITI SMALL LETTER YUJ -118AE ; [.453E.0020.0008] # WARANG CITI CAPITAL LETTER YUJ -118CF ; [.453F.0020.0002] # WARANG CITI SMALL LETTER UC -118AF ; [.453F.0020.0008] # WARANG CITI CAPITAL LETTER UC -118D0 ; [.4540.0020.0002] # WARANG CITI SMALL LETTER ENN -118B0 ; [.4540.0020.0008] # WARANG CITI CAPITAL LETTER ENN -118D1 ; [.4541.0020.0002] # WARANG CITI SMALL LETTER ODD -118B1 ; [.4541.0020.0008] # WARANG CITI CAPITAL LETTER ODD -118D2 ; [.4542.0020.0002] # WARANG CITI SMALL LETTER TTE -118B2 ; [.4542.0020.0008] # WARANG CITI CAPITAL LETTER TTE -118D3 ; [.4543.0020.0002] # WARANG CITI SMALL LETTER NUNG -118B3 ; [.4543.0020.0008] # WARANG CITI CAPITAL LETTER NUNG -118D4 ; [.4544.0020.0002] # WARANG CITI SMALL LETTER DA -118B4 ; [.4544.0020.0008] # WARANG CITI CAPITAL LETTER DA -118D5 ; [.4545.0020.0002] # WARANG CITI SMALL LETTER AT -118B5 ; [.4545.0020.0008] # WARANG CITI CAPITAL LETTER AT -118D6 ; [.4546.0020.0002] # WARANG CITI SMALL LETTER AM -118B6 ; [.4546.0020.0008] # WARANG CITI CAPITAL LETTER AM -118D7 ; [.4547.0020.0002] # WARANG CITI SMALL LETTER BU -118B7 ; [.4547.0020.0008] # WARANG CITI CAPITAL LETTER BU -118D8 ; [.4548.0020.0002] # WARANG CITI SMALL LETTER PU -118B8 ; [.4548.0020.0008] # WARANG CITI CAPITAL LETTER PU -118D9 ; [.4549.0020.0002] # WARANG CITI SMALL LETTER HIYO -118B9 ; [.4549.0020.0008] # WARANG CITI CAPITAL LETTER HIYO -118DA ; [.454A.0020.0002] # WARANG CITI SMALL LETTER HOLO -118BA ; [.454A.0020.0008] # WARANG CITI CAPITAL LETTER HOLO -118DB ; [.454B.0020.0002] # WARANG CITI SMALL LETTER HORR -118BB ; [.454B.0020.0008] # WARANG CITI CAPITAL LETTER HORR -118DC ; [.454C.0020.0002] # WARANG CITI SMALL LETTER HAR -118BC ; [.454C.0020.0008] # WARANG CITI CAPITAL LETTER HAR -118DD ; [.454D.0020.0002] # WARANG CITI SMALL LETTER SSUU -118BD ; [.454D.0020.0008] # WARANG CITI CAPITAL LETTER SSUU -118DE ; [.454E.0020.0002] # WARANG CITI SMALL LETTER SII -118BE ; [.454E.0020.0008] # WARANG CITI CAPITAL LETTER SII -118DF ; [.454F.0020.0002] # WARANG CITI SMALL LETTER VIYO -118BF ; [.454F.0020.0008] # WARANG CITI CAPITAL LETTER VIYO -11AD5 ; [.4550.0020.0002] # PAU CIN HAU LETTER A -11AD6 ; [.4551.0020.0002] # PAU CIN HAU LETTER E -11AD7 ; [.4552.0020.0002] # PAU CIN HAU LETTER I -11AD8 ; [.4553.0020.0002] # PAU CIN HAU LETTER O -11AD9 ; [.4554.0020.0002] # PAU CIN HAU LETTER U -11ADA ; [.4555.0020.0002] # PAU CIN HAU LETTER UA -11ADB ; [.4556.0020.0002] # PAU CIN HAU LETTER IA -11AC0 ; [.4557.0020.0002] # PAU CIN HAU LETTER PA -11AC1 ; [.4558.0020.0002] # PAU CIN HAU LETTER KA -11AC2 ; [.4559.0020.0002] # PAU CIN HAU LETTER LA -11AC3 ; [.455A.0020.0002] # PAU CIN HAU LETTER MA -11AC4 ; [.455B.0020.0002] # PAU CIN HAU LETTER DA -11AC5 ; [.455C.0020.0002] # PAU CIN HAU LETTER ZA -11AC6 ; [.455D.0020.0002] # PAU CIN HAU LETTER VA -11AC7 ; [.455E.0020.0002] # PAU CIN HAU LETTER NGA -11AC8 ; [.455F.0020.0002] # PAU CIN HAU LETTER HA -11AC9 ; [.4560.0020.0002] # PAU CIN HAU LETTER GA -11ACA ; [.4561.0020.0002] # PAU CIN HAU LETTER KHA -11ACB ; [.4562.0020.0002] # PAU CIN HAU LETTER SA -11ACC ; [.4563.0020.0002] # PAU CIN HAU LETTER BA -11ACD ; [.4564.0020.0002] # PAU CIN HAU LETTER CA -11ACE ; [.4565.0020.0002] # PAU CIN HAU LETTER TA -11ACF ; [.4566.0020.0002] # PAU CIN HAU LETTER THA -11AD0 ; [.4567.0020.0002] # PAU CIN HAU LETTER NA -11AD1 ; [.4568.0020.0002] # PAU CIN HAU LETTER PHA -11AD2 ; [.4569.0020.0002] # PAU CIN HAU LETTER RA -11AD3 ; [.456A.0020.0002] # PAU CIN HAU LETTER FA -11AD4 ; [.456B.0020.0002] # PAU CIN HAU LETTER CHA -11ADC ; [.456C.0020.0002] # PAU CIN HAU LETTER FINAL P -11ADD ; [.456D.0020.0002] # PAU CIN HAU LETTER FINAL K -11ADF ; [.456E.0020.0002] # PAU CIN HAU LETTER FINAL M -11AE0 ; [.456F.0020.0002] # PAU CIN HAU LETTER FINAL N -11AE1 ; [.4570.0020.0002] # PAU CIN HAU LETTER FINAL L -11AE2 ; [.4571.0020.0002] # PAU CIN HAU LETTER FINAL W -11AE3 ; [.4572.0020.0002] # PAU CIN HAU LETTER FINAL NG -11ADE ; [.4573.0020.0002] # PAU CIN HAU LETTER FINAL T -11AE4 ; [.4574.0020.0002] # PAU CIN HAU LETTER FINAL Y -11AEF ; [.4575.0020.0002] # PAU CIN HAU MID-LEVEL TONE -11AF2 ; [.4576.0020.0002] # PAU CIN HAU MID-LEVEL TONE FINAL -11AF1 ; [.4577.0020.0002] # PAU CIN HAU MID-LEVEL TONE LONG FINAL -11AE6 ; [.4578.0020.0002] # PAU CIN HAU RISING TONE -11AE9 ; [.4579.0020.0002] # PAU CIN HAU RISING TONE FINAL -11AE5 ; [.457A.0020.0002] # PAU CIN HAU RISING TONE LONG -11AE8 ; [.457B.0020.0002] # PAU CIN HAU RISING TONE LONG FINAL -11AF4 ; [.457C.0020.0002] # PAU CIN HAU LOW-FALLING TONE -11AF7 ; [.457D.0020.0002] # PAU CIN HAU LOW-FALLING TONE FINAL -11AF3 ; [.457E.0020.0002] # PAU CIN HAU LOW-FALLING TONE LONG -11AF6 ; [.457F.0020.0002] # PAU CIN HAU LOW-FALLING TONE LONG FINAL -11AEC ; [.4580.0020.0002] # PAU CIN HAU SANDHI TONE -11AEE ; [.4581.0020.0002] # PAU CIN HAU SANDHI TONE FINAL -11AEB ; [.4582.0020.0002] # PAU CIN HAU SANDHI TONE LONG -11AED ; [.4583.0020.0002] # PAU CIN HAU SANDHI TONE LONG FINAL -11AF5 ; [.4584.0020.0002] # PAU CIN HAU GLOTTAL STOP -11AF8 ; [.4585.0020.0002] # PAU CIN HAU GLOTTAL STOP FINAL -11AE7 ; [.4586.0020.0002] # PAU CIN HAU SANDHI GLOTTAL STOP -11AEA ; [.4587.0020.0002] # PAU CIN HAU SANDHI GLOTTAL STOP FINAL -11AF0 ; [.4588.0020.0002] # PAU CIN HAU GLOTTAL STOP VARIANT -16B00 ; [.4589.0020.0002] # PAHAWH HMONG VOWEL KEEB -16B01 ; [.458A.0020.0002] # PAHAWH HMONG VOWEL KEEV -16B02 ; [.458B.0020.0002] # PAHAWH HMONG VOWEL KIB -16B03 ; [.458C.0020.0002] # PAHAWH HMONG VOWEL KIV -16B04 ; [.458D.0020.0002] # PAHAWH HMONG VOWEL KAUB -16B05 ; [.458E.0020.0002] # PAHAWH HMONG VOWEL KAUV -16B06 ; [.458F.0020.0002] # PAHAWH HMONG VOWEL KUB -16B07 ; [.4590.0020.0002] # PAHAWH HMONG VOWEL KUV -16B08 ; [.4591.0020.0002] # PAHAWH HMONG VOWEL KEB -16B09 ; [.4592.0020.0002] # PAHAWH HMONG VOWEL KEV -16B0A ; [.4593.0020.0002] # PAHAWH HMONG VOWEL KAIB -16B0B ; [.4594.0020.0002] # PAHAWH HMONG VOWEL KAIV -16B0C ; [.4595.0020.0002] # PAHAWH HMONG VOWEL KOOB -16B0D ; [.4596.0020.0002] # PAHAWH HMONG VOWEL KOOV -16B0E ; [.4597.0020.0002] # PAHAWH HMONG VOWEL KAWB -16B0F ; [.4598.0020.0002] # PAHAWH HMONG VOWEL KAWV -16B10 ; [.4599.0020.0002] # PAHAWH HMONG VOWEL KUAB -16B11 ; [.459A.0020.0002] # PAHAWH HMONG VOWEL KUAV -16B12 ; [.459B.0020.0002] # PAHAWH HMONG VOWEL KOB -16B13 ; [.459C.0020.0002] # PAHAWH HMONG VOWEL KOV -16B14 ; [.459D.0020.0002] # PAHAWH HMONG VOWEL KIAB -16B15 ; [.459E.0020.0002] # PAHAWH HMONG VOWEL KIAV -16B16 ; [.459F.0020.0002] # PAHAWH HMONG VOWEL KAB -16B17 ; [.45A0.0020.0002] # PAHAWH HMONG VOWEL KAV -16B18 ; [.45A1.0020.0002] # PAHAWH HMONG VOWEL KWB -16B19 ; [.45A2.0020.0002] # PAHAWH HMONG VOWEL KWV -16B1A ; [.45A3.0020.0002] # PAHAWH HMONG VOWEL KAAB -16B1B ; [.45A4.0020.0002] # PAHAWH HMONG VOWEL KAAV -16B1C ; [.45A5.0020.0002] # PAHAWH HMONG CONSONANT VAU -16B1D ; [.45A6.0020.0002] # PAHAWH HMONG CONSONANT NTSAU -16B1E ; [.45A7.0020.0002] # PAHAWH HMONG CONSONANT LAU -16B1F ; [.45A8.0020.0002] # PAHAWH HMONG CONSONANT HAU -16B20 ; [.45A9.0020.0002] # PAHAWH HMONG CONSONANT NLAU -16B21 ; [.45AA.0020.0002] # PAHAWH HMONG CONSONANT RAU -16B22 ; [.45AB.0020.0002] # PAHAWH HMONG CONSONANT NKAU -16B23 ; [.45AC.0020.0002] # PAHAWH HMONG CONSONANT QHAU -16B24 ; [.45AD.0020.0002] # PAHAWH HMONG CONSONANT YAU -16B25 ; [.45AE.0020.0002] # PAHAWH HMONG CONSONANT HLAU -16B26 ; [.45AF.0020.0002] # PAHAWH HMONG CONSONANT MAU -16B27 ; [.45B0.0020.0002] # PAHAWH HMONG CONSONANT CHAU -16B28 ; [.45B1.0020.0002] # PAHAWH HMONG CONSONANT NCHAU -16B29 ; [.45B2.0020.0002] # PAHAWH HMONG CONSONANT HNAU -16B2A ; [.45B3.0020.0002] # PAHAWH HMONG CONSONANT PLHAU -16B2B ; [.45B4.0020.0002] # PAHAWH HMONG CONSONANT NTHAU -16B2C ; [.45B5.0020.0002] # PAHAWH HMONG CONSONANT NAU -16B2D ; [.45B6.0020.0002] # PAHAWH HMONG CONSONANT AU -16B2E ; [.45B7.0020.0002] # PAHAWH HMONG CONSONANT XAU -16B2F ; [.45B8.0020.0002] # PAHAWH HMONG CONSONANT CAU -16B40 ; [.45B9.0020.0002] # PAHAWH HMONG SIGN VOS SEEV -16B41 ; [.45BA.0020.0002] # PAHAWH HMONG SIGN MEEJ SUAB -16B63 ; [.45BB.0020.0002] # PAHAWH HMONG SIGN VOS LUB -16B64 ; [.45BC.0020.0002] # PAHAWH HMONG SIGN XYOO -16B65 ; [.45BD.0020.0002] # PAHAWH HMONG SIGN HLI -16B66 ; [.45BE.0020.0002] # PAHAWH HMONG SIGN THIRD-STAGE HLI -16B67 ; [.45BF.0020.0002] # PAHAWH HMONG SIGN ZWJ THAJ -16B68 ; [.45C0.0020.0002] # PAHAWH HMONG SIGN HNUB -16B69 ; [.45C1.0020.0002] # PAHAWH HMONG SIGN NQIG -16B6A ; [.45C2.0020.0002] # PAHAWH HMONG SIGN XIAB -16B6B ; [.45C3.0020.0002] # PAHAWH HMONG SIGN NTUJ -16B6C ; [.45C4.0020.0002] # PAHAWH HMONG SIGN AV -16B6D ; [.45C5.0020.0002] # PAHAWH HMONG SIGN TXHEEJ CEEV -16B6E ; [.45C6.0020.0002] # PAHAWH HMONG SIGN MEEJ TSEEB -16B6F ; [.45C7.0020.0002] # PAHAWH HMONG SIGN TAU -16B70 ; [.45C8.0020.0002] # PAHAWH HMONG SIGN LOS -16B71 ; [.45C9.0020.0002] # PAHAWH HMONG SIGN MUS -16B72 ; [.45CA.0020.0002] # PAHAWH HMONG SIGN CIM HAIS LUS NTOG NTOG -16B73 ; [.45CB.0020.0002] # PAHAWH HMONG SIGN CIM CUAM TSHOOJ -16B74 ; [.45CC.0020.0002] # PAHAWH HMONG SIGN CIM TXWV -16B75 ; [.45CD.0020.0002] # PAHAWH HMONG SIGN CIM TXWV CHWV -16B76 ; [.45CE.0020.0002] # PAHAWH HMONG SIGN CIM PUB DAWB -16B77 ; [.45CF.0020.0002] # PAHAWH HMONG SIGN CIM NRES TOS -16B7D ; [.45D0.0020.0002] # PAHAWH HMONG CLAN SIGN TSHEEJ -16B7E ; [.45D1.0020.0002] # PAHAWH HMONG CLAN SIGN YEEG -16B7F ; [.45D2.0020.0002] # PAHAWH HMONG CLAN SIGN LIS -16B80 ; [.45D3.0020.0002] # PAHAWH HMONG CLAN SIGN LAUJ -16B81 ; [.45D4.0020.0002] # PAHAWH HMONG CLAN SIGN XYOOJ -16B82 ; [.45D5.0020.0002] # PAHAWH HMONG CLAN SIGN KOO -16B83 ; [.45D6.0020.0002] # PAHAWH HMONG CLAN SIGN HAWJ -16B84 ; [.45D7.0020.0002] # PAHAWH HMONG CLAN SIGN MUAS -16B85 ; [.45D8.0020.0002] # PAHAWH HMONG CLAN SIGN THOJ -16B86 ; [.45D9.0020.0002] # PAHAWH HMONG CLAN SIGN TSAB -16B87 ; [.45DA.0020.0002] # PAHAWH HMONG CLAN SIGN PHAB -16B88 ; [.45DB.0020.0002] # PAHAWH HMONG CLAN SIGN KHAB -16B89 ; [.45DC.0020.0002] # PAHAWH HMONG CLAN SIGN HAM -16B8A ; [.45DD.0020.0002] # PAHAWH HMONG CLAN SIGN VAJ -16B8B ; [.45DE.0020.0002] # PAHAWH HMONG CLAN SIGN FAJ -16B8C ; [.45DF.0020.0002] # PAHAWH HMONG CLAN SIGN YAJ -16B8D ; [.45E0.0020.0002] # PAHAWH HMONG CLAN SIGN TSWB -16B8E ; [.45E1.0020.0002] # PAHAWH HMONG CLAN SIGN KWM -16B8F ; [.45E2.0020.0002] # PAHAWH HMONG CLAN SIGN VWJ -10280 ; [.45E3.0020.0002] # LYCIAN LETTER A -10281 ; [.45E4.0020.0002] # LYCIAN LETTER E -10282 ; [.45E5.0020.0002] # LYCIAN LETTER B -10283 ; [.45E6.0020.0002] # LYCIAN LETTER BH -10284 ; [.45E7.0020.0002] # LYCIAN LETTER G -10285 ; [.45E8.0020.0002] # LYCIAN LETTER D -10286 ; [.45E9.0020.0002] # LYCIAN LETTER I -10287 ; [.45EA.0020.0002] # LYCIAN LETTER W -10288 ; [.45EB.0020.0002] # LYCIAN LETTER Z -10289 ; [.45EC.0020.0002] # LYCIAN LETTER TH -1028A ; [.45ED.0020.0002] # LYCIAN LETTER J -1028B ; [.45EE.0020.0002] # LYCIAN LETTER K -1028C ; [.45EF.0020.0002] # LYCIAN LETTER Q -1028D ; [.45F0.0020.0002] # LYCIAN LETTER L -1028E ; [.45F1.0020.0002] # LYCIAN LETTER M -1028F ; [.45F2.0020.0002] # LYCIAN LETTER N -10290 ; [.45F3.0020.0002] # LYCIAN LETTER MM -10291 ; [.45F4.0020.0002] # LYCIAN LETTER NN -10292 ; [.45F5.0020.0002] # LYCIAN LETTER U -10293 ; [.45F6.0020.0002] # LYCIAN LETTER P -10294 ; [.45F7.0020.0002] # LYCIAN LETTER KK -10295 ; [.45F8.0020.0002] # LYCIAN LETTER R -10296 ; [.45F9.0020.0002] # LYCIAN LETTER S -10297 ; [.45FA.0020.0002] # LYCIAN LETTER T -10298 ; [.45FB.0020.0002] # LYCIAN LETTER TT -10299 ; [.45FC.0020.0002] # LYCIAN LETTER AN -1029A ; [.45FD.0020.0002] # LYCIAN LETTER EN -1029B ; [.45FE.0020.0002] # LYCIAN LETTER H -1029C ; [.45FF.0020.0002] # LYCIAN LETTER X -102A0 ; [.4600.0020.0002] # CARIAN LETTER A -102A1 ; [.4601.0020.0002] # CARIAN LETTER P2 -102A2 ; [.4602.0020.0002] # CARIAN LETTER D -102A3 ; [.4603.0020.0002] # CARIAN LETTER L -102A4 ; [.4604.0020.0002] # CARIAN LETTER UUU -102A5 ; [.4605.0020.0002] # CARIAN LETTER R -102A6 ; [.4606.0020.0002] # CARIAN LETTER LD -102A7 ; [.4607.0020.0002] # CARIAN LETTER A2 -102A8 ; [.4608.0020.0002] # CARIAN LETTER Q -102A9 ; [.4609.0020.0002] # CARIAN LETTER B -102AA ; [.460A.0020.0002] # CARIAN LETTER M -102AB ; [.460B.0020.0002] # CARIAN LETTER O -102AC ; [.460C.0020.0002] # CARIAN LETTER D2 -102AD ; [.460D.0020.0002] # CARIAN LETTER T -102AE ; [.460E.0020.0002] # CARIAN LETTER SH -102AF ; [.460F.0020.0002] # CARIAN LETTER SH2 -102B0 ; [.4610.0020.0002] # CARIAN LETTER S -102B1 ; [.4611.0020.0002] # CARIAN LETTER C-18 -102B2 ; [.4612.0020.0002] # CARIAN LETTER U -102B3 ; [.4613.0020.0002] # CARIAN LETTER NN -102B4 ; [.4614.0020.0002] # CARIAN LETTER X -102B5 ; [.4615.0020.0002] # CARIAN LETTER N -102B6 ; [.4616.0020.0002] # CARIAN LETTER TT2 -102B7 ; [.4617.0020.0002] # CARIAN LETTER P -102B8 ; [.4618.0020.0002] # CARIAN LETTER SS -102B9 ; [.4619.0020.0002] # CARIAN LETTER I -102BA ; [.461A.0020.0002] # CARIAN LETTER E -102BB ; [.461B.0020.0002] # CARIAN LETTER UUUU -102BC ; [.461C.0020.0002] # CARIAN LETTER K -102BD ; [.461D.0020.0002] # CARIAN LETTER K2 -102BE ; [.461E.0020.0002] # CARIAN LETTER ND -102BF ; [.461F.0020.0002] # CARIAN LETTER UU -102C0 ; [.4620.0020.0002] # CARIAN LETTER G -102C1 ; [.4621.0020.0002] # CARIAN LETTER G2 -102C2 ; [.4622.0020.0002] # CARIAN LETTER ST -102C3 ; [.4623.0020.0002] # CARIAN LETTER ST2 -102C4 ; [.4624.0020.0002] # CARIAN LETTER NG -102C5 ; [.4625.0020.0002] # CARIAN LETTER II -102C6 ; [.4626.0020.0002] # CARIAN LETTER C-39 -102C7 ; [.4627.0020.0002] # CARIAN LETTER TT -102C8 ; [.4628.0020.0002] # CARIAN LETTER UUU2 -102C9 ; [.4629.0020.0002] # CARIAN LETTER RR -102CA ; [.462A.0020.0002] # CARIAN LETTER MB -102CB ; [.462B.0020.0002] # CARIAN LETTER MB2 -102CC ; [.462C.0020.0002] # CARIAN LETTER MB3 -102CD ; [.462D.0020.0002] # CARIAN LETTER MB4 -102CE ; [.462E.0020.0002] # CARIAN LETTER LD2 -102CF ; [.462F.0020.0002] # CARIAN LETTER E2 -102D0 ; [.4630.0020.0002] # CARIAN LETTER UUU3 -10920 ; [.4631.0020.0002] # LYDIAN LETTER A -10921 ; [.4632.0020.0002] # LYDIAN LETTER B -10922 ; [.4633.0020.0002] # LYDIAN LETTER G -10923 ; [.4634.0020.0002] # LYDIAN LETTER D -10924 ; [.4635.0020.0002] # LYDIAN LETTER E -10925 ; [.4636.0020.0002] # LYDIAN LETTER V -10926 ; [.4637.0020.0002] # LYDIAN LETTER I -10927 ; [.4638.0020.0002] # LYDIAN LETTER Y -10928 ; [.4639.0020.0002] # LYDIAN LETTER K -10929 ; [.463A.0020.0002] # LYDIAN LETTER L -1092A ; [.463B.0020.0002] # LYDIAN LETTER M -1092B ; [.463C.0020.0002] # LYDIAN LETTER N -1092C ; [.463D.0020.0002] # LYDIAN LETTER O -1092D ; [.463E.0020.0002] # LYDIAN LETTER R -1092E ; [.463F.0020.0002] # LYDIAN LETTER SS -1092F ; [.4640.0020.0002] # LYDIAN LETTER T -10930 ; [.4641.0020.0002] # LYDIAN LETTER U -10931 ; [.4642.0020.0002] # LYDIAN LETTER F -10932 ; [.4643.0020.0002] # LYDIAN LETTER Q -10933 ; [.4644.0020.0002] # LYDIAN LETTER S -10934 ; [.4645.0020.0002] # LYDIAN LETTER TT -10935 ; [.4646.0020.0002] # LYDIAN LETTER AN -10936 ; [.4647.0020.0002] # LYDIAN LETTER EN -10937 ; [.4648.0020.0002] # LYDIAN LETTER LY -10938 ; [.4649.0020.0002] # LYDIAN LETTER NN -10939 ; [.464A.0020.0002] # LYDIAN LETTER C -10300 ; [.464B.0020.0002] # OLD ITALIC LETTER A -10301 ; [.464C.0020.0002] # OLD ITALIC LETTER BE -10302 ; [.464D.0020.0002] # OLD ITALIC LETTER KE -10303 ; [.464E.0020.0002] # OLD ITALIC LETTER DE -10304 ; [.464F.0020.0002] # OLD ITALIC LETTER E -10305 ; [.4650.0020.0002] # OLD ITALIC LETTER VE -10306 ; [.4651.0020.0002] # OLD ITALIC LETTER ZE -10307 ; [.4652.0020.0002] # OLD ITALIC LETTER HE -10308 ; [.4653.0020.0002] # OLD ITALIC LETTER THE -10309 ; [.4654.0020.0002] # OLD ITALIC LETTER I -1030A ; [.4655.0020.0002] # OLD ITALIC LETTER KA -1030B ; [.4656.0020.0002] # OLD ITALIC LETTER EL -1030C ; [.4657.0020.0002] # OLD ITALIC LETTER EM -1030D ; [.4658.0020.0002] # OLD ITALIC LETTER EN -1030E ; [.4659.0020.0002] # OLD ITALIC LETTER ESH -1031F ; [.465A.0020.0002] # OLD ITALIC LETTER ESS -1030F ; [.465B.0020.0002] # OLD ITALIC LETTER O -10310 ; [.465C.0020.0002] # OLD ITALIC LETTER PE -10311 ; [.465D.0020.0002] # OLD ITALIC LETTER SHE -10312 ; [.465E.0020.0002] # OLD ITALIC LETTER KU -10313 ; [.465F.0020.0002] # OLD ITALIC LETTER ER -10314 ; [.4660.0020.0002] # OLD ITALIC LETTER ES -10315 ; [.4661.0020.0002] # OLD ITALIC LETTER TE -10316 ; [.4662.0020.0002] # OLD ITALIC LETTER U -10317 ; [.4663.0020.0002] # OLD ITALIC LETTER EKS -10318 ; [.4664.0020.0002] # OLD ITALIC LETTER PHE -10319 ; [.4665.0020.0002] # OLD ITALIC LETTER KHE -1031A ; [.4666.0020.0002] # OLD ITALIC LETTER EF -1031B ; [.4667.0020.0002] # OLD ITALIC LETTER ERS -1031C ; [.4668.0020.0002] # OLD ITALIC LETTER CHE -1031D ; [.4669.0020.0002] # OLD ITALIC LETTER II -1031E ; [.466A.0020.0002] # OLD ITALIC LETTER UU -1032D ; [.466B.0020.0002] # OLD ITALIC LETTER YE -1032E ; [.466C.0020.0002] # OLD ITALIC LETTER NORTHERN TSE -1032F ; [.466D.0020.0002] # OLD ITALIC LETTER SOUTHERN TSE -10330 ; [.466E.0020.0002] # GOTHIC LETTER AHSA -10331 ; [.466F.0020.0002] # GOTHIC LETTER BAIRKAN -10332 ; [.4670.0020.0002] # GOTHIC LETTER GIBA -10333 ; [.4671.0020.0002] # GOTHIC LETTER DAGS -10334 ; [.4672.0020.0002] # GOTHIC LETTER AIHVUS -10335 ; [.4673.0020.0002] # GOTHIC LETTER QAIRTHRA -10336 ; [.4674.0020.0002] # GOTHIC LETTER IUJA -10337 ; [.4675.0020.0002] # GOTHIC LETTER HAGL -10338 ; [.4676.0020.0002] # GOTHIC LETTER THIUTH -10339 ; [.4677.0020.0002] # GOTHIC LETTER EIS -1033A ; [.4678.0020.0002] # GOTHIC LETTER KUSMA -1033B ; [.4679.0020.0002] # GOTHIC LETTER LAGUS -1033C ; [.467A.0020.0002] # GOTHIC LETTER MANNA -1033D ; [.467B.0020.0002] # GOTHIC LETTER NAUTHS -1033E ; [.467C.0020.0002] # GOTHIC LETTER JER -1033F ; [.467D.0020.0002] # GOTHIC LETTER URUS -10340 ; [.467E.0020.0002] # GOTHIC LETTER PAIRTHRA -10341 ; [.467F.0020.0002] # GOTHIC LETTER NINETY -10342 ; [.4680.0020.0002] # GOTHIC LETTER RAIDA -10343 ; [.4681.0020.0002] # GOTHIC LETTER SAUIL -10344 ; [.4682.0020.0002] # GOTHIC LETTER TEIWS -10345 ; [.4683.0020.0002] # GOTHIC LETTER WINJA -10346 ; [.4684.0020.0002] # GOTHIC LETTER FAIHU -10347 ; [.4685.0020.0002] # GOTHIC LETTER IGGWS -10348 ; [.4686.0020.0002] # GOTHIC LETTER HWAIR -10349 ; [.4687.0020.0002] # GOTHIC LETTER OTHAL -1034A ; [.4688.0020.0002] # GOTHIC LETTER NINE HUNDRED -10428 ; [.4689.0020.0002] # DESERET SMALL LETTER LONG I -10400 ; [.4689.0020.0008] # DESERET CAPITAL LETTER LONG I -10429 ; [.468A.0020.0002] # DESERET SMALL LETTER LONG E -10401 ; [.468A.0020.0008] # DESERET CAPITAL LETTER LONG E -1042A ; [.468B.0020.0002] # DESERET SMALL LETTER LONG A -10402 ; [.468B.0020.0008] # DESERET CAPITAL LETTER LONG A -1042B ; [.468C.0020.0002] # DESERET SMALL LETTER LONG AH -10403 ; [.468C.0020.0008] # DESERET CAPITAL LETTER LONG AH -1042C ; [.468D.0020.0002] # DESERET SMALL LETTER LONG O -10404 ; [.468D.0020.0008] # DESERET CAPITAL LETTER LONG O -1042D ; [.468E.0020.0002] # DESERET SMALL LETTER LONG OO -10405 ; [.468E.0020.0008] # DESERET CAPITAL LETTER LONG OO -1042E ; [.468F.0020.0002] # DESERET SMALL LETTER SHORT I -10406 ; [.468F.0020.0008] # DESERET CAPITAL LETTER SHORT I -1042F ; [.4690.0020.0002] # DESERET SMALL LETTER SHORT E -10407 ; [.4690.0020.0008] # DESERET CAPITAL LETTER SHORT E -10430 ; [.4691.0020.0002] # DESERET SMALL LETTER SHORT A -10408 ; [.4691.0020.0008] # DESERET CAPITAL LETTER SHORT A -10431 ; [.4692.0020.0002] # DESERET SMALL LETTER SHORT AH -10409 ; [.4692.0020.0008] # DESERET CAPITAL LETTER SHORT AH -10432 ; [.4693.0020.0002] # DESERET SMALL LETTER SHORT O -1040A ; [.4693.0020.0008] # DESERET CAPITAL LETTER SHORT O -10433 ; [.4694.0020.0002] # DESERET SMALL LETTER SHORT OO -1040B ; [.4694.0020.0008] # DESERET CAPITAL LETTER SHORT OO -10434 ; [.4695.0020.0002] # DESERET SMALL LETTER AY -1040C ; [.4695.0020.0008] # DESERET CAPITAL LETTER AY -10435 ; [.4696.0020.0002] # DESERET SMALL LETTER OW -1040D ; [.4696.0020.0008] # DESERET CAPITAL LETTER OW -10436 ; [.4697.0020.0002] # DESERET SMALL LETTER WU -1040E ; [.4697.0020.0008] # DESERET CAPITAL LETTER WU -10437 ; [.4698.0020.0002] # DESERET SMALL LETTER YEE -1040F ; [.4698.0020.0008] # DESERET CAPITAL LETTER YEE -10438 ; [.4699.0020.0002] # DESERET SMALL LETTER H -10410 ; [.4699.0020.0008] # DESERET CAPITAL LETTER H -10439 ; [.469A.0020.0002] # DESERET SMALL LETTER PEE -10411 ; [.469A.0020.0008] # DESERET CAPITAL LETTER PEE -1043A ; [.469B.0020.0002] # DESERET SMALL LETTER BEE -10412 ; [.469B.0020.0008] # DESERET CAPITAL LETTER BEE -1043B ; [.469C.0020.0002] # DESERET SMALL LETTER TEE -10413 ; [.469C.0020.0008] # DESERET CAPITAL LETTER TEE -1043C ; [.469D.0020.0002] # DESERET SMALL LETTER DEE -10414 ; [.469D.0020.0008] # DESERET CAPITAL LETTER DEE -1043D ; [.469E.0020.0002] # DESERET SMALL LETTER CHEE -10415 ; [.469E.0020.0008] # DESERET CAPITAL LETTER CHEE -1043E ; [.469F.0020.0002] # DESERET SMALL LETTER JEE -10416 ; [.469F.0020.0008] # DESERET CAPITAL LETTER JEE -1043F ; [.46A0.0020.0002] # DESERET SMALL LETTER KAY -10417 ; [.46A0.0020.0008] # DESERET CAPITAL LETTER KAY -10440 ; [.46A1.0020.0002] # DESERET SMALL LETTER GAY -10418 ; [.46A1.0020.0008] # DESERET CAPITAL LETTER GAY -10441 ; [.46A2.0020.0002] # DESERET SMALL LETTER EF -10419 ; [.46A2.0020.0008] # DESERET CAPITAL LETTER EF -10442 ; [.46A3.0020.0002] # DESERET SMALL LETTER VEE -1041A ; [.46A3.0020.0008] # DESERET CAPITAL LETTER VEE -10443 ; [.46A4.0020.0002] # DESERET SMALL LETTER ETH -1041B ; [.46A4.0020.0008] # DESERET CAPITAL LETTER ETH -10444 ; [.46A5.0020.0002] # DESERET SMALL LETTER THEE -1041C ; [.46A5.0020.0008] # DESERET CAPITAL LETTER THEE -10445 ; [.46A6.0020.0002] # DESERET SMALL LETTER ES -1041D ; [.46A6.0020.0008] # DESERET CAPITAL LETTER ES -10446 ; [.46A7.0020.0002] # DESERET SMALL LETTER ZEE -1041E ; [.46A7.0020.0008] # DESERET CAPITAL LETTER ZEE -10447 ; [.46A8.0020.0002] # DESERET SMALL LETTER ESH -1041F ; [.46A8.0020.0008] # DESERET CAPITAL LETTER ESH -10448 ; [.46A9.0020.0002] # DESERET SMALL LETTER ZHEE -10420 ; [.46A9.0020.0008] # DESERET CAPITAL LETTER ZHEE -10449 ; [.46AA.0020.0002] # DESERET SMALL LETTER ER -10421 ; [.46AA.0020.0008] # DESERET CAPITAL LETTER ER -1044A ; [.46AB.0020.0002] # DESERET SMALL LETTER EL -10422 ; [.46AB.0020.0008] # DESERET CAPITAL LETTER EL -1044B ; [.46AC.0020.0002] # DESERET SMALL LETTER EM -10423 ; [.46AC.0020.0008] # DESERET CAPITAL LETTER EM -1044C ; [.46AD.0020.0002] # DESERET SMALL LETTER EN -10424 ; [.46AD.0020.0008] # DESERET CAPITAL LETTER EN -1044D ; [.46AE.0020.0002] # DESERET SMALL LETTER ENG -10425 ; [.46AE.0020.0008] # DESERET CAPITAL LETTER ENG -1044E ; [.46AF.0020.0002] # DESERET SMALL LETTER OI -10426 ; [.46AF.0020.0008] # DESERET CAPITAL LETTER OI -1044F ; [.46B0.0020.0002] # DESERET SMALL LETTER EW -10427 ; [.46B0.0020.0008] # DESERET CAPITAL LETTER EW -10450 ; [.46B1.0020.0002] # SHAVIAN LETTER PEEP -10451 ; [.46B2.0020.0002] # SHAVIAN LETTER TOT -10452 ; [.46B3.0020.0002] # SHAVIAN LETTER KICK -10453 ; [.46B4.0020.0002] # SHAVIAN LETTER FEE -10454 ; [.46B5.0020.0002] # SHAVIAN LETTER THIGH -10455 ; [.46B6.0020.0002] # SHAVIAN LETTER SO -10456 ; [.46B7.0020.0002] # SHAVIAN LETTER SURE -10457 ; [.46B8.0020.0002] # SHAVIAN LETTER CHURCH -10458 ; [.46B9.0020.0002] # SHAVIAN LETTER YEA -10459 ; [.46BA.0020.0002] # SHAVIAN LETTER HUNG -1045A ; [.46BB.0020.0002] # SHAVIAN LETTER BIB -1045B ; [.46BC.0020.0002] # SHAVIAN LETTER DEAD -1045C ; [.46BD.0020.0002] # SHAVIAN LETTER GAG -1045D ; [.46BE.0020.0002] # SHAVIAN LETTER VOW -1045E ; [.46BF.0020.0002] # SHAVIAN LETTER THEY -1045F ; [.46C0.0020.0002] # SHAVIAN LETTER ZOO -10460 ; [.46C1.0020.0002] # SHAVIAN LETTER MEASURE -10461 ; [.46C2.0020.0002] # SHAVIAN LETTER JUDGE -10462 ; [.46C3.0020.0002] # SHAVIAN LETTER WOE -10463 ; [.46C4.0020.0002] # SHAVIAN LETTER HA-HA -10464 ; [.46C5.0020.0002] # SHAVIAN LETTER LOLL -10465 ; [.46C6.0020.0002] # SHAVIAN LETTER MIME -10466 ; [.46C7.0020.0002] # SHAVIAN LETTER IF -10467 ; [.46C8.0020.0002] # SHAVIAN LETTER EGG -10468 ; [.46C9.0020.0002] # SHAVIAN LETTER ASH -10469 ; [.46CA.0020.0002] # SHAVIAN LETTER ADO -1046A ; [.46CB.0020.0002] # SHAVIAN LETTER ON -1046B ; [.46CC.0020.0002] # SHAVIAN LETTER WOOL -1046C ; [.46CD.0020.0002] # SHAVIAN LETTER OUT -1046D ; [.46CE.0020.0002] # SHAVIAN LETTER AH -1046E ; [.46CF.0020.0002] # SHAVIAN LETTER ROAR -1046F ; [.46D0.0020.0002] # SHAVIAN LETTER NUN -10470 ; [.46D1.0020.0002] # SHAVIAN LETTER EAT -10471 ; [.46D2.0020.0002] # SHAVIAN LETTER AGE -10472 ; [.46D3.0020.0002] # SHAVIAN LETTER ICE -10473 ; [.46D4.0020.0002] # SHAVIAN LETTER UP -10474 ; [.46D5.0020.0002] # SHAVIAN LETTER OAK -10475 ; [.46D6.0020.0002] # SHAVIAN LETTER OOZE -10476 ; [.46D7.0020.0002] # SHAVIAN LETTER OIL -10477 ; [.46D8.0020.0002] # SHAVIAN LETTER AWE -10478 ; [.46D9.0020.0002] # SHAVIAN LETTER ARE -10479 ; [.46DA.0020.0002] # SHAVIAN LETTER OR -1047A ; [.46DB.0020.0002] # SHAVIAN LETTER AIR -1047B ; [.46DC.0020.0002] # SHAVIAN LETTER ERR -1047C ; [.46DD.0020.0002] # SHAVIAN LETTER ARRAY -1047D ; [.46DE.0020.0002] # SHAVIAN LETTER EAR -1047E ; [.46DF.0020.0002] # SHAVIAN LETTER IAN -1047F ; [.46E0.0020.0002] # SHAVIAN LETTER YEW -1BC00 ; [.46E1.0020.0002] # DUPLOYAN LETTER H -1BC01 ; [.46E2.0020.0002] # DUPLOYAN LETTER X -1BC02 ; [.46E3.0020.0002] # DUPLOYAN LETTER P -1BC03 ; [.46E4.0020.0002] # DUPLOYAN LETTER T -1BC04 ; [.46E5.0020.0002] # DUPLOYAN LETTER F -1BC05 ; [.46E6.0020.0002] # DUPLOYAN LETTER K -1BC06 ; [.46E7.0020.0002] # DUPLOYAN LETTER L -1BC07 ; [.46E8.0020.0002] # DUPLOYAN LETTER B -1BC08 ; [.46E9.0020.0002] # DUPLOYAN LETTER D -1BC09 ; [.46EA.0020.0002] # DUPLOYAN LETTER V -1BC0A ; [.46EB.0020.0002] # DUPLOYAN LETTER G -1BC0B ; [.46EC.0020.0002] # DUPLOYAN LETTER R -1BC0C ; [.46ED.0020.0002] # DUPLOYAN LETTER P N -1BC0D ; [.46EE.0020.0002] # DUPLOYAN LETTER D S -1BC0E ; [.46EF.0020.0002] # DUPLOYAN LETTER F N -1BC0F ; [.46F0.0020.0002] # DUPLOYAN LETTER K M -1BC10 ; [.46F1.0020.0002] # DUPLOYAN LETTER R S -1BC11 ; [.46F2.0020.0002] # DUPLOYAN LETTER TH -1BC12 ; [.46F3.0020.0002] # DUPLOYAN LETTER SLOAN DH -1BC13 ; [.46F4.0020.0002] # DUPLOYAN LETTER DH -1BC14 ; [.46F5.0020.0002] # DUPLOYAN LETTER KK -1BC15 ; [.46F6.0020.0002] # DUPLOYAN LETTER SLOAN J -1BC16 ; [.46F7.0020.0002] # DUPLOYAN LETTER HL -1BC17 ; [.46F8.0020.0002] # DUPLOYAN LETTER LH -1BC18 ; [.46F9.0020.0002] # DUPLOYAN LETTER RH -1BC19 ; [.46FA.0020.0002] # DUPLOYAN LETTER M -1BC1A ; [.46FB.0020.0002] # DUPLOYAN LETTER N -1BC1B ; [.46FC.0020.0002] # DUPLOYAN LETTER J -1BC1C ; [.46FD.0020.0002] # DUPLOYAN LETTER S -1BC1D ; [.46FE.0020.0002] # DUPLOYAN LETTER M N -1BC1E ; [.46FF.0020.0002] # DUPLOYAN LETTER N M -1BC1F ; [.4700.0020.0002] # DUPLOYAN LETTER J M -1BC20 ; [.4701.0020.0002] # DUPLOYAN LETTER S J -1BC21 ; [.4702.0020.0002] # DUPLOYAN LETTER M WITH DOT -1BC22 ; [.4703.0020.0002] # DUPLOYAN LETTER N WITH DOT -1BC23 ; [.4704.0020.0002] # DUPLOYAN LETTER J WITH DOT -1BC24 ; [.4705.0020.0002] # DUPLOYAN LETTER J WITH DOTS INSIDE AND ABOVE -1BC25 ; [.4706.0020.0002] # DUPLOYAN LETTER S WITH DOT -1BC26 ; [.4707.0020.0002] # DUPLOYAN LETTER S WITH DOT BELOW -1BC27 ; [.4708.0020.0002] # DUPLOYAN LETTER M S -1BC28 ; [.4709.0020.0002] # DUPLOYAN LETTER N S -1BC29 ; [.470A.0020.0002] # DUPLOYAN LETTER J S -1BC2A ; [.470B.0020.0002] # DUPLOYAN LETTER S S -1BC2B ; [.470C.0020.0002] # DUPLOYAN LETTER M N S -1BC2C ; [.470D.0020.0002] # DUPLOYAN LETTER N M S -1BC2D ; [.470E.0020.0002] # DUPLOYAN LETTER J M S -1BC2E ; [.470F.0020.0002] # DUPLOYAN LETTER S J S -1BC2F ; [.4710.0020.0002] # DUPLOYAN LETTER J S WITH DOT -1BC30 ; [.4711.0020.0002] # DUPLOYAN LETTER J N -1BC31 ; [.4712.0020.0002] # DUPLOYAN LETTER J N S -1BC32 ; [.4713.0020.0002] # DUPLOYAN LETTER S T -1BC33 ; [.4714.0020.0002] # DUPLOYAN LETTER S T R -1BC34 ; [.4715.0020.0002] # DUPLOYAN LETTER S P -1BC35 ; [.4716.0020.0002] # DUPLOYAN LETTER S P R -1BC36 ; [.4717.0020.0002] # DUPLOYAN LETTER T S -1BC37 ; [.4718.0020.0002] # DUPLOYAN LETTER T R S -1BC38 ; [.4719.0020.0002] # DUPLOYAN LETTER W -1BC39 ; [.471A.0020.0002] # DUPLOYAN LETTER WH -1BC3A ; [.471B.0020.0002] # DUPLOYAN LETTER W R -1BC3B ; [.471C.0020.0002] # DUPLOYAN LETTER S N -1BC3C ; [.471D.0020.0002] # DUPLOYAN LETTER S M -1BC3D ; [.471E.0020.0002] # DUPLOYAN LETTER K R S -1BC3E ; [.471F.0020.0002] # DUPLOYAN LETTER G R S -1BC3F ; [.4720.0020.0002] # DUPLOYAN LETTER S K -1BC40 ; [.4721.0020.0002] # DUPLOYAN LETTER S K R -1BC41 ; [.4722.0020.0002] # DUPLOYAN LETTER A -1BC42 ; [.4723.0020.0002] # DUPLOYAN LETTER SLOAN OW -1BC43 ; [.4724.0020.0002] # DUPLOYAN LETTER OA -1BC44 ; [.4725.0020.0002] # DUPLOYAN LETTER O -1BC45 ; [.4726.0020.0002] # DUPLOYAN LETTER AOU -1BC46 ; [.4727.0020.0002] # DUPLOYAN LETTER I -1BC47 ; [.4728.0020.0002] # DUPLOYAN LETTER E -1BC48 ; [.4729.0020.0002] # DUPLOYAN LETTER IE -1BC49 ; [.472A.0020.0002] # DUPLOYAN LETTER SHORT I -1BC4A ; [.472B.0020.0002] # DUPLOYAN LETTER UI -1BC4B ; [.472C.0020.0002] # DUPLOYAN LETTER EE -1BC4C ; [.472D.0020.0002] # DUPLOYAN LETTER SLOAN EH -1BC4D ; [.472E.0020.0002] # DUPLOYAN LETTER ROMANIAN I -1BC4E ; [.472F.0020.0002] # DUPLOYAN LETTER SLOAN EE -1BC4F ; [.4730.0020.0002] # DUPLOYAN LETTER LONG I -1BC50 ; [.4731.0020.0002] # DUPLOYAN LETTER YE -1BC51 ; [.4732.0020.0002] # DUPLOYAN LETTER U -1BC52 ; [.4733.0020.0002] # DUPLOYAN LETTER EU -1BC53 ; [.4734.0020.0002] # DUPLOYAN LETTER XW -1BC54 ; [.4735.0020.0002] # DUPLOYAN LETTER U N -1BC55 ; [.4736.0020.0002] # DUPLOYAN LETTER LONG U -1BC56 ; [.4737.0020.0002] # DUPLOYAN LETTER ROMANIAN U -1BC57 ; [.4738.0020.0002] # DUPLOYAN LETTER UH -1BC58 ; [.4739.0020.0002] # DUPLOYAN LETTER SLOAN U -1BC59 ; [.473A.0020.0002] # DUPLOYAN LETTER OOH -1BC5A ; [.473B.0020.0002] # DUPLOYAN LETTER OW -1BC5B ; [.473C.0020.0002] # DUPLOYAN LETTER OU -1BC5C ; [.473D.0020.0002] # DUPLOYAN LETTER WA -1BC5D ; [.473E.0020.0002] # DUPLOYAN LETTER WO -1BC5E ; [.473F.0020.0002] # DUPLOYAN LETTER WI -1BC5F ; [.4740.0020.0002] # DUPLOYAN LETTER WEI -1BC60 ; [.4741.0020.0002] # DUPLOYAN LETTER WOW -1BC61 ; [.4742.0020.0002] # DUPLOYAN LETTER NASAL U -1BC62 ; [.4743.0020.0002] # DUPLOYAN LETTER NASAL O -1BC63 ; [.4744.0020.0002] # DUPLOYAN LETTER NASAL I -1BC64 ; [.4745.0020.0002] # DUPLOYAN LETTER NASAL A -1BC65 ; [.4746.0020.0002] # DUPLOYAN LETTER PERNIN AN -1BC66 ; [.4747.0020.0002] # DUPLOYAN LETTER PERNIN AM -1BC67 ; [.4748.0020.0002] # DUPLOYAN LETTER SLOAN EN -1BC68 ; [.4749.0020.0002] # DUPLOYAN LETTER SLOAN AN -1BC69 ; [.474A.0020.0002] # DUPLOYAN LETTER SLOAN ON -1BC6A ; [.474B.0020.0002] # DUPLOYAN LETTER VOCALIC M -1BC70 ; [.474C.0020.0002] # DUPLOYAN AFFIX LEFT HORIZONTAL SECANT -1BC71 ; [.474D.0020.0002] # DUPLOYAN AFFIX MID HORIZONTAL SECANT -1BC72 ; [.474E.0020.0002] # DUPLOYAN AFFIX RIGHT HORIZONTAL SECANT -1BC73 ; [.474F.0020.0002] # DUPLOYAN AFFIX LOW VERTICAL SECANT -1BC74 ; [.4750.0020.0002] # DUPLOYAN AFFIX MID VERTICAL SECANT -1BC75 ; [.4751.0020.0002] # DUPLOYAN AFFIX HIGH VERTICAL SECANT -1BC76 ; [.4752.0020.0002] # DUPLOYAN AFFIX ATTACHED SECANT -1BC77 ; [.4753.0020.0002] # DUPLOYAN AFFIX ATTACHED LEFT-TO-RIGHT SECANT -1BC78 ; [.4754.0020.0002] # DUPLOYAN AFFIX ATTACHED TANGENT -1BC79 ; [.4755.0020.0002] # DUPLOYAN AFFIX ATTACHED TAIL -1BC7A ; [.4756.0020.0002] # DUPLOYAN AFFIX ATTACHED E HOOK -1BC7B ; [.4757.0020.0002] # DUPLOYAN AFFIX ATTACHED I HOOK -1BC7C ; [.4758.0020.0002] # DUPLOYAN AFFIX ATTACHED TANGENT HOOK -1BC80 ; [.4759.0020.0002] # DUPLOYAN AFFIX HIGH ACUTE -1BC81 ; [.475A.0020.0002] # DUPLOYAN AFFIX HIGH TIGHT ACUTE -1BC82 ; [.475B.0020.0002] # DUPLOYAN AFFIX HIGH GRAVE -1BC83 ; [.475C.0020.0002] # DUPLOYAN AFFIX HIGH LONG GRAVE -1BC84 ; [.475D.0020.0002] # DUPLOYAN AFFIX HIGH DOT -1BC85 ; [.475E.0020.0002] # DUPLOYAN AFFIX HIGH CIRCLE -1BC86 ; [.475F.0020.0002] # DUPLOYAN AFFIX HIGH LINE -1BC87 ; [.4760.0020.0002] # DUPLOYAN AFFIX HIGH WAVE -1BC88 ; [.4761.0020.0002] # DUPLOYAN AFFIX HIGH VERTICAL -1BC90 ; [.4762.0020.0002] # DUPLOYAN AFFIX LOW ACUTE -1BC91 ; [.4763.0020.0002] # DUPLOYAN AFFIX LOW TIGHT ACUTE -1BC92 ; [.4764.0020.0002] # DUPLOYAN AFFIX LOW GRAVE -1BC93 ; [.4765.0020.0002] # DUPLOYAN AFFIX LOW LONG GRAVE -1BC94 ; [.4766.0020.0002] # DUPLOYAN AFFIX LOW DOT -1BC95 ; [.4767.0020.0002] # DUPLOYAN AFFIX LOW CIRCLE -1BC96 ; [.4768.0020.0002] # DUPLOYAN AFFIX LOW LINE -1BC97 ; [.4769.0020.0002] # DUPLOYAN AFFIX LOW WAVE -1BC98 ; [.476A.0020.0002] # DUPLOYAN AFFIX LOW VERTICAL -1BC99 ; [.476B.0020.0002] # DUPLOYAN AFFIX LOW ARROW -10480 ; [.476C.0020.0002] # OSMANYA LETTER ALEF -10481 ; [.476D.0020.0002] # OSMANYA LETTER BA -10482 ; [.476E.0020.0002] # OSMANYA LETTER TA -10483 ; [.476F.0020.0002] # OSMANYA LETTER JA -10484 ; [.4770.0020.0002] # OSMANYA LETTER XA -10485 ; [.4771.0020.0002] # OSMANYA LETTER KHA -10486 ; [.4772.0020.0002] # OSMANYA LETTER DEEL -10487 ; [.4773.0020.0002] # OSMANYA LETTER RA -10488 ; [.4774.0020.0002] # OSMANYA LETTER SA -10489 ; [.4775.0020.0002] # OSMANYA LETTER SHIIN -1048A ; [.4776.0020.0002] # OSMANYA LETTER DHA -1048B ; [.4777.0020.0002] # OSMANYA LETTER CAYN -1048C ; [.4778.0020.0002] # OSMANYA LETTER GA -1048D ; [.4779.0020.0002] # OSMANYA LETTER FA -1048E ; [.477A.0020.0002] # OSMANYA LETTER QAAF -1048F ; [.477B.0020.0002] # OSMANYA LETTER KAAF -10490 ; [.477C.0020.0002] # OSMANYA LETTER LAAN -10491 ; [.477D.0020.0002] # OSMANYA LETTER MIIN -10492 ; [.477E.0020.0002] # OSMANYA LETTER NUUN -10493 ; [.477F.0020.0002] # OSMANYA LETTER WAW -10494 ; [.4780.0020.0002] # OSMANYA LETTER HA -10495 ; [.4781.0020.0002] # OSMANYA LETTER YA -10496 ; [.4782.0020.0002] # OSMANYA LETTER A -10497 ; [.4783.0020.0002] # OSMANYA LETTER E -10498 ; [.4784.0020.0002] # OSMANYA LETTER I -10499 ; [.4785.0020.0002] # OSMANYA LETTER O -1049A ; [.4786.0020.0002] # OSMANYA LETTER U -1049B ; [.4787.0020.0002] # OSMANYA LETTER AA -1049C ; [.4788.0020.0002] # OSMANYA LETTER EE -1049D ; [.4789.0020.0002] # OSMANYA LETTER OO -10500 ; [.478A.0020.0002] # ELBASAN LETTER A -10501 ; [.478B.0020.0002] # ELBASAN LETTER BE -10502 ; [.478C.0020.0002] # ELBASAN LETTER CE -10503 ; [.478D.0020.0002] # ELBASAN LETTER CHE -10504 ; [.478E.0020.0002] # ELBASAN LETTER DE -10505 ; [.478F.0020.0002] # ELBASAN LETTER NDE -10506 ; [.4790.0020.0002] # ELBASAN LETTER DHE -10507 ; [.4791.0020.0002] # ELBASAN LETTER EI -10508 ; [.4792.0020.0002] # ELBASAN LETTER E -10509 ; [.4793.0020.0002] # ELBASAN LETTER FE -1050A ; [.4794.0020.0002] # ELBASAN LETTER GE -1050B ; [.4795.0020.0002] # ELBASAN LETTER GJE -1050C ; [.4796.0020.0002] # ELBASAN LETTER HE -1050D ; [.4797.0020.0002] # ELBASAN LETTER I -1050E ; [.4798.0020.0002] # ELBASAN LETTER JE -1050F ; [.4799.0020.0002] # ELBASAN LETTER KE -10510 ; [.479A.0020.0002] # ELBASAN LETTER LE -10511 ; [.479B.0020.0002] # ELBASAN LETTER LLE -10512 ; [.479C.0020.0002] # ELBASAN LETTER ME -10513 ; [.479D.0020.0002] # ELBASAN LETTER NE -10514 ; [.479E.0020.0002] # ELBASAN LETTER NA -10515 ; [.479F.0020.0002] # ELBASAN LETTER NJE -10516 ; [.47A0.0020.0002] # ELBASAN LETTER O -10517 ; [.47A1.0020.0002] # ELBASAN LETTER PE -10518 ; [.47A2.0020.0002] # ELBASAN LETTER QE -10519 ; [.47A3.0020.0002] # ELBASAN LETTER RE -1051A ; [.47A4.0020.0002] # ELBASAN LETTER RRE -1051B ; [.47A5.0020.0002] # ELBASAN LETTER SE -1051C ; [.47A6.0020.0002] # ELBASAN LETTER SHE -1051D ; [.47A7.0020.0002] # ELBASAN LETTER TE -1051E ; [.47A8.0020.0002] # ELBASAN LETTER THE -1051F ; [.47A9.0020.0002] # ELBASAN LETTER U -10520 ; [.47AA.0020.0002] # ELBASAN LETTER VE -10521 ; [.47AB.0020.0002] # ELBASAN LETTER XE -10522 ; [.47AC.0020.0002] # ELBASAN LETTER Y -10523 ; [.47AD.0020.0002] # ELBASAN LETTER ZE -10524 ; [.47AE.0020.0002] # ELBASAN LETTER ZHE -10525 ; [.47AF.0020.0002] # ELBASAN LETTER GHE -10526 ; [.47B0.0020.0002] # ELBASAN LETTER GHAMMA -10527 ; [.47B1.0020.0002] # ELBASAN LETTER KHE -10530 ; [.47B2.0020.0002] # CAUCASIAN ALBANIAN LETTER ALT -10531 ; [.47B3.0020.0002] # CAUCASIAN ALBANIAN LETTER BET -10532 ; [.47B4.0020.0002] # CAUCASIAN ALBANIAN LETTER GIM -10533 ; [.47B5.0020.0002] # CAUCASIAN ALBANIAN LETTER DAT -10534 ; [.47B6.0020.0002] # CAUCASIAN ALBANIAN LETTER EB -10535 ; [.47B7.0020.0002] # CAUCASIAN ALBANIAN LETTER ZARL -10536 ; [.47B8.0020.0002] # CAUCASIAN ALBANIAN LETTER EYN -10537 ; [.47B9.0020.0002] # CAUCASIAN ALBANIAN LETTER ZHIL -10538 ; [.47BA.0020.0002] # CAUCASIAN ALBANIAN LETTER TAS -10539 ; [.47BB.0020.0002] # CAUCASIAN ALBANIAN LETTER CHA -1053A ; [.47BC.0020.0002] # CAUCASIAN ALBANIAN LETTER YOWD -1053B ; [.47BD.0020.0002] # CAUCASIAN ALBANIAN LETTER ZHA -1053C ; [.47BE.0020.0002] # CAUCASIAN ALBANIAN LETTER IRB -1053D ; [.47BF.0020.0002] # CAUCASIAN ALBANIAN LETTER SHA -1053E ; [.47C0.0020.0002] # CAUCASIAN ALBANIAN LETTER LAN -1053F ; [.47C1.0020.0002] # CAUCASIAN ALBANIAN LETTER INYA -10540 ; [.47C2.0020.0002] # CAUCASIAN ALBANIAN LETTER XEYN -10541 ; [.47C3.0020.0002] # CAUCASIAN ALBANIAN LETTER DYAN -10542 ; [.47C4.0020.0002] # CAUCASIAN ALBANIAN LETTER CAR -10543 ; [.47C5.0020.0002] # CAUCASIAN ALBANIAN LETTER JHOX -10544 ; [.47C6.0020.0002] # CAUCASIAN ALBANIAN LETTER KAR -10545 ; [.47C7.0020.0002] # CAUCASIAN ALBANIAN LETTER LYIT -10546 ; [.47C8.0020.0002] # CAUCASIAN ALBANIAN LETTER HEYT -10547 ; [.47C9.0020.0002] # CAUCASIAN ALBANIAN LETTER QAY -10548 ; [.47CA.0020.0002] # CAUCASIAN ALBANIAN LETTER AOR -10549 ; [.47CB.0020.0002] # CAUCASIAN ALBANIAN LETTER CHOY -1054A ; [.47CC.0020.0002] # CAUCASIAN ALBANIAN LETTER CHI -1054B ; [.47CD.0020.0002] # CAUCASIAN ALBANIAN LETTER CYAY -1054C ; [.47CE.0020.0002] # CAUCASIAN ALBANIAN LETTER MAQ -1054D ; [.47CF.0020.0002] # CAUCASIAN ALBANIAN LETTER QAR -1054E ; [.47D0.0020.0002] # CAUCASIAN ALBANIAN LETTER NOWC -1054F ; [.47D1.0020.0002] # CAUCASIAN ALBANIAN LETTER DZYAY -10550 ; [.47D2.0020.0002] # CAUCASIAN ALBANIAN LETTER SHAK -10551 ; [.47D3.0020.0002] # CAUCASIAN ALBANIAN LETTER JAYN -10552 ; [.47D4.0020.0002] # CAUCASIAN ALBANIAN LETTER ON -10553 ; [.47D5.0020.0002] # CAUCASIAN ALBANIAN LETTER TYAY -10554 ; [.47D6.0020.0002] # CAUCASIAN ALBANIAN LETTER FAM -10555 ; [.47D7.0020.0002] # CAUCASIAN ALBANIAN LETTER DZAY -10556 ; [.47D8.0020.0002] # CAUCASIAN ALBANIAN LETTER CHAT -10557 ; [.47D9.0020.0002] # CAUCASIAN ALBANIAN LETTER PEN -10558 ; [.47DA.0020.0002] # CAUCASIAN ALBANIAN LETTER GHEYS -10559 ; [.47DB.0020.0002] # CAUCASIAN ALBANIAN LETTER RAT -1055A ; [.47DC.0020.0002] # CAUCASIAN ALBANIAN LETTER SEYK -1055B ; [.47DD.0020.0002] # CAUCASIAN ALBANIAN LETTER VEYZ -1055C ; [.47DE.0020.0002] # CAUCASIAN ALBANIAN LETTER TIWR -1055D ; [.47DF.0020.0002] # CAUCASIAN ALBANIAN LETTER SHOY -1055E ; [.47E0.0020.0002] # CAUCASIAN ALBANIAN LETTER IWN -1055F ; [.47E1.0020.0002] # CAUCASIAN ALBANIAN LETTER CYAW -10560 ; [.47E2.0020.0002] # CAUCASIAN ALBANIAN LETTER CAYN -10561 ; [.47E3.0020.0002] # CAUCASIAN ALBANIAN LETTER YAYD -10562 ; [.47E4.0020.0002] # CAUCASIAN ALBANIAN LETTER PIWR -10563 ; [.47E5.0020.0002] # CAUCASIAN ALBANIAN LETTER KIW -110D0 ; [.47E6.0020.0002] # SORA SOMPENG LETTER SAH -110D1 ; [.47E7.0020.0002] # SORA SOMPENG LETTER TAH -110D2 ; [.47E8.0020.0002] # SORA SOMPENG LETTER BAH -110D3 ; [.47E9.0020.0002] # SORA SOMPENG LETTER CAH -110D4 ; [.47EA.0020.0002] # SORA SOMPENG LETTER DAH -110D5 ; [.47EB.0020.0002] # SORA SOMPENG LETTER GAH -110D6 ; [.47EC.0020.0002] # SORA SOMPENG LETTER MAH -110D7 ; [.47ED.0020.0002] # SORA SOMPENG LETTER NGAH -110D8 ; [.47EE.0020.0002] # SORA SOMPENG LETTER LAH -110D9 ; [.47EF.0020.0002] # SORA SOMPENG LETTER NAH -110DA ; [.47F0.0020.0002] # SORA SOMPENG LETTER VAH -110DB ; [.47F1.0020.0002] # SORA SOMPENG LETTER PAH -110DC ; [.47F2.0020.0002] # SORA SOMPENG LETTER YAH -110DD ; [.47F3.0020.0002] # SORA SOMPENG LETTER RAH -110DE ; [.47F4.0020.0002] # SORA SOMPENG LETTER HAH -110DF ; [.47F5.0020.0002] # SORA SOMPENG LETTER KAH -110E0 ; [.47F6.0020.0002] # SORA SOMPENG LETTER JAH -110E1 ; [.47F7.0020.0002] # SORA SOMPENG LETTER NYAH -110E2 ; [.47F8.0020.0002] # SORA SOMPENG LETTER AH -110E3 ; [.47F9.0020.0002] # SORA SOMPENG LETTER EEH -110E4 ; [.47FA.0020.0002] # SORA SOMPENG LETTER IH -110E5 ; [.47FB.0020.0002] # SORA SOMPENG LETTER UH -110E6 ; [.47FC.0020.0002] # SORA SOMPENG LETTER OH -110E7 ; [.47FD.0020.0002] # SORA SOMPENG LETTER EH -110E8 ; [.47FE.0020.0002] # SORA SOMPENG LETTER MAE -16A40 ; [.47FF.0020.0002] # MRO LETTER TA -16A41 ; [.4800.0020.0002] # MRO LETTER NGI -16A42 ; [.4801.0020.0002] # MRO LETTER YO -16A43 ; [.4802.0020.0002] # MRO LETTER MIM -16A44 ; [.4803.0020.0002] # MRO LETTER BA -16A45 ; [.4804.0020.0002] # MRO LETTER DA -16A46 ; [.4805.0020.0002] # MRO LETTER A -16A47 ; [.4806.0020.0002] # MRO LETTER PHI -16A48 ; [.4807.0020.0002] # MRO LETTER KHAI -16A49 ; [.4808.0020.0002] # MRO LETTER HAO -16A4A ; [.4809.0020.0002] # MRO LETTER DAI -16A4B ; [.480A.0020.0002] # MRO LETTER CHU -16A4C ; [.480B.0020.0002] # MRO LETTER KEAAE -16A4D ; [.480C.0020.0002] # MRO LETTER OL -16A4E ; [.480D.0020.0002] # MRO LETTER MAEM -16A4F ; [.480E.0020.0002] # MRO LETTER NIN -16A50 ; [.480F.0020.0002] # MRO LETTER PA -16A51 ; [.4810.0020.0002] # MRO LETTER OO -16A52 ; [.4811.0020.0002] # MRO LETTER O -16A53 ; [.4812.0020.0002] # MRO LETTER RO -16A54 ; [.4813.0020.0002] # MRO LETTER SHI -16A55 ; [.4814.0020.0002] # MRO LETTER THEA -16A56 ; [.4815.0020.0002] # MRO LETTER EA -16A57 ; [.4816.0020.0002] # MRO LETTER WA -16A58 ; [.4817.0020.0002] # MRO LETTER E -16A59 ; [.4818.0020.0002] # MRO LETTER KO -16A5A ; [.4819.0020.0002] # MRO LETTER LAN -16A5B ; [.481A.0020.0002] # MRO LETTER LA -16A5C ; [.481B.0020.0002] # MRO LETTER HAI -16A5D ; [.481C.0020.0002] # MRO LETTER RI -16A5E ; [.481D.0020.0002] # MRO LETTER TEK -10000 ; [.481E.0020.0002] # LINEAR B SYLLABLE B008 A -10001 ; [.481F.0020.0002] # LINEAR B SYLLABLE B038 E -10002 ; [.4820.0020.0002] # LINEAR B SYLLABLE B028 I -10003 ; [.4821.0020.0002] # LINEAR B SYLLABLE B061 O -10004 ; [.4822.0020.0002] # LINEAR B SYLLABLE B010 U -10005 ; [.4823.0020.0002] # LINEAR B SYLLABLE B001 DA -10006 ; [.4824.0020.0002] # LINEAR B SYLLABLE B045 DE -10007 ; [.4825.0020.0002] # LINEAR B SYLLABLE B007 DI -10008 ; [.4826.0020.0002] # LINEAR B SYLLABLE B014 DO -10009 ; [.4827.0020.0002] # LINEAR B SYLLABLE B051 DU -1000A ; [.4828.0020.0002] # LINEAR B SYLLABLE B057 JA -1000B ; [.4829.0020.0002] # LINEAR B SYLLABLE B046 JE -1000D ; [.482A.0020.0002] # LINEAR B SYLLABLE B036 JO -1000E ; [.482B.0020.0002] # LINEAR B SYLLABLE B065 JU -1000F ; [.482C.0020.0002] # LINEAR B SYLLABLE B077 KA -10010 ; [.482D.0020.0002] # LINEAR B SYLLABLE B044 KE -10011 ; [.482E.0020.0002] # LINEAR B SYLLABLE B067 KI -10012 ; [.482F.0020.0002] # LINEAR B SYLLABLE B070 KO -10013 ; [.4830.0020.0002] # LINEAR B SYLLABLE B081 KU -10014 ; [.4831.0020.0002] # LINEAR B SYLLABLE B080 MA -10015 ; [.4832.0020.0002] # LINEAR B SYLLABLE B013 ME -10016 ; [.4833.0020.0002] # LINEAR B SYLLABLE B073 MI -10017 ; [.4834.0020.0002] # LINEAR B SYLLABLE B015 MO -10018 ; [.4835.0020.0002] # LINEAR B SYLLABLE B023 MU -10019 ; [.4836.0020.0002] # LINEAR B SYLLABLE B006 NA -1001A ; [.4837.0020.0002] # LINEAR B SYLLABLE B024 NE -1001B ; [.4838.0020.0002] # LINEAR B SYLLABLE B030 NI -1001C ; [.4839.0020.0002] # LINEAR B SYLLABLE B052 NO -1001D ; [.483A.0020.0002] # LINEAR B SYLLABLE B055 NU -1001E ; [.483B.0020.0002] # LINEAR B SYLLABLE B003 PA -1001F ; [.483C.0020.0002] # LINEAR B SYLLABLE B072 PE -10020 ; [.483D.0020.0002] # LINEAR B SYLLABLE B039 PI -10021 ; [.483E.0020.0002] # LINEAR B SYLLABLE B011 PO -10022 ; [.483F.0020.0002] # LINEAR B SYLLABLE B050 PU -10023 ; [.4840.0020.0002] # LINEAR B SYLLABLE B016 QA -10024 ; [.4841.0020.0002] # LINEAR B SYLLABLE B078 QE -10025 ; [.4842.0020.0002] # LINEAR B SYLLABLE B021 QI -10026 ; [.4843.0020.0002] # LINEAR B SYLLABLE B032 QO -10028 ; [.4844.0020.0002] # LINEAR B SYLLABLE B060 RA -10029 ; [.4845.0020.0002] # LINEAR B SYLLABLE B027 RE -1002A ; [.4846.0020.0002] # LINEAR B SYLLABLE B053 RI -1002B ; [.4847.0020.0002] # LINEAR B SYLLABLE B002 RO -1002C ; [.4848.0020.0002] # LINEAR B SYLLABLE B026 RU -1002D ; [.4849.0020.0002] # LINEAR B SYLLABLE B031 SA -1002E ; [.484A.0020.0002] # LINEAR B SYLLABLE B009 SE -1002F ; [.484B.0020.0002] # LINEAR B SYLLABLE B041 SI -10030 ; [.484C.0020.0002] # LINEAR B SYLLABLE B012 SO -10031 ; [.484D.0020.0002] # LINEAR B SYLLABLE B058 SU -10032 ; [.484E.0020.0002] # LINEAR B SYLLABLE B059 TA -10033 ; [.484F.0020.0002] # LINEAR B SYLLABLE B004 TE -10034 ; [.4850.0020.0002] # LINEAR B SYLLABLE B037 TI -10035 ; [.4851.0020.0002] # LINEAR B SYLLABLE B005 TO -10036 ; [.4852.0020.0002] # LINEAR B SYLLABLE B069 TU -10037 ; [.4853.0020.0002] # LINEAR B SYLLABLE B054 WA -10038 ; [.4854.0020.0002] # LINEAR B SYLLABLE B075 WE -10039 ; [.4855.0020.0002] # LINEAR B SYLLABLE B040 WI -1003A ; [.4856.0020.0002] # LINEAR B SYLLABLE B042 WO -1003C ; [.4857.0020.0002] # LINEAR B SYLLABLE B017 ZA -1003D ; [.4858.0020.0002] # LINEAR B SYLLABLE B074 ZE -1003F ; [.4859.0020.0002] # LINEAR B SYLLABLE B020 ZO -10040 ; [.485A.0020.0002] # LINEAR B SYLLABLE B025 A2 -10041 ; [.485B.0020.0002] # LINEAR B SYLLABLE B043 A3 -10042 ; [.485C.0020.0002] # LINEAR B SYLLABLE B085 AU -10043 ; [.485D.0020.0002] # LINEAR B SYLLABLE B071 DWE -10044 ; [.485E.0020.0002] # LINEAR B SYLLABLE B090 DWO -10045 ; [.485F.0020.0002] # LINEAR B SYLLABLE B048 NWA -10046 ; [.4860.0020.0002] # LINEAR B SYLLABLE B029 PU2 -10047 ; [.4861.0020.0002] # LINEAR B SYLLABLE B062 PTE -10048 ; [.4862.0020.0002] # LINEAR B SYLLABLE B076 RA2 -10049 ; [.4863.0020.0002] # LINEAR B SYLLABLE B033 RA3 -1004A ; [.4864.0020.0002] # LINEAR B SYLLABLE B068 RO2 -1004B ; [.4865.0020.0002] # LINEAR B SYLLABLE B066 TA2 -1004C ; [.4866.0020.0002] # LINEAR B SYLLABLE B087 TWE -1004D ; [.4867.0020.0002] # LINEAR B SYLLABLE B091 TWO -10050 ; [.4868.0020.0002] # LINEAR B SYMBOL B018 -10051 ; [.4869.0020.0002] # LINEAR B SYMBOL B019 -10052 ; [.486A.0020.0002] # LINEAR B SYMBOL B022 -10053 ; [.486B.0020.0002] # LINEAR B SYMBOL B034 -10054 ; [.486C.0020.0002] # LINEAR B SYMBOL B047 -10055 ; [.486D.0020.0002] # LINEAR B SYMBOL B049 -10056 ; [.486E.0020.0002] # LINEAR B SYMBOL B056 -10057 ; [.486F.0020.0002] # LINEAR B SYMBOL B063 -10058 ; [.4870.0020.0002] # LINEAR B SYMBOL B064 -10059 ; [.4871.0020.0002] # LINEAR B SYMBOL B079 -1005A ; [.4872.0020.0002] # LINEAR B SYMBOL B082 -1005B ; [.4873.0020.0002] # LINEAR B SYMBOL B083 -1005C ; [.4874.0020.0002] # LINEAR B SYMBOL B086 -1005D ; [.4875.0020.0002] # LINEAR B SYMBOL B089 -10080 ; [.4876.0020.0002] # LINEAR B IDEOGRAM B100 MAN -10081 ; [.4877.0020.0002] # LINEAR B IDEOGRAM B102 WOMAN -10082 ; [.4878.0020.0002] # LINEAR B IDEOGRAM B104 DEER -10083 ; [.4879.0020.0002] # LINEAR B IDEOGRAM B105 EQUID -10084 ; [.487A.0020.0002] # LINEAR B IDEOGRAM B105F MARE -10085 ; [.487B.0020.0002] # LINEAR B IDEOGRAM B105M STALLION -10086 ; [.487C.0020.0002] # LINEAR B IDEOGRAM B106F EWE -10087 ; [.487D.0020.0002] # LINEAR B IDEOGRAM B106M RAM -10088 ; [.487E.0020.0002] # LINEAR B IDEOGRAM B107F SHE-GOAT -10089 ; [.487F.0020.0002] # LINEAR B IDEOGRAM B107M HE-GOAT -1008A ; [.4880.0020.0002] # LINEAR B IDEOGRAM B108F SOW -1008B ; [.4881.0020.0002] # LINEAR B IDEOGRAM B108M BOAR -1008C ; [.4882.0020.0002] # LINEAR B IDEOGRAM B109F COW -1008D ; [.4883.0020.0002] # LINEAR B IDEOGRAM B109M BULL -1008E ; [.4884.0020.0002] # LINEAR B IDEOGRAM B120 WHEAT -1008F ; [.4885.0020.0002] # LINEAR B IDEOGRAM B121 BARLEY -10090 ; [.4886.0020.0002] # LINEAR B IDEOGRAM B122 OLIVE -10091 ; [.4887.0020.0002] # LINEAR B IDEOGRAM B123 SPICE -10092 ; [.4888.0020.0002] # LINEAR B IDEOGRAM B125 CYPERUS -10093 ; [.4889.0020.0002] # LINEAR B MONOGRAM B127 KAPO -10094 ; [.488A.0020.0002] # LINEAR B MONOGRAM B128 KANAKO -10095 ; [.488B.0020.0002] # LINEAR B IDEOGRAM B130 OIL -10096 ; [.488C.0020.0002] # LINEAR B IDEOGRAM B131 WINE -10097 ; [.488D.0020.0002] # LINEAR B IDEOGRAM B132 -10098 ; [.488E.0020.0002] # LINEAR B MONOGRAM B133 AREPA -10099 ; [.488F.0020.0002] # LINEAR B MONOGRAM B135 MERI -1009A ; [.4890.0020.0002] # LINEAR B IDEOGRAM B140 BRONZE -1009B ; [.4891.0020.0002] # LINEAR B IDEOGRAM B141 GOLD -1009C ; [.4892.0020.0002] # LINEAR B IDEOGRAM B142 -1009D ; [.4893.0020.0002] # LINEAR B IDEOGRAM B145 WOOL -1009E ; [.4894.0020.0002] # LINEAR B IDEOGRAM B146 -1009F ; [.4895.0020.0002] # LINEAR B IDEOGRAM B150 -100A0 ; [.4896.0020.0002] # LINEAR B IDEOGRAM B151 HORN -100A1 ; [.4897.0020.0002] # LINEAR B IDEOGRAM B152 -100A2 ; [.4898.0020.0002] # LINEAR B IDEOGRAM B153 -100A3 ; [.4899.0020.0002] # LINEAR B IDEOGRAM B154 -100A4 ; [.489A.0020.0002] # LINEAR B MONOGRAM B156 TURO2 -100A5 ; [.489B.0020.0002] # LINEAR B IDEOGRAM B157 -100A6 ; [.489C.0020.0002] # LINEAR B IDEOGRAM B158 -100A7 ; [.489D.0020.0002] # LINEAR B IDEOGRAM B159 CLOTH -100A8 ; [.489E.0020.0002] # LINEAR B IDEOGRAM B160 -100A9 ; [.489F.0020.0002] # LINEAR B IDEOGRAM B161 -100AA ; [.48A0.0020.0002] # LINEAR B IDEOGRAM B162 GARMENT -100AB ; [.48A1.0020.0002] # LINEAR B IDEOGRAM B163 ARMOUR -100AC ; [.48A2.0020.0002] # LINEAR B IDEOGRAM B164 -100AD ; [.48A3.0020.0002] # LINEAR B IDEOGRAM B165 -100AE ; [.48A4.0020.0002] # LINEAR B IDEOGRAM B166 -100AF ; [.48A5.0020.0002] # LINEAR B IDEOGRAM B167 -100B0 ; [.48A6.0020.0002] # LINEAR B IDEOGRAM B168 -100B1 ; [.48A7.0020.0002] # LINEAR B IDEOGRAM B169 -100B2 ; [.48A8.0020.0002] # LINEAR B IDEOGRAM B170 -100B3 ; [.48A9.0020.0002] # LINEAR B IDEOGRAM B171 -100B4 ; [.48AA.0020.0002] # LINEAR B IDEOGRAM B172 -100B5 ; [.48AB.0020.0002] # LINEAR B IDEOGRAM B173 MONTH -100B6 ; [.48AC.0020.0002] # LINEAR B IDEOGRAM B174 -100B7 ; [.48AD.0020.0002] # LINEAR B IDEOGRAM B176 TREE -100B8 ; [.48AE.0020.0002] # LINEAR B IDEOGRAM B177 -100B9 ; [.48AF.0020.0002] # LINEAR B IDEOGRAM B178 -100BA ; [.48B0.0020.0002] # LINEAR B IDEOGRAM B179 -100BB ; [.48B1.0020.0002] # LINEAR B IDEOGRAM B180 -100BC ; [.48B2.0020.0002] # LINEAR B IDEOGRAM B181 -100BD ; [.48B3.0020.0002] # LINEAR B IDEOGRAM B182 -100BE ; [.48B4.0020.0002] # LINEAR B IDEOGRAM B183 -100BF ; [.48B5.0020.0002] # LINEAR B IDEOGRAM B184 -100C0 ; [.48B6.0020.0002] # LINEAR B IDEOGRAM B185 -100C1 ; [.48B7.0020.0002] # LINEAR B IDEOGRAM B189 -100C2 ; [.48B8.0020.0002] # LINEAR B IDEOGRAM B190 -100C3 ; [.48B9.0020.0002] # LINEAR B IDEOGRAM B191 HELMET -100C4 ; [.48BA.0020.0002] # LINEAR B IDEOGRAM B220 FOOTSTOOL -100C5 ; [.48BB.0020.0002] # LINEAR B IDEOGRAM B225 BATHTUB -100C6 ; [.48BC.0020.0002] # LINEAR B IDEOGRAM B230 SPEAR -100C7 ; [.48BD.0020.0002] # LINEAR B IDEOGRAM B231 ARROW -100C8 ; [.48BE.0020.0002] # LINEAR B IDEOGRAM B232 -100C9 ; [.48BF.0020.0002] # LINEAR B IDEOGRAM B233 SWORD -100CA ; [.48C0.0020.0002] # LINEAR B IDEOGRAM B234 -100CB ; [.48C1.0020.0002] # LINEAR B IDEOGRAM B236 -100CC ; [.48C2.0020.0002] # LINEAR B IDEOGRAM B240 WHEELED CHARIOT -100CD ; [.48C3.0020.0002] # LINEAR B IDEOGRAM B241 CHARIOT -100CE ; [.48C4.0020.0002] # LINEAR B IDEOGRAM B242 CHARIOT FRAME -100CF ; [.48C5.0020.0002] # LINEAR B IDEOGRAM B243 WHEEL -100D0 ; [.48C6.0020.0002] # LINEAR B IDEOGRAM B245 -100D1 ; [.48C7.0020.0002] # LINEAR B IDEOGRAM B246 -100D2 ; [.48C8.0020.0002] # LINEAR B MONOGRAM B247 DIPTE -100D3 ; [.48C9.0020.0002] # LINEAR B IDEOGRAM B248 -100D4 ; [.48CA.0020.0002] # LINEAR B IDEOGRAM B249 -100D5 ; [.48CB.0020.0002] # LINEAR B IDEOGRAM B251 -100D6 ; [.48CC.0020.0002] # LINEAR B IDEOGRAM B252 -100D7 ; [.48CD.0020.0002] # LINEAR B IDEOGRAM B253 -100D8 ; [.48CE.0020.0002] # LINEAR B IDEOGRAM B254 DART -100D9 ; [.48CF.0020.0002] # LINEAR B IDEOGRAM B255 -100DA ; [.48D0.0020.0002] # LINEAR B IDEOGRAM B256 -100DB ; [.48D1.0020.0002] # LINEAR B IDEOGRAM B257 -100DC ; [.48D2.0020.0002] # LINEAR B IDEOGRAM B258 -100DD ; [.48D3.0020.0002] # LINEAR B IDEOGRAM B259 -100DE ; [.48D4.0020.0002] # LINEAR B IDEOGRAM VESSEL B155 -100DF ; [.48D5.0020.0002] # LINEAR B IDEOGRAM VESSEL B200 -100E0 ; [.48D6.0020.0002] # LINEAR B IDEOGRAM VESSEL B201 -100E1 ; [.48D7.0020.0002] # LINEAR B IDEOGRAM VESSEL B202 -100E2 ; [.48D8.0020.0002] # LINEAR B IDEOGRAM VESSEL B203 -100E3 ; [.48D9.0020.0002] # LINEAR B IDEOGRAM VESSEL B204 -100E4 ; [.48DA.0020.0002] # LINEAR B IDEOGRAM VESSEL B205 -100E5 ; [.48DB.0020.0002] # LINEAR B IDEOGRAM VESSEL B206 -100E6 ; [.48DC.0020.0002] # LINEAR B IDEOGRAM VESSEL B207 -100E7 ; [.48DD.0020.0002] # LINEAR B IDEOGRAM VESSEL B208 -100E8 ; [.48DE.0020.0002] # LINEAR B IDEOGRAM VESSEL B209 -100E9 ; [.48DF.0020.0002] # LINEAR B IDEOGRAM VESSEL B210 -100EA ; [.48E0.0020.0002] # LINEAR B IDEOGRAM VESSEL B211 -100EB ; [.48E1.0020.0002] # LINEAR B IDEOGRAM VESSEL B212 -100EC ; [.48E2.0020.0002] # LINEAR B IDEOGRAM VESSEL B213 -100ED ; [.48E3.0020.0002] # LINEAR B IDEOGRAM VESSEL B214 -100EE ; [.48E4.0020.0002] # LINEAR B IDEOGRAM VESSEL B215 -100EF ; [.48E5.0020.0002] # LINEAR B IDEOGRAM VESSEL B216 -100F0 ; [.48E6.0020.0002] # LINEAR B IDEOGRAM VESSEL B217 -100F1 ; [.48E7.0020.0002] # LINEAR B IDEOGRAM VESSEL B218 -100F2 ; [.48E8.0020.0002] # LINEAR B IDEOGRAM VESSEL B219 -100F3 ; [.48E9.0020.0002] # LINEAR B IDEOGRAM VESSEL B221 -100F4 ; [.48EA.0020.0002] # LINEAR B IDEOGRAM VESSEL B222 -100F5 ; [.48EB.0020.0002] # LINEAR B IDEOGRAM VESSEL B226 -100F6 ; [.48EC.0020.0002] # LINEAR B IDEOGRAM VESSEL B227 -100F7 ; [.48ED.0020.0002] # LINEAR B IDEOGRAM VESSEL B228 -100F8 ; [.48EE.0020.0002] # LINEAR B IDEOGRAM VESSEL B229 -100F9 ; [.48EF.0020.0002] # LINEAR B IDEOGRAM VESSEL B250 -100FA ; [.48F0.0020.0002] # LINEAR B IDEOGRAM VESSEL B305 -10600 ; [.48F1.0020.0002] # LINEAR A SIGN AB001 -10601 ; [.48F2.0020.0002] # LINEAR A SIGN AB002 -10602 ; [.48F3.0020.0002] # LINEAR A SIGN AB003 -10603 ; [.48F4.0020.0002] # LINEAR A SIGN AB004 -10604 ; [.48F5.0020.0002] # LINEAR A SIGN AB005 -10605 ; [.48F6.0020.0002] # LINEAR A SIGN AB006 -10606 ; [.48F7.0020.0002] # LINEAR A SIGN AB007 -10607 ; [.48F8.0020.0002] # LINEAR A SIGN AB008 -10608 ; [.48F9.0020.0002] # LINEAR A SIGN AB009 -10609 ; [.48FA.0020.0002] # LINEAR A SIGN AB010 -1060A ; [.48FB.0020.0002] # LINEAR A SIGN AB011 -1060B ; [.48FC.0020.0002] # LINEAR A SIGN AB013 -1060C ; [.48FD.0020.0002] # LINEAR A SIGN AB016 -1060D ; [.48FE.0020.0002] # LINEAR A SIGN AB017 -1060E ; [.48FF.0020.0002] # LINEAR A SIGN AB020 -1060F ; [.4900.0020.0002] # LINEAR A SIGN AB021 -10610 ; [.4901.0020.0002] # LINEAR A SIGN AB021F -10611 ; [.4902.0020.0002] # LINEAR A SIGN AB021M -10612 ; [.4903.0020.0002] # LINEAR A SIGN AB022 -10613 ; [.4904.0020.0002] # LINEAR A SIGN AB022F -10614 ; [.4905.0020.0002] # LINEAR A SIGN AB022M -10615 ; [.4906.0020.0002] # LINEAR A SIGN AB023 -10616 ; [.4907.0020.0002] # LINEAR A SIGN AB023M -10617 ; [.4908.0020.0002] # LINEAR A SIGN AB024 -10618 ; [.4909.0020.0002] # LINEAR A SIGN AB026 -10619 ; [.490A.0020.0002] # LINEAR A SIGN AB027 -1061A ; [.490B.0020.0002] # LINEAR A SIGN AB028 -1061B ; [.490C.0020.0002] # LINEAR A SIGN A028B -1061C ; [.490D.0020.0002] # LINEAR A SIGN AB029 -1061D ; [.490E.0020.0002] # LINEAR A SIGN AB030 -1061E ; [.490F.0020.0002] # LINEAR A SIGN AB031 -1061F ; [.4910.0020.0002] # LINEAR A SIGN AB034 -10620 ; [.4911.0020.0002] # LINEAR A SIGN AB037 -10621 ; [.4912.0020.0002] # LINEAR A SIGN AB038 -10622 ; [.4913.0020.0002] # LINEAR A SIGN AB039 -10623 ; [.4914.0020.0002] # LINEAR A SIGN AB040 -10624 ; [.4915.0020.0002] # LINEAR A SIGN AB041 -10625 ; [.4916.0020.0002] # LINEAR A SIGN AB044 -10626 ; [.4917.0020.0002] # LINEAR A SIGN AB045 -10627 ; [.4918.0020.0002] # LINEAR A SIGN AB046 -10628 ; [.4919.0020.0002] # LINEAR A SIGN AB047 -10629 ; [.491A.0020.0002] # LINEAR A SIGN AB048 -1062A ; [.491B.0020.0002] # LINEAR A SIGN AB049 -1062B ; [.491C.0020.0002] # LINEAR A SIGN AB050 -1062C ; [.491D.0020.0002] # LINEAR A SIGN AB051 -1062D ; [.491E.0020.0002] # LINEAR A SIGN AB053 -1062E ; [.491F.0020.0002] # LINEAR A SIGN AB054 -1062F ; [.4920.0020.0002] # LINEAR A SIGN AB055 -10630 ; [.4921.0020.0002] # LINEAR A SIGN AB056 -10631 ; [.4922.0020.0002] # LINEAR A SIGN AB057 -10632 ; [.4923.0020.0002] # LINEAR A SIGN AB058 -10633 ; [.4924.0020.0002] # LINEAR A SIGN AB059 -10634 ; [.4925.0020.0002] # LINEAR A SIGN AB060 -10635 ; [.4926.0020.0002] # LINEAR A SIGN AB061 -10636 ; [.4927.0020.0002] # LINEAR A SIGN AB065 -10637 ; [.4928.0020.0002] # LINEAR A SIGN AB066 -10638 ; [.4929.0020.0002] # LINEAR A SIGN AB067 -10639 ; [.492A.0020.0002] # LINEAR A SIGN AB069 -1063A ; [.492B.0020.0002] # LINEAR A SIGN AB070 -1063B ; [.492C.0020.0002] # LINEAR A SIGN AB073 -1063C ; [.492D.0020.0002] # LINEAR A SIGN AB074 -1063D ; [.492E.0020.0002] # LINEAR A SIGN AB076 -1063E ; [.492F.0020.0002] # LINEAR A SIGN AB077 -1063F ; [.4930.0020.0002] # LINEAR A SIGN AB078 -10640 ; [.4931.0020.0002] # LINEAR A SIGN AB079 -10641 ; [.4932.0020.0002] # LINEAR A SIGN AB080 -10642 ; [.4933.0020.0002] # LINEAR A SIGN AB081 -10643 ; [.4934.0020.0002] # LINEAR A SIGN AB082 -10644 ; [.4935.0020.0002] # LINEAR A SIGN AB085 -10645 ; [.4936.0020.0002] # LINEAR A SIGN AB086 -10646 ; [.4937.0020.0002] # LINEAR A SIGN AB087 -10647 ; [.4938.0020.0002] # LINEAR A SIGN A100-102 -10648 ; [.4939.0020.0002] # LINEAR A SIGN AB118 -10649 ; [.493A.0020.0002] # LINEAR A SIGN AB120 -1064A ; [.493B.0020.0002] # LINEAR A SIGN A120B -1064B ; [.493C.0020.0002] # LINEAR A SIGN AB122 -1064C ; [.493D.0020.0002] # LINEAR A SIGN AB123 -1064D ; [.493E.0020.0002] # LINEAR A SIGN AB131A -1064E ; [.493F.0020.0002] # LINEAR A SIGN AB131B -1064F ; [.4940.0020.0002] # LINEAR A SIGN A131C -10650 ; [.4941.0020.0002] # LINEAR A SIGN AB164 -10651 ; [.4942.0020.0002] # LINEAR A SIGN AB171 -10652 ; [.4943.0020.0002] # LINEAR A SIGN AB180 -10653 ; [.4944.0020.0002] # LINEAR A SIGN AB188 -10654 ; [.4945.0020.0002] # LINEAR A SIGN AB191 -10655 ; [.4946.0020.0002] # LINEAR A SIGN A301 -10656 ; [.4947.0020.0002] # LINEAR A SIGN A302 -10657 ; [.4948.0020.0002] # LINEAR A SIGN A303 -10658 ; [.4949.0020.0002] # LINEAR A SIGN A304 -10659 ; [.494A.0020.0002] # LINEAR A SIGN A305 -1065A ; [.494B.0020.0002] # LINEAR A SIGN A306 -1065B ; [.494C.0020.0002] # LINEAR A SIGN A307 -1065C ; [.494D.0020.0002] # LINEAR A SIGN A308 -1065D ; [.494E.0020.0002] # LINEAR A SIGN A309A -1065E ; [.494F.0020.0002] # LINEAR A SIGN A309B -1065F ; [.4950.0020.0002] # LINEAR A SIGN A309C -10660 ; [.4951.0020.0002] # LINEAR A SIGN A310 -10661 ; [.4952.0020.0002] # LINEAR A SIGN A311 -10662 ; [.4953.0020.0002] # LINEAR A SIGN A312 -10663 ; [.4954.0020.0002] # LINEAR A SIGN A313A -10664 ; [.4955.0020.0002] # LINEAR A SIGN A313B -10665 ; [.4956.0020.0002] # LINEAR A SIGN A313C -10666 ; [.4957.0020.0002] # LINEAR A SIGN A314 -10667 ; [.4958.0020.0002] # LINEAR A SIGN A315 -10668 ; [.4959.0020.0002] # LINEAR A SIGN A316 -10669 ; [.495A.0020.0002] # LINEAR A SIGN A317 -1066A ; [.495B.0020.0002] # LINEAR A SIGN A318 -1066B ; [.495C.0020.0002] # LINEAR A SIGN A319 -1066C ; [.495D.0020.0002] # LINEAR A SIGN A320 -1066D ; [.495E.0020.0002] # LINEAR A SIGN A321 -1066E ; [.495F.0020.0002] # LINEAR A SIGN A322 -1066F ; [.4960.0020.0002] # LINEAR A SIGN A323 -10670 ; [.4961.0020.0002] # LINEAR A SIGN A324 -10671 ; [.4962.0020.0002] # LINEAR A SIGN A325 -10672 ; [.4963.0020.0002] # LINEAR A SIGN A326 -10673 ; [.4964.0020.0002] # LINEAR A SIGN A327 -10674 ; [.4965.0020.0002] # LINEAR A SIGN A328 -10675 ; [.4966.0020.0002] # LINEAR A SIGN A329 -10676 ; [.4967.0020.0002] # LINEAR A SIGN A330 -10677 ; [.4968.0020.0002] # LINEAR A SIGN A331 -10678 ; [.4969.0020.0002] # LINEAR A SIGN A332 -10679 ; [.496A.0020.0002] # LINEAR A SIGN A333 -1067A ; [.496B.0020.0002] # LINEAR A SIGN A334 -1067B ; [.496C.0020.0002] # LINEAR A SIGN A335 -1067C ; [.496D.0020.0002] # LINEAR A SIGN A336 -1067D ; [.496E.0020.0002] # LINEAR A SIGN A337 -1067E ; [.496F.0020.0002] # LINEAR A SIGN A338 -1067F ; [.4970.0020.0002] # LINEAR A SIGN A339 -10680 ; [.4971.0020.0002] # LINEAR A SIGN A340 -10681 ; [.4972.0020.0002] # LINEAR A SIGN A341 -10682 ; [.4973.0020.0002] # LINEAR A SIGN A342 -10683 ; [.4974.0020.0002] # LINEAR A SIGN A343 -10684 ; [.4975.0020.0002] # LINEAR A SIGN A344 -10685 ; [.4976.0020.0002] # LINEAR A SIGN A345 -10686 ; [.4977.0020.0002] # LINEAR A SIGN A346 -10687 ; [.4978.0020.0002] # LINEAR A SIGN A347 -10688 ; [.4979.0020.0002] # LINEAR A SIGN A348 -10689 ; [.497A.0020.0002] # LINEAR A SIGN A349 -1068A ; [.497B.0020.0002] # LINEAR A SIGN A350 -1068B ; [.497C.0020.0002] # LINEAR A SIGN A351 -1068C ; [.497D.0020.0002] # LINEAR A SIGN A352 -1068D ; [.497E.0020.0002] # LINEAR A SIGN A353 -1068E ; [.497F.0020.0002] # LINEAR A SIGN A354 -1068F ; [.4980.0020.0002] # LINEAR A SIGN A355 -10690 ; [.4981.0020.0002] # LINEAR A SIGN A356 -10691 ; [.4982.0020.0002] # LINEAR A SIGN A357 -10692 ; [.4983.0020.0002] # LINEAR A SIGN A358 -10693 ; [.4984.0020.0002] # LINEAR A SIGN A359 -10694 ; [.4985.0020.0002] # LINEAR A SIGN A360 -10695 ; [.4986.0020.0002] # LINEAR A SIGN A361 -10696 ; [.4987.0020.0002] # LINEAR A SIGN A362 -10697 ; [.4988.0020.0002] # LINEAR A SIGN A363 -10698 ; [.4989.0020.0002] # LINEAR A SIGN A364 -10699 ; [.498A.0020.0002] # LINEAR A SIGN A365 -1069A ; [.498B.0020.0002] # LINEAR A SIGN A366 -1069B ; [.498C.0020.0002] # LINEAR A SIGN A367 -1069C ; [.498D.0020.0002] # LINEAR A SIGN A368 -1069D ; [.498E.0020.0002] # LINEAR A SIGN A369 -1069E ; [.498F.0020.0002] # LINEAR A SIGN A370 -1069F ; [.4990.0020.0002] # LINEAR A SIGN A371 -106A0 ; [.4991.0020.0002] # LINEAR A SIGN A400-VAS -106A1 ; [.4992.0020.0002] # LINEAR A SIGN A401-VAS -106A2 ; [.4993.0020.0002] # LINEAR A SIGN A402-VAS -106A3 ; [.4994.0020.0002] # LINEAR A SIGN A403-VAS -106A4 ; [.4995.0020.0002] # LINEAR A SIGN A404-VAS -106A5 ; [.4996.0020.0002] # LINEAR A SIGN A405-VAS -106A6 ; [.4997.0020.0002] # LINEAR A SIGN A406-VAS -106A7 ; [.4998.0020.0002] # LINEAR A SIGN A407-VAS -106A8 ; [.4999.0020.0002] # LINEAR A SIGN A408-VAS -106A9 ; [.499A.0020.0002] # LINEAR A SIGN A409-VAS -106AA ; [.499B.0020.0002] # LINEAR A SIGN A410-VAS -106AB ; [.499C.0020.0002] # LINEAR A SIGN A411-VAS -106AC ; [.499D.0020.0002] # LINEAR A SIGN A412-VAS -106AD ; [.499E.0020.0002] # LINEAR A SIGN A413-VAS -106AE ; [.499F.0020.0002] # LINEAR A SIGN A414-VAS -106AF ; [.49A0.0020.0002] # LINEAR A SIGN A415-VAS -106B0 ; [.49A1.0020.0002] # LINEAR A SIGN A416-VAS -106B1 ; [.49A2.0020.0002] # LINEAR A SIGN A417-VAS -106B2 ; [.49A3.0020.0002] # LINEAR A SIGN A418-VAS -106B3 ; [.49A4.0020.0002] # LINEAR A SIGN A501 -106B4 ; [.49A5.0020.0002] # LINEAR A SIGN A502 -106B5 ; [.49A6.0020.0002] # LINEAR A SIGN A503 -106B6 ; [.49A7.0020.0002] # LINEAR A SIGN A504 -106B7 ; [.49A8.0020.0002] # LINEAR A SIGN A505 -106B8 ; [.49A9.0020.0002] # LINEAR A SIGN A506 -106B9 ; [.49AA.0020.0002] # LINEAR A SIGN A508 -106BA ; [.49AB.0020.0002] # LINEAR A SIGN A509 -106BB ; [.49AC.0020.0002] # LINEAR A SIGN A510 -106BC ; [.49AD.0020.0002] # LINEAR A SIGN A511 -106BD ; [.49AE.0020.0002] # LINEAR A SIGN A512 -106BE ; [.49AF.0020.0002] # LINEAR A SIGN A513 -106BF ; [.49B0.0020.0002] # LINEAR A SIGN A515 -106C0 ; [.49B1.0020.0002] # LINEAR A SIGN A516 -106C1 ; [.49B2.0020.0002] # LINEAR A SIGN A520 -106C2 ; [.49B3.0020.0002] # LINEAR A SIGN A521 -106C3 ; [.49B4.0020.0002] # LINEAR A SIGN A523 -106C4 ; [.49B5.0020.0002] # LINEAR A SIGN A524 -106C5 ; [.49B6.0020.0002] # LINEAR A SIGN A525 -106C6 ; [.49B7.0020.0002] # LINEAR A SIGN A526 -106C7 ; [.49B8.0020.0002] # LINEAR A SIGN A527 -106C8 ; [.49B9.0020.0002] # LINEAR A SIGN A528 -106C9 ; [.49BA.0020.0002] # LINEAR A SIGN A529 -106CA ; [.49BB.0020.0002] # LINEAR A SIGN A530 -106CB ; [.49BC.0020.0002] # LINEAR A SIGN A531 -106CC ; [.49BD.0020.0002] # LINEAR A SIGN A532 -106CD ; [.49BE.0020.0002] # LINEAR A SIGN A534 -106CE ; [.49BF.0020.0002] # LINEAR A SIGN A535 -106CF ; [.49C0.0020.0002] # LINEAR A SIGN A536 -106D0 ; [.49C1.0020.0002] # LINEAR A SIGN A537 -106D1 ; [.49C2.0020.0002] # LINEAR A SIGN A538 -106D2 ; [.49C3.0020.0002] # LINEAR A SIGN A539 -106D3 ; [.49C4.0020.0002] # LINEAR A SIGN A540 -106D4 ; [.49C5.0020.0002] # LINEAR A SIGN A541 -106D5 ; [.49C6.0020.0002] # LINEAR A SIGN A542 -106D6 ; [.49C7.0020.0002] # LINEAR A SIGN A545 -106D7 ; [.49C8.0020.0002] # LINEAR A SIGN A547 -106D8 ; [.49C9.0020.0002] # LINEAR A SIGN A548 -106D9 ; [.49CA.0020.0002] # LINEAR A SIGN A549 -106DA ; [.49CB.0020.0002] # LINEAR A SIGN A550 -106DB ; [.49CC.0020.0002] # LINEAR A SIGN A551 -106DC ; [.49CD.0020.0002] # LINEAR A SIGN A552 -106DD ; [.49CE.0020.0002] # LINEAR A SIGN A553 -106DE ; [.49CF.0020.0002] # LINEAR A SIGN A554 -106DF ; [.49D0.0020.0002] # LINEAR A SIGN A555 -106E0 ; [.49D1.0020.0002] # LINEAR A SIGN A556 -106E1 ; [.49D2.0020.0002] # LINEAR A SIGN A557 -106E2 ; [.49D3.0020.0002] # LINEAR A SIGN A559 -106E3 ; [.49D4.0020.0002] # LINEAR A SIGN A563 -106E4 ; [.49D5.0020.0002] # LINEAR A SIGN A564 -106E5 ; [.49D6.0020.0002] # LINEAR A SIGN A565 -106E6 ; [.49D7.0020.0002] # LINEAR A SIGN A566 -106E7 ; [.49D8.0020.0002] # LINEAR A SIGN A568 -106E8 ; [.49D9.0020.0002] # LINEAR A SIGN A569 -106E9 ; [.49DA.0020.0002] # LINEAR A SIGN A570 -106EA ; [.49DB.0020.0002] # LINEAR A SIGN A571 -106EB ; [.49DC.0020.0002] # LINEAR A SIGN A572 -106EC ; [.49DD.0020.0002] # LINEAR A SIGN A573 -106ED ; [.49DE.0020.0002] # LINEAR A SIGN A574 -106EE ; [.49DF.0020.0002] # LINEAR A SIGN A575 -106EF ; [.49E0.0020.0002] # LINEAR A SIGN A576 -106F0 ; [.49E1.0020.0002] # LINEAR A SIGN A577 -106F1 ; [.49E2.0020.0002] # LINEAR A SIGN A578 -106F2 ; [.49E3.0020.0002] # LINEAR A SIGN A579 -106F3 ; [.49E4.0020.0002] # LINEAR A SIGN A580 -106F4 ; [.49E5.0020.0002] # LINEAR A SIGN A581 -106F5 ; [.49E6.0020.0002] # LINEAR A SIGN A582 -106F6 ; [.49E7.0020.0002] # LINEAR A SIGN A583 -106F7 ; [.49E8.0020.0002] # LINEAR A SIGN A584 -106F8 ; [.49E9.0020.0002] # LINEAR A SIGN A585 -106F9 ; [.49EA.0020.0002] # LINEAR A SIGN A586 -106FA ; [.49EB.0020.0002] # LINEAR A SIGN A587 -106FB ; [.49EC.0020.0002] # LINEAR A SIGN A588 -106FC ; [.49ED.0020.0002] # LINEAR A SIGN A589 -106FD ; [.49EE.0020.0002] # LINEAR A SIGN A591 -106FE ; [.49EF.0020.0002] # LINEAR A SIGN A592 -106FF ; [.49F0.0020.0002] # LINEAR A SIGN A594 -10700 ; [.49F1.0020.0002] # LINEAR A SIGN A595 -10701 ; [.49F2.0020.0002] # LINEAR A SIGN A596 -10702 ; [.49F3.0020.0002] # LINEAR A SIGN A598 -10703 ; [.49F4.0020.0002] # LINEAR A SIGN A600 -10704 ; [.49F5.0020.0002] # LINEAR A SIGN A601 -10705 ; [.49F6.0020.0002] # LINEAR A SIGN A602 -10706 ; [.49F7.0020.0002] # LINEAR A SIGN A603 -10707 ; [.49F8.0020.0002] # LINEAR A SIGN A604 -10708 ; [.49F9.0020.0002] # LINEAR A SIGN A606 -10709 ; [.49FA.0020.0002] # LINEAR A SIGN A608 -1070A ; [.49FB.0020.0002] # LINEAR A SIGN A609 -1070B ; [.49FC.0020.0002] # LINEAR A SIGN A610 -1070C ; [.49FD.0020.0002] # LINEAR A SIGN A611 -1070D ; [.49FE.0020.0002] # LINEAR A SIGN A612 -1070E ; [.49FF.0020.0002] # LINEAR A SIGN A613 -1070F ; [.4A00.0020.0002] # LINEAR A SIGN A614 -10710 ; [.4A01.0020.0002] # LINEAR A SIGN A615 -10711 ; [.4A02.0020.0002] # LINEAR A SIGN A616 -10712 ; [.4A03.0020.0002] # LINEAR A SIGN A617 -10713 ; [.4A04.0020.0002] # LINEAR A SIGN A618 -10714 ; [.4A05.0020.0002] # LINEAR A SIGN A619 -10715 ; [.4A06.0020.0002] # LINEAR A SIGN A620 -10716 ; [.4A07.0020.0002] # LINEAR A SIGN A621 -10717 ; [.4A08.0020.0002] # LINEAR A SIGN A622 -10718 ; [.4A09.0020.0002] # LINEAR A SIGN A623 -10719 ; [.4A0A.0020.0002] # LINEAR A SIGN A624 -1071A ; [.4A0B.0020.0002] # LINEAR A SIGN A626 -1071B ; [.4A0C.0020.0002] # LINEAR A SIGN A627 -1071C ; [.4A0D.0020.0002] # LINEAR A SIGN A628 -1071D ; [.4A0E.0020.0002] # LINEAR A SIGN A629 -1071E ; [.4A0F.0020.0002] # LINEAR A SIGN A634 -1071F ; [.4A10.0020.0002] # LINEAR A SIGN A637 -10720 ; [.4A11.0020.0002] # LINEAR A SIGN A638 -10721 ; [.4A12.0020.0002] # LINEAR A SIGN A640 -10722 ; [.4A13.0020.0002] # LINEAR A SIGN A642 -10723 ; [.4A14.0020.0002] # LINEAR A SIGN A643 -10724 ; [.4A15.0020.0002] # LINEAR A SIGN A644 -10725 ; [.4A16.0020.0002] # LINEAR A SIGN A645 -10726 ; [.4A17.0020.0002] # LINEAR A SIGN A646 -10727 ; [.4A18.0020.0002] # LINEAR A SIGN A648 -10728 ; [.4A19.0020.0002] # LINEAR A SIGN A649 -10729 ; [.4A1A.0020.0002] # LINEAR A SIGN A651 -1072A ; [.4A1B.0020.0002] # LINEAR A SIGN A652 -1072B ; [.4A1C.0020.0002] # LINEAR A SIGN A653 -1072C ; [.4A1D.0020.0002] # LINEAR A SIGN A654 -1072D ; [.4A1E.0020.0002] # LINEAR A SIGN A655 -1072E ; [.4A1F.0020.0002] # LINEAR A SIGN A656 -1072F ; [.4A20.0020.0002] # LINEAR A SIGN A657 -10730 ; [.4A21.0020.0002] # LINEAR A SIGN A658 -10731 ; [.4A22.0020.0002] # LINEAR A SIGN A659 -10732 ; [.4A23.0020.0002] # LINEAR A SIGN A660 -10733 ; [.4A24.0020.0002] # LINEAR A SIGN A661 -10734 ; [.4A25.0020.0002] # LINEAR A SIGN A662 -10735 ; [.4A26.0020.0002] # LINEAR A SIGN A663 -10736 ; [.4A27.0020.0002] # LINEAR A SIGN A664 -10740 ; [.4A28.0020.0002] # LINEAR A SIGN A701 A -10741 ; [.4A29.0020.0002] # LINEAR A SIGN A702 B -10742 ; [.4A2A.0020.0002] # LINEAR A SIGN A703 D -10743 ; [.4A2B.0020.0002] # LINEAR A SIGN A704 E -10744 ; [.4A2C.0020.0002] # LINEAR A SIGN A705 F -10745 ; [.4A2D.0020.0002] # LINEAR A SIGN A706 H -10746 ; [.4A2E.0020.0002] # LINEAR A SIGN A707 J -10747 ; [.4A2F.0020.0002] # LINEAR A SIGN A708 K -10748 ; [.4A30.0020.0002] # LINEAR A SIGN A709 L -10749 ; [.4A31.0020.0002] # LINEAR A SIGN A709-2 L2 -1074A ; [.4A32.0020.0002] # LINEAR A SIGN A709-3 L3 -1074B ; [.4A33.0020.0002] # LINEAR A SIGN A709-4 L4 -1074C ; [.4A34.0020.0002] # LINEAR A SIGN A709-6 L6 -1074D ; [.4A35.0020.0002] # LINEAR A SIGN A710 W -1074E ; [.4A36.0020.0002] # LINEAR A SIGN A711 X -1074F ; [.4A37.0020.0002] # LINEAR A SIGN A712 Y -10750 ; [.4A38.0020.0002] # LINEAR A SIGN A713 OMEGA -10751 ; [.4A39.0020.0002] # LINEAR A SIGN A714 ABB -10752 ; [.4A3A.0020.0002] # LINEAR A SIGN A715 BB -10753 ; [.4A3B.0020.0002] # LINEAR A SIGN A717 DD -10754 ; [.4A3C.0020.0002] # LINEAR A SIGN A726 EYYY -10755 ; [.4A3D.0020.0002] # LINEAR A SIGN A732 JE -10760 ; [.4A3E.0020.0002] # LINEAR A SIGN A800 -10761 ; [.4A3F.0020.0002] # LINEAR A SIGN A801 -10762 ; [.4A40.0020.0002] # LINEAR A SIGN A802 -10763 ; [.4A41.0020.0002] # LINEAR A SIGN A803 -10764 ; [.4A42.0020.0002] # LINEAR A SIGN A804 -10765 ; [.4A43.0020.0002] # LINEAR A SIGN A805 -10766 ; [.4A44.0020.0002] # LINEAR A SIGN A806 -10767 ; [.4A45.0020.0002] # LINEAR A SIGN A807 -10800 ; [.4A46.0020.0002] # CYPRIOT SYLLABLE A -10801 ; [.4A47.0020.0002] # CYPRIOT SYLLABLE E -10802 ; [.4A48.0020.0002] # CYPRIOT SYLLABLE I -10803 ; [.4A49.0020.0002] # CYPRIOT SYLLABLE O -10804 ; [.4A4A.0020.0002] # CYPRIOT SYLLABLE U -10805 ; [.4A4B.0020.0002] # CYPRIOT SYLLABLE JA -10808 ; [.4A4C.0020.0002] # CYPRIOT SYLLABLE JO -1080A ; [.4A4D.0020.0002] # CYPRIOT SYLLABLE KA -1080B ; [.4A4E.0020.0002] # CYPRIOT SYLLABLE KE -1080C ; [.4A4F.0020.0002] # CYPRIOT SYLLABLE KI -1080D ; [.4A50.0020.0002] # CYPRIOT SYLLABLE KO -1080E ; [.4A51.0020.0002] # CYPRIOT SYLLABLE KU -1080F ; [.4A52.0020.0002] # CYPRIOT SYLLABLE LA -10810 ; [.4A53.0020.0002] # CYPRIOT SYLLABLE LE -10811 ; [.4A54.0020.0002] # CYPRIOT SYLLABLE LI -10812 ; [.4A55.0020.0002] # CYPRIOT SYLLABLE LO -10813 ; [.4A56.0020.0002] # CYPRIOT SYLLABLE LU -10814 ; [.4A57.0020.0002] # CYPRIOT SYLLABLE MA -10815 ; [.4A58.0020.0002] # CYPRIOT SYLLABLE ME -10816 ; [.4A59.0020.0002] # CYPRIOT SYLLABLE MI -10817 ; [.4A5A.0020.0002] # CYPRIOT SYLLABLE MO -10818 ; [.4A5B.0020.0002] # CYPRIOT SYLLABLE MU -10819 ; [.4A5C.0020.0002] # CYPRIOT SYLLABLE NA -1081A ; [.4A5D.0020.0002] # CYPRIOT SYLLABLE NE -1081B ; [.4A5E.0020.0002] # CYPRIOT SYLLABLE NI -1081C ; [.4A5F.0020.0002] # CYPRIOT SYLLABLE NO -1081D ; [.4A60.0020.0002] # CYPRIOT SYLLABLE NU -1081E ; [.4A61.0020.0002] # CYPRIOT SYLLABLE PA -1081F ; [.4A62.0020.0002] # CYPRIOT SYLLABLE PE -10820 ; [.4A63.0020.0002] # CYPRIOT SYLLABLE PI -10821 ; [.4A64.0020.0002] # CYPRIOT SYLLABLE PO -10822 ; [.4A65.0020.0002] # CYPRIOT SYLLABLE PU -10823 ; [.4A66.0020.0002] # CYPRIOT SYLLABLE RA -10824 ; [.4A67.0020.0002] # CYPRIOT SYLLABLE RE -10825 ; [.4A68.0020.0002] # CYPRIOT SYLLABLE RI -10826 ; [.4A69.0020.0002] # CYPRIOT SYLLABLE RO -10827 ; [.4A6A.0020.0002] # CYPRIOT SYLLABLE RU -10828 ; [.4A6B.0020.0002] # CYPRIOT SYLLABLE SA -10829 ; [.4A6C.0020.0002] # CYPRIOT SYLLABLE SE -1082A ; [.4A6D.0020.0002] # CYPRIOT SYLLABLE SI -1082B ; [.4A6E.0020.0002] # CYPRIOT SYLLABLE SO -1082C ; [.4A6F.0020.0002] # CYPRIOT SYLLABLE SU -1082D ; [.4A70.0020.0002] # CYPRIOT SYLLABLE TA -1082E ; [.4A71.0020.0002] # CYPRIOT SYLLABLE TE -1082F ; [.4A72.0020.0002] # CYPRIOT SYLLABLE TI -10830 ; [.4A73.0020.0002] # CYPRIOT SYLLABLE TO -10831 ; [.4A74.0020.0002] # CYPRIOT SYLLABLE TU -10832 ; [.4A75.0020.0002] # CYPRIOT SYLLABLE WA -10833 ; [.4A76.0020.0002] # CYPRIOT SYLLABLE WE -10834 ; [.4A77.0020.0002] # CYPRIOT SYLLABLE WI -10835 ; [.4A78.0020.0002] # CYPRIOT SYLLABLE WO -10837 ; [.4A79.0020.0002] # CYPRIOT SYLLABLE XA -10838 ; [.4A7A.0020.0002] # CYPRIOT SYLLABLE XE -1083C ; [.4A7B.0020.0002] # CYPRIOT SYLLABLE ZA -1083F ; [.4A7C.0020.0002] # CYPRIOT SYLLABLE ZO -10A60 ; [.4A7D.0020.0002] # OLD SOUTH ARABIAN LETTER HE -10A61 ; [.4A7E.0020.0002] # OLD SOUTH ARABIAN LETTER LAMEDH -10A62 ; [.4A7F.0020.0002] # OLD SOUTH ARABIAN LETTER HETH -10A63 ; [.4A80.0020.0002] # OLD SOUTH ARABIAN LETTER MEM -10A64 ; [.4A81.0020.0002] # OLD SOUTH ARABIAN LETTER QOPH -10A65 ; [.4A82.0020.0002] # OLD SOUTH ARABIAN LETTER WAW -10A66 ; [.4A83.0020.0002] # OLD SOUTH ARABIAN LETTER SHIN -10A67 ; [.4A84.0020.0002] # OLD SOUTH ARABIAN LETTER RESH -10A68 ; [.4A85.0020.0002] # OLD SOUTH ARABIAN LETTER BETH -10A69 ; [.4A86.0020.0002] # OLD SOUTH ARABIAN LETTER TAW -10A6A ; [.4A87.0020.0002] # OLD SOUTH ARABIAN LETTER SAT -10A6B ; [.4A88.0020.0002] # OLD SOUTH ARABIAN LETTER KAPH -10A6C ; [.4A89.0020.0002] # OLD SOUTH ARABIAN LETTER NUN -10A6D ; [.4A8A.0020.0002] # OLD SOUTH ARABIAN LETTER KHETH -10A6E ; [.4A8B.0020.0002] # OLD SOUTH ARABIAN LETTER SADHE -10A6F ; [.4A8C.0020.0002] # OLD SOUTH ARABIAN LETTER SAMEKH -10A70 ; [.4A8D.0020.0002] # OLD SOUTH ARABIAN LETTER FE -10A71 ; [.4A8E.0020.0002] # OLD SOUTH ARABIAN LETTER ALEF -10A72 ; [.4A8F.0020.0002] # OLD SOUTH ARABIAN LETTER AYN -10A73 ; [.4A90.0020.0002] # OLD SOUTH ARABIAN LETTER DHADHE -10A74 ; [.4A91.0020.0002] # OLD SOUTH ARABIAN LETTER GIMEL -10A75 ; [.4A92.0020.0002] # OLD SOUTH ARABIAN LETTER DALETH -10A76 ; [.4A93.0020.0002] # OLD SOUTH ARABIAN LETTER GHAYN -10A77 ; [.4A94.0020.0002] # OLD SOUTH ARABIAN LETTER TETH -10A78 ; [.4A95.0020.0002] # OLD SOUTH ARABIAN LETTER ZAYN -10A79 ; [.4A96.0020.0002] # OLD SOUTH ARABIAN LETTER DHALETH -10A7A ; [.4A97.0020.0002] # OLD SOUTH ARABIAN LETTER YODH -10A7B ; [.4A98.0020.0002] # OLD SOUTH ARABIAN LETTER THAW -10A7C ; [.4A99.0020.0002] # OLD SOUTH ARABIAN LETTER THETH -10A80 ; [.4A9A.0020.0002] # OLD NORTH ARABIAN LETTER HEH -10A81 ; [.4A9B.0020.0002] # OLD NORTH ARABIAN LETTER LAM -10A82 ; [.4A9C.0020.0002] # OLD NORTH ARABIAN LETTER HAH -10A83 ; [.4A9D.0020.0002] # OLD NORTH ARABIAN LETTER MEEM -10A84 ; [.4A9E.0020.0002] # OLD NORTH ARABIAN LETTER QAF -10A85 ; [.4A9F.0020.0002] # OLD NORTH ARABIAN LETTER WAW -10A86 ; [.4AA0.0020.0002] # OLD NORTH ARABIAN LETTER ES-2 -10A87 ; [.4AA1.0020.0002] # OLD NORTH ARABIAN LETTER REH -10A88 ; [.4AA2.0020.0002] # OLD NORTH ARABIAN LETTER BEH -10A89 ; [.4AA3.0020.0002] # OLD NORTH ARABIAN LETTER TEH -10A8A ; [.4AA4.0020.0002] # OLD NORTH ARABIAN LETTER ES-1 -10A8B ; [.4AA5.0020.0002] # OLD NORTH ARABIAN LETTER KAF -10A8C ; [.4AA6.0020.0002] # OLD NORTH ARABIAN LETTER NOON -10A8D ; [.4AA7.0020.0002] # OLD NORTH ARABIAN LETTER KHAH -10A8E ; [.4AA8.0020.0002] # OLD NORTH ARABIAN LETTER SAD -10A8F ; [.4AA9.0020.0002] # OLD NORTH ARABIAN LETTER ES-3 -10A90 ; [.4AAA.0020.0002] # OLD NORTH ARABIAN LETTER FEH -10A91 ; [.4AAB.0020.0002] # OLD NORTH ARABIAN LETTER ALEF -10A92 ; [.4AAC.0020.0002] # OLD NORTH ARABIAN LETTER AIN -10A93 ; [.4AAD.0020.0002] # OLD NORTH ARABIAN LETTER DAD -10A94 ; [.4AAE.0020.0002] # OLD NORTH ARABIAN LETTER GEEM -10A95 ; [.4AAF.0020.0002] # OLD NORTH ARABIAN LETTER DAL -10A96 ; [.4AB0.0020.0002] # OLD NORTH ARABIAN LETTER GHAIN -10A97 ; [.4AB1.0020.0002] # OLD NORTH ARABIAN LETTER TAH -10A98 ; [.4AB2.0020.0002] # OLD NORTH ARABIAN LETTER ZAIN -10A99 ; [.4AB3.0020.0002] # OLD NORTH ARABIAN LETTER THAL -10A9A ; [.4AB4.0020.0002] # OLD NORTH ARABIAN LETTER YEH -10A9B ; [.4AB5.0020.0002] # OLD NORTH ARABIAN LETTER THEH -10A9C ; [.4AB6.0020.0002] # OLD NORTH ARABIAN LETTER ZAH -10B00 ; [.4AB7.0020.0002] # AVESTAN LETTER A -10B01 ; [.4AB8.0020.0002] # AVESTAN LETTER AA -10B02 ; [.4AB9.0020.0002] # AVESTAN LETTER AO -10B03 ; [.4ABA.0020.0002] # AVESTAN LETTER AAO -10B04 ; [.4ABB.0020.0002] # AVESTAN LETTER AN -10B05 ; [.4ABC.0020.0002] # AVESTAN LETTER AAN -10B06 ; [.4ABD.0020.0002] # AVESTAN LETTER AE -10B07 ; [.4ABE.0020.0002] # AVESTAN LETTER AEE -10B08 ; [.4ABF.0020.0002] # AVESTAN LETTER E -10B09 ; [.4AC0.0020.0002] # AVESTAN LETTER EE -10B0A ; [.4AC1.0020.0002] # AVESTAN LETTER O -10B0B ; [.4AC2.0020.0002] # AVESTAN LETTER OO -10B0C ; [.4AC3.0020.0002] # AVESTAN LETTER I -10B0D ; [.4AC4.0020.0002] # AVESTAN LETTER II -10B0E ; [.4AC5.0020.0002] # AVESTAN LETTER U -10B0F ; [.4AC6.0020.0002] # AVESTAN LETTER UU -10B10 ; [.4AC7.0020.0002] # AVESTAN LETTER KE -10B11 ; [.4AC8.0020.0002] # AVESTAN LETTER XE -10B12 ; [.4AC9.0020.0002] # AVESTAN LETTER XYE -10B13 ; [.4ACA.0020.0002] # AVESTAN LETTER XVE -10B14 ; [.4ACB.0020.0002] # AVESTAN LETTER GE -10B15 ; [.4ACC.0020.0002] # AVESTAN LETTER GGE -10B16 ; [.4ACD.0020.0002] # AVESTAN LETTER GHE -10B17 ; [.4ACE.0020.0002] # AVESTAN LETTER CE -10B18 ; [.4ACF.0020.0002] # AVESTAN LETTER JE -10B19 ; [.4AD0.0020.0002] # AVESTAN LETTER TE -10B1A ; [.4AD1.0020.0002] # AVESTAN LETTER THE -10B1B ; [.4AD2.0020.0002] # AVESTAN LETTER DE -10B1C ; [.4AD3.0020.0002] # AVESTAN LETTER DHE -10B1D ; [.4AD4.0020.0002] # AVESTAN LETTER TTE -10B1E ; [.4AD5.0020.0002] # AVESTAN LETTER PE -10B1F ; [.4AD6.0020.0002] # AVESTAN LETTER FE -10B20 ; [.4AD7.0020.0002] # AVESTAN LETTER BE -10B21 ; [.4AD8.0020.0002] # AVESTAN LETTER BHE -10B22 ; [.4AD9.0020.0002] # AVESTAN LETTER NGE -10B23 ; [.4ADA.0020.0002] # AVESTAN LETTER NGYE -10B24 ; [.4ADB.0020.0002] # AVESTAN LETTER NGVE -10B25 ; [.4ADC.0020.0002] # AVESTAN LETTER NE -10B26 ; [.4ADD.0020.0002] # AVESTAN LETTER NYE -10B27 ; [.4ADE.0020.0002] # AVESTAN LETTER NNE -10B28 ; [.4ADF.0020.0002] # AVESTAN LETTER ME -10B29 ; [.4AE0.0020.0002] # AVESTAN LETTER HME -10B2A ; [.4AE1.0020.0002] # AVESTAN LETTER YYE -10B2B ; [.4AE2.0020.0002] # AVESTAN LETTER YE -10B2C ; [.4AE3.0020.0002] # AVESTAN LETTER VE -10B2D ; [.4AE4.0020.0002] # AVESTAN LETTER RE -10B2E ; [.4AE4.0020.0004][.0000.0111.0004] # AVESTAN LETTER LE -10B2F ; [.4AE5.0020.0002] # AVESTAN LETTER SE -10B30 ; [.4AE6.0020.0002] # AVESTAN LETTER ZE -10B31 ; [.4AE7.0020.0002] # AVESTAN LETTER SHE -10B32 ; [.4AE8.0020.0002] # AVESTAN LETTER ZHE -10B33 ; [.4AE9.0020.0002] # AVESTAN LETTER SHYE -10B34 ; [.4AEA.0020.0002] # AVESTAN LETTER SSHE -10B35 ; [.4AEB.0020.0002] # AVESTAN LETTER HE -10860 ; [.4AEC.0020.0002] # PALMYRENE LETTER ALEPH -10861 ; [.4AED.0020.0002] # PALMYRENE LETTER BETH -10862 ; [.4AEE.0020.0002] # PALMYRENE LETTER GIMEL -10863 ; [.4AEF.0020.0002] # PALMYRENE LETTER DALETH -10864 ; [.4AF0.0020.0002] # PALMYRENE LETTER HE -10865 ; [.4AF1.0020.0002] # PALMYRENE LETTER WAW -10866 ; [.4AF2.0020.0002] # PALMYRENE LETTER ZAYIN -10867 ; [.4AF3.0020.0002] # PALMYRENE LETTER HETH -10868 ; [.4AF4.0020.0002] # PALMYRENE LETTER TETH -10869 ; [.4AF5.0020.0002] # PALMYRENE LETTER YODH -1086A ; [.4AF6.0020.0002] # PALMYRENE LETTER KAPH -1086B ; [.4AF7.0020.0002] # PALMYRENE LETTER LAMEDH -1086C ; [.4AF8.0020.0002] # PALMYRENE LETTER MEM -1086E ; [.4AF9.0020.0002] # PALMYRENE LETTER NUN -1086D ; [.4AF9.0020.0019] # PALMYRENE LETTER FINAL NUN -1086F ; [.4AFA.0020.0002] # PALMYRENE LETTER SAMEKH -10870 ; [.4AFB.0020.0002] # PALMYRENE LETTER AYIN -10871 ; [.4AFC.0020.0002] # PALMYRENE LETTER PE -10872 ; [.4AFD.0020.0002] # PALMYRENE LETTER SADHE -10873 ; [.4AFE.0020.0002] # PALMYRENE LETTER QOPH -10874 ; [.4AFF.0020.0002] # PALMYRENE LETTER RESH -10875 ; [.4B00.0020.0002] # PALMYRENE LETTER SHIN -10876 ; [.4B01.0020.0002] # PALMYRENE LETTER TAW -10881 ; [.4B02.0020.0002] # NABATAEAN LETTER ALEPH -10880 ; [.4B02.0020.0019] # NABATAEAN LETTER FINAL ALEPH -10883 ; [.4B03.0020.0002] # NABATAEAN LETTER BETH -10882 ; [.4B03.0020.0019] # NABATAEAN LETTER FINAL BETH -10884 ; [.4B04.0020.0002] # NABATAEAN LETTER GIMEL -10885 ; [.4B05.0020.0002] # NABATAEAN LETTER DALETH -10887 ; [.4B06.0020.0002] # NABATAEAN LETTER HE -10886 ; [.4B06.0020.0019] # NABATAEAN LETTER FINAL HE -10888 ; [.4B07.0020.0002] # NABATAEAN LETTER WAW -10889 ; [.4B08.0020.0002] # NABATAEAN LETTER ZAYIN -1088A ; [.4B09.0020.0002] # NABATAEAN LETTER HETH -1088B ; [.4B0A.0020.0002] # NABATAEAN LETTER TETH -1088D ; [.4B0B.0020.0002] # NABATAEAN LETTER YODH -1088C ; [.4B0B.0020.0019] # NABATAEAN LETTER FINAL YODH -1088F ; [.4B0C.0020.0002] # NABATAEAN LETTER KAPH -1088E ; [.4B0C.0020.0019] # NABATAEAN LETTER FINAL KAPH -10891 ; [.4B0D.0020.0002] # NABATAEAN LETTER LAMEDH -10890 ; [.4B0D.0020.0019] # NABATAEAN LETTER FINAL LAMEDH -10893 ; [.4B0E.0020.0002] # NABATAEAN LETTER MEM -10892 ; [.4B0E.0020.0019] # NABATAEAN LETTER FINAL MEM -10895 ; [.4B0F.0020.0002] # NABATAEAN LETTER NUN -10894 ; [.4B0F.0020.0019] # NABATAEAN LETTER FINAL NUN -10896 ; [.4B10.0020.0002] # NABATAEAN LETTER SAMEKH -10897 ; [.4B11.0020.0002] # NABATAEAN LETTER AYIN -10898 ; [.4B12.0020.0002] # NABATAEAN LETTER PE -10899 ; [.4B13.0020.0002] # NABATAEAN LETTER SADHE -1089A ; [.4B14.0020.0002] # NABATAEAN LETTER QOPH -1089B ; [.4B15.0020.0002] # NABATAEAN LETTER RESH -1089D ; [.4B16.0020.0002] # NABATAEAN LETTER SHIN -1089C ; [.4B16.0020.0019] # NABATAEAN LETTER FINAL SHIN -1089E ; [.4B17.0020.0002] # NABATAEAN LETTER TAW -108E0 ; [.4B18.0020.0002] # HATRAN LETTER ALEPH -108E1 ; [.4B19.0020.0002] # HATRAN LETTER BETH -108E2 ; [.4B1A.0020.0002] # HATRAN LETTER GIMEL -108E3 ; [.4B1B.0020.0002] # HATRAN LETTER DALETH-RESH -108E4 ; [.4B1C.0020.0002] # HATRAN LETTER HE -108E5 ; [.4B1D.0020.0002] # HATRAN LETTER WAW -108E6 ; [.4B1E.0020.0002] # HATRAN LETTER ZAYN -108E7 ; [.4B1F.0020.0002] # HATRAN LETTER HETH -108E8 ; [.4B20.0020.0002] # HATRAN LETTER TETH -108E9 ; [.4B21.0020.0002] # HATRAN LETTER YODH -108EA ; [.4B22.0020.0002] # HATRAN LETTER KAPH -108EB ; [.4B23.0020.0002] # HATRAN LETTER LAMEDH -108EC ; [.4B24.0020.0002] # HATRAN LETTER MEM -108ED ; [.4B25.0020.0002] # HATRAN LETTER NUN -108EE ; [.4B26.0020.0002] # HATRAN LETTER SAMEKH -108EF ; [.4B27.0020.0002] # HATRAN LETTER AYN -108F0 ; [.4B28.0020.0002] # HATRAN LETTER PE -108F1 ; [.4B29.0020.0002] # HATRAN LETTER SADHE -108F2 ; [.4B2A.0020.0002] # HATRAN LETTER QOPH -108F4 ; [.4B2B.0020.0002] # HATRAN LETTER SHIN -108F5 ; [.4B2C.0020.0002] # HATRAN LETTER TAW -10840 ; [.4B2D.0020.0002] # IMPERIAL ARAMAIC LETTER ALEPH -10841 ; [.4B2E.0020.0002] # IMPERIAL ARAMAIC LETTER BETH -10842 ; [.4B2F.0020.0002] # IMPERIAL ARAMAIC LETTER GIMEL -10843 ; [.4B30.0020.0002] # IMPERIAL ARAMAIC LETTER DALETH -10844 ; [.4B31.0020.0002] # IMPERIAL ARAMAIC LETTER HE -10845 ; [.4B32.0020.0002] # IMPERIAL ARAMAIC LETTER WAW -10846 ; [.4B33.0020.0002] # IMPERIAL ARAMAIC LETTER ZAYIN -10847 ; [.4B34.0020.0002] # IMPERIAL ARAMAIC LETTER HETH -10848 ; [.4B35.0020.0002] # IMPERIAL ARAMAIC LETTER TETH -10849 ; [.4B36.0020.0002] # IMPERIAL ARAMAIC LETTER YODH -1084A ; [.4B37.0020.0002] # IMPERIAL ARAMAIC LETTER KAPH -1084B ; [.4B38.0020.0002] # IMPERIAL ARAMAIC LETTER LAMEDH -1084C ; [.4B39.0020.0002] # IMPERIAL ARAMAIC LETTER MEM -1084D ; [.4B3A.0020.0002] # IMPERIAL ARAMAIC LETTER NUN -1084E ; [.4B3B.0020.0002] # IMPERIAL ARAMAIC LETTER SAMEKH -1084F ; [.4B3C.0020.0002] # IMPERIAL ARAMAIC LETTER AYIN -10850 ; [.4B3D.0020.0002] # IMPERIAL ARAMAIC LETTER PE -10851 ; [.4B3E.0020.0002] # IMPERIAL ARAMAIC LETTER SADHE -10852 ; [.4B3F.0020.0002] # IMPERIAL ARAMAIC LETTER QOPH -10853 ; [.4B40.0020.0002] # IMPERIAL ARAMAIC LETTER RESH -10854 ; [.4B41.0020.0002] # IMPERIAL ARAMAIC LETTER SHIN -10855 ; [.4B42.0020.0002] # IMPERIAL ARAMAIC LETTER TAW -10B40 ; [.4B43.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER ALEPH -10B41 ; [.4B44.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER BETH -10B42 ; [.4B45.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER GIMEL -10B43 ; [.4B46.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER DALETH -10B44 ; [.4B47.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER HE -10B45 ; [.4B48.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER WAW -10B46 ; [.4B49.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER ZAYIN -10B47 ; [.4B4A.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER HETH -10B48 ; [.4B4B.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER TETH -10B49 ; [.4B4C.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER YODH -10B4A ; [.4B4D.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER KAPH -10B4B ; [.4B4E.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER LAMEDH -10B4C ; [.4B4F.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER MEM -10B4D ; [.4B50.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER NUN -10B4E ; [.4B51.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER SAMEKH -10B4F ; [.4B52.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER AYIN -10B50 ; [.4B53.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER PE -10B51 ; [.4B54.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER SADHE -10B52 ; [.4B55.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER QOPH -10B53 ; [.4B56.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER RESH -10B54 ; [.4B57.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER SHIN -10B55 ; [.4B58.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER TAW -10B60 ; [.4B59.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER ALEPH -10B61 ; [.4B5A.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER BETH -10B62 ; [.4B5B.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER GIMEL -10B63 ; [.4B5C.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER DALETH -10B64 ; [.4B5D.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER HE -10B65 ; [.4B5E.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH -10B66 ; [.4B5F.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER ZAYIN -10B67 ; [.4B60.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER HETH -10B68 ; [.4B61.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER TETH -10B69 ; [.4B62.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER YODH -10B6A ; [.4B63.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER KAPH -10B6B ; [.4B64.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER LAMEDH -10B6C ; [.4B65.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH -10B6D ; [.4B66.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER NUN -10B6E ; [.4B67.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER SAMEKH -10B6F ; [.4B68.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER PE -10B70 ; [.4B69.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER SADHE -10B71 ; [.4B6A.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER SHIN -10B72 ; [.4B6B.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER TAW -10B80 ; [.4B6C.0020.0002] # PSALTER PAHLAVI LETTER ALEPH -10B81 ; [.4B6D.0020.0002] # PSALTER PAHLAVI LETTER BETH -10B82 ; [.4B6E.0020.0002] # PSALTER PAHLAVI LETTER GIMEL -10B83 ; [.4B6F.0020.0002] # PSALTER PAHLAVI LETTER DALETH -10B84 ; [.4B70.0020.0002] # PSALTER PAHLAVI LETTER HE -10B85 ; [.4B71.0020.0002] # PSALTER PAHLAVI LETTER WAW-AYIN-RESH -10B86 ; [.4B72.0020.0002] # PSALTER PAHLAVI LETTER ZAYIN -10B87 ; [.4B73.0020.0002] # PSALTER PAHLAVI LETTER HETH -10B88 ; [.4B74.0020.0002] # PSALTER PAHLAVI LETTER YODH -10B89 ; [.4B75.0020.0002] # PSALTER PAHLAVI LETTER KAPH -10B8A ; [.4B76.0020.0002] # PSALTER PAHLAVI LETTER LAMEDH -10B8B ; [.4B77.0020.0002] # PSALTER PAHLAVI LETTER MEM-QOPH -10B8C ; [.4B78.0020.0002] # PSALTER PAHLAVI LETTER NUN -10B8D ; [.4B79.0020.0002] # PSALTER PAHLAVI LETTER SAMEKH -10B8E ; [.4B7A.0020.0002] # PSALTER PAHLAVI LETTER PE -10B8F ; [.4B7B.0020.0002] # PSALTER PAHLAVI LETTER SADHE -10B90 ; [.4B7C.0020.0002] # PSALTER PAHLAVI LETTER SHIN -10B91 ; [.4B7D.0020.0002] # PSALTER PAHLAVI LETTER TAW -10AC0 ; [.4B7E.0020.0002] # MANICHAEAN LETTER ALEPH -10AC1 ; [.4B7F.0020.0002] # MANICHAEAN LETTER BETH -10AC2 ; [.4B80.0020.0002] # MANICHAEAN LETTER BHETH -10AC3 ; [.4B81.0020.0002] # MANICHAEAN LETTER GIMEL -10AC4 ; [.4B82.0020.0002] # MANICHAEAN LETTER GHIMEL -10AC5 ; [.4B83.0020.0002] # MANICHAEAN LETTER DALETH -10AC6 ; [.4B84.0020.0002] # MANICHAEAN LETTER HE -10AC7 ; [.4B85.0020.0002] # MANICHAEAN LETTER WAW -10AC8 ; [.4B85.0020.0004][.0000.0112.0004] # MANICHAEAN SIGN UD -10AC9 ; [.4B86.0020.0002] # MANICHAEAN LETTER ZAYIN -10ACA ; [.4B87.0020.0002] # MANICHAEAN LETTER ZHAYIN -10ACB ; [.4B88.0020.0002] # MANICHAEAN LETTER JAYIN -10ACC ; [.4B89.0020.0002] # MANICHAEAN LETTER JHAYIN -10ACD ; [.4B8A.0020.0002] # MANICHAEAN LETTER HETH -10ACE ; [.4B8B.0020.0002] # MANICHAEAN LETTER TETH -10ACF ; [.4B8C.0020.0002] # MANICHAEAN LETTER YODH -10AD0 ; [.4B8D.0020.0002] # MANICHAEAN LETTER KAPH -10AD1 ; [.4B8E.0020.0002] # MANICHAEAN LETTER XAPH -10AD2 ; [.4B8F.0020.0002] # MANICHAEAN LETTER KHAPH -10AD3 ; [.4B90.0020.0002] # MANICHAEAN LETTER LAMEDH -10AD4 ; [.4B91.0020.0002] # MANICHAEAN LETTER DHAMEDH -10AD5 ; [.4B92.0020.0002] # MANICHAEAN LETTER THAMEDH -10AD6 ; [.4B93.0020.0002] # MANICHAEAN LETTER MEM -10AD7 ; [.4B94.0020.0002] # MANICHAEAN LETTER NUN -10AD8 ; [.4B95.0020.0002] # MANICHAEAN LETTER SAMEKH -10AD9 ; [.4B96.0020.0002] # MANICHAEAN LETTER AYIN -10ADA ; [.4B97.0020.0002] # MANICHAEAN LETTER AAYIN -10ADB ; [.4B98.0020.0002] # MANICHAEAN LETTER PE -10ADC ; [.4B99.0020.0002] # MANICHAEAN LETTER FE -10ADD ; [.4B9A.0020.0002] # MANICHAEAN LETTER SADHE -10ADE ; [.4B9B.0020.0002] # MANICHAEAN LETTER QOPH -10ADF ; [.4B9C.0020.0002] # MANICHAEAN LETTER XOPH -10AE0 ; [.4B9D.0020.0002] # MANICHAEAN LETTER QHOPH -10AE1 ; [.4B9E.0020.0002] # MANICHAEAN LETTER RESH -10AE2 ; [.4B9F.0020.0002] # MANICHAEAN LETTER SHIN -10AE3 ; [.4BA0.0020.0002] # MANICHAEAN LETTER SSHIN -10AE4 ; [.4BA1.0020.0002] # MANICHAEAN LETTER TAW -10380 ; [.4BA2.0020.0002] # UGARITIC LETTER ALPA -10381 ; [.4BA3.0020.0002] # UGARITIC LETTER BETA -10382 ; [.4BA4.0020.0002] # UGARITIC LETTER GAMLA -10383 ; [.4BA5.0020.0002] # UGARITIC LETTER KHA -10384 ; [.4BA6.0020.0002] # UGARITIC LETTER DELTA -10385 ; [.4BA7.0020.0002] # UGARITIC LETTER HO -10386 ; [.4BA8.0020.0002] # UGARITIC LETTER WO -10387 ; [.4BA9.0020.0002] # UGARITIC LETTER ZETA -10388 ; [.4BAA.0020.0002] # UGARITIC LETTER HOTA -10389 ; [.4BAB.0020.0002] # UGARITIC LETTER TET -1038A ; [.4BAC.0020.0002] # UGARITIC LETTER YOD -1038B ; [.4BAD.0020.0002] # UGARITIC LETTER KAF -1038C ; [.4BAE.0020.0002] # UGARITIC LETTER SHIN -1038D ; [.4BAF.0020.0002] # UGARITIC LETTER LAMDA -1038E ; [.4BB0.0020.0002] # UGARITIC LETTER MEM -1038F ; [.4BB1.0020.0002] # UGARITIC LETTER DHAL -10390 ; [.4BB2.0020.0002] # UGARITIC LETTER NUN -10391 ; [.4BB3.0020.0002] # UGARITIC LETTER ZU -10392 ; [.4BB4.0020.0002] # UGARITIC LETTER SAMKA -10393 ; [.4BB5.0020.0002] # UGARITIC LETTER AIN -10394 ; [.4BB6.0020.0002] # UGARITIC LETTER PU -10395 ; [.4BB7.0020.0002] # UGARITIC LETTER SADE -10396 ; [.4BB8.0020.0002] # UGARITIC LETTER QOPA -10397 ; [.4BB9.0020.0002] # UGARITIC LETTER RASHA -10398 ; [.4BBA.0020.0002] # UGARITIC LETTER THANNA -10399 ; [.4BBB.0020.0002] # UGARITIC LETTER GHAIN -1039A ; [.4BBC.0020.0002] # UGARITIC LETTER TO -1039B ; [.4BBD.0020.0002] # UGARITIC LETTER I -1039C ; [.4BBE.0020.0002] # UGARITIC LETTER U -1039D ; [.4BBF.0020.0002] # UGARITIC LETTER SSU -103A0 ; [.4BC0.0020.0002] # OLD PERSIAN SIGN A -103A1 ; [.4BC1.0020.0002] # OLD PERSIAN SIGN I -103A2 ; [.4BC2.0020.0002] # OLD PERSIAN SIGN U -103A3 ; [.4BC3.0020.0002] # OLD PERSIAN SIGN KA -103A4 ; [.4BC4.0020.0002] # OLD PERSIAN SIGN KU -103A5 ; [.4BC5.0020.0002] # OLD PERSIAN SIGN GA -103A6 ; [.4BC6.0020.0002] # OLD PERSIAN SIGN GU -103A7 ; [.4BC7.0020.0002] # OLD PERSIAN SIGN XA -103A8 ; [.4BC8.0020.0002] # OLD PERSIAN SIGN CA -103A9 ; [.4BC9.0020.0002] # OLD PERSIAN SIGN JA -103AA ; [.4BCA.0020.0002] # OLD PERSIAN SIGN JI -103AB ; [.4BCB.0020.0002] # OLD PERSIAN SIGN TA -103AC ; [.4BCC.0020.0002] # OLD PERSIAN SIGN TU -103AD ; [.4BCD.0020.0002] # OLD PERSIAN SIGN DA -103AE ; [.4BCE.0020.0002] # OLD PERSIAN SIGN DI -103AF ; [.4BCF.0020.0002] # OLD PERSIAN SIGN DU -103B0 ; [.4BD0.0020.0002] # OLD PERSIAN SIGN THA -103B1 ; [.4BD1.0020.0002] # OLD PERSIAN SIGN PA -103B2 ; [.4BD2.0020.0002] # OLD PERSIAN SIGN BA -103B3 ; [.4BD3.0020.0002] # OLD PERSIAN SIGN FA -103B4 ; [.4BD4.0020.0002] # OLD PERSIAN SIGN NA -103B5 ; [.4BD5.0020.0002] # OLD PERSIAN SIGN NU -103B6 ; [.4BD6.0020.0002] # OLD PERSIAN SIGN MA -103B7 ; [.4BD7.0020.0002] # OLD PERSIAN SIGN MI -103B8 ; [.4BD8.0020.0002] # OLD PERSIAN SIGN MU -103B9 ; [.4BD9.0020.0002] # OLD PERSIAN SIGN YA -103BA ; [.4BDA.0020.0002] # OLD PERSIAN SIGN VA -103BB ; [.4BDB.0020.0002] # OLD PERSIAN SIGN VI -103BC ; [.4BDC.0020.0002] # OLD PERSIAN SIGN RA -103BD ; [.4BDD.0020.0002] # OLD PERSIAN SIGN RU -103BE ; [.4BDE.0020.0002] # OLD PERSIAN SIGN LA -103BF ; [.4BDF.0020.0002] # OLD PERSIAN SIGN SA -103C0 ; [.4BE0.0020.0002] # OLD PERSIAN SIGN ZA -103C1 ; [.4BE1.0020.0002] # OLD PERSIAN SIGN SHA -103C2 ; [.4BE2.0020.0002] # OLD PERSIAN SIGN SSA -103C3 ; [.4BE3.0020.0002] # OLD PERSIAN SIGN HA -103C8 ; [.4BE4.0020.0002] # OLD PERSIAN SIGN AURAMAZDAA -103C9 ; [.4BE5.0020.0002] # OLD PERSIAN SIGN AURAMAZDAA-2 -103CA ; [.4BE6.0020.0002] # OLD PERSIAN SIGN AURAMAZDAAHA -103CB ; [.4BE7.0020.0002] # OLD PERSIAN SIGN XSHAAYATHIYA -103CC ; [.4BE8.0020.0002] # OLD PERSIAN SIGN DAHYAAUSH -103CD ; [.4BE9.0020.0002] # OLD PERSIAN SIGN DAHYAAUSH-2 -103CE ; [.4BEA.0020.0002] # OLD PERSIAN SIGN BAGA -103CF ; [.4BEB.0020.0002] # OLD PERSIAN SIGN BUUMISH -12000 ; [.4BEC.0020.0002] # CUNEIFORM SIGN A -12001 ; [.4BED.0020.0002] # CUNEIFORM SIGN A TIMES A -12002 ; [.4BEE.0020.0002] # CUNEIFORM SIGN A TIMES BAD -12003 ; [.4BEF.0020.0002] # CUNEIFORM SIGN A TIMES GAN2 TENU -12004 ; [.4BF0.0020.0002] # CUNEIFORM SIGN A TIMES HA -12005 ; [.4BF1.0020.0002] # CUNEIFORM SIGN A TIMES IGI -12006 ; [.4BF2.0020.0002] # CUNEIFORM SIGN A TIMES LAGAR GUNU -12007 ; [.4BF3.0020.0002] # CUNEIFORM SIGN A TIMES MUSH -12008 ; [.4BF4.0020.0002] # CUNEIFORM SIGN A TIMES SAG -12009 ; [.4BF5.0020.0002] # CUNEIFORM SIGN A2 -1200A ; [.4BF6.0020.0002] # CUNEIFORM SIGN AB -1200B ; [.4BF7.0020.0002] # CUNEIFORM SIGN AB TIMES ASH2 -1200C ; [.4BF8.0020.0002] # CUNEIFORM SIGN AB TIMES DUN3 GUNU -1200D ; [.4BF9.0020.0002] # CUNEIFORM SIGN AB TIMES GAL -1200E ; [.4BFA.0020.0002] # CUNEIFORM SIGN AB TIMES GAN2 TENU -1200F ; [.4BFB.0020.0002] # CUNEIFORM SIGN AB TIMES HA -12010 ; [.4BFC.0020.0002] # CUNEIFORM SIGN AB TIMES IGI GUNU -12011 ; [.4BFD.0020.0002] # CUNEIFORM SIGN AB TIMES IMIN -12012 ; [.4BFE.0020.0002] # CUNEIFORM SIGN AB TIMES LAGAB -12013 ; [.4BFF.0020.0002] # CUNEIFORM SIGN AB TIMES SHESH -12014 ; [.4C00.0020.0002] # CUNEIFORM SIGN AB TIMES U PLUS U PLUS U -12015 ; [.4C01.0020.0002] # CUNEIFORM SIGN AB GUNU -12016 ; [.4C02.0020.0002] # CUNEIFORM SIGN AB2 -12017 ; [.4C03.0020.0002] # CUNEIFORM SIGN AB2 TIMES BALAG -12018 ; [.4C04.0020.0002] # CUNEIFORM SIGN AB2 TIMES GAN2 TENU -12019 ; [.4C05.0020.0002] # CUNEIFORM SIGN AB2 TIMES ME PLUS EN -1201A ; [.4C06.0020.0002] # CUNEIFORM SIGN AB2 TIMES SHA3 -1201B ; [.4C07.0020.0002] # CUNEIFORM SIGN AB2 TIMES TAK4 -1201C ; [.4C08.0020.0002] # CUNEIFORM SIGN AD -1201D ; [.4C09.0020.0002] # CUNEIFORM SIGN AK -1201E ; [.4C0A.0020.0002] # CUNEIFORM SIGN AK TIMES ERIN2 -1201F ; [.4C0B.0020.0002] # CUNEIFORM SIGN AK TIMES SHITA PLUS GISH -12020 ; [.4C0C.0020.0002] # CUNEIFORM SIGN AL -12021 ; [.4C0D.0020.0002] # CUNEIFORM SIGN AL TIMES AL -12022 ; [.4C0E.0020.0002] # CUNEIFORM SIGN AL TIMES DIM2 -12023 ; [.4C0F.0020.0002] # CUNEIFORM SIGN AL TIMES GISH -12024 ; [.4C10.0020.0002] # CUNEIFORM SIGN AL TIMES HA -12025 ; [.4C11.0020.0002] # CUNEIFORM SIGN AL TIMES KAD3 -12026 ; [.4C12.0020.0002] # CUNEIFORM SIGN AL TIMES KI -12027 ; [.4C13.0020.0002] # CUNEIFORM SIGN AL TIMES SHE -12028 ; [.4C14.0020.0002] # CUNEIFORM SIGN AL TIMES USH -12029 ; [.4C15.0020.0002] # CUNEIFORM SIGN ALAN -1202A ; [.4C16.0020.0002] # CUNEIFORM SIGN ALEPH -1202B ; [.4C17.0020.0002] # CUNEIFORM SIGN AMAR -1202C ; [.4C18.0020.0002] # CUNEIFORM SIGN AMAR TIMES SHE -1202D ; [.4C19.0020.0002] # CUNEIFORM SIGN AN -1202E ; [.4C1A.0020.0002] # CUNEIFORM SIGN AN OVER AN -1202F ; [.4C1B.0020.0002] # CUNEIFORM SIGN AN THREE TIMES -12030 ; [.4C1C.0020.0002] # CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA -12031 ; [.4C1D.0020.0002] # CUNEIFORM SIGN AN PLUS NAGA SQUARED -12032 ; [.4C1E.0020.0002] # CUNEIFORM SIGN ANSHE -12033 ; [.4C1F.0020.0002] # CUNEIFORM SIGN APIN -12034 ; [.4C20.0020.0002] # CUNEIFORM SIGN ARAD -12035 ; [.4C21.0020.0002] # CUNEIFORM SIGN ARAD TIMES KUR -12036 ; [.4C22.0020.0002] # CUNEIFORM SIGN ARKAB -12037 ; [.4C23.0020.0002] # CUNEIFORM SIGN ASAL2 -12038 ; [.4C24.0020.0002] # CUNEIFORM SIGN ASH -12039 ; [.4C25.0020.0002] # CUNEIFORM SIGN ASH ZIDA TENU -1203A ; [.4C26.0020.0002] # CUNEIFORM SIGN ASH KABA TENU -1203B ; [.4C27.0020.0002] # CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP -1203C ; [.4C28.0020.0002] # CUNEIFORM SIGN ASH OVER ASH OVER ASH -1203D ; [.4C29.0020.0002] # CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH -1203E ; [.4C2A.0020.0002] # CUNEIFORM SIGN ASH2 -1203F ; [.4C2B.0020.0002] # CUNEIFORM SIGN ASHGAB -12040 ; [.4C2C.0020.0002] # CUNEIFORM SIGN BA -12041 ; [.4C2D.0020.0002] # CUNEIFORM SIGN BAD -12042 ; [.4C2E.0020.0002] # CUNEIFORM SIGN BAG3 -12043 ; [.4C2F.0020.0002] # CUNEIFORM SIGN BAHAR2 -12044 ; [.4C30.0020.0002] # CUNEIFORM SIGN BAL -12045 ; [.4C31.0020.0002] # CUNEIFORM SIGN BAL OVER BAL -12046 ; [.4C32.0020.0002] # CUNEIFORM SIGN BALAG -12047 ; [.4C33.0020.0002] # CUNEIFORM SIGN BAR -12048 ; [.4C34.0020.0002] # CUNEIFORM SIGN BARA2 -12049 ; [.4C35.0020.0002] # CUNEIFORM SIGN BI -1204A ; [.4C36.0020.0002] # CUNEIFORM SIGN BI TIMES A -1204B ; [.4C37.0020.0002] # CUNEIFORM SIGN BI TIMES GAR -1204C ; [.4C38.0020.0002] # CUNEIFORM SIGN BI TIMES IGI GUNU -1204D ; [.4C39.0020.0002] # CUNEIFORM SIGN BU -1204E ; [.4C3A.0020.0002] # CUNEIFORM SIGN BU OVER BU AB -1204F ; [.4C3B.0020.0002] # CUNEIFORM SIGN BU OVER BU UN -12050 ; [.4C3C.0020.0002] # CUNEIFORM SIGN BU CROSSING BU -12051 ; [.4C3D.0020.0002] # CUNEIFORM SIGN BULUG -12052 ; [.4C3E.0020.0002] # CUNEIFORM SIGN BULUG OVER BULUG -12053 ; [.4C3F.0020.0002] # CUNEIFORM SIGN BUR -12054 ; [.4C40.0020.0002] # CUNEIFORM SIGN BUR2 -12055 ; [.4C41.0020.0002] # CUNEIFORM SIGN DA -12056 ; [.4C42.0020.0002] # CUNEIFORM SIGN DAG -12057 ; [.4C43.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH -12058 ; [.4C44.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES AMAR -12059 ; [.4C45.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES BALAG -1205A ; [.4C46.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES BI -1205B ; [.4C47.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES GA -1205C ; [.4C48.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH -1205D ; [.4C49.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES GI -1205E ; [.4C4A.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES GIR2 -1205F ; [.4C4B.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES GUD -12060 ; [.4C4C.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES HA -12061 ; [.4C4D.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES IR -12062 ; [.4C4E.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU -12063 ; [.4C4F.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES KAK -12064 ; [.4C50.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES LA -12065 ; [.4C51.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES LU -12066 ; [.4C52.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2 -12067 ; [.4C53.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES LUM -12068 ; [.4C54.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES NE -12069 ; [.4C55.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP -1206A ; [.4C56.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES SI -1206B ; [.4C57.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES TAK4 -1206C ; [.4C58.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2 -1206D ; [.4C59.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES USH -1206E ; [.4C5A.0020.0002] # CUNEIFORM SIGN DAM -1206F ; [.4C5B.0020.0002] # CUNEIFORM SIGN DAR -12070 ; [.4C5C.0020.0002] # CUNEIFORM SIGN DARA3 -12071 ; [.4C5D.0020.0002] # CUNEIFORM SIGN DARA4 -12072 ; [.4C5E.0020.0002] # CUNEIFORM SIGN DI -12073 ; [.4C5F.0020.0002] # CUNEIFORM SIGN DIB -12074 ; [.4C60.0020.0002] # CUNEIFORM SIGN DIM -12075 ; [.4C61.0020.0002] # CUNEIFORM SIGN DIM TIMES SHE -12076 ; [.4C62.0020.0002] # CUNEIFORM SIGN DIM2 -12077 ; [.4C63.0020.0002] # CUNEIFORM SIGN DIN -12078 ; [.4C64.0020.0002] # CUNEIFORM SIGN DIN KASKAL U GUNU DISH -12079 ; [.4C65.0020.0002] # CUNEIFORM SIGN DISH -1207A ; [.4C66.0020.0002] # CUNEIFORM SIGN DU -1207B ; [.4C67.0020.0002] # CUNEIFORM SIGN DU OVER DU -1207C ; [.4C68.0020.0002] # CUNEIFORM SIGN DU GUNU -1207D ; [.4C69.0020.0002] # CUNEIFORM SIGN DU SHESHIG -1207E ; [.4C6A.0020.0002] # CUNEIFORM SIGN DUB -1207F ; [.4C6B.0020.0002] # CUNEIFORM SIGN DUB TIMES ESH2 -12080 ; [.4C6C.0020.0002] # CUNEIFORM SIGN DUB2 -12081 ; [.4C6D.0020.0002] # CUNEIFORM SIGN DUG -12082 ; [.4C6E.0020.0002] # CUNEIFORM SIGN DUGUD -12083 ; [.4C6F.0020.0002] # CUNEIFORM SIGN DUH -12084 ; [.4C70.0020.0002] # CUNEIFORM SIGN DUN -12085 ; [.4C71.0020.0002] # CUNEIFORM SIGN DUN3 -12086 ; [.4C72.0020.0002] # CUNEIFORM SIGN DUN3 GUNU -12087 ; [.4C73.0020.0002] # CUNEIFORM SIGN DUN3 GUNU GUNU -12088 ; [.4C74.0020.0002] # CUNEIFORM SIGN DUN4 -12089 ; [.4C75.0020.0002] # CUNEIFORM SIGN DUR2 -1208A ; [.4C76.0020.0002] # CUNEIFORM SIGN E -1208B ; [.4C77.0020.0002] # CUNEIFORM SIGN E TIMES PAP -1208C ; [.4C78.0020.0002] # CUNEIFORM SIGN E OVER E NUN OVER NUN -1208D ; [.4C79.0020.0002] # CUNEIFORM SIGN E2 -1208E ; [.4C7A.0020.0002] # CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA -1208F ; [.4C7B.0020.0002] # CUNEIFORM SIGN E2 TIMES GAR -12090 ; [.4C7C.0020.0002] # CUNEIFORM SIGN E2 TIMES MI -12091 ; [.4C7D.0020.0002] # CUNEIFORM SIGN E2 TIMES SAL -12092 ; [.4C7E.0020.0002] # CUNEIFORM SIGN E2 TIMES SHE -12093 ; [.4C7F.0020.0002] # CUNEIFORM SIGN E2 TIMES U -12094 ; [.4C80.0020.0002] # CUNEIFORM SIGN EDIN -12095 ; [.4C81.0020.0002] # CUNEIFORM SIGN EGIR -12096 ; [.4C82.0020.0002] # CUNEIFORM SIGN EL -12097 ; [.4C83.0020.0002] # CUNEIFORM SIGN EN -12098 ; [.4C84.0020.0002] # CUNEIFORM SIGN EN TIMES GAN2 -12099 ; [.4C85.0020.0002] # CUNEIFORM SIGN EN TIMES GAN2 TENU -1209A ; [.4C86.0020.0002] # CUNEIFORM SIGN EN TIMES ME -1209B ; [.4C87.0020.0002] # CUNEIFORM SIGN EN CROSSING EN -1209C ; [.4C88.0020.0002] # CUNEIFORM SIGN EN OPPOSING EN -1209D ; [.4C89.0020.0002] # CUNEIFORM SIGN EN SQUARED -1209E ; [.4C8A.0020.0002] # CUNEIFORM SIGN EREN -1209F ; [.4C8B.0020.0002] # CUNEIFORM SIGN ERIN2 -120A0 ; [.4C8C.0020.0002] # CUNEIFORM SIGN ESH2 -120A1 ; [.4C8D.0020.0002] # CUNEIFORM SIGN EZEN -120A2 ; [.4C8E.0020.0002] # CUNEIFORM SIGN EZEN TIMES A -120A3 ; [.4C8F.0020.0002] # CUNEIFORM SIGN EZEN TIMES A PLUS LAL -120A4 ; [.4C90.0020.0002] # CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL -120A5 ; [.4C91.0020.0002] # CUNEIFORM SIGN EZEN TIMES AN -120A6 ; [.4C92.0020.0002] # CUNEIFORM SIGN EZEN TIMES BAD -120A7 ; [.4C93.0020.0002] # CUNEIFORM SIGN EZEN TIMES DUN3 GUNU -120A8 ; [.4C94.0020.0002] # CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU -120A9 ; [.4C95.0020.0002] # CUNEIFORM SIGN EZEN TIMES HA -120AA ; [.4C96.0020.0002] # CUNEIFORM SIGN EZEN TIMES HA GUNU -120AB ; [.4C97.0020.0002] # CUNEIFORM SIGN EZEN TIMES IGI GUNU -120AC ; [.4C98.0020.0002] # CUNEIFORM SIGN EZEN TIMES KASKAL -120AD ; [.4C99.0020.0002] # CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED -120AE ; [.4C9A.0020.0002] # CUNEIFORM SIGN EZEN TIMES KU3 -120AF ; [.4C9B.0020.0002] # CUNEIFORM SIGN EZEN TIMES LA -120B0 ; [.4C9C.0020.0002] # CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL -120B1 ; [.4C9D.0020.0002] # CUNEIFORM SIGN EZEN TIMES LI -120B2 ; [.4C9E.0020.0002] # CUNEIFORM SIGN EZEN TIMES LU -120B3 ; [.4C9F.0020.0002] # CUNEIFORM SIGN EZEN TIMES U2 -120B4 ; [.4CA0.0020.0002] # CUNEIFORM SIGN EZEN TIMES UD -120B5 ; [.4CA1.0020.0002] # CUNEIFORM SIGN GA -120B6 ; [.4CA2.0020.0002] # CUNEIFORM SIGN GA GUNU -120B7 ; [.4CA3.0020.0002] # CUNEIFORM SIGN GA2 -120B8 ; [.4CA4.0020.0002] # CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA -120B9 ; [.4CA5.0020.0002] # CUNEIFORM SIGN GA2 TIMES A PLUS HA -120BA ; [.4CA6.0020.0002] # CUNEIFORM SIGN GA2 TIMES A PLUS IGI -120BB ; [.4CA7.0020.0002] # CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB -120BC ; [.4CA8.0020.0002] # CUNEIFORM SIGN GA2 TIMES AN -120BD ; [.4CA9.0020.0002] # CUNEIFORM SIGN GA2 TIMES ASH -120BE ; [.4CAA.0020.0002] # CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL -120BF ; [.4CAB.0020.0002] # CUNEIFORM SIGN GA2 TIMES BAD -120C0 ; [.4CAC.0020.0002] # CUNEIFORM SIGN GA2 TIMES BAR PLUS RA -120C1 ; [.4CAD.0020.0002] # CUNEIFORM SIGN GA2 TIMES BUR -120C2 ; [.4CAE.0020.0002] # CUNEIFORM SIGN GA2 TIMES BUR PLUS RA -120C3 ; [.4CAF.0020.0002] # CUNEIFORM SIGN GA2 TIMES DA -120C4 ; [.4CB0.0020.0002] # CUNEIFORM SIGN GA2 TIMES DI -120C5 ; [.4CB1.0020.0002] # CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE -120C6 ; [.4CB2.0020.0002] # CUNEIFORM SIGN GA2 TIMES DUB -120C7 ; [.4CB3.0020.0002] # CUNEIFORM SIGN GA2 TIMES EL -120C8 ; [.4CB4.0020.0002] # CUNEIFORM SIGN GA2 TIMES EL PLUS LA -120C9 ; [.4CB5.0020.0002] # CUNEIFORM SIGN GA2 TIMES EN -120CA ; [.4CB6.0020.0002] # CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU -120CB ; [.4CB7.0020.0002] # CUNEIFORM SIGN GA2 TIMES GAN2 TENU -120CC ; [.4CB8.0020.0002] # CUNEIFORM SIGN GA2 TIMES GAR -120CD ; [.4CB9.0020.0002] # CUNEIFORM SIGN GA2 TIMES GI -120CE ; [.4CBA.0020.0002] # CUNEIFORM SIGN GA2 TIMES GI4 -120CF ; [.4CBB.0020.0002] # CUNEIFORM SIGN GA2 TIMES GI4 PLUS A -120D0 ; [.4CBC.0020.0002] # CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU -120D1 ; [.4CBD.0020.0002] # CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2 -120D2 ; [.4CBE.0020.0002] # CUNEIFORM SIGN GA2 TIMES HAL -120D3 ; [.4CBF.0020.0002] # CUNEIFORM SIGN GA2 TIMES HAL PLUS LA -120D4 ; [.4CC0.0020.0002] # CUNEIFORM SIGN GA2 TIMES HI PLUS LI -120D5 ; [.4CC1.0020.0002] # CUNEIFORM SIGN GA2 TIMES HUB2 -120D6 ; [.4CC2.0020.0002] # CUNEIFORM SIGN GA2 TIMES IGI GUNU -120D7 ; [.4CC3.0020.0002] # CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH -120D8 ; [.4CC4.0020.0002] # CUNEIFORM SIGN GA2 TIMES KAK -120D9 ; [.4CC5.0020.0002] # CUNEIFORM SIGN GA2 TIMES KASKAL -120DA ; [.4CC6.0020.0002] # CUNEIFORM SIGN GA2 TIMES KID -120DB ; [.4CC7.0020.0002] # CUNEIFORM SIGN GA2 TIMES KID PLUS LAL -120DC ; [.4CC8.0020.0002] # CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN -120DD ; [.4CC9.0020.0002] # CUNEIFORM SIGN GA2 TIMES LA -120DE ; [.4CCA.0020.0002] # CUNEIFORM SIGN GA2 TIMES ME PLUS EN -120DF ; [.4CCB.0020.0002] # CUNEIFORM SIGN GA2 TIMES MI -120E0 ; [.4CCC.0020.0002] # CUNEIFORM SIGN GA2 TIMES NUN -120E1 ; [.4CCD.0020.0002] # CUNEIFORM SIGN GA2 TIMES NUN OVER NUN -120E2 ; [.4CCE.0020.0002] # CUNEIFORM SIGN GA2 TIMES PA -120E3 ; [.4CCF.0020.0002] # CUNEIFORM SIGN GA2 TIMES SAL -120E4 ; [.4CD0.0020.0002] # CUNEIFORM SIGN GA2 TIMES SAR -120E5 ; [.4CD1.0020.0002] # CUNEIFORM SIGN GA2 TIMES SHE -120E6 ; [.4CD2.0020.0002] # CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR -120E7 ; [.4CD3.0020.0002] # CUNEIFORM SIGN GA2 TIMES SHID -120E8 ; [.4CD4.0020.0002] # CUNEIFORM SIGN GA2 TIMES SUM -120E9 ; [.4CD5.0020.0002] # CUNEIFORM SIGN GA2 TIMES TAK4 -120EA ; [.4CD6.0020.0002] # CUNEIFORM SIGN GA2 TIMES U -120EB ; [.4CD7.0020.0002] # CUNEIFORM SIGN GA2 TIMES UD -120EC ; [.4CD8.0020.0002] # CUNEIFORM SIGN GA2 TIMES UD PLUS DU -120ED ; [.4CD9.0020.0002] # CUNEIFORM SIGN GA2 OVER GA2 -120EE ; [.4CDA.0020.0002] # CUNEIFORM SIGN GABA -120EF ; [.4CDB.0020.0002] # CUNEIFORM SIGN GABA CROSSING GABA -120F0 ; [.4CDC.0020.0002] # CUNEIFORM SIGN GAD -120F1 ; [.4CDD.0020.0002] # CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR -120F2 ; [.4CDE.0020.0002] # CUNEIFORM SIGN GAL -120F3 ; [.4CDF.0020.0002] # CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR -120F4 ; [.4CE0.0020.0002] # CUNEIFORM SIGN GALAM -120F5 ; [.4CE1.0020.0002] # CUNEIFORM SIGN GAM -120F6 ; [.4CE2.0020.0002] # CUNEIFORM SIGN GAN -120F7 ; [.4CE3.0020.0002] # CUNEIFORM SIGN GAN2 -120F8 ; [.4CE4.0020.0002] # CUNEIFORM SIGN GAN2 TENU -120F9 ; [.4CE5.0020.0002] # CUNEIFORM SIGN GAN2 OVER GAN2 -120FA ; [.4CE6.0020.0002] # CUNEIFORM SIGN GAN2 CROSSING GAN2 -120FB ; [.4CE7.0020.0002] # CUNEIFORM SIGN GAR -120FC ; [.4CE8.0020.0002] # CUNEIFORM SIGN GAR3 -120FD ; [.4CE9.0020.0002] # CUNEIFORM SIGN GASHAN -120FE ; [.4CEA.0020.0002] # CUNEIFORM SIGN GESHTIN -120FF ; [.4CEB.0020.0002] # CUNEIFORM SIGN GESHTIN TIMES KUR -12100 ; [.4CEC.0020.0002] # CUNEIFORM SIGN GI -12101 ; [.4CED.0020.0002] # CUNEIFORM SIGN GI TIMES E -12102 ; [.4CEE.0020.0002] # CUNEIFORM SIGN GI TIMES U -12103 ; [.4CEF.0020.0002] # CUNEIFORM SIGN GI CROSSING GI -12104 ; [.4CF0.0020.0002] # CUNEIFORM SIGN GI4 -12105 ; [.4CF1.0020.0002] # CUNEIFORM SIGN GI4 OVER GI4 -12106 ; [.4CF2.0020.0002] # CUNEIFORM SIGN GI4 CROSSING GI4 -12107 ; [.4CF3.0020.0002] # CUNEIFORM SIGN GIDIM -12108 ; [.4CF4.0020.0002] # CUNEIFORM SIGN GIR2 -12109 ; [.4CF5.0020.0002] # CUNEIFORM SIGN GIR2 GUNU -1210A ; [.4CF6.0020.0002] # CUNEIFORM SIGN GIR3 -1210B ; [.4CF7.0020.0002] # CUNEIFORM SIGN GIR3 TIMES A PLUS IGI -1210C ; [.4CF8.0020.0002] # CUNEIFORM SIGN GIR3 TIMES GAN2 TENU -1210D ; [.4CF9.0020.0002] # CUNEIFORM SIGN GIR3 TIMES IGI -1210E ; [.4CFA.0020.0002] # CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI -1210F ; [.4CFB.0020.0002] # CUNEIFORM SIGN GIR3 TIMES PA -12110 ; [.4CFC.0020.0002] # CUNEIFORM SIGN GISAL -12111 ; [.4CFD.0020.0002] # CUNEIFORM SIGN GISH -12112 ; [.4CFE.0020.0002] # CUNEIFORM SIGN GISH CROSSING GISH -12113 ; [.4CFF.0020.0002] # CUNEIFORM SIGN GISH TIMES BAD -12114 ; [.4D00.0020.0002] # CUNEIFORM SIGN GISH TIMES TAK4 -12115 ; [.4D01.0020.0002] # CUNEIFORM SIGN GISH TENU -12116 ; [.4D02.0020.0002] # CUNEIFORM SIGN GU -12117 ; [.4D03.0020.0002] # CUNEIFORM SIGN GU CROSSING GU -12118 ; [.4D04.0020.0002] # CUNEIFORM SIGN GU2 -12119 ; [.4D05.0020.0002] # CUNEIFORM SIGN GU2 TIMES KAK -1211A ; [.4D06.0020.0002] # CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU -1211B ; [.4D07.0020.0002] # CUNEIFORM SIGN GU2 TIMES NUN -1211C ; [.4D08.0020.0002] # CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2 -1211D ; [.4D09.0020.0002] # CUNEIFORM SIGN GU2 GUNU -1211E ; [.4D0A.0020.0002] # CUNEIFORM SIGN GUD -1211F ; [.4D0B.0020.0002] # CUNEIFORM SIGN GUD TIMES A PLUS KUR -12120 ; [.4D0C.0020.0002] # CUNEIFORM SIGN GUD TIMES KUR -12121 ; [.4D0D.0020.0002] # CUNEIFORM SIGN GUD OVER GUD LUGAL -12122 ; [.4D0E.0020.0002] # CUNEIFORM SIGN GUL -12123 ; [.4D0F.0020.0002] # CUNEIFORM SIGN GUM -12124 ; [.4D10.0020.0002] # CUNEIFORM SIGN GUM TIMES SHE -12125 ; [.4D11.0020.0002] # CUNEIFORM SIGN GUR -12126 ; [.4D12.0020.0002] # CUNEIFORM SIGN GUR7 -12127 ; [.4D13.0020.0002] # CUNEIFORM SIGN GURUN -12128 ; [.4D14.0020.0002] # CUNEIFORM SIGN GURUSH -12129 ; [.4D15.0020.0002] # CUNEIFORM SIGN HA -1212A ; [.4D16.0020.0002] # CUNEIFORM SIGN HA TENU -1212B ; [.4D17.0020.0002] # CUNEIFORM SIGN HA GUNU -1212C ; [.4D18.0020.0002] # CUNEIFORM SIGN HAL -1212D ; [.4D19.0020.0002] # CUNEIFORM SIGN HI -1212E ; [.4D1A.0020.0002] # CUNEIFORM SIGN HI TIMES ASH -1212F ; [.4D1B.0020.0002] # CUNEIFORM SIGN HI TIMES ASH2 -12130 ; [.4D1C.0020.0002] # CUNEIFORM SIGN HI TIMES BAD -12131 ; [.4D1D.0020.0002] # CUNEIFORM SIGN HI TIMES DISH -12132 ; [.4D1E.0020.0002] # CUNEIFORM SIGN HI TIMES GAD -12133 ; [.4D1F.0020.0002] # CUNEIFORM SIGN HI TIMES KIN -12134 ; [.4D20.0020.0002] # CUNEIFORM SIGN HI TIMES NUN -12135 ; [.4D21.0020.0002] # CUNEIFORM SIGN HI TIMES SHE -12136 ; [.4D22.0020.0002] # CUNEIFORM SIGN HI TIMES U -12137 ; [.4D23.0020.0002] # CUNEIFORM SIGN HU -12138 ; [.4D24.0020.0002] # CUNEIFORM SIGN HUB2 -12139 ; [.4D25.0020.0002] # CUNEIFORM SIGN HUB2 TIMES AN -1213A ; [.4D26.0020.0002] # CUNEIFORM SIGN HUB2 TIMES HAL -1213B ; [.4D27.0020.0002] # CUNEIFORM SIGN HUB2 TIMES KASKAL -1213C ; [.4D28.0020.0002] # CUNEIFORM SIGN HUB2 TIMES LISH -1213D ; [.4D29.0020.0002] # CUNEIFORM SIGN HUB2 TIMES UD -1213E ; [.4D2A.0020.0002] # CUNEIFORM SIGN HUL2 -1213F ; [.4D2B.0020.0002] # CUNEIFORM SIGN I -12140 ; [.4D2C.0020.0002] # CUNEIFORM SIGN I A -12141 ; [.4D2D.0020.0002] # CUNEIFORM SIGN IB -12142 ; [.4D2E.0020.0002] # CUNEIFORM SIGN IDIM -12143 ; [.4D2F.0020.0002] # CUNEIFORM SIGN IDIM OVER IDIM BUR -12144 ; [.4D30.0020.0002] # CUNEIFORM SIGN IDIM OVER IDIM SQUARED -12145 ; [.4D31.0020.0002] # CUNEIFORM SIGN IG -12146 ; [.4D32.0020.0002] # CUNEIFORM SIGN IGI -12147 ; [.4D33.0020.0002] # CUNEIFORM SIGN IGI DIB -12148 ; [.4D34.0020.0002] # CUNEIFORM SIGN IGI RI -12149 ; [.4D35.0020.0002] # CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD -1214A ; [.4D36.0020.0002] # CUNEIFORM SIGN IGI GUNU -1214B ; [.4D37.0020.0002] # CUNEIFORM SIGN IL -1214C ; [.4D38.0020.0002] # CUNEIFORM SIGN IL TIMES GAN2 TENU -1214D ; [.4D39.0020.0002] # CUNEIFORM SIGN IL2 -1214E ; [.4D3A.0020.0002] # CUNEIFORM SIGN IM -1214F ; [.4D3B.0020.0002] # CUNEIFORM SIGN IM TIMES TAK4 -12150 ; [.4D3C.0020.0002] # CUNEIFORM SIGN IM CROSSING IM -12151 ; [.4D3D.0020.0002] # CUNEIFORM SIGN IM OPPOSING IM -12152 ; [.4D3E.0020.0002] # CUNEIFORM SIGN IM SQUARED -12153 ; [.4D3F.0020.0002] # CUNEIFORM SIGN IMIN -12154 ; [.4D40.0020.0002] # CUNEIFORM SIGN IN -12155 ; [.4D41.0020.0002] # CUNEIFORM SIGN IR -12156 ; [.4D42.0020.0002] # CUNEIFORM SIGN ISH -12157 ; [.4D43.0020.0002] # CUNEIFORM SIGN KA -12158 ; [.4D44.0020.0002] # CUNEIFORM SIGN KA TIMES A -12159 ; [.4D45.0020.0002] # CUNEIFORM SIGN KA TIMES AD -1215A ; [.4D46.0020.0002] # CUNEIFORM SIGN KA TIMES AD PLUS KU3 -1215B ; [.4D47.0020.0002] # CUNEIFORM SIGN KA TIMES ASH2 -1215C ; [.4D48.0020.0002] # CUNEIFORM SIGN KA TIMES BAD -1215D ; [.4D49.0020.0002] # CUNEIFORM SIGN KA TIMES BALAG -1215E ; [.4D4A.0020.0002] # CUNEIFORM SIGN KA TIMES BAR -1215F ; [.4D4B.0020.0002] # CUNEIFORM SIGN KA TIMES BI -12160 ; [.4D4C.0020.0002] # CUNEIFORM SIGN KA TIMES ERIN2 -12161 ; [.4D4D.0020.0002] # CUNEIFORM SIGN KA TIMES ESH2 -12162 ; [.4D4E.0020.0002] # CUNEIFORM SIGN KA TIMES GA -12163 ; [.4D4F.0020.0002] # CUNEIFORM SIGN KA TIMES GAL -12164 ; [.4D50.0020.0002] # CUNEIFORM SIGN KA TIMES GAN2 TENU -12165 ; [.4D51.0020.0002] # CUNEIFORM SIGN KA TIMES GAR -12166 ; [.4D52.0020.0002] # CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A -12167 ; [.4D53.0020.0002] # CUNEIFORM SIGN KA TIMES GI -12168 ; [.4D54.0020.0002] # CUNEIFORM SIGN KA TIMES GIR2 -12169 ; [.4D55.0020.0002] # CUNEIFORM SIGN KA TIMES GISH PLUS SAR -1216A ; [.4D56.0020.0002] # CUNEIFORM SIGN KA TIMES GISH CROSSING GISH -1216B ; [.4D57.0020.0002] # CUNEIFORM SIGN KA TIMES GU -1216C ; [.4D58.0020.0002] # CUNEIFORM SIGN KA TIMES GUR7 -1216D ; [.4D59.0020.0002] # CUNEIFORM SIGN KA TIMES IGI -1216E ; [.4D5A.0020.0002] # CUNEIFORM SIGN KA TIMES IM -1216F ; [.4D5B.0020.0002] # CUNEIFORM SIGN KA TIMES KAK -12170 ; [.4D5C.0020.0002] # CUNEIFORM SIGN KA TIMES KI -12171 ; [.4D5D.0020.0002] # CUNEIFORM SIGN KA TIMES KID -12172 ; [.4D5E.0020.0002] # CUNEIFORM SIGN KA TIMES LI -12173 ; [.4D5F.0020.0002] # CUNEIFORM SIGN KA TIMES LU -12174 ; [.4D60.0020.0002] # CUNEIFORM SIGN KA TIMES ME -12175 ; [.4D61.0020.0002] # CUNEIFORM SIGN KA TIMES ME PLUS DU -12176 ; [.4D62.0020.0002] # CUNEIFORM SIGN KA TIMES ME PLUS GI -12177 ; [.4D63.0020.0002] # CUNEIFORM SIGN KA TIMES ME PLUS TE -12178 ; [.4D64.0020.0002] # CUNEIFORM SIGN KA TIMES MI -12179 ; [.4D65.0020.0002] # CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ -1217A ; [.4D66.0020.0002] # CUNEIFORM SIGN KA TIMES NE -1217B ; [.4D67.0020.0002] # CUNEIFORM SIGN KA TIMES NUN -1217C ; [.4D68.0020.0002] # CUNEIFORM SIGN KA TIMES PI -1217D ; [.4D69.0020.0002] # CUNEIFORM SIGN KA TIMES RU -1217E ; [.4D6A.0020.0002] # CUNEIFORM SIGN KA TIMES SA -1217F ; [.4D6B.0020.0002] # CUNEIFORM SIGN KA TIMES SAR -12180 ; [.4D6C.0020.0002] # CUNEIFORM SIGN KA TIMES SHA -12181 ; [.4D6D.0020.0002] # CUNEIFORM SIGN KA TIMES SHE -12182 ; [.4D6E.0020.0002] # CUNEIFORM SIGN KA TIMES SHID -12183 ; [.4D6F.0020.0002] # CUNEIFORM SIGN KA TIMES SHU -12184 ; [.4D70.0020.0002] # CUNEIFORM SIGN KA TIMES SIG -12185 ; [.4D71.0020.0002] # CUNEIFORM SIGN KA TIMES SUHUR -12186 ; [.4D72.0020.0002] # CUNEIFORM SIGN KA TIMES TAR -12187 ; [.4D73.0020.0002] # CUNEIFORM SIGN KA TIMES U -12188 ; [.4D74.0020.0002] # CUNEIFORM SIGN KA TIMES U2 -12189 ; [.4D75.0020.0002] # CUNEIFORM SIGN KA TIMES UD -1218A ; [.4D76.0020.0002] # CUNEIFORM SIGN KA TIMES UMUM TIMES PA -1218B ; [.4D77.0020.0002] # CUNEIFORM SIGN KA TIMES USH -1218C ; [.4D78.0020.0002] # CUNEIFORM SIGN KA TIMES ZI -1218D ; [.4D79.0020.0002] # CUNEIFORM SIGN KA2 -1218E ; [.4D7A.0020.0002] # CUNEIFORM SIGN KA2 CROSSING KA2 -1218F ; [.4D7B.0020.0002] # CUNEIFORM SIGN KAB -12190 ; [.4D7C.0020.0002] # CUNEIFORM SIGN KAD2 -12191 ; [.4D7D.0020.0002] # CUNEIFORM SIGN KAD3 -12192 ; [.4D7E.0020.0002] # CUNEIFORM SIGN KAD4 -12193 ; [.4D7F.0020.0002] # CUNEIFORM SIGN KAD5 -12194 ; [.4D80.0020.0002] # CUNEIFORM SIGN KAD5 OVER KAD5 -12195 ; [.4D81.0020.0002] # CUNEIFORM SIGN KAK -12196 ; [.4D82.0020.0002] # CUNEIFORM SIGN KAK TIMES IGI GUNU -12197 ; [.4D83.0020.0002] # CUNEIFORM SIGN KAL -12198 ; [.4D84.0020.0002] # CUNEIFORM SIGN KAL TIMES BAD -12199 ; [.4D85.0020.0002] # CUNEIFORM SIGN KAL CROSSING KAL -1219A ; [.4D86.0020.0002] # CUNEIFORM SIGN KAM2 -1219B ; [.4D87.0020.0002] # CUNEIFORM SIGN KAM4 -1219C ; [.4D88.0020.0002] # CUNEIFORM SIGN KASKAL -1219D ; [.4D89.0020.0002] # CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U -1219E ; [.4D8A.0020.0002] # CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U -1219F ; [.4D8B.0020.0002] # CUNEIFORM SIGN KESH2 -121A0 ; [.4D8C.0020.0002] # CUNEIFORM SIGN KI -121A1 ; [.4D8D.0020.0002] # CUNEIFORM SIGN KI TIMES BAD -121A2 ; [.4D8E.0020.0002] # CUNEIFORM SIGN KI TIMES U -121A3 ; [.4D8F.0020.0002] # CUNEIFORM SIGN KI TIMES UD -121A4 ; [.4D90.0020.0002] # CUNEIFORM SIGN KID -121A5 ; [.4D91.0020.0002] # CUNEIFORM SIGN KIN -121A6 ; [.4D92.0020.0002] # CUNEIFORM SIGN KISAL -121A7 ; [.4D93.0020.0002] # CUNEIFORM SIGN KISH -121A8 ; [.4D94.0020.0002] # CUNEIFORM SIGN KISIM5 -121A9 ; [.4D95.0020.0002] # CUNEIFORM SIGN KISIM5 OVER KISIM5 -121AA ; [.4D96.0020.0002] # CUNEIFORM SIGN KU -121AB ; [.4D97.0020.0002] # CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2 -121AC ; [.4D98.0020.0002] # CUNEIFORM SIGN KU3 -121AD ; [.4D99.0020.0002] # CUNEIFORM SIGN KU4 -121AE ; [.4D9A.0020.0002] # CUNEIFORM SIGN KU4 VARIANT FORM -121AF ; [.4D9B.0020.0002] # CUNEIFORM SIGN KU7 -121B0 ; [.4D9C.0020.0002] # CUNEIFORM SIGN KUL -121B1 ; [.4D9D.0020.0002] # CUNEIFORM SIGN KUL GUNU -121B2 ; [.4D9E.0020.0002] # CUNEIFORM SIGN KUN -121B3 ; [.4D9F.0020.0002] # CUNEIFORM SIGN KUR -121B4 ; [.4DA0.0020.0002] # CUNEIFORM SIGN KUR OPPOSING KUR -121B5 ; [.4DA1.0020.0002] # CUNEIFORM SIGN KUSHU2 -121B6 ; [.4DA2.0020.0002] # CUNEIFORM SIGN KWU318 -121B7 ; [.4DA3.0020.0002] # CUNEIFORM SIGN LA -121B8 ; [.4DA4.0020.0002] # CUNEIFORM SIGN LAGAB -121B9 ; [.4DA5.0020.0002] # CUNEIFORM SIGN LAGAB TIMES A -121BA ; [.4DA6.0020.0002] # CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA -121BB ; [.4DA7.0020.0002] # CUNEIFORM SIGN LAGAB TIMES A PLUS GAR -121BC ; [.4DA8.0020.0002] # CUNEIFORM SIGN LAGAB TIMES A PLUS LAL -121BD ; [.4DA9.0020.0002] # CUNEIFORM SIGN LAGAB TIMES AL -121BE ; [.4DAA.0020.0002] # CUNEIFORM SIGN LAGAB TIMES AN -121BF ; [.4DAB.0020.0002] # CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU -121C0 ; [.4DAC.0020.0002] # CUNEIFORM SIGN LAGAB TIMES BAD -121C1 ; [.4DAD.0020.0002] # CUNEIFORM SIGN LAGAB TIMES BI -121C2 ; [.4DAE.0020.0002] # CUNEIFORM SIGN LAGAB TIMES DAR -121C3 ; [.4DAF.0020.0002] # CUNEIFORM SIGN LAGAB TIMES EN -121C4 ; [.4DB0.0020.0002] # CUNEIFORM SIGN LAGAB TIMES GA -121C5 ; [.4DB1.0020.0002] # CUNEIFORM SIGN LAGAB TIMES GAR -121C6 ; [.4DB2.0020.0002] # CUNEIFORM SIGN LAGAB TIMES GUD -121C7 ; [.4DB3.0020.0002] # CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD -121C8 ; [.4DB4.0020.0002] # CUNEIFORM SIGN LAGAB TIMES HA -121C9 ; [.4DB5.0020.0002] # CUNEIFORM SIGN LAGAB TIMES HAL -121CA ; [.4DB6.0020.0002] # CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN -121CB ; [.4DB7.0020.0002] # CUNEIFORM SIGN LAGAB TIMES IGI GUNU -121CC ; [.4DB8.0020.0002] # CUNEIFORM SIGN LAGAB TIMES IM -121CD ; [.4DB9.0020.0002] # CUNEIFORM SIGN LAGAB TIMES IM PLUS HA -121CE ; [.4DBA.0020.0002] # CUNEIFORM SIGN LAGAB TIMES IM PLUS LU -121CF ; [.4DBB.0020.0002] # CUNEIFORM SIGN LAGAB TIMES KI -121D0 ; [.4DBC.0020.0002] # CUNEIFORM SIGN LAGAB TIMES KIN -121D1 ; [.4DBD.0020.0002] # CUNEIFORM SIGN LAGAB TIMES KU3 -121D2 ; [.4DBE.0020.0002] # CUNEIFORM SIGN LAGAB TIMES KUL -121D3 ; [.4DBF.0020.0002] # CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A -121D4 ; [.4DC0.0020.0002] # CUNEIFORM SIGN LAGAB TIMES LAGAB -121D5 ; [.4DC1.0020.0002] # CUNEIFORM SIGN LAGAB TIMES LISH -121D6 ; [.4DC2.0020.0002] # CUNEIFORM SIGN LAGAB TIMES LU -121D7 ; [.4DC3.0020.0002] # CUNEIFORM SIGN LAGAB TIMES LUL -121D8 ; [.4DC4.0020.0002] # CUNEIFORM SIGN LAGAB TIMES ME -121D9 ; [.4DC5.0020.0002] # CUNEIFORM SIGN LAGAB TIMES ME PLUS EN -121DA ; [.4DC6.0020.0002] # CUNEIFORM SIGN LAGAB TIMES MUSH -121DB ; [.4DC7.0020.0002] # CUNEIFORM SIGN LAGAB TIMES NE -121DC ; [.4DC8.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM -121DD ; [.4DC9.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2 -121DE ; [.4DCA.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU -121DF ; [.4DCB.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SHU2 -121E0 ; [.4DCC.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2 -121E1 ; [.4DCD.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SUM -121E2 ; [.4DCE.0020.0002] # CUNEIFORM SIGN LAGAB TIMES TAG -121E3 ; [.4DCF.0020.0002] # CUNEIFORM SIGN LAGAB TIMES TAK4 -121E4 ; [.4DD0.0020.0002] # CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA -121E5 ; [.4DD1.0020.0002] # CUNEIFORM SIGN LAGAB TIMES U -121E6 ; [.4DD2.0020.0002] # CUNEIFORM SIGN LAGAB TIMES U PLUS A -121E7 ; [.4DD3.0020.0002] # CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U -121E8 ; [.4DD4.0020.0002] # CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH -121E9 ; [.4DD5.0020.0002] # CUNEIFORM SIGN LAGAB TIMES UD -121EA ; [.4DD6.0020.0002] # CUNEIFORM SIGN LAGAB TIMES USH -121EB ; [.4DD7.0020.0002] # CUNEIFORM SIGN LAGAB SQUARED -121EC ; [.4DD8.0020.0002] # CUNEIFORM SIGN LAGAR -121ED ; [.4DD9.0020.0002] # CUNEIFORM SIGN LAGAR TIMES SHE -121EE ; [.4DDA.0020.0002] # CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM -121EF ; [.4DDB.0020.0002] # CUNEIFORM SIGN LAGAR GUNU -121F0 ; [.4DDC.0020.0002] # CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE -121F1 ; [.4DDD.0020.0002] # CUNEIFORM SIGN LAHSHU -121F2 ; [.4DDE.0020.0002] # CUNEIFORM SIGN LAL -121F3 ; [.4DDF.0020.0002] # CUNEIFORM SIGN LAL TIMES LAL -121F4 ; [.4DE0.0020.0002] # CUNEIFORM SIGN LAM -121F5 ; [.4DE1.0020.0002] # CUNEIFORM SIGN LAM TIMES KUR -121F6 ; [.4DE2.0020.0002] # CUNEIFORM SIGN LAM TIMES KUR PLUS RU -121F7 ; [.4DE3.0020.0002] # CUNEIFORM SIGN LI -121F8 ; [.4DE4.0020.0002] # CUNEIFORM SIGN LIL -121F9 ; [.4DE5.0020.0002] # CUNEIFORM SIGN LIMMU2 -121FA ; [.4DE6.0020.0002] # CUNEIFORM SIGN LISH -121FB ; [.4DE7.0020.0002] # CUNEIFORM SIGN LU -121FC ; [.4DE8.0020.0002] # CUNEIFORM SIGN LU TIMES BAD -121FD ; [.4DE9.0020.0002] # CUNEIFORM SIGN LU2 -121FE ; [.4DEA.0020.0002] # CUNEIFORM SIGN LU2 TIMES AL -121FF ; [.4DEB.0020.0002] # CUNEIFORM SIGN LU2 TIMES BAD -12200 ; [.4DEC.0020.0002] # CUNEIFORM SIGN LU2 TIMES ESH2 -12201 ; [.4DED.0020.0002] # CUNEIFORM SIGN LU2 TIMES ESH2 TENU -12202 ; [.4DEE.0020.0002] # CUNEIFORM SIGN LU2 TIMES GAN2 TENU -12203 ; [.4DEF.0020.0002] # CUNEIFORM SIGN LU2 TIMES HI TIMES BAD -12204 ; [.4DF0.0020.0002] # CUNEIFORM SIGN LU2 TIMES IM -12205 ; [.4DF1.0020.0002] # CUNEIFORM SIGN LU2 TIMES KAD2 -12206 ; [.4DF2.0020.0002] # CUNEIFORM SIGN LU2 TIMES KAD3 -12207 ; [.4DF3.0020.0002] # CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH -12208 ; [.4DF4.0020.0002] # CUNEIFORM SIGN LU2 TIMES KI -12209 ; [.4DF5.0020.0002] # CUNEIFORM SIGN LU2 TIMES LA PLUS ASH -1220A ; [.4DF6.0020.0002] # CUNEIFORM SIGN LU2 TIMES LAGAB -1220B ; [.4DF7.0020.0002] # CUNEIFORM SIGN LU2 TIMES ME PLUS EN -1220C ; [.4DF8.0020.0002] # CUNEIFORM SIGN LU2 TIMES NE -1220D ; [.4DF9.0020.0002] # CUNEIFORM SIGN LU2 TIMES NU -1220E ; [.4DFA.0020.0002] # CUNEIFORM SIGN LU2 TIMES SI PLUS ASH -1220F ; [.4DFB.0020.0002] # CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU -12210 ; [.4DFC.0020.0002] # CUNEIFORM SIGN LU2 TIMES TUG2 -12211 ; [.4DFD.0020.0002] # CUNEIFORM SIGN LU2 TENU -12212 ; [.4DFE.0020.0002] # CUNEIFORM SIGN LU2 CROSSING LU2 -12213 ; [.4DFF.0020.0002] # CUNEIFORM SIGN LU2 OPPOSING LU2 -12214 ; [.4E00.0020.0002] # CUNEIFORM SIGN LU2 SQUARED -12215 ; [.4E01.0020.0002] # CUNEIFORM SIGN LU2 SHESHIG -12216 ; [.4E02.0020.0002] # CUNEIFORM SIGN LU3 -12217 ; [.4E03.0020.0002] # CUNEIFORM SIGN LUGAL -12218 ; [.4E04.0020.0002] # CUNEIFORM SIGN LUGAL OVER LUGAL -12219 ; [.4E05.0020.0002] # CUNEIFORM SIGN LUGAL OPPOSING LUGAL -1221A ; [.4E06.0020.0002] # CUNEIFORM SIGN LUGAL SHESHIG -1221B ; [.4E07.0020.0002] # CUNEIFORM SIGN LUH -1221C ; [.4E08.0020.0002] # CUNEIFORM SIGN LUL -1221D ; [.4E09.0020.0002] # CUNEIFORM SIGN LUM -1221E ; [.4E0A.0020.0002] # CUNEIFORM SIGN LUM OVER LUM -1221F ; [.4E0B.0020.0002] # CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR -12220 ; [.4E0C.0020.0002] # CUNEIFORM SIGN MA -12221 ; [.4E0D.0020.0002] # CUNEIFORM SIGN MA TIMES TAK4 -12222 ; [.4E0E.0020.0002] # CUNEIFORM SIGN MA GUNU -12223 ; [.4E0F.0020.0002] # CUNEIFORM SIGN MA2 -12224 ; [.4E10.0020.0002] # CUNEIFORM SIGN MAH -12225 ; [.4E11.0020.0002] # CUNEIFORM SIGN MAR -12226 ; [.4E12.0020.0002] # CUNEIFORM SIGN MASH -12227 ; [.4E13.0020.0002] # CUNEIFORM SIGN MASH2 -12228 ; [.4E14.0020.0002] # CUNEIFORM SIGN ME -12229 ; [.4E15.0020.0002] # CUNEIFORM SIGN MES -1222A ; [.4E16.0020.0002] # CUNEIFORM SIGN MI -1222B ; [.4E17.0020.0002] # CUNEIFORM SIGN MIN -1222C ; [.4E18.0020.0002] # CUNEIFORM SIGN MU -1222D ; [.4E19.0020.0002] # CUNEIFORM SIGN MU OVER MU -1222E ; [.4E1A.0020.0002] # CUNEIFORM SIGN MUG -1222F ; [.4E1B.0020.0002] # CUNEIFORM SIGN MUG GUNU -12230 ; [.4E1C.0020.0002] # CUNEIFORM SIGN MUNSUB -12231 ; [.4E1D.0020.0002] # CUNEIFORM SIGN MURGU2 -12232 ; [.4E1E.0020.0002] # CUNEIFORM SIGN MUSH -12233 ; [.4E1F.0020.0002] # CUNEIFORM SIGN MUSH TIMES A -12234 ; [.4E20.0020.0002] # CUNEIFORM SIGN MUSH TIMES KUR -12235 ; [.4E21.0020.0002] # CUNEIFORM SIGN MUSH TIMES ZA -12236 ; [.4E22.0020.0002] # CUNEIFORM SIGN MUSH OVER MUSH -12237 ; [.4E23.0020.0002] # CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA -12238 ; [.4E24.0020.0002] # CUNEIFORM SIGN MUSH CROSSING MUSH -12239 ; [.4E25.0020.0002] # CUNEIFORM SIGN MUSH3 -1223A ; [.4E26.0020.0002] # CUNEIFORM SIGN MUSH3 TIMES A -1223B ; [.4E27.0020.0002] # CUNEIFORM SIGN MUSH3 TIMES A PLUS DI -1223C ; [.4E28.0020.0002] # CUNEIFORM SIGN MUSH3 TIMES DI -1223D ; [.4E29.0020.0002] # CUNEIFORM SIGN MUSH3 GUNU -1223E ; [.4E2A.0020.0002] # CUNEIFORM SIGN NA -1223F ; [.4E2B.0020.0002] # CUNEIFORM SIGN NA2 -12240 ; [.4E2C.0020.0002] # CUNEIFORM SIGN NAGA -12241 ; [.4E2D.0020.0002] # CUNEIFORM SIGN NAGA INVERTED -12242 ; [.4E2E.0020.0002] # CUNEIFORM SIGN NAGA TIMES SHU TENU -12243 ; [.4E2F.0020.0002] # CUNEIFORM SIGN NAGA OPPOSING NAGA -12244 ; [.4E30.0020.0002] # CUNEIFORM SIGN NAGAR -12245 ; [.4E31.0020.0002] # CUNEIFORM SIGN NAM NUTILLU -12246 ; [.4E32.0020.0002] # CUNEIFORM SIGN NAM -12247 ; [.4E33.0020.0002] # CUNEIFORM SIGN NAM2 -12248 ; [.4E34.0020.0002] # CUNEIFORM SIGN NE -12249 ; [.4E35.0020.0002] # CUNEIFORM SIGN NE TIMES A -1224A ; [.4E36.0020.0002] # CUNEIFORM SIGN NE TIMES UD -1224B ; [.4E37.0020.0002] # CUNEIFORM SIGN NE SHESHIG -1224C ; [.4E38.0020.0002] # CUNEIFORM SIGN NI -1224D ; [.4E39.0020.0002] # CUNEIFORM SIGN NI TIMES E -1224E ; [.4E3A.0020.0002] # CUNEIFORM SIGN NI2 -1224F ; [.4E3B.0020.0002] # CUNEIFORM SIGN NIM -12250 ; [.4E3C.0020.0002] # CUNEIFORM SIGN NIM TIMES GAN2 TENU -12251 ; [.4E3D.0020.0002] # CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU -12252 ; [.4E3E.0020.0002] # CUNEIFORM SIGN NINDA2 -12253 ; [.4E3F.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES AN -12254 ; [.4E40.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES ASH -12255 ; [.4E41.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH -12256 ; [.4E42.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES GUD -12257 ; [.4E43.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU -12258 ; [.4E44.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES NE -12259 ; [.4E45.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES NUN -1225A ; [.4E46.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES SHE -1225B ; [.4E47.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN -1225C ; [.4E48.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH -1225D ; [.4E49.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH -1225E ; [.4E4A.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH -1225F ; [.4E4B.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES USH -12260 ; [.4E4C.0020.0002] # CUNEIFORM SIGN NISAG -12261 ; [.4E4D.0020.0002] # CUNEIFORM SIGN NU -12262 ; [.4E4E.0020.0002] # CUNEIFORM SIGN NU11 -122D4 ; [.4E4F.0020.0002] # CUNEIFORM SIGN SHIR TENU -122D5 ; [.4E50.0020.0002] # CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR -12263 ; [.4E51.0020.0002] # CUNEIFORM SIGN NUN -12264 ; [.4E52.0020.0002] # CUNEIFORM SIGN NUN LAGAR TIMES GAR -12265 ; [.4E53.0020.0002] # CUNEIFORM SIGN NUN LAGAR TIMES MASH -12266 ; [.4E54.0020.0002] # CUNEIFORM SIGN NUN LAGAR TIMES SAL -12267 ; [.4E55.0020.0002] # CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL -12268 ; [.4E56.0020.0002] # CUNEIFORM SIGN NUN LAGAR TIMES USH -12269 ; [.4E57.0020.0002] # CUNEIFORM SIGN NUN TENU -1226A ; [.4E58.0020.0002] # CUNEIFORM SIGN NUN OVER NUN -1226B ; [.4E59.0020.0002] # CUNEIFORM SIGN NUN CROSSING NUN -1226C ; [.4E5A.0020.0002] # CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR -1226D ; [.4E5B.0020.0002] # CUNEIFORM SIGN NUNUZ -1226E ; [.4E5C.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB -1226F ; [.4E5D.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES BI -12270 ; [.4E5E.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES DUG -12271 ; [.4E5F.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES GUD -12272 ; [.4E60.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU -12273 ; [.4E61.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3 -12274 ; [.4E62.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES LA -12275 ; [.4E63.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES NE -12276 ; [.4E64.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3 -12277 ; [.4E65.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES U2 -12278 ; [.4E66.0020.0002] # CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI -12279 ; [.4E67.0020.0002] # CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U -1227A ; [.4E68.0020.0002] # CUNEIFORM SIGN PA -1227B ; [.4E69.0020.0002] # CUNEIFORM SIGN PAD -1227C ; [.4E6A.0020.0002] # CUNEIFORM SIGN PAN -1227D ; [.4E6B.0020.0002] # CUNEIFORM SIGN PAP -1227E ; [.4E6C.0020.0002] # CUNEIFORM SIGN PESH2 -1227F ; [.4E6D.0020.0002] # CUNEIFORM SIGN PI -12280 ; [.4E6E.0020.0002] # CUNEIFORM SIGN PI TIMES A -12281 ; [.4E6F.0020.0002] # CUNEIFORM SIGN PI TIMES AB -12282 ; [.4E70.0020.0002] # CUNEIFORM SIGN PI TIMES BI -12283 ; [.4E71.0020.0002] # CUNEIFORM SIGN PI TIMES BU -12284 ; [.4E72.0020.0002] # CUNEIFORM SIGN PI TIMES E -12285 ; [.4E73.0020.0002] # CUNEIFORM SIGN PI TIMES I -12286 ; [.4E74.0020.0002] # CUNEIFORM SIGN PI TIMES IB -12287 ; [.4E75.0020.0002] # CUNEIFORM SIGN PI TIMES U -12288 ; [.4E76.0020.0002] # CUNEIFORM SIGN PI TIMES U2 -12289 ; [.4E77.0020.0002] # CUNEIFORM SIGN PI CROSSING PI -1228A ; [.4E78.0020.0002] # CUNEIFORM SIGN PIRIG -1228B ; [.4E79.0020.0002] # CUNEIFORM SIGN PIRIG TIMES KAL -1228C ; [.4E7A.0020.0002] # CUNEIFORM SIGN PIRIG TIMES UD -1228D ; [.4E7B.0020.0002] # CUNEIFORM SIGN PIRIG TIMES ZA -1228E ; [.4E7C.0020.0002] # CUNEIFORM SIGN PIRIG OPPOSING PIRIG -1228F ; [.4E7D.0020.0002] # CUNEIFORM SIGN RA -12290 ; [.4E7E.0020.0002] # CUNEIFORM SIGN RAB -12291 ; [.4E7F.0020.0002] # CUNEIFORM SIGN RI -12292 ; [.4E80.0020.0002] # CUNEIFORM SIGN RU -12293 ; [.4E81.0020.0002] # CUNEIFORM SIGN SA -12294 ; [.4E82.0020.0002] # CUNEIFORM SIGN SAG NUTILLU -12295 ; [.4E83.0020.0002] # CUNEIFORM SIGN SAG -12296 ; [.4E84.0020.0002] # CUNEIFORM SIGN SAG TIMES A -12297 ; [.4E85.0020.0002] # CUNEIFORM SIGN SAG TIMES DU -12298 ; [.4E86.0020.0002] # CUNEIFORM SIGN SAG TIMES DUB -12299 ; [.4E87.0020.0002] # CUNEIFORM SIGN SAG TIMES HA -1229A ; [.4E88.0020.0002] # CUNEIFORM SIGN SAG TIMES KAK -1229B ; [.4E89.0020.0002] # CUNEIFORM SIGN SAG TIMES KUR -1229C ; [.4E8A.0020.0002] # CUNEIFORM SIGN SAG TIMES LUM -1229D ; [.4E8B.0020.0002] # CUNEIFORM SIGN SAG TIMES MI -1229E ; [.4E8C.0020.0002] # CUNEIFORM SIGN SAG TIMES NUN -1229F ; [.4E8D.0020.0002] # CUNEIFORM SIGN SAG TIMES SAL -122A0 ; [.4E8E.0020.0002] # CUNEIFORM SIGN SAG TIMES SHID -122A1 ; [.4E8F.0020.0002] # CUNEIFORM SIGN SAG TIMES TAB -122A2 ; [.4E90.0020.0002] # CUNEIFORM SIGN SAG TIMES U2 -122A3 ; [.4E91.0020.0002] # CUNEIFORM SIGN SAG TIMES UB -122A4 ; [.4E92.0020.0002] # CUNEIFORM SIGN SAG TIMES UM -122A5 ; [.4E93.0020.0002] # CUNEIFORM SIGN SAG TIMES UR -122A6 ; [.4E94.0020.0002] # CUNEIFORM SIGN SAG TIMES USH -122A7 ; [.4E95.0020.0002] # CUNEIFORM SIGN SAG OVER SAG -122A8 ; [.4E96.0020.0002] # CUNEIFORM SIGN SAG GUNU -122A9 ; [.4E97.0020.0002] # CUNEIFORM SIGN SAL -122AA ; [.4E98.0020.0002] # CUNEIFORM SIGN SAL LAGAB TIMES ASH2 -122AB ; [.4E99.0020.0002] # CUNEIFORM SIGN SANGA2 -122AC ; [.4E9A.0020.0002] # CUNEIFORM SIGN SAR -122AD ; [.4E9B.0020.0002] # CUNEIFORM SIGN SHA -122AE ; [.4E9C.0020.0002] # CUNEIFORM SIGN SHA3 -122AF ; [.4E9D.0020.0002] # CUNEIFORM SIGN SHA3 TIMES A -122B0 ; [.4E9E.0020.0002] # CUNEIFORM SIGN SHA3 TIMES BAD -122B1 ; [.4E9F.0020.0002] # CUNEIFORM SIGN SHA3 TIMES GISH -122B2 ; [.4EA0.0020.0002] # CUNEIFORM SIGN SHA3 TIMES NE -122B3 ; [.4EA1.0020.0002] # CUNEIFORM SIGN SHA3 TIMES SHU2 -122B4 ; [.4EA2.0020.0002] # CUNEIFORM SIGN SHA3 TIMES TUR -122B5 ; [.4EA3.0020.0002] # CUNEIFORM SIGN SHA3 TIMES U -122B6 ; [.4EA4.0020.0002] # CUNEIFORM SIGN SHA3 TIMES U PLUS A -122B7 ; [.4EA5.0020.0002] # CUNEIFORM SIGN SHA6 -122B8 ; [.4EA6.0020.0002] # CUNEIFORM SIGN SHAB6 -122B9 ; [.4EA7.0020.0002] # CUNEIFORM SIGN SHAR2 -122BA ; [.4EA8.0020.0002] # CUNEIFORM SIGN SHE -122BB ; [.4EA9.0020.0002] # CUNEIFORM SIGN SHE HU -122BC ; [.4EAA.0020.0002] # CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR -122BD ; [.4EAB.0020.0002] # CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR -122BE ; [.4EAC.0020.0002] # CUNEIFORM SIGN SHEG9 -122BF ; [.4EAD.0020.0002] # CUNEIFORM SIGN SHEN -122C0 ; [.4EAE.0020.0002] # CUNEIFORM SIGN SHESH -122C1 ; [.4EAF.0020.0002] # CUNEIFORM SIGN SHESH2 -122C2 ; [.4EB0.0020.0002] # CUNEIFORM SIGN SHESHLAM -122C3 ; [.4EB1.0020.0002] # CUNEIFORM SIGN SHID -122C4 ; [.4EB2.0020.0002] # CUNEIFORM SIGN SHID TIMES A -122C5 ; [.4EB3.0020.0002] # CUNEIFORM SIGN SHID TIMES IM -122C6 ; [.4EB4.0020.0002] # CUNEIFORM SIGN SHIM -122C7 ; [.4EB5.0020.0002] # CUNEIFORM SIGN SHIM TIMES A -122C8 ; [.4EB6.0020.0002] # CUNEIFORM SIGN SHIM TIMES BAL -122C9 ; [.4EB7.0020.0002] # CUNEIFORM SIGN SHIM TIMES BULUG -122CA ; [.4EB8.0020.0002] # CUNEIFORM SIGN SHIM TIMES DIN -122CB ; [.4EB9.0020.0002] # CUNEIFORM SIGN SHIM TIMES GAR -122CC ; [.4EBA.0020.0002] # CUNEIFORM SIGN SHIM TIMES IGI -122CD ; [.4EBB.0020.0002] # CUNEIFORM SIGN SHIM TIMES IGI GUNU -122CE ; [.4EBC.0020.0002] # CUNEIFORM SIGN SHIM TIMES KUSHU2 -122CF ; [.4EBD.0020.0002] # CUNEIFORM SIGN SHIM TIMES LUL -122D0 ; [.4EBE.0020.0002] # CUNEIFORM SIGN SHIM TIMES MUG -122D1 ; [.4EBF.0020.0002] # CUNEIFORM SIGN SHIM TIMES SAL -122D2 ; [.4EC0.0020.0002] # CUNEIFORM SIGN SHINIG -122D3 ; [.4EC1.0020.0002] # CUNEIFORM SIGN SHIR -122D6 ; [.4EC2.0020.0002] # CUNEIFORM SIGN SHITA -122D7 ; [.4EC3.0020.0002] # CUNEIFORM SIGN SHU -122D8 ; [.4EC4.0020.0002] # CUNEIFORM SIGN SHU OVER INVERTED SHU -122D9 ; [.4EC5.0020.0002] # CUNEIFORM SIGN SHU2 -122DA ; [.4EC6.0020.0002] # CUNEIFORM SIGN SHUBUR -122DB ; [.4EC7.0020.0002] # CUNEIFORM SIGN SI -122DC ; [.4EC8.0020.0002] # CUNEIFORM SIGN SI GUNU -122DD ; [.4EC9.0020.0002] # CUNEIFORM SIGN SIG -122DE ; [.4ECA.0020.0002] # CUNEIFORM SIGN SIG4 -122DF ; [.4ECB.0020.0002] # CUNEIFORM SIGN SIG4 OVER SIG4 SHU2 -122E0 ; [.4ECC.0020.0002] # CUNEIFORM SIGN SIK2 -122E1 ; [.4ECD.0020.0002] # CUNEIFORM SIGN SILA3 -122E2 ; [.4ECE.0020.0002] # CUNEIFORM SIGN SU -122E3 ; [.4ECF.0020.0002] # CUNEIFORM SIGN SU OVER SU -122E4 ; [.4ED0.0020.0002] # CUNEIFORM SIGN SUD -122E5 ; [.4ED1.0020.0002] # CUNEIFORM SIGN SUD2 -122E6 ; [.4ED2.0020.0002] # CUNEIFORM SIGN SUHUR -122E7 ; [.4ED3.0020.0002] # CUNEIFORM SIGN SUM -122E8 ; [.4ED4.0020.0002] # CUNEIFORM SIGN SUMASH -122E9 ; [.4ED5.0020.0002] # CUNEIFORM SIGN SUR -122EA ; [.4ED6.0020.0002] # CUNEIFORM SIGN SUR9 -122EB ; [.4ED7.0020.0002] # CUNEIFORM SIGN TA -122EC ; [.4ED8.0020.0002] # CUNEIFORM SIGN TA ASTERISK -122ED ; [.4ED9.0020.0002] # CUNEIFORM SIGN TA TIMES HI -122EE ; [.4EDA.0020.0002] # CUNEIFORM SIGN TA TIMES MI -122EF ; [.4EDB.0020.0002] # CUNEIFORM SIGN TA GUNU -122F0 ; [.4EDC.0020.0002] # CUNEIFORM SIGN TAB -122F1 ; [.4EDD.0020.0002] # CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH -122F2 ; [.4EDE.0020.0002] # CUNEIFORM SIGN TAB SQUARED -122F3 ; [.4EDF.0020.0002] # CUNEIFORM SIGN TAG -122F4 ; [.4EE0.0020.0002] # CUNEIFORM SIGN TAG TIMES BI -122F5 ; [.4EE1.0020.0002] # CUNEIFORM SIGN TAG TIMES GUD -122F6 ; [.4EE2.0020.0002] # CUNEIFORM SIGN TAG TIMES SHE -122F7 ; [.4EE3.0020.0002] # CUNEIFORM SIGN TAG TIMES SHU -122F8 ; [.4EE4.0020.0002] # CUNEIFORM SIGN TAG TIMES TUG2 -122F9 ; [.4EE5.0020.0002] # CUNEIFORM SIGN TAG TIMES UD -122FA ; [.4EE6.0020.0002] # CUNEIFORM SIGN TAK4 -122FB ; [.4EE7.0020.0002] # CUNEIFORM SIGN TAR -122FC ; [.4EE8.0020.0002] # CUNEIFORM SIGN TE -122FD ; [.4EE9.0020.0002] # CUNEIFORM SIGN TE GUNU -122FE ; [.4EEA.0020.0002] # CUNEIFORM SIGN TI -122FF ; [.4EEB.0020.0002] # CUNEIFORM SIGN TI TENU -12300 ; [.4EEC.0020.0002] # CUNEIFORM SIGN TIL -12301 ; [.4EED.0020.0002] # CUNEIFORM SIGN TIR -12302 ; [.4EEE.0020.0002] # CUNEIFORM SIGN TIR TIMES TAK4 -12303 ; [.4EEF.0020.0002] # CUNEIFORM SIGN TIR OVER TIR -12304 ; [.4EF0.0020.0002] # CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR -12305 ; [.4EF1.0020.0002] # CUNEIFORM SIGN TU -12306 ; [.4EF2.0020.0002] # CUNEIFORM SIGN TUG2 -12307 ; [.4EF3.0020.0002] # CUNEIFORM SIGN TUK -12308 ; [.4EF4.0020.0002] # CUNEIFORM SIGN TUM -12309 ; [.4EF5.0020.0002] # CUNEIFORM SIGN TUR -1230A ; [.4EF6.0020.0002] # CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA -1230B ; [.4EF7.0020.0002] # CUNEIFORM SIGN U -1230C ; [.4EF8.0020.0002] # CUNEIFORM SIGN U GUD -1230D ; [.4EF9.0020.0002] # CUNEIFORM SIGN U U U -1230E ; [.4EFA.0020.0002] # CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR -1230F ; [.4EFB.0020.0002] # CUNEIFORM SIGN U OVER U SUR OVER SUR -12310 ; [.4EFC.0020.0002] # CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED -12311 ; [.4EFD.0020.0002] # CUNEIFORM SIGN U2 -12312 ; [.4EFE.0020.0002] # CUNEIFORM SIGN UB -12313 ; [.4EFF.0020.0002] # CUNEIFORM SIGN UD -12314 ; [.4F00.0020.0002] # CUNEIFORM SIGN UD KUSHU2 -12315 ; [.4F01.0020.0002] # CUNEIFORM SIGN UD TIMES BAD -12316 ; [.4F02.0020.0002] # CUNEIFORM SIGN UD TIMES MI -12317 ; [.4F03.0020.0002] # CUNEIFORM SIGN UD TIMES U PLUS U PLUS U -12318 ; [.4F04.0020.0002] # CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU -12319 ; [.4F05.0020.0002] # CUNEIFORM SIGN UD GUNU -1231A ; [.4F06.0020.0002] # CUNEIFORM SIGN UD SHESHIG -1231B ; [.4F07.0020.0002] # CUNEIFORM SIGN UD SHESHIG TIMES BAD -1231C ; [.4F08.0020.0002] # CUNEIFORM SIGN UDUG -1231D ; [.4F09.0020.0002] # CUNEIFORM SIGN UM -1231E ; [.4F0A.0020.0002] # CUNEIFORM SIGN UM TIMES LAGAB -1231F ; [.4F0B.0020.0002] # CUNEIFORM SIGN UM TIMES ME PLUS DA -12320 ; [.4F0C.0020.0002] # CUNEIFORM SIGN UM TIMES SHA3 -12321 ; [.4F0D.0020.0002] # CUNEIFORM SIGN UM TIMES U -12322 ; [.4F0E.0020.0002] # CUNEIFORM SIGN UMBIN -12323 ; [.4F0F.0020.0002] # CUNEIFORM SIGN UMUM -12324 ; [.4F10.0020.0002] # CUNEIFORM SIGN UMUM TIMES KASKAL -12325 ; [.4F11.0020.0002] # CUNEIFORM SIGN UMUM TIMES PA -12326 ; [.4F12.0020.0002] # CUNEIFORM SIGN UN -12327 ; [.4F13.0020.0002] # CUNEIFORM SIGN UN GUNU -12328 ; [.4F14.0020.0002] # CUNEIFORM SIGN UR -12329 ; [.4F15.0020.0002] # CUNEIFORM SIGN UR CROSSING UR -1232A ; [.4F16.0020.0002] # CUNEIFORM SIGN UR SHESHIG -1232B ; [.4F17.0020.0002] # CUNEIFORM SIGN UR2 -1232C ; [.4F18.0020.0002] # CUNEIFORM SIGN UR2 TIMES A PLUS HA -1232D ; [.4F19.0020.0002] # CUNEIFORM SIGN UR2 TIMES A PLUS NA -1232E ; [.4F1A.0020.0002] # CUNEIFORM SIGN UR2 TIMES AL -1232F ; [.4F1B.0020.0002] # CUNEIFORM SIGN UR2 TIMES HA -12330 ; [.4F1C.0020.0002] # CUNEIFORM SIGN UR2 TIMES NUN -12331 ; [.4F1D.0020.0002] # CUNEIFORM SIGN UR2 TIMES U2 -12332 ; [.4F1E.0020.0002] # CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH -12333 ; [.4F1F.0020.0002] # CUNEIFORM SIGN UR2 TIMES U2 PLUS BI -12334 ; [.4F20.0020.0002] # CUNEIFORM SIGN UR4 -12335 ; [.4F21.0020.0002] # CUNEIFORM SIGN URI -12336 ; [.4F22.0020.0002] # CUNEIFORM SIGN URI3 -12337 ; [.4F23.0020.0002] # CUNEIFORM SIGN URU -12338 ; [.4F24.0020.0002] # CUNEIFORM SIGN URU TIMES A -12339 ; [.4F25.0020.0002] # CUNEIFORM SIGN URU TIMES ASHGAB -1233A ; [.4F26.0020.0002] # CUNEIFORM SIGN URU TIMES BAR -1233B ; [.4F27.0020.0002] # CUNEIFORM SIGN URU TIMES DUN -1233C ; [.4F28.0020.0002] # CUNEIFORM SIGN URU TIMES GA -1233D ; [.4F29.0020.0002] # CUNEIFORM SIGN URU TIMES GAL -1233E ; [.4F2A.0020.0002] # CUNEIFORM SIGN URU TIMES GAN2 TENU -1233F ; [.4F2B.0020.0002] # CUNEIFORM SIGN URU TIMES GAR -12340 ; [.4F2C.0020.0002] # CUNEIFORM SIGN URU TIMES GU -12341 ; [.4F2D.0020.0002] # CUNEIFORM SIGN URU TIMES HA -12342 ; [.4F2E.0020.0002] # CUNEIFORM SIGN URU TIMES IGI -12343 ; [.4F2F.0020.0002] # CUNEIFORM SIGN URU TIMES IM -12344 ; [.4F30.0020.0002] # CUNEIFORM SIGN URU TIMES ISH -12345 ; [.4F31.0020.0002] # CUNEIFORM SIGN URU TIMES KI -12346 ; [.4F32.0020.0002] # CUNEIFORM SIGN URU TIMES LUM -12347 ; [.4F33.0020.0002] # CUNEIFORM SIGN URU TIMES MIN -12348 ; [.4F34.0020.0002] # CUNEIFORM SIGN URU TIMES PA -12349 ; [.4F35.0020.0002] # CUNEIFORM SIGN URU TIMES SHE -1234A ; [.4F36.0020.0002] # CUNEIFORM SIGN URU TIMES SIG4 -1234B ; [.4F37.0020.0002] # CUNEIFORM SIGN URU TIMES TU -1234C ; [.4F38.0020.0002] # CUNEIFORM SIGN URU TIMES U PLUS GUD -1234D ; [.4F39.0020.0002] # CUNEIFORM SIGN URU TIMES UD -1234E ; [.4F3A.0020.0002] # CUNEIFORM SIGN URU TIMES URUDA -1234F ; [.4F3B.0020.0002] # CUNEIFORM SIGN URUDA -12350 ; [.4F3C.0020.0002] # CUNEIFORM SIGN URUDA TIMES U -12351 ; [.4F3D.0020.0002] # CUNEIFORM SIGN USH -12352 ; [.4F3E.0020.0002] # CUNEIFORM SIGN USH TIMES A -12353 ; [.4F3F.0020.0002] # CUNEIFORM SIGN USH TIMES KU -12354 ; [.4F40.0020.0002] # CUNEIFORM SIGN USH TIMES KUR -12355 ; [.4F41.0020.0002] # CUNEIFORM SIGN USH TIMES TAK4 -12356 ; [.4F42.0020.0002] # CUNEIFORM SIGN USHX -12357 ; [.4F43.0020.0002] # CUNEIFORM SIGN USH2 -12358 ; [.4F44.0020.0002] # CUNEIFORM SIGN USHUMX -12359 ; [.4F45.0020.0002] # CUNEIFORM SIGN UTUKI -1235A ; [.4F46.0020.0002] # CUNEIFORM SIGN UZ3 -1235B ; [.4F47.0020.0002] # CUNEIFORM SIGN UZ3 TIMES KASKAL -1235C ; [.4F48.0020.0002] # CUNEIFORM SIGN UZU -1235D ; [.4F49.0020.0002] # CUNEIFORM SIGN ZA -1235E ; [.4F4A.0020.0002] # CUNEIFORM SIGN ZA TENU -1235F ; [.4F4B.0020.0002] # CUNEIFORM SIGN ZA SQUARED TIMES KUR -12360 ; [.4F4C.0020.0002] # CUNEIFORM SIGN ZAG -12361 ; [.4F4D.0020.0002] # CUNEIFORM SIGN ZAMX -12362 ; [.4F4E.0020.0002] # CUNEIFORM SIGN ZE2 -12363 ; [.4F4F.0020.0002] # CUNEIFORM SIGN ZI -12364 ; [.4F50.0020.0002] # CUNEIFORM SIGN ZI OVER ZI -12365 ; [.4F51.0020.0002] # CUNEIFORM SIGN ZI3 -12366 ; [.4F52.0020.0002] # CUNEIFORM SIGN ZIB -12367 ; [.4F53.0020.0002] # CUNEIFORM SIGN ZIB KABA TENU -12368 ; [.4F54.0020.0002] # CUNEIFORM SIGN ZIG -12369 ; [.4F55.0020.0002] # CUNEIFORM SIGN ZIZ2 -1236A ; [.4F56.0020.0002] # CUNEIFORM SIGN ZU -1236B ; [.4F57.0020.0002] # CUNEIFORM SIGN ZU5 -1236C ; [.4F58.0020.0002] # CUNEIFORM SIGN ZU5 TIMES A -1236D ; [.4F59.0020.0002] # CUNEIFORM SIGN ZUBUR -1236E ; [.4F5A.0020.0002] # CUNEIFORM SIGN ZUM -1236F ; [.4F5B.0020.0002] # CUNEIFORM SIGN KAP ELAMITE -12370 ; [.4F5C.0020.0002] # CUNEIFORM SIGN AB TIMES NUN -12371 ; [.4F5D.0020.0002] # CUNEIFORM SIGN AB2 TIMES A -12372 ; [.4F5E.0020.0002] # CUNEIFORM SIGN AMAR TIMES KUG -12373 ; [.4F5F.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS MASH -12374 ; [.4F60.0020.0002] # CUNEIFORM SIGN DAG3 -12375 ; [.4F61.0020.0002] # CUNEIFORM SIGN DISH PLUS SHU -12376 ; [.4F62.0020.0002] # CUNEIFORM SIGN DUB TIMES SHE -12377 ; [.4F63.0020.0002] # CUNEIFORM SIGN EZEN TIMES GUD -12378 ; [.4F64.0020.0002] # CUNEIFORM SIGN EZEN TIMES SHE -12379 ; [.4F65.0020.0002] # CUNEIFORM SIGN GA2 TIMES AN PLUS KAK PLUS A -1237A ; [.4F66.0020.0002] # CUNEIFORM SIGN GA2 TIMES ASH2 -1237B ; [.4F67.0020.0002] # CUNEIFORM SIGN GE22 -1237C ; [.4F68.0020.0002] # CUNEIFORM SIGN GIG -1237D ; [.4F69.0020.0002] # CUNEIFORM SIGN HUSH -1237E ; [.4F6A.0020.0002] # CUNEIFORM SIGN KA TIMES ANSHE -1237F ; [.4F6B.0020.0002] # CUNEIFORM SIGN KA TIMES ASH3 -12380 ; [.4F6C.0020.0002] # CUNEIFORM SIGN KA TIMES GISH -12381 ; [.4F6D.0020.0002] # CUNEIFORM SIGN KA TIMES GUD -12382 ; [.4F6E.0020.0002] # CUNEIFORM SIGN KA TIMES HI TIMES ASH2 -12383 ; [.4F6F.0020.0002] # CUNEIFORM SIGN KA TIMES LUM -12384 ; [.4F70.0020.0002] # CUNEIFORM SIGN KA TIMES PA -12385 ; [.4F71.0020.0002] # CUNEIFORM SIGN KA TIMES SHUL -12386 ; [.4F72.0020.0002] # CUNEIFORM SIGN KA TIMES TU -12387 ; [.4F73.0020.0002] # CUNEIFORM SIGN KA TIMES UR2 -12388 ; [.4F74.0020.0002] # CUNEIFORM SIGN LAGAB TIMES GI -12389 ; [.4F75.0020.0002] # CUNEIFORM SIGN LU2 SHESHIG TIMES BAD -1238A ; [.4F76.0020.0002] # CUNEIFORM SIGN LU2 TIMES ESH2 PLUS LAL -1238B ; [.4F77.0020.0002] # CUNEIFORM SIGN LU2 TIMES SHU -1238C ; [.4F78.0020.0002] # CUNEIFORM SIGN MESH -1238D ; [.4F79.0020.0002] # CUNEIFORM SIGN MUSH3 TIMES ZA -1238E ; [.4F7A.0020.0002] # CUNEIFORM SIGN NA4 -1238F ; [.4F7B.0020.0002] # CUNEIFORM SIGN NIN -12390 ; [.4F7C.0020.0002] # CUNEIFORM SIGN NIN9 -12391 ; [.4F7D.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES BAL -12392 ; [.4F7E.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES GI -12393 ; [.4F7F.0020.0002] # CUNEIFORM SIGN NU11 ROTATED NINETY DEGREES -12394 ; [.4F80.0020.0002] # CUNEIFORM SIGN PESH2 ASTERISK -12395 ; [.4F81.0020.0002] # CUNEIFORM SIGN PIR2 -12396 ; [.4F82.0020.0002] # CUNEIFORM SIGN SAG TIMES IGI GUNU -12397 ; [.4F83.0020.0002] # CUNEIFORM SIGN TI2 -12398 ; [.4F84.0020.0002] # CUNEIFORM SIGN UM TIMES ME -12399 ; [.4F85.0020.0002] # CUNEIFORM SIGN U U -12480 ; [.4F86.0020.0002] # CUNEIFORM SIGN AB TIMES NUN TENU -12481 ; [.4F87.0020.0002] # CUNEIFORM SIGN AB TIMES SHU2 -12482 ; [.4F88.0020.0002] # CUNEIFORM SIGN AD TIMES ESH2 -12483 ; [.4F89.0020.0002] # CUNEIFORM SIGN BAD TIMES DISH TENU -12484 ; [.4F8A.0020.0002] # CUNEIFORM SIGN BAHAR2 TIMES AB2 -12485 ; [.4F8B.0020.0002] # CUNEIFORM SIGN BAHAR2 TIMES NI -12486 ; [.4F8C.0020.0002] # CUNEIFORM SIGN BAHAR2 TIMES ZA -12487 ; [.4F8D.0020.0002] # CUNEIFORM SIGN BU OVER BU TIMES NA2 -12488 ; [.4F8E.0020.0002] # CUNEIFORM SIGN DA TIMES TAK4 -12489 ; [.4F8F.0020.0002] # CUNEIFORM SIGN DAG TIMES KUR -1248A ; [.4F90.0020.0002] # CUNEIFORM SIGN DIM TIMES IGI -1248B ; [.4F91.0020.0002] # CUNEIFORM SIGN DIM TIMES U U U -1248C ; [.4F92.0020.0002] # CUNEIFORM SIGN DIM2 TIMES UD -1248D ; [.4F93.0020.0002] # CUNEIFORM SIGN DUG TIMES ANSHE -1248E ; [.4F94.0020.0002] # CUNEIFORM SIGN DUG TIMES ASH -1248F ; [.4F95.0020.0002] # CUNEIFORM SIGN DUG TIMES ASH AT LEFT -12490 ; [.4F96.0020.0002] # CUNEIFORM SIGN DUG TIMES DIN -12491 ; [.4F97.0020.0002] # CUNEIFORM SIGN DUG TIMES DUN -12492 ; [.4F98.0020.0002] # CUNEIFORM SIGN DUG TIMES ERIN2 -12493 ; [.4F99.0020.0002] # CUNEIFORM SIGN DUG TIMES GA -12494 ; [.4F9A.0020.0002] # CUNEIFORM SIGN DUG TIMES GI -12495 ; [.4F9B.0020.0002] # CUNEIFORM SIGN DUG TIMES GIR2 GUNU -12496 ; [.4F9C.0020.0002] # CUNEIFORM SIGN DUG TIMES GISH -12497 ; [.4F9D.0020.0002] # CUNEIFORM SIGN DUG TIMES HA -12498 ; [.4F9E.0020.0002] # CUNEIFORM SIGN DUG TIMES HI -12499 ; [.4F9F.0020.0002] # CUNEIFORM SIGN DUG TIMES IGI GUNU -1249A ; [.4FA0.0020.0002] # CUNEIFORM SIGN DUG TIMES KASKAL -1249B ; [.4FA1.0020.0002] # CUNEIFORM SIGN DUG TIMES KUR -1249C ; [.4FA2.0020.0002] # CUNEIFORM SIGN DUG TIMES KUSHU2 -1249D ; [.4FA3.0020.0002] # CUNEIFORM SIGN DUG TIMES KUSHU2 PLUS KASKAL -1249E ; [.4FA4.0020.0002] # CUNEIFORM SIGN DUG TIMES LAK-020 -1249F ; [.4FA5.0020.0002] # CUNEIFORM SIGN DUG TIMES LAM -124A0 ; [.4FA6.0020.0002] # CUNEIFORM SIGN DUG TIMES LAM TIMES KUR -124A1 ; [.4FA7.0020.0002] # CUNEIFORM SIGN DUG TIMES LUH PLUS GISH -124A2 ; [.4FA8.0020.0002] # CUNEIFORM SIGN DUG TIMES MASH -124A3 ; [.4FA9.0020.0002] # CUNEIFORM SIGN DUG TIMES MES -124A4 ; [.4FAA.0020.0002] # CUNEIFORM SIGN DUG TIMES MI -124A5 ; [.4FAB.0020.0002] # CUNEIFORM SIGN DUG TIMES NI -124A6 ; [.4FAC.0020.0002] # CUNEIFORM SIGN DUG TIMES PI -124A7 ; [.4FAD.0020.0002] # CUNEIFORM SIGN DUG TIMES SHE -124A8 ; [.4FAE.0020.0002] # CUNEIFORM SIGN DUG TIMES SI GUNU -124A9 ; [.4FAF.0020.0002] # CUNEIFORM SIGN E2 TIMES KUR -124AA ; [.4FB0.0020.0002] # CUNEIFORM SIGN E2 TIMES PAP -124AB ; [.4FB1.0020.0002] # CUNEIFORM SIGN ERIN2 X -124AC ; [.4FB2.0020.0002] # CUNEIFORM SIGN ESH2 CROSSING ESH2 -124AD ; [.4FB3.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES ASH -124AE ; [.4FB4.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES HI -124AF ; [.4FB5.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES IGI GUNU -124B0 ; [.4FB6.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES LA -124B1 ; [.4FB7.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES LAL -124B2 ; [.4FB8.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES ME -124B3 ; [.4FB9.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES MES -124B4 ; [.4FBA.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES SU -124B5 ; [.4FBB.0020.0002] # CUNEIFORM SIGN EZEN TIMES SU -124B6 ; [.4FBC.0020.0002] # CUNEIFORM SIGN GA2 TIMES BAHAR2 -124B7 ; [.4FBD.0020.0002] # CUNEIFORM SIGN GA2 TIMES DIM GUNU -124B8 ; [.4FBE.0020.0002] # CUNEIFORM SIGN GA2 TIMES DUG TIMES IGI GUNU -124B9 ; [.4FBF.0020.0002] # CUNEIFORM SIGN GA2 TIMES DUG TIMES KASKAL -124BA ; [.4FC0.0020.0002] # CUNEIFORM SIGN GA2 TIMES EREN -124BB ; [.4FC1.0020.0002] # CUNEIFORM SIGN GA2 TIMES GA -124BC ; [.4FC2.0020.0002] # CUNEIFORM SIGN GA2 TIMES GAR PLUS DI -124BD ; [.4FC3.0020.0002] # CUNEIFORM SIGN GA2 TIMES GAR PLUS NE -124BE ; [.4FC4.0020.0002] # CUNEIFORM SIGN GA2 TIMES HA PLUS A -124BF ; [.4FC5.0020.0002] # CUNEIFORM SIGN GA2 TIMES KUSHU2 PLUS KASKAL -124C0 ; [.4FC6.0020.0002] # CUNEIFORM SIGN GA2 TIMES LAM -124C1 ; [.4FC7.0020.0002] # CUNEIFORM SIGN GA2 TIMES LAM TIMES KUR -124C2 ; [.4FC8.0020.0002] # CUNEIFORM SIGN GA2 TIMES LUH -124C3 ; [.4FC9.0020.0002] # CUNEIFORM SIGN GA2 TIMES MUSH -124C4 ; [.4FCA.0020.0002] # CUNEIFORM SIGN GA2 TIMES NE -124C5 ; [.4FCB.0020.0002] # CUNEIFORM SIGN GA2 TIMES NE PLUS E2 -124C6 ; [.4FCC.0020.0002] # CUNEIFORM SIGN GA2 TIMES NE PLUS GI -124C7 ; [.4FCD.0020.0002] # CUNEIFORM SIGN GA2 TIMES SHIM -124C8 ; [.4FCE.0020.0002] # CUNEIFORM SIGN GA2 TIMES ZIZ2 -124C9 ; [.4FCF.0020.0002] # CUNEIFORM SIGN GABA ROTATED NINETY DEGREES -124CA ; [.4FD0.0020.0002] # CUNEIFORM SIGN GESHTIN TIMES U -124CB ; [.4FD1.0020.0002] # CUNEIFORM SIGN GISH TIMES GISH CROSSING GISH -124CC ; [.4FD2.0020.0002] # CUNEIFORM SIGN GU2 TIMES IGI GUNU -124CD ; [.4FD3.0020.0002] # CUNEIFORM SIGN GUD PLUS GISH TIMES TAK4 -124CE ; [.4FD4.0020.0002] # CUNEIFORM SIGN HA TENU GUNU -124CF ; [.4FD5.0020.0002] # CUNEIFORM SIGN HI TIMES ASH OVER HI TIMES ASH -124D0 ; [.4FD6.0020.0002] # CUNEIFORM SIGN KA TIMES BU -124D1 ; [.4FD7.0020.0002] # CUNEIFORM SIGN KA TIMES KA -124D2 ; [.4FD8.0020.0002] # CUNEIFORM SIGN KA TIMES U U U -124D3 ; [.4FD9.0020.0002] # CUNEIFORM SIGN KA TIMES UR -124D4 ; [.4FDA.0020.0002] # CUNEIFORM SIGN LAGAB TIMES ZU OVER ZU -124D5 ; [.4FDB.0020.0002] # CUNEIFORM SIGN LAK-003 -124D6 ; [.4FDC.0020.0002] # CUNEIFORM SIGN LAK-021 -124D7 ; [.4FDD.0020.0002] # CUNEIFORM SIGN LAK-025 -124D8 ; [.4FDE.0020.0002] # CUNEIFORM SIGN LAK-030 -124D9 ; [.4FDF.0020.0002] # CUNEIFORM SIGN LAK-050 -124DA ; [.4FE0.0020.0002] # CUNEIFORM SIGN LAK-051 -124DB ; [.4FE1.0020.0002] # CUNEIFORM SIGN LAK-062 -124DC ; [.4FE2.0020.0002] # CUNEIFORM SIGN LAK-079 OVER LAK-079 GUNU -124DD ; [.4FE3.0020.0002] # CUNEIFORM SIGN LAK-080 -124DE ; [.4FE4.0020.0002] # CUNEIFORM SIGN LAK-081 OVER LAK-081 -124DF ; [.4FE5.0020.0002] # CUNEIFORM SIGN LAK-092 -124E0 ; [.4FE6.0020.0002] # CUNEIFORM SIGN LAK-130 -124E1 ; [.4FE7.0020.0002] # CUNEIFORM SIGN LAK-142 -124E2 ; [.4FE8.0020.0002] # CUNEIFORM SIGN LAK-210 -124E3 ; [.4FE9.0020.0002] # CUNEIFORM SIGN LAK-219 -124E4 ; [.4FEA.0020.0002] # CUNEIFORM SIGN LAK-220 -124E5 ; [.4FEB.0020.0002] # CUNEIFORM SIGN LAK-225 -124E6 ; [.4FEC.0020.0002] # CUNEIFORM SIGN LAK-228 -124E7 ; [.4FED.0020.0002] # CUNEIFORM SIGN LAK-238 -124E8 ; [.4FEE.0020.0002] # CUNEIFORM SIGN LAK-265 -124E9 ; [.4FEF.0020.0002] # CUNEIFORM SIGN LAK-266 -124EA ; [.4FF0.0020.0002] # CUNEIFORM SIGN LAK-343 -124EB ; [.4FF1.0020.0002] # CUNEIFORM SIGN LAK-347 -124EC ; [.4FF2.0020.0002] # CUNEIFORM SIGN LAK-348 -124ED ; [.4FF3.0020.0002] # CUNEIFORM SIGN LAK-383 -124EE ; [.4FF4.0020.0002] # CUNEIFORM SIGN LAK-384 -124EF ; [.4FF5.0020.0002] # CUNEIFORM SIGN LAK-390 -124F0 ; [.4FF6.0020.0002] # CUNEIFORM SIGN LAK-441 -124F1 ; [.4FF7.0020.0002] # CUNEIFORM SIGN LAK-449 -124F2 ; [.4FF8.0020.0002] # CUNEIFORM SIGN LAK-449 TIMES GU -124F3 ; [.4FF9.0020.0002] # CUNEIFORM SIGN LAK-449 TIMES IGI -124F4 ; [.4FFA.0020.0002] # CUNEIFORM SIGN LAK-449 TIMES PAP PLUS LU3 -124F5 ; [.4FFB.0020.0002] # CUNEIFORM SIGN LAK-449 TIMES PAP PLUS PAP PLUS LU3 -124F6 ; [.4FFC.0020.0002] # CUNEIFORM SIGN LAK-449 TIMES U2 PLUS BA -124F7 ; [.4FFD.0020.0002] # CUNEIFORM SIGN LAK-450 -124F8 ; [.4FFE.0020.0002] # CUNEIFORM SIGN LAK-457 -124F9 ; [.4FFF.0020.0002] # CUNEIFORM SIGN LAK-470 -124FA ; [.5000.0020.0002] # CUNEIFORM SIGN LAK-483 -124FB ; [.5001.0020.0002] # CUNEIFORM SIGN LAK-490 -124FC ; [.5002.0020.0002] # CUNEIFORM SIGN LAK-492 -124FD ; [.5003.0020.0002] # CUNEIFORM SIGN LAK-493 -124FE ; [.5004.0020.0002] # CUNEIFORM SIGN LAK-495 -124FF ; [.5005.0020.0002] # CUNEIFORM SIGN LAK-550 -12500 ; [.5006.0020.0002] # CUNEIFORM SIGN LAK-608 -12501 ; [.5007.0020.0002] # CUNEIFORM SIGN LAK-617 -12502 ; [.5008.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES ASH -12503 ; [.5009.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES BAD -12504 ; [.500A.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES DUN3 GUNU GUNU -12505 ; [.500B.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES KU3 -12506 ; [.500C.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES LA -12507 ; [.500D.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES TAR -12508 ; [.500E.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES TE -12509 ; [.500F.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES U2 -1250A ; [.5010.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES UD -1250B ; [.5011.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES URUDA -1250C ; [.5012.0020.0002] # CUNEIFORM SIGN LAK-636 -1250D ; [.5013.0020.0002] # CUNEIFORM SIGN LAK-648 -1250E ; [.5014.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES DUB -1250F ; [.5015.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES GA -12510 ; [.5016.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES IGI -12511 ; [.5017.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES IGI GUNU -12512 ; [.5018.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES NI -12513 ; [.5019.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES PAP PLUS PAP PLUS LU3 -12514 ; [.501A.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES SHESH PLUS KI -12515 ; [.501B.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES UD -12516 ; [.501C.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES URUDA -12517 ; [.501D.0020.0002] # CUNEIFORM SIGN LAK-724 -12518 ; [.501E.0020.0002] # CUNEIFORM SIGN LAK-749 -12519 ; [.501F.0020.0002] # CUNEIFORM SIGN LU2 GUNU TIMES ASH -1251A ; [.5020.0020.0002] # CUNEIFORM SIGN LU2 TIMES DISH -1251B ; [.5021.0020.0002] # CUNEIFORM SIGN LU2 TIMES HAL -1251C ; [.5022.0020.0002] # CUNEIFORM SIGN LU2 TIMES PAP -1251D ; [.5023.0020.0002] # CUNEIFORM SIGN LU2 TIMES PAP PLUS PAP PLUS LU3 -1251E ; [.5024.0020.0002] # CUNEIFORM SIGN LU2 TIMES TAK4 -1251F ; [.5025.0020.0002] # CUNEIFORM SIGN MI PLUS ZA7 -12520 ; [.5026.0020.0002] # CUNEIFORM SIGN MUSH OVER MUSH TIMES GA -12521 ; [.5027.0020.0002] # CUNEIFORM SIGN MUSH OVER MUSH TIMES KAK -12522 ; [.5028.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES DIM GUNU -12523 ; [.5029.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES GISH -12524 ; [.502A.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES GUL -12525 ; [.502B.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES HI -12526 ; [.502C.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES KESH2 -12527 ; [.502D.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES LAK-050 -12528 ; [.502E.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES MASH -12529 ; [.502F.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES PAP PLUS PAP -1252A ; [.5030.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES U -1252B ; [.5031.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES U PLUS U -1252C ; [.5032.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES URUDA -1252D ; [.5033.0020.0002] # CUNEIFORM SIGN SAG GUNU TIMES HA -1252E ; [.5034.0020.0002] # CUNEIFORM SIGN SAG TIMES EN -1252F ; [.5035.0020.0002] # CUNEIFORM SIGN SAG TIMES SHE AT LEFT -12530 ; [.5036.0020.0002] # CUNEIFORM SIGN SAG TIMES TAK4 -12531 ; [.5037.0020.0002] # CUNEIFORM SIGN SHA6 TENU -12532 ; [.5038.0020.0002] # CUNEIFORM SIGN SHE OVER SHE -12533 ; [.5039.0020.0002] # CUNEIFORM SIGN SHE PLUS HUB2 -12534 ; [.503A.0020.0002] # CUNEIFORM SIGN SHE PLUS NAM2 -12535 ; [.503B.0020.0002] # CUNEIFORM SIGN SHE PLUS SAR -12536 ; [.503C.0020.0002] # CUNEIFORM SIGN SHU2 PLUS DUG TIMES NI -12537 ; [.503D.0020.0002] # CUNEIFORM SIGN SHU2 PLUS E2 TIMES AN -12538 ; [.503E.0020.0002] # CUNEIFORM SIGN SI TIMES TAK4 -12539 ; [.503F.0020.0002] # CUNEIFORM SIGN TAK4 PLUS SAG -1253A ; [.5040.0020.0002] # CUNEIFORM SIGN TUM TIMES GAN2 TENU -1253B ; [.5041.0020.0002] # CUNEIFORM SIGN TUM TIMES THREE DISH -1253C ; [.5042.0020.0002] # CUNEIFORM SIGN UR2 INVERTED -1253D ; [.5043.0020.0002] # CUNEIFORM SIGN UR2 TIMES UD -1253E ; [.5044.0020.0002] # CUNEIFORM SIGN URU TIMES DARA3 -1253F ; [.5045.0020.0002] # CUNEIFORM SIGN URU TIMES LAK-668 -12540 ; [.5046.0020.0002] # CUNEIFORM SIGN URU TIMES LU3 -12541 ; [.5047.0020.0002] # CUNEIFORM SIGN ZA7 -12542 ; [.5048.0020.0002] # CUNEIFORM SIGN ZU OVER ZU PLUS SAR -12543 ; [.5049.0020.0002] # CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU -13000 ; [.504A.0020.0002] # EGYPTIAN HIEROGLYPH A001 -13001 ; [.504B.0020.0002] # EGYPTIAN HIEROGLYPH A002 -13002 ; [.504C.0020.0002] # EGYPTIAN HIEROGLYPH A003 -13003 ; [.504D.0020.0002] # EGYPTIAN HIEROGLYPH A004 -13004 ; [.504E.0020.0002] # EGYPTIAN HIEROGLYPH A005 -13005 ; [.504F.0020.0002] # EGYPTIAN HIEROGLYPH A005A -13006 ; [.5050.0020.0002] # EGYPTIAN HIEROGLYPH A006 -13007 ; [.5051.0020.0002] # EGYPTIAN HIEROGLYPH A006A -13008 ; [.5052.0020.0002] # EGYPTIAN HIEROGLYPH A006B -13009 ; [.5053.0020.0002] # EGYPTIAN HIEROGLYPH A007 -1300A ; [.5054.0020.0002] # EGYPTIAN HIEROGLYPH A008 -1300B ; [.5055.0020.0002] # EGYPTIAN HIEROGLYPH A009 -1300C ; [.5056.0020.0002] # EGYPTIAN HIEROGLYPH A010 -1300D ; [.5057.0020.0002] # EGYPTIAN HIEROGLYPH A011 -1300E ; [.5058.0020.0002] # EGYPTIAN HIEROGLYPH A012 -1300F ; [.5059.0020.0002] # EGYPTIAN HIEROGLYPH A013 -13010 ; [.505A.0020.0002] # EGYPTIAN HIEROGLYPH A014 -13011 ; [.505B.0020.0002] # EGYPTIAN HIEROGLYPH A014A -13012 ; [.505C.0020.0002] # EGYPTIAN HIEROGLYPH A015 -13013 ; [.505D.0020.0002] # EGYPTIAN HIEROGLYPH A016 -13014 ; [.505E.0020.0002] # EGYPTIAN HIEROGLYPH A017 -13015 ; [.505F.0020.0002] # EGYPTIAN HIEROGLYPH A017A -13016 ; [.5060.0020.0002] # EGYPTIAN HIEROGLYPH A018 -13017 ; [.5061.0020.0002] # EGYPTIAN HIEROGLYPH A019 -13018 ; [.5062.0020.0002] # EGYPTIAN HIEROGLYPH A020 -13019 ; [.5063.0020.0002] # EGYPTIAN HIEROGLYPH A021 -1301A ; [.5064.0020.0002] # EGYPTIAN HIEROGLYPH A022 -1301B ; [.5065.0020.0002] # EGYPTIAN HIEROGLYPH A023 -1301C ; [.5066.0020.0002] # EGYPTIAN HIEROGLYPH A024 -1301D ; [.5067.0020.0002] # EGYPTIAN HIEROGLYPH A025 -1301E ; [.5068.0020.0002] # EGYPTIAN HIEROGLYPH A026 -1301F ; [.5069.0020.0002] # EGYPTIAN HIEROGLYPH A027 -13020 ; [.506A.0020.0002] # EGYPTIAN HIEROGLYPH A028 -13021 ; [.506B.0020.0002] # EGYPTIAN HIEROGLYPH A029 -13022 ; [.506C.0020.0002] # EGYPTIAN HIEROGLYPH A030 -13023 ; [.506D.0020.0002] # EGYPTIAN HIEROGLYPH A031 -13024 ; [.506E.0020.0002] # EGYPTIAN HIEROGLYPH A032 -13025 ; [.506F.0020.0002] # EGYPTIAN HIEROGLYPH A032A -13026 ; [.5070.0020.0002] # EGYPTIAN HIEROGLYPH A033 -13027 ; [.5071.0020.0002] # EGYPTIAN HIEROGLYPH A034 -13028 ; [.5072.0020.0002] # EGYPTIAN HIEROGLYPH A035 -13029 ; [.5073.0020.0002] # EGYPTIAN HIEROGLYPH A036 -1302A ; [.5074.0020.0002] # EGYPTIAN HIEROGLYPH A037 -1302B ; [.5075.0020.0002] # EGYPTIAN HIEROGLYPH A038 -1302C ; [.5076.0020.0002] # EGYPTIAN HIEROGLYPH A039 -1302D ; [.5077.0020.0002] # EGYPTIAN HIEROGLYPH A040 -1302E ; [.5078.0020.0002] # EGYPTIAN HIEROGLYPH A040A -1302F ; [.5079.0020.0002] # EGYPTIAN HIEROGLYPH A041 -13030 ; [.507A.0020.0002] # EGYPTIAN HIEROGLYPH A042 -13031 ; [.507B.0020.0002] # EGYPTIAN HIEROGLYPH A042A -13032 ; [.507C.0020.0002] # EGYPTIAN HIEROGLYPH A043 -13033 ; [.507D.0020.0002] # EGYPTIAN HIEROGLYPH A043A -13034 ; [.507E.0020.0002] # EGYPTIAN HIEROGLYPH A044 -13035 ; [.507F.0020.0002] # EGYPTIAN HIEROGLYPH A045 -13036 ; [.5080.0020.0002] # EGYPTIAN HIEROGLYPH A045A -13037 ; [.5081.0020.0002] # EGYPTIAN HIEROGLYPH A046 -13038 ; [.5082.0020.0002] # EGYPTIAN HIEROGLYPH A047 -13039 ; [.5083.0020.0002] # EGYPTIAN HIEROGLYPH A048 -1303A ; [.5084.0020.0002] # EGYPTIAN HIEROGLYPH A049 -1303B ; [.5085.0020.0002] # EGYPTIAN HIEROGLYPH A050 -1303C ; [.5086.0020.0002] # EGYPTIAN HIEROGLYPH A051 -1303D ; [.5087.0020.0002] # EGYPTIAN HIEROGLYPH A052 -1303E ; [.5088.0020.0002] # EGYPTIAN HIEROGLYPH A053 -1303F ; [.5089.0020.0002] # EGYPTIAN HIEROGLYPH A054 -13040 ; [.508A.0020.0002] # EGYPTIAN HIEROGLYPH A055 -13041 ; [.508B.0020.0002] # EGYPTIAN HIEROGLYPH A056 -13042 ; [.508C.0020.0002] # EGYPTIAN HIEROGLYPH A057 -13043 ; [.508D.0020.0002] # EGYPTIAN HIEROGLYPH A058 -13044 ; [.508E.0020.0002] # EGYPTIAN HIEROGLYPH A059 -13045 ; [.508F.0020.0002] # EGYPTIAN HIEROGLYPH A060 -13046 ; [.5090.0020.0002] # EGYPTIAN HIEROGLYPH A061 -13047 ; [.5091.0020.0002] # EGYPTIAN HIEROGLYPH A062 -13048 ; [.5092.0020.0002] # EGYPTIAN HIEROGLYPH A063 -13049 ; [.5093.0020.0002] # EGYPTIAN HIEROGLYPH A064 -1304A ; [.5094.0020.0002] # EGYPTIAN HIEROGLYPH A065 -1304B ; [.5095.0020.0002] # EGYPTIAN HIEROGLYPH A066 -1304C ; [.5096.0020.0002] # EGYPTIAN HIEROGLYPH A067 -1304D ; [.5097.0020.0002] # EGYPTIAN HIEROGLYPH A068 -1304E ; [.5098.0020.0002] # EGYPTIAN HIEROGLYPH A069 -1304F ; [.5099.0020.0002] # EGYPTIAN HIEROGLYPH A070 -13050 ; [.509A.0020.0002] # EGYPTIAN HIEROGLYPH B001 -13051 ; [.509B.0020.0002] # EGYPTIAN HIEROGLYPH B002 -13052 ; [.509C.0020.0002] # EGYPTIAN HIEROGLYPH B003 -13053 ; [.509D.0020.0002] # EGYPTIAN HIEROGLYPH B004 -13054 ; [.509E.0020.0002] # EGYPTIAN HIEROGLYPH B005 -13055 ; [.509F.0020.0002] # EGYPTIAN HIEROGLYPH B005A -13056 ; [.50A0.0020.0002] # EGYPTIAN HIEROGLYPH B006 -13057 ; [.50A1.0020.0002] # EGYPTIAN HIEROGLYPH B007 -13058 ; [.50A2.0020.0002] # EGYPTIAN HIEROGLYPH B008 -13059 ; [.50A3.0020.0002] # EGYPTIAN HIEROGLYPH B009 -1305A ; [.50A4.0020.0002] # EGYPTIAN HIEROGLYPH C001 -1305B ; [.50A5.0020.0002] # EGYPTIAN HIEROGLYPH C002 -1305C ; [.50A6.0020.0002] # EGYPTIAN HIEROGLYPH C002A -1305D ; [.50A7.0020.0002] # EGYPTIAN HIEROGLYPH C002B -1305E ; [.50A8.0020.0002] # EGYPTIAN HIEROGLYPH C002C -1305F ; [.50A9.0020.0002] # EGYPTIAN HIEROGLYPH C003 -13060 ; [.50AA.0020.0002] # EGYPTIAN HIEROGLYPH C004 -13061 ; [.50AB.0020.0002] # EGYPTIAN HIEROGLYPH C005 -13062 ; [.50AC.0020.0002] # EGYPTIAN HIEROGLYPH C006 -13063 ; [.50AD.0020.0002] # EGYPTIAN HIEROGLYPH C007 -13064 ; [.50AE.0020.0002] # EGYPTIAN HIEROGLYPH C008 -13065 ; [.50AF.0020.0002] # EGYPTIAN HIEROGLYPH C009 -13066 ; [.50B0.0020.0002] # EGYPTIAN HIEROGLYPH C010 -13067 ; [.50B1.0020.0002] # EGYPTIAN HIEROGLYPH C010A -13068 ; [.50B2.0020.0002] # EGYPTIAN HIEROGLYPH C011 -13069 ; [.50B3.0020.0002] # EGYPTIAN HIEROGLYPH C012 -1306A ; [.50B4.0020.0002] # EGYPTIAN HIEROGLYPH C013 -1306B ; [.50B5.0020.0002] # EGYPTIAN HIEROGLYPH C014 -1306C ; [.50B6.0020.0002] # EGYPTIAN HIEROGLYPH C015 -1306D ; [.50B7.0020.0002] # EGYPTIAN HIEROGLYPH C016 -1306E ; [.50B8.0020.0002] # EGYPTIAN HIEROGLYPH C017 -1306F ; [.50B9.0020.0002] # EGYPTIAN HIEROGLYPH C018 -13070 ; [.50BA.0020.0002] # EGYPTIAN HIEROGLYPH C019 -13071 ; [.50BB.0020.0002] # EGYPTIAN HIEROGLYPH C020 -13072 ; [.50BC.0020.0002] # EGYPTIAN HIEROGLYPH C021 -13073 ; [.50BD.0020.0002] # EGYPTIAN HIEROGLYPH C022 -13074 ; [.50BE.0020.0002] # EGYPTIAN HIEROGLYPH C023 -13075 ; [.50BF.0020.0002] # EGYPTIAN HIEROGLYPH C024 -13076 ; [.50C0.0020.0002] # EGYPTIAN HIEROGLYPH D001 -13077 ; [.50C1.0020.0002] # EGYPTIAN HIEROGLYPH D002 -13078 ; [.50C2.0020.0002] # EGYPTIAN HIEROGLYPH D003 -13079 ; [.50C3.0020.0002] # EGYPTIAN HIEROGLYPH D004 -1307A ; [.50C4.0020.0002] # EGYPTIAN HIEROGLYPH D005 -1307B ; [.50C5.0020.0002] # EGYPTIAN HIEROGLYPH D006 -1307C ; [.50C6.0020.0002] # EGYPTIAN HIEROGLYPH D007 -1307D ; [.50C7.0020.0002] # EGYPTIAN HIEROGLYPH D008 -1307E ; [.50C8.0020.0002] # EGYPTIAN HIEROGLYPH D008A -1307F ; [.50C9.0020.0002] # EGYPTIAN HIEROGLYPH D009 -13080 ; [.50CA.0020.0002] # EGYPTIAN HIEROGLYPH D010 -13081 ; [.50CB.0020.0002] # EGYPTIAN HIEROGLYPH D011 -13082 ; [.50CC.0020.0002] # EGYPTIAN HIEROGLYPH D012 -13083 ; [.50CD.0020.0002] # EGYPTIAN HIEROGLYPH D013 -13084 ; [.50CE.0020.0002] # EGYPTIAN HIEROGLYPH D014 -13085 ; [.50CF.0020.0002] # EGYPTIAN HIEROGLYPH D015 -13086 ; [.50D0.0020.0002] # EGYPTIAN HIEROGLYPH D016 -13087 ; [.50D1.0020.0002] # EGYPTIAN HIEROGLYPH D017 -13088 ; [.50D2.0020.0002] # EGYPTIAN HIEROGLYPH D018 -13089 ; [.50D3.0020.0002] # EGYPTIAN HIEROGLYPH D019 -1308A ; [.50D4.0020.0002] # EGYPTIAN HIEROGLYPH D020 -1308B ; [.50D5.0020.0002] # EGYPTIAN HIEROGLYPH D021 -1308C ; [.50D6.0020.0002] # EGYPTIAN HIEROGLYPH D022 -1308D ; [.50D7.0020.0002] # EGYPTIAN HIEROGLYPH D023 -1308E ; [.50D8.0020.0002] # EGYPTIAN HIEROGLYPH D024 -1308F ; [.50D9.0020.0002] # EGYPTIAN HIEROGLYPH D025 -13090 ; [.50DA.0020.0002] # EGYPTIAN HIEROGLYPH D026 -13091 ; [.50DB.0020.0002] # EGYPTIAN HIEROGLYPH D027 -13092 ; [.50DC.0020.0002] # EGYPTIAN HIEROGLYPH D027A -13093 ; [.50DD.0020.0002] # EGYPTIAN HIEROGLYPH D028 -13094 ; [.50DE.0020.0002] # EGYPTIAN HIEROGLYPH D029 -13095 ; [.50DF.0020.0002] # EGYPTIAN HIEROGLYPH D030 -13096 ; [.50E0.0020.0002] # EGYPTIAN HIEROGLYPH D031 -13097 ; [.50E1.0020.0002] # EGYPTIAN HIEROGLYPH D031A -13098 ; [.50E2.0020.0002] # EGYPTIAN HIEROGLYPH D032 -13099 ; [.50E3.0020.0002] # EGYPTIAN HIEROGLYPH D033 -1309A ; [.50E4.0020.0002] # EGYPTIAN HIEROGLYPH D034 -1309B ; [.50E5.0020.0002] # EGYPTIAN HIEROGLYPH D034A -1309C ; [.50E6.0020.0002] # EGYPTIAN HIEROGLYPH D035 -1309D ; [.50E7.0020.0002] # EGYPTIAN HIEROGLYPH D036 -1309E ; [.50E8.0020.0002] # EGYPTIAN HIEROGLYPH D037 -1309F ; [.50E9.0020.0002] # EGYPTIAN HIEROGLYPH D038 -130A0 ; [.50EA.0020.0002] # EGYPTIAN HIEROGLYPH D039 -130A1 ; [.50EB.0020.0002] # EGYPTIAN HIEROGLYPH D040 -130A2 ; [.50EC.0020.0002] # EGYPTIAN HIEROGLYPH D041 -130A3 ; [.50ED.0020.0002] # EGYPTIAN HIEROGLYPH D042 -130A4 ; [.50EE.0020.0002] # EGYPTIAN HIEROGLYPH D043 -130A5 ; [.50EF.0020.0002] # EGYPTIAN HIEROGLYPH D044 -130A6 ; [.50F0.0020.0002] # EGYPTIAN HIEROGLYPH D045 -130A7 ; [.50F1.0020.0002] # EGYPTIAN HIEROGLYPH D046 -130A8 ; [.50F2.0020.0002] # EGYPTIAN HIEROGLYPH D046A -130A9 ; [.50F3.0020.0002] # EGYPTIAN HIEROGLYPH D047 -130AA ; [.50F4.0020.0002] # EGYPTIAN HIEROGLYPH D048 -130AB ; [.50F5.0020.0002] # EGYPTIAN HIEROGLYPH D048A -130AC ; [.50F6.0020.0002] # EGYPTIAN HIEROGLYPH D049 -130AD ; [.50F7.0020.0002] # EGYPTIAN HIEROGLYPH D050 -130AE ; [.50F8.0020.0002] # EGYPTIAN HIEROGLYPH D050A -130AF ; [.50F9.0020.0002] # EGYPTIAN HIEROGLYPH D050B -130B0 ; [.50FA.0020.0002] # EGYPTIAN HIEROGLYPH D050C -130B1 ; [.50FB.0020.0002] # EGYPTIAN HIEROGLYPH D050D -130B2 ; [.50FC.0020.0002] # EGYPTIAN HIEROGLYPH D050E -130B3 ; [.50FD.0020.0002] # EGYPTIAN HIEROGLYPH D050F -130B4 ; [.50FE.0020.0002] # EGYPTIAN HIEROGLYPH D050G -130B5 ; [.50FF.0020.0002] # EGYPTIAN HIEROGLYPH D050H -130B6 ; [.5100.0020.0002] # EGYPTIAN HIEROGLYPH D050I -130B7 ; [.5101.0020.0002] # EGYPTIAN HIEROGLYPH D051 -130B8 ; [.5102.0020.0002] # EGYPTIAN HIEROGLYPH D052 -130B9 ; [.5103.0020.0002] # EGYPTIAN HIEROGLYPH D052A -130BA ; [.5104.0020.0002] # EGYPTIAN HIEROGLYPH D053 -130BB ; [.5105.0020.0002] # EGYPTIAN HIEROGLYPH D054 -130BC ; [.5106.0020.0002] # EGYPTIAN HIEROGLYPH D054A -130BD ; [.5107.0020.0002] # EGYPTIAN HIEROGLYPH D055 -130BE ; [.5108.0020.0002] # EGYPTIAN HIEROGLYPH D056 -130BF ; [.5109.0020.0002] # EGYPTIAN HIEROGLYPH D057 -130C0 ; [.510A.0020.0002] # EGYPTIAN HIEROGLYPH D058 -130C1 ; [.510B.0020.0002] # EGYPTIAN HIEROGLYPH D059 -130C2 ; [.510C.0020.0002] # EGYPTIAN HIEROGLYPH D060 -130C3 ; [.510D.0020.0002] # EGYPTIAN HIEROGLYPH D061 -130C4 ; [.510E.0020.0002] # EGYPTIAN HIEROGLYPH D062 -130C5 ; [.510F.0020.0002] # EGYPTIAN HIEROGLYPH D063 -130C6 ; [.5110.0020.0002] # EGYPTIAN HIEROGLYPH D064 -130C7 ; [.5111.0020.0002] # EGYPTIAN HIEROGLYPH D065 -130C8 ; [.5112.0020.0002] # EGYPTIAN HIEROGLYPH D066 -130C9 ; [.5113.0020.0002] # EGYPTIAN HIEROGLYPH D067 -130CA ; [.5114.0020.0002] # EGYPTIAN HIEROGLYPH D067A -130CB ; [.5115.0020.0002] # EGYPTIAN HIEROGLYPH D067B -130CC ; [.5116.0020.0002] # EGYPTIAN HIEROGLYPH D067C -130CD ; [.5117.0020.0002] # EGYPTIAN HIEROGLYPH D067D -130CE ; [.5118.0020.0002] # EGYPTIAN HIEROGLYPH D067E -130CF ; [.5119.0020.0002] # EGYPTIAN HIEROGLYPH D067F -130D0 ; [.511A.0020.0002] # EGYPTIAN HIEROGLYPH D067G -130D1 ; [.511B.0020.0002] # EGYPTIAN HIEROGLYPH D067H -130D2 ; [.511C.0020.0002] # EGYPTIAN HIEROGLYPH E001 -130D3 ; [.511D.0020.0002] # EGYPTIAN HIEROGLYPH E002 -130D4 ; [.511E.0020.0002] # EGYPTIAN HIEROGLYPH E003 -130D5 ; [.511F.0020.0002] # EGYPTIAN HIEROGLYPH E004 -130D6 ; [.5120.0020.0002] # EGYPTIAN HIEROGLYPH E005 -130D7 ; [.5121.0020.0002] # EGYPTIAN HIEROGLYPH E006 -130D8 ; [.5122.0020.0002] # EGYPTIAN HIEROGLYPH E007 -130D9 ; [.5123.0020.0002] # EGYPTIAN HIEROGLYPH E008 -130DA ; [.5124.0020.0002] # EGYPTIAN HIEROGLYPH E008A -130DB ; [.5125.0020.0002] # EGYPTIAN HIEROGLYPH E009 -130DC ; [.5126.0020.0002] # EGYPTIAN HIEROGLYPH E009A -130DD ; [.5127.0020.0002] # EGYPTIAN HIEROGLYPH E010 -130DE ; [.5128.0020.0002] # EGYPTIAN HIEROGLYPH E011 -130DF ; [.5129.0020.0002] # EGYPTIAN HIEROGLYPH E012 -130E0 ; [.512A.0020.0002] # EGYPTIAN HIEROGLYPH E013 -130E1 ; [.512B.0020.0002] # EGYPTIAN HIEROGLYPH E014 -130E2 ; [.512C.0020.0002] # EGYPTIAN HIEROGLYPH E015 -130E3 ; [.512D.0020.0002] # EGYPTIAN HIEROGLYPH E016 -130E4 ; [.512E.0020.0002] # EGYPTIAN HIEROGLYPH E016A -130E5 ; [.512F.0020.0002] # EGYPTIAN HIEROGLYPH E017 -130E6 ; [.5130.0020.0002] # EGYPTIAN HIEROGLYPH E017A -130E7 ; [.5131.0020.0002] # EGYPTIAN HIEROGLYPH E018 -130E8 ; [.5132.0020.0002] # EGYPTIAN HIEROGLYPH E019 -130E9 ; [.5133.0020.0002] # EGYPTIAN HIEROGLYPH E020 -130EA ; [.5134.0020.0002] # EGYPTIAN HIEROGLYPH E020A -130EB ; [.5135.0020.0002] # EGYPTIAN HIEROGLYPH E021 -130EC ; [.5136.0020.0002] # EGYPTIAN HIEROGLYPH E022 -130ED ; [.5137.0020.0002] # EGYPTIAN HIEROGLYPH E023 -130EE ; [.5138.0020.0002] # EGYPTIAN HIEROGLYPH E024 -130EF ; [.5139.0020.0002] # EGYPTIAN HIEROGLYPH E025 -130F0 ; [.513A.0020.0002] # EGYPTIAN HIEROGLYPH E026 -130F1 ; [.513B.0020.0002] # EGYPTIAN HIEROGLYPH E027 -130F2 ; [.513C.0020.0002] # EGYPTIAN HIEROGLYPH E028 -130F3 ; [.513D.0020.0002] # EGYPTIAN HIEROGLYPH E028A -130F4 ; [.513E.0020.0002] # EGYPTIAN HIEROGLYPH E029 -130F5 ; [.513F.0020.0002] # EGYPTIAN HIEROGLYPH E030 -130F6 ; [.5140.0020.0002] # EGYPTIAN HIEROGLYPH E031 -130F7 ; [.5141.0020.0002] # EGYPTIAN HIEROGLYPH E032 -130F8 ; [.5142.0020.0002] # EGYPTIAN HIEROGLYPH E033 -130F9 ; [.5143.0020.0002] # EGYPTIAN HIEROGLYPH E034 -130FA ; [.5144.0020.0002] # EGYPTIAN HIEROGLYPH E034A -130FB ; [.5145.0020.0002] # EGYPTIAN HIEROGLYPH E036 -130FC ; [.5146.0020.0002] # EGYPTIAN HIEROGLYPH E037 -130FD ; [.5147.0020.0002] # EGYPTIAN HIEROGLYPH E038 -130FE ; [.5148.0020.0002] # EGYPTIAN HIEROGLYPH F001 -130FF ; [.5149.0020.0002] # EGYPTIAN HIEROGLYPH F001A -13100 ; [.514A.0020.0002] # EGYPTIAN HIEROGLYPH F002 -13101 ; [.514B.0020.0002] # EGYPTIAN HIEROGLYPH F003 -13102 ; [.514C.0020.0002] # EGYPTIAN HIEROGLYPH F004 -13103 ; [.514D.0020.0002] # EGYPTIAN HIEROGLYPH F005 -13104 ; [.514E.0020.0002] # EGYPTIAN HIEROGLYPH F006 -13105 ; [.514F.0020.0002] # EGYPTIAN HIEROGLYPH F007 -13106 ; [.5150.0020.0002] # EGYPTIAN HIEROGLYPH F008 -13107 ; [.5151.0020.0002] # EGYPTIAN HIEROGLYPH F009 -13108 ; [.5152.0020.0002] # EGYPTIAN HIEROGLYPH F010 -13109 ; [.5153.0020.0002] # EGYPTIAN HIEROGLYPH F011 -1310A ; [.5154.0020.0002] # EGYPTIAN HIEROGLYPH F012 -1310B ; [.5155.0020.0002] # EGYPTIAN HIEROGLYPH F013 -1310C ; [.5156.0020.0002] # EGYPTIAN HIEROGLYPH F013A -1310D ; [.5157.0020.0002] # EGYPTIAN HIEROGLYPH F014 -1310E ; [.5158.0020.0002] # EGYPTIAN HIEROGLYPH F015 -1310F ; [.5159.0020.0002] # EGYPTIAN HIEROGLYPH F016 -13110 ; [.515A.0020.0002] # EGYPTIAN HIEROGLYPH F017 -13111 ; [.515B.0020.0002] # EGYPTIAN HIEROGLYPH F018 -13112 ; [.515C.0020.0002] # EGYPTIAN HIEROGLYPH F019 -13113 ; [.515D.0020.0002] # EGYPTIAN HIEROGLYPH F020 -13114 ; [.515E.0020.0002] # EGYPTIAN HIEROGLYPH F021 -13115 ; [.515F.0020.0002] # EGYPTIAN HIEROGLYPH F021A -13116 ; [.5160.0020.0002] # EGYPTIAN HIEROGLYPH F022 -13117 ; [.5161.0020.0002] # EGYPTIAN HIEROGLYPH F023 -13118 ; [.5162.0020.0002] # EGYPTIAN HIEROGLYPH F024 -13119 ; [.5163.0020.0002] # EGYPTIAN HIEROGLYPH F025 -1311A ; [.5164.0020.0002] # EGYPTIAN HIEROGLYPH F026 -1311B ; [.5165.0020.0002] # EGYPTIAN HIEROGLYPH F027 -1311C ; [.5166.0020.0002] # EGYPTIAN HIEROGLYPH F028 -1311D ; [.5167.0020.0002] # EGYPTIAN HIEROGLYPH F029 -1311E ; [.5168.0020.0002] # EGYPTIAN HIEROGLYPH F030 -1311F ; [.5169.0020.0002] # EGYPTIAN HIEROGLYPH F031 -13120 ; [.516A.0020.0002] # EGYPTIAN HIEROGLYPH F031A -13121 ; [.516B.0020.0002] # EGYPTIAN HIEROGLYPH F032 -13122 ; [.516C.0020.0002] # EGYPTIAN HIEROGLYPH F033 -13123 ; [.516D.0020.0002] # EGYPTIAN HIEROGLYPH F034 -13124 ; [.516E.0020.0002] # EGYPTIAN HIEROGLYPH F035 -13125 ; [.516F.0020.0002] # EGYPTIAN HIEROGLYPH F036 -13126 ; [.5170.0020.0002] # EGYPTIAN HIEROGLYPH F037 -13127 ; [.5171.0020.0002] # EGYPTIAN HIEROGLYPH F037A -13128 ; [.5172.0020.0002] # EGYPTIAN HIEROGLYPH F038 -13129 ; [.5173.0020.0002] # EGYPTIAN HIEROGLYPH F038A -1312A ; [.5174.0020.0002] # EGYPTIAN HIEROGLYPH F039 -1312B ; [.5175.0020.0002] # EGYPTIAN HIEROGLYPH F040 -1312C ; [.5176.0020.0002] # EGYPTIAN HIEROGLYPH F041 -1312D ; [.5177.0020.0002] # EGYPTIAN HIEROGLYPH F042 -1312E ; [.5178.0020.0002] # EGYPTIAN HIEROGLYPH F043 -1312F ; [.5179.0020.0002] # EGYPTIAN HIEROGLYPH F044 -13130 ; [.517A.0020.0002] # EGYPTIAN HIEROGLYPH F045 -13131 ; [.517B.0020.0002] # EGYPTIAN HIEROGLYPH F045A -13132 ; [.517C.0020.0002] # EGYPTIAN HIEROGLYPH F046 -13133 ; [.517D.0020.0002] # EGYPTIAN HIEROGLYPH F046A -13134 ; [.517E.0020.0002] # EGYPTIAN HIEROGLYPH F047 -13135 ; [.517F.0020.0002] # EGYPTIAN HIEROGLYPH F047A -13136 ; [.5180.0020.0002] # EGYPTIAN HIEROGLYPH F048 -13137 ; [.5181.0020.0002] # EGYPTIAN HIEROGLYPH F049 -13138 ; [.5182.0020.0002] # EGYPTIAN HIEROGLYPH F050 -13139 ; [.5183.0020.0002] # EGYPTIAN HIEROGLYPH F051 -1313A ; [.5184.0020.0002] # EGYPTIAN HIEROGLYPH F051A -1313B ; [.5185.0020.0002] # EGYPTIAN HIEROGLYPH F051B -1313C ; [.5186.0020.0002] # EGYPTIAN HIEROGLYPH F051C -1313D ; [.5187.0020.0002] # EGYPTIAN HIEROGLYPH F052 -1313E ; [.5188.0020.0002] # EGYPTIAN HIEROGLYPH F053 -1313F ; [.5189.0020.0002] # EGYPTIAN HIEROGLYPH G001 -13140 ; [.518A.0020.0002] # EGYPTIAN HIEROGLYPH G002 -13141 ; [.518B.0020.0002] # EGYPTIAN HIEROGLYPH G003 -13142 ; [.518C.0020.0002] # EGYPTIAN HIEROGLYPH G004 -13143 ; [.518D.0020.0002] # EGYPTIAN HIEROGLYPH G005 -13144 ; [.518E.0020.0002] # EGYPTIAN HIEROGLYPH G006 -13145 ; [.518F.0020.0002] # EGYPTIAN HIEROGLYPH G006A -13146 ; [.5190.0020.0002] # EGYPTIAN HIEROGLYPH G007 -13147 ; [.5191.0020.0002] # EGYPTIAN HIEROGLYPH G007A -13148 ; [.5192.0020.0002] # EGYPTIAN HIEROGLYPH G007B -13149 ; [.5193.0020.0002] # EGYPTIAN HIEROGLYPH G008 -1314A ; [.5194.0020.0002] # EGYPTIAN HIEROGLYPH G009 -1314B ; [.5195.0020.0002] # EGYPTIAN HIEROGLYPH G010 -1314C ; [.5196.0020.0002] # EGYPTIAN HIEROGLYPH G011 -1314D ; [.5197.0020.0002] # EGYPTIAN HIEROGLYPH G011A -1314E ; [.5198.0020.0002] # EGYPTIAN HIEROGLYPH G012 -1314F ; [.5199.0020.0002] # EGYPTIAN HIEROGLYPH G013 -13150 ; [.519A.0020.0002] # EGYPTIAN HIEROGLYPH G014 -13151 ; [.519B.0020.0002] # EGYPTIAN HIEROGLYPH G015 -13152 ; [.519C.0020.0002] # EGYPTIAN HIEROGLYPH G016 -13153 ; [.519D.0020.0002] # EGYPTIAN HIEROGLYPH G017 -13154 ; [.519E.0020.0002] # EGYPTIAN HIEROGLYPH G018 -13155 ; [.519F.0020.0002] # EGYPTIAN HIEROGLYPH G019 -13156 ; [.51A0.0020.0002] # EGYPTIAN HIEROGLYPH G020 -13157 ; [.51A1.0020.0002] # EGYPTIAN HIEROGLYPH G020A -13158 ; [.51A2.0020.0002] # EGYPTIAN HIEROGLYPH G021 -13159 ; [.51A3.0020.0002] # EGYPTIAN HIEROGLYPH G022 -1315A ; [.51A4.0020.0002] # EGYPTIAN HIEROGLYPH G023 -1315B ; [.51A5.0020.0002] # EGYPTIAN HIEROGLYPH G024 -1315C ; [.51A6.0020.0002] # EGYPTIAN HIEROGLYPH G025 -1315D ; [.51A7.0020.0002] # EGYPTIAN HIEROGLYPH G026 -1315E ; [.51A8.0020.0002] # EGYPTIAN HIEROGLYPH G026A -1315F ; [.51A9.0020.0002] # EGYPTIAN HIEROGLYPH G027 -13160 ; [.51AA.0020.0002] # EGYPTIAN HIEROGLYPH G028 -13161 ; [.51AB.0020.0002] # EGYPTIAN HIEROGLYPH G029 -13162 ; [.51AC.0020.0002] # EGYPTIAN HIEROGLYPH G030 -13163 ; [.51AD.0020.0002] # EGYPTIAN HIEROGLYPH G031 -13164 ; [.51AE.0020.0002] # EGYPTIAN HIEROGLYPH G032 -13165 ; [.51AF.0020.0002] # EGYPTIAN HIEROGLYPH G033 -13166 ; [.51B0.0020.0002] # EGYPTIAN HIEROGLYPH G034 -13167 ; [.51B1.0020.0002] # EGYPTIAN HIEROGLYPH G035 -13168 ; [.51B2.0020.0002] # EGYPTIAN HIEROGLYPH G036 -13169 ; [.51B3.0020.0002] # EGYPTIAN HIEROGLYPH G036A -1316A ; [.51B4.0020.0002] # EGYPTIAN HIEROGLYPH G037 -1316B ; [.51B5.0020.0002] # EGYPTIAN HIEROGLYPH G037A -1316C ; [.51B6.0020.0002] # EGYPTIAN HIEROGLYPH G038 -1316D ; [.51B7.0020.0002] # EGYPTIAN HIEROGLYPH G039 -1316E ; [.51B8.0020.0002] # EGYPTIAN HIEROGLYPH G040 -1316F ; [.51B9.0020.0002] # EGYPTIAN HIEROGLYPH G041 -13170 ; [.51BA.0020.0002] # EGYPTIAN HIEROGLYPH G042 -13171 ; [.51BB.0020.0002] # EGYPTIAN HIEROGLYPH G043 -13172 ; [.51BC.0020.0002] # EGYPTIAN HIEROGLYPH G043A -13173 ; [.51BD.0020.0002] # EGYPTIAN HIEROGLYPH G044 -13174 ; [.51BE.0020.0002] # EGYPTIAN HIEROGLYPH G045 -13175 ; [.51BF.0020.0002] # EGYPTIAN HIEROGLYPH G045A -13176 ; [.51C0.0020.0002] # EGYPTIAN HIEROGLYPH G046 -13177 ; [.51C1.0020.0002] # EGYPTIAN HIEROGLYPH G047 -13178 ; [.51C2.0020.0002] # EGYPTIAN HIEROGLYPH G048 -13179 ; [.51C3.0020.0002] # EGYPTIAN HIEROGLYPH G049 -1317A ; [.51C4.0020.0002] # EGYPTIAN HIEROGLYPH G050 -1317B ; [.51C5.0020.0002] # EGYPTIAN HIEROGLYPH G051 -1317C ; [.51C6.0020.0002] # EGYPTIAN HIEROGLYPH G052 -1317D ; [.51C7.0020.0002] # EGYPTIAN HIEROGLYPH G053 -1317E ; [.51C8.0020.0002] # EGYPTIAN HIEROGLYPH G054 -1317F ; [.51C9.0020.0002] # EGYPTIAN HIEROGLYPH H001 -13180 ; [.51CA.0020.0002] # EGYPTIAN HIEROGLYPH H002 -13181 ; [.51CB.0020.0002] # EGYPTIAN HIEROGLYPH H003 -13182 ; [.51CC.0020.0002] # EGYPTIAN HIEROGLYPH H004 -13183 ; [.51CD.0020.0002] # EGYPTIAN HIEROGLYPH H005 -13184 ; [.51CE.0020.0002] # EGYPTIAN HIEROGLYPH H006 -13185 ; [.51CF.0020.0002] # EGYPTIAN HIEROGLYPH H006A -13186 ; [.51D0.0020.0002] # EGYPTIAN HIEROGLYPH H007 -13187 ; [.51D1.0020.0002] # EGYPTIAN HIEROGLYPH H008 -13188 ; [.51D2.0020.0002] # EGYPTIAN HIEROGLYPH I001 -13189 ; [.51D3.0020.0002] # EGYPTIAN HIEROGLYPH I002 -1318A ; [.51D4.0020.0002] # EGYPTIAN HIEROGLYPH I003 -1318B ; [.51D5.0020.0002] # EGYPTIAN HIEROGLYPH I004 -1318C ; [.51D6.0020.0002] # EGYPTIAN HIEROGLYPH I005 -1318D ; [.51D7.0020.0002] # EGYPTIAN HIEROGLYPH I005A -1318E ; [.51D8.0020.0002] # EGYPTIAN HIEROGLYPH I006 -1318F ; [.51D9.0020.0002] # EGYPTIAN HIEROGLYPH I007 -13190 ; [.51DA.0020.0002] # EGYPTIAN HIEROGLYPH I008 -13191 ; [.51DB.0020.0002] # EGYPTIAN HIEROGLYPH I009 -13192 ; [.51DC.0020.0002] # EGYPTIAN HIEROGLYPH I009A -13193 ; [.51DD.0020.0002] # EGYPTIAN HIEROGLYPH I010 -13194 ; [.51DE.0020.0002] # EGYPTIAN HIEROGLYPH I010A -13195 ; [.51DF.0020.0002] # EGYPTIAN HIEROGLYPH I011 -13196 ; [.51E0.0020.0002] # EGYPTIAN HIEROGLYPH I011A -13197 ; [.51E1.0020.0002] # EGYPTIAN HIEROGLYPH I012 -13198 ; [.51E2.0020.0002] # EGYPTIAN HIEROGLYPH I013 -13199 ; [.51E3.0020.0002] # EGYPTIAN HIEROGLYPH I014 -1319A ; [.51E4.0020.0002] # EGYPTIAN HIEROGLYPH I015 -1319B ; [.51E5.0020.0002] # EGYPTIAN HIEROGLYPH K001 -1319C ; [.51E6.0020.0002] # EGYPTIAN HIEROGLYPH K002 -1319D ; [.51E7.0020.0002] # EGYPTIAN HIEROGLYPH K003 -1319E ; [.51E8.0020.0002] # EGYPTIAN HIEROGLYPH K004 -1319F ; [.51E9.0020.0002] # EGYPTIAN HIEROGLYPH K005 -131A0 ; [.51EA.0020.0002] # EGYPTIAN HIEROGLYPH K006 -131A1 ; [.51EB.0020.0002] # EGYPTIAN HIEROGLYPH K007 -131A2 ; [.51EC.0020.0002] # EGYPTIAN HIEROGLYPH K008 -131A3 ; [.51ED.0020.0002] # EGYPTIAN HIEROGLYPH L001 -131A4 ; [.51EE.0020.0002] # EGYPTIAN HIEROGLYPH L002 -131A5 ; [.51EF.0020.0002] # EGYPTIAN HIEROGLYPH L002A -131A6 ; [.51F0.0020.0002] # EGYPTIAN HIEROGLYPH L003 -131A7 ; [.51F1.0020.0002] # EGYPTIAN HIEROGLYPH L004 -131A8 ; [.51F2.0020.0002] # EGYPTIAN HIEROGLYPH L005 -131A9 ; [.51F3.0020.0002] # EGYPTIAN HIEROGLYPH L006 -131AA ; [.51F4.0020.0002] # EGYPTIAN HIEROGLYPH L006A -131AB ; [.51F5.0020.0002] # EGYPTIAN HIEROGLYPH L007 -131AC ; [.51F6.0020.0002] # EGYPTIAN HIEROGLYPH L008 -131AD ; [.51F7.0020.0002] # EGYPTIAN HIEROGLYPH M001 -131AE ; [.51F8.0020.0002] # EGYPTIAN HIEROGLYPH M001A -131AF ; [.51F9.0020.0002] # EGYPTIAN HIEROGLYPH M001B -131B0 ; [.51FA.0020.0002] # EGYPTIAN HIEROGLYPH M002 -131B1 ; [.51FB.0020.0002] # EGYPTIAN HIEROGLYPH M003 -131B2 ; [.51FC.0020.0002] # EGYPTIAN HIEROGLYPH M003A -131B3 ; [.51FD.0020.0002] # EGYPTIAN HIEROGLYPH M004 -131B4 ; [.51FE.0020.0002] # EGYPTIAN HIEROGLYPH M005 -131B5 ; [.51FF.0020.0002] # EGYPTIAN HIEROGLYPH M006 -131B6 ; [.5200.0020.0002] # EGYPTIAN HIEROGLYPH M007 -131B7 ; [.5201.0020.0002] # EGYPTIAN HIEROGLYPH M008 -131B8 ; [.5202.0020.0002] # EGYPTIAN HIEROGLYPH M009 -131B9 ; [.5203.0020.0002] # EGYPTIAN HIEROGLYPH M010 -131BA ; [.5204.0020.0002] # EGYPTIAN HIEROGLYPH M010A -131BB ; [.5205.0020.0002] # EGYPTIAN HIEROGLYPH M011 -131BC ; [.5206.0020.0002] # EGYPTIAN HIEROGLYPH M012 -131BD ; [.5207.0020.0002] # EGYPTIAN HIEROGLYPH M012A -131BE ; [.5208.0020.0002] # EGYPTIAN HIEROGLYPH M012B -131BF ; [.5209.0020.0002] # EGYPTIAN HIEROGLYPH M012C -131C0 ; [.520A.0020.0002] # EGYPTIAN HIEROGLYPH M012D -131C1 ; [.520B.0020.0002] # EGYPTIAN HIEROGLYPH M012E -131C2 ; [.520C.0020.0002] # EGYPTIAN HIEROGLYPH M012F -131C3 ; [.520D.0020.0002] # EGYPTIAN HIEROGLYPH M012G -131C4 ; [.520E.0020.0002] # EGYPTIAN HIEROGLYPH M012H -131C5 ; [.520F.0020.0002] # EGYPTIAN HIEROGLYPH M013 -131C6 ; [.5210.0020.0002] # EGYPTIAN HIEROGLYPH M014 -131C7 ; [.5211.0020.0002] # EGYPTIAN HIEROGLYPH M015 -131C8 ; [.5212.0020.0002] # EGYPTIAN HIEROGLYPH M015A -131C9 ; [.5213.0020.0002] # EGYPTIAN HIEROGLYPH M016 -131CA ; [.5214.0020.0002] # EGYPTIAN HIEROGLYPH M016A -131CB ; [.5215.0020.0002] # EGYPTIAN HIEROGLYPH M017 -131CC ; [.5216.0020.0002] # EGYPTIAN HIEROGLYPH M017A -131CD ; [.5217.0020.0002] # EGYPTIAN HIEROGLYPH M018 -131CE ; [.5218.0020.0002] # EGYPTIAN HIEROGLYPH M019 -131CF ; [.5219.0020.0002] # EGYPTIAN HIEROGLYPH M020 -131D0 ; [.521A.0020.0002] # EGYPTIAN HIEROGLYPH M021 -131D1 ; [.521B.0020.0002] # EGYPTIAN HIEROGLYPH M022 -131D2 ; [.521C.0020.0002] # EGYPTIAN HIEROGLYPH M022A -131D3 ; [.521D.0020.0002] # EGYPTIAN HIEROGLYPH M023 -131D4 ; [.521E.0020.0002] # EGYPTIAN HIEROGLYPH M024 -131D5 ; [.521F.0020.0002] # EGYPTIAN HIEROGLYPH M024A -131D6 ; [.5220.0020.0002] # EGYPTIAN HIEROGLYPH M025 -131D7 ; [.5221.0020.0002] # EGYPTIAN HIEROGLYPH M026 -131D8 ; [.5222.0020.0002] # EGYPTIAN HIEROGLYPH M027 -131D9 ; [.5223.0020.0002] # EGYPTIAN HIEROGLYPH M028 -131DA ; [.5224.0020.0002] # EGYPTIAN HIEROGLYPH M028A -131DB ; [.5225.0020.0002] # EGYPTIAN HIEROGLYPH M029 -131DC ; [.5226.0020.0002] # EGYPTIAN HIEROGLYPH M030 -131DD ; [.5227.0020.0002] # EGYPTIAN HIEROGLYPH M031 -131DE ; [.5228.0020.0002] # EGYPTIAN HIEROGLYPH M031A -131DF ; [.5229.0020.0002] # EGYPTIAN HIEROGLYPH M032 -131E0 ; [.522A.0020.0002] # EGYPTIAN HIEROGLYPH M033 -131E1 ; [.522B.0020.0002] # EGYPTIAN HIEROGLYPH M033A -131E2 ; [.522C.0020.0002] # EGYPTIAN HIEROGLYPH M033B -131E3 ; [.522D.0020.0002] # EGYPTIAN HIEROGLYPH M034 -131E4 ; [.522E.0020.0002] # EGYPTIAN HIEROGLYPH M035 -131E5 ; [.522F.0020.0002] # EGYPTIAN HIEROGLYPH M036 -131E6 ; [.5230.0020.0002] # EGYPTIAN HIEROGLYPH M037 -131E7 ; [.5231.0020.0002] # EGYPTIAN HIEROGLYPH M038 -131E8 ; [.5232.0020.0002] # EGYPTIAN HIEROGLYPH M039 -131E9 ; [.5233.0020.0002] # EGYPTIAN HIEROGLYPH M040 -131EA ; [.5234.0020.0002] # EGYPTIAN HIEROGLYPH M040A -131EB ; [.5235.0020.0002] # EGYPTIAN HIEROGLYPH M041 -131EC ; [.5236.0020.0002] # EGYPTIAN HIEROGLYPH M042 -131ED ; [.5237.0020.0002] # EGYPTIAN HIEROGLYPH M043 -131EE ; [.5238.0020.0002] # EGYPTIAN HIEROGLYPH M044 -131EF ; [.5239.0020.0002] # EGYPTIAN HIEROGLYPH N001 -131F0 ; [.523A.0020.0002] # EGYPTIAN HIEROGLYPH N002 -131F1 ; [.523B.0020.0002] # EGYPTIAN HIEROGLYPH N003 -131F2 ; [.523C.0020.0002] # EGYPTIAN HIEROGLYPH N004 -131F3 ; [.523D.0020.0002] # EGYPTIAN HIEROGLYPH N005 -131F4 ; [.523E.0020.0002] # EGYPTIAN HIEROGLYPH N006 -131F5 ; [.523F.0020.0002] # EGYPTIAN HIEROGLYPH N007 -131F6 ; [.5240.0020.0002] # EGYPTIAN HIEROGLYPH N008 -131F7 ; [.5241.0020.0002] # EGYPTIAN HIEROGLYPH N009 -131F8 ; [.5242.0020.0002] # EGYPTIAN HIEROGLYPH N010 -131F9 ; [.5243.0020.0002] # EGYPTIAN HIEROGLYPH N011 -131FA ; [.5244.0020.0002] # EGYPTIAN HIEROGLYPH N012 -131FB ; [.5245.0020.0002] # EGYPTIAN HIEROGLYPH N013 -131FC ; [.5246.0020.0002] # EGYPTIAN HIEROGLYPH N014 -131FD ; [.5247.0020.0002] # EGYPTIAN HIEROGLYPH N015 -131FE ; [.5248.0020.0002] # EGYPTIAN HIEROGLYPH N016 -131FF ; [.5249.0020.0002] # EGYPTIAN HIEROGLYPH N017 -13200 ; [.524A.0020.0002] # EGYPTIAN HIEROGLYPH N018 -13201 ; [.524B.0020.0002] # EGYPTIAN HIEROGLYPH N018A -13202 ; [.524C.0020.0002] # EGYPTIAN HIEROGLYPH N018B -13203 ; [.524D.0020.0002] # EGYPTIAN HIEROGLYPH N019 -13204 ; [.524E.0020.0002] # EGYPTIAN HIEROGLYPH N020 -13205 ; [.524F.0020.0002] # EGYPTIAN HIEROGLYPH N021 -13206 ; [.5250.0020.0002] # EGYPTIAN HIEROGLYPH N022 -13207 ; [.5251.0020.0002] # EGYPTIAN HIEROGLYPH N023 -13208 ; [.5252.0020.0002] # EGYPTIAN HIEROGLYPH N024 -13209 ; [.5253.0020.0002] # EGYPTIAN HIEROGLYPH N025 -1320A ; [.5254.0020.0002] # EGYPTIAN HIEROGLYPH N025A -1320B ; [.5255.0020.0002] # EGYPTIAN HIEROGLYPH N026 -1320C ; [.5256.0020.0002] # EGYPTIAN HIEROGLYPH N027 -1320D ; [.5257.0020.0002] # EGYPTIAN HIEROGLYPH N028 -1320E ; [.5258.0020.0002] # EGYPTIAN HIEROGLYPH N029 -1320F ; [.5259.0020.0002] # EGYPTIAN HIEROGLYPH N030 -13210 ; [.525A.0020.0002] # EGYPTIAN HIEROGLYPH N031 -13211 ; [.525B.0020.0002] # EGYPTIAN HIEROGLYPH N032 -13212 ; [.525C.0020.0002] # EGYPTIAN HIEROGLYPH N033 -13213 ; [.525D.0020.0002] # EGYPTIAN HIEROGLYPH N033A -13214 ; [.525E.0020.0002] # EGYPTIAN HIEROGLYPH N034 -13215 ; [.525F.0020.0002] # EGYPTIAN HIEROGLYPH N034A -13216 ; [.5260.0020.0002] # EGYPTIAN HIEROGLYPH N035 -13217 ; [.5261.0020.0002] # EGYPTIAN HIEROGLYPH N035A -13218 ; [.5262.0020.0002] # EGYPTIAN HIEROGLYPH N036 -13219 ; [.5263.0020.0002] # EGYPTIAN HIEROGLYPH N037 -1321A ; [.5264.0020.0002] # EGYPTIAN HIEROGLYPH N037A -1321B ; [.5265.0020.0002] # EGYPTIAN HIEROGLYPH N038 -1321C ; [.5266.0020.0002] # EGYPTIAN HIEROGLYPH N039 -1321D ; [.5267.0020.0002] # EGYPTIAN HIEROGLYPH N040 -1321E ; [.5268.0020.0002] # EGYPTIAN HIEROGLYPH N041 -1321F ; [.5269.0020.0002] # EGYPTIAN HIEROGLYPH N042 -13220 ; [.526A.0020.0002] # EGYPTIAN HIEROGLYPH NL001 -13221 ; [.526B.0020.0002] # EGYPTIAN HIEROGLYPH NL002 -13222 ; [.526C.0020.0002] # EGYPTIAN HIEROGLYPH NL003 -13223 ; [.526D.0020.0002] # EGYPTIAN HIEROGLYPH NL004 -13224 ; [.526E.0020.0002] # EGYPTIAN HIEROGLYPH NL005 -13225 ; [.526F.0020.0002] # EGYPTIAN HIEROGLYPH NL005A -13226 ; [.5270.0020.0002] # EGYPTIAN HIEROGLYPH NL006 -13227 ; [.5271.0020.0002] # EGYPTIAN HIEROGLYPH NL007 -13228 ; [.5272.0020.0002] # EGYPTIAN HIEROGLYPH NL008 -13229 ; [.5273.0020.0002] # EGYPTIAN HIEROGLYPH NL009 -1322A ; [.5274.0020.0002] # EGYPTIAN HIEROGLYPH NL010 -1322B ; [.5275.0020.0002] # EGYPTIAN HIEROGLYPH NL011 -1322C ; [.5276.0020.0002] # EGYPTIAN HIEROGLYPH NL012 -1322D ; [.5277.0020.0002] # EGYPTIAN HIEROGLYPH NL013 -1322E ; [.5278.0020.0002] # EGYPTIAN HIEROGLYPH NL014 -1322F ; [.5279.0020.0002] # EGYPTIAN HIEROGLYPH NL015 -13230 ; [.527A.0020.0002] # EGYPTIAN HIEROGLYPH NL016 -13231 ; [.527B.0020.0002] # EGYPTIAN HIEROGLYPH NL017 -13232 ; [.527C.0020.0002] # EGYPTIAN HIEROGLYPH NL017A -13233 ; [.527D.0020.0002] # EGYPTIAN HIEROGLYPH NL018 -13234 ; [.527E.0020.0002] # EGYPTIAN HIEROGLYPH NL019 -13235 ; [.527F.0020.0002] # EGYPTIAN HIEROGLYPH NL020 -13236 ; [.5280.0020.0002] # EGYPTIAN HIEROGLYPH NU001 -13237 ; [.5281.0020.0002] # EGYPTIAN HIEROGLYPH NU002 -13238 ; [.5282.0020.0002] # EGYPTIAN HIEROGLYPH NU003 -13239 ; [.5283.0020.0002] # EGYPTIAN HIEROGLYPH NU004 -1323A ; [.5284.0020.0002] # EGYPTIAN HIEROGLYPH NU005 -1323B ; [.5285.0020.0002] # EGYPTIAN HIEROGLYPH NU006 -1323C ; [.5286.0020.0002] # EGYPTIAN HIEROGLYPH NU007 -1323D ; [.5287.0020.0002] # EGYPTIAN HIEROGLYPH NU008 -1323E ; [.5288.0020.0002] # EGYPTIAN HIEROGLYPH NU009 -1323F ; [.5289.0020.0002] # EGYPTIAN HIEROGLYPH NU010 -13240 ; [.528A.0020.0002] # EGYPTIAN HIEROGLYPH NU010A -13241 ; [.528B.0020.0002] # EGYPTIAN HIEROGLYPH NU011 -13242 ; [.528C.0020.0002] # EGYPTIAN HIEROGLYPH NU011A -13243 ; [.528D.0020.0002] # EGYPTIAN HIEROGLYPH NU012 -13244 ; [.528E.0020.0002] # EGYPTIAN HIEROGLYPH NU013 -13245 ; [.528F.0020.0002] # EGYPTIAN HIEROGLYPH NU014 -13246 ; [.5290.0020.0002] # EGYPTIAN HIEROGLYPH NU015 -13247 ; [.5291.0020.0002] # EGYPTIAN HIEROGLYPH NU016 -13248 ; [.5292.0020.0002] # EGYPTIAN HIEROGLYPH NU017 -13249 ; [.5293.0020.0002] # EGYPTIAN HIEROGLYPH NU018 -1324A ; [.5294.0020.0002] # EGYPTIAN HIEROGLYPH NU018A -1324B ; [.5295.0020.0002] # EGYPTIAN HIEROGLYPH NU019 -1324C ; [.5296.0020.0002] # EGYPTIAN HIEROGLYPH NU020 -1324D ; [.5297.0020.0002] # EGYPTIAN HIEROGLYPH NU021 -1324E ; [.5298.0020.0002] # EGYPTIAN HIEROGLYPH NU022 -1324F ; [.5299.0020.0002] # EGYPTIAN HIEROGLYPH NU022A -13250 ; [.529A.0020.0002] # EGYPTIAN HIEROGLYPH O001 -13251 ; [.529B.0020.0002] # EGYPTIAN HIEROGLYPH O001A -13252 ; [.529C.0020.0002] # EGYPTIAN HIEROGLYPH O002 -13253 ; [.529D.0020.0002] # EGYPTIAN HIEROGLYPH O003 -13254 ; [.529E.0020.0002] # EGYPTIAN HIEROGLYPH O004 -13255 ; [.529F.0020.0002] # EGYPTIAN HIEROGLYPH O005 -13256 ; [.52A0.0020.0002] # EGYPTIAN HIEROGLYPH O005A -13257 ; [.52A1.0020.0002] # EGYPTIAN HIEROGLYPH O006 -13258 ; [.52A2.0020.0002] # EGYPTIAN HIEROGLYPH O006A -13259 ; [.52A3.0020.0002] # EGYPTIAN HIEROGLYPH O006B -1325A ; [.52A4.0020.0002] # EGYPTIAN HIEROGLYPH O006C -1325B ; [.52A5.0020.0002] # EGYPTIAN HIEROGLYPH O006D -1325C ; [.52A6.0020.0002] # EGYPTIAN HIEROGLYPH O006E -1325D ; [.52A7.0020.0002] # EGYPTIAN HIEROGLYPH O006F -1325E ; [.52A8.0020.0002] # EGYPTIAN HIEROGLYPH O007 -1325F ; [.52A9.0020.0002] # EGYPTIAN HIEROGLYPH O008 -13260 ; [.52AA.0020.0002] # EGYPTIAN HIEROGLYPH O009 -13261 ; [.52AB.0020.0002] # EGYPTIAN HIEROGLYPH O010 -13262 ; [.52AC.0020.0002] # EGYPTIAN HIEROGLYPH O010A -13263 ; [.52AD.0020.0002] # EGYPTIAN HIEROGLYPH O010B -13264 ; [.52AE.0020.0002] # EGYPTIAN HIEROGLYPH O010C -13265 ; [.52AF.0020.0002] # EGYPTIAN HIEROGLYPH O011 -13266 ; [.52B0.0020.0002] # EGYPTIAN HIEROGLYPH O012 -13267 ; [.52B1.0020.0002] # EGYPTIAN HIEROGLYPH O013 -13268 ; [.52B2.0020.0002] # EGYPTIAN HIEROGLYPH O014 -13269 ; [.52B3.0020.0002] # EGYPTIAN HIEROGLYPH O015 -1326A ; [.52B4.0020.0002] # EGYPTIAN HIEROGLYPH O016 -1326B ; [.52B5.0020.0002] # EGYPTIAN HIEROGLYPH O017 -1326C ; [.52B6.0020.0002] # EGYPTIAN HIEROGLYPH O018 -1326D ; [.52B7.0020.0002] # EGYPTIAN HIEROGLYPH O019 -1326E ; [.52B8.0020.0002] # EGYPTIAN HIEROGLYPH O019A -1326F ; [.52B9.0020.0002] # EGYPTIAN HIEROGLYPH O020 -13270 ; [.52BA.0020.0002] # EGYPTIAN HIEROGLYPH O020A -13271 ; [.52BB.0020.0002] # EGYPTIAN HIEROGLYPH O021 -13272 ; [.52BC.0020.0002] # EGYPTIAN HIEROGLYPH O022 -13273 ; [.52BD.0020.0002] # EGYPTIAN HIEROGLYPH O023 -13274 ; [.52BE.0020.0002] # EGYPTIAN HIEROGLYPH O024 -13275 ; [.52BF.0020.0002] # EGYPTIAN HIEROGLYPH O024A -13276 ; [.52C0.0020.0002] # EGYPTIAN HIEROGLYPH O025 -13277 ; [.52C1.0020.0002] # EGYPTIAN HIEROGLYPH O025A -13278 ; [.52C2.0020.0002] # EGYPTIAN HIEROGLYPH O026 -13279 ; [.52C3.0020.0002] # EGYPTIAN HIEROGLYPH O027 -1327A ; [.52C4.0020.0002] # EGYPTIAN HIEROGLYPH O028 -1327B ; [.52C5.0020.0002] # EGYPTIAN HIEROGLYPH O029 -1327C ; [.52C6.0020.0002] # EGYPTIAN HIEROGLYPH O029A -1327D ; [.52C7.0020.0002] # EGYPTIAN HIEROGLYPH O030 -1327E ; [.52C8.0020.0002] # EGYPTIAN HIEROGLYPH O030A -1327F ; [.52C9.0020.0002] # EGYPTIAN HIEROGLYPH O031 -13280 ; [.52CA.0020.0002] # EGYPTIAN HIEROGLYPH O032 -13281 ; [.52CB.0020.0002] # EGYPTIAN HIEROGLYPH O033 -13282 ; [.52CC.0020.0002] # EGYPTIAN HIEROGLYPH O033A -13283 ; [.52CD.0020.0002] # EGYPTIAN HIEROGLYPH O034 -13284 ; [.52CE.0020.0002] # EGYPTIAN HIEROGLYPH O035 -13285 ; [.52CF.0020.0002] # EGYPTIAN HIEROGLYPH O036 -13286 ; [.52D0.0020.0002] # EGYPTIAN HIEROGLYPH O036A -13287 ; [.52D1.0020.0002] # EGYPTIAN HIEROGLYPH O036B -13288 ; [.52D2.0020.0002] # EGYPTIAN HIEROGLYPH O036C -13289 ; [.52D3.0020.0002] # EGYPTIAN HIEROGLYPH O036D -1328A ; [.52D4.0020.0002] # EGYPTIAN HIEROGLYPH O037 -1328B ; [.52D5.0020.0002] # EGYPTIAN HIEROGLYPH O038 -1328C ; [.52D6.0020.0002] # EGYPTIAN HIEROGLYPH O039 -1328D ; [.52D7.0020.0002] # EGYPTIAN HIEROGLYPH O040 -1328E ; [.52D8.0020.0002] # EGYPTIAN HIEROGLYPH O041 -1328F ; [.52D9.0020.0002] # EGYPTIAN HIEROGLYPH O042 -13290 ; [.52DA.0020.0002] # EGYPTIAN HIEROGLYPH O043 -13291 ; [.52DB.0020.0002] # EGYPTIAN HIEROGLYPH O044 -13292 ; [.52DC.0020.0002] # EGYPTIAN HIEROGLYPH O045 -13293 ; [.52DD.0020.0002] # EGYPTIAN HIEROGLYPH O046 -13294 ; [.52DE.0020.0002] # EGYPTIAN HIEROGLYPH O047 -13295 ; [.52DF.0020.0002] # EGYPTIAN HIEROGLYPH O048 -13296 ; [.52E0.0020.0002] # EGYPTIAN HIEROGLYPH O049 -13297 ; [.52E1.0020.0002] # EGYPTIAN HIEROGLYPH O050 -13298 ; [.52E2.0020.0002] # EGYPTIAN HIEROGLYPH O050A -13299 ; [.52E3.0020.0002] # EGYPTIAN HIEROGLYPH O050B -1329A ; [.52E4.0020.0002] # EGYPTIAN HIEROGLYPH O051 -1329B ; [.52E5.0020.0002] # EGYPTIAN HIEROGLYPH P001 -1329C ; [.52E6.0020.0002] # EGYPTIAN HIEROGLYPH P001A -1329D ; [.52E7.0020.0002] # EGYPTIAN HIEROGLYPH P002 -1329E ; [.52E8.0020.0002] # EGYPTIAN HIEROGLYPH P003 -1329F ; [.52E9.0020.0002] # EGYPTIAN HIEROGLYPH P003A -132A0 ; [.52EA.0020.0002] # EGYPTIAN HIEROGLYPH P004 -132A1 ; [.52EB.0020.0002] # EGYPTIAN HIEROGLYPH P005 -132A2 ; [.52EC.0020.0002] # EGYPTIAN HIEROGLYPH P006 -132A3 ; [.52ED.0020.0002] # EGYPTIAN HIEROGLYPH P007 -132A4 ; [.52EE.0020.0002] # EGYPTIAN HIEROGLYPH P008 -132A5 ; [.52EF.0020.0002] # EGYPTIAN HIEROGLYPH P009 -132A6 ; [.52F0.0020.0002] # EGYPTIAN HIEROGLYPH P010 -132A7 ; [.52F1.0020.0002] # EGYPTIAN HIEROGLYPH P011 -132A8 ; [.52F2.0020.0002] # EGYPTIAN HIEROGLYPH Q001 -132A9 ; [.52F3.0020.0002] # EGYPTIAN HIEROGLYPH Q002 -132AA ; [.52F4.0020.0002] # EGYPTIAN HIEROGLYPH Q003 -132AB ; [.52F5.0020.0002] # EGYPTIAN HIEROGLYPH Q004 -132AC ; [.52F6.0020.0002] # EGYPTIAN HIEROGLYPH Q005 -132AD ; [.52F7.0020.0002] # EGYPTIAN HIEROGLYPH Q006 -132AE ; [.52F8.0020.0002] # EGYPTIAN HIEROGLYPH Q007 -132AF ; [.52F9.0020.0002] # EGYPTIAN HIEROGLYPH R001 -132B0 ; [.52FA.0020.0002] # EGYPTIAN HIEROGLYPH R002 -132B1 ; [.52FB.0020.0002] # EGYPTIAN HIEROGLYPH R002A -132B2 ; [.52FC.0020.0002] # EGYPTIAN HIEROGLYPH R003 -132B3 ; [.52FD.0020.0002] # EGYPTIAN HIEROGLYPH R003A -132B4 ; [.52FE.0020.0002] # EGYPTIAN HIEROGLYPH R003B -132B5 ; [.52FF.0020.0002] # EGYPTIAN HIEROGLYPH R004 -132B6 ; [.5300.0020.0002] # EGYPTIAN HIEROGLYPH R005 -132B7 ; [.5301.0020.0002] # EGYPTIAN HIEROGLYPH R006 -132B8 ; [.5302.0020.0002] # EGYPTIAN HIEROGLYPH R007 -132B9 ; [.5303.0020.0002] # EGYPTIAN HIEROGLYPH R008 -132BA ; [.5304.0020.0002] # EGYPTIAN HIEROGLYPH R009 -132BB ; [.5305.0020.0002] # EGYPTIAN HIEROGLYPH R010 -132BC ; [.5306.0020.0002] # EGYPTIAN HIEROGLYPH R010A -132BD ; [.5307.0020.0002] # EGYPTIAN HIEROGLYPH R011 -132BE ; [.5308.0020.0002] # EGYPTIAN HIEROGLYPH R012 -132BF ; [.5309.0020.0002] # EGYPTIAN HIEROGLYPH R013 -132C0 ; [.530A.0020.0002] # EGYPTIAN HIEROGLYPH R014 -132C1 ; [.530B.0020.0002] # EGYPTIAN HIEROGLYPH R015 -132C2 ; [.530C.0020.0002] # EGYPTIAN HIEROGLYPH R016 -132C3 ; [.530D.0020.0002] # EGYPTIAN HIEROGLYPH R016A -132C4 ; [.530E.0020.0002] # EGYPTIAN HIEROGLYPH R017 -132C5 ; [.530F.0020.0002] # EGYPTIAN HIEROGLYPH R018 -132C6 ; [.5310.0020.0002] # EGYPTIAN HIEROGLYPH R019 -132C7 ; [.5311.0020.0002] # EGYPTIAN HIEROGLYPH R020 -132C8 ; [.5312.0020.0002] # EGYPTIAN HIEROGLYPH R021 -132C9 ; [.5313.0020.0002] # EGYPTIAN HIEROGLYPH R022 -132CA ; [.5314.0020.0002] # EGYPTIAN HIEROGLYPH R023 -132CB ; [.5315.0020.0002] # EGYPTIAN HIEROGLYPH R024 -132CC ; [.5316.0020.0002] # EGYPTIAN HIEROGLYPH R025 -132CD ; [.5317.0020.0002] # EGYPTIAN HIEROGLYPH R026 -132CE ; [.5318.0020.0002] # EGYPTIAN HIEROGLYPH R027 -132CF ; [.5319.0020.0002] # EGYPTIAN HIEROGLYPH R028 -132D0 ; [.531A.0020.0002] # EGYPTIAN HIEROGLYPH R029 -132D1 ; [.531B.0020.0002] # EGYPTIAN HIEROGLYPH S001 -132D2 ; [.531C.0020.0002] # EGYPTIAN HIEROGLYPH S002 -132D3 ; [.531D.0020.0002] # EGYPTIAN HIEROGLYPH S002A -132D4 ; [.531E.0020.0002] # EGYPTIAN HIEROGLYPH S003 -132D5 ; [.531F.0020.0002] # EGYPTIAN HIEROGLYPH S004 -132D6 ; [.5320.0020.0002] # EGYPTIAN HIEROGLYPH S005 -132D7 ; [.5321.0020.0002] # EGYPTIAN HIEROGLYPH S006 -132D8 ; [.5322.0020.0002] # EGYPTIAN HIEROGLYPH S006A -132D9 ; [.5323.0020.0002] # EGYPTIAN HIEROGLYPH S007 -132DA ; [.5324.0020.0002] # EGYPTIAN HIEROGLYPH S008 -132DB ; [.5325.0020.0002] # EGYPTIAN HIEROGLYPH S009 -132DC ; [.5326.0020.0002] # EGYPTIAN HIEROGLYPH S010 -132DD ; [.5327.0020.0002] # EGYPTIAN HIEROGLYPH S011 -132DE ; [.5328.0020.0002] # EGYPTIAN HIEROGLYPH S012 -132DF ; [.5329.0020.0002] # EGYPTIAN HIEROGLYPH S013 -132E0 ; [.532A.0020.0002] # EGYPTIAN HIEROGLYPH S014 -132E1 ; [.532B.0020.0002] # EGYPTIAN HIEROGLYPH S014A -132E2 ; [.532C.0020.0002] # EGYPTIAN HIEROGLYPH S014B -132E3 ; [.532D.0020.0002] # EGYPTIAN HIEROGLYPH S015 -132E4 ; [.532E.0020.0002] # EGYPTIAN HIEROGLYPH S016 -132E5 ; [.532F.0020.0002] # EGYPTIAN HIEROGLYPH S017 -132E6 ; [.5330.0020.0002] # EGYPTIAN HIEROGLYPH S017A -132E7 ; [.5331.0020.0002] # EGYPTIAN HIEROGLYPH S018 -132E8 ; [.5332.0020.0002] # EGYPTIAN HIEROGLYPH S019 -132E9 ; [.5333.0020.0002] # EGYPTIAN HIEROGLYPH S020 -132EA ; [.5334.0020.0002] # EGYPTIAN HIEROGLYPH S021 -132EB ; [.5335.0020.0002] # EGYPTIAN HIEROGLYPH S022 -132EC ; [.5336.0020.0002] # EGYPTIAN HIEROGLYPH S023 -132ED ; [.5337.0020.0002] # EGYPTIAN HIEROGLYPH S024 -132EE ; [.5338.0020.0002] # EGYPTIAN HIEROGLYPH S025 -132EF ; [.5339.0020.0002] # EGYPTIAN HIEROGLYPH S026 -132F0 ; [.533A.0020.0002] # EGYPTIAN HIEROGLYPH S026A -132F1 ; [.533B.0020.0002] # EGYPTIAN HIEROGLYPH S026B -132F2 ; [.533C.0020.0002] # EGYPTIAN HIEROGLYPH S027 -132F3 ; [.533D.0020.0002] # EGYPTIAN HIEROGLYPH S028 -132F4 ; [.533E.0020.0002] # EGYPTIAN HIEROGLYPH S029 -132F5 ; [.533F.0020.0002] # EGYPTIAN HIEROGLYPH S030 -132F6 ; [.5340.0020.0002] # EGYPTIAN HIEROGLYPH S031 -132F7 ; [.5341.0020.0002] # EGYPTIAN HIEROGLYPH S032 -132F8 ; [.5342.0020.0002] # EGYPTIAN HIEROGLYPH S033 -132F9 ; [.5343.0020.0002] # EGYPTIAN HIEROGLYPH S034 -132FA ; [.5344.0020.0002] # EGYPTIAN HIEROGLYPH S035 -132FB ; [.5345.0020.0002] # EGYPTIAN HIEROGLYPH S035A -132FC ; [.5346.0020.0002] # EGYPTIAN HIEROGLYPH S036 -132FD ; [.5347.0020.0002] # EGYPTIAN HIEROGLYPH S037 -132FE ; [.5348.0020.0002] # EGYPTIAN HIEROGLYPH S038 -132FF ; [.5349.0020.0002] # EGYPTIAN HIEROGLYPH S039 -13300 ; [.534A.0020.0002] # EGYPTIAN HIEROGLYPH S040 -13301 ; [.534B.0020.0002] # EGYPTIAN HIEROGLYPH S041 -13302 ; [.534C.0020.0002] # EGYPTIAN HIEROGLYPH S042 -13303 ; [.534D.0020.0002] # EGYPTIAN HIEROGLYPH S043 -13304 ; [.534E.0020.0002] # EGYPTIAN HIEROGLYPH S044 -13305 ; [.534F.0020.0002] # EGYPTIAN HIEROGLYPH S045 -13306 ; [.5350.0020.0002] # EGYPTIAN HIEROGLYPH S046 -13307 ; [.5351.0020.0002] # EGYPTIAN HIEROGLYPH T001 -13308 ; [.5352.0020.0002] # EGYPTIAN HIEROGLYPH T002 -13309 ; [.5353.0020.0002] # EGYPTIAN HIEROGLYPH T003 -1330A ; [.5354.0020.0002] # EGYPTIAN HIEROGLYPH T003A -1330B ; [.5355.0020.0002] # EGYPTIAN HIEROGLYPH T004 -1330C ; [.5356.0020.0002] # EGYPTIAN HIEROGLYPH T005 -1330D ; [.5357.0020.0002] # EGYPTIAN HIEROGLYPH T006 -1330E ; [.5358.0020.0002] # EGYPTIAN HIEROGLYPH T007 -1330F ; [.5359.0020.0002] # EGYPTIAN HIEROGLYPH T007A -13310 ; [.535A.0020.0002] # EGYPTIAN HIEROGLYPH T008 -13311 ; [.535B.0020.0002] # EGYPTIAN HIEROGLYPH T008A -13312 ; [.535C.0020.0002] # EGYPTIAN HIEROGLYPH T009 -13313 ; [.535D.0020.0002] # EGYPTIAN HIEROGLYPH T009A -13314 ; [.535E.0020.0002] # EGYPTIAN HIEROGLYPH T010 -13315 ; [.535F.0020.0002] # EGYPTIAN HIEROGLYPH T011 -13316 ; [.5360.0020.0002] # EGYPTIAN HIEROGLYPH T011A -13317 ; [.5361.0020.0002] # EGYPTIAN HIEROGLYPH T012 -13318 ; [.5362.0020.0002] # EGYPTIAN HIEROGLYPH T013 -13319 ; [.5363.0020.0002] # EGYPTIAN HIEROGLYPH T014 -1331A ; [.5364.0020.0002] # EGYPTIAN HIEROGLYPH T015 -1331B ; [.5365.0020.0002] # EGYPTIAN HIEROGLYPH T016 -1331C ; [.5366.0020.0002] # EGYPTIAN HIEROGLYPH T016A -1331D ; [.5367.0020.0002] # EGYPTIAN HIEROGLYPH T017 -1331E ; [.5368.0020.0002] # EGYPTIAN HIEROGLYPH T018 -1331F ; [.5369.0020.0002] # EGYPTIAN HIEROGLYPH T019 -13320 ; [.536A.0020.0002] # EGYPTIAN HIEROGLYPH T020 -13321 ; [.536B.0020.0002] # EGYPTIAN HIEROGLYPH T021 -13322 ; [.536C.0020.0002] # EGYPTIAN HIEROGLYPH T022 -13323 ; [.536D.0020.0002] # EGYPTIAN HIEROGLYPH T023 -13324 ; [.536E.0020.0002] # EGYPTIAN HIEROGLYPH T024 -13325 ; [.536F.0020.0002] # EGYPTIAN HIEROGLYPH T025 -13326 ; [.5370.0020.0002] # EGYPTIAN HIEROGLYPH T026 -13327 ; [.5371.0020.0002] # EGYPTIAN HIEROGLYPH T027 -13328 ; [.5372.0020.0002] # EGYPTIAN HIEROGLYPH T028 -13329 ; [.5373.0020.0002] # EGYPTIAN HIEROGLYPH T029 -1332A ; [.5374.0020.0002] # EGYPTIAN HIEROGLYPH T030 -1332B ; [.5375.0020.0002] # EGYPTIAN HIEROGLYPH T031 -1332C ; [.5376.0020.0002] # EGYPTIAN HIEROGLYPH T032 -1332D ; [.5377.0020.0002] # EGYPTIAN HIEROGLYPH T032A -1332E ; [.5378.0020.0002] # EGYPTIAN HIEROGLYPH T033 -1332F ; [.5379.0020.0002] # EGYPTIAN HIEROGLYPH T033A -13330 ; [.537A.0020.0002] # EGYPTIAN HIEROGLYPH T034 -13331 ; [.537B.0020.0002] # EGYPTIAN HIEROGLYPH T035 -13332 ; [.537C.0020.0002] # EGYPTIAN HIEROGLYPH T036 -13333 ; [.537D.0020.0002] # EGYPTIAN HIEROGLYPH U001 -13334 ; [.537E.0020.0002] # EGYPTIAN HIEROGLYPH U002 -13335 ; [.537F.0020.0002] # EGYPTIAN HIEROGLYPH U003 -13336 ; [.5380.0020.0002] # EGYPTIAN HIEROGLYPH U004 -13337 ; [.5381.0020.0002] # EGYPTIAN HIEROGLYPH U005 -13338 ; [.5382.0020.0002] # EGYPTIAN HIEROGLYPH U006 -13339 ; [.5383.0020.0002] # EGYPTIAN HIEROGLYPH U006A -1333A ; [.5384.0020.0002] # EGYPTIAN HIEROGLYPH U006B -1333B ; [.5385.0020.0002] # EGYPTIAN HIEROGLYPH U007 -1333C ; [.5386.0020.0002] # EGYPTIAN HIEROGLYPH U008 -1333D ; [.5387.0020.0002] # EGYPTIAN HIEROGLYPH U009 -1333E ; [.5388.0020.0002] # EGYPTIAN HIEROGLYPH U010 -1333F ; [.5389.0020.0002] # EGYPTIAN HIEROGLYPH U011 -13340 ; [.538A.0020.0002] # EGYPTIAN HIEROGLYPH U012 -13341 ; [.538B.0020.0002] # EGYPTIAN HIEROGLYPH U013 -13342 ; [.538C.0020.0002] # EGYPTIAN HIEROGLYPH U014 -13343 ; [.538D.0020.0002] # EGYPTIAN HIEROGLYPH U015 -13344 ; [.538E.0020.0002] # EGYPTIAN HIEROGLYPH U016 -13345 ; [.538F.0020.0002] # EGYPTIAN HIEROGLYPH U017 -13346 ; [.5390.0020.0002] # EGYPTIAN HIEROGLYPH U018 -13347 ; [.5391.0020.0002] # EGYPTIAN HIEROGLYPH U019 -13348 ; [.5392.0020.0002] # EGYPTIAN HIEROGLYPH U020 -13349 ; [.5393.0020.0002] # EGYPTIAN HIEROGLYPH U021 -1334A ; [.5394.0020.0002] # EGYPTIAN HIEROGLYPH U022 -1334B ; [.5395.0020.0002] # EGYPTIAN HIEROGLYPH U023 -1334C ; [.5396.0020.0002] # EGYPTIAN HIEROGLYPH U023A -1334D ; [.5397.0020.0002] # EGYPTIAN HIEROGLYPH U024 -1334E ; [.5398.0020.0002] # EGYPTIAN HIEROGLYPH U025 -1334F ; [.5399.0020.0002] # EGYPTIAN HIEROGLYPH U026 -13350 ; [.539A.0020.0002] # EGYPTIAN HIEROGLYPH U027 -13351 ; [.539B.0020.0002] # EGYPTIAN HIEROGLYPH U028 -13352 ; [.539C.0020.0002] # EGYPTIAN HIEROGLYPH U029 -13353 ; [.539D.0020.0002] # EGYPTIAN HIEROGLYPH U029A -13354 ; [.539E.0020.0002] # EGYPTIAN HIEROGLYPH U030 -13355 ; [.539F.0020.0002] # EGYPTIAN HIEROGLYPH U031 -13356 ; [.53A0.0020.0002] # EGYPTIAN HIEROGLYPH U032 -13357 ; [.53A1.0020.0002] # EGYPTIAN HIEROGLYPH U032A -13358 ; [.53A2.0020.0002] # EGYPTIAN HIEROGLYPH U033 -13359 ; [.53A3.0020.0002] # EGYPTIAN HIEROGLYPH U034 -1335A ; [.53A4.0020.0002] # EGYPTIAN HIEROGLYPH U035 -1335B ; [.53A5.0020.0002] # EGYPTIAN HIEROGLYPH U036 -1335C ; [.53A6.0020.0002] # EGYPTIAN HIEROGLYPH U037 -1335D ; [.53A7.0020.0002] # EGYPTIAN HIEROGLYPH U038 -1335E ; [.53A8.0020.0002] # EGYPTIAN HIEROGLYPH U039 -1335F ; [.53A9.0020.0002] # EGYPTIAN HIEROGLYPH U040 -13360 ; [.53AA.0020.0002] # EGYPTIAN HIEROGLYPH U041 -13361 ; [.53AB.0020.0002] # EGYPTIAN HIEROGLYPH U042 -13362 ; [.53AC.0020.0002] # EGYPTIAN HIEROGLYPH V001 -13363 ; [.53AD.0020.0002] # EGYPTIAN HIEROGLYPH V001A -13364 ; [.53AE.0020.0002] # EGYPTIAN HIEROGLYPH V001B -13365 ; [.53AF.0020.0002] # EGYPTIAN HIEROGLYPH V001C -13366 ; [.53B0.0020.0002] # EGYPTIAN HIEROGLYPH V001D -13367 ; [.53B1.0020.0002] # EGYPTIAN HIEROGLYPH V001E -13368 ; [.53B2.0020.0002] # EGYPTIAN HIEROGLYPH V001F -13369 ; [.53B3.0020.0002] # EGYPTIAN HIEROGLYPH V001G -1336A ; [.53B4.0020.0002] # EGYPTIAN HIEROGLYPH V001H -1336B ; [.53B5.0020.0002] # EGYPTIAN HIEROGLYPH V001I -1336C ; [.53B6.0020.0002] # EGYPTIAN HIEROGLYPH V002 -1336D ; [.53B7.0020.0002] # EGYPTIAN HIEROGLYPH V002A -1336E ; [.53B8.0020.0002] # EGYPTIAN HIEROGLYPH V003 -1336F ; [.53B9.0020.0002] # EGYPTIAN HIEROGLYPH V004 -13370 ; [.53BA.0020.0002] # EGYPTIAN HIEROGLYPH V005 -13371 ; [.53BB.0020.0002] # EGYPTIAN HIEROGLYPH V006 -13372 ; [.53BC.0020.0002] # EGYPTIAN HIEROGLYPH V007 -13373 ; [.53BD.0020.0002] # EGYPTIAN HIEROGLYPH V007A -13374 ; [.53BE.0020.0002] # EGYPTIAN HIEROGLYPH V007B -13375 ; [.53BF.0020.0002] # EGYPTIAN HIEROGLYPH V008 -13376 ; [.53C0.0020.0002] # EGYPTIAN HIEROGLYPH V009 -13377 ; [.53C1.0020.0002] # EGYPTIAN HIEROGLYPH V010 -13378 ; [.53C2.0020.0002] # EGYPTIAN HIEROGLYPH V011 -13379 ; [.53C3.0020.0002] # EGYPTIAN HIEROGLYPH V011A -1337A ; [.53C4.0020.0002] # EGYPTIAN HIEROGLYPH V011B -1337B ; [.53C5.0020.0002] # EGYPTIAN HIEROGLYPH V011C -1337C ; [.53C6.0020.0002] # EGYPTIAN HIEROGLYPH V012 -1337D ; [.53C7.0020.0002] # EGYPTIAN HIEROGLYPH V012A -1337E ; [.53C8.0020.0002] # EGYPTIAN HIEROGLYPH V012B -1337F ; [.53C9.0020.0002] # EGYPTIAN HIEROGLYPH V013 -13380 ; [.53CA.0020.0002] # EGYPTIAN HIEROGLYPH V014 -13381 ; [.53CB.0020.0002] # EGYPTIAN HIEROGLYPH V015 -13382 ; [.53CC.0020.0002] # EGYPTIAN HIEROGLYPH V016 -13383 ; [.53CD.0020.0002] # EGYPTIAN HIEROGLYPH V017 -13384 ; [.53CE.0020.0002] # EGYPTIAN HIEROGLYPH V018 -13385 ; [.53CF.0020.0002] # EGYPTIAN HIEROGLYPH V019 -13386 ; [.53D0.0020.0002] # EGYPTIAN HIEROGLYPH V020 -13387 ; [.53D1.0020.0002] # EGYPTIAN HIEROGLYPH V020A -13388 ; [.53D2.0020.0002] # EGYPTIAN HIEROGLYPH V020B -13389 ; [.53D3.0020.0002] # EGYPTIAN HIEROGLYPH V020C -1338A ; [.53D4.0020.0002] # EGYPTIAN HIEROGLYPH V020D -1338B ; [.53D5.0020.0002] # EGYPTIAN HIEROGLYPH V020E -1338C ; [.53D6.0020.0002] # EGYPTIAN HIEROGLYPH V020F -1338D ; [.53D7.0020.0002] # EGYPTIAN HIEROGLYPH V020G -1338E ; [.53D8.0020.0002] # EGYPTIAN HIEROGLYPH V020H -1338F ; [.53D9.0020.0002] # EGYPTIAN HIEROGLYPH V020I -13390 ; [.53DA.0020.0002] # EGYPTIAN HIEROGLYPH V020J -13391 ; [.53DB.0020.0002] # EGYPTIAN HIEROGLYPH V020K -13392 ; [.53DC.0020.0002] # EGYPTIAN HIEROGLYPH V020L -13393 ; [.53DD.0020.0002] # EGYPTIAN HIEROGLYPH V021 -13394 ; [.53DE.0020.0002] # EGYPTIAN HIEROGLYPH V022 -13395 ; [.53DF.0020.0002] # EGYPTIAN HIEROGLYPH V023 -13396 ; [.53E0.0020.0002] # EGYPTIAN HIEROGLYPH V023A -13397 ; [.53E1.0020.0002] # EGYPTIAN HIEROGLYPH V024 -13398 ; [.53E2.0020.0002] # EGYPTIAN HIEROGLYPH V025 -13399 ; [.53E3.0020.0002] # EGYPTIAN HIEROGLYPH V026 -1339A ; [.53E4.0020.0002] # EGYPTIAN HIEROGLYPH V027 -1339B ; [.53E5.0020.0002] # EGYPTIAN HIEROGLYPH V028 -1339C ; [.53E6.0020.0002] # EGYPTIAN HIEROGLYPH V028A -1339D ; [.53E7.0020.0002] # EGYPTIAN HIEROGLYPH V029 -1339E ; [.53E8.0020.0002] # EGYPTIAN HIEROGLYPH V029A -1339F ; [.53E9.0020.0002] # EGYPTIAN HIEROGLYPH V030 -133A0 ; [.53EA.0020.0002] # EGYPTIAN HIEROGLYPH V030A -133A1 ; [.53EB.0020.0002] # EGYPTIAN HIEROGLYPH V031 -133A2 ; [.53EC.0020.0002] # EGYPTIAN HIEROGLYPH V031A -133A3 ; [.53ED.0020.0002] # EGYPTIAN HIEROGLYPH V032 -133A4 ; [.53EE.0020.0002] # EGYPTIAN HIEROGLYPH V033 -133A5 ; [.53EF.0020.0002] # EGYPTIAN HIEROGLYPH V033A -133A6 ; [.53F0.0020.0002] # EGYPTIAN HIEROGLYPH V034 -133A7 ; [.53F1.0020.0002] # EGYPTIAN HIEROGLYPH V035 -133A8 ; [.53F2.0020.0002] # EGYPTIAN HIEROGLYPH V036 -133A9 ; [.53F3.0020.0002] # EGYPTIAN HIEROGLYPH V037 -133AA ; [.53F4.0020.0002] # EGYPTIAN HIEROGLYPH V037A -133AB ; [.53F5.0020.0002] # EGYPTIAN HIEROGLYPH V038 -133AC ; [.53F6.0020.0002] # EGYPTIAN HIEROGLYPH V039 -133AD ; [.53F7.0020.0002] # EGYPTIAN HIEROGLYPH V040 -133AE ; [.53F8.0020.0002] # EGYPTIAN HIEROGLYPH V040A -133AF ; [.53F9.0020.0002] # EGYPTIAN HIEROGLYPH W001 -133B0 ; [.53FA.0020.0002] # EGYPTIAN HIEROGLYPH W002 -133B1 ; [.53FB.0020.0002] # EGYPTIAN HIEROGLYPH W003 -133B2 ; [.53FC.0020.0002] # EGYPTIAN HIEROGLYPH W003A -133B3 ; [.53FD.0020.0002] # EGYPTIAN HIEROGLYPH W004 -133B4 ; [.53FE.0020.0002] # EGYPTIAN HIEROGLYPH W005 -133B5 ; [.53FF.0020.0002] # EGYPTIAN HIEROGLYPH W006 -133B6 ; [.5400.0020.0002] # EGYPTIAN HIEROGLYPH W007 -133B7 ; [.5401.0020.0002] # EGYPTIAN HIEROGLYPH W008 -133B8 ; [.5402.0020.0002] # EGYPTIAN HIEROGLYPH W009 -133B9 ; [.5403.0020.0002] # EGYPTIAN HIEROGLYPH W009A -133BA ; [.5404.0020.0002] # EGYPTIAN HIEROGLYPH W010 -133BB ; [.5405.0020.0002] # EGYPTIAN HIEROGLYPH W010A -133BC ; [.5406.0020.0002] # EGYPTIAN HIEROGLYPH W011 -133BD ; [.5407.0020.0002] # EGYPTIAN HIEROGLYPH W012 -133BE ; [.5408.0020.0002] # EGYPTIAN HIEROGLYPH W013 -133BF ; [.5409.0020.0002] # EGYPTIAN HIEROGLYPH W014 -133C0 ; [.540A.0020.0002] # EGYPTIAN HIEROGLYPH W014A -133C1 ; [.540B.0020.0002] # EGYPTIAN HIEROGLYPH W015 -133C2 ; [.540C.0020.0002] # EGYPTIAN HIEROGLYPH W016 -133C3 ; [.540D.0020.0002] # EGYPTIAN HIEROGLYPH W017 -133C4 ; [.540E.0020.0002] # EGYPTIAN HIEROGLYPH W017A -133C5 ; [.540F.0020.0002] # EGYPTIAN HIEROGLYPH W018 -133C6 ; [.5410.0020.0002] # EGYPTIAN HIEROGLYPH W018A -133C7 ; [.5411.0020.0002] # EGYPTIAN HIEROGLYPH W019 -133C8 ; [.5412.0020.0002] # EGYPTIAN HIEROGLYPH W020 -133C9 ; [.5413.0020.0002] # EGYPTIAN HIEROGLYPH W021 -133CA ; [.5414.0020.0002] # EGYPTIAN HIEROGLYPH W022 -133CB ; [.5415.0020.0002] # EGYPTIAN HIEROGLYPH W023 -133CC ; [.5416.0020.0002] # EGYPTIAN HIEROGLYPH W024 -133CD ; [.5417.0020.0002] # EGYPTIAN HIEROGLYPH W024A -133CE ; [.5418.0020.0002] # EGYPTIAN HIEROGLYPH W025 -133CF ; [.5419.0020.0002] # EGYPTIAN HIEROGLYPH X001 -133D0 ; [.541A.0020.0002] # EGYPTIAN HIEROGLYPH X002 -133D1 ; [.541B.0020.0002] # EGYPTIAN HIEROGLYPH X003 -133D2 ; [.541C.0020.0002] # EGYPTIAN HIEROGLYPH X004 -133D3 ; [.541D.0020.0002] # EGYPTIAN HIEROGLYPH X004A -133D4 ; [.541E.0020.0002] # EGYPTIAN HIEROGLYPH X004B -133D5 ; [.541F.0020.0002] # EGYPTIAN HIEROGLYPH X005 -133D6 ; [.5420.0020.0002] # EGYPTIAN HIEROGLYPH X006 -133D7 ; [.5421.0020.0002] # EGYPTIAN HIEROGLYPH X006A -133D8 ; [.5422.0020.0002] # EGYPTIAN HIEROGLYPH X007 -133D9 ; [.5423.0020.0002] # EGYPTIAN HIEROGLYPH X008 -133DA ; [.5424.0020.0002] # EGYPTIAN HIEROGLYPH X008A -133DB ; [.5425.0020.0002] # EGYPTIAN HIEROGLYPH Y001 -133DC ; [.5426.0020.0002] # EGYPTIAN HIEROGLYPH Y001A -133DD ; [.5427.0020.0002] # EGYPTIAN HIEROGLYPH Y002 -133DE ; [.5428.0020.0002] # EGYPTIAN HIEROGLYPH Y003 -133DF ; [.5429.0020.0002] # EGYPTIAN HIEROGLYPH Y004 -133E0 ; [.542A.0020.0002] # EGYPTIAN HIEROGLYPH Y005 -133E1 ; [.542B.0020.0002] # EGYPTIAN HIEROGLYPH Y006 -133E2 ; [.542C.0020.0002] # EGYPTIAN HIEROGLYPH Y007 -133E3 ; [.542D.0020.0002] # EGYPTIAN HIEROGLYPH Y008 -133E4 ; [.542E.0020.0002] # EGYPTIAN HIEROGLYPH Z001 -133E5 ; [.542F.0020.0002] # EGYPTIAN HIEROGLYPH Z002 -133E6 ; [.5430.0020.0002] # EGYPTIAN HIEROGLYPH Z002A -133E7 ; [.5431.0020.0002] # EGYPTIAN HIEROGLYPH Z002B -133E8 ; [.5432.0020.0002] # EGYPTIAN HIEROGLYPH Z002C -133E9 ; [.5433.0020.0002] # EGYPTIAN HIEROGLYPH Z002D -133EA ; [.5434.0020.0002] # EGYPTIAN HIEROGLYPH Z003 -133EB ; [.5435.0020.0002] # EGYPTIAN HIEROGLYPH Z003A -133EC ; [.5436.0020.0002] # EGYPTIAN HIEROGLYPH Z003B -133ED ; [.5437.0020.0002] # EGYPTIAN HIEROGLYPH Z004 -133EE ; [.5438.0020.0002] # EGYPTIAN HIEROGLYPH Z004A -133EF ; [.5439.0020.0002] # EGYPTIAN HIEROGLYPH Z005 -133F0 ; [.543A.0020.0002] # EGYPTIAN HIEROGLYPH Z005A -133F1 ; [.543B.0020.0002] # EGYPTIAN HIEROGLYPH Z006 -133F2 ; [.543C.0020.0002] # EGYPTIAN HIEROGLYPH Z007 -133F3 ; [.543D.0020.0002] # EGYPTIAN HIEROGLYPH Z008 -133F4 ; [.543E.0020.0002] # EGYPTIAN HIEROGLYPH Z009 -133F5 ; [.543F.0020.0002] # EGYPTIAN HIEROGLYPH Z010 -133F6 ; [.5440.0020.0002] # EGYPTIAN HIEROGLYPH Z011 -133F7 ; [.5441.0020.0002] # EGYPTIAN HIEROGLYPH Z012 -133F8 ; [.5442.0020.0002] # EGYPTIAN HIEROGLYPH Z013 -133F9 ; [.5443.0020.0002] # EGYPTIAN HIEROGLYPH Z014 -133FA ; [.5444.0020.0002] # EGYPTIAN HIEROGLYPH Z015 -133FB ; [.5445.0020.0002] # EGYPTIAN HIEROGLYPH Z015A -133FC ; [.5446.0020.0002] # EGYPTIAN HIEROGLYPH Z015B -133FD ; [.5447.0020.0002] # EGYPTIAN HIEROGLYPH Z015C -133FE ; [.5448.0020.0002] # EGYPTIAN HIEROGLYPH Z015D -133FF ; [.5449.0020.0002] # EGYPTIAN HIEROGLYPH Z015E -13400 ; [.544A.0020.0002] # EGYPTIAN HIEROGLYPH Z015F -13401 ; [.544B.0020.0002] # EGYPTIAN HIEROGLYPH Z015G -13402 ; [.544C.0020.0002] # EGYPTIAN HIEROGLYPH Z015H -13403 ; [.544D.0020.0002] # EGYPTIAN HIEROGLYPH Z015I -13404 ; [.544E.0020.0002] # EGYPTIAN HIEROGLYPH Z016 -13405 ; [.544F.0020.0002] # EGYPTIAN HIEROGLYPH Z016A -13406 ; [.5450.0020.0002] # EGYPTIAN HIEROGLYPH Z016B -13407 ; [.5451.0020.0002] # EGYPTIAN HIEROGLYPH Z016C -13408 ; [.5452.0020.0002] # EGYPTIAN HIEROGLYPH Z016D -13409 ; [.5453.0020.0002] # EGYPTIAN HIEROGLYPH Z016E -1340A ; [.5454.0020.0002] # EGYPTIAN HIEROGLYPH Z016F -1340B ; [.5455.0020.0002] # EGYPTIAN HIEROGLYPH Z016G -1340C ; [.5456.0020.0002] # EGYPTIAN HIEROGLYPH Z016H -1340D ; [.5457.0020.0002] # EGYPTIAN HIEROGLYPH AA001 -1340E ; [.5458.0020.0002] # EGYPTIAN HIEROGLYPH AA002 -1340F ; [.5459.0020.0002] # EGYPTIAN HIEROGLYPH AA003 -13410 ; [.545A.0020.0002] # EGYPTIAN HIEROGLYPH AA004 -13411 ; [.545B.0020.0002] # EGYPTIAN HIEROGLYPH AA005 -13412 ; [.545C.0020.0002] # EGYPTIAN HIEROGLYPH AA006 -13413 ; [.545D.0020.0002] # EGYPTIAN HIEROGLYPH AA007 -13414 ; [.545E.0020.0002] # EGYPTIAN HIEROGLYPH AA007A -13415 ; [.545F.0020.0002] # EGYPTIAN HIEROGLYPH AA007B -13416 ; [.5460.0020.0002] # EGYPTIAN HIEROGLYPH AA008 -13417 ; [.5461.0020.0002] # EGYPTIAN HIEROGLYPH AA009 -13418 ; [.5462.0020.0002] # EGYPTIAN HIEROGLYPH AA010 -13419 ; [.5463.0020.0002] # EGYPTIAN HIEROGLYPH AA011 -1341A ; [.5464.0020.0002] # EGYPTIAN HIEROGLYPH AA012 -1341B ; [.5465.0020.0002] # EGYPTIAN HIEROGLYPH AA013 -1341C ; [.5466.0020.0002] # EGYPTIAN HIEROGLYPH AA014 -1341D ; [.5467.0020.0002] # EGYPTIAN HIEROGLYPH AA015 -1341E ; [.5468.0020.0002] # EGYPTIAN HIEROGLYPH AA016 -1341F ; [.5469.0020.0002] # EGYPTIAN HIEROGLYPH AA017 -13420 ; [.546A.0020.0002] # EGYPTIAN HIEROGLYPH AA018 -13421 ; [.546B.0020.0002] # EGYPTIAN HIEROGLYPH AA019 -13422 ; [.546C.0020.0002] # EGYPTIAN HIEROGLYPH AA020 -13423 ; [.546D.0020.0002] # EGYPTIAN HIEROGLYPH AA021 -13424 ; [.546E.0020.0002] # EGYPTIAN HIEROGLYPH AA022 -13425 ; [.546F.0020.0002] # EGYPTIAN HIEROGLYPH AA023 -13426 ; [.5470.0020.0002] # EGYPTIAN HIEROGLYPH AA024 -13427 ; [.5471.0020.0002] # EGYPTIAN HIEROGLYPH AA025 -13428 ; [.5472.0020.0002] # EGYPTIAN HIEROGLYPH AA026 -13429 ; [.5473.0020.0002] # EGYPTIAN HIEROGLYPH AA027 -1342A ; [.5474.0020.0002] # EGYPTIAN HIEROGLYPH AA028 -1342B ; [.5475.0020.0002] # EGYPTIAN HIEROGLYPH AA029 -1342C ; [.5476.0020.0002] # EGYPTIAN HIEROGLYPH AA030 -1342D ; [.5477.0020.0002] # EGYPTIAN HIEROGLYPH AA031 -1342E ; [.5478.0020.0002] # EGYPTIAN HIEROGLYPH AA032 -109A0 ; [.5479.0020.0002] # MEROITIC CURSIVE LETTER A -10980 ; [.5479.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER A -109A1 ; [.547A.0020.0002] # MEROITIC CURSIVE LETTER E -10981 ; [.547A.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER E -109A2 ; [.547B.0020.0002] # MEROITIC CURSIVE LETTER I -10982 ; [.547B.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER I -109A3 ; [.547C.0020.0002] # MEROITIC CURSIVE LETTER O -10983 ; [.547C.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER O -109A4 ; [.547D.0020.0002] # MEROITIC CURSIVE LETTER YA -10984 ; [.547D.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER YA -109A5 ; [.547E.0020.0002] # MEROITIC CURSIVE LETTER WA -10985 ; [.547E.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER WA -109A6 ; [.547F.0020.0002] # MEROITIC CURSIVE LETTER BA -10986 ; [.547F.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER BA -10987 ; [.547F.0020.0004][.0000.0112.0004] # MEROITIC HIEROGLYPHIC LETTER BA-2 -109A7 ; [.5480.0020.0002] # MEROITIC CURSIVE LETTER PA -10988 ; [.5480.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER PA -109A8 ; [.5481.0020.0002] # MEROITIC CURSIVE LETTER MA -10989 ; [.5481.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER MA -109A9 ; [.5482.0020.0002] # MEROITIC CURSIVE LETTER NA -1098A ; [.5482.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER NA -1098B ; [.5482.0020.0004][.0000.0112.0004] # MEROITIC HIEROGLYPHIC LETTER NA-2 -109AA ; [.5483.0020.0002] # MEROITIC CURSIVE LETTER NE -1098C ; [.5483.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER NE -1098D ; [.5483.0020.0004][.0000.0112.0004] # MEROITIC HIEROGLYPHIC LETTER NE-2 -109AB ; [.5484.0020.0002] # MEROITIC CURSIVE LETTER RA -1098E ; [.5484.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER RA -1098F ; [.5484.0020.0004][.0000.0112.0004] # MEROITIC HIEROGLYPHIC LETTER RA-2 -109AC ; [.5485.0020.0002] # MEROITIC CURSIVE LETTER LA -10990 ; [.5485.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER LA -109AD ; [.5486.0020.0002] # MEROITIC CURSIVE LETTER KHA -10991 ; [.5486.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER KHA -109AE ; [.5487.0020.0002] # MEROITIC CURSIVE LETTER HHA -10992 ; [.5487.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER HHA -109AF ; [.5488.0020.0002] # MEROITIC CURSIVE LETTER SA -109B0 ; [.5488.0020.0004][.0000.0111.0004] # MEROITIC CURSIVE LETTER ARCHAIC SA -10993 ; [.5488.0020.0004][.0000.0112.0004] # MEROITIC HIEROGLYPHIC LETTER SA -10994 ; [.5488.0020.0004][.0000.0113.0004] # MEROITIC HIEROGLYPHIC LETTER SA-2 -109B1 ; [.5489.0020.0002] # MEROITIC CURSIVE LETTER SE -10995 ; [.5489.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER SE -109B2 ; [.548A.0020.0002] # MEROITIC CURSIVE LETTER KA -10996 ; [.548A.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER KA -109B3 ; [.548B.0020.0002] # MEROITIC CURSIVE LETTER QA -10997 ; [.548B.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER QA -109B4 ; [.548C.0020.0002] # MEROITIC CURSIVE LETTER TA -10998 ; [.548C.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER TA -10999 ; [.548C.0020.0004][.0000.0112.0004] # MEROITIC HIEROGLYPHIC LETTER TA-2 -109B5 ; [.548D.0020.0002] # MEROITIC CURSIVE LETTER TE -1099A ; [.548D.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER TE -1099B ; [.548D.0020.0004][.0000.0112.0004] # MEROITIC HIEROGLYPHIC LETTER TE-2 -109B6 ; [.548E.0020.0002] # MEROITIC CURSIVE LETTER TO -1099C ; [.548E.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER TO -109B7 ; [.548F.0020.0002] # MEROITIC CURSIVE LETTER DA -1099D ; [.548F.0020.0004][.0000.0111.0004] # MEROITIC HIEROGLYPHIC LETTER DA -109BE ; [.5490.0020.0002] # MEROITIC CURSIVE LOGOGRAM RMT -109BF ; [.5491.0020.0002] # MEROITIC CURSIVE LOGOGRAM IMN -1099E ; [.5492.0020.0002] # MEROITIC HIEROGLYPHIC SYMBOL VIDJ -1099F ; [.5493.0020.0002] # MEROITIC HIEROGLYPHIC SYMBOL VIDJ-2 -14400 ; [.5494.0020.0002] # ANATOLIAN HIEROGLYPH A001 -14401 ; [.5495.0020.0002] # ANATOLIAN HIEROGLYPH A002 -14402 ; [.5496.0020.0002] # ANATOLIAN HIEROGLYPH A003 -14403 ; [.5497.0020.0002] # ANATOLIAN HIEROGLYPH A004 -14404 ; [.5498.0020.0002] # ANATOLIAN HIEROGLYPH A005 -14405 ; [.5499.0020.0002] # ANATOLIAN HIEROGLYPH A006 -14406 ; [.549A.0020.0002] # ANATOLIAN HIEROGLYPH A007 -14407 ; [.549B.0020.0002] # ANATOLIAN HIEROGLYPH A008 -14408 ; [.549C.0020.0002] # ANATOLIAN HIEROGLYPH A009 -14409 ; [.549D.0020.0002] # ANATOLIAN HIEROGLYPH A010 -1440A ; [.549E.0020.0002] # ANATOLIAN HIEROGLYPH A010A -1440B ; [.549F.0020.0002] # ANATOLIAN HIEROGLYPH A011 -1440C ; [.54A0.0020.0002] # ANATOLIAN HIEROGLYPH A012 -1440D ; [.54A1.0020.0002] # ANATOLIAN HIEROGLYPH A013 -1440E ; [.54A2.0020.0002] # ANATOLIAN HIEROGLYPH A014 -1440F ; [.54A3.0020.0002] # ANATOLIAN HIEROGLYPH A015 -14410 ; [.54A4.0020.0002] # ANATOLIAN HIEROGLYPH A016 -14411 ; [.54A5.0020.0002] # ANATOLIAN HIEROGLYPH A017 -14412 ; [.54A6.0020.0002] # ANATOLIAN HIEROGLYPH A018 -14413 ; [.54A7.0020.0002] # ANATOLIAN HIEROGLYPH A019 -14414 ; [.54A8.0020.0002] # ANATOLIAN HIEROGLYPH A020 -14415 ; [.54A9.0020.0002] # ANATOLIAN HIEROGLYPH A021 -14416 ; [.54AA.0020.0002] # ANATOLIAN HIEROGLYPH A022 -14417 ; [.54AB.0020.0002] # ANATOLIAN HIEROGLYPH A023 -14418 ; [.54AC.0020.0002] # ANATOLIAN HIEROGLYPH A024 -14419 ; [.54AD.0020.0002] # ANATOLIAN HIEROGLYPH A025 -1441A ; [.54AE.0020.0002] # ANATOLIAN HIEROGLYPH A026 -1441B ; [.54AF.0020.0002] # ANATOLIAN HIEROGLYPH A026A -1441C ; [.54B0.0020.0002] # ANATOLIAN HIEROGLYPH A027 -1441D ; [.54B1.0020.0002] # ANATOLIAN HIEROGLYPH A028 -1441E ; [.54B2.0020.0002] # ANATOLIAN HIEROGLYPH A029 -1441F ; [.54B3.0020.0002] # ANATOLIAN HIEROGLYPH A030 -14420 ; [.54B4.0020.0002] # ANATOLIAN HIEROGLYPH A031 -14421 ; [.54B5.0020.0002] # ANATOLIAN HIEROGLYPH A032 -14422 ; [.54B6.0020.0002] # ANATOLIAN HIEROGLYPH A033 -14423 ; [.54B7.0020.0002] # ANATOLIAN HIEROGLYPH A034 -14424 ; [.54B8.0020.0002] # ANATOLIAN HIEROGLYPH A035 -14425 ; [.54B9.0020.0002] # ANATOLIAN HIEROGLYPH A036 -14426 ; [.54BA.0020.0002] # ANATOLIAN HIEROGLYPH A037 -14427 ; [.54BB.0020.0002] # ANATOLIAN HIEROGLYPH A038 -14428 ; [.54BC.0020.0002] # ANATOLIAN HIEROGLYPH A039 -14429 ; [.54BD.0020.0002] # ANATOLIAN HIEROGLYPH A039A -1442A ; [.54BE.0020.0002] # ANATOLIAN HIEROGLYPH A040 -1442B ; [.54BF.0020.0002] # ANATOLIAN HIEROGLYPH A041 -1442C ; [.54C0.0020.0002] # ANATOLIAN HIEROGLYPH A041A -1442D ; [.54C1.0020.0002] # ANATOLIAN HIEROGLYPH A042 -1442E ; [.54C2.0020.0002] # ANATOLIAN HIEROGLYPH A043 -1442F ; [.54C3.0020.0002] # ANATOLIAN HIEROGLYPH A044 -14430 ; [.54C4.0020.0002] # ANATOLIAN HIEROGLYPH A045 -14431 ; [.54C5.0020.0002] # ANATOLIAN HIEROGLYPH A045A -14432 ; [.54C6.0020.0002] # ANATOLIAN HIEROGLYPH A046 -14433 ; [.54C7.0020.0002] # ANATOLIAN HIEROGLYPH A046A -14434 ; [.54C8.0020.0002] # ANATOLIAN HIEROGLYPH A046B -14435 ; [.54C9.0020.0002] # ANATOLIAN HIEROGLYPH A047 -14436 ; [.54CA.0020.0002] # ANATOLIAN HIEROGLYPH A048 -14437 ; [.54CB.0020.0002] # ANATOLIAN HIEROGLYPH A049 -14438 ; [.54CC.0020.0002] # ANATOLIAN HIEROGLYPH A050 -14439 ; [.54CD.0020.0002] # ANATOLIAN HIEROGLYPH A051 -1443A ; [.54CE.0020.0002] # ANATOLIAN HIEROGLYPH A052 -1443B ; [.54CF.0020.0002] # ANATOLIAN HIEROGLYPH A053 -1443C ; [.54D0.0020.0002] # ANATOLIAN HIEROGLYPH A054 -1443D ; [.54D1.0020.0002] # ANATOLIAN HIEROGLYPH A055 -1443E ; [.54D2.0020.0002] # ANATOLIAN HIEROGLYPH A056 -1443F ; [.54D3.0020.0002] # ANATOLIAN HIEROGLYPH A057 -14440 ; [.54D4.0020.0002] # ANATOLIAN HIEROGLYPH A058 -14441 ; [.54D5.0020.0002] # ANATOLIAN HIEROGLYPH A059 -14442 ; [.54D6.0020.0002] # ANATOLIAN HIEROGLYPH A060 -14443 ; [.54D7.0020.0002] # ANATOLIAN HIEROGLYPH A061 -14444 ; [.54D8.0020.0002] # ANATOLIAN HIEROGLYPH A062 -14445 ; [.54D9.0020.0002] # ANATOLIAN HIEROGLYPH A063 -14446 ; [.54DA.0020.0002] # ANATOLIAN HIEROGLYPH A064 -14447 ; [.54DB.0020.0002] # ANATOLIAN HIEROGLYPH A065 -14448 ; [.54DC.0020.0002] # ANATOLIAN HIEROGLYPH A066 -14449 ; [.54DD.0020.0002] # ANATOLIAN HIEROGLYPH A066A -1444A ; [.54DE.0020.0002] # ANATOLIAN HIEROGLYPH A066B -1444B ; [.54DF.0020.0002] # ANATOLIAN HIEROGLYPH A066C -1444C ; [.54E0.0020.0002] # ANATOLIAN HIEROGLYPH A067 -1444D ; [.54E1.0020.0002] # ANATOLIAN HIEROGLYPH A068 -1444E ; [.54E2.0020.0002] # ANATOLIAN HIEROGLYPH A069 -1444F ; [.54E3.0020.0002] # ANATOLIAN HIEROGLYPH A070 -14450 ; [.54E4.0020.0002] # ANATOLIAN HIEROGLYPH A071 -14451 ; [.54E5.0020.0002] # ANATOLIAN HIEROGLYPH A072 -14452 ; [.54E6.0020.0002] # ANATOLIAN HIEROGLYPH A073 -14453 ; [.54E7.0020.0002] # ANATOLIAN HIEROGLYPH A074 -14454 ; [.54E8.0020.0002] # ANATOLIAN HIEROGLYPH A075 -14455 ; [.54E9.0020.0002] # ANATOLIAN HIEROGLYPH A076 -14456 ; [.54EA.0020.0002] # ANATOLIAN HIEROGLYPH A077 -14457 ; [.54EB.0020.0002] # ANATOLIAN HIEROGLYPH A078 -14458 ; [.54EC.0020.0002] # ANATOLIAN HIEROGLYPH A079 -14459 ; [.54ED.0020.0002] # ANATOLIAN HIEROGLYPH A080 -1445A ; [.54EE.0020.0002] # ANATOLIAN HIEROGLYPH A081 -1445B ; [.54EF.0020.0002] # ANATOLIAN HIEROGLYPH A082 -1445C ; [.54F0.0020.0002] # ANATOLIAN HIEROGLYPH A083 -1445D ; [.54F1.0020.0002] # ANATOLIAN HIEROGLYPH A084 -1445E ; [.54F2.0020.0002] # ANATOLIAN HIEROGLYPH A085 -1445F ; [.54F3.0020.0002] # ANATOLIAN HIEROGLYPH A086 -14460 ; [.54F4.0020.0002] # ANATOLIAN HIEROGLYPH A087 -14461 ; [.54F5.0020.0002] # ANATOLIAN HIEROGLYPH A088 -14462 ; [.54F6.0020.0002] # ANATOLIAN HIEROGLYPH A089 -14463 ; [.54F7.0020.0002] # ANATOLIAN HIEROGLYPH A090 -14464 ; [.54F8.0020.0002] # ANATOLIAN HIEROGLYPH A091 -14465 ; [.54F9.0020.0002] # ANATOLIAN HIEROGLYPH A092 -14466 ; [.54FA.0020.0002] # ANATOLIAN HIEROGLYPH A093 -14467 ; [.54FB.0020.0002] # ANATOLIAN HIEROGLYPH A094 -14468 ; [.54FC.0020.0002] # ANATOLIAN HIEROGLYPH A095 -14469 ; [.54FD.0020.0002] # ANATOLIAN HIEROGLYPH A096 -1446A ; [.54FE.0020.0002] # ANATOLIAN HIEROGLYPH A097 -1446B ; [.54FF.0020.0002] # ANATOLIAN HIEROGLYPH A097A -1446C ; [.5500.0020.0002] # ANATOLIAN HIEROGLYPH A098 -1446D ; [.5501.0020.0002] # ANATOLIAN HIEROGLYPH A098A -1446E ; [.5502.0020.0002] # ANATOLIAN HIEROGLYPH A099 -1446F ; [.5503.0020.0002] # ANATOLIAN HIEROGLYPH A100 -14470 ; [.5504.0020.0002] # ANATOLIAN HIEROGLYPH A100A -14471 ; [.5505.0020.0002] # ANATOLIAN HIEROGLYPH A101 -14472 ; [.5506.0020.0002] # ANATOLIAN HIEROGLYPH A101A -14473 ; [.5507.0020.0002] # ANATOLIAN HIEROGLYPH A102 -14474 ; [.5508.0020.0002] # ANATOLIAN HIEROGLYPH A102A -14475 ; [.5509.0020.0002] # ANATOLIAN HIEROGLYPH A103 -14476 ; [.550A.0020.0002] # ANATOLIAN HIEROGLYPH A104 -14477 ; [.550B.0020.0002] # ANATOLIAN HIEROGLYPH A104A -14478 ; [.550C.0020.0002] # ANATOLIAN HIEROGLYPH A104B -14479 ; [.550D.0020.0002] # ANATOLIAN HIEROGLYPH A104C -1447A ; [.550E.0020.0002] # ANATOLIAN HIEROGLYPH A105 -1447B ; [.550F.0020.0002] # ANATOLIAN HIEROGLYPH A105A -1447C ; [.5510.0020.0002] # ANATOLIAN HIEROGLYPH A105B -1447D ; [.5511.0020.0002] # ANATOLIAN HIEROGLYPH A106 -1447E ; [.5512.0020.0002] # ANATOLIAN HIEROGLYPH A107 -1447F ; [.5513.0020.0002] # ANATOLIAN HIEROGLYPH A107A -14480 ; [.5514.0020.0002] # ANATOLIAN HIEROGLYPH A107B -14481 ; [.5515.0020.0002] # ANATOLIAN HIEROGLYPH A107C -14482 ; [.5516.0020.0002] # ANATOLIAN HIEROGLYPH A108 -14483 ; [.5517.0020.0002] # ANATOLIAN HIEROGLYPH A109 -14484 ; [.5518.0020.0002] # ANATOLIAN HIEROGLYPH A110 -14485 ; [.5519.0020.0002] # ANATOLIAN HIEROGLYPH A110A -14486 ; [.551A.0020.0002] # ANATOLIAN HIEROGLYPH A110B -14487 ; [.551B.0020.0002] # ANATOLIAN HIEROGLYPH A111 -14488 ; [.551C.0020.0002] # ANATOLIAN HIEROGLYPH A112 -14489 ; [.551D.0020.0002] # ANATOLIAN HIEROGLYPH A113 -1448A ; [.551E.0020.0002] # ANATOLIAN HIEROGLYPH A114 -1448B ; [.551F.0020.0002] # ANATOLIAN HIEROGLYPH A115 -1448C ; [.5520.0020.0002] # ANATOLIAN HIEROGLYPH A115A -1448D ; [.5521.0020.0002] # ANATOLIAN HIEROGLYPH A116 -1448E ; [.5522.0020.0002] # ANATOLIAN HIEROGLYPH A117 -1448F ; [.5523.0020.0002] # ANATOLIAN HIEROGLYPH A118 -14490 ; [.5524.0020.0002] # ANATOLIAN HIEROGLYPH A119 -14491 ; [.5525.0020.0002] # ANATOLIAN HIEROGLYPH A120 -14492 ; [.5526.0020.0002] # ANATOLIAN HIEROGLYPH A121 -14493 ; [.5527.0020.0002] # ANATOLIAN HIEROGLYPH A122 -14494 ; [.5528.0020.0002] # ANATOLIAN HIEROGLYPH A123 -14495 ; [.5529.0020.0002] # ANATOLIAN HIEROGLYPH A124 -14496 ; [.552A.0020.0002] # ANATOLIAN HIEROGLYPH A125 -14497 ; [.552B.0020.0002] # ANATOLIAN HIEROGLYPH A125A -14498 ; [.552C.0020.0002] # ANATOLIAN HIEROGLYPH A126 -14499 ; [.552D.0020.0002] # ANATOLIAN HIEROGLYPH A127 -1449A ; [.552E.0020.0002] # ANATOLIAN HIEROGLYPH A128 -1449B ; [.552F.0020.0002] # ANATOLIAN HIEROGLYPH A129 -1449C ; [.5530.0020.0002] # ANATOLIAN HIEROGLYPH A130 -1449D ; [.5531.0020.0002] # ANATOLIAN HIEROGLYPH A131 -1449E ; [.5532.0020.0002] # ANATOLIAN HIEROGLYPH A132 -1449F ; [.5533.0020.0002] # ANATOLIAN HIEROGLYPH A133 -144A0 ; [.5534.0020.0002] # ANATOLIAN HIEROGLYPH A134 -144A1 ; [.5535.0020.0002] # ANATOLIAN HIEROGLYPH A135 -144A2 ; [.5536.0020.0002] # ANATOLIAN HIEROGLYPH A135A -144A3 ; [.5537.0020.0002] # ANATOLIAN HIEROGLYPH A136 -144A4 ; [.5538.0020.0002] # ANATOLIAN HIEROGLYPH A137 -144A5 ; [.5539.0020.0002] # ANATOLIAN HIEROGLYPH A138 -144A6 ; [.553A.0020.0002] # ANATOLIAN HIEROGLYPH A139 -144A7 ; [.553B.0020.0002] # ANATOLIAN HIEROGLYPH A140 -144A8 ; [.553C.0020.0002] # ANATOLIAN HIEROGLYPH A141 -144A9 ; [.553D.0020.0002] # ANATOLIAN HIEROGLYPH A142 -144AA ; [.553E.0020.0002] # ANATOLIAN HIEROGLYPH A143 -144AB ; [.553F.0020.0002] # ANATOLIAN HIEROGLYPH A144 -144AC ; [.5540.0020.0002] # ANATOLIAN HIEROGLYPH A145 -144AD ; [.5541.0020.0002] # ANATOLIAN HIEROGLYPH A146 -144AE ; [.5542.0020.0002] # ANATOLIAN HIEROGLYPH A147 -144AF ; [.5543.0020.0002] # ANATOLIAN HIEROGLYPH A148 -144B0 ; [.5544.0020.0002] # ANATOLIAN HIEROGLYPH A149 -144B1 ; [.5545.0020.0002] # ANATOLIAN HIEROGLYPH A150 -144B2 ; [.5546.0020.0002] # ANATOLIAN HIEROGLYPH A151 -144B3 ; [.5547.0020.0002] # ANATOLIAN HIEROGLYPH A152 -144B4 ; [.5548.0020.0002] # ANATOLIAN HIEROGLYPH A153 -144B5 ; [.5549.0020.0002] # ANATOLIAN HIEROGLYPH A154 -144B6 ; [.554A.0020.0002] # ANATOLIAN HIEROGLYPH A155 -144B7 ; [.554B.0020.0002] # ANATOLIAN HIEROGLYPH A156 -144B8 ; [.554C.0020.0002] # ANATOLIAN HIEROGLYPH A157 -144B9 ; [.554D.0020.0002] # ANATOLIAN HIEROGLYPH A158 -144BA ; [.554E.0020.0002] # ANATOLIAN HIEROGLYPH A159 -144BB ; [.554F.0020.0002] # ANATOLIAN HIEROGLYPH A160 -144BC ; [.5550.0020.0002] # ANATOLIAN HIEROGLYPH A161 -144BD ; [.5551.0020.0002] # ANATOLIAN HIEROGLYPH A162 -144BE ; [.5552.0020.0002] # ANATOLIAN HIEROGLYPH A163 -144BF ; [.5553.0020.0002] # ANATOLIAN HIEROGLYPH A164 -144C0 ; [.5554.0020.0002] # ANATOLIAN HIEROGLYPH A165 -144C1 ; [.5555.0020.0002] # ANATOLIAN HIEROGLYPH A166 -144C2 ; [.5556.0020.0002] # ANATOLIAN HIEROGLYPH A167 -144C3 ; [.5557.0020.0002] # ANATOLIAN HIEROGLYPH A168 -144C4 ; [.5558.0020.0002] # ANATOLIAN HIEROGLYPH A169 -144C5 ; [.5559.0020.0002] # ANATOLIAN HIEROGLYPH A170 -144C6 ; [.555A.0020.0002] # ANATOLIAN HIEROGLYPH A171 -144C7 ; [.555B.0020.0002] # ANATOLIAN HIEROGLYPH A172 -144C8 ; [.555C.0020.0002] # ANATOLIAN HIEROGLYPH A173 -144C9 ; [.555D.0020.0002] # ANATOLIAN HIEROGLYPH A174 -144CA ; [.555E.0020.0002] # ANATOLIAN HIEROGLYPH A175 -144CB ; [.555F.0020.0002] # ANATOLIAN HIEROGLYPH A176 -144CC ; [.5560.0020.0002] # ANATOLIAN HIEROGLYPH A177 -144CD ; [.5561.0020.0002] # ANATOLIAN HIEROGLYPH A178 -144CE ; [.5562.0020.0002] # ANATOLIAN HIEROGLYPH A179 -144CF ; [.5563.0020.0002] # ANATOLIAN HIEROGLYPH A180 -144D0 ; [.5564.0020.0002] # ANATOLIAN HIEROGLYPH A181 -144D1 ; [.5565.0020.0002] # ANATOLIAN HIEROGLYPH A182 -144D2 ; [.5566.0020.0002] # ANATOLIAN HIEROGLYPH A183 -144D3 ; [.5567.0020.0002] # ANATOLIAN HIEROGLYPH A184 -144D4 ; [.5568.0020.0002] # ANATOLIAN HIEROGLYPH A185 -144D5 ; [.5569.0020.0002] # ANATOLIAN HIEROGLYPH A186 -144D6 ; [.556A.0020.0002] # ANATOLIAN HIEROGLYPH A187 -144D7 ; [.556B.0020.0002] # ANATOLIAN HIEROGLYPH A188 -144D8 ; [.556C.0020.0002] # ANATOLIAN HIEROGLYPH A189 -144D9 ; [.556D.0020.0002] # ANATOLIAN HIEROGLYPH A190 -144DA ; [.556E.0020.0002] # ANATOLIAN HIEROGLYPH A191 -144DB ; [.556F.0020.0002] # ANATOLIAN HIEROGLYPH A192 -144DC ; [.5570.0020.0002] # ANATOLIAN HIEROGLYPH A193 -144DD ; [.5571.0020.0002] # ANATOLIAN HIEROGLYPH A194 -144DE ; [.5572.0020.0002] # ANATOLIAN HIEROGLYPH A195 -144DF ; [.5573.0020.0002] # ANATOLIAN HIEROGLYPH A196 -144E0 ; [.5574.0020.0002] # ANATOLIAN HIEROGLYPH A197 -144E1 ; [.5575.0020.0002] # ANATOLIAN HIEROGLYPH A198 -144E2 ; [.5576.0020.0002] # ANATOLIAN HIEROGLYPH A199 -144E3 ; [.5577.0020.0002] # ANATOLIAN HIEROGLYPH A200 -144E4 ; [.5578.0020.0002] # ANATOLIAN HIEROGLYPH A201 -144E5 ; [.5579.0020.0002] # ANATOLIAN HIEROGLYPH A202 -144E6 ; [.557A.0020.0002] # ANATOLIAN HIEROGLYPH A202A -144E7 ; [.557B.0020.0002] # ANATOLIAN HIEROGLYPH A202B -144E8 ; [.557C.0020.0002] # ANATOLIAN HIEROGLYPH A203 -144E9 ; [.557D.0020.0002] # ANATOLIAN HIEROGLYPH A204 -144EA ; [.557E.0020.0002] # ANATOLIAN HIEROGLYPH A205 -144EB ; [.557F.0020.0002] # ANATOLIAN HIEROGLYPH A206 -144EC ; [.5580.0020.0002] # ANATOLIAN HIEROGLYPH A207 -144ED ; [.5581.0020.0002] # ANATOLIAN HIEROGLYPH A207A -144EE ; [.5582.0020.0002] # ANATOLIAN HIEROGLYPH A208 -144EF ; [.5583.0020.0002] # ANATOLIAN HIEROGLYPH A209 -144F0 ; [.5584.0020.0002] # ANATOLIAN HIEROGLYPH A209A -144F1 ; [.5585.0020.0002] # ANATOLIAN HIEROGLYPH A210 -144F2 ; [.5586.0020.0002] # ANATOLIAN HIEROGLYPH A211 -144F3 ; [.5587.0020.0002] # ANATOLIAN HIEROGLYPH A212 -144F4 ; [.5588.0020.0002] # ANATOLIAN HIEROGLYPH A213 -144F5 ; [.5589.0020.0002] # ANATOLIAN HIEROGLYPH A214 -144F6 ; [.558A.0020.0002] # ANATOLIAN HIEROGLYPH A215 -144F7 ; [.558B.0020.0002] # ANATOLIAN HIEROGLYPH A215A -144F8 ; [.558C.0020.0002] # ANATOLIAN HIEROGLYPH A216 -144F9 ; [.558D.0020.0002] # ANATOLIAN HIEROGLYPH A216A -144FA ; [.558E.0020.0002] # ANATOLIAN HIEROGLYPH A217 -144FB ; [.558F.0020.0002] # ANATOLIAN HIEROGLYPH A218 -144FC ; [.5590.0020.0002] # ANATOLIAN HIEROGLYPH A219 -144FD ; [.5591.0020.0002] # ANATOLIAN HIEROGLYPH A220 -144FE ; [.5592.0020.0002] # ANATOLIAN HIEROGLYPH A221 -144FF ; [.5593.0020.0002] # ANATOLIAN HIEROGLYPH A222 -14500 ; [.5594.0020.0002] # ANATOLIAN HIEROGLYPH A223 -14501 ; [.5595.0020.0002] # ANATOLIAN HIEROGLYPH A224 -14502 ; [.5596.0020.0002] # ANATOLIAN HIEROGLYPH A225 -14503 ; [.5597.0020.0002] # ANATOLIAN HIEROGLYPH A226 -14504 ; [.5598.0020.0002] # ANATOLIAN HIEROGLYPH A227 -14505 ; [.5599.0020.0002] # ANATOLIAN HIEROGLYPH A227A -14506 ; [.559A.0020.0002] # ANATOLIAN HIEROGLYPH A228 -14507 ; [.559B.0020.0002] # ANATOLIAN HIEROGLYPH A229 -14508 ; [.559C.0020.0002] # ANATOLIAN HIEROGLYPH A230 -14509 ; [.559D.0020.0002] # ANATOLIAN HIEROGLYPH A231 -1450A ; [.559E.0020.0002] # ANATOLIAN HIEROGLYPH A232 -1450B ; [.559F.0020.0002] # ANATOLIAN HIEROGLYPH A233 -1450C ; [.55A0.0020.0002] # ANATOLIAN HIEROGLYPH A234 -1450D ; [.55A1.0020.0002] # ANATOLIAN HIEROGLYPH A235 -1450E ; [.55A2.0020.0002] # ANATOLIAN HIEROGLYPH A236 -1450F ; [.55A3.0020.0002] # ANATOLIAN HIEROGLYPH A237 -14510 ; [.55A4.0020.0002] # ANATOLIAN HIEROGLYPH A238 -14511 ; [.55A5.0020.0002] # ANATOLIAN HIEROGLYPH A239 -14512 ; [.55A6.0020.0002] # ANATOLIAN HIEROGLYPH A240 -14513 ; [.55A7.0020.0002] # ANATOLIAN HIEROGLYPH A241 -14514 ; [.55A8.0020.0002] # ANATOLIAN HIEROGLYPH A242 -14515 ; [.55A9.0020.0002] # ANATOLIAN HIEROGLYPH A243 -14516 ; [.55AA.0020.0002] # ANATOLIAN HIEROGLYPH A244 -14517 ; [.55AB.0020.0002] # ANATOLIAN HIEROGLYPH A245 -14518 ; [.55AC.0020.0002] # ANATOLIAN HIEROGLYPH A246 -14519 ; [.55AD.0020.0002] # ANATOLIAN HIEROGLYPH A247 -1451A ; [.55AE.0020.0002] # ANATOLIAN HIEROGLYPH A248 -1451B ; [.55AF.0020.0002] # ANATOLIAN HIEROGLYPH A249 -1451C ; [.55B0.0020.0002] # ANATOLIAN HIEROGLYPH A250 -1451D ; [.55B1.0020.0002] # ANATOLIAN HIEROGLYPH A251 -1451E ; [.55B2.0020.0002] # ANATOLIAN HIEROGLYPH A252 -1451F ; [.55B3.0020.0002] # ANATOLIAN HIEROGLYPH A253 -14520 ; [.55B4.0020.0002] # ANATOLIAN HIEROGLYPH A254 -14521 ; [.55B5.0020.0002] # ANATOLIAN HIEROGLYPH A255 -14522 ; [.55B6.0020.0002] # ANATOLIAN HIEROGLYPH A256 -14523 ; [.55B7.0020.0002] # ANATOLIAN HIEROGLYPH A257 -14524 ; [.55B8.0020.0002] # ANATOLIAN HIEROGLYPH A258 -14525 ; [.55B9.0020.0002] # ANATOLIAN HIEROGLYPH A259 -14526 ; [.55BA.0020.0002] # ANATOLIAN HIEROGLYPH A260 -14527 ; [.55BB.0020.0002] # ANATOLIAN HIEROGLYPH A261 -14528 ; [.55BC.0020.0002] # ANATOLIAN HIEROGLYPH A262 -14529 ; [.55BD.0020.0002] # ANATOLIAN HIEROGLYPH A263 -1452A ; [.55BE.0020.0002] # ANATOLIAN HIEROGLYPH A264 -1452B ; [.55BF.0020.0002] # ANATOLIAN HIEROGLYPH A265 -1452C ; [.55C0.0020.0002] # ANATOLIAN HIEROGLYPH A266 -1452D ; [.55C1.0020.0002] # ANATOLIAN HIEROGLYPH A267 -1452E ; [.55C2.0020.0002] # ANATOLIAN HIEROGLYPH A267A -1452F ; [.55C3.0020.0002] # ANATOLIAN HIEROGLYPH A268 -14530 ; [.55C4.0020.0002] # ANATOLIAN HIEROGLYPH A269 -14531 ; [.55C5.0020.0002] # ANATOLIAN HIEROGLYPH A270 -14532 ; [.55C6.0020.0002] # ANATOLIAN HIEROGLYPH A271 -14533 ; [.55C7.0020.0002] # ANATOLIAN HIEROGLYPH A272 -14534 ; [.55C8.0020.0002] # ANATOLIAN HIEROGLYPH A273 -14535 ; [.55C9.0020.0002] # ANATOLIAN HIEROGLYPH A274 -14536 ; [.55CA.0020.0002] # ANATOLIAN HIEROGLYPH A275 -14537 ; [.55CB.0020.0002] # ANATOLIAN HIEROGLYPH A276 -14538 ; [.55CC.0020.0002] # ANATOLIAN HIEROGLYPH A277 -14539 ; [.55CD.0020.0002] # ANATOLIAN HIEROGLYPH A278 -1453A ; [.55CE.0020.0002] # ANATOLIAN HIEROGLYPH A279 -1453B ; [.55CF.0020.0002] # ANATOLIAN HIEROGLYPH A280 -1453C ; [.55D0.0020.0002] # ANATOLIAN HIEROGLYPH A281 -1453D ; [.55D1.0020.0002] # ANATOLIAN HIEROGLYPH A282 -1453E ; [.55D2.0020.0002] # ANATOLIAN HIEROGLYPH A283 -1453F ; [.55D3.0020.0002] # ANATOLIAN HIEROGLYPH A284 -14540 ; [.55D4.0020.0002] # ANATOLIAN HIEROGLYPH A285 -14541 ; [.55D5.0020.0002] # ANATOLIAN HIEROGLYPH A286 -14542 ; [.55D6.0020.0002] # ANATOLIAN HIEROGLYPH A287 -14543 ; [.55D7.0020.0002] # ANATOLIAN HIEROGLYPH A288 -14544 ; [.55D8.0020.0002] # ANATOLIAN HIEROGLYPH A289 -14545 ; [.55D9.0020.0002] # ANATOLIAN HIEROGLYPH A289A -14546 ; [.55DA.0020.0002] # ANATOLIAN HIEROGLYPH A290 -14547 ; [.55DB.0020.0002] # ANATOLIAN HIEROGLYPH A291 -14548 ; [.55DC.0020.0002] # ANATOLIAN HIEROGLYPH A292 -14549 ; [.55DD.0020.0002] # ANATOLIAN HIEROGLYPH A293 -1454A ; [.55DE.0020.0002] # ANATOLIAN HIEROGLYPH A294 -1454B ; [.55DF.0020.0002] # ANATOLIAN HIEROGLYPH A294A -1454C ; [.55E0.0020.0002] # ANATOLIAN HIEROGLYPH A295 -1454D ; [.55E1.0020.0002] # ANATOLIAN HIEROGLYPH A296 -1454E ; [.55E2.0020.0002] # ANATOLIAN HIEROGLYPH A297 -1454F ; [.55E3.0020.0002] # ANATOLIAN HIEROGLYPH A298 -14550 ; [.55E4.0020.0002] # ANATOLIAN HIEROGLYPH A299 -14551 ; [.55E5.0020.0002] # ANATOLIAN HIEROGLYPH A299A -14552 ; [.55E6.0020.0002] # ANATOLIAN HIEROGLYPH A300 -14553 ; [.55E7.0020.0002] # ANATOLIAN HIEROGLYPH A301 -14554 ; [.55E8.0020.0002] # ANATOLIAN HIEROGLYPH A302 -14555 ; [.55E9.0020.0002] # ANATOLIAN HIEROGLYPH A303 -14556 ; [.55EA.0020.0002] # ANATOLIAN HIEROGLYPH A304 -14557 ; [.55EB.0020.0002] # ANATOLIAN HIEROGLYPH A305 -14558 ; [.55EC.0020.0002] # ANATOLIAN HIEROGLYPH A306 -14559 ; [.55ED.0020.0002] # ANATOLIAN HIEROGLYPH A307 -1455A ; [.55EE.0020.0002] # ANATOLIAN HIEROGLYPH A308 -1455B ; [.55EF.0020.0002] # ANATOLIAN HIEROGLYPH A309 -1455C ; [.55F0.0020.0002] # ANATOLIAN HIEROGLYPH A309A -1455D ; [.55F1.0020.0002] # ANATOLIAN HIEROGLYPH A310 -1455E ; [.55F2.0020.0002] # ANATOLIAN HIEROGLYPH A311 -1455F ; [.55F3.0020.0002] # ANATOLIAN HIEROGLYPH A312 -14560 ; [.55F4.0020.0002] # ANATOLIAN HIEROGLYPH A313 -14561 ; [.55F5.0020.0002] # ANATOLIAN HIEROGLYPH A314 -14562 ; [.55F6.0020.0002] # ANATOLIAN HIEROGLYPH A315 -14563 ; [.55F7.0020.0002] # ANATOLIAN HIEROGLYPH A316 -14564 ; [.55F8.0020.0002] # ANATOLIAN HIEROGLYPH A317 -14565 ; [.55F9.0020.0002] # ANATOLIAN HIEROGLYPH A318 -14566 ; [.55FA.0020.0002] # ANATOLIAN HIEROGLYPH A319 -14567 ; [.55FB.0020.0002] # ANATOLIAN HIEROGLYPH A320 -14568 ; [.55FC.0020.0002] # ANATOLIAN HIEROGLYPH A321 -14569 ; [.55FD.0020.0002] # ANATOLIAN HIEROGLYPH A322 -1456A ; [.55FE.0020.0002] # ANATOLIAN HIEROGLYPH A323 -1456B ; [.55FF.0020.0002] # ANATOLIAN HIEROGLYPH A324 -1456C ; [.5600.0020.0002] # ANATOLIAN HIEROGLYPH A325 -1456D ; [.5601.0020.0002] # ANATOLIAN HIEROGLYPH A326 -1456E ; [.5602.0020.0002] # ANATOLIAN HIEROGLYPH A327 -1456F ; [.5603.0020.0002] # ANATOLIAN HIEROGLYPH A328 -14570 ; [.5604.0020.0002] # ANATOLIAN HIEROGLYPH A329 -14571 ; [.5605.0020.0002] # ANATOLIAN HIEROGLYPH A329A -14572 ; [.5606.0020.0002] # ANATOLIAN HIEROGLYPH A330 -14573 ; [.5607.0020.0002] # ANATOLIAN HIEROGLYPH A331 -14574 ; [.5608.0020.0002] # ANATOLIAN HIEROGLYPH A332A -14575 ; [.5609.0020.0002] # ANATOLIAN HIEROGLYPH A332B -14576 ; [.560A.0020.0002] # ANATOLIAN HIEROGLYPH A332C -14577 ; [.560B.0020.0002] # ANATOLIAN HIEROGLYPH A333 -14578 ; [.560C.0020.0002] # ANATOLIAN HIEROGLYPH A334 -14579 ; [.560D.0020.0002] # ANATOLIAN HIEROGLYPH A335 -1457A ; [.560E.0020.0002] # ANATOLIAN HIEROGLYPH A336 -1457B ; [.560F.0020.0002] # ANATOLIAN HIEROGLYPH A336A -1457C ; [.5610.0020.0002] # ANATOLIAN HIEROGLYPH A336B -1457D ; [.5611.0020.0002] # ANATOLIAN HIEROGLYPH A336C -1457E ; [.5612.0020.0002] # ANATOLIAN HIEROGLYPH A337 -1457F ; [.5613.0020.0002] # ANATOLIAN HIEROGLYPH A338 -14580 ; [.5614.0020.0002] # ANATOLIAN HIEROGLYPH A339 -14581 ; [.5615.0020.0002] # ANATOLIAN HIEROGLYPH A340 -14582 ; [.5616.0020.0002] # ANATOLIAN HIEROGLYPH A341 -14583 ; [.5617.0020.0002] # ANATOLIAN HIEROGLYPH A342 -14584 ; [.5618.0020.0002] # ANATOLIAN HIEROGLYPH A343 -14585 ; [.5619.0020.0002] # ANATOLIAN HIEROGLYPH A344 -14586 ; [.561A.0020.0002] # ANATOLIAN HIEROGLYPH A345 -14587 ; [.561B.0020.0002] # ANATOLIAN HIEROGLYPH A346 -14588 ; [.561C.0020.0002] # ANATOLIAN HIEROGLYPH A347 -14589 ; [.561D.0020.0002] # ANATOLIAN HIEROGLYPH A348 -1458A ; [.561E.0020.0002] # ANATOLIAN HIEROGLYPH A349 -1458B ; [.561F.0020.0002] # ANATOLIAN HIEROGLYPH A350 -1458C ; [.5620.0020.0002] # ANATOLIAN HIEROGLYPH A351 -1458D ; [.5621.0020.0002] # ANATOLIAN HIEROGLYPH A352 -1458E ; [.5622.0020.0002] # ANATOLIAN HIEROGLYPH A353 -1458F ; [.5623.0020.0002] # ANATOLIAN HIEROGLYPH A354 -14590 ; [.5624.0020.0002] # ANATOLIAN HIEROGLYPH A355 -14591 ; [.5625.0020.0002] # ANATOLIAN HIEROGLYPH A356 -14592 ; [.5626.0020.0002] # ANATOLIAN HIEROGLYPH A357 -14593 ; [.5627.0020.0002] # ANATOLIAN HIEROGLYPH A358 -14594 ; [.5628.0020.0002] # ANATOLIAN HIEROGLYPH A359 -14595 ; [.5629.0020.0002] # ANATOLIAN HIEROGLYPH A359A -14596 ; [.562A.0020.0002] # ANATOLIAN HIEROGLYPH A360 -14597 ; [.562B.0020.0002] # ANATOLIAN HIEROGLYPH A361 -14598 ; [.562C.0020.0002] # ANATOLIAN HIEROGLYPH A362 -14599 ; [.562D.0020.0002] # ANATOLIAN HIEROGLYPH A363 -1459A ; [.562E.0020.0002] # ANATOLIAN HIEROGLYPH A364 -1459B ; [.562F.0020.0002] # ANATOLIAN HIEROGLYPH A364A -1459C ; [.5630.0020.0002] # ANATOLIAN HIEROGLYPH A365 -1459D ; [.5631.0020.0002] # ANATOLIAN HIEROGLYPH A366 -1459E ; [.5632.0020.0002] # ANATOLIAN HIEROGLYPH A367 -1459F ; [.5633.0020.0002] # ANATOLIAN HIEROGLYPH A368 -145A0 ; [.5634.0020.0002] # ANATOLIAN HIEROGLYPH A368A -145A1 ; [.5635.0020.0002] # ANATOLIAN HIEROGLYPH A369 -145A2 ; [.5636.0020.0002] # ANATOLIAN HIEROGLYPH A370 -145A3 ; [.5637.0020.0002] # ANATOLIAN HIEROGLYPH A371 -145A4 ; [.5638.0020.0002] # ANATOLIAN HIEROGLYPH A371A -145A5 ; [.5639.0020.0002] # ANATOLIAN HIEROGLYPH A372 -145A6 ; [.563A.0020.0002] # ANATOLIAN HIEROGLYPH A373 -145A7 ; [.563B.0020.0002] # ANATOLIAN HIEROGLYPH A374 -145A8 ; [.563C.0020.0002] # ANATOLIAN HIEROGLYPH A375 -145A9 ; [.563D.0020.0002] # ANATOLIAN HIEROGLYPH A376 -145AA ; [.563E.0020.0002] # ANATOLIAN HIEROGLYPH A377 -145AB ; [.563F.0020.0002] # ANATOLIAN HIEROGLYPH A378 -145AC ; [.5640.0020.0002] # ANATOLIAN HIEROGLYPH A379 -145AD ; [.5641.0020.0002] # ANATOLIAN HIEROGLYPH A380 -145AE ; [.5642.0020.0002] # ANATOLIAN HIEROGLYPH A381 -145AF ; [.5643.0020.0002] # ANATOLIAN HIEROGLYPH A381A -145B0 ; [.5644.0020.0002] # ANATOLIAN HIEROGLYPH A382 -145B1 ; [.5645.0020.0002] # ANATOLIAN HIEROGLYPH A383 RA OR RI -145B2 ; [.5646.0020.0002] # ANATOLIAN HIEROGLYPH A383A -145B3 ; [.5647.0020.0002] # ANATOLIAN HIEROGLYPH A384 -145B4 ; [.5648.0020.0002] # ANATOLIAN HIEROGLYPH A385 -145B5 ; [.5649.0020.0002] # ANATOLIAN HIEROGLYPH A386 -145B6 ; [.564A.0020.0002] # ANATOLIAN HIEROGLYPH A386A -145B7 ; [.564B.0020.0002] # ANATOLIAN HIEROGLYPH A387 -145B8 ; [.564C.0020.0002] # ANATOLIAN HIEROGLYPH A388 -145B9 ; [.564D.0020.0002] # ANATOLIAN HIEROGLYPH A389 -145BA ; [.564E.0020.0002] # ANATOLIAN HIEROGLYPH A390 -145BB ; [.564F.0020.0002] # ANATOLIAN HIEROGLYPH A391 -145BC ; [.5650.0020.0002] # ANATOLIAN HIEROGLYPH A392 -145BD ; [.5651.0020.0002] # ANATOLIAN HIEROGLYPH A393 EIGHT -145BE ; [.5652.0020.0002] # ANATOLIAN HIEROGLYPH A394 -145BF ; [.5653.0020.0002] # ANATOLIAN HIEROGLYPH A395 -145C0 ; [.5654.0020.0002] # ANATOLIAN HIEROGLYPH A396 -145C1 ; [.5655.0020.0002] # ANATOLIAN HIEROGLYPH A397 -145C2 ; [.5656.0020.0002] # ANATOLIAN HIEROGLYPH A398 -145C3 ; [.5657.0020.0002] # ANATOLIAN HIEROGLYPH A399 -145C4 ; [.5658.0020.0002] # ANATOLIAN HIEROGLYPH A400 -145C5 ; [.5659.0020.0002] # ANATOLIAN HIEROGLYPH A401 -145C6 ; [.565A.0020.0002] # ANATOLIAN HIEROGLYPH A402 -145C7 ; [.565B.0020.0002] # ANATOLIAN HIEROGLYPH A403 -145C8 ; [.565C.0020.0002] # ANATOLIAN HIEROGLYPH A404 -145C9 ; [.565D.0020.0002] # ANATOLIAN HIEROGLYPH A405 -145CA ; [.565E.0020.0002] # ANATOLIAN HIEROGLYPH A406 -145CB ; [.565F.0020.0002] # ANATOLIAN HIEROGLYPH A407 -145CC ; [.5660.0020.0002] # ANATOLIAN HIEROGLYPH A408 -145CD ; [.5661.0020.0002] # ANATOLIAN HIEROGLYPH A409 -145CE ; [.5662.0020.0002] # ANATOLIAN HIEROGLYPH A410 BEGIN LOGOGRAM MARK -145CF ; [.5663.0020.0002] # ANATOLIAN HIEROGLYPH A410A END LOGOGRAM MARK -145D0 ; [.5664.0020.0002] # ANATOLIAN HIEROGLYPH A411 -145D1 ; [.5665.0020.0002] # ANATOLIAN HIEROGLYPH A412 -145D2 ; [.5666.0020.0002] # ANATOLIAN HIEROGLYPH A413 -145D3 ; [.5667.0020.0002] # ANATOLIAN HIEROGLYPH A414 -145D4 ; [.5668.0020.0002] # ANATOLIAN HIEROGLYPH A415 -145D5 ; [.5669.0020.0002] # ANATOLIAN HIEROGLYPH A416 -145D6 ; [.566A.0020.0002] # ANATOLIAN HIEROGLYPH A417 -145D7 ; [.566B.0020.0002] # ANATOLIAN HIEROGLYPH A418 -145D8 ; [.566C.0020.0002] # ANATOLIAN HIEROGLYPH A419 -145D9 ; [.566D.0020.0002] # ANATOLIAN HIEROGLYPH A420 -145DA ; [.566E.0020.0002] # ANATOLIAN HIEROGLYPH A421 -145DB ; [.566F.0020.0002] # ANATOLIAN HIEROGLYPH A422 -145DC ; [.5670.0020.0002] # ANATOLIAN HIEROGLYPH A423 -145DD ; [.5671.0020.0002] # ANATOLIAN HIEROGLYPH A424 -145DE ; [.5672.0020.0002] # ANATOLIAN HIEROGLYPH A425 -145DF ; [.5673.0020.0002] # ANATOLIAN HIEROGLYPH A426 -145E0 ; [.5674.0020.0002] # ANATOLIAN HIEROGLYPH A427 -145E1 ; [.5675.0020.0002] # ANATOLIAN HIEROGLYPH A428 -145E2 ; [.5676.0020.0002] # ANATOLIAN HIEROGLYPH A429 -145E3 ; [.5677.0020.0002] # ANATOLIAN HIEROGLYPH A430 -145E4 ; [.5678.0020.0002] # ANATOLIAN HIEROGLYPH A431 -145E5 ; [.5679.0020.0002] # ANATOLIAN HIEROGLYPH A432 -145E6 ; [.567A.0020.0002] # ANATOLIAN HIEROGLYPH A433 -145E7 ; [.567B.0020.0002] # ANATOLIAN HIEROGLYPH A434 -145E8 ; [.567C.0020.0002] # ANATOLIAN HIEROGLYPH A435 -145E9 ; [.567D.0020.0002] # ANATOLIAN HIEROGLYPH A436 -145EA ; [.567E.0020.0002] # ANATOLIAN HIEROGLYPH A437 -145EB ; [.567F.0020.0002] # ANATOLIAN HIEROGLYPH A438 -145EC ; [.5680.0020.0002] # ANATOLIAN HIEROGLYPH A439 -145ED ; [.5681.0020.0002] # ANATOLIAN HIEROGLYPH A440 -145EE ; [.5682.0020.0002] # ANATOLIAN HIEROGLYPH A441 -145EF ; [.5683.0020.0002] # ANATOLIAN HIEROGLYPH A442 -145F0 ; [.5684.0020.0002] # ANATOLIAN HIEROGLYPH A443 -145F1 ; [.5685.0020.0002] # ANATOLIAN HIEROGLYPH A444 -145F2 ; [.5686.0020.0002] # ANATOLIAN HIEROGLYPH A445 -145F3 ; [.5687.0020.0002] # ANATOLIAN HIEROGLYPH A446 -145F4 ; [.5688.0020.0002] # ANATOLIAN HIEROGLYPH A447 -145F5 ; [.5689.0020.0002] # ANATOLIAN HIEROGLYPH A448 -145F6 ; [.568A.0020.0002] # ANATOLIAN HIEROGLYPH A449 -145F7 ; [.568B.0020.0002] # ANATOLIAN HIEROGLYPH A450 -145F8 ; [.568C.0020.0002] # ANATOLIAN HIEROGLYPH A450A -145F9 ; [.568D.0020.0002] # ANATOLIAN HIEROGLYPH A451 -145FA ; [.568E.0020.0002] # ANATOLIAN HIEROGLYPH A452 -145FB ; [.568F.0020.0002] # ANATOLIAN HIEROGLYPH A453 -145FC ; [.5690.0020.0002] # ANATOLIAN HIEROGLYPH A454 -145FD ; [.5691.0020.0002] # ANATOLIAN HIEROGLYPH A455 -145FE ; [.5692.0020.0002] # ANATOLIAN HIEROGLYPH A456 -145FF ; [.5693.0020.0002] # ANATOLIAN HIEROGLYPH A457 -14600 ; [.5694.0020.0002] # ANATOLIAN HIEROGLYPH A457A -14601 ; [.5695.0020.0002] # ANATOLIAN HIEROGLYPH A458 -14602 ; [.5696.0020.0002] # ANATOLIAN HIEROGLYPH A459 -14603 ; [.5697.0020.0002] # ANATOLIAN HIEROGLYPH A460 -14604 ; [.5698.0020.0002] # ANATOLIAN HIEROGLYPH A461 -14605 ; [.5699.0020.0002] # ANATOLIAN HIEROGLYPH A462 -14606 ; [.569A.0020.0002] # ANATOLIAN HIEROGLYPH A463 -14607 ; [.569B.0020.0002] # ANATOLIAN HIEROGLYPH A464 -14608 ; [.569C.0020.0002] # ANATOLIAN HIEROGLYPH A465 -14609 ; [.569D.0020.0002] # ANATOLIAN HIEROGLYPH A466 -1460A ; [.569E.0020.0002] # ANATOLIAN HIEROGLYPH A467 -1460B ; [.569F.0020.0002] # ANATOLIAN HIEROGLYPH A468 -1460C ; [.56A0.0020.0002] # ANATOLIAN HIEROGLYPH A469 -1460D ; [.56A1.0020.0002] # ANATOLIAN HIEROGLYPH A470 -1460E ; [.56A2.0020.0002] # ANATOLIAN HIEROGLYPH A471 -1460F ; [.56A3.0020.0002] # ANATOLIAN HIEROGLYPH A472 -14610 ; [.56A4.0020.0002] # ANATOLIAN HIEROGLYPH A473 -14611 ; [.56A5.0020.0002] # ANATOLIAN HIEROGLYPH A474 -14612 ; [.56A6.0020.0002] # ANATOLIAN HIEROGLYPH A475 -14613 ; [.56A7.0020.0002] # ANATOLIAN HIEROGLYPH A476 -14614 ; [.56A8.0020.0002] # ANATOLIAN HIEROGLYPH A477 -14615 ; [.56A9.0020.0002] # ANATOLIAN HIEROGLYPH A478 -14616 ; [.56AA.0020.0002] # ANATOLIAN HIEROGLYPH A479 -14617 ; [.56AB.0020.0002] # ANATOLIAN HIEROGLYPH A480 -14618 ; [.56AC.0020.0002] # ANATOLIAN HIEROGLYPH A481 -14619 ; [.56AD.0020.0002] # ANATOLIAN HIEROGLYPH A482 -1461A ; [.56AE.0020.0002] # ANATOLIAN HIEROGLYPH A483 -1461B ; [.56AF.0020.0002] # ANATOLIAN HIEROGLYPH A484 -1461C ; [.56B0.0020.0002] # ANATOLIAN HIEROGLYPH A485 -1461D ; [.56B1.0020.0002] # ANATOLIAN HIEROGLYPH A486 -1461E ; [.56B2.0020.0002] # ANATOLIAN HIEROGLYPH A487 -1461F ; [.56B3.0020.0002] # ANATOLIAN HIEROGLYPH A488 -14620 ; [.56B4.0020.0002] # ANATOLIAN HIEROGLYPH A489 -14621 ; [.56B5.0020.0002] # ANATOLIAN HIEROGLYPH A490 -14622 ; [.56B6.0020.0002] # ANATOLIAN HIEROGLYPH A491 -14623 ; [.56B7.0020.0002] # ANATOLIAN HIEROGLYPH A492 -14624 ; [.56B8.0020.0002] # ANATOLIAN HIEROGLYPH A493 -14625 ; [.56B9.0020.0002] # ANATOLIAN HIEROGLYPH A494 -14626 ; [.56BA.0020.0002] # ANATOLIAN HIEROGLYPH A495 -14627 ; [.56BB.0020.0002] # ANATOLIAN HIEROGLYPH A496 -14628 ; [.56BC.0020.0002] # ANATOLIAN HIEROGLYPH A497 -14629 ; [.56BD.0020.0002] # ANATOLIAN HIEROGLYPH A501 -1462A ; [.56BE.0020.0002] # ANATOLIAN HIEROGLYPH A502 -1462B ; [.56BF.0020.0002] # ANATOLIAN HIEROGLYPH A503 -1462C ; [.56C0.0020.0002] # ANATOLIAN HIEROGLYPH A504 -1462D ; [.56C1.0020.0002] # ANATOLIAN HIEROGLYPH A505 -1462E ; [.56C2.0020.0002] # ANATOLIAN HIEROGLYPH A506 -1462F ; [.56C3.0020.0002] # ANATOLIAN HIEROGLYPH A507 -14630 ; [.56C4.0020.0002] # ANATOLIAN HIEROGLYPH A508 -14631 ; [.56C5.0020.0002] # ANATOLIAN HIEROGLYPH A509 -14632 ; [.56C6.0020.0002] # ANATOLIAN HIEROGLYPH A510 -14633 ; [.56C7.0020.0002] # ANATOLIAN HIEROGLYPH A511 -14634 ; [.56C8.0020.0002] # ANATOLIAN HIEROGLYPH A512 -14635 ; [.56C9.0020.0002] # ANATOLIAN HIEROGLYPH A513 -14636 ; [.56CA.0020.0002] # ANATOLIAN HIEROGLYPH A514 -14637 ; [.56CB.0020.0002] # ANATOLIAN HIEROGLYPH A515 -14638 ; [.56CC.0020.0002] # ANATOLIAN HIEROGLYPH A516 -14639 ; [.56CD.0020.0002] # ANATOLIAN HIEROGLYPH A517 -1463A ; [.56CE.0020.0002] # ANATOLIAN HIEROGLYPH A518 -1463B ; [.56CF.0020.0002] # ANATOLIAN HIEROGLYPH A519 -1463C ; [.56D0.0020.0002] # ANATOLIAN HIEROGLYPH A520 -1463D ; [.56D1.0020.0002] # ANATOLIAN HIEROGLYPH A521 -1463E ; [.56D2.0020.0002] # ANATOLIAN HIEROGLYPH A522 -1463F ; [.56D3.0020.0002] # ANATOLIAN HIEROGLYPH A523 -14640 ; [.56D4.0020.0002] # ANATOLIAN HIEROGLYPH A524 -14641 ; [.56D5.0020.0002] # ANATOLIAN HIEROGLYPH A525 -14642 ; [.56D6.0020.0002] # ANATOLIAN HIEROGLYPH A526 -14643 ; [.56D7.0020.0002] # ANATOLIAN HIEROGLYPH A527 -14644 ; [.56D8.0020.0002] # ANATOLIAN HIEROGLYPH A528 -14645 ; [.56D9.0020.0002] # ANATOLIAN HIEROGLYPH A529 -14646 ; [.56DA.0020.0002] # ANATOLIAN HIEROGLYPH A530 +11D96 ; [.0000.00C5.0002] # GUNJALA GONDI SIGN VISARGA +09FE ; [.0000.00C6.0002] # BENGALI SANDHI MARK +111C9 ; [.0000.00C6.0002] # SHARADA SANDHI MARK +1145E ; [.0000.00C6.0002] # NEWA SANDHI MARK +0A70 ; [.0000.00C7.0002] # GURMUKHI TIPPI +0A71 ; [.0000.00C8.0002] # GURMUKHI ADDAK +1B03 ; [.0000.00C9.0002] # BALINESE SIGN SURANG +A982 ; [.0000.00CA.0002] # JAVANESE SIGN LAYAR +1B81 ; [.0000.00CB.0002] # SUNDANESE SIGN PANGLAYAR +ABEC ; [.0000.00CC.0002] # MEETEI MAYEK LUM IYEK +10A38 ; [.0000.00CD.0002] # KHAROSHTHI SIGN BAR ABOVE +10A39 ; [.0000.00CE.0002] # KHAROSHTHI SIGN CAUDA +10A3A ; [.0000.00CF.0002] # KHAROSHTHI SIGN DOT BELOW +111CB ; [.0000.00D0.0002] # SHARADA VOWEL MODIFIER MARK +111CC ; [.0000.00D1.0002] # SHARADA EXTRA SHORT VOWEL MARK +11A98 ; [.0000.00D2.0002] # SOYOMBO GEMINATION MARK +0E4E ; [.0000.00D3.0002] # THAI CHARACTER YAMAKKAN +0E47 ; [.0000.00D4.0002] # THAI CHARACTER MAITAIKHU +0E48 ; [.0000.00D5.0002] # THAI CHARACTER MAI EK +0E49 ; [.0000.00D6.0002] # THAI CHARACTER MAI THO +0E4A ; [.0000.00D7.0002] # THAI CHARACTER MAI TRI +0E4B ; [.0000.00D8.0002] # THAI CHARACTER MAI CHATTAWA +0E4C ; [.0000.00D9.0002] # THAI CHARACTER THANTHAKHAT +0E4D ; [.0000.00DA.0002] # THAI CHARACTER NIKHAHIT +0EC8 ; [.0000.00DB.0002] # LAO TONE MAI EK +0EC9 ; [.0000.00DC.0002] # LAO TONE MAI THO +0ECA ; [.0000.00DD.0002] # LAO TONE MAI TI +0ECB ; [.0000.00DE.0002] # LAO TONE MAI CATAWA +0ECC ; [.0000.00DF.0002] # LAO CANCELLATION MARK +0ECD ; [.0000.00E0.0002] # LAO NIGGAHITA +AABF ; [.0000.00E1.0002] # TAI VIET TONE MAI EK +AAC1 ; [.0000.00E2.0002] # TAI VIET TONE MAI THO +0F39 ; [.0000.00E3.0002] # TIBETAN MARK TSA -PHRU +A92B ; [.0000.00E4.0002] # KAYAH LI TONE PLOPHU +A92C ; [.0000.00E5.0002] # KAYAH LI TONE CALYA +A92D ; [.0000.00E6.0002] # KAYAH LI TONE CALYA PLOPHU +1037 ; [.0000.00E7.0002] # MYANMAR SIGN DOT BELOW +17C8 ; [.0000.00E8.0002] # KHMER SIGN YUUKALEAPINTU +17C9 ; [.0000.00E9.0002] # KHMER SIGN MUUSIKATOAN +17CA ; [.0000.00EA.0002] # KHMER SIGN TRIISAP +1A75 ; [.0000.00EB.0002] # TAI THAM SIGN TONE-1 +1A76 ; [.0000.00EC.0002] # TAI THAM SIGN TONE-2 +1A77 ; [.0000.00ED.0002] # TAI THAM SIGN KHUEN TONE-3 +1A78 ; [.0000.00EE.0002] # TAI THAM SIGN KHUEN TONE-4 +1A79 ; [.0000.00EF.0002] # TAI THAM SIGN KHUEN TONE-5 +1A7A ; [.0000.00F0.0002] # TAI THAM SIGN RA HAAM +1A7B ; [.0000.00F1.0002] # TAI THAM SIGN MAI SAM +1A7C ; [.0000.00F2.0002] # TAI THAM SIGN KHUEN-LUE KARAN +1939 ; [.0000.00F3.0002] # LIMBU SIGN MUKPHRENG +193A ; [.0000.00F4.0002] # LIMBU SIGN KEMPHRENG +193B ; [.0000.00F5.0002] # LIMBU SIGN SA-I +16B30 ; [.0000.00F6.0002] # PAHAWH HMONG MARK CIM TUB +1E131 ; [.0000.00F6.0002] # NYIAKENG PUACHUE HMONG TONE-M +16B31 ; [.0000.00F7.0002] # PAHAWH HMONG MARK CIM SO +1E136 ; [.0000.00F7.0002] # NYIAKENG PUACHUE HMONG TONE-D +16B32 ; [.0000.00F8.0002] # PAHAWH HMONG MARK CIM KES +1E132 ; [.0000.00F8.0002] # NYIAKENG PUACHUE HMONG TONE-J +16B33 ; [.0000.00F9.0002] # PAHAWH HMONG MARK CIM KHAV +1E133 ; [.0000.00F9.0002] # NYIAKENG PUACHUE HMONG TONE-V +16B34 ; [.0000.00FA.0002] # PAHAWH HMONG MARK CIM SUAM +1E130 ; [.0000.00FA.0002] # NYIAKENG PUACHUE HMONG TONE-B +16B35 ; [.0000.00FB.0002] # PAHAWH HMONG MARK CIM HOM +1E134 ; [.0000.00FB.0002] # NYIAKENG PUACHUE HMONG TONE-S +16B36 ; [.0000.00FC.0002] # PAHAWH HMONG MARK CIM TAUM +1E135 ; [.0000.00FC.0002] # NYIAKENG PUACHUE HMONG TONE-G +1E2EC ; [.0000.00FD.0002] # WANCHO TONE TUP +1E2ED ; [.0000.00FE.0002] # WANCHO TONE TUPNI +1E2EE ; [.0000.00FF.0002] # WANCHO TONE KOI +1E2EF ; [.0000.0100.0002] # WANCHO TONE KOINI +302A ; [.0000.0101.0002] # IDEOGRAPHIC LEVEL TONE MARK +302B ; [.0000.0102.0002] # IDEOGRAPHIC RISING TONE MARK +302C ; [.0000.0103.0002] # IDEOGRAPHIC DEPARTING TONE MARK +302D ; [.0000.0104.0002] # IDEOGRAPHIC ENTERING TONE MARK +302E ; [.0000.0105.0002] # HANGUL SINGLE DOT TONE MARK +302F ; [.0000.0106.0002] # HANGUL DOUBLE DOT TONE MARK +16FF0 ; [.0000.0107.0002] # VIETNAMESE ALTERNATE READING MARK CA +16FF1 ; [.0000.0108.0002] # VIETNAMESE ALTERNATE READING MARK NHAY +20D0 ; [.0000.0109.0002] # COMBINING LEFT HARPOON ABOVE +20D1 ; [.0000.010A.0002] # COMBINING RIGHT HARPOON ABOVE +20D2 ; [.0000.010B.0002] # COMBINING LONG VERTICAL LINE OVERLAY +20D3 ; [.0000.010B.0002] # COMBINING SHORT VERTICAL LINE OVERLAY +20D4 ; [.0000.010C.0002] # COMBINING ANTICLOCKWISE ARROW ABOVE +20D5 ; [.0000.010D.0002] # COMBINING CLOCKWISE ARROW ABOVE +20D6 ; [.0000.010E.0002] # COMBINING LEFT ARROW ABOVE +20D7 ; [.0000.010F.0002] # COMBINING RIGHT ARROW ABOVE +20DB ; [.0000.0110.0002] # COMBINING THREE DOTS ABOVE +20DC ; [.0000.0111.0002] # COMBINING FOUR DOTS ABOVE +20E1 ; [.0000.0112.0002] # COMBINING LEFT RIGHT ARROW ABOVE +20E6 ; [.0000.0113.0002] # COMBINING DOUBLE VERTICAL STROKE OVERLAY +20E7 ; [.0000.0114.0002] # COMBINING ANNUITY SYMBOL +20E8 ; [.0000.0115.0002] # COMBINING TRIPLE UNDERDOT +20E9 ; [.0000.0116.0002] # COMBINING WIDE BRIDGE ABOVE +101FD ; [.0000.0117.0002] # PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE +02D0 ; [.1F46.0020.0002] # MODIFIER LETTER TRIANGULAR COLON +02D1 ; [.1F47.0020.0002] # MODIFIER LETTER HALF TRIANGULAR COLON +0971 ; [.1F48.0020.0002] # DEVANAGARI SIGN HIGH SPACING DOT +0E46 ; [.1F49.0020.0002] # THAI CHARACTER MAIYAMOK +0EC6 ; [.1F4A.0020.0002] # LAO KO LA +17D7 ; [.1F4B.0020.0002] # KHMER SIGN LEK TOO +1AA7 ; [.1F4C.0020.0002] # TAI THAM SIGN MAI YAMOK +A9CF ; [.1F4D.0020.0002] # JAVANESE PANGRANGKEP +A9E6 ; [.1F4E.0020.0002] # MYANMAR MODIFIER LETTER SHAN REDUPLICATION +AA70 ; [.1F4F.0020.0002] # MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION +AADD ; [.1F50.0020.0002] # TAI VIET SYMBOL SAM +AAF3 ; [.1F51.0020.0002] # MEETEI MAYEK SYLLABLE REPETITION MARK +AAF4 ; [.1F52.0020.0002] # MEETEI MAYEK WORD REPETITION MARK +16B42 ; [.1F53.0020.0002] # PAHAWH HMONG SIGN VOS NRUA +16B43 ; [.1F54.0020.0002] # PAHAWH HMONG SIGN IB YAM +1E13C ; [.1F55.0020.0002] # NYIAKENG PUACHUE HMONG SIGN XW XW +1E13D ; [.1F56.0020.0002] # NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER +3005 ; [.1F57.0020.0002] # IDEOGRAPHIC ITERATION MARK +303B ; [.1F58.0020.0002] # VERTICAL IDEOGRAPHIC ITERATION MARK +16FE0 ; [.1F59.0020.0002] # TANGUT ITERATION MARK +16FE1 ; [.1F5A.0020.0002] # NUSHU ITERATION MARK +16FE3 ; [.1F5B.0020.0002] # OLD CHINESE ITERATION MARK +3031 ; [.1F5C.0020.0002] # VERTICAL KANA REPEAT MARK +3032 ; [.1F5C.0020.0002][.0000.0037.0002] # VERTICAL KANA REPEAT WITH VOICED SOUND MARK +3033 ; [.1F5D.0020.0002] # VERTICAL KANA REPEAT MARK UPPER HALF +3034 ; [.1F5D.0020.0002][.0000.0037.0002] # VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF +3035 ; [.1F5E.0020.0002] # VERTICAL KANA REPEAT MARK LOWER HALF +309D ; [.1F5F.0020.0002] # HIRAGANA ITERATION MARK +309E ; [.1F5F.0020.0002][.0000.0037.0002] # HIRAGANA VOICED ITERATION MARK +30FC ; [.1F60.0020.0002] # KATAKANA-HIRAGANA PROLONGED SOUND MARK +FF70 ; [.1F60.0020.0012] # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK +30FD ; [.1F61.0020.0002] # KATAKANA ITERATION MARK +30FE ; [.1F61.0020.0002][.0000.0037.0002] # KATAKANA VOICED ITERATION MARK +00A4 ; [.1F62.0020.0002] # CURRENCY SIGN +00A2 ; [.1F63.0020.0002] # CENT SIGN +FFE0 ; [.1F63.0020.0003] # FULLWIDTH CENT SIGN +0024 ; [.1F64.0020.0002] # DOLLAR SIGN +FF04 ; [.1F64.0020.0003] # FULLWIDTH DOLLAR SIGN +FE69 ; [.1F64.0020.000F] # SMALL DOLLAR SIGN +00A3 ; [.1F65.0020.0002] # POUND SIGN +FFE1 ; [.1F65.0020.0003] # FULLWIDTH POUND SIGN +00A5 ; [.1F66.0020.0002] # YEN SIGN +FFE5 ; [.1F66.0020.0003] # FULLWIDTH YEN SIGN +058F ; [.1F67.0020.0002] # ARMENIAN DRAM SIGN +060B ; [.1F68.0020.0002] # AFGHANI SIGN +07FE ; [.1F69.0020.0002] # NKO DOROME SIGN +07FF ; [.1F6A.0020.0002] # NKO TAMAN SIGN +09F2 ; [.1F6B.0020.0002] # BENGALI RUPEE MARK +09F3 ; [.1F6C.0020.0002] # BENGALI RUPEE SIGN +09FB ; [.1F6D.0020.0002] # BENGALI GANDA MARK +0AF1 ; [.1F6E.0020.0002] # GUJARATI RUPEE SIGN +A838 ; [.1F6F.0020.0002] # NORTH INDIC RUPEE MARK +0BF9 ; [.1F70.0020.0002] # TAMIL RUPEE SIGN +11FDD ; [.1F71.0020.0002] # TAMIL SIGN KAACU +11FDE ; [.1F72.0020.0002] # TAMIL SIGN PANAM +11FDF ; [.1F73.0020.0002] # TAMIL SIGN PON +11FE0 ; [.1F74.0020.0002] # TAMIL SIGN VARAAKAN +0E3F ; [.1F75.0020.0002] # THAI CURRENCY SYMBOL BAHT +17DB ; [.1F76.0020.0002] # KHMER CURRENCY SYMBOL RIEL +1E2FF ; [.1F77.0020.0002] # WANCHO NGUN SIGN +20A0 ; [.1F78.0020.0002] # EURO-CURRENCY SIGN +20A1 ; [.1F79.0020.0002] # COLON SIGN +20A2 ; [.1F7A.0020.0002] # CRUZEIRO SIGN +20A3 ; [.1F7B.0020.0002] # FRENCH FRANC SIGN +20A4 ; [.1F7C.0020.0002] # LIRA SIGN +20A5 ; [.1F7D.0020.0002] # MILL SIGN +20A6 ; [.1F7E.0020.0002] # NAIRA SIGN +20A7 ; [.1F7F.0020.0002] # PESETA SIGN +20A9 ; [.1F80.0020.0002] # WON SIGN +FFE6 ; [.1F80.0020.0003] # FULLWIDTH WON SIGN +20AA ; [.1F81.0020.0002] # NEW SHEQEL SIGN +20AB ; [.1F82.0020.0002] # DONG SIGN +20AC ; [.1F83.0020.0002] # EURO SIGN +20AD ; [.1F84.0020.0002] # KIP SIGN +20AE ; [.1F85.0020.0002] # TUGRIK SIGN +20AF ; [.1F86.0020.0002] # DRACHMA SIGN +20B0 ; [.1F87.0020.0002] # GERMAN PENNY SIGN +20B1 ; [.1F88.0020.0002] # PESO SIGN +20B2 ; [.1F89.0020.0002] # GUARANI SIGN +20B3 ; [.1F8A.0020.0002] # AUSTRAL SIGN +20B4 ; [.1F8B.0020.0002] # HRYVNIA SIGN +20B5 ; [.1F8C.0020.0002] # CEDI SIGN +20B6 ; [.1F8D.0020.0002] # LIVRE TOURNOIS SIGN +20B7 ; [.1F8E.0020.0002] # SPESMILO SIGN +20B8 ; [.1F8F.0020.0002] # TENGE SIGN +20B9 ; [.1F90.0020.0002] # INDIAN RUPEE SIGN +1ECB0 ; [.1F91.0020.0002] # INDIC SIYAQ RUPEE MARK +20BA ; [.1F92.0020.0002] # TURKISH LIRA SIGN +20BB ; [.1F93.0020.0002] # NORDIC MARK SIGN +20BC ; [.1F94.0020.0002] # MANAT SIGN +20BD ; [.1F95.0020.0002] # RUBLE SIGN +20BE ; [.1F96.0020.0002] # LARI SIGN +20BF ; [.1F97.0020.0002] # BITCOIN SIGN +0030 ; [.1F98.0020.0002] # DIGIT ZERO +0660 ; [.1F98.0020.0002] # ARABIC-INDIC DIGIT ZERO +06F0 ; [.1F98.0020.0002] # EXTENDED ARABIC-INDIC DIGIT ZERO +07C0 ; [.1F98.0020.0002] # NKO DIGIT ZERO +0966 ; [.1F98.0020.0002] # DEVANAGARI DIGIT ZERO +09E6 ; [.1F98.0020.0002] # BENGALI DIGIT ZERO +0A66 ; [.1F98.0020.0002] # GURMUKHI DIGIT ZERO +0AE6 ; [.1F98.0020.0002] # GUJARATI DIGIT ZERO +0B66 ; [.1F98.0020.0002] # ORIYA DIGIT ZERO +0BE6 ; [.1F98.0020.0002] # TAMIL DIGIT ZERO +0C66 ; [.1F98.0020.0002] # TELUGU DIGIT ZERO +0C78 ; [.1F98.0020.0002] # TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR +0CE6 ; [.1F98.0020.0002] # KANNADA DIGIT ZERO +0D66 ; [.1F98.0020.0002] # MALAYALAM DIGIT ZERO +0DE6 ; [.1F98.0020.0002] # SINHALA LITH DIGIT ZERO +0E50 ; [.1F98.0020.0002] # THAI DIGIT ZERO +0ED0 ; [.1F98.0020.0002] # LAO DIGIT ZERO +0F20 ; [.1F98.0020.0002] # TIBETAN DIGIT ZERO +1040 ; [.1F98.0020.0002] # MYANMAR DIGIT ZERO +1090 ; [.1F98.0020.0002] # MYANMAR SHAN DIGIT ZERO +17E0 ; [.1F98.0020.0002] # KHMER DIGIT ZERO +17F0 ; [.1F98.0020.0002] # KHMER SYMBOL LEK ATTAK SON +1810 ; [.1F98.0020.0002] # MONGOLIAN DIGIT ZERO +1946 ; [.1F98.0020.0002] # LIMBU DIGIT ZERO +19D0 ; [.1F98.0020.0002] # NEW TAI LUE DIGIT ZERO +1A80 ; [.1F98.0020.0002] # TAI THAM HORA DIGIT ZERO +1A90 ; [.1F98.0020.0002] # TAI THAM THAM DIGIT ZERO +1B50 ; [.1F98.0020.0002] # BALINESE DIGIT ZERO +1BB0 ; [.1F98.0020.0002] # SUNDANESE DIGIT ZERO +1C40 ; [.1F98.0020.0002] # LEPCHA DIGIT ZERO +1C50 ; [.1F98.0020.0002] # OL CHIKI DIGIT ZERO +3007 ; [.1F98.0020.0002] # IDEOGRAPHIC NUMBER ZERO +A620 ; [.1F98.0020.0002] # VAI DIGIT ZERO +A8D0 ; [.1F98.0020.0002] # SAURASHTRA DIGIT ZERO +A900 ; [.1F98.0020.0002] # KAYAH LI DIGIT ZERO +A9D0 ; [.1F98.0020.0002] # JAVANESE DIGIT ZERO +A9F0 ; [.1F98.0020.0002] # MYANMAR TAI LAING DIGIT ZERO +AA50 ; [.1F98.0020.0002] # CHAM DIGIT ZERO +ABF0 ; [.1F98.0020.0002] # MEETEI MAYEK DIGIT ZERO +1018A ; [.1F98.0020.0002] # GREEK ZERO SIGN +104A0 ; [.1F98.0020.0002] # OSMANYA DIGIT ZERO +10D30 ; [.1F98.0020.0002] # HANIFI ROHINGYA DIGIT ZERO +11066 ; [.1F98.0020.0002] # BRAHMI DIGIT ZERO +110F0 ; [.1F98.0020.0002] # SORA SOMPENG DIGIT ZERO +11136 ; [.1F98.0020.0002] # CHAKMA DIGIT ZERO +111D0 ; [.1F98.0020.0002] # SHARADA DIGIT ZERO +112F0 ; [.1F98.0020.0002] # KHUDAWADI DIGIT ZERO +11450 ; [.1F98.0020.0002] # NEWA DIGIT ZERO +114D0 ; [.1F98.0020.0002] # TIRHUTA DIGIT ZERO +11650 ; [.1F98.0020.0002] # MODI DIGIT ZERO +116C0 ; [.1F98.0020.0002] # TAKRI DIGIT ZERO +11730 ; [.1F98.0020.0002] # AHOM DIGIT ZERO +118E0 ; [.1F98.0020.0002] # WARANG CITI DIGIT ZERO +11950 ; [.1F98.0020.0002] # DIVES AKURU DIGIT ZERO +11C50 ; [.1F98.0020.0002] # BHAIKSUKI DIGIT ZERO +11D50 ; [.1F98.0020.0002] # MASARAM GONDI DIGIT ZERO +11DA0 ; [.1F98.0020.0002] # GUNJALA GONDI DIGIT ZERO +16A60 ; [.1F98.0020.0002] # MRO DIGIT ZERO +16B50 ; [.1F98.0020.0002] # PAHAWH HMONG DIGIT ZERO +16E80 ; [.1F98.0020.0002] # MEDEFAIDRIN DIGIT ZERO +1D2E0 ; [.1F98.0020.0002] # MAYAN NUMERAL ZERO +1E140 ; [.1F98.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT ZERO +1E2F0 ; [.1F98.0020.0002] # WANCHO DIGIT ZERO +1E950 ; [.1F98.0020.0002] # ADLAM DIGIT ZERO +FF10 ; [.1F98.0020.0003] # FULLWIDTH DIGIT ZERO +0F33 ; [.1F98.0020.0004] # TIBETAN DIGIT HALF ZERO +1F100 ; [.1F98.0020.0004][*027E.0020.0004] # DIGIT ZERO FULL STOP +1F101 ; [.1F98.0020.0004][*0223.0020.0004] # DIGIT ZERO COMMA +1D7CE ; [.1F98.0020.0005] # MATHEMATICAL BOLD DIGIT ZERO +1D7D8 ; [.1F98.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO +1D7E2 ; [.1F98.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT ZERO +1D7EC ; [.1F98.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO +1D7F6 ; [.1F98.0020.0005] # MATHEMATICAL MONOSPACE DIGIT ZERO +1FBF0 ; [.1F98.0020.0005] # SEGMENTED DIGIT ZERO +24EA ; [.1F98.0020.0006] # CIRCLED DIGIT ZERO +24FF ; [.1F98.0020.0006] # NEGATIVE CIRCLED DIGIT ZERO +1F10B ; [.1F98.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT ZERO +1F10C ; [.1F98.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO +2070 ; [.1F98.0020.0014] # SUPERSCRIPT ZERO +2080 ; [.1F98.0020.0015] # SUBSCRIPT ZERO +2189 ; [.1F98.0020.001E][*0676.0020.001E][.1F9B.0020.001E] # VULGAR FRACTION ZERO THIRDS +3358 ; [.1F98.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO +0031 ; [.1F99.0020.0002] # DIGIT ONE +0661 ; [.1F99.0020.0002] # ARABIC-INDIC DIGIT ONE +06F1 ; [.1F99.0020.0002] # EXTENDED ARABIC-INDIC DIGIT ONE +07C1 ; [.1F99.0020.0002] # NKO DIGIT ONE +0967 ; [.1F99.0020.0002] # DEVANAGARI DIGIT ONE +09E7 ; [.1F99.0020.0002] # BENGALI DIGIT ONE +0A67 ; [.1F99.0020.0002] # GURMUKHI DIGIT ONE +0AE7 ; [.1F99.0020.0002] # GUJARATI DIGIT ONE +0B67 ; [.1F99.0020.0002] # ORIYA DIGIT ONE +0BE7 ; [.1F99.0020.0002] # TAMIL DIGIT ONE +0C67 ; [.1F99.0020.0002] # TELUGU DIGIT ONE +0C79 ; [.1F99.0020.0002] # TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR +0C7C ; [.1F99.0020.0002] # TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR +0CE7 ; [.1F99.0020.0002] # KANNADA DIGIT ONE +0D67 ; [.1F99.0020.0002] # MALAYALAM DIGIT ONE +0DE7 ; [.1F99.0020.0002] # SINHALA LITH DIGIT ONE +0E51 ; [.1F99.0020.0002] # THAI DIGIT ONE +0ED1 ; [.1F99.0020.0002] # LAO DIGIT ONE +0F21 ; [.1F99.0020.0002] # TIBETAN DIGIT ONE +1041 ; [.1F99.0020.0002] # MYANMAR DIGIT ONE +1091 ; [.1F99.0020.0002] # MYANMAR SHAN DIGIT ONE +1369 ; [.1F99.0020.0002] # ETHIOPIC DIGIT ONE +17E1 ; [.1F99.0020.0002] # KHMER DIGIT ONE +17F1 ; [.1F99.0020.0002] # KHMER SYMBOL LEK ATTAK MUOY +1811 ; [.1F99.0020.0002] # MONGOLIAN DIGIT ONE +1947 ; [.1F99.0020.0002] # LIMBU DIGIT ONE +19D1 ; [.1F99.0020.0002] # NEW TAI LUE DIGIT ONE +19DA ; [.1F99.0020.0002] # NEW TAI LUE THAM DIGIT ONE +1A81 ; [.1F99.0020.0002] # TAI THAM HORA DIGIT ONE +1A91 ; [.1F99.0020.0002] # TAI THAM THAM DIGIT ONE +1B51 ; [.1F99.0020.0002] # BALINESE DIGIT ONE +1BB1 ; [.1F99.0020.0002] # SUNDANESE DIGIT ONE +1C41 ; [.1F99.0020.0002] # LEPCHA DIGIT ONE +1C51 ; [.1F99.0020.0002] # OL CHIKI DIGIT ONE +3021 ; [.1F99.0020.0002] # HANGZHOU NUMERAL ONE +A621 ; [.1F99.0020.0002] # VAI DIGIT ONE +A8D1 ; [.1F99.0020.0002] # SAURASHTRA DIGIT ONE +A901 ; [.1F99.0020.0002] # KAYAH LI DIGIT ONE +A9D1 ; [.1F99.0020.0002] # JAVANESE DIGIT ONE +A9F1 ; [.1F99.0020.0002] # MYANMAR TAI LAING DIGIT ONE +AA51 ; [.1F99.0020.0002] # CHAM DIGIT ONE +ABF1 ; [.1F99.0020.0002] # MEETEI MAYEK DIGIT ONE +10107 ; [.1F99.0020.0002] # AEGEAN NUMBER ONE +10142 ; [.1F99.0020.0002] # GREEK ACROPHONIC ATTIC ONE DRACHMA +10158 ; [.1F99.0020.0002] # GREEK ACROPHONIC HERAEUM ONE PLETHRON +10159 ; [.1F99.0020.0002] # GREEK ACROPHONIC THESPIAN ONE +1015A ; [.1F99.0020.0002] # GREEK ACROPHONIC HERMIONIAN ONE +102E1 ; [.1F99.0020.0002] # COPTIC EPACT DIGIT ONE +10320 ; [.1F99.0020.0002] # OLD ITALIC NUMERAL ONE +103D1 ; [.1F99.0020.0002] # OLD PERSIAN NUMBER ONE +104A1 ; [.1F99.0020.0002] # OSMANYA DIGIT ONE +10858 ; [.1F99.0020.0002] # IMPERIAL ARAMAIC NUMBER ONE +10879 ; [.1F99.0020.0002] # PALMYRENE NUMBER ONE +108A7 ; [.1F99.0020.0002] # NABATAEAN NUMBER ONE +108FB ; [.1F99.0020.0002] # HATRAN NUMBER ONE +10916 ; [.1F99.0020.0002] # PHOENICIAN NUMBER ONE +109C0 ; [.1F99.0020.0002] # MEROITIC CURSIVE NUMBER ONE +10A40 ; [.1F99.0020.0002] # KHAROSHTHI DIGIT ONE +10A7D ; [.1F99.0020.0002] # OLD SOUTH ARABIAN NUMBER ONE +10A9D ; [.1F99.0020.0002] # OLD NORTH ARABIAN NUMBER ONE +10AEB ; [.1F99.0020.0002] # MANICHAEAN NUMBER ONE +10B58 ; [.1F99.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER ONE +10B78 ; [.1F99.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER ONE +10BA9 ; [.1F99.0020.0002] # PSALTER PAHLAVI NUMBER ONE +10CFA ; [.1F99.0020.0002] # OLD HUNGARIAN NUMBER ONE +10D31 ; [.1F99.0020.0002] # HANIFI ROHINGYA DIGIT ONE +10E60 ; [.1F99.0020.0002] # RUMI DIGIT ONE +10F1D ; [.1F99.0020.0002] # OLD SOGDIAN NUMBER ONE +10F51 ; [.1F99.0020.0002] # SOGDIAN NUMBER ONE +10FC5 ; [.1F99.0020.0002] # CHORASMIAN NUMBER ONE +11052 ; [.1F99.0020.0002] # BRAHMI NUMBER ONE +11067 ; [.1F99.0020.0002] # BRAHMI DIGIT ONE +110F1 ; [.1F99.0020.0002] # SORA SOMPENG DIGIT ONE +11137 ; [.1F99.0020.0002] # CHAKMA DIGIT ONE +111D1 ; [.1F99.0020.0002] # SHARADA DIGIT ONE +111E1 ; [.1F99.0020.0002] # SINHALA ARCHAIC DIGIT ONE +112F1 ; [.1F99.0020.0002] # KHUDAWADI DIGIT ONE +11451 ; [.1F99.0020.0002] # NEWA DIGIT ONE +114D1 ; [.1F99.0020.0002] # TIRHUTA DIGIT ONE +11651 ; [.1F99.0020.0002] # MODI DIGIT ONE +116C1 ; [.1F99.0020.0002] # TAKRI DIGIT ONE +11731 ; [.1F99.0020.0002] # AHOM DIGIT ONE +118E1 ; [.1F99.0020.0002] # WARANG CITI DIGIT ONE +11951 ; [.1F99.0020.0002] # DIVES AKURU DIGIT ONE +11C51 ; [.1F99.0020.0002] # BHAIKSUKI DIGIT ONE +11C5A ; [.1F99.0020.0002] # BHAIKSUKI NUMBER ONE +11D51 ; [.1F99.0020.0002] # MASARAM GONDI DIGIT ONE +11DA1 ; [.1F99.0020.0002] # GUNJALA GONDI DIGIT ONE +12415 ; [.1F99.0020.0002] # CUNEIFORM NUMERIC SIGN ONE GESH2 +1241E ; [.1F99.0020.0002] # CUNEIFORM NUMERIC SIGN ONE GESHU +1242C ; [.1F99.0020.0002] # CUNEIFORM NUMERIC SIGN ONE SHARU +12434 ; [.1F99.0020.0002] # CUNEIFORM NUMERIC SIGN ONE BURU +1244F ; [.1F99.0020.0002] # CUNEIFORM NUMERIC SIGN ONE BAN2 +12458 ; [.1F99.0020.0002] # CUNEIFORM NUMERIC SIGN ONE ESHE3 +16A61 ; [.1F99.0020.0002] # MRO DIGIT ONE +16B51 ; [.1F99.0020.0002] # PAHAWH HMONG DIGIT ONE +16E81 ; [.1F99.0020.0002] # MEDEFAIDRIN DIGIT ONE +1D2E1 ; [.1F99.0020.0002] # MAYAN NUMERAL ONE +1D360 ; [.1F99.0020.0002] # COUNTING ROD UNIT DIGIT ONE +1D372 ; [.1F99.0020.0002] # IDEOGRAPHIC TALLY MARK ONE +1D377 ; [.1F99.0020.0002] # TALLY MARK ONE +1E141 ; [.1F99.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT ONE +1E2F1 ; [.1F99.0020.0002] # WANCHO DIGIT ONE +1E8C7 ; [.1F99.0020.0002] # MENDE KIKAKUI DIGIT ONE +1E951 ; [.1F99.0020.0002] # ADLAM DIGIT ONE +1EC71 ; [.1F99.0020.0002] # INDIC SIYAQ NUMBER ONE +1ECA3 ; [.1F99.0020.0002] # INDIC SIYAQ NUMBER PREFIXED ONE +1ED01 ; [.1F99.0020.0002] # OTTOMAN SIYAQ NUMBER ONE +FF11 ; [.1F99.0020.0003] # FULLWIDTH DIGIT ONE +0F2A ; [.1F99.0020.0004] # TIBETAN DIGIT HALF ONE +2474 ; [*0328.0020.0004][.1F99.0020.0004][*0329.0020.0004] # PARENTHESIZED DIGIT ONE +2488 ; [.1F99.0020.0004][*027E.0020.0004] # DIGIT ONE FULL STOP +1F102 ; [.1F99.0020.0004][*0223.0020.0004] # DIGIT ONE COMMA +1D7CF ; [.1F99.0020.0005] # MATHEMATICAL BOLD DIGIT ONE +1D7D9 ; [.1F99.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT ONE +1D7E3 ; [.1F99.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT ONE +1D7ED ; [.1F99.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT ONE +1D7F7 ; [.1F99.0020.0005] # MATHEMATICAL MONOSPACE DIGIT ONE +1FBF1 ; [.1F99.0020.0005] # SEGMENTED DIGIT ONE +2460 ; [.1F99.0020.0006] # CIRCLED DIGIT ONE +24F5 ; [.1F99.0020.0006] # DOUBLE CIRCLED DIGIT ONE +2776 ; [.1F99.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT ONE +2780 ; [.1F99.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT ONE +278A ; [.1F99.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE +00B9 ; [.1F99.0020.0014] # SUPERSCRIPT ONE +2081 ; [.1F99.0020.0015] # SUBSCRIPT ONE +215F ; [.1F99.0020.001E][*0676.0020.001E] # FRACTION NUMERATOR ONE +16E94 ; [.1F99.0020.0004][.0000.0118.0004] # MEDEFAIDRIN DIGIT ONE ALTERNATE FORM +1ECB1 ; [.1F99.0020.0004][.0000.0118.0004] # INDIC SIYAQ NUMBER ALTERNATE ONE +247D ; [*0328.0020.0004][.1F99.0020.0004][.1F98.0020.0004][*0329.0020.0004] # PARENTHESIZED NUMBER TEN +2491 ; [.1F99.0020.0004][.1F98.0020.0004][*027E.0020.0004] # NUMBER TEN FULL STOP +2469 ; [.1F99.0020.0006][.1F98.0020.0006] # CIRCLED NUMBER TEN +24FE ; [.1F99.0020.0006][.1F98.0020.0006] # DOUBLE CIRCLED NUMBER TEN +277F ; [.1F99.0020.0006][.1F98.0020.0006] # DINGBAT NEGATIVE CIRCLED NUMBER TEN +2789 ; [.1F99.0020.0006][.1F98.0020.0006] # DINGBAT CIRCLED SANS-SERIF NUMBER TEN +2793 ; [.1F99.0020.0006][.1F98.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN +3248 ; [.1F99.0020.0006][.1F98.0020.0006] # CIRCLED NUMBER TEN ON BLACK SQUARE +33E9 ; [.1F99.0020.0004][.1F98.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN +32C9 ; [.1F99.0020.0004][.1F98.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER +3362 ; [.1F99.0020.0004][.1F98.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN +247E ; [*0328.0020.0004][.1F99.0020.0004][.1F99.0020.0004][*0329.0020.0004] # PARENTHESIZED NUMBER ELEVEN +2492 ; [.1F99.0020.0004][.1F99.0020.0004][*027E.0020.0004] # NUMBER ELEVEN FULL STOP +246A ; [.1F99.0020.0006][.1F99.0020.0006] # CIRCLED NUMBER ELEVEN +24EB ; [.1F99.0020.0006][.1F99.0020.0006] # NEGATIVE CIRCLED NUMBER ELEVEN +2152 ; [.1F99.0020.001E][*0676.0020.001E][.1F99.0020.001E][.1F98.0020.001E] # VULGAR FRACTION ONE TENTH +33EA ; [.1F99.0020.0004][.1F99.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN +32CA ; [.1F99.0020.0004][.1F99.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER +3363 ; [.1F99.0020.0004][.1F99.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN +247F ; [*0328.0020.0004][.1F99.0020.0004][.1F9A.0020.0004][*0329.0020.0004] # PARENTHESIZED NUMBER TWELVE +2493 ; [.1F99.0020.0004][.1F9A.0020.0004][*027E.0020.0004] # NUMBER TWELVE FULL STOP +246B ; [.1F99.0020.0006][.1F9A.0020.0006] # CIRCLED NUMBER TWELVE +24EC ; [.1F99.0020.0006][.1F9A.0020.0006] # NEGATIVE CIRCLED NUMBER TWELVE +00BD ; [.1F99.0020.001E][*0676.0020.001E][.1F9A.0020.001E] # VULGAR FRACTION ONE HALF +1F1A4 ; [.1F99.0020.001C][.1F9A.0020.001C][.1F98.0020.001C][.216B.0020.001D] # SQUARED ONE HUNDRED TWENTY P +33EB ; [.1F99.0020.0004][.1F9A.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE +32CB ; [.1F99.0020.0004][.1F9A.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER +3364 ; [.1F99.0020.0004][.1F9A.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE +2480 ; [*0328.0020.0004][.1F99.0020.0004][.1F9B.0020.0004][*0329.0020.0004] # PARENTHESIZED NUMBER THIRTEEN +2494 ; [.1F99.0020.0004][.1F9B.0020.0004][*027E.0020.0004] # NUMBER THIRTEEN FULL STOP +246C ; [.1F99.0020.0006][.1F9B.0020.0006] # CIRCLED NUMBER THIRTEEN +24ED ; [.1F99.0020.0006][.1F9B.0020.0006] # NEGATIVE CIRCLED NUMBER THIRTEEN +2153 ; [.1F99.0020.001E][*0676.0020.001E][.1F9B.0020.001E] # VULGAR FRACTION ONE THIRD +33EC ; [.1F99.0020.0004][.1F9B.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN +3365 ; [.1F99.0020.0004][.1F9B.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN +2481 ; [*0328.0020.0004][.1F99.0020.0004][.1F9C.0020.0004][*0329.0020.0004] # PARENTHESIZED NUMBER FOURTEEN +2495 ; [.1F99.0020.0004][.1F9C.0020.0004][*027E.0020.0004] # NUMBER FOURTEEN FULL STOP +246D ; [.1F99.0020.0006][.1F9C.0020.0006] # CIRCLED NUMBER FOURTEEN +24EE ; [.1F99.0020.0006][.1F9C.0020.0006] # NEGATIVE CIRCLED NUMBER FOURTEEN +00BC ; [.1F99.0020.001E][*0676.0020.001E][.1F9C.0020.001E] # VULGAR FRACTION ONE QUARTER +33ED ; [.1F99.0020.0004][.1F9C.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN +3366 ; [.1F99.0020.0004][.1F9C.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN +2482 ; [*0328.0020.0004][.1F99.0020.0004][.1F9D.0020.0004][*0329.0020.0004] # PARENTHESIZED NUMBER FIFTEEN +2496 ; [.1F99.0020.0004][.1F9D.0020.0004][*027E.0020.0004] # NUMBER FIFTEEN FULL STOP +246E ; [.1F99.0020.0006][.1F9D.0020.0006] # CIRCLED NUMBER FIFTEEN +24EF ; [.1F99.0020.0006][.1F9D.0020.0006] # NEGATIVE CIRCLED NUMBER FIFTEEN +2155 ; [.1F99.0020.001E][*0676.0020.001E][.1F9D.0020.001E] # VULGAR FRACTION ONE FIFTH +33EE ; [.1F99.0020.0004][.1F9D.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN +3367 ; [.1F99.0020.0004][.1F9D.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN +2483 ; [*0328.0020.0004][.1F99.0020.0004][.1F9E.0020.0004][*0329.0020.0004] # PARENTHESIZED NUMBER SIXTEEN +2497 ; [.1F99.0020.0004][.1F9E.0020.0004][*027E.0020.0004] # NUMBER SIXTEEN FULL STOP +246F ; [.1F99.0020.0006][.1F9E.0020.0006] # CIRCLED NUMBER SIXTEEN +24F0 ; [.1F99.0020.0006][.1F9E.0020.0006] # NEGATIVE CIRCLED NUMBER SIXTEEN +2159 ; [.1F99.0020.001E][*0676.0020.001E][.1F9E.0020.001E] # VULGAR FRACTION ONE SIXTH +33EF ; [.1F99.0020.0004][.1F9E.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN +3368 ; [.1F99.0020.0004][.1F9E.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN +2484 ; [*0328.0020.0004][.1F99.0020.0004][.1F9F.0020.0004][*0329.0020.0004] # PARENTHESIZED NUMBER SEVENTEEN +2498 ; [.1F99.0020.0004][.1F9F.0020.0004][*027E.0020.0004] # NUMBER SEVENTEEN FULL STOP +2470 ; [.1F99.0020.0006][.1F9F.0020.0006] # CIRCLED NUMBER SEVENTEEN +24F1 ; [.1F99.0020.0006][.1F9F.0020.0006] # NEGATIVE CIRCLED NUMBER SEVENTEEN +2150 ; [.1F99.0020.001E][*0676.0020.001E][.1F9F.0020.001E] # VULGAR FRACTION ONE SEVENTH +33F0 ; [.1F99.0020.0004][.1F9F.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN +3369 ; [.1F99.0020.0004][.1F9F.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN +2485 ; [*0328.0020.0004][.1F99.0020.0004][.1FA0.0020.0004][*0329.0020.0004] # PARENTHESIZED NUMBER EIGHTEEN +2499 ; [.1F99.0020.0004][.1FA0.0020.0004][*027E.0020.0004] # NUMBER EIGHTEEN FULL STOP +2471 ; [.1F99.0020.0006][.1FA0.0020.0006] # CIRCLED NUMBER EIGHTEEN +24F2 ; [.1F99.0020.0006][.1FA0.0020.0006] # NEGATIVE CIRCLED NUMBER EIGHTEEN +215B ; [.1F99.0020.001E][*0676.0020.001E][.1FA0.0020.001E] # VULGAR FRACTION ONE EIGHTH +33F1 ; [.1F99.0020.0004][.1FA0.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN +336A ; [.1F99.0020.0004][.1FA0.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN +2486 ; [*0328.0020.0004][.1F99.0020.0004][.1FA1.0020.0004][*0329.0020.0004] # PARENTHESIZED NUMBER NINETEEN +249A ; [.1F99.0020.0004][.1FA1.0020.0004][*027E.0020.0004] # NUMBER NINETEEN FULL STOP +2472 ; [.1F99.0020.0006][.1FA1.0020.0006] # CIRCLED NUMBER NINETEEN +24F3 ; [.1F99.0020.0006][.1FA1.0020.0006] # NEGATIVE CIRCLED NUMBER NINETEEN +2151 ; [.1F99.0020.001E][*0676.0020.001E][.1FA1.0020.001E] # VULGAR FRACTION ONE NINTH +33F2 ; [.1F99.0020.0004][.1FA1.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN +336B ; [.1F99.0020.0004][.1FA1.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN +33E0 ; [.1F99.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE +32C0 ; [.1F99.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY +3359 ; [.1F99.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE +0032 ; [.1F9A.0020.0002] # DIGIT TWO +0662 ; [.1F9A.0020.0002] # ARABIC-INDIC DIGIT TWO +06F2 ; [.1F9A.0020.0002] # EXTENDED ARABIC-INDIC DIGIT TWO +07C2 ; [.1F9A.0020.0002] # NKO DIGIT TWO +0968 ; [.1F9A.0020.0002] # DEVANAGARI DIGIT TWO +09E8 ; [.1F9A.0020.0002] # BENGALI DIGIT TWO +0A68 ; [.1F9A.0020.0002] # GURMUKHI DIGIT TWO +0AE8 ; [.1F9A.0020.0002] # GUJARATI DIGIT TWO +0B68 ; [.1F9A.0020.0002] # ORIYA DIGIT TWO +0BE8 ; [.1F9A.0020.0002] # TAMIL DIGIT TWO +0C68 ; [.1F9A.0020.0002] # TELUGU DIGIT TWO +0C7A ; [.1F9A.0020.0002] # TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR +0C7D ; [.1F9A.0020.0002] # TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR +0CE8 ; [.1F9A.0020.0002] # KANNADA DIGIT TWO +0D68 ; [.1F9A.0020.0002] # MALAYALAM DIGIT TWO +0DE8 ; [.1F9A.0020.0002] # SINHALA LITH DIGIT TWO +0E52 ; [.1F9A.0020.0002] # THAI DIGIT TWO +0ED2 ; [.1F9A.0020.0002] # LAO DIGIT TWO +0F22 ; [.1F9A.0020.0002] # TIBETAN DIGIT TWO +1042 ; [.1F9A.0020.0002] # MYANMAR DIGIT TWO +1092 ; [.1F9A.0020.0002] # MYANMAR SHAN DIGIT TWO +136A ; [.1F9A.0020.0002] # ETHIOPIC DIGIT TWO +17E2 ; [.1F9A.0020.0002] # KHMER DIGIT TWO +17F2 ; [.1F9A.0020.0002] # KHMER SYMBOL LEK ATTAK PII +1812 ; [.1F9A.0020.0002] # MONGOLIAN DIGIT TWO +1948 ; [.1F9A.0020.0002] # LIMBU DIGIT TWO +19D2 ; [.1F9A.0020.0002] # NEW TAI LUE DIGIT TWO +1A82 ; [.1F9A.0020.0002] # TAI THAM HORA DIGIT TWO +1A92 ; [.1F9A.0020.0002] # TAI THAM THAM DIGIT TWO +1B52 ; [.1F9A.0020.0002] # BALINESE DIGIT TWO +1BB2 ; [.1F9A.0020.0002] # SUNDANESE DIGIT TWO +1C42 ; [.1F9A.0020.0002] # LEPCHA DIGIT TWO +1C52 ; [.1F9A.0020.0002] # OL CHIKI DIGIT TWO +3022 ; [.1F9A.0020.0002] # HANGZHOU NUMERAL TWO +A622 ; [.1F9A.0020.0002] # VAI DIGIT TWO +A8D2 ; [.1F9A.0020.0002] # SAURASHTRA DIGIT TWO +A902 ; [.1F9A.0020.0002] # KAYAH LI DIGIT TWO +A9D2 ; [.1F9A.0020.0002] # JAVANESE DIGIT TWO +A9F2 ; [.1F9A.0020.0002] # MYANMAR TAI LAING DIGIT TWO +AA52 ; [.1F9A.0020.0002] # CHAM DIGIT TWO +ABF2 ; [.1F9A.0020.0002] # MEETEI MAYEK DIGIT TWO +10108 ; [.1F9A.0020.0002] # AEGEAN NUMBER TWO +1015B ; [.1F9A.0020.0002] # GREEK ACROPHONIC EPIDAUREAN TWO +1015C ; [.1F9A.0020.0002] # GREEK ACROPHONIC THESPIAN TWO +1015D ; [.1F9A.0020.0002] # GREEK ACROPHONIC CYRENAIC TWO DRACHMAS +1015E ; [.1F9A.0020.0002] # GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS +102E2 ; [.1F9A.0020.0002] # COPTIC EPACT DIGIT TWO +103D2 ; [.1F9A.0020.0002] # OLD PERSIAN NUMBER TWO +104A2 ; [.1F9A.0020.0002] # OSMANYA DIGIT TWO +10859 ; [.1F9A.0020.0002] # IMPERIAL ARAMAIC NUMBER TWO +1087A ; [.1F9A.0020.0002] # PALMYRENE NUMBER TWO +108A8 ; [.1F9A.0020.0002] # NABATAEAN NUMBER TWO +1091A ; [.1F9A.0020.0002] # PHOENICIAN NUMBER TWO +109C1 ; [.1F9A.0020.0002] # MEROITIC CURSIVE NUMBER TWO +10A41 ; [.1F9A.0020.0002] # KHAROSHTHI DIGIT TWO +10B59 ; [.1F9A.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER TWO +10B79 ; [.1F9A.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER TWO +10BAA ; [.1F9A.0020.0002] # PSALTER PAHLAVI NUMBER TWO +10D32 ; [.1F9A.0020.0002] # HANIFI ROHINGYA DIGIT TWO +10E61 ; [.1F9A.0020.0002] # RUMI DIGIT TWO +10F1E ; [.1F9A.0020.0002] # OLD SOGDIAN NUMBER TWO +10FC6 ; [.1F9A.0020.0002] # CHORASMIAN NUMBER TWO +11053 ; [.1F9A.0020.0002] # BRAHMI NUMBER TWO +11068 ; [.1F9A.0020.0002] # BRAHMI DIGIT TWO +110F2 ; [.1F9A.0020.0002] # SORA SOMPENG DIGIT TWO +11138 ; [.1F9A.0020.0002] # CHAKMA DIGIT TWO +111D2 ; [.1F9A.0020.0002] # SHARADA DIGIT TWO +111E2 ; [.1F9A.0020.0002] # SINHALA ARCHAIC DIGIT TWO +112F2 ; [.1F9A.0020.0002] # KHUDAWADI DIGIT TWO +11452 ; [.1F9A.0020.0002] # NEWA DIGIT TWO +114D2 ; [.1F9A.0020.0002] # TIRHUTA DIGIT TWO +11652 ; [.1F9A.0020.0002] # MODI DIGIT TWO +116C2 ; [.1F9A.0020.0002] # TAKRI DIGIT TWO +11732 ; [.1F9A.0020.0002] # AHOM DIGIT TWO +118E2 ; [.1F9A.0020.0002] # WARANG CITI DIGIT TWO +11952 ; [.1F9A.0020.0002] # DIVES AKURU DIGIT TWO +11C52 ; [.1F9A.0020.0002] # BHAIKSUKI DIGIT TWO +11C5B ; [.1F9A.0020.0002] # BHAIKSUKI NUMBER TWO +11D52 ; [.1F9A.0020.0002] # MASARAM GONDI DIGIT TWO +11DA2 ; [.1F9A.0020.0002] # GUNJALA GONDI DIGIT TWO +12400 ; [.1F9A.0020.0002] # CUNEIFORM NUMERIC SIGN TWO ASH +12416 ; [.1F9A.0020.0002] # CUNEIFORM NUMERIC SIGN TWO GESH2 +1241F ; [.1F9A.0020.0002] # CUNEIFORM NUMERIC SIGN TWO GESHU +12423 ; [.1F9A.0020.0002] # CUNEIFORM NUMERIC SIGN TWO SHAR2 +1242D ; [.1F9A.0020.0002] # CUNEIFORM NUMERIC SIGN TWO SHARU +12435 ; [.1F9A.0020.0002] # CUNEIFORM NUMERIC SIGN TWO BURU +1244A ; [.1F9A.0020.0002] # CUNEIFORM NUMERIC SIGN TWO ASH TENU +12450 ; [.1F9A.0020.0002] # CUNEIFORM NUMERIC SIGN TWO BAN2 +12456 ; [.1F9A.0020.0002] # CUNEIFORM NUMERIC SIGN NIGIDAMIN +12459 ; [.1F9A.0020.0002] # CUNEIFORM NUMERIC SIGN TWO ESHE3 +16A62 ; [.1F9A.0020.0002] # MRO DIGIT TWO +16B52 ; [.1F9A.0020.0002] # PAHAWH HMONG DIGIT TWO +16E82 ; [.1F9A.0020.0002] # MEDEFAIDRIN DIGIT TWO +1D2E2 ; [.1F9A.0020.0002] # MAYAN NUMERAL TWO +1D361 ; [.1F9A.0020.0002] # COUNTING ROD UNIT DIGIT TWO +1D373 ; [.1F9A.0020.0002] # IDEOGRAPHIC TALLY MARK TWO +1E142 ; [.1F9A.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT TWO +1E2F2 ; [.1F9A.0020.0002] # WANCHO DIGIT TWO +1E8C8 ; [.1F9A.0020.0002] # MENDE KIKAKUI DIGIT TWO +1E952 ; [.1F9A.0020.0002] # ADLAM DIGIT TWO +1EC72 ; [.1F9A.0020.0002] # INDIC SIYAQ NUMBER TWO +1ECA4 ; [.1F9A.0020.0002] # INDIC SIYAQ NUMBER PREFIXED TWO +1ED02 ; [.1F9A.0020.0002] # OTTOMAN SIYAQ NUMBER TWO +FF12 ; [.1F9A.0020.0003] # FULLWIDTH DIGIT TWO +0F2B ; [.1F9A.0020.0004] # TIBETAN DIGIT HALF TWO +2475 ; [*0328.0020.0004][.1F9A.0020.0004][*0329.0020.0004] # PARENTHESIZED DIGIT TWO +2489 ; [.1F9A.0020.0004][*027E.0020.0004] # DIGIT TWO FULL STOP +1F103 ; [.1F9A.0020.0004][*0223.0020.0004] # DIGIT TWO COMMA +1D7D0 ; [.1F9A.0020.0005] # MATHEMATICAL BOLD DIGIT TWO +1D7DA ; [.1F9A.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT TWO +1D7E4 ; [.1F9A.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT TWO +1D7EE ; [.1F9A.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT TWO +1D7F8 ; [.1F9A.0020.0005] # MATHEMATICAL MONOSPACE DIGIT TWO +1FBF2 ; [.1F9A.0020.0005] # SEGMENTED DIGIT TWO +2461 ; [.1F9A.0020.0006] # CIRCLED DIGIT TWO +24F6 ; [.1F9A.0020.0006] # DOUBLE CIRCLED DIGIT TWO +2777 ; [.1F9A.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT TWO +2781 ; [.1F9A.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT TWO +278B ; [.1F9A.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO +00B2 ; [.1F9A.0020.0014] # SUPERSCRIPT TWO +2082 ; [.1F9A.0020.0015] # SUBSCRIPT TWO +16E95 ; [.1F9A.0020.0004][.0000.0118.0004] # MEDEFAIDRIN DIGIT TWO ALTERNATE FORM +1ECB2 ; [.1F9A.0020.0004][.0000.0118.0004] # INDIC SIYAQ NUMBER ALTERNATE TWO +1ED2F ; [.1F9A.0020.0004][.0000.0118.0004] # OTTOMAN SIYAQ ALTERNATE NUMBER TWO +2487 ; [*0328.0020.0004][.1F9A.0020.0004][.1F98.0020.0004][*0329.0020.0004] # PARENTHESIZED NUMBER TWENTY +249B ; [.1F9A.0020.0004][.1F98.0020.0004][*027E.0020.0004] # NUMBER TWENTY FULL STOP +2473 ; [.1F9A.0020.0006][.1F98.0020.0006] # CIRCLED NUMBER TWENTY +24F4 ; [.1F9A.0020.0006][.1F98.0020.0006] # NEGATIVE CIRCLED NUMBER TWENTY +3249 ; [.1F9A.0020.0006][.1F98.0020.0006] # CIRCLED NUMBER TWENTY ON BLACK SQUARE +33F3 ; [.1F9A.0020.0004][.1F98.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY +336C ; [.1F9A.0020.0004][.1F98.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY +3251 ; [.1F9A.0020.0006][.1F99.0020.0006] # CIRCLED NUMBER TWENTY ONE +33F4 ; [.1F9A.0020.0004][.1F99.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE +336D ; [.1F9A.0020.0004][.1F99.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE +3252 ; [.1F9A.0020.0006][.1F9A.0020.0006] # CIRCLED NUMBER TWENTY TWO +1F1A2 ; [.1F9A.0020.001C][.1F9A.0020.001C][*027E.0020.001C][.1F9A.0020.001C] # SQUARED TWENTY-TWO POINT TWO +33F5 ; [.1F9A.0020.0004][.1F9A.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO +336E ; [.1F9A.0020.0004][.1F9A.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO +3253 ; [.1F9A.0020.0006][.1F9B.0020.0006] # CIRCLED NUMBER TWENTY THREE +2154 ; [.1F9A.0020.001E][*0676.0020.001E][.1F9B.0020.001E] # VULGAR FRACTION TWO THIRDS +33F6 ; [.1F9A.0020.0004][.1F9B.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE +336F ; [.1F9A.0020.0004][.1F9B.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE +3254 ; [.1F9A.0020.0006][.1F9C.0020.0006] # CIRCLED NUMBER TWENTY FOUR +33F7 ; [.1F9A.0020.0004][.1F9C.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR +3370 ; [.1F9A.0020.0004][.1F9C.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR +3255 ; [.1F9A.0020.0006][.1F9D.0020.0006] # CIRCLED NUMBER TWENTY FIVE +2156 ; [.1F9A.0020.001E][*0676.0020.001E][.1F9D.0020.001E] # VULGAR FRACTION TWO FIFTHS +33F8 ; [.1F9A.0020.0004][.1F9D.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE +3256 ; [.1F9A.0020.0006][.1F9E.0020.0006] # CIRCLED NUMBER TWENTY SIX +33F9 ; [.1F9A.0020.0004][.1F9E.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX +3257 ; [.1F9A.0020.0006][.1F9F.0020.0006] # CIRCLED NUMBER TWENTY SEVEN +33FA ; [.1F9A.0020.0004][.1F9F.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN +3258 ; [.1F9A.0020.0006][.1FA0.0020.0006] # CIRCLED NUMBER TWENTY EIGHT +33FB ; [.1F9A.0020.0004][.1FA0.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT +3259 ; [.1F9A.0020.0006][.1FA1.0020.0006] # CIRCLED NUMBER TWENTY NINE +33FC ; [.1F9A.0020.0004][.1FA1.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE +1F19D ; [.1F9A.0020.001C][.20C4.0020.001D] # SQUARED TWO K +1F19C ; [.1F9A.0020.001C][.2118.0020.001C][.1FEB.0020.001C][*0209.0020.001C][.21D2.0020.001D][.1FD6.0020.001C][.2193.0020.001C] # SQUARED SECOND SCREEN +33E1 ; [.1F9A.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO +32C1 ; [.1F9A.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY +335A ; [.1F9A.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO +0033 ; [.1F9B.0020.0002] # DIGIT THREE +0663 ; [.1F9B.0020.0002] # ARABIC-INDIC DIGIT THREE +06F3 ; [.1F9B.0020.0002] # EXTENDED ARABIC-INDIC DIGIT THREE +07C3 ; [.1F9B.0020.0002] # NKO DIGIT THREE +0969 ; [.1F9B.0020.0002] # DEVANAGARI DIGIT THREE +09E9 ; [.1F9B.0020.0002] # BENGALI DIGIT THREE +0A69 ; [.1F9B.0020.0002] # GURMUKHI DIGIT THREE +0AE9 ; [.1F9B.0020.0002] # GUJARATI DIGIT THREE +0B69 ; [.1F9B.0020.0002] # ORIYA DIGIT THREE +0BE9 ; [.1F9B.0020.0002] # TAMIL DIGIT THREE +0C69 ; [.1F9B.0020.0002] # TELUGU DIGIT THREE +0C7B ; [.1F9B.0020.0002] # TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR +0C7E ; [.1F9B.0020.0002] # TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR +0CE9 ; [.1F9B.0020.0002] # KANNADA DIGIT THREE +0D69 ; [.1F9B.0020.0002] # MALAYALAM DIGIT THREE +0DE9 ; [.1F9B.0020.0002] # SINHALA LITH DIGIT THREE +0E53 ; [.1F9B.0020.0002] # THAI DIGIT THREE +0ED3 ; [.1F9B.0020.0002] # LAO DIGIT THREE +0F23 ; [.1F9B.0020.0002] # TIBETAN DIGIT THREE +1043 ; [.1F9B.0020.0002] # MYANMAR DIGIT THREE +1093 ; [.1F9B.0020.0002] # MYANMAR SHAN DIGIT THREE +136B ; [.1F9B.0020.0002] # ETHIOPIC DIGIT THREE +17E3 ; [.1F9B.0020.0002] # KHMER DIGIT THREE +17F3 ; [.1F9B.0020.0002] # KHMER SYMBOL LEK ATTAK BEI +1813 ; [.1F9B.0020.0002] # MONGOLIAN DIGIT THREE +1949 ; [.1F9B.0020.0002] # LIMBU DIGIT THREE +19D3 ; [.1F9B.0020.0002] # NEW TAI LUE DIGIT THREE +1A83 ; [.1F9B.0020.0002] # TAI THAM HORA DIGIT THREE +1A93 ; [.1F9B.0020.0002] # TAI THAM THAM DIGIT THREE +1B53 ; [.1F9B.0020.0002] # BALINESE DIGIT THREE +1BB3 ; [.1F9B.0020.0002] # SUNDANESE DIGIT THREE +1C43 ; [.1F9B.0020.0002] # LEPCHA DIGIT THREE +1C53 ; [.1F9B.0020.0002] # OL CHIKI DIGIT THREE +3023 ; [.1F9B.0020.0002] # HANGZHOU NUMERAL THREE +A623 ; [.1F9B.0020.0002] # VAI DIGIT THREE +A8D3 ; [.1F9B.0020.0002] # SAURASHTRA DIGIT THREE +A903 ; [.1F9B.0020.0002] # KAYAH LI DIGIT THREE +A9D3 ; [.1F9B.0020.0002] # JAVANESE DIGIT THREE +A9F3 ; [.1F9B.0020.0002] # MYANMAR TAI LAING DIGIT THREE +AA53 ; [.1F9B.0020.0002] # CHAM DIGIT THREE +ABF3 ; [.1F9B.0020.0002] # MEETEI MAYEK DIGIT THREE +10109 ; [.1F9B.0020.0002] # AEGEAN NUMBER THREE +102E3 ; [.1F9B.0020.0002] # COPTIC EPACT DIGIT THREE +104A3 ; [.1F9B.0020.0002] # OSMANYA DIGIT THREE +1085A ; [.1F9B.0020.0002] # IMPERIAL ARAMAIC NUMBER THREE +1087B ; [.1F9B.0020.0002] # PALMYRENE NUMBER THREE +108A9 ; [.1F9B.0020.0002] # NABATAEAN NUMBER THREE +1091B ; [.1F9B.0020.0002] # PHOENICIAN NUMBER THREE +109C2 ; [.1F9B.0020.0002] # MEROITIC CURSIVE NUMBER THREE +10A42 ; [.1F9B.0020.0002] # KHAROSHTHI DIGIT THREE +10B5A ; [.1F9B.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER THREE +10B7A ; [.1F9B.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER THREE +10BAB ; [.1F9B.0020.0002] # PSALTER PAHLAVI NUMBER THREE +10D33 ; [.1F9B.0020.0002] # HANIFI ROHINGYA DIGIT THREE +10E62 ; [.1F9B.0020.0002] # RUMI DIGIT THREE +10F1F ; [.1F9B.0020.0002] # OLD SOGDIAN NUMBER THREE +10FC7 ; [.1F9B.0020.0002] # CHORASMIAN NUMBER THREE +11054 ; [.1F9B.0020.0002] # BRAHMI NUMBER THREE +11069 ; [.1F9B.0020.0002] # BRAHMI DIGIT THREE +110F3 ; [.1F9B.0020.0002] # SORA SOMPENG DIGIT THREE +11139 ; [.1F9B.0020.0002] # CHAKMA DIGIT THREE +111D3 ; [.1F9B.0020.0002] # SHARADA DIGIT THREE +111E3 ; [.1F9B.0020.0002] # SINHALA ARCHAIC DIGIT THREE +112F3 ; [.1F9B.0020.0002] # KHUDAWADI DIGIT THREE +11453 ; [.1F9B.0020.0002] # NEWA DIGIT THREE +114D3 ; [.1F9B.0020.0002] # TIRHUTA DIGIT THREE +11653 ; [.1F9B.0020.0002] # MODI DIGIT THREE +116C3 ; [.1F9B.0020.0002] # TAKRI DIGIT THREE +11733 ; [.1F9B.0020.0002] # AHOM DIGIT THREE +118E3 ; [.1F9B.0020.0002] # WARANG CITI DIGIT THREE +11953 ; [.1F9B.0020.0002] # DIVES AKURU DIGIT THREE +11C53 ; [.1F9B.0020.0002] # BHAIKSUKI DIGIT THREE +11C5C ; [.1F9B.0020.0002] # BHAIKSUKI NUMBER THREE +11D53 ; [.1F9B.0020.0002] # MASARAM GONDI DIGIT THREE +11DA3 ; [.1F9B.0020.0002] # GUNJALA GONDI DIGIT THREE +12401 ; [.1F9B.0020.0002] # CUNEIFORM NUMERIC SIGN THREE ASH +12408 ; [.1F9B.0020.0002] # CUNEIFORM NUMERIC SIGN THREE DISH +12417 ; [.1F9B.0020.0002] # CUNEIFORM NUMERIC SIGN THREE GESH2 +12420 ; [.1F9B.0020.0002] # CUNEIFORM NUMERIC SIGN THREE GESHU +12424 ; [.1F9B.0020.0002] # CUNEIFORM NUMERIC SIGN THREE SHAR2 +12425 ; [.1F9B.0020.0002] # CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM +1242E ; [.1F9B.0020.0002] # CUNEIFORM NUMERIC SIGN THREE SHARU +1242F ; [.1F9B.0020.0002] # CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM +12436 ; [.1F9B.0020.0002] # CUNEIFORM NUMERIC SIGN THREE BURU +12437 ; [.1F9B.0020.0002] # CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM +1243A ; [.1F9B.0020.0002] # CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16 +1243B ; [.1F9B.0020.0002] # CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21 +1244B ; [.1F9B.0020.0002] # CUNEIFORM NUMERIC SIGN THREE ASH TENU +12451 ; [.1F9B.0020.0002] # CUNEIFORM NUMERIC SIGN THREE BAN2 +12457 ; [.1F9B.0020.0002] # CUNEIFORM NUMERIC SIGN NIGIDAESH +16A63 ; [.1F9B.0020.0002] # MRO DIGIT THREE +16B53 ; [.1F9B.0020.0002] # PAHAWH HMONG DIGIT THREE +16E83 ; [.1F9B.0020.0002] # MEDEFAIDRIN DIGIT THREE +1D2E3 ; [.1F9B.0020.0002] # MAYAN NUMERAL THREE +1D362 ; [.1F9B.0020.0002] # COUNTING ROD UNIT DIGIT THREE +1D374 ; [.1F9B.0020.0002] # IDEOGRAPHIC TALLY MARK THREE +1E143 ; [.1F9B.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT THREE +1E2F3 ; [.1F9B.0020.0002] # WANCHO DIGIT THREE +1E8C9 ; [.1F9B.0020.0002] # MENDE KIKAKUI DIGIT THREE +1E953 ; [.1F9B.0020.0002] # ADLAM DIGIT THREE +1EC73 ; [.1F9B.0020.0002] # INDIC SIYAQ NUMBER THREE +1ECA5 ; [.1F9B.0020.0002] # INDIC SIYAQ NUMBER PREFIXED THREE +1ED03 ; [.1F9B.0020.0002] # OTTOMAN SIYAQ NUMBER THREE +FF13 ; [.1F9B.0020.0003] # FULLWIDTH DIGIT THREE +0F2C ; [.1F9B.0020.0004] # TIBETAN DIGIT HALF THREE +2476 ; [*0328.0020.0004][.1F9B.0020.0004][*0329.0020.0004] # PARENTHESIZED DIGIT THREE +248A ; [.1F9B.0020.0004][*027E.0020.0004] # DIGIT THREE FULL STOP +1F104 ; [.1F9B.0020.0004][*0223.0020.0004] # DIGIT THREE COMMA +1D7D1 ; [.1F9B.0020.0005] # MATHEMATICAL BOLD DIGIT THREE +1D7DB ; [.1F9B.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT THREE +1D7E5 ; [.1F9B.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT THREE +1D7EF ; [.1F9B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT THREE +1D7F9 ; [.1F9B.0020.0005] # MATHEMATICAL MONOSPACE DIGIT THREE +1FBF3 ; [.1F9B.0020.0005] # SEGMENTED DIGIT THREE +2462 ; [.1F9B.0020.0006] # CIRCLED DIGIT THREE +24F7 ; [.1F9B.0020.0006] # DOUBLE CIRCLED DIGIT THREE +2778 ; [.1F9B.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT THREE +2782 ; [.1F9B.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT THREE +278C ; [.1F9B.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE +00B3 ; [.1F9B.0020.0014] # SUPERSCRIPT THREE +2083 ; [.1F9B.0020.0015] # SUBSCRIPT THREE +16E96 ; [.1F9B.0020.0002][.0000.0118.0002] # MEDEFAIDRIN DIGIT THREE ALTERNATE FORM +1ED30 ; [.1F9B.0020.0004][.0000.0118.0004] # OTTOMAN SIYAQ ALTERNATE NUMBER THREE +324A ; [.1F9B.0020.0006][.1F98.0020.0006] # CIRCLED NUMBER THIRTY ON BLACK SQUARE +325A ; [.1F9B.0020.0006][.1F98.0020.0006] # CIRCLED NUMBER THIRTY +33FD ; [.1F9B.0020.0004][.1F98.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY +325B ; [.1F9B.0020.0006][.1F99.0020.0006] # CIRCLED NUMBER THIRTY ONE +33FE ; [.1F9B.0020.0004][.1F99.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE +325C ; [.1F9B.0020.0006][.1F9A.0020.0006] # CIRCLED NUMBER THIRTY TWO +325D ; [.1F9B.0020.0006][.1F9B.0020.0006] # CIRCLED NUMBER THIRTY THREE +325E ; [.1F9B.0020.0006][.1F9C.0020.0006] # CIRCLED NUMBER THIRTY FOUR +00BE ; [.1F9B.0020.001E][*0676.0020.001E][.1F9C.0020.001E] # VULGAR FRACTION THREE QUARTERS +325F ; [.1F9B.0020.0006][.1F9D.0020.0006] # CIRCLED NUMBER THIRTY FIVE +2157 ; [.1F9B.0020.001E][*0676.0020.001E][.1F9D.0020.001E] # VULGAR FRACTION THREE FIFTHS +32B1 ; [.1F9B.0020.0006][.1F9E.0020.0006] # CIRCLED NUMBER THIRTY SIX +32B2 ; [.1F9B.0020.0006][.1F9F.0020.0006] # CIRCLED NUMBER THIRTY SEVEN +32B3 ; [.1F9B.0020.0006][.1FA0.0020.0006] # CIRCLED NUMBER THIRTY EIGHT +215C ; [.1F9B.0020.001E][*0676.0020.001E][.1FA0.0020.001E] # VULGAR FRACTION THREE EIGHTHS +32B4 ; [.1F9B.0020.0006][.1FA1.0020.0006] # CIRCLED NUMBER THIRTY NINE +1F19B ; [.1F9B.0020.001C][.1FEB.0020.001D] # SQUARED THREE D +33E2 ; [.1F9B.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE +32C2 ; [.1F9B.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH +335B ; [.1F9B.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE +0034 ; [.1F9C.0020.0002] # DIGIT FOUR +0664 ; [.1F9C.0020.0002] # ARABIC-INDIC DIGIT FOUR +06F4 ; [.1F9C.0020.0002] # EXTENDED ARABIC-INDIC DIGIT FOUR +07C4 ; [.1F9C.0020.0002] # NKO DIGIT FOUR +096A ; [.1F9C.0020.0002] # DEVANAGARI DIGIT FOUR +09EA ; [.1F9C.0020.0002] # BENGALI DIGIT FOUR +0A6A ; [.1F9C.0020.0002] # GURMUKHI DIGIT FOUR +0AEA ; [.1F9C.0020.0002] # GUJARATI DIGIT FOUR +0B6A ; [.1F9C.0020.0002] # ORIYA DIGIT FOUR +0BEA ; [.1F9C.0020.0002] # TAMIL DIGIT FOUR +0C6A ; [.1F9C.0020.0002] # TELUGU DIGIT FOUR +0CEA ; [.1F9C.0020.0002] # KANNADA DIGIT FOUR +0D6A ; [.1F9C.0020.0002] # MALAYALAM DIGIT FOUR +0DEA ; [.1F9C.0020.0002] # SINHALA LITH DIGIT FOUR +0E54 ; [.1F9C.0020.0002] # THAI DIGIT FOUR +0ED4 ; [.1F9C.0020.0002] # LAO DIGIT FOUR +0F24 ; [.1F9C.0020.0002] # TIBETAN DIGIT FOUR +1044 ; [.1F9C.0020.0002] # MYANMAR DIGIT FOUR +1094 ; [.1F9C.0020.0002] # MYANMAR SHAN DIGIT FOUR +136C ; [.1F9C.0020.0002] # ETHIOPIC DIGIT FOUR +17E4 ; [.1F9C.0020.0002] # KHMER DIGIT FOUR +17F4 ; [.1F9C.0020.0002] # KHMER SYMBOL LEK ATTAK BUON +1814 ; [.1F9C.0020.0002] # MONGOLIAN DIGIT FOUR +194A ; [.1F9C.0020.0002] # LIMBU DIGIT FOUR +19D4 ; [.1F9C.0020.0002] # NEW TAI LUE DIGIT FOUR +1A84 ; [.1F9C.0020.0002] # TAI THAM HORA DIGIT FOUR +1A94 ; [.1F9C.0020.0002] # TAI THAM THAM DIGIT FOUR +1B54 ; [.1F9C.0020.0002] # BALINESE DIGIT FOUR +1BB4 ; [.1F9C.0020.0002] # SUNDANESE DIGIT FOUR +1C44 ; [.1F9C.0020.0002] # LEPCHA DIGIT FOUR +1C54 ; [.1F9C.0020.0002] # OL CHIKI DIGIT FOUR +3024 ; [.1F9C.0020.0002] # HANGZHOU NUMERAL FOUR +A624 ; [.1F9C.0020.0002] # VAI DIGIT FOUR +A8D4 ; [.1F9C.0020.0002] # SAURASHTRA DIGIT FOUR +A904 ; [.1F9C.0020.0002] # KAYAH LI DIGIT FOUR +A9D4 ; [.1F9C.0020.0002] # JAVANESE DIGIT FOUR +A9F4 ; [.1F9C.0020.0002] # MYANMAR TAI LAING DIGIT FOUR +AA54 ; [.1F9C.0020.0002] # CHAM DIGIT FOUR +ABF4 ; [.1F9C.0020.0002] # MEETEI MAYEK DIGIT FOUR +1010A ; [.1F9C.0020.0002] # AEGEAN NUMBER FOUR +102E4 ; [.1F9C.0020.0002] # COPTIC EPACT DIGIT FOUR +104A4 ; [.1F9C.0020.0002] # OSMANYA DIGIT FOUR +1087C ; [.1F9C.0020.0002] # PALMYRENE NUMBER FOUR +108AA ; [.1F9C.0020.0002] # NABATAEAN NUMBER FOUR +108AB ; [.1F9C.0020.0002] # NABATAEAN CRUCIFORM NUMBER FOUR +109C3 ; [.1F9C.0020.0002] # MEROITIC CURSIVE NUMBER FOUR +10A43 ; [.1F9C.0020.0002] # KHAROSHTHI DIGIT FOUR +10B5B ; [.1F9C.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER FOUR +10B7B ; [.1F9C.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER FOUR +10BAC ; [.1F9C.0020.0002] # PSALTER PAHLAVI NUMBER FOUR +10D34 ; [.1F9C.0020.0002] # HANIFI ROHINGYA DIGIT FOUR +10E63 ; [.1F9C.0020.0002] # RUMI DIGIT FOUR +10F20 ; [.1F9C.0020.0002] # OLD SOGDIAN NUMBER FOUR +10FC8 ; [.1F9C.0020.0002] # CHORASMIAN NUMBER FOUR +11055 ; [.1F9C.0020.0002] # BRAHMI NUMBER FOUR +1106A ; [.1F9C.0020.0002] # BRAHMI DIGIT FOUR +110F4 ; [.1F9C.0020.0002] # SORA SOMPENG DIGIT FOUR +1113A ; [.1F9C.0020.0002] # CHAKMA DIGIT FOUR +111D4 ; [.1F9C.0020.0002] # SHARADA DIGIT FOUR +111E4 ; [.1F9C.0020.0002] # SINHALA ARCHAIC DIGIT FOUR +112F4 ; [.1F9C.0020.0002] # KHUDAWADI DIGIT FOUR +11454 ; [.1F9C.0020.0002] # NEWA DIGIT FOUR +114D4 ; [.1F9C.0020.0002] # TIRHUTA DIGIT FOUR +11654 ; [.1F9C.0020.0002] # MODI DIGIT FOUR +116C4 ; [.1F9C.0020.0002] # TAKRI DIGIT FOUR +11734 ; [.1F9C.0020.0002] # AHOM DIGIT FOUR +118E4 ; [.1F9C.0020.0002] # WARANG CITI DIGIT FOUR +11954 ; [.1F9C.0020.0002] # DIVES AKURU DIGIT FOUR +11C54 ; [.1F9C.0020.0002] # BHAIKSUKI DIGIT FOUR +11C5D ; [.1F9C.0020.0002] # BHAIKSUKI NUMBER FOUR +11D54 ; [.1F9C.0020.0002] # MASARAM GONDI DIGIT FOUR +11DA4 ; [.1F9C.0020.0002] # GUNJALA GONDI DIGIT FOUR +12402 ; [.1F9C.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR ASH +12409 ; [.1F9C.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR DISH +1240F ; [.1F9C.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR U +12418 ; [.1F9C.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR GESH2 +12421 ; [.1F9C.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR GESHU +12426 ; [.1F9C.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR SHAR2 +12430 ; [.1F9C.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR SHARU +12438 ; [.1F9C.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR BURU +1243C ; [.1F9C.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU +1243D ; [.1F9C.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4 +1243E ; [.1F9C.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A +1243F ; [.1F9C.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B +1244C ; [.1F9C.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR ASH TENU +12452 ; [.1F9C.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR BAN2 +12453 ; [.1F9C.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM +12469 ; [.1F9C.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR U VARIANT FORM +16A64 ; [.1F9C.0020.0002] # MRO DIGIT FOUR +16B54 ; [.1F9C.0020.0002] # PAHAWH HMONG DIGIT FOUR +16E84 ; [.1F9C.0020.0002] # MEDEFAIDRIN DIGIT FOUR +1D2E4 ; [.1F9C.0020.0002] # MAYAN NUMERAL FOUR +1D363 ; [.1F9C.0020.0002] # COUNTING ROD UNIT DIGIT FOUR +1D375 ; [.1F9C.0020.0002] # IDEOGRAPHIC TALLY MARK FOUR +1E144 ; [.1F9C.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT FOUR +1E2F4 ; [.1F9C.0020.0002] # WANCHO DIGIT FOUR +1E8CA ; [.1F9C.0020.0002] # MENDE KIKAKUI DIGIT FOUR +1E954 ; [.1F9C.0020.0002] # ADLAM DIGIT FOUR +1EC74 ; [.1F9C.0020.0002] # INDIC SIYAQ NUMBER FOUR +1ECA6 ; [.1F9C.0020.0002] # INDIC SIYAQ NUMBER PREFIXED FOUR +1ED04 ; [.1F9C.0020.0002] # OTTOMAN SIYAQ NUMBER FOUR +FF14 ; [.1F9C.0020.0003] # FULLWIDTH DIGIT FOUR +0F2D ; [.1F9C.0020.0004] # TIBETAN DIGIT HALF FOUR +2477 ; [*0328.0020.0004][.1F9C.0020.0004][*0329.0020.0004] # PARENTHESIZED DIGIT FOUR +248B ; [.1F9C.0020.0004][*027E.0020.0004] # DIGIT FOUR FULL STOP +1F105 ; [.1F9C.0020.0004][*0223.0020.0004] # DIGIT FOUR COMMA +1D7D2 ; [.1F9C.0020.0005] # MATHEMATICAL BOLD DIGIT FOUR +1D7DC ; [.1F9C.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR +1D7E6 ; [.1F9C.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT FOUR +1D7F0 ; [.1F9C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR +1D7FA ; [.1F9C.0020.0005] # MATHEMATICAL MONOSPACE DIGIT FOUR +1FBF4 ; [.1F9C.0020.0005] # SEGMENTED DIGIT FOUR +2463 ; [.1F9C.0020.0006] # CIRCLED DIGIT FOUR +24F8 ; [.1F9C.0020.0006] # DOUBLE CIRCLED DIGIT FOUR +2779 ; [.1F9C.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT FOUR +2783 ; [.1F9C.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT FOUR +278D ; [.1F9C.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR +2074 ; [.1F9C.0020.0014] # SUPERSCRIPT FOUR +2084 ; [.1F9C.0020.0015] # SUBSCRIPT FOUR +1ED31 ; [.1F9C.0020.0004][.0000.0118.0004] # OTTOMAN SIYAQ ALTERNATE NUMBER FOUR +324B ; [.1F9C.0020.0006][.1F98.0020.0006] # CIRCLED NUMBER FORTY ON BLACK SQUARE +32B5 ; [.1F9C.0020.0006][.1F98.0020.0006] # CIRCLED NUMBER FORTY +32B6 ; [.1F9C.0020.0006][.1F99.0020.0006] # CIRCLED NUMBER FORTY ONE +32B7 ; [.1F9C.0020.0006][.1F9A.0020.0006] # CIRCLED NUMBER FORTY TWO +32B8 ; [.1F9C.0020.0006][.1F9B.0020.0006] # CIRCLED NUMBER FORTY THREE +32B9 ; [.1F9C.0020.0006][.1F9C.0020.0006] # CIRCLED NUMBER FORTY FOUR +32BA ; [.1F9C.0020.0006][.1F9D.0020.0006] # CIRCLED NUMBER FORTY FIVE +2158 ; [.1F9C.0020.001E][*0676.0020.001E][.1F9D.0020.001E] # VULGAR FRACTION FOUR FIFTHS +32BB ; [.1F9C.0020.0006][.1F9E.0020.0006] # CIRCLED NUMBER FORTY SIX +32BC ; [.1F9C.0020.0006][.1F9F.0020.0006] # CIRCLED NUMBER FORTY SEVEN +32BD ; [.1F9C.0020.0006][.1FA0.0020.0006] # CIRCLED NUMBER FORTY EIGHT +32BE ; [.1F9C.0020.0006][.1FA1.0020.0006] # CIRCLED NUMBER FORTY NINE +1F19E ; [.1F9C.0020.001C][.20C4.0020.001D] # SQUARED FOUR K +33E3 ; [.1F9C.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR +32C3 ; [.1F9C.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL +335C ; [.1F9C.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR +0035 ; [.1F9D.0020.0002] # DIGIT FIVE +0665 ; [.1F9D.0020.0002] # ARABIC-INDIC DIGIT FIVE +06F5 ; [.1F9D.0020.0002] # EXTENDED ARABIC-INDIC DIGIT FIVE +07C5 ; [.1F9D.0020.0002] # NKO DIGIT FIVE +096B ; [.1F9D.0020.0002] # DEVANAGARI DIGIT FIVE +09EB ; [.1F9D.0020.0002] # BENGALI DIGIT FIVE +0A6B ; [.1F9D.0020.0002] # GURMUKHI DIGIT FIVE +0AEB ; [.1F9D.0020.0002] # GUJARATI DIGIT FIVE +0B6B ; [.1F9D.0020.0002] # ORIYA DIGIT FIVE +0BEB ; [.1F9D.0020.0002] # TAMIL DIGIT FIVE +0C6B ; [.1F9D.0020.0002] # TELUGU DIGIT FIVE +0CEB ; [.1F9D.0020.0002] # KANNADA DIGIT FIVE +0D6B ; [.1F9D.0020.0002] # MALAYALAM DIGIT FIVE +0DEB ; [.1F9D.0020.0002] # SINHALA LITH DIGIT FIVE +0E55 ; [.1F9D.0020.0002] # THAI DIGIT FIVE +0ED5 ; [.1F9D.0020.0002] # LAO DIGIT FIVE +0F25 ; [.1F9D.0020.0002] # TIBETAN DIGIT FIVE +1045 ; [.1F9D.0020.0002] # MYANMAR DIGIT FIVE +1095 ; [.1F9D.0020.0002] # MYANMAR SHAN DIGIT FIVE +136D ; [.1F9D.0020.0002] # ETHIOPIC DIGIT FIVE +17E5 ; [.1F9D.0020.0002] # KHMER DIGIT FIVE +17F5 ; [.1F9D.0020.0002] # KHMER SYMBOL LEK ATTAK PRAM +1815 ; [.1F9D.0020.0002] # MONGOLIAN DIGIT FIVE +194B ; [.1F9D.0020.0002] # LIMBU DIGIT FIVE +19D5 ; [.1F9D.0020.0002] # NEW TAI LUE DIGIT FIVE +1A85 ; [.1F9D.0020.0002] # TAI THAM HORA DIGIT FIVE +1A95 ; [.1F9D.0020.0002] # TAI THAM THAM DIGIT FIVE +1B55 ; [.1F9D.0020.0002] # BALINESE DIGIT FIVE +1BB5 ; [.1F9D.0020.0002] # SUNDANESE DIGIT FIVE +1C45 ; [.1F9D.0020.0002] # LEPCHA DIGIT FIVE +1C55 ; [.1F9D.0020.0002] # OL CHIKI DIGIT FIVE +3025 ; [.1F9D.0020.0002] # HANGZHOU NUMERAL FIVE +A625 ; [.1F9D.0020.0002] # VAI DIGIT FIVE +A8D5 ; [.1F9D.0020.0002] # SAURASHTRA DIGIT FIVE +A905 ; [.1F9D.0020.0002] # KAYAH LI DIGIT FIVE +A9D5 ; [.1F9D.0020.0002] # JAVANESE DIGIT FIVE +A9F5 ; [.1F9D.0020.0002] # MYANMAR TAI LAING DIGIT FIVE +AA55 ; [.1F9D.0020.0002] # CHAM DIGIT FIVE +ABF5 ; [.1F9D.0020.0002] # MEETEI MAYEK DIGIT FIVE +1010B ; [.1F9D.0020.0002] # AEGEAN NUMBER FIVE +10143 ; [.1F9D.0020.0002] # GREEK ACROPHONIC ATTIC FIVE +10148 ; [.1F9D.0020.0002] # GREEK ACROPHONIC ATTIC FIVE TALENTS +1014F ; [.1F9D.0020.0002] # GREEK ACROPHONIC ATTIC FIVE STATERS +1015F ; [.1F9D.0020.0002] # GREEK ACROPHONIC TROEZENIAN FIVE +10173 ; [.1F9D.0020.0002] # GREEK ACROPHONIC DELPHIC FIVE MNAS +102E5 ; [.1F9D.0020.0002] # COPTIC EPACT DIGIT FIVE +10321 ; [.1F9D.0020.0002] # OLD ITALIC NUMERAL FIVE +104A5 ; [.1F9D.0020.0002] # OSMANYA DIGIT FIVE +1087D ; [.1F9D.0020.0002] # PALMYRENE NUMBER FIVE +108AC ; [.1F9D.0020.0002] # NABATAEAN NUMBER FIVE +108FC ; [.1F9D.0020.0002] # HATRAN NUMBER FIVE +109C4 ; [.1F9D.0020.0002] # MEROITIC CURSIVE NUMBER FIVE +10AEC ; [.1F9D.0020.0002] # MANICHAEAN NUMBER FIVE +10CFB ; [.1F9D.0020.0002] # OLD HUNGARIAN NUMBER FIVE +10D35 ; [.1F9D.0020.0002] # HANIFI ROHINGYA DIGIT FIVE +10E64 ; [.1F9D.0020.0002] # RUMI DIGIT FIVE +10F21 ; [.1F9D.0020.0002] # OLD SOGDIAN NUMBER FIVE +11056 ; [.1F9D.0020.0002] # BRAHMI NUMBER FIVE +1106B ; [.1F9D.0020.0002] # BRAHMI DIGIT FIVE +110F5 ; [.1F9D.0020.0002] # SORA SOMPENG DIGIT FIVE +1113B ; [.1F9D.0020.0002] # CHAKMA DIGIT FIVE +111D5 ; [.1F9D.0020.0002] # SHARADA DIGIT FIVE +111E5 ; [.1F9D.0020.0002] # SINHALA ARCHAIC DIGIT FIVE +112F5 ; [.1F9D.0020.0002] # KHUDAWADI DIGIT FIVE +11455 ; [.1F9D.0020.0002] # NEWA DIGIT FIVE +114D5 ; [.1F9D.0020.0002] # TIRHUTA DIGIT FIVE +11655 ; [.1F9D.0020.0002] # MODI DIGIT FIVE +116C5 ; [.1F9D.0020.0002] # TAKRI DIGIT FIVE +11735 ; [.1F9D.0020.0002] # AHOM DIGIT FIVE +118E5 ; [.1F9D.0020.0002] # WARANG CITI DIGIT FIVE +11955 ; [.1F9D.0020.0002] # DIVES AKURU DIGIT FIVE +11C55 ; [.1F9D.0020.0002] # BHAIKSUKI DIGIT FIVE +11C5E ; [.1F9D.0020.0002] # BHAIKSUKI NUMBER FIVE +11D55 ; [.1F9D.0020.0002] # MASARAM GONDI DIGIT FIVE +11DA5 ; [.1F9D.0020.0002] # GUNJALA GONDI DIGIT FIVE +12403 ; [.1F9D.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE ASH +1240A ; [.1F9D.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE DISH +12410 ; [.1F9D.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE U +12419 ; [.1F9D.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE GESH2 +12422 ; [.1F9D.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE GESHU +12427 ; [.1F9D.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE SHAR2 +12431 ; [.1F9D.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE SHARU +12439 ; [.1F9D.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE BURU +1244D ; [.1F9D.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE ASH TENU +12454 ; [.1F9D.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE BAN2 +12455 ; [.1F9D.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM +1246A ; [.1F9D.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE U VARIANT FORM +16A65 ; [.1F9D.0020.0002] # MRO DIGIT FIVE +16B55 ; [.1F9D.0020.0002] # PAHAWH HMONG DIGIT FIVE +16E85 ; [.1F9D.0020.0002] # MEDEFAIDRIN DIGIT FIVE +1D2E5 ; [.1F9D.0020.0002] # MAYAN NUMERAL FIVE +1D364 ; [.1F9D.0020.0002] # COUNTING ROD UNIT DIGIT FIVE +1D376 ; [.1F9D.0020.0002] # IDEOGRAPHIC TALLY MARK FIVE +1D378 ; [.1F9D.0020.0002] # TALLY MARK FIVE +1E145 ; [.1F9D.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT FIVE +1E2F5 ; [.1F9D.0020.0002] # WANCHO DIGIT FIVE +1E8CB ; [.1F9D.0020.0002] # MENDE KIKAKUI DIGIT FIVE +1E955 ; [.1F9D.0020.0002] # ADLAM DIGIT FIVE +1EC75 ; [.1F9D.0020.0002] # INDIC SIYAQ NUMBER FIVE +1ECA7 ; [.1F9D.0020.0002] # INDIC SIYAQ NUMBER PREFIXED FIVE +1ED05 ; [.1F9D.0020.0002] # OTTOMAN SIYAQ NUMBER FIVE +FF15 ; [.1F9D.0020.0003] # FULLWIDTH DIGIT FIVE +0F2E ; [.1F9D.0020.0004] # TIBETAN DIGIT HALF FIVE +2478 ; [*0328.0020.0004][.1F9D.0020.0004][*0329.0020.0004] # PARENTHESIZED DIGIT FIVE +248C ; [.1F9D.0020.0004][*027E.0020.0004] # DIGIT FIVE FULL STOP +1F106 ; [.1F9D.0020.0004][*0223.0020.0004] # DIGIT FIVE COMMA +1D7D3 ; [.1F9D.0020.0005] # MATHEMATICAL BOLD DIGIT FIVE +1D7DD ; [.1F9D.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE +1D7E7 ; [.1F9D.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT FIVE +1D7F1 ; [.1F9D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE +1D7FB ; [.1F9D.0020.0005] # MATHEMATICAL MONOSPACE DIGIT FIVE +1FBF5 ; [.1F9D.0020.0005] # SEGMENTED DIGIT FIVE +2464 ; [.1F9D.0020.0006] # CIRCLED DIGIT FIVE +24F9 ; [.1F9D.0020.0006] # DOUBLE CIRCLED DIGIT FIVE +277A ; [.1F9D.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT FIVE +2784 ; [.1F9D.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT FIVE +278E ; [.1F9D.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE +2075 ; [.1F9D.0020.0014] # SUPERSCRIPT FIVE +2085 ; [.1F9D.0020.0015] # SUBSCRIPT FIVE +1ED32 ; [.1F9D.0020.0004][.0000.0118.0004] # OTTOMAN SIYAQ ALTERNATE NUMBER FIVE +324C ; [.1F9D.0020.0006][.1F98.0020.0006] # CIRCLED NUMBER FIFTY ON BLACK SQUARE +32BF ; [.1F9D.0020.0006][.1F98.0020.0006] # CIRCLED NUMBER FIFTY +1F1A0 ; [.1F9D.0020.001C][*027E.0020.001C][.1F99.0020.001C] # SQUARED FIVE POINT ONE +215A ; [.1F9D.0020.001E][*0676.0020.001E][.1F9E.0020.001E] # VULGAR FRACTION FIVE SIXTHS +215D ; [.1F9D.0020.001E][*0676.0020.001E][.1FA0.0020.001E] # VULGAR FRACTION FIVE EIGHTHS +33E4 ; [.1F9D.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE +32C4 ; [.1F9D.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY +335D ; [.1F9D.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE +0036 ; [.1F9E.0020.0002] # DIGIT SIX +0666 ; [.1F9E.0020.0002] # ARABIC-INDIC DIGIT SIX +06F6 ; [.1F9E.0020.0002] # EXTENDED ARABIC-INDIC DIGIT SIX +07C6 ; [.1F9E.0020.0002] # NKO DIGIT SIX +096C ; [.1F9E.0020.0002] # DEVANAGARI DIGIT SIX +09EC ; [.1F9E.0020.0002] # BENGALI DIGIT SIX +0A6C ; [.1F9E.0020.0002] # GURMUKHI DIGIT SIX +0AEC ; [.1F9E.0020.0002] # GUJARATI DIGIT SIX +0B6C ; [.1F9E.0020.0002] # ORIYA DIGIT SIX +0BEC ; [.1F9E.0020.0002] # TAMIL DIGIT SIX +0C6C ; [.1F9E.0020.0002] # TELUGU DIGIT SIX +0CEC ; [.1F9E.0020.0002] # KANNADA DIGIT SIX +0D6C ; [.1F9E.0020.0002] # MALAYALAM DIGIT SIX +0DEC ; [.1F9E.0020.0002] # SINHALA LITH DIGIT SIX +0E56 ; [.1F9E.0020.0002] # THAI DIGIT SIX +0ED6 ; [.1F9E.0020.0002] # LAO DIGIT SIX +0F26 ; [.1F9E.0020.0002] # TIBETAN DIGIT SIX +1046 ; [.1F9E.0020.0002] # MYANMAR DIGIT SIX +1096 ; [.1F9E.0020.0002] # MYANMAR SHAN DIGIT SIX +136E ; [.1F9E.0020.0002] # ETHIOPIC DIGIT SIX +17E6 ; [.1F9E.0020.0002] # KHMER DIGIT SIX +17F6 ; [.1F9E.0020.0002] # KHMER SYMBOL LEK ATTAK PRAM-MUOY +1816 ; [.1F9E.0020.0002] # MONGOLIAN DIGIT SIX +194C ; [.1F9E.0020.0002] # LIMBU DIGIT SIX +19D6 ; [.1F9E.0020.0002] # NEW TAI LUE DIGIT SIX +1A86 ; [.1F9E.0020.0002] # TAI THAM HORA DIGIT SIX +1A96 ; [.1F9E.0020.0002] # TAI THAM THAM DIGIT SIX +1B56 ; [.1F9E.0020.0002] # BALINESE DIGIT SIX +1BB6 ; [.1F9E.0020.0002] # SUNDANESE DIGIT SIX +1C46 ; [.1F9E.0020.0002] # LEPCHA DIGIT SIX +1C56 ; [.1F9E.0020.0002] # OL CHIKI DIGIT SIX +2185 ; [.1F9E.0020.0002] # ROMAN NUMERAL SIX LATE FORM +3026 ; [.1F9E.0020.0002] # HANGZHOU NUMERAL SIX +A626 ; [.1F9E.0020.0002] # VAI DIGIT SIX +A8D6 ; [.1F9E.0020.0002] # SAURASHTRA DIGIT SIX +A906 ; [.1F9E.0020.0002] # KAYAH LI DIGIT SIX +A9D6 ; [.1F9E.0020.0002] # JAVANESE DIGIT SIX +A9F6 ; [.1F9E.0020.0002] # MYANMAR TAI LAING DIGIT SIX +AA56 ; [.1F9E.0020.0002] # CHAM DIGIT SIX +ABF6 ; [.1F9E.0020.0002] # MEETEI MAYEK DIGIT SIX +1010C ; [.1F9E.0020.0002] # AEGEAN NUMBER SIX +102E6 ; [.1F9E.0020.0002] # COPTIC EPACT DIGIT SIX +104A6 ; [.1F9E.0020.0002] # OSMANYA DIGIT SIX +109C5 ; [.1F9E.0020.0002] # MEROITIC CURSIVE NUMBER SIX +10D36 ; [.1F9E.0020.0002] # HANIFI ROHINGYA DIGIT SIX +10E65 ; [.1F9E.0020.0002] # RUMI DIGIT SIX +11057 ; [.1F9E.0020.0002] # BRAHMI NUMBER SIX +1106C ; [.1F9E.0020.0002] # BRAHMI DIGIT SIX +110F6 ; [.1F9E.0020.0002] # SORA SOMPENG DIGIT SIX +1113C ; [.1F9E.0020.0002] # CHAKMA DIGIT SIX +111D6 ; [.1F9E.0020.0002] # SHARADA DIGIT SIX +111E6 ; [.1F9E.0020.0002] # SINHALA ARCHAIC DIGIT SIX +112F6 ; [.1F9E.0020.0002] # KHUDAWADI DIGIT SIX +11456 ; [.1F9E.0020.0002] # NEWA DIGIT SIX +114D6 ; [.1F9E.0020.0002] # TIRHUTA DIGIT SIX +11656 ; [.1F9E.0020.0002] # MODI DIGIT SIX +116C6 ; [.1F9E.0020.0002] # TAKRI DIGIT SIX +11736 ; [.1F9E.0020.0002] # AHOM DIGIT SIX +118E6 ; [.1F9E.0020.0002] # WARANG CITI DIGIT SIX +11956 ; [.1F9E.0020.0002] # DIVES AKURU DIGIT SIX +11C56 ; [.1F9E.0020.0002] # BHAIKSUKI DIGIT SIX +11C5F ; [.1F9E.0020.0002] # BHAIKSUKI NUMBER SIX +11D56 ; [.1F9E.0020.0002] # MASARAM GONDI DIGIT SIX +11DA6 ; [.1F9E.0020.0002] # GUNJALA GONDI DIGIT SIX +12404 ; [.1F9E.0020.0002] # CUNEIFORM NUMERIC SIGN SIX ASH +1240B ; [.1F9E.0020.0002] # CUNEIFORM NUMERIC SIGN SIX DISH +12411 ; [.1F9E.0020.0002] # CUNEIFORM NUMERIC SIGN SIX U +1241A ; [.1F9E.0020.0002] # CUNEIFORM NUMERIC SIGN SIX GESH2 +12428 ; [.1F9E.0020.0002] # CUNEIFORM NUMERIC SIGN SIX SHAR2 +12440 ; [.1F9E.0020.0002] # CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9 +1244E ; [.1F9E.0020.0002] # CUNEIFORM NUMERIC SIGN SIX ASH TENU +1246B ; [.1F9E.0020.0002] # CUNEIFORM NUMERIC SIGN SIX U VARIANT FORM +16A66 ; [.1F9E.0020.0002] # MRO DIGIT SIX +16B56 ; [.1F9E.0020.0002] # PAHAWH HMONG DIGIT SIX +16E86 ; [.1F9E.0020.0002] # MEDEFAIDRIN DIGIT SIX +1D2E6 ; [.1F9E.0020.0002] # MAYAN NUMERAL SIX +1D365 ; [.1F9E.0020.0002] # COUNTING ROD UNIT DIGIT SIX +1E146 ; [.1F9E.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT SIX +1E2F6 ; [.1F9E.0020.0002] # WANCHO DIGIT SIX +1E8CC ; [.1F9E.0020.0002] # MENDE KIKAKUI DIGIT SIX +1E956 ; [.1F9E.0020.0002] # ADLAM DIGIT SIX +1EC76 ; [.1F9E.0020.0002] # INDIC SIYAQ NUMBER SIX +1ECA8 ; [.1F9E.0020.0002] # INDIC SIYAQ NUMBER PREFIXED SIX +1ED06 ; [.1F9E.0020.0002] # OTTOMAN SIYAQ NUMBER SIX +FF16 ; [.1F9E.0020.0003] # FULLWIDTH DIGIT SIX +0F2F ; [.1F9E.0020.0004] # TIBETAN DIGIT HALF SIX +2479 ; [*0328.0020.0004][.1F9E.0020.0004][*0329.0020.0004] # PARENTHESIZED DIGIT SIX +248D ; [.1F9E.0020.0004][*027E.0020.0004] # DIGIT SIX FULL STOP +1F107 ; [.1F9E.0020.0004][*0223.0020.0004] # DIGIT SIX COMMA +1D7D4 ; [.1F9E.0020.0005] # MATHEMATICAL BOLD DIGIT SIX +1D7DE ; [.1F9E.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT SIX +1D7E8 ; [.1F9E.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT SIX +1D7F2 ; [.1F9E.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT SIX +1D7FC ; [.1F9E.0020.0005] # MATHEMATICAL MONOSPACE DIGIT SIX +1FBF6 ; [.1F9E.0020.0005] # SEGMENTED DIGIT SIX +2465 ; [.1F9E.0020.0006] # CIRCLED DIGIT SIX +24FA ; [.1F9E.0020.0006] # DOUBLE CIRCLED DIGIT SIX +277B ; [.1F9E.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT SIX +2785 ; [.1F9E.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT SIX +278F ; [.1F9E.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX +2076 ; [.1F9E.0020.0014] # SUPERSCRIPT SIX +2086 ; [.1F9E.0020.0015] # SUBSCRIPT SIX +1ED33 ; [.1F9E.0020.0004][.0000.0118.0004] # OTTOMAN SIYAQ ALTERNATE NUMBER SIX +324D ; [.1F9E.0020.0006][.1F98.0020.0006] # CIRCLED NUMBER SIXTY ON BLACK SQUARE +1F1A3 ; [.1F9E.0020.001C][.1F98.0020.001C][.216B.0020.001D] # SQUARED SIXTY P +33E5 ; [.1F9E.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX +32C5 ; [.1F9E.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE +335E ; [.1F9E.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX +0037 ; [.1F9F.0020.0002] # DIGIT SEVEN +0667 ; [.1F9F.0020.0002] # ARABIC-INDIC DIGIT SEVEN +06F7 ; [.1F9F.0020.0002] # EXTENDED ARABIC-INDIC DIGIT SEVEN +07C7 ; [.1F9F.0020.0002] # NKO DIGIT SEVEN +096D ; [.1F9F.0020.0002] # DEVANAGARI DIGIT SEVEN +09ED ; [.1F9F.0020.0002] # BENGALI DIGIT SEVEN +0A6D ; [.1F9F.0020.0002] # GURMUKHI DIGIT SEVEN +0AED ; [.1F9F.0020.0002] # GUJARATI DIGIT SEVEN +0B6D ; [.1F9F.0020.0002] # ORIYA DIGIT SEVEN +0BED ; [.1F9F.0020.0002] # TAMIL DIGIT SEVEN +0C6D ; [.1F9F.0020.0002] # TELUGU DIGIT SEVEN +0CED ; [.1F9F.0020.0002] # KANNADA DIGIT SEVEN +0D6D ; [.1F9F.0020.0002] # MALAYALAM DIGIT SEVEN +0DED ; [.1F9F.0020.0002] # SINHALA LITH DIGIT SEVEN +0E57 ; [.1F9F.0020.0002] # THAI DIGIT SEVEN +0ED7 ; [.1F9F.0020.0002] # LAO DIGIT SEVEN +0F27 ; [.1F9F.0020.0002] # TIBETAN DIGIT SEVEN +1047 ; [.1F9F.0020.0002] # MYANMAR DIGIT SEVEN +1097 ; [.1F9F.0020.0002] # MYANMAR SHAN DIGIT SEVEN +136F ; [.1F9F.0020.0002] # ETHIOPIC DIGIT SEVEN +17E7 ; [.1F9F.0020.0002] # KHMER DIGIT SEVEN +17F7 ; [.1F9F.0020.0002] # KHMER SYMBOL LEK ATTAK PRAM-PII +1817 ; [.1F9F.0020.0002] # MONGOLIAN DIGIT SEVEN +194D ; [.1F9F.0020.0002] # LIMBU DIGIT SEVEN +19D7 ; [.1F9F.0020.0002] # NEW TAI LUE DIGIT SEVEN +1A87 ; [.1F9F.0020.0002] # TAI THAM HORA DIGIT SEVEN +1A97 ; [.1F9F.0020.0002] # TAI THAM THAM DIGIT SEVEN +1B57 ; [.1F9F.0020.0002] # BALINESE DIGIT SEVEN +1BB7 ; [.1F9F.0020.0002] # SUNDANESE DIGIT SEVEN +1C47 ; [.1F9F.0020.0002] # LEPCHA DIGIT SEVEN +1C57 ; [.1F9F.0020.0002] # OL CHIKI DIGIT SEVEN +3027 ; [.1F9F.0020.0002] # HANGZHOU NUMERAL SEVEN +A627 ; [.1F9F.0020.0002] # VAI DIGIT SEVEN +A8D7 ; [.1F9F.0020.0002] # SAURASHTRA DIGIT SEVEN +A907 ; [.1F9F.0020.0002] # KAYAH LI DIGIT SEVEN +A9D7 ; [.1F9F.0020.0002] # JAVANESE DIGIT SEVEN +A9F7 ; [.1F9F.0020.0002] # MYANMAR TAI LAING DIGIT SEVEN +AA57 ; [.1F9F.0020.0002] # CHAM DIGIT SEVEN +ABF7 ; [.1F9F.0020.0002] # MEETEI MAYEK DIGIT SEVEN +1010D ; [.1F9F.0020.0002] # AEGEAN NUMBER SEVEN +102E7 ; [.1F9F.0020.0002] # COPTIC EPACT DIGIT SEVEN +104A7 ; [.1F9F.0020.0002] # OSMANYA DIGIT SEVEN +109C6 ; [.1F9F.0020.0002] # MEROITIC CURSIVE NUMBER SEVEN +10D37 ; [.1F9F.0020.0002] # HANIFI ROHINGYA DIGIT SEVEN +10E66 ; [.1F9F.0020.0002] # RUMI DIGIT SEVEN +11058 ; [.1F9F.0020.0002] # BRAHMI NUMBER SEVEN +1106D ; [.1F9F.0020.0002] # BRAHMI DIGIT SEVEN +110F7 ; [.1F9F.0020.0002] # SORA SOMPENG DIGIT SEVEN +1113D ; [.1F9F.0020.0002] # CHAKMA DIGIT SEVEN +111D7 ; [.1F9F.0020.0002] # SHARADA DIGIT SEVEN +111E7 ; [.1F9F.0020.0002] # SINHALA ARCHAIC DIGIT SEVEN +112F7 ; [.1F9F.0020.0002] # KHUDAWADI DIGIT SEVEN +11457 ; [.1F9F.0020.0002] # NEWA DIGIT SEVEN +114D7 ; [.1F9F.0020.0002] # TIRHUTA DIGIT SEVEN +11657 ; [.1F9F.0020.0002] # MODI DIGIT SEVEN +116C7 ; [.1F9F.0020.0002] # TAKRI DIGIT SEVEN +11737 ; [.1F9F.0020.0002] # AHOM DIGIT SEVEN +118E7 ; [.1F9F.0020.0002] # WARANG CITI DIGIT SEVEN +11957 ; [.1F9F.0020.0002] # DIVES AKURU DIGIT SEVEN +11C57 ; [.1F9F.0020.0002] # BHAIKSUKI DIGIT SEVEN +11C60 ; [.1F9F.0020.0002] # BHAIKSUKI NUMBER SEVEN +11D57 ; [.1F9F.0020.0002] # MASARAM GONDI DIGIT SEVEN +11DA7 ; [.1F9F.0020.0002] # GUNJALA GONDI DIGIT SEVEN +12405 ; [.1F9F.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN ASH +1240C ; [.1F9F.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN DISH +12412 ; [.1F9F.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN U +1241B ; [.1F9F.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN GESH2 +12429 ; [.1F9F.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN SHAR2 +12441 ; [.1F9F.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3 +12442 ; [.1F9F.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A +12443 ; [.1F9F.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B +1246C ; [.1F9F.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN U VARIANT FORM +16A67 ; [.1F9F.0020.0002] # MRO DIGIT SEVEN +16B57 ; [.1F9F.0020.0002] # PAHAWH HMONG DIGIT SEVEN +16E87 ; [.1F9F.0020.0002] # MEDEFAIDRIN DIGIT SEVEN +1D2E7 ; [.1F9F.0020.0002] # MAYAN NUMERAL SEVEN +1D366 ; [.1F9F.0020.0002] # COUNTING ROD UNIT DIGIT SEVEN +1E147 ; [.1F9F.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT SEVEN +1E2F7 ; [.1F9F.0020.0002] # WANCHO DIGIT SEVEN +1E8CD ; [.1F9F.0020.0002] # MENDE KIKAKUI DIGIT SEVEN +1E957 ; [.1F9F.0020.0002] # ADLAM DIGIT SEVEN +1EC77 ; [.1F9F.0020.0002] # INDIC SIYAQ NUMBER SEVEN +1ECA9 ; [.1F9F.0020.0002] # INDIC SIYAQ NUMBER PREFIXED SEVEN +1ED07 ; [.1F9F.0020.0002] # OTTOMAN SIYAQ NUMBER SEVEN +FF17 ; [.1F9F.0020.0003] # FULLWIDTH DIGIT SEVEN +0F30 ; [.1F9F.0020.0004] # TIBETAN DIGIT HALF SEVEN +247A ; [*0328.0020.0004][.1F9F.0020.0004][*0329.0020.0004] # PARENTHESIZED DIGIT SEVEN +248E ; [.1F9F.0020.0004][*027E.0020.0004] # DIGIT SEVEN FULL STOP +1F108 ; [.1F9F.0020.0004][*0223.0020.0004] # DIGIT SEVEN COMMA +1D7D5 ; [.1F9F.0020.0005] # MATHEMATICAL BOLD DIGIT SEVEN +1D7DF ; [.1F9F.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN +1D7E9 ; [.1F9F.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT SEVEN +1D7F3 ; [.1F9F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN +1D7FD ; [.1F9F.0020.0005] # MATHEMATICAL MONOSPACE DIGIT SEVEN +1FBF7 ; [.1F9F.0020.0005] # SEGMENTED DIGIT SEVEN +2466 ; [.1F9F.0020.0006] # CIRCLED DIGIT SEVEN +24FB ; [.1F9F.0020.0006] # DOUBLE CIRCLED DIGIT SEVEN +277C ; [.1F9F.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN +2786 ; [.1F9F.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN +2790 ; [.1F9F.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN +2077 ; [.1F9F.0020.0014] # SUPERSCRIPT SEVEN +2087 ; [.1F9F.0020.0015] # SUBSCRIPT SEVEN +1ED34 ; [.1F9F.0020.0004][.0000.0118.0004] # OTTOMAN SIYAQ ALTERNATE NUMBER SEVEN +324E ; [.1F9F.0020.0006][.1F98.0020.0006] # CIRCLED NUMBER SEVENTY ON BLACK SQUARE +1F1A1 ; [.1F9F.0020.001C][*027E.0020.001C][.1F99.0020.001C] # SQUARED SEVEN POINT ONE +215E ; [.1F9F.0020.001E][*0676.0020.001E][.1FA0.0020.001E] # VULGAR FRACTION SEVEN EIGHTHS +33E6 ; [.1F9F.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN +32C6 ; [.1F9F.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY +335F ; [.1F9F.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN +0038 ; [.1FA0.0020.0002] # DIGIT EIGHT +0668 ; [.1FA0.0020.0002] # ARABIC-INDIC DIGIT EIGHT +06F8 ; [.1FA0.0020.0002] # EXTENDED ARABIC-INDIC DIGIT EIGHT +07C8 ; [.1FA0.0020.0002] # NKO DIGIT EIGHT +096E ; [.1FA0.0020.0002] # DEVANAGARI DIGIT EIGHT +09EE ; [.1FA0.0020.0002] # BENGALI DIGIT EIGHT +0A6E ; [.1FA0.0020.0002] # GURMUKHI DIGIT EIGHT +0AEE ; [.1FA0.0020.0002] # GUJARATI DIGIT EIGHT +0B6E ; [.1FA0.0020.0002] # ORIYA DIGIT EIGHT +0BEE ; [.1FA0.0020.0002] # TAMIL DIGIT EIGHT +0C6E ; [.1FA0.0020.0002] # TELUGU DIGIT EIGHT +0CEE ; [.1FA0.0020.0002] # KANNADA DIGIT EIGHT +0D6E ; [.1FA0.0020.0002] # MALAYALAM DIGIT EIGHT +0DEE ; [.1FA0.0020.0002] # SINHALA LITH DIGIT EIGHT +0E58 ; [.1FA0.0020.0002] # THAI DIGIT EIGHT +0ED8 ; [.1FA0.0020.0002] # LAO DIGIT EIGHT +0F28 ; [.1FA0.0020.0002] # TIBETAN DIGIT EIGHT +1048 ; [.1FA0.0020.0002] # MYANMAR DIGIT EIGHT +1098 ; [.1FA0.0020.0002] # MYANMAR SHAN DIGIT EIGHT +1370 ; [.1FA0.0020.0002] # ETHIOPIC DIGIT EIGHT +17E8 ; [.1FA0.0020.0002] # KHMER DIGIT EIGHT +17F8 ; [.1FA0.0020.0002] # KHMER SYMBOL LEK ATTAK PRAM-BEI +1818 ; [.1FA0.0020.0002] # MONGOLIAN DIGIT EIGHT +194E ; [.1FA0.0020.0002] # LIMBU DIGIT EIGHT +19D8 ; [.1FA0.0020.0002] # NEW TAI LUE DIGIT EIGHT +1A88 ; [.1FA0.0020.0002] # TAI THAM HORA DIGIT EIGHT +1A98 ; [.1FA0.0020.0002] # TAI THAM THAM DIGIT EIGHT +1B58 ; [.1FA0.0020.0002] # BALINESE DIGIT EIGHT +1BB8 ; [.1FA0.0020.0002] # SUNDANESE DIGIT EIGHT +1C48 ; [.1FA0.0020.0002] # LEPCHA DIGIT EIGHT +1C58 ; [.1FA0.0020.0002] # OL CHIKI DIGIT EIGHT +3028 ; [.1FA0.0020.0002] # HANGZHOU NUMERAL EIGHT +A628 ; [.1FA0.0020.0002] # VAI DIGIT EIGHT +A8D8 ; [.1FA0.0020.0002] # SAURASHTRA DIGIT EIGHT +A908 ; [.1FA0.0020.0002] # KAYAH LI DIGIT EIGHT +A9D8 ; [.1FA0.0020.0002] # JAVANESE DIGIT EIGHT +A9F8 ; [.1FA0.0020.0002] # MYANMAR TAI LAING DIGIT EIGHT +AA58 ; [.1FA0.0020.0002] # CHAM DIGIT EIGHT +ABF8 ; [.1FA0.0020.0002] # MEETEI MAYEK DIGIT EIGHT +1010E ; [.1FA0.0020.0002] # AEGEAN NUMBER EIGHT +102E8 ; [.1FA0.0020.0002] # COPTIC EPACT DIGIT EIGHT +104A8 ; [.1FA0.0020.0002] # OSMANYA DIGIT EIGHT +109C7 ; [.1FA0.0020.0002] # MEROITIC CURSIVE NUMBER EIGHT +10D38 ; [.1FA0.0020.0002] # HANIFI ROHINGYA DIGIT EIGHT +10E67 ; [.1FA0.0020.0002] # RUMI DIGIT EIGHT +11059 ; [.1FA0.0020.0002] # BRAHMI NUMBER EIGHT +1106E ; [.1FA0.0020.0002] # BRAHMI DIGIT EIGHT +110F8 ; [.1FA0.0020.0002] # SORA SOMPENG DIGIT EIGHT +1113E ; [.1FA0.0020.0002] # CHAKMA DIGIT EIGHT +111D8 ; [.1FA0.0020.0002] # SHARADA DIGIT EIGHT +111E8 ; [.1FA0.0020.0002] # SINHALA ARCHAIC DIGIT EIGHT +112F8 ; [.1FA0.0020.0002] # KHUDAWADI DIGIT EIGHT +11458 ; [.1FA0.0020.0002] # NEWA DIGIT EIGHT +114D8 ; [.1FA0.0020.0002] # TIRHUTA DIGIT EIGHT +11658 ; [.1FA0.0020.0002] # MODI DIGIT EIGHT +116C8 ; [.1FA0.0020.0002] # TAKRI DIGIT EIGHT +11738 ; [.1FA0.0020.0002] # AHOM DIGIT EIGHT +118E8 ; [.1FA0.0020.0002] # WARANG CITI DIGIT EIGHT +11958 ; [.1FA0.0020.0002] # DIVES AKURU DIGIT EIGHT +11C58 ; [.1FA0.0020.0002] # BHAIKSUKI DIGIT EIGHT +11C61 ; [.1FA0.0020.0002] # BHAIKSUKI NUMBER EIGHT +11D58 ; [.1FA0.0020.0002] # MASARAM GONDI DIGIT EIGHT +11DA8 ; [.1FA0.0020.0002] # GUNJALA GONDI DIGIT EIGHT +12406 ; [.1FA0.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT ASH +1240D ; [.1FA0.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT DISH +12413 ; [.1FA0.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT U +1241C ; [.1FA0.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT GESH2 +1242A ; [.1FA0.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT SHAR2 +12444 ; [.1FA0.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU +12445 ; [.1FA0.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3 +1246D ; [.1FA0.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT U VARIANT FORM +16A68 ; [.1FA0.0020.0002] # MRO DIGIT EIGHT +16B58 ; [.1FA0.0020.0002] # PAHAWH HMONG DIGIT EIGHT +16E88 ; [.1FA0.0020.0002] # MEDEFAIDRIN DIGIT EIGHT +1D2E8 ; [.1FA0.0020.0002] # MAYAN NUMERAL EIGHT +1D367 ; [.1FA0.0020.0002] # COUNTING ROD UNIT DIGIT EIGHT +1E148 ; [.1FA0.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT EIGHT +1E2F8 ; [.1FA0.0020.0002] # WANCHO DIGIT EIGHT +1E8CE ; [.1FA0.0020.0002] # MENDE KIKAKUI DIGIT EIGHT +1E958 ; [.1FA0.0020.0002] # ADLAM DIGIT EIGHT +1EC78 ; [.1FA0.0020.0002] # INDIC SIYAQ NUMBER EIGHT +1ECAA ; [.1FA0.0020.0002] # INDIC SIYAQ NUMBER PREFIXED EIGHT +1ED08 ; [.1FA0.0020.0002] # OTTOMAN SIYAQ NUMBER EIGHT +FF18 ; [.1FA0.0020.0003] # FULLWIDTH DIGIT EIGHT +0F31 ; [.1FA0.0020.0004] # TIBETAN DIGIT HALF EIGHT +247B ; [*0328.0020.0004][.1FA0.0020.0004][*0329.0020.0004] # PARENTHESIZED DIGIT EIGHT +248F ; [.1FA0.0020.0004][*027E.0020.0004] # DIGIT EIGHT FULL STOP +1F109 ; [.1FA0.0020.0004][*0223.0020.0004] # DIGIT EIGHT COMMA +1D7D6 ; [.1FA0.0020.0005] # MATHEMATICAL BOLD DIGIT EIGHT +1D7E0 ; [.1FA0.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT +1D7EA ; [.1FA0.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT EIGHT +1D7F4 ; [.1FA0.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT +1D7FE ; [.1FA0.0020.0005] # MATHEMATICAL MONOSPACE DIGIT EIGHT +1FBF8 ; [.1FA0.0020.0005] # SEGMENTED DIGIT EIGHT +2467 ; [.1FA0.0020.0006] # CIRCLED DIGIT EIGHT +24FC ; [.1FA0.0020.0006] # DOUBLE CIRCLED DIGIT EIGHT +277D ; [.1FA0.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT +2787 ; [.1FA0.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT +2791 ; [.1FA0.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT +2078 ; [.1FA0.0020.0014] # SUPERSCRIPT EIGHT +2088 ; [.1FA0.0020.0015] # SUBSCRIPT EIGHT +1ED35 ; [.1FA0.0020.0004][.0000.0118.0004] # OTTOMAN SIYAQ ALTERNATE NUMBER EIGHT +324F ; [.1FA0.0020.0006][.1F98.0020.0006] # CIRCLED NUMBER EIGHTY ON BLACK SQUARE +1F19F ; [.1FA0.0020.001C][.20C4.0020.001D] # SQUARED EIGHT K +33E7 ; [.1FA0.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT +32C7 ; [.1FA0.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST +3360 ; [.1FA0.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT +0039 ; [.1FA1.0020.0002] # DIGIT NINE +0669 ; [.1FA1.0020.0002] # ARABIC-INDIC DIGIT NINE +06F9 ; [.1FA1.0020.0002] # EXTENDED ARABIC-INDIC DIGIT NINE +07C9 ; [.1FA1.0020.0002] # NKO DIGIT NINE +096F ; [.1FA1.0020.0002] # DEVANAGARI DIGIT NINE +09EF ; [.1FA1.0020.0002] # BENGALI DIGIT NINE +0A6F ; [.1FA1.0020.0002] # GURMUKHI DIGIT NINE +0AEF ; [.1FA1.0020.0002] # GUJARATI DIGIT NINE +0B6F ; [.1FA1.0020.0002] # ORIYA DIGIT NINE +0BEF ; [.1FA1.0020.0002] # TAMIL DIGIT NINE +0C6F ; [.1FA1.0020.0002] # TELUGU DIGIT NINE +0CEF ; [.1FA1.0020.0002] # KANNADA DIGIT NINE +0D6F ; [.1FA1.0020.0002] # MALAYALAM DIGIT NINE +0DEF ; [.1FA1.0020.0002] # SINHALA LITH DIGIT NINE +0E59 ; [.1FA1.0020.0002] # THAI DIGIT NINE +0ED9 ; [.1FA1.0020.0002] # LAO DIGIT NINE +0F29 ; [.1FA1.0020.0002] # TIBETAN DIGIT NINE +1049 ; [.1FA1.0020.0002] # MYANMAR DIGIT NINE +1099 ; [.1FA1.0020.0002] # MYANMAR SHAN DIGIT NINE +1371 ; [.1FA1.0020.0002] # ETHIOPIC DIGIT NINE +17E9 ; [.1FA1.0020.0002] # KHMER DIGIT NINE +17F9 ; [.1FA1.0020.0002] # KHMER SYMBOL LEK ATTAK PRAM-BUON +1819 ; [.1FA1.0020.0002] # MONGOLIAN DIGIT NINE +194F ; [.1FA1.0020.0002] # LIMBU DIGIT NINE +19D9 ; [.1FA1.0020.0002] # NEW TAI LUE DIGIT NINE +1A89 ; [.1FA1.0020.0002] # TAI THAM HORA DIGIT NINE +1A99 ; [.1FA1.0020.0002] # TAI THAM THAM DIGIT NINE +1B59 ; [.1FA1.0020.0002] # BALINESE DIGIT NINE +1BB9 ; [.1FA1.0020.0002] # SUNDANESE DIGIT NINE +1C49 ; [.1FA1.0020.0002] # LEPCHA DIGIT NINE +1C59 ; [.1FA1.0020.0002] # OL CHIKI DIGIT NINE +3029 ; [.1FA1.0020.0002] # HANGZHOU NUMERAL NINE +A629 ; [.1FA1.0020.0002] # VAI DIGIT NINE +A8D9 ; [.1FA1.0020.0002] # SAURASHTRA DIGIT NINE +A909 ; [.1FA1.0020.0002] # KAYAH LI DIGIT NINE +A9D9 ; [.1FA1.0020.0002] # JAVANESE DIGIT NINE +A9F9 ; [.1FA1.0020.0002] # MYANMAR TAI LAING DIGIT NINE +AA59 ; [.1FA1.0020.0002] # CHAM DIGIT NINE +ABF9 ; [.1FA1.0020.0002] # MEETEI MAYEK DIGIT NINE +1010F ; [.1FA1.0020.0002] # AEGEAN NUMBER NINE +102E9 ; [.1FA1.0020.0002] # COPTIC EPACT DIGIT NINE +104A9 ; [.1FA1.0020.0002] # OSMANYA DIGIT NINE +109C8 ; [.1FA1.0020.0002] # MEROITIC CURSIVE NUMBER NINE +10D39 ; [.1FA1.0020.0002] # HANIFI ROHINGYA DIGIT NINE +10E68 ; [.1FA1.0020.0002] # RUMI DIGIT NINE +1105A ; [.1FA1.0020.0002] # BRAHMI NUMBER NINE +1106F ; [.1FA1.0020.0002] # BRAHMI DIGIT NINE +110F9 ; [.1FA1.0020.0002] # SORA SOMPENG DIGIT NINE +1113F ; [.1FA1.0020.0002] # CHAKMA DIGIT NINE +111D9 ; [.1FA1.0020.0002] # SHARADA DIGIT NINE +111E9 ; [.1FA1.0020.0002] # SINHALA ARCHAIC DIGIT NINE +112F9 ; [.1FA1.0020.0002] # KHUDAWADI DIGIT NINE +11459 ; [.1FA1.0020.0002] # NEWA DIGIT NINE +114D9 ; [.1FA1.0020.0002] # TIRHUTA DIGIT NINE +11659 ; [.1FA1.0020.0002] # MODI DIGIT NINE +116C9 ; [.1FA1.0020.0002] # TAKRI DIGIT NINE +11739 ; [.1FA1.0020.0002] # AHOM DIGIT NINE +118E9 ; [.1FA1.0020.0002] # WARANG CITI DIGIT NINE +11959 ; [.1FA1.0020.0002] # DIVES AKURU DIGIT NINE +11C59 ; [.1FA1.0020.0002] # BHAIKSUKI DIGIT NINE +11C62 ; [.1FA1.0020.0002] # BHAIKSUKI NUMBER NINE +11D59 ; [.1FA1.0020.0002] # MASARAM GONDI DIGIT NINE +11DA9 ; [.1FA1.0020.0002] # GUNJALA GONDI DIGIT NINE +12407 ; [.1FA1.0020.0002] # CUNEIFORM NUMERIC SIGN NINE ASH +1240E ; [.1FA1.0020.0002] # CUNEIFORM NUMERIC SIGN NINE DISH +12414 ; [.1FA1.0020.0002] # CUNEIFORM NUMERIC SIGN NINE U +1241D ; [.1FA1.0020.0002] # CUNEIFORM NUMERIC SIGN NINE GESH2 +1242B ; [.1FA1.0020.0002] # CUNEIFORM NUMERIC SIGN NINE SHAR2 +12446 ; [.1FA1.0020.0002] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU +12447 ; [.1FA1.0020.0002] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3 +12448 ; [.1FA1.0020.0002] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4 +12449 ; [.1FA1.0020.0002] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A +1246E ; [.1FA1.0020.0002] # CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM +16A69 ; [.1FA1.0020.0002] # MRO DIGIT NINE +16B59 ; [.1FA1.0020.0002] # PAHAWH HMONG DIGIT NINE +16E89 ; [.1FA1.0020.0002] # MEDEFAIDRIN DIGIT NINE +1D2E9 ; [.1FA1.0020.0002] # MAYAN NUMERAL NINE +1D368 ; [.1FA1.0020.0002] # COUNTING ROD UNIT DIGIT NINE +1E149 ; [.1FA1.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT NINE +1E2F9 ; [.1FA1.0020.0002] # WANCHO DIGIT NINE +1E8CF ; [.1FA1.0020.0002] # MENDE KIKAKUI DIGIT NINE +1E959 ; [.1FA1.0020.0002] # ADLAM DIGIT NINE +1EC79 ; [.1FA1.0020.0002] # INDIC SIYAQ NUMBER NINE +1ECAB ; [.1FA1.0020.0002] # INDIC SIYAQ NUMBER PREFIXED NINE +1ED09 ; [.1FA1.0020.0002] # OTTOMAN SIYAQ NUMBER NINE +FF19 ; [.1FA1.0020.0003] # FULLWIDTH DIGIT NINE +0F32 ; [.1FA1.0020.0004] # TIBETAN DIGIT HALF NINE +247C ; [*0328.0020.0004][.1FA1.0020.0004][*0329.0020.0004] # PARENTHESIZED DIGIT NINE +2490 ; [.1FA1.0020.0004][*027E.0020.0004] # DIGIT NINE FULL STOP +1F10A ; [.1FA1.0020.0004][*0223.0020.0004] # DIGIT NINE COMMA +1D7D7 ; [.1FA1.0020.0005] # MATHEMATICAL BOLD DIGIT NINE +1D7E1 ; [.1FA1.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT NINE +1D7EB ; [.1FA1.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT NINE +1D7F5 ; [.1FA1.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT NINE +1D7FF ; [.1FA1.0020.0005] # MATHEMATICAL MONOSPACE DIGIT NINE +1FBF9 ; [.1FA1.0020.0005] # SEGMENTED DIGIT NINE +2468 ; [.1FA1.0020.0006] # CIRCLED DIGIT NINE +24FD ; [.1FA1.0020.0006] # DOUBLE CIRCLED DIGIT NINE +277E ; [.1FA1.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT NINE +2788 ; [.1FA1.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT NINE +2792 ; [.1FA1.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE +2079 ; [.1FA1.0020.0014] # SUPERSCRIPT NINE +2089 ; [.1FA1.0020.0015] # SUBSCRIPT NINE +1ED36 ; [.1FA1.0020.0004][.0000.0118.0004] # OTTOMAN SIYAQ ALTERNATE NUMBER NINE +33E8 ; [.1FA1.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE +32C8 ; [.1FA1.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER +3361 ; [.1FA1.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE +0061 ; [.1FA2.0020.0002] # LATIN SMALL LETTER A +FF41 ; [.1FA2.0020.0003] # FULLWIDTH LATIN SMALL LETTER A +0363 ; [.1FA2.0020.0004] # COMBINING LATIN SMALL LETTER A +249C ; [*0328.0020.0004][.1FA2.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER A +1D41A ; [.1FA2.0020.0005] # MATHEMATICAL BOLD SMALL A +1D44E ; [.1FA2.0020.0005] # MATHEMATICAL ITALIC SMALL A +1D482 ; [.1FA2.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL A +1D4B6 ; [.1FA2.0020.0005] # MATHEMATICAL SCRIPT SMALL A +1D4EA ; [.1FA2.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL A +1D51E ; [.1FA2.0020.0005] # MATHEMATICAL FRAKTUR SMALL A +1D552 ; [.1FA2.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL A +1D586 ; [.1FA2.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL A +1D5BA ; [.1FA2.0020.0005] # MATHEMATICAL SANS-SERIF SMALL A +1D5EE ; [.1FA2.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL A +1D622 ; [.1FA2.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL A +1D656 ; [.1FA2.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A +1D68A ; [.1FA2.0020.0005] # MATHEMATICAL MONOSPACE SMALL A +24D0 ; [.1FA2.0020.0006] # CIRCLED LATIN SMALL LETTER A +0041 ; [.1FA2.0020.0008] # LATIN CAPITAL LETTER A +FF21 ; [.1FA2.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER A +1F110 ; [*0328.0020.0004][.1FA2.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER A +1D400 ; [.1FA2.0020.000B] # MATHEMATICAL BOLD CAPITAL A +1D434 ; [.1FA2.0020.000B] # MATHEMATICAL ITALIC CAPITAL A +1D468 ; [.1FA2.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL A +1D49C ; [.1FA2.0020.000B] # MATHEMATICAL SCRIPT CAPITAL A +1D4D0 ; [.1FA2.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL A +1D504 ; [.1FA2.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL A +1D538 ; [.1FA2.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL A +1D56C ; [.1FA2.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL A +1D5A0 ; [.1FA2.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL A +1D5D4 ; [.1FA2.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL A +1D608 ; [.1FA2.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL A +1D63C ; [.1FA2.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A +1D670 ; [.1FA2.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL A +24B6 ; [.1FA2.0020.000C] # CIRCLED LATIN CAPITAL LETTER A +1F150 ; [.1FA2.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER A +00AA ; [.1FA2.0020.0014] # FEMININE ORDINAL INDICATOR +1D43 ; [.1FA2.0020.0014] # MODIFIER LETTER SMALL A +2090 ; [.1FA2.0020.0015] # LATIN SUBSCRIPT SMALL LETTER A +1D2C ; [.1FA2.0020.001D] # MODIFIER LETTER CAPITAL A +1F130 ; [.1FA2.0020.001D] # SQUARED LATIN CAPITAL LETTER A +1F170 ; [.1FA2.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER A +00E1 ; [.1FA2.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH ACUTE +00C1 ; [.1FA2.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH ACUTE +00E0 ; [.1FA2.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER A WITH GRAVE +00C0 ; [.1FA2.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER A WITH GRAVE +0103 ; [.1FA2.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER A WITH BREVE +0102 ; [.1FA2.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER A WITH BREVE +1EAF ; [.1FA2.0020.0002][.0000.0026.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH BREVE AND ACUTE +1EAE ; [.1FA2.0020.0008][.0000.0026.0002][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +1EB1 ; [.1FA2.0020.0002][.0000.0026.0002][.0000.0025.0002] # LATIN SMALL LETTER A WITH BREVE AND GRAVE +1EB0 ; [.1FA2.0020.0008][.0000.0026.0002][.0000.0025.0002] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE +1EB5 ; [.1FA2.0020.0002][.0000.0026.0002][.0000.002D.0002] # LATIN SMALL LETTER A WITH BREVE AND TILDE +1EB4 ; [.1FA2.0020.0008][.0000.0026.0002][.0000.002D.0002] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE +1EB3 ; [.1FA2.0020.0002][.0000.0026.0002][.0000.003B.0002] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE +1EB2 ; [.1FA2.0020.0008][.0000.0026.0002][.0000.003B.0002] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE +00E2 ; [.1FA2.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX +00C2 ; [.1FA2.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +1EA5 ; [.1FA2.0020.0002][.0000.0027.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +1EA4 ; [.1FA2.0020.0008][.0000.0027.0002][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +1EA7 ; [.1FA2.0020.0002][.0000.0027.0002][.0000.0025.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE +1EA6 ; [.1FA2.0020.0008][.0000.0027.0002][.0000.0025.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE +1EAB ; [.1FA2.0020.0002][.0000.0027.0002][.0000.002D.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE +1EAA ; [.1FA2.0020.0008][.0000.0027.0002][.0000.002D.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE +1EA9 ; [.1FA2.0020.0002][.0000.0027.0002][.0000.003B.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +1EA8 ; [.1FA2.0020.0008][.0000.0027.0002][.0000.003B.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +01CE ; [.1FA2.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER A WITH CARON +01CD ; [.1FA2.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER A WITH CARON +00E5 ; [.1FA2.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER A WITH RING ABOVE +00C5 ; [.1FA2.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE +212B ; [.1FA2.0020.0008][.0000.0029.0002] # ANGSTROM SIGN +01FB ; [.1FA2.0020.0002][.0000.0029.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +01FA ; [.1FA2.0020.0008][.0000.0029.0002][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +00E4 ; [.1FA2.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER A WITH DIAERESIS +1DF2 ; [.1FA2.0020.0004][.0000.002B.0004] # COMBINING LATIN SMALL LETTER A WITH DIAERESIS +A79B ; [.1FA2.0020.0004][.0000.002B.0004] # LATIN SMALL LETTER VOLAPUK AE +00C4 ; [.1FA2.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS +A79A ; [.1FA2.0020.000A][.0000.002B.0004] # LATIN CAPITAL LETTER VOLAPUK AE +01DF ; [.1FA2.0020.0002][.0000.002B.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.1FA2.0020.0008][.0000.002B.0002][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +00E3 ; [.1FA2.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER A WITH TILDE +00C3 ; [.1FA2.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER A WITH TILDE +0227 ; [.1FA2.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER A WITH DOT ABOVE +0226 ; [.1FA2.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER A WITH DOT ABOVE +01E1 ; [.1FA2.0020.0002][.0000.002E.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON +01E0 ; [.1FA2.0020.0008][.0000.002E.0002][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON +0105 ; [.1FA2.0020.0002][.0000.0031.0002] # LATIN SMALL LETTER A WITH OGONEK +0104 ; [.1FA2.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER A WITH OGONEK +0101 ; [.1FA2.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH MACRON +0100 ; [.1FA2.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH MACRON +1EA3 ; [.1FA2.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER A WITH HOOK ABOVE +1EA2 ; [.1FA2.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER A WITH HOOK ABOVE +0201 ; [.1FA2.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER A WITH DOUBLE GRAVE +0200 ; [.1FA2.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE +0203 ; [.1FA2.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER A WITH INVERTED BREVE +0202 ; [.1FA2.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER A WITH INVERTED BREVE +1EA1 ; [.1FA2.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER A WITH DOT BELOW +1EA0 ; [.1FA2.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER A WITH DOT BELOW +1EB7 ; [.1FA2.0020.0002][.0000.0042.0002][.0000.0026.0002] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +1EB6 ; [.1FA2.0020.0008][.0000.0042.0002][.0000.0026.0002] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +1EAD ; [.1FA2.0020.0002][.0000.0042.0002][.0000.0027.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW +1EAC ; [.1FA2.0020.0008][.0000.0042.0002][.0000.0027.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW +1E01 ; [.1FA2.0020.0002][.0000.0044.0002] # LATIN SMALL LETTER A WITH RING BELOW +1E00 ; [.1FA2.0020.0008][.0000.0044.0002] # LATIN CAPITAL LETTER A WITH RING BELOW +1DD3 ; [.1FA2.0020.0004][.0000.0118.0004] # COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE +A733 ; [.1FA2.0020.0004][.1FA2.0020.0004] # LATIN SMALL LETTER AA +A732 ; [.1FA2.0020.000A][.1FA2.0020.000A] # LATIN CAPITAL LETTER AA +1F18E ; [.1FA2.0020.001D][.1FBC.0020.001D] # NEGATIVE SQUARED AB +2100 ; [.1FA2.0020.0004][*03A6.0020.0004][.1FD6.0020.0004] # ACCOUNT OF +00E6 ; [.1FA2.0020.0004][.0000.0118.0004][.2007.0020.0004] # LATIN SMALL LETTER AE +1DD4 ; [.1FA2.0020.0004][.0000.0118.0004][.2007.0020.0004] # COMBINING LATIN SMALL LETTER AE +00C6 ; [.1FA2.0020.000A][.0000.0118.0004][.2007.0020.000A] # LATIN CAPITAL LETTER AE +1D2D ; [.1FA2.0020.0014][.0000.0118.0014][.2007.0020.0014] # MODIFIER LETTER CAPITAL AE +01FD ; [.1FA2.0020.0004][.0000.0118.0004][.2007.0020.0004][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE +01FC ; [.1FA2.0020.000A][.0000.0118.0004][.2007.0020.000A][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE +01E3 ; [.1FA2.0020.0004][.0000.0118.0004][.2007.0020.0004][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON +01E2 ; [.1FA2.0020.000A][.0000.0118.0004][.2007.0020.000A][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON +33C2 ; [.1FA2.0020.001C][*027E.0020.001C][.2109.0020.001C][*027E.0020.001C] # SQUARE AM +33DF ; [.1FA2.0020.001D][*0675.0020.001C][.2109.0020.001C] # SQUARE A OVER M +1DD5 ; [.1FA2.0020.0004][.213C.0020.0004] # COMBINING LATIN SMALL LETTER AO +A735 ; [.1FA2.0020.0004][.213C.0020.0004] # LATIN SMALL LETTER AO +A734 ; [.1FA2.0020.000A][.213C.0020.000A] # LATIN CAPITAL LETTER AO +2101 ; [.1FA2.0020.0004][*03A6.0020.0004][.21D2.0020.0004] # ADDRESSED TO THE SUBJECT +214D ; [.1FA2.0020.000A][*03A6.0020.0004][.21D2.0020.000A] # AKTIESELSKAB +A737 ; [.1FA2.0020.0004][.2217.0020.0004] # LATIN SMALL LETTER AU +A736 ; [.1FA2.0020.000A][.2217.0020.000A] # LATIN CAPITAL LETTER AU +3373 ; [.1FA2.0020.001D][.2217.0020.001D] # SQUARE AU +1DD6 ; [.1FA2.0020.0004][.2247.0020.0004] # COMBINING LATIN SMALL LETTER AV +A739 ; [.1FA2.0020.0004][.2247.0020.0004] # LATIN SMALL LETTER AV +A738 ; [.1FA2.0020.000A][.2247.0020.000A] # LATIN CAPITAL LETTER AV +A73B ; [.1FA2.0020.0004][.0000.0118.0004][.2247.0020.0004] # LATIN SMALL LETTER AV WITH HORIZONTAL BAR +A73A ; [.1FA2.0020.000A][.0000.0118.0004][.2247.0020.000A] # LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR +A73D ; [.1FA2.0020.0004][.2270.0020.0004] # LATIN SMALL LETTER AY +A73C ; [.1FA2.0020.000A][.2270.0020.000A] # LATIN CAPITAL LETTER AY +1E9A ; [.1FA2.0020.0004][.22E5.0020.0004] # LATIN SMALL LETTER A WITH RIGHT HALF RING +1D00 ; [.1FA6.0020.0002] # LATIN LETTER SMALL CAPITAL A +2C65 ; [.1FA7.0020.0002] # LATIN SMALL LETTER A WITH STROKE +023A ; [.1FA7.0020.0008] # LATIN CAPITAL LETTER A WITH STROKE +1D8F ; [.1FA8.0020.0002] # LATIN SMALL LETTER A WITH RETROFLEX HOOK +A7BB ; [.1FA9.0020.0002] # LATIN SMALL LETTER GLOTTAL A +A7BA ; [.1FA9.0020.0008] # LATIN CAPITAL LETTER GLOTTAL A +1D01 ; [.1FAA.0020.0002] # LATIN LETTER SMALL CAPITAL AE +1D02 ; [.1FAB.0020.0002] # LATIN SMALL LETTER TURNED AE +1D46 ; [.1FAB.0020.0014] # MODIFIER LETTER SMALL TURNED AE +AB31 ; [.1FAC.0020.0002] # LATIN SMALL LETTER A REVERSED-SCHWA +0250 ; [.1FAD.0020.0002] # LATIN SMALL LETTER TURNED A +2C6F ; [.1FAD.0020.0008] # LATIN CAPITAL LETTER TURNED A +1D44 ; [.1FAD.0020.0014] # MODIFIER LETTER SMALL TURNED A +0251 ; [.1FB1.0020.0002] # LATIN SMALL LETTER ALPHA +1DE7 ; [.1FB1.0020.0004] # COMBINING LATIN SMALL LETTER ALPHA +2C6D ; [.1FB1.0020.0008] # LATIN CAPITAL LETTER ALPHA +1D45 ; [.1FB1.0020.0014] # MODIFIER LETTER SMALL ALPHA +AB30 ; [.1FB5.0020.0002] # LATIN SMALL LETTER BARRED ALPHA +1D90 ; [.1FB6.0020.0002] # LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK +0252 ; [.1FB7.0020.0002] # LATIN SMALL LETTER TURNED ALPHA +2C70 ; [.1FB7.0020.0008] # LATIN CAPITAL LETTER TURNED ALPHA +1D9B ; [.1FB7.0020.0014] # MODIFIER LETTER SMALL TURNED ALPHA +AB64 ; [.1FBB.0020.0002] # LATIN SMALL LETTER INVERTED ALPHA +0062 ; [.1FBC.0020.0002] # LATIN SMALL LETTER B +FF42 ; [.1FBC.0020.0003] # FULLWIDTH LATIN SMALL LETTER B +1DE8 ; [.1FBC.0020.0004] # COMBINING LATIN SMALL LETTER B +249D ; [*0328.0020.0004][.1FBC.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER B +1D41B ; [.1FBC.0020.0005] # MATHEMATICAL BOLD SMALL B +1D44F ; [.1FBC.0020.0005] # MATHEMATICAL ITALIC SMALL B +1D483 ; [.1FBC.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL B +1D4B7 ; [.1FBC.0020.0005] # MATHEMATICAL SCRIPT SMALL B +1D4EB ; [.1FBC.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL B +1D51F ; [.1FBC.0020.0005] # MATHEMATICAL FRAKTUR SMALL B +1D553 ; [.1FBC.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL B +1D587 ; [.1FBC.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL B +1D5BB ; [.1FBC.0020.0005] # MATHEMATICAL SANS-SERIF SMALL B +1D5EF ; [.1FBC.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL B +1D623 ; [.1FBC.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL B +1D657 ; [.1FBC.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B +1D68B ; [.1FBC.0020.0005] # MATHEMATICAL MONOSPACE SMALL B +24D1 ; [.1FBC.0020.0006] # CIRCLED LATIN SMALL LETTER B +0042 ; [.1FBC.0020.0008] # LATIN CAPITAL LETTER B +FF22 ; [.1FBC.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER B +1F111 ; [*0328.0020.0004][.1FBC.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER B +212C ; [.1FBC.0020.000B] # SCRIPT CAPITAL B +1D401 ; [.1FBC.0020.000B] # MATHEMATICAL BOLD CAPITAL B +1D435 ; [.1FBC.0020.000B] # MATHEMATICAL ITALIC CAPITAL B +1D469 ; [.1FBC.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL B +1D4D1 ; [.1FBC.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL B +1D505 ; [.1FBC.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL B +1D539 ; [.1FBC.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL B +1D56D ; [.1FBC.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL B +1D5A1 ; [.1FBC.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL B +1D5D5 ; [.1FBC.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL B +1D609 ; [.1FBC.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL B +1D63D ; [.1FBC.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B +1D671 ; [.1FBC.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL B +24B7 ; [.1FBC.0020.000C] # CIRCLED LATIN CAPITAL LETTER B +1F151 ; [.1FBC.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER B +1D47 ; [.1FBC.0020.0014] # MODIFIER LETTER SMALL B +1D2E ; [.1FBC.0020.001D] # MODIFIER LETTER CAPITAL B +1F131 ; [.1FBC.0020.001D] # SQUARED LATIN CAPITAL LETTER B +1F171 ; [.1FBC.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER B +1E03 ; [.1FBC.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER B WITH DOT ABOVE +1E02 ; [.1FBC.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER B WITH DOT ABOVE +1E05 ; [.1FBC.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER B WITH DOT BELOW +1E04 ; [.1FBC.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER B WITH DOT BELOW +1E07 ; [.1FBC.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER B WITH LINE BELOW +1E06 ; [.1FBC.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER B WITH LINE BELOW +3374 ; [.1FBC.0020.001C][.1FA2.0020.001C][.2193.0020.001C] # SQUARE BAR +33C3 ; [.1FBC.0020.001D][.2180.0020.001C] # SQUARE BQ +0299 ; [.1FC0.0020.0002] # LATIN LETTER SMALL CAPITAL B +0180 ; [.1FC4.0020.0002] # LATIN SMALL LETTER B WITH STROKE +0243 ; [.1FC4.0020.0008] # LATIN CAPITAL LETTER B WITH STROKE +1D2F ; [.1FC8.0020.0002] # MODIFIER LETTER CAPITAL BARRED B +1D03 ; [.1FC9.0020.0002] # LATIN LETTER SMALL CAPITAL BARRED B +1D6C ; [.1FCA.0020.0002] # LATIN SMALL LETTER B WITH MIDDLE TILDE +A797 ; [.1FCB.0020.0002] # LATIN SMALL LETTER B WITH FLOURISH +A796 ; [.1FCB.0020.0008] # LATIN CAPITAL LETTER B WITH FLOURISH +1D80 ; [.1FCC.0020.0002] # LATIN SMALL LETTER B WITH PALATAL HOOK +0253 ; [.1FCD.0020.0002] # LATIN SMALL LETTER B WITH HOOK +0181 ; [.1FCD.0020.0008] # LATIN CAPITAL LETTER B WITH HOOK +0183 ; [.1FD1.0020.0002] # LATIN SMALL LETTER B WITH TOPBAR +0182 ; [.1FD1.0020.0008] # LATIN CAPITAL LETTER B WITH TOPBAR +A7B5 ; [.1FD5.0020.0002] # LATIN SMALL LETTER BETA +1DE9 ; [.1FD5.0020.0004] # COMBINING LATIN SMALL LETTER BETA +A7B4 ; [.1FD5.0020.0008] # LATIN CAPITAL LETTER BETA +0063 ; [.1FD6.0020.0002] # LATIN SMALL LETTER C +FF43 ; [.1FD6.0020.0003] # FULLWIDTH LATIN SMALL LETTER C +0368 ; [.1FD6.0020.0004] # COMBINING LATIN SMALL LETTER C +217D ; [.1FD6.0020.0004] # SMALL ROMAN NUMERAL ONE HUNDRED +249E ; [*0328.0020.0004][.1FD6.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER C +1D41C ; [.1FD6.0020.0005] # MATHEMATICAL BOLD SMALL C +1D450 ; [.1FD6.0020.0005] # MATHEMATICAL ITALIC SMALL C +1D484 ; [.1FD6.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL C +1D4B8 ; [.1FD6.0020.0005] # MATHEMATICAL SCRIPT SMALL C +1D4EC ; [.1FD6.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL C +1D520 ; [.1FD6.0020.0005] # MATHEMATICAL FRAKTUR SMALL C +1D554 ; [.1FD6.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL C +1D588 ; [.1FD6.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL C +1D5BC ; [.1FD6.0020.0005] # MATHEMATICAL SANS-SERIF SMALL C +1D5F0 ; [.1FD6.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL C +1D624 ; [.1FD6.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL C +1D658 ; [.1FD6.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C +1D68C ; [.1FD6.0020.0005] # MATHEMATICAL MONOSPACE SMALL C +24D2 ; [.1FD6.0020.0006] # CIRCLED LATIN SMALL LETTER C +0043 ; [.1FD6.0020.0008] # LATIN CAPITAL LETTER C +FF23 ; [.1FD6.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER C +2103 ; [*052A.0020.0004][.1FD6.0020.000A] # DEGREE CELSIUS +216D ; [.1FD6.0020.000A] # ROMAN NUMERAL ONE HUNDRED +1F112 ; [*0328.0020.0004][.1FD6.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER C +2102 ; [.1FD6.0020.000B] # DOUBLE-STRUCK CAPITAL C +212D ; [.1FD6.0020.000B] # BLACK-LETTER CAPITAL C +1D402 ; [.1FD6.0020.000B] # MATHEMATICAL BOLD CAPITAL C +1D436 ; [.1FD6.0020.000B] # MATHEMATICAL ITALIC CAPITAL C +1D46A ; [.1FD6.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL C +1D49E ; [.1FD6.0020.000B] # MATHEMATICAL SCRIPT CAPITAL C +1D4D2 ; [.1FD6.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL C +1D56E ; [.1FD6.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL C +1D5A2 ; [.1FD6.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL C +1D5D6 ; [.1FD6.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL C +1D60A ; [.1FD6.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL C +1D63E ; [.1FD6.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C +1D672 ; [.1FD6.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL C +24B8 ; [.1FD6.0020.000C] # CIRCLED LATIN CAPITAL LETTER C +1F12B ; [.1FD6.0020.000C] # CIRCLED ITALIC LATIN CAPITAL LETTER C +1F152 ; [.1FD6.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER C +1D9C ; [.1FD6.0020.0014] # MODIFIER LETTER SMALL C +1F132 ; [.1FD6.0020.001D] # SQUARED LATIN CAPITAL LETTER C +1F172 ; [.1FD6.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER C +0107 ; [.1FD6.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER C WITH ACUTE +0106 ; [.1FD6.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER C WITH ACUTE +0109 ; [.1FD6.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER C WITH CIRCUMFLEX +0108 ; [.1FD6.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER C WITH CIRCUMFLEX +010D ; [.1FD6.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER C WITH CARON +010C ; [.1FD6.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER C WITH CARON +010B ; [.1FD6.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER C WITH DOT ABOVE +010A ; [.1FD6.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER C WITH DOT ABOVE +00E7 ; [.1FD6.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER C WITH CEDILLA +1DD7 ; [.1FD6.0020.0004][.0000.0030.0004] # COMBINING LATIN SMALL LETTER C CEDILLA +00C7 ; [.1FD6.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER C WITH CEDILLA +1E09 ; [.1FD6.0020.0002][.0000.0030.0002][.0000.0024.0002] # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE +1E08 ; [.1FD6.0020.0008][.0000.0030.0002][.0000.0024.0002] # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE +3388 ; [.1FD6.0020.001C][.1FA2.0020.001C][.20D6.0020.001C] # SQUARE CAL +33C4 ; [.1FD6.0020.001C][.1FD6.0020.001C] # SQUARE CC +1F12D ; [.1FD6.0020.000C][.1FEB.0020.000C] # CIRCLED CD +33C5 ; [.1FD6.0020.001C][.1FEB.0020.001C] # SQUARE CD +33C6 ; [.1FD6.0020.001D][*0675.0020.001C][.20C4.0020.001C][.2051.0020.001C] # SQUARE C OVER KG +1F191 ; [.1FD6.0020.001D][.20D6.0020.001D] # SQUARED CL +339D ; [.1FD6.0020.001C][.2109.0020.001C] # SQUARE CM +33A0 ; [.1FD6.0020.001C][.2109.0020.001C][.1F9A.0020.001C] # SQUARE CM SQUARED +33A4 ; [.1FD6.0020.001C][.2109.0020.001C][.1F9B.0020.001C] # SQUARE CM CUBED +2105 ; [.1FD6.0020.0004][*03A6.0020.0004][.213C.0020.0004] # CARE OF +33C7 ; [.1FD6.0020.001D][.213C.0020.001C][*027E.0020.001C] # SQUARE CO +1F192 ; [.1FD6.0020.001D][.213C.0020.001D][.213C.0020.001D][.20D6.0020.001D] # SQUARED COOL +2106 ; [.1FD6.0020.0004][*03A6.0020.0004][.2217.0020.0004] # CADA UNA +1D04 ; [.1FDA.0020.0002] # LATIN LETTER SMALL CAPITAL C +023C ; [.1FDB.0020.0002] # LATIN SMALL LETTER C WITH STROKE +023B ; [.1FDB.0020.0008] # LATIN CAPITAL LETTER C WITH STROKE +A793 ; [.1FDF.0020.0002] # LATIN SMALL LETTER C WITH BAR +A792 ; [.1FDF.0020.0008] # LATIN CAPITAL LETTER C WITH BAR +A794 ; [.1FE0.0020.0002] # LATIN SMALL LETTER C WITH PALATAL HOOK +A7C4 ; [.1FE0.0020.0008] # LATIN CAPITAL LETTER C WITH PALATAL HOOK +0188 ; [.1FE1.0020.0002] # LATIN SMALL LETTER C WITH HOOK +0187 ; [.1FE1.0020.0008] # LATIN CAPITAL LETTER C WITH HOOK +0255 ; [.1FE5.0020.0002] # LATIN SMALL LETTER C WITH CURL +1D9D ; [.1FE5.0020.0014] # MODIFIER LETTER SMALL C WITH CURL +2184 ; [.1FE9.0020.0002] # LATIN SMALL LETTER REVERSED C +2183 ; [.1FE9.0020.0008] # ROMAN NUMERAL REVERSED ONE HUNDRED +A73F ; [.1FEA.0020.0002] # LATIN SMALL LETTER REVERSED C WITH DOT +A73E ; [.1FEA.0020.0008] # LATIN CAPITAL LETTER REVERSED C WITH DOT +0064 ; [.1FEB.0020.0002] # LATIN SMALL LETTER D +FF44 ; [.1FEB.0020.0003] # FULLWIDTH LATIN SMALL LETTER D +0369 ; [.1FEB.0020.0004] # COMBINING LATIN SMALL LETTER D +217E ; [.1FEB.0020.0004] # SMALL ROMAN NUMERAL FIVE HUNDRED +249F ; [*0328.0020.0004][.1FEB.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER D +2146 ; [.1FEB.0020.0005] # DOUBLE-STRUCK ITALIC SMALL D +1D41D ; [.1FEB.0020.0005] # MATHEMATICAL BOLD SMALL D +1D451 ; [.1FEB.0020.0005] # MATHEMATICAL ITALIC SMALL D +1D485 ; [.1FEB.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL D +1D4B9 ; [.1FEB.0020.0005] # MATHEMATICAL SCRIPT SMALL D +1D4ED ; [.1FEB.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL D +1D521 ; [.1FEB.0020.0005] # MATHEMATICAL FRAKTUR SMALL D +1D555 ; [.1FEB.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL D +1D589 ; [.1FEB.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL D +1D5BD ; [.1FEB.0020.0005] # MATHEMATICAL SANS-SERIF SMALL D +1D5F1 ; [.1FEB.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL D +1D625 ; [.1FEB.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL D +1D659 ; [.1FEB.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D +1D68D ; [.1FEB.0020.0005] # MATHEMATICAL MONOSPACE SMALL D +24D3 ; [.1FEB.0020.0006] # CIRCLED LATIN SMALL LETTER D +0044 ; [.1FEB.0020.0008] # LATIN CAPITAL LETTER D +FF24 ; [.1FEB.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER D +216E ; [.1FEB.0020.000A] # ROMAN NUMERAL FIVE HUNDRED +1F113 ; [*0328.0020.0004][.1FEB.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER D +2145 ; [.1FEB.0020.000B] # DOUBLE-STRUCK ITALIC CAPITAL D +1D403 ; [.1FEB.0020.000B] # MATHEMATICAL BOLD CAPITAL D +1D437 ; [.1FEB.0020.000B] # MATHEMATICAL ITALIC CAPITAL D +1D46B ; [.1FEB.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL D +1D49F ; [.1FEB.0020.000B] # MATHEMATICAL SCRIPT CAPITAL D +1D4D3 ; [.1FEB.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL D +1D507 ; [.1FEB.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL D +1D53B ; [.1FEB.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL D +1D56F ; [.1FEB.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL D +1D5A3 ; [.1FEB.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL D +1D5D7 ; [.1FEB.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL D +1D60B ; [.1FEB.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL D +1D63F ; [.1FEB.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D +1D673 ; [.1FEB.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL D +24B9 ; [.1FEB.0020.000C] # CIRCLED LATIN CAPITAL LETTER D +1F153 ; [.1FEB.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER D +1D48 ; [.1FEB.0020.0014] # MODIFIER LETTER SMALL D +1F1A5 ; [.1FEB.0020.001C] # SQUARED LATIN SMALL LETTER D +1D30 ; [.1FEB.0020.001D] # MODIFIER LETTER CAPITAL D +1F133 ; [.1FEB.0020.001D] # SQUARED LATIN CAPITAL LETTER D +1F173 ; [.1FEB.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER D +010F ; [.1FEB.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER D WITH CARON +010E ; [.1FEB.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER D WITH CARON +1E0B ; [.1FEB.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER D WITH DOT ABOVE +1E0A ; [.1FEB.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER D WITH DOT ABOVE +1E11 ; [.1FEB.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER D WITH CEDILLA +1E10 ; [.1FEB.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER D WITH CEDILLA +0111 ; [.1FEB.0020.0002][.0000.0039.0002] # LATIN SMALL LETTER D WITH STROKE +0110 ; [.1FEB.0020.0008][.0000.0039.0002] # LATIN CAPITAL LETTER D WITH STROKE +1E0D ; [.1FEB.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER D WITH DOT BELOW +1E0C ; [.1FEB.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER D WITH DOT BELOW +1E13 ; [.1FEB.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW +1E12 ; [.1FEB.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW +1E0F ; [.1FEB.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER D WITH LINE BELOW +1E0E ; [.1FEB.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER D WITH LINE BELOW +00F0 ; [.1FEB.0020.0004][.0000.0118.0004] # LATIN SMALL LETTER ETH +1DD9 ; [.1FEB.0020.0004][.0000.0118.0004] # COMBINING LATIN SMALL LETTER ETH +00D0 ; [.1FEB.0020.000A][.0000.0118.0004] # LATIN CAPITAL LETTER ETH +1D9E ; [.1FEB.0020.0014][.0000.0118.0014] # MODIFIER LETTER SMALL ETH +1DD8 ; [.1FEB.0020.0004][.0000.0119.0004] # COMBINING LATIN SMALL LETTER INSULAR D +A77A ; [.1FEB.0020.0004][.0000.0119.0004] # LATIN SMALL LETTER INSULAR D +A779 ; [.1FEB.0020.000A][.0000.0119.0004] # LATIN CAPITAL LETTER INSULAR D +3372 ; [.1FEB.0020.001C][.1FA2.0020.001C] # SQUARE DA +0238 ; [.1FEB.0020.0004][.1FBC.0020.0004] # LATIN SMALL LETTER DB DIGRAPH +33C8 ; [.1FEB.0020.001C][.1FBC.0020.001D] # SQUARE DB +1F190 ; [.1FEB.0020.001D][.20AB.0020.001D] # SQUARE DJ +3397 ; [.1FEB.0020.001C][.20D6.0020.001C] # SQUARE DL +3377 ; [.1FEB.0020.001C][.2109.0020.001C] # SQUARE DM +3378 ; [.1FEB.0020.001C][.2109.0020.001C][.1F9A.0020.001C] # SQUARE DM SQUARED +3379 ; [.1FEB.0020.001C][.2109.0020.001C][.1F9B.0020.001C] # SQUARE DM CUBED +01F3 ; [.1FEB.0020.0004][.2286.0020.0004] # LATIN SMALL LETTER DZ +02A3 ; [.1FEB.0020.0004][.2286.0020.0004] # LATIN SMALL LETTER DZ DIGRAPH +01F2 ; [.1FEB.0020.000A][.2286.0020.0004] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z +01F1 ; [.1FEB.0020.000A][.2286.0020.000A] # LATIN CAPITAL LETTER DZ +01C6 ; [.1FEB.0020.0004][.2286.0020.0004][.0000.0028.0004] # LATIN SMALL LETTER DZ WITH CARON +01C5 ; [.1FEB.0020.000A][.2286.0020.0004][.0000.0028.0004] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON +01C4 ; [.1FEB.0020.000A][.2286.0020.000A][.0000.0028.0004] # LATIN CAPITAL LETTER DZ WITH CARON +AB66 ; [.1FEB.0020.0004][.2295.0020.0004] # LATIN SMALL LETTER DZ DIGRAPH WITH RETROFLEX HOOK +02A5 ; [.1FEB.0020.0004][.2299.0020.0004] # LATIN SMALL LETTER DZ DIGRAPH WITH CURL +02A4 ; [.1FEB.0020.0004][.22A3.0020.0004] # LATIN SMALL LETTER DEZH DIGRAPH +1D05 ; [.1FEF.0020.0002] # LATIN LETTER SMALL CAPITAL D +1D06 ; [.1FF0.0020.0002] # LATIN LETTER SMALL CAPITAL ETH +A7C8 ; [.1FF1.0020.0002] # LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY +A7C7 ; [.1FF1.0020.0008] # LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY +1D6D ; [.1FF2.0020.0002] # LATIN SMALL LETTER D WITH MIDDLE TILDE +1D81 ; [.1FF3.0020.0002] # LATIN SMALL LETTER D WITH PALATAL HOOK +0256 ; [.1FF4.0020.0002] # LATIN SMALL LETTER D WITH TAIL +0189 ; [.1FF4.0020.0008] # LATIN CAPITAL LETTER AFRICAN D +0257 ; [.1FF8.0020.0002] # LATIN SMALL LETTER D WITH HOOK +018A ; [.1FF8.0020.0008] # LATIN CAPITAL LETTER D WITH HOOK +1D91 ; [.1FFC.0020.0002] # LATIN SMALL LETTER D WITH HOOK AND TAIL +018C ; [.1FFD.0020.0002] # LATIN SMALL LETTER D WITH TOPBAR +018B ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER D WITH TOPBAR +0221 ; [.2001.0020.0002] # LATIN SMALL LETTER D WITH CURL +A771 ; [.2005.0020.0002] # LATIN SMALL LETTER DUM +1E9F ; [.2006.0020.0002] # LATIN SMALL LETTER DELTA +0065 ; [.2007.0020.0002] # LATIN SMALL LETTER E +FF45 ; [.2007.0020.0003] # FULLWIDTH LATIN SMALL LETTER E +0364 ; [.2007.0020.0004] # COMBINING LATIN SMALL LETTER E +24A0 ; [*0328.0020.0004][.2007.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER E +212F ; [.2007.0020.0005] # SCRIPT SMALL E +2147 ; [.2007.0020.0005] # DOUBLE-STRUCK ITALIC SMALL E +1D41E ; [.2007.0020.0005] # MATHEMATICAL BOLD SMALL E +1D452 ; [.2007.0020.0005] # MATHEMATICAL ITALIC SMALL E +1D486 ; [.2007.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL E +1D4EE ; [.2007.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL E +1D522 ; [.2007.0020.0005] # MATHEMATICAL FRAKTUR SMALL E +1D556 ; [.2007.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL E +1D58A ; [.2007.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL E +1D5BE ; [.2007.0020.0005] # MATHEMATICAL SANS-SERIF SMALL E +1D5F2 ; [.2007.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL E +1D626 ; [.2007.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL E +1D65A ; [.2007.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E +1D68E ; [.2007.0020.0005] # MATHEMATICAL MONOSPACE SMALL E +24D4 ; [.2007.0020.0006] # CIRCLED LATIN SMALL LETTER E +0045 ; [.2007.0020.0008] # LATIN CAPITAL LETTER E +FF25 ; [.2007.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER E +1F114 ; [*0328.0020.0004][.2007.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER E +2130 ; [.2007.0020.000B] # SCRIPT CAPITAL E +1D404 ; [.2007.0020.000B] # MATHEMATICAL BOLD CAPITAL E +1D438 ; [.2007.0020.000B] # MATHEMATICAL ITALIC CAPITAL E +1D46C ; [.2007.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL E +1D4D4 ; [.2007.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL E +1D508 ; [.2007.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL E +1D53C ; [.2007.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL E +1D570 ; [.2007.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL E +1D5A4 ; [.2007.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL E +1D5D8 ; [.2007.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL E +1D60C ; [.2007.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL E +1D640 ; [.2007.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E +1D674 ; [.2007.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL E +24BA ; [.2007.0020.000C] # CIRCLED LATIN CAPITAL LETTER E +1F154 ; [.2007.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER E +1D49 ; [.2007.0020.0014] # MODIFIER LETTER SMALL E +2091 ; [.2007.0020.0015] # LATIN SUBSCRIPT SMALL LETTER E +1D31 ; [.2007.0020.001D] # MODIFIER LETTER CAPITAL E +1F134 ; [.2007.0020.001D] # SQUARED LATIN CAPITAL LETTER E +1F174 ; [.2007.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER E +00E9 ; [.2007.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER E WITH ACUTE +00C9 ; [.2007.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER E WITH ACUTE +00E8 ; [.2007.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER E WITH GRAVE +00C8 ; [.2007.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER E WITH GRAVE +0115 ; [.2007.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER E WITH BREVE +0114 ; [.2007.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER E WITH BREVE +00EA ; [.2007.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +00CA ; [.2007.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +1EBF ; [.2007.0020.0002][.0000.0027.0002][.0000.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +1EBE ; [.2007.0020.0008][.0000.0027.0002][.0000.0024.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +1EC1 ; [.2007.0020.0002][.0000.0027.0002][.0000.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +1EC0 ; [.2007.0020.0008][.0000.0027.0002][.0000.0025.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +1EC5 ; [.2007.0020.0002][.0000.0027.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +1EC4 ; [.2007.0020.0008][.0000.0027.0002][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +1EC3 ; [.2007.0020.0002][.0000.0027.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC2 ; [.2007.0020.0008][.0000.0027.0002][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +011B ; [.2007.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER E WITH CARON +011A ; [.2007.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER E WITH CARON +00EB ; [.2007.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER E WITH DIAERESIS +00CB ; [.2007.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER E WITH DIAERESIS +1EBD ; [.2007.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH TILDE +1EBC ; [.2007.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH TILDE +0117 ; [.2007.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER E WITH DOT ABOVE +0116 ; [.2007.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER E WITH DOT ABOVE +0229 ; [.2007.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER E WITH CEDILLA +0228 ; [.2007.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER E WITH CEDILLA +1E1D ; [.2007.0020.0002][.0000.0030.0002][.0000.0026.0002] # LATIN SMALL LETTER E WITH CEDILLA AND BREVE +1E1C ; [.2007.0020.0008][.0000.0030.0002][.0000.0026.0002] # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +0119 ; [.2007.0020.0002][.0000.0031.0002] # LATIN SMALL LETTER E WITH OGONEK +0118 ; [.2007.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER E WITH OGONEK +0113 ; [.2007.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER E WITH MACRON +0112 ; [.2007.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER E WITH MACRON +1E17 ; [.2007.0020.0002][.0000.0032.0002][.0000.0024.0002] # LATIN SMALL LETTER E WITH MACRON AND ACUTE +1E16 ; [.2007.0020.0008][.0000.0032.0002][.0000.0024.0002] # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +1E15 ; [.2007.0020.0002][.0000.0032.0002][.0000.0025.0002] # LATIN SMALL LETTER E WITH MACRON AND GRAVE +1E14 ; [.2007.0020.0008][.0000.0032.0002][.0000.0025.0002] # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE +1EBB ; [.2007.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH HOOK ABOVE +1EBA ; [.2007.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH HOOK ABOVE +0205 ; [.2007.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER E WITH DOUBLE GRAVE +0204 ; [.2007.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE +0207 ; [.2007.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER E WITH INVERTED BREVE +0206 ; [.2007.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER E WITH INVERTED BREVE +1EB9 ; [.2007.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH DOT BELOW +1EB8 ; [.2007.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH DOT BELOW +1EC7 ; [.2007.0020.0002][.0000.0042.0002][.0000.0027.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +1EC6 ; [.2007.0020.0008][.0000.0042.0002][.0000.0027.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +1E19 ; [.2007.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW +1E18 ; [.2007.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW +1E1B ; [.2007.0020.0002][.0000.0048.0002] # LATIN SMALL LETTER E WITH TILDE BELOW +1E1A ; [.2007.0020.0008][.0000.0048.0002] # LATIN CAPITAL LETTER E WITH TILDE BELOW +32CD ; [.2007.0020.001C][.2193.0020.001C][.2051.0020.001C] # SQUARE ERG +32CE ; [.2007.0020.001C][.2247.0020.001D] # SQUARE EV +1D07 ; [.200B.0020.0002] # LATIN LETTER SMALL CAPITAL E +AB32 ; [.200C.0020.0002] # LATIN SMALL LETTER BLACKLETTER E +AB33 ; [.200D.0020.0002] # LATIN SMALL LETTER BARRED E +0247 ; [.200E.0020.0002] # LATIN SMALL LETTER E WITH STROKE +0246 ; [.200E.0020.0008] # LATIN CAPITAL LETTER E WITH STROKE +1D92 ; [.2012.0020.0002] # LATIN SMALL LETTER E WITH RETROFLEX HOOK +AB34 ; [.2013.0020.0002] # LATIN SMALL LETTER E WITH FLOURISH +2C78 ; [.2014.0020.0002] # LATIN SMALL LETTER E WITH NOTCH +01DD ; [.2015.0020.0002] # LATIN SMALL LETTER TURNED E +018E ; [.2015.0020.0008] # LATIN CAPITAL LETTER REVERSED E +1D32 ; [.2015.0020.001D] # MODIFIER LETTER CAPITAL REVERSED E +2C7B ; [.2019.0020.0002] # LATIN LETTER SMALL CAPITAL TURNED E +0259 ; [.201A.0020.0002] # LATIN SMALL LETTER SCHWA +1DEA ; [.201A.0020.0004] # COMBINING LATIN SMALL LETTER SCHWA +018F ; [.201A.0020.0008] # LATIN CAPITAL LETTER SCHWA +1D4A ; [.201A.0020.0014] # MODIFIER LETTER SMALL SCHWA +2094 ; [.201A.0020.0015] # LATIN SUBSCRIPT SMALL LETTER SCHWA +1D95 ; [.201E.0020.0002] # LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK +025B ; [.201F.0020.0002] # LATIN SMALL LETTER OPEN E +0190 ; [.201F.0020.0008] # LATIN CAPITAL LETTER OPEN E +2107 ; [.201F.0020.000A] # EULER CONSTANT +1D4B ; [.201F.0020.0014] # MODIFIER LETTER SMALL OPEN E +1D93 ; [.2023.0020.0002] # LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK +0258 ; [.2024.0020.0002] # LATIN SMALL LETTER REVERSED E +025A ; [.2028.0020.0002] # LATIN SMALL LETTER SCHWA WITH HOOK +025C ; [.202C.0020.0002] # LATIN SMALL LETTER REVERSED OPEN E +A7AB ; [.202C.0020.0008] # LATIN CAPITAL LETTER REVERSED OPEN E +1D9F ; [.202C.0020.0014] # MODIFIER LETTER SMALL REVERSED OPEN E +1D94 ; [.2030.0020.0002] # LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK +1D08 ; [.2031.0020.0002] # LATIN SMALL LETTER TURNED OPEN E +1D4C ; [.2031.0020.0014] # MODIFIER LETTER SMALL TURNED OPEN E +025D ; [.2032.0020.0002] # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK +025E ; [.2036.0020.0002] # LATIN SMALL LETTER CLOSED REVERSED OPEN E +029A ; [.203A.0020.0002] # LATIN SMALL LETTER CLOSED OPEN E +0264 ; [.203E.0020.0002] # LATIN SMALL LETTER RAMS HORN +0066 ; [.2042.0020.0002] # LATIN SMALL LETTER F +FF46 ; [.2042.0020.0003] # FULLWIDTH LATIN SMALL LETTER F +1DEB ; [.2042.0020.0004] # COMBINING LATIN SMALL LETTER F +24A1 ; [*0328.0020.0004][.2042.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER F +1D41F ; [.2042.0020.0005] # MATHEMATICAL BOLD SMALL F +1D453 ; [.2042.0020.0005] # MATHEMATICAL ITALIC SMALL F +1D487 ; [.2042.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL F +1D4BB ; [.2042.0020.0005] # MATHEMATICAL SCRIPT SMALL F +1D4EF ; [.2042.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL F +1D523 ; [.2042.0020.0005] # MATHEMATICAL FRAKTUR SMALL F +1D557 ; [.2042.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL F +1D58B ; [.2042.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL F +1D5BF ; [.2042.0020.0005] # MATHEMATICAL SANS-SERIF SMALL F +1D5F3 ; [.2042.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL F +1D627 ; [.2042.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL F +1D65B ; [.2042.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F +1D68F ; [.2042.0020.0005] # MATHEMATICAL MONOSPACE SMALL F +24D5 ; [.2042.0020.0006] # CIRCLED LATIN SMALL LETTER F +0046 ; [.2042.0020.0008] # LATIN CAPITAL LETTER F +FF26 ; [.2042.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER F +2109 ; [*052A.0020.0004][.2042.0020.000A] # DEGREE FAHRENHEIT +1F115 ; [*0328.0020.0004][.2042.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER F +2131 ; [.2042.0020.000B] # SCRIPT CAPITAL F +1D405 ; [.2042.0020.000B] # MATHEMATICAL BOLD CAPITAL F +1D439 ; [.2042.0020.000B] # MATHEMATICAL ITALIC CAPITAL F +1D46D ; [.2042.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL F +1D4D5 ; [.2042.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL F +1D509 ; [.2042.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL F +1D53D ; [.2042.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL F +1D571 ; [.2042.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL F +1D5A5 ; [.2042.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL F +1D5D9 ; [.2042.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL F +1D60D ; [.2042.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL F +1D641 ; [.2042.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F +1D675 ; [.2042.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL F +24BB ; [.2042.0020.000C] # CIRCLED LATIN CAPITAL LETTER F +1F155 ; [.2042.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER F +1DA0 ; [.2042.0020.0014] # MODIFIER LETTER SMALL F +1F135 ; [.2042.0020.001D] # SQUARED LATIN CAPITAL LETTER F +1F175 ; [.2042.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER F +1E1F ; [.2042.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER F WITH DOT ABOVE +1E1E ; [.2042.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER F WITH DOT ABOVE +A77C ; [.2042.0020.0004][.0000.0119.0004] # LATIN SMALL LETTER INSULAR F +A77B ; [.2042.0020.000A][.0000.0119.0004] # LATIN CAPITAL LETTER INSULAR F +213B ; [.2042.0020.000A][.1FA2.0020.000A][.2264.0020.000A] # FACSIMILE SIGN +FB00 ; [.2042.0020.0004][.2042.0020.0004] # LATIN SMALL LIGATURE FF +FB03 ; [.2042.0020.0004][.2042.0020.0004][.2090.0020.0004] # LATIN SMALL LIGATURE FFI +FB04 ; [.2042.0020.0004][.2042.0020.0004][.20D6.0020.0004] # LATIN SMALL LIGATURE FFL +FB01 ; [.2042.0020.0004][.2090.0020.0004] # LATIN SMALL LIGATURE FI +FB02 ; [.2042.0020.0004][.20D6.0020.0004] # LATIN SMALL LIGATURE FL +3399 ; [.2042.0020.001C][.2109.0020.001C] # SQUARE FM +02A9 ; [.2042.0020.0004][.2137.0020.0004] # LATIN SMALL LETTER FENG DIGRAPH +1F193 ; [.2042.0020.001D][.2193.0020.001D][.2007.0020.001D][.2007.0020.001D] # SQUARED FREE +A730 ; [.2046.0020.0002] # LATIN LETTER SMALL CAPITAL F +AB35 ; [.2047.0020.0002] # LATIN SMALL LETTER LENIS F +A799 ; [.2048.0020.0002] # LATIN SMALL LETTER F WITH STROKE +A798 ; [.2048.0020.0008] # LATIN CAPITAL LETTER F WITH STROKE +1D6E ; [.2049.0020.0002] # LATIN SMALL LETTER F WITH MIDDLE TILDE +1D82 ; [.204A.0020.0002] # LATIN SMALL LETTER F WITH PALATAL HOOK +0192 ; [.204B.0020.0002] # LATIN SMALL LETTER F WITH HOOK +0191 ; [.204B.0020.0008] # LATIN CAPITAL LETTER F WITH HOOK +214E ; [.204F.0020.0002] # TURNED SMALL F +2132 ; [.204F.0020.0008] # TURNED CAPITAL F +A7FB ; [.2050.0020.0002] # LATIN EPIGRAPHIC LETTER REVERSED F +0067 ; [.2051.0020.0002] # LATIN SMALL LETTER G +FF47 ; [.2051.0020.0003] # FULLWIDTH LATIN SMALL LETTER G +1DDA ; [.2051.0020.0004] # COMBINING LATIN SMALL LETTER G +24A2 ; [*0328.0020.0004][.2051.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER G +210A ; [.2051.0020.0005] # SCRIPT SMALL G +1D420 ; [.2051.0020.0005] # MATHEMATICAL BOLD SMALL G +1D454 ; [.2051.0020.0005] # MATHEMATICAL ITALIC SMALL G +1D488 ; [.2051.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL G +1D4F0 ; [.2051.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL G +1D524 ; [.2051.0020.0005] # MATHEMATICAL FRAKTUR SMALL G +1D558 ; [.2051.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL G +1D58C ; [.2051.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL G +1D5C0 ; [.2051.0020.0005] # MATHEMATICAL SANS-SERIF SMALL G +1D5F4 ; [.2051.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL G +1D628 ; [.2051.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL G +1D65C ; [.2051.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G +1D690 ; [.2051.0020.0005] # MATHEMATICAL MONOSPACE SMALL G +24D6 ; [.2051.0020.0006] # CIRCLED LATIN SMALL LETTER G +0047 ; [.2051.0020.0008] # LATIN CAPITAL LETTER G +FF27 ; [.2051.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER G +1F116 ; [*0328.0020.0004][.2051.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER G +1D406 ; [.2051.0020.000B] # MATHEMATICAL BOLD CAPITAL G +1D43A ; [.2051.0020.000B] # MATHEMATICAL ITALIC CAPITAL G +1D46E ; [.2051.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL G +1D4A2 ; [.2051.0020.000B] # MATHEMATICAL SCRIPT CAPITAL G +1D4D6 ; [.2051.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL G +1D50A ; [.2051.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL G +1D53E ; [.2051.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL G +1D572 ; [.2051.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL G +1D5A6 ; [.2051.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL G +1D5DA ; [.2051.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL G +1D60E ; [.2051.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL G +1D642 ; [.2051.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G +1D676 ; [.2051.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL G +24BC ; [.2051.0020.000C] # CIRCLED LATIN CAPITAL LETTER G +1F156 ; [.2051.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER G +1D4D ; [.2051.0020.0014] # MODIFIER LETTER SMALL G +1D33 ; [.2051.0020.001D] # MODIFIER LETTER CAPITAL G +1F136 ; [.2051.0020.001D] # SQUARED LATIN CAPITAL LETTER G +1F176 ; [.2051.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER G +01F5 ; [.2051.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER G WITH ACUTE +01F4 ; [.2051.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER G WITH ACUTE +011F ; [.2051.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER G WITH BREVE +011E ; [.2051.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER G WITH BREVE +011D ; [.2051.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER G WITH CIRCUMFLEX +011C ; [.2051.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER G WITH CIRCUMFLEX +01E7 ; [.2051.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER G WITH CARON +01E6 ; [.2051.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER G WITH CARON +0121 ; [.2051.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER G WITH DOT ABOVE +0120 ; [.2051.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER G WITH DOT ABOVE +0123 ; [.2051.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER G WITH CEDILLA +0122 ; [.2051.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER G WITH CEDILLA +1E21 ; [.2051.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER G WITH MACRON +1E20 ; [.2051.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER G WITH MACRON +A7A1 ; [.2051.0020.0004][.0000.0035.0004] # LATIN SMALL LETTER G WITH OBLIQUE STROKE +A7A0 ; [.2051.0020.000A][.0000.0035.0004] # LATIN CAPITAL LETTER G WITH OBLIQUE STROKE +1D79 ; [.2051.0020.0004][.0000.0119.0004] # LATIN SMALL LETTER INSULAR G +A77D ; [.2051.0020.000A][.0000.0119.0004] # LATIN CAPITAL LETTER INSULAR G +33FF ; [.2051.0020.001C][.1FA2.0020.001C][.20D6.0020.001C] # SQUARE GAL +3387 ; [.2051.0020.001D][.1FBC.0020.001D] # SQUARE GB +3393 ; [.2051.0020.001D][.2075.0020.001D][.2286.0020.001C] # SQUARE GHZ +33AC ; [.2051.0020.001D][.216B.0020.001D][.1FA2.0020.001C] # SQUARE GPA +33C9 ; [.2051.0020.001D][.2270.0020.001C] # SQUARE GY +0261 ; [.2055.0020.0002] # LATIN SMALL LETTER SCRIPT G +A7AC ; [.2055.0020.0008] # LATIN CAPITAL LETTER SCRIPT G +1DA2 ; [.2055.0020.0014] # MODIFIER LETTER SMALL SCRIPT G +AB36 ; [.2059.0020.0002] # LATIN SMALL LETTER SCRIPT G WITH CROSSED-TAIL +0262 ; [.205A.0020.0002] # LATIN LETTER SMALL CAPITAL G +1DDB ; [.205A.0020.0004] # COMBINING LATIN LETTER SMALL CAPITAL G +01E5 ; [.205E.0020.0002] # LATIN SMALL LETTER G WITH STROKE +01E4 ; [.205E.0020.0008] # LATIN CAPITAL LETTER G WITH STROKE +1D83 ; [.2062.0020.0002] # LATIN SMALL LETTER G WITH PALATAL HOOK +0260 ; [.2063.0020.0002] # LATIN SMALL LETTER G WITH HOOK +0193 ; [.2063.0020.0008] # LATIN CAPITAL LETTER G WITH HOOK +029B ; [.2067.0020.0002] # LATIN LETTER SMALL CAPITAL G WITH HOOK +1D77 ; [.206B.0020.0002] # LATIN SMALL LETTER TURNED G +A77F ; [.206C.0020.0002] # LATIN SMALL LETTER TURNED INSULAR G +A77E ; [.206C.0020.0008] # LATIN CAPITAL LETTER TURNED INSULAR G +0263 ; [.206D.0020.0002] # LATIN SMALL LETTER GAMMA +0194 ; [.206D.0020.0008] # LATIN CAPITAL LETTER GAMMA +02E0 ; [.206D.0020.0014] # MODIFIER LETTER SMALL GAMMA +01A3 ; [.2071.0020.0002] # LATIN SMALL LETTER OI +01A2 ; [.2071.0020.0008] # LATIN CAPITAL LETTER OI +0068 ; [.2075.0020.0002] # LATIN SMALL LETTER H +FF48 ; [.2075.0020.0003] # FULLWIDTH LATIN SMALL LETTER H +036A ; [.2075.0020.0004] # COMBINING LATIN SMALL LETTER H +24A3 ; [*0328.0020.0004][.2075.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER H +210E ; [.2075.0020.0005] # PLANCK CONSTANT +1D421 ; [.2075.0020.0005] # MATHEMATICAL BOLD SMALL H +1D489 ; [.2075.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL H +1D4BD ; [.2075.0020.0005] # MATHEMATICAL SCRIPT SMALL H +1D4F1 ; [.2075.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL H +1D525 ; [.2075.0020.0005] # MATHEMATICAL FRAKTUR SMALL H +1D559 ; [.2075.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL H +1D58D ; [.2075.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL H +1D5C1 ; [.2075.0020.0005] # MATHEMATICAL SANS-SERIF SMALL H +1D5F5 ; [.2075.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL H +1D629 ; [.2075.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL H +1D65D ; [.2075.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H +1D691 ; [.2075.0020.0005] # MATHEMATICAL MONOSPACE SMALL H +24D7 ; [.2075.0020.0006] # CIRCLED LATIN SMALL LETTER H +0048 ; [.2075.0020.0008] # LATIN CAPITAL LETTER H +FF28 ; [.2075.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER H +1F117 ; [*0328.0020.0004][.2075.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER H +210B ; [.2075.0020.000B] # SCRIPT CAPITAL H +210C ; [.2075.0020.000B] # BLACK-LETTER CAPITAL H +210D ; [.2075.0020.000B] # DOUBLE-STRUCK CAPITAL H +1D407 ; [.2075.0020.000B] # MATHEMATICAL BOLD CAPITAL H +1D43B ; [.2075.0020.000B] # MATHEMATICAL ITALIC CAPITAL H +1D46F ; [.2075.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL H +1D4D7 ; [.2075.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL H +1D573 ; [.2075.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL H +1D5A7 ; [.2075.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL H +1D5DB ; [.2075.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL H +1D60F ; [.2075.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL H +1D643 ; [.2075.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H +1D677 ; [.2075.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL H +24BD ; [.2075.0020.000C] # CIRCLED LATIN CAPITAL LETTER H +1F157 ; [.2075.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER H +02B0 ; [.2075.0020.0014] # MODIFIER LETTER SMALL H +2095 ; [.2075.0020.0015] # LATIN SUBSCRIPT SMALL LETTER H +1D34 ; [.2075.0020.001D] # MODIFIER LETTER CAPITAL H +1F137 ; [.2075.0020.001D] # SQUARED LATIN CAPITAL LETTER H +1F177 ; [.2075.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER H +0125 ; [.2075.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER H WITH CIRCUMFLEX +0124 ; [.2075.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER H WITH CIRCUMFLEX +021F ; [.2075.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER H WITH CARON +021E ; [.2075.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER H WITH CARON +1E27 ; [.2075.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER H WITH DIAERESIS +1E26 ; [.2075.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER H WITH DIAERESIS +1E23 ; [.2075.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER H WITH DOT ABOVE +1E22 ; [.2075.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER H WITH DOT ABOVE +1E29 ; [.2075.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER H WITH CEDILLA +1E28 ; [.2075.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER H WITH CEDILLA +0127 ; [.2075.0020.0002][.0000.0039.0002] # LATIN SMALL LETTER H WITH STROKE +210F ; [.2075.0020.0002][.0000.0039.0002] # PLANCK CONSTANT OVER TWO PI +0126 ; [.2075.0020.0008][.0000.0039.0002] # LATIN CAPITAL LETTER H WITH STROKE +A7F8 ; [.2075.0020.0014][.0000.0039.0014] # MODIFIER LETTER CAPITAL H WITH STROKE +1E25 ; [.2075.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER H WITH DOT BELOW +1E24 ; [.2075.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER H WITH DOT BELOW +1E2B ; [.2075.0020.0002][.0000.0047.0002] # LATIN SMALL LETTER H WITH BREVE BELOW +1E2A ; [.2075.0020.0008][.0000.0047.0002] # LATIN CAPITAL LETTER H WITH BREVE BELOW +1E96 ; [.2075.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER H WITH LINE BELOW +33CA ; [.2075.0020.001C][.1FA2.0020.001C] # SQUARE HA +1F1A6 ; [.2075.0020.001D][.1FD6.0020.001C] # SQUARED HC +1F1A7 ; [.2075.0020.001D][.1FEB.0020.001C][.2193.0020.001D] # SQUARED HDR +32CC ; [.2075.0020.001D][.2051.0020.001C] # SQUARE HG +1F1A8 ; [.2075.0020.001D][.2090.0020.001C][*0209.0020.001C][.2193.0020.001D][.2007.0020.001C][.21D2.0020.001C] # SQUARED HI-RES +33CB ; [.2075.0020.001D][.216B.0020.001D] # SQUARE HP +3371 ; [.2075.0020.001C][.216B.0020.001D][.1FA2.0020.001C] # SQUARE HPA +1F14A ; [.2075.0020.001D][.2247.0020.001D] # SQUARED HV +3390 ; [.2075.0020.001D][.2286.0020.001C] # SQUARE HZ +029C ; [.2079.0020.0002] # LATIN LETTER SMALL CAPITAL H +0195 ; [.207D.0020.0002] # LATIN SMALL LETTER HV +01F6 ; [.207D.0020.0008] # LATIN CAPITAL LETTER HWAIR +A795 ; [.2081.0020.0002] # LATIN SMALL LETTER H WITH PALATAL HOOK +0266 ; [.2082.0020.0002] # LATIN SMALL LETTER H WITH HOOK +A7AA ; [.2082.0020.0008] # LATIN CAPITAL LETTER H WITH HOOK +02B1 ; [.2082.0020.0014] # MODIFIER LETTER SMALL H WITH HOOK +2C68 ; [.2086.0020.0002] # LATIN SMALL LETTER H WITH DESCENDER +2C67 ; [.2086.0020.0008] # LATIN CAPITAL LETTER H WITH DESCENDER +2C76 ; [.2087.0020.0002] # LATIN SMALL LETTER HALF H +2C75 ; [.2087.0020.0008] # LATIN CAPITAL LETTER HALF H +A7F6 ; [.2088.0020.0002] # LATIN SMALL LETTER REVERSED HALF H +A7F5 ; [.2088.0020.0008] # LATIN CAPITAL LETTER REVERSED HALF H +A727 ; [.2089.0020.0002] # LATIN SMALL LETTER HENG +A726 ; [.2089.0020.0008] # LATIN CAPITAL LETTER HENG +AB5C ; [.2089.0020.0014] # MODIFIER LETTER SMALL HENG +0267 ; [.208A.0020.0002] # LATIN SMALL LETTER HENG WITH HOOK +02BB ; [.208E.0020.0002] # MODIFIER LETTER TURNED COMMA +02BD ; [.208F.0020.0002] # MODIFIER LETTER REVERSED COMMA +0069 ; [.2090.0020.0002] # LATIN SMALL LETTER I +FF49 ; [.2090.0020.0003] # FULLWIDTH LATIN SMALL LETTER I +0365 ; [.2090.0020.0004] # COMBINING LATIN SMALL LETTER I +2170 ; [.2090.0020.0004] # SMALL ROMAN NUMERAL ONE +24A4 ; [*0328.0020.0004][.2090.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER I +2139 ; [.2090.0020.0005] # INFORMATION SOURCE +2148 ; [.2090.0020.0005] # DOUBLE-STRUCK ITALIC SMALL I +1D422 ; [.2090.0020.0005] # MATHEMATICAL BOLD SMALL I +1D456 ; [.2090.0020.0005] # MATHEMATICAL ITALIC SMALL I +1D48A ; [.2090.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL I +1D4BE ; [.2090.0020.0005] # MATHEMATICAL SCRIPT SMALL I +1D4F2 ; [.2090.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL I +1D526 ; [.2090.0020.0005] # MATHEMATICAL FRAKTUR SMALL I +1D55A ; [.2090.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL I +1D58E ; [.2090.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL I +1D5C2 ; [.2090.0020.0005] # MATHEMATICAL SANS-SERIF SMALL I +1D5F6 ; [.2090.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL I +1D62A ; [.2090.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL I +1D65E ; [.2090.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I +1D692 ; [.2090.0020.0005] # MATHEMATICAL MONOSPACE SMALL I +24D8 ; [.2090.0020.0006] # CIRCLED LATIN SMALL LETTER I +0049 ; [.2090.0020.0008] # LATIN CAPITAL LETTER I +FF29 ; [.2090.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER I +2160 ; [.2090.0020.000A] # ROMAN NUMERAL ONE +1F118 ; [*0328.0020.0004][.2090.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER I +2110 ; [.2090.0020.000B] # SCRIPT CAPITAL I +2111 ; [.2090.0020.000B] # BLACK-LETTER CAPITAL I +1D408 ; [.2090.0020.000B] # MATHEMATICAL BOLD CAPITAL I +1D43C ; [.2090.0020.000B] # MATHEMATICAL ITALIC CAPITAL I +1D470 ; [.2090.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL I +1D4D8 ; [.2090.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL I +1D540 ; [.2090.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL I +1D574 ; [.2090.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL I +1D5A8 ; [.2090.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL I +1D5DC ; [.2090.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL I +1D610 ; [.2090.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL I +1D644 ; [.2090.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I +1D678 ; [.2090.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL I +24BE ; [.2090.0020.000C] # CIRCLED LATIN CAPITAL LETTER I +1F158 ; [.2090.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER I +2071 ; [.2090.0020.0014] # SUPERSCRIPT LATIN SMALL LETTER I +1D62 ; [.2090.0020.0015] # LATIN SUBSCRIPT SMALL LETTER I +1D35 ; [.2090.0020.001D] # MODIFIER LETTER CAPITAL I +1F138 ; [.2090.0020.001D] # SQUARED LATIN CAPITAL LETTER I +1F178 ; [.2090.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER I +00ED ; [.2090.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER I WITH ACUTE +00CD ; [.2090.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER I WITH ACUTE +00EC ; [.2090.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER I WITH GRAVE +00CC ; [.2090.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER I WITH GRAVE +012D ; [.2090.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER I WITH BREVE +012C ; [.2090.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER I WITH BREVE +00EE ; [.2090.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER I WITH CIRCUMFLEX +00CE ; [.2090.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +01D0 ; [.2090.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER I WITH CARON +01CF ; [.2090.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER I WITH CARON +00EF ; [.2090.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER I WITH DIAERESIS +00CF ; [.2090.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER I WITH DIAERESIS +1E2F ; [.2090.0020.0002][.0000.002B.0002][.0000.0024.0002] # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE +1E2E ; [.2090.0020.0008][.0000.002B.0002][.0000.0024.0002] # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE +0129 ; [.2090.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER I WITH TILDE +0128 ; [.2090.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER I WITH TILDE +0130 ; [.2090.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER I WITH DOT ABOVE +012F ; [.2090.0020.0002][.0000.0031.0002] # LATIN SMALL LETTER I WITH OGONEK +012E ; [.2090.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER I WITH OGONEK +012B ; [.2090.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER I WITH MACRON +012A ; [.2090.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER I WITH MACRON +1EC9 ; [.2090.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER I WITH HOOK ABOVE +1EC8 ; [.2090.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER I WITH HOOK ABOVE +0209 ; [.2090.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER I WITH DOUBLE GRAVE +0208 ; [.2090.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE +020B ; [.2090.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER I WITH INVERTED BREVE +020A ; [.2090.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER I WITH INVERTED BREVE +1ECB ; [.2090.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER I WITH DOT BELOW +1ECA ; [.2090.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER I WITH DOT BELOW +1E2D ; [.2090.0020.0002][.0000.0048.0002] # LATIN SMALL LETTER I WITH TILDE BELOW +1E2C ; [.2090.0020.0008][.0000.0048.0002] # LATIN CAPITAL LETTER I WITH TILDE BELOW +1F18B ; [.2090.0020.001D][.1FD6.0020.001D] # NEGATIVE SQUARED IC +1F194 ; [.2090.0020.001D][.1FEB.0020.001D] # SQUARED ID +2171 ; [.2090.0020.0004][.2090.0020.0004] # SMALL ROMAN NUMERAL TWO +2161 ; [.2090.0020.000A][.2090.0020.000A] # ROMAN NUMERAL TWO +2172 ; [.2090.0020.0004][.2090.0020.0004][.2090.0020.0004] # SMALL ROMAN NUMERAL THREE +2162 ; [.2090.0020.000A][.2090.0020.000A][.2090.0020.000A] # ROMAN NUMERAL THREE +0133 ; [.2090.0020.0004][.20AB.0020.0004] # LATIN SMALL LIGATURE IJ +0132 ; [.2090.0020.000A][.20AB.0020.000A] # LATIN CAPITAL LIGATURE IJ +33CC ; [.2090.0020.001C][.2118.0020.001C] # SQUARE IN +337A ; [.2090.0020.001D][.2217.0020.001D] # SQUARE IU +2173 ; [.2090.0020.0004][.2247.0020.0004] # SMALL ROMAN NUMERAL FOUR +2163 ; [.2090.0020.000A][.2247.0020.000A] # ROMAN NUMERAL FOUR +2178 ; [.2090.0020.0004][.2264.0020.0004] # SMALL ROMAN NUMERAL NINE +2168 ; [.2090.0020.000A][.2264.0020.000A] # ROMAN NUMERAL NINE +0131 ; [.2094.0020.0002] # LATIN SMALL LETTER DOTLESS I +1D6A4 ; [.2094.0020.0005] # MATHEMATICAL ITALIC SMALL DOTLESS I +026A ; [.2098.0020.0002] # LATIN LETTER SMALL CAPITAL I +A7AE ; [.2098.0020.0008] # LATIN CAPITAL LETTER SMALL CAPITAL I +1DA6 ; [.2098.0020.0014] # MODIFIER LETTER SMALL CAPITAL I +A7FE ; [.209C.0020.0002] # LATIN EPIGRAPHIC LETTER I LONGA +A7F7 ; [.209D.0020.0002] # LATIN EPIGRAPHIC LETTER SIDEWAYS I +1D09 ; [.209E.0020.0002] # LATIN SMALL LETTER TURNED I +1D4E ; [.209E.0020.0014] # MODIFIER LETTER SMALL TURNED I +0268 ; [.209F.0020.0002] # LATIN SMALL LETTER I WITH STROKE +0197 ; [.209F.0020.0008] # LATIN CAPITAL LETTER I WITH STROKE +1DA4 ; [.209F.0020.0014] # MODIFIER LETTER SMALL I WITH STROKE +1D7B ; [.20A3.0020.0002] # LATIN SMALL CAPITAL LETTER I WITH STROKE +1DA7 ; [.20A3.0020.0014] # MODIFIER LETTER SMALL CAPITAL I WITH STROKE +1D96 ; [.20A4.0020.0002] # LATIN SMALL LETTER I WITH RETROFLEX HOOK +A7BD ; [.20A5.0020.0002] # LATIN SMALL LETTER GLOTTAL I +A7BC ; [.20A5.0020.0008] # LATIN CAPITAL LETTER GLOTTAL I +0269 ; [.20A6.0020.0002] # LATIN SMALL LETTER IOTA +0196 ; [.20A6.0020.0008] # LATIN CAPITAL LETTER IOTA +1DA5 ; [.20A6.0020.0014] # MODIFIER LETTER SMALL IOTA +1D7C ; [.20AA.0020.0002] # LATIN SMALL LETTER IOTA WITH STROKE +006A ; [.20AB.0020.0002] # LATIN SMALL LETTER J +FF4A ; [.20AB.0020.0003] # FULLWIDTH LATIN SMALL LETTER J +24A5 ; [*0328.0020.0004][.20AB.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER J +2149 ; [.20AB.0020.0005] # DOUBLE-STRUCK ITALIC SMALL J +1D423 ; [.20AB.0020.0005] # MATHEMATICAL BOLD SMALL J +1D457 ; [.20AB.0020.0005] # MATHEMATICAL ITALIC SMALL J +1D48B ; [.20AB.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL J +1D4BF ; [.20AB.0020.0005] # MATHEMATICAL SCRIPT SMALL J +1D4F3 ; [.20AB.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL J +1D527 ; [.20AB.0020.0005] # MATHEMATICAL FRAKTUR SMALL J +1D55B ; [.20AB.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL J +1D58F ; [.20AB.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL J +1D5C3 ; [.20AB.0020.0005] # MATHEMATICAL SANS-SERIF SMALL J +1D5F7 ; [.20AB.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL J +1D62B ; [.20AB.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL J +1D65F ; [.20AB.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J +1D693 ; [.20AB.0020.0005] # MATHEMATICAL MONOSPACE SMALL J +24D9 ; [.20AB.0020.0006] # CIRCLED LATIN SMALL LETTER J +004A ; [.20AB.0020.0008] # LATIN CAPITAL LETTER J +FF2A ; [.20AB.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER J +1F119 ; [*0328.0020.0004][.20AB.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER J +1D409 ; [.20AB.0020.000B] # MATHEMATICAL BOLD CAPITAL J +1D43D ; [.20AB.0020.000B] # MATHEMATICAL ITALIC CAPITAL J +1D471 ; [.20AB.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL J +1D4A5 ; [.20AB.0020.000B] # MATHEMATICAL SCRIPT CAPITAL J +1D4D9 ; [.20AB.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL J +1D50D ; [.20AB.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL J +1D541 ; [.20AB.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL J +1D575 ; [.20AB.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL J +1D5A9 ; [.20AB.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL J +1D5DD ; [.20AB.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL J +1D611 ; [.20AB.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL J +1D645 ; [.20AB.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J +1D679 ; [.20AB.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL J +24BF ; [.20AB.0020.000C] # CIRCLED LATIN CAPITAL LETTER J +1F159 ; [.20AB.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER J +02B2 ; [.20AB.0020.0014] # MODIFIER LETTER SMALL J +2C7C ; [.20AB.0020.0015] # LATIN SUBSCRIPT SMALL LETTER J +1D36 ; [.20AB.0020.001D] # MODIFIER LETTER CAPITAL J +1F139 ; [.20AB.0020.001D] # SQUARED LATIN CAPITAL LETTER J +1F179 ; [.20AB.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER J +0135 ; [.20AB.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER J WITH CIRCUMFLEX +0134 ; [.20AB.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER J WITH CIRCUMFLEX +01F0 ; [.20AB.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER J WITH CARON +0237 ; [.20AF.0020.0002] # LATIN SMALL LETTER DOTLESS J +1D6A5 ; [.20AF.0020.0005] # MATHEMATICAL ITALIC SMALL DOTLESS J +1D0A ; [.20B3.0020.0002] # LATIN LETTER SMALL CAPITAL J +0249 ; [.20B4.0020.0002] # LATIN SMALL LETTER J WITH STROKE +0248 ; [.20B4.0020.0008] # LATIN CAPITAL LETTER J WITH STROKE +029D ; [.20B8.0020.0002] # LATIN SMALL LETTER J WITH CROSSED-TAIL +A7B2 ; [.20B8.0020.0008] # LATIN CAPITAL LETTER J WITH CROSSED-TAIL +1DA8 ; [.20B8.0020.0014] # MODIFIER LETTER SMALL J WITH CROSSED-TAIL +025F ; [.20BC.0020.0002] # LATIN SMALL LETTER DOTLESS J WITH STROKE +1DA1 ; [.20BC.0020.0014] # MODIFIER LETTER SMALL DOTLESS J WITH STROKE +0284 ; [.20C0.0020.0002] # LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK +006B ; [.20C4.0020.0002] # LATIN SMALL LETTER K +FF4B ; [.20C4.0020.0003] # FULLWIDTH LATIN SMALL LETTER K +1DDC ; [.20C4.0020.0004] # COMBINING LATIN SMALL LETTER K +24A6 ; [*0328.0020.0004][.20C4.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER K +1D424 ; [.20C4.0020.0005] # MATHEMATICAL BOLD SMALL K +1D458 ; [.20C4.0020.0005] # MATHEMATICAL ITALIC SMALL K +1D48C ; [.20C4.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL K +1D4C0 ; [.20C4.0020.0005] # MATHEMATICAL SCRIPT SMALL K +1D4F4 ; [.20C4.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL K +1D528 ; [.20C4.0020.0005] # MATHEMATICAL FRAKTUR SMALL K +1D55C ; [.20C4.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL K +1D590 ; [.20C4.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL K +1D5C4 ; [.20C4.0020.0005] # MATHEMATICAL SANS-SERIF SMALL K +1D5F8 ; [.20C4.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL K +1D62C ; [.20C4.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL K +1D660 ; [.20C4.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K +1D694 ; [.20C4.0020.0005] # MATHEMATICAL MONOSPACE SMALL K +24DA ; [.20C4.0020.0006] # CIRCLED LATIN SMALL LETTER K +004B ; [.20C4.0020.0008] # LATIN CAPITAL LETTER K +212A ; [.20C4.0020.0008] # KELVIN SIGN +FF2B ; [.20C4.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER K +1F11A ; [*0328.0020.0004][.20C4.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER K +1D40A ; [.20C4.0020.000B] # MATHEMATICAL BOLD CAPITAL K +1D43E ; [.20C4.0020.000B] # MATHEMATICAL ITALIC CAPITAL K +1D472 ; [.20C4.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL K +1D4A6 ; [.20C4.0020.000B] # MATHEMATICAL SCRIPT CAPITAL K +1D4DA ; [.20C4.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL K +1D50E ; [.20C4.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL K +1D542 ; [.20C4.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL K +1D576 ; [.20C4.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL K +1D5AA ; [.20C4.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL K +1D5DE ; [.20C4.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL K +1D612 ; [.20C4.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL K +1D646 ; [.20C4.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K +1D67A ; [.20C4.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL K +24C0 ; [.20C4.0020.000C] # CIRCLED LATIN CAPITAL LETTER K +1F15A ; [.20C4.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER K +1D4F ; [.20C4.0020.0014] # MODIFIER LETTER SMALL K +2096 ; [.20C4.0020.0015] # LATIN SUBSCRIPT SMALL LETTER K +1D37 ; [.20C4.0020.001D] # MODIFIER LETTER CAPITAL K +1F13A ; [.20C4.0020.001D] # SQUARED LATIN CAPITAL LETTER K +1F17A ; [.20C4.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER K +1E31 ; [.20C4.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER K WITH ACUTE +1E30 ; [.20C4.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER K WITH ACUTE +01E9 ; [.20C4.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER K WITH CARON +01E8 ; [.20C4.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER K WITH CARON +0137 ; [.20C4.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER K WITH CEDILLA +0136 ; [.20C4.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER K WITH CEDILLA +A7A3 ; [.20C4.0020.0004][.0000.0035.0004] # LATIN SMALL LETTER K WITH OBLIQUE STROKE +A7A2 ; [.20C4.0020.000A][.0000.0035.0004] # LATIN CAPITAL LETTER K WITH OBLIQUE STROKE +1E33 ; [.20C4.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER K WITH DOT BELOW +1E32 ; [.20C4.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER K WITH DOT BELOW +1E35 ; [.20C4.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER K WITH LINE BELOW +1E34 ; [.20C4.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER K WITH LINE BELOW +3384 ; [.20C4.0020.001C][.1FA2.0020.001D] # SQUARE KA +3385 ; [.20C4.0020.001D][.1FBC.0020.001D] # SQUARE KB +3389 ; [.20C4.0020.001C][.1FD6.0020.001C][.1FA2.0020.001C][.20D6.0020.001C] # SQUARE KCAL +338F ; [.20C4.0020.001C][.2051.0020.001C] # SQUARE KG +3391 ; [.20C4.0020.001C][.2075.0020.001D][.2286.0020.001C] # SQUARE KHZ +33CD ; [.20C4.0020.001D][.20C4.0020.001D] # SQUARE KK +3398 ; [.20C4.0020.001C][.20D6.0020.001C] # SQUARE KL +339E ; [.20C4.0020.001C][.2109.0020.001C] # SQUARE KM +33CE ; [.20C4.0020.001D][.2109.0020.001D] # SQUARE KM CAPITAL +33A2 ; [.20C4.0020.001C][.2109.0020.001C][.1F9A.0020.001C] # SQUARE KM SQUARED +33A6 ; [.20C4.0020.001C][.2109.0020.001C][.1F9B.0020.001C] # SQUARE KM CUBED +33AA ; [.20C4.0020.001C][.216B.0020.001D][.1FA2.0020.001C] # SQUARE KPA +33CF ; [.20C4.0020.001C][.21F7.0020.001C] # SQUARE KT +33B8 ; [.20C4.0020.001C][.2247.0020.001D] # SQUARE KV +33BE ; [.20C4.0020.001C][.2259.0020.001D] # SQUARE KW +33C0 ; [.20C4.0020.001C][.2346.0020.001D] # SQUARE K OHM +1D0B ; [.20C8.0020.0002] # LATIN LETTER SMALL CAPITAL K +1D84 ; [.20C9.0020.0002] # LATIN SMALL LETTER K WITH PALATAL HOOK +0199 ; [.20CA.0020.0002] # LATIN SMALL LETTER K WITH HOOK +0198 ; [.20CA.0020.0008] # LATIN CAPITAL LETTER K WITH HOOK +2C6A ; [.20CE.0020.0002] # LATIN SMALL LETTER K WITH DESCENDER +2C69 ; [.20CE.0020.0008] # LATIN CAPITAL LETTER K WITH DESCENDER +A741 ; [.20CF.0020.0002] # LATIN SMALL LETTER K WITH STROKE +A740 ; [.20CF.0020.0008] # LATIN CAPITAL LETTER K WITH STROKE +A743 ; [.20D0.0020.0002] # LATIN SMALL LETTER K WITH DIAGONAL STROKE +A742 ; [.20D0.0020.0008] # LATIN CAPITAL LETTER K WITH DIAGONAL STROKE +A745 ; [.20D1.0020.0002] # LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE +A744 ; [.20D1.0020.0008] # LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE +029E ; [.20D2.0020.0002] # LATIN SMALL LETTER TURNED K +A7B0 ; [.20D2.0020.0008] # LATIN CAPITAL LETTER TURNED K +006C ; [.20D6.0020.0002] # LATIN SMALL LETTER L +FF4C ; [.20D6.0020.0003] # FULLWIDTH LATIN SMALL LETTER L +1DDD ; [.20D6.0020.0004] # COMBINING LATIN SMALL LETTER L +217C ; [.20D6.0020.0004] # SMALL ROMAN NUMERAL FIFTY +24A7 ; [*0328.0020.0004][.20D6.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER L +2113 ; [.20D6.0020.0005] # SCRIPT SMALL L +1D425 ; [.20D6.0020.0005] # MATHEMATICAL BOLD SMALL L +1D459 ; [.20D6.0020.0005] # MATHEMATICAL ITALIC SMALL L +1D48D ; [.20D6.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL L +1D4C1 ; [.20D6.0020.0005] # MATHEMATICAL SCRIPT SMALL L +1D4F5 ; [.20D6.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL L +1D529 ; [.20D6.0020.0005] # MATHEMATICAL FRAKTUR SMALL L +1D55D ; [.20D6.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL L +1D591 ; [.20D6.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL L +1D5C5 ; [.20D6.0020.0005] # MATHEMATICAL SANS-SERIF SMALL L +1D5F9 ; [.20D6.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL L +1D62D ; [.20D6.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL L +1D661 ; [.20D6.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L +1D695 ; [.20D6.0020.0005] # MATHEMATICAL MONOSPACE SMALL L +24DB ; [.20D6.0020.0006] # CIRCLED LATIN SMALL LETTER L +004C ; [.20D6.0020.0008] # LATIN CAPITAL LETTER L +FF2C ; [.20D6.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER L +216C ; [.20D6.0020.000A] # ROMAN NUMERAL FIFTY +1F11B ; [*0328.0020.0004][.20D6.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER L +2112 ; [.20D6.0020.000B] # SCRIPT CAPITAL L +1D40B ; [.20D6.0020.000B] # MATHEMATICAL BOLD CAPITAL L +1D43F ; [.20D6.0020.000B] # MATHEMATICAL ITALIC CAPITAL L +1D473 ; [.20D6.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL L +1D4DB ; [.20D6.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL L +1D50F ; [.20D6.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL L +1D543 ; [.20D6.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL L +1D577 ; [.20D6.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL L +1D5AB ; [.20D6.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL L +1D5DF ; [.20D6.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL L +1D613 ; [.20D6.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL L +1D647 ; [.20D6.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L +1D67B ; [.20D6.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL L +24C1 ; [.20D6.0020.000C] # CIRCLED LATIN CAPITAL LETTER L +1F15B ; [.20D6.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER L +02E1 ; [.20D6.0020.0014] # MODIFIER LETTER SMALL L +2097 ; [.20D6.0020.0015] # LATIN SUBSCRIPT SMALL LETTER L +1D38 ; [.20D6.0020.001D] # MODIFIER LETTER CAPITAL L +1F13B ; [.20D6.0020.001D] # SQUARED LATIN CAPITAL LETTER L +1F17B ; [.20D6.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER L +013A ; [.20D6.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER L WITH ACUTE +0139 ; [.20D6.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER L WITH ACUTE +013E ; [.20D6.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER L WITH CARON +013D ; [.20D6.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER L WITH CARON +013C ; [.20D6.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER L WITH CEDILLA +013B ; [.20D6.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER L WITH CEDILLA +0142 ; [.20D6.0020.0002][.0000.0039.0002] # LATIN SMALL LETTER L WITH STROKE +0141 ; [.20D6.0020.0008][.0000.0039.0002] # LATIN CAPITAL LETTER L WITH STROKE +1E37 ; [.20D6.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER L WITH DOT BELOW +1E36 ; [.20D6.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER L WITH DOT BELOW +1E39 ; [.20D6.0020.0002][.0000.0042.0002][.0000.0032.0002] # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON +1E38 ; [.20D6.0020.0008][.0000.0042.0002][.0000.0032.0002] # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON +1E3D ; [.20D6.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW +1E3C ; [.20D6.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW +1E3B ; [.20D6.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER L WITH LINE BELOW +1E3A ; [.20D6.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER L WITH LINE BELOW +0140 ; [.20D6.0020.0002][.0000.0118.0002] # LATIN SMALL LETTER L WITH MIDDLE DOT +006C 00B7 ; [.20D6.0020.0002][.0000.0118.0002] # LATIN SMALL LETTER L WITH MIDDLE DOT +006C 0387 ; [.20D6.0020.0002][.0000.0118.0002] # LATIN SMALL LETTER L WITH MIDDLE DOT +013F ; [.20D6.0020.0008][.0000.0118.0002] # LATIN CAPITAL LETTER L WITH MIDDLE DOT +004C 00B7 ; [.20D6.0020.0008][.0000.0118.0002] # LATIN CAPITAL LETTER L WITH MIDDLE DOT +004C 0387 ; [.20D6.0020.0008][.0000.0118.0002] # LATIN CAPITAL LETTER L WITH MIDDLE DOT +01C9 ; [.20D6.0020.0004][.20AB.0020.0004] # LATIN SMALL LETTER LJ +01C8 ; [.20D6.0020.000A][.20AB.0020.0004] # LATIN CAPITAL LETTER L WITH SMALL LETTER J +01C7 ; [.20D6.0020.000A][.20AB.0020.000A] # LATIN CAPITAL LETTER LJ +1EFB ; [.20D6.0020.0004][.20D6.0020.0004] # LATIN SMALL LETTER MIDDLE-WELSH LL +1EFA ; [.20D6.0020.000A][.20D6.0020.000A] # LATIN CAPITAL LETTER MIDDLE-WELSH LL +33D0 ; [.20D6.0020.001C][.2109.0020.001C] # SQUARE LM +33D1 ; [.20D6.0020.001C][.2118.0020.001C] # SQUARE LN +33D2 ; [.20D6.0020.001C][.213C.0020.001C][.2051.0020.001C] # SQUARE LOG +1F1A9 ; [.20D6.0020.001D][.213C.0020.001C][.21D2.0020.001C][.21D2.0020.001C][.20D6.0020.001C][.2007.0020.001C][.21D2.0020.001C][.21D2.0020.001C] # SQUARED LOSSLESS +02AA ; [.20D6.0020.0004][.21D2.0020.0004] # LATIN SMALL LETTER LS DIGRAPH +32CF ; [.20D6.0020.001D][.21F7.0020.001D][.1FEB.0020.001D] # LIMITED LIABILITY SIGN +33D3 ; [.20D6.0020.001C][.2264.0020.001C] # SQUARE LX +02AB ; [.20D6.0020.0004][.2286.0020.0004] # LATIN SMALL LETTER LZ DIGRAPH +029F ; [.20DA.0020.0002] # LATIN LETTER SMALL CAPITAL L +1DDE ; [.20DA.0020.0004] # COMBINING LATIN LETTER SMALL CAPITAL L +1DAB ; [.20DA.0020.0014] # MODIFIER LETTER SMALL CAPITAL L +A747 ; [.20DE.0020.0002] # LATIN SMALL LETTER BROKEN L +A746 ; [.20DE.0020.0008] # LATIN CAPITAL LETTER BROKEN L +1D0C ; [.20DF.0020.0002] # LATIN LETTER SMALL CAPITAL L WITH STROKE +A749 ; [.20E0.0020.0002] # LATIN SMALL LETTER L WITH HIGH STROKE +A748 ; [.20E0.0020.0008] # LATIN CAPITAL LETTER L WITH HIGH STROKE +019A ; [.20E1.0020.0002] # LATIN SMALL LETTER L WITH BAR +023D ; [.20E1.0020.0008] # LATIN CAPITAL LETTER L WITH BAR +2C61 ; [.20E5.0020.0002] # LATIN SMALL LETTER L WITH DOUBLE BAR +2C60 ; [.20E5.0020.0008] # LATIN CAPITAL LETTER L WITH DOUBLE BAR +026B ; [.20E6.0020.0002] # LATIN SMALL LETTER L WITH MIDDLE TILDE +2C62 ; [.20E6.0020.0008] # LATIN CAPITAL LETTER L WITH MIDDLE TILDE +AB5E ; [.20E6.0020.0014] # MODIFIER LETTER SMALL L WITH MIDDLE TILDE +AB38 ; [.20EA.0020.0002] # LATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDE +1DEC ; [.20EA.0020.0004] # COMBINING LATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDE +AB39 ; [.20EB.0020.0002] # LATIN SMALL LETTER L WITH MIDDLE RING +026C ; [.20EC.0020.0002] # LATIN SMALL LETTER L WITH BELT +A7AD ; [.20EC.0020.0008] # LATIN CAPITAL LETTER L WITH BELT +AB37 ; [.20F0.0020.0002] # LATIN SMALL LETTER L WITH INVERTED LAZY S +AB5D ; [.20F0.0020.0014] # MODIFIER LETTER SMALL L WITH INVERTED LAZY S +1D85 ; [.20F1.0020.0002] # LATIN SMALL LETTER L WITH PALATAL HOOK +1DAA ; [.20F1.0020.0014] # MODIFIER LETTER SMALL L WITH PALATAL HOOK +026D ; [.20F2.0020.0002] # LATIN SMALL LETTER L WITH RETROFLEX HOOK +1DA9 ; [.20F2.0020.0014] # MODIFIER LETTER SMALL L WITH RETROFLEX HOOK +A78E ; [.20F6.0020.0002] # LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT +0234 ; [.20F7.0020.0002] # LATIN SMALL LETTER L WITH CURL +A772 ; [.20FB.0020.0002] # LATIN SMALL LETTER LUM +026E ; [.20FC.0020.0002] # LATIN SMALL LETTER LEZH +A781 ; [.2100.0020.0002] # LATIN SMALL LETTER TURNED L +A780 ; [.2100.0020.0008] # LATIN CAPITAL LETTER TURNED L +019B ; [.2101.0020.0002] # LATIN SMALL LETTER LAMBDA WITH STROKE +028E ; [.2105.0020.0002] # LATIN SMALL LETTER TURNED Y +006D ; [.2109.0020.0002] # LATIN SMALL LETTER M +FF4D ; [.2109.0020.0003] # FULLWIDTH LATIN SMALL LETTER M +036B ; [.2109.0020.0004] # COMBINING LATIN SMALL LETTER M +217F ; [.2109.0020.0004] # SMALL ROMAN NUMERAL ONE THOUSAND +24A8 ; [*0328.0020.0004][.2109.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER M +1D426 ; [.2109.0020.0005] # MATHEMATICAL BOLD SMALL M +1D45A ; [.2109.0020.0005] # MATHEMATICAL ITALIC SMALL M +1D48E ; [.2109.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL M +1D4C2 ; [.2109.0020.0005] # MATHEMATICAL SCRIPT SMALL M +1D4F6 ; [.2109.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL M +1D52A ; [.2109.0020.0005] # MATHEMATICAL FRAKTUR SMALL M +1D55E ; [.2109.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL M +1D592 ; [.2109.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL M +1D5C6 ; [.2109.0020.0005] # MATHEMATICAL SANS-SERIF SMALL M +1D5FA ; [.2109.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL M +1D62E ; [.2109.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL M +1D662 ; [.2109.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M +1D696 ; [.2109.0020.0005] # MATHEMATICAL MONOSPACE SMALL M +24DC ; [.2109.0020.0006] # CIRCLED LATIN SMALL LETTER M +004D ; [.2109.0020.0008] # LATIN CAPITAL LETTER M +FF2D ; [.2109.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER M +216F ; [.2109.0020.000A] # ROMAN NUMERAL ONE THOUSAND +1F11C ; [*0328.0020.0004][.2109.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER M +2133 ; [.2109.0020.000B] # SCRIPT CAPITAL M +1D40C ; [.2109.0020.000B] # MATHEMATICAL BOLD CAPITAL M +1D440 ; [.2109.0020.000B] # MATHEMATICAL ITALIC CAPITAL M +1D474 ; [.2109.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL M +1D4DC ; [.2109.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL M +1D510 ; [.2109.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL M +1D544 ; [.2109.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL M +1D578 ; [.2109.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL M +1D5AC ; [.2109.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL M +1D5E0 ; [.2109.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL M +1D614 ; [.2109.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL M +1D648 ; [.2109.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M +1D67C ; [.2109.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL M +24C2 ; [.2109.0020.000C] # CIRCLED LATIN CAPITAL LETTER M +1F15C ; [.2109.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER M +1D50 ; [.2109.0020.0014] # MODIFIER LETTER SMALL M +2098 ; [.2109.0020.0015] # LATIN SUBSCRIPT SMALL LETTER M +1D39 ; [.2109.0020.001D] # MODIFIER LETTER CAPITAL M +1F13C ; [.2109.0020.001D] # SQUARED LATIN CAPITAL LETTER M +1F17C ; [.2109.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER M +1E3F ; [.2109.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER M WITH ACUTE +1E3E ; [.2109.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER M WITH ACUTE +1E41 ; [.2109.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER M WITH DOT ABOVE +1E40 ; [.2109.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER M WITH DOT ABOVE +1E43 ; [.2109.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER M WITH DOT BELOW +1E42 ; [.2109.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER M WITH DOT BELOW +33A1 ; [.2109.0020.001C][.1F9A.0020.001C] # SQUARE M SQUARED +33A5 ; [.2109.0020.001C][.1F9B.0020.001C] # SQUARE M CUBED +3383 ; [.2109.0020.001C][.1FA2.0020.001D] # SQUARE MA +33D4 ; [.2109.0020.001C][.1FBC.0020.001C] # SQUARE MB SMALL +3386 ; [.2109.0020.001D][.1FBC.0020.001D] # SQUARE MB +1F16A ; [.2109.0020.0014][.1FD6.0020.0014] # RAISED MC SIGN +1F16B ; [.2109.0020.0014][.1FEB.0020.0014] # RAISED MD SIGN +338E ; [.2109.0020.001C][.2051.0020.001C] # SQUARE MG +3392 ; [.2109.0020.001D][.2075.0020.001D][.2286.0020.001C] # SQUARE MHZ +33D5 ; [.2109.0020.001C][.2090.0020.001C][.20D6.0020.001C] # SQUARE MIL +3396 ; [.2109.0020.001C][.20D6.0020.001C] # SQUARE ML +339C ; [.2109.0020.001C][.2109.0020.001C] # SQUARE MM +339F ; [.2109.0020.001C][.2109.0020.001C][.1F9A.0020.001C] # SQUARE MM SQUARED +33A3 ; [.2109.0020.001C][.2109.0020.001C][.1F9B.0020.001C] # SQUARE MM CUBED +33D6 ; [.2109.0020.001C][.213C.0020.001C][.20D6.0020.001C] # SQUARE MOL +33AB ; [.2109.0020.001D][.216B.0020.001D][.1FA2.0020.001C] # SQUARE MPA +1F16C ; [.2109.0020.0014][.2193.0020.0014] # RAISED MR SIGN +33A7 ; [.2109.0020.001C][*0675.0020.001C][.21D2.0020.001C] # SQUARE M OVER S +33B3 ; [.2109.0020.001C][.21D2.0020.001C] # SQUARE MS +33A8 ; [.2109.0020.001C][*0675.0020.001C][.21D2.0020.001C][.1F9A.0020.001C] # SQUARE M OVER S SQUARED +33B7 ; [.2109.0020.001C][.2247.0020.001D] # SQUARE MV +33B9 ; [.2109.0020.001D][.2247.0020.001D] # SQUARE MV MEGA +1F14B ; [.2109.0020.001D][.2247.0020.001D] # SQUARED MV +33BD ; [.2109.0020.001C][.2259.0020.001D] # SQUARE MW +33BF ; [.2109.0020.001D][.2259.0020.001D] # SQUARE MW MEGA +33C1 ; [.2109.0020.001D][.2346.0020.001D] # SQUARE M OHM +1D0D ; [.210D.0020.0002] # LATIN LETTER SMALL CAPITAL M +1DDF ; [.210D.0020.0004] # COMBINING LATIN LETTER SMALL CAPITAL M +1D6F ; [.210E.0020.0002] # LATIN SMALL LETTER M WITH MIDDLE TILDE +1D86 ; [.210F.0020.0002] # LATIN SMALL LETTER M WITH PALATAL HOOK +0271 ; [.2110.0020.0002] # LATIN SMALL LETTER M WITH HOOK +2C6E ; [.2110.0020.0008] # LATIN CAPITAL LETTER M WITH HOOK +1DAC ; [.2110.0020.0014] # MODIFIER LETTER SMALL M WITH HOOK +AB3A ; [.2114.0020.0002] # LATIN SMALL LETTER M WITH CROSSED-TAIL +A7FD ; [.2115.0020.0002] # LATIN EPIGRAPHIC LETTER INVERTED M +A7FF ; [.2116.0020.0002] # LATIN EPIGRAPHIC LETTER ARCHAIC M +A773 ; [.2117.0020.0002] # LATIN SMALL LETTER MUM +006E ; [.2118.0020.0002] # LATIN SMALL LETTER N +FF4E ; [.2118.0020.0003] # FULLWIDTH LATIN SMALL LETTER N +1DE0 ; [.2118.0020.0004] # COMBINING LATIN SMALL LETTER N +24A9 ; [*0328.0020.0004][.2118.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER N +1D427 ; [.2118.0020.0005] # MATHEMATICAL BOLD SMALL N +1D45B ; [.2118.0020.0005] # MATHEMATICAL ITALIC SMALL N +1D48F ; [.2118.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL N +1D4C3 ; [.2118.0020.0005] # MATHEMATICAL SCRIPT SMALL N +1D4F7 ; [.2118.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL N +1D52B ; [.2118.0020.0005] # MATHEMATICAL FRAKTUR SMALL N +1D55F ; [.2118.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL N +1D593 ; [.2118.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL N +1D5C7 ; [.2118.0020.0005] # MATHEMATICAL SANS-SERIF SMALL N +1D5FB ; [.2118.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL N +1D62F ; [.2118.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL N +1D663 ; [.2118.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N +1D697 ; [.2118.0020.0005] # MATHEMATICAL MONOSPACE SMALL N +24DD ; [.2118.0020.0006] # CIRCLED LATIN SMALL LETTER N +004E ; [.2118.0020.0008] # LATIN CAPITAL LETTER N +FF2E ; [.2118.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER N +1F11D ; [*0328.0020.0004][.2118.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER N +2115 ; [.2118.0020.000B] # DOUBLE-STRUCK CAPITAL N +1D40D ; [.2118.0020.000B] # MATHEMATICAL BOLD CAPITAL N +1D441 ; [.2118.0020.000B] # MATHEMATICAL ITALIC CAPITAL N +1D475 ; [.2118.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL N +1D4A9 ; [.2118.0020.000B] # MATHEMATICAL SCRIPT CAPITAL N +1D4DD ; [.2118.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL N +1D511 ; [.2118.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL N +1D579 ; [.2118.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL N +1D5AD ; [.2118.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL N +1D5E1 ; [.2118.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL N +1D615 ; [.2118.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL N +1D649 ; [.2118.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N +1D67D ; [.2118.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL N +24C3 ; [.2118.0020.000C] # CIRCLED LATIN CAPITAL LETTER N +1F15D ; [.2118.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER N +207F ; [.2118.0020.0014] # SUPERSCRIPT LATIN SMALL LETTER N +2099 ; [.2118.0020.0015] # LATIN SUBSCRIPT SMALL LETTER N +1D3A ; [.2118.0020.001D] # MODIFIER LETTER CAPITAL N +1F13D ; [.2118.0020.001D] # SQUARED LATIN CAPITAL LETTER N +1F17D ; [.2118.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER N +0144 ; [.2118.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER N WITH ACUTE +0143 ; [.2118.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER N WITH ACUTE +01F9 ; [.2118.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER N WITH GRAVE +01F8 ; [.2118.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER N WITH GRAVE +0148 ; [.2118.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER N WITH CARON +0147 ; [.2118.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER N WITH CARON +00F1 ; [.2118.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER N WITH TILDE +00D1 ; [.2118.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER N WITH TILDE +1E45 ; [.2118.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER N WITH DOT ABOVE +1E44 ; [.2118.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER N WITH DOT ABOVE +0146 ; [.2118.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER N WITH CEDILLA +0145 ; [.2118.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER N WITH CEDILLA +A7A5 ; [.2118.0020.0004][.0000.0035.0004] # LATIN SMALL LETTER N WITH OBLIQUE STROKE +A7A4 ; [.2118.0020.000A][.0000.0035.0004] # LATIN CAPITAL LETTER N WITH OBLIQUE STROKE +1E47 ; [.2118.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER N WITH DOT BELOW +1E46 ; [.2118.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER N WITH DOT BELOW +1E4B ; [.2118.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW +1E4A ; [.2118.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW +1E49 ; [.2118.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER N WITH LINE BELOW +1E48 ; [.2118.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER N WITH LINE BELOW +3381 ; [.2118.0020.001C][.1FA2.0020.001D] # SQUARE NA +1F195 ; [.2118.0020.001D][.2007.0020.001D][.2259.0020.001D] # SQUARED NEW +338B ; [.2118.0020.001C][.2042.0020.001D] # SQUARE NF +1F196 ; [.2118.0020.001D][.2051.0020.001D] # SQUARED NG +01CC ; [.2118.0020.0004][.20AB.0020.0004] # LATIN SMALL LETTER NJ +01CB ; [.2118.0020.000A][.20AB.0020.0004] # LATIN CAPITAL LETTER N WITH SMALL LETTER J +01CA ; [.2118.0020.000A][.20AB.0020.000A] # LATIN CAPITAL LETTER NJ +339A ; [.2118.0020.001C][.2109.0020.001C] # SQUARE NM +2116 ; [.2118.0020.000A][.213C.0020.0004] # NUMERO SIGN +33B1 ; [.2118.0020.001C][.21D2.0020.001C] # SQUARE NS +33B5 ; [.2118.0020.001C][.2247.0020.001D] # SQUARE NV +33BB ; [.2118.0020.001C][.2259.0020.001D] # SQUARE NW +0274 ; [.211C.0020.0002] # LATIN LETTER SMALL CAPITAL N +1DE1 ; [.211C.0020.0004] # COMBINING LATIN LETTER SMALL CAPITAL N +1DB0 ; [.211C.0020.0014] # MODIFIER LETTER SMALL CAPITAL N +1D3B ; [.2120.0020.0002] # MODIFIER LETTER CAPITAL REVERSED N +1D0E ; [.2121.0020.0002] # LATIN LETTER SMALL CAPITAL REVERSED N +1D70 ; [.2122.0020.0002] # LATIN SMALL LETTER N WITH MIDDLE TILDE +0272 ; [.2123.0020.0002] # LATIN SMALL LETTER N WITH LEFT HOOK +019D ; [.2123.0020.0008] # LATIN CAPITAL LETTER N WITH LEFT HOOK +1DAE ; [.2123.0020.0014] # MODIFIER LETTER SMALL N WITH LEFT HOOK +019E ; [.2127.0020.0002] # LATIN SMALL LETTER N WITH LONG RIGHT LEG +0220 ; [.2127.0020.0008] # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG +A791 ; [.212B.0020.0002] # LATIN SMALL LETTER N WITH DESCENDER +A790 ; [.212B.0020.0008] # LATIN CAPITAL LETTER N WITH DESCENDER +1D87 ; [.212C.0020.0002] # LATIN SMALL LETTER N WITH PALATAL HOOK +0273 ; [.212D.0020.0002] # LATIN SMALL LETTER N WITH RETROFLEX HOOK +1DAF ; [.212D.0020.0014] # MODIFIER LETTER SMALL N WITH RETROFLEX HOOK +0235 ; [.2131.0020.0002] # LATIN SMALL LETTER N WITH CURL +AB3B ; [.2135.0020.0002] # LATIN SMALL LETTER N WITH CROSSED-TAIL +A774 ; [.2136.0020.0002] # LATIN SMALL LETTER NUM +014B ; [.2137.0020.0002] # LATIN SMALL LETTER ENG +014A ; [.2137.0020.0008] # LATIN CAPITAL LETTER ENG +1D51 ; [.2137.0020.0014] # MODIFIER LETTER SMALL ENG +AB3C ; [.213B.0020.0002] # LATIN SMALL LETTER ENG WITH CROSSED-TAIL +006F ; [.213C.0020.0002] # LATIN SMALL LETTER O +FF4F ; [.213C.0020.0003] # FULLWIDTH LATIN SMALL LETTER O +0366 ; [.213C.0020.0004] # COMBINING LATIN SMALL LETTER O +24AA ; [*0328.0020.0004][.213C.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER O +2134 ; [.213C.0020.0005] # SCRIPT SMALL O +1D428 ; [.213C.0020.0005] # MATHEMATICAL BOLD SMALL O +1D45C ; [.213C.0020.0005] # MATHEMATICAL ITALIC SMALL O +1D490 ; [.213C.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL O +1D4F8 ; [.213C.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL O +1D52C ; [.213C.0020.0005] # MATHEMATICAL FRAKTUR SMALL O +1D560 ; [.213C.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL O +1D594 ; [.213C.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL O +1D5C8 ; [.213C.0020.0005] # MATHEMATICAL SANS-SERIF SMALL O +1D5FC ; [.213C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL O +1D630 ; [.213C.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL O +1D664 ; [.213C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O +1D698 ; [.213C.0020.0005] # MATHEMATICAL MONOSPACE SMALL O +24DE ; [.213C.0020.0006] # CIRCLED LATIN SMALL LETTER O +004F ; [.213C.0020.0008] # LATIN CAPITAL LETTER O +FF2F ; [.213C.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER O +1F11E ; [*0328.0020.0004][.213C.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER O +1D40E ; [.213C.0020.000B] # MATHEMATICAL BOLD CAPITAL O +1D442 ; [.213C.0020.000B] # MATHEMATICAL ITALIC CAPITAL O +1D476 ; [.213C.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL O +1D4AA ; [.213C.0020.000B] # MATHEMATICAL SCRIPT CAPITAL O +1D4DE ; [.213C.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL O +1D512 ; [.213C.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL O +1D546 ; [.213C.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL O +1D57A ; [.213C.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL O +1D5AE ; [.213C.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL O +1D5E2 ; [.213C.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL O +1D616 ; [.213C.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL O +1D64A ; [.213C.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O +1D67E ; [.213C.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL O +24C4 ; [.213C.0020.000C] # CIRCLED LATIN CAPITAL LETTER O +1F15E ; [.213C.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER O +00BA ; [.213C.0020.0014] # MASCULINE ORDINAL INDICATOR +1D52 ; [.213C.0020.0014] # MODIFIER LETTER SMALL O +2092 ; [.213C.0020.0015] # LATIN SUBSCRIPT SMALL LETTER O +1D3C ; [.213C.0020.001D] # MODIFIER LETTER CAPITAL O +1F13E ; [.213C.0020.001D] # SQUARED LATIN CAPITAL LETTER O +1F17E ; [.213C.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER O +00F3 ; [.213C.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH ACUTE +00D3 ; [.213C.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH ACUTE +00F2 ; [.213C.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH GRAVE +00D2 ; [.213C.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH GRAVE +014F ; [.213C.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER O WITH BREVE +014E ; [.213C.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER O WITH BREVE +00F4 ; [.213C.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX +00D4 ; [.213C.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +1ED1 ; [.213C.0020.0002][.0000.0027.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED0 ; [.213C.0020.0008][.0000.0027.0002][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED3 ; [.213C.0020.0002][.0000.0027.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED2 ; [.213C.0020.0008][.0000.0027.0002][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED7 ; [.213C.0020.0002][.0000.0027.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +1ED6 ; [.213C.0020.0008][.0000.0027.0002][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +1ED5 ; [.213C.0020.0002][.0000.0027.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED4 ; [.213C.0020.0008][.0000.0027.0002][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +01D2 ; [.213C.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER O WITH CARON +01D1 ; [.213C.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER O WITH CARON +00F6 ; [.213C.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER O WITH DIAERESIS +1DF3 ; [.213C.0020.0004][.0000.002B.0004] # COMBINING LATIN SMALL LETTER O WITH DIAERESIS +A79D ; [.213C.0020.0004][.0000.002B.0004] # LATIN SMALL LETTER VOLAPUK OE +00D6 ; [.213C.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS +A79C ; [.213C.0020.000A][.0000.002B.0004] # LATIN CAPITAL LETTER VOLAPUK OE +022B ; [.213C.0020.0002][.0000.002B.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.213C.0020.0008][.0000.002B.0002][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +0151 ; [.213C.0020.0002][.0000.002C.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +0150 ; [.213C.0020.0008][.0000.002C.0002] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +00F5 ; [.213C.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH TILDE +00D5 ; [.213C.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH TILDE +1E4D ; [.213C.0020.0002][.0000.002D.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH TILDE AND ACUTE +1E4C ; [.213C.0020.0008][.0000.002D.0002][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE +1E4F ; [.213C.0020.0002][.0000.002D.0002][.0000.002B.0002] # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS +1E4E ; [.213C.0020.0008][.0000.002D.0002][.0000.002B.0002] # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS +022D ; [.213C.0020.0002][.0000.002D.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH TILDE AND MACRON +022C ; [.213C.0020.0008][.0000.002D.0002][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH TILDE AND MACRON +022F ; [.213C.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER O WITH DOT ABOVE +022E ; [.213C.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER O WITH DOT ABOVE +0231 ; [.213C.0020.0002][.0000.002E.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON +0230 ; [.213C.0020.0008][.0000.002E.0002][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON +00F8 ; [.213C.0020.0002][.0000.002F.0002] # LATIN SMALL LETTER O WITH STROKE +00D8 ; [.213C.0020.0008][.0000.002F.0002] # LATIN CAPITAL LETTER O WITH STROKE +01FF ; [.213C.0020.0002][.0000.002F.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE +01FE ; [.213C.0020.0008][.0000.002F.0002][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +01EB ; [.213C.0020.0002][.0000.0031.0002] # LATIN SMALL LETTER O WITH OGONEK +01EA ; [.213C.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER O WITH OGONEK +01ED ; [.213C.0020.0002][.0000.0031.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH OGONEK AND MACRON +01EC ; [.213C.0020.0008][.0000.0031.0002][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON +014D ; [.213C.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH MACRON +014C ; [.213C.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH MACRON +1E53 ; [.213C.0020.0002][.0000.0032.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH MACRON AND ACUTE +1E52 ; [.213C.0020.0008][.0000.0032.0002][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +1E51 ; [.213C.0020.0002][.0000.0032.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH MACRON AND GRAVE +1E50 ; [.213C.0020.0008][.0000.0032.0002][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE +1DED ; [.213C.0020.0004][.0000.0034.0004] # COMBINING LATIN SMALL LETTER O WITH LIGHT CENTRALIZATION STROKE +1ECF ; [.213C.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH HOOK ABOVE +1ECE ; [.213C.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH HOOK ABOVE +020D ; [.213C.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER O WITH DOUBLE GRAVE +020C ; [.213C.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE +020F ; [.213C.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER O WITH INVERTED BREVE +020E ; [.213C.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER O WITH INVERTED BREVE +01A1 ; [.213C.0020.0002][.0000.003F.0002] # LATIN SMALL LETTER O WITH HORN +01A0 ; [.213C.0020.0008][.0000.003F.0002] # LATIN CAPITAL LETTER O WITH HORN +1EDB ; [.213C.0020.0002][.0000.003F.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH HORN AND ACUTE +1EDA ; [.213C.0020.0008][.0000.003F.0002][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH HORN AND ACUTE +1EDD ; [.213C.0020.0002][.0000.003F.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH HORN AND GRAVE +1EDC ; [.213C.0020.0008][.0000.003F.0002][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH HORN AND GRAVE +1EE1 ; [.213C.0020.0002][.0000.003F.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH HORN AND TILDE +1EE0 ; [.213C.0020.0008][.0000.003F.0002][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH HORN AND TILDE +1EDF ; [.213C.0020.0002][.0000.003F.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE +1EDE ; [.213C.0020.0008][.0000.003F.0002][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE +1EE3 ; [.213C.0020.0002][.0000.003F.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW +1EE2 ; [.213C.0020.0008][.0000.003F.0002][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW +1ECD ; [.213C.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH DOT BELOW +1ECC ; [.213C.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH DOT BELOW +1ED9 ; [.213C.0020.0002][.0000.0042.0002][.0000.0027.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +1ED8 ; [.213C.0020.0008][.0000.0042.0002][.0000.0027.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +0153 ; [.213C.0020.0004][.0000.0118.0004][.2007.0020.0004] # LATIN SMALL LIGATURE OE +0152 ; [.213C.0020.000A][.0000.0118.0004][.2007.0020.000A] # LATIN CAPITAL LIGATURE OE +A7F9 ; [.213C.0020.0014][.0000.0118.0014][.2007.0020.0014] # MODIFIER LETTER SMALL LIGATURE OE +1F197 ; [.213C.0020.001D][.20C4.0020.001D] # SQUARED OK +A74F ; [.213C.0020.0004][.213C.0020.0004] # LATIN SMALL LETTER OO +A74E ; [.213C.0020.000A][.213C.0020.000A] # LATIN CAPITAL LETTER OO +3375 ; [.213C.0020.001C][.2247.0020.001D] # SQUARE OV +1D0F ; [.2140.0020.0002] # LATIN LETTER SMALL CAPITAL O +1D11 ; [.2141.0020.0002] # LATIN SMALL LETTER SIDEWAYS O +AB3D ; [.2142.0020.0002] # LATIN SMALL LETTER BLACKLETTER O +0276 ; [.2143.0020.0002] # LATIN LETTER SMALL CAPITAL OE +1D14 ; [.2147.0020.0002] # LATIN SMALL LETTER TURNED OE +AB41 ; [.2148.0020.0002] # LATIN SMALL LETTER TURNED OE WITH STROKE +AB42 ; [.2149.0020.0002] # LATIN SMALL LETTER TURNED OE WITH HORIZONTAL STROKE +AB40 ; [.214A.0020.0002] # LATIN SMALL LETTER INVERTED OE +AB43 ; [.214B.0020.0002] # LATIN SMALL LETTER TURNED O OPEN-O +AB44 ; [.214C.0020.0002] # LATIN SMALL LETTER TURNED O OPEN-O WITH STROKE +1D13 ; [.214D.0020.0002] # LATIN SMALL LETTER SIDEWAYS O WITH STROKE +AB3E ; [.214E.0020.0002] # LATIN SMALL LETTER BLACKLETTER O WITH STROKE +0254 ; [.214F.0020.0002] # LATIN SMALL LETTER OPEN O +0186 ; [.214F.0020.0008] # LATIN CAPITAL LETTER OPEN O +1D53 ; [.214F.0020.0014] # MODIFIER LETTER SMALL OPEN O +1D10 ; [.2153.0020.0002] # LATIN LETTER SMALL CAPITAL OPEN O +1D12 ; [.2154.0020.0002] # LATIN SMALL LETTER SIDEWAYS OPEN O +AB3F ; [.2155.0020.0002] # LATIN SMALL LETTER OPEN O WITH STROKE +1D97 ; [.2156.0020.0002] # LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK +AB62 ; [.2157.0020.0002] # LATIN SMALL LETTER OPEN OE +A74D ; [.2158.0020.0002] # LATIN SMALL LETTER O WITH LOOP +A74C ; [.2158.0020.0008] # LATIN CAPITAL LETTER O WITH LOOP +1D16 ; [.2159.0020.0002] # LATIN SMALL LETTER TOP HALF O +1D54 ; [.2159.0020.0014] # MODIFIER LETTER SMALL TOP HALF O +1D17 ; [.215A.0020.0002] # LATIN SMALL LETTER BOTTOM HALF O +1D55 ; [.215A.0020.0014] # MODIFIER LETTER SMALL BOTTOM HALF O +2C7A ; [.215B.0020.0002] # LATIN SMALL LETTER O WITH LOW RING INSIDE +0275 ; [.215C.0020.0002] # LATIN SMALL LETTER BARRED O +019F ; [.215C.0020.0008] # LATIN CAPITAL LETTER O WITH MIDDLE TILDE +1DB1 ; [.215C.0020.0014] # MODIFIER LETTER SMALL BARRED O +A74B ; [.2160.0020.0002] # LATIN SMALL LETTER O WITH LONG STROKE OVERLAY +A74A ; [.2160.0020.0008] # LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY +0277 ; [.2161.0020.0002] # LATIN SMALL LETTER CLOSED OMEGA +A7B7 ; [.2165.0020.0002] # LATIN SMALL LETTER OMEGA +A7B6 ; [.2165.0020.0008] # LATIN CAPITAL LETTER OMEGA +0223 ; [.2166.0020.0002] # LATIN SMALL LETTER OU +0222 ; [.2166.0020.0008] # LATIN CAPITAL LETTER OU +1D3D ; [.2166.0020.001D] # MODIFIER LETTER CAPITAL OU +1D15 ; [.216A.0020.0002] # LATIN LETTER SMALL CAPITAL OU +0070 ; [.216B.0020.0002] # LATIN SMALL LETTER P +FF50 ; [.216B.0020.0003] # FULLWIDTH LATIN SMALL LETTER P +1DEE ; [.216B.0020.0004] # COMBINING LATIN SMALL LETTER P +24AB ; [*0328.0020.0004][.216B.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER P +1D429 ; [.216B.0020.0005] # MATHEMATICAL BOLD SMALL P +1D45D ; [.216B.0020.0005] # MATHEMATICAL ITALIC SMALL P +1D491 ; [.216B.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL P +1D4C5 ; [.216B.0020.0005] # MATHEMATICAL SCRIPT SMALL P +1D4F9 ; [.216B.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL P +1D52D ; [.216B.0020.0005] # MATHEMATICAL FRAKTUR SMALL P +1D561 ; [.216B.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL P +1D595 ; [.216B.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL P +1D5C9 ; [.216B.0020.0005] # MATHEMATICAL SANS-SERIF SMALL P +1D5FD ; [.216B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL P +1D631 ; [.216B.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL P +1D665 ; [.216B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P +1D699 ; [.216B.0020.0005] # MATHEMATICAL MONOSPACE SMALL P +24DF ; [.216B.0020.0006] # CIRCLED LATIN SMALL LETTER P +0050 ; [.216B.0020.0008] # LATIN CAPITAL LETTER P +FF30 ; [.216B.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER P +1F11F ; [*0328.0020.0004][.216B.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER P +2119 ; [.216B.0020.000B] # DOUBLE-STRUCK CAPITAL P +1D40F ; [.216B.0020.000B] # MATHEMATICAL BOLD CAPITAL P +1D443 ; [.216B.0020.000B] # MATHEMATICAL ITALIC CAPITAL P +1D477 ; [.216B.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL P +1D4AB ; [.216B.0020.000B] # MATHEMATICAL SCRIPT CAPITAL P +1D4DF ; [.216B.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL P +1D513 ; [.216B.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL P +1D57B ; [.216B.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL P +1D5AF ; [.216B.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL P +1D5E3 ; [.216B.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL P +1D617 ; [.216B.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL P +1D64B ; [.216B.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P +1D67F ; [.216B.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL P +24C5 ; [.216B.0020.000C] # CIRCLED LATIN CAPITAL LETTER P +1F15F ; [.216B.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER P +1D56 ; [.216B.0020.0014] # MODIFIER LETTER SMALL P +209A ; [.216B.0020.0015] # LATIN SUBSCRIPT SMALL LETTER P +1D3E ; [.216B.0020.001D] # MODIFIER LETTER CAPITAL P +1F13F ; [.216B.0020.001D] # SQUARED LATIN CAPITAL LETTER P +1F17F ; [.216B.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER P +1F18A ; [.216B.0020.001D] # CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P +1E55 ; [.216B.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER P WITH ACUTE +1E54 ; [.216B.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER P WITH ACUTE +1E57 ; [.216B.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER P WITH DOT ABOVE +1E56 ; [.216B.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER P WITH DOT ABOVE +3380 ; [.216B.0020.001C][.1FA2.0020.001D] # SQUARE PA AMPS +33A9 ; [.216B.0020.001D][.1FA2.0020.001C] # SQUARE PA +1F18C ; [.216B.0020.001D][.1FA2.0020.001D] # NEGATIVE SQUARED PA +3376 ; [.216B.0020.001C][.1FD6.0020.001C] # SQUARE PC +338A ; [.216B.0020.001C][.2042.0020.001D] # SQUARE PF +33D7 ; [.216B.0020.001D][.2075.0020.001D] # SQUARE PH +33D8 ; [.216B.0020.001C][*027E.0020.001C][.2109.0020.001C][*027E.0020.001C] # SQUARE PM +33D9 ; [.216B.0020.001D][.216B.0020.001D][.2109.0020.001D] # SQUARE PPM +1F14E ; [.216B.0020.001D][.216B.0020.001D][.2247.0020.001D] # SQUARED PPV +33DA ; [.216B.0020.001D][.2193.0020.001D] # SQUARE PR +33B0 ; [.216B.0020.001C][.21D2.0020.001C] # SQUARE PS +3250 ; [.216B.0020.001D][.21F7.0020.001D][.2007.0020.001D] # PARTNERSHIP SIGN +33B4 ; [.216B.0020.001C][.2247.0020.001D] # SQUARE PV +33BA ; [.216B.0020.001C][.2259.0020.001D] # SQUARE PW +1D18 ; [.216F.0020.0002] # LATIN LETTER SMALL CAPITAL P +1D7D ; [.2170.0020.0002] # LATIN SMALL LETTER P WITH STROKE +2C63 ; [.2170.0020.0008] # LATIN CAPITAL LETTER P WITH STROKE +A751 ; [.2171.0020.0002] # LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER +A750 ; [.2171.0020.0008] # LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER +1D71 ; [.2172.0020.0002] # LATIN SMALL LETTER P WITH MIDDLE TILDE +1D88 ; [.2173.0020.0002] # LATIN SMALL LETTER P WITH PALATAL HOOK +01A5 ; [.2174.0020.0002] # LATIN SMALL LETTER P WITH HOOK +01A4 ; [.2174.0020.0008] # LATIN CAPITAL LETTER P WITH HOOK +A753 ; [.2178.0020.0002] # LATIN SMALL LETTER P WITH FLOURISH +A752 ; [.2178.0020.0008] # LATIN CAPITAL LETTER P WITH FLOURISH +A755 ; [.2179.0020.0002] # LATIN SMALL LETTER P WITH SQUIRREL TAIL +A754 ; [.2179.0020.0008] # LATIN CAPITAL LETTER P WITH SQUIRREL TAIL +A7FC ; [.217A.0020.0002] # LATIN EPIGRAPHIC LETTER REVERSED P +0278 ; [.217B.0020.0002] # LATIN SMALL LETTER PHI +1DB2 ; [.217B.0020.0014] # MODIFIER LETTER SMALL PHI +2C77 ; [.217F.0020.0002] # LATIN SMALL LETTER TAILLESS PHI +0071 ; [.2180.0020.0002] # LATIN SMALL LETTER Q +FF51 ; [.2180.0020.0003] # FULLWIDTH LATIN SMALL LETTER Q +24AC ; [*0328.0020.0004][.2180.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER Q +1D42A ; [.2180.0020.0005] # MATHEMATICAL BOLD SMALL Q +1D45E ; [.2180.0020.0005] # MATHEMATICAL ITALIC SMALL Q +1D492 ; [.2180.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL Q +1D4C6 ; [.2180.0020.0005] # MATHEMATICAL SCRIPT SMALL Q +1D4FA ; [.2180.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL Q +1D52E ; [.2180.0020.0005] # MATHEMATICAL FRAKTUR SMALL Q +1D562 ; [.2180.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL Q +1D596 ; [.2180.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL Q +1D5CA ; [.2180.0020.0005] # MATHEMATICAL SANS-SERIF SMALL Q +1D5FE ; [.2180.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL Q +1D632 ; [.2180.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL Q +1D666 ; [.2180.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q +1D69A ; [.2180.0020.0005] # MATHEMATICAL MONOSPACE SMALL Q +24E0 ; [.2180.0020.0006] # CIRCLED LATIN SMALL LETTER Q +0051 ; [.2180.0020.0008] # LATIN CAPITAL LETTER Q +FF31 ; [.2180.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER Q +1F120 ; [*0328.0020.0004][.2180.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER Q +211A ; [.2180.0020.000B] # DOUBLE-STRUCK CAPITAL Q +1D410 ; [.2180.0020.000B] # MATHEMATICAL BOLD CAPITAL Q +1D444 ; [.2180.0020.000B] # MATHEMATICAL ITALIC CAPITAL Q +1D478 ; [.2180.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL Q +1D4AC ; [.2180.0020.000B] # MATHEMATICAL SCRIPT CAPITAL Q +1D4E0 ; [.2180.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL Q +1D514 ; [.2180.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL Q +1D57C ; [.2180.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL Q +1D5B0 ; [.2180.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL Q +1D5E4 ; [.2180.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL Q +1D618 ; [.2180.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q +1D64C ; [.2180.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q +1D680 ; [.2180.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL Q +24C6 ; [.2180.0020.000C] # CIRCLED LATIN CAPITAL LETTER Q +1F160 ; [.2180.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER Q +1F140 ; [.2180.0020.001D] # SQUARED LATIN CAPITAL LETTER Q +1F180 ; [.2180.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER Q +0239 ; [.2180.0020.0004][.216B.0020.0004] # LATIN SMALL LETTER QP DIGRAPH +A7AF ; [.2184.0020.0002] # LATIN LETTER SMALL CAPITAL Q +A757 ; [.2185.0020.0002] # LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER +A756 ; [.2185.0020.0008] # LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER +A759 ; [.2186.0020.0002] # LATIN SMALL LETTER Q WITH DIAGONAL STROKE +A758 ; [.2186.0020.0008] # LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE +02A0 ; [.2187.0020.0002] # LATIN SMALL LETTER Q WITH HOOK +024B ; [.218B.0020.0002] # LATIN SMALL LETTER Q WITH HOOK TAIL +024A ; [.218B.0020.0008] # LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL +0138 ; [.218F.0020.0002] # LATIN SMALL LETTER KRA +0072 ; [.2193.0020.0002] # LATIN SMALL LETTER R +FF52 ; [.2193.0020.0003] # FULLWIDTH LATIN SMALL LETTER R +036C ; [.2193.0020.0004] # COMBINING LATIN SMALL LETTER R +1DCA ; [.2193.0020.0004] # COMBINING LATIN SMALL LETTER R BELOW +24AD ; [*0328.0020.0004][.2193.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER R +1D42B ; [.2193.0020.0005] # MATHEMATICAL BOLD SMALL R +1D45F ; [.2193.0020.0005] # MATHEMATICAL ITALIC SMALL R +1D493 ; [.2193.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL R +1D4C7 ; [.2193.0020.0005] # MATHEMATICAL SCRIPT SMALL R +1D4FB ; [.2193.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL R +1D52F ; [.2193.0020.0005] # MATHEMATICAL FRAKTUR SMALL R +1D563 ; [.2193.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL R +1D597 ; [.2193.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL R +1D5CB ; [.2193.0020.0005] # MATHEMATICAL SANS-SERIF SMALL R +1D5FF ; [.2193.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL R +1D633 ; [.2193.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL R +1D667 ; [.2193.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R +1D69B ; [.2193.0020.0005] # MATHEMATICAL MONOSPACE SMALL R +24E1 ; [.2193.0020.0006] # CIRCLED LATIN SMALL LETTER R +0052 ; [.2193.0020.0008] # LATIN CAPITAL LETTER R +FF32 ; [.2193.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER R +1F121 ; [*0328.0020.0004][.2193.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER R +211B ; [.2193.0020.000B] # SCRIPT CAPITAL R +211C ; [.2193.0020.000B] # BLACK-LETTER CAPITAL R +211D ; [.2193.0020.000B] # DOUBLE-STRUCK CAPITAL R +1D411 ; [.2193.0020.000B] # MATHEMATICAL BOLD CAPITAL R +1D445 ; [.2193.0020.000B] # MATHEMATICAL ITALIC CAPITAL R +1D479 ; [.2193.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL R +1D4E1 ; [.2193.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL R +1D57D ; [.2193.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL R +1D5B1 ; [.2193.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL R +1D5E5 ; [.2193.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL R +1D619 ; [.2193.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL R +1D64D ; [.2193.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R +1D681 ; [.2193.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL R +24C7 ; [.2193.0020.000C] # CIRCLED LATIN CAPITAL LETTER R +1F12C ; [.2193.0020.000C] # CIRCLED ITALIC LATIN CAPITAL LETTER R +1F161 ; [.2193.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER R +02B3 ; [.2193.0020.0014] # MODIFIER LETTER SMALL R +1D63 ; [.2193.0020.0015] # LATIN SUBSCRIPT SMALL LETTER R +1D3F ; [.2193.0020.001D] # MODIFIER LETTER CAPITAL R +1F141 ; [.2193.0020.001D] # SQUARED LATIN CAPITAL LETTER R +1F181 ; [.2193.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER R +0155 ; [.2193.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER R WITH ACUTE +0154 ; [.2193.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER R WITH ACUTE +0159 ; [.2193.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER R WITH CARON +0158 ; [.2193.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER R WITH CARON +1E59 ; [.2193.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER R WITH DOT ABOVE +1E58 ; [.2193.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER R WITH DOT ABOVE +0157 ; [.2193.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER R WITH CEDILLA +0156 ; [.2193.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER R WITH CEDILLA +A7A7 ; [.2193.0020.0004][.0000.0035.0004] # LATIN SMALL LETTER R WITH OBLIQUE STROKE +A7A6 ; [.2193.0020.000A][.0000.0035.0004] # LATIN CAPITAL LETTER R WITH OBLIQUE STROKE +0211 ; [.2193.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER R WITH DOUBLE GRAVE +0210 ; [.2193.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE +0213 ; [.2193.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER R WITH INVERTED BREVE +0212 ; [.2193.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER R WITH INVERTED BREVE +1E5B ; [.2193.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER R WITH DOT BELOW +1E5A ; [.2193.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER R WITH DOT BELOW +1E5D ; [.2193.0020.0002][.0000.0042.0002][.0000.0032.0002] # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON +1E5C ; [.2193.0020.0008][.0000.0042.0002][.0000.0032.0002] # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON +1E5F ; [.2193.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER R WITH LINE BELOW +1E5E ; [.2193.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER R WITH LINE BELOW +A783 ; [.2193.0020.0004][.0000.0119.0004] # LATIN SMALL LETTER INSULAR R +A782 ; [.2193.0020.000A][.0000.0119.0004] # LATIN CAPITAL LETTER INSULAR R +33AD ; [.2193.0020.001C][.1FA2.0020.001C][.1FEB.0020.001C] # SQUARE RAD +33AE ; [.2193.0020.001C][.1FA2.0020.001C][.1FEB.0020.001C][*0675.0020.001C][.21D2.0020.001C] # SQUARE RAD OVER S +33AF ; [.2193.0020.001C][.1FA2.0020.001C][.1FEB.0020.001C][*0675.0020.001C][.21D2.0020.001C][.1F9A.0020.001C] # SQUARE RAD OVER S SQUARED +20A8 ; [.2193.0020.000A][.21D2.0020.0004] # RUPEE SIGN +AB45 ; [.2197.0020.0002] # LATIN SMALL LETTER STIRRUP R +0280 ; [.2198.0020.0002] # LATIN LETTER SMALL CAPITAL R +1DE2 ; [.2198.0020.0004] # COMBINING LATIN LETTER SMALL CAPITAL R +01A6 ; [.2198.0020.0008] # LATIN LETTER YR +AB46 ; [.219C.0020.0002] # LATIN LETTER SMALL CAPITAL R WITH RIGHT LEG +A75B ; [.219D.0020.0002] # LATIN SMALL LETTER R ROTUNDA +1DE3 ; [.219D.0020.0004] # COMBINING LATIN SMALL LETTER R ROTUNDA +A75A ; [.219D.0020.0008] # LATIN CAPITAL LETTER R ROTUNDA +1D19 ; [.219E.0020.0002] # LATIN LETTER SMALL CAPITAL REVERSED R +024D ; [.219F.0020.0002] # LATIN SMALL LETTER R WITH STROKE +024C ; [.219F.0020.0008] # LATIN CAPITAL LETTER R WITH STROKE +1D72 ; [.21A3.0020.0002] # LATIN SMALL LETTER R WITH MIDDLE TILDE +0279 ; [.21A4.0020.0002] # LATIN SMALL LETTER TURNED R +02B4 ; [.21A4.0020.0014] # MODIFIER LETTER SMALL TURNED R +1D1A ; [.21A8.0020.0002] # LATIN LETTER SMALL CAPITAL TURNED R +027A ; [.21A9.0020.0002] # LATIN SMALL LETTER TURNED R WITH LONG LEG +1D89 ; [.21AD.0020.0002] # LATIN SMALL LETTER R WITH PALATAL HOOK +027B ; [.21AE.0020.0002] # LATIN SMALL LETTER TURNED R WITH HOOK +02B5 ; [.21AE.0020.0014] # MODIFIER LETTER SMALL TURNED R WITH HOOK +2C79 ; [.21B2.0020.0002] # LATIN SMALL LETTER TURNED R WITH TAIL +027C ; [.21B3.0020.0002] # LATIN SMALL LETTER R WITH LONG LEG +027D ; [.21B7.0020.0002] # LATIN SMALL LETTER R WITH TAIL +2C64 ; [.21B7.0020.0008] # LATIN CAPITAL LETTER R WITH TAIL +AB49 ; [.21BB.0020.0002] # LATIN SMALL LETTER R WITH CROSSED-TAIL +027E ; [.21BC.0020.0002] # LATIN SMALL LETTER R WITH FISHHOOK +1D73 ; [.21C0.0020.0002] # LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE +027F ; [.21C1.0020.0002] # LATIN SMALL LETTER REVERSED R WITH FISHHOOK +AB47 ; [.21C5.0020.0002] # LATIN SMALL LETTER R WITHOUT HANDLE +AB48 ; [.21C6.0020.0002] # LATIN SMALL LETTER DOUBLE R +AB4A ; [.21C7.0020.0002] # LATIN SMALL LETTER DOUBLE R WITH CROSSED-TAIL +AB4B ; [.21C8.0020.0002] # LATIN SMALL LETTER SCRIPT R +AB4C ; [.21C9.0020.0002] # LATIN SMALL LETTER SCRIPT R WITH RING +0281 ; [.21CA.0020.0002] # LATIN LETTER SMALL CAPITAL INVERTED R +02B6 ; [.21CA.0020.0014] # MODIFIER LETTER SMALL CAPITAL INVERTED R +AB68 ; [.21CE.0020.0002] # LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE +A775 ; [.21CF.0020.0002] # LATIN SMALL LETTER RUM +A776 ; [.21D0.0020.0002] # LATIN LETTER SMALL CAPITAL RUM +A75D ; [.21D1.0020.0002] # LATIN SMALL LETTER RUM ROTUNDA +A75C ; [.21D1.0020.0008] # LATIN CAPITAL LETTER RUM ROTUNDA +0073 ; [.21D2.0020.0002] # LATIN SMALL LETTER S +FF53 ; [.21D2.0020.0003] # FULLWIDTH LATIN SMALL LETTER S +1DE4 ; [.21D2.0020.0004] # COMBINING LATIN SMALL LETTER S +24AE ; [*0328.0020.0004][.21D2.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER S +1D42C ; [.21D2.0020.0005] # MATHEMATICAL BOLD SMALL S +1D460 ; [.21D2.0020.0005] # MATHEMATICAL ITALIC SMALL S +1D494 ; [.21D2.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL S +1D4C8 ; [.21D2.0020.0005] # MATHEMATICAL SCRIPT SMALL S +1D4FC ; [.21D2.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL S +1D530 ; [.21D2.0020.0005] # MATHEMATICAL FRAKTUR SMALL S +1D564 ; [.21D2.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL S +1D598 ; [.21D2.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL S +1D5CC ; [.21D2.0020.0005] # MATHEMATICAL SANS-SERIF SMALL S +1D600 ; [.21D2.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL S +1D634 ; [.21D2.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL S +1D668 ; [.21D2.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S +1D69C ; [.21D2.0020.0005] # MATHEMATICAL MONOSPACE SMALL S +24E2 ; [.21D2.0020.0006] # CIRCLED LATIN SMALL LETTER S +0053 ; [.21D2.0020.0008] # LATIN CAPITAL LETTER S +FF33 ; [.21D2.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER S +1F122 ; [*0328.0020.0004][.21D2.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER S +1F12A ; [*038A.0020.0004][.21D2.0020.000A][*038B.0020.0004] # TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S +1D412 ; [.21D2.0020.000B] # MATHEMATICAL BOLD CAPITAL S +1D446 ; [.21D2.0020.000B] # MATHEMATICAL ITALIC CAPITAL S +1D47A ; [.21D2.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL S +1D4AE ; [.21D2.0020.000B] # MATHEMATICAL SCRIPT CAPITAL S +1D4E2 ; [.21D2.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL S +1D516 ; [.21D2.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL S +1D54A ; [.21D2.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL S +1D57E ; [.21D2.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL S +1D5B2 ; [.21D2.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL S +1D5E6 ; [.21D2.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL S +1D61A ; [.21D2.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL S +1D64E ; [.21D2.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S +1D682 ; [.21D2.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL S +24C8 ; [.21D2.0020.000C] # CIRCLED LATIN CAPITAL LETTER S +1F162 ; [.21D2.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER S +02E2 ; [.21D2.0020.0014] # MODIFIER LETTER SMALL S +209B ; [.21D2.0020.0015] # LATIN SUBSCRIPT SMALL LETTER S +1F142 ; [.21D2.0020.001D] # SQUARED LATIN CAPITAL LETTER S +1F182 ; [.21D2.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER S +015B ; [.21D2.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER S WITH ACUTE +015A ; [.21D2.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER S WITH ACUTE +1E65 ; [.21D2.0020.0002][.0000.0024.0002][.0000.002E.0002] # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE +1E64 ; [.21D2.0020.0008][.0000.0024.0002][.0000.002E.0002] # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE +015D ; [.21D2.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER S WITH CIRCUMFLEX +015C ; [.21D2.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER S WITH CIRCUMFLEX +0161 ; [.21D2.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER S WITH CARON +0160 ; [.21D2.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER S WITH CARON +1E67 ; [.21D2.0020.0002][.0000.0028.0002][.0000.002E.0002] # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE +1E66 ; [.21D2.0020.0008][.0000.0028.0002][.0000.002E.0002] # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE +1E61 ; [.21D2.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER S WITH DOT ABOVE +1E60 ; [.21D2.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER S WITH DOT ABOVE +015F ; [.21D2.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER S WITH CEDILLA +015E ; [.21D2.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER S WITH CEDILLA +A7A9 ; [.21D2.0020.0004][.0000.0035.0004] # LATIN SMALL LETTER S WITH OBLIQUE STROKE +A7A8 ; [.21D2.0020.000A][.0000.0035.0004] # LATIN CAPITAL LETTER S WITH OBLIQUE STROKE +1E63 ; [.21D2.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER S WITH DOT BELOW +1E62 ; [.21D2.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER S WITH DOT BELOW +1E69 ; [.21D2.0020.0002][.0000.0042.0002][.0000.002E.0002] # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE +1E68 ; [.21D2.0020.0008][.0000.0042.0002][.0000.002E.0002] # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE +0219 ; [.21D2.0020.0002][.0000.0045.0002] # LATIN SMALL LETTER S WITH COMMA BELOW +0218 ; [.21D2.0020.0008][.0000.0045.0002] # LATIN CAPITAL LETTER S WITH COMMA BELOW +017F ; [.21D2.0020.0004][.0000.0119.0004] # LATIN SMALL LETTER LONG S +1DE5 ; [.21D2.0020.0004][.0000.0119.0004] # COMBINING LATIN SMALL LETTER LONG S +A785 ; [.21D2.0020.0004][.0000.0119.0004] # LATIN SMALL LETTER INSULAR S +A784 ; [.21D2.0020.000A][.0000.0119.0004] # LATIN CAPITAL LETTER INSULAR S +1E9B ; [.21D2.0020.0004][.0000.0119.0004][.0000.002E.0002] # LATIN SMALL LETTER LONG S WITH DOT ABOVE +1F18D ; [.21D2.0020.001D][.1FA2.0020.001D] # NEGATIVE SQUARED SA +1F14C ; [.21D2.0020.001D][.1FEB.0020.001D] # SQUARED SD +1F1AA ; [.21D2.0020.001D][.2075.0020.001D][.2247.0020.001D] # SQUARED SHV +2120 ; [.21D2.0020.0014][.2109.0020.0014] # SERVICE MARK +1F198 ; [.21D2.0020.001D][.213C.0020.001D][.21D2.0020.001D] # SQUARED SOS +33DB ; [.21D2.0020.001C][.2193.0020.001C] # SQUARE SR +1F14D ; [.21D2.0020.001D][.21D2.0020.001D] # SQUARED SS +00DF ; [.21D2.0020.0004][.0000.0118.0004][.21D2.0020.0004] # LATIN SMALL LETTER SHARP S +1E9E ; [.21D2.0020.000A][.0000.0118.0004][.21D2.0020.000A] # LATIN CAPITAL LETTER SHARP S +FB06 ; [.21D2.0020.0004][.21F7.0020.0004] # LATIN SMALL LIGATURE ST +FB05 ; [.21D2.0020.0004][.0000.0119.0004][.21F7.0020.0004] # LATIN SMALL LIGATURE LONG S T +33DC ; [.21D2.0020.001D][.2247.0020.001C] # SQUARE SV +A731 ; [.21D6.0020.0002] # LATIN LETTER SMALL CAPITAL S +A7CA ; [.21D7.0020.0002] # LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY +A7C9 ; [.21D7.0020.0008] # LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY +1D74 ; [.21D8.0020.0002] # LATIN SMALL LETTER S WITH MIDDLE TILDE +1D8A ; [.21D9.0020.0002] # LATIN SMALL LETTER S WITH PALATAL HOOK +0282 ; [.21DA.0020.0002] # LATIN SMALL LETTER S WITH HOOK +A7C5 ; [.21DA.0020.0008] # LATIN CAPITAL LETTER S WITH HOOK +1DB3 ; [.21DA.0020.0014] # MODIFIER LETTER SMALL S WITH HOOK +023F ; [.21DE.0020.0002] # LATIN SMALL LETTER S WITH SWASH TAIL +2C7E ; [.21DE.0020.0008] # LATIN CAPITAL LETTER S WITH SWASH TAIL +1E9C ; [.21E2.0020.0002] # LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE +1E9D ; [.21E3.0020.0002] # LATIN SMALL LETTER LONG S WITH HIGH STROKE +0283 ; [.21E4.0020.0002] # LATIN SMALL LETTER ESH +1DEF ; [.21E4.0020.0004] # COMBINING LATIN SMALL LETTER ESH +01A9 ; [.21E4.0020.0008] # LATIN CAPITAL LETTER ESH +1DB4 ; [.21E4.0020.0014] # MODIFIER LETTER SMALL ESH +AB4D ; [.21E8.0020.0002] # LATIN SMALL LETTER BASELINE ESH +1D8B ; [.21E9.0020.0002] # LATIN SMALL LETTER ESH WITH PALATAL HOOK +01AA ; [.21EA.0020.0002] # LATIN LETTER REVERSED ESH LOOP +0285 ; [.21EE.0020.0002] # LATIN SMALL LETTER SQUAT REVERSED ESH +1D98 ; [.21F2.0020.0002] # LATIN SMALL LETTER ESH WITH RETROFLEX HOOK +0286 ; [.21F3.0020.0002] # LATIN SMALL LETTER ESH WITH CURL +0074 ; [.21F7.0020.0002] # LATIN SMALL LETTER T +FF54 ; [.21F7.0020.0003] # FULLWIDTH LATIN SMALL LETTER T +036D ; [.21F7.0020.0004] # COMBINING LATIN SMALL LETTER T +24AF ; [*0328.0020.0004][.21F7.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER T +1D42D ; [.21F7.0020.0005] # MATHEMATICAL BOLD SMALL T +1D461 ; [.21F7.0020.0005] # MATHEMATICAL ITALIC SMALL T +1D495 ; [.21F7.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL T +1D4C9 ; [.21F7.0020.0005] # MATHEMATICAL SCRIPT SMALL T +1D4FD ; [.21F7.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL T +1D531 ; [.21F7.0020.0005] # MATHEMATICAL FRAKTUR SMALL T +1D565 ; [.21F7.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL T +1D599 ; [.21F7.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL T +1D5CD ; [.21F7.0020.0005] # MATHEMATICAL SANS-SERIF SMALL T +1D601 ; [.21F7.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL T +1D635 ; [.21F7.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL T +1D669 ; [.21F7.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T +1D69D ; [.21F7.0020.0005] # MATHEMATICAL MONOSPACE SMALL T +24E3 ; [.21F7.0020.0006] # CIRCLED LATIN SMALL LETTER T +0054 ; [.21F7.0020.0008] # LATIN CAPITAL LETTER T +FF34 ; [.21F7.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER T +1F123 ; [*0328.0020.0004][.21F7.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER T +1D413 ; [.21F7.0020.000B] # MATHEMATICAL BOLD CAPITAL T +1D447 ; [.21F7.0020.000B] # MATHEMATICAL ITALIC CAPITAL T +1D47B ; [.21F7.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL T +1D4AF ; [.21F7.0020.000B] # MATHEMATICAL SCRIPT CAPITAL T +1D4E3 ; [.21F7.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL T +1D517 ; [.21F7.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL T +1D54B ; [.21F7.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL T +1D57F ; [.21F7.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL T +1D5B3 ; [.21F7.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL T +1D5E7 ; [.21F7.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL T +1D61B ; [.21F7.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL T +1D64F ; [.21F7.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T +1D683 ; [.21F7.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL T +24C9 ; [.21F7.0020.000C] # CIRCLED LATIN CAPITAL LETTER T +1F163 ; [.21F7.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER T +1D57 ; [.21F7.0020.0014] # MODIFIER LETTER SMALL T +209C ; [.21F7.0020.0015] # LATIN SUBSCRIPT SMALL LETTER T +1D40 ; [.21F7.0020.001D] # MODIFIER LETTER CAPITAL T +1F143 ; [.21F7.0020.001D] # SQUARED LATIN CAPITAL LETTER T +1F183 ; [.21F7.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER T +0165 ; [.21F7.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER T WITH CARON +0164 ; [.21F7.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER T WITH CARON +1E97 ; [.21F7.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER T WITH DIAERESIS +1E6B ; [.21F7.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER T WITH DOT ABOVE +1E6A ; [.21F7.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER T WITH DOT ABOVE +0163 ; [.21F7.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER T WITH CEDILLA +0162 ; [.21F7.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER T WITH CEDILLA +1E6D ; [.21F7.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER T WITH DOT BELOW +1E6C ; [.21F7.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER T WITH DOT BELOW +021B ; [.21F7.0020.0002][.0000.0045.0002] # LATIN SMALL LETTER T WITH COMMA BELOW +021A ; [.21F7.0020.0008][.0000.0045.0002] # LATIN CAPITAL LETTER T WITH COMMA BELOW +1E71 ; [.21F7.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW +1E70 ; [.21F7.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW +1E6F ; [.21F7.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER T WITH LINE BELOW +1E6E ; [.21F7.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER T WITH LINE BELOW +A787 ; [.21F7.0020.0004][.0000.0119.0004] # LATIN SMALL LETTER INSULAR T +A786 ; [.21F7.0020.000A][.0000.0119.0004] # LATIN CAPITAL LETTER INSULAR T +02A8 ; [.21F7.0020.0004][.1FE5.0020.0004] # LATIN SMALL LETTER TC DIGRAPH WITH CURL +2121 ; [.21F7.0020.000A][.2007.0020.000A][.20D6.0020.000A] # TELEPHONE SIGN +1D7A ; [.21F7.0020.0004][.0000.0118.0004][.2075.0020.0004] # LATIN SMALL LETTER TH WITH STRIKETHROUGH +3394 ; [.21F7.0020.001D][.2075.0020.001D][.2286.0020.001C] # SQUARE THZ +2122 ; [.21F7.0020.0014][.2109.0020.0014] # TRADE MARK SIGN +01BE ; [.21F7.0020.0004][.21D2.0020.0004] # LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE +02A6 ; [.21F7.0020.0004][.21D2.0020.0004] # LATIN SMALL LETTER TS DIGRAPH +AB67 ; [.21F7.0020.0004][.21DA.0020.0004] # LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK +02A7 ; [.21F7.0020.0004][.21E4.0020.0004] # LATIN SMALL LETTER TESH DIGRAPH +A729 ; [.21F7.0020.0004][.2286.0020.0004] # LATIN SMALL LETTER TZ +A728 ; [.21F7.0020.000A][.2286.0020.0004] # LATIN CAPITAL LETTER TZ +1D1B ; [.21FB.0020.0002] # LATIN LETTER SMALL CAPITAL T +0167 ; [.21FC.0020.0002] # LATIN SMALL LETTER T WITH STROKE +0166 ; [.21FC.0020.0008] # LATIN CAPITAL LETTER T WITH STROKE +2C66 ; [.2200.0020.0002] # LATIN SMALL LETTER T WITH DIAGONAL STROKE +023E ; [.2200.0020.0008] # LATIN CAPITAL LETTER T WITH DIAGONAL STROKE +1D75 ; [.2201.0020.0002] # LATIN SMALL LETTER T WITH MIDDLE TILDE +01AB ; [.2202.0020.0002] # LATIN SMALL LETTER T WITH PALATAL HOOK +1DB5 ; [.2202.0020.0014] # MODIFIER LETTER SMALL T WITH PALATAL HOOK +01AD ; [.2206.0020.0002] # LATIN SMALL LETTER T WITH HOOK +01AC ; [.2206.0020.0008] # LATIN CAPITAL LETTER T WITH HOOK +0288 ; [.220A.0020.0002] # LATIN SMALL LETTER T WITH RETROFLEX HOOK +01AE ; [.220A.0020.0008] # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK +0236 ; [.220E.0020.0002] # LATIN SMALL LETTER T WITH CURL +A777 ; [.2212.0020.0002] # LATIN SMALL LETTER TUM +0287 ; [.2213.0020.0002] # LATIN SMALL LETTER TURNED T +A7B1 ; [.2213.0020.0008] # LATIN CAPITAL LETTER TURNED T +0075 ; [.2217.0020.0002] # LATIN SMALL LETTER U +FF55 ; [.2217.0020.0003] # FULLWIDTH LATIN SMALL LETTER U +0367 ; [.2217.0020.0004] # COMBINING LATIN SMALL LETTER U +24B0 ; [*0328.0020.0004][.2217.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER U +1D42E ; [.2217.0020.0005] # MATHEMATICAL BOLD SMALL U +1D462 ; [.2217.0020.0005] # MATHEMATICAL ITALIC SMALL U +1D496 ; [.2217.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL U +1D4CA ; [.2217.0020.0005] # MATHEMATICAL SCRIPT SMALL U +1D4FE ; [.2217.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL U +1D532 ; [.2217.0020.0005] # MATHEMATICAL FRAKTUR SMALL U +1D566 ; [.2217.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL U +1D59A ; [.2217.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL U +1D5CE ; [.2217.0020.0005] # MATHEMATICAL SANS-SERIF SMALL U +1D602 ; [.2217.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL U +1D636 ; [.2217.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL U +1D66A ; [.2217.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U +1D69E ; [.2217.0020.0005] # MATHEMATICAL MONOSPACE SMALL U +24E4 ; [.2217.0020.0006] # CIRCLED LATIN SMALL LETTER U +0055 ; [.2217.0020.0008] # LATIN CAPITAL LETTER U +FF35 ; [.2217.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER U +1F124 ; [*0328.0020.0004][.2217.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER U +1D414 ; [.2217.0020.000B] # MATHEMATICAL BOLD CAPITAL U +1D448 ; [.2217.0020.000B] # MATHEMATICAL ITALIC CAPITAL U +1D47C ; [.2217.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL U +1D4B0 ; [.2217.0020.000B] # MATHEMATICAL SCRIPT CAPITAL U +1D4E4 ; [.2217.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL U +1D518 ; [.2217.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL U +1D54C ; [.2217.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL U +1D580 ; [.2217.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL U +1D5B4 ; [.2217.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL U +1D5E8 ; [.2217.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL U +1D61C ; [.2217.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL U +1D650 ; [.2217.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U +1D684 ; [.2217.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL U +24CA ; [.2217.0020.000C] # CIRCLED LATIN CAPITAL LETTER U +1F164 ; [.2217.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER U +1D58 ; [.2217.0020.0014] # MODIFIER LETTER SMALL U +1D64 ; [.2217.0020.0015] # LATIN SUBSCRIPT SMALL LETTER U +1D41 ; [.2217.0020.001D] # MODIFIER LETTER CAPITAL U +1F144 ; [.2217.0020.001D] # SQUARED LATIN CAPITAL LETTER U +1F184 ; [.2217.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER U +00FA ; [.2217.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH ACUTE +00DA ; [.2217.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH ACUTE +00F9 ; [.2217.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH GRAVE +00D9 ; [.2217.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH GRAVE +016D ; [.2217.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER U WITH BREVE +016C ; [.2217.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER U WITH BREVE +00FB ; [.2217.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER U WITH CIRCUMFLEX +00DB ; [.2217.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +01D4 ; [.2217.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH CARON +01D3 ; [.2217.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH CARON +016F ; [.2217.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER U WITH RING ABOVE +016E ; [.2217.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER U WITH RING ABOVE +00FC ; [.2217.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER U WITH DIAERESIS +1DF4 ; [.2217.0020.0004][.0000.002B.0004] # COMBINING LATIN SMALL LETTER U WITH DIAERESIS +A79F ; [.2217.0020.0004][.0000.002B.0004] # LATIN SMALL LETTER VOLAPUK UE +00DC ; [.2217.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS +A79E ; [.2217.0020.000A][.0000.002B.0004] # LATIN CAPITAL LETTER VOLAPUK UE +01D8 ; [.2217.0020.0002][.0000.002B.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2217.0020.0008][.0000.002B.0002][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01DC ; [.2217.0020.0002][.0000.002B.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2217.0020.0008][.0000.002B.0002][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01DA ; [.2217.0020.0002][.0000.002B.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2217.0020.0008][.0000.002B.0002][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +01D6 ; [.2217.0020.0002][.0000.002B.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2217.0020.0008][.0000.002B.0002][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +0171 ; [.2217.0020.0002][.0000.002C.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0170 ; [.2217.0020.0008][.0000.002C.0002] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0169 ; [.2217.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER U WITH TILDE +0168 ; [.2217.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER U WITH TILDE +1E79 ; [.2217.0020.0002][.0000.002D.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH TILDE AND ACUTE +1E78 ; [.2217.0020.0008][.0000.002D.0002][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE +0173 ; [.2217.0020.0002][.0000.0031.0002] # LATIN SMALL LETTER U WITH OGONEK +0172 ; [.2217.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER U WITH OGONEK +016B ; [.2217.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH MACRON +016A ; [.2217.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH MACRON +1E7B ; [.2217.0020.0002][.0000.0032.0002][.0000.002B.0002] # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS +1E7A ; [.2217.0020.0008][.0000.0032.0002][.0000.002B.0002] # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS +1DF0 ; [.2217.0020.0004][.0000.0034.0004] # COMBINING LATIN SMALL LETTER U WITH LIGHT CENTRALIZATION STROKE +1EE7 ; [.2217.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER U WITH HOOK ABOVE +1EE6 ; [.2217.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER U WITH HOOK ABOVE +0215 ; [.2217.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER U WITH DOUBLE GRAVE +0214 ; [.2217.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE +0217 ; [.2217.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER U WITH INVERTED BREVE +0216 ; [.2217.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER U WITH INVERTED BREVE +01B0 ; [.2217.0020.0002][.0000.003F.0002] # LATIN SMALL LETTER U WITH HORN +01AF ; [.2217.0020.0008][.0000.003F.0002] # LATIN CAPITAL LETTER U WITH HORN +1EE9 ; [.2217.0020.0002][.0000.003F.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH HORN AND ACUTE +1EE8 ; [.2217.0020.0008][.0000.003F.0002][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH HORN AND ACUTE +1EEB ; [.2217.0020.0002][.0000.003F.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH HORN AND GRAVE +1EEA ; [.2217.0020.0008][.0000.003F.0002][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH HORN AND GRAVE +1EEF ; [.2217.0020.0002][.0000.003F.0002][.0000.002D.0002] # LATIN SMALL LETTER U WITH HORN AND TILDE +1EEE ; [.2217.0020.0008][.0000.003F.0002][.0000.002D.0002] # LATIN CAPITAL LETTER U WITH HORN AND TILDE +1EED ; [.2217.0020.0002][.0000.003F.0002][.0000.003B.0002] # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE +1EEC ; [.2217.0020.0008][.0000.003F.0002][.0000.003B.0002] # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE +1EF1 ; [.2217.0020.0002][.0000.003F.0002][.0000.0042.0002] # LATIN SMALL LETTER U WITH HORN AND DOT BELOW +1EF0 ; [.2217.0020.0008][.0000.003F.0002][.0000.0042.0002] # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW +1EE5 ; [.2217.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER U WITH DOT BELOW +1EE4 ; [.2217.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER U WITH DOT BELOW +1E73 ; [.2217.0020.0002][.0000.0043.0002] # LATIN SMALL LETTER U WITH DIAERESIS BELOW +1E72 ; [.2217.0020.0008][.0000.0043.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW +1E77 ; [.2217.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW +1E76 ; [.2217.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW +1E75 ; [.2217.0020.0002][.0000.0048.0002] # LATIN SMALL LETTER U WITH TILDE BELOW +1E74 ; [.2217.0020.0008][.0000.0048.0002] # LATIN CAPITAL LETTER U WITH TILDE BELOW +1F1AB ; [.2217.0020.001D][.2075.0020.001D][.1FEB.0020.001D] # SQUARED UHD +1F199 ; [.2217.0020.001D][.216B.0020.001D][*0267.0020.001C] # SQUARED UP WITH EXCLAMATION MARK +1D1C ; [.221B.0020.0002] # LATIN LETTER SMALL CAPITAL U +1DB8 ; [.221B.0020.0014] # MODIFIER LETTER SMALL CAPITAL U +AB4E ; [.221C.0020.0002] # LATIN SMALL LETTER U WITH SHORT RIGHT LEG +1D1D ; [.221D.0020.0002] # LATIN SMALL LETTER SIDEWAYS U +1D59 ; [.221D.0020.0014] # MODIFIER LETTER SMALL SIDEWAYS U +1D1E ; [.221E.0020.0002] # LATIN SMALL LETTER SIDEWAYS DIAERESIZED U +1D6B ; [.221F.0020.0002] # LATIN SMALL LETTER UE +AB50 ; [.2220.0020.0002] # LATIN SMALL LETTER UI +AB51 ; [.2221.0020.0002] # LATIN SMALL LETTER TURNED UI +0289 ; [.2222.0020.0002] # LATIN SMALL LETTER U BAR +0244 ; [.2222.0020.0008] # LATIN CAPITAL LETTER U BAR +1DB6 ; [.2222.0020.0014] # MODIFIER LETTER SMALL U BAR +AB4F ; [.2226.0020.0002] # LATIN SMALL LETTER U BAR WITH SHORT RIGHT LEG +A7B9 ; [.2227.0020.0002] # LATIN SMALL LETTER U WITH STROKE +A7B8 ; [.2227.0020.0008] # LATIN CAPITAL LETTER U WITH STROKE +1D7E ; [.2228.0020.0002] # LATIN SMALL CAPITAL LETTER U WITH STROKE +1D99 ; [.2229.0020.0002] # LATIN SMALL LETTER U WITH RETROFLEX HOOK +AB52 ; [.222A.0020.0002] # LATIN SMALL LETTER U WITH LEFT HOOK +AB5F ; [.222A.0020.0014] # MODIFIER LETTER SMALL U WITH LEFT HOOK +A7BF ; [.222B.0020.0002] # LATIN SMALL LETTER GLOTTAL U +A7BE ; [.222B.0020.0008] # LATIN CAPITAL LETTER GLOTTAL U +0265 ; [.222C.0020.0002] # LATIN SMALL LETTER TURNED H +A78D ; [.222C.0020.0008] # LATIN CAPITAL LETTER TURNED H +1DA3 ; [.222C.0020.0014] # MODIFIER LETTER SMALL TURNED H +02AE ; [.2230.0020.0002] # LATIN SMALL LETTER TURNED H WITH FISHHOOK +02AF ; [.2234.0020.0002] # LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL +026F ; [.2238.0020.0002] # LATIN SMALL LETTER TURNED M +019C ; [.2238.0020.0008] # LATIN CAPITAL LETTER TURNED M +1D5A ; [.2238.0020.0014] # MODIFIER LETTER SMALL TURNED M +A7FA ; [.223C.0020.0002] # LATIN LETTER SMALL CAPITAL TURNED M +1D1F ; [.223D.0020.0002] # LATIN SMALL LETTER SIDEWAYS TURNED M +0270 ; [.223E.0020.0002] # LATIN SMALL LETTER TURNED M WITH LONG LEG +1DAD ; [.223E.0020.0014] # MODIFIER LETTER SMALL TURNED M WITH LONG LEG +028A ; [.2242.0020.0002] # LATIN SMALL LETTER UPSILON +01B1 ; [.2242.0020.0008] # LATIN CAPITAL LETTER UPSILON +1DB7 ; [.2242.0020.0014] # MODIFIER LETTER SMALL UPSILON +1D7F ; [.2246.0020.0002] # LATIN SMALL LETTER UPSILON WITH STROKE +0076 ; [.2247.0020.0002] # LATIN SMALL LETTER V +FF56 ; [.2247.0020.0003] # FULLWIDTH LATIN SMALL LETTER V +036E ; [.2247.0020.0004] # COMBINING LATIN SMALL LETTER V +2174 ; [.2247.0020.0004] # SMALL ROMAN NUMERAL FIVE +24B1 ; [*0328.0020.0004][.2247.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER V +1D42F ; [.2247.0020.0005] # MATHEMATICAL BOLD SMALL V +1D463 ; [.2247.0020.0005] # MATHEMATICAL ITALIC SMALL V +1D497 ; [.2247.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL V +1D4CB ; [.2247.0020.0005] # MATHEMATICAL SCRIPT SMALL V +1D4FF ; [.2247.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL V +1D533 ; [.2247.0020.0005] # MATHEMATICAL FRAKTUR SMALL V +1D567 ; [.2247.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL V +1D59B ; [.2247.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL V +1D5CF ; [.2247.0020.0005] # MATHEMATICAL SANS-SERIF SMALL V +1D603 ; [.2247.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL V +1D637 ; [.2247.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL V +1D66B ; [.2247.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V +1D69F ; [.2247.0020.0005] # MATHEMATICAL MONOSPACE SMALL V +24E5 ; [.2247.0020.0006] # CIRCLED LATIN SMALL LETTER V +0056 ; [.2247.0020.0008] # LATIN CAPITAL LETTER V +FF36 ; [.2247.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER V +2164 ; [.2247.0020.000A] # ROMAN NUMERAL FIVE +1F125 ; [*0328.0020.0004][.2247.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER V +1D415 ; [.2247.0020.000B] # MATHEMATICAL BOLD CAPITAL V +1D449 ; [.2247.0020.000B] # MATHEMATICAL ITALIC CAPITAL V +1D47D ; [.2247.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL V +1D4B1 ; [.2247.0020.000B] # MATHEMATICAL SCRIPT CAPITAL V +1D4E5 ; [.2247.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL V +1D519 ; [.2247.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL V +1D54D ; [.2247.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL V +1D581 ; [.2247.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL V +1D5B5 ; [.2247.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL V +1D5E9 ; [.2247.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL V +1D61D ; [.2247.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL V +1D651 ; [.2247.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V +1D685 ; [.2247.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL V +24CB ; [.2247.0020.000C] # CIRCLED LATIN CAPITAL LETTER V +1F165 ; [.2247.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER V +1D5B ; [.2247.0020.0014] # MODIFIER LETTER SMALL V +1D65 ; [.2247.0020.0015] # LATIN SUBSCRIPT SMALL LETTER V +2C7D ; [.2247.0020.001D] # MODIFIER LETTER CAPITAL V +1F145 ; [.2247.0020.001D] # SQUARED LATIN CAPITAL LETTER V +1F185 ; [.2247.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER V +1E7D ; [.2247.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER V WITH TILDE +1E7C ; [.2247.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER V WITH TILDE +1E7F ; [.2247.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER V WITH DOT BELOW +1E7E ; [.2247.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER V WITH DOT BELOW +2175 ; [.2247.0020.0004][.2090.0020.0004] # SMALL ROMAN NUMERAL SIX +2165 ; [.2247.0020.000A][.2090.0020.000A] # ROMAN NUMERAL SIX +2176 ; [.2247.0020.0004][.2090.0020.0004][.2090.0020.0004] # SMALL ROMAN NUMERAL SEVEN +2166 ; [.2247.0020.000A][.2090.0020.000A][.2090.0020.000A] # ROMAN NUMERAL SEVEN +2177 ; [.2247.0020.0004][.2090.0020.0004][.2090.0020.0004][.2090.0020.0004] # SMALL ROMAN NUMERAL EIGHT +2167 ; [.2247.0020.000A][.2090.0020.000A][.2090.0020.000A][.2090.0020.000A] # ROMAN NUMERAL EIGHT +33DE ; [.2247.0020.001D][*0675.0020.001C][.2109.0020.001C] # SQUARE V OVER M +1F1AC ; [.2247.0020.001D][.213C.0020.001D][.1FEB.0020.001D] # SQUARED VOD +1F19A ; [.2247.0020.001D][.21D2.0020.001D] # SQUARED VS +A761 ; [.2247.0020.0004][.2270.0020.0004] # LATIN SMALL LETTER VY +A760 ; [.2247.0020.000A][.2270.0020.000A] # LATIN CAPITAL LETTER VY +1D20 ; [.224B.0020.0002] # LATIN LETTER SMALL CAPITAL V +A75F ; [.224C.0020.0002] # LATIN SMALL LETTER V WITH DIAGONAL STROKE +A75E ; [.224C.0020.0008] # LATIN CAPITAL LETTER V WITH DIAGONAL STROKE +1D8C ; [.224D.0020.0002] # LATIN SMALL LETTER V WITH PALATAL HOOK +028B ; [.224E.0020.0002] # LATIN SMALL LETTER V WITH HOOK +01B2 ; [.224E.0020.0008] # LATIN CAPITAL LETTER V WITH HOOK +1DB9 ; [.224E.0020.0014] # MODIFIER LETTER SMALL V WITH HOOK +2C71 ; [.2252.0020.0002] # LATIN SMALL LETTER V WITH RIGHT HOOK +2C74 ; [.2253.0020.0002] # LATIN SMALL LETTER V WITH CURL +1EFD ; [.2254.0020.0002] # LATIN SMALL LETTER MIDDLE-WELSH V +1EFC ; [.2254.0020.0008] # LATIN CAPITAL LETTER MIDDLE-WELSH V +028C ; [.2255.0020.0002] # LATIN SMALL LETTER TURNED V +0245 ; [.2255.0020.0008] # LATIN CAPITAL LETTER TURNED V +1DBA ; [.2255.0020.0014] # MODIFIER LETTER SMALL TURNED V +0077 ; [.2259.0020.0002] # LATIN SMALL LETTER W +FF57 ; [.2259.0020.0003] # FULLWIDTH LATIN SMALL LETTER W +1ABF ; [.2259.0020.0004] # COMBINING LATIN SMALL LETTER W BELOW +1DF1 ; [.2259.0020.0004] # COMBINING LATIN SMALL LETTER W +24B2 ; [*0328.0020.0004][.2259.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER W +1D430 ; [.2259.0020.0005] # MATHEMATICAL BOLD SMALL W +1D464 ; [.2259.0020.0005] # MATHEMATICAL ITALIC SMALL W +1D498 ; [.2259.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL W +1D4CC ; [.2259.0020.0005] # MATHEMATICAL SCRIPT SMALL W +1D500 ; [.2259.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL W +1D534 ; [.2259.0020.0005] # MATHEMATICAL FRAKTUR SMALL W +1D568 ; [.2259.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL W +1D59C ; [.2259.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL W +1D5D0 ; [.2259.0020.0005] # MATHEMATICAL SANS-SERIF SMALL W +1D604 ; [.2259.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL W +1D638 ; [.2259.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL W +1D66C ; [.2259.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W +1D6A0 ; [.2259.0020.0005] # MATHEMATICAL MONOSPACE SMALL W +24E6 ; [.2259.0020.0006] # CIRCLED LATIN SMALL LETTER W +0057 ; [.2259.0020.0008] # LATIN CAPITAL LETTER W +FF37 ; [.2259.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER W +1F126 ; [*0328.0020.0004][.2259.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER W +1D416 ; [.2259.0020.000B] # MATHEMATICAL BOLD CAPITAL W +1D44A ; [.2259.0020.000B] # MATHEMATICAL ITALIC CAPITAL W +1D47E ; [.2259.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL W +1D4B2 ; [.2259.0020.000B] # MATHEMATICAL SCRIPT CAPITAL W +1D4E6 ; [.2259.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL W +1D51A ; [.2259.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL W +1D54E ; [.2259.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL W +1D582 ; [.2259.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL W +1D5B6 ; [.2259.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL W +1D5EA ; [.2259.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL W +1D61E ; [.2259.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL W +1D652 ; [.2259.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W +1D686 ; [.2259.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL W +24CC ; [.2259.0020.000C] # CIRCLED LATIN CAPITAL LETTER W +1F166 ; [.2259.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER W +02B7 ; [.2259.0020.0014] # MODIFIER LETTER SMALL W +1D42 ; [.2259.0020.001D] # MODIFIER LETTER CAPITAL W +1F146 ; [.2259.0020.001D] # SQUARED LATIN CAPITAL LETTER W +1F186 ; [.2259.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER W +1E83 ; [.2259.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER W WITH ACUTE +1E82 ; [.2259.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER W WITH ACUTE +1E81 ; [.2259.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER W WITH GRAVE +1E80 ; [.2259.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER W WITH GRAVE +0175 ; [.2259.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER W WITH CIRCUMFLEX +0174 ; [.2259.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER W WITH CIRCUMFLEX +1E98 ; [.2259.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER W WITH RING ABOVE +1E85 ; [.2259.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER W WITH DIAERESIS +1E84 ; [.2259.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER W WITH DIAERESIS +1E87 ; [.2259.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER W WITH DOT ABOVE +1E86 ; [.2259.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER W WITH DOT ABOVE +1E89 ; [.2259.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER W WITH DOT BELOW +1E88 ; [.2259.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER W WITH DOT BELOW +33DD ; [.2259.0020.001D][.1FBC.0020.001C] # SQUARE WB +1F14F ; [.2259.0020.001D][.1FD6.0020.001D] # SQUARED WC +1F18F ; [.2259.0020.001D][.1FD6.0020.001D] # NEGATIVE SQUARED WC +1F12E ; [.2259.0020.000C][.2286.0020.000C] # CIRCLED WZ +1D21 ; [.225D.0020.0002] # LATIN LETTER SMALL CAPITAL W +A7C3 ; [.225E.0020.0002] # LATIN SMALL LETTER ANGLICANA W +A7C2 ; [.225E.0020.0008] # LATIN CAPITAL LETTER ANGLICANA W +2C73 ; [.225F.0020.0002] # LATIN SMALL LETTER W WITH HOOK +2C72 ; [.225F.0020.0008] # LATIN CAPITAL LETTER W WITH HOOK +028D ; [.2260.0020.0002] # LATIN SMALL LETTER TURNED W +1AC0 ; [.2260.0020.0004] # COMBINING LATIN SMALL LETTER TURNED W BELOW +AB69 ; [.2260.0020.0014] # MODIFIER LETTER SMALL TURNED W +0078 ; [.2264.0020.0002] # LATIN SMALL LETTER X +FF58 ; [.2264.0020.0003] # FULLWIDTH LATIN SMALL LETTER X +036F ; [.2264.0020.0004] # COMBINING LATIN SMALL LETTER X +2179 ; [.2264.0020.0004] # SMALL ROMAN NUMERAL TEN +24B3 ; [*0328.0020.0004][.2264.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER X +1D431 ; [.2264.0020.0005] # MATHEMATICAL BOLD SMALL X +1D465 ; [.2264.0020.0005] # MATHEMATICAL ITALIC SMALL X +1D499 ; [.2264.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL X +1D4CD ; [.2264.0020.0005] # MATHEMATICAL SCRIPT SMALL X +1D501 ; [.2264.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL X +1D535 ; [.2264.0020.0005] # MATHEMATICAL FRAKTUR SMALL X +1D569 ; [.2264.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL X +1D59D ; [.2264.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL X +1D5D1 ; [.2264.0020.0005] # MATHEMATICAL SANS-SERIF SMALL X +1D605 ; [.2264.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL X +1D639 ; [.2264.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL X +1D66D ; [.2264.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X +1D6A1 ; [.2264.0020.0005] # MATHEMATICAL MONOSPACE SMALL X +24E7 ; [.2264.0020.0006] # CIRCLED LATIN SMALL LETTER X +0058 ; [.2264.0020.0008] # LATIN CAPITAL LETTER X +FF38 ; [.2264.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER X +2169 ; [.2264.0020.000A] # ROMAN NUMERAL TEN +1F127 ; [*0328.0020.0004][.2264.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER X +1D417 ; [.2264.0020.000B] # MATHEMATICAL BOLD CAPITAL X +1D44B ; [.2264.0020.000B] # MATHEMATICAL ITALIC CAPITAL X +1D47F ; [.2264.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL X +1D4B3 ; [.2264.0020.000B] # MATHEMATICAL SCRIPT CAPITAL X +1D4E7 ; [.2264.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL X +1D51B ; [.2264.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL X +1D54F ; [.2264.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL X +1D583 ; [.2264.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL X +1D5B7 ; [.2264.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL X +1D5EB ; [.2264.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL X +1D61F ; [.2264.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL X +1D653 ; [.2264.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X +1D687 ; [.2264.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL X +24CD ; [.2264.0020.000C] # CIRCLED LATIN CAPITAL LETTER X +1F167 ; [.2264.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER X +02E3 ; [.2264.0020.0014] # MODIFIER LETTER SMALL X +2093 ; [.2264.0020.0015] # LATIN SUBSCRIPT SMALL LETTER X +1F147 ; [.2264.0020.001D] # SQUARED LATIN CAPITAL LETTER X +1F187 ; [.2264.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER X +1E8D ; [.2264.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER X WITH DIAERESIS +1E8C ; [.2264.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER X WITH DIAERESIS +1E8B ; [.2264.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER X WITH DOT ABOVE +1E8A ; [.2264.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER X WITH DOT ABOVE +217A ; [.2264.0020.0004][.2090.0020.0004] # SMALL ROMAN NUMERAL ELEVEN +216A ; [.2264.0020.000A][.2090.0020.000A] # ROMAN NUMERAL ELEVEN +217B ; [.2264.0020.0004][.2090.0020.0004][.2090.0020.0004] # SMALL ROMAN NUMERAL TWELVE +216B ; [.2264.0020.000A][.2090.0020.000A][.2090.0020.000A] # ROMAN NUMERAL TWELVE +1D8D ; [.2268.0020.0002] # LATIN SMALL LETTER X WITH PALATAL HOOK +AB56 ; [.2269.0020.0002] # LATIN SMALL LETTER X WITH LOW RIGHT RING +AB57 ; [.226A.0020.0002] # LATIN SMALL LETTER X WITH LONG LEFT LEG +AB58 ; [.226B.0020.0002] # LATIN SMALL LETTER X WITH LONG LEFT LEG AND LOW RIGHT RING +AB59 ; [.226C.0020.0002] # LATIN SMALL LETTER X WITH LONG LEFT LEG WITH SERIF +AB53 ; [.226D.0020.0002] # LATIN SMALL LETTER CHI +A7B3 ; [.226D.0020.0008] # LATIN CAPITAL LETTER CHI +AB54 ; [.226E.0020.0002] # LATIN SMALL LETTER CHI WITH LOW RIGHT RING +AB55 ; [.226F.0020.0002] # LATIN SMALL LETTER CHI WITH LOW LEFT SERIF +0079 ; [.2270.0020.0002] # LATIN SMALL LETTER Y +FF59 ; [.2270.0020.0003] # FULLWIDTH LATIN SMALL LETTER Y +24B4 ; [*0328.0020.0004][.2270.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER Y +1D432 ; [.2270.0020.0005] # MATHEMATICAL BOLD SMALL Y +1D466 ; [.2270.0020.0005] # MATHEMATICAL ITALIC SMALL Y +1D49A ; [.2270.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL Y +1D4CE ; [.2270.0020.0005] # MATHEMATICAL SCRIPT SMALL Y +1D502 ; [.2270.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL Y +1D536 ; [.2270.0020.0005] # MATHEMATICAL FRAKTUR SMALL Y +1D56A ; [.2270.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL Y +1D59E ; [.2270.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL Y +1D5D2 ; [.2270.0020.0005] # MATHEMATICAL SANS-SERIF SMALL Y +1D606 ; [.2270.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL Y +1D63A ; [.2270.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL Y +1D66E ; [.2270.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y +1D6A2 ; [.2270.0020.0005] # MATHEMATICAL MONOSPACE SMALL Y +24E8 ; [.2270.0020.0006] # CIRCLED LATIN SMALL LETTER Y +0059 ; [.2270.0020.0008] # LATIN CAPITAL LETTER Y +FF39 ; [.2270.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER Y +1F128 ; [*0328.0020.0004][.2270.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER Y +1D418 ; [.2270.0020.000B] # MATHEMATICAL BOLD CAPITAL Y +1D44C ; [.2270.0020.000B] # MATHEMATICAL ITALIC CAPITAL Y +1D480 ; [.2270.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL Y +1D4B4 ; [.2270.0020.000B] # MATHEMATICAL SCRIPT CAPITAL Y +1D4E8 ; [.2270.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL Y +1D51C ; [.2270.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL Y +1D550 ; [.2270.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL Y +1D584 ; [.2270.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL Y +1D5B8 ; [.2270.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL Y +1D5EC ; [.2270.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL Y +1D620 ; [.2270.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y +1D654 ; [.2270.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y +1D688 ; [.2270.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL Y +24CE ; [.2270.0020.000C] # CIRCLED LATIN CAPITAL LETTER Y +1F168 ; [.2270.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER Y +02B8 ; [.2270.0020.0014] # MODIFIER LETTER SMALL Y +1F148 ; [.2270.0020.001D] # SQUARED LATIN CAPITAL LETTER Y +1F188 ; [.2270.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER Y +00FD ; [.2270.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER Y WITH ACUTE +00DD ; [.2270.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER Y WITH ACUTE +1EF3 ; [.2270.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER Y WITH GRAVE +1EF2 ; [.2270.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER Y WITH GRAVE +0177 ; [.2270.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER Y WITH CIRCUMFLEX +0176 ; [.2270.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX +1E99 ; [.2270.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER Y WITH RING ABOVE +00FF ; [.2270.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER Y WITH DIAERESIS +0178 ; [.2270.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER Y WITH DIAERESIS +1EF9 ; [.2270.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER Y WITH TILDE +1EF8 ; [.2270.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER Y WITH TILDE +1E8F ; [.2270.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER Y WITH DOT ABOVE +1E8E ; [.2270.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER Y WITH DOT ABOVE +0233 ; [.2270.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER Y WITH MACRON +0232 ; [.2270.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER Y WITH MACRON +1EF7 ; [.2270.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER Y WITH HOOK ABOVE +1EF6 ; [.2270.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER Y WITH HOOK ABOVE +1EF5 ; [.2270.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER Y WITH DOT BELOW +1EF4 ; [.2270.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER Y WITH DOT BELOW +028F ; [.2274.0020.0002] # LATIN LETTER SMALL CAPITAL Y +024F ; [.2278.0020.0002] # LATIN SMALL LETTER Y WITH STROKE +024E ; [.2278.0020.0008] # LATIN CAPITAL LETTER Y WITH STROKE +01B4 ; [.227C.0020.0002] # LATIN SMALL LETTER Y WITH HOOK +01B3 ; [.227C.0020.0008] # LATIN CAPITAL LETTER Y WITH HOOK +1EFF ; [.2280.0020.0002] # LATIN SMALL LETTER Y WITH LOOP +1EFE ; [.2280.0020.0008] # LATIN CAPITAL LETTER Y WITH LOOP +AB5A ; [.2281.0020.0002] # LATIN SMALL LETTER Y WITH SHORT RIGHT LEG +021D ; [.2282.0020.0002] # LATIN SMALL LETTER YOGH +021C ; [.2282.0020.0008] # LATIN CAPITAL LETTER YOGH +007A ; [.2286.0020.0002] # LATIN SMALL LETTER Z +FF5A ; [.2286.0020.0003] # FULLWIDTH LATIN SMALL LETTER Z +1DE6 ; [.2286.0020.0004] # COMBINING LATIN SMALL LETTER Z +24B5 ; [*0328.0020.0004][.2286.0020.0004][*0329.0020.0004] # PARENTHESIZED LATIN SMALL LETTER Z +1D433 ; [.2286.0020.0005] # MATHEMATICAL BOLD SMALL Z +1D467 ; [.2286.0020.0005] # MATHEMATICAL ITALIC SMALL Z +1D49B ; [.2286.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL Z +1D4CF ; [.2286.0020.0005] # MATHEMATICAL SCRIPT SMALL Z +1D503 ; [.2286.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL Z +1D537 ; [.2286.0020.0005] # MATHEMATICAL FRAKTUR SMALL Z +1D56B ; [.2286.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL Z +1D59F ; [.2286.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL Z +1D5D3 ; [.2286.0020.0005] # MATHEMATICAL SANS-SERIF SMALL Z +1D607 ; [.2286.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL Z +1D63B ; [.2286.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL Z +1D66F ; [.2286.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z +1D6A3 ; [.2286.0020.0005] # MATHEMATICAL MONOSPACE SMALL Z +24E9 ; [.2286.0020.0006] # CIRCLED LATIN SMALL LETTER Z +005A ; [.2286.0020.0008] # LATIN CAPITAL LETTER Z +FF3A ; [.2286.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER Z +1F129 ; [*0328.0020.0004][.2286.0020.000A][*0329.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER Z +2124 ; [.2286.0020.000B] # DOUBLE-STRUCK CAPITAL Z +2128 ; [.2286.0020.000B] # BLACK-LETTER CAPITAL Z +1D419 ; [.2286.0020.000B] # MATHEMATICAL BOLD CAPITAL Z +1D44D ; [.2286.0020.000B] # MATHEMATICAL ITALIC CAPITAL Z +1D481 ; [.2286.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL Z +1D4B5 ; [.2286.0020.000B] # MATHEMATICAL SCRIPT CAPITAL Z +1D4E9 ; [.2286.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL Z +1D585 ; [.2286.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL Z +1D5B9 ; [.2286.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL Z +1D5ED ; [.2286.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL Z +1D621 ; [.2286.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z +1D655 ; [.2286.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z +1D689 ; [.2286.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL Z +24CF ; [.2286.0020.000C] # CIRCLED LATIN CAPITAL LETTER Z +1F169 ; [.2286.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER Z +1DBB ; [.2286.0020.0014] # MODIFIER LETTER SMALL Z +1F149 ; [.2286.0020.001D] # SQUARED LATIN CAPITAL LETTER Z +1F189 ; [.2286.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER Z +017A ; [.2286.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER Z WITH ACUTE +0179 ; [.2286.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER Z WITH ACUTE +1E91 ; [.2286.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER Z WITH CIRCUMFLEX +1E90 ; [.2286.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX +017E ; [.2286.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER Z WITH CARON +017D ; [.2286.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER Z WITH CARON +017C ; [.2286.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER Z WITH DOT ABOVE +017B ; [.2286.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER Z WITH DOT ABOVE +1E93 ; [.2286.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER Z WITH DOT BELOW +1E92 ; [.2286.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER Z WITH DOT BELOW +1E95 ; [.2286.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER Z WITH LINE BELOW +1E94 ; [.2286.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER Z WITH LINE BELOW +018D ; [.2286.0020.0004][.2259.0020.0004] # LATIN SMALL LETTER TURNED DELTA +1D22 ; [.228A.0020.0002] # LATIN LETTER SMALL CAPITAL Z +01B6 ; [.228B.0020.0002] # LATIN SMALL LETTER Z WITH STROKE +01B5 ; [.228B.0020.0008] # LATIN CAPITAL LETTER Z WITH STROKE +1D76 ; [.228F.0020.0002] # LATIN SMALL LETTER Z WITH MIDDLE TILDE +1D8E ; [.2290.0020.0002] # LATIN SMALL LETTER Z WITH PALATAL HOOK +A7C6 ; [.2290.0020.0008] # LATIN CAPITAL LETTER Z WITH PALATAL HOOK +0225 ; [.2291.0020.0002] # LATIN SMALL LETTER Z WITH HOOK +0224 ; [.2291.0020.0008] # LATIN CAPITAL LETTER Z WITH HOOK +0290 ; [.2295.0020.0002] # LATIN SMALL LETTER Z WITH RETROFLEX HOOK +1DBC ; [.2295.0020.0014] # MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK +0291 ; [.2299.0020.0002] # LATIN SMALL LETTER Z WITH CURL +1DBD ; [.2299.0020.0014] # MODIFIER LETTER SMALL Z WITH CURL +0240 ; [.229D.0020.0002] # LATIN SMALL LETTER Z WITH SWASH TAIL +2C7F ; [.229D.0020.0008] # LATIN CAPITAL LETTER Z WITH SWASH TAIL +2C6C ; [.22A1.0020.0002] # LATIN SMALL LETTER Z WITH DESCENDER +2C6B ; [.22A1.0020.0008] # LATIN CAPITAL LETTER Z WITH DESCENDER +A763 ; [.22A2.0020.0002] # LATIN SMALL LETTER VISIGOTHIC Z +A762 ; [.22A2.0020.0008] # LATIN CAPITAL LETTER VISIGOTHIC Z +0292 ; [.22A3.0020.0002] # LATIN SMALL LETTER EZH +01B7 ; [.22A3.0020.0008] # LATIN CAPITAL LETTER EZH +1DBE ; [.22A3.0020.0014] # MODIFIER LETTER SMALL EZH +01EF ; [.22A3.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER EZH WITH CARON +01EE ; [.22A3.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER EZH WITH CARON +1D23 ; [.22A7.0020.0002] # LATIN LETTER SMALL CAPITAL EZH +01B9 ; [.22A8.0020.0002] # LATIN SMALL LETTER EZH REVERSED +01B8 ; [.22A8.0020.0008] # LATIN CAPITAL LETTER EZH REVERSED +1D9A ; [.22AC.0020.0002] # LATIN SMALL LETTER EZH WITH RETROFLEX HOOK +01BA ; [.22AD.0020.0002] # LATIN SMALL LETTER EZH WITH TAIL +0293 ; [.22B1.0020.0002] # LATIN SMALL LETTER EZH WITH CURL +00FE ; [.22B5.0020.0002] # LATIN SMALL LETTER THORN +00DE ; [.22B5.0020.0008] # LATIN CAPITAL LETTER THORN +A765 ; [.22B9.0020.0002] # LATIN SMALL LETTER THORN WITH STROKE +A764 ; [.22B9.0020.0008] # LATIN CAPITAL LETTER THORN WITH STROKE +A767 ; [.22BA.0020.0002] # LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER +A766 ; [.22BA.0020.0008] # LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER +01BF ; [.22BB.0020.0002] # LATIN LETTER WYNN +01F7 ; [.22BB.0020.0008] # LATIN CAPITAL LETTER WYNN +A769 ; [.22BF.0020.0002] # LATIN SMALL LETTER VEND +A768 ; [.22BF.0020.0008] # LATIN CAPITAL LETTER VEND +AB60 ; [.22C0.0020.0002] # LATIN SMALL LETTER SAKHA YAT +AB61 ; [.22C1.0020.0002] # LATIN SMALL LETTER IOTIFIED E +AB63 ; [.22C2.0020.0002] # LATIN SMALL LETTER UO +A76B ; [.22C3.0020.0002] # LATIN SMALL LETTER ET +A76A ; [.22C3.0020.0008] # LATIN CAPITAL LETTER ET +A76D ; [.22C4.0020.0002] # LATIN SMALL LETTER IS +A76C ; [.22C4.0020.0008] # LATIN CAPITAL LETTER IS +A76F ; [.22C5.0020.0002] # LATIN SMALL LETTER CON +1DD2 ; [.22C5.0020.0004] # COMBINING US ABOVE +A76E ; [.22C5.0020.0008] # LATIN CAPITAL LETTER CON +A770 ; [.22C5.0020.0014] # MODIFIER LETTER US +A778 ; [.22C6.0020.0002] # LATIN SMALL LETTER UM +01BB ; [.22C7.0020.0002] # LATIN LETTER TWO WITH STROKE +A72B ; [.22CB.0020.0002] # LATIN SMALL LETTER TRESILLO +A72A ; [.22CB.0020.0008] # LATIN CAPITAL LETTER TRESILLO +A72D ; [.22CC.0020.0002] # LATIN SMALL LETTER CUATRILLO +A72C ; [.22CC.0020.0008] # LATIN CAPITAL LETTER CUATRILLO +A72F ; [.22CD.0020.0002] # LATIN SMALL LETTER CUATRILLO WITH COMMA +A72E ; [.22CD.0020.0008] # LATIN CAPITAL LETTER CUATRILLO WITH COMMA +01A8 ; [.22CE.0020.0002] # LATIN SMALL LETTER TONE TWO +01A7 ; [.22CE.0020.0008] # LATIN CAPITAL LETTER TONE TWO +01BD ; [.22D2.0020.0002] # LATIN SMALL LETTER TONE FIVE +01BC ; [.22D2.0020.0008] # LATIN CAPITAL LETTER TONE FIVE +0185 ; [.22D6.0020.0002] # LATIN SMALL LETTER TONE SIX +0184 ; [.22D6.0020.0008] # LATIN CAPITAL LETTER TONE SIX +0294 ; [.22DA.0020.0002] # LATIN LETTER GLOTTAL STOP +0242 ; [.22DE.0020.0002] # LATIN SMALL LETTER GLOTTAL STOP +0241 ; [.22DE.0020.0008] # LATIN CAPITAL LETTER GLOTTAL STOP +02C0 ; [.22E2.0020.0002] # MODIFIER LETTER GLOTTAL STOP +02BC ; [.22E3.0020.0002] # MODIFIER LETTER APOSTROPHE +0149 ; [.22E3.0020.0004][.2118.0020.0004] # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE +02EE ; [.22E4.0020.0002] # MODIFIER LETTER DOUBLE APOSTROPHE +02BE ; [.22E5.0020.0002] # MODIFIER LETTER RIGHT HALF RING +A723 ; [.22E6.0020.0002] # LATIN SMALL LETTER EGYPTOLOGICAL ALEF +A722 ; [.22E6.0020.0008] # LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF +A78C ; [.22E7.0020.0002] # LATIN SMALL LETTER SALTILLO +A78B ; [.22E7.0020.0008] # LATIN CAPITAL LETTER SALTILLO +A78F ; [.22E8.0020.0002] # LATIN LETTER SINOLOGICAL DOT +0295 ; [.22E9.0020.0002] # LATIN LETTER PHARYNGEAL VOICED FRICATIVE +02E4 ; [.22E9.0020.0014] # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP +02BF ; [.22ED.0020.0002] # MODIFIER LETTER LEFT HALF RING +02C1 ; [.22EE.0020.0002] # MODIFIER LETTER REVERSED GLOTTAL STOP +1D24 ; [.22EF.0020.0002] # LATIN LETTER VOICED LARYNGEAL SPIRANT +1D25 ; [.22F0.0020.0002] # LATIN LETTER AIN +1D5C ; [.22F0.0020.0014] # MODIFIER LETTER SMALL AIN +A725 ; [.22F1.0020.0002] # LATIN SMALL LETTER EGYPTOLOGICAL AIN +A724 ; [.22F1.0020.0008] # LATIN CAPITAL LETTER EGYPTOLOGICAL AIN +02A1 ; [.22F2.0020.0002] # LATIN LETTER GLOTTAL STOP WITH STROKE +02A2 ; [.22F6.0020.0002] # LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE +0296 ; [.22FA.0020.0002] # LATIN LETTER INVERTED GLOTTAL STOP +01C0 ; [.22FE.0020.0002] # LATIN LETTER DENTAL CLICK +01C1 ; [.2302.0020.0002] # LATIN LETTER LATERAL CLICK +01C2 ; [.2306.0020.0002] # LATIN LETTER ALVEOLAR CLICK +01C3 ; [.230A.0020.0002] # LATIN LETTER RETROFLEX CLICK +0297 ; [.230E.0020.0002] # LATIN LETTER STRETCHED C +0298 ; [.2312.0020.0002] # LATIN LETTER BILABIAL CLICK +02AC ; [.2316.0020.0002] # LATIN LETTER BILABIAL PERCUSSIVE +02AD ; [.231A.0020.0002] # LATIN LETTER BIDENTAL PERCUSSIVE +03B1 ; [.231E.0020.0002] # GREEK SMALL LETTER ALPHA +1D6C2 ; [.231E.0020.0005] # MATHEMATICAL BOLD SMALL ALPHA +1D6FC ; [.231E.0020.0005] # MATHEMATICAL ITALIC SMALL ALPHA +1D736 ; [.231E.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL ALPHA +1D770 ; [.231E.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA +1D7AA ; [.231E.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA +0391 ; [.231E.0020.0008] # GREEK CAPITAL LETTER ALPHA +1D6A8 ; [.231E.0020.000B] # MATHEMATICAL BOLD CAPITAL ALPHA +1D6E2 ; [.231E.0020.000B] # MATHEMATICAL ITALIC CAPITAL ALPHA +1D71C ; [.231E.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL ALPHA +1D756 ; [.231E.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA +1D790 ; [.231E.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA +1F00 ; [.231E.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER ALPHA WITH PSILI +1F08 ; [.231E.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI +1F04 ; [.231E.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA +1F0C ; [.231E.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA +1F84 ; [.231E.0020.0002][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +1F8C ; [.231E.0020.0008][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1F02 ; [.231E.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA +1F0A ; [.231E.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA +1F82 ; [.231E.0020.0002][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +1F8A ; [.231E.0020.0008][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1F06 ; [.231E.0020.0002][.0000.0022.0002][.0000.002A.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI +1F0E ; [.231E.0020.0008][.0000.0022.0002][.0000.002A.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI +1F86 ; [.231E.0020.0002][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +1F8E ; [.231E.0020.0008][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1F80 ; [.231E.0020.0002][.0000.0022.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI +1F88 ; [.231E.0020.0008][.0000.0022.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI +1F01 ; [.231E.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER ALPHA WITH DASIA +1F09 ; [.231E.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA +1F05 ; [.231E.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA +1F0D ; [.231E.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA +1F85 ; [.231E.0020.0002][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +1F8D ; [.231E.0020.0008][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1F03 ; [.231E.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA +1F0B ; [.231E.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA +1F83 ; [.231E.0020.0002][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +1F8B ; [.231E.0020.0008][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1F07 ; [.231E.0020.0002][.0000.0023.0002][.0000.002A.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI +1F0F ; [.231E.0020.0008][.0000.0023.0002][.0000.002A.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI +1F87 ; [.231E.0020.0002][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +1F8F ; [.231E.0020.0008][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1F81 ; [.231E.0020.0002][.0000.0023.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI +1F89 ; [.231E.0020.0008][.0000.0023.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI +03AC ; [.231E.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER ALPHA WITH TONOS +1F71 ; [.231E.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER ALPHA WITH OXIA +0386 ; [.231E.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER ALPHA WITH TONOS +1FBB ; [.231E.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER ALPHA WITH OXIA +1FB4 ; [.231E.0020.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +1F70 ; [.231E.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER ALPHA WITH VARIA +1FBA ; [.231E.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER ALPHA WITH VARIA +1FB2 ; [.231E.0020.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI +1FB0 ; [.231E.0020.0002][.0000.0026.0002] # GREEK SMALL LETTER ALPHA WITH VRACHY +1FB8 ; [.231E.0020.0008][.0000.0026.0002] # GREEK CAPITAL LETTER ALPHA WITH VRACHY +1FB6 ; [.231E.0020.0002][.0000.002A.0002] # GREEK SMALL LETTER ALPHA WITH PERISPOMENI +1FB7 ; [.231E.0020.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI +1FB1 ; [.231E.0020.0002][.0000.0032.0002] # GREEK SMALL LETTER ALPHA WITH MACRON +1FB9 ; [.231E.0020.0008][.0000.0032.0002] # GREEK CAPITAL LETTER ALPHA WITH MACRON +1FB3 ; [.231E.0020.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI +1FBC ; [.231E.0020.0008][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI +03B2 ; [.231F.0020.0002] # GREEK SMALL LETTER BETA +03D0 ; [.231F.0020.0004] # GREEK BETA SYMBOL +1D6C3 ; [.231F.0020.0005] # MATHEMATICAL BOLD SMALL BETA +1D6FD ; [.231F.0020.0005] # MATHEMATICAL ITALIC SMALL BETA +1D737 ; [.231F.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL BETA +1D771 ; [.231F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL BETA +1D7AB ; [.231F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA +0392 ; [.231F.0020.0008] # GREEK CAPITAL LETTER BETA +1D6A9 ; [.231F.0020.000B] # MATHEMATICAL BOLD CAPITAL BETA +1D6E3 ; [.231F.0020.000B] # MATHEMATICAL ITALIC CAPITAL BETA +1D71D ; [.231F.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL BETA +1D757 ; [.231F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA +1D791 ; [.231F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA +1D5D ; [.231F.0020.0014] # MODIFIER LETTER SMALL BETA +1D66 ; [.231F.0020.0015] # GREEK SUBSCRIPT SMALL LETTER BETA +03B3 ; [.2320.0020.0002] # GREEK SMALL LETTER GAMMA +213D ; [.2320.0020.0005] # DOUBLE-STRUCK SMALL GAMMA +1D6C4 ; [.2320.0020.0005] # MATHEMATICAL BOLD SMALL GAMMA +1D6FE ; [.2320.0020.0005] # MATHEMATICAL ITALIC SMALL GAMMA +1D738 ; [.2320.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL GAMMA +1D772 ; [.2320.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA +1D7AC ; [.2320.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA +0393 ; [.2320.0020.0008] # GREEK CAPITAL LETTER GAMMA +213E ; [.2320.0020.000B] # DOUBLE-STRUCK CAPITAL GAMMA +1D6AA ; [.2320.0020.000B] # MATHEMATICAL BOLD CAPITAL GAMMA +1D6E4 ; [.2320.0020.000B] # MATHEMATICAL ITALIC CAPITAL GAMMA +1D71E ; [.2320.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL GAMMA +1D758 ; [.2320.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA +1D792 ; [.2320.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA +1D5E ; [.2320.0020.0014] # MODIFIER LETTER SMALL GREEK GAMMA +1D67 ; [.2320.0020.0015] # GREEK SUBSCRIPT SMALL LETTER GAMMA +1D26 ; [.2321.0020.0002] # GREEK LETTER SMALL CAPITAL GAMMA +03B4 ; [.2322.0020.0002] # GREEK SMALL LETTER DELTA +1D6C5 ; [.2322.0020.0005] # MATHEMATICAL BOLD SMALL DELTA +1D6FF ; [.2322.0020.0005] # MATHEMATICAL ITALIC SMALL DELTA +1D739 ; [.2322.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL DELTA +1D773 ; [.2322.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL DELTA +1D7AD ; [.2322.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA +0394 ; [.2322.0020.0008] # GREEK CAPITAL LETTER DELTA +1D6AB ; [.2322.0020.000B] # MATHEMATICAL BOLD CAPITAL DELTA +1D6E5 ; [.2322.0020.000B] # MATHEMATICAL ITALIC CAPITAL DELTA +1D71F ; [.2322.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL DELTA +1D759 ; [.2322.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA +1D793 ; [.2322.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA +1D5F ; [.2322.0020.0014] # MODIFIER LETTER SMALL DELTA +03B5 ; [.2323.0020.0002] # GREEK SMALL LETTER EPSILON +03F5 ; [.2323.0020.0004] # GREEK LUNATE EPSILON SYMBOL +1D6C6 ; [.2323.0020.0005] # MATHEMATICAL BOLD SMALL EPSILON +1D6DC ; [.2323.0020.0005] # MATHEMATICAL BOLD EPSILON SYMBOL +1D700 ; [.2323.0020.0005] # MATHEMATICAL ITALIC SMALL EPSILON +1D716 ; [.2323.0020.0005] # MATHEMATICAL ITALIC EPSILON SYMBOL +1D73A ; [.2323.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL EPSILON +1D750 ; [.2323.0020.0005] # MATHEMATICAL BOLD ITALIC EPSILON SYMBOL +1D774 ; [.2323.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON +1D78A ; [.2323.0020.0005] # MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL +1D7AE ; [.2323.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON +1D7C4 ; [.2323.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL +0395 ; [.2323.0020.0008] # GREEK CAPITAL LETTER EPSILON +1D6AC ; [.2323.0020.000B] # MATHEMATICAL BOLD CAPITAL EPSILON +1D6E6 ; [.2323.0020.000B] # MATHEMATICAL ITALIC CAPITAL EPSILON +1D720 ; [.2323.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL EPSILON +1D75A ; [.2323.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON +1D794 ; [.2323.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON +1F10 ; [.2323.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER EPSILON WITH PSILI +1F18 ; [.2323.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER EPSILON WITH PSILI +1F14 ; [.2323.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA +1F1C ; [.2323.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA +1F12 ; [.2323.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA +1F1A ; [.2323.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA +1F11 ; [.2323.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER EPSILON WITH DASIA +1F19 ; [.2323.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER EPSILON WITH DASIA +1F15 ; [.2323.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +1F1D ; [.2323.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +1F13 ; [.2323.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA +1F1B ; [.2323.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA +03AD ; [.2323.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER EPSILON WITH TONOS +1F73 ; [.2323.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER EPSILON WITH OXIA +0388 ; [.2323.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER EPSILON WITH TONOS +1FC9 ; [.2323.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER EPSILON WITH OXIA +1F72 ; [.2323.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER EPSILON WITH VARIA +1FC8 ; [.2323.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER EPSILON WITH VARIA +03DD ; [.2324.0020.0002] # GREEK SMALL LETTER DIGAMMA +1D7CB ; [.2324.0020.0005] # MATHEMATICAL BOLD SMALL DIGAMMA +03DC ; [.2324.0020.0008] # GREEK LETTER DIGAMMA +1D7CA ; [.2324.0020.000B] # MATHEMATICAL BOLD CAPITAL DIGAMMA +0377 ; [.2325.0020.0002] # GREEK SMALL LETTER PAMPHYLIAN DIGAMMA +0376 ; [.2325.0020.0008] # GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA +03DB ; [.2326.0020.0002] # GREEK SMALL LETTER STIGMA +03DA ; [.2326.0020.0008] # GREEK LETTER STIGMA +03B6 ; [.2327.0020.0002] # GREEK SMALL LETTER ZETA +1D6C7 ; [.2327.0020.0005] # MATHEMATICAL BOLD SMALL ZETA +1D701 ; [.2327.0020.0005] # MATHEMATICAL ITALIC SMALL ZETA +1D73B ; [.2327.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL ZETA +1D775 ; [.2327.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL ZETA +1D7AF ; [.2327.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA +0396 ; [.2327.0020.0008] # GREEK CAPITAL LETTER ZETA +1D6AD ; [.2327.0020.000B] # MATHEMATICAL BOLD CAPITAL ZETA +1D6E7 ; [.2327.0020.000B] # MATHEMATICAL ITALIC CAPITAL ZETA +1D721 ; [.2327.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL ZETA +1D75B ; [.2327.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA +1D795 ; [.2327.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA +0371 ; [.2328.0020.0002] # GREEK SMALL LETTER HETA +0370 ; [.2328.0020.0008] # GREEK CAPITAL LETTER HETA +03B7 ; [.2329.0020.0002] # GREEK SMALL LETTER ETA +1D6C8 ; [.2329.0020.0005] # MATHEMATICAL BOLD SMALL ETA +1D702 ; [.2329.0020.0005] # MATHEMATICAL ITALIC SMALL ETA +1D73C ; [.2329.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL ETA +1D776 ; [.2329.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL ETA +1D7B0 ; [.2329.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA +0397 ; [.2329.0020.0008] # GREEK CAPITAL LETTER ETA +1D6AE ; [.2329.0020.000B] # MATHEMATICAL BOLD CAPITAL ETA +1D6E8 ; [.2329.0020.000B] # MATHEMATICAL ITALIC CAPITAL ETA +1D722 ; [.2329.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL ETA +1D75C ; [.2329.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA +1D796 ; [.2329.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA +1F20 ; [.2329.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER ETA WITH PSILI +1F28 ; [.2329.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER ETA WITH PSILI +1F24 ; [.2329.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER ETA WITH PSILI AND OXIA +1F2C ; [.2329.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA +1F94 ; [.2329.0020.0002][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +1F9C ; [.2329.0020.0008][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1F22 ; [.2329.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER ETA WITH PSILI AND VARIA +1F2A ; [.2329.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA +1F92 ; [.2329.0020.0002][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +1F9A ; [.2329.0020.0008][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1F26 ; [.2329.0020.0002][.0000.0022.0002][.0000.002A.0002] # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI +1F2E ; [.2329.0020.0008][.0000.0022.0002][.0000.002A.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI +1F96 ; [.2329.0020.0002][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +1F9E ; [.2329.0020.0008][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1F90 ; [.2329.0020.0002][.0000.0022.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI +1F98 ; [.2329.0020.0008][.0000.0022.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI +1F21 ; [.2329.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER ETA WITH DASIA +1F29 ; [.2329.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER ETA WITH DASIA +1F25 ; [.2329.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER ETA WITH DASIA AND OXIA +1F2D ; [.2329.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA +1F95 ; [.2329.0020.0002][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +1F9D ; [.2329.0020.0008][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1F23 ; [.2329.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER ETA WITH DASIA AND VARIA +1F2B ; [.2329.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA +1F93 ; [.2329.0020.0002][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +1F9B ; [.2329.0020.0008][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1F27 ; [.2329.0020.0002][.0000.0023.0002][.0000.002A.0002] # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI +1F2F ; [.2329.0020.0008][.0000.0023.0002][.0000.002A.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI +1F97 ; [.2329.0020.0002][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +1F9F ; [.2329.0020.0008][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1F91 ; [.2329.0020.0002][.0000.0023.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI +1F99 ; [.2329.0020.0008][.0000.0023.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI +03AE ; [.2329.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER ETA WITH TONOS +1F75 ; [.2329.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER ETA WITH OXIA +0389 ; [.2329.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER ETA WITH TONOS +1FCB ; [.2329.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER ETA WITH OXIA +1FC4 ; [.2329.0020.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +1F74 ; [.2329.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER ETA WITH VARIA +1FCA ; [.2329.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER ETA WITH VARIA +1FC2 ; [.2329.0020.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI +1FC6 ; [.2329.0020.0002][.0000.002A.0002] # GREEK SMALL LETTER ETA WITH PERISPOMENI +1FC7 ; [.2329.0020.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI +1FC3 ; [.2329.0020.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI +1FCC ; [.2329.0020.0008][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI +03B8 ; [.232A.0020.0002] # GREEK SMALL LETTER THETA +03D1 ; [.232A.0020.0004] # GREEK THETA SYMBOL +1D6C9 ; [.232A.0020.0005] # MATHEMATICAL BOLD SMALL THETA +1D6DD ; [.232A.0020.0005] # MATHEMATICAL BOLD THETA SYMBOL +1D703 ; [.232A.0020.0005] # MATHEMATICAL ITALIC SMALL THETA +1D717 ; [.232A.0020.0005] # MATHEMATICAL ITALIC THETA SYMBOL +1D73D ; [.232A.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL THETA +1D751 ; [.232A.0020.0005] # MATHEMATICAL BOLD ITALIC THETA SYMBOL +1D777 ; [.232A.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL THETA +1D78B ; [.232A.0020.0005] # MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL +1D7B1 ; [.232A.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA +1D7C5 ; [.232A.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL +0398 ; [.232A.0020.0008] # GREEK CAPITAL LETTER THETA +03F4 ; [.232A.0020.000A] # GREEK CAPITAL THETA SYMBOL +1D6AF ; [.232A.0020.000B] # MATHEMATICAL BOLD CAPITAL THETA +1D6B9 ; [.232A.0020.000B] # MATHEMATICAL BOLD CAPITAL THETA SYMBOL +1D6E9 ; [.232A.0020.000B] # MATHEMATICAL ITALIC CAPITAL THETA +1D6F3 ; [.232A.0020.000B] # MATHEMATICAL ITALIC CAPITAL THETA SYMBOL +1D723 ; [.232A.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL THETA +1D72D ; [.232A.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL +1D75D ; [.232A.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA +1D767 ; [.232A.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL +1D797 ; [.232A.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA +1D7A1 ; [.232A.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL +1DBF ; [.232A.0020.0014] # MODIFIER LETTER SMALL THETA +03B9 ; [.232B.0020.0002] # GREEK SMALL LETTER IOTA +1FBE ; [.232B.0020.0002] # GREEK PROSGEGRAMMENI +037A ; [.232B.0020.0004] # GREEK YPOGEGRAMMENI +1D6CA ; [.232B.0020.0005] # MATHEMATICAL BOLD SMALL IOTA +1D704 ; [.232B.0020.0005] # MATHEMATICAL ITALIC SMALL IOTA +1D73E ; [.232B.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL IOTA +1D778 ; [.232B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL IOTA +1D7B2 ; [.232B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA +0399 ; [.232B.0020.0008] # GREEK CAPITAL LETTER IOTA +1D6B0 ; [.232B.0020.000B] # MATHEMATICAL BOLD CAPITAL IOTA +1D6EA ; [.232B.0020.000B] # MATHEMATICAL ITALIC CAPITAL IOTA +1D724 ; [.232B.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL IOTA +1D75E ; [.232B.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA +1D798 ; [.232B.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA +1F30 ; [.232B.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER IOTA WITH PSILI +1F38 ; [.232B.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER IOTA WITH PSILI +1F34 ; [.232B.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA +1F3C ; [.232B.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA +1F32 ; [.232B.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA +1F3A ; [.232B.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA +1F36 ; [.232B.0020.0002][.0000.0022.0002][.0000.002A.0002] # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI +1F3E ; [.232B.0020.0008][.0000.0022.0002][.0000.002A.0002] # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI +1F31 ; [.232B.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER IOTA WITH DASIA +1F39 ; [.232B.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER IOTA WITH DASIA +1F35 ; [.232B.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA +1F3D ; [.232B.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA +1F33 ; [.232B.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA +1F3B ; [.232B.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA +1F37 ; [.232B.0020.0002][.0000.0023.0002][.0000.002A.0002] # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI +1F3F ; [.232B.0020.0008][.0000.0023.0002][.0000.002A.0002] # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI +03AF ; [.232B.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH TONOS +1F77 ; [.232B.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH OXIA +038A ; [.232B.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER IOTA WITH TONOS +1FDB ; [.232B.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER IOTA WITH OXIA +1F76 ; [.232B.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER IOTA WITH VARIA +1FDA ; [.232B.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER IOTA WITH VARIA +1FD0 ; [.232B.0020.0002][.0000.0026.0002] # GREEK SMALL LETTER IOTA WITH VRACHY +1FD8 ; [.232B.0020.0008][.0000.0026.0002] # GREEK CAPITAL LETTER IOTA WITH VRACHY +1FD6 ; [.232B.0020.0002][.0000.002A.0002] # GREEK SMALL LETTER IOTA WITH PERISPOMENI +03CA ; [.232B.0020.0002][.0000.002B.0002] # GREEK SMALL LETTER IOTA WITH DIALYTIKA +03AA ; [.232B.0020.0008][.0000.002B.0002] # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA +0390 ; [.232B.0020.0002][.0000.002B.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +1FD3 ; [.232B.0020.0002][.0000.002B.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA +1FD2 ; [.232B.0020.0002][.0000.002B.0002][.0000.0025.0002] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA +1FD7 ; [.232B.0020.0002][.0000.002B.0002][.0000.002A.0002] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI +1FD1 ; [.232B.0020.0002][.0000.0032.0002] # GREEK SMALL LETTER IOTA WITH MACRON +1FD9 ; [.232B.0020.0008][.0000.0032.0002] # GREEK CAPITAL LETTER IOTA WITH MACRON +03F3 ; [.232C.0020.0002] # GREEK LETTER YOT +037F ; [.232C.0020.0008] # GREEK CAPITAL LETTER YOT +03BA ; [.232D.0020.0002] # GREEK SMALL LETTER KAPPA +03F0 ; [.232D.0020.0004] # GREEK KAPPA SYMBOL +1D6CB ; [.232D.0020.0005] # MATHEMATICAL BOLD SMALL KAPPA +1D6DE ; [.232D.0020.0005] # MATHEMATICAL BOLD KAPPA SYMBOL +1D705 ; [.232D.0020.0005] # MATHEMATICAL ITALIC SMALL KAPPA +1D718 ; [.232D.0020.0005] # MATHEMATICAL ITALIC KAPPA SYMBOL +1D73F ; [.232D.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL KAPPA +1D752 ; [.232D.0020.0005] # MATHEMATICAL BOLD ITALIC KAPPA SYMBOL +1D779 ; [.232D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA +1D78C ; [.232D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL +1D7B3 ; [.232D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA +1D7C6 ; [.232D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL +039A ; [.232D.0020.0008] # GREEK CAPITAL LETTER KAPPA +1D6B1 ; [.232D.0020.000B] # MATHEMATICAL BOLD CAPITAL KAPPA +1D6EB ; [.232D.0020.000B] # MATHEMATICAL ITALIC CAPITAL KAPPA +1D725 ; [.232D.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL KAPPA +1D75F ; [.232D.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA +1D799 ; [.232D.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA +03D7 ; [.232D.0020.0004][.231E.0020.0004][.232B.0020.0004] # GREEK KAI SYMBOL +03CF ; [.232D.0020.000A][.231E.0020.0004][.232B.0020.0004] # GREEK CAPITAL KAI SYMBOL +03BB ; [.232E.0020.0002] # GREEK SMALL LETTER LAMDA +1D6CC ; [.232E.0020.0005] # MATHEMATICAL BOLD SMALL LAMDA +1D706 ; [.232E.0020.0005] # MATHEMATICAL ITALIC SMALL LAMDA +1D740 ; [.232E.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL LAMDA +1D77A ; [.232E.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA +1D7B4 ; [.232E.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA +039B ; [.232E.0020.0008] # GREEK CAPITAL LETTER LAMDA +1D6B2 ; [.232E.0020.000B] # MATHEMATICAL BOLD CAPITAL LAMDA +1D6EC ; [.232E.0020.000B] # MATHEMATICAL ITALIC CAPITAL LAMDA +1D726 ; [.232E.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL LAMDA +1D760 ; [.232E.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA +1D79A ; [.232E.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA +1D27 ; [.232F.0020.0002] # GREEK LETTER SMALL CAPITAL LAMDA +03BC ; [.2330.0020.0002] # GREEK SMALL LETTER MU +00B5 ; [.2330.0020.0004] # MICRO SIGN +1D6CD ; [.2330.0020.0005] # MATHEMATICAL BOLD SMALL MU +1D707 ; [.2330.0020.0005] # MATHEMATICAL ITALIC SMALL MU +1D741 ; [.2330.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL MU +1D77B ; [.2330.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL MU +1D7B5 ; [.2330.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU +039C ; [.2330.0020.0008] # GREEK CAPITAL LETTER MU +1D6B3 ; [.2330.0020.000B] # MATHEMATICAL BOLD CAPITAL MU +1D6ED ; [.2330.0020.000B] # MATHEMATICAL ITALIC CAPITAL MU +1D727 ; [.2330.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL MU +1D761 ; [.2330.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL MU +1D79B ; [.2330.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU +3382 ; [.2330.0020.001C][.1FA2.0020.001D] # SQUARE MU A +338C ; [.2330.0020.001C][.2042.0020.001D] # SQUARE MU F +338D ; [.2330.0020.001C][.2051.0020.001C] # SQUARE MU G +3395 ; [.2330.0020.001C][.20D6.0020.001C] # SQUARE MU L +339B ; [.2330.0020.001C][.2109.0020.001C] # SQUARE MU M +33B2 ; [.2330.0020.001C][.21D2.0020.001C] # SQUARE MU S +33B6 ; [.2330.0020.001C][.2247.0020.001D] # SQUARE MU V +33BC ; [.2330.0020.001C][.2259.0020.001D] # SQUARE MU W +03BD ; [.2331.0020.0002] # GREEK SMALL LETTER NU +1D6CE ; [.2331.0020.0005] # MATHEMATICAL BOLD SMALL NU +1D708 ; [.2331.0020.0005] # MATHEMATICAL ITALIC SMALL NU +1D742 ; [.2331.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL NU +1D77C ; [.2331.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL NU +1D7B6 ; [.2331.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU +039D ; [.2331.0020.0008] # GREEK CAPITAL LETTER NU +1D6B4 ; [.2331.0020.000B] # MATHEMATICAL BOLD CAPITAL NU +1D6EE ; [.2331.0020.000B] # MATHEMATICAL ITALIC CAPITAL NU +1D728 ; [.2331.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL NU +1D762 ; [.2331.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL NU +1D79C ; [.2331.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU +03BE ; [.2332.0020.0002] # GREEK SMALL LETTER XI +1D6CF ; [.2332.0020.0005] # MATHEMATICAL BOLD SMALL XI +1D709 ; [.2332.0020.0005] # MATHEMATICAL ITALIC SMALL XI +1D743 ; [.2332.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL XI +1D77D ; [.2332.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL XI +1D7B7 ; [.2332.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI +039E ; [.2332.0020.0008] # GREEK CAPITAL LETTER XI +1D6B5 ; [.2332.0020.000B] # MATHEMATICAL BOLD CAPITAL XI +1D6EF ; [.2332.0020.000B] # MATHEMATICAL ITALIC CAPITAL XI +1D729 ; [.2332.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL XI +1D763 ; [.2332.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL XI +1D79D ; [.2332.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI +03BF ; [.2333.0020.0002] # GREEK SMALL LETTER OMICRON +1D6D0 ; [.2333.0020.0005] # MATHEMATICAL BOLD SMALL OMICRON +1D70A ; [.2333.0020.0005] # MATHEMATICAL ITALIC SMALL OMICRON +1D744 ; [.2333.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL OMICRON +1D77E ; [.2333.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON +1D7B8 ; [.2333.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON +039F ; [.2333.0020.0008] # GREEK CAPITAL LETTER OMICRON +1D6B6 ; [.2333.0020.000B] # MATHEMATICAL BOLD CAPITAL OMICRON +1D6F0 ; [.2333.0020.000B] # MATHEMATICAL ITALIC CAPITAL OMICRON +1D72A ; [.2333.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL OMICRON +1D764 ; [.2333.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON +1D79E ; [.2333.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON +1F40 ; [.2333.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER OMICRON WITH PSILI +1F48 ; [.2333.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER OMICRON WITH PSILI +1F44 ; [.2333.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA +1F4C ; [.2333.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA +1F42 ; [.2333.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA +1F4A ; [.2333.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA +1F41 ; [.2333.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER OMICRON WITH DASIA +1F49 ; [.2333.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER OMICRON WITH DASIA +1F45 ; [.2333.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +1F4D ; [.2333.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +1F43 ; [.2333.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA +1F4B ; [.2333.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA +03CC ; [.2333.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER OMICRON WITH TONOS +1F79 ; [.2333.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER OMICRON WITH OXIA +038C ; [.2333.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER OMICRON WITH TONOS +1FF9 ; [.2333.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER OMICRON WITH OXIA +1F78 ; [.2333.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER OMICRON WITH VARIA +1FF8 ; [.2333.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER OMICRON WITH VARIA +03C0 ; [.2334.0020.0002] # GREEK SMALL LETTER PI +03D6 ; [.2334.0020.0004] # GREEK PI SYMBOL +213C ; [.2334.0020.0005] # DOUBLE-STRUCK SMALL PI +1D6D1 ; [.2334.0020.0005] # MATHEMATICAL BOLD SMALL PI +1D6E1 ; [.2334.0020.0005] # MATHEMATICAL BOLD PI SYMBOL +1D70B ; [.2334.0020.0005] # MATHEMATICAL ITALIC SMALL PI +1D71B ; [.2334.0020.0005] # MATHEMATICAL ITALIC PI SYMBOL +1D745 ; [.2334.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL PI +1D755 ; [.2334.0020.0005] # MATHEMATICAL BOLD ITALIC PI SYMBOL +1D77F ; [.2334.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL PI +1D78F ; [.2334.0020.0005] # MATHEMATICAL SANS-SERIF BOLD PI SYMBOL +1D7B9 ; [.2334.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI +1D7C9 ; [.2334.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL +03A0 ; [.2334.0020.0008] # GREEK CAPITAL LETTER PI +213F ; [.2334.0020.000B] # DOUBLE-STRUCK CAPITAL PI +1D6B7 ; [.2334.0020.000B] # MATHEMATICAL BOLD CAPITAL PI +1D6F1 ; [.2334.0020.000B] # MATHEMATICAL ITALIC CAPITAL PI +1D72B ; [.2334.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL PI +1D765 ; [.2334.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL PI +1D79F ; [.2334.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI +1D28 ; [.2335.0020.0002] # GREEK LETTER SMALL CAPITAL PI +03FB ; [.2336.0020.0002] # GREEK SMALL LETTER SAN +03FA ; [.2336.0020.0008] # GREEK CAPITAL LETTER SAN +03DF ; [.2337.0020.0002] # GREEK SMALL LETTER KOPPA +03DE ; [.2337.0020.0008] # GREEK LETTER KOPPA +03D9 ; [.2338.0020.0002] # GREEK SMALL LETTER ARCHAIC KOPPA +03D8 ; [.2338.0020.0008] # GREEK LETTER ARCHAIC KOPPA +03C1 ; [.2339.0020.0002] # GREEK SMALL LETTER RHO +03F1 ; [.2339.0020.0004] # GREEK RHO SYMBOL +1D6D2 ; [.2339.0020.0005] # MATHEMATICAL BOLD SMALL RHO +1D6E0 ; [.2339.0020.0005] # MATHEMATICAL BOLD RHO SYMBOL +1D70C ; [.2339.0020.0005] # MATHEMATICAL ITALIC SMALL RHO +1D71A ; [.2339.0020.0005] # MATHEMATICAL ITALIC RHO SYMBOL +1D746 ; [.2339.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL RHO +1D754 ; [.2339.0020.0005] # MATHEMATICAL BOLD ITALIC RHO SYMBOL +1D780 ; [.2339.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL RHO +1D78E ; [.2339.0020.0005] # MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL +1D7BA ; [.2339.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO +1D7C8 ; [.2339.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL +03A1 ; [.2339.0020.0008] # GREEK CAPITAL LETTER RHO +1D6B8 ; [.2339.0020.000B] # MATHEMATICAL BOLD CAPITAL RHO +1D6F2 ; [.2339.0020.000B] # MATHEMATICAL ITALIC CAPITAL RHO +1D72C ; [.2339.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL RHO +1D766 ; [.2339.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO +1D7A0 ; [.2339.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO +1D68 ; [.2339.0020.0015] # GREEK SUBSCRIPT SMALL LETTER RHO +1FE4 ; [.2339.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER RHO WITH PSILI +1FE5 ; [.2339.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER RHO WITH DASIA +1FEC ; [.2339.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER RHO WITH DASIA +1D29 ; [.233A.0020.0002] # GREEK LETTER SMALL CAPITAL RHO +03FC ; [.233B.0020.0002] # GREEK RHO WITH STROKE SYMBOL +03C3 ; [.233C.0020.0002] # GREEK SMALL LETTER SIGMA +03F2 ; [.233C.0020.0004] # GREEK LUNATE SIGMA SYMBOL +1D6D3 ; [.233C.0020.0005] # MATHEMATICAL BOLD SMALL FINAL SIGMA +1D6D4 ; [.233C.0020.0005] # MATHEMATICAL BOLD SMALL SIGMA +1D70D ; [.233C.0020.0005] # MATHEMATICAL ITALIC SMALL FINAL SIGMA +1D70E ; [.233C.0020.0005] # MATHEMATICAL ITALIC SMALL SIGMA +1D747 ; [.233C.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA +1D748 ; [.233C.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL SIGMA +1D781 ; [.233C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA +1D782 ; [.233C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA +1D7BB ; [.233C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA +1D7BC ; [.233C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA +03A3 ; [.233C.0020.0008] # GREEK CAPITAL LETTER SIGMA +03F9 ; [.233C.0020.000A] # GREEK CAPITAL LUNATE SIGMA SYMBOL +1D6BA ; [.233C.0020.000B] # MATHEMATICAL BOLD CAPITAL SIGMA +1D6F4 ; [.233C.0020.000B] # MATHEMATICAL ITALIC CAPITAL SIGMA +1D72E ; [.233C.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL SIGMA +1D768 ; [.233C.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA +1D7A2 ; [.233C.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA +03C2 ; [.233C.0020.0019] # GREEK SMALL LETTER FINAL SIGMA +037C ; [.233D.0020.0002] # GREEK SMALL DOTTED LUNATE SIGMA SYMBOL +03FE ; [.233D.0020.0008] # GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL +037B ; [.233E.0020.0002] # GREEK SMALL REVERSED LUNATE SIGMA SYMBOL +03FD ; [.233E.0020.0008] # GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL +037D ; [.233F.0020.0002] # GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL +03FF ; [.233F.0020.0008] # GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL +03C4 ; [.2340.0020.0002] # GREEK SMALL LETTER TAU +1D6D5 ; [.2340.0020.0005] # MATHEMATICAL BOLD SMALL TAU +1D70F ; [.2340.0020.0005] # MATHEMATICAL ITALIC SMALL TAU +1D749 ; [.2340.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL TAU +1D783 ; [.2340.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL TAU +1D7BD ; [.2340.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU +03A4 ; [.2340.0020.0008] # GREEK CAPITAL LETTER TAU +1D6BB ; [.2340.0020.000B] # MATHEMATICAL BOLD CAPITAL TAU +1D6F5 ; [.2340.0020.000B] # MATHEMATICAL ITALIC CAPITAL TAU +1D72F ; [.2340.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL TAU +1D769 ; [.2340.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU +1D7A3 ; [.2340.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU +03C5 ; [.2341.0020.0002] # GREEK SMALL LETTER UPSILON +1D6D6 ; [.2341.0020.0005] # MATHEMATICAL BOLD SMALL UPSILON +1D710 ; [.2341.0020.0005] # MATHEMATICAL ITALIC SMALL UPSILON +1D74A ; [.2341.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL UPSILON +1D784 ; [.2341.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON +1D7BE ; [.2341.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON +03A5 ; [.2341.0020.0008] # GREEK CAPITAL LETTER UPSILON +03D2 ; [.2341.0020.000A] # GREEK UPSILON WITH HOOK SYMBOL +1D6BC ; [.2341.0020.000B] # MATHEMATICAL BOLD CAPITAL UPSILON +1D6F6 ; [.2341.0020.000B] # MATHEMATICAL ITALIC CAPITAL UPSILON +1D730 ; [.2341.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL UPSILON +1D76A ; [.2341.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON +1D7A4 ; [.2341.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON +1F50 ; [.2341.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER UPSILON WITH PSILI +1F54 ; [.2341.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA +1F52 ; [.2341.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA +1F56 ; [.2341.0020.0002][.0000.0022.0002][.0000.002A.0002] # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI +1F51 ; [.2341.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER UPSILON WITH DASIA +1F59 ; [.2341.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER UPSILON WITH DASIA +1F55 ; [.2341.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA +1F5D ; [.2341.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +1F53 ; [.2341.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA +1F5B ; [.2341.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA +1F57 ; [.2341.0020.0002][.0000.0023.0002][.0000.002A.0002] # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI +1F5F ; [.2341.0020.0008][.0000.0023.0002][.0000.002A.0002] # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI +03CD ; [.2341.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH TONOS +1F7B ; [.2341.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH OXIA +038E ; [.2341.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER UPSILON WITH TONOS +1FEB ; [.2341.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER UPSILON WITH OXIA +03D3 ; [.2341.0020.000A][.0000.0024.0002] # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL +1F7A ; [.2341.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER UPSILON WITH VARIA +1FEA ; [.2341.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER UPSILON WITH VARIA +1FE0 ; [.2341.0020.0002][.0000.0026.0002] # GREEK SMALL LETTER UPSILON WITH VRACHY +1FE8 ; [.2341.0020.0008][.0000.0026.0002] # GREEK CAPITAL LETTER UPSILON WITH VRACHY +1FE6 ; [.2341.0020.0002][.0000.002A.0002] # GREEK SMALL LETTER UPSILON WITH PERISPOMENI +03CB ; [.2341.0020.0002][.0000.002B.0002] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA +03AB ; [.2341.0020.0008][.0000.002B.0002] # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA +03D4 ; [.2341.0020.000A][.0000.002B.0002] # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL +03B0 ; [.2341.0020.0002][.0000.002B.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +1FE3 ; [.2341.0020.0002][.0000.002B.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA +1FE2 ; [.2341.0020.0002][.0000.002B.0002][.0000.0025.0002] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA +1FE7 ; [.2341.0020.0002][.0000.002B.0002][.0000.002A.0002] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI +1FE1 ; [.2341.0020.0002][.0000.0032.0002] # GREEK SMALL LETTER UPSILON WITH MACRON +1FE9 ; [.2341.0020.0008][.0000.0032.0002] # GREEK CAPITAL LETTER UPSILON WITH MACRON +03C6 ; [.2342.0020.0002] # GREEK SMALL LETTER PHI +03D5 ; [.2342.0020.0004] # GREEK PHI SYMBOL +1D6D7 ; [.2342.0020.0005] # MATHEMATICAL BOLD SMALL PHI +1D6DF ; [.2342.0020.0005] # MATHEMATICAL BOLD PHI SYMBOL +1D711 ; [.2342.0020.0005] # MATHEMATICAL ITALIC SMALL PHI +1D719 ; [.2342.0020.0005] # MATHEMATICAL ITALIC PHI SYMBOL +1D74B ; [.2342.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL PHI +1D753 ; [.2342.0020.0005] # MATHEMATICAL BOLD ITALIC PHI SYMBOL +1D785 ; [.2342.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL PHI +1D78D ; [.2342.0020.0005] # MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL +1D7BF ; [.2342.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI +1D7C7 ; [.2342.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL +03A6 ; [.2342.0020.0008] # GREEK CAPITAL LETTER PHI +1D6BD ; [.2342.0020.000B] # MATHEMATICAL BOLD CAPITAL PHI +1D6F7 ; [.2342.0020.000B] # MATHEMATICAL ITALIC CAPITAL PHI +1D731 ; [.2342.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL PHI +1D76B ; [.2342.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI +1D7A5 ; [.2342.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI +1D60 ; [.2342.0020.0014] # MODIFIER LETTER SMALL GREEK PHI +1D69 ; [.2342.0020.0015] # GREEK SUBSCRIPT SMALL LETTER PHI +03C7 ; [.2343.0020.0002] # GREEK SMALL LETTER CHI +1D6D8 ; [.2343.0020.0005] # MATHEMATICAL BOLD SMALL CHI +1D712 ; [.2343.0020.0005] # MATHEMATICAL ITALIC SMALL CHI +1D74C ; [.2343.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL CHI +1D786 ; [.2343.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL CHI +1D7C0 ; [.2343.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI +03A7 ; [.2343.0020.0008] # GREEK CAPITAL LETTER CHI +1D6BE ; [.2343.0020.000B] # MATHEMATICAL BOLD CAPITAL CHI +1D6F8 ; [.2343.0020.000B] # MATHEMATICAL ITALIC CAPITAL CHI +1D732 ; [.2343.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL CHI +1D76C ; [.2343.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI +1D7A6 ; [.2343.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI +1D61 ; [.2343.0020.0014] # MODIFIER LETTER SMALL CHI +1D6A ; [.2343.0020.0015] # GREEK SUBSCRIPT SMALL LETTER CHI +03C8 ; [.2344.0020.0002] # GREEK SMALL LETTER PSI +1D6D9 ; [.2344.0020.0005] # MATHEMATICAL BOLD SMALL PSI +1D713 ; [.2344.0020.0005] # MATHEMATICAL ITALIC SMALL PSI +1D74D ; [.2344.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL PSI +1D787 ; [.2344.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL PSI +1D7C1 ; [.2344.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI +03A8 ; [.2344.0020.0008] # GREEK CAPITAL LETTER PSI +1D6BF ; [.2344.0020.000B] # MATHEMATICAL BOLD CAPITAL PSI +1D6F9 ; [.2344.0020.000B] # MATHEMATICAL ITALIC CAPITAL PSI +1D733 ; [.2344.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL PSI +1D76D ; [.2344.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI +1D7A7 ; [.2344.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI +1D2A ; [.2345.0020.0002] # GREEK LETTER SMALL CAPITAL PSI +03C9 ; [.2346.0020.0002] # GREEK SMALL LETTER OMEGA +1D6DA ; [.2346.0020.0005] # MATHEMATICAL BOLD SMALL OMEGA +1D714 ; [.2346.0020.0005] # MATHEMATICAL ITALIC SMALL OMEGA +1D74E ; [.2346.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL OMEGA +1D788 ; [.2346.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA +1D7C2 ; [.2346.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA +03A9 ; [.2346.0020.0008] # GREEK CAPITAL LETTER OMEGA +2126 ; [.2346.0020.0008] # OHM SIGN +1D6C0 ; [.2346.0020.000B] # MATHEMATICAL BOLD CAPITAL OMEGA +1D6FA ; [.2346.0020.000B] # MATHEMATICAL ITALIC CAPITAL OMEGA +1D734 ; [.2346.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL OMEGA +1D76E ; [.2346.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA +1D7A8 ; [.2346.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA +1F60 ; [.2346.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER OMEGA WITH PSILI +1F68 ; [.2346.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI +1F64 ; [.2346.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA +1F6C ; [.2346.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA +1FA4 ; [.2346.0020.0002][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +1FAC ; [.2346.0020.0008][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1F62 ; [.2346.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA +1F6A ; [.2346.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA +1FA2 ; [.2346.0020.0002][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +1FAA ; [.2346.0020.0008][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1F66 ; [.2346.0020.0002][.0000.0022.0002][.0000.002A.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI +1F6E ; [.2346.0020.0008][.0000.0022.0002][.0000.002A.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI +1FA6 ; [.2346.0020.0002][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +1FAE ; [.2346.0020.0008][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1FA0 ; [.2346.0020.0002][.0000.0022.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI +1FA8 ; [.2346.0020.0008][.0000.0022.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI +1F61 ; [.2346.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER OMEGA WITH DASIA +1F69 ; [.2346.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA +1F65 ; [.2346.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA +1F6D ; [.2346.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA +1FA5 ; [.2346.0020.0002][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +1FAD ; [.2346.0020.0008][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1F63 ; [.2346.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA +1F6B ; [.2346.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA +1FA3 ; [.2346.0020.0002][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +1FAB ; [.2346.0020.0008][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1F67 ; [.2346.0020.0002][.0000.0023.0002][.0000.002A.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI +1F6F ; [.2346.0020.0008][.0000.0023.0002][.0000.002A.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI +1FA7 ; [.2346.0020.0002][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +1FAF ; [.2346.0020.0008][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1FA1 ; [.2346.0020.0002][.0000.0023.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI +1FA9 ; [.2346.0020.0008][.0000.0023.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI +03CE ; [.2346.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER OMEGA WITH TONOS +1F7D ; [.2346.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER OMEGA WITH OXIA +038F ; [.2346.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER OMEGA WITH TONOS +1FFB ; [.2346.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER OMEGA WITH OXIA +1FF4 ; [.2346.0020.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +1F7C ; [.2346.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER OMEGA WITH VARIA +1FFA ; [.2346.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER OMEGA WITH VARIA +1FF2 ; [.2346.0020.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI +1FF6 ; [.2346.0020.0002][.0000.002A.0002] # GREEK SMALL LETTER OMEGA WITH PERISPOMENI +1FF7 ; [.2346.0020.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI +1FF3 ; [.2346.0020.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI +1FFC ; [.2346.0020.0008][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI +AB65 ; [.2347.0020.0002] # GREEK LETTER SMALL CAPITAL OMEGA +03E1 ; [.2348.0020.0002] # GREEK SMALL LETTER SAMPI +03E0 ; [.2348.0020.0008] # GREEK LETTER SAMPI +0373 ; [.2349.0020.0002] # GREEK SMALL LETTER ARCHAIC SAMPI +0372 ; [.2349.0020.0008] # GREEK CAPITAL LETTER ARCHAIC SAMPI +03F8 ; [.234A.0020.0002] # GREEK SMALL LETTER SHO +03F7 ; [.234A.0020.0008] # GREEK CAPITAL LETTER SHO +2C81 ; [.234B.0020.0002] # COPTIC SMALL LETTER ALFA +2C80 ; [.234B.0020.0008] # COPTIC CAPITAL LETTER ALFA +2C83 ; [.234C.0020.0002] # COPTIC SMALL LETTER VIDA +2C82 ; [.234C.0020.0008] # COPTIC CAPITAL LETTER VIDA +2C85 ; [.234D.0020.0002] # COPTIC SMALL LETTER GAMMA +2C84 ; [.234D.0020.0008] # COPTIC CAPITAL LETTER GAMMA +2C87 ; [.234E.0020.0002] # COPTIC SMALL LETTER DALDA +2C86 ; [.234E.0020.0008] # COPTIC CAPITAL LETTER DALDA +2C89 ; [.234F.0020.0002] # COPTIC SMALL LETTER EIE +2C88 ; [.234F.0020.0008] # COPTIC CAPITAL LETTER EIE +2CB7 ; [.2350.0020.0002] # COPTIC SMALL LETTER CRYPTOGRAMMIC EIE +2CB6 ; [.2350.0020.0008] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE +2C8B ; [.2351.0020.0002] # COPTIC SMALL LETTER SOU +2C8A ; [.2351.0020.0008] # COPTIC CAPITAL LETTER SOU +2C8D ; [.2352.0020.0002] # COPTIC SMALL LETTER ZATA +2C8C ; [.2352.0020.0008] # COPTIC CAPITAL LETTER ZATA +2C8F ; [.2353.0020.0002] # COPTIC SMALL LETTER HATE +2C8E ; [.2353.0020.0008] # COPTIC CAPITAL LETTER HATE +2C91 ; [.2354.0020.0002] # COPTIC SMALL LETTER THETHE +2C90 ; [.2354.0020.0008] # COPTIC CAPITAL LETTER THETHE +2C93 ; [.2355.0020.0002] # COPTIC SMALL LETTER IAUDA +2C92 ; [.2355.0020.0008] # COPTIC CAPITAL LETTER IAUDA +2C95 ; [.2356.0020.0002] # COPTIC SMALL LETTER KAPA +2C94 ; [.2356.0020.0008] # COPTIC CAPITAL LETTER KAPA +2CE4 ; [.2356.0020.0004][.234B.0020.0004][.2355.0020.0004] # COPTIC SYMBOL KAI +2CB9 ; [.2357.0020.0002] # COPTIC SMALL LETTER DIALECT-P KAPA +2CB8 ; [.2357.0020.0008] # COPTIC CAPITAL LETTER DIALECT-P KAPA +2C97 ; [.2358.0020.0002] # COPTIC SMALL LETTER LAULA +2C96 ; [.2358.0020.0008] # COPTIC CAPITAL LETTER LAULA +2C99 ; [.2359.0020.0002] # COPTIC SMALL LETTER MI +2C98 ; [.2359.0020.0008] # COPTIC CAPITAL LETTER MI +2C9B ; [.235A.0020.0002] # COPTIC SMALL LETTER NI +2C9A ; [.235A.0020.0008] # COPTIC CAPITAL LETTER NI +2CBB ; [.235B.0020.0002] # COPTIC SMALL LETTER DIALECT-P NI +2CBA ; [.235B.0020.0008] # COPTIC CAPITAL LETTER DIALECT-P NI +2CBD ; [.235C.0020.0002] # COPTIC SMALL LETTER CRYPTOGRAMMIC NI +2CBC ; [.235C.0020.0008] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI +2C9D ; [.235D.0020.0002] # COPTIC SMALL LETTER KSI +2C9C ; [.235D.0020.0008] # COPTIC CAPITAL LETTER KSI +2C9F ; [.235E.0020.0002] # COPTIC SMALL LETTER O +2C9E ; [.235E.0020.0008] # COPTIC CAPITAL LETTER O +2CA1 ; [.235F.0020.0002] # COPTIC SMALL LETTER PI +2CA0 ; [.235F.0020.0008] # COPTIC CAPITAL LETTER PI +2CA3 ; [.2360.0020.0002] # COPTIC SMALL LETTER RO +2CA2 ; [.2360.0020.0008] # COPTIC CAPITAL LETTER RO +2CA5 ; [.2361.0020.0002] # COPTIC SMALL LETTER SIMA +2CA4 ; [.2361.0020.0008] # COPTIC CAPITAL LETTER SIMA +2CA7 ; [.2362.0020.0002] # COPTIC SMALL LETTER TAU +2CA6 ; [.2362.0020.0008] # COPTIC CAPITAL LETTER TAU +2CA9 ; [.2363.0020.0002] # COPTIC SMALL LETTER UA +2CA8 ; [.2363.0020.0008] # COPTIC CAPITAL LETTER UA +2CAB ; [.2364.0020.0002] # COPTIC SMALL LETTER FI +2CAA ; [.2364.0020.0008] # COPTIC CAPITAL LETTER FI +2CAD ; [.2365.0020.0002] # COPTIC SMALL LETTER KHI +2CAC ; [.2365.0020.0008] # COPTIC CAPITAL LETTER KHI +2CAF ; [.2366.0020.0002] # COPTIC SMALL LETTER PSI +2CAE ; [.2366.0020.0008] # COPTIC CAPITAL LETTER PSI +2CB1 ; [.2367.0020.0002] # COPTIC SMALL LETTER OOU +2CB0 ; [.2367.0020.0008] # COPTIC CAPITAL LETTER OOU +2CBF ; [.2368.0020.0002] # COPTIC SMALL LETTER OLD COPTIC OOU +2CBE ; [.2368.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC OOU +2CC1 ; [.2369.0020.0002] # COPTIC SMALL LETTER SAMPI +2CC0 ; [.2369.0020.0008] # COPTIC CAPITAL LETTER SAMPI +03E3 ; [.236A.0020.0002] # COPTIC SMALL LETTER SHEI +03E2 ; [.236A.0020.0008] # COPTIC CAPITAL LETTER SHEI +2CEC ; [.236B.0020.0002] # COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI +2CEB ; [.236B.0020.0008] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI +2CC3 ; [.236C.0020.0002] # COPTIC SMALL LETTER CROSSED SHEI +2CC2 ; [.236C.0020.0008] # COPTIC CAPITAL LETTER CROSSED SHEI +2CC5 ; [.236D.0020.0002] # COPTIC SMALL LETTER OLD COPTIC SHEI +2CC4 ; [.236D.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC SHEI +2CC7 ; [.236E.0020.0002] # COPTIC SMALL LETTER OLD COPTIC ESH +2CC6 ; [.236E.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC ESH +03E5 ; [.236F.0020.0002] # COPTIC SMALL LETTER FEI +03E4 ; [.236F.0020.0008] # COPTIC CAPITAL LETTER FEI +03E7 ; [.2370.0020.0002] # COPTIC SMALL LETTER KHEI +03E6 ; [.2370.0020.0008] # COPTIC CAPITAL LETTER KHEI +2CF3 ; [.2371.0020.0002] # COPTIC SMALL LETTER BOHAIRIC KHEI +2CF2 ; [.2371.0020.0008] # COPTIC CAPITAL LETTER BOHAIRIC KHEI +2CC9 ; [.2372.0020.0002] # COPTIC SMALL LETTER AKHMIMIC KHEI +2CC8 ; [.2372.0020.0008] # COPTIC CAPITAL LETTER AKHMIMIC KHEI +03E9 ; [.2373.0020.0002] # COPTIC SMALL LETTER HORI +03E8 ; [.2373.0020.0008] # COPTIC CAPITAL LETTER HORI +2CCB ; [.2374.0020.0002] # COPTIC SMALL LETTER DIALECT-P HORI +2CCA ; [.2374.0020.0008] # COPTIC CAPITAL LETTER DIALECT-P HORI +2CCD ; [.2375.0020.0002] # COPTIC SMALL LETTER OLD COPTIC HORI +2CCC ; [.2375.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC HORI +2CCF ; [.2376.0020.0002] # COPTIC SMALL LETTER OLD COPTIC HA +2CCE ; [.2376.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC HA +2CD1 ; [.2377.0020.0002] # COPTIC SMALL LETTER L-SHAPED HA +2CD0 ; [.2377.0020.0008] # COPTIC CAPITAL LETTER L-SHAPED HA +2CD3 ; [.2378.0020.0002] # COPTIC SMALL LETTER OLD COPTIC HEI +2CD2 ; [.2378.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC HEI +2CD5 ; [.2379.0020.0002] # COPTIC SMALL LETTER OLD COPTIC HAT +2CD4 ; [.2379.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC HAT +03EB ; [.237A.0020.0002] # COPTIC SMALL LETTER GANGIA +03EA ; [.237A.0020.0008] # COPTIC CAPITAL LETTER GANGIA +2CEE ; [.237B.0020.0002] # COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA +2CED ; [.237B.0020.0008] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA +2CD7 ; [.237C.0020.0002] # COPTIC SMALL LETTER OLD COPTIC GANGIA +2CD6 ; [.237C.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC GANGIA +03ED ; [.237D.0020.0002] # COPTIC SMALL LETTER SHIMA +03EC ; [.237D.0020.0008] # COPTIC CAPITAL LETTER SHIMA +2CD9 ; [.237E.0020.0002] # COPTIC SMALL LETTER OLD COPTIC DJA +2CD8 ; [.237E.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC DJA +2CDB ; [.237F.0020.0002] # COPTIC SMALL LETTER OLD COPTIC SHIMA +2CDA ; [.237F.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC SHIMA +2CDD ; [.2380.0020.0002] # COPTIC SMALL LETTER OLD NUBIAN SHIMA +2CDC ; [.2380.0020.0008] # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA +03EF ; [.2381.0020.0002] # COPTIC SMALL LETTER DEI +03EE ; [.2381.0020.0008] # COPTIC CAPITAL LETTER DEI +2CB3 ; [.2382.0020.0002] # COPTIC SMALL LETTER DIALECT-P ALEF +2CB2 ; [.2382.0020.0008] # COPTIC CAPITAL LETTER DIALECT-P ALEF +2CB5 ; [.2383.0020.0002] # COPTIC SMALL LETTER OLD COPTIC AIN +2CB4 ; [.2383.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC AIN +2CDF ; [.2384.0020.0002] # COPTIC SMALL LETTER OLD NUBIAN NGI +2CDE ; [.2384.0020.0008] # COPTIC CAPITAL LETTER OLD NUBIAN NGI +2CE1 ; [.2385.0020.0002] # COPTIC SMALL LETTER OLD NUBIAN NYI +2CE0 ; [.2385.0020.0008] # COPTIC CAPITAL LETTER OLD NUBIAN NYI +2CE3 ; [.2386.0020.0002] # COPTIC SMALL LETTER OLD NUBIAN WAU +2CE2 ; [.2386.0020.0008] # COPTIC CAPITAL LETTER OLD NUBIAN WAU +0430 ; [.2387.0020.0002] # CYRILLIC SMALL LETTER A +2DF6 ; [.2387.0020.0004] # COMBINING CYRILLIC LETTER A +0410 ; [.2387.0020.0008] # CYRILLIC CAPITAL LETTER A +04D1 ; [.2387.0020.0002][.0000.0026.0002] # CYRILLIC SMALL LETTER A WITH BREVE +04D0 ; [.2387.0020.0008][.0000.0026.0002] # CYRILLIC CAPITAL LETTER A WITH BREVE +04D3 ; [.2387.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER A WITH DIAERESIS +04D2 ; [.2387.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS +04D9 ; [.238B.0020.0002] # CYRILLIC SMALL LETTER SCHWA +04D8 ; [.238B.0020.0008] # CYRILLIC CAPITAL LETTER SCHWA +04DB ; [.238B.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS +04DA ; [.238B.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS +04D5 ; [.238F.0020.0002] # CYRILLIC SMALL LIGATURE A IE +04D4 ; [.238F.0020.0008] # CYRILLIC CAPITAL LIGATURE A IE +0431 ; [.2393.0020.0002] # CYRILLIC SMALL LETTER BE +2DE0 ; [.2393.0020.0004] # COMBINING CYRILLIC LETTER BE +0411 ; [.2393.0020.0008] # CYRILLIC CAPITAL LETTER BE +0432 ; [.2397.0020.0002] # CYRILLIC SMALL LETTER VE +1C80 ; [.2397.0020.0004] # CYRILLIC SMALL LETTER ROUNDED VE +2DE1 ; [.2397.0020.0004] # COMBINING CYRILLIC LETTER VE +0412 ; [.2397.0020.0008] # CYRILLIC CAPITAL LETTER VE +0433 ; [.239B.0020.0002] # CYRILLIC SMALL LETTER GHE +2DE2 ; [.239B.0020.0004] # COMBINING CYRILLIC LETTER GHE +0413 ; [.239B.0020.0008] # CYRILLIC CAPITAL LETTER GHE +0453 ; [.239B.0020.0002][.0000.0024.0002] # CYRILLIC SMALL LETTER GJE +0403 ; [.239B.0020.0008][.0000.0024.0002] # CYRILLIC CAPITAL LETTER GJE +0491 ; [.239B.0020.0004][.0000.0119.0004] # CYRILLIC SMALL LETTER GHE WITH UPTURN +0490 ; [.239B.0020.000A][.0000.0119.0004] # CYRILLIC CAPITAL LETTER GHE WITH UPTURN +0493 ; [.239F.0020.0002] # CYRILLIC SMALL LETTER GHE WITH STROKE +0492 ; [.239F.0020.0008] # CYRILLIC CAPITAL LETTER GHE WITH STROKE +04FB ; [.23A3.0020.0002] # CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK +04FA ; [.23A3.0020.0008] # CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK +0495 ; [.23A7.0020.0002] # CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK +0494 ; [.23A7.0020.0008] # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK +04F7 ; [.23AB.0020.0002] # CYRILLIC SMALL LETTER GHE WITH DESCENDER +04F6 ; [.23AB.0020.0008] # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER +0434 ; [.23AF.0020.0002] # CYRILLIC SMALL LETTER DE +1C81 ; [.23AF.0020.0004] # CYRILLIC SMALL LETTER LONG-LEGGED DE +2DE3 ; [.23AF.0020.0004] # COMBINING CYRILLIC LETTER DE +0414 ; [.23AF.0020.0008] # CYRILLIC CAPITAL LETTER DE +0501 ; [.23B3.0020.0002] # CYRILLIC SMALL LETTER KOMI DE +0500 ; [.23B3.0020.0008] # CYRILLIC CAPITAL LETTER KOMI DE +A681 ; [.23B4.0020.0002] # CYRILLIC SMALL LETTER DWE +A680 ; [.23B4.0020.0008] # CYRILLIC CAPITAL LETTER DWE +0452 ; [.23B5.0020.0002] # CYRILLIC SMALL LETTER DJE +0402 ; [.23B5.0020.0008] # CYRILLIC CAPITAL LETTER DJE +A663 ; [.23B9.0020.0002] # CYRILLIC SMALL LETTER SOFT DE +A662 ; [.23B9.0020.0008] # CYRILLIC CAPITAL LETTER SOFT DE +0503 ; [.23BA.0020.0002] # CYRILLIC SMALL LETTER KOMI DJE +0502 ; [.23BA.0020.0008] # CYRILLIC CAPITAL LETTER KOMI DJE +0499 ; [.23BB.0020.0002] # CYRILLIC SMALL LETTER ZE WITH DESCENDER +0498 ; [.23BB.0020.0008] # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER +0435 ; [.23BF.0020.0002] # CYRILLIC SMALL LETTER IE +2DF7 ; [.23BF.0020.0004] # COMBINING CYRILLIC LETTER IE +0415 ; [.23BF.0020.0008] # CYRILLIC CAPITAL LETTER IE +0450 ; [.23BF.0020.0002][.0000.0025.0002] # CYRILLIC SMALL LETTER IE WITH GRAVE +0400 ; [.23BF.0020.0008][.0000.0025.0002] # CYRILLIC CAPITAL LETTER IE WITH GRAVE +04D7 ; [.23BF.0020.0002][.0000.0026.0002] # CYRILLIC SMALL LETTER IE WITH BREVE +04D6 ; [.23BF.0020.0008][.0000.0026.0002] # CYRILLIC CAPITAL LETTER IE WITH BREVE +0451 ; [.23BF.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER IO +0401 ; [.23BF.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER IO +0454 ; [.23C3.0020.0002] # CYRILLIC SMALL LETTER UKRAINIAN IE +A674 ; [.23C3.0020.0004] # COMBINING CYRILLIC LETTER UKRAINIAN IE +0404 ; [.23C3.0020.0008] # CYRILLIC CAPITAL LETTER UKRAINIAN IE +0436 ; [.23C7.0020.0002] # CYRILLIC SMALL LETTER ZHE +2DE4 ; [.23C7.0020.0004] # COMBINING CYRILLIC LETTER ZHE +0416 ; [.23C7.0020.0008] # CYRILLIC CAPITAL LETTER ZHE +04C2 ; [.23C7.0020.0002][.0000.0026.0002] # CYRILLIC SMALL LETTER ZHE WITH BREVE +04C1 ; [.23C7.0020.0008][.0000.0026.0002] # CYRILLIC CAPITAL LETTER ZHE WITH BREVE +04DD ; [.23C7.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS +04DC ; [.23C7.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS +052B ; [.23CB.0020.0002] # CYRILLIC SMALL LETTER DZZHE +052A ; [.23CB.0020.0008] # CYRILLIC CAPITAL LETTER DZZHE +A685 ; [.23CC.0020.0002] # CYRILLIC SMALL LETTER ZHWE +A684 ; [.23CC.0020.0008] # CYRILLIC CAPITAL LETTER ZHWE +0497 ; [.23CD.0020.0002] # CYRILLIC SMALL LETTER ZHE WITH DESCENDER +0496 ; [.23CD.0020.0008] # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER +0437 ; [.23D1.0020.0002] # CYRILLIC SMALL LETTER ZE +2DE5 ; [.23D1.0020.0004] # COMBINING CYRILLIC LETTER ZE +0417 ; [.23D1.0020.0008] # CYRILLIC CAPITAL LETTER ZE +04DF ; [.23D1.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS +04DE ; [.23D1.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS +A641 ; [.23D5.0020.0002] # CYRILLIC SMALL LETTER ZEMLYA +A640 ; [.23D5.0020.0008] # CYRILLIC CAPITAL LETTER ZEMLYA +0505 ; [.23D6.0020.0002] # CYRILLIC SMALL LETTER KOMI ZJE +0504 ; [.23D6.0020.0008] # CYRILLIC CAPITAL LETTER KOMI ZJE +0511 ; [.23D7.0020.0002] # CYRILLIC SMALL LETTER REVERSED ZE +0510 ; [.23D7.0020.0008] # CYRILLIC CAPITAL LETTER REVERSED ZE +A643 ; [.23D8.0020.0002] # CYRILLIC SMALL LETTER DZELO +A642 ; [.23D8.0020.0008] # CYRILLIC CAPITAL LETTER DZELO +0455 ; [.23D9.0020.0002] # CYRILLIC SMALL LETTER DZE +0405 ; [.23D9.0020.0008] # CYRILLIC CAPITAL LETTER DZE +A645 ; [.23DD.0020.0002] # CYRILLIC SMALL LETTER REVERSED DZE +A644 ; [.23DD.0020.0008] # CYRILLIC CAPITAL LETTER REVERSED DZE +04E1 ; [.23DE.0020.0002] # CYRILLIC SMALL LETTER ABKHASIAN DZE +04E0 ; [.23DE.0020.0008] # CYRILLIC CAPITAL LETTER ABKHASIAN DZE +A689 ; [.23E2.0020.0002] # CYRILLIC SMALL LETTER DZZE +A688 ; [.23E2.0020.0008] # CYRILLIC CAPITAL LETTER DZZE +0507 ; [.23E3.0020.0002] # CYRILLIC SMALL LETTER KOMI DZJE +0506 ; [.23E3.0020.0008] # CYRILLIC CAPITAL LETTER KOMI DZJE +A683 ; [.23E4.0020.0002] # CYRILLIC SMALL LETTER DZWE +A682 ; [.23E4.0020.0008] # CYRILLIC CAPITAL LETTER DZWE +0438 ; [.23E5.0020.0002] # CYRILLIC SMALL LETTER I +A675 ; [.23E5.0020.0004] # COMBINING CYRILLIC LETTER I +0418 ; [.23E5.0020.0008] # CYRILLIC CAPITAL LETTER I +045D ; [.23E5.0020.0002][.0000.0025.0002] # CYRILLIC SMALL LETTER I WITH GRAVE +040D ; [.23E5.0020.0008][.0000.0025.0002] # CYRILLIC CAPITAL LETTER I WITH GRAVE +04E5 ; [.23E5.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER I WITH DIAERESIS +04E4 ; [.23E5.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS +04E3 ; [.23E5.0020.0002][.0000.0032.0002] # CYRILLIC SMALL LETTER I WITH MACRON +04E2 ; [.23E5.0020.0008][.0000.0032.0002] # CYRILLIC CAPITAL LETTER I WITH MACRON +048B ; [.23E9.0020.0002] # CYRILLIC SMALL LETTER SHORT I WITH TAIL +048A ; [.23E9.0020.0008] # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL +0456 ; [.23ED.0020.0002] # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I +0406 ; [.23ED.0020.0008] # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I +0457 ; [.23ED.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER YI +A676 ; [.23ED.0020.0004][.0000.002B.0004] # COMBINING CYRILLIC LETTER YI +0407 ; [.23ED.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER YI +A647 ; [.23F1.0020.0002] # CYRILLIC SMALL LETTER IOTA +A646 ; [.23F1.0020.0008] # CYRILLIC CAPITAL LETTER IOTA +0439 ; [.23F2.0020.0002] # CYRILLIC SMALL LETTER SHORT I +0438 0306 ; [.23F2.0020.0002] # CYRILLIC SMALL LETTER SHORT I +0419 ; [.23F2.0020.0008] # CYRILLIC CAPITAL LETTER SHORT I +0418 0306 ; [.23F2.0020.0008] # CYRILLIC CAPITAL LETTER SHORT I +0458 ; [.23F6.0020.0002] # CYRILLIC SMALL LETTER JE +0408 ; [.23F6.0020.0008] # CYRILLIC CAPITAL LETTER JE +A649 ; [.23FA.0020.0002] # CYRILLIC SMALL LETTER DJERV +2DF8 ; [.23FA.0020.0004] # COMBINING CYRILLIC LETTER DJERV +A648 ; [.23FA.0020.0008] # CYRILLIC CAPITAL LETTER DJERV +043A ; [.23FB.0020.0002] # CYRILLIC SMALL LETTER KA +2DE6 ; [.23FB.0020.0004] # COMBINING CYRILLIC LETTER KA +041A ; [.23FB.0020.0008] # CYRILLIC CAPITAL LETTER KA +045C ; [.23FB.0020.0002][.0000.0024.0002] # CYRILLIC SMALL LETTER KJE +040C ; [.23FB.0020.0008][.0000.0024.0002] # CYRILLIC CAPITAL LETTER KJE +049B ; [.23FF.0020.0002] # CYRILLIC SMALL LETTER KA WITH DESCENDER +049A ; [.23FF.0020.0008] # CYRILLIC CAPITAL LETTER KA WITH DESCENDER +04C4 ; [.2403.0020.0002] # CYRILLIC SMALL LETTER KA WITH HOOK +04C3 ; [.2403.0020.0008] # CYRILLIC CAPITAL LETTER KA WITH HOOK +04A1 ; [.2407.0020.0002] # CYRILLIC SMALL LETTER BASHKIR KA +04A0 ; [.2407.0020.0008] # CYRILLIC CAPITAL LETTER BASHKIR KA +049F ; [.240B.0020.0002] # CYRILLIC SMALL LETTER KA WITH STROKE +049E ; [.240B.0020.0008] # CYRILLIC CAPITAL LETTER KA WITH STROKE +049D ; [.240F.0020.0002] # CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE +049C ; [.240F.0020.0008] # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE +051F ; [.2413.0020.0002] # CYRILLIC SMALL LETTER ALEUT KA +051E ; [.2413.0020.0008] # CYRILLIC CAPITAL LETTER ALEUT KA +051B ; [.2414.0020.0002] # CYRILLIC SMALL LETTER QA +051A ; [.2414.0020.0008] # CYRILLIC CAPITAL LETTER QA +043B ; [.2415.0020.0002] # CYRILLIC SMALL LETTER EL +2DE7 ; [.2415.0020.0004] # COMBINING CYRILLIC LETTER EL +041B ; [.2415.0020.0008] # CYRILLIC CAPITAL LETTER EL +1D2B ; [.2419.0020.0002] # CYRILLIC LETTER SMALL CAPITAL EL +04C6 ; [.241A.0020.0002] # CYRILLIC SMALL LETTER EL WITH TAIL +04C5 ; [.241A.0020.0008] # CYRILLIC CAPITAL LETTER EL WITH TAIL +052F ; [.241E.0020.0002] # CYRILLIC SMALL LETTER EL WITH DESCENDER +052E ; [.241E.0020.0008] # CYRILLIC CAPITAL LETTER EL WITH DESCENDER +0513 ; [.241F.0020.0002] # CYRILLIC SMALL LETTER EL WITH HOOK +0512 ; [.241F.0020.0008] # CYRILLIC CAPITAL LETTER EL WITH HOOK +0521 ; [.2420.0020.0002] # CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK +0520 ; [.2420.0020.0008] # CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK +0459 ; [.2421.0020.0002] # CYRILLIC SMALL LETTER LJE +0409 ; [.2421.0020.0008] # CYRILLIC CAPITAL LETTER LJE +A665 ; [.2425.0020.0002] # CYRILLIC SMALL LETTER SOFT EL +A664 ; [.2425.0020.0008] # CYRILLIC CAPITAL LETTER SOFT EL +0509 ; [.2426.0020.0002] # CYRILLIC SMALL LETTER KOMI LJE +0508 ; [.2426.0020.0008] # CYRILLIC CAPITAL LETTER KOMI LJE +0515 ; [.2427.0020.0002] # CYRILLIC SMALL LETTER LHA +0514 ; [.2427.0020.0008] # CYRILLIC CAPITAL LETTER LHA +043C ; [.2428.0020.0002] # CYRILLIC SMALL LETTER EM +2DE8 ; [.2428.0020.0004] # COMBINING CYRILLIC LETTER EM +041C ; [.2428.0020.0008] # CYRILLIC CAPITAL LETTER EM +04CE ; [.242C.0020.0002] # CYRILLIC SMALL LETTER EM WITH TAIL +04CD ; [.242C.0020.0008] # CYRILLIC CAPITAL LETTER EM WITH TAIL +A667 ; [.2430.0020.0002] # CYRILLIC SMALL LETTER SOFT EM +A666 ; [.2430.0020.0008] # CYRILLIC CAPITAL LETTER SOFT EM +043D ; [.2431.0020.0002] # CYRILLIC SMALL LETTER EN +2DE9 ; [.2431.0020.0004] # COMBINING CYRILLIC LETTER EN +041D ; [.2431.0020.0008] # CYRILLIC CAPITAL LETTER EN +1D78 ; [.2431.0020.0014] # MODIFIER LETTER CYRILLIC EN +0529 ; [.2435.0020.0002] # CYRILLIC SMALL LETTER EN WITH LEFT HOOK +0528 ; [.2435.0020.0008] # CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK +04CA ; [.2436.0020.0002] # CYRILLIC SMALL LETTER EN WITH TAIL +04C9 ; [.2436.0020.0008] # CYRILLIC CAPITAL LETTER EN WITH TAIL +04A3 ; [.243A.0020.0002] # CYRILLIC SMALL LETTER EN WITH DESCENDER +04A2 ; [.243A.0020.0008] # CYRILLIC CAPITAL LETTER EN WITH DESCENDER +04C8 ; [.243E.0020.0002] # CYRILLIC SMALL LETTER EN WITH HOOK +04C7 ; [.243E.0020.0008] # CYRILLIC CAPITAL LETTER EN WITH HOOK +0523 ; [.2442.0020.0002] # CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK +0522 ; [.2442.0020.0008] # CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK +04A5 ; [.2443.0020.0002] # CYRILLIC SMALL LIGATURE EN GHE +04A4 ; [.2443.0020.0008] # CYRILLIC CAPITAL LIGATURE EN GHE +045A ; [.2447.0020.0002] # CYRILLIC SMALL LETTER NJE +040A ; [.2447.0020.0008] # CYRILLIC CAPITAL LETTER NJE +050B ; [.244B.0020.0002] # CYRILLIC SMALL LETTER KOMI NJE +050A ; [.244B.0020.0008] # CYRILLIC CAPITAL LETTER KOMI NJE +043E ; [.244C.0020.0002] # CYRILLIC SMALL LETTER O +1C82 ; [.244C.0020.0004] # CYRILLIC SMALL LETTER NARROW O +2DEA ; [.244C.0020.0004] # COMBINING CYRILLIC LETTER O +A669 ; [.244C.0020.0004] # CYRILLIC SMALL LETTER MONOCULAR O +A66B ; [.244C.0020.0004] # CYRILLIC SMALL LETTER BINOCULAR O +A66D ; [.244C.0020.0004] # CYRILLIC SMALL LETTER DOUBLE MONOCULAR O +A66E ; [.244C.0020.0004] # CYRILLIC LETTER MULTIOCULAR O +A699 ; [.244C.0020.0004] # CYRILLIC SMALL LETTER DOUBLE O +A69B ; [.244C.0020.0004] # CYRILLIC SMALL LETTER CROSSED O +041E ; [.244C.0020.0008] # CYRILLIC CAPITAL LETTER O +A668 ; [.244C.0020.000A] # CYRILLIC CAPITAL LETTER MONOCULAR O +A66A ; [.244C.0020.000A] # CYRILLIC CAPITAL LETTER BINOCULAR O +A66C ; [.244C.0020.000A] # CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O +A698 ; [.244C.0020.000A] # CYRILLIC CAPITAL LETTER DOUBLE O +A69A ; [.244C.0020.000A] # CYRILLIC CAPITAL LETTER CROSSED O +04E7 ; [.244C.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER O WITH DIAERESIS +04E6 ; [.244C.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS +04E9 ; [.2450.0020.0002] # CYRILLIC SMALL LETTER BARRED O +04E8 ; [.2450.0020.0008] # CYRILLIC CAPITAL LETTER BARRED O +04EB ; [.2450.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS +04EA ; [.2450.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS +043F ; [.2454.0020.0002] # CYRILLIC SMALL LETTER PE +2DEB ; [.2454.0020.0004] # COMBINING CYRILLIC LETTER PE +041F ; [.2454.0020.0008] # CYRILLIC CAPITAL LETTER PE +0525 ; [.2458.0020.0002] # CYRILLIC SMALL LETTER PE WITH DESCENDER +0524 ; [.2458.0020.0008] # CYRILLIC CAPITAL LETTER PE WITH DESCENDER +04A7 ; [.2459.0020.0002] # CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK +04A6 ; [.2459.0020.0008] # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK +0481 ; [.245D.0020.0002] # CYRILLIC SMALL LETTER KOPPA +0480 ; [.245D.0020.0008] # CYRILLIC CAPITAL LETTER KOPPA +0440 ; [.2461.0020.0002] # CYRILLIC SMALL LETTER ER +2DEC ; [.2461.0020.0004] # COMBINING CYRILLIC LETTER ER +0420 ; [.2461.0020.0008] # CYRILLIC CAPITAL LETTER ER +048F ; [.2465.0020.0002] # CYRILLIC SMALL LETTER ER WITH TICK +048E ; [.2465.0020.0008] # CYRILLIC CAPITAL LETTER ER WITH TICK +0517 ; [.2469.0020.0002] # CYRILLIC SMALL LETTER RHA +0516 ; [.2469.0020.0008] # CYRILLIC CAPITAL LETTER RHA +0441 ; [.246A.0020.0002] # CYRILLIC SMALL LETTER ES +1C83 ; [.246A.0020.0004] # CYRILLIC SMALL LETTER WIDE ES +2DED ; [.246A.0020.0004] # COMBINING CYRILLIC LETTER ES +0421 ; [.246A.0020.0008] # CYRILLIC CAPITAL LETTER ES +2DF5 ; [.246A.0020.0004][.2473.0020.0004] # COMBINING CYRILLIC LETTER ES-TE +050D ; [.246E.0020.0002] # CYRILLIC SMALL LETTER KOMI SJE +050C ; [.246E.0020.0008] # CYRILLIC CAPITAL LETTER KOMI SJE +04AB ; [.246F.0020.0002] # CYRILLIC SMALL LETTER ES WITH DESCENDER +04AA ; [.246F.0020.0008] # CYRILLIC CAPITAL LETTER ES WITH DESCENDER +0442 ; [.2473.0020.0002] # CYRILLIC SMALL LETTER TE +1C84 ; [.2473.0020.0004] # CYRILLIC SMALL LETTER TALL TE +1C85 ; [.2473.0020.0004] # CYRILLIC SMALL LETTER THREE-LEGGED TE +2DEE ; [.2473.0020.0004] # COMBINING CYRILLIC LETTER TE +0422 ; [.2473.0020.0008] # CYRILLIC CAPITAL LETTER TE +A68D ; [.2477.0020.0002] # CYRILLIC SMALL LETTER TWE +A68C ; [.2477.0020.0008] # CYRILLIC CAPITAL LETTER TWE +050F ; [.2478.0020.0002] # CYRILLIC SMALL LETTER KOMI TJE +050E ; [.2478.0020.0008] # CYRILLIC CAPITAL LETTER KOMI TJE +04AD ; [.2479.0020.0002] # CYRILLIC SMALL LETTER TE WITH DESCENDER +04AC ; [.2479.0020.0008] # CYRILLIC CAPITAL LETTER TE WITH DESCENDER +A68B ; [.247D.0020.0002] # CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK +A68A ; [.247D.0020.0008] # CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK +045B ; [.247E.0020.0002] # CYRILLIC SMALL LETTER TSHE +040B ; [.247E.0020.0008] # CYRILLIC CAPITAL LETTER TSHE +0443 ; [.2482.0020.0002] # CYRILLIC SMALL LETTER U +A677 ; [.2482.0020.0004] # COMBINING CYRILLIC LETTER U +0423 ; [.2482.0020.0008] # CYRILLIC CAPITAL LETTER U +045E ; [.2482.0020.0002][.0000.0026.0002] # CYRILLIC SMALL LETTER SHORT U +040E ; [.2482.0020.0008][.0000.0026.0002] # CYRILLIC CAPITAL LETTER SHORT U +04F1 ; [.2482.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER U WITH DIAERESIS +04F0 ; [.2482.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS +04F3 ; [.2482.0020.0002][.0000.002C.0002] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE +04F2 ; [.2482.0020.0008][.0000.002C.0002] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE +04EF ; [.2482.0020.0002][.0000.0032.0002] # CYRILLIC SMALL LETTER U WITH MACRON +04EE ; [.2482.0020.0008][.0000.0032.0002] # CYRILLIC CAPITAL LETTER U WITH MACRON +04AF ; [.2486.0020.0002] # CYRILLIC SMALL LETTER STRAIGHT U +04AE ; [.2486.0020.0008] # CYRILLIC CAPITAL LETTER STRAIGHT U +04B1 ; [.248A.0020.0002] # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE +04B0 ; [.248A.0020.0008] # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE +A64B ; [.248E.0020.0002] # CYRILLIC SMALL LETTER MONOGRAPH UK +1C88 ; [.248E.0020.0004] # CYRILLIC SMALL LETTER UNBLENDED UK +2DF9 ; [.248E.0020.0004] # COMBINING CYRILLIC LETTER MONOGRAPH UK +A64A ; [.248E.0020.0008] # CYRILLIC CAPITAL LETTER MONOGRAPH UK +0479 ; [.248F.0020.0002] # CYRILLIC SMALL LETTER UK +0478 ; [.248F.0020.0008] # CYRILLIC CAPITAL LETTER UK +0444 ; [.2493.0020.0002] # CYRILLIC SMALL LETTER EF +A69E ; [.2493.0020.0004] # COMBINING CYRILLIC LETTER EF +0424 ; [.2493.0020.0008] # CYRILLIC CAPITAL LETTER EF +0445 ; [.2497.0020.0002] # CYRILLIC SMALL LETTER HA +2DEF ; [.2497.0020.0004] # COMBINING CYRILLIC LETTER HA +0425 ; [.2497.0020.0008] # CYRILLIC CAPITAL LETTER HA +04FD ; [.249B.0020.0002] # CYRILLIC SMALL LETTER HA WITH HOOK +04FC ; [.249B.0020.0008] # CYRILLIC CAPITAL LETTER HA WITH HOOK +04FF ; [.249F.0020.0002] # CYRILLIC SMALL LETTER HA WITH STROKE +04FE ; [.249F.0020.0008] # CYRILLIC CAPITAL LETTER HA WITH STROKE +04B3 ; [.24A3.0020.0002] # CYRILLIC SMALL LETTER HA WITH DESCENDER +04B2 ; [.24A3.0020.0008] # CYRILLIC CAPITAL LETTER HA WITH DESCENDER +04BB ; [.24A7.0020.0002] # CYRILLIC SMALL LETTER SHHA +04BA ; [.24A7.0020.0008] # CYRILLIC CAPITAL LETTER SHHA +0527 ; [.24AB.0020.0002] # CYRILLIC SMALL LETTER SHHA WITH DESCENDER +0526 ; [.24AB.0020.0008] # CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER +A695 ; [.24AC.0020.0002] # CYRILLIC SMALL LETTER HWE +A694 ; [.24AC.0020.0008] # CYRILLIC CAPITAL LETTER HWE +0461 ; [.24AD.0020.0002] # CYRILLIC SMALL LETTER OMEGA +A67B ; [.24AD.0020.0004] # COMBINING CYRILLIC LETTER OMEGA +0460 ; [.24AD.0020.0008] # CYRILLIC CAPITAL LETTER OMEGA +047F ; [.24B1.0020.0002] # CYRILLIC SMALL LETTER OT +047E ; [.24B1.0020.0008] # CYRILLIC CAPITAL LETTER OT +A64D ; [.24B5.0020.0002] # CYRILLIC SMALL LETTER BROAD OMEGA +A64C ; [.24B5.0020.0008] # CYRILLIC CAPITAL LETTER BROAD OMEGA +047D ; [.24B6.0020.0002] # CYRILLIC SMALL LETTER OMEGA WITH TITLO +047C ; [.24B6.0020.0008] # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO +047B ; [.24BA.0020.0002] # CYRILLIC SMALL LETTER ROUND OMEGA +047A ; [.24BA.0020.0008] # CYRILLIC CAPITAL LETTER ROUND OMEGA +0446 ; [.24BE.0020.0002] # CYRILLIC SMALL LETTER TSE +2DF0 ; [.24BE.0020.0004] # COMBINING CYRILLIC LETTER TSE +0426 ; [.24BE.0020.0008] # CYRILLIC CAPITAL LETTER TSE +A661 ; [.24C2.0020.0002] # CYRILLIC SMALL LETTER REVERSED TSE +A660 ; [.24C2.0020.0008] # CYRILLIC CAPITAL LETTER REVERSED TSE +A68F ; [.24C3.0020.0002] # CYRILLIC SMALL LETTER TSWE +A68E ; [.24C3.0020.0008] # CYRILLIC CAPITAL LETTER TSWE +04B5 ; [.24C4.0020.0002] # CYRILLIC SMALL LIGATURE TE TSE +04B4 ; [.24C4.0020.0008] # CYRILLIC CAPITAL LIGATURE TE TSE +A691 ; [.24C8.0020.0002] # CYRILLIC SMALL LETTER TSSE +A690 ; [.24C8.0020.0008] # CYRILLIC CAPITAL LETTER TSSE +0447 ; [.24C9.0020.0002] # CYRILLIC SMALL LETTER CHE +2DF1 ; [.24C9.0020.0004] # COMBINING CYRILLIC LETTER CHE +0427 ; [.24C9.0020.0008] # CYRILLIC CAPITAL LETTER CHE +04F5 ; [.24C9.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS +04F4 ; [.24C9.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS +052D ; [.24CD.0020.0002] # CYRILLIC SMALL LETTER DCHE +052C ; [.24CD.0020.0008] # CYRILLIC CAPITAL LETTER DCHE +A693 ; [.24CE.0020.0002] # CYRILLIC SMALL LETTER TCHE +A692 ; [.24CE.0020.0008] # CYRILLIC CAPITAL LETTER TCHE +04B7 ; [.24CF.0020.0002] # CYRILLIC SMALL LETTER CHE WITH DESCENDER +04B6 ; [.24CF.0020.0008] # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER +04CC ; [.24D3.0020.0002] # CYRILLIC SMALL LETTER KHAKASSIAN CHE +04CB ; [.24D3.0020.0008] # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE +04B9 ; [.24D7.0020.0002] # CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE +04B8 ; [.24D7.0020.0008] # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE +A687 ; [.24DB.0020.0002] # CYRILLIC SMALL LETTER CCHE +A686 ; [.24DB.0020.0008] # CYRILLIC CAPITAL LETTER CCHE +04BD ; [.24DC.0020.0002] # CYRILLIC SMALL LETTER ABKHASIAN CHE +04BC ; [.24DC.0020.0008] # CYRILLIC CAPITAL LETTER ABKHASIAN CHE +04BF ; [.24E0.0020.0002] # CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER +04BE ; [.24E0.0020.0008] # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER +045F ; [.24E4.0020.0002] # CYRILLIC SMALL LETTER DZHE +040F ; [.24E4.0020.0008] # CYRILLIC CAPITAL LETTER DZHE +0448 ; [.24E8.0020.0002] # CYRILLIC SMALL LETTER SHA +2DF2 ; [.24E8.0020.0004] # COMBINING CYRILLIC LETTER SHA +0428 ; [.24E8.0020.0008] # CYRILLIC CAPITAL LETTER SHA +A697 ; [.24EC.0020.0002] # CYRILLIC SMALL LETTER SHWE +A696 ; [.24EC.0020.0008] # CYRILLIC CAPITAL LETTER SHWE +0449 ; [.24ED.0020.0002] # CYRILLIC SMALL LETTER SHCHA +2DF3 ; [.24ED.0020.0004] # COMBINING CYRILLIC LETTER SHCHA +0429 ; [.24ED.0020.0008] # CYRILLIC CAPITAL LETTER SHCHA +A64F ; [.24F1.0020.0002] # CYRILLIC SMALL LETTER NEUTRAL YER +A64E ; [.24F1.0020.0008] # CYRILLIC CAPITAL LETTER NEUTRAL YER +2E2F ; [.24F2.0020.0002] # VERTICAL TILDE +A67F ; [.24F3.0020.0002] # CYRILLIC PAYEROK +044A ; [.24F4.0020.0002] # CYRILLIC SMALL LETTER HARD SIGN +1C86 ; [.24F4.0020.0004] # CYRILLIC SMALL LETTER TALL HARD SIGN +A678 ; [.24F4.0020.0004] # COMBINING CYRILLIC LETTER HARD SIGN +042A ; [.24F4.0020.0008] # CYRILLIC CAPITAL LETTER HARD SIGN +A69C ; [.24F4.0020.0014] # MODIFIER LETTER CYRILLIC HARD SIGN +A651 ; [.24F8.0020.0002] # CYRILLIC SMALL LETTER YERU WITH BACK YER +A650 ; [.24F8.0020.0008] # CYRILLIC CAPITAL LETTER YERU WITH BACK YER +044B ; [.24F9.0020.0002] # CYRILLIC SMALL LETTER YERU +A679 ; [.24F9.0020.0004] # COMBINING CYRILLIC LETTER YERU +042B ; [.24F9.0020.0008] # CYRILLIC CAPITAL LETTER YERU +04F9 ; [.24F9.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS +04F8 ; [.24F9.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS +044C ; [.24FD.0020.0002] # CYRILLIC SMALL LETTER SOFT SIGN +A67A ; [.24FD.0020.0004] # COMBINING CYRILLIC LETTER SOFT SIGN +042C ; [.24FD.0020.0008] # CYRILLIC CAPITAL LETTER SOFT SIGN +A69D ; [.24FD.0020.0014] # MODIFIER LETTER CYRILLIC SOFT SIGN +048D ; [.2501.0020.0002] # CYRILLIC SMALL LETTER SEMISOFT SIGN +048C ; [.2501.0020.0008] # CYRILLIC CAPITAL LETTER SEMISOFT SIGN +0463 ; [.2505.0020.0002] # CYRILLIC SMALL LETTER YAT +1C87 ; [.2505.0020.0004] # CYRILLIC SMALL LETTER TALL YAT +2DFA ; [.2505.0020.0004] # COMBINING CYRILLIC LETTER YAT +0462 ; [.2505.0020.0008] # CYRILLIC CAPITAL LETTER YAT +A653 ; [.2509.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED YAT +A652 ; [.2509.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED YAT +044D ; [.250A.0020.0002] # CYRILLIC SMALL LETTER E +042D ; [.250A.0020.0008] # CYRILLIC CAPITAL LETTER E +04ED ; [.250A.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER E WITH DIAERESIS +04EC ; [.250A.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS +044E ; [.250E.0020.0002] # CYRILLIC SMALL LETTER YU +2DFB ; [.250E.0020.0004] # COMBINING CYRILLIC LETTER YU +042E ; [.250E.0020.0008] # CYRILLIC CAPITAL LETTER YU +A655 ; [.2512.0020.0002] # CYRILLIC SMALL LETTER REVERSED YU +A654 ; [.2512.0020.0008] # CYRILLIC CAPITAL LETTER REVERSED YU +A657 ; [.2513.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED A +2DFC ; [.2513.0020.0004] # COMBINING CYRILLIC LETTER IOTIFIED A +A656 ; [.2513.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED A +044F ; [.2514.0020.0002] # CYRILLIC SMALL LETTER YA +042F ; [.2514.0020.0008] # CYRILLIC CAPITAL LETTER YA +0519 ; [.2518.0020.0002] # CYRILLIC SMALL LETTER YAE +0518 ; [.2518.0020.0008] # CYRILLIC CAPITAL LETTER YAE +0465 ; [.2519.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED E +A69F ; [.2519.0020.0004] # COMBINING CYRILLIC LETTER IOTIFIED E +0464 ; [.2519.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED E +0467 ; [.251D.0020.0002] # CYRILLIC SMALL LETTER LITTLE YUS +2DFD ; [.251D.0020.0004] # COMBINING CYRILLIC LETTER LITTLE YUS +0466 ; [.251D.0020.0008] # CYRILLIC CAPITAL LETTER LITTLE YUS +A659 ; [.2521.0020.0002] # CYRILLIC SMALL LETTER CLOSED LITTLE YUS +A658 ; [.2521.0020.0008] # CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS +046B ; [.2522.0020.0002] # CYRILLIC SMALL LETTER BIG YUS +2DFE ; [.2522.0020.0004] # COMBINING CYRILLIC LETTER BIG YUS +046A ; [.2522.0020.0008] # CYRILLIC CAPITAL LETTER BIG YUS +A65B ; [.2526.0020.0002] # CYRILLIC SMALL LETTER BLENDED YUS +A65A ; [.2526.0020.0008] # CYRILLIC CAPITAL LETTER BLENDED YUS +0469 ; [.2527.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS +0468 ; [.2527.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS +A65D ; [.252B.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS +A65C ; [.252B.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS +046D ; [.252C.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED BIG YUS +2DFF ; [.252C.0020.0004] # COMBINING CYRILLIC LETTER IOTIFIED BIG YUS +046C ; [.252C.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS +046F ; [.2530.0020.0002] # CYRILLIC SMALL LETTER KSI +046E ; [.2530.0020.0008] # CYRILLIC CAPITAL LETTER KSI +0471 ; [.2534.0020.0002] # CYRILLIC SMALL LETTER PSI +0470 ; [.2534.0020.0008] # CYRILLIC CAPITAL LETTER PSI +0473 ; [.2538.0020.0002] # CYRILLIC SMALL LETTER FITA +2DF4 ; [.2538.0020.0004] # COMBINING CYRILLIC LETTER FITA +0472 ; [.2538.0020.0008] # CYRILLIC CAPITAL LETTER FITA +0475 ; [.253C.0020.0002] # CYRILLIC SMALL LETTER IZHITSA +0474 ; [.253C.0020.0008] # CYRILLIC CAPITAL LETTER IZHITSA +0477 ; [.253C.0020.0002][.0000.003C.0002] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT +0476 ; [.253C.0020.0008][.0000.003C.0002] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT +A65F ; [.2540.0020.0002] # CYRILLIC SMALL LETTER YN +A65E ; [.2540.0020.0008] # CYRILLIC CAPITAL LETTER YN +04A9 ; [.2541.0020.0002] # CYRILLIC SMALL LETTER ABKHASIAN HA +04A8 ; [.2541.0020.0008] # CYRILLIC CAPITAL LETTER ABKHASIAN HA +051D ; [.2545.0020.0002] # CYRILLIC SMALL LETTER WE +051C ; [.2545.0020.0008] # CYRILLIC CAPITAL LETTER WE +04CF ; [.2546.0020.0002] # CYRILLIC SMALL LETTER PALOCHKA +04C0 ; [.2546.0020.0008] # CYRILLIC LETTER PALOCHKA +2C30 ; [.254A.0020.0002] # GLAGOLITIC SMALL LETTER AZU +1E000 ; [.254A.0020.0004] # COMBINING GLAGOLITIC LETTER AZU +2C00 ; [.254A.0020.0008] # GLAGOLITIC CAPITAL LETTER AZU +2C31 ; [.254B.0020.0002] # GLAGOLITIC SMALL LETTER BUKY +1E001 ; [.254B.0020.0004] # COMBINING GLAGOLITIC LETTER BUKY +2C01 ; [.254B.0020.0008] # GLAGOLITIC CAPITAL LETTER BUKY +2C32 ; [.254C.0020.0002] # GLAGOLITIC SMALL LETTER VEDE +1E002 ; [.254C.0020.0004] # COMBINING GLAGOLITIC LETTER VEDE +2C02 ; [.254C.0020.0008] # GLAGOLITIC CAPITAL LETTER VEDE +2C33 ; [.254D.0020.0002] # GLAGOLITIC SMALL LETTER GLAGOLI +1E003 ; [.254D.0020.0004] # COMBINING GLAGOLITIC LETTER GLAGOLI +2C03 ; [.254D.0020.0008] # GLAGOLITIC CAPITAL LETTER GLAGOLI +2C34 ; [.254E.0020.0002] # GLAGOLITIC SMALL LETTER DOBRO +1E004 ; [.254E.0020.0004] # COMBINING GLAGOLITIC LETTER DOBRO +2C04 ; [.254E.0020.0008] # GLAGOLITIC CAPITAL LETTER DOBRO +2C35 ; [.254F.0020.0002] # GLAGOLITIC SMALL LETTER YESTU +1E005 ; [.254F.0020.0004] # COMBINING GLAGOLITIC LETTER YESTU +2C05 ; [.254F.0020.0008] # GLAGOLITIC CAPITAL LETTER YESTU +2C36 ; [.2550.0020.0002] # GLAGOLITIC SMALL LETTER ZHIVETE +1E006 ; [.2550.0020.0004] # COMBINING GLAGOLITIC LETTER ZHIVETE +2C06 ; [.2550.0020.0008] # GLAGOLITIC CAPITAL LETTER ZHIVETE +2C37 ; [.2551.0020.0002] # GLAGOLITIC SMALL LETTER DZELO +2C07 ; [.2551.0020.0008] # GLAGOLITIC CAPITAL LETTER DZELO +2C38 ; [.2552.0020.0002] # GLAGOLITIC SMALL LETTER ZEMLJA +1E008 ; [.2552.0020.0004] # COMBINING GLAGOLITIC LETTER ZEMLJA +2C08 ; [.2552.0020.0008] # GLAGOLITIC CAPITAL LETTER ZEMLJA +2C39 ; [.2553.0020.0002] # GLAGOLITIC SMALL LETTER IZHE +1E009 ; [.2553.0020.0004] # COMBINING GLAGOLITIC LETTER IZHE +2C09 ; [.2553.0020.0008] # GLAGOLITIC CAPITAL LETTER IZHE +2C3A ; [.2554.0020.0002] # GLAGOLITIC SMALL LETTER INITIAL IZHE +1E00A ; [.2554.0020.0004] # COMBINING GLAGOLITIC LETTER INITIAL IZHE +2C0A ; [.2554.0020.0008] # GLAGOLITIC CAPITAL LETTER INITIAL IZHE +2C3B ; [.2555.0020.0002] # GLAGOLITIC SMALL LETTER I +1E00B ; [.2555.0020.0004] # COMBINING GLAGOLITIC LETTER I +2C0B ; [.2555.0020.0008] # GLAGOLITIC CAPITAL LETTER I +2C3C ; [.2556.0020.0002] # GLAGOLITIC SMALL LETTER DJERVI +1E00C ; [.2556.0020.0004] # COMBINING GLAGOLITIC LETTER DJERVI +2C0C ; [.2556.0020.0008] # GLAGOLITIC CAPITAL LETTER DJERVI +2C3D ; [.2557.0020.0002] # GLAGOLITIC SMALL LETTER KAKO +1E00D ; [.2557.0020.0004] # COMBINING GLAGOLITIC LETTER KAKO +2C0D ; [.2557.0020.0008] # GLAGOLITIC CAPITAL LETTER KAKO +2C3E ; [.2558.0020.0002] # GLAGOLITIC SMALL LETTER LJUDIJE +1E00E ; [.2558.0020.0004] # COMBINING GLAGOLITIC LETTER LJUDIJE +2C0E ; [.2558.0020.0008] # GLAGOLITIC CAPITAL LETTER LJUDIJE +2C3F ; [.2559.0020.0002] # GLAGOLITIC SMALL LETTER MYSLITE +1E00F ; [.2559.0020.0004] # COMBINING GLAGOLITIC LETTER MYSLITE +2C0F ; [.2559.0020.0008] # GLAGOLITIC CAPITAL LETTER MYSLITE +2C40 ; [.255A.0020.0002] # GLAGOLITIC SMALL LETTER NASHI +1E010 ; [.255A.0020.0004] # COMBINING GLAGOLITIC LETTER NASHI +2C10 ; [.255A.0020.0008] # GLAGOLITIC CAPITAL LETTER NASHI +2C41 ; [.255B.0020.0002] # GLAGOLITIC SMALL LETTER ONU +1E011 ; [.255B.0020.0004] # COMBINING GLAGOLITIC LETTER ONU +2C11 ; [.255B.0020.0008] # GLAGOLITIC CAPITAL LETTER ONU +2C42 ; [.255C.0020.0002] # GLAGOLITIC SMALL LETTER POKOJI +1E012 ; [.255C.0020.0004] # COMBINING GLAGOLITIC LETTER POKOJI +2C12 ; [.255C.0020.0008] # GLAGOLITIC CAPITAL LETTER POKOJI +2C43 ; [.255D.0020.0002] # GLAGOLITIC SMALL LETTER RITSI +1E013 ; [.255D.0020.0004] # COMBINING GLAGOLITIC LETTER RITSI +2C13 ; [.255D.0020.0008] # GLAGOLITIC CAPITAL LETTER RITSI +2C44 ; [.255E.0020.0002] # GLAGOLITIC SMALL LETTER SLOVO +1E014 ; [.255E.0020.0004] # COMBINING GLAGOLITIC LETTER SLOVO +2C14 ; [.255E.0020.0008] # GLAGOLITIC CAPITAL LETTER SLOVO +2C45 ; [.255F.0020.0002] # GLAGOLITIC SMALL LETTER TVRIDO +1E015 ; [.255F.0020.0004] # COMBINING GLAGOLITIC LETTER TVRIDO +2C15 ; [.255F.0020.0008] # GLAGOLITIC CAPITAL LETTER TVRIDO +2C46 ; [.2560.0020.0002] # GLAGOLITIC SMALL LETTER UKU +1E016 ; [.2560.0020.0004] # COMBINING GLAGOLITIC LETTER UKU +2C16 ; [.2560.0020.0008] # GLAGOLITIC CAPITAL LETTER UKU +2C47 ; [.2561.0020.0002] # GLAGOLITIC SMALL LETTER FRITU +1E017 ; [.2561.0020.0004] # COMBINING GLAGOLITIC LETTER FRITU +2C17 ; [.2561.0020.0008] # GLAGOLITIC CAPITAL LETTER FRITU +2C48 ; [.2562.0020.0002] # GLAGOLITIC SMALL LETTER HERU +1E018 ; [.2562.0020.0004] # COMBINING GLAGOLITIC LETTER HERU +2C18 ; [.2562.0020.0008] # GLAGOLITIC CAPITAL LETTER HERU +2C49 ; [.2563.0020.0002] # GLAGOLITIC SMALL LETTER OTU +2C19 ; [.2563.0020.0008] # GLAGOLITIC CAPITAL LETTER OTU +2C4A ; [.2564.0020.0002] # GLAGOLITIC SMALL LETTER PE +2C1A ; [.2564.0020.0008] # GLAGOLITIC CAPITAL LETTER PE +2C4B ; [.2565.0020.0002] # GLAGOLITIC SMALL LETTER SHTA +1E01B ; [.2565.0020.0004] # COMBINING GLAGOLITIC LETTER SHTA +2C1B ; [.2565.0020.0008] # GLAGOLITIC CAPITAL LETTER SHTA +2C4C ; [.2566.0020.0002] # GLAGOLITIC SMALL LETTER TSI +1E01C ; [.2566.0020.0004] # COMBINING GLAGOLITIC LETTER TSI +2C1C ; [.2566.0020.0008] # GLAGOLITIC CAPITAL LETTER TSI +2C4D ; [.2567.0020.0002] # GLAGOLITIC SMALL LETTER CHRIVI +1E01D ; [.2567.0020.0004] # COMBINING GLAGOLITIC LETTER CHRIVI +2C1D ; [.2567.0020.0008] # GLAGOLITIC CAPITAL LETTER CHRIVI +2C4E ; [.2568.0020.0002] # GLAGOLITIC SMALL LETTER SHA +1E01E ; [.2568.0020.0004] # COMBINING GLAGOLITIC LETTER SHA +2C1E ; [.2568.0020.0008] # GLAGOLITIC CAPITAL LETTER SHA +2C4F ; [.2569.0020.0002] # GLAGOLITIC SMALL LETTER YERU +1E01F ; [.2569.0020.0004] # COMBINING GLAGOLITIC LETTER YERU +2C1F ; [.2569.0020.0008] # GLAGOLITIC CAPITAL LETTER YERU +2C50 ; [.256A.0020.0002] # GLAGOLITIC SMALL LETTER YERI +1E020 ; [.256A.0020.0004] # COMBINING GLAGOLITIC LETTER YERI +2C20 ; [.256A.0020.0008] # GLAGOLITIC CAPITAL LETTER YERI +2C51 ; [.256B.0020.0002] # GLAGOLITIC SMALL LETTER YATI +1E021 ; [.256B.0020.0004] # COMBINING GLAGOLITIC LETTER YATI +2C21 ; [.256B.0020.0008] # GLAGOLITIC CAPITAL LETTER YATI +2C52 ; [.256C.0020.0002] # GLAGOLITIC SMALL LETTER SPIDERY HA +2C22 ; [.256C.0020.0008] # GLAGOLITIC CAPITAL LETTER SPIDERY HA +2C53 ; [.256D.0020.0002] # GLAGOLITIC SMALL LETTER YU +1E023 ; [.256D.0020.0004] # COMBINING GLAGOLITIC LETTER YU +2C23 ; [.256D.0020.0008] # GLAGOLITIC CAPITAL LETTER YU +2C54 ; [.256E.0020.0002] # GLAGOLITIC SMALL LETTER SMALL YUS +1E024 ; [.256E.0020.0004] # COMBINING GLAGOLITIC LETTER SMALL YUS +2C24 ; [.256E.0020.0008] # GLAGOLITIC CAPITAL LETTER SMALL YUS +2C55 ; [.256F.0020.0002] # GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL +2C25 ; [.256F.0020.0008] # GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL +2C56 ; [.2570.0020.0002] # GLAGOLITIC SMALL LETTER YO +1E026 ; [.2570.0020.0004] # COMBINING GLAGOLITIC LETTER YO +2C26 ; [.2570.0020.0008] # GLAGOLITIC CAPITAL LETTER YO +2C57 ; [.2571.0020.0002] # GLAGOLITIC SMALL LETTER IOTATED SMALL YUS +1E027 ; [.2571.0020.0004] # COMBINING GLAGOLITIC LETTER IOTATED SMALL YUS +2C27 ; [.2571.0020.0008] # GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS +2C58 ; [.2572.0020.0002] # GLAGOLITIC SMALL LETTER BIG YUS +1E028 ; [.2572.0020.0004] # COMBINING GLAGOLITIC LETTER BIG YUS +2C28 ; [.2572.0020.0008] # GLAGOLITIC CAPITAL LETTER BIG YUS +2C59 ; [.2573.0020.0002] # GLAGOLITIC SMALL LETTER IOTATED BIG YUS +1E029 ; [.2573.0020.0004] # COMBINING GLAGOLITIC LETTER IOTATED BIG YUS +2C29 ; [.2573.0020.0008] # GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS +2C5A ; [.2574.0020.0002] # GLAGOLITIC SMALL LETTER FITA +1E02A ; [.2574.0020.0004] # COMBINING GLAGOLITIC LETTER FITA +2C2A ; [.2574.0020.0008] # GLAGOLITIC CAPITAL LETTER FITA +2C5B ; [.2575.0020.0002] # GLAGOLITIC SMALL LETTER IZHITSA +2C2B ; [.2575.0020.0008] # GLAGOLITIC CAPITAL LETTER IZHITSA +2C5C ; [.2576.0020.0002] # GLAGOLITIC SMALL LETTER SHTAPIC +2C2C ; [.2576.0020.0008] # GLAGOLITIC CAPITAL LETTER SHTAPIC +2C5D ; [.2577.0020.0002] # GLAGOLITIC SMALL LETTER TROKUTASTI A +2C2D ; [.2577.0020.0008] # GLAGOLITIC CAPITAL LETTER TROKUTASTI A +2C5E ; [.2578.0020.0002] # GLAGOLITIC SMALL LETTER LATINATE MYSLITE +2C2E ; [.2578.0020.0008] # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE +10350 ; [.2579.0020.0002] # OLD PERMIC LETTER AN +10376 ; [.2579.0020.0004] # COMBINING OLD PERMIC LETTER AN +10351 ; [.257A.0020.0002] # OLD PERMIC LETTER BUR +10352 ; [.257B.0020.0002] # OLD PERMIC LETTER GAI +10353 ; [.257C.0020.0002] # OLD PERMIC LETTER DOI +10377 ; [.257C.0020.0004] # COMBINING OLD PERMIC LETTER DOI +10354 ; [.257D.0020.0002] # OLD PERMIC LETTER E +10355 ; [.257E.0020.0002] # OLD PERMIC LETTER ZHOI +10356 ; [.257F.0020.0002] # OLD PERMIC LETTER DZHOI +10357 ; [.2580.0020.0002] # OLD PERMIC LETTER ZATA +10378 ; [.2580.0020.0004] # COMBINING OLD PERMIC LETTER ZATA +10358 ; [.2581.0020.0002] # OLD PERMIC LETTER DZITA +10359 ; [.2582.0020.0002] # OLD PERMIC LETTER I +1035A ; [.2583.0020.0002] # OLD PERMIC LETTER KOKE +1035B ; [.2584.0020.0002] # OLD PERMIC LETTER LEI +1035C ; [.2585.0020.0002] # OLD PERMIC LETTER MENOE +1035D ; [.2586.0020.0002] # OLD PERMIC LETTER NENOE +10379 ; [.2586.0020.0004] # COMBINING OLD PERMIC LETTER NENOE +1035E ; [.2587.0020.0002] # OLD PERMIC LETTER VOOI +1035F ; [.2588.0020.0002] # OLD PERMIC LETTER PEEI +10360 ; [.2589.0020.0002] # OLD PERMIC LETTER REI +10361 ; [.258A.0020.0002] # OLD PERMIC LETTER SII +1037A ; [.258A.0020.0004] # COMBINING OLD PERMIC LETTER SII +10362 ; [.258B.0020.0002] # OLD PERMIC LETTER TAI +10363 ; [.258C.0020.0002] # OLD PERMIC LETTER U +10364 ; [.258D.0020.0002] # OLD PERMIC LETTER CHERY +10365 ; [.258E.0020.0002] # OLD PERMIC LETTER SHOOI +10366 ; [.258F.0020.0002] # OLD PERMIC LETTER SHCHOOI +10367 ; [.2590.0020.0002] # OLD PERMIC LETTER YRY +10368 ; [.2591.0020.0002] # OLD PERMIC LETTER YERU +10369 ; [.2592.0020.0002] # OLD PERMIC LETTER O +1036A ; [.2593.0020.0002] # OLD PERMIC LETTER OO +1036B ; [.2594.0020.0002] # OLD PERMIC LETTER EF +1036C ; [.2595.0020.0002] # OLD PERMIC LETTER HA +1036D ; [.2596.0020.0002] # OLD PERMIC LETTER TSIU +1036E ; [.2597.0020.0002] # OLD PERMIC LETTER VER +1036F ; [.2598.0020.0002] # OLD PERMIC LETTER YER +10370 ; [.2599.0020.0002] # OLD PERMIC LETTER YERI +10371 ; [.259A.0020.0002] # OLD PERMIC LETTER YAT +10372 ; [.259B.0020.0002] # OLD PERMIC LETTER IE +10373 ; [.259C.0020.0002] # OLD PERMIC LETTER YU +10374 ; [.259D.0020.0002] # OLD PERMIC LETTER YA +10375 ; [.259E.0020.0002] # OLD PERMIC LETTER IA +10D0 ; [.259F.0020.0002] # GEORGIAN LETTER AN +1C90 ; [.259F.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER AN +2D00 ; [.25A0.0020.0002] # GEORGIAN SMALL LETTER AN +10A0 ; [.25A0.0020.0008] # GEORGIAN CAPITAL LETTER AN +10D1 ; [.25A1.0020.0002] # GEORGIAN LETTER BAN +1C91 ; [.25A1.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER BAN +2D01 ; [.25A2.0020.0002] # GEORGIAN SMALL LETTER BAN +10A1 ; [.25A2.0020.0008] # GEORGIAN CAPITAL LETTER BAN +10D2 ; [.25A3.0020.0002] # GEORGIAN LETTER GAN +1C92 ; [.25A3.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER GAN +2D02 ; [.25A4.0020.0002] # GEORGIAN SMALL LETTER GAN +10A2 ; [.25A4.0020.0008] # GEORGIAN CAPITAL LETTER GAN +10D3 ; [.25A5.0020.0002] # GEORGIAN LETTER DON +1C93 ; [.25A5.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER DON +2D03 ; [.25A6.0020.0002] # GEORGIAN SMALL LETTER DON +10A3 ; [.25A6.0020.0008] # GEORGIAN CAPITAL LETTER DON +10D4 ; [.25A7.0020.0002] # GEORGIAN LETTER EN +1C94 ; [.25A7.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER EN +2D04 ; [.25A8.0020.0002] # GEORGIAN SMALL LETTER EN +10A4 ; [.25A8.0020.0008] # GEORGIAN CAPITAL LETTER EN +10D5 ; [.25A9.0020.0002] # GEORGIAN LETTER VIN +1C95 ; [.25A9.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER VIN +2D05 ; [.25AA.0020.0002] # GEORGIAN SMALL LETTER VIN +10A5 ; [.25AA.0020.0008] # GEORGIAN CAPITAL LETTER VIN +10D6 ; [.25AB.0020.0002] # GEORGIAN LETTER ZEN +1C96 ; [.25AB.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER ZEN +2D06 ; [.25AC.0020.0002] # GEORGIAN SMALL LETTER ZEN +10A6 ; [.25AC.0020.0008] # GEORGIAN CAPITAL LETTER ZEN +10F1 ; [.25AD.0020.0002] # GEORGIAN LETTER HE +1CB1 ; [.25AD.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER HE +2D21 ; [.25AE.0020.0002] # GEORGIAN SMALL LETTER HE +10C1 ; [.25AE.0020.0008] # GEORGIAN CAPITAL LETTER HE +10D7 ; [.25AF.0020.0002] # GEORGIAN LETTER TAN +1C97 ; [.25AF.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER TAN +2D07 ; [.25B0.0020.0002] # GEORGIAN SMALL LETTER TAN +10A7 ; [.25B0.0020.0008] # GEORGIAN CAPITAL LETTER TAN +10D8 ; [.25B1.0020.0002] # GEORGIAN LETTER IN +1C98 ; [.25B1.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER IN +2D08 ; [.25B2.0020.0002] # GEORGIAN SMALL LETTER IN +10A8 ; [.25B2.0020.0008] # GEORGIAN CAPITAL LETTER IN +10D9 ; [.25B3.0020.0002] # GEORGIAN LETTER KAN +1C99 ; [.25B3.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER KAN +2D09 ; [.25B4.0020.0002] # GEORGIAN SMALL LETTER KAN +10A9 ; [.25B4.0020.0008] # GEORGIAN CAPITAL LETTER KAN +10DA ; [.25B5.0020.0002] # GEORGIAN LETTER LAS +1C9A ; [.25B5.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER LAS +2D0A ; [.25B6.0020.0002] # GEORGIAN SMALL LETTER LAS +10AA ; [.25B6.0020.0008] # GEORGIAN CAPITAL LETTER LAS +10DB ; [.25B7.0020.0002] # GEORGIAN LETTER MAN +1C9B ; [.25B7.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER MAN +2D0B ; [.25B8.0020.0002] # GEORGIAN SMALL LETTER MAN +10AB ; [.25B8.0020.0008] # GEORGIAN CAPITAL LETTER MAN +10DC ; [.25B9.0020.0002] # GEORGIAN LETTER NAR +1C9C ; [.25B9.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER NAR +10FC ; [.25B9.0020.0014] # MODIFIER LETTER GEORGIAN NAR +2D0C ; [.25BA.0020.0002] # GEORGIAN SMALL LETTER NAR +10AC ; [.25BA.0020.0008] # GEORGIAN CAPITAL LETTER NAR +10F2 ; [.25BB.0020.0002] # GEORGIAN LETTER HIE +1CB2 ; [.25BB.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER HIE +2D22 ; [.25BC.0020.0002] # GEORGIAN SMALL LETTER HIE +10C2 ; [.25BC.0020.0008] # GEORGIAN CAPITAL LETTER HIE +10DD ; [.25BD.0020.0002] # GEORGIAN LETTER ON +1C9D ; [.25BD.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER ON +2D0D ; [.25BE.0020.0002] # GEORGIAN SMALL LETTER ON +10AD ; [.25BE.0020.0008] # GEORGIAN CAPITAL LETTER ON +10DE ; [.25BF.0020.0002] # GEORGIAN LETTER PAR +1C9E ; [.25BF.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER PAR +2D0E ; [.25C0.0020.0002] # GEORGIAN SMALL LETTER PAR +10AE ; [.25C0.0020.0008] # GEORGIAN CAPITAL LETTER PAR +10DF ; [.25C1.0020.0002] # GEORGIAN LETTER ZHAR +1C9F ; [.25C1.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER ZHAR +2D0F ; [.25C2.0020.0002] # GEORGIAN SMALL LETTER ZHAR +10AF ; [.25C2.0020.0008] # GEORGIAN CAPITAL LETTER ZHAR +10E0 ; [.25C3.0020.0002] # GEORGIAN LETTER RAE +1CA0 ; [.25C3.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER RAE +2D10 ; [.25C4.0020.0002] # GEORGIAN SMALL LETTER RAE +10B0 ; [.25C4.0020.0008] # GEORGIAN CAPITAL LETTER RAE +10E1 ; [.25C5.0020.0002] # GEORGIAN LETTER SAN +1CA1 ; [.25C5.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER SAN +2D11 ; [.25C6.0020.0002] # GEORGIAN SMALL LETTER SAN +10B1 ; [.25C6.0020.0008] # GEORGIAN CAPITAL LETTER SAN +10E2 ; [.25C7.0020.0002] # GEORGIAN LETTER TAR +1CA2 ; [.25C7.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER TAR +2D12 ; [.25C8.0020.0002] # GEORGIAN SMALL LETTER TAR +10B2 ; [.25C8.0020.0008] # GEORGIAN CAPITAL LETTER TAR +10F3 ; [.25C9.0020.0002] # GEORGIAN LETTER WE +1CB3 ; [.25C9.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER WE +2D23 ; [.25CA.0020.0002] # GEORGIAN SMALL LETTER WE +10C3 ; [.25CA.0020.0008] # GEORGIAN CAPITAL LETTER WE +10E3 ; [.25CB.0020.0002] # GEORGIAN LETTER UN +1CA3 ; [.25CB.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER UN +2D13 ; [.25CC.0020.0002] # GEORGIAN SMALL LETTER UN +10B3 ; [.25CC.0020.0008] # GEORGIAN CAPITAL LETTER UN +10E4 ; [.25CD.0020.0002] # GEORGIAN LETTER PHAR +1CA4 ; [.25CD.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER PHAR +2D14 ; [.25CE.0020.0002] # GEORGIAN SMALL LETTER PHAR +10B4 ; [.25CE.0020.0008] # GEORGIAN CAPITAL LETTER PHAR +10E5 ; [.25CF.0020.0002] # GEORGIAN LETTER KHAR +1CA5 ; [.25CF.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER KHAR +2D15 ; [.25D0.0020.0002] # GEORGIAN SMALL LETTER KHAR +10B5 ; [.25D0.0020.0008] # GEORGIAN CAPITAL LETTER KHAR +10E6 ; [.25D1.0020.0002] # GEORGIAN LETTER GHAN +1CA6 ; [.25D1.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER GHAN +2D16 ; [.25D2.0020.0002] # GEORGIAN SMALL LETTER GHAN +10B6 ; [.25D2.0020.0008] # GEORGIAN CAPITAL LETTER GHAN +10E7 ; [.25D3.0020.0002] # GEORGIAN LETTER QAR +1CA7 ; [.25D3.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER QAR +2D17 ; [.25D4.0020.0002] # GEORGIAN SMALL LETTER QAR +10B7 ; [.25D4.0020.0008] # GEORGIAN CAPITAL LETTER QAR +10E8 ; [.25D5.0020.0002] # GEORGIAN LETTER SHIN +1CA8 ; [.25D5.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER SHIN +2D18 ; [.25D6.0020.0002] # GEORGIAN SMALL LETTER SHIN +10B8 ; [.25D6.0020.0008] # GEORGIAN CAPITAL LETTER SHIN +10E9 ; [.25D7.0020.0002] # GEORGIAN LETTER CHIN +1CA9 ; [.25D7.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER CHIN +2D19 ; [.25D8.0020.0002] # GEORGIAN SMALL LETTER CHIN +10B9 ; [.25D8.0020.0008] # GEORGIAN CAPITAL LETTER CHIN +10EA ; [.25D9.0020.0002] # GEORGIAN LETTER CAN +1CAA ; [.25D9.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER CAN +2D1A ; [.25DA.0020.0002] # GEORGIAN SMALL LETTER CAN +10BA ; [.25DA.0020.0008] # GEORGIAN CAPITAL LETTER CAN +10EB ; [.25DB.0020.0002] # GEORGIAN LETTER JIL +1CAB ; [.25DB.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER JIL +2D1B ; [.25DC.0020.0002] # GEORGIAN SMALL LETTER JIL +10BB ; [.25DC.0020.0008] # GEORGIAN CAPITAL LETTER JIL +10EC ; [.25DD.0020.0002] # GEORGIAN LETTER CIL +1CAC ; [.25DD.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER CIL +2D1C ; [.25DE.0020.0002] # GEORGIAN SMALL LETTER CIL +10BC ; [.25DE.0020.0008] # GEORGIAN CAPITAL LETTER CIL +10ED ; [.25DF.0020.0002] # GEORGIAN LETTER CHAR +1CAD ; [.25DF.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER CHAR +2D1D ; [.25E0.0020.0002] # GEORGIAN SMALL LETTER CHAR +10BD ; [.25E0.0020.0008] # GEORGIAN CAPITAL LETTER CHAR +10EE ; [.25E1.0020.0002] # GEORGIAN LETTER XAN +1CAE ; [.25E1.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER XAN +2D1E ; [.25E2.0020.0002] # GEORGIAN SMALL LETTER XAN +10BE ; [.25E2.0020.0008] # GEORGIAN CAPITAL LETTER XAN +10F4 ; [.25E3.0020.0002] # GEORGIAN LETTER HAR +1CB4 ; [.25E3.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER HAR +2D24 ; [.25E4.0020.0002] # GEORGIAN SMALL LETTER HAR +10C4 ; [.25E4.0020.0008] # GEORGIAN CAPITAL LETTER HAR +10EF ; [.25E5.0020.0002] # GEORGIAN LETTER JHAN +1CAF ; [.25E5.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER JHAN +2D1F ; [.25E6.0020.0002] # GEORGIAN SMALL LETTER JHAN +10BF ; [.25E6.0020.0008] # GEORGIAN CAPITAL LETTER JHAN +10F0 ; [.25E7.0020.0002] # GEORGIAN LETTER HAE +1CB0 ; [.25E7.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER HAE +2D20 ; [.25E8.0020.0002] # GEORGIAN SMALL LETTER HAE +10C0 ; [.25E8.0020.0008] # GEORGIAN CAPITAL LETTER HAE +10F5 ; [.25E9.0020.0002] # GEORGIAN LETTER HOE +1CB5 ; [.25E9.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER HOE +2D25 ; [.25EA.0020.0002] # GEORGIAN SMALL LETTER HOE +10C5 ; [.25EA.0020.0008] # GEORGIAN CAPITAL LETTER HOE +10F6 ; [.25EB.0020.0002] # GEORGIAN LETTER FI +1CB6 ; [.25EB.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER FI +10F7 ; [.25EC.0020.0002] # GEORGIAN LETTER YN +1CB7 ; [.25EC.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER YN +2D27 ; [.25ED.0020.0002] # GEORGIAN SMALL LETTER YN +10C7 ; [.25ED.0020.0008] # GEORGIAN CAPITAL LETTER YN +10F8 ; [.25EE.0020.0002] # GEORGIAN LETTER ELIFI +1CB8 ; [.25EE.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER ELIFI +10F9 ; [.25EF.0020.0002] # GEORGIAN LETTER TURNED GAN +1CB9 ; [.25EF.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER TURNED GAN +10FA ; [.25F0.0020.0002] # GEORGIAN LETTER AIN +1CBA ; [.25F0.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER AIN +10FD ; [.25F1.0020.0002] # GEORGIAN LETTER AEN +1CBD ; [.25F1.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER AEN +2D2D ; [.25F2.0020.0002] # GEORGIAN SMALL LETTER AEN +10CD ; [.25F2.0020.0008] # GEORGIAN CAPITAL LETTER AEN +10FE ; [.25F3.0020.0002] # GEORGIAN LETTER HARD SIGN +1CBE ; [.25F3.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER HARD SIGN +10FF ; [.25F4.0020.0002] # GEORGIAN LETTER LABIAL SIGN +1CBF ; [.25F4.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN +0561 ; [.25F5.0020.0002] # ARMENIAN SMALL LETTER AYB +0531 ; [.25F5.0020.0008] # ARMENIAN CAPITAL LETTER AYB +0560 ; [.25F6.0020.0002] # ARMENIAN SMALL LETTER TURNED AYB +0562 ; [.25F7.0020.0002] # ARMENIAN SMALL LETTER BEN +0532 ; [.25F7.0020.0008] # ARMENIAN CAPITAL LETTER BEN +0563 ; [.25F8.0020.0002] # ARMENIAN SMALL LETTER GIM +0533 ; [.25F8.0020.0008] # ARMENIAN CAPITAL LETTER GIM +0564 ; [.25F9.0020.0002] # ARMENIAN SMALL LETTER DA +0534 ; [.25F9.0020.0008] # ARMENIAN CAPITAL LETTER DA +0565 ; [.25FA.0020.0002] # ARMENIAN SMALL LETTER ECH +0535 ; [.25FA.0020.0008] # ARMENIAN CAPITAL LETTER ECH +0587 ; [.25FA.0020.0004][.2618.0020.0004] # ARMENIAN SMALL LIGATURE ECH YIWN +0566 ; [.25FB.0020.0002] # ARMENIAN SMALL LETTER ZA +0536 ; [.25FB.0020.0008] # ARMENIAN CAPITAL LETTER ZA +0567 ; [.25FC.0020.0002] # ARMENIAN SMALL LETTER EH +0537 ; [.25FC.0020.0008] # ARMENIAN CAPITAL LETTER EH +0568 ; [.25FD.0020.0002] # ARMENIAN SMALL LETTER ET +0538 ; [.25FD.0020.0008] # ARMENIAN CAPITAL LETTER ET +0569 ; [.25FE.0020.0002] # ARMENIAN SMALL LETTER TO +0539 ; [.25FE.0020.0008] # ARMENIAN CAPITAL LETTER TO +056A ; [.25FF.0020.0002] # ARMENIAN SMALL LETTER ZHE +053A ; [.25FF.0020.0008] # ARMENIAN CAPITAL LETTER ZHE +056B ; [.2600.0020.0002] # ARMENIAN SMALL LETTER INI +053B ; [.2600.0020.0008] # ARMENIAN CAPITAL LETTER INI +056C ; [.2601.0020.0002] # ARMENIAN SMALL LETTER LIWN +053C ; [.2601.0020.0008] # ARMENIAN CAPITAL LETTER LIWN +056D ; [.2602.0020.0002] # ARMENIAN SMALL LETTER XEH +053D ; [.2602.0020.0008] # ARMENIAN CAPITAL LETTER XEH +056E ; [.2603.0020.0002] # ARMENIAN SMALL LETTER CA +053E ; [.2603.0020.0008] # ARMENIAN CAPITAL LETTER CA +056F ; [.2604.0020.0002] # ARMENIAN SMALL LETTER KEN +053F ; [.2604.0020.0008] # ARMENIAN CAPITAL LETTER KEN +0570 ; [.2605.0020.0002] # ARMENIAN SMALL LETTER HO +0540 ; [.2605.0020.0008] # ARMENIAN CAPITAL LETTER HO +0571 ; [.2606.0020.0002] # ARMENIAN SMALL LETTER JA +0541 ; [.2606.0020.0008] # ARMENIAN CAPITAL LETTER JA +0572 ; [.2607.0020.0002] # ARMENIAN SMALL LETTER GHAD +0542 ; [.2607.0020.0008] # ARMENIAN CAPITAL LETTER GHAD +0573 ; [.2608.0020.0002] # ARMENIAN SMALL LETTER CHEH +0543 ; [.2608.0020.0008] # ARMENIAN CAPITAL LETTER CHEH +0574 ; [.2609.0020.0002] # ARMENIAN SMALL LETTER MEN +0544 ; [.2609.0020.0008] # ARMENIAN CAPITAL LETTER MEN +FB14 ; [.2609.0020.0004][.25FA.0020.0004] # ARMENIAN SMALL LIGATURE MEN ECH +FB15 ; [.2609.0020.0004][.2600.0020.0004] # ARMENIAN SMALL LIGATURE MEN INI +FB17 ; [.2609.0020.0004][.2602.0020.0004] # ARMENIAN SMALL LIGATURE MEN XEH +FB13 ; [.2609.0020.0004][.260C.0020.0004] # ARMENIAN SMALL LIGATURE MEN NOW +0575 ; [.260A.0020.0002] # ARMENIAN SMALL LETTER YI +0545 ; [.260A.0020.0008] # ARMENIAN CAPITAL LETTER YI +0588 ; [.260B.0020.0002] # ARMENIAN SMALL LETTER YI WITH STROKE +0576 ; [.260C.0020.0002] # ARMENIAN SMALL LETTER NOW +0546 ; [.260C.0020.0008] # ARMENIAN CAPITAL LETTER NOW +0577 ; [.260D.0020.0002] # ARMENIAN SMALL LETTER SHA +0547 ; [.260D.0020.0008] # ARMENIAN CAPITAL LETTER SHA +0578 ; [.260E.0020.0002] # ARMENIAN SMALL LETTER VO +0548 ; [.260E.0020.0008] # ARMENIAN CAPITAL LETTER VO +0579 ; [.260F.0020.0002] # ARMENIAN SMALL LETTER CHA +0549 ; [.260F.0020.0008] # ARMENIAN CAPITAL LETTER CHA +057A ; [.2610.0020.0002] # ARMENIAN SMALL LETTER PEH +054A ; [.2610.0020.0008] # ARMENIAN CAPITAL LETTER PEH +057B ; [.2611.0020.0002] # ARMENIAN SMALL LETTER JHEH +054B ; [.2611.0020.0008] # ARMENIAN CAPITAL LETTER JHEH +057C ; [.2612.0020.0002] # ARMENIAN SMALL LETTER RA +054C ; [.2612.0020.0008] # ARMENIAN CAPITAL LETTER RA +057D ; [.2613.0020.0002] # ARMENIAN SMALL LETTER SEH +054D ; [.2613.0020.0008] # ARMENIAN CAPITAL LETTER SEH +057E ; [.2614.0020.0002] # ARMENIAN SMALL LETTER VEW +054E ; [.2614.0020.0008] # ARMENIAN CAPITAL LETTER VEW +FB16 ; [.2614.0020.0004][.260C.0020.0004] # ARMENIAN SMALL LIGATURE VEW NOW +057F ; [.2615.0020.0002] # ARMENIAN SMALL LETTER TIWN +054F ; [.2615.0020.0008] # ARMENIAN CAPITAL LETTER TIWN +0580 ; [.2616.0020.0002] # ARMENIAN SMALL LETTER REH +0550 ; [.2616.0020.0008] # ARMENIAN CAPITAL LETTER REH +0581 ; [.2617.0020.0002] # ARMENIAN SMALL LETTER CO +0551 ; [.2617.0020.0008] # ARMENIAN CAPITAL LETTER CO +0582 ; [.2618.0020.0002] # ARMENIAN SMALL LETTER YIWN +0552 ; [.2618.0020.0008] # ARMENIAN CAPITAL LETTER YIWN +0583 ; [.2619.0020.0002] # ARMENIAN SMALL LETTER PIWR +0553 ; [.2619.0020.0008] # ARMENIAN CAPITAL LETTER PIWR +0584 ; [.261A.0020.0002] # ARMENIAN SMALL LETTER KEH +0554 ; [.261A.0020.0008] # ARMENIAN CAPITAL LETTER KEH +0585 ; [.261B.0020.0002] # ARMENIAN SMALL LETTER OH +0555 ; [.261B.0020.0008] # ARMENIAN CAPITAL LETTER OH +0586 ; [.261C.0020.0002] # ARMENIAN SMALL LETTER FEH +0556 ; [.261C.0020.0008] # ARMENIAN CAPITAL LETTER FEH +0559 ; [.261D.0020.0002] # ARMENIAN MODIFIER LETTER LEFT HALF RING +05D0 ; [.261E.0020.0002] # HEBREW LETTER ALEF +2135 ; [.261E.0020.0004] # ALEF SYMBOL +FB21 ; [.261E.0020.0005] # HEBREW LETTER WIDE ALEF +FB2E ; [.261E.0020.0002][.0000.0059.0002] # HEBREW LETTER ALEF WITH PATAH +FB2F ; [.261E.0020.0002][.0000.005A.0002] # HEBREW LETTER ALEF WITH QAMATS +FB30 ; [.261E.0020.0002][.0000.005F.0002] # HEBREW LETTER ALEF WITH MAPIQ +FB4F ; [.261E.0020.0004][.2629.0020.0004] # HEBREW LIGATURE ALEF LAMED +05D1 ; [.261F.0020.0002] # HEBREW LETTER BET +2136 ; [.261F.0020.0004] # BET SYMBOL +FB31 ; [.261F.0020.0002][.0000.005F.0002] # HEBREW LETTER BET WITH DAGESH +FB4C ; [.261F.0020.0002][.0000.0060.0002] # HEBREW LETTER BET WITH RAFE +05D2 ; [.2620.0020.0002] # HEBREW LETTER GIMEL +2137 ; [.2620.0020.0004] # GIMEL SYMBOL +FB32 ; [.2620.0020.0002][.0000.005F.0002] # HEBREW LETTER GIMEL WITH DAGESH +05D3 ; [.2621.0020.0002] # HEBREW LETTER DALET +2138 ; [.2621.0020.0004] # DALET SYMBOL +FB22 ; [.2621.0020.0005] # HEBREW LETTER WIDE DALET +FB33 ; [.2621.0020.0002][.0000.005F.0002] # HEBREW LETTER DALET WITH DAGESH +05D4 ; [.2622.0020.0002] # HEBREW LETTER HE +FB23 ; [.2622.0020.0005] # HEBREW LETTER WIDE HE +FB34 ; [.2622.0020.0002][.0000.005F.0002] # HEBREW LETTER HE WITH MAPIQ +05D5 ; [.2623.0020.0002] # HEBREW LETTER VAV +FB4B ; [.2623.0020.0002][.0000.005B.0002] # HEBREW LETTER VAV WITH HOLAM +FB35 ; [.2623.0020.0002][.0000.005F.0002] # HEBREW LETTER VAV WITH DAGESH +05F0 ; [.2623.0020.0004][.2623.0020.0004] # HEBREW LIGATURE YIDDISH DOUBLE VAV +05F1 ; [.2623.0020.0004][.2627.0020.0004] # HEBREW LIGATURE YIDDISH VAV YOD +05D6 ; [.2624.0020.0002] # HEBREW LETTER ZAYIN +FB36 ; [.2624.0020.0002][.0000.005F.0002] # HEBREW LETTER ZAYIN WITH DAGESH +05D7 ; [.2625.0020.0002] # HEBREW LETTER HET +05D8 ; [.2626.0020.0002] # HEBREW LETTER TET +FB38 ; [.2626.0020.0002][.0000.005F.0002] # HEBREW LETTER TET WITH DAGESH +05D9 ; [.2627.0020.0002] # HEBREW LETTER YOD +FB1D ; [.2627.0020.0002][.0000.0056.0002] # HEBREW LETTER YOD WITH HIRIQ +FB39 ; [.2627.0020.0002][.0000.005F.0002] # HEBREW LETTER YOD WITH DAGESH +05EF ; [.2627.0020.0004][.2622.0020.0004][.2623.0020.0004][.2622.0020.0004] # HEBREW YOD TRIANGLE +05F2 ; [.2627.0020.0004][.2627.0020.0004] # HEBREW LIGATURE YIDDISH DOUBLE YOD +FB1F ; [.2627.0020.0004][.2627.0020.0004][.0000.0059.0002] # HEBREW LIGATURE YIDDISH YOD YOD PATAH +05DB ; [.2628.0020.0002] # HEBREW LETTER KAF +FB24 ; [.2628.0020.0005] # HEBREW LETTER WIDE KAF +05DA ; [.2628.0020.0019] # HEBREW LETTER FINAL KAF +FB3B ; [.2628.0020.0002][.0000.005F.0002] # HEBREW LETTER KAF WITH DAGESH +FB3A ; [.2628.0020.0019][.0000.005F.0002] # HEBREW LETTER FINAL KAF WITH DAGESH +FB4D ; [.2628.0020.0002][.0000.0060.0002] # HEBREW LETTER KAF WITH RAFE +05DC ; [.2629.0020.0002] # HEBREW LETTER LAMED +FB25 ; [.2629.0020.0005] # HEBREW LETTER WIDE LAMED +FB3C ; [.2629.0020.0002][.0000.005F.0002] # HEBREW LETTER LAMED WITH DAGESH +05DE ; [.262A.0020.0002] # HEBREW LETTER MEM +FB26 ; [.262A.0020.0005] # HEBREW LETTER WIDE FINAL MEM +05DD ; [.262A.0020.0019] # HEBREW LETTER FINAL MEM +FB3E ; [.262A.0020.0002][.0000.005F.0002] # HEBREW LETTER MEM WITH DAGESH +05E0 ; [.262B.0020.0002] # HEBREW LETTER NUN +05DF ; [.262B.0020.0019] # HEBREW LETTER FINAL NUN +FB40 ; [.262B.0020.0002][.0000.005F.0002] # HEBREW LETTER NUN WITH DAGESH +05E1 ; [.262C.0020.0002] # HEBREW LETTER SAMEKH +FB41 ; [.262C.0020.0002][.0000.005F.0002] # HEBREW LETTER SAMEKH WITH DAGESH +05E2 ; [.262D.0020.0002] # HEBREW LETTER AYIN +FB20 ; [.262D.0020.0005] # HEBREW LETTER ALTERNATIVE AYIN +05E4 ; [.262E.0020.0002] # HEBREW LETTER PE +05E3 ; [.262E.0020.0019] # HEBREW LETTER FINAL PE +FB44 ; [.262E.0020.0002][.0000.005F.0002] # HEBREW LETTER PE WITH DAGESH +FB43 ; [.262E.0020.0019][.0000.005F.0002] # HEBREW LETTER FINAL PE WITH DAGESH +FB4E ; [.262E.0020.0002][.0000.0060.0002] # HEBREW LETTER PE WITH RAFE +05E6 ; [.262F.0020.0002] # HEBREW LETTER TSADI +05E5 ; [.262F.0020.0019] # HEBREW LETTER FINAL TSADI +FB46 ; [.262F.0020.0002][.0000.005F.0002] # HEBREW LETTER TSADI WITH DAGESH +05E7 ; [.2630.0020.0002] # HEBREW LETTER QOF +FB47 ; [.2630.0020.0002][.0000.005F.0002] # HEBREW LETTER QOF WITH DAGESH +05E8 ; [.2631.0020.0002] # HEBREW LETTER RESH +FB27 ; [.2631.0020.0005] # HEBREW LETTER WIDE RESH +FB48 ; [.2631.0020.0002][.0000.005F.0002] # HEBREW LETTER RESH WITH DAGESH +05E9 ; [.2632.0020.0002] # HEBREW LETTER SHIN +FB2B ; [.2632.0020.0002][.0000.005D.0002] # HEBREW LETTER SHIN WITH SIN DOT +FB2A ; [.2632.0020.0002][.0000.005E.0002] # HEBREW LETTER SHIN WITH SHIN DOT +FB49 ; [.2632.0020.0002][.0000.005F.0002] # HEBREW LETTER SHIN WITH DAGESH +FB2D ; [.2632.0020.0002][.0000.005F.0002][.0000.005D.0002] # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT +FB2C ; [.2632.0020.0002][.0000.005F.0002][.0000.005E.0002] # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT +05EA ; [.2633.0020.0002] # HEBREW LETTER TAV +FB28 ; [.2633.0020.0005] # HEBREW LETTER WIDE TAV +FB4A ; [.2633.0020.0002][.0000.005F.0002] # HEBREW LETTER TAV WITH DAGESH +10900 ; [.2634.0020.0002] # PHOENICIAN LETTER ALF +10901 ; [.2635.0020.0002] # PHOENICIAN LETTER BET +10902 ; [.2636.0020.0002] # PHOENICIAN LETTER GAML +10903 ; [.2637.0020.0002] # PHOENICIAN LETTER DELT +10904 ; [.2638.0020.0002] # PHOENICIAN LETTER HE +10905 ; [.2639.0020.0002] # PHOENICIAN LETTER WAU +10906 ; [.263A.0020.0002] # PHOENICIAN LETTER ZAI +10907 ; [.263B.0020.0002] # PHOENICIAN LETTER HET +10908 ; [.263C.0020.0002] # PHOENICIAN LETTER TET +10909 ; [.263D.0020.0002] # PHOENICIAN LETTER YOD +1090A ; [.263E.0020.0002] # PHOENICIAN LETTER KAF +1090B ; [.263F.0020.0002] # PHOENICIAN LETTER LAMD +1090C ; [.2640.0020.0002] # PHOENICIAN LETTER MEM +1090D ; [.2641.0020.0002] # PHOENICIAN LETTER NUN +1090E ; [.2642.0020.0002] # PHOENICIAN LETTER SEMK +1090F ; [.2643.0020.0002] # PHOENICIAN LETTER AIN +10910 ; [.2644.0020.0002] # PHOENICIAN LETTER PE +10911 ; [.2645.0020.0002] # PHOENICIAN LETTER SADE +10912 ; [.2646.0020.0002] # PHOENICIAN LETTER QOF +10913 ; [.2647.0020.0002] # PHOENICIAN LETTER ROSH +10914 ; [.2648.0020.0002] # PHOENICIAN LETTER SHIN +10915 ; [.2649.0020.0002] # PHOENICIAN LETTER TAU +0800 ; [.264A.0020.0002] # SAMARITAN LETTER ALAF +0801 ; [.264B.0020.0002] # SAMARITAN LETTER BIT +0802 ; [.264C.0020.0002] # SAMARITAN LETTER GAMAN +0803 ; [.264D.0020.0002] # SAMARITAN LETTER DALAT +0804 ; [.264E.0020.0002] # SAMARITAN LETTER IY +0805 ; [.264F.0020.0002] # SAMARITAN LETTER BAA +0806 ; [.2650.0020.0002] # SAMARITAN LETTER ZEN +0807 ; [.2651.0020.0002] # SAMARITAN LETTER IT +0808 ; [.2652.0020.0002] # SAMARITAN LETTER TIT +0809 ; [.2653.0020.0002] # SAMARITAN LETTER YUT +080A ; [.2654.0020.0002] # SAMARITAN LETTER KAAF +080B ; [.2655.0020.0002] # SAMARITAN LETTER LABAT +080C ; [.2656.0020.0002] # SAMARITAN LETTER MIM +080D ; [.2657.0020.0002] # SAMARITAN LETTER NUN +080E ; [.2658.0020.0002] # SAMARITAN LETTER SINGAAT +080F ; [.2659.0020.0002] # SAMARITAN LETTER IN +0810 ; [.265A.0020.0002] # SAMARITAN LETTER FI +0811 ; [.265B.0020.0002] # SAMARITAN LETTER TSAADIY +0812 ; [.265C.0020.0002] # SAMARITAN LETTER QUF +0813 ; [.265D.0020.0002] # SAMARITAN LETTER RISH +0814 ; [.265E.0020.0002] # SAMARITAN LETTER SHAN +0815 ; [.265F.0020.0002] # SAMARITAN LETTER TAAF +0816 ; [.2660.0020.0002] # SAMARITAN MARK IN +0817 ; [.2661.0020.0002] # SAMARITAN MARK IN-ALAF +081A ; [.2662.0020.0002] # SAMARITAN MODIFIER LETTER EPENTHETIC YUT +081B ; [.2663.0020.0002] # SAMARITAN MARK EPENTHETIC YUT +0621 ; [.2664.0020.0002] # ARABIC LETTER HAMZA +0674 ; [.2664.0020.0004] # ARABIC LETTER HIGH HAMZA +FE80 ; [.2664.0020.001A] # ARABIC LETTER HAMZA ISOLATED FORM +06FD ; [.2664.0020.0004][.0000.0119.0004] # ARABIC SIGN SINDHI AMPERSAND +0622 ; [.2665.0020.0002] # ARABIC LETTER ALEF WITH MADDA ABOVE +0627 0653 ; [.2665.0020.0002] # ARABIC LETTER ALEF WITH MADDA ABOVE +FE82 ; [.2665.0020.0019] # ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM +FE81 ; [.2665.0020.001A] # ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM +0623 ; [.2666.0020.0002] # ARABIC LETTER ALEF WITH HAMZA ABOVE +0627 0654 ; [.2666.0020.0002] # ARABIC LETTER ALEF WITH HAMZA ABOVE +FE84 ; [.2666.0020.0019] # ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM +FE83 ; [.2666.0020.001A] # ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM +0672 ; [.2667.0020.0002] # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE +0671 ; [.2668.0020.0002] # ARABIC LETTER ALEF WASLA +FB51 ; [.2668.0020.0019] # ARABIC LETTER ALEF WASLA FINAL FORM +FB50 ; [.2668.0020.001A] # ARABIC LETTER ALEF WASLA ISOLATED FORM +0624 ; [.2669.0020.0002] # ARABIC LETTER WAW WITH HAMZA ABOVE +0648 0654 ; [.2669.0020.0002] # ARABIC LETTER WAW WITH HAMZA ABOVE +FE86 ; [.2669.0020.0019] # ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM +FE85 ; [.2669.0020.001A] # ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM +0625 ; [.266A.0020.0002] # ARABIC LETTER ALEF WITH HAMZA BELOW +0627 0655 ; [.266A.0020.0002] # ARABIC LETTER ALEF WITH HAMZA BELOW +FE88 ; [.266A.0020.0019] # ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM +FE87 ; [.266A.0020.001A] # ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM +0673 ; [.266B.0020.0002] # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW +0773 ; [.266C.0020.0002] # ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE +0774 ; [.266D.0020.0002] # ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE +0626 ; [.266E.0020.0002] # ARABIC LETTER YEH WITH HAMZA ABOVE +064A 0654 ; [.266E.0020.0002] # ARABIC LETTER YEH WITH HAMZA ABOVE +FE8B ; [.266E.0020.0017] # ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM +FE8C ; [.266E.0020.0018] # ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM +FE8A ; [.266E.0020.0019] # ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM +FE89 ; [.266E.0020.001A] # ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM +FBEB ; [.266E.0020.0019][.2672.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM +FBEA ; [.266E.0020.001A][.2672.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM +FC97 ; [.266E.0020.0017][.268F.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM +FC00 ; [.266E.0020.001A][.268F.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM +FC98 ; [.266E.0020.0017][.2699.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM +FC01 ; [.266E.0020.001A][.2699.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM +FC99 ; [.266E.0020.0017][.269A.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM +FC64 ; [.266E.0020.0019][.26B3.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM +FC65 ; [.266E.0020.0019][.26B4.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM +FC9A ; [.266E.0020.0017][.2714.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM +FCDF ; [.266E.0020.0018][.2714.0020.0018] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM +FC66 ; [.266E.0020.0019][.2714.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM +FC02 ; [.266E.0020.001A][.2714.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM +FC67 ; [.266E.0020.0019][.2718.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM +FC9B ; [.266E.0020.0017][.2722.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM +FCE0 ; [.266E.0020.0018][.2722.0020.0018] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM +FBED ; [.266E.0020.0019][.2727.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM +FBEC ; [.266E.0020.001A][.2727.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM +FBEF ; [.266E.0020.0019][.2728.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM +FBEE ; [.266E.0020.001A][.2728.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM +FBF3 ; [.266E.0020.0019][.272B.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM +FBF2 ; [.266E.0020.001A][.272B.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM +FBF1 ; [.266E.0020.0019][.272C.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM +FBF0 ; [.266E.0020.001A][.272C.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM +FBF5 ; [.266E.0020.0019][.272D.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM +FBF4 ; [.266E.0020.001A][.272D.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM +FBFB ; [.266E.0020.0017][.2736.0020.0017] # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM +FBFA ; [.266E.0020.0019][.2736.0020.0019] # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM +FC68 ; [.266E.0020.0019][.2736.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM +FBF9 ; [.266E.0020.001A][.2736.0020.001A] # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM +FC03 ; [.266E.0020.001A][.2736.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM +FC69 ; [.266E.0020.0019][.2737.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM +FC04 ; [.266E.0020.001A][.2737.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM +FBF8 ; [.266E.0020.0017][.273B.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM +FBF7 ; [.266E.0020.0019][.273B.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM +FBF6 ; [.266E.0020.001A][.273B.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM +08A8 ; [.266F.0020.0002] # ARABIC LETTER YEH WITH TWO DOTS BELOW AND HAMZA ABOVE +08A9 ; [.2670.0020.0002] # ARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVE +08AC ; [.2671.0020.0002] # ARABIC LETTER ROHINGYA YEH +0627 ; [.2672.0020.0002] # ARABIC LETTER ALEF +08AD ; [.2672.0020.0004] # ARABIC LETTER LOW ALEF +1EE00 ; [.2672.0020.0005] # ARABIC MATHEMATICAL ALEF +1EE80 ; [.2672.0020.0005] # ARABIC MATHEMATICAL LOOPED ALEF +FE8E ; [.2672.0020.0019] # ARABIC LETTER ALEF FINAL FORM +FE8D ; [.2672.0020.001A] # ARABIC LETTER ALEF ISOLATED FORM +FD3C ; [.2672.0020.0019][.0000.006D.0019] # ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM +FD3D ; [.2672.0020.001A][.0000.006D.001A] # ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM +0675 ; [.2672.0020.0004][.2664.0020.0004] # ARABIC LETTER HIGH HAMZA ALEF +FDF3 ; [.2672.0020.001A][.26F6.0020.001A][.2674.0020.001A][.26B3.0020.001A] # ARABIC LIGATURE AKBAR ISOLATED FORM +FDF2 ; [.2672.0020.001A][.270C.0020.001A][.270C.0020.001A][.2722.0020.001A] # ARABIC LIGATURE ALLAH ISOLATED FORM +066E ; [.2673.0020.0002] # ARABIC LETTER DOTLESS BEH +1EE1C ; [.2673.0020.0005] # ARABIC MATHEMATICAL DOTLESS BEH +1EE7C ; [.2673.0020.0005] # ARABIC MATHEMATICAL STRETCHED DOTLESS BEH +0628 ; [.2674.0020.0002] # ARABIC LETTER BEH +1EE01 ; [.2674.0020.0005] # ARABIC MATHEMATICAL BEH +1EE21 ; [.2674.0020.0005] # ARABIC MATHEMATICAL INITIAL BEH +1EE61 ; [.2674.0020.0005] # ARABIC MATHEMATICAL STRETCHED BEH +1EE81 ; [.2674.0020.0005] # ARABIC MATHEMATICAL LOOPED BEH +1EEA1 ; [.2674.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK BEH +FE91 ; [.2674.0020.0017] # ARABIC LETTER BEH INITIAL FORM +FE92 ; [.2674.0020.0018] # ARABIC LETTER BEH MEDIAL FORM +FE90 ; [.2674.0020.0019] # ARABIC LETTER BEH FINAL FORM +FE8F ; [.2674.0020.001A] # ARABIC LETTER BEH ISOLATED FORM +FC9C ; [.2674.0020.0017][.268F.0020.0017] # ARABIC LIGATURE BEH WITH JEEM INITIAL FORM +FC05 ; [.2674.0020.001A][.268F.0020.001A] # ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM +FC9D ; [.2674.0020.0017][.2699.0020.0017] # ARABIC LIGATURE BEH WITH HAH INITIAL FORM +FC06 ; [.2674.0020.001A][.2699.0020.001A] # ARABIC LIGATURE BEH WITH HAH ISOLATED FORM +FDC2 ; [.2674.0020.0019][.2699.0020.0019][.2737.0020.0019] # ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM +FC9E ; [.2674.0020.0017][.269A.0020.0017] # ARABIC LIGATURE BEH WITH KHAH INITIAL FORM +FC07 ; [.2674.0020.001A][.269A.0020.001A] # ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM +FD9E ; [.2674.0020.0019][.269A.0020.0019][.2737.0020.0019] # ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM +FC6A ; [.2674.0020.0019][.26B3.0020.0019] # ARABIC LIGATURE BEH WITH REH FINAL FORM +FC6B ; [.2674.0020.0019][.26B4.0020.0019] # ARABIC LIGATURE BEH WITH ZAIN FINAL FORM +FC9F ; [.2674.0020.0017][.2714.0020.0017] # ARABIC LIGATURE BEH WITH MEEM INITIAL FORM +FCE1 ; [.2674.0020.0018][.2714.0020.0018] # ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM +FC6C ; [.2674.0020.0019][.2714.0020.0019] # ARABIC LIGATURE BEH WITH MEEM FINAL FORM +FC08 ; [.2674.0020.001A][.2714.0020.001A] # ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM +FC6D ; [.2674.0020.0019][.2718.0020.0019] # ARABIC LIGATURE BEH WITH NOON FINAL FORM +FCA0 ; [.2674.0020.0017][.2722.0020.0017] # ARABIC LIGATURE BEH WITH HEH INITIAL FORM +FCE2 ; [.2674.0020.0018][.2722.0020.0018] # ARABIC LIGATURE BEH WITH HEH MEDIAL FORM +FC6E ; [.2674.0020.0019][.2736.0020.0019] # ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM +FC09 ; [.2674.0020.001A][.2736.0020.001A] # ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM +FC6F ; [.2674.0020.0019][.2737.0020.0019] # ARABIC LIGATURE BEH WITH YEH FINAL FORM +FC0A ; [.2674.0020.001A][.2737.0020.001A] # ARABIC LIGATURE BEH WITH YEH ISOLATED FORM +067B ; [.2675.0020.0002] # ARABIC LETTER BEEH +FB54 ; [.2675.0020.0017] # ARABIC LETTER BEEH INITIAL FORM +FB55 ; [.2675.0020.0018] # ARABIC LETTER BEEH MEDIAL FORM +FB53 ; [.2675.0020.0019] # ARABIC LETTER BEEH FINAL FORM +FB52 ; [.2675.0020.001A] # ARABIC LETTER BEEH ISOLATED FORM +067E ; [.2676.0020.0002] # ARABIC LETTER PEH +FB58 ; [.2676.0020.0017] # ARABIC LETTER PEH INITIAL FORM +FB59 ; [.2676.0020.0018] # ARABIC LETTER PEH MEDIAL FORM +FB57 ; [.2676.0020.0019] # ARABIC LETTER PEH FINAL FORM +FB56 ; [.2676.0020.001A] # ARABIC LETTER PEH ISOLATED FORM +0680 ; [.2677.0020.0002] # ARABIC LETTER BEHEH +FB5C ; [.2677.0020.0017] # ARABIC LETTER BEHEH INITIAL FORM +FB5D ; [.2677.0020.0018] # ARABIC LETTER BEHEH MEDIAL FORM +FB5B ; [.2677.0020.0019] # ARABIC LETTER BEHEH FINAL FORM +FB5A ; [.2677.0020.001A] # ARABIC LETTER BEHEH ISOLATED FORM +0750 ; [.2678.0020.0002] # ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW +0751 ; [.2679.0020.0002] # ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE +0752 ; [.267A.0020.0002] # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW +0753 ; [.267B.0020.0002] # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE +0754 ; [.267C.0020.0002] # ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE +0755 ; [.267D.0020.0002] # ARABIC LETTER BEH WITH INVERTED SMALL V BELOW +08A0 ; [.267E.0020.0002] # ARABIC LETTER BEH WITH SMALL V BELOW +0756 ; [.267F.0020.0002] # ARABIC LETTER BEH WITH SMALL V +08BE ; [.2680.0020.0002] # ARABIC LETTER PEH WITH SMALL V +08A1 ; [.2681.0020.0002] # ARABIC LETTER BEH WITH HAMZA ABOVE +08B6 ; [.2682.0020.0002] # ARABIC LETTER BEH WITH SMALL MEEM ABOVE +08B7 ; [.2683.0020.0002] # ARABIC LETTER PEH WITH SMALL MEEM ABOVE +0629 ; [.2684.0020.0002] # ARABIC LETTER TEH MARBUTA +FE94 ; [.2684.0020.0019] # ARABIC LETTER TEH MARBUTA FINAL FORM +FE93 ; [.2684.0020.001A] # ARABIC LETTER TEH MARBUTA ISOLATED FORM +062A ; [.2685.0020.0002] # ARABIC LETTER TEH +1EE15 ; [.2685.0020.0005] # ARABIC MATHEMATICAL TEH +1EE35 ; [.2685.0020.0005] # ARABIC MATHEMATICAL INITIAL TEH +1EE75 ; [.2685.0020.0005] # ARABIC MATHEMATICAL STRETCHED TEH +1EE95 ; [.2685.0020.0005] # ARABIC MATHEMATICAL LOOPED TEH +1EEB5 ; [.2685.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK TEH +FE97 ; [.2685.0020.0017] # ARABIC LETTER TEH INITIAL FORM +FE98 ; [.2685.0020.0018] # ARABIC LETTER TEH MEDIAL FORM +FE96 ; [.2685.0020.0019] # ARABIC LETTER TEH FINAL FORM +FE95 ; [.2685.0020.001A] # ARABIC LETTER TEH ISOLATED FORM +FCA1 ; [.2685.0020.0017][.268F.0020.0017] # ARABIC LIGATURE TEH WITH JEEM INITIAL FORM +FC0B ; [.2685.0020.001A][.268F.0020.001A] # ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM +FD50 ; [.2685.0020.0017][.268F.0020.0017][.2714.0020.0017] # ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM +FDA0 ; [.2685.0020.0019][.268F.0020.0019][.2736.0020.0019] # ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM +FD9F ; [.2685.0020.0019][.268F.0020.0019][.2737.0020.0019] # ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM +FCA2 ; [.2685.0020.0017][.2699.0020.0017] # ARABIC LIGATURE TEH WITH HAH INITIAL FORM +FC0C ; [.2685.0020.001A][.2699.0020.001A] # ARABIC LIGATURE TEH WITH HAH ISOLATED FORM +FD52 ; [.2685.0020.0017][.2699.0020.0017][.268F.0020.0017] # ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM +FD51 ; [.2685.0020.0019][.2699.0020.0019][.268F.0020.0019] # ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM +FD53 ; [.2685.0020.0017][.2699.0020.0017][.2714.0020.0017] # ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM +FCA3 ; [.2685.0020.0017][.269A.0020.0017] # ARABIC LIGATURE TEH WITH KHAH INITIAL FORM +FC0D ; [.2685.0020.001A][.269A.0020.001A] # ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM +FD54 ; [.2685.0020.0017][.269A.0020.0017][.2714.0020.0017] # ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM +FDA2 ; [.2685.0020.0019][.269A.0020.0019][.2736.0020.0019] # ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM +FDA1 ; [.2685.0020.0019][.269A.0020.0019][.2737.0020.0019] # ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM +FC70 ; [.2685.0020.0019][.26B3.0020.0019] # ARABIC LIGATURE TEH WITH REH FINAL FORM +FC71 ; [.2685.0020.0019][.26B4.0020.0019] # ARABIC LIGATURE TEH WITH ZAIN FINAL FORM +FCA4 ; [.2685.0020.0017][.2714.0020.0017] # ARABIC LIGATURE TEH WITH MEEM INITIAL FORM +FCE3 ; [.2685.0020.0018][.2714.0020.0018] # ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM +FC72 ; [.2685.0020.0019][.2714.0020.0019] # ARABIC LIGATURE TEH WITH MEEM FINAL FORM +FC0E ; [.2685.0020.001A][.2714.0020.001A] # ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM +FD55 ; [.2685.0020.0017][.2714.0020.0017][.268F.0020.0017] # ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM +FD56 ; [.2685.0020.0017][.2714.0020.0017][.2699.0020.0017] # ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM +FD57 ; [.2685.0020.0017][.2714.0020.0017][.269A.0020.0017] # ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM +FDA4 ; [.2685.0020.0019][.2714.0020.0019][.2736.0020.0019] # ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM +FDA3 ; [.2685.0020.0019][.2714.0020.0019][.2737.0020.0019] # ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM +FC73 ; [.2685.0020.0019][.2718.0020.0019] # ARABIC LIGATURE TEH WITH NOON FINAL FORM +FCA5 ; [.2685.0020.0017][.2722.0020.0017] # ARABIC LIGATURE TEH WITH HEH INITIAL FORM +FCE4 ; [.2685.0020.0018][.2722.0020.0018] # ARABIC LIGATURE TEH WITH HEH MEDIAL FORM +FC74 ; [.2685.0020.0019][.2736.0020.0019] # ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM +FC0F ; [.2685.0020.001A][.2736.0020.001A] # ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM +FC75 ; [.2685.0020.0019][.2737.0020.0019] # ARABIC LIGATURE TEH WITH YEH FINAL FORM +FC10 ; [.2685.0020.001A][.2737.0020.001A] # ARABIC LIGATURE TEH WITH YEH ISOLATED FORM +062B ; [.2686.0020.0002] # ARABIC LETTER THEH +1EE16 ; [.2686.0020.0005] # ARABIC MATHEMATICAL THEH +1EE36 ; [.2686.0020.0005] # ARABIC MATHEMATICAL INITIAL THEH +1EE76 ; [.2686.0020.0005] # ARABIC MATHEMATICAL STRETCHED THEH +1EE96 ; [.2686.0020.0005] # ARABIC MATHEMATICAL LOOPED THEH +1EEB6 ; [.2686.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK THEH +FE9B ; [.2686.0020.0017] # ARABIC LETTER THEH INITIAL FORM +FE9C ; [.2686.0020.0018] # ARABIC LETTER THEH MEDIAL FORM +FE9A ; [.2686.0020.0019] # ARABIC LETTER THEH FINAL FORM +FE99 ; [.2686.0020.001A] # ARABIC LETTER THEH ISOLATED FORM +FC11 ; [.2686.0020.001A][.268F.0020.001A] # ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM +FC76 ; [.2686.0020.0019][.26B3.0020.0019] # ARABIC LIGATURE THEH WITH REH FINAL FORM +FC77 ; [.2686.0020.0019][.26B4.0020.0019] # ARABIC LIGATURE THEH WITH ZAIN FINAL FORM +FCA6 ; [.2686.0020.0017][.2714.0020.0017] # ARABIC LIGATURE THEH WITH MEEM INITIAL FORM +FCE5 ; [.2686.0020.0018][.2714.0020.0018] # ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM +FC78 ; [.2686.0020.0019][.2714.0020.0019] # ARABIC LIGATURE THEH WITH MEEM FINAL FORM +FC12 ; [.2686.0020.001A][.2714.0020.001A] # ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM +FC79 ; [.2686.0020.0019][.2718.0020.0019] # ARABIC LIGATURE THEH WITH NOON FINAL FORM +FCE6 ; [.2686.0020.0018][.2722.0020.0018] # ARABIC LIGATURE THEH WITH HEH MEDIAL FORM +FC7A ; [.2686.0020.0019][.2736.0020.0019] # ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM +FC13 ; [.2686.0020.001A][.2736.0020.001A] # ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM +FC7B ; [.2686.0020.0019][.2737.0020.0019] # ARABIC LIGATURE THEH WITH YEH FINAL FORM +FC14 ; [.2686.0020.001A][.2737.0020.001A] # ARABIC LIGATURE THEH WITH YEH ISOLATED FORM +0679 ; [.2687.0020.0002] # ARABIC LETTER TTEH +FB68 ; [.2687.0020.0017] # ARABIC LETTER TTEH INITIAL FORM +FB69 ; [.2687.0020.0018] # ARABIC LETTER TTEH MEDIAL FORM +FB67 ; [.2687.0020.0019] # ARABIC LETTER TTEH FINAL FORM +FB66 ; [.2687.0020.001A] # ARABIC LETTER TTEH ISOLATED FORM +067A ; [.2688.0020.0002] # ARABIC LETTER TTEHEH +FB60 ; [.2688.0020.0017] # ARABIC LETTER TTEHEH INITIAL FORM +FB61 ; [.2688.0020.0018] # ARABIC LETTER TTEHEH MEDIAL FORM +FB5F ; [.2688.0020.0019] # ARABIC LETTER TTEHEH FINAL FORM +FB5E ; [.2688.0020.001A] # ARABIC LETTER TTEHEH ISOLATED FORM +067C ; [.2689.0020.0002] # ARABIC LETTER TEH WITH RING +067D ; [.268A.0020.0002] # ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS +067F ; [.268B.0020.0002] # ARABIC LETTER TEHEH +FB64 ; [.268B.0020.0017] # ARABIC LETTER TEHEH INITIAL FORM +FB65 ; [.268B.0020.0018] # ARABIC LETTER TEHEH MEDIAL FORM +FB63 ; [.268B.0020.0019] # ARABIC LETTER TEHEH FINAL FORM +FB62 ; [.268B.0020.001A] # ARABIC LETTER TEHEH ISOLATED FORM +08B8 ; [.268C.0020.0002] # ARABIC LETTER TEH WITH SMALL TEH ABOVE +08BF ; [.268D.0020.0002] # ARABIC LETTER TEH WITH SMALL V +08C0 ; [.268E.0020.0002] # ARABIC LETTER TTEH WITH SMALL V +062C ; [.268F.0020.0002] # ARABIC LETTER JEEM +1EE02 ; [.268F.0020.0005] # ARABIC MATHEMATICAL JEEM +1EE22 ; [.268F.0020.0005] # ARABIC MATHEMATICAL INITIAL JEEM +1EE42 ; [.268F.0020.0005] # ARABIC MATHEMATICAL TAILED JEEM +1EE62 ; [.268F.0020.0005] # ARABIC MATHEMATICAL STRETCHED JEEM +1EE82 ; [.268F.0020.0005] # ARABIC MATHEMATICAL LOOPED JEEM +1EEA2 ; [.268F.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK JEEM +FE9F ; [.268F.0020.0017] # ARABIC LETTER JEEM INITIAL FORM +FEA0 ; [.268F.0020.0018] # ARABIC LETTER JEEM MEDIAL FORM +FE9E ; [.268F.0020.0019] # ARABIC LETTER JEEM FINAL FORM +FE9D ; [.268F.0020.001A] # ARABIC LETTER JEEM ISOLATED FORM +FCA7 ; [.268F.0020.0017][.2699.0020.0017] # ARABIC LIGATURE JEEM WITH HAH INITIAL FORM +FC15 ; [.268F.0020.001A][.2699.0020.001A] # ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM +FDA6 ; [.268F.0020.0019][.2699.0020.0019][.2736.0020.0019] # ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM +FDBE ; [.268F.0020.0019][.2699.0020.0019][.2737.0020.0019] # ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM +FDFB ; [.268F.0020.001A][.270C.0020.001A][*0209.0020.001A][.268F.0020.001A][.270C.0020.001A][.2672.0020.001A][.270C.0020.001A][.2722.0020.001A] # ARABIC LIGATURE JALLAJALALOUHOU +FCA8 ; [.268F.0020.0017][.2714.0020.0017] # ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM +FC16 ; [.268F.0020.001A][.2714.0020.001A] # ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM +FD59 ; [.268F.0020.0017][.2714.0020.0017][.2699.0020.0017] # ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM +FD58 ; [.268F.0020.0019][.2714.0020.0019][.2699.0020.0019] # ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM +FDA7 ; [.268F.0020.0019][.2714.0020.0019][.2736.0020.0019] # ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM +FDA5 ; [.268F.0020.0019][.2714.0020.0019][.2737.0020.0019] # ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM +FD1D ; [.268F.0020.0019][.2736.0020.0019] # ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM +FD01 ; [.268F.0020.001A][.2736.0020.001A] # ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM +FD1E ; [.268F.0020.0019][.2737.0020.0019] # ARABIC LIGATURE JEEM WITH YEH FINAL FORM +FD02 ; [.268F.0020.001A][.2737.0020.001A] # ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM +0683 ; [.2690.0020.0002] # ARABIC LETTER NYEH +FB78 ; [.2690.0020.0017] # ARABIC LETTER NYEH INITIAL FORM +FB79 ; [.2690.0020.0018] # ARABIC LETTER NYEH MEDIAL FORM +FB77 ; [.2690.0020.0019] # ARABIC LETTER NYEH FINAL FORM +FB76 ; [.2690.0020.001A] # ARABIC LETTER NYEH ISOLATED FORM +0684 ; [.2691.0020.0002] # ARABIC LETTER DYEH +FB74 ; [.2691.0020.0017] # ARABIC LETTER DYEH INITIAL FORM +FB75 ; [.2691.0020.0018] # ARABIC LETTER DYEH MEDIAL FORM +FB73 ; [.2691.0020.0019] # ARABIC LETTER DYEH FINAL FORM +FB72 ; [.2691.0020.001A] # ARABIC LETTER DYEH ISOLATED FORM +0686 ; [.2692.0020.0002] # ARABIC LETTER TCHEH +FB7C ; [.2692.0020.0017] # ARABIC LETTER TCHEH INITIAL FORM +FB7D ; [.2692.0020.0018] # ARABIC LETTER TCHEH MEDIAL FORM +FB7B ; [.2692.0020.0019] # ARABIC LETTER TCHEH FINAL FORM +FB7A ; [.2692.0020.001A] # ARABIC LETTER TCHEH ISOLATED FORM +06BF ; [.2693.0020.0002] # ARABIC LETTER TCHEH WITH DOT ABOVE +0687 ; [.2694.0020.0002] # ARABIC LETTER TCHEHEH +FB80 ; [.2694.0020.0017] # ARABIC LETTER TCHEHEH INITIAL FORM +FB81 ; [.2694.0020.0018] # ARABIC LETTER TCHEHEH MEDIAL FORM +FB7F ; [.2694.0020.0019] # ARABIC LETTER TCHEHEH FINAL FORM +FB7E ; [.2694.0020.001A] # ARABIC LETTER TCHEHEH ISOLATED FORM +08A2 ; [.2695.0020.0002] # ARABIC LETTER JEEM WITH TWO DOTS ABOVE +08C1 ; [.2696.0020.0002] # ARABIC LETTER TCHEH WITH SMALL V +08C5 ; [.2697.0020.0002] # ARABIC LETTER JEEM WITH THREE DOTS ABOVE +08C6 ; [.2698.0020.0002] # ARABIC LETTER JEEM WITH THREE DOTS BELOW +062D ; [.2699.0020.0002] # ARABIC LETTER HAH +1EE07 ; [.2699.0020.0005] # ARABIC MATHEMATICAL HAH +1EE27 ; [.2699.0020.0005] # ARABIC MATHEMATICAL INITIAL HAH +1EE47 ; [.2699.0020.0005] # ARABIC MATHEMATICAL TAILED HAH +1EE67 ; [.2699.0020.0005] # ARABIC MATHEMATICAL STRETCHED HAH +1EE87 ; [.2699.0020.0005] # ARABIC MATHEMATICAL LOOPED HAH +1EEA7 ; [.2699.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK HAH +FEA3 ; [.2699.0020.0017] # ARABIC LETTER HAH INITIAL FORM +FEA4 ; [.2699.0020.0018] # ARABIC LETTER HAH MEDIAL FORM +FEA2 ; [.2699.0020.0019] # ARABIC LETTER HAH FINAL FORM +FEA1 ; [.2699.0020.001A] # ARABIC LETTER HAH ISOLATED FORM +FCA9 ; [.2699.0020.0017][.268F.0020.0017] # ARABIC LIGATURE HAH WITH JEEM INITIAL FORM +FC17 ; [.2699.0020.001A][.268F.0020.001A] # ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM +FDBF ; [.2699.0020.0019][.268F.0020.0019][.2737.0020.0019] # ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM +FCAA ; [.2699.0020.0017][.2714.0020.0017] # ARABIC LIGATURE HAH WITH MEEM INITIAL FORM +FC18 ; [.2699.0020.001A][.2714.0020.001A] # ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM +FD5B ; [.2699.0020.0019][.2714.0020.0019][.2736.0020.0019] # ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM +FD5A ; [.2699.0020.0019][.2714.0020.0019][.2737.0020.0019] # ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM +FD1B ; [.2699.0020.0019][.2736.0020.0019] # ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM +FCFF ; [.2699.0020.001A][.2736.0020.001A] # ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM +FD1C ; [.2699.0020.0019][.2737.0020.0019] # ARABIC LIGATURE HAH WITH YEH FINAL FORM +FD00 ; [.2699.0020.001A][.2737.0020.001A] # ARABIC LIGATURE HAH WITH YEH ISOLATED FORM +062E ; [.269A.0020.0002] # ARABIC LETTER KHAH +1EE17 ; [.269A.0020.0005] # ARABIC MATHEMATICAL KHAH +1EE37 ; [.269A.0020.0005] # ARABIC MATHEMATICAL INITIAL KHAH +1EE57 ; [.269A.0020.0005] # ARABIC MATHEMATICAL TAILED KHAH +1EE77 ; [.269A.0020.0005] # ARABIC MATHEMATICAL STRETCHED KHAH +1EE97 ; [.269A.0020.0005] # ARABIC MATHEMATICAL LOOPED KHAH +1EEB7 ; [.269A.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK KHAH +FEA7 ; [.269A.0020.0017] # ARABIC LETTER KHAH INITIAL FORM +FEA8 ; [.269A.0020.0018] # ARABIC LETTER KHAH MEDIAL FORM +FEA6 ; [.269A.0020.0019] # ARABIC LETTER KHAH FINAL FORM +FEA5 ; [.269A.0020.001A] # ARABIC LETTER KHAH ISOLATED FORM +FCAB ; [.269A.0020.0017][.268F.0020.0017] # ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM +FC19 ; [.269A.0020.001A][.268F.0020.001A] # ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM +FC1A ; [.269A.0020.001A][.2699.0020.001A] # ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM +FCAC ; [.269A.0020.0017][.2714.0020.0017] # ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM +FC1B ; [.269A.0020.001A][.2714.0020.001A] # ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM +FD1F ; [.269A.0020.0019][.2736.0020.0019] # ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM +FD03 ; [.269A.0020.001A][.2736.0020.001A] # ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM +FD20 ; [.269A.0020.0019][.2737.0020.0019] # ARABIC LIGATURE KHAH WITH YEH FINAL FORM +FD04 ; [.269A.0020.001A][.2737.0020.001A] # ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM +0681 ; [.269B.0020.0002] # ARABIC LETTER HAH WITH HAMZA ABOVE +0682 ; [.269C.0020.0002] # ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE +0685 ; [.269D.0020.0002] # ARABIC LETTER HAH WITH THREE DOTS ABOVE +0757 ; [.269E.0020.0002] # ARABIC LETTER HAH WITH TWO DOTS ABOVE +0758 ; [.269F.0020.0002] # ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW +076E ; [.26A0.0020.0002] # ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW +076F ; [.26A1.0020.0002] # ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS +0772 ; [.26A2.0020.0002] # ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE +077C ; [.26A3.0020.0002] # ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW +062F ; [.26A4.0020.0002] # ARABIC LETTER DAL +1EE03 ; [.26A4.0020.0005] # ARABIC MATHEMATICAL DAL +1EE83 ; [.26A4.0020.0005] # ARABIC MATHEMATICAL LOOPED DAL +1EEA3 ; [.26A4.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK DAL +FEAA ; [.26A4.0020.0019] # ARABIC LETTER DAL FINAL FORM +FEA9 ; [.26A4.0020.001A] # ARABIC LETTER DAL ISOLATED FORM +0630 ; [.26A5.0020.0002] # ARABIC LETTER THAL +1EE18 ; [.26A5.0020.0005] # ARABIC MATHEMATICAL THAL +1EE98 ; [.26A5.0020.0005] # ARABIC MATHEMATICAL LOOPED THAL +1EEB8 ; [.26A5.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK THAL +FEAC ; [.26A5.0020.0019] # ARABIC LETTER THAL FINAL FORM +FEAB ; [.26A5.0020.001A] # ARABIC LETTER THAL ISOLATED FORM +FC5B ; [.26A5.0020.001A][.0000.0098.001A] # ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM +0688 ; [.26A6.0020.0002] # ARABIC LETTER DDAL +FB89 ; [.26A6.0020.0019] # ARABIC LETTER DDAL FINAL FORM +FB88 ; [.26A6.0020.001A] # ARABIC LETTER DDAL ISOLATED FORM +0689 ; [.26A7.0020.0002] # ARABIC LETTER DAL WITH RING +068A ; [.26A8.0020.0002] # ARABIC LETTER DAL WITH DOT BELOW +068B ; [.26A9.0020.0002] # ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH +068C ; [.26AA.0020.0002] # ARABIC LETTER DAHAL +FB85 ; [.26AA.0020.0019] # ARABIC LETTER DAHAL FINAL FORM +FB84 ; [.26AA.0020.001A] # ARABIC LETTER DAHAL ISOLATED FORM +068D ; [.26AB.0020.0002] # ARABIC LETTER DDAHAL +FB83 ; [.26AB.0020.0019] # ARABIC LETTER DDAHAL FINAL FORM +FB82 ; [.26AB.0020.001A] # ARABIC LETTER DDAHAL ISOLATED FORM +08AE ; [.26AC.0020.0002] # ARABIC LETTER DAL WITH THREE DOTS BELOW +068E ; [.26AD.0020.0002] # ARABIC LETTER DUL +FB87 ; [.26AD.0020.0019] # ARABIC LETTER DUL FINAL FORM +FB86 ; [.26AD.0020.001A] # ARABIC LETTER DUL ISOLATED FORM +068F ; [.26AE.0020.0002] # ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS +0690 ; [.26AF.0020.0002] # ARABIC LETTER DAL WITH FOUR DOTS ABOVE +06EE ; [.26B0.0020.0002] # ARABIC LETTER DAL WITH INVERTED V +0759 ; [.26B1.0020.0002] # ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH +075A ; [.26B2.0020.0002] # ARABIC LETTER DAL WITH INVERTED SMALL V BELOW +0631 ; [.26B3.0020.0002] # ARABIC LETTER REH +1EE13 ; [.26B3.0020.0005] # ARABIC MATHEMATICAL REH +1EE93 ; [.26B3.0020.0005] # ARABIC MATHEMATICAL LOOPED REH +1EEB3 ; [.26B3.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK REH +FEAE ; [.26B3.0020.0019] # ARABIC LETTER REH FINAL FORM +FEAD ; [.26B3.0020.001A] # ARABIC LETTER REH ISOLATED FORM +FC5C ; [.26B3.0020.001A][.0000.0098.001A] # ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM +FDF6 ; [.26B3.0020.001A][.26C6.0020.001A][.2728.0020.001A][.270C.0020.001A] # ARABIC LIGATURE RASOUL ISOLATED FORM +FDFC ; [.26B3.0020.001A][.2738.0020.001A][.2672.0020.001A][.270C.0020.001A] # RIAL SIGN +0632 ; [.26B4.0020.0002] # ARABIC LETTER ZAIN +1EE06 ; [.26B4.0020.0005] # ARABIC MATHEMATICAL ZAIN +1EE86 ; [.26B4.0020.0005] # ARABIC MATHEMATICAL LOOPED ZAIN +1EEA6 ; [.26B4.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK ZAIN +FEB0 ; [.26B4.0020.0019] # ARABIC LETTER ZAIN FINAL FORM +FEAF ; [.26B4.0020.001A] # ARABIC LETTER ZAIN ISOLATED FORM +0691 ; [.26B5.0020.0002] # ARABIC LETTER RREH +FB8D ; [.26B5.0020.0019] # ARABIC LETTER RREH FINAL FORM +FB8C ; [.26B5.0020.001A] # ARABIC LETTER RREH ISOLATED FORM +0692 ; [.26B6.0020.0002] # ARABIC LETTER REH WITH SMALL V +0693 ; [.26B7.0020.0002] # ARABIC LETTER REH WITH RING +0694 ; [.26B8.0020.0002] # ARABIC LETTER REH WITH DOT BELOW +0695 ; [.26B9.0020.0002] # ARABIC LETTER REH WITH SMALL V BELOW +0696 ; [.26BA.0020.0002] # ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE +0697 ; [.26BB.0020.0002] # ARABIC LETTER REH WITH TWO DOTS ABOVE +0698 ; [.26BC.0020.0002] # ARABIC LETTER JEH +FB8B ; [.26BC.0020.0019] # ARABIC LETTER JEH FINAL FORM +FB8A ; [.26BC.0020.001A] # ARABIC LETTER JEH ISOLATED FORM +0699 ; [.26BD.0020.0002] # ARABIC LETTER REH WITH FOUR DOTS ABOVE +06EF ; [.26BE.0020.0002] # ARABIC LETTER REH WITH INVERTED V +075B ; [.26BF.0020.0002] # ARABIC LETTER REH WITH STROKE +076B ; [.26C0.0020.0002] # ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE +076C ; [.26C1.0020.0002] # ARABIC LETTER REH WITH HAMZA ABOVE +0771 ; [.26C2.0020.0002] # ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS +08AA ; [.26C3.0020.0002] # ARABIC LETTER REH WITH LOOP +08B2 ; [.26C4.0020.0002] # ARABIC LETTER ZAIN WITH INVERTED V ABOVE +08B9 ; [.26C5.0020.0002] # ARABIC LETTER REH WITH SMALL NOON ABOVE +0633 ; [.26C6.0020.0002] # ARABIC LETTER SEEN +1EE0E ; [.26C6.0020.0005] # ARABIC MATHEMATICAL SEEN +1EE2E ; [.26C6.0020.0005] # ARABIC MATHEMATICAL INITIAL SEEN +1EE4E ; [.26C6.0020.0005] # ARABIC MATHEMATICAL TAILED SEEN +1EE6E ; [.26C6.0020.0005] # ARABIC MATHEMATICAL STRETCHED SEEN +1EE8E ; [.26C6.0020.0005] # ARABIC MATHEMATICAL LOOPED SEEN +1EEAE ; [.26C6.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK SEEN +FEB3 ; [.26C6.0020.0017] # ARABIC LETTER SEEN INITIAL FORM +FEB4 ; [.26C6.0020.0018] # ARABIC LETTER SEEN MEDIAL FORM +FEB2 ; [.26C6.0020.0019] # ARABIC LETTER SEEN FINAL FORM +FEB1 ; [.26C6.0020.001A] # ARABIC LETTER SEEN ISOLATED FORM +FCAD ; [.26C6.0020.0017][.268F.0020.0017] # ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM +FD34 ; [.26C6.0020.0018][.268F.0020.0018] # ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM +FC1C ; [.26C6.0020.001A][.268F.0020.001A] # ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM +FD5D ; [.26C6.0020.0017][.268F.0020.0017][.2699.0020.0017] # ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM +FD5E ; [.26C6.0020.0019][.268F.0020.0019][.2736.0020.0019] # ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM +FCAE ; [.26C6.0020.0017][.2699.0020.0017] # ARABIC LIGATURE SEEN WITH HAH INITIAL FORM +FD35 ; [.26C6.0020.0018][.2699.0020.0018] # ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM +FC1D ; [.26C6.0020.001A][.2699.0020.001A] # ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM +FD5C ; [.26C6.0020.0017][.2699.0020.0017][.268F.0020.0017] # ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM +FCAF ; [.26C6.0020.0017][.269A.0020.0017] # ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM +FD36 ; [.26C6.0020.0018][.269A.0020.0018] # ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM +FC1E ; [.26C6.0020.001A][.269A.0020.001A] # ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM +FDA8 ; [.26C6.0020.0019][.269A.0020.0019][.2736.0020.0019] # ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM +FDC6 ; [.26C6.0020.0019][.269A.0020.0019][.2737.0020.0019] # ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM +FD2A ; [.26C6.0020.0019][.26B3.0020.0019] # ARABIC LIGATURE SEEN WITH REH FINAL FORM +FD0E ; [.26C6.0020.001A][.26B3.0020.001A] # ARABIC LIGATURE SEEN WITH REH ISOLATED FORM +FCB0 ; [.26C6.0020.0017][.2714.0020.0017] # ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM +FCE7 ; [.26C6.0020.0018][.2714.0020.0018] # ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM +FC1F ; [.26C6.0020.001A][.2714.0020.001A] # ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM +FD61 ; [.26C6.0020.0017][.2714.0020.0017][.268F.0020.0017] # ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM +FD60 ; [.26C6.0020.0017][.2714.0020.0017][.2699.0020.0017] # ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM +FD5F ; [.26C6.0020.0019][.2714.0020.0019][.2699.0020.0019] # ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM +FD63 ; [.26C6.0020.0017][.2714.0020.0017][.2714.0020.0017] # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM +FD62 ; [.26C6.0020.0019][.2714.0020.0019][.2714.0020.0019] # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM +FD31 ; [.26C6.0020.0017][.2722.0020.0017] # ARABIC LIGATURE SEEN WITH HEH INITIAL FORM +FCE8 ; [.26C6.0020.0018][.2722.0020.0018] # ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM +FD17 ; [.26C6.0020.0019][.2736.0020.0019] # ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM +FCFB ; [.26C6.0020.001A][.2736.0020.001A] # ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM +FD18 ; [.26C6.0020.0019][.2737.0020.0019] # ARABIC LIGATURE SEEN WITH YEH FINAL FORM +FCFC ; [.26C6.0020.001A][.2737.0020.001A] # ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM +0634 ; [.26C7.0020.0002] # ARABIC LETTER SHEEN +1EE14 ; [.26C7.0020.0005] # ARABIC MATHEMATICAL SHEEN +1EE34 ; [.26C7.0020.0005] # ARABIC MATHEMATICAL INITIAL SHEEN +1EE54 ; [.26C7.0020.0005] # ARABIC MATHEMATICAL TAILED SHEEN +1EE74 ; [.26C7.0020.0005] # ARABIC MATHEMATICAL STRETCHED SHEEN +1EE94 ; [.26C7.0020.0005] # ARABIC MATHEMATICAL LOOPED SHEEN +1EEB4 ; [.26C7.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK SHEEN +FEB7 ; [.26C7.0020.0017] # ARABIC LETTER SHEEN INITIAL FORM +FEB8 ; [.26C7.0020.0018] # ARABIC LETTER SHEEN MEDIAL FORM +FEB6 ; [.26C7.0020.0019] # ARABIC LETTER SHEEN FINAL FORM +FEB5 ; [.26C7.0020.001A] # ARABIC LETTER SHEEN ISOLATED FORM +FD2D ; [.26C7.0020.0017][.268F.0020.0017] # ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM +FD37 ; [.26C7.0020.0018][.268F.0020.0018] # ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM +FD25 ; [.26C7.0020.0019][.268F.0020.0019] # ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM +FD09 ; [.26C7.0020.001A][.268F.0020.001A] # ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM +FD69 ; [.26C7.0020.0019][.268F.0020.0019][.2737.0020.0019] # ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM +FD2E ; [.26C7.0020.0017][.2699.0020.0017] # ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM +FD38 ; [.26C7.0020.0018][.2699.0020.0018] # ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM +FD26 ; [.26C7.0020.0019][.2699.0020.0019] # ARABIC LIGATURE SHEEN WITH HAH FINAL FORM +FD0A ; [.26C7.0020.001A][.2699.0020.001A] # ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM +FD68 ; [.26C7.0020.0017][.2699.0020.0017][.2714.0020.0017] # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM +FD67 ; [.26C7.0020.0019][.2699.0020.0019][.2714.0020.0019] # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM +FDAA ; [.26C7.0020.0019][.2699.0020.0019][.2737.0020.0019] # ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM +FD2F ; [.26C7.0020.0017][.269A.0020.0017] # ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM +FD39 ; [.26C7.0020.0018][.269A.0020.0018] # ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM +FD27 ; [.26C7.0020.0019][.269A.0020.0019] # ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM +FD0B ; [.26C7.0020.001A][.269A.0020.001A] # ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM +FD29 ; [.26C7.0020.0019][.26B3.0020.0019] # ARABIC LIGATURE SHEEN WITH REH FINAL FORM +FD0D ; [.26C7.0020.001A][.26B3.0020.001A] # ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM +FD30 ; [.26C7.0020.0017][.2714.0020.0017] # ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM +FCE9 ; [.26C7.0020.0018][.2714.0020.0018] # ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM +FD28 ; [.26C7.0020.0019][.2714.0020.0019] # ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM +FD0C ; [.26C7.0020.001A][.2714.0020.001A] # ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM +FD6B ; [.26C7.0020.0017][.2714.0020.0017][.269A.0020.0017] # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM +FD6A ; [.26C7.0020.0019][.2714.0020.0019][.269A.0020.0019] # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM +FD6D ; [.26C7.0020.0017][.2714.0020.0017][.2714.0020.0017] # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM +FD6C ; [.26C7.0020.0019][.2714.0020.0019][.2714.0020.0019] # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM +FD32 ; [.26C7.0020.0017][.2722.0020.0017] # ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM +FCEA ; [.26C7.0020.0018][.2722.0020.0018] # ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM +FD19 ; [.26C7.0020.0019][.2736.0020.0019] # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM +FCFD ; [.26C7.0020.001A][.2736.0020.001A] # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM +FD1A ; [.26C7.0020.0019][.2737.0020.0019] # ARABIC LIGATURE SHEEN WITH YEH FINAL FORM +FCFE ; [.26C7.0020.001A][.2737.0020.001A] # ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM +069A ; [.26C8.0020.0002] # ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE +069B ; [.26C9.0020.0002] # ARABIC LETTER SEEN WITH THREE DOTS BELOW +069C ; [.26CA.0020.0002] # ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE +06FA ; [.26CB.0020.0002] # ARABIC LETTER SHEEN WITH DOT BELOW +075C ; [.26CC.0020.0002] # ARABIC LETTER SEEN WITH FOUR DOTS ABOVE +076D ; [.26CD.0020.0002] # ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE +0770 ; [.26CE.0020.0002] # ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS +077D ; [.26CF.0020.0002] # ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE +077E ; [.26D0.0020.0002] # ARABIC LETTER SEEN WITH INVERTED V +0635 ; [.26D1.0020.0002] # ARABIC LETTER SAD +1EE11 ; [.26D1.0020.0005] # ARABIC MATHEMATICAL SAD +1EE31 ; [.26D1.0020.0005] # ARABIC MATHEMATICAL INITIAL SAD +1EE51 ; [.26D1.0020.0005] # ARABIC MATHEMATICAL TAILED SAD +1EE71 ; [.26D1.0020.0005] # ARABIC MATHEMATICAL STRETCHED SAD +1EE91 ; [.26D1.0020.0005] # ARABIC MATHEMATICAL LOOPED SAD +1EEB1 ; [.26D1.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK SAD +FEBB ; [.26D1.0020.0017] # ARABIC LETTER SAD INITIAL FORM +FEBC ; [.26D1.0020.0018] # ARABIC LETTER SAD MEDIAL FORM +FEBA ; [.26D1.0020.0019] # ARABIC LETTER SAD FINAL FORM +FEB9 ; [.26D1.0020.001A] # ARABIC LETTER SAD ISOLATED FORM +FCB1 ; [.26D1.0020.0017][.2699.0020.0017] # ARABIC LIGATURE SAD WITH HAH INITIAL FORM +FC20 ; [.26D1.0020.001A][.2699.0020.001A] # ARABIC LIGATURE SAD WITH HAH ISOLATED FORM +FD65 ; [.26D1.0020.0017][.2699.0020.0017][.2699.0020.0017] # ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM +FD64 ; [.26D1.0020.0019][.2699.0020.0019][.2699.0020.0019] # ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM +FDA9 ; [.26D1.0020.0019][.2699.0020.0019][.2737.0020.0019] # ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM +FCB2 ; [.26D1.0020.0017][.269A.0020.0017] # ARABIC LIGATURE SAD WITH KHAH INITIAL FORM +FD2B ; [.26D1.0020.0019][.26B3.0020.0019] # ARABIC LIGATURE SAD WITH REH FINAL FORM +FD0F ; [.26D1.0020.001A][.26B3.0020.001A] # ARABIC LIGATURE SAD WITH REH ISOLATED FORM +FDF5 ; [.26D1.0020.001A][.270C.0020.001A][.26DB.0020.001A][.2714.0020.001A] # ARABIC LIGATURE SALAM ISOLATED FORM +FDF9 ; [.26D1.0020.001A][.270C.0020.001A][.2736.0020.001A] # ARABIC LIGATURE SALLA ISOLATED FORM +FDFA ; [.26D1.0020.001A][.270C.0020.001A][.2736.0020.001A][*0209.0020.001A][.2672.0020.001A][.270C.0020.001A][.270C.0020.001A][.2722.0020.001A][*0209.0020.001A][.26DB.0020.001A][.270C.0020.001A][.2737.0020.001A][.2722.0020.001A][*0209.0020.001A][.2728.0020.001A][.26C6.0020.001A][.270C.0020.001A][.2714.0020.001A] # ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM +FDF0 ; [.26D1.0020.001A][.270C.0020.001A][.2745.0020.001A] # ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM +FCB3 ; [.26D1.0020.0017][.2714.0020.0017] # ARABIC LIGATURE SAD WITH MEEM INITIAL FORM +FC21 ; [.26D1.0020.001A][.2714.0020.001A] # ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM +FDC5 ; [.26D1.0020.0017][.2714.0020.0017][.2714.0020.0017] # ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM +FD66 ; [.26D1.0020.0019][.2714.0020.0019][.2714.0020.0019] # ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM +FD21 ; [.26D1.0020.0019][.2736.0020.0019] # ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM +FD05 ; [.26D1.0020.001A][.2736.0020.001A] # ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM +FD22 ; [.26D1.0020.0019][.2737.0020.0019] # ARABIC LIGATURE SAD WITH YEH FINAL FORM +FD06 ; [.26D1.0020.001A][.2737.0020.001A] # ARABIC LIGATURE SAD WITH YEH ISOLATED FORM +0636 ; [.26D2.0020.0002] # ARABIC LETTER DAD +1EE19 ; [.26D2.0020.0005] # ARABIC MATHEMATICAL DAD +1EE39 ; [.26D2.0020.0005] # ARABIC MATHEMATICAL INITIAL DAD +1EE59 ; [.26D2.0020.0005] # ARABIC MATHEMATICAL TAILED DAD +1EE79 ; [.26D2.0020.0005] # ARABIC MATHEMATICAL STRETCHED DAD +1EE99 ; [.26D2.0020.0005] # ARABIC MATHEMATICAL LOOPED DAD +1EEB9 ; [.26D2.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK DAD +FEBF ; [.26D2.0020.0017] # ARABIC LETTER DAD INITIAL FORM +FEC0 ; [.26D2.0020.0018] # ARABIC LETTER DAD MEDIAL FORM +FEBE ; [.26D2.0020.0019] # ARABIC LETTER DAD FINAL FORM +FEBD ; [.26D2.0020.001A] # ARABIC LETTER DAD ISOLATED FORM +FCB4 ; [.26D2.0020.0017][.268F.0020.0017] # ARABIC LIGATURE DAD WITH JEEM INITIAL FORM +FC22 ; [.26D2.0020.001A][.268F.0020.001A] # ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM +FCB5 ; [.26D2.0020.0017][.2699.0020.0017] # ARABIC LIGATURE DAD WITH HAH INITIAL FORM +FC23 ; [.26D2.0020.001A][.2699.0020.001A] # ARABIC LIGATURE DAD WITH HAH ISOLATED FORM +FD6E ; [.26D2.0020.0019][.2699.0020.0019][.2736.0020.0019] # ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM +FDAB ; [.26D2.0020.0019][.2699.0020.0019][.2737.0020.0019] # ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM +FCB6 ; [.26D2.0020.0017][.269A.0020.0017] # ARABIC LIGATURE DAD WITH KHAH INITIAL FORM +FC24 ; [.26D2.0020.001A][.269A.0020.001A] # ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM +FD70 ; [.26D2.0020.0017][.269A.0020.0017][.2714.0020.0017] # ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM +FD6F ; [.26D2.0020.0019][.269A.0020.0019][.2714.0020.0019] # ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM +FD2C ; [.26D2.0020.0019][.26B3.0020.0019] # ARABIC LIGATURE DAD WITH REH FINAL FORM +FD10 ; [.26D2.0020.001A][.26B3.0020.001A] # ARABIC LIGATURE DAD WITH REH ISOLATED FORM +FCB7 ; [.26D2.0020.0017][.2714.0020.0017] # ARABIC LIGATURE DAD WITH MEEM INITIAL FORM +FC25 ; [.26D2.0020.001A][.2714.0020.001A] # ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM +FD23 ; [.26D2.0020.0019][.2736.0020.0019] # ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM +FD07 ; [.26D2.0020.001A][.2736.0020.001A] # ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM +FD24 ; [.26D2.0020.0019][.2737.0020.0019] # ARABIC LIGATURE DAD WITH YEH FINAL FORM +FD08 ; [.26D2.0020.001A][.2737.0020.001A] # ARABIC LIGATURE DAD WITH YEH ISOLATED FORM +069D ; [.26D3.0020.0002] # ARABIC LETTER SAD WITH TWO DOTS BELOW +08AF ; [.26D4.0020.0002] # ARABIC LETTER SAD WITH THREE DOTS BELOW +069E ; [.26D5.0020.0002] # ARABIC LETTER SAD WITH THREE DOTS ABOVE +06FB ; [.26D6.0020.0002] # ARABIC LETTER DAD WITH DOT BELOW +0637 ; [.26D7.0020.0002] # ARABIC LETTER TAH +1EE08 ; [.26D7.0020.0005] # ARABIC MATHEMATICAL TAH +1EE68 ; [.26D7.0020.0005] # ARABIC MATHEMATICAL STRETCHED TAH +1EE88 ; [.26D7.0020.0005] # ARABIC MATHEMATICAL LOOPED TAH +1EEA8 ; [.26D7.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK TAH +FEC3 ; [.26D7.0020.0017] # ARABIC LETTER TAH INITIAL FORM +FEC4 ; [.26D7.0020.0018] # ARABIC LETTER TAH MEDIAL FORM +FEC2 ; [.26D7.0020.0019] # ARABIC LETTER TAH FINAL FORM +FEC1 ; [.26D7.0020.001A] # ARABIC LETTER TAH ISOLATED FORM +FCB8 ; [.26D7.0020.0017][.2699.0020.0017] # ARABIC LIGATURE TAH WITH HAH INITIAL FORM +FC26 ; [.26D7.0020.001A][.2699.0020.001A] # ARABIC LIGATURE TAH WITH HAH ISOLATED FORM +FD33 ; [.26D7.0020.0017][.2714.0020.0017] # ARABIC LIGATURE TAH WITH MEEM INITIAL FORM +FD3A ; [.26D7.0020.0018][.2714.0020.0018] # ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM +FC27 ; [.26D7.0020.001A][.2714.0020.001A] # ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM +FD72 ; [.26D7.0020.0017][.2714.0020.0017][.2699.0020.0017] # ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM +FD71 ; [.26D7.0020.0019][.2714.0020.0019][.2699.0020.0019] # ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM +FD73 ; [.26D7.0020.0017][.2714.0020.0017][.2714.0020.0017] # ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM +FD74 ; [.26D7.0020.0019][.2714.0020.0019][.2737.0020.0019] # ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM +FD11 ; [.26D7.0020.0019][.2736.0020.0019] # ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM +FCF5 ; [.26D7.0020.001A][.2736.0020.001A] # ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM +FD12 ; [.26D7.0020.0019][.2737.0020.0019] # ARABIC LIGATURE TAH WITH YEH FINAL FORM +FCF6 ; [.26D7.0020.001A][.2737.0020.001A] # ARABIC LIGATURE TAH WITH YEH ISOLATED FORM +0638 ; [.26D8.0020.0002] # ARABIC LETTER ZAH +1EE1A ; [.26D8.0020.0005] # ARABIC MATHEMATICAL ZAH +1EE7A ; [.26D8.0020.0005] # ARABIC MATHEMATICAL STRETCHED ZAH +1EE9A ; [.26D8.0020.0005] # ARABIC MATHEMATICAL LOOPED ZAH +1EEBA ; [.26D8.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK ZAH +FEC7 ; [.26D8.0020.0017] # ARABIC LETTER ZAH INITIAL FORM +FEC8 ; [.26D8.0020.0018] # ARABIC LETTER ZAH MEDIAL FORM +FEC6 ; [.26D8.0020.0019] # ARABIC LETTER ZAH FINAL FORM +FEC5 ; [.26D8.0020.001A] # ARABIC LETTER ZAH ISOLATED FORM +FCB9 ; [.26D8.0020.0017][.2714.0020.0017] # ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM +FD3B ; [.26D8.0020.0018][.2714.0020.0018] # ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM +FC28 ; [.26D8.0020.001A][.2714.0020.001A] # ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM +069F ; [.26D9.0020.0002] # ARABIC LETTER TAH WITH THREE DOTS ABOVE +08A3 ; [.26DA.0020.0002] # ARABIC LETTER TAH WITH TWO DOTS ABOVE +0639 ; [.26DB.0020.0002] # ARABIC LETTER AIN +1EE0F ; [.26DB.0020.0005] # ARABIC MATHEMATICAL AIN +1EE2F ; [.26DB.0020.0005] # ARABIC MATHEMATICAL INITIAL AIN +1EE4F ; [.26DB.0020.0005] # ARABIC MATHEMATICAL TAILED AIN +1EE6F ; [.26DB.0020.0005] # ARABIC MATHEMATICAL STRETCHED AIN +1EE8F ; [.26DB.0020.0005] # ARABIC MATHEMATICAL LOOPED AIN +1EEAF ; [.26DB.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK AIN +FECB ; [.26DB.0020.0017] # ARABIC LETTER AIN INITIAL FORM +FECC ; [.26DB.0020.0018] # ARABIC LETTER AIN MEDIAL FORM +FECA ; [.26DB.0020.0019] # ARABIC LETTER AIN FINAL FORM +FEC9 ; [.26DB.0020.001A] # ARABIC LETTER AIN ISOLATED FORM +FCBA ; [.26DB.0020.0017][.268F.0020.0017] # ARABIC LIGATURE AIN WITH JEEM INITIAL FORM +FC29 ; [.26DB.0020.001A][.268F.0020.001A] # ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM +FDC4 ; [.26DB.0020.0017][.268F.0020.0017][.2714.0020.0017] # ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM +FD75 ; [.26DB.0020.0019][.268F.0020.0019][.2714.0020.0019] # ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM +FDF7 ; [.26DB.0020.001A][.270C.0020.001A][.2737.0020.001A][.2722.0020.001A] # ARABIC LIGATURE ALAYHE ISOLATED FORM +FCBB ; [.26DB.0020.0017][.2714.0020.0017] # ARABIC LIGATURE AIN WITH MEEM INITIAL FORM +FC2A ; [.26DB.0020.001A][.2714.0020.001A] # ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM +FD77 ; [.26DB.0020.0017][.2714.0020.0017][.2714.0020.0017] # ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM +FD76 ; [.26DB.0020.0019][.2714.0020.0019][.2714.0020.0019] # ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM +FD78 ; [.26DB.0020.0019][.2714.0020.0019][.2736.0020.0019] # ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM +FDB6 ; [.26DB.0020.0019][.2714.0020.0019][.2737.0020.0019] # ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM +FD13 ; [.26DB.0020.0019][.2736.0020.0019] # ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM +FCF7 ; [.26DB.0020.001A][.2736.0020.001A] # ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM +FD14 ; [.26DB.0020.0019][.2737.0020.0019] # ARABIC LIGATURE AIN WITH YEH FINAL FORM +FCF8 ; [.26DB.0020.001A][.2737.0020.001A] # ARABIC LIGATURE AIN WITH YEH ISOLATED FORM +063A ; [.26DC.0020.0002] # ARABIC LETTER GHAIN +1EE1B ; [.26DC.0020.0005] # ARABIC MATHEMATICAL GHAIN +1EE3B ; [.26DC.0020.0005] # ARABIC MATHEMATICAL INITIAL GHAIN +1EE5B ; [.26DC.0020.0005] # ARABIC MATHEMATICAL TAILED GHAIN +1EE7B ; [.26DC.0020.0005] # ARABIC MATHEMATICAL STRETCHED GHAIN +1EE9B ; [.26DC.0020.0005] # ARABIC MATHEMATICAL LOOPED GHAIN +1EEBB ; [.26DC.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN +FECF ; [.26DC.0020.0017] # ARABIC LETTER GHAIN INITIAL FORM +FED0 ; [.26DC.0020.0018] # ARABIC LETTER GHAIN MEDIAL FORM +FECE ; [.26DC.0020.0019] # ARABIC LETTER GHAIN FINAL FORM +FECD ; [.26DC.0020.001A] # ARABIC LETTER GHAIN ISOLATED FORM +FCBC ; [.26DC.0020.0017][.268F.0020.0017] # ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM +FC2B ; [.26DC.0020.001A][.268F.0020.001A] # ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM +FCBD ; [.26DC.0020.0017][.2714.0020.0017] # ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM +FC2C ; [.26DC.0020.001A][.2714.0020.001A] # ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM +FD79 ; [.26DC.0020.0019][.2714.0020.0019][.2714.0020.0019] # ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM +FD7B ; [.26DC.0020.0019][.2714.0020.0019][.2736.0020.0019] # ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM +FD7A ; [.26DC.0020.0019][.2714.0020.0019][.2737.0020.0019] # ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM +FD15 ; [.26DC.0020.0019][.2736.0020.0019] # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM +FCF9 ; [.26DC.0020.001A][.2736.0020.001A] # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM +FD16 ; [.26DC.0020.0019][.2737.0020.0019] # ARABIC LIGATURE GHAIN WITH YEH FINAL FORM +FCFA ; [.26DC.0020.001A][.2737.0020.001A] # ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM +06A0 ; [.26DD.0020.0002] # ARABIC LETTER AIN WITH THREE DOTS ABOVE +08C3 ; [.26DE.0020.0002] # ARABIC LETTER GHAIN WITH THREE DOTS ABOVE +06FC ; [.26DF.0020.0002] # ARABIC LETTER GHAIN WITH DOT BELOW +075D ; [.26E0.0020.0002] # ARABIC LETTER AIN WITH TWO DOTS ABOVE +075E ; [.26E1.0020.0002] # ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE +075F ; [.26E2.0020.0002] # ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE +08B3 ; [.26E3.0020.0002] # ARABIC LETTER AIN WITH THREE DOTS BELOW +0641 ; [.26E4.0020.0002] # ARABIC LETTER FEH +1EE10 ; [.26E4.0020.0005] # ARABIC MATHEMATICAL FEH +1EE30 ; [.26E4.0020.0005] # ARABIC MATHEMATICAL INITIAL FEH +1EE70 ; [.26E4.0020.0005] # ARABIC MATHEMATICAL STRETCHED FEH +1EE90 ; [.26E4.0020.0005] # ARABIC MATHEMATICAL LOOPED FEH +1EEB0 ; [.26E4.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK FEH +FED3 ; [.26E4.0020.0017] # ARABIC LETTER FEH INITIAL FORM +FED4 ; [.26E4.0020.0018] # ARABIC LETTER FEH MEDIAL FORM +FED2 ; [.26E4.0020.0019] # ARABIC LETTER FEH FINAL FORM +FED1 ; [.26E4.0020.001A] # ARABIC LETTER FEH ISOLATED FORM +FCBE ; [.26E4.0020.0017][.268F.0020.0017] # ARABIC LIGATURE FEH WITH JEEM INITIAL FORM +FC2D ; [.26E4.0020.001A][.268F.0020.001A] # ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM +FCBF ; [.26E4.0020.0017][.2699.0020.0017] # ARABIC LIGATURE FEH WITH HAH INITIAL FORM +FC2E ; [.26E4.0020.001A][.2699.0020.001A] # ARABIC LIGATURE FEH WITH HAH ISOLATED FORM +FCC0 ; [.26E4.0020.0017][.269A.0020.0017] # ARABIC LIGATURE FEH WITH KHAH INITIAL FORM +FC2F ; [.26E4.0020.001A][.269A.0020.001A] # ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM +FD7D ; [.26E4.0020.0017][.269A.0020.0017][.2714.0020.0017] # ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM +FD7C ; [.26E4.0020.0019][.269A.0020.0019][.2714.0020.0019] # ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM +FCC1 ; [.26E4.0020.0017][.2714.0020.0017] # ARABIC LIGATURE FEH WITH MEEM INITIAL FORM +FC30 ; [.26E4.0020.001A][.2714.0020.001A] # ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM +FDC1 ; [.26E4.0020.0019][.2714.0020.0019][.2737.0020.0019] # ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM +FC7C ; [.26E4.0020.0019][.2736.0020.0019] # ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM +FC31 ; [.26E4.0020.001A][.2736.0020.001A] # ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM +FC7D ; [.26E4.0020.0019][.2737.0020.0019] # ARABIC LIGATURE FEH WITH YEH FINAL FORM +FC32 ; [.26E4.0020.001A][.2737.0020.001A] # ARABIC LIGATURE FEH WITH YEH ISOLATED FORM +06A1 ; [.26E5.0020.0002] # ARABIC LETTER DOTLESS FEH +1EE1E ; [.26E5.0020.0005] # ARABIC MATHEMATICAL DOTLESS FEH +1EE7E ; [.26E5.0020.0005] # ARABIC MATHEMATICAL STRETCHED DOTLESS FEH +06A2 ; [.26E6.0020.0002] # ARABIC LETTER FEH WITH DOT MOVED BELOW +08BB ; [.26E7.0020.0002] # ARABIC LETTER AFRICAN FEH +06A3 ; [.26E8.0020.0002] # ARABIC LETTER FEH WITH DOT BELOW +06A4 ; [.26E9.0020.0002] # ARABIC LETTER VEH +FB6C ; [.26E9.0020.0017] # ARABIC LETTER VEH INITIAL FORM +FB6D ; [.26E9.0020.0018] # ARABIC LETTER VEH MEDIAL FORM +FB6B ; [.26E9.0020.0019] # ARABIC LETTER VEH FINAL FORM +FB6A ; [.26E9.0020.001A] # ARABIC LETTER VEH ISOLATED FORM +08A4 ; [.26EA.0020.0002] # ARABIC LETTER FEH WITH DOT BELOW AND THREE DOTS ABOVE +06A5 ; [.26EB.0020.0002] # ARABIC LETTER FEH WITH THREE DOTS BELOW +06A6 ; [.26EC.0020.0002] # ARABIC LETTER PEHEH +FB70 ; [.26EC.0020.0017] # ARABIC LETTER PEHEH INITIAL FORM +FB71 ; [.26EC.0020.0018] # ARABIC LETTER PEHEH MEDIAL FORM +FB6F ; [.26EC.0020.0019] # ARABIC LETTER PEHEH FINAL FORM +FB6E ; [.26EC.0020.001A] # ARABIC LETTER PEHEH ISOLATED FORM +0760 ; [.26ED.0020.0002] # ARABIC LETTER FEH WITH TWO DOTS BELOW +0761 ; [.26EE.0020.0002] # ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW +066F ; [.26EF.0020.0002] # ARABIC LETTER DOTLESS QAF +1EE1F ; [.26EF.0020.0005] # ARABIC MATHEMATICAL DOTLESS QAF +1EE5F ; [.26EF.0020.0005] # ARABIC MATHEMATICAL TAILED DOTLESS QAF +0642 ; [.26F0.0020.0002] # ARABIC LETTER QAF +1EE12 ; [.26F0.0020.0005] # ARABIC MATHEMATICAL QAF +1EE32 ; [.26F0.0020.0005] # ARABIC MATHEMATICAL INITIAL QAF +1EE52 ; [.26F0.0020.0005] # ARABIC MATHEMATICAL TAILED QAF +1EE72 ; [.26F0.0020.0005] # ARABIC MATHEMATICAL STRETCHED QAF +1EE92 ; [.26F0.0020.0005] # ARABIC MATHEMATICAL LOOPED QAF +1EEB2 ; [.26F0.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK QAF +FED7 ; [.26F0.0020.0017] # ARABIC LETTER QAF INITIAL FORM +FED8 ; [.26F0.0020.0018] # ARABIC LETTER QAF MEDIAL FORM +FED6 ; [.26F0.0020.0019] # ARABIC LETTER QAF FINAL FORM +FED5 ; [.26F0.0020.001A] # ARABIC LETTER QAF ISOLATED FORM +FCC2 ; [.26F0.0020.0017][.2699.0020.0017] # ARABIC LIGATURE QAF WITH HAH INITIAL FORM +FC33 ; [.26F0.0020.001A][.2699.0020.001A] # ARABIC LIGATURE QAF WITH HAH ISOLATED FORM +FDF1 ; [.26F0.0020.001A][.270C.0020.001A][.2745.0020.001A] # ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM +FCC3 ; [.26F0.0020.0017][.2714.0020.0017] # ARABIC LIGATURE QAF WITH MEEM INITIAL FORM +FC34 ; [.26F0.0020.001A][.2714.0020.001A] # ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM +FDB4 ; [.26F0.0020.0017][.2714.0020.0017][.2699.0020.0017] # ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM +FD7E ; [.26F0.0020.0019][.2714.0020.0019][.2699.0020.0019] # ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM +FD7F ; [.26F0.0020.0019][.2714.0020.0019][.2714.0020.0019] # ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM +FDB2 ; [.26F0.0020.0019][.2714.0020.0019][.2737.0020.0019] # ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM +FC7E ; [.26F0.0020.0019][.2736.0020.0019] # ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM +FC35 ; [.26F0.0020.001A][.2736.0020.001A] # ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM +FC7F ; [.26F0.0020.0019][.2737.0020.0019] # ARABIC LIGATURE QAF WITH YEH FINAL FORM +FC36 ; [.26F0.0020.001A][.2737.0020.001A] # ARABIC LIGATURE QAF WITH YEH ISOLATED FORM +06A7 ; [.26F1.0020.0002] # ARABIC LETTER QAF WITH DOT ABOVE +08BC ; [.26F2.0020.0002] # ARABIC LETTER AFRICAN QAF +06A8 ; [.26F3.0020.0002] # ARABIC LETTER QAF WITH THREE DOTS ABOVE +08C4 ; [.26F4.0020.0002] # ARABIC LETTER AFRICAN QAF WITH THREE DOTS ABOVE +08A5 ; [.26F5.0020.0002] # ARABIC LETTER QAF WITH DOT BELOW +0643 ; [.26F6.0020.0002] # ARABIC LETTER KAF +1EE0A ; [.26F6.0020.0005] # ARABIC MATHEMATICAL KAF +1EE2A ; [.26F6.0020.0005] # ARABIC MATHEMATICAL INITIAL KAF +1EE6A ; [.26F6.0020.0005] # ARABIC MATHEMATICAL STRETCHED KAF +FEDB ; [.26F6.0020.0017] # ARABIC LETTER KAF INITIAL FORM +FEDC ; [.26F6.0020.0018] # ARABIC LETTER KAF MEDIAL FORM +FEDA ; [.26F6.0020.0019] # ARABIC LETTER KAF FINAL FORM +FED9 ; [.26F6.0020.001A] # ARABIC LETTER KAF ISOLATED FORM +FC80 ; [.26F6.0020.0019][.2672.0020.0019] # ARABIC LIGATURE KAF WITH ALEF FINAL FORM +FC37 ; [.26F6.0020.001A][.2672.0020.001A] # ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM +FCC4 ; [.26F6.0020.0017][.268F.0020.0017] # ARABIC LIGATURE KAF WITH JEEM INITIAL FORM +FC38 ; [.26F6.0020.001A][.268F.0020.001A] # ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM +FCC5 ; [.26F6.0020.0017][.2699.0020.0017] # ARABIC LIGATURE KAF WITH HAH INITIAL FORM +FC39 ; [.26F6.0020.001A][.2699.0020.001A] # ARABIC LIGATURE KAF WITH HAH ISOLATED FORM +FCC6 ; [.26F6.0020.0017][.269A.0020.0017] # ARABIC LIGATURE KAF WITH KHAH INITIAL FORM +FC3A ; [.26F6.0020.001A][.269A.0020.001A] # ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM +FCC7 ; [.26F6.0020.0017][.270C.0020.0017] # ARABIC LIGATURE KAF WITH LAM INITIAL FORM +FCEB ; [.26F6.0020.0018][.270C.0020.0018] # ARABIC LIGATURE KAF WITH LAM MEDIAL FORM +FC81 ; [.26F6.0020.0019][.270C.0020.0019] # ARABIC LIGATURE KAF WITH LAM FINAL FORM +FC3B ; [.26F6.0020.001A][.270C.0020.001A] # ARABIC LIGATURE KAF WITH LAM ISOLATED FORM +FCC8 ; [.26F6.0020.0017][.2714.0020.0017] # ARABIC LIGATURE KAF WITH MEEM INITIAL FORM +FCEC ; [.26F6.0020.0018][.2714.0020.0018] # ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM +FC82 ; [.26F6.0020.0019][.2714.0020.0019] # ARABIC LIGATURE KAF WITH MEEM FINAL FORM +FC3C ; [.26F6.0020.001A][.2714.0020.001A] # ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM +FDC3 ; [.26F6.0020.0017][.2714.0020.0017][.2714.0020.0017] # ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM +FDBB ; [.26F6.0020.0019][.2714.0020.0019][.2714.0020.0019] # ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM +FDB7 ; [.26F6.0020.0019][.2714.0020.0019][.2737.0020.0019] # ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM +FC83 ; [.26F6.0020.0019][.2736.0020.0019] # ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM +FC3D ; [.26F6.0020.001A][.2736.0020.001A] # ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM +FC84 ; [.26F6.0020.0019][.2737.0020.0019] # ARABIC LIGATURE KAF WITH YEH FINAL FORM +FC3E ; [.26F6.0020.001A][.2737.0020.001A] # ARABIC LIGATURE KAF WITH YEH ISOLATED FORM +06A9 ; [.26F7.0020.0002] # ARABIC LETTER KEHEH +FB90 ; [.26F7.0020.0017] # ARABIC LETTER KEHEH INITIAL FORM +FB91 ; [.26F7.0020.0018] # ARABIC LETTER KEHEH MEDIAL FORM +FB8F ; [.26F7.0020.0019] # ARABIC LETTER KEHEH FINAL FORM +FB8E ; [.26F7.0020.001A] # ARABIC LETTER KEHEH ISOLATED FORM +06AA ; [.26F8.0020.0002] # ARABIC LETTER SWASH KAF +06AB ; [.26F9.0020.0002] # ARABIC LETTER KAF WITH RING +06AC ; [.26FA.0020.0002] # ARABIC LETTER KAF WITH DOT ABOVE +077F ; [.26FB.0020.0002] # ARABIC LETTER KAF WITH TWO DOTS ABOVE +06AD ; [.26FC.0020.0002] # ARABIC LETTER NG +FBD5 ; [.26FC.0020.0017] # ARABIC LETTER NG INITIAL FORM +FBD6 ; [.26FC.0020.0018] # ARABIC LETTER NG MEDIAL FORM +FBD4 ; [.26FC.0020.0019] # ARABIC LETTER NG FINAL FORM +FBD3 ; [.26FC.0020.001A] # ARABIC LETTER NG ISOLATED FORM +06AE ; [.26FD.0020.0002] # ARABIC LETTER KAF WITH THREE DOTS BELOW +08B4 ; [.26FE.0020.0002] # ARABIC LETTER KAF WITH DOT BELOW +06AF ; [.26FF.0020.0002] # ARABIC LETTER GAF +FB94 ; [.26FF.0020.0017] # ARABIC LETTER GAF INITIAL FORM +FB95 ; [.26FF.0020.0018] # ARABIC LETTER GAF MEDIAL FORM +FB93 ; [.26FF.0020.0019] # ARABIC LETTER GAF FINAL FORM +FB92 ; [.26FF.0020.001A] # ARABIC LETTER GAF ISOLATED FORM +08B0 ; [.2700.0020.0002] # ARABIC LETTER GAF WITH INVERTED STROKE +06B0 ; [.2701.0020.0002] # ARABIC LETTER GAF WITH RING +06B1 ; [.2702.0020.0002] # ARABIC LETTER NGOEH +FB9C ; [.2702.0020.0017] # ARABIC LETTER NGOEH INITIAL FORM +FB9D ; [.2702.0020.0018] # ARABIC LETTER NGOEH MEDIAL FORM +FB9B ; [.2702.0020.0019] # ARABIC LETTER NGOEH FINAL FORM +FB9A ; [.2702.0020.001A] # ARABIC LETTER NGOEH ISOLATED FORM +06B2 ; [.2703.0020.0002] # ARABIC LETTER GAF WITH TWO DOTS BELOW +06B3 ; [.2704.0020.0002] # ARABIC LETTER GUEH +FB98 ; [.2704.0020.0017] # ARABIC LETTER GUEH INITIAL FORM +FB99 ; [.2704.0020.0018] # ARABIC LETTER GUEH MEDIAL FORM +FB97 ; [.2704.0020.0019] # ARABIC LETTER GUEH FINAL FORM +FB96 ; [.2704.0020.001A] # ARABIC LETTER GUEH ISOLATED FORM +06B4 ; [.2705.0020.0002] # ARABIC LETTER GAF WITH THREE DOTS ABOVE +0762 ; [.2706.0020.0002] # ARABIC LETTER KEHEH WITH DOT ABOVE +063B ; [.2707.0020.0002] # ARABIC LETTER KEHEH WITH TWO DOTS ABOVE +063C ; [.2708.0020.0002] # ARABIC LETTER KEHEH WITH THREE DOTS BELOW +0763 ; [.2709.0020.0002] # ARABIC LETTER KEHEH WITH THREE DOTS ABOVE +0764 ; [.270A.0020.0002] # ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW +08C2 ; [.270B.0020.0002] # ARABIC LETTER KEHEH WITH SMALL V +0644 ; [.270C.0020.0002] # ARABIC LETTER LAM +1EE0B ; [.270C.0020.0005] # ARABIC MATHEMATICAL LAM +1EE2B ; [.270C.0020.0005] # ARABIC MATHEMATICAL INITIAL LAM +1EE4B ; [.270C.0020.0005] # ARABIC MATHEMATICAL TAILED LAM +1EE8B ; [.270C.0020.0005] # ARABIC MATHEMATICAL LOOPED LAM +1EEAB ; [.270C.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK LAM +FEDF ; [.270C.0020.0017] # ARABIC LETTER LAM INITIAL FORM +FEE0 ; [.270C.0020.0018] # ARABIC LETTER LAM MEDIAL FORM +FEDE ; [.270C.0020.0019] # ARABIC LETTER LAM FINAL FORM +FEDD ; [.270C.0020.001A] # ARABIC LETTER LAM ISOLATED FORM +FEF6 ; [.270C.0020.0019][.2665.0020.0019] # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM +FEF5 ; [.270C.0020.001A][.2665.0020.001A] # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM +FEF8 ; [.270C.0020.0019][.2666.0020.0019] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM +FEF7 ; [.270C.0020.001A][.2666.0020.001A] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM +FEFA ; [.270C.0020.0019][.266A.0020.0019] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM +FEF9 ; [.270C.0020.001A][.266A.0020.001A] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM +FEFC ; [.270C.0020.0019][.2672.0020.0019] # ARABIC LIGATURE LAM WITH ALEF FINAL FORM +FEFB ; [.270C.0020.001A][.2672.0020.001A] # ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM +FCC9 ; [.270C.0020.0017][.268F.0020.0017] # ARABIC LIGATURE LAM WITH JEEM INITIAL FORM +FC3F ; [.270C.0020.001A][.268F.0020.001A] # ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM +FD83 ; [.270C.0020.0017][.268F.0020.0017][.268F.0020.0017] # ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM +FD84 ; [.270C.0020.0019][.268F.0020.0019][.268F.0020.0019] # ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM +FDBA ; [.270C.0020.0017][.268F.0020.0017][.2714.0020.0017] # ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM +FDBC ; [.270C.0020.0019][.268F.0020.0019][.2714.0020.0019] # ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM +FDAC ; [.270C.0020.0019][.268F.0020.0019][.2737.0020.0019] # ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM +FCCA ; [.270C.0020.0017][.2699.0020.0017] # ARABIC LIGATURE LAM WITH HAH INITIAL FORM +FC40 ; [.270C.0020.001A][.2699.0020.001A] # ARABIC LIGATURE LAM WITH HAH ISOLATED FORM +FDB5 ; [.270C.0020.0017][.2699.0020.0017][.2714.0020.0017] # ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM +FD80 ; [.270C.0020.0019][.2699.0020.0019][.2714.0020.0019] # ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM +FD82 ; [.270C.0020.0019][.2699.0020.0019][.2736.0020.0019] # ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM +FD81 ; [.270C.0020.0019][.2699.0020.0019][.2737.0020.0019] # ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM +FCCB ; [.270C.0020.0017][.269A.0020.0017] # ARABIC LIGATURE LAM WITH KHAH INITIAL FORM +FC41 ; [.270C.0020.001A][.269A.0020.001A] # ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM +FD86 ; [.270C.0020.0017][.269A.0020.0017][.2714.0020.0017] # ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM +FD85 ; [.270C.0020.0019][.269A.0020.0019][.2714.0020.0019] # ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM +FCCC ; [.270C.0020.0017][.2714.0020.0017] # ARABIC LIGATURE LAM WITH MEEM INITIAL FORM +FCED ; [.270C.0020.0018][.2714.0020.0018] # ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM +FC85 ; [.270C.0020.0019][.2714.0020.0019] # ARABIC LIGATURE LAM WITH MEEM FINAL FORM +FC42 ; [.270C.0020.001A][.2714.0020.001A] # ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM +FD88 ; [.270C.0020.0017][.2714.0020.0017][.2699.0020.0017] # ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM +FD87 ; [.270C.0020.0019][.2714.0020.0019][.2699.0020.0019] # ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM +FDAD ; [.270C.0020.0019][.2714.0020.0019][.2737.0020.0019] # ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM +FCCD ; [.270C.0020.0017][.2722.0020.0017] # ARABIC LIGATURE LAM WITH HEH INITIAL FORM +FC86 ; [.270C.0020.0019][.2736.0020.0019] # ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM +FC43 ; [.270C.0020.001A][.2736.0020.001A] # ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM +FC87 ; [.270C.0020.0019][.2737.0020.0019] # ARABIC LIGATURE LAM WITH YEH FINAL FORM +FC44 ; [.270C.0020.001A][.2737.0020.001A] # ARABIC LIGATURE LAM WITH YEH ISOLATED FORM +06B5 ; [.270D.0020.0002] # ARABIC LETTER LAM WITH SMALL V +06B6 ; [.270E.0020.0002] # ARABIC LETTER LAM WITH DOT ABOVE +06B7 ; [.270F.0020.0002] # ARABIC LETTER LAM WITH THREE DOTS ABOVE +06B8 ; [.2710.0020.0002] # ARABIC LETTER LAM WITH THREE DOTS BELOW +076A ; [.2711.0020.0002] # ARABIC LETTER LAM WITH BAR +08A6 ; [.2712.0020.0002] # ARABIC LETTER LAM WITH DOUBLE BAR +08C7 ; [.2713.0020.0002] # ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE +0645 ; [.2714.0020.0002] # ARABIC LETTER MEEM +1EE0C ; [.2714.0020.0005] # ARABIC MATHEMATICAL MEEM +1EE2C ; [.2714.0020.0005] # ARABIC MATHEMATICAL INITIAL MEEM +1EE6C ; [.2714.0020.0005] # ARABIC MATHEMATICAL STRETCHED MEEM +1EE8C ; [.2714.0020.0005] # ARABIC MATHEMATICAL LOOPED MEEM +1EEAC ; [.2714.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK MEEM +FEE3 ; [.2714.0020.0017] # ARABIC LETTER MEEM INITIAL FORM +FEE4 ; [.2714.0020.0018] # ARABIC LETTER MEEM MEDIAL FORM +FEE2 ; [.2714.0020.0019] # ARABIC LETTER MEEM FINAL FORM +FEE1 ; [.2714.0020.001A] # ARABIC LETTER MEEM ISOLATED FORM +06FE ; [.2714.0020.0004][.0000.0119.0004] # ARABIC SIGN SINDHI POSTPOSITION MEN +FC88 ; [.2714.0020.0019][.2672.0020.0019] # ARABIC LIGATURE MEEM WITH ALEF FINAL FORM +FCCE ; [.2714.0020.0017][.268F.0020.0017] # ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM +FC45 ; [.2714.0020.001A][.268F.0020.001A] # ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM +FD8C ; [.2714.0020.0017][.268F.0020.0017][.2699.0020.0017] # ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM +FD92 ; [.2714.0020.0017][.268F.0020.0017][.269A.0020.0017] # ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM +FD8D ; [.2714.0020.0017][.268F.0020.0017][.2714.0020.0017] # ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM +FDC0 ; [.2714.0020.0019][.268F.0020.0019][.2737.0020.0019] # ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM +FCCF ; [.2714.0020.0017][.2699.0020.0017] # ARABIC LIGATURE MEEM WITH HAH INITIAL FORM +FC46 ; [.2714.0020.001A][.2699.0020.001A] # ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM +FD89 ; [.2714.0020.0017][.2699.0020.0017][.268F.0020.0017] # ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM +FD8A ; [.2714.0020.0017][.2699.0020.0017][.2714.0020.0017] # ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM +FDF4 ; [.2714.0020.001A][.2699.0020.001A][.2714.0020.001A][.26A4.0020.001A] # ARABIC LIGATURE MOHAMMAD ISOLATED FORM +FD8B ; [.2714.0020.0019][.2699.0020.0019][.2737.0020.0019] # ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM +FCD0 ; [.2714.0020.0017][.269A.0020.0017] # ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM +FC47 ; [.2714.0020.001A][.269A.0020.001A] # ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM +FD8E ; [.2714.0020.0017][.269A.0020.0017][.268F.0020.0017] # ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM +FD8F ; [.2714.0020.0017][.269A.0020.0017][.2714.0020.0017] # ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM +FDB9 ; [.2714.0020.0019][.269A.0020.0019][.2737.0020.0019] # ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM +FCD1 ; [.2714.0020.0017][.2714.0020.0017] # ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM +FC89 ; [.2714.0020.0019][.2714.0020.0019] # ARABIC LIGATURE MEEM WITH MEEM FINAL FORM +FC48 ; [.2714.0020.001A][.2714.0020.001A] # ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM +FDB1 ; [.2714.0020.0019][.2714.0020.0019][.2737.0020.0019] # ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM +FC49 ; [.2714.0020.001A][.2736.0020.001A] # ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM +FC4A ; [.2714.0020.001A][.2737.0020.001A] # ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM +0765 ; [.2715.0020.0002] # ARABIC LETTER MEEM WITH DOT ABOVE +0766 ; [.2716.0020.0002] # ARABIC LETTER MEEM WITH DOT BELOW +08A7 ; [.2717.0020.0002] # ARABIC LETTER MEEM WITH THREE DOTS ABOVE +0646 ; [.2718.0020.0002] # ARABIC LETTER NOON +1EE0D ; [.2718.0020.0005] # ARABIC MATHEMATICAL NOON +1EE2D ; [.2718.0020.0005] # ARABIC MATHEMATICAL INITIAL NOON +1EE4D ; [.2718.0020.0005] # ARABIC MATHEMATICAL TAILED NOON +1EE6D ; [.2718.0020.0005] # ARABIC MATHEMATICAL STRETCHED NOON +1EE8D ; [.2718.0020.0005] # ARABIC MATHEMATICAL LOOPED NOON +1EEAD ; [.2718.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK NOON +FEE7 ; [.2718.0020.0017] # ARABIC LETTER NOON INITIAL FORM +FEE8 ; [.2718.0020.0018] # ARABIC LETTER NOON MEDIAL FORM +FEE6 ; [.2718.0020.0019] # ARABIC LETTER NOON FINAL FORM +FEE5 ; [.2718.0020.001A] # ARABIC LETTER NOON ISOLATED FORM +FCD2 ; [.2718.0020.0017][.268F.0020.0017] # ARABIC LIGATURE NOON WITH JEEM INITIAL FORM +FC4B ; [.2718.0020.001A][.268F.0020.001A] # ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM +FDB8 ; [.2718.0020.0017][.268F.0020.0017][.2699.0020.0017] # ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM +FDBD ; [.2718.0020.0019][.268F.0020.0019][.2699.0020.0019] # ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM +FD98 ; [.2718.0020.0017][.268F.0020.0017][.2714.0020.0017] # ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM +FD97 ; [.2718.0020.0019][.268F.0020.0019][.2714.0020.0019] # ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM +FD99 ; [.2718.0020.0019][.268F.0020.0019][.2736.0020.0019] # ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM +FDC7 ; [.2718.0020.0019][.268F.0020.0019][.2737.0020.0019] # ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM +FCD3 ; [.2718.0020.0017][.2699.0020.0017] # ARABIC LIGATURE NOON WITH HAH INITIAL FORM +FC4C ; [.2718.0020.001A][.2699.0020.001A] # ARABIC LIGATURE NOON WITH HAH ISOLATED FORM +FD95 ; [.2718.0020.0017][.2699.0020.0017][.2714.0020.0017] # ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM +FD96 ; [.2718.0020.0019][.2699.0020.0019][.2736.0020.0019] # ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM +FDB3 ; [.2718.0020.0019][.2699.0020.0019][.2737.0020.0019] # ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM +FCD4 ; [.2718.0020.0017][.269A.0020.0017] # ARABIC LIGATURE NOON WITH KHAH INITIAL FORM +FC4D ; [.2718.0020.001A][.269A.0020.001A] # ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM +FC8A ; [.2718.0020.0019][.26B3.0020.0019] # ARABIC LIGATURE NOON WITH REH FINAL FORM +FC8B ; [.2718.0020.0019][.26B4.0020.0019] # ARABIC LIGATURE NOON WITH ZAIN FINAL FORM +FCD5 ; [.2718.0020.0017][.2714.0020.0017] # ARABIC LIGATURE NOON WITH MEEM INITIAL FORM +FCEE ; [.2718.0020.0018][.2714.0020.0018] # ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM +FC8C ; [.2718.0020.0019][.2714.0020.0019] # ARABIC LIGATURE NOON WITH MEEM FINAL FORM +FC4E ; [.2718.0020.001A][.2714.0020.001A] # ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM +FD9B ; [.2718.0020.0019][.2714.0020.0019][.2736.0020.0019] # ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM +FD9A ; [.2718.0020.0019][.2714.0020.0019][.2737.0020.0019] # ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM +FC8D ; [.2718.0020.0019][.2718.0020.0019] # ARABIC LIGATURE NOON WITH NOON FINAL FORM +FCD6 ; [.2718.0020.0017][.2722.0020.0017] # ARABIC LIGATURE NOON WITH HEH INITIAL FORM +FCEF ; [.2718.0020.0018][.2722.0020.0018] # ARABIC LIGATURE NOON WITH HEH MEDIAL FORM +FC8E ; [.2718.0020.0019][.2736.0020.0019] # ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM +FC4F ; [.2718.0020.001A][.2736.0020.001A] # ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM +FC8F ; [.2718.0020.0019][.2737.0020.0019] # ARABIC LIGATURE NOON WITH YEH FINAL FORM +FC50 ; [.2718.0020.001A][.2737.0020.001A] # ARABIC LIGATURE NOON WITH YEH ISOLATED FORM +06BA ; [.2719.0020.0002] # ARABIC LETTER NOON GHUNNA +1EE1D ; [.2719.0020.0005] # ARABIC MATHEMATICAL DOTLESS NOON +1EE5D ; [.2719.0020.0005] # ARABIC MATHEMATICAL TAILED DOTLESS NOON +FB9F ; [.2719.0020.0019] # ARABIC LETTER NOON GHUNNA FINAL FORM +FB9E ; [.2719.0020.001A] # ARABIC LETTER NOON GHUNNA ISOLATED FORM +08BD ; [.271A.0020.0002] # ARABIC LETTER AFRICAN NOON +06BB ; [.271B.0020.0002] # ARABIC LETTER RNOON +FBA2 ; [.271B.0020.0017] # ARABIC LETTER RNOON INITIAL FORM +FBA3 ; [.271B.0020.0018] # ARABIC LETTER RNOON MEDIAL FORM +FBA1 ; [.271B.0020.0019] # ARABIC LETTER RNOON FINAL FORM +FBA0 ; [.271B.0020.001A] # ARABIC LETTER RNOON ISOLATED FORM +06BC ; [.271C.0020.0002] # ARABIC LETTER NOON WITH RING +06BD ; [.271D.0020.0002] # ARABIC LETTER NOON WITH THREE DOTS ABOVE +06B9 ; [.271E.0020.0002] # ARABIC LETTER NOON WITH DOT BELOW +0767 ; [.271F.0020.0002] # ARABIC LETTER NOON WITH TWO DOTS BELOW +0768 ; [.2720.0020.0002] # ARABIC LETTER NOON WITH SMALL TAH +0769 ; [.2721.0020.0002] # ARABIC LETTER NOON WITH SMALL V +0647 ; [.2722.0020.0002] # ARABIC LETTER HEH +1EE24 ; [.2722.0020.0005] # ARABIC MATHEMATICAL INITIAL HEH +1EE64 ; [.2722.0020.0005] # ARABIC MATHEMATICAL STRETCHED HEH +1EE84 ; [.2722.0020.0005] # ARABIC MATHEMATICAL LOOPED HEH +FEEB ; [.2722.0020.0017] # ARABIC LETTER HEH INITIAL FORM +FEEC ; [.2722.0020.0018] # ARABIC LETTER HEH MEDIAL FORM +FEEA ; [.2722.0020.0019] # ARABIC LETTER HEH FINAL FORM +FEE9 ; [.2722.0020.001A] # ARABIC LETTER HEH ISOLATED FORM +FCD9 ; [.2722.0020.0017][.0000.0098.0017] # ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM +FCD7 ; [.2722.0020.0017][.268F.0020.0017] # ARABIC LIGATURE HEH WITH JEEM INITIAL FORM +FC51 ; [.2722.0020.001A][.268F.0020.001A] # ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM +FCD8 ; [.2722.0020.0017][.2714.0020.0017] # ARABIC LIGATURE HEH WITH MEEM INITIAL FORM +FC52 ; [.2722.0020.001A][.2714.0020.001A] # ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM +FD93 ; [.2722.0020.0017][.2714.0020.0017][.268F.0020.0017] # ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM +FD94 ; [.2722.0020.0017][.2714.0020.0017][.2714.0020.0017] # ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM +FC53 ; [.2722.0020.001A][.2736.0020.001A] # ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM +FC54 ; [.2722.0020.001A][.2737.0020.001A] # ARABIC LIGATURE HEH WITH YEH ISOLATED FORM +06BE ; [.2723.0020.0002] # ARABIC LETTER HEH DOACHASHMEE +FBAC ; [.2723.0020.0017] # ARABIC LETTER HEH DOACHASHMEE INITIAL FORM +FBAD ; [.2723.0020.0018] # ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM +FBAB ; [.2723.0020.0019] # ARABIC LETTER HEH DOACHASHMEE FINAL FORM +FBAA ; [.2723.0020.001A] # ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM +06C1 ; [.2724.0020.0002] # ARABIC LETTER HEH GOAL +FBA8 ; [.2724.0020.0017] # ARABIC LETTER HEH GOAL INITIAL FORM +FBA9 ; [.2724.0020.0018] # ARABIC LETTER HEH GOAL MEDIAL FORM +FBA7 ; [.2724.0020.0019] # ARABIC LETTER HEH GOAL FINAL FORM +FBA6 ; [.2724.0020.001A] # ARABIC LETTER HEH GOAL ISOLATED FORM +06C2 ; [.2724.0020.0002][.0000.0083.0002] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE +06C3 ; [.2725.0020.0002] # ARABIC LETTER TEH MARBUTA GOAL +06FF ; [.2726.0020.0002] # ARABIC LETTER HEH WITH INVERTED V +06D5 ; [.2727.0020.0002] # ARABIC LETTER AE +06C0 ; [.2727.0020.0002][.0000.0083.0002] # ARABIC LETTER HEH WITH YEH ABOVE +FBA5 ; [.2727.0020.0019][.0000.0083.0019] # ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM +FBA4 ; [.2727.0020.001A][.0000.0083.001A] # ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM +0648 ; [.2728.0020.0002] # ARABIC LETTER WAW +06E5 ; [.2728.0020.0004] # ARABIC SMALL WAW +1EE05 ; [.2728.0020.0005] # ARABIC MATHEMATICAL WAW +1EE85 ; [.2728.0020.0005] # ARABIC MATHEMATICAL LOOPED WAW +1EEA5 ; [.2728.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK WAW +FEEE ; [.2728.0020.0019] # ARABIC LETTER WAW FINAL FORM +FEED ; [.2728.0020.001A] # ARABIC LETTER WAW ISOLATED FORM +0676 ; [.2728.0020.0004][.2664.0020.0004] # ARABIC LETTER HIGH HAMZA WAW +FDF8 ; [.2728.0020.001A][.26C6.0020.001A][.270C.0020.001A][.2714.0020.001A] # ARABIC LIGATURE WASALLAM ISOLATED FORM +06C4 ; [.2729.0020.0002] # ARABIC LETTER WAW WITH RING +06C5 ; [.272A.0020.0002] # ARABIC LETTER KIRGHIZ OE +FBE1 ; [.272A.0020.0019] # ARABIC LETTER KIRGHIZ OE FINAL FORM +FBE0 ; [.272A.0020.001A] # ARABIC LETTER KIRGHIZ OE ISOLATED FORM +06C6 ; [.272B.0020.0002] # ARABIC LETTER OE +FBDA ; [.272B.0020.0019] # ARABIC LETTER OE FINAL FORM +FBD9 ; [.272B.0020.001A] # ARABIC LETTER OE ISOLATED FORM +06C7 ; [.272C.0020.0002] # ARABIC LETTER U +FBD8 ; [.272C.0020.0019] # ARABIC LETTER U FINAL FORM +FBD7 ; [.272C.0020.001A] # ARABIC LETTER U ISOLATED FORM +0677 ; [.272C.0020.0004][.2664.0020.0004] # ARABIC LETTER U WITH HAMZA ABOVE +FBDD ; [.272C.0020.001A][.2664.0020.001A] # ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM +06C8 ; [.272D.0020.0002] # ARABIC LETTER YU +FBDC ; [.272D.0020.0019] # ARABIC LETTER YU FINAL FORM +FBDB ; [.272D.0020.001A] # ARABIC LETTER YU ISOLATED FORM +06C9 ; [.272E.0020.0002] # ARABIC LETTER KIRGHIZ YU +FBE3 ; [.272E.0020.0019] # ARABIC LETTER KIRGHIZ YU FINAL FORM +FBE2 ; [.272E.0020.001A] # ARABIC LETTER KIRGHIZ YU ISOLATED FORM +06CA ; [.272F.0020.0002] # ARABIC LETTER WAW WITH TWO DOTS ABOVE +06CB ; [.2730.0020.0002] # ARABIC LETTER VE +FBDF ; [.2730.0020.0019] # ARABIC LETTER VE FINAL FORM +FBDE ; [.2730.0020.001A] # ARABIC LETTER VE ISOLATED FORM +08B1 ; [.2731.0020.0002] # ARABIC LETTER STRAIGHT WAW +06CF ; [.2732.0020.0002] # ARABIC LETTER WAW WITH DOT ABOVE +0778 ; [.2733.0020.0002] # ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE +0779 ; [.2734.0020.0002] # ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE +08AB ; [.2735.0020.0002] # ARABIC LETTER WAW WITH DOT WITHIN +0649 ; [.2736.0020.0002] # ARABIC LETTER ALEF MAKSURA +FBE8 ; [.2736.0020.0017] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM +FBE9 ; [.2736.0020.0018] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM +FEF0 ; [.2736.0020.0019] # ARABIC LETTER ALEF MAKSURA FINAL FORM +FEEF ; [.2736.0020.001A] # ARABIC LETTER ALEF MAKSURA ISOLATED FORM +FC90 ; [.2736.0020.0019][.0000.0098.0019] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM +FC5D ; [.2736.0020.001A][.0000.0098.001A] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM +064A ; [.2737.0020.0002] # ARABIC LETTER YEH +06E6 ; [.2737.0020.0004] # ARABIC SMALL YEH +1EE09 ; [.2737.0020.0005] # ARABIC MATHEMATICAL YEH +1EE29 ; [.2737.0020.0005] # ARABIC MATHEMATICAL INITIAL YEH +1EE49 ; [.2737.0020.0005] # ARABIC MATHEMATICAL TAILED YEH +1EE69 ; [.2737.0020.0005] # ARABIC MATHEMATICAL STRETCHED YEH +1EE89 ; [.2737.0020.0005] # ARABIC MATHEMATICAL LOOPED YEH +1EEA9 ; [.2737.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK YEH +FEF3 ; [.2737.0020.0017] # ARABIC LETTER YEH INITIAL FORM +FEF4 ; [.2737.0020.0018] # ARABIC LETTER YEH MEDIAL FORM +FEF2 ; [.2737.0020.0019] # ARABIC LETTER YEH FINAL FORM +FEF1 ; [.2737.0020.001A] # ARABIC LETTER YEH ISOLATED FORM +0678 ; [.2737.0020.0004][.2664.0020.0004] # ARABIC LETTER HIGH HAMZA YEH +FCDA ; [.2737.0020.0017][.268F.0020.0017] # ARABIC LIGATURE YEH WITH JEEM INITIAL FORM +FC55 ; [.2737.0020.001A][.268F.0020.001A] # ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM +FDAF ; [.2737.0020.0019][.268F.0020.0019][.2737.0020.0019] # ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM +FCDB ; [.2737.0020.0017][.2699.0020.0017] # ARABIC LIGATURE YEH WITH HAH INITIAL FORM +FC56 ; [.2737.0020.001A][.2699.0020.001A] # ARABIC LIGATURE YEH WITH HAH ISOLATED FORM +FDAE ; [.2737.0020.0019][.2699.0020.0019][.2737.0020.0019] # ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM +FCDC ; [.2737.0020.0017][.269A.0020.0017] # ARABIC LIGATURE YEH WITH KHAH INITIAL FORM +FC57 ; [.2737.0020.001A][.269A.0020.001A] # ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM +FC91 ; [.2737.0020.0019][.26B3.0020.0019] # ARABIC LIGATURE YEH WITH REH FINAL FORM +FC92 ; [.2737.0020.0019][.26B4.0020.0019] # ARABIC LIGATURE YEH WITH ZAIN FINAL FORM +FCDD ; [.2737.0020.0017][.2714.0020.0017] # ARABIC LIGATURE YEH WITH MEEM INITIAL FORM +FCF0 ; [.2737.0020.0018][.2714.0020.0018] # ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM +FC93 ; [.2737.0020.0019][.2714.0020.0019] # ARABIC LIGATURE YEH WITH MEEM FINAL FORM +FC58 ; [.2737.0020.001A][.2714.0020.001A] # ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM +FD9D ; [.2737.0020.0017][.2714.0020.0017][.2714.0020.0017] # ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM +FD9C ; [.2737.0020.0019][.2714.0020.0019][.2714.0020.0019] # ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM +FDB0 ; [.2737.0020.0019][.2714.0020.0019][.2737.0020.0019] # ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM +FC94 ; [.2737.0020.0019][.2718.0020.0019] # ARABIC LIGATURE YEH WITH NOON FINAL FORM +FCDE ; [.2737.0020.0017][.2722.0020.0017] # ARABIC LIGATURE YEH WITH HEH INITIAL FORM +FCF1 ; [.2737.0020.0018][.2722.0020.0018] # ARABIC LIGATURE YEH WITH HEH MEDIAL FORM +FC95 ; [.2737.0020.0019][.2736.0020.0019] # ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM +FC59 ; [.2737.0020.001A][.2736.0020.001A] # ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM +FC96 ; [.2737.0020.0019][.2737.0020.0019] # ARABIC LIGATURE YEH WITH YEH FINAL FORM +FC5A ; [.2737.0020.001A][.2737.0020.001A] # ARABIC LIGATURE YEH WITH YEH ISOLATED FORM +06CC ; [.2738.0020.0002] # ARABIC LETTER FARSI YEH +FBFE ; [.2738.0020.0017] # ARABIC LETTER FARSI YEH INITIAL FORM +FBFF ; [.2738.0020.0018] # ARABIC LETTER FARSI YEH MEDIAL FORM +FBFD ; [.2738.0020.0019] # ARABIC LETTER FARSI YEH FINAL FORM +FBFC ; [.2738.0020.001A] # ARABIC LETTER FARSI YEH ISOLATED FORM +06CD ; [.2739.0020.0002] # ARABIC LETTER YEH WITH TAIL +06CE ; [.273A.0020.0002] # ARABIC LETTER YEH WITH SMALL V +06D0 ; [.273B.0020.0002] # ARABIC LETTER E +FBE6 ; [.273B.0020.0017] # ARABIC LETTER E INITIAL FORM +FBE7 ; [.273B.0020.0018] # ARABIC LETTER E MEDIAL FORM +FBE5 ; [.273B.0020.0019] # ARABIC LETTER E FINAL FORM +FBE4 ; [.273B.0020.001A] # ARABIC LETTER E ISOLATED FORM +06D1 ; [.273C.0020.0002] # ARABIC LETTER YEH WITH THREE DOTS BELOW +063D ; [.273D.0020.0002] # ARABIC LETTER FARSI YEH WITH INVERTED V +063E ; [.273E.0020.0002] # ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE +063F ; [.273F.0020.0002] # ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE +0620 ; [.2740.0020.0002] # ARABIC LETTER KASHMIRI YEH +0775 ; [.2741.0020.0002] # ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE +0776 ; [.2742.0020.0002] # ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE +0777 ; [.2743.0020.0002] # ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW +08BA ; [.2744.0020.0002] # ARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVE +06D2 ; [.2745.0020.0002] # ARABIC LETTER YEH BARREE +FBAF ; [.2745.0020.0019] # ARABIC LETTER YEH BARREE FINAL FORM +FBAE ; [.2745.0020.001A] # ARABIC LETTER YEH BARREE ISOLATED FORM +06D3 ; [.2745.0020.0002][.0000.0083.0002] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE +FBB1 ; [.2745.0020.0019][.0000.0083.0019] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM +FBB0 ; [.2745.0020.001A][.0000.0083.001A] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM +077A ; [.2746.0020.0002] # ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE +077B ; [.2747.0020.0002] # ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE +0710 ; [.2748.0020.0002] # SYRIAC LETTER ALAPH +0712 ; [.2749.0020.0002] # SYRIAC LETTER BETH +072D ; [.2749.0020.0004][.0000.011A.0004] # SYRIAC LETTER PERSIAN BHETH +0713 ; [.274A.0020.0002] # SYRIAC LETTER GAMAL +0714 ; [.274A.0020.0004][.0000.0119.0004] # SYRIAC LETTER GAMAL GARSHUNI +072E ; [.274A.0020.0004][.0000.011A.0004] # SYRIAC LETTER PERSIAN GHAMAL +0716 ; [.274B.0020.0002] # SYRIAC LETTER DOTLESS DALATH RISH +0715 ; [.274C.0020.0002] # SYRIAC LETTER DALATH +072F ; [.274C.0020.0004][.0000.011A.0004] # SYRIAC LETTER PERSIAN DHALATH +0717 ; [.274D.0020.0002] # SYRIAC LETTER HE +0718 ; [.274E.0020.0002] # SYRIAC LETTER WAW +0719 ; [.274F.0020.0002] # SYRIAC LETTER ZAIN +074D ; [.2750.0020.0002] # SYRIAC LETTER SOGDIAN ZHAIN +071A ; [.2751.0020.0002] # SYRIAC LETTER HETH +071B ; [.2752.0020.0002] # SYRIAC LETTER TETH +071C ; [.2752.0020.0004][.0000.0119.0004] # SYRIAC LETTER TETH GARSHUNI +071D ; [.2753.0020.0002] # SYRIAC LETTER YUDH +071E ; [.2754.0020.0002] # SYRIAC LETTER YUDH HE +071F ; [.2755.0020.0002] # SYRIAC LETTER KAPH +074E ; [.2756.0020.0002] # SYRIAC LETTER SOGDIAN KHAPH +0720 ; [.2757.0020.0002] # SYRIAC LETTER LAMADH +0721 ; [.2758.0020.0002] # SYRIAC LETTER MIM +0722 ; [.2759.0020.0002] # SYRIAC LETTER NUN +0723 ; [.275A.0020.0002] # SYRIAC LETTER SEMKATH +0724 ; [.275A.0020.0019] # SYRIAC LETTER FINAL SEMKATH +0725 ; [.275B.0020.0002] # SYRIAC LETTER E +0726 ; [.275C.0020.0002] # SYRIAC LETTER PE +0727 ; [.275C.0020.0004][.0000.0119.0004] # SYRIAC LETTER REVERSED PE +074F ; [.275D.0020.0002] # SYRIAC LETTER SOGDIAN FE +0728 ; [.275E.0020.0002] # SYRIAC LETTER SADHE +0729 ; [.275F.0020.0002] # SYRIAC LETTER QAPH +072A ; [.2760.0020.0002] # SYRIAC LETTER RISH +072B ; [.2761.0020.0002] # SYRIAC LETTER SHIN +072C ; [.2762.0020.0002] # SYRIAC LETTER TAW +0860 ; [.2763.0020.0002] # SYRIAC LETTER MALAYALAM NGA +0861 ; [.2764.0020.0002] # SYRIAC LETTER MALAYALAM JA +0862 ; [.2765.0020.0002] # SYRIAC LETTER MALAYALAM NYA +0863 ; [.2766.0020.0002] # SYRIAC LETTER MALAYALAM TTA +0864 ; [.2767.0020.0002] # SYRIAC LETTER MALAYALAM NNA +0865 ; [.2768.0020.0002] # SYRIAC LETTER MALAYALAM NNNA +0866 ; [.2769.0020.0002] # SYRIAC LETTER MALAYALAM BHA +0867 ; [.276A.0020.0002] # SYRIAC LETTER MALAYALAM RA +0868 ; [.276B.0020.0002] # SYRIAC LETTER MALAYALAM LLA +0869 ; [.276C.0020.0002] # SYRIAC LETTER MALAYALAM LLLA +086A ; [.276D.0020.0002] # SYRIAC LETTER MALAYALAM SSA +0840 ; [.276E.0020.0002] # MANDAIC LETTER HALQA +0841 ; [.276F.0020.0002] # MANDAIC LETTER AB +0842 ; [.2770.0020.0002] # MANDAIC LETTER AG +0843 ; [.2771.0020.0002] # MANDAIC LETTER AD +0844 ; [.2772.0020.0002] # MANDAIC LETTER AH +0845 ; [.2773.0020.0002] # MANDAIC LETTER USHENNA +0846 ; [.2774.0020.0002] # MANDAIC LETTER AZ +0847 ; [.2775.0020.0002] # MANDAIC LETTER IT +0848 ; [.2776.0020.0002] # MANDAIC LETTER ATT +0849 ; [.2777.0020.0002] # MANDAIC LETTER AKSA +084A ; [.2778.0020.0002] # MANDAIC LETTER AK +084B ; [.2779.0020.0002] # MANDAIC LETTER AL +084C ; [.277A.0020.0002] # MANDAIC LETTER AM +084D ; [.277B.0020.0002] # MANDAIC LETTER AN +084E ; [.277C.0020.0002] # MANDAIC LETTER AS +084F ; [.277D.0020.0002] # MANDAIC LETTER IN +0850 ; [.277E.0020.0002] # MANDAIC LETTER AP +0851 ; [.277F.0020.0002] # MANDAIC LETTER ASZ +0852 ; [.2780.0020.0002] # MANDAIC LETTER AQ +0853 ; [.2781.0020.0002] # MANDAIC LETTER AR +0854 ; [.2782.0020.0002] # MANDAIC LETTER ASH +0855 ; [.2783.0020.0002] # MANDAIC LETTER AT +0856 ; [.2784.0020.0002] # MANDAIC LETTER DUSHENNA +0857 ; [.2785.0020.0002] # MANDAIC LETTER KAD +0858 ; [.2786.0020.0002] # MANDAIC LETTER AIN +0780 ; [.2787.0020.0002] # THAANA LETTER HAA +0799 ; [.2788.0020.0002] # THAANA LETTER HHAA +079A ; [.2789.0020.0002] # THAANA LETTER KHAA +0781 ; [.278A.0020.0002] # THAANA LETTER SHAVIYANI +0782 ; [.278B.0020.0002] # THAANA LETTER NOONU +0783 ; [.278C.0020.0002] # THAANA LETTER RAA +079C ; [.278D.0020.0002] # THAANA LETTER ZAA +0784 ; [.278E.0020.0002] # THAANA LETTER BAA +0785 ; [.278F.0020.0002] # THAANA LETTER LHAVIYANI +0786 ; [.2790.0020.0002] # THAANA LETTER KAAFU +0787 ; [.2791.0020.0002] # THAANA LETTER ALIFU +07A2 ; [.2792.0020.0002] # THAANA LETTER AINU +07A3 ; [.2793.0020.0002] # THAANA LETTER GHAINU +0788 ; [.2794.0020.0002] # THAANA LETTER VAAVU +07A5 ; [.2795.0020.0002] # THAANA LETTER WAAVU +0789 ; [.2796.0020.0002] # THAANA LETTER MEEMU +078A ; [.2797.0020.0002] # THAANA LETTER FAAFU +078B ; [.2798.0020.0002] # THAANA LETTER DHAALU +079B ; [.2799.0020.0002] # THAANA LETTER THAALU +078C ; [.279A.0020.0002] # THAANA LETTER THAA +0798 ; [.279B.0020.0002] # THAANA LETTER TTAA +07A0 ; [.279C.0020.0002] # THAANA LETTER TO +07A1 ; [.279D.0020.0002] # THAANA LETTER ZO +078D ; [.279E.0020.0002] # THAANA LETTER LAAMU +078E ; [.279F.0020.0002] # THAANA LETTER GAAFU +07A4 ; [.27A0.0020.0002] # THAANA LETTER QAAFU +078F ; [.27A1.0020.0002] # THAANA LETTER GNAVIYANI +0790 ; [.27A2.0020.0002] # THAANA LETTER SEENU +079D ; [.27A3.0020.0002] # THAANA LETTER SHEENU +079E ; [.27A4.0020.0002] # THAANA LETTER SAADHU +079F ; [.27A5.0020.0002] # THAANA LETTER DAADHU +0791 ; [.27A6.0020.0002] # THAANA LETTER DAVIYANI +0792 ; [.27A7.0020.0002] # THAANA LETTER ZAVIYANI +0793 ; [.27A8.0020.0002] # THAANA LETTER TAVIYANI +0794 ; [.27A9.0020.0002] # THAANA LETTER YAA +0795 ; [.27AA.0020.0002] # THAANA LETTER PAVIYANI +0796 ; [.27AB.0020.0002] # THAANA LETTER JAVIYANI +0797 ; [.27AC.0020.0002] # THAANA LETTER CHAVIYANI +07B1 ; [.27AD.0020.0002] # THAANA LETTER NAA +07A6 ; [.27AE.0020.0002] # THAANA ABAFILI +07A7 ; [.27AF.0020.0002] # THAANA AABAAFILI +07A8 ; [.27B0.0020.0002] # THAANA IBIFILI +07A9 ; [.27B1.0020.0002] # THAANA EEBEEFILI +07AA ; [.27B2.0020.0002] # THAANA UBUFILI +07AB ; [.27B3.0020.0002] # THAANA OOBOOFILI +07AC ; [.27B4.0020.0002] # THAANA EBEFILI +07AD ; [.27B5.0020.0002] # THAANA EYBEYFILI +07AE ; [.27B6.0020.0002] # THAANA OBOFILI +07AF ; [.27B7.0020.0002] # THAANA OABOAFILI +07B0 ; [.27B8.0020.0002] # THAANA SUKUN +07CA ; [.27B9.0020.0002] # NKO LETTER A +07CB ; [.27BA.0020.0002] # NKO LETTER EE +07CC ; [.27BB.0020.0002] # NKO LETTER I +07CD ; [.27BC.0020.0002] # NKO LETTER E +07CE ; [.27BD.0020.0002] # NKO LETTER U +07CF ; [.27BE.0020.0002] # NKO LETTER OO +07D0 ; [.27BF.0020.0002] # NKO LETTER O +07D1 ; [.27C0.0020.0002] # NKO LETTER DAGBASINNA +07D2 ; [.27C1.0020.0002] # NKO LETTER N +07D3 ; [.27C2.0020.0002] # NKO LETTER BA +07D4 ; [.27C3.0020.0002] # NKO LETTER PA +07D5 ; [.27C4.0020.0002] # NKO LETTER TA +07D6 ; [.27C5.0020.0002] # NKO LETTER JA +07E8 ; [.27C5.0020.0004][.0000.0118.0004] # NKO LETTER JONA JA +07D7 ; [.27C6.0020.0002] # NKO LETTER CHA +07E9 ; [.27C6.0020.0004][.0000.0118.0004] # NKO LETTER JONA CHA +07D8 ; [.27C7.0020.0002] # NKO LETTER DA +07D9 ; [.27C8.0020.0002] # NKO LETTER RA +07EA ; [.27C8.0020.0004][.0000.0118.0004] # NKO LETTER JONA RA +07DA ; [.27C9.0020.0002] # NKO LETTER RRA +07DB ; [.27CA.0020.0002] # NKO LETTER SA +07DC ; [.27CB.0020.0002] # NKO LETTER GBA +07DD ; [.27CC.0020.0002] # NKO LETTER FA +07DE ; [.27CD.0020.0002] # NKO LETTER KA +07DF ; [.27CE.0020.0002] # NKO LETTER LA +07E0 ; [.27CF.0020.0002] # NKO LETTER NA WOLOSO +07E1 ; [.27D0.0020.0002] # NKO LETTER MA +07E2 ; [.27D1.0020.0002] # NKO LETTER NYA +07E3 ; [.27D2.0020.0002] # NKO LETTER NA +07E4 ; [.27D3.0020.0002] # NKO LETTER HA +07E5 ; [.27D4.0020.0002] # NKO LETTER WA +07E6 ; [.27D5.0020.0002] # NKO LETTER YA +07E7 ; [.27D6.0020.0002] # NKO LETTER NYA WOLOSO +07F4 ; [.27D7.0020.0002] # NKO HIGH TONE APOSTROPHE +07F5 ; [.27D8.0020.0002] # NKO LOW TONE APOSTROPHE +2D30 ; [.27D9.0020.0002] # TIFINAGH LETTER YA +2D31 ; [.27DA.0020.0002] # TIFINAGH LETTER YAB +2D32 ; [.27DB.0020.0002] # TIFINAGH LETTER YABH +2D33 ; [.27DC.0020.0002] # TIFINAGH LETTER YAG +2D34 ; [.27DD.0020.0002] # TIFINAGH LETTER YAGHH +2D35 ; [.27DE.0020.0002] # TIFINAGH LETTER BERBER ACADEMY YAJ +2D36 ; [.27DF.0020.0002] # TIFINAGH LETTER YAJ +2D37 ; [.27E0.0020.0002] # TIFINAGH LETTER YAD +2D38 ; [.27E1.0020.0002] # TIFINAGH LETTER YADH +2D39 ; [.27E2.0020.0002] # TIFINAGH LETTER YADD +2D3A ; [.27E3.0020.0002] # TIFINAGH LETTER YADDH +2D3B ; [.27E4.0020.0002] # TIFINAGH LETTER YEY +2D66 ; [.27E5.0020.0002] # TIFINAGH LETTER YE +2D3C ; [.27E6.0020.0002] # TIFINAGH LETTER YAF +2D3D ; [.27E7.0020.0002] # TIFINAGH LETTER YAK +2D3E ; [.27E8.0020.0002] # TIFINAGH LETTER TUAREG YAK +2D3F ; [.27E9.0020.0002] # TIFINAGH LETTER YAKHH +2D40 ; [.27EA.0020.0002] # TIFINAGH LETTER YAH +2D41 ; [.27EB.0020.0002] # TIFINAGH LETTER BERBER ACADEMY YAH +2D42 ; [.27EC.0020.0002] # TIFINAGH LETTER TUAREG YAH +2D43 ; [.27ED.0020.0002] # TIFINAGH LETTER YAHH +2D44 ; [.27EE.0020.0002] # TIFINAGH LETTER YAA +2D45 ; [.27EF.0020.0002] # TIFINAGH LETTER YAKH +2D46 ; [.27F0.0020.0002] # TIFINAGH LETTER TUAREG YAKH +2D47 ; [.27F1.0020.0002] # TIFINAGH LETTER YAQ +2D48 ; [.27F2.0020.0002] # TIFINAGH LETTER TUAREG YAQ +2D49 ; [.27F3.0020.0002] # TIFINAGH LETTER YI +2D4A ; [.27F4.0020.0002] # TIFINAGH LETTER YAZH +2D4B ; [.27F5.0020.0002] # TIFINAGH LETTER AHAGGAR YAZH +2D4C ; [.27F6.0020.0002] # TIFINAGH LETTER TUAREG YAZH +2D4D ; [.27F7.0020.0002] # TIFINAGH LETTER YAL +2D4E ; [.27F8.0020.0002] # TIFINAGH LETTER YAM +2D4F ; [.27F9.0020.0002] # TIFINAGH LETTER YAN +2D50 ; [.27FA.0020.0002] # TIFINAGH LETTER TUAREG YAGN +2D51 ; [.27FB.0020.0002] # TIFINAGH LETTER TUAREG YANG +2D52 ; [.27FC.0020.0002] # TIFINAGH LETTER YAP +2D53 ; [.27FD.0020.0002] # TIFINAGH LETTER YU +2D67 ; [.27FE.0020.0002] # TIFINAGH LETTER YO +2D54 ; [.27FF.0020.0002] # TIFINAGH LETTER YAR +2D55 ; [.2800.0020.0002] # TIFINAGH LETTER YARR +2D56 ; [.2801.0020.0002] # TIFINAGH LETTER YAGH +2D57 ; [.2802.0020.0002] # TIFINAGH LETTER TUAREG YAGH +2D58 ; [.2803.0020.0002] # TIFINAGH LETTER AYER YAGH +2D59 ; [.2804.0020.0002] # TIFINAGH LETTER YAS +2D5A ; [.2805.0020.0002] # TIFINAGH LETTER YASS +2D5B ; [.2806.0020.0002] # TIFINAGH LETTER YASH +2D5C ; [.2807.0020.0002] # TIFINAGH LETTER YAT +2D5D ; [.2808.0020.0002] # TIFINAGH LETTER YATH +2D5E ; [.2809.0020.0002] # TIFINAGH LETTER YACH +2D5F ; [.280A.0020.0002] # TIFINAGH LETTER YATT +2D60 ; [.280B.0020.0002] # TIFINAGH LETTER YAV +2D61 ; [.280C.0020.0002] # TIFINAGH LETTER YAW +2D62 ; [.280D.0020.0002] # TIFINAGH LETTER YAY +2D63 ; [.280E.0020.0002] # TIFINAGH LETTER YAZ +2D64 ; [.280F.0020.0002] # TIFINAGH LETTER TAWELLEMET YAZ +2D65 ; [.2810.0020.0002] # TIFINAGH LETTER YAZZ +2D6F ; [.2811.0020.0002] # TIFINAGH MODIFIER LETTER LABIALIZATION MARK +1200 ; [.2812.0020.0002] # ETHIOPIC SYLLABLE HA +1201 ; [.2813.0020.0002] # ETHIOPIC SYLLABLE HU +1202 ; [.2814.0020.0002] # ETHIOPIC SYLLABLE HI +1203 ; [.2815.0020.0002] # ETHIOPIC SYLLABLE HAA +1204 ; [.2816.0020.0002] # ETHIOPIC SYLLABLE HEE +1205 ; [.2817.0020.0002] # ETHIOPIC SYLLABLE HE +1206 ; [.2818.0020.0002] # ETHIOPIC SYLLABLE HO +1207 ; [.2819.0020.0002] # ETHIOPIC SYLLABLE HOA +1208 ; [.281A.0020.0002] # ETHIOPIC SYLLABLE LA +1209 ; [.281B.0020.0002] # ETHIOPIC SYLLABLE LU +120A ; [.281C.0020.0002] # ETHIOPIC SYLLABLE LI +120B ; [.281D.0020.0002] # ETHIOPIC SYLLABLE LAA +120C ; [.281E.0020.0002] # ETHIOPIC SYLLABLE LEE +120D ; [.281F.0020.0002] # ETHIOPIC SYLLABLE LE +120E ; [.2820.0020.0002] # ETHIOPIC SYLLABLE LO +120F ; [.2821.0020.0002] # ETHIOPIC SYLLABLE LWA +2D80 ; [.2822.0020.0002] # ETHIOPIC SYLLABLE LOA +1210 ; [.2823.0020.0002] # ETHIOPIC SYLLABLE HHA +1211 ; [.2824.0020.0002] # ETHIOPIC SYLLABLE HHU +1212 ; [.2825.0020.0002] # ETHIOPIC SYLLABLE HHI +1213 ; [.2826.0020.0002] # ETHIOPIC SYLLABLE HHAA +1214 ; [.2827.0020.0002] # ETHIOPIC SYLLABLE HHEE +1215 ; [.2828.0020.0002] # ETHIOPIC SYLLABLE HHE +1216 ; [.2829.0020.0002] # ETHIOPIC SYLLABLE HHO +1217 ; [.282A.0020.0002] # ETHIOPIC SYLLABLE HHWA +1218 ; [.282B.0020.0002] # ETHIOPIC SYLLABLE MA +1219 ; [.282C.0020.0002] # ETHIOPIC SYLLABLE MU +121A ; [.282D.0020.0002] # ETHIOPIC SYLLABLE MI +121B ; [.282E.0020.0002] # ETHIOPIC SYLLABLE MAA +121C ; [.282F.0020.0002] # ETHIOPIC SYLLABLE MEE +121D ; [.2830.0020.0002] # ETHIOPIC SYLLABLE ME +121E ; [.2831.0020.0002] # ETHIOPIC SYLLABLE MO +121F ; [.2832.0020.0002] # ETHIOPIC SYLLABLE MWA +1380 ; [.2833.0020.0002] # ETHIOPIC SYLLABLE SEBATBEIT MWA +1381 ; [.2834.0020.0002] # ETHIOPIC SYLLABLE MWI +1382 ; [.2835.0020.0002] # ETHIOPIC SYLLABLE MWEE +1383 ; [.2836.0020.0002] # ETHIOPIC SYLLABLE MWE +2D81 ; [.2837.0020.0002] # ETHIOPIC SYLLABLE MOA +1220 ; [.2838.0020.0002] # ETHIOPIC SYLLABLE SZA +1221 ; [.2839.0020.0002] # ETHIOPIC SYLLABLE SZU +1222 ; [.283A.0020.0002] # ETHIOPIC SYLLABLE SZI +1223 ; [.283B.0020.0002] # ETHIOPIC SYLLABLE SZAA +1224 ; [.283C.0020.0002] # ETHIOPIC SYLLABLE SZEE +1225 ; [.283D.0020.0002] # ETHIOPIC SYLLABLE SZE +1226 ; [.283E.0020.0002] # ETHIOPIC SYLLABLE SZO +1227 ; [.283F.0020.0002] # ETHIOPIC SYLLABLE SZWA +1228 ; [.2840.0020.0002] # ETHIOPIC SYLLABLE RA +1229 ; [.2841.0020.0002] # ETHIOPIC SYLLABLE RU +122A ; [.2842.0020.0002] # ETHIOPIC SYLLABLE RI +122B ; [.2843.0020.0002] # ETHIOPIC SYLLABLE RAA +122C ; [.2844.0020.0002] # ETHIOPIC SYLLABLE REE +122D ; [.2845.0020.0002] # ETHIOPIC SYLLABLE RE +122E ; [.2846.0020.0002] # ETHIOPIC SYLLABLE RO +122F ; [.2847.0020.0002] # ETHIOPIC SYLLABLE RWA +2D82 ; [.2848.0020.0002] # ETHIOPIC SYLLABLE ROA +1230 ; [.2849.0020.0002] # ETHIOPIC SYLLABLE SA +1231 ; [.284A.0020.0002] # ETHIOPIC SYLLABLE SU +1232 ; [.284B.0020.0002] # ETHIOPIC SYLLABLE SI +1233 ; [.284C.0020.0002] # ETHIOPIC SYLLABLE SAA +1234 ; [.284D.0020.0002] # ETHIOPIC SYLLABLE SEE +1235 ; [.284E.0020.0002] # ETHIOPIC SYLLABLE SE +1236 ; [.284F.0020.0002] # ETHIOPIC SYLLABLE SO +1237 ; [.2850.0020.0002] # ETHIOPIC SYLLABLE SWA +2D83 ; [.2851.0020.0002] # ETHIOPIC SYLLABLE SOA +AB01 ; [.2852.0020.0002] # ETHIOPIC SYLLABLE TTHU +AB02 ; [.2853.0020.0002] # ETHIOPIC SYLLABLE TTHI +AB03 ; [.2854.0020.0002] # ETHIOPIC SYLLABLE TTHAA +AB04 ; [.2855.0020.0002] # ETHIOPIC SYLLABLE TTHEE +AB05 ; [.2856.0020.0002] # ETHIOPIC SYLLABLE TTHE +AB06 ; [.2857.0020.0002] # ETHIOPIC SYLLABLE TTHO +1238 ; [.2858.0020.0002] # ETHIOPIC SYLLABLE SHA +1239 ; [.2859.0020.0002] # ETHIOPIC SYLLABLE SHU +123A ; [.285A.0020.0002] # ETHIOPIC SYLLABLE SHI +123B ; [.285B.0020.0002] # ETHIOPIC SYLLABLE SHAA +123C ; [.285C.0020.0002] # ETHIOPIC SYLLABLE SHEE +123D ; [.285D.0020.0002] # ETHIOPIC SYLLABLE SHE +123E ; [.285E.0020.0002] # ETHIOPIC SYLLABLE SHO +123F ; [.285F.0020.0002] # ETHIOPIC SYLLABLE SHWA +2D84 ; [.2860.0020.0002] # ETHIOPIC SYLLABLE SHOA +1240 ; [.2861.0020.0002] # ETHIOPIC SYLLABLE QA +1241 ; [.2862.0020.0002] # ETHIOPIC SYLLABLE QU +1242 ; [.2863.0020.0002] # ETHIOPIC SYLLABLE QI +1243 ; [.2864.0020.0002] # ETHIOPIC SYLLABLE QAA +1244 ; [.2865.0020.0002] # ETHIOPIC SYLLABLE QEE +1245 ; [.2866.0020.0002] # ETHIOPIC SYLLABLE QE +1246 ; [.2867.0020.0002] # ETHIOPIC SYLLABLE QO +1247 ; [.2868.0020.0002] # ETHIOPIC SYLLABLE QOA +1248 ; [.2869.0020.0002] # ETHIOPIC SYLLABLE QWA +124A ; [.286A.0020.0002] # ETHIOPIC SYLLABLE QWI +124B ; [.286B.0020.0002] # ETHIOPIC SYLLABLE QWAA +124C ; [.286C.0020.0002] # ETHIOPIC SYLLABLE QWEE +124D ; [.286D.0020.0002] # ETHIOPIC SYLLABLE QWE +1250 ; [.286E.0020.0002] # ETHIOPIC SYLLABLE QHA +1251 ; [.286F.0020.0002] # ETHIOPIC SYLLABLE QHU +1252 ; [.2870.0020.0002] # ETHIOPIC SYLLABLE QHI +1253 ; [.2871.0020.0002] # ETHIOPIC SYLLABLE QHAA +1254 ; [.2872.0020.0002] # ETHIOPIC SYLLABLE QHEE +1255 ; [.2873.0020.0002] # ETHIOPIC SYLLABLE QHE +1256 ; [.2874.0020.0002] # ETHIOPIC SYLLABLE QHO +1258 ; [.2875.0020.0002] # ETHIOPIC SYLLABLE QHWA +125A ; [.2876.0020.0002] # ETHIOPIC SYLLABLE QHWI +125B ; [.2877.0020.0002] # ETHIOPIC SYLLABLE QHWAA +125C ; [.2878.0020.0002] # ETHIOPIC SYLLABLE QHWEE +125D ; [.2879.0020.0002] # ETHIOPIC SYLLABLE QHWE +1260 ; [.287A.0020.0002] # ETHIOPIC SYLLABLE BA +1261 ; [.287B.0020.0002] # ETHIOPIC SYLLABLE BU +1262 ; [.287C.0020.0002] # ETHIOPIC SYLLABLE BI +1263 ; [.287D.0020.0002] # ETHIOPIC SYLLABLE BAA +1264 ; [.287E.0020.0002] # ETHIOPIC SYLLABLE BEE +1265 ; [.287F.0020.0002] # ETHIOPIC SYLLABLE BE +1266 ; [.2880.0020.0002] # ETHIOPIC SYLLABLE BO +1267 ; [.2881.0020.0002] # ETHIOPIC SYLLABLE BWA +1384 ; [.2882.0020.0002] # ETHIOPIC SYLLABLE SEBATBEIT BWA +1385 ; [.2883.0020.0002] # ETHIOPIC SYLLABLE BWI +1386 ; [.2884.0020.0002] # ETHIOPIC SYLLABLE BWEE +1387 ; [.2885.0020.0002] # ETHIOPIC SYLLABLE BWE +2D85 ; [.2886.0020.0002] # ETHIOPIC SYLLABLE BOA +1268 ; [.2887.0020.0002] # ETHIOPIC SYLLABLE VA +1269 ; [.2888.0020.0002] # ETHIOPIC SYLLABLE VU +126A ; [.2889.0020.0002] # ETHIOPIC SYLLABLE VI +126B ; [.288A.0020.0002] # ETHIOPIC SYLLABLE VAA +126C ; [.288B.0020.0002] # ETHIOPIC SYLLABLE VEE +126D ; [.288C.0020.0002] # ETHIOPIC SYLLABLE VE +126E ; [.288D.0020.0002] # ETHIOPIC SYLLABLE VO +126F ; [.288E.0020.0002] # ETHIOPIC SYLLABLE VWA +1270 ; [.288F.0020.0002] # ETHIOPIC SYLLABLE TA +1271 ; [.2890.0020.0002] # ETHIOPIC SYLLABLE TU +1272 ; [.2891.0020.0002] # ETHIOPIC SYLLABLE TI +1273 ; [.2892.0020.0002] # ETHIOPIC SYLLABLE TAA +1274 ; [.2893.0020.0002] # ETHIOPIC SYLLABLE TEE +1275 ; [.2894.0020.0002] # ETHIOPIC SYLLABLE TE +1276 ; [.2895.0020.0002] # ETHIOPIC SYLLABLE TO +1277 ; [.2896.0020.0002] # ETHIOPIC SYLLABLE TWA +2D86 ; [.2897.0020.0002] # ETHIOPIC SYLLABLE TOA +1278 ; [.2898.0020.0002] # ETHIOPIC SYLLABLE CA +1279 ; [.2899.0020.0002] # ETHIOPIC SYLLABLE CU +127A ; [.289A.0020.0002] # ETHIOPIC SYLLABLE CI +127B ; [.289B.0020.0002] # ETHIOPIC SYLLABLE CAA +127C ; [.289C.0020.0002] # ETHIOPIC SYLLABLE CEE +127D ; [.289D.0020.0002] # ETHIOPIC SYLLABLE CE +127E ; [.289E.0020.0002] # ETHIOPIC SYLLABLE CO +127F ; [.289F.0020.0002] # ETHIOPIC SYLLABLE CWA +2D87 ; [.28A0.0020.0002] # ETHIOPIC SYLLABLE COA +1280 ; [.28A1.0020.0002] # ETHIOPIC SYLLABLE XA +1281 ; [.28A2.0020.0002] # ETHIOPIC SYLLABLE XU +1282 ; [.28A3.0020.0002] # ETHIOPIC SYLLABLE XI +1283 ; [.28A4.0020.0002] # ETHIOPIC SYLLABLE XAA +1284 ; [.28A5.0020.0002] # ETHIOPIC SYLLABLE XEE +1285 ; [.28A6.0020.0002] # ETHIOPIC SYLLABLE XE +1286 ; [.28A7.0020.0002] # ETHIOPIC SYLLABLE XO +1287 ; [.28A8.0020.0002] # ETHIOPIC SYLLABLE XOA +1288 ; [.28A9.0020.0002] # ETHIOPIC SYLLABLE XWA +128A ; [.28AA.0020.0002] # ETHIOPIC SYLLABLE XWI +128B ; [.28AB.0020.0002] # ETHIOPIC SYLLABLE XWAA +128C ; [.28AC.0020.0002] # ETHIOPIC SYLLABLE XWEE +128D ; [.28AD.0020.0002] # ETHIOPIC SYLLABLE XWE +1290 ; [.28AE.0020.0002] # ETHIOPIC SYLLABLE NA +1291 ; [.28AF.0020.0002] # ETHIOPIC SYLLABLE NU +1292 ; [.28B0.0020.0002] # ETHIOPIC SYLLABLE NI +1293 ; [.28B1.0020.0002] # ETHIOPIC SYLLABLE NAA +1294 ; [.28B2.0020.0002] # ETHIOPIC SYLLABLE NEE +1295 ; [.28B3.0020.0002] # ETHIOPIC SYLLABLE NE +1296 ; [.28B4.0020.0002] # ETHIOPIC SYLLABLE NO +1297 ; [.28B5.0020.0002] # ETHIOPIC SYLLABLE NWA +2D88 ; [.28B6.0020.0002] # ETHIOPIC SYLLABLE NOA +1298 ; [.28B7.0020.0002] # ETHIOPIC SYLLABLE NYA +1299 ; [.28B8.0020.0002] # ETHIOPIC SYLLABLE NYU +129A ; [.28B9.0020.0002] # ETHIOPIC SYLLABLE NYI +129B ; [.28BA.0020.0002] # ETHIOPIC SYLLABLE NYAA +129C ; [.28BB.0020.0002] # ETHIOPIC SYLLABLE NYEE +129D ; [.28BC.0020.0002] # ETHIOPIC SYLLABLE NYE +129E ; [.28BD.0020.0002] # ETHIOPIC SYLLABLE NYO +129F ; [.28BE.0020.0002] # ETHIOPIC SYLLABLE NYWA +2D89 ; [.28BF.0020.0002] # ETHIOPIC SYLLABLE NYOA +12A0 ; [.28C0.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL A +12A1 ; [.28C1.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL U +12A2 ; [.28C2.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL I +12A3 ; [.28C3.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL AA +12A4 ; [.28C4.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL EE +12A5 ; [.28C5.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL E +12A6 ; [.28C6.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL O +12A7 ; [.28C7.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL WA +2D8A ; [.28C8.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL OA +12A8 ; [.28C9.0020.0002] # ETHIOPIC SYLLABLE KA +12A9 ; [.28CA.0020.0002] # ETHIOPIC SYLLABLE KU +12AA ; [.28CB.0020.0002] # ETHIOPIC SYLLABLE KI +12AB ; [.28CC.0020.0002] # ETHIOPIC SYLLABLE KAA +12AC ; [.28CD.0020.0002] # ETHIOPIC SYLLABLE KEE +12AD ; [.28CE.0020.0002] # ETHIOPIC SYLLABLE KE +12AE ; [.28CF.0020.0002] # ETHIOPIC SYLLABLE KO +12AF ; [.28D0.0020.0002] # ETHIOPIC SYLLABLE KOA +12B0 ; [.28D1.0020.0002] # ETHIOPIC SYLLABLE KWA +12B2 ; [.28D2.0020.0002] # ETHIOPIC SYLLABLE KWI +12B3 ; [.28D3.0020.0002] # ETHIOPIC SYLLABLE KWAA +12B4 ; [.28D4.0020.0002] # ETHIOPIC SYLLABLE KWEE +12B5 ; [.28D5.0020.0002] # ETHIOPIC SYLLABLE KWE +12B8 ; [.28D6.0020.0002] # ETHIOPIC SYLLABLE KXA +12B9 ; [.28D7.0020.0002] # ETHIOPIC SYLLABLE KXU +12BA ; [.28D8.0020.0002] # ETHIOPIC SYLLABLE KXI +12BB ; [.28D9.0020.0002] # ETHIOPIC SYLLABLE KXAA +12BC ; [.28DA.0020.0002] # ETHIOPIC SYLLABLE KXEE +12BD ; [.28DB.0020.0002] # ETHIOPIC SYLLABLE KXE +12BE ; [.28DC.0020.0002] # ETHIOPIC SYLLABLE KXO +12C0 ; [.28DD.0020.0002] # ETHIOPIC SYLLABLE KXWA +12C2 ; [.28DE.0020.0002] # ETHIOPIC SYLLABLE KXWI +12C3 ; [.28DF.0020.0002] # ETHIOPIC SYLLABLE KXWAA +12C4 ; [.28E0.0020.0002] # ETHIOPIC SYLLABLE KXWEE +12C5 ; [.28E1.0020.0002] # ETHIOPIC SYLLABLE KXWE +12C8 ; [.28E2.0020.0002] # ETHIOPIC SYLLABLE WA +12C9 ; [.28E3.0020.0002] # ETHIOPIC SYLLABLE WU +12CA ; [.28E4.0020.0002] # ETHIOPIC SYLLABLE WI +12CB ; [.28E5.0020.0002] # ETHIOPIC SYLLABLE WAA +12CC ; [.28E6.0020.0002] # ETHIOPIC SYLLABLE WEE +12CD ; [.28E7.0020.0002] # ETHIOPIC SYLLABLE WE +12CE ; [.28E8.0020.0002] # ETHIOPIC SYLLABLE WO +12CF ; [.28E9.0020.0002] # ETHIOPIC SYLLABLE WOA +12D0 ; [.28EA.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL A +12D1 ; [.28EB.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL U +12D2 ; [.28EC.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL I +12D3 ; [.28ED.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL AA +12D4 ; [.28EE.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL EE +12D5 ; [.28EF.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL E +12D6 ; [.28F0.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL O +12D8 ; [.28F1.0020.0002] # ETHIOPIC SYLLABLE ZA +12D9 ; [.28F2.0020.0002] # ETHIOPIC SYLLABLE ZU +12DA ; [.28F3.0020.0002] # ETHIOPIC SYLLABLE ZI +12DB ; [.28F4.0020.0002] # ETHIOPIC SYLLABLE ZAA +12DC ; [.28F5.0020.0002] # ETHIOPIC SYLLABLE ZEE +12DD ; [.28F6.0020.0002] # ETHIOPIC SYLLABLE ZE +12DE ; [.28F7.0020.0002] # ETHIOPIC SYLLABLE ZO +12DF ; [.28F8.0020.0002] # ETHIOPIC SYLLABLE ZWA +2D8B ; [.28F9.0020.0002] # ETHIOPIC SYLLABLE ZOA +AB11 ; [.28FA.0020.0002] # ETHIOPIC SYLLABLE DZU +AB12 ; [.28FB.0020.0002] # ETHIOPIC SYLLABLE DZI +AB13 ; [.28FC.0020.0002] # ETHIOPIC SYLLABLE DZAA +AB14 ; [.28FD.0020.0002] # ETHIOPIC SYLLABLE DZEE +AB15 ; [.28FE.0020.0002] # ETHIOPIC SYLLABLE DZE +AB16 ; [.28FF.0020.0002] # ETHIOPIC SYLLABLE DZO +12E0 ; [.2900.0020.0002] # ETHIOPIC SYLLABLE ZHA +12E1 ; [.2901.0020.0002] # ETHIOPIC SYLLABLE ZHU +12E2 ; [.2902.0020.0002] # ETHIOPIC SYLLABLE ZHI +12E3 ; [.2903.0020.0002] # ETHIOPIC SYLLABLE ZHAA +12E4 ; [.2904.0020.0002] # ETHIOPIC SYLLABLE ZHEE +12E5 ; [.2905.0020.0002] # ETHIOPIC SYLLABLE ZHE +12E6 ; [.2906.0020.0002] # ETHIOPIC SYLLABLE ZHO +12E7 ; [.2907.0020.0002] # ETHIOPIC SYLLABLE ZHWA +12E8 ; [.2908.0020.0002] # ETHIOPIC SYLLABLE YA +12E9 ; [.2909.0020.0002] # ETHIOPIC SYLLABLE YU +12EA ; [.290A.0020.0002] # ETHIOPIC SYLLABLE YI +12EB ; [.290B.0020.0002] # ETHIOPIC SYLLABLE YAA +12EC ; [.290C.0020.0002] # ETHIOPIC SYLLABLE YEE +12ED ; [.290D.0020.0002] # ETHIOPIC SYLLABLE YE +12EE ; [.290E.0020.0002] # ETHIOPIC SYLLABLE YO +12EF ; [.290F.0020.0002] # ETHIOPIC SYLLABLE YOA +12F0 ; [.2910.0020.0002] # ETHIOPIC SYLLABLE DA +12F1 ; [.2911.0020.0002] # ETHIOPIC SYLLABLE DU +12F2 ; [.2912.0020.0002] # ETHIOPIC SYLLABLE DI +12F3 ; [.2913.0020.0002] # ETHIOPIC SYLLABLE DAA +12F4 ; [.2914.0020.0002] # ETHIOPIC SYLLABLE DEE +12F5 ; [.2915.0020.0002] # ETHIOPIC SYLLABLE DE +12F6 ; [.2916.0020.0002] # ETHIOPIC SYLLABLE DO +12F7 ; [.2917.0020.0002] # ETHIOPIC SYLLABLE DWA +2D8C ; [.2918.0020.0002] # ETHIOPIC SYLLABLE DOA +AB09 ; [.2919.0020.0002] # ETHIOPIC SYLLABLE DDHU +AB0A ; [.291A.0020.0002] # ETHIOPIC SYLLABLE DDHI +AB0B ; [.291B.0020.0002] # ETHIOPIC SYLLABLE DDHAA +AB0C ; [.291C.0020.0002] # ETHIOPIC SYLLABLE DDHEE +AB0D ; [.291D.0020.0002] # ETHIOPIC SYLLABLE DDHE +AB0E ; [.291E.0020.0002] # ETHIOPIC SYLLABLE DDHO +12F8 ; [.291F.0020.0002] # ETHIOPIC SYLLABLE DDA +12F9 ; [.2920.0020.0002] # ETHIOPIC SYLLABLE DDU +12FA ; [.2921.0020.0002] # ETHIOPIC SYLLABLE DDI +12FB ; [.2922.0020.0002] # ETHIOPIC SYLLABLE DDAA +12FC ; [.2923.0020.0002] # ETHIOPIC SYLLABLE DDEE +12FD ; [.2924.0020.0002] # ETHIOPIC SYLLABLE DDE +12FE ; [.2925.0020.0002] # ETHIOPIC SYLLABLE DDO +12FF ; [.2926.0020.0002] # ETHIOPIC SYLLABLE DDWA +2D8D ; [.2927.0020.0002] # ETHIOPIC SYLLABLE DDOA +1300 ; [.2928.0020.0002] # ETHIOPIC SYLLABLE JA +1301 ; [.2929.0020.0002] # ETHIOPIC SYLLABLE JU +1302 ; [.292A.0020.0002] # ETHIOPIC SYLLABLE JI +1303 ; [.292B.0020.0002] # ETHIOPIC SYLLABLE JAA +1304 ; [.292C.0020.0002] # ETHIOPIC SYLLABLE JEE +1305 ; [.292D.0020.0002] # ETHIOPIC SYLLABLE JE +1306 ; [.292E.0020.0002] # ETHIOPIC SYLLABLE JO +1307 ; [.292F.0020.0002] # ETHIOPIC SYLLABLE JWA +2D8E ; [.2930.0020.0002] # ETHIOPIC SYLLABLE JOA +1308 ; [.2931.0020.0002] # ETHIOPIC SYLLABLE GA +1309 ; [.2932.0020.0002] # ETHIOPIC SYLLABLE GU +130A ; [.2933.0020.0002] # ETHIOPIC SYLLABLE GI +130B ; [.2934.0020.0002] # ETHIOPIC SYLLABLE GAA +130C ; [.2935.0020.0002] # ETHIOPIC SYLLABLE GEE +130D ; [.2936.0020.0002] # ETHIOPIC SYLLABLE GE +130E ; [.2937.0020.0002] # ETHIOPIC SYLLABLE GO +130F ; [.2938.0020.0002] # ETHIOPIC SYLLABLE GOA +1310 ; [.2939.0020.0002] # ETHIOPIC SYLLABLE GWA +1312 ; [.293A.0020.0002] # ETHIOPIC SYLLABLE GWI +1313 ; [.293B.0020.0002] # ETHIOPIC SYLLABLE GWAA +1314 ; [.293C.0020.0002] # ETHIOPIC SYLLABLE GWEE +1315 ; [.293D.0020.0002] # ETHIOPIC SYLLABLE GWE +1318 ; [.293E.0020.0002] # ETHIOPIC SYLLABLE GGA +1319 ; [.293F.0020.0002] # ETHIOPIC SYLLABLE GGU +131A ; [.2940.0020.0002] # ETHIOPIC SYLLABLE GGI +131B ; [.2941.0020.0002] # ETHIOPIC SYLLABLE GGAA +131C ; [.2942.0020.0002] # ETHIOPIC SYLLABLE GGEE +131D ; [.2943.0020.0002] # ETHIOPIC SYLLABLE GGE +131E ; [.2944.0020.0002] # ETHIOPIC SYLLABLE GGO +131F ; [.2945.0020.0002] # ETHIOPIC SYLLABLE GGWAA +2D93 ; [.2946.0020.0002] # ETHIOPIC SYLLABLE GGWA +2D94 ; [.2947.0020.0002] # ETHIOPIC SYLLABLE GGWI +2D95 ; [.2948.0020.0002] # ETHIOPIC SYLLABLE GGWEE +2D96 ; [.2949.0020.0002] # ETHIOPIC SYLLABLE GGWE +1320 ; [.294A.0020.0002] # ETHIOPIC SYLLABLE THA +1321 ; [.294B.0020.0002] # ETHIOPIC SYLLABLE THU +1322 ; [.294C.0020.0002] # ETHIOPIC SYLLABLE THI +1323 ; [.294D.0020.0002] # ETHIOPIC SYLLABLE THAA +1324 ; [.294E.0020.0002] # ETHIOPIC SYLLABLE THEE +1325 ; [.294F.0020.0002] # ETHIOPIC SYLLABLE THE +1326 ; [.2950.0020.0002] # ETHIOPIC SYLLABLE THO +1327 ; [.2951.0020.0002] # ETHIOPIC SYLLABLE THWA +2D8F ; [.2952.0020.0002] # ETHIOPIC SYLLABLE THOA +1328 ; [.2953.0020.0002] # ETHIOPIC SYLLABLE CHA +1329 ; [.2954.0020.0002] # ETHIOPIC SYLLABLE CHU +132A ; [.2955.0020.0002] # ETHIOPIC SYLLABLE CHI +132B ; [.2956.0020.0002] # ETHIOPIC SYLLABLE CHAA +132C ; [.2957.0020.0002] # ETHIOPIC SYLLABLE CHEE +132D ; [.2958.0020.0002] # ETHIOPIC SYLLABLE CHE +132E ; [.2959.0020.0002] # ETHIOPIC SYLLABLE CHO +132F ; [.295A.0020.0002] # ETHIOPIC SYLLABLE CHWA +2D90 ; [.295B.0020.0002] # ETHIOPIC SYLLABLE CHOA +AB20 ; [.295C.0020.0002] # ETHIOPIC SYLLABLE CCHHA +AB21 ; [.295D.0020.0002] # ETHIOPIC SYLLABLE CCHHU +AB22 ; [.295E.0020.0002] # ETHIOPIC SYLLABLE CCHHI +AB23 ; [.295F.0020.0002] # ETHIOPIC SYLLABLE CCHHAA +AB24 ; [.2960.0020.0002] # ETHIOPIC SYLLABLE CCHHEE +AB25 ; [.2961.0020.0002] # ETHIOPIC SYLLABLE CCHHE +AB26 ; [.2962.0020.0002] # ETHIOPIC SYLLABLE CCHHO +1330 ; [.2963.0020.0002] # ETHIOPIC SYLLABLE PHA +1331 ; [.2964.0020.0002] # ETHIOPIC SYLLABLE PHU +1332 ; [.2965.0020.0002] # ETHIOPIC SYLLABLE PHI +1333 ; [.2966.0020.0002] # ETHIOPIC SYLLABLE PHAA +1334 ; [.2967.0020.0002] # ETHIOPIC SYLLABLE PHEE +1335 ; [.2968.0020.0002] # ETHIOPIC SYLLABLE PHE +1336 ; [.2969.0020.0002] # ETHIOPIC SYLLABLE PHO +1337 ; [.296A.0020.0002] # ETHIOPIC SYLLABLE PHWA +2D91 ; [.296B.0020.0002] # ETHIOPIC SYLLABLE PHOA +1338 ; [.296C.0020.0002] # ETHIOPIC SYLLABLE TSA +1339 ; [.296D.0020.0002] # ETHIOPIC SYLLABLE TSU +133A ; [.296E.0020.0002] # ETHIOPIC SYLLABLE TSI +133B ; [.296F.0020.0002] # ETHIOPIC SYLLABLE TSAA +133C ; [.2970.0020.0002] # ETHIOPIC SYLLABLE TSEE +133D ; [.2971.0020.0002] # ETHIOPIC SYLLABLE TSE +133E ; [.2972.0020.0002] # ETHIOPIC SYLLABLE TSO +133F ; [.2973.0020.0002] # ETHIOPIC SYLLABLE TSWA +AB28 ; [.2974.0020.0002] # ETHIOPIC SYLLABLE BBA +AB29 ; [.2975.0020.0002] # ETHIOPIC SYLLABLE BBU +AB2A ; [.2976.0020.0002] # ETHIOPIC SYLLABLE BBI +AB2B ; [.2977.0020.0002] # ETHIOPIC SYLLABLE BBAA +AB2C ; [.2978.0020.0002] # ETHIOPIC SYLLABLE BBEE +AB2D ; [.2979.0020.0002] # ETHIOPIC SYLLABLE BBE +AB2E ; [.297A.0020.0002] # ETHIOPIC SYLLABLE BBO +1340 ; [.297B.0020.0002] # ETHIOPIC SYLLABLE TZA +1341 ; [.297C.0020.0002] # ETHIOPIC SYLLABLE TZU +1342 ; [.297D.0020.0002] # ETHIOPIC SYLLABLE TZI +1343 ; [.297E.0020.0002] # ETHIOPIC SYLLABLE TZAA +1344 ; [.297F.0020.0002] # ETHIOPIC SYLLABLE TZEE +1345 ; [.2980.0020.0002] # ETHIOPIC SYLLABLE TZE +1346 ; [.2981.0020.0002] # ETHIOPIC SYLLABLE TZO +1347 ; [.2982.0020.0002] # ETHIOPIC SYLLABLE TZOA +1348 ; [.2983.0020.0002] # ETHIOPIC SYLLABLE FA +1349 ; [.2984.0020.0002] # ETHIOPIC SYLLABLE FU +134A ; [.2985.0020.0002] # ETHIOPIC SYLLABLE FI +134B ; [.2986.0020.0002] # ETHIOPIC SYLLABLE FAA +134C ; [.2987.0020.0002] # ETHIOPIC SYLLABLE FEE +134D ; [.2988.0020.0002] # ETHIOPIC SYLLABLE FE +134E ; [.2989.0020.0002] # ETHIOPIC SYLLABLE FO +134F ; [.298A.0020.0002] # ETHIOPIC SYLLABLE FWA +1388 ; [.298B.0020.0002] # ETHIOPIC SYLLABLE SEBATBEIT FWA +1389 ; [.298C.0020.0002] # ETHIOPIC SYLLABLE FWI +138A ; [.298D.0020.0002] # ETHIOPIC SYLLABLE FWEE +138B ; [.298E.0020.0002] # ETHIOPIC SYLLABLE FWE +1350 ; [.298F.0020.0002] # ETHIOPIC SYLLABLE PA +1351 ; [.2990.0020.0002] # ETHIOPIC SYLLABLE PU +1352 ; [.2991.0020.0002] # ETHIOPIC SYLLABLE PI +1353 ; [.2992.0020.0002] # ETHIOPIC SYLLABLE PAA +1354 ; [.2993.0020.0002] # ETHIOPIC SYLLABLE PEE +1355 ; [.2994.0020.0002] # ETHIOPIC SYLLABLE PE +1356 ; [.2995.0020.0002] # ETHIOPIC SYLLABLE PO +1357 ; [.2996.0020.0002] # ETHIOPIC SYLLABLE PWA +138C ; [.2997.0020.0002] # ETHIOPIC SYLLABLE SEBATBEIT PWA +138D ; [.2998.0020.0002] # ETHIOPIC SYLLABLE PWI +138E ; [.2999.0020.0002] # ETHIOPIC SYLLABLE PWEE +138F ; [.299A.0020.0002] # ETHIOPIC SYLLABLE PWE +2D92 ; [.299B.0020.0002] # ETHIOPIC SYLLABLE POA +1358 ; [.299C.0020.0002] # ETHIOPIC SYLLABLE RYA +1359 ; [.299D.0020.0002] # ETHIOPIC SYLLABLE MYA +135A ; [.299E.0020.0002] # ETHIOPIC SYLLABLE FYA +2DA0 ; [.299F.0020.0002] # ETHIOPIC SYLLABLE SSA +2DA1 ; [.29A0.0020.0002] # ETHIOPIC SYLLABLE SSU +2DA2 ; [.29A1.0020.0002] # ETHIOPIC SYLLABLE SSI +2DA3 ; [.29A2.0020.0002] # ETHIOPIC SYLLABLE SSAA +2DA4 ; [.29A3.0020.0002] # ETHIOPIC SYLLABLE SSEE +2DA5 ; [.29A4.0020.0002] # ETHIOPIC SYLLABLE SSE +2DA6 ; [.29A5.0020.0002] # ETHIOPIC SYLLABLE SSO +2DA8 ; [.29A6.0020.0002] # ETHIOPIC SYLLABLE CCA +2DA9 ; [.29A7.0020.0002] # ETHIOPIC SYLLABLE CCU +2DAA ; [.29A8.0020.0002] # ETHIOPIC SYLLABLE CCI +2DAB ; [.29A9.0020.0002] # ETHIOPIC SYLLABLE CCAA +2DAC ; [.29AA.0020.0002] # ETHIOPIC SYLLABLE CCEE +2DAD ; [.29AB.0020.0002] # ETHIOPIC SYLLABLE CCE +2DAE ; [.29AC.0020.0002] # ETHIOPIC SYLLABLE CCO +2DB0 ; [.29AD.0020.0002] # ETHIOPIC SYLLABLE ZZA +2DB1 ; [.29AE.0020.0002] # ETHIOPIC SYLLABLE ZZU +2DB2 ; [.29AF.0020.0002] # ETHIOPIC SYLLABLE ZZI +2DB3 ; [.29B0.0020.0002] # ETHIOPIC SYLLABLE ZZAA +2DB4 ; [.29B1.0020.0002] # ETHIOPIC SYLLABLE ZZEE +2DB5 ; [.29B2.0020.0002] # ETHIOPIC SYLLABLE ZZE +2DB6 ; [.29B3.0020.0002] # ETHIOPIC SYLLABLE ZZO +2DB8 ; [.29B4.0020.0002] # ETHIOPIC SYLLABLE CCHA +2DB9 ; [.29B5.0020.0002] # ETHIOPIC SYLLABLE CCHU +2DBA ; [.29B6.0020.0002] # ETHIOPIC SYLLABLE CCHI +2DBB ; [.29B7.0020.0002] # ETHIOPIC SYLLABLE CCHAA +2DBC ; [.29B8.0020.0002] # ETHIOPIC SYLLABLE CCHEE +2DBD ; [.29B9.0020.0002] # ETHIOPIC SYLLABLE CCHE +2DBE ; [.29BA.0020.0002] # ETHIOPIC SYLLABLE CCHO +2DC0 ; [.29BB.0020.0002] # ETHIOPIC SYLLABLE QYA +2DC1 ; [.29BC.0020.0002] # ETHIOPIC SYLLABLE QYU +2DC2 ; [.29BD.0020.0002] # ETHIOPIC SYLLABLE QYI +2DC3 ; [.29BE.0020.0002] # ETHIOPIC SYLLABLE QYAA +2DC4 ; [.29BF.0020.0002] # ETHIOPIC SYLLABLE QYEE +2DC5 ; [.29C0.0020.0002] # ETHIOPIC SYLLABLE QYE +2DC6 ; [.29C1.0020.0002] # ETHIOPIC SYLLABLE QYO +2DC8 ; [.29C2.0020.0002] # ETHIOPIC SYLLABLE KYA +2DC9 ; [.29C3.0020.0002] # ETHIOPIC SYLLABLE KYU +2DCA ; [.29C4.0020.0002] # ETHIOPIC SYLLABLE KYI +2DCB ; [.29C5.0020.0002] # ETHIOPIC SYLLABLE KYAA +2DCC ; [.29C6.0020.0002] # ETHIOPIC SYLLABLE KYEE +2DCD ; [.29C7.0020.0002] # ETHIOPIC SYLLABLE KYE +2DCE ; [.29C8.0020.0002] # ETHIOPIC SYLLABLE KYO +2DD0 ; [.29C9.0020.0002] # ETHIOPIC SYLLABLE XYA +2DD1 ; [.29CA.0020.0002] # ETHIOPIC SYLLABLE XYU +2DD2 ; [.29CB.0020.0002] # ETHIOPIC SYLLABLE XYI +2DD3 ; [.29CC.0020.0002] # ETHIOPIC SYLLABLE XYAA +2DD4 ; [.29CD.0020.0002] # ETHIOPIC SYLLABLE XYEE +2DD5 ; [.29CE.0020.0002] # ETHIOPIC SYLLABLE XYE +2DD6 ; [.29CF.0020.0002] # ETHIOPIC SYLLABLE XYO +2DD8 ; [.29D0.0020.0002] # ETHIOPIC SYLLABLE GYA +2DD9 ; [.29D1.0020.0002] # ETHIOPIC SYLLABLE GYU +2DDA ; [.29D2.0020.0002] # ETHIOPIC SYLLABLE GYI +2DDB ; [.29D3.0020.0002] # ETHIOPIC SYLLABLE GYAA +2DDC ; [.29D4.0020.0002] # ETHIOPIC SYLLABLE GYEE +2DDD ; [.29D5.0020.0002] # ETHIOPIC SYLLABLE GYE +2DDE ; [.29D6.0020.0002] # ETHIOPIC SYLLABLE GYO +0950 ; [.29D7.0020.0002] # DEVANAGARI OM +A8FD ; [.29D8.0020.0002] # DEVANAGARI JAIN OM +0972 ; [.29D9.0020.0002] # DEVANAGARI LETTER CANDRA A +0904 ; [.29DA.0020.0002] # DEVANAGARI LETTER SHORT A +0905 ; [.29DB.0020.0002] # DEVANAGARI LETTER A +0906 ; [.29DC.0020.0002] # DEVANAGARI LETTER AA +0973 ; [.29DD.0020.0002] # DEVANAGARI LETTER OE +0974 ; [.29DE.0020.0002] # DEVANAGARI LETTER OOE +0975 ; [.29DF.0020.0002] # DEVANAGARI LETTER AW +0976 ; [.29E0.0020.0002] # DEVANAGARI LETTER UE +0977 ; [.29E1.0020.0002] # DEVANAGARI LETTER UUE +0907 ; [.29E2.0020.0002] # DEVANAGARI LETTER I +0908 ; [.29E3.0020.0002] # DEVANAGARI LETTER II +0909 ; [.29E4.0020.0002] # DEVANAGARI LETTER U +090A ; [.29E5.0020.0002] # DEVANAGARI LETTER UU +090B ; [.29E6.0020.0002] # DEVANAGARI LETTER VOCALIC R +0960 ; [.29E7.0020.0002] # DEVANAGARI LETTER VOCALIC RR +090C ; [.29E8.0020.0002] # DEVANAGARI LETTER VOCALIC L +0961 ; [.29E9.0020.0002] # DEVANAGARI LETTER VOCALIC LL +090D ; [.29EA.0020.0002] # DEVANAGARI LETTER CANDRA E +090E ; [.29EB.0020.0002] # DEVANAGARI LETTER SHORT E +090F ; [.29EC.0020.0002] # DEVANAGARI LETTER E +0910 ; [.29ED.0020.0002] # DEVANAGARI LETTER AI +A8FE ; [.29EE.0020.0002] # DEVANAGARI LETTER AY +0911 ; [.29EF.0020.0002] # DEVANAGARI LETTER CANDRA O +0912 ; [.29F0.0020.0002] # DEVANAGARI LETTER SHORT O +0913 ; [.29F1.0020.0002] # DEVANAGARI LETTER O +0914 ; [.29F2.0020.0002] # DEVANAGARI LETTER AU +0915 ; [.29F3.0020.0002] # DEVANAGARI LETTER KA +0958 ; [.29F3.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER QA +0916 ; [.29F4.0020.0002] # DEVANAGARI LETTER KHA +0959 ; [.29F4.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER KHHA +0917 ; [.29F5.0020.0002] # DEVANAGARI LETTER GA +095A ; [.29F5.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER GHHA +097B ; [.29F6.0020.0002] # DEVANAGARI LETTER GGA +0918 ; [.29F7.0020.0002] # DEVANAGARI LETTER GHA +0919 ; [.29F8.0020.0002] # DEVANAGARI LETTER NGA +091A ; [.29F9.0020.0002] # DEVANAGARI LETTER CA +091B ; [.29FA.0020.0002] # DEVANAGARI LETTER CHA +091C ; [.29FB.0020.0002] # DEVANAGARI LETTER JA +095B ; [.29FB.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER ZA +0979 ; [.29FC.0020.0002] # DEVANAGARI LETTER ZHA +097C ; [.29FD.0020.0002] # DEVANAGARI LETTER JJA +091D ; [.29FE.0020.0002] # DEVANAGARI LETTER JHA +091E ; [.29FF.0020.0002] # DEVANAGARI LETTER NYA +091F ; [.2A00.0020.0002] # DEVANAGARI LETTER TTA +0920 ; [.2A01.0020.0002] # DEVANAGARI LETTER TTHA +0978 ; [.2A02.0020.0002] # DEVANAGARI LETTER MARWARI DDA +0921 ; [.2A03.0020.0002] # DEVANAGARI LETTER DDA +095C ; [.2A03.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER DDDHA +097E ; [.2A04.0020.0002] # DEVANAGARI LETTER DDDA +0922 ; [.2A05.0020.0002] # DEVANAGARI LETTER DDHA +095D ; [.2A05.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER RHA +0923 ; [.2A06.0020.0002] # DEVANAGARI LETTER NNA +0924 ; [.2A07.0020.0002] # DEVANAGARI LETTER TA +0925 ; [.2A08.0020.0002] # DEVANAGARI LETTER THA +0926 ; [.2A09.0020.0002] # DEVANAGARI LETTER DA +0927 ; [.2A0A.0020.0002] # DEVANAGARI LETTER DHA +0928 ; [.2A0B.0020.0002] # DEVANAGARI LETTER NA +0929 ; [.2A0B.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER NNNA +092A ; [.2A0C.0020.0002] # DEVANAGARI LETTER PA +092B ; [.2A0D.0020.0002] # DEVANAGARI LETTER PHA +095E ; [.2A0D.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER FA +092C ; [.2A0E.0020.0002] # DEVANAGARI LETTER BA +097F ; [.2A0F.0020.0002] # DEVANAGARI LETTER BBA +092D ; [.2A10.0020.0002] # DEVANAGARI LETTER BHA +092E ; [.2A11.0020.0002] # DEVANAGARI LETTER MA +092F ; [.2A12.0020.0002] # DEVANAGARI LETTER YA +095F ; [.2A12.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER YYA +097A ; [.2A13.0020.0002] # DEVANAGARI LETTER HEAVY YA +0930 ; [.2A14.0020.0002] # DEVANAGARI LETTER RA +0931 ; [.2A14.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER RRA +0932 ; [.2A15.0020.0002] # DEVANAGARI LETTER LA +0933 ; [.2A16.0020.0002] # DEVANAGARI LETTER LLA +0934 ; [.2A16.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER LLLA +0935 ; [.2A17.0020.0002] # DEVANAGARI LETTER VA +0936 ; [.2A18.0020.0002] # DEVANAGARI LETTER SHA +0937 ; [.2A19.0020.0002] # DEVANAGARI LETTER SSA +0938 ; [.2A1A.0020.0002] # DEVANAGARI LETTER SA +0939 ; [.2A1B.0020.0002] # DEVANAGARI LETTER HA +093D ; [.2A1C.0020.0002] # DEVANAGARI SIGN AVAGRAHA +097D ; [.2A1D.0020.0002] # DEVANAGARI LETTER GLOTTAL STOP +1CE9 ; [.2A1E.0020.0002] # VEDIC SIGN ANUSVARA ANTARGOMUKHA +1CEA ; [.2A1E.0020.0004] # VEDIC SIGN ANUSVARA BAHIRGOMUKHA +1CEB ; [.2A1E.0020.0004] # VEDIC SIGN ANUSVARA VAMAGOMUKHA +1CEC ; [.2A1E.0020.0004] # VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL +1CEE ; [.2A1E.0020.0004] # VEDIC SIGN HEXIFORM LONG ANUSVARA +1CEF ; [.2A1E.0020.0004] # VEDIC SIGN LONG ANUSVARA +1CF0 ; [.2A1E.0020.0004] # VEDIC SIGN RTHANG LONG ANUSVARA +1CF1 ; [.2A1E.0020.0004] # VEDIC SIGN ANUSVARA UBHAYATO MUKHA +1CFA ; [.2A1E.0020.0004] # VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA +1CF5 ; [.2A1F.0020.0002] # VEDIC SIGN JIHVAMULIYA +1CF6 ; [.2A20.0020.0002] # VEDIC SIGN UPADHMANIYA +A8F2 ; [.2A21.0020.0002] # DEVANAGARI SIGN SPACING CANDRABINDU +A8F3 ; [.2A21.0020.0004] # DEVANAGARI SIGN CANDRABINDU VIRAMA +A8F4 ; [.2A21.0020.0004] # DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA +A8F5 ; [.2A21.0020.0004] # DEVANAGARI SIGN CANDRABINDU TWO +A8F6 ; [.2A21.0020.0004] # DEVANAGARI SIGN CANDRABINDU THREE +A8F7 ; [.2A21.0020.0004] # DEVANAGARI SIGN CANDRABINDU AVAGRAHA +A8FB ; [.2A22.0020.0002] # DEVANAGARI HEADSTROKE +093E ; [.2A23.0020.0002] # DEVANAGARI VOWEL SIGN AA +093A ; [.2A24.0020.0002] # DEVANAGARI VOWEL SIGN OE +093B ; [.2A25.0020.0002] # DEVANAGARI VOWEL SIGN OOE +094F ; [.2A26.0020.0002] # DEVANAGARI VOWEL SIGN AW +0956 ; [.2A27.0020.0002] # DEVANAGARI VOWEL SIGN UE +0957 ; [.2A28.0020.0002] # DEVANAGARI VOWEL SIGN UUE +093F ; [.2A29.0020.0002] # DEVANAGARI VOWEL SIGN I +0940 ; [.2A2A.0020.0002] # DEVANAGARI VOWEL SIGN II +0941 ; [.2A2B.0020.0002] # DEVANAGARI VOWEL SIGN U +0942 ; [.2A2C.0020.0002] # DEVANAGARI VOWEL SIGN UU +0943 ; [.2A2D.0020.0002] # DEVANAGARI VOWEL SIGN VOCALIC R +0944 ; [.2A2E.0020.0002] # DEVANAGARI VOWEL SIGN VOCALIC RR +0962 ; [.2A2F.0020.0002] # DEVANAGARI VOWEL SIGN VOCALIC L +0963 ; [.2A30.0020.0002] # DEVANAGARI VOWEL SIGN VOCALIC LL +0945 ; [.2A31.0020.0002] # DEVANAGARI VOWEL SIGN CANDRA E +0955 ; [.2A32.0020.0002] # DEVANAGARI VOWEL SIGN CANDRA LONG E +0946 ; [.2A33.0020.0002] # DEVANAGARI VOWEL SIGN SHORT E +0947 ; [.2A34.0020.0002] # DEVANAGARI VOWEL SIGN E +094E ; [.2A35.0020.0002] # DEVANAGARI VOWEL SIGN PRISHTHAMATRA E +0948 ; [.2A36.0020.0002] # DEVANAGARI VOWEL SIGN AI +A8FF ; [.2A37.0020.0002] # DEVANAGARI VOWEL SIGN AY +0949 ; [.2A38.0020.0002] # DEVANAGARI VOWEL SIGN CANDRA O +094A ; [.2A39.0020.0002] # DEVANAGARI VOWEL SIGN SHORT O +094B ; [.2A3A.0020.0002] # DEVANAGARI VOWEL SIGN O +094C ; [.2A3B.0020.0002] # DEVANAGARI VOWEL SIGN AU +094D ; [.2A3C.0020.0002] # DEVANAGARI SIGN VIRAMA +0980 ; [.2A3D.0020.0002] # BENGALI ANJI +0985 ; [.2A3E.0020.0002] # BENGALI LETTER A +0986 ; [.2A3F.0020.0002] # BENGALI LETTER AA +0987 ; [.2A40.0020.0002] # BENGALI LETTER I +0988 ; [.2A41.0020.0002] # BENGALI LETTER II +0989 ; [.2A42.0020.0002] # BENGALI LETTER U +098A ; [.2A43.0020.0002] # BENGALI LETTER UU +098B ; [.2A44.0020.0002] # BENGALI LETTER VOCALIC R +09E0 ; [.2A45.0020.0002] # BENGALI LETTER VOCALIC RR +098C ; [.2A46.0020.0002] # BENGALI LETTER VOCALIC L +09E1 ; [.2A47.0020.0002] # BENGALI LETTER VOCALIC LL +098F ; [.2A48.0020.0002] # BENGALI LETTER E +0990 ; [.2A49.0020.0002] # BENGALI LETTER AI +0993 ; [.2A4A.0020.0002] # BENGALI LETTER O +0994 ; [.2A4B.0020.0002] # BENGALI LETTER AU +0995 ; [.2A4C.0020.0002] # BENGALI LETTER KA +0996 ; [.2A4D.0020.0002] # BENGALI LETTER KHA +0997 ; [.2A4E.0020.0002] # BENGALI LETTER GA +0998 ; [.2A4F.0020.0002] # BENGALI LETTER GHA +0999 ; [.2A50.0020.0002] # BENGALI LETTER NGA +099A ; [.2A51.0020.0002] # BENGALI LETTER CA +099B ; [.2A52.0020.0002] # BENGALI LETTER CHA +099C ; [.2A53.0020.0002] # BENGALI LETTER JA +099D ; [.2A54.0020.0002] # BENGALI LETTER JHA +099E ; [.2A55.0020.0002] # BENGALI LETTER NYA +099F ; [.2A56.0020.0002] # BENGALI LETTER TTA +09A0 ; [.2A57.0020.0002] # BENGALI LETTER TTHA +09A1 ; [.2A58.0020.0002] # BENGALI LETTER DDA +09DC ; [.2A58.0020.0002][.0000.00C2.0002] # BENGALI LETTER RRA +09A2 ; [.2A59.0020.0002] # BENGALI LETTER DDHA +09DD ; [.2A59.0020.0002][.0000.00C2.0002] # BENGALI LETTER RHA +09A3 ; [.2A5A.0020.0002] # BENGALI LETTER NNA +09A4 ; [.2A5B.0020.0002] # BENGALI LETTER TA +09CE ; [.2A5B.0020.0004][.2A7C.0020.0004] # BENGALI LETTER KHANDA TA +09A5 ; [.2A5C.0020.0002] # BENGALI LETTER THA +09A6 ; [.2A5D.0020.0002] # BENGALI LETTER DA +09A7 ; [.2A5E.0020.0002] # BENGALI LETTER DHA +09A8 ; [.2A5F.0020.0002] # BENGALI LETTER NA +09AA ; [.2A60.0020.0002] # BENGALI LETTER PA +09AB ; [.2A61.0020.0002] # BENGALI LETTER PHA +09AC ; [.2A62.0020.0002] # BENGALI LETTER BA +09AD ; [.2A63.0020.0002] # BENGALI LETTER BHA +09AE ; [.2A64.0020.0002] # BENGALI LETTER MA +09AF ; [.2A65.0020.0002] # BENGALI LETTER YA +09DF ; [.2A65.0020.0002][.0000.00C2.0002] # BENGALI LETTER YYA +09B0 ; [.2A66.0020.0002] # BENGALI LETTER RA +09F0 ; [.2A67.0020.0002] # BENGALI LETTER RA WITH MIDDLE DIAGONAL +09B2 ; [.2A68.0020.0002] # BENGALI LETTER LA +09F1 ; [.2A69.0020.0002] # BENGALI LETTER RA WITH LOWER DIAGONAL +09B6 ; [.2A6A.0020.0002] # BENGALI LETTER SHA +09B7 ; [.2A6B.0020.0002] # BENGALI LETTER SSA +09B8 ; [.2A6C.0020.0002] # BENGALI LETTER SA +09B9 ; [.2A6D.0020.0002] # BENGALI LETTER HA +09BD ; [.2A6E.0020.0002] # BENGALI SIGN AVAGRAHA +09BE ; [.2A6F.0020.0002] # BENGALI VOWEL SIGN AA +09BF ; [.2A70.0020.0002] # BENGALI VOWEL SIGN I +09C0 ; [.2A71.0020.0002] # BENGALI VOWEL SIGN II +09C1 ; [.2A72.0020.0002] # BENGALI VOWEL SIGN U +09C2 ; [.2A73.0020.0002] # BENGALI VOWEL SIGN UU +09C3 ; [.2A74.0020.0002] # BENGALI VOWEL SIGN VOCALIC R +09C4 ; [.2A75.0020.0002] # BENGALI VOWEL SIGN VOCALIC RR +09E2 ; [.2A76.0020.0002] # BENGALI VOWEL SIGN VOCALIC L +09E3 ; [.2A77.0020.0002] # BENGALI VOWEL SIGN VOCALIC LL +09C7 ; [.2A78.0020.0002] # BENGALI VOWEL SIGN E +09C8 ; [.2A79.0020.0002] # BENGALI VOWEL SIGN AI +09CB ; [.2A7A.0020.0002] # BENGALI VOWEL SIGN O +09C7 09BE ; [.2A7A.0020.0002] # BENGALI VOWEL SIGN O +09CC ; [.2A7B.0020.0002] # BENGALI VOWEL SIGN AU +09C7 09D7 ; [.2A7B.0020.0002] # BENGALI VOWEL SIGN AU +09CD ; [.2A7C.0020.0002] # BENGALI SIGN VIRAMA +09D7 ; [.2A7D.0020.0002] # BENGALI AU LENGTH MARK +09FC ; [.2A7E.0020.0002] # BENGALI LETTER VEDIC ANUSVARA +0A74 ; [.2A7F.0020.0002] # GURMUKHI EK ONKAR +0A73 ; [.2A80.0020.0002] # GURMUKHI URA +0A09 ; [.2A81.0020.0002] # GURMUKHI LETTER U +0A0A ; [.2A82.0020.0002] # GURMUKHI LETTER UU +0A13 ; [.2A83.0020.0002] # GURMUKHI LETTER OO +0A05 ; [.2A84.0020.0002] # GURMUKHI LETTER A +0A06 ; [.2A85.0020.0002] # GURMUKHI LETTER AA +0A10 ; [.2A86.0020.0002] # GURMUKHI LETTER AI +0A14 ; [.2A87.0020.0002] # GURMUKHI LETTER AU +0A72 ; [.2A88.0020.0002] # GURMUKHI IRI +0A07 ; [.2A89.0020.0002] # GURMUKHI LETTER I +0A08 ; [.2A8A.0020.0002] # GURMUKHI LETTER II +0A0F ; [.2A8B.0020.0002] # GURMUKHI LETTER EE +0A38 ; [.2A8C.0020.0002] # GURMUKHI LETTER SA +0A36 ; [.2A8C.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER SHA +0A39 ; [.2A8D.0020.0002] # GURMUKHI LETTER HA +0A51 ; [.2A8E.0020.0002] # GURMUKHI SIGN UDAAT +0A15 ; [.2A8F.0020.0002] # GURMUKHI LETTER KA +0A16 ; [.2A90.0020.0002] # GURMUKHI LETTER KHA +0A59 ; [.2A90.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER KHHA +0A17 ; [.2A91.0020.0002] # GURMUKHI LETTER GA +0A5A ; [.2A91.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER GHHA +0A18 ; [.2A92.0020.0002] # GURMUKHI LETTER GHA +0A19 ; [.2A93.0020.0002] # GURMUKHI LETTER NGA +0A1A ; [.2A94.0020.0002] # GURMUKHI LETTER CA +0A1B ; [.2A95.0020.0002] # GURMUKHI LETTER CHA +0A1C ; [.2A96.0020.0002] # GURMUKHI LETTER JA +0A5B ; [.2A96.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER ZA +0A1D ; [.2A97.0020.0002] # GURMUKHI LETTER JHA +0A1E ; [.2A98.0020.0002] # GURMUKHI LETTER NYA +0A1F ; [.2A99.0020.0002] # GURMUKHI LETTER TTA +0A20 ; [.2A9A.0020.0002] # GURMUKHI LETTER TTHA +0A21 ; [.2A9B.0020.0002] # GURMUKHI LETTER DDA +0A22 ; [.2A9C.0020.0002] # GURMUKHI LETTER DDHA +0A23 ; [.2A9D.0020.0002] # GURMUKHI LETTER NNA +0A24 ; [.2A9E.0020.0002] # GURMUKHI LETTER TA +0A25 ; [.2A9F.0020.0002] # GURMUKHI LETTER THA +0A26 ; [.2AA0.0020.0002] # GURMUKHI LETTER DA +0A27 ; [.2AA1.0020.0002] # GURMUKHI LETTER DHA +0A28 ; [.2AA2.0020.0002] # GURMUKHI LETTER NA +0A2A ; [.2AA3.0020.0002] # GURMUKHI LETTER PA +0A2B ; [.2AA4.0020.0002] # GURMUKHI LETTER PHA +0A5E ; [.2AA4.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER FA +0A2C ; [.2AA5.0020.0002] # GURMUKHI LETTER BA +0A2D ; [.2AA6.0020.0002] # GURMUKHI LETTER BHA +0A2E ; [.2AA7.0020.0002] # GURMUKHI LETTER MA +0A2F ; [.2AA8.0020.0002] # GURMUKHI LETTER YA +0A75 ; [.2AA9.0020.0002] # GURMUKHI SIGN YAKASH +0A30 ; [.2AAA.0020.0002] # GURMUKHI LETTER RA +0A32 ; [.2AAB.0020.0002] # GURMUKHI LETTER LA +0A33 ; [.2AAB.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER LLA +0A35 ; [.2AAC.0020.0002] # GURMUKHI LETTER VA +0A5C ; [.2AAD.0020.0002] # GURMUKHI LETTER RRA +0A3E ; [.2AAE.0020.0002] # GURMUKHI VOWEL SIGN AA +0A3F ; [.2AAF.0020.0002] # GURMUKHI VOWEL SIGN I +0A40 ; [.2AB0.0020.0002] # GURMUKHI VOWEL SIGN II +0A41 ; [.2AB1.0020.0002] # GURMUKHI VOWEL SIGN U +0A42 ; [.2AB2.0020.0002] # GURMUKHI VOWEL SIGN UU +0A47 ; [.2AB3.0020.0002] # GURMUKHI VOWEL SIGN EE +0A48 ; [.2AB4.0020.0002] # GURMUKHI VOWEL SIGN AI +0A4B ; [.2AB5.0020.0002] # GURMUKHI VOWEL SIGN OO +0A4C ; [.2AB6.0020.0002] # GURMUKHI VOWEL SIGN AU +0A4D ; [.2AB7.0020.0002] # GURMUKHI SIGN VIRAMA +0AD0 ; [.2AB8.0020.0002] # GUJARATI OM +0A85 ; [.2AB9.0020.0002] # GUJARATI LETTER A +0A86 ; [.2ABA.0020.0002] # GUJARATI LETTER AA +0A87 ; [.2ABB.0020.0002] # GUJARATI LETTER I +0A88 ; [.2ABC.0020.0002] # GUJARATI LETTER II +0A89 ; [.2ABD.0020.0002] # GUJARATI LETTER U +0A8A ; [.2ABE.0020.0002] # GUJARATI LETTER UU +0A8B ; [.2ABF.0020.0002] # GUJARATI LETTER VOCALIC R +0AE0 ; [.2AC0.0020.0002] # GUJARATI LETTER VOCALIC RR +0A8C ; [.2AC1.0020.0002] # GUJARATI LETTER VOCALIC L +0AE1 ; [.2AC2.0020.0002] # GUJARATI LETTER VOCALIC LL +0A8D ; [.2AC3.0020.0002] # GUJARATI VOWEL CANDRA E +0A8F ; [.2AC4.0020.0002] # GUJARATI LETTER E +0A90 ; [.2AC5.0020.0002] # GUJARATI LETTER AI +0A91 ; [.2AC6.0020.0002] # GUJARATI VOWEL CANDRA O +0A93 ; [.2AC7.0020.0002] # GUJARATI LETTER O +0A94 ; [.2AC8.0020.0002] # GUJARATI LETTER AU +0A95 ; [.2AC9.0020.0002] # GUJARATI LETTER KA +0A96 ; [.2ACA.0020.0002] # GUJARATI LETTER KHA +0A97 ; [.2ACB.0020.0002] # GUJARATI LETTER GA +0A98 ; [.2ACC.0020.0002] # GUJARATI LETTER GHA +0A99 ; [.2ACD.0020.0002] # GUJARATI LETTER NGA +0A9A ; [.2ACE.0020.0002] # GUJARATI LETTER CA +0A9B ; [.2ACF.0020.0002] # GUJARATI LETTER CHA +0A9C ; [.2AD0.0020.0002] # GUJARATI LETTER JA +0AF9 ; [.2AD1.0020.0002] # GUJARATI LETTER ZHA +0A9D ; [.2AD2.0020.0002] # GUJARATI LETTER JHA +0A9E ; [.2AD3.0020.0002] # GUJARATI LETTER NYA +0A9F ; [.2AD4.0020.0002] # GUJARATI LETTER TTA +0AA0 ; [.2AD5.0020.0002] # GUJARATI LETTER TTHA +0AA1 ; [.2AD6.0020.0002] # GUJARATI LETTER DDA +0AA2 ; [.2AD7.0020.0002] # GUJARATI LETTER DDHA +0AA3 ; [.2AD8.0020.0002] # GUJARATI LETTER NNA +0AA4 ; [.2AD9.0020.0002] # GUJARATI LETTER TA +0AA5 ; [.2ADA.0020.0002] # GUJARATI LETTER THA +0AA6 ; [.2ADB.0020.0002] # GUJARATI LETTER DA +0AA7 ; [.2ADC.0020.0002] # GUJARATI LETTER DHA +0AA8 ; [.2ADD.0020.0002] # GUJARATI LETTER NA +0AAA ; [.2ADE.0020.0002] # GUJARATI LETTER PA +0AAB ; [.2ADF.0020.0002] # GUJARATI LETTER PHA +0AAC ; [.2AE0.0020.0002] # GUJARATI LETTER BA +0AAD ; [.2AE1.0020.0002] # GUJARATI LETTER BHA +0AAE ; [.2AE2.0020.0002] # GUJARATI LETTER MA +0AAF ; [.2AE3.0020.0002] # GUJARATI LETTER YA +0AB0 ; [.2AE4.0020.0002] # GUJARATI LETTER RA +0AB2 ; [.2AE5.0020.0002] # GUJARATI LETTER LA +0AB5 ; [.2AE6.0020.0002] # GUJARATI LETTER VA +0AB6 ; [.2AE7.0020.0002] # GUJARATI LETTER SHA +0AB7 ; [.2AE8.0020.0002] # GUJARATI LETTER SSA +0AB8 ; [.2AE9.0020.0002] # GUJARATI LETTER SA +0AB9 ; [.2AEA.0020.0002] # GUJARATI LETTER HA +0AB3 ; [.2AEB.0020.0002] # GUJARATI LETTER LLA +0ABD ; [.2AEC.0020.0002] # GUJARATI SIGN AVAGRAHA +0ABE ; [.2AED.0020.0002] # GUJARATI VOWEL SIGN AA +0ABF ; [.2AEE.0020.0002] # GUJARATI VOWEL SIGN I +0AC0 ; [.2AEF.0020.0002] # GUJARATI VOWEL SIGN II +0AC1 ; [.2AF0.0020.0002] # GUJARATI VOWEL SIGN U +0AC2 ; [.2AF1.0020.0002] # GUJARATI VOWEL SIGN UU +0AC3 ; [.2AF2.0020.0002] # GUJARATI VOWEL SIGN VOCALIC R +0AC4 ; [.2AF3.0020.0002] # GUJARATI VOWEL SIGN VOCALIC RR +0AE2 ; [.2AF4.0020.0002] # GUJARATI VOWEL SIGN VOCALIC L +0AE3 ; [.2AF5.0020.0002] # GUJARATI VOWEL SIGN VOCALIC LL +0AC5 ; [.2AF6.0020.0002] # GUJARATI VOWEL SIGN CANDRA E +0AC7 ; [.2AF7.0020.0002] # GUJARATI VOWEL SIGN E +0AC8 ; [.2AF8.0020.0002] # GUJARATI VOWEL SIGN AI +0AC9 ; [.2AF9.0020.0002] # GUJARATI VOWEL SIGN CANDRA O +0ACB ; [.2AFA.0020.0002] # GUJARATI VOWEL SIGN O +0ACC ; [.2AFB.0020.0002] # GUJARATI VOWEL SIGN AU +0ACD ; [.2AFC.0020.0002] # GUJARATI SIGN VIRAMA +0B05 ; [.2AFD.0020.0002] # ORIYA LETTER A +0B06 ; [.2AFE.0020.0002] # ORIYA LETTER AA +0B07 ; [.2AFF.0020.0002] # ORIYA LETTER I +0B08 ; [.2B00.0020.0002] # ORIYA LETTER II +0B09 ; [.2B01.0020.0002] # ORIYA LETTER U +0B0A ; [.2B02.0020.0002] # ORIYA LETTER UU +0B0B ; [.2B03.0020.0002] # ORIYA LETTER VOCALIC R +0B60 ; [.2B04.0020.0002] # ORIYA LETTER VOCALIC RR +0B0C ; [.2B05.0020.0002] # ORIYA LETTER VOCALIC L +0B61 ; [.2B06.0020.0002] # ORIYA LETTER VOCALIC LL +0B0F ; [.2B07.0020.0002] # ORIYA LETTER E +0B10 ; [.2B08.0020.0002] # ORIYA LETTER AI +0B13 ; [.2B09.0020.0002] # ORIYA LETTER O +0B14 ; [.2B0A.0020.0002] # ORIYA LETTER AU +0B15 ; [.2B0B.0020.0002] # ORIYA LETTER KA +0B16 ; [.2B0C.0020.0002] # ORIYA LETTER KHA +0B17 ; [.2B0D.0020.0002] # ORIYA LETTER GA +0B18 ; [.2B0E.0020.0002] # ORIYA LETTER GHA +0B19 ; [.2B0F.0020.0002] # ORIYA LETTER NGA +0B1A ; [.2B10.0020.0002] # ORIYA LETTER CA +0B1B ; [.2B11.0020.0002] # ORIYA LETTER CHA +0B1C ; [.2B12.0020.0002] # ORIYA LETTER JA +0B1D ; [.2B13.0020.0002] # ORIYA LETTER JHA +0B1E ; [.2B14.0020.0002] # ORIYA LETTER NYA +0B1F ; [.2B15.0020.0002] # ORIYA LETTER TTA +0B20 ; [.2B16.0020.0002] # ORIYA LETTER TTHA +0B21 ; [.2B17.0020.0002] # ORIYA LETTER DDA +0B5C ; [.2B17.0020.0002][.0000.00C2.0002] # ORIYA LETTER RRA +0B22 ; [.2B18.0020.0002] # ORIYA LETTER DDHA +0B5D ; [.2B18.0020.0002][.0000.00C2.0002] # ORIYA LETTER RHA +0B23 ; [.2B19.0020.0002] # ORIYA LETTER NNA +0B24 ; [.2B1A.0020.0002] # ORIYA LETTER TA +0B25 ; [.2B1B.0020.0002] # ORIYA LETTER THA +0B26 ; [.2B1C.0020.0002] # ORIYA LETTER DA +0B27 ; [.2B1D.0020.0002] # ORIYA LETTER DHA +0B28 ; [.2B1E.0020.0002] # ORIYA LETTER NA +0B2A ; [.2B1F.0020.0002] # ORIYA LETTER PA +0B2B ; [.2B20.0020.0002] # ORIYA LETTER PHA +0B2C ; [.2B21.0020.0002] # ORIYA LETTER BA +0B2D ; [.2B22.0020.0002] # ORIYA LETTER BHA +0B2E ; [.2B23.0020.0002] # ORIYA LETTER MA +0B2F ; [.2B24.0020.0002] # ORIYA LETTER YA +0B5F ; [.2B25.0020.0002] # ORIYA LETTER YYA +0B30 ; [.2B26.0020.0002] # ORIYA LETTER RA +0B32 ; [.2B27.0020.0002] # ORIYA LETTER LA +0B33 ; [.2B28.0020.0002] # ORIYA LETTER LLA +0B35 ; [.2B29.0020.0002] # ORIYA LETTER VA +0B71 ; [.2B2A.0020.0002] # ORIYA LETTER WA +0B36 ; [.2B2B.0020.0002] # ORIYA LETTER SHA +0B37 ; [.2B2C.0020.0002] # ORIYA LETTER SSA +0B38 ; [.2B2D.0020.0002] # ORIYA LETTER SA +0B39 ; [.2B2E.0020.0002] # ORIYA LETTER HA +0B3D ; [.2B2F.0020.0002] # ORIYA SIGN AVAGRAHA +0B3E ; [.2B30.0020.0002] # ORIYA VOWEL SIGN AA +0B3F ; [.2B31.0020.0002] # ORIYA VOWEL SIGN I +0B40 ; [.2B32.0020.0002] # ORIYA VOWEL SIGN II +0B41 ; [.2B33.0020.0002] # ORIYA VOWEL SIGN U +0B42 ; [.2B34.0020.0002] # ORIYA VOWEL SIGN UU +0B43 ; [.2B35.0020.0002] # ORIYA VOWEL SIGN VOCALIC R +0B44 ; [.2B36.0020.0002] # ORIYA VOWEL SIGN VOCALIC RR +0B62 ; [.2B37.0020.0002] # ORIYA VOWEL SIGN VOCALIC L +0B63 ; [.2B38.0020.0002] # ORIYA VOWEL SIGN VOCALIC LL +0B47 ; [.2B39.0020.0002] # ORIYA VOWEL SIGN E +0B48 ; [.2B3A.0020.0002] # ORIYA VOWEL SIGN AI +0B47 0B56 ; [.2B3A.0020.0002] # ORIYA VOWEL SIGN AI +0B4B ; [.2B3B.0020.0002] # ORIYA VOWEL SIGN O +0B47 0B3E ; [.2B3B.0020.0002] # ORIYA VOWEL SIGN O +0B4C ; [.2B3C.0020.0002] # ORIYA VOWEL SIGN AU +0B47 0B57 ; [.2B3C.0020.0002] # ORIYA VOWEL SIGN AU +0B4D ; [.2B3D.0020.0002] # ORIYA SIGN VIRAMA +0B56 ; [.2B3E.0020.0002] # ORIYA AI LENGTH MARK +0B57 ; [.2B3F.0020.0002] # ORIYA AU LENGTH MARK +0BD0 ; [.2B40.0020.0002] # TAMIL OM +0B85 ; [.2B41.0020.0002] # TAMIL LETTER A +0B86 ; [.2B42.0020.0002] # TAMIL LETTER AA +0B87 ; [.2B43.0020.0002] # TAMIL LETTER I +0B88 ; [.2B44.0020.0002] # TAMIL LETTER II +0B89 ; [.2B45.0020.0002] # TAMIL LETTER U +0B8A ; [.2B46.0020.0002] # TAMIL LETTER UU +0B8E ; [.2B47.0020.0002] # TAMIL LETTER E +0B8F ; [.2B48.0020.0002] # TAMIL LETTER EE +0B90 ; [.2B49.0020.0002] # TAMIL LETTER AI +0B92 ; [.2B4A.0020.0002] # TAMIL LETTER O +0B93 ; [.2B4B.0020.0002] # TAMIL LETTER OO +0B94 ; [.2B4C.0020.0002] # TAMIL LETTER AU +0B92 0BD7 ; [.2B4C.0020.0002] # TAMIL LETTER AU +0B83 ; [.2B4D.0020.0002] # TAMIL SIGN VISARGA +0B95 ; [.2B4E.0020.0002] # TAMIL LETTER KA +0B99 ; [.2B4F.0020.0002] # TAMIL LETTER NGA +0B9A ; [.2B50.0020.0002] # TAMIL LETTER CA +0B9E ; [.2B51.0020.0002] # TAMIL LETTER NYA +0B9F ; [.2B52.0020.0002] # TAMIL LETTER TTA +0BA3 ; [.2B53.0020.0002] # TAMIL LETTER NNA +0BA4 ; [.2B54.0020.0002] # TAMIL LETTER TA +0BA8 ; [.2B55.0020.0002] # TAMIL LETTER NA +0BAA ; [.2B56.0020.0002] # TAMIL LETTER PA +0BAE ; [.2B57.0020.0002] # TAMIL LETTER MA +0BAF ; [.2B58.0020.0002] # TAMIL LETTER YA +0BB0 ; [.2B59.0020.0002] # TAMIL LETTER RA +0BB2 ; [.2B5A.0020.0002] # TAMIL LETTER LA +0BB5 ; [.2B5B.0020.0002] # TAMIL LETTER VA +0BB4 ; [.2B5C.0020.0002] # TAMIL LETTER LLLA +0BB3 ; [.2B5D.0020.0002] # TAMIL LETTER LLA +0BB1 ; [.2B5E.0020.0002] # TAMIL LETTER RRA +0BA9 ; [.2B5F.0020.0002] # TAMIL LETTER NNNA +0B9C ; [.2B60.0020.0002] # TAMIL LETTER JA +0BB6 ; [.2B61.0020.0002] # TAMIL LETTER SHA +0BB7 ; [.2B62.0020.0002] # TAMIL LETTER SSA +0BB8 ; [.2B63.0020.0002] # TAMIL LETTER SA +0BB9 ; [.2B64.0020.0002] # TAMIL LETTER HA +0BBE ; [.2B65.0020.0002] # TAMIL VOWEL SIGN AA +0BBF ; [.2B66.0020.0002] # TAMIL VOWEL SIGN I +0BC0 ; [.2B67.0020.0002] # TAMIL VOWEL SIGN II +0BC1 ; [.2B68.0020.0002] # TAMIL VOWEL SIGN U +0BC2 ; [.2B69.0020.0002] # TAMIL VOWEL SIGN UU +0BC6 ; [.2B6A.0020.0002] # TAMIL VOWEL SIGN E +0BC7 ; [.2B6B.0020.0002] # TAMIL VOWEL SIGN EE +0BC8 ; [.2B6C.0020.0002] # TAMIL VOWEL SIGN AI +0BCA ; [.2B6D.0020.0002] # TAMIL VOWEL SIGN O +0BC6 0BBE ; [.2B6D.0020.0002] # TAMIL VOWEL SIGN O +0BCB ; [.2B6E.0020.0002] # TAMIL VOWEL SIGN OO +0BC7 0BBE ; [.2B6E.0020.0002] # TAMIL VOWEL SIGN OO +0BCC ; [.2B6F.0020.0002] # TAMIL VOWEL SIGN AU +0BC6 0BD7 ; [.2B6F.0020.0002] # TAMIL VOWEL SIGN AU +0BCD ; [.2B70.0020.0002] # TAMIL SIGN VIRAMA +0BD7 ; [.2B71.0020.0002] # TAMIL AU LENGTH MARK +0C05 ; [.2B72.0020.0002] # TELUGU LETTER A +0C06 ; [.2B73.0020.0002] # TELUGU LETTER AA +0C07 ; [.2B74.0020.0002] # TELUGU LETTER I +0C08 ; [.2B75.0020.0002] # TELUGU LETTER II +0C09 ; [.2B76.0020.0002] # TELUGU LETTER U +0C0A ; [.2B77.0020.0002] # TELUGU LETTER UU +0C0B ; [.2B78.0020.0002] # TELUGU LETTER VOCALIC R +0C60 ; [.2B79.0020.0002] # TELUGU LETTER VOCALIC RR +0C0C ; [.2B7A.0020.0002] # TELUGU LETTER VOCALIC L +0C61 ; [.2B7B.0020.0002] # TELUGU LETTER VOCALIC LL +0C0E ; [.2B7C.0020.0002] # TELUGU LETTER E +0C0F ; [.2B7D.0020.0002] # TELUGU LETTER EE +0C10 ; [.2B7E.0020.0002] # TELUGU LETTER AI +0C12 ; [.2B7F.0020.0002] # TELUGU LETTER O +0C13 ; [.2B80.0020.0002] # TELUGU LETTER OO +0C14 ; [.2B81.0020.0002] # TELUGU LETTER AU +0C15 ; [.2B82.0020.0002] # TELUGU LETTER KA +0C16 ; [.2B83.0020.0002] # TELUGU LETTER KHA +0C17 ; [.2B84.0020.0002] # TELUGU LETTER GA +0C18 ; [.2B85.0020.0002] # TELUGU LETTER GHA +0C19 ; [.2B86.0020.0002] # TELUGU LETTER NGA +0C1A ; [.2B87.0020.0002] # TELUGU LETTER CA +0C58 ; [.2B88.0020.0002] # TELUGU LETTER TSA +0C1B ; [.2B89.0020.0002] # TELUGU LETTER CHA +0C1C ; [.2B8A.0020.0002] # TELUGU LETTER JA +0C59 ; [.2B8B.0020.0002] # TELUGU LETTER DZA +0C1D ; [.2B8C.0020.0002] # TELUGU LETTER JHA +0C1E ; [.2B8D.0020.0002] # TELUGU LETTER NYA +0C1F ; [.2B8E.0020.0002] # TELUGU LETTER TTA +0C20 ; [.2B8F.0020.0002] # TELUGU LETTER TTHA +0C21 ; [.2B90.0020.0002] # TELUGU LETTER DDA +0C22 ; [.2B91.0020.0002] # TELUGU LETTER DDHA +0C23 ; [.2B92.0020.0002] # TELUGU LETTER NNA +0C24 ; [.2B93.0020.0002] # TELUGU LETTER TA +0C25 ; [.2B94.0020.0002] # TELUGU LETTER THA +0C26 ; [.2B95.0020.0002] # TELUGU LETTER DA +0C27 ; [.2B96.0020.0002] # TELUGU LETTER DHA +0C28 ; [.2B97.0020.0002] # TELUGU LETTER NA +0C2A ; [.2B98.0020.0002] # TELUGU LETTER PA +0C2B ; [.2B99.0020.0002] # TELUGU LETTER PHA +0C2C ; [.2B9A.0020.0002] # TELUGU LETTER BA +0C2D ; [.2B9B.0020.0002] # TELUGU LETTER BHA +0C2E ; [.2B9C.0020.0002] # TELUGU LETTER MA +0C2F ; [.2B9D.0020.0002] # TELUGU LETTER YA +0C30 ; [.2B9E.0020.0002] # TELUGU LETTER RA +0C31 ; [.2B9F.0020.0002] # TELUGU LETTER RRA +0C32 ; [.2BA0.0020.0002] # TELUGU LETTER LA +0C35 ; [.2BA1.0020.0002] # TELUGU LETTER VA +0C36 ; [.2BA2.0020.0002] # TELUGU LETTER SHA +0C37 ; [.2BA3.0020.0002] # TELUGU LETTER SSA +0C38 ; [.2BA4.0020.0002] # TELUGU LETTER SA +0C39 ; [.2BA5.0020.0002] # TELUGU LETTER HA +0C33 ; [.2BA6.0020.0002] # TELUGU LETTER LLA +0C34 ; [.2BA7.0020.0002] # TELUGU LETTER LLLA +0C5A ; [.2BA8.0020.0002] # TELUGU LETTER RRRA +0C3D ; [.2BA9.0020.0002] # TELUGU SIGN AVAGRAHA +0C3E ; [.2BAA.0020.0002] # TELUGU VOWEL SIGN AA +0C3F ; [.2BAB.0020.0002] # TELUGU VOWEL SIGN I +0C40 ; [.2BAC.0020.0002] # TELUGU VOWEL SIGN II +0C41 ; [.2BAD.0020.0002] # TELUGU VOWEL SIGN U +0C42 ; [.2BAE.0020.0002] # TELUGU VOWEL SIGN UU +0C43 ; [.2BAF.0020.0002] # TELUGU VOWEL SIGN VOCALIC R +0C44 ; [.2BB0.0020.0002] # TELUGU VOWEL SIGN VOCALIC RR +0C62 ; [.2BB1.0020.0002] # TELUGU VOWEL SIGN VOCALIC L +0C63 ; [.2BB2.0020.0002] # TELUGU VOWEL SIGN VOCALIC LL +0C46 ; [.2BB3.0020.0002] # TELUGU VOWEL SIGN E +0C47 ; [.2BB4.0020.0002] # TELUGU VOWEL SIGN EE +0C48 ; [.2BB5.0020.0002] # TELUGU VOWEL SIGN AI +0C46 0C56 ; [.2BB5.0020.0002] # TELUGU VOWEL SIGN AI +0C4A ; [.2BB6.0020.0002] # TELUGU VOWEL SIGN O +0C4B ; [.2BB7.0020.0002] # TELUGU VOWEL SIGN OO +0C4C ; [.2BB8.0020.0002] # TELUGU VOWEL SIGN AU +0C4D ; [.2BB9.0020.0002] # TELUGU SIGN VIRAMA +0C55 ; [.2BBA.0020.0002] # TELUGU LENGTH MARK +0C56 ; [.2BBB.0020.0002] # TELUGU AI LENGTH MARK +0C85 ; [.2BBC.0020.0002] # KANNADA LETTER A +0C86 ; [.2BBD.0020.0002] # KANNADA LETTER AA +0C87 ; [.2BBE.0020.0002] # KANNADA LETTER I +0C88 ; [.2BBF.0020.0002] # KANNADA LETTER II +0C89 ; [.2BC0.0020.0002] # KANNADA LETTER U +0C8A ; [.2BC1.0020.0002] # KANNADA LETTER UU +0C8B ; [.2BC2.0020.0002] # KANNADA LETTER VOCALIC R +0CE0 ; [.2BC3.0020.0002] # KANNADA LETTER VOCALIC RR +0C8C ; [.2BC4.0020.0002] # KANNADA LETTER VOCALIC L +0CE1 ; [.2BC5.0020.0002] # KANNADA LETTER VOCALIC LL +0C8E ; [.2BC6.0020.0002] # KANNADA LETTER E +0C8F ; [.2BC7.0020.0002] # KANNADA LETTER EE +0C90 ; [.2BC8.0020.0002] # KANNADA LETTER AI +0C92 ; [.2BC9.0020.0002] # KANNADA LETTER O +0C93 ; [.2BCA.0020.0002] # KANNADA LETTER OO +0C94 ; [.2BCB.0020.0002] # KANNADA LETTER AU +0C95 ; [.2BCC.0020.0002] # KANNADA LETTER KA +0C96 ; [.2BCD.0020.0002] # KANNADA LETTER KHA +0C97 ; [.2BCE.0020.0002] # KANNADA LETTER GA +0C98 ; [.2BCF.0020.0002] # KANNADA LETTER GHA +0C99 ; [.2BD0.0020.0002] # KANNADA LETTER NGA +0C9A ; [.2BD1.0020.0002] # KANNADA LETTER CA +0C9B ; [.2BD2.0020.0002] # KANNADA LETTER CHA +0C9C ; [.2BD3.0020.0002] # KANNADA LETTER JA +0C9D ; [.2BD4.0020.0002] # KANNADA LETTER JHA +0C9E ; [.2BD5.0020.0002] # KANNADA LETTER NYA +0C9F ; [.2BD6.0020.0002] # KANNADA LETTER TTA +0CA0 ; [.2BD7.0020.0002] # KANNADA LETTER TTHA +0CA1 ; [.2BD8.0020.0002] # KANNADA LETTER DDA +0CA2 ; [.2BD9.0020.0002] # KANNADA LETTER DDHA +0CA3 ; [.2BDA.0020.0002] # KANNADA LETTER NNA +0CA4 ; [.2BDB.0020.0002] # KANNADA LETTER TA +0CA5 ; [.2BDC.0020.0002] # KANNADA LETTER THA +0CA6 ; [.2BDD.0020.0002] # KANNADA LETTER DA +0CA7 ; [.2BDE.0020.0002] # KANNADA LETTER DHA +0CA8 ; [.2BDF.0020.0002] # KANNADA LETTER NA +0CAA ; [.2BE0.0020.0002] # KANNADA LETTER PA +0CAB ; [.2BE1.0020.0002] # KANNADA LETTER PHA +0CAC ; [.2BE2.0020.0002] # KANNADA LETTER BA +0CAD ; [.2BE3.0020.0002] # KANNADA LETTER BHA +0CAE ; [.2BE4.0020.0002] # KANNADA LETTER MA +0CAF ; [.2BE5.0020.0002] # KANNADA LETTER YA +0CB0 ; [.2BE6.0020.0002] # KANNADA LETTER RA +0CB1 ; [.2BE7.0020.0002] # KANNADA LETTER RRA +0CB2 ; [.2BE8.0020.0002] # KANNADA LETTER LA +0CB5 ; [.2BE9.0020.0002] # KANNADA LETTER VA +0CB6 ; [.2BEA.0020.0002] # KANNADA LETTER SHA +0CB7 ; [.2BEB.0020.0002] # KANNADA LETTER SSA +0CB8 ; [.2BEC.0020.0002] # KANNADA LETTER SA +0CB9 ; [.2BED.0020.0002] # KANNADA LETTER HA +0CB3 ; [.2BEE.0020.0002] # KANNADA LETTER LLA +0CDE ; [.2BEF.0020.0002] # KANNADA LETTER FA +0CBD ; [.2BF0.0020.0002] # KANNADA SIGN AVAGRAHA +0CF1 ; [.2BF1.0020.0002] # KANNADA SIGN JIHVAMULIYA +0CF2 ; [.2BF2.0020.0002] # KANNADA SIGN UPADHMANIYA +0C80 ; [.2BF3.0020.0002] # KANNADA SIGN SPACING CANDRABINDU +0CBE ; [.2BF4.0020.0002] # KANNADA VOWEL SIGN AA +0CBF ; [.2BF5.0020.0002] # KANNADA VOWEL SIGN I +0CC0 ; [.2BF6.0020.0002] # KANNADA VOWEL SIGN II +0CBF 0CD5 ; [.2BF6.0020.0002] # KANNADA VOWEL SIGN II +0CC1 ; [.2BF7.0020.0002] # KANNADA VOWEL SIGN U +0CC2 ; [.2BF8.0020.0002] # KANNADA VOWEL SIGN UU +0CC3 ; [.2BF9.0020.0002] # KANNADA VOWEL SIGN VOCALIC R +0CC4 ; [.2BFA.0020.0002] # KANNADA VOWEL SIGN VOCALIC RR +0CE2 ; [.2BFB.0020.0002] # KANNADA VOWEL SIGN VOCALIC L +0CE3 ; [.2BFC.0020.0002] # KANNADA VOWEL SIGN VOCALIC LL +0CC6 ; [.2BFD.0020.0002] # KANNADA VOWEL SIGN E +0CC7 ; [.2BFE.0020.0002] # KANNADA VOWEL SIGN EE +0CC6 0CD5 ; [.2BFE.0020.0002] # KANNADA VOWEL SIGN EE +0CC8 ; [.2BFF.0020.0002] # KANNADA VOWEL SIGN AI +0CC6 0CD6 ; [.2BFF.0020.0002] # KANNADA VOWEL SIGN AI +0CCA ; [.2C00.0020.0002] # KANNADA VOWEL SIGN O +0CC6 0CC2 ; [.2C00.0020.0002] # KANNADA VOWEL SIGN O +0CCB ; [.2C01.0020.0002] # KANNADA VOWEL SIGN OO +0CC6 0CC2 0CD5 ; [.2C01.0020.0002] # KANNADA VOWEL SIGN OO +0CCA 0CD5 ; [.2C01.0020.0002] # KANNADA VOWEL SIGN OO +0CCC ; [.2C02.0020.0002] # KANNADA VOWEL SIGN AU +0CCD ; [.2C03.0020.0002] # KANNADA SIGN VIRAMA +0CD5 ; [.2C04.0020.0002] # KANNADA LENGTH MARK +0CD6 ; [.2C05.0020.0002] # KANNADA AI LENGTH MARK +0D05 ; [.2C06.0020.0002] # MALAYALAM LETTER A +0D06 ; [.2C07.0020.0002] # MALAYALAM LETTER AA +0D07 ; [.2C08.0020.0002] # MALAYALAM LETTER I +0D08 ; [.2C09.0020.0002] # MALAYALAM LETTER II +0D5F ; [.2C0A.0020.0002] # MALAYALAM LETTER ARCHAIC II +0D09 ; [.2C0B.0020.0002] # MALAYALAM LETTER U +0D0A ; [.2C0C.0020.0002] # MALAYALAM LETTER UU +0D0B ; [.2C0D.0020.0002] # MALAYALAM LETTER VOCALIC R +0D60 ; [.2C0E.0020.0002] # MALAYALAM LETTER VOCALIC RR +0D0C ; [.2C0F.0020.0002] # MALAYALAM LETTER VOCALIC L +0D61 ; [.2C10.0020.0002] # MALAYALAM LETTER VOCALIC LL +0D0E ; [.2C11.0020.0002] # MALAYALAM LETTER E +0D0F ; [.2C12.0020.0002] # MALAYALAM LETTER EE +0D10 ; [.2C13.0020.0002] # MALAYALAM LETTER AI +0D12 ; [.2C14.0020.0002] # MALAYALAM LETTER O +0D13 ; [.2C15.0020.0002] # MALAYALAM LETTER OO +0D14 ; [.2C16.0020.0002] # MALAYALAM LETTER AU +0D15 ; [.2C17.0020.0002] # MALAYALAM LETTER KA +0D7F ; [.2C17.0020.0004][.2C4F.0020.0004] # MALAYALAM LETTER CHILLU K +0D16 ; [.2C18.0020.0002] # MALAYALAM LETTER KHA +0D17 ; [.2C19.0020.0002] # MALAYALAM LETTER GA +0D18 ; [.2C1A.0020.0002] # MALAYALAM LETTER GHA +0D19 ; [.2C1B.0020.0002] # MALAYALAM LETTER NGA +0D1A ; [.2C1C.0020.0002] # MALAYALAM LETTER CA +0D1B ; [.2C1D.0020.0002] # MALAYALAM LETTER CHA +0D1C ; [.2C1E.0020.0002] # MALAYALAM LETTER JA +0D1D ; [.2C1F.0020.0002] # MALAYALAM LETTER JHA +0D1E ; [.2C20.0020.0002] # MALAYALAM LETTER NYA +0D1F ; [.2C21.0020.0002] # MALAYALAM LETTER TTA +0D20 ; [.2C22.0020.0002] # MALAYALAM LETTER TTHA +0D21 ; [.2C23.0020.0002] # MALAYALAM LETTER DDA +0D22 ; [.2C24.0020.0002] # MALAYALAM LETTER DDHA +0D23 ; [.2C25.0020.0002] # MALAYALAM LETTER NNA +0D7A ; [.2C25.0020.0004][.2C4F.0020.0004] # MALAYALAM LETTER CHILLU NN +0D24 ; [.2C26.0020.0002] # MALAYALAM LETTER TA +0D25 ; [.2C27.0020.0002] # MALAYALAM LETTER THA +0D26 ; [.2C28.0020.0002] # MALAYALAM LETTER DA +0D27 ; [.2C29.0020.0002] # MALAYALAM LETTER DHA +0D28 ; [.2C2A.0020.0002] # MALAYALAM LETTER NA +0D7B ; [.2C2A.0020.0004][.2C4F.0020.0004] # MALAYALAM LETTER CHILLU N +0D29 ; [.2C2B.0020.0002] # MALAYALAM LETTER NNNA +0D2A ; [.2C2C.0020.0002] # MALAYALAM LETTER PA +0D2B ; [.2C2D.0020.0002] # MALAYALAM LETTER PHA +0D2C ; [.2C2E.0020.0002] # MALAYALAM LETTER BA +0D2D ; [.2C2F.0020.0002] # MALAYALAM LETTER BHA +0D2E ; [.2C30.0020.0002] # MALAYALAM LETTER MA +0D54 ; [.2C30.0020.0004][.2C4F.0020.0004] # MALAYALAM LETTER CHILLU M +0D2F ; [.2C31.0020.0002] # MALAYALAM LETTER YA +0D55 ; [.2C31.0020.0004][.2C4F.0020.0004] # MALAYALAM LETTER CHILLU Y +0D30 ; [.2C32.0020.0002] # MALAYALAM LETTER RA +0D4E ; [.2C32.0020.0004][.2C4F.0020.0004] # MALAYALAM LETTER DOT REPH +0D7C ; [.2C32.0020.0004][.2C4F.0020.0004] # MALAYALAM LETTER CHILLU RR +0D32 ; [.2C33.0020.0002] # MALAYALAM LETTER LA +0D7D ; [.2C33.0020.0004][.2C4F.0020.0004] # MALAYALAM LETTER CHILLU L +0D35 ; [.2C34.0020.0002] # MALAYALAM LETTER VA +0D36 ; [.2C35.0020.0002] # MALAYALAM LETTER SHA +0D37 ; [.2C36.0020.0002] # MALAYALAM LETTER SSA +0D38 ; [.2C37.0020.0002] # MALAYALAM LETTER SA +0D39 ; [.2C38.0020.0002] # MALAYALAM LETTER HA +0D33 ; [.2C39.0020.0002] # MALAYALAM LETTER LLA +0D7E ; [.2C39.0020.0004][.2C4F.0020.0004] # MALAYALAM LETTER CHILLU LL +0D34 ; [.2C3A.0020.0002] # MALAYALAM LETTER LLLA +0D56 ; [.2C3A.0020.0004][.2C4F.0020.0004] # MALAYALAM LETTER CHILLU LLL +0D31 ; [.2C3B.0020.0002] # MALAYALAM LETTER RRA +0D3A ; [.2C3C.0020.0002] # MALAYALAM LETTER TTTA +0D3D ; [.2C3D.0020.0002] # MALAYALAM SIGN AVAGRAHA +0D04 ; [.2C3E.0020.0002] # MALAYALAM LETTER VEDIC ANUSVARA +0D3E ; [.2C3F.0020.0002] # MALAYALAM VOWEL SIGN AA +0D3F ; [.2C40.0020.0002] # MALAYALAM VOWEL SIGN I +0D40 ; [.2C41.0020.0002] # MALAYALAM VOWEL SIGN II +0D41 ; [.2C42.0020.0002] # MALAYALAM VOWEL SIGN U +0D42 ; [.2C43.0020.0002] # MALAYALAM VOWEL SIGN UU +0D43 ; [.2C44.0020.0002] # MALAYALAM VOWEL SIGN VOCALIC R +0D44 ; [.2C45.0020.0002] # MALAYALAM VOWEL SIGN VOCALIC RR +0D62 ; [.2C46.0020.0002] # MALAYALAM VOWEL SIGN VOCALIC L +0D63 ; [.2C47.0020.0002] # MALAYALAM VOWEL SIGN VOCALIC LL +0D46 ; [.2C48.0020.0002] # MALAYALAM VOWEL SIGN E +0D47 ; [.2C49.0020.0002] # MALAYALAM VOWEL SIGN EE +0D48 ; [.2C4A.0020.0002] # MALAYALAM VOWEL SIGN AI +0D4A ; [.2C4B.0020.0002] # MALAYALAM VOWEL SIGN O +0D46 0D3E ; [.2C4B.0020.0002] # MALAYALAM VOWEL SIGN O +0D4B ; [.2C4C.0020.0002] # MALAYALAM VOWEL SIGN OO +0D47 0D3E ; [.2C4C.0020.0002] # MALAYALAM VOWEL SIGN OO +0D4C ; [.2C4D.0020.0002] # MALAYALAM VOWEL SIGN AU +0D46 0D57 ; [.2C4D.0020.0002] # MALAYALAM VOWEL SIGN AU +0D57 ; [.2C4E.0020.0002] # MALAYALAM AU LENGTH MARK +0D4D ; [.2C4F.0020.0002] # MALAYALAM SIGN VIRAMA +0D3B ; [.2C4F.0020.0004] # MALAYALAM SIGN VERTICAL BAR VIRAMA +0D3C ; [.2C4F.0020.0004] # MALAYALAM SIGN CIRCULAR VIRAMA +0D85 ; [.2C50.0020.0002] # SINHALA LETTER AYANNA +0D86 ; [.2C51.0020.0002] # SINHALA LETTER AAYANNA +0D87 ; [.2C52.0020.0002] # SINHALA LETTER AEYANNA +0D88 ; [.2C53.0020.0002] # SINHALA LETTER AEEYANNA +0D89 ; [.2C54.0020.0002] # SINHALA LETTER IYANNA +0D8A ; [.2C55.0020.0002] # SINHALA LETTER IIYANNA +0D8B ; [.2C56.0020.0002] # SINHALA LETTER UYANNA +0D8C ; [.2C57.0020.0002] # SINHALA LETTER UUYANNA +0D8D ; [.2C58.0020.0002] # SINHALA LETTER IRUYANNA +0D8E ; [.2C59.0020.0002] # SINHALA LETTER IRUUYANNA +0D8F ; [.2C5A.0020.0002] # SINHALA LETTER ILUYANNA +0D90 ; [.2C5B.0020.0002] # SINHALA LETTER ILUUYANNA +0D91 ; [.2C5C.0020.0002] # SINHALA LETTER EYANNA +0D92 ; [.2C5D.0020.0002] # SINHALA LETTER EEYANNA +0D93 ; [.2C5E.0020.0002] # SINHALA LETTER AIYANNA +0D94 ; [.2C5F.0020.0002] # SINHALA LETTER OYANNA +0D95 ; [.2C60.0020.0002] # SINHALA LETTER OOYANNA +0D96 ; [.2C61.0020.0002] # SINHALA LETTER AUYANNA +0D9A ; [.2C62.0020.0002] # SINHALA LETTER ALPAPRAANA KAYANNA +0D9B ; [.2C63.0020.0002] # SINHALA LETTER MAHAAPRAANA KAYANNA +0D9C ; [.2C64.0020.0002] # SINHALA LETTER ALPAPRAANA GAYANNA +0D9D ; [.2C65.0020.0002] # SINHALA LETTER MAHAAPRAANA GAYANNA +0D9E ; [.2C66.0020.0002] # SINHALA LETTER KANTAJA NAASIKYAYA +0D9F ; [.2C67.0020.0002] # SINHALA LETTER SANYAKA GAYANNA +0DA0 ; [.2C68.0020.0002] # SINHALA LETTER ALPAPRAANA CAYANNA +0DA1 ; [.2C69.0020.0002] # SINHALA LETTER MAHAAPRAANA CAYANNA +0DA2 ; [.2C6A.0020.0002] # SINHALA LETTER ALPAPRAANA JAYANNA +0DA3 ; [.2C6B.0020.0002] # SINHALA LETTER MAHAAPRAANA JAYANNA +0DA4 ; [.2C6C.0020.0002] # SINHALA LETTER TAALUJA NAASIKYAYA +0DA5 ; [.2C6D.0020.0002] # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA +0DA6 ; [.2C6E.0020.0002] # SINHALA LETTER SANYAKA JAYANNA +0DA7 ; [.2C6F.0020.0002] # SINHALA LETTER ALPAPRAANA TTAYANNA +0DA8 ; [.2C70.0020.0002] # SINHALA LETTER MAHAAPRAANA TTAYANNA +0DA9 ; [.2C71.0020.0002] # SINHALA LETTER ALPAPRAANA DDAYANNA +0DAA ; [.2C72.0020.0002] # SINHALA LETTER MAHAAPRAANA DDAYANNA +0DAB ; [.2C73.0020.0002] # SINHALA LETTER MUURDHAJA NAYANNA +0DAC ; [.2C74.0020.0002] # SINHALA LETTER SANYAKA DDAYANNA +0DAD ; [.2C75.0020.0002] # SINHALA LETTER ALPAPRAANA TAYANNA +0DAE ; [.2C76.0020.0002] # SINHALA LETTER MAHAAPRAANA TAYANNA +0DAF ; [.2C77.0020.0002] # SINHALA LETTER ALPAPRAANA DAYANNA +0DB0 ; [.2C78.0020.0002] # SINHALA LETTER MAHAAPRAANA DAYANNA +0DB1 ; [.2C79.0020.0002] # SINHALA LETTER DANTAJA NAYANNA +0DB3 ; [.2C7A.0020.0002] # SINHALA LETTER SANYAKA DAYANNA +0DB4 ; [.2C7B.0020.0002] # SINHALA LETTER ALPAPRAANA PAYANNA +0DB5 ; [.2C7C.0020.0002] # SINHALA LETTER MAHAAPRAANA PAYANNA +0DB6 ; [.2C7D.0020.0002] # SINHALA LETTER ALPAPRAANA BAYANNA +0DB7 ; [.2C7E.0020.0002] # SINHALA LETTER MAHAAPRAANA BAYANNA +0DB8 ; [.2C7F.0020.0002] # SINHALA LETTER MAYANNA +0DB9 ; [.2C80.0020.0002] # SINHALA LETTER AMBA BAYANNA +0DBA ; [.2C81.0020.0002] # SINHALA LETTER YAYANNA +0DBB ; [.2C82.0020.0002] # SINHALA LETTER RAYANNA +0DBD ; [.2C83.0020.0002] # SINHALA LETTER DANTAJA LAYANNA +0DC0 ; [.2C84.0020.0002] # SINHALA LETTER VAYANNA +0DC1 ; [.2C85.0020.0002] # SINHALA LETTER TAALUJA SAYANNA +0DC2 ; [.2C86.0020.0002] # SINHALA LETTER MUURDHAJA SAYANNA +0DC3 ; [.2C87.0020.0002] # SINHALA LETTER DANTAJA SAYANNA +0DC4 ; [.2C88.0020.0002] # SINHALA LETTER HAYANNA +0DC5 ; [.2C89.0020.0002] # SINHALA LETTER MUURDHAJA LAYANNA +0DC6 ; [.2C8A.0020.0002] # SINHALA LETTER FAYANNA +0DCF ; [.2C8B.0020.0002] # SINHALA VOWEL SIGN AELA-PILLA +0DD0 ; [.2C8C.0020.0002] # SINHALA VOWEL SIGN KETTI AEDA-PILLA +0DD1 ; [.2C8D.0020.0002] # SINHALA VOWEL SIGN DIGA AEDA-PILLA +0DD2 ; [.2C8E.0020.0002] # SINHALA VOWEL SIGN KETTI IS-PILLA +0DD3 ; [.2C8F.0020.0002] # SINHALA VOWEL SIGN DIGA IS-PILLA +0DD4 ; [.2C90.0020.0002] # SINHALA VOWEL SIGN KETTI PAA-PILLA +0DD6 ; [.2C91.0020.0002] # SINHALA VOWEL SIGN DIGA PAA-PILLA +0DD8 ; [.2C92.0020.0002] # SINHALA VOWEL SIGN GAETTA-PILLA +0DF2 ; [.2C93.0020.0002] # SINHALA VOWEL SIGN DIGA GAETTA-PILLA +0DDF ; [.2C94.0020.0002] # SINHALA VOWEL SIGN GAYANUKITTA +0DF3 ; [.2C95.0020.0002] # SINHALA VOWEL SIGN DIGA GAYANUKITTA +0DD9 ; [.2C96.0020.0002] # SINHALA VOWEL SIGN KOMBUVA +0DDA ; [.2C97.0020.0002] # SINHALA VOWEL SIGN DIGA KOMBUVA +0DD9 0DCA ; [.2C97.0020.0002] # SINHALA VOWEL SIGN DIGA KOMBUVA +0DDB ; [.2C98.0020.0002] # SINHALA VOWEL SIGN KOMBU DEKA +0DDC ; [.2C99.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA +0DD9 0DCF ; [.2C99.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA +0DDD ; [.2C9A.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA +0DD9 0DCF 0DCA ; [.2C9A.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA +0DDC 0DCA ; [.2C9A.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA +0DDE ; [.2C9B.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA +0DD9 0DDF ; [.2C9B.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA +0DCA ; [.2C9C.0020.0002] # SINHALA SIGN AL-LAKUNA +AAF2 ; [.2C9D.0020.0002] # MEETEI MAYEK ANJI +ABC0 ; [.2C9E.0020.0002] # MEETEI MAYEK LETTER KOK +ABC1 ; [.2C9F.0020.0002] # MEETEI MAYEK LETTER SAM +ABC2 ; [.2CA0.0020.0002] # MEETEI MAYEK LETTER LAI +ABC3 ; [.2CA1.0020.0002] # MEETEI MAYEK LETTER MIT +ABC4 ; [.2CA2.0020.0002] # MEETEI MAYEK LETTER PA +ABC5 ; [.2CA3.0020.0002] # MEETEI MAYEK LETTER NA +ABC6 ; [.2CA4.0020.0002] # MEETEI MAYEK LETTER CHIL +ABC7 ; [.2CA5.0020.0002] # MEETEI MAYEK LETTER TIL +ABC8 ; [.2CA6.0020.0002] # MEETEI MAYEK LETTER KHOU +ABC9 ; [.2CA7.0020.0002] # MEETEI MAYEK LETTER NGOU +ABCA ; [.2CA8.0020.0002] # MEETEI MAYEK LETTER THOU +ABCB ; [.2CA9.0020.0002] # MEETEI MAYEK LETTER WAI +ABCC ; [.2CAA.0020.0002] # MEETEI MAYEK LETTER YANG +ABCD ; [.2CAB.0020.0002] # MEETEI MAYEK LETTER HUK +ABCE ; [.2CAC.0020.0002] # MEETEI MAYEK LETTER UN +ABCF ; [.2CAD.0020.0002] # MEETEI MAYEK LETTER I +ABD0 ; [.2CAE.0020.0002] # MEETEI MAYEK LETTER PHAM +ABD1 ; [.2CAF.0020.0002] # MEETEI MAYEK LETTER ATIYA +ABD2 ; [.2CB0.0020.0002] # MEETEI MAYEK LETTER GOK +ABD3 ; [.2CB1.0020.0002] # MEETEI MAYEK LETTER JHAM +ABD4 ; [.2CB2.0020.0002] # MEETEI MAYEK LETTER RAI +ABD5 ; [.2CB3.0020.0002] # MEETEI MAYEK LETTER BA +ABD6 ; [.2CB4.0020.0002] # MEETEI MAYEK LETTER JIL +ABD7 ; [.2CB5.0020.0002] # MEETEI MAYEK LETTER DIL +ABD8 ; [.2CB6.0020.0002] # MEETEI MAYEK LETTER GHOU +ABD9 ; [.2CB7.0020.0002] # MEETEI MAYEK LETTER DHOU +ABDA ; [.2CB8.0020.0002] # MEETEI MAYEK LETTER BHAM +AAE0 ; [.2CB9.0020.0002] # MEETEI MAYEK LETTER E +AAE1 ; [.2CBA.0020.0002] # MEETEI MAYEK LETTER O +AAE2 ; [.2CBB.0020.0002] # MEETEI MAYEK LETTER CHA +AAE3 ; [.2CBC.0020.0002] # MEETEI MAYEK LETTER NYA +AAE4 ; [.2CBD.0020.0002] # MEETEI MAYEK LETTER TTA +AAE5 ; [.2CBE.0020.0002] # MEETEI MAYEK LETTER TTHA +AAE6 ; [.2CBF.0020.0002] # MEETEI MAYEK LETTER DDA +AAE7 ; [.2CC0.0020.0002] # MEETEI MAYEK LETTER DDHA +AAE8 ; [.2CC1.0020.0002] # MEETEI MAYEK LETTER NNA +AAE9 ; [.2CC2.0020.0002] # MEETEI MAYEK LETTER SHA +AAEA ; [.2CC3.0020.0002] # MEETEI MAYEK LETTER SSA +ABE3 ; [.2CC4.0020.0002] # MEETEI MAYEK VOWEL SIGN ONAP +ABE4 ; [.2CC5.0020.0002] # MEETEI MAYEK VOWEL SIGN INAP +ABE5 ; [.2CC6.0020.0002] # MEETEI MAYEK VOWEL SIGN ANAP +ABE6 ; [.2CC7.0020.0002] # MEETEI MAYEK VOWEL SIGN YENAP +ABE7 ; [.2CC8.0020.0002] # MEETEI MAYEK VOWEL SIGN SOUNAP +ABE8 ; [.2CC9.0020.0002] # MEETEI MAYEK VOWEL SIGN UNAP +ABE9 ; [.2CCA.0020.0002] # MEETEI MAYEK VOWEL SIGN CHEINAP +ABEA ; [.2CCB.0020.0002] # MEETEI MAYEK VOWEL SIGN NUNG +AAEB ; [.2CCC.0020.0002] # MEETEI MAYEK VOWEL SIGN II +AAEC ; [.2CCD.0020.0002] # MEETEI MAYEK VOWEL SIGN UU +AAED ; [.2CCE.0020.0002] # MEETEI MAYEK VOWEL SIGN AAI +AAEE ; [.2CCF.0020.0002] # MEETEI MAYEK VOWEL SIGN AU +AAEF ; [.2CD0.0020.0002] # MEETEI MAYEK VOWEL SIGN AAU +AAF5 ; [.2CD1.0020.0002] # MEETEI MAYEK VOWEL SIGN VISARGA +ABDB ; [.2CD2.0020.0002] # MEETEI MAYEK LETTER KOK LONSUM +ABDC ; [.2CD3.0020.0002] # MEETEI MAYEK LETTER LAI LONSUM +ABDD ; [.2CD4.0020.0002] # MEETEI MAYEK LETTER MIT LONSUM +ABDE ; [.2CD5.0020.0002] # MEETEI MAYEK LETTER PA LONSUM +ABDF ; [.2CD6.0020.0002] # MEETEI MAYEK LETTER NA LONSUM +ABE0 ; [.2CD7.0020.0002] # MEETEI MAYEK LETTER TIL LONSUM +ABE1 ; [.2CD8.0020.0002] # MEETEI MAYEK LETTER NGOU LONSUM +ABE2 ; [.2CD9.0020.0002] # MEETEI MAYEK LETTER I LONSUM +ABED ; [.2CDA.0020.0002] # MEETEI MAYEK APUN IYEK +AAF6 ; [.2CDB.0020.0002] # MEETEI MAYEK VIRAMA +A800 ; [.2CDC.0020.0002] # SYLOTI NAGRI LETTER A +A801 ; [.2CDD.0020.0002] # SYLOTI NAGRI LETTER I +A802 ; [.2CDE.0020.0002] # SYLOTI NAGRI SIGN DVISVARA +A803 ; [.2CDF.0020.0002] # SYLOTI NAGRI LETTER U +A804 ; [.2CE0.0020.0002] # SYLOTI NAGRI LETTER E +A805 ; [.2CE1.0020.0002] # SYLOTI NAGRI LETTER O +A806 ; [.2CE2.0020.0002] # SYLOTI NAGRI SIGN HASANTA +A82C ; [.2CE3.0020.0002] # SYLOTI NAGRI SIGN ALTERNATE HASANTA +A807 ; [.2CE4.0020.0002] # SYLOTI NAGRI LETTER KO +A808 ; [.2CE5.0020.0002] # SYLOTI NAGRI LETTER KHO +A809 ; [.2CE6.0020.0002] # SYLOTI NAGRI LETTER GO +A80A ; [.2CE7.0020.0002] # SYLOTI NAGRI LETTER GHO +A80C ; [.2CE8.0020.0002] # SYLOTI NAGRI LETTER CO +A80D ; [.2CE9.0020.0002] # SYLOTI NAGRI LETTER CHO +A80E ; [.2CEA.0020.0002] # SYLOTI NAGRI LETTER JO +A80F ; [.2CEB.0020.0002] # SYLOTI NAGRI LETTER JHO +A810 ; [.2CEC.0020.0002] # SYLOTI NAGRI LETTER TTO +A811 ; [.2CED.0020.0002] # SYLOTI NAGRI LETTER TTHO +A812 ; [.2CEE.0020.0002] # SYLOTI NAGRI LETTER DDO +A813 ; [.2CEF.0020.0002] # SYLOTI NAGRI LETTER DDHO +A814 ; [.2CF0.0020.0002] # SYLOTI NAGRI LETTER TO +A815 ; [.2CF1.0020.0002] # SYLOTI NAGRI LETTER THO +A816 ; [.2CF2.0020.0002] # SYLOTI NAGRI LETTER DO +A817 ; [.2CF3.0020.0002] # SYLOTI NAGRI LETTER DHO +A818 ; [.2CF4.0020.0002] # SYLOTI NAGRI LETTER NO +A819 ; [.2CF5.0020.0002] # SYLOTI NAGRI LETTER PO +A81A ; [.2CF6.0020.0002] # SYLOTI NAGRI LETTER PHO +A81B ; [.2CF7.0020.0002] # SYLOTI NAGRI LETTER BO +A81C ; [.2CF8.0020.0002] # SYLOTI NAGRI LETTER BHO +A81D ; [.2CF9.0020.0002] # SYLOTI NAGRI LETTER MO +A81E ; [.2CFA.0020.0002] # SYLOTI NAGRI LETTER RO +A81F ; [.2CFB.0020.0002] # SYLOTI NAGRI LETTER LO +A820 ; [.2CFC.0020.0002] # SYLOTI NAGRI LETTER RRO +A821 ; [.2CFD.0020.0002] # SYLOTI NAGRI LETTER SO +A822 ; [.2CFE.0020.0002] # SYLOTI NAGRI LETTER HO +A823 ; [.2CFF.0020.0002] # SYLOTI NAGRI VOWEL SIGN A +A824 ; [.2D00.0020.0002] # SYLOTI NAGRI VOWEL SIGN I +A825 ; [.2D01.0020.0002] # SYLOTI NAGRI VOWEL SIGN U +A826 ; [.2D02.0020.0002] # SYLOTI NAGRI VOWEL SIGN E +A827 ; [.2D03.0020.0002] # SYLOTI NAGRI VOWEL SIGN OO +A882 ; [.2D04.0020.0002] # SAURASHTRA LETTER A +A883 ; [.2D05.0020.0002] # SAURASHTRA LETTER AA +A884 ; [.2D06.0020.0002] # SAURASHTRA LETTER I +A885 ; [.2D07.0020.0002] # SAURASHTRA LETTER II +A886 ; [.2D08.0020.0002] # SAURASHTRA LETTER U +A887 ; [.2D09.0020.0002] # SAURASHTRA LETTER UU +A888 ; [.2D0A.0020.0002] # SAURASHTRA LETTER VOCALIC R +A889 ; [.2D0B.0020.0002] # SAURASHTRA LETTER VOCALIC RR +A88A ; [.2D0C.0020.0002] # SAURASHTRA LETTER VOCALIC L +A88B ; [.2D0D.0020.0002] # SAURASHTRA LETTER VOCALIC LL +A88C ; [.2D0E.0020.0002] # SAURASHTRA LETTER E +A88D ; [.2D0F.0020.0002] # SAURASHTRA LETTER EE +A88E ; [.2D10.0020.0002] # SAURASHTRA LETTER AI +A88F ; [.2D11.0020.0002] # SAURASHTRA LETTER O +A890 ; [.2D12.0020.0002] # SAURASHTRA LETTER OO +A891 ; [.2D13.0020.0002] # SAURASHTRA LETTER AU +A892 ; [.2D14.0020.0002] # SAURASHTRA LETTER KA +A893 ; [.2D15.0020.0002] # SAURASHTRA LETTER KHA +A894 ; [.2D16.0020.0002] # SAURASHTRA LETTER GA +A895 ; [.2D17.0020.0002] # SAURASHTRA LETTER GHA +A896 ; [.2D18.0020.0002] # SAURASHTRA LETTER NGA +A897 ; [.2D19.0020.0002] # SAURASHTRA LETTER CA +A898 ; [.2D1A.0020.0002] # SAURASHTRA LETTER CHA +A899 ; [.2D1B.0020.0002] # SAURASHTRA LETTER JA +A89A ; [.2D1C.0020.0002] # SAURASHTRA LETTER JHA +A89B ; [.2D1D.0020.0002] # SAURASHTRA LETTER NYA +A89C ; [.2D1E.0020.0002] # SAURASHTRA LETTER TTA +A89D ; [.2D1F.0020.0002] # SAURASHTRA LETTER TTHA +A89E ; [.2D20.0020.0002] # SAURASHTRA LETTER DDA +A89F ; [.2D21.0020.0002] # SAURASHTRA LETTER DDHA +A8A0 ; [.2D22.0020.0002] # SAURASHTRA LETTER NNA +A8A1 ; [.2D23.0020.0002] # SAURASHTRA LETTER TA +A8A2 ; [.2D24.0020.0002] # SAURASHTRA LETTER THA +A8A3 ; [.2D25.0020.0002] # SAURASHTRA LETTER DA +A8A4 ; [.2D26.0020.0002] # SAURASHTRA LETTER DHA +A8A5 ; [.2D27.0020.0002] # SAURASHTRA LETTER NA +A8A6 ; [.2D28.0020.0002] # SAURASHTRA LETTER PA +A8A7 ; [.2D29.0020.0002] # SAURASHTRA LETTER PHA +A8A8 ; [.2D2A.0020.0002] # SAURASHTRA LETTER BA +A8A9 ; [.2D2B.0020.0002] # SAURASHTRA LETTER BHA +A8AA ; [.2D2C.0020.0002] # SAURASHTRA LETTER MA +A8AB ; [.2D2D.0020.0002] # SAURASHTRA LETTER YA +A8AC ; [.2D2E.0020.0002] # SAURASHTRA LETTER RA +A8AD ; [.2D2F.0020.0002] # SAURASHTRA LETTER LA +A8AE ; [.2D30.0020.0002] # SAURASHTRA LETTER VA +A8AF ; [.2D31.0020.0002] # SAURASHTRA LETTER SHA +A8B0 ; [.2D32.0020.0002] # SAURASHTRA LETTER SSA +A8B1 ; [.2D33.0020.0002] # SAURASHTRA LETTER SA +A8B2 ; [.2D34.0020.0002] # SAURASHTRA LETTER HA +A8B3 ; [.2D35.0020.0002] # SAURASHTRA LETTER LLA +A8B4 ; [.2D36.0020.0002] # SAURASHTRA CONSONANT SIGN HAARU +A8B5 ; [.2D37.0020.0002] # SAURASHTRA VOWEL SIGN AA +A8B6 ; [.2D38.0020.0002] # SAURASHTRA VOWEL SIGN I +A8B7 ; [.2D39.0020.0002] # SAURASHTRA VOWEL SIGN II +A8B8 ; [.2D3A.0020.0002] # SAURASHTRA VOWEL SIGN U +A8B9 ; [.2D3B.0020.0002] # SAURASHTRA VOWEL SIGN UU +A8BA ; [.2D3C.0020.0002] # SAURASHTRA VOWEL SIGN VOCALIC R +A8BB ; [.2D3D.0020.0002] # SAURASHTRA VOWEL SIGN VOCALIC RR +A8BC ; [.2D3E.0020.0002] # SAURASHTRA VOWEL SIGN VOCALIC L +A8BD ; [.2D3F.0020.0002] # SAURASHTRA VOWEL SIGN VOCALIC LL +A8BE ; [.2D40.0020.0002] # SAURASHTRA VOWEL SIGN E +A8BF ; [.2D41.0020.0002] # SAURASHTRA VOWEL SIGN EE +A8C0 ; [.2D42.0020.0002] # SAURASHTRA VOWEL SIGN AI +A8C1 ; [.2D43.0020.0002] # SAURASHTRA VOWEL SIGN O +A8C2 ; [.2D44.0020.0002] # SAURASHTRA VOWEL SIGN OO +A8C3 ; [.2D45.0020.0002] # SAURASHTRA VOWEL SIGN AU +A8C4 ; [.2D46.0020.0002] # SAURASHTRA SIGN VIRAMA +11083 ; [.2D47.0020.0002] # KAITHI LETTER A +11084 ; [.2D48.0020.0002] # KAITHI LETTER AA +11085 ; [.2D49.0020.0002] # KAITHI LETTER I +11086 ; [.2D4A.0020.0002] # KAITHI LETTER II +11087 ; [.2D4B.0020.0002] # KAITHI LETTER U +11088 ; [.2D4C.0020.0002] # KAITHI LETTER UU +11089 ; [.2D4D.0020.0002] # KAITHI LETTER E +1108A ; [.2D4E.0020.0002] # KAITHI LETTER AI +1108B ; [.2D4F.0020.0002] # KAITHI LETTER O +1108C ; [.2D50.0020.0002] # KAITHI LETTER AU +1108D ; [.2D51.0020.0002] # KAITHI LETTER KA +1108E ; [.2D52.0020.0002] # KAITHI LETTER KHA +1108F ; [.2D53.0020.0002] # KAITHI LETTER GA +11090 ; [.2D54.0020.0002] # KAITHI LETTER GHA +11091 ; [.2D55.0020.0002] # KAITHI LETTER NGA +11092 ; [.2D56.0020.0002] # KAITHI LETTER CA +11093 ; [.2D57.0020.0002] # KAITHI LETTER CHA +11094 ; [.2D58.0020.0002] # KAITHI LETTER JA +11095 ; [.2D59.0020.0002] # KAITHI LETTER JHA +11096 ; [.2D5A.0020.0002] # KAITHI LETTER NYA +11097 ; [.2D5B.0020.0002] # KAITHI LETTER TTA +11098 ; [.2D5C.0020.0002] # KAITHI LETTER TTHA +11099 ; [.2D5D.0020.0002] # KAITHI LETTER DDA +1109A ; [.2D5D.0020.0002][.0000.00C2.0002] # KAITHI LETTER DDDHA +1109B ; [.2D5E.0020.0002] # KAITHI LETTER DDHA +1109C ; [.2D5E.0020.0002][.0000.00C2.0002] # KAITHI LETTER RHA +1109D ; [.2D5F.0020.0002] # KAITHI LETTER NNA +1109E ; [.2D60.0020.0002] # KAITHI LETTER TA +1109F ; [.2D61.0020.0002] # KAITHI LETTER THA +110A0 ; [.2D62.0020.0002] # KAITHI LETTER DA +110A1 ; [.2D63.0020.0002] # KAITHI LETTER DHA +110A2 ; [.2D64.0020.0002] # KAITHI LETTER NA +110A3 ; [.2D65.0020.0002] # KAITHI LETTER PA +110A4 ; [.2D66.0020.0002] # KAITHI LETTER PHA +110A5 ; [.2D67.0020.0002] # KAITHI LETTER BA +110AB ; [.2D67.0020.0002][.0000.00C2.0002] # KAITHI LETTER VA +110A6 ; [.2D68.0020.0002] # KAITHI LETTER BHA +110A7 ; [.2D69.0020.0002] # KAITHI LETTER MA +110A8 ; [.2D6A.0020.0002] # KAITHI LETTER YA +110A9 ; [.2D6B.0020.0002] # KAITHI LETTER RA +110AA ; [.2D6C.0020.0002] # KAITHI LETTER LA +110AC ; [.2D6D.0020.0002] # KAITHI LETTER SHA +110AD ; [.2D6E.0020.0002] # KAITHI LETTER SSA +110AE ; [.2D6F.0020.0002] # KAITHI LETTER SA +110AF ; [.2D70.0020.0002] # KAITHI LETTER HA +110B0 ; [.2D71.0020.0002] # KAITHI VOWEL SIGN AA +110B1 ; [.2D72.0020.0002] # KAITHI VOWEL SIGN I +110B2 ; [.2D73.0020.0002] # KAITHI VOWEL SIGN II +110B3 ; [.2D74.0020.0002] # KAITHI VOWEL SIGN U +110B4 ; [.2D75.0020.0002] # KAITHI VOWEL SIGN UU +110B5 ; [.2D76.0020.0002] # KAITHI VOWEL SIGN E +110B6 ; [.2D77.0020.0002] # KAITHI VOWEL SIGN AI +110B7 ; [.2D78.0020.0002] # KAITHI VOWEL SIGN O +110B8 ; [.2D79.0020.0002] # KAITHI VOWEL SIGN AU +110B9 ; [.2D7A.0020.0002] # KAITHI SIGN VIRAMA +11150 ; [.2D7B.0020.0002] # MAHAJANI LETTER A +11151 ; [.2D7C.0020.0002] # MAHAJANI LETTER I +11152 ; [.2D7D.0020.0002] # MAHAJANI LETTER U +11153 ; [.2D7E.0020.0002] # MAHAJANI LETTER E +11154 ; [.2D7F.0020.0002] # MAHAJANI LETTER O +11155 ; [.2D80.0020.0002] # MAHAJANI LETTER KA +11156 ; [.2D81.0020.0002] # MAHAJANI LETTER KHA +11157 ; [.2D82.0020.0002] # MAHAJANI LETTER GA +11158 ; [.2D83.0020.0002] # MAHAJANI LETTER GHA +11159 ; [.2D84.0020.0002] # MAHAJANI LETTER CA +1115A ; [.2D85.0020.0002] # MAHAJANI LETTER CHA +1115B ; [.2D86.0020.0002] # MAHAJANI LETTER JA +1115C ; [.2D87.0020.0002] # MAHAJANI LETTER JHA +1115D ; [.2D88.0020.0002] # MAHAJANI LETTER NYA +1115E ; [.2D89.0020.0002] # MAHAJANI LETTER TTA +1115F ; [.2D8A.0020.0002] # MAHAJANI LETTER TTHA +11160 ; [.2D8B.0020.0002] # MAHAJANI LETTER DDA +11161 ; [.2D8C.0020.0002] # MAHAJANI LETTER DDHA +11162 ; [.2D8D.0020.0002] # MAHAJANI LETTER NNA +11163 ; [.2D8E.0020.0002] # MAHAJANI LETTER TA +11164 ; [.2D8F.0020.0002] # MAHAJANI LETTER THA +11165 ; [.2D90.0020.0002] # MAHAJANI LETTER DA +11166 ; [.2D91.0020.0002] # MAHAJANI LETTER DHA +11167 ; [.2D92.0020.0002] # MAHAJANI LETTER NA +11168 ; [.2D93.0020.0002] # MAHAJANI LETTER PA +11169 ; [.2D94.0020.0002] # MAHAJANI LETTER PHA +1116A ; [.2D95.0020.0002] # MAHAJANI LETTER BA +1116B ; [.2D96.0020.0002] # MAHAJANI LETTER BHA +1116C ; [.2D97.0020.0002] # MAHAJANI LETTER MA +1116D ; [.2D98.0020.0002] # MAHAJANI LETTER RA +1116E ; [.2D99.0020.0002] # MAHAJANI LETTER LA +1116F ; [.2D9A.0020.0002] # MAHAJANI LETTER VA +11176 ; [.2D9B.0020.0002] # MAHAJANI LIGATURE SHRI +11170 ; [.2D9C.0020.0002] # MAHAJANI LETTER SA +11171 ; [.2D9D.0020.0002] # MAHAJANI LETTER HA +11172 ; [.2D9E.0020.0002] # MAHAJANI LETTER RRA +111C4 ; [.2D9F.0020.0002] # SHARADA OM +111DA ; [.2DA0.0020.0002] # SHARADA EKAM +11183 ; [.2DA1.0020.0002] # SHARADA LETTER A +11184 ; [.2DA2.0020.0002] # SHARADA LETTER AA +11185 ; [.2DA3.0020.0002] # SHARADA LETTER I +11186 ; [.2DA4.0020.0002] # SHARADA LETTER II +11187 ; [.2DA5.0020.0002] # SHARADA LETTER U +11188 ; [.2DA6.0020.0002] # SHARADA LETTER UU +11189 ; [.2DA7.0020.0002] # SHARADA LETTER VOCALIC R +1118A ; [.2DA8.0020.0002] # SHARADA LETTER VOCALIC RR +1118B ; [.2DA9.0020.0002] # SHARADA LETTER VOCALIC L +1118C ; [.2DAA.0020.0002] # SHARADA LETTER VOCALIC LL +1118D ; [.2DAB.0020.0002] # SHARADA LETTER E +1118E ; [.2DAC.0020.0002] # SHARADA LETTER AI +1118F ; [.2DAD.0020.0002] # SHARADA LETTER O +11190 ; [.2DAE.0020.0002] # SHARADA LETTER AU +11191 ; [.2DAF.0020.0002] # SHARADA LETTER KA +11192 ; [.2DB0.0020.0002] # SHARADA LETTER KHA +11193 ; [.2DB1.0020.0002] # SHARADA LETTER GA +11194 ; [.2DB2.0020.0002] # SHARADA LETTER GHA +11195 ; [.2DB3.0020.0002] # SHARADA LETTER NGA +11196 ; [.2DB4.0020.0002] # SHARADA LETTER CA +11197 ; [.2DB5.0020.0002] # SHARADA LETTER CHA +11198 ; [.2DB6.0020.0002] # SHARADA LETTER JA +11199 ; [.2DB7.0020.0002] # SHARADA LETTER JHA +1119A ; [.2DB8.0020.0002] # SHARADA LETTER NYA +1119B ; [.2DB9.0020.0002] # SHARADA LETTER TTA +1119C ; [.2DBA.0020.0002] # SHARADA LETTER TTHA +1119D ; [.2DBB.0020.0002] # SHARADA LETTER DDA +1119E ; [.2DBC.0020.0002] # SHARADA LETTER DDHA +1119F ; [.2DBD.0020.0002] # SHARADA LETTER NNA +111A0 ; [.2DBE.0020.0002] # SHARADA LETTER TA +111A1 ; [.2DBF.0020.0002] # SHARADA LETTER THA +111A2 ; [.2DC0.0020.0002] # SHARADA LETTER DA +111A3 ; [.2DC1.0020.0002] # SHARADA LETTER DHA +111A4 ; [.2DC2.0020.0002] # SHARADA LETTER NA +111A5 ; [.2DC3.0020.0002] # SHARADA LETTER PA +111A6 ; [.2DC4.0020.0002] # SHARADA LETTER PHA +111A7 ; [.2DC5.0020.0002] # SHARADA LETTER BA +111A8 ; [.2DC6.0020.0002] # SHARADA LETTER BHA +111A9 ; [.2DC7.0020.0002] # SHARADA LETTER MA +111AA ; [.2DC8.0020.0002] # SHARADA LETTER YA +111AB ; [.2DC9.0020.0002] # SHARADA LETTER RA +111AC ; [.2DCA.0020.0002] # SHARADA LETTER LA +111AD ; [.2DCB.0020.0002] # SHARADA LETTER LLA +111AE ; [.2DCC.0020.0002] # SHARADA LETTER VA +111AF ; [.2DCD.0020.0002] # SHARADA LETTER SHA +111B0 ; [.2DCE.0020.0002] # SHARADA LETTER SSA +111B1 ; [.2DCF.0020.0002] # SHARADA LETTER SA +111B2 ; [.2DD0.0020.0002] # SHARADA LETTER HA +111C1 ; [.2DD1.0020.0002] # SHARADA SIGN AVAGRAHA +111C2 ; [.2DD2.0020.0002] # SHARADA SIGN JIHVAMULIYA +111C3 ; [.2DD3.0020.0002] # SHARADA SIGN UPADHMANIYA +111DC ; [.2DD4.0020.0002] # SHARADA HEADSTROKE +111B3 ; [.2DD5.0020.0002] # SHARADA VOWEL SIGN AA +111B4 ; [.2DD6.0020.0002] # SHARADA VOWEL SIGN I +111B5 ; [.2DD7.0020.0002] # SHARADA VOWEL SIGN II +111B6 ; [.2DD8.0020.0002] # SHARADA VOWEL SIGN U +111B7 ; [.2DD9.0020.0002] # SHARADA VOWEL SIGN UU +111B8 ; [.2DDA.0020.0002] # SHARADA VOWEL SIGN VOCALIC R +111B9 ; [.2DDB.0020.0002] # SHARADA VOWEL SIGN VOCALIC RR +111BA ; [.2DDC.0020.0002] # SHARADA VOWEL SIGN VOCALIC L +111BB ; [.2DDD.0020.0002] # SHARADA VOWEL SIGN VOCALIC LL +111BC ; [.2DDE.0020.0002] # SHARADA VOWEL SIGN E +111CE ; [.2DDF.0020.0002] # SHARADA VOWEL SIGN PRISHTHAMATRA E +111BD ; [.2DE0.0020.0002] # SHARADA VOWEL SIGN AI +111BE ; [.2DE1.0020.0002] # SHARADA VOWEL SIGN O +111BF ; [.2DE2.0020.0002] # SHARADA VOWEL SIGN AU +111C0 ; [.2DE3.0020.0002] # SHARADA SIGN VIRAMA +11200 ; [.2DE4.0020.0002] # KHOJKI LETTER A +11201 ; [.2DE5.0020.0002] # KHOJKI LETTER AA +11202 ; [.2DE6.0020.0002] # KHOJKI LETTER I +11203 ; [.2DE7.0020.0002] # KHOJKI LETTER U +11204 ; [.2DE8.0020.0002] # KHOJKI LETTER E +11205 ; [.2DE9.0020.0002] # KHOJKI LETTER AI +11206 ; [.2DEA.0020.0002] # KHOJKI LETTER O +11207 ; [.2DEB.0020.0002] # KHOJKI LETTER AU +11208 ; [.2DEC.0020.0002] # KHOJKI LETTER KA +11209 ; [.2DED.0020.0002] # KHOJKI LETTER KHA +1120A ; [.2DEE.0020.0002] # KHOJKI LETTER GA +1120B ; [.2DEF.0020.0002] # KHOJKI LETTER GGA +1120C ; [.2DF0.0020.0002] # KHOJKI LETTER GHA +1120D ; [.2DF1.0020.0002] # KHOJKI LETTER NGA +1120E ; [.2DF2.0020.0002] # KHOJKI LETTER CA +1120F ; [.2DF3.0020.0002] # KHOJKI LETTER CHA +11210 ; [.2DF4.0020.0002] # KHOJKI LETTER JA +11211 ; [.2DF5.0020.0002] # KHOJKI LETTER JJA +11213 ; [.2DF6.0020.0002] # KHOJKI LETTER NYA +11214 ; [.2DF7.0020.0002] # KHOJKI LETTER TTA +11215 ; [.2DF8.0020.0002] # KHOJKI LETTER TTHA +11216 ; [.2DF9.0020.0002] # KHOJKI LETTER DDA +11217 ; [.2DFA.0020.0002] # KHOJKI LETTER DDHA +11218 ; [.2DFB.0020.0002] # KHOJKI LETTER NNA +11219 ; [.2DFC.0020.0002] # KHOJKI LETTER TA +1121A ; [.2DFD.0020.0002] # KHOJKI LETTER THA +1121B ; [.2DFE.0020.0002] # KHOJKI LETTER DA +1121C ; [.2DFF.0020.0002] # KHOJKI LETTER DDDA +1121D ; [.2E00.0020.0002] # KHOJKI LETTER DHA +1121E ; [.2E01.0020.0002] # KHOJKI LETTER NA +1121F ; [.2E02.0020.0002] # KHOJKI LETTER PA +11220 ; [.2E03.0020.0002] # KHOJKI LETTER PHA +11221 ; [.2E04.0020.0002] # KHOJKI LETTER BA +11222 ; [.2E05.0020.0002] # KHOJKI LETTER BBA +11223 ; [.2E06.0020.0002] # KHOJKI LETTER BHA +11224 ; [.2E07.0020.0002] # KHOJKI LETTER MA +11225 ; [.2E08.0020.0002] # KHOJKI LETTER YA +11226 ; [.2E09.0020.0002] # KHOJKI LETTER RA +11227 ; [.2E0A.0020.0002] # KHOJKI LETTER LA +11228 ; [.2E0B.0020.0002] # KHOJKI LETTER VA +11229 ; [.2E0C.0020.0002] # KHOJKI LETTER SA +1122A ; [.2E0D.0020.0002] # KHOJKI LETTER HA +1122B ; [.2E0E.0020.0002] # KHOJKI LETTER LLA +1122C ; [.2E0F.0020.0002] # KHOJKI VOWEL SIGN AA +1122D ; [.2E10.0020.0002] # KHOJKI VOWEL SIGN I +1122E ; [.2E11.0020.0002] # KHOJKI VOWEL SIGN II +1122F ; [.2E12.0020.0002] # KHOJKI VOWEL SIGN U +11230 ; [.2E13.0020.0002] # KHOJKI VOWEL SIGN E +11231 ; [.2E14.0020.0002] # KHOJKI VOWEL SIGN AI +11232 ; [.2E15.0020.0002] # KHOJKI VOWEL SIGN O +11233 ; [.2E16.0020.0002] # KHOJKI VOWEL SIGN AU +11235 ; [.2E17.0020.0002] # KHOJKI SIGN VIRAMA +112B0 ; [.2E18.0020.0002] # KHUDAWADI LETTER A +112B1 ; [.2E19.0020.0002] # KHUDAWADI LETTER AA +112B2 ; [.2E1A.0020.0002] # KHUDAWADI LETTER I +112B3 ; [.2E1B.0020.0002] # KHUDAWADI LETTER II +112B4 ; [.2E1C.0020.0002] # KHUDAWADI LETTER U +112B5 ; [.2E1D.0020.0002] # KHUDAWADI LETTER UU +112B6 ; [.2E1E.0020.0002] # KHUDAWADI LETTER E +112B7 ; [.2E1F.0020.0002] # KHUDAWADI LETTER AI +112B8 ; [.2E20.0020.0002] # KHUDAWADI LETTER O +112B9 ; [.2E21.0020.0002] # KHUDAWADI LETTER AU +112BA ; [.2E22.0020.0002] # KHUDAWADI LETTER KA +112BB ; [.2E23.0020.0002] # KHUDAWADI LETTER KHA +112BC ; [.2E24.0020.0002] # KHUDAWADI LETTER GA +112BD ; [.2E25.0020.0002] # KHUDAWADI LETTER GGA +112BE ; [.2E26.0020.0002] # KHUDAWADI LETTER GHA +112BF ; [.2E27.0020.0002] # KHUDAWADI LETTER NGA +112C0 ; [.2E28.0020.0002] # KHUDAWADI LETTER CA +112C1 ; [.2E29.0020.0002] # KHUDAWADI LETTER CHA +112C2 ; [.2E2A.0020.0002] # KHUDAWADI LETTER JA +112C3 ; [.2E2B.0020.0002] # KHUDAWADI LETTER JJA +112C4 ; [.2E2C.0020.0002] # KHUDAWADI LETTER JHA +112C5 ; [.2E2D.0020.0002] # KHUDAWADI LETTER NYA +112C6 ; [.2E2E.0020.0002] # KHUDAWADI LETTER TTA +112C7 ; [.2E2F.0020.0002] # KHUDAWADI LETTER TTHA +112C8 ; [.2E30.0020.0002] # KHUDAWADI LETTER DDA +112C9 ; [.2E31.0020.0002] # KHUDAWADI LETTER DDDA +112CA ; [.2E32.0020.0002] # KHUDAWADI LETTER RRA +112CB ; [.2E33.0020.0002] # KHUDAWADI LETTER DDHA +112CC ; [.2E34.0020.0002] # KHUDAWADI LETTER NNA +112CD ; [.2E35.0020.0002] # KHUDAWADI LETTER TA +112CE ; [.2E36.0020.0002] # KHUDAWADI LETTER THA +112CF ; [.2E37.0020.0002] # KHUDAWADI LETTER DA +112D0 ; [.2E38.0020.0002] # KHUDAWADI LETTER DHA +112D1 ; [.2E39.0020.0002] # KHUDAWADI LETTER NA +112D2 ; [.2E3A.0020.0002] # KHUDAWADI LETTER PA +112D3 ; [.2E3B.0020.0002] # KHUDAWADI LETTER PHA +112D4 ; [.2E3C.0020.0002] # KHUDAWADI LETTER BA +112D5 ; [.2E3D.0020.0002] # KHUDAWADI LETTER BBA +112D6 ; [.2E3E.0020.0002] # KHUDAWADI LETTER BHA +112D7 ; [.2E3F.0020.0002] # KHUDAWADI LETTER MA +112D8 ; [.2E40.0020.0002] # KHUDAWADI LETTER YA +112D9 ; [.2E41.0020.0002] # KHUDAWADI LETTER RA +112DA ; [.2E42.0020.0002] # KHUDAWADI LETTER LA +112DB ; [.2E43.0020.0002] # KHUDAWADI LETTER VA +112DC ; [.2E44.0020.0002] # KHUDAWADI LETTER SHA +112DD ; [.2E45.0020.0002] # KHUDAWADI LETTER SA +112DE ; [.2E46.0020.0002] # KHUDAWADI LETTER HA +112E0 ; [.2E47.0020.0002] # KHUDAWADI VOWEL SIGN AA +112E1 ; [.2E48.0020.0002] # KHUDAWADI VOWEL SIGN I +112E2 ; [.2E49.0020.0002] # KHUDAWADI VOWEL SIGN II +112E3 ; [.2E4A.0020.0002] # KHUDAWADI VOWEL SIGN U +112E4 ; [.2E4B.0020.0002] # KHUDAWADI VOWEL SIGN UU +112E5 ; [.2E4C.0020.0002] # KHUDAWADI VOWEL SIGN E +112E6 ; [.2E4D.0020.0002] # KHUDAWADI VOWEL SIGN AI +112E7 ; [.2E4E.0020.0002] # KHUDAWADI VOWEL SIGN O +112E8 ; [.2E4F.0020.0002] # KHUDAWADI VOWEL SIGN AU +112EA ; [.2E50.0020.0002] # KHUDAWADI SIGN VIRAMA +11280 ; [.2E51.0020.0002] # MULTANI LETTER A +11281 ; [.2E52.0020.0002] # MULTANI LETTER I +11282 ; [.2E53.0020.0002] # MULTANI LETTER U +11283 ; [.2E54.0020.0002] # MULTANI LETTER E +112A5 ; [.2E55.0020.0002] # MULTANI LETTER SA +112A6 ; [.2E56.0020.0002] # MULTANI LETTER HA +11284 ; [.2E57.0020.0002] # MULTANI LETTER KA +11285 ; [.2E58.0020.0002] # MULTANI LETTER KHA +11286 ; [.2E59.0020.0002] # MULTANI LETTER GA +11288 ; [.2E5A.0020.0002] # MULTANI LETTER GHA +1128A ; [.2E5B.0020.0002] # MULTANI LETTER CA +1128B ; [.2E5C.0020.0002] # MULTANI LETTER CHA +1128C ; [.2E5D.0020.0002] # MULTANI LETTER JA +1128D ; [.2E5E.0020.0002] # MULTANI LETTER JJA +1128F ; [.2E5F.0020.0002] # MULTANI LETTER NYA +11290 ; [.2E60.0020.0002] # MULTANI LETTER TTA +11291 ; [.2E61.0020.0002] # MULTANI LETTER TTHA +11292 ; [.2E62.0020.0002] # MULTANI LETTER DDA +11293 ; [.2E63.0020.0002] # MULTANI LETTER DDDA +11294 ; [.2E64.0020.0002] # MULTANI LETTER DDHA +11295 ; [.2E65.0020.0002] # MULTANI LETTER NNA +11296 ; [.2E66.0020.0002] # MULTANI LETTER TA +11297 ; [.2E67.0020.0002] # MULTANI LETTER THA +11298 ; [.2E68.0020.0002] # MULTANI LETTER DA +11299 ; [.2E69.0020.0002] # MULTANI LETTER DHA +1129A ; [.2E6A.0020.0002] # MULTANI LETTER NA +1129B ; [.2E6B.0020.0002] # MULTANI LETTER PA +1129C ; [.2E6C.0020.0002] # MULTANI LETTER PHA +1129D ; [.2E6D.0020.0002] # MULTANI LETTER BA +1129F ; [.2E6E.0020.0002] # MULTANI LETTER BHA +112A0 ; [.2E6F.0020.0002] # MULTANI LETTER MA +112A1 ; [.2E70.0020.0002] # MULTANI LETTER YA +112A2 ; [.2E71.0020.0002] # MULTANI LETTER RA +112A3 ; [.2E72.0020.0002] # MULTANI LETTER LA +112A4 ; [.2E73.0020.0002] # MULTANI LETTER VA +112A7 ; [.2E74.0020.0002] # MULTANI LETTER RRA +112A8 ; [.2E75.0020.0002] # MULTANI LETTER RHA +11350 ; [.2E76.0020.0002] # GRANTHA OM +11305 ; [.2E77.0020.0002] # GRANTHA LETTER A +11306 ; [.2E78.0020.0002] # GRANTHA LETTER AA +11307 ; [.2E79.0020.0002] # GRANTHA LETTER I +11308 ; [.2E7A.0020.0002] # GRANTHA LETTER II +11309 ; [.2E7B.0020.0002] # GRANTHA LETTER U +1130A ; [.2E7C.0020.0002] # GRANTHA LETTER UU +1130B ; [.2E7D.0020.0002] # GRANTHA LETTER VOCALIC R +11360 ; [.2E7E.0020.0002] # GRANTHA LETTER VOCALIC RR +1130C ; [.2E7F.0020.0002] # GRANTHA LETTER VOCALIC L +11361 ; [.2E80.0020.0002] # GRANTHA LETTER VOCALIC LL +1130F ; [.2E81.0020.0002] # GRANTHA LETTER EE +11310 ; [.2E82.0020.0002] # GRANTHA LETTER AI +11313 ; [.2E83.0020.0002] # GRANTHA LETTER OO +11314 ; [.2E84.0020.0002] # GRANTHA LETTER AU +11315 ; [.2E85.0020.0002] # GRANTHA LETTER KA +11316 ; [.2E86.0020.0002] # GRANTHA LETTER KHA +11317 ; [.2E87.0020.0002] # GRANTHA LETTER GA +11318 ; [.2E88.0020.0002] # GRANTHA LETTER GHA +11319 ; [.2E89.0020.0002] # GRANTHA LETTER NGA +1131A ; [.2E8A.0020.0002] # GRANTHA LETTER CA +1131B ; [.2E8B.0020.0002] # GRANTHA LETTER CHA +1131C ; [.2E8C.0020.0002] # GRANTHA LETTER JA +1131D ; [.2E8D.0020.0002] # GRANTHA LETTER JHA +1131E ; [.2E8E.0020.0002] # GRANTHA LETTER NYA +1131F ; [.2E8F.0020.0002] # GRANTHA LETTER TTA +11320 ; [.2E90.0020.0002] # GRANTHA LETTER TTHA +11321 ; [.2E91.0020.0002] # GRANTHA LETTER DDA +11322 ; [.2E92.0020.0002] # GRANTHA LETTER DDHA +11323 ; [.2E93.0020.0002] # GRANTHA LETTER NNA +11324 ; [.2E94.0020.0002] # GRANTHA LETTER TA +11325 ; [.2E95.0020.0002] # GRANTHA LETTER THA +11326 ; [.2E96.0020.0002] # GRANTHA LETTER DA +11327 ; [.2E97.0020.0002] # GRANTHA LETTER DHA +11328 ; [.2E98.0020.0002] # GRANTHA LETTER NA +1132A ; [.2E99.0020.0002] # GRANTHA LETTER PA +1132B ; [.2E9A.0020.0002] # GRANTHA LETTER PHA +1132C ; [.2E9B.0020.0002] # GRANTHA LETTER BA +1132D ; [.2E9C.0020.0002] # GRANTHA LETTER BHA +1132E ; [.2E9D.0020.0002] # GRANTHA LETTER MA +1132F ; [.2E9E.0020.0002] # GRANTHA LETTER YA +11330 ; [.2E9F.0020.0002] # GRANTHA LETTER RA +11332 ; [.2EA0.0020.0002] # GRANTHA LETTER LA +11333 ; [.2EA1.0020.0002] # GRANTHA LETTER LLA +11335 ; [.2EA2.0020.0002] # GRANTHA LETTER VA +11336 ; [.2EA3.0020.0002] # GRANTHA LETTER SHA +11337 ; [.2EA4.0020.0002] # GRANTHA LETTER SSA +11338 ; [.2EA5.0020.0002] # GRANTHA LETTER SA +11339 ; [.2EA6.0020.0002] # GRANTHA LETTER HA +1133D ; [.2EA7.0020.0002] # GRANTHA SIGN AVAGRAHA +1135E ; [.2EA8.0020.0002] # GRANTHA LETTER VEDIC ANUSVARA +1135F ; [.2EA9.0020.0002] # GRANTHA LETTER VEDIC DOUBLE ANUSVARA +1133E ; [.2EAA.0020.0002] # GRANTHA VOWEL SIGN AA +1133F ; [.2EAB.0020.0002] # GRANTHA VOWEL SIGN I +11340 ; [.2EAC.0020.0002] # GRANTHA VOWEL SIGN II +11341 ; [.2EAD.0020.0002] # GRANTHA VOWEL SIGN U +11342 ; [.2EAE.0020.0002] # GRANTHA VOWEL SIGN UU +11343 ; [.2EAF.0020.0002] # GRANTHA VOWEL SIGN VOCALIC R +11344 ; [.2EB0.0020.0002] # GRANTHA VOWEL SIGN VOCALIC RR +11362 ; [.2EB1.0020.0002] # GRANTHA VOWEL SIGN VOCALIC L +11363 ; [.2EB2.0020.0002] # GRANTHA VOWEL SIGN VOCALIC LL +11347 ; [.2EB3.0020.0002] # GRANTHA VOWEL SIGN EE +11348 ; [.2EB4.0020.0002] # GRANTHA VOWEL SIGN AI +1134B ; [.2EB5.0020.0002] # GRANTHA VOWEL SIGN OO +11347 1133E ; [.2EB5.0020.0002] # GRANTHA VOWEL SIGN OO +1134C ; [.2EB6.0020.0002] # GRANTHA VOWEL SIGN AU +11347 11357 ; [.2EB6.0020.0002] # GRANTHA VOWEL SIGN AU +1134D ; [.2EB7.0020.0002] # GRANTHA SIGN VIRAMA +11357 ; [.2EB8.0020.0002] # GRANTHA AU LENGTH MARK +1135D ; [.2EB9.0020.0002] # GRANTHA SIGN PLUTA +11449 ; [.2EBA.0020.0002] # NEWA OM +1144A ; [.2EBB.0020.0002] # NEWA SIDDHI +11400 ; [.2EBC.0020.0002] # NEWA LETTER A +11401 ; [.2EBD.0020.0002] # NEWA LETTER AA +11402 ; [.2EBE.0020.0002] # NEWA LETTER I +11403 ; [.2EBF.0020.0002] # NEWA LETTER II +11404 ; [.2EC0.0020.0002] # NEWA LETTER U +11405 ; [.2EC1.0020.0002] # NEWA LETTER UU +11406 ; [.2EC2.0020.0002] # NEWA LETTER VOCALIC R +11407 ; [.2EC3.0020.0002] # NEWA LETTER VOCALIC RR +11408 ; [.2EC4.0020.0002] # NEWA LETTER VOCALIC L +11409 ; [.2EC5.0020.0002] # NEWA LETTER VOCALIC LL +1140A ; [.2EC6.0020.0002] # NEWA LETTER E +1140B ; [.2EC7.0020.0002] # NEWA LETTER AI +1140C ; [.2EC8.0020.0002] # NEWA LETTER O +1140D ; [.2EC9.0020.0002] # NEWA LETTER AU +1140E ; [.2ECA.0020.0002] # NEWA LETTER KA +1140F ; [.2ECB.0020.0002] # NEWA LETTER KHA +11410 ; [.2ECC.0020.0002] # NEWA LETTER GA +11411 ; [.2ECD.0020.0002] # NEWA LETTER GHA +11412 ; [.2ECE.0020.0002] # NEWA LETTER NGA +11413 ; [.2ECF.0020.0002] # NEWA LETTER NGHA +11414 ; [.2ED0.0020.0002] # NEWA LETTER CA +11415 ; [.2ED1.0020.0002] # NEWA LETTER CHA +11416 ; [.2ED2.0020.0002] # NEWA LETTER JA +11417 ; [.2ED3.0020.0002] # NEWA LETTER JHA +11418 ; [.2ED4.0020.0002] # NEWA LETTER NYA +11419 ; [.2ED5.0020.0002] # NEWA LETTER NYHA +1141A ; [.2ED6.0020.0002] # NEWA LETTER TTA +1141B ; [.2ED7.0020.0002] # NEWA LETTER TTHA +1141C ; [.2ED8.0020.0002] # NEWA LETTER DDA +1141D ; [.2ED9.0020.0002] # NEWA LETTER DDHA +1141E ; [.2EDA.0020.0002] # NEWA LETTER NNA +1141F ; [.2EDB.0020.0002] # NEWA LETTER TA +11420 ; [.2EDC.0020.0002] # NEWA LETTER THA +11421 ; [.2EDD.0020.0002] # NEWA LETTER DA +11422 ; [.2EDE.0020.0002] # NEWA LETTER DHA +11423 ; [.2EDF.0020.0002] # NEWA LETTER NA +11424 ; [.2EE0.0020.0002] # NEWA LETTER NHA +11425 ; [.2EE1.0020.0002] # NEWA LETTER PA +11426 ; [.2EE2.0020.0002] # NEWA LETTER PHA +11427 ; [.2EE3.0020.0002] # NEWA LETTER BA +11428 ; [.2EE4.0020.0002] # NEWA LETTER BHA +11429 ; [.2EE5.0020.0002] # NEWA LETTER MA +1142A ; [.2EE6.0020.0002] # NEWA LETTER MHA +1142B ; [.2EE7.0020.0002] # NEWA LETTER YA +1142C ; [.2EE8.0020.0002] # NEWA LETTER RA +1142D ; [.2EE9.0020.0002] # NEWA LETTER RHA +1142E ; [.2EEA.0020.0002] # NEWA LETTER LA +1142F ; [.2EEB.0020.0002] # NEWA LETTER LHA +11430 ; [.2EEC.0020.0002] # NEWA LETTER WA +11431 ; [.2EED.0020.0002] # NEWA LETTER SHA +11432 ; [.2EEE.0020.0002] # NEWA LETTER SSA +11433 ; [.2EEF.0020.0002] # NEWA LETTER SA +11434 ; [.2EF0.0020.0002] # NEWA LETTER HA +11447 ; [.2EF1.0020.0002] # NEWA SIGN AVAGRAHA +11460 ; [.2EF2.0020.0002] # NEWA SIGN JIHVAMULIYA +11461 ; [.2EF3.0020.0002] # NEWA SIGN UPADHMANIYA +11448 ; [.2EF4.0020.0002] # NEWA SIGN FINAL ANUSVARA +1145F ; [.2EF5.0020.0002] # NEWA LETTER VEDIC ANUSVARA +11435 ; [.2EF6.0020.0002] # NEWA VOWEL SIGN AA +11436 ; [.2EF7.0020.0002] # NEWA VOWEL SIGN I +11437 ; [.2EF8.0020.0002] # NEWA VOWEL SIGN II +11438 ; [.2EF9.0020.0002] # NEWA VOWEL SIGN U +11439 ; [.2EFA.0020.0002] # NEWA VOWEL SIGN UU +1143A ; [.2EFB.0020.0002] # NEWA VOWEL SIGN VOCALIC R +1143B ; [.2EFC.0020.0002] # NEWA VOWEL SIGN VOCALIC RR +1143C ; [.2EFD.0020.0002] # NEWA VOWEL SIGN VOCALIC L +1143D ; [.2EFE.0020.0002] # NEWA VOWEL SIGN VOCALIC LL +1143E ; [.2EFF.0020.0002] # NEWA VOWEL SIGN E +1143F ; [.2F00.0020.0002] # NEWA VOWEL SIGN AI +11440 ; [.2F01.0020.0002] # NEWA VOWEL SIGN O +11441 ; [.2F02.0020.0002] # NEWA VOWEL SIGN AU +11442 ; [.2F03.0020.0002] # NEWA SIGN VIRAMA +114C7 ; [.2F04.0020.0002] # TIRHUTA OM +11480 ; [.2F05.0020.0002] # TIRHUTA ANJI +11481 ; [.2F06.0020.0002] # TIRHUTA LETTER A +11482 ; [.2F07.0020.0002] # TIRHUTA LETTER AA +11483 ; [.2F08.0020.0002] # TIRHUTA LETTER I +11484 ; [.2F09.0020.0002] # TIRHUTA LETTER II +11485 ; [.2F0A.0020.0002] # TIRHUTA LETTER U +11486 ; [.2F0B.0020.0002] # TIRHUTA LETTER UU +11487 ; [.2F0C.0020.0002] # TIRHUTA LETTER VOCALIC R +11488 ; [.2F0D.0020.0002] # TIRHUTA LETTER VOCALIC RR +11489 ; [.2F0E.0020.0002] # TIRHUTA LETTER VOCALIC L +1148A ; [.2F0F.0020.0002] # TIRHUTA LETTER VOCALIC LL +1148B ; [.2F10.0020.0002] # TIRHUTA LETTER E +1148C ; [.2F11.0020.0002] # TIRHUTA LETTER AI +1148D ; [.2F12.0020.0002] # TIRHUTA LETTER O +1148E ; [.2F13.0020.0002] # TIRHUTA LETTER AU +1148F ; [.2F14.0020.0002] # TIRHUTA LETTER KA +11490 ; [.2F15.0020.0002] # TIRHUTA LETTER KHA +11491 ; [.2F16.0020.0002] # TIRHUTA LETTER GA +11492 ; [.2F17.0020.0002] # TIRHUTA LETTER GHA +11493 ; [.2F18.0020.0002] # TIRHUTA LETTER NGA +11494 ; [.2F19.0020.0002] # TIRHUTA LETTER CA +11495 ; [.2F1A.0020.0002] # TIRHUTA LETTER CHA +11496 ; [.2F1B.0020.0002] # TIRHUTA LETTER JA +11497 ; [.2F1C.0020.0002] # TIRHUTA LETTER JHA +11498 ; [.2F1D.0020.0002] # TIRHUTA LETTER NYA +11499 ; [.2F1E.0020.0002] # TIRHUTA LETTER TTA +1149A ; [.2F1F.0020.0002] # TIRHUTA LETTER TTHA +1149B ; [.2F20.0020.0002] # TIRHUTA LETTER DDA +1149C ; [.2F21.0020.0002] # TIRHUTA LETTER DDHA +1149D ; [.2F22.0020.0002] # TIRHUTA LETTER NNA +1149E ; [.2F23.0020.0002] # TIRHUTA LETTER TA +1149F ; [.2F24.0020.0002] # TIRHUTA LETTER THA +114A0 ; [.2F25.0020.0002] # TIRHUTA LETTER DA +114A1 ; [.2F26.0020.0002] # TIRHUTA LETTER DHA +114A2 ; [.2F27.0020.0002] # TIRHUTA LETTER NA +114A3 ; [.2F28.0020.0002] # TIRHUTA LETTER PA +114A4 ; [.2F29.0020.0002] # TIRHUTA LETTER PHA +114A5 ; [.2F2A.0020.0002] # TIRHUTA LETTER BA +114A6 ; [.2F2B.0020.0002] # TIRHUTA LETTER BHA +114A7 ; [.2F2C.0020.0002] # TIRHUTA LETTER MA +114A8 ; [.2F2D.0020.0002] # TIRHUTA LETTER YA +114A9 ; [.2F2E.0020.0002] # TIRHUTA LETTER RA +114AA ; [.2F2F.0020.0002] # TIRHUTA LETTER LA +114AB ; [.2F30.0020.0002] # TIRHUTA LETTER VA +114AC ; [.2F31.0020.0002] # TIRHUTA LETTER SHA +114AD ; [.2F32.0020.0002] # TIRHUTA LETTER SSA +114AE ; [.2F33.0020.0002] # TIRHUTA LETTER SA +114AF ; [.2F34.0020.0002] # TIRHUTA LETTER HA +114C4 ; [.2F35.0020.0002] # TIRHUTA SIGN AVAGRAHA +114C5 ; [.2F36.0020.0002] # TIRHUTA GVANG +114B0 ; [.2F37.0020.0002] # TIRHUTA VOWEL SIGN AA +114B1 ; [.2F38.0020.0002] # TIRHUTA VOWEL SIGN I +114B2 ; [.2F39.0020.0002] # TIRHUTA VOWEL SIGN II +114B3 ; [.2F3A.0020.0002] # TIRHUTA VOWEL SIGN U +114B4 ; [.2F3B.0020.0002] # TIRHUTA VOWEL SIGN UU +114B5 ; [.2F3C.0020.0002] # TIRHUTA VOWEL SIGN VOCALIC R +114B6 ; [.2F3D.0020.0002] # TIRHUTA VOWEL SIGN VOCALIC RR +114B7 ; [.2F3E.0020.0002] # TIRHUTA VOWEL SIGN VOCALIC L +114B8 ; [.2F3F.0020.0002] # TIRHUTA VOWEL SIGN VOCALIC LL +114B9 ; [.2F40.0020.0002] # TIRHUTA VOWEL SIGN E +114BA ; [.2F41.0020.0002] # TIRHUTA VOWEL SIGN SHORT E +114BB ; [.2F42.0020.0002] # TIRHUTA VOWEL SIGN AI +114B9 114BA ; [.2F42.0020.0002] # TIRHUTA VOWEL SIGN AI +114BC ; [.2F43.0020.0002] # TIRHUTA VOWEL SIGN O +114B9 114B0 ; [.2F43.0020.0002] # TIRHUTA VOWEL SIGN O +114BD ; [.2F44.0020.0002] # TIRHUTA VOWEL SIGN SHORT O +114BE ; [.2F45.0020.0002] # TIRHUTA VOWEL SIGN AU +114B9 114BD ; [.2F45.0020.0002] # TIRHUTA VOWEL SIGN AU +114C2 ; [.2F46.0020.0002] # TIRHUTA SIGN VIRAMA +11580 ; [.2F47.0020.0002] # SIDDHAM LETTER A +11581 ; [.2F48.0020.0002] # SIDDHAM LETTER AA +11582 ; [.2F49.0020.0002] # SIDDHAM LETTER I +115D8 ; [.2F49.0020.0004][.0000.0118.0004] # SIDDHAM LETTER THREE-CIRCLE ALTERNATE I +115D9 ; [.2F49.0020.0004][.0000.0119.0004] # SIDDHAM LETTER TWO-CIRCLE ALTERNATE I +11583 ; [.2F4A.0020.0002] # SIDDHAM LETTER II +115DA ; [.2F4A.0020.0004][.0000.0118.0004] # SIDDHAM LETTER TWO-CIRCLE ALTERNATE II +11584 ; [.2F4B.0020.0002] # SIDDHAM LETTER U +115DB ; [.2F4B.0020.0004][.0000.0118.0004] # SIDDHAM LETTER ALTERNATE U +11585 ; [.2F4C.0020.0002] # SIDDHAM LETTER UU +11586 ; [.2F4D.0020.0002] # SIDDHAM LETTER VOCALIC R +11587 ; [.2F4E.0020.0002] # SIDDHAM LETTER VOCALIC RR +11588 ; [.2F4F.0020.0002] # SIDDHAM LETTER VOCALIC L +11589 ; [.2F50.0020.0002] # SIDDHAM LETTER VOCALIC LL +1158A ; [.2F51.0020.0002] # SIDDHAM LETTER E +1158B ; [.2F52.0020.0002] # SIDDHAM LETTER AI +1158C ; [.2F53.0020.0002] # SIDDHAM LETTER O +1158D ; [.2F54.0020.0002] # SIDDHAM LETTER AU +1158E ; [.2F55.0020.0002] # SIDDHAM LETTER KA +1158F ; [.2F56.0020.0002] # SIDDHAM LETTER KHA +11590 ; [.2F57.0020.0002] # SIDDHAM LETTER GA +11591 ; [.2F58.0020.0002] # SIDDHAM LETTER GHA +11592 ; [.2F59.0020.0002] # SIDDHAM LETTER NGA +11593 ; [.2F5A.0020.0002] # SIDDHAM LETTER CA +11594 ; [.2F5B.0020.0002] # SIDDHAM LETTER CHA +11595 ; [.2F5C.0020.0002] # SIDDHAM LETTER JA +11596 ; [.2F5D.0020.0002] # SIDDHAM LETTER JHA +11597 ; [.2F5E.0020.0002] # SIDDHAM LETTER NYA +11598 ; [.2F5F.0020.0002] # SIDDHAM LETTER TTA +11599 ; [.2F60.0020.0002] # SIDDHAM LETTER TTHA +1159A ; [.2F61.0020.0002] # SIDDHAM LETTER DDA +1159B ; [.2F62.0020.0002] # SIDDHAM LETTER DDHA +1159C ; [.2F63.0020.0002] # SIDDHAM LETTER NNA +1159D ; [.2F64.0020.0002] # SIDDHAM LETTER TA +1159E ; [.2F65.0020.0002] # SIDDHAM LETTER THA +1159F ; [.2F66.0020.0002] # SIDDHAM LETTER DA +115A0 ; [.2F67.0020.0002] # SIDDHAM LETTER DHA +115A1 ; [.2F68.0020.0002] # SIDDHAM LETTER NA +115A2 ; [.2F69.0020.0002] # SIDDHAM LETTER PA +115A3 ; [.2F6A.0020.0002] # SIDDHAM LETTER PHA +115A4 ; [.2F6B.0020.0002] # SIDDHAM LETTER BA +115A5 ; [.2F6C.0020.0002] # SIDDHAM LETTER BHA +115A6 ; [.2F6D.0020.0002] # SIDDHAM LETTER MA +115A7 ; [.2F6E.0020.0002] # SIDDHAM LETTER YA +115A8 ; [.2F6F.0020.0002] # SIDDHAM LETTER RA +115A9 ; [.2F70.0020.0002] # SIDDHAM LETTER LA +115AA ; [.2F71.0020.0002] # SIDDHAM LETTER VA +115AB ; [.2F72.0020.0002] # SIDDHAM LETTER SHA +115AC ; [.2F73.0020.0002] # SIDDHAM LETTER SSA +115AD ; [.2F74.0020.0002] # SIDDHAM LETTER SA +115AE ; [.2F75.0020.0002] # SIDDHAM LETTER HA +115AF ; [.2F76.0020.0002] # SIDDHAM VOWEL SIGN AA +115B0 ; [.2F77.0020.0002] # SIDDHAM VOWEL SIGN I +115B1 ; [.2F78.0020.0002] # SIDDHAM VOWEL SIGN II +115B2 ; [.2F79.0020.0002] # SIDDHAM VOWEL SIGN U +115DC ; [.2F79.0020.0004][.0000.0118.0004] # SIDDHAM VOWEL SIGN ALTERNATE U +115B3 ; [.2F7A.0020.0002] # SIDDHAM VOWEL SIGN UU +115DD ; [.2F7A.0020.0004][.0000.0118.0004] # SIDDHAM VOWEL SIGN ALTERNATE UU +115B4 ; [.2F7B.0020.0002] # SIDDHAM VOWEL SIGN VOCALIC R +115B5 ; [.2F7C.0020.0002] # SIDDHAM VOWEL SIGN VOCALIC RR +115B8 ; [.2F7D.0020.0002] # SIDDHAM VOWEL SIGN E +115B9 ; [.2F7E.0020.0002] # SIDDHAM VOWEL SIGN AI +115BA ; [.2F7F.0020.0002] # SIDDHAM VOWEL SIGN O +115B8 115AF ; [.2F7F.0020.0002] # SIDDHAM VOWEL SIGN O +115BB ; [.2F80.0020.0002] # SIDDHAM VOWEL SIGN AU +115B9 115AF ; [.2F80.0020.0002] # SIDDHAM VOWEL SIGN AU +115BF ; [.2F81.0020.0002] # SIDDHAM SIGN VIRAMA +11600 ; [.2F82.0020.0002] # MODI LETTER A +11601 ; [.2F83.0020.0002] # MODI LETTER AA +11602 ; [.2F84.0020.0002] # MODI LETTER I +11603 ; [.2F85.0020.0002] # MODI LETTER II +11604 ; [.2F86.0020.0002] # MODI LETTER U +11605 ; [.2F87.0020.0002] # MODI LETTER UU +11606 ; [.2F88.0020.0002] # MODI LETTER VOCALIC R +11607 ; [.2F89.0020.0002] # MODI LETTER VOCALIC RR +11608 ; [.2F8A.0020.0002] # MODI LETTER VOCALIC L +11609 ; [.2F8B.0020.0002] # MODI LETTER VOCALIC LL +1160A ; [.2F8C.0020.0002] # MODI LETTER E +1160B ; [.2F8D.0020.0002] # MODI LETTER AI +1160C ; [.2F8E.0020.0002] # MODI LETTER O +1160D ; [.2F8F.0020.0002] # MODI LETTER AU +1160E ; [.2F90.0020.0002] # MODI LETTER KA +1160F ; [.2F91.0020.0002] # MODI LETTER KHA +11610 ; [.2F92.0020.0002] # MODI LETTER GA +11611 ; [.2F93.0020.0002] # MODI LETTER GHA +11612 ; [.2F94.0020.0002] # MODI LETTER NGA +11613 ; [.2F95.0020.0002] # MODI LETTER CA +11614 ; [.2F96.0020.0002] # MODI LETTER CHA +11615 ; [.2F97.0020.0002] # MODI LETTER JA +11616 ; [.2F98.0020.0002] # MODI LETTER JHA +11617 ; [.2F99.0020.0002] # MODI LETTER NYA +11618 ; [.2F9A.0020.0002] # MODI LETTER TTA +11619 ; [.2F9B.0020.0002] # MODI LETTER TTHA +1161A ; [.2F9C.0020.0002] # MODI LETTER DDA +1161B ; [.2F9D.0020.0002] # MODI LETTER DDHA +1161C ; [.2F9E.0020.0002] # MODI LETTER NNA +1161D ; [.2F9F.0020.0002] # MODI LETTER TA +1161E ; [.2FA0.0020.0002] # MODI LETTER THA +1161F ; [.2FA1.0020.0002] # MODI LETTER DA +11620 ; [.2FA2.0020.0002] # MODI LETTER DHA +11621 ; [.2FA3.0020.0002] # MODI LETTER NA +11622 ; [.2FA4.0020.0002] # MODI LETTER PA +11623 ; [.2FA5.0020.0002] # MODI LETTER PHA +11624 ; [.2FA6.0020.0002] # MODI LETTER BA +11625 ; [.2FA7.0020.0002] # MODI LETTER BHA +11626 ; [.2FA8.0020.0002] # MODI LETTER MA +11627 ; [.2FA9.0020.0002] # MODI LETTER YA +11628 ; [.2FAA.0020.0002] # MODI LETTER RA +11629 ; [.2FAB.0020.0002] # MODI LETTER LA +1162A ; [.2FAC.0020.0002] # MODI LETTER VA +1162B ; [.2FAD.0020.0002] # MODI LETTER SHA +1162C ; [.2FAE.0020.0002] # MODI LETTER SSA +1162D ; [.2FAF.0020.0002] # MODI LETTER SA +1162E ; [.2FB0.0020.0002] # MODI LETTER HA +1162F ; [.2FB1.0020.0002] # MODI LETTER LLA +11630 ; [.2FB2.0020.0002] # MODI VOWEL SIGN AA +11631 ; [.2FB3.0020.0002] # MODI VOWEL SIGN I +11632 ; [.2FB4.0020.0002] # MODI VOWEL SIGN II +11633 ; [.2FB5.0020.0002] # MODI VOWEL SIGN U +11634 ; [.2FB6.0020.0002] # MODI VOWEL SIGN UU +11635 ; [.2FB7.0020.0002] # MODI VOWEL SIGN VOCALIC R +11636 ; [.2FB8.0020.0002] # MODI VOWEL SIGN VOCALIC RR +11637 ; [.2FB9.0020.0002] # MODI VOWEL SIGN VOCALIC L +11638 ; [.2FBA.0020.0002] # MODI VOWEL SIGN VOCALIC LL +11639 ; [.2FBB.0020.0002] # MODI VOWEL SIGN E +1163A ; [.2FBC.0020.0002] # MODI VOWEL SIGN AI +1163B ; [.2FBD.0020.0002] # MODI VOWEL SIGN O +1163C ; [.2FBE.0020.0002] # MODI VOWEL SIGN AU +1163F ; [.2FBF.0020.0002] # MODI SIGN VIRAMA +11644 ; [.2FC0.0020.0002] # MODI SIGN HUVA +11680 ; [.2FC1.0020.0002] # TAKRI LETTER A +11681 ; [.2FC2.0020.0002] # TAKRI LETTER AA +11682 ; [.2FC3.0020.0002] # TAKRI LETTER I +11683 ; [.2FC4.0020.0002] # TAKRI LETTER II +11684 ; [.2FC5.0020.0002] # TAKRI LETTER U +11685 ; [.2FC6.0020.0002] # TAKRI LETTER UU +11686 ; [.2FC7.0020.0002] # TAKRI LETTER E +11687 ; [.2FC8.0020.0002] # TAKRI LETTER AI +11688 ; [.2FC9.0020.0002] # TAKRI LETTER O +11689 ; [.2FCA.0020.0002] # TAKRI LETTER AU +116A8 ; [.2FCB.0020.0002] # TAKRI LETTER SA +116A7 ; [.2FCC.0020.0002] # TAKRI LETTER SHA +116A9 ; [.2FCD.0020.0002] # TAKRI LETTER HA +1168A ; [.2FCE.0020.0002] # TAKRI LETTER KA +1168B ; [.2FCF.0020.0002] # TAKRI LETTER KHA +116B8 ; [.2FD0.0020.0002] # TAKRI LETTER ARCHAIC KHA +1168C ; [.2FD1.0020.0002] # TAKRI LETTER GA +1168D ; [.2FD2.0020.0002] # TAKRI LETTER GHA +1168E ; [.2FD3.0020.0002] # TAKRI LETTER NGA +1168F ; [.2FD4.0020.0002] # TAKRI LETTER CA +11690 ; [.2FD5.0020.0002] # TAKRI LETTER CHA +11691 ; [.2FD6.0020.0002] # TAKRI LETTER JA +11692 ; [.2FD7.0020.0002] # TAKRI LETTER JHA +11693 ; [.2FD8.0020.0002] # TAKRI LETTER NYA +11694 ; [.2FD9.0020.0002] # TAKRI LETTER TTA +11695 ; [.2FDA.0020.0002] # TAKRI LETTER TTHA +11696 ; [.2FDB.0020.0002] # TAKRI LETTER DDA +11697 ; [.2FDC.0020.0002] # TAKRI LETTER DDHA +11698 ; [.2FDD.0020.0002] # TAKRI LETTER NNA +11699 ; [.2FDE.0020.0002] # TAKRI LETTER TA +1169A ; [.2FDF.0020.0002] # TAKRI LETTER THA +1169B ; [.2FE0.0020.0002] # TAKRI LETTER DA +1169C ; [.2FE1.0020.0002] # TAKRI LETTER DHA +1169D ; [.2FE2.0020.0002] # TAKRI LETTER NA +1169E ; [.2FE3.0020.0002] # TAKRI LETTER PA +1169F ; [.2FE4.0020.0002] # TAKRI LETTER PHA +116A0 ; [.2FE5.0020.0002] # TAKRI LETTER BA +116A1 ; [.2FE6.0020.0002] # TAKRI LETTER BHA +116A2 ; [.2FE7.0020.0002] # TAKRI LETTER MA +116A3 ; [.2FE8.0020.0002] # TAKRI LETTER YA +116A4 ; [.2FE9.0020.0002] # TAKRI LETTER RA +116A5 ; [.2FEA.0020.0002] # TAKRI LETTER LA +116A6 ; [.2FEB.0020.0002] # TAKRI LETTER VA +116AA ; [.2FEC.0020.0002] # TAKRI LETTER RRA +116AD ; [.2FED.0020.0002] # TAKRI VOWEL SIGN AA +116AE ; [.2FEE.0020.0002] # TAKRI VOWEL SIGN I +116AF ; [.2FEF.0020.0002] # TAKRI VOWEL SIGN II +116B0 ; [.2FF0.0020.0002] # TAKRI VOWEL SIGN U +116B1 ; [.2FF1.0020.0002] # TAKRI VOWEL SIGN UU +116B2 ; [.2FF2.0020.0002] # TAKRI VOWEL SIGN E +116B3 ; [.2FF3.0020.0002] # TAKRI VOWEL SIGN AI +116B4 ; [.2FF4.0020.0002] # TAKRI VOWEL SIGN O +116B5 ; [.2FF5.0020.0002] # TAKRI VOWEL SIGN AU +116B6 ; [.2FF6.0020.0002] # TAKRI SIGN VIRAMA +11900 ; [.2FF7.0020.0002] # DIVES AKURU LETTER A +11901 ; [.2FF8.0020.0002] # DIVES AKURU LETTER AA +11902 ; [.2FF9.0020.0002] # DIVES AKURU LETTER I +11903 ; [.2FFA.0020.0002] # DIVES AKURU LETTER II +11904 ; [.2FFB.0020.0002] # DIVES AKURU LETTER U +11905 ; [.2FFC.0020.0002] # DIVES AKURU LETTER UU +11906 ; [.2FFD.0020.0002] # DIVES AKURU LETTER E +11909 ; [.2FFE.0020.0002] # DIVES AKURU LETTER O +1190C ; [.2FFF.0020.0002] # DIVES AKURU LETTER KA +1190D ; [.3000.0020.0002] # DIVES AKURU LETTER KHA +1190E ; [.3001.0020.0002] # DIVES AKURU LETTER GA +1190F ; [.3002.0020.0002] # DIVES AKURU LETTER GHA +11910 ; [.3003.0020.0002] # DIVES AKURU LETTER NGA +1193F ; [.3004.0020.0002] # DIVES AKURU PREFIXED NASAL SIGN +11911 ; [.3005.0020.0002] # DIVES AKURU LETTER CA +11912 ; [.3006.0020.0002] # DIVES AKURU LETTER CHA +11913 ; [.3007.0020.0002] # DIVES AKURU LETTER JA +11915 ; [.3008.0020.0002] # DIVES AKURU LETTER NYA +11916 ; [.3009.0020.0002] # DIVES AKURU LETTER TTA +11918 ; [.300A.0020.0002] # DIVES AKURU LETTER DDA +11919 ; [.300B.0020.0002] # DIVES AKURU LETTER DDHA +1191A ; [.300C.0020.0002] # DIVES AKURU LETTER NNA +1191B ; [.300D.0020.0002] # DIVES AKURU LETTER TA +1191C ; [.300E.0020.0002] # DIVES AKURU LETTER THA +1191D ; [.300F.0020.0002] # DIVES AKURU LETTER DA +1191E ; [.3010.0020.0002] # DIVES AKURU LETTER DHA +1191F ; [.3011.0020.0002] # DIVES AKURU LETTER NA +11920 ; [.3012.0020.0002] # DIVES AKURU LETTER PA +11921 ; [.3013.0020.0002] # DIVES AKURU LETTER PHA +11922 ; [.3014.0020.0002] # DIVES AKURU LETTER BA +11923 ; [.3015.0020.0002] # DIVES AKURU LETTER BHA +11924 ; [.3016.0020.0002] # DIVES AKURU LETTER MA +11925 ; [.3017.0020.0002] # DIVES AKURU LETTER YA +11940 ; [.3018.0020.0002] # DIVES AKURU MEDIAL YA +11926 ; [.3019.0020.0002] # DIVES AKURU LETTER YYA +11941 ; [.301A.0020.0002] # DIVES AKURU INITIAL RA +11927 ; [.301B.0020.0002] # DIVES AKURU LETTER RA +11942 ; [.301C.0020.0002] # DIVES AKURU MEDIAL RA +11928 ; [.301D.0020.0002] # DIVES AKURU LETTER LA +11929 ; [.301E.0020.0002] # DIVES AKURU LETTER VA +1192A ; [.301F.0020.0002] # DIVES AKURU LETTER SHA +1192B ; [.3020.0020.0002] # DIVES AKURU LETTER SSA +1192C ; [.3021.0020.0002] # DIVES AKURU LETTER SA +1192D ; [.3022.0020.0002] # DIVES AKURU LETTER HA +1192E ; [.3023.0020.0002] # DIVES AKURU LETTER LLA +1192F ; [.3024.0020.0002] # DIVES AKURU LETTER ZA +11930 ; [.3025.0020.0002] # DIVES AKURU VOWEL SIGN AA +11931 ; [.3026.0020.0002] # DIVES AKURU VOWEL SIGN I +11932 ; [.3027.0020.0002] # DIVES AKURU VOWEL SIGN II +11933 ; [.3028.0020.0002] # DIVES AKURU VOWEL SIGN U +11934 ; [.3029.0020.0002] # DIVES AKURU VOWEL SIGN UU +11935 ; [.302A.0020.0002] # DIVES AKURU VOWEL SIGN E +11937 ; [.302B.0020.0002] # DIVES AKURU VOWEL SIGN AI +11938 ; [.302C.0020.0002] # DIVES AKURU VOWEL SIGN O +11935 11930 ; [.302C.0020.0002] # DIVES AKURU VOWEL SIGN O +1193D ; [.302D.0020.0002] # DIVES AKURU SIGN HALANTA +1193E ; [.302E.0020.0002] # DIVES AKURU VIRAMA +119A0 ; [.302F.0020.0002] # NANDINAGARI LETTER A +119A1 ; [.3030.0020.0002] # NANDINAGARI LETTER AA +119A2 ; [.3031.0020.0002] # NANDINAGARI LETTER I +119A3 ; [.3032.0020.0002] # NANDINAGARI LETTER II +119A4 ; [.3033.0020.0002] # NANDINAGARI LETTER U +119A5 ; [.3034.0020.0002] # NANDINAGARI LETTER UU +119A6 ; [.3035.0020.0002] # NANDINAGARI LETTER VOCALIC R +119A7 ; [.3036.0020.0002] # NANDINAGARI LETTER VOCALIC RR +119AA ; [.3037.0020.0002] # NANDINAGARI LETTER E +119AB ; [.3038.0020.0002] # NANDINAGARI LETTER AI +119AC ; [.3039.0020.0002] # NANDINAGARI LETTER O +119AD ; [.303A.0020.0002] # NANDINAGARI LETTER AU +119AE ; [.303B.0020.0002] # NANDINAGARI LETTER KA +119AF ; [.303C.0020.0002] # NANDINAGARI LETTER KHA +119B0 ; [.303D.0020.0002] # NANDINAGARI LETTER GA +119B1 ; [.303E.0020.0002] # NANDINAGARI LETTER GHA +119B2 ; [.303F.0020.0002] # NANDINAGARI LETTER NGA +119B3 ; [.3040.0020.0002] # NANDINAGARI LETTER CA +119B4 ; [.3041.0020.0002] # NANDINAGARI LETTER CHA +119B5 ; [.3042.0020.0002] # NANDINAGARI LETTER JA +119B6 ; [.3043.0020.0002] # NANDINAGARI LETTER JHA +119B7 ; [.3044.0020.0002] # NANDINAGARI LETTER NYA +119B8 ; [.3045.0020.0002] # NANDINAGARI LETTER TTA +119B9 ; [.3046.0020.0002] # NANDINAGARI LETTER TTHA +119BA ; [.3047.0020.0002] # NANDINAGARI LETTER DDA +119BB ; [.3048.0020.0002] # NANDINAGARI LETTER DDHA +119BC ; [.3049.0020.0002] # NANDINAGARI LETTER NNA +119BD ; [.304A.0020.0002] # NANDINAGARI LETTER TA +119BE ; [.304B.0020.0002] # NANDINAGARI LETTER THA +119BF ; [.304C.0020.0002] # NANDINAGARI LETTER DA +119C0 ; [.304D.0020.0002] # NANDINAGARI LETTER DHA +119C1 ; [.304E.0020.0002] # NANDINAGARI LETTER NA +119C2 ; [.304F.0020.0002] # NANDINAGARI LETTER PA +119C3 ; [.3050.0020.0002] # NANDINAGARI LETTER PHA +119C4 ; [.3051.0020.0002] # NANDINAGARI LETTER BA +119C5 ; [.3052.0020.0002] # NANDINAGARI LETTER BHA +119C6 ; [.3053.0020.0002] # NANDINAGARI LETTER MA +119C7 ; [.3054.0020.0002] # NANDINAGARI LETTER YA +119C8 ; [.3055.0020.0002] # NANDINAGARI LETTER RA +119C9 ; [.3056.0020.0002] # NANDINAGARI LETTER LA +119CA ; [.3057.0020.0002] # NANDINAGARI LETTER VA +119CB ; [.3058.0020.0002] # NANDINAGARI LETTER SHA +119CC ; [.3059.0020.0002] # NANDINAGARI LETTER SSA +119CD ; [.305A.0020.0002] # NANDINAGARI LETTER SA +119CE ; [.305B.0020.0002] # NANDINAGARI LETTER HA +119CF ; [.305C.0020.0002] # NANDINAGARI LETTER LLA +119D0 ; [.305D.0020.0002] # NANDINAGARI LETTER RRA +119E1 ; [.305E.0020.0002] # NANDINAGARI SIGN AVAGRAHA +119E3 ; [.305F.0020.0002] # NANDINAGARI HEADSTROKE +119D1 ; [.3060.0020.0002] # NANDINAGARI VOWEL SIGN AA +119D2 ; [.3061.0020.0002] # NANDINAGARI VOWEL SIGN I +119D3 ; [.3062.0020.0002] # NANDINAGARI VOWEL SIGN II +119D4 ; [.3063.0020.0002] # NANDINAGARI VOWEL SIGN U +119D5 ; [.3064.0020.0002] # NANDINAGARI VOWEL SIGN UU +119D6 ; [.3065.0020.0002] # NANDINAGARI VOWEL SIGN VOCALIC R +119D7 ; [.3066.0020.0002] # NANDINAGARI VOWEL SIGN VOCALIC RR +119DA ; [.3067.0020.0002] # NANDINAGARI VOWEL SIGN E +119E4 ; [.3068.0020.0002] # NANDINAGARI VOWEL SIGN PRISHTHAMATRA E +119DB ; [.3069.0020.0002] # NANDINAGARI VOWEL SIGN AI +119DC ; [.306A.0020.0002] # NANDINAGARI VOWEL SIGN O +119DD ; [.306B.0020.0002] # NANDINAGARI VOWEL SIGN AU +119E0 ; [.306C.0020.0002] # NANDINAGARI SIGN VIRAMA +11800 ; [.306D.0020.0002] # DOGRA LETTER A +11801 ; [.306E.0020.0002] # DOGRA LETTER AA +11802 ; [.306F.0020.0002] # DOGRA LETTER I +11803 ; [.3070.0020.0002] # DOGRA LETTER II +11804 ; [.3071.0020.0002] # DOGRA LETTER U +11805 ; [.3072.0020.0002] # DOGRA LETTER UU +11806 ; [.3073.0020.0002] # DOGRA LETTER E +11807 ; [.3074.0020.0002] # DOGRA LETTER AI +11808 ; [.3075.0020.0002] # DOGRA LETTER O +11809 ; [.3076.0020.0002] # DOGRA LETTER AU +1180A ; [.3077.0020.0002] # DOGRA LETTER KA +1180B ; [.3078.0020.0002] # DOGRA LETTER KHA +1180C ; [.3079.0020.0002] # DOGRA LETTER GA +1180D ; [.307A.0020.0002] # DOGRA LETTER GHA +1180E ; [.307B.0020.0002] # DOGRA LETTER NGA +1180F ; [.307C.0020.0002] # DOGRA LETTER CA +11810 ; [.307D.0020.0002] # DOGRA LETTER CHA +11811 ; [.307E.0020.0002] # DOGRA LETTER JA +11812 ; [.307F.0020.0002] # DOGRA LETTER JHA +11813 ; [.3080.0020.0002] # DOGRA LETTER NYA +11814 ; [.3081.0020.0002] # DOGRA LETTER TTA +11815 ; [.3082.0020.0002] # DOGRA LETTER TTHA +11816 ; [.3083.0020.0002] # DOGRA LETTER DDA +11817 ; [.3084.0020.0002] # DOGRA LETTER DDHA +11818 ; [.3085.0020.0002] # DOGRA LETTER NNA +11819 ; [.3086.0020.0002] # DOGRA LETTER TA +1181A ; [.3087.0020.0002] # DOGRA LETTER THA +1181B ; [.3088.0020.0002] # DOGRA LETTER DA +1181C ; [.3089.0020.0002] # DOGRA LETTER DHA +1181D ; [.308A.0020.0002] # DOGRA LETTER NA +1181E ; [.308B.0020.0002] # DOGRA LETTER PA +1181F ; [.308C.0020.0002] # DOGRA LETTER PHA +11820 ; [.308D.0020.0002] # DOGRA LETTER BA +11821 ; [.308E.0020.0002] # DOGRA LETTER BHA +11822 ; [.308F.0020.0002] # DOGRA LETTER MA +11823 ; [.3090.0020.0002] # DOGRA LETTER YA +11824 ; [.3091.0020.0002] # DOGRA LETTER RA +11825 ; [.3092.0020.0002] # DOGRA LETTER LA +11826 ; [.3093.0020.0002] # DOGRA LETTER VA +11827 ; [.3094.0020.0002] # DOGRA LETTER SHA +11828 ; [.3095.0020.0002] # DOGRA LETTER SSA +11829 ; [.3096.0020.0002] # DOGRA LETTER SA +1182A ; [.3097.0020.0002] # DOGRA LETTER HA +1182B ; [.3098.0020.0002] # DOGRA LETTER RRA +1182C ; [.3099.0020.0002] # DOGRA VOWEL SIGN AA +1182D ; [.309A.0020.0002] # DOGRA VOWEL SIGN I +1182E ; [.309B.0020.0002] # DOGRA VOWEL SIGN II +1182F ; [.309C.0020.0002] # DOGRA VOWEL SIGN U +11830 ; [.309D.0020.0002] # DOGRA VOWEL SIGN UU +11831 ; [.309E.0020.0002] # DOGRA VOWEL SIGN VOCALIC R +11832 ; [.309F.0020.0002] # DOGRA VOWEL SIGN VOCALIC RR +11833 ; [.30A0.0020.0002] # DOGRA VOWEL SIGN E +11834 ; [.30A1.0020.0002] # DOGRA VOWEL SIGN AI +11835 ; [.30A2.0020.0002] # DOGRA VOWEL SIGN O +11836 ; [.30A3.0020.0002] # DOGRA VOWEL SIGN AU +11839 ; [.30A4.0020.0002] # DOGRA SIGN VIRAMA +11700 ; [.30A5.0020.0002] # AHOM LETTER KA +11701 ; [.30A6.0020.0002] # AHOM LETTER KHA +11702 ; [.30A7.0020.0002] # AHOM LETTER NGA +11703 ; [.30A8.0020.0002] # AHOM LETTER NA +11704 ; [.30A9.0020.0002] # AHOM LETTER TA +11705 ; [.30A9.0020.0004][.0000.0118.0004] # AHOM LETTER ALTERNATE TA +11706 ; [.30AA.0020.0002] # AHOM LETTER PA +11707 ; [.30AB.0020.0002] # AHOM LETTER PHA +11708 ; [.30AC.0020.0002] # AHOM LETTER BA +1171A ; [.30AC.0020.0004][.0000.0118.0004] # AHOM LETTER ALTERNATE BA +11709 ; [.30AD.0020.0002] # AHOM LETTER MA +1170A ; [.30AE.0020.0002] # AHOM LETTER JA +1170B ; [.30AF.0020.0002] # AHOM LETTER CHA +1170C ; [.30B0.0020.0002] # AHOM LETTER THA +1170D ; [.30B1.0020.0002] # AHOM LETTER RA +1170E ; [.30B2.0020.0002] # AHOM LETTER LA +1170F ; [.30B3.0020.0002] # AHOM LETTER SA +11710 ; [.30B4.0020.0002] # AHOM LETTER NYA +11711 ; [.30B5.0020.0002] # AHOM LETTER HA +11712 ; [.30B6.0020.0002] # AHOM LETTER A +11713 ; [.30B7.0020.0002] # AHOM LETTER DA +11714 ; [.30B8.0020.0002] # AHOM LETTER DHA +11715 ; [.30B9.0020.0002] # AHOM LETTER GA +11716 ; [.30B9.0020.0004][.0000.0118.0004] # AHOM LETTER ALTERNATE GA +11717 ; [.30BA.0020.0002] # AHOM LETTER GHA +11718 ; [.30BB.0020.0002] # AHOM LETTER BHA +11719 ; [.30BC.0020.0002] # AHOM LETTER JHA +11720 ; [.30BD.0020.0002] # AHOM VOWEL SIGN A +11721 ; [.30BE.0020.0002] # AHOM VOWEL SIGN AA +11722 ; [.30BF.0020.0002] # AHOM VOWEL SIGN I +11723 ; [.30C0.0020.0002] # AHOM VOWEL SIGN II +11724 ; [.30C1.0020.0002] # AHOM VOWEL SIGN U +11725 ; [.30C2.0020.0002] # AHOM VOWEL SIGN UU +11726 ; [.30C3.0020.0002] # AHOM VOWEL SIGN E +11727 ; [.30C4.0020.0002] # AHOM VOWEL SIGN AW +11728 ; [.30C5.0020.0002] # AHOM VOWEL SIGN O +11729 ; [.30C6.0020.0002] # AHOM VOWEL SIGN AI +1172A ; [.30C7.0020.0002] # AHOM VOWEL SIGN AM +1172B ; [.30C8.0020.0002] # AHOM SIGN KILLER +1171D ; [.30C9.0020.0002] # AHOM CONSONANT SIGN MEDIAL LA +1171E ; [.30CA.0020.0002] # AHOM CONSONANT SIGN MEDIAL RA +1171F ; [.30CB.0020.0002] # AHOM CONSONANT SIGN MEDIAL LIGATING RA +11D00 ; [.30CC.0020.0002] # MASARAM GONDI LETTER A +11D01 ; [.30CD.0020.0002] # MASARAM GONDI LETTER AA +11D02 ; [.30CE.0020.0002] # MASARAM GONDI LETTER I +11D03 ; [.30CF.0020.0002] # MASARAM GONDI LETTER II +11D04 ; [.30D0.0020.0002] # MASARAM GONDI LETTER U +11D05 ; [.30D1.0020.0002] # MASARAM GONDI LETTER UU +11D06 ; [.30D2.0020.0002] # MASARAM GONDI LETTER E +11D08 ; [.30D3.0020.0002] # MASARAM GONDI LETTER AI +11D09 ; [.30D4.0020.0002] # MASARAM GONDI LETTER O +11D0B ; [.30D5.0020.0002] # MASARAM GONDI LETTER AU +11D0C ; [.30D6.0020.0002] # MASARAM GONDI LETTER KA +11D0D ; [.30D7.0020.0002] # MASARAM GONDI LETTER KHA +11D0E ; [.30D8.0020.0002] # MASARAM GONDI LETTER GA +11D0F ; [.30D9.0020.0002] # MASARAM GONDI LETTER GHA +11D10 ; [.30DA.0020.0002] # MASARAM GONDI LETTER NGA +11D11 ; [.30DB.0020.0002] # MASARAM GONDI LETTER CA +11D12 ; [.30DC.0020.0002] # MASARAM GONDI LETTER CHA +11D13 ; [.30DD.0020.0002] # MASARAM GONDI LETTER JA +11D14 ; [.30DE.0020.0002] # MASARAM GONDI LETTER JHA +11D15 ; [.30DF.0020.0002] # MASARAM GONDI LETTER NYA +11D16 ; [.30E0.0020.0002] # MASARAM GONDI LETTER TTA +11D17 ; [.30E1.0020.0002] # MASARAM GONDI LETTER TTHA +11D18 ; [.30E2.0020.0002] # MASARAM GONDI LETTER DDA +11D19 ; [.30E3.0020.0002] # MASARAM GONDI LETTER DDHA +11D1A ; [.30E4.0020.0002] # MASARAM GONDI LETTER NNA +11D1B ; [.30E5.0020.0002] # MASARAM GONDI LETTER TA +11D1C ; [.30E6.0020.0002] # MASARAM GONDI LETTER THA +11D1D ; [.30E7.0020.0002] # MASARAM GONDI LETTER DA +11D1E ; [.30E8.0020.0002] # MASARAM GONDI LETTER DHA +11D1F ; [.30E9.0020.0002] # MASARAM GONDI LETTER NA +11D20 ; [.30EA.0020.0002] # MASARAM GONDI LETTER PA +11D21 ; [.30EB.0020.0002] # MASARAM GONDI LETTER PHA +11D22 ; [.30EC.0020.0002] # MASARAM GONDI LETTER BA +11D23 ; [.30ED.0020.0002] # MASARAM GONDI LETTER BHA +11D24 ; [.30EE.0020.0002] # MASARAM GONDI LETTER MA +11D25 ; [.30EF.0020.0002] # MASARAM GONDI LETTER YA +11D26 ; [.30F0.0020.0002] # MASARAM GONDI LETTER RA +11D46 ; [.30F0.0020.0017] # MASARAM GONDI REPHA +11D47 ; [.30F0.0020.0019] # MASARAM GONDI RA-KARA +11D27 ; [.30F1.0020.0002] # MASARAM GONDI LETTER LA +11D28 ; [.30F2.0020.0002] # MASARAM GONDI LETTER VA +11D29 ; [.30F3.0020.0002] # MASARAM GONDI LETTER SHA +11D2A ; [.30F4.0020.0002] # MASARAM GONDI LETTER SSA +11D2B ; [.30F5.0020.0002] # MASARAM GONDI LETTER SA +11D2C ; [.30F6.0020.0002] # MASARAM GONDI LETTER HA +11D2D ; [.30F7.0020.0002] # MASARAM GONDI LETTER LLA +11D2E ; [.30F8.0020.0002] # MASARAM GONDI LETTER KSSA +11D2F ; [.30F9.0020.0002] # MASARAM GONDI LETTER JNYA +11D30 ; [.30FA.0020.0002] # MASARAM GONDI LETTER TRA +11D31 ; [.30FB.0020.0002] # MASARAM GONDI VOWEL SIGN AA +11D32 ; [.30FC.0020.0002] # MASARAM GONDI VOWEL SIGN I +11D33 ; [.30FD.0020.0002] # MASARAM GONDI VOWEL SIGN II +11D34 ; [.30FE.0020.0002] # MASARAM GONDI VOWEL SIGN U +11D35 ; [.30FF.0020.0002] # MASARAM GONDI VOWEL SIGN UU +11D36 ; [.3100.0020.0002] # MASARAM GONDI VOWEL SIGN VOCALIC R +11D3A ; [.3101.0020.0002] # MASARAM GONDI VOWEL SIGN E +11D3C ; [.3102.0020.0002] # MASARAM GONDI VOWEL SIGN AI +11D3D ; [.3103.0020.0002] # MASARAM GONDI VOWEL SIGN O +11D3F ; [.3104.0020.0002] # MASARAM GONDI VOWEL SIGN AU +11D44 ; [.3105.0020.0002] # MASARAM GONDI SIGN HALANTA +11D45 ; [.3106.0020.0002] # MASARAM GONDI VIRAMA +11D98 ; [.3107.0020.0002] # GUNJALA GONDI OM +11D60 ; [.3108.0020.0002] # GUNJALA GONDI LETTER A +11D61 ; [.3109.0020.0002] # GUNJALA GONDI LETTER AA +11D62 ; [.310A.0020.0002] # GUNJALA GONDI LETTER I +11D63 ; [.310B.0020.0002] # GUNJALA GONDI LETTER II +11D64 ; [.310C.0020.0002] # GUNJALA GONDI LETTER U +11D65 ; [.310D.0020.0002] # GUNJALA GONDI LETTER UU +11D67 ; [.310E.0020.0002] # GUNJALA GONDI LETTER EE +11D68 ; [.310F.0020.0002] # GUNJALA GONDI LETTER AI +11D6A ; [.3110.0020.0002] # GUNJALA GONDI LETTER OO +11D6B ; [.3111.0020.0002] # GUNJALA GONDI LETTER AU +11D6C ; [.3112.0020.0002] # GUNJALA GONDI LETTER YA +11D6D ; [.3113.0020.0002] # GUNJALA GONDI LETTER VA +11D6E ; [.3114.0020.0002] # GUNJALA GONDI LETTER BA +11D6F ; [.3115.0020.0002] # GUNJALA GONDI LETTER BHA +11D70 ; [.3116.0020.0002] # GUNJALA GONDI LETTER MA +11D71 ; [.3117.0020.0002] # GUNJALA GONDI LETTER KA +11D72 ; [.3118.0020.0002] # GUNJALA GONDI LETTER KHA +11D73 ; [.3119.0020.0002] # GUNJALA GONDI LETTER TA +11D74 ; [.311A.0020.0002] # GUNJALA GONDI LETTER THA +11D75 ; [.311B.0020.0002] # GUNJALA GONDI LETTER LA +11D76 ; [.311C.0020.0002] # GUNJALA GONDI LETTER GA +11D77 ; [.311D.0020.0002] # GUNJALA GONDI LETTER GHA +11D78 ; [.311E.0020.0002] # GUNJALA GONDI LETTER DA +11D79 ; [.311F.0020.0002] # GUNJALA GONDI LETTER DHA +11D7A ; [.3120.0020.0002] # GUNJALA GONDI LETTER NA +11D7B ; [.3121.0020.0002] # GUNJALA GONDI LETTER CA +11D7C ; [.3122.0020.0002] # GUNJALA GONDI LETTER CHA +11D7D ; [.3123.0020.0002] # GUNJALA GONDI LETTER TTA +11D7E ; [.3124.0020.0002] # GUNJALA GONDI LETTER TTHA +11D7F ; [.3125.0020.0002] # GUNJALA GONDI LETTER LLA +11D80 ; [.3126.0020.0002] # GUNJALA GONDI LETTER JA +11D81 ; [.3127.0020.0002] # GUNJALA GONDI LETTER JHA +11D82 ; [.3128.0020.0002] # GUNJALA GONDI LETTER DDA +11D83 ; [.3129.0020.0002] # GUNJALA GONDI LETTER DDHA +11D84 ; [.312A.0020.0002] # GUNJALA GONDI LETTER NGA +11D85 ; [.312B.0020.0002] # GUNJALA GONDI LETTER PA +11D86 ; [.312C.0020.0002] # GUNJALA GONDI LETTER PHA +11D87 ; [.312D.0020.0002] # GUNJALA GONDI LETTER HA +11D88 ; [.312E.0020.0002] # GUNJALA GONDI LETTER RA +11D89 ; [.312F.0020.0002] # GUNJALA GONDI LETTER SA +11D8A ; [.3130.0020.0002] # GUNJALA GONDI VOWEL SIGN AA +11D8B ; [.3131.0020.0002] # GUNJALA GONDI VOWEL SIGN I +11D8C ; [.3132.0020.0002] # GUNJALA GONDI VOWEL SIGN II +11D8D ; [.3133.0020.0002] # GUNJALA GONDI VOWEL SIGN U +11D8E ; [.3134.0020.0002] # GUNJALA GONDI VOWEL SIGN UU +11D90 ; [.3135.0020.0002] # GUNJALA GONDI VOWEL SIGN EE +11D91 ; [.3136.0020.0002] # GUNJALA GONDI VOWEL SIGN AI +11D93 ; [.3137.0020.0002] # GUNJALA GONDI VOWEL SIGN OO +11D94 ; [.3138.0020.0002] # GUNJALA GONDI VOWEL SIGN AU +11D97 ; [.3139.0020.0002] # GUNJALA GONDI VIRAMA +1B83 ; [.313A.0020.0002] # SUNDANESE LETTER A +1BBA ; [.313A.0020.0004] # SUNDANESE AVAGRAHA +1B84 ; [.313B.0020.0002] # SUNDANESE LETTER I +1B85 ; [.313C.0020.0002] # SUNDANESE LETTER U +1B86 ; [.313D.0020.0002] # SUNDANESE LETTER AE +1B87 ; [.313E.0020.0002] # SUNDANESE LETTER O +1B88 ; [.313F.0020.0002] # SUNDANESE LETTER E +1B89 ; [.3140.0020.0002] # SUNDANESE LETTER EU +1B8A ; [.3141.0020.0002] # SUNDANESE LETTER KA +1BBE ; [.3141.0020.0019] # SUNDANESE LETTER FINAL K +1BAE ; [.3142.0020.0002] # SUNDANESE LETTER KHA +1B8B ; [.3143.0020.0002] # SUNDANESE LETTER QA +1B8C ; [.3144.0020.0002] # SUNDANESE LETTER GA +1B8D ; [.3145.0020.0002] # SUNDANESE LETTER NGA +1B8E ; [.3146.0020.0002] # SUNDANESE LETTER CA +1B8F ; [.3147.0020.0002] # SUNDANESE LETTER JA +1B90 ; [.3148.0020.0002] # SUNDANESE LETTER ZA +1B91 ; [.3149.0020.0002] # SUNDANESE LETTER NYA +1B92 ; [.314A.0020.0002] # SUNDANESE LETTER TA +1B93 ; [.314B.0020.0002] # SUNDANESE LETTER DA +1B94 ; [.314C.0020.0002] # SUNDANESE LETTER NA +1B95 ; [.314D.0020.0002] # SUNDANESE LETTER PA +1B96 ; [.314E.0020.0002] # SUNDANESE LETTER FA +1B97 ; [.314F.0020.0002] # SUNDANESE LETTER VA +1B98 ; [.3150.0020.0002] # SUNDANESE LETTER BA +1BBD ; [.3151.0020.0002] # SUNDANESE LETTER BHA +1B99 ; [.3152.0020.0002] # SUNDANESE LETTER MA +1BBF ; [.3152.0020.0019] # SUNDANESE LETTER FINAL M +1BAC ; [.3153.0020.0002] # SUNDANESE CONSONANT SIGN PASANGAN MA +1B9A ; [.3154.0020.0002] # SUNDANESE LETTER YA +1BA1 ; [.3155.0020.0002] # SUNDANESE CONSONANT SIGN PAMINGKAL +1B9B ; [.3156.0020.0002] # SUNDANESE LETTER RA +1BA2 ; [.3157.0020.0002] # SUNDANESE CONSONANT SIGN PANYAKRA +1BBB ; [.3158.0020.0002] # SUNDANESE LETTER REU +1B9C ; [.3159.0020.0002] # SUNDANESE LETTER LA +1BA3 ; [.315A.0020.0002] # SUNDANESE CONSONANT SIGN PANYIKU +1BBC ; [.315B.0020.0002] # SUNDANESE LETTER LEU +1B9D ; [.315C.0020.0002] # SUNDANESE LETTER WA +1BAD ; [.315D.0020.0002] # SUNDANESE CONSONANT SIGN PASANGAN WA +1B9E ; [.315E.0020.0002] # SUNDANESE LETTER SA +1B9F ; [.315F.0020.0002] # SUNDANESE LETTER XA +1BAF ; [.3160.0020.0002] # SUNDANESE LETTER SYA +1BA0 ; [.3161.0020.0002] # SUNDANESE LETTER HA +1BA4 ; [.3162.0020.0002] # SUNDANESE VOWEL SIGN PANGHULU +1BA5 ; [.3163.0020.0002] # SUNDANESE VOWEL SIGN PANYUKU +1BA6 ; [.3164.0020.0002] # SUNDANESE VOWEL SIGN PANAELAENG +1BA7 ; [.3165.0020.0002] # SUNDANESE VOWEL SIGN PANOLONG +1BA8 ; [.3166.0020.0002] # SUNDANESE VOWEL SIGN PAMEPET +1BA9 ; [.3167.0020.0002] # SUNDANESE VOWEL SIGN PANEULEUNG +1BAA ; [.3168.0020.0002] # SUNDANESE SIGN PAMAAEH +1BAB ; [.3169.0020.0002] # SUNDANESE SIGN VIRAMA +11005 ; [.316A.0020.0002] # BRAHMI LETTER A +11006 ; [.316B.0020.0002] # BRAHMI LETTER AA +11007 ; [.316C.0020.0002] # BRAHMI LETTER I +11008 ; [.316D.0020.0002] # BRAHMI LETTER II +11009 ; [.316E.0020.0002] # BRAHMI LETTER U +1100A ; [.316F.0020.0002] # BRAHMI LETTER UU +1100B ; [.3170.0020.0002] # BRAHMI LETTER VOCALIC R +1100C ; [.3171.0020.0002] # BRAHMI LETTER VOCALIC RR +1100D ; [.3172.0020.0002] # BRAHMI LETTER VOCALIC L +1100E ; [.3173.0020.0002] # BRAHMI LETTER VOCALIC LL +1100F ; [.3174.0020.0002] # BRAHMI LETTER E +11010 ; [.3175.0020.0002] # BRAHMI LETTER AI +11011 ; [.3176.0020.0002] # BRAHMI LETTER O +11012 ; [.3177.0020.0002] # BRAHMI LETTER AU +11013 ; [.3178.0020.0002] # BRAHMI LETTER KA +11014 ; [.3179.0020.0002] # BRAHMI LETTER KHA +11015 ; [.317A.0020.0002] # BRAHMI LETTER GA +11016 ; [.317B.0020.0002] # BRAHMI LETTER GHA +11017 ; [.317C.0020.0002] # BRAHMI LETTER NGA +11018 ; [.317D.0020.0002] # BRAHMI LETTER CA +11019 ; [.317E.0020.0002] # BRAHMI LETTER CHA +1101A ; [.317F.0020.0002] # BRAHMI LETTER JA +1101B ; [.3180.0020.0002] # BRAHMI LETTER JHA +1101C ; [.3181.0020.0002] # BRAHMI LETTER NYA +1101D ; [.3182.0020.0002] # BRAHMI LETTER TTA +1101E ; [.3183.0020.0002] # BRAHMI LETTER TTHA +1101F ; [.3184.0020.0002] # BRAHMI LETTER DDA +11020 ; [.3185.0020.0002] # BRAHMI LETTER DDHA +11021 ; [.3186.0020.0002] # BRAHMI LETTER NNA +11022 ; [.3187.0020.0002] # BRAHMI LETTER TA +11023 ; [.3188.0020.0002] # BRAHMI LETTER THA +11024 ; [.3189.0020.0002] # BRAHMI LETTER DA +11025 ; [.318A.0020.0002] # BRAHMI LETTER DHA +11026 ; [.318B.0020.0002] # BRAHMI LETTER NA +11027 ; [.318C.0020.0002] # BRAHMI LETTER PA +11028 ; [.318D.0020.0002] # BRAHMI LETTER PHA +11029 ; [.318E.0020.0002] # BRAHMI LETTER BA +1102A ; [.318F.0020.0002] # BRAHMI LETTER BHA +1102B ; [.3190.0020.0002] # BRAHMI LETTER MA +1102C ; [.3191.0020.0002] # BRAHMI LETTER YA +1102D ; [.3192.0020.0002] # BRAHMI LETTER RA +1102E ; [.3193.0020.0002] # BRAHMI LETTER LA +1102F ; [.3194.0020.0002] # BRAHMI LETTER VA +11030 ; [.3195.0020.0002] # BRAHMI LETTER SHA +11031 ; [.3196.0020.0002] # BRAHMI LETTER SSA +11032 ; [.3197.0020.0002] # BRAHMI LETTER SA +11033 ; [.3198.0020.0002] # BRAHMI LETTER HA +11003 ; [.3199.0020.0002] # BRAHMI SIGN JIHVAMULIYA +11004 ; [.319A.0020.0002] # BRAHMI SIGN UPADHMANIYA +11034 ; [.319B.0020.0002] # BRAHMI LETTER LLA +11035 ; [.319C.0020.0002] # BRAHMI LETTER OLD TAMIL LLLA +11036 ; [.319D.0020.0002] # BRAHMI LETTER OLD TAMIL RRA +11037 ; [.319E.0020.0002] # BRAHMI LETTER OLD TAMIL NNNA +11038 ; [.319F.0020.0002] # BRAHMI VOWEL SIGN AA +11039 ; [.31A0.0020.0002] # BRAHMI VOWEL SIGN BHATTIPROLU AA +1103A ; [.31A1.0020.0002] # BRAHMI VOWEL SIGN I +1103B ; [.31A2.0020.0002] # BRAHMI VOWEL SIGN II +1103C ; [.31A3.0020.0002] # BRAHMI VOWEL SIGN U +1103D ; [.31A4.0020.0002] # BRAHMI VOWEL SIGN UU +1103E ; [.31A5.0020.0002] # BRAHMI VOWEL SIGN VOCALIC R +1103F ; [.31A6.0020.0002] # BRAHMI VOWEL SIGN VOCALIC RR +11040 ; [.31A7.0020.0002] # BRAHMI VOWEL SIGN VOCALIC L +11041 ; [.31A8.0020.0002] # BRAHMI VOWEL SIGN VOCALIC LL +11042 ; [.31A9.0020.0002] # BRAHMI VOWEL SIGN E +11043 ; [.31AA.0020.0002] # BRAHMI VOWEL SIGN AI +11044 ; [.31AB.0020.0002] # BRAHMI VOWEL SIGN O +11045 ; [.31AC.0020.0002] # BRAHMI VOWEL SIGN AU +11046 ; [.31AD.0020.0002] # BRAHMI VIRAMA +1107F ; [.31AE.0020.0002] # BRAHMI NUMBER JOINER +10A00 ; [.31AF.0020.0002] # KHAROSHTHI LETTER A +10A01 ; [.31B0.0020.0002] # KHAROSHTHI VOWEL SIGN I +10A02 ; [.31B1.0020.0002] # KHAROSHTHI VOWEL SIGN U +10A03 ; [.31B2.0020.0002] # KHAROSHTHI VOWEL SIGN VOCALIC R +10A05 ; [.31B3.0020.0002] # KHAROSHTHI VOWEL SIGN E +10A06 ; [.31B4.0020.0002] # KHAROSHTHI VOWEL SIGN O +10A0C ; [.31B5.0020.0002] # KHAROSHTHI VOWEL LENGTH MARK +10A10 ; [.31B6.0020.0002] # KHAROSHTHI LETTER KA +10A32 ; [.31B7.0020.0002] # KHAROSHTHI LETTER KKA +10A11 ; [.31B8.0020.0002] # KHAROSHTHI LETTER KHA +10A12 ; [.31B9.0020.0002] # KHAROSHTHI LETTER GA +10A13 ; [.31BA.0020.0002] # KHAROSHTHI LETTER GHA +10A15 ; [.31BB.0020.0002] # KHAROSHTHI LETTER CA +10A16 ; [.31BC.0020.0002] # KHAROSHTHI LETTER CHA +10A17 ; [.31BD.0020.0002] # KHAROSHTHI LETTER JA +10A19 ; [.31BE.0020.0002] # KHAROSHTHI LETTER NYA +10A1A ; [.31BF.0020.0002] # KHAROSHTHI LETTER TTA +10A34 ; [.31C0.0020.0002] # KHAROSHTHI LETTER TTTA +10A1B ; [.31C1.0020.0002] # KHAROSHTHI LETTER TTHA +10A33 ; [.31C2.0020.0002] # KHAROSHTHI LETTER TTTHA +10A1C ; [.31C3.0020.0002] # KHAROSHTHI LETTER DDA +10A1D ; [.31C4.0020.0002] # KHAROSHTHI LETTER DDHA +10A1E ; [.31C5.0020.0002] # KHAROSHTHI LETTER NNA +10A1F ; [.31C6.0020.0002] # KHAROSHTHI LETTER TA +10A20 ; [.31C7.0020.0002] # KHAROSHTHI LETTER THA +10A21 ; [.31C8.0020.0002] # KHAROSHTHI LETTER DA +10A22 ; [.31C9.0020.0002] # KHAROSHTHI LETTER DHA +10A23 ; [.31CA.0020.0002] # KHAROSHTHI LETTER NA +10A24 ; [.31CB.0020.0002] # KHAROSHTHI LETTER PA +10A25 ; [.31CC.0020.0002] # KHAROSHTHI LETTER PHA +10A26 ; [.31CD.0020.0002] # KHAROSHTHI LETTER BA +10A27 ; [.31CE.0020.0002] # KHAROSHTHI LETTER BHA +10A28 ; [.31CF.0020.0002] # KHAROSHTHI LETTER MA +10A29 ; [.31D0.0020.0002] # KHAROSHTHI LETTER YA +10A2A ; [.31D1.0020.0002] # KHAROSHTHI LETTER RA +10A2B ; [.31D2.0020.0002] # KHAROSHTHI LETTER LA +10A2C ; [.31D3.0020.0002] # KHAROSHTHI LETTER VA +10A35 ; [.31D4.0020.0002] # KHAROSHTHI LETTER VHA +10A2D ; [.31D5.0020.0002] # KHAROSHTHI LETTER SHA +10A2E ; [.31D6.0020.0002] # KHAROSHTHI LETTER SSA +10A2F ; [.31D7.0020.0002] # KHAROSHTHI LETTER SA +10A30 ; [.31D8.0020.0002] # KHAROSHTHI LETTER ZA +10A31 ; [.31D9.0020.0002] # KHAROSHTHI LETTER HA +10A3F ; [.31DA.0020.0002] # KHAROSHTHI VIRAMA +11C00 ; [.31DB.0020.0002] # BHAIKSUKI LETTER A +11C01 ; [.31DC.0020.0002] # BHAIKSUKI LETTER AA +11C02 ; [.31DD.0020.0002] # BHAIKSUKI LETTER I +11C03 ; [.31DE.0020.0002] # BHAIKSUKI LETTER II +11C04 ; [.31DF.0020.0002] # BHAIKSUKI LETTER U +11C05 ; [.31E0.0020.0002] # BHAIKSUKI LETTER UU +11C06 ; [.31E1.0020.0002] # BHAIKSUKI LETTER VOCALIC R +11C07 ; [.31E2.0020.0002] # BHAIKSUKI LETTER VOCALIC RR +11C08 ; [.31E3.0020.0002] # BHAIKSUKI LETTER VOCALIC L +11C0A ; [.31E4.0020.0002] # BHAIKSUKI LETTER E +11C0B ; [.31E5.0020.0002] # BHAIKSUKI LETTER AI +11C0C ; [.31E6.0020.0002] # BHAIKSUKI LETTER O +11C0D ; [.31E7.0020.0002] # BHAIKSUKI LETTER AU +11C0E ; [.31E8.0020.0002] # BHAIKSUKI LETTER KA +11C0F ; [.31E9.0020.0002] # BHAIKSUKI LETTER KHA +11C10 ; [.31EA.0020.0002] # BHAIKSUKI LETTER GA +11C11 ; [.31EB.0020.0002] # BHAIKSUKI LETTER GHA +11C12 ; [.31EC.0020.0002] # BHAIKSUKI LETTER NGA +11C13 ; [.31ED.0020.0002] # BHAIKSUKI LETTER CA +11C14 ; [.31EE.0020.0002] # BHAIKSUKI LETTER CHA +11C15 ; [.31EF.0020.0002] # BHAIKSUKI LETTER JA +11C16 ; [.31F0.0020.0002] # BHAIKSUKI LETTER JHA +11C17 ; [.31F1.0020.0002] # BHAIKSUKI LETTER NYA +11C18 ; [.31F2.0020.0002] # BHAIKSUKI LETTER TTA +11C19 ; [.31F3.0020.0002] # BHAIKSUKI LETTER TTHA +11C1A ; [.31F4.0020.0002] # BHAIKSUKI LETTER DDA +11C1B ; [.31F5.0020.0002] # BHAIKSUKI LETTER DDHA +11C1C ; [.31F6.0020.0002] # BHAIKSUKI LETTER NNA +11C1D ; [.31F7.0020.0002] # BHAIKSUKI LETTER TA +11C1E ; [.31F8.0020.0002] # BHAIKSUKI LETTER THA +11C1F ; [.31F9.0020.0002] # BHAIKSUKI LETTER DA +11C20 ; [.31FA.0020.0002] # BHAIKSUKI LETTER DHA +11C21 ; [.31FB.0020.0002] # BHAIKSUKI LETTER NA +11C22 ; [.31FC.0020.0002] # BHAIKSUKI LETTER PA +11C23 ; [.31FD.0020.0002] # BHAIKSUKI LETTER PHA +11C24 ; [.31FE.0020.0002] # BHAIKSUKI LETTER BA +11C25 ; [.31FF.0020.0002] # BHAIKSUKI LETTER BHA +11C26 ; [.3200.0020.0002] # BHAIKSUKI LETTER MA +11C27 ; [.3201.0020.0002] # BHAIKSUKI LETTER YA +11C28 ; [.3202.0020.0002] # BHAIKSUKI LETTER RA +11C29 ; [.3203.0020.0002] # BHAIKSUKI LETTER LA +11C2A ; [.3204.0020.0002] # BHAIKSUKI LETTER VA +11C2B ; [.3205.0020.0002] # BHAIKSUKI LETTER SHA +11C2C ; [.3206.0020.0002] # BHAIKSUKI LETTER SSA +11C2D ; [.3207.0020.0002] # BHAIKSUKI LETTER SA +11C2E ; [.3208.0020.0002] # BHAIKSUKI LETTER HA +11C40 ; [.3209.0020.0002] # BHAIKSUKI SIGN AVAGRAHA +11C2F ; [.320A.0020.0002] # BHAIKSUKI VOWEL SIGN AA +11C30 ; [.320B.0020.0002] # BHAIKSUKI VOWEL SIGN I +11C31 ; [.320C.0020.0002] # BHAIKSUKI VOWEL SIGN II +11C32 ; [.320D.0020.0002] # BHAIKSUKI VOWEL SIGN U +11C33 ; [.320E.0020.0002] # BHAIKSUKI VOWEL SIGN UU +11C34 ; [.320F.0020.0002] # BHAIKSUKI VOWEL SIGN VOCALIC R +11C35 ; [.3210.0020.0002] # BHAIKSUKI VOWEL SIGN VOCALIC RR +11C36 ; [.3211.0020.0002] # BHAIKSUKI VOWEL SIGN VOCALIC L +11C38 ; [.3212.0020.0002] # BHAIKSUKI VOWEL SIGN E +11C39 ; [.3213.0020.0002] # BHAIKSUKI VOWEL SIGN AI +11C3A ; [.3214.0020.0002] # BHAIKSUKI VOWEL SIGN O +11C3B ; [.3215.0020.0002] # BHAIKSUKI VOWEL SIGN AU +11C3F ; [.3216.0020.0002] # BHAIKSUKI SIGN VIRAMA +0E01 ; [.3217.0020.0002] # THAI CHARACTER KO KAI +0E40 0E01 ; [.3217.0020.0002][.3251.0020.0002] # +0E41 0E01 ; [.3217.0020.0002][.3252.0020.0002] # +0E42 0E01 ; [.3217.0020.0002][.3253.0020.0002] # +0E43 0E01 ; [.3217.0020.0002][.3254.0020.0002] # +0E44 0E01 ; [.3217.0020.0002][.3255.0020.0002] # +0E02 ; [.3218.0020.0002] # THAI CHARACTER KHO KHAI +0E40 0E02 ; [.3218.0020.0002][.3251.0020.0002] # +0E41 0E02 ; [.3218.0020.0002][.3252.0020.0002] # +0E42 0E02 ; [.3218.0020.0002][.3253.0020.0002] # +0E43 0E02 ; [.3218.0020.0002][.3254.0020.0002] # +0E44 0E02 ; [.3218.0020.0002][.3255.0020.0002] # +0E03 ; [.3219.0020.0002] # THAI CHARACTER KHO KHUAT +0E40 0E03 ; [.3219.0020.0002][.3251.0020.0002] # +0E41 0E03 ; [.3219.0020.0002][.3252.0020.0002] # +0E42 0E03 ; [.3219.0020.0002][.3253.0020.0002] # +0E43 0E03 ; [.3219.0020.0002][.3254.0020.0002] # +0E44 0E03 ; [.3219.0020.0002][.3255.0020.0002] # +0E04 ; [.321A.0020.0002] # THAI CHARACTER KHO KHWAI +0E40 0E04 ; [.321A.0020.0002][.3251.0020.0002] # +0E41 0E04 ; [.321A.0020.0002][.3252.0020.0002] # +0E42 0E04 ; [.321A.0020.0002][.3253.0020.0002] # +0E43 0E04 ; [.321A.0020.0002][.3254.0020.0002] # +0E44 0E04 ; [.321A.0020.0002][.3255.0020.0002] # +0E05 ; [.321B.0020.0002] # THAI CHARACTER KHO KHON +0E40 0E05 ; [.321B.0020.0002][.3251.0020.0002] # +0E41 0E05 ; [.321B.0020.0002][.3252.0020.0002] # +0E42 0E05 ; [.321B.0020.0002][.3253.0020.0002] # +0E43 0E05 ; [.321B.0020.0002][.3254.0020.0002] # +0E44 0E05 ; [.321B.0020.0002][.3255.0020.0002] # +0E06 ; [.321C.0020.0002] # THAI CHARACTER KHO RAKHANG +0E40 0E06 ; [.321C.0020.0002][.3251.0020.0002] # +0E41 0E06 ; [.321C.0020.0002][.3252.0020.0002] # +0E42 0E06 ; [.321C.0020.0002][.3253.0020.0002] # +0E43 0E06 ; [.321C.0020.0002][.3254.0020.0002] # +0E44 0E06 ; [.321C.0020.0002][.3255.0020.0002] # +0E07 ; [.321D.0020.0002] # THAI CHARACTER NGO NGU +0E40 0E07 ; [.321D.0020.0002][.3251.0020.0002] # +0E41 0E07 ; [.321D.0020.0002][.3252.0020.0002] # +0E42 0E07 ; [.321D.0020.0002][.3253.0020.0002] # +0E43 0E07 ; [.321D.0020.0002][.3254.0020.0002] # +0E44 0E07 ; [.321D.0020.0002][.3255.0020.0002] # +0E08 ; [.321E.0020.0002] # THAI CHARACTER CHO CHAN +0E40 0E08 ; [.321E.0020.0002][.3251.0020.0002] # +0E41 0E08 ; [.321E.0020.0002][.3252.0020.0002] # +0E42 0E08 ; [.321E.0020.0002][.3253.0020.0002] # +0E43 0E08 ; [.321E.0020.0002][.3254.0020.0002] # +0E44 0E08 ; [.321E.0020.0002][.3255.0020.0002] # +0E09 ; [.321F.0020.0002] # THAI CHARACTER CHO CHING +0E40 0E09 ; [.321F.0020.0002][.3251.0020.0002] # +0E41 0E09 ; [.321F.0020.0002][.3252.0020.0002] # +0E42 0E09 ; [.321F.0020.0002][.3253.0020.0002] # +0E43 0E09 ; [.321F.0020.0002][.3254.0020.0002] # +0E44 0E09 ; [.321F.0020.0002][.3255.0020.0002] # +0E0A ; [.3220.0020.0002] # THAI CHARACTER CHO CHANG +0E40 0E0A ; [.3220.0020.0002][.3251.0020.0002] # +0E41 0E0A ; [.3220.0020.0002][.3252.0020.0002] # +0E42 0E0A ; [.3220.0020.0002][.3253.0020.0002] # +0E43 0E0A ; [.3220.0020.0002][.3254.0020.0002] # +0E44 0E0A ; [.3220.0020.0002][.3255.0020.0002] # +0E0B ; [.3221.0020.0002] # THAI CHARACTER SO SO +0E40 0E0B ; [.3221.0020.0002][.3251.0020.0002] # +0E41 0E0B ; [.3221.0020.0002][.3252.0020.0002] # +0E42 0E0B ; [.3221.0020.0002][.3253.0020.0002] # +0E43 0E0B ; [.3221.0020.0002][.3254.0020.0002] # +0E44 0E0B ; [.3221.0020.0002][.3255.0020.0002] # +0E0C ; [.3222.0020.0002] # THAI CHARACTER CHO CHOE +0E40 0E0C ; [.3222.0020.0002][.3251.0020.0002] # +0E41 0E0C ; [.3222.0020.0002][.3252.0020.0002] # +0E42 0E0C ; [.3222.0020.0002][.3253.0020.0002] # +0E43 0E0C ; [.3222.0020.0002][.3254.0020.0002] # +0E44 0E0C ; [.3222.0020.0002][.3255.0020.0002] # +0E0D ; [.3223.0020.0002] # THAI CHARACTER YO YING +0E40 0E0D ; [.3223.0020.0002][.3251.0020.0002] # +0E41 0E0D ; [.3223.0020.0002][.3252.0020.0002] # +0E42 0E0D ; [.3223.0020.0002][.3253.0020.0002] # +0E43 0E0D ; [.3223.0020.0002][.3254.0020.0002] # +0E44 0E0D ; [.3223.0020.0002][.3255.0020.0002] # +0E0E ; [.3224.0020.0002] # THAI CHARACTER DO CHADA +0E40 0E0E ; [.3224.0020.0002][.3251.0020.0002] # +0E41 0E0E ; [.3224.0020.0002][.3252.0020.0002] # +0E42 0E0E ; [.3224.0020.0002][.3253.0020.0002] # +0E43 0E0E ; [.3224.0020.0002][.3254.0020.0002] # +0E44 0E0E ; [.3224.0020.0002][.3255.0020.0002] # +0E0F ; [.3225.0020.0002] # THAI CHARACTER TO PATAK +0E40 0E0F ; [.3225.0020.0002][.3251.0020.0002] # +0E41 0E0F ; [.3225.0020.0002][.3252.0020.0002] # +0E42 0E0F ; [.3225.0020.0002][.3253.0020.0002] # +0E43 0E0F ; [.3225.0020.0002][.3254.0020.0002] # +0E44 0E0F ; [.3225.0020.0002][.3255.0020.0002] # +0E10 ; [.3226.0020.0002] # THAI CHARACTER THO THAN +0E40 0E10 ; [.3226.0020.0002][.3251.0020.0002] # +0E41 0E10 ; [.3226.0020.0002][.3252.0020.0002] # +0E42 0E10 ; [.3226.0020.0002][.3253.0020.0002] # +0E43 0E10 ; [.3226.0020.0002][.3254.0020.0002] # +0E44 0E10 ; [.3226.0020.0002][.3255.0020.0002] # +0E11 ; [.3227.0020.0002] # THAI CHARACTER THO NANGMONTHO +0E40 0E11 ; [.3227.0020.0002][.3251.0020.0002] # +0E41 0E11 ; [.3227.0020.0002][.3252.0020.0002] # +0E42 0E11 ; [.3227.0020.0002][.3253.0020.0002] # +0E43 0E11 ; [.3227.0020.0002][.3254.0020.0002] # +0E44 0E11 ; [.3227.0020.0002][.3255.0020.0002] # +0E12 ; [.3228.0020.0002] # THAI CHARACTER THO PHUTHAO +0E40 0E12 ; [.3228.0020.0002][.3251.0020.0002] # +0E41 0E12 ; [.3228.0020.0002][.3252.0020.0002] # +0E42 0E12 ; [.3228.0020.0002][.3253.0020.0002] # +0E43 0E12 ; [.3228.0020.0002][.3254.0020.0002] # +0E44 0E12 ; [.3228.0020.0002][.3255.0020.0002] # +0E13 ; [.3229.0020.0002] # THAI CHARACTER NO NEN +0E40 0E13 ; [.3229.0020.0002][.3251.0020.0002] # +0E41 0E13 ; [.3229.0020.0002][.3252.0020.0002] # +0E42 0E13 ; [.3229.0020.0002][.3253.0020.0002] # +0E43 0E13 ; [.3229.0020.0002][.3254.0020.0002] # +0E44 0E13 ; [.3229.0020.0002][.3255.0020.0002] # +0E14 ; [.322A.0020.0002] # THAI CHARACTER DO DEK +0E40 0E14 ; [.322A.0020.0002][.3251.0020.0002] # +0E41 0E14 ; [.322A.0020.0002][.3252.0020.0002] # +0E42 0E14 ; [.322A.0020.0002][.3253.0020.0002] # +0E43 0E14 ; [.322A.0020.0002][.3254.0020.0002] # +0E44 0E14 ; [.322A.0020.0002][.3255.0020.0002] # +0E15 ; [.322B.0020.0002] # THAI CHARACTER TO TAO +0E40 0E15 ; [.322B.0020.0002][.3251.0020.0002] # +0E41 0E15 ; [.322B.0020.0002][.3252.0020.0002] # +0E42 0E15 ; [.322B.0020.0002][.3253.0020.0002] # +0E43 0E15 ; [.322B.0020.0002][.3254.0020.0002] # +0E44 0E15 ; [.322B.0020.0002][.3255.0020.0002] # +0E16 ; [.322C.0020.0002] # THAI CHARACTER THO THUNG +0E40 0E16 ; [.322C.0020.0002][.3251.0020.0002] # +0E41 0E16 ; [.322C.0020.0002][.3252.0020.0002] # +0E42 0E16 ; [.322C.0020.0002][.3253.0020.0002] # +0E43 0E16 ; [.322C.0020.0002][.3254.0020.0002] # +0E44 0E16 ; [.322C.0020.0002][.3255.0020.0002] # +0E17 ; [.322D.0020.0002] # THAI CHARACTER THO THAHAN +0E40 0E17 ; [.322D.0020.0002][.3251.0020.0002] # +0E41 0E17 ; [.322D.0020.0002][.3252.0020.0002] # +0E42 0E17 ; [.322D.0020.0002][.3253.0020.0002] # +0E43 0E17 ; [.322D.0020.0002][.3254.0020.0002] # +0E44 0E17 ; [.322D.0020.0002][.3255.0020.0002] # +0E18 ; [.322E.0020.0002] # THAI CHARACTER THO THONG +0E40 0E18 ; [.322E.0020.0002][.3251.0020.0002] # +0E41 0E18 ; [.322E.0020.0002][.3252.0020.0002] # +0E42 0E18 ; [.322E.0020.0002][.3253.0020.0002] # +0E43 0E18 ; [.322E.0020.0002][.3254.0020.0002] # +0E44 0E18 ; [.322E.0020.0002][.3255.0020.0002] # +0E19 ; [.322F.0020.0002] # THAI CHARACTER NO NU +0E40 0E19 ; [.322F.0020.0002][.3251.0020.0002] # +0E41 0E19 ; [.322F.0020.0002][.3252.0020.0002] # +0E42 0E19 ; [.322F.0020.0002][.3253.0020.0002] # +0E43 0E19 ; [.322F.0020.0002][.3254.0020.0002] # +0E44 0E19 ; [.322F.0020.0002][.3255.0020.0002] # +0E1A ; [.3230.0020.0002] # THAI CHARACTER BO BAIMAI +0E40 0E1A ; [.3230.0020.0002][.3251.0020.0002] # +0E41 0E1A ; [.3230.0020.0002][.3252.0020.0002] # +0E42 0E1A ; [.3230.0020.0002][.3253.0020.0002] # +0E43 0E1A ; [.3230.0020.0002][.3254.0020.0002] # +0E44 0E1A ; [.3230.0020.0002][.3255.0020.0002] # +0E1B ; [.3231.0020.0002] # THAI CHARACTER PO PLA +0E40 0E1B ; [.3231.0020.0002][.3251.0020.0002] # +0E41 0E1B ; [.3231.0020.0002][.3252.0020.0002] # +0E42 0E1B ; [.3231.0020.0002][.3253.0020.0002] # +0E43 0E1B ; [.3231.0020.0002][.3254.0020.0002] # +0E44 0E1B ; [.3231.0020.0002][.3255.0020.0002] # +0E1C ; [.3232.0020.0002] # THAI CHARACTER PHO PHUNG +0E40 0E1C ; [.3232.0020.0002][.3251.0020.0002] # +0E41 0E1C ; [.3232.0020.0002][.3252.0020.0002] # +0E42 0E1C ; [.3232.0020.0002][.3253.0020.0002] # +0E43 0E1C ; [.3232.0020.0002][.3254.0020.0002] # +0E44 0E1C ; [.3232.0020.0002][.3255.0020.0002] # +0E1D ; [.3233.0020.0002] # THAI CHARACTER FO FA +0E40 0E1D ; [.3233.0020.0002][.3251.0020.0002] # +0E41 0E1D ; [.3233.0020.0002][.3252.0020.0002] # +0E42 0E1D ; [.3233.0020.0002][.3253.0020.0002] # +0E43 0E1D ; [.3233.0020.0002][.3254.0020.0002] # +0E44 0E1D ; [.3233.0020.0002][.3255.0020.0002] # +0E1E ; [.3234.0020.0002] # THAI CHARACTER PHO PHAN +0E40 0E1E ; [.3234.0020.0002][.3251.0020.0002] # +0E41 0E1E ; [.3234.0020.0002][.3252.0020.0002] # +0E42 0E1E ; [.3234.0020.0002][.3253.0020.0002] # +0E43 0E1E ; [.3234.0020.0002][.3254.0020.0002] # +0E44 0E1E ; [.3234.0020.0002][.3255.0020.0002] # +0E1F ; [.3235.0020.0002] # THAI CHARACTER FO FAN +0E40 0E1F ; [.3235.0020.0002][.3251.0020.0002] # +0E41 0E1F ; [.3235.0020.0002][.3252.0020.0002] # +0E42 0E1F ; [.3235.0020.0002][.3253.0020.0002] # +0E43 0E1F ; [.3235.0020.0002][.3254.0020.0002] # +0E44 0E1F ; [.3235.0020.0002][.3255.0020.0002] # +0E20 ; [.3236.0020.0002] # THAI CHARACTER PHO SAMPHAO +0E40 0E20 ; [.3236.0020.0002][.3251.0020.0002] # +0E41 0E20 ; [.3236.0020.0002][.3252.0020.0002] # +0E42 0E20 ; [.3236.0020.0002][.3253.0020.0002] # +0E43 0E20 ; [.3236.0020.0002][.3254.0020.0002] # +0E44 0E20 ; [.3236.0020.0002][.3255.0020.0002] # +0E21 ; [.3237.0020.0002] # THAI CHARACTER MO MA +0E40 0E21 ; [.3237.0020.0002][.3251.0020.0002] # +0E41 0E21 ; [.3237.0020.0002][.3252.0020.0002] # +0E42 0E21 ; [.3237.0020.0002][.3253.0020.0002] # +0E43 0E21 ; [.3237.0020.0002][.3254.0020.0002] # +0E44 0E21 ; [.3237.0020.0002][.3255.0020.0002] # +0E22 ; [.3238.0020.0002] # THAI CHARACTER YO YAK +0E40 0E22 ; [.3238.0020.0002][.3251.0020.0002] # +0E41 0E22 ; [.3238.0020.0002][.3252.0020.0002] # +0E42 0E22 ; [.3238.0020.0002][.3253.0020.0002] # +0E43 0E22 ; [.3238.0020.0002][.3254.0020.0002] # +0E44 0E22 ; [.3238.0020.0002][.3255.0020.0002] # +0E23 ; [.3239.0020.0002] # THAI CHARACTER RO RUA +0E40 0E23 ; [.3239.0020.0002][.3251.0020.0002] # +0E41 0E23 ; [.3239.0020.0002][.3252.0020.0002] # +0E42 0E23 ; [.3239.0020.0002][.3253.0020.0002] # +0E43 0E23 ; [.3239.0020.0002][.3254.0020.0002] # +0E44 0E23 ; [.3239.0020.0002][.3255.0020.0002] # +0E24 ; [.323A.0020.0002] # THAI CHARACTER RU +0E40 0E24 ; [.323A.0020.0002][.3251.0020.0002] # +0E41 0E24 ; [.323A.0020.0002][.3252.0020.0002] # +0E42 0E24 ; [.323A.0020.0002][.3253.0020.0002] # +0E43 0E24 ; [.323A.0020.0002][.3254.0020.0002] # +0E44 0E24 ; [.323A.0020.0002][.3255.0020.0002] # +0E25 ; [.323B.0020.0002] # THAI CHARACTER LO LING +0E40 0E25 ; [.323B.0020.0002][.3251.0020.0002] # +0E41 0E25 ; [.323B.0020.0002][.3252.0020.0002] # +0E42 0E25 ; [.323B.0020.0002][.3253.0020.0002] # +0E43 0E25 ; [.323B.0020.0002][.3254.0020.0002] # +0E44 0E25 ; [.323B.0020.0002][.3255.0020.0002] # +0E26 ; [.323C.0020.0002] # THAI CHARACTER LU +0E40 0E26 ; [.323C.0020.0002][.3251.0020.0002] # +0E41 0E26 ; [.323C.0020.0002][.3252.0020.0002] # +0E42 0E26 ; [.323C.0020.0002][.3253.0020.0002] # +0E43 0E26 ; [.323C.0020.0002][.3254.0020.0002] # +0E44 0E26 ; [.323C.0020.0002][.3255.0020.0002] # +0E27 ; [.323D.0020.0002] # THAI CHARACTER WO WAEN +0E40 0E27 ; [.323D.0020.0002][.3251.0020.0002] # +0E41 0E27 ; [.323D.0020.0002][.3252.0020.0002] # +0E42 0E27 ; [.323D.0020.0002][.3253.0020.0002] # +0E43 0E27 ; [.323D.0020.0002][.3254.0020.0002] # +0E44 0E27 ; [.323D.0020.0002][.3255.0020.0002] # +0E28 ; [.323E.0020.0002] # THAI CHARACTER SO SALA +0E40 0E28 ; [.323E.0020.0002][.3251.0020.0002] # +0E41 0E28 ; [.323E.0020.0002][.3252.0020.0002] # +0E42 0E28 ; [.323E.0020.0002][.3253.0020.0002] # +0E43 0E28 ; [.323E.0020.0002][.3254.0020.0002] # +0E44 0E28 ; [.323E.0020.0002][.3255.0020.0002] # +0E29 ; [.323F.0020.0002] # THAI CHARACTER SO RUSI +0E40 0E29 ; [.323F.0020.0002][.3251.0020.0002] # +0E41 0E29 ; [.323F.0020.0002][.3252.0020.0002] # +0E42 0E29 ; [.323F.0020.0002][.3253.0020.0002] # +0E43 0E29 ; [.323F.0020.0002][.3254.0020.0002] # +0E44 0E29 ; [.323F.0020.0002][.3255.0020.0002] # +0E2A ; [.3240.0020.0002] # THAI CHARACTER SO SUA +0E40 0E2A ; [.3240.0020.0002][.3251.0020.0002] # +0E41 0E2A ; [.3240.0020.0002][.3252.0020.0002] # +0E42 0E2A ; [.3240.0020.0002][.3253.0020.0002] # +0E43 0E2A ; [.3240.0020.0002][.3254.0020.0002] # +0E44 0E2A ; [.3240.0020.0002][.3255.0020.0002] # +0E2B ; [.3241.0020.0002] # THAI CHARACTER HO HIP +0E40 0E2B ; [.3241.0020.0002][.3251.0020.0002] # +0E41 0E2B ; [.3241.0020.0002][.3252.0020.0002] # +0E42 0E2B ; [.3241.0020.0002][.3253.0020.0002] # +0E43 0E2B ; [.3241.0020.0002][.3254.0020.0002] # +0E44 0E2B ; [.3241.0020.0002][.3255.0020.0002] # +0E2C ; [.3242.0020.0002] # THAI CHARACTER LO CHULA +0E40 0E2C ; [.3242.0020.0002][.3251.0020.0002] # +0E41 0E2C ; [.3242.0020.0002][.3252.0020.0002] # +0E42 0E2C ; [.3242.0020.0002][.3253.0020.0002] # +0E43 0E2C ; [.3242.0020.0002][.3254.0020.0002] # +0E44 0E2C ; [.3242.0020.0002][.3255.0020.0002] # +0E2D ; [.3243.0020.0002] # THAI CHARACTER O ANG +0E40 0E2D ; [.3243.0020.0002][.3251.0020.0002] # +0E41 0E2D ; [.3243.0020.0002][.3252.0020.0002] # +0E42 0E2D ; [.3243.0020.0002][.3253.0020.0002] # +0E43 0E2D ; [.3243.0020.0002][.3254.0020.0002] # +0E44 0E2D ; [.3243.0020.0002][.3255.0020.0002] # +0E2E ; [.3244.0020.0002] # THAI CHARACTER HO NOKHUK +0E40 0E2E ; [.3244.0020.0002][.3251.0020.0002] # +0E41 0E2E ; [.3244.0020.0002][.3252.0020.0002] # +0E42 0E2E ; [.3244.0020.0002][.3253.0020.0002] # +0E43 0E2E ; [.3244.0020.0002][.3254.0020.0002] # +0E44 0E2E ; [.3244.0020.0002][.3255.0020.0002] # +0E2F ; [.3245.0020.0002] # THAI CHARACTER PAIYANNOI +0E30 ; [.3246.0020.0002] # THAI CHARACTER SARA A +0E31 ; [.3247.0020.0002] # THAI CHARACTER MAI HAN-AKAT +0E32 ; [.3248.0020.0002] # THAI CHARACTER SARA AA +0E33 ; [.3249.0020.0002] # THAI CHARACTER SARA AM +0E4D 0E32 ; [.3249.0020.0002] # THAI CHARACTER SARA AM +0E34 ; [.324A.0020.0002] # THAI CHARACTER SARA I +0E35 ; [.324B.0020.0002] # THAI CHARACTER SARA II +0E36 ; [.324C.0020.0002] # THAI CHARACTER SARA UE +0E37 ; [.324D.0020.0002] # THAI CHARACTER SARA UEE +0E38 ; [.324E.0020.0002] # THAI CHARACTER SARA U +0E39 ; [.324F.0020.0002] # THAI CHARACTER SARA UU +0E3A ; [.3250.0020.0002] # THAI CHARACTER PHINTHU +0E40 ; [.3251.0020.0002] # THAI CHARACTER SARA E +0E41 ; [.3252.0020.0002] # THAI CHARACTER SARA AE +0E42 ; [.3253.0020.0002] # THAI CHARACTER SARA O +0E43 ; [.3254.0020.0002] # THAI CHARACTER SARA AI MAIMUAN +0E44 ; [.3255.0020.0002] # THAI CHARACTER SARA AI MAIMALAI +0E45 ; [.3256.0020.0002] # THAI CHARACTER LAKKHANGYAO +0EDE ; [.3257.0020.0002] # LAO LETTER KHMU GO +0EC0 0EDE ; [.3257.0020.0002][.3291.0020.0002] # +0EC1 0EDE ; [.3257.0020.0002][.3292.0020.0002] # +0EC2 0EDE ; [.3257.0020.0002][.3293.0020.0002] # +0EC3 0EDE ; [.3257.0020.0002][.3294.0020.0002] # +0EC4 0EDE ; [.3257.0020.0002][.3295.0020.0002] # +0E81 ; [.3258.0020.0002] # LAO LETTER KO +0EC0 0E81 ; [.3258.0020.0002][.3291.0020.0002] # +0EC1 0E81 ; [.3258.0020.0002][.3292.0020.0002] # +0EC2 0E81 ; [.3258.0020.0002][.3293.0020.0002] # +0EC3 0E81 ; [.3258.0020.0002][.3294.0020.0002] # +0EC4 0E81 ; [.3258.0020.0002][.3295.0020.0002] # +0E82 ; [.3259.0020.0002] # LAO LETTER KHO SUNG +0EC0 0E82 ; [.3259.0020.0002][.3291.0020.0002] # +0EC1 0E82 ; [.3259.0020.0002][.3292.0020.0002] # +0EC2 0E82 ; [.3259.0020.0002][.3293.0020.0002] # +0EC3 0E82 ; [.3259.0020.0002][.3294.0020.0002] # +0EC4 0E82 ; [.3259.0020.0002][.3295.0020.0002] # +0E84 ; [.325A.0020.0002] # LAO LETTER KHO TAM +0EC0 0E84 ; [.325A.0020.0002][.3291.0020.0002] # +0EC1 0E84 ; [.325A.0020.0002][.3292.0020.0002] # +0EC2 0E84 ; [.325A.0020.0002][.3293.0020.0002] # +0EC3 0E84 ; [.325A.0020.0002][.3294.0020.0002] # +0EC4 0E84 ; [.325A.0020.0002][.3295.0020.0002] # +0E86 ; [.325B.0020.0002] # LAO LETTER PALI GHA +0EC0 0E86 ; [.325B.0020.0002][.3291.0020.0002] # +0EC1 0E86 ; [.325B.0020.0002][.3292.0020.0002] # +0EC2 0E86 ; [.325B.0020.0002][.3293.0020.0002] # +0EC3 0E86 ; [.325B.0020.0002][.3294.0020.0002] # +0EC4 0E86 ; [.325B.0020.0002][.3295.0020.0002] # +0E87 ; [.325C.0020.0002] # LAO LETTER NGO +0EC0 0E87 ; [.325C.0020.0002][.3291.0020.0002] # +0EC1 0E87 ; [.325C.0020.0002][.3292.0020.0002] # +0EC2 0E87 ; [.325C.0020.0002][.3293.0020.0002] # +0EC3 0E87 ; [.325C.0020.0002][.3294.0020.0002] # +0EC4 0E87 ; [.325C.0020.0002][.3295.0020.0002] # +0E88 ; [.325D.0020.0002] # LAO LETTER CO +0EC0 0E88 ; [.325D.0020.0002][.3291.0020.0002] # +0EC1 0E88 ; [.325D.0020.0002][.3292.0020.0002] # +0EC2 0E88 ; [.325D.0020.0002][.3293.0020.0002] # +0EC3 0E88 ; [.325D.0020.0002][.3294.0020.0002] # +0EC4 0E88 ; [.325D.0020.0002][.3295.0020.0002] # +0E89 ; [.325E.0020.0002] # LAO LETTER PALI CHA +0EC0 0E89 ; [.325E.0020.0002][.3291.0020.0002] # +0EC1 0E89 ; [.325E.0020.0002][.3292.0020.0002] # +0EC2 0E89 ; [.325E.0020.0002][.3293.0020.0002] # +0EC3 0E89 ; [.325E.0020.0002][.3294.0020.0002] # +0EC4 0E89 ; [.325E.0020.0002][.3295.0020.0002] # +0EAA ; [.325F.0020.0002] # LAO LETTER SO SUNG +0EC0 0EAA ; [.325F.0020.0002][.3291.0020.0002] # +0EC1 0EAA ; [.325F.0020.0002][.3292.0020.0002] # +0EC2 0EAA ; [.325F.0020.0002][.3293.0020.0002] # +0EC3 0EAA ; [.325F.0020.0002][.3294.0020.0002] # +0EC4 0EAA ; [.325F.0020.0002][.3295.0020.0002] # +0E8A ; [.3260.0020.0002] # LAO LETTER SO TAM +0EC0 0E8A ; [.3260.0020.0002][.3291.0020.0002] # +0EC1 0E8A ; [.3260.0020.0002][.3292.0020.0002] # +0EC2 0E8A ; [.3260.0020.0002][.3293.0020.0002] # +0EC3 0E8A ; [.3260.0020.0002][.3294.0020.0002] # +0EC4 0E8A ; [.3260.0020.0002][.3295.0020.0002] # +0E8C ; [.3261.0020.0002] # LAO LETTER PALI JHA +0EC0 0E8C ; [.3261.0020.0002][.3291.0020.0002] # +0EC1 0E8C ; [.3261.0020.0002][.3292.0020.0002] # +0EC2 0E8C ; [.3261.0020.0002][.3293.0020.0002] # +0EC3 0E8C ; [.3261.0020.0002][.3294.0020.0002] # +0EC4 0E8C ; [.3261.0020.0002][.3295.0020.0002] # +0E8E ; [.3262.0020.0002] # LAO LETTER PALI NYA +0EC0 0E8E ; [.3262.0020.0002][.3291.0020.0002] # +0EC1 0E8E ; [.3262.0020.0002][.3292.0020.0002] # +0EC2 0E8E ; [.3262.0020.0002][.3293.0020.0002] # +0EC3 0E8E ; [.3262.0020.0002][.3294.0020.0002] # +0EC4 0E8E ; [.3262.0020.0002][.3295.0020.0002] # +0EDF ; [.3263.0020.0002] # LAO LETTER KHMU NYO +0EC0 0EDF ; [.3263.0020.0002][.3291.0020.0002] # +0EC1 0EDF ; [.3263.0020.0002][.3292.0020.0002] # +0EC2 0EDF ; [.3263.0020.0002][.3293.0020.0002] # +0EC3 0EDF ; [.3263.0020.0002][.3294.0020.0002] # +0EC4 0EDF ; [.3263.0020.0002][.3295.0020.0002] # +0E8D ; [.3264.0020.0002] # LAO LETTER NYO +0EC0 0E8D ; [.3264.0020.0002][.3291.0020.0002] # +0EC1 0E8D ; [.3264.0020.0002][.3292.0020.0002] # +0EC2 0E8D ; [.3264.0020.0002][.3293.0020.0002] # +0EC3 0E8D ; [.3264.0020.0002][.3294.0020.0002] # +0EC4 0E8D ; [.3264.0020.0002][.3295.0020.0002] # +0E8F ; [.3265.0020.0002] # LAO LETTER PALI TTA +0EC0 0E8F ; [.3265.0020.0002][.3291.0020.0002] # +0EC1 0E8F ; [.3265.0020.0002][.3292.0020.0002] # +0EC2 0E8F ; [.3265.0020.0002][.3293.0020.0002] # +0EC3 0E8F ; [.3265.0020.0002][.3294.0020.0002] # +0EC4 0E8F ; [.3265.0020.0002][.3295.0020.0002] # +0E90 ; [.3266.0020.0002] # LAO LETTER PALI TTHA +0EC0 0E90 ; [.3266.0020.0002][.3291.0020.0002] # +0EC1 0E90 ; [.3266.0020.0002][.3292.0020.0002] # +0EC2 0E90 ; [.3266.0020.0002][.3293.0020.0002] # +0EC3 0E90 ; [.3266.0020.0002][.3294.0020.0002] # +0EC4 0E90 ; [.3266.0020.0002][.3295.0020.0002] # +0E91 ; [.3267.0020.0002] # LAO LETTER PALI DDA +0EC0 0E91 ; [.3267.0020.0002][.3291.0020.0002] # +0EC1 0E91 ; [.3267.0020.0002][.3292.0020.0002] # +0EC2 0E91 ; [.3267.0020.0002][.3293.0020.0002] # +0EC3 0E91 ; [.3267.0020.0002][.3294.0020.0002] # +0EC4 0E91 ; [.3267.0020.0002][.3295.0020.0002] # +0E92 ; [.3268.0020.0002] # LAO LETTER PALI DDHA +0EC0 0E92 ; [.3268.0020.0002][.3291.0020.0002] # +0EC1 0E92 ; [.3268.0020.0002][.3292.0020.0002] # +0EC2 0E92 ; [.3268.0020.0002][.3293.0020.0002] # +0EC3 0E92 ; [.3268.0020.0002][.3294.0020.0002] # +0EC4 0E92 ; [.3268.0020.0002][.3295.0020.0002] # +0E93 ; [.3269.0020.0002] # LAO LETTER PALI NNA +0EC0 0E93 ; [.3269.0020.0002][.3291.0020.0002] # +0EC1 0E93 ; [.3269.0020.0002][.3292.0020.0002] # +0EC2 0E93 ; [.3269.0020.0002][.3293.0020.0002] # +0EC3 0E93 ; [.3269.0020.0002][.3294.0020.0002] # +0EC4 0E93 ; [.3269.0020.0002][.3295.0020.0002] # +0E94 ; [.326A.0020.0002] # LAO LETTER DO +0EC0 0E94 ; [.326A.0020.0002][.3291.0020.0002] # +0EC1 0E94 ; [.326A.0020.0002][.3292.0020.0002] # +0EC2 0E94 ; [.326A.0020.0002][.3293.0020.0002] # +0EC3 0E94 ; [.326A.0020.0002][.3294.0020.0002] # +0EC4 0E94 ; [.326A.0020.0002][.3295.0020.0002] # +0E95 ; [.326B.0020.0002] # LAO LETTER TO +0EC0 0E95 ; [.326B.0020.0002][.3291.0020.0002] # +0EC1 0E95 ; [.326B.0020.0002][.3292.0020.0002] # +0EC2 0E95 ; [.326B.0020.0002][.3293.0020.0002] # +0EC3 0E95 ; [.326B.0020.0002][.3294.0020.0002] # +0EC4 0E95 ; [.326B.0020.0002][.3295.0020.0002] # +0E96 ; [.326C.0020.0002] # LAO LETTER THO SUNG +0EC0 0E96 ; [.326C.0020.0002][.3291.0020.0002] # +0EC1 0E96 ; [.326C.0020.0002][.3292.0020.0002] # +0EC2 0E96 ; [.326C.0020.0002][.3293.0020.0002] # +0EC3 0E96 ; [.326C.0020.0002][.3294.0020.0002] # +0EC4 0E96 ; [.326C.0020.0002][.3295.0020.0002] # +0E97 ; [.326D.0020.0002] # LAO LETTER THO TAM +0EC0 0E97 ; [.326D.0020.0002][.3291.0020.0002] # +0EC1 0E97 ; [.326D.0020.0002][.3292.0020.0002] # +0EC2 0E97 ; [.326D.0020.0002][.3293.0020.0002] # +0EC3 0E97 ; [.326D.0020.0002][.3294.0020.0002] # +0EC4 0E97 ; [.326D.0020.0002][.3295.0020.0002] # +0E98 ; [.326E.0020.0002] # LAO LETTER PALI DHA +0EC0 0E98 ; [.326E.0020.0002][.3291.0020.0002] # +0EC1 0E98 ; [.326E.0020.0002][.3292.0020.0002] # +0EC2 0E98 ; [.326E.0020.0002][.3293.0020.0002] # +0EC3 0E98 ; [.326E.0020.0002][.3294.0020.0002] # +0EC4 0E98 ; [.326E.0020.0002][.3295.0020.0002] # +0E99 ; [.326F.0020.0002] # LAO LETTER NO +0EC0 0E99 ; [.326F.0020.0002][.3291.0020.0002] # +0EC1 0E99 ; [.326F.0020.0002][.3292.0020.0002] # +0EC2 0E99 ; [.326F.0020.0002][.3293.0020.0002] # +0EC3 0E99 ; [.326F.0020.0002][.3294.0020.0002] # +0EC4 0E99 ; [.326F.0020.0002][.3295.0020.0002] # +0E9A ; [.3270.0020.0002] # LAO LETTER BO +0EC0 0E9A ; [.3270.0020.0002][.3291.0020.0002] # +0EC1 0E9A ; [.3270.0020.0002][.3292.0020.0002] # +0EC2 0E9A ; [.3270.0020.0002][.3293.0020.0002] # +0EC3 0E9A ; [.3270.0020.0002][.3294.0020.0002] # +0EC4 0E9A ; [.3270.0020.0002][.3295.0020.0002] # +0E9B ; [.3271.0020.0002] # LAO LETTER PO +0EC0 0E9B ; [.3271.0020.0002][.3291.0020.0002] # +0EC1 0E9B ; [.3271.0020.0002][.3292.0020.0002] # +0EC2 0E9B ; [.3271.0020.0002][.3293.0020.0002] # +0EC3 0E9B ; [.3271.0020.0002][.3294.0020.0002] # +0EC4 0E9B ; [.3271.0020.0002][.3295.0020.0002] # +0E9C ; [.3272.0020.0002] # LAO LETTER PHO SUNG +0EC0 0E9C ; [.3272.0020.0002][.3291.0020.0002] # +0EC1 0E9C ; [.3272.0020.0002][.3292.0020.0002] # +0EC2 0E9C ; [.3272.0020.0002][.3293.0020.0002] # +0EC3 0E9C ; [.3272.0020.0002][.3294.0020.0002] # +0EC4 0E9C ; [.3272.0020.0002][.3295.0020.0002] # +0E9D ; [.3273.0020.0002] # LAO LETTER FO TAM +0EC0 0E9D ; [.3273.0020.0002][.3291.0020.0002] # +0EC1 0E9D ; [.3273.0020.0002][.3292.0020.0002] # +0EC2 0E9D ; [.3273.0020.0002][.3293.0020.0002] # +0EC3 0E9D ; [.3273.0020.0002][.3294.0020.0002] # +0EC4 0E9D ; [.3273.0020.0002][.3295.0020.0002] # +0E9E ; [.3274.0020.0002] # LAO LETTER PHO TAM +0EC0 0E9E ; [.3274.0020.0002][.3291.0020.0002] # +0EC1 0E9E ; [.3274.0020.0002][.3292.0020.0002] # +0EC2 0E9E ; [.3274.0020.0002][.3293.0020.0002] # +0EC3 0E9E ; [.3274.0020.0002][.3294.0020.0002] # +0EC4 0E9E ; [.3274.0020.0002][.3295.0020.0002] # +0E9F ; [.3275.0020.0002] # LAO LETTER FO SUNG +0EC0 0E9F ; [.3275.0020.0002][.3291.0020.0002] # +0EC1 0E9F ; [.3275.0020.0002][.3292.0020.0002] # +0EC2 0E9F ; [.3275.0020.0002][.3293.0020.0002] # +0EC3 0E9F ; [.3275.0020.0002][.3294.0020.0002] # +0EC4 0E9F ; [.3275.0020.0002][.3295.0020.0002] # +0EA0 ; [.3276.0020.0002] # LAO LETTER PALI BHA +0EC0 0EA0 ; [.3276.0020.0002][.3291.0020.0002] # +0EC1 0EA0 ; [.3276.0020.0002][.3292.0020.0002] # +0EC2 0EA0 ; [.3276.0020.0002][.3293.0020.0002] # +0EC3 0EA0 ; [.3276.0020.0002][.3294.0020.0002] # +0EC4 0EA0 ; [.3276.0020.0002][.3295.0020.0002] # +0EA1 ; [.3277.0020.0002] # LAO LETTER MO +0EC0 0EA1 ; [.3277.0020.0002][.3291.0020.0002] # +0EC1 0EA1 ; [.3277.0020.0002][.3292.0020.0002] # +0EC2 0EA1 ; [.3277.0020.0002][.3293.0020.0002] # +0EC3 0EA1 ; [.3277.0020.0002][.3294.0020.0002] # +0EC4 0EA1 ; [.3277.0020.0002][.3295.0020.0002] # +0EA2 ; [.3278.0020.0002] # LAO LETTER YO +0EC0 0EA2 ; [.3278.0020.0002][.3291.0020.0002] # +0EC1 0EA2 ; [.3278.0020.0002][.3292.0020.0002] # +0EC2 0EA2 ; [.3278.0020.0002][.3293.0020.0002] # +0EC3 0EA2 ; [.3278.0020.0002][.3294.0020.0002] # +0EC4 0EA2 ; [.3278.0020.0002][.3295.0020.0002] # +0EA3 ; [.3279.0020.0002] # LAO LETTER LO LING +0EC0 0EA3 ; [.3279.0020.0002][.3291.0020.0002] # +0EC1 0EA3 ; [.3279.0020.0002][.3292.0020.0002] # +0EC2 0EA3 ; [.3279.0020.0002][.3293.0020.0002] # +0EC3 0EA3 ; [.3279.0020.0002][.3294.0020.0002] # +0EC4 0EA3 ; [.3279.0020.0002][.3295.0020.0002] # +0EA5 ; [.327A.0020.0002] # LAO LETTER LO LOOT +0EC0 0EA5 ; [.327A.0020.0002][.3291.0020.0002] # +0EC1 0EA5 ; [.327A.0020.0002][.3292.0020.0002] # +0EC2 0EA5 ; [.327A.0020.0002][.3293.0020.0002] # +0EC3 0EA5 ; [.327A.0020.0002][.3294.0020.0002] # +0EC4 0EA5 ; [.327A.0020.0002][.3295.0020.0002] # +0EA7 ; [.327B.0020.0002] # LAO LETTER WO +0EC0 0EA7 ; [.327B.0020.0002][.3291.0020.0002] # +0EC1 0EA7 ; [.327B.0020.0002][.3292.0020.0002] # +0EC2 0EA7 ; [.327B.0020.0002][.3293.0020.0002] # +0EC3 0EA7 ; [.327B.0020.0002][.3294.0020.0002] # +0EC4 0EA7 ; [.327B.0020.0002][.3295.0020.0002] # +0EA8 ; [.327C.0020.0002] # LAO LETTER SANSKRIT SHA +0EC0 0EA8 ; [.327C.0020.0002][.3291.0020.0002] # +0EC1 0EA8 ; [.327C.0020.0002][.3292.0020.0002] # +0EC2 0EA8 ; [.327C.0020.0002][.3293.0020.0002] # +0EC3 0EA8 ; [.327C.0020.0002][.3294.0020.0002] # +0EC4 0EA8 ; [.327C.0020.0002][.3295.0020.0002] # +0EA9 ; [.327D.0020.0002] # LAO LETTER SANSKRIT SSA +0EC0 0EA9 ; [.327D.0020.0002][.3291.0020.0002] # +0EC1 0EA9 ; [.327D.0020.0002][.3292.0020.0002] # +0EC2 0EA9 ; [.327D.0020.0002][.3293.0020.0002] # +0EC3 0EA9 ; [.327D.0020.0002][.3294.0020.0002] # +0EC4 0EA9 ; [.327D.0020.0002][.3295.0020.0002] # +0EAB ; [.327E.0020.0002] # LAO LETTER HO SUNG +0EDC ; [.327E.0020.0004][.326F.0020.0004] # LAO HO NO +0EC0 0EDC ; [.327E.0020.0004][.326F.0020.0004][.3291.0020.0002] # +0EC1 0EDC ; [.327E.0020.0004][.326F.0020.0004][.3292.0020.0002] # +0EC2 0EDC ; [.327E.0020.0004][.326F.0020.0004][.3293.0020.0002] # +0EC3 0EDC ; [.327E.0020.0004][.326F.0020.0004][.3294.0020.0002] # +0EC4 0EDC ; [.327E.0020.0004][.326F.0020.0004][.3295.0020.0002] # +0EDD ; [.327E.0020.0004][.3277.0020.0004] # LAO HO MO +0EC0 0EDD ; [.327E.0020.0004][.3277.0020.0004][.3291.0020.0002] # +0EC1 0EDD ; [.327E.0020.0004][.3277.0020.0004][.3292.0020.0002] # +0EC2 0EDD ; [.327E.0020.0004][.3277.0020.0004][.3293.0020.0002] # +0EC3 0EDD ; [.327E.0020.0004][.3277.0020.0004][.3294.0020.0002] # +0EC4 0EDD ; [.327E.0020.0004][.3277.0020.0004][.3295.0020.0002] # +0EC0 0EAB ; [.327E.0020.0002][.3291.0020.0002] # +0EC1 0EAB ; [.327E.0020.0002][.3292.0020.0002] # +0EC2 0EAB ; [.327E.0020.0002][.3293.0020.0002] # +0EC3 0EAB ; [.327E.0020.0002][.3294.0020.0002] # +0EC4 0EAB ; [.327E.0020.0002][.3295.0020.0002] # +0EAC ; [.327F.0020.0002] # LAO LETTER PALI LLA +0EC0 0EAC ; [.327F.0020.0002][.3291.0020.0002] # +0EC1 0EAC ; [.327F.0020.0002][.3292.0020.0002] # +0EC2 0EAC ; [.327F.0020.0002][.3293.0020.0002] # +0EC3 0EAC ; [.327F.0020.0002][.3294.0020.0002] # +0EC4 0EAC ; [.327F.0020.0002][.3295.0020.0002] # +0EAD ; [.3280.0020.0002] # LAO LETTER O +0EC0 0EAD ; [.3280.0020.0002][.3291.0020.0002] # +0EC1 0EAD ; [.3280.0020.0002][.3292.0020.0002] # +0EC2 0EAD ; [.3280.0020.0002][.3293.0020.0002] # +0EC3 0EAD ; [.3280.0020.0002][.3294.0020.0002] # +0EC4 0EAD ; [.3280.0020.0002][.3295.0020.0002] # +0EAE ; [.3281.0020.0002] # LAO LETTER HO TAM +0EC0 0EAE ; [.3281.0020.0002][.3291.0020.0002] # +0EC1 0EAE ; [.3281.0020.0002][.3292.0020.0002] # +0EC2 0EAE ; [.3281.0020.0002][.3293.0020.0002] # +0EC3 0EAE ; [.3281.0020.0002][.3294.0020.0002] # +0EC4 0EAE ; [.3281.0020.0002][.3295.0020.0002] # +0EAF ; [.3282.0020.0002] # LAO ELLIPSIS +0EB0 ; [.3283.0020.0002] # LAO VOWEL SIGN A +0EB1 ; [.3284.0020.0002] # LAO VOWEL SIGN MAI KAN +0EB2 ; [.3285.0020.0002] # LAO VOWEL SIGN AA +0EB3 ; [.3286.0020.0002] # LAO VOWEL SIGN AM +0ECD 0EB2 ; [.3286.0020.0002] # LAO VOWEL SIGN AM +0EB4 ; [.3287.0020.0002] # LAO VOWEL SIGN I +0EB5 ; [.3288.0020.0002] # LAO VOWEL SIGN II +0EB6 ; [.3289.0020.0002] # LAO VOWEL SIGN Y +0EB7 ; [.328A.0020.0002] # LAO VOWEL SIGN YY +0EB8 ; [.328B.0020.0002] # LAO VOWEL SIGN U +0EB9 ; [.328C.0020.0002] # LAO VOWEL SIGN UU +0EBA ; [.328D.0020.0002] # LAO SIGN PALI VIRAMA +0EBB ; [.328E.0020.0002] # LAO VOWEL SIGN MAI KON +0EBC ; [.328F.0020.0002] # LAO SEMIVOWEL SIGN LO +0EBD ; [.3290.0020.0002] # LAO SEMIVOWEL SIGN NYO +0EC0 ; [.3291.0020.0002] # LAO VOWEL SIGN E +0EC1 ; [.3292.0020.0002] # LAO VOWEL SIGN EI +0EC2 ; [.3293.0020.0002] # LAO VOWEL SIGN O +0EC3 ; [.3294.0020.0002] # LAO VOWEL SIGN AY +0EC4 ; [.3295.0020.0002] # LAO VOWEL SIGN AI +AA80 ; [.3296.0020.0002] # TAI VIET LETTER LOW KO +AAB5 AA80 ; [.3296.0020.0002][.32CB.0020.0002] # +AAB6 AA80 ; [.3296.0020.0002][.32CC.0020.0002] # +AAB9 AA80 ; [.3296.0020.0002][.32CF.0020.0002] # +AABB AA80 ; [.3296.0020.0002][.32D1.0020.0002] # +AABC AA80 ; [.3296.0020.0002][.32D2.0020.0002] # +AA81 ; [.3297.0020.0002] # TAI VIET LETTER HIGH KO +AAB5 AA81 ; [.3297.0020.0002][.32CB.0020.0002] # +AAB6 AA81 ; [.3297.0020.0002][.32CC.0020.0002] # +AAB9 AA81 ; [.3297.0020.0002][.32CF.0020.0002] # +AABB AA81 ; [.3297.0020.0002][.32D1.0020.0002] # +AABC AA81 ; [.3297.0020.0002][.32D2.0020.0002] # +AA82 ; [.3298.0020.0002] # TAI VIET LETTER LOW KHO +AAB5 AA82 ; [.3298.0020.0002][.32CB.0020.0002] # +AAB6 AA82 ; [.3298.0020.0002][.32CC.0020.0002] # +AAB9 AA82 ; [.3298.0020.0002][.32CF.0020.0002] # +AABB AA82 ; [.3298.0020.0002][.32D1.0020.0002] # +AABC AA82 ; [.3298.0020.0002][.32D2.0020.0002] # +AA83 ; [.3299.0020.0002] # TAI VIET LETTER HIGH KHO +AAB5 AA83 ; [.3299.0020.0002][.32CB.0020.0002] # +AAB6 AA83 ; [.3299.0020.0002][.32CC.0020.0002] # +AAB9 AA83 ; [.3299.0020.0002][.32CF.0020.0002] # +AABB AA83 ; [.3299.0020.0002][.32D1.0020.0002] # +AABC AA83 ; [.3299.0020.0002][.32D2.0020.0002] # +AA84 ; [.329A.0020.0002] # TAI VIET LETTER LOW KHHO +AAB5 AA84 ; [.329A.0020.0002][.32CB.0020.0002] # +AAB6 AA84 ; [.329A.0020.0002][.32CC.0020.0002] # +AAB9 AA84 ; [.329A.0020.0002][.32CF.0020.0002] # +AABB AA84 ; [.329A.0020.0002][.32D1.0020.0002] # +AABC AA84 ; [.329A.0020.0002][.32D2.0020.0002] # +AA85 ; [.329B.0020.0002] # TAI VIET LETTER HIGH KHHO +AAB5 AA85 ; [.329B.0020.0002][.32CB.0020.0002] # +AAB6 AA85 ; [.329B.0020.0002][.32CC.0020.0002] # +AAB9 AA85 ; [.329B.0020.0002][.32CF.0020.0002] # +AABB AA85 ; [.329B.0020.0002][.32D1.0020.0002] # +AABC AA85 ; [.329B.0020.0002][.32D2.0020.0002] # +AA86 ; [.329C.0020.0002] # TAI VIET LETTER LOW GO +AAB5 AA86 ; [.329C.0020.0002][.32CB.0020.0002] # +AAB6 AA86 ; [.329C.0020.0002][.32CC.0020.0002] # +AAB9 AA86 ; [.329C.0020.0002][.32CF.0020.0002] # +AABB AA86 ; [.329C.0020.0002][.32D1.0020.0002] # +AABC AA86 ; [.329C.0020.0002][.32D2.0020.0002] # +AA87 ; [.329D.0020.0002] # TAI VIET LETTER HIGH GO +AAB5 AA87 ; [.329D.0020.0002][.32CB.0020.0002] # +AAB6 AA87 ; [.329D.0020.0002][.32CC.0020.0002] # +AAB9 AA87 ; [.329D.0020.0002][.32CF.0020.0002] # +AABB AA87 ; [.329D.0020.0002][.32D1.0020.0002] # +AABC AA87 ; [.329D.0020.0002][.32D2.0020.0002] # +AA88 ; [.329E.0020.0002] # TAI VIET LETTER LOW NGO +AAB5 AA88 ; [.329E.0020.0002][.32CB.0020.0002] # +AAB6 AA88 ; [.329E.0020.0002][.32CC.0020.0002] # +AAB9 AA88 ; [.329E.0020.0002][.32CF.0020.0002] # +AABB AA88 ; [.329E.0020.0002][.32D1.0020.0002] # +AABC AA88 ; [.329E.0020.0002][.32D2.0020.0002] # +AA89 ; [.329F.0020.0002] # TAI VIET LETTER HIGH NGO +AAB5 AA89 ; [.329F.0020.0002][.32CB.0020.0002] # +AAB6 AA89 ; [.329F.0020.0002][.32CC.0020.0002] # +AAB9 AA89 ; [.329F.0020.0002][.32CF.0020.0002] # +AABB AA89 ; [.329F.0020.0002][.32D1.0020.0002] # +AABC AA89 ; [.329F.0020.0002][.32D2.0020.0002] # +AA8A ; [.32A0.0020.0002] # TAI VIET LETTER LOW CO +AAB5 AA8A ; [.32A0.0020.0002][.32CB.0020.0002] # +AAB6 AA8A ; [.32A0.0020.0002][.32CC.0020.0002] # +AAB9 AA8A ; [.32A0.0020.0002][.32CF.0020.0002] # +AABB AA8A ; [.32A0.0020.0002][.32D1.0020.0002] # +AABC AA8A ; [.32A0.0020.0002][.32D2.0020.0002] # +AA8B ; [.32A1.0020.0002] # TAI VIET LETTER HIGH CO +AAB5 AA8B ; [.32A1.0020.0002][.32CB.0020.0002] # +AAB6 AA8B ; [.32A1.0020.0002][.32CC.0020.0002] # +AAB9 AA8B ; [.32A1.0020.0002][.32CF.0020.0002] # +AABB AA8B ; [.32A1.0020.0002][.32D1.0020.0002] # +AABC AA8B ; [.32A1.0020.0002][.32D2.0020.0002] # +AA8C ; [.32A2.0020.0002] # TAI VIET LETTER LOW CHO +AAB5 AA8C ; [.32A2.0020.0002][.32CB.0020.0002] # +AAB6 AA8C ; [.32A2.0020.0002][.32CC.0020.0002] # +AAB9 AA8C ; [.32A2.0020.0002][.32CF.0020.0002] # +AABB AA8C ; [.32A2.0020.0002][.32D1.0020.0002] # +AABC AA8C ; [.32A2.0020.0002][.32D2.0020.0002] # +AA8D ; [.32A3.0020.0002] # TAI VIET LETTER HIGH CHO +AAB5 AA8D ; [.32A3.0020.0002][.32CB.0020.0002] # +AAB6 AA8D ; [.32A3.0020.0002][.32CC.0020.0002] # +AAB9 AA8D ; [.32A3.0020.0002][.32CF.0020.0002] # +AABB AA8D ; [.32A3.0020.0002][.32D1.0020.0002] # +AABC AA8D ; [.32A3.0020.0002][.32D2.0020.0002] # +AA8E ; [.32A4.0020.0002] # TAI VIET LETTER LOW SO +AAB5 AA8E ; [.32A4.0020.0002][.32CB.0020.0002] # +AAB6 AA8E ; [.32A4.0020.0002][.32CC.0020.0002] # +AAB9 AA8E ; [.32A4.0020.0002][.32CF.0020.0002] # +AABB AA8E ; [.32A4.0020.0002][.32D1.0020.0002] # +AABC AA8E ; [.32A4.0020.0002][.32D2.0020.0002] # +AA8F ; [.32A5.0020.0002] # TAI VIET LETTER HIGH SO +AAB5 AA8F ; [.32A5.0020.0002][.32CB.0020.0002] # +AAB6 AA8F ; [.32A5.0020.0002][.32CC.0020.0002] # +AAB9 AA8F ; [.32A5.0020.0002][.32CF.0020.0002] # +AABB AA8F ; [.32A5.0020.0002][.32D1.0020.0002] # +AABC AA8F ; [.32A5.0020.0002][.32D2.0020.0002] # +AA90 ; [.32A6.0020.0002] # TAI VIET LETTER LOW NYO +AAB5 AA90 ; [.32A6.0020.0002][.32CB.0020.0002] # +AAB6 AA90 ; [.32A6.0020.0002][.32CC.0020.0002] # +AAB9 AA90 ; [.32A6.0020.0002][.32CF.0020.0002] # +AABB AA90 ; [.32A6.0020.0002][.32D1.0020.0002] # +AABC AA90 ; [.32A6.0020.0002][.32D2.0020.0002] # +AA91 ; [.32A7.0020.0002] # TAI VIET LETTER HIGH NYO +AAB5 AA91 ; [.32A7.0020.0002][.32CB.0020.0002] # +AAB6 AA91 ; [.32A7.0020.0002][.32CC.0020.0002] # +AAB9 AA91 ; [.32A7.0020.0002][.32CF.0020.0002] # +AABB AA91 ; [.32A7.0020.0002][.32D1.0020.0002] # +AABC AA91 ; [.32A7.0020.0002][.32D2.0020.0002] # +AA92 ; [.32A8.0020.0002] # TAI VIET LETTER LOW DO +AAB5 AA92 ; [.32A8.0020.0002][.32CB.0020.0002] # +AAB6 AA92 ; [.32A8.0020.0002][.32CC.0020.0002] # +AAB9 AA92 ; [.32A8.0020.0002][.32CF.0020.0002] # +AABB AA92 ; [.32A8.0020.0002][.32D1.0020.0002] # +AABC AA92 ; [.32A8.0020.0002][.32D2.0020.0002] # +AA93 ; [.32A9.0020.0002] # TAI VIET LETTER HIGH DO +AAB5 AA93 ; [.32A9.0020.0002][.32CB.0020.0002] # +AAB6 AA93 ; [.32A9.0020.0002][.32CC.0020.0002] # +AAB9 AA93 ; [.32A9.0020.0002][.32CF.0020.0002] # +AABB AA93 ; [.32A9.0020.0002][.32D1.0020.0002] # +AABC AA93 ; [.32A9.0020.0002][.32D2.0020.0002] # +AA94 ; [.32AA.0020.0002] # TAI VIET LETTER LOW TO +AAB5 AA94 ; [.32AA.0020.0002][.32CB.0020.0002] # +AAB6 AA94 ; [.32AA.0020.0002][.32CC.0020.0002] # +AAB9 AA94 ; [.32AA.0020.0002][.32CF.0020.0002] # +AABB AA94 ; [.32AA.0020.0002][.32D1.0020.0002] # +AABC AA94 ; [.32AA.0020.0002][.32D2.0020.0002] # +AA95 ; [.32AB.0020.0002] # TAI VIET LETTER HIGH TO +AAB5 AA95 ; [.32AB.0020.0002][.32CB.0020.0002] # +AAB6 AA95 ; [.32AB.0020.0002][.32CC.0020.0002] # +AAB9 AA95 ; [.32AB.0020.0002][.32CF.0020.0002] # +AABB AA95 ; [.32AB.0020.0002][.32D1.0020.0002] # +AABC AA95 ; [.32AB.0020.0002][.32D2.0020.0002] # +AA96 ; [.32AC.0020.0002] # TAI VIET LETTER LOW THO +AAB5 AA96 ; [.32AC.0020.0002][.32CB.0020.0002] # +AAB6 AA96 ; [.32AC.0020.0002][.32CC.0020.0002] # +AAB9 AA96 ; [.32AC.0020.0002][.32CF.0020.0002] # +AABB AA96 ; [.32AC.0020.0002][.32D1.0020.0002] # +AABC AA96 ; [.32AC.0020.0002][.32D2.0020.0002] # +AA97 ; [.32AD.0020.0002] # TAI VIET LETTER HIGH THO +AAB5 AA97 ; [.32AD.0020.0002][.32CB.0020.0002] # +AAB6 AA97 ; [.32AD.0020.0002][.32CC.0020.0002] # +AAB9 AA97 ; [.32AD.0020.0002][.32CF.0020.0002] # +AABB AA97 ; [.32AD.0020.0002][.32D1.0020.0002] # +AABC AA97 ; [.32AD.0020.0002][.32D2.0020.0002] # +AA98 ; [.32AE.0020.0002] # TAI VIET LETTER LOW NO +AAB5 AA98 ; [.32AE.0020.0002][.32CB.0020.0002] # +AAB6 AA98 ; [.32AE.0020.0002][.32CC.0020.0002] # +AAB9 AA98 ; [.32AE.0020.0002][.32CF.0020.0002] # +AABB AA98 ; [.32AE.0020.0002][.32D1.0020.0002] # +AABC AA98 ; [.32AE.0020.0002][.32D2.0020.0002] # +AA99 ; [.32AF.0020.0002] # TAI VIET LETTER HIGH NO +AAB5 AA99 ; [.32AF.0020.0002][.32CB.0020.0002] # +AAB6 AA99 ; [.32AF.0020.0002][.32CC.0020.0002] # +AAB9 AA99 ; [.32AF.0020.0002][.32CF.0020.0002] # +AABB AA99 ; [.32AF.0020.0002][.32D1.0020.0002] # +AABC AA99 ; [.32AF.0020.0002][.32D2.0020.0002] # +AA9A ; [.32B0.0020.0002] # TAI VIET LETTER LOW BO +AAB5 AA9A ; [.32B0.0020.0002][.32CB.0020.0002] # +AAB6 AA9A ; [.32B0.0020.0002][.32CC.0020.0002] # +AAB9 AA9A ; [.32B0.0020.0002][.32CF.0020.0002] # +AABB AA9A ; [.32B0.0020.0002][.32D1.0020.0002] # +AABC AA9A ; [.32B0.0020.0002][.32D2.0020.0002] # +AA9B ; [.32B1.0020.0002] # TAI VIET LETTER HIGH BO +AAB5 AA9B ; [.32B1.0020.0002][.32CB.0020.0002] # +AAB6 AA9B ; [.32B1.0020.0002][.32CC.0020.0002] # +AAB9 AA9B ; [.32B1.0020.0002][.32CF.0020.0002] # +AABB AA9B ; [.32B1.0020.0002][.32D1.0020.0002] # +AABC AA9B ; [.32B1.0020.0002][.32D2.0020.0002] # +AA9C ; [.32B2.0020.0002] # TAI VIET LETTER LOW PO +AAB5 AA9C ; [.32B2.0020.0002][.32CB.0020.0002] # +AAB6 AA9C ; [.32B2.0020.0002][.32CC.0020.0002] # +AAB9 AA9C ; [.32B2.0020.0002][.32CF.0020.0002] # +AABB AA9C ; [.32B2.0020.0002][.32D1.0020.0002] # +AABC AA9C ; [.32B2.0020.0002][.32D2.0020.0002] # +AA9D ; [.32B3.0020.0002] # TAI VIET LETTER HIGH PO +AAB5 AA9D ; [.32B3.0020.0002][.32CB.0020.0002] # +AAB6 AA9D ; [.32B3.0020.0002][.32CC.0020.0002] # +AAB9 AA9D ; [.32B3.0020.0002][.32CF.0020.0002] # +AABB AA9D ; [.32B3.0020.0002][.32D1.0020.0002] # +AABC AA9D ; [.32B3.0020.0002][.32D2.0020.0002] # +AA9E ; [.32B4.0020.0002] # TAI VIET LETTER LOW PHO +AAB5 AA9E ; [.32B4.0020.0002][.32CB.0020.0002] # +AAB6 AA9E ; [.32B4.0020.0002][.32CC.0020.0002] # +AAB9 AA9E ; [.32B4.0020.0002][.32CF.0020.0002] # +AABB AA9E ; [.32B4.0020.0002][.32D1.0020.0002] # +AABC AA9E ; [.32B4.0020.0002][.32D2.0020.0002] # +AA9F ; [.32B5.0020.0002] # TAI VIET LETTER HIGH PHO +AAB5 AA9F ; [.32B5.0020.0002][.32CB.0020.0002] # +AAB6 AA9F ; [.32B5.0020.0002][.32CC.0020.0002] # +AAB9 AA9F ; [.32B5.0020.0002][.32CF.0020.0002] # +AABB AA9F ; [.32B5.0020.0002][.32D1.0020.0002] # +AABC AA9F ; [.32B5.0020.0002][.32D2.0020.0002] # +AAA0 ; [.32B6.0020.0002] # TAI VIET LETTER LOW FO +AAB5 AAA0 ; [.32B6.0020.0002][.32CB.0020.0002] # +AAB6 AAA0 ; [.32B6.0020.0002][.32CC.0020.0002] # +AAB9 AAA0 ; [.32B6.0020.0002][.32CF.0020.0002] # +AABB AAA0 ; [.32B6.0020.0002][.32D1.0020.0002] # +AABC AAA0 ; [.32B6.0020.0002][.32D2.0020.0002] # +AAA1 ; [.32B7.0020.0002] # TAI VIET LETTER HIGH FO +AAB5 AAA1 ; [.32B7.0020.0002][.32CB.0020.0002] # +AAB6 AAA1 ; [.32B7.0020.0002][.32CC.0020.0002] # +AAB9 AAA1 ; [.32B7.0020.0002][.32CF.0020.0002] # +AABB AAA1 ; [.32B7.0020.0002][.32D1.0020.0002] # +AABC AAA1 ; [.32B7.0020.0002][.32D2.0020.0002] # +AAA2 ; [.32B8.0020.0002] # TAI VIET LETTER LOW MO +AAB5 AAA2 ; [.32B8.0020.0002][.32CB.0020.0002] # +AAB6 AAA2 ; [.32B8.0020.0002][.32CC.0020.0002] # +AAB9 AAA2 ; [.32B8.0020.0002][.32CF.0020.0002] # +AABB AAA2 ; [.32B8.0020.0002][.32D1.0020.0002] # +AABC AAA2 ; [.32B8.0020.0002][.32D2.0020.0002] # +AAA3 ; [.32B9.0020.0002] # TAI VIET LETTER HIGH MO +AAB5 AAA3 ; [.32B9.0020.0002][.32CB.0020.0002] # +AAB6 AAA3 ; [.32B9.0020.0002][.32CC.0020.0002] # +AAB9 AAA3 ; [.32B9.0020.0002][.32CF.0020.0002] # +AABB AAA3 ; [.32B9.0020.0002][.32D1.0020.0002] # +AABC AAA3 ; [.32B9.0020.0002][.32D2.0020.0002] # +AAA4 ; [.32BA.0020.0002] # TAI VIET LETTER LOW YO +AAB5 AAA4 ; [.32BA.0020.0002][.32CB.0020.0002] # +AAB6 AAA4 ; [.32BA.0020.0002][.32CC.0020.0002] # +AAB9 AAA4 ; [.32BA.0020.0002][.32CF.0020.0002] # +AABB AAA4 ; [.32BA.0020.0002][.32D1.0020.0002] # +AABC AAA4 ; [.32BA.0020.0002][.32D2.0020.0002] # +AAA5 ; [.32BB.0020.0002] # TAI VIET LETTER HIGH YO +AAB5 AAA5 ; [.32BB.0020.0002][.32CB.0020.0002] # +AAB6 AAA5 ; [.32BB.0020.0002][.32CC.0020.0002] # +AAB9 AAA5 ; [.32BB.0020.0002][.32CF.0020.0002] # +AABB AAA5 ; [.32BB.0020.0002][.32D1.0020.0002] # +AABC AAA5 ; [.32BB.0020.0002][.32D2.0020.0002] # +AAA6 ; [.32BC.0020.0002] # TAI VIET LETTER LOW RO +AAB5 AAA6 ; [.32BC.0020.0002][.32CB.0020.0002] # +AAB6 AAA6 ; [.32BC.0020.0002][.32CC.0020.0002] # +AAB9 AAA6 ; [.32BC.0020.0002][.32CF.0020.0002] # +AABB AAA6 ; [.32BC.0020.0002][.32D1.0020.0002] # +AABC AAA6 ; [.32BC.0020.0002][.32D2.0020.0002] # +AAA7 ; [.32BD.0020.0002] # TAI VIET LETTER HIGH RO +AAB5 AAA7 ; [.32BD.0020.0002][.32CB.0020.0002] # +AAB6 AAA7 ; [.32BD.0020.0002][.32CC.0020.0002] # +AAB9 AAA7 ; [.32BD.0020.0002][.32CF.0020.0002] # +AABB AAA7 ; [.32BD.0020.0002][.32D1.0020.0002] # +AABC AAA7 ; [.32BD.0020.0002][.32D2.0020.0002] # +AAA8 ; [.32BE.0020.0002] # TAI VIET LETTER LOW LO +AAB5 AAA8 ; [.32BE.0020.0002][.32CB.0020.0002] # +AAB6 AAA8 ; [.32BE.0020.0002][.32CC.0020.0002] # +AAB9 AAA8 ; [.32BE.0020.0002][.32CF.0020.0002] # +AABB AAA8 ; [.32BE.0020.0002][.32D1.0020.0002] # +AABC AAA8 ; [.32BE.0020.0002][.32D2.0020.0002] # +AAA9 ; [.32BF.0020.0002] # TAI VIET LETTER HIGH LO +AAB5 AAA9 ; [.32BF.0020.0002][.32CB.0020.0002] # +AAB6 AAA9 ; [.32BF.0020.0002][.32CC.0020.0002] # +AAB9 AAA9 ; [.32BF.0020.0002][.32CF.0020.0002] # +AABB AAA9 ; [.32BF.0020.0002][.32D1.0020.0002] # +AABC AAA9 ; [.32BF.0020.0002][.32D2.0020.0002] # +AAAA ; [.32C0.0020.0002] # TAI VIET LETTER LOW VO +AAB5 AAAA ; [.32C0.0020.0002][.32CB.0020.0002] # +AAB6 AAAA ; [.32C0.0020.0002][.32CC.0020.0002] # +AAB9 AAAA ; [.32C0.0020.0002][.32CF.0020.0002] # +AABB AAAA ; [.32C0.0020.0002][.32D1.0020.0002] # +AABC AAAA ; [.32C0.0020.0002][.32D2.0020.0002] # +AAAB ; [.32C1.0020.0002] # TAI VIET LETTER HIGH VO +AAB5 AAAB ; [.32C1.0020.0002][.32CB.0020.0002] # +AAB6 AAAB ; [.32C1.0020.0002][.32CC.0020.0002] # +AAB9 AAAB ; [.32C1.0020.0002][.32CF.0020.0002] # +AABB AAAB ; [.32C1.0020.0002][.32D1.0020.0002] # +AABC AAAB ; [.32C1.0020.0002][.32D2.0020.0002] # +AAAC ; [.32C2.0020.0002] # TAI VIET LETTER LOW HO +AAB5 AAAC ; [.32C2.0020.0002][.32CB.0020.0002] # +AAB6 AAAC ; [.32C2.0020.0002][.32CC.0020.0002] # +AAB9 AAAC ; [.32C2.0020.0002][.32CF.0020.0002] # +AABB AAAC ; [.32C2.0020.0002][.32D1.0020.0002] # +AABC AAAC ; [.32C2.0020.0002][.32D2.0020.0002] # +AAAD ; [.32C3.0020.0002] # TAI VIET LETTER HIGH HO +AAB5 AAAD ; [.32C3.0020.0002][.32CB.0020.0002] # +AAB6 AAAD ; [.32C3.0020.0002][.32CC.0020.0002] # +AAB9 AAAD ; [.32C3.0020.0002][.32CF.0020.0002] # +AABB AAAD ; [.32C3.0020.0002][.32D1.0020.0002] # +AABC AAAD ; [.32C3.0020.0002][.32D2.0020.0002] # +AAAE ; [.32C4.0020.0002] # TAI VIET LETTER LOW O +AAB5 AAAE ; [.32C4.0020.0002][.32CB.0020.0002] # +AAB6 AAAE ; [.32C4.0020.0002][.32CC.0020.0002] # +AAB9 AAAE ; [.32C4.0020.0002][.32CF.0020.0002] # +AABB AAAE ; [.32C4.0020.0002][.32D1.0020.0002] # +AABC AAAE ; [.32C4.0020.0002][.32D2.0020.0002] # +AAAF ; [.32C5.0020.0002] # TAI VIET LETTER HIGH O +AAB5 AAAF ; [.32C5.0020.0002][.32CB.0020.0002] # +AAB6 AAAF ; [.32C5.0020.0002][.32CC.0020.0002] # +AAB9 AAAF ; [.32C5.0020.0002][.32CF.0020.0002] # +AABB AAAF ; [.32C5.0020.0002][.32D1.0020.0002] # +AABC AAAF ; [.32C5.0020.0002][.32D2.0020.0002] # +AAB0 ; [.32C6.0020.0002] # TAI VIET MAI KANG +AAB1 ; [.32C7.0020.0002] # TAI VIET VOWEL AA +AAB2 ; [.32C8.0020.0002] # TAI VIET VOWEL I +AAB3 ; [.32C9.0020.0002] # TAI VIET VOWEL UE +AAB4 ; [.32CA.0020.0002] # TAI VIET VOWEL U +AAB5 ; [.32CB.0020.0002] # TAI VIET VOWEL E +AAB6 ; [.32CC.0020.0002] # TAI VIET VOWEL O +AAB7 ; [.32CD.0020.0002] # TAI VIET MAI KHIT +AAB8 ; [.32CE.0020.0002] # TAI VIET VOWEL IA +AAB9 ; [.32CF.0020.0002] # TAI VIET VOWEL UEA +AABA ; [.32D0.0020.0002] # TAI VIET VOWEL UA +AABB ; [.32D1.0020.0002] # TAI VIET VOWEL AUE +AABC ; [.32D2.0020.0002] # TAI VIET VOWEL AY +AABD ; [.32D3.0020.0002] # TAI VIET VOWEL AN +AABE ; [.32D4.0020.0002] # TAI VIET VOWEL AM +AAC0 ; [.32D5.0020.0002] # TAI VIET TONE MAI NUENG +AAC2 ; [.32D6.0020.0002] # TAI VIET TONE MAI SONG +AADB ; [.32D7.0020.0002] # TAI VIET SYMBOL KON +AADC ; [.32D8.0020.0002] # TAI VIET SYMBOL NUENG +0F40 ; [.32D9.0020.0002] # TIBETAN LETTER KA +0F69 ; [.32D9.0020.0002][.331A.0020.0002] # TIBETAN LETTER KSSA +0F90 ; [.32DA.0020.0002] # TIBETAN SUBJOINED LETTER KA +0FB9 ; [.32DA.0020.0002][.331A.0020.0002] # TIBETAN SUBJOINED LETTER KSSA +0F6B ; [.32DB.0020.0002] # TIBETAN LETTER KKA +0F41 ; [.32DC.0020.0002] # TIBETAN LETTER KHA +0F91 ; [.32DD.0020.0002] # TIBETAN SUBJOINED LETTER KHA +0F42 ; [.32DE.0020.0002] # TIBETAN LETTER GA +0F43 ; [.32DE.0020.0002][.331E.0020.0002] # TIBETAN LETTER GHA +0F92 ; [.32DF.0020.0002] # TIBETAN SUBJOINED LETTER GA +0F93 ; [.32DF.0020.0002][.331E.0020.0002] # TIBETAN SUBJOINED LETTER GHA +0F44 ; [.32E0.0020.0002] # TIBETAN LETTER NGA +0F94 ; [.32E1.0020.0002] # TIBETAN SUBJOINED LETTER NGA +0F45 ; [.32E2.0020.0002] # TIBETAN LETTER CA +0F95 ; [.32E3.0020.0002] # TIBETAN SUBJOINED LETTER CA +0F46 ; [.32E4.0020.0002] # TIBETAN LETTER CHA +0F96 ; [.32E5.0020.0002] # TIBETAN SUBJOINED LETTER CHA +0F47 ; [.32E6.0020.0002] # TIBETAN LETTER JA +0F97 ; [.32E7.0020.0002] # TIBETAN SUBJOINED LETTER JA +0F49 ; [.32E8.0020.0002] # TIBETAN LETTER NYA +0F99 ; [.32E9.0020.0002] # TIBETAN SUBJOINED LETTER NYA +0F4A ; [.32EA.0020.0002] # TIBETAN LETTER TTA +0F9A ; [.32EB.0020.0002] # TIBETAN SUBJOINED LETTER TTA +0F4B ; [.32EC.0020.0002] # TIBETAN LETTER TTHA +0F9B ; [.32ED.0020.0002] # TIBETAN SUBJOINED LETTER TTHA +0F4C ; [.32EE.0020.0002] # TIBETAN LETTER DDA +0F4D ; [.32EE.0020.0002][.331E.0020.0002] # TIBETAN LETTER DDHA +0F9C ; [.32EF.0020.0002] # TIBETAN SUBJOINED LETTER DDA +0F9D ; [.32EF.0020.0002][.331E.0020.0002] # TIBETAN SUBJOINED LETTER DDHA +0F4E ; [.32F0.0020.0002] # TIBETAN LETTER NNA +0F9E ; [.32F1.0020.0002] # TIBETAN SUBJOINED LETTER NNA +0F4F ; [.32F2.0020.0002] # TIBETAN LETTER TA +0F9F ; [.32F3.0020.0002] # TIBETAN SUBJOINED LETTER TA +0F50 ; [.32F4.0020.0002] # TIBETAN LETTER THA +0FA0 ; [.32F5.0020.0002] # TIBETAN SUBJOINED LETTER THA +0F51 ; [.32F6.0020.0002] # TIBETAN LETTER DA +0F52 ; [.32F6.0020.0002][.331E.0020.0002] # TIBETAN LETTER DHA +0FA1 ; [.32F7.0020.0002] # TIBETAN SUBJOINED LETTER DA +0FA2 ; [.32F7.0020.0002][.331E.0020.0002] # TIBETAN SUBJOINED LETTER DHA +0F53 ; [.32F8.0020.0002] # TIBETAN LETTER NA +0FA3 ; [.32F9.0020.0002] # TIBETAN SUBJOINED LETTER NA +0F54 ; [.32FA.0020.0002] # TIBETAN LETTER PA +0FA4 ; [.32FB.0020.0002] # TIBETAN SUBJOINED LETTER PA +0F55 ; [.32FC.0020.0002] # TIBETAN LETTER PHA +0FA5 ; [.32FD.0020.0002] # TIBETAN SUBJOINED LETTER PHA +0F56 ; [.32FE.0020.0002] # TIBETAN LETTER BA +0F57 ; [.32FE.0020.0002][.331E.0020.0002] # TIBETAN LETTER BHA +0FA6 ; [.32FF.0020.0002] # TIBETAN SUBJOINED LETTER BA +0FA7 ; [.32FF.0020.0002][.331E.0020.0002] # TIBETAN SUBJOINED LETTER BHA +0F58 ; [.3300.0020.0002] # TIBETAN LETTER MA +0FA8 ; [.3301.0020.0002] # TIBETAN SUBJOINED LETTER MA +0F59 ; [.3302.0020.0002] # TIBETAN LETTER TSA +0FA9 ; [.3303.0020.0002] # TIBETAN SUBJOINED LETTER TSA +0F5A ; [.3304.0020.0002] # TIBETAN LETTER TSHA +0FAA ; [.3305.0020.0002] # TIBETAN SUBJOINED LETTER TSHA +0F5B ; [.3306.0020.0002] # TIBETAN LETTER DZA +0F5C ; [.3306.0020.0002][.331E.0020.0002] # TIBETAN LETTER DZHA +0FAB ; [.3307.0020.0002] # TIBETAN SUBJOINED LETTER DZA +0FAC ; [.3307.0020.0002][.331E.0020.0002] # TIBETAN SUBJOINED LETTER DZHA +0F5D ; [.3308.0020.0002] # TIBETAN LETTER WA +0FAD ; [.3309.0020.0002] # TIBETAN SUBJOINED LETTER WA +0FBA ; [.3309.0020.0004][.0000.0119.0004] # TIBETAN SUBJOINED LETTER FIXED-FORM WA +0F5E ; [.330A.0020.0002] # TIBETAN LETTER ZHA +0FAE ; [.330B.0020.0002] # TIBETAN SUBJOINED LETTER ZHA +0F5F ; [.330C.0020.0002] # TIBETAN LETTER ZA +0FAF ; [.330D.0020.0002] # TIBETAN SUBJOINED LETTER ZA +0F60 ; [.330E.0020.0002] # TIBETAN LETTER -A +0FB0 ; [.330F.0020.0002] # TIBETAN SUBJOINED LETTER -A +0F61 ; [.3310.0020.0002] # TIBETAN LETTER YA +0FB1 ; [.3311.0020.0002] # TIBETAN SUBJOINED LETTER YA +0FBB ; [.3311.0020.0004][.0000.0119.0004] # TIBETAN SUBJOINED LETTER FIXED-FORM YA +0F62 ; [.3312.0020.0002] # TIBETAN LETTER RA +0F6A ; [.3312.0020.0004][.0000.0119.0004] # TIBETAN LETTER FIXED-FORM RA +0FB2 ; [.3313.0020.0002] # TIBETAN SUBJOINED LETTER RA +0FBC ; [.3313.0020.0004][.0000.0119.0004] # TIBETAN SUBJOINED LETTER FIXED-FORM RA +0F6C ; [.3314.0020.0002] # TIBETAN LETTER RRA +0F63 ; [.3315.0020.0002] # TIBETAN LETTER LA +0FB3 ; [.3316.0020.0002] # TIBETAN SUBJOINED LETTER LA +0F64 ; [.3317.0020.0002] # TIBETAN LETTER SHA +0FB4 ; [.3318.0020.0002] # TIBETAN SUBJOINED LETTER SHA +0F65 ; [.3319.0020.0002] # TIBETAN LETTER SSA +0FB5 ; [.331A.0020.0002] # TIBETAN SUBJOINED LETTER SSA +0F66 ; [.331B.0020.0002] # TIBETAN LETTER SA +0FB6 ; [.331C.0020.0002] # TIBETAN SUBJOINED LETTER SA +0F67 ; [.331D.0020.0002] # TIBETAN LETTER HA +0FB7 ; [.331E.0020.0002] # TIBETAN SUBJOINED LETTER HA +0F68 ; [.331F.0020.0002] # TIBETAN LETTER A +0F00 ; [.331F.0020.0004][.3336.0020.0004][.0000.00C4.0004] # TIBETAN SYLLABLE OM +0FB8 ; [.3320.0020.0002] # TIBETAN SUBJOINED LETTER A +0F88 ; [.3321.0020.0002] # TIBETAN SIGN LCE TSA CAN +0F8D ; [.3322.0020.0002] # TIBETAN SUBJOINED SIGN LCE TSA CAN +0F89 ; [.3323.0020.0002] # TIBETAN SIGN MCHU CAN +0F8E ; [.3324.0020.0002] # TIBETAN SUBJOINED SIGN MCHU CAN +0F8C ; [.3325.0020.0002] # TIBETAN SIGN INVERTED MCHU CAN +0F8F ; [.3326.0020.0002] # TIBETAN SUBJOINED SIGN INVERTED MCHU CAN +0F8A ; [.3327.0020.0002] # TIBETAN SIGN GRU CAN RGYINGS +0F8B ; [.3328.0020.0002] # TIBETAN SIGN GRU MED RGYINGS +0F71 ; [.3329.0020.0002] # TIBETAN VOWEL SIGN AA +0F72 ; [.332A.0020.0002] # TIBETAN VOWEL SIGN I +0F73 ; [.332B.0020.0002] # TIBETAN VOWEL SIGN II +0F71 0F72 ; [.332B.0020.0002] # TIBETAN VOWEL SIGN II +0F80 ; [.332C.0020.0002] # TIBETAN VOWEL SIGN REVERSED I +0F81 ; [.332D.0020.0002] # TIBETAN VOWEL SIGN REVERSED II +0F71 0F80 ; [.332D.0020.0002] # TIBETAN VOWEL SIGN REVERSED II +0F74 ; [.332E.0020.0002] # TIBETAN VOWEL SIGN U +0F75 ; [.332F.0020.0002] # TIBETAN VOWEL SIGN UU +0F71 0F74 ; [.332F.0020.0002] # TIBETAN VOWEL SIGN UU +0F76 ; [.3330.0020.0002] # TIBETAN VOWEL SIGN VOCALIC R +0FB2 0F80 ; [.3330.0020.0002] # TIBETAN VOWEL SIGN VOCALIC R +0F77 ; [.3331.0020.0002] # TIBETAN VOWEL SIGN VOCALIC RR +0FB2 0F71 0F80 ; [.3331.0020.0002] # TIBETAN VOWEL SIGN VOCALIC RR +0FB2 0F81 ; [.3331.0020.0002] # TIBETAN VOWEL SIGN VOCALIC RR +0F78 ; [.3332.0020.0002] # TIBETAN VOWEL SIGN VOCALIC L +0FB3 0F80 ; [.3332.0020.0002] # TIBETAN VOWEL SIGN VOCALIC L +0F79 ; [.3333.0020.0002] # TIBETAN VOWEL SIGN VOCALIC LL +0FB3 0F71 0F80 ; [.3333.0020.0002] # TIBETAN VOWEL SIGN VOCALIC LL +0FB3 0F81 ; [.3333.0020.0002] # TIBETAN VOWEL SIGN VOCALIC LL +0F7A ; [.3334.0020.0002] # TIBETAN VOWEL SIGN E +0F7B ; [.3335.0020.0002] # TIBETAN VOWEL SIGN EE +0F7C ; [.3336.0020.0002] # TIBETAN VOWEL SIGN O +0F7D ; [.3337.0020.0002] # TIBETAN VOWEL SIGN OO +0F84 ; [.3338.0020.0002] # TIBETAN MARK HALANTA +11A0B ; [.3339.0020.0002] # ZANABAZAR SQUARE LETTER KA +11A32 ; [.333A.0020.0002] # ZANABAZAR SQUARE LETTER KSSA +11A0C ; [.333B.0020.0002] # ZANABAZAR SQUARE LETTER KHA +11A0D ; [.333C.0020.0002] # ZANABAZAR SQUARE LETTER GA +11A0E ; [.333D.0020.0002] # ZANABAZAR SQUARE LETTER GHA +11A0F ; [.333E.0020.0002] # ZANABAZAR SQUARE LETTER NGA +11A10 ; [.333F.0020.0002] # ZANABAZAR SQUARE LETTER CA +11A11 ; [.3340.0020.0002] # ZANABAZAR SQUARE LETTER CHA +11A12 ; [.3341.0020.0002] # ZANABAZAR SQUARE LETTER JA +11A13 ; [.3342.0020.0002] # ZANABAZAR SQUARE LETTER NYA +11A14 ; [.3343.0020.0002] # ZANABAZAR SQUARE LETTER TTA +11A15 ; [.3344.0020.0002] # ZANABAZAR SQUARE LETTER TTHA +11A16 ; [.3345.0020.0002] # ZANABAZAR SQUARE LETTER DDA +11A17 ; [.3346.0020.0002] # ZANABAZAR SQUARE LETTER DDHA +11A18 ; [.3347.0020.0002] # ZANABAZAR SQUARE LETTER NNA +11A19 ; [.3348.0020.0002] # ZANABAZAR SQUARE LETTER TA +11A1A ; [.3349.0020.0002] # ZANABAZAR SQUARE LETTER THA +11A1B ; [.334A.0020.0002] # ZANABAZAR SQUARE LETTER DA +11A1C ; [.334B.0020.0002] # ZANABAZAR SQUARE LETTER DHA +11A1D ; [.334C.0020.0002] # ZANABAZAR SQUARE LETTER NA +11A1E ; [.334D.0020.0002] # ZANABAZAR SQUARE LETTER PA +11A1F ; [.334E.0020.0002] # ZANABAZAR SQUARE LETTER PHA +11A20 ; [.334F.0020.0002] # ZANABAZAR SQUARE LETTER BA +11A21 ; [.3350.0020.0002] # ZANABAZAR SQUARE LETTER BHA +11A22 ; [.3351.0020.0002] # ZANABAZAR SQUARE LETTER MA +11A23 ; [.3352.0020.0002] # ZANABAZAR SQUARE LETTER TSA +11A24 ; [.3353.0020.0002] # ZANABAZAR SQUARE LETTER TSHA +11A25 ; [.3354.0020.0002] # ZANABAZAR SQUARE LETTER DZA +11A26 ; [.3355.0020.0002] # ZANABAZAR SQUARE LETTER DZHA +11A27 ; [.3356.0020.0002] # ZANABAZAR SQUARE LETTER ZHA +11A28 ; [.3357.0020.0002] # ZANABAZAR SQUARE LETTER ZA +11A29 ; [.3358.0020.0002] # ZANABAZAR SQUARE LETTER -A +11A2A ; [.3359.0020.0002] # ZANABAZAR SQUARE LETTER YA +11A3B ; [.3359.0020.0019] # ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA +11A2B ; [.335A.0020.0002] # ZANABAZAR SQUARE LETTER RA +11A3A ; [.335A.0020.0017] # ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA +11A3C ; [.335A.0020.0019] # ZANABAZAR SQUARE CLUSTER-FINAL LETTER RA +11A2C ; [.335B.0020.0002] # ZANABAZAR SQUARE LETTER LA +11A3D ; [.335B.0020.0019] # ZANABAZAR SQUARE CLUSTER-FINAL LETTER LA +11A2D ; [.335C.0020.0002] # ZANABAZAR SQUARE LETTER VA +11A3E ; [.335C.0020.0019] # ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA +11A2E ; [.335D.0020.0002] # ZANABAZAR SQUARE LETTER SHA +11A2F ; [.335E.0020.0002] # ZANABAZAR SQUARE LETTER SSA +11A30 ; [.335F.0020.0002] # ZANABAZAR SQUARE LETTER SA +11A31 ; [.3360.0020.0002] # ZANABAZAR SQUARE LETTER HA +11A00 ; [.3361.0020.0002] # ZANABAZAR SQUARE LETTER A +11A01 ; [.3362.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN I +11A02 ; [.3363.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN UE +11A03 ; [.3364.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN U +11A04 ; [.3365.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN E +11A05 ; [.3366.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN OE +11A06 ; [.3367.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN O +11A07 ; [.3368.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN AI +11A08 ; [.3369.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN AU +11A09 ; [.336A.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN REVERSED I +11A0A ; [.336B.0020.0002] # ZANABAZAR SQUARE VOWEL LENGTH MARK +11A34 ; [.336C.0020.0002] # ZANABAZAR SQUARE SIGN VIRAMA +11A47 ; [.336D.0020.0002] # ZANABAZAR SQUARE SUBJOINER +11A50 ; [.336E.0020.0002] # SOYOMBO LETTER A +11A51 ; [.336F.0020.0002] # SOYOMBO VOWEL SIGN I +11A52 ; [.3370.0020.0002] # SOYOMBO VOWEL SIGN UE +11A53 ; [.3371.0020.0002] # SOYOMBO VOWEL SIGN U +11A59 ; [.3372.0020.0002] # SOYOMBO VOWEL SIGN VOCALIC R +11A5A ; [.3373.0020.0002] # SOYOMBO VOWEL SIGN VOCALIC L +11A54 ; [.3374.0020.0002] # SOYOMBO VOWEL SIGN E +11A56 ; [.3375.0020.0002] # SOYOMBO VOWEL SIGN OE +11A55 ; [.3376.0020.0002] # SOYOMBO VOWEL SIGN O +11A57 ; [.3377.0020.0002] # SOYOMBO VOWEL SIGN AI +11A58 ; [.3378.0020.0002] # SOYOMBO VOWEL SIGN AU +11A5B ; [.3379.0020.0002] # SOYOMBO VOWEL LENGTH MARK +11A5C ; [.337A.0020.0002] # SOYOMBO LETTER KA +11A8A ; [.337A.0020.0019] # SOYOMBO FINAL CONSONANT SIGN G +11A83 ; [.337B.0020.0002] # SOYOMBO LETTER KSSA +11A5D ; [.337C.0020.0002] # SOYOMBO LETTER KHA +11A8B ; [.337C.0020.0019] # SOYOMBO FINAL CONSONANT SIGN K +11A5E ; [.337D.0020.0002] # SOYOMBO LETTER GA +11A5F ; [.337E.0020.0002] # SOYOMBO LETTER GHA +11A60 ; [.337F.0020.0002] # SOYOMBO LETTER NGA +11A8C ; [.337F.0020.0019] # SOYOMBO FINAL CONSONANT SIGN NG +11A61 ; [.3380.0020.0002] # SOYOMBO LETTER CA +11A62 ; [.3381.0020.0002] # SOYOMBO LETTER CHA +11A63 ; [.3382.0020.0002] # SOYOMBO LETTER JA +11A64 ; [.3383.0020.0002] # SOYOMBO LETTER JHA +11A65 ; [.3384.0020.0002] # SOYOMBO LETTER NYA +11A66 ; [.3385.0020.0002] # SOYOMBO LETTER TTA +11A67 ; [.3386.0020.0002] # SOYOMBO LETTER TTHA +11A68 ; [.3387.0020.0002] # SOYOMBO LETTER DDA +11A69 ; [.3388.0020.0002] # SOYOMBO LETTER DDHA +11A6A ; [.3389.0020.0002] # SOYOMBO LETTER NNA +11A6B ; [.338A.0020.0002] # SOYOMBO LETTER TA +11A8D ; [.338A.0020.0019] # SOYOMBO FINAL CONSONANT SIGN D +11A6C ; [.338B.0020.0002] # SOYOMBO LETTER THA +11A6D ; [.338C.0020.0002] # SOYOMBO LETTER DA +11A6E ; [.338D.0020.0002] # SOYOMBO LETTER DHA +11A6F ; [.338E.0020.0002] # SOYOMBO LETTER NA +11A8E ; [.338E.0020.0019] # SOYOMBO FINAL CONSONANT SIGN N +11A70 ; [.338F.0020.0002] # SOYOMBO LETTER PA +11A8F ; [.338F.0020.0019] # SOYOMBO FINAL CONSONANT SIGN B +11A71 ; [.3390.0020.0002] # SOYOMBO LETTER PHA +11A72 ; [.3391.0020.0002] # SOYOMBO LETTER BA +11A73 ; [.3392.0020.0002] # SOYOMBO LETTER BHA +11A74 ; [.3393.0020.0002] # SOYOMBO LETTER MA +11A90 ; [.3393.0020.0019] # SOYOMBO FINAL CONSONANT SIGN M +11A75 ; [.3394.0020.0002] # SOYOMBO LETTER TSA +11A76 ; [.3395.0020.0002] # SOYOMBO LETTER TSHA +11A77 ; [.3396.0020.0002] # SOYOMBO LETTER DZA +11A78 ; [.3397.0020.0002] # SOYOMBO LETTER ZHA +11A79 ; [.3398.0020.0002] # SOYOMBO LETTER ZA +11A7A ; [.3399.0020.0002] # SOYOMBO LETTER -A +11A95 ; [.3399.0020.0019] # SOYOMBO FINAL CONSONANT SIGN -A +11A7B ; [.339A.0020.0002] # SOYOMBO LETTER YA +11A7C ; [.339B.0020.0002] # SOYOMBO LETTER RA +11A86 ; [.339B.0020.0017] # SOYOMBO CLUSTER-INITIAL LETTER RA +11A91 ; [.339B.0020.0019] # SOYOMBO FINAL CONSONANT SIGN R +11A7D ; [.339C.0020.0002] # SOYOMBO LETTER LA +11A87 ; [.339C.0020.0017] # SOYOMBO CLUSTER-INITIAL LETTER LA +11A92 ; [.339C.0020.0019] # SOYOMBO FINAL CONSONANT SIGN L +11A7E ; [.339D.0020.0002] # SOYOMBO LETTER VA +11A7F ; [.339E.0020.0002] # SOYOMBO LETTER SHA +11A88 ; [.339E.0020.0017] # SOYOMBO CLUSTER-INITIAL LETTER SHA +11A93 ; [.339E.0020.0019] # SOYOMBO FINAL CONSONANT SIGN SH +11A80 ; [.339F.0020.0002] # SOYOMBO LETTER SSA +11A81 ; [.33A0.0020.0002] # SOYOMBO LETTER SA +11A89 ; [.33A0.0020.0017] # SOYOMBO CLUSTER-INITIAL LETTER SA +11A94 ; [.33A0.0020.0019] # SOYOMBO FINAL CONSONANT SIGN S +11A82 ; [.33A1.0020.0002] # SOYOMBO LETTER HA +11A84 ; [.33A2.0020.0002] # SOYOMBO SIGN JIHVAMULIYA +11A85 ; [.33A3.0020.0002] # SOYOMBO SIGN UPADHMANIYA +11A99 ; [.33A4.0020.0002] # SOYOMBO SUBJOINER +11A9D ; [.33A5.0020.0002] # SOYOMBO MARK PLUTA +11C72 ; [.33A6.0020.0002] # MARCHEN LETTER KA +11C92 ; [.33A7.0020.0002] # MARCHEN SUBJOINED LETTER KA +11C73 ; [.33A8.0020.0002] # MARCHEN LETTER KHA +11C93 ; [.33A9.0020.0002] # MARCHEN SUBJOINED LETTER KHA +11C74 ; [.33AA.0020.0002] # MARCHEN LETTER GA +11C94 ; [.33AB.0020.0002] # MARCHEN SUBJOINED LETTER GA +11C75 ; [.33AC.0020.0002] # MARCHEN LETTER NGA +11C95 ; [.33AD.0020.0002] # MARCHEN SUBJOINED LETTER NGA +11C76 ; [.33AE.0020.0002] # MARCHEN LETTER CA +11C96 ; [.33AF.0020.0002] # MARCHEN SUBJOINED LETTER CA +11C77 ; [.33B0.0020.0002] # MARCHEN LETTER CHA +11C97 ; [.33B1.0020.0002] # MARCHEN SUBJOINED LETTER CHA +11C78 ; [.33B2.0020.0002] # MARCHEN LETTER JA +11C98 ; [.33B3.0020.0002] # MARCHEN SUBJOINED LETTER JA +11C79 ; [.33B4.0020.0002] # MARCHEN LETTER NYA +11C99 ; [.33B5.0020.0002] # MARCHEN SUBJOINED LETTER NYA +11C7A ; [.33B6.0020.0002] # MARCHEN LETTER TA +11C9A ; [.33B7.0020.0002] # MARCHEN SUBJOINED LETTER TA +11C7B ; [.33B8.0020.0002] # MARCHEN LETTER THA +11C9B ; [.33B9.0020.0002] # MARCHEN SUBJOINED LETTER THA +11C7C ; [.33BA.0020.0002] # MARCHEN LETTER DA +11C9C ; [.33BB.0020.0002] # MARCHEN SUBJOINED LETTER DA +11C7D ; [.33BC.0020.0002] # MARCHEN LETTER NA +11C9D ; [.33BD.0020.0002] # MARCHEN SUBJOINED LETTER NA +11C7E ; [.33BE.0020.0002] # MARCHEN LETTER PA +11C9E ; [.33BF.0020.0002] # MARCHEN SUBJOINED LETTER PA +11C7F ; [.33C0.0020.0002] # MARCHEN LETTER PHA +11C9F ; [.33C1.0020.0002] # MARCHEN SUBJOINED LETTER PHA +11C80 ; [.33C2.0020.0002] # MARCHEN LETTER BA +11CA0 ; [.33C3.0020.0002] # MARCHEN SUBJOINED LETTER BA +11C81 ; [.33C4.0020.0002] # MARCHEN LETTER MA +11CA1 ; [.33C5.0020.0002] # MARCHEN SUBJOINED LETTER MA +11C82 ; [.33C6.0020.0002] # MARCHEN LETTER TSA +11CA2 ; [.33C7.0020.0002] # MARCHEN SUBJOINED LETTER TSA +11C83 ; [.33C8.0020.0002] # MARCHEN LETTER TSHA +11CA3 ; [.33C9.0020.0002] # MARCHEN SUBJOINED LETTER TSHA +11C84 ; [.33CA.0020.0002] # MARCHEN LETTER DZA +11CA4 ; [.33CB.0020.0002] # MARCHEN SUBJOINED LETTER DZA +11C85 ; [.33CC.0020.0002] # MARCHEN LETTER WA +11CA5 ; [.33CD.0020.0002] # MARCHEN SUBJOINED LETTER WA +11C86 ; [.33CE.0020.0002] # MARCHEN LETTER ZHA +11CA6 ; [.33CF.0020.0002] # MARCHEN SUBJOINED LETTER ZHA +11C87 ; [.33D0.0020.0002] # MARCHEN LETTER ZA +11CA7 ; [.33D1.0020.0002] # MARCHEN SUBJOINED LETTER ZA +11C88 ; [.33D2.0020.0002] # MARCHEN LETTER -A +11C89 ; [.33D3.0020.0002] # MARCHEN LETTER YA +11CA9 ; [.33D4.0020.0002] # MARCHEN SUBJOINED LETTER YA +11C8A ; [.33D5.0020.0002] # MARCHEN LETTER RA +11CAA ; [.33D6.0020.0002] # MARCHEN SUBJOINED LETTER RA +11C8B ; [.33D7.0020.0002] # MARCHEN LETTER LA +11CAB ; [.33D8.0020.0002] # MARCHEN SUBJOINED LETTER LA +11C8C ; [.33D9.0020.0002] # MARCHEN LETTER SHA +11CAC ; [.33DA.0020.0002] # MARCHEN SUBJOINED LETTER SHA +11C8D ; [.33DB.0020.0002] # MARCHEN LETTER SA +11CAD ; [.33DC.0020.0002] # MARCHEN SUBJOINED LETTER SA +11C8E ; [.33DD.0020.0002] # MARCHEN LETTER HA +11CAE ; [.33DE.0020.0002] # MARCHEN SUBJOINED LETTER HA +11C8F ; [.33DF.0020.0002] # MARCHEN LETTER A +11CAF ; [.33E0.0020.0002] # MARCHEN SUBJOINED LETTER A +11CB0 ; [.33E1.0020.0002] # MARCHEN VOWEL SIGN AA +11CB1 ; [.33E2.0020.0002] # MARCHEN VOWEL SIGN I +11CB2 ; [.33E3.0020.0002] # MARCHEN VOWEL SIGN U +11CB3 ; [.33E4.0020.0002] # MARCHEN VOWEL SIGN E +11CB4 ; [.33E5.0020.0002] # MARCHEN VOWEL SIGN O +1C00 ; [.33E6.0020.0002] # LEPCHA LETTER KA +1C01 ; [.33E7.0020.0002] # LEPCHA LETTER KLA +1C02 ; [.33E8.0020.0002] # LEPCHA LETTER KHA +1C03 ; [.33E9.0020.0002] # LEPCHA LETTER GA +1C04 ; [.33EA.0020.0002] # LEPCHA LETTER GLA +1C05 ; [.33EB.0020.0002] # LEPCHA LETTER NGA +1C06 ; [.33EC.0020.0002] # LEPCHA LETTER CA +1C07 ; [.33ED.0020.0002] # LEPCHA LETTER CHA +1C08 ; [.33EE.0020.0002] # LEPCHA LETTER JA +1C09 ; [.33EF.0020.0002] # LEPCHA LETTER NYA +1C4D ; [.33F0.0020.0002] # LEPCHA LETTER TTA +1C4E ; [.33F1.0020.0002] # LEPCHA LETTER TTHA +1C4F ; [.33F2.0020.0002] # LEPCHA LETTER DDA +1C0A ; [.33F3.0020.0002] # LEPCHA LETTER TA +1C0B ; [.33F4.0020.0002] # LEPCHA LETTER THA +1C0C ; [.33F5.0020.0002] # LEPCHA LETTER DA +1C0D ; [.33F6.0020.0002] # LEPCHA LETTER NA +1C0E ; [.33F7.0020.0002] # LEPCHA LETTER PA +1C0F ; [.33F8.0020.0002] # LEPCHA LETTER PLA +1C10 ; [.33F9.0020.0002] # LEPCHA LETTER PHA +1C11 ; [.33FA.0020.0002] # LEPCHA LETTER FA +1C12 ; [.33FB.0020.0002] # LEPCHA LETTER FLA +1C13 ; [.33FC.0020.0002] # LEPCHA LETTER BA +1C14 ; [.33FD.0020.0002] # LEPCHA LETTER BLA +1C15 ; [.33FE.0020.0002] # LEPCHA LETTER MA +1C16 ; [.33FF.0020.0002] # LEPCHA LETTER MLA +1C17 ; [.3400.0020.0002] # LEPCHA LETTER TSA +1C18 ; [.3401.0020.0002] # LEPCHA LETTER TSHA +1C19 ; [.3402.0020.0002] # LEPCHA LETTER DZA +1C1A ; [.3403.0020.0002] # LEPCHA LETTER YA +1C24 ; [.3404.0020.0002] # LEPCHA SUBJOINED LETTER YA +1C1B ; [.3405.0020.0002] # LEPCHA LETTER RA +1C25 ; [.3406.0020.0002] # LEPCHA SUBJOINED LETTER RA +1C1C ; [.3407.0020.0002] # LEPCHA LETTER LA +1C1D ; [.3408.0020.0002] # LEPCHA LETTER HA +1C1E ; [.3409.0020.0002] # LEPCHA LETTER HLA +1C1F ; [.340A.0020.0002] # LEPCHA LETTER VA +1C20 ; [.340B.0020.0002] # LEPCHA LETTER SA +1C21 ; [.340C.0020.0002] # LEPCHA LETTER SHA +1C22 ; [.340D.0020.0002] # LEPCHA LETTER WA +1C23 ; [.340E.0020.0002] # LEPCHA LETTER A +1C36 ; [.340F.0020.0002] # LEPCHA SIGN RAN +1C26 ; [.3410.0020.0002] # LEPCHA VOWEL SIGN AA +1C27 ; [.3411.0020.0002] # LEPCHA VOWEL SIGN I +1C28 ; [.3412.0020.0002] # LEPCHA VOWEL SIGN O +1C29 ; [.3413.0020.0002] # LEPCHA VOWEL SIGN OO +1C2A ; [.3414.0020.0002] # LEPCHA VOWEL SIGN U +1C2B ; [.3415.0020.0002] # LEPCHA VOWEL SIGN UU +1C2C ; [.3416.0020.0002] # LEPCHA VOWEL SIGN E +1C2D ; [.3417.0020.0002] # LEPCHA CONSONANT SIGN K +1C2E ; [.3418.0020.0002] # LEPCHA CONSONANT SIGN M +1C2F ; [.3419.0020.0002] # LEPCHA CONSONANT SIGN L +1C30 ; [.341A.0020.0002] # LEPCHA CONSONANT SIGN N +1C31 ; [.341B.0020.0002] # LEPCHA CONSONANT SIGN P +1C32 ; [.341C.0020.0002] # LEPCHA CONSONANT SIGN R +1C33 ; [.341D.0020.0002] # LEPCHA CONSONANT SIGN T +1C34 ; [.341E.0020.0002] # LEPCHA CONSONANT SIGN NYIN-DO +1C35 ; [.341F.0020.0002] # LEPCHA CONSONANT SIGN KANG +A840 ; [.3420.0020.0002] # PHAGS-PA LETTER KA +A841 ; [.3421.0020.0002] # PHAGS-PA LETTER KHA +A842 ; [.3422.0020.0002] # PHAGS-PA LETTER GA +A843 ; [.3423.0020.0002] # PHAGS-PA LETTER NGA +A844 ; [.3424.0020.0002] # PHAGS-PA LETTER CA +A845 ; [.3425.0020.0002] # PHAGS-PA LETTER CHA +A846 ; [.3426.0020.0002] # PHAGS-PA LETTER JA +A847 ; [.3427.0020.0002] # PHAGS-PA LETTER NYA +A869 ; [.3428.0020.0002] # PHAGS-PA LETTER TTA +A86A ; [.3429.0020.0002] # PHAGS-PA LETTER TTHA +A86B ; [.342A.0020.0002] # PHAGS-PA LETTER DDA +A86C ; [.342B.0020.0002] # PHAGS-PA LETTER NNA +A848 ; [.342C.0020.0002] # PHAGS-PA LETTER TA +A849 ; [.342D.0020.0002] # PHAGS-PA LETTER THA +A84A ; [.342E.0020.0002] # PHAGS-PA LETTER DA +A84B ; [.342F.0020.0002] # PHAGS-PA LETTER NA +A84C ; [.3430.0020.0002] # PHAGS-PA LETTER PA +A84D ; [.3431.0020.0002] # PHAGS-PA LETTER PHA +A84E ; [.3432.0020.0002] # PHAGS-PA LETTER BA +A84F ; [.3433.0020.0002] # PHAGS-PA LETTER MA +A850 ; [.3434.0020.0002] # PHAGS-PA LETTER TSA +A851 ; [.3435.0020.0002] # PHAGS-PA LETTER TSHA +A852 ; [.3436.0020.0002] # PHAGS-PA LETTER DZA +A853 ; [.3437.0020.0002] # PHAGS-PA LETTER WA +A867 ; [.3438.0020.0002] # PHAGS-PA SUBJOINED LETTER WA +A854 ; [.3439.0020.0002] # PHAGS-PA LETTER ZHA +A855 ; [.343A.0020.0002] # PHAGS-PA LETTER ZA +A856 ; [.343B.0020.0002] # PHAGS-PA LETTER SMALL A +A857 ; [.343C.0020.0002] # PHAGS-PA LETTER YA +A868 ; [.343D.0020.0002] # PHAGS-PA SUBJOINED LETTER YA +A86D ; [.343E.0020.0002] # PHAGS-PA LETTER ALTERNATE YA +A858 ; [.343F.0020.0002] # PHAGS-PA LETTER RA +A871 ; [.3440.0020.0002] # PHAGS-PA SUBJOINED LETTER RA +A872 ; [.3441.0020.0002] # PHAGS-PA SUPERFIXED LETTER RA +A859 ; [.3442.0020.0002] # PHAGS-PA LETTER LA +A85A ; [.3443.0020.0002] # PHAGS-PA LETTER SHA +A86E ; [.3444.0020.0002] # PHAGS-PA LETTER VOICELESS SHA +A85B ; [.3445.0020.0002] # PHAGS-PA LETTER SA +A85C ; [.3446.0020.0002] # PHAGS-PA LETTER HA +A86F ; [.3447.0020.0002] # PHAGS-PA LETTER VOICED HA +A870 ; [.3448.0020.0002] # PHAGS-PA LETTER ASPIRATED FA +A85D ; [.3449.0020.0002] # PHAGS-PA LETTER A +A862 ; [.344A.0020.0002] # PHAGS-PA LETTER QA +A863 ; [.344B.0020.0002] # PHAGS-PA LETTER XA +A864 ; [.344C.0020.0002] # PHAGS-PA LETTER FA +A865 ; [.344D.0020.0002] # PHAGS-PA LETTER GGA +A85E ; [.344E.0020.0002] # PHAGS-PA LETTER I +A85F ; [.344F.0020.0002] # PHAGS-PA LETTER U +A860 ; [.3450.0020.0002] # PHAGS-PA LETTER E +A861 ; [.3451.0020.0002] # PHAGS-PA LETTER O +A866 ; [.3452.0020.0002] # PHAGS-PA LETTER EE +A873 ; [.3453.0020.0002] # PHAGS-PA LETTER CANDRABINDU +1900 ; [.3454.0020.0002] # LIMBU VOWEL-CARRIER LETTER +1901 ; [.3455.0020.0002] # LIMBU LETTER KA +1902 ; [.3456.0020.0002] # LIMBU LETTER KHA +1903 ; [.3457.0020.0002] # LIMBU LETTER GA +1904 ; [.3458.0020.0002] # LIMBU LETTER GHA +1905 ; [.3459.0020.0002] # LIMBU LETTER NGA +1906 ; [.345A.0020.0002] # LIMBU LETTER CA +1907 ; [.345B.0020.0002] # LIMBU LETTER CHA +1908 ; [.345C.0020.0002] # LIMBU LETTER JA +191D ; [.345C.0020.0004][.347A.0020.0004] # LIMBU LETTER GYAN +1909 ; [.345D.0020.0002] # LIMBU LETTER JHA +190A ; [.345E.0020.0002] # LIMBU LETTER YAN +190B ; [.345F.0020.0002] # LIMBU LETTER TA +191E ; [.345F.0020.0004][.347B.0020.0004] # LIMBU LETTER TRA +190C ; [.3460.0020.0002] # LIMBU LETTER THA +190D ; [.3461.0020.0002] # LIMBU LETTER DA +190E ; [.3462.0020.0002] # LIMBU LETTER DHA +190F ; [.3463.0020.0002] # LIMBU LETTER NA +1910 ; [.3464.0020.0002] # LIMBU LETTER PA +1911 ; [.3465.0020.0002] # LIMBU LETTER PHA +1912 ; [.3466.0020.0002] # LIMBU LETTER BA +1913 ; [.3467.0020.0002] # LIMBU LETTER BHA +1914 ; [.3468.0020.0002] # LIMBU LETTER MA +1915 ; [.3469.0020.0002] # LIMBU LETTER YA +1916 ; [.346A.0020.0002] # LIMBU LETTER RA +1917 ; [.346B.0020.0002] # LIMBU LETTER LA +1918 ; [.346C.0020.0002] # LIMBU LETTER WA +1919 ; [.346D.0020.0002] # LIMBU LETTER SHA +191A ; [.346E.0020.0002] # LIMBU LETTER SSA +191B ; [.346F.0020.0002] # LIMBU LETTER SA +191C ; [.3470.0020.0002] # LIMBU LETTER HA +1920 ; [.3471.0020.0002] # LIMBU VOWEL SIGN A +1921 ; [.3472.0020.0002] # LIMBU VOWEL SIGN I +1922 ; [.3473.0020.0002] # LIMBU VOWEL SIGN U +1923 ; [.3474.0020.0002] # LIMBU VOWEL SIGN EE +1924 ; [.3475.0020.0002] # LIMBU VOWEL SIGN AI +1925 ; [.3476.0020.0002] # LIMBU VOWEL SIGN OO +1926 ; [.3477.0020.0002] # LIMBU VOWEL SIGN AU +1927 ; [.3478.0020.0002] # LIMBU VOWEL SIGN E +1928 ; [.3479.0020.0002] # LIMBU VOWEL SIGN O +1929 ; [.347A.0020.0002] # LIMBU SUBJOINED LETTER YA +192A ; [.347B.0020.0002] # LIMBU SUBJOINED LETTER RA +192B ; [.347C.0020.0002] # LIMBU SUBJOINED LETTER WA +1930 ; [.347D.0020.0002] # LIMBU SMALL LETTER KA +1931 ; [.347E.0020.0002] # LIMBU SMALL LETTER NGA +1932 ; [.347F.0020.0002] # LIMBU SMALL LETTER ANUSVARA +1933 ; [.3480.0020.0002] # LIMBU SMALL LETTER TA +1934 ; [.3481.0020.0002] # LIMBU SMALL LETTER NA +1935 ; [.3482.0020.0002] # LIMBU SMALL LETTER PA +1936 ; [.3483.0020.0002] # LIMBU SMALL LETTER MA +1937 ; [.3484.0020.0002] # LIMBU SMALL LETTER RA +1938 ; [.3485.0020.0002] # LIMBU SMALL LETTER LA +1700 ; [.3486.0020.0002] # TAGALOG LETTER A +1701 ; [.3487.0020.0002] # TAGALOG LETTER I +1702 ; [.3488.0020.0002] # TAGALOG LETTER U +1703 ; [.3489.0020.0002] # TAGALOG LETTER KA +1704 ; [.348A.0020.0002] # TAGALOG LETTER GA +1705 ; [.348B.0020.0002] # TAGALOG LETTER NGA +1706 ; [.348C.0020.0002] # TAGALOG LETTER TA +1707 ; [.348D.0020.0002] # TAGALOG LETTER DA +1708 ; [.348E.0020.0002] # TAGALOG LETTER NA +1709 ; [.348F.0020.0002] # TAGALOG LETTER PA +170A ; [.3490.0020.0002] # TAGALOG LETTER BA +170B ; [.3491.0020.0002] # TAGALOG LETTER MA +170C ; [.3492.0020.0002] # TAGALOG LETTER YA +170E ; [.3493.0020.0002] # TAGALOG LETTER LA +170F ; [.3494.0020.0002] # TAGALOG LETTER WA +1710 ; [.3495.0020.0002] # TAGALOG LETTER SA +1711 ; [.3496.0020.0002] # TAGALOG LETTER HA +1712 ; [.3497.0020.0002] # TAGALOG VOWEL SIGN I +1713 ; [.3498.0020.0002] # TAGALOG VOWEL SIGN U +1714 ; [.3499.0020.0002] # TAGALOG SIGN VIRAMA +1720 ; [.349A.0020.0002] # HANUNOO LETTER A +1721 ; [.349B.0020.0002] # HANUNOO LETTER I +1722 ; [.349C.0020.0002] # HANUNOO LETTER U +1723 ; [.349D.0020.0002] # HANUNOO LETTER KA +1724 ; [.349E.0020.0002] # HANUNOO LETTER GA +1725 ; [.349F.0020.0002] # HANUNOO LETTER NGA +1726 ; [.34A0.0020.0002] # HANUNOO LETTER TA +1727 ; [.34A1.0020.0002] # HANUNOO LETTER DA +1728 ; [.34A2.0020.0002] # HANUNOO LETTER NA +1729 ; [.34A3.0020.0002] # HANUNOO LETTER PA +172A ; [.34A4.0020.0002] # HANUNOO LETTER BA +172B ; [.34A5.0020.0002] # HANUNOO LETTER MA +172C ; [.34A6.0020.0002] # HANUNOO LETTER YA +172D ; [.34A7.0020.0002] # HANUNOO LETTER RA +172E ; [.34A8.0020.0002] # HANUNOO LETTER LA +172F ; [.34A9.0020.0002] # HANUNOO LETTER WA +1730 ; [.34AA.0020.0002] # HANUNOO LETTER SA +1731 ; [.34AB.0020.0002] # HANUNOO LETTER HA +1732 ; [.34AC.0020.0002] # HANUNOO VOWEL SIGN I +1733 ; [.34AD.0020.0002] # HANUNOO VOWEL SIGN U +1734 ; [.34AE.0020.0002] # HANUNOO SIGN PAMUDPOD +1740 ; [.34AF.0020.0002] # BUHID LETTER A +1741 ; [.34B0.0020.0002] # BUHID LETTER I +1742 ; [.34B1.0020.0002] # BUHID LETTER U +1743 ; [.34B2.0020.0002] # BUHID LETTER KA +1744 ; [.34B3.0020.0002] # BUHID LETTER GA +1745 ; [.34B4.0020.0002] # BUHID LETTER NGA +1746 ; [.34B5.0020.0002] # BUHID LETTER TA +1747 ; [.34B6.0020.0002] # BUHID LETTER DA +1748 ; [.34B7.0020.0002] # BUHID LETTER NA +1749 ; [.34B8.0020.0002] # BUHID LETTER PA +174A ; [.34B9.0020.0002] # BUHID LETTER BA +174B ; [.34BA.0020.0002] # BUHID LETTER MA +174C ; [.34BB.0020.0002] # BUHID LETTER YA +174D ; [.34BC.0020.0002] # BUHID LETTER RA +174E ; [.34BD.0020.0002] # BUHID LETTER LA +174F ; [.34BE.0020.0002] # BUHID LETTER WA +1750 ; [.34BF.0020.0002] # BUHID LETTER SA +1751 ; [.34C0.0020.0002] # BUHID LETTER HA +1752 ; [.34C1.0020.0002] # BUHID VOWEL SIGN I +1753 ; [.34C2.0020.0002] # BUHID VOWEL SIGN U +1760 ; [.34C3.0020.0002] # TAGBANWA LETTER A +1761 ; [.34C4.0020.0002] # TAGBANWA LETTER I +1762 ; [.34C5.0020.0002] # TAGBANWA LETTER U +1763 ; [.34C6.0020.0002] # TAGBANWA LETTER KA +1764 ; [.34C7.0020.0002] # TAGBANWA LETTER GA +1765 ; [.34C8.0020.0002] # TAGBANWA LETTER NGA +1766 ; [.34C9.0020.0002] # TAGBANWA LETTER TA +1767 ; [.34CA.0020.0002] # TAGBANWA LETTER DA +1768 ; [.34CB.0020.0002] # TAGBANWA LETTER NA +1769 ; [.34CC.0020.0002] # TAGBANWA LETTER PA +176A ; [.34CD.0020.0002] # TAGBANWA LETTER BA +176B ; [.34CE.0020.0002] # TAGBANWA LETTER MA +176C ; [.34CF.0020.0002] # TAGBANWA LETTER YA +176E ; [.34D0.0020.0002] # TAGBANWA LETTER LA +176F ; [.34D1.0020.0002] # TAGBANWA LETTER WA +1770 ; [.34D2.0020.0002] # TAGBANWA LETTER SA +1772 ; [.34D3.0020.0002] # TAGBANWA VOWEL SIGN I +1773 ; [.34D4.0020.0002] # TAGBANWA VOWEL SIGN U +1A00 ; [.34D5.0020.0002] # BUGINESE LETTER KA +1A01 ; [.34D6.0020.0002] # BUGINESE LETTER GA +1A02 ; [.34D7.0020.0002] # BUGINESE LETTER NGA +1A03 ; [.34D8.0020.0002] # BUGINESE LETTER NGKA +1A04 ; [.34D9.0020.0002] # BUGINESE LETTER PA +1A05 ; [.34DA.0020.0002] # BUGINESE LETTER BA +1A06 ; [.34DB.0020.0002] # BUGINESE LETTER MA +1A07 ; [.34DC.0020.0002] # BUGINESE LETTER MPA +1A08 ; [.34DD.0020.0002] # BUGINESE LETTER TA +1A09 ; [.34DE.0020.0002] # BUGINESE LETTER DA +1A0A ; [.34DF.0020.0002] # BUGINESE LETTER NA +1A0B ; [.34E0.0020.0002] # BUGINESE LETTER NRA +1A0C ; [.34E1.0020.0002] # BUGINESE LETTER CA +1A0D ; [.34E2.0020.0002] # BUGINESE LETTER JA +1A0E ; [.34E3.0020.0002] # BUGINESE LETTER NYA +1A0F ; [.34E4.0020.0002] # BUGINESE LETTER NYCA +1A10 ; [.34E5.0020.0002] # BUGINESE LETTER YA +1A11 ; [.34E6.0020.0002] # BUGINESE LETTER RA +1A12 ; [.34E7.0020.0002] # BUGINESE LETTER LA +1A13 ; [.34E8.0020.0002] # BUGINESE LETTER VA +1A14 ; [.34E9.0020.0002] # BUGINESE LETTER SA +1A15 ; [.34EA.0020.0002] # BUGINESE LETTER A +1A16 ; [.34EB.0020.0002] # BUGINESE LETTER HA +1A17 ; [.34EC.0020.0002] # BUGINESE VOWEL SIGN I +1A18 ; [.34ED.0020.0002] # BUGINESE VOWEL SIGN U +1A19 ; [.34EE.0020.0002] # BUGINESE VOWEL SIGN E +1A1A ; [.34EF.0020.0002] # BUGINESE VOWEL SIGN O +1A1B ; [.34F0.0020.0002] # BUGINESE VOWEL SIGN AE +11EE0 ; [.34F1.0020.0002] # MAKASAR LETTER KA +11EE1 ; [.34F2.0020.0002] # MAKASAR LETTER GA +11EE2 ; [.34F3.0020.0002] # MAKASAR LETTER NGA +11EE3 ; [.34F4.0020.0002] # MAKASAR LETTER PA +11EE4 ; [.34F5.0020.0002] # MAKASAR LETTER BA +11EE5 ; [.34F6.0020.0002] # MAKASAR LETTER MA +11EE6 ; [.34F7.0020.0002] # MAKASAR LETTER TA +11EE7 ; [.34F8.0020.0002] # MAKASAR LETTER DA +11EE8 ; [.34F9.0020.0002] # MAKASAR LETTER NA +11EE9 ; [.34FA.0020.0002] # MAKASAR LETTER CA +11EEA ; [.34FB.0020.0002] # MAKASAR LETTER JA +11EEB ; [.34FC.0020.0002] # MAKASAR LETTER NYA +11EEC ; [.34FD.0020.0002] # MAKASAR LETTER YA +11EED ; [.34FE.0020.0002] # MAKASAR LETTER RA +11EEE ; [.34FF.0020.0002] # MAKASAR LETTER LA +11EEF ; [.3500.0020.0002] # MAKASAR LETTER VA +11EF0 ; [.3501.0020.0002] # MAKASAR LETTER SA +11EF1 ; [.3502.0020.0002] # MAKASAR LETTER A +11EF2 ; [.3503.0020.0002] # MAKASAR ANGKA +11EF3 ; [.3504.0020.0002] # MAKASAR VOWEL SIGN I +11EF4 ; [.3505.0020.0002] # MAKASAR VOWEL SIGN U +11EF5 ; [.3506.0020.0002] # MAKASAR VOWEL SIGN E +11EF6 ; [.3507.0020.0002] # MAKASAR VOWEL SIGN O +1BC0 ; [.3508.0020.0002] # BATAK LETTER A +1BC1 ; [.3508.0020.0004] # BATAK LETTER SIMALUNGUN A +1BC2 ; [.3509.0020.0002] # BATAK LETTER HA +1BC3 ; [.3509.0020.0004] # BATAK LETTER SIMALUNGUN HA +1BC4 ; [.3509.0020.0004] # BATAK LETTER MANDAILING HA +1BC5 ; [.350A.0020.0002] # BATAK LETTER BA +1BC6 ; [.350A.0020.0004] # BATAK LETTER KARO BA +1BC7 ; [.350B.0020.0002] # BATAK LETTER PA +1BC8 ; [.350B.0020.0004] # BATAK LETTER SIMALUNGUN PA +1BC9 ; [.350C.0020.0002] # BATAK LETTER NA +1BCA ; [.350C.0020.0004] # BATAK LETTER MANDAILING NA +1BCB ; [.350D.0020.0002] # BATAK LETTER WA +1BCC ; [.350D.0020.0004] # BATAK LETTER SIMALUNGUN WA +1BCD ; [.350D.0020.0004] # BATAK LETTER PAKPAK WA +1BCE ; [.350E.0020.0002] # BATAK LETTER GA +1BCF ; [.350E.0020.0004] # BATAK LETTER SIMALUNGUN GA +1BD0 ; [.350F.0020.0002] # BATAK LETTER JA +1BD1 ; [.3510.0020.0002] # BATAK LETTER DA +1BD2 ; [.3511.0020.0002] # BATAK LETTER RA +1BD3 ; [.3511.0020.0004] # BATAK LETTER SIMALUNGUN RA +1BD4 ; [.3512.0020.0002] # BATAK LETTER MA +1BD5 ; [.3512.0020.0004] # BATAK LETTER SIMALUNGUN MA +1BD6 ; [.3513.0020.0002] # BATAK LETTER SOUTHERN TA +1BD7 ; [.3513.0020.0004] # BATAK LETTER NORTHERN TA +1BD8 ; [.3514.0020.0002] # BATAK LETTER SA +1BD9 ; [.3514.0020.0004] # BATAK LETTER SIMALUNGUN SA +1BDA ; [.3514.0020.0004] # BATAK LETTER MANDAILING SA +1BDB ; [.3515.0020.0002] # BATAK LETTER YA +1BDC ; [.3515.0020.0004] # BATAK LETTER SIMALUNGUN YA +1BDD ; [.3516.0020.0002] # BATAK LETTER NGA +1BDE ; [.3517.0020.0002] # BATAK LETTER LA +1BDF ; [.3517.0020.0004] # BATAK LETTER SIMALUNGUN LA +1BE0 ; [.3518.0020.0002] # BATAK LETTER NYA +1BE1 ; [.3519.0020.0002] # BATAK LETTER CA +1BE2 ; [.351A.0020.0002] # BATAK LETTER NDA +1BE3 ; [.351B.0020.0002] # BATAK LETTER MBA +1BE4 ; [.351C.0020.0002] # BATAK LETTER I +1BE5 ; [.351D.0020.0002] # BATAK LETTER U +1BE7 ; [.351E.0020.0002] # BATAK VOWEL SIGN E +1BE8 ; [.351E.0020.0004] # BATAK VOWEL SIGN PAKPAK E +1BE9 ; [.351F.0020.0002] # BATAK VOWEL SIGN EE +1BEA ; [.3520.0020.0002] # BATAK VOWEL SIGN I +1BEB ; [.3520.0020.0004] # BATAK VOWEL SIGN KARO I +1BEC ; [.3521.0020.0002] # BATAK VOWEL SIGN O +1BED ; [.3521.0020.0004] # BATAK VOWEL SIGN KARO O +1BEE ; [.3522.0020.0002] # BATAK VOWEL SIGN U +1BEF ; [.3522.0020.0004] # BATAK VOWEL SIGN U FOR SIMALUNGUN SA +1BF0 ; [.3523.0020.0002] # BATAK CONSONANT SIGN NG +1BF1 ; [.3524.0020.0002] # BATAK CONSONANT SIGN H +1BF2 ; [.3525.0020.0002] # BATAK PANGOLAT +1BF3 ; [.3526.0020.0002] # BATAK PANONGONAN +A930 ; [.3527.0020.0002] # REJANG LETTER KA +A931 ; [.3528.0020.0002] # REJANG LETTER GA +A932 ; [.3529.0020.0002] # REJANG LETTER NGA +A933 ; [.352A.0020.0002] # REJANG LETTER TA +A934 ; [.352B.0020.0002] # REJANG LETTER DA +A935 ; [.352C.0020.0002] # REJANG LETTER NA +A936 ; [.352D.0020.0002] # REJANG LETTER PA +A937 ; [.352E.0020.0002] # REJANG LETTER BA +A938 ; [.352F.0020.0002] # REJANG LETTER MA +A939 ; [.3530.0020.0002] # REJANG LETTER CA +A93A ; [.3531.0020.0002] # REJANG LETTER JA +A93B ; [.3532.0020.0002] # REJANG LETTER NYA +A93C ; [.3533.0020.0002] # REJANG LETTER SA +A93D ; [.3534.0020.0002] # REJANG LETTER RA +A93E ; [.3535.0020.0002] # REJANG LETTER LA +A93F ; [.3536.0020.0002] # REJANG LETTER YA +A940 ; [.3537.0020.0002] # REJANG LETTER WA +A941 ; [.3538.0020.0002] # REJANG LETTER HA +A942 ; [.3539.0020.0002] # REJANG LETTER MBA +A943 ; [.353A.0020.0002] # REJANG LETTER NGGA +A944 ; [.353B.0020.0002] # REJANG LETTER NDA +A945 ; [.353C.0020.0002] # REJANG LETTER NYJA +A946 ; [.353D.0020.0002] # REJANG LETTER A +A947 ; [.353E.0020.0002] # REJANG VOWEL SIGN I +A948 ; [.353F.0020.0002] # REJANG VOWEL SIGN U +A949 ; [.3540.0020.0002] # REJANG VOWEL SIGN E +A94A ; [.3541.0020.0002] # REJANG VOWEL SIGN AI +A94B ; [.3542.0020.0002] # REJANG VOWEL SIGN O +A94C ; [.3543.0020.0002] # REJANG VOWEL SIGN AU +A94D ; [.3544.0020.0002] # REJANG VOWEL SIGN EU +A94E ; [.3545.0020.0002] # REJANG VOWEL SIGN EA +A94F ; [.3546.0020.0002] # REJANG CONSONANT SIGN NG +A950 ; [.3547.0020.0002] # REJANG CONSONANT SIGN N +A951 ; [.3548.0020.0002] # REJANG CONSONANT SIGN R +A952 ; [.3549.0020.0002] # REJANG CONSONANT SIGN H +A953 ; [.354A.0020.0002] # REJANG VIRAMA +A90A ; [.354B.0020.0002] # KAYAH LI LETTER KA +A90B ; [.354C.0020.0002] # KAYAH LI LETTER KHA +A90C ; [.354D.0020.0002] # KAYAH LI LETTER GA +A90D ; [.354E.0020.0002] # KAYAH LI LETTER NGA +A90E ; [.354F.0020.0002] # KAYAH LI LETTER SA +A90F ; [.3550.0020.0002] # KAYAH LI LETTER SHA +A910 ; [.3551.0020.0002] # KAYAH LI LETTER ZA +A911 ; [.3552.0020.0002] # KAYAH LI LETTER NYA +A912 ; [.3553.0020.0002] # KAYAH LI LETTER TA +A913 ; [.3554.0020.0002] # KAYAH LI LETTER HTA +A914 ; [.3555.0020.0002] # KAYAH LI LETTER NA +A915 ; [.3556.0020.0002] # KAYAH LI LETTER PA +A916 ; [.3557.0020.0002] # KAYAH LI LETTER PHA +A917 ; [.3558.0020.0002] # KAYAH LI LETTER MA +A918 ; [.3559.0020.0002] # KAYAH LI LETTER DA +A919 ; [.355A.0020.0002] # KAYAH LI LETTER BA +A91A ; [.355B.0020.0002] # KAYAH LI LETTER RA +A91B ; [.355C.0020.0002] # KAYAH LI LETTER YA +A91C ; [.355D.0020.0002] # KAYAH LI LETTER LA +A91D ; [.355E.0020.0002] # KAYAH LI LETTER WA +A91E ; [.355F.0020.0002] # KAYAH LI LETTER THA +A91F ; [.3560.0020.0002] # KAYAH LI LETTER HA +A920 ; [.3561.0020.0002] # KAYAH LI LETTER VA +A921 ; [.3562.0020.0002] # KAYAH LI LETTER CA +A922 ; [.3563.0020.0002] # KAYAH LI LETTER A +A923 ; [.3564.0020.0002] # KAYAH LI LETTER OE +A924 ; [.3565.0020.0002] # KAYAH LI LETTER I +A925 ; [.3566.0020.0002] # KAYAH LI LETTER OO +A926 ; [.3567.0020.0002] # KAYAH LI VOWEL UE +A927 ; [.3568.0020.0002] # KAYAH LI VOWEL E +A928 ; [.3569.0020.0002] # KAYAH LI VOWEL U +A929 ; [.356A.0020.0002] # KAYAH LI VOWEL EE +A92A ; [.356B.0020.0002] # KAYAH LI VOWEL O +1000 ; [.356C.0020.0002] # MYANMAR LETTER KA +1075 ; [.356D.0020.0002] # MYANMAR LETTER SHAN KA +1001 ; [.356E.0020.0002] # MYANMAR LETTER KHA +1076 ; [.356F.0020.0002] # MYANMAR LETTER SHAN KHA +1002 ; [.3570.0020.0002] # MYANMAR LETTER GA +1077 ; [.3571.0020.0002] # MYANMAR LETTER SHAN GA +AA60 ; [.3572.0020.0002] # MYANMAR LETTER KHAMTI GA +A9E9 ; [.3573.0020.0002] # MYANMAR LETTER TAI LAING GA +1003 ; [.3574.0020.0002] # MYANMAR LETTER GHA +A9E0 ; [.3575.0020.0002] # MYANMAR LETTER SHAN GHA +A9EA ; [.3576.0020.0002] # MYANMAR LETTER TAI LAING GHA +1004 ; [.3577.0020.0002] # MYANMAR LETTER NGA +105A ; [.3578.0020.0002] # MYANMAR LETTER MON NGA +1005 ; [.3579.0020.0002] # MYANMAR LETTER CA +1078 ; [.357A.0020.0002] # MYANMAR LETTER SHAN CA +AA61 ; [.357B.0020.0002] # MYANMAR LETTER KHAMTI CA +1006 ; [.357C.0020.0002] # MYANMAR LETTER CHA +A9E1 ; [.357D.0020.0002] # MYANMAR LETTER SHAN CHA +AA62 ; [.357E.0020.0002] # MYANMAR LETTER KHAMTI CHA +AA7E ; [.357F.0020.0002] # MYANMAR LETTER SHWE PALAUNG CHA +1007 ; [.3580.0020.0002] # MYANMAR LETTER JA +AA63 ; [.3581.0020.0002] # MYANMAR LETTER KHAMTI JA +A9EB ; [.3582.0020.0002] # MYANMAR LETTER TAI LAING JA +1079 ; [.3583.0020.0002] # MYANMAR LETTER SHAN ZA +AA72 ; [.3584.0020.0002] # MYANMAR LETTER KHAMTI ZA +1008 ; [.3585.0020.0002] # MYANMAR LETTER JHA +105B ; [.3586.0020.0002] # MYANMAR LETTER MON JHA +A9E2 ; [.3587.0020.0002] # MYANMAR LETTER SHAN JHA +AA64 ; [.3588.0020.0002] # MYANMAR LETTER KHAMTI JHA +A9EC ; [.3589.0020.0002] # MYANMAR LETTER TAI LAING JHA +1061 ; [.358A.0020.0002] # MYANMAR LETTER SGAW KAREN SHA +AA7F ; [.358B.0020.0002] # MYANMAR LETTER SHWE PALAUNG SHA +1009 ; [.358C.0020.0002] # MYANMAR LETTER NYA +107A ; [.358D.0020.0002] # MYANMAR LETTER SHAN NYA +AA65 ; [.358E.0020.0002] # MYANMAR LETTER KHAMTI NYA +A9E7 ; [.358F.0020.0002] # MYANMAR LETTER TAI LAING NYA +100A ; [.3590.0020.0002] # MYANMAR LETTER NNYA +100B ; [.3591.0020.0002] # MYANMAR LETTER TTA +AA66 ; [.3592.0020.0002] # MYANMAR LETTER KHAMTI TTA +100C ; [.3593.0020.0002] # MYANMAR LETTER TTHA +AA67 ; [.3594.0020.0002] # MYANMAR LETTER KHAMTI TTHA +100D ; [.3595.0020.0002] # MYANMAR LETTER DDA +AA68 ; [.3596.0020.0002] # MYANMAR LETTER KHAMTI DDA +A9ED ; [.3597.0020.0002] # MYANMAR LETTER TAI LAING DDA +100E ; [.3598.0020.0002] # MYANMAR LETTER DDHA +AA69 ; [.3599.0020.0002] # MYANMAR LETTER KHAMTI DDHA +A9EE ; [.359A.0020.0002] # MYANMAR LETTER TAI LAING DDHA +100F ; [.359B.0020.0002] # MYANMAR LETTER NNA +106E ; [.359C.0020.0002] # MYANMAR LETTER EASTERN PWO KAREN NNA +A9E3 ; [.359D.0020.0002] # MYANMAR LETTER SHAN NNA +A9EF ; [.359E.0020.0002] # MYANMAR LETTER TAI LAING NNA +1010 ; [.359F.0020.0002] # MYANMAR LETTER TA +1011 ; [.35A0.0020.0002] # MYANMAR LETTER THA +1012 ; [.35A1.0020.0002] # MYANMAR LETTER DA +107B ; [.35A2.0020.0002] # MYANMAR LETTER SHAN DA +A9FB ; [.35A3.0020.0002] # MYANMAR LETTER TAI LAING DA +1013 ; [.35A4.0020.0002] # MYANMAR LETTER DHA +AA6A ; [.35A5.0020.0002] # MYANMAR LETTER KHAMTI DHA +A9FC ; [.35A6.0020.0002] # MYANMAR LETTER TAI LAING DHA +1014 ; [.35A7.0020.0002] # MYANMAR LETTER NA +107C ; [.35A8.0020.0002] # MYANMAR LETTER SHAN NA +AA6B ; [.35A9.0020.0002] # MYANMAR LETTER KHAMTI NA +105E ; [.35AA.0020.0002] # MYANMAR CONSONANT SIGN MON MEDIAL NA +1015 ; [.35AB.0020.0002] # MYANMAR LETTER PA +1016 ; [.35AC.0020.0002] # MYANMAR LETTER PHA +107D ; [.35AD.0020.0002] # MYANMAR LETTER SHAN PHA +107E ; [.35AE.0020.0002] # MYANMAR LETTER SHAN FA +AA6F ; [.35AF.0020.0002] # MYANMAR LETTER KHAMTI FA +108E ; [.35B0.0020.0002] # MYANMAR LETTER RUMAI PALAUNG FA +A9E8 ; [.35B1.0020.0002] # MYANMAR LETTER TAI LAING FA +1017 ; [.35B2.0020.0002] # MYANMAR LETTER BA +107F ; [.35B3.0020.0002] # MYANMAR LETTER SHAN BA +A9FD ; [.35B4.0020.0002] # MYANMAR LETTER TAI LAING BA +1018 ; [.35B5.0020.0002] # MYANMAR LETTER BHA +A9E4 ; [.35B6.0020.0002] # MYANMAR LETTER SHAN BHA +A9FE ; [.35B7.0020.0002] # MYANMAR LETTER TAI LAING BHA +1019 ; [.35B8.0020.0002] # MYANMAR LETTER MA +105F ; [.35B9.0020.0002] # MYANMAR CONSONANT SIGN MON MEDIAL MA +101A ; [.35BA.0020.0002] # MYANMAR LETTER YA +103B ; [.35BB.0020.0002] # MYANMAR CONSONANT SIGN MEDIAL YA +101B ; [.35BC.0020.0002] # MYANMAR LETTER RA +AA73 ; [.35BD.0020.0002] # MYANMAR LETTER KHAMTI RA +AA7A ; [.35BE.0020.0002] # MYANMAR LETTER AITON RA +103C ; [.35BF.0020.0002] # MYANMAR CONSONANT SIGN MEDIAL RA +101C ; [.35C0.0020.0002] # MYANMAR LETTER LA +1060 ; [.35C1.0020.0002] # MYANMAR CONSONANT SIGN MON MEDIAL LA +101D ; [.35C2.0020.0002] # MYANMAR LETTER WA +103D ; [.35C3.0020.0002] # MYANMAR CONSONANT SIGN MEDIAL WA +1082 ; [.35C4.0020.0002] # MYANMAR CONSONANT SIGN SHAN MEDIAL WA +1080 ; [.35C5.0020.0002] # MYANMAR LETTER SHAN THA +1050 ; [.35C6.0020.0002] # MYANMAR LETTER SHA +1051 ; [.35C7.0020.0002] # MYANMAR LETTER SSA +1065 ; [.35C8.0020.0002] # MYANMAR LETTER WESTERN PWO KAREN THA +101E ; [.35C9.0020.0002] # MYANMAR LETTER SA +103F ; [.35C9.0020.0004][.3602.0020.0004][.35C9.0020.0004] # MYANMAR LETTER GREAT SA +AA6C ; [.35CA.0020.0002] # MYANMAR LETTER KHAMTI SA +101F ; [.35CB.0020.0002] # MYANMAR LETTER HA +1081 ; [.35CC.0020.0002] # MYANMAR LETTER SHAN HA +AA6D ; [.35CD.0020.0002] # MYANMAR LETTER KHAMTI HA +103E ; [.35CE.0020.0002] # MYANMAR CONSONANT SIGN MEDIAL HA +AA6E ; [.35CF.0020.0002] # MYANMAR LETTER KHAMTI HHA +AA71 ; [.35D0.0020.0002] # MYANMAR LETTER KHAMTI XA +1020 ; [.35D1.0020.0002] # MYANMAR LETTER LLA +A9FA ; [.35D2.0020.0002] # MYANMAR LETTER TAI LAING LLA +105C ; [.35D3.0020.0002] # MYANMAR LETTER MON BBA +105D ; [.35D4.0020.0002] # MYANMAR LETTER MON BBE +106F ; [.35D5.0020.0002] # MYANMAR LETTER EASTERN PWO KAREN YWA +1070 ; [.35D6.0020.0002] # MYANMAR LETTER EASTERN PWO KAREN GHWA +1066 ; [.35D7.0020.0002] # MYANMAR LETTER WESTERN PWO KAREN PWA +1021 ; [.35D8.0020.0002] # MYANMAR LETTER A +1022 ; [.35D9.0020.0002] # MYANMAR LETTER SHAN A +1023 ; [.35DA.0020.0002] # MYANMAR LETTER I +1024 ; [.35DB.0020.0002] # MYANMAR LETTER II +1025 ; [.35DC.0020.0002] # MYANMAR LETTER U +1026 ; [.35DD.0020.0002] # MYANMAR LETTER UU +1025 102E ; [.35DD.0020.0002] # MYANMAR LETTER UU +1052 ; [.35DE.0020.0002] # MYANMAR LETTER VOCALIC R +1053 ; [.35DF.0020.0002] # MYANMAR LETTER VOCALIC RR +1054 ; [.35E0.0020.0002] # MYANMAR LETTER VOCALIC L +1055 ; [.35E1.0020.0002] # MYANMAR LETTER VOCALIC LL +1027 ; [.35E2.0020.0002] # MYANMAR LETTER E +1028 ; [.35E3.0020.0002] # MYANMAR LETTER MON E +1029 ; [.35E4.0020.0002] # MYANMAR LETTER O +102A ; [.35E5.0020.0002] # MYANMAR LETTER AU +102C ; [.35E6.0020.0002] # MYANMAR VOWEL SIGN AA +102B ; [.35E6.0020.0004] # MYANMAR VOWEL SIGN TALL AA +1083 ; [.35E7.0020.0002] # MYANMAR VOWEL SIGN SHAN AA +1072 ; [.35E8.0020.0002] # MYANMAR VOWEL SIGN KAYAH OE +109C ; [.35E9.0020.0002] # MYANMAR VOWEL SIGN AITON A +102D ; [.35EA.0020.0002] # MYANMAR VOWEL SIGN I +1071 ; [.35EB.0020.0002] # MYANMAR VOWEL SIGN GEBA KAREN I +102E ; [.35EC.0020.0002] # MYANMAR VOWEL SIGN II +1033 ; [.35ED.0020.0002] # MYANMAR VOWEL SIGN MON II +102F ; [.35EE.0020.0002] # MYANMAR VOWEL SIGN U +1073 ; [.35EF.0020.0002] # MYANMAR VOWEL SIGN KAYAH U +1074 ; [.35F0.0020.0002] # MYANMAR VOWEL SIGN KAYAH EE +1030 ; [.35F1.0020.0002] # MYANMAR VOWEL SIGN UU +1056 ; [.35F2.0020.0002] # MYANMAR VOWEL SIGN VOCALIC R +1057 ; [.35F3.0020.0002] # MYANMAR VOWEL SIGN VOCALIC RR +1058 ; [.35F4.0020.0002] # MYANMAR VOWEL SIGN VOCALIC L +1059 ; [.35F5.0020.0002] # MYANMAR VOWEL SIGN VOCALIC LL +1031 ; [.35F6.0020.0002] # MYANMAR VOWEL SIGN E +1084 ; [.35F7.0020.0002] # MYANMAR VOWEL SIGN SHAN E +1035 ; [.35F8.0020.0002] # MYANMAR VOWEL SIGN E ABOVE +1085 ; [.35F9.0020.0002] # MYANMAR VOWEL SIGN SHAN E ABOVE +1032 ; [.35FA.0020.0002] # MYANMAR VOWEL SIGN AI +109D ; [.35FB.0020.0002] # MYANMAR VOWEL SIGN AITON AI +1034 ; [.35FC.0020.0002] # MYANMAR VOWEL SIGN MON O +1062 ; [.35FD.0020.0002] # MYANMAR VOWEL SIGN SGAW KAREN EU +1067 ; [.35FE.0020.0002] # MYANMAR VOWEL SIGN WESTERN PWO KAREN EU +1068 ; [.35FF.0020.0002] # MYANMAR VOWEL SIGN WESTERN PWO KAREN UE +A9E5 ; [.3600.0020.0002] # MYANMAR SIGN SHAN SAW +1086 ; [.3601.0020.0002] # MYANMAR VOWEL SIGN SHAN FINAL Y +1039 ; [.3602.0020.0002] # MYANMAR SIGN VIRAMA +103A ; [.3603.0020.0002] # MYANMAR SIGN ASAT +1063 ; [.3604.0020.0002] # MYANMAR TONE MARK SGAW KAREN HATHI +1064 ; [.3605.0020.0002] # MYANMAR TONE MARK SGAW KAREN KE PHO +1069 ; [.3606.0020.0002] # MYANMAR SIGN WESTERN PWO KAREN TONE-1 +106A ; [.3607.0020.0002] # MYANMAR SIGN WESTERN PWO KAREN TONE-2 +106B ; [.3608.0020.0002] # MYANMAR SIGN WESTERN PWO KAREN TONE-3 +106C ; [.3609.0020.0002] # MYANMAR SIGN WESTERN PWO KAREN TONE-4 +106D ; [.360A.0020.0002] # MYANMAR SIGN WESTERN PWO KAREN TONE-5 +1087 ; [.360B.0020.0002] # MYANMAR SIGN SHAN TONE-2 +108B ; [.360C.0020.0002] # MYANMAR SIGN SHAN COUNCIL TONE-2 +1088 ; [.360D.0020.0002] # MYANMAR SIGN SHAN TONE-3 +108C ; [.360E.0020.0002] # MYANMAR SIGN SHAN COUNCIL TONE-3 +108D ; [.360F.0020.0002] # MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE +1089 ; [.3610.0020.0002] # MYANMAR SIGN SHAN TONE-5 +108A ; [.3611.0020.0002] # MYANMAR SIGN SHAN TONE-6 +108F ; [.3612.0020.0002] # MYANMAR SIGN RUMAI PALAUNG TONE-5 +109A ; [.3613.0020.0002] # MYANMAR SIGN KHAMTI TONE-1 +109B ; [.3614.0020.0002] # MYANMAR SIGN KHAMTI TONE-3 +AA7B ; [.3615.0020.0002] # MYANMAR SIGN PAO KAREN TONE +AA7C ; [.3616.0020.0002] # MYANMAR SIGN TAI LAING TONE-2 +AA7D ; [.3617.0020.0002] # MYANMAR SIGN TAI LAING TONE-5 +AA74 ; [.3618.0020.0002] # MYANMAR LOGOGRAM KHAMTI OAY +AA75 ; [.3619.0020.0002] # MYANMAR LOGOGRAM KHAMTI QN +AA76 ; [.361A.0020.0002] # MYANMAR LOGOGRAM KHAMTI HM +10D00 ; [.361B.0020.0002] # HANIFI ROHINGYA LETTER A +10D1D ; [.361C.0020.0002] # HANIFI ROHINGYA VOWEL A +10D1E ; [.361D.0020.0002] # HANIFI ROHINGYA VOWEL I +10D1F ; [.361E.0020.0002] # HANIFI ROHINGYA VOWEL U +10D20 ; [.361F.0020.0002] # HANIFI ROHINGYA VOWEL E +10D21 ; [.3620.0020.0002] # HANIFI ROHINGYA VOWEL O +10D01 ; [.3621.0020.0002] # HANIFI ROHINGYA LETTER BA +10D02 ; [.3622.0020.0002] # HANIFI ROHINGYA LETTER PA +10D03 ; [.3623.0020.0002] # HANIFI ROHINGYA LETTER TA +10D04 ; [.3624.0020.0002] # HANIFI ROHINGYA LETTER TTA +10D05 ; [.3625.0020.0002] # HANIFI ROHINGYA LETTER JA +10D06 ; [.3626.0020.0002] # HANIFI ROHINGYA LETTER CA +10D07 ; [.3627.0020.0002] # HANIFI ROHINGYA LETTER HA +10D08 ; [.3628.0020.0002] # HANIFI ROHINGYA LETTER KHA +10D09 ; [.3629.0020.0002] # HANIFI ROHINGYA LETTER FA +10D0A ; [.362A.0020.0002] # HANIFI ROHINGYA LETTER DA +10D0B ; [.362B.0020.0002] # HANIFI ROHINGYA LETTER DDA +10D0C ; [.362C.0020.0002] # HANIFI ROHINGYA LETTER RA +10D0D ; [.362D.0020.0002] # HANIFI ROHINGYA LETTER RRA +10D0E ; [.362E.0020.0002] # HANIFI ROHINGYA LETTER ZA +10D0F ; [.362F.0020.0002] # HANIFI ROHINGYA LETTER SA +10D10 ; [.3630.0020.0002] # HANIFI ROHINGYA LETTER SHA +10D11 ; [.3631.0020.0002] # HANIFI ROHINGYA LETTER KA +10D12 ; [.3632.0020.0002] # HANIFI ROHINGYA LETTER GA +10D13 ; [.3633.0020.0002] # HANIFI ROHINGYA LETTER LA +10D14 ; [.3634.0020.0002] # HANIFI ROHINGYA LETTER MA +10D15 ; [.3635.0020.0002] # HANIFI ROHINGYA LETTER NA +10D16 ; [.3636.0020.0002] # HANIFI ROHINGYA LETTER WA +10D17 ; [.3637.0020.0002] # HANIFI ROHINGYA LETTER KINNA WA +10D18 ; [.3638.0020.0002] # HANIFI ROHINGYA LETTER YA +10D19 ; [.3639.0020.0002] # HANIFI ROHINGYA LETTER KINNA YA +10D1A ; [.363A.0020.0002] # HANIFI ROHINGYA LETTER NGA +10D1B ; [.363B.0020.0002] # HANIFI ROHINGYA LETTER NYA +10D1C ; [.363C.0020.0002] # HANIFI ROHINGYA LETTER VA +10D22 ; [.363D.0020.0002] # HANIFI ROHINGYA MARK SAKIN +10D23 ; [.363E.0020.0002] # HANIFI ROHINGYA MARK NA KHONNA +11103 ; [.363F.0020.0002] # CHAKMA LETTER AA +11104 ; [.3640.0020.0002] # CHAKMA LETTER I +11105 ; [.3641.0020.0002] # CHAKMA LETTER U +11106 ; [.3642.0020.0002] # CHAKMA LETTER E +11107 ; [.3643.0020.0002] # CHAKMA LETTER KAA +11108 ; [.3644.0020.0002] # CHAKMA LETTER KHAA +11109 ; [.3645.0020.0002] # CHAKMA LETTER GAA +1110A ; [.3646.0020.0002] # CHAKMA LETTER GHAA +1110B ; [.3647.0020.0002] # CHAKMA LETTER NGAA +1110C ; [.3648.0020.0002] # CHAKMA LETTER CAA +1110D ; [.3649.0020.0002] # CHAKMA LETTER CHAA +1110E ; [.364A.0020.0002] # CHAKMA LETTER JAA +1110F ; [.364B.0020.0002] # CHAKMA LETTER JHAA +11110 ; [.364C.0020.0002] # CHAKMA LETTER NYAA +11111 ; [.364D.0020.0002] # CHAKMA LETTER TTAA +11112 ; [.364E.0020.0002] # CHAKMA LETTER TTHAA +11113 ; [.364F.0020.0002] # CHAKMA LETTER DDAA +11114 ; [.3650.0020.0002] # CHAKMA LETTER DDHAA +11115 ; [.3651.0020.0002] # CHAKMA LETTER NNAA +11116 ; [.3652.0020.0002] # CHAKMA LETTER TAA +11117 ; [.3653.0020.0002] # CHAKMA LETTER THAA +11118 ; [.3654.0020.0002] # CHAKMA LETTER DAA +11119 ; [.3655.0020.0002] # CHAKMA LETTER DHAA +1111A ; [.3656.0020.0002] # CHAKMA LETTER NAA +1111B ; [.3657.0020.0002] # CHAKMA LETTER PAA +1111C ; [.3658.0020.0002] # CHAKMA LETTER PHAA +1111D ; [.3659.0020.0002] # CHAKMA LETTER BAA +1111E ; [.365A.0020.0002] # CHAKMA LETTER BHAA +1111F ; [.365B.0020.0002] # CHAKMA LETTER MAA +11120 ; [.365C.0020.0002] # CHAKMA LETTER YYAA +11121 ; [.365D.0020.0002] # CHAKMA LETTER YAA +11122 ; [.365E.0020.0002] # CHAKMA LETTER RAA +11123 ; [.365F.0020.0002] # CHAKMA LETTER LAA +11147 ; [.3660.0020.0002] # CHAKMA LETTER VAA +11124 ; [.3661.0020.0002] # CHAKMA LETTER WAA +11125 ; [.3662.0020.0002] # CHAKMA LETTER SAA +11126 ; [.3663.0020.0002] # CHAKMA LETTER HAA +11144 ; [.3664.0020.0002] # CHAKMA LETTER LHAA +11127 ; [.3665.0020.0002] # CHAKMA VOWEL SIGN A +11128 ; [.3666.0020.0002] # CHAKMA VOWEL SIGN I +11129 ; [.3667.0020.0002] # CHAKMA VOWEL SIGN II +1112A ; [.3668.0020.0002] # CHAKMA VOWEL SIGN U +1112B ; [.3669.0020.0002] # CHAKMA VOWEL SIGN UU +1112C ; [.366A.0020.0002] # CHAKMA VOWEL SIGN E +1112D ; [.366B.0020.0002] # CHAKMA VOWEL SIGN AI +1112E ; [.366C.0020.0002] # CHAKMA VOWEL SIGN O +11131 11127 ; [.366C.0020.0002] # CHAKMA VOWEL SIGN O +1112F ; [.366D.0020.0002] # CHAKMA VOWEL SIGN AU +11132 11127 ; [.366D.0020.0002] # CHAKMA VOWEL SIGN AU +11130 ; [.366E.0020.0002] # CHAKMA VOWEL SIGN OI +11131 ; [.366F.0020.0002] # CHAKMA O MARK +11132 ; [.3670.0020.0002] # CHAKMA AU MARK +11145 ; [.3671.0020.0002] # CHAKMA VOWEL SIGN AA +11146 ; [.3672.0020.0002] # CHAKMA VOWEL SIGN EI +11133 ; [.3673.0020.0002] # CHAKMA VIRAMA +11134 ; [.3674.0020.0002] # CHAKMA MAAYYAA +1780 ; [.3675.0020.0002] # KHMER LETTER KA +1781 ; [.3676.0020.0002] # KHMER LETTER KHA +1782 ; [.3677.0020.0002] # KHMER LETTER KO +1783 ; [.3678.0020.0002] # KHMER LETTER KHO +1784 ; [.3679.0020.0002] # KHMER LETTER NGO +1785 ; [.367A.0020.0002] # KHMER LETTER CA +1786 ; [.367B.0020.0002] # KHMER LETTER CHA +1787 ; [.367C.0020.0002] # KHMER LETTER CO +1788 ; [.367D.0020.0002] # KHMER LETTER CHO +1789 ; [.367E.0020.0002] # KHMER LETTER NYO +178A ; [.367F.0020.0002] # KHMER LETTER DA +178B ; [.3680.0020.0002] # KHMER LETTER TTHA +178C ; [.3681.0020.0002] # KHMER LETTER DO +178D ; [.3682.0020.0002] # KHMER LETTER TTHO +178E ; [.3683.0020.0002] # KHMER LETTER NNO +178F ; [.3684.0020.0002] # KHMER LETTER TA +1790 ; [.3685.0020.0002] # KHMER LETTER THA +1791 ; [.3686.0020.0002] # KHMER LETTER TO +1792 ; [.3687.0020.0002] # KHMER LETTER THO +1793 ; [.3688.0020.0002] # KHMER LETTER NO +1794 ; [.3689.0020.0002] # KHMER LETTER BA +1795 ; [.368A.0020.0002] # KHMER LETTER PHA +1796 ; [.368B.0020.0002] # KHMER LETTER PO +1797 ; [.368C.0020.0002] # KHMER LETTER PHO +1798 ; [.368D.0020.0002] # KHMER LETTER MO +1799 ; [.368E.0020.0002] # KHMER LETTER YO +179A ; [.368F.0020.0002] # KHMER LETTER RO +179B ; [.3690.0020.0002] # KHMER LETTER LO +179C ; [.3691.0020.0002] # KHMER LETTER VO +179D ; [.3692.0020.0002] # KHMER LETTER SHA +179E ; [.3693.0020.0002] # KHMER LETTER SSO +179F ; [.3694.0020.0002] # KHMER LETTER SA +17A0 ; [.3695.0020.0002] # KHMER LETTER HA +17A1 ; [.3696.0020.0002] # KHMER LETTER LA +17A2 ; [.3697.0020.0002] # KHMER LETTER QA +17DC ; [.3698.0020.0002] # KHMER SIGN AVAKRAHASANYA +17A3 ; [.3699.0020.0002] # KHMER INDEPENDENT VOWEL QAQ +17A4 ; [.369A.0020.0002] # KHMER INDEPENDENT VOWEL QAA +17A5 ; [.369B.0020.0002] # KHMER INDEPENDENT VOWEL QI +17A6 ; [.369C.0020.0002] # KHMER INDEPENDENT VOWEL QII +17A7 ; [.369D.0020.0002] # KHMER INDEPENDENT VOWEL QU +17A8 ; [.369E.0020.0002] # KHMER INDEPENDENT VOWEL QUK +17A9 ; [.369F.0020.0002] # KHMER INDEPENDENT VOWEL QUU +17AA ; [.36A0.0020.0002] # KHMER INDEPENDENT VOWEL QUUV +17AB ; [.36A1.0020.0002] # KHMER INDEPENDENT VOWEL RY +17AC ; [.36A2.0020.0002] # KHMER INDEPENDENT VOWEL RYY +17AD ; [.36A3.0020.0002] # KHMER INDEPENDENT VOWEL LY +17AE ; [.36A4.0020.0002] # KHMER INDEPENDENT VOWEL LYY +17AF ; [.36A5.0020.0002] # KHMER INDEPENDENT VOWEL QE +17B0 ; [.36A6.0020.0002] # KHMER INDEPENDENT VOWEL QAI +17B1 ; [.36A7.0020.0002] # KHMER INDEPENDENT VOWEL QOO TYPE ONE +17B2 ; [.36A8.0020.0002] # KHMER INDEPENDENT VOWEL QOO TYPE TWO +17B3 ; [.36A9.0020.0002] # KHMER INDEPENDENT VOWEL QAU +17B6 ; [.36AA.0020.0002] # KHMER VOWEL SIGN AA +17B7 ; [.36AB.0020.0002] # KHMER VOWEL SIGN I +17B8 ; [.36AC.0020.0002] # KHMER VOWEL SIGN II +17B9 ; [.36AD.0020.0002] # KHMER VOWEL SIGN Y +17BA ; [.36AE.0020.0002] # KHMER VOWEL SIGN YY +17BB ; [.36AF.0020.0002] # KHMER VOWEL SIGN U +17BC ; [.36B0.0020.0002] # KHMER VOWEL SIGN UU +17BD ; [.36B1.0020.0002] # KHMER VOWEL SIGN UA +17BE ; [.36B2.0020.0002] # KHMER VOWEL SIGN OE +17BF ; [.36B3.0020.0002] # KHMER VOWEL SIGN YA +17C0 ; [.36B4.0020.0002] # KHMER VOWEL SIGN IE +17C1 ; [.36B5.0020.0002] # KHMER VOWEL SIGN E +17C2 ; [.36B6.0020.0002] # KHMER VOWEL SIGN AE +17C3 ; [.36B7.0020.0002] # KHMER VOWEL SIGN AI +17C4 ; [.36B8.0020.0002] # KHMER VOWEL SIGN OO +17C5 ; [.36B9.0020.0002] # KHMER VOWEL SIGN AU +17D2 ; [.36BA.0020.0002] # KHMER SIGN COENG +1950 ; [.36BB.0020.0002] # TAI LE LETTER KA +1951 ; [.36BC.0020.0002] # TAI LE LETTER XA +1952 ; [.36BD.0020.0002] # TAI LE LETTER NGA +1953 ; [.36BE.0020.0002] # TAI LE LETTER TSA +1954 ; [.36BF.0020.0002] # TAI LE LETTER SA +1955 ; [.36C0.0020.0002] # TAI LE LETTER YA +1956 ; [.36C1.0020.0002] # TAI LE LETTER TA +1957 ; [.36C2.0020.0002] # TAI LE LETTER THA +1958 ; [.36C3.0020.0002] # TAI LE LETTER LA +1959 ; [.36C4.0020.0002] # TAI LE LETTER PA +195A ; [.36C5.0020.0002] # TAI LE LETTER PHA +195B ; [.36C6.0020.0002] # TAI LE LETTER MA +195C ; [.36C7.0020.0002] # TAI LE LETTER FA +195D ; [.36C8.0020.0002] # TAI LE LETTER VA +195E ; [.36C9.0020.0002] # TAI LE LETTER HA +195F ; [.36CA.0020.0002] # TAI LE LETTER QA +1960 ; [.36CB.0020.0002] # TAI LE LETTER KHA +1961 ; [.36CC.0020.0002] # TAI LE LETTER TSHA +1962 ; [.36CD.0020.0002] # TAI LE LETTER NA +1963 ; [.36CE.0020.0002] # TAI LE LETTER A +1964 ; [.36CF.0020.0002] # TAI LE LETTER I +1965 ; [.36D0.0020.0002] # TAI LE LETTER EE +1966 ; [.36D1.0020.0002] # TAI LE LETTER EH +1967 ; [.36D2.0020.0002] # TAI LE LETTER U +1968 ; [.36D3.0020.0002] # TAI LE LETTER OO +1969 ; [.36D4.0020.0002] # TAI LE LETTER O +196A ; [.36D5.0020.0002] # TAI LE LETTER UE +196B ; [.36D6.0020.0002] # TAI LE LETTER E +196C ; [.36D7.0020.0002] # TAI LE LETTER AUE +196D ; [.36D8.0020.0002] # TAI LE LETTER AI +1970 ; [.36D9.0020.0002] # TAI LE LETTER TONE-2 +1971 ; [.36DA.0020.0002] # TAI LE LETTER TONE-3 +1972 ; [.36DB.0020.0002] # TAI LE LETTER TONE-4 +1973 ; [.36DC.0020.0002] # TAI LE LETTER TONE-5 +1974 ; [.36DD.0020.0002] # TAI LE LETTER TONE-6 +1980 ; [.36DE.0020.0002] # NEW TAI LUE LETTER HIGH QA +19B5 1980 ; [.36DE.0020.0002][.370F.0020.0002] # +19B6 1980 ; [.36DE.0020.0002][.3710.0020.0002] # +19B7 1980 ; [.36DE.0020.0002][.3711.0020.0002] # +19BA 1980 ; [.36DE.0020.0002][.3714.0020.0002] # +1981 ; [.36DF.0020.0002] # NEW TAI LUE LETTER LOW QA +19B5 1981 ; [.36DF.0020.0002][.370F.0020.0002] # +19B6 1981 ; [.36DF.0020.0002][.3710.0020.0002] # +19B7 1981 ; [.36DF.0020.0002][.3711.0020.0002] # +19BA 1981 ; [.36DF.0020.0002][.3714.0020.0002] # +1982 ; [.36E0.0020.0002] # NEW TAI LUE LETTER HIGH KA +19B5 1982 ; [.36E0.0020.0002][.370F.0020.0002] # +19B6 1982 ; [.36E0.0020.0002][.3710.0020.0002] # +19B7 1982 ; [.36E0.0020.0002][.3711.0020.0002] # +19BA 1982 ; [.36E0.0020.0002][.3714.0020.0002] # +1983 ; [.36E1.0020.0002] # NEW TAI LUE LETTER HIGH XA +19B5 1983 ; [.36E1.0020.0002][.370F.0020.0002] # +19B6 1983 ; [.36E1.0020.0002][.3710.0020.0002] # +19B7 1983 ; [.36E1.0020.0002][.3711.0020.0002] # +19BA 1983 ; [.36E1.0020.0002][.3714.0020.0002] # +1984 ; [.36E2.0020.0002] # NEW TAI LUE LETTER HIGH NGA +19B5 1984 ; [.36E2.0020.0002][.370F.0020.0002] # +19B6 1984 ; [.36E2.0020.0002][.3710.0020.0002] # +19B7 1984 ; [.36E2.0020.0002][.3711.0020.0002] # +19BA 1984 ; [.36E2.0020.0002][.3714.0020.0002] # +1985 ; [.36E3.0020.0002] # NEW TAI LUE LETTER LOW KA +19B5 1985 ; [.36E3.0020.0002][.370F.0020.0002] # +19B6 1985 ; [.36E3.0020.0002][.3710.0020.0002] # +19B7 1985 ; [.36E3.0020.0002][.3711.0020.0002] # +19BA 1985 ; [.36E3.0020.0002][.3714.0020.0002] # +1986 ; [.36E4.0020.0002] # NEW TAI LUE LETTER LOW XA +19B5 1986 ; [.36E4.0020.0002][.370F.0020.0002] # +19B6 1986 ; [.36E4.0020.0002][.3710.0020.0002] # +19B7 1986 ; [.36E4.0020.0002][.3711.0020.0002] # +19BA 1986 ; [.36E4.0020.0002][.3714.0020.0002] # +1987 ; [.36E5.0020.0002] # NEW TAI LUE LETTER LOW NGA +19B5 1987 ; [.36E5.0020.0002][.370F.0020.0002] # +19B6 1987 ; [.36E5.0020.0002][.3710.0020.0002] # +19B7 1987 ; [.36E5.0020.0002][.3711.0020.0002] # +19BA 1987 ; [.36E5.0020.0002][.3714.0020.0002] # +1988 ; [.36E6.0020.0002] # NEW TAI LUE LETTER HIGH TSA +19B5 1988 ; [.36E6.0020.0002][.370F.0020.0002] # +19B6 1988 ; [.36E6.0020.0002][.3710.0020.0002] # +19B7 1988 ; [.36E6.0020.0002][.3711.0020.0002] # +19BA 1988 ; [.36E6.0020.0002][.3714.0020.0002] # +1989 ; [.36E7.0020.0002] # NEW TAI LUE LETTER HIGH SA +19B5 1989 ; [.36E7.0020.0002][.370F.0020.0002] # +19B6 1989 ; [.36E7.0020.0002][.3710.0020.0002] # +19B7 1989 ; [.36E7.0020.0002][.3711.0020.0002] # +19BA 1989 ; [.36E7.0020.0002][.3714.0020.0002] # +198A ; [.36E8.0020.0002] # NEW TAI LUE LETTER HIGH YA +19B5 198A ; [.36E8.0020.0002][.370F.0020.0002] # +19B6 198A ; [.36E8.0020.0002][.3710.0020.0002] # +19B7 198A ; [.36E8.0020.0002][.3711.0020.0002] # +19BA 198A ; [.36E8.0020.0002][.3714.0020.0002] # +198B ; [.36E9.0020.0002] # NEW TAI LUE LETTER LOW TSA +19B5 198B ; [.36E9.0020.0002][.370F.0020.0002] # +19B6 198B ; [.36E9.0020.0002][.3710.0020.0002] # +19B7 198B ; [.36E9.0020.0002][.3711.0020.0002] # +19BA 198B ; [.36E9.0020.0002][.3714.0020.0002] # +198C ; [.36EA.0020.0002] # NEW TAI LUE LETTER LOW SA +19B5 198C ; [.36EA.0020.0002][.370F.0020.0002] # +19B6 198C ; [.36EA.0020.0002][.3710.0020.0002] # +19B7 198C ; [.36EA.0020.0002][.3711.0020.0002] # +19BA 198C ; [.36EA.0020.0002][.3714.0020.0002] # +198D ; [.36EB.0020.0002] # NEW TAI LUE LETTER LOW YA +19B5 198D ; [.36EB.0020.0002][.370F.0020.0002] # +19B6 198D ; [.36EB.0020.0002][.3710.0020.0002] # +19B7 198D ; [.36EB.0020.0002][.3711.0020.0002] # +19BA 198D ; [.36EB.0020.0002][.3714.0020.0002] # +198E ; [.36EC.0020.0002] # NEW TAI LUE LETTER HIGH TA +19B5 198E ; [.36EC.0020.0002][.370F.0020.0002] # +19B6 198E ; [.36EC.0020.0002][.3710.0020.0002] # +19B7 198E ; [.36EC.0020.0002][.3711.0020.0002] # +19BA 198E ; [.36EC.0020.0002][.3714.0020.0002] # +198F ; [.36ED.0020.0002] # NEW TAI LUE LETTER HIGH THA +19B5 198F ; [.36ED.0020.0002][.370F.0020.0002] # +19B6 198F ; [.36ED.0020.0002][.3710.0020.0002] # +19B7 198F ; [.36ED.0020.0002][.3711.0020.0002] # +19BA 198F ; [.36ED.0020.0002][.3714.0020.0002] # +1990 ; [.36EE.0020.0002] # NEW TAI LUE LETTER HIGH NA +19B5 1990 ; [.36EE.0020.0002][.370F.0020.0002] # +19B6 1990 ; [.36EE.0020.0002][.3710.0020.0002] # +19B7 1990 ; [.36EE.0020.0002][.3711.0020.0002] # +19BA 1990 ; [.36EE.0020.0002][.3714.0020.0002] # +1991 ; [.36EF.0020.0002] # NEW TAI LUE LETTER LOW TA +19B5 1991 ; [.36EF.0020.0002][.370F.0020.0002] # +19B6 1991 ; [.36EF.0020.0002][.3710.0020.0002] # +19B7 1991 ; [.36EF.0020.0002][.3711.0020.0002] # +19BA 1991 ; [.36EF.0020.0002][.3714.0020.0002] # +1992 ; [.36F0.0020.0002] # NEW TAI LUE LETTER LOW THA +19B5 1992 ; [.36F0.0020.0002][.370F.0020.0002] # +19B6 1992 ; [.36F0.0020.0002][.3710.0020.0002] # +19B7 1992 ; [.36F0.0020.0002][.3711.0020.0002] # +19BA 1992 ; [.36F0.0020.0002][.3714.0020.0002] # +1993 ; [.36F1.0020.0002] # NEW TAI LUE LETTER LOW NA +19B5 1993 ; [.36F1.0020.0002][.370F.0020.0002] # +19B6 1993 ; [.36F1.0020.0002][.3710.0020.0002] # +19B7 1993 ; [.36F1.0020.0002][.3711.0020.0002] # +19BA 1993 ; [.36F1.0020.0002][.3714.0020.0002] # +1994 ; [.36F2.0020.0002] # NEW TAI LUE LETTER HIGH PA +19B5 1994 ; [.36F2.0020.0002][.370F.0020.0002] # +19B6 1994 ; [.36F2.0020.0002][.3710.0020.0002] # +19B7 1994 ; [.36F2.0020.0002][.3711.0020.0002] # +19BA 1994 ; [.36F2.0020.0002][.3714.0020.0002] # +1995 ; [.36F3.0020.0002] # NEW TAI LUE LETTER HIGH PHA +19B5 1995 ; [.36F3.0020.0002][.370F.0020.0002] # +19B6 1995 ; [.36F3.0020.0002][.3710.0020.0002] # +19B7 1995 ; [.36F3.0020.0002][.3711.0020.0002] # +19BA 1995 ; [.36F3.0020.0002][.3714.0020.0002] # +1996 ; [.36F4.0020.0002] # NEW TAI LUE LETTER HIGH MA +19B5 1996 ; [.36F4.0020.0002][.370F.0020.0002] # +19B6 1996 ; [.36F4.0020.0002][.3710.0020.0002] # +19B7 1996 ; [.36F4.0020.0002][.3711.0020.0002] # +19BA 1996 ; [.36F4.0020.0002][.3714.0020.0002] # +1997 ; [.36F5.0020.0002] # NEW TAI LUE LETTER LOW PA +19B5 1997 ; [.36F5.0020.0002][.370F.0020.0002] # +19B6 1997 ; [.36F5.0020.0002][.3710.0020.0002] # +19B7 1997 ; [.36F5.0020.0002][.3711.0020.0002] # +19BA 1997 ; [.36F5.0020.0002][.3714.0020.0002] # +1998 ; [.36F6.0020.0002] # NEW TAI LUE LETTER LOW PHA +19B5 1998 ; [.36F6.0020.0002][.370F.0020.0002] # +19B6 1998 ; [.36F6.0020.0002][.3710.0020.0002] # +19B7 1998 ; [.36F6.0020.0002][.3711.0020.0002] # +19BA 1998 ; [.36F6.0020.0002][.3714.0020.0002] # +1999 ; [.36F7.0020.0002] # NEW TAI LUE LETTER LOW MA +19B5 1999 ; [.36F7.0020.0002][.370F.0020.0002] # +19B6 1999 ; [.36F7.0020.0002][.3710.0020.0002] # +19B7 1999 ; [.36F7.0020.0002][.3711.0020.0002] # +19BA 1999 ; [.36F7.0020.0002][.3714.0020.0002] # +199A ; [.36F8.0020.0002] # NEW TAI LUE LETTER HIGH FA +19B5 199A ; [.36F8.0020.0002][.370F.0020.0002] # +19B6 199A ; [.36F8.0020.0002][.3710.0020.0002] # +19B7 199A ; [.36F8.0020.0002][.3711.0020.0002] # +19BA 199A ; [.36F8.0020.0002][.3714.0020.0002] # +199B ; [.36F9.0020.0002] # NEW TAI LUE LETTER HIGH VA +19B5 199B ; [.36F9.0020.0002][.370F.0020.0002] # +19B6 199B ; [.36F9.0020.0002][.3710.0020.0002] # +19B7 199B ; [.36F9.0020.0002][.3711.0020.0002] # +19BA 199B ; [.36F9.0020.0002][.3714.0020.0002] # +199C ; [.36FA.0020.0002] # NEW TAI LUE LETTER HIGH LA +19B5 199C ; [.36FA.0020.0002][.370F.0020.0002] # +19B6 199C ; [.36FA.0020.0002][.3710.0020.0002] # +19DE ; [.36FA.0020.0004][.3710.0020.0004] # NEW TAI LUE SIGN LAE +19DF ; [.36FA.0020.0004][.3710.0020.0004][.371B.0020.0004] # NEW TAI LUE SIGN LAEV +19B7 199C ; [.36FA.0020.0002][.3711.0020.0002] # +19BA 199C ; [.36FA.0020.0002][.3714.0020.0002] # +199D ; [.36FB.0020.0002] # NEW TAI LUE LETTER LOW FA +19B5 199D ; [.36FB.0020.0002][.370F.0020.0002] # +19B6 199D ; [.36FB.0020.0002][.3710.0020.0002] # +19B7 199D ; [.36FB.0020.0002][.3711.0020.0002] # +19BA 199D ; [.36FB.0020.0002][.3714.0020.0002] # +199E ; [.36FC.0020.0002] # NEW TAI LUE LETTER LOW VA +19B5 199E ; [.36FC.0020.0002][.370F.0020.0002] # +19B6 199E ; [.36FC.0020.0002][.3710.0020.0002] # +19B7 199E ; [.36FC.0020.0002][.3711.0020.0002] # +19BA 199E ; [.36FC.0020.0002][.3714.0020.0002] # +199F ; [.36FD.0020.0002] # NEW TAI LUE LETTER LOW LA +19B5 199F ; [.36FD.0020.0002][.370F.0020.0002] # +19B6 199F ; [.36FD.0020.0002][.3710.0020.0002] # +19B7 199F ; [.36FD.0020.0002][.3711.0020.0002] # +19BA 199F ; [.36FD.0020.0002][.3714.0020.0002] # +19A0 ; [.36FE.0020.0002] # NEW TAI LUE LETTER HIGH HA +19B5 19A0 ; [.36FE.0020.0002][.370F.0020.0002] # +19B6 19A0 ; [.36FE.0020.0002][.3710.0020.0002] # +19B7 19A0 ; [.36FE.0020.0002][.3711.0020.0002] # +19BA 19A0 ; [.36FE.0020.0002][.3714.0020.0002] # +19A1 ; [.36FF.0020.0002] # NEW TAI LUE LETTER HIGH DA +19B5 19A1 ; [.36FF.0020.0002][.370F.0020.0002] # +19B6 19A1 ; [.36FF.0020.0002][.3710.0020.0002] # +19B7 19A1 ; [.36FF.0020.0002][.3711.0020.0002] # +19BA 19A1 ; [.36FF.0020.0002][.3714.0020.0002] # +19A2 ; [.3700.0020.0002] # NEW TAI LUE LETTER HIGH BA +19B5 19A2 ; [.3700.0020.0002][.370F.0020.0002] # +19B6 19A2 ; [.3700.0020.0002][.3710.0020.0002] # +19B7 19A2 ; [.3700.0020.0002][.3711.0020.0002] # +19BA 19A2 ; [.3700.0020.0002][.3714.0020.0002] # +19A3 ; [.3701.0020.0002] # NEW TAI LUE LETTER LOW HA +19B5 19A3 ; [.3701.0020.0002][.370F.0020.0002] # +19B6 19A3 ; [.3701.0020.0002][.3710.0020.0002] # +19B7 19A3 ; [.3701.0020.0002][.3711.0020.0002] # +19BA 19A3 ; [.3701.0020.0002][.3714.0020.0002] # +19A4 ; [.3702.0020.0002] # NEW TAI LUE LETTER LOW DA +19B5 19A4 ; [.3702.0020.0002][.370F.0020.0002] # +19B6 19A4 ; [.3702.0020.0002][.3710.0020.0002] # +19B7 19A4 ; [.3702.0020.0002][.3711.0020.0002] # +19BA 19A4 ; [.3702.0020.0002][.3714.0020.0002] # +19A5 ; [.3703.0020.0002] # NEW TAI LUE LETTER LOW BA +19B5 19A5 ; [.3703.0020.0002][.370F.0020.0002] # +19B6 19A5 ; [.3703.0020.0002][.3710.0020.0002] # +19B7 19A5 ; [.3703.0020.0002][.3711.0020.0002] # +19BA 19A5 ; [.3703.0020.0002][.3714.0020.0002] # +19A6 ; [.3704.0020.0002] # NEW TAI LUE LETTER HIGH KVA +19B5 19A6 ; [.3704.0020.0002][.370F.0020.0002] # +19B6 19A6 ; [.3704.0020.0002][.3710.0020.0002] # +19B7 19A6 ; [.3704.0020.0002][.3711.0020.0002] # +19BA 19A6 ; [.3704.0020.0002][.3714.0020.0002] # +19A7 ; [.3705.0020.0002] # NEW TAI LUE LETTER HIGH XVA +19B5 19A7 ; [.3705.0020.0002][.370F.0020.0002] # +19B6 19A7 ; [.3705.0020.0002][.3710.0020.0002] # +19B7 19A7 ; [.3705.0020.0002][.3711.0020.0002] # +19BA 19A7 ; [.3705.0020.0002][.3714.0020.0002] # +19A8 ; [.3706.0020.0002] # NEW TAI LUE LETTER LOW KVA +19B5 19A8 ; [.3706.0020.0002][.370F.0020.0002] # +19B6 19A8 ; [.3706.0020.0002][.3710.0020.0002] # +19B7 19A8 ; [.3706.0020.0002][.3711.0020.0002] # +19BA 19A8 ; [.3706.0020.0002][.3714.0020.0002] # +19A9 ; [.3707.0020.0002] # NEW TAI LUE LETTER LOW XVA +19B5 19A9 ; [.3707.0020.0002][.370F.0020.0002] # +19B6 19A9 ; [.3707.0020.0002][.3710.0020.0002] # +19B7 19A9 ; [.3707.0020.0002][.3711.0020.0002] # +19BA 19A9 ; [.3707.0020.0002][.3714.0020.0002] # +19AA ; [.3708.0020.0002] # NEW TAI LUE LETTER HIGH SUA +19B5 19AA ; [.3708.0020.0002][.370F.0020.0002] # +19B6 19AA ; [.3708.0020.0002][.3710.0020.0002] # +19B7 19AA ; [.3708.0020.0002][.3711.0020.0002] # +19BA 19AA ; [.3708.0020.0002][.3714.0020.0002] # +19AB ; [.3709.0020.0002] # NEW TAI LUE LETTER LOW SUA +19B5 19AB ; [.3709.0020.0002][.370F.0020.0002] # +19B6 19AB ; [.3709.0020.0002][.3710.0020.0002] # +19B7 19AB ; [.3709.0020.0002][.3711.0020.0002] # +19BA 19AB ; [.3709.0020.0002][.3714.0020.0002] # +19B0 ; [.370A.0020.0002] # NEW TAI LUE VOWEL SIGN VOWEL SHORTENER +19B1 ; [.370B.0020.0002] # NEW TAI LUE VOWEL SIGN AA +19B2 ; [.370C.0020.0002] # NEW TAI LUE VOWEL SIGN II +19B3 ; [.370D.0020.0002] # NEW TAI LUE VOWEL SIGN U +19B4 ; [.370E.0020.0002] # NEW TAI LUE VOWEL SIGN UU +19B5 ; [.370F.0020.0002] # NEW TAI LUE VOWEL SIGN E +19B6 ; [.3710.0020.0002] # NEW TAI LUE VOWEL SIGN AE +19B7 ; [.3711.0020.0002] # NEW TAI LUE VOWEL SIGN O +19B8 ; [.3712.0020.0002] # NEW TAI LUE VOWEL SIGN OA +19B9 ; [.3713.0020.0002] # NEW TAI LUE VOWEL SIGN UE +19BA ; [.3714.0020.0002] # NEW TAI LUE VOWEL SIGN AY +19BB ; [.3715.0020.0002] # NEW TAI LUE VOWEL SIGN AAY +19BC ; [.3716.0020.0002] # NEW TAI LUE VOWEL SIGN UY +19BD ; [.3717.0020.0002] # NEW TAI LUE VOWEL SIGN OY +19BE ; [.3718.0020.0002] # NEW TAI LUE VOWEL SIGN OAY +19BF ; [.3719.0020.0002] # NEW TAI LUE VOWEL SIGN UEY +19C0 ; [.371A.0020.0002] # NEW TAI LUE VOWEL SIGN IY +19C1 ; [.371B.0020.0002] # NEW TAI LUE LETTER FINAL V +19C2 ; [.371C.0020.0002] # NEW TAI LUE LETTER FINAL NG +19C3 ; [.371D.0020.0002] # NEW TAI LUE LETTER FINAL N +19C4 ; [.371E.0020.0002] # NEW TAI LUE LETTER FINAL M +19C5 ; [.371F.0020.0002] # NEW TAI LUE LETTER FINAL K +19C6 ; [.3720.0020.0002] # NEW TAI LUE LETTER FINAL D +19C7 ; [.3721.0020.0002] # NEW TAI LUE LETTER FINAL B +19C8 ; [.3722.0020.0002] # NEW TAI LUE TONE MARK-1 +19C9 ; [.3723.0020.0002] # NEW TAI LUE TONE MARK-2 +1A20 ; [.3724.0020.0002] # TAI THAM LETTER HIGH KA +1A21 ; [.3725.0020.0002] # TAI THAM LETTER HIGH KHA +1A22 ; [.3726.0020.0002] # TAI THAM LETTER HIGH KXA +1A23 ; [.3727.0020.0002] # TAI THAM LETTER LOW KA +1A24 ; [.3728.0020.0002] # TAI THAM LETTER LOW KXA +1A25 ; [.3729.0020.0002] # TAI THAM LETTER LOW KHA +1A26 ; [.372A.0020.0002] # TAI THAM LETTER NGA +1A58 ; [.372A.0020.0004] # TAI THAM SIGN MAI KANG LAI +1A59 ; [.372A.0020.0004] # TAI THAM CONSONANT SIGN FINAL NGA +1A27 ; [.372B.0020.0002] # TAI THAM LETTER HIGH CA +1A28 ; [.372C.0020.0002] # TAI THAM LETTER HIGH CHA +1A29 ; [.372D.0020.0002] # TAI THAM LETTER LOW CA +1A2A ; [.372E.0020.0002] # TAI THAM LETTER LOW SA +1A2B ; [.372F.0020.0002] # TAI THAM LETTER LOW CHA +1A2C ; [.3730.0020.0002] # TAI THAM LETTER NYA +1A2D ; [.3731.0020.0002] # TAI THAM LETTER RATA +1A2E ; [.3732.0020.0002] # TAI THAM LETTER HIGH RATHA +1A2F ; [.3733.0020.0002] # TAI THAM LETTER DA +1A30 ; [.3734.0020.0002] # TAI THAM LETTER LOW RATHA +1A31 ; [.3735.0020.0002] # TAI THAM LETTER RANA +1A32 ; [.3736.0020.0002] # TAI THAM LETTER HIGH TA +1A33 ; [.3737.0020.0002] # TAI THAM LETTER HIGH THA +1A34 ; [.3738.0020.0002] # TAI THAM LETTER LOW TA +1A35 ; [.3739.0020.0002] # TAI THAM LETTER LOW THA +1A36 ; [.373A.0020.0002] # TAI THAM LETTER NA +1A37 ; [.373B.0020.0002] # TAI THAM LETTER BA +1A38 ; [.373C.0020.0002] # TAI THAM LETTER HIGH PA +1A39 ; [.373D.0020.0002] # TAI THAM LETTER HIGH PHA +1A3A ; [.373E.0020.0002] # TAI THAM LETTER HIGH FA +1A3B ; [.373F.0020.0002] # TAI THAM LETTER LOW PA +1A5A ; [.373F.0020.0004] # TAI THAM CONSONANT SIGN LOW PA +1A5B ; [.373F.0020.0004] # TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA +1A3C ; [.3740.0020.0002] # TAI THAM LETTER LOW FA +1A3D ; [.3741.0020.0002] # TAI THAM LETTER LOW PHA +1A3E ; [.3742.0020.0002] # TAI THAM LETTER MA +1A3F ; [.3743.0020.0002] # TAI THAM LETTER LOW YA +1A40 ; [.3744.0020.0002] # TAI THAM LETTER HIGH YA +1A41 ; [.3745.0020.0002] # TAI THAM LETTER RA +1A42 ; [.3746.0020.0002] # TAI THAM LETTER RUE +1A43 ; [.3747.0020.0002] # TAI THAM LETTER LA +1A44 ; [.3748.0020.0002] # TAI THAM LETTER LUE +1A45 ; [.3749.0020.0002] # TAI THAM LETTER WA +1A46 ; [.374A.0020.0002] # TAI THAM LETTER HIGH SHA +1A54 ; [.374A.0020.0004][.3770.0020.0004][.374A.0020.0004] # TAI THAM LETTER GREAT SA +1A47 ; [.374B.0020.0002] # TAI THAM LETTER HIGH SSA +1A48 ; [.374C.0020.0002] # TAI THAM LETTER HIGH SA +1A49 ; [.374D.0020.0002] # TAI THAM LETTER HIGH HA +1A4A ; [.374E.0020.0002] # TAI THAM LETTER LLA +1A4B ; [.374F.0020.0002] # TAI THAM LETTER A +1A4C ; [.3750.0020.0002] # TAI THAM LETTER LOW HA +1A53 ; [.3751.0020.0002] # TAI THAM LETTER LAE +1A6B ; [.3752.0020.0002] # TAI THAM VOWEL SIGN O +1A55 ; [.3753.0020.0002] # TAI THAM CONSONANT SIGN MEDIAL RA +1A56 ; [.3754.0020.0002] # TAI THAM CONSONANT SIGN MEDIAL LA +1A57 ; [.3755.0020.0002] # TAI THAM CONSONANT SIGN LA TANG LAI +1A5C ; [.3756.0020.0002] # TAI THAM CONSONANT SIGN MA +1A5D ; [.3757.0020.0002] # TAI THAM CONSONANT SIGN BA +1A5E ; [.3758.0020.0002] # TAI THAM CONSONANT SIGN SA +1A4D ; [.3759.0020.0002] # TAI THAM LETTER I +1A4E ; [.375A.0020.0002] # TAI THAM LETTER II +1A4F ; [.375B.0020.0002] # TAI THAM LETTER U +1A50 ; [.375C.0020.0002] # TAI THAM LETTER UU +1A51 ; [.375D.0020.0002] # TAI THAM LETTER EE +1A52 ; [.375E.0020.0002] # TAI THAM LETTER OO +1A61 ; [.375F.0020.0002] # TAI THAM VOWEL SIGN A +1A6C ; [.3760.0020.0002] # TAI THAM VOWEL SIGN OA BELOW +1A62 ; [.3761.0020.0002] # TAI THAM VOWEL SIGN MAI SAT +1A63 ; [.3762.0020.0002] # TAI THAM VOWEL SIGN AA +1A64 ; [.3762.0020.0004] # TAI THAM VOWEL SIGN TALL AA +1A65 ; [.3763.0020.0002] # TAI THAM VOWEL SIGN I +1A66 ; [.3764.0020.0002] # TAI THAM VOWEL SIGN II +1A67 ; [.3765.0020.0002] # TAI THAM VOWEL SIGN UE +1A68 ; [.3766.0020.0002] # TAI THAM VOWEL SIGN UUE +1A69 ; [.3767.0020.0002] # TAI THAM VOWEL SIGN U +1A6A ; [.3768.0020.0002] # TAI THAM VOWEL SIGN UU +1A6E ; [.3769.0020.0002] # TAI THAM VOWEL SIGN E +1A6F ; [.376A.0020.0002] # TAI THAM VOWEL SIGN AE +1A73 ; [.376B.0020.0002] # TAI THAM VOWEL SIGN OA ABOVE +1A70 ; [.376C.0020.0002] # TAI THAM VOWEL SIGN OO +1A71 ; [.376D.0020.0002] # TAI THAM VOWEL SIGN AI +1A72 ; [.376E.0020.0002] # TAI THAM VOWEL SIGN THAM AI +1A6D ; [.376F.0020.0002] # TAI THAM VOWEL SIGN OY +1A60 ; [.3770.0020.0002] # TAI THAM SIGN SAKOT +AA00 ; [.3771.0020.0002] # CHAM LETTER A +AA01 ; [.3772.0020.0002] # CHAM LETTER I +AA02 ; [.3773.0020.0002] # CHAM LETTER U +AA03 ; [.3774.0020.0002] # CHAM LETTER E +AA04 ; [.3775.0020.0002] # CHAM LETTER AI +AA05 ; [.3776.0020.0002] # CHAM LETTER O +AA06 ; [.3777.0020.0002] # CHAM LETTER KA +AA07 ; [.3778.0020.0002] # CHAM LETTER KHA +AA08 ; [.3779.0020.0002] # CHAM LETTER GA +AA09 ; [.377A.0020.0002] # CHAM LETTER GHA +AA0A ; [.377B.0020.0002] # CHAM LETTER NGUE +AA0B ; [.377C.0020.0002] # CHAM LETTER NGA +AA0C ; [.377D.0020.0002] # CHAM LETTER CHA +AA0D ; [.377E.0020.0002] # CHAM LETTER CHHA +AA0E ; [.377F.0020.0002] # CHAM LETTER JA +AA0F ; [.3780.0020.0002] # CHAM LETTER JHA +AA10 ; [.3781.0020.0002] # CHAM LETTER NHUE +AA11 ; [.3782.0020.0002] # CHAM LETTER NHA +AA12 ; [.3783.0020.0002] # CHAM LETTER NHJA +AA13 ; [.3784.0020.0002] # CHAM LETTER TA +AA14 ; [.3785.0020.0002] # CHAM LETTER THA +AA15 ; [.3786.0020.0002] # CHAM LETTER DA +AA16 ; [.3787.0020.0002] # CHAM LETTER DHA +AA17 ; [.3788.0020.0002] # CHAM LETTER NUE +AA18 ; [.3789.0020.0002] # CHAM LETTER NA +AA19 ; [.378A.0020.0002] # CHAM LETTER DDA +AA1A ; [.378B.0020.0002] # CHAM LETTER PA +AA1B ; [.378C.0020.0002] # CHAM LETTER PPA +AA1C ; [.378D.0020.0002] # CHAM LETTER PHA +AA1D ; [.378E.0020.0002] # CHAM LETTER BA +AA1E ; [.378F.0020.0002] # CHAM LETTER BHA +AA1F ; [.3790.0020.0002] # CHAM LETTER MUE +AA20 ; [.3791.0020.0002] # CHAM LETTER MA +AA21 ; [.3792.0020.0002] # CHAM LETTER BBA +AA22 ; [.3793.0020.0002] # CHAM LETTER YA +AA23 ; [.3794.0020.0002] # CHAM LETTER RA +AA24 ; [.3795.0020.0002] # CHAM LETTER LA +AA25 ; [.3796.0020.0002] # CHAM LETTER VA +AA26 ; [.3797.0020.0002] # CHAM LETTER SSA +AA27 ; [.3798.0020.0002] # CHAM LETTER SA +AA28 ; [.3799.0020.0002] # CHAM LETTER HA +AA33 ; [.379A.0020.0002] # CHAM CONSONANT SIGN YA +AA34 ; [.379B.0020.0002] # CHAM CONSONANT SIGN RA +AA35 ; [.379C.0020.0002] # CHAM CONSONANT SIGN LA +AA36 ; [.379D.0020.0002] # CHAM CONSONANT SIGN WA +AA29 ; [.379E.0020.0002] # CHAM VOWEL SIGN AA +AA2A ; [.379F.0020.0002] # CHAM VOWEL SIGN I +AA2B ; [.37A0.0020.0002] # CHAM VOWEL SIGN II +AA2C ; [.37A1.0020.0002] # CHAM VOWEL SIGN EI +AA2D ; [.37A2.0020.0002] # CHAM VOWEL SIGN U +AA2E ; [.37A3.0020.0002] # CHAM VOWEL SIGN OE +AA2F ; [.37A4.0020.0002] # CHAM VOWEL SIGN O +AA30 ; [.37A5.0020.0002] # CHAM VOWEL SIGN AI +AA31 ; [.37A6.0020.0002] # CHAM VOWEL SIGN AU +AA32 ; [.37A7.0020.0002] # CHAM VOWEL SIGN UE +AA40 ; [.37A8.0020.0002] # CHAM LETTER FINAL K +AA41 ; [.37A9.0020.0002] # CHAM LETTER FINAL G +AA42 ; [.37AA.0020.0002] # CHAM LETTER FINAL NG +AA43 ; [.37AB.0020.0002] # CHAM CONSONANT SIGN FINAL NG +AA44 ; [.37AC.0020.0002] # CHAM LETTER FINAL CH +AA45 ; [.37AD.0020.0002] # CHAM LETTER FINAL T +AA46 ; [.37AE.0020.0002] # CHAM LETTER FINAL N +AA47 ; [.37AF.0020.0002] # CHAM LETTER FINAL P +AA48 ; [.37B0.0020.0002] # CHAM LETTER FINAL Y +AA49 ; [.37B1.0020.0002] # CHAM LETTER FINAL R +AA4A ; [.37B2.0020.0002] # CHAM LETTER FINAL L +AA4B ; [.37B3.0020.0002] # CHAM LETTER FINAL SS +AA4C ; [.37B4.0020.0002] # CHAM CONSONANT SIGN FINAL M +AA4D ; [.37B5.0020.0002] # CHAM CONSONANT SIGN FINAL H +1B05 ; [.37B6.0020.0002] # BALINESE LETTER AKARA +1B06 ; [.37B7.0020.0002] # BALINESE LETTER AKARA TEDUNG +1B05 1B35 ; [.37B7.0020.0002] # BALINESE LETTER AKARA TEDUNG +1B07 ; [.37B8.0020.0002] # BALINESE LETTER IKARA +1B08 ; [.37B9.0020.0002] # BALINESE LETTER IKARA TEDUNG +1B07 1B35 ; [.37B9.0020.0002] # BALINESE LETTER IKARA TEDUNG +1B09 ; [.37BA.0020.0002] # BALINESE LETTER UKARA +1B0A ; [.37BB.0020.0002] # BALINESE LETTER UKARA TEDUNG +1B09 1B35 ; [.37BB.0020.0002] # BALINESE LETTER UKARA TEDUNG +1B0B ; [.37BC.0020.0002] # BALINESE LETTER RA REPA +1B0C ; [.37BD.0020.0002] # BALINESE LETTER RA REPA TEDUNG +1B0B 1B35 ; [.37BD.0020.0002] # BALINESE LETTER RA REPA TEDUNG +1B0D ; [.37BE.0020.0002] # BALINESE LETTER LA LENGA +1B0E ; [.37BF.0020.0002] # BALINESE LETTER LA LENGA TEDUNG +1B0D 1B35 ; [.37BF.0020.0002] # BALINESE LETTER LA LENGA TEDUNG +1B0F ; [.37C0.0020.0002] # BALINESE LETTER EKARA +1B10 ; [.37C1.0020.0002] # BALINESE LETTER AIKARA +1B11 ; [.37C2.0020.0002] # BALINESE LETTER OKARA +1B12 ; [.37C3.0020.0002] # BALINESE LETTER OKARA TEDUNG +1B11 1B35 ; [.37C3.0020.0002] # BALINESE LETTER OKARA TEDUNG +1B13 ; [.37C4.0020.0002] # BALINESE LETTER KA +1B45 ; [.37C5.0020.0002] # BALINESE LETTER KAF SASAK +1B46 ; [.37C6.0020.0002] # BALINESE LETTER KHOT SASAK +1B14 ; [.37C7.0020.0002] # BALINESE LETTER KA MAHAPRANA +1B15 ; [.37C8.0020.0002] # BALINESE LETTER GA +1B16 ; [.37C9.0020.0002] # BALINESE LETTER GA GORA +1B17 ; [.37CA.0020.0002] # BALINESE LETTER NGA +1B18 ; [.37CB.0020.0002] # BALINESE LETTER CA +1B19 ; [.37CC.0020.0002] # BALINESE LETTER CA LACA +1B1A ; [.37CD.0020.0002] # BALINESE LETTER JA +1B1B ; [.37CE.0020.0002] # BALINESE LETTER JA JERA +1B1C ; [.37CF.0020.0002] # BALINESE LETTER NYA +1B1D ; [.37D0.0020.0002] # BALINESE LETTER TA LATIK +1B1E ; [.37D1.0020.0002] # BALINESE LETTER TA MURDA MAHAPRANA +1B1F ; [.37D2.0020.0002] # BALINESE LETTER DA MURDA ALPAPRANA +1B20 ; [.37D3.0020.0002] # BALINESE LETTER DA MURDA MAHAPRANA +1B21 ; [.37D4.0020.0002] # BALINESE LETTER NA RAMBAT +1B22 ; [.37D5.0020.0002] # BALINESE LETTER TA +1B47 ; [.37D6.0020.0002] # BALINESE LETTER TZIR SASAK +1B23 ; [.37D7.0020.0002] # BALINESE LETTER TA TAWA +1B24 ; [.37D8.0020.0002] # BALINESE LETTER DA +1B25 ; [.37D9.0020.0002] # BALINESE LETTER DA MADU +1B26 ; [.37DA.0020.0002] # BALINESE LETTER NA +1B27 ; [.37DB.0020.0002] # BALINESE LETTER PA +1B48 ; [.37DC.0020.0002] # BALINESE LETTER EF SASAK +1B28 ; [.37DD.0020.0002] # BALINESE LETTER PA KAPAL +1B29 ; [.37DE.0020.0002] # BALINESE LETTER BA +1B2A ; [.37DF.0020.0002] # BALINESE LETTER BA KEMBANG +1B2B ; [.37E0.0020.0002] # BALINESE LETTER MA +1B2C ; [.37E1.0020.0002] # BALINESE LETTER YA +1B2D ; [.37E2.0020.0002] # BALINESE LETTER RA +1B2E ; [.37E3.0020.0002] # BALINESE LETTER LA +1B2F ; [.37E4.0020.0002] # BALINESE LETTER WA +1B49 ; [.37E5.0020.0002] # BALINESE LETTER VE SASAK +1B30 ; [.37E6.0020.0002] # BALINESE LETTER SA SAGA +1B31 ; [.37E7.0020.0002] # BALINESE LETTER SA SAPA +1B32 ; [.37E8.0020.0002] # BALINESE LETTER SA +1B4A ; [.37E9.0020.0002] # BALINESE LETTER ZAL SASAK +1B4B ; [.37EA.0020.0002] # BALINESE LETTER ASYURA SASAK +1B33 ; [.37EB.0020.0002] # BALINESE LETTER HA +1B35 ; [.37EC.0020.0002] # BALINESE VOWEL SIGN TEDUNG +1B36 ; [.37ED.0020.0002] # BALINESE VOWEL SIGN ULU +1B37 ; [.37EE.0020.0002] # BALINESE VOWEL SIGN ULU SARI +1B38 ; [.37EF.0020.0002] # BALINESE VOWEL SIGN SUKU +1B39 ; [.37F0.0020.0002] # BALINESE VOWEL SIGN SUKU ILUT +1B3A ; [.37F1.0020.0002] # BALINESE VOWEL SIGN RA REPA +1B3B ; [.37F2.0020.0002] # BALINESE VOWEL SIGN RA REPA TEDUNG +1B3A 1B35 ; [.37F2.0020.0002] # BALINESE VOWEL SIGN RA REPA TEDUNG +1B3C ; [.37F3.0020.0002] # BALINESE VOWEL SIGN LA LENGA +1B3D ; [.37F4.0020.0002] # BALINESE VOWEL SIGN LA LENGA TEDUNG +1B3C 1B35 ; [.37F4.0020.0002] # BALINESE VOWEL SIGN LA LENGA TEDUNG +1B3E ; [.37F5.0020.0002] # BALINESE VOWEL SIGN TALING +1B3F ; [.37F6.0020.0002] # BALINESE VOWEL SIGN TALING REPA +1B40 ; [.37F7.0020.0002] # BALINESE VOWEL SIGN TALING TEDUNG +1B3E 1B35 ; [.37F7.0020.0002] # BALINESE VOWEL SIGN TALING TEDUNG +1B41 ; [.37F8.0020.0002] # BALINESE VOWEL SIGN TALING REPA TEDUNG +1B3F 1B35 ; [.37F8.0020.0002] # BALINESE VOWEL SIGN TALING REPA TEDUNG +1B42 ; [.37F9.0020.0002] # BALINESE VOWEL SIGN PEPET +1B43 ; [.37FA.0020.0002] # BALINESE VOWEL SIGN PEPET TEDUNG +1B42 1B35 ; [.37FA.0020.0002] # BALINESE VOWEL SIGN PEPET TEDUNG +1B44 ; [.37FB.0020.0002] # BALINESE ADEG ADEG +A984 ; [.37FC.0020.0002] # JAVANESE LETTER A +A985 ; [.37FD.0020.0002] # JAVANESE LETTER I KAWI +A986 ; [.37FE.0020.0002] # JAVANESE LETTER I +A987 ; [.37FF.0020.0002] # JAVANESE LETTER II +A988 ; [.3800.0020.0002] # JAVANESE LETTER U +A989 ; [.3801.0020.0002] # JAVANESE LETTER PA CEREK +A98A ; [.3802.0020.0002] # JAVANESE LETTER NGA LELET +A98B ; [.3803.0020.0002] # JAVANESE LETTER NGA LELET RASWADI +A98C ; [.3804.0020.0002] # JAVANESE LETTER E +A98D ; [.3805.0020.0002] # JAVANESE LETTER AI +A98E ; [.3806.0020.0002] # JAVANESE LETTER O +A98F ; [.3807.0020.0002] # JAVANESE LETTER KA +A990 ; [.3808.0020.0002] # JAVANESE LETTER KA SASAK +A991 ; [.3809.0020.0002] # JAVANESE LETTER KA MURDA +A992 ; [.380A.0020.0002] # JAVANESE LETTER GA +A993 ; [.380B.0020.0002] # JAVANESE LETTER GA MURDA +A994 ; [.380C.0020.0002] # JAVANESE LETTER NGA +A995 ; [.380D.0020.0002] # JAVANESE LETTER CA +A996 ; [.380E.0020.0002] # JAVANESE LETTER CA MURDA +A997 ; [.380F.0020.0002] # JAVANESE LETTER JA +A998 ; [.3810.0020.0002] # JAVANESE LETTER NYA MURDA +A999 ; [.3811.0020.0002] # JAVANESE LETTER JA MAHAPRANA +A99A ; [.3812.0020.0002] # JAVANESE LETTER NYA +A99B ; [.3813.0020.0002] # JAVANESE LETTER TTA +A99C ; [.3814.0020.0002] # JAVANESE LETTER TTA MAHAPRANA +A99D ; [.3815.0020.0002] # JAVANESE LETTER DDA +A99E ; [.3816.0020.0002] # JAVANESE LETTER DDA MAHAPRANA +A99F ; [.3817.0020.0002] # JAVANESE LETTER NA MURDA +A9A0 ; [.3818.0020.0002] # JAVANESE LETTER TA +A9A1 ; [.3819.0020.0002] # JAVANESE LETTER TA MURDA +A9A2 ; [.381A.0020.0002] # JAVANESE LETTER DA +A9A3 ; [.381B.0020.0002] # JAVANESE LETTER DA MAHAPRANA +A9A4 ; [.381C.0020.0002] # JAVANESE LETTER NA +A9A5 ; [.381D.0020.0002] # JAVANESE LETTER PA +A9A6 ; [.381E.0020.0002] # JAVANESE LETTER PA MURDA +A9A7 ; [.381F.0020.0002] # JAVANESE LETTER BA +A9A8 ; [.3820.0020.0002] # JAVANESE LETTER BA MURDA +A9A9 ; [.3821.0020.0002] # JAVANESE LETTER MA +A9AA ; [.3822.0020.0002] # JAVANESE LETTER YA +A9BE ; [.3823.0020.0002] # JAVANESE CONSONANT SIGN PENGKAL +A9AB ; [.3824.0020.0002] # JAVANESE LETTER RA +A9AC ; [.3824.0020.0004] # JAVANESE LETTER RA AGUNG +A9BF ; [.3825.0020.0002] # JAVANESE CONSONANT SIGN CAKRA +A9AD ; [.3826.0020.0002] # JAVANESE LETTER LA +A9AE ; [.3827.0020.0002] # JAVANESE LETTER WA +A9AF ; [.3828.0020.0002] # JAVANESE LETTER SA MURDA +A9B0 ; [.3829.0020.0002] # JAVANESE LETTER SA MAHAPRANA +A9B1 ; [.382A.0020.0002] # JAVANESE LETTER SA +A9B2 ; [.382B.0020.0002] # JAVANESE LETTER HA +A9B4 ; [.382C.0020.0002] # JAVANESE VOWEL SIGN TARUNG +A9B5 ; [.382C.0020.0004] # JAVANESE VOWEL SIGN TOLONG +A9BC ; [.382D.0020.0002] # JAVANESE VOWEL SIGN PEPET +A9B6 ; [.382E.0020.0002] # JAVANESE VOWEL SIGN WULU +A9B7 ; [.382F.0020.0002] # JAVANESE VOWEL SIGN WULU MELIK +A9B8 ; [.3830.0020.0002] # JAVANESE VOWEL SIGN SUKU +A9B9 ; [.3831.0020.0002] # JAVANESE VOWEL SIGN SUKU MENDUT +A9BD ; [.3832.0020.0002] # JAVANESE CONSONANT SIGN KERET +A9BA ; [.3833.0020.0002] # JAVANESE VOWEL SIGN TALING +A9BB ; [.3834.0020.0002] # JAVANESE VOWEL SIGN DIRGA MURE +A9C0 ; [.3835.0020.0002] # JAVANESE PANGKON +1880 ; [.3836.0020.0002] # MONGOLIAN LETTER ALI GALI ANUSVARA ONE +1881 ; [.3837.0020.0002] # MONGOLIAN LETTER ALI GALI VISARGA ONE +1882 ; [.3838.0020.0002] # MONGOLIAN LETTER ALI GALI DAMARU +1883 ; [.3839.0020.0002] # MONGOLIAN LETTER ALI GALI UBADAMA +1884 ; [.383A.0020.0002] # MONGOLIAN LETTER ALI GALI INVERTED UBADAMA +1885 ; [.383B.0020.0002] # MONGOLIAN LETTER ALI GALI BALUDA +1886 ; [.383C.0020.0002] # MONGOLIAN LETTER ALI GALI THREE BALUDA +1843 ; [.383D.0020.0002] # MONGOLIAN LETTER TODO LONG VOWEL SIGN +1820 ; [.383E.0020.0002] # MONGOLIAN LETTER A +1887 ; [.383F.0020.0002] # MONGOLIAN LETTER ALI GALI A +1821 ; [.3840.0020.0002] # MONGOLIAN LETTER E +1844 ; [.3841.0020.0002] # MONGOLIAN LETTER TODO E +185D ; [.3842.0020.0002] # MONGOLIAN LETTER SIBE E +1822 ; [.3843.0020.0002] # MONGOLIAN LETTER I +1845 ; [.3844.0020.0002] # MONGOLIAN LETTER TODO I +185E ; [.3845.0020.0002] # MONGOLIAN LETTER SIBE I +1873 ; [.3846.0020.0002] # MONGOLIAN LETTER MANCHU I +1888 ; [.3847.0020.0002] # MONGOLIAN LETTER ALI GALI I +185F ; [.3848.0020.0002] # MONGOLIAN LETTER SIBE IY +1823 ; [.3849.0020.0002] # MONGOLIAN LETTER O +1846 ; [.384A.0020.0002] # MONGOLIAN LETTER TODO O +1824 ; [.384B.0020.0002] # MONGOLIAN LETTER U +1847 ; [.384C.0020.0002] # MONGOLIAN LETTER TODO U +1861 ; [.384D.0020.0002] # MONGOLIAN LETTER SIBE U +1825 ; [.384E.0020.0002] # MONGOLIAN LETTER OE +1848 ; [.384F.0020.0002] # MONGOLIAN LETTER TODO OE +1826 ; [.3850.0020.0002] # MONGOLIAN LETTER UE +1849 ; [.3851.0020.0002] # MONGOLIAN LETTER TODO UE +1860 ; [.3852.0020.0002] # MONGOLIAN LETTER SIBE UE +1827 ; [.3853.0020.0002] # MONGOLIAN LETTER EE +1828 ; [.3854.0020.0002] # MONGOLIAN LETTER NA +1829 ; [.3855.0020.0002] # MONGOLIAN LETTER ANG +184A ; [.3856.0020.0002] # MONGOLIAN LETTER TODO ANG +1862 ; [.3857.0020.0002] # MONGOLIAN LETTER SIBE ANG +188A ; [.3858.0020.0002] # MONGOLIAN LETTER ALI GALI NGA +189B ; [.3859.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI NGA +182A ; [.385A.0020.0002] # MONGOLIAN LETTER BA +184B ; [.385B.0020.0002] # MONGOLIAN LETTER TODO BA +182B ; [.385C.0020.0002] # MONGOLIAN LETTER PA +184C ; [.385D.0020.0002] # MONGOLIAN LETTER TODO PA +1866 ; [.385E.0020.0002] # MONGOLIAN LETTER SIBE PA +182C ; [.385F.0020.0002] # MONGOLIAN LETTER QA +184D ; [.3860.0020.0002] # MONGOLIAN LETTER TODO QA +182D ; [.3861.0020.0002] # MONGOLIAN LETTER GA +184E ; [.3862.0020.0002] # MONGOLIAN LETTER TODO GA +1864 ; [.3863.0020.0002] # MONGOLIAN LETTER SIBE GA +189A ; [.3864.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI GHA +1865 ; [.3865.0020.0002] # MONGOLIAN LETTER SIBE HA +182E ; [.3866.0020.0002] # MONGOLIAN LETTER MA +184F ; [.3867.0020.0002] # MONGOLIAN LETTER TODO MA +182F ; [.3868.0020.0002] # MONGOLIAN LETTER LA +1830 ; [.3869.0020.0002] # MONGOLIAN LETTER SA +1831 ; [.386A.0020.0002] # MONGOLIAN LETTER SHA +1867 ; [.386B.0020.0002] # MONGOLIAN LETTER SIBE SHA +189C ; [.386C.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI CA +189D ; [.386D.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI JHA +18A2 ; [.386E.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI SSA +18A4 ; [.386F.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI ZHA +18A5 ; [.3870.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI ZA +1832 ; [.3871.0020.0002] # MONGOLIAN LETTER TA +1850 ; [.3872.0020.0002] # MONGOLIAN LETTER TODO TA +1868 ; [.3873.0020.0002] # MONGOLIAN LETTER SIBE TA +1833 ; [.3874.0020.0002] # MONGOLIAN LETTER DA +1851 ; [.3875.0020.0002] # MONGOLIAN LETTER TODO DA +1869 ; [.3876.0020.0002] # MONGOLIAN LETTER SIBE DA +1834 ; [.3877.0020.0002] # MONGOLIAN LETTER CHA +1852 ; [.3878.0020.0002] # MONGOLIAN LETTER TODO CHA +1871 ; [.3879.0020.0002] # MONGOLIAN LETTER SIBE CHA +1878 ; [.387A.0020.0002] # MONGOLIAN LETTER CHA WITH TWO DOTS +185C ; [.387B.0020.0002] # MONGOLIAN LETTER TODO DZA +188B ; [.387C.0020.0002] # MONGOLIAN LETTER ALI GALI CA +1835 ; [.387D.0020.0002] # MONGOLIAN LETTER JA +1853 ; [.387E.0020.0002] # MONGOLIAN LETTER TODO JA +186A ; [.387F.0020.0002] # MONGOLIAN LETTER SIBE JA +1877 ; [.3880.0020.0002] # MONGOLIAN LETTER MANCHU ZHA +1836 ; [.3881.0020.0002] # MONGOLIAN LETTER YA +1855 ; [.3882.0020.0002] # MONGOLIAN LETTER TODO YA +1872 ; [.3883.0020.0002] # MONGOLIAN LETTER SIBE ZHA +1837 ; [.3884.0020.0002] # MONGOLIAN LETTER RA +1875 ; [.3885.0020.0002] # MONGOLIAN LETTER MANCHU RA +1838 ; [.3886.0020.0002] # MONGOLIAN LETTER WA +1856 ; [.3887.0020.0002] # MONGOLIAN LETTER TODO WA +1839 ; [.3888.0020.0002] # MONGOLIAN LETTER FA +186B ; [.3889.0020.0002] # MONGOLIAN LETTER SIBE FA +1876 ; [.388A.0020.0002] # MONGOLIAN LETTER MANCHU FA +183A ; [.388B.0020.0002] # MONGOLIAN LETTER KA +1857 ; [.388C.0020.0002] # MONGOLIAN LETTER TODO KA +1863 ; [.388D.0020.0002] # MONGOLIAN LETTER SIBE KA +1874 ; [.388E.0020.0002] # MONGOLIAN LETTER MANCHU KA +1889 ; [.388F.0020.0002] # MONGOLIAN LETTER ALI GALI KA +183B ; [.3890.0020.0002] # MONGOLIAN LETTER KHA +183C ; [.3891.0020.0002] # MONGOLIAN LETTER TSA +1854 ; [.3892.0020.0002] # MONGOLIAN LETTER TODO TSA +186E ; [.3893.0020.0002] # MONGOLIAN LETTER SIBE TSA +183D ; [.3894.0020.0002] # MONGOLIAN LETTER ZA +186F ; [.3895.0020.0002] # MONGOLIAN LETTER SIBE ZA +1858 ; [.3896.0020.0002] # MONGOLIAN LETTER TODO GAA +186C ; [.3897.0020.0002] # MONGOLIAN LETTER SIBE GAA +183E ; [.3898.0020.0002] # MONGOLIAN LETTER HAA +1859 ; [.3899.0020.0002] # MONGOLIAN LETTER TODO HAA +186D ; [.389A.0020.0002] # MONGOLIAN LETTER SIBE HAA +183F ; [.389B.0020.0002] # MONGOLIAN LETTER ZRA +1840 ; [.389C.0020.0002] # MONGOLIAN LETTER LHA +1841 ; [.389D.0020.0002] # MONGOLIAN LETTER ZHI +1842 ; [.389E.0020.0002] # MONGOLIAN LETTER CHI +185A ; [.389F.0020.0002] # MONGOLIAN LETTER TODO JIA +185B ; [.38A0.0020.0002] # MONGOLIAN LETTER TODO NIA +1870 ; [.38A1.0020.0002] # MONGOLIAN LETTER SIBE RAA +188C ; [.38A2.0020.0002] # MONGOLIAN LETTER ALI GALI TTA +189E ; [.38A3.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI TTA +188D ; [.38A4.0020.0002] # MONGOLIAN LETTER ALI GALI TTHA +188E ; [.38A5.0020.0002] # MONGOLIAN LETTER ALI GALI DDA +189F ; [.38A6.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI DDHA +188F ; [.38A7.0020.0002] # MONGOLIAN LETTER ALI GALI NNA +1890 ; [.38A8.0020.0002] # MONGOLIAN LETTER ALI GALI TA +1898 ; [.38A9.0020.0002] # MONGOLIAN LETTER TODO ALI GALI TA +18A0 ; [.38AA.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI TA +1891 ; [.38AB.0020.0002] # MONGOLIAN LETTER ALI GALI DA +18A1 ; [.38AC.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI DHA +1892 ; [.38AD.0020.0002] # MONGOLIAN LETTER ALI GALI PA +1893 ; [.38AE.0020.0002] # MONGOLIAN LETTER ALI GALI PHA +18A8 ; [.38AF.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI BHA +1894 ; [.38B0.0020.0002] # MONGOLIAN LETTER ALI GALI SSA +18A3 ; [.38B1.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI CYA +1895 ; [.38B2.0020.0002] # MONGOLIAN LETTER ALI GALI ZHA +1899 ; [.38B3.0020.0002] # MONGOLIAN LETTER TODO ALI GALI ZHA +1896 ; [.38B4.0020.0002] # MONGOLIAN LETTER ALI GALI ZA +1897 ; [.38B5.0020.0002] # MONGOLIAN LETTER ALI GALI AH +18A6 ; [.38B6.0020.0002] # MONGOLIAN LETTER ALI GALI HALF U +18A7 ; [.38B7.0020.0002] # MONGOLIAN LETTER ALI GALI HALF YA +18AA ; [.38B8.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI LHA +18A9 ; [.38B9.0020.0002] # MONGOLIAN LETTER ALI GALI DAGALGA +1C5A ; [.38BA.0020.0002] # OL CHIKI LETTER LA +1C5B ; [.38BB.0020.0002] # OL CHIKI LETTER AT +1C5C ; [.38BC.0020.0002] # OL CHIKI LETTER AG +1C5D ; [.38BD.0020.0002] # OL CHIKI LETTER ANG +1C5E ; [.38BE.0020.0002] # OL CHIKI LETTER AL +1C5F ; [.38BF.0020.0002] # OL CHIKI LETTER LAA +1C60 ; [.38C0.0020.0002] # OL CHIKI LETTER AAK +1C61 ; [.38C1.0020.0002] # OL CHIKI LETTER AAJ +1C62 ; [.38C2.0020.0002] # OL CHIKI LETTER AAM +1C63 ; [.38C3.0020.0002] # OL CHIKI LETTER AAW +1C64 ; [.38C4.0020.0002] # OL CHIKI LETTER LI +1C65 ; [.38C5.0020.0002] # OL CHIKI LETTER IS +1C66 ; [.38C6.0020.0002] # OL CHIKI LETTER IH +1C67 ; [.38C7.0020.0002] # OL CHIKI LETTER INY +1C68 ; [.38C8.0020.0002] # OL CHIKI LETTER IR +1C69 ; [.38C9.0020.0002] # OL CHIKI LETTER LU +1C6A ; [.38CA.0020.0002] # OL CHIKI LETTER UC +1C6B ; [.38CB.0020.0002] # OL CHIKI LETTER UD +1C6C ; [.38CC.0020.0002] # OL CHIKI LETTER UNN +1C6D ; [.38CD.0020.0002] # OL CHIKI LETTER UY +1C6E ; [.38CE.0020.0002] # OL CHIKI LETTER LE +1C6F ; [.38CF.0020.0002] # OL CHIKI LETTER EP +1C70 ; [.38D0.0020.0002] # OL CHIKI LETTER EDD +1C71 ; [.38D1.0020.0002] # OL CHIKI LETTER EN +1C72 ; [.38D2.0020.0002] # OL CHIKI LETTER ERR +1C73 ; [.38D3.0020.0002] # OL CHIKI LETTER LO +1C74 ; [.38D4.0020.0002] # OL CHIKI LETTER OTT +1C75 ; [.38D5.0020.0002] # OL CHIKI LETTER OB +1C76 ; [.38D6.0020.0002] # OL CHIKI LETTER OV +1C77 ; [.38D7.0020.0002] # OL CHIKI LETTER OH +1C78 ; [.38D8.0020.0002] # OL CHIKI MU TTUDDAG +1C79 ; [.38D9.0020.0002] # OL CHIKI GAAHLAA TTUDDAAG +1C7A ; [.38DA.0020.0002] # OL CHIKI MU-GAAHLAA TTUDDAAG +1C7B ; [.38DB.0020.0002] # OL CHIKI RELAA +1C7C ; [.38DC.0020.0002] # OL CHIKI PHAARKAA +1C7D ; [.38DD.0020.0002] # OL CHIKI AHAD +AB70 ; [.38DE.0020.0002] # CHEROKEE SMALL LETTER A +13A0 ; [.38DE.0020.0008] # CHEROKEE LETTER A +AB71 ; [.38DF.0020.0002] # CHEROKEE SMALL LETTER E +13A1 ; [.38DF.0020.0008] # CHEROKEE LETTER E +AB72 ; [.38E0.0020.0002] # CHEROKEE SMALL LETTER I +13A2 ; [.38E0.0020.0008] # CHEROKEE LETTER I +AB73 ; [.38E1.0020.0002] # CHEROKEE SMALL LETTER O +13A3 ; [.38E1.0020.0008] # CHEROKEE LETTER O +AB74 ; [.38E2.0020.0002] # CHEROKEE SMALL LETTER U +13A4 ; [.38E2.0020.0008] # CHEROKEE LETTER U +AB75 ; [.38E3.0020.0002] # CHEROKEE SMALL LETTER V +13A5 ; [.38E3.0020.0008] # CHEROKEE LETTER V +AB76 ; [.38E4.0020.0002] # CHEROKEE SMALL LETTER GA +13A6 ; [.38E4.0020.0008] # CHEROKEE LETTER GA +AB77 ; [.38E5.0020.0002] # CHEROKEE SMALL LETTER KA +13A7 ; [.38E5.0020.0008] # CHEROKEE LETTER KA +AB78 ; [.38E6.0020.0002] # CHEROKEE SMALL LETTER GE +13A8 ; [.38E6.0020.0008] # CHEROKEE LETTER GE +AB79 ; [.38E7.0020.0002] # CHEROKEE SMALL LETTER GI +13A9 ; [.38E7.0020.0008] # CHEROKEE LETTER GI +AB7A ; [.38E8.0020.0002] # CHEROKEE SMALL LETTER GO +13AA ; [.38E8.0020.0008] # CHEROKEE LETTER GO +AB7B ; [.38E9.0020.0002] # CHEROKEE SMALL LETTER GU +13AB ; [.38E9.0020.0008] # CHEROKEE LETTER GU +AB7C ; [.38EA.0020.0002] # CHEROKEE SMALL LETTER GV +13AC ; [.38EA.0020.0008] # CHEROKEE LETTER GV +AB7D ; [.38EB.0020.0002] # CHEROKEE SMALL LETTER HA +13AD ; [.38EB.0020.0008] # CHEROKEE LETTER HA +AB7E ; [.38EC.0020.0002] # CHEROKEE SMALL LETTER HE +13AE ; [.38EC.0020.0008] # CHEROKEE LETTER HE +AB7F ; [.38ED.0020.0002] # CHEROKEE SMALL LETTER HI +13AF ; [.38ED.0020.0008] # CHEROKEE LETTER HI +AB80 ; [.38EE.0020.0002] # CHEROKEE SMALL LETTER HO +13B0 ; [.38EE.0020.0008] # CHEROKEE LETTER HO +AB81 ; [.38EF.0020.0002] # CHEROKEE SMALL LETTER HU +13B1 ; [.38EF.0020.0008] # CHEROKEE LETTER HU +AB82 ; [.38F0.0020.0002] # CHEROKEE SMALL LETTER HV +13B2 ; [.38F0.0020.0008] # CHEROKEE LETTER HV +AB83 ; [.38F1.0020.0002] # CHEROKEE SMALL LETTER LA +13B3 ; [.38F1.0020.0008] # CHEROKEE LETTER LA +AB84 ; [.38F2.0020.0002] # CHEROKEE SMALL LETTER LE +13B4 ; [.38F2.0020.0008] # CHEROKEE LETTER LE +AB85 ; [.38F3.0020.0002] # CHEROKEE SMALL LETTER LI +13B5 ; [.38F3.0020.0008] # CHEROKEE LETTER LI +AB86 ; [.38F4.0020.0002] # CHEROKEE SMALL LETTER LO +13B6 ; [.38F4.0020.0008] # CHEROKEE LETTER LO +AB87 ; [.38F5.0020.0002] # CHEROKEE SMALL LETTER LU +13B7 ; [.38F5.0020.0008] # CHEROKEE LETTER LU +AB88 ; [.38F6.0020.0002] # CHEROKEE SMALL LETTER LV +13B8 ; [.38F6.0020.0008] # CHEROKEE LETTER LV +AB89 ; [.38F7.0020.0002] # CHEROKEE SMALL LETTER MA +13B9 ; [.38F7.0020.0008] # CHEROKEE LETTER MA +AB8A ; [.38F8.0020.0002] # CHEROKEE SMALL LETTER ME +13BA ; [.38F8.0020.0008] # CHEROKEE LETTER ME +AB8B ; [.38F9.0020.0002] # CHEROKEE SMALL LETTER MI +13BB ; [.38F9.0020.0008] # CHEROKEE LETTER MI +AB8C ; [.38FA.0020.0002] # CHEROKEE SMALL LETTER MO +13BC ; [.38FA.0020.0008] # CHEROKEE LETTER MO +AB8D ; [.38FB.0020.0002] # CHEROKEE SMALL LETTER MU +13BD ; [.38FB.0020.0008] # CHEROKEE LETTER MU +AB8E ; [.38FC.0020.0002] # CHEROKEE SMALL LETTER NA +13BE ; [.38FC.0020.0008] # CHEROKEE LETTER NA +AB8F ; [.38FD.0020.0002] # CHEROKEE SMALL LETTER HNA +13BF ; [.38FD.0020.0008] # CHEROKEE LETTER HNA +AB90 ; [.38FE.0020.0002] # CHEROKEE SMALL LETTER NAH +13C0 ; [.38FE.0020.0008] # CHEROKEE LETTER NAH +AB91 ; [.38FF.0020.0002] # CHEROKEE SMALL LETTER NE +13C1 ; [.38FF.0020.0008] # CHEROKEE LETTER NE +AB92 ; [.3900.0020.0002] # CHEROKEE SMALL LETTER NI +13C2 ; [.3900.0020.0008] # CHEROKEE LETTER NI +AB93 ; [.3901.0020.0002] # CHEROKEE SMALL LETTER NO +13C3 ; [.3901.0020.0008] # CHEROKEE LETTER NO +AB94 ; [.3902.0020.0002] # CHEROKEE SMALL LETTER NU +13C4 ; [.3902.0020.0008] # CHEROKEE LETTER NU +AB95 ; [.3903.0020.0002] # CHEROKEE SMALL LETTER NV +13C5 ; [.3903.0020.0008] # CHEROKEE LETTER NV +AB96 ; [.3904.0020.0002] # CHEROKEE SMALL LETTER QUA +13C6 ; [.3904.0020.0008] # CHEROKEE LETTER QUA +AB97 ; [.3905.0020.0002] # CHEROKEE SMALL LETTER QUE +13C7 ; [.3905.0020.0008] # CHEROKEE LETTER QUE +AB98 ; [.3906.0020.0002] # CHEROKEE SMALL LETTER QUI +13C8 ; [.3906.0020.0008] # CHEROKEE LETTER QUI +AB99 ; [.3907.0020.0002] # CHEROKEE SMALL LETTER QUO +13C9 ; [.3907.0020.0008] # CHEROKEE LETTER QUO +AB9A ; [.3908.0020.0002] # CHEROKEE SMALL LETTER QUU +13CA ; [.3908.0020.0008] # CHEROKEE LETTER QUU +AB9B ; [.3909.0020.0002] # CHEROKEE SMALL LETTER QUV +13CB ; [.3909.0020.0008] # CHEROKEE LETTER QUV +AB9C ; [.390A.0020.0002] # CHEROKEE SMALL LETTER SA +13CC ; [.390A.0020.0008] # CHEROKEE LETTER SA +AB9D ; [.390B.0020.0002] # CHEROKEE SMALL LETTER S +13CD ; [.390B.0020.0008] # CHEROKEE LETTER S +AB9E ; [.390C.0020.0002] # CHEROKEE SMALL LETTER SE +13CE ; [.390C.0020.0008] # CHEROKEE LETTER SE +AB9F ; [.390D.0020.0002] # CHEROKEE SMALL LETTER SI +13CF ; [.390D.0020.0008] # CHEROKEE LETTER SI +ABA0 ; [.390E.0020.0002] # CHEROKEE SMALL LETTER SO +13D0 ; [.390E.0020.0008] # CHEROKEE LETTER SO +ABA1 ; [.390F.0020.0002] # CHEROKEE SMALL LETTER SU +13D1 ; [.390F.0020.0008] # CHEROKEE LETTER SU +ABA2 ; [.3910.0020.0002] # CHEROKEE SMALL LETTER SV +13D2 ; [.3910.0020.0008] # CHEROKEE LETTER SV +ABA3 ; [.3911.0020.0002] # CHEROKEE SMALL LETTER DA +13D3 ; [.3911.0020.0008] # CHEROKEE LETTER DA +ABA4 ; [.3912.0020.0002] # CHEROKEE SMALL LETTER TA +13D4 ; [.3912.0020.0008] # CHEROKEE LETTER TA +ABA5 ; [.3913.0020.0002] # CHEROKEE SMALL LETTER DE +13D5 ; [.3913.0020.0008] # CHEROKEE LETTER DE +ABA6 ; [.3914.0020.0002] # CHEROKEE SMALL LETTER TE +13D6 ; [.3914.0020.0008] # CHEROKEE LETTER TE +ABA7 ; [.3915.0020.0002] # CHEROKEE SMALL LETTER DI +13D7 ; [.3915.0020.0008] # CHEROKEE LETTER DI +ABA8 ; [.3916.0020.0002] # CHEROKEE SMALL LETTER TI +13D8 ; [.3916.0020.0008] # CHEROKEE LETTER TI +ABA9 ; [.3917.0020.0002] # CHEROKEE SMALL LETTER DO +13D9 ; [.3917.0020.0008] # CHEROKEE LETTER DO +ABAA ; [.3918.0020.0002] # CHEROKEE SMALL LETTER DU +13DA ; [.3918.0020.0008] # CHEROKEE LETTER DU +ABAB ; [.3919.0020.0002] # CHEROKEE SMALL LETTER DV +13DB ; [.3919.0020.0008] # CHEROKEE LETTER DV +ABAC ; [.391A.0020.0002] # CHEROKEE SMALL LETTER DLA +13DC ; [.391A.0020.0008] # CHEROKEE LETTER DLA +ABAD ; [.391B.0020.0002] # CHEROKEE SMALL LETTER TLA +13DD ; [.391B.0020.0008] # CHEROKEE LETTER TLA +ABAE ; [.391C.0020.0002] # CHEROKEE SMALL LETTER TLE +13DE ; [.391C.0020.0008] # CHEROKEE LETTER TLE +ABAF ; [.391D.0020.0002] # CHEROKEE SMALL LETTER TLI +13DF ; [.391D.0020.0008] # CHEROKEE LETTER TLI +ABB0 ; [.391E.0020.0002] # CHEROKEE SMALL LETTER TLO +13E0 ; [.391E.0020.0008] # CHEROKEE LETTER TLO +ABB1 ; [.391F.0020.0002] # CHEROKEE SMALL LETTER TLU +13E1 ; [.391F.0020.0008] # CHEROKEE LETTER TLU +ABB2 ; [.3920.0020.0002] # CHEROKEE SMALL LETTER TLV +13E2 ; [.3920.0020.0008] # CHEROKEE LETTER TLV +ABB3 ; [.3921.0020.0002] # CHEROKEE SMALL LETTER TSA +13E3 ; [.3921.0020.0008] # CHEROKEE LETTER TSA +ABB4 ; [.3922.0020.0002] # CHEROKEE SMALL LETTER TSE +13E4 ; [.3922.0020.0008] # CHEROKEE LETTER TSE +ABB5 ; [.3923.0020.0002] # CHEROKEE SMALL LETTER TSI +13E5 ; [.3923.0020.0008] # CHEROKEE LETTER TSI +ABB6 ; [.3924.0020.0002] # CHEROKEE SMALL LETTER TSO +13E6 ; [.3924.0020.0008] # CHEROKEE LETTER TSO +ABB7 ; [.3925.0020.0002] # CHEROKEE SMALL LETTER TSU +13E7 ; [.3925.0020.0008] # CHEROKEE LETTER TSU +ABB8 ; [.3926.0020.0002] # CHEROKEE SMALL LETTER TSV +13E8 ; [.3926.0020.0008] # CHEROKEE LETTER TSV +ABB9 ; [.3927.0020.0002] # CHEROKEE SMALL LETTER WA +13E9 ; [.3927.0020.0008] # CHEROKEE LETTER WA +ABBA ; [.3928.0020.0002] # CHEROKEE SMALL LETTER WE +13EA ; [.3928.0020.0008] # CHEROKEE LETTER WE +ABBB ; [.3929.0020.0002] # CHEROKEE SMALL LETTER WI +13EB ; [.3929.0020.0008] # CHEROKEE LETTER WI +ABBC ; [.392A.0020.0002] # CHEROKEE SMALL LETTER WO +13EC ; [.392A.0020.0008] # CHEROKEE LETTER WO +ABBD ; [.392B.0020.0002] # CHEROKEE SMALL LETTER WU +13ED ; [.392B.0020.0008] # CHEROKEE LETTER WU +ABBE ; [.392C.0020.0002] # CHEROKEE SMALL LETTER WV +13EE ; [.392C.0020.0008] # CHEROKEE LETTER WV +ABBF ; [.392D.0020.0002] # CHEROKEE SMALL LETTER YA +13EF ; [.392D.0020.0008] # CHEROKEE LETTER YA +13F8 ; [.392E.0020.0002] # CHEROKEE SMALL LETTER YE +13F0 ; [.392E.0020.0008] # CHEROKEE LETTER YE +13F9 ; [.392F.0020.0002] # CHEROKEE SMALL LETTER YI +13F1 ; [.392F.0020.0008] # CHEROKEE LETTER YI +13FA ; [.3930.0020.0002] # CHEROKEE SMALL LETTER YO +13F2 ; [.3930.0020.0008] # CHEROKEE LETTER YO +13FB ; [.3931.0020.0002] # CHEROKEE SMALL LETTER YU +13F3 ; [.3931.0020.0008] # CHEROKEE LETTER YU +13FC ; [.3932.0020.0002] # CHEROKEE SMALL LETTER YV +13F4 ; [.3932.0020.0008] # CHEROKEE LETTER YV +13FD ; [.3933.0020.0002] # CHEROKEE SMALL LETTER MV +13F5 ; [.3933.0020.0008] # CHEROKEE LETTER MV +104D8 ; [.3934.0020.0002] # OSAGE SMALL LETTER A +104B0 ; [.3934.0020.0008] # OSAGE CAPITAL LETTER A +104D9 ; [.3935.0020.0002] # OSAGE SMALL LETTER AI +104B1 ; [.3935.0020.0008] # OSAGE CAPITAL LETTER AI +104DA ; [.3936.0020.0002] # OSAGE SMALL LETTER AIN +104B2 ; [.3936.0020.0008] # OSAGE CAPITAL LETTER AIN +104DB ; [.3937.0020.0002] # OSAGE SMALL LETTER AH +104B3 ; [.3937.0020.0008] # OSAGE CAPITAL LETTER AH +104DC ; [.3938.0020.0002] # OSAGE SMALL LETTER BRA +104B4 ; [.3938.0020.0008] # OSAGE CAPITAL LETTER BRA +104DD ; [.3939.0020.0002] # OSAGE SMALL LETTER CHA +104B5 ; [.3939.0020.0008] # OSAGE CAPITAL LETTER CHA +104DE ; [.393A.0020.0002] # OSAGE SMALL LETTER EHCHA +104B6 ; [.393A.0020.0008] # OSAGE CAPITAL LETTER EHCHA +104DF ; [.393B.0020.0002] # OSAGE SMALL LETTER E +104B7 ; [.393B.0020.0008] # OSAGE CAPITAL LETTER E +104E0 ; [.393C.0020.0002] # OSAGE SMALL LETTER EIN +104B8 ; [.393C.0020.0008] # OSAGE CAPITAL LETTER EIN +104E1 ; [.393D.0020.0002] # OSAGE SMALL LETTER HA +104B9 ; [.393D.0020.0008] # OSAGE CAPITAL LETTER HA +104E2 ; [.393E.0020.0002] # OSAGE SMALL LETTER HYA +104BA ; [.393E.0020.0008] # OSAGE CAPITAL LETTER HYA +104E3 ; [.393F.0020.0002] # OSAGE SMALL LETTER I +104BB ; [.393F.0020.0008] # OSAGE CAPITAL LETTER I +104E4 ; [.3940.0020.0002] # OSAGE SMALL LETTER KA +104BC ; [.3940.0020.0008] # OSAGE CAPITAL LETTER KA +104E5 ; [.3941.0020.0002] # OSAGE SMALL LETTER EHKA +104BD ; [.3941.0020.0008] # OSAGE CAPITAL LETTER EHKA +104E6 ; [.3942.0020.0002] # OSAGE SMALL LETTER KYA +104BE ; [.3942.0020.0008] # OSAGE CAPITAL LETTER KYA +104E7 ; [.3943.0020.0002] # OSAGE SMALL LETTER LA +104BF ; [.3943.0020.0008] # OSAGE CAPITAL LETTER LA +104E8 ; [.3944.0020.0002] # OSAGE SMALL LETTER MA +104C0 ; [.3944.0020.0008] # OSAGE CAPITAL LETTER MA +104E9 ; [.3945.0020.0002] # OSAGE SMALL LETTER NA +104C1 ; [.3945.0020.0008] # OSAGE CAPITAL LETTER NA +104EA ; [.3946.0020.0002] # OSAGE SMALL LETTER O +104C2 ; [.3946.0020.0008] # OSAGE CAPITAL LETTER O +104EB ; [.3947.0020.0002] # OSAGE SMALL LETTER OIN +104C3 ; [.3947.0020.0008] # OSAGE CAPITAL LETTER OIN +104EC ; [.3948.0020.0002] # OSAGE SMALL LETTER PA +104C4 ; [.3948.0020.0008] # OSAGE CAPITAL LETTER PA +104ED ; [.3949.0020.0002] # OSAGE SMALL LETTER EHPA +104C5 ; [.3949.0020.0008] # OSAGE CAPITAL LETTER EHPA +104EE ; [.394A.0020.0002] # OSAGE SMALL LETTER SA +104C6 ; [.394A.0020.0008] # OSAGE CAPITAL LETTER SA +104EF ; [.394B.0020.0002] # OSAGE SMALL LETTER SHA +104C7 ; [.394B.0020.0008] # OSAGE CAPITAL LETTER SHA +104F0 ; [.394C.0020.0002] # OSAGE SMALL LETTER TA +104C8 ; [.394C.0020.0008] # OSAGE CAPITAL LETTER TA +104F1 ; [.394D.0020.0002] # OSAGE SMALL LETTER EHTA +104C9 ; [.394D.0020.0008] # OSAGE CAPITAL LETTER EHTA +104F2 ; [.394E.0020.0002] # OSAGE SMALL LETTER TSA +104CA ; [.394E.0020.0008] # OSAGE CAPITAL LETTER TSA +104F3 ; [.394F.0020.0002] # OSAGE SMALL LETTER EHTSA +104CB ; [.394F.0020.0008] # OSAGE CAPITAL LETTER EHTSA +104F4 ; [.3950.0020.0002] # OSAGE SMALL LETTER TSHA +104CC ; [.3950.0020.0008] # OSAGE CAPITAL LETTER TSHA +104F5 ; [.3951.0020.0002] # OSAGE SMALL LETTER DHA +104CD ; [.3951.0020.0008] # OSAGE CAPITAL LETTER DHA +104F6 ; [.3952.0020.0002] # OSAGE SMALL LETTER U +104CE ; [.3952.0020.0008] # OSAGE CAPITAL LETTER U +104F7 ; [.3953.0020.0002] # OSAGE SMALL LETTER WA +104CF ; [.3953.0020.0008] # OSAGE CAPITAL LETTER WA +104F8 ; [.3954.0020.0002] # OSAGE SMALL LETTER KHA +104D0 ; [.3954.0020.0008] # OSAGE CAPITAL LETTER KHA +104F9 ; [.3955.0020.0002] # OSAGE SMALL LETTER GHA +104D1 ; [.3955.0020.0008] # OSAGE CAPITAL LETTER GHA +104FA ; [.3956.0020.0002] # OSAGE SMALL LETTER ZA +104D2 ; [.3956.0020.0008] # OSAGE CAPITAL LETTER ZA +104FB ; [.3957.0020.0002] # OSAGE SMALL LETTER ZHA +104D3 ; [.3957.0020.0008] # OSAGE CAPITAL LETTER ZHA +1401 ; [.3958.0020.0002] # CANADIAN SYLLABICS E +1402 ; [.3959.0020.0002] # CANADIAN SYLLABICS AAI +1403 ; [.395A.0020.0002] # CANADIAN SYLLABICS I +1404 ; [.395B.0020.0002] # CANADIAN SYLLABICS II +1405 ; [.395C.0020.0002] # CANADIAN SYLLABICS O +1406 ; [.395D.0020.0002] # CANADIAN SYLLABICS OO +1407 ; [.395E.0020.0002] # CANADIAN SYLLABICS Y-CREE OO +1408 ; [.395F.0020.0002] # CANADIAN SYLLABICS CARRIER EE +1409 ; [.3960.0020.0002] # CANADIAN SYLLABICS CARRIER I +140A ; [.3961.0020.0002] # CANADIAN SYLLABICS A +140B ; [.3962.0020.0002] # CANADIAN SYLLABICS AA +140C ; [.3963.0020.0002] # CANADIAN SYLLABICS WE +140D ; [.3964.0020.0002] # CANADIAN SYLLABICS WEST-CREE WE +140E ; [.3965.0020.0002] # CANADIAN SYLLABICS WI +140F ; [.3966.0020.0002] # CANADIAN SYLLABICS WEST-CREE WI +1410 ; [.3967.0020.0002] # CANADIAN SYLLABICS WII +1411 ; [.3968.0020.0002] # CANADIAN SYLLABICS WEST-CREE WII +1412 ; [.3969.0020.0002] # CANADIAN SYLLABICS WO +1413 ; [.396A.0020.0002] # CANADIAN SYLLABICS WEST-CREE WO +1414 ; [.396B.0020.0002] # CANADIAN SYLLABICS WOO +1415 ; [.396C.0020.0002] # CANADIAN SYLLABICS WEST-CREE WOO +1416 ; [.396D.0020.0002] # CANADIAN SYLLABICS NASKAPI WOO +1417 ; [.396E.0020.0002] # CANADIAN SYLLABICS WA +1418 ; [.396F.0020.0002] # CANADIAN SYLLABICS WEST-CREE WA +1419 ; [.3970.0020.0002] # CANADIAN SYLLABICS WAA +141A ; [.3971.0020.0002] # CANADIAN SYLLABICS WEST-CREE WAA +141B ; [.3972.0020.0002] # CANADIAN SYLLABICS NASKAPI WAA +141C ; [.3973.0020.0002] # CANADIAN SYLLABICS AI +141D ; [.3974.0020.0002] # CANADIAN SYLLABICS Y-CREE W +141E ; [.3975.0020.0002] # CANADIAN SYLLABICS GLOTTAL STOP +141F ; [.3976.0020.0002] # CANADIAN SYLLABICS FINAL ACUTE +1420 ; [.3977.0020.0002] # CANADIAN SYLLABICS FINAL GRAVE +1421 ; [.3978.0020.0002] # CANADIAN SYLLABICS FINAL BOTTOM HALF RING +1422 ; [.3979.0020.0002] # CANADIAN SYLLABICS FINAL TOP HALF RING +1423 ; [.397A.0020.0002] # CANADIAN SYLLABICS FINAL RIGHT HALF RING +1424 ; [.397B.0020.0002] # CANADIAN SYLLABICS FINAL RING +1425 ; [.397C.0020.0002] # CANADIAN SYLLABICS FINAL DOUBLE ACUTE +1426 ; [.397D.0020.0002] # CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES +1427 ; [.397E.0020.0002] # CANADIAN SYLLABICS FINAL MIDDLE DOT +1428 ; [.397F.0020.0002] # CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE +1429 ; [.3980.0020.0002] # CANADIAN SYLLABICS FINAL PLUS +142A ; [.3981.0020.0002] # CANADIAN SYLLABICS FINAL DOWN TACK +142B ; [.3982.0020.0002] # CANADIAN SYLLABICS EN +142C ; [.3983.0020.0002] # CANADIAN SYLLABICS IN +142D ; [.3984.0020.0002] # CANADIAN SYLLABICS ON +142E ; [.3985.0020.0002] # CANADIAN SYLLABICS AN +142F ; [.3986.0020.0002] # CANADIAN SYLLABICS PE +1430 ; [.3987.0020.0002] # CANADIAN SYLLABICS PAAI +1431 ; [.3988.0020.0002] # CANADIAN SYLLABICS PI +1432 ; [.3989.0020.0002] # CANADIAN SYLLABICS PII +1433 ; [.398A.0020.0002] # CANADIAN SYLLABICS PO +1434 ; [.398B.0020.0002] # CANADIAN SYLLABICS POO +1435 ; [.398C.0020.0002] # CANADIAN SYLLABICS Y-CREE POO +1436 ; [.398D.0020.0002] # CANADIAN SYLLABICS CARRIER HEE +1437 ; [.398E.0020.0002] # CANADIAN SYLLABICS CARRIER HI +1438 ; [.398F.0020.0002] # CANADIAN SYLLABICS PA +1439 ; [.3990.0020.0002] # CANADIAN SYLLABICS PAA +143A ; [.3991.0020.0002] # CANADIAN SYLLABICS PWE +143B ; [.3992.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWE +143C ; [.3993.0020.0002] # CANADIAN SYLLABICS PWI +143D ; [.3994.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWI +143E ; [.3995.0020.0002] # CANADIAN SYLLABICS PWII +143F ; [.3996.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWII +1440 ; [.3997.0020.0002] # CANADIAN SYLLABICS PWO +1441 ; [.3998.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWO +1442 ; [.3999.0020.0002] # CANADIAN SYLLABICS PWOO +1443 ; [.399A.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWOO +1444 ; [.399B.0020.0002] # CANADIAN SYLLABICS PWA +1445 ; [.399C.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWA +1446 ; [.399D.0020.0002] # CANADIAN SYLLABICS PWAA +1447 ; [.399E.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWAA +1448 ; [.399F.0020.0002] # CANADIAN SYLLABICS Y-CREE PWAA +1449 ; [.39A0.0020.0002] # CANADIAN SYLLABICS P +144A ; [.39A1.0020.0002] # CANADIAN SYLLABICS WEST-CREE P +144B ; [.39A2.0020.0002] # CANADIAN SYLLABICS CARRIER H +144C ; [.39A3.0020.0002] # CANADIAN SYLLABICS TE +144D ; [.39A4.0020.0002] # CANADIAN SYLLABICS TAAI +144E ; [.39A5.0020.0002] # CANADIAN SYLLABICS TI +144F ; [.39A6.0020.0002] # CANADIAN SYLLABICS TII +1450 ; [.39A7.0020.0002] # CANADIAN SYLLABICS TO +1451 ; [.39A8.0020.0002] # CANADIAN SYLLABICS TOO +1452 ; [.39A9.0020.0002] # CANADIAN SYLLABICS Y-CREE TOO +1453 ; [.39AA.0020.0002] # CANADIAN SYLLABICS CARRIER DEE +1454 ; [.39AB.0020.0002] # CANADIAN SYLLABICS CARRIER DI +1455 ; [.39AC.0020.0002] # CANADIAN SYLLABICS TA +1456 ; [.39AD.0020.0002] # CANADIAN SYLLABICS TAA +1457 ; [.39AE.0020.0002] # CANADIAN SYLLABICS TWE +1458 ; [.39AF.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWE +1459 ; [.39B0.0020.0002] # CANADIAN SYLLABICS TWI +145A ; [.39B1.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWI +145B ; [.39B2.0020.0002] # CANADIAN SYLLABICS TWII +145C ; [.39B3.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWII +145D ; [.39B4.0020.0002] # CANADIAN SYLLABICS TWO +145E ; [.39B5.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWO +145F ; [.39B6.0020.0002] # CANADIAN SYLLABICS TWOO +1460 ; [.39B7.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWOO +1461 ; [.39B8.0020.0002] # CANADIAN SYLLABICS TWA +1462 ; [.39B9.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWA +1463 ; [.39BA.0020.0002] # CANADIAN SYLLABICS TWAA +1464 ; [.39BB.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWAA +1465 ; [.39BC.0020.0002] # CANADIAN SYLLABICS NASKAPI TWAA +1466 ; [.39BD.0020.0002] # CANADIAN SYLLABICS T +1467 ; [.39BE.0020.0002] # CANADIAN SYLLABICS TTE +1468 ; [.39BF.0020.0002] # CANADIAN SYLLABICS TTI +1469 ; [.39C0.0020.0002] # CANADIAN SYLLABICS TTO +146A ; [.39C1.0020.0002] # CANADIAN SYLLABICS TTA +146B ; [.39C2.0020.0002] # CANADIAN SYLLABICS KE +146C ; [.39C3.0020.0002] # CANADIAN SYLLABICS KAAI +146D ; [.39C4.0020.0002] # CANADIAN SYLLABICS KI +146E ; [.39C5.0020.0002] # CANADIAN SYLLABICS KII +146F ; [.39C6.0020.0002] # CANADIAN SYLLABICS KO +1470 ; [.39C7.0020.0002] # CANADIAN SYLLABICS KOO +1471 ; [.39C8.0020.0002] # CANADIAN SYLLABICS Y-CREE KOO +1472 ; [.39C9.0020.0002] # CANADIAN SYLLABICS KA +1473 ; [.39CA.0020.0002] # CANADIAN SYLLABICS KAA +1474 ; [.39CB.0020.0002] # CANADIAN SYLLABICS KWE +1475 ; [.39CC.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWE +1476 ; [.39CD.0020.0002] # CANADIAN SYLLABICS KWI +1477 ; [.39CE.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWI +1478 ; [.39CF.0020.0002] # CANADIAN SYLLABICS KWII +1479 ; [.39D0.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWII +147A ; [.39D1.0020.0002] # CANADIAN SYLLABICS KWO +147B ; [.39D2.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWO +147C ; [.39D3.0020.0002] # CANADIAN SYLLABICS KWOO +147D ; [.39D4.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWOO +147E ; [.39D5.0020.0002] # CANADIAN SYLLABICS KWA +147F ; [.39D6.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWA +1480 ; [.39D7.0020.0002] # CANADIAN SYLLABICS KWAA +1481 ; [.39D8.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWAA +1482 ; [.39D9.0020.0002] # CANADIAN SYLLABICS NASKAPI KWAA +1483 ; [.39DA.0020.0002] # CANADIAN SYLLABICS K +1484 ; [.39DB.0020.0002] # CANADIAN SYLLABICS KW +1485 ; [.39DC.0020.0002] # CANADIAN SYLLABICS SOUTH-SLAVEY KEH +1486 ; [.39DD.0020.0002] # CANADIAN SYLLABICS SOUTH-SLAVEY KIH +1487 ; [.39DE.0020.0002] # CANADIAN SYLLABICS SOUTH-SLAVEY KOH +1488 ; [.39DF.0020.0002] # CANADIAN SYLLABICS SOUTH-SLAVEY KAH +1489 ; [.39E0.0020.0002] # CANADIAN SYLLABICS CE +148A ; [.39E1.0020.0002] # CANADIAN SYLLABICS CAAI +148B ; [.39E2.0020.0002] # CANADIAN SYLLABICS CI +148C ; [.39E3.0020.0002] # CANADIAN SYLLABICS CII +148D ; [.39E4.0020.0002] # CANADIAN SYLLABICS CO +148E ; [.39E5.0020.0002] # CANADIAN SYLLABICS COO +148F ; [.39E6.0020.0002] # CANADIAN SYLLABICS Y-CREE COO +1490 ; [.39E7.0020.0002] # CANADIAN SYLLABICS CA +1491 ; [.39E8.0020.0002] # CANADIAN SYLLABICS CAA +1492 ; [.39E9.0020.0002] # CANADIAN SYLLABICS CWE +1493 ; [.39EA.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWE +1494 ; [.39EB.0020.0002] # CANADIAN SYLLABICS CWI +1495 ; [.39EC.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWI +1496 ; [.39ED.0020.0002] # CANADIAN SYLLABICS CWII +1497 ; [.39EE.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWII +1498 ; [.39EF.0020.0002] # CANADIAN SYLLABICS CWO +1499 ; [.39F0.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWO +149A ; [.39F1.0020.0002] # CANADIAN SYLLABICS CWOO +149B ; [.39F2.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWOO +149C ; [.39F3.0020.0002] # CANADIAN SYLLABICS CWA +149D ; [.39F4.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWA +149E ; [.39F5.0020.0002] # CANADIAN SYLLABICS CWAA +149F ; [.39F6.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWAA +14A0 ; [.39F7.0020.0002] # CANADIAN SYLLABICS NASKAPI CWAA +14A1 ; [.39F8.0020.0002] # CANADIAN SYLLABICS C +14A2 ; [.39F9.0020.0002] # CANADIAN SYLLABICS SAYISI TH +14A3 ; [.39FA.0020.0002] # CANADIAN SYLLABICS ME +14A4 ; [.39FB.0020.0002] # CANADIAN SYLLABICS MAAI +14A5 ; [.39FC.0020.0002] # CANADIAN SYLLABICS MI +14A6 ; [.39FD.0020.0002] # CANADIAN SYLLABICS MII +14A7 ; [.39FE.0020.0002] # CANADIAN SYLLABICS MO +14A8 ; [.39FF.0020.0002] # CANADIAN SYLLABICS MOO +14A9 ; [.3A00.0020.0002] # CANADIAN SYLLABICS Y-CREE MOO +14AA ; [.3A01.0020.0002] # CANADIAN SYLLABICS MA +14AB ; [.3A02.0020.0002] # CANADIAN SYLLABICS MAA +14AC ; [.3A03.0020.0002] # CANADIAN SYLLABICS MWE +14AD ; [.3A04.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWE +14AE ; [.3A05.0020.0002] # CANADIAN SYLLABICS MWI +14AF ; [.3A06.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWI +14B0 ; [.3A07.0020.0002] # CANADIAN SYLLABICS MWII +14B1 ; [.3A08.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWII +14B2 ; [.3A09.0020.0002] # CANADIAN SYLLABICS MWO +14B3 ; [.3A0A.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWO +14B4 ; [.3A0B.0020.0002] # CANADIAN SYLLABICS MWOO +14B5 ; [.3A0C.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWOO +14B6 ; [.3A0D.0020.0002] # CANADIAN SYLLABICS MWA +14B7 ; [.3A0E.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWA +14B8 ; [.3A0F.0020.0002] # CANADIAN SYLLABICS MWAA +14B9 ; [.3A10.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWAA +14BA ; [.3A11.0020.0002] # CANADIAN SYLLABICS NASKAPI MWAA +14BB ; [.3A12.0020.0002] # CANADIAN SYLLABICS M +14BC ; [.3A13.0020.0002] # CANADIAN SYLLABICS WEST-CREE M +14BD ; [.3A14.0020.0002] # CANADIAN SYLLABICS MH +14BE ; [.3A15.0020.0002] # CANADIAN SYLLABICS ATHAPASCAN M +14BF ; [.3A16.0020.0002] # CANADIAN SYLLABICS SAYISI M +14C0 ; [.3A17.0020.0002] # CANADIAN SYLLABICS NE +14C1 ; [.3A18.0020.0002] # CANADIAN SYLLABICS NAAI +14C2 ; [.3A19.0020.0002] # CANADIAN SYLLABICS NI +14C3 ; [.3A1A.0020.0002] # CANADIAN SYLLABICS NII +14C4 ; [.3A1B.0020.0002] # CANADIAN SYLLABICS NO +14C5 ; [.3A1C.0020.0002] # CANADIAN SYLLABICS NOO +14C6 ; [.3A1D.0020.0002] # CANADIAN SYLLABICS Y-CREE NOO +14C7 ; [.3A1E.0020.0002] # CANADIAN SYLLABICS NA +14C8 ; [.3A1F.0020.0002] # CANADIAN SYLLABICS NAA +14C9 ; [.3A20.0020.0002] # CANADIAN SYLLABICS NWE +14CA ; [.3A21.0020.0002] # CANADIAN SYLLABICS WEST-CREE NWE +14CB ; [.3A22.0020.0002] # CANADIAN SYLLABICS NWA +14CC ; [.3A23.0020.0002] # CANADIAN SYLLABICS WEST-CREE NWA +14CD ; [.3A24.0020.0002] # CANADIAN SYLLABICS NWAA +14CE ; [.3A25.0020.0002] # CANADIAN SYLLABICS WEST-CREE NWAA +14CF ; [.3A26.0020.0002] # CANADIAN SYLLABICS NASKAPI NWAA +14D0 ; [.3A27.0020.0002] # CANADIAN SYLLABICS N +14D1 ; [.3A28.0020.0002] # CANADIAN SYLLABICS CARRIER NG +14D2 ; [.3A29.0020.0002] # CANADIAN SYLLABICS NH +14D3 ; [.3A2A.0020.0002] # CANADIAN SYLLABICS LE +14D4 ; [.3A2B.0020.0002] # CANADIAN SYLLABICS LAAI +14D5 ; [.3A2C.0020.0002] # CANADIAN SYLLABICS LI +14D6 ; [.3A2D.0020.0002] # CANADIAN SYLLABICS LII +14D7 ; [.3A2E.0020.0002] # CANADIAN SYLLABICS LO +14D8 ; [.3A2F.0020.0002] # CANADIAN SYLLABICS LOO +14D9 ; [.3A30.0020.0002] # CANADIAN SYLLABICS Y-CREE LOO +14DA ; [.3A31.0020.0002] # CANADIAN SYLLABICS LA +14DB ; [.3A32.0020.0002] # CANADIAN SYLLABICS LAA +14DC ; [.3A33.0020.0002] # CANADIAN SYLLABICS LWE +14DD ; [.3A34.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWE +14DE ; [.3A35.0020.0002] # CANADIAN SYLLABICS LWI +14DF ; [.3A36.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWI +14E0 ; [.3A37.0020.0002] # CANADIAN SYLLABICS LWII +14E1 ; [.3A38.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWII +14E2 ; [.3A39.0020.0002] # CANADIAN SYLLABICS LWO +14E3 ; [.3A3A.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWO +14E4 ; [.3A3B.0020.0002] # CANADIAN SYLLABICS LWOO +14E5 ; [.3A3C.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWOO +14E6 ; [.3A3D.0020.0002] # CANADIAN SYLLABICS LWA +14E7 ; [.3A3E.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWA +14E8 ; [.3A3F.0020.0002] # CANADIAN SYLLABICS LWAA +14E9 ; [.3A40.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWAA +14EA ; [.3A41.0020.0002] # CANADIAN SYLLABICS L +14EB ; [.3A42.0020.0002] # CANADIAN SYLLABICS WEST-CREE L +14EC ; [.3A43.0020.0002] # CANADIAN SYLLABICS MEDIAL L +14ED ; [.3A44.0020.0002] # CANADIAN SYLLABICS SE +14EE ; [.3A45.0020.0002] # CANADIAN SYLLABICS SAAI +14EF ; [.3A46.0020.0002] # CANADIAN SYLLABICS SI +14F0 ; [.3A47.0020.0002] # CANADIAN SYLLABICS SII +14F1 ; [.3A48.0020.0002] # CANADIAN SYLLABICS SO +14F2 ; [.3A49.0020.0002] # CANADIAN SYLLABICS SOO +14F3 ; [.3A4A.0020.0002] # CANADIAN SYLLABICS Y-CREE SOO +14F4 ; [.3A4B.0020.0002] # CANADIAN SYLLABICS SA +14F5 ; [.3A4C.0020.0002] # CANADIAN SYLLABICS SAA +14F6 ; [.3A4D.0020.0002] # CANADIAN SYLLABICS SWE +14F7 ; [.3A4E.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWE +14F8 ; [.3A4F.0020.0002] # CANADIAN SYLLABICS SWI +14F9 ; [.3A50.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWI +14FA ; [.3A51.0020.0002] # CANADIAN SYLLABICS SWII +14FB ; [.3A52.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWII +14FC ; [.3A53.0020.0002] # CANADIAN SYLLABICS SWO +14FD ; [.3A54.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWO +14FE ; [.3A55.0020.0002] # CANADIAN SYLLABICS SWOO +14FF ; [.3A56.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWOO +1500 ; [.3A57.0020.0002] # CANADIAN SYLLABICS SWA +1501 ; [.3A58.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWA +1502 ; [.3A59.0020.0002] # CANADIAN SYLLABICS SWAA +1503 ; [.3A5A.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWAA +1504 ; [.3A5B.0020.0002] # CANADIAN SYLLABICS NASKAPI SWAA +1505 ; [.3A5C.0020.0002] # CANADIAN SYLLABICS S +1506 ; [.3A5D.0020.0002] # CANADIAN SYLLABICS ATHAPASCAN S +1507 ; [.3A5E.0020.0002] # CANADIAN SYLLABICS SW +1508 ; [.3A5F.0020.0002] # CANADIAN SYLLABICS BLACKFOOT S +1509 ; [.3A60.0020.0002] # CANADIAN SYLLABICS MOOSE-CREE SK +150A ; [.3A61.0020.0002] # CANADIAN SYLLABICS NASKAPI SKW +150B ; [.3A62.0020.0002] # CANADIAN SYLLABICS NASKAPI S-W +150C ; [.3A63.0020.0002] # CANADIAN SYLLABICS NASKAPI SPWA +150D ; [.3A64.0020.0002] # CANADIAN SYLLABICS NASKAPI STWA +150E ; [.3A65.0020.0002] # CANADIAN SYLLABICS NASKAPI SKWA +150F ; [.3A66.0020.0002] # CANADIAN SYLLABICS NASKAPI SCWA +1510 ; [.3A67.0020.0002] # CANADIAN SYLLABICS SHE +1511 ; [.3A68.0020.0002] # CANADIAN SYLLABICS SHI +1512 ; [.3A69.0020.0002] # CANADIAN SYLLABICS SHII +1513 ; [.3A6A.0020.0002] # CANADIAN SYLLABICS SHO +1514 ; [.3A6B.0020.0002] # CANADIAN SYLLABICS SHOO +1515 ; [.3A6C.0020.0002] # CANADIAN SYLLABICS SHA +1516 ; [.3A6D.0020.0002] # CANADIAN SYLLABICS SHAA +1517 ; [.3A6E.0020.0002] # CANADIAN SYLLABICS SHWE +1518 ; [.3A6F.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWE +1519 ; [.3A70.0020.0002] # CANADIAN SYLLABICS SHWI +151A ; [.3A71.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWI +151B ; [.3A72.0020.0002] # CANADIAN SYLLABICS SHWII +151C ; [.3A73.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWII +151D ; [.3A74.0020.0002] # CANADIAN SYLLABICS SHWO +151E ; [.3A75.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWO +151F ; [.3A76.0020.0002] # CANADIAN SYLLABICS SHWOO +1520 ; [.3A77.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWOO +1521 ; [.3A78.0020.0002] # CANADIAN SYLLABICS SHWA +1522 ; [.3A79.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWA +1523 ; [.3A7A.0020.0002] # CANADIAN SYLLABICS SHWAA +1524 ; [.3A7B.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWAA +1525 ; [.3A7C.0020.0002] # CANADIAN SYLLABICS SH +1526 ; [.3A7D.0020.0002] # CANADIAN SYLLABICS YE +1527 ; [.3A7E.0020.0002] # CANADIAN SYLLABICS YAAI +1528 ; [.3A7F.0020.0002] # CANADIAN SYLLABICS YI +1529 ; [.3A80.0020.0002] # CANADIAN SYLLABICS YII +152A ; [.3A81.0020.0002] # CANADIAN SYLLABICS YO +152B ; [.3A82.0020.0002] # CANADIAN SYLLABICS YOO +152C ; [.3A83.0020.0002] # CANADIAN SYLLABICS Y-CREE YOO +152D ; [.3A84.0020.0002] # CANADIAN SYLLABICS YA +152E ; [.3A85.0020.0002] # CANADIAN SYLLABICS YAA +152F ; [.3A86.0020.0002] # CANADIAN SYLLABICS YWE +1530 ; [.3A87.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWE +1531 ; [.3A88.0020.0002] # CANADIAN SYLLABICS YWI +1532 ; [.3A89.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWI +1533 ; [.3A8A.0020.0002] # CANADIAN SYLLABICS YWII +1534 ; [.3A8B.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWII +1535 ; [.3A8C.0020.0002] # CANADIAN SYLLABICS YWO +1536 ; [.3A8D.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWO +1537 ; [.3A8E.0020.0002] # CANADIAN SYLLABICS YWOO +1538 ; [.3A8F.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWOO +1539 ; [.3A90.0020.0002] # CANADIAN SYLLABICS YWA +153A ; [.3A91.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWA +153B ; [.3A92.0020.0002] # CANADIAN SYLLABICS YWAA +153C ; [.3A93.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWAA +153D ; [.3A94.0020.0002] # CANADIAN SYLLABICS NASKAPI YWAA +153E ; [.3A95.0020.0002] # CANADIAN SYLLABICS Y +153F ; [.3A96.0020.0002] # CANADIAN SYLLABICS BIBLE-CREE Y +1540 ; [.3A97.0020.0002] # CANADIAN SYLLABICS WEST-CREE Y +1541 ; [.3A98.0020.0002] # CANADIAN SYLLABICS SAYISI YI +1542 ; [.3A99.0020.0002] # CANADIAN SYLLABICS RE +1543 ; [.3A9A.0020.0002] # CANADIAN SYLLABICS R-CREE RE +1544 ; [.3A9B.0020.0002] # CANADIAN SYLLABICS WEST-CREE LE +1545 ; [.3A9C.0020.0002] # CANADIAN SYLLABICS RAAI +1546 ; [.3A9D.0020.0002] # CANADIAN SYLLABICS RI +1547 ; [.3A9E.0020.0002] # CANADIAN SYLLABICS RII +1548 ; [.3A9F.0020.0002] # CANADIAN SYLLABICS RO +1549 ; [.3AA0.0020.0002] # CANADIAN SYLLABICS ROO +154A ; [.3AA1.0020.0002] # CANADIAN SYLLABICS WEST-CREE LO +154B ; [.3AA2.0020.0002] # CANADIAN SYLLABICS RA +154C ; [.3AA3.0020.0002] # CANADIAN SYLLABICS RAA +154D ; [.3AA4.0020.0002] # CANADIAN SYLLABICS WEST-CREE LA +154E ; [.3AA5.0020.0002] # CANADIAN SYLLABICS RWAA +154F ; [.3AA6.0020.0002] # CANADIAN SYLLABICS WEST-CREE RWAA +1550 ; [.3AA7.0020.0002] # CANADIAN SYLLABICS R +1551 ; [.3AA8.0020.0002] # CANADIAN SYLLABICS WEST-CREE R +1552 ; [.3AA9.0020.0002] # CANADIAN SYLLABICS MEDIAL R +1553 ; [.3AAA.0020.0002] # CANADIAN SYLLABICS FE +1554 ; [.3AAB.0020.0002] # CANADIAN SYLLABICS FAAI +1555 ; [.3AAC.0020.0002] # CANADIAN SYLLABICS FI +1556 ; [.3AAD.0020.0002] # CANADIAN SYLLABICS FII +1557 ; [.3AAE.0020.0002] # CANADIAN SYLLABICS FO +1558 ; [.3AAF.0020.0002] # CANADIAN SYLLABICS FOO +1559 ; [.3AB0.0020.0002] # CANADIAN SYLLABICS FA +155A ; [.3AB1.0020.0002] # CANADIAN SYLLABICS FAA +155B ; [.3AB2.0020.0002] # CANADIAN SYLLABICS FWAA +155C ; [.3AB3.0020.0002] # CANADIAN SYLLABICS WEST-CREE FWAA +155D ; [.3AB4.0020.0002] # CANADIAN SYLLABICS F +155E ; [.3AB5.0020.0002] # CANADIAN SYLLABICS THE +155F ; [.3AB6.0020.0002] # CANADIAN SYLLABICS N-CREE THE +1560 ; [.3AB7.0020.0002] # CANADIAN SYLLABICS THI +1561 ; [.3AB8.0020.0002] # CANADIAN SYLLABICS N-CREE THI +1562 ; [.3AB9.0020.0002] # CANADIAN SYLLABICS THII +1563 ; [.3ABA.0020.0002] # CANADIAN SYLLABICS N-CREE THII +1564 ; [.3ABB.0020.0002] # CANADIAN SYLLABICS THO +1565 ; [.3ABC.0020.0002] # CANADIAN SYLLABICS THOO +1566 ; [.3ABD.0020.0002] # CANADIAN SYLLABICS THA +1567 ; [.3ABE.0020.0002] # CANADIAN SYLLABICS THAA +1568 ; [.3ABF.0020.0002] # CANADIAN SYLLABICS THWAA +1569 ; [.3AC0.0020.0002] # CANADIAN SYLLABICS WEST-CREE THWAA +156A ; [.3AC1.0020.0002] # CANADIAN SYLLABICS TH +156B ; [.3AC2.0020.0002] # CANADIAN SYLLABICS TTHE +156C ; [.3AC3.0020.0002] # CANADIAN SYLLABICS TTHI +156D ; [.3AC4.0020.0002] # CANADIAN SYLLABICS TTHO +156E ; [.3AC5.0020.0002] # CANADIAN SYLLABICS TTHA +156F ; [.3AC6.0020.0002] # CANADIAN SYLLABICS TTH +1570 ; [.3AC7.0020.0002] # CANADIAN SYLLABICS TYE +1571 ; [.3AC8.0020.0002] # CANADIAN SYLLABICS TYI +1572 ; [.3AC9.0020.0002] # CANADIAN SYLLABICS TYO +1573 ; [.3ACA.0020.0002] # CANADIAN SYLLABICS TYA +1574 ; [.3ACB.0020.0002] # CANADIAN SYLLABICS NUNAVIK HE +1575 ; [.3ACC.0020.0002] # CANADIAN SYLLABICS NUNAVIK HI +1576 ; [.3ACD.0020.0002] # CANADIAN SYLLABICS NUNAVIK HII +1577 ; [.3ACE.0020.0002] # CANADIAN SYLLABICS NUNAVIK HO +1578 ; [.3ACF.0020.0002] # CANADIAN SYLLABICS NUNAVIK HOO +1579 ; [.3AD0.0020.0002] # CANADIAN SYLLABICS NUNAVIK HA +157A ; [.3AD1.0020.0002] # CANADIAN SYLLABICS NUNAVIK HAA +157B ; [.3AD2.0020.0002] # CANADIAN SYLLABICS NUNAVIK H +157D ; [.3AD3.0020.0002] # CANADIAN SYLLABICS HK +166F ; [.3AD4.0020.0002] # CANADIAN SYLLABICS QAI +157E ; [.3AD5.0020.0002] # CANADIAN SYLLABICS QAAI +157F ; [.3AD6.0020.0002] # CANADIAN SYLLABICS QI +1580 ; [.3AD7.0020.0002] # CANADIAN SYLLABICS QII +1581 ; [.3AD8.0020.0002] # CANADIAN SYLLABICS QO +1582 ; [.3AD9.0020.0002] # CANADIAN SYLLABICS QOO +1583 ; [.3ADA.0020.0002] # CANADIAN SYLLABICS QA +1584 ; [.3ADB.0020.0002] # CANADIAN SYLLABICS QAA +1585 ; [.3ADC.0020.0002] # CANADIAN SYLLABICS Q +1586 ; [.3ADD.0020.0002] # CANADIAN SYLLABICS TLHE +1587 ; [.3ADE.0020.0002] # CANADIAN SYLLABICS TLHI +1588 ; [.3ADF.0020.0002] # CANADIAN SYLLABICS TLHO +1589 ; [.3AE0.0020.0002] # CANADIAN SYLLABICS TLHA +158A ; [.3AE1.0020.0002] # CANADIAN SYLLABICS WEST-CREE RE +158B ; [.3AE2.0020.0002] # CANADIAN SYLLABICS WEST-CREE RI +158C ; [.3AE3.0020.0002] # CANADIAN SYLLABICS WEST-CREE RO +158D ; [.3AE4.0020.0002] # CANADIAN SYLLABICS WEST-CREE RA +1670 ; [.3AE5.0020.0002] # CANADIAN SYLLABICS NGAI +158E ; [.3AE6.0020.0002] # CANADIAN SYLLABICS NGAAI +158F ; [.3AE7.0020.0002] # CANADIAN SYLLABICS NGI +1590 ; [.3AE8.0020.0002] # CANADIAN SYLLABICS NGII +1591 ; [.3AE9.0020.0002] # CANADIAN SYLLABICS NGO +1592 ; [.3AEA.0020.0002] # CANADIAN SYLLABICS NGOO +1593 ; [.3AEB.0020.0002] # CANADIAN SYLLABICS NGA +1594 ; [.3AEC.0020.0002] # CANADIAN SYLLABICS NGAA +1595 ; [.3AED.0020.0002] # CANADIAN SYLLABICS NG +1671 ; [.3AEE.0020.0002] # CANADIAN SYLLABICS NNGI +1672 ; [.3AEF.0020.0002] # CANADIAN SYLLABICS NNGII +1673 ; [.3AF0.0020.0002] # CANADIAN SYLLABICS NNGO +1674 ; [.3AF1.0020.0002] # CANADIAN SYLLABICS NNGOO +1675 ; [.3AF2.0020.0002] # CANADIAN SYLLABICS NNGA +1676 ; [.3AF3.0020.0002] # CANADIAN SYLLABICS NNGAA +1596 ; [.3AF4.0020.0002] # CANADIAN SYLLABICS NNG +1597 ; [.3AF5.0020.0002] # CANADIAN SYLLABICS SAYISI SHE +1598 ; [.3AF6.0020.0002] # CANADIAN SYLLABICS SAYISI SHI +1599 ; [.3AF7.0020.0002] # CANADIAN SYLLABICS SAYISI SHO +159A ; [.3AF8.0020.0002] # CANADIAN SYLLABICS SAYISI SHA +159B ; [.3AF9.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THE +159C ; [.3AFA.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THI +159D ; [.3AFB.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THO +159E ; [.3AFC.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THA +159F ; [.3AFD.0020.0002] # CANADIAN SYLLABICS WOODS-CREE TH +15A0 ; [.3AFE.0020.0002] # CANADIAN SYLLABICS LHI +15A1 ; [.3AFF.0020.0002] # CANADIAN SYLLABICS LHII +15A2 ; [.3B00.0020.0002] # CANADIAN SYLLABICS LHO +15A3 ; [.3B01.0020.0002] # CANADIAN SYLLABICS LHOO +15A4 ; [.3B02.0020.0002] # CANADIAN SYLLABICS LHA +15A5 ; [.3B03.0020.0002] # CANADIAN SYLLABICS LHAA +15A6 ; [.3B04.0020.0002] # CANADIAN SYLLABICS LH +157C ; [.3B05.0020.0002] # CANADIAN SYLLABICS NUNAVUT H +15A7 ; [.3B06.0020.0002] # CANADIAN SYLLABICS TH-CREE THE +15A8 ; [.3B07.0020.0002] # CANADIAN SYLLABICS TH-CREE THI +15A9 ; [.3B08.0020.0002] # CANADIAN SYLLABICS TH-CREE THII +15AA ; [.3B09.0020.0002] # CANADIAN SYLLABICS TH-CREE THO +15AB ; [.3B0A.0020.0002] # CANADIAN SYLLABICS TH-CREE THOO +15AC ; [.3B0B.0020.0002] # CANADIAN SYLLABICS TH-CREE THA +15AD ; [.3B0C.0020.0002] # CANADIAN SYLLABICS TH-CREE THAA +15AE ; [.3B0D.0020.0002] # CANADIAN SYLLABICS TH-CREE TH +15AF ; [.3B0E.0020.0002] # CANADIAN SYLLABICS AIVILIK B +15B0 ; [.3B0F.0020.0002] # CANADIAN SYLLABICS BLACKFOOT E +15B1 ; [.3B10.0020.0002] # CANADIAN SYLLABICS BLACKFOOT I +15B2 ; [.3B11.0020.0002] # CANADIAN SYLLABICS BLACKFOOT O +15B3 ; [.3B12.0020.0002] # CANADIAN SYLLABICS BLACKFOOT A +15B4 ; [.3B13.0020.0002] # CANADIAN SYLLABICS BLACKFOOT WE +15B5 ; [.3B14.0020.0002] # CANADIAN SYLLABICS BLACKFOOT WI +15B6 ; [.3B15.0020.0002] # CANADIAN SYLLABICS BLACKFOOT WO +15B7 ; [.3B16.0020.0002] # CANADIAN SYLLABICS BLACKFOOT WA +15B8 ; [.3B17.0020.0002] # CANADIAN SYLLABICS BLACKFOOT NE +15B9 ; [.3B18.0020.0002] # CANADIAN SYLLABICS BLACKFOOT NI +15BA ; [.3B19.0020.0002] # CANADIAN SYLLABICS BLACKFOOT NO +15BB ; [.3B1A.0020.0002] # CANADIAN SYLLABICS BLACKFOOT NA +15BC ; [.3B1B.0020.0002] # CANADIAN SYLLABICS BLACKFOOT KE +15BD ; [.3B1C.0020.0002] # CANADIAN SYLLABICS BLACKFOOT KI +15BE ; [.3B1D.0020.0002] # CANADIAN SYLLABICS BLACKFOOT KO +15BF ; [.3B1E.0020.0002] # CANADIAN SYLLABICS BLACKFOOT KA +15C0 ; [.3B1F.0020.0002] # CANADIAN SYLLABICS SAYISI HE +15C1 ; [.3B20.0020.0002] # CANADIAN SYLLABICS SAYISI HI +15C2 ; [.3B21.0020.0002] # CANADIAN SYLLABICS SAYISI HO +15C3 ; [.3B22.0020.0002] # CANADIAN SYLLABICS SAYISI HA +15C4 ; [.3B23.0020.0002] # CANADIAN SYLLABICS CARRIER GHU +15C5 ; [.3B24.0020.0002] # CANADIAN SYLLABICS CARRIER GHO +15C6 ; [.3B25.0020.0002] # CANADIAN SYLLABICS CARRIER GHE +15C7 ; [.3B26.0020.0002] # CANADIAN SYLLABICS CARRIER GHEE +15C8 ; [.3B27.0020.0002] # CANADIAN SYLLABICS CARRIER GHI +15C9 ; [.3B28.0020.0002] # CANADIAN SYLLABICS CARRIER GHA +15CA ; [.3B29.0020.0002] # CANADIAN SYLLABICS CARRIER RU +15CB ; [.3B2A.0020.0002] # CANADIAN SYLLABICS CARRIER RO +15CC ; [.3B2B.0020.0002] # CANADIAN SYLLABICS CARRIER RE +15CD ; [.3B2C.0020.0002] # CANADIAN SYLLABICS CARRIER REE +15CE ; [.3B2D.0020.0002] # CANADIAN SYLLABICS CARRIER RI +15CF ; [.3B2E.0020.0002] # CANADIAN SYLLABICS CARRIER RA +15D0 ; [.3B2F.0020.0002] # CANADIAN SYLLABICS CARRIER WU +15D1 ; [.3B30.0020.0002] # CANADIAN SYLLABICS CARRIER WO +15D2 ; [.3B31.0020.0002] # CANADIAN SYLLABICS CARRIER WE +15D3 ; [.3B32.0020.0002] # CANADIAN SYLLABICS CARRIER WEE +15D4 ; [.3B33.0020.0002] # CANADIAN SYLLABICS CARRIER WI +15D5 ; [.3B34.0020.0002] # CANADIAN SYLLABICS CARRIER WA +15D6 ; [.3B35.0020.0002] # CANADIAN SYLLABICS CARRIER HWU +15D7 ; [.3B36.0020.0002] # CANADIAN SYLLABICS CARRIER HWO +15D8 ; [.3B37.0020.0002] # CANADIAN SYLLABICS CARRIER HWE +15D9 ; [.3B38.0020.0002] # CANADIAN SYLLABICS CARRIER HWEE +15DA ; [.3B39.0020.0002] # CANADIAN SYLLABICS CARRIER HWI +15DB ; [.3B3A.0020.0002] # CANADIAN SYLLABICS CARRIER HWA +15DC ; [.3B3B.0020.0002] # CANADIAN SYLLABICS CARRIER THU +15DD ; [.3B3C.0020.0002] # CANADIAN SYLLABICS CARRIER THO +15DE ; [.3B3D.0020.0002] # CANADIAN SYLLABICS CARRIER THE +15DF ; [.3B3E.0020.0002] # CANADIAN SYLLABICS CARRIER THEE +15E0 ; [.3B3F.0020.0002] # CANADIAN SYLLABICS CARRIER THI +15E1 ; [.3B40.0020.0002] # CANADIAN SYLLABICS CARRIER THA +15E2 ; [.3B41.0020.0002] # CANADIAN SYLLABICS CARRIER TTU +15E3 ; [.3B42.0020.0002] # CANADIAN SYLLABICS CARRIER TTO +15E4 ; [.3B43.0020.0002] # CANADIAN SYLLABICS CARRIER TTE +15E5 ; [.3B44.0020.0002] # CANADIAN SYLLABICS CARRIER TTEE +15E6 ; [.3B45.0020.0002] # CANADIAN SYLLABICS CARRIER TTI +15E7 ; [.3B46.0020.0002] # CANADIAN SYLLABICS CARRIER TTA +15E8 ; [.3B47.0020.0002] # CANADIAN SYLLABICS CARRIER PU +15E9 ; [.3B48.0020.0002] # CANADIAN SYLLABICS CARRIER PO +15EA ; [.3B49.0020.0002] # CANADIAN SYLLABICS CARRIER PE +15EB ; [.3B4A.0020.0002] # CANADIAN SYLLABICS CARRIER PEE +15EC ; [.3B4B.0020.0002] # CANADIAN SYLLABICS CARRIER PI +15ED ; [.3B4C.0020.0002] # CANADIAN SYLLABICS CARRIER PA +15EE ; [.3B4D.0020.0002] # CANADIAN SYLLABICS CARRIER P +15EF ; [.3B4E.0020.0002] # CANADIAN SYLLABICS CARRIER GU +15F0 ; [.3B4F.0020.0002] # CANADIAN SYLLABICS CARRIER GO +15F1 ; [.3B50.0020.0002] # CANADIAN SYLLABICS CARRIER GE +15F2 ; [.3B51.0020.0002] # CANADIAN SYLLABICS CARRIER GEE +15F3 ; [.3B52.0020.0002] # CANADIAN SYLLABICS CARRIER GI +15F4 ; [.3B53.0020.0002] # CANADIAN SYLLABICS CARRIER GA +15F5 ; [.3B54.0020.0002] # CANADIAN SYLLABICS CARRIER KHU +15F6 ; [.3B55.0020.0002] # CANADIAN SYLLABICS CARRIER KHO +15F7 ; [.3B56.0020.0002] # CANADIAN SYLLABICS CARRIER KHE +15F8 ; [.3B57.0020.0002] # CANADIAN SYLLABICS CARRIER KHEE +15F9 ; [.3B58.0020.0002] # CANADIAN SYLLABICS CARRIER KHI +15FA ; [.3B59.0020.0002] # CANADIAN SYLLABICS CARRIER KHA +15FB ; [.3B5A.0020.0002] # CANADIAN SYLLABICS CARRIER KKU +15FC ; [.3B5B.0020.0002] # CANADIAN SYLLABICS CARRIER KKO +15FD ; [.3B5C.0020.0002] # CANADIAN SYLLABICS CARRIER KKE +15FE ; [.3B5D.0020.0002] # CANADIAN SYLLABICS CARRIER KKEE +15FF ; [.3B5E.0020.0002] # CANADIAN SYLLABICS CARRIER KKI +1600 ; [.3B5F.0020.0002] # CANADIAN SYLLABICS CARRIER KKA +1601 ; [.3B60.0020.0002] # CANADIAN SYLLABICS CARRIER KK +1602 ; [.3B61.0020.0002] # CANADIAN SYLLABICS CARRIER NU +1603 ; [.3B62.0020.0002] # CANADIAN SYLLABICS CARRIER NO +1604 ; [.3B63.0020.0002] # CANADIAN SYLLABICS CARRIER NE +1605 ; [.3B64.0020.0002] # CANADIAN SYLLABICS CARRIER NEE +1606 ; [.3B65.0020.0002] # CANADIAN SYLLABICS CARRIER NI +1607 ; [.3B66.0020.0002] # CANADIAN SYLLABICS CARRIER NA +1608 ; [.3B67.0020.0002] # CANADIAN SYLLABICS CARRIER MU +1609 ; [.3B68.0020.0002] # CANADIAN SYLLABICS CARRIER MO +160A ; [.3B69.0020.0002] # CANADIAN SYLLABICS CARRIER ME +160B ; [.3B6A.0020.0002] # CANADIAN SYLLABICS CARRIER MEE +160C ; [.3B6B.0020.0002] # CANADIAN SYLLABICS CARRIER MI +160D ; [.3B6C.0020.0002] # CANADIAN SYLLABICS CARRIER MA +160E ; [.3B6D.0020.0002] # CANADIAN SYLLABICS CARRIER YU +160F ; [.3B6E.0020.0002] # CANADIAN SYLLABICS CARRIER YO +1610 ; [.3B6F.0020.0002] # CANADIAN SYLLABICS CARRIER YE +1611 ; [.3B70.0020.0002] # CANADIAN SYLLABICS CARRIER YEE +1612 ; [.3B71.0020.0002] # CANADIAN SYLLABICS CARRIER YI +1613 ; [.3B72.0020.0002] # CANADIAN SYLLABICS CARRIER YA +1614 ; [.3B73.0020.0002] # CANADIAN SYLLABICS CARRIER JU +1615 ; [.3B74.0020.0002] # CANADIAN SYLLABICS SAYISI JU +1616 ; [.3B75.0020.0002] # CANADIAN SYLLABICS CARRIER JO +1617 ; [.3B76.0020.0002] # CANADIAN SYLLABICS CARRIER JE +1618 ; [.3B77.0020.0002] # CANADIAN SYLLABICS CARRIER JEE +1619 ; [.3B78.0020.0002] # CANADIAN SYLLABICS CARRIER JI +161A ; [.3B79.0020.0002] # CANADIAN SYLLABICS SAYISI JI +161B ; [.3B7A.0020.0002] # CANADIAN SYLLABICS CARRIER JA +161C ; [.3B7B.0020.0002] # CANADIAN SYLLABICS CARRIER JJU +161D ; [.3B7C.0020.0002] # CANADIAN SYLLABICS CARRIER JJO +161E ; [.3B7D.0020.0002] # CANADIAN SYLLABICS CARRIER JJE +161F ; [.3B7E.0020.0002] # CANADIAN SYLLABICS CARRIER JJEE +1620 ; [.3B7F.0020.0002] # CANADIAN SYLLABICS CARRIER JJI +1621 ; [.3B80.0020.0002] # CANADIAN SYLLABICS CARRIER JJA +1622 ; [.3B81.0020.0002] # CANADIAN SYLLABICS CARRIER LU +1623 ; [.3B82.0020.0002] # CANADIAN SYLLABICS CARRIER LO +1624 ; [.3B83.0020.0002] # CANADIAN SYLLABICS CARRIER LE +1625 ; [.3B84.0020.0002] # CANADIAN SYLLABICS CARRIER LEE +1626 ; [.3B85.0020.0002] # CANADIAN SYLLABICS CARRIER LI +1627 ; [.3B86.0020.0002] # CANADIAN SYLLABICS CARRIER LA +1628 ; [.3B87.0020.0002] # CANADIAN SYLLABICS CARRIER DLU +1629 ; [.3B88.0020.0002] # CANADIAN SYLLABICS CARRIER DLO +162A ; [.3B89.0020.0002] # CANADIAN SYLLABICS CARRIER DLE +162B ; [.3B8A.0020.0002] # CANADIAN SYLLABICS CARRIER DLEE +162C ; [.3B8B.0020.0002] # CANADIAN SYLLABICS CARRIER DLI +162D ; [.3B8C.0020.0002] # CANADIAN SYLLABICS CARRIER DLA +162E ; [.3B8D.0020.0002] # CANADIAN SYLLABICS CARRIER LHU +162F ; [.3B8E.0020.0002] # CANADIAN SYLLABICS CARRIER LHO +1630 ; [.3B8F.0020.0002] # CANADIAN SYLLABICS CARRIER LHE +1631 ; [.3B90.0020.0002] # CANADIAN SYLLABICS CARRIER LHEE +1632 ; [.3B91.0020.0002] # CANADIAN SYLLABICS CARRIER LHI +1633 ; [.3B92.0020.0002] # CANADIAN SYLLABICS CARRIER LHA +1634 ; [.3B93.0020.0002] # CANADIAN SYLLABICS CARRIER TLHU +1635 ; [.3B94.0020.0002] # CANADIAN SYLLABICS CARRIER TLHO +1636 ; [.3B95.0020.0002] # CANADIAN SYLLABICS CARRIER TLHE +1637 ; [.3B96.0020.0002] # CANADIAN SYLLABICS CARRIER TLHEE +1638 ; [.3B97.0020.0002] # CANADIAN SYLLABICS CARRIER TLHI +1639 ; [.3B98.0020.0002] # CANADIAN SYLLABICS CARRIER TLHA +163A ; [.3B99.0020.0002] # CANADIAN SYLLABICS CARRIER TLU +163B ; [.3B9A.0020.0002] # CANADIAN SYLLABICS CARRIER TLO +163C ; [.3B9B.0020.0002] # CANADIAN SYLLABICS CARRIER TLE +163D ; [.3B9C.0020.0002] # CANADIAN SYLLABICS CARRIER TLEE +163E ; [.3B9D.0020.0002] # CANADIAN SYLLABICS CARRIER TLI +163F ; [.3B9E.0020.0002] # CANADIAN SYLLABICS CARRIER TLA +1640 ; [.3B9F.0020.0002] # CANADIAN SYLLABICS CARRIER ZU +1641 ; [.3BA0.0020.0002] # CANADIAN SYLLABICS CARRIER ZO +1642 ; [.3BA1.0020.0002] # CANADIAN SYLLABICS CARRIER ZE +1643 ; [.3BA2.0020.0002] # CANADIAN SYLLABICS CARRIER ZEE +1644 ; [.3BA3.0020.0002] # CANADIAN SYLLABICS CARRIER ZI +1645 ; [.3BA4.0020.0002] # CANADIAN SYLLABICS CARRIER ZA +1646 ; [.3BA5.0020.0002] # CANADIAN SYLLABICS CARRIER Z +1647 ; [.3BA6.0020.0002] # CANADIAN SYLLABICS CARRIER INITIAL Z +1648 ; [.3BA7.0020.0002] # CANADIAN SYLLABICS CARRIER DZU +1649 ; [.3BA8.0020.0002] # CANADIAN SYLLABICS CARRIER DZO +164A ; [.3BA9.0020.0002] # CANADIAN SYLLABICS CARRIER DZE +164B ; [.3BAA.0020.0002] # CANADIAN SYLLABICS CARRIER DZEE +164C ; [.3BAB.0020.0002] # CANADIAN SYLLABICS CARRIER DZI +164D ; [.3BAC.0020.0002] # CANADIAN SYLLABICS CARRIER DZA +164E ; [.3BAD.0020.0002] # CANADIAN SYLLABICS CARRIER SU +164F ; [.3BAE.0020.0002] # CANADIAN SYLLABICS CARRIER SO +1650 ; [.3BAF.0020.0002] # CANADIAN SYLLABICS CARRIER SE +1651 ; [.3BB0.0020.0002] # CANADIAN SYLLABICS CARRIER SEE +1652 ; [.3BB1.0020.0002] # CANADIAN SYLLABICS CARRIER SI +1653 ; [.3BB2.0020.0002] # CANADIAN SYLLABICS CARRIER SA +1654 ; [.3BB3.0020.0002] # CANADIAN SYLLABICS CARRIER SHU +1655 ; [.3BB4.0020.0002] # CANADIAN SYLLABICS CARRIER SHO +1656 ; [.3BB5.0020.0002] # CANADIAN SYLLABICS CARRIER SHE +1657 ; [.3BB6.0020.0002] # CANADIAN SYLLABICS CARRIER SHEE +1658 ; [.3BB7.0020.0002] # CANADIAN SYLLABICS CARRIER SHI +1659 ; [.3BB8.0020.0002] # CANADIAN SYLLABICS CARRIER SHA +165A ; [.3BB9.0020.0002] # CANADIAN SYLLABICS CARRIER SH +165B ; [.3BBA.0020.0002] # CANADIAN SYLLABICS CARRIER TSU +165C ; [.3BBB.0020.0002] # CANADIAN SYLLABICS CARRIER TSO +165D ; [.3BBC.0020.0002] # CANADIAN SYLLABICS CARRIER TSE +165E ; [.3BBD.0020.0002] # CANADIAN SYLLABICS CARRIER TSEE +165F ; [.3BBE.0020.0002] # CANADIAN SYLLABICS CARRIER TSI +1660 ; [.3BBF.0020.0002] # CANADIAN SYLLABICS CARRIER TSA +1661 ; [.3BC0.0020.0002] # CANADIAN SYLLABICS CARRIER CHU +1662 ; [.3BC1.0020.0002] # CANADIAN SYLLABICS CARRIER CHO +1663 ; [.3BC2.0020.0002] # CANADIAN SYLLABICS CARRIER CHE +1664 ; [.3BC3.0020.0002] # CANADIAN SYLLABICS CARRIER CHEE +1665 ; [.3BC4.0020.0002] # CANADIAN SYLLABICS CARRIER CHI +1666 ; [.3BC5.0020.0002] # CANADIAN SYLLABICS CARRIER CHA +1667 ; [.3BC6.0020.0002] # CANADIAN SYLLABICS CARRIER TTSU +1668 ; [.3BC7.0020.0002] # CANADIAN SYLLABICS CARRIER TTSO +1669 ; [.3BC8.0020.0002] # CANADIAN SYLLABICS CARRIER TTSE +166A ; [.3BC9.0020.0002] # CANADIAN SYLLABICS CARRIER TTSEE +166B ; [.3BCA.0020.0002] # CANADIAN SYLLABICS CARRIER TTSI +166C ; [.3BCB.0020.0002] # CANADIAN SYLLABICS CARRIER TTSA +1677 ; [.3BCC.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWEE +1678 ; [.3BCD.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWI +1679 ; [.3BCE.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWII +167A ; [.3BCF.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWO +167B ; [.3BD0.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWOO +167C ; [.3BD1.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWA +167D ; [.3BD2.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWAA +167E ; [.3BD3.0020.0002] # CANADIAN SYLLABICS WOODS-CREE FINAL TH +167F ; [.3BD4.0020.0002] # CANADIAN SYLLABICS BLACKFOOT W +18B0 ; [.3BD5.0020.0002] # CANADIAN SYLLABICS OY +18B1 ; [.3BD6.0020.0002] # CANADIAN SYLLABICS AY +18B2 ; [.3BD7.0020.0002] # CANADIAN SYLLABICS AAY +18B3 ; [.3BD8.0020.0002] # CANADIAN SYLLABICS WAY +18B4 ; [.3BD9.0020.0002] # CANADIAN SYLLABICS POY +18B5 ; [.3BDA.0020.0002] # CANADIAN SYLLABICS PAY +18B6 ; [.3BDB.0020.0002] # CANADIAN SYLLABICS PWOY +18B7 ; [.3BDC.0020.0002] # CANADIAN SYLLABICS TAY +18B8 ; [.3BDD.0020.0002] # CANADIAN SYLLABICS KAY +18B9 ; [.3BDE.0020.0002] # CANADIAN SYLLABICS KWAY +18BA ; [.3BDF.0020.0002] # CANADIAN SYLLABICS MAY +18BB ; [.3BE0.0020.0002] # CANADIAN SYLLABICS NOY +18BC ; [.3BE1.0020.0002] # CANADIAN SYLLABICS NAY +18BD ; [.3BE2.0020.0002] # CANADIAN SYLLABICS LAY +18BE ; [.3BE3.0020.0002] # CANADIAN SYLLABICS SOY +18BF ; [.3BE4.0020.0002] # CANADIAN SYLLABICS SAY +18C0 ; [.3BE5.0020.0002] # CANADIAN SYLLABICS SHOY +18C1 ; [.3BE6.0020.0002] # CANADIAN SYLLABICS SHAY +18C2 ; [.3BE7.0020.0002] # CANADIAN SYLLABICS SHWOY +18C3 ; [.3BE8.0020.0002] # CANADIAN SYLLABICS YOY +18C4 ; [.3BE9.0020.0002] # CANADIAN SYLLABICS YAY +18C5 ; [.3BEA.0020.0002] # CANADIAN SYLLABICS RAY +18C6 ; [.3BEB.0020.0002] # CANADIAN SYLLABICS NWI +18C7 ; [.3BEC.0020.0002] # CANADIAN SYLLABICS OJIBWAY NWI +18C8 ; [.3BED.0020.0002] # CANADIAN SYLLABICS NWII +18C9 ; [.3BEE.0020.0002] # CANADIAN SYLLABICS OJIBWAY NWII +18CA ; [.3BEF.0020.0002] # CANADIAN SYLLABICS NWO +18CB ; [.3BF0.0020.0002] # CANADIAN SYLLABICS OJIBWAY NWO +18CC ; [.3BF1.0020.0002] # CANADIAN SYLLABICS NWOO +18CD ; [.3BF2.0020.0002] # CANADIAN SYLLABICS OJIBWAY NWOO +18CE ; [.3BF3.0020.0002] # CANADIAN SYLLABICS RWEE +18CF ; [.3BF4.0020.0002] # CANADIAN SYLLABICS RWI +18D0 ; [.3BF5.0020.0002] # CANADIAN SYLLABICS RWII +18D1 ; [.3BF6.0020.0002] # CANADIAN SYLLABICS RWO +18D2 ; [.3BF7.0020.0002] # CANADIAN SYLLABICS RWOO +18D3 ; [.3BF8.0020.0002] # CANADIAN SYLLABICS RWA +18D4 ; [.3BF9.0020.0002] # CANADIAN SYLLABICS OJIBWAY P +18D5 ; [.3BFA.0020.0002] # CANADIAN SYLLABICS OJIBWAY T +18D6 ; [.3BFB.0020.0002] # CANADIAN SYLLABICS OJIBWAY K +18D7 ; [.3BFC.0020.0002] # CANADIAN SYLLABICS OJIBWAY C +18D8 ; [.3BFD.0020.0002] # CANADIAN SYLLABICS OJIBWAY M +18D9 ; [.3BFE.0020.0002] # CANADIAN SYLLABICS OJIBWAY N +18DA ; [.3BFF.0020.0002] # CANADIAN SYLLABICS OJIBWAY S +18DB ; [.3C00.0020.0002] # CANADIAN SYLLABICS OJIBWAY SH +18DC ; [.3C01.0020.0002] # CANADIAN SYLLABICS EASTERN W +18DD ; [.3C02.0020.0002] # CANADIAN SYLLABICS WESTERN W +18DE ; [.3C03.0020.0002] # CANADIAN SYLLABICS FINAL SMALL RING +18DF ; [.3C04.0020.0002] # CANADIAN SYLLABICS FINAL RAISED DOT +18E0 ; [.3C05.0020.0002] # CANADIAN SYLLABICS R-CREE RWE +18E1 ; [.3C06.0020.0002] # CANADIAN SYLLABICS WEST-CREE LOO +18E2 ; [.3C07.0020.0002] # CANADIAN SYLLABICS WEST-CREE LAA +18E3 ; [.3C08.0020.0002] # CANADIAN SYLLABICS THWE +18E4 ; [.3C09.0020.0002] # CANADIAN SYLLABICS THWA +18E5 ; [.3C0A.0020.0002] # CANADIAN SYLLABICS TTHWE +18E6 ; [.3C0B.0020.0002] # CANADIAN SYLLABICS TTHOO +18E7 ; [.3C0C.0020.0002] # CANADIAN SYLLABICS TTHAA +18E8 ; [.3C0D.0020.0002] # CANADIAN SYLLABICS TLHWE +18E9 ; [.3C0E.0020.0002] # CANADIAN SYLLABICS TLHOO +18EA ; [.3C0F.0020.0002] # CANADIAN SYLLABICS SAYISI SHWE +18EB ; [.3C10.0020.0002] # CANADIAN SYLLABICS SAYISI SHOO +18EC ; [.3C11.0020.0002] # CANADIAN SYLLABICS SAYISI HOO +18ED ; [.3C12.0020.0002] # CANADIAN SYLLABICS CARRIER GWU +18EE ; [.3C13.0020.0002] # CANADIAN SYLLABICS CARRIER DENE GEE +18EF ; [.3C14.0020.0002] # CANADIAN SYLLABICS CARRIER GAA +18F0 ; [.3C15.0020.0002] # CANADIAN SYLLABICS CARRIER GWA +18F1 ; [.3C16.0020.0002] # CANADIAN SYLLABICS SAYISI JUU +18F2 ; [.3C17.0020.0002] # CANADIAN SYLLABICS CARRIER JWA +18F3 ; [.3C18.0020.0002] # CANADIAN SYLLABICS BEAVER DENE L +18F4 ; [.3C19.0020.0002] # CANADIAN SYLLABICS BEAVER DENE R +18F5 ; [.3C1A.0020.0002] # CANADIAN SYLLABICS CARRIER DENTAL S +1681 ; [.3C1B.0020.0002] # OGHAM LETTER BEITH +1682 ; [.3C1C.0020.0002] # OGHAM LETTER LUIS +1683 ; [.3C1D.0020.0002] # OGHAM LETTER FEARN +1684 ; [.3C1E.0020.0002] # OGHAM LETTER SAIL +1685 ; [.3C1F.0020.0002] # OGHAM LETTER NION +1686 ; [.3C20.0020.0002] # OGHAM LETTER UATH +1687 ; [.3C21.0020.0002] # OGHAM LETTER DAIR +1688 ; [.3C22.0020.0002] # OGHAM LETTER TINNE +1689 ; [.3C23.0020.0002] # OGHAM LETTER COLL +168A ; [.3C24.0020.0002] # OGHAM LETTER CEIRT +168B ; [.3C25.0020.0002] # OGHAM LETTER MUIN +168C ; [.3C26.0020.0002] # OGHAM LETTER GORT +168D ; [.3C27.0020.0002] # OGHAM LETTER NGEADAL +168E ; [.3C28.0020.0002] # OGHAM LETTER STRAIF +168F ; [.3C29.0020.0002] # OGHAM LETTER RUIS +1690 ; [.3C2A.0020.0002] # OGHAM LETTER AILM +1691 ; [.3C2B.0020.0002] # OGHAM LETTER ONN +1692 ; [.3C2C.0020.0002] # OGHAM LETTER UR +1693 ; [.3C2D.0020.0002] # OGHAM LETTER EADHADH +1694 ; [.3C2E.0020.0002] # OGHAM LETTER IODHADH +1695 ; [.3C2F.0020.0002] # OGHAM LETTER EABHADH +1696 ; [.3C30.0020.0002] # OGHAM LETTER OR +1697 ; [.3C31.0020.0002] # OGHAM LETTER UILLEANN +1698 ; [.3C32.0020.0002] # OGHAM LETTER IFIN +1699 ; [.3C33.0020.0002] # OGHAM LETTER EAMHANCHOLL +169A ; [.3C34.0020.0002] # OGHAM LETTER PEITH +16A0 ; [.3C35.0020.0002] # RUNIC LETTER FEHU FEOH FE F +16A1 ; [.3C35.0020.0004][.0000.0118.0004] # RUNIC LETTER V +16A2 ; [.3C36.0020.0002] # RUNIC LETTER URUZ UR U +16A4 ; [.3C36.0020.0004][.0000.0118.0004] # RUNIC LETTER Y +16A5 ; [.3C36.0020.0004][.0000.0119.0004] # RUNIC LETTER W +16A6 ; [.3C37.0020.0002] # RUNIC LETTER THURISAZ THURS THORN +16A7 ; [.3C37.0020.0004][.0000.0118.0004] # RUNIC LETTER ETH +16F0 ; [.3C37.0020.0004][.3C37.0020.0004] # RUNIC BELGTHOR SYMBOL +16A8 ; [.3C38.0020.0002] # RUNIC LETTER ANSUZ A +16A9 ; [.3C38.0020.0004][.0000.0118.0004] # RUNIC LETTER OS O +16AC ; [.3C38.0020.0004][.0000.0119.0004] # RUNIC LETTER LONG-BRANCH-OSS O +16AD ; [.3C38.0020.0004][.0000.011A.0004] # RUNIC LETTER SHORT-TWIG-OSS O +16AE ; [.3C38.0020.0004][.0000.011B.0004] # RUNIC LETTER O +16F4 ; [.3C39.0020.0002] # RUNIC LETTER FRANKS CASKET OS +16AF ; [.3C3A.0020.0002] # RUNIC LETTER OE +16B0 ; [.3C3B.0020.0002] # RUNIC LETTER ON +16B1 ; [.3C3C.0020.0002] # RUNIC LETTER RAIDO RAD REID R +16B2 ; [.3C3D.0020.0002] # RUNIC LETTER KAUNA +16B3 ; [.3C3D.0020.0004][.0000.0118.0004] # RUNIC LETTER CEN +16B4 ; [.3C3D.0020.0004][.0000.0119.0004] # RUNIC LETTER KAUN K +16B5 ; [.3C3D.0020.0004][.0000.011A.0004] # RUNIC LETTER G +16B6 ; [.3C3D.0020.0004][.0000.011B.0004] # RUNIC LETTER ENG +16F1 ; [.3C3E.0020.0002] # RUNIC LETTER K +16B7 ; [.3C3F.0020.0002] # RUNIC LETTER GEBO GYFU G +16B9 ; [.3C40.0020.0002] # RUNIC LETTER WUNJO WYNN W +16E9 ; [.3C40.0020.0004][.0000.0118.0004] # RUNIC LETTER Q +16BA ; [.3C41.0020.0002] # RUNIC LETTER HAGLAZ H +16BB ; [.3C41.0020.0004][.0000.0118.0004] # RUNIC LETTER HAEGL H +16BC ; [.3C41.0020.0004][.0000.0119.0004] # RUNIC LETTER LONG-BRANCH-HAGALL H +16BD ; [.3C41.0020.0004][.0000.011A.0004] # RUNIC LETTER SHORT-TWIG-HAGALL H +16BE ; [.3C42.0020.0002] # RUNIC LETTER NAUDIZ NYD NAUD N +16BF ; [.3C42.0020.0004][.0000.0118.0004] # RUNIC LETTER SHORT-TWIG-NAUD N +16C0 ; [.3C42.0020.0004][.0000.0119.0004] # RUNIC LETTER DOTTED-N +16C1 ; [.3C43.0020.0002] # RUNIC LETTER ISAZ IS ISS I +16C2 ; [.3C43.0020.0004][.0000.0118.0004] # RUNIC LETTER E +16F5 ; [.3C44.0020.0002] # RUNIC LETTER FRANKS CASKET IS +16C3 ; [.3C45.0020.0002] # RUNIC LETTER JERAN J +16C4 ; [.3C45.0020.0004][.0000.0118.0004] # RUNIC LETTER GER +16C5 ; [.3C46.0020.0002] # RUNIC LETTER LONG-BRANCH-AR AE +16C6 ; [.3C46.0020.0004][.0000.0118.0004] # RUNIC LETTER SHORT-TWIG-AR A +16EE ; [.3C46.0020.0004][.3C51.0020.0004] # RUNIC ARLAUG SYMBOL +16C7 ; [.3C47.0020.0002] # RUNIC LETTER IWAZ EOH +16C8 ; [.3C48.0020.0002] # RUNIC LETTER PERTHO PEORTH P +16D5 ; [.3C48.0020.0004][.0000.0118.0004] # RUNIC LETTER OPEN-P +16C9 ; [.3C49.0020.0002] # RUNIC LETTER ALGIZ EOLHX +16CA ; [.3C4A.0020.0002] # RUNIC LETTER SOWILO S +16CB ; [.3C4A.0020.0004][.0000.0118.0004] # RUNIC LETTER SIGEL LONG-BRANCH-SOL S +16EA ; [.3C4A.0020.0004][.0000.0119.0004] # RUNIC LETTER X +16CC ; [.3C4A.0020.0004][.0000.011A.0004] # RUNIC LETTER SHORT-TWIG-SOL S +16CD ; [.3C4A.0020.0004][.0000.011B.0004] # RUNIC LETTER C +16CE ; [.3C4A.0020.0004][.0000.011C.0004] # RUNIC LETTER Z +16F2 ; [.3C4B.0020.0002] # RUNIC LETTER SH +16CF ; [.3C4C.0020.0002] # RUNIC LETTER TIWAZ TIR TYR T +16D0 ; [.3C4C.0020.0004][.0000.0118.0004] # RUNIC LETTER SHORT-TWIG-TYR T +16D1 ; [.3C4C.0020.0004][.0000.0119.0004] # RUNIC LETTER D +16D2 ; [.3C4D.0020.0002] # RUNIC LETTER BERKANAN BEORC BJARKAN B +16D3 ; [.3C4D.0020.0004][.0000.0118.0004] # RUNIC LETTER SHORT-TWIG-BJARKAN B +16D4 ; [.3C4D.0020.0004][.0000.0119.0004] # RUNIC LETTER DOTTED-P +16D6 ; [.3C4E.0020.0002] # RUNIC LETTER EHWAZ EH E +16F6 ; [.3C4F.0020.0002] # RUNIC LETTER FRANKS CASKET EH +16D7 ; [.3C50.0020.0002] # RUNIC LETTER MANNAZ MAN M +16D8 ; [.3C50.0020.0004][.0000.0118.0004] # RUNIC LETTER LONG-BRANCH-MADR M +16D9 ; [.3C50.0020.0004][.0000.0119.0004] # RUNIC LETTER SHORT-TWIG-MADR M +16EF ; [.3C50.0020.0004][.0000.0118.0004][.3C50.0020.0004][.0000.0118.0004] # RUNIC TVIMADUR SYMBOL +16DA ; [.3C51.0020.0002] # RUNIC LETTER LAUKAZ LAGU LOGR L +16DB ; [.3C51.0020.0004][.0000.0118.0004] # RUNIC LETTER DOTTED-L +16DC ; [.3C52.0020.0002] # RUNIC LETTER INGWAZ +16DD ; [.3C52.0020.0004][.0000.0118.0004] # RUNIC LETTER ING +16DE ; [.3C53.0020.0002] # RUNIC LETTER DAGAZ DAEG D +16DF ; [.3C54.0020.0002] # RUNIC LETTER OTHALAN ETHEL O +16F3 ; [.3C55.0020.0002] # RUNIC LETTER OO +16AA ; [.3C56.0020.0002] # RUNIC LETTER AC A +16F7 ; [.3C57.0020.0002] # RUNIC LETTER FRANKS CASKET AC +16AB ; [.3C58.0020.0002] # RUNIC LETTER AESC +16F8 ; [.3C59.0020.0002] # RUNIC LETTER FRANKS CASKET AESC +16A3 ; [.3C5A.0020.0002] # RUNIC LETTER YR +16E0 ; [.3C5B.0020.0002] # RUNIC LETTER EAR +16E3 ; [.3C5C.0020.0002] # RUNIC LETTER CALC +16B8 ; [.3C5D.0020.0002] # RUNIC LETTER GAR +16E4 ; [.3C5E.0020.0002] # RUNIC LETTER CEALC +16E1 ; [.3C5F.0020.0002] # RUNIC LETTER IOR +16E2 ; [.3C60.0020.0002] # RUNIC LETTER CWEORTH +16E5 ; [.3C61.0020.0002] # RUNIC LETTER STAN +16E6 ; [.3C62.0020.0002] # RUNIC LETTER LONG-BRANCH-YR +16E7 ; [.3C62.0020.0004][.0000.0118.0004] # RUNIC LETTER SHORT-TWIG-YR +16E8 ; [.3C62.0020.0004][.0000.0119.0004] # RUNIC LETTER ICELANDIC-YR +10CC0 ; [.3C63.0020.0002] # OLD HUNGARIAN SMALL LETTER A +10C80 ; [.3C63.0020.0008] # OLD HUNGARIAN CAPITAL LETTER A +10CC1 ; [.3C63.0020.0004][.0000.0118.0004] # OLD HUNGARIAN SMALL LETTER AA +10C81 ; [.3C63.0020.000A][.0000.0118.0004] # OLD HUNGARIAN CAPITAL LETTER AA +10CC2 ; [.3C64.0020.0002] # OLD HUNGARIAN SMALL LETTER EB +10C82 ; [.3C64.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EB +10CC3 ; [.3C65.0020.0002] # OLD HUNGARIAN SMALL LETTER AMB +10C83 ; [.3C65.0020.0008] # OLD HUNGARIAN CAPITAL LETTER AMB +10CC4 ; [.3C66.0020.0002] # OLD HUNGARIAN SMALL LETTER EC +10C84 ; [.3C66.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EC +10CC5 ; [.3C67.0020.0002] # OLD HUNGARIAN SMALL LETTER ENC +10C85 ; [.3C67.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ENC +10CC6 ; [.3C68.0020.0002] # OLD HUNGARIAN SMALL LETTER ECS +10C86 ; [.3C68.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ECS +10CC7 ; [.3C69.0020.0002] # OLD HUNGARIAN SMALL LETTER ED +10C87 ; [.3C69.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ED +10CC8 ; [.3C6A.0020.0002] # OLD HUNGARIAN SMALL LETTER AND +10C88 ; [.3C6A.0020.0008] # OLD HUNGARIAN CAPITAL LETTER AND +10CC9 ; [.3C6B.0020.0002] # OLD HUNGARIAN SMALL LETTER E +10C89 ; [.3C6B.0020.0008] # OLD HUNGARIAN CAPITAL LETTER E +10CCA ; [.3C6B.0020.0004][.0000.0118.0004] # OLD HUNGARIAN SMALL LETTER CLOSE E +10C8A ; [.3C6B.0020.000A][.0000.0118.0004] # OLD HUNGARIAN CAPITAL LETTER CLOSE E +10CCB ; [.3C6B.0020.0004][.0000.0119.0004] # OLD HUNGARIAN SMALL LETTER EE +10C8B ; [.3C6B.0020.000A][.0000.0119.0004] # OLD HUNGARIAN CAPITAL LETTER EE +10CCC ; [.3C6C.0020.0002] # OLD HUNGARIAN SMALL LETTER EF +10C8C ; [.3C6C.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EF +10CCD ; [.3C6D.0020.0002] # OLD HUNGARIAN SMALL LETTER EG +10C8D ; [.3C6D.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EG +10CCE ; [.3C6E.0020.0002] # OLD HUNGARIAN SMALL LETTER EGY +10C8E ; [.3C6E.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EGY +10CCF ; [.3C6F.0020.0002] # OLD HUNGARIAN SMALL LETTER EH +10C8F ; [.3C6F.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EH +10CD0 ; [.3C70.0020.0002] # OLD HUNGARIAN SMALL LETTER I +10C90 ; [.3C70.0020.0008] # OLD HUNGARIAN CAPITAL LETTER I +10CD1 ; [.3C70.0020.0004][.0000.0118.0004] # OLD HUNGARIAN SMALL LETTER II +10C91 ; [.3C70.0020.000A][.0000.0118.0004] # OLD HUNGARIAN CAPITAL LETTER II +10CD2 ; [.3C71.0020.0002] # OLD HUNGARIAN SMALL LETTER EJ +10C92 ; [.3C71.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EJ +10CD3 ; [.3C72.0020.0002] # OLD HUNGARIAN SMALL LETTER EK +10C93 ; [.3C72.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EK +10CD4 ; [.3C73.0020.0002] # OLD HUNGARIAN SMALL LETTER AK +10C94 ; [.3C73.0020.0008] # OLD HUNGARIAN CAPITAL LETTER AK +10CD5 ; [.3C74.0020.0002] # OLD HUNGARIAN SMALL LETTER UNK +10C95 ; [.3C74.0020.0008] # OLD HUNGARIAN CAPITAL LETTER UNK +10CD6 ; [.3C75.0020.0002] # OLD HUNGARIAN SMALL LETTER EL +10C96 ; [.3C75.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EL +10CD7 ; [.3C76.0020.0002] # OLD HUNGARIAN SMALL LETTER ELY +10C97 ; [.3C76.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ELY +10CD8 ; [.3C77.0020.0002] # OLD HUNGARIAN SMALL LETTER EM +10C98 ; [.3C77.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EM +10CD9 ; [.3C78.0020.0002] # OLD HUNGARIAN SMALL LETTER EN +10C99 ; [.3C78.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EN +10CDA ; [.3C79.0020.0002] # OLD HUNGARIAN SMALL LETTER ENY +10C9A ; [.3C79.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ENY +10CDB ; [.3C7A.0020.0002] # OLD HUNGARIAN SMALL LETTER O +10C9B ; [.3C7A.0020.0008] # OLD HUNGARIAN CAPITAL LETTER O +10CDC ; [.3C7A.0020.0004][.0000.0118.0004] # OLD HUNGARIAN SMALL LETTER OO +10C9C ; [.3C7A.0020.000A][.0000.0118.0004] # OLD HUNGARIAN CAPITAL LETTER OO +10CDD ; [.3C7B.0020.0002] # OLD HUNGARIAN SMALL LETTER NIKOLSBURG OE +10C9D ; [.3C7B.0020.0008] # OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE +10CDE ; [.3C7B.0020.0004][.0000.0118.0004] # OLD HUNGARIAN SMALL LETTER RUDIMENTA OE +10C9E ; [.3C7B.0020.000A][.0000.0118.0004] # OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE +10CDF ; [.3C7B.0020.0004][.0000.0119.0004] # OLD HUNGARIAN SMALL LETTER OEE +10C9F ; [.3C7B.0020.000A][.0000.0119.0004] # OLD HUNGARIAN CAPITAL LETTER OEE +10CE0 ; [.3C7C.0020.0002] # OLD HUNGARIAN SMALL LETTER EP +10CA0 ; [.3C7C.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EP +10CE1 ; [.3C7D.0020.0002] # OLD HUNGARIAN SMALL LETTER EMP +10CA1 ; [.3C7D.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EMP +10CE2 ; [.3C7E.0020.0002] # OLD HUNGARIAN SMALL LETTER ER +10CA2 ; [.3C7E.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ER +10CE3 ; [.3C7E.0020.0004][.0000.0118.0004] # OLD HUNGARIAN SMALL LETTER SHORT ER +10CA3 ; [.3C7E.0020.000A][.0000.0118.0004] # OLD HUNGARIAN CAPITAL LETTER SHORT ER +10CE4 ; [.3C7F.0020.0002] # OLD HUNGARIAN SMALL LETTER ES +10CA4 ; [.3C7F.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ES +10CE5 ; [.3C80.0020.0002] # OLD HUNGARIAN SMALL LETTER ESZ +10CA5 ; [.3C80.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ESZ +10CE6 ; [.3C81.0020.0002] # OLD HUNGARIAN SMALL LETTER ET +10CA6 ; [.3C81.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ET +10CE7 ; [.3C82.0020.0002] # OLD HUNGARIAN SMALL LETTER ENT +10CA7 ; [.3C82.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ENT +10CE8 ; [.3C83.0020.0002] # OLD HUNGARIAN SMALL LETTER ETY +10CA8 ; [.3C83.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ETY +10CE9 ; [.3C84.0020.0002] # OLD HUNGARIAN SMALL LETTER ECH +10CA9 ; [.3C84.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ECH +10CEA ; [.3C85.0020.0002] # OLD HUNGARIAN SMALL LETTER U +10CAA ; [.3C85.0020.0008] # OLD HUNGARIAN CAPITAL LETTER U +10CEB ; [.3C85.0020.0004][.0000.0118.0004] # OLD HUNGARIAN SMALL LETTER UU +10CAB ; [.3C85.0020.000A][.0000.0118.0004] # OLD HUNGARIAN CAPITAL LETTER UU +10CEC ; [.3C86.0020.0002] # OLD HUNGARIAN SMALL LETTER NIKOLSBURG UE +10CAC ; [.3C86.0020.0008] # OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE +10CED ; [.3C86.0020.0004][.0000.0118.0004] # OLD HUNGARIAN SMALL LETTER RUDIMENTA UE +10CAD ; [.3C86.0020.000A][.0000.0118.0004] # OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE +10CEE ; [.3C87.0020.0002] # OLD HUNGARIAN SMALL LETTER EV +10CAE ; [.3C87.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EV +10CEF ; [.3C88.0020.0002] # OLD HUNGARIAN SMALL LETTER EZ +10CAF ; [.3C88.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EZ +10CF0 ; [.3C89.0020.0002] # OLD HUNGARIAN SMALL LETTER EZS +10CB0 ; [.3C89.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EZS +10CF1 ; [.3C8A.0020.0002] # OLD HUNGARIAN SMALL LETTER ENT-SHAPED SIGN +10CB1 ; [.3C8A.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN +10CF2 ; [.3C8B.0020.0002] # OLD HUNGARIAN SMALL LETTER US +10CB2 ; [.3C8B.0020.0008] # OLD HUNGARIAN CAPITAL LETTER US +10C00 ; [.3C8C.0020.0002] # OLD TURKIC LETTER ORKHON A +10C01 ; [.3C8C.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI A +10C02 ; [.3C8D.0020.0002] # OLD TURKIC LETTER YENISEI AE +10C03 ; [.3C8E.0020.0002] # OLD TURKIC LETTER ORKHON I +10C04 ; [.3C8E.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI I +10C05 ; [.3C8F.0020.0002] # OLD TURKIC LETTER YENISEI E +10C06 ; [.3C90.0020.0002] # OLD TURKIC LETTER ORKHON O +10C07 ; [.3C91.0020.0002] # OLD TURKIC LETTER ORKHON OE +10C08 ; [.3C91.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI OE +10C09 ; [.3C92.0020.0002] # OLD TURKIC LETTER ORKHON AB +10C0A ; [.3C92.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AB +10C0B ; [.3C93.0020.0002] # OLD TURKIC LETTER ORKHON AEB +10C0C ; [.3C93.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AEB +10C0D ; [.3C94.0020.0002] # OLD TURKIC LETTER ORKHON AG +10C0E ; [.3C94.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AG +10C0F ; [.3C95.0020.0002] # OLD TURKIC LETTER ORKHON AEG +10C10 ; [.3C95.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AEG +10C11 ; [.3C96.0020.0002] # OLD TURKIC LETTER ORKHON AD +10C12 ; [.3C96.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AD +10C13 ; [.3C97.0020.0002] # OLD TURKIC LETTER ORKHON AED +10C14 ; [.3C98.0020.0002] # OLD TURKIC LETTER ORKHON EZ +10C15 ; [.3C98.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI EZ +10C16 ; [.3C99.0020.0002] # OLD TURKIC LETTER ORKHON AY +10C17 ; [.3C99.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AY +10C18 ; [.3C9A.0020.0002] # OLD TURKIC LETTER ORKHON AEY +10C19 ; [.3C9A.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AEY +10C1A ; [.3C9B.0020.0002] # OLD TURKIC LETTER ORKHON AEK +10C1B ; [.3C9B.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AEK +10C1C ; [.3C9C.0020.0002] # OLD TURKIC LETTER ORKHON OEK +10C1D ; [.3C9C.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI OEK +10C1E ; [.3C9D.0020.0002] # OLD TURKIC LETTER ORKHON AL +10C1F ; [.3C9D.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AL +10C20 ; [.3C9E.0020.0002] # OLD TURKIC LETTER ORKHON AEL +10C21 ; [.3C9F.0020.0002] # OLD TURKIC LETTER ORKHON ELT +10C22 ; [.3CA0.0020.0002] # OLD TURKIC LETTER ORKHON EM +10C23 ; [.3CA1.0020.0002] # OLD TURKIC LETTER ORKHON AN +10C24 ; [.3CA2.0020.0002] # OLD TURKIC LETTER ORKHON AEN +10C25 ; [.3CA2.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AEN +10C26 ; [.3CA3.0020.0002] # OLD TURKIC LETTER ORKHON ENT +10C27 ; [.3CA3.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI ENT +10C28 ; [.3CA4.0020.0002] # OLD TURKIC LETTER ORKHON ENC +10C29 ; [.3CA4.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI ENC +10C2A ; [.3CA5.0020.0002] # OLD TURKIC LETTER ORKHON ENY +10C2B ; [.3CA5.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI ENY +10C2C ; [.3CA6.0020.0002] # OLD TURKIC LETTER YENISEI ANG +10C2D ; [.3CA7.0020.0002] # OLD TURKIC LETTER ORKHON ENG +10C2E ; [.3CA7.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AENG +10C2F ; [.3CA8.0020.0002] # OLD TURKIC LETTER ORKHON EP +10C30 ; [.3CA9.0020.0002] # OLD TURKIC LETTER ORKHON OP +10C31 ; [.3CAA.0020.0002] # OLD TURKIC LETTER ORKHON IC +10C32 ; [.3CAB.0020.0002] # OLD TURKIC LETTER ORKHON EC +10C33 ; [.3CAB.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI EC +10C34 ; [.3CAC.0020.0002] # OLD TURKIC LETTER ORKHON AQ +10C35 ; [.3CAC.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AQ +10C36 ; [.3CAD.0020.0002] # OLD TURKIC LETTER ORKHON IQ +10C37 ; [.3CAD.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI IQ +10C38 ; [.3CAE.0020.0002] # OLD TURKIC LETTER ORKHON OQ +10C39 ; [.3CAE.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI OQ +10C3A ; [.3CAF.0020.0002] # OLD TURKIC LETTER ORKHON AR +10C3B ; [.3CAF.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AR +10C3C ; [.3CB0.0020.0002] # OLD TURKIC LETTER ORKHON AER +10C3D ; [.3CB1.0020.0002] # OLD TURKIC LETTER ORKHON AS +10C3E ; [.3CB2.0020.0002] # OLD TURKIC LETTER ORKHON AES +10C3F ; [.3CB3.0020.0002] # OLD TURKIC LETTER ORKHON ASH +10C40 ; [.3CB3.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI ASH +10C41 ; [.3CB4.0020.0002] # OLD TURKIC LETTER ORKHON ESH +10C42 ; [.3CB4.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI ESH +10C43 ; [.3CB5.0020.0002] # OLD TURKIC LETTER ORKHON AT +10C44 ; [.3CB5.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AT +10C45 ; [.3CB6.0020.0002] # OLD TURKIC LETTER ORKHON AET +10C46 ; [.3CB6.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AET +10C47 ; [.3CB7.0020.0002] # OLD TURKIC LETTER ORKHON OT +10C48 ; [.3CB8.0020.0002] # OLD TURKIC LETTER ORKHON BASH +A500 ; [.3CB9.0020.0002] # VAI SYLLABLE EE +A501 ; [.3CBA.0020.0002] # VAI SYLLABLE EEN +A502 ; [.3CBB.0020.0002] # VAI SYLLABLE HEE +A503 ; [.3CBC.0020.0002] # VAI SYLLABLE WEE +A504 ; [.3CBD.0020.0002] # VAI SYLLABLE WEEN +A505 ; [.3CBE.0020.0002] # VAI SYLLABLE PEE +A506 ; [.3CBF.0020.0002] # VAI SYLLABLE BHEE +A507 ; [.3CC0.0020.0002] # VAI SYLLABLE BEE +A508 ; [.3CC1.0020.0002] # VAI SYLLABLE MBEE +A509 ; [.3CC2.0020.0002] # VAI SYLLABLE KPEE +A50A ; [.3CC3.0020.0002] # VAI SYLLABLE MGBEE +A50B ; [.3CC4.0020.0002] # VAI SYLLABLE GBEE +A50C ; [.3CC5.0020.0002] # VAI SYLLABLE FEE +A613 ; [.3CC5.0020.0004][.3DC4.0020.0004] # VAI SYMBOL FEENG +A50D ; [.3CC6.0020.0002] # VAI SYLLABLE VEE +A50E ; [.3CC7.0020.0002] # VAI SYLLABLE TEE +A50F ; [.3CC8.0020.0002] # VAI SYLLABLE THEE +A510 ; [.3CC9.0020.0002] # VAI SYLLABLE DHEE +A511 ; [.3CCA.0020.0002] # VAI SYLLABLE DHHEE +A512 ; [.3CCB.0020.0002] # VAI SYLLABLE LEE +A513 ; [.3CCC.0020.0002] # VAI SYLLABLE REE +A514 ; [.3CCD.0020.0002] # VAI SYLLABLE DEE +A515 ; [.3CCE.0020.0002] # VAI SYLLABLE NDEE +A516 ; [.3CCF.0020.0002] # VAI SYLLABLE SEE +A517 ; [.3CD0.0020.0002] # VAI SYLLABLE SHEE +A518 ; [.3CD1.0020.0002] # VAI SYLLABLE ZEE +A519 ; [.3CD2.0020.0002] # VAI SYLLABLE ZHEE +A51A ; [.3CD3.0020.0002] # VAI SYLLABLE CEE +A51B ; [.3CD4.0020.0002] # VAI SYLLABLE JEE +A51C ; [.3CD5.0020.0002] # VAI SYLLABLE NJEE +A51D ; [.3CD6.0020.0002] # VAI SYLLABLE YEE +A51E ; [.3CD7.0020.0002] # VAI SYLLABLE KEE +A614 ; [.3CD7.0020.0004][.3DC4.0020.0004] # VAI SYMBOL KEENG +A51F ; [.3CD8.0020.0002] # VAI SYLLABLE NGGEE +A520 ; [.3CD9.0020.0002] # VAI SYLLABLE GEE +A521 ; [.3CDA.0020.0002] # VAI SYLLABLE MEE +A522 ; [.3CDB.0020.0002] # VAI SYLLABLE NEE +A523 ; [.3CDC.0020.0002] # VAI SYLLABLE NYEE +A524 ; [.3CDD.0020.0002] # VAI SYLLABLE I +A525 ; [.3CDE.0020.0002] # VAI SYLLABLE IN +A526 ; [.3CDF.0020.0002] # VAI SYLLABLE HI +A527 ; [.3CE0.0020.0002] # VAI SYLLABLE HIN +A528 ; [.3CE1.0020.0002] # VAI SYLLABLE WI +A529 ; [.3CE2.0020.0002] # VAI SYLLABLE WIN +A52A ; [.3CE3.0020.0002] # VAI SYLLABLE PI +A52B ; [.3CE4.0020.0002] # VAI SYLLABLE BHI +A52C ; [.3CE5.0020.0002] # VAI SYLLABLE BI +A52D ; [.3CE6.0020.0002] # VAI SYLLABLE MBI +A52E ; [.3CE7.0020.0002] # VAI SYLLABLE KPI +A52F ; [.3CE8.0020.0002] # VAI SYLLABLE MGBI +A530 ; [.3CE9.0020.0002] # VAI SYLLABLE GBI +A531 ; [.3CEA.0020.0002] # VAI SYLLABLE FI +A532 ; [.3CEB.0020.0002] # VAI SYLLABLE VI +A533 ; [.3CEC.0020.0002] # VAI SYLLABLE TI +A615 ; [.3CEC.0020.0004][.3DC4.0020.0004] # VAI SYMBOL TING +A534 ; [.3CED.0020.0002] # VAI SYLLABLE THI +A535 ; [.3CEE.0020.0002] # VAI SYLLABLE DHI +A536 ; [.3CEF.0020.0002] # VAI SYLLABLE DHHI +A537 ; [.3CF0.0020.0002] # VAI SYLLABLE LI +A538 ; [.3CF1.0020.0002] # VAI SYLLABLE RI +A539 ; [.3CF2.0020.0002] # VAI SYLLABLE DI +A53A ; [.3CF3.0020.0002] # VAI SYLLABLE NDI +A53B ; [.3CF4.0020.0002] # VAI SYLLABLE SI +A53C ; [.3CF5.0020.0002] # VAI SYLLABLE SHI +A53D ; [.3CF6.0020.0002] # VAI SYLLABLE ZI +A53E ; [.3CF7.0020.0002] # VAI SYLLABLE ZHI +A53F ; [.3CF8.0020.0002] # VAI SYLLABLE CI +A540 ; [.3CF9.0020.0002] # VAI SYLLABLE JI +A541 ; [.3CFA.0020.0002] # VAI SYLLABLE NJI +A542 ; [.3CFB.0020.0002] # VAI SYLLABLE YI +A543 ; [.3CFC.0020.0002] # VAI SYLLABLE KI +A544 ; [.3CFD.0020.0002] # VAI SYLLABLE NGGI +A545 ; [.3CFE.0020.0002] # VAI SYLLABLE GI +A546 ; [.3CFF.0020.0002] # VAI SYLLABLE MI +A547 ; [.3D00.0020.0002] # VAI SYLLABLE NI +A616 ; [.3D00.0020.0004][.3DC5.0020.0004] # VAI SYMBOL NII +A548 ; [.3D01.0020.0002] # VAI SYLLABLE NYI +A549 ; [.3D02.0020.0002] # VAI SYLLABLE A +A54A ; [.3D03.0020.0002] # VAI SYLLABLE AN +A54B ; [.3D04.0020.0002] # VAI SYLLABLE NGAN +A54C ; [.3D05.0020.0002] # VAI SYLLABLE HA +A54D ; [.3D06.0020.0002] # VAI SYLLABLE HAN +A54E ; [.3D07.0020.0002] # VAI SYLLABLE WA +A54F ; [.3D08.0020.0002] # VAI SYLLABLE WAN +A550 ; [.3D09.0020.0002] # VAI SYLLABLE PA +A551 ; [.3D0A.0020.0002] # VAI SYLLABLE BHA +A552 ; [.3D0B.0020.0002] # VAI SYLLABLE BA +A617 ; [.3D0B.0020.0004][.3DC4.0020.0004] # VAI SYMBOL BANG +A553 ; [.3D0C.0020.0002] # VAI SYLLABLE MBA +A554 ; [.3D0D.0020.0002] # VAI SYLLABLE KPA +A555 ; [.3D0E.0020.0002] # VAI SYLLABLE KPAN +A556 ; [.3D0F.0020.0002] # VAI SYLLABLE MGBA +A557 ; [.3D10.0020.0002] # VAI SYLLABLE GBA +A558 ; [.3D11.0020.0002] # VAI SYLLABLE FA +A610 ; [.3D11.0020.0004] # VAI SYLLABLE NDOLE FA +A618 ; [.3D11.0020.0004][.3DC5.0020.0004] # VAI SYMBOL FAA +A559 ; [.3D12.0020.0002] # VAI SYLLABLE VA +A55A ; [.3D13.0020.0002] # VAI SYLLABLE TA +A619 ; [.3D13.0020.0004][.3DC5.0020.0004] # VAI SYMBOL TAA +A55B ; [.3D14.0020.0002] # VAI SYLLABLE THA +A55C ; [.3D15.0020.0002] # VAI SYLLABLE DHA +A55D ; [.3D16.0020.0002] # VAI SYLLABLE DHHA +A55E ; [.3D17.0020.0002] # VAI SYLLABLE LA +A55F ; [.3D18.0020.0002] # VAI SYLLABLE RA +A560 ; [.3D19.0020.0002] # VAI SYLLABLE DA +A61A ; [.3D19.0020.0004][.3DC4.0020.0004] # VAI SYMBOL DANG +A561 ; [.3D1A.0020.0002] # VAI SYLLABLE NDA +A562 ; [.3D1B.0020.0002] # VAI SYLLABLE SA +A563 ; [.3D1C.0020.0002] # VAI SYLLABLE SHA +A564 ; [.3D1D.0020.0002] # VAI SYLLABLE ZA +A565 ; [.3D1E.0020.0002] # VAI SYLLABLE ZHA +A566 ; [.3D1F.0020.0002] # VAI SYLLABLE CA +A567 ; [.3D20.0020.0002] # VAI SYLLABLE JA +A568 ; [.3D21.0020.0002] # VAI SYLLABLE NJA +A569 ; [.3D22.0020.0002] # VAI SYLLABLE YA +A56A ; [.3D23.0020.0002] # VAI SYLLABLE KA +A611 ; [.3D23.0020.0004] # VAI SYLLABLE NDOLE KA +A56B ; [.3D24.0020.0002] # VAI SYLLABLE KAN +A56C ; [.3D25.0020.0002] # VAI SYLLABLE NGGA +A56D ; [.3D26.0020.0002] # VAI SYLLABLE GA +A56E ; [.3D27.0020.0002] # VAI SYLLABLE MA +A62A ; [.3D27.0020.0004] # VAI SYLLABLE NDOLE MA +A56F ; [.3D28.0020.0002] # VAI SYLLABLE NA +A570 ; [.3D29.0020.0002] # VAI SYLLABLE NYA +A571 ; [.3D2A.0020.0002] # VAI SYLLABLE OO +A572 ; [.3D2B.0020.0002] # VAI SYLLABLE OON +A573 ; [.3D2C.0020.0002] # VAI SYLLABLE HOO +A574 ; [.3D2D.0020.0002] # VAI SYLLABLE WOO +A575 ; [.3D2E.0020.0002] # VAI SYLLABLE WOON +A576 ; [.3D2F.0020.0002] # VAI SYLLABLE POO +A577 ; [.3D30.0020.0002] # VAI SYLLABLE BHOO +A578 ; [.3D31.0020.0002] # VAI SYLLABLE BOO +A579 ; [.3D32.0020.0002] # VAI SYLLABLE MBOO +A57A ; [.3D33.0020.0002] # VAI SYLLABLE KPOO +A57B ; [.3D34.0020.0002] # VAI SYLLABLE MGBOO +A57C ; [.3D35.0020.0002] # VAI SYLLABLE GBOO +A57D ; [.3D36.0020.0002] # VAI SYLLABLE FOO +A57E ; [.3D37.0020.0002] # VAI SYLLABLE VOO +A57F ; [.3D38.0020.0002] # VAI SYLLABLE TOO +A580 ; [.3D39.0020.0002] # VAI SYLLABLE THOO +A581 ; [.3D3A.0020.0002] # VAI SYLLABLE DHOO +A582 ; [.3D3B.0020.0002] # VAI SYLLABLE DHHOO +A583 ; [.3D3C.0020.0002] # VAI SYLLABLE LOO +A584 ; [.3D3D.0020.0002] # VAI SYLLABLE ROO +A585 ; [.3D3E.0020.0002] # VAI SYLLABLE DOO +A61B ; [.3D3E.0020.0004][.3DC4.0020.0004] # VAI SYMBOL DOONG +A586 ; [.3D3F.0020.0002] # VAI SYLLABLE NDOO +A587 ; [.3D40.0020.0002] # VAI SYLLABLE SOO +A612 ; [.3D40.0020.0004] # VAI SYLLABLE NDOLE SOO +A588 ; [.3D41.0020.0002] # VAI SYLLABLE SHOO +A589 ; [.3D42.0020.0002] # VAI SYLLABLE ZOO +A58A ; [.3D43.0020.0002] # VAI SYLLABLE ZHOO +A58B ; [.3D44.0020.0002] # VAI SYLLABLE COO +A58C ; [.3D45.0020.0002] # VAI SYLLABLE JOO +A58D ; [.3D46.0020.0002] # VAI SYLLABLE NJOO +A58E ; [.3D47.0020.0002] # VAI SYLLABLE YOO +A58F ; [.3D48.0020.0002] # VAI SYLLABLE KOO +A590 ; [.3D49.0020.0002] # VAI SYLLABLE NGGOO +A591 ; [.3D4A.0020.0002] # VAI SYLLABLE GOO +A592 ; [.3D4B.0020.0002] # VAI SYLLABLE MOO +A593 ; [.3D4C.0020.0002] # VAI SYLLABLE NOO +A594 ; [.3D4D.0020.0002] # VAI SYLLABLE NYOO +A595 ; [.3D4E.0020.0002] # VAI SYLLABLE U +A596 ; [.3D4F.0020.0002] # VAI SYLLABLE UN +A597 ; [.3D50.0020.0002] # VAI SYLLABLE HU +A598 ; [.3D51.0020.0002] # VAI SYLLABLE HUN +A599 ; [.3D52.0020.0002] # VAI SYLLABLE WU +A59A ; [.3D53.0020.0002] # VAI SYLLABLE WUN +A59B ; [.3D54.0020.0002] # VAI SYLLABLE PU +A59C ; [.3D55.0020.0002] # VAI SYLLABLE BHU +A59D ; [.3D56.0020.0002] # VAI SYLLABLE BU +A59E ; [.3D57.0020.0002] # VAI SYLLABLE MBU +A59F ; [.3D58.0020.0002] # VAI SYLLABLE KPU +A5A0 ; [.3D59.0020.0002] # VAI SYLLABLE MGBU +A5A1 ; [.3D5A.0020.0002] # VAI SYLLABLE GBU +A5A2 ; [.3D5B.0020.0002] # VAI SYLLABLE FU +A5A3 ; [.3D5C.0020.0002] # VAI SYLLABLE VU +A5A4 ; [.3D5D.0020.0002] # VAI SYLLABLE TU +A5A5 ; [.3D5E.0020.0002] # VAI SYLLABLE THU +A5A6 ; [.3D5F.0020.0002] # VAI SYLLABLE DHU +A5A7 ; [.3D60.0020.0002] # VAI SYLLABLE DHHU +A5A8 ; [.3D61.0020.0002] # VAI SYLLABLE LU +A5A9 ; [.3D62.0020.0002] # VAI SYLLABLE RU +A5AA ; [.3D63.0020.0002] # VAI SYLLABLE DU +A5AB ; [.3D64.0020.0002] # VAI SYLLABLE NDU +A5AC ; [.3D65.0020.0002] # VAI SYLLABLE SU +A5AD ; [.3D66.0020.0002] # VAI SYLLABLE SHU +A5AE ; [.3D67.0020.0002] # VAI SYLLABLE ZU +A5AF ; [.3D68.0020.0002] # VAI SYLLABLE ZHU +A5B0 ; [.3D69.0020.0002] # VAI SYLLABLE CU +A5B1 ; [.3D6A.0020.0002] # VAI SYLLABLE JU +A5B2 ; [.3D6B.0020.0002] # VAI SYLLABLE NJU +A5B3 ; [.3D6C.0020.0002] # VAI SYLLABLE YU +A5B4 ; [.3D6D.0020.0002] # VAI SYLLABLE KU +A61C ; [.3D6D.0020.0004][.3DC4.0020.0004] # VAI SYMBOL KUNG +A5B5 ; [.3D6E.0020.0002] # VAI SYLLABLE NGGU +A5B6 ; [.3D6F.0020.0002] # VAI SYLLABLE GU +A5B7 ; [.3D70.0020.0002] # VAI SYLLABLE MU +A5B8 ; [.3D71.0020.0002] # VAI SYLLABLE NU +A5B9 ; [.3D72.0020.0002] # VAI SYLLABLE NYU +A5BA ; [.3D73.0020.0002] # VAI SYLLABLE O +A5BB ; [.3D74.0020.0002] # VAI SYLLABLE ON +A5BC ; [.3D75.0020.0002] # VAI SYLLABLE NGON +A5BD ; [.3D76.0020.0002] # VAI SYLLABLE HO +A5BE ; [.3D77.0020.0002] # VAI SYLLABLE HON +A5BF ; [.3D78.0020.0002] # VAI SYLLABLE WO +A5C0 ; [.3D79.0020.0002] # VAI SYLLABLE WON +A5C1 ; [.3D7A.0020.0002] # VAI SYLLABLE PO +A5C2 ; [.3D7B.0020.0002] # VAI SYLLABLE BHO +A5C3 ; [.3D7C.0020.0002] # VAI SYLLABLE BO +A5C4 ; [.3D7D.0020.0002] # VAI SYLLABLE MBO +A5C5 ; [.3D7E.0020.0002] # VAI SYLLABLE KPO +A5C6 ; [.3D7F.0020.0002] # VAI SYLLABLE MGBO +A5C7 ; [.3D80.0020.0002] # VAI SYLLABLE GBO +A5C8 ; [.3D81.0020.0002] # VAI SYLLABLE GBON +A5C9 ; [.3D82.0020.0002] # VAI SYLLABLE FO +A5CA ; [.3D83.0020.0002] # VAI SYLLABLE VO +A5CB ; [.3D84.0020.0002] # VAI SYLLABLE TO +A61D ; [.3D84.0020.0004][.3DC4.0020.0004] # VAI SYMBOL TONG +A5CC ; [.3D85.0020.0002] # VAI SYLLABLE THO +A5CD ; [.3D86.0020.0002] # VAI SYLLABLE DHO +A5CE ; [.3D87.0020.0002] # VAI SYLLABLE DHHO +A5CF ; [.3D88.0020.0002] # VAI SYLLABLE LO +A5D0 ; [.3D89.0020.0002] # VAI SYLLABLE RO +A5D1 ; [.3D8A.0020.0002] # VAI SYLLABLE DO +A62B ; [.3D8A.0020.0004] # VAI SYLLABLE NDOLE DO +A61E ; [.3D8A.0020.0004][.3DC5.0020.0004] # VAI SYMBOL DO-O +A5D2 ; [.3D8B.0020.0002] # VAI SYLLABLE NDO +A5D3 ; [.3D8C.0020.0002] # VAI SYLLABLE SO +A5D4 ; [.3D8D.0020.0002] # VAI SYLLABLE SHO +A5D5 ; [.3D8E.0020.0002] # VAI SYLLABLE ZO +A5D6 ; [.3D8F.0020.0002] # VAI SYLLABLE ZHO +A5D7 ; [.3D90.0020.0002] # VAI SYLLABLE CO +A5D8 ; [.3D91.0020.0002] # VAI SYLLABLE JO +A61F ; [.3D91.0020.0004][.3DC4.0020.0004] # VAI SYMBOL JONG +A5D9 ; [.3D92.0020.0002] # VAI SYLLABLE NJO +A5DA ; [.3D93.0020.0002] # VAI SYLLABLE YO +A5DB ; [.3D94.0020.0002] # VAI SYLLABLE KO +A5DC ; [.3D95.0020.0002] # VAI SYLLABLE NGGO +A5DD ; [.3D96.0020.0002] # VAI SYLLABLE GO +A5DE ; [.3D97.0020.0002] # VAI SYLLABLE MO +A5DF ; [.3D98.0020.0002] # VAI SYLLABLE NO +A5E0 ; [.3D99.0020.0002] # VAI SYLLABLE NYO +A5E1 ; [.3D9A.0020.0002] # VAI SYLLABLE E +A5E2 ; [.3D9B.0020.0002] # VAI SYLLABLE EN +A5E3 ; [.3D9C.0020.0002] # VAI SYLLABLE NGEN +A5E4 ; [.3D9D.0020.0002] # VAI SYLLABLE HE +A5E5 ; [.3D9E.0020.0002] # VAI SYLLABLE HEN +A5E6 ; [.3D9F.0020.0002] # VAI SYLLABLE WE +A5E7 ; [.3DA0.0020.0002] # VAI SYLLABLE WEN +A5E8 ; [.3DA1.0020.0002] # VAI SYLLABLE PE +A5E9 ; [.3DA2.0020.0002] # VAI SYLLABLE BHE +A5EA ; [.3DA3.0020.0002] # VAI SYLLABLE BE +A5EB ; [.3DA4.0020.0002] # VAI SYLLABLE MBE +A5EC ; [.3DA5.0020.0002] # VAI SYLLABLE KPE +A5ED ; [.3DA6.0020.0002] # VAI SYLLABLE KPEN +A5EE ; [.3DA7.0020.0002] # VAI SYLLABLE MGBE +A5EF ; [.3DA8.0020.0002] # VAI SYLLABLE GBE +A5F0 ; [.3DA9.0020.0002] # VAI SYLLABLE GBEN +A5F1 ; [.3DAA.0020.0002] # VAI SYLLABLE FE +A5F2 ; [.3DAB.0020.0002] # VAI SYLLABLE VE +A5F3 ; [.3DAC.0020.0002] # VAI SYLLABLE TE +A5F4 ; [.3DAD.0020.0002] # VAI SYLLABLE THE +A5F5 ; [.3DAE.0020.0002] # VAI SYLLABLE DHE +A5F6 ; [.3DAF.0020.0002] # VAI SYLLABLE DHHE +A5F7 ; [.3DB0.0020.0002] # VAI SYLLABLE LE +A5F8 ; [.3DB1.0020.0002] # VAI SYLLABLE RE +A5F9 ; [.3DB2.0020.0002] # VAI SYLLABLE DE +A5FA ; [.3DB3.0020.0002] # VAI SYLLABLE NDE +A5FB ; [.3DB4.0020.0002] # VAI SYLLABLE SE +A5FC ; [.3DB5.0020.0002] # VAI SYLLABLE SHE +A5FD ; [.3DB6.0020.0002] # VAI SYLLABLE ZE +A5FE ; [.3DB7.0020.0002] # VAI SYLLABLE ZHE +A5FF ; [.3DB8.0020.0002] # VAI SYLLABLE CE +A600 ; [.3DB9.0020.0002] # VAI SYLLABLE JE +A601 ; [.3DBA.0020.0002] # VAI SYLLABLE NJE +A602 ; [.3DBB.0020.0002] # VAI SYLLABLE YE +A603 ; [.3DBC.0020.0002] # VAI SYLLABLE KE +A604 ; [.3DBD.0020.0002] # VAI SYLLABLE NGGE +A605 ; [.3DBE.0020.0002] # VAI SYLLABLE NGGEN +A606 ; [.3DBF.0020.0002] # VAI SYLLABLE GE +A607 ; [.3DC0.0020.0002] # VAI SYLLABLE GEN +A608 ; [.3DC1.0020.0002] # VAI SYLLABLE ME +A609 ; [.3DC2.0020.0002] # VAI SYLLABLE NE +A60A ; [.3DC3.0020.0002] # VAI SYLLABLE NYE +A60B ; [.3DC4.0020.0002] # VAI SYLLABLE NG +A60C ; [.3DC5.0020.0002] # VAI SYLLABLE LENGTHENER +A6A0 ; [.3DC6.0020.0002] # BAMUM LETTER A +A6A1 ; [.3DC7.0020.0002] # BAMUM LETTER KA +A6A2 ; [.3DC8.0020.0002] # BAMUM LETTER U +A6A3 ; [.3DC9.0020.0002] # BAMUM LETTER KU +A6A4 ; [.3DCA.0020.0002] # BAMUM LETTER EE +A6A5 ; [.3DCB.0020.0002] # BAMUM LETTER REE +A6A6 ; [.3DCC.0020.0002] # BAMUM LETTER TAE +A6A7 ; [.3DCD.0020.0002] # BAMUM LETTER O +A6A8 ; [.3DCE.0020.0002] # BAMUM LETTER NYI +A6A9 ; [.3DCF.0020.0002] # BAMUM LETTER I +A6AA ; [.3DD0.0020.0002] # BAMUM LETTER LA +A6AB ; [.3DD1.0020.0002] # BAMUM LETTER PA +A6AC ; [.3DD2.0020.0002] # BAMUM LETTER RII +A6AD ; [.3DD3.0020.0002] # BAMUM LETTER RIEE +A6AE ; [.3DD4.0020.0002] # BAMUM LETTER LEEEE +A6AF ; [.3DD5.0020.0002] # BAMUM LETTER MEEEE +A6B0 ; [.3DD6.0020.0002] # BAMUM LETTER TAA +A6B1 ; [.3DD7.0020.0002] # BAMUM LETTER NDAA +A6B2 ; [.3DD8.0020.0002] # BAMUM LETTER NJAEM +A6B3 ; [.3DD9.0020.0002] # BAMUM LETTER M +A6B4 ; [.3DDA.0020.0002] # BAMUM LETTER SUU +A6B5 ; [.3DDB.0020.0002] # BAMUM LETTER MU +A6B6 ; [.3DDC.0020.0002] # BAMUM LETTER SHII +A6B7 ; [.3DDD.0020.0002] # BAMUM LETTER SI +A6B8 ; [.3DDE.0020.0002] # BAMUM LETTER SHEUX +A6B9 ; [.3DDF.0020.0002] # BAMUM LETTER SEUX +A6BA ; [.3DE0.0020.0002] # BAMUM LETTER KYEE +A6BB ; [.3DE1.0020.0002] # BAMUM LETTER KET +A6BC ; [.3DE2.0020.0002] # BAMUM LETTER NUAE +A6BD ; [.3DE3.0020.0002] # BAMUM LETTER NU +A6BE ; [.3DE4.0020.0002] # BAMUM LETTER NJUAE +A6BF ; [.3DE5.0020.0002] # BAMUM LETTER YOQ +A6C0 ; [.3DE6.0020.0002] # BAMUM LETTER SHU +A6C1 ; [.3DE7.0020.0002] # BAMUM LETTER YUQ +A6C2 ; [.3DE8.0020.0002] # BAMUM LETTER YA +A6C3 ; [.3DE9.0020.0002] # BAMUM LETTER NSHA +A6C4 ; [.3DEA.0020.0002] # BAMUM LETTER KEUX +A6C5 ; [.3DEB.0020.0002] # BAMUM LETTER PEUX +A6C6 ; [.3DEC.0020.0002] # BAMUM LETTER NJEE +A6C7 ; [.3DED.0020.0002] # BAMUM LETTER NTEE +A6C8 ; [.3DEE.0020.0002] # BAMUM LETTER PUE +A6C9 ; [.3DEF.0020.0002] # BAMUM LETTER WUE +A6CA ; [.3DF0.0020.0002] # BAMUM LETTER PEE +A6CB ; [.3DF1.0020.0002] # BAMUM LETTER FEE +A6CC ; [.3DF2.0020.0002] # BAMUM LETTER RU +A6CD ; [.3DF3.0020.0002] # BAMUM LETTER LU +A6CE ; [.3DF4.0020.0002] # BAMUM LETTER MI +A6CF ; [.3DF5.0020.0002] # BAMUM LETTER NI +A6D0 ; [.3DF6.0020.0002] # BAMUM LETTER REUX +A6D1 ; [.3DF7.0020.0002] # BAMUM LETTER RAE +A6D2 ; [.3DF8.0020.0002] # BAMUM LETTER KEN +A6D3 ; [.3DF9.0020.0002] # BAMUM LETTER NGKWAEN +A6D4 ; [.3DFA.0020.0002] # BAMUM LETTER NGGA +A6D5 ; [.3DFB.0020.0002] # BAMUM LETTER NGA +A6D6 ; [.3DFC.0020.0002] # BAMUM LETTER SHO +A6D7 ; [.3DFD.0020.0002] # BAMUM LETTER PUAE +A6D8 ; [.3DFE.0020.0002] # BAMUM LETTER FU +A6D9 ; [.3DFF.0020.0002] # BAMUM LETTER FOM +A6DA ; [.3E00.0020.0002] # BAMUM LETTER WA +A6DB ; [.3E01.0020.0002] # BAMUM LETTER NA +A6DC ; [.3E02.0020.0002] # BAMUM LETTER LI +A6DD ; [.3E03.0020.0002] # BAMUM LETTER PI +A6DE ; [.3E04.0020.0002] # BAMUM LETTER LOQ +A6DF ; [.3E05.0020.0002] # BAMUM LETTER KO +A6E0 ; [.3E06.0020.0002] # BAMUM LETTER MBEN +A6E1 ; [.3E07.0020.0002] # BAMUM LETTER REN +A6E2 ; [.3E08.0020.0002] # BAMUM LETTER MEN +A6E3 ; [.3E09.0020.0002] # BAMUM LETTER MA +A6E4 ; [.3E0A.0020.0002] # BAMUM LETTER TI +A6E5 ; [.3E0B.0020.0002] # BAMUM LETTER KI +A6E6 ; [.3E0C.0020.0002] # BAMUM LETTER MO +A6E7 ; [.3E0D.0020.0002] # BAMUM LETTER MBAA +A6E8 ; [.3E0E.0020.0002] # BAMUM LETTER TET +A6E9 ; [.3E0F.0020.0002] # BAMUM LETTER KPA +A6EA ; [.3E10.0020.0002] # BAMUM LETTER TEN +A6EB ; [.3E11.0020.0002] # BAMUM LETTER NTUU +A6EC ; [.3E12.0020.0002] # BAMUM LETTER SAMBA +A6ED ; [.3E13.0020.0002] # BAMUM LETTER FAAMAE +A6EE ; [.3E14.0020.0002] # BAMUM LETTER KOVUU +A6EF ; [.3E15.0020.0002] # BAMUM LETTER KOGHOM +16800 ; [.3E16.0020.0002] # BAMUM LETTER PHASE-A NGKUE MFON +16801 ; [.3E17.0020.0002] # BAMUM LETTER PHASE-A GBIEE FON +16802 ; [.3E18.0020.0002] # BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE +16803 ; [.3E19.0020.0002] # BAMUM LETTER PHASE-A PON MFON PIPAEMBA +16804 ; [.3E1A.0020.0002] # BAMUM LETTER PHASE-A NAA MFON +16805 ; [.3E1B.0020.0002] # BAMUM LETTER PHASE-A SHUENSHUET +16806 ; [.3E1C.0020.0002] # BAMUM LETTER PHASE-A TITA MFON +16807 ; [.3E1D.0020.0002] # BAMUM LETTER PHASE-A NZA MFON +16808 ; [.3E1E.0020.0002] # BAMUM LETTER PHASE-A SHINDA PA NJI +16809 ; [.3E1F.0020.0002] # BAMUM LETTER PHASE-A PON PA NJI PIPAEMGBIEE +1680A ; [.3E20.0020.0002] # BAMUM LETTER PHASE-A PON PA NJI PIPAEMBA +1680B ; [.3E21.0020.0002] # BAMUM LETTER PHASE-A MAEMBGBIEE +1680C ; [.3E22.0020.0002] # BAMUM LETTER PHASE-A TU MAEMBA +1680D ; [.3E23.0020.0002] # BAMUM LETTER PHASE-A NGANGU +1680E ; [.3E24.0020.0002] # BAMUM LETTER PHASE-A MAEMVEUX +1680F ; [.3E25.0020.0002] # BAMUM LETTER PHASE-A MANSUAE +16810 ; [.3E26.0020.0002] # BAMUM LETTER PHASE-A MVEUAENGAM +16811 ; [.3E27.0020.0002] # BAMUM LETTER PHASE-A SEUNYAM +16812 ; [.3E28.0020.0002] # BAMUM LETTER PHASE-A NTOQPEN +16813 ; [.3E29.0020.0002] # BAMUM LETTER PHASE-A KEUKEUTNDA +16814 ; [.3E2A.0020.0002] # BAMUM LETTER PHASE-A NKINDI +16815 ; [.3E2B.0020.0002] # BAMUM LETTER PHASE-A SUU +16816 ; [.3E2C.0020.0002] # BAMUM LETTER PHASE-A NGKUENZEUM +16817 ; [.3E2D.0020.0002] # BAMUM LETTER PHASE-A LAPAQ +16818 ; [.3E2E.0020.0002] # BAMUM LETTER PHASE-A LET KUT +16819 ; [.3E2F.0020.0002] # BAMUM LETTER PHASE-A NTAP MFAA +1681A ; [.3E30.0020.0002] # BAMUM LETTER PHASE-A MAEKEUP +1681B ; [.3E31.0020.0002] # BAMUM LETTER PHASE-A PASHAE +1681C ; [.3E32.0020.0002] # BAMUM LETTER PHASE-A GHEUAERAE +1681D ; [.3E33.0020.0002] # BAMUM LETTER PHASE-A PAMSHAE +1681E ; [.3E34.0020.0002] # BAMUM LETTER PHASE-A MON NGGEUAET +1681F ; [.3E35.0020.0002] # BAMUM LETTER PHASE-A NZUN MEUT +16820 ; [.3E36.0020.0002] # BAMUM LETTER PHASE-A U YUQ NAE +16821 ; [.3E37.0020.0002] # BAMUM LETTER PHASE-A GHEUAEGHEUAE +16822 ; [.3E38.0020.0002] # BAMUM LETTER PHASE-A NTAP NTAA +16823 ; [.3E39.0020.0002] # BAMUM LETTER PHASE-A SISA +16824 ; [.3E3A.0020.0002] # BAMUM LETTER PHASE-A MGBASA +16825 ; [.3E3B.0020.0002] # BAMUM LETTER PHASE-A MEUNJOMNDEUQ +16826 ; [.3E3C.0020.0002] # BAMUM LETTER PHASE-A MOOMPUQ +16827 ; [.3E3D.0020.0002] # BAMUM LETTER PHASE-A KAFA +16828 ; [.3E3E.0020.0002] # BAMUM LETTER PHASE-A PA LEERAEWA +16829 ; [.3E3F.0020.0002] # BAMUM LETTER PHASE-A NDA LEERAEWA +1682A ; [.3E40.0020.0002] # BAMUM LETTER PHASE-A PET +1682B ; [.3E41.0020.0002] # BAMUM LETTER PHASE-A MAEMKPEN +1682C ; [.3E42.0020.0002] # BAMUM LETTER PHASE-A NIKA +1682D ; [.3E43.0020.0002] # BAMUM LETTER PHASE-A PUP +1682E ; [.3E44.0020.0002] # BAMUM LETTER PHASE-A TUAEP +1682F ; [.3E45.0020.0002] # BAMUM LETTER PHASE-A LUAEP +16830 ; [.3E46.0020.0002] # BAMUM LETTER PHASE-A SONJAM +16831 ; [.3E47.0020.0002] # BAMUM LETTER PHASE-A TEUTEUWEN +16832 ; [.3E48.0020.0002] # BAMUM LETTER PHASE-A MAENYI +16833 ; [.3E49.0020.0002] # BAMUM LETTER PHASE-A KET +16834 ; [.3E4A.0020.0002] # BAMUM LETTER PHASE-A NDAANGGEUAET +16835 ; [.3E4B.0020.0002] # BAMUM LETTER PHASE-A KUOQ +16836 ; [.3E4C.0020.0002] # BAMUM LETTER PHASE-A MOOMEUT +16837 ; [.3E4D.0020.0002] # BAMUM LETTER PHASE-A SHUM +16838 ; [.3E4E.0020.0002] # BAMUM LETTER PHASE-A LOMMAE +16839 ; [.3E4F.0020.0002] # BAMUM LETTER PHASE-A FIRI +1683A ; [.3E50.0020.0002] # BAMUM LETTER PHASE-A ROM +1683B ; [.3E51.0020.0002] # BAMUM LETTER PHASE-A KPOQ +1683C ; [.3E52.0020.0002] # BAMUM LETTER PHASE-A SOQ +1683D ; [.3E53.0020.0002] # BAMUM LETTER PHASE-A MAP PIEET +1683E ; [.3E54.0020.0002] # BAMUM LETTER PHASE-A SHIRAE +1683F ; [.3E55.0020.0002] # BAMUM LETTER PHASE-A NTAP +16840 ; [.3E56.0020.0002] # BAMUM LETTER PHASE-A SHOQ NSHUT YUM +16841 ; [.3E57.0020.0002] # BAMUM LETTER PHASE-A NYIT MONGKEUAEQ +16842 ; [.3E58.0020.0002] # BAMUM LETTER PHASE-A PAARAE +16843 ; [.3E59.0020.0002] # BAMUM LETTER PHASE-A NKAARAE +16844 ; [.3E5A.0020.0002] # BAMUM LETTER PHASE-A UNKNOWN +16845 ; [.3E5B.0020.0002] # BAMUM LETTER PHASE-A NGGEN +16846 ; [.3E5C.0020.0002] # BAMUM LETTER PHASE-A MAESI +16847 ; [.3E5D.0020.0002] # BAMUM LETTER PHASE-A NJAM +16848 ; [.3E5E.0020.0002] # BAMUM LETTER PHASE-A MBANYI +16849 ; [.3E5F.0020.0002] # BAMUM LETTER PHASE-A NYET +1684A ; [.3E60.0020.0002] # BAMUM LETTER PHASE-A TEUAEN +1684B ; [.3E61.0020.0002] # BAMUM LETTER PHASE-A SOT +1684C ; [.3E62.0020.0002] # BAMUM LETTER PHASE-A PAAM +1684D ; [.3E63.0020.0002] # BAMUM LETTER PHASE-A NSHIEE +1684E ; [.3E64.0020.0002] # BAMUM LETTER PHASE-A MAEM +1684F ; [.3E65.0020.0002] # BAMUM LETTER PHASE-A NYI +16850 ; [.3E66.0020.0002] # BAMUM LETTER PHASE-A KAQ +16851 ; [.3E67.0020.0002] # BAMUM LETTER PHASE-A NSHA +16852 ; [.3E68.0020.0002] # BAMUM LETTER PHASE-A VEE +16853 ; [.3E69.0020.0002] # BAMUM LETTER PHASE-A LU +16854 ; [.3E6A.0020.0002] # BAMUM LETTER PHASE-A NEN +16855 ; [.3E6B.0020.0002] # BAMUM LETTER PHASE-A NAQ +16856 ; [.3E6C.0020.0002] # BAMUM LETTER PHASE-A MBAQ +16857 ; [.3E6D.0020.0002] # BAMUM LETTER PHASE-B NSHUET +16858 ; [.3E6E.0020.0002] # BAMUM LETTER PHASE-B TU MAEMGBIEE +16859 ; [.3E6F.0020.0002] # BAMUM LETTER PHASE-B SIEE +1685A ; [.3E70.0020.0002] # BAMUM LETTER PHASE-B SET TU +1685B ; [.3E71.0020.0002] # BAMUM LETTER PHASE-B LOM NTEUM +1685C ; [.3E72.0020.0002] # BAMUM LETTER PHASE-B MBA MAELEE +1685D ; [.3E73.0020.0002] # BAMUM LETTER PHASE-B KIEEM +1685E ; [.3E74.0020.0002] # BAMUM LETTER PHASE-B YEURAE +1685F ; [.3E75.0020.0002] # BAMUM LETTER PHASE-B MBAARAE +16860 ; [.3E76.0020.0002] # BAMUM LETTER PHASE-B KAM +16861 ; [.3E77.0020.0002] # BAMUM LETTER PHASE-B PEESHI +16862 ; [.3E78.0020.0002] # BAMUM LETTER PHASE-B YAFU LEERAEWA +16863 ; [.3E79.0020.0002] # BAMUM LETTER PHASE-B LAM NSHUT NYAM +16864 ; [.3E7A.0020.0002] # BAMUM LETTER PHASE-B NTIEE SHEUOQ +16865 ; [.3E7B.0020.0002] # BAMUM LETTER PHASE-B NDU NJAA +16866 ; [.3E7C.0020.0002] # BAMUM LETTER PHASE-B GHEUGHEUAEM +16867 ; [.3E7D.0020.0002] # BAMUM LETTER PHASE-B PIT +16868 ; [.3E7E.0020.0002] # BAMUM LETTER PHASE-B TU NSIEE +16869 ; [.3E7F.0020.0002] # BAMUM LETTER PHASE-B SHET NJAQ +1686A ; [.3E80.0020.0002] # BAMUM LETTER PHASE-B SHEUAEQTU +1686B ; [.3E81.0020.0002] # BAMUM LETTER PHASE-B MFON TEUAEQ +1686C ; [.3E82.0020.0002] # BAMUM LETTER PHASE-B MBIT MBAAKET +1686D ; [.3E83.0020.0002] # BAMUM LETTER PHASE-B NYI NTEUM +1686E ; [.3E84.0020.0002] # BAMUM LETTER PHASE-B KEUPUQ +1686F ; [.3E85.0020.0002] # BAMUM LETTER PHASE-B GHEUGHEN +16870 ; [.3E86.0020.0002] # BAMUM LETTER PHASE-B KEUYEUX +16871 ; [.3E87.0020.0002] # BAMUM LETTER PHASE-B LAANAE +16872 ; [.3E88.0020.0002] # BAMUM LETTER PHASE-B PARUM +16873 ; [.3E89.0020.0002] # BAMUM LETTER PHASE-B VEUM +16874 ; [.3E8A.0020.0002] # BAMUM LETTER PHASE-B NGKINDI MVOP +16875 ; [.3E8B.0020.0002] # BAMUM LETTER PHASE-B NGGEU MBU +16876 ; [.3E8C.0020.0002] # BAMUM LETTER PHASE-B WUAET +16877 ; [.3E8D.0020.0002] # BAMUM LETTER PHASE-B SAKEUAE +16878 ; [.3E8E.0020.0002] # BAMUM LETTER PHASE-B TAAM +16879 ; [.3E8F.0020.0002] # BAMUM LETTER PHASE-B MEUQ +1687A ; [.3E90.0020.0002] # BAMUM LETTER PHASE-B NGGUOQ +1687B ; [.3E91.0020.0002] # BAMUM LETTER PHASE-B NGGUOQ LARGE +1687C ; [.3E92.0020.0002] # BAMUM LETTER PHASE-B MFIYAQ +1687D ; [.3E93.0020.0002] # BAMUM LETTER PHASE-B SUE +1687E ; [.3E94.0020.0002] # BAMUM LETTER PHASE-B MBEURI +1687F ; [.3E95.0020.0002] # BAMUM LETTER PHASE-B MONTIEEN +16880 ; [.3E96.0020.0002] # BAMUM LETTER PHASE-B NYAEMAE +16881 ; [.3E97.0020.0002] # BAMUM LETTER PHASE-B PUNGAAM +16882 ; [.3E98.0020.0002] # BAMUM LETTER PHASE-B MEUT NGGEET +16883 ; [.3E99.0020.0002] # BAMUM LETTER PHASE-B FEUX +16884 ; [.3E9A.0020.0002] # BAMUM LETTER PHASE-B MBUOQ +16885 ; [.3E9B.0020.0002] # BAMUM LETTER PHASE-B FEE +16886 ; [.3E9C.0020.0002] # BAMUM LETTER PHASE-B KEUAEM +16887 ; [.3E9D.0020.0002] # BAMUM LETTER PHASE-B MA NJEUAENA +16888 ; [.3E9E.0020.0002] # BAMUM LETTER PHASE-B MA NJUQA +16889 ; [.3E9F.0020.0002] # BAMUM LETTER PHASE-B LET +1688A ; [.3EA0.0020.0002] # BAMUM LETTER PHASE-B NGGAAM +1688B ; [.3EA1.0020.0002] # BAMUM LETTER PHASE-B NSEN +1688C ; [.3EA2.0020.0002] # BAMUM LETTER PHASE-B MA +1688D ; [.3EA3.0020.0002] # BAMUM LETTER PHASE-B KIQ +1688E ; [.3EA4.0020.0002] # BAMUM LETTER PHASE-B NGOM +1688F ; [.3EA5.0020.0002] # BAMUM LETTER PHASE-C NGKUE MAEMBA +16890 ; [.3EA6.0020.0002] # BAMUM LETTER PHASE-C NZA +16891 ; [.3EA7.0020.0002] # BAMUM LETTER PHASE-C YUM +16892 ; [.3EA8.0020.0002] # BAMUM LETTER PHASE-C WANGKUOQ +16893 ; [.3EA9.0020.0002] # BAMUM LETTER PHASE-C NGGEN +16894 ; [.3EAA.0020.0002] # BAMUM LETTER PHASE-C NDEUAEREE +16895 ; [.3EAB.0020.0002] # BAMUM LETTER PHASE-C NGKAQ +16896 ; [.3EAC.0020.0002] # BAMUM LETTER PHASE-C GHARAE +16897 ; [.3EAD.0020.0002] # BAMUM LETTER PHASE-C MBEEKEET +16898 ; [.3EAE.0020.0002] # BAMUM LETTER PHASE-C GBAYI +16899 ; [.3EAF.0020.0002] # BAMUM LETTER PHASE-C NYIR MKPARAQ MEUN +1689A ; [.3EB0.0020.0002] # BAMUM LETTER PHASE-C NTU MBIT +1689B ; [.3EB1.0020.0002] # BAMUM LETTER PHASE-C MBEUM +1689C ; [.3EB2.0020.0002] # BAMUM LETTER PHASE-C PIRIEEN +1689D ; [.3EB3.0020.0002] # BAMUM LETTER PHASE-C NDOMBU +1689E ; [.3EB4.0020.0002] # BAMUM LETTER PHASE-C MBAA CABBAGE-TREE +1689F ; [.3EB5.0020.0002] # BAMUM LETTER PHASE-C KEUSHEUAEP +168A0 ; [.3EB6.0020.0002] # BAMUM LETTER PHASE-C GHAP +168A1 ; [.3EB7.0020.0002] # BAMUM LETTER PHASE-C KEUKAQ +168A2 ; [.3EB8.0020.0002] # BAMUM LETTER PHASE-C YU MUOMAE +168A3 ; [.3EB9.0020.0002] # BAMUM LETTER PHASE-C NZEUM +168A4 ; [.3EBA.0020.0002] # BAMUM LETTER PHASE-C MBUE +168A5 ; [.3EBB.0020.0002] # BAMUM LETTER PHASE-C NSEUAEN +168A6 ; [.3EBC.0020.0002] # BAMUM LETTER PHASE-C MBIT +168A7 ; [.3EBD.0020.0002] # BAMUM LETTER PHASE-C YEUQ +168A8 ; [.3EBE.0020.0002] # BAMUM LETTER PHASE-C KPARAQ +168A9 ; [.3EBF.0020.0002] # BAMUM LETTER PHASE-C KAA +168AA ; [.3EC0.0020.0002] # BAMUM LETTER PHASE-C SEUX +168AB ; [.3EC1.0020.0002] # BAMUM LETTER PHASE-C NDIDA +168AC ; [.3EC2.0020.0002] # BAMUM LETTER PHASE-C TAASHAE +168AD ; [.3EC3.0020.0002] # BAMUM LETTER PHASE-C NJUEQ +168AE ; [.3EC4.0020.0002] # BAMUM LETTER PHASE-C TITA YUE +168AF ; [.3EC5.0020.0002] # BAMUM LETTER PHASE-C SUAET +168B0 ; [.3EC6.0020.0002] # BAMUM LETTER PHASE-C NGGUAEN NYAM +168B1 ; [.3EC7.0020.0002] # BAMUM LETTER PHASE-C VEUX +168B2 ; [.3EC8.0020.0002] # BAMUM LETTER PHASE-C NANSANAQ +168B3 ; [.3EC9.0020.0002] # BAMUM LETTER PHASE-C MA KEUAERI +168B4 ; [.3ECA.0020.0002] # BAMUM LETTER PHASE-C NTAA +168B5 ; [.3ECB.0020.0002] # BAMUM LETTER PHASE-C NGGUON +168B6 ; [.3ECC.0020.0002] # BAMUM LETTER PHASE-C LAP +168B7 ; [.3ECD.0020.0002] # BAMUM LETTER PHASE-C MBIRIEEN +168B8 ; [.3ECE.0020.0002] # BAMUM LETTER PHASE-C MGBASAQ +168B9 ; [.3ECF.0020.0002] # BAMUM LETTER PHASE-C NTEUNGBA +168BA ; [.3ED0.0020.0002] # BAMUM LETTER PHASE-C TEUTEUX +168BB ; [.3ED1.0020.0002] # BAMUM LETTER PHASE-C NGGUM +168BC ; [.3ED2.0020.0002] # BAMUM LETTER PHASE-C FUE +168BD ; [.3ED3.0020.0002] # BAMUM LETTER PHASE-C NDEUT +168BE ; [.3ED4.0020.0002] # BAMUM LETTER PHASE-C NSA +168BF ; [.3ED5.0020.0002] # BAMUM LETTER PHASE-C NSHAQ +168C0 ; [.3ED6.0020.0002] # BAMUM LETTER PHASE-C BUNG +168C1 ; [.3ED7.0020.0002] # BAMUM LETTER PHASE-C VEUAEPEN +168C2 ; [.3ED8.0020.0002] # BAMUM LETTER PHASE-C MBERAE +168C3 ; [.3ED9.0020.0002] # BAMUM LETTER PHASE-C RU +168C4 ; [.3EDA.0020.0002] # BAMUM LETTER PHASE-C NJAEM +168C5 ; [.3EDB.0020.0002] # BAMUM LETTER PHASE-C LAM +168C6 ; [.3EDC.0020.0002] # BAMUM LETTER PHASE-C TITUAEP +168C7 ; [.3EDD.0020.0002] # BAMUM LETTER PHASE-C NSUOT NGOM +168C8 ; [.3EDE.0020.0002] # BAMUM LETTER PHASE-C NJEEEE +168C9 ; [.3EDF.0020.0002] # BAMUM LETTER PHASE-C KET +168CA ; [.3EE0.0020.0002] # BAMUM LETTER PHASE-C NGGU +168CB ; [.3EE1.0020.0002] # BAMUM LETTER PHASE-C MAESI +168CC ; [.3EE2.0020.0002] # BAMUM LETTER PHASE-C MBUAEM +168CD ; [.3EE3.0020.0002] # BAMUM LETTER PHASE-C LU +168CE ; [.3EE4.0020.0002] # BAMUM LETTER PHASE-C KUT +168CF ; [.3EE5.0020.0002] # BAMUM LETTER PHASE-C NJAM +168D0 ; [.3EE6.0020.0002] # BAMUM LETTER PHASE-C NGOM +168D1 ; [.3EE7.0020.0002] # BAMUM LETTER PHASE-C WUP +168D2 ; [.3EE8.0020.0002] # BAMUM LETTER PHASE-C NGGUEET +168D3 ; [.3EE9.0020.0002] # BAMUM LETTER PHASE-C NSOM +168D4 ; [.3EEA.0020.0002] # BAMUM LETTER PHASE-C NTEN +168D5 ; [.3EEB.0020.0002] # BAMUM LETTER PHASE-C KUOP NKAARAE +168D6 ; [.3EEC.0020.0002] # BAMUM LETTER PHASE-C NSUN +168D7 ; [.3EED.0020.0002] # BAMUM LETTER PHASE-C NDAM +168D8 ; [.3EEE.0020.0002] # BAMUM LETTER PHASE-C MA NSIEE +168D9 ; [.3EEF.0020.0002] # BAMUM LETTER PHASE-C YAA +168DA ; [.3EF0.0020.0002] # BAMUM LETTER PHASE-C NDAP +168DB ; [.3EF1.0020.0002] # BAMUM LETTER PHASE-C SHUEQ +168DC ; [.3EF2.0020.0002] # BAMUM LETTER PHASE-C SETFON +168DD ; [.3EF3.0020.0002] # BAMUM LETTER PHASE-C MBI +168DE ; [.3EF4.0020.0002] # BAMUM LETTER PHASE-C MAEMBA +168DF ; [.3EF5.0020.0002] # BAMUM LETTER PHASE-C MBANYI +168E0 ; [.3EF6.0020.0002] # BAMUM LETTER PHASE-C KEUSEUX +168E1 ; [.3EF7.0020.0002] # BAMUM LETTER PHASE-C MBEUX +168E2 ; [.3EF8.0020.0002] # BAMUM LETTER PHASE-C KEUM +168E3 ; [.3EF9.0020.0002] # BAMUM LETTER PHASE-C MBAA PICKET +168E4 ; [.3EFA.0020.0002] # BAMUM LETTER PHASE-C YUWOQ +168E5 ; [.3EFB.0020.0002] # BAMUM LETTER PHASE-C NJEUX +168E6 ; [.3EFC.0020.0002] # BAMUM LETTER PHASE-C MIEE +168E7 ; [.3EFD.0020.0002] # BAMUM LETTER PHASE-C MUAE +168E8 ; [.3EFE.0020.0002] # BAMUM LETTER PHASE-C SHIQ +168E9 ; [.3EFF.0020.0002] # BAMUM LETTER PHASE-C KEN LAW +168EA ; [.3F00.0020.0002] # BAMUM LETTER PHASE-C KEN FATIGUE +168EB ; [.3F01.0020.0002] # BAMUM LETTER PHASE-C NGAQ +168EC ; [.3F02.0020.0002] # BAMUM LETTER PHASE-C NAQ +168ED ; [.3F03.0020.0002] # BAMUM LETTER PHASE-C LIQ +168EE ; [.3F04.0020.0002] # BAMUM LETTER PHASE-C PIN +168EF ; [.3F05.0020.0002] # BAMUM LETTER PHASE-C PEN +168F0 ; [.3F06.0020.0002] # BAMUM LETTER PHASE-C TET +168F1 ; [.3F07.0020.0002] # BAMUM LETTER PHASE-D MBUO +168F2 ; [.3F08.0020.0002] # BAMUM LETTER PHASE-D WAP +168F3 ; [.3F09.0020.0002] # BAMUM LETTER PHASE-D NJI +168F4 ; [.3F0A.0020.0002] # BAMUM LETTER PHASE-D MFON +168F5 ; [.3F0B.0020.0002] # BAMUM LETTER PHASE-D NJIEE +168F6 ; [.3F0C.0020.0002] # BAMUM LETTER PHASE-D LIEE +168F7 ; [.3F0D.0020.0002] # BAMUM LETTER PHASE-D NJEUT +168F8 ; [.3F0E.0020.0002] # BAMUM LETTER PHASE-D NSHEE +168F9 ; [.3F0F.0020.0002] # BAMUM LETTER PHASE-D NGGAAMAE +168FA ; [.3F10.0020.0002] # BAMUM LETTER PHASE-D NYAM +168FB ; [.3F11.0020.0002] # BAMUM LETTER PHASE-D WUAEN +168FC ; [.3F12.0020.0002] # BAMUM LETTER PHASE-D NGKUN +168FD ; [.3F13.0020.0002] # BAMUM LETTER PHASE-D SHEE +168FE ; [.3F14.0020.0002] # BAMUM LETTER PHASE-D NGKAP +168FF ; [.3F15.0020.0002] # BAMUM LETTER PHASE-D KEUAETMEUN +16900 ; [.3F16.0020.0002] # BAMUM LETTER PHASE-D TEUT +16901 ; [.3F17.0020.0002] # BAMUM LETTER PHASE-D SHEUAE +16902 ; [.3F18.0020.0002] # BAMUM LETTER PHASE-D NJAP +16903 ; [.3F19.0020.0002] # BAMUM LETTER PHASE-D SUE +16904 ; [.3F1A.0020.0002] # BAMUM LETTER PHASE-D KET +16905 ; [.3F1B.0020.0002] # BAMUM LETTER PHASE-D YAEMMAE +16906 ; [.3F1C.0020.0002] # BAMUM LETTER PHASE-D KUOM +16907 ; [.3F1D.0020.0002] # BAMUM LETTER PHASE-D SAP +16908 ; [.3F1E.0020.0002] # BAMUM LETTER PHASE-D MFEUT +16909 ; [.3F1F.0020.0002] # BAMUM LETTER PHASE-D NDEUX +1690A ; [.3F20.0020.0002] # BAMUM LETTER PHASE-D MALEERI +1690B ; [.3F21.0020.0002] # BAMUM LETTER PHASE-D MEUT +1690C ; [.3F22.0020.0002] # BAMUM LETTER PHASE-D SEUAEQ +1690D ; [.3F23.0020.0002] # BAMUM LETTER PHASE-D YEN +1690E ; [.3F24.0020.0002] # BAMUM LETTER PHASE-D NJEUAEM +1690F ; [.3F25.0020.0002] # BAMUM LETTER PHASE-D KEUOT MBUAE +16910 ; [.3F26.0020.0002] # BAMUM LETTER PHASE-D NGKEURI +16911 ; [.3F27.0020.0002] # BAMUM LETTER PHASE-D TU +16912 ; [.3F28.0020.0002] # BAMUM LETTER PHASE-D GHAA +16913 ; [.3F29.0020.0002] # BAMUM LETTER PHASE-D NGKYEE +16914 ; [.3F2A.0020.0002] # BAMUM LETTER PHASE-D FEUFEUAET +16915 ; [.3F2B.0020.0002] # BAMUM LETTER PHASE-D NDEE +16916 ; [.3F2C.0020.0002] # BAMUM LETTER PHASE-D MGBOFUM +16917 ; [.3F2D.0020.0002] # BAMUM LETTER PHASE-D LEUAEP +16918 ; [.3F2E.0020.0002] # BAMUM LETTER PHASE-D NDON +16919 ; [.3F2F.0020.0002] # BAMUM LETTER PHASE-D MONI +1691A ; [.3F30.0020.0002] # BAMUM LETTER PHASE-D MGBEUN +1691B ; [.3F31.0020.0002] # BAMUM LETTER PHASE-D PUUT +1691C ; [.3F32.0020.0002] # BAMUM LETTER PHASE-D MGBIEE +1691D ; [.3F33.0020.0002] # BAMUM LETTER PHASE-D MFO +1691E ; [.3F34.0020.0002] # BAMUM LETTER PHASE-D LUM +1691F ; [.3F35.0020.0002] # BAMUM LETTER PHASE-D NSIEEP +16920 ; [.3F36.0020.0002] # BAMUM LETTER PHASE-D MBAA +16921 ; [.3F37.0020.0002] # BAMUM LETTER PHASE-D KWAET +16922 ; [.3F38.0020.0002] # BAMUM LETTER PHASE-D NYET +16923 ; [.3F39.0020.0002] # BAMUM LETTER PHASE-D TEUAEN +16924 ; [.3F3A.0020.0002] # BAMUM LETTER PHASE-D SOT +16925 ; [.3F3B.0020.0002] # BAMUM LETTER PHASE-D YUWOQ +16926 ; [.3F3C.0020.0002] # BAMUM LETTER PHASE-D KEUM +16927 ; [.3F3D.0020.0002] # BAMUM LETTER PHASE-D RAEM +16928 ; [.3F3E.0020.0002] # BAMUM LETTER PHASE-D TEEEE +16929 ; [.3F3F.0020.0002] # BAMUM LETTER PHASE-D NGKEUAEQ +1692A ; [.3F40.0020.0002] # BAMUM LETTER PHASE-D MFEUAE +1692B ; [.3F41.0020.0002] # BAMUM LETTER PHASE-D NSIEET +1692C ; [.3F42.0020.0002] # BAMUM LETTER PHASE-D KEUP +1692D ; [.3F43.0020.0002] # BAMUM LETTER PHASE-D PIP +1692E ; [.3F44.0020.0002] # BAMUM LETTER PHASE-D PEUTAE +1692F ; [.3F45.0020.0002] # BAMUM LETTER PHASE-D NYUE +16930 ; [.3F46.0020.0002] # BAMUM LETTER PHASE-D LET +16931 ; [.3F47.0020.0002] # BAMUM LETTER PHASE-D NGGAAM +16932 ; [.3F48.0020.0002] # BAMUM LETTER PHASE-D MFIEE +16933 ; [.3F49.0020.0002] # BAMUM LETTER PHASE-D NGGWAEN +16934 ; [.3F4A.0020.0002] # BAMUM LETTER PHASE-D YUOM +16935 ; [.3F4B.0020.0002] # BAMUM LETTER PHASE-D PAP +16936 ; [.3F4C.0020.0002] # BAMUM LETTER PHASE-D YUOP +16937 ; [.3F4D.0020.0002] # BAMUM LETTER PHASE-D NDAM +16938 ; [.3F4E.0020.0002] # BAMUM LETTER PHASE-D NTEUM +16939 ; [.3F4F.0020.0002] # BAMUM LETTER PHASE-D SUAE +1693A ; [.3F50.0020.0002] # BAMUM LETTER PHASE-D KUN +1693B ; [.3F51.0020.0002] # BAMUM LETTER PHASE-D NGGEUX +1693C ; [.3F52.0020.0002] # BAMUM LETTER PHASE-D NGKIEE +1693D ; [.3F53.0020.0002] # BAMUM LETTER PHASE-D TUOT +1693E ; [.3F54.0020.0002] # BAMUM LETTER PHASE-D MEUN +1693F ; [.3F55.0020.0002] # BAMUM LETTER PHASE-D KUQ +16940 ; [.3F56.0020.0002] # BAMUM LETTER PHASE-D NSUM +16941 ; [.3F57.0020.0002] # BAMUM LETTER PHASE-D TEUN +16942 ; [.3F58.0020.0002] # BAMUM LETTER PHASE-D MAENJET +16943 ; [.3F59.0020.0002] # BAMUM LETTER PHASE-D NGGAP +16944 ; [.3F5A.0020.0002] # BAMUM LETTER PHASE-D LEUM +16945 ; [.3F5B.0020.0002] # BAMUM LETTER PHASE-D NGGUOM +16946 ; [.3F5C.0020.0002] # BAMUM LETTER PHASE-D NSHUT +16947 ; [.3F5D.0020.0002] # BAMUM LETTER PHASE-D NJUEQ +16948 ; [.3F5E.0020.0002] # BAMUM LETTER PHASE-D GHEUAE +16949 ; [.3F5F.0020.0002] # BAMUM LETTER PHASE-D KU +1694A ; [.3F60.0020.0002] # BAMUM LETTER PHASE-D REN OLD +1694B ; [.3F61.0020.0002] # BAMUM LETTER PHASE-D TAE +1694C ; [.3F62.0020.0002] # BAMUM LETTER PHASE-D TOQ +1694D ; [.3F63.0020.0002] # BAMUM LETTER PHASE-D NYI +1694E ; [.3F64.0020.0002] # BAMUM LETTER PHASE-D RII +1694F ; [.3F65.0020.0002] # BAMUM LETTER PHASE-D LEEEE +16950 ; [.3F66.0020.0002] # BAMUM LETTER PHASE-D MEEEE +16951 ; [.3F67.0020.0002] # BAMUM LETTER PHASE-D M +16952 ; [.3F68.0020.0002] # BAMUM LETTER PHASE-D SUU +16953 ; [.3F69.0020.0002] # BAMUM LETTER PHASE-D MU +16954 ; [.3F6A.0020.0002] # BAMUM LETTER PHASE-D SHII +16955 ; [.3F6B.0020.0002] # BAMUM LETTER PHASE-D SHEUX +16956 ; [.3F6C.0020.0002] # BAMUM LETTER PHASE-D KYEE +16957 ; [.3F6D.0020.0002] # BAMUM LETTER PHASE-D NU +16958 ; [.3F6E.0020.0002] # BAMUM LETTER PHASE-D SHU +16959 ; [.3F6F.0020.0002] # BAMUM LETTER PHASE-D NTEE +1695A ; [.3F70.0020.0002] # BAMUM LETTER PHASE-D PEE +1695B ; [.3F71.0020.0002] # BAMUM LETTER PHASE-D NI +1695C ; [.3F72.0020.0002] # BAMUM LETTER PHASE-D SHOQ +1695D ; [.3F73.0020.0002] # BAMUM LETTER PHASE-D PUQ +1695E ; [.3F74.0020.0002] # BAMUM LETTER PHASE-D MVOP +1695F ; [.3F75.0020.0002] # BAMUM LETTER PHASE-D LOQ +16960 ; [.3F76.0020.0002] # BAMUM LETTER PHASE-D REN MUCH +16961 ; [.3F77.0020.0002] # BAMUM LETTER PHASE-D TI +16962 ; [.3F78.0020.0002] # BAMUM LETTER PHASE-D NTUU +16963 ; [.3F79.0020.0002] # BAMUM LETTER PHASE-D MBAA SEVEN +16964 ; [.3F7A.0020.0002] # BAMUM LETTER PHASE-D SAQ +16965 ; [.3F7B.0020.0002] # BAMUM LETTER PHASE-D FAA +16966 ; [.3F7C.0020.0002] # BAMUM LETTER PHASE-E NDAP +16967 ; [.3F7D.0020.0002] # BAMUM LETTER PHASE-E TOON +16968 ; [.3F7E.0020.0002] # BAMUM LETTER PHASE-E MBEUM +16969 ; [.3F7F.0020.0002] # BAMUM LETTER PHASE-E LAP +1696A ; [.3F80.0020.0002] # BAMUM LETTER PHASE-E VOM +1696B ; [.3F81.0020.0002] # BAMUM LETTER PHASE-E LOON +1696C ; [.3F82.0020.0002] # BAMUM LETTER PHASE-E PAA +1696D ; [.3F83.0020.0002] # BAMUM LETTER PHASE-E SOM +1696E ; [.3F84.0020.0002] # BAMUM LETTER PHASE-E RAQ +1696F ; [.3F85.0020.0002] # BAMUM LETTER PHASE-E NSHUOP +16970 ; [.3F86.0020.0002] # BAMUM LETTER PHASE-E NDUN +16971 ; [.3F87.0020.0002] # BAMUM LETTER PHASE-E PUAE +16972 ; [.3F88.0020.0002] # BAMUM LETTER PHASE-E TAM +16973 ; [.3F89.0020.0002] # BAMUM LETTER PHASE-E NGKA +16974 ; [.3F8A.0020.0002] # BAMUM LETTER PHASE-E KPEUX +16975 ; [.3F8B.0020.0002] # BAMUM LETTER PHASE-E WUO +16976 ; [.3F8C.0020.0002] # BAMUM LETTER PHASE-E SEE +16977 ; [.3F8D.0020.0002] # BAMUM LETTER PHASE-E NGGEUAET +16978 ; [.3F8E.0020.0002] # BAMUM LETTER PHASE-E PAAM +16979 ; [.3F8F.0020.0002] # BAMUM LETTER PHASE-E TOO +1697A ; [.3F90.0020.0002] # BAMUM LETTER PHASE-E KUOP +1697B ; [.3F91.0020.0002] # BAMUM LETTER PHASE-E LOM +1697C ; [.3F92.0020.0002] # BAMUM LETTER PHASE-E NSHIEE +1697D ; [.3F93.0020.0002] # BAMUM LETTER PHASE-E NGOP +1697E ; [.3F94.0020.0002] # BAMUM LETTER PHASE-E MAEM +1697F ; [.3F95.0020.0002] # BAMUM LETTER PHASE-E NGKEUX +16980 ; [.3F96.0020.0002] # BAMUM LETTER PHASE-E NGOQ +16981 ; [.3F97.0020.0002] # BAMUM LETTER PHASE-E NSHUE +16982 ; [.3F98.0020.0002] # BAMUM LETTER PHASE-E RIMGBA +16983 ; [.3F99.0020.0002] # BAMUM LETTER PHASE-E NJEUX +16984 ; [.3F9A.0020.0002] # BAMUM LETTER PHASE-E PEEM +16985 ; [.3F9B.0020.0002] # BAMUM LETTER PHASE-E SAA +16986 ; [.3F9C.0020.0002] # BAMUM LETTER PHASE-E NGGURAE +16987 ; [.3F9D.0020.0002] # BAMUM LETTER PHASE-E MGBA +16988 ; [.3F9E.0020.0002] # BAMUM LETTER PHASE-E GHEUX +16989 ; [.3F9F.0020.0002] # BAMUM LETTER PHASE-E NGKEUAEM +1698A ; [.3FA0.0020.0002] # BAMUM LETTER PHASE-E NJAEMLI +1698B ; [.3FA1.0020.0002] # BAMUM LETTER PHASE-E MAP +1698C ; [.3FA2.0020.0002] # BAMUM LETTER PHASE-E LOOT +1698D ; [.3FA3.0020.0002] # BAMUM LETTER PHASE-E NGGEEEE +1698E ; [.3FA4.0020.0002] # BAMUM LETTER PHASE-E NDIQ +1698F ; [.3FA5.0020.0002] # BAMUM LETTER PHASE-E TAEN NTEUM +16990 ; [.3FA6.0020.0002] # BAMUM LETTER PHASE-E SET +16991 ; [.3FA7.0020.0002] # BAMUM LETTER PHASE-E PUM +16992 ; [.3FA8.0020.0002] # BAMUM LETTER PHASE-E NDAA SOFTNESS +16993 ; [.3FA9.0020.0002] # BAMUM LETTER PHASE-E NGGUAESHAE NYAM +16994 ; [.3FAA.0020.0002] # BAMUM LETTER PHASE-E YIEE +16995 ; [.3FAB.0020.0002] # BAMUM LETTER PHASE-E GHEUN +16996 ; [.3FAC.0020.0002] # BAMUM LETTER PHASE-E TUAE +16997 ; [.3FAD.0020.0002] # BAMUM LETTER PHASE-E YEUAE +16998 ; [.3FAE.0020.0002] # BAMUM LETTER PHASE-E PO +16999 ; [.3FAF.0020.0002] # BAMUM LETTER PHASE-E TUMAE +1699A ; [.3FB0.0020.0002] # BAMUM LETTER PHASE-E KEUAE +1699B ; [.3FB1.0020.0002] # BAMUM LETTER PHASE-E SUAEN +1699C ; [.3FB2.0020.0002] # BAMUM LETTER PHASE-E TEUAEQ +1699D ; [.3FB3.0020.0002] # BAMUM LETTER PHASE-E VEUAE +1699E ; [.3FB4.0020.0002] # BAMUM LETTER PHASE-E WEUX +1699F ; [.3FB5.0020.0002] # BAMUM LETTER PHASE-E LAAM +169A0 ; [.3FB6.0020.0002] # BAMUM LETTER PHASE-E PU +169A1 ; [.3FB7.0020.0002] # BAMUM LETTER PHASE-E TAAQ +169A2 ; [.3FB8.0020.0002] # BAMUM LETTER PHASE-E GHAAMAE +169A3 ; [.3FB9.0020.0002] # BAMUM LETTER PHASE-E NGEUREUT +169A4 ; [.3FBA.0020.0002] # BAMUM LETTER PHASE-E SHEUAEQ +169A5 ; [.3FBB.0020.0002] # BAMUM LETTER PHASE-E MGBEN +169A6 ; [.3FBC.0020.0002] # BAMUM LETTER PHASE-E MBEE +169A7 ; [.3FBD.0020.0002] # BAMUM LETTER PHASE-E NZAQ +169A8 ; [.3FBE.0020.0002] # BAMUM LETTER PHASE-E NKOM +169A9 ; [.3FBF.0020.0002] # BAMUM LETTER PHASE-E GBET +169AA ; [.3FC0.0020.0002] # BAMUM LETTER PHASE-E TUM +169AB ; [.3FC1.0020.0002] # BAMUM LETTER PHASE-E KUET +169AC ; [.3FC2.0020.0002] # BAMUM LETTER PHASE-E YAP +169AD ; [.3FC3.0020.0002] # BAMUM LETTER PHASE-E NYI CLEAVER +169AE ; [.3FC4.0020.0002] # BAMUM LETTER PHASE-E YIT +169AF ; [.3FC5.0020.0002] # BAMUM LETTER PHASE-E MFEUQ +169B0 ; [.3FC6.0020.0002] # BAMUM LETTER PHASE-E NDIAQ +169B1 ; [.3FC7.0020.0002] # BAMUM LETTER PHASE-E PIEEQ +169B2 ; [.3FC8.0020.0002] # BAMUM LETTER PHASE-E YUEQ +169B3 ; [.3FC9.0020.0002] # BAMUM LETTER PHASE-E LEUAEM +169B4 ; [.3FCA.0020.0002] # BAMUM LETTER PHASE-E FUE +169B5 ; [.3FCB.0020.0002] # BAMUM LETTER PHASE-E GBEUX +169B6 ; [.3FCC.0020.0002] # BAMUM LETTER PHASE-E NGKUP +169B7 ; [.3FCD.0020.0002] # BAMUM LETTER PHASE-E KET +169B8 ; [.3FCE.0020.0002] # BAMUM LETTER PHASE-E MAE +169B9 ; [.3FCF.0020.0002] # BAMUM LETTER PHASE-E NGKAAMI +169BA ; [.3FD0.0020.0002] # BAMUM LETTER PHASE-E GHET +169BB ; [.3FD1.0020.0002] # BAMUM LETTER PHASE-E FA +169BC ; [.3FD2.0020.0002] # BAMUM LETTER PHASE-E NTUM +169BD ; [.3FD3.0020.0002] # BAMUM LETTER PHASE-E PEUT +169BE ; [.3FD4.0020.0002] # BAMUM LETTER PHASE-E YEUM +169BF ; [.3FD5.0020.0002] # BAMUM LETTER PHASE-E NGGEUAE +169C0 ; [.3FD6.0020.0002] # BAMUM LETTER PHASE-E NYI BETWEEN +169C1 ; [.3FD7.0020.0002] # BAMUM LETTER PHASE-E NZUQ +169C2 ; [.3FD8.0020.0002] # BAMUM LETTER PHASE-E POON +169C3 ; [.3FD9.0020.0002] # BAMUM LETTER PHASE-E MIEE +169C4 ; [.3FDA.0020.0002] # BAMUM LETTER PHASE-E FUET +169C5 ; [.3FDB.0020.0002] # BAMUM LETTER PHASE-E NAE +169C6 ; [.3FDC.0020.0002] # BAMUM LETTER PHASE-E MUAE +169C7 ; [.3FDD.0020.0002] # BAMUM LETTER PHASE-E GHEUAE +169C8 ; [.3FDE.0020.0002] # BAMUM LETTER PHASE-E FU I +169C9 ; [.3FDF.0020.0002] # BAMUM LETTER PHASE-E MVI +169CA ; [.3FE0.0020.0002] # BAMUM LETTER PHASE-E PUAQ +169CB ; [.3FE1.0020.0002] # BAMUM LETTER PHASE-E NGKUM +169CC ; [.3FE2.0020.0002] # BAMUM LETTER PHASE-E KUT +169CD ; [.3FE3.0020.0002] # BAMUM LETTER PHASE-E PIET +169CE ; [.3FE4.0020.0002] # BAMUM LETTER PHASE-E NTAP +169CF ; [.3FE5.0020.0002] # BAMUM LETTER PHASE-E YEUAET +169D0 ; [.3FE6.0020.0002] # BAMUM LETTER PHASE-E NGGUP +169D1 ; [.3FE7.0020.0002] # BAMUM LETTER PHASE-E PA PEOPLE +169D2 ; [.3FE8.0020.0002] # BAMUM LETTER PHASE-E FU CALL +169D3 ; [.3FE9.0020.0002] # BAMUM LETTER PHASE-E FOM +169D4 ; [.3FEA.0020.0002] # BAMUM LETTER PHASE-E NJEE +169D5 ; [.3FEB.0020.0002] # BAMUM LETTER PHASE-E A +169D6 ; [.3FEC.0020.0002] # BAMUM LETTER PHASE-E TOQ +169D7 ; [.3FED.0020.0002] # BAMUM LETTER PHASE-E O +169D8 ; [.3FEE.0020.0002] # BAMUM LETTER PHASE-E I +169D9 ; [.3FEF.0020.0002] # BAMUM LETTER PHASE-E LAQ +169DA ; [.3FF0.0020.0002] # BAMUM LETTER PHASE-E PA PLURAL +169DB ; [.3FF1.0020.0002] # BAMUM LETTER PHASE-E TAA +169DC ; [.3FF2.0020.0002] # BAMUM LETTER PHASE-E TAQ +169DD ; [.3FF3.0020.0002] # BAMUM LETTER PHASE-E NDAA MY HOUSE +169DE ; [.3FF4.0020.0002] # BAMUM LETTER PHASE-E SHIQ +169DF ; [.3FF5.0020.0002] # BAMUM LETTER PHASE-E YEUX +169E0 ; [.3FF6.0020.0002] # BAMUM LETTER PHASE-E NGUAE +169E1 ; [.3FF7.0020.0002] # BAMUM LETTER PHASE-E YUAEN +169E2 ; [.3FF8.0020.0002] # BAMUM LETTER PHASE-E YOQ SWIMMING +169E3 ; [.3FF9.0020.0002] # BAMUM LETTER PHASE-E YOQ COVER +169E4 ; [.3FFA.0020.0002] # BAMUM LETTER PHASE-E YUQ +169E5 ; [.3FFB.0020.0002] # BAMUM LETTER PHASE-E YUN +169E6 ; [.3FFC.0020.0002] # BAMUM LETTER PHASE-E KEUX +169E7 ; [.3FFD.0020.0002] # BAMUM LETTER PHASE-E PEUX +169E8 ; [.3FFE.0020.0002] # BAMUM LETTER PHASE-E NJEE EPOCH +169E9 ; [.3FFF.0020.0002] # BAMUM LETTER PHASE-E PUE +169EA ; [.4000.0020.0002] # BAMUM LETTER PHASE-E WUE +169EB ; [.4001.0020.0002] # BAMUM LETTER PHASE-E FEE +169EC ; [.4002.0020.0002] # BAMUM LETTER PHASE-E VEE +169ED ; [.4003.0020.0002] # BAMUM LETTER PHASE-E LU +169EE ; [.4004.0020.0002] # BAMUM LETTER PHASE-E MI +169EF ; [.4005.0020.0002] # BAMUM LETTER PHASE-E REUX +169F0 ; [.4006.0020.0002] # BAMUM LETTER PHASE-E RAE +169F1 ; [.4007.0020.0002] # BAMUM LETTER PHASE-E NGUAET +169F2 ; [.4008.0020.0002] # BAMUM LETTER PHASE-E NGA +169F3 ; [.4009.0020.0002] # BAMUM LETTER PHASE-E SHO +169F4 ; [.400A.0020.0002] # BAMUM LETTER PHASE-E SHOQ +169F5 ; [.400B.0020.0002] # BAMUM LETTER PHASE-E FU REMEDY +169F6 ; [.400C.0020.0002] # BAMUM LETTER PHASE-E NA +169F7 ; [.400D.0020.0002] # BAMUM LETTER PHASE-E PI +169F8 ; [.400E.0020.0002] # BAMUM LETTER PHASE-E LOQ +169F9 ; [.400F.0020.0002] # BAMUM LETTER PHASE-E KO +169FA ; [.4010.0020.0002] # BAMUM LETTER PHASE-E MEN +169FB ; [.4011.0020.0002] # BAMUM LETTER PHASE-E MA +169FC ; [.4012.0020.0002] # BAMUM LETTER PHASE-E MAQ +169FD ; [.4013.0020.0002] # BAMUM LETTER PHASE-E TEU +169FE ; [.4014.0020.0002] # BAMUM LETTER PHASE-E KI +169FF ; [.4015.0020.0002] # BAMUM LETTER PHASE-E MON +16A00 ; [.4016.0020.0002] # BAMUM LETTER PHASE-E TEN +16A01 ; [.4017.0020.0002] # BAMUM LETTER PHASE-E FAQ +16A02 ; [.4018.0020.0002] # BAMUM LETTER PHASE-E GHOM +16A03 ; [.4019.0020.0002] # BAMUM LETTER PHASE-F KA +16A04 ; [.401A.0020.0002] # BAMUM LETTER PHASE-F U +16A05 ; [.401B.0020.0002] # BAMUM LETTER PHASE-F KU +16A06 ; [.401C.0020.0002] # BAMUM LETTER PHASE-F EE +16A07 ; [.401D.0020.0002] # BAMUM LETTER PHASE-F REE +16A08 ; [.401E.0020.0002] # BAMUM LETTER PHASE-F TAE +16A09 ; [.401F.0020.0002] # BAMUM LETTER PHASE-F NYI +16A0A ; [.4020.0020.0002] # BAMUM LETTER PHASE-F LA +16A0B ; [.4021.0020.0002] # BAMUM LETTER PHASE-F RII +16A0C ; [.4022.0020.0002] # BAMUM LETTER PHASE-F RIEE +16A0D ; [.4023.0020.0002] # BAMUM LETTER PHASE-F MEEEE +16A0E ; [.4024.0020.0002] # BAMUM LETTER PHASE-F TAA +16A0F ; [.4025.0020.0002] # BAMUM LETTER PHASE-F NDAA +16A10 ; [.4026.0020.0002] # BAMUM LETTER PHASE-F NJAEM +16A11 ; [.4027.0020.0002] # BAMUM LETTER PHASE-F M +16A12 ; [.4028.0020.0002] # BAMUM LETTER PHASE-F SUU +16A13 ; [.4029.0020.0002] # BAMUM LETTER PHASE-F SHII +16A14 ; [.402A.0020.0002] # BAMUM LETTER PHASE-F SI +16A15 ; [.402B.0020.0002] # BAMUM LETTER PHASE-F SEUX +16A16 ; [.402C.0020.0002] # BAMUM LETTER PHASE-F KYEE +16A17 ; [.402D.0020.0002] # BAMUM LETTER PHASE-F KET +16A18 ; [.402E.0020.0002] # BAMUM LETTER PHASE-F NUAE +16A19 ; [.402F.0020.0002] # BAMUM LETTER PHASE-F NU +16A1A ; [.4030.0020.0002] # BAMUM LETTER PHASE-F NJUAE +16A1B ; [.4031.0020.0002] # BAMUM LETTER PHASE-F YOQ +16A1C ; [.4032.0020.0002] # BAMUM LETTER PHASE-F SHU +16A1D ; [.4033.0020.0002] # BAMUM LETTER PHASE-F YA +16A1E ; [.4034.0020.0002] # BAMUM LETTER PHASE-F NSHA +16A1F ; [.4035.0020.0002] # BAMUM LETTER PHASE-F PEUX +16A20 ; [.4036.0020.0002] # BAMUM LETTER PHASE-F NTEE +16A21 ; [.4037.0020.0002] # BAMUM LETTER PHASE-F WUE +16A22 ; [.4038.0020.0002] # BAMUM LETTER PHASE-F PEE +16A23 ; [.4039.0020.0002] # BAMUM LETTER PHASE-F RU +16A24 ; [.403A.0020.0002] # BAMUM LETTER PHASE-F NI +16A25 ; [.403B.0020.0002] # BAMUM LETTER PHASE-F REUX +16A26 ; [.403C.0020.0002] # BAMUM LETTER PHASE-F KEN +16A27 ; [.403D.0020.0002] # BAMUM LETTER PHASE-F NGKWAEN +16A28 ; [.403E.0020.0002] # BAMUM LETTER PHASE-F NGGA +16A29 ; [.403F.0020.0002] # BAMUM LETTER PHASE-F SHO +16A2A ; [.4040.0020.0002] # BAMUM LETTER PHASE-F PUAE +16A2B ; [.4041.0020.0002] # BAMUM LETTER PHASE-F FOM +16A2C ; [.4042.0020.0002] # BAMUM LETTER PHASE-F WA +16A2D ; [.4043.0020.0002] # BAMUM LETTER PHASE-F LI +16A2E ; [.4044.0020.0002] # BAMUM LETTER PHASE-F LOQ +16A2F ; [.4045.0020.0002] # BAMUM LETTER PHASE-F KO +16A30 ; [.4046.0020.0002] # BAMUM LETTER PHASE-F MBEN +16A31 ; [.4047.0020.0002] # BAMUM LETTER PHASE-F REN +16A32 ; [.4048.0020.0002] # BAMUM LETTER PHASE-F MA +16A33 ; [.4049.0020.0002] # BAMUM LETTER PHASE-F MO +16A34 ; [.404A.0020.0002] # BAMUM LETTER PHASE-F MBAA +16A35 ; [.404B.0020.0002] # BAMUM LETTER PHASE-F TET +16A36 ; [.404C.0020.0002] # BAMUM LETTER PHASE-F KPA +16A37 ; [.404D.0020.0002] # BAMUM LETTER PHASE-F SAMBA +16A38 ; [.404E.0020.0002] # BAMUM LETTER PHASE-F VUEQ +16AD0 ; [.404F.0020.0002] # BASSA VAH LETTER ENNI +16AD1 ; [.4050.0020.0002] # BASSA VAH LETTER KA +16AD2 ; [.4051.0020.0002] # BASSA VAH LETTER SE +16AD3 ; [.4052.0020.0002] # BASSA VAH LETTER FA +16AD4 ; [.4053.0020.0002] # BASSA VAH LETTER MBE +16AD5 ; [.4054.0020.0002] # BASSA VAH LETTER YIE +16AD6 ; [.4055.0020.0002] # BASSA VAH LETTER GAH +16AD7 ; [.4056.0020.0002] # BASSA VAH LETTER DHII +16AD8 ; [.4057.0020.0002] # BASSA VAH LETTER KPAH +16AD9 ; [.4058.0020.0002] # BASSA VAH LETTER JO +16ADA ; [.4059.0020.0002] # BASSA VAH LETTER HWAH +16ADB ; [.405A.0020.0002] # BASSA VAH LETTER WA +16ADC ; [.405B.0020.0002] # BASSA VAH LETTER ZO +16ADD ; [.405C.0020.0002] # BASSA VAH LETTER GBU +16ADE ; [.405D.0020.0002] # BASSA VAH LETTER DO +16ADF ; [.405E.0020.0002] # BASSA VAH LETTER CE +16AE0 ; [.405F.0020.0002] # BASSA VAH LETTER UWU +16AE1 ; [.4060.0020.0002] # BASSA VAH LETTER TO +16AE2 ; [.4061.0020.0002] # BASSA VAH LETTER BA +16AE3 ; [.4062.0020.0002] # BASSA VAH LETTER VU +16AE4 ; [.4063.0020.0002] # BASSA VAH LETTER YEIN +16AE5 ; [.4064.0020.0002] # BASSA VAH LETTER PA +16AE6 ; [.4065.0020.0002] # BASSA VAH LETTER WADDA +16AE7 ; [.4066.0020.0002] # BASSA VAH LETTER A +16AE8 ; [.4067.0020.0002] # BASSA VAH LETTER O +16AE9 ; [.4068.0020.0002] # BASSA VAH LETTER OO +16AEA ; [.4069.0020.0002] # BASSA VAH LETTER U +16AEB ; [.406A.0020.0002] # BASSA VAH LETTER EE +16AEC ; [.406B.0020.0002] # BASSA VAH LETTER E +16AED ; [.406C.0020.0002] # BASSA VAH LETTER I +1E800 ; [.406D.0020.0002] # MENDE KIKAKUI SYLLABLE M001 KI +1E801 ; [.406E.0020.0002] # MENDE KIKAKUI SYLLABLE M002 KA +1E802 ; [.406F.0020.0002] # MENDE KIKAKUI SYLLABLE M003 KU +1E803 ; [.4070.0020.0002] # MENDE KIKAKUI SYLLABLE M065 KEE +1E804 ; [.4071.0020.0002] # MENDE KIKAKUI SYLLABLE M095 KE +1E805 ; [.4072.0020.0002] # MENDE KIKAKUI SYLLABLE M076 KOO +1E806 ; [.4073.0020.0002] # MENDE KIKAKUI SYLLABLE M048 KO +1E807 ; [.4074.0020.0002] # MENDE KIKAKUI SYLLABLE M179 KUA +1E808 ; [.4075.0020.0002] # MENDE KIKAKUI SYLLABLE M004 WI +1E809 ; [.4076.0020.0002] # MENDE KIKAKUI SYLLABLE M005 WA +1E80A ; [.4077.0020.0002] # MENDE KIKAKUI SYLLABLE M006 WU +1E80B ; [.4078.0020.0002] # MENDE KIKAKUI SYLLABLE M126 WEE +1E80C ; [.4079.0020.0002] # MENDE KIKAKUI SYLLABLE M118 WE +1E80D ; [.407A.0020.0002] # MENDE KIKAKUI SYLLABLE M114 WOO +1E80E ; [.407B.0020.0002] # MENDE KIKAKUI SYLLABLE M045 WO +1E80F ; [.407C.0020.0002] # MENDE KIKAKUI SYLLABLE M194 WUI +1E810 ; [.407D.0020.0002] # MENDE KIKAKUI SYLLABLE M143 WEI +1E811 ; [.407E.0020.0002] # MENDE KIKAKUI SYLLABLE M061 WVI +1E812 ; [.407F.0020.0002] # MENDE KIKAKUI SYLLABLE M049 WVA +1E813 ; [.4080.0020.0002] # MENDE KIKAKUI SYLLABLE M139 WVE +1E814 ; [.4081.0020.0002] # MENDE KIKAKUI SYLLABLE M007 MIN +1E815 ; [.4082.0020.0002] # MENDE KIKAKUI SYLLABLE M008 MAN +1E816 ; [.4083.0020.0002] # MENDE KIKAKUI SYLLABLE M009 MUN +1E817 ; [.4084.0020.0002] # MENDE KIKAKUI SYLLABLE M059 MEN +1E818 ; [.4085.0020.0002] # MENDE KIKAKUI SYLLABLE M094 MON +1E819 ; [.4086.0020.0002] # MENDE KIKAKUI SYLLABLE M154 MUAN +1E81A ; [.4087.0020.0002] # MENDE KIKAKUI SYLLABLE M189 MUEN +1E81B ; [.4088.0020.0002] # MENDE KIKAKUI SYLLABLE M010 BI +1E81C ; [.4089.0020.0002] # MENDE KIKAKUI SYLLABLE M011 BA +1E81D ; [.408A.0020.0002] # MENDE KIKAKUI SYLLABLE M012 BU +1E81E ; [.408B.0020.0002] # MENDE KIKAKUI SYLLABLE M150 BEE +1E81F ; [.408C.0020.0002] # MENDE KIKAKUI SYLLABLE M097 BE +1E820 ; [.408D.0020.0002] # MENDE KIKAKUI SYLLABLE M103 BOO +1E821 ; [.408E.0020.0002] # MENDE KIKAKUI SYLLABLE M138 BO +1E822 ; [.408F.0020.0002] # MENDE KIKAKUI SYLLABLE M013 I +1E823 ; [.4090.0020.0002] # MENDE KIKAKUI SYLLABLE M014 A +1E824 ; [.4091.0020.0002] # MENDE KIKAKUI SYLLABLE M015 U +1E825 ; [.4092.0020.0002] # MENDE KIKAKUI SYLLABLE M163 EE +1E826 ; [.4093.0020.0002] # MENDE KIKAKUI SYLLABLE M100 E +1E827 ; [.4094.0020.0002] # MENDE KIKAKUI SYLLABLE M165 OO +1E828 ; [.4095.0020.0002] # MENDE KIKAKUI SYLLABLE M147 O +1E829 ; [.4096.0020.0002] # MENDE KIKAKUI SYLLABLE M137 EI +1E82A ; [.4097.0020.0002] # MENDE KIKAKUI SYLLABLE M131 IN +1E82B ; [.4098.0020.0002] # MENDE KIKAKUI SYLLABLE M135 IN +1E82C ; [.4099.0020.0002] # MENDE KIKAKUI SYLLABLE M195 AN +1E82D ; [.409A.0020.0002] # MENDE KIKAKUI SYLLABLE M178 EN +1E82E ; [.409B.0020.0002] # MENDE KIKAKUI SYLLABLE M019 SI +1E82F ; [.409C.0020.0002] # MENDE KIKAKUI SYLLABLE M020 SA +1E830 ; [.409D.0020.0002] # MENDE KIKAKUI SYLLABLE M021 SU +1E831 ; [.409E.0020.0002] # MENDE KIKAKUI SYLLABLE M162 SEE +1E832 ; [.409F.0020.0002] # MENDE KIKAKUI SYLLABLE M116 SE +1E833 ; [.40A0.0020.0002] # MENDE KIKAKUI SYLLABLE M136 SOO +1E834 ; [.40A1.0020.0002] # MENDE KIKAKUI SYLLABLE M079 SO +1E835 ; [.40A2.0020.0002] # MENDE KIKAKUI SYLLABLE M196 SIA +1E836 ; [.40A3.0020.0002] # MENDE KIKAKUI SYLLABLE M025 LI +1E837 ; [.40A4.0020.0002] # MENDE KIKAKUI SYLLABLE M026 LA +1E838 ; [.40A5.0020.0002] # MENDE KIKAKUI SYLLABLE M027 LU +1E839 ; [.40A6.0020.0002] # MENDE KIKAKUI SYLLABLE M084 LEE +1E83A ; [.40A7.0020.0002] # MENDE KIKAKUI SYLLABLE M073 LE +1E83B ; [.40A8.0020.0002] # MENDE KIKAKUI SYLLABLE M054 LOO +1E83C ; [.40A9.0020.0002] # MENDE KIKAKUI SYLLABLE M153 LO +1E83D ; [.40AA.0020.0002] # MENDE KIKAKUI SYLLABLE M110 LONG LE +1E83E ; [.40AB.0020.0002] # MENDE KIKAKUI SYLLABLE M016 DI +1E83F ; [.40AC.0020.0002] # MENDE KIKAKUI SYLLABLE M017 DA +1E840 ; [.40AD.0020.0002] # MENDE KIKAKUI SYLLABLE M018 DU +1E841 ; [.40AE.0020.0002] # MENDE KIKAKUI SYLLABLE M089 DEE +1E842 ; [.40AF.0020.0002] # MENDE KIKAKUI SYLLABLE M180 DOO +1E843 ; [.40B0.0020.0002] # MENDE KIKAKUI SYLLABLE M181 DO +1E844 ; [.40B1.0020.0002] # MENDE KIKAKUI SYLLABLE M022 TI +1E845 ; [.40B2.0020.0002] # MENDE KIKAKUI SYLLABLE M023 TA +1E846 ; [.40B3.0020.0002] # MENDE KIKAKUI SYLLABLE M024 TU +1E847 ; [.40B4.0020.0002] # MENDE KIKAKUI SYLLABLE M091 TEE +1E848 ; [.40B5.0020.0002] # MENDE KIKAKUI SYLLABLE M055 TE +1E849 ; [.40B6.0020.0002] # MENDE KIKAKUI SYLLABLE M104 TOO +1E84A ; [.40B7.0020.0002] # MENDE KIKAKUI SYLLABLE M069 TO +1E84B ; [.40B8.0020.0002] # MENDE KIKAKUI SYLLABLE M028 JI +1E84C ; [.40B9.0020.0002] # MENDE KIKAKUI SYLLABLE M029 JA +1E84D ; [.40BA.0020.0002] # MENDE KIKAKUI SYLLABLE M030 JU +1E84E ; [.40BB.0020.0002] # MENDE KIKAKUI SYLLABLE M157 JEE +1E84F ; [.40BC.0020.0002] # MENDE KIKAKUI SYLLABLE M113 JE +1E850 ; [.40BD.0020.0002] # MENDE KIKAKUI SYLLABLE M160 JOO +1E851 ; [.40BE.0020.0002] # MENDE KIKAKUI SYLLABLE M063 JO +1E852 ; [.40BF.0020.0002] # MENDE KIKAKUI SYLLABLE M175 LONG JO +1E853 ; [.40C0.0020.0002] # MENDE KIKAKUI SYLLABLE M031 YI +1E854 ; [.40C1.0020.0002] # MENDE KIKAKUI SYLLABLE M032 YA +1E855 ; [.40C2.0020.0002] # MENDE KIKAKUI SYLLABLE M033 YU +1E856 ; [.40C3.0020.0002] # MENDE KIKAKUI SYLLABLE M109 YEE +1E857 ; [.40C4.0020.0002] # MENDE KIKAKUI SYLLABLE M080 YE +1E858 ; [.40C5.0020.0002] # MENDE KIKAKUI SYLLABLE M141 YOO +1E859 ; [.40C6.0020.0002] # MENDE KIKAKUI SYLLABLE M121 YO +1E85A ; [.40C7.0020.0002] # MENDE KIKAKUI SYLLABLE M034 FI +1E85B ; [.40C8.0020.0002] # MENDE KIKAKUI SYLLABLE M035 FA +1E85C ; [.40C9.0020.0002] # MENDE KIKAKUI SYLLABLE M036 FU +1E85D ; [.40CA.0020.0002] # MENDE KIKAKUI SYLLABLE M078 FEE +1E85E ; [.40CB.0020.0002] # MENDE KIKAKUI SYLLABLE M075 FE +1E85F ; [.40CC.0020.0002] # MENDE KIKAKUI SYLLABLE M133 FOO +1E860 ; [.40CD.0020.0002] # MENDE KIKAKUI SYLLABLE M088 FO +1E861 ; [.40CE.0020.0002] # MENDE KIKAKUI SYLLABLE M197 FUA +1E862 ; [.40CF.0020.0002] # MENDE KIKAKUI SYLLABLE M101 FAN +1E863 ; [.40D0.0020.0002] # MENDE KIKAKUI SYLLABLE M037 NIN +1E864 ; [.40D1.0020.0002] # MENDE KIKAKUI SYLLABLE M038 NAN +1E865 ; [.40D2.0020.0002] # MENDE KIKAKUI SYLLABLE M039 NUN +1E866 ; [.40D3.0020.0002] # MENDE KIKAKUI SYLLABLE M117 NEN +1E867 ; [.40D4.0020.0002] # MENDE KIKAKUI SYLLABLE M169 NON +1E868 ; [.40D5.0020.0002] # MENDE KIKAKUI SYLLABLE M176 HI +1E869 ; [.40D6.0020.0002] # MENDE KIKAKUI SYLLABLE M041 HA +1E86A ; [.40D7.0020.0002] # MENDE KIKAKUI SYLLABLE M186 HU +1E86B ; [.40D8.0020.0002] # MENDE KIKAKUI SYLLABLE M040 HEE +1E86C ; [.40D9.0020.0002] # MENDE KIKAKUI SYLLABLE M096 HE +1E86D ; [.40DA.0020.0002] # MENDE KIKAKUI SYLLABLE M042 HOO +1E86E ; [.40DB.0020.0002] # MENDE KIKAKUI SYLLABLE M140 HO +1E86F ; [.40DC.0020.0002] # MENDE KIKAKUI SYLLABLE M083 HEEI +1E870 ; [.40DD.0020.0002] # MENDE KIKAKUI SYLLABLE M128 HOOU +1E871 ; [.40DE.0020.0002] # MENDE KIKAKUI SYLLABLE M053 HIN +1E872 ; [.40DF.0020.0002] # MENDE KIKAKUI SYLLABLE M130 HAN +1E873 ; [.40E0.0020.0002] # MENDE KIKAKUI SYLLABLE M087 HUN +1E874 ; [.40E1.0020.0002] # MENDE KIKAKUI SYLLABLE M052 HEN +1E875 ; [.40E2.0020.0002] # MENDE KIKAKUI SYLLABLE M193 HON +1E876 ; [.40E3.0020.0002] # MENDE KIKAKUI SYLLABLE M046 HUAN +1E877 ; [.40E4.0020.0002] # MENDE KIKAKUI SYLLABLE M090 NGGI +1E878 ; [.40E5.0020.0002] # MENDE KIKAKUI SYLLABLE M043 NGGA +1E879 ; [.40E6.0020.0002] # MENDE KIKAKUI SYLLABLE M082 NGGU +1E87A ; [.40E7.0020.0002] # MENDE KIKAKUI SYLLABLE M115 NGGEE +1E87B ; [.40E8.0020.0002] # MENDE KIKAKUI SYLLABLE M146 NGGE +1E87C ; [.40E9.0020.0002] # MENDE KIKAKUI SYLLABLE M156 NGGOO +1E87D ; [.40EA.0020.0002] # MENDE KIKAKUI SYLLABLE M120 NGGO +1E87E ; [.40EB.0020.0002] # MENDE KIKAKUI SYLLABLE M159 NGGAA +1E87F ; [.40EC.0020.0002] # MENDE KIKAKUI SYLLABLE M127 NGGUA +1E880 ; [.40ED.0020.0002] # MENDE KIKAKUI SYLLABLE M086 LONG NGGE +1E881 ; [.40EE.0020.0002] # MENDE KIKAKUI SYLLABLE M106 LONG NGGOO +1E882 ; [.40EF.0020.0002] # MENDE KIKAKUI SYLLABLE M183 LONG NGGO +1E883 ; [.40F0.0020.0002] # MENDE KIKAKUI SYLLABLE M155 GI +1E884 ; [.40F1.0020.0002] # MENDE KIKAKUI SYLLABLE M111 GA +1E885 ; [.40F2.0020.0002] # MENDE KIKAKUI SYLLABLE M168 GU +1E886 ; [.40F3.0020.0002] # MENDE KIKAKUI SYLLABLE M190 GEE +1E887 ; [.40F4.0020.0002] # MENDE KIKAKUI SYLLABLE M166 GUEI +1E888 ; [.40F5.0020.0002] # MENDE KIKAKUI SYLLABLE M167 GUAN +1E889 ; [.40F6.0020.0002] # MENDE KIKAKUI SYLLABLE M184 NGEN +1E88A ; [.40F7.0020.0002] # MENDE KIKAKUI SYLLABLE M057 NGON +1E88B ; [.40F8.0020.0002] # MENDE KIKAKUI SYLLABLE M177 NGUAN +1E88C ; [.40F9.0020.0002] # MENDE KIKAKUI SYLLABLE M068 PI +1E88D ; [.40FA.0020.0002] # MENDE KIKAKUI SYLLABLE M099 PA +1E88E ; [.40FB.0020.0002] # MENDE KIKAKUI SYLLABLE M050 PU +1E88F ; [.40FC.0020.0002] # MENDE KIKAKUI SYLLABLE M081 PEE +1E890 ; [.40FD.0020.0002] # MENDE KIKAKUI SYLLABLE M051 PE +1E891 ; [.40FE.0020.0002] # MENDE KIKAKUI SYLLABLE M102 POO +1E892 ; [.40FF.0020.0002] # MENDE KIKAKUI SYLLABLE M066 PO +1E893 ; [.4100.0020.0002] # MENDE KIKAKUI SYLLABLE M145 MBI +1E894 ; [.4101.0020.0002] # MENDE KIKAKUI SYLLABLE M062 MBA +1E895 ; [.4102.0020.0002] # MENDE KIKAKUI SYLLABLE M122 MBU +1E896 ; [.4103.0020.0002] # MENDE KIKAKUI SYLLABLE M047 MBEE +1E897 ; [.4104.0020.0002] # MENDE KIKAKUI SYLLABLE M188 MBEE +1E898 ; [.4105.0020.0002] # MENDE KIKAKUI SYLLABLE M072 MBE +1E899 ; [.4106.0020.0002] # MENDE KIKAKUI SYLLABLE M172 MBOO +1E89A ; [.4107.0020.0002] # MENDE KIKAKUI SYLLABLE M174 MBO +1E89B ; [.4108.0020.0002] # MENDE KIKAKUI SYLLABLE M187 MBUU +1E89C ; [.4109.0020.0002] # MENDE KIKAKUI SYLLABLE M161 LONG MBE +1E89D ; [.410A.0020.0002] # MENDE KIKAKUI SYLLABLE M105 LONG MBOO +1E89E ; [.410B.0020.0002] # MENDE KIKAKUI SYLLABLE M142 LONG MBO +1E89F ; [.410C.0020.0002] # MENDE KIKAKUI SYLLABLE M132 KPI +1E8A0 ; [.410D.0020.0002] # MENDE KIKAKUI SYLLABLE M092 KPA +1E8A1 ; [.410E.0020.0002] # MENDE KIKAKUI SYLLABLE M074 KPU +1E8A2 ; [.410F.0020.0002] # MENDE KIKAKUI SYLLABLE M044 KPEE +1E8A3 ; [.4110.0020.0002] # MENDE KIKAKUI SYLLABLE M108 KPE +1E8A4 ; [.4111.0020.0002] # MENDE KIKAKUI SYLLABLE M112 KPOO +1E8A5 ; [.4112.0020.0002] # MENDE KIKAKUI SYLLABLE M158 KPO +1E8A6 ; [.4113.0020.0002] # MENDE KIKAKUI SYLLABLE M124 GBI +1E8A7 ; [.4114.0020.0002] # MENDE KIKAKUI SYLLABLE M056 GBA +1E8A8 ; [.4115.0020.0002] # MENDE KIKAKUI SYLLABLE M148 GBU +1E8A9 ; [.4116.0020.0002] # MENDE KIKAKUI SYLLABLE M093 GBEE +1E8AA ; [.4117.0020.0002] # MENDE KIKAKUI SYLLABLE M107 GBE +1E8AB ; [.4118.0020.0002] # MENDE KIKAKUI SYLLABLE M071 GBOO +1E8AC ; [.4119.0020.0002] # MENDE KIKAKUI SYLLABLE M070 GBO +1E8AD ; [.411A.0020.0002] # MENDE KIKAKUI SYLLABLE M171 RA +1E8AE ; [.411B.0020.0002] # MENDE KIKAKUI SYLLABLE M123 NDI +1E8AF ; [.411C.0020.0002] # MENDE KIKAKUI SYLLABLE M129 NDA +1E8B0 ; [.411D.0020.0002] # MENDE KIKAKUI SYLLABLE M125 NDU +1E8B1 ; [.411E.0020.0002] # MENDE KIKAKUI SYLLABLE M191 NDEE +1E8B2 ; [.411F.0020.0002] # MENDE KIKAKUI SYLLABLE M119 NDE +1E8B3 ; [.4120.0020.0002] # MENDE KIKAKUI SYLLABLE M067 NDOO +1E8B4 ; [.4121.0020.0002] # MENDE KIKAKUI SYLLABLE M064 NDO +1E8B5 ; [.4122.0020.0002] # MENDE KIKAKUI SYLLABLE M152 NJA +1E8B6 ; [.4123.0020.0002] # MENDE KIKAKUI SYLLABLE M192 NJU +1E8B7 ; [.4124.0020.0002] # MENDE KIKAKUI SYLLABLE M149 NJEE +1E8B8 ; [.4125.0020.0002] # MENDE KIKAKUI SYLLABLE M134 NJOO +1E8B9 ; [.4126.0020.0002] # MENDE KIKAKUI SYLLABLE M182 VI +1E8BA ; [.4127.0020.0002] # MENDE KIKAKUI SYLLABLE M185 VA +1E8BB ; [.4128.0020.0002] # MENDE KIKAKUI SYLLABLE M151 VU +1E8BC ; [.4129.0020.0002] # MENDE KIKAKUI SYLLABLE M173 VEE +1E8BD ; [.412A.0020.0002] # MENDE KIKAKUI SYLLABLE M085 VE +1E8BE ; [.412B.0020.0002] # MENDE KIKAKUI SYLLABLE M144 VOO +1E8BF ; [.412C.0020.0002] # MENDE KIKAKUI SYLLABLE M077 VO +1E8C0 ; [.412D.0020.0002] # MENDE KIKAKUI SYLLABLE M164 NYIN +1E8C1 ; [.412E.0020.0002] # MENDE KIKAKUI SYLLABLE M058 NYAN +1E8C2 ; [.412F.0020.0002] # MENDE KIKAKUI SYLLABLE M170 NYUN +1E8C3 ; [.4130.0020.0002] # MENDE KIKAKUI SYLLABLE M098 NYEN +1E8C4 ; [.4131.0020.0002] # MENDE KIKAKUI SYLLABLE M060 NYON +16E60 ; [.4132.0020.0002] # MEDEFAIDRIN SMALL LETTER M +16E40 ; [.4132.0020.0008] # MEDEFAIDRIN CAPITAL LETTER M +16E61 ; [.4133.0020.0002] # MEDEFAIDRIN SMALL LETTER S +16E41 ; [.4133.0020.0008] # MEDEFAIDRIN CAPITAL LETTER S +16E62 ; [.4134.0020.0002] # MEDEFAIDRIN SMALL LETTER V +16E42 ; [.4134.0020.0008] # MEDEFAIDRIN CAPITAL LETTER V +16E63 ; [.4135.0020.0002] # MEDEFAIDRIN SMALL LETTER W +16E43 ; [.4135.0020.0008] # MEDEFAIDRIN CAPITAL LETTER W +16E64 ; [.4136.0020.0002] # MEDEFAIDRIN SMALL LETTER ATIU +16E44 ; [.4136.0020.0008] # MEDEFAIDRIN CAPITAL LETTER ATIU +16E65 ; [.4137.0020.0002] # MEDEFAIDRIN SMALL LETTER Z +16E45 ; [.4137.0020.0008] # MEDEFAIDRIN CAPITAL LETTER Z +16E66 ; [.4138.0020.0002] # MEDEFAIDRIN SMALL LETTER KP +16E46 ; [.4138.0020.0008] # MEDEFAIDRIN CAPITAL LETTER KP +16E67 ; [.4139.0020.0002] # MEDEFAIDRIN SMALL LETTER P +16E47 ; [.4139.0020.0008] # MEDEFAIDRIN CAPITAL LETTER P +16E68 ; [.413A.0020.0002] # MEDEFAIDRIN SMALL LETTER T +16E48 ; [.413A.0020.0008] # MEDEFAIDRIN CAPITAL LETTER T +16E69 ; [.413B.0020.0002] # MEDEFAIDRIN SMALL LETTER G +16E49 ; [.413B.0020.0008] # MEDEFAIDRIN CAPITAL LETTER G +16E6A ; [.413C.0020.0002] # MEDEFAIDRIN SMALL LETTER F +16E4A ; [.413C.0020.0008] # MEDEFAIDRIN CAPITAL LETTER F +16E6B ; [.413D.0020.0002] # MEDEFAIDRIN SMALL LETTER I +16E4B ; [.413D.0020.0008] # MEDEFAIDRIN CAPITAL LETTER I +16E6C ; [.413E.0020.0002] # MEDEFAIDRIN SMALL LETTER K +16E4C ; [.413E.0020.0008] # MEDEFAIDRIN CAPITAL LETTER K +16E6D ; [.413F.0020.0002] # MEDEFAIDRIN SMALL LETTER A +16E4D ; [.413F.0020.0008] # MEDEFAIDRIN CAPITAL LETTER A +16E6E ; [.4140.0020.0002] # MEDEFAIDRIN SMALL LETTER J +16E4E ; [.4140.0020.0008] # MEDEFAIDRIN CAPITAL LETTER J +16E6F ; [.4141.0020.0002] # MEDEFAIDRIN SMALL LETTER E +16E4F ; [.4141.0020.0008] # MEDEFAIDRIN CAPITAL LETTER E +16E70 ; [.4142.0020.0002] # MEDEFAIDRIN SMALL LETTER B +16E50 ; [.4142.0020.0008] # MEDEFAIDRIN CAPITAL LETTER B +16E71 ; [.4143.0020.0002] # MEDEFAIDRIN SMALL LETTER C +16E51 ; [.4143.0020.0008] # MEDEFAIDRIN CAPITAL LETTER C +16E72 ; [.4144.0020.0002] # MEDEFAIDRIN SMALL LETTER U +16E52 ; [.4144.0020.0008] # MEDEFAIDRIN CAPITAL LETTER U +16E73 ; [.4145.0020.0002] # MEDEFAIDRIN SMALL LETTER YU +16E53 ; [.4145.0020.0008] # MEDEFAIDRIN CAPITAL LETTER YU +16E74 ; [.4146.0020.0002] # MEDEFAIDRIN SMALL LETTER L +16E54 ; [.4146.0020.0008] # MEDEFAIDRIN CAPITAL LETTER L +16E75 ; [.4147.0020.0002] # MEDEFAIDRIN SMALL LETTER Q +16E55 ; [.4147.0020.0008] # MEDEFAIDRIN CAPITAL LETTER Q +16E76 ; [.4148.0020.0002] # MEDEFAIDRIN SMALL LETTER HP +16E56 ; [.4148.0020.0008] # MEDEFAIDRIN CAPITAL LETTER HP +16E77 ; [.4149.0020.0002] # MEDEFAIDRIN SMALL LETTER NY +16E57 ; [.4149.0020.0008] # MEDEFAIDRIN CAPITAL LETTER NY +16E78 ; [.414A.0020.0002] # MEDEFAIDRIN SMALL LETTER X +16E58 ; [.414A.0020.0008] # MEDEFAIDRIN CAPITAL LETTER X +16E79 ; [.414B.0020.0002] # MEDEFAIDRIN SMALL LETTER D +16E59 ; [.414B.0020.0008] # MEDEFAIDRIN CAPITAL LETTER D +16E7A ; [.414C.0020.0002] # MEDEFAIDRIN SMALL LETTER OE +16E5A ; [.414C.0020.0008] # MEDEFAIDRIN CAPITAL LETTER OE +16E7B ; [.414D.0020.0002] # MEDEFAIDRIN SMALL LETTER N +16E5B ; [.414D.0020.0008] # MEDEFAIDRIN CAPITAL LETTER N +16E7C ; [.414E.0020.0002] # MEDEFAIDRIN SMALL LETTER R +16E5C ; [.414E.0020.0008] # MEDEFAIDRIN CAPITAL LETTER R +16E7D ; [.414F.0020.0002] # MEDEFAIDRIN SMALL LETTER O +16E5D ; [.414F.0020.0008] # MEDEFAIDRIN CAPITAL LETTER O +16E7E ; [.4150.0020.0002] # MEDEFAIDRIN SMALL LETTER AI +16E5E ; [.4150.0020.0008] # MEDEFAIDRIN CAPITAL LETTER AI +16E7F ; [.4151.0020.0002] # MEDEFAIDRIN SMALL LETTER Y +16E5F ; [.4151.0020.0008] # MEDEFAIDRIN CAPITAL LETTER Y +1E922 ; [.4152.0020.0002] # ADLAM SMALL LETTER ALIF +1E900 ; [.4152.0020.0008] # ADLAM CAPITAL LETTER ALIF +1E923 ; [.4153.0020.0002] # ADLAM SMALL LETTER DAALI +1E901 ; [.4153.0020.0008] # ADLAM CAPITAL LETTER DAALI +1E924 ; [.4154.0020.0002] # ADLAM SMALL LETTER LAAM +1E902 ; [.4154.0020.0008] # ADLAM CAPITAL LETTER LAAM +1E925 ; [.4155.0020.0002] # ADLAM SMALL LETTER MIIM +1E903 ; [.4155.0020.0008] # ADLAM CAPITAL LETTER MIIM +1E926 ; [.4156.0020.0002] # ADLAM SMALL LETTER BA +1E904 ; [.4156.0020.0008] # ADLAM CAPITAL LETTER BA +1E927 ; [.4157.0020.0002] # ADLAM SMALL LETTER SINNYIIYHE +1E905 ; [.4157.0020.0008] # ADLAM CAPITAL LETTER SINNYIIYHE +1E928 ; [.4158.0020.0002] # ADLAM SMALL LETTER PE +1E906 ; [.4158.0020.0008] # ADLAM CAPITAL LETTER PE +1E929 ; [.4159.0020.0002] # ADLAM SMALL LETTER BHE +1E907 ; [.4159.0020.0008] # ADLAM CAPITAL LETTER BHE +1E92A ; [.415A.0020.0002] # ADLAM SMALL LETTER RA +1E908 ; [.415A.0020.0008] # ADLAM CAPITAL LETTER RA +1E92B ; [.415B.0020.0002] # ADLAM SMALL LETTER E +1E909 ; [.415B.0020.0008] # ADLAM CAPITAL LETTER E +1E92C ; [.415C.0020.0002] # ADLAM SMALL LETTER FA +1E90A ; [.415C.0020.0008] # ADLAM CAPITAL LETTER FA +1E92D ; [.415D.0020.0002] # ADLAM SMALL LETTER I +1E90B ; [.415D.0020.0008] # ADLAM CAPITAL LETTER I +1E92E ; [.415E.0020.0002] # ADLAM SMALL LETTER O +1E90C ; [.415E.0020.0008] # ADLAM CAPITAL LETTER O +1E92F ; [.415F.0020.0002] # ADLAM SMALL LETTER DHA +1E90D ; [.415F.0020.0008] # ADLAM CAPITAL LETTER DHA +1E930 ; [.4160.0020.0002] # ADLAM SMALL LETTER YHE +1E90E ; [.4160.0020.0008] # ADLAM CAPITAL LETTER YHE +1E931 ; [.4161.0020.0002] # ADLAM SMALL LETTER WAW +1E90F ; [.4161.0020.0008] # ADLAM CAPITAL LETTER WAW +1E932 ; [.4162.0020.0002] # ADLAM SMALL LETTER NUN +1E910 ; [.4162.0020.0008] # ADLAM CAPITAL LETTER NUN +1E933 ; [.4163.0020.0002] # ADLAM SMALL LETTER KAF +1E911 ; [.4163.0020.0008] # ADLAM CAPITAL LETTER KAF +1E934 ; [.4164.0020.0002] # ADLAM SMALL LETTER YA +1E912 ; [.4164.0020.0008] # ADLAM CAPITAL LETTER YA +1E935 ; [.4165.0020.0002] # ADLAM SMALL LETTER U +1E913 ; [.4165.0020.0008] # ADLAM CAPITAL LETTER U +1E936 ; [.4166.0020.0002] # ADLAM SMALL LETTER JIIM +1E914 ; [.4166.0020.0008] # ADLAM CAPITAL LETTER JIIM +1E937 ; [.4167.0020.0002] # ADLAM SMALL LETTER CHI +1E915 ; [.4167.0020.0008] # ADLAM CAPITAL LETTER CHI +1E938 ; [.4168.0020.0002] # ADLAM SMALL LETTER HA +1E916 ; [.4168.0020.0008] # ADLAM CAPITAL LETTER HA +1E939 ; [.4169.0020.0002] # ADLAM SMALL LETTER QAAF +1E917 ; [.4169.0020.0008] # ADLAM CAPITAL LETTER QAAF +1E93A ; [.416A.0020.0002] # ADLAM SMALL LETTER GA +1E918 ; [.416A.0020.0008] # ADLAM CAPITAL LETTER GA +1E93B ; [.416B.0020.0002] # ADLAM SMALL LETTER NYA +1E919 ; [.416B.0020.0008] # ADLAM CAPITAL LETTER NYA +1E93C ; [.416C.0020.0002] # ADLAM SMALL LETTER TU +1E91A ; [.416C.0020.0008] # ADLAM CAPITAL LETTER TU +1E93D ; [.416D.0020.0002] # ADLAM SMALL LETTER NHA +1E91B ; [.416D.0020.0008] # ADLAM CAPITAL LETTER NHA +1E93E ; [.416E.0020.0002] # ADLAM SMALL LETTER VA +1E91C ; [.416E.0020.0008] # ADLAM CAPITAL LETTER VA +1E93F ; [.416F.0020.0002] # ADLAM SMALL LETTER KHA +1E91D ; [.416F.0020.0008] # ADLAM CAPITAL LETTER KHA +1E940 ; [.4170.0020.0002] # ADLAM SMALL LETTER GBE +1E91E ; [.4170.0020.0008] # ADLAM CAPITAL LETTER GBE +1E941 ; [.4171.0020.0002] # ADLAM SMALL LETTER ZAL +1E91F ; [.4171.0020.0008] # ADLAM CAPITAL LETTER ZAL +1E942 ; [.4172.0020.0002] # ADLAM SMALL LETTER KPO +1E920 ; [.4172.0020.0008] # ADLAM CAPITAL LETTER KPO +1E943 ; [.4173.0020.0002] # ADLAM SMALL LETTER SHA +1E921 ; [.4173.0020.0008] # ADLAM CAPITAL LETTER SHA +1E94B ; [.4174.0020.0002] # ADLAM NASALIZATION MARK +1100 ; [.4175.0020.0002] # HANGUL CHOSEONG KIYEOK +3131 ; [.4175.0020.0004] # HANGUL LETTER KIYEOK +3200 ; [*0328.0020.0004][.4175.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL KIYEOK +3260 ; [.4175.0020.0006] # CIRCLED HANGUL KIYEOK +FFA1 ; [.4175.0020.0012] # HALFWIDTH HANGUL LETTER KIYEOK +320E ; [*0328.0020.0004][.4175.0020.0004][.41F3.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL KIYEOK A +326E ; [.4175.0020.0006][.41F3.0020.0006] # CIRCLED HANGUL KIYEOK A +1101 ; [.4176.0020.0002] # HANGUL CHOSEONG SSANGKIYEOK +3132 ; [.4176.0020.0004] # HANGUL LETTER SSANGKIYEOK +FFA2 ; [.4176.0020.0012] # HALFWIDTH HANGUL LETTER SSANGKIYEOK +1102 ; [.4177.0020.0002] # HANGUL CHOSEONG NIEUN +3134 ; [.4177.0020.0004] # HANGUL LETTER NIEUN +3201 ; [*0328.0020.0004][.4177.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL NIEUN +3261 ; [.4177.0020.0006] # CIRCLED HANGUL NIEUN +FFA4 ; [.4177.0020.0012] # HALFWIDTH HANGUL LETTER NIEUN +320F ; [*0328.0020.0004][.4177.0020.0004][.41F3.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL NIEUN A +326F ; [.4177.0020.0006][.41F3.0020.0006] # CIRCLED HANGUL NIEUN A +1103 ; [.4178.0020.0002] # HANGUL CHOSEONG TIKEUT +3137 ; [.4178.0020.0004] # HANGUL LETTER TIKEUT +3202 ; [*0328.0020.0004][.4178.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL TIKEUT +3262 ; [.4178.0020.0006] # CIRCLED HANGUL TIKEUT +FFA7 ; [.4178.0020.0012] # HALFWIDTH HANGUL LETTER TIKEUT +3210 ; [*0328.0020.0004][.4178.0020.0004][.41F3.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL TIKEUT A +3270 ; [.4178.0020.0006][.41F3.0020.0006] # CIRCLED HANGUL TIKEUT A +1104 ; [.4179.0020.0002] # HANGUL CHOSEONG SSANGTIKEUT +3138 ; [.4179.0020.0004] # HANGUL LETTER SSANGTIKEUT +FFA8 ; [.4179.0020.0012] # HALFWIDTH HANGUL LETTER SSANGTIKEUT +1105 ; [.417A.0020.0002] # HANGUL CHOSEONG RIEUL +3139 ; [.417A.0020.0004] # HANGUL LETTER RIEUL +3203 ; [*0328.0020.0004][.417A.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL RIEUL +3263 ; [.417A.0020.0006] # CIRCLED HANGUL RIEUL +FFA9 ; [.417A.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL +3211 ; [*0328.0020.0004][.417A.0020.0004][.41F3.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL RIEUL A +3271 ; [.417A.0020.0006][.41F3.0020.0006] # CIRCLED HANGUL RIEUL A +1106 ; [.417B.0020.0002] # HANGUL CHOSEONG MIEUM +3141 ; [.417B.0020.0004] # HANGUL LETTER MIEUM +3204 ; [*0328.0020.0004][.417B.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL MIEUM +3264 ; [.417B.0020.0006] # CIRCLED HANGUL MIEUM +FFB1 ; [.417B.0020.0012] # HALFWIDTH HANGUL LETTER MIEUM +3212 ; [*0328.0020.0004][.417B.0020.0004][.41F3.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL MIEUM A +3272 ; [.417B.0020.0006][.41F3.0020.0006] # CIRCLED HANGUL MIEUM A +1107 ; [.417C.0020.0002] # HANGUL CHOSEONG PIEUP +3142 ; [.417C.0020.0004] # HANGUL LETTER PIEUP +3205 ; [*0328.0020.0004][.417C.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL PIEUP +3265 ; [.417C.0020.0006] # CIRCLED HANGUL PIEUP +FFB2 ; [.417C.0020.0012] # HALFWIDTH HANGUL LETTER PIEUP +3213 ; [*0328.0020.0004][.417C.0020.0004][.41F3.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL PIEUP A +3273 ; [.417C.0020.0006][.41F3.0020.0006] # CIRCLED HANGUL PIEUP A +1108 ; [.417D.0020.0002] # HANGUL CHOSEONG SSANGPIEUP +3143 ; [.417D.0020.0004] # HANGUL LETTER SSANGPIEUP +FFB3 ; [.417D.0020.0012] # HALFWIDTH HANGUL LETTER SSANGPIEUP +1109 ; [.417E.0020.0002] # HANGUL CHOSEONG SIOS +3145 ; [.417E.0020.0004] # HANGUL LETTER SIOS +3206 ; [*0328.0020.0004][.417E.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL SIOS +3266 ; [.417E.0020.0006] # CIRCLED HANGUL SIOS +FFB5 ; [.417E.0020.0012] # HALFWIDTH HANGUL LETTER SIOS +3214 ; [*0328.0020.0004][.417E.0020.0004][.41F3.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL SIOS A +3274 ; [.417E.0020.0006][.41F3.0020.0006] # CIRCLED HANGUL SIOS A +110A ; [.417F.0020.0002] # HANGUL CHOSEONG SSANGSIOS +3146 ; [.417F.0020.0004] # HANGUL LETTER SSANGSIOS +FFB6 ; [.417F.0020.0012] # HALFWIDTH HANGUL LETTER SSANGSIOS +110B ; [.4180.0020.0002] # HANGUL CHOSEONG IEUNG +3147 ; [.4180.0020.0004] # HANGUL LETTER IEUNG +3207 ; [*0328.0020.0004][.4180.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL IEUNG +3267 ; [.4180.0020.0006] # CIRCLED HANGUL IEUNG +FFB7 ; [.4180.0020.0012] # HALFWIDTH HANGUL LETTER IEUNG +3215 ; [*0328.0020.0004][.4180.0020.0004][.41F3.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL IEUNG A +3275 ; [.4180.0020.0006][.41F3.0020.0006] # CIRCLED HANGUL IEUNG A +321D ; [*0328.0020.0004][.4180.0020.0004][.41FB.0020.0004][.4181.0020.0004][.41F7.0020.0004][.4254.0020.0004][*0329.0020.0004] # PARENTHESIZED KOREAN CHARACTER OJEON +321E ; [*0328.0020.0004][.4180.0020.0004][.41FB.0020.0004][.4187.0020.0004][.4200.0020.0004][*0329.0020.0004] # PARENTHESIZED KOREAN CHARACTER O HU +327E ; [.4180.0020.0006][.4200.0020.0006] # CIRCLED HANGUL IEUNG U +110C ; [.4181.0020.0002] # HANGUL CHOSEONG CIEUC +3148 ; [.4181.0020.0004] # HANGUL LETTER CIEUC +3208 ; [*0328.0020.0004][.4181.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL CIEUC +3268 ; [.4181.0020.0006] # CIRCLED HANGUL CIEUC +FFB8 ; [.4181.0020.0012] # HALFWIDTH HANGUL LETTER CIEUC +3216 ; [*0328.0020.0004][.4181.0020.0004][.41F3.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL CIEUC A +3276 ; [.4181.0020.0006][.41F3.0020.0006] # CIRCLED HANGUL CIEUC A +321C ; [*0328.0020.0004][.4181.0020.0004][.4200.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL CIEUC U +327D ; [.4181.0020.0006][.4200.0020.0006][.4180.0020.0006][.4206.0020.0006] # CIRCLED KOREAN CHARACTER JUEUI +110D ; [.4182.0020.0002] # HANGUL CHOSEONG SSANGCIEUC +3149 ; [.4182.0020.0004] # HANGUL LETTER SSANGCIEUC +FFB9 ; [.4182.0020.0012] # HALFWIDTH HANGUL LETTER SSANGCIEUC +110E ; [.4183.0020.0002] # HANGUL CHOSEONG CHIEUCH +314A ; [.4183.0020.0004] # HANGUL LETTER CHIEUCH +3209 ; [*0328.0020.0004][.4183.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL CHIEUCH +3269 ; [.4183.0020.0006] # CIRCLED HANGUL CHIEUCH +FFBA ; [.4183.0020.0012] # HALFWIDTH HANGUL LETTER CHIEUCH +3217 ; [*0328.0020.0004][.4183.0020.0004][.41F3.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL CHIEUCH A +3277 ; [.4183.0020.0006][.41F3.0020.0006] # CIRCLED HANGUL CHIEUCH A +327C ; [.4183.0020.0006][.41F3.0020.0006][.4260.0020.0006][.4175.0020.0006][.41FB.0020.0006] # CIRCLED KOREAN CHARACTER CHAMKO +110F ; [.4184.0020.0002] # HANGUL CHOSEONG KHIEUKH +314B ; [.4184.0020.0004] # HANGUL LETTER KHIEUKH +320A ; [*0328.0020.0004][.4184.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL KHIEUKH +326A ; [.4184.0020.0006] # CIRCLED HANGUL KHIEUKH +FFBB ; [.4184.0020.0012] # HALFWIDTH HANGUL LETTER KHIEUKH +3218 ; [*0328.0020.0004][.4184.0020.0004][.41F3.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL KHIEUKH A +3278 ; [.4184.0020.0006][.41F3.0020.0006] # CIRCLED HANGUL KHIEUKH A +1110 ; [.4185.0020.0002] # HANGUL CHOSEONG THIEUTH +314C ; [.4185.0020.0004] # HANGUL LETTER THIEUTH +320B ; [*0328.0020.0004][.4185.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL THIEUTH +326B ; [.4185.0020.0006] # CIRCLED HANGUL THIEUTH +FFBC ; [.4185.0020.0012] # HALFWIDTH HANGUL LETTER THIEUTH +3219 ; [*0328.0020.0004][.4185.0020.0004][.41F3.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL THIEUTH A +3279 ; [.4185.0020.0006][.41F3.0020.0006] # CIRCLED HANGUL THIEUTH A +1111 ; [.4186.0020.0002] # HANGUL CHOSEONG PHIEUPH +314D ; [.4186.0020.0004] # HANGUL LETTER PHIEUPH +320C ; [*0328.0020.0004][.4186.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL PHIEUPH +326C ; [.4186.0020.0006] # CIRCLED HANGUL PHIEUPH +FFBD ; [.4186.0020.0012] # HALFWIDTH HANGUL LETTER PHIEUPH +321A ; [*0328.0020.0004][.4186.0020.0004][.41F3.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL PHIEUPH A +327A ; [.4186.0020.0006][.41F3.0020.0006] # CIRCLED HANGUL PHIEUPH A +1112 ; [.4187.0020.0002] # HANGUL CHOSEONG HIEUH +314E ; [.4187.0020.0004] # HANGUL LETTER HIEUH +320D ; [*0328.0020.0004][.4187.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL HIEUH +326D ; [.4187.0020.0006] # CIRCLED HANGUL HIEUH +FFBE ; [.4187.0020.0012] # HALFWIDTH HANGUL LETTER HIEUH +321B ; [*0328.0020.0004][.4187.0020.0004][.41F3.0020.0004][*0329.0020.0004] # PARENTHESIZED HANGUL HIEUH A +327B ; [.4187.0020.0006][.41F3.0020.0006] # CIRCLED HANGUL HIEUH A +1113 ; [.4188.0020.0002] # HANGUL CHOSEONG NIEUN-KIYEOK +1114 ; [.4189.0020.0002] # HANGUL CHOSEONG SSANGNIEUN +3165 ; [.4189.0020.0004] # HANGUL LETTER SSANGNIEUN +1115 ; [.418A.0020.0002] # HANGUL CHOSEONG NIEUN-TIKEUT +3166 ; [.418A.0020.0004] # HANGUL LETTER NIEUN-TIKEUT +1116 ; [.418B.0020.0002] # HANGUL CHOSEONG NIEUN-PIEUP +1117 ; [.418C.0020.0002] # HANGUL CHOSEONG TIKEUT-KIYEOK +1118 ; [.418D.0020.0002] # HANGUL CHOSEONG RIEUL-NIEUN +1119 ; [.418E.0020.0002] # HANGUL CHOSEONG SSANGRIEUL +111A ; [.418F.0020.0002] # HANGUL CHOSEONG RIEUL-HIEUH +3140 ; [.418F.0020.0004] # HANGUL LETTER RIEUL-HIEUH +FFB0 ; [.418F.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-HIEUH +111B ; [.4190.0020.0002] # HANGUL CHOSEONG KAPYEOUNRIEUL +111C ; [.4191.0020.0002] # HANGUL CHOSEONG MIEUM-PIEUP +316E ; [.4191.0020.0004] # HANGUL LETTER MIEUM-PIEUP +111D ; [.4192.0020.0002] # HANGUL CHOSEONG KAPYEOUNMIEUM +3171 ; [.4192.0020.0004] # HANGUL LETTER KAPYEOUNMIEUM +111E ; [.4193.0020.0002] # HANGUL CHOSEONG PIEUP-KIYEOK +3172 ; [.4193.0020.0004] # HANGUL LETTER PIEUP-KIYEOK +111F ; [.4194.0020.0002] # HANGUL CHOSEONG PIEUP-NIEUN +1120 ; [.4195.0020.0002] # HANGUL CHOSEONG PIEUP-TIKEUT +3173 ; [.4195.0020.0004] # HANGUL LETTER PIEUP-TIKEUT +1121 ; [.4196.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS +3144 ; [.4196.0020.0004] # HANGUL LETTER PIEUP-SIOS +FFB4 ; [.4196.0020.0012] # HALFWIDTH HANGUL LETTER PIEUP-SIOS +1122 ; [.4197.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK +3174 ; [.4197.0020.0004] # HANGUL LETTER PIEUP-SIOS-KIYEOK +1123 ; [.4198.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT +3175 ; [.4198.0020.0004] # HANGUL LETTER PIEUP-SIOS-TIKEUT +1124 ; [.4199.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS-PIEUP +1125 ; [.419A.0020.0002] # HANGUL CHOSEONG PIEUP-SSANGSIOS +1126 ; [.419B.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS-CIEUC +1127 ; [.419C.0020.0002] # HANGUL CHOSEONG PIEUP-CIEUC +3176 ; [.419C.0020.0004] # HANGUL LETTER PIEUP-CIEUC +1128 ; [.419D.0020.0002] # HANGUL CHOSEONG PIEUP-CHIEUCH +1129 ; [.419E.0020.0002] # HANGUL CHOSEONG PIEUP-THIEUTH +3177 ; [.419E.0020.0004] # HANGUL LETTER PIEUP-THIEUTH +112A ; [.419F.0020.0002] # HANGUL CHOSEONG PIEUP-PHIEUPH +112B ; [.41A0.0020.0002] # HANGUL CHOSEONG KAPYEOUNPIEUP +3178 ; [.41A0.0020.0004] # HANGUL LETTER KAPYEOUNPIEUP +112C ; [.41A1.0020.0002] # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP +3179 ; [.41A1.0020.0004] # HANGUL LETTER KAPYEOUNSSANGPIEUP +112D ; [.41A2.0020.0002] # HANGUL CHOSEONG SIOS-KIYEOK +317A ; [.41A2.0020.0004] # HANGUL LETTER SIOS-KIYEOK +112E ; [.41A3.0020.0002] # HANGUL CHOSEONG SIOS-NIEUN +317B ; [.41A3.0020.0004] # HANGUL LETTER SIOS-NIEUN +112F ; [.41A4.0020.0002] # HANGUL CHOSEONG SIOS-TIKEUT +317C ; [.41A4.0020.0004] # HANGUL LETTER SIOS-TIKEUT +1130 ; [.41A5.0020.0002] # HANGUL CHOSEONG SIOS-RIEUL +1131 ; [.41A6.0020.0002] # HANGUL CHOSEONG SIOS-MIEUM +1132 ; [.41A7.0020.0002] # HANGUL CHOSEONG SIOS-PIEUP +317D ; [.41A7.0020.0004] # HANGUL LETTER SIOS-PIEUP +1133 ; [.41A8.0020.0002] # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK +1134 ; [.41A9.0020.0002] # HANGUL CHOSEONG SIOS-SSANGSIOS +1135 ; [.41AA.0020.0002] # HANGUL CHOSEONG SIOS-IEUNG +1136 ; [.41AB.0020.0002] # HANGUL CHOSEONG SIOS-CIEUC +317E ; [.41AB.0020.0004] # HANGUL LETTER SIOS-CIEUC +1137 ; [.41AC.0020.0002] # HANGUL CHOSEONG SIOS-CHIEUCH +1138 ; [.41AD.0020.0002] # HANGUL CHOSEONG SIOS-KHIEUKH +1139 ; [.41AE.0020.0002] # HANGUL CHOSEONG SIOS-THIEUTH +113A ; [.41AF.0020.0002] # HANGUL CHOSEONG SIOS-PHIEUPH +113B ; [.41B0.0020.0002] # HANGUL CHOSEONG SIOS-HIEUH +113C ; [.41B1.0020.0002] # HANGUL CHOSEONG CHITUEUMSIOS +113D ; [.41B2.0020.0002] # HANGUL CHOSEONG CHITUEUMSSANGSIOS +113E ; [.41B3.0020.0002] # HANGUL CHOSEONG CEONGCHIEUMSIOS +113F ; [.41B4.0020.0002] # HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS +1140 ; [.41B5.0020.0002] # HANGUL CHOSEONG PANSIOS +317F ; [.41B5.0020.0004] # HANGUL LETTER PANSIOS +1141 ; [.41B6.0020.0002] # HANGUL CHOSEONG IEUNG-KIYEOK +1142 ; [.41B7.0020.0002] # HANGUL CHOSEONG IEUNG-TIKEUT +1143 ; [.41B8.0020.0002] # HANGUL CHOSEONG IEUNG-MIEUM +1144 ; [.41B9.0020.0002] # HANGUL CHOSEONG IEUNG-PIEUP +1145 ; [.41BA.0020.0002] # HANGUL CHOSEONG IEUNG-SIOS +1146 ; [.41BB.0020.0002] # HANGUL CHOSEONG IEUNG-PANSIOS +1147 ; [.41BC.0020.0002] # HANGUL CHOSEONG SSANGIEUNG +3180 ; [.41BC.0020.0004] # HANGUL LETTER SSANGIEUNG +1148 ; [.41BD.0020.0002] # HANGUL CHOSEONG IEUNG-CIEUC +1149 ; [.41BE.0020.0002] # HANGUL CHOSEONG IEUNG-CHIEUCH +114A ; [.41BF.0020.0002] # HANGUL CHOSEONG IEUNG-THIEUTH +114B ; [.41C0.0020.0002] # HANGUL CHOSEONG IEUNG-PHIEUPH +114C ; [.41C1.0020.0002] # HANGUL CHOSEONG YESIEUNG +3181 ; [.41C1.0020.0004] # HANGUL LETTER YESIEUNG +114D ; [.41C2.0020.0002] # HANGUL CHOSEONG CIEUC-IEUNG +114E ; [.41C3.0020.0002] # HANGUL CHOSEONG CHITUEUMCIEUC +114F ; [.41C4.0020.0002] # HANGUL CHOSEONG CHITUEUMSSANGCIEUC +1150 ; [.41C5.0020.0002] # HANGUL CHOSEONG CEONGCHIEUMCIEUC +1151 ; [.41C6.0020.0002] # HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC +1152 ; [.41C7.0020.0002] # HANGUL CHOSEONG CHIEUCH-KHIEUKH +1153 ; [.41C8.0020.0002] # HANGUL CHOSEONG CHIEUCH-HIEUH +1154 ; [.41C9.0020.0002] # HANGUL CHOSEONG CHITUEUMCHIEUCH +1155 ; [.41CA.0020.0002] # HANGUL CHOSEONG CEONGCHIEUMCHIEUCH +1156 ; [.41CB.0020.0002] # HANGUL CHOSEONG PHIEUPH-PIEUP +1157 ; [.41CC.0020.0002] # HANGUL CHOSEONG KAPYEOUNPHIEUPH +3184 ; [.41CC.0020.0004] # HANGUL LETTER KAPYEOUNPHIEUPH +1158 ; [.41CD.0020.0002] # HANGUL CHOSEONG SSANGHIEUH +3185 ; [.41CD.0020.0004] # HANGUL LETTER SSANGHIEUH +1159 ; [.41CE.0020.0002] # HANGUL CHOSEONG YEORINHIEUH +3186 ; [.41CE.0020.0004] # HANGUL LETTER YEORINHIEUH +115A ; [.41CF.0020.0002] # HANGUL CHOSEONG KIYEOK-TIKEUT +115B ; [.41D0.0020.0002] # HANGUL CHOSEONG NIEUN-SIOS +115C ; [.41D1.0020.0002] # HANGUL CHOSEONG NIEUN-CIEUC +115D ; [.41D2.0020.0002] # HANGUL CHOSEONG NIEUN-HIEUH +115E ; [.41D3.0020.0002] # HANGUL CHOSEONG TIKEUT-RIEUL +A960 ; [.41D4.0020.0002] # HANGUL CHOSEONG TIKEUT-MIEUM +A961 ; [.41D5.0020.0002] # HANGUL CHOSEONG TIKEUT-PIEUP +A962 ; [.41D6.0020.0002] # HANGUL CHOSEONG TIKEUT-SIOS +A963 ; [.41D7.0020.0002] # HANGUL CHOSEONG TIKEUT-CIEUC +A964 ; [.41D8.0020.0002] # HANGUL CHOSEONG RIEUL-KIYEOK +A965 ; [.41D9.0020.0002] # HANGUL CHOSEONG RIEUL-SSANGKIYEOK +A966 ; [.41DA.0020.0002] # HANGUL CHOSEONG RIEUL-TIKEUT +A967 ; [.41DB.0020.0002] # HANGUL CHOSEONG RIEUL-SSANGTIKEUT +A968 ; [.41DC.0020.0002] # HANGUL CHOSEONG RIEUL-MIEUM +A969 ; [.41DD.0020.0002] # HANGUL CHOSEONG RIEUL-PIEUP +A96A ; [.41DE.0020.0002] # HANGUL CHOSEONG RIEUL-SSANGPIEUP +A96B ; [.41DF.0020.0002] # HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP +A96C ; [.41E0.0020.0002] # HANGUL CHOSEONG RIEUL-SIOS +A96D ; [.41E1.0020.0002] # HANGUL CHOSEONG RIEUL-CIEUC +A96E ; [.41E2.0020.0002] # HANGUL CHOSEONG RIEUL-KHIEUKH +A96F ; [.41E3.0020.0002] # HANGUL CHOSEONG MIEUM-KIYEOK +A970 ; [.41E4.0020.0002] # HANGUL CHOSEONG MIEUM-TIKEUT +A971 ; [.41E5.0020.0002] # HANGUL CHOSEONG MIEUM-SIOS +A972 ; [.41E6.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS-THIEUTH +A973 ; [.41E7.0020.0002] # HANGUL CHOSEONG PIEUP-KHIEUKH +A974 ; [.41E8.0020.0002] # HANGUL CHOSEONG PIEUP-HIEUH +A975 ; [.41E9.0020.0002] # HANGUL CHOSEONG SSANGSIOS-PIEUP +A976 ; [.41EA.0020.0002] # HANGUL CHOSEONG IEUNG-RIEUL +A977 ; [.41EB.0020.0002] # HANGUL CHOSEONG IEUNG-HIEUH +A978 ; [.41EC.0020.0002] # HANGUL CHOSEONG SSANGCIEUC-HIEUH +A979 ; [.41ED.0020.0002] # HANGUL CHOSEONG SSANGTHIEUTH +A97A ; [.41EE.0020.0002] # HANGUL CHOSEONG PHIEUPH-HIEUH +A97B ; [.41EF.0020.0002] # HANGUL CHOSEONG HIEUH-SIOS +A97C ; [.41F0.0020.0002] # HANGUL CHOSEONG SSANGYEORINHIEUH +115F ; [.41F1.0020.0002] # HANGUL CHOSEONG FILLER +1160 ; [.41F2.0020.0002] # HANGUL JUNGSEONG FILLER +3164 ; [.41F2.0020.0004] # HANGUL FILLER +FFA0 ; [.41F2.0020.0012] # HALFWIDTH HANGUL FILLER +1161 ; [.41F3.0020.0002] # HANGUL JUNGSEONG A +314F ; [.41F3.0020.0004] # HANGUL LETTER A +FFC2 ; [.41F3.0020.0012] # HALFWIDTH HANGUL LETTER A +1162 ; [.41F4.0020.0002] # HANGUL JUNGSEONG AE +3150 ; [.41F4.0020.0004] # HANGUL LETTER AE +FFC3 ; [.41F4.0020.0012] # HALFWIDTH HANGUL LETTER AE +1163 ; [.41F5.0020.0002] # HANGUL JUNGSEONG YA +3151 ; [.41F5.0020.0004] # HANGUL LETTER YA +FFC4 ; [.41F5.0020.0012] # HALFWIDTH HANGUL LETTER YA +1164 ; [.41F6.0020.0002] # HANGUL JUNGSEONG YAE +3152 ; [.41F6.0020.0004] # HANGUL LETTER YAE +FFC5 ; [.41F6.0020.0012] # HALFWIDTH HANGUL LETTER YAE +1165 ; [.41F7.0020.0002] # HANGUL JUNGSEONG EO +3153 ; [.41F7.0020.0004] # HANGUL LETTER EO +FFC6 ; [.41F7.0020.0012] # HALFWIDTH HANGUL LETTER EO +1166 ; [.41F8.0020.0002] # HANGUL JUNGSEONG E +3154 ; [.41F8.0020.0004] # HANGUL LETTER E +FFC7 ; [.41F8.0020.0012] # HALFWIDTH HANGUL LETTER E +1167 ; [.41F9.0020.0002] # HANGUL JUNGSEONG YEO +3155 ; [.41F9.0020.0004] # HANGUL LETTER YEO +FFCA ; [.41F9.0020.0012] # HALFWIDTH HANGUL LETTER YEO +1168 ; [.41FA.0020.0002] # HANGUL JUNGSEONG YE +3156 ; [.41FA.0020.0004] # HANGUL LETTER YE +FFCB ; [.41FA.0020.0012] # HALFWIDTH HANGUL LETTER YE +1169 ; [.41FB.0020.0002] # HANGUL JUNGSEONG O +3157 ; [.41FB.0020.0004] # HANGUL LETTER O +FFCC ; [.41FB.0020.0012] # HALFWIDTH HANGUL LETTER O +116A ; [.41FC.0020.0002] # HANGUL JUNGSEONG WA +3158 ; [.41FC.0020.0004] # HANGUL LETTER WA +FFCD ; [.41FC.0020.0012] # HALFWIDTH HANGUL LETTER WA +116B ; [.41FD.0020.0002] # HANGUL JUNGSEONG WAE +3159 ; [.41FD.0020.0004] # HANGUL LETTER WAE +FFCE ; [.41FD.0020.0012] # HALFWIDTH HANGUL LETTER WAE +116C ; [.41FE.0020.0002] # HANGUL JUNGSEONG OE +315A ; [.41FE.0020.0004] # HANGUL LETTER OE +FFCF ; [.41FE.0020.0012] # HALFWIDTH HANGUL LETTER OE +116D ; [.41FF.0020.0002] # HANGUL JUNGSEONG YO +315B ; [.41FF.0020.0004] # HANGUL LETTER YO +FFD2 ; [.41FF.0020.0012] # HALFWIDTH HANGUL LETTER YO +116E ; [.4200.0020.0002] # HANGUL JUNGSEONG U +315C ; [.4200.0020.0004] # HANGUL LETTER U +FFD3 ; [.4200.0020.0012] # HALFWIDTH HANGUL LETTER U +116F ; [.4201.0020.0002] # HANGUL JUNGSEONG WEO +315D ; [.4201.0020.0004] # HANGUL LETTER WEO +FFD4 ; [.4201.0020.0012] # HALFWIDTH HANGUL LETTER WEO +1170 ; [.4202.0020.0002] # HANGUL JUNGSEONG WE +315E ; [.4202.0020.0004] # HANGUL LETTER WE +FFD5 ; [.4202.0020.0012] # HALFWIDTH HANGUL LETTER WE +1171 ; [.4203.0020.0002] # HANGUL JUNGSEONG WI +315F ; [.4203.0020.0004] # HANGUL LETTER WI +FFD6 ; [.4203.0020.0012] # HALFWIDTH HANGUL LETTER WI +1172 ; [.4204.0020.0002] # HANGUL JUNGSEONG YU +3160 ; [.4204.0020.0004] # HANGUL LETTER YU +FFD7 ; [.4204.0020.0012] # HALFWIDTH HANGUL LETTER YU +1173 ; [.4205.0020.0002] # HANGUL JUNGSEONG EU +3161 ; [.4205.0020.0004] # HANGUL LETTER EU +FFDA ; [.4205.0020.0012] # HALFWIDTH HANGUL LETTER EU +1174 ; [.4206.0020.0002] # HANGUL JUNGSEONG YI +3162 ; [.4206.0020.0004] # HANGUL LETTER YI +FFDB ; [.4206.0020.0012] # HALFWIDTH HANGUL LETTER YI +1175 ; [.4207.0020.0002] # HANGUL JUNGSEONG I +3163 ; [.4207.0020.0004] # HANGUL LETTER I +FFDC ; [.4207.0020.0012] # HALFWIDTH HANGUL LETTER I +1176 ; [.4208.0020.0002] # HANGUL JUNGSEONG A-O +1177 ; [.4209.0020.0002] # HANGUL JUNGSEONG A-U +1178 ; [.420A.0020.0002] # HANGUL JUNGSEONG YA-O +1179 ; [.420B.0020.0002] # HANGUL JUNGSEONG YA-YO +117A ; [.420C.0020.0002] # HANGUL JUNGSEONG EO-O +117B ; [.420D.0020.0002] # HANGUL JUNGSEONG EO-U +117C ; [.420E.0020.0002] # HANGUL JUNGSEONG EO-EU +117D ; [.420F.0020.0002] # HANGUL JUNGSEONG YEO-O +117E ; [.4210.0020.0002] # HANGUL JUNGSEONG YEO-U +117F ; [.4211.0020.0002] # HANGUL JUNGSEONG O-EO +1180 ; [.4212.0020.0002] # HANGUL JUNGSEONG O-E +1181 ; [.4213.0020.0002] # HANGUL JUNGSEONG O-YE +1182 ; [.4214.0020.0002] # HANGUL JUNGSEONG O-O +1183 ; [.4215.0020.0002] # HANGUL JUNGSEONG O-U +1184 ; [.4216.0020.0002] # HANGUL JUNGSEONG YO-YA +3187 ; [.4216.0020.0004] # HANGUL LETTER YO-YA +1185 ; [.4217.0020.0002] # HANGUL JUNGSEONG YO-YAE +3188 ; [.4217.0020.0004] # HANGUL LETTER YO-YAE +1186 ; [.4218.0020.0002] # HANGUL JUNGSEONG YO-YEO +1187 ; [.4219.0020.0002] # HANGUL JUNGSEONG YO-O +1188 ; [.421A.0020.0002] # HANGUL JUNGSEONG YO-I +3189 ; [.421A.0020.0004] # HANGUL LETTER YO-I +1189 ; [.421B.0020.0002] # HANGUL JUNGSEONG U-A +118A ; [.421C.0020.0002] # HANGUL JUNGSEONG U-AE +118B ; [.421D.0020.0002] # HANGUL JUNGSEONG U-EO-EU +118C ; [.421E.0020.0002] # HANGUL JUNGSEONG U-YE +118D ; [.421F.0020.0002] # HANGUL JUNGSEONG U-U +118E ; [.4220.0020.0002] # HANGUL JUNGSEONG YU-A +118F ; [.4221.0020.0002] # HANGUL JUNGSEONG YU-EO +1190 ; [.4222.0020.0002] # HANGUL JUNGSEONG YU-E +1191 ; [.4223.0020.0002] # HANGUL JUNGSEONG YU-YEO +318A ; [.4223.0020.0004] # HANGUL LETTER YU-YEO +1192 ; [.4224.0020.0002] # HANGUL JUNGSEONG YU-YE +318B ; [.4224.0020.0004] # HANGUL LETTER YU-YE +1193 ; [.4225.0020.0002] # HANGUL JUNGSEONG YU-U +1194 ; [.4226.0020.0002] # HANGUL JUNGSEONG YU-I +318C ; [.4226.0020.0004] # HANGUL LETTER YU-I +1195 ; [.4227.0020.0002] # HANGUL JUNGSEONG EU-U +1196 ; [.4228.0020.0002] # HANGUL JUNGSEONG EU-EU +1197 ; [.4229.0020.0002] # HANGUL JUNGSEONG YI-U +1198 ; [.422A.0020.0002] # HANGUL JUNGSEONG I-A +1199 ; [.422B.0020.0002] # HANGUL JUNGSEONG I-YA +119A ; [.422C.0020.0002] # HANGUL JUNGSEONG I-O +119B ; [.422D.0020.0002] # HANGUL JUNGSEONG I-U +119C ; [.422E.0020.0002] # HANGUL JUNGSEONG I-EU +119D ; [.422F.0020.0002] # HANGUL JUNGSEONG I-ARAEA +119E ; [.4230.0020.0002] # HANGUL JUNGSEONG ARAEA +318D ; [.4230.0020.0004] # HANGUL LETTER ARAEA +119F ; [.4231.0020.0002] # HANGUL JUNGSEONG ARAEA-EO +11A0 ; [.4232.0020.0002] # HANGUL JUNGSEONG ARAEA-U +11A1 ; [.4233.0020.0002] # HANGUL JUNGSEONG ARAEA-I +318E ; [.4233.0020.0004] # HANGUL LETTER ARAEAE +11A2 ; [.4234.0020.0002] # HANGUL JUNGSEONG SSANGARAEA +11A3 ; [.4235.0020.0002] # HANGUL JUNGSEONG A-EU +11A4 ; [.4236.0020.0002] # HANGUL JUNGSEONG YA-U +11A5 ; [.4237.0020.0002] # HANGUL JUNGSEONG YEO-YA +11A6 ; [.4238.0020.0002] # HANGUL JUNGSEONG O-YA +11A7 ; [.4239.0020.0002] # HANGUL JUNGSEONG O-YAE +D7B0 ; [.423A.0020.0002] # HANGUL JUNGSEONG O-YEO +D7B1 ; [.423B.0020.0002] # HANGUL JUNGSEONG O-O-I +D7B2 ; [.423C.0020.0002] # HANGUL JUNGSEONG YO-A +D7B3 ; [.423D.0020.0002] # HANGUL JUNGSEONG YO-AE +D7B4 ; [.423E.0020.0002] # HANGUL JUNGSEONG YO-EO +D7B5 ; [.423F.0020.0002] # HANGUL JUNGSEONG U-YEO +D7B6 ; [.4240.0020.0002] # HANGUL JUNGSEONG U-I-I +D7B7 ; [.4241.0020.0002] # HANGUL JUNGSEONG YU-AE +D7B8 ; [.4242.0020.0002] # HANGUL JUNGSEONG YU-O +D7B9 ; [.4243.0020.0002] # HANGUL JUNGSEONG EU-A +D7BA ; [.4244.0020.0002] # HANGUL JUNGSEONG EU-EO +D7BB ; [.4245.0020.0002] # HANGUL JUNGSEONG EU-E +D7BC ; [.4246.0020.0002] # HANGUL JUNGSEONG EU-O +D7BD ; [.4247.0020.0002] # HANGUL JUNGSEONG I-YA-O +D7BE ; [.4248.0020.0002] # HANGUL JUNGSEONG I-YAE +D7BF ; [.4249.0020.0002] # HANGUL JUNGSEONG I-YEO +D7C0 ; [.424A.0020.0002] # HANGUL JUNGSEONG I-YE +D7C1 ; [.424B.0020.0002] # HANGUL JUNGSEONG I-O-I +D7C2 ; [.424C.0020.0002] # HANGUL JUNGSEONG I-YO +D7C3 ; [.424D.0020.0002] # HANGUL JUNGSEONG I-YU +D7C4 ; [.424E.0020.0002] # HANGUL JUNGSEONG I-I +D7C5 ; [.424F.0020.0002] # HANGUL JUNGSEONG ARAEA-A +D7C6 ; [.4250.0020.0002] # HANGUL JUNGSEONG ARAEA-E +11A8 ; [.4251.0020.0002] # HANGUL JONGSEONG KIYEOK +11A9 ; [.4252.0020.0002] # HANGUL JONGSEONG SSANGKIYEOK +11AA ; [.4253.0020.0002] # HANGUL JONGSEONG KIYEOK-SIOS +3133 ; [.4253.0020.0004] # HANGUL LETTER KIYEOK-SIOS +FFA3 ; [.4253.0020.0012] # HALFWIDTH HANGUL LETTER KIYEOK-SIOS +11AB ; [.4254.0020.0002] # HANGUL JONGSEONG NIEUN +11AC ; [.4255.0020.0002] # HANGUL JONGSEONG NIEUN-CIEUC +3135 ; [.4255.0020.0004] # HANGUL LETTER NIEUN-CIEUC +FFA5 ; [.4255.0020.0012] # HALFWIDTH HANGUL LETTER NIEUN-CIEUC +11AD ; [.4256.0020.0002] # HANGUL JONGSEONG NIEUN-HIEUH +3136 ; [.4256.0020.0004] # HANGUL LETTER NIEUN-HIEUH +FFA6 ; [.4256.0020.0012] # HALFWIDTH HANGUL LETTER NIEUN-HIEUH +11AE ; [.4257.0020.0002] # HANGUL JONGSEONG TIKEUT +11AF ; [.4258.0020.0002] # HANGUL JONGSEONG RIEUL +11B0 ; [.4259.0020.0002] # HANGUL JONGSEONG RIEUL-KIYEOK +313A ; [.4259.0020.0004] # HANGUL LETTER RIEUL-KIYEOK +FFAA ; [.4259.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-KIYEOK +11B1 ; [.425A.0020.0002] # HANGUL JONGSEONG RIEUL-MIEUM +313B ; [.425A.0020.0004] # HANGUL LETTER RIEUL-MIEUM +FFAB ; [.425A.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-MIEUM +11B2 ; [.425B.0020.0002] # HANGUL JONGSEONG RIEUL-PIEUP +313C ; [.425B.0020.0004] # HANGUL LETTER RIEUL-PIEUP +FFAC ; [.425B.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-PIEUP +11B3 ; [.425C.0020.0002] # HANGUL JONGSEONG RIEUL-SIOS +313D ; [.425C.0020.0004] # HANGUL LETTER RIEUL-SIOS +FFAD ; [.425C.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-SIOS +11B4 ; [.425D.0020.0002] # HANGUL JONGSEONG RIEUL-THIEUTH +313E ; [.425D.0020.0004] # HANGUL LETTER RIEUL-THIEUTH +FFAE ; [.425D.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-THIEUTH +11B5 ; [.425E.0020.0002] # HANGUL JONGSEONG RIEUL-PHIEUPH +313F ; [.425E.0020.0004] # HANGUL LETTER RIEUL-PHIEUPH +FFAF ; [.425E.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH +11B6 ; [.425F.0020.0002] # HANGUL JONGSEONG RIEUL-HIEUH +11B7 ; [.4260.0020.0002] # HANGUL JONGSEONG MIEUM +11B8 ; [.4261.0020.0002] # HANGUL JONGSEONG PIEUP +11B9 ; [.4262.0020.0002] # HANGUL JONGSEONG PIEUP-SIOS +11BA ; [.4263.0020.0002] # HANGUL JONGSEONG SIOS +11BB ; [.4264.0020.0002] # HANGUL JONGSEONG SSANGSIOS +11BC ; [.4265.0020.0002] # HANGUL JONGSEONG IEUNG +11BD ; [.4266.0020.0002] # HANGUL JONGSEONG CIEUC +11BE ; [.4267.0020.0002] # HANGUL JONGSEONG CHIEUCH +11BF ; [.4268.0020.0002] # HANGUL JONGSEONG KHIEUKH +11C0 ; [.4269.0020.0002] # HANGUL JONGSEONG THIEUTH +11C1 ; [.426A.0020.0002] # HANGUL JONGSEONG PHIEUPH +11C2 ; [.426B.0020.0002] # HANGUL JONGSEONG HIEUH +11C3 ; [.426C.0020.0002] # HANGUL JONGSEONG KIYEOK-RIEUL +11C4 ; [.426D.0020.0002] # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK +11C5 ; [.426E.0020.0002] # HANGUL JONGSEONG NIEUN-KIYEOK +11C6 ; [.426F.0020.0002] # HANGUL JONGSEONG NIEUN-TIKEUT +11C7 ; [.4270.0020.0002] # HANGUL JONGSEONG NIEUN-SIOS +3167 ; [.4270.0020.0004] # HANGUL LETTER NIEUN-SIOS +11C8 ; [.4271.0020.0002] # HANGUL JONGSEONG NIEUN-PANSIOS +3168 ; [.4271.0020.0004] # HANGUL LETTER NIEUN-PANSIOS +11C9 ; [.4272.0020.0002] # HANGUL JONGSEONG NIEUN-THIEUTH +11CA ; [.4273.0020.0002] # HANGUL JONGSEONG TIKEUT-KIYEOK +11CB ; [.4274.0020.0002] # HANGUL JONGSEONG TIKEUT-RIEUL +11CC ; [.4275.0020.0002] # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS +3169 ; [.4275.0020.0004] # HANGUL LETTER RIEUL-KIYEOK-SIOS +11CD ; [.4276.0020.0002] # HANGUL JONGSEONG RIEUL-NIEUN +11CE ; [.4277.0020.0002] # HANGUL JONGSEONG RIEUL-TIKEUT +316A ; [.4277.0020.0004] # HANGUL LETTER RIEUL-TIKEUT +11CF ; [.4278.0020.0002] # HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH +11D0 ; [.4279.0020.0002] # HANGUL JONGSEONG SSANGRIEUL +11D1 ; [.427A.0020.0002] # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK +11D2 ; [.427B.0020.0002] # HANGUL JONGSEONG RIEUL-MIEUM-SIOS +11D3 ; [.427C.0020.0002] # HANGUL JONGSEONG RIEUL-PIEUP-SIOS +316B ; [.427C.0020.0004] # HANGUL LETTER RIEUL-PIEUP-SIOS +11D4 ; [.427D.0020.0002] # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH +11D5 ; [.427E.0020.0002] # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP +11D6 ; [.427F.0020.0002] # HANGUL JONGSEONG RIEUL-SSANGSIOS +11D7 ; [.4280.0020.0002] # HANGUL JONGSEONG RIEUL-PANSIOS +316C ; [.4280.0020.0004] # HANGUL LETTER RIEUL-PANSIOS +11D8 ; [.4281.0020.0002] # HANGUL JONGSEONG RIEUL-KHIEUKH +11D9 ; [.4282.0020.0002] # HANGUL JONGSEONG RIEUL-YEORINHIEUH +316D ; [.4282.0020.0004] # HANGUL LETTER RIEUL-YEORINHIEUH +11DA ; [.4283.0020.0002] # HANGUL JONGSEONG MIEUM-KIYEOK +11DB ; [.4284.0020.0002] # HANGUL JONGSEONG MIEUM-RIEUL +11DC ; [.4285.0020.0002] # HANGUL JONGSEONG MIEUM-PIEUP +11DD ; [.4286.0020.0002] # HANGUL JONGSEONG MIEUM-SIOS +316F ; [.4286.0020.0004] # HANGUL LETTER MIEUM-SIOS +11DE ; [.4287.0020.0002] # HANGUL JONGSEONG MIEUM-SSANGSIOS +11DF ; [.4288.0020.0002] # HANGUL JONGSEONG MIEUM-PANSIOS +3170 ; [.4288.0020.0004] # HANGUL LETTER MIEUM-PANSIOS +11E0 ; [.4289.0020.0002] # HANGUL JONGSEONG MIEUM-CHIEUCH +11E1 ; [.428A.0020.0002] # HANGUL JONGSEONG MIEUM-HIEUH +11E2 ; [.428B.0020.0002] # HANGUL JONGSEONG KAPYEOUNMIEUM +11E3 ; [.428C.0020.0002] # HANGUL JONGSEONG PIEUP-RIEUL +11E4 ; [.428D.0020.0002] # HANGUL JONGSEONG PIEUP-PHIEUPH +11E5 ; [.428E.0020.0002] # HANGUL JONGSEONG PIEUP-HIEUH +11E6 ; [.428F.0020.0002] # HANGUL JONGSEONG KAPYEOUNPIEUP +11E7 ; [.4290.0020.0002] # HANGUL JONGSEONG SIOS-KIYEOK +11E8 ; [.4291.0020.0002] # HANGUL JONGSEONG SIOS-TIKEUT +11E9 ; [.4292.0020.0002] # HANGUL JONGSEONG SIOS-RIEUL +11EA ; [.4293.0020.0002] # HANGUL JONGSEONG SIOS-PIEUP +11EB ; [.4294.0020.0002] # HANGUL JONGSEONG PANSIOS +11EC ; [.4295.0020.0002] # HANGUL JONGSEONG IEUNG-KIYEOK +11ED ; [.4296.0020.0002] # HANGUL JONGSEONG IEUNG-SSANGKIYEOK +11EE ; [.4297.0020.0002] # HANGUL JONGSEONG SSANGIEUNG +11EF ; [.4298.0020.0002] # HANGUL JONGSEONG IEUNG-KHIEUKH +11F0 ; [.4299.0020.0002] # HANGUL JONGSEONG YESIEUNG +11F1 ; [.429A.0020.0002] # HANGUL JONGSEONG YESIEUNG-SIOS +3182 ; [.429A.0020.0004] # HANGUL LETTER YESIEUNG-SIOS +11F2 ; [.429B.0020.0002] # HANGUL JONGSEONG YESIEUNG-PANSIOS +3183 ; [.429B.0020.0004] # HANGUL LETTER YESIEUNG-PANSIOS +11F3 ; [.429C.0020.0002] # HANGUL JONGSEONG PHIEUPH-PIEUP +11F4 ; [.429D.0020.0002] # HANGUL JONGSEONG KAPYEOUNPHIEUPH +11F5 ; [.429E.0020.0002] # HANGUL JONGSEONG HIEUH-NIEUN +11F6 ; [.429F.0020.0002] # HANGUL JONGSEONG HIEUH-RIEUL +11F7 ; [.42A0.0020.0002] # HANGUL JONGSEONG HIEUH-MIEUM +11F8 ; [.42A1.0020.0002] # HANGUL JONGSEONG HIEUH-PIEUP +11F9 ; [.42A2.0020.0002] # HANGUL JONGSEONG YEORINHIEUH +11FA ; [.42A3.0020.0002] # HANGUL JONGSEONG KIYEOK-NIEUN +11FB ; [.42A4.0020.0002] # HANGUL JONGSEONG KIYEOK-PIEUP +11FC ; [.42A5.0020.0002] # HANGUL JONGSEONG KIYEOK-CHIEUCH +11FD ; [.42A6.0020.0002] # HANGUL JONGSEONG KIYEOK-KHIEUKH +11FE ; [.42A7.0020.0002] # HANGUL JONGSEONG KIYEOK-HIEUH +11FF ; [.42A8.0020.0002] # HANGUL JONGSEONG SSANGNIEUN +D7CB ; [.42A9.0020.0002] # HANGUL JONGSEONG NIEUN-RIEUL +D7CC ; [.42AA.0020.0002] # HANGUL JONGSEONG NIEUN-CHIEUCH +D7CD ; [.42AB.0020.0002] # HANGUL JONGSEONG SSANGTIKEUT +D7CE ; [.42AC.0020.0002] # HANGUL JONGSEONG SSANGTIKEUT-PIEUP +D7CF ; [.42AD.0020.0002] # HANGUL JONGSEONG TIKEUT-PIEUP +D7D0 ; [.42AE.0020.0002] # HANGUL JONGSEONG TIKEUT-SIOS +D7D1 ; [.42AF.0020.0002] # HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK +D7D2 ; [.42B0.0020.0002] # HANGUL JONGSEONG TIKEUT-CIEUC +D7D3 ; [.42B1.0020.0002] # HANGUL JONGSEONG TIKEUT-CHIEUCH +D7D4 ; [.42B2.0020.0002] # HANGUL JONGSEONG TIKEUT-THIEUTH +D7D5 ; [.42B3.0020.0002] # HANGUL JONGSEONG RIEUL-SSANGKIYEOK +D7D6 ; [.42B4.0020.0002] # HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH +D7D7 ; [.42B5.0020.0002] # HANGUL JONGSEONG SSANGRIEUL-KHIEUKH +D7D8 ; [.42B6.0020.0002] # HANGUL JONGSEONG RIEUL-MIEUM-HIEUH +D7D9 ; [.42B7.0020.0002] # HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT +D7DA ; [.42B8.0020.0002] # HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH +D7DB ; [.42B9.0020.0002] # HANGUL JONGSEONG RIEUL-YESIEUNG +D7DC ; [.42BA.0020.0002] # HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH +D7DD ; [.42BB.0020.0002] # HANGUL JONGSEONG KAPYEOUNRIEUL +D7DE ; [.42BC.0020.0002] # HANGUL JONGSEONG MIEUM-NIEUN +D7DF ; [.42BD.0020.0002] # HANGUL JONGSEONG MIEUM-SSANGNIEUN +D7E0 ; [.42BE.0020.0002] # HANGUL JONGSEONG SSANGMIEUM +D7E1 ; [.42BF.0020.0002] # HANGUL JONGSEONG MIEUM-PIEUP-SIOS +D7E2 ; [.42C0.0020.0002] # HANGUL JONGSEONG MIEUM-CIEUC +D7E3 ; [.42C1.0020.0002] # HANGUL JONGSEONG PIEUP-TIKEUT +D7E4 ; [.42C2.0020.0002] # HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH +D7E5 ; [.42C3.0020.0002] # HANGUL JONGSEONG PIEUP-MIEUM +D7E6 ; [.42C4.0020.0002] # HANGUL JONGSEONG SSANGPIEUP +D7E7 ; [.42C5.0020.0002] # HANGUL JONGSEONG PIEUP-SIOS-TIKEUT +D7E8 ; [.42C6.0020.0002] # HANGUL JONGSEONG PIEUP-CIEUC +D7E9 ; [.42C7.0020.0002] # HANGUL JONGSEONG PIEUP-CHIEUCH +D7EA ; [.42C8.0020.0002] # HANGUL JONGSEONG SIOS-MIEUM +D7EB ; [.42C9.0020.0002] # HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP +D7EC ; [.42CA.0020.0002] # HANGUL JONGSEONG SSANGSIOS-KIYEOK +D7ED ; [.42CB.0020.0002] # HANGUL JONGSEONG SSANGSIOS-TIKEUT +D7EE ; [.42CC.0020.0002] # HANGUL JONGSEONG SIOS-PANSIOS +D7EF ; [.42CD.0020.0002] # HANGUL JONGSEONG SIOS-CIEUC +D7F0 ; [.42CE.0020.0002] # HANGUL JONGSEONG SIOS-CHIEUCH +D7F1 ; [.42CF.0020.0002] # HANGUL JONGSEONG SIOS-THIEUTH +D7F2 ; [.42D0.0020.0002] # HANGUL JONGSEONG SIOS-HIEUH +D7F3 ; [.42D1.0020.0002] # HANGUL JONGSEONG PANSIOS-PIEUP +D7F4 ; [.42D2.0020.0002] # HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP +D7F5 ; [.42D3.0020.0002] # HANGUL JONGSEONG YESIEUNG-MIEUM +D7F6 ; [.42D4.0020.0002] # HANGUL JONGSEONG YESIEUNG-HIEUH +D7F7 ; [.42D5.0020.0002] # HANGUL JONGSEONG CIEUC-PIEUP +D7F8 ; [.42D6.0020.0002] # HANGUL JONGSEONG CIEUC-SSANGPIEUP +D7F9 ; [.42D7.0020.0002] # HANGUL JONGSEONG SSANGCIEUC +D7FA ; [.42D8.0020.0002] # HANGUL JONGSEONG PHIEUPH-SIOS +D7FB ; [.42D9.0020.0002] # HANGUL JONGSEONG PHIEUPH-THIEUTH +3041 ; [.42DA.0020.000D] # HIRAGANA LETTER SMALL A +3042 ; [.42DA.0020.000E] # HIRAGANA LETTER A +30A1 ; [.42DA.0020.000F] # KATAKANA LETTER SMALL A +FF67 ; [.42DA.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL A +30A2 ; [.42DA.0020.0011] # KATAKANA LETTER A +FF71 ; [.42DA.0020.0012] # HALFWIDTH KATAKANA LETTER A +32D0 ; [.42DA.0020.0013] # CIRCLED KATAKANA A +3303 ; [.42DA.0020.001C][.1F60.0020.001C][.4303.0020.001C] # SQUARE AARU +3300 ; [.42DA.0020.001C][.42F4.0020.001C][.0000.0038.001C][.1F60.0020.001C][.42EE.0020.001C] # SQUARE APAATO +3301 ; [.42DA.0020.001C][.4303.0020.001C][.42F6.0020.001C][.42DA.0020.001C] # SQUARE ARUHUA +3302 ; [.42DA.0020.001C][.430A.0020.001C][.42F7.0020.001C][.0000.0038.001C][.42DA.0020.001C] # SQUARE ANPEA +3043 ; [.42DB.0020.000D] # HIRAGANA LETTER SMALL I +3044 ; [.42DB.0020.000E] # HIRAGANA LETTER I +30A3 ; [.42DB.0020.000F] # KATAKANA LETTER SMALL I +FF68 ; [.42DB.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL I +30A4 ; [.42DB.0020.0011] # KATAKANA LETTER I +FF72 ; [.42DB.0020.0012] # HALFWIDTH KATAKANA LETTER I +32D1 ; [.42DB.0020.0013] # CIRCLED KATAKANA I +3304 ; [.42DB.0020.001C][.42F0.0020.001C][.430A.0020.001C][.42E2.0020.001C][.0000.0037.001C] # SQUARE ININGU +3305 ; [.42DB.0020.001C][.430A.0020.001C][.42EB.0020.001C] # SQUARE INTI +3045 ; [.42DC.0020.000D] # HIRAGANA LETTER SMALL U +3046 ; [.42DC.0020.000E] # HIRAGANA LETTER U +30A5 ; [.42DC.0020.000F] # KATAKANA LETTER SMALL U +FF69 ; [.42DC.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL U +30A6 ; [.42DC.0020.0011] # KATAKANA LETTER U +FF73 ; [.42DC.0020.0012] # HALFWIDTH KATAKANA LETTER U +32D2 ; [.42DC.0020.0013] # CIRCLED KATAKANA U +3094 ; [.42DC.0020.000E][.0000.0037.0002] # HIRAGANA LETTER VU +30F4 ; [.42DC.0020.0011][.0000.0037.0002] # KATAKANA LETTER VU +3306 ; [.42DC.0020.001C][.42DF.0020.001C][.430A.0020.001C] # SQUARE UON +1B000 ; [.42DD.0020.0011] # KATAKANA LETTER ARCHAIC E +3047 ; [.42DE.0020.000D] # HIRAGANA LETTER SMALL E +3048 ; [.42DE.0020.000E] # HIRAGANA LETTER E +30A7 ; [.42DE.0020.000F] # KATAKANA LETTER SMALL E +FF6A ; [.42DE.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL E +30A8 ; [.42DE.0020.0011] # KATAKANA LETTER E +FF74 ; [.42DE.0020.0012] # HALFWIDTH KATAKANA LETTER E +32D3 ; [.42DE.0020.0013] # CIRCLED KATAKANA E +3308 ; [.42DE.0020.001C][.1F60.0020.001C][.42E0.0020.001C][.1F60.0020.001C] # SQUARE EEKAA +3307 ; [.42DE.0020.001C][.42E7.0020.001C][.42E2.0020.001C][.1F60.0020.001C][.42EE.0020.001C][.0000.0037.001C] # SQUARE ESUKUUDO +3049 ; [.42DF.0020.000D] # HIRAGANA LETTER SMALL O +304A ; [.42DF.0020.000E] # HIRAGANA LETTER O +30A9 ; [.42DF.0020.000F] # KATAKANA LETTER SMALL O +FF6B ; [.42DF.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL O +30AA ; [.42DF.0020.0011] # KATAKANA LETTER O +FF75 ; [.42DF.0020.0012] # HALFWIDTH KATAKANA LETTER O +32D4 ; [.42DF.0020.0013] # CIRCLED KATAKANA O +330A ; [.42DF.0020.001C][.1F60.0020.001C][.42FB.0020.001C] # SQUARE OOMU +3309 ; [.42DF.0020.001C][.430A.0020.001C][.42E7.0020.001C] # SQUARE ONSU +3095 ; [.42E0.0020.000D] # HIRAGANA LETTER SMALL KA +304B ; [.42E0.0020.000E] # HIRAGANA LETTER KA +30F5 ; [.42E0.0020.000F] # KATAKANA LETTER SMALL KA +30AB ; [.42E0.0020.0011] # KATAKANA LETTER KA +FF76 ; [.42E0.0020.0012] # HALFWIDTH KATAKANA LETTER KA +32D5 ; [.42E0.0020.0013] # CIRCLED KATAKANA KA +304C ; [.42E0.0020.000E][.0000.0037.0002] # HIRAGANA LETTER GA +30AC ; [.42E0.0020.0011][.0000.0037.0002] # KATAKANA LETTER GA +330B ; [.42E0.0020.001C][.42DB.0020.001C][.4302.0020.001C] # SQUARE KAIRI +330C ; [.42E0.0020.001C][.4301.0020.001C][.42EC.0020.001C][.42EE.0020.001C] # SQUARE KARATTO +330D ; [.42E0.0020.001C][.4305.0020.001C][.4302.0020.001C][.1F60.0020.001C] # SQUARE KARORII +330E ; [.42E0.0020.001C][.0000.0037.001C][.4305.0020.001C][.430A.0020.001C] # SQUARE GARON +330F ; [.42E0.0020.001C][.0000.0037.001C][.430A.0020.001C][.42F9.0020.001C] # SQUARE GANMA +304D ; [.42E1.0020.000E] # HIRAGANA LETTER KI +30AD ; [.42E1.0020.0011] # KATAKANA LETTER KI +FF77 ; [.42E1.0020.0012] # HALFWIDTH KATAKANA LETTER KI +32D6 ; [.42E1.0020.0013] # CIRCLED KATAKANA KI +304E ; [.42E1.0020.000E][.0000.0037.0002] # HIRAGANA LETTER GI +30AE ; [.42E1.0020.0011][.0000.0037.0002] # KATAKANA LETTER GI +3310 ; [.42E1.0020.001C][.0000.0037.001C][.42E0.0020.001C][.0000.0037.001C] # SQUARE GIGA +3311 ; [.42E1.0020.001C][.0000.0037.001C][.42F0.0020.001C][.1F60.0020.001C] # SQUARE GINII +3312 ; [.42E1.0020.001C][.42FF.0020.001C][.4302.0020.001C][.1F60.0020.001C] # SQUARE KYURII +3313 ; [.42E1.0020.001C][.0000.0037.001C][.4303.0020.001C][.42EA.0020.001C][.0000.0037.001C][.1F60.0020.001C] # SQUARE GIRUDAA +3314 ; [.42E1.0020.001C][.4305.0020.001C] # SQUARE KIRO +3315 ; [.42E1.0020.001C][.4305.0020.001C][.42E2.0020.001C][.0000.0037.001C][.4301.0020.001C][.42FB.0020.001C] # SQUARE KIROGURAMU +3316 ; [.42E1.0020.001C][.4305.0020.001C][.42FC.0020.001C][.1F60.0020.001C][.42EE.0020.001C][.4303.0020.001C] # SQUARE KIROMEETORU +3317 ; [.42E1.0020.001C][.4305.0020.001C][.4306.0020.001C][.42EC.0020.001C][.42EE.0020.001C] # SQUARE KIROWATTO +304F ; [.42E2.0020.000E] # HIRAGANA LETTER KU +31F0 ; [.42E2.0020.000F] # KATAKANA LETTER SMALL KU +30AF ; [.42E2.0020.0011] # KATAKANA LETTER KU +FF78 ; [.42E2.0020.0012] # HALFWIDTH KATAKANA LETTER KU +32D7 ; [.42E2.0020.0013] # CIRCLED KATAKANA KU +3050 ; [.42E2.0020.000E][.0000.0037.0002] # HIRAGANA LETTER GU +30B0 ; [.42E2.0020.0011][.0000.0037.0002] # KATAKANA LETTER GU +3318 ; [.42E2.0020.001C][.0000.0037.001C][.4301.0020.001C][.42FB.0020.001C] # SQUARE GURAMU +3319 ; [.42E2.0020.001C][.0000.0037.001C][.4301.0020.001C][.42FB.0020.001C][.42EE.0020.001C][.430A.0020.001C] # SQUARE GURAMUTON +331A ; [.42E2.0020.001C][.4303.0020.001C][.42E8.0020.001C][.0000.0037.001C][.42DB.0020.001C][.4305.0020.001C] # SQUARE KURUZEIRO +331B ; [.42E2.0020.001C][.4305.0020.001C][.1F60.0020.001C][.42F2.0020.001C] # SQUARE KUROONE +3096 ; [.42E3.0020.000D] # HIRAGANA LETTER SMALL KE +3051 ; [.42E3.0020.000E] # HIRAGANA LETTER KE +30F6 ; [.42E3.0020.000F] # KATAKANA LETTER SMALL KE +30B1 ; [.42E3.0020.0011] # KATAKANA LETTER KE +FF79 ; [.42E3.0020.0012] # HALFWIDTH KATAKANA LETTER KE +32D8 ; [.42E3.0020.0013] # CIRCLED KATAKANA KE +3052 ; [.42E3.0020.000E][.0000.0037.0002] # HIRAGANA LETTER GE +30B2 ; [.42E3.0020.0011][.0000.0037.0002] # KATAKANA LETTER GE +331C ; [.42E3.0020.001C][.1F60.0020.001C][.42E7.0020.001C] # SQUARE KEESU +3053 ; [.42E4.0020.000E] # HIRAGANA LETTER KO +30B3 ; [.42E4.0020.0011] # KATAKANA LETTER KO +FF7A ; [.42E4.0020.0012] # HALFWIDTH KATAKANA LETTER KO +32D9 ; [.42E4.0020.0013] # CIRCLED KATAKANA KO +3054 ; [.42E4.0020.000E][.0000.0037.0002] # HIRAGANA LETTER GO +30B4 ; [.42E4.0020.0011][.0000.0037.0002] # KATAKANA LETTER GO +331E ; [.42E4.0020.001C][.1F60.0020.001C][.42F8.0020.001C][.0000.0038.001C] # SQUARE KOOPO +1F201 ; [.42E4.0020.001C][.42E4.0020.001C] # SQUARED KATAKANA KOKO +30FF ; [.42E4.0020.0016][.42EE.0020.0016] # KATAKANA DIGRAPH KOTO +331D ; [.42E4.0020.001C][.4303.0020.001C][.42EF.0020.001C] # SQUARE KORUNA +3055 ; [.42E5.0020.000E] # HIRAGANA LETTER SA +30B5 ; [.42E5.0020.0011] # KATAKANA LETTER SA +FF7B ; [.42E5.0020.0012] # HALFWIDTH KATAKANA LETTER SA +32DA ; [.42E5.0020.0013] # CIRCLED KATAKANA SA +1F202 ; [.42E5.0020.001C] # SQUARED KATAKANA SA +3056 ; [.42E5.0020.000E][.0000.0037.0002] # HIRAGANA LETTER ZA +30B6 ; [.42E5.0020.0011][.0000.0037.0002] # KATAKANA LETTER ZA +331F ; [.42E5.0020.001C][.42DB.0020.001C][.42E2.0020.001C][.4303.0020.001C] # SQUARE SAIKURU +3320 ; [.42E5.0020.001C][.430A.0020.001C][.42EB.0020.001C][.1F60.0020.001C][.42FB.0020.001C] # SQUARE SANTIIMU +3057 ; [.42E6.0020.000E] # HIRAGANA LETTER SI +31F1 ; [.42E6.0020.000F] # KATAKANA LETTER SMALL SI +30B7 ; [.42E6.0020.0011] # KATAKANA LETTER SI +FF7C ; [.42E6.0020.0012] # HALFWIDTH KATAKANA LETTER SI +32DB ; [.42E6.0020.0013] # CIRCLED KATAKANA SI +3058 ; [.42E6.0020.000E][.0000.0037.0002] # HIRAGANA LETTER ZI +30B8 ; [.42E6.0020.0011][.0000.0037.0002] # KATAKANA LETTER ZI +3006 ; [.42E6.0020.0004][.42FC.0020.0004] # IDEOGRAPHIC CLOSING MARK +3321 ; [.42E6.0020.001C][.4302.0020.001C][.430A.0020.001C][.42E2.0020.001C][.0000.0037.001C] # SQUARE SIRINGU +3059 ; [.42E7.0020.000E] # HIRAGANA LETTER SU +31F2 ; [.42E7.0020.000F] # KATAKANA LETTER SMALL SU +30B9 ; [.42E7.0020.0011] # KATAKANA LETTER SU +FF7D ; [.42E7.0020.0012] # HALFWIDTH KATAKANA LETTER SU +32DC ; [.42E7.0020.0013] # CIRCLED KATAKANA SU +305A ; [.42E7.0020.000E][.0000.0037.0002] # HIRAGANA LETTER ZU +30BA ; [.42E7.0020.0011][.0000.0037.0002] # KATAKANA LETTER ZU +305B ; [.42E8.0020.000E] # HIRAGANA LETTER SE +30BB ; [.42E8.0020.0011] # KATAKANA LETTER SE +FF7E ; [.42E8.0020.0012] # HALFWIDTH KATAKANA LETTER SE +32DD ; [.42E8.0020.0013] # CIRCLED KATAKANA SE +305C ; [.42E8.0020.000E][.0000.0037.0002] # HIRAGANA LETTER ZE +30BC ; [.42E8.0020.0011][.0000.0037.0002] # KATAKANA LETTER ZE +3322 ; [.42E8.0020.001C][.430A.0020.001C][.42EB.0020.001C] # SQUARE SENTI +3323 ; [.42E8.0020.001C][.430A.0020.001C][.42EE.0020.001C] # SQUARE SENTO +305D ; [.42E9.0020.000E] # HIRAGANA LETTER SO +30BD ; [.42E9.0020.0011] # KATAKANA LETTER SO +FF7F ; [.42E9.0020.0012] # HALFWIDTH KATAKANA LETTER SO +32DE ; [.42E9.0020.0013] # CIRCLED KATAKANA SO +305E ; [.42E9.0020.000E][.0000.0037.0002] # HIRAGANA LETTER ZO +30BE ; [.42E9.0020.0011][.0000.0037.0002] # KATAKANA LETTER ZO +305F ; [.42EA.0020.000E] # HIRAGANA LETTER TA +30BF ; [.42EA.0020.0011] # KATAKANA LETTER TA +FF80 ; [.42EA.0020.0012] # HALFWIDTH KATAKANA LETTER TA +32DF ; [.42EA.0020.0013] # CIRCLED KATAKANA TA +3060 ; [.42EA.0020.000E][.0000.0037.0002] # HIRAGANA LETTER DA +30C0 ; [.42EA.0020.0011][.0000.0037.0002] # KATAKANA LETTER DA +3324 ; [.42EA.0020.001C][.0000.0037.001C][.1F60.0020.001C][.42E7.0020.001C] # SQUARE DAASU +3061 ; [.42EB.0020.000E] # HIRAGANA LETTER TI +30C1 ; [.42EB.0020.0011] # KATAKANA LETTER TI +FF81 ; [.42EB.0020.0012] # HALFWIDTH KATAKANA LETTER TI +32E0 ; [.42EB.0020.0013] # CIRCLED KATAKANA TI +3062 ; [.42EB.0020.000E][.0000.0037.0002] # HIRAGANA LETTER DI +30C2 ; [.42EB.0020.0011][.0000.0037.0002] # KATAKANA LETTER DI +3063 ; [.42EC.0020.000D] # HIRAGANA LETTER SMALL TU +3064 ; [.42EC.0020.000E] # HIRAGANA LETTER TU +30C3 ; [.42EC.0020.000F] # KATAKANA LETTER SMALL TU +FF6F ; [.42EC.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL TU +30C4 ; [.42EC.0020.0011] # KATAKANA LETTER TU +FF82 ; [.42EC.0020.0012] # HALFWIDTH KATAKANA LETTER TU +32E1 ; [.42EC.0020.0013] # CIRCLED KATAKANA TU +3065 ; [.42EC.0020.000E][.0000.0037.0002] # HIRAGANA LETTER DU +30C5 ; [.42EC.0020.0011][.0000.0037.0002] # KATAKANA LETTER DU +3066 ; [.42ED.0020.000E] # HIRAGANA LETTER TE +30C6 ; [.42ED.0020.0011] # KATAKANA LETTER TE +FF83 ; [.42ED.0020.0012] # HALFWIDTH KATAKANA LETTER TE +32E2 ; [.42ED.0020.0013] # CIRCLED KATAKANA TE +3067 ; [.42ED.0020.000E][.0000.0037.0002] # HIRAGANA LETTER DE +30C7 ; [.42ED.0020.0011][.0000.0037.0002] # KATAKANA LETTER DE +1F213 ; [.42ED.0020.001C][.0000.0037.001C] # SQUARED KATAKANA DE +3325 ; [.42ED.0020.001C][.0000.0037.001C][.42E6.0020.001C] # SQUARE DESI +3068 ; [.42EE.0020.000E] # HIRAGANA LETTER TO +31F3 ; [.42EE.0020.000F] # KATAKANA LETTER SMALL TO +30C8 ; [.42EE.0020.0011] # KATAKANA LETTER TO +FF84 ; [.42EE.0020.0012] # HALFWIDTH KATAKANA LETTER TO +32E3 ; [.42EE.0020.0013] # CIRCLED KATAKANA TO +3069 ; [.42EE.0020.000E][.0000.0037.0002] # HIRAGANA LETTER DO +30C9 ; [.42EE.0020.0011][.0000.0037.0002] # KATAKANA LETTER DO +3326 ; [.42EE.0020.001C][.0000.0037.001C][.4303.0020.001C] # SQUARE DORU +3327 ; [.42EE.0020.001C][.430A.0020.001C] # SQUARE TON +306A ; [.42EF.0020.000E] # HIRAGANA LETTER NA +30CA ; [.42EF.0020.0011] # KATAKANA LETTER NA +FF85 ; [.42EF.0020.0012] # HALFWIDTH KATAKANA LETTER NA +32E4 ; [.42EF.0020.0013] # CIRCLED KATAKANA NA +3328 ; [.42EF.0020.001C][.42F3.0020.001C] # SQUARE NANO +306B ; [.42F0.0020.000E] # HIRAGANA LETTER NI +30CB ; [.42F0.0020.0011] # KATAKANA LETTER NI +FF86 ; [.42F0.0020.0012] # HALFWIDTH KATAKANA LETTER NI +32E5 ; [.42F0.0020.0013] # CIRCLED KATAKANA NI +306C ; [.42F1.0020.000E] # HIRAGANA LETTER NU +31F4 ; [.42F1.0020.000F] # KATAKANA LETTER SMALL NU +30CC ; [.42F1.0020.0011] # KATAKANA LETTER NU +FF87 ; [.42F1.0020.0012] # HALFWIDTH KATAKANA LETTER NU +32E6 ; [.42F1.0020.0013] # CIRCLED KATAKANA NU +306D ; [.42F2.0020.000E] # HIRAGANA LETTER NE +30CD ; [.42F2.0020.0011] # KATAKANA LETTER NE +FF88 ; [.42F2.0020.0012] # HALFWIDTH KATAKANA LETTER NE +32E7 ; [.42F2.0020.0013] # CIRCLED KATAKANA NE +306E ; [.42F3.0020.000E] # HIRAGANA LETTER NO +30CE ; [.42F3.0020.0011] # KATAKANA LETTER NO +FF89 ; [.42F3.0020.0012] # HALFWIDTH KATAKANA LETTER NO +32E8 ; [.42F3.0020.0013] # CIRCLED KATAKANA NO +3329 ; [.42F3.0020.001C][.42EC.0020.001C][.42EE.0020.001C] # SQUARE NOTTO +306F ; [.42F4.0020.000E] # HIRAGANA LETTER HA +31F5 ; [.42F4.0020.000F] # KATAKANA LETTER SMALL HA +30CF ; [.42F4.0020.0011] # KATAKANA LETTER HA +FF8A ; [.42F4.0020.0012] # HALFWIDTH KATAKANA LETTER HA +32E9 ; [.42F4.0020.0013] # CIRCLED KATAKANA HA +3070 ; [.42F4.0020.000E][.0000.0037.0002] # HIRAGANA LETTER BA +30D0 ; [.42F4.0020.0011][.0000.0037.0002] # KATAKANA LETTER BA +3071 ; [.42F4.0020.000E][.0000.0038.0002] # HIRAGANA LETTER PA +30D1 ; [.42F4.0020.0011][.0000.0038.0002] # KATAKANA LETTER PA +332B ; [.42F4.0020.001C][.0000.0038.001C][.1F60.0020.001C][.42E8.0020.001C][.430A.0020.001C][.42EE.0020.001C] # SQUARE PAASENTO +332C ; [.42F4.0020.001C][.0000.0038.001C][.1F60.0020.001C][.42EC.0020.001C] # SQUARE PAATU +332D ; [.42F4.0020.001C][.0000.0037.001C][.1F60.0020.001C][.4304.0020.001C][.4303.0020.001C] # SQUARE BAARERU +332A ; [.42F4.0020.001C][.42DB.0020.001C][.42EC.0020.001C] # SQUARE HAITU +3072 ; [.42F5.0020.000E] # HIRAGANA LETTER HI +31F6 ; [.42F5.0020.000F] # KATAKANA LETTER SMALL HI +30D2 ; [.42F5.0020.0011] # KATAKANA LETTER HI +FF8B ; [.42F5.0020.0012] # HALFWIDTH KATAKANA LETTER HI +32EA ; [.42F5.0020.0013] # CIRCLED KATAKANA HI +3073 ; [.42F5.0020.000E][.0000.0037.0002] # HIRAGANA LETTER BI +30D3 ; [.42F5.0020.0011][.0000.0037.0002] # KATAKANA LETTER BI +3074 ; [.42F5.0020.000E][.0000.0038.0002] # HIRAGANA LETTER PI +30D4 ; [.42F5.0020.0011][.0000.0038.0002] # KATAKANA LETTER PI +332E ; [.42F5.0020.001C][.0000.0038.001C][.42DA.0020.001C][.42E7.0020.001C][.42EE.0020.001C][.4303.0020.001C] # SQUARE PIASUTORU +332F ; [.42F5.0020.001C][.0000.0038.001C][.42E2.0020.001C][.4303.0020.001C] # SQUARE PIKURU +3330 ; [.42F5.0020.001C][.0000.0038.001C][.42E4.0020.001C] # SQUARE PIKO +3331 ; [.42F5.0020.001C][.0000.0037.001C][.4303.0020.001C] # SQUARE BIRU +3075 ; [.42F6.0020.000E] # HIRAGANA LETTER HU +31F7 ; [.42F6.0020.000F] # KATAKANA LETTER SMALL HU +30D5 ; [.42F6.0020.0011] # KATAKANA LETTER HU +FF8C ; [.42F6.0020.0012] # HALFWIDTH KATAKANA LETTER HU +32EB ; [.42F6.0020.0013] # CIRCLED KATAKANA HU +3076 ; [.42F6.0020.000E][.0000.0037.0002] # HIRAGANA LETTER BU +30D6 ; [.42F6.0020.0011][.0000.0037.0002] # KATAKANA LETTER BU +3077 ; [.42F6.0020.000E][.0000.0038.0002] # HIRAGANA LETTER PU +30D7 ; [.42F6.0020.0011][.0000.0038.0002] # KATAKANA LETTER PU +3332 ; [.42F6.0020.001C][.42DA.0020.001C][.4301.0020.001C][.42EC.0020.001C][.42EE.0020.001C][.0000.0037.001C] # SQUARE HUARADDO +3333 ; [.42F6.0020.001C][.42DB.0020.001C][.1F60.0020.001C][.42EE.0020.001C] # SQUARE HUIITO +3334 ; [.42F6.0020.001C][.0000.0037.001C][.42EC.0020.001C][.42E6.0020.001C][.42DE.0020.001C][.4303.0020.001C] # SQUARE BUSSYERU +3335 ; [.42F6.0020.001C][.4301.0020.001C][.430A.0020.001C] # SQUARE HURAN +3078 ; [.42F7.0020.000E] # HIRAGANA LETTER HE +31F8 ; [.42F7.0020.000F] # KATAKANA LETTER SMALL HE +30D8 ; [.42F7.0020.0011] # KATAKANA LETTER HE +FF8D ; [.42F7.0020.0012] # HALFWIDTH KATAKANA LETTER HE +32EC ; [.42F7.0020.0013] # CIRCLED KATAKANA HE +3079 ; [.42F7.0020.000E][.0000.0037.0002] # HIRAGANA LETTER BE +30D9 ; [.42F7.0020.0011][.0000.0037.0002] # KATAKANA LETTER BE +307A ; [.42F7.0020.000E][.0000.0038.0002] # HIRAGANA LETTER PE +30DA ; [.42F7.0020.0011][.0000.0038.0002] # KATAKANA LETTER PE +333B ; [.42F7.0020.001C][.0000.0038.001C][.1F60.0020.001C][.42E6.0020.001C][.0000.0037.001C] # SQUARE PEEZI +333C ; [.42F7.0020.001C][.0000.0037.001C][.1F60.0020.001C][.42EA.0020.001C] # SQUARE BEETA +3336 ; [.42F7.0020.001C][.42E2.0020.001C][.42EA.0020.001C][.1F60.0020.001C][.4303.0020.001C] # SQUARE HEKUTAARU +3337 ; [.42F7.0020.001C][.0000.0038.001C][.42E9.0020.001C] # SQUARE PESO +3338 ; [.42F7.0020.001C][.0000.0038.001C][.42F0.0020.001C][.42F5.0020.001C] # SQUARE PENIHI +3339 ; [.42F7.0020.001C][.4303.0020.001C][.42EC.0020.001C] # SQUARE HERUTU +333A ; [.42F7.0020.001C][.0000.0038.001C][.430A.0020.001C][.42E7.0020.001C] # SQUARE PENSU +307B ; [.42F8.0020.000E] # HIRAGANA LETTER HO +31F9 ; [.42F8.0020.000F] # KATAKANA LETTER SMALL HO +30DB ; [.42F8.0020.0011] # KATAKANA LETTER HO +FF8E ; [.42F8.0020.0012] # HALFWIDTH KATAKANA LETTER HO +32ED ; [.42F8.0020.0013] # CIRCLED KATAKANA HO +307C ; [.42F8.0020.000E][.0000.0037.0002] # HIRAGANA LETTER BO +30DC ; [.42F8.0020.0011][.0000.0037.0002] # KATAKANA LETTER BO +307D ; [.42F8.0020.000E][.0000.0038.0002] # HIRAGANA LETTER PO +30DD ; [.42F8.0020.0011][.0000.0038.0002] # KATAKANA LETTER PO +3341 ; [.42F8.0020.001C][.1F60.0020.001C][.4303.0020.001C] # SQUARE HOORU +3342 ; [.42F8.0020.001C][.1F60.0020.001C][.430A.0020.001C] # SQUARE HOON +333D ; [.42F8.0020.001C][.0000.0038.001C][.42DB.0020.001C][.430A.0020.001C][.42EE.0020.001C] # SQUARE POINTO +1F200 ; [.42F8.0020.001C][.42E0.0020.001C] # SQUARE HIRAGANA HOKA +333E ; [.42F8.0020.001C][.0000.0037.001C][.4303.0020.001C][.42EE.0020.001C] # SQUARE BORUTO +333F ; [.42F8.0020.001C][.430A.0020.001C] # SQUARE HON +3340 ; [.42F8.0020.001C][.0000.0038.001C][.430A.0020.001C][.42EE.0020.001C][.0000.0037.001C] # SQUARE PONDO +307E ; [.42F9.0020.000E] # HIRAGANA LETTER MA +30DE ; [.42F9.0020.0011] # KATAKANA LETTER MA +FF8F ; [.42F9.0020.0012] # HALFWIDTH KATAKANA LETTER MA +32EE ; [.42F9.0020.0013] # CIRCLED KATAKANA MA +3343 ; [.42F9.0020.001C][.42DB.0020.001C][.42E2.0020.001C][.4305.0020.001C] # SQUARE MAIKURO +3344 ; [.42F9.0020.001C][.42DB.0020.001C][.4303.0020.001C] # SQUARE MAIRU +303C ; [.42F9.0020.0004][.42E7.0020.0004] # MASU MARK +3345 ; [.42F9.0020.001C][.42EC.0020.001C][.42F4.0020.001C] # SQUARE MAHHA +3346 ; [.42F9.0020.001C][.4303.0020.001C][.42E2.0020.001C] # SQUARE MARUKU +3347 ; [.42F9.0020.001C][.430A.0020.001C][.42E6.0020.001C][.4300.0020.001C][.430A.0020.001C] # SQUARE MANSYON +307F ; [.42FA.0020.000E] # HIRAGANA LETTER MI +30DF ; [.42FA.0020.0011] # KATAKANA LETTER MI +FF90 ; [.42FA.0020.0012] # HALFWIDTH KATAKANA LETTER MI +32EF ; [.42FA.0020.0013] # CIRCLED KATAKANA MI +3348 ; [.42FA.0020.001C][.42E2.0020.001C][.4305.0020.001C][.430A.0020.001C] # SQUARE MIKURON +3349 ; [.42FA.0020.001C][.4302.0020.001C] # SQUARE MIRI +334A ; [.42FA.0020.001C][.4302.0020.001C][.42F4.0020.001C][.0000.0037.001C][.1F60.0020.001C][.4303.0020.001C] # SQUARE MIRIBAARU +3080 ; [.42FB.0020.000E] # HIRAGANA LETTER MU +31FA ; [.42FB.0020.000F] # KATAKANA LETTER SMALL MU +30E0 ; [.42FB.0020.0011] # KATAKANA LETTER MU +FF91 ; [.42FB.0020.0012] # HALFWIDTH KATAKANA LETTER MU +32F0 ; [.42FB.0020.0013] # CIRCLED KATAKANA MU +3081 ; [.42FC.0020.000E] # HIRAGANA LETTER ME +30E1 ; [.42FC.0020.0011] # KATAKANA LETTER ME +FF92 ; [.42FC.0020.0012] # HALFWIDTH KATAKANA LETTER ME +32F1 ; [.42FC.0020.0013] # CIRCLED KATAKANA ME +334D ; [.42FC.0020.001C][.1F60.0020.001C][.42EE.0020.001C][.4303.0020.001C] # SQUARE MEETORU +334B ; [.42FC.0020.001C][.42E0.0020.001C][.0000.0037.001C] # SQUARE MEGA +334C ; [.42FC.0020.001C][.42E0.0020.001C][.0000.0037.001C][.42EE.0020.001C][.430A.0020.001C] # SQUARE MEGATON +3082 ; [.42FD.0020.000E] # HIRAGANA LETTER MO +30E2 ; [.42FD.0020.0011] # KATAKANA LETTER MO +FF93 ; [.42FD.0020.0012] # HALFWIDTH KATAKANA LETTER MO +32F2 ; [.42FD.0020.0013] # CIRCLED KATAKANA MO +3083 ; [.42FE.0020.000D] # HIRAGANA LETTER SMALL YA +3084 ; [.42FE.0020.000E] # HIRAGANA LETTER YA +30E3 ; [.42FE.0020.000F] # KATAKANA LETTER SMALL YA +FF6C ; [.42FE.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL YA +30E4 ; [.42FE.0020.0011] # KATAKANA LETTER YA +FF94 ; [.42FE.0020.0012] # HALFWIDTH KATAKANA LETTER YA +32F3 ; [.42FE.0020.0013] # CIRCLED KATAKANA YA +334E ; [.42FE.0020.001C][.1F60.0020.001C][.42EE.0020.001C][.0000.0037.001C] # SQUARE YAADO +334F ; [.42FE.0020.001C][.1F60.0020.001C][.4303.0020.001C] # SQUARE YAARU +3085 ; [.42FF.0020.000D] # HIRAGANA LETTER SMALL YU +3086 ; [.42FF.0020.000E] # HIRAGANA LETTER YU +30E5 ; [.42FF.0020.000F] # KATAKANA LETTER SMALL YU +FF6D ; [.42FF.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL YU +30E6 ; [.42FF.0020.0011] # KATAKANA LETTER YU +FF95 ; [.42FF.0020.0012] # HALFWIDTH KATAKANA LETTER YU +32F4 ; [.42FF.0020.0013] # CIRCLED KATAKANA YU +3350 ; [.42FF.0020.001C][.42DA.0020.001C][.430A.0020.001C] # SQUARE YUAN +3087 ; [.4300.0020.000D] # HIRAGANA LETTER SMALL YO +3088 ; [.4300.0020.000E] # HIRAGANA LETTER YO +30E7 ; [.4300.0020.000F] # KATAKANA LETTER SMALL YO +FF6E ; [.4300.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL YO +30E8 ; [.4300.0020.0011] # KATAKANA LETTER YO +FF96 ; [.4300.0020.0012] # HALFWIDTH KATAKANA LETTER YO +32F5 ; [.4300.0020.0013] # CIRCLED KATAKANA YO +309F ; [.4300.0020.0016][.4302.0020.0016] # HIRAGANA DIGRAPH YORI +3089 ; [.4301.0020.000E] # HIRAGANA LETTER RA +31FB ; [.4301.0020.000F] # KATAKANA LETTER SMALL RA +30E9 ; [.4301.0020.0011] # KATAKANA LETTER RA +FF97 ; [.4301.0020.0012] # HALFWIDTH KATAKANA LETTER RA +32F6 ; [.4301.0020.0013] # CIRCLED KATAKANA RA +308A ; [.4302.0020.000E] # HIRAGANA LETTER RI +31FC ; [.4302.0020.000F] # KATAKANA LETTER SMALL RI +30EA ; [.4302.0020.0011] # KATAKANA LETTER RI +FF98 ; [.4302.0020.0012] # HALFWIDTH KATAKANA LETTER RI +32F7 ; [.4302.0020.0013] # CIRCLED KATAKANA RI +3351 ; [.4302.0020.001C][.42EC.0020.001C][.42EE.0020.001C][.4303.0020.001C] # SQUARE RITTORU +3352 ; [.4302.0020.001C][.4301.0020.001C] # SQUARE RIRA +308B ; [.4303.0020.000E] # HIRAGANA LETTER RU +31FD ; [.4303.0020.000F] # KATAKANA LETTER SMALL RU +30EB ; [.4303.0020.0011] # KATAKANA LETTER RU +FF99 ; [.4303.0020.0012] # HALFWIDTH KATAKANA LETTER RU +32F8 ; [.4303.0020.0013] # CIRCLED KATAKANA RU +3354 ; [.4303.0020.001C][.1F60.0020.001C][.42F6.0020.001C][.0000.0037.001C][.4303.0020.001C] # SQUARE RUUBURU +3353 ; [.4303.0020.001C][.42F5.0020.001C][.0000.0038.001C][.1F60.0020.001C] # SQUARE RUPII +308C ; [.4304.0020.000E] # HIRAGANA LETTER RE +31FE ; [.4304.0020.000F] # KATAKANA LETTER SMALL RE +30EC ; [.4304.0020.0011] # KATAKANA LETTER RE +FF9A ; [.4304.0020.0012] # HALFWIDTH KATAKANA LETTER RE +32F9 ; [.4304.0020.0013] # CIRCLED KATAKANA RE +3355 ; [.4304.0020.001C][.42FB.0020.001C] # SQUARE REMU +3356 ; [.4304.0020.001C][.430A.0020.001C][.42EE.0020.001C][.42E3.0020.001C][.0000.0037.001C][.430A.0020.001C] # SQUARE RENTOGEN +308D ; [.4305.0020.000E] # HIRAGANA LETTER RO +31FF ; [.4305.0020.000F] # KATAKANA LETTER SMALL RO +30ED ; [.4305.0020.0011] # KATAKANA LETTER RO +FF9B ; [.4305.0020.0012] # HALFWIDTH KATAKANA LETTER RO +32FA ; [.4305.0020.0013] # CIRCLED KATAKANA RO +308E ; [.4306.0020.000D] # HIRAGANA LETTER SMALL WA +308F ; [.4306.0020.000E] # HIRAGANA LETTER WA +30EE ; [.4306.0020.000F] # KATAKANA LETTER SMALL WA +30EF ; [.4306.0020.0011] # KATAKANA LETTER WA +FF9C ; [.4306.0020.0012] # HALFWIDTH KATAKANA LETTER WA +32FB ; [.4306.0020.0013] # CIRCLED KATAKANA WA +30F7 ; [.4306.0020.0011][.0000.0037.0002] # KATAKANA LETTER VA +3357 ; [.4306.0020.001C][.42EC.0020.001C][.42EE.0020.001C] # SQUARE WATTO +1B150 ; [.4307.0020.000D] # HIRAGANA LETTER SMALL WI +3090 ; [.4307.0020.000E] # HIRAGANA LETTER WI +1B164 ; [.4307.0020.000F] # KATAKANA LETTER SMALL WI +30F0 ; [.4307.0020.0011] # KATAKANA LETTER WI +32FC ; [.4307.0020.0013] # CIRCLED KATAKANA WI +30F8 ; [.4307.0020.0011][.0000.0037.0002] # KATAKANA LETTER VI +1B151 ; [.4308.0020.000D] # HIRAGANA LETTER SMALL WE +3091 ; [.4308.0020.000E] # HIRAGANA LETTER WE +1B165 ; [.4308.0020.000F] # KATAKANA LETTER SMALL WE +30F1 ; [.4308.0020.0011] # KATAKANA LETTER WE +32FD ; [.4308.0020.0013] # CIRCLED KATAKANA WE +30F9 ; [.4308.0020.0011][.0000.0037.0002] # KATAKANA LETTER VE +1B152 ; [.4309.0020.000D] # HIRAGANA LETTER SMALL WO +3092 ; [.4309.0020.000E] # HIRAGANA LETTER WO +1B166 ; [.4309.0020.000F] # KATAKANA LETTER SMALL WO +30F2 ; [.4309.0020.0011] # KATAKANA LETTER WO +FF66 ; [.4309.0020.0012] # HALFWIDTH KATAKANA LETTER WO +32FE ; [.4309.0020.0013] # CIRCLED KATAKANA WO +30FA ; [.4309.0020.0011][.0000.0037.0002] # KATAKANA LETTER VO +3093 ; [.430A.0020.000E] # HIRAGANA LETTER N +1B167 ; [.430A.0020.000F] # KATAKANA LETTER SMALL N +30F3 ; [.430A.0020.0011] # KATAKANA LETTER N +FF9D ; [.430A.0020.0012] # HALFWIDTH KATAKANA LETTER N +1B002 ; [.430B.0020.0002] # HENTAIGANA LETTER A-1 +1B003 ; [.430C.0020.0002] # HENTAIGANA LETTER A-2 +1B004 ; [.430D.0020.0002] # HENTAIGANA LETTER A-3 +1B005 ; [.430E.0020.0002] # HENTAIGANA LETTER A-WO +1B006 ; [.430F.0020.0002] # HENTAIGANA LETTER I-1 +1B007 ; [.4310.0020.0002] # HENTAIGANA LETTER I-2 +1B008 ; [.4311.0020.0002] # HENTAIGANA LETTER I-3 +1B009 ; [.4312.0020.0002] # HENTAIGANA LETTER I-4 +1B00A ; [.4313.0020.0002] # HENTAIGANA LETTER U-1 +1B00B ; [.4314.0020.0002] # HENTAIGANA LETTER U-2 +1B00C ; [.4315.0020.0002] # HENTAIGANA LETTER U-3 +1B00D ; [.4316.0020.0002] # HENTAIGANA LETTER U-4 +1B00E ; [.4317.0020.0002] # HENTAIGANA LETTER U-5 +1B001 ; [.4318.0020.0002] # HIRAGANA LETTER ARCHAIC YE +1B00F ; [.4319.0020.0002] # HENTAIGANA LETTER E-2 +1B010 ; [.431A.0020.0002] # HENTAIGANA LETTER E-3 +1B011 ; [.431B.0020.0002] # HENTAIGANA LETTER E-4 +1B012 ; [.431C.0020.0002] # HENTAIGANA LETTER E-5 +1B013 ; [.431D.0020.0002] # HENTAIGANA LETTER E-6 +1B014 ; [.431E.0020.0002] # HENTAIGANA LETTER O-1 +1B015 ; [.431F.0020.0002] # HENTAIGANA LETTER O-2 +1B016 ; [.4320.0020.0002] # HENTAIGANA LETTER O-3 +1B017 ; [.4321.0020.0002] # HENTAIGANA LETTER KA-1 +1B018 ; [.4322.0020.0002] # HENTAIGANA LETTER KA-2 +1B019 ; [.4323.0020.0002] # HENTAIGANA LETTER KA-3 +1B01A ; [.4324.0020.0002] # HENTAIGANA LETTER KA-4 +1B01B ; [.4325.0020.0002] # HENTAIGANA LETTER KA-5 +1B01C ; [.4326.0020.0002] # HENTAIGANA LETTER KA-6 +1B01D ; [.4327.0020.0002] # HENTAIGANA LETTER KA-7 +1B01E ; [.4328.0020.0002] # HENTAIGANA LETTER KA-8 +1B01F ; [.4329.0020.0002] # HENTAIGANA LETTER KA-9 +1B020 ; [.432A.0020.0002] # HENTAIGANA LETTER KA-10 +1B021 ; [.432B.0020.0002] # HENTAIGANA LETTER KA-11 +1B022 ; [.432C.0020.0002] # HENTAIGANA LETTER KA-KE +1B023 ; [.432D.0020.0002] # HENTAIGANA LETTER KI-1 +1B024 ; [.432E.0020.0002] # HENTAIGANA LETTER KI-2 +1B025 ; [.432F.0020.0002] # HENTAIGANA LETTER KI-3 +1B026 ; [.4330.0020.0002] # HENTAIGANA LETTER KI-4 +1B027 ; [.4331.0020.0002] # HENTAIGANA LETTER KI-5 +1B028 ; [.4332.0020.0002] # HENTAIGANA LETTER KI-6 +1B029 ; [.4333.0020.0002] # HENTAIGANA LETTER KI-7 +1B02A ; [.4334.0020.0002] # HENTAIGANA LETTER KI-8 +1B02B ; [.4335.0020.0002] # HENTAIGANA LETTER KU-1 +1B02C ; [.4336.0020.0002] # HENTAIGANA LETTER KU-2 +1B02D ; [.4337.0020.0002] # HENTAIGANA LETTER KU-3 +1B02E ; [.4338.0020.0002] # HENTAIGANA LETTER KU-4 +1B02F ; [.4339.0020.0002] # HENTAIGANA LETTER KU-5 +1B030 ; [.433A.0020.0002] # HENTAIGANA LETTER KU-6 +1B031 ; [.433B.0020.0002] # HENTAIGANA LETTER KU-7 +1B032 ; [.433C.0020.0002] # HENTAIGANA LETTER KE-1 +1B033 ; [.433D.0020.0002] # HENTAIGANA LETTER KE-2 +1B034 ; [.433E.0020.0002] # HENTAIGANA LETTER KE-3 +1B035 ; [.433F.0020.0002] # HENTAIGANA LETTER KE-4 +1B036 ; [.4340.0020.0002] # HENTAIGANA LETTER KE-5 +1B037 ; [.4341.0020.0002] # HENTAIGANA LETTER KE-6 +1B038 ; [.4342.0020.0002] # HENTAIGANA LETTER KO-1 +1B039 ; [.4343.0020.0002] # HENTAIGANA LETTER KO-2 +1B03A ; [.4344.0020.0002] # HENTAIGANA LETTER KO-3 +1B03B ; [.4345.0020.0002] # HENTAIGANA LETTER KO-KI +1B03C ; [.4346.0020.0002] # HENTAIGANA LETTER SA-1 +1B03D ; [.4347.0020.0002] # HENTAIGANA LETTER SA-2 +1B03E ; [.4348.0020.0002] # HENTAIGANA LETTER SA-3 +1B03F ; [.4349.0020.0002] # HENTAIGANA LETTER SA-4 +1B040 ; [.434A.0020.0002] # HENTAIGANA LETTER SA-5 +1B041 ; [.434B.0020.0002] # HENTAIGANA LETTER SA-6 +1B042 ; [.434C.0020.0002] # HENTAIGANA LETTER SA-7 +1B043 ; [.434D.0020.0002] # HENTAIGANA LETTER SA-8 +1B044 ; [.434E.0020.0002] # HENTAIGANA LETTER SI-1 +1B045 ; [.434F.0020.0002] # HENTAIGANA LETTER SI-2 +1B046 ; [.4350.0020.0002] # HENTAIGANA LETTER SI-3 +1B047 ; [.4351.0020.0002] # HENTAIGANA LETTER SI-4 +1B048 ; [.4352.0020.0002] # HENTAIGANA LETTER SI-5 +1B049 ; [.4353.0020.0002] # HENTAIGANA LETTER SI-6 +1B04A ; [.4354.0020.0002] # HENTAIGANA LETTER SU-1 +1B04B ; [.4355.0020.0002] # HENTAIGANA LETTER SU-2 +1B04C ; [.4356.0020.0002] # HENTAIGANA LETTER SU-3 +1B04D ; [.4357.0020.0002] # HENTAIGANA LETTER SU-4 +1B04E ; [.4358.0020.0002] # HENTAIGANA LETTER SU-5 +1B04F ; [.4359.0020.0002] # HENTAIGANA LETTER SU-6 +1B050 ; [.435A.0020.0002] # HENTAIGANA LETTER SU-7 +1B051 ; [.435B.0020.0002] # HENTAIGANA LETTER SU-8 +1B052 ; [.435C.0020.0002] # HENTAIGANA LETTER SE-1 +1B053 ; [.435D.0020.0002] # HENTAIGANA LETTER SE-2 +1B054 ; [.435E.0020.0002] # HENTAIGANA LETTER SE-3 +1B055 ; [.435F.0020.0002] # HENTAIGANA LETTER SE-4 +1B056 ; [.4360.0020.0002] # HENTAIGANA LETTER SE-5 +1B057 ; [.4361.0020.0002] # HENTAIGANA LETTER SO-1 +1B058 ; [.4362.0020.0002] # HENTAIGANA LETTER SO-2 +1B059 ; [.4363.0020.0002] # HENTAIGANA LETTER SO-3 +1B05A ; [.4364.0020.0002] # HENTAIGANA LETTER SO-4 +1B05B ; [.4365.0020.0002] # HENTAIGANA LETTER SO-5 +1B05C ; [.4366.0020.0002] # HENTAIGANA LETTER SO-6 +1B05D ; [.4367.0020.0002] # HENTAIGANA LETTER SO-7 +1B05E ; [.4368.0020.0002] # HENTAIGANA LETTER TA-1 +1B05F ; [.4369.0020.0002] # HENTAIGANA LETTER TA-2 +1B060 ; [.436A.0020.0002] # HENTAIGANA LETTER TA-3 +1B061 ; [.436B.0020.0002] # HENTAIGANA LETTER TA-4 +1B062 ; [.436C.0020.0002] # HENTAIGANA LETTER TI-1 +1B063 ; [.436D.0020.0002] # HENTAIGANA LETTER TI-2 +1B064 ; [.436E.0020.0002] # HENTAIGANA LETTER TI-3 +1B065 ; [.436F.0020.0002] # HENTAIGANA LETTER TI-4 +1B066 ; [.4370.0020.0002] # HENTAIGANA LETTER TI-5 +1B067 ; [.4371.0020.0002] # HENTAIGANA LETTER TI-6 +1B068 ; [.4372.0020.0002] # HENTAIGANA LETTER TI-7 +1B069 ; [.4373.0020.0002] # HENTAIGANA LETTER TU-1 +1B06A ; [.4374.0020.0002] # HENTAIGANA LETTER TU-2 +1B06B ; [.4375.0020.0002] # HENTAIGANA LETTER TU-3 +1B06C ; [.4376.0020.0002] # HENTAIGANA LETTER TU-4 +1B06D ; [.4377.0020.0002] # HENTAIGANA LETTER TU-TO +1B06E ; [.4378.0020.0002] # HENTAIGANA LETTER TE-1 +1B06F ; [.4379.0020.0002] # HENTAIGANA LETTER TE-2 +1B070 ; [.437A.0020.0002] # HENTAIGANA LETTER TE-3 +1B071 ; [.437B.0020.0002] # HENTAIGANA LETTER TE-4 +1B072 ; [.437C.0020.0002] # HENTAIGANA LETTER TE-5 +1B073 ; [.437D.0020.0002] # HENTAIGANA LETTER TE-6 +1B074 ; [.437E.0020.0002] # HENTAIGANA LETTER TE-7 +1B075 ; [.437F.0020.0002] # HENTAIGANA LETTER TE-8 +1B076 ; [.4380.0020.0002] # HENTAIGANA LETTER TE-9 +1B077 ; [.4381.0020.0002] # HENTAIGANA LETTER TO-1 +1B078 ; [.4382.0020.0002] # HENTAIGANA LETTER TO-2 +1B079 ; [.4383.0020.0002] # HENTAIGANA LETTER TO-3 +1B07A ; [.4384.0020.0002] # HENTAIGANA LETTER TO-4 +1B07B ; [.4385.0020.0002] # HENTAIGANA LETTER TO-5 +1B07C ; [.4386.0020.0002] # HENTAIGANA LETTER TO-6 +1B07D ; [.4387.0020.0002] # HENTAIGANA LETTER TO-RA +1B07E ; [.4388.0020.0002] # HENTAIGANA LETTER NA-1 +1B07F ; [.4389.0020.0002] # HENTAIGANA LETTER NA-2 +1B080 ; [.438A.0020.0002] # HENTAIGANA LETTER NA-3 +1B081 ; [.438B.0020.0002] # HENTAIGANA LETTER NA-4 +1B082 ; [.438C.0020.0002] # HENTAIGANA LETTER NA-5 +1B083 ; [.438D.0020.0002] # HENTAIGANA LETTER NA-6 +1B084 ; [.438E.0020.0002] # HENTAIGANA LETTER NA-7 +1B085 ; [.438F.0020.0002] # HENTAIGANA LETTER NA-8 +1B086 ; [.4390.0020.0002] # HENTAIGANA LETTER NA-9 +1B087 ; [.4391.0020.0002] # HENTAIGANA LETTER NI-1 +1B088 ; [.4392.0020.0002] # HENTAIGANA LETTER NI-2 +1B089 ; [.4393.0020.0002] # HENTAIGANA LETTER NI-3 +1B08A ; [.4394.0020.0002] # HENTAIGANA LETTER NI-4 +1B08B ; [.4395.0020.0002] # HENTAIGANA LETTER NI-5 +1B08C ; [.4396.0020.0002] # HENTAIGANA LETTER NI-6 +1B08D ; [.4397.0020.0002] # HENTAIGANA LETTER NI-7 +1B08E ; [.4398.0020.0002] # HENTAIGANA LETTER NI-TE +1B08F ; [.4399.0020.0002] # HENTAIGANA LETTER NU-1 +1B090 ; [.439A.0020.0002] # HENTAIGANA LETTER NU-2 +1B091 ; [.439B.0020.0002] # HENTAIGANA LETTER NU-3 +1B092 ; [.439C.0020.0002] # HENTAIGANA LETTER NE-1 +1B093 ; [.439D.0020.0002] # HENTAIGANA LETTER NE-2 +1B094 ; [.439E.0020.0002] # HENTAIGANA LETTER NE-3 +1B095 ; [.439F.0020.0002] # HENTAIGANA LETTER NE-4 +1B096 ; [.43A0.0020.0002] # HENTAIGANA LETTER NE-5 +1B097 ; [.43A1.0020.0002] # HENTAIGANA LETTER NE-6 +1B098 ; [.43A2.0020.0002] # HENTAIGANA LETTER NE-KO +1B099 ; [.43A3.0020.0002] # HENTAIGANA LETTER NO-1 +1B09A ; [.43A4.0020.0002] # HENTAIGANA LETTER NO-2 +1B09B ; [.43A5.0020.0002] # HENTAIGANA LETTER NO-3 +1B09C ; [.43A6.0020.0002] # HENTAIGANA LETTER NO-4 +1B09D ; [.43A7.0020.0002] # HENTAIGANA LETTER NO-5 +1B09E ; [.43A8.0020.0002] # HENTAIGANA LETTER HA-1 +1B09F ; [.43A9.0020.0002] # HENTAIGANA LETTER HA-2 +1B0A0 ; [.43AA.0020.0002] # HENTAIGANA LETTER HA-3 +1B0A1 ; [.43AB.0020.0002] # HENTAIGANA LETTER HA-4 +1B0A2 ; [.43AC.0020.0002] # HENTAIGANA LETTER HA-5 +1B0A3 ; [.43AD.0020.0002] # HENTAIGANA LETTER HA-6 +1B0A4 ; [.43AE.0020.0002] # HENTAIGANA LETTER HA-7 +1B0A5 ; [.43AF.0020.0002] # HENTAIGANA LETTER HA-8 +1B0A6 ; [.43B0.0020.0002] # HENTAIGANA LETTER HA-9 +1B0A7 ; [.43B1.0020.0002] # HENTAIGANA LETTER HA-10 +1B0A8 ; [.43B2.0020.0002] # HENTAIGANA LETTER HA-11 +1B0A9 ; [.43B3.0020.0002] # HENTAIGANA LETTER HI-1 +1B0AA ; [.43B4.0020.0002] # HENTAIGANA LETTER HI-2 +1B0AB ; [.43B5.0020.0002] # HENTAIGANA LETTER HI-3 +1B0AC ; [.43B6.0020.0002] # HENTAIGANA LETTER HI-4 +1B0AD ; [.43B7.0020.0002] # HENTAIGANA LETTER HI-5 +1B0AE ; [.43B8.0020.0002] # HENTAIGANA LETTER HI-6 +1B0AF ; [.43B9.0020.0002] # HENTAIGANA LETTER HI-7 +1B0B0 ; [.43BA.0020.0002] # HENTAIGANA LETTER HU-1 +1B0B1 ; [.43BB.0020.0002] # HENTAIGANA LETTER HU-2 +1B0B2 ; [.43BC.0020.0002] # HENTAIGANA LETTER HU-3 +1B0B3 ; [.43BD.0020.0002] # HENTAIGANA LETTER HE-1 +1B0B4 ; [.43BE.0020.0002] # HENTAIGANA LETTER HE-2 +1B0B5 ; [.43BF.0020.0002] # HENTAIGANA LETTER HE-3 +1B0B6 ; [.43C0.0020.0002] # HENTAIGANA LETTER HE-4 +1B0B7 ; [.43C1.0020.0002] # HENTAIGANA LETTER HE-5 +1B0B8 ; [.43C2.0020.0002] # HENTAIGANA LETTER HE-6 +1B0B9 ; [.43C3.0020.0002] # HENTAIGANA LETTER HE-7 +1B0BA ; [.43C4.0020.0002] # HENTAIGANA LETTER HO-1 +1B0BB ; [.43C5.0020.0002] # HENTAIGANA LETTER HO-2 +1B0BC ; [.43C6.0020.0002] # HENTAIGANA LETTER HO-3 +1B0BD ; [.43C7.0020.0002] # HENTAIGANA LETTER HO-4 +1B0BE ; [.43C8.0020.0002] # HENTAIGANA LETTER HO-5 +1B0BF ; [.43C9.0020.0002] # HENTAIGANA LETTER HO-6 +1B0C0 ; [.43CA.0020.0002] # HENTAIGANA LETTER HO-7 +1B0C1 ; [.43CB.0020.0002] # HENTAIGANA LETTER HO-8 +1B0C2 ; [.43CC.0020.0002] # HENTAIGANA LETTER MA-1 +1B0C3 ; [.43CD.0020.0002] # HENTAIGANA LETTER MA-2 +1B0C4 ; [.43CE.0020.0002] # HENTAIGANA LETTER MA-3 +1B0C5 ; [.43CF.0020.0002] # HENTAIGANA LETTER MA-4 +1B0C6 ; [.43D0.0020.0002] # HENTAIGANA LETTER MA-5 +1B0C7 ; [.43D1.0020.0002] # HENTAIGANA LETTER MA-6 +1B0C8 ; [.43D2.0020.0002] # HENTAIGANA LETTER MA-7 +1B0C9 ; [.43D3.0020.0002] # HENTAIGANA LETTER MI-1 +1B0CA ; [.43D4.0020.0002] # HENTAIGANA LETTER MI-2 +1B0CB ; [.43D5.0020.0002] # HENTAIGANA LETTER MI-3 +1B0CC ; [.43D6.0020.0002] # HENTAIGANA LETTER MI-4 +1B0CD ; [.43D7.0020.0002] # HENTAIGANA LETTER MI-5 +1B0CE ; [.43D8.0020.0002] # HENTAIGANA LETTER MI-6 +1B0CF ; [.43D9.0020.0002] # HENTAIGANA LETTER MI-7 +1B0D0 ; [.43DA.0020.0002] # HENTAIGANA LETTER MU-1 +1B0D1 ; [.43DB.0020.0002] # HENTAIGANA LETTER MU-2 +1B0D2 ; [.43DC.0020.0002] # HENTAIGANA LETTER MU-3 +1B0D3 ; [.43DD.0020.0002] # HENTAIGANA LETTER MU-4 +1B0D4 ; [.43DE.0020.0002] # HENTAIGANA LETTER ME-1 +1B0D5 ; [.43DF.0020.0002] # HENTAIGANA LETTER ME-2 +1B0D6 ; [.43E0.0020.0002] # HENTAIGANA LETTER ME-MA +1B0D7 ; [.43E1.0020.0002] # HENTAIGANA LETTER MO-1 +1B0D8 ; [.43E2.0020.0002] # HENTAIGANA LETTER MO-2 +1B0D9 ; [.43E3.0020.0002] # HENTAIGANA LETTER MO-3 +1B0DA ; [.43E4.0020.0002] # HENTAIGANA LETTER MO-4 +1B0DB ; [.43E5.0020.0002] # HENTAIGANA LETTER MO-5 +1B0DC ; [.43E6.0020.0002] # HENTAIGANA LETTER MO-6 +1B0DD ; [.43E7.0020.0002] # HENTAIGANA LETTER YA-1 +1B0DE ; [.43E8.0020.0002] # HENTAIGANA LETTER YA-2 +1B0DF ; [.43E9.0020.0002] # HENTAIGANA LETTER YA-3 +1B0E0 ; [.43EA.0020.0002] # HENTAIGANA LETTER YA-4 +1B0E1 ; [.43EB.0020.0002] # HENTAIGANA LETTER YA-5 +1B0E2 ; [.43EC.0020.0002] # HENTAIGANA LETTER YA-YO +1B0E3 ; [.43ED.0020.0002] # HENTAIGANA LETTER YU-1 +1B0E4 ; [.43EE.0020.0002] # HENTAIGANA LETTER YU-2 +1B0E5 ; [.43EF.0020.0002] # HENTAIGANA LETTER YU-3 +1B0E6 ; [.43F0.0020.0002] # HENTAIGANA LETTER YU-4 +1B0E7 ; [.43F1.0020.0002] # HENTAIGANA LETTER YO-1 +1B0E8 ; [.43F2.0020.0002] # HENTAIGANA LETTER YO-2 +1B0E9 ; [.43F3.0020.0002] # HENTAIGANA LETTER YO-3 +1B0EA ; [.43F4.0020.0002] # HENTAIGANA LETTER YO-4 +1B0EB ; [.43F5.0020.0002] # HENTAIGANA LETTER YO-5 +1B0EC ; [.43F6.0020.0002] # HENTAIGANA LETTER YO-6 +1B0ED ; [.43F7.0020.0002] # HENTAIGANA LETTER RA-1 +1B0EE ; [.43F8.0020.0002] # HENTAIGANA LETTER RA-2 +1B0EF ; [.43F9.0020.0002] # HENTAIGANA LETTER RA-3 +1B0F0 ; [.43FA.0020.0002] # HENTAIGANA LETTER RA-4 +1B0F1 ; [.43FB.0020.0002] # HENTAIGANA LETTER RI-1 +1B0F2 ; [.43FC.0020.0002] # HENTAIGANA LETTER RI-2 +1B0F3 ; [.43FD.0020.0002] # HENTAIGANA LETTER RI-3 +1B0F4 ; [.43FE.0020.0002] # HENTAIGANA LETTER RI-4 +1B0F5 ; [.43FF.0020.0002] # HENTAIGANA LETTER RI-5 +1B0F6 ; [.4400.0020.0002] # HENTAIGANA LETTER RI-6 +1B0F7 ; [.4401.0020.0002] # HENTAIGANA LETTER RI-7 +1B0F8 ; [.4402.0020.0002] # HENTAIGANA LETTER RU-1 +1B0F9 ; [.4403.0020.0002] # HENTAIGANA LETTER RU-2 +1B0FA ; [.4404.0020.0002] # HENTAIGANA LETTER RU-3 +1B0FB ; [.4405.0020.0002] # HENTAIGANA LETTER RU-4 +1B0FC ; [.4406.0020.0002] # HENTAIGANA LETTER RU-5 +1B0FD ; [.4407.0020.0002] # HENTAIGANA LETTER RU-6 +1B0FE ; [.4408.0020.0002] # HENTAIGANA LETTER RE-1 +1B0FF ; [.4409.0020.0002] # HENTAIGANA LETTER RE-2 +1B100 ; [.440A.0020.0002] # HENTAIGANA LETTER RE-3 +1B101 ; [.440B.0020.0002] # HENTAIGANA LETTER RE-4 +1B102 ; [.440C.0020.0002] # HENTAIGANA LETTER RO-1 +1B103 ; [.440D.0020.0002] # HENTAIGANA LETTER RO-2 +1B104 ; [.440E.0020.0002] # HENTAIGANA LETTER RO-3 +1B105 ; [.440F.0020.0002] # HENTAIGANA LETTER RO-4 +1B106 ; [.4410.0020.0002] # HENTAIGANA LETTER RO-5 +1B107 ; [.4411.0020.0002] # HENTAIGANA LETTER RO-6 +1B108 ; [.4412.0020.0002] # HENTAIGANA LETTER WA-1 +1B109 ; [.4413.0020.0002] # HENTAIGANA LETTER WA-2 +1B10A ; [.4414.0020.0002] # HENTAIGANA LETTER WA-3 +1B10B ; [.4415.0020.0002] # HENTAIGANA LETTER WA-4 +1B10C ; [.4416.0020.0002] # HENTAIGANA LETTER WA-5 +1B10D ; [.4417.0020.0002] # HENTAIGANA LETTER WI-1 +1B10E ; [.4418.0020.0002] # HENTAIGANA LETTER WI-2 +1B10F ; [.4419.0020.0002] # HENTAIGANA LETTER WI-3 +1B110 ; [.441A.0020.0002] # HENTAIGANA LETTER WI-4 +1B111 ; [.441B.0020.0002] # HENTAIGANA LETTER WI-5 +1B112 ; [.441C.0020.0002] # HENTAIGANA LETTER WE-1 +1B113 ; [.441D.0020.0002] # HENTAIGANA LETTER WE-2 +1B114 ; [.441E.0020.0002] # HENTAIGANA LETTER WE-3 +1B115 ; [.441F.0020.0002] # HENTAIGANA LETTER WE-4 +1B116 ; [.4420.0020.0002] # HENTAIGANA LETTER WO-1 +1B117 ; [.4421.0020.0002] # HENTAIGANA LETTER WO-2 +1B118 ; [.4422.0020.0002] # HENTAIGANA LETTER WO-3 +1B119 ; [.4423.0020.0002] # HENTAIGANA LETTER WO-4 +1B11A ; [.4424.0020.0002] # HENTAIGANA LETTER WO-5 +1B11B ; [.4425.0020.0002] # HENTAIGANA LETTER WO-6 +1B11C ; [.4426.0020.0002] # HENTAIGANA LETTER WO-7 +1B11D ; [.4427.0020.0002] # HENTAIGANA LETTER N-MU-MO-1 +1B11E ; [.4428.0020.0002] # HENTAIGANA LETTER N-MU-MO-2 +3105 ; [.4429.0020.0002] # BOPOMOFO LETTER B +31A0 ; [.4429.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER BU +3106 ; [.442A.0020.0002] # BOPOMOFO LETTER P +31B4 ; [.442A.0020.0019] # BOPOMOFO FINAL LETTER P +3107 ; [.442B.0020.0002] # BOPOMOFO LETTER M +31AC ; [.442C.0020.0002] # BOPOMOFO LETTER IM +3108 ; [.442D.0020.0002] # BOPOMOFO LETTER F +312A ; [.442E.0020.0002] # BOPOMOFO LETTER V +3109 ; [.442F.0020.0002] # BOPOMOFO LETTER D +310A ; [.4430.0020.0002] # BOPOMOFO LETTER T +31B5 ; [.4430.0020.0019] # BOPOMOFO FINAL LETTER T +310B ; [.4431.0020.0002] # BOPOMOFO LETTER N +312F ; [.4432.0020.0002] # BOPOMOFO LETTER NN +310C ; [.4433.0020.0002] # BOPOMOFO LETTER L +310D ; [.4434.0020.0002] # BOPOMOFO LETTER G +31BB ; [.4434.0020.0019] # BOPOMOFO FINAL LETTER G +31A3 ; [.4434.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER GU +310E ; [.4435.0020.0002] # BOPOMOFO LETTER K +31B6 ; [.4435.0020.0019] # BOPOMOFO FINAL LETTER K +312B ; [.4436.0020.0002] # BOPOMOFO LETTER NG +31AD ; [.4437.0020.0002] # BOPOMOFO LETTER NGG +310F ; [.4438.0020.0002] # BOPOMOFO LETTER H +31B7 ; [.4438.0020.0019] # BOPOMOFO FINAL LETTER H +3110 ; [.4439.0020.0002] # BOPOMOFO LETTER J +31A2 ; [.4439.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER JI +3111 ; [.443A.0020.0002] # BOPOMOFO LETTER Q +3112 ; [.443B.0020.0002] # BOPOMOFO LETTER X +312C ; [.443C.0020.0002] # BOPOMOFO LETTER GN +31BC ; [.443D.0020.0002] # BOPOMOFO LETTER GW +31BD ; [.443E.0020.0002] # BOPOMOFO LETTER KW +3113 ; [.443F.0020.0002] # BOPOMOFO LETTER ZH +3114 ; [.4440.0020.0002] # BOPOMOFO LETTER CH +3115 ; [.4441.0020.0002] # BOPOMOFO LETTER SH +3116 ; [.4442.0020.0002] # BOPOMOFO LETTER R +3117 ; [.4443.0020.0002] # BOPOMOFO LETTER Z +31A1 ; [.4443.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER ZI +3118 ; [.4444.0020.0002] # BOPOMOFO LETTER C +3119 ; [.4445.0020.0002] # BOPOMOFO LETTER S +31B8 ; [.4446.0020.0002] # BOPOMOFO LETTER GH +31B9 ; [.4447.0020.0002] # BOPOMOFO LETTER LH +31BA ; [.4448.0020.0002] # BOPOMOFO LETTER ZY +311A ; [.4449.0020.0002] # BOPOMOFO LETTER A +31A9 ; [.4449.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER ANN +311B ; [.444A.0020.0002] # BOPOMOFO LETTER O +31A7 ; [.444A.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER ONN +31A6 ; [.444B.0020.0002] # BOPOMOFO LETTER OO +311C ; [.444C.0020.0002] # BOPOMOFO LETTER E +312E ; [.444C.0020.0004] # BOPOMOFO LETTER O WITH DOT ABOVE +311D ; [.444D.0020.0002] # BOPOMOFO LETTER EH +31A4 ; [.444E.0020.0002] # BOPOMOFO LETTER EE +31A5 ; [.444E.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER ENN +311E ; [.444F.0020.0002] # BOPOMOFO LETTER AI +31AE ; [.444F.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER AINN +311F ; [.4450.0020.0002] # BOPOMOFO LETTER EI +3120 ; [.4451.0020.0002] # BOPOMOFO LETTER AU +31AF ; [.4451.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER AUNN +3121 ; [.4452.0020.0002] # BOPOMOFO LETTER OU +3122 ; [.4453.0020.0002] # BOPOMOFO LETTER AN +3123 ; [.4454.0020.0002] # BOPOMOFO LETTER EN +3124 ; [.4455.0020.0002] # BOPOMOFO LETTER ANG +31B2 ; [.4456.0020.0002] # BOPOMOFO LETTER ONG +3125 ; [.4457.0020.0002] # BOPOMOFO LETTER ENG +31B0 ; [.4458.0020.0002] # BOPOMOFO LETTER AM +31B1 ; [.4459.0020.0002] # BOPOMOFO LETTER OM +3126 ; [.445A.0020.0002] # BOPOMOFO LETTER ER +3127 ; [.445B.0020.0002] # BOPOMOFO LETTER I +31AA ; [.445B.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER INN +31B3 ; [.445B.0020.0016][.0000.0119.0016] # BOPOMOFO LETTER INNN +3128 ; [.445C.0020.0002] # BOPOMOFO LETTER U +31AB ; [.445C.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER UNN +31A8 ; [.445C.0020.0004][.0000.011A.0004] # BOPOMOFO LETTER IR +3129 ; [.445D.0020.0002] # BOPOMOFO LETTER IU +312D ; [.445E.0020.0002] # BOPOMOFO LETTER IH +31BE ; [.445F.0020.0002] # BOPOMOFO LETTER OE +31BF ; [.4460.0020.0002] # BOPOMOFO LETTER AH +A000 ; [.4461.0020.0002] # YI SYLLABLE IT +A001 ; [.4462.0020.0002] # YI SYLLABLE IX +A002 ; [.4463.0020.0002] # YI SYLLABLE I +A003 ; [.4464.0020.0002] # YI SYLLABLE IP +A004 ; [.4465.0020.0002] # YI SYLLABLE IET +A005 ; [.4466.0020.0002] # YI SYLLABLE IEX +A006 ; [.4467.0020.0002] # YI SYLLABLE IE +A007 ; [.4468.0020.0002] # YI SYLLABLE IEP +A008 ; [.4469.0020.0002] # YI SYLLABLE AT +A009 ; [.446A.0020.0002] # YI SYLLABLE AX +A00A ; [.446B.0020.0002] # YI SYLLABLE A +A00B ; [.446C.0020.0002] # YI SYLLABLE AP +A00C ; [.446D.0020.0002] # YI SYLLABLE UOX +A00D ; [.446E.0020.0002] # YI SYLLABLE UO +A00E ; [.446F.0020.0002] # YI SYLLABLE UOP +A00F ; [.4470.0020.0002] # YI SYLLABLE OT +A010 ; [.4471.0020.0002] # YI SYLLABLE OX +A011 ; [.4472.0020.0002] # YI SYLLABLE O +A012 ; [.4473.0020.0002] # YI SYLLABLE OP +A013 ; [.4474.0020.0002] # YI SYLLABLE EX +A014 ; [.4475.0020.0002] # YI SYLLABLE E +A015 ; [.4476.0020.0002] # YI SYLLABLE WU +A016 ; [.4477.0020.0002] # YI SYLLABLE BIT +A017 ; [.4478.0020.0002] # YI SYLLABLE BIX +A018 ; [.4479.0020.0002] # YI SYLLABLE BI +A019 ; [.447A.0020.0002] # YI SYLLABLE BIP +A01A ; [.447B.0020.0002] # YI SYLLABLE BIET +A01B ; [.447C.0020.0002] # YI SYLLABLE BIEX +A01C ; [.447D.0020.0002] # YI SYLLABLE BIE +A01D ; [.447E.0020.0002] # YI SYLLABLE BIEP +A01E ; [.447F.0020.0002] # YI SYLLABLE BAT +A01F ; [.4480.0020.0002] # YI SYLLABLE BAX +A020 ; [.4481.0020.0002] # YI SYLLABLE BA +A021 ; [.4482.0020.0002] # YI SYLLABLE BAP +A022 ; [.4483.0020.0002] # YI SYLLABLE BUOX +A023 ; [.4484.0020.0002] # YI SYLLABLE BUO +A024 ; [.4485.0020.0002] # YI SYLLABLE BUOP +A025 ; [.4486.0020.0002] # YI SYLLABLE BOT +A026 ; [.4487.0020.0002] # YI SYLLABLE BOX +A027 ; [.4488.0020.0002] # YI SYLLABLE BO +A028 ; [.4489.0020.0002] # YI SYLLABLE BOP +A029 ; [.448A.0020.0002] # YI SYLLABLE BEX +A02A ; [.448B.0020.0002] # YI SYLLABLE BE +A02B ; [.448C.0020.0002] # YI SYLLABLE BEP +A02C ; [.448D.0020.0002] # YI SYLLABLE BUT +A02D ; [.448E.0020.0002] # YI SYLLABLE BUX +A02E ; [.448F.0020.0002] # YI SYLLABLE BU +A02F ; [.4490.0020.0002] # YI SYLLABLE BUP +A030 ; [.4491.0020.0002] # YI SYLLABLE BURX +A031 ; [.4492.0020.0002] # YI SYLLABLE BUR +A032 ; [.4493.0020.0002] # YI SYLLABLE BYT +A033 ; [.4494.0020.0002] # YI SYLLABLE BYX +A034 ; [.4495.0020.0002] # YI SYLLABLE BY +A035 ; [.4496.0020.0002] # YI SYLLABLE BYP +A036 ; [.4497.0020.0002] # YI SYLLABLE BYRX +A037 ; [.4498.0020.0002] # YI SYLLABLE BYR +A038 ; [.4499.0020.0002] # YI SYLLABLE PIT +A039 ; [.449A.0020.0002] # YI SYLLABLE PIX +A03A ; [.449B.0020.0002] # YI SYLLABLE PI +A03B ; [.449C.0020.0002] # YI SYLLABLE PIP +A03C ; [.449D.0020.0002] # YI SYLLABLE PIEX +A03D ; [.449E.0020.0002] # YI SYLLABLE PIE +A03E ; [.449F.0020.0002] # YI SYLLABLE PIEP +A03F ; [.44A0.0020.0002] # YI SYLLABLE PAT +A040 ; [.44A1.0020.0002] # YI SYLLABLE PAX +A041 ; [.44A2.0020.0002] # YI SYLLABLE PA +A042 ; [.44A3.0020.0002] # YI SYLLABLE PAP +A043 ; [.44A4.0020.0002] # YI SYLLABLE PUOX +A044 ; [.44A5.0020.0002] # YI SYLLABLE PUO +A045 ; [.44A6.0020.0002] # YI SYLLABLE PUOP +A046 ; [.44A7.0020.0002] # YI SYLLABLE POT +A047 ; [.44A8.0020.0002] # YI SYLLABLE POX +A048 ; [.44A9.0020.0002] # YI SYLLABLE PO +A049 ; [.44AA.0020.0002] # YI SYLLABLE POP +A04A ; [.44AB.0020.0002] # YI SYLLABLE PUT +A04B ; [.44AC.0020.0002] # YI SYLLABLE PUX +A04C ; [.44AD.0020.0002] # YI SYLLABLE PU +A04D ; [.44AE.0020.0002] # YI SYLLABLE PUP +A04E ; [.44AF.0020.0002] # YI SYLLABLE PURX +A04F ; [.44B0.0020.0002] # YI SYLLABLE PUR +A050 ; [.44B1.0020.0002] # YI SYLLABLE PYT +A051 ; [.44B2.0020.0002] # YI SYLLABLE PYX +A052 ; [.44B3.0020.0002] # YI SYLLABLE PY +A053 ; [.44B4.0020.0002] # YI SYLLABLE PYP +A054 ; [.44B5.0020.0002] # YI SYLLABLE PYRX +A055 ; [.44B6.0020.0002] # YI SYLLABLE PYR +A056 ; [.44B7.0020.0002] # YI SYLLABLE BBIT +A057 ; [.44B8.0020.0002] # YI SYLLABLE BBIX +A058 ; [.44B9.0020.0002] # YI SYLLABLE BBI +A059 ; [.44BA.0020.0002] # YI SYLLABLE BBIP +A05A ; [.44BB.0020.0002] # YI SYLLABLE BBIET +A05B ; [.44BC.0020.0002] # YI SYLLABLE BBIEX +A05C ; [.44BD.0020.0002] # YI SYLLABLE BBIE +A05D ; [.44BE.0020.0002] # YI SYLLABLE BBIEP +A05E ; [.44BF.0020.0002] # YI SYLLABLE BBAT +A05F ; [.44C0.0020.0002] # YI SYLLABLE BBAX +A060 ; [.44C1.0020.0002] # YI SYLLABLE BBA +A061 ; [.44C2.0020.0002] # YI SYLLABLE BBAP +A062 ; [.44C3.0020.0002] # YI SYLLABLE BBUOX +A063 ; [.44C4.0020.0002] # YI SYLLABLE BBUO +A064 ; [.44C5.0020.0002] # YI SYLLABLE BBUOP +A065 ; [.44C6.0020.0002] # YI SYLLABLE BBOT +A066 ; [.44C7.0020.0002] # YI SYLLABLE BBOX +A067 ; [.44C8.0020.0002] # YI SYLLABLE BBO +A068 ; [.44C9.0020.0002] # YI SYLLABLE BBOP +A069 ; [.44CA.0020.0002] # YI SYLLABLE BBEX +A06A ; [.44CB.0020.0002] # YI SYLLABLE BBE +A06B ; [.44CC.0020.0002] # YI SYLLABLE BBEP +A06C ; [.44CD.0020.0002] # YI SYLLABLE BBUT +A06D ; [.44CE.0020.0002] # YI SYLLABLE BBUX +A06E ; [.44CF.0020.0002] # YI SYLLABLE BBU +A06F ; [.44D0.0020.0002] # YI SYLLABLE BBUP +A070 ; [.44D1.0020.0002] # YI SYLLABLE BBURX +A071 ; [.44D2.0020.0002] # YI SYLLABLE BBUR +A072 ; [.44D3.0020.0002] # YI SYLLABLE BBYT +A073 ; [.44D4.0020.0002] # YI SYLLABLE BBYX +A074 ; [.44D5.0020.0002] # YI SYLLABLE BBY +A075 ; [.44D6.0020.0002] # YI SYLLABLE BBYP +A076 ; [.44D7.0020.0002] # YI SYLLABLE NBIT +A077 ; [.44D8.0020.0002] # YI SYLLABLE NBIX +A078 ; [.44D9.0020.0002] # YI SYLLABLE NBI +A079 ; [.44DA.0020.0002] # YI SYLLABLE NBIP +A07A ; [.44DB.0020.0002] # YI SYLLABLE NBIEX +A07B ; [.44DC.0020.0002] # YI SYLLABLE NBIE +A07C ; [.44DD.0020.0002] # YI SYLLABLE NBIEP +A07D ; [.44DE.0020.0002] # YI SYLLABLE NBAT +A07E ; [.44DF.0020.0002] # YI SYLLABLE NBAX +A07F ; [.44E0.0020.0002] # YI SYLLABLE NBA +A080 ; [.44E1.0020.0002] # YI SYLLABLE NBAP +A081 ; [.44E2.0020.0002] # YI SYLLABLE NBOT +A082 ; [.44E3.0020.0002] # YI SYLLABLE NBOX +A083 ; [.44E4.0020.0002] # YI SYLLABLE NBO +A084 ; [.44E5.0020.0002] # YI SYLLABLE NBOP +A085 ; [.44E6.0020.0002] # YI SYLLABLE NBUT +A086 ; [.44E7.0020.0002] # YI SYLLABLE NBUX +A087 ; [.44E8.0020.0002] # YI SYLLABLE NBU +A088 ; [.44E9.0020.0002] # YI SYLLABLE NBUP +A089 ; [.44EA.0020.0002] # YI SYLLABLE NBURX +A08A ; [.44EB.0020.0002] # YI SYLLABLE NBUR +A08B ; [.44EC.0020.0002] # YI SYLLABLE NBYT +A08C ; [.44ED.0020.0002] # YI SYLLABLE NBYX +A08D ; [.44EE.0020.0002] # YI SYLLABLE NBY +A08E ; [.44EF.0020.0002] # YI SYLLABLE NBYP +A08F ; [.44F0.0020.0002] # YI SYLLABLE NBYRX +A090 ; [.44F1.0020.0002] # YI SYLLABLE NBYR +A091 ; [.44F2.0020.0002] # YI SYLLABLE HMIT +A092 ; [.44F3.0020.0002] # YI SYLLABLE HMIX +A093 ; [.44F4.0020.0002] # YI SYLLABLE HMI +A094 ; [.44F5.0020.0002] # YI SYLLABLE HMIP +A095 ; [.44F6.0020.0002] # YI SYLLABLE HMIEX +A096 ; [.44F7.0020.0002] # YI SYLLABLE HMIE +A097 ; [.44F8.0020.0002] # YI SYLLABLE HMIEP +A098 ; [.44F9.0020.0002] # YI SYLLABLE HMAT +A099 ; [.44FA.0020.0002] # YI SYLLABLE HMAX +A09A ; [.44FB.0020.0002] # YI SYLLABLE HMA +A09B ; [.44FC.0020.0002] # YI SYLLABLE HMAP +A09C ; [.44FD.0020.0002] # YI SYLLABLE HMUOX +A09D ; [.44FE.0020.0002] # YI SYLLABLE HMUO +A09E ; [.44FF.0020.0002] # YI SYLLABLE HMUOP +A09F ; [.4500.0020.0002] # YI SYLLABLE HMOT +A0A0 ; [.4501.0020.0002] # YI SYLLABLE HMOX +A0A1 ; [.4502.0020.0002] # YI SYLLABLE HMO +A0A2 ; [.4503.0020.0002] # YI SYLLABLE HMOP +A0A3 ; [.4504.0020.0002] # YI SYLLABLE HMUT +A0A4 ; [.4505.0020.0002] # YI SYLLABLE HMUX +A0A5 ; [.4506.0020.0002] # YI SYLLABLE HMU +A0A6 ; [.4507.0020.0002] # YI SYLLABLE HMUP +A0A7 ; [.4508.0020.0002] # YI SYLLABLE HMURX +A0A8 ; [.4509.0020.0002] # YI SYLLABLE HMUR +A0A9 ; [.450A.0020.0002] # YI SYLLABLE HMYX +A0AA ; [.450B.0020.0002] # YI SYLLABLE HMY +A0AB ; [.450C.0020.0002] # YI SYLLABLE HMYP +A0AC ; [.450D.0020.0002] # YI SYLLABLE HMYRX +A0AD ; [.450E.0020.0002] # YI SYLLABLE HMYR +A0AE ; [.450F.0020.0002] # YI SYLLABLE MIT +A0AF ; [.4510.0020.0002] # YI SYLLABLE MIX +A0B0 ; [.4511.0020.0002] # YI SYLLABLE MI +A0B1 ; [.4512.0020.0002] # YI SYLLABLE MIP +A0B2 ; [.4513.0020.0002] # YI SYLLABLE MIEX +A0B3 ; [.4514.0020.0002] # YI SYLLABLE MIE +A0B4 ; [.4515.0020.0002] # YI SYLLABLE MIEP +A0B5 ; [.4516.0020.0002] # YI SYLLABLE MAT +A0B6 ; [.4517.0020.0002] # YI SYLLABLE MAX +A0B7 ; [.4518.0020.0002] # YI SYLLABLE MA +A0B8 ; [.4519.0020.0002] # YI SYLLABLE MAP +A0B9 ; [.451A.0020.0002] # YI SYLLABLE MUOT +A0BA ; [.451B.0020.0002] # YI SYLLABLE MUOX +A0BB ; [.451C.0020.0002] # YI SYLLABLE MUO +A0BC ; [.451D.0020.0002] # YI SYLLABLE MUOP +A0BD ; [.451E.0020.0002] # YI SYLLABLE MOT +A0BE ; [.451F.0020.0002] # YI SYLLABLE MOX +A0BF ; [.4520.0020.0002] # YI SYLLABLE MO +A0C0 ; [.4521.0020.0002] # YI SYLLABLE MOP +A0C1 ; [.4522.0020.0002] # YI SYLLABLE MEX +A0C2 ; [.4523.0020.0002] # YI SYLLABLE ME +A0C3 ; [.4524.0020.0002] # YI SYLLABLE MUT +A0C4 ; [.4525.0020.0002] # YI SYLLABLE MUX +A0C5 ; [.4526.0020.0002] # YI SYLLABLE MU +A0C6 ; [.4527.0020.0002] # YI SYLLABLE MUP +A0C7 ; [.4528.0020.0002] # YI SYLLABLE MURX +A0C8 ; [.4529.0020.0002] # YI SYLLABLE MUR +A0C9 ; [.452A.0020.0002] # YI SYLLABLE MYT +A0CA ; [.452B.0020.0002] # YI SYLLABLE MYX +A0CB ; [.452C.0020.0002] # YI SYLLABLE MY +A0CC ; [.452D.0020.0002] # YI SYLLABLE MYP +A0CD ; [.452E.0020.0002] # YI SYLLABLE FIT +A0CE ; [.452F.0020.0002] # YI SYLLABLE FIX +A0CF ; [.4530.0020.0002] # YI SYLLABLE FI +A0D0 ; [.4531.0020.0002] # YI SYLLABLE FIP +A0D1 ; [.4532.0020.0002] # YI SYLLABLE FAT +A0D2 ; [.4533.0020.0002] # YI SYLLABLE FAX +A0D3 ; [.4534.0020.0002] # YI SYLLABLE FA +A0D4 ; [.4535.0020.0002] # YI SYLLABLE FAP +A0D5 ; [.4536.0020.0002] # YI SYLLABLE FOX +A0D6 ; [.4537.0020.0002] # YI SYLLABLE FO +A0D7 ; [.4538.0020.0002] # YI SYLLABLE FOP +A0D8 ; [.4539.0020.0002] # YI SYLLABLE FUT +A0D9 ; [.453A.0020.0002] # YI SYLLABLE FUX +A0DA ; [.453B.0020.0002] # YI SYLLABLE FU +A0DB ; [.453C.0020.0002] # YI SYLLABLE FUP +A0DC ; [.453D.0020.0002] # YI SYLLABLE FURX +A0DD ; [.453E.0020.0002] # YI SYLLABLE FUR +A0DE ; [.453F.0020.0002] # YI SYLLABLE FYT +A0DF ; [.4540.0020.0002] # YI SYLLABLE FYX +A0E0 ; [.4541.0020.0002] # YI SYLLABLE FY +A0E1 ; [.4542.0020.0002] # YI SYLLABLE FYP +A0E2 ; [.4543.0020.0002] # YI SYLLABLE VIT +A0E3 ; [.4544.0020.0002] # YI SYLLABLE VIX +A0E4 ; [.4545.0020.0002] # YI SYLLABLE VI +A0E5 ; [.4546.0020.0002] # YI SYLLABLE VIP +A0E6 ; [.4547.0020.0002] # YI SYLLABLE VIET +A0E7 ; [.4548.0020.0002] # YI SYLLABLE VIEX +A0E8 ; [.4549.0020.0002] # YI SYLLABLE VIE +A0E9 ; [.454A.0020.0002] # YI SYLLABLE VIEP +A0EA ; [.454B.0020.0002] # YI SYLLABLE VAT +A0EB ; [.454C.0020.0002] # YI SYLLABLE VAX +A0EC ; [.454D.0020.0002] # YI SYLLABLE VA +A0ED ; [.454E.0020.0002] # YI SYLLABLE VAP +A0EE ; [.454F.0020.0002] # YI SYLLABLE VOT +A0EF ; [.4550.0020.0002] # YI SYLLABLE VOX +A0F0 ; [.4551.0020.0002] # YI SYLLABLE VO +A0F1 ; [.4552.0020.0002] # YI SYLLABLE VOP +A0F2 ; [.4553.0020.0002] # YI SYLLABLE VEX +A0F3 ; [.4554.0020.0002] # YI SYLLABLE VEP +A0F4 ; [.4555.0020.0002] # YI SYLLABLE VUT +A0F5 ; [.4556.0020.0002] # YI SYLLABLE VUX +A0F6 ; [.4557.0020.0002] # YI SYLLABLE VU +A0F7 ; [.4558.0020.0002] # YI SYLLABLE VUP +A0F8 ; [.4559.0020.0002] # YI SYLLABLE VURX +A0F9 ; [.455A.0020.0002] # YI SYLLABLE VUR +A0FA ; [.455B.0020.0002] # YI SYLLABLE VYT +A0FB ; [.455C.0020.0002] # YI SYLLABLE VYX +A0FC ; [.455D.0020.0002] # YI SYLLABLE VY +A0FD ; [.455E.0020.0002] # YI SYLLABLE VYP +A0FE ; [.455F.0020.0002] # YI SYLLABLE VYRX +A0FF ; [.4560.0020.0002] # YI SYLLABLE VYR +A100 ; [.4561.0020.0002] # YI SYLLABLE DIT +A101 ; [.4562.0020.0002] # YI SYLLABLE DIX +A102 ; [.4563.0020.0002] # YI SYLLABLE DI +A103 ; [.4564.0020.0002] # YI SYLLABLE DIP +A104 ; [.4565.0020.0002] # YI SYLLABLE DIEX +A105 ; [.4566.0020.0002] # YI SYLLABLE DIE +A106 ; [.4567.0020.0002] # YI SYLLABLE DIEP +A107 ; [.4568.0020.0002] # YI SYLLABLE DAT +A108 ; [.4569.0020.0002] # YI SYLLABLE DAX +A109 ; [.456A.0020.0002] # YI SYLLABLE DA +A10A ; [.456B.0020.0002] # YI SYLLABLE DAP +A10B ; [.456C.0020.0002] # YI SYLLABLE DUOX +A10C ; [.456D.0020.0002] # YI SYLLABLE DUO +A10D ; [.456E.0020.0002] # YI SYLLABLE DOT +A10E ; [.456F.0020.0002] # YI SYLLABLE DOX +A10F ; [.4570.0020.0002] # YI SYLLABLE DO +A110 ; [.4571.0020.0002] # YI SYLLABLE DOP +A111 ; [.4572.0020.0002] # YI SYLLABLE DEX +A112 ; [.4573.0020.0002] # YI SYLLABLE DE +A113 ; [.4574.0020.0002] # YI SYLLABLE DEP +A114 ; [.4575.0020.0002] # YI SYLLABLE DUT +A115 ; [.4576.0020.0002] # YI SYLLABLE DUX +A116 ; [.4577.0020.0002] # YI SYLLABLE DU +A117 ; [.4578.0020.0002] # YI SYLLABLE DUP +A118 ; [.4579.0020.0002] # YI SYLLABLE DURX +A119 ; [.457A.0020.0002] # YI SYLLABLE DUR +A11A ; [.457B.0020.0002] # YI SYLLABLE TIT +A11B ; [.457C.0020.0002] # YI SYLLABLE TIX +A11C ; [.457D.0020.0002] # YI SYLLABLE TI +A11D ; [.457E.0020.0002] # YI SYLLABLE TIP +A11E ; [.457F.0020.0002] # YI SYLLABLE TIEX +A11F ; [.4580.0020.0002] # YI SYLLABLE TIE +A120 ; [.4581.0020.0002] # YI SYLLABLE TIEP +A121 ; [.4582.0020.0002] # YI SYLLABLE TAT +A122 ; [.4583.0020.0002] # YI SYLLABLE TAX +A123 ; [.4584.0020.0002] # YI SYLLABLE TA +A124 ; [.4585.0020.0002] # YI SYLLABLE TAP +A125 ; [.4586.0020.0002] # YI SYLLABLE TUOT +A126 ; [.4587.0020.0002] # YI SYLLABLE TUOX +A127 ; [.4588.0020.0002] # YI SYLLABLE TUO +A128 ; [.4589.0020.0002] # YI SYLLABLE TUOP +A129 ; [.458A.0020.0002] # YI SYLLABLE TOT +A12A ; [.458B.0020.0002] # YI SYLLABLE TOX +A12B ; [.458C.0020.0002] # YI SYLLABLE TO +A12C ; [.458D.0020.0002] # YI SYLLABLE TOP +A12D ; [.458E.0020.0002] # YI SYLLABLE TEX +A12E ; [.458F.0020.0002] # YI SYLLABLE TE +A12F ; [.4590.0020.0002] # YI SYLLABLE TEP +A130 ; [.4591.0020.0002] # YI SYLLABLE TUT +A131 ; [.4592.0020.0002] # YI SYLLABLE TUX +A132 ; [.4593.0020.0002] # YI SYLLABLE TU +A133 ; [.4594.0020.0002] # YI SYLLABLE TUP +A134 ; [.4595.0020.0002] # YI SYLLABLE TURX +A135 ; [.4596.0020.0002] # YI SYLLABLE TUR +A136 ; [.4597.0020.0002] # YI SYLLABLE DDIT +A137 ; [.4598.0020.0002] # YI SYLLABLE DDIX +A138 ; [.4599.0020.0002] # YI SYLLABLE DDI +A139 ; [.459A.0020.0002] # YI SYLLABLE DDIP +A13A ; [.459B.0020.0002] # YI SYLLABLE DDIEX +A13B ; [.459C.0020.0002] # YI SYLLABLE DDIE +A13C ; [.459D.0020.0002] # YI SYLLABLE DDIEP +A13D ; [.459E.0020.0002] # YI SYLLABLE DDAT +A13E ; [.459F.0020.0002] # YI SYLLABLE DDAX +A13F ; [.45A0.0020.0002] # YI SYLLABLE DDA +A140 ; [.45A1.0020.0002] # YI SYLLABLE DDAP +A141 ; [.45A2.0020.0002] # YI SYLLABLE DDUOX +A142 ; [.45A3.0020.0002] # YI SYLLABLE DDUO +A143 ; [.45A4.0020.0002] # YI SYLLABLE DDUOP +A144 ; [.45A5.0020.0002] # YI SYLLABLE DDOT +A145 ; [.45A6.0020.0002] # YI SYLLABLE DDOX +A146 ; [.45A7.0020.0002] # YI SYLLABLE DDO +A147 ; [.45A8.0020.0002] # YI SYLLABLE DDOP +A148 ; [.45A9.0020.0002] # YI SYLLABLE DDEX +A149 ; [.45AA.0020.0002] # YI SYLLABLE DDE +A14A ; [.45AB.0020.0002] # YI SYLLABLE DDEP +A14B ; [.45AC.0020.0002] # YI SYLLABLE DDUT +A14C ; [.45AD.0020.0002] # YI SYLLABLE DDUX +A14D ; [.45AE.0020.0002] # YI SYLLABLE DDU +A14E ; [.45AF.0020.0002] # YI SYLLABLE DDUP +A14F ; [.45B0.0020.0002] # YI SYLLABLE DDURX +A150 ; [.45B1.0020.0002] # YI SYLLABLE DDUR +A151 ; [.45B2.0020.0002] # YI SYLLABLE NDIT +A152 ; [.45B3.0020.0002] # YI SYLLABLE NDIX +A153 ; [.45B4.0020.0002] # YI SYLLABLE NDI +A154 ; [.45B5.0020.0002] # YI SYLLABLE NDIP +A155 ; [.45B6.0020.0002] # YI SYLLABLE NDIEX +A156 ; [.45B7.0020.0002] # YI SYLLABLE NDIE +A157 ; [.45B8.0020.0002] # YI SYLLABLE NDAT +A158 ; [.45B9.0020.0002] # YI SYLLABLE NDAX +A159 ; [.45BA.0020.0002] # YI SYLLABLE NDA +A15A ; [.45BB.0020.0002] # YI SYLLABLE NDAP +A15B ; [.45BC.0020.0002] # YI SYLLABLE NDOT +A15C ; [.45BD.0020.0002] # YI SYLLABLE NDOX +A15D ; [.45BE.0020.0002] # YI SYLLABLE NDO +A15E ; [.45BF.0020.0002] # YI SYLLABLE NDOP +A15F ; [.45C0.0020.0002] # YI SYLLABLE NDEX +A160 ; [.45C1.0020.0002] # YI SYLLABLE NDE +A161 ; [.45C2.0020.0002] # YI SYLLABLE NDEP +A162 ; [.45C3.0020.0002] # YI SYLLABLE NDUT +A163 ; [.45C4.0020.0002] # YI SYLLABLE NDUX +A164 ; [.45C5.0020.0002] # YI SYLLABLE NDU +A165 ; [.45C6.0020.0002] # YI SYLLABLE NDUP +A166 ; [.45C7.0020.0002] # YI SYLLABLE NDURX +A167 ; [.45C8.0020.0002] # YI SYLLABLE NDUR +A168 ; [.45C9.0020.0002] # YI SYLLABLE HNIT +A169 ; [.45CA.0020.0002] # YI SYLLABLE HNIX +A16A ; [.45CB.0020.0002] # YI SYLLABLE HNI +A16B ; [.45CC.0020.0002] # YI SYLLABLE HNIP +A16C ; [.45CD.0020.0002] # YI SYLLABLE HNIET +A16D ; [.45CE.0020.0002] # YI SYLLABLE HNIEX +A16E ; [.45CF.0020.0002] # YI SYLLABLE HNIE +A16F ; [.45D0.0020.0002] # YI SYLLABLE HNIEP +A170 ; [.45D1.0020.0002] # YI SYLLABLE HNAT +A171 ; [.45D2.0020.0002] # YI SYLLABLE HNAX +A172 ; [.45D3.0020.0002] # YI SYLLABLE HNA +A173 ; [.45D4.0020.0002] # YI SYLLABLE HNAP +A174 ; [.45D5.0020.0002] # YI SYLLABLE HNUOX +A175 ; [.45D6.0020.0002] # YI SYLLABLE HNUO +A176 ; [.45D7.0020.0002] # YI SYLLABLE HNOT +A177 ; [.45D8.0020.0002] # YI SYLLABLE HNOX +A178 ; [.45D9.0020.0002] # YI SYLLABLE HNOP +A179 ; [.45DA.0020.0002] # YI SYLLABLE HNEX +A17A ; [.45DB.0020.0002] # YI SYLLABLE HNE +A17B ; [.45DC.0020.0002] # YI SYLLABLE HNEP +A17C ; [.45DD.0020.0002] # YI SYLLABLE HNUT +A17D ; [.45DE.0020.0002] # YI SYLLABLE NIT +A17E ; [.45DF.0020.0002] # YI SYLLABLE NIX +A17F ; [.45E0.0020.0002] # YI SYLLABLE NI +A180 ; [.45E1.0020.0002] # YI SYLLABLE NIP +A181 ; [.45E2.0020.0002] # YI SYLLABLE NIEX +A182 ; [.45E3.0020.0002] # YI SYLLABLE NIE +A183 ; [.45E4.0020.0002] # YI SYLLABLE NIEP +A184 ; [.45E5.0020.0002] # YI SYLLABLE NAX +A185 ; [.45E6.0020.0002] # YI SYLLABLE NA +A186 ; [.45E7.0020.0002] # YI SYLLABLE NAP +A187 ; [.45E8.0020.0002] # YI SYLLABLE NUOX +A188 ; [.45E9.0020.0002] # YI SYLLABLE NUO +A189 ; [.45EA.0020.0002] # YI SYLLABLE NUOP +A18A ; [.45EB.0020.0002] # YI SYLLABLE NOT +A18B ; [.45EC.0020.0002] # YI SYLLABLE NOX +A18C ; [.45ED.0020.0002] # YI SYLLABLE NO +A18D ; [.45EE.0020.0002] # YI SYLLABLE NOP +A18E ; [.45EF.0020.0002] # YI SYLLABLE NEX +A18F ; [.45F0.0020.0002] # YI SYLLABLE NE +A190 ; [.45F1.0020.0002] # YI SYLLABLE NEP +A191 ; [.45F2.0020.0002] # YI SYLLABLE NUT +A192 ; [.45F3.0020.0002] # YI SYLLABLE NUX +A193 ; [.45F4.0020.0002] # YI SYLLABLE NU +A194 ; [.45F5.0020.0002] # YI SYLLABLE NUP +A195 ; [.45F6.0020.0002] # YI SYLLABLE NURX +A196 ; [.45F7.0020.0002] # YI SYLLABLE NUR +A197 ; [.45F8.0020.0002] # YI SYLLABLE HLIT +A198 ; [.45F9.0020.0002] # YI SYLLABLE HLIX +A199 ; [.45FA.0020.0002] # YI SYLLABLE HLI +A19A ; [.45FB.0020.0002] # YI SYLLABLE HLIP +A19B ; [.45FC.0020.0002] # YI SYLLABLE HLIEX +A19C ; [.45FD.0020.0002] # YI SYLLABLE HLIE +A19D ; [.45FE.0020.0002] # YI SYLLABLE HLIEP +A19E ; [.45FF.0020.0002] # YI SYLLABLE HLAT +A19F ; [.4600.0020.0002] # YI SYLLABLE HLAX +A1A0 ; [.4601.0020.0002] # YI SYLLABLE HLA +A1A1 ; [.4602.0020.0002] # YI SYLLABLE HLAP +A1A2 ; [.4603.0020.0002] # YI SYLLABLE HLUOX +A1A3 ; [.4604.0020.0002] # YI SYLLABLE HLUO +A1A4 ; [.4605.0020.0002] # YI SYLLABLE HLUOP +A1A5 ; [.4606.0020.0002] # YI SYLLABLE HLOX +A1A6 ; [.4607.0020.0002] # YI SYLLABLE HLO +A1A7 ; [.4608.0020.0002] # YI SYLLABLE HLOP +A1A8 ; [.4609.0020.0002] # YI SYLLABLE HLEX +A1A9 ; [.460A.0020.0002] # YI SYLLABLE HLE +A1AA ; [.460B.0020.0002] # YI SYLLABLE HLEP +A1AB ; [.460C.0020.0002] # YI SYLLABLE HLUT +A1AC ; [.460D.0020.0002] # YI SYLLABLE HLUX +A1AD ; [.460E.0020.0002] # YI SYLLABLE HLU +A1AE ; [.460F.0020.0002] # YI SYLLABLE HLUP +A1AF ; [.4610.0020.0002] # YI SYLLABLE HLURX +A1B0 ; [.4611.0020.0002] # YI SYLLABLE HLUR +A1B1 ; [.4612.0020.0002] # YI SYLLABLE HLYT +A1B2 ; [.4613.0020.0002] # YI SYLLABLE HLYX +A1B3 ; [.4614.0020.0002] # YI SYLLABLE HLY +A1B4 ; [.4615.0020.0002] # YI SYLLABLE HLYP +A1B5 ; [.4616.0020.0002] # YI SYLLABLE HLYRX +A1B6 ; [.4617.0020.0002] # YI SYLLABLE HLYR +A1B7 ; [.4618.0020.0002] # YI SYLLABLE LIT +A1B8 ; [.4619.0020.0002] # YI SYLLABLE LIX +A1B9 ; [.461A.0020.0002] # YI SYLLABLE LI +A1BA ; [.461B.0020.0002] # YI SYLLABLE LIP +A1BB ; [.461C.0020.0002] # YI SYLLABLE LIET +A1BC ; [.461D.0020.0002] # YI SYLLABLE LIEX +A1BD ; [.461E.0020.0002] # YI SYLLABLE LIE +A1BE ; [.461F.0020.0002] # YI SYLLABLE LIEP +A1BF ; [.4620.0020.0002] # YI SYLLABLE LAT +A1C0 ; [.4621.0020.0002] # YI SYLLABLE LAX +A1C1 ; [.4622.0020.0002] # YI SYLLABLE LA +A1C2 ; [.4623.0020.0002] # YI SYLLABLE LAP +A1C3 ; [.4624.0020.0002] # YI SYLLABLE LUOT +A1C4 ; [.4625.0020.0002] # YI SYLLABLE LUOX +A1C5 ; [.4626.0020.0002] # YI SYLLABLE LUO +A1C6 ; [.4627.0020.0002] # YI SYLLABLE LUOP +A1C7 ; [.4628.0020.0002] # YI SYLLABLE LOT +A1C8 ; [.4629.0020.0002] # YI SYLLABLE LOX +A1C9 ; [.462A.0020.0002] # YI SYLLABLE LO +A1CA ; [.462B.0020.0002] # YI SYLLABLE LOP +A1CB ; [.462C.0020.0002] # YI SYLLABLE LEX +A1CC ; [.462D.0020.0002] # YI SYLLABLE LE +A1CD ; [.462E.0020.0002] # YI SYLLABLE LEP +A1CE ; [.462F.0020.0002] # YI SYLLABLE LUT +A1CF ; [.4630.0020.0002] # YI SYLLABLE LUX +A1D0 ; [.4631.0020.0002] # YI SYLLABLE LU +A1D1 ; [.4632.0020.0002] # YI SYLLABLE LUP +A1D2 ; [.4633.0020.0002] # YI SYLLABLE LURX +A1D3 ; [.4634.0020.0002] # YI SYLLABLE LUR +A1D4 ; [.4635.0020.0002] # YI SYLLABLE LYT +A1D5 ; [.4636.0020.0002] # YI SYLLABLE LYX +A1D6 ; [.4637.0020.0002] # YI SYLLABLE LY +A1D7 ; [.4638.0020.0002] # YI SYLLABLE LYP +A1D8 ; [.4639.0020.0002] # YI SYLLABLE LYRX +A1D9 ; [.463A.0020.0002] # YI SYLLABLE LYR +A1DA ; [.463B.0020.0002] # YI SYLLABLE GIT +A1DB ; [.463C.0020.0002] # YI SYLLABLE GIX +A1DC ; [.463D.0020.0002] # YI SYLLABLE GI +A1DD ; [.463E.0020.0002] # YI SYLLABLE GIP +A1DE ; [.463F.0020.0002] # YI SYLLABLE GIET +A1DF ; [.4640.0020.0002] # YI SYLLABLE GIEX +A1E0 ; [.4641.0020.0002] # YI SYLLABLE GIE +A1E1 ; [.4642.0020.0002] # YI SYLLABLE GIEP +A1E2 ; [.4643.0020.0002] # YI SYLLABLE GAT +A1E3 ; [.4644.0020.0002] # YI SYLLABLE GAX +A1E4 ; [.4645.0020.0002] # YI SYLLABLE GA +A1E5 ; [.4646.0020.0002] # YI SYLLABLE GAP +A1E6 ; [.4647.0020.0002] # YI SYLLABLE GUOT +A1E7 ; [.4648.0020.0002] # YI SYLLABLE GUOX +A1E8 ; [.4649.0020.0002] # YI SYLLABLE GUO +A1E9 ; [.464A.0020.0002] # YI SYLLABLE GUOP +A1EA ; [.464B.0020.0002] # YI SYLLABLE GOT +A1EB ; [.464C.0020.0002] # YI SYLLABLE GOX +A1EC ; [.464D.0020.0002] # YI SYLLABLE GO +A1ED ; [.464E.0020.0002] # YI SYLLABLE GOP +A1EE ; [.464F.0020.0002] # YI SYLLABLE GET +A1EF ; [.4650.0020.0002] # YI SYLLABLE GEX +A1F0 ; [.4651.0020.0002] # YI SYLLABLE GE +A1F1 ; [.4652.0020.0002] # YI SYLLABLE GEP +A1F2 ; [.4653.0020.0002] # YI SYLLABLE GUT +A1F3 ; [.4654.0020.0002] # YI SYLLABLE GUX +A1F4 ; [.4655.0020.0002] # YI SYLLABLE GU +A1F5 ; [.4656.0020.0002] # YI SYLLABLE GUP +A1F6 ; [.4657.0020.0002] # YI SYLLABLE GURX +A1F7 ; [.4658.0020.0002] # YI SYLLABLE GUR +A1F8 ; [.4659.0020.0002] # YI SYLLABLE KIT +A1F9 ; [.465A.0020.0002] # YI SYLLABLE KIX +A1FA ; [.465B.0020.0002] # YI SYLLABLE KI +A1FB ; [.465C.0020.0002] # YI SYLLABLE KIP +A1FC ; [.465D.0020.0002] # YI SYLLABLE KIEX +A1FD ; [.465E.0020.0002] # YI SYLLABLE KIE +A1FE ; [.465F.0020.0002] # YI SYLLABLE KIEP +A1FF ; [.4660.0020.0002] # YI SYLLABLE KAT +A200 ; [.4661.0020.0002] # YI SYLLABLE KAX +A201 ; [.4662.0020.0002] # YI SYLLABLE KA +A202 ; [.4663.0020.0002] # YI SYLLABLE KAP +A203 ; [.4664.0020.0002] # YI SYLLABLE KUOX +A204 ; [.4665.0020.0002] # YI SYLLABLE KUO +A205 ; [.4666.0020.0002] # YI SYLLABLE KUOP +A206 ; [.4667.0020.0002] # YI SYLLABLE KOT +A207 ; [.4668.0020.0002] # YI SYLLABLE KOX +A208 ; [.4669.0020.0002] # YI SYLLABLE KO +A209 ; [.466A.0020.0002] # YI SYLLABLE KOP +A20A ; [.466B.0020.0002] # YI SYLLABLE KET +A20B ; [.466C.0020.0002] # YI SYLLABLE KEX +A20C ; [.466D.0020.0002] # YI SYLLABLE KE +A20D ; [.466E.0020.0002] # YI SYLLABLE KEP +A20E ; [.466F.0020.0002] # YI SYLLABLE KUT +A20F ; [.4670.0020.0002] # YI SYLLABLE KUX +A210 ; [.4671.0020.0002] # YI SYLLABLE KU +A211 ; [.4672.0020.0002] # YI SYLLABLE KUP +A212 ; [.4673.0020.0002] # YI SYLLABLE KURX +A213 ; [.4674.0020.0002] # YI SYLLABLE KUR +A214 ; [.4675.0020.0002] # YI SYLLABLE GGIT +A215 ; [.4676.0020.0002] # YI SYLLABLE GGIX +A216 ; [.4677.0020.0002] # YI SYLLABLE GGI +A217 ; [.4678.0020.0002] # YI SYLLABLE GGIEX +A218 ; [.4679.0020.0002] # YI SYLLABLE GGIE +A219 ; [.467A.0020.0002] # YI SYLLABLE GGIEP +A21A ; [.467B.0020.0002] # YI SYLLABLE GGAT +A21B ; [.467C.0020.0002] # YI SYLLABLE GGAX +A21C ; [.467D.0020.0002] # YI SYLLABLE GGA +A21D ; [.467E.0020.0002] # YI SYLLABLE GGAP +A21E ; [.467F.0020.0002] # YI SYLLABLE GGUOT +A21F ; [.4680.0020.0002] # YI SYLLABLE GGUOX +A220 ; [.4681.0020.0002] # YI SYLLABLE GGUO +A221 ; [.4682.0020.0002] # YI SYLLABLE GGUOP +A222 ; [.4683.0020.0002] # YI SYLLABLE GGOT +A223 ; [.4684.0020.0002] # YI SYLLABLE GGOX +A224 ; [.4685.0020.0002] # YI SYLLABLE GGO +A225 ; [.4686.0020.0002] # YI SYLLABLE GGOP +A226 ; [.4687.0020.0002] # YI SYLLABLE GGET +A227 ; [.4688.0020.0002] # YI SYLLABLE GGEX +A228 ; [.4689.0020.0002] # YI SYLLABLE GGE +A229 ; [.468A.0020.0002] # YI SYLLABLE GGEP +A22A ; [.468B.0020.0002] # YI SYLLABLE GGUT +A22B ; [.468C.0020.0002] # YI SYLLABLE GGUX +A22C ; [.468D.0020.0002] # YI SYLLABLE GGU +A22D ; [.468E.0020.0002] # YI SYLLABLE GGUP +A22E ; [.468F.0020.0002] # YI SYLLABLE GGURX +A22F ; [.4690.0020.0002] # YI SYLLABLE GGUR +A230 ; [.4691.0020.0002] # YI SYLLABLE MGIEX +A231 ; [.4692.0020.0002] # YI SYLLABLE MGIE +A232 ; [.4693.0020.0002] # YI SYLLABLE MGAT +A233 ; [.4694.0020.0002] # YI SYLLABLE MGAX +A234 ; [.4695.0020.0002] # YI SYLLABLE MGA +A235 ; [.4696.0020.0002] # YI SYLLABLE MGAP +A236 ; [.4697.0020.0002] # YI SYLLABLE MGUOX +A237 ; [.4698.0020.0002] # YI SYLLABLE MGUO +A238 ; [.4699.0020.0002] # YI SYLLABLE MGUOP +A239 ; [.469A.0020.0002] # YI SYLLABLE MGOT +A23A ; [.469B.0020.0002] # YI SYLLABLE MGOX +A23B ; [.469C.0020.0002] # YI SYLLABLE MGO +A23C ; [.469D.0020.0002] # YI SYLLABLE MGOP +A23D ; [.469E.0020.0002] # YI SYLLABLE MGEX +A23E ; [.469F.0020.0002] # YI SYLLABLE MGE +A23F ; [.46A0.0020.0002] # YI SYLLABLE MGEP +A240 ; [.46A1.0020.0002] # YI SYLLABLE MGUT +A241 ; [.46A2.0020.0002] # YI SYLLABLE MGUX +A242 ; [.46A3.0020.0002] # YI SYLLABLE MGU +A243 ; [.46A4.0020.0002] # YI SYLLABLE MGUP +A244 ; [.46A5.0020.0002] # YI SYLLABLE MGURX +A245 ; [.46A6.0020.0002] # YI SYLLABLE MGUR +A246 ; [.46A7.0020.0002] # YI SYLLABLE HXIT +A247 ; [.46A8.0020.0002] # YI SYLLABLE HXIX +A248 ; [.46A9.0020.0002] # YI SYLLABLE HXI +A249 ; [.46AA.0020.0002] # YI SYLLABLE HXIP +A24A ; [.46AB.0020.0002] # YI SYLLABLE HXIET +A24B ; [.46AC.0020.0002] # YI SYLLABLE HXIEX +A24C ; [.46AD.0020.0002] # YI SYLLABLE HXIE +A24D ; [.46AE.0020.0002] # YI SYLLABLE HXIEP +A24E ; [.46AF.0020.0002] # YI SYLLABLE HXAT +A24F ; [.46B0.0020.0002] # YI SYLLABLE HXAX +A250 ; [.46B1.0020.0002] # YI SYLLABLE HXA +A251 ; [.46B2.0020.0002] # YI SYLLABLE HXAP +A252 ; [.46B3.0020.0002] # YI SYLLABLE HXUOT +A253 ; [.46B4.0020.0002] # YI SYLLABLE HXUOX +A254 ; [.46B5.0020.0002] # YI SYLLABLE HXUO +A255 ; [.46B6.0020.0002] # YI SYLLABLE HXUOP +A256 ; [.46B7.0020.0002] # YI SYLLABLE HXOT +A257 ; [.46B8.0020.0002] # YI SYLLABLE HXOX +A258 ; [.46B9.0020.0002] # YI SYLLABLE HXO +A259 ; [.46BA.0020.0002] # YI SYLLABLE HXOP +A25A ; [.46BB.0020.0002] # YI SYLLABLE HXEX +A25B ; [.46BC.0020.0002] # YI SYLLABLE HXE +A25C ; [.46BD.0020.0002] # YI SYLLABLE HXEP +A25D ; [.46BE.0020.0002] # YI SYLLABLE NGIEX +A25E ; [.46BF.0020.0002] # YI SYLLABLE NGIE +A25F ; [.46C0.0020.0002] # YI SYLLABLE NGIEP +A260 ; [.46C1.0020.0002] # YI SYLLABLE NGAT +A261 ; [.46C2.0020.0002] # YI SYLLABLE NGAX +A262 ; [.46C3.0020.0002] # YI SYLLABLE NGA +A263 ; [.46C4.0020.0002] # YI SYLLABLE NGAP +A264 ; [.46C5.0020.0002] # YI SYLLABLE NGUOT +A265 ; [.46C6.0020.0002] # YI SYLLABLE NGUOX +A266 ; [.46C7.0020.0002] # YI SYLLABLE NGUO +A267 ; [.46C8.0020.0002] # YI SYLLABLE NGOT +A268 ; [.46C9.0020.0002] # YI SYLLABLE NGOX +A269 ; [.46CA.0020.0002] # YI SYLLABLE NGO +A26A ; [.46CB.0020.0002] # YI SYLLABLE NGOP +A26B ; [.46CC.0020.0002] # YI SYLLABLE NGEX +A26C ; [.46CD.0020.0002] # YI SYLLABLE NGE +A26D ; [.46CE.0020.0002] # YI SYLLABLE NGEP +A26E ; [.46CF.0020.0002] # YI SYLLABLE HIT +A26F ; [.46D0.0020.0002] # YI SYLLABLE HIEX +A270 ; [.46D1.0020.0002] # YI SYLLABLE HIE +A271 ; [.46D2.0020.0002] # YI SYLLABLE HAT +A272 ; [.46D3.0020.0002] # YI SYLLABLE HAX +A273 ; [.46D4.0020.0002] # YI SYLLABLE HA +A274 ; [.46D5.0020.0002] # YI SYLLABLE HAP +A275 ; [.46D6.0020.0002] # YI SYLLABLE HUOT +A276 ; [.46D7.0020.0002] # YI SYLLABLE HUOX +A277 ; [.46D8.0020.0002] # YI SYLLABLE HUO +A278 ; [.46D9.0020.0002] # YI SYLLABLE HUOP +A279 ; [.46DA.0020.0002] # YI SYLLABLE HOT +A27A ; [.46DB.0020.0002] # YI SYLLABLE HOX +A27B ; [.46DC.0020.0002] # YI SYLLABLE HO +A27C ; [.46DD.0020.0002] # YI SYLLABLE HOP +A27D ; [.46DE.0020.0002] # YI SYLLABLE HEX +A27E ; [.46DF.0020.0002] # YI SYLLABLE HE +A27F ; [.46E0.0020.0002] # YI SYLLABLE HEP +A280 ; [.46E1.0020.0002] # YI SYLLABLE WAT +A281 ; [.46E2.0020.0002] # YI SYLLABLE WAX +A282 ; [.46E3.0020.0002] # YI SYLLABLE WA +A283 ; [.46E4.0020.0002] # YI SYLLABLE WAP +A284 ; [.46E5.0020.0002] # YI SYLLABLE WUOX +A285 ; [.46E6.0020.0002] # YI SYLLABLE WUO +A286 ; [.46E7.0020.0002] # YI SYLLABLE WUOP +A287 ; [.46E8.0020.0002] # YI SYLLABLE WOX +A288 ; [.46E9.0020.0002] # YI SYLLABLE WO +A289 ; [.46EA.0020.0002] # YI SYLLABLE WOP +A28A ; [.46EB.0020.0002] # YI SYLLABLE WEX +A28B ; [.46EC.0020.0002] # YI SYLLABLE WE +A28C ; [.46ED.0020.0002] # YI SYLLABLE WEP +A28D ; [.46EE.0020.0002] # YI SYLLABLE ZIT +A28E ; [.46EF.0020.0002] # YI SYLLABLE ZIX +A28F ; [.46F0.0020.0002] # YI SYLLABLE ZI +A290 ; [.46F1.0020.0002] # YI SYLLABLE ZIP +A291 ; [.46F2.0020.0002] # YI SYLLABLE ZIEX +A292 ; [.46F3.0020.0002] # YI SYLLABLE ZIE +A293 ; [.46F4.0020.0002] # YI SYLLABLE ZIEP +A294 ; [.46F5.0020.0002] # YI SYLLABLE ZAT +A295 ; [.46F6.0020.0002] # YI SYLLABLE ZAX +A296 ; [.46F7.0020.0002] # YI SYLLABLE ZA +A297 ; [.46F8.0020.0002] # YI SYLLABLE ZAP +A298 ; [.46F9.0020.0002] # YI SYLLABLE ZUOX +A299 ; [.46FA.0020.0002] # YI SYLLABLE ZUO +A29A ; [.46FB.0020.0002] # YI SYLLABLE ZUOP +A29B ; [.46FC.0020.0002] # YI SYLLABLE ZOT +A29C ; [.46FD.0020.0002] # YI SYLLABLE ZOX +A29D ; [.46FE.0020.0002] # YI SYLLABLE ZO +A29E ; [.46FF.0020.0002] # YI SYLLABLE ZOP +A29F ; [.4700.0020.0002] # YI SYLLABLE ZEX +A2A0 ; [.4701.0020.0002] # YI SYLLABLE ZE +A2A1 ; [.4702.0020.0002] # YI SYLLABLE ZEP +A2A2 ; [.4703.0020.0002] # YI SYLLABLE ZUT +A2A3 ; [.4704.0020.0002] # YI SYLLABLE ZUX +A2A4 ; [.4705.0020.0002] # YI SYLLABLE ZU +A2A5 ; [.4706.0020.0002] # YI SYLLABLE ZUP +A2A6 ; [.4707.0020.0002] # YI SYLLABLE ZURX +A2A7 ; [.4708.0020.0002] # YI SYLLABLE ZUR +A2A8 ; [.4709.0020.0002] # YI SYLLABLE ZYT +A2A9 ; [.470A.0020.0002] # YI SYLLABLE ZYX +A2AA ; [.470B.0020.0002] # YI SYLLABLE ZY +A2AB ; [.470C.0020.0002] # YI SYLLABLE ZYP +A2AC ; [.470D.0020.0002] # YI SYLLABLE ZYRX +A2AD ; [.470E.0020.0002] # YI SYLLABLE ZYR +A2AE ; [.470F.0020.0002] # YI SYLLABLE CIT +A2AF ; [.4710.0020.0002] # YI SYLLABLE CIX +A2B0 ; [.4711.0020.0002] # YI SYLLABLE CI +A2B1 ; [.4712.0020.0002] # YI SYLLABLE CIP +A2B2 ; [.4713.0020.0002] # YI SYLLABLE CIET +A2B3 ; [.4714.0020.0002] # YI SYLLABLE CIEX +A2B4 ; [.4715.0020.0002] # YI SYLLABLE CIE +A2B5 ; [.4716.0020.0002] # YI SYLLABLE CIEP +A2B6 ; [.4717.0020.0002] # YI SYLLABLE CAT +A2B7 ; [.4718.0020.0002] # YI SYLLABLE CAX +A2B8 ; [.4719.0020.0002] # YI SYLLABLE CA +A2B9 ; [.471A.0020.0002] # YI SYLLABLE CAP +A2BA ; [.471B.0020.0002] # YI SYLLABLE CUOX +A2BB ; [.471C.0020.0002] # YI SYLLABLE CUO +A2BC ; [.471D.0020.0002] # YI SYLLABLE CUOP +A2BD ; [.471E.0020.0002] # YI SYLLABLE COT +A2BE ; [.471F.0020.0002] # YI SYLLABLE COX +A2BF ; [.4720.0020.0002] # YI SYLLABLE CO +A2C0 ; [.4721.0020.0002] # YI SYLLABLE COP +A2C1 ; [.4722.0020.0002] # YI SYLLABLE CEX +A2C2 ; [.4723.0020.0002] # YI SYLLABLE CE +A2C3 ; [.4724.0020.0002] # YI SYLLABLE CEP +A2C4 ; [.4725.0020.0002] # YI SYLLABLE CUT +A2C5 ; [.4726.0020.0002] # YI SYLLABLE CUX +A2C6 ; [.4727.0020.0002] # YI SYLLABLE CU +A2C7 ; [.4728.0020.0002] # YI SYLLABLE CUP +A2C8 ; [.4729.0020.0002] # YI SYLLABLE CURX +A2C9 ; [.472A.0020.0002] # YI SYLLABLE CUR +A2CA ; [.472B.0020.0002] # YI SYLLABLE CYT +A2CB ; [.472C.0020.0002] # YI SYLLABLE CYX +A2CC ; [.472D.0020.0002] # YI SYLLABLE CY +A2CD ; [.472E.0020.0002] # YI SYLLABLE CYP +A2CE ; [.472F.0020.0002] # YI SYLLABLE CYRX +A2CF ; [.4730.0020.0002] # YI SYLLABLE CYR +A2D0 ; [.4731.0020.0002] # YI SYLLABLE ZZIT +A2D1 ; [.4732.0020.0002] # YI SYLLABLE ZZIX +A2D2 ; [.4733.0020.0002] # YI SYLLABLE ZZI +A2D3 ; [.4734.0020.0002] # YI SYLLABLE ZZIP +A2D4 ; [.4735.0020.0002] # YI SYLLABLE ZZIET +A2D5 ; [.4736.0020.0002] # YI SYLLABLE ZZIEX +A2D6 ; [.4737.0020.0002] # YI SYLLABLE ZZIE +A2D7 ; [.4738.0020.0002] # YI SYLLABLE ZZIEP +A2D8 ; [.4739.0020.0002] # YI SYLLABLE ZZAT +A2D9 ; [.473A.0020.0002] # YI SYLLABLE ZZAX +A2DA ; [.473B.0020.0002] # YI SYLLABLE ZZA +A2DB ; [.473C.0020.0002] # YI SYLLABLE ZZAP +A2DC ; [.473D.0020.0002] # YI SYLLABLE ZZOX +A2DD ; [.473E.0020.0002] # YI SYLLABLE ZZO +A2DE ; [.473F.0020.0002] # YI SYLLABLE ZZOP +A2DF ; [.4740.0020.0002] # YI SYLLABLE ZZEX +A2E0 ; [.4741.0020.0002] # YI SYLLABLE ZZE +A2E1 ; [.4742.0020.0002] # YI SYLLABLE ZZEP +A2E2 ; [.4743.0020.0002] # YI SYLLABLE ZZUX +A2E3 ; [.4744.0020.0002] # YI SYLLABLE ZZU +A2E4 ; [.4745.0020.0002] # YI SYLLABLE ZZUP +A2E5 ; [.4746.0020.0002] # YI SYLLABLE ZZURX +A2E6 ; [.4747.0020.0002] # YI SYLLABLE ZZUR +A2E7 ; [.4748.0020.0002] # YI SYLLABLE ZZYT +A2E8 ; [.4749.0020.0002] # YI SYLLABLE ZZYX +A2E9 ; [.474A.0020.0002] # YI SYLLABLE ZZY +A2EA ; [.474B.0020.0002] # YI SYLLABLE ZZYP +A2EB ; [.474C.0020.0002] # YI SYLLABLE ZZYRX +A2EC ; [.474D.0020.0002] # YI SYLLABLE ZZYR +A2ED ; [.474E.0020.0002] # YI SYLLABLE NZIT +A2EE ; [.474F.0020.0002] # YI SYLLABLE NZIX +A2EF ; [.4750.0020.0002] # YI SYLLABLE NZI +A2F0 ; [.4751.0020.0002] # YI SYLLABLE NZIP +A2F1 ; [.4752.0020.0002] # YI SYLLABLE NZIEX +A2F2 ; [.4753.0020.0002] # YI SYLLABLE NZIE +A2F3 ; [.4754.0020.0002] # YI SYLLABLE NZIEP +A2F4 ; [.4755.0020.0002] # YI SYLLABLE NZAT +A2F5 ; [.4756.0020.0002] # YI SYLLABLE NZAX +A2F6 ; [.4757.0020.0002] # YI SYLLABLE NZA +A2F7 ; [.4758.0020.0002] # YI SYLLABLE NZAP +A2F8 ; [.4759.0020.0002] # YI SYLLABLE NZUOX +A2F9 ; [.475A.0020.0002] # YI SYLLABLE NZUO +A2FA ; [.475B.0020.0002] # YI SYLLABLE NZOX +A2FB ; [.475C.0020.0002] # YI SYLLABLE NZOP +A2FC ; [.475D.0020.0002] # YI SYLLABLE NZEX +A2FD ; [.475E.0020.0002] # YI SYLLABLE NZE +A2FE ; [.475F.0020.0002] # YI SYLLABLE NZUX +A2FF ; [.4760.0020.0002] # YI SYLLABLE NZU +A300 ; [.4761.0020.0002] # YI SYLLABLE NZUP +A301 ; [.4762.0020.0002] # YI SYLLABLE NZURX +A302 ; [.4763.0020.0002] # YI SYLLABLE NZUR +A303 ; [.4764.0020.0002] # YI SYLLABLE NZYT +A304 ; [.4765.0020.0002] # YI SYLLABLE NZYX +A305 ; [.4766.0020.0002] # YI SYLLABLE NZY +A306 ; [.4767.0020.0002] # YI SYLLABLE NZYP +A307 ; [.4768.0020.0002] # YI SYLLABLE NZYRX +A308 ; [.4769.0020.0002] # YI SYLLABLE NZYR +A309 ; [.476A.0020.0002] # YI SYLLABLE SIT +A30A ; [.476B.0020.0002] # YI SYLLABLE SIX +A30B ; [.476C.0020.0002] # YI SYLLABLE SI +A30C ; [.476D.0020.0002] # YI SYLLABLE SIP +A30D ; [.476E.0020.0002] # YI SYLLABLE SIEX +A30E ; [.476F.0020.0002] # YI SYLLABLE SIE +A30F ; [.4770.0020.0002] # YI SYLLABLE SIEP +A310 ; [.4771.0020.0002] # YI SYLLABLE SAT +A311 ; [.4772.0020.0002] # YI SYLLABLE SAX +A312 ; [.4773.0020.0002] # YI SYLLABLE SA +A313 ; [.4774.0020.0002] # YI SYLLABLE SAP +A314 ; [.4775.0020.0002] # YI SYLLABLE SUOX +A315 ; [.4776.0020.0002] # YI SYLLABLE SUO +A316 ; [.4777.0020.0002] # YI SYLLABLE SUOP +A317 ; [.4778.0020.0002] # YI SYLLABLE SOT +A318 ; [.4779.0020.0002] # YI SYLLABLE SOX +A319 ; [.477A.0020.0002] # YI SYLLABLE SO +A31A ; [.477B.0020.0002] # YI SYLLABLE SOP +A31B ; [.477C.0020.0002] # YI SYLLABLE SEX +A31C ; [.477D.0020.0002] # YI SYLLABLE SE +A31D ; [.477E.0020.0002] # YI SYLLABLE SEP +A31E ; [.477F.0020.0002] # YI SYLLABLE SUT +A31F ; [.4780.0020.0002] # YI SYLLABLE SUX +A320 ; [.4781.0020.0002] # YI SYLLABLE SU +A321 ; [.4782.0020.0002] # YI SYLLABLE SUP +A322 ; [.4783.0020.0002] # YI SYLLABLE SURX +A323 ; [.4784.0020.0002] # YI SYLLABLE SUR +A324 ; [.4785.0020.0002] # YI SYLLABLE SYT +A325 ; [.4786.0020.0002] # YI SYLLABLE SYX +A326 ; [.4787.0020.0002] # YI SYLLABLE SY +A327 ; [.4788.0020.0002] # YI SYLLABLE SYP +A328 ; [.4789.0020.0002] # YI SYLLABLE SYRX +A329 ; [.478A.0020.0002] # YI SYLLABLE SYR +A32A ; [.478B.0020.0002] # YI SYLLABLE SSIT +A32B ; [.478C.0020.0002] # YI SYLLABLE SSIX +A32C ; [.478D.0020.0002] # YI SYLLABLE SSI +A32D ; [.478E.0020.0002] # YI SYLLABLE SSIP +A32E ; [.478F.0020.0002] # YI SYLLABLE SSIEX +A32F ; [.4790.0020.0002] # YI SYLLABLE SSIE +A330 ; [.4791.0020.0002] # YI SYLLABLE SSIEP +A331 ; [.4792.0020.0002] # YI SYLLABLE SSAT +A332 ; [.4793.0020.0002] # YI SYLLABLE SSAX +A333 ; [.4794.0020.0002] # YI SYLLABLE SSA +A334 ; [.4795.0020.0002] # YI SYLLABLE SSAP +A335 ; [.4796.0020.0002] # YI SYLLABLE SSOT +A336 ; [.4797.0020.0002] # YI SYLLABLE SSOX +A337 ; [.4798.0020.0002] # YI SYLLABLE SSO +A338 ; [.4799.0020.0002] # YI SYLLABLE SSOP +A339 ; [.479A.0020.0002] # YI SYLLABLE SSEX +A33A ; [.479B.0020.0002] # YI SYLLABLE SSE +A33B ; [.479C.0020.0002] # YI SYLLABLE SSEP +A33C ; [.479D.0020.0002] # YI SYLLABLE SSUT +A33D ; [.479E.0020.0002] # YI SYLLABLE SSUX +A33E ; [.479F.0020.0002] # YI SYLLABLE SSU +A33F ; [.47A0.0020.0002] # YI SYLLABLE SSUP +A340 ; [.47A1.0020.0002] # YI SYLLABLE SSYT +A341 ; [.47A2.0020.0002] # YI SYLLABLE SSYX +A342 ; [.47A3.0020.0002] # YI SYLLABLE SSY +A343 ; [.47A4.0020.0002] # YI SYLLABLE SSYP +A344 ; [.47A5.0020.0002] # YI SYLLABLE SSYRX +A345 ; [.47A6.0020.0002] # YI SYLLABLE SSYR +A346 ; [.47A7.0020.0002] # YI SYLLABLE ZHAT +A347 ; [.47A8.0020.0002] # YI SYLLABLE ZHAX +A348 ; [.47A9.0020.0002] # YI SYLLABLE ZHA +A349 ; [.47AA.0020.0002] # YI SYLLABLE ZHAP +A34A ; [.47AB.0020.0002] # YI SYLLABLE ZHUOX +A34B ; [.47AC.0020.0002] # YI SYLLABLE ZHUO +A34C ; [.47AD.0020.0002] # YI SYLLABLE ZHUOP +A34D ; [.47AE.0020.0002] # YI SYLLABLE ZHOT +A34E ; [.47AF.0020.0002] # YI SYLLABLE ZHOX +A34F ; [.47B0.0020.0002] # YI SYLLABLE ZHO +A350 ; [.47B1.0020.0002] # YI SYLLABLE ZHOP +A351 ; [.47B2.0020.0002] # YI SYLLABLE ZHET +A352 ; [.47B3.0020.0002] # YI SYLLABLE ZHEX +A353 ; [.47B4.0020.0002] # YI SYLLABLE ZHE +A354 ; [.47B5.0020.0002] # YI SYLLABLE ZHEP +A355 ; [.47B6.0020.0002] # YI SYLLABLE ZHUT +A356 ; [.47B7.0020.0002] # YI SYLLABLE ZHUX +A357 ; [.47B8.0020.0002] # YI SYLLABLE ZHU +A358 ; [.47B9.0020.0002] # YI SYLLABLE ZHUP +A359 ; [.47BA.0020.0002] # YI SYLLABLE ZHURX +A35A ; [.47BB.0020.0002] # YI SYLLABLE ZHUR +A35B ; [.47BC.0020.0002] # YI SYLLABLE ZHYT +A35C ; [.47BD.0020.0002] # YI SYLLABLE ZHYX +A35D ; [.47BE.0020.0002] # YI SYLLABLE ZHY +A35E ; [.47BF.0020.0002] # YI SYLLABLE ZHYP +A35F ; [.47C0.0020.0002] # YI SYLLABLE ZHYRX +A360 ; [.47C1.0020.0002] # YI SYLLABLE ZHYR +A361 ; [.47C2.0020.0002] # YI SYLLABLE CHAT +A362 ; [.47C3.0020.0002] # YI SYLLABLE CHAX +A363 ; [.47C4.0020.0002] # YI SYLLABLE CHA +A364 ; [.47C5.0020.0002] # YI SYLLABLE CHAP +A365 ; [.47C6.0020.0002] # YI SYLLABLE CHUOT +A366 ; [.47C7.0020.0002] # YI SYLLABLE CHUOX +A367 ; [.47C8.0020.0002] # YI SYLLABLE CHUO +A368 ; [.47C9.0020.0002] # YI SYLLABLE CHUOP +A369 ; [.47CA.0020.0002] # YI SYLLABLE CHOT +A36A ; [.47CB.0020.0002] # YI SYLLABLE CHOX +A36B ; [.47CC.0020.0002] # YI SYLLABLE CHO +A36C ; [.47CD.0020.0002] # YI SYLLABLE CHOP +A36D ; [.47CE.0020.0002] # YI SYLLABLE CHET +A36E ; [.47CF.0020.0002] # YI SYLLABLE CHEX +A36F ; [.47D0.0020.0002] # YI SYLLABLE CHE +A370 ; [.47D1.0020.0002] # YI SYLLABLE CHEP +A371 ; [.47D2.0020.0002] # YI SYLLABLE CHUX +A372 ; [.47D3.0020.0002] # YI SYLLABLE CHU +A373 ; [.47D4.0020.0002] # YI SYLLABLE CHUP +A374 ; [.47D5.0020.0002] # YI SYLLABLE CHURX +A375 ; [.47D6.0020.0002] # YI SYLLABLE CHUR +A376 ; [.47D7.0020.0002] # YI SYLLABLE CHYT +A377 ; [.47D8.0020.0002] # YI SYLLABLE CHYX +A378 ; [.47D9.0020.0002] # YI SYLLABLE CHY +A379 ; [.47DA.0020.0002] # YI SYLLABLE CHYP +A37A ; [.47DB.0020.0002] # YI SYLLABLE CHYRX +A37B ; [.47DC.0020.0002] # YI SYLLABLE CHYR +A37C ; [.47DD.0020.0002] # YI SYLLABLE RRAX +A37D ; [.47DE.0020.0002] # YI SYLLABLE RRA +A37E ; [.47DF.0020.0002] # YI SYLLABLE RRUOX +A37F ; [.47E0.0020.0002] # YI SYLLABLE RRUO +A380 ; [.47E1.0020.0002] # YI SYLLABLE RROT +A381 ; [.47E2.0020.0002] # YI SYLLABLE RROX +A382 ; [.47E3.0020.0002] # YI SYLLABLE RRO +A383 ; [.47E4.0020.0002] # YI SYLLABLE RROP +A384 ; [.47E5.0020.0002] # YI SYLLABLE RRET +A385 ; [.47E6.0020.0002] # YI SYLLABLE RREX +A386 ; [.47E7.0020.0002] # YI SYLLABLE RRE +A387 ; [.47E8.0020.0002] # YI SYLLABLE RREP +A388 ; [.47E9.0020.0002] # YI SYLLABLE RRUT +A389 ; [.47EA.0020.0002] # YI SYLLABLE RRUX +A38A ; [.47EB.0020.0002] # YI SYLLABLE RRU +A38B ; [.47EC.0020.0002] # YI SYLLABLE RRUP +A38C ; [.47ED.0020.0002] # YI SYLLABLE RRURX +A38D ; [.47EE.0020.0002] # YI SYLLABLE RRUR +A38E ; [.47EF.0020.0002] # YI SYLLABLE RRYT +A38F ; [.47F0.0020.0002] # YI SYLLABLE RRYX +A390 ; [.47F1.0020.0002] # YI SYLLABLE RRY +A391 ; [.47F2.0020.0002] # YI SYLLABLE RRYP +A392 ; [.47F3.0020.0002] # YI SYLLABLE RRYRX +A393 ; [.47F4.0020.0002] # YI SYLLABLE RRYR +A394 ; [.47F5.0020.0002] # YI SYLLABLE NRAT +A395 ; [.47F6.0020.0002] # YI SYLLABLE NRAX +A396 ; [.47F7.0020.0002] # YI SYLLABLE NRA +A397 ; [.47F8.0020.0002] # YI SYLLABLE NRAP +A398 ; [.47F9.0020.0002] # YI SYLLABLE NROX +A399 ; [.47FA.0020.0002] # YI SYLLABLE NRO +A39A ; [.47FB.0020.0002] # YI SYLLABLE NROP +A39B ; [.47FC.0020.0002] # YI SYLLABLE NRET +A39C ; [.47FD.0020.0002] # YI SYLLABLE NREX +A39D ; [.47FE.0020.0002] # YI SYLLABLE NRE +A39E ; [.47FF.0020.0002] # YI SYLLABLE NREP +A39F ; [.4800.0020.0002] # YI SYLLABLE NRUT +A3A0 ; [.4801.0020.0002] # YI SYLLABLE NRUX +A3A1 ; [.4802.0020.0002] # YI SYLLABLE NRU +A3A2 ; [.4803.0020.0002] # YI SYLLABLE NRUP +A3A3 ; [.4804.0020.0002] # YI SYLLABLE NRURX +A3A4 ; [.4805.0020.0002] # YI SYLLABLE NRUR +A3A5 ; [.4806.0020.0002] # YI SYLLABLE NRYT +A3A6 ; [.4807.0020.0002] # YI SYLLABLE NRYX +A3A7 ; [.4808.0020.0002] # YI SYLLABLE NRY +A3A8 ; [.4809.0020.0002] # YI SYLLABLE NRYP +A3A9 ; [.480A.0020.0002] # YI SYLLABLE NRYRX +A3AA ; [.480B.0020.0002] # YI SYLLABLE NRYR +A3AB ; [.480C.0020.0002] # YI SYLLABLE SHAT +A3AC ; [.480D.0020.0002] # YI SYLLABLE SHAX +A3AD ; [.480E.0020.0002] # YI SYLLABLE SHA +A3AE ; [.480F.0020.0002] # YI SYLLABLE SHAP +A3AF ; [.4810.0020.0002] # YI SYLLABLE SHUOX +A3B0 ; [.4811.0020.0002] # YI SYLLABLE SHUO +A3B1 ; [.4812.0020.0002] # YI SYLLABLE SHUOP +A3B2 ; [.4813.0020.0002] # YI SYLLABLE SHOT +A3B3 ; [.4814.0020.0002] # YI SYLLABLE SHOX +A3B4 ; [.4815.0020.0002] # YI SYLLABLE SHO +A3B5 ; [.4816.0020.0002] # YI SYLLABLE SHOP +A3B6 ; [.4817.0020.0002] # YI SYLLABLE SHET +A3B7 ; [.4818.0020.0002] # YI SYLLABLE SHEX +A3B8 ; [.4819.0020.0002] # YI SYLLABLE SHE +A3B9 ; [.481A.0020.0002] # YI SYLLABLE SHEP +A3BA ; [.481B.0020.0002] # YI SYLLABLE SHUT +A3BB ; [.481C.0020.0002] # YI SYLLABLE SHUX +A3BC ; [.481D.0020.0002] # YI SYLLABLE SHU +A3BD ; [.481E.0020.0002] # YI SYLLABLE SHUP +A3BE ; [.481F.0020.0002] # YI SYLLABLE SHURX +A3BF ; [.4820.0020.0002] # YI SYLLABLE SHUR +A3C0 ; [.4821.0020.0002] # YI SYLLABLE SHYT +A3C1 ; [.4822.0020.0002] # YI SYLLABLE SHYX +A3C2 ; [.4823.0020.0002] # YI SYLLABLE SHY +A3C3 ; [.4824.0020.0002] # YI SYLLABLE SHYP +A3C4 ; [.4825.0020.0002] # YI SYLLABLE SHYRX +A3C5 ; [.4826.0020.0002] # YI SYLLABLE SHYR +A3C6 ; [.4827.0020.0002] # YI SYLLABLE RAT +A3C7 ; [.4828.0020.0002] # YI SYLLABLE RAX +A3C8 ; [.4829.0020.0002] # YI SYLLABLE RA +A3C9 ; [.482A.0020.0002] # YI SYLLABLE RAP +A3CA ; [.482B.0020.0002] # YI SYLLABLE RUOX +A3CB ; [.482C.0020.0002] # YI SYLLABLE RUO +A3CC ; [.482D.0020.0002] # YI SYLLABLE RUOP +A3CD ; [.482E.0020.0002] # YI SYLLABLE ROT +A3CE ; [.482F.0020.0002] # YI SYLLABLE ROX +A3CF ; [.4830.0020.0002] # YI SYLLABLE RO +A3D0 ; [.4831.0020.0002] # YI SYLLABLE ROP +A3D1 ; [.4832.0020.0002] # YI SYLLABLE REX +A3D2 ; [.4833.0020.0002] # YI SYLLABLE RE +A3D3 ; [.4834.0020.0002] # YI SYLLABLE REP +A3D4 ; [.4835.0020.0002] # YI SYLLABLE RUT +A3D5 ; [.4836.0020.0002] # YI SYLLABLE RUX +A3D6 ; [.4837.0020.0002] # YI SYLLABLE RU +A3D7 ; [.4838.0020.0002] # YI SYLLABLE RUP +A3D8 ; [.4839.0020.0002] # YI SYLLABLE RURX +A3D9 ; [.483A.0020.0002] # YI SYLLABLE RUR +A3DA ; [.483B.0020.0002] # YI SYLLABLE RYT +A3DB ; [.483C.0020.0002] # YI SYLLABLE RYX +A3DC ; [.483D.0020.0002] # YI SYLLABLE RY +A3DD ; [.483E.0020.0002] # YI SYLLABLE RYP +A3DE ; [.483F.0020.0002] # YI SYLLABLE RYRX +A3DF ; [.4840.0020.0002] # YI SYLLABLE RYR +A3E0 ; [.4841.0020.0002] # YI SYLLABLE JIT +A3E1 ; [.4842.0020.0002] # YI SYLLABLE JIX +A3E2 ; [.4843.0020.0002] # YI SYLLABLE JI +A3E3 ; [.4844.0020.0002] # YI SYLLABLE JIP +A3E4 ; [.4845.0020.0002] # YI SYLLABLE JIET +A3E5 ; [.4846.0020.0002] # YI SYLLABLE JIEX +A3E6 ; [.4847.0020.0002] # YI SYLLABLE JIE +A3E7 ; [.4848.0020.0002] # YI SYLLABLE JIEP +A3E8 ; [.4849.0020.0002] # YI SYLLABLE JUOT +A3E9 ; [.484A.0020.0002] # YI SYLLABLE JUOX +A3EA ; [.484B.0020.0002] # YI SYLLABLE JUO +A3EB ; [.484C.0020.0002] # YI SYLLABLE JUOP +A3EC ; [.484D.0020.0002] # YI SYLLABLE JOT +A3ED ; [.484E.0020.0002] # YI SYLLABLE JOX +A3EE ; [.484F.0020.0002] # YI SYLLABLE JO +A3EF ; [.4850.0020.0002] # YI SYLLABLE JOP +A3F0 ; [.4851.0020.0002] # YI SYLLABLE JUT +A3F1 ; [.4852.0020.0002] # YI SYLLABLE JUX +A3F2 ; [.4853.0020.0002] # YI SYLLABLE JU +A3F3 ; [.4854.0020.0002] # YI SYLLABLE JUP +A3F4 ; [.4855.0020.0002] # YI SYLLABLE JURX +A3F5 ; [.4856.0020.0002] # YI SYLLABLE JUR +A3F6 ; [.4857.0020.0002] # YI SYLLABLE JYT +A3F7 ; [.4858.0020.0002] # YI SYLLABLE JYX +A3F8 ; [.4859.0020.0002] # YI SYLLABLE JY +A3F9 ; [.485A.0020.0002] # YI SYLLABLE JYP +A3FA ; [.485B.0020.0002] # YI SYLLABLE JYRX +A3FB ; [.485C.0020.0002] # YI SYLLABLE JYR +A3FC ; [.485D.0020.0002] # YI SYLLABLE QIT +A3FD ; [.485E.0020.0002] # YI SYLLABLE QIX +A3FE ; [.485F.0020.0002] # YI SYLLABLE QI +A3FF ; [.4860.0020.0002] # YI SYLLABLE QIP +A400 ; [.4861.0020.0002] # YI SYLLABLE QIET +A401 ; [.4862.0020.0002] # YI SYLLABLE QIEX +A402 ; [.4863.0020.0002] # YI SYLLABLE QIE +A403 ; [.4864.0020.0002] # YI SYLLABLE QIEP +A404 ; [.4865.0020.0002] # YI SYLLABLE QUOT +A405 ; [.4866.0020.0002] # YI SYLLABLE QUOX +A406 ; [.4867.0020.0002] # YI SYLLABLE QUO +A407 ; [.4868.0020.0002] # YI SYLLABLE QUOP +A408 ; [.4869.0020.0002] # YI SYLLABLE QOT +A409 ; [.486A.0020.0002] # YI SYLLABLE QOX +A40A ; [.486B.0020.0002] # YI SYLLABLE QO +A40B ; [.486C.0020.0002] # YI SYLLABLE QOP +A40C ; [.486D.0020.0002] # YI SYLLABLE QUT +A40D ; [.486E.0020.0002] # YI SYLLABLE QUX +A40E ; [.486F.0020.0002] # YI SYLLABLE QU +A40F ; [.4870.0020.0002] # YI SYLLABLE QUP +A410 ; [.4871.0020.0002] # YI SYLLABLE QURX +A411 ; [.4872.0020.0002] # YI SYLLABLE QUR +A412 ; [.4873.0020.0002] # YI SYLLABLE QYT +A413 ; [.4874.0020.0002] # YI SYLLABLE QYX +A414 ; [.4875.0020.0002] # YI SYLLABLE QY +A415 ; [.4876.0020.0002] # YI SYLLABLE QYP +A416 ; [.4877.0020.0002] # YI SYLLABLE QYRX +A417 ; [.4878.0020.0002] # YI SYLLABLE QYR +A418 ; [.4879.0020.0002] # YI SYLLABLE JJIT +A419 ; [.487A.0020.0002] # YI SYLLABLE JJIX +A41A ; [.487B.0020.0002] # YI SYLLABLE JJI +A41B ; [.487C.0020.0002] # YI SYLLABLE JJIP +A41C ; [.487D.0020.0002] # YI SYLLABLE JJIET +A41D ; [.487E.0020.0002] # YI SYLLABLE JJIEX +A41E ; [.487F.0020.0002] # YI SYLLABLE JJIE +A41F ; [.4880.0020.0002] # YI SYLLABLE JJIEP +A420 ; [.4881.0020.0002] # YI SYLLABLE JJUOX +A421 ; [.4882.0020.0002] # YI SYLLABLE JJUO +A422 ; [.4883.0020.0002] # YI SYLLABLE JJUOP +A423 ; [.4884.0020.0002] # YI SYLLABLE JJOT +A424 ; [.4885.0020.0002] # YI SYLLABLE JJOX +A425 ; [.4886.0020.0002] # YI SYLLABLE JJO +A426 ; [.4887.0020.0002] # YI SYLLABLE JJOP +A427 ; [.4888.0020.0002] # YI SYLLABLE JJUT +A428 ; [.4889.0020.0002] # YI SYLLABLE JJUX +A429 ; [.488A.0020.0002] # YI SYLLABLE JJU +A42A ; [.488B.0020.0002] # YI SYLLABLE JJUP +A42B ; [.488C.0020.0002] # YI SYLLABLE JJURX +A42C ; [.488D.0020.0002] # YI SYLLABLE JJUR +A42D ; [.488E.0020.0002] # YI SYLLABLE JJYT +A42E ; [.488F.0020.0002] # YI SYLLABLE JJYX +A42F ; [.4890.0020.0002] # YI SYLLABLE JJY +A430 ; [.4891.0020.0002] # YI SYLLABLE JJYP +A431 ; [.4892.0020.0002] # YI SYLLABLE NJIT +A432 ; [.4893.0020.0002] # YI SYLLABLE NJIX +A433 ; [.4894.0020.0002] # YI SYLLABLE NJI +A434 ; [.4895.0020.0002] # YI SYLLABLE NJIP +A435 ; [.4896.0020.0002] # YI SYLLABLE NJIET +A436 ; [.4897.0020.0002] # YI SYLLABLE NJIEX +A437 ; [.4898.0020.0002] # YI SYLLABLE NJIE +A438 ; [.4899.0020.0002] # YI SYLLABLE NJIEP +A439 ; [.489A.0020.0002] # YI SYLLABLE NJUOX +A43A ; [.489B.0020.0002] # YI SYLLABLE NJUO +A43B ; [.489C.0020.0002] # YI SYLLABLE NJOT +A43C ; [.489D.0020.0002] # YI SYLLABLE NJOX +A43D ; [.489E.0020.0002] # YI SYLLABLE NJO +A43E ; [.489F.0020.0002] # YI SYLLABLE NJOP +A43F ; [.48A0.0020.0002] # YI SYLLABLE NJUX +A440 ; [.48A1.0020.0002] # YI SYLLABLE NJU +A441 ; [.48A2.0020.0002] # YI SYLLABLE NJUP +A442 ; [.48A3.0020.0002] # YI SYLLABLE NJURX +A443 ; [.48A4.0020.0002] # YI SYLLABLE NJUR +A444 ; [.48A5.0020.0002] # YI SYLLABLE NJYT +A445 ; [.48A6.0020.0002] # YI SYLLABLE NJYX +A446 ; [.48A7.0020.0002] # YI SYLLABLE NJY +A447 ; [.48A8.0020.0002] # YI SYLLABLE NJYP +A448 ; [.48A9.0020.0002] # YI SYLLABLE NJYRX +A449 ; [.48AA.0020.0002] # YI SYLLABLE NJYR +A44A ; [.48AB.0020.0002] # YI SYLLABLE NYIT +A44B ; [.48AC.0020.0002] # YI SYLLABLE NYIX +A44C ; [.48AD.0020.0002] # YI SYLLABLE NYI +A44D ; [.48AE.0020.0002] # YI SYLLABLE NYIP +A44E ; [.48AF.0020.0002] # YI SYLLABLE NYIET +A44F ; [.48B0.0020.0002] # YI SYLLABLE NYIEX +A450 ; [.48B1.0020.0002] # YI SYLLABLE NYIE +A451 ; [.48B2.0020.0002] # YI SYLLABLE NYIEP +A452 ; [.48B3.0020.0002] # YI SYLLABLE NYUOX +A453 ; [.48B4.0020.0002] # YI SYLLABLE NYUO +A454 ; [.48B5.0020.0002] # YI SYLLABLE NYUOP +A455 ; [.48B6.0020.0002] # YI SYLLABLE NYOT +A456 ; [.48B7.0020.0002] # YI SYLLABLE NYOX +A457 ; [.48B8.0020.0002] # YI SYLLABLE NYO +A458 ; [.48B9.0020.0002] # YI SYLLABLE NYOP +A459 ; [.48BA.0020.0002] # YI SYLLABLE NYUT +A45A ; [.48BB.0020.0002] # YI SYLLABLE NYUX +A45B ; [.48BC.0020.0002] # YI SYLLABLE NYU +A45C ; [.48BD.0020.0002] # YI SYLLABLE NYUP +A45D ; [.48BE.0020.0002] # YI SYLLABLE XIT +A45E ; [.48BF.0020.0002] # YI SYLLABLE XIX +A45F ; [.48C0.0020.0002] # YI SYLLABLE XI +A460 ; [.48C1.0020.0002] # YI SYLLABLE XIP +A461 ; [.48C2.0020.0002] # YI SYLLABLE XIET +A462 ; [.48C3.0020.0002] # YI SYLLABLE XIEX +A463 ; [.48C4.0020.0002] # YI SYLLABLE XIE +A464 ; [.48C5.0020.0002] # YI SYLLABLE XIEP +A465 ; [.48C6.0020.0002] # YI SYLLABLE XUOX +A466 ; [.48C7.0020.0002] # YI SYLLABLE XUO +A467 ; [.48C8.0020.0002] # YI SYLLABLE XOT +A468 ; [.48C9.0020.0002] # YI SYLLABLE XOX +A469 ; [.48CA.0020.0002] # YI SYLLABLE XO +A46A ; [.48CB.0020.0002] # YI SYLLABLE XOP +A46B ; [.48CC.0020.0002] # YI SYLLABLE XYT +A46C ; [.48CD.0020.0002] # YI SYLLABLE XYX +A46D ; [.48CE.0020.0002] # YI SYLLABLE XY +A46E ; [.48CF.0020.0002] # YI SYLLABLE XYP +A46F ; [.48D0.0020.0002] # YI SYLLABLE XYRX +A470 ; [.48D1.0020.0002] # YI SYLLABLE XYR +A471 ; [.48D2.0020.0002] # YI SYLLABLE YIT +A472 ; [.48D3.0020.0002] # YI SYLLABLE YIX +A473 ; [.48D4.0020.0002] # YI SYLLABLE YI +A474 ; [.48D5.0020.0002] # YI SYLLABLE YIP +A475 ; [.48D6.0020.0002] # YI SYLLABLE YIET +A476 ; [.48D7.0020.0002] # YI SYLLABLE YIEX +A477 ; [.48D8.0020.0002] # YI SYLLABLE YIE +A478 ; [.48D9.0020.0002] # YI SYLLABLE YIEP +A479 ; [.48DA.0020.0002] # YI SYLLABLE YUOT +A47A ; [.48DB.0020.0002] # YI SYLLABLE YUOX +A47B ; [.48DC.0020.0002] # YI SYLLABLE YUO +A47C ; [.48DD.0020.0002] # YI SYLLABLE YUOP +A47D ; [.48DE.0020.0002] # YI SYLLABLE YOT +A47E ; [.48DF.0020.0002] # YI SYLLABLE YOX +A47F ; [.48E0.0020.0002] # YI SYLLABLE YO +A480 ; [.48E1.0020.0002] # YI SYLLABLE YOP +A481 ; [.48E2.0020.0002] # YI SYLLABLE YUT +A482 ; [.48E3.0020.0002] # YI SYLLABLE YUX +A483 ; [.48E4.0020.0002] # YI SYLLABLE YU +A484 ; [.48E5.0020.0002] # YI SYLLABLE YUP +A485 ; [.48E6.0020.0002] # YI SYLLABLE YURX +A486 ; [.48E7.0020.0002] # YI SYLLABLE YUR +A487 ; [.48E8.0020.0002] # YI SYLLABLE YYT +A488 ; [.48E9.0020.0002] # YI SYLLABLE YYX +A489 ; [.48EA.0020.0002] # YI SYLLABLE YY +A48A ; [.48EB.0020.0002] # YI SYLLABLE YYP +A48B ; [.48EC.0020.0002] # YI SYLLABLE YYRX +A48C ; [.48ED.0020.0002] # YI SYLLABLE YYR +A4F8 ; [.48EE.0020.0002] # LISU LETTER TONE MYA TI +A4F9 ; [.48EF.0020.0002] # LISU LETTER TONE NA PO +A4FA ; [.48F0.0020.0002] # LISU LETTER TONE MYA CYA +A4FB ; [.48F1.0020.0002] # LISU LETTER TONE MYA BO +A4FD ; [.48F2.0020.0002] # LISU LETTER TONE MYA JEU +A4FC ; [.48F3.0020.0002] # LISU LETTER TONE MYA NA +A4D0 ; [.48F4.0020.0002] # LISU LETTER BA +A4D1 ; [.48F5.0020.0002] # LISU LETTER PA +A4D2 ; [.48F6.0020.0002] # LISU LETTER PHA +A4D3 ; [.48F7.0020.0002] # LISU LETTER DA +A4D4 ; [.48F8.0020.0002] # LISU LETTER TA +A4D5 ; [.48F9.0020.0002] # LISU LETTER THA +A4D6 ; [.48FA.0020.0002] # LISU LETTER GA +A4D7 ; [.48FB.0020.0002] # LISU LETTER KA +A4D8 ; [.48FC.0020.0002] # LISU LETTER KHA +A4D9 ; [.48FD.0020.0002] # LISU LETTER JA +A4DA ; [.48FE.0020.0002] # LISU LETTER CA +A4DB ; [.48FF.0020.0002] # LISU LETTER CHA +A4DC ; [.4900.0020.0002] # LISU LETTER DZA +A4DD ; [.4901.0020.0002] # LISU LETTER TSA +A4DE ; [.4902.0020.0002] # LISU LETTER TSHA +A4DF ; [.4903.0020.0002] # LISU LETTER MA +A4E0 ; [.4904.0020.0002] # LISU LETTER NA +A4E1 ; [.4905.0020.0002] # LISU LETTER LA +A4E2 ; [.4906.0020.0002] # LISU LETTER SA +A4E3 ; [.4907.0020.0002] # LISU LETTER ZHA +A4E4 ; [.4908.0020.0002] # LISU LETTER ZA +A4E5 ; [.4909.0020.0002] # LISU LETTER NGA +A4E6 ; [.490A.0020.0002] # LISU LETTER HA +A4E7 ; [.490B.0020.0002] # LISU LETTER XA +A4E8 ; [.490C.0020.0002] # LISU LETTER HHA +A4E9 ; [.490D.0020.0002] # LISU LETTER FA +A4EB ; [.490E.0020.0002] # LISU LETTER SHA +A4ED ; [.490F.0020.0002] # LISU LETTER GHA +A4EA ; [.4910.0020.0002] # LISU LETTER WA +A4EC ; [.4911.0020.0002] # LISU LETTER YA +11FB0 ; [.4912.0020.0002] # LISU LETTER YHA +A4EE ; [.4913.0020.0002] # LISU LETTER A +A4EF ; [.4914.0020.0002] # LISU LETTER AE +A4F0 ; [.4915.0020.0002] # LISU LETTER E +A4F1 ; [.4916.0020.0002] # LISU LETTER EU +A4F2 ; [.4917.0020.0002] # LISU LETTER I +A4F3 ; [.4918.0020.0002] # LISU LETTER O +A4F4 ; [.4919.0020.0002] # LISU LETTER U +A4F5 ; [.491A.0020.0002] # LISU LETTER UE +A4F6 ; [.491B.0020.0002] # LISU LETTER UH +A4F7 ; [.491C.0020.0002] # LISU LETTER OE +16F00 ; [.491D.0020.0002] # MIAO LETTER PA +16F01 ; [.491E.0020.0002] # MIAO LETTER BA +16F02 ; [.491F.0020.0002] # MIAO LETTER YI PA +16F03 ; [.4920.0020.0002] # MIAO LETTER PLA +16F45 ; [.4921.0020.0002] # MIAO LETTER BRI +16F04 ; [.4922.0020.0002] # MIAO LETTER MA +16F06 ; [.4922.0020.0004] # MIAO LETTER ARCHAIC MA +16F05 ; [.4923.0020.0002] # MIAO LETTER MHA +16F07 ; [.4924.0020.0002] # MIAO LETTER FA +16F08 ; [.4925.0020.0002] # MIAO LETTER VA +16F09 ; [.4926.0020.0002] # MIAO LETTER VFA +16F0A ; [.4927.0020.0002] # MIAO LETTER TA +16F0B ; [.4928.0020.0002] # MIAO LETTER DA +16F0C ; [.4929.0020.0002] # MIAO LETTER YI TTA +16F0D ; [.492A.0020.0002] # MIAO LETTER YI TA +16F48 ; [.492B.0020.0002] # MIAO LETTER TE +16F0E ; [.492C.0020.0002] # MIAO LETTER TTA +16F0F ; [.492D.0020.0002] # MIAO LETTER DDA +16F4A ; [.492E.0020.0002] # MIAO LETTER RTE +16F10 ; [.492F.0020.0002] # MIAO LETTER NA +16F13 ; [.492F.0020.0004] # MIAO LETTER ARCHAIC NA +16F11 ; [.4930.0020.0002] # MIAO LETTER NHA +16F12 ; [.4931.0020.0002] # MIAO LETTER YI NNA +16F14 ; [.4932.0020.0002] # MIAO LETTER NNA +16F15 ; [.4933.0020.0002] # MIAO LETTER NNHA +16F16 ; [.4934.0020.0002] # MIAO LETTER LA +16F17 ; [.4935.0020.0002] # MIAO LETTER LYA +16F18 ; [.4936.0020.0002] # MIAO LETTER LHA +16F19 ; [.4937.0020.0002] # MIAO LETTER LHYA +16F1A ; [.4938.0020.0002] # MIAO LETTER TLHA +16F1B ; [.4939.0020.0002] # MIAO LETTER DLHA +16F1C ; [.493A.0020.0002] # MIAO LETTER TLHYA +16F1D ; [.493B.0020.0002] # MIAO LETTER DLHYA +16F1E ; [.493C.0020.0002] # MIAO LETTER KA +16F1F ; [.493D.0020.0002] # MIAO LETTER GA +16F20 ; [.493E.0020.0002] # MIAO LETTER YI KA +16F21 ; [.493F.0020.0002] # MIAO LETTER QA +16F22 ; [.4940.0020.0002] # MIAO LETTER QGA +16F23 ; [.4941.0020.0002] # MIAO LETTER NGA +16F25 ; [.4941.0020.0004] # MIAO LETTER ARCHAIC NGA +16F24 ; [.4942.0020.0002] # MIAO LETTER NGHA +16F26 ; [.4943.0020.0002] # MIAO LETTER HA +16F27 ; [.4944.0020.0002] # MIAO LETTER XA +16F28 ; [.4945.0020.0002] # MIAO LETTER GHA +16F29 ; [.4946.0020.0002] # MIAO LETTER GHHA +16F2A ; [.4947.0020.0002] # MIAO LETTER TSSA +16F2B ; [.4948.0020.0002] # MIAO LETTER DZZA +16F2C ; [.4949.0020.0002] # MIAO LETTER NYA +16F2D ; [.494A.0020.0002] # MIAO LETTER NYHA +16F2E ; [.494B.0020.0002] # MIAO LETTER TSHA +16F2F ; [.494C.0020.0002] # MIAO LETTER DZHA +16F30 ; [.494D.0020.0002] # MIAO LETTER YI TSHA +16F31 ; [.494E.0020.0002] # MIAO LETTER YI DZHA +16F32 ; [.494F.0020.0002] # MIAO LETTER REFORMED TSHA +16F47 ; [.4950.0020.0002] # MIAO LETTER DZYI +16F33 ; [.4951.0020.0002] # MIAO LETTER SHA +16F46 ; [.4952.0020.0002] # MIAO LETTER SYI +16F34 ; [.4953.0020.0002] # MIAO LETTER SSA +16F35 ; [.4954.0020.0002] # MIAO LETTER ZHA +16F36 ; [.4955.0020.0002] # MIAO LETTER ZSHA +16F37 ; [.4956.0020.0002] # MIAO LETTER TSA +16F38 ; [.4957.0020.0002] # MIAO LETTER DZA +16F39 ; [.4958.0020.0002] # MIAO LETTER YI TSA +16F49 ; [.4959.0020.0002] # MIAO LETTER TSE +16F3A ; [.495A.0020.0002] # MIAO LETTER SA +16F3B ; [.495B.0020.0002] # MIAO LETTER ZA +16F3C ; [.495C.0020.0002] # MIAO LETTER ZSA +16F3D ; [.495D.0020.0002] # MIAO LETTER ZZA +16F3F ; [.495D.0020.0004] # MIAO LETTER ARCHAIC ZZA +16F3E ; [.495E.0020.0002] # MIAO LETTER ZZSA +16F40 ; [.495F.0020.0002] # MIAO LETTER ZZYA +16F41 ; [.4960.0020.0002] # MIAO LETTER ZZSYA +16F42 ; [.4961.0020.0002] # MIAO LETTER WA +16F43 ; [.4962.0020.0002] # MIAO LETTER AH +16F44 ; [.4963.0020.0002] # MIAO LETTER HHA +16F50 ; [.4964.0020.0002] # MIAO LETTER NASALIZATION +16F51 ; [.4965.0020.0002] # MIAO SIGN ASPIRATION +16F52 ; [.4966.0020.0002] # MIAO SIGN REFORMED VOICING +16F53 ; [.4967.0020.0002] # MIAO SIGN REFORMED ASPIRATION +16F4F ; [.4968.0020.0002] # MIAO SIGN CONSONANT MODIFIER BAR +16F54 ; [.4969.0020.0002] # MIAO VOWEL SIGN A +16F55 ; [.496A.0020.0002] # MIAO VOWEL SIGN AA +16F56 ; [.496B.0020.0002] # MIAO VOWEL SIGN AHH +16F57 ; [.496C.0020.0002] # MIAO VOWEL SIGN AN +16F58 ; [.496D.0020.0002] # MIAO VOWEL SIGN ANG +16F81 ; [.496E.0020.0002] # MIAO VOWEL SIGN OG +16F59 ; [.496F.0020.0002] # MIAO VOWEL SIGN O +16F5A ; [.4970.0020.0002] # MIAO VOWEL SIGN OO +16F5B ; [.4971.0020.0002] # MIAO VOWEL SIGN WO +16F5C ; [.4972.0020.0002] # MIAO VOWEL SIGN W +16F83 ; [.4973.0020.0002] # MIAO VOWEL SIGN VW +16F5D ; [.4974.0020.0002] # MIAO VOWEL SIGN E +16F5E ; [.4975.0020.0002] # MIAO VOWEL SIGN EN +16F5F ; [.4976.0020.0002] # MIAO VOWEL SIGN ENG +16F60 ; [.4977.0020.0002] # MIAO VOWEL SIGN OEY +16F84 ; [.4978.0020.0002] # MIAO VOWEL SIGN IG +16F61 ; [.4979.0020.0002] # MIAO VOWEL SIGN I +16F62 ; [.497A.0020.0002] # MIAO VOWEL SIGN IA +16F63 ; [.497B.0020.0002] # MIAO VOWEL SIGN IAN +16F64 ; [.497C.0020.0002] # MIAO VOWEL SIGN IANG +16F65 ; [.497D.0020.0002] # MIAO VOWEL SIGN IO +16F86 ; [.497E.0020.0002] # MIAO VOWEL SIGN IONG +16F66 ; [.497F.0020.0002] # MIAO VOWEL SIGN IE +16F67 ; [.4980.0020.0002] # MIAO VOWEL SIGN II +16F68 ; [.4981.0020.0002] # MIAO VOWEL SIGN IU +16F69 ; [.4982.0020.0002] # MIAO VOWEL SIGN ING +16F6A ; [.4983.0020.0002] # MIAO VOWEL SIGN U +16F6B ; [.4984.0020.0002] # MIAO VOWEL SIGN UA +16F6C ; [.4985.0020.0002] # MIAO VOWEL SIGN UAN +16F6D ; [.4986.0020.0002] # MIAO VOWEL SIGN UANG +16F7F ; [.4987.0020.0002] # MIAO VOWEL SIGN UOG +16F87 ; [.4988.0020.0002] # MIAO VOWEL SIGN UI +16F6E ; [.4989.0020.0002] # MIAO VOWEL SIGN UU +16F6F ; [.498A.0020.0002] # MIAO VOWEL SIGN UEI +16F70 ; [.498B.0020.0002] # MIAO VOWEL SIGN UNG +16F71 ; [.498C.0020.0002] # MIAO VOWEL SIGN Y +16F72 ; [.498D.0020.0002] # MIAO VOWEL SIGN YI +16F80 ; [.498E.0020.0002] # MIAO VOWEL SIGN YUI +16F73 ; [.498F.0020.0002] # MIAO VOWEL SIGN AE +16F74 ; [.4990.0020.0002] # MIAO VOWEL SIGN AEE +16F85 ; [.4991.0020.0002] # MIAO VOWEL SIGN EA +16F82 ; [.4992.0020.0002] # MIAO VOWEL SIGN OER +16F75 ; [.4993.0020.0002] # MIAO VOWEL SIGN ERR +16F76 ; [.4994.0020.0002] # MIAO VOWEL SIGN ROUNDED ERR +16F77 ; [.4995.0020.0002] # MIAO VOWEL SIGN ER +16F78 ; [.4996.0020.0002] # MIAO VOWEL SIGN ROUNDED ER +16F79 ; [.4997.0020.0002] # MIAO VOWEL SIGN AI +16F7A ; [.4998.0020.0002] # MIAO VOWEL SIGN EI +16F7B ; [.4999.0020.0002] # MIAO VOWEL SIGN AU +16F7C ; [.499A.0020.0002] # MIAO VOWEL SIGN OU +16F7D ; [.499B.0020.0002] # MIAO VOWEL SIGN N +16F7E ; [.499C.0020.0002] # MIAO VOWEL SIGN NG +16F8F ; [.499D.0020.0002] # MIAO TONE RIGHT +16F90 ; [.499E.0020.0002] # MIAO TONE TOP RIGHT +16F91 ; [.499F.0020.0002] # MIAO TONE ABOVE +16F92 ; [.49A0.0020.0002] # MIAO TONE BELOW +16F93 ; [.49A1.0020.0002] # MIAO LETTER TONE-2 +16F94 ; [.49A2.0020.0002] # MIAO LETTER TONE-3 +16F95 ; [.49A3.0020.0002] # MIAO LETTER TONE-4 +16F96 ; [.49A4.0020.0002] # MIAO LETTER TONE-5 +16F97 ; [.49A5.0020.0002] # MIAO LETTER TONE-6 +16F98 ; [.49A6.0020.0002] # MIAO LETTER TONE-7 +16F99 ; [.49A7.0020.0002] # MIAO LETTER TONE-8 +16F9A ; [.49A8.0020.0002] # MIAO LETTER REFORMED TONE-1 +16F9B ; [.49A9.0020.0002] # MIAO LETTER REFORMED TONE-2 +16F9C ; [.49AA.0020.0002] # MIAO LETTER REFORMED TONE-4 +16F9D ; [.49AB.0020.0002] # MIAO LETTER REFORMED TONE-5 +16F9E ; [.49AC.0020.0002] # MIAO LETTER REFORMED TONE-6 +16F9F ; [.49AD.0020.0002] # MIAO LETTER REFORMED TONE-8 +118FF ; [.49AE.0020.0002] # WARANG CITI OM +118C0 ; [.49AF.0020.0002] # WARANG CITI SMALL LETTER NGAA +118A0 ; [.49AF.0020.0008] # WARANG CITI CAPITAL LETTER NGAA +118C1 ; [.49B0.0020.0002] # WARANG CITI SMALL LETTER A +118A1 ; [.49B0.0020.0008] # WARANG CITI CAPITAL LETTER A +118C2 ; [.49B1.0020.0002] # WARANG CITI SMALL LETTER WI +118A2 ; [.49B1.0020.0008] # WARANG CITI CAPITAL LETTER WI +118C3 ; [.49B2.0020.0002] # WARANG CITI SMALL LETTER YU +118A3 ; [.49B2.0020.0008] # WARANG CITI CAPITAL LETTER YU +118C4 ; [.49B3.0020.0002] # WARANG CITI SMALL LETTER YA +118A4 ; [.49B3.0020.0008] # WARANG CITI CAPITAL LETTER YA +118C5 ; [.49B4.0020.0002] # WARANG CITI SMALL LETTER YO +118A5 ; [.49B4.0020.0008] # WARANG CITI CAPITAL LETTER YO +118C6 ; [.49B5.0020.0002] # WARANG CITI SMALL LETTER II +118A6 ; [.49B5.0020.0008] # WARANG CITI CAPITAL LETTER II +118C7 ; [.49B6.0020.0002] # WARANG CITI SMALL LETTER UU +118A7 ; [.49B6.0020.0008] # WARANG CITI CAPITAL LETTER UU +118C8 ; [.49B7.0020.0002] # WARANG CITI SMALL LETTER E +118A8 ; [.49B7.0020.0008] # WARANG CITI CAPITAL LETTER E +118C9 ; [.49B8.0020.0002] # WARANG CITI SMALL LETTER O +118A9 ; [.49B8.0020.0008] # WARANG CITI CAPITAL LETTER O +118CA ; [.49B9.0020.0002] # WARANG CITI SMALL LETTER ANG +118AA ; [.49B9.0020.0008] # WARANG CITI CAPITAL LETTER ANG +118CB ; [.49BA.0020.0002] # WARANG CITI SMALL LETTER GA +118AB ; [.49BA.0020.0008] # WARANG CITI CAPITAL LETTER GA +118CC ; [.49BB.0020.0002] # WARANG CITI SMALL LETTER KO +118AC ; [.49BB.0020.0008] # WARANG CITI CAPITAL LETTER KO +118CD ; [.49BC.0020.0002] # WARANG CITI SMALL LETTER ENY +118AD ; [.49BC.0020.0008] # WARANG CITI CAPITAL LETTER ENY +118CE ; [.49BD.0020.0002] # WARANG CITI SMALL LETTER YUJ +118AE ; [.49BD.0020.0008] # WARANG CITI CAPITAL LETTER YUJ +118CF ; [.49BE.0020.0002] # WARANG CITI SMALL LETTER UC +118AF ; [.49BE.0020.0008] # WARANG CITI CAPITAL LETTER UC +118D0 ; [.49BF.0020.0002] # WARANG CITI SMALL LETTER ENN +118B0 ; [.49BF.0020.0008] # WARANG CITI CAPITAL LETTER ENN +118D1 ; [.49C0.0020.0002] # WARANG CITI SMALL LETTER ODD +118B1 ; [.49C0.0020.0008] # WARANG CITI CAPITAL LETTER ODD +118D2 ; [.49C1.0020.0002] # WARANG CITI SMALL LETTER TTE +118B2 ; [.49C1.0020.0008] # WARANG CITI CAPITAL LETTER TTE +118D3 ; [.49C2.0020.0002] # WARANG CITI SMALL LETTER NUNG +118B3 ; [.49C2.0020.0008] # WARANG CITI CAPITAL LETTER NUNG +118D4 ; [.49C3.0020.0002] # WARANG CITI SMALL LETTER DA +118B4 ; [.49C3.0020.0008] # WARANG CITI CAPITAL LETTER DA +118D5 ; [.49C4.0020.0002] # WARANG CITI SMALL LETTER AT +118B5 ; [.49C4.0020.0008] # WARANG CITI CAPITAL LETTER AT +118D6 ; [.49C5.0020.0002] # WARANG CITI SMALL LETTER AM +118B6 ; [.49C5.0020.0008] # WARANG CITI CAPITAL LETTER AM +118D7 ; [.49C6.0020.0002] # WARANG CITI SMALL LETTER BU +118B7 ; [.49C6.0020.0008] # WARANG CITI CAPITAL LETTER BU +118D8 ; [.49C7.0020.0002] # WARANG CITI SMALL LETTER PU +118B8 ; [.49C7.0020.0008] # WARANG CITI CAPITAL LETTER PU +118D9 ; [.49C8.0020.0002] # WARANG CITI SMALL LETTER HIYO +118B9 ; [.49C8.0020.0008] # WARANG CITI CAPITAL LETTER HIYO +118DA ; [.49C9.0020.0002] # WARANG CITI SMALL LETTER HOLO +118BA ; [.49C9.0020.0008] # WARANG CITI CAPITAL LETTER HOLO +118DB ; [.49CA.0020.0002] # WARANG CITI SMALL LETTER HORR +118BB ; [.49CA.0020.0008] # WARANG CITI CAPITAL LETTER HORR +118DC ; [.49CB.0020.0002] # WARANG CITI SMALL LETTER HAR +118BC ; [.49CB.0020.0008] # WARANG CITI CAPITAL LETTER HAR +118DD ; [.49CC.0020.0002] # WARANG CITI SMALL LETTER SSUU +118BD ; [.49CC.0020.0008] # WARANG CITI CAPITAL LETTER SSUU +118DE ; [.49CD.0020.0002] # WARANG CITI SMALL LETTER SII +118BE ; [.49CD.0020.0008] # WARANG CITI CAPITAL LETTER SII +118DF ; [.49CE.0020.0002] # WARANG CITI SMALL LETTER VIYO +118BF ; [.49CE.0020.0008] # WARANG CITI CAPITAL LETTER VIYO +11AD5 ; [.49CF.0020.0002] # PAU CIN HAU LETTER A +11AD6 ; [.49D0.0020.0002] # PAU CIN HAU LETTER E +11AD7 ; [.49D1.0020.0002] # PAU CIN HAU LETTER I +11AD8 ; [.49D2.0020.0002] # PAU CIN HAU LETTER O +11AD9 ; [.49D3.0020.0002] # PAU CIN HAU LETTER U +11ADA ; [.49D4.0020.0002] # PAU CIN HAU LETTER UA +11ADB ; [.49D5.0020.0002] # PAU CIN HAU LETTER IA +11AC0 ; [.49D6.0020.0002] # PAU CIN HAU LETTER PA +11AC1 ; [.49D7.0020.0002] # PAU CIN HAU LETTER KA +11AC2 ; [.49D8.0020.0002] # PAU CIN HAU LETTER LA +11AC3 ; [.49D9.0020.0002] # PAU CIN HAU LETTER MA +11AC4 ; [.49DA.0020.0002] # PAU CIN HAU LETTER DA +11AC5 ; [.49DB.0020.0002] # PAU CIN HAU LETTER ZA +11AC6 ; [.49DC.0020.0002] # PAU CIN HAU LETTER VA +11AC7 ; [.49DD.0020.0002] # PAU CIN HAU LETTER NGA +11AC8 ; [.49DE.0020.0002] # PAU CIN HAU LETTER HA +11AC9 ; [.49DF.0020.0002] # PAU CIN HAU LETTER GA +11ACA ; [.49E0.0020.0002] # PAU CIN HAU LETTER KHA +11ACB ; [.49E1.0020.0002] # PAU CIN HAU LETTER SA +11ACC ; [.49E2.0020.0002] # PAU CIN HAU LETTER BA +11ACD ; [.49E3.0020.0002] # PAU CIN HAU LETTER CA +11ACE ; [.49E4.0020.0002] # PAU CIN HAU LETTER TA +11ACF ; [.49E5.0020.0002] # PAU CIN HAU LETTER THA +11AD0 ; [.49E6.0020.0002] # PAU CIN HAU LETTER NA +11AD1 ; [.49E7.0020.0002] # PAU CIN HAU LETTER PHA +11AD2 ; [.49E8.0020.0002] # PAU CIN HAU LETTER RA +11AD3 ; [.49E9.0020.0002] # PAU CIN HAU LETTER FA +11AD4 ; [.49EA.0020.0002] # PAU CIN HAU LETTER CHA +11ADC ; [.49EB.0020.0002] # PAU CIN HAU LETTER FINAL P +11ADD ; [.49EC.0020.0002] # PAU CIN HAU LETTER FINAL K +11ADF ; [.49ED.0020.0002] # PAU CIN HAU LETTER FINAL M +11AE0 ; [.49EE.0020.0002] # PAU CIN HAU LETTER FINAL N +11AE1 ; [.49EF.0020.0002] # PAU CIN HAU LETTER FINAL L +11AE2 ; [.49F0.0020.0002] # PAU CIN HAU LETTER FINAL W +11AE3 ; [.49F1.0020.0002] # PAU CIN HAU LETTER FINAL NG +11ADE ; [.49F2.0020.0002] # PAU CIN HAU LETTER FINAL T +11AE4 ; [.49F3.0020.0002] # PAU CIN HAU LETTER FINAL Y +11AEF ; [.49F4.0020.0002] # PAU CIN HAU MID-LEVEL TONE +11AF2 ; [.49F5.0020.0002] # PAU CIN HAU MID-LEVEL TONE FINAL +11AF1 ; [.49F6.0020.0002] # PAU CIN HAU MID-LEVEL TONE LONG FINAL +11AE6 ; [.49F7.0020.0002] # PAU CIN HAU RISING TONE +11AE9 ; [.49F8.0020.0002] # PAU CIN HAU RISING TONE FINAL +11AE5 ; [.49F9.0020.0002] # PAU CIN HAU RISING TONE LONG +11AE8 ; [.49FA.0020.0002] # PAU CIN HAU RISING TONE LONG FINAL +11AF4 ; [.49FB.0020.0002] # PAU CIN HAU LOW-FALLING TONE +11AF7 ; [.49FC.0020.0002] # PAU CIN HAU LOW-FALLING TONE FINAL +11AF3 ; [.49FD.0020.0002] # PAU CIN HAU LOW-FALLING TONE LONG +11AF6 ; [.49FE.0020.0002] # PAU CIN HAU LOW-FALLING TONE LONG FINAL +11AEC ; [.49FF.0020.0002] # PAU CIN HAU SANDHI TONE +11AEE ; [.4A00.0020.0002] # PAU CIN HAU SANDHI TONE FINAL +11AEB ; [.4A01.0020.0002] # PAU CIN HAU SANDHI TONE LONG +11AED ; [.4A02.0020.0002] # PAU CIN HAU SANDHI TONE LONG FINAL +11AF5 ; [.4A03.0020.0002] # PAU CIN HAU GLOTTAL STOP +11AF8 ; [.4A04.0020.0002] # PAU CIN HAU GLOTTAL STOP FINAL +11AE7 ; [.4A05.0020.0002] # PAU CIN HAU SANDHI GLOTTAL STOP +11AEA ; [.4A06.0020.0002] # PAU CIN HAU SANDHI GLOTTAL STOP FINAL +11AF0 ; [.4A07.0020.0002] # PAU CIN HAU GLOTTAL STOP VARIANT +16B00 ; [.4A08.0020.0002] # PAHAWH HMONG VOWEL KEEB +16B01 ; [.4A09.0020.0002] # PAHAWH HMONG VOWEL KEEV +16B02 ; [.4A0A.0020.0002] # PAHAWH HMONG VOWEL KIB +16B03 ; [.4A0B.0020.0002] # PAHAWH HMONG VOWEL KIV +16B04 ; [.4A0C.0020.0002] # PAHAWH HMONG VOWEL KAUB +16B05 ; [.4A0D.0020.0002] # PAHAWH HMONG VOWEL KAUV +16B06 ; [.4A0E.0020.0002] # PAHAWH HMONG VOWEL KUB +16B07 ; [.4A0F.0020.0002] # PAHAWH HMONG VOWEL KUV +16B08 ; [.4A10.0020.0002] # PAHAWH HMONG VOWEL KEB +16B09 ; [.4A11.0020.0002] # PAHAWH HMONG VOWEL KEV +16B0A ; [.4A12.0020.0002] # PAHAWH HMONG VOWEL KAIB +16B0B ; [.4A13.0020.0002] # PAHAWH HMONG VOWEL KAIV +16B0C ; [.4A14.0020.0002] # PAHAWH HMONG VOWEL KOOB +16B0D ; [.4A15.0020.0002] # PAHAWH HMONG VOWEL KOOV +16B0E ; [.4A16.0020.0002] # PAHAWH HMONG VOWEL KAWB +16B0F ; [.4A17.0020.0002] # PAHAWH HMONG VOWEL KAWV +16B10 ; [.4A18.0020.0002] # PAHAWH HMONG VOWEL KUAB +16B11 ; [.4A19.0020.0002] # PAHAWH HMONG VOWEL KUAV +16B12 ; [.4A1A.0020.0002] # PAHAWH HMONG VOWEL KOB +16B13 ; [.4A1B.0020.0002] # PAHAWH HMONG VOWEL KOV +16B14 ; [.4A1C.0020.0002] # PAHAWH HMONG VOWEL KIAB +16B15 ; [.4A1D.0020.0002] # PAHAWH HMONG VOWEL KIAV +16B16 ; [.4A1E.0020.0002] # PAHAWH HMONG VOWEL KAB +16B17 ; [.4A1F.0020.0002] # PAHAWH HMONG VOWEL KAV +16B18 ; [.4A20.0020.0002] # PAHAWH HMONG VOWEL KWB +16B19 ; [.4A21.0020.0002] # PAHAWH HMONG VOWEL KWV +16B1A ; [.4A22.0020.0002] # PAHAWH HMONG VOWEL KAAB +16B1B ; [.4A23.0020.0002] # PAHAWH HMONG VOWEL KAAV +16B1C ; [.4A24.0020.0002] # PAHAWH HMONG CONSONANT VAU +16B1D ; [.4A25.0020.0002] # PAHAWH HMONG CONSONANT NTSAU +16B1E ; [.4A26.0020.0002] # PAHAWH HMONG CONSONANT LAU +16B1F ; [.4A27.0020.0002] # PAHAWH HMONG CONSONANT HAU +16B20 ; [.4A28.0020.0002] # PAHAWH HMONG CONSONANT NLAU +16B21 ; [.4A29.0020.0002] # PAHAWH HMONG CONSONANT RAU +16B22 ; [.4A2A.0020.0002] # PAHAWH HMONG CONSONANT NKAU +16B23 ; [.4A2B.0020.0002] # PAHAWH HMONG CONSONANT QHAU +16B24 ; [.4A2C.0020.0002] # PAHAWH HMONG CONSONANT YAU +16B25 ; [.4A2D.0020.0002] # PAHAWH HMONG CONSONANT HLAU +16B26 ; [.4A2E.0020.0002] # PAHAWH HMONG CONSONANT MAU +16B27 ; [.4A2F.0020.0002] # PAHAWH HMONG CONSONANT CHAU +16B28 ; [.4A30.0020.0002] # PAHAWH HMONG CONSONANT NCHAU +16B29 ; [.4A31.0020.0002] # PAHAWH HMONG CONSONANT HNAU +16B2A ; [.4A32.0020.0002] # PAHAWH HMONG CONSONANT PLHAU +16B2B ; [.4A33.0020.0002] # PAHAWH HMONG CONSONANT NTHAU +16B2C ; [.4A34.0020.0002] # PAHAWH HMONG CONSONANT NAU +16B2D ; [.4A35.0020.0002] # PAHAWH HMONG CONSONANT AU +16B2E ; [.4A36.0020.0002] # PAHAWH HMONG CONSONANT XAU +16B2F ; [.4A37.0020.0002] # PAHAWH HMONG CONSONANT CAU +16B40 ; [.4A38.0020.0002] # PAHAWH HMONG SIGN VOS SEEV +16B41 ; [.4A39.0020.0002] # PAHAWH HMONG SIGN MEEJ SUAB +16B63 ; [.4A3A.0020.0002] # PAHAWH HMONG SIGN VOS LUB +16B64 ; [.4A3B.0020.0002] # PAHAWH HMONG SIGN XYOO +16B65 ; [.4A3C.0020.0002] # PAHAWH HMONG SIGN HLI +16B66 ; [.4A3D.0020.0002] # PAHAWH HMONG SIGN THIRD-STAGE HLI +16B67 ; [.4A3E.0020.0002] # PAHAWH HMONG SIGN ZWJ THAJ +16B68 ; [.4A3F.0020.0002] # PAHAWH HMONG SIGN HNUB +16B69 ; [.4A40.0020.0002] # PAHAWH HMONG SIGN NQIG +16B6A ; [.4A41.0020.0002] # PAHAWH HMONG SIGN XIAB +16B6B ; [.4A42.0020.0002] # PAHAWH HMONG SIGN NTUJ +16B6C ; [.4A43.0020.0002] # PAHAWH HMONG SIGN AV +16B6D ; [.4A44.0020.0002] # PAHAWH HMONG SIGN TXHEEJ CEEV +16B6E ; [.4A45.0020.0002] # PAHAWH HMONG SIGN MEEJ TSEEB +16B6F ; [.4A46.0020.0002] # PAHAWH HMONG SIGN TAU +16B70 ; [.4A47.0020.0002] # PAHAWH HMONG SIGN LOS +16B71 ; [.4A48.0020.0002] # PAHAWH HMONG SIGN MUS +16B72 ; [.4A49.0020.0002] # PAHAWH HMONG SIGN CIM HAIS LUS NTOG NTOG +16B73 ; [.4A4A.0020.0002] # PAHAWH HMONG SIGN CIM CUAM TSHOOJ +16B74 ; [.4A4B.0020.0002] # PAHAWH HMONG SIGN CIM TXWV +16B75 ; [.4A4C.0020.0002] # PAHAWH HMONG SIGN CIM TXWV CHWV +16B76 ; [.4A4D.0020.0002] # PAHAWH HMONG SIGN CIM PUB DAWB +16B77 ; [.4A4E.0020.0002] # PAHAWH HMONG SIGN CIM NRES TOS +16B7D ; [.4A4F.0020.0002] # PAHAWH HMONG CLAN SIGN TSHEEJ +16B7E ; [.4A50.0020.0002] # PAHAWH HMONG CLAN SIGN YEEG +16B7F ; [.4A51.0020.0002] # PAHAWH HMONG CLAN SIGN LIS +16B80 ; [.4A52.0020.0002] # PAHAWH HMONG CLAN SIGN LAUJ +16B81 ; [.4A53.0020.0002] # PAHAWH HMONG CLAN SIGN XYOOJ +16B82 ; [.4A54.0020.0002] # PAHAWH HMONG CLAN SIGN KOO +16B83 ; [.4A55.0020.0002] # PAHAWH HMONG CLAN SIGN HAWJ +16B84 ; [.4A56.0020.0002] # PAHAWH HMONG CLAN SIGN MUAS +16B85 ; [.4A57.0020.0002] # PAHAWH HMONG CLAN SIGN THOJ +16B86 ; [.4A58.0020.0002] # PAHAWH HMONG CLAN SIGN TSAB +16B87 ; [.4A59.0020.0002] # PAHAWH HMONG CLAN SIGN PHAB +16B88 ; [.4A5A.0020.0002] # PAHAWH HMONG CLAN SIGN KHAB +16B89 ; [.4A5B.0020.0002] # PAHAWH HMONG CLAN SIGN HAM +16B8A ; [.4A5C.0020.0002] # PAHAWH HMONG CLAN SIGN VAJ +16B8B ; [.4A5D.0020.0002] # PAHAWH HMONG CLAN SIGN FAJ +16B8C ; [.4A5E.0020.0002] # PAHAWH HMONG CLAN SIGN YAJ +16B8D ; [.4A5F.0020.0002] # PAHAWH HMONG CLAN SIGN TSWB +16B8E ; [.4A60.0020.0002] # PAHAWH HMONG CLAN SIGN KWM +16B8F ; [.4A61.0020.0002] # PAHAWH HMONG CLAN SIGN VWJ +1E100 ; [.4A62.0020.0002] # NYIAKENG PUACHUE HMONG LETTER MA +1E101 ; [.4A63.0020.0002] # NYIAKENG PUACHUE HMONG LETTER TSA +1E102 ; [.4A64.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NTA +1E103 ; [.4A65.0020.0002] # NYIAKENG PUACHUE HMONG LETTER TA +1E104 ; [.4A66.0020.0002] # NYIAKENG PUACHUE HMONG LETTER HA +1E105 ; [.4A67.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NA +1E106 ; [.4A68.0020.0002] # NYIAKENG PUACHUE HMONG LETTER XA +1E107 ; [.4A69.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NKA +1E108 ; [.4A6A.0020.0002] # NYIAKENG PUACHUE HMONG LETTER CA +1E109 ; [.4A6B.0020.0002] # NYIAKENG PUACHUE HMONG LETTER LA +1E10A ; [.4A6C.0020.0002] # NYIAKENG PUACHUE HMONG LETTER SA +1E10B ; [.4A6D.0020.0002] # NYIAKENG PUACHUE HMONG LETTER ZA +1E10C ; [.4A6E.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NCA +1E10D ; [.4A6F.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NTSA +1E10E ; [.4A70.0020.0002] # NYIAKENG PUACHUE HMONG LETTER KA +1E10F ; [.4A71.0020.0002] # NYIAKENG PUACHUE HMONG LETTER DA +1E110 ; [.4A72.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NYA +1E111 ; [.4A73.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NRA +1E112 ; [.4A74.0020.0002] # NYIAKENG PUACHUE HMONG LETTER VA +1E113 ; [.4A75.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NTXA +1E114 ; [.4A76.0020.0002] # NYIAKENG PUACHUE HMONG LETTER TXA +1E115 ; [.4A77.0020.0002] # NYIAKENG PUACHUE HMONG LETTER FA +1E116 ; [.4A78.0020.0002] # NYIAKENG PUACHUE HMONG LETTER RA +1E117 ; [.4A79.0020.0002] # NYIAKENG PUACHUE HMONG LETTER QA +1E118 ; [.4A7A.0020.0002] # NYIAKENG PUACHUE HMONG LETTER YA +1E119 ; [.4A7B.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NQA +1E11A ; [.4A7C.0020.0002] # NYIAKENG PUACHUE HMONG LETTER PA +1E11B ; [.4A7D.0020.0002] # NYIAKENG PUACHUE HMONG LETTER XYA +1E11C ; [.4A7E.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NPA +1E11D ; [.4A7F.0020.0002] # NYIAKENG PUACHUE HMONG LETTER DLA +1E11E ; [.4A80.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NPLA +1E11F ; [.4A81.0020.0002] # NYIAKENG PUACHUE HMONG LETTER HAH +1E120 ; [.4A82.0020.0002] # NYIAKENG PUACHUE HMONG LETTER MLA +1E121 ; [.4A83.0020.0002] # NYIAKENG PUACHUE HMONG LETTER PLA +1E122 ; [.4A84.0020.0002] # NYIAKENG PUACHUE HMONG LETTER GA +1E123 ; [.4A85.0020.0002] # NYIAKENG PUACHUE HMONG LETTER RRA +1E124 ; [.4A86.0020.0002] # NYIAKENG PUACHUE HMONG LETTER A +1E125 ; [.4A87.0020.0002] # NYIAKENG PUACHUE HMONG LETTER AA +1E126 ; [.4A88.0020.0002] # NYIAKENG PUACHUE HMONG LETTER I +1E127 ; [.4A89.0020.0002] # NYIAKENG PUACHUE HMONG LETTER U +1E128 ; [.4A8A.0020.0002] # NYIAKENG PUACHUE HMONG LETTER O +1E129 ; [.4A8B.0020.0002] # NYIAKENG PUACHUE HMONG LETTER OO +1E12A ; [.4A8C.0020.0002] # NYIAKENG PUACHUE HMONG LETTER E +1E12B ; [.4A8D.0020.0002] # NYIAKENG PUACHUE HMONG LETTER EE +1E12C ; [.4A8E.0020.0002] # NYIAKENG PUACHUE HMONG LETTER W +1E137 ; [.4A8F.0020.0002] # NYIAKENG PUACHUE HMONG SIGN FOR PERSON +1E138 ; [.4A90.0020.0002] # NYIAKENG PUACHUE HMONG SIGN FOR THING +1E139 ; [.4A91.0020.0002] # NYIAKENG PUACHUE HMONG SIGN FOR LOCATION +1E13A ; [.4A92.0020.0002] # NYIAKENG PUACHUE HMONG SIGN FOR ANIMAL +1E13B ; [.4A93.0020.0002] # NYIAKENG PUACHUE HMONG SIGN FOR INVERTEBRATE +1E14E ; [.4A94.0020.0002] # NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ +1E2C0 ; [.4A95.0020.0002] # WANCHO LETTER AA +1E2C1 ; [.4A96.0020.0002] # WANCHO LETTER A +1E2C2 ; [.4A97.0020.0002] # WANCHO LETTER BA +1E2C3 ; [.4A98.0020.0002] # WANCHO LETTER CA +1E2C4 ; [.4A99.0020.0002] # WANCHO LETTER DA +1E2C5 ; [.4A9A.0020.0002] # WANCHO LETTER GA +1E2C6 ; [.4A9B.0020.0002] # WANCHO LETTER YA +1E2C7 ; [.4A9C.0020.0002] # WANCHO LETTER PHA +1E2C8 ; [.4A9D.0020.0002] # WANCHO LETTER LA +1E2C9 ; [.4A9E.0020.0002] # WANCHO LETTER NA +1E2CA ; [.4A9F.0020.0002] # WANCHO LETTER PA +1E2CB ; [.4AA0.0020.0002] # WANCHO LETTER TA +1E2CC ; [.4AA1.0020.0002] # WANCHO LETTER THA +1E2CD ; [.4AA2.0020.0002] # WANCHO LETTER FA +1E2CE ; [.4AA3.0020.0002] # WANCHO LETTER SA +1E2CF ; [.4AA4.0020.0002] # WANCHO LETTER SHA +1E2D0 ; [.4AA5.0020.0002] # WANCHO LETTER JA +1E2D1 ; [.4AA6.0020.0002] # WANCHO LETTER ZA +1E2D2 ; [.4AA7.0020.0002] # WANCHO LETTER WA +1E2D3 ; [.4AA8.0020.0002] # WANCHO LETTER VA +1E2D4 ; [.4AA9.0020.0002] # WANCHO LETTER KA +1E2D5 ; [.4AAA.0020.0002] # WANCHO LETTER O +1E2D6 ; [.4AAB.0020.0002] # WANCHO LETTER AU +1E2D7 ; [.4AAC.0020.0002] # WANCHO LETTER RA +1E2D8 ; [.4AAD.0020.0002] # WANCHO LETTER MA +1E2D9 ; [.4AAE.0020.0002] # WANCHO LETTER KHA +1E2DA ; [.4AAF.0020.0002] # WANCHO LETTER HA +1E2DB ; [.4AB0.0020.0002] # WANCHO LETTER E +1E2DC ; [.4AB1.0020.0002] # WANCHO LETTER I +1E2DD ; [.4AB2.0020.0002] # WANCHO LETTER NGA +1E2DE ; [.4AB3.0020.0002] # WANCHO LETTER U +1E2DF ; [.4AB4.0020.0002] # WANCHO LETTER LLHA +1E2E0 ; [.4AB5.0020.0002] # WANCHO LETTER TSA +1E2E1 ; [.4AB6.0020.0002] # WANCHO LETTER TRA +1E2E2 ; [.4AB7.0020.0002] # WANCHO LETTER ONG +1E2E3 ; [.4AB8.0020.0002] # WANCHO LETTER AANG +1E2E4 ; [.4AB9.0020.0002] # WANCHO LETTER ANG +1E2E5 ; [.4ABA.0020.0002] # WANCHO LETTER ING +1E2E6 ; [.4ABB.0020.0002] # WANCHO LETTER ON +1E2E7 ; [.4ABC.0020.0002] # WANCHO LETTER EN +1E2E8 ; [.4ABD.0020.0002] # WANCHO LETTER AAN +1E2E9 ; [.4ABE.0020.0002] # WANCHO LETTER NYA +1E2EA ; [.4ABF.0020.0002] # WANCHO LETTER UEN +1E2EB ; [.4AC0.0020.0002] # WANCHO LETTER YIH +10280 ; [.4AC1.0020.0002] # LYCIAN LETTER A +10281 ; [.4AC2.0020.0002] # LYCIAN LETTER E +10282 ; [.4AC3.0020.0002] # LYCIAN LETTER B +10283 ; [.4AC4.0020.0002] # LYCIAN LETTER BH +10284 ; [.4AC5.0020.0002] # LYCIAN LETTER G +10285 ; [.4AC6.0020.0002] # LYCIAN LETTER D +10286 ; [.4AC7.0020.0002] # LYCIAN LETTER I +10287 ; [.4AC8.0020.0002] # LYCIAN LETTER W +10288 ; [.4AC9.0020.0002] # LYCIAN LETTER Z +10289 ; [.4ACA.0020.0002] # LYCIAN LETTER TH +1028A ; [.4ACB.0020.0002] # LYCIAN LETTER J +1028B ; [.4ACC.0020.0002] # LYCIAN LETTER K +1028C ; [.4ACD.0020.0002] # LYCIAN LETTER Q +1028D ; [.4ACE.0020.0002] # LYCIAN LETTER L +1028E ; [.4ACF.0020.0002] # LYCIAN LETTER M +1028F ; [.4AD0.0020.0002] # LYCIAN LETTER N +10290 ; [.4AD1.0020.0002] # LYCIAN LETTER MM +10291 ; [.4AD2.0020.0002] # LYCIAN LETTER NN +10292 ; [.4AD3.0020.0002] # LYCIAN LETTER U +10293 ; [.4AD4.0020.0002] # LYCIAN LETTER P +10294 ; [.4AD5.0020.0002] # LYCIAN LETTER KK +10295 ; [.4AD6.0020.0002] # LYCIAN LETTER R +10296 ; [.4AD7.0020.0002] # LYCIAN LETTER S +10297 ; [.4AD8.0020.0002] # LYCIAN LETTER T +10298 ; [.4AD9.0020.0002] # LYCIAN LETTER TT +10299 ; [.4ADA.0020.0002] # LYCIAN LETTER AN +1029A ; [.4ADB.0020.0002] # LYCIAN LETTER EN +1029B ; [.4ADC.0020.0002] # LYCIAN LETTER H +1029C ; [.4ADD.0020.0002] # LYCIAN LETTER X +102A0 ; [.4ADE.0020.0002] # CARIAN LETTER A +102A1 ; [.4ADF.0020.0002] # CARIAN LETTER P2 +102A2 ; [.4AE0.0020.0002] # CARIAN LETTER D +102A3 ; [.4AE1.0020.0002] # CARIAN LETTER L +102A4 ; [.4AE2.0020.0002] # CARIAN LETTER UUU +102A5 ; [.4AE3.0020.0002] # CARIAN LETTER R +102A6 ; [.4AE4.0020.0002] # CARIAN LETTER LD +102A7 ; [.4AE5.0020.0002] # CARIAN LETTER A2 +102A8 ; [.4AE6.0020.0002] # CARIAN LETTER Q +102A9 ; [.4AE7.0020.0002] # CARIAN LETTER B +102AA ; [.4AE8.0020.0002] # CARIAN LETTER M +102AB ; [.4AE9.0020.0002] # CARIAN LETTER O +102AC ; [.4AEA.0020.0002] # CARIAN LETTER D2 +102AD ; [.4AEB.0020.0002] # CARIAN LETTER T +102AE ; [.4AEC.0020.0002] # CARIAN LETTER SH +102AF ; [.4AED.0020.0002] # CARIAN LETTER SH2 +102B0 ; [.4AEE.0020.0002] # CARIAN LETTER S +102B1 ; [.4AEF.0020.0002] # CARIAN LETTER C-18 +102B2 ; [.4AF0.0020.0002] # CARIAN LETTER U +102B3 ; [.4AF1.0020.0002] # CARIAN LETTER NN +102B4 ; [.4AF2.0020.0002] # CARIAN LETTER X +102B5 ; [.4AF3.0020.0002] # CARIAN LETTER N +102B6 ; [.4AF4.0020.0002] # CARIAN LETTER TT2 +102B7 ; [.4AF5.0020.0002] # CARIAN LETTER P +102B8 ; [.4AF6.0020.0002] # CARIAN LETTER SS +102B9 ; [.4AF7.0020.0002] # CARIAN LETTER I +102BA ; [.4AF8.0020.0002] # CARIAN LETTER E +102BB ; [.4AF9.0020.0002] # CARIAN LETTER UUUU +102BC ; [.4AFA.0020.0002] # CARIAN LETTER K +102BD ; [.4AFB.0020.0002] # CARIAN LETTER K2 +102BE ; [.4AFC.0020.0002] # CARIAN LETTER ND +102BF ; [.4AFD.0020.0002] # CARIAN LETTER UU +102C0 ; [.4AFE.0020.0002] # CARIAN LETTER G +102C1 ; [.4AFF.0020.0002] # CARIAN LETTER G2 +102C2 ; [.4B00.0020.0002] # CARIAN LETTER ST +102C3 ; [.4B01.0020.0002] # CARIAN LETTER ST2 +102C4 ; [.4B02.0020.0002] # CARIAN LETTER NG +102C5 ; [.4B03.0020.0002] # CARIAN LETTER II +102C6 ; [.4B04.0020.0002] # CARIAN LETTER C-39 +102C7 ; [.4B05.0020.0002] # CARIAN LETTER TT +102C8 ; [.4B06.0020.0002] # CARIAN LETTER UUU2 +102C9 ; [.4B07.0020.0002] # CARIAN LETTER RR +102CA ; [.4B08.0020.0002] # CARIAN LETTER MB +102CB ; [.4B09.0020.0002] # CARIAN LETTER MB2 +102CC ; [.4B0A.0020.0002] # CARIAN LETTER MB3 +102CD ; [.4B0B.0020.0002] # CARIAN LETTER MB4 +102CE ; [.4B0C.0020.0002] # CARIAN LETTER LD2 +102CF ; [.4B0D.0020.0002] # CARIAN LETTER E2 +102D0 ; [.4B0E.0020.0002] # CARIAN LETTER UUU3 +10920 ; [.4B0F.0020.0002] # LYDIAN LETTER A +10921 ; [.4B10.0020.0002] # LYDIAN LETTER B +10922 ; [.4B11.0020.0002] # LYDIAN LETTER G +10923 ; [.4B12.0020.0002] # LYDIAN LETTER D +10924 ; [.4B13.0020.0002] # LYDIAN LETTER E +10925 ; [.4B14.0020.0002] # LYDIAN LETTER V +10926 ; [.4B15.0020.0002] # LYDIAN LETTER I +10927 ; [.4B16.0020.0002] # LYDIAN LETTER Y +10928 ; [.4B17.0020.0002] # LYDIAN LETTER K +10929 ; [.4B18.0020.0002] # LYDIAN LETTER L +1092A ; [.4B19.0020.0002] # LYDIAN LETTER M +1092B ; [.4B1A.0020.0002] # LYDIAN LETTER N +1092C ; [.4B1B.0020.0002] # LYDIAN LETTER O +1092D ; [.4B1C.0020.0002] # LYDIAN LETTER R +1092E ; [.4B1D.0020.0002] # LYDIAN LETTER SS +1092F ; [.4B1E.0020.0002] # LYDIAN LETTER T +10930 ; [.4B1F.0020.0002] # LYDIAN LETTER U +10931 ; [.4B20.0020.0002] # LYDIAN LETTER F +10932 ; [.4B21.0020.0002] # LYDIAN LETTER Q +10933 ; [.4B22.0020.0002] # LYDIAN LETTER S +10934 ; [.4B23.0020.0002] # LYDIAN LETTER TT +10935 ; [.4B24.0020.0002] # LYDIAN LETTER AN +10936 ; [.4B25.0020.0002] # LYDIAN LETTER EN +10937 ; [.4B26.0020.0002] # LYDIAN LETTER LY +10938 ; [.4B27.0020.0002] # LYDIAN LETTER NN +10939 ; [.4B28.0020.0002] # LYDIAN LETTER C +10300 ; [.4B29.0020.0002] # OLD ITALIC LETTER A +10301 ; [.4B2A.0020.0002] # OLD ITALIC LETTER BE +10302 ; [.4B2B.0020.0002] # OLD ITALIC LETTER KE +10303 ; [.4B2C.0020.0002] # OLD ITALIC LETTER DE +10304 ; [.4B2D.0020.0002] # OLD ITALIC LETTER E +10305 ; [.4B2E.0020.0002] # OLD ITALIC LETTER VE +10306 ; [.4B2F.0020.0002] # OLD ITALIC LETTER ZE +10307 ; [.4B30.0020.0002] # OLD ITALIC LETTER HE +10308 ; [.4B31.0020.0002] # OLD ITALIC LETTER THE +10309 ; [.4B32.0020.0002] # OLD ITALIC LETTER I +1030A ; [.4B33.0020.0002] # OLD ITALIC LETTER KA +1030B ; [.4B34.0020.0002] # OLD ITALIC LETTER EL +1030C ; [.4B35.0020.0002] # OLD ITALIC LETTER EM +1030D ; [.4B36.0020.0002] # OLD ITALIC LETTER EN +1030E ; [.4B37.0020.0002] # OLD ITALIC LETTER ESH +1031F ; [.4B38.0020.0002] # OLD ITALIC LETTER ESS +1030F ; [.4B39.0020.0002] # OLD ITALIC LETTER O +10310 ; [.4B3A.0020.0002] # OLD ITALIC LETTER PE +10311 ; [.4B3B.0020.0002] # OLD ITALIC LETTER SHE +10312 ; [.4B3C.0020.0002] # OLD ITALIC LETTER KU +10313 ; [.4B3D.0020.0002] # OLD ITALIC LETTER ER +10314 ; [.4B3E.0020.0002] # OLD ITALIC LETTER ES +10315 ; [.4B3F.0020.0002] # OLD ITALIC LETTER TE +10316 ; [.4B40.0020.0002] # OLD ITALIC LETTER U +10317 ; [.4B41.0020.0002] # OLD ITALIC LETTER EKS +10318 ; [.4B42.0020.0002] # OLD ITALIC LETTER PHE +10319 ; [.4B43.0020.0002] # OLD ITALIC LETTER KHE +1031A ; [.4B44.0020.0002] # OLD ITALIC LETTER EF +1031B ; [.4B45.0020.0002] # OLD ITALIC LETTER ERS +1031C ; [.4B46.0020.0002] # OLD ITALIC LETTER CHE +1031D ; [.4B47.0020.0002] # OLD ITALIC LETTER II +1031E ; [.4B48.0020.0002] # OLD ITALIC LETTER UU +1032D ; [.4B49.0020.0002] # OLD ITALIC LETTER YE +1032E ; [.4B4A.0020.0002] # OLD ITALIC LETTER NORTHERN TSE +1032F ; [.4B4B.0020.0002] # OLD ITALIC LETTER SOUTHERN TSE +10330 ; [.4B4C.0020.0002] # GOTHIC LETTER AHSA +10331 ; [.4B4D.0020.0002] # GOTHIC LETTER BAIRKAN +10332 ; [.4B4E.0020.0002] # GOTHIC LETTER GIBA +10333 ; [.4B4F.0020.0002] # GOTHIC LETTER DAGS +10334 ; [.4B50.0020.0002] # GOTHIC LETTER AIHVUS +10335 ; [.4B51.0020.0002] # GOTHIC LETTER QAIRTHRA +10336 ; [.4B52.0020.0002] # GOTHIC LETTER IUJA +10337 ; [.4B53.0020.0002] # GOTHIC LETTER HAGL +10338 ; [.4B54.0020.0002] # GOTHIC LETTER THIUTH +10339 ; [.4B55.0020.0002] # GOTHIC LETTER EIS +1033A ; [.4B56.0020.0002] # GOTHIC LETTER KUSMA +1033B ; [.4B57.0020.0002] # GOTHIC LETTER LAGUS +1033C ; [.4B58.0020.0002] # GOTHIC LETTER MANNA +1033D ; [.4B59.0020.0002] # GOTHIC LETTER NAUTHS +1033E ; [.4B5A.0020.0002] # GOTHIC LETTER JER +1033F ; [.4B5B.0020.0002] # GOTHIC LETTER URUS +10340 ; [.4B5C.0020.0002] # GOTHIC LETTER PAIRTHRA +10341 ; [.4B5D.0020.0002] # GOTHIC LETTER NINETY +10342 ; [.4B5E.0020.0002] # GOTHIC LETTER RAIDA +10343 ; [.4B5F.0020.0002] # GOTHIC LETTER SAUIL +10344 ; [.4B60.0020.0002] # GOTHIC LETTER TEIWS +10345 ; [.4B61.0020.0002] # GOTHIC LETTER WINJA +10346 ; [.4B62.0020.0002] # GOTHIC LETTER FAIHU +10347 ; [.4B63.0020.0002] # GOTHIC LETTER IGGWS +10348 ; [.4B64.0020.0002] # GOTHIC LETTER HWAIR +10349 ; [.4B65.0020.0002] # GOTHIC LETTER OTHAL +1034A ; [.4B66.0020.0002] # GOTHIC LETTER NINE HUNDRED +10428 ; [.4B67.0020.0002] # DESERET SMALL LETTER LONG I +10400 ; [.4B67.0020.0008] # DESERET CAPITAL LETTER LONG I +10429 ; [.4B68.0020.0002] # DESERET SMALL LETTER LONG E +10401 ; [.4B68.0020.0008] # DESERET CAPITAL LETTER LONG E +1042A ; [.4B69.0020.0002] # DESERET SMALL LETTER LONG A +10402 ; [.4B69.0020.0008] # DESERET CAPITAL LETTER LONG A +1042B ; [.4B6A.0020.0002] # DESERET SMALL LETTER LONG AH +10403 ; [.4B6A.0020.0008] # DESERET CAPITAL LETTER LONG AH +1042C ; [.4B6B.0020.0002] # DESERET SMALL LETTER LONG O +10404 ; [.4B6B.0020.0008] # DESERET CAPITAL LETTER LONG O +1042D ; [.4B6C.0020.0002] # DESERET SMALL LETTER LONG OO +10405 ; [.4B6C.0020.0008] # DESERET CAPITAL LETTER LONG OO +1042E ; [.4B6D.0020.0002] # DESERET SMALL LETTER SHORT I +10406 ; [.4B6D.0020.0008] # DESERET CAPITAL LETTER SHORT I +1042F ; [.4B6E.0020.0002] # DESERET SMALL LETTER SHORT E +10407 ; [.4B6E.0020.0008] # DESERET CAPITAL LETTER SHORT E +10430 ; [.4B6F.0020.0002] # DESERET SMALL LETTER SHORT A +10408 ; [.4B6F.0020.0008] # DESERET CAPITAL LETTER SHORT A +10431 ; [.4B70.0020.0002] # DESERET SMALL LETTER SHORT AH +10409 ; [.4B70.0020.0008] # DESERET CAPITAL LETTER SHORT AH +10432 ; [.4B71.0020.0002] # DESERET SMALL LETTER SHORT O +1040A ; [.4B71.0020.0008] # DESERET CAPITAL LETTER SHORT O +10433 ; [.4B72.0020.0002] # DESERET SMALL LETTER SHORT OO +1040B ; [.4B72.0020.0008] # DESERET CAPITAL LETTER SHORT OO +10434 ; [.4B73.0020.0002] # DESERET SMALL LETTER AY +1040C ; [.4B73.0020.0008] # DESERET CAPITAL LETTER AY +10435 ; [.4B74.0020.0002] # DESERET SMALL LETTER OW +1040D ; [.4B74.0020.0008] # DESERET CAPITAL LETTER OW +10436 ; [.4B75.0020.0002] # DESERET SMALL LETTER WU +1040E ; [.4B75.0020.0008] # DESERET CAPITAL LETTER WU +10437 ; [.4B76.0020.0002] # DESERET SMALL LETTER YEE +1040F ; [.4B76.0020.0008] # DESERET CAPITAL LETTER YEE +10438 ; [.4B77.0020.0002] # DESERET SMALL LETTER H +10410 ; [.4B77.0020.0008] # DESERET CAPITAL LETTER H +10439 ; [.4B78.0020.0002] # DESERET SMALL LETTER PEE +10411 ; [.4B78.0020.0008] # DESERET CAPITAL LETTER PEE +1043A ; [.4B79.0020.0002] # DESERET SMALL LETTER BEE +10412 ; [.4B79.0020.0008] # DESERET CAPITAL LETTER BEE +1043B ; [.4B7A.0020.0002] # DESERET SMALL LETTER TEE +10413 ; [.4B7A.0020.0008] # DESERET CAPITAL LETTER TEE +1043C ; [.4B7B.0020.0002] # DESERET SMALL LETTER DEE +10414 ; [.4B7B.0020.0008] # DESERET CAPITAL LETTER DEE +1043D ; [.4B7C.0020.0002] # DESERET SMALL LETTER CHEE +10415 ; [.4B7C.0020.0008] # DESERET CAPITAL LETTER CHEE +1043E ; [.4B7D.0020.0002] # DESERET SMALL LETTER JEE +10416 ; [.4B7D.0020.0008] # DESERET CAPITAL LETTER JEE +1043F ; [.4B7E.0020.0002] # DESERET SMALL LETTER KAY +10417 ; [.4B7E.0020.0008] # DESERET CAPITAL LETTER KAY +10440 ; [.4B7F.0020.0002] # DESERET SMALL LETTER GAY +10418 ; [.4B7F.0020.0008] # DESERET CAPITAL LETTER GAY +10441 ; [.4B80.0020.0002] # DESERET SMALL LETTER EF +10419 ; [.4B80.0020.0008] # DESERET CAPITAL LETTER EF +10442 ; [.4B81.0020.0002] # DESERET SMALL LETTER VEE +1041A ; [.4B81.0020.0008] # DESERET CAPITAL LETTER VEE +10443 ; [.4B82.0020.0002] # DESERET SMALL LETTER ETH +1041B ; [.4B82.0020.0008] # DESERET CAPITAL LETTER ETH +10444 ; [.4B83.0020.0002] # DESERET SMALL LETTER THEE +1041C ; [.4B83.0020.0008] # DESERET CAPITAL LETTER THEE +10445 ; [.4B84.0020.0002] # DESERET SMALL LETTER ES +1041D ; [.4B84.0020.0008] # DESERET CAPITAL LETTER ES +10446 ; [.4B85.0020.0002] # DESERET SMALL LETTER ZEE +1041E ; [.4B85.0020.0008] # DESERET CAPITAL LETTER ZEE +10447 ; [.4B86.0020.0002] # DESERET SMALL LETTER ESH +1041F ; [.4B86.0020.0008] # DESERET CAPITAL LETTER ESH +10448 ; [.4B87.0020.0002] # DESERET SMALL LETTER ZHEE +10420 ; [.4B87.0020.0008] # DESERET CAPITAL LETTER ZHEE +10449 ; [.4B88.0020.0002] # DESERET SMALL LETTER ER +10421 ; [.4B88.0020.0008] # DESERET CAPITAL LETTER ER +1044A ; [.4B89.0020.0002] # DESERET SMALL LETTER EL +10422 ; [.4B89.0020.0008] # DESERET CAPITAL LETTER EL +1044B ; [.4B8A.0020.0002] # DESERET SMALL LETTER EM +10423 ; [.4B8A.0020.0008] # DESERET CAPITAL LETTER EM +1044C ; [.4B8B.0020.0002] # DESERET SMALL LETTER EN +10424 ; [.4B8B.0020.0008] # DESERET CAPITAL LETTER EN +1044D ; [.4B8C.0020.0002] # DESERET SMALL LETTER ENG +10425 ; [.4B8C.0020.0008] # DESERET CAPITAL LETTER ENG +1044E ; [.4B8D.0020.0002] # DESERET SMALL LETTER OI +10426 ; [.4B8D.0020.0008] # DESERET CAPITAL LETTER OI +1044F ; [.4B8E.0020.0002] # DESERET SMALL LETTER EW +10427 ; [.4B8E.0020.0008] # DESERET CAPITAL LETTER EW +10450 ; [.4B8F.0020.0002] # SHAVIAN LETTER PEEP +10451 ; [.4B90.0020.0002] # SHAVIAN LETTER TOT +10452 ; [.4B91.0020.0002] # SHAVIAN LETTER KICK +10453 ; [.4B92.0020.0002] # SHAVIAN LETTER FEE +10454 ; [.4B93.0020.0002] # SHAVIAN LETTER THIGH +10455 ; [.4B94.0020.0002] # SHAVIAN LETTER SO +10456 ; [.4B95.0020.0002] # SHAVIAN LETTER SURE +10457 ; [.4B96.0020.0002] # SHAVIAN LETTER CHURCH +10458 ; [.4B97.0020.0002] # SHAVIAN LETTER YEA +10459 ; [.4B98.0020.0002] # SHAVIAN LETTER HUNG +1045A ; [.4B99.0020.0002] # SHAVIAN LETTER BIB +1045B ; [.4B9A.0020.0002] # SHAVIAN LETTER DEAD +1045C ; [.4B9B.0020.0002] # SHAVIAN LETTER GAG +1045D ; [.4B9C.0020.0002] # SHAVIAN LETTER VOW +1045E ; [.4B9D.0020.0002] # SHAVIAN LETTER THEY +1045F ; [.4B9E.0020.0002] # SHAVIAN LETTER ZOO +10460 ; [.4B9F.0020.0002] # SHAVIAN LETTER MEASURE +10461 ; [.4BA0.0020.0002] # SHAVIAN LETTER JUDGE +10462 ; [.4BA1.0020.0002] # SHAVIAN LETTER WOE +10463 ; [.4BA2.0020.0002] # SHAVIAN LETTER HA-HA +10464 ; [.4BA3.0020.0002] # SHAVIAN LETTER LOLL +10465 ; [.4BA4.0020.0002] # SHAVIAN LETTER MIME +10466 ; [.4BA5.0020.0002] # SHAVIAN LETTER IF +10467 ; [.4BA6.0020.0002] # SHAVIAN LETTER EGG +10468 ; [.4BA7.0020.0002] # SHAVIAN LETTER ASH +10469 ; [.4BA8.0020.0002] # SHAVIAN LETTER ADO +1046A ; [.4BA9.0020.0002] # SHAVIAN LETTER ON +1046B ; [.4BAA.0020.0002] # SHAVIAN LETTER WOOL +1046C ; [.4BAB.0020.0002] # SHAVIAN LETTER OUT +1046D ; [.4BAC.0020.0002] # SHAVIAN LETTER AH +1046E ; [.4BAD.0020.0002] # SHAVIAN LETTER ROAR +1046F ; [.4BAE.0020.0002] # SHAVIAN LETTER NUN +10470 ; [.4BAF.0020.0002] # SHAVIAN LETTER EAT +10471 ; [.4BB0.0020.0002] # SHAVIAN LETTER AGE +10472 ; [.4BB1.0020.0002] # SHAVIAN LETTER ICE +10473 ; [.4BB2.0020.0002] # SHAVIAN LETTER UP +10474 ; [.4BB3.0020.0002] # SHAVIAN LETTER OAK +10475 ; [.4BB4.0020.0002] # SHAVIAN LETTER OOZE +10476 ; [.4BB5.0020.0002] # SHAVIAN LETTER OIL +10477 ; [.4BB6.0020.0002] # SHAVIAN LETTER AWE +10478 ; [.4BB7.0020.0002] # SHAVIAN LETTER ARE +10479 ; [.4BB8.0020.0002] # SHAVIAN LETTER OR +1047A ; [.4BB9.0020.0002] # SHAVIAN LETTER AIR +1047B ; [.4BBA.0020.0002] # SHAVIAN LETTER ERR +1047C ; [.4BBB.0020.0002] # SHAVIAN LETTER ARRAY +1047D ; [.4BBC.0020.0002] # SHAVIAN LETTER EAR +1047E ; [.4BBD.0020.0002] # SHAVIAN LETTER IAN +1047F ; [.4BBE.0020.0002] # SHAVIAN LETTER YEW +1BC00 ; [.4BBF.0020.0002] # DUPLOYAN LETTER H +1BC01 ; [.4BC0.0020.0002] # DUPLOYAN LETTER X +1BC02 ; [.4BC1.0020.0002] # DUPLOYAN LETTER P +1BC03 ; [.4BC2.0020.0002] # DUPLOYAN LETTER T +1BC04 ; [.4BC3.0020.0002] # DUPLOYAN LETTER F +1BC05 ; [.4BC4.0020.0002] # DUPLOYAN LETTER K +1BC06 ; [.4BC5.0020.0002] # DUPLOYAN LETTER L +1BC07 ; [.4BC6.0020.0002] # DUPLOYAN LETTER B +1BC08 ; [.4BC7.0020.0002] # DUPLOYAN LETTER D +1BC09 ; [.4BC8.0020.0002] # DUPLOYAN LETTER V +1BC0A ; [.4BC9.0020.0002] # DUPLOYAN LETTER G +1BC0B ; [.4BCA.0020.0002] # DUPLOYAN LETTER R +1BC0C ; [.4BCB.0020.0002] # DUPLOYAN LETTER P N +1BC0D ; [.4BCC.0020.0002] # DUPLOYAN LETTER D S +1BC0E ; [.4BCD.0020.0002] # DUPLOYAN LETTER F N +1BC0F ; [.4BCE.0020.0002] # DUPLOYAN LETTER K M +1BC10 ; [.4BCF.0020.0002] # DUPLOYAN LETTER R S +1BC11 ; [.4BD0.0020.0002] # DUPLOYAN LETTER TH +1BC12 ; [.4BD1.0020.0002] # DUPLOYAN LETTER SLOAN DH +1BC13 ; [.4BD2.0020.0002] # DUPLOYAN LETTER DH +1BC14 ; [.4BD3.0020.0002] # DUPLOYAN LETTER KK +1BC15 ; [.4BD4.0020.0002] # DUPLOYAN LETTER SLOAN J +1BC16 ; [.4BD5.0020.0002] # DUPLOYAN LETTER HL +1BC17 ; [.4BD6.0020.0002] # DUPLOYAN LETTER LH +1BC18 ; [.4BD7.0020.0002] # DUPLOYAN LETTER RH +1BC19 ; [.4BD8.0020.0002] # DUPLOYAN LETTER M +1BC1A ; [.4BD9.0020.0002] # DUPLOYAN LETTER N +1BC1B ; [.4BDA.0020.0002] # DUPLOYAN LETTER J +1BC1C ; [.4BDB.0020.0002] # DUPLOYAN LETTER S +1BC1D ; [.4BDC.0020.0002] # DUPLOYAN LETTER M N +1BC1E ; [.4BDD.0020.0002] # DUPLOYAN LETTER N M +1BC1F ; [.4BDE.0020.0002] # DUPLOYAN LETTER J M +1BC20 ; [.4BDF.0020.0002] # DUPLOYAN LETTER S J +1BC21 ; [.4BE0.0020.0002] # DUPLOYAN LETTER M WITH DOT +1BC22 ; [.4BE1.0020.0002] # DUPLOYAN LETTER N WITH DOT +1BC23 ; [.4BE2.0020.0002] # DUPLOYAN LETTER J WITH DOT +1BC24 ; [.4BE3.0020.0002] # DUPLOYAN LETTER J WITH DOTS INSIDE AND ABOVE +1BC25 ; [.4BE4.0020.0002] # DUPLOYAN LETTER S WITH DOT +1BC26 ; [.4BE5.0020.0002] # DUPLOYAN LETTER S WITH DOT BELOW +1BC27 ; [.4BE6.0020.0002] # DUPLOYAN LETTER M S +1BC28 ; [.4BE7.0020.0002] # DUPLOYAN LETTER N S +1BC29 ; [.4BE8.0020.0002] # DUPLOYAN LETTER J S +1BC2A ; [.4BE9.0020.0002] # DUPLOYAN LETTER S S +1BC2B ; [.4BEA.0020.0002] # DUPLOYAN LETTER M N S +1BC2C ; [.4BEB.0020.0002] # DUPLOYAN LETTER N M S +1BC2D ; [.4BEC.0020.0002] # DUPLOYAN LETTER J M S +1BC2E ; [.4BED.0020.0002] # DUPLOYAN LETTER S J S +1BC2F ; [.4BEE.0020.0002] # DUPLOYAN LETTER J S WITH DOT +1BC30 ; [.4BEF.0020.0002] # DUPLOYAN LETTER J N +1BC31 ; [.4BF0.0020.0002] # DUPLOYAN LETTER J N S +1BC32 ; [.4BF1.0020.0002] # DUPLOYAN LETTER S T +1BC33 ; [.4BF2.0020.0002] # DUPLOYAN LETTER S T R +1BC34 ; [.4BF3.0020.0002] # DUPLOYAN LETTER S P +1BC35 ; [.4BF4.0020.0002] # DUPLOYAN LETTER S P R +1BC36 ; [.4BF5.0020.0002] # DUPLOYAN LETTER T S +1BC37 ; [.4BF6.0020.0002] # DUPLOYAN LETTER T R S +1BC38 ; [.4BF7.0020.0002] # DUPLOYAN LETTER W +1BC39 ; [.4BF8.0020.0002] # DUPLOYAN LETTER WH +1BC3A ; [.4BF9.0020.0002] # DUPLOYAN LETTER W R +1BC3B ; [.4BFA.0020.0002] # DUPLOYAN LETTER S N +1BC3C ; [.4BFB.0020.0002] # DUPLOYAN LETTER S M +1BC3D ; [.4BFC.0020.0002] # DUPLOYAN LETTER K R S +1BC3E ; [.4BFD.0020.0002] # DUPLOYAN LETTER G R S +1BC3F ; [.4BFE.0020.0002] # DUPLOYAN LETTER S K +1BC40 ; [.4BFF.0020.0002] # DUPLOYAN LETTER S K R +1BC41 ; [.4C00.0020.0002] # DUPLOYAN LETTER A +1BC42 ; [.4C01.0020.0002] # DUPLOYAN LETTER SLOAN OW +1BC43 ; [.4C02.0020.0002] # DUPLOYAN LETTER OA +1BC44 ; [.4C03.0020.0002] # DUPLOYAN LETTER O +1BC45 ; [.4C04.0020.0002] # DUPLOYAN LETTER AOU +1BC46 ; [.4C05.0020.0002] # DUPLOYAN LETTER I +1BC47 ; [.4C06.0020.0002] # DUPLOYAN LETTER E +1BC48 ; [.4C07.0020.0002] # DUPLOYAN LETTER IE +1BC49 ; [.4C08.0020.0002] # DUPLOYAN LETTER SHORT I +1BC4A ; [.4C09.0020.0002] # DUPLOYAN LETTER UI +1BC4B ; [.4C0A.0020.0002] # DUPLOYAN LETTER EE +1BC4C ; [.4C0B.0020.0002] # DUPLOYAN LETTER SLOAN EH +1BC4D ; [.4C0C.0020.0002] # DUPLOYAN LETTER ROMANIAN I +1BC4E ; [.4C0D.0020.0002] # DUPLOYAN LETTER SLOAN EE +1BC4F ; [.4C0E.0020.0002] # DUPLOYAN LETTER LONG I +1BC50 ; [.4C0F.0020.0002] # DUPLOYAN LETTER YE +1BC51 ; [.4C10.0020.0002] # DUPLOYAN LETTER U +1BC52 ; [.4C11.0020.0002] # DUPLOYAN LETTER EU +1BC53 ; [.4C12.0020.0002] # DUPLOYAN LETTER XW +1BC54 ; [.4C13.0020.0002] # DUPLOYAN LETTER U N +1BC55 ; [.4C14.0020.0002] # DUPLOYAN LETTER LONG U +1BC56 ; [.4C15.0020.0002] # DUPLOYAN LETTER ROMANIAN U +1BC57 ; [.4C16.0020.0002] # DUPLOYAN LETTER UH +1BC58 ; [.4C17.0020.0002] # DUPLOYAN LETTER SLOAN U +1BC59 ; [.4C18.0020.0002] # DUPLOYAN LETTER OOH +1BC5A ; [.4C19.0020.0002] # DUPLOYAN LETTER OW +1BC5B ; [.4C1A.0020.0002] # DUPLOYAN LETTER OU +1BC5C ; [.4C1B.0020.0002] # DUPLOYAN LETTER WA +1BC5D ; [.4C1C.0020.0002] # DUPLOYAN LETTER WO +1BC5E ; [.4C1D.0020.0002] # DUPLOYAN LETTER WI +1BC5F ; [.4C1E.0020.0002] # DUPLOYAN LETTER WEI +1BC60 ; [.4C1F.0020.0002] # DUPLOYAN LETTER WOW +1BC61 ; [.4C20.0020.0002] # DUPLOYAN LETTER NASAL U +1BC62 ; [.4C21.0020.0002] # DUPLOYAN LETTER NASAL O +1BC63 ; [.4C22.0020.0002] # DUPLOYAN LETTER NASAL I +1BC64 ; [.4C23.0020.0002] # DUPLOYAN LETTER NASAL A +1BC65 ; [.4C24.0020.0002] # DUPLOYAN LETTER PERNIN AN +1BC66 ; [.4C25.0020.0002] # DUPLOYAN LETTER PERNIN AM +1BC67 ; [.4C26.0020.0002] # DUPLOYAN LETTER SLOAN EN +1BC68 ; [.4C27.0020.0002] # DUPLOYAN LETTER SLOAN AN +1BC69 ; [.4C28.0020.0002] # DUPLOYAN LETTER SLOAN ON +1BC6A ; [.4C29.0020.0002] # DUPLOYAN LETTER VOCALIC M +1BC70 ; [.4C2A.0020.0002] # DUPLOYAN AFFIX LEFT HORIZONTAL SECANT +1BC71 ; [.4C2B.0020.0002] # DUPLOYAN AFFIX MID HORIZONTAL SECANT +1BC72 ; [.4C2C.0020.0002] # DUPLOYAN AFFIX RIGHT HORIZONTAL SECANT +1BC73 ; [.4C2D.0020.0002] # DUPLOYAN AFFIX LOW VERTICAL SECANT +1BC74 ; [.4C2E.0020.0002] # DUPLOYAN AFFIX MID VERTICAL SECANT +1BC75 ; [.4C2F.0020.0002] # DUPLOYAN AFFIX HIGH VERTICAL SECANT +1BC76 ; [.4C30.0020.0002] # DUPLOYAN AFFIX ATTACHED SECANT +1BC77 ; [.4C31.0020.0002] # DUPLOYAN AFFIX ATTACHED LEFT-TO-RIGHT SECANT +1BC78 ; [.4C32.0020.0002] # DUPLOYAN AFFIX ATTACHED TANGENT +1BC79 ; [.4C33.0020.0002] # DUPLOYAN AFFIX ATTACHED TAIL +1BC7A ; [.4C34.0020.0002] # DUPLOYAN AFFIX ATTACHED E HOOK +1BC7B ; [.4C35.0020.0002] # DUPLOYAN AFFIX ATTACHED I HOOK +1BC7C ; [.4C36.0020.0002] # DUPLOYAN AFFIX ATTACHED TANGENT HOOK +1BC80 ; [.4C37.0020.0002] # DUPLOYAN AFFIX HIGH ACUTE +1BC81 ; [.4C38.0020.0002] # DUPLOYAN AFFIX HIGH TIGHT ACUTE +1BC82 ; [.4C39.0020.0002] # DUPLOYAN AFFIX HIGH GRAVE +1BC83 ; [.4C3A.0020.0002] # DUPLOYAN AFFIX HIGH LONG GRAVE +1BC84 ; [.4C3B.0020.0002] # DUPLOYAN AFFIX HIGH DOT +1BC85 ; [.4C3C.0020.0002] # DUPLOYAN AFFIX HIGH CIRCLE +1BC86 ; [.4C3D.0020.0002] # DUPLOYAN AFFIX HIGH LINE +1BC87 ; [.4C3E.0020.0002] # DUPLOYAN AFFIX HIGH WAVE +1BC88 ; [.4C3F.0020.0002] # DUPLOYAN AFFIX HIGH VERTICAL +1BC90 ; [.4C40.0020.0002] # DUPLOYAN AFFIX LOW ACUTE +1BC91 ; [.4C41.0020.0002] # DUPLOYAN AFFIX LOW TIGHT ACUTE +1BC92 ; [.4C42.0020.0002] # DUPLOYAN AFFIX LOW GRAVE +1BC93 ; [.4C43.0020.0002] # DUPLOYAN AFFIX LOW LONG GRAVE +1BC94 ; [.4C44.0020.0002] # DUPLOYAN AFFIX LOW DOT +1BC95 ; [.4C45.0020.0002] # DUPLOYAN AFFIX LOW CIRCLE +1BC96 ; [.4C46.0020.0002] # DUPLOYAN AFFIX LOW LINE +1BC97 ; [.4C47.0020.0002] # DUPLOYAN AFFIX LOW WAVE +1BC98 ; [.4C48.0020.0002] # DUPLOYAN AFFIX LOW VERTICAL +1BC99 ; [.4C49.0020.0002] # DUPLOYAN AFFIX LOW ARROW +10480 ; [.4C4A.0020.0002] # OSMANYA LETTER ALEF +10481 ; [.4C4B.0020.0002] # OSMANYA LETTER BA +10482 ; [.4C4C.0020.0002] # OSMANYA LETTER TA +10483 ; [.4C4D.0020.0002] # OSMANYA LETTER JA +10484 ; [.4C4E.0020.0002] # OSMANYA LETTER XA +10485 ; [.4C4F.0020.0002] # OSMANYA LETTER KHA +10486 ; [.4C50.0020.0002] # OSMANYA LETTER DEEL +10487 ; [.4C51.0020.0002] # OSMANYA LETTER RA +10488 ; [.4C52.0020.0002] # OSMANYA LETTER SA +10489 ; [.4C53.0020.0002] # OSMANYA LETTER SHIIN +1048A ; [.4C54.0020.0002] # OSMANYA LETTER DHA +1048B ; [.4C55.0020.0002] # OSMANYA LETTER CAYN +1048C ; [.4C56.0020.0002] # OSMANYA LETTER GA +1048D ; [.4C57.0020.0002] # OSMANYA LETTER FA +1048E ; [.4C58.0020.0002] # OSMANYA LETTER QAAF +1048F ; [.4C59.0020.0002] # OSMANYA LETTER KAAF +10490 ; [.4C5A.0020.0002] # OSMANYA LETTER LAAN +10491 ; [.4C5B.0020.0002] # OSMANYA LETTER MIIN +10492 ; [.4C5C.0020.0002] # OSMANYA LETTER NUUN +10493 ; [.4C5D.0020.0002] # OSMANYA LETTER WAW +10494 ; [.4C5E.0020.0002] # OSMANYA LETTER HA +10495 ; [.4C5F.0020.0002] # OSMANYA LETTER YA +10496 ; [.4C60.0020.0002] # OSMANYA LETTER A +10497 ; [.4C61.0020.0002] # OSMANYA LETTER E +10498 ; [.4C62.0020.0002] # OSMANYA LETTER I +10499 ; [.4C63.0020.0002] # OSMANYA LETTER O +1049A ; [.4C64.0020.0002] # OSMANYA LETTER U +1049B ; [.4C65.0020.0002] # OSMANYA LETTER AA +1049C ; [.4C66.0020.0002] # OSMANYA LETTER EE +1049D ; [.4C67.0020.0002] # OSMANYA LETTER OO +10500 ; [.4C68.0020.0002] # ELBASAN LETTER A +10501 ; [.4C69.0020.0002] # ELBASAN LETTER BE +10502 ; [.4C6A.0020.0002] # ELBASAN LETTER CE +10503 ; [.4C6B.0020.0002] # ELBASAN LETTER CHE +10504 ; [.4C6C.0020.0002] # ELBASAN LETTER DE +10505 ; [.4C6D.0020.0002] # ELBASAN LETTER NDE +10506 ; [.4C6E.0020.0002] # ELBASAN LETTER DHE +10507 ; [.4C6F.0020.0002] # ELBASAN LETTER EI +10508 ; [.4C70.0020.0002] # ELBASAN LETTER E +10509 ; [.4C71.0020.0002] # ELBASAN LETTER FE +1050A ; [.4C72.0020.0002] # ELBASAN LETTER GE +1050B ; [.4C73.0020.0002] # ELBASAN LETTER GJE +1050C ; [.4C74.0020.0002] # ELBASAN LETTER HE +1050D ; [.4C75.0020.0002] # ELBASAN LETTER I +1050E ; [.4C76.0020.0002] # ELBASAN LETTER JE +1050F ; [.4C77.0020.0002] # ELBASAN LETTER KE +10510 ; [.4C78.0020.0002] # ELBASAN LETTER LE +10511 ; [.4C79.0020.0002] # ELBASAN LETTER LLE +10512 ; [.4C7A.0020.0002] # ELBASAN LETTER ME +10513 ; [.4C7B.0020.0002] # ELBASAN LETTER NE +10514 ; [.4C7C.0020.0002] # ELBASAN LETTER NA +10515 ; [.4C7D.0020.0002] # ELBASAN LETTER NJE +10516 ; [.4C7E.0020.0002] # ELBASAN LETTER O +10517 ; [.4C7F.0020.0002] # ELBASAN LETTER PE +10518 ; [.4C80.0020.0002] # ELBASAN LETTER QE +10519 ; [.4C81.0020.0002] # ELBASAN LETTER RE +1051A ; [.4C82.0020.0002] # ELBASAN LETTER RRE +1051B ; [.4C83.0020.0002] # ELBASAN LETTER SE +1051C ; [.4C84.0020.0002] # ELBASAN LETTER SHE +1051D ; [.4C85.0020.0002] # ELBASAN LETTER TE +1051E ; [.4C86.0020.0002] # ELBASAN LETTER THE +1051F ; [.4C87.0020.0002] # ELBASAN LETTER U +10520 ; [.4C88.0020.0002] # ELBASAN LETTER VE +10521 ; [.4C89.0020.0002] # ELBASAN LETTER XE +10522 ; [.4C8A.0020.0002] # ELBASAN LETTER Y +10523 ; [.4C8B.0020.0002] # ELBASAN LETTER ZE +10524 ; [.4C8C.0020.0002] # ELBASAN LETTER ZHE +10525 ; [.4C8D.0020.0002] # ELBASAN LETTER GHE +10526 ; [.4C8E.0020.0002] # ELBASAN LETTER GHAMMA +10527 ; [.4C8F.0020.0002] # ELBASAN LETTER KHE +10530 ; [.4C90.0020.0002] # CAUCASIAN ALBANIAN LETTER ALT +10531 ; [.4C91.0020.0002] # CAUCASIAN ALBANIAN LETTER BET +10532 ; [.4C92.0020.0002] # CAUCASIAN ALBANIAN LETTER GIM +10533 ; [.4C93.0020.0002] # CAUCASIAN ALBANIAN LETTER DAT +10534 ; [.4C94.0020.0002] # CAUCASIAN ALBANIAN LETTER EB +10535 ; [.4C95.0020.0002] # CAUCASIAN ALBANIAN LETTER ZARL +10536 ; [.4C96.0020.0002] # CAUCASIAN ALBANIAN LETTER EYN +10537 ; [.4C97.0020.0002] # CAUCASIAN ALBANIAN LETTER ZHIL +10538 ; [.4C98.0020.0002] # CAUCASIAN ALBANIAN LETTER TAS +10539 ; [.4C99.0020.0002] # CAUCASIAN ALBANIAN LETTER CHA +1053A ; [.4C9A.0020.0002] # CAUCASIAN ALBANIAN LETTER YOWD +1053B ; [.4C9B.0020.0002] # CAUCASIAN ALBANIAN LETTER ZHA +1053C ; [.4C9C.0020.0002] # CAUCASIAN ALBANIAN LETTER IRB +1053D ; [.4C9D.0020.0002] # CAUCASIAN ALBANIAN LETTER SHA +1053E ; [.4C9E.0020.0002] # CAUCASIAN ALBANIAN LETTER LAN +1053F ; [.4C9F.0020.0002] # CAUCASIAN ALBANIAN LETTER INYA +10540 ; [.4CA0.0020.0002] # CAUCASIAN ALBANIAN LETTER XEYN +10541 ; [.4CA1.0020.0002] # CAUCASIAN ALBANIAN LETTER DYAN +10542 ; [.4CA2.0020.0002] # CAUCASIAN ALBANIAN LETTER CAR +10543 ; [.4CA3.0020.0002] # CAUCASIAN ALBANIAN LETTER JHOX +10544 ; [.4CA4.0020.0002] # CAUCASIAN ALBANIAN LETTER KAR +10545 ; [.4CA5.0020.0002] # CAUCASIAN ALBANIAN LETTER LYIT +10546 ; [.4CA6.0020.0002] # CAUCASIAN ALBANIAN LETTER HEYT +10547 ; [.4CA7.0020.0002] # CAUCASIAN ALBANIAN LETTER QAY +10548 ; [.4CA8.0020.0002] # CAUCASIAN ALBANIAN LETTER AOR +10549 ; [.4CA9.0020.0002] # CAUCASIAN ALBANIAN LETTER CHOY +1054A ; [.4CAA.0020.0002] # CAUCASIAN ALBANIAN LETTER CHI +1054B ; [.4CAB.0020.0002] # CAUCASIAN ALBANIAN LETTER CYAY +1054C ; [.4CAC.0020.0002] # CAUCASIAN ALBANIAN LETTER MAQ +1054D ; [.4CAD.0020.0002] # CAUCASIAN ALBANIAN LETTER QAR +1054E ; [.4CAE.0020.0002] # CAUCASIAN ALBANIAN LETTER NOWC +1054F ; [.4CAF.0020.0002] # CAUCASIAN ALBANIAN LETTER DZYAY +10550 ; [.4CB0.0020.0002] # CAUCASIAN ALBANIAN LETTER SHAK +10551 ; [.4CB1.0020.0002] # CAUCASIAN ALBANIAN LETTER JAYN +10552 ; [.4CB2.0020.0002] # CAUCASIAN ALBANIAN LETTER ON +10553 ; [.4CB3.0020.0002] # CAUCASIAN ALBANIAN LETTER TYAY +10554 ; [.4CB4.0020.0002] # CAUCASIAN ALBANIAN LETTER FAM +10555 ; [.4CB5.0020.0002] # CAUCASIAN ALBANIAN LETTER DZAY +10556 ; [.4CB6.0020.0002] # CAUCASIAN ALBANIAN LETTER CHAT +10557 ; [.4CB7.0020.0002] # CAUCASIAN ALBANIAN LETTER PEN +10558 ; [.4CB8.0020.0002] # CAUCASIAN ALBANIAN LETTER GHEYS +10559 ; [.4CB9.0020.0002] # CAUCASIAN ALBANIAN LETTER RAT +1055A ; [.4CBA.0020.0002] # CAUCASIAN ALBANIAN LETTER SEYK +1055B ; [.4CBB.0020.0002] # CAUCASIAN ALBANIAN LETTER VEYZ +1055C ; [.4CBC.0020.0002] # CAUCASIAN ALBANIAN LETTER TIWR +1055D ; [.4CBD.0020.0002] # CAUCASIAN ALBANIAN LETTER SHOY +1055E ; [.4CBE.0020.0002] # CAUCASIAN ALBANIAN LETTER IWN +1055F ; [.4CBF.0020.0002] # CAUCASIAN ALBANIAN LETTER CYAW +10560 ; [.4CC0.0020.0002] # CAUCASIAN ALBANIAN LETTER CAYN +10561 ; [.4CC1.0020.0002] # CAUCASIAN ALBANIAN LETTER YAYD +10562 ; [.4CC2.0020.0002] # CAUCASIAN ALBANIAN LETTER PIWR +10563 ; [.4CC3.0020.0002] # CAUCASIAN ALBANIAN LETTER KIW +110D0 ; [.4CC4.0020.0002] # SORA SOMPENG LETTER SAH +110D1 ; [.4CC5.0020.0002] # SORA SOMPENG LETTER TAH +110D2 ; [.4CC6.0020.0002] # SORA SOMPENG LETTER BAH +110D3 ; [.4CC7.0020.0002] # SORA SOMPENG LETTER CAH +110D4 ; [.4CC8.0020.0002] # SORA SOMPENG LETTER DAH +110D5 ; [.4CC9.0020.0002] # SORA SOMPENG LETTER GAH +110D6 ; [.4CCA.0020.0002] # SORA SOMPENG LETTER MAH +110D7 ; [.4CCB.0020.0002] # SORA SOMPENG LETTER NGAH +110D8 ; [.4CCC.0020.0002] # SORA SOMPENG LETTER LAH +110D9 ; [.4CCD.0020.0002] # SORA SOMPENG LETTER NAH +110DA ; [.4CCE.0020.0002] # SORA SOMPENG LETTER VAH +110DB ; [.4CCF.0020.0002] # SORA SOMPENG LETTER PAH +110DC ; [.4CD0.0020.0002] # SORA SOMPENG LETTER YAH +110DD ; [.4CD1.0020.0002] # SORA SOMPENG LETTER RAH +110DE ; [.4CD2.0020.0002] # SORA SOMPENG LETTER HAH +110DF ; [.4CD3.0020.0002] # SORA SOMPENG LETTER KAH +110E0 ; [.4CD4.0020.0002] # SORA SOMPENG LETTER JAH +110E1 ; [.4CD5.0020.0002] # SORA SOMPENG LETTER NYAH +110E2 ; [.4CD6.0020.0002] # SORA SOMPENG LETTER AH +110E3 ; [.4CD7.0020.0002] # SORA SOMPENG LETTER EEH +110E4 ; [.4CD8.0020.0002] # SORA SOMPENG LETTER IH +110E5 ; [.4CD9.0020.0002] # SORA SOMPENG LETTER UH +110E6 ; [.4CDA.0020.0002] # SORA SOMPENG LETTER OH +110E7 ; [.4CDB.0020.0002] # SORA SOMPENG LETTER EH +110E8 ; [.4CDC.0020.0002] # SORA SOMPENG LETTER MAE +16A40 ; [.4CDD.0020.0002] # MRO LETTER TA +16A41 ; [.4CDE.0020.0002] # MRO LETTER NGI +16A42 ; [.4CDF.0020.0002] # MRO LETTER YO +16A43 ; [.4CE0.0020.0002] # MRO LETTER MIM +16A44 ; [.4CE1.0020.0002] # MRO LETTER BA +16A45 ; [.4CE2.0020.0002] # MRO LETTER DA +16A46 ; [.4CE3.0020.0002] # MRO LETTER A +16A47 ; [.4CE4.0020.0002] # MRO LETTER PHI +16A48 ; [.4CE5.0020.0002] # MRO LETTER KHAI +16A49 ; [.4CE6.0020.0002] # MRO LETTER HAO +16A4A ; [.4CE7.0020.0002] # MRO LETTER DAI +16A4B ; [.4CE8.0020.0002] # MRO LETTER CHU +16A4C ; [.4CE9.0020.0002] # MRO LETTER KEAAE +16A4D ; [.4CEA.0020.0002] # MRO LETTER OL +16A4E ; [.4CEB.0020.0002] # MRO LETTER MAEM +16A4F ; [.4CEC.0020.0002] # MRO LETTER NIN +16A50 ; [.4CED.0020.0002] # MRO LETTER PA +16A51 ; [.4CEE.0020.0002] # MRO LETTER OO +16A52 ; [.4CEF.0020.0002] # MRO LETTER O +16A53 ; [.4CF0.0020.0002] # MRO LETTER RO +16A54 ; [.4CF1.0020.0002] # MRO LETTER SHI +16A55 ; [.4CF2.0020.0002] # MRO LETTER THEA +16A56 ; [.4CF3.0020.0002] # MRO LETTER EA +16A57 ; [.4CF4.0020.0002] # MRO LETTER WA +16A58 ; [.4CF5.0020.0002] # MRO LETTER E +16A59 ; [.4CF6.0020.0002] # MRO LETTER KO +16A5A ; [.4CF7.0020.0002] # MRO LETTER LAN +16A5B ; [.4CF8.0020.0002] # MRO LETTER LA +16A5C ; [.4CF9.0020.0002] # MRO LETTER HAI +16A5D ; [.4CFA.0020.0002] # MRO LETTER RI +16A5E ; [.4CFB.0020.0002] # MRO LETTER TEK +10000 ; [.4CFC.0020.0002] # LINEAR B SYLLABLE B008 A +10001 ; [.4CFD.0020.0002] # LINEAR B SYLLABLE B038 E +10002 ; [.4CFE.0020.0002] # LINEAR B SYLLABLE B028 I +10003 ; [.4CFF.0020.0002] # LINEAR B SYLLABLE B061 O +10004 ; [.4D00.0020.0002] # LINEAR B SYLLABLE B010 U +10005 ; [.4D01.0020.0002] # LINEAR B SYLLABLE B001 DA +10006 ; [.4D02.0020.0002] # LINEAR B SYLLABLE B045 DE +10007 ; [.4D03.0020.0002] # LINEAR B SYLLABLE B007 DI +10008 ; [.4D04.0020.0002] # LINEAR B SYLLABLE B014 DO +10009 ; [.4D05.0020.0002] # LINEAR B SYLLABLE B051 DU +1000A ; [.4D06.0020.0002] # LINEAR B SYLLABLE B057 JA +1000B ; [.4D07.0020.0002] # LINEAR B SYLLABLE B046 JE +1000D ; [.4D08.0020.0002] # LINEAR B SYLLABLE B036 JO +1000E ; [.4D09.0020.0002] # LINEAR B SYLLABLE B065 JU +1000F ; [.4D0A.0020.0002] # LINEAR B SYLLABLE B077 KA +10010 ; [.4D0B.0020.0002] # LINEAR B SYLLABLE B044 KE +10011 ; [.4D0C.0020.0002] # LINEAR B SYLLABLE B067 KI +10012 ; [.4D0D.0020.0002] # LINEAR B SYLLABLE B070 KO +10013 ; [.4D0E.0020.0002] # LINEAR B SYLLABLE B081 KU +10014 ; [.4D0F.0020.0002] # LINEAR B SYLLABLE B080 MA +10015 ; [.4D10.0020.0002] # LINEAR B SYLLABLE B013 ME +10016 ; [.4D11.0020.0002] # LINEAR B SYLLABLE B073 MI +10017 ; [.4D12.0020.0002] # LINEAR B SYLLABLE B015 MO +10018 ; [.4D13.0020.0002] # LINEAR B SYLLABLE B023 MU +10019 ; [.4D14.0020.0002] # LINEAR B SYLLABLE B006 NA +1001A ; [.4D15.0020.0002] # LINEAR B SYLLABLE B024 NE +1001B ; [.4D16.0020.0002] # LINEAR B SYLLABLE B030 NI +1001C ; [.4D17.0020.0002] # LINEAR B SYLLABLE B052 NO +1001D ; [.4D18.0020.0002] # LINEAR B SYLLABLE B055 NU +1001E ; [.4D19.0020.0002] # LINEAR B SYLLABLE B003 PA +1001F ; [.4D1A.0020.0002] # LINEAR B SYLLABLE B072 PE +10020 ; [.4D1B.0020.0002] # LINEAR B SYLLABLE B039 PI +10021 ; [.4D1C.0020.0002] # LINEAR B SYLLABLE B011 PO +10022 ; [.4D1D.0020.0002] # LINEAR B SYLLABLE B050 PU +10023 ; [.4D1E.0020.0002] # LINEAR B SYLLABLE B016 QA +10024 ; [.4D1F.0020.0002] # LINEAR B SYLLABLE B078 QE +10025 ; [.4D20.0020.0002] # LINEAR B SYLLABLE B021 QI +10026 ; [.4D21.0020.0002] # LINEAR B SYLLABLE B032 QO +10028 ; [.4D22.0020.0002] # LINEAR B SYLLABLE B060 RA +10029 ; [.4D23.0020.0002] # LINEAR B SYLLABLE B027 RE +1002A ; [.4D24.0020.0002] # LINEAR B SYLLABLE B053 RI +1002B ; [.4D25.0020.0002] # LINEAR B SYLLABLE B002 RO +1002C ; [.4D26.0020.0002] # LINEAR B SYLLABLE B026 RU +1002D ; [.4D27.0020.0002] # LINEAR B SYLLABLE B031 SA +1002E ; [.4D28.0020.0002] # LINEAR B SYLLABLE B009 SE +1002F ; [.4D29.0020.0002] # LINEAR B SYLLABLE B041 SI +10030 ; [.4D2A.0020.0002] # LINEAR B SYLLABLE B012 SO +10031 ; [.4D2B.0020.0002] # LINEAR B SYLLABLE B058 SU +10032 ; [.4D2C.0020.0002] # LINEAR B SYLLABLE B059 TA +10033 ; [.4D2D.0020.0002] # LINEAR B SYLLABLE B004 TE +10034 ; [.4D2E.0020.0002] # LINEAR B SYLLABLE B037 TI +10035 ; [.4D2F.0020.0002] # LINEAR B SYLLABLE B005 TO +10036 ; [.4D30.0020.0002] # LINEAR B SYLLABLE B069 TU +10037 ; [.4D31.0020.0002] # LINEAR B SYLLABLE B054 WA +10038 ; [.4D32.0020.0002] # LINEAR B SYLLABLE B075 WE +10039 ; [.4D33.0020.0002] # LINEAR B SYLLABLE B040 WI +1003A ; [.4D34.0020.0002] # LINEAR B SYLLABLE B042 WO +1003C ; [.4D35.0020.0002] # LINEAR B SYLLABLE B017 ZA +1003D ; [.4D36.0020.0002] # LINEAR B SYLLABLE B074 ZE +1003F ; [.4D37.0020.0002] # LINEAR B SYLLABLE B020 ZO +10040 ; [.4D38.0020.0002] # LINEAR B SYLLABLE B025 A2 +10041 ; [.4D39.0020.0002] # LINEAR B SYLLABLE B043 A3 +10042 ; [.4D3A.0020.0002] # LINEAR B SYLLABLE B085 AU +10043 ; [.4D3B.0020.0002] # LINEAR B SYLLABLE B071 DWE +10044 ; [.4D3C.0020.0002] # LINEAR B SYLLABLE B090 DWO +10045 ; [.4D3D.0020.0002] # LINEAR B SYLLABLE B048 NWA +10046 ; [.4D3E.0020.0002] # LINEAR B SYLLABLE B029 PU2 +10047 ; [.4D3F.0020.0002] # LINEAR B SYLLABLE B062 PTE +10048 ; [.4D40.0020.0002] # LINEAR B SYLLABLE B076 RA2 +10049 ; [.4D41.0020.0002] # LINEAR B SYLLABLE B033 RA3 +1004A ; [.4D42.0020.0002] # LINEAR B SYLLABLE B068 RO2 +1004B ; [.4D43.0020.0002] # LINEAR B SYLLABLE B066 TA2 +1004C ; [.4D44.0020.0002] # LINEAR B SYLLABLE B087 TWE +1004D ; [.4D45.0020.0002] # LINEAR B SYLLABLE B091 TWO +10050 ; [.4D46.0020.0002] # LINEAR B SYMBOL B018 +10051 ; [.4D47.0020.0002] # LINEAR B SYMBOL B019 +10052 ; [.4D48.0020.0002] # LINEAR B SYMBOL B022 +10053 ; [.4D49.0020.0002] # LINEAR B SYMBOL B034 +10054 ; [.4D4A.0020.0002] # LINEAR B SYMBOL B047 +10055 ; [.4D4B.0020.0002] # LINEAR B SYMBOL B049 +10056 ; [.4D4C.0020.0002] # LINEAR B SYMBOL B056 +10057 ; [.4D4D.0020.0002] # LINEAR B SYMBOL B063 +10058 ; [.4D4E.0020.0002] # LINEAR B SYMBOL B064 +10059 ; [.4D4F.0020.0002] # LINEAR B SYMBOL B079 +1005A ; [.4D50.0020.0002] # LINEAR B SYMBOL B082 +1005B ; [.4D51.0020.0002] # LINEAR B SYMBOL B083 +1005C ; [.4D52.0020.0002] # LINEAR B SYMBOL B086 +1005D ; [.4D53.0020.0002] # LINEAR B SYMBOL B089 +10080 ; [.4D54.0020.0002] # LINEAR B IDEOGRAM B100 MAN +10081 ; [.4D55.0020.0002] # LINEAR B IDEOGRAM B102 WOMAN +10082 ; [.4D56.0020.0002] # LINEAR B IDEOGRAM B104 DEER +10083 ; [.4D57.0020.0002] # LINEAR B IDEOGRAM B105 EQUID +10084 ; [.4D58.0020.0002] # LINEAR B IDEOGRAM B105F MARE +10085 ; [.4D59.0020.0002] # LINEAR B IDEOGRAM B105M STALLION +10086 ; [.4D5A.0020.0002] # LINEAR B IDEOGRAM B106F EWE +10087 ; [.4D5B.0020.0002] # LINEAR B IDEOGRAM B106M RAM +10088 ; [.4D5C.0020.0002] # LINEAR B IDEOGRAM B107F SHE-GOAT +10089 ; [.4D5D.0020.0002] # LINEAR B IDEOGRAM B107M HE-GOAT +1008A ; [.4D5E.0020.0002] # LINEAR B IDEOGRAM B108F SOW +1008B ; [.4D5F.0020.0002] # LINEAR B IDEOGRAM B108M BOAR +1008C ; [.4D60.0020.0002] # LINEAR B IDEOGRAM B109F COW +1008D ; [.4D61.0020.0002] # LINEAR B IDEOGRAM B109M BULL +1008E ; [.4D62.0020.0002] # LINEAR B IDEOGRAM B120 WHEAT +1008F ; [.4D63.0020.0002] # LINEAR B IDEOGRAM B121 BARLEY +10090 ; [.4D64.0020.0002] # LINEAR B IDEOGRAM B122 OLIVE +10091 ; [.4D65.0020.0002] # LINEAR B IDEOGRAM B123 SPICE +10092 ; [.4D66.0020.0002] # LINEAR B IDEOGRAM B125 CYPERUS +10093 ; [.4D67.0020.0002] # LINEAR B MONOGRAM B127 KAPO +10094 ; [.4D68.0020.0002] # LINEAR B MONOGRAM B128 KANAKO +10095 ; [.4D69.0020.0002] # LINEAR B IDEOGRAM B130 OIL +10096 ; [.4D6A.0020.0002] # LINEAR B IDEOGRAM B131 WINE +10097 ; [.4D6B.0020.0002] # LINEAR B IDEOGRAM B132 +10098 ; [.4D6C.0020.0002] # LINEAR B MONOGRAM B133 AREPA +10099 ; [.4D6D.0020.0002] # LINEAR B MONOGRAM B135 MERI +1009A ; [.4D6E.0020.0002] # LINEAR B IDEOGRAM B140 BRONZE +1009B ; [.4D6F.0020.0002] # LINEAR B IDEOGRAM B141 GOLD +1009C ; [.4D70.0020.0002] # LINEAR B IDEOGRAM B142 +1009D ; [.4D71.0020.0002] # LINEAR B IDEOGRAM B145 WOOL +1009E ; [.4D72.0020.0002] # LINEAR B IDEOGRAM B146 +1009F ; [.4D73.0020.0002] # LINEAR B IDEOGRAM B150 +100A0 ; [.4D74.0020.0002] # LINEAR B IDEOGRAM B151 HORN +100A1 ; [.4D75.0020.0002] # LINEAR B IDEOGRAM B152 +100A2 ; [.4D76.0020.0002] # LINEAR B IDEOGRAM B153 +100A3 ; [.4D77.0020.0002] # LINEAR B IDEOGRAM B154 +100A4 ; [.4D78.0020.0002] # LINEAR B MONOGRAM B156 TURO2 +100A5 ; [.4D79.0020.0002] # LINEAR B IDEOGRAM B157 +100A6 ; [.4D7A.0020.0002] # LINEAR B IDEOGRAM B158 +100A7 ; [.4D7B.0020.0002] # LINEAR B IDEOGRAM B159 CLOTH +100A8 ; [.4D7C.0020.0002] # LINEAR B IDEOGRAM B160 +100A9 ; [.4D7D.0020.0002] # LINEAR B IDEOGRAM B161 +100AA ; [.4D7E.0020.0002] # LINEAR B IDEOGRAM B162 GARMENT +100AB ; [.4D7F.0020.0002] # LINEAR B IDEOGRAM B163 ARMOUR +100AC ; [.4D80.0020.0002] # LINEAR B IDEOGRAM B164 +100AD ; [.4D81.0020.0002] # LINEAR B IDEOGRAM B165 +100AE ; [.4D82.0020.0002] # LINEAR B IDEOGRAM B166 +100AF ; [.4D83.0020.0002] # LINEAR B IDEOGRAM B167 +100B0 ; [.4D84.0020.0002] # LINEAR B IDEOGRAM B168 +100B1 ; [.4D85.0020.0002] # LINEAR B IDEOGRAM B169 +100B2 ; [.4D86.0020.0002] # LINEAR B IDEOGRAM B170 +100B3 ; [.4D87.0020.0002] # LINEAR B IDEOGRAM B171 +100B4 ; [.4D88.0020.0002] # LINEAR B IDEOGRAM B172 +100B5 ; [.4D89.0020.0002] # LINEAR B IDEOGRAM B173 MONTH +100B6 ; [.4D8A.0020.0002] # LINEAR B IDEOGRAM B174 +100B7 ; [.4D8B.0020.0002] # LINEAR B IDEOGRAM B176 TREE +100B8 ; [.4D8C.0020.0002] # LINEAR B IDEOGRAM B177 +100B9 ; [.4D8D.0020.0002] # LINEAR B IDEOGRAM B178 +100BA ; [.4D8E.0020.0002] # LINEAR B IDEOGRAM B179 +100BB ; [.4D8F.0020.0002] # LINEAR B IDEOGRAM B180 +100BC ; [.4D90.0020.0002] # LINEAR B IDEOGRAM B181 +100BD ; [.4D91.0020.0002] # LINEAR B IDEOGRAM B182 +100BE ; [.4D92.0020.0002] # LINEAR B IDEOGRAM B183 +100BF ; [.4D93.0020.0002] # LINEAR B IDEOGRAM B184 +100C0 ; [.4D94.0020.0002] # LINEAR B IDEOGRAM B185 +100C1 ; [.4D95.0020.0002] # LINEAR B IDEOGRAM B189 +100C2 ; [.4D96.0020.0002] # LINEAR B IDEOGRAM B190 +100C3 ; [.4D97.0020.0002] # LINEAR B IDEOGRAM B191 HELMET +100C4 ; [.4D98.0020.0002] # LINEAR B IDEOGRAM B220 FOOTSTOOL +100C5 ; [.4D99.0020.0002] # LINEAR B IDEOGRAM B225 BATHTUB +100C6 ; [.4D9A.0020.0002] # LINEAR B IDEOGRAM B230 SPEAR +100C7 ; [.4D9B.0020.0002] # LINEAR B IDEOGRAM B231 ARROW +100C8 ; [.4D9C.0020.0002] # LINEAR B IDEOGRAM B232 +100C9 ; [.4D9D.0020.0002] # LINEAR B IDEOGRAM B233 SWORD +100CA ; [.4D9E.0020.0002] # LINEAR B IDEOGRAM B234 +100CB ; [.4D9F.0020.0002] # LINEAR B IDEOGRAM B236 +100CC ; [.4DA0.0020.0002] # LINEAR B IDEOGRAM B240 WHEELED CHARIOT +100CD ; [.4DA1.0020.0002] # LINEAR B IDEOGRAM B241 CHARIOT +100CE ; [.4DA2.0020.0002] # LINEAR B IDEOGRAM B242 CHARIOT FRAME +100CF ; [.4DA3.0020.0002] # LINEAR B IDEOGRAM B243 WHEEL +100D0 ; [.4DA4.0020.0002] # LINEAR B IDEOGRAM B245 +100D1 ; [.4DA5.0020.0002] # LINEAR B IDEOGRAM B246 +100D2 ; [.4DA6.0020.0002] # LINEAR B MONOGRAM B247 DIPTE +100D3 ; [.4DA7.0020.0002] # LINEAR B IDEOGRAM B248 +100D4 ; [.4DA8.0020.0002] # LINEAR B IDEOGRAM B249 +100D5 ; [.4DA9.0020.0002] # LINEAR B IDEOGRAM B251 +100D6 ; [.4DAA.0020.0002] # LINEAR B IDEOGRAM B252 +100D7 ; [.4DAB.0020.0002] # LINEAR B IDEOGRAM B253 +100D8 ; [.4DAC.0020.0002] # LINEAR B IDEOGRAM B254 DART +100D9 ; [.4DAD.0020.0002] # LINEAR B IDEOGRAM B255 +100DA ; [.4DAE.0020.0002] # LINEAR B IDEOGRAM B256 +100DB ; [.4DAF.0020.0002] # LINEAR B IDEOGRAM B257 +100DC ; [.4DB0.0020.0002] # LINEAR B IDEOGRAM B258 +100DD ; [.4DB1.0020.0002] # LINEAR B IDEOGRAM B259 +100DE ; [.4DB2.0020.0002] # LINEAR B IDEOGRAM VESSEL B155 +100DF ; [.4DB3.0020.0002] # LINEAR B IDEOGRAM VESSEL B200 +100E0 ; [.4DB4.0020.0002] # LINEAR B IDEOGRAM VESSEL B201 +100E1 ; [.4DB5.0020.0002] # LINEAR B IDEOGRAM VESSEL B202 +100E2 ; [.4DB6.0020.0002] # LINEAR B IDEOGRAM VESSEL B203 +100E3 ; [.4DB7.0020.0002] # LINEAR B IDEOGRAM VESSEL B204 +100E4 ; [.4DB8.0020.0002] # LINEAR B IDEOGRAM VESSEL B205 +100E5 ; [.4DB9.0020.0002] # LINEAR B IDEOGRAM VESSEL B206 +100E6 ; [.4DBA.0020.0002] # LINEAR B IDEOGRAM VESSEL B207 +100E7 ; [.4DBB.0020.0002] # LINEAR B IDEOGRAM VESSEL B208 +100E8 ; [.4DBC.0020.0002] # LINEAR B IDEOGRAM VESSEL B209 +100E9 ; [.4DBD.0020.0002] # LINEAR B IDEOGRAM VESSEL B210 +100EA ; [.4DBE.0020.0002] # LINEAR B IDEOGRAM VESSEL B211 +100EB ; [.4DBF.0020.0002] # LINEAR B IDEOGRAM VESSEL B212 +100EC ; [.4DC0.0020.0002] # LINEAR B IDEOGRAM VESSEL B213 +100ED ; [.4DC1.0020.0002] # LINEAR B IDEOGRAM VESSEL B214 +100EE ; [.4DC2.0020.0002] # LINEAR B IDEOGRAM VESSEL B215 +100EF ; [.4DC3.0020.0002] # LINEAR B IDEOGRAM VESSEL B216 +100F0 ; [.4DC4.0020.0002] # LINEAR B IDEOGRAM VESSEL B217 +100F1 ; [.4DC5.0020.0002] # LINEAR B IDEOGRAM VESSEL B218 +100F2 ; [.4DC6.0020.0002] # LINEAR B IDEOGRAM VESSEL B219 +100F3 ; [.4DC7.0020.0002] # LINEAR B IDEOGRAM VESSEL B221 +100F4 ; [.4DC8.0020.0002] # LINEAR B IDEOGRAM VESSEL B222 +100F5 ; [.4DC9.0020.0002] # LINEAR B IDEOGRAM VESSEL B226 +100F6 ; [.4DCA.0020.0002] # LINEAR B IDEOGRAM VESSEL B227 +100F7 ; [.4DCB.0020.0002] # LINEAR B IDEOGRAM VESSEL B228 +100F8 ; [.4DCC.0020.0002] # LINEAR B IDEOGRAM VESSEL B229 +100F9 ; [.4DCD.0020.0002] # LINEAR B IDEOGRAM VESSEL B250 +100FA ; [.4DCE.0020.0002] # LINEAR B IDEOGRAM VESSEL B305 +10600 ; [.4DCF.0020.0002] # LINEAR A SIGN AB001 +10601 ; [.4DD0.0020.0002] # LINEAR A SIGN AB002 +10602 ; [.4DD1.0020.0002] # LINEAR A SIGN AB003 +10603 ; [.4DD2.0020.0002] # LINEAR A SIGN AB004 +10604 ; [.4DD3.0020.0002] # LINEAR A SIGN AB005 +10605 ; [.4DD4.0020.0002] # LINEAR A SIGN AB006 +10606 ; [.4DD5.0020.0002] # LINEAR A SIGN AB007 +10607 ; [.4DD6.0020.0002] # LINEAR A SIGN AB008 +10608 ; [.4DD7.0020.0002] # LINEAR A SIGN AB009 +10609 ; [.4DD8.0020.0002] # LINEAR A SIGN AB010 +1060A ; [.4DD9.0020.0002] # LINEAR A SIGN AB011 +1060B ; [.4DDA.0020.0002] # LINEAR A SIGN AB013 +1060C ; [.4DDB.0020.0002] # LINEAR A SIGN AB016 +1060D ; [.4DDC.0020.0002] # LINEAR A SIGN AB017 +1060E ; [.4DDD.0020.0002] # LINEAR A SIGN AB020 +1060F ; [.4DDE.0020.0002] # LINEAR A SIGN AB021 +10610 ; [.4DDF.0020.0002] # LINEAR A SIGN AB021F +10611 ; [.4DE0.0020.0002] # LINEAR A SIGN AB021M +10612 ; [.4DE1.0020.0002] # LINEAR A SIGN AB022 +10613 ; [.4DE2.0020.0002] # LINEAR A SIGN AB022F +10614 ; [.4DE3.0020.0002] # LINEAR A SIGN AB022M +10615 ; [.4DE4.0020.0002] # LINEAR A SIGN AB023 +10616 ; [.4DE5.0020.0002] # LINEAR A SIGN AB023M +10617 ; [.4DE6.0020.0002] # LINEAR A SIGN AB024 +10618 ; [.4DE7.0020.0002] # LINEAR A SIGN AB026 +10619 ; [.4DE8.0020.0002] # LINEAR A SIGN AB027 +1061A ; [.4DE9.0020.0002] # LINEAR A SIGN AB028 +1061B ; [.4DEA.0020.0002] # LINEAR A SIGN A028B +1061C ; [.4DEB.0020.0002] # LINEAR A SIGN AB029 +1061D ; [.4DEC.0020.0002] # LINEAR A SIGN AB030 +1061E ; [.4DED.0020.0002] # LINEAR A SIGN AB031 +1061F ; [.4DEE.0020.0002] # LINEAR A SIGN AB034 +10620 ; [.4DEF.0020.0002] # LINEAR A SIGN AB037 +10621 ; [.4DF0.0020.0002] # LINEAR A SIGN AB038 +10622 ; [.4DF1.0020.0002] # LINEAR A SIGN AB039 +10623 ; [.4DF2.0020.0002] # LINEAR A SIGN AB040 +10624 ; [.4DF3.0020.0002] # LINEAR A SIGN AB041 +10625 ; [.4DF4.0020.0002] # LINEAR A SIGN AB044 +10626 ; [.4DF5.0020.0002] # LINEAR A SIGN AB045 +10627 ; [.4DF6.0020.0002] # LINEAR A SIGN AB046 +10628 ; [.4DF7.0020.0002] # LINEAR A SIGN AB047 +10629 ; [.4DF8.0020.0002] # LINEAR A SIGN AB048 +1062A ; [.4DF9.0020.0002] # LINEAR A SIGN AB049 +1062B ; [.4DFA.0020.0002] # LINEAR A SIGN AB050 +1062C ; [.4DFB.0020.0002] # LINEAR A SIGN AB051 +1062D ; [.4DFC.0020.0002] # LINEAR A SIGN AB053 +1062E ; [.4DFD.0020.0002] # LINEAR A SIGN AB054 +1062F ; [.4DFE.0020.0002] # LINEAR A SIGN AB055 +10630 ; [.4DFF.0020.0002] # LINEAR A SIGN AB056 +10631 ; [.4E00.0020.0002] # LINEAR A SIGN AB057 +10632 ; [.4E01.0020.0002] # LINEAR A SIGN AB058 +10633 ; [.4E02.0020.0002] # LINEAR A SIGN AB059 +10634 ; [.4E03.0020.0002] # LINEAR A SIGN AB060 +10635 ; [.4E04.0020.0002] # LINEAR A SIGN AB061 +10636 ; [.4E05.0020.0002] # LINEAR A SIGN AB065 +10637 ; [.4E06.0020.0002] # LINEAR A SIGN AB066 +10638 ; [.4E07.0020.0002] # LINEAR A SIGN AB067 +10639 ; [.4E08.0020.0002] # LINEAR A SIGN AB069 +1063A ; [.4E09.0020.0002] # LINEAR A SIGN AB070 +1063B ; [.4E0A.0020.0002] # LINEAR A SIGN AB073 +1063C ; [.4E0B.0020.0002] # LINEAR A SIGN AB074 +1063D ; [.4E0C.0020.0002] # LINEAR A SIGN AB076 +1063E ; [.4E0D.0020.0002] # LINEAR A SIGN AB077 +1063F ; [.4E0E.0020.0002] # LINEAR A SIGN AB078 +10640 ; [.4E0F.0020.0002] # LINEAR A SIGN AB079 +10641 ; [.4E10.0020.0002] # LINEAR A SIGN AB080 +10642 ; [.4E11.0020.0002] # LINEAR A SIGN AB081 +10643 ; [.4E12.0020.0002] # LINEAR A SIGN AB082 +10644 ; [.4E13.0020.0002] # LINEAR A SIGN AB085 +10645 ; [.4E14.0020.0002] # LINEAR A SIGN AB086 +10646 ; [.4E15.0020.0002] # LINEAR A SIGN AB087 +10647 ; [.4E16.0020.0002] # LINEAR A SIGN A100-102 +10648 ; [.4E17.0020.0002] # LINEAR A SIGN AB118 +10649 ; [.4E18.0020.0002] # LINEAR A SIGN AB120 +1064A ; [.4E19.0020.0002] # LINEAR A SIGN A120B +1064B ; [.4E1A.0020.0002] # LINEAR A SIGN AB122 +1064C ; [.4E1B.0020.0002] # LINEAR A SIGN AB123 +1064D ; [.4E1C.0020.0002] # LINEAR A SIGN AB131A +1064E ; [.4E1D.0020.0002] # LINEAR A SIGN AB131B +1064F ; [.4E1E.0020.0002] # LINEAR A SIGN A131C +10650 ; [.4E1F.0020.0002] # LINEAR A SIGN AB164 +10651 ; [.4E20.0020.0002] # LINEAR A SIGN AB171 +10652 ; [.4E21.0020.0002] # LINEAR A SIGN AB180 +10653 ; [.4E22.0020.0002] # LINEAR A SIGN AB188 +10654 ; [.4E23.0020.0002] # LINEAR A SIGN AB191 +10655 ; [.4E24.0020.0002] # LINEAR A SIGN A301 +10656 ; [.4E25.0020.0002] # LINEAR A SIGN A302 +10657 ; [.4E26.0020.0002] # LINEAR A SIGN A303 +10658 ; [.4E27.0020.0002] # LINEAR A SIGN A304 +10659 ; [.4E28.0020.0002] # LINEAR A SIGN A305 +1065A ; [.4E29.0020.0002] # LINEAR A SIGN A306 +1065B ; [.4E2A.0020.0002] # LINEAR A SIGN A307 +1065C ; [.4E2B.0020.0002] # LINEAR A SIGN A308 +1065D ; [.4E2C.0020.0002] # LINEAR A SIGN A309A +1065E ; [.4E2D.0020.0002] # LINEAR A SIGN A309B +1065F ; [.4E2E.0020.0002] # LINEAR A SIGN A309C +10660 ; [.4E2F.0020.0002] # LINEAR A SIGN A310 +10661 ; [.4E30.0020.0002] # LINEAR A SIGN A311 +10662 ; [.4E31.0020.0002] # LINEAR A SIGN A312 +10663 ; [.4E32.0020.0002] # LINEAR A SIGN A313A +10664 ; [.4E33.0020.0002] # LINEAR A SIGN A313B +10665 ; [.4E34.0020.0002] # LINEAR A SIGN A313C +10666 ; [.4E35.0020.0002] # LINEAR A SIGN A314 +10667 ; [.4E36.0020.0002] # LINEAR A SIGN A315 +10668 ; [.4E37.0020.0002] # LINEAR A SIGN A316 +10669 ; [.4E38.0020.0002] # LINEAR A SIGN A317 +1066A ; [.4E39.0020.0002] # LINEAR A SIGN A318 +1066B ; [.4E3A.0020.0002] # LINEAR A SIGN A319 +1066C ; [.4E3B.0020.0002] # LINEAR A SIGN A320 +1066D ; [.4E3C.0020.0002] # LINEAR A SIGN A321 +1066E ; [.4E3D.0020.0002] # LINEAR A SIGN A322 +1066F ; [.4E3E.0020.0002] # LINEAR A SIGN A323 +10670 ; [.4E3F.0020.0002] # LINEAR A SIGN A324 +10671 ; [.4E40.0020.0002] # LINEAR A SIGN A325 +10672 ; [.4E41.0020.0002] # LINEAR A SIGN A326 +10673 ; [.4E42.0020.0002] # LINEAR A SIGN A327 +10674 ; [.4E43.0020.0002] # LINEAR A SIGN A328 +10675 ; [.4E44.0020.0002] # LINEAR A SIGN A329 +10676 ; [.4E45.0020.0002] # LINEAR A SIGN A330 +10677 ; [.4E46.0020.0002] # LINEAR A SIGN A331 +10678 ; [.4E47.0020.0002] # LINEAR A SIGN A332 +10679 ; [.4E48.0020.0002] # LINEAR A SIGN A333 +1067A ; [.4E49.0020.0002] # LINEAR A SIGN A334 +1067B ; [.4E4A.0020.0002] # LINEAR A SIGN A335 +1067C ; [.4E4B.0020.0002] # LINEAR A SIGN A336 +1067D ; [.4E4C.0020.0002] # LINEAR A SIGN A337 +1067E ; [.4E4D.0020.0002] # LINEAR A SIGN A338 +1067F ; [.4E4E.0020.0002] # LINEAR A SIGN A339 +10680 ; [.4E4F.0020.0002] # LINEAR A SIGN A340 +10681 ; [.4E50.0020.0002] # LINEAR A SIGN A341 +10682 ; [.4E51.0020.0002] # LINEAR A SIGN A342 +10683 ; [.4E52.0020.0002] # LINEAR A SIGN A343 +10684 ; [.4E53.0020.0002] # LINEAR A SIGN A344 +10685 ; [.4E54.0020.0002] # LINEAR A SIGN A345 +10686 ; [.4E55.0020.0002] # LINEAR A SIGN A346 +10687 ; [.4E56.0020.0002] # LINEAR A SIGN A347 +10688 ; [.4E57.0020.0002] # LINEAR A SIGN A348 +10689 ; [.4E58.0020.0002] # LINEAR A SIGN A349 +1068A ; [.4E59.0020.0002] # LINEAR A SIGN A350 +1068B ; [.4E5A.0020.0002] # LINEAR A SIGN A351 +1068C ; [.4E5B.0020.0002] # LINEAR A SIGN A352 +1068D ; [.4E5C.0020.0002] # LINEAR A SIGN A353 +1068E ; [.4E5D.0020.0002] # LINEAR A SIGN A354 +1068F ; [.4E5E.0020.0002] # LINEAR A SIGN A355 +10690 ; [.4E5F.0020.0002] # LINEAR A SIGN A356 +10691 ; [.4E60.0020.0002] # LINEAR A SIGN A357 +10692 ; [.4E61.0020.0002] # LINEAR A SIGN A358 +10693 ; [.4E62.0020.0002] # LINEAR A SIGN A359 +10694 ; [.4E63.0020.0002] # LINEAR A SIGN A360 +10695 ; [.4E64.0020.0002] # LINEAR A SIGN A361 +10696 ; [.4E65.0020.0002] # LINEAR A SIGN A362 +10697 ; [.4E66.0020.0002] # LINEAR A SIGN A363 +10698 ; [.4E67.0020.0002] # LINEAR A SIGN A364 +10699 ; [.4E68.0020.0002] # LINEAR A SIGN A365 +1069A ; [.4E69.0020.0002] # LINEAR A SIGN A366 +1069B ; [.4E6A.0020.0002] # LINEAR A SIGN A367 +1069C ; [.4E6B.0020.0002] # LINEAR A SIGN A368 +1069D ; [.4E6C.0020.0002] # LINEAR A SIGN A369 +1069E ; [.4E6D.0020.0002] # LINEAR A SIGN A370 +1069F ; [.4E6E.0020.0002] # LINEAR A SIGN A371 +106A0 ; [.4E6F.0020.0002] # LINEAR A SIGN A400-VAS +106A1 ; [.4E70.0020.0002] # LINEAR A SIGN A401-VAS +106A2 ; [.4E71.0020.0002] # LINEAR A SIGN A402-VAS +106A3 ; [.4E72.0020.0002] # LINEAR A SIGN A403-VAS +106A4 ; [.4E73.0020.0002] # LINEAR A SIGN A404-VAS +106A5 ; [.4E74.0020.0002] # LINEAR A SIGN A405-VAS +106A6 ; [.4E75.0020.0002] # LINEAR A SIGN A406-VAS +106A7 ; [.4E76.0020.0002] # LINEAR A SIGN A407-VAS +106A8 ; [.4E77.0020.0002] # LINEAR A SIGN A408-VAS +106A9 ; [.4E78.0020.0002] # LINEAR A SIGN A409-VAS +106AA ; [.4E79.0020.0002] # LINEAR A SIGN A410-VAS +106AB ; [.4E7A.0020.0002] # LINEAR A SIGN A411-VAS +106AC ; [.4E7B.0020.0002] # LINEAR A SIGN A412-VAS +106AD ; [.4E7C.0020.0002] # LINEAR A SIGN A413-VAS +106AE ; [.4E7D.0020.0002] # LINEAR A SIGN A414-VAS +106AF ; [.4E7E.0020.0002] # LINEAR A SIGN A415-VAS +106B0 ; [.4E7F.0020.0002] # LINEAR A SIGN A416-VAS +106B1 ; [.4E80.0020.0002] # LINEAR A SIGN A417-VAS +106B2 ; [.4E81.0020.0002] # LINEAR A SIGN A418-VAS +106B3 ; [.4E82.0020.0002] # LINEAR A SIGN A501 +106B4 ; [.4E83.0020.0002] # LINEAR A SIGN A502 +106B5 ; [.4E84.0020.0002] # LINEAR A SIGN A503 +106B6 ; [.4E85.0020.0002] # LINEAR A SIGN A504 +106B7 ; [.4E86.0020.0002] # LINEAR A SIGN A505 +106B8 ; [.4E87.0020.0002] # LINEAR A SIGN A506 +106B9 ; [.4E88.0020.0002] # LINEAR A SIGN A508 +106BA ; [.4E89.0020.0002] # LINEAR A SIGN A509 +106BB ; [.4E8A.0020.0002] # LINEAR A SIGN A510 +106BC ; [.4E8B.0020.0002] # LINEAR A SIGN A511 +106BD ; [.4E8C.0020.0002] # LINEAR A SIGN A512 +106BE ; [.4E8D.0020.0002] # LINEAR A SIGN A513 +106BF ; [.4E8E.0020.0002] # LINEAR A SIGN A515 +106C0 ; [.4E8F.0020.0002] # LINEAR A SIGN A516 +106C1 ; [.4E90.0020.0002] # LINEAR A SIGN A520 +106C2 ; [.4E91.0020.0002] # LINEAR A SIGN A521 +106C3 ; [.4E92.0020.0002] # LINEAR A SIGN A523 +106C4 ; [.4E93.0020.0002] # LINEAR A SIGN A524 +106C5 ; [.4E94.0020.0002] # LINEAR A SIGN A525 +106C6 ; [.4E95.0020.0002] # LINEAR A SIGN A526 +106C7 ; [.4E96.0020.0002] # LINEAR A SIGN A527 +106C8 ; [.4E97.0020.0002] # LINEAR A SIGN A528 +106C9 ; [.4E98.0020.0002] # LINEAR A SIGN A529 +106CA ; [.4E99.0020.0002] # LINEAR A SIGN A530 +106CB ; [.4E9A.0020.0002] # LINEAR A SIGN A531 +106CC ; [.4E9B.0020.0002] # LINEAR A SIGN A532 +106CD ; [.4E9C.0020.0002] # LINEAR A SIGN A534 +106CE ; [.4E9D.0020.0002] # LINEAR A SIGN A535 +106CF ; [.4E9E.0020.0002] # LINEAR A SIGN A536 +106D0 ; [.4E9F.0020.0002] # LINEAR A SIGN A537 +106D1 ; [.4EA0.0020.0002] # LINEAR A SIGN A538 +106D2 ; [.4EA1.0020.0002] # LINEAR A SIGN A539 +106D3 ; [.4EA2.0020.0002] # LINEAR A SIGN A540 +106D4 ; [.4EA3.0020.0002] # LINEAR A SIGN A541 +106D5 ; [.4EA4.0020.0002] # LINEAR A SIGN A542 +106D6 ; [.4EA5.0020.0002] # LINEAR A SIGN A545 +106D7 ; [.4EA6.0020.0002] # LINEAR A SIGN A547 +106D8 ; [.4EA7.0020.0002] # LINEAR A SIGN A548 +106D9 ; [.4EA8.0020.0002] # LINEAR A SIGN A549 +106DA ; [.4EA9.0020.0002] # LINEAR A SIGN A550 +106DB ; [.4EAA.0020.0002] # LINEAR A SIGN A551 +106DC ; [.4EAB.0020.0002] # LINEAR A SIGN A552 +106DD ; [.4EAC.0020.0002] # LINEAR A SIGN A553 +106DE ; [.4EAD.0020.0002] # LINEAR A SIGN A554 +106DF ; [.4EAE.0020.0002] # LINEAR A SIGN A555 +106E0 ; [.4EAF.0020.0002] # LINEAR A SIGN A556 +106E1 ; [.4EB0.0020.0002] # LINEAR A SIGN A557 +106E2 ; [.4EB1.0020.0002] # LINEAR A SIGN A559 +106E3 ; [.4EB2.0020.0002] # LINEAR A SIGN A563 +106E4 ; [.4EB3.0020.0002] # LINEAR A SIGN A564 +106E5 ; [.4EB4.0020.0002] # LINEAR A SIGN A565 +106E6 ; [.4EB5.0020.0002] # LINEAR A SIGN A566 +106E7 ; [.4EB6.0020.0002] # LINEAR A SIGN A568 +106E8 ; [.4EB7.0020.0002] # LINEAR A SIGN A569 +106E9 ; [.4EB8.0020.0002] # LINEAR A SIGN A570 +106EA ; [.4EB9.0020.0002] # LINEAR A SIGN A571 +106EB ; [.4EBA.0020.0002] # LINEAR A SIGN A572 +106EC ; [.4EBB.0020.0002] # LINEAR A SIGN A573 +106ED ; [.4EBC.0020.0002] # LINEAR A SIGN A574 +106EE ; [.4EBD.0020.0002] # LINEAR A SIGN A575 +106EF ; [.4EBE.0020.0002] # LINEAR A SIGN A576 +106F0 ; [.4EBF.0020.0002] # LINEAR A SIGN A577 +106F1 ; [.4EC0.0020.0002] # LINEAR A SIGN A578 +106F2 ; [.4EC1.0020.0002] # LINEAR A SIGN A579 +106F3 ; [.4EC2.0020.0002] # LINEAR A SIGN A580 +106F4 ; [.4EC3.0020.0002] # LINEAR A SIGN A581 +106F5 ; [.4EC4.0020.0002] # LINEAR A SIGN A582 +106F6 ; [.4EC5.0020.0002] # LINEAR A SIGN A583 +106F7 ; [.4EC6.0020.0002] # LINEAR A SIGN A584 +106F8 ; [.4EC7.0020.0002] # LINEAR A SIGN A585 +106F9 ; [.4EC8.0020.0002] # LINEAR A SIGN A586 +106FA ; [.4EC9.0020.0002] # LINEAR A SIGN A587 +106FB ; [.4ECA.0020.0002] # LINEAR A SIGN A588 +106FC ; [.4ECB.0020.0002] # LINEAR A SIGN A589 +106FD ; [.4ECC.0020.0002] # LINEAR A SIGN A591 +106FE ; [.4ECD.0020.0002] # LINEAR A SIGN A592 +106FF ; [.4ECE.0020.0002] # LINEAR A SIGN A594 +10700 ; [.4ECF.0020.0002] # LINEAR A SIGN A595 +10701 ; [.4ED0.0020.0002] # LINEAR A SIGN A596 +10702 ; [.4ED1.0020.0002] # LINEAR A SIGN A598 +10703 ; [.4ED2.0020.0002] # LINEAR A SIGN A600 +10704 ; [.4ED3.0020.0002] # LINEAR A SIGN A601 +10705 ; [.4ED4.0020.0002] # LINEAR A SIGN A602 +10706 ; [.4ED5.0020.0002] # LINEAR A SIGN A603 +10707 ; [.4ED6.0020.0002] # LINEAR A SIGN A604 +10708 ; [.4ED7.0020.0002] # LINEAR A SIGN A606 +10709 ; [.4ED8.0020.0002] # LINEAR A SIGN A608 +1070A ; [.4ED9.0020.0002] # LINEAR A SIGN A609 +1070B ; [.4EDA.0020.0002] # LINEAR A SIGN A610 +1070C ; [.4EDB.0020.0002] # LINEAR A SIGN A611 +1070D ; [.4EDC.0020.0002] # LINEAR A SIGN A612 +1070E ; [.4EDD.0020.0002] # LINEAR A SIGN A613 +1070F ; [.4EDE.0020.0002] # LINEAR A SIGN A614 +10710 ; [.4EDF.0020.0002] # LINEAR A SIGN A615 +10711 ; [.4EE0.0020.0002] # LINEAR A SIGN A616 +10712 ; [.4EE1.0020.0002] # LINEAR A SIGN A617 +10713 ; [.4EE2.0020.0002] # LINEAR A SIGN A618 +10714 ; [.4EE3.0020.0002] # LINEAR A SIGN A619 +10715 ; [.4EE4.0020.0002] # LINEAR A SIGN A620 +10716 ; [.4EE5.0020.0002] # LINEAR A SIGN A621 +10717 ; [.4EE6.0020.0002] # LINEAR A SIGN A622 +10718 ; [.4EE7.0020.0002] # LINEAR A SIGN A623 +10719 ; [.4EE8.0020.0002] # LINEAR A SIGN A624 +1071A ; [.4EE9.0020.0002] # LINEAR A SIGN A626 +1071B ; [.4EEA.0020.0002] # LINEAR A SIGN A627 +1071C ; [.4EEB.0020.0002] # LINEAR A SIGN A628 +1071D ; [.4EEC.0020.0002] # LINEAR A SIGN A629 +1071E ; [.4EED.0020.0002] # LINEAR A SIGN A634 +1071F ; [.4EEE.0020.0002] # LINEAR A SIGN A637 +10720 ; [.4EEF.0020.0002] # LINEAR A SIGN A638 +10721 ; [.4EF0.0020.0002] # LINEAR A SIGN A640 +10722 ; [.4EF1.0020.0002] # LINEAR A SIGN A642 +10723 ; [.4EF2.0020.0002] # LINEAR A SIGN A643 +10724 ; [.4EF3.0020.0002] # LINEAR A SIGN A644 +10725 ; [.4EF4.0020.0002] # LINEAR A SIGN A645 +10726 ; [.4EF5.0020.0002] # LINEAR A SIGN A646 +10727 ; [.4EF6.0020.0002] # LINEAR A SIGN A648 +10728 ; [.4EF7.0020.0002] # LINEAR A SIGN A649 +10729 ; [.4EF8.0020.0002] # LINEAR A SIGN A651 +1072A ; [.4EF9.0020.0002] # LINEAR A SIGN A652 +1072B ; [.4EFA.0020.0002] # LINEAR A SIGN A653 +1072C ; [.4EFB.0020.0002] # LINEAR A SIGN A654 +1072D ; [.4EFC.0020.0002] # LINEAR A SIGN A655 +1072E ; [.4EFD.0020.0002] # LINEAR A SIGN A656 +1072F ; [.4EFE.0020.0002] # LINEAR A SIGN A657 +10730 ; [.4EFF.0020.0002] # LINEAR A SIGN A658 +10731 ; [.4F00.0020.0002] # LINEAR A SIGN A659 +10732 ; [.4F01.0020.0002] # LINEAR A SIGN A660 +10733 ; [.4F02.0020.0002] # LINEAR A SIGN A661 +10734 ; [.4F03.0020.0002] # LINEAR A SIGN A662 +10735 ; [.4F04.0020.0002] # LINEAR A SIGN A663 +10736 ; [.4F05.0020.0002] # LINEAR A SIGN A664 +10740 ; [.4F06.0020.0002] # LINEAR A SIGN A701 A +10741 ; [.4F07.0020.0002] # LINEAR A SIGN A702 B +10742 ; [.4F08.0020.0002] # LINEAR A SIGN A703 D +10743 ; [.4F09.0020.0002] # LINEAR A SIGN A704 E +10744 ; [.4F0A.0020.0002] # LINEAR A SIGN A705 F +10745 ; [.4F0B.0020.0002] # LINEAR A SIGN A706 H +10746 ; [.4F0C.0020.0002] # LINEAR A SIGN A707 J +10747 ; [.4F0D.0020.0002] # LINEAR A SIGN A708 K +10748 ; [.4F0E.0020.0002] # LINEAR A SIGN A709 L +10749 ; [.4F0F.0020.0002] # LINEAR A SIGN A709-2 L2 +1074A ; [.4F10.0020.0002] # LINEAR A SIGN A709-3 L3 +1074B ; [.4F11.0020.0002] # LINEAR A SIGN A709-4 L4 +1074C ; [.4F12.0020.0002] # LINEAR A SIGN A709-6 L6 +1074D ; [.4F13.0020.0002] # LINEAR A SIGN A710 W +1074E ; [.4F14.0020.0002] # LINEAR A SIGN A711 X +1074F ; [.4F15.0020.0002] # LINEAR A SIGN A712 Y +10750 ; [.4F16.0020.0002] # LINEAR A SIGN A713 OMEGA +10751 ; [.4F17.0020.0002] # LINEAR A SIGN A714 ABB +10752 ; [.4F18.0020.0002] # LINEAR A SIGN A715 BB +10753 ; [.4F19.0020.0002] # LINEAR A SIGN A717 DD +10754 ; [.4F1A.0020.0002] # LINEAR A SIGN A726 EYYY +10755 ; [.4F1B.0020.0002] # LINEAR A SIGN A732 JE +10760 ; [.4F1C.0020.0002] # LINEAR A SIGN A800 +10761 ; [.4F1D.0020.0002] # LINEAR A SIGN A801 +10762 ; [.4F1E.0020.0002] # LINEAR A SIGN A802 +10763 ; [.4F1F.0020.0002] # LINEAR A SIGN A803 +10764 ; [.4F20.0020.0002] # LINEAR A SIGN A804 +10765 ; [.4F21.0020.0002] # LINEAR A SIGN A805 +10766 ; [.4F22.0020.0002] # LINEAR A SIGN A806 +10767 ; [.4F23.0020.0002] # LINEAR A SIGN A807 +10800 ; [.4F24.0020.0002] # CYPRIOT SYLLABLE A +10801 ; [.4F25.0020.0002] # CYPRIOT SYLLABLE E +10802 ; [.4F26.0020.0002] # CYPRIOT SYLLABLE I +10803 ; [.4F27.0020.0002] # CYPRIOT SYLLABLE O +10804 ; [.4F28.0020.0002] # CYPRIOT SYLLABLE U +10805 ; [.4F29.0020.0002] # CYPRIOT SYLLABLE JA +10808 ; [.4F2A.0020.0002] # CYPRIOT SYLLABLE JO +1080A ; [.4F2B.0020.0002] # CYPRIOT SYLLABLE KA +1080B ; [.4F2C.0020.0002] # CYPRIOT SYLLABLE KE +1080C ; [.4F2D.0020.0002] # CYPRIOT SYLLABLE KI +1080D ; [.4F2E.0020.0002] # CYPRIOT SYLLABLE KO +1080E ; [.4F2F.0020.0002] # CYPRIOT SYLLABLE KU +1080F ; [.4F30.0020.0002] # CYPRIOT SYLLABLE LA +10810 ; [.4F31.0020.0002] # CYPRIOT SYLLABLE LE +10811 ; [.4F32.0020.0002] # CYPRIOT SYLLABLE LI +10812 ; [.4F33.0020.0002] # CYPRIOT SYLLABLE LO +10813 ; [.4F34.0020.0002] # CYPRIOT SYLLABLE LU +10814 ; [.4F35.0020.0002] # CYPRIOT SYLLABLE MA +10815 ; [.4F36.0020.0002] # CYPRIOT SYLLABLE ME +10816 ; [.4F37.0020.0002] # CYPRIOT SYLLABLE MI +10817 ; [.4F38.0020.0002] # CYPRIOT SYLLABLE MO +10818 ; [.4F39.0020.0002] # CYPRIOT SYLLABLE MU +10819 ; [.4F3A.0020.0002] # CYPRIOT SYLLABLE NA +1081A ; [.4F3B.0020.0002] # CYPRIOT SYLLABLE NE +1081B ; [.4F3C.0020.0002] # CYPRIOT SYLLABLE NI +1081C ; [.4F3D.0020.0002] # CYPRIOT SYLLABLE NO +1081D ; [.4F3E.0020.0002] # CYPRIOT SYLLABLE NU +1081E ; [.4F3F.0020.0002] # CYPRIOT SYLLABLE PA +1081F ; [.4F40.0020.0002] # CYPRIOT SYLLABLE PE +10820 ; [.4F41.0020.0002] # CYPRIOT SYLLABLE PI +10821 ; [.4F42.0020.0002] # CYPRIOT SYLLABLE PO +10822 ; [.4F43.0020.0002] # CYPRIOT SYLLABLE PU +10823 ; [.4F44.0020.0002] # CYPRIOT SYLLABLE RA +10824 ; [.4F45.0020.0002] # CYPRIOT SYLLABLE RE +10825 ; [.4F46.0020.0002] # CYPRIOT SYLLABLE RI +10826 ; [.4F47.0020.0002] # CYPRIOT SYLLABLE RO +10827 ; [.4F48.0020.0002] # CYPRIOT SYLLABLE RU +10828 ; [.4F49.0020.0002] # CYPRIOT SYLLABLE SA +10829 ; [.4F4A.0020.0002] # CYPRIOT SYLLABLE SE +1082A ; [.4F4B.0020.0002] # CYPRIOT SYLLABLE SI +1082B ; [.4F4C.0020.0002] # CYPRIOT SYLLABLE SO +1082C ; [.4F4D.0020.0002] # CYPRIOT SYLLABLE SU +1082D ; [.4F4E.0020.0002] # CYPRIOT SYLLABLE TA +1082E ; [.4F4F.0020.0002] # CYPRIOT SYLLABLE TE +1082F ; [.4F50.0020.0002] # CYPRIOT SYLLABLE TI +10830 ; [.4F51.0020.0002] # CYPRIOT SYLLABLE TO +10831 ; [.4F52.0020.0002] # CYPRIOT SYLLABLE TU +10832 ; [.4F53.0020.0002] # CYPRIOT SYLLABLE WA +10833 ; [.4F54.0020.0002] # CYPRIOT SYLLABLE WE +10834 ; [.4F55.0020.0002] # CYPRIOT SYLLABLE WI +10835 ; [.4F56.0020.0002] # CYPRIOT SYLLABLE WO +10837 ; [.4F57.0020.0002] # CYPRIOT SYLLABLE XA +10838 ; [.4F58.0020.0002] # CYPRIOT SYLLABLE XE +1083C ; [.4F59.0020.0002] # CYPRIOT SYLLABLE ZA +1083F ; [.4F5A.0020.0002] # CYPRIOT SYLLABLE ZO +10A60 ; [.4F5B.0020.0002] # OLD SOUTH ARABIAN LETTER HE +10A61 ; [.4F5C.0020.0002] # OLD SOUTH ARABIAN LETTER LAMEDH +10A62 ; [.4F5D.0020.0002] # OLD SOUTH ARABIAN LETTER HETH +10A63 ; [.4F5E.0020.0002] # OLD SOUTH ARABIAN LETTER MEM +10A64 ; [.4F5F.0020.0002] # OLD SOUTH ARABIAN LETTER QOPH +10A65 ; [.4F60.0020.0002] # OLD SOUTH ARABIAN LETTER WAW +10A66 ; [.4F61.0020.0002] # OLD SOUTH ARABIAN LETTER SHIN +10A67 ; [.4F62.0020.0002] # OLD SOUTH ARABIAN LETTER RESH +10A68 ; [.4F63.0020.0002] # OLD SOUTH ARABIAN LETTER BETH +10A69 ; [.4F64.0020.0002] # OLD SOUTH ARABIAN LETTER TAW +10A6A ; [.4F65.0020.0002] # OLD SOUTH ARABIAN LETTER SAT +10A6B ; [.4F66.0020.0002] # OLD SOUTH ARABIAN LETTER KAPH +10A6C ; [.4F67.0020.0002] # OLD SOUTH ARABIAN LETTER NUN +10A6D ; [.4F68.0020.0002] # OLD SOUTH ARABIAN LETTER KHETH +10A6E ; [.4F69.0020.0002] # OLD SOUTH ARABIAN LETTER SADHE +10A6F ; [.4F6A.0020.0002] # OLD SOUTH ARABIAN LETTER SAMEKH +10A70 ; [.4F6B.0020.0002] # OLD SOUTH ARABIAN LETTER FE +10A71 ; [.4F6C.0020.0002] # OLD SOUTH ARABIAN LETTER ALEF +10A72 ; [.4F6D.0020.0002] # OLD SOUTH ARABIAN LETTER AYN +10A73 ; [.4F6E.0020.0002] # OLD SOUTH ARABIAN LETTER DHADHE +10A74 ; [.4F6F.0020.0002] # OLD SOUTH ARABIAN LETTER GIMEL +10A75 ; [.4F70.0020.0002] # OLD SOUTH ARABIAN LETTER DALETH +10A76 ; [.4F71.0020.0002] # OLD SOUTH ARABIAN LETTER GHAYN +10A77 ; [.4F72.0020.0002] # OLD SOUTH ARABIAN LETTER TETH +10A78 ; [.4F73.0020.0002] # OLD SOUTH ARABIAN LETTER ZAYN +10A79 ; [.4F74.0020.0002] # OLD SOUTH ARABIAN LETTER DHALETH +10A7A ; [.4F75.0020.0002] # OLD SOUTH ARABIAN LETTER YODH +10A7B ; [.4F76.0020.0002] # OLD SOUTH ARABIAN LETTER THAW +10A7C ; [.4F77.0020.0002] # OLD SOUTH ARABIAN LETTER THETH +10A80 ; [.4F78.0020.0002] # OLD NORTH ARABIAN LETTER HEH +10A81 ; [.4F79.0020.0002] # OLD NORTH ARABIAN LETTER LAM +10A82 ; [.4F7A.0020.0002] # OLD NORTH ARABIAN LETTER HAH +10A83 ; [.4F7B.0020.0002] # OLD NORTH ARABIAN LETTER MEEM +10A84 ; [.4F7C.0020.0002] # OLD NORTH ARABIAN LETTER QAF +10A85 ; [.4F7D.0020.0002] # OLD NORTH ARABIAN LETTER WAW +10A86 ; [.4F7E.0020.0002] # OLD NORTH ARABIAN LETTER ES-2 +10A87 ; [.4F7F.0020.0002] # OLD NORTH ARABIAN LETTER REH +10A88 ; [.4F80.0020.0002] # OLD NORTH ARABIAN LETTER BEH +10A89 ; [.4F81.0020.0002] # OLD NORTH ARABIAN LETTER TEH +10A8A ; [.4F82.0020.0002] # OLD NORTH ARABIAN LETTER ES-1 +10A8B ; [.4F83.0020.0002] # OLD NORTH ARABIAN LETTER KAF +10A8C ; [.4F84.0020.0002] # OLD NORTH ARABIAN LETTER NOON +10A8D ; [.4F85.0020.0002] # OLD NORTH ARABIAN LETTER KHAH +10A8E ; [.4F86.0020.0002] # OLD NORTH ARABIAN LETTER SAD +10A8F ; [.4F87.0020.0002] # OLD NORTH ARABIAN LETTER ES-3 +10A90 ; [.4F88.0020.0002] # OLD NORTH ARABIAN LETTER FEH +10A91 ; [.4F89.0020.0002] # OLD NORTH ARABIAN LETTER ALEF +10A92 ; [.4F8A.0020.0002] # OLD NORTH ARABIAN LETTER AIN +10A93 ; [.4F8B.0020.0002] # OLD NORTH ARABIAN LETTER DAD +10A94 ; [.4F8C.0020.0002] # OLD NORTH ARABIAN LETTER GEEM +10A95 ; [.4F8D.0020.0002] # OLD NORTH ARABIAN LETTER DAL +10A96 ; [.4F8E.0020.0002] # OLD NORTH ARABIAN LETTER GHAIN +10A97 ; [.4F8F.0020.0002] # OLD NORTH ARABIAN LETTER TAH +10A98 ; [.4F90.0020.0002] # OLD NORTH ARABIAN LETTER ZAIN +10A99 ; [.4F91.0020.0002] # OLD NORTH ARABIAN LETTER THAL +10A9A ; [.4F92.0020.0002] # OLD NORTH ARABIAN LETTER YEH +10A9B ; [.4F93.0020.0002] # OLD NORTH ARABIAN LETTER THEH +10A9C ; [.4F94.0020.0002] # OLD NORTH ARABIAN LETTER ZAH +10B00 ; [.4F95.0020.0002] # AVESTAN LETTER A +10B01 ; [.4F96.0020.0002] # AVESTAN LETTER AA +10B02 ; [.4F97.0020.0002] # AVESTAN LETTER AO +10B03 ; [.4F98.0020.0002] # AVESTAN LETTER AAO +10B04 ; [.4F99.0020.0002] # AVESTAN LETTER AN +10B05 ; [.4F9A.0020.0002] # AVESTAN LETTER AAN +10B06 ; [.4F9B.0020.0002] # AVESTAN LETTER AE +10B07 ; [.4F9C.0020.0002] # AVESTAN LETTER AEE +10B08 ; [.4F9D.0020.0002] # AVESTAN LETTER E +10B09 ; [.4F9E.0020.0002] # AVESTAN LETTER EE +10B0A ; [.4F9F.0020.0002] # AVESTAN LETTER O +10B0B ; [.4FA0.0020.0002] # AVESTAN LETTER OO +10B0C ; [.4FA1.0020.0002] # AVESTAN LETTER I +10B0D ; [.4FA2.0020.0002] # AVESTAN LETTER II +10B0E ; [.4FA3.0020.0002] # AVESTAN LETTER U +10B0F ; [.4FA4.0020.0002] # AVESTAN LETTER UU +10B10 ; [.4FA5.0020.0002] # AVESTAN LETTER KE +10B11 ; [.4FA6.0020.0002] # AVESTAN LETTER XE +10B12 ; [.4FA7.0020.0002] # AVESTAN LETTER XYE +10B13 ; [.4FA8.0020.0002] # AVESTAN LETTER XVE +10B14 ; [.4FA9.0020.0002] # AVESTAN LETTER GE +10B15 ; [.4FAA.0020.0002] # AVESTAN LETTER GGE +10B16 ; [.4FAB.0020.0002] # AVESTAN LETTER GHE +10B17 ; [.4FAC.0020.0002] # AVESTAN LETTER CE +10B18 ; [.4FAD.0020.0002] # AVESTAN LETTER JE +10B19 ; [.4FAE.0020.0002] # AVESTAN LETTER TE +10B1A ; [.4FAF.0020.0002] # AVESTAN LETTER THE +10B1B ; [.4FB0.0020.0002] # AVESTAN LETTER DE +10B1C ; [.4FB1.0020.0002] # AVESTAN LETTER DHE +10B1D ; [.4FB2.0020.0002] # AVESTAN LETTER TTE +10B1E ; [.4FB3.0020.0002] # AVESTAN LETTER PE +10B1F ; [.4FB4.0020.0002] # AVESTAN LETTER FE +10B20 ; [.4FB5.0020.0002] # AVESTAN LETTER BE +10B21 ; [.4FB6.0020.0002] # AVESTAN LETTER BHE +10B22 ; [.4FB7.0020.0002] # AVESTAN LETTER NGE +10B23 ; [.4FB8.0020.0002] # AVESTAN LETTER NGYE +10B24 ; [.4FB9.0020.0002] # AVESTAN LETTER NGVE +10B25 ; [.4FBA.0020.0002] # AVESTAN LETTER NE +10B26 ; [.4FBB.0020.0002] # AVESTAN LETTER NYE +10B27 ; [.4FBC.0020.0002] # AVESTAN LETTER NNE +10B28 ; [.4FBD.0020.0002] # AVESTAN LETTER ME +10B29 ; [.4FBE.0020.0002] # AVESTAN LETTER HME +10B2A ; [.4FBF.0020.0002] # AVESTAN LETTER YYE +10B2B ; [.4FC0.0020.0002] # AVESTAN LETTER YE +10B2C ; [.4FC1.0020.0002] # AVESTAN LETTER VE +10B2D ; [.4FC2.0020.0002] # AVESTAN LETTER RE +10B2E ; [.4FC2.0020.0004][.0000.0118.0004] # AVESTAN LETTER LE +10B2F ; [.4FC3.0020.0002] # AVESTAN LETTER SE +10B30 ; [.4FC4.0020.0002] # AVESTAN LETTER ZE +10B31 ; [.4FC5.0020.0002] # AVESTAN LETTER SHE +10B32 ; [.4FC6.0020.0002] # AVESTAN LETTER ZHE +10B33 ; [.4FC7.0020.0002] # AVESTAN LETTER SHYE +10B34 ; [.4FC8.0020.0002] # AVESTAN LETTER SSHE +10B35 ; [.4FC9.0020.0002] # AVESTAN LETTER HE +10860 ; [.4FCA.0020.0002] # PALMYRENE LETTER ALEPH +10861 ; [.4FCB.0020.0002] # PALMYRENE LETTER BETH +10862 ; [.4FCC.0020.0002] # PALMYRENE LETTER GIMEL +10863 ; [.4FCD.0020.0002] # PALMYRENE LETTER DALETH +10864 ; [.4FCE.0020.0002] # PALMYRENE LETTER HE +10865 ; [.4FCF.0020.0002] # PALMYRENE LETTER WAW +10866 ; [.4FD0.0020.0002] # PALMYRENE LETTER ZAYIN +10867 ; [.4FD1.0020.0002] # PALMYRENE LETTER HETH +10868 ; [.4FD2.0020.0002] # PALMYRENE LETTER TETH +10869 ; [.4FD3.0020.0002] # PALMYRENE LETTER YODH +1086A ; [.4FD4.0020.0002] # PALMYRENE LETTER KAPH +1086B ; [.4FD5.0020.0002] # PALMYRENE LETTER LAMEDH +1086C ; [.4FD6.0020.0002] # PALMYRENE LETTER MEM +1086E ; [.4FD7.0020.0002] # PALMYRENE LETTER NUN +1086D ; [.4FD7.0020.0019] # PALMYRENE LETTER FINAL NUN +1086F ; [.4FD8.0020.0002] # PALMYRENE LETTER SAMEKH +10870 ; [.4FD9.0020.0002] # PALMYRENE LETTER AYIN +10871 ; [.4FDA.0020.0002] # PALMYRENE LETTER PE +10872 ; [.4FDB.0020.0002] # PALMYRENE LETTER SADHE +10873 ; [.4FDC.0020.0002] # PALMYRENE LETTER QOPH +10874 ; [.4FDD.0020.0002] # PALMYRENE LETTER RESH +10875 ; [.4FDE.0020.0002] # PALMYRENE LETTER SHIN +10876 ; [.4FDF.0020.0002] # PALMYRENE LETTER TAW +10881 ; [.4FE0.0020.0002] # NABATAEAN LETTER ALEPH +10880 ; [.4FE0.0020.0019] # NABATAEAN LETTER FINAL ALEPH +10883 ; [.4FE1.0020.0002] # NABATAEAN LETTER BETH +10882 ; [.4FE1.0020.0019] # NABATAEAN LETTER FINAL BETH +10884 ; [.4FE2.0020.0002] # NABATAEAN LETTER GIMEL +10885 ; [.4FE3.0020.0002] # NABATAEAN LETTER DALETH +10887 ; [.4FE4.0020.0002] # NABATAEAN LETTER HE +10886 ; [.4FE4.0020.0019] # NABATAEAN LETTER FINAL HE +10888 ; [.4FE5.0020.0002] # NABATAEAN LETTER WAW +10889 ; [.4FE6.0020.0002] # NABATAEAN LETTER ZAYIN +1088A ; [.4FE7.0020.0002] # NABATAEAN LETTER HETH +1088B ; [.4FE8.0020.0002] # NABATAEAN LETTER TETH +1088D ; [.4FE9.0020.0002] # NABATAEAN LETTER YODH +1088C ; [.4FE9.0020.0019] # NABATAEAN LETTER FINAL YODH +1088F ; [.4FEA.0020.0002] # NABATAEAN LETTER KAPH +1088E ; [.4FEA.0020.0019] # NABATAEAN LETTER FINAL KAPH +10891 ; [.4FEB.0020.0002] # NABATAEAN LETTER LAMEDH +10890 ; [.4FEB.0020.0019] # NABATAEAN LETTER FINAL LAMEDH +10893 ; [.4FEC.0020.0002] # NABATAEAN LETTER MEM +10892 ; [.4FEC.0020.0019] # NABATAEAN LETTER FINAL MEM +10895 ; [.4FED.0020.0002] # NABATAEAN LETTER NUN +10894 ; [.4FED.0020.0019] # NABATAEAN LETTER FINAL NUN +10896 ; [.4FEE.0020.0002] # NABATAEAN LETTER SAMEKH +10897 ; [.4FEF.0020.0002] # NABATAEAN LETTER AYIN +10898 ; [.4FF0.0020.0002] # NABATAEAN LETTER PE +10899 ; [.4FF1.0020.0002] # NABATAEAN LETTER SADHE +1089A ; [.4FF2.0020.0002] # NABATAEAN LETTER QOPH +1089B ; [.4FF3.0020.0002] # NABATAEAN LETTER RESH +1089D ; [.4FF4.0020.0002] # NABATAEAN LETTER SHIN +1089C ; [.4FF4.0020.0019] # NABATAEAN LETTER FINAL SHIN +1089E ; [.4FF5.0020.0002] # NABATAEAN LETTER TAW +108E0 ; [.4FF6.0020.0002] # HATRAN LETTER ALEPH +108E1 ; [.4FF7.0020.0002] # HATRAN LETTER BETH +108E2 ; [.4FF8.0020.0002] # HATRAN LETTER GIMEL +108E3 ; [.4FF9.0020.0002] # HATRAN LETTER DALETH-RESH +108E4 ; [.4FFA.0020.0002] # HATRAN LETTER HE +108E5 ; [.4FFB.0020.0002] # HATRAN LETTER WAW +108E6 ; [.4FFC.0020.0002] # HATRAN LETTER ZAYN +108E7 ; [.4FFD.0020.0002] # HATRAN LETTER HETH +108E8 ; [.4FFE.0020.0002] # HATRAN LETTER TETH +108E9 ; [.4FFF.0020.0002] # HATRAN LETTER YODH +108EA ; [.5000.0020.0002] # HATRAN LETTER KAPH +108EB ; [.5001.0020.0002] # HATRAN LETTER LAMEDH +108EC ; [.5002.0020.0002] # HATRAN LETTER MEM +108ED ; [.5003.0020.0002] # HATRAN LETTER NUN +108EE ; [.5004.0020.0002] # HATRAN LETTER SAMEKH +108EF ; [.5005.0020.0002] # HATRAN LETTER AYN +108F0 ; [.5006.0020.0002] # HATRAN LETTER PE +108F1 ; [.5007.0020.0002] # HATRAN LETTER SADHE +108F2 ; [.5008.0020.0002] # HATRAN LETTER QOPH +108F4 ; [.5009.0020.0002] # HATRAN LETTER SHIN +108F5 ; [.500A.0020.0002] # HATRAN LETTER TAW +10840 ; [.500B.0020.0002] # IMPERIAL ARAMAIC LETTER ALEPH +10841 ; [.500C.0020.0002] # IMPERIAL ARAMAIC LETTER BETH +10842 ; [.500D.0020.0002] # IMPERIAL ARAMAIC LETTER GIMEL +10843 ; [.500E.0020.0002] # IMPERIAL ARAMAIC LETTER DALETH +10844 ; [.500F.0020.0002] # IMPERIAL ARAMAIC LETTER HE +10845 ; [.5010.0020.0002] # IMPERIAL ARAMAIC LETTER WAW +10846 ; [.5011.0020.0002] # IMPERIAL ARAMAIC LETTER ZAYIN +10847 ; [.5012.0020.0002] # IMPERIAL ARAMAIC LETTER HETH +10848 ; [.5013.0020.0002] # IMPERIAL ARAMAIC LETTER TETH +10849 ; [.5014.0020.0002] # IMPERIAL ARAMAIC LETTER YODH +1084A ; [.5015.0020.0002] # IMPERIAL ARAMAIC LETTER KAPH +1084B ; [.5016.0020.0002] # IMPERIAL ARAMAIC LETTER LAMEDH +1084C ; [.5017.0020.0002] # IMPERIAL ARAMAIC LETTER MEM +1084D ; [.5018.0020.0002] # IMPERIAL ARAMAIC LETTER NUN +1084E ; [.5019.0020.0002] # IMPERIAL ARAMAIC LETTER SAMEKH +1084F ; [.501A.0020.0002] # IMPERIAL ARAMAIC LETTER AYIN +10850 ; [.501B.0020.0002] # IMPERIAL ARAMAIC LETTER PE +10851 ; [.501C.0020.0002] # IMPERIAL ARAMAIC LETTER SADHE +10852 ; [.501D.0020.0002] # IMPERIAL ARAMAIC LETTER QOPH +10853 ; [.501E.0020.0002] # IMPERIAL ARAMAIC LETTER RESH +10854 ; [.501F.0020.0002] # IMPERIAL ARAMAIC LETTER SHIN +10855 ; [.5020.0020.0002] # IMPERIAL ARAMAIC LETTER TAW +10B40 ; [.5021.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER ALEPH +10B41 ; [.5022.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER BETH +10B42 ; [.5023.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER GIMEL +10B43 ; [.5024.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER DALETH +10B44 ; [.5025.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER HE +10B45 ; [.5026.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER WAW +10B46 ; [.5027.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER ZAYIN +10B47 ; [.5028.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER HETH +10B48 ; [.5029.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER TETH +10B49 ; [.502A.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER YODH +10B4A ; [.502B.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER KAPH +10B4B ; [.502C.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER LAMEDH +10B4C ; [.502D.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER MEM +10B4D ; [.502E.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER NUN +10B4E ; [.502F.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER SAMEKH +10B4F ; [.5030.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER AYIN +10B50 ; [.5031.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER PE +10B51 ; [.5032.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER SADHE +10B52 ; [.5033.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER QOPH +10B53 ; [.5034.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER RESH +10B54 ; [.5035.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER SHIN +10B55 ; [.5036.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER TAW +10B60 ; [.5037.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER ALEPH +10B61 ; [.5038.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER BETH +10B62 ; [.5039.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER GIMEL +10B63 ; [.503A.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER DALETH +10B64 ; [.503B.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER HE +10B65 ; [.503C.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH +10B66 ; [.503D.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER ZAYIN +10B67 ; [.503E.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER HETH +10B68 ; [.503F.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER TETH +10B69 ; [.5040.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER YODH +10B6A ; [.5041.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER KAPH +10B6B ; [.5042.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER LAMEDH +10B6C ; [.5043.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH +10B6D ; [.5044.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER NUN +10B6E ; [.5045.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER SAMEKH +10B6F ; [.5046.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER PE +10B70 ; [.5047.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER SADHE +10B71 ; [.5048.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER SHIN +10B72 ; [.5049.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER TAW +10B80 ; [.504A.0020.0002] # PSALTER PAHLAVI LETTER ALEPH +10B81 ; [.504B.0020.0002] # PSALTER PAHLAVI LETTER BETH +10B82 ; [.504C.0020.0002] # PSALTER PAHLAVI LETTER GIMEL +10B83 ; [.504D.0020.0002] # PSALTER PAHLAVI LETTER DALETH +10B84 ; [.504E.0020.0002] # PSALTER PAHLAVI LETTER HE +10B85 ; [.504F.0020.0002] # PSALTER PAHLAVI LETTER WAW-AYIN-RESH +10B86 ; [.5050.0020.0002] # PSALTER PAHLAVI LETTER ZAYIN +10B87 ; [.5051.0020.0002] # PSALTER PAHLAVI LETTER HETH +10B88 ; [.5052.0020.0002] # PSALTER PAHLAVI LETTER YODH +10B89 ; [.5053.0020.0002] # PSALTER PAHLAVI LETTER KAPH +10B8A ; [.5054.0020.0002] # PSALTER PAHLAVI LETTER LAMEDH +10B8B ; [.5055.0020.0002] # PSALTER PAHLAVI LETTER MEM-QOPH +10B8C ; [.5056.0020.0002] # PSALTER PAHLAVI LETTER NUN +10B8D ; [.5057.0020.0002] # PSALTER PAHLAVI LETTER SAMEKH +10B8E ; [.5058.0020.0002] # PSALTER PAHLAVI LETTER PE +10B8F ; [.5059.0020.0002] # PSALTER PAHLAVI LETTER SADHE +10B90 ; [.505A.0020.0002] # PSALTER PAHLAVI LETTER SHIN +10B91 ; [.505B.0020.0002] # PSALTER PAHLAVI LETTER TAW +10FE0 ; [.505C.0020.0002] # ELYMAIC LETTER ALEPH +10FE1 ; [.505D.0020.0002] # ELYMAIC LETTER BETH +10FE2 ; [.505E.0020.0002] # ELYMAIC LETTER GIMEL +10FE3 ; [.505F.0020.0002] # ELYMAIC LETTER DALETH +10FE4 ; [.5060.0020.0002] # ELYMAIC LETTER HE +10FE5 ; [.5061.0020.0002] # ELYMAIC LETTER WAW +10FE6 ; [.5062.0020.0002] # ELYMAIC LETTER ZAYIN +10FF6 ; [.5062.0020.0004][.5065.0020.0004] # ELYMAIC LIGATURE ZAYIN-YODH +10FE7 ; [.5063.0020.0002] # ELYMAIC LETTER HETH +10FE8 ; [.5064.0020.0002] # ELYMAIC LETTER TETH +10FE9 ; [.5065.0020.0002] # ELYMAIC LETTER YODH +10FEA ; [.5066.0020.0002] # ELYMAIC LETTER KAPH +10FEB ; [.5067.0020.0002] # ELYMAIC LETTER LAMEDH +10FEC ; [.5068.0020.0002] # ELYMAIC LETTER MEM +10FED ; [.5069.0020.0002] # ELYMAIC LETTER NUN +10FEE ; [.506A.0020.0002] # ELYMAIC LETTER SAMEKH +10FEF ; [.506B.0020.0002] # ELYMAIC LETTER AYIN +10FF0 ; [.506C.0020.0002] # ELYMAIC LETTER PE +10FF1 ; [.506D.0020.0002] # ELYMAIC LETTER SADHE +10FF2 ; [.506E.0020.0002] # ELYMAIC LETTER QOPH +10FF3 ; [.506F.0020.0002] # ELYMAIC LETTER RESH +10FF4 ; [.5070.0020.0002] # ELYMAIC LETTER SHIN +10FF5 ; [.5071.0020.0002] # ELYMAIC LETTER TAW +10AC0 ; [.5072.0020.0002] # MANICHAEAN LETTER ALEPH +10AC1 ; [.5073.0020.0002] # MANICHAEAN LETTER BETH +10AC2 ; [.5074.0020.0002] # MANICHAEAN LETTER BHETH +10AC3 ; [.5075.0020.0002] # MANICHAEAN LETTER GIMEL +10AC4 ; [.5076.0020.0002] # MANICHAEAN LETTER GHIMEL +10AC5 ; [.5077.0020.0002] # MANICHAEAN LETTER DALETH +10AC6 ; [.5078.0020.0002] # MANICHAEAN LETTER HE +10AC7 ; [.5079.0020.0002] # MANICHAEAN LETTER WAW +10AC8 ; [.5079.0020.0004][.0000.0119.0004] # MANICHAEAN SIGN UD +10AC9 ; [.507A.0020.0002] # MANICHAEAN LETTER ZAYIN +10ACA ; [.507B.0020.0002] # MANICHAEAN LETTER ZHAYIN +10ACB ; [.507C.0020.0002] # MANICHAEAN LETTER JAYIN +10ACC ; [.507D.0020.0002] # MANICHAEAN LETTER JHAYIN +10ACD ; [.507E.0020.0002] # MANICHAEAN LETTER HETH +10ACE ; [.507F.0020.0002] # MANICHAEAN LETTER TETH +10ACF ; [.5080.0020.0002] # MANICHAEAN LETTER YODH +10AD0 ; [.5081.0020.0002] # MANICHAEAN LETTER KAPH +10AD1 ; [.5082.0020.0002] # MANICHAEAN LETTER XAPH +10AD2 ; [.5083.0020.0002] # MANICHAEAN LETTER KHAPH +10AD3 ; [.5084.0020.0002] # MANICHAEAN LETTER LAMEDH +10AD4 ; [.5085.0020.0002] # MANICHAEAN LETTER DHAMEDH +10AD5 ; [.5086.0020.0002] # MANICHAEAN LETTER THAMEDH +10AD6 ; [.5087.0020.0002] # MANICHAEAN LETTER MEM +10AD7 ; [.5088.0020.0002] # MANICHAEAN LETTER NUN +10AD8 ; [.5089.0020.0002] # MANICHAEAN LETTER SAMEKH +10AD9 ; [.508A.0020.0002] # MANICHAEAN LETTER AYIN +10ADA ; [.508B.0020.0002] # MANICHAEAN LETTER AAYIN +10ADB ; [.508C.0020.0002] # MANICHAEAN LETTER PE +10ADC ; [.508D.0020.0002] # MANICHAEAN LETTER FE +10ADD ; [.508E.0020.0002] # MANICHAEAN LETTER SADHE +10ADE ; [.508F.0020.0002] # MANICHAEAN LETTER QOPH +10ADF ; [.5090.0020.0002] # MANICHAEAN LETTER XOPH +10AE0 ; [.5091.0020.0002] # MANICHAEAN LETTER QHOPH +10AE1 ; [.5092.0020.0002] # MANICHAEAN LETTER RESH +10AE2 ; [.5093.0020.0002] # MANICHAEAN LETTER SHIN +10AE3 ; [.5094.0020.0002] # MANICHAEAN LETTER SSHIN +10AE4 ; [.5095.0020.0002] # MANICHAEAN LETTER TAW +10F00 ; [.5096.0020.0002] # OLD SOGDIAN LETTER ALEPH +10F01 ; [.5096.0020.0019] # OLD SOGDIAN LETTER FINAL ALEPH +10F02 ; [.5097.0020.0002] # OLD SOGDIAN LETTER BETH +10F03 ; [.5097.0020.0019] # OLD SOGDIAN LETTER FINAL BETH +10F04 ; [.5098.0020.0002] # OLD SOGDIAN LETTER GIMEL +10F05 ; [.5099.0020.0002] # OLD SOGDIAN LETTER HE +10F06 ; [.5099.0020.0019] # OLD SOGDIAN LETTER FINAL HE +10F07 ; [.509A.0020.0002] # OLD SOGDIAN LETTER WAW +10F08 ; [.509B.0020.0002] # OLD SOGDIAN LETTER ZAYIN +10F09 ; [.509C.0020.0002] # OLD SOGDIAN LETTER HETH +10F0A ; [.509D.0020.0002] # OLD SOGDIAN LETTER YODH +10F0B ; [.509E.0020.0002] # OLD SOGDIAN LETTER KAPH +10F0C ; [.509F.0020.0002] # OLD SOGDIAN LETTER LAMEDH +10F0D ; [.50A0.0020.0002] # OLD SOGDIAN LETTER MEM +10F0E ; [.50A1.0020.0002] # OLD SOGDIAN LETTER NUN +10F0F ; [.50A1.0020.0019] # OLD SOGDIAN LETTER FINAL NUN +10F10 ; [.50A1.0020.0004][.0000.0119.0004] # OLD SOGDIAN LETTER FINAL NUN WITH VERTICAL TAIL +10F11 ; [.50A2.0020.0002] # OLD SOGDIAN LETTER SAMEKH +10F12 ; [.50A3.0020.0002] # OLD SOGDIAN LETTER AYIN +10F13 ; [.50A3.0020.0004][.0000.0119.0004] # OLD SOGDIAN LETTER ALTERNATE AYIN +10F27 ; [.50A3.0020.0004][.50A6.0020.0004] # OLD SOGDIAN LIGATURE AYIN-DALETH +10F14 ; [.50A4.0020.0002] # OLD SOGDIAN LETTER PE +10F15 ; [.50A5.0020.0002] # OLD SOGDIAN LETTER SADHE +10F16 ; [.50A5.0020.0019] # OLD SOGDIAN LETTER FINAL SADHE +10F17 ; [.50A5.0020.0004][.0000.0119.0004] # OLD SOGDIAN LETTER FINAL SADHE WITH VERTICAL TAIL +10F18 ; [.50A6.0020.0002] # OLD SOGDIAN LETTER RESH-AYIN-DALETH +10F19 ; [.50A7.0020.0002] # OLD SOGDIAN LETTER SHIN +10F1A ; [.50A8.0020.0002] # OLD SOGDIAN LETTER TAW +10F1B ; [.50A8.0020.0019] # OLD SOGDIAN LETTER FINAL TAW +10F1C ; [.50A8.0020.0004][.0000.0119.0004] # OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL +10F30 ; [.50A9.0020.0002] # SOGDIAN LETTER ALEPH +10F31 ; [.50AA.0020.0002] # SOGDIAN LETTER BETH +10F32 ; [.50AB.0020.0002] # SOGDIAN LETTER GIMEL +10F33 ; [.50AC.0020.0002] # SOGDIAN LETTER HE +10F34 ; [.50AD.0020.0002] # SOGDIAN LETTER WAW +10F35 ; [.50AE.0020.0002] # SOGDIAN LETTER ZAYIN +10F36 ; [.50AF.0020.0002] # SOGDIAN LETTER HETH +10F37 ; [.50B0.0020.0002] # SOGDIAN LETTER YODH +10F38 ; [.50B1.0020.0002] # SOGDIAN LETTER KAPH +10F39 ; [.50B2.0020.0002] # SOGDIAN LETTER LAMEDH +10F3A ; [.50B3.0020.0002] # SOGDIAN LETTER MEM +10F3B ; [.50B4.0020.0002] # SOGDIAN LETTER NUN +10F3C ; [.50B5.0020.0002] # SOGDIAN LETTER SAMEKH +10F3D ; [.50B6.0020.0002] # SOGDIAN LETTER AYIN +10F3E ; [.50B7.0020.0002] # SOGDIAN LETTER PE +10F3F ; [.50B8.0020.0002] # SOGDIAN LETTER SADHE +10F40 ; [.50B9.0020.0002] # SOGDIAN LETTER RESH-AYIN +10F41 ; [.50BA.0020.0002] # SOGDIAN LETTER SHIN +10F45 ; [.50BA.0020.0004][.0000.0119.0004] # SOGDIAN INDEPENDENT SHIN +10F42 ; [.50BB.0020.0002] # SOGDIAN LETTER TAW +10F43 ; [.50BC.0020.0002] # SOGDIAN LETTER FETH +10F44 ; [.50BD.0020.0002] # SOGDIAN LETTER LESH +10E80 ; [.50BE.0020.0002] # YEZIDI LETTER ELIF +10E81 ; [.50BF.0020.0002] # YEZIDI LETTER BE +10E82 ; [.50C0.0020.0002] # YEZIDI LETTER PE +10E83 ; [.50C1.0020.0002] # YEZIDI LETTER PHE +10E84 ; [.50C2.0020.0002] # YEZIDI LETTER THE +10E85 ; [.50C3.0020.0002] # YEZIDI LETTER SE +10E86 ; [.50C4.0020.0002] # YEZIDI LETTER CIM +10E87 ; [.50C5.0020.0002] # YEZIDI LETTER CHIM +10E88 ; [.50C6.0020.0002] # YEZIDI LETTER CHHIM +10E89 ; [.50C7.0020.0002] # YEZIDI LETTER HHA +10E8A ; [.50C8.0020.0002] # YEZIDI LETTER XA +10E8B ; [.50C9.0020.0002] # YEZIDI LETTER DAL +10E8C ; [.50CA.0020.0002] # YEZIDI LETTER ZAL +10E8D ; [.50CB.0020.0002] # YEZIDI LETTER RA +10E8E ; [.50CC.0020.0002] # YEZIDI LETTER RHA +10E8F ; [.50CD.0020.0002] # YEZIDI LETTER ZA +10E90 ; [.50CE.0020.0002] # YEZIDI LETTER JA +10E91 ; [.50CF.0020.0002] # YEZIDI LETTER SIN +10E92 ; [.50D0.0020.0002] # YEZIDI LETTER SHIN +10E93 ; [.50D1.0020.0002] # YEZIDI LETTER SAD +10E94 ; [.50D2.0020.0002] # YEZIDI LETTER DAD +10E95 ; [.50D3.0020.0002] # YEZIDI LETTER TA +10E96 ; [.50D4.0020.0002] # YEZIDI LETTER ZE +10E97 ; [.50D5.0020.0002] # YEZIDI LETTER EYN +10E98 ; [.50D6.0020.0002] # YEZIDI LETTER XHEYN +10E99 ; [.50D7.0020.0002] # YEZIDI LETTER FA +10E9A ; [.50D8.0020.0002] # YEZIDI LETTER VA +10E9B ; [.50D9.0020.0002] # YEZIDI LETTER VA ALTERNATE FORM +10E9C ; [.50DA.0020.0002] # YEZIDI LETTER QAF +10E9D ; [.50DB.0020.0002] # YEZIDI LETTER KAF +10E9E ; [.50DC.0020.0002] # YEZIDI LETTER KHAF +10E9F ; [.50DD.0020.0002] # YEZIDI LETTER GAF +10EA0 ; [.50DE.0020.0002] # YEZIDI LETTER LAM +10EB0 ; [.50DF.0020.0002] # YEZIDI LETTER LAM WITH DOT ABOVE +10EA1 ; [.50E0.0020.0002] # YEZIDI LETTER MIM +10EA2 ; [.50E1.0020.0002] # YEZIDI LETTER NUN +10EA3 ; [.50E2.0020.0002] # YEZIDI LETTER UM +10EA4 ; [.50E3.0020.0002] # YEZIDI LETTER WAW +10EA5 ; [.50E4.0020.0002] # YEZIDI LETTER OW +10EA6 ; [.50E5.0020.0002] # YEZIDI LETTER EW +10EA7 ; [.50E6.0020.0002] # YEZIDI LETTER HAY +10EA8 ; [.50E7.0020.0002] # YEZIDI LETTER YOT +10EB1 ; [.50E8.0020.0002] # YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE +10EA9 ; [.50E9.0020.0002] # YEZIDI LETTER ET +10FB0 ; [.50EA.0020.0002] # CHORASMIAN LETTER ALEPH +10FB1 ; [.50EB.0020.0002] # CHORASMIAN LETTER SMALL ALEPH +10FB2 ; [.50EC.0020.0002] # CHORASMIAN LETTER BETH +10FB3 ; [.50ED.0020.0002] # CHORASMIAN LETTER GIMEL +10FB4 ; [.50EE.0020.0002] # CHORASMIAN LETTER DALETH +10FB5 ; [.50EF.0020.0002] # CHORASMIAN LETTER HE +10FB6 ; [.50F0.0020.0002] # CHORASMIAN LETTER WAW +10FB7 ; [.50F1.0020.0002] # CHORASMIAN LETTER CURLED WAW +10FB8 ; [.50F2.0020.0002] # CHORASMIAN LETTER ZAYIN +10FB9 ; [.50F3.0020.0002] # CHORASMIAN LETTER HETH +10FBA ; [.50F4.0020.0002] # CHORASMIAN LETTER YODH +10FBB ; [.50F5.0020.0002] # CHORASMIAN LETTER KAPH +10FBC ; [.50F6.0020.0002] # CHORASMIAN LETTER LAMEDH +10FBD ; [.50F7.0020.0002] # CHORASMIAN LETTER MEM +10FBE ; [.50F8.0020.0002] # CHORASMIAN LETTER NUN +10FBF ; [.50F9.0020.0002] # CHORASMIAN LETTER SAMEKH +10FC0 ; [.50FA.0020.0002] # CHORASMIAN LETTER AYIN +10FC1 ; [.50FB.0020.0002] # CHORASMIAN LETTER PE +10FC2 ; [.50FC.0020.0002] # CHORASMIAN LETTER RESH +10FC3 ; [.50FD.0020.0002] # CHORASMIAN LETTER SHIN +10FC4 ; [.50FE.0020.0002] # CHORASMIAN LETTER TAW +10380 ; [.50FF.0020.0002] # UGARITIC LETTER ALPA +10381 ; [.5100.0020.0002] # UGARITIC LETTER BETA +10382 ; [.5101.0020.0002] # UGARITIC LETTER GAMLA +10383 ; [.5102.0020.0002] # UGARITIC LETTER KHA +10384 ; [.5103.0020.0002] # UGARITIC LETTER DELTA +10385 ; [.5104.0020.0002] # UGARITIC LETTER HO +10386 ; [.5105.0020.0002] # UGARITIC LETTER WO +10387 ; [.5106.0020.0002] # UGARITIC LETTER ZETA +10388 ; [.5107.0020.0002] # UGARITIC LETTER HOTA +10389 ; [.5108.0020.0002] # UGARITIC LETTER TET +1038A ; [.5109.0020.0002] # UGARITIC LETTER YOD +1038B ; [.510A.0020.0002] # UGARITIC LETTER KAF +1038C ; [.510B.0020.0002] # UGARITIC LETTER SHIN +1038D ; [.510C.0020.0002] # UGARITIC LETTER LAMDA +1038E ; [.510D.0020.0002] # UGARITIC LETTER MEM +1038F ; [.510E.0020.0002] # UGARITIC LETTER DHAL +10390 ; [.510F.0020.0002] # UGARITIC LETTER NUN +10391 ; [.5110.0020.0002] # UGARITIC LETTER ZU +10392 ; [.5111.0020.0002] # UGARITIC LETTER SAMKA +10393 ; [.5112.0020.0002] # UGARITIC LETTER AIN +10394 ; [.5113.0020.0002] # UGARITIC LETTER PU +10395 ; [.5114.0020.0002] # UGARITIC LETTER SADE +10396 ; [.5115.0020.0002] # UGARITIC LETTER QOPA +10397 ; [.5116.0020.0002] # UGARITIC LETTER RASHA +10398 ; [.5117.0020.0002] # UGARITIC LETTER THANNA +10399 ; [.5118.0020.0002] # UGARITIC LETTER GHAIN +1039A ; [.5119.0020.0002] # UGARITIC LETTER TO +1039B ; [.511A.0020.0002] # UGARITIC LETTER I +1039C ; [.511B.0020.0002] # UGARITIC LETTER U +1039D ; [.511C.0020.0002] # UGARITIC LETTER SSU +103A0 ; [.511D.0020.0002] # OLD PERSIAN SIGN A +103A1 ; [.511E.0020.0002] # OLD PERSIAN SIGN I +103A2 ; [.511F.0020.0002] # OLD PERSIAN SIGN U +103A3 ; [.5120.0020.0002] # OLD PERSIAN SIGN KA +103A4 ; [.5121.0020.0002] # OLD PERSIAN SIGN KU +103A5 ; [.5122.0020.0002] # OLD PERSIAN SIGN GA +103A6 ; [.5123.0020.0002] # OLD PERSIAN SIGN GU +103A7 ; [.5124.0020.0002] # OLD PERSIAN SIGN XA +103A8 ; [.5125.0020.0002] # OLD PERSIAN SIGN CA +103A9 ; [.5126.0020.0002] # OLD PERSIAN SIGN JA +103AA ; [.5127.0020.0002] # OLD PERSIAN SIGN JI +103AB ; [.5128.0020.0002] # OLD PERSIAN SIGN TA +103AC ; [.5129.0020.0002] # OLD PERSIAN SIGN TU +103AD ; [.512A.0020.0002] # OLD PERSIAN SIGN DA +103AE ; [.512B.0020.0002] # OLD PERSIAN SIGN DI +103AF ; [.512C.0020.0002] # OLD PERSIAN SIGN DU +103B0 ; [.512D.0020.0002] # OLD PERSIAN SIGN THA +103B1 ; [.512E.0020.0002] # OLD PERSIAN SIGN PA +103B2 ; [.512F.0020.0002] # OLD PERSIAN SIGN BA +103B3 ; [.5130.0020.0002] # OLD PERSIAN SIGN FA +103B4 ; [.5131.0020.0002] # OLD PERSIAN SIGN NA +103B5 ; [.5132.0020.0002] # OLD PERSIAN SIGN NU +103B6 ; [.5133.0020.0002] # OLD PERSIAN SIGN MA +103B7 ; [.5134.0020.0002] # OLD PERSIAN SIGN MI +103B8 ; [.5135.0020.0002] # OLD PERSIAN SIGN MU +103B9 ; [.5136.0020.0002] # OLD PERSIAN SIGN YA +103BA ; [.5137.0020.0002] # OLD PERSIAN SIGN VA +103BB ; [.5138.0020.0002] # OLD PERSIAN SIGN VI +103BC ; [.5139.0020.0002] # OLD PERSIAN SIGN RA +103BD ; [.513A.0020.0002] # OLD PERSIAN SIGN RU +103BE ; [.513B.0020.0002] # OLD PERSIAN SIGN LA +103BF ; [.513C.0020.0002] # OLD PERSIAN SIGN SA +103C0 ; [.513D.0020.0002] # OLD PERSIAN SIGN ZA +103C1 ; [.513E.0020.0002] # OLD PERSIAN SIGN SHA +103C2 ; [.513F.0020.0002] # OLD PERSIAN SIGN SSA +103C3 ; [.5140.0020.0002] # OLD PERSIAN SIGN HA +103C8 ; [.5141.0020.0002] # OLD PERSIAN SIGN AURAMAZDAA +103C9 ; [.5142.0020.0002] # OLD PERSIAN SIGN AURAMAZDAA-2 +103CA ; [.5143.0020.0002] # OLD PERSIAN SIGN AURAMAZDAAHA +103CB ; [.5144.0020.0002] # OLD PERSIAN SIGN XSHAAYATHIYA +103CC ; [.5145.0020.0002] # OLD PERSIAN SIGN DAHYAAUSH +103CD ; [.5146.0020.0002] # OLD PERSIAN SIGN DAHYAAUSH-2 +103CE ; [.5147.0020.0002] # OLD PERSIAN SIGN BAGA +103CF ; [.5148.0020.0002] # OLD PERSIAN SIGN BUUMISH +12000 ; [.5149.0020.0002] # CUNEIFORM SIGN A +12001 ; [.514A.0020.0002] # CUNEIFORM SIGN A TIMES A +12002 ; [.514B.0020.0002] # CUNEIFORM SIGN A TIMES BAD +12003 ; [.514C.0020.0002] # CUNEIFORM SIGN A TIMES GAN2 TENU +12004 ; [.514D.0020.0002] # CUNEIFORM SIGN A TIMES HA +12005 ; [.514E.0020.0002] # CUNEIFORM SIGN A TIMES IGI +12006 ; [.514F.0020.0002] # CUNEIFORM SIGN A TIMES LAGAR GUNU +12007 ; [.5150.0020.0002] # CUNEIFORM SIGN A TIMES MUSH +12008 ; [.5151.0020.0002] # CUNEIFORM SIGN A TIMES SAG +12009 ; [.5152.0020.0002] # CUNEIFORM SIGN A2 +1200A ; [.5153.0020.0002] # CUNEIFORM SIGN AB +1200B ; [.5154.0020.0002] # CUNEIFORM SIGN AB TIMES ASH2 +1200C ; [.5155.0020.0002] # CUNEIFORM SIGN AB TIMES DUN3 GUNU +1200D ; [.5156.0020.0002] # CUNEIFORM SIGN AB TIMES GAL +1200E ; [.5157.0020.0002] # CUNEIFORM SIGN AB TIMES GAN2 TENU +1200F ; [.5158.0020.0002] # CUNEIFORM SIGN AB TIMES HA +12010 ; [.5159.0020.0002] # CUNEIFORM SIGN AB TIMES IGI GUNU +12011 ; [.515A.0020.0002] # CUNEIFORM SIGN AB TIMES IMIN +12012 ; [.515B.0020.0002] # CUNEIFORM SIGN AB TIMES LAGAB +12013 ; [.515C.0020.0002] # CUNEIFORM SIGN AB TIMES SHESH +12014 ; [.515D.0020.0002] # CUNEIFORM SIGN AB TIMES U PLUS U PLUS U +12015 ; [.515E.0020.0002] # CUNEIFORM SIGN AB GUNU +12016 ; [.515F.0020.0002] # CUNEIFORM SIGN AB2 +12017 ; [.5160.0020.0002] # CUNEIFORM SIGN AB2 TIMES BALAG +12018 ; [.5161.0020.0002] # CUNEIFORM SIGN AB2 TIMES GAN2 TENU +12019 ; [.5162.0020.0002] # CUNEIFORM SIGN AB2 TIMES ME PLUS EN +1201A ; [.5163.0020.0002] # CUNEIFORM SIGN AB2 TIMES SHA3 +1201B ; [.5164.0020.0002] # CUNEIFORM SIGN AB2 TIMES TAK4 +1201C ; [.5165.0020.0002] # CUNEIFORM SIGN AD +1201D ; [.5166.0020.0002] # CUNEIFORM SIGN AK +1201E ; [.5167.0020.0002] # CUNEIFORM SIGN AK TIMES ERIN2 +1201F ; [.5168.0020.0002] # CUNEIFORM SIGN AK TIMES SHITA PLUS GISH +12020 ; [.5169.0020.0002] # CUNEIFORM SIGN AL +12021 ; [.516A.0020.0002] # CUNEIFORM SIGN AL TIMES AL +12022 ; [.516B.0020.0002] # CUNEIFORM SIGN AL TIMES DIM2 +12023 ; [.516C.0020.0002] # CUNEIFORM SIGN AL TIMES GISH +12024 ; [.516D.0020.0002] # CUNEIFORM SIGN AL TIMES HA +12025 ; [.516E.0020.0002] # CUNEIFORM SIGN AL TIMES KAD3 +12026 ; [.516F.0020.0002] # CUNEIFORM SIGN AL TIMES KI +12027 ; [.5170.0020.0002] # CUNEIFORM SIGN AL TIMES SHE +12028 ; [.5171.0020.0002] # CUNEIFORM SIGN AL TIMES USH +12029 ; [.5172.0020.0002] # CUNEIFORM SIGN ALAN +1202A ; [.5173.0020.0002] # CUNEIFORM SIGN ALEPH +1202B ; [.5174.0020.0002] # CUNEIFORM SIGN AMAR +1202C ; [.5175.0020.0002] # CUNEIFORM SIGN AMAR TIMES SHE +1202D ; [.5176.0020.0002] # CUNEIFORM SIGN AN +1202E ; [.5177.0020.0002] # CUNEIFORM SIGN AN OVER AN +1202F ; [.5178.0020.0002] # CUNEIFORM SIGN AN THREE TIMES +12030 ; [.5179.0020.0002] # CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA +12031 ; [.517A.0020.0002] # CUNEIFORM SIGN AN PLUS NAGA SQUARED +12032 ; [.517B.0020.0002] # CUNEIFORM SIGN ANSHE +12033 ; [.517C.0020.0002] # CUNEIFORM SIGN APIN +12034 ; [.517D.0020.0002] # CUNEIFORM SIGN ARAD +12035 ; [.517E.0020.0002] # CUNEIFORM SIGN ARAD TIMES KUR +12036 ; [.517F.0020.0002] # CUNEIFORM SIGN ARKAB +12037 ; [.5180.0020.0002] # CUNEIFORM SIGN ASAL2 +12038 ; [.5181.0020.0002] # CUNEIFORM SIGN ASH +12039 ; [.5182.0020.0002] # CUNEIFORM SIGN ASH ZIDA TENU +1203A ; [.5183.0020.0002] # CUNEIFORM SIGN ASH KABA TENU +1203B ; [.5184.0020.0002] # CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP +1203C ; [.5185.0020.0002] # CUNEIFORM SIGN ASH OVER ASH OVER ASH +1203D ; [.5186.0020.0002] # CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH +1203E ; [.5187.0020.0002] # CUNEIFORM SIGN ASH2 +1203F ; [.5188.0020.0002] # CUNEIFORM SIGN ASHGAB +12040 ; [.5189.0020.0002] # CUNEIFORM SIGN BA +12041 ; [.518A.0020.0002] # CUNEIFORM SIGN BAD +12042 ; [.518B.0020.0002] # CUNEIFORM SIGN BAG3 +12043 ; [.518C.0020.0002] # CUNEIFORM SIGN BAHAR2 +12044 ; [.518D.0020.0002] # CUNEIFORM SIGN BAL +12045 ; [.518E.0020.0002] # CUNEIFORM SIGN BAL OVER BAL +12046 ; [.518F.0020.0002] # CUNEIFORM SIGN BALAG +12047 ; [.5190.0020.0002] # CUNEIFORM SIGN BAR +12048 ; [.5191.0020.0002] # CUNEIFORM SIGN BARA2 +12049 ; [.5192.0020.0002] # CUNEIFORM SIGN BI +1204A ; [.5193.0020.0002] # CUNEIFORM SIGN BI TIMES A +1204B ; [.5194.0020.0002] # CUNEIFORM SIGN BI TIMES GAR +1204C ; [.5195.0020.0002] # CUNEIFORM SIGN BI TIMES IGI GUNU +1204D ; [.5196.0020.0002] # CUNEIFORM SIGN BU +1204E ; [.5197.0020.0002] # CUNEIFORM SIGN BU OVER BU AB +1204F ; [.5198.0020.0002] # CUNEIFORM SIGN BU OVER BU UN +12050 ; [.5199.0020.0002] # CUNEIFORM SIGN BU CROSSING BU +12051 ; [.519A.0020.0002] # CUNEIFORM SIGN BULUG +12052 ; [.519B.0020.0002] # CUNEIFORM SIGN BULUG OVER BULUG +12053 ; [.519C.0020.0002] # CUNEIFORM SIGN BUR +12054 ; [.519D.0020.0002] # CUNEIFORM SIGN BUR2 +12055 ; [.519E.0020.0002] # CUNEIFORM SIGN DA +12056 ; [.519F.0020.0002] # CUNEIFORM SIGN DAG +12057 ; [.51A0.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH +12058 ; [.51A1.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES AMAR +12059 ; [.51A2.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES BALAG +1205A ; [.51A3.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES BI +1205B ; [.51A4.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES GA +1205C ; [.51A5.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH +1205D ; [.51A6.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES GI +1205E ; [.51A7.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES GIR2 +1205F ; [.51A8.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES GUD +12060 ; [.51A9.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES HA +12061 ; [.51AA.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES IR +12062 ; [.51AB.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU +12063 ; [.51AC.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES KAK +12064 ; [.51AD.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES LA +12065 ; [.51AE.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES LU +12066 ; [.51AF.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2 +12067 ; [.51B0.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES LUM +12068 ; [.51B1.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES NE +12069 ; [.51B2.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP +1206A ; [.51B3.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES SI +1206B ; [.51B4.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES TAK4 +1206C ; [.51B5.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2 +1206D ; [.51B6.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES USH +1206E ; [.51B7.0020.0002] # CUNEIFORM SIGN DAM +1206F ; [.51B8.0020.0002] # CUNEIFORM SIGN DAR +12070 ; [.51B9.0020.0002] # CUNEIFORM SIGN DARA3 +12071 ; [.51BA.0020.0002] # CUNEIFORM SIGN DARA4 +12072 ; [.51BB.0020.0002] # CUNEIFORM SIGN DI +12073 ; [.51BC.0020.0002] # CUNEIFORM SIGN DIB +12074 ; [.51BD.0020.0002] # CUNEIFORM SIGN DIM +12075 ; [.51BE.0020.0002] # CUNEIFORM SIGN DIM TIMES SHE +12076 ; [.51BF.0020.0002] # CUNEIFORM SIGN DIM2 +12077 ; [.51C0.0020.0002] # CUNEIFORM SIGN DIN +12078 ; [.51C1.0020.0002] # CUNEIFORM SIGN DIN KASKAL U GUNU DISH +12079 ; [.51C2.0020.0002] # CUNEIFORM SIGN DISH +1207A ; [.51C3.0020.0002] # CUNEIFORM SIGN DU +1207B ; [.51C4.0020.0002] # CUNEIFORM SIGN DU OVER DU +1207C ; [.51C5.0020.0002] # CUNEIFORM SIGN DU GUNU +1207D ; [.51C6.0020.0002] # CUNEIFORM SIGN DU SHESHIG +1207E ; [.51C7.0020.0002] # CUNEIFORM SIGN DUB +1207F ; [.51C8.0020.0002] # CUNEIFORM SIGN DUB TIMES ESH2 +12080 ; [.51C9.0020.0002] # CUNEIFORM SIGN DUB2 +12081 ; [.51CA.0020.0002] # CUNEIFORM SIGN DUG +12082 ; [.51CB.0020.0002] # CUNEIFORM SIGN DUGUD +12083 ; [.51CC.0020.0002] # CUNEIFORM SIGN DUH +12084 ; [.51CD.0020.0002] # CUNEIFORM SIGN DUN +12085 ; [.51CE.0020.0002] # CUNEIFORM SIGN DUN3 +12086 ; [.51CF.0020.0002] # CUNEIFORM SIGN DUN3 GUNU +12087 ; [.51D0.0020.0002] # CUNEIFORM SIGN DUN3 GUNU GUNU +12088 ; [.51D1.0020.0002] # CUNEIFORM SIGN DUN4 +12089 ; [.51D2.0020.0002] # CUNEIFORM SIGN DUR2 +1208A ; [.51D3.0020.0002] # CUNEIFORM SIGN E +1208B ; [.51D4.0020.0002] # CUNEIFORM SIGN E TIMES PAP +1208C ; [.51D5.0020.0002] # CUNEIFORM SIGN E OVER E NUN OVER NUN +1208D ; [.51D6.0020.0002] # CUNEIFORM SIGN E2 +1208E ; [.51D7.0020.0002] # CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA +1208F ; [.51D8.0020.0002] # CUNEIFORM SIGN E2 TIMES GAR +12090 ; [.51D9.0020.0002] # CUNEIFORM SIGN E2 TIMES MI +12091 ; [.51DA.0020.0002] # CUNEIFORM SIGN E2 TIMES SAL +12092 ; [.51DB.0020.0002] # CUNEIFORM SIGN E2 TIMES SHE +12093 ; [.51DC.0020.0002] # CUNEIFORM SIGN E2 TIMES U +12094 ; [.51DD.0020.0002] # CUNEIFORM SIGN EDIN +12095 ; [.51DE.0020.0002] # CUNEIFORM SIGN EGIR +12096 ; [.51DF.0020.0002] # CUNEIFORM SIGN EL +12097 ; [.51E0.0020.0002] # CUNEIFORM SIGN EN +12098 ; [.51E1.0020.0002] # CUNEIFORM SIGN EN TIMES GAN2 +12099 ; [.51E2.0020.0002] # CUNEIFORM SIGN EN TIMES GAN2 TENU +1209A ; [.51E3.0020.0002] # CUNEIFORM SIGN EN TIMES ME +1209B ; [.51E4.0020.0002] # CUNEIFORM SIGN EN CROSSING EN +1209C ; [.51E5.0020.0002] # CUNEIFORM SIGN EN OPPOSING EN +1209D ; [.51E6.0020.0002] # CUNEIFORM SIGN EN SQUARED +1209E ; [.51E7.0020.0002] # CUNEIFORM SIGN EREN +1209F ; [.51E8.0020.0002] # CUNEIFORM SIGN ERIN2 +120A0 ; [.51E9.0020.0002] # CUNEIFORM SIGN ESH2 +120A1 ; [.51EA.0020.0002] # CUNEIFORM SIGN EZEN +120A2 ; [.51EB.0020.0002] # CUNEIFORM SIGN EZEN TIMES A +120A3 ; [.51EC.0020.0002] # CUNEIFORM SIGN EZEN TIMES A PLUS LAL +120A4 ; [.51ED.0020.0002] # CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL +120A5 ; [.51EE.0020.0002] # CUNEIFORM SIGN EZEN TIMES AN +120A6 ; [.51EF.0020.0002] # CUNEIFORM SIGN EZEN TIMES BAD +120A7 ; [.51F0.0020.0002] # CUNEIFORM SIGN EZEN TIMES DUN3 GUNU +120A8 ; [.51F1.0020.0002] # CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU +120A9 ; [.51F2.0020.0002] # CUNEIFORM SIGN EZEN TIMES HA +120AA ; [.51F3.0020.0002] # CUNEIFORM SIGN EZEN TIMES HA GUNU +120AB ; [.51F4.0020.0002] # CUNEIFORM SIGN EZEN TIMES IGI GUNU +120AC ; [.51F5.0020.0002] # CUNEIFORM SIGN EZEN TIMES KASKAL +120AD ; [.51F6.0020.0002] # CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED +120AE ; [.51F7.0020.0002] # CUNEIFORM SIGN EZEN TIMES KU3 +120AF ; [.51F8.0020.0002] # CUNEIFORM SIGN EZEN TIMES LA +120B0 ; [.51F9.0020.0002] # CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL +120B1 ; [.51FA.0020.0002] # CUNEIFORM SIGN EZEN TIMES LI +120B2 ; [.51FB.0020.0002] # CUNEIFORM SIGN EZEN TIMES LU +120B3 ; [.51FC.0020.0002] # CUNEIFORM SIGN EZEN TIMES U2 +120B4 ; [.51FD.0020.0002] # CUNEIFORM SIGN EZEN TIMES UD +120B5 ; [.51FE.0020.0002] # CUNEIFORM SIGN GA +120B6 ; [.51FF.0020.0002] # CUNEIFORM SIGN GA GUNU +120B7 ; [.5200.0020.0002] # CUNEIFORM SIGN GA2 +120B8 ; [.5201.0020.0002] # CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA +120B9 ; [.5202.0020.0002] # CUNEIFORM SIGN GA2 TIMES A PLUS HA +120BA ; [.5203.0020.0002] # CUNEIFORM SIGN GA2 TIMES A PLUS IGI +120BB ; [.5204.0020.0002] # CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB +120BC ; [.5205.0020.0002] # CUNEIFORM SIGN GA2 TIMES AN +120BD ; [.5206.0020.0002] # CUNEIFORM SIGN GA2 TIMES ASH +120BE ; [.5207.0020.0002] # CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL +120BF ; [.5208.0020.0002] # CUNEIFORM SIGN GA2 TIMES BAD +120C0 ; [.5209.0020.0002] # CUNEIFORM SIGN GA2 TIMES BAR PLUS RA +120C1 ; [.520A.0020.0002] # CUNEIFORM SIGN GA2 TIMES BUR +120C2 ; [.520B.0020.0002] # CUNEIFORM SIGN GA2 TIMES BUR PLUS RA +120C3 ; [.520C.0020.0002] # CUNEIFORM SIGN GA2 TIMES DA +120C4 ; [.520D.0020.0002] # CUNEIFORM SIGN GA2 TIMES DI +120C5 ; [.520E.0020.0002] # CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE +120C6 ; [.520F.0020.0002] # CUNEIFORM SIGN GA2 TIMES DUB +120C7 ; [.5210.0020.0002] # CUNEIFORM SIGN GA2 TIMES EL +120C8 ; [.5211.0020.0002] # CUNEIFORM SIGN GA2 TIMES EL PLUS LA +120C9 ; [.5212.0020.0002] # CUNEIFORM SIGN GA2 TIMES EN +120CA ; [.5213.0020.0002] # CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU +120CB ; [.5214.0020.0002] # CUNEIFORM SIGN GA2 TIMES GAN2 TENU +120CC ; [.5215.0020.0002] # CUNEIFORM SIGN GA2 TIMES GAR +120CD ; [.5216.0020.0002] # CUNEIFORM SIGN GA2 TIMES GI +120CE ; [.5217.0020.0002] # CUNEIFORM SIGN GA2 TIMES GI4 +120CF ; [.5218.0020.0002] # CUNEIFORM SIGN GA2 TIMES GI4 PLUS A +120D0 ; [.5219.0020.0002] # CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU +120D1 ; [.521A.0020.0002] # CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2 +120D2 ; [.521B.0020.0002] # CUNEIFORM SIGN GA2 TIMES HAL +120D3 ; [.521C.0020.0002] # CUNEIFORM SIGN GA2 TIMES HAL PLUS LA +120D4 ; [.521D.0020.0002] # CUNEIFORM SIGN GA2 TIMES HI PLUS LI +120D5 ; [.521E.0020.0002] # CUNEIFORM SIGN GA2 TIMES HUB2 +120D6 ; [.521F.0020.0002] # CUNEIFORM SIGN GA2 TIMES IGI GUNU +120D7 ; [.5220.0020.0002] # CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH +120D8 ; [.5221.0020.0002] # CUNEIFORM SIGN GA2 TIMES KAK +120D9 ; [.5222.0020.0002] # CUNEIFORM SIGN GA2 TIMES KASKAL +120DA ; [.5223.0020.0002] # CUNEIFORM SIGN GA2 TIMES KID +120DB ; [.5224.0020.0002] # CUNEIFORM SIGN GA2 TIMES KID PLUS LAL +120DC ; [.5225.0020.0002] # CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN +120DD ; [.5226.0020.0002] # CUNEIFORM SIGN GA2 TIMES LA +120DE ; [.5227.0020.0002] # CUNEIFORM SIGN GA2 TIMES ME PLUS EN +120DF ; [.5228.0020.0002] # CUNEIFORM SIGN GA2 TIMES MI +120E0 ; [.5229.0020.0002] # CUNEIFORM SIGN GA2 TIMES NUN +120E1 ; [.522A.0020.0002] # CUNEIFORM SIGN GA2 TIMES NUN OVER NUN +120E2 ; [.522B.0020.0002] # CUNEIFORM SIGN GA2 TIMES PA +120E3 ; [.522C.0020.0002] # CUNEIFORM SIGN GA2 TIMES SAL +120E4 ; [.522D.0020.0002] # CUNEIFORM SIGN GA2 TIMES SAR +120E5 ; [.522E.0020.0002] # CUNEIFORM SIGN GA2 TIMES SHE +120E6 ; [.522F.0020.0002] # CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR +120E7 ; [.5230.0020.0002] # CUNEIFORM SIGN GA2 TIMES SHID +120E8 ; [.5231.0020.0002] # CUNEIFORM SIGN GA2 TIMES SUM +120E9 ; [.5232.0020.0002] # CUNEIFORM SIGN GA2 TIMES TAK4 +120EA ; [.5233.0020.0002] # CUNEIFORM SIGN GA2 TIMES U +120EB ; [.5234.0020.0002] # CUNEIFORM SIGN GA2 TIMES UD +120EC ; [.5235.0020.0002] # CUNEIFORM SIGN GA2 TIMES UD PLUS DU +120ED ; [.5236.0020.0002] # CUNEIFORM SIGN GA2 OVER GA2 +120EE ; [.5237.0020.0002] # CUNEIFORM SIGN GABA +120EF ; [.5238.0020.0002] # CUNEIFORM SIGN GABA CROSSING GABA +120F0 ; [.5239.0020.0002] # CUNEIFORM SIGN GAD +120F1 ; [.523A.0020.0002] # CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR +120F2 ; [.523B.0020.0002] # CUNEIFORM SIGN GAL +120F3 ; [.523C.0020.0002] # CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR +120F4 ; [.523D.0020.0002] # CUNEIFORM SIGN GALAM +120F5 ; [.523E.0020.0002] # CUNEIFORM SIGN GAM +120F6 ; [.523F.0020.0002] # CUNEIFORM SIGN GAN +120F7 ; [.5240.0020.0002] # CUNEIFORM SIGN GAN2 +120F8 ; [.5241.0020.0002] # CUNEIFORM SIGN GAN2 TENU +120F9 ; [.5242.0020.0002] # CUNEIFORM SIGN GAN2 OVER GAN2 +120FA ; [.5243.0020.0002] # CUNEIFORM SIGN GAN2 CROSSING GAN2 +120FB ; [.5244.0020.0002] # CUNEIFORM SIGN GAR +120FC ; [.5245.0020.0002] # CUNEIFORM SIGN GAR3 +120FD ; [.5246.0020.0002] # CUNEIFORM SIGN GASHAN +120FE ; [.5247.0020.0002] # CUNEIFORM SIGN GESHTIN +120FF ; [.5248.0020.0002] # CUNEIFORM SIGN GESHTIN TIMES KUR +12100 ; [.5249.0020.0002] # CUNEIFORM SIGN GI +12101 ; [.524A.0020.0002] # CUNEIFORM SIGN GI TIMES E +12102 ; [.524B.0020.0002] # CUNEIFORM SIGN GI TIMES U +12103 ; [.524C.0020.0002] # CUNEIFORM SIGN GI CROSSING GI +12104 ; [.524D.0020.0002] # CUNEIFORM SIGN GI4 +12105 ; [.524E.0020.0002] # CUNEIFORM SIGN GI4 OVER GI4 +12106 ; [.524F.0020.0002] # CUNEIFORM SIGN GI4 CROSSING GI4 +12107 ; [.5250.0020.0002] # CUNEIFORM SIGN GIDIM +12108 ; [.5251.0020.0002] # CUNEIFORM SIGN GIR2 +12109 ; [.5252.0020.0002] # CUNEIFORM SIGN GIR2 GUNU +1210A ; [.5253.0020.0002] # CUNEIFORM SIGN GIR3 +1210B ; [.5254.0020.0002] # CUNEIFORM SIGN GIR3 TIMES A PLUS IGI +1210C ; [.5255.0020.0002] # CUNEIFORM SIGN GIR3 TIMES GAN2 TENU +1210D ; [.5256.0020.0002] # CUNEIFORM SIGN GIR3 TIMES IGI +1210E ; [.5257.0020.0002] # CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI +1210F ; [.5258.0020.0002] # CUNEIFORM SIGN GIR3 TIMES PA +12110 ; [.5259.0020.0002] # CUNEIFORM SIGN GISAL +12111 ; [.525A.0020.0002] # CUNEIFORM SIGN GISH +12112 ; [.525B.0020.0002] # CUNEIFORM SIGN GISH CROSSING GISH +12113 ; [.525C.0020.0002] # CUNEIFORM SIGN GISH TIMES BAD +12114 ; [.525D.0020.0002] # CUNEIFORM SIGN GISH TIMES TAK4 +12115 ; [.525E.0020.0002] # CUNEIFORM SIGN GISH TENU +12116 ; [.525F.0020.0002] # CUNEIFORM SIGN GU +12117 ; [.5260.0020.0002] # CUNEIFORM SIGN GU CROSSING GU +12118 ; [.5261.0020.0002] # CUNEIFORM SIGN GU2 +12119 ; [.5262.0020.0002] # CUNEIFORM SIGN GU2 TIMES KAK +1211A ; [.5263.0020.0002] # CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU +1211B ; [.5264.0020.0002] # CUNEIFORM SIGN GU2 TIMES NUN +1211C ; [.5265.0020.0002] # CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2 +1211D ; [.5266.0020.0002] # CUNEIFORM SIGN GU2 GUNU +1211E ; [.5267.0020.0002] # CUNEIFORM SIGN GUD +1211F ; [.5268.0020.0002] # CUNEIFORM SIGN GUD TIMES A PLUS KUR +12120 ; [.5269.0020.0002] # CUNEIFORM SIGN GUD TIMES KUR +12121 ; [.526A.0020.0002] # CUNEIFORM SIGN GUD OVER GUD LUGAL +12122 ; [.526B.0020.0002] # CUNEIFORM SIGN GUL +12123 ; [.526C.0020.0002] # CUNEIFORM SIGN GUM +12124 ; [.526D.0020.0002] # CUNEIFORM SIGN GUM TIMES SHE +12125 ; [.526E.0020.0002] # CUNEIFORM SIGN GUR +12126 ; [.526F.0020.0002] # CUNEIFORM SIGN GUR7 +12127 ; [.5270.0020.0002] # CUNEIFORM SIGN GURUN +12128 ; [.5271.0020.0002] # CUNEIFORM SIGN GURUSH +12129 ; [.5272.0020.0002] # CUNEIFORM SIGN HA +1212A ; [.5273.0020.0002] # CUNEIFORM SIGN HA TENU +1212B ; [.5274.0020.0002] # CUNEIFORM SIGN HA GUNU +1212C ; [.5275.0020.0002] # CUNEIFORM SIGN HAL +1212D ; [.5276.0020.0002] # CUNEIFORM SIGN HI +1212E ; [.5277.0020.0002] # CUNEIFORM SIGN HI TIMES ASH +1212F ; [.5278.0020.0002] # CUNEIFORM SIGN HI TIMES ASH2 +12130 ; [.5279.0020.0002] # CUNEIFORM SIGN HI TIMES BAD +12131 ; [.527A.0020.0002] # CUNEIFORM SIGN HI TIMES DISH +12132 ; [.527B.0020.0002] # CUNEIFORM SIGN HI TIMES GAD +12133 ; [.527C.0020.0002] # CUNEIFORM SIGN HI TIMES KIN +12134 ; [.527D.0020.0002] # CUNEIFORM SIGN HI TIMES NUN +12135 ; [.527E.0020.0002] # CUNEIFORM SIGN HI TIMES SHE +12136 ; [.527F.0020.0002] # CUNEIFORM SIGN HI TIMES U +12137 ; [.5280.0020.0002] # CUNEIFORM SIGN HU +12138 ; [.5281.0020.0002] # CUNEIFORM SIGN HUB2 +12139 ; [.5282.0020.0002] # CUNEIFORM SIGN HUB2 TIMES AN +1213A ; [.5283.0020.0002] # CUNEIFORM SIGN HUB2 TIMES HAL +1213B ; [.5284.0020.0002] # CUNEIFORM SIGN HUB2 TIMES KASKAL +1213C ; [.5285.0020.0002] # CUNEIFORM SIGN HUB2 TIMES LISH +1213D ; [.5286.0020.0002] # CUNEIFORM SIGN HUB2 TIMES UD +1213E ; [.5287.0020.0002] # CUNEIFORM SIGN HUL2 +1213F ; [.5288.0020.0002] # CUNEIFORM SIGN I +12140 ; [.5289.0020.0002] # CUNEIFORM SIGN I A +12141 ; [.528A.0020.0002] # CUNEIFORM SIGN IB +12142 ; [.528B.0020.0002] # CUNEIFORM SIGN IDIM +12143 ; [.528C.0020.0002] # CUNEIFORM SIGN IDIM OVER IDIM BUR +12144 ; [.528D.0020.0002] # CUNEIFORM SIGN IDIM OVER IDIM SQUARED +12145 ; [.528E.0020.0002] # CUNEIFORM SIGN IG +12146 ; [.528F.0020.0002] # CUNEIFORM SIGN IGI +12147 ; [.5290.0020.0002] # CUNEIFORM SIGN IGI DIB +12148 ; [.5291.0020.0002] # CUNEIFORM SIGN IGI RI +12149 ; [.5292.0020.0002] # CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD +1214A ; [.5293.0020.0002] # CUNEIFORM SIGN IGI GUNU +1214B ; [.5294.0020.0002] # CUNEIFORM SIGN IL +1214C ; [.5295.0020.0002] # CUNEIFORM SIGN IL TIMES GAN2 TENU +1214D ; [.5296.0020.0002] # CUNEIFORM SIGN IL2 +1214E ; [.5297.0020.0002] # CUNEIFORM SIGN IM +1214F ; [.5298.0020.0002] # CUNEIFORM SIGN IM TIMES TAK4 +12150 ; [.5299.0020.0002] # CUNEIFORM SIGN IM CROSSING IM +12151 ; [.529A.0020.0002] # CUNEIFORM SIGN IM OPPOSING IM +12152 ; [.529B.0020.0002] # CUNEIFORM SIGN IM SQUARED +12153 ; [.529C.0020.0002] # CUNEIFORM SIGN IMIN +12154 ; [.529D.0020.0002] # CUNEIFORM SIGN IN +12155 ; [.529E.0020.0002] # CUNEIFORM SIGN IR +12156 ; [.529F.0020.0002] # CUNEIFORM SIGN ISH +12157 ; [.52A0.0020.0002] # CUNEIFORM SIGN KA +12158 ; [.52A1.0020.0002] # CUNEIFORM SIGN KA TIMES A +12159 ; [.52A2.0020.0002] # CUNEIFORM SIGN KA TIMES AD +1215A ; [.52A3.0020.0002] # CUNEIFORM SIGN KA TIMES AD PLUS KU3 +1215B ; [.52A4.0020.0002] # CUNEIFORM SIGN KA TIMES ASH2 +1215C ; [.52A5.0020.0002] # CUNEIFORM SIGN KA TIMES BAD +1215D ; [.52A6.0020.0002] # CUNEIFORM SIGN KA TIMES BALAG +1215E ; [.52A7.0020.0002] # CUNEIFORM SIGN KA TIMES BAR +1215F ; [.52A8.0020.0002] # CUNEIFORM SIGN KA TIMES BI +12160 ; [.52A9.0020.0002] # CUNEIFORM SIGN KA TIMES ERIN2 +12161 ; [.52AA.0020.0002] # CUNEIFORM SIGN KA TIMES ESH2 +12162 ; [.52AB.0020.0002] # CUNEIFORM SIGN KA TIMES GA +12163 ; [.52AC.0020.0002] # CUNEIFORM SIGN KA TIMES GAL +12164 ; [.52AD.0020.0002] # CUNEIFORM SIGN KA TIMES GAN2 TENU +12165 ; [.52AE.0020.0002] # CUNEIFORM SIGN KA TIMES GAR +12166 ; [.52AF.0020.0002] # CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A +12167 ; [.52B0.0020.0002] # CUNEIFORM SIGN KA TIMES GI +12168 ; [.52B1.0020.0002] # CUNEIFORM SIGN KA TIMES GIR2 +12169 ; [.52B2.0020.0002] # CUNEIFORM SIGN KA TIMES GISH PLUS SAR +1216A ; [.52B3.0020.0002] # CUNEIFORM SIGN KA TIMES GISH CROSSING GISH +1216B ; [.52B4.0020.0002] # CUNEIFORM SIGN KA TIMES GU +1216C ; [.52B5.0020.0002] # CUNEIFORM SIGN KA TIMES GUR7 +1216D ; [.52B6.0020.0002] # CUNEIFORM SIGN KA TIMES IGI +1216E ; [.52B7.0020.0002] # CUNEIFORM SIGN KA TIMES IM +1216F ; [.52B8.0020.0002] # CUNEIFORM SIGN KA TIMES KAK +12170 ; [.52B9.0020.0002] # CUNEIFORM SIGN KA TIMES KI +12171 ; [.52BA.0020.0002] # CUNEIFORM SIGN KA TIMES KID +12172 ; [.52BB.0020.0002] # CUNEIFORM SIGN KA TIMES LI +12173 ; [.52BC.0020.0002] # CUNEIFORM SIGN KA TIMES LU +12174 ; [.52BD.0020.0002] # CUNEIFORM SIGN KA TIMES ME +12175 ; [.52BE.0020.0002] # CUNEIFORM SIGN KA TIMES ME PLUS DU +12176 ; [.52BF.0020.0002] # CUNEIFORM SIGN KA TIMES ME PLUS GI +12177 ; [.52C0.0020.0002] # CUNEIFORM SIGN KA TIMES ME PLUS TE +12178 ; [.52C1.0020.0002] # CUNEIFORM SIGN KA TIMES MI +12179 ; [.52C2.0020.0002] # CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ +1217A ; [.52C3.0020.0002] # CUNEIFORM SIGN KA TIMES NE +1217B ; [.52C4.0020.0002] # CUNEIFORM SIGN KA TIMES NUN +1217C ; [.52C5.0020.0002] # CUNEIFORM SIGN KA TIMES PI +1217D ; [.52C6.0020.0002] # CUNEIFORM SIGN KA TIMES RU +1217E ; [.52C7.0020.0002] # CUNEIFORM SIGN KA TIMES SA +1217F ; [.52C8.0020.0002] # CUNEIFORM SIGN KA TIMES SAR +12180 ; [.52C9.0020.0002] # CUNEIFORM SIGN KA TIMES SHA +12181 ; [.52CA.0020.0002] # CUNEIFORM SIGN KA TIMES SHE +12182 ; [.52CB.0020.0002] # CUNEIFORM SIGN KA TIMES SHID +12183 ; [.52CC.0020.0002] # CUNEIFORM SIGN KA TIMES SHU +12184 ; [.52CD.0020.0002] # CUNEIFORM SIGN KA TIMES SIG +12185 ; [.52CE.0020.0002] # CUNEIFORM SIGN KA TIMES SUHUR +12186 ; [.52CF.0020.0002] # CUNEIFORM SIGN KA TIMES TAR +12187 ; [.52D0.0020.0002] # CUNEIFORM SIGN KA TIMES U +12188 ; [.52D1.0020.0002] # CUNEIFORM SIGN KA TIMES U2 +12189 ; [.52D2.0020.0002] # CUNEIFORM SIGN KA TIMES UD +1218A ; [.52D3.0020.0002] # CUNEIFORM SIGN KA TIMES UMUM TIMES PA +1218B ; [.52D4.0020.0002] # CUNEIFORM SIGN KA TIMES USH +1218C ; [.52D5.0020.0002] # CUNEIFORM SIGN KA TIMES ZI +1218D ; [.52D6.0020.0002] # CUNEIFORM SIGN KA2 +1218E ; [.52D7.0020.0002] # CUNEIFORM SIGN KA2 CROSSING KA2 +1218F ; [.52D8.0020.0002] # CUNEIFORM SIGN KAB +12190 ; [.52D9.0020.0002] # CUNEIFORM SIGN KAD2 +12191 ; [.52DA.0020.0002] # CUNEIFORM SIGN KAD3 +12192 ; [.52DB.0020.0002] # CUNEIFORM SIGN KAD4 +12193 ; [.52DC.0020.0002] # CUNEIFORM SIGN KAD5 +12194 ; [.52DD.0020.0002] # CUNEIFORM SIGN KAD5 OVER KAD5 +12195 ; [.52DE.0020.0002] # CUNEIFORM SIGN KAK +12196 ; [.52DF.0020.0002] # CUNEIFORM SIGN KAK TIMES IGI GUNU +12197 ; [.52E0.0020.0002] # CUNEIFORM SIGN KAL +12198 ; [.52E1.0020.0002] # CUNEIFORM SIGN KAL TIMES BAD +12199 ; [.52E2.0020.0002] # CUNEIFORM SIGN KAL CROSSING KAL +1219A ; [.52E3.0020.0002] # CUNEIFORM SIGN KAM2 +1219B ; [.52E4.0020.0002] # CUNEIFORM SIGN KAM4 +1219C ; [.52E5.0020.0002] # CUNEIFORM SIGN KASKAL +1219D ; [.52E6.0020.0002] # CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U +1219E ; [.52E7.0020.0002] # CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U +1219F ; [.52E8.0020.0002] # CUNEIFORM SIGN KESH2 +121A0 ; [.52E9.0020.0002] # CUNEIFORM SIGN KI +121A1 ; [.52EA.0020.0002] # CUNEIFORM SIGN KI TIMES BAD +121A2 ; [.52EB.0020.0002] # CUNEIFORM SIGN KI TIMES U +121A3 ; [.52EC.0020.0002] # CUNEIFORM SIGN KI TIMES UD +121A4 ; [.52ED.0020.0002] # CUNEIFORM SIGN KID +121A5 ; [.52EE.0020.0002] # CUNEIFORM SIGN KIN +121A6 ; [.52EF.0020.0002] # CUNEIFORM SIGN KISAL +121A7 ; [.52F0.0020.0002] # CUNEIFORM SIGN KISH +121A8 ; [.52F1.0020.0002] # CUNEIFORM SIGN KISIM5 +121A9 ; [.52F2.0020.0002] # CUNEIFORM SIGN KISIM5 OVER KISIM5 +121AA ; [.52F3.0020.0002] # CUNEIFORM SIGN KU +121AB ; [.52F4.0020.0002] # CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2 +121AC ; [.52F5.0020.0002] # CUNEIFORM SIGN KU3 +121AD ; [.52F6.0020.0002] # CUNEIFORM SIGN KU4 +121AE ; [.52F7.0020.0002] # CUNEIFORM SIGN KU4 VARIANT FORM +121AF ; [.52F8.0020.0002] # CUNEIFORM SIGN KU7 +121B0 ; [.52F9.0020.0002] # CUNEIFORM SIGN KUL +121B1 ; [.52FA.0020.0002] # CUNEIFORM SIGN KUL GUNU +121B2 ; [.52FB.0020.0002] # CUNEIFORM SIGN KUN +121B3 ; [.52FC.0020.0002] # CUNEIFORM SIGN KUR +121B4 ; [.52FD.0020.0002] # CUNEIFORM SIGN KUR OPPOSING KUR +121B5 ; [.52FE.0020.0002] # CUNEIFORM SIGN KUSHU2 +121B6 ; [.52FF.0020.0002] # CUNEIFORM SIGN KWU318 +121B7 ; [.5300.0020.0002] # CUNEIFORM SIGN LA +121B8 ; [.5301.0020.0002] # CUNEIFORM SIGN LAGAB +121B9 ; [.5302.0020.0002] # CUNEIFORM SIGN LAGAB TIMES A +121BA ; [.5303.0020.0002] # CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA +121BB ; [.5304.0020.0002] # CUNEIFORM SIGN LAGAB TIMES A PLUS GAR +121BC ; [.5305.0020.0002] # CUNEIFORM SIGN LAGAB TIMES A PLUS LAL +121BD ; [.5306.0020.0002] # CUNEIFORM SIGN LAGAB TIMES AL +121BE ; [.5307.0020.0002] # CUNEIFORM SIGN LAGAB TIMES AN +121BF ; [.5308.0020.0002] # CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU +121C0 ; [.5309.0020.0002] # CUNEIFORM SIGN LAGAB TIMES BAD +121C1 ; [.530A.0020.0002] # CUNEIFORM SIGN LAGAB TIMES BI +121C2 ; [.530B.0020.0002] # CUNEIFORM SIGN LAGAB TIMES DAR +121C3 ; [.530C.0020.0002] # CUNEIFORM SIGN LAGAB TIMES EN +121C4 ; [.530D.0020.0002] # CUNEIFORM SIGN LAGAB TIMES GA +121C5 ; [.530E.0020.0002] # CUNEIFORM SIGN LAGAB TIMES GAR +121C6 ; [.530F.0020.0002] # CUNEIFORM SIGN LAGAB TIMES GUD +121C7 ; [.5310.0020.0002] # CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD +121C8 ; [.5311.0020.0002] # CUNEIFORM SIGN LAGAB TIMES HA +121C9 ; [.5312.0020.0002] # CUNEIFORM SIGN LAGAB TIMES HAL +121CA ; [.5313.0020.0002] # CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN +121CB ; [.5314.0020.0002] # CUNEIFORM SIGN LAGAB TIMES IGI GUNU +121CC ; [.5315.0020.0002] # CUNEIFORM SIGN LAGAB TIMES IM +121CD ; [.5316.0020.0002] # CUNEIFORM SIGN LAGAB TIMES IM PLUS HA +121CE ; [.5317.0020.0002] # CUNEIFORM SIGN LAGAB TIMES IM PLUS LU +121CF ; [.5318.0020.0002] # CUNEIFORM SIGN LAGAB TIMES KI +121D0 ; [.5319.0020.0002] # CUNEIFORM SIGN LAGAB TIMES KIN +121D1 ; [.531A.0020.0002] # CUNEIFORM SIGN LAGAB TIMES KU3 +121D2 ; [.531B.0020.0002] # CUNEIFORM SIGN LAGAB TIMES KUL +121D3 ; [.531C.0020.0002] # CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A +121D4 ; [.531D.0020.0002] # CUNEIFORM SIGN LAGAB TIMES LAGAB +121D5 ; [.531E.0020.0002] # CUNEIFORM SIGN LAGAB TIMES LISH +121D6 ; [.531F.0020.0002] # CUNEIFORM SIGN LAGAB TIMES LU +121D7 ; [.5320.0020.0002] # CUNEIFORM SIGN LAGAB TIMES LUL +121D8 ; [.5321.0020.0002] # CUNEIFORM SIGN LAGAB TIMES ME +121D9 ; [.5322.0020.0002] # CUNEIFORM SIGN LAGAB TIMES ME PLUS EN +121DA ; [.5323.0020.0002] # CUNEIFORM SIGN LAGAB TIMES MUSH +121DB ; [.5324.0020.0002] # CUNEIFORM SIGN LAGAB TIMES NE +121DC ; [.5325.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM +121DD ; [.5326.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2 +121DE ; [.5327.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU +121DF ; [.5328.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SHU2 +121E0 ; [.5329.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2 +121E1 ; [.532A.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SUM +121E2 ; [.532B.0020.0002] # CUNEIFORM SIGN LAGAB TIMES TAG +121E3 ; [.532C.0020.0002] # CUNEIFORM SIGN LAGAB TIMES TAK4 +121E4 ; [.532D.0020.0002] # CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA +121E5 ; [.532E.0020.0002] # CUNEIFORM SIGN LAGAB TIMES U +121E6 ; [.532F.0020.0002] # CUNEIFORM SIGN LAGAB TIMES U PLUS A +121E7 ; [.5330.0020.0002] # CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U +121E8 ; [.5331.0020.0002] # CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH +121E9 ; [.5332.0020.0002] # CUNEIFORM SIGN LAGAB TIMES UD +121EA ; [.5333.0020.0002] # CUNEIFORM SIGN LAGAB TIMES USH +121EB ; [.5334.0020.0002] # CUNEIFORM SIGN LAGAB SQUARED +121EC ; [.5335.0020.0002] # CUNEIFORM SIGN LAGAR +121ED ; [.5336.0020.0002] # CUNEIFORM SIGN LAGAR TIMES SHE +121EE ; [.5337.0020.0002] # CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM +121EF ; [.5338.0020.0002] # CUNEIFORM SIGN LAGAR GUNU +121F0 ; [.5339.0020.0002] # CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE +121F1 ; [.533A.0020.0002] # CUNEIFORM SIGN LAHSHU +121F2 ; [.533B.0020.0002] # CUNEIFORM SIGN LAL +121F3 ; [.533C.0020.0002] # CUNEIFORM SIGN LAL TIMES LAL +121F4 ; [.533D.0020.0002] # CUNEIFORM SIGN LAM +121F5 ; [.533E.0020.0002] # CUNEIFORM SIGN LAM TIMES KUR +121F6 ; [.533F.0020.0002] # CUNEIFORM SIGN LAM TIMES KUR PLUS RU +121F7 ; [.5340.0020.0002] # CUNEIFORM SIGN LI +121F8 ; [.5341.0020.0002] # CUNEIFORM SIGN LIL +121F9 ; [.5342.0020.0002] # CUNEIFORM SIGN LIMMU2 +121FA ; [.5343.0020.0002] # CUNEIFORM SIGN LISH +121FB ; [.5344.0020.0002] # CUNEIFORM SIGN LU +121FC ; [.5345.0020.0002] # CUNEIFORM SIGN LU TIMES BAD +121FD ; [.5346.0020.0002] # CUNEIFORM SIGN LU2 +121FE ; [.5347.0020.0002] # CUNEIFORM SIGN LU2 TIMES AL +121FF ; [.5348.0020.0002] # CUNEIFORM SIGN LU2 TIMES BAD +12200 ; [.5349.0020.0002] # CUNEIFORM SIGN LU2 TIMES ESH2 +12201 ; [.534A.0020.0002] # CUNEIFORM SIGN LU2 TIMES ESH2 TENU +12202 ; [.534B.0020.0002] # CUNEIFORM SIGN LU2 TIMES GAN2 TENU +12203 ; [.534C.0020.0002] # CUNEIFORM SIGN LU2 TIMES HI TIMES BAD +12204 ; [.534D.0020.0002] # CUNEIFORM SIGN LU2 TIMES IM +12205 ; [.534E.0020.0002] # CUNEIFORM SIGN LU2 TIMES KAD2 +12206 ; [.534F.0020.0002] # CUNEIFORM SIGN LU2 TIMES KAD3 +12207 ; [.5350.0020.0002] # CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH +12208 ; [.5351.0020.0002] # CUNEIFORM SIGN LU2 TIMES KI +12209 ; [.5352.0020.0002] # CUNEIFORM SIGN LU2 TIMES LA PLUS ASH +1220A ; [.5353.0020.0002] # CUNEIFORM SIGN LU2 TIMES LAGAB +1220B ; [.5354.0020.0002] # CUNEIFORM SIGN LU2 TIMES ME PLUS EN +1220C ; [.5355.0020.0002] # CUNEIFORM SIGN LU2 TIMES NE +1220D ; [.5356.0020.0002] # CUNEIFORM SIGN LU2 TIMES NU +1220E ; [.5357.0020.0002] # CUNEIFORM SIGN LU2 TIMES SI PLUS ASH +1220F ; [.5358.0020.0002] # CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU +12210 ; [.5359.0020.0002] # CUNEIFORM SIGN LU2 TIMES TUG2 +12211 ; [.535A.0020.0002] # CUNEIFORM SIGN LU2 TENU +12212 ; [.535B.0020.0002] # CUNEIFORM SIGN LU2 CROSSING LU2 +12213 ; [.535C.0020.0002] # CUNEIFORM SIGN LU2 OPPOSING LU2 +12214 ; [.535D.0020.0002] # CUNEIFORM SIGN LU2 SQUARED +12215 ; [.535E.0020.0002] # CUNEIFORM SIGN LU2 SHESHIG +12216 ; [.535F.0020.0002] # CUNEIFORM SIGN LU3 +12217 ; [.5360.0020.0002] # CUNEIFORM SIGN LUGAL +12218 ; [.5361.0020.0002] # CUNEIFORM SIGN LUGAL OVER LUGAL +12219 ; [.5362.0020.0002] # CUNEIFORM SIGN LUGAL OPPOSING LUGAL +1221A ; [.5363.0020.0002] # CUNEIFORM SIGN LUGAL SHESHIG +1221B ; [.5364.0020.0002] # CUNEIFORM SIGN LUH +1221C ; [.5365.0020.0002] # CUNEIFORM SIGN LUL +1221D ; [.5366.0020.0002] # CUNEIFORM SIGN LUM +1221E ; [.5367.0020.0002] # CUNEIFORM SIGN LUM OVER LUM +1221F ; [.5368.0020.0002] # CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR +12220 ; [.5369.0020.0002] # CUNEIFORM SIGN MA +12221 ; [.536A.0020.0002] # CUNEIFORM SIGN MA TIMES TAK4 +12222 ; [.536B.0020.0002] # CUNEIFORM SIGN MA GUNU +12223 ; [.536C.0020.0002] # CUNEIFORM SIGN MA2 +12224 ; [.536D.0020.0002] # CUNEIFORM SIGN MAH +12225 ; [.536E.0020.0002] # CUNEIFORM SIGN MAR +12226 ; [.536F.0020.0002] # CUNEIFORM SIGN MASH +12227 ; [.5370.0020.0002] # CUNEIFORM SIGN MASH2 +12228 ; [.5371.0020.0002] # CUNEIFORM SIGN ME +12229 ; [.5372.0020.0002] # CUNEIFORM SIGN MES +1222A ; [.5373.0020.0002] # CUNEIFORM SIGN MI +1222B ; [.5374.0020.0002] # CUNEIFORM SIGN MIN +1222C ; [.5375.0020.0002] # CUNEIFORM SIGN MU +1222D ; [.5376.0020.0002] # CUNEIFORM SIGN MU OVER MU +1222E ; [.5377.0020.0002] # CUNEIFORM SIGN MUG +1222F ; [.5378.0020.0002] # CUNEIFORM SIGN MUG GUNU +12230 ; [.5379.0020.0002] # CUNEIFORM SIGN MUNSUB +12231 ; [.537A.0020.0002] # CUNEIFORM SIGN MURGU2 +12232 ; [.537B.0020.0002] # CUNEIFORM SIGN MUSH +12233 ; [.537C.0020.0002] # CUNEIFORM SIGN MUSH TIMES A +12234 ; [.537D.0020.0002] # CUNEIFORM SIGN MUSH TIMES KUR +12235 ; [.537E.0020.0002] # CUNEIFORM SIGN MUSH TIMES ZA +12236 ; [.537F.0020.0002] # CUNEIFORM SIGN MUSH OVER MUSH +12237 ; [.5380.0020.0002] # CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA +12238 ; [.5381.0020.0002] # CUNEIFORM SIGN MUSH CROSSING MUSH +12239 ; [.5382.0020.0002] # CUNEIFORM SIGN MUSH3 +1223A ; [.5383.0020.0002] # CUNEIFORM SIGN MUSH3 TIMES A +1223B ; [.5384.0020.0002] # CUNEIFORM SIGN MUSH3 TIMES A PLUS DI +1223C ; [.5385.0020.0002] # CUNEIFORM SIGN MUSH3 TIMES DI +1223D ; [.5386.0020.0002] # CUNEIFORM SIGN MUSH3 GUNU +1223E ; [.5387.0020.0002] # CUNEIFORM SIGN NA +1223F ; [.5388.0020.0002] # CUNEIFORM SIGN NA2 +12240 ; [.5389.0020.0002] # CUNEIFORM SIGN NAGA +12241 ; [.538A.0020.0002] # CUNEIFORM SIGN NAGA INVERTED +12242 ; [.538B.0020.0002] # CUNEIFORM SIGN NAGA TIMES SHU TENU +12243 ; [.538C.0020.0002] # CUNEIFORM SIGN NAGA OPPOSING NAGA +12244 ; [.538D.0020.0002] # CUNEIFORM SIGN NAGAR +12245 ; [.538E.0020.0002] # CUNEIFORM SIGN NAM NUTILLU +12246 ; [.538F.0020.0002] # CUNEIFORM SIGN NAM +12247 ; [.5390.0020.0002] # CUNEIFORM SIGN NAM2 +12248 ; [.5391.0020.0002] # CUNEIFORM SIGN NE +12249 ; [.5392.0020.0002] # CUNEIFORM SIGN NE TIMES A +1224A ; [.5393.0020.0002] # CUNEIFORM SIGN NE TIMES UD +1224B ; [.5394.0020.0002] # CUNEIFORM SIGN NE SHESHIG +1224C ; [.5395.0020.0002] # CUNEIFORM SIGN NI +1224D ; [.5396.0020.0002] # CUNEIFORM SIGN NI TIMES E +1224E ; [.5397.0020.0002] # CUNEIFORM SIGN NI2 +1224F ; [.5398.0020.0002] # CUNEIFORM SIGN NIM +12250 ; [.5399.0020.0002] # CUNEIFORM SIGN NIM TIMES GAN2 TENU +12251 ; [.539A.0020.0002] # CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU +12252 ; [.539B.0020.0002] # CUNEIFORM SIGN NINDA2 +12253 ; [.539C.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES AN +12254 ; [.539D.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES ASH +12255 ; [.539E.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH +12256 ; [.539F.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES GUD +12257 ; [.53A0.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU +12258 ; [.53A1.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES NE +12259 ; [.53A2.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES NUN +1225A ; [.53A3.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES SHE +1225B ; [.53A4.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN +1225C ; [.53A5.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH +1225D ; [.53A6.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH +1225E ; [.53A7.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH +1225F ; [.53A8.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES USH +12260 ; [.53A9.0020.0002] # CUNEIFORM SIGN NISAG +12261 ; [.53AA.0020.0002] # CUNEIFORM SIGN NU +12262 ; [.53AB.0020.0002] # CUNEIFORM SIGN NU11 +122D4 ; [.53AC.0020.0002] # CUNEIFORM SIGN SHIR TENU +122D5 ; [.53AD.0020.0002] # CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR +12263 ; [.53AE.0020.0002] # CUNEIFORM SIGN NUN +12264 ; [.53AF.0020.0002] # CUNEIFORM SIGN NUN LAGAR TIMES GAR +12265 ; [.53B0.0020.0002] # CUNEIFORM SIGN NUN LAGAR TIMES MASH +12266 ; [.53B1.0020.0002] # CUNEIFORM SIGN NUN LAGAR TIMES SAL +12267 ; [.53B2.0020.0002] # CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL +12268 ; [.53B3.0020.0002] # CUNEIFORM SIGN NUN LAGAR TIMES USH +12269 ; [.53B4.0020.0002] # CUNEIFORM SIGN NUN TENU +1226A ; [.53B5.0020.0002] # CUNEIFORM SIGN NUN OVER NUN +1226B ; [.53B6.0020.0002] # CUNEIFORM SIGN NUN CROSSING NUN +1226C ; [.53B7.0020.0002] # CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR +1226D ; [.53B8.0020.0002] # CUNEIFORM SIGN NUNUZ +1226E ; [.53B9.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB +1226F ; [.53BA.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES BI +12270 ; [.53BB.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES DUG +12271 ; [.53BC.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES GUD +12272 ; [.53BD.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU +12273 ; [.53BE.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3 +12274 ; [.53BF.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES LA +12275 ; [.53C0.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES NE +12276 ; [.53C1.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3 +12277 ; [.53C2.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES U2 +12278 ; [.53C3.0020.0002] # CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI +12279 ; [.53C4.0020.0002] # CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U +1227A ; [.53C5.0020.0002] # CUNEIFORM SIGN PA +1227B ; [.53C6.0020.0002] # CUNEIFORM SIGN PAD +1227C ; [.53C7.0020.0002] # CUNEIFORM SIGN PAN +1227D ; [.53C8.0020.0002] # CUNEIFORM SIGN PAP +1227E ; [.53C9.0020.0002] # CUNEIFORM SIGN PESH2 +1227F ; [.53CA.0020.0002] # CUNEIFORM SIGN PI +12280 ; [.53CB.0020.0002] # CUNEIFORM SIGN PI TIMES A +12281 ; [.53CC.0020.0002] # CUNEIFORM SIGN PI TIMES AB +12282 ; [.53CD.0020.0002] # CUNEIFORM SIGN PI TIMES BI +12283 ; [.53CE.0020.0002] # CUNEIFORM SIGN PI TIMES BU +12284 ; [.53CF.0020.0002] # CUNEIFORM SIGN PI TIMES E +12285 ; [.53D0.0020.0002] # CUNEIFORM SIGN PI TIMES I +12286 ; [.53D1.0020.0002] # CUNEIFORM SIGN PI TIMES IB +12287 ; [.53D2.0020.0002] # CUNEIFORM SIGN PI TIMES U +12288 ; [.53D3.0020.0002] # CUNEIFORM SIGN PI TIMES U2 +12289 ; [.53D4.0020.0002] # CUNEIFORM SIGN PI CROSSING PI +1228A ; [.53D5.0020.0002] # CUNEIFORM SIGN PIRIG +1228B ; [.53D6.0020.0002] # CUNEIFORM SIGN PIRIG TIMES KAL +1228C ; [.53D7.0020.0002] # CUNEIFORM SIGN PIRIG TIMES UD +1228D ; [.53D8.0020.0002] # CUNEIFORM SIGN PIRIG TIMES ZA +1228E ; [.53D9.0020.0002] # CUNEIFORM SIGN PIRIG OPPOSING PIRIG +1228F ; [.53DA.0020.0002] # CUNEIFORM SIGN RA +12290 ; [.53DB.0020.0002] # CUNEIFORM SIGN RAB +12291 ; [.53DC.0020.0002] # CUNEIFORM SIGN RI +12292 ; [.53DD.0020.0002] # CUNEIFORM SIGN RU +12293 ; [.53DE.0020.0002] # CUNEIFORM SIGN SA +12294 ; [.53DF.0020.0002] # CUNEIFORM SIGN SAG NUTILLU +12295 ; [.53E0.0020.0002] # CUNEIFORM SIGN SAG +12296 ; [.53E1.0020.0002] # CUNEIFORM SIGN SAG TIMES A +12297 ; [.53E2.0020.0002] # CUNEIFORM SIGN SAG TIMES DU +12298 ; [.53E3.0020.0002] # CUNEIFORM SIGN SAG TIMES DUB +12299 ; [.53E4.0020.0002] # CUNEIFORM SIGN SAG TIMES HA +1229A ; [.53E5.0020.0002] # CUNEIFORM SIGN SAG TIMES KAK +1229B ; [.53E6.0020.0002] # CUNEIFORM SIGN SAG TIMES KUR +1229C ; [.53E7.0020.0002] # CUNEIFORM SIGN SAG TIMES LUM +1229D ; [.53E8.0020.0002] # CUNEIFORM SIGN SAG TIMES MI +1229E ; [.53E9.0020.0002] # CUNEIFORM SIGN SAG TIMES NUN +1229F ; [.53EA.0020.0002] # CUNEIFORM SIGN SAG TIMES SAL +122A0 ; [.53EB.0020.0002] # CUNEIFORM SIGN SAG TIMES SHID +122A1 ; [.53EC.0020.0002] # CUNEIFORM SIGN SAG TIMES TAB +122A2 ; [.53ED.0020.0002] # CUNEIFORM SIGN SAG TIMES U2 +122A3 ; [.53EE.0020.0002] # CUNEIFORM SIGN SAG TIMES UB +122A4 ; [.53EF.0020.0002] # CUNEIFORM SIGN SAG TIMES UM +122A5 ; [.53F0.0020.0002] # CUNEIFORM SIGN SAG TIMES UR +122A6 ; [.53F1.0020.0002] # CUNEIFORM SIGN SAG TIMES USH +122A7 ; [.53F2.0020.0002] # CUNEIFORM SIGN SAG OVER SAG +122A8 ; [.53F3.0020.0002] # CUNEIFORM SIGN SAG GUNU +122A9 ; [.53F4.0020.0002] # CUNEIFORM SIGN SAL +122AA ; [.53F5.0020.0002] # CUNEIFORM SIGN SAL LAGAB TIMES ASH2 +122AB ; [.53F6.0020.0002] # CUNEIFORM SIGN SANGA2 +122AC ; [.53F7.0020.0002] # CUNEIFORM SIGN SAR +122AD ; [.53F8.0020.0002] # CUNEIFORM SIGN SHA +122AE ; [.53F9.0020.0002] # CUNEIFORM SIGN SHA3 +122AF ; [.53FA.0020.0002] # CUNEIFORM SIGN SHA3 TIMES A +122B0 ; [.53FB.0020.0002] # CUNEIFORM SIGN SHA3 TIMES BAD +122B1 ; [.53FC.0020.0002] # CUNEIFORM SIGN SHA3 TIMES GISH +122B2 ; [.53FD.0020.0002] # CUNEIFORM SIGN SHA3 TIMES NE +122B3 ; [.53FE.0020.0002] # CUNEIFORM SIGN SHA3 TIMES SHU2 +122B4 ; [.53FF.0020.0002] # CUNEIFORM SIGN SHA3 TIMES TUR +122B5 ; [.5400.0020.0002] # CUNEIFORM SIGN SHA3 TIMES U +122B6 ; [.5401.0020.0002] # CUNEIFORM SIGN SHA3 TIMES U PLUS A +122B7 ; [.5402.0020.0002] # CUNEIFORM SIGN SHA6 +122B8 ; [.5403.0020.0002] # CUNEIFORM SIGN SHAB6 +122B9 ; [.5404.0020.0002] # CUNEIFORM SIGN SHAR2 +122BA ; [.5405.0020.0002] # CUNEIFORM SIGN SHE +122BB ; [.5406.0020.0002] # CUNEIFORM SIGN SHE HU +122BC ; [.5407.0020.0002] # CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR +122BD ; [.5408.0020.0002] # CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR +122BE ; [.5409.0020.0002] # CUNEIFORM SIGN SHEG9 +122BF ; [.540A.0020.0002] # CUNEIFORM SIGN SHEN +122C0 ; [.540B.0020.0002] # CUNEIFORM SIGN SHESH +122C1 ; [.540C.0020.0002] # CUNEIFORM SIGN SHESH2 +122C2 ; [.540D.0020.0002] # CUNEIFORM SIGN SHESHLAM +122C3 ; [.540E.0020.0002] # CUNEIFORM SIGN SHID +122C4 ; [.540F.0020.0002] # CUNEIFORM SIGN SHID TIMES A +122C5 ; [.5410.0020.0002] # CUNEIFORM SIGN SHID TIMES IM +122C6 ; [.5411.0020.0002] # CUNEIFORM SIGN SHIM +122C7 ; [.5412.0020.0002] # CUNEIFORM SIGN SHIM TIMES A +122C8 ; [.5413.0020.0002] # CUNEIFORM SIGN SHIM TIMES BAL +122C9 ; [.5414.0020.0002] # CUNEIFORM SIGN SHIM TIMES BULUG +122CA ; [.5415.0020.0002] # CUNEIFORM SIGN SHIM TIMES DIN +122CB ; [.5416.0020.0002] # CUNEIFORM SIGN SHIM TIMES GAR +122CC ; [.5417.0020.0002] # CUNEIFORM SIGN SHIM TIMES IGI +122CD ; [.5418.0020.0002] # CUNEIFORM SIGN SHIM TIMES IGI GUNU +122CE ; [.5419.0020.0002] # CUNEIFORM SIGN SHIM TIMES KUSHU2 +122CF ; [.541A.0020.0002] # CUNEIFORM SIGN SHIM TIMES LUL +122D0 ; [.541B.0020.0002] # CUNEIFORM SIGN SHIM TIMES MUG +122D1 ; [.541C.0020.0002] # CUNEIFORM SIGN SHIM TIMES SAL +122D2 ; [.541D.0020.0002] # CUNEIFORM SIGN SHINIG +122D3 ; [.541E.0020.0002] # CUNEIFORM SIGN SHIR +122D6 ; [.541F.0020.0002] # CUNEIFORM SIGN SHITA +122D7 ; [.5420.0020.0002] # CUNEIFORM SIGN SHU +122D8 ; [.5421.0020.0002] # CUNEIFORM SIGN SHU OVER INVERTED SHU +122D9 ; [.5422.0020.0002] # CUNEIFORM SIGN SHU2 +122DA ; [.5423.0020.0002] # CUNEIFORM SIGN SHUBUR +122DB ; [.5424.0020.0002] # CUNEIFORM SIGN SI +122DC ; [.5425.0020.0002] # CUNEIFORM SIGN SI GUNU +122DD ; [.5426.0020.0002] # CUNEIFORM SIGN SIG +122DE ; [.5427.0020.0002] # CUNEIFORM SIGN SIG4 +122DF ; [.5428.0020.0002] # CUNEIFORM SIGN SIG4 OVER SIG4 SHU2 +122E0 ; [.5429.0020.0002] # CUNEIFORM SIGN SIK2 +122E1 ; [.542A.0020.0002] # CUNEIFORM SIGN SILA3 +122E2 ; [.542B.0020.0002] # CUNEIFORM SIGN SU +122E3 ; [.542C.0020.0002] # CUNEIFORM SIGN SU OVER SU +122E4 ; [.542D.0020.0002] # CUNEIFORM SIGN SUD +122E5 ; [.542E.0020.0002] # CUNEIFORM SIGN SUD2 +122E6 ; [.542F.0020.0002] # CUNEIFORM SIGN SUHUR +122E7 ; [.5430.0020.0002] # CUNEIFORM SIGN SUM +122E8 ; [.5431.0020.0002] # CUNEIFORM SIGN SUMASH +122E9 ; [.5432.0020.0002] # CUNEIFORM SIGN SUR +122EA ; [.5433.0020.0002] # CUNEIFORM SIGN SUR9 +122EB ; [.5434.0020.0002] # CUNEIFORM SIGN TA +122EC ; [.5435.0020.0002] # CUNEIFORM SIGN TA ASTERISK +122ED ; [.5436.0020.0002] # CUNEIFORM SIGN TA TIMES HI +122EE ; [.5437.0020.0002] # CUNEIFORM SIGN TA TIMES MI +122EF ; [.5438.0020.0002] # CUNEIFORM SIGN TA GUNU +122F0 ; [.5439.0020.0002] # CUNEIFORM SIGN TAB +122F1 ; [.543A.0020.0002] # CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH +122F2 ; [.543B.0020.0002] # CUNEIFORM SIGN TAB SQUARED +122F3 ; [.543C.0020.0002] # CUNEIFORM SIGN TAG +122F4 ; [.543D.0020.0002] # CUNEIFORM SIGN TAG TIMES BI +122F5 ; [.543E.0020.0002] # CUNEIFORM SIGN TAG TIMES GUD +122F6 ; [.543F.0020.0002] # CUNEIFORM SIGN TAG TIMES SHE +122F7 ; [.5440.0020.0002] # CUNEIFORM SIGN TAG TIMES SHU +122F8 ; [.5441.0020.0002] # CUNEIFORM SIGN TAG TIMES TUG2 +122F9 ; [.5442.0020.0002] # CUNEIFORM SIGN TAG TIMES UD +122FA ; [.5443.0020.0002] # CUNEIFORM SIGN TAK4 +122FB ; [.5444.0020.0002] # CUNEIFORM SIGN TAR +122FC ; [.5445.0020.0002] # CUNEIFORM SIGN TE +122FD ; [.5446.0020.0002] # CUNEIFORM SIGN TE GUNU +122FE ; [.5447.0020.0002] # CUNEIFORM SIGN TI +122FF ; [.5448.0020.0002] # CUNEIFORM SIGN TI TENU +12300 ; [.5449.0020.0002] # CUNEIFORM SIGN TIL +12301 ; [.544A.0020.0002] # CUNEIFORM SIGN TIR +12302 ; [.544B.0020.0002] # CUNEIFORM SIGN TIR TIMES TAK4 +12303 ; [.544C.0020.0002] # CUNEIFORM SIGN TIR OVER TIR +12304 ; [.544D.0020.0002] # CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR +12305 ; [.544E.0020.0002] # CUNEIFORM SIGN TU +12306 ; [.544F.0020.0002] # CUNEIFORM SIGN TUG2 +12307 ; [.5450.0020.0002] # CUNEIFORM SIGN TUK +12308 ; [.5451.0020.0002] # CUNEIFORM SIGN TUM +12309 ; [.5452.0020.0002] # CUNEIFORM SIGN TUR +1230A ; [.5453.0020.0002] # CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA +1230B ; [.5454.0020.0002] # CUNEIFORM SIGN U +1230C ; [.5455.0020.0002] # CUNEIFORM SIGN U GUD +1230D ; [.5456.0020.0002] # CUNEIFORM SIGN U U U +1230E ; [.5457.0020.0002] # CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR +1230F ; [.5458.0020.0002] # CUNEIFORM SIGN U OVER U SUR OVER SUR +12310 ; [.5459.0020.0002] # CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED +12311 ; [.545A.0020.0002] # CUNEIFORM SIGN U2 +12312 ; [.545B.0020.0002] # CUNEIFORM SIGN UB +12313 ; [.545C.0020.0002] # CUNEIFORM SIGN UD +12314 ; [.545D.0020.0002] # CUNEIFORM SIGN UD KUSHU2 +12315 ; [.545E.0020.0002] # CUNEIFORM SIGN UD TIMES BAD +12316 ; [.545F.0020.0002] # CUNEIFORM SIGN UD TIMES MI +12317 ; [.5460.0020.0002] # CUNEIFORM SIGN UD TIMES U PLUS U PLUS U +12318 ; [.5461.0020.0002] # CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU +12319 ; [.5462.0020.0002] # CUNEIFORM SIGN UD GUNU +1231A ; [.5463.0020.0002] # CUNEIFORM SIGN UD SHESHIG +1231B ; [.5464.0020.0002] # CUNEIFORM SIGN UD SHESHIG TIMES BAD +1231C ; [.5465.0020.0002] # CUNEIFORM SIGN UDUG +1231D ; [.5466.0020.0002] # CUNEIFORM SIGN UM +1231E ; [.5467.0020.0002] # CUNEIFORM SIGN UM TIMES LAGAB +1231F ; [.5468.0020.0002] # CUNEIFORM SIGN UM TIMES ME PLUS DA +12320 ; [.5469.0020.0002] # CUNEIFORM SIGN UM TIMES SHA3 +12321 ; [.546A.0020.0002] # CUNEIFORM SIGN UM TIMES U +12322 ; [.546B.0020.0002] # CUNEIFORM SIGN UMBIN +12323 ; [.546C.0020.0002] # CUNEIFORM SIGN UMUM +12324 ; [.546D.0020.0002] # CUNEIFORM SIGN UMUM TIMES KASKAL +12325 ; [.546E.0020.0002] # CUNEIFORM SIGN UMUM TIMES PA +12326 ; [.546F.0020.0002] # CUNEIFORM SIGN UN +12327 ; [.5470.0020.0002] # CUNEIFORM SIGN UN GUNU +12328 ; [.5471.0020.0002] # CUNEIFORM SIGN UR +12329 ; [.5472.0020.0002] # CUNEIFORM SIGN UR CROSSING UR +1232A ; [.5473.0020.0002] # CUNEIFORM SIGN UR SHESHIG +1232B ; [.5474.0020.0002] # CUNEIFORM SIGN UR2 +1232C ; [.5475.0020.0002] # CUNEIFORM SIGN UR2 TIMES A PLUS HA +1232D ; [.5476.0020.0002] # CUNEIFORM SIGN UR2 TIMES A PLUS NA +1232E ; [.5477.0020.0002] # CUNEIFORM SIGN UR2 TIMES AL +1232F ; [.5478.0020.0002] # CUNEIFORM SIGN UR2 TIMES HA +12330 ; [.5479.0020.0002] # CUNEIFORM SIGN UR2 TIMES NUN +12331 ; [.547A.0020.0002] # CUNEIFORM SIGN UR2 TIMES U2 +12332 ; [.547B.0020.0002] # CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH +12333 ; [.547C.0020.0002] # CUNEIFORM SIGN UR2 TIMES U2 PLUS BI +12334 ; [.547D.0020.0002] # CUNEIFORM SIGN UR4 +12335 ; [.547E.0020.0002] # CUNEIFORM SIGN URI +12336 ; [.547F.0020.0002] # CUNEIFORM SIGN URI3 +12337 ; [.5480.0020.0002] # CUNEIFORM SIGN URU +12338 ; [.5481.0020.0002] # CUNEIFORM SIGN URU TIMES A +12339 ; [.5482.0020.0002] # CUNEIFORM SIGN URU TIMES ASHGAB +1233A ; [.5483.0020.0002] # CUNEIFORM SIGN URU TIMES BAR +1233B ; [.5484.0020.0002] # CUNEIFORM SIGN URU TIMES DUN +1233C ; [.5485.0020.0002] # CUNEIFORM SIGN URU TIMES GA +1233D ; [.5486.0020.0002] # CUNEIFORM SIGN URU TIMES GAL +1233E ; [.5487.0020.0002] # CUNEIFORM SIGN URU TIMES GAN2 TENU +1233F ; [.5488.0020.0002] # CUNEIFORM SIGN URU TIMES GAR +12340 ; [.5489.0020.0002] # CUNEIFORM SIGN URU TIMES GU +12341 ; [.548A.0020.0002] # CUNEIFORM SIGN URU TIMES HA +12342 ; [.548B.0020.0002] # CUNEIFORM SIGN URU TIMES IGI +12343 ; [.548C.0020.0002] # CUNEIFORM SIGN URU TIMES IM +12344 ; [.548D.0020.0002] # CUNEIFORM SIGN URU TIMES ISH +12345 ; [.548E.0020.0002] # CUNEIFORM SIGN URU TIMES KI +12346 ; [.548F.0020.0002] # CUNEIFORM SIGN URU TIMES LUM +12347 ; [.5490.0020.0002] # CUNEIFORM SIGN URU TIMES MIN +12348 ; [.5491.0020.0002] # CUNEIFORM SIGN URU TIMES PA +12349 ; [.5492.0020.0002] # CUNEIFORM SIGN URU TIMES SHE +1234A ; [.5493.0020.0002] # CUNEIFORM SIGN URU TIMES SIG4 +1234B ; [.5494.0020.0002] # CUNEIFORM SIGN URU TIMES TU +1234C ; [.5495.0020.0002] # CUNEIFORM SIGN URU TIMES U PLUS GUD +1234D ; [.5496.0020.0002] # CUNEIFORM SIGN URU TIMES UD +1234E ; [.5497.0020.0002] # CUNEIFORM SIGN URU TIMES URUDA +1234F ; [.5498.0020.0002] # CUNEIFORM SIGN URUDA +12350 ; [.5499.0020.0002] # CUNEIFORM SIGN URUDA TIMES U +12351 ; [.549A.0020.0002] # CUNEIFORM SIGN USH +12352 ; [.549B.0020.0002] # CUNEIFORM SIGN USH TIMES A +12353 ; [.549C.0020.0002] # CUNEIFORM SIGN USH TIMES KU +12354 ; [.549D.0020.0002] # CUNEIFORM SIGN USH TIMES KUR +12355 ; [.549E.0020.0002] # CUNEIFORM SIGN USH TIMES TAK4 +12356 ; [.549F.0020.0002] # CUNEIFORM SIGN USHX +12357 ; [.54A0.0020.0002] # CUNEIFORM SIGN USH2 +12358 ; [.54A1.0020.0002] # CUNEIFORM SIGN USHUMX +12359 ; [.54A2.0020.0002] # CUNEIFORM SIGN UTUKI +1235A ; [.54A3.0020.0002] # CUNEIFORM SIGN UZ3 +1235B ; [.54A4.0020.0002] # CUNEIFORM SIGN UZ3 TIMES KASKAL +1235C ; [.54A5.0020.0002] # CUNEIFORM SIGN UZU +1235D ; [.54A6.0020.0002] # CUNEIFORM SIGN ZA +1235E ; [.54A7.0020.0002] # CUNEIFORM SIGN ZA TENU +1235F ; [.54A8.0020.0002] # CUNEIFORM SIGN ZA SQUARED TIMES KUR +12360 ; [.54A9.0020.0002] # CUNEIFORM SIGN ZAG +12361 ; [.54AA.0020.0002] # CUNEIFORM SIGN ZAMX +12362 ; [.54AB.0020.0002] # CUNEIFORM SIGN ZE2 +12363 ; [.54AC.0020.0002] # CUNEIFORM SIGN ZI +12364 ; [.54AD.0020.0002] # CUNEIFORM SIGN ZI OVER ZI +12365 ; [.54AE.0020.0002] # CUNEIFORM SIGN ZI3 +12366 ; [.54AF.0020.0002] # CUNEIFORM SIGN ZIB +12367 ; [.54B0.0020.0002] # CUNEIFORM SIGN ZIB KABA TENU +12368 ; [.54B1.0020.0002] # CUNEIFORM SIGN ZIG +12369 ; [.54B2.0020.0002] # CUNEIFORM SIGN ZIZ2 +1236A ; [.54B3.0020.0002] # CUNEIFORM SIGN ZU +1236B ; [.54B4.0020.0002] # CUNEIFORM SIGN ZU5 +1236C ; [.54B5.0020.0002] # CUNEIFORM SIGN ZU5 TIMES A +1236D ; [.54B6.0020.0002] # CUNEIFORM SIGN ZUBUR +1236E ; [.54B7.0020.0002] # CUNEIFORM SIGN ZUM +1236F ; [.54B8.0020.0002] # CUNEIFORM SIGN KAP ELAMITE +12370 ; [.54B9.0020.0002] # CUNEIFORM SIGN AB TIMES NUN +12371 ; [.54BA.0020.0002] # CUNEIFORM SIGN AB2 TIMES A +12372 ; [.54BB.0020.0002] # CUNEIFORM SIGN AMAR TIMES KUG +12373 ; [.54BC.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS MASH +12374 ; [.54BD.0020.0002] # CUNEIFORM SIGN DAG3 +12375 ; [.54BE.0020.0002] # CUNEIFORM SIGN DISH PLUS SHU +12376 ; [.54BF.0020.0002] # CUNEIFORM SIGN DUB TIMES SHE +12377 ; [.54C0.0020.0002] # CUNEIFORM SIGN EZEN TIMES GUD +12378 ; [.54C1.0020.0002] # CUNEIFORM SIGN EZEN TIMES SHE +12379 ; [.54C2.0020.0002] # CUNEIFORM SIGN GA2 TIMES AN PLUS KAK PLUS A +1237A ; [.54C3.0020.0002] # CUNEIFORM SIGN GA2 TIMES ASH2 +1237B ; [.54C4.0020.0002] # CUNEIFORM SIGN GE22 +1237C ; [.54C5.0020.0002] # CUNEIFORM SIGN GIG +1237D ; [.54C6.0020.0002] # CUNEIFORM SIGN HUSH +1237E ; [.54C7.0020.0002] # CUNEIFORM SIGN KA TIMES ANSHE +1237F ; [.54C8.0020.0002] # CUNEIFORM SIGN KA TIMES ASH3 +12380 ; [.54C9.0020.0002] # CUNEIFORM SIGN KA TIMES GISH +12381 ; [.54CA.0020.0002] # CUNEIFORM SIGN KA TIMES GUD +12382 ; [.54CB.0020.0002] # CUNEIFORM SIGN KA TIMES HI TIMES ASH2 +12383 ; [.54CC.0020.0002] # CUNEIFORM SIGN KA TIMES LUM +12384 ; [.54CD.0020.0002] # CUNEIFORM SIGN KA TIMES PA +12385 ; [.54CE.0020.0002] # CUNEIFORM SIGN KA TIMES SHUL +12386 ; [.54CF.0020.0002] # CUNEIFORM SIGN KA TIMES TU +12387 ; [.54D0.0020.0002] # CUNEIFORM SIGN KA TIMES UR2 +12388 ; [.54D1.0020.0002] # CUNEIFORM SIGN LAGAB TIMES GI +12389 ; [.54D2.0020.0002] # CUNEIFORM SIGN LU2 SHESHIG TIMES BAD +1238A ; [.54D3.0020.0002] # CUNEIFORM SIGN LU2 TIMES ESH2 PLUS LAL +1238B ; [.54D4.0020.0002] # CUNEIFORM SIGN LU2 TIMES SHU +1238C ; [.54D5.0020.0002] # CUNEIFORM SIGN MESH +1238D ; [.54D6.0020.0002] # CUNEIFORM SIGN MUSH3 TIMES ZA +1238E ; [.54D7.0020.0002] # CUNEIFORM SIGN NA4 +1238F ; [.54D8.0020.0002] # CUNEIFORM SIGN NIN +12390 ; [.54D9.0020.0002] # CUNEIFORM SIGN NIN9 +12391 ; [.54DA.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES BAL +12392 ; [.54DB.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES GI +12393 ; [.54DC.0020.0002] # CUNEIFORM SIGN NU11 ROTATED NINETY DEGREES +12394 ; [.54DD.0020.0002] # CUNEIFORM SIGN PESH2 ASTERISK +12395 ; [.54DE.0020.0002] # CUNEIFORM SIGN PIR2 +12396 ; [.54DF.0020.0002] # CUNEIFORM SIGN SAG TIMES IGI GUNU +12397 ; [.54E0.0020.0002] # CUNEIFORM SIGN TI2 +12398 ; [.54E1.0020.0002] # CUNEIFORM SIGN UM TIMES ME +12399 ; [.54E2.0020.0002] # CUNEIFORM SIGN U U +12480 ; [.54E3.0020.0002] # CUNEIFORM SIGN AB TIMES NUN TENU +12481 ; [.54E4.0020.0002] # CUNEIFORM SIGN AB TIMES SHU2 +12482 ; [.54E5.0020.0002] # CUNEIFORM SIGN AD TIMES ESH2 +12483 ; [.54E6.0020.0002] # CUNEIFORM SIGN BAD TIMES DISH TENU +12484 ; [.54E7.0020.0002] # CUNEIFORM SIGN BAHAR2 TIMES AB2 +12485 ; [.54E8.0020.0002] # CUNEIFORM SIGN BAHAR2 TIMES NI +12486 ; [.54E9.0020.0002] # CUNEIFORM SIGN BAHAR2 TIMES ZA +12487 ; [.54EA.0020.0002] # CUNEIFORM SIGN BU OVER BU TIMES NA2 +12488 ; [.54EB.0020.0002] # CUNEIFORM SIGN DA TIMES TAK4 +12489 ; [.54EC.0020.0002] # CUNEIFORM SIGN DAG TIMES KUR +1248A ; [.54ED.0020.0002] # CUNEIFORM SIGN DIM TIMES IGI +1248B ; [.54EE.0020.0002] # CUNEIFORM SIGN DIM TIMES U U U +1248C ; [.54EF.0020.0002] # CUNEIFORM SIGN DIM2 TIMES UD +1248D ; [.54F0.0020.0002] # CUNEIFORM SIGN DUG TIMES ANSHE +1248E ; [.54F1.0020.0002] # CUNEIFORM SIGN DUG TIMES ASH +1248F ; [.54F2.0020.0002] # CUNEIFORM SIGN DUG TIMES ASH AT LEFT +12490 ; [.54F3.0020.0002] # CUNEIFORM SIGN DUG TIMES DIN +12491 ; [.54F4.0020.0002] # CUNEIFORM SIGN DUG TIMES DUN +12492 ; [.54F5.0020.0002] # CUNEIFORM SIGN DUG TIMES ERIN2 +12493 ; [.54F6.0020.0002] # CUNEIFORM SIGN DUG TIMES GA +12494 ; [.54F7.0020.0002] # CUNEIFORM SIGN DUG TIMES GI +12495 ; [.54F8.0020.0002] # CUNEIFORM SIGN DUG TIMES GIR2 GUNU +12496 ; [.54F9.0020.0002] # CUNEIFORM SIGN DUG TIMES GISH +12497 ; [.54FA.0020.0002] # CUNEIFORM SIGN DUG TIMES HA +12498 ; [.54FB.0020.0002] # CUNEIFORM SIGN DUG TIMES HI +12499 ; [.54FC.0020.0002] # CUNEIFORM SIGN DUG TIMES IGI GUNU +1249A ; [.54FD.0020.0002] # CUNEIFORM SIGN DUG TIMES KASKAL +1249B ; [.54FE.0020.0002] # CUNEIFORM SIGN DUG TIMES KUR +1249C ; [.54FF.0020.0002] # CUNEIFORM SIGN DUG TIMES KUSHU2 +1249D ; [.5500.0020.0002] # CUNEIFORM SIGN DUG TIMES KUSHU2 PLUS KASKAL +1249E ; [.5501.0020.0002] # CUNEIFORM SIGN DUG TIMES LAK-020 +1249F ; [.5502.0020.0002] # CUNEIFORM SIGN DUG TIMES LAM +124A0 ; [.5503.0020.0002] # CUNEIFORM SIGN DUG TIMES LAM TIMES KUR +124A1 ; [.5504.0020.0002] # CUNEIFORM SIGN DUG TIMES LUH PLUS GISH +124A2 ; [.5505.0020.0002] # CUNEIFORM SIGN DUG TIMES MASH +124A3 ; [.5506.0020.0002] # CUNEIFORM SIGN DUG TIMES MES +124A4 ; [.5507.0020.0002] # CUNEIFORM SIGN DUG TIMES MI +124A5 ; [.5508.0020.0002] # CUNEIFORM SIGN DUG TIMES NI +124A6 ; [.5509.0020.0002] # CUNEIFORM SIGN DUG TIMES PI +124A7 ; [.550A.0020.0002] # CUNEIFORM SIGN DUG TIMES SHE +124A8 ; [.550B.0020.0002] # CUNEIFORM SIGN DUG TIMES SI GUNU +124A9 ; [.550C.0020.0002] # CUNEIFORM SIGN E2 TIMES KUR +124AA ; [.550D.0020.0002] # CUNEIFORM SIGN E2 TIMES PAP +124AB ; [.550E.0020.0002] # CUNEIFORM SIGN ERIN2 X +124AC ; [.550F.0020.0002] # CUNEIFORM SIGN ESH2 CROSSING ESH2 +124AD ; [.5510.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES ASH +124AE ; [.5511.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES HI +124AF ; [.5512.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES IGI GUNU +124B0 ; [.5513.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES LA +124B1 ; [.5514.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES LAL +124B2 ; [.5515.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES ME +124B3 ; [.5516.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES MES +124B4 ; [.5517.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES SU +124B5 ; [.5518.0020.0002] # CUNEIFORM SIGN EZEN TIMES SU +124B6 ; [.5519.0020.0002] # CUNEIFORM SIGN GA2 TIMES BAHAR2 +124B7 ; [.551A.0020.0002] # CUNEIFORM SIGN GA2 TIMES DIM GUNU +124B8 ; [.551B.0020.0002] # CUNEIFORM SIGN GA2 TIMES DUG TIMES IGI GUNU +124B9 ; [.551C.0020.0002] # CUNEIFORM SIGN GA2 TIMES DUG TIMES KASKAL +124BA ; [.551D.0020.0002] # CUNEIFORM SIGN GA2 TIMES EREN +124BB ; [.551E.0020.0002] # CUNEIFORM SIGN GA2 TIMES GA +124BC ; [.551F.0020.0002] # CUNEIFORM SIGN GA2 TIMES GAR PLUS DI +124BD ; [.5520.0020.0002] # CUNEIFORM SIGN GA2 TIMES GAR PLUS NE +124BE ; [.5521.0020.0002] # CUNEIFORM SIGN GA2 TIMES HA PLUS A +124BF ; [.5522.0020.0002] # CUNEIFORM SIGN GA2 TIMES KUSHU2 PLUS KASKAL +124C0 ; [.5523.0020.0002] # CUNEIFORM SIGN GA2 TIMES LAM +124C1 ; [.5524.0020.0002] # CUNEIFORM SIGN GA2 TIMES LAM TIMES KUR +124C2 ; [.5525.0020.0002] # CUNEIFORM SIGN GA2 TIMES LUH +124C3 ; [.5526.0020.0002] # CUNEIFORM SIGN GA2 TIMES MUSH +124C4 ; [.5527.0020.0002] # CUNEIFORM SIGN GA2 TIMES NE +124C5 ; [.5528.0020.0002] # CUNEIFORM SIGN GA2 TIMES NE PLUS E2 +124C6 ; [.5529.0020.0002] # CUNEIFORM SIGN GA2 TIMES NE PLUS GI +124C7 ; [.552A.0020.0002] # CUNEIFORM SIGN GA2 TIMES SHIM +124C8 ; [.552B.0020.0002] # CUNEIFORM SIGN GA2 TIMES ZIZ2 +124C9 ; [.552C.0020.0002] # CUNEIFORM SIGN GABA ROTATED NINETY DEGREES +124CA ; [.552D.0020.0002] # CUNEIFORM SIGN GESHTIN TIMES U +124CB ; [.552E.0020.0002] # CUNEIFORM SIGN GISH TIMES GISH CROSSING GISH +124CC ; [.552F.0020.0002] # CUNEIFORM SIGN GU2 TIMES IGI GUNU +124CD ; [.5530.0020.0002] # CUNEIFORM SIGN GUD PLUS GISH TIMES TAK4 +124CE ; [.5531.0020.0002] # CUNEIFORM SIGN HA TENU GUNU +124CF ; [.5532.0020.0002] # CUNEIFORM SIGN HI TIMES ASH OVER HI TIMES ASH +124D0 ; [.5533.0020.0002] # CUNEIFORM SIGN KA TIMES BU +124D1 ; [.5534.0020.0002] # CUNEIFORM SIGN KA TIMES KA +124D2 ; [.5535.0020.0002] # CUNEIFORM SIGN KA TIMES U U U +124D3 ; [.5536.0020.0002] # CUNEIFORM SIGN KA TIMES UR +124D4 ; [.5537.0020.0002] # CUNEIFORM SIGN LAGAB TIMES ZU OVER ZU +124D5 ; [.5538.0020.0002] # CUNEIFORM SIGN LAK-003 +124D6 ; [.5539.0020.0002] # CUNEIFORM SIGN LAK-021 +124D7 ; [.553A.0020.0002] # CUNEIFORM SIGN LAK-025 +124D8 ; [.553B.0020.0002] # CUNEIFORM SIGN LAK-030 +124D9 ; [.553C.0020.0002] # CUNEIFORM SIGN LAK-050 +124DA ; [.553D.0020.0002] # CUNEIFORM SIGN LAK-051 +124DB ; [.553E.0020.0002] # CUNEIFORM SIGN LAK-062 +124DC ; [.553F.0020.0002] # CUNEIFORM SIGN LAK-079 OVER LAK-079 GUNU +124DD ; [.5540.0020.0002] # CUNEIFORM SIGN LAK-080 +124DE ; [.5541.0020.0002] # CUNEIFORM SIGN LAK-081 OVER LAK-081 +124DF ; [.5542.0020.0002] # CUNEIFORM SIGN LAK-092 +124E0 ; [.5543.0020.0002] # CUNEIFORM SIGN LAK-130 +124E1 ; [.5544.0020.0002] # CUNEIFORM SIGN LAK-142 +124E2 ; [.5545.0020.0002] # CUNEIFORM SIGN LAK-210 +124E3 ; [.5546.0020.0002] # CUNEIFORM SIGN LAK-219 +124E4 ; [.5547.0020.0002] # CUNEIFORM SIGN LAK-220 +124E5 ; [.5548.0020.0002] # CUNEIFORM SIGN LAK-225 +124E6 ; [.5549.0020.0002] # CUNEIFORM SIGN LAK-228 +124E7 ; [.554A.0020.0002] # CUNEIFORM SIGN LAK-238 +124E8 ; [.554B.0020.0002] # CUNEIFORM SIGN LAK-265 +124E9 ; [.554C.0020.0002] # CUNEIFORM SIGN LAK-266 +124EA ; [.554D.0020.0002] # CUNEIFORM SIGN LAK-343 +124EB ; [.554E.0020.0002] # CUNEIFORM SIGN LAK-347 +124EC ; [.554F.0020.0002] # CUNEIFORM SIGN LAK-348 +124ED ; [.5550.0020.0002] # CUNEIFORM SIGN LAK-383 +124EE ; [.5551.0020.0002] # CUNEIFORM SIGN LAK-384 +124EF ; [.5552.0020.0002] # CUNEIFORM SIGN LAK-390 +124F0 ; [.5553.0020.0002] # CUNEIFORM SIGN LAK-441 +124F1 ; [.5554.0020.0002] # CUNEIFORM SIGN LAK-449 +124F2 ; [.5555.0020.0002] # CUNEIFORM SIGN LAK-449 TIMES GU +124F3 ; [.5556.0020.0002] # CUNEIFORM SIGN LAK-449 TIMES IGI +124F4 ; [.5557.0020.0002] # CUNEIFORM SIGN LAK-449 TIMES PAP PLUS LU3 +124F5 ; [.5558.0020.0002] # CUNEIFORM SIGN LAK-449 TIMES PAP PLUS PAP PLUS LU3 +124F6 ; [.5559.0020.0002] # CUNEIFORM SIGN LAK-449 TIMES U2 PLUS BA +124F7 ; [.555A.0020.0002] # CUNEIFORM SIGN LAK-450 +124F8 ; [.555B.0020.0002] # CUNEIFORM SIGN LAK-457 +124F9 ; [.555C.0020.0002] # CUNEIFORM SIGN LAK-470 +124FA ; [.555D.0020.0002] # CUNEIFORM SIGN LAK-483 +124FB ; [.555E.0020.0002] # CUNEIFORM SIGN LAK-490 +124FC ; [.555F.0020.0002] # CUNEIFORM SIGN LAK-492 +124FD ; [.5560.0020.0002] # CUNEIFORM SIGN LAK-493 +124FE ; [.5561.0020.0002] # CUNEIFORM SIGN LAK-495 +124FF ; [.5562.0020.0002] # CUNEIFORM SIGN LAK-550 +12500 ; [.5563.0020.0002] # CUNEIFORM SIGN LAK-608 +12501 ; [.5564.0020.0002] # CUNEIFORM SIGN LAK-617 +12502 ; [.5565.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES ASH +12503 ; [.5566.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES BAD +12504 ; [.5567.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES DUN3 GUNU GUNU +12505 ; [.5568.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES KU3 +12506 ; [.5569.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES LA +12507 ; [.556A.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES TAR +12508 ; [.556B.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES TE +12509 ; [.556C.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES U2 +1250A ; [.556D.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES UD +1250B ; [.556E.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES URUDA +1250C ; [.556F.0020.0002] # CUNEIFORM SIGN LAK-636 +1250D ; [.5570.0020.0002] # CUNEIFORM SIGN LAK-648 +1250E ; [.5571.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES DUB +1250F ; [.5572.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES GA +12510 ; [.5573.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES IGI +12511 ; [.5574.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES IGI GUNU +12512 ; [.5575.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES NI +12513 ; [.5576.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES PAP PLUS PAP PLUS LU3 +12514 ; [.5577.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES SHESH PLUS KI +12515 ; [.5578.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES UD +12516 ; [.5579.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES URUDA +12517 ; [.557A.0020.0002] # CUNEIFORM SIGN LAK-724 +12518 ; [.557B.0020.0002] # CUNEIFORM SIGN LAK-749 +12519 ; [.557C.0020.0002] # CUNEIFORM SIGN LU2 GUNU TIMES ASH +1251A ; [.557D.0020.0002] # CUNEIFORM SIGN LU2 TIMES DISH +1251B ; [.557E.0020.0002] # CUNEIFORM SIGN LU2 TIMES HAL +1251C ; [.557F.0020.0002] # CUNEIFORM SIGN LU2 TIMES PAP +1251D ; [.5580.0020.0002] # CUNEIFORM SIGN LU2 TIMES PAP PLUS PAP PLUS LU3 +1251E ; [.5581.0020.0002] # CUNEIFORM SIGN LU2 TIMES TAK4 +1251F ; [.5582.0020.0002] # CUNEIFORM SIGN MI PLUS ZA7 +12520 ; [.5583.0020.0002] # CUNEIFORM SIGN MUSH OVER MUSH TIMES GA +12521 ; [.5584.0020.0002] # CUNEIFORM SIGN MUSH OVER MUSH TIMES KAK +12522 ; [.5585.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES DIM GUNU +12523 ; [.5586.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES GISH +12524 ; [.5587.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES GUL +12525 ; [.5588.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES HI +12526 ; [.5589.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES KESH2 +12527 ; [.558A.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES LAK-050 +12528 ; [.558B.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES MASH +12529 ; [.558C.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES PAP PLUS PAP +1252A ; [.558D.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES U +1252B ; [.558E.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES U PLUS U +1252C ; [.558F.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES URUDA +1252D ; [.5590.0020.0002] # CUNEIFORM SIGN SAG GUNU TIMES HA +1252E ; [.5591.0020.0002] # CUNEIFORM SIGN SAG TIMES EN +1252F ; [.5592.0020.0002] # CUNEIFORM SIGN SAG TIMES SHE AT LEFT +12530 ; [.5593.0020.0002] # CUNEIFORM SIGN SAG TIMES TAK4 +12531 ; [.5594.0020.0002] # CUNEIFORM SIGN SHA6 TENU +12532 ; [.5595.0020.0002] # CUNEIFORM SIGN SHE OVER SHE +12533 ; [.5596.0020.0002] # CUNEIFORM SIGN SHE PLUS HUB2 +12534 ; [.5597.0020.0002] # CUNEIFORM SIGN SHE PLUS NAM2 +12535 ; [.5598.0020.0002] # CUNEIFORM SIGN SHE PLUS SAR +12536 ; [.5599.0020.0002] # CUNEIFORM SIGN SHU2 PLUS DUG TIMES NI +12537 ; [.559A.0020.0002] # CUNEIFORM SIGN SHU2 PLUS E2 TIMES AN +12538 ; [.559B.0020.0002] # CUNEIFORM SIGN SI TIMES TAK4 +12539 ; [.559C.0020.0002] # CUNEIFORM SIGN TAK4 PLUS SAG +1253A ; [.559D.0020.0002] # CUNEIFORM SIGN TUM TIMES GAN2 TENU +1253B ; [.559E.0020.0002] # CUNEIFORM SIGN TUM TIMES THREE DISH +1253C ; [.559F.0020.0002] # CUNEIFORM SIGN UR2 INVERTED +1253D ; [.55A0.0020.0002] # CUNEIFORM SIGN UR2 TIMES UD +1253E ; [.55A1.0020.0002] # CUNEIFORM SIGN URU TIMES DARA3 +1253F ; [.55A2.0020.0002] # CUNEIFORM SIGN URU TIMES LAK-668 +12540 ; [.55A3.0020.0002] # CUNEIFORM SIGN URU TIMES LU3 +12541 ; [.55A4.0020.0002] # CUNEIFORM SIGN ZA7 +12542 ; [.55A5.0020.0002] # CUNEIFORM SIGN ZU OVER ZU PLUS SAR +12543 ; [.55A6.0020.0002] # CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU +13000 ; [.55A7.0020.0002] # EGYPTIAN HIEROGLYPH A001 +13001 ; [.55A8.0020.0002] # EGYPTIAN HIEROGLYPH A002 +13002 ; [.55A9.0020.0002] # EGYPTIAN HIEROGLYPH A003 +13003 ; [.55AA.0020.0002] # EGYPTIAN HIEROGLYPH A004 +13004 ; [.55AB.0020.0002] # EGYPTIAN HIEROGLYPH A005 +13005 ; [.55AC.0020.0002] # EGYPTIAN HIEROGLYPH A005A +13006 ; [.55AD.0020.0002] # EGYPTIAN HIEROGLYPH A006 +13007 ; [.55AE.0020.0002] # EGYPTIAN HIEROGLYPH A006A +13008 ; [.55AF.0020.0002] # EGYPTIAN HIEROGLYPH A006B +13009 ; [.55B0.0020.0002] # EGYPTIAN HIEROGLYPH A007 +1300A ; [.55B1.0020.0002] # EGYPTIAN HIEROGLYPH A008 +1300B ; [.55B2.0020.0002] # EGYPTIAN HIEROGLYPH A009 +1300C ; [.55B3.0020.0002] # EGYPTIAN HIEROGLYPH A010 +1300D ; [.55B4.0020.0002] # EGYPTIAN HIEROGLYPH A011 +1300E ; [.55B5.0020.0002] # EGYPTIAN HIEROGLYPH A012 +1300F ; [.55B6.0020.0002] # EGYPTIAN HIEROGLYPH A013 +13010 ; [.55B7.0020.0002] # EGYPTIAN HIEROGLYPH A014 +13011 ; [.55B8.0020.0002] # EGYPTIAN HIEROGLYPH A014A +13012 ; [.55B9.0020.0002] # EGYPTIAN HIEROGLYPH A015 +13013 ; [.55BA.0020.0002] # EGYPTIAN HIEROGLYPH A016 +13014 ; [.55BB.0020.0002] # EGYPTIAN HIEROGLYPH A017 +13015 ; [.55BC.0020.0002] # EGYPTIAN HIEROGLYPH A017A +13016 ; [.55BD.0020.0002] # EGYPTIAN HIEROGLYPH A018 +13017 ; [.55BE.0020.0002] # EGYPTIAN HIEROGLYPH A019 +13018 ; [.55BF.0020.0002] # EGYPTIAN HIEROGLYPH A020 +13019 ; [.55C0.0020.0002] # EGYPTIAN HIEROGLYPH A021 +1301A ; [.55C1.0020.0002] # EGYPTIAN HIEROGLYPH A022 +1301B ; [.55C2.0020.0002] # EGYPTIAN HIEROGLYPH A023 +1301C ; [.55C3.0020.0002] # EGYPTIAN HIEROGLYPH A024 +1301D ; [.55C4.0020.0002] # EGYPTIAN HIEROGLYPH A025 +1301E ; [.55C5.0020.0002] # EGYPTIAN HIEROGLYPH A026 +1301F ; [.55C6.0020.0002] # EGYPTIAN HIEROGLYPH A027 +13020 ; [.55C7.0020.0002] # EGYPTIAN HIEROGLYPH A028 +13021 ; [.55C8.0020.0002] # EGYPTIAN HIEROGLYPH A029 +13022 ; [.55C9.0020.0002] # EGYPTIAN HIEROGLYPH A030 +13023 ; [.55CA.0020.0002] # EGYPTIAN HIEROGLYPH A031 +13024 ; [.55CB.0020.0002] # EGYPTIAN HIEROGLYPH A032 +13025 ; [.55CC.0020.0002] # EGYPTIAN HIEROGLYPH A032A +13026 ; [.55CD.0020.0002] # EGYPTIAN HIEROGLYPH A033 +13027 ; [.55CE.0020.0002] # EGYPTIAN HIEROGLYPH A034 +13028 ; [.55CF.0020.0002] # EGYPTIAN HIEROGLYPH A035 +13029 ; [.55D0.0020.0002] # EGYPTIAN HIEROGLYPH A036 +1302A ; [.55D1.0020.0002] # EGYPTIAN HIEROGLYPH A037 +1302B ; [.55D2.0020.0002] # EGYPTIAN HIEROGLYPH A038 +1302C ; [.55D3.0020.0002] # EGYPTIAN HIEROGLYPH A039 +1302D ; [.55D4.0020.0002] # EGYPTIAN HIEROGLYPH A040 +1302E ; [.55D5.0020.0002] # EGYPTIAN HIEROGLYPH A040A +1302F ; [.55D6.0020.0002] # EGYPTIAN HIEROGLYPH A041 +13030 ; [.55D7.0020.0002] # EGYPTIAN HIEROGLYPH A042 +13031 ; [.55D8.0020.0002] # EGYPTIAN HIEROGLYPH A042A +13032 ; [.55D9.0020.0002] # EGYPTIAN HIEROGLYPH A043 +13033 ; [.55DA.0020.0002] # EGYPTIAN HIEROGLYPH A043A +13034 ; [.55DB.0020.0002] # EGYPTIAN HIEROGLYPH A044 +13035 ; [.55DC.0020.0002] # EGYPTIAN HIEROGLYPH A045 +13036 ; [.55DD.0020.0002] # EGYPTIAN HIEROGLYPH A045A +13037 ; [.55DE.0020.0002] # EGYPTIAN HIEROGLYPH A046 +13038 ; [.55DF.0020.0002] # EGYPTIAN HIEROGLYPH A047 +13039 ; [.55E0.0020.0002] # EGYPTIAN HIEROGLYPH A048 +1303A ; [.55E1.0020.0002] # EGYPTIAN HIEROGLYPH A049 +1303B ; [.55E2.0020.0002] # EGYPTIAN HIEROGLYPH A050 +1303C ; [.55E3.0020.0002] # EGYPTIAN HIEROGLYPH A051 +1303D ; [.55E4.0020.0002] # EGYPTIAN HIEROGLYPH A052 +1303E ; [.55E5.0020.0002] # EGYPTIAN HIEROGLYPH A053 +1303F ; [.55E6.0020.0002] # EGYPTIAN HIEROGLYPH A054 +13040 ; [.55E7.0020.0002] # EGYPTIAN HIEROGLYPH A055 +13041 ; [.55E8.0020.0002] # EGYPTIAN HIEROGLYPH A056 +13042 ; [.55E9.0020.0002] # EGYPTIAN HIEROGLYPH A057 +13043 ; [.55EA.0020.0002] # EGYPTIAN HIEROGLYPH A058 +13044 ; [.55EB.0020.0002] # EGYPTIAN HIEROGLYPH A059 +13045 ; [.55EC.0020.0002] # EGYPTIAN HIEROGLYPH A060 +13046 ; [.55ED.0020.0002] # EGYPTIAN HIEROGLYPH A061 +13047 ; [.55EE.0020.0002] # EGYPTIAN HIEROGLYPH A062 +13048 ; [.55EF.0020.0002] # EGYPTIAN HIEROGLYPH A063 +13049 ; [.55F0.0020.0002] # EGYPTIAN HIEROGLYPH A064 +1304A ; [.55F1.0020.0002] # EGYPTIAN HIEROGLYPH A065 +1304B ; [.55F2.0020.0002] # EGYPTIAN HIEROGLYPH A066 +1304C ; [.55F3.0020.0002] # EGYPTIAN HIEROGLYPH A067 +1304D ; [.55F4.0020.0002] # EGYPTIAN HIEROGLYPH A068 +1304E ; [.55F5.0020.0002] # EGYPTIAN HIEROGLYPH A069 +1304F ; [.55F6.0020.0002] # EGYPTIAN HIEROGLYPH A070 +13050 ; [.55F7.0020.0002] # EGYPTIAN HIEROGLYPH B001 +13051 ; [.55F8.0020.0002] # EGYPTIAN HIEROGLYPH B002 +13052 ; [.55F9.0020.0002] # EGYPTIAN HIEROGLYPH B003 +13053 ; [.55FA.0020.0002] # EGYPTIAN HIEROGLYPH B004 +13054 ; [.55FB.0020.0002] # EGYPTIAN HIEROGLYPH B005 +13055 ; [.55FC.0020.0002] # EGYPTIAN HIEROGLYPH B005A +13056 ; [.55FD.0020.0002] # EGYPTIAN HIEROGLYPH B006 +13057 ; [.55FE.0020.0002] # EGYPTIAN HIEROGLYPH B007 +13058 ; [.55FF.0020.0002] # EGYPTIAN HIEROGLYPH B008 +13059 ; [.5600.0020.0002] # EGYPTIAN HIEROGLYPH B009 +1305A ; [.5601.0020.0002] # EGYPTIAN HIEROGLYPH C001 +1305B ; [.5602.0020.0002] # EGYPTIAN HIEROGLYPH C002 +1305C ; [.5603.0020.0002] # EGYPTIAN HIEROGLYPH C002A +1305D ; [.5604.0020.0002] # EGYPTIAN HIEROGLYPH C002B +1305E ; [.5605.0020.0002] # EGYPTIAN HIEROGLYPH C002C +1305F ; [.5606.0020.0002] # EGYPTIAN HIEROGLYPH C003 +13060 ; [.5607.0020.0002] # EGYPTIAN HIEROGLYPH C004 +13061 ; [.5608.0020.0002] # EGYPTIAN HIEROGLYPH C005 +13062 ; [.5609.0020.0002] # EGYPTIAN HIEROGLYPH C006 +13063 ; [.560A.0020.0002] # EGYPTIAN HIEROGLYPH C007 +13064 ; [.560B.0020.0002] # EGYPTIAN HIEROGLYPH C008 +13065 ; [.560C.0020.0002] # EGYPTIAN HIEROGLYPH C009 +13066 ; [.560D.0020.0002] # EGYPTIAN HIEROGLYPH C010 +13067 ; [.560E.0020.0002] # EGYPTIAN HIEROGLYPH C010A +13068 ; [.560F.0020.0002] # EGYPTIAN HIEROGLYPH C011 +13069 ; [.5610.0020.0002] # EGYPTIAN HIEROGLYPH C012 +1306A ; [.5611.0020.0002] # EGYPTIAN HIEROGLYPH C013 +1306B ; [.5612.0020.0002] # EGYPTIAN HIEROGLYPH C014 +1306C ; [.5613.0020.0002] # EGYPTIAN HIEROGLYPH C015 +1306D ; [.5614.0020.0002] # EGYPTIAN HIEROGLYPH C016 +1306E ; [.5615.0020.0002] # EGYPTIAN HIEROGLYPH C017 +1306F ; [.5616.0020.0002] # EGYPTIAN HIEROGLYPH C018 +13070 ; [.5617.0020.0002] # EGYPTIAN HIEROGLYPH C019 +13071 ; [.5618.0020.0002] # EGYPTIAN HIEROGLYPH C020 +13072 ; [.5619.0020.0002] # EGYPTIAN HIEROGLYPH C021 +13073 ; [.561A.0020.0002] # EGYPTIAN HIEROGLYPH C022 +13074 ; [.561B.0020.0002] # EGYPTIAN HIEROGLYPH C023 +13075 ; [.561C.0020.0002] # EGYPTIAN HIEROGLYPH C024 +13076 ; [.561D.0020.0002] # EGYPTIAN HIEROGLYPH D001 +13077 ; [.561E.0020.0002] # EGYPTIAN HIEROGLYPH D002 +13078 ; [.561F.0020.0002] # EGYPTIAN HIEROGLYPH D003 +13079 ; [.5620.0020.0002] # EGYPTIAN HIEROGLYPH D004 +1307A ; [.5621.0020.0002] # EGYPTIAN HIEROGLYPH D005 +1307B ; [.5622.0020.0002] # EGYPTIAN HIEROGLYPH D006 +1307C ; [.5623.0020.0002] # EGYPTIAN HIEROGLYPH D007 +1307D ; [.5624.0020.0002] # EGYPTIAN HIEROGLYPH D008 +1307E ; [.5625.0020.0002] # EGYPTIAN HIEROGLYPH D008A +1307F ; [.5626.0020.0002] # EGYPTIAN HIEROGLYPH D009 +13080 ; [.5627.0020.0002] # EGYPTIAN HIEROGLYPH D010 +13081 ; [.5628.0020.0002] # EGYPTIAN HIEROGLYPH D011 +13082 ; [.5629.0020.0002] # EGYPTIAN HIEROGLYPH D012 +13083 ; [.562A.0020.0002] # EGYPTIAN HIEROGLYPH D013 +13084 ; [.562B.0020.0002] # EGYPTIAN HIEROGLYPH D014 +13085 ; [.562C.0020.0002] # EGYPTIAN HIEROGLYPH D015 +13086 ; [.562D.0020.0002] # EGYPTIAN HIEROGLYPH D016 +13087 ; [.562E.0020.0002] # EGYPTIAN HIEROGLYPH D017 +13088 ; [.562F.0020.0002] # EGYPTIAN HIEROGLYPH D018 +13089 ; [.5630.0020.0002] # EGYPTIAN HIEROGLYPH D019 +1308A ; [.5631.0020.0002] # EGYPTIAN HIEROGLYPH D020 +1308B ; [.5632.0020.0002] # EGYPTIAN HIEROGLYPH D021 +1308C ; [.5633.0020.0002] # EGYPTIAN HIEROGLYPH D022 +1308D ; [.5634.0020.0002] # EGYPTIAN HIEROGLYPH D023 +1308E ; [.5635.0020.0002] # EGYPTIAN HIEROGLYPH D024 +1308F ; [.5636.0020.0002] # EGYPTIAN HIEROGLYPH D025 +13090 ; [.5637.0020.0002] # EGYPTIAN HIEROGLYPH D026 +13091 ; [.5638.0020.0002] # EGYPTIAN HIEROGLYPH D027 +13092 ; [.5639.0020.0002] # EGYPTIAN HIEROGLYPH D027A +13093 ; [.563A.0020.0002] # EGYPTIAN HIEROGLYPH D028 +13094 ; [.563B.0020.0002] # EGYPTIAN HIEROGLYPH D029 +13095 ; [.563C.0020.0002] # EGYPTIAN HIEROGLYPH D030 +13096 ; [.563D.0020.0002] # EGYPTIAN HIEROGLYPH D031 +13097 ; [.563E.0020.0002] # EGYPTIAN HIEROGLYPH D031A +13098 ; [.563F.0020.0002] # EGYPTIAN HIEROGLYPH D032 +13099 ; [.5640.0020.0002] # EGYPTIAN HIEROGLYPH D033 +1309A ; [.5641.0020.0002] # EGYPTIAN HIEROGLYPH D034 +1309B ; [.5642.0020.0002] # EGYPTIAN HIEROGLYPH D034A +1309C ; [.5643.0020.0002] # EGYPTIAN HIEROGLYPH D035 +1309D ; [.5644.0020.0002] # EGYPTIAN HIEROGLYPH D036 +1309E ; [.5645.0020.0002] # EGYPTIAN HIEROGLYPH D037 +1309F ; [.5646.0020.0002] # EGYPTIAN HIEROGLYPH D038 +130A0 ; [.5647.0020.0002] # EGYPTIAN HIEROGLYPH D039 +130A1 ; [.5648.0020.0002] # EGYPTIAN HIEROGLYPH D040 +130A2 ; [.5649.0020.0002] # EGYPTIAN HIEROGLYPH D041 +130A3 ; [.564A.0020.0002] # EGYPTIAN HIEROGLYPH D042 +130A4 ; [.564B.0020.0002] # EGYPTIAN HIEROGLYPH D043 +130A5 ; [.564C.0020.0002] # EGYPTIAN HIEROGLYPH D044 +130A6 ; [.564D.0020.0002] # EGYPTIAN HIEROGLYPH D045 +130A7 ; [.564E.0020.0002] # EGYPTIAN HIEROGLYPH D046 +130A8 ; [.564F.0020.0002] # EGYPTIAN HIEROGLYPH D046A +130A9 ; [.5650.0020.0002] # EGYPTIAN HIEROGLYPH D047 +130AA ; [.5651.0020.0002] # EGYPTIAN HIEROGLYPH D048 +130AB ; [.5652.0020.0002] # EGYPTIAN HIEROGLYPH D048A +130AC ; [.5653.0020.0002] # EGYPTIAN HIEROGLYPH D049 +130AD ; [.5654.0020.0002] # EGYPTIAN HIEROGLYPH D050 +130AE ; [.5655.0020.0002] # EGYPTIAN HIEROGLYPH D050A +130AF ; [.5656.0020.0002] # EGYPTIAN HIEROGLYPH D050B +130B0 ; [.5657.0020.0002] # EGYPTIAN HIEROGLYPH D050C +130B1 ; [.5658.0020.0002] # EGYPTIAN HIEROGLYPH D050D +130B2 ; [.5659.0020.0002] # EGYPTIAN HIEROGLYPH D050E +130B3 ; [.565A.0020.0002] # EGYPTIAN HIEROGLYPH D050F +130B4 ; [.565B.0020.0002] # EGYPTIAN HIEROGLYPH D050G +130B5 ; [.565C.0020.0002] # EGYPTIAN HIEROGLYPH D050H +130B6 ; [.565D.0020.0002] # EGYPTIAN HIEROGLYPH D050I +130B7 ; [.565E.0020.0002] # EGYPTIAN HIEROGLYPH D051 +130B8 ; [.565F.0020.0002] # EGYPTIAN HIEROGLYPH D052 +130B9 ; [.5660.0020.0002] # EGYPTIAN HIEROGLYPH D052A +130BA ; [.5661.0020.0002] # EGYPTIAN HIEROGLYPH D053 +130BB ; [.5662.0020.0002] # EGYPTIAN HIEROGLYPH D054 +130BC ; [.5663.0020.0002] # EGYPTIAN HIEROGLYPH D054A +130BD ; [.5664.0020.0002] # EGYPTIAN HIEROGLYPH D055 +130BE ; [.5665.0020.0002] # EGYPTIAN HIEROGLYPH D056 +130BF ; [.5666.0020.0002] # EGYPTIAN HIEROGLYPH D057 +130C0 ; [.5667.0020.0002] # EGYPTIAN HIEROGLYPH D058 +130C1 ; [.5668.0020.0002] # EGYPTIAN HIEROGLYPH D059 +130C2 ; [.5669.0020.0002] # EGYPTIAN HIEROGLYPH D060 +130C3 ; [.566A.0020.0002] # EGYPTIAN HIEROGLYPH D061 +130C4 ; [.566B.0020.0002] # EGYPTIAN HIEROGLYPH D062 +130C5 ; [.566C.0020.0002] # EGYPTIAN HIEROGLYPH D063 +130C6 ; [.566D.0020.0002] # EGYPTIAN HIEROGLYPH D064 +130C7 ; [.566E.0020.0002] # EGYPTIAN HIEROGLYPH D065 +130C8 ; [.566F.0020.0002] # EGYPTIAN HIEROGLYPH D066 +130C9 ; [.5670.0020.0002] # EGYPTIAN HIEROGLYPH D067 +130CA ; [.5671.0020.0002] # EGYPTIAN HIEROGLYPH D067A +130CB ; [.5672.0020.0002] # EGYPTIAN HIEROGLYPH D067B +130CC ; [.5673.0020.0002] # EGYPTIAN HIEROGLYPH D067C +130CD ; [.5674.0020.0002] # EGYPTIAN HIEROGLYPH D067D +130CE ; [.5675.0020.0002] # EGYPTIAN HIEROGLYPH D067E +130CF ; [.5676.0020.0002] # EGYPTIAN HIEROGLYPH D067F +130D0 ; [.5677.0020.0002] # EGYPTIAN HIEROGLYPH D067G +130D1 ; [.5678.0020.0002] # EGYPTIAN HIEROGLYPH D067H +130D2 ; [.5679.0020.0002] # EGYPTIAN HIEROGLYPH E001 +130D3 ; [.567A.0020.0002] # EGYPTIAN HIEROGLYPH E002 +130D4 ; [.567B.0020.0002] # EGYPTIAN HIEROGLYPH E003 +130D5 ; [.567C.0020.0002] # EGYPTIAN HIEROGLYPH E004 +130D6 ; [.567D.0020.0002] # EGYPTIAN HIEROGLYPH E005 +130D7 ; [.567E.0020.0002] # EGYPTIAN HIEROGLYPH E006 +130D8 ; [.567F.0020.0002] # EGYPTIAN HIEROGLYPH E007 +130D9 ; [.5680.0020.0002] # EGYPTIAN HIEROGLYPH E008 +130DA ; [.5681.0020.0002] # EGYPTIAN HIEROGLYPH E008A +130DB ; [.5682.0020.0002] # EGYPTIAN HIEROGLYPH E009 +130DC ; [.5683.0020.0002] # EGYPTIAN HIEROGLYPH E009A +130DD ; [.5684.0020.0002] # EGYPTIAN HIEROGLYPH E010 +130DE ; [.5685.0020.0002] # EGYPTIAN HIEROGLYPH E011 +130DF ; [.5686.0020.0002] # EGYPTIAN HIEROGLYPH E012 +130E0 ; [.5687.0020.0002] # EGYPTIAN HIEROGLYPH E013 +130E1 ; [.5688.0020.0002] # EGYPTIAN HIEROGLYPH E014 +130E2 ; [.5689.0020.0002] # EGYPTIAN HIEROGLYPH E015 +130E3 ; [.568A.0020.0002] # EGYPTIAN HIEROGLYPH E016 +130E4 ; [.568B.0020.0002] # EGYPTIAN HIEROGLYPH E016A +130E5 ; [.568C.0020.0002] # EGYPTIAN HIEROGLYPH E017 +130E6 ; [.568D.0020.0002] # EGYPTIAN HIEROGLYPH E017A +130E7 ; [.568E.0020.0002] # EGYPTIAN HIEROGLYPH E018 +130E8 ; [.568F.0020.0002] # EGYPTIAN HIEROGLYPH E019 +130E9 ; [.5690.0020.0002] # EGYPTIAN HIEROGLYPH E020 +130EA ; [.5691.0020.0002] # EGYPTIAN HIEROGLYPH E020A +130EB ; [.5692.0020.0002] # EGYPTIAN HIEROGLYPH E021 +130EC ; [.5693.0020.0002] # EGYPTIAN HIEROGLYPH E022 +130ED ; [.5694.0020.0002] # EGYPTIAN HIEROGLYPH E023 +130EE ; [.5695.0020.0002] # EGYPTIAN HIEROGLYPH E024 +130EF ; [.5696.0020.0002] # EGYPTIAN HIEROGLYPH E025 +130F0 ; [.5697.0020.0002] # EGYPTIAN HIEROGLYPH E026 +130F1 ; [.5698.0020.0002] # EGYPTIAN HIEROGLYPH E027 +130F2 ; [.5699.0020.0002] # EGYPTIAN HIEROGLYPH E028 +130F3 ; [.569A.0020.0002] # EGYPTIAN HIEROGLYPH E028A +130F4 ; [.569B.0020.0002] # EGYPTIAN HIEROGLYPH E029 +130F5 ; [.569C.0020.0002] # EGYPTIAN HIEROGLYPH E030 +130F6 ; [.569D.0020.0002] # EGYPTIAN HIEROGLYPH E031 +130F7 ; [.569E.0020.0002] # EGYPTIAN HIEROGLYPH E032 +130F8 ; [.569F.0020.0002] # EGYPTIAN HIEROGLYPH E033 +130F9 ; [.56A0.0020.0002] # EGYPTIAN HIEROGLYPH E034 +130FA ; [.56A1.0020.0002] # EGYPTIAN HIEROGLYPH E034A +130FB ; [.56A2.0020.0002] # EGYPTIAN HIEROGLYPH E036 +130FC ; [.56A3.0020.0002] # EGYPTIAN HIEROGLYPH E037 +130FD ; [.56A4.0020.0002] # EGYPTIAN HIEROGLYPH E038 +130FE ; [.56A5.0020.0002] # EGYPTIAN HIEROGLYPH F001 +130FF ; [.56A6.0020.0002] # EGYPTIAN HIEROGLYPH F001A +13100 ; [.56A7.0020.0002] # EGYPTIAN HIEROGLYPH F002 +13101 ; [.56A8.0020.0002] # EGYPTIAN HIEROGLYPH F003 +13102 ; [.56A9.0020.0002] # EGYPTIAN HIEROGLYPH F004 +13103 ; [.56AA.0020.0002] # EGYPTIAN HIEROGLYPH F005 +13104 ; [.56AB.0020.0002] # EGYPTIAN HIEROGLYPH F006 +13105 ; [.56AC.0020.0002] # EGYPTIAN HIEROGLYPH F007 +13106 ; [.56AD.0020.0002] # EGYPTIAN HIEROGLYPH F008 +13107 ; [.56AE.0020.0002] # EGYPTIAN HIEROGLYPH F009 +13108 ; [.56AF.0020.0002] # EGYPTIAN HIEROGLYPH F010 +13109 ; [.56B0.0020.0002] # EGYPTIAN HIEROGLYPH F011 +1310A ; [.56B1.0020.0002] # EGYPTIAN HIEROGLYPH F012 +1310B ; [.56B2.0020.0002] # EGYPTIAN HIEROGLYPH F013 +1310C ; [.56B3.0020.0002] # EGYPTIAN HIEROGLYPH F013A +1310D ; [.56B4.0020.0002] # EGYPTIAN HIEROGLYPH F014 +1310E ; [.56B5.0020.0002] # EGYPTIAN HIEROGLYPH F015 +1310F ; [.56B6.0020.0002] # EGYPTIAN HIEROGLYPH F016 +13110 ; [.56B7.0020.0002] # EGYPTIAN HIEROGLYPH F017 +13111 ; [.56B8.0020.0002] # EGYPTIAN HIEROGLYPH F018 +13112 ; [.56B9.0020.0002] # EGYPTIAN HIEROGLYPH F019 +13113 ; [.56BA.0020.0002] # EGYPTIAN HIEROGLYPH F020 +13114 ; [.56BB.0020.0002] # EGYPTIAN HIEROGLYPH F021 +13115 ; [.56BC.0020.0002] # EGYPTIAN HIEROGLYPH F021A +13116 ; [.56BD.0020.0002] # EGYPTIAN HIEROGLYPH F022 +13117 ; [.56BE.0020.0002] # EGYPTIAN HIEROGLYPH F023 +13118 ; [.56BF.0020.0002] # EGYPTIAN HIEROGLYPH F024 +13119 ; [.56C0.0020.0002] # EGYPTIAN HIEROGLYPH F025 +1311A ; [.56C1.0020.0002] # EGYPTIAN HIEROGLYPH F026 +1311B ; [.56C2.0020.0002] # EGYPTIAN HIEROGLYPH F027 +1311C ; [.56C3.0020.0002] # EGYPTIAN HIEROGLYPH F028 +1311D ; [.56C4.0020.0002] # EGYPTIAN HIEROGLYPH F029 +1311E ; [.56C5.0020.0002] # EGYPTIAN HIEROGLYPH F030 +1311F ; [.56C6.0020.0002] # EGYPTIAN HIEROGLYPH F031 +13120 ; [.56C7.0020.0002] # EGYPTIAN HIEROGLYPH F031A +13121 ; [.56C8.0020.0002] # EGYPTIAN HIEROGLYPH F032 +13122 ; [.56C9.0020.0002] # EGYPTIAN HIEROGLYPH F033 +13123 ; [.56CA.0020.0002] # EGYPTIAN HIEROGLYPH F034 +13124 ; [.56CB.0020.0002] # EGYPTIAN HIEROGLYPH F035 +13125 ; [.56CC.0020.0002] # EGYPTIAN HIEROGLYPH F036 +13126 ; [.56CD.0020.0002] # EGYPTIAN HIEROGLYPH F037 +13127 ; [.56CE.0020.0002] # EGYPTIAN HIEROGLYPH F037A +13128 ; [.56CF.0020.0002] # EGYPTIAN HIEROGLYPH F038 +13129 ; [.56D0.0020.0002] # EGYPTIAN HIEROGLYPH F038A +1312A ; [.56D1.0020.0002] # EGYPTIAN HIEROGLYPH F039 +1312B ; [.56D2.0020.0002] # EGYPTIAN HIEROGLYPH F040 +1312C ; [.56D3.0020.0002] # EGYPTIAN HIEROGLYPH F041 +1312D ; [.56D4.0020.0002] # EGYPTIAN HIEROGLYPH F042 +1312E ; [.56D5.0020.0002] # EGYPTIAN HIEROGLYPH F043 +1312F ; [.56D6.0020.0002] # EGYPTIAN HIEROGLYPH F044 +13130 ; [.56D7.0020.0002] # EGYPTIAN HIEROGLYPH F045 +13131 ; [.56D8.0020.0002] # EGYPTIAN HIEROGLYPH F045A +13132 ; [.56D9.0020.0002] # EGYPTIAN HIEROGLYPH F046 +13133 ; [.56DA.0020.0002] # EGYPTIAN HIEROGLYPH F046A +13134 ; [.56DB.0020.0002] # EGYPTIAN HIEROGLYPH F047 +13135 ; [.56DC.0020.0002] # EGYPTIAN HIEROGLYPH F047A +13136 ; [.56DD.0020.0002] # EGYPTIAN HIEROGLYPH F048 +13137 ; [.56DE.0020.0002] # EGYPTIAN HIEROGLYPH F049 +13138 ; [.56DF.0020.0002] # EGYPTIAN HIEROGLYPH F050 +13139 ; [.56E0.0020.0002] # EGYPTIAN HIEROGLYPH F051 +1313A ; [.56E1.0020.0002] # EGYPTIAN HIEROGLYPH F051A +1313B ; [.56E2.0020.0002] # EGYPTIAN HIEROGLYPH F051B +1313C ; [.56E3.0020.0002] # EGYPTIAN HIEROGLYPH F051C +1313D ; [.56E4.0020.0002] # EGYPTIAN HIEROGLYPH F052 +1313E ; [.56E5.0020.0002] # EGYPTIAN HIEROGLYPH F053 +1313F ; [.56E6.0020.0002] # EGYPTIAN HIEROGLYPH G001 +13140 ; [.56E7.0020.0002] # EGYPTIAN HIEROGLYPH G002 +13141 ; [.56E8.0020.0002] # EGYPTIAN HIEROGLYPH G003 +13142 ; [.56E9.0020.0002] # EGYPTIAN HIEROGLYPH G004 +13143 ; [.56EA.0020.0002] # EGYPTIAN HIEROGLYPH G005 +13144 ; [.56EB.0020.0002] # EGYPTIAN HIEROGLYPH G006 +13145 ; [.56EC.0020.0002] # EGYPTIAN HIEROGLYPH G006A +13146 ; [.56ED.0020.0002] # EGYPTIAN HIEROGLYPH G007 +13147 ; [.56EE.0020.0002] # EGYPTIAN HIEROGLYPH G007A +13148 ; [.56EF.0020.0002] # EGYPTIAN HIEROGLYPH G007B +13149 ; [.56F0.0020.0002] # EGYPTIAN HIEROGLYPH G008 +1314A ; [.56F1.0020.0002] # EGYPTIAN HIEROGLYPH G009 +1314B ; [.56F2.0020.0002] # EGYPTIAN HIEROGLYPH G010 +1314C ; [.56F3.0020.0002] # EGYPTIAN HIEROGLYPH G011 +1314D ; [.56F4.0020.0002] # EGYPTIAN HIEROGLYPH G011A +1314E ; [.56F5.0020.0002] # EGYPTIAN HIEROGLYPH G012 +1314F ; [.56F6.0020.0002] # EGYPTIAN HIEROGLYPH G013 +13150 ; [.56F7.0020.0002] # EGYPTIAN HIEROGLYPH G014 +13151 ; [.56F8.0020.0002] # EGYPTIAN HIEROGLYPH G015 +13152 ; [.56F9.0020.0002] # EGYPTIAN HIEROGLYPH G016 +13153 ; [.56FA.0020.0002] # EGYPTIAN HIEROGLYPH G017 +13154 ; [.56FB.0020.0002] # EGYPTIAN HIEROGLYPH G018 +13155 ; [.56FC.0020.0002] # EGYPTIAN HIEROGLYPH G019 +13156 ; [.56FD.0020.0002] # EGYPTIAN HIEROGLYPH G020 +13157 ; [.56FE.0020.0002] # EGYPTIAN HIEROGLYPH G020A +13158 ; [.56FF.0020.0002] # EGYPTIAN HIEROGLYPH G021 +13159 ; [.5700.0020.0002] # EGYPTIAN HIEROGLYPH G022 +1315A ; [.5701.0020.0002] # EGYPTIAN HIEROGLYPH G023 +1315B ; [.5702.0020.0002] # EGYPTIAN HIEROGLYPH G024 +1315C ; [.5703.0020.0002] # EGYPTIAN HIEROGLYPH G025 +1315D ; [.5704.0020.0002] # EGYPTIAN HIEROGLYPH G026 +1315E ; [.5705.0020.0002] # EGYPTIAN HIEROGLYPH G026A +1315F ; [.5706.0020.0002] # EGYPTIAN HIEROGLYPH G027 +13160 ; [.5707.0020.0002] # EGYPTIAN HIEROGLYPH G028 +13161 ; [.5708.0020.0002] # EGYPTIAN HIEROGLYPH G029 +13162 ; [.5709.0020.0002] # EGYPTIAN HIEROGLYPH G030 +13163 ; [.570A.0020.0002] # EGYPTIAN HIEROGLYPH G031 +13164 ; [.570B.0020.0002] # EGYPTIAN HIEROGLYPH G032 +13165 ; [.570C.0020.0002] # EGYPTIAN HIEROGLYPH G033 +13166 ; [.570D.0020.0002] # EGYPTIAN HIEROGLYPH G034 +13167 ; [.570E.0020.0002] # EGYPTIAN HIEROGLYPH G035 +13168 ; [.570F.0020.0002] # EGYPTIAN HIEROGLYPH G036 +13169 ; [.5710.0020.0002] # EGYPTIAN HIEROGLYPH G036A +1316A ; [.5711.0020.0002] # EGYPTIAN HIEROGLYPH G037 +1316B ; [.5712.0020.0002] # EGYPTIAN HIEROGLYPH G037A +1316C ; [.5713.0020.0002] # EGYPTIAN HIEROGLYPH G038 +1316D ; [.5714.0020.0002] # EGYPTIAN HIEROGLYPH G039 +1316E ; [.5715.0020.0002] # EGYPTIAN HIEROGLYPH G040 +1316F ; [.5716.0020.0002] # EGYPTIAN HIEROGLYPH G041 +13170 ; [.5717.0020.0002] # EGYPTIAN HIEROGLYPH G042 +13171 ; [.5718.0020.0002] # EGYPTIAN HIEROGLYPH G043 +13172 ; [.5719.0020.0002] # EGYPTIAN HIEROGLYPH G043A +13173 ; [.571A.0020.0002] # EGYPTIAN HIEROGLYPH G044 +13174 ; [.571B.0020.0002] # EGYPTIAN HIEROGLYPH G045 +13175 ; [.571C.0020.0002] # EGYPTIAN HIEROGLYPH G045A +13176 ; [.571D.0020.0002] # EGYPTIAN HIEROGLYPH G046 +13177 ; [.571E.0020.0002] # EGYPTIAN HIEROGLYPH G047 +13178 ; [.571F.0020.0002] # EGYPTIAN HIEROGLYPH G048 +13179 ; [.5720.0020.0002] # EGYPTIAN HIEROGLYPH G049 +1317A ; [.5721.0020.0002] # EGYPTIAN HIEROGLYPH G050 +1317B ; [.5722.0020.0002] # EGYPTIAN HIEROGLYPH G051 +1317C ; [.5723.0020.0002] # EGYPTIAN HIEROGLYPH G052 +1317D ; [.5724.0020.0002] # EGYPTIAN HIEROGLYPH G053 +1317E ; [.5725.0020.0002] # EGYPTIAN HIEROGLYPH G054 +1317F ; [.5726.0020.0002] # EGYPTIAN HIEROGLYPH H001 +13180 ; [.5727.0020.0002] # EGYPTIAN HIEROGLYPH H002 +13181 ; [.5728.0020.0002] # EGYPTIAN HIEROGLYPH H003 +13182 ; [.5729.0020.0002] # EGYPTIAN HIEROGLYPH H004 +13183 ; [.572A.0020.0002] # EGYPTIAN HIEROGLYPH H005 +13184 ; [.572B.0020.0002] # EGYPTIAN HIEROGLYPH H006 +13185 ; [.572C.0020.0002] # EGYPTIAN HIEROGLYPH H006A +13186 ; [.572D.0020.0002] # EGYPTIAN HIEROGLYPH H007 +13187 ; [.572E.0020.0002] # EGYPTIAN HIEROGLYPH H008 +13188 ; [.572F.0020.0002] # EGYPTIAN HIEROGLYPH I001 +13189 ; [.5730.0020.0002] # EGYPTIAN HIEROGLYPH I002 +1318A ; [.5731.0020.0002] # EGYPTIAN HIEROGLYPH I003 +1318B ; [.5732.0020.0002] # EGYPTIAN HIEROGLYPH I004 +1318C ; [.5733.0020.0002] # EGYPTIAN HIEROGLYPH I005 +1318D ; [.5734.0020.0002] # EGYPTIAN HIEROGLYPH I005A +1318E ; [.5735.0020.0002] # EGYPTIAN HIEROGLYPH I006 +1318F ; [.5736.0020.0002] # EGYPTIAN HIEROGLYPH I007 +13190 ; [.5737.0020.0002] # EGYPTIAN HIEROGLYPH I008 +13191 ; [.5738.0020.0002] # EGYPTIAN HIEROGLYPH I009 +13192 ; [.5739.0020.0002] # EGYPTIAN HIEROGLYPH I009A +13193 ; [.573A.0020.0002] # EGYPTIAN HIEROGLYPH I010 +13194 ; [.573B.0020.0002] # EGYPTIAN HIEROGLYPH I010A +13195 ; [.573C.0020.0002] # EGYPTIAN HIEROGLYPH I011 +13196 ; [.573D.0020.0002] # EGYPTIAN HIEROGLYPH I011A +13197 ; [.573E.0020.0002] # EGYPTIAN HIEROGLYPH I012 +13198 ; [.573F.0020.0002] # EGYPTIAN HIEROGLYPH I013 +13199 ; [.5740.0020.0002] # EGYPTIAN HIEROGLYPH I014 +1319A ; [.5741.0020.0002] # EGYPTIAN HIEROGLYPH I015 +1319B ; [.5742.0020.0002] # EGYPTIAN HIEROGLYPH K001 +1319C ; [.5743.0020.0002] # EGYPTIAN HIEROGLYPH K002 +1319D ; [.5744.0020.0002] # EGYPTIAN HIEROGLYPH K003 +1319E ; [.5745.0020.0002] # EGYPTIAN HIEROGLYPH K004 +1319F ; [.5746.0020.0002] # EGYPTIAN HIEROGLYPH K005 +131A0 ; [.5747.0020.0002] # EGYPTIAN HIEROGLYPH K006 +131A1 ; [.5748.0020.0002] # EGYPTIAN HIEROGLYPH K007 +131A2 ; [.5749.0020.0002] # EGYPTIAN HIEROGLYPH K008 +131A3 ; [.574A.0020.0002] # EGYPTIAN HIEROGLYPH L001 +131A4 ; [.574B.0020.0002] # EGYPTIAN HIEROGLYPH L002 +131A5 ; [.574C.0020.0002] # EGYPTIAN HIEROGLYPH L002A +131A6 ; [.574D.0020.0002] # EGYPTIAN HIEROGLYPH L003 +131A7 ; [.574E.0020.0002] # EGYPTIAN HIEROGLYPH L004 +131A8 ; [.574F.0020.0002] # EGYPTIAN HIEROGLYPH L005 +131A9 ; [.5750.0020.0002] # EGYPTIAN HIEROGLYPH L006 +131AA ; [.5751.0020.0002] # EGYPTIAN HIEROGLYPH L006A +131AB ; [.5752.0020.0002] # EGYPTIAN HIEROGLYPH L007 +131AC ; [.5753.0020.0002] # EGYPTIAN HIEROGLYPH L008 +131AD ; [.5754.0020.0002] # EGYPTIAN HIEROGLYPH M001 +131AE ; [.5755.0020.0002] # EGYPTIAN HIEROGLYPH M001A +131AF ; [.5756.0020.0002] # EGYPTIAN HIEROGLYPH M001B +131B0 ; [.5757.0020.0002] # EGYPTIAN HIEROGLYPH M002 +131B1 ; [.5758.0020.0002] # EGYPTIAN HIEROGLYPH M003 +131B2 ; [.5759.0020.0002] # EGYPTIAN HIEROGLYPH M003A +131B3 ; [.575A.0020.0002] # EGYPTIAN HIEROGLYPH M004 +131B4 ; [.575B.0020.0002] # EGYPTIAN HIEROGLYPH M005 +131B5 ; [.575C.0020.0002] # EGYPTIAN HIEROGLYPH M006 +131B6 ; [.575D.0020.0002] # EGYPTIAN HIEROGLYPH M007 +131B7 ; [.575E.0020.0002] # EGYPTIAN HIEROGLYPH M008 +131B8 ; [.575F.0020.0002] # EGYPTIAN HIEROGLYPH M009 +131B9 ; [.5760.0020.0002] # EGYPTIAN HIEROGLYPH M010 +131BA ; [.5761.0020.0002] # EGYPTIAN HIEROGLYPH M010A +131BB ; [.5762.0020.0002] # EGYPTIAN HIEROGLYPH M011 +131BC ; [.5763.0020.0002] # EGYPTIAN HIEROGLYPH M012 +131BD ; [.5764.0020.0002] # EGYPTIAN HIEROGLYPH M012A +131BE ; [.5765.0020.0002] # EGYPTIAN HIEROGLYPH M012B +131BF ; [.5766.0020.0002] # EGYPTIAN HIEROGLYPH M012C +131C0 ; [.5767.0020.0002] # EGYPTIAN HIEROGLYPH M012D +131C1 ; [.5768.0020.0002] # EGYPTIAN HIEROGLYPH M012E +131C2 ; [.5769.0020.0002] # EGYPTIAN HIEROGLYPH M012F +131C3 ; [.576A.0020.0002] # EGYPTIAN HIEROGLYPH M012G +131C4 ; [.576B.0020.0002] # EGYPTIAN HIEROGLYPH M012H +131C5 ; [.576C.0020.0002] # EGYPTIAN HIEROGLYPH M013 +131C6 ; [.576D.0020.0002] # EGYPTIAN HIEROGLYPH M014 +131C7 ; [.576E.0020.0002] # EGYPTIAN HIEROGLYPH M015 +131C8 ; [.576F.0020.0002] # EGYPTIAN HIEROGLYPH M015A +131C9 ; [.5770.0020.0002] # EGYPTIAN HIEROGLYPH M016 +131CA ; [.5771.0020.0002] # EGYPTIAN HIEROGLYPH M016A +131CB ; [.5772.0020.0002] # EGYPTIAN HIEROGLYPH M017 +131CC ; [.5773.0020.0002] # EGYPTIAN HIEROGLYPH M017A +131CD ; [.5774.0020.0002] # EGYPTIAN HIEROGLYPH M018 +131CE ; [.5775.0020.0002] # EGYPTIAN HIEROGLYPH M019 +131CF ; [.5776.0020.0002] # EGYPTIAN HIEROGLYPH M020 +131D0 ; [.5777.0020.0002] # EGYPTIAN HIEROGLYPH M021 +131D1 ; [.5778.0020.0002] # EGYPTIAN HIEROGLYPH M022 +131D2 ; [.5779.0020.0002] # EGYPTIAN HIEROGLYPH M022A +131D3 ; [.577A.0020.0002] # EGYPTIAN HIEROGLYPH M023 +131D4 ; [.577B.0020.0002] # EGYPTIAN HIEROGLYPH M024 +131D5 ; [.577C.0020.0002] # EGYPTIAN HIEROGLYPH M024A +131D6 ; [.577D.0020.0002] # EGYPTIAN HIEROGLYPH M025 +131D7 ; [.577E.0020.0002] # EGYPTIAN HIEROGLYPH M026 +131D8 ; [.577F.0020.0002] # EGYPTIAN HIEROGLYPH M027 +131D9 ; [.5780.0020.0002] # EGYPTIAN HIEROGLYPH M028 +131DA ; [.5781.0020.0002] # EGYPTIAN HIEROGLYPH M028A +131DB ; [.5782.0020.0002] # EGYPTIAN HIEROGLYPH M029 +131DC ; [.5783.0020.0002] # EGYPTIAN HIEROGLYPH M030 +131DD ; [.5784.0020.0002] # EGYPTIAN HIEROGLYPH M031 +131DE ; [.5785.0020.0002] # EGYPTIAN HIEROGLYPH M031A +131DF ; [.5786.0020.0002] # EGYPTIAN HIEROGLYPH M032 +131E0 ; [.5787.0020.0002] # EGYPTIAN HIEROGLYPH M033 +131E1 ; [.5788.0020.0002] # EGYPTIAN HIEROGLYPH M033A +131E2 ; [.5789.0020.0002] # EGYPTIAN HIEROGLYPH M033B +131E3 ; [.578A.0020.0002] # EGYPTIAN HIEROGLYPH M034 +131E4 ; [.578B.0020.0002] # EGYPTIAN HIEROGLYPH M035 +131E5 ; [.578C.0020.0002] # EGYPTIAN HIEROGLYPH M036 +131E6 ; [.578D.0020.0002] # EGYPTIAN HIEROGLYPH M037 +131E7 ; [.578E.0020.0002] # EGYPTIAN HIEROGLYPH M038 +131E8 ; [.578F.0020.0002] # EGYPTIAN HIEROGLYPH M039 +131E9 ; [.5790.0020.0002] # EGYPTIAN HIEROGLYPH M040 +131EA ; [.5791.0020.0002] # EGYPTIAN HIEROGLYPH M040A +131EB ; [.5792.0020.0002] # EGYPTIAN HIEROGLYPH M041 +131EC ; [.5793.0020.0002] # EGYPTIAN HIEROGLYPH M042 +131ED ; [.5794.0020.0002] # EGYPTIAN HIEROGLYPH M043 +131EE ; [.5795.0020.0002] # EGYPTIAN HIEROGLYPH M044 +131EF ; [.5796.0020.0002] # EGYPTIAN HIEROGLYPH N001 +131F0 ; [.5797.0020.0002] # EGYPTIAN HIEROGLYPH N002 +131F1 ; [.5798.0020.0002] # EGYPTIAN HIEROGLYPH N003 +131F2 ; [.5799.0020.0002] # EGYPTIAN HIEROGLYPH N004 +131F3 ; [.579A.0020.0002] # EGYPTIAN HIEROGLYPH N005 +131F4 ; [.579B.0020.0002] # EGYPTIAN HIEROGLYPH N006 +131F5 ; [.579C.0020.0002] # EGYPTIAN HIEROGLYPH N007 +131F6 ; [.579D.0020.0002] # EGYPTIAN HIEROGLYPH N008 +131F7 ; [.579E.0020.0002] # EGYPTIAN HIEROGLYPH N009 +131F8 ; [.579F.0020.0002] # EGYPTIAN HIEROGLYPH N010 +131F9 ; [.57A0.0020.0002] # EGYPTIAN HIEROGLYPH N011 +131FA ; [.57A1.0020.0002] # EGYPTIAN HIEROGLYPH N012 +131FB ; [.57A2.0020.0002] # EGYPTIAN HIEROGLYPH N013 +131FC ; [.57A3.0020.0002] # EGYPTIAN HIEROGLYPH N014 +131FD ; [.57A4.0020.0002] # EGYPTIAN HIEROGLYPH N015 +131FE ; [.57A5.0020.0002] # EGYPTIAN HIEROGLYPH N016 +131FF ; [.57A6.0020.0002] # EGYPTIAN HIEROGLYPH N017 +13200 ; [.57A7.0020.0002] # EGYPTIAN HIEROGLYPH N018 +13201 ; [.57A8.0020.0002] # EGYPTIAN HIEROGLYPH N018A +13202 ; [.57A9.0020.0002] # EGYPTIAN HIEROGLYPH N018B +13203 ; [.57AA.0020.0002] # EGYPTIAN HIEROGLYPH N019 +13204 ; [.57AB.0020.0002] # EGYPTIAN HIEROGLYPH N020 +13205 ; [.57AC.0020.0002] # EGYPTIAN HIEROGLYPH N021 +13206 ; [.57AD.0020.0002] # EGYPTIAN HIEROGLYPH N022 +13207 ; [.57AE.0020.0002] # EGYPTIAN HIEROGLYPH N023 +13208 ; [.57AF.0020.0002] # EGYPTIAN HIEROGLYPH N024 +13209 ; [.57B0.0020.0002] # EGYPTIAN HIEROGLYPH N025 +1320A ; [.57B1.0020.0002] # EGYPTIAN HIEROGLYPH N025A +1320B ; [.57B2.0020.0002] # EGYPTIAN HIEROGLYPH N026 +1320C ; [.57B3.0020.0002] # EGYPTIAN HIEROGLYPH N027 +1320D ; [.57B4.0020.0002] # EGYPTIAN HIEROGLYPH N028 +1320E ; [.57B5.0020.0002] # EGYPTIAN HIEROGLYPH N029 +1320F ; [.57B6.0020.0002] # EGYPTIAN HIEROGLYPH N030 +13210 ; [.57B7.0020.0002] # EGYPTIAN HIEROGLYPH N031 +13211 ; [.57B8.0020.0002] # EGYPTIAN HIEROGLYPH N032 +13212 ; [.57B9.0020.0002] # EGYPTIAN HIEROGLYPH N033 +13213 ; [.57BA.0020.0002] # EGYPTIAN HIEROGLYPH N033A +13214 ; [.57BB.0020.0002] # EGYPTIAN HIEROGLYPH N034 +13215 ; [.57BC.0020.0002] # EGYPTIAN HIEROGLYPH N034A +13216 ; [.57BD.0020.0002] # EGYPTIAN HIEROGLYPH N035 +13217 ; [.57BE.0020.0002] # EGYPTIAN HIEROGLYPH N035A +13218 ; [.57BF.0020.0002] # EGYPTIAN HIEROGLYPH N036 +13219 ; [.57C0.0020.0002] # EGYPTIAN HIEROGLYPH N037 +1321A ; [.57C1.0020.0002] # EGYPTIAN HIEROGLYPH N037A +1321B ; [.57C2.0020.0002] # EGYPTIAN HIEROGLYPH N038 +1321C ; [.57C3.0020.0002] # EGYPTIAN HIEROGLYPH N039 +1321D ; [.57C4.0020.0002] # EGYPTIAN HIEROGLYPH N040 +1321E ; [.57C5.0020.0002] # EGYPTIAN HIEROGLYPH N041 +1321F ; [.57C6.0020.0002] # EGYPTIAN HIEROGLYPH N042 +13220 ; [.57C7.0020.0002] # EGYPTIAN HIEROGLYPH NL001 +13221 ; [.57C8.0020.0002] # EGYPTIAN HIEROGLYPH NL002 +13222 ; [.57C9.0020.0002] # EGYPTIAN HIEROGLYPH NL003 +13223 ; [.57CA.0020.0002] # EGYPTIAN HIEROGLYPH NL004 +13224 ; [.57CB.0020.0002] # EGYPTIAN HIEROGLYPH NL005 +13225 ; [.57CC.0020.0002] # EGYPTIAN HIEROGLYPH NL005A +13226 ; [.57CD.0020.0002] # EGYPTIAN HIEROGLYPH NL006 +13227 ; [.57CE.0020.0002] # EGYPTIAN HIEROGLYPH NL007 +13228 ; [.57CF.0020.0002] # EGYPTIAN HIEROGLYPH NL008 +13229 ; [.57D0.0020.0002] # EGYPTIAN HIEROGLYPH NL009 +1322A ; [.57D1.0020.0002] # EGYPTIAN HIEROGLYPH NL010 +1322B ; [.57D2.0020.0002] # EGYPTIAN HIEROGLYPH NL011 +1322C ; [.57D3.0020.0002] # EGYPTIAN HIEROGLYPH NL012 +1322D ; [.57D4.0020.0002] # EGYPTIAN HIEROGLYPH NL013 +1322E ; [.57D5.0020.0002] # EGYPTIAN HIEROGLYPH NL014 +1322F ; [.57D6.0020.0002] # EGYPTIAN HIEROGLYPH NL015 +13230 ; [.57D7.0020.0002] # EGYPTIAN HIEROGLYPH NL016 +13231 ; [.57D8.0020.0002] # EGYPTIAN HIEROGLYPH NL017 +13232 ; [.57D9.0020.0002] # EGYPTIAN HIEROGLYPH NL017A +13233 ; [.57DA.0020.0002] # EGYPTIAN HIEROGLYPH NL018 +13234 ; [.57DB.0020.0002] # EGYPTIAN HIEROGLYPH NL019 +13235 ; [.57DC.0020.0002] # EGYPTIAN HIEROGLYPH NL020 +13236 ; [.57DD.0020.0002] # EGYPTIAN HIEROGLYPH NU001 +13237 ; [.57DE.0020.0002] # EGYPTIAN HIEROGLYPH NU002 +13238 ; [.57DF.0020.0002] # EGYPTIAN HIEROGLYPH NU003 +13239 ; [.57E0.0020.0002] # EGYPTIAN HIEROGLYPH NU004 +1323A ; [.57E1.0020.0002] # EGYPTIAN HIEROGLYPH NU005 +1323B ; [.57E2.0020.0002] # EGYPTIAN HIEROGLYPH NU006 +1323C ; [.57E3.0020.0002] # EGYPTIAN HIEROGLYPH NU007 +1323D ; [.57E4.0020.0002] # EGYPTIAN HIEROGLYPH NU008 +1323E ; [.57E5.0020.0002] # EGYPTIAN HIEROGLYPH NU009 +1323F ; [.57E6.0020.0002] # EGYPTIAN HIEROGLYPH NU010 +13240 ; [.57E7.0020.0002] # EGYPTIAN HIEROGLYPH NU010A +13241 ; [.57E8.0020.0002] # EGYPTIAN HIEROGLYPH NU011 +13242 ; [.57E9.0020.0002] # EGYPTIAN HIEROGLYPH NU011A +13243 ; [.57EA.0020.0002] # EGYPTIAN HIEROGLYPH NU012 +13244 ; [.57EB.0020.0002] # EGYPTIAN HIEROGLYPH NU013 +13245 ; [.57EC.0020.0002] # EGYPTIAN HIEROGLYPH NU014 +13246 ; [.57ED.0020.0002] # EGYPTIAN HIEROGLYPH NU015 +13247 ; [.57EE.0020.0002] # EGYPTIAN HIEROGLYPH NU016 +13248 ; [.57EF.0020.0002] # EGYPTIAN HIEROGLYPH NU017 +13249 ; [.57F0.0020.0002] # EGYPTIAN HIEROGLYPH NU018 +1324A ; [.57F1.0020.0002] # EGYPTIAN HIEROGLYPH NU018A +1324B ; [.57F2.0020.0002] # EGYPTIAN HIEROGLYPH NU019 +1324C ; [.57F3.0020.0002] # EGYPTIAN HIEROGLYPH NU020 +1324D ; [.57F4.0020.0002] # EGYPTIAN HIEROGLYPH NU021 +1324E ; [.57F5.0020.0002] # EGYPTIAN HIEROGLYPH NU022 +1324F ; [.57F6.0020.0002] # EGYPTIAN HIEROGLYPH NU022A +13250 ; [.57F7.0020.0002] # EGYPTIAN HIEROGLYPH O001 +13251 ; [.57F8.0020.0002] # EGYPTIAN HIEROGLYPH O001A +13252 ; [.57F9.0020.0002] # EGYPTIAN HIEROGLYPH O002 +13253 ; [.57FA.0020.0002] # EGYPTIAN HIEROGLYPH O003 +13254 ; [.57FB.0020.0002] # EGYPTIAN HIEROGLYPH O004 +13255 ; [.57FC.0020.0002] # EGYPTIAN HIEROGLYPH O005 +13256 ; [.57FD.0020.0002] # EGYPTIAN HIEROGLYPH O005A +13257 ; [.57FE.0020.0002] # EGYPTIAN HIEROGLYPH O006 +13258 ; [.57FF.0020.0002] # EGYPTIAN HIEROGLYPH O006A +13259 ; [.5800.0020.0002] # EGYPTIAN HIEROGLYPH O006B +1325A ; [.5801.0020.0002] # EGYPTIAN HIEROGLYPH O006C +1325B ; [.5802.0020.0002] # EGYPTIAN HIEROGLYPH O006D +1325C ; [.5803.0020.0002] # EGYPTIAN HIEROGLYPH O006E +1325D ; [.5804.0020.0002] # EGYPTIAN HIEROGLYPH O006F +1325E ; [.5805.0020.0002] # EGYPTIAN HIEROGLYPH O007 +1325F ; [.5806.0020.0002] # EGYPTIAN HIEROGLYPH O008 +13260 ; [.5807.0020.0002] # EGYPTIAN HIEROGLYPH O009 +13261 ; [.5808.0020.0002] # EGYPTIAN HIEROGLYPH O010 +13262 ; [.5809.0020.0002] # EGYPTIAN HIEROGLYPH O010A +13263 ; [.580A.0020.0002] # EGYPTIAN HIEROGLYPH O010B +13264 ; [.580B.0020.0002] # EGYPTIAN HIEROGLYPH O010C +13265 ; [.580C.0020.0002] # EGYPTIAN HIEROGLYPH O011 +13266 ; [.580D.0020.0002] # EGYPTIAN HIEROGLYPH O012 +13267 ; [.580E.0020.0002] # EGYPTIAN HIEROGLYPH O013 +13268 ; [.580F.0020.0002] # EGYPTIAN HIEROGLYPH O014 +13269 ; [.5810.0020.0002] # EGYPTIAN HIEROGLYPH O015 +1326A ; [.5811.0020.0002] # EGYPTIAN HIEROGLYPH O016 +1326B ; [.5812.0020.0002] # EGYPTIAN HIEROGLYPH O017 +1326C ; [.5813.0020.0002] # EGYPTIAN HIEROGLYPH O018 +1326D ; [.5814.0020.0002] # EGYPTIAN HIEROGLYPH O019 +1326E ; [.5815.0020.0002] # EGYPTIAN HIEROGLYPH O019A +1326F ; [.5816.0020.0002] # EGYPTIAN HIEROGLYPH O020 +13270 ; [.5817.0020.0002] # EGYPTIAN HIEROGLYPH O020A +13271 ; [.5818.0020.0002] # EGYPTIAN HIEROGLYPH O021 +13272 ; [.5819.0020.0002] # EGYPTIAN HIEROGLYPH O022 +13273 ; [.581A.0020.0002] # EGYPTIAN HIEROGLYPH O023 +13274 ; [.581B.0020.0002] # EGYPTIAN HIEROGLYPH O024 +13275 ; [.581C.0020.0002] # EGYPTIAN HIEROGLYPH O024A +13276 ; [.581D.0020.0002] # EGYPTIAN HIEROGLYPH O025 +13277 ; [.581E.0020.0002] # EGYPTIAN HIEROGLYPH O025A +13278 ; [.581F.0020.0002] # EGYPTIAN HIEROGLYPH O026 +13279 ; [.5820.0020.0002] # EGYPTIAN HIEROGLYPH O027 +1327A ; [.5821.0020.0002] # EGYPTIAN HIEROGLYPH O028 +1327B ; [.5822.0020.0002] # EGYPTIAN HIEROGLYPH O029 +1327C ; [.5823.0020.0002] # EGYPTIAN HIEROGLYPH O029A +1327D ; [.5824.0020.0002] # EGYPTIAN HIEROGLYPH O030 +1327E ; [.5825.0020.0002] # EGYPTIAN HIEROGLYPH O030A +1327F ; [.5826.0020.0002] # EGYPTIAN HIEROGLYPH O031 +13280 ; [.5827.0020.0002] # EGYPTIAN HIEROGLYPH O032 +13281 ; [.5828.0020.0002] # EGYPTIAN HIEROGLYPH O033 +13282 ; [.5829.0020.0002] # EGYPTIAN HIEROGLYPH O033A +13283 ; [.582A.0020.0002] # EGYPTIAN HIEROGLYPH O034 +13284 ; [.582B.0020.0002] # EGYPTIAN HIEROGLYPH O035 +13285 ; [.582C.0020.0002] # EGYPTIAN HIEROGLYPH O036 +13286 ; [.582D.0020.0002] # EGYPTIAN HIEROGLYPH O036A +13287 ; [.582E.0020.0002] # EGYPTIAN HIEROGLYPH O036B +13288 ; [.582F.0020.0002] # EGYPTIAN HIEROGLYPH O036C +13289 ; [.5830.0020.0002] # EGYPTIAN HIEROGLYPH O036D +1328A ; [.5831.0020.0002] # EGYPTIAN HIEROGLYPH O037 +1328B ; [.5832.0020.0002] # EGYPTIAN HIEROGLYPH O038 +1328C ; [.5833.0020.0002] # EGYPTIAN HIEROGLYPH O039 +1328D ; [.5834.0020.0002] # EGYPTIAN HIEROGLYPH O040 +1328E ; [.5835.0020.0002] # EGYPTIAN HIEROGLYPH O041 +1328F ; [.5836.0020.0002] # EGYPTIAN HIEROGLYPH O042 +13290 ; [.5837.0020.0002] # EGYPTIAN HIEROGLYPH O043 +13291 ; [.5838.0020.0002] # EGYPTIAN HIEROGLYPH O044 +13292 ; [.5839.0020.0002] # EGYPTIAN HIEROGLYPH O045 +13293 ; [.583A.0020.0002] # EGYPTIAN HIEROGLYPH O046 +13294 ; [.583B.0020.0002] # EGYPTIAN HIEROGLYPH O047 +13295 ; [.583C.0020.0002] # EGYPTIAN HIEROGLYPH O048 +13296 ; [.583D.0020.0002] # EGYPTIAN HIEROGLYPH O049 +13297 ; [.583E.0020.0002] # EGYPTIAN HIEROGLYPH O050 +13298 ; [.583F.0020.0002] # EGYPTIAN HIEROGLYPH O050A +13299 ; [.5840.0020.0002] # EGYPTIAN HIEROGLYPH O050B +1329A ; [.5841.0020.0002] # EGYPTIAN HIEROGLYPH O051 +1329B ; [.5842.0020.0002] # EGYPTIAN HIEROGLYPH P001 +1329C ; [.5843.0020.0002] # EGYPTIAN HIEROGLYPH P001A +1329D ; [.5844.0020.0002] # EGYPTIAN HIEROGLYPH P002 +1329E ; [.5845.0020.0002] # EGYPTIAN HIEROGLYPH P003 +1329F ; [.5846.0020.0002] # EGYPTIAN HIEROGLYPH P003A +132A0 ; [.5847.0020.0002] # EGYPTIAN HIEROGLYPH P004 +132A1 ; [.5848.0020.0002] # EGYPTIAN HIEROGLYPH P005 +132A2 ; [.5849.0020.0002] # EGYPTIAN HIEROGLYPH P006 +132A3 ; [.584A.0020.0002] # EGYPTIAN HIEROGLYPH P007 +132A4 ; [.584B.0020.0002] # EGYPTIAN HIEROGLYPH P008 +132A5 ; [.584C.0020.0002] # EGYPTIAN HIEROGLYPH P009 +132A6 ; [.584D.0020.0002] # EGYPTIAN HIEROGLYPH P010 +132A7 ; [.584E.0020.0002] # EGYPTIAN HIEROGLYPH P011 +132A8 ; [.584F.0020.0002] # EGYPTIAN HIEROGLYPH Q001 +132A9 ; [.5850.0020.0002] # EGYPTIAN HIEROGLYPH Q002 +132AA ; [.5851.0020.0002] # EGYPTIAN HIEROGLYPH Q003 +132AB ; [.5852.0020.0002] # EGYPTIAN HIEROGLYPH Q004 +132AC ; [.5853.0020.0002] # EGYPTIAN HIEROGLYPH Q005 +132AD ; [.5854.0020.0002] # EGYPTIAN HIEROGLYPH Q006 +132AE ; [.5855.0020.0002] # EGYPTIAN HIEROGLYPH Q007 +132AF ; [.5856.0020.0002] # EGYPTIAN HIEROGLYPH R001 +132B0 ; [.5857.0020.0002] # EGYPTIAN HIEROGLYPH R002 +132B1 ; [.5858.0020.0002] # EGYPTIAN HIEROGLYPH R002A +132B2 ; [.5859.0020.0002] # EGYPTIAN HIEROGLYPH R003 +132B3 ; [.585A.0020.0002] # EGYPTIAN HIEROGLYPH R003A +132B4 ; [.585B.0020.0002] # EGYPTIAN HIEROGLYPH R003B +132B5 ; [.585C.0020.0002] # EGYPTIAN HIEROGLYPH R004 +132B6 ; [.585D.0020.0002] # EGYPTIAN HIEROGLYPH R005 +132B7 ; [.585E.0020.0002] # EGYPTIAN HIEROGLYPH R006 +132B8 ; [.585F.0020.0002] # EGYPTIAN HIEROGLYPH R007 +132B9 ; [.5860.0020.0002] # EGYPTIAN HIEROGLYPH R008 +132BA ; [.5861.0020.0002] # EGYPTIAN HIEROGLYPH R009 +132BB ; [.5862.0020.0002] # EGYPTIAN HIEROGLYPH R010 +132BC ; [.5863.0020.0002] # EGYPTIAN HIEROGLYPH R010A +132BD ; [.5864.0020.0002] # EGYPTIAN HIEROGLYPH R011 +132BE ; [.5865.0020.0002] # EGYPTIAN HIEROGLYPH R012 +132BF ; [.5866.0020.0002] # EGYPTIAN HIEROGLYPH R013 +132C0 ; [.5867.0020.0002] # EGYPTIAN HIEROGLYPH R014 +132C1 ; [.5868.0020.0002] # EGYPTIAN HIEROGLYPH R015 +132C2 ; [.5869.0020.0002] # EGYPTIAN HIEROGLYPH R016 +132C3 ; [.586A.0020.0002] # EGYPTIAN HIEROGLYPH R016A +132C4 ; [.586B.0020.0002] # EGYPTIAN HIEROGLYPH R017 +132C5 ; [.586C.0020.0002] # EGYPTIAN HIEROGLYPH R018 +132C6 ; [.586D.0020.0002] # EGYPTIAN HIEROGLYPH R019 +132C7 ; [.586E.0020.0002] # EGYPTIAN HIEROGLYPH R020 +132C8 ; [.586F.0020.0002] # EGYPTIAN HIEROGLYPH R021 +132C9 ; [.5870.0020.0002] # EGYPTIAN HIEROGLYPH R022 +132CA ; [.5871.0020.0002] # EGYPTIAN HIEROGLYPH R023 +132CB ; [.5872.0020.0002] # EGYPTIAN HIEROGLYPH R024 +132CC ; [.5873.0020.0002] # EGYPTIAN HIEROGLYPH R025 +132CD ; [.5874.0020.0002] # EGYPTIAN HIEROGLYPH R026 +132CE ; [.5875.0020.0002] # EGYPTIAN HIEROGLYPH R027 +132CF ; [.5876.0020.0002] # EGYPTIAN HIEROGLYPH R028 +132D0 ; [.5877.0020.0002] # EGYPTIAN HIEROGLYPH R029 +132D1 ; [.5878.0020.0002] # EGYPTIAN HIEROGLYPH S001 +132D2 ; [.5879.0020.0002] # EGYPTIAN HIEROGLYPH S002 +132D3 ; [.587A.0020.0002] # EGYPTIAN HIEROGLYPH S002A +132D4 ; [.587B.0020.0002] # EGYPTIAN HIEROGLYPH S003 +132D5 ; [.587C.0020.0002] # EGYPTIAN HIEROGLYPH S004 +132D6 ; [.587D.0020.0002] # EGYPTIAN HIEROGLYPH S005 +132D7 ; [.587E.0020.0002] # EGYPTIAN HIEROGLYPH S006 +132D8 ; [.587F.0020.0002] # EGYPTIAN HIEROGLYPH S006A +132D9 ; [.5880.0020.0002] # EGYPTIAN HIEROGLYPH S007 +132DA ; [.5881.0020.0002] # EGYPTIAN HIEROGLYPH S008 +132DB ; [.5882.0020.0002] # EGYPTIAN HIEROGLYPH S009 +132DC ; [.5883.0020.0002] # EGYPTIAN HIEROGLYPH S010 +132DD ; [.5884.0020.0002] # EGYPTIAN HIEROGLYPH S011 +132DE ; [.5885.0020.0002] # EGYPTIAN HIEROGLYPH S012 +132DF ; [.5886.0020.0002] # EGYPTIAN HIEROGLYPH S013 +132E0 ; [.5887.0020.0002] # EGYPTIAN HIEROGLYPH S014 +132E1 ; [.5888.0020.0002] # EGYPTIAN HIEROGLYPH S014A +132E2 ; [.5889.0020.0002] # EGYPTIAN HIEROGLYPH S014B +132E3 ; [.588A.0020.0002] # EGYPTIAN HIEROGLYPH S015 +132E4 ; [.588B.0020.0002] # EGYPTIAN HIEROGLYPH S016 +132E5 ; [.588C.0020.0002] # EGYPTIAN HIEROGLYPH S017 +132E6 ; [.588D.0020.0002] # EGYPTIAN HIEROGLYPH S017A +132E7 ; [.588E.0020.0002] # EGYPTIAN HIEROGLYPH S018 +132E8 ; [.588F.0020.0002] # EGYPTIAN HIEROGLYPH S019 +132E9 ; [.5890.0020.0002] # EGYPTIAN HIEROGLYPH S020 +132EA ; [.5891.0020.0002] # EGYPTIAN HIEROGLYPH S021 +132EB ; [.5892.0020.0002] # EGYPTIAN HIEROGLYPH S022 +132EC ; [.5893.0020.0002] # EGYPTIAN HIEROGLYPH S023 +132ED ; [.5894.0020.0002] # EGYPTIAN HIEROGLYPH S024 +132EE ; [.5895.0020.0002] # EGYPTIAN HIEROGLYPH S025 +132EF ; [.5896.0020.0002] # EGYPTIAN HIEROGLYPH S026 +132F0 ; [.5897.0020.0002] # EGYPTIAN HIEROGLYPH S026A +132F1 ; [.5898.0020.0002] # EGYPTIAN HIEROGLYPH S026B +132F2 ; [.5899.0020.0002] # EGYPTIAN HIEROGLYPH S027 +132F3 ; [.589A.0020.0002] # EGYPTIAN HIEROGLYPH S028 +132F4 ; [.589B.0020.0002] # EGYPTIAN HIEROGLYPH S029 +132F5 ; [.589C.0020.0002] # EGYPTIAN HIEROGLYPH S030 +132F6 ; [.589D.0020.0002] # EGYPTIAN HIEROGLYPH S031 +132F7 ; [.589E.0020.0002] # EGYPTIAN HIEROGLYPH S032 +132F8 ; [.589F.0020.0002] # EGYPTIAN HIEROGLYPH S033 +132F9 ; [.58A0.0020.0002] # EGYPTIAN HIEROGLYPH S034 +132FA ; [.58A1.0020.0002] # EGYPTIAN HIEROGLYPH S035 +132FB ; [.58A2.0020.0002] # EGYPTIAN HIEROGLYPH S035A +132FC ; [.58A3.0020.0002] # EGYPTIAN HIEROGLYPH S036 +132FD ; [.58A4.0020.0002] # EGYPTIAN HIEROGLYPH S037 +132FE ; [.58A5.0020.0002] # EGYPTIAN HIEROGLYPH S038 +132FF ; [.58A6.0020.0002] # EGYPTIAN HIEROGLYPH S039 +13300 ; [.58A7.0020.0002] # EGYPTIAN HIEROGLYPH S040 +13301 ; [.58A8.0020.0002] # EGYPTIAN HIEROGLYPH S041 +13302 ; [.58A9.0020.0002] # EGYPTIAN HIEROGLYPH S042 +13303 ; [.58AA.0020.0002] # EGYPTIAN HIEROGLYPH S043 +13304 ; [.58AB.0020.0002] # EGYPTIAN HIEROGLYPH S044 +13305 ; [.58AC.0020.0002] # EGYPTIAN HIEROGLYPH S045 +13306 ; [.58AD.0020.0002] # EGYPTIAN HIEROGLYPH S046 +13307 ; [.58AE.0020.0002] # EGYPTIAN HIEROGLYPH T001 +13308 ; [.58AF.0020.0002] # EGYPTIAN HIEROGLYPH T002 +13309 ; [.58B0.0020.0002] # EGYPTIAN HIEROGLYPH T003 +1330A ; [.58B1.0020.0002] # EGYPTIAN HIEROGLYPH T003A +1330B ; [.58B2.0020.0002] # EGYPTIAN HIEROGLYPH T004 +1330C ; [.58B3.0020.0002] # EGYPTIAN HIEROGLYPH T005 +1330D ; [.58B4.0020.0002] # EGYPTIAN HIEROGLYPH T006 +1330E ; [.58B5.0020.0002] # EGYPTIAN HIEROGLYPH T007 +1330F ; [.58B6.0020.0002] # EGYPTIAN HIEROGLYPH T007A +13310 ; [.58B7.0020.0002] # EGYPTIAN HIEROGLYPH T008 +13311 ; [.58B8.0020.0002] # EGYPTIAN HIEROGLYPH T008A +13312 ; [.58B9.0020.0002] # EGYPTIAN HIEROGLYPH T009 +13313 ; [.58BA.0020.0002] # EGYPTIAN HIEROGLYPH T009A +13314 ; [.58BB.0020.0002] # EGYPTIAN HIEROGLYPH T010 +13315 ; [.58BC.0020.0002] # EGYPTIAN HIEROGLYPH T011 +13316 ; [.58BD.0020.0002] # EGYPTIAN HIEROGLYPH T011A +13317 ; [.58BE.0020.0002] # EGYPTIAN HIEROGLYPH T012 +13318 ; [.58BF.0020.0002] # EGYPTIAN HIEROGLYPH T013 +13319 ; [.58C0.0020.0002] # EGYPTIAN HIEROGLYPH T014 +1331A ; [.58C1.0020.0002] # EGYPTIAN HIEROGLYPH T015 +1331B ; [.58C2.0020.0002] # EGYPTIAN HIEROGLYPH T016 +1331C ; [.58C3.0020.0002] # EGYPTIAN HIEROGLYPH T016A +1331D ; [.58C4.0020.0002] # EGYPTIAN HIEROGLYPH T017 +1331E ; [.58C5.0020.0002] # EGYPTIAN HIEROGLYPH T018 +1331F ; [.58C6.0020.0002] # EGYPTIAN HIEROGLYPH T019 +13320 ; [.58C7.0020.0002] # EGYPTIAN HIEROGLYPH T020 +13321 ; [.58C8.0020.0002] # EGYPTIAN HIEROGLYPH T021 +13322 ; [.58C9.0020.0002] # EGYPTIAN HIEROGLYPH T022 +13323 ; [.58CA.0020.0002] # EGYPTIAN HIEROGLYPH T023 +13324 ; [.58CB.0020.0002] # EGYPTIAN HIEROGLYPH T024 +13325 ; [.58CC.0020.0002] # EGYPTIAN HIEROGLYPH T025 +13326 ; [.58CD.0020.0002] # EGYPTIAN HIEROGLYPH T026 +13327 ; [.58CE.0020.0002] # EGYPTIAN HIEROGLYPH T027 +13328 ; [.58CF.0020.0002] # EGYPTIAN HIEROGLYPH T028 +13329 ; [.58D0.0020.0002] # EGYPTIAN HIEROGLYPH T029 +1332A ; [.58D1.0020.0002] # EGYPTIAN HIEROGLYPH T030 +1332B ; [.58D2.0020.0002] # EGYPTIAN HIEROGLYPH T031 +1332C ; [.58D3.0020.0002] # EGYPTIAN HIEROGLYPH T032 +1332D ; [.58D4.0020.0002] # EGYPTIAN HIEROGLYPH T032A +1332E ; [.58D5.0020.0002] # EGYPTIAN HIEROGLYPH T033 +1332F ; [.58D6.0020.0002] # EGYPTIAN HIEROGLYPH T033A +13330 ; [.58D7.0020.0002] # EGYPTIAN HIEROGLYPH T034 +13331 ; [.58D8.0020.0002] # EGYPTIAN HIEROGLYPH T035 +13332 ; [.58D9.0020.0002] # EGYPTIAN HIEROGLYPH T036 +13333 ; [.58DA.0020.0002] # EGYPTIAN HIEROGLYPH U001 +13334 ; [.58DB.0020.0002] # EGYPTIAN HIEROGLYPH U002 +13335 ; [.58DC.0020.0002] # EGYPTIAN HIEROGLYPH U003 +13336 ; [.58DD.0020.0002] # EGYPTIAN HIEROGLYPH U004 +13337 ; [.58DE.0020.0002] # EGYPTIAN HIEROGLYPH U005 +13338 ; [.58DF.0020.0002] # EGYPTIAN HIEROGLYPH U006 +13339 ; [.58E0.0020.0002] # EGYPTIAN HIEROGLYPH U006A +1333A ; [.58E1.0020.0002] # EGYPTIAN HIEROGLYPH U006B +1333B ; [.58E2.0020.0002] # EGYPTIAN HIEROGLYPH U007 +1333C ; [.58E3.0020.0002] # EGYPTIAN HIEROGLYPH U008 +1333D ; [.58E4.0020.0002] # EGYPTIAN HIEROGLYPH U009 +1333E ; [.58E5.0020.0002] # EGYPTIAN HIEROGLYPH U010 +1333F ; [.58E6.0020.0002] # EGYPTIAN HIEROGLYPH U011 +13340 ; [.58E7.0020.0002] # EGYPTIAN HIEROGLYPH U012 +13341 ; [.58E8.0020.0002] # EGYPTIAN HIEROGLYPH U013 +13342 ; [.58E9.0020.0002] # EGYPTIAN HIEROGLYPH U014 +13343 ; [.58EA.0020.0002] # EGYPTIAN HIEROGLYPH U015 +13344 ; [.58EB.0020.0002] # EGYPTIAN HIEROGLYPH U016 +13345 ; [.58EC.0020.0002] # EGYPTIAN HIEROGLYPH U017 +13346 ; [.58ED.0020.0002] # EGYPTIAN HIEROGLYPH U018 +13347 ; [.58EE.0020.0002] # EGYPTIAN HIEROGLYPH U019 +13348 ; [.58EF.0020.0002] # EGYPTIAN HIEROGLYPH U020 +13349 ; [.58F0.0020.0002] # EGYPTIAN HIEROGLYPH U021 +1334A ; [.58F1.0020.0002] # EGYPTIAN HIEROGLYPH U022 +1334B ; [.58F2.0020.0002] # EGYPTIAN HIEROGLYPH U023 +1334C ; [.58F3.0020.0002] # EGYPTIAN HIEROGLYPH U023A +1334D ; [.58F4.0020.0002] # EGYPTIAN HIEROGLYPH U024 +1334E ; [.58F5.0020.0002] # EGYPTIAN HIEROGLYPH U025 +1334F ; [.58F6.0020.0002] # EGYPTIAN HIEROGLYPH U026 +13350 ; [.58F7.0020.0002] # EGYPTIAN HIEROGLYPH U027 +13351 ; [.58F8.0020.0002] # EGYPTIAN HIEROGLYPH U028 +13352 ; [.58F9.0020.0002] # EGYPTIAN HIEROGLYPH U029 +13353 ; [.58FA.0020.0002] # EGYPTIAN HIEROGLYPH U029A +13354 ; [.58FB.0020.0002] # EGYPTIAN HIEROGLYPH U030 +13355 ; [.58FC.0020.0002] # EGYPTIAN HIEROGLYPH U031 +13356 ; [.58FD.0020.0002] # EGYPTIAN HIEROGLYPH U032 +13357 ; [.58FE.0020.0002] # EGYPTIAN HIEROGLYPH U032A +13358 ; [.58FF.0020.0002] # EGYPTIAN HIEROGLYPH U033 +13359 ; [.5900.0020.0002] # EGYPTIAN HIEROGLYPH U034 +1335A ; [.5901.0020.0002] # EGYPTIAN HIEROGLYPH U035 +1335B ; [.5902.0020.0002] # EGYPTIAN HIEROGLYPH U036 +1335C ; [.5903.0020.0002] # EGYPTIAN HIEROGLYPH U037 +1335D ; [.5904.0020.0002] # EGYPTIAN HIEROGLYPH U038 +1335E ; [.5905.0020.0002] # EGYPTIAN HIEROGLYPH U039 +1335F ; [.5906.0020.0002] # EGYPTIAN HIEROGLYPH U040 +13360 ; [.5907.0020.0002] # EGYPTIAN HIEROGLYPH U041 +13361 ; [.5908.0020.0002] # EGYPTIAN HIEROGLYPH U042 +13362 ; [.5909.0020.0002] # EGYPTIAN HIEROGLYPH V001 +13363 ; [.590A.0020.0002] # EGYPTIAN HIEROGLYPH V001A +13364 ; [.590B.0020.0002] # EGYPTIAN HIEROGLYPH V001B +13365 ; [.590C.0020.0002] # EGYPTIAN HIEROGLYPH V001C +13366 ; [.590D.0020.0002] # EGYPTIAN HIEROGLYPH V001D +13367 ; [.590E.0020.0002] # EGYPTIAN HIEROGLYPH V001E +13368 ; [.590F.0020.0002] # EGYPTIAN HIEROGLYPH V001F +13369 ; [.5910.0020.0002] # EGYPTIAN HIEROGLYPH V001G +1336A ; [.5911.0020.0002] # EGYPTIAN HIEROGLYPH V001H +1336B ; [.5912.0020.0002] # EGYPTIAN HIEROGLYPH V001I +1336C ; [.5913.0020.0002] # EGYPTIAN HIEROGLYPH V002 +1336D ; [.5914.0020.0002] # EGYPTIAN HIEROGLYPH V002A +1336E ; [.5915.0020.0002] # EGYPTIAN HIEROGLYPH V003 +1336F ; [.5916.0020.0002] # EGYPTIAN HIEROGLYPH V004 +13370 ; [.5917.0020.0002] # EGYPTIAN HIEROGLYPH V005 +13371 ; [.5918.0020.0002] # EGYPTIAN HIEROGLYPH V006 +13372 ; [.5919.0020.0002] # EGYPTIAN HIEROGLYPH V007 +13373 ; [.591A.0020.0002] # EGYPTIAN HIEROGLYPH V007A +13374 ; [.591B.0020.0002] # EGYPTIAN HIEROGLYPH V007B +13375 ; [.591C.0020.0002] # EGYPTIAN HIEROGLYPH V008 +13376 ; [.591D.0020.0002] # EGYPTIAN HIEROGLYPH V009 +13377 ; [.591E.0020.0002] # EGYPTIAN HIEROGLYPH V010 +13378 ; [.591F.0020.0002] # EGYPTIAN HIEROGLYPH V011 +13379 ; [.5920.0020.0002] # EGYPTIAN HIEROGLYPH V011A +1337A ; [.5921.0020.0002] # EGYPTIAN HIEROGLYPH V011B +1337B ; [.5922.0020.0002] # EGYPTIAN HIEROGLYPH V011C +1337C ; [.5923.0020.0002] # EGYPTIAN HIEROGLYPH V012 +1337D ; [.5924.0020.0002] # EGYPTIAN HIEROGLYPH V012A +1337E ; [.5925.0020.0002] # EGYPTIAN HIEROGLYPH V012B +1337F ; [.5926.0020.0002] # EGYPTIAN HIEROGLYPH V013 +13380 ; [.5927.0020.0002] # EGYPTIAN HIEROGLYPH V014 +13381 ; [.5928.0020.0002] # EGYPTIAN HIEROGLYPH V015 +13382 ; [.5929.0020.0002] # EGYPTIAN HIEROGLYPH V016 +13383 ; [.592A.0020.0002] # EGYPTIAN HIEROGLYPH V017 +13384 ; [.592B.0020.0002] # EGYPTIAN HIEROGLYPH V018 +13385 ; [.592C.0020.0002] # EGYPTIAN HIEROGLYPH V019 +13386 ; [.592D.0020.0002] # EGYPTIAN HIEROGLYPH V020 +13387 ; [.592E.0020.0002] # EGYPTIAN HIEROGLYPH V020A +13388 ; [.592F.0020.0002] # EGYPTIAN HIEROGLYPH V020B +13389 ; [.5930.0020.0002] # EGYPTIAN HIEROGLYPH V020C +1338A ; [.5931.0020.0002] # EGYPTIAN HIEROGLYPH V020D +1338B ; [.5932.0020.0002] # EGYPTIAN HIEROGLYPH V020E +1338C ; [.5933.0020.0002] # EGYPTIAN HIEROGLYPH V020F +1338D ; [.5934.0020.0002] # EGYPTIAN HIEROGLYPH V020G +1338E ; [.5935.0020.0002] # EGYPTIAN HIEROGLYPH V020H +1338F ; [.5936.0020.0002] # EGYPTIAN HIEROGLYPH V020I +13390 ; [.5937.0020.0002] # EGYPTIAN HIEROGLYPH V020J +13391 ; [.5938.0020.0002] # EGYPTIAN HIEROGLYPH V020K +13392 ; [.5939.0020.0002] # EGYPTIAN HIEROGLYPH V020L +13393 ; [.593A.0020.0002] # EGYPTIAN HIEROGLYPH V021 +13394 ; [.593B.0020.0002] # EGYPTIAN HIEROGLYPH V022 +13395 ; [.593C.0020.0002] # EGYPTIAN HIEROGLYPH V023 +13396 ; [.593D.0020.0002] # EGYPTIAN HIEROGLYPH V023A +13397 ; [.593E.0020.0002] # EGYPTIAN HIEROGLYPH V024 +13398 ; [.593F.0020.0002] # EGYPTIAN HIEROGLYPH V025 +13399 ; [.5940.0020.0002] # EGYPTIAN HIEROGLYPH V026 +1339A ; [.5941.0020.0002] # EGYPTIAN HIEROGLYPH V027 +1339B ; [.5942.0020.0002] # EGYPTIAN HIEROGLYPH V028 +1339C ; [.5943.0020.0002] # EGYPTIAN HIEROGLYPH V028A +1339D ; [.5944.0020.0002] # EGYPTIAN HIEROGLYPH V029 +1339E ; [.5945.0020.0002] # EGYPTIAN HIEROGLYPH V029A +1339F ; [.5946.0020.0002] # EGYPTIAN HIEROGLYPH V030 +133A0 ; [.5947.0020.0002] # EGYPTIAN HIEROGLYPH V030A +133A1 ; [.5948.0020.0002] # EGYPTIAN HIEROGLYPH V031 +133A2 ; [.5949.0020.0002] # EGYPTIAN HIEROGLYPH V031A +133A3 ; [.594A.0020.0002] # EGYPTIAN HIEROGLYPH V032 +133A4 ; [.594B.0020.0002] # EGYPTIAN HIEROGLYPH V033 +133A5 ; [.594C.0020.0002] # EGYPTIAN HIEROGLYPH V033A +133A6 ; [.594D.0020.0002] # EGYPTIAN HIEROGLYPH V034 +133A7 ; [.594E.0020.0002] # EGYPTIAN HIEROGLYPH V035 +133A8 ; [.594F.0020.0002] # EGYPTIAN HIEROGLYPH V036 +133A9 ; [.5950.0020.0002] # EGYPTIAN HIEROGLYPH V037 +133AA ; [.5951.0020.0002] # EGYPTIAN HIEROGLYPH V037A +133AB ; [.5952.0020.0002] # EGYPTIAN HIEROGLYPH V038 +133AC ; [.5953.0020.0002] # EGYPTIAN HIEROGLYPH V039 +133AD ; [.5954.0020.0002] # EGYPTIAN HIEROGLYPH V040 +133AE ; [.5955.0020.0002] # EGYPTIAN HIEROGLYPH V040A +133AF ; [.5956.0020.0002] # EGYPTIAN HIEROGLYPH W001 +133B0 ; [.5957.0020.0002] # EGYPTIAN HIEROGLYPH W002 +133B1 ; [.5958.0020.0002] # EGYPTIAN HIEROGLYPH W003 +133B2 ; [.5959.0020.0002] # EGYPTIAN HIEROGLYPH W003A +133B3 ; [.595A.0020.0002] # EGYPTIAN HIEROGLYPH W004 +133B4 ; [.595B.0020.0002] # EGYPTIAN HIEROGLYPH W005 +133B5 ; [.595C.0020.0002] # EGYPTIAN HIEROGLYPH W006 +133B6 ; [.595D.0020.0002] # EGYPTIAN HIEROGLYPH W007 +133B7 ; [.595E.0020.0002] # EGYPTIAN HIEROGLYPH W008 +133B8 ; [.595F.0020.0002] # EGYPTIAN HIEROGLYPH W009 +133B9 ; [.5960.0020.0002] # EGYPTIAN HIEROGLYPH W009A +133BA ; [.5961.0020.0002] # EGYPTIAN HIEROGLYPH W010 +133BB ; [.5962.0020.0002] # EGYPTIAN HIEROGLYPH W010A +133BC ; [.5963.0020.0002] # EGYPTIAN HIEROGLYPH W011 +133BD ; [.5964.0020.0002] # EGYPTIAN HIEROGLYPH W012 +133BE ; [.5965.0020.0002] # EGYPTIAN HIEROGLYPH W013 +133BF ; [.5966.0020.0002] # EGYPTIAN HIEROGLYPH W014 +133C0 ; [.5967.0020.0002] # EGYPTIAN HIEROGLYPH W014A +133C1 ; [.5968.0020.0002] # EGYPTIAN HIEROGLYPH W015 +133C2 ; [.5969.0020.0002] # EGYPTIAN HIEROGLYPH W016 +133C3 ; [.596A.0020.0002] # EGYPTIAN HIEROGLYPH W017 +133C4 ; [.596B.0020.0002] # EGYPTIAN HIEROGLYPH W017A +133C5 ; [.596C.0020.0002] # EGYPTIAN HIEROGLYPH W018 +133C6 ; [.596D.0020.0002] # EGYPTIAN HIEROGLYPH W018A +133C7 ; [.596E.0020.0002] # EGYPTIAN HIEROGLYPH W019 +133C8 ; [.596F.0020.0002] # EGYPTIAN HIEROGLYPH W020 +133C9 ; [.5970.0020.0002] # EGYPTIAN HIEROGLYPH W021 +133CA ; [.5971.0020.0002] # EGYPTIAN HIEROGLYPH W022 +133CB ; [.5972.0020.0002] # EGYPTIAN HIEROGLYPH W023 +133CC ; [.5973.0020.0002] # EGYPTIAN HIEROGLYPH W024 +133CD ; [.5974.0020.0002] # EGYPTIAN HIEROGLYPH W024A +133CE ; [.5975.0020.0002] # EGYPTIAN HIEROGLYPH W025 +133CF ; [.5976.0020.0002] # EGYPTIAN HIEROGLYPH X001 +133D0 ; [.5977.0020.0002] # EGYPTIAN HIEROGLYPH X002 +133D1 ; [.5978.0020.0002] # EGYPTIAN HIEROGLYPH X003 +133D2 ; [.5979.0020.0002] # EGYPTIAN HIEROGLYPH X004 +133D3 ; [.597A.0020.0002] # EGYPTIAN HIEROGLYPH X004A +133D4 ; [.597B.0020.0002] # EGYPTIAN HIEROGLYPH X004B +133D5 ; [.597C.0020.0002] # EGYPTIAN HIEROGLYPH X005 +133D6 ; [.597D.0020.0002] # EGYPTIAN HIEROGLYPH X006 +133D7 ; [.597E.0020.0002] # EGYPTIAN HIEROGLYPH X006A +133D8 ; [.597F.0020.0002] # EGYPTIAN HIEROGLYPH X007 +133D9 ; [.5980.0020.0002] # EGYPTIAN HIEROGLYPH X008 +133DA ; [.5981.0020.0002] # EGYPTIAN HIEROGLYPH X008A +133DB ; [.5982.0020.0002] # EGYPTIAN HIEROGLYPH Y001 +133DC ; [.5983.0020.0002] # EGYPTIAN HIEROGLYPH Y001A +133DD ; [.5984.0020.0002] # EGYPTIAN HIEROGLYPH Y002 +133DE ; [.5985.0020.0002] # EGYPTIAN HIEROGLYPH Y003 +133DF ; [.5986.0020.0002] # EGYPTIAN HIEROGLYPH Y004 +133E0 ; [.5987.0020.0002] # EGYPTIAN HIEROGLYPH Y005 +133E1 ; [.5988.0020.0002] # EGYPTIAN HIEROGLYPH Y006 +133E2 ; [.5989.0020.0002] # EGYPTIAN HIEROGLYPH Y007 +133E3 ; [.598A.0020.0002] # EGYPTIAN HIEROGLYPH Y008 +133E4 ; [.598B.0020.0002] # EGYPTIAN HIEROGLYPH Z001 +133E5 ; [.598C.0020.0002] # EGYPTIAN HIEROGLYPH Z002 +133E6 ; [.598D.0020.0002] # EGYPTIAN HIEROGLYPH Z002A +133E7 ; [.598E.0020.0002] # EGYPTIAN HIEROGLYPH Z002B +133E8 ; [.598F.0020.0002] # EGYPTIAN HIEROGLYPH Z002C +133E9 ; [.5990.0020.0002] # EGYPTIAN HIEROGLYPH Z002D +133EA ; [.5991.0020.0002] # EGYPTIAN HIEROGLYPH Z003 +133EB ; [.5992.0020.0002] # EGYPTIAN HIEROGLYPH Z003A +133EC ; [.5993.0020.0002] # EGYPTIAN HIEROGLYPH Z003B +133ED ; [.5994.0020.0002] # EGYPTIAN HIEROGLYPH Z004 +133EE ; [.5995.0020.0002] # EGYPTIAN HIEROGLYPH Z004A +133EF ; [.5996.0020.0002] # EGYPTIAN HIEROGLYPH Z005 +133F0 ; [.5997.0020.0002] # EGYPTIAN HIEROGLYPH Z005A +133F1 ; [.5998.0020.0002] # EGYPTIAN HIEROGLYPH Z006 +133F2 ; [.5999.0020.0002] # EGYPTIAN HIEROGLYPH Z007 +133F3 ; [.599A.0020.0002] # EGYPTIAN HIEROGLYPH Z008 +133F4 ; [.599B.0020.0002] # EGYPTIAN HIEROGLYPH Z009 +133F5 ; [.599C.0020.0002] # EGYPTIAN HIEROGLYPH Z010 +133F6 ; [.599D.0020.0002] # EGYPTIAN HIEROGLYPH Z011 +133F7 ; [.599E.0020.0002] # EGYPTIAN HIEROGLYPH Z012 +133F8 ; [.599F.0020.0002] # EGYPTIAN HIEROGLYPH Z013 +133F9 ; [.59A0.0020.0002] # EGYPTIAN HIEROGLYPH Z014 +133FA ; [.59A1.0020.0002] # EGYPTIAN HIEROGLYPH Z015 +133FB ; [.59A2.0020.0002] # EGYPTIAN HIEROGLYPH Z015A +133FC ; [.59A3.0020.0002] # EGYPTIAN HIEROGLYPH Z015B +133FD ; [.59A4.0020.0002] # EGYPTIAN HIEROGLYPH Z015C +133FE ; [.59A5.0020.0002] # EGYPTIAN HIEROGLYPH Z015D +133FF ; [.59A6.0020.0002] # EGYPTIAN HIEROGLYPH Z015E +13400 ; [.59A7.0020.0002] # EGYPTIAN HIEROGLYPH Z015F +13401 ; [.59A8.0020.0002] # EGYPTIAN HIEROGLYPH Z015G +13402 ; [.59A9.0020.0002] # EGYPTIAN HIEROGLYPH Z015H +13403 ; [.59AA.0020.0002] # EGYPTIAN HIEROGLYPH Z015I +13404 ; [.59AB.0020.0002] # EGYPTIAN HIEROGLYPH Z016 +13405 ; [.59AC.0020.0002] # EGYPTIAN HIEROGLYPH Z016A +13406 ; [.59AD.0020.0002] # EGYPTIAN HIEROGLYPH Z016B +13407 ; [.59AE.0020.0002] # EGYPTIAN HIEROGLYPH Z016C +13408 ; [.59AF.0020.0002] # EGYPTIAN HIEROGLYPH Z016D +13409 ; [.59B0.0020.0002] # EGYPTIAN HIEROGLYPH Z016E +1340A ; [.59B1.0020.0002] # EGYPTIAN HIEROGLYPH Z016F +1340B ; [.59B2.0020.0002] # EGYPTIAN HIEROGLYPH Z016G +1340C ; [.59B3.0020.0002] # EGYPTIAN HIEROGLYPH Z016H +1340D ; [.59B4.0020.0002] # EGYPTIAN HIEROGLYPH AA001 +1340E ; [.59B5.0020.0002] # EGYPTIAN HIEROGLYPH AA002 +1340F ; [.59B6.0020.0002] # EGYPTIAN HIEROGLYPH AA003 +13410 ; [.59B7.0020.0002] # EGYPTIAN HIEROGLYPH AA004 +13411 ; [.59B8.0020.0002] # EGYPTIAN HIEROGLYPH AA005 +13412 ; [.59B9.0020.0002] # EGYPTIAN HIEROGLYPH AA006 +13413 ; [.59BA.0020.0002] # EGYPTIAN HIEROGLYPH AA007 +13414 ; [.59BB.0020.0002] # EGYPTIAN HIEROGLYPH AA007A +13415 ; [.59BC.0020.0002] # EGYPTIAN HIEROGLYPH AA007B +13416 ; [.59BD.0020.0002] # EGYPTIAN HIEROGLYPH AA008 +13417 ; [.59BE.0020.0002] # EGYPTIAN HIEROGLYPH AA009 +13418 ; [.59BF.0020.0002] # EGYPTIAN HIEROGLYPH AA010 +13419 ; [.59C0.0020.0002] # EGYPTIAN HIEROGLYPH AA011 +1341A ; [.59C1.0020.0002] # EGYPTIAN HIEROGLYPH AA012 +1341B ; [.59C2.0020.0002] # EGYPTIAN HIEROGLYPH AA013 +1341C ; [.59C3.0020.0002] # EGYPTIAN HIEROGLYPH AA014 +1341D ; [.59C4.0020.0002] # EGYPTIAN HIEROGLYPH AA015 +1341E ; [.59C5.0020.0002] # EGYPTIAN HIEROGLYPH AA016 +1341F ; [.59C6.0020.0002] # EGYPTIAN HIEROGLYPH AA017 +13420 ; [.59C7.0020.0002] # EGYPTIAN HIEROGLYPH AA018 +13421 ; [.59C8.0020.0002] # EGYPTIAN HIEROGLYPH AA019 +13422 ; [.59C9.0020.0002] # EGYPTIAN HIEROGLYPH AA020 +13423 ; [.59CA.0020.0002] # EGYPTIAN HIEROGLYPH AA021 +13424 ; [.59CB.0020.0002] # EGYPTIAN HIEROGLYPH AA022 +13425 ; [.59CC.0020.0002] # EGYPTIAN HIEROGLYPH AA023 +13426 ; [.59CD.0020.0002] # EGYPTIAN HIEROGLYPH AA024 +13427 ; [.59CE.0020.0002] # EGYPTIAN HIEROGLYPH AA025 +13428 ; [.59CF.0020.0002] # EGYPTIAN HIEROGLYPH AA026 +13429 ; [.59D0.0020.0002] # EGYPTIAN HIEROGLYPH AA027 +1342A ; [.59D1.0020.0002] # EGYPTIAN HIEROGLYPH AA028 +1342B ; [.59D2.0020.0002] # EGYPTIAN HIEROGLYPH AA029 +1342C ; [.59D3.0020.0002] # EGYPTIAN HIEROGLYPH AA030 +1342D ; [.59D4.0020.0002] # EGYPTIAN HIEROGLYPH AA031 +1342E ; [.59D5.0020.0002] # EGYPTIAN HIEROGLYPH AA032 +109A0 ; [.59D6.0020.0002] # MEROITIC CURSIVE LETTER A +10980 ; [.59D6.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER A +109A1 ; [.59D7.0020.0002] # MEROITIC CURSIVE LETTER E +10981 ; [.59D7.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER E +109A2 ; [.59D8.0020.0002] # MEROITIC CURSIVE LETTER I +10982 ; [.59D8.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER I +109A3 ; [.59D9.0020.0002] # MEROITIC CURSIVE LETTER O +10983 ; [.59D9.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER O +109A4 ; [.59DA.0020.0002] # MEROITIC CURSIVE LETTER YA +10984 ; [.59DA.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER YA +109A5 ; [.59DB.0020.0002] # MEROITIC CURSIVE LETTER WA +10985 ; [.59DB.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER WA +109A6 ; [.59DC.0020.0002] # MEROITIC CURSIVE LETTER BA +10986 ; [.59DC.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER BA +10987 ; [.59DC.0020.0004][.0000.0119.0004] # MEROITIC HIEROGLYPHIC LETTER BA-2 +109A7 ; [.59DD.0020.0002] # MEROITIC CURSIVE LETTER PA +10988 ; [.59DD.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER PA +109A8 ; [.59DE.0020.0002] # MEROITIC CURSIVE LETTER MA +10989 ; [.59DE.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER MA +109A9 ; [.59DF.0020.0002] # MEROITIC CURSIVE LETTER NA +1098A ; [.59DF.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER NA +1098B ; [.59DF.0020.0004][.0000.0119.0004] # MEROITIC HIEROGLYPHIC LETTER NA-2 +109AA ; [.59E0.0020.0002] # MEROITIC CURSIVE LETTER NE +1098C ; [.59E0.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER NE +1098D ; [.59E0.0020.0004][.0000.0119.0004] # MEROITIC HIEROGLYPHIC LETTER NE-2 +109AB ; [.59E1.0020.0002] # MEROITIC CURSIVE LETTER RA +1098E ; [.59E1.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER RA +1098F ; [.59E1.0020.0004][.0000.0119.0004] # MEROITIC HIEROGLYPHIC LETTER RA-2 +109AC ; [.59E2.0020.0002] # MEROITIC CURSIVE LETTER LA +10990 ; [.59E2.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER LA +109AD ; [.59E3.0020.0002] # MEROITIC CURSIVE LETTER KHA +10991 ; [.59E3.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER KHA +109AE ; [.59E4.0020.0002] # MEROITIC CURSIVE LETTER HHA +10992 ; [.59E4.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER HHA +109AF ; [.59E5.0020.0002] # MEROITIC CURSIVE LETTER SA +109B0 ; [.59E5.0020.0004][.0000.0118.0004] # MEROITIC CURSIVE LETTER ARCHAIC SA +10993 ; [.59E5.0020.0004][.0000.0119.0004] # MEROITIC HIEROGLYPHIC LETTER SA +10994 ; [.59E5.0020.0004][.0000.011A.0004] # MEROITIC HIEROGLYPHIC LETTER SA-2 +109B1 ; [.59E6.0020.0002] # MEROITIC CURSIVE LETTER SE +10995 ; [.59E6.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER SE +109B2 ; [.59E7.0020.0002] # MEROITIC CURSIVE LETTER KA +10996 ; [.59E7.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER KA +109B3 ; [.59E8.0020.0002] # MEROITIC CURSIVE LETTER QA +10997 ; [.59E8.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER QA +109B4 ; [.59E9.0020.0002] # MEROITIC CURSIVE LETTER TA +10998 ; [.59E9.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER TA +10999 ; [.59E9.0020.0004][.0000.0119.0004] # MEROITIC HIEROGLYPHIC LETTER TA-2 +109B5 ; [.59EA.0020.0002] # MEROITIC CURSIVE LETTER TE +1099A ; [.59EA.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER TE +1099B ; [.59EA.0020.0004][.0000.0119.0004] # MEROITIC HIEROGLYPHIC LETTER TE-2 +109B6 ; [.59EB.0020.0002] # MEROITIC CURSIVE LETTER TO +1099C ; [.59EB.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER TO +109B7 ; [.59EC.0020.0002] # MEROITIC CURSIVE LETTER DA +1099D ; [.59EC.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER DA +109BE ; [.59ED.0020.0002] # MEROITIC CURSIVE LOGOGRAM RMT +109BF ; [.59EE.0020.0002] # MEROITIC CURSIVE LOGOGRAM IMN +1099E ; [.59EF.0020.0002] # MEROITIC HIEROGLYPHIC SYMBOL VIDJ +1099F ; [.59F0.0020.0002] # MEROITIC HIEROGLYPHIC SYMBOL VIDJ-2 +14400 ; [.59F1.0020.0002] # ANATOLIAN HIEROGLYPH A001 +14401 ; [.59F2.0020.0002] # ANATOLIAN HIEROGLYPH A002 +14402 ; [.59F3.0020.0002] # ANATOLIAN HIEROGLYPH A003 +14403 ; [.59F4.0020.0002] # ANATOLIAN HIEROGLYPH A004 +14404 ; [.59F5.0020.0002] # ANATOLIAN HIEROGLYPH A005 +14405 ; [.59F6.0020.0002] # ANATOLIAN HIEROGLYPH A006 +14406 ; [.59F7.0020.0002] # ANATOLIAN HIEROGLYPH A007 +14407 ; [.59F8.0020.0002] # ANATOLIAN HIEROGLYPH A008 +14408 ; [.59F9.0020.0002] # ANATOLIAN HIEROGLYPH A009 +14409 ; [.59FA.0020.0002] # ANATOLIAN HIEROGLYPH A010 +1440A ; [.59FB.0020.0002] # ANATOLIAN HIEROGLYPH A010A +1440B ; [.59FC.0020.0002] # ANATOLIAN HIEROGLYPH A011 +1440C ; [.59FD.0020.0002] # ANATOLIAN HIEROGLYPH A012 +1440D ; [.59FE.0020.0002] # ANATOLIAN HIEROGLYPH A013 +1440E ; [.59FF.0020.0002] # ANATOLIAN HIEROGLYPH A014 +1440F ; [.5A00.0020.0002] # ANATOLIAN HIEROGLYPH A015 +14410 ; [.5A01.0020.0002] # ANATOLIAN HIEROGLYPH A016 +14411 ; [.5A02.0020.0002] # ANATOLIAN HIEROGLYPH A017 +14412 ; [.5A03.0020.0002] # ANATOLIAN HIEROGLYPH A018 +14413 ; [.5A04.0020.0002] # ANATOLIAN HIEROGLYPH A019 +14414 ; [.5A05.0020.0002] # ANATOLIAN HIEROGLYPH A020 +14415 ; [.5A06.0020.0002] # ANATOLIAN HIEROGLYPH A021 +14416 ; [.5A07.0020.0002] # ANATOLIAN HIEROGLYPH A022 +14417 ; [.5A08.0020.0002] # ANATOLIAN HIEROGLYPH A023 +14418 ; [.5A09.0020.0002] # ANATOLIAN HIEROGLYPH A024 +14419 ; [.5A0A.0020.0002] # ANATOLIAN HIEROGLYPH A025 +1441A ; [.5A0B.0020.0002] # ANATOLIAN HIEROGLYPH A026 +1441B ; [.5A0C.0020.0002] # ANATOLIAN HIEROGLYPH A026A +1441C ; [.5A0D.0020.0002] # ANATOLIAN HIEROGLYPH A027 +1441D ; [.5A0E.0020.0002] # ANATOLIAN HIEROGLYPH A028 +1441E ; [.5A0F.0020.0002] # ANATOLIAN HIEROGLYPH A029 +1441F ; [.5A10.0020.0002] # ANATOLIAN HIEROGLYPH A030 +14420 ; [.5A11.0020.0002] # ANATOLIAN HIEROGLYPH A031 +14421 ; [.5A12.0020.0002] # ANATOLIAN HIEROGLYPH A032 +14422 ; [.5A13.0020.0002] # ANATOLIAN HIEROGLYPH A033 +14423 ; [.5A14.0020.0002] # ANATOLIAN HIEROGLYPH A034 +14424 ; [.5A15.0020.0002] # ANATOLIAN HIEROGLYPH A035 +14425 ; [.5A16.0020.0002] # ANATOLIAN HIEROGLYPH A036 +14426 ; [.5A17.0020.0002] # ANATOLIAN HIEROGLYPH A037 +14427 ; [.5A18.0020.0002] # ANATOLIAN HIEROGLYPH A038 +14428 ; [.5A19.0020.0002] # ANATOLIAN HIEROGLYPH A039 +14429 ; [.5A1A.0020.0002] # ANATOLIAN HIEROGLYPH A039A +1442A ; [.5A1B.0020.0002] # ANATOLIAN HIEROGLYPH A040 +1442B ; [.5A1C.0020.0002] # ANATOLIAN HIEROGLYPH A041 +1442C ; [.5A1D.0020.0002] # ANATOLIAN HIEROGLYPH A041A +1442D ; [.5A1E.0020.0002] # ANATOLIAN HIEROGLYPH A042 +1442E ; [.5A1F.0020.0002] # ANATOLIAN HIEROGLYPH A043 +1442F ; [.5A20.0020.0002] # ANATOLIAN HIEROGLYPH A044 +14430 ; [.5A21.0020.0002] # ANATOLIAN HIEROGLYPH A045 +14431 ; [.5A22.0020.0002] # ANATOLIAN HIEROGLYPH A045A +14432 ; [.5A23.0020.0002] # ANATOLIAN HIEROGLYPH A046 +14433 ; [.5A24.0020.0002] # ANATOLIAN HIEROGLYPH A046A +14434 ; [.5A25.0020.0002] # ANATOLIAN HIEROGLYPH A046B +14435 ; [.5A26.0020.0002] # ANATOLIAN HIEROGLYPH A047 +14436 ; [.5A27.0020.0002] # ANATOLIAN HIEROGLYPH A048 +14437 ; [.5A28.0020.0002] # ANATOLIAN HIEROGLYPH A049 +14438 ; [.5A29.0020.0002] # ANATOLIAN HIEROGLYPH A050 +14439 ; [.5A2A.0020.0002] # ANATOLIAN HIEROGLYPH A051 +1443A ; [.5A2B.0020.0002] # ANATOLIAN HIEROGLYPH A052 +1443B ; [.5A2C.0020.0002] # ANATOLIAN HIEROGLYPH A053 +1443C ; [.5A2D.0020.0002] # ANATOLIAN HIEROGLYPH A054 +1443D ; [.5A2E.0020.0002] # ANATOLIAN HIEROGLYPH A055 +1443E ; [.5A2F.0020.0002] # ANATOLIAN HIEROGLYPH A056 +1443F ; [.5A30.0020.0002] # ANATOLIAN HIEROGLYPH A057 +14440 ; [.5A31.0020.0002] # ANATOLIAN HIEROGLYPH A058 +14441 ; [.5A32.0020.0002] # ANATOLIAN HIEROGLYPH A059 +14442 ; [.5A33.0020.0002] # ANATOLIAN HIEROGLYPH A060 +14443 ; [.5A34.0020.0002] # ANATOLIAN HIEROGLYPH A061 +14444 ; [.5A35.0020.0002] # ANATOLIAN HIEROGLYPH A062 +14445 ; [.5A36.0020.0002] # ANATOLIAN HIEROGLYPH A063 +14446 ; [.5A37.0020.0002] # ANATOLIAN HIEROGLYPH A064 +14447 ; [.5A38.0020.0002] # ANATOLIAN HIEROGLYPH A065 +14448 ; [.5A39.0020.0002] # ANATOLIAN HIEROGLYPH A066 +14449 ; [.5A3A.0020.0002] # ANATOLIAN HIEROGLYPH A066A +1444A ; [.5A3B.0020.0002] # ANATOLIAN HIEROGLYPH A066B +1444B ; [.5A3C.0020.0002] # ANATOLIAN HIEROGLYPH A066C +1444C ; [.5A3D.0020.0002] # ANATOLIAN HIEROGLYPH A067 +1444D ; [.5A3E.0020.0002] # ANATOLIAN HIEROGLYPH A068 +1444E ; [.5A3F.0020.0002] # ANATOLIAN HIEROGLYPH A069 +1444F ; [.5A40.0020.0002] # ANATOLIAN HIEROGLYPH A070 +14450 ; [.5A41.0020.0002] # ANATOLIAN HIEROGLYPH A071 +14451 ; [.5A42.0020.0002] # ANATOLIAN HIEROGLYPH A072 +14452 ; [.5A43.0020.0002] # ANATOLIAN HIEROGLYPH A073 +14453 ; [.5A44.0020.0002] # ANATOLIAN HIEROGLYPH A074 +14454 ; [.5A45.0020.0002] # ANATOLIAN HIEROGLYPH A075 +14455 ; [.5A46.0020.0002] # ANATOLIAN HIEROGLYPH A076 +14456 ; [.5A47.0020.0002] # ANATOLIAN HIEROGLYPH A077 +14457 ; [.5A48.0020.0002] # ANATOLIAN HIEROGLYPH A078 +14458 ; [.5A49.0020.0002] # ANATOLIAN HIEROGLYPH A079 +14459 ; [.5A4A.0020.0002] # ANATOLIAN HIEROGLYPH A080 +1445A ; [.5A4B.0020.0002] # ANATOLIAN HIEROGLYPH A081 +1445B ; [.5A4C.0020.0002] # ANATOLIAN HIEROGLYPH A082 +1445C ; [.5A4D.0020.0002] # ANATOLIAN HIEROGLYPH A083 +1445D ; [.5A4E.0020.0002] # ANATOLIAN HIEROGLYPH A084 +1445E ; [.5A4F.0020.0002] # ANATOLIAN HIEROGLYPH A085 +1445F ; [.5A50.0020.0002] # ANATOLIAN HIEROGLYPH A086 +14460 ; [.5A51.0020.0002] # ANATOLIAN HIEROGLYPH A087 +14461 ; [.5A52.0020.0002] # ANATOLIAN HIEROGLYPH A088 +14462 ; [.5A53.0020.0002] # ANATOLIAN HIEROGLYPH A089 +14463 ; [.5A54.0020.0002] # ANATOLIAN HIEROGLYPH A090 +14464 ; [.5A55.0020.0002] # ANATOLIAN HIEROGLYPH A091 +14465 ; [.5A56.0020.0002] # ANATOLIAN HIEROGLYPH A092 +14466 ; [.5A57.0020.0002] # ANATOLIAN HIEROGLYPH A093 +14467 ; [.5A58.0020.0002] # ANATOLIAN HIEROGLYPH A094 +14468 ; [.5A59.0020.0002] # ANATOLIAN HIEROGLYPH A095 +14469 ; [.5A5A.0020.0002] # ANATOLIAN HIEROGLYPH A096 +1446A ; [.5A5B.0020.0002] # ANATOLIAN HIEROGLYPH A097 +1446B ; [.5A5C.0020.0002] # ANATOLIAN HIEROGLYPH A097A +1446C ; [.5A5D.0020.0002] # ANATOLIAN HIEROGLYPH A098 +1446D ; [.5A5E.0020.0002] # ANATOLIAN HIEROGLYPH A098A +1446E ; [.5A5F.0020.0002] # ANATOLIAN HIEROGLYPH A099 +1446F ; [.5A60.0020.0002] # ANATOLIAN HIEROGLYPH A100 +14470 ; [.5A61.0020.0002] # ANATOLIAN HIEROGLYPH A100A +14471 ; [.5A62.0020.0002] # ANATOLIAN HIEROGLYPH A101 +14472 ; [.5A63.0020.0002] # ANATOLIAN HIEROGLYPH A101A +14473 ; [.5A64.0020.0002] # ANATOLIAN HIEROGLYPH A102 +14474 ; [.5A65.0020.0002] # ANATOLIAN HIEROGLYPH A102A +14475 ; [.5A66.0020.0002] # ANATOLIAN HIEROGLYPH A103 +14476 ; [.5A67.0020.0002] # ANATOLIAN HIEROGLYPH A104 +14477 ; [.5A68.0020.0002] # ANATOLIAN HIEROGLYPH A104A +14478 ; [.5A69.0020.0002] # ANATOLIAN HIEROGLYPH A104B +14479 ; [.5A6A.0020.0002] # ANATOLIAN HIEROGLYPH A104C +1447A ; [.5A6B.0020.0002] # ANATOLIAN HIEROGLYPH A105 +1447B ; [.5A6C.0020.0002] # ANATOLIAN HIEROGLYPH A105A +1447C ; [.5A6D.0020.0002] # ANATOLIAN HIEROGLYPH A105B +1447D ; [.5A6E.0020.0002] # ANATOLIAN HIEROGLYPH A106 +1447E ; [.5A6F.0020.0002] # ANATOLIAN HIEROGLYPH A107 +1447F ; [.5A70.0020.0002] # ANATOLIAN HIEROGLYPH A107A +14480 ; [.5A71.0020.0002] # ANATOLIAN HIEROGLYPH A107B +14481 ; [.5A72.0020.0002] # ANATOLIAN HIEROGLYPH A107C +14482 ; [.5A73.0020.0002] # ANATOLIAN HIEROGLYPH A108 +14483 ; [.5A74.0020.0002] # ANATOLIAN HIEROGLYPH A109 +14484 ; [.5A75.0020.0002] # ANATOLIAN HIEROGLYPH A110 +14485 ; [.5A76.0020.0002] # ANATOLIAN HIEROGLYPH A110A +14486 ; [.5A77.0020.0002] # ANATOLIAN HIEROGLYPH A110B +14487 ; [.5A78.0020.0002] # ANATOLIAN HIEROGLYPH A111 +14488 ; [.5A79.0020.0002] # ANATOLIAN HIEROGLYPH A112 +14489 ; [.5A7A.0020.0002] # ANATOLIAN HIEROGLYPH A113 +1448A ; [.5A7B.0020.0002] # ANATOLIAN HIEROGLYPH A114 +1448B ; [.5A7C.0020.0002] # ANATOLIAN HIEROGLYPH A115 +1448C ; [.5A7D.0020.0002] # ANATOLIAN HIEROGLYPH A115A +1448D ; [.5A7E.0020.0002] # ANATOLIAN HIEROGLYPH A116 +1448E ; [.5A7F.0020.0002] # ANATOLIAN HIEROGLYPH A117 +1448F ; [.5A80.0020.0002] # ANATOLIAN HIEROGLYPH A118 +14490 ; [.5A81.0020.0002] # ANATOLIAN HIEROGLYPH A119 +14491 ; [.5A82.0020.0002] # ANATOLIAN HIEROGLYPH A120 +14492 ; [.5A83.0020.0002] # ANATOLIAN HIEROGLYPH A121 +14493 ; [.5A84.0020.0002] # ANATOLIAN HIEROGLYPH A122 +14494 ; [.5A85.0020.0002] # ANATOLIAN HIEROGLYPH A123 +14495 ; [.5A86.0020.0002] # ANATOLIAN HIEROGLYPH A124 +14496 ; [.5A87.0020.0002] # ANATOLIAN HIEROGLYPH A125 +14497 ; [.5A88.0020.0002] # ANATOLIAN HIEROGLYPH A125A +14498 ; [.5A89.0020.0002] # ANATOLIAN HIEROGLYPH A126 +14499 ; [.5A8A.0020.0002] # ANATOLIAN HIEROGLYPH A127 +1449A ; [.5A8B.0020.0002] # ANATOLIAN HIEROGLYPH A128 +1449B ; [.5A8C.0020.0002] # ANATOLIAN HIEROGLYPH A129 +1449C ; [.5A8D.0020.0002] # ANATOLIAN HIEROGLYPH A130 +1449D ; [.5A8E.0020.0002] # ANATOLIAN HIEROGLYPH A131 +1449E ; [.5A8F.0020.0002] # ANATOLIAN HIEROGLYPH A132 +1449F ; [.5A90.0020.0002] # ANATOLIAN HIEROGLYPH A133 +144A0 ; [.5A91.0020.0002] # ANATOLIAN HIEROGLYPH A134 +144A1 ; [.5A92.0020.0002] # ANATOLIAN HIEROGLYPH A135 +144A2 ; [.5A93.0020.0002] # ANATOLIAN HIEROGLYPH A135A +144A3 ; [.5A94.0020.0002] # ANATOLIAN HIEROGLYPH A136 +144A4 ; [.5A95.0020.0002] # ANATOLIAN HIEROGLYPH A137 +144A5 ; [.5A96.0020.0002] # ANATOLIAN HIEROGLYPH A138 +144A6 ; [.5A97.0020.0002] # ANATOLIAN HIEROGLYPH A139 +144A7 ; [.5A98.0020.0002] # ANATOLIAN HIEROGLYPH A140 +144A8 ; [.5A99.0020.0002] # ANATOLIAN HIEROGLYPH A141 +144A9 ; [.5A9A.0020.0002] # ANATOLIAN HIEROGLYPH A142 +144AA ; [.5A9B.0020.0002] # ANATOLIAN HIEROGLYPH A143 +144AB ; [.5A9C.0020.0002] # ANATOLIAN HIEROGLYPH A144 +144AC ; [.5A9D.0020.0002] # ANATOLIAN HIEROGLYPH A145 +144AD ; [.5A9E.0020.0002] # ANATOLIAN HIEROGLYPH A146 +144AE ; [.5A9F.0020.0002] # ANATOLIAN HIEROGLYPH A147 +144AF ; [.5AA0.0020.0002] # ANATOLIAN HIEROGLYPH A148 +144B0 ; [.5AA1.0020.0002] # ANATOLIAN HIEROGLYPH A149 +144B1 ; [.5AA2.0020.0002] # ANATOLIAN HIEROGLYPH A150 +144B2 ; [.5AA3.0020.0002] # ANATOLIAN HIEROGLYPH A151 +144B3 ; [.5AA4.0020.0002] # ANATOLIAN HIEROGLYPH A152 +144B4 ; [.5AA5.0020.0002] # ANATOLIAN HIEROGLYPH A153 +144B5 ; [.5AA6.0020.0002] # ANATOLIAN HIEROGLYPH A154 +144B6 ; [.5AA7.0020.0002] # ANATOLIAN HIEROGLYPH A155 +144B7 ; [.5AA8.0020.0002] # ANATOLIAN HIEROGLYPH A156 +144B8 ; [.5AA9.0020.0002] # ANATOLIAN HIEROGLYPH A157 +144B9 ; [.5AAA.0020.0002] # ANATOLIAN HIEROGLYPH A158 +144BA ; [.5AAB.0020.0002] # ANATOLIAN HIEROGLYPH A159 +144BB ; [.5AAC.0020.0002] # ANATOLIAN HIEROGLYPH A160 +144BC ; [.5AAD.0020.0002] # ANATOLIAN HIEROGLYPH A161 +144BD ; [.5AAE.0020.0002] # ANATOLIAN HIEROGLYPH A162 +144BE ; [.5AAF.0020.0002] # ANATOLIAN HIEROGLYPH A163 +144BF ; [.5AB0.0020.0002] # ANATOLIAN HIEROGLYPH A164 +144C0 ; [.5AB1.0020.0002] # ANATOLIAN HIEROGLYPH A165 +144C1 ; [.5AB2.0020.0002] # ANATOLIAN HIEROGLYPH A166 +144C2 ; [.5AB3.0020.0002] # ANATOLIAN HIEROGLYPH A167 +144C3 ; [.5AB4.0020.0002] # ANATOLIAN HIEROGLYPH A168 +144C4 ; [.5AB5.0020.0002] # ANATOLIAN HIEROGLYPH A169 +144C5 ; [.5AB6.0020.0002] # ANATOLIAN HIEROGLYPH A170 +144C6 ; [.5AB7.0020.0002] # ANATOLIAN HIEROGLYPH A171 +144C7 ; [.5AB8.0020.0002] # ANATOLIAN HIEROGLYPH A172 +144C8 ; [.5AB9.0020.0002] # ANATOLIAN HIEROGLYPH A173 +144C9 ; [.5ABA.0020.0002] # ANATOLIAN HIEROGLYPH A174 +144CA ; [.5ABB.0020.0002] # ANATOLIAN HIEROGLYPH A175 +144CB ; [.5ABC.0020.0002] # ANATOLIAN HIEROGLYPH A176 +144CC ; [.5ABD.0020.0002] # ANATOLIAN HIEROGLYPH A177 +144CD ; [.5ABE.0020.0002] # ANATOLIAN HIEROGLYPH A178 +144CE ; [.5ABF.0020.0002] # ANATOLIAN HIEROGLYPH A179 +144CF ; [.5AC0.0020.0002] # ANATOLIAN HIEROGLYPH A180 +144D0 ; [.5AC1.0020.0002] # ANATOLIAN HIEROGLYPH A181 +144D1 ; [.5AC2.0020.0002] # ANATOLIAN HIEROGLYPH A182 +144D2 ; [.5AC3.0020.0002] # ANATOLIAN HIEROGLYPH A183 +144D3 ; [.5AC4.0020.0002] # ANATOLIAN HIEROGLYPH A184 +144D4 ; [.5AC5.0020.0002] # ANATOLIAN HIEROGLYPH A185 +144D5 ; [.5AC6.0020.0002] # ANATOLIAN HIEROGLYPH A186 +144D6 ; [.5AC7.0020.0002] # ANATOLIAN HIEROGLYPH A187 +144D7 ; [.5AC8.0020.0002] # ANATOLIAN HIEROGLYPH A188 +144D8 ; [.5AC9.0020.0002] # ANATOLIAN HIEROGLYPH A189 +144D9 ; [.5ACA.0020.0002] # ANATOLIAN HIEROGLYPH A190 +144DA ; [.5ACB.0020.0002] # ANATOLIAN HIEROGLYPH A191 +144DB ; [.5ACC.0020.0002] # ANATOLIAN HIEROGLYPH A192 +144DC ; [.5ACD.0020.0002] # ANATOLIAN HIEROGLYPH A193 +144DD ; [.5ACE.0020.0002] # ANATOLIAN HIEROGLYPH A194 +144DE ; [.5ACF.0020.0002] # ANATOLIAN HIEROGLYPH A195 +144DF ; [.5AD0.0020.0002] # ANATOLIAN HIEROGLYPH A196 +144E0 ; [.5AD1.0020.0002] # ANATOLIAN HIEROGLYPH A197 +144E1 ; [.5AD2.0020.0002] # ANATOLIAN HIEROGLYPH A198 +144E2 ; [.5AD3.0020.0002] # ANATOLIAN HIEROGLYPH A199 +144E3 ; [.5AD4.0020.0002] # ANATOLIAN HIEROGLYPH A200 +144E4 ; [.5AD5.0020.0002] # ANATOLIAN HIEROGLYPH A201 +144E5 ; [.5AD6.0020.0002] # ANATOLIAN HIEROGLYPH A202 +144E6 ; [.5AD7.0020.0002] # ANATOLIAN HIEROGLYPH A202A +144E7 ; [.5AD8.0020.0002] # ANATOLIAN HIEROGLYPH A202B +144E8 ; [.5AD9.0020.0002] # ANATOLIAN HIEROGLYPH A203 +144E9 ; [.5ADA.0020.0002] # ANATOLIAN HIEROGLYPH A204 +144EA ; [.5ADB.0020.0002] # ANATOLIAN HIEROGLYPH A205 +144EB ; [.5ADC.0020.0002] # ANATOLIAN HIEROGLYPH A206 +144EC ; [.5ADD.0020.0002] # ANATOLIAN HIEROGLYPH A207 +144ED ; [.5ADE.0020.0002] # ANATOLIAN HIEROGLYPH A207A +144EE ; [.5ADF.0020.0002] # ANATOLIAN HIEROGLYPH A208 +144EF ; [.5AE0.0020.0002] # ANATOLIAN HIEROGLYPH A209 +144F0 ; [.5AE1.0020.0002] # ANATOLIAN HIEROGLYPH A209A +144F1 ; [.5AE2.0020.0002] # ANATOLIAN HIEROGLYPH A210 +144F2 ; [.5AE3.0020.0002] # ANATOLIAN HIEROGLYPH A211 +144F3 ; [.5AE4.0020.0002] # ANATOLIAN HIEROGLYPH A212 +144F4 ; [.5AE5.0020.0002] # ANATOLIAN HIEROGLYPH A213 +144F5 ; [.5AE6.0020.0002] # ANATOLIAN HIEROGLYPH A214 +144F6 ; [.5AE7.0020.0002] # ANATOLIAN HIEROGLYPH A215 +144F7 ; [.5AE8.0020.0002] # ANATOLIAN HIEROGLYPH A215A +144F8 ; [.5AE9.0020.0002] # ANATOLIAN HIEROGLYPH A216 +144F9 ; [.5AEA.0020.0002] # ANATOLIAN HIEROGLYPH A216A +144FA ; [.5AEB.0020.0002] # ANATOLIAN HIEROGLYPH A217 +144FB ; [.5AEC.0020.0002] # ANATOLIAN HIEROGLYPH A218 +144FC ; [.5AED.0020.0002] # ANATOLIAN HIEROGLYPH A219 +144FD ; [.5AEE.0020.0002] # ANATOLIAN HIEROGLYPH A220 +144FE ; [.5AEF.0020.0002] # ANATOLIAN HIEROGLYPH A221 +144FF ; [.5AF0.0020.0002] # ANATOLIAN HIEROGLYPH A222 +14500 ; [.5AF1.0020.0002] # ANATOLIAN HIEROGLYPH A223 +14501 ; [.5AF2.0020.0002] # ANATOLIAN HIEROGLYPH A224 +14502 ; [.5AF3.0020.0002] # ANATOLIAN HIEROGLYPH A225 +14503 ; [.5AF4.0020.0002] # ANATOLIAN HIEROGLYPH A226 +14504 ; [.5AF5.0020.0002] # ANATOLIAN HIEROGLYPH A227 +14505 ; [.5AF6.0020.0002] # ANATOLIAN HIEROGLYPH A227A +14506 ; [.5AF7.0020.0002] # ANATOLIAN HIEROGLYPH A228 +14507 ; [.5AF8.0020.0002] # ANATOLIAN HIEROGLYPH A229 +14508 ; [.5AF9.0020.0002] # ANATOLIAN HIEROGLYPH A230 +14509 ; [.5AFA.0020.0002] # ANATOLIAN HIEROGLYPH A231 +1450A ; [.5AFB.0020.0002] # ANATOLIAN HIEROGLYPH A232 +1450B ; [.5AFC.0020.0002] # ANATOLIAN HIEROGLYPH A233 +1450C ; [.5AFD.0020.0002] # ANATOLIAN HIEROGLYPH A234 +1450D ; [.5AFE.0020.0002] # ANATOLIAN HIEROGLYPH A235 +1450E ; [.5AFF.0020.0002] # ANATOLIAN HIEROGLYPH A236 +1450F ; [.5B00.0020.0002] # ANATOLIAN HIEROGLYPH A237 +14510 ; [.5B01.0020.0002] # ANATOLIAN HIEROGLYPH A238 +14511 ; [.5B02.0020.0002] # ANATOLIAN HIEROGLYPH A239 +14512 ; [.5B03.0020.0002] # ANATOLIAN HIEROGLYPH A240 +14513 ; [.5B04.0020.0002] # ANATOLIAN HIEROGLYPH A241 +14514 ; [.5B05.0020.0002] # ANATOLIAN HIEROGLYPH A242 +14515 ; [.5B06.0020.0002] # ANATOLIAN HIEROGLYPH A243 +14516 ; [.5B07.0020.0002] # ANATOLIAN HIEROGLYPH A244 +14517 ; [.5B08.0020.0002] # ANATOLIAN HIEROGLYPH A245 +14518 ; [.5B09.0020.0002] # ANATOLIAN HIEROGLYPH A246 +14519 ; [.5B0A.0020.0002] # ANATOLIAN HIEROGLYPH A247 +1451A ; [.5B0B.0020.0002] # ANATOLIAN HIEROGLYPH A248 +1451B ; [.5B0C.0020.0002] # ANATOLIAN HIEROGLYPH A249 +1451C ; [.5B0D.0020.0002] # ANATOLIAN HIEROGLYPH A250 +1451D ; [.5B0E.0020.0002] # ANATOLIAN HIEROGLYPH A251 +1451E ; [.5B0F.0020.0002] # ANATOLIAN HIEROGLYPH A252 +1451F ; [.5B10.0020.0002] # ANATOLIAN HIEROGLYPH A253 +14520 ; [.5B11.0020.0002] # ANATOLIAN HIEROGLYPH A254 +14521 ; [.5B12.0020.0002] # ANATOLIAN HIEROGLYPH A255 +14522 ; [.5B13.0020.0002] # ANATOLIAN HIEROGLYPH A256 +14523 ; [.5B14.0020.0002] # ANATOLIAN HIEROGLYPH A257 +14524 ; [.5B15.0020.0002] # ANATOLIAN HIEROGLYPH A258 +14525 ; [.5B16.0020.0002] # ANATOLIAN HIEROGLYPH A259 +14526 ; [.5B17.0020.0002] # ANATOLIAN HIEROGLYPH A260 +14527 ; [.5B18.0020.0002] # ANATOLIAN HIEROGLYPH A261 +14528 ; [.5B19.0020.0002] # ANATOLIAN HIEROGLYPH A262 +14529 ; [.5B1A.0020.0002] # ANATOLIAN HIEROGLYPH A263 +1452A ; [.5B1B.0020.0002] # ANATOLIAN HIEROGLYPH A264 +1452B ; [.5B1C.0020.0002] # ANATOLIAN HIEROGLYPH A265 +1452C ; [.5B1D.0020.0002] # ANATOLIAN HIEROGLYPH A266 +1452D ; [.5B1E.0020.0002] # ANATOLIAN HIEROGLYPH A267 +1452E ; [.5B1F.0020.0002] # ANATOLIAN HIEROGLYPH A267A +1452F ; [.5B20.0020.0002] # ANATOLIAN HIEROGLYPH A268 +14530 ; [.5B21.0020.0002] # ANATOLIAN HIEROGLYPH A269 +14531 ; [.5B22.0020.0002] # ANATOLIAN HIEROGLYPH A270 +14532 ; [.5B23.0020.0002] # ANATOLIAN HIEROGLYPH A271 +14533 ; [.5B24.0020.0002] # ANATOLIAN HIEROGLYPH A272 +14534 ; [.5B25.0020.0002] # ANATOLIAN HIEROGLYPH A273 +14535 ; [.5B26.0020.0002] # ANATOLIAN HIEROGLYPH A274 +14536 ; [.5B27.0020.0002] # ANATOLIAN HIEROGLYPH A275 +14537 ; [.5B28.0020.0002] # ANATOLIAN HIEROGLYPH A276 +14538 ; [.5B29.0020.0002] # ANATOLIAN HIEROGLYPH A277 +14539 ; [.5B2A.0020.0002] # ANATOLIAN HIEROGLYPH A278 +1453A ; [.5B2B.0020.0002] # ANATOLIAN HIEROGLYPH A279 +1453B ; [.5B2C.0020.0002] # ANATOLIAN HIEROGLYPH A280 +1453C ; [.5B2D.0020.0002] # ANATOLIAN HIEROGLYPH A281 +1453D ; [.5B2E.0020.0002] # ANATOLIAN HIEROGLYPH A282 +1453E ; [.5B2F.0020.0002] # ANATOLIAN HIEROGLYPH A283 +1453F ; [.5B30.0020.0002] # ANATOLIAN HIEROGLYPH A284 +14540 ; [.5B31.0020.0002] # ANATOLIAN HIEROGLYPH A285 +14541 ; [.5B32.0020.0002] # ANATOLIAN HIEROGLYPH A286 +14542 ; [.5B33.0020.0002] # ANATOLIAN HIEROGLYPH A287 +14543 ; [.5B34.0020.0002] # ANATOLIAN HIEROGLYPH A288 +14544 ; [.5B35.0020.0002] # ANATOLIAN HIEROGLYPH A289 +14545 ; [.5B36.0020.0002] # ANATOLIAN HIEROGLYPH A289A +14546 ; [.5B37.0020.0002] # ANATOLIAN HIEROGLYPH A290 +14547 ; [.5B38.0020.0002] # ANATOLIAN HIEROGLYPH A291 +14548 ; [.5B39.0020.0002] # ANATOLIAN HIEROGLYPH A292 +14549 ; [.5B3A.0020.0002] # ANATOLIAN HIEROGLYPH A293 +1454A ; [.5B3B.0020.0002] # ANATOLIAN HIEROGLYPH A294 +1454B ; [.5B3C.0020.0002] # ANATOLIAN HIEROGLYPH A294A +1454C ; [.5B3D.0020.0002] # ANATOLIAN HIEROGLYPH A295 +1454D ; [.5B3E.0020.0002] # ANATOLIAN HIEROGLYPH A296 +1454E ; [.5B3F.0020.0002] # ANATOLIAN HIEROGLYPH A297 +1454F ; [.5B40.0020.0002] # ANATOLIAN HIEROGLYPH A298 +14550 ; [.5B41.0020.0002] # ANATOLIAN HIEROGLYPH A299 +14551 ; [.5B42.0020.0002] # ANATOLIAN HIEROGLYPH A299A +14552 ; [.5B43.0020.0002] # ANATOLIAN HIEROGLYPH A300 +14553 ; [.5B44.0020.0002] # ANATOLIAN HIEROGLYPH A301 +14554 ; [.5B45.0020.0002] # ANATOLIAN HIEROGLYPH A302 +14555 ; [.5B46.0020.0002] # ANATOLIAN HIEROGLYPH A303 +14556 ; [.5B47.0020.0002] # ANATOLIAN HIEROGLYPH A304 +14557 ; [.5B48.0020.0002] # ANATOLIAN HIEROGLYPH A305 +14558 ; [.5B49.0020.0002] # ANATOLIAN HIEROGLYPH A306 +14559 ; [.5B4A.0020.0002] # ANATOLIAN HIEROGLYPH A307 +1455A ; [.5B4B.0020.0002] # ANATOLIAN HIEROGLYPH A308 +1455B ; [.5B4C.0020.0002] # ANATOLIAN HIEROGLYPH A309 +1455C ; [.5B4D.0020.0002] # ANATOLIAN HIEROGLYPH A309A +1455D ; [.5B4E.0020.0002] # ANATOLIAN HIEROGLYPH A310 +1455E ; [.5B4F.0020.0002] # ANATOLIAN HIEROGLYPH A311 +1455F ; [.5B50.0020.0002] # ANATOLIAN HIEROGLYPH A312 +14560 ; [.5B51.0020.0002] # ANATOLIAN HIEROGLYPH A313 +14561 ; [.5B52.0020.0002] # ANATOLIAN HIEROGLYPH A314 +14562 ; [.5B53.0020.0002] # ANATOLIAN HIEROGLYPH A315 +14563 ; [.5B54.0020.0002] # ANATOLIAN HIEROGLYPH A316 +14564 ; [.5B55.0020.0002] # ANATOLIAN HIEROGLYPH A317 +14565 ; [.5B56.0020.0002] # ANATOLIAN HIEROGLYPH A318 +14566 ; [.5B57.0020.0002] # ANATOLIAN HIEROGLYPH A319 +14567 ; [.5B58.0020.0002] # ANATOLIAN HIEROGLYPH A320 +14568 ; [.5B59.0020.0002] # ANATOLIAN HIEROGLYPH A321 +14569 ; [.5B5A.0020.0002] # ANATOLIAN HIEROGLYPH A322 +1456A ; [.5B5B.0020.0002] # ANATOLIAN HIEROGLYPH A323 +1456B ; [.5B5C.0020.0002] # ANATOLIAN HIEROGLYPH A324 +1456C ; [.5B5D.0020.0002] # ANATOLIAN HIEROGLYPH A325 +1456D ; [.5B5E.0020.0002] # ANATOLIAN HIEROGLYPH A326 +1456E ; [.5B5F.0020.0002] # ANATOLIAN HIEROGLYPH A327 +1456F ; [.5B60.0020.0002] # ANATOLIAN HIEROGLYPH A328 +14570 ; [.5B61.0020.0002] # ANATOLIAN HIEROGLYPH A329 +14571 ; [.5B62.0020.0002] # ANATOLIAN HIEROGLYPH A329A +14572 ; [.5B63.0020.0002] # ANATOLIAN HIEROGLYPH A330 +14573 ; [.5B64.0020.0002] # ANATOLIAN HIEROGLYPH A331 +14574 ; [.5B65.0020.0002] # ANATOLIAN HIEROGLYPH A332A +14575 ; [.5B66.0020.0002] # ANATOLIAN HIEROGLYPH A332B +14576 ; [.5B67.0020.0002] # ANATOLIAN HIEROGLYPH A332C +14577 ; [.5B68.0020.0002] # ANATOLIAN HIEROGLYPH A333 +14578 ; [.5B69.0020.0002] # ANATOLIAN HIEROGLYPH A334 +14579 ; [.5B6A.0020.0002] # ANATOLIAN HIEROGLYPH A335 +1457A ; [.5B6B.0020.0002] # ANATOLIAN HIEROGLYPH A336 +1457B ; [.5B6C.0020.0002] # ANATOLIAN HIEROGLYPH A336A +1457C ; [.5B6D.0020.0002] # ANATOLIAN HIEROGLYPH A336B +1457D ; [.5B6E.0020.0002] # ANATOLIAN HIEROGLYPH A336C +1457E ; [.5B6F.0020.0002] # ANATOLIAN HIEROGLYPH A337 +1457F ; [.5B70.0020.0002] # ANATOLIAN HIEROGLYPH A338 +14580 ; [.5B71.0020.0002] # ANATOLIAN HIEROGLYPH A339 +14581 ; [.5B72.0020.0002] # ANATOLIAN HIEROGLYPH A340 +14582 ; [.5B73.0020.0002] # ANATOLIAN HIEROGLYPH A341 +14583 ; [.5B74.0020.0002] # ANATOLIAN HIEROGLYPH A342 +14584 ; [.5B75.0020.0002] # ANATOLIAN HIEROGLYPH A343 +14585 ; [.5B76.0020.0002] # ANATOLIAN HIEROGLYPH A344 +14586 ; [.5B77.0020.0002] # ANATOLIAN HIEROGLYPH A345 +14587 ; [.5B78.0020.0002] # ANATOLIAN HIEROGLYPH A346 +14588 ; [.5B79.0020.0002] # ANATOLIAN HIEROGLYPH A347 +14589 ; [.5B7A.0020.0002] # ANATOLIAN HIEROGLYPH A348 +1458A ; [.5B7B.0020.0002] # ANATOLIAN HIEROGLYPH A349 +1458B ; [.5B7C.0020.0002] # ANATOLIAN HIEROGLYPH A350 +1458C ; [.5B7D.0020.0002] # ANATOLIAN HIEROGLYPH A351 +1458D ; [.5B7E.0020.0002] # ANATOLIAN HIEROGLYPH A352 +1458E ; [.5B7F.0020.0002] # ANATOLIAN HIEROGLYPH A353 +1458F ; [.5B80.0020.0002] # ANATOLIAN HIEROGLYPH A354 +14590 ; [.5B81.0020.0002] # ANATOLIAN HIEROGLYPH A355 +14591 ; [.5B82.0020.0002] # ANATOLIAN HIEROGLYPH A356 +14592 ; [.5B83.0020.0002] # ANATOLIAN HIEROGLYPH A357 +14593 ; [.5B84.0020.0002] # ANATOLIAN HIEROGLYPH A358 +14594 ; [.5B85.0020.0002] # ANATOLIAN HIEROGLYPH A359 +14595 ; [.5B86.0020.0002] # ANATOLIAN HIEROGLYPH A359A +14596 ; [.5B87.0020.0002] # ANATOLIAN HIEROGLYPH A360 +14597 ; [.5B88.0020.0002] # ANATOLIAN HIEROGLYPH A361 +14598 ; [.5B89.0020.0002] # ANATOLIAN HIEROGLYPH A362 +14599 ; [.5B8A.0020.0002] # ANATOLIAN HIEROGLYPH A363 +1459A ; [.5B8B.0020.0002] # ANATOLIAN HIEROGLYPH A364 +1459B ; [.5B8C.0020.0002] # ANATOLIAN HIEROGLYPH A364A +1459C ; [.5B8D.0020.0002] # ANATOLIAN HIEROGLYPH A365 +1459D ; [.5B8E.0020.0002] # ANATOLIAN HIEROGLYPH A366 +1459E ; [.5B8F.0020.0002] # ANATOLIAN HIEROGLYPH A367 +1459F ; [.5B90.0020.0002] # ANATOLIAN HIEROGLYPH A368 +145A0 ; [.5B91.0020.0002] # ANATOLIAN HIEROGLYPH A368A +145A1 ; [.5B92.0020.0002] # ANATOLIAN HIEROGLYPH A369 +145A2 ; [.5B93.0020.0002] # ANATOLIAN HIEROGLYPH A370 +145A3 ; [.5B94.0020.0002] # ANATOLIAN HIEROGLYPH A371 +145A4 ; [.5B95.0020.0002] # ANATOLIAN HIEROGLYPH A371A +145A5 ; [.5B96.0020.0002] # ANATOLIAN HIEROGLYPH A372 +145A6 ; [.5B97.0020.0002] # ANATOLIAN HIEROGLYPH A373 +145A7 ; [.5B98.0020.0002] # ANATOLIAN HIEROGLYPH A374 +145A8 ; [.5B99.0020.0002] # ANATOLIAN HIEROGLYPH A375 +145A9 ; [.5B9A.0020.0002] # ANATOLIAN HIEROGLYPH A376 +145AA ; [.5B9B.0020.0002] # ANATOLIAN HIEROGLYPH A377 +145AB ; [.5B9C.0020.0002] # ANATOLIAN HIEROGLYPH A378 +145AC ; [.5B9D.0020.0002] # ANATOLIAN HIEROGLYPH A379 +145AD ; [.5B9E.0020.0002] # ANATOLIAN HIEROGLYPH A380 +145AE ; [.5B9F.0020.0002] # ANATOLIAN HIEROGLYPH A381 +145AF ; [.5BA0.0020.0002] # ANATOLIAN HIEROGLYPH A381A +145B0 ; [.5BA1.0020.0002] # ANATOLIAN HIEROGLYPH A382 +145B1 ; [.5BA2.0020.0002] # ANATOLIAN HIEROGLYPH A383 RA OR RI +145B2 ; [.5BA3.0020.0002] # ANATOLIAN HIEROGLYPH A383A +145B3 ; [.5BA4.0020.0002] # ANATOLIAN HIEROGLYPH A384 +145B4 ; [.5BA5.0020.0002] # ANATOLIAN HIEROGLYPH A385 +145B5 ; [.5BA6.0020.0002] # ANATOLIAN HIEROGLYPH A386 +145B6 ; [.5BA7.0020.0002] # ANATOLIAN HIEROGLYPH A386A +145B7 ; [.5BA8.0020.0002] # ANATOLIAN HIEROGLYPH A387 +145B8 ; [.5BA9.0020.0002] # ANATOLIAN HIEROGLYPH A388 +145B9 ; [.5BAA.0020.0002] # ANATOLIAN HIEROGLYPH A389 +145BA ; [.5BAB.0020.0002] # ANATOLIAN HIEROGLYPH A390 +145BB ; [.5BAC.0020.0002] # ANATOLIAN HIEROGLYPH A391 +145BC ; [.5BAD.0020.0002] # ANATOLIAN HIEROGLYPH A392 +145BD ; [.5BAE.0020.0002] # ANATOLIAN HIEROGLYPH A393 EIGHT +145BE ; [.5BAF.0020.0002] # ANATOLIAN HIEROGLYPH A394 +145BF ; [.5BB0.0020.0002] # ANATOLIAN HIEROGLYPH A395 +145C0 ; [.5BB1.0020.0002] # ANATOLIAN HIEROGLYPH A396 +145C1 ; [.5BB2.0020.0002] # ANATOLIAN HIEROGLYPH A397 +145C2 ; [.5BB3.0020.0002] # ANATOLIAN HIEROGLYPH A398 +145C3 ; [.5BB4.0020.0002] # ANATOLIAN HIEROGLYPH A399 +145C4 ; [.5BB5.0020.0002] # ANATOLIAN HIEROGLYPH A400 +145C5 ; [.5BB6.0020.0002] # ANATOLIAN HIEROGLYPH A401 +145C6 ; [.5BB7.0020.0002] # ANATOLIAN HIEROGLYPH A402 +145C7 ; [.5BB8.0020.0002] # ANATOLIAN HIEROGLYPH A403 +145C8 ; [.5BB9.0020.0002] # ANATOLIAN HIEROGLYPH A404 +145C9 ; [.5BBA.0020.0002] # ANATOLIAN HIEROGLYPH A405 +145CA ; [.5BBB.0020.0002] # ANATOLIAN HIEROGLYPH A406 +145CB ; [.5BBC.0020.0002] # ANATOLIAN HIEROGLYPH A407 +145CC ; [.5BBD.0020.0002] # ANATOLIAN HIEROGLYPH A408 +145CD ; [.5BBE.0020.0002] # ANATOLIAN HIEROGLYPH A409 +145CE ; [.5BBF.0020.0002] # ANATOLIAN HIEROGLYPH A410 BEGIN LOGOGRAM MARK +145CF ; [.5BC0.0020.0002] # ANATOLIAN HIEROGLYPH A410A END LOGOGRAM MARK +145D0 ; [.5BC1.0020.0002] # ANATOLIAN HIEROGLYPH A411 +145D1 ; [.5BC2.0020.0002] # ANATOLIAN HIEROGLYPH A412 +145D2 ; [.5BC3.0020.0002] # ANATOLIAN HIEROGLYPH A413 +145D3 ; [.5BC4.0020.0002] # ANATOLIAN HIEROGLYPH A414 +145D4 ; [.5BC5.0020.0002] # ANATOLIAN HIEROGLYPH A415 +145D5 ; [.5BC6.0020.0002] # ANATOLIAN HIEROGLYPH A416 +145D6 ; [.5BC7.0020.0002] # ANATOLIAN HIEROGLYPH A417 +145D7 ; [.5BC8.0020.0002] # ANATOLIAN HIEROGLYPH A418 +145D8 ; [.5BC9.0020.0002] # ANATOLIAN HIEROGLYPH A419 +145D9 ; [.5BCA.0020.0002] # ANATOLIAN HIEROGLYPH A420 +145DA ; [.5BCB.0020.0002] # ANATOLIAN HIEROGLYPH A421 +145DB ; [.5BCC.0020.0002] # ANATOLIAN HIEROGLYPH A422 +145DC ; [.5BCD.0020.0002] # ANATOLIAN HIEROGLYPH A423 +145DD ; [.5BCE.0020.0002] # ANATOLIAN HIEROGLYPH A424 +145DE ; [.5BCF.0020.0002] # ANATOLIAN HIEROGLYPH A425 +145DF ; [.5BD0.0020.0002] # ANATOLIAN HIEROGLYPH A426 +145E0 ; [.5BD1.0020.0002] # ANATOLIAN HIEROGLYPH A427 +145E1 ; [.5BD2.0020.0002] # ANATOLIAN HIEROGLYPH A428 +145E2 ; [.5BD3.0020.0002] # ANATOLIAN HIEROGLYPH A429 +145E3 ; [.5BD4.0020.0002] # ANATOLIAN HIEROGLYPH A430 +145E4 ; [.5BD5.0020.0002] # ANATOLIAN HIEROGLYPH A431 +145E5 ; [.5BD6.0020.0002] # ANATOLIAN HIEROGLYPH A432 +145E6 ; [.5BD7.0020.0002] # ANATOLIAN HIEROGLYPH A433 +145E7 ; [.5BD8.0020.0002] # ANATOLIAN HIEROGLYPH A434 +145E8 ; [.5BD9.0020.0002] # ANATOLIAN HIEROGLYPH A435 +145E9 ; [.5BDA.0020.0002] # ANATOLIAN HIEROGLYPH A436 +145EA ; [.5BDB.0020.0002] # ANATOLIAN HIEROGLYPH A437 +145EB ; [.5BDC.0020.0002] # ANATOLIAN HIEROGLYPH A438 +145EC ; [.5BDD.0020.0002] # ANATOLIAN HIEROGLYPH A439 +145ED ; [.5BDE.0020.0002] # ANATOLIAN HIEROGLYPH A440 +145EE ; [.5BDF.0020.0002] # ANATOLIAN HIEROGLYPH A441 +145EF ; [.5BE0.0020.0002] # ANATOLIAN HIEROGLYPH A442 +145F0 ; [.5BE1.0020.0002] # ANATOLIAN HIEROGLYPH A443 +145F1 ; [.5BE2.0020.0002] # ANATOLIAN HIEROGLYPH A444 +145F2 ; [.5BE3.0020.0002] # ANATOLIAN HIEROGLYPH A445 +145F3 ; [.5BE4.0020.0002] # ANATOLIAN HIEROGLYPH A446 +145F4 ; [.5BE5.0020.0002] # ANATOLIAN HIEROGLYPH A447 +145F5 ; [.5BE6.0020.0002] # ANATOLIAN HIEROGLYPH A448 +145F6 ; [.5BE7.0020.0002] # ANATOLIAN HIEROGLYPH A449 +145F7 ; [.5BE8.0020.0002] # ANATOLIAN HIEROGLYPH A450 +145F8 ; [.5BE9.0020.0002] # ANATOLIAN HIEROGLYPH A450A +145F9 ; [.5BEA.0020.0002] # ANATOLIAN HIEROGLYPH A451 +145FA ; [.5BEB.0020.0002] # ANATOLIAN HIEROGLYPH A452 +145FB ; [.5BEC.0020.0002] # ANATOLIAN HIEROGLYPH A453 +145FC ; [.5BED.0020.0002] # ANATOLIAN HIEROGLYPH A454 +145FD ; [.5BEE.0020.0002] # ANATOLIAN HIEROGLYPH A455 +145FE ; [.5BEF.0020.0002] # ANATOLIAN HIEROGLYPH A456 +145FF ; [.5BF0.0020.0002] # ANATOLIAN HIEROGLYPH A457 +14600 ; [.5BF1.0020.0002] # ANATOLIAN HIEROGLYPH A457A +14601 ; [.5BF2.0020.0002] # ANATOLIAN HIEROGLYPH A458 +14602 ; [.5BF3.0020.0002] # ANATOLIAN HIEROGLYPH A459 +14603 ; [.5BF4.0020.0002] # ANATOLIAN HIEROGLYPH A460 +14604 ; [.5BF5.0020.0002] # ANATOLIAN HIEROGLYPH A461 +14605 ; [.5BF6.0020.0002] # ANATOLIAN HIEROGLYPH A462 +14606 ; [.5BF7.0020.0002] # ANATOLIAN HIEROGLYPH A463 +14607 ; [.5BF8.0020.0002] # ANATOLIAN HIEROGLYPH A464 +14608 ; [.5BF9.0020.0002] # ANATOLIAN HIEROGLYPH A465 +14609 ; [.5BFA.0020.0002] # ANATOLIAN HIEROGLYPH A466 +1460A ; [.5BFB.0020.0002] # ANATOLIAN HIEROGLYPH A467 +1460B ; [.5BFC.0020.0002] # ANATOLIAN HIEROGLYPH A468 +1460C ; [.5BFD.0020.0002] # ANATOLIAN HIEROGLYPH A469 +1460D ; [.5BFE.0020.0002] # ANATOLIAN HIEROGLYPH A470 +1460E ; [.5BFF.0020.0002] # ANATOLIAN HIEROGLYPH A471 +1460F ; [.5C00.0020.0002] # ANATOLIAN HIEROGLYPH A472 +14610 ; [.5C01.0020.0002] # ANATOLIAN HIEROGLYPH A473 +14611 ; [.5C02.0020.0002] # ANATOLIAN HIEROGLYPH A474 +14612 ; [.5C03.0020.0002] # ANATOLIAN HIEROGLYPH A475 +14613 ; [.5C04.0020.0002] # ANATOLIAN HIEROGLYPH A476 +14614 ; [.5C05.0020.0002] # ANATOLIAN HIEROGLYPH A477 +14615 ; [.5C06.0020.0002] # ANATOLIAN HIEROGLYPH A478 +14616 ; [.5C07.0020.0002] # ANATOLIAN HIEROGLYPH A479 +14617 ; [.5C08.0020.0002] # ANATOLIAN HIEROGLYPH A480 +14618 ; [.5C09.0020.0002] # ANATOLIAN HIEROGLYPH A481 +14619 ; [.5C0A.0020.0002] # ANATOLIAN HIEROGLYPH A482 +1461A ; [.5C0B.0020.0002] # ANATOLIAN HIEROGLYPH A483 +1461B ; [.5C0C.0020.0002] # ANATOLIAN HIEROGLYPH A484 +1461C ; [.5C0D.0020.0002] # ANATOLIAN HIEROGLYPH A485 +1461D ; [.5C0E.0020.0002] # ANATOLIAN HIEROGLYPH A486 +1461E ; [.5C0F.0020.0002] # ANATOLIAN HIEROGLYPH A487 +1461F ; [.5C10.0020.0002] # ANATOLIAN HIEROGLYPH A488 +14620 ; [.5C11.0020.0002] # ANATOLIAN HIEROGLYPH A489 +14621 ; [.5C12.0020.0002] # ANATOLIAN HIEROGLYPH A490 +14622 ; [.5C13.0020.0002] # ANATOLIAN HIEROGLYPH A491 +14623 ; [.5C14.0020.0002] # ANATOLIAN HIEROGLYPH A492 +14624 ; [.5C15.0020.0002] # ANATOLIAN HIEROGLYPH A493 +14625 ; [.5C16.0020.0002] # ANATOLIAN HIEROGLYPH A494 +14626 ; [.5C17.0020.0002] # ANATOLIAN HIEROGLYPH A495 +14627 ; [.5C18.0020.0002] # ANATOLIAN HIEROGLYPH A496 +14628 ; [.5C19.0020.0002] # ANATOLIAN HIEROGLYPH A497 +14629 ; [.5C1A.0020.0002] # ANATOLIAN HIEROGLYPH A501 +1462A ; [.5C1B.0020.0002] # ANATOLIAN HIEROGLYPH A502 +1462B ; [.5C1C.0020.0002] # ANATOLIAN HIEROGLYPH A503 +1462C ; [.5C1D.0020.0002] # ANATOLIAN HIEROGLYPH A504 +1462D ; [.5C1E.0020.0002] # ANATOLIAN HIEROGLYPH A505 +1462E ; [.5C1F.0020.0002] # ANATOLIAN HIEROGLYPH A506 +1462F ; [.5C20.0020.0002] # ANATOLIAN HIEROGLYPH A507 +14630 ; [.5C21.0020.0002] # ANATOLIAN HIEROGLYPH A508 +14631 ; [.5C22.0020.0002] # ANATOLIAN HIEROGLYPH A509 +14632 ; [.5C23.0020.0002] # ANATOLIAN HIEROGLYPH A510 +14633 ; [.5C24.0020.0002] # ANATOLIAN HIEROGLYPH A511 +14634 ; [.5C25.0020.0002] # ANATOLIAN HIEROGLYPH A512 +14635 ; [.5C26.0020.0002] # ANATOLIAN HIEROGLYPH A513 +14636 ; [.5C27.0020.0002] # ANATOLIAN HIEROGLYPH A514 +14637 ; [.5C28.0020.0002] # ANATOLIAN HIEROGLYPH A515 +14638 ; [.5C29.0020.0002] # ANATOLIAN HIEROGLYPH A516 +14639 ; [.5C2A.0020.0002] # ANATOLIAN HIEROGLYPH A517 +1463A ; [.5C2B.0020.0002] # ANATOLIAN HIEROGLYPH A518 +1463B ; [.5C2C.0020.0002] # ANATOLIAN HIEROGLYPH A519 +1463C ; [.5C2D.0020.0002] # ANATOLIAN HIEROGLYPH A520 +1463D ; [.5C2E.0020.0002] # ANATOLIAN HIEROGLYPH A521 +1463E ; [.5C2F.0020.0002] # ANATOLIAN HIEROGLYPH A522 +1463F ; [.5C30.0020.0002] # ANATOLIAN HIEROGLYPH A523 +14640 ; [.5C31.0020.0002] # ANATOLIAN HIEROGLYPH A524 +14641 ; [.5C32.0020.0002] # ANATOLIAN HIEROGLYPH A525 +14642 ; [.5C33.0020.0002] # ANATOLIAN HIEROGLYPH A526 +14643 ; [.5C34.0020.0002] # ANATOLIAN HIEROGLYPH A527 +14644 ; [.5C35.0020.0002] # ANATOLIAN HIEROGLYPH A528 +14645 ; [.5C36.0020.0002] # ANATOLIAN HIEROGLYPH A529 +14646 ; [.5C37.0020.0002] # ANATOLIAN HIEROGLYPH A530 2F00 ; [.FB40.0020.0004][.CE00.0000.0000] # KANGXI RADICAL ONE -3220 ; [*0318.0020.0004][.FB40.0020.0004][.CE00.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH ONE +3220 ; [*0328.0020.0004][.FB40.0020.0004][.CE00.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH ONE 3280 ; [.FB40.0020.0006][.CE00.0000.0000] # CIRCLED IDEOGRAPH ONE 3192 ; [.FB40.0020.0014][.CE00.0000.0000] # IDEOGRAPHIC ANNOTATION ONE MARK 1F229 ; [.FB40.0020.001C][.CE00.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-4E00 319C ; [.FB40.0020.0014][.CE01.0000.0000] # IDEOGRAPHIC ANNOTATION FOURTH MARK -3226 ; [*0318.0020.0004][.FB40.0020.0004][.CE03.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SEVEN +3226 ; [*0328.0020.0004][.FB40.0020.0004][.CE03.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SEVEN 3286 ; [.FB40.0020.0006][.CE03.0000.0000] # CIRCLED IDEOGRAPH SEVEN -3222 ; [*0318.0020.0004][.FB40.0020.0004][.CE09.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH THREE -1F241 ; [*037A.0020.0004][.FB40.0020.0004][.CE09.0000.0000][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 +3222 ; [*0328.0020.0004][.FB40.0020.0004][.CE09.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH THREE +1F241 ; [*038A.0020.0004][.FB40.0020.0004][.CE09.0000.0000][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 3282 ; [.FB40.0020.0006][.CE09.0000.0000] # CIRCLED IDEOGRAPH THREE 3194 ; [.FB40.0020.0014][.CE09.0000.0000] # IDEOGRAPHIC ANNOTATION THREE MARK 1F22A ; [.FB40.0020.001C][.CE09.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-4E09 @@ -29843,7 +31609,7 @@ 1F22D ; [.FB40.0020.001C][.CE2D.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-4E2D F905 ; [.FB40.0020.0002][.CE32.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F905 2F02 ; [.FB40.0020.0004][.CE36.0000.0000] # KANGXI RADICAL DOT -2E80 ; [.FB40.0020.0004][.CE36.0000.0000][.0000.0111.0004] # CJK RADICAL REPEAT +2E80 ; [.FB40.0020.0004][.CE36.0000.0000][.0000.0118.0004] # CJK RADICAL REPEAT 2F801 ; [.FB40.0020.0002][.CE38.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F801 F95E ; [.FB40.0020.0002][.CE39.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F95E 2F800 ; [.FB40.0020.0002][.CE3D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F800 @@ -29851,21 +31617,21 @@ 2F802 ; [.FB40.0020.0002][.CE41.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F802 2F04 ; [.FB40.0020.0004][.CE59.0000.0000] # KANGXI RADICAL SECOND 319A ; [.FB40.0020.0014][.CE59.0000.0000] # IDEOGRAPHIC ANNOTATION SECOND MARK -2E84 ; [.FB40.0020.0004][.CE59.0000.0000][.0000.0111.0004] # CJK RADICAL SECOND THREE +2E84 ; [.FB40.0020.0004][.CE59.0000.0000][.0000.0118.0004] # CJK RADICAL SECOND THREE 2E83 ; [.FB40.0020.0004][.CE5A.0000.0000] # CJK RADICAL SECOND TWO 2E82 ; [.FB40.0020.0004][.CE5B.0000.0000] # CJK RADICAL SECOND ONE -3228 ; [*0318.0020.0004][.FB40.0020.0004][.CE5D.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH NINE +3228 ; [*0328.0020.0004][.FB40.0020.0004][.CE5D.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH NINE 3288 ; [.FB40.0020.0006][.CE5D.0000.0000] # CIRCLED IDEOGRAPH NINE F91B ; [.FB40.0020.0002][.CE82.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F91B 2F05 ; [.FB40.0020.0004][.CE85.0000.0000] # KANGXI RADICAL HOOK F9BA ; [.FB40.0020.0002][.CE86.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9BA 2F06 ; [.FB40.0020.0004][.CE8C.0000.0000] # KANGXI RADICAL TWO -3221 ; [*0318.0020.0004][.FB40.0020.0004][.CE8C.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH TWO -1F242 ; [*037A.0020.0004][.FB40.0020.0004][.CE8C.0000.0000][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C +3221 ; [*0328.0020.0004][.FB40.0020.0004][.CE8C.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH TWO +1F242 ; [*038A.0020.0004][.FB40.0020.0004][.CE8C.0000.0000][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C 3281 ; [.FB40.0020.0006][.CE8C.0000.0000] # CIRCLED IDEOGRAPH TWO 3193 ; [.FB40.0020.0014][.CE8C.0000.0000] # IDEOGRAPHIC ANNOTATION TWO MARK 1F214 ; [.FB40.0020.001C][.CE8C.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-4E8C -3224 ; [*0318.0020.0004][.FB40.0020.0004][.CE94.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FIVE +3224 ; [*0328.0020.0004][.FB40.0020.0004][.CE94.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FIVE 3284 ; [.FB40.0020.0006][.CE94.0000.0000] # CIRCLED IDEOGRAPH FIVE 2F07 ; [.FB40.0020.0004][.CEA0.0000.0000] # KANGXI RADICAL LID 1F218 ; [.FB40.0020.001C][.CEA4.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-4EA4 @@ -29875,11 +31641,12 @@ 2E85 ; [.FB40.0020.0004][.CEBB.0000.0000] # CJK RADICAL PERSON F9FD ; [.FB40.0020.0002][.CEC0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9FD 2F819 ; [.FB40.0020.0002][.CECC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F819 -3239 ; [*0318.0020.0004][.FB40.0020.0004][.CEE3.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH REPRESENT +3239 ; [*0328.0020.0004][.FB40.0020.0004][.CEE3.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH REPRESENT F9A8 ; [.FB40.0020.0002][.CEE4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9A8 -323D ; [*0318.0020.0004][.FB40.0020.0004][.CF01.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH ENTERPRISE +32FF ; [.FB40.0020.001C][.CEE4.0000.0000][.FB40.0020.001C][.D48C.0000.0000] # SQUARE ERA NAME REIWA +323D ; [*0328.0020.0004][.FB40.0020.0004][.CF01.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH ENTERPRISE 32AD ; [.FB40.0020.0006][.CF01.0000.0000] # CIRCLED IDEOGRAPH ENTERPRISE -3241 ; [*0318.0020.0004][.FB40.0020.0004][.CF11.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH REST +3241 ; [*0328.0020.0004][.FB40.0020.0004][.CF11.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH REST 32A1 ; [.FB40.0020.0006][.CF11.0000.0000] # CIRCLED IDEOGRAPH REST 2F804 ; [.FB40.0020.0002][.CF60.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F804 FA73 ; [.FB40.0020.0002][.CF80.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA73 @@ -29910,15 +31677,15 @@ FA72 ; [.FB40.0020.0002][.D168.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA72 F978 ; [.FB40.0020.0002][.D169.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F978 2F0B ; [.FB40.0020.0004][.D16B.0000.0000] # KANGXI RADICAL EIGHT -3227 ; [*0318.0020.0004][.FB40.0020.0004][.D16B.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH EIGHT +3227 ; [*0328.0020.0004][.FB40.0020.0004][.D16B.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH EIGHT 3287 ; [.FB40.0020.0006][.D16B.0000.0000] # CIRCLED IDEOGRAPH EIGHT F9D1 ; [.FB40.0020.0002][.D16D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9D1 -3225 ; [*0318.0020.0004][.FB40.0020.0004][.D16D.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SIX +3225 ; [*0328.0020.0004][.FB40.0020.0004][.D16D.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SIX 3285 ; [.FB40.0020.0006][.D16D.0000.0000] # CIRCLED IDEOGRAPH SIX 2F811 ; [.FB40.0020.0002][.D177.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F811 FA75 ; [.FB40.0020.0002][.D180.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA75 2F0C ; [.FB40.0020.0004][.D182.0000.0000] # KANGXI RADICAL DOWN BOX -2E86 ; [.FB40.0020.0004][.D182.0000.0000][.0000.0111.0004] # CJK RADICAL BOX +2E86 ; [.FB40.0020.0004][.D182.0000.0000][.0000.0118.0004] # CJK RADICAL BOX 2F815 ; [.FB40.0020.0002][.D18D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F815 1F21E ; [.FB40.0020.001C][.D18D.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-518D 2F8D2 ; [.FB40.0020.0002][.D192.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8D2 @@ -29937,11 +31704,11 @@ F954 ; [.FB40.0020.0002][.D1DC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F954 FA15 ; [.FB40.0020.0002][.D1DE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA15 2F0F ; [.FB40.0020.0004][.D1E0.0000.0000] # KANGXI RADICAL TABLE -2E87 ; [.FB40.0020.0004][.D1E0.0000.0000][.0000.0111.0004] # CJK RADICAL TABLE +2E87 ; [.FB40.0020.0004][.D1E0.0000.0000][.0000.0118.0004] # CJK RADICAL TABLE 2F81D ; [.FB40.0020.0002][.D1F5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F81D 2F10 ; [.FB40.0020.0004][.D1F5.0000.0000] # KANGXI RADICAL OPEN BOX 2F11 ; [.FB40.0020.0004][.D200.0000.0000] # KANGXI RADICAL KNIFE -2E88 ; [.FB40.0020.0004][.D200.0000.0000][.0000.0111.0004] # CJK RADICAL KNIFE ONE +2E88 ; [.FB40.0020.0004][.D200.0000.0000][.0000.0118.0004] # CJK RADICAL KNIFE ONE 2E89 ; [.FB40.0020.0004][.D202.0000.0000] # CJK RADICAL KNIFE TWO 2F81E ; [.FB40.0020.0002][.D203.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F81E FA00 ; [.FB40.0020.0002][.D207.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA00 @@ -29961,14 +31728,14 @@ 2F12 ; [.FB40.0020.0004][.D29B.0000.0000] # KANGXI RADICAL POWER F99D ; [.FB40.0020.0002][.D2A3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F99D 2F992 ; [.FB40.0020.0002][.D2B3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F992 -3238 ; [*0318.0020.0004][.FB40.0020.0004][.D2B4.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH LABOR +3238 ; [*0328.0020.0004][.FB40.0020.0004][.D2B4.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH LABOR 3298 ; [.FB40.0020.0006][.D2B4.0000.0000] # CIRCLED IDEOGRAPH LABOR FA76 ; [.FB40.0020.0002][.D2C7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA76 2F825 ; [.FB40.0020.0002][.D2C7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F825 FA33 ; [.FB40.0020.0002][.D2C9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA33 2F826 ; [.FB40.0020.0002][.D2C9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F826 F952 ; [.FB40.0020.0002][.D2D2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F952 -1F247 ; [*037A.0020.0004][.FB40.0020.0004][.D2DD.0000.0000][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD +1F247 ; [*038A.0020.0004][.FB40.0020.0004][.D2DD.0000.0000][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD F92F ; [.FB40.0020.0002][.D2DE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F92F FA34 ; [.FB40.0020.0002][.D2E4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA34 2F827 ; [.FB40.0020.0002][.D2E4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F827 @@ -29987,20 +31754,20 @@ F9EB ; [.FB40.0020.0002][.D33F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9EB 2F17 ; [.FB40.0020.0004][.D341.0000.0000] # KANGXI RADICAL TEN 3038 ; [.FB40.0020.0004][.D341.0000.0000] # HANGZHOU NUMERAL TEN -3229 ; [*0318.0020.0004][.FB40.0020.0004][.D341.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH TEN +3229 ; [*0328.0020.0004][.FB40.0020.0004][.D341.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH TEN 3289 ; [.FB40.0020.0006][.D341.0000.0000] # CIRCLED IDEOGRAPH TEN 3039 ; [.FB40.0020.0004][.D344.0000.0000] # HANGZHOU NUMERAL TWENTY 303A ; [.FB40.0020.0004][.D345.0000.0000] # HANGZHOU NUMERAL THIRTY 2F82C ; [.FB40.0020.0002][.D349.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F82C FA35 ; [.FB40.0020.0002][.D351.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA35 2F82D ; [.FB40.0020.0002][.D351.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F82D -323F ; [*0318.0020.0004][.FB40.0020.0004][.D354.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH ALLIANCE +323F ; [*0328.0020.0004][.FB40.0020.0004][.D354.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH ALLIANCE 32AF ; [.FB40.0020.0006][.D354.0000.0000] # CIRCLED IDEOGRAPH ALLIANCE 2F82E ; [.FB40.0020.0002][.D35A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F82E 2F18 ; [.FB40.0020.0004][.D35C.0000.0000] # KANGXI RADICAL DIVINATION -2E8A ; [.FB40.0020.0004][.D35C.0000.0000][.0000.0111.0004] # CJK RADICAL DIVINATION +2E8A ; [.FB40.0020.0004][.D35C.0000.0000][.0000.0118.0004] # CJK RADICAL DIVINATION 2F19 ; [.FB40.0020.0004][.D369.0000.0000] # KANGXI RADICAL SEAL -2E8B ; [.FB40.0020.0004][.D369.0000.0000][.0000.0111.0004] # CJK RADICAL SEAL +2E8B ; [.FB40.0020.0004][.D369.0000.0000][.0000.0118.0004] # CJK RADICAL SEAL 329E ; [.FB40.0020.0006][.D370.0000.0000] # CIRCLED IDEOGRAPH PRINT 2F82F ; [.FB40.0020.0002][.D373.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F82F F91C ; [.FB40.0020.0002][.D375.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F91C @@ -30009,7 +31776,7 @@ 2F832 ; [.FB40.0020.0002][.D37F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F832 2F833 ; [.FB40.0020.0002][.D37F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F833 2F1A ; [.FB40.0020.0004][.D382.0000.0000] # KANGXI RADICAL CLIFF -2E81 ; [.FB40.0020.0004][.D382.0000.0000][.0000.0111.0004] # CJK RADICAL CLIFF +2E81 ; [.FB40.0020.0004][.D382.0000.0000][.0000.0118.0004] # CJK RADICAL CLIFF 2F1B ; [.FB40.0020.0004][.D3B6.0000.0000] # KANGXI RADICAL PRIVATE F96B ; [.FB40.0020.0002][.D3C3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F96B 2F1C ; [.FB40.0020.0004][.D3C8.0000.0000] # KANGXI RADICAL AGAIN @@ -30025,7 +31792,7 @@ 1F22E ; [.FB40.0020.001C][.D3F3.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-53F3 2F83B ; [.FB40.0020.0002][.D406.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F83B 1F234 ; [.FB40.0020.001C][.D408.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-5408 -3234 ; [*0318.0020.0004][.FB40.0020.0004][.D40D.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH NAME +3234 ; [*0328.0020.0004][.FB40.0020.0004][.D40D.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH NAME 3294 ; [.FB40.0020.0006][.D40D.0000.0000] # CIRCLED IDEOGRAPH NAME F9DE ; [.FB40.0020.0002][.D40F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9DE F9ED ; [.FB40.0020.0002][.D41D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9ED @@ -30034,7 +31801,7 @@ F980 ; [.FB40.0020.0002][.D442.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F980 2F83E ; [.FB40.0020.0002][.D448.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F83E 2F83F ; [.FB40.0020.0002][.D468.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F83F -323A ; [*0318.0020.0004][.FB40.0020.0004][.D47C.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH CALL +323A ; [*0328.0020.0004][.FB40.0020.0004][.D47C.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH CALL 2F83C ; [.FB40.0020.0002][.D49E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F83C 2F840 ; [.FB40.0020.0002][.D4A2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F840 F99E ; [.FB40.0020.0002][.D4BD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F99E @@ -30063,14 +31830,14 @@ FA38 ; [.FB40.0020.0002][.D668.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA38 2F84F ; [.FB40.0020.0002][.D674.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F84F 2F1E ; [.FB40.0020.0004][.D6D7.0000.0000] # KANGXI RADICAL ENCLOSURE -3223 ; [*0318.0020.0004][.FB40.0020.0004][.D6DB.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FOUR +3223 ; [*0328.0020.0004][.FB40.0020.0004][.D6DB.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FOUR 3283 ; [.FB40.0020.0006][.D6DB.0000.0000] # CIRCLED IDEOGRAPH FOUR 3195 ; [.FB40.0020.0014][.D6DB.0000.0000] # IDEOGRAPHIC ANNOTATION FOUR MARK F9A9 ; [.FB40.0020.0002][.D6F9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9A9 2F84B ; [.FB40.0020.0002][.D716.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F84B 2F84D ; [.FB40.0020.0002][.D717.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F84D 2F1F ; [.FB40.0020.0004][.D71F.0000.0000] # KANGXI RADICAL EARTH -322F ; [*0318.0020.0004][.FB40.0020.0004][.D71F.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH EARTH +322F ; [*0328.0020.0004][.FB40.0020.0004][.D71F.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH EARTH 328F ; [.FB40.0020.0006][.D71F.0000.0000] # CIRCLED IDEOGRAPH EARTH 319E ; [.FB40.0020.0014][.D730.0000.0000] # IDEOGRAPHIC ANNOTATION EARTH MARK 2F855 ; [.FB40.0020.0002][.D78B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F855 @@ -30126,11 +31893,11 @@ 2F86B ; [.FB40.0020.0002][.DB3E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F86B 2F26 ; [.FB40.0020.0004][.DB50.0000.0000] # KANGXI RADICAL CHILD 1F211 ; [.FB40.0020.001C][.DB57.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-5B57 -323B ; [*0318.0020.0004][.FB40.0020.0004][.DB66.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH STUDY +323B ; [*0328.0020.0004][.FB40.0020.0004][.DB66.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH STUDY 32AB ; [.FB40.0020.0006][.DB66.0000.0000] # CIRCLED IDEOGRAPH STUDY 2F27 ; [.FB40.0020.0004][.DB80.0000.0000] # KANGXI RADICAL ROOF FA04 ; [.FB40.0020.0002][.DB85.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA04 -1F243 ; [*037A.0020.0004][.FB40.0020.0004][.DB89.0000.0000][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 +1F243 ; [*038A.0020.0004][.FB40.0020.0004][.DB89.0000.0000][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 32AA ; [.FB40.0020.0006][.DB97.0000.0000] # CIRCLED IDEOGRAPH RELIGION 2F86D ; [.FB40.0020.0002][.DBC3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F86D 2F86E ; [.FB40.0020.0002][.DBD8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F86E @@ -30143,14 +31910,14 @@ 2F872 ; [.FB40.0020.0002][.DBFF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F872 2F873 ; [.FB40.0020.0002][.DC06.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F873 2F29 ; [.FB40.0020.0004][.DC0F.0000.0000] # KANGXI RADICAL SMALL -2E8C ; [.FB40.0020.0004][.DC0F.0000.0000][.0000.0111.0004] # CJK RADICAL SMALL ONE -2E8D ; [.FB40.0020.0004][.DC0F.0000.0000][.0000.0112.0004] # CJK RADICAL SMALL TWO +2E8C ; [.FB40.0020.0004][.DC0F.0000.0000][.0000.0118.0004] # CJK RADICAL SMALL ONE +2E8D ; [.FB40.0020.0004][.DC0F.0000.0000][.0000.0119.0004] # CJK RADICAL SMALL TWO 2F875 ; [.FB40.0020.0002][.DC22.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F875 2E90 ; [.FB40.0020.0004][.DC22.0000.0000] # CJK RADICAL LAME THREE 2F2A ; [.FB40.0020.0004][.DC22.0000.0000] # KANGXI RADICAL LAME -2E8E ; [.FB40.0020.0004][.DC22.0000.0000][.0000.0111.0004] # CJK RADICAL LAME ONE +2E8E ; [.FB40.0020.0004][.DC22.0000.0000][.0000.0118.0004] # CJK RADICAL LAME ONE 2E8F ; [.FB40.0020.0004][.DC23.0000.0000] # CJK RADICAL LAME TWO -2E91 ; [.FB40.0020.0004][.DC23.0000.0000][.0000.0111.0004] # CJK RADICAL LAME FOUR +2E91 ; [.FB40.0020.0004][.DC23.0000.0000][.0000.0118.0004] # CJK RADICAL LAME FOUR 2F2B ; [.FB40.0020.0004][.DC38.0000.0000] # KANGXI RADICAL CORPSE F9BD ; [.FB40.0020.0002][.DC3F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9BD 2F877 ; [.FB40.0020.0002][.DC60.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F877 @@ -30211,7 +31978,7 @@ 2F894 ; [.FB40.0020.0002][.DF22.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F894 2F895 ; [.FB40.0020.0002][.DF22.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F895 2F39 ; [.FB40.0020.0004][.DF50.0000.0000] # KANGXI RADICAL SNOUT -2E95 ; [.FB40.0020.0004][.DF50.0000.0000][.0000.0111.0004] # CJK RADICAL SNOUT TWO +2E95 ; [.FB40.0020.0004][.DF50.0000.0000][.0000.0118.0004] # CJK RADICAL SNOUT TWO 2E94 ; [.FB40.0020.0004][.DF51.0000.0000] # CJK RADICAL SNOUT ONE 2F874 ; [.FB40.0020.0002][.DF53.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F874 2F3A ; [.FB40.0020.0004][.DF61.0000.0000] # KANGXI RADICAL BRISTLE @@ -30226,7 +31993,7 @@ F966 ; [.FB40.0020.0002][.DFA9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F966 FA85 ; [.FB40.0020.0002][.DFAD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA85 2F3C ; [.FB40.0020.0004][.DFC3.0000.0000] # KANGXI RADICAL HEART -2E97 ; [.FB40.0020.0004][.DFC3.0000.0000][.0000.0111.0004] # CJK RADICAL HEART TWO +2E97 ; [.FB40.0020.0004][.DFC3.0000.0000][.0000.0118.0004] # CJK RADICAL HEART TWO 2E96 ; [.FB40.0020.0004][.DFC4.0000.0000] # CJK RADICAL HEART ONE 2F89D ; [.FB40.0020.0002][.DFCD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F89D 2F89E ; [.FB40.0020.0002][.DFD7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F89E @@ -30274,7 +32041,7 @@ 2F3F ; [.FB40.0020.0004][.E24B.0000.0000] # KANGXI RADICAL HAND 1F210 ; [.FB40.0020.001C][.E24B.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-624B 2E98 ; [.FB40.0020.0004][.E24C.0000.0000] # CJK RADICAL HAND -1F245 ; [*037A.0020.0004][.FB40.0020.0004][.E253.0000.0000][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 +1F245 ; [*038A.0020.0004][.FB40.0020.0004][.E253.0000.0000][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 1F231 ; [.FB40.0020.001C][.E253.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-6253 2F8B4 ; [.FB40.0020.0002][.E25D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8B4 1F227 ; [.FB40.0020.001C][.E295.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-6295 @@ -30312,7 +32079,7 @@ FA41 ; [.FB40.0020.0002][.E54F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA41 2F8C8 ; [.FB40.0020.0002][.E54F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8C8 FA90 ; [.FB40.0020.0002][.E556.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA90 -1F248 ; [*037A.0020.0004][.FB40.0020.0004][.E557.0000.0000][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 +1F248 ; [*038A.0020.0004][.FB40.0020.0004][.E557.0000.0000][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 2F8C9 ; [.FB40.0020.0002][.E56C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8C9 F969 ; [.FB40.0020.0002][.E578.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F969 2F42 ; [.FB40.0020.0004][.E587.0000.0000] # KANGXI RADICAL SCRIPT @@ -30329,9 +32096,9 @@ FA42 ; [.FB40.0020.0002][.E5E2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA42 2F8CB ; [.FB40.0020.0002][.E5E3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8CB 2F47 ; [.FB40.0020.0004][.E5E5.0000.0000] # KANGXI RADICAL SUN -3230 ; [*0318.0020.0004][.FB40.0020.0004][.E5E5.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SUN +3230 ; [*0328.0020.0004][.FB40.0020.0004][.E5E5.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SUN 3290 ; [.FB40.0020.0006][.E5E5.0000.0000] # CIRCLED IDEOGRAPH SUN -2E9C ; [.FB40.0020.0004][.E5E5.0000.0000][.0000.0111.0004] # CJK RADICAL SUN +2E9C ; [.FB40.0020.0004][.E5E5.0000.0000][.0000.0118.0004] # CJK RADICAL SUN 337E ; [.FB40.0020.001C][.E60E.0000.0000][.FB40.0020.001C][.ECBB.0000.0000] # SQUARE ERA NAME MEIZI F9E0 ; [.FB40.0020.0002][.E613.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9E0 1F219 ; [.FB40.0020.001C][.E620.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-6620 @@ -30350,11 +32117,11 @@ 2F8CC ; [.FB40.0020.0002][.E6F8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8CC 2F8D4 ; [.FB40.0020.0002][.E700.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8D4 2F49 ; [.FB40.0020.0004][.E708.0000.0000] # KANGXI RADICAL MOON -322A ; [*0318.0020.0004][.FB40.0020.0004][.E708.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH MOON +322A ; [*0328.0020.0004][.FB40.0020.0004][.E708.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH MOON 328A ; [.FB40.0020.0006][.E708.0000.0000] # CIRCLED IDEOGRAPH MOON 1F237 ; [.FB40.0020.001C][.E708.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-6708 -2E9D ; [.FB40.0020.0004][.E708.0000.0000][.0000.0111.0004] # CJK RADICAL MOON -3232 ; [*0318.0020.0004][.FB40.0020.0004][.E709.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH HAVE +2E9D ; [.FB40.0020.0004][.E708.0000.0000][.0000.0118.0004] # CJK RADICAL MOON +3232 ; [*0328.0020.0004][.FB40.0020.0004][.E709.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH HAVE 3292 ; [.FB40.0020.0006][.E709.0000.0000] # CIRCLED IDEOGRAPH HAVE 1F236 ; [.FB40.0020.001C][.E709.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-6709 F929 ; [.FB40.0020.0002][.E717.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F929 @@ -30364,9 +32131,9 @@ 2F8D9 ; [.FB40.0020.0002][.E71B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8D9 2F8DA ; [.FB40.0020.0002][.E721.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8DA 2F4A ; [.FB40.0020.0004][.E728.0000.0000] # KANGXI RADICAL TREE -322D ; [*0318.0020.0004][.FB40.0020.0004][.E728.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH WOOD +322D ; [*0328.0020.0004][.FB40.0020.0004][.E728.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH WOOD 328D ; [.FB40.0020.0006][.E728.0000.0000] # CIRCLED IDEOGRAPH WOOD -1F240 ; [*037A.0020.0004][.FB40.0020.0004][.E72C.0000.0000][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C +1F240 ; [*038A.0020.0004][.FB40.0020.0004][.E72C.0000.0000][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C F9E1 ; [.FB40.0020.0002][.E74E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9E1 2F8DC ; [.FB40.0020.0002][.E753.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8DC FA94 ; [.FB40.0020.0002][.E756.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA94 @@ -30378,7 +32145,7 @@ 2F8DF ; [.FB40.0020.0002][.E7FA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8DF F9DA ; [.FB40.0020.0002][.E817.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9DA 2F8E5 ; [.FB40.0020.0002][.E81F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8E5 -3231 ; [*0318.0020.0004][.FB40.0020.0004][.E82A.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH STOCK +3231 ; [*0328.0020.0004][.FB40.0020.0004][.E82A.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH STOCK 3291 ; [.FB40.0020.0006][.E82A.0000.0000] # CIRCLED IDEOGRAPH STOCK 337F ; [.FB40.0020.001C][.E82A.0000.0000][.FB40.0020.001C][.DF0F.0000.0000][.FB40.0020.001C][.CF1A.0000.0000][.FB40.0020.001C][.F93E.0000.0000] # SQUARE CORPORATION 2F8E1 ; [.FB40.0020.0002][.E852.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8E1 @@ -30408,7 +32175,7 @@ F98C ; [.FB40.0020.0002][.EB77.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F98C FA95 ; [.FB40.0020.0002][.EB79.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA95 2F4D ; [.FB40.0020.0004][.EB79.0000.0000] # KANGXI RADICAL DEATH -2E9E ; [.FB40.0020.0004][.EB7A.0000.0000][.0000.0111.0004] # CJK RADICAL DEATH +2E9E ; [.FB40.0020.0004][.EB7A.0000.0000][.0000.0118.0004] # CJK RADICAL DEATH 2F8F4 ; [.FB40.0020.0002][.EB9F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8F4 F9A5 ; [.FB40.0020.0002][.EBAE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9A5 2F4E ; [.FB40.0020.0004][.EBB3.0000.0000] # KANGXI RADICAL WEAPON @@ -30424,7 +32191,7 @@ 2EA0 ; [.FB40.0020.0004][.EC11.0000.0000] # CJK RADICAL CIVILIAN 2F53 ; [.FB40.0020.0004][.EC14.0000.0000] # KANGXI RADICAL STEAM 2F54 ; [.FB40.0020.0004][.EC34.0000.0000] # KANGXI RADICAL WATER -322C ; [*0318.0020.0004][.FB40.0020.0004][.EC34.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH WATER +322C ; [*0328.0020.0004][.FB40.0020.0004][.EC34.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH WATER 328C ; [.FB40.0020.0006][.EC34.0000.0000] # CIRCLED IDEOGRAPH WATER 2EA1 ; [.FB40.0020.0004][.EC35.0000.0000] # CJK RADICAL WATER ONE 2EA2 ; [.FB40.0020.0004][.EC3A.0000.0000] # CJK RADICAL WATER TWO @@ -30480,7 +32247,7 @@ 2F913 ; [.FB40.0020.0002][.F039.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F913 2F917 ; [.FB40.0020.0002][.F04A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F917 2F55 ; [.FB40.0020.0004][.F06B.0000.0000] # KANGXI RADICAL FIRE -322B ; [*0318.0020.0004][.FB40.0020.0004][.F06B.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FIRE +322B ; [*0328.0020.0004][.FB40.0020.0004][.F06B.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FIRE 328B ; [.FB40.0020.0006][.F06B.0000.0000] # CIRCLED IDEOGRAPH FIRE 2EA3 ; [.FB40.0020.0004][.F06C.0000.0000] # CJK RADICAL FIRE 2F835 ; [.FB40.0020.0002][.F070.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F835 @@ -30488,7 +32255,7 @@ 2F918 ; [.FB40.0020.0002][.F07D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F918 F9FB ; [.FB40.0020.0002][.F099.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9FB 2F91A ; [.FB40.0020.0002][.F0AD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F91A -1F244 ; [*037A.0020.0004][.FB40.0020.0004][.F0B9.0000.0000][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 +1F244 ; [*038A.0020.0004][.FB40.0020.0004][.F0B9.0000.0000][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 F99F ; [.FB40.0020.0002][.F0C8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F99F F916 ; [.FB40.0020.0002][.F0D9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F916 1F21A ; [.FB40.0020.001C][.F121.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-7121 @@ -30505,7 +32272,7 @@ 2F56 ; [.FB40.0020.0004][.F22A.0000.0000] # KANGXI RADICAL CLAW FA49 ; [.FB40.0020.0002][.F22B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA49 2EA4 ; [.FB40.0020.0004][.F22B.0000.0000] # CJK RADICAL PAW ONE -2EA5 ; [.FB40.0020.0004][.F22B.0000.0000][.0000.0111.0004] # CJK RADICAL PAW TWO +2EA5 ; [.FB40.0020.0004][.F22B.0000.0000][.0000.0118.0004] # CJK RADICAL PAW TWO FA9E ; [.FB40.0020.0002][.F235.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA9E 2F921 ; [.FB40.0020.0002][.F235.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F921 2F57 ; [.FB40.0020.0004][.F236.0000.0000] # KANGXI RADICAL FATHER @@ -30515,9 +32282,9 @@ 2F922 ; [.FB40.0020.0002][.F250.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F922 2F5B ; [.FB40.0020.0004][.F259.0000.0000] # KANGXI RADICAL FANG 2F5C ; [.FB40.0020.0004][.F25B.0000.0000] # KANGXI RADICAL COW -2EA7 ; [.FB40.0020.0004][.F25B.0000.0000][.0000.0111.0004] # CJK RADICAL COW +2EA7 ; [.FB40.0020.0004][.F25B.0000.0000][.0000.0118.0004] # CJK RADICAL COW F946 ; [.FB40.0020.0002][.F262.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F946 -3235 ; [*0318.0020.0004][.FB40.0020.0004][.F279.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SPECIAL +3235 ; [*0328.0020.0004][.FB40.0020.0004][.F279.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SPECIAL 3295 ; [.FB40.0020.0006][.F279.0000.0000] # CIRCLED IDEOGRAPH SPECIAL 2F924 ; [.FB40.0020.0002][.F280.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F924 2F925 ; [.FB40.0020.0002][.F295.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F925 @@ -30535,7 +32302,7 @@ F9DB ; [.FB40.0020.0002][.F387.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9DB 2F5F ; [.FB40.0020.0004][.F389.0000.0000] # KANGXI RADICAL JADE 2F929 ; [.FB40.0020.0002][.F38B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F929 -2EA9 ; [.FB40.0020.0004][.F38B.0000.0000][.0000.0111.0004] # CJK RADICAL JADE +2EA9 ; [.FB40.0020.0004][.F38B.0000.0000][.0000.0118.0004] # CJK RADICAL JADE 2F92B ; [.FB40.0020.0002][.F3A5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F92B F9AD ; [.FB40.0020.0002][.F3B2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9AD F917 ; [.FB40.0020.0002][.F3DE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F917 @@ -30570,7 +32337,7 @@ F962 ; [.FB40.0020.0002][.F570.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F962 2F938 ; [.FB40.0020.0002][.F570.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F938 2F66 ; [.FB40.0020.0004][.F58B.0000.0000] # KANGXI RADICAL BOLT OF CLOTH -2EAA ; [.FB40.0020.0004][.F58B.0000.0000][.0000.0111.0004] # CJK RADICAL BOLT OF CLOTH +2EAA ; [.FB40.0020.0004][.F58B.0000.0000][.0000.0118.0004] # CJK RADICAL BOLT OF CLOTH 2F67 ; [.FB40.0020.0004][.F592.0000.0000] # KANGXI RADICAL SICKNESS F9E5 ; [.FB40.0020.0002][.F5E2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9E5 2F93A ; [.FB40.0020.0002][.F610.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F93A @@ -30584,13 +32351,13 @@ 2F6B ; [.FB40.0020.0004][.F6BF.0000.0000] # KANGXI RADICAL DISH FA17 ; [.FB40.0020.0002][.F6CA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA17 FAA6 ; [.FB40.0020.0002][.F6CA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAA6 -1F246 ; [*037A.0020.0004][.FB40.0020.0004][.F6D7.0000.0000][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 +1F246 ; [*038A.0020.0004][.FB40.0020.0004][.F6D7.0000.0000][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 FAA7 ; [.FB40.0020.0002][.F6DB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAA7 -323C ; [*0318.0020.0004][.FB40.0020.0004][.F6E3.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SUPERVISE +323C ; [*0328.0020.0004][.FB40.0020.0004][.F6E3.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SUPERVISE 32AC ; [.FB40.0020.0006][.F6E3.0000.0000] # CIRCLED IDEOGRAPH SUPERVISE F933 ; [.FB40.0020.0002][.F6E7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F933 2F6C ; [.FB40.0020.0004][.F6EE.0000.0000] # KANGXI RADICAL EYE -2EAB ; [.FB40.0020.0004][.F6EE.0000.0000][.0000.0111.0004] # CJK RADICAL EYE +2EAB ; [.FB40.0020.0004][.F6EE.0000.0000][.0000.0118.0004] # CJK RADICAL EYE FAA8 ; [.FB40.0020.0002][.F6F4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAA8 2F940 ; [.FB40.0020.0002][.F6F4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F940 F96D ; [.FB40.0020.0002][.F701.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F96D @@ -30616,11 +32383,11 @@ F964 ; [.FB40.0020.0002][.F8FB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F964 F985 ; [.FB40.0020.0002][.F92A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F985 2F70 ; [.FB40.0020.0004][.F93A.0000.0000] # KANGXI RADICAL SPIRIT -2EAC ; [.FB40.0020.0004][.F93A.0000.0000][.0000.0111.0004] # CJK RADICAL SPIRIT ONE +2EAC ; [.FB40.0020.0004][.F93A.0000.0000][.0000.0118.0004] # CJK RADICAL SPIRIT ONE 2EAD ; [.FB40.0020.0004][.F93B.0000.0000] # CJK RADICAL SPIRIT TWO FA18 ; [.FB40.0020.0002][.F93C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA18 FA4C ; [.FB40.0020.0002][.F93E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA4C -3233 ; [*0318.0020.0004][.FB40.0020.0004][.F93E.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SOCIETY +3233 ; [*0328.0020.0004][.FB40.0020.0004][.F93E.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SOCIETY 3293 ; [.FB40.0020.0006][.F93E.0000.0000] # CIRCLED IDEOGRAPH SOCIETY FA4E ; [.FB40.0020.0002][.F948.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA4E FA4D ; [.FB40.0020.0002][.F949.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA4D @@ -30628,11 +32395,11 @@ FA50 ; [.FB40.0020.0002][.F956.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA50 2F953 ; [.FB40.0020.0002][.F956.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F953 FA51 ; [.FB40.0020.0002][.F95D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA51 -3237 ; [*0318.0020.0004][.FB40.0020.0004][.F95D.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH CONGRATULATION +3237 ; [*0328.0020.0004][.FB40.0020.0004][.F95D.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH CONGRATULATION 3297 ; [.FB40.0020.0006][.F95D.0000.0000] # CIRCLED IDEOGRAPH CONGRATULATION FA19 ; [.FB40.0020.0002][.F95E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA19 FA1A ; [.FB40.0020.0002][.F965.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA1A -3240 ; [*0318.0020.0004][.FB40.0020.0004][.F96D.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FESTIVAL +3240 ; [*0328.0020.0004][.FB40.0020.0004][.F96D.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FESTIVAL F93C ; [.FB40.0020.0002][.F97F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F93C 1F232 ; [.FB40.0020.001C][.F981.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-7981 FA52 ; [.FB40.0020.0002][.F98D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA52 @@ -30658,7 +32425,7 @@ 2F74 ; [.FB40.0020.0004][.FACB.0000.0000] # KANGXI RADICAL STAND 2F95F ; [.FB40.0020.0002][.FAEE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F95F 2F75 ; [.FB40.0020.0004][.FAF9.0000.0000] # KANGXI RADICAL BAMBOO -2EAE ; [.FB40.0020.0004][.FAF9.0000.0000][.0000.0111.0004] # CJK RADICAL BAMBOO +2EAE ; [.FB40.0020.0004][.FAF9.0000.0000][.0000.0118.0004] # CJK RADICAL BAMBOO F9F8 ; [.FB40.0020.0002][.FB20.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9F8 3247 ; [.FB40.0020.0006][.FB8F.0000.0000] # CIRCLED IDEOGRAPH KOTO FA56 ; [.FB40.0020.0002][.FBC0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA56 @@ -30701,17 +32468,17 @@ FAB1 ; [.FB40.0020.0002][.FF3E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAB1 2F79 ; [.FB40.0020.0004][.FF51.0000.0000] # KANGXI RADICAL NET 2EB2 ; [.FB40.0020.0004][.FF52.0000.0000] # CJK RADICAL NET TWO -2EB5 ; [.FB40.0020.0004][.FF52.0000.0000][.0000.0111.0004] # CJK RADICAL MESH +2EB5 ; [.FB40.0020.0004][.FF52.0000.0000][.0000.0118.0004] # CJK RADICAL MESH 2EB1 ; [.FB40.0020.0004][.FF53.0000.0000] # CJK RADICAL NET ONE -2EB3 ; [.FB40.0020.0004][.FF53.0000.0000][.0000.0111.0004] # CJK RADICAL NET THREE -2EB4 ; [.FB40.0020.0004][.FF53.0000.0000][.0000.0112.0004] # CJK RADICAL NET FOUR +2EB3 ; [.FB40.0020.0004][.FF53.0000.0000][.0000.0118.0004] # CJK RADICAL NET THREE +2EB4 ; [.FB40.0020.0004][.FF53.0000.0000][.0000.0119.0004] # CJK RADICAL NET FOUR FA5A ; [.FB40.0020.0002][.FF72.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA5A F9E6 ; [.FB40.0020.0002][.FF79.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9E6 2F976 ; [.FB40.0020.0002][.FF7A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F976 F90F ; [.FB40.0020.0002][.FF85.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F90F 2F7A ; [.FB40.0020.0004][.FF8A.0000.0000] # KANGXI RADICAL SHEEP -2EB6 ; [.FB40.0020.0004][.FF8A.0000.0000][.0000.0111.0004] # CJK RADICAL SHEEP -2EB7 ; [.FB40.0020.0004][.FF8A.0000.0000][.0000.0112.0004] # CJK RADICAL RAM +2EB6 ; [.FB40.0020.0004][.FF8A.0000.0000][.0000.0118.0004] # CJK RADICAL SHEEP +2EB7 ; [.FB40.0020.0004][.FF8A.0000.0000][.0000.0119.0004] # CJK RADICAL RAM 2EB8 ; [.FB40.0020.0004][.FF8B.0000.0000] # CJK RADICAL EWE 2F978 ; [.FB40.0020.0002][.FF95.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F978 F9AF ; [.FB40.0020.0002][.FF9A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9AF @@ -30733,10 +32500,10 @@ 2F97F ; [.FB41.0020.0002][.8070.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F97F F945 ; [.FB41.0020.0002][.807E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F945 2F80 ; [.FB41.0020.0004][.807F.0000.0000] # KANGXI RADICAL BRUSH -2EBB ; [.FB41.0020.0004][.807F.0000.0000][.0000.0111.0004] # CJK RADICAL BRUSH TWO +2EBB ; [.FB41.0020.0004][.807F.0000.0000][.0000.0118.0004] # CJK RADICAL BRUSH TWO 2EBA ; [.FB41.0020.0004][.8080.0000.0000] # CJK RADICAL BRUSH ONE 2F81 ; [.FB41.0020.0004][.8089.0000.0000] # KANGXI RADICAL MEAT -2EBC ; [.FB41.0020.0004][.8089.0000.0000][.0000.0111.0004] # CJK RADICAL MEAT +2EBC ; [.FB41.0020.0004][.8089.0000.0000][.0000.0118.0004] # CJK RADICAL MEAT F953 ; [.FB41.0020.0002][.808B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F953 2F8D6 ; [.FB41.0020.0002][.80AD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8D6 2F982 ; [.FB41.0020.0002][.80B2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F982 @@ -30746,12 +32513,12 @@ 2F82 ; [.FB41.0020.0004][.81E3.0000.0000] # KANGXI RADICAL MINISTER F9F6 ; [.FB41.0020.0002][.81E8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9F6 2F83 ; [.FB41.0020.0004][.81EA.0000.0000] # KANGXI RADICAL SELF -3242 ; [*0318.0020.0004][.FB41.0020.0004][.81EA.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SELF +3242 ; [*0328.0020.0004][.FB41.0020.0004][.81EA.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SELF FA5C ; [.FB41.0020.0002][.81ED.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA5C 2F84 ; [.FB41.0020.0004][.81F3.0000.0000] # KANGXI RADICAL ARRIVE -3243 ; [*0318.0020.0004][.FB41.0020.0004][.81F3.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH REACH +3243 ; [*0328.0020.0004][.FB41.0020.0004][.81F3.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH REACH 2F85 ; [.FB41.0020.0004][.81FC.0000.0000] # KANGXI RADICAL MORTAR -2EBD ; [.FB41.0020.0004][.81FC.0000.0000][.0000.0111.0004] # CJK RADICAL MORTAR +2EBD ; [.FB41.0020.0004][.81FC.0000.0000][.0000.0118.0004] # CJK RADICAL MORTAR 2F893 ; [.FB41.0020.0002][.8201.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F893 2F98B ; [.FB41.0020.0002][.8201.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F98B 2F98C ; [.FB41.0020.0002][.8204.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F98C @@ -30766,8 +32533,8 @@ FA5D ; [.FB41.0020.0002][.8279.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA5D FA5E ; [.FB41.0020.0002][.8279.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA5E 2EBE ; [.FB41.0020.0004][.8279.0000.0000] # CJK RADICAL GRASS ONE -2EBF ; [.FB41.0020.0004][.8279.0000.0000][.0000.0111.0004] # CJK RADICAL GRASS TWO -2EC0 ; [.FB41.0020.0004][.8279.0000.0000][.0000.0112.0004] # CJK RADICAL GRASS THREE +2EBF ; [.FB41.0020.0004][.8279.0000.0000][.0000.0118.0004] # CJK RADICAL GRASS TWO +2EC0 ; [.FB41.0020.0004][.8279.0000.0000][.0000.0119.0004] # CJK RADICAL GRASS THREE 2F990 ; [.FB41.0020.0002][.828B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F990 2F98F ; [.FB41.0020.0002][.8291.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F98F 2F991 ; [.FB41.0020.0002][.829D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F991 @@ -30857,7 +32624,7 @@ 2EC5 ; [.FB41.0020.0004][.89C1.0000.0000] # CJK RADICAL C-SIMPLIFIED SEE 2EC6 ; [.FB41.0020.0004][.89D2.0000.0000] # CJK RADICAL SIMPLIFIED HORN 2F93 ; [.FB41.0020.0004][.89D2.0000.0000] # KANGXI RADICAL HORN -2EC7 ; [.FB41.0020.0004][.89D2.0000.0000][.0000.0111.0004] # CJK RADICAL HORN +2EC7 ; [.FB41.0020.0004][.89D2.0000.0000][.0000.0118.0004] # CJK RADICAL HORN 1F216 ; [.FB41.0020.001C][.89E3.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-89E3 2F94 ; [.FB41.0020.0004][.8A00.0000.0000] # KANGXI RADICAL SPEECH 2F9CF ; [.FB41.0020.0002][.8AA0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9CF @@ -30889,13 +32656,13 @@ 2F97 ; [.FB41.0020.0004][.8C55.0000.0000] # KANGXI RADICAL PIG 2F98 ; [.FB41.0020.0004][.8C78.0000.0000] # KANGXI RADICAL BADGER 2F99 ; [.FB41.0020.0004][.8C9D.0000.0000] # KANGXI RADICAL SHELL -3236 ; [*0318.0020.0004][.FB41.0020.0004][.8CA1.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FINANCIAL +3236 ; [*0328.0020.0004][.FB41.0020.0004][.8CA1.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FINANCIAL 3296 ; [.FB41.0020.0006][.8CA1.0000.0000] # CIRCLED IDEOGRAPH FINANCIAL 1F223 ; [.FB41.0020.001C][.8CA9.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-8CA9 2F9D4 ; [.FB41.0020.0002][.8CAB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9D4 2F9D5 ; [.FB41.0020.0002][.8CC1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9D5 F948 ; [.FB41.0020.0002][.8CC2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F948 -323E ; [*0318.0020.0004][.FB41.0020.0004][.8CC7.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH RESOURCE +323E ; [*0328.0020.0004][.FB41.0020.0004][.8CC7.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH RESOURCE 32AE ; [.FB41.0020.0006][.8CC7.0000.0000] # CIRCLED IDEOGRAPH RESOURCE F903 ; [.FB41.0020.0002][.8CC8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F903 FA64 ; [.FB41.0020.0002][.8CD3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA64 @@ -30908,7 +32675,7 @@ 1F230 ; [.FB41.0020.001C][.8D70.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-8D70 2F9D7 ; [.FB41.0020.0002][.8D77.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9D7 2F9C ; [.FB41.0020.0004][.8DB3.0000.0000] # KANGXI RADICAL FOOT -2ECA ; [.FB41.0020.0004][.8DB3.0000.0000][.0000.0111.0004] # CJK RADICAL FOOT +2ECA ; [.FB41.0020.0004][.8DB3.0000.0000][.0000.0118.0004] # CJK RADICAL FOOT 2F9DB ; [.FB41.0020.0002][.8DBC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9DB 2F9DA ; [.FB41.0020.0002][.8DCB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9DA F937 ; [.FB41.0020.0002][.8DEF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F937 @@ -30931,8 +32698,8 @@ 2FA1 ; [.FB41.0020.0004][.8FB5.0000.0000] # KANGXI RADICAL WALK FA66 ; [.FB41.0020.0002][.8FB6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA66 2ECC ; [.FB41.0020.0004][.8FB6.0000.0000] # CJK RADICAL SIMPLIFIED WALK -2ECD ; [.FB41.0020.0004][.8FB6.0000.0000][.0000.0111.0004] # CJK RADICAL WALK ONE -2ECE ; [.FB41.0020.0004][.8FB6.0000.0000][.0000.0112.0004] # CJK RADICAL WALK TWO +2ECD ; [.FB41.0020.0004][.8FB6.0000.0000][.0000.0118.0004] # CJK RADICAL WALK ONE +2ECE ; [.FB41.0020.0004][.8FB6.0000.0000][.0000.0119.0004] # CJK RADICAL WALK TWO F99A ; [.FB41.0020.0002][.9023.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F99A FA25 ; [.FB41.0020.0002][.9038.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA25 FA67 ; [.FB41.0020.0002][.9038.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA67 @@ -30942,7 +32709,7 @@ F9C3 ; [.FB41.0020.0002][.907C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9C3 F913 ; [.FB41.0020.0002][.908F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F913 2FA2 ; [.FB41.0020.0004][.9091.0000.0000] # KANGXI RADICAL CITY -2ECF ; [.FB41.0020.0004][.9091.0000.0000][.0000.0111.0004] # CJK RADICAL CITY +2ECF ; [.FB41.0020.0004][.9091.0000.0000][.0000.0118.0004] # CJK RADICAL CITY 2F9E2 ; [.FB41.0020.0002][.9094.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9E2 F92C ; [.FB41.0020.0002][.90CE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F92C FA2E ; [.FB41.0020.0002][.90DE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA2E @@ -30961,7 +32728,7 @@ F97E ; [.FB41.0020.0002][.91CF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F97E F90A ; [.FB41.0020.0002][.91D1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F90A 2FA6 ; [.FB41.0020.0004][.91D1.0000.0000] # KANGXI RADICAL GOLD -322E ; [*0318.0020.0004][.FB41.0020.0004][.91D1.0000.0000][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH METAL +322E ; [*0328.0020.0004][.FB41.0020.0004][.91D1.0000.0000][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH METAL 328E ; [.FB41.0020.0006][.91D1.0000.0000] # CIRCLED IDEOGRAPH METAL F9B1 ; [.FB41.0020.0002][.9234.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9B1 2F9E7 ; [.FB41.0020.0002][.9238.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9E7 @@ -30984,7 +32751,7 @@ 2F9F0 ; [.FB41.0020.0002][.95B7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9F0 2ED4 ; [.FB41.0020.0004][.95E8.0000.0000] # CJK RADICAL C-SIMPLIFIED GATE 2FA9 ; [.FB41.0020.0004][.961C.0000.0000] # KANGXI RADICAL MOUND -2ED5 ; [.FB41.0020.0004][.961C.0000.0000][.0000.0111.0004] # CJK RADICAL MOUND ONE +2ED5 ; [.FB41.0020.0004][.961C.0000.0000][.0000.0118.0004] # CJK RADICAL MOUND ONE 2ED6 ; [.FB41.0020.0004][.961D.0000.0000] # CJK RADICAL MOUND TWO F9C6 ; [.FB41.0020.0002][.962E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9C6 F951 ; [.FB41.0020.0002][.964B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F951 @@ -31003,7 +32770,7 @@ FA68 ; [.FB41.0020.0002][.96E3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA68 FAC7 ; [.FB41.0020.0002][.96E3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAC7 2FAC ; [.FB41.0020.0004][.96E8.0000.0000] # KANGXI RADICAL RAIN -2ED7 ; [.FB41.0020.0004][.96E8.0000.0000][.0000.0111.0004] # CJK RADICAL RAIN +2ED7 ; [.FB41.0020.0004][.96E8.0000.0000][.0000.0118.0004] # CJK RADICAL RAIN F9B2 ; [.FB41.0020.0002][.96F6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9B2 F949 ; [.FB41.0020.0002][.96F7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F949 2F9F5 ; [.FB41.0020.0002][.9723.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9F5 @@ -31042,7 +32809,7 @@ 2EDD ; [.FB41.0020.0004][.98DF.0000.0000] # CJK RADICAL EAT ONE 2FB7 ; [.FB41.0020.0004][.98DF.0000.0000] # KANGXI RADICAL EAT 2EDF ; [.FB41.0020.0004][.98E0.0000.0000] # CJK RADICAL EAT THREE -2EDE ; [.FB41.0020.0004][.98E0.0000.0000][.0000.0111.0004] # CJK RADICAL EAT TWO +2EDE ; [.FB41.0020.0004][.98E0.0000.0000][.0000.0118.0004] # CJK RADICAL EAT TWO 2FA02 ; [.FB41.0020.0002][.98E2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA02 FA2A ; [.FB41.0020.0002][.98EF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA2A FA2B ; [.FB41.0020.0002][.98FC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA2B @@ -31050,7 +32817,7 @@ 2FA04 ; [.FB41.0020.0002][.9929.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA04 2EE0 ; [.FB41.0020.0004][.9963.0000.0000] # CJK RADICAL C-SIMPLIFIED EAT 2FB8 ; [.FB41.0020.0004][.9996.0000.0000] # KANGXI RADICAL HEAD -2EE1 ; [.FB41.0020.0004][.9996.0000.0000][.0000.0111.0004] # CJK RADICAL HEAD +2EE1 ; [.FB41.0020.0004][.9996.0000.0000][.0000.0118.0004] # CJK RADICAL HEAD 2FB9 ; [.FB41.0020.0004][.9999.0000.0000] # KANGXI RADICAL FRAGRANT 2FA05 ; [.FB41.0020.0002][.99A7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA05 2FBA ; [.FB41.0020.0004][.99AC.0000.0000] # KANGXI RADICAL HORSE @@ -31060,7 +32827,7 @@ F987 ; [.FB41.0020.0002][.9A6A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F987 2EE2 ; [.FB41.0020.0004][.9A6C.0000.0000] # CJK RADICAL C-SIMPLIFIED HORSE 2FBB ; [.FB41.0020.0004][.9AA8.0000.0000] # KANGXI RADICAL BONE -2EE3 ; [.FB41.0020.0004][.9AA8.0000.0000][.0000.0111.0004] # CJK RADICAL BONE +2EE3 ; [.FB41.0020.0004][.9AA8.0000.0000][.0000.0118.0004] # CJK RADICAL BONE 2FBC ; [.FB41.0020.0004][.9AD8.0000.0000] # KANGXI RADICAL TALL 2FBD ; [.FB41.0020.0004][.9ADF.0000.0000] # KANGXI RADICAL HAIR FACD ; [.FB41.0020.0002][.9B12.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FACD @@ -31069,7 +32836,7 @@ 2FBF ; [.FB41.0020.0004][.9B2F.0000.0000] # KANGXI RADICAL SACRIFICIAL WINE 2FC0 ; [.FB41.0020.0004][.9B32.0000.0000] # KANGXI RADICAL CAULDRON 2FC1 ; [.FB41.0020.0004][.9B3C.0000.0000] # KANGXI RADICAL GHOST -2EE4 ; [.FB41.0020.0004][.9B3C.0000.0000][.0000.0111.0004] # CJK RADICAL GHOST +2EE4 ; [.FB41.0020.0004][.9B3C.0000.0000][.0000.0118.0004] # CJK RADICAL GHOST 2FC2 ; [.FB41.0020.0004][.9B5A.0000.0000] # KANGXI RADICAL FISH F939 ; [.FB41.0020.0002][.9B6F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F939 2FA0B ; [.FB41.0020.0002][.9C40.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA0B @@ -31083,7 +32850,7 @@ F920 ; [.FB41.0020.0002][.9E1E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F920 2EE6 ; [.FB41.0020.0004][.9E1F.0000.0000] # CJK RADICAL C-SIMPLIFIED BIRD 2FC4 ; [.FB41.0020.0004][.9E75.0000.0000] # KANGXI RADICAL SALT -2EE7 ; [.FB41.0020.0004][.9E75.0000.0000][.0000.0111.0004] # CJK RADICAL C-SIMPLIFIED SALT +2EE7 ; [.FB41.0020.0004][.9E75.0000.0000][.0000.0118.0004] # CJK RADICAL C-SIMPLIFIED SALT F940 ; [.FB41.0020.0002][.9E7F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F940 2FC5 ; [.FB41.0020.0004][.9E7F.0000.0000] # KANGXI RADICAL DEER F988 ; [.FB41.0020.0002][.9E97.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F988 @@ -31112,22 +32879,22 @@ 2FD0 ; [.FB41.0020.0004][.9F3B.0000.0000] # KANGXI RADICAL NOSE FAD8 ; [.FB41.0020.0002][.9F43.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAD8 2FD1 ; [.FB41.0020.0004][.9F4A.0000.0000] # KANGXI RADICAL EVEN -2EEB ; [.FB41.0020.0004][.9F4A.0000.0000][.0000.0111.0004] # CJK RADICAL J-SIMPLIFIED EVEN +2EEB ; [.FB41.0020.0004][.9F4A.0000.0000][.0000.0118.0004] # CJK RADICAL J-SIMPLIFIED EVEN 2EEC ; [.FB41.0020.0004][.9F50.0000.0000] # CJK RADICAL C-SIMPLIFIED EVEN 2FD2 ; [.FB41.0020.0004][.9F52.0000.0000] # KANGXI RADICAL TOOTH -2EED ; [.FB41.0020.0004][.9F52.0000.0000][.0000.0111.0004] # CJK RADICAL J-SIMPLIFIED TOOTH +2EED ; [.FB41.0020.0004][.9F52.0000.0000][.0000.0118.0004] # CJK RADICAL J-SIMPLIFIED TOOTH 2EEE ; [.FB41.0020.0004][.9F7F.0000.0000] # CJK RADICAL C-SIMPLIFIED TOOTH F9C4 ; [.FB41.0020.0002][.9F8D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9C4 2FD3 ; [.FB41.0020.0004][.9F8D.0000.0000] # KANGXI RADICAL DRAGON -2EEF ; [.FB41.0020.0004][.9F8D.0000.0000][.0000.0111.0004] # CJK RADICAL J-SIMPLIFIED DRAGON +2EEF ; [.FB41.0020.0004][.9F8D.0000.0000][.0000.0118.0004] # CJK RADICAL J-SIMPLIFIED DRAGON FAD9 ; [.FB41.0020.0002][.9F8E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAD9 2EF0 ; [.FB41.0020.0004][.9F99.0000.0000] # CJK RADICAL C-SIMPLIFIED DRAGON F907 ; [.FB41.0020.0002][.9F9C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F907 F908 ; [.FB41.0020.0002][.9F9C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F908 FACE ; [.FB41.0020.0002][.9F9C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FACE 2FD4 ; [.FB41.0020.0004][.9F9C.0000.0000] # KANGXI RADICAL TURTLE -2EF1 ; [.FB41.0020.0004][.9F9C.0000.0000][.0000.0111.0004] # CJK RADICAL TURTLE -2EF2 ; [.FB41.0020.0004][.9F9C.0000.0000][.0000.0112.0004] # CJK RADICAL J-SIMPLIFIED TURTLE +2EF1 ; [.FB41.0020.0004][.9F9C.0000.0000][.0000.0118.0004] # CJK RADICAL TURTLE +2EF2 ; [.FB41.0020.0004][.9F9C.0000.0000][.0000.0119.0004] # CJK RADICAL J-SIMPLIFIED TURTLE 2EF3 ; [.FB41.0020.0004][.9F9F.0000.0000] # CJK RADICAL C-SIMPLIFIED TURTLE 2FD5 ; [.FB41.0020.0004][.9FA0.0000.0000] # KANGXI RADICAL FLUTE FA0E ; [.FB41.0020.0002][.FA0E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA0E diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/CJK/Big5.pm perl-5.34.0/cpan/Unicode-Collate/Collate/CJK/Big5.pm --- perl-5.32.1/cpan/Unicode-Collate/Collate/CJK/Big5.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/CJK/Big5.pm 2020-10-24 18:43:34.000000000 +0000 @@ -4,7 +4,7 @@ use strict; use warnings; -our $VERSION = '1.27'; +our $VERSION = '1.29'; my %u2p; my $wt = 0x8000; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/CJK/GB2312.pm perl-5.34.0/cpan/Unicode-Collate/Collate/CJK/GB2312.pm --- perl-5.32.1/cpan/Unicode-Collate/Collate/CJK/GB2312.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/CJK/GB2312.pm 2020-10-24 18:43:34.000000000 +0000 @@ -4,7 +4,7 @@ use strict; use warnings; -our $VERSION = '1.27'; +our $VERSION = '1.29'; my %u2p; my $wt = 0x8000; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/CJK/JISX0208.pm perl-5.34.0/cpan/Unicode-Collate/Collate/CJK/JISX0208.pm --- perl-5.32.1/cpan/Unicode-Collate/Collate/CJK/JISX0208.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/CJK/JISX0208.pm 2020-10-24 18:43:34.000000000 +0000 @@ -4,7 +4,7 @@ use strict; use warnings; -our $VERSION = '1.27'; +our $VERSION = '1.29'; my %u2p; my $wt = 0x8000; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/CJK/Korean.pm perl-5.34.0/cpan/Unicode-Collate/Collate/CJK/Korean.pm --- perl-5.32.1/cpan/Unicode-Collate/Collate/CJK/Korean.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/CJK/Korean.pm 2020-10-24 18:43:34.000000000 +0000 @@ -4,21 +4,21 @@ use strict; use warnings; -our $VERSION = '1.27'; +our $VERSION = '1.29'; my %jamo2prim = ( - '1100', 0x3D0C, '1101', 0x3D0D, '1102', 0x3D0E, '1103', 0x3D0F, - '1105', 0x3D11, '1106', 0x3D12, '1107', 0x3D13, '1109', 0x3D15, - '110A', 0x3D16, '110B', 0x3D17, '110C', 0x3D18, '110E', 0x3D1A, - '110F', 0x3D1B, '1110', 0x3D1C, '1111', 0x3D1D, '1112', 0x3D1E, - '1161', 0x3D8A, '1162', 0x3D8B, '1163', 0x3D8C, '1165', 0x3D8E, - '1166', 0x3D8F, '1167', 0x3D90, '1168', 0x3D91, '1169', 0x3D92, - '116A', 0x3D93, '116B', 0x3D94, '116C', 0x3D95, '116D', 0x3D96, - '116E', 0x3D97, '116F', 0x3D98, '1170', 0x3D99, '1171', 0x3D9A, - '1172', 0x3D9B, '1173', 0x3D9C, '1174', 0x3D9D, '1175', 0x3D9E, - '11A8', 0x3DE8, '11AB', 0x3DEB, '11AF', 0x3DEF, '11B7', 0x3DF7, - '11B8', 0x3DF8, '11BC', 0x3DFC, '11BD', 0x3DFD, -); # for DUCET v10.0.0 + '1100', 0x4175, '1101', 0x4176, '1102', 0x4177, '1103', 0x4178, + '1105', 0x417A, '1106', 0x417B, '1107', 0x417C, '1109', 0x417E, + '110A', 0x417F, '110B', 0x4180, '110C', 0x4181, '110E', 0x4183, + '110F', 0x4184, '1110', 0x4185, '1111', 0x4186, '1112', 0x4187, + '1161', 0x41F3, '1162', 0x41F4, '1163', 0x41F5, '1165', 0x41F7, + '1166', 0x41F8, '1167', 0x41F9, '1168', 0x41FA, '1169', 0x41FB, + '116A', 0x41FC, '116B', 0x41FD, '116C', 0x41FE, '116D', 0x41FF, + '116E', 0x4200, '116F', 0x4201, '1170', 0x4202, '1171', 0x4203, + '1172', 0x4204, '1173', 0x4205, '1174', 0x4206, '1175', 0x4207, + '11A8', 0x4251, '11AB', 0x4254, '11AF', 0x4258, '11B7', 0x4260, + '11B8', 0x4261, '11BC', 0x4265, '11BD', 0x4266, +); # for DUCET v13.0.0 my(%u2e, $prim, $wt); while () { diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/CJK/Pinyin.pm perl-5.34.0/cpan/Unicode-Collate/Collate/CJK/Pinyin.pm --- perl-5.32.1/cpan/Unicode-Collate/Collate/CJK/Pinyin.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/CJK/Pinyin.pm 2020-10-24 18:43:34.000000000 +0000 @@ -4,7 +4,7 @@ use strict; use warnings; -our $VERSION = '1.27'; +our $VERSION = '1.29'; my %u2p; my $wt = 0x8000; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/CJK/Stroke.pm perl-5.34.0/cpan/Unicode-Collate/Collate/CJK/Stroke.pm --- perl-5.32.1/cpan/Unicode-Collate/Collate/CJK/Stroke.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/CJK/Stroke.pm 2020-10-24 18:43:34.000000000 +0000 @@ -4,7 +4,7 @@ use strict; use warnings; -our $VERSION = '1.27'; +our $VERSION = '1.29'; my %u2p; my $wt = 0x8000; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/CJK/Zhuyin.pm perl-5.34.0/cpan/Unicode-Collate/Collate/CJK/Zhuyin.pm --- perl-5.32.1/cpan/Unicode-Collate/Collate/CJK/Zhuyin.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/CJK/Zhuyin.pm 2020-10-24 18:43:34.000000000 +0000 @@ -4,7 +4,7 @@ use strict; use warnings; -our $VERSION = '1.27'; +our $VERSION = '1.29'; my %u2p; my $wt = 0x8000; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/af.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/af.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/af.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/af.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,6 +1,6 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0149 ; [.1E1F.0020.0009] # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0149 ; [.2118.0020.0009] # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ar.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ar.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ar.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ar.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,15 +1,15 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0629 ; [.2383.0021.0002] # ARABIC LETTER TEH MARBUTA -FE94 ; [.2383.0021.0019] # ARABIC LETTER TEH MARBUTA FINAL FORM -FE93 ; [.2383.0021.001A] # ARABIC LETTER TEH MARBUTA ISOLATED FORM -0649 ; [.242C.0021.0002] # ARABIC LETTER ALEF MAKSURA -FBE8 ; [.242C.0021.0017] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM -FBE9 ; [.242C.0021.0018] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM -FEF0 ; [.242C.0021.0019] # ARABIC LETTER ALEF MAKSURA FINAL FORM -FEEF ; [.242C.0021.001A] # ARABIC LETTER ALEF MAKSURA ISOLATED FORM -FC90 ; [.242C.0021.001B] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM -FC5D ; [.242C.0021.001C] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0629 ; [.2685.0021.0002] # ARABIC LETTER TEH MARBUTA +FE94 ; [.2685.0021.0019] # ARABIC LETTER TEH MARBUTA FINAL FORM +FE93 ; [.2685.0021.001A] # ARABIC LETTER TEH MARBUTA ISOLATED FORM +0649 ; [.2737.0021.0002] # ARABIC LETTER ALEF MAKSURA +FBE8 ; [.2737.0021.0017] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM +FBE9 ; [.2737.0021.0018] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM +FEF0 ; [.2737.0021.0019] # ARABIC LETTER ALEF MAKSURA FINAL FORM +FEEF ; [.2737.0021.001A] # ARABIC LETTER ALEF MAKSURA ISOLATED FORM +FC90 ; [.2737.0021.001B] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM +FC5D ; [.2737.0021.001C] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/as.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/as.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/as.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/as.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,14 +1,14 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0982 ; [.273E.0020.0002][.FFF1.0000.0000] # BENGALI SIGN ANUSVARA -0981 ; [.273E.0020.0002][.FFF2.0000.0000] # BENGALI SIGN CANDRABINDU -0983 ; [.273E.0020.0002][.FFF3.0000.0000] # BENGALI SIGN VISARGA -0994 ; [.273E.0020.0002][.FFF0.0000.0000] # BENGALI LETTER AU -09CE ; [.274E.0020.0002][.FFF0.0000.0000] # BENGALI LETTER KHANDA TA -09A4 09CD 200D ; [.274E.0020.0002][.FFF0.0000.0000] # -09A4 ; [.274E.0020.0002][.FFF1.0000.0000] # BENGALI LETTER TA -0995 09CD 09B7 ; [.2760.0020.0002][.FFF1.0000.0000] # -09B9 ; [.2760.0020.0002][.FFF0.0000.0000] # BENGALI LETTER HA + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0982 ; [.2A4B.0020.0002][.FFF1.0000.0000] # BENGALI SIGN ANUSVARA +0981 ; [.2A4B.0020.0002][.FFF2.0000.0000] # BENGALI SIGN CANDRABINDU +0983 ; [.2A4B.0020.0002][.FFF3.0000.0000] # BENGALI SIGN VISARGA +0994 ; [.2A4B.0020.0002][.FFF0.0000.0000] # BENGALI LETTER AU +09CE ; [.2A5B.0020.0002][.FFF0.0000.0000] # BENGALI LETTER KHANDA TA +09A4 09CD 200D ; [.2A5B.0020.0002][.FFF0.0000.0000] # +09A4 ; [.2A5B.0020.0002][.FFF1.0000.0000] # BENGALI LETTER TA +0995 09CD 09B7 ; [.2A6D.0020.0002][.FFF1.0000.0000] # +09B9 ; [.2A6D.0020.0002][.FFF0.0000.0000] # BENGALI LETTER HA ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/az.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/az.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/az.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/az.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,53 +1,53 @@ +{ - locale_version => 1.27, + locale_version => 1.29, # schwa doesn't require tailoring - entry => <<'ENTRY', # for DUCET v10.0.0 -00E7 ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CEDILLA -0063 0327 ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CEDILLA -00C7 ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CEDILLA -0043 0327 ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CEDILLA -011F ; [.1D5B.0020.0002] # LATIN SMALL LETTER G WITH BREVE -0067 0306 ; [.1D5B.0020.0002] # LATIN SMALL LETTER G WITH BREVE -011E ; [.1D5B.0020.0008] # LATIN CAPITAL LETTER G WITH BREVE -0047 0306 ; [.1D5B.0020.0008] # LATIN CAPITAL LETTER G WITH BREVE -0131 ; [.1D97.0020.0002] # LATIN SMALL LETTER DOTLESS I -0049 ; [.1D97.0020.0008] # LATIN CAPITAL LETTER I -00CC ; [.1D97.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER I WITH GRAVE -00CD ; [.1D97.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER I WITH ACUTE -00CE ; [.1D97.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX -00CF ; [.1D97.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER I WITH DIAERESIS -012A ; [.1D97.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER I WITH MACRON -012C ; [.1D97.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER I WITH BREVE -012E ; [.1D97.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER I WITH OGONEK -0130 ; [.1D98.0020.0008] # LATIN CAPITAL LETTER I WITH DOT ABOVE -0049 0307 ; [.1D98.0020.0008] # LATIN CAPITAL LETTER I WITH DOT ABOVE -00F6 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1E44.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1E44.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -015F ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CEDILLA -0073 0327 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CEDILLA -015E ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CEDILLA -0053 0327 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CEDILLA -00FC ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1F1C.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F1C.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1F1C.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F1C.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1F1C.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F1C.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1F1C.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F1C.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0071 ; [.1DCC.0020.0002] # LATIN SMALL LETTER Q -0051 ; [.1DCC.0020.0008] # LATIN CAPITAL LETTER Q -0078 ; [.1D7F.0020.0002] # LATIN SMALL LETTER X -0058 ; [.1D7F.0020.0008] # LATIN CAPITAL LETTER X -0077 ; [.1F88.0020.0002] # LATIN SMALL LETTER W -0057 ; [.1F88.0020.0008] # LATIN CAPITAL LETTER W + entry => <<'ENTRY', # for DUCET v13.0.0 +00E7 ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CEDILLA +0063 0327 ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CEDILLA +00C7 ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CEDILLA +0043 0327 ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CEDILLA +011F ; [.2052.0020.0002] # LATIN SMALL LETTER G WITH BREVE +0067 0306 ; [.2052.0020.0002] # LATIN SMALL LETTER G WITH BREVE +011E ; [.2052.0020.0008] # LATIN CAPITAL LETTER G WITH BREVE +0047 0306 ; [.2052.0020.0008] # LATIN CAPITAL LETTER G WITH BREVE +0131 ; [.208F.0020.0002] # LATIN SMALL LETTER DOTLESS I +0049 ; [.208F.0020.0008] # LATIN CAPITAL LETTER I +00CC ; [.208F.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER I WITH GRAVE +00CD ; [.208F.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER I WITH ACUTE +00CE ; [.208F.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +00CF ; [.208F.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER I WITH DIAERESIS +012A ; [.208F.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER I WITH MACRON +012C ; [.208F.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER I WITH BREVE +012E ; [.208F.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER I WITH OGONEK +0130 ; [.2090.0020.0008] # LATIN CAPITAL LETTER I WITH DOT ABOVE +0049 0307 ; [.2090.0020.0008] # LATIN CAPITAL LETTER I WITH DOT ABOVE +00F6 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.213D.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.213D.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +015F ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CEDILLA +0073 0327 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CEDILLA +015E ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CEDILLA +0053 0327 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CEDILLA +00FC ; [.2218.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2218.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2218.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2218.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.2218.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2218.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.2218.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2218.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.2218.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2218.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.2218.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2218.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0071 ; [.20C5.0020.0002] # LATIN SMALL LETTER Q +0051 ; [.20C5.0020.0008] # LATIN CAPITAL LETTER Q +0078 ; [.2076.0020.0002] # LATIN SMALL LETTER X +0058 ; [.2076.0020.0008] # LATIN CAPITAL LETTER X +0077 ; [.2287.0020.0002] # LATIN SMALL LETTER W +0057 ; [.2287.0020.0008] # LATIN CAPITAL LETTER W ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/be.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/be.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/be.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/be.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,13 +1,13 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0451 ; [.20C1.0020.0002] # CYRILLIC SMALL LETTER IO -0435 0308 ; [.20C1.0020.0002] # CYRILLIC SMALL LETTER IO -0401 ; [.20C1.0020.0008] # CYRILLIC CAPITAL LETTER IO -0415 0308 ; [.20C1.0020.0008] # CYRILLIC CAPITAL LETTER IO -045E ; [.2184.0020.0002] # CYRILLIC SMALL LETTER SHORT U -0443 0306 ; [.2184.0020.0002] # CYRILLIC SMALL LETTER SHORT U -040E ; [.2184.0020.0008] # CYRILLIC CAPITAL LETTER SHORT U -0423 0306 ; [.2184.0020.0008] # CYRILLIC CAPITAL LETTER SHORT U + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0451 ; [.23C0.0020.0002] # CYRILLIC SMALL LETTER IO +0435 0308 ; [.23C0.0020.0002] # CYRILLIC SMALL LETTER IO +0401 ; [.23C0.0020.0008] # CYRILLIC CAPITAL LETTER IO +0415 0308 ; [.23C0.0020.0008] # CYRILLIC CAPITAL LETTER IO +045E ; [.2483.0020.0002] # CYRILLIC SMALL LETTER SHORT U +0443 0306 ; [.2483.0020.0002] # CYRILLIC SMALL LETTER SHORT U +040E ; [.2483.0020.0008] # CYRILLIC CAPITAL LETTER SHORT U +0423 0306 ; [.2483.0020.0008] # CYRILLIC CAPITAL LETTER SHORT U ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/bn.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/bn.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/bn.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/bn.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,9 +1,9 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0982 ; [.273E.0020.0002][.FFF1.0000.0000] # BENGALI SIGN ANUSVARA -0983 ; [.273E.0020.0002][.FFF2.0000.0000] # BENGALI SIGN VISARGA -0981 ; [.273E.0020.0002][.FFF3.0000.0000] # BENGALI SIGN CANDRABINDU -0994 ; [.273E.0020.0002][.FFF0.0000.0000] # BENGALI LETTER AU + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0982 ; [.2A4B.0020.0002][.FFF1.0000.0000] # BENGALI SIGN ANUSVARA +0983 ; [.2A4B.0020.0002][.FFF2.0000.0000] # BENGALI SIGN VISARGA +0981 ; [.2A4B.0020.0002][.FFF3.0000.0000] # BENGALI SIGN CANDRABINDU +0994 ; [.2A4B.0020.0002][.FFF0.0000.0000] # BENGALI LETTER AU ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ca.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ca.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ca.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ca.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,17 +1,17 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0063 0068 ; [.1CE1.0020.0002] # -0063 0048 ; [.1CE1.0020.0007][.0000.0000.0002] # -0043 0068 ; [.1CE1.0020.0007][.0000.0000.0008] # -0043 0048 ; [.1CE1.0020.0008] # -006C 006C ; [.1DDE.0020.0002][.0000.0000.0001] # -006C 00B7 006C ; [.1DDE.0020.0002][.0000.0000.0007] # -006C 004C ; [.1DDE.0020.0007][.0000.0000.0002][.0000.0000.0001] # -006C 00B7 004C ; [.1DDE.0020.0007][.0000.0000.0002][.0000.0000.0007] # -004C 006C ; [.1DDE.0020.0007][.0000.0000.0008][.0000.0000.0001] # -004C 00B7 006C ; [.1DDE.0020.0007][.0000.0000.0008][.0000.0000.0007] # -004C 004C ; [.1DDE.0020.0008][.0000.0000.0001] # -004C 00B7 004C ; [.1DDE.0020.0008][.0000.0000.0007] # + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0063 0068 ; [.1FD7.0020.0002] # +0063 0048 ; [.1FD7.0020.0007][.0000.0000.0002] # +0043 0068 ; [.1FD7.0020.0007][.0000.0000.0008] # +0043 0048 ; [.1FD7.0020.0008] # +006C 006C ; [.20D7.0020.0002][.0000.0000.0001] # +006C 00B7 006C ; [.20D7.0020.0002][.0000.0000.0007] # +006C 004C ; [.20D7.0020.0007][.0000.0000.0002][.0000.0000.0001] # +006C 00B7 004C ; [.20D7.0020.0007][.0000.0000.0002][.0000.0000.0007] # +004C 006C ; [.20D7.0020.0007][.0000.0000.0008][.0000.0000.0001] # +004C 00B7 006C ; [.20D7.0020.0007][.0000.0000.0008][.0000.0000.0007] # +004C 004C ; [.20D7.0020.0008][.0000.0000.0001] # +004C 00B7 004C ; [.20D7.0020.0008][.0000.0000.0007] # ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/cs.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/cs.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/cs.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/cs.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,25 +1,25 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -010D ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON -0063 030C ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON -010C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0043 030C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0063 0068 ; [.1D7F.0020.0002] # -0063 0048 ; [.1D7F.0020.0007][.0000.0000.0002] # -0043 0068 ; [.1D7F.0020.0007][.0000.0000.0008] # -0043 0048 ; [.1D7F.0020.0008] # -0159 ; [.1E9A.0020.0002] # LATIN SMALL LETTER R WITH CARON -0072 030C ; [.1E9A.0020.0002] # LATIN SMALL LETTER R WITH CARON -0158 ; [.1E9A.0020.0008] # LATIN CAPITAL LETTER R WITH CARON -0052 030C ; [.1E9A.0020.0008] # LATIN CAPITAL LETTER R WITH CARON -0161 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0073 030C ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0160 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -0053 030C ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -017E ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON -007A 030C ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON -017D ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON -005A 030C ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +010D ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON +0063 030C ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON +010C ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0043 030C ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0063 0068 ; [.2076.0020.0002] # +0063 0048 ; [.2076.0020.0007][.0000.0000.0002] # +0043 0068 ; [.2076.0020.0007][.0000.0000.0008] # +0043 0048 ; [.2076.0020.0008] # +0159 ; [.2194.0020.0002] # LATIN SMALL LETTER R WITH CARON +0072 030C ; [.2194.0020.0002] # LATIN SMALL LETTER R WITH CARON +0158 ; [.2194.0020.0008] # LATIN CAPITAL LETTER R WITH CARON +0052 030C ; [.2194.0020.0008] # LATIN CAPITAL LETTER R WITH CARON +0161 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0073 030C ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0160 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +0053 030C ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +017E ; [.2287.0020.0002] # LATIN SMALL LETTER Z WITH CARON +007A 030C ; [.2287.0020.0002] # LATIN SMALL LETTER Z WITH CARON +017D ; [.2287.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON +005A 030C ; [.2287.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/cu.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/cu.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/cu.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/cu.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,56 +1,56 @@ +{ - locale_version => 1.27, + locale_version => 1.29, upper_before_lower => 1, backwards => 2, suppress => [0x0418, 0x0438], - entry => <<'ENTRY', # for DUCET v10.0.0 + entry => <<'ENTRY', # for DUCET v13.0.0 0487 ; [.0000.0000.0000] # COMBINING CYRILLIC POKRYTIE A67C ; [.0000.0000.0000] # COMBINING CYRILLIC KAVYKA A67E ; [.0000.0000.0000] # CYRILLIC KAVYKA 0485 ; [.0000.0021.0000][.0000.00A1.0002][.0000.0021.0000] # COMBINING CYRILLIC DASIA PNEUMATA 0486 ; [.0000.0021.0000][.0000.00A2.0002][.0000.0021.0000] # COMBINING CYRILLIC PSILI PNEUMATA 0301 ; [.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # COMBINING ACUTE ACCENT -00E1 ; [.1CAD.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER A WITH ACUTE -00C1 ; [.1CAD.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER A WITH ACUTE -00E9 ; [.1D10.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER E WITH ACUTE -00C9 ; [.1D10.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER E WITH ACUTE -00ED ; [.1D98.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER I WITH ACUTE -00CD ; [.1D98.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER I WITH ACUTE -00F3 ; [.1E43.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER O WITH ACUTE -00D3 ; [.1E43.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER O WITH ACUTE -00FA ; [.1F1B.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER U WITH ACUTE -00DA ; [.1F1B.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER U WITH ACUTE -00FD ; [.1F71.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER Y WITH ACUTE -00DD ; [.1F71.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER Y WITH ACUTE +00E1 ; [.1FA2.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER A WITH ACUTE +00C1 ; [.1FA2.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER A WITH ACUTE +00E9 ; [.2007.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER E WITH ACUTE +00C9 ; [.2007.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER E WITH ACUTE +00ED ; [.2090.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER I WITH ACUTE +00CD ; [.2090.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER I WITH ACUTE +00F3 ; [.213C.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER O WITH ACUTE +00D3 ; [.213C.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER O WITH ACUTE +00FA ; [.2217.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER U WITH ACUTE +00DA ; [.2217.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER U WITH ACUTE +00FD ; [.2270.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER Y WITH ACUTE +00DD ; [.2270.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER Y WITH ACUTE 0300 ; [.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # COMBINING GRAVE ACCENT -00E0 ; [.1CAD.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER A WITH GRAVE -00C0 ; [.1CAD.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER A WITH GRAVE -00E8 ; [.1D10.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER E WITH GRAVE -00C8 ; [.1D10.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER E WITH GRAVE -00EC ; [.1D98.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER I WITH GRAVE -00CC ; [.1D98.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER I WITH GRAVE -00F2 ; [.1E43.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER O WITH GRAVE -00D2 ; [.1E43.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER O WITH GRAVE -00F9 ; [.1F1B.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER U WITH GRAVE -00D9 ; [.1F1B.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER U WITH GRAVE -1EF3 ; [.1F71.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER Y WITH GRAVE -1EF2 ; [.1F71.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER Y WITH GRAVE +00E0 ; [.1FA2.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER A WITH GRAVE +00C0 ; [.1FA2.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER A WITH GRAVE +00E8 ; [.2007.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER E WITH GRAVE +00C8 ; [.2007.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER E WITH GRAVE +00EC ; [.2090.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER I WITH GRAVE +00CC ; [.2090.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER I WITH GRAVE +00F2 ; [.213C.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER O WITH GRAVE +00D2 ; [.213C.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER O WITH GRAVE +00F9 ; [.2217.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER U WITH GRAVE +00D9 ; [.2217.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER U WITH GRAVE +1EF3 ; [.2270.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER Y WITH GRAVE +1EF2 ; [.2270.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER Y WITH GRAVE 0311 ; [.0000.0021.0000][.0000.00A5.0002][.0000.0021.0000] # COMBINING INVERTED BREVE 0483 ; [.0000.0021.0000][.0000.00A6.0002][.0000.0021.0000] # COMBINING CYRILLIC TITLO 0306 ; [.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # COMBINING BREVE 0308 ; [.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # COMBINING DIAERESIS -00E4 ; [.1CAD.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1CAD.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER A WITH DIAERESIS -00EB ; [.1D10.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER E WITH DIAERESIS -00CB ; [.1D10.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER E WITH DIAERESIS -00EF ; [.1D98.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER I WITH DIAERESIS -00CF ; [.1D98.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER I WITH DIAERESIS -00F6 ; [.1E43.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1E43.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER O WITH DIAERESIS -00FC ; [.1F1B.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F1B.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER U WITH DIAERESIS -00FF ; [.1F71.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER Y WITH DIAERESIS -0178 ; [.1F71.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER Y WITH DIAERESIS +00E4 ; [.1FA2.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.1FA2.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER A WITH DIAERESIS +00EB ; [.2007.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER E WITH DIAERESIS +00CB ; [.2007.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER E WITH DIAERESIS +00EF ; [.2090.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER I WITH DIAERESIS +00CF ; [.2090.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER I WITH DIAERESIS +00F6 ; [.213C.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.213C.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER O WITH DIAERESIS +00FC ; [.2217.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2217.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER U WITH DIAERESIS +00FF ; [.2270.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER Y WITH DIAERESIS +0178 ; [.2270.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER Y WITH DIAERESIS 030F ; [.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # COMBINING DOUBLE GRAVE ACCENT 2DF6 ; [.0000.0021.0000][.0000.00A9.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER A 2DE0 ; [.0000.0021.0000][.0000.00AA.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER BE @@ -96,79 +96,79 @@ 2DF4 ; [.0000.0021.0000][.0000.00CE.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER FITA 0332 ; [.0000.0021.0000][.0000.00CF.0002][.0000.0021.0000] # COMBINING LOW LINE 2DF5 ; [.0000.0021.0000][.0000.00BC.0002][.0000.0021.0000][.0000.0021.0000][.0000.00BD.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER ES-TE -1C81 ; [.20B0.0020.0002] # CYRILLIC SMALL LETTER LONG-LEGGED DE -0454 ; [.20C0.0020.001C] # CYRILLIC SMALL LETTER UKRAINIAN IE -0404 ; [.20C0.0020.001D] # CYRILLIC CAPITAL LETTER UKRAINIAN IE -0437 ; [.20DB.0020.0002] # CYRILLIC SMALL LETTER ZE -0417 ; [.20DB.0020.0008] # CYRILLIC CAPITAL LETTER ZE -A641 ; [.20DB.0020.0002] # CYRILLIC SMALL LETTER ZEMLYA -A640 ; [.20DB.0020.0008] # CYRILLIC CAPITAL LETTER ZEMLYA -0456 ; [.20E7.0020.0002] # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -0406 ; [.20E7.0020.0008] # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I -0457 ; [.20E7.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER YI -0407 ; [.20E7.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER YI -050B ; [.2149.0020.0002] # CYRILLIC SMALL LETTER KOMI NJE -050A ; [.2149.0020.0008] # CYRILLIC CAPITAL LETTER KOMI NJE -047B ; [.214A.0020.0002] # CYRILLIC SMALL LETTER ROUND OMEGA -047A ; [.214A.0020.0008] # CYRILLIC CAPITAL LETTER ROUND OMEGA -043E ; [.214A.0020.0020][.0000.0000.001C] # CYRILLIC SMALL LETTER O -1C82 ; [.214A.0020.0020][.0000.0000.001C] # CYRILLIC SMALL LETTER NARROW O -041E ; [.214A.0020.0020][.0000.0000.001D] # CYRILLIC CAPITAL LETTER O -04E7 ; [.214A.0020.0020][.0000.0000.001C][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER O WITH DIAERESIS -04E6 ; [.214A.0020.0020][.0000.0000.001D][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS -0461 ; [.214A.0020.0021][.0000.0000.001C] # CYRILLIC SMALL LETTER OMEGA -0460 ; [.214A.0020.0021][.0000.0000.001D] # CYRILLIC CAPITAL LETTER OMEGA -A64D ; [.214A.0020.0022][.0000.0000.001C] # CYRILLIC SMALL LETTER BROAD OMEGA -A64C ; [.214A.0020.0022][.0000.0000.001D] # CYRILLIC CAPITAL LETTER BROAD OMEGA -047C ; [.214A.0020.0022][.0000.0000.001D][.0000.0021.0000][.0000.00A2.0002][.0000.0021.0000][.0000.0021.0000][.0000.00A5.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO -047D ; [.214A.0020.0022][.0000.0000.001C][.0000.0021.0000][.0000.00A2.0002][.0000.0021.0000][.0000.0021.0000][.0000.00A5.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER OMEGA WITH TITLO -047E ; [.214A.0020.0021][.0000.0000.001D][.2174.0020.0002] # CYRILLIC CAPITAL LETTER OT -047F ; [.214A.0020.0021][.0000.0000.001C][.2174.0020.0002] # CYRILLIC SMALL LETTER OT -0479 ; [.2180.0020.0002] # CYRILLIC SMALL LETTER UK -0478 ; [.2180.0020.0008] # CYRILLIC CAPITAL LETTER UK -043E 0443 ; [.2180.0020.0002] # -1C82 0443 ; [.2180.0020.0002] # -041E 0443 ; [.2180.0020.0008] # -041E 0423 ; [.2180.0020.0008] # -A64B ; [.2180.0020.0020][.0000.0000.001C] # CYRILLIC SMALL LETTER MONOGRAPH UK -A64A ; [.2180.0020.0020][.0000.0000.001D] # CYRILLIC CAPITAL LETTER MONOGRAPH UK -0443 ; [.2180.0020.0021][.0000.0000.001C] # CYRILLIC SMALL LETTER U -0423 ; [.2180.0020.0021][.0000.0000.001D] # CYRILLIC CAPITAL LETTER U -045E ; [.2180.0020.0021][.0000.0000.001C][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER SHORT U -040E ; [.2180.0020.0021][.0000.0000.001D][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER SHORT U -04F1 ; [.2180.0020.0021][.0000.0000.001C][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER U WITH DIAERESIS -04F0 ; [.2180.0020.0021][.0000.0000.001D][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS -04F3 ; [.2180.0020.0021][.0000.0000.001C][.0000.002C.0002] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE -04F2 ; [.2180.0020.0021][.0000.0000.001D][.0000.002C.0002] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE -04EF ; [.2180.0020.0021][.0000.0000.001C][.0000.0032.0002] # CYRILLIC SMALL LETTER U WITH MACRON -04EE ; [.2180.0020.0021][.0000.0000.001D][.0000.0032.0002] # CYRILLIC CAPITAL LETTER U WITH MACRON -0463 ; [.220C.0020.0002] # CYRILLIC SMALL LETTER YAT -0462 ; [.220C.0020.0008] # CYRILLIC CAPITAL LETTER YAT -046B ; [.2210.0020.0002] # CYRILLIC SMALL LETTER BIG YUS -046A ; [.2210.0020.0008] # CYRILLIC CAPITAL LETTER BIG YUS -A657 ; [.2216.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED A -A656 ; [.2216.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED A -0467 ; [.2216.0020.001C] # CYRILLIC SMALL LETTER LITTLE YUS -0466 ; [.2216.0020.001D] # CYRILLIC CAPITAL LETTER LITTLE YUS -04D1 ; [.2088.0020.0002][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER A WITH BREVE -04D0 ; [.2088.0020.0008][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER A WITH BREVE -04D3 ; [.2088.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER A WITH DIAERESIS -04D2 ; [.2088.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS -0450 ; [.20C0.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER IE WITH GRAVE -0400 ; [.20C0.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER IE WITH GRAVE -04D7 ; [.20C0.0020.0002][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER IE WITH BREVE -04D6 ; [.20C0.0020.0008][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER IE WITH BREVE -0451 ; [.20C0.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER IO -0401 ; [.20C0.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER IO -045D ; [.20E6.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER I WITH GRAVE -040D ; [.20E6.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER I WITH GRAVE -04E5 ; [.20E6.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER I WITH DIAERESIS -04E4 ; [.20E6.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS -04ED ; [.220B.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER E WITH DIAERESIS -04EC ; [.220B.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS -0477 ; [.223D.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT -0476 ; [.223D.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT -0439 ; [.20E6.0020.0002][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER SHORT I -0419 ; [.20E6.0020.0008][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER SHORT I +1C81 ; [.23AF.0020.0002] # CYRILLIC SMALL LETTER LONG-LEGGED DE +0454 ; [.23BF.0020.001C] # CYRILLIC SMALL LETTER UKRAINIAN IE +0404 ; [.23BF.0020.001D] # CYRILLIC CAPITAL LETTER UKRAINIAN IE +0437 ; [.23DA.0020.0002] # CYRILLIC SMALL LETTER ZE +0417 ; [.23DA.0020.0008] # CYRILLIC CAPITAL LETTER ZE +A641 ; [.23DA.0020.0002] # CYRILLIC SMALL LETTER ZEMLYA +A640 ; [.23DA.0020.0008] # CYRILLIC CAPITAL LETTER ZEMLYA +0456 ; [.23E6.0020.0002] # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I +0406 ; [.23E6.0020.0008] # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I +0457 ; [.23E6.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER YI +0407 ; [.23E6.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER YI +050B ; [.2448.0020.0002] # CYRILLIC SMALL LETTER KOMI NJE +050A ; [.2448.0020.0008] # CYRILLIC CAPITAL LETTER KOMI NJE +047B ; [.2449.0020.0002] # CYRILLIC SMALL LETTER ROUND OMEGA +047A ; [.2449.0020.0008] # CYRILLIC CAPITAL LETTER ROUND OMEGA +043E ; [.2449.0020.0020][.0000.0000.001C] # CYRILLIC SMALL LETTER O +1C82 ; [.2449.0020.0020][.0000.0000.001C] # CYRILLIC SMALL LETTER NARROW O +041E ; [.2449.0020.0020][.0000.0000.001D] # CYRILLIC CAPITAL LETTER O +04E7 ; [.2449.0020.0020][.0000.0000.001C][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER O WITH DIAERESIS +04E6 ; [.2449.0020.0020][.0000.0000.001D][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS +0461 ; [.2449.0020.0021][.0000.0000.001C] # CYRILLIC SMALL LETTER OMEGA +0460 ; [.2449.0020.0021][.0000.0000.001D] # CYRILLIC CAPITAL LETTER OMEGA +A64D ; [.2449.0020.0022][.0000.0000.001C] # CYRILLIC SMALL LETTER BROAD OMEGA +A64C ; [.2449.0020.0022][.0000.0000.001D] # CYRILLIC CAPITAL LETTER BROAD OMEGA +047C ; [.2449.0020.0022][.0000.0000.001D][.0000.0021.0000][.0000.00A2.0002][.0000.0021.0000][.0000.0021.0000][.0000.00A5.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO +047D ; [.2449.0020.0022][.0000.0000.001C][.0000.0021.0000][.0000.00A2.0002][.0000.0021.0000][.0000.0021.0000][.0000.00A5.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER OMEGA WITH TITLO +047E ; [.2449.0020.0021][.0000.0000.001D][.2473.0020.0002] # CYRILLIC CAPITAL LETTER OT +047F ; [.2449.0020.0021][.0000.0000.001C][.2473.0020.0002] # CYRILLIC SMALL LETTER OT +0479 ; [.247F.0020.0002] # CYRILLIC SMALL LETTER UK +0478 ; [.247F.0020.0008] # CYRILLIC CAPITAL LETTER UK +043E 0443 ; [.247F.0020.0002] # +1C82 0443 ; [.247F.0020.0002] # +041E 0443 ; [.247F.0020.0008] # +041E 0423 ; [.247F.0020.0008] # +A64B ; [.247F.0020.0020][.0000.0000.001C] # CYRILLIC SMALL LETTER MONOGRAPH UK +A64A ; [.247F.0020.0020][.0000.0000.001D] # CYRILLIC CAPITAL LETTER MONOGRAPH UK +0443 ; [.247F.0020.0021][.0000.0000.001C] # CYRILLIC SMALL LETTER U +0423 ; [.247F.0020.0021][.0000.0000.001D] # CYRILLIC CAPITAL LETTER U +045E ; [.247F.0020.0021][.0000.0000.001C][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER SHORT U +040E ; [.247F.0020.0021][.0000.0000.001D][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER SHORT U +04F1 ; [.247F.0020.0021][.0000.0000.001C][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER U WITH DIAERESIS +04F0 ; [.247F.0020.0021][.0000.0000.001D][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS +04F3 ; [.247F.0020.0021][.0000.0000.001C][.0000.002C.0002] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE +04F2 ; [.247F.0020.0021][.0000.0000.001D][.0000.002C.0002] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE +04EF ; [.247F.0020.0021][.0000.0000.001C][.0000.0032.0002] # CYRILLIC SMALL LETTER U WITH MACRON +04EE ; [.247F.0020.0021][.0000.0000.001D][.0000.0032.0002] # CYRILLIC CAPITAL LETTER U WITH MACRON +0463 ; [.250B.0020.0002] # CYRILLIC SMALL LETTER YAT +0462 ; [.250B.0020.0008] # CYRILLIC CAPITAL LETTER YAT +046B ; [.250F.0020.0002] # CYRILLIC SMALL LETTER BIG YUS +046A ; [.250F.0020.0008] # CYRILLIC CAPITAL LETTER BIG YUS +A657 ; [.2515.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED A +A656 ; [.2515.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED A +0467 ; [.2515.0020.001C] # CYRILLIC SMALL LETTER LITTLE YUS +0466 ; [.2515.0020.001D] # CYRILLIC CAPITAL LETTER LITTLE YUS +04D1 ; [.2387.0020.0002][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER A WITH BREVE +04D0 ; [.2387.0020.0008][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER A WITH BREVE +04D3 ; [.2387.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER A WITH DIAERESIS +04D2 ; [.2387.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS +0450 ; [.23BF.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER IE WITH GRAVE +0400 ; [.23BF.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER IE WITH GRAVE +04D7 ; [.23BF.0020.0002][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER IE WITH BREVE +04D6 ; [.23BF.0020.0008][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER IE WITH BREVE +0451 ; [.23BF.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER IO +0401 ; [.23BF.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER IO +045D ; [.23E5.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER I WITH GRAVE +040D ; [.23E5.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER I WITH GRAVE +04E5 ; [.23E5.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER I WITH DIAERESIS +04E4 ; [.23E5.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS +04ED ; [.250A.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER E WITH DIAERESIS +04EC ; [.250A.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS +0477 ; [.253C.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT +0476 ; [.253C.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT +0439 ; [.23E5.0020.0002][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER SHORT I +0419 ; [.23E5.0020.0008][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER SHORT I ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/cy.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/cy.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/cy.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/cy.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,29 +1,29 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0063 0068 ; [.1CE1.0020.0002] # -0043 0068 ; [.1CE1.0020.0007] # -0043 0048 ; [.1CE1.0020.0008] # -0064 0064 ; [.1CF6.0020.0002] # -0044 0064 ; [.1CF6.0020.0007] # -0044 0044 ; [.1CF6.0020.0008] # -0066 0066 ; [.1D4C.0020.0002] # -0046 0066 ; [.1D4C.0020.0007] # -0046 0046 ; [.1D4C.0020.0008] # -006E 0067 ; [.1D5B.0020.0002] # -004E 0067 ; [.1D5B.0020.0007] # -004E 0047 ; [.1D5B.0020.0008] # -006C 006C ; [.1DDE.0020.0002] # -004C 006C ; [.1DDE.0020.0007] # -004C 004C ; [.1DDE.0020.0008] # -0070 0068 ; [.1E73.0020.0002] # -0050 0068 ; [.1E73.0020.0007] # -0050 0048 ; [.1E73.0020.0008] # -0072 0068 ; [.1E9A.0020.0002] # -0052 0068 ; [.1E9A.0020.0007] # -0052 0048 ; [.1E9A.0020.0008] # -0074 0068 ; [.1EFC.0020.0002] # -0054 0068 ; [.1EFC.0020.0007] # -0054 0048 ; [.1EFC.0020.0008] # + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0063 0068 ; [.1FD7.0020.0002] # +0043 0068 ; [.1FD7.0020.0007] # +0043 0048 ; [.1FD7.0020.0008] # +0064 0064 ; [.1FEC.0020.0002] # +0044 0064 ; [.1FEC.0020.0007] # +0044 0044 ; [.1FEC.0020.0008] # +0066 0066 ; [.2043.0020.0002] # +0046 0066 ; [.2043.0020.0007] # +0046 0046 ; [.2043.0020.0008] # +006E 0067 ; [.2052.0020.0002] # +004E 0067 ; [.2052.0020.0007] # +004E 0047 ; [.2052.0020.0008] # +006C 006C ; [.20D7.0020.0002] # +004C 006C ; [.20D7.0020.0007] # +004C 004C ; [.20D7.0020.0008] # +0070 0068 ; [.216C.0020.0002] # +0050 0068 ; [.216C.0020.0007] # +0050 0048 ; [.216C.0020.0008] # +0072 0068 ; [.2194.0020.0002] # +0052 0068 ; [.2194.0020.0007] # +0052 0048 ; [.2194.0020.0008] # +0074 0068 ; [.21F8.0020.0002] # +0054 0068 ; [.21F8.0020.0007] # +0054 0048 ; [.21F8.0020.0008] # ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/da.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/da.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/da.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/da.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,78 +1,78 @@ +{ - locale_version => 1.27, + locale_version => 1.29, upper_before_lower => 1, - entry => <<'ENTRY', # for DUCET v10.0.0 -0111 ; [.1CF5.0021.0002] # LATIN SMALL LETTER D WITH STROKE -0064 0335 ; [.1CF5.0021.0002] # LATIN SMALL LETTER D WITH STROKE -0110 ; [.1CF5.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE -0044 0335 ; [.1CF5.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE -00F0 ; [.1CF5.0022.0002] # LATIN SMALL LETTER ETH -1DD9 ; [.1CF5.0022.0002] # COMBINING LATIN SMALL LETTER ETH -00D0 ; [.1CF5.0022.0008] # LATIN CAPITAL LETTER ETH -00FE ; [.1EFB.0020.0003][.1D7E.0020.0003] # LATIN SMALL LETTER THORN -00DE ; [.1EFB.0020.0009][.1D7E.0020.0009] # LATIN CAPITAL LETTER THORN -00FC ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1F71.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F71.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1F71.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F71.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1F71.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F71.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1F71.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F71.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0171 ; [.1F71.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0075 030B ; [.1F71.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0170 ; [.1F71.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -0055 030B ; [.1F71.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -00E6 ; [.1FFC.0020.0002] # LATIN SMALL LETTER AE -1DD4 ; [.1FFC.0020.0002] # COMBINING LATIN SMALL LETTER AE -00C6 ; [.1FFC.0020.0008] # LATIN CAPITAL LETTER AE -1D2D ; [.1FFC.0020.0014] # MODIFIER LETTER CAPITAL AE -01FD ; [.1FFC.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE -01FC ; [.1FFC.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE -01E3 ; [.1FFC.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON -01E2 ; [.1FFC.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON -00E4 ; [.1FFC.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1FFC.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1FFC.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1FFC.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1FFC.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1FFC.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -0119 ; [.1FFC.0022.0002] # LATIN SMALL LETTER E WITH OGONEK -0065 0328 ; [.1FFC.0022.0002] # LATIN SMALL LETTER E WITH OGONEK -0118 ; [.1FFC.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK -0045 0328 ; [.1FFC.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK -00F8 ; [.1FFD.0020.0002] # LATIN SMALL LETTER O WITH STROKE -006F 0338 ; [.1FFD.0020.0002] # LATIN SMALL LETTER O WITH STROKE -00D8 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE -004F 0338 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE -01FF ; [.1FFD.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE -01FE ; [.1FFD.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE -00F6 ; [.1FFD.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1FFD.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1FFD.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1FFD.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -0151 ; [.1FFD.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -006F 030B ; [.1FFD.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -0150 ; [.1FFD.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -004F 030B ; [.1FFD.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -0153 ; [.1FFD.0023.0002] # LATIN SMALL LIGATURE OE -0152 ; [.1FFD.0023.0008] # LATIN CAPITAL LIGATURE OE -00E5 ; [.1FFE.0020.0002][.0000.0000.0001] # LATIN SMALL LETTER A WITH RING ABOVE -0061 030A ; [.1FFE.0020.0002][.0000.0000.0001] # LATIN SMALL LETTER A WITH RING ABOVE -00C5 ; [.1FFE.0020.0008][.0000.0000.0001] # LATIN CAPITAL LETTER A WITH RING ABOVE -0041 030A ; [.1FFE.0020.0008][.0000.0000.0001] # LATIN CAPITAL LETTER A WITH RING ABOVE -212B ; [.1FFE.0020.0008][.0000.0000.0001] # ANGSTROM SIGN -01FB ; [.1FFE.0020.0002][.0000.0000.0001][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE -01FA ; [.1FFE.0020.0008][.0000.0000.0001][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE -0061 0061 ; [.1FFE.0020.0002][.0000.0000.0007] # -0041 0061 ; [.1FFE.0020.0007][.0000.0000.0002] # -0061 0041 ; [.1FFE.0020.0007][.0000.0000.0008] # -0041 0041 ; [.1FFE.0020.0008][.0000.0000.0007] # + entry => <<'ENTRY', # for DUCET v13.0.0 +0111 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE +0064 0335 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE +0110 ; [.1FEB.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE +0044 0335 ; [.1FEB.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE +00F0 ; [.1FEB.0022.0002] # LATIN SMALL LETTER ETH +1DD9 ; [.1FEB.0022.0002] # COMBINING LATIN SMALL LETTER ETH +00D0 ; [.1FEB.0022.0008] # LATIN CAPITAL LETTER ETH +00FE ; [.21F7.0020.0003][.2075.0020.0003] # LATIN SMALL LETTER THORN +00DE ; [.21F7.0020.0009][.2075.0020.0009] # LATIN CAPITAL LETTER THORN +00FC ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.2270.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2270.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.2270.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2270.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.2270.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2270.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.2270.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2270.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0171 ; [.2270.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0075 030B ; [.2270.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0170 ; [.2270.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0055 030B ; [.2270.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +00E6 ; [.22FB.0020.0002] # LATIN SMALL LETTER AE +1DD4 ; [.22FB.0020.0002] # COMBINING LATIN SMALL LETTER AE +00C6 ; [.22FB.0020.0008] # LATIN CAPITAL LETTER AE +1D2D ; [.22FB.0020.0014] # MODIFIER LETTER CAPITAL AE +01FD ; [.22FB.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE +01FC ; [.22FB.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE +01E3 ; [.22FB.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON +01E2 ; [.22FB.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON +00E4 ; [.22FB.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.22FB.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.22FB.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.22FB.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.22FB.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.22FB.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +0119 ; [.22FB.0022.0002] # LATIN SMALL LETTER E WITH OGONEK +0065 0328 ; [.22FB.0022.0002] # LATIN SMALL LETTER E WITH OGONEK +0118 ; [.22FB.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK +0045 0328 ; [.22FB.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK +00F8 ; [.22FC.0020.0002] # LATIN SMALL LETTER O WITH STROKE +006F 0338 ; [.22FC.0020.0002] # LATIN SMALL LETTER O WITH STROKE +00D8 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE +004F 0338 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE +01FF ; [.22FC.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE +01FE ; [.22FC.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +00F6 ; [.22FC.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.22FC.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.22FC.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.22FC.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +0151 ; [.22FC.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +006F 030B ; [.22FC.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +0150 ; [.22FC.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +004F 030B ; [.22FC.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +0153 ; [.22FC.0023.0002] # LATIN SMALL LIGATURE OE +0152 ; [.22FC.0023.0008] # LATIN CAPITAL LIGATURE OE +00E5 ; [.22FD.0020.0002][.0000.0000.0001] # LATIN SMALL LETTER A WITH RING ABOVE +0061 030A ; [.22FD.0020.0002][.0000.0000.0001] # LATIN SMALL LETTER A WITH RING ABOVE +00C5 ; [.22FD.0020.0008][.0000.0000.0001] # LATIN CAPITAL LETTER A WITH RING ABOVE +0041 030A ; [.22FD.0020.0008][.0000.0000.0001] # LATIN CAPITAL LETTER A WITH RING ABOVE +212B ; [.22FD.0020.0008][.0000.0000.0001] # ANGSTROM SIGN +01FB ; [.22FD.0020.0002][.0000.0000.0001][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +01FA ; [.22FD.0020.0008][.0000.0000.0001][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +0061 0061 ; [.22FD.0020.0002][.0000.0000.0007] # +0041 0061 ; [.22FD.0020.0007][.0000.0000.0002] # +0061 0041 ; [.22FD.0020.0007][.0000.0000.0008] # +0041 0041 ; [.22FD.0020.0008][.0000.0000.0007] # ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/de_at_ph.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/de_at_ph.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/de_at_ph.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/de_at_ph.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,31 +1,31 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -00E4 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1CAE.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1CAE.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -00F6 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1E44.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1E44.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -00FC ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1F1C.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F1C.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1F1C.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F1C.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1F1C.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F1C.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1F1C.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F1C.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -00DF ; [.1ED7.0020.0002][.1ED8.0020.0002] # LATIN SMALL LETTER SHARP S -1E9E ; [.1ED7.0020.0008][.1ED8.0020.0008] # LATIN CAPITAL LETTER SHARP S + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +00E4 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.1FA3.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.1FA3.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +00F6 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.213D.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.213D.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +00FC ; [.2218.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2218.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2218.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2218.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.2218.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2218.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.2218.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2218.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.2218.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2218.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.2218.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2218.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +00DF ; [.21D2.0020.0002][.21D3.0020.0002] # LATIN SMALL LETTER SHARP S +1E9E ; [.21D2.0020.0008][.21D3.0020.0008] # LATIN CAPITAL LETTER SHARP S ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/de_phone.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/de_phone.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/de_phone.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/de_phone.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,29 +1,29 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -00E4 ; [.1CAD.0021.0002][.1D10.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1CAD.0021.0002][.1D10.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1CAD.0021.0008][.1D10.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1CAD.0021.0008][.1D10.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1CAD.0021.0002][.1D10.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1CAD.0021.0008][.1D10.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -00F6 ; [.1E43.0021.0002][.1D10.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1E43.0021.0002][.1D10.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1E43.0021.0008][.1D10.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1E43.0021.0008][.1D10.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1E43.0021.0002][.1D10.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1E43.0021.0008][.1D10.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -00FC ; [.1F1B.0021.0002][.1D10.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F1B.0021.0002][.1D10.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F1B.0021.0008][.1D10.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F1B.0021.0008][.1D10.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1F1B.0021.0002][.1D10.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F1B.0021.0008][.1D10.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1F1B.0021.0002][.1D10.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F1B.0021.0008][.1D10.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1F1B.0021.0002][.1D10.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F1B.0021.0008][.1D10.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1F1B.0021.0002][.1D10.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F1B.0021.0008][.1D10.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +00E4 ; [.1FA2.0021.0002][.2007.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.1FA2.0021.0002][.2007.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.1FA2.0021.0008][.2007.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.1FA2.0021.0008][.2007.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.1FA2.0021.0002][.2007.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.1FA2.0021.0008][.2007.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +00F6 ; [.213C.0021.0002][.2007.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.213C.0021.0002][.2007.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.213C.0021.0008][.2007.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.213C.0021.0008][.2007.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.213C.0021.0002][.2007.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.213C.0021.0008][.2007.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +00FC ; [.2217.0021.0002][.2007.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2217.0021.0002][.2007.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2217.0021.0008][.2007.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2217.0021.0008][.2007.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.2217.0021.0002][.2007.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2217.0021.0008][.2007.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.2217.0021.0002][.2007.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2217.0021.0008][.2007.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.2217.0021.0002][.2007.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2217.0021.0008][.2007.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.2217.0021.0002][.2007.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2217.0021.0008][.2007.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/dsb.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/dsb.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/dsb.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/dsb.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,59 +1,59 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -010D ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON -0063 030C ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON -010C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0043 030C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0107 ; [.1CE2.0020.0002] # LATIN SMALL LETTER C WITH ACUTE -0063 0301 ; [.1CE2.0020.0002] # LATIN SMALL LETTER C WITH ACUTE -0063 0341 ; [.1CE2.0020.0002] # LATIN SMALL LETTER C WITH ACUTE -0106 ; [.1CE2.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE -0043 0301 ; [.1CE2.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE -0043 0341 ; [.1CE2.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE -011B ; [.1D11.0020.0002] # LATIN SMALL LETTER E WITH CARON -0065 030C ; [.1D11.0020.0002] # LATIN SMALL LETTER E WITH CARON -011A ; [.1D11.0020.0008] # LATIN CAPITAL LETTER E WITH CARON -0045 030C ; [.1D11.0020.0008] # LATIN CAPITAL LETTER E WITH CARON -0063 0068 ; [.1D7F.0020.0002] # -0063 0048 ; [.1D7F.0020.0007][.0000.0000.0002] # -0043 0068 ; [.1D7F.0020.0007][.0000.0000.0008] # -0043 0048 ; [.1D7F.0020.0008] # -0142 ; [.1DDC.0020.0002] # LATIN SMALL LETTER L WITH STROKE -006C 0335 ; [.1DDC.0020.0002] # LATIN SMALL LETTER L WITH STROKE -0141 ; [.1DDC.0020.0008] # LATIN CAPITAL LETTER L WITH STROKE -004C 0335 ; [.1DDC.0020.0008] # LATIN CAPITAL LETTER L WITH STROKE -0144 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0301 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0341 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH ACUTE -0143 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0301 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0341 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE -0155 ; [.1E9A.0020.0002] # LATIN SMALL LETTER R WITH ACUTE -0072 0301 ; [.1E9A.0020.0002] # LATIN SMALL LETTER R WITH ACUTE -0072 0341 ; [.1E9A.0020.0002] # LATIN SMALL LETTER R WITH ACUTE -0154 ; [.1E9A.0020.0008] # LATIN CAPITAL LETTER R WITH ACUTE -0052 0301 ; [.1E9A.0020.0008] # LATIN CAPITAL LETTER R WITH ACUTE -0052 0341 ; [.1E9A.0020.0008] # LATIN CAPITAL LETTER R WITH ACUTE -0161 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0073 030C ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0160 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -0053 030C ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -015B ; [.1ED9.0020.0002] # LATIN SMALL LETTER S WITH ACUTE -0073 0301 ; [.1ED9.0020.0002] # LATIN SMALL LETTER S WITH ACUTE -0073 0341 ; [.1ED9.0020.0002] # LATIN SMALL LETTER S WITH ACUTE -015A ; [.1ED9.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE -0053 0301 ; [.1ED9.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE -0053 0341 ; [.1ED9.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE -017E ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON -007A 030C ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON -017D ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON -005A 030C ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON -017A ; [.1F89.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE -007A 0301 ; [.1F89.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE -007A 0341 ; [.1F89.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE -0179 ; [.1F89.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE -005A 0301 ; [.1F89.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE -005A 0341 ; [.1F89.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +010D ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON +0063 030C ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON +010C ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0043 030C ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0107 ; [.1FD8.0020.0002] # LATIN SMALL LETTER C WITH ACUTE +0063 0301 ; [.1FD8.0020.0002] # LATIN SMALL LETTER C WITH ACUTE +0063 0341 ; [.1FD8.0020.0002] # LATIN SMALL LETTER C WITH ACUTE +0106 ; [.1FD8.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE +0043 0301 ; [.1FD8.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE +0043 0341 ; [.1FD8.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE +011B ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH CARON +0065 030C ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH CARON +011A ; [.2008.0020.0008] # LATIN CAPITAL LETTER E WITH CARON +0045 030C ; [.2008.0020.0008] # LATIN CAPITAL LETTER E WITH CARON +0063 0068 ; [.2076.0020.0002] # +0063 0048 ; [.2076.0020.0007][.0000.0000.0002] # +0043 0068 ; [.2076.0020.0007][.0000.0000.0008] # +0043 0048 ; [.2076.0020.0008] # +0142 ; [.20D5.0020.0002] # LATIN SMALL LETTER L WITH STROKE +006C 0335 ; [.20D5.0020.0002] # LATIN SMALL LETTER L WITH STROKE +0141 ; [.20D5.0020.0008] # LATIN CAPITAL LETTER L WITH STROKE +004C 0335 ; [.20D5.0020.0008] # LATIN CAPITAL LETTER L WITH STROKE +0144 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0301 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0341 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH ACUTE +0143 ; [.2119.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0301 ; [.2119.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0341 ; [.2119.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE +0155 ; [.2194.0020.0002] # LATIN SMALL LETTER R WITH ACUTE +0072 0301 ; [.2194.0020.0002] # LATIN SMALL LETTER R WITH ACUTE +0072 0341 ; [.2194.0020.0002] # LATIN SMALL LETTER R WITH ACUTE +0154 ; [.2194.0020.0008] # LATIN CAPITAL LETTER R WITH ACUTE +0052 0301 ; [.2194.0020.0008] # LATIN CAPITAL LETTER R WITH ACUTE +0052 0341 ; [.2194.0020.0008] # LATIN CAPITAL LETTER R WITH ACUTE +0161 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0073 030C ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0160 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +0053 030C ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +015B ; [.21D4.0020.0002] # LATIN SMALL LETTER S WITH ACUTE +0073 0301 ; [.21D4.0020.0002] # LATIN SMALL LETTER S WITH ACUTE +0073 0341 ; [.21D4.0020.0002] # LATIN SMALL LETTER S WITH ACUTE +015A ; [.21D4.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE +0053 0301 ; [.21D4.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE +0053 0341 ; [.21D4.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE +017E ; [.2287.0020.0002] # LATIN SMALL LETTER Z WITH CARON +007A 030C ; [.2287.0020.0002] # LATIN SMALL LETTER Z WITH CARON +017D ; [.2287.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON +005A 030C ; [.2287.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON +017A ; [.2288.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE +007A 0301 ; [.2288.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE +007A 0341 ; [.2288.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE +0179 ; [.2288.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE +005A 0301 ; [.2288.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE +005A 0341 ; [.2288.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ee.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ee.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ee.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ee.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,36 +1,36 @@ +{ - locale_version => 1.27, + locale_version => 1.29, # d-tail, open-e, f-hook, gamma, eng, open-o, v-hook don't require tailoring - entry => <<'ENTRY', # for DUCET v10.0.0 + entry => <<'ENTRY', # for DUCET v13.0.0 0302 ; [.0000.0029.0002] # COMBINING CIRCUMFLEX ACCENT -00E2 ; [.1CAD.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX -00C2 ; [.1CAD.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX -00EA ; [.1D10.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -00CA ; [.1D10.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -00EE ; [.1D98.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER I WITH CIRCUMFLEX -00CE ; [.1D98.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX -00F4 ; [.1E43.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX -00D4 ; [.1E43.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -00FB ; [.1F1B.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER U WITH CIRCUMFLEX -00DB ; [.1F1B.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER U WITH CIRCUMFLEX -0177 ; [.1F71.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER Y WITH CIRCUMFLEX -0176 ; [.1F71.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX -0064 007A ; [.1CF6.0020.0002] # -0044 007A ; [.1CF6.0020.0007] # -0044 005A ; [.1CF6.0020.0008] # -0067 0062 ; [.1D5B.0020.0002] # -0047 0062 ; [.1D5B.0020.0007] # -0047 0042 ; [.1D5B.0020.0008] # -0078 ; [.1D7F.0020.0002] # LATIN SMALL LETTER X -0058 ; [.1D7F.0020.0008] # LATIN CAPITAL LETTER X -006B 0070 ; [.1DCC.0020.0002] # -004B 0070 ; [.1DCC.0020.0007] # -004B 0050 ; [.1DCC.0020.0008] # -006E 0079 ; [.1E20.0020.0002] # -004E 0079 ; [.1E20.0020.0007] # -004E 0059 ; [.1E20.0020.0008] # -0074 0073 ; [.1EFC.0020.0002] # -0054 0073 ; [.1EFC.0020.0007] # -0054 0053 ; [.1EFC.0020.0008] # +00E2 ; [.1FA2.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX +00C2 ; [.1FA2.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +00EA ; [.2007.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +00CA ; [.2007.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +00EE ; [.2090.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER I WITH CIRCUMFLEX +00CE ; [.2090.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +00F4 ; [.213C.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX +00D4 ; [.213C.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +00FB ; [.2217.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER U WITH CIRCUMFLEX +00DB ; [.2217.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +0177 ; [.2270.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER Y WITH CIRCUMFLEX +0176 ; [.2270.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX +0064 007A ; [.1FEC.0020.0002] # +0044 007A ; [.1FEC.0020.0007] # +0044 005A ; [.1FEC.0020.0008] # +0067 0062 ; [.2052.0020.0002] # +0047 0062 ; [.2052.0020.0007] # +0047 0042 ; [.2052.0020.0008] # +0078 ; [.2076.0020.0002] # LATIN SMALL LETTER X +0058 ; [.2076.0020.0008] # LATIN CAPITAL LETTER X +006B 0070 ; [.20C5.0020.0002] # +004B 0070 ; [.20C5.0020.0007] # +004B 0050 ; [.20C5.0020.0008] # +006E 0079 ; [.2119.0020.0002] # +004E 0079 ; [.2119.0020.0007] # +004E 0059 ; [.2119.0020.0008] # +0074 0073 ; [.21F8.0020.0002] # +0054 0073 ; [.21F8.0020.0007] # +0054 0053 ; [.21F8.0020.0008] # ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/eo.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/eo.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/eo.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/eo.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,29 +1,29 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0109 ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CIRCUMFLEX -0063 0302 ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CIRCUMFLEX -0108 ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CIRCUMFLEX -0043 0302 ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CIRCUMFLEX -011D ; [.1D5B.0020.0002] # LATIN SMALL LETTER G WITH CIRCUMFLEX -0067 0302 ; [.1D5B.0020.0002] # LATIN SMALL LETTER G WITH CIRCUMFLEX -011C ; [.1D5B.0020.0008] # LATIN CAPITAL LETTER G WITH CIRCUMFLEX -0047 0302 ; [.1D5B.0020.0008] # LATIN CAPITAL LETTER G WITH CIRCUMFLEX -0125 ; [.1D7F.0020.0002] # LATIN SMALL LETTER H WITH CIRCUMFLEX -0068 0302 ; [.1D7F.0020.0002] # LATIN SMALL LETTER H WITH CIRCUMFLEX -0124 ; [.1D7F.0020.0008] # LATIN CAPITAL LETTER H WITH CIRCUMFLEX -0048 0302 ; [.1D7F.0020.0008] # LATIN CAPITAL LETTER H WITH CIRCUMFLEX -0135 ; [.1DB3.0020.0002] # LATIN SMALL LETTER J WITH CIRCUMFLEX -006A 0302 ; [.1DB3.0020.0002] # LATIN SMALL LETTER J WITH CIRCUMFLEX -0134 ; [.1DB3.0020.0008] # LATIN CAPITAL LETTER J WITH CIRCUMFLEX -004A 0302 ; [.1DB3.0020.0008] # LATIN CAPITAL LETTER J WITH CIRCUMFLEX -015D ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CIRCUMFLEX -0073 0302 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CIRCUMFLEX -015C ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CIRCUMFLEX -0053 0302 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CIRCUMFLEX -016D ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH BREVE -0075 0306 ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH BREVE -016C ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH BREVE -0055 0306 ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH BREVE + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0109 ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CIRCUMFLEX +0063 0302 ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CIRCUMFLEX +0108 ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CIRCUMFLEX +0043 0302 ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CIRCUMFLEX +011D ; [.2052.0020.0002] # LATIN SMALL LETTER G WITH CIRCUMFLEX +0067 0302 ; [.2052.0020.0002] # LATIN SMALL LETTER G WITH CIRCUMFLEX +011C ; [.2052.0020.0008] # LATIN CAPITAL LETTER G WITH CIRCUMFLEX +0047 0302 ; [.2052.0020.0008] # LATIN CAPITAL LETTER G WITH CIRCUMFLEX +0125 ; [.2076.0020.0002] # LATIN SMALL LETTER H WITH CIRCUMFLEX +0068 0302 ; [.2076.0020.0002] # LATIN SMALL LETTER H WITH CIRCUMFLEX +0124 ; [.2076.0020.0008] # LATIN CAPITAL LETTER H WITH CIRCUMFLEX +0048 0302 ; [.2076.0020.0008] # LATIN CAPITAL LETTER H WITH CIRCUMFLEX +0135 ; [.20AC.0020.0002] # LATIN SMALL LETTER J WITH CIRCUMFLEX +006A 0302 ; [.20AC.0020.0002] # LATIN SMALL LETTER J WITH CIRCUMFLEX +0134 ; [.20AC.0020.0008] # LATIN CAPITAL LETTER J WITH CIRCUMFLEX +004A 0302 ; [.20AC.0020.0008] # LATIN CAPITAL LETTER J WITH CIRCUMFLEX +015D ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CIRCUMFLEX +0073 0302 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CIRCUMFLEX +015C ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CIRCUMFLEX +0053 0302 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CIRCUMFLEX +016D ; [.2218.0020.0002] # LATIN SMALL LETTER U WITH BREVE +0075 0306 ; [.2218.0020.0002] # LATIN SMALL LETTER U WITH BREVE +016C ; [.2218.0020.0008] # LATIN CAPITAL LETTER U WITH BREVE +0055 0306 ; [.2218.0020.0008] # LATIN CAPITAL LETTER U WITH BREVE ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/es.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/es.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/es.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/es.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,9 +1,9 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -00F1 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH TILDE -006E 0303 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH TILDE -00D1 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH TILDE -004E 0303 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH TILDE + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +00F1 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH TILDE +006E 0303 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH TILDE +00D1 ; [.2119.0020.0008] # LATIN CAPITAL LETTER N WITH TILDE +004E 0303 ; [.2119.0020.0008] # LATIN CAPITAL LETTER N WITH TILDE ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/es_trad.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/es_trad.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/es_trad.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/es_trad.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,15 +1,15 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0063 0068 ; [.1CE1.0020.0002] # -0043 0068 ; [.1CE1.0020.0007] # -0043 0048 ; [.1CE1.0020.0008] # -006C 006C ; [.1DDE.0020.0002] # -004C 006C ; [.1DDE.0020.0007] # -004C 004C ; [.1DDE.0020.0008] # -00F1 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH TILDE -006E 0303 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH TILDE -00D1 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH TILDE -004E 0303 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH TILDE + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0063 0068 ; [.1FD7.0020.0002] # +0043 0068 ; [.1FD7.0020.0007] # +0043 0048 ; [.1FD7.0020.0008] # +006C 006C ; [.20D7.0020.0002] # +004C 006C ; [.20D7.0020.0007] # +004C 004C ; [.20D7.0020.0008] # +00F1 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH TILDE +006E 0303 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH TILDE +00D1 ; [.2119.0020.0008] # LATIN CAPITAL LETTER N WITH TILDE +004E 0303 ; [.2119.0020.0008] # LATIN CAPITAL LETTER N WITH TILDE ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/et.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/et.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/et.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/et.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,51 +1,51 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0161 ; [.1EF8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0073 030C ; [.1EF8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0160 ; [.1EF8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -0053 030C ; [.1EF8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -007A ; [.1EF9.0020.0002] # LATIN SMALL LETTER Z -005A ; [.1EF9.0020.0008] # LATIN CAPITAL LETTER Z -017E ; [.1EFA.0020.0002] # LATIN SMALL LETTER Z WITH CARON -007A 030C ; [.1EFA.0020.0002] # LATIN SMALL LETTER Z WITH CARON -017D ; [.1EFA.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON -005A 030C ; [.1EFA.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON -00F5 ; [.1F61.0020.0002] # LATIN SMALL LETTER O WITH TILDE -006F 0303 ; [.1F61.0020.0002] # LATIN SMALL LETTER O WITH TILDE -00D5 ; [.1F61.0020.0008] # LATIN CAPITAL LETTER O WITH TILDE -004F 0303 ; [.1F61.0020.0008] # LATIN CAPITAL LETTER O WITH TILDE -1E4D ; [.1F61.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH TILDE AND ACUTE -1E4C ; [.1F61.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE -022D ; [.1F61.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH TILDE AND MACRON -022C ; [.1F61.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH TILDE AND MACRON -1E4F ; [.1F61.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS -1E4E ; [.1F61.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS -1EE1 ; [.1F61.0020.0002][.0000.003F.0002] # LATIN SMALL LETTER O WITH HORN AND TILDE -1EE0 ; [.1F61.0020.0008][.0000.003F.0002] # LATIN CAPITAL LETTER O WITH HORN AND TILDE -00E4 ; [.1F62.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1F62.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1F62.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1F62.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1F62.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1F62.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -00F6 ; [.1F63.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1F63.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1F63.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1F63.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1F63.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1F63.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -00FC ; [.1F64.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F64.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F64.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F64.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1F64.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F64.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1F64.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F64.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1F64.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F64.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1F64.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F64.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0161 ; [.21F4.0020.0002] # LATIN SMALL LETTER S WITH CARON +0073 030C ; [.21F4.0020.0002] # LATIN SMALL LETTER S WITH CARON +0160 ; [.21F4.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +0053 030C ; [.21F4.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +007A ; [.21F5.0020.0002] # LATIN SMALL LETTER Z +005A ; [.21F5.0020.0008] # LATIN CAPITAL LETTER Z +017E ; [.21F6.0020.0002] # LATIN SMALL LETTER Z WITH CARON +007A 030C ; [.21F6.0020.0002] # LATIN SMALL LETTER Z WITH CARON +017D ; [.21F6.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON +005A 030C ; [.21F6.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON +00F5 ; [.2260.0020.0002] # LATIN SMALL LETTER O WITH TILDE +006F 0303 ; [.2260.0020.0002] # LATIN SMALL LETTER O WITH TILDE +00D5 ; [.2260.0020.0008] # LATIN CAPITAL LETTER O WITH TILDE +004F 0303 ; [.2260.0020.0008] # LATIN CAPITAL LETTER O WITH TILDE +1E4D ; [.2260.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH TILDE AND ACUTE +1E4C ; [.2260.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE +022D ; [.2260.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH TILDE AND MACRON +022C ; [.2260.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH TILDE AND MACRON +1E4F ; [.2260.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS +1E4E ; [.2260.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS +1EE1 ; [.2260.0020.0002][.0000.003F.0002] # LATIN SMALL LETTER O WITH HORN AND TILDE +1EE0 ; [.2260.0020.0008][.0000.003F.0002] # LATIN CAPITAL LETTER O WITH HORN AND TILDE +00E4 ; [.2261.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.2261.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.2261.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.2261.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.2261.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.2261.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +00F6 ; [.2262.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.2262.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.2262.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.2262.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.2262.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.2262.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +00FC ; [.2263.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2263.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2263.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2263.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.2263.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2263.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.2263.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2263.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.2263.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2263.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.2263.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2263.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/fa.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/fa.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/fa.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/fa.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,51 +1,51 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 0650 ; [.0000.0077.0002] # ARABIC KASRA 064B ; [.0000.007B.0002] # ARABIC FATHATAN 064D ; [.0000.007C.0002] # ARABIC KASRATAN 064C ; [.0000.007D.0002] # ARABIC DAMMATAN -0622 ; [.2370.0020.0002][.FFF1.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE -0627 0653 ; [.2370.0020.0002][.FFF1.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE -08AC ; [.2370.0020.0002][.FFF0.0000.0000] # ARABIC LETTER ROHINGYA YEH -0671 ; [.2371.0021.0002] # ARABIC LETTER ALEF WASLA -0621 ; [.2372.0020.0002][.FFF0.0000.0000] # ARABIC LETTER HAMZA -0623 ; [.2372.0021.0002][.FFF0.0000.0000] # ARABIC LETTER ALEF WITH HAMZA ABOVE -0627 0654 ; [.2372.0021.0002][.FFF0.0000.0000] # ARABIC LETTER ALEF WITH HAMZA ABOVE -0672 ; [.2372.0022.0002][.FFF0.0000.0000] # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE -0625 ; [.2372.0023.0002][.FFF0.0000.0000] # ARABIC LETTER ALEF WITH HAMZA BELOW -0627 0655 ; [.2372.0023.0002][.FFF0.0000.0000] # ARABIC LETTER ALEF WITH HAMZA BELOW -0673 ; [.2372.0024.0002][.FFF0.0000.0000] # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW -0624 ; [.2372.0025.0002][.FFF0.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE -0648 0654 ; [.2372.0025.0002][.FFF0.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE -06CC 0654 ; [.2372.0026.0002][.FFF0.0000.0000] # -0649 0654 ; [.2372.0026.0003][.FFF0.0000.0000] # -0626 ; [.2372.0026.0004][.FFF0.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE -064A 0654 ; [.2372.0026.0004][.FFF0.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE -066E ; [.2372.0020.0002][.FFF1.0000.0000] # ARABIC LETTER DOTLESS BEH -06AA ; [.23EE.0021.0002] # ARABIC LETTER SWASH KAF -06AB ; [.23EE.0022.0002] # ARABIC LETTER KAF WITH RING -0643 ; [.23EE.0023.0002] # ARABIC LETTER KAF -06AC ; [.23EE.0024.0002] # ARABIC LETTER KAF WITH DOT ABOVE -06AD ; [.23EE.0025.0002] # ARABIC LETTER NG -06AE ; [.23EE.0026.0002] # ARABIC LETTER KAF WITH THREE DOTS BELOW -0647 ; [.2427.0020.0002][.FFF1.0000.0000] # ARABIC LETTER HEH -06D5 ; [.2427.0021.0002][.FFF1.0000.0000] # ARABIC LETTER AE -06C1 ; [.2427.0022.0002][.FFF1.0000.0000] # ARABIC LETTER HEH GOAL -06C2 ; [.2427.0022.0002][.FFF1.0000.0000][.0000.0083.0002] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE -0629 ; [.2427.0023.0002][.FFF1.0000.0000] # ARABIC LETTER TEH MARBUTA -06C3 ; [.2427.0024.0002][.FFF1.0000.0000] # ARABIC LETTER TEH MARBUTA GOAL -06C0 ; [.2427.0025.0002][.FFF1.0000.0000] # ARABIC LETTER HEH WITH YEH ABOVE -06D5 0654 ; [.2427.0025.0002][.FFF1.0000.0000] # ARABIC LETTER HEH WITH YEH ABOVE -06BE ; [.2427.0026.0002][.FFF1.0000.0000] # ARABIC LETTER HEH DOACHASHMEE -06CF ; [.2427.0020.0002][.FFF0.0000.0000] # ARABIC LETTER WAW WITH DOT ABOVE -0649 ; [.242D.0021.0002] # ARABIC LETTER ALEF MAKSURA -06D2 ; [.242D.0022.0002] # ARABIC LETTER YEH BARREE -06D3 ; [.242D.0022.0002][.0000.0083.0002] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE -064A ; [.242D.0023.0002] # ARABIC LETTER YEH -06D0 ; [.242D.0024.0002] # ARABIC LETTER E -06D1 ; [.242D.0025.0002] # ARABIC LETTER YEH WITH THREE DOTS BELOW -06CD ; [.242D.0026.0002] # ARABIC LETTER YEH WITH TAIL -06CE ; [.242D.0027.0002] # ARABIC LETTER YEH WITH SMALL V +0622 ; [.2671.0020.0002][.FFF1.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE +0627 0653 ; [.2671.0020.0002][.FFF1.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE +08AC ; [.2671.0020.0002][.FFF0.0000.0000] # ARABIC LETTER ROHINGYA YEH +0671 ; [.2672.0021.0002] # ARABIC LETTER ALEF WASLA +0621 ; [.2673.0020.0002][.FFF0.0000.0000] # ARABIC LETTER HAMZA +0623 ; [.2673.0021.0002][.FFF0.0000.0000] # ARABIC LETTER ALEF WITH HAMZA ABOVE +0627 0654 ; [.2673.0021.0002][.FFF0.0000.0000] # ARABIC LETTER ALEF WITH HAMZA ABOVE +0672 ; [.2673.0022.0002][.FFF0.0000.0000] # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE +0625 ; [.2673.0023.0002][.FFF0.0000.0000] # ARABIC LETTER ALEF WITH HAMZA BELOW +0627 0655 ; [.2673.0023.0002][.FFF0.0000.0000] # ARABIC LETTER ALEF WITH HAMZA BELOW +0673 ; [.2673.0024.0002][.FFF0.0000.0000] # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW +0624 ; [.2673.0025.0002][.FFF0.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE +0648 0654 ; [.2673.0025.0002][.FFF0.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE +06CC 0654 ; [.2673.0026.0002][.FFF0.0000.0000] # +0649 0654 ; [.2673.0026.0003][.FFF0.0000.0000] # +0626 ; [.2673.0026.0004][.FFF0.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE +064A 0654 ; [.2673.0026.0004][.FFF0.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE +066E ; [.2673.0020.0002][.FFF1.0000.0000] # ARABIC LETTER DOTLESS BEH +06AA ; [.26F7.0021.0002] # ARABIC LETTER SWASH KAF +06AB ; [.26F7.0022.0002] # ARABIC LETTER KAF WITH RING +0643 ; [.26F7.0023.0002] # ARABIC LETTER KAF +06AC ; [.26F7.0024.0002] # ARABIC LETTER KAF WITH DOT ABOVE +06AD ; [.26F7.0025.0002] # ARABIC LETTER NG +06AE ; [.26F7.0026.0002] # ARABIC LETTER KAF WITH THREE DOTS BELOW +0647 ; [.2732.0020.0002][.FFF1.0000.0000] # ARABIC LETTER HEH +06D5 ; [.2732.0021.0002][.FFF1.0000.0000] # ARABIC LETTER AE +06C1 ; [.2732.0022.0002][.FFF1.0000.0000] # ARABIC LETTER HEH GOAL +06C2 ; [.2732.0022.0002][.FFF1.0000.0000][.0000.0083.0002] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE +0629 ; [.2732.0023.0002][.FFF1.0000.0000] # ARABIC LETTER TEH MARBUTA +06C3 ; [.2732.0024.0002][.FFF1.0000.0000] # ARABIC LETTER TEH MARBUTA GOAL +06C0 ; [.2732.0025.0002][.FFF1.0000.0000] # ARABIC LETTER HEH WITH YEH ABOVE +06D5 0654 ; [.2732.0025.0002][.FFF1.0000.0000] # ARABIC LETTER HEH WITH YEH ABOVE +06BE ; [.2732.0026.0002][.FFF1.0000.0000] # ARABIC LETTER HEH DOACHASHMEE +06CF ; [.2732.0020.0002][.FFF0.0000.0000] # ARABIC LETTER WAW WITH DOT ABOVE +0649 ; [.2738.0021.0002] # ARABIC LETTER ALEF MAKSURA +06D2 ; [.2738.0022.0002] # ARABIC LETTER YEH BARREE +06D3 ; [.2738.0022.0002][.0000.0083.0002] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE +064A ; [.2738.0023.0002] # ARABIC LETTER YEH +06D0 ; [.2738.0024.0002] # ARABIC LETTER E +06D1 ; [.2738.0025.0002] # ARABIC LETTER YEH WITH THREE DOTS BELOW +06CD ; [.2738.0026.0002] # ARABIC LETTER YEH WITH TAIL +06CE ; [.2738.0027.0002] # ARABIC LETTER YEH WITH SMALL V ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/fil.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/fil.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/fil.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/fil.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,12 +1,12 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -00F1 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH TILDE -006E 0303 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH TILDE -00D1 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH TILDE -004E 0303 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH TILDE -006E 0067 ; [.1E21.0020.0002] # -004E 0067 ; [.1E21.0020.0007] # -004E 0047 ; [.1E21.0020.0008] # + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +00F1 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH TILDE +006E 0303 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH TILDE +00D1 ; [.2119.0020.0008] # LATIN CAPITAL LETTER N WITH TILDE +004E 0303 ; [.2119.0020.0008] # LATIN CAPITAL LETTER N WITH TILDE +006E 0067 ; [.211A.0020.0002] # +004E 0067 ; [.211A.0020.0007] # +004E 0047 ; [.211A.0020.0008] # ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/fi_phone.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/fi_phone.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/fi_phone.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/fi_phone.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,63 +1,63 @@ +{ - locale_version => 1.27, + locale_version => 1.29, # in cldr test/fi.xml why x{110}x < xdx though xd < x{110} ? - entry => <<'ENTRY', # for DUCET v10.0.0 -0111 ; [.1CF5.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER D WITH STROKE -0110 ; [.1CF5.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER D WITH STROKE -01E5 ; [.1D5A.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER G WITH STROKE -01E4 ; [.1D5A.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER G WITH STROKE -014B ; [.1E1F.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER ENG -014A ; [.1E1F.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER ENG -0167 ; [.1EFB.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER T WITH STROKE -0166 ; [.1EFB.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER T WITH STROKE -00FC ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1F71.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F71.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1F71.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F71.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1F71.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F71.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1F71.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F71.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0292 ; [.1F87.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER EZH -01B7 ; [.1F87.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER EZH -01EF ; [.1F87.0021.0002][.0000.0039.0002][.0000.0028.0002] # LATIN SMALL LETTER EZH WITH CARON -01EE ; [.1F87.0021.0008][.0000.0039.0002][.0000.0028.0002] # LATIN CAPITAL LETTER EZH WITH CARON -00E5 ; [.1FFC.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -0061 030A ; [.1FFC.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -00C5 ; [.1FFC.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -0041 030A ; [.1FFC.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -212B ; [.1FFC.0020.0008] # ANGSTROM SIGN -01FB ; [.1FFC.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE -01FA ; [.1FFC.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE -00E4 ; [.1FFD.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1FFD.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1FFD.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1FFD.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -00E6 ; [.1FFD.0021.0002] # LATIN SMALL LETTER AE -1DD4 ; [.1FFD.0021.0002] # COMBINING LATIN SMALL LETTER AE -00C6 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER AE -1D2D ; [.1FFD.0021.0014] # MODIFIER LETTER CAPITAL AE -01FD ; [.1FFD.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE -01FC ; [.1FFD.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE -01E3 ; [.1FFD.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON -01E2 ; [.1FFD.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON -00F6 ; [.1FFE.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1FFE.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1FFE.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1FFE.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -00F8 ; [.1FFE.0021.0002] # LATIN SMALL LETTER O WITH STROKE -006F 0338 ; [.1FFE.0021.0002] # LATIN SMALL LETTER O WITH STROKE -00D8 ; [.1FFE.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE -004F 0338 ; [.1FFE.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE -01FF ; [.1FFE.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE -01FE ; [.1FFE.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + entry => <<'ENTRY', # for DUCET v13.0.0 +0111 ; [.1FEB.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER D WITH STROKE +0110 ; [.1FEB.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER D WITH STROKE +01E5 ; [.2051.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER G WITH STROKE +01E4 ; [.2051.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER G WITH STROKE +014B ; [.2118.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER ENG +014A ; [.2118.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER ENG +0167 ; [.21F7.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER T WITH STROKE +0166 ; [.21F7.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER T WITH STROKE +00FC ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.2270.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2270.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.2270.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2270.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.2270.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2270.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.2270.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2270.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0292 ; [.2286.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER EZH +01B7 ; [.2286.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER EZH +01EF ; [.2286.0021.0002][.0000.0039.0002][.0000.0028.0002] # LATIN SMALL LETTER EZH WITH CARON +01EE ; [.2286.0021.0008][.0000.0039.0002][.0000.0028.0002] # LATIN CAPITAL LETTER EZH WITH CARON +00E5 ; [.22FB.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +0061 030A ; [.22FB.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +00C5 ; [.22FB.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +0041 030A ; [.22FB.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +212B ; [.22FB.0020.0008] # ANGSTROM SIGN +01FB ; [.22FB.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +01FA ; [.22FB.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +00E4 ; [.22FC.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.22FC.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.22FC.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.22FC.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +00E6 ; [.22FC.0021.0002] # LATIN SMALL LETTER AE +1DD4 ; [.22FC.0021.0002] # COMBINING LATIN SMALL LETTER AE +00C6 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER AE +1D2D ; [.22FC.0021.0014] # MODIFIER LETTER CAPITAL AE +01FD ; [.22FC.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE +01FC ; [.22FC.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE +01E3 ; [.22FC.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON +01E2 ; [.22FC.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON +00F6 ; [.22FD.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.22FD.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.22FD.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.22FD.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.22FD.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.22FD.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +00F8 ; [.22FD.0021.0002] # LATIN SMALL LETTER O WITH STROKE +006F 0338 ; [.22FD.0021.0002] # LATIN SMALL LETTER O WITH STROKE +00D8 ; [.22FD.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE +004F 0338 ; [.22FD.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE +01FF ; [.22FD.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE +01FE ; [.22FD.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/fi.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/fi.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/fi.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/fi.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,65 +1,65 @@ +{ - locale_version => 1.27, + locale_version => 1.29, # in cldr test/fi.xml why x{110}x < xdx though xd < x{110} ? - entry => <<'ENTRY', # for DUCET v10.0.0 -0111 ; [.1CF5.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER D WITH STROKE -0110 ; [.1CF5.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER D WITH STROKE -01E5 ; [.1D5A.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER G WITH STROKE -01E4 ; [.1D5A.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER G WITH STROKE -014B ; [.1E1F.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER ENG -014A ; [.1E1F.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER ENG -0167 ; [.1EFB.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER T WITH STROKE -0166 ; [.1EFB.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER T WITH STROKE -0077 ; [.1F49.0021.0002] # LATIN SMALL LETTER W -0057 ; [.1F49.0021.0008] # LATIN CAPITAL LETTER W -00FC ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1F71.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F71.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1F71.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F71.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1F71.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F71.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1F71.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F71.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0292 ; [.1F87.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER EZH -01B7 ; [.1F87.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER EZH -01EF ; [.1F87.0021.0002][.0000.0039.0002][.0000.0028.0002] # LATIN SMALL LETTER EZH WITH CARON -01EE ; [.1F87.0021.0008][.0000.0039.0002][.0000.0028.0002] # LATIN CAPITAL LETTER EZH WITH CARON -00E5 ; [.1FFC.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -0061 030A ; [.1FFC.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -00C5 ; [.1FFC.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -0041 030A ; [.1FFC.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -212B ; [.1FFC.0020.0008] # ANGSTROM SIGN -01FB ; [.1FFC.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE -01FA ; [.1FFC.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE -00E4 ; [.1FFD.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1FFD.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1FFD.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1FFD.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -00E6 ; [.1FFD.0021.0002] # LATIN SMALL LETTER AE -1DD4 ; [.1FFD.0021.0002] # COMBINING LATIN SMALL LETTER AE -00C6 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER AE -1D2D ; [.1FFD.0021.0014] # MODIFIER LETTER CAPITAL AE -01FD ; [.1FFD.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE -01FC ; [.1FFD.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE -01E3 ; [.1FFD.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON -01E2 ; [.1FFD.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON -00F6 ; [.1FFE.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1FFE.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1FFE.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1FFE.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -00F8 ; [.1FFE.0021.0002] # LATIN SMALL LETTER O WITH STROKE -006F 0338 ; [.1FFE.0021.0002] # LATIN SMALL LETTER O WITH STROKE -00D8 ; [.1FFE.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE -004F 0338 ; [.1FFE.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE -01FF ; [.1FFE.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE -01FE ; [.1FFE.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + entry => <<'ENTRY', # for DUCET v13.0.0 +0111 ; [.1FEB.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER D WITH STROKE +0110 ; [.1FEB.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER D WITH STROKE +01E5 ; [.2051.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER G WITH STROKE +01E4 ; [.2051.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER G WITH STROKE +014B ; [.2118.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER ENG +014A ; [.2118.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER ENG +0167 ; [.21F7.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER T WITH STROKE +0166 ; [.21F7.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER T WITH STROKE +0077 ; [.2247.0021.0002] # LATIN SMALL LETTER W +0057 ; [.2247.0021.0008] # LATIN CAPITAL LETTER W +00FC ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.2270.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2270.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.2270.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2270.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.2270.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2270.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.2270.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2270.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0292 ; [.2286.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER EZH +01B7 ; [.2286.0021.0008][.0000.0039.0002] # LATIN CAPITAL LETTER EZH +01EF ; [.2286.0021.0002][.0000.0039.0002][.0000.0028.0002] # LATIN SMALL LETTER EZH WITH CARON +01EE ; [.2286.0021.0008][.0000.0039.0002][.0000.0028.0002] # LATIN CAPITAL LETTER EZH WITH CARON +00E5 ; [.22FB.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +0061 030A ; [.22FB.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +00C5 ; [.22FB.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +0041 030A ; [.22FB.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +212B ; [.22FB.0020.0008] # ANGSTROM SIGN +01FB ; [.22FB.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +01FA ; [.22FB.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +00E4 ; [.22FC.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.22FC.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.22FC.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.22FC.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +00E6 ; [.22FC.0021.0002] # LATIN SMALL LETTER AE +1DD4 ; [.22FC.0021.0002] # COMBINING LATIN SMALL LETTER AE +00C6 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER AE +1D2D ; [.22FC.0021.0014] # MODIFIER LETTER CAPITAL AE +01FD ; [.22FC.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE +01FC ; [.22FC.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE +01E3 ; [.22FC.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON +01E2 ; [.22FC.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON +00F6 ; [.22FD.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.22FD.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.22FD.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.22FD.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.22FD.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.22FD.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +00F8 ; [.22FD.0021.0002] # LATIN SMALL LETTER O WITH STROKE +006F 0338 ; [.22FD.0021.0002] # LATIN SMALL LETTER O WITH STROKE +00D8 ; [.22FD.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE +004F 0338 ; [.22FD.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE +01FF ; [.22FD.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE +01FE ; [.22FD.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/fo.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/fo.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/fo.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/fo.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,77 +1,77 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0111 ; [.1CF5.0021.0002] # LATIN SMALL LETTER D WITH STROKE -0064 0335 ; [.1CF5.0021.0002] # LATIN SMALL LETTER D WITH STROKE -0110 ; [.1CF5.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE -0044 0335 ; [.1CF5.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE -00F0 ; [.1CF5.0022.0002] # LATIN SMALL LETTER ETH -1DD9 ; [.1CF5.0022.0002] # COMBINING LATIN SMALL LETTER ETH -00D0 ; [.1CF5.0022.0008] # LATIN CAPITAL LETTER ETH -00FE ; [.1EFB.0020.0003][.1D7E.0020.0003] # LATIN SMALL LETTER THORN -00DE ; [.1EFB.0020.0009][.1D7E.0020.0009] # LATIN CAPITAL LETTER THORN -00FC ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1F71.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F71.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1F71.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F71.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1F71.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F71.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1F71.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F71.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0171 ; [.1F71.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0075 030B ; [.1F71.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0170 ; [.1F71.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -0055 030B ; [.1F71.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -00E6 ; [.1FFC.0020.0002] # LATIN SMALL LETTER AE -1DD4 ; [.1FFC.0020.0002] # COMBINING LATIN SMALL LETTER AE -00C6 ; [.1FFC.0020.0008] # LATIN CAPITAL LETTER AE -1D2D ; [.1FFC.0020.0014] # MODIFIER LETTER CAPITAL AE -01FD ; [.1FFC.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE -01FC ; [.1FFC.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE -01E3 ; [.1FFC.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON -01E2 ; [.1FFC.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON -00E4 ; [.1FFC.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1FFC.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1FFC.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1FFC.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1FFC.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1FFC.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -0119 ; [.1FFC.0022.0002] # LATIN SMALL LETTER E WITH OGONEK -0065 0328 ; [.1FFC.0022.0002] # LATIN SMALL LETTER E WITH OGONEK -0118 ; [.1FFC.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK -0045 0328 ; [.1FFC.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK -00F8 ; [.1FFD.0020.0002] # LATIN SMALL LETTER O WITH STROKE -006F 0338 ; [.1FFD.0020.0002] # LATIN SMALL LETTER O WITH STROKE -00D8 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE -004F 0338 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE -01FF ; [.1FFD.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE -01FE ; [.1FFD.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE -00F6 ; [.1FFD.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1FFD.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1FFD.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1FFD.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -0151 ; [.1FFD.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -006F 030B ; [.1FFD.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -0150 ; [.1FFD.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -004F 030B ; [.1FFD.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -0153 ; [.1FFD.0023.0002] # LATIN SMALL LIGATURE OE -0152 ; [.1FFD.0023.0008] # LATIN CAPITAL LIGATURE OE -00E5 ; [.1FFE.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -0061 030A ; [.1FFE.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -00C5 ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -0041 030A ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -212B ; [.1FFE.0020.0008] # ANGSTROM SIGN -01FB ; [.1FFE.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE -01FA ; [.1FFE.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE -0061 0061 ; [.1FFE.0020.001C][.0000.0000.0002] # -0061 0041 ; [.1FFE.0020.001C][.0000.0000.0008] # -0041 0061 ; [.1FFE.0020.001D][.0000.0000.0002] # -0041 0041 ; [.1FFE.0020.001D][.0000.0000.0008] # + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0111 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE +0064 0335 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE +0110 ; [.1FEB.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE +0044 0335 ; [.1FEB.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE +00F0 ; [.1FEB.0022.0002] # LATIN SMALL LETTER ETH +1DD9 ; [.1FEB.0022.0002] # COMBINING LATIN SMALL LETTER ETH +00D0 ; [.1FEB.0022.0008] # LATIN CAPITAL LETTER ETH +00FE ; [.21F7.0020.0003][.2075.0020.0003] # LATIN SMALL LETTER THORN +00DE ; [.21F7.0020.0009][.2075.0020.0009] # LATIN CAPITAL LETTER THORN +00FC ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.2270.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2270.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.2270.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2270.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.2270.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2270.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.2270.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2270.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0171 ; [.2270.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0075 030B ; [.2270.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0170 ; [.2270.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0055 030B ; [.2270.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +00E6 ; [.22FB.0020.0002] # LATIN SMALL LETTER AE +1DD4 ; [.22FB.0020.0002] # COMBINING LATIN SMALL LETTER AE +00C6 ; [.22FB.0020.0008] # LATIN CAPITAL LETTER AE +1D2D ; [.22FB.0020.0014] # MODIFIER LETTER CAPITAL AE +01FD ; [.22FB.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE +01FC ; [.22FB.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE +01E3 ; [.22FB.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON +01E2 ; [.22FB.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON +00E4 ; [.22FB.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.22FB.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.22FB.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.22FB.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.22FB.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.22FB.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +0119 ; [.22FB.0022.0002] # LATIN SMALL LETTER E WITH OGONEK +0065 0328 ; [.22FB.0022.0002] # LATIN SMALL LETTER E WITH OGONEK +0118 ; [.22FB.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK +0045 0328 ; [.22FB.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK +00F8 ; [.22FC.0020.0002] # LATIN SMALL LETTER O WITH STROKE +006F 0338 ; [.22FC.0020.0002] # LATIN SMALL LETTER O WITH STROKE +00D8 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE +004F 0338 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE +01FF ; [.22FC.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE +01FE ; [.22FC.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +00F6 ; [.22FC.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.22FC.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.22FC.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.22FC.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +0151 ; [.22FC.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +006F 030B ; [.22FC.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +0150 ; [.22FC.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +004F 030B ; [.22FC.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +0153 ; [.22FC.0023.0002] # LATIN SMALL LIGATURE OE +0152 ; [.22FC.0023.0008] # LATIN CAPITAL LIGATURE OE +00E5 ; [.22FD.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +0061 030A ; [.22FD.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +00C5 ; [.22FD.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +0041 030A ; [.22FD.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +212B ; [.22FD.0020.0008] # ANGSTROM SIGN +01FB ; [.22FD.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +01FA ; [.22FD.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +0061 0061 ; [.22FD.0020.001C][.0000.0000.0002] # +0061 0041 ; [.22FD.0020.001C][.0000.0000.0008] # +0041 0061 ; [.22FD.0020.001D][.0000.0000.0002] # +0041 0041 ; [.22FD.0020.001D][.0000.0000.0008] # ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/fr_ca.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/fr_ca.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/fr_ca.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/fr_ca.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,4 +1,4 @@ +{ - locale_version => 1.27, + locale_version => 1.29, backwards => 2, }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/gu.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/gu.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/gu.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/gu.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,9 +1,9 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0A82 ; [.27AB.0020.0002][.FFF1.0000.0000] # GUJARATI SIGN ANUSVARA -0A81 ; [.27AB.0021.0002][.FFF1.0000.0000] # GUJARATI SIGN CANDRABINDU -0A83 ; [.27AB.0020.0002][.FFF2.0000.0000] # GUJARATI SIGN VISARGA -0AD0 ; [.27AB.0020.0002][.FFF0.0000.0000] # GUJARATI OM + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0A82 ; [.2AB8.0020.0002][.FFF1.0000.0000] # GUJARATI SIGN ANUSVARA +0A81 ; [.2AB8.0021.0002][.FFF1.0000.0000] # GUJARATI SIGN CANDRABINDU +0A83 ; [.2AB8.0020.0002][.FFF2.0000.0000] # GUJARATI SIGN VISARGA +0AD0 ; [.2AB8.0020.0002][.FFF0.0000.0000] # GUJARATI OM ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ha.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ha.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ha.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ha.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,16 +1,16 @@ +{ - locale_version => 1.27, + locale_version => 1.29, # b-hook, d-hook, k-hook, y-hook don't require tailoring - entry => <<'ENTRY', # for DUCET v10.0.0 -0073 0068 ; [.1ED8.0020.0002] # -0053 0068 ; [.1ED8.0020.0007] # -0053 0048 ; [.1ED8.0020.0008] # -0074 0073 ; [.1EFC.0020.0002] # -0054 0073 ; [.1EFC.0020.0007] # -0054 0053 ; [.1EFC.0020.0008] # -02BC 0079 ; [.1F7D.0020.0003] # -02BC 0059 ; [.1F7D.0020.0009] # -0027 0079 ; [.1F7D.0020.0004] # -0027 0059 ; [.1F7D.0020.000A] # + entry => <<'ENTRY', # for DUCET v13.0.0 +0073 0068 ; [.21D3.0020.0002] # +0053 0068 ; [.21D3.0020.0007] # +0053 0048 ; [.21D3.0020.0008] # +0074 0073 ; [.21F8.0020.0002] # +0054 0073 ; [.21F8.0020.0007] # +0054 0053 ; [.21F8.0020.0008] # +02BC 0079 ; [.227C.0020.0003] # +02BC 0059 ; [.227C.0020.0009] # +0027 0079 ; [.227C.0020.0004] # +0027 0059 ; [.227C.0020.000A] # ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/haw.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/haw.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/haw.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/haw.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,22 +1,22 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0065 ; [.1CAE.0020.0002][.FFF1.0000.0000] # LATIN SMALL LETTER E -0045 ; [.1CAE.0020.0008][.FFF1.0000.0000] # LATIN CAPITAL LETTER E -0069 ; [.1CAE.0020.0002][.FFF2.0000.0000] # LATIN SMALL LETTER I -0049 ; [.1CAE.0020.0008][.FFF2.0000.0000] # LATIN CAPITAL LETTER I -006F ; [.1CAE.0020.0002][.FFF3.0000.0000] # LATIN SMALL LETTER O -004F ; [.1CAE.0020.0008][.FFF3.0000.0000] # LATIN CAPITAL LETTER O -0075 ; [.1CAE.0020.0002][.FFF4.0000.0000] # LATIN SMALL LETTER U -0055 ; [.1CAE.0020.0008][.FFF4.0000.0000] # LATIN CAPITAL LETTER U -02BB ; [.1F5C.0020.0002] # MODIFIER LETTER TURNED COMMA -0113 ; [.1CAE.0020.0002][.FFF1.0000.0000][.0000.0032.0002] # LATIN SMALL LETTER E WITH MACRON -0112 ; [.1CAE.0020.0008][.FFF1.0000.0000][.0000.0032.0002] # LATIN CAPITAL LETTER E WITH MACRON -012B ; [.1CAE.0020.0002][.FFF2.0000.0000][.0000.0032.0002] # LATIN SMALL LETTER I WITH MACRON -012A ; [.1CAE.0020.0008][.FFF2.0000.0000][.0000.0032.0002] # LATIN CAPITAL LETTER I WITH MACRON -014D ; [.1CAE.0020.0002][.FFF3.0000.0000][.0000.0032.0002] # LATIN SMALL LETTER O WITH MACRON -014C ; [.1CAE.0020.0008][.FFF3.0000.0000][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH MACRON -016B ; [.1CAE.0020.0002][.FFF4.0000.0000][.0000.0032.0002] # LATIN SMALL LETTER U WITH MACRON -016A ; [.1CAE.0020.0008][.FFF4.0000.0000][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH MACRON + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0065 ; [.1FA3.0020.0002][.FFF1.0000.0000] # LATIN SMALL LETTER E +0045 ; [.1FA3.0020.0008][.FFF1.0000.0000] # LATIN CAPITAL LETTER E +0069 ; [.1FA3.0020.0002][.FFF2.0000.0000] # LATIN SMALL LETTER I +0049 ; [.1FA3.0020.0008][.FFF2.0000.0000] # LATIN CAPITAL LETTER I +006F ; [.1FA3.0020.0002][.FFF3.0000.0000] # LATIN SMALL LETTER O +004F ; [.1FA3.0020.0008][.FFF3.0000.0000] # LATIN CAPITAL LETTER O +0075 ; [.1FA3.0020.0002][.FFF4.0000.0000] # LATIN SMALL LETTER U +0055 ; [.1FA3.0020.0008][.FFF4.0000.0000] # LATIN CAPITAL LETTER U +02BB ; [.225A.0020.0002] # MODIFIER LETTER TURNED COMMA +0113 ; [.1FA3.0020.0002][.FFF1.0000.0000][.0000.0032.0002] # LATIN SMALL LETTER E WITH MACRON +0112 ; [.1FA3.0020.0008][.FFF1.0000.0000][.0000.0032.0002] # LATIN CAPITAL LETTER E WITH MACRON +012B ; [.1FA3.0020.0002][.FFF2.0000.0000][.0000.0032.0002] # LATIN SMALL LETTER I WITH MACRON +012A ; [.1FA3.0020.0008][.FFF2.0000.0000][.0000.0032.0002] # LATIN CAPITAL LETTER I WITH MACRON +014D ; [.1FA3.0020.0002][.FFF3.0000.0000][.0000.0032.0002] # LATIN SMALL LETTER O WITH MACRON +014C ; [.1FA3.0020.0008][.FFF3.0000.0000][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH MACRON +016B ; [.1FA3.0020.0002][.FFF4.0000.0000][.0000.0032.0002] # LATIN SMALL LETTER U WITH MACRON +016A ; [.1FA3.0020.0008][.FFF4.0000.0000][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH MACRON ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/he.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/he.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/he.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/he.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,7 +1,7 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -05F3 ; [*0306.001F.0002] # HEBREW PUNCTUATION GERESH -05F4 ; [*030D.001F.0002] # HEBREW PUNCTUATION GERSHAYIM + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +05F3 ; [*0316.001F.0002] # HEBREW PUNCTUATION GERESH +05F4 ; [*031D.001F.0002] # HEBREW PUNCTUATION GERSHAYIM ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/hi.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/hi.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/hi.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/hi.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,9 +1,9 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0902 ; [.26CC.0020.0002][.FFF1.0000.0000] # DEVANAGARI SIGN ANUSVARA -0901 ; [.26CC.0021.0002][.FFF1.0000.0000] # DEVANAGARI SIGN CANDRABINDU -0903 ; [.26CC.0020.0002][.FFF2.0000.0000] # DEVANAGARI SIGN VISARGA -0950 ; [.26CC.0020.0002][.FFF0.0000.0000] # DEVANAGARI OM + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0902 ; [.29D7.0020.0002][.FFF1.0000.0000] # DEVANAGARI SIGN ANUSVARA +0901 ; [.29D7.0021.0002][.FFF1.0000.0000] # DEVANAGARI SIGN CANDRABINDU +0903 ; [.29D7.0020.0002][.FFF2.0000.0000] # DEVANAGARI SIGN VISARGA +0950 ; [.29D7.0020.0002][.FFF0.0000.0000] # DEVANAGARI OM ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/hr.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/hr.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/hr.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/hr.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,48 +1,48 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -010D ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON -0063 030C ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON -010C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0043 030C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0107 ; [.1CE2.0020.0002] # LATIN SMALL LETTER C WITH ACUTE -0063 0301 ; [.1CE2.0020.0002] # LATIN SMALL LETTER C WITH ACUTE -0063 0341 ; [.1CE2.0020.0002] # LATIN SMALL LETTER C WITH ACUTE -0106 ; [.1CE2.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE -0043 0301 ; [.1CE2.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE -0043 0341 ; [.1CE2.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE -0064 017E ; [.1CF6.0020.0002] # -01C6 ; [.1CF6.0020.0003] # LATIN SMALL LETTER DZ WITH CARON -0044 017E ; [.1CF6.0020.0007][.0000.0000.0001] # -01C5 ; [.1CF6.0020.0007][.0000.0000.0007] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON -0044 017D ; [.1CF6.0020.0008] # -01C4 ; [.1CF6.0020.0009] # LATIN CAPITAL LETTER DZ WITH CARON -0064 007A 030C ; [.1CF6.0020.0002] # -0044 007A 030C ; [.1CF6.0020.0007][.0000.0000.0001] # -0044 005A 030C ; [.1CF6.0020.0008] # -0111 ; [.1CF7.0020.0002] # LATIN SMALL LETTER D WITH STROKE -0064 0335 ; [.1CF7.0020.0002] # LATIN SMALL LETTER D WITH STROKE -0110 ; [.1CF7.0020.0008] # LATIN CAPITAL LETTER D WITH STROKE -0044 0335 ; [.1CF7.0020.0008] # LATIN CAPITAL LETTER D WITH STROKE -006C 006A ; [.1DDE.0020.0002] # -01C9 ; [.1DDE.0020.0003] # LATIN SMALL LETTER LJ -004C 006A ; [.1DDE.0020.0007][.0000.0000.0001] # -01C8 ; [.1DDE.0020.0007][.0000.0000.0007] # LATIN CAPITAL LETTER L WITH SMALL LETTER J -004C 004A ; [.1DDE.0020.0008] # -01C7 ; [.1DDE.0020.0009] # LATIN CAPITAL LETTER LJ -006E 006A ; [.1E20.0020.0002] # -01CC ; [.1E20.0020.0003] # LATIN SMALL LETTER NJ -004E 006A ; [.1E20.0020.0007][.0000.0000.0001] # -01CB ; [.1E20.0020.0007][.0000.0000.0007] # LATIN CAPITAL LETTER N WITH SMALL LETTER J -004E 004A ; [.1E20.0020.0008] # -01CA ; [.1E20.0020.0009] # LATIN CAPITAL LETTER NJ -0161 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0073 030C ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0160 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -0053 030C ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -017E ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON -007A 030C ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON -017D ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON -005A 030C ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +010D ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON +0063 030C ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON +010C ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0043 030C ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0107 ; [.1FD8.0020.0002] # LATIN SMALL LETTER C WITH ACUTE +0063 0301 ; [.1FD8.0020.0002] # LATIN SMALL LETTER C WITH ACUTE +0063 0341 ; [.1FD8.0020.0002] # LATIN SMALL LETTER C WITH ACUTE +0106 ; [.1FD8.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE +0043 0301 ; [.1FD8.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE +0043 0341 ; [.1FD8.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE +0064 017E ; [.1FEC.0020.0002] # +01C6 ; [.1FEC.0020.0003] # LATIN SMALL LETTER DZ WITH CARON +0044 017E ; [.1FEC.0020.0007][.0000.0000.0001] # +01C5 ; [.1FEC.0020.0007][.0000.0000.0007] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON +0044 017D ; [.1FEC.0020.0008] # +01C4 ; [.1FEC.0020.0009] # LATIN CAPITAL LETTER DZ WITH CARON +0064 007A 030C ; [.1FEC.0020.0002] # +0044 007A 030C ; [.1FEC.0020.0007][.0000.0000.0001] # +0044 005A 030C ; [.1FEC.0020.0008] # +0111 ; [.1FED.0020.0002] # LATIN SMALL LETTER D WITH STROKE +0064 0335 ; [.1FED.0020.0002] # LATIN SMALL LETTER D WITH STROKE +0110 ; [.1FED.0020.0008] # LATIN CAPITAL LETTER D WITH STROKE +0044 0335 ; [.1FED.0020.0008] # LATIN CAPITAL LETTER D WITH STROKE +006C 006A ; [.20D7.0020.0002] # +01C9 ; [.20D7.0020.0003] # LATIN SMALL LETTER LJ +004C 006A ; [.20D7.0020.0007][.0000.0000.0001] # +01C8 ; [.20D7.0020.0007][.0000.0000.0007] # LATIN CAPITAL LETTER L WITH SMALL LETTER J +004C 004A ; [.20D7.0020.0008] # +01C7 ; [.20D7.0020.0009] # LATIN CAPITAL LETTER LJ +006E 006A ; [.2119.0020.0002] # +01CC ; [.2119.0020.0003] # LATIN SMALL LETTER NJ +004E 006A ; [.2119.0020.0007][.0000.0000.0001] # +01CB ; [.2119.0020.0007][.0000.0000.0007] # LATIN CAPITAL LETTER N WITH SMALL LETTER J +004E 004A ; [.2119.0020.0008] # +01CA ; [.2119.0020.0009] # LATIN CAPITAL LETTER NJ +0161 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0073 030C ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0160 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +0053 030C ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +017E ; [.2287.0020.0002] # LATIN SMALL LETTER Z WITH CARON +007A 030C ; [.2287.0020.0002] # LATIN SMALL LETTER Z WITH CARON +017D ; [.2287.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON +005A 030C ; [.2287.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/hu.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/hu.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/hu.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/hu.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,151 +1,151 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0063 0073 ; [.1CE1.0020.0002] # -0063 0053 ; [.1CE1.0020.0007][.0000.0000.0002] # -0043 0073 ; [.1CE1.0020.0007][.0000.0000.0008] # -0043 0053 ; [.1CE1.0020.0008] # -0064 007A ; [.1CF6.0020.0002] # -0064 005A ; [.1CF6.0020.0007][.0000.0000.0002] # -0044 007A ; [.1CF6.0020.0007][.0000.0000.0008] # -0044 005A ; [.1CF6.0020.0008] # -0064 007A 0073 ; [.1CF7.0020.0002] # -0064 007A 0053 ; [.1CF7.0020.0007][.0000.0000.0002][.0000.0000.0002] # -0064 005A 0073 ; [.1CF7.0020.0007][.0000.0000.0002][.0000.0000.0007] # -0064 005A 0053 ; [.1CF7.0020.0007][.0000.0000.0002][.0000.0000.0008] # -0044 007A 0073 ; [.1CF7.0020.0007][.0000.0000.0008][.0000.0000.0002] # -0044 007A 0053 ; [.1CF7.0020.0007][.0000.0000.0008][.0000.0000.0007] # -0044 005A 0073 ; [.1CF7.0020.0007][.0000.0000.0008][.0000.0000.0008] # -0044 005A 0053 ; [.1CF7.0020.0008] # -0067 0079 ; [.1D5B.0020.0002] # -0067 0059 ; [.1D5B.0020.0007][.0000.0000.0002] # -0047 0079 ; [.1D5B.0020.0007][.0000.0000.0008] # -0047 0059 ; [.1D5B.0020.0008] # -006C 0079 ; [.1DDE.0020.0002] # -006C 0059 ; [.1DDE.0020.0007][.0000.0000.0002] # -004C 0079 ; [.1DDE.0020.0007][.0000.0000.0008] # -004C 0059 ; [.1DDE.0020.0008] # -006E 0079 ; [.1E20.0020.0002] # -006E 0059 ; [.1E20.0020.0007][.0000.0000.0002] # -004E 0079 ; [.1E20.0020.0007][.0000.0000.0008] # -004E 0059 ; [.1E20.0020.0008] # -0073 007A ; [.1ED8.0020.0002] # -0073 005A ; [.1ED8.0020.0007][.0000.0000.0002] # -0053 007A ; [.1ED8.0020.0007][.0000.0000.0008] # -0053 005A ; [.1ED8.0020.0008] # -0074 0079 ; [.1EFC.0020.0002] # -0074 0059 ; [.1EFC.0020.0007][.0000.0000.0002] # -0054 0079 ; [.1EFC.0020.0007][.0000.0000.0008] # -0054 0059 ; [.1EFC.0020.0008] # -007A 0073 ; [.1F88.0020.0002] # -007A 0053 ; [.1F88.0020.0007][.0000.0000.0002] # -005A 0073 ; [.1F88.0020.0007][.0000.0000.0008] # -005A 0053 ; [.1F88.0020.0008] # -00F6 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1E44.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1E44.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -0151 ; [.1E44.0021.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -006F 030B ; [.1E44.0021.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -0150 ; [.1E44.0021.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -004F 030B ; [.1E44.0021.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -00FC ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1F1C.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F1C.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1F1C.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F1C.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1F1C.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F1C.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1F1C.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F1C.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0171 ; [.1F1C.0021.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0075 030B ; [.1F1C.0021.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0170 ; [.1F1C.0021.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -0055 030B ; [.1F1C.0021.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -0063 0063 0073 ; [.1CE1.0020.0002][.1CE1.0020.0002] # -0063 0063 0053 ; [.1CE1.0020.0002][.1CE1.0020.0007][.0000.0000.0002] # -0063 0043 0073 ; [.1CE1.0020.0002][.1CE1.0020.0007][.0000.0000.0008] # -0063 0043 0053 ; [.1CE1.0020.0002][.1CE1.0020.0008] # -0043 0063 0073 ; [.1CE1.0020.0008][.1CE1.0020.0002] # -0043 0063 0053 ; [.1CE1.0020.0008][.1CE1.0020.0007][.0000.0000.0002] # -0043 0043 0073 ; [.1CE1.0020.0008][.1CE1.0020.0007][.0000.0000.0008] # -0043 0043 0053 ; [.1CE1.0020.0008][.1CE1.0020.0008] # -0064 0064 007A ; [.1CF6.0020.0002][.1CF6.0020.0002] # -0064 0064 005A ; [.1CF6.0020.0002][.1CF6.0020.0007][.0000.0000.0002] # -0064 0044 007A ; [.1CF6.0020.0002][.1CF6.0020.0007][.0000.0000.0008] # -0064 0044 005A ; [.1CF6.0020.0002][.1CF6.0020.0008] # -0044 0064 007A ; [.1CF6.0020.0008][.1CF6.0020.0002] # -0044 0064 005A ; [.1CF6.0020.0008][.1CF6.0020.0007][.0000.0000.0002] # -0044 0044 007A ; [.1CF6.0020.0008][.1CF6.0020.0007][.0000.0000.0008] # -0044 0044 005A ; [.1CF6.0020.0008][.1CF6.0020.0008] # -0064 0064 007A 0073 ; [.1CF7.0020.0002][.1CF7.0020.0002] # -0064 0064 007A 0053 ; [.1CF7.0020.0002][.1CF7.0020.0007][.0000.0000.0002][.0000.0000.0002] # -0064 0064 005A 0073 ; [.1CF7.0020.0002][.1CF7.0020.0007][.0000.0000.0002][.0000.0000.0007] # -0064 0064 005A 0053 ; [.1CF7.0020.0002][.1CF7.0020.0007][.0000.0000.0002][.0000.0000.0008] # -0064 0044 007A 0073 ; [.1CF7.0020.0002][.1CF7.0020.0007][.0000.0000.0008][.0000.0000.0002] # -0064 0044 007A 0053 ; [.1CF7.0020.0002][.1CF7.0020.0007][.0000.0000.0008][.0000.0000.0007] # -0064 0044 005A 0073 ; [.1CF7.0020.0002][.1CF7.0020.0007][.0000.0000.0008][.0000.0000.0008] # -0064 0044 005A 0053 ; [.1CF7.0020.0002][.1CF7.0020.0008] # -0044 0064 007A 0073 ; [.1CF7.0020.0008][.1CF7.0020.0002] # -0044 0064 007A 0053 ; [.1CF7.0020.0008][.1CF7.0020.0007][.0000.0000.0002][.0000.0000.0002] # -0044 0064 005A 0073 ; [.1CF7.0020.0008][.1CF7.0020.0007][.0000.0000.0002][.0000.0000.0007] # -0044 0064 005A 0053 ; [.1CF7.0020.0008][.1CF7.0020.0007][.0000.0000.0002][.0000.0000.0008] # -0044 0044 007A 0073 ; [.1CF7.0020.0008][.1CF7.0020.0007][.0000.0000.0008][.0000.0000.0002] # -0044 0044 007A 0053 ; [.1CF7.0020.0008][.1CF7.0020.0007][.0000.0000.0008][.0000.0000.0007] # -0044 0044 005A 0073 ; [.1CF7.0020.0008][.1CF7.0020.0007][.0000.0000.0008][.0000.0000.0008] # -0044 0044 005A 0053 ; [.1CF7.0020.0008][.1CF7.0020.0008] # -0067 0067 0079 ; [.1D5B.0020.0002][.1D5B.0020.0002] # -0067 0067 0059 ; [.1D5B.0020.0002][.1D5B.0020.0007][.0000.0000.0002] # -0067 0047 0079 ; [.1D5B.0020.0002][.1D5B.0020.0007][.0000.0000.0008] # -0067 0047 0059 ; [.1D5B.0020.0002][.1D5B.0020.0008] # -0047 0067 0079 ; [.1D5B.0020.0008][.1D5B.0020.0002] # -0047 0067 0059 ; [.1D5B.0020.0008][.1D5B.0020.0007][.0000.0000.0002] # -0047 0047 0079 ; [.1D5B.0020.0008][.1D5B.0020.0007][.0000.0000.0008] # -0047 0047 0059 ; [.1D5B.0020.0008][.1D5B.0020.0008] # -006C 006C 0079 ; [.1DDE.0020.0002][.1DDE.0020.0002] # -006C 006C 0059 ; [.1DDE.0020.0002][.1DDE.0020.0007][.0000.0000.0002] # -006C 004C 0079 ; [.1DDE.0020.0002][.1DDE.0020.0007][.0000.0000.0008] # -006C 004C 0059 ; [.1DDE.0020.0002][.1DDE.0020.0008] # -004C 006C 0079 ; [.1DDE.0020.0008][.1DDE.0020.0002] # -004C 006C 0059 ; [.1DDE.0020.0008][.1DDE.0020.0007][.0000.0000.0002] # -004C 004C 0079 ; [.1DDE.0020.0008][.1DDE.0020.0007][.0000.0000.0008] # -004C 004C 0059 ; [.1DDE.0020.0008][.1DDE.0020.0008] # -006E 006E 0079 ; [.1E20.0020.0002][.1E20.0020.0002] # -006E 006E 0059 ; [.1E20.0020.0002][.1E20.0020.0007][.0000.0000.0002] # -006E 004E 0079 ; [.1E20.0020.0002][.1E20.0020.0007][.0000.0000.0008] # -006E 004E 0059 ; [.1E20.0020.0002][.1E20.0020.0008] # -004E 006E 0079 ; [.1E20.0020.0008][.1E20.0020.0002] # -004E 006E 0059 ; [.1E20.0020.0008][.1E20.0020.0007][.0000.0000.0002] # -004E 004E 0079 ; [.1E20.0020.0008][.1E20.0020.0007][.0000.0000.0008] # -004E 004E 0059 ; [.1E20.0020.0008][.1E20.0020.0008] # -0073 0073 007A ; [.1ED8.0020.0002][.1ED8.0020.0002] # -0073 0073 005A ; [.1ED8.0020.0002][.1ED8.0020.0007][.0000.0000.0002] # -0073 0053 007A ; [.1ED8.0020.0002][.1ED8.0020.0007][.0000.0000.0008] # -0073 0053 005A ; [.1ED8.0020.0002][.1ED8.0020.0008] # -0053 0073 007A ; [.1ED8.0020.0008][.1ED8.0020.0002] # -0053 0073 005A ; [.1ED8.0020.0008][.1ED8.0020.0007][.0000.0000.0002] # -0053 0053 007A ; [.1ED8.0020.0008][.1ED8.0020.0007][.0000.0000.0008] # -0053 0053 005A ; [.1ED8.0020.0008][.1ED8.0020.0008] # -0074 0074 0079 ; [.1EFC.0020.0002][.1EFC.0020.0002] # -0074 0074 0059 ; [.1EFC.0020.0002][.1EFC.0020.0007][.0000.0000.0002] # -0074 0054 0079 ; [.1EFC.0020.0002][.1EFC.0020.0007][.0000.0000.0008] # -0074 0054 0059 ; [.1EFC.0020.0002][.1EFC.0020.0008] # -0054 0074 0079 ; [.1EFC.0020.0008][.1EFC.0020.0002] # -0054 0074 0059 ; [.1EFC.0020.0008][.1EFC.0020.0007][.0000.0000.0002] # -0054 0054 0079 ; [.1EFC.0020.0008][.1EFC.0020.0007][.0000.0000.0008] # -0054 0054 0059 ; [.1EFC.0020.0008][.1EFC.0020.0008] # -007A 007A 0073 ; [.1F88.0020.0002][.1F88.0020.0002] # -007A 007A 0053 ; [.1F88.0020.0002][.1F88.0020.0007][.0000.0000.0002] # -007A 005A 0073 ; [.1F88.0020.0002][.1F88.0020.0007][.0000.0000.0008] # -007A 005A 0053 ; [.1F88.0020.0002][.1F88.0020.0008] # -005A 007A 0073 ; [.1F88.0020.0008][.1F88.0020.0002] # -005A 007A 0053 ; [.1F88.0020.0008][.1F88.0020.0007][.0000.0000.0002] # -005A 005A 0073 ; [.1F88.0020.0008][.1F88.0020.0007][.0000.0000.0008] # -005A 005A 0053 ; [.1F88.0020.0008][.1F88.0020.0008] # + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0063 0073 ; [.1FD7.0020.0002] # +0063 0053 ; [.1FD7.0020.0007][.0000.0000.0002] # +0043 0073 ; [.1FD7.0020.0007][.0000.0000.0008] # +0043 0053 ; [.1FD7.0020.0008] # +0064 007A ; [.1FEC.0020.0002] # +0064 005A ; [.1FEC.0020.0007][.0000.0000.0002] # +0044 007A ; [.1FEC.0020.0007][.0000.0000.0008] # +0044 005A ; [.1FEC.0020.0008] # +0064 007A 0073 ; [.1FED.0020.0002] # +0064 007A 0053 ; [.1FED.0020.0007][.0000.0000.0002][.0000.0000.0002] # +0064 005A 0073 ; [.1FED.0020.0007][.0000.0000.0002][.0000.0000.0007] # +0064 005A 0053 ; [.1FED.0020.0007][.0000.0000.0002][.0000.0000.0008] # +0044 007A 0073 ; [.1FED.0020.0007][.0000.0000.0008][.0000.0000.0002] # +0044 007A 0053 ; [.1FED.0020.0007][.0000.0000.0008][.0000.0000.0007] # +0044 005A 0073 ; [.1FED.0020.0007][.0000.0000.0008][.0000.0000.0008] # +0044 005A 0053 ; [.1FED.0020.0008] # +0067 0079 ; [.2052.0020.0002] # +0067 0059 ; [.2052.0020.0007][.0000.0000.0002] # +0047 0079 ; [.2052.0020.0007][.0000.0000.0008] # +0047 0059 ; [.2052.0020.0008] # +006C 0079 ; [.20D7.0020.0002] # +006C 0059 ; [.20D7.0020.0007][.0000.0000.0002] # +004C 0079 ; [.20D7.0020.0007][.0000.0000.0008] # +004C 0059 ; [.20D7.0020.0008] # +006E 0079 ; [.2119.0020.0002] # +006E 0059 ; [.2119.0020.0007][.0000.0000.0002] # +004E 0079 ; [.2119.0020.0007][.0000.0000.0008] # +004E 0059 ; [.2119.0020.0008] # +0073 007A ; [.21D3.0020.0002] # +0073 005A ; [.21D3.0020.0007][.0000.0000.0002] # +0053 007A ; [.21D3.0020.0007][.0000.0000.0008] # +0053 005A ; [.21D3.0020.0008] # +0074 0079 ; [.21F8.0020.0002] # +0074 0059 ; [.21F8.0020.0007][.0000.0000.0002] # +0054 0079 ; [.21F8.0020.0007][.0000.0000.0008] # +0054 0059 ; [.21F8.0020.0008] # +007A 0073 ; [.2287.0020.0002] # +007A 0053 ; [.2287.0020.0007][.0000.0000.0002] # +005A 0073 ; [.2287.0020.0007][.0000.0000.0008] # +005A 0053 ; [.2287.0020.0008] # +00F6 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.213D.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.213D.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +0151 ; [.213D.0021.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +006F 030B ; [.213D.0021.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +0150 ; [.213D.0021.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +004F 030B ; [.213D.0021.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +00FC ; [.2218.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2218.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2218.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2218.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.2218.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2218.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.2218.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2218.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.2218.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2218.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.2218.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2218.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0171 ; [.2218.0021.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0075 030B ; [.2218.0021.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0170 ; [.2218.0021.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0055 030B ; [.2218.0021.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0063 0063 0073 ; [.1FD7.0020.0002][.1FD7.0020.0002] # +0063 0063 0053 ; [.1FD7.0020.0002][.1FD7.0020.0007][.0000.0000.0002] # +0063 0043 0073 ; [.1FD7.0020.0002][.1FD7.0020.0007][.0000.0000.0008] # +0063 0043 0053 ; [.1FD7.0020.0002][.1FD7.0020.0008] # +0043 0063 0073 ; [.1FD7.0020.0008][.1FD7.0020.0002] # +0043 0063 0053 ; [.1FD7.0020.0008][.1FD7.0020.0007][.0000.0000.0002] # +0043 0043 0073 ; [.1FD7.0020.0008][.1FD7.0020.0007][.0000.0000.0008] # +0043 0043 0053 ; [.1FD7.0020.0008][.1FD7.0020.0008] # +0064 0064 007A ; [.1FEC.0020.0002][.1FEC.0020.0002] # +0064 0064 005A ; [.1FEC.0020.0002][.1FEC.0020.0007][.0000.0000.0002] # +0064 0044 007A ; [.1FEC.0020.0002][.1FEC.0020.0007][.0000.0000.0008] # +0064 0044 005A ; [.1FEC.0020.0002][.1FEC.0020.0008] # +0044 0064 007A ; [.1FEC.0020.0008][.1FEC.0020.0002] # +0044 0064 005A ; [.1FEC.0020.0008][.1FEC.0020.0007][.0000.0000.0002] # +0044 0044 007A ; [.1FEC.0020.0008][.1FEC.0020.0007][.0000.0000.0008] # +0044 0044 005A ; [.1FEC.0020.0008][.1FEC.0020.0008] # +0064 0064 007A 0073 ; [.1FED.0020.0002][.1FED.0020.0002] # +0064 0064 007A 0053 ; [.1FED.0020.0002][.1FED.0020.0007][.0000.0000.0002][.0000.0000.0002] # +0064 0064 005A 0073 ; [.1FED.0020.0002][.1FED.0020.0007][.0000.0000.0002][.0000.0000.0007] # +0064 0064 005A 0053 ; [.1FED.0020.0002][.1FED.0020.0007][.0000.0000.0002][.0000.0000.0008] # +0064 0044 007A 0073 ; [.1FED.0020.0002][.1FED.0020.0007][.0000.0000.0008][.0000.0000.0002] # +0064 0044 007A 0053 ; [.1FED.0020.0002][.1FED.0020.0007][.0000.0000.0008][.0000.0000.0007] # +0064 0044 005A 0073 ; [.1FED.0020.0002][.1FED.0020.0007][.0000.0000.0008][.0000.0000.0008] # +0064 0044 005A 0053 ; [.1FED.0020.0002][.1FED.0020.0008] # +0044 0064 007A 0073 ; [.1FED.0020.0008][.1FED.0020.0002] # +0044 0064 007A 0053 ; [.1FED.0020.0008][.1FED.0020.0007][.0000.0000.0002][.0000.0000.0002] # +0044 0064 005A 0073 ; [.1FED.0020.0008][.1FED.0020.0007][.0000.0000.0002][.0000.0000.0007] # +0044 0064 005A 0053 ; [.1FED.0020.0008][.1FED.0020.0007][.0000.0000.0002][.0000.0000.0008] # +0044 0044 007A 0073 ; [.1FED.0020.0008][.1FED.0020.0007][.0000.0000.0008][.0000.0000.0002] # +0044 0044 007A 0053 ; [.1FED.0020.0008][.1FED.0020.0007][.0000.0000.0008][.0000.0000.0007] # +0044 0044 005A 0073 ; [.1FED.0020.0008][.1FED.0020.0007][.0000.0000.0008][.0000.0000.0008] # +0044 0044 005A 0053 ; [.1FED.0020.0008][.1FED.0020.0008] # +0067 0067 0079 ; [.2052.0020.0002][.2052.0020.0002] # +0067 0067 0059 ; [.2052.0020.0002][.2052.0020.0007][.0000.0000.0002] # +0067 0047 0079 ; [.2052.0020.0002][.2052.0020.0007][.0000.0000.0008] # +0067 0047 0059 ; [.2052.0020.0002][.2052.0020.0008] # +0047 0067 0079 ; [.2052.0020.0008][.2052.0020.0002] # +0047 0067 0059 ; [.2052.0020.0008][.2052.0020.0007][.0000.0000.0002] # +0047 0047 0079 ; [.2052.0020.0008][.2052.0020.0007][.0000.0000.0008] # +0047 0047 0059 ; [.2052.0020.0008][.2052.0020.0008] # +006C 006C 0079 ; [.20D7.0020.0002][.20D7.0020.0002] # +006C 006C 0059 ; [.20D7.0020.0002][.20D7.0020.0007][.0000.0000.0002] # +006C 004C 0079 ; [.20D7.0020.0002][.20D7.0020.0007][.0000.0000.0008] # +006C 004C 0059 ; [.20D7.0020.0002][.20D7.0020.0008] # +004C 006C 0079 ; [.20D7.0020.0008][.20D7.0020.0002] # +004C 006C 0059 ; [.20D7.0020.0008][.20D7.0020.0007][.0000.0000.0002] # +004C 004C 0079 ; [.20D7.0020.0008][.20D7.0020.0007][.0000.0000.0008] # +004C 004C 0059 ; [.20D7.0020.0008][.20D7.0020.0008] # +006E 006E 0079 ; [.2119.0020.0002][.2119.0020.0002] # +006E 006E 0059 ; [.2119.0020.0002][.2119.0020.0007][.0000.0000.0002] # +006E 004E 0079 ; [.2119.0020.0002][.2119.0020.0007][.0000.0000.0008] # +006E 004E 0059 ; [.2119.0020.0002][.2119.0020.0008] # +004E 006E 0079 ; [.2119.0020.0008][.2119.0020.0002] # +004E 006E 0059 ; [.2119.0020.0008][.2119.0020.0007][.0000.0000.0002] # +004E 004E 0079 ; [.2119.0020.0008][.2119.0020.0007][.0000.0000.0008] # +004E 004E 0059 ; [.2119.0020.0008][.2119.0020.0008] # +0073 0073 007A ; [.21D3.0020.0002][.21D3.0020.0002] # +0073 0073 005A ; [.21D3.0020.0002][.21D3.0020.0007][.0000.0000.0002] # +0073 0053 007A ; [.21D3.0020.0002][.21D3.0020.0007][.0000.0000.0008] # +0073 0053 005A ; [.21D3.0020.0002][.21D3.0020.0008] # +0053 0073 007A ; [.21D3.0020.0008][.21D3.0020.0002] # +0053 0073 005A ; [.21D3.0020.0008][.21D3.0020.0007][.0000.0000.0002] # +0053 0053 007A ; [.21D3.0020.0008][.21D3.0020.0007][.0000.0000.0008] # +0053 0053 005A ; [.21D3.0020.0008][.21D3.0020.0008] # +0074 0074 0079 ; [.21F8.0020.0002][.21F8.0020.0002] # +0074 0074 0059 ; [.21F8.0020.0002][.21F8.0020.0007][.0000.0000.0002] # +0074 0054 0079 ; [.21F8.0020.0002][.21F8.0020.0007][.0000.0000.0008] # +0074 0054 0059 ; [.21F8.0020.0002][.21F8.0020.0008] # +0054 0074 0079 ; [.21F8.0020.0008][.21F8.0020.0002] # +0054 0074 0059 ; [.21F8.0020.0008][.21F8.0020.0007][.0000.0000.0002] # +0054 0054 0079 ; [.21F8.0020.0008][.21F8.0020.0007][.0000.0000.0008] # +0054 0054 0059 ; [.21F8.0020.0008][.21F8.0020.0008] # +007A 007A 0073 ; [.2287.0020.0002][.2287.0020.0002] # +007A 007A 0053 ; [.2287.0020.0002][.2287.0020.0007][.0000.0000.0002] # +007A 005A 0073 ; [.2287.0020.0002][.2287.0020.0007][.0000.0000.0008] # +007A 005A 0053 ; [.2287.0020.0002][.2287.0020.0008] # +005A 007A 0073 ; [.2287.0020.0008][.2287.0020.0002] # +005A 007A 0053 ; [.2287.0020.0008][.2287.0020.0007][.0000.0000.0002] # +005A 005A 0073 ; [.2287.0020.0008][.2287.0020.0007][.0000.0000.0008] # +005A 005A 0053 ; [.2287.0020.0008][.2287.0020.0008] # ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/hy.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/hy.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/hy.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/hy.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,9 +1,9 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0587 ; [.2319.0020.0002][.FFF1.0000.0000] # ARMENIAN SMALL LIGATURE ECH YIWN -0584 ; [.2319.0020.0002][.FFF0.0000.0000] # ARMENIAN SMALL LETTER KEH -0535 0582 ; [.2319.0020.0008][.FFF1.0000.0000] # -0554 ; [.2319.0020.0008][.FFF0.0000.0000] # ARMENIAN CAPITAL LETTER KEH + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0587 ; [.261A.0020.0002][.FFF1.0000.0000] # ARMENIAN SMALL LIGATURE ECH YIWN +0584 ; [.261A.0020.0002][.FFF0.0000.0000] # ARMENIAN SMALL LETTER KEH +0535 0582 ; [.261A.0020.0008][.FFF1.0000.0000] # +0554 ; [.261A.0020.0008][.FFF0.0000.0000] # ARMENIAN CAPITAL LETTER KEH ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ig.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ig.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ig.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ig.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,54 +1,54 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0063 0068 ; [.1CC7.0020.0002] # -0043 0068 ; [.1CC7.0020.0007] # -0043 0048 ; [.1CC7.0020.0008] # -0067 0062 ; [.1D5B.0020.0002] # -0047 0062 ; [.1D5B.0020.0007] # -0047 0042 ; [.1D5B.0020.0008] # -0067 0068 ; [.1D5C.0020.0002] # -0047 0068 ; [.1D5C.0020.0007] # -0047 0048 ; [.1D5C.0020.0008] # -0067 0077 ; [.1D5D.0020.0002] # -0047 0077 ; [.1D5D.0020.0007] # -0047 0057 ; [.1D5D.0020.0008] # -1ECB ; [.1D99.0020.0002] # LATIN SMALL LETTER I WITH DOT BELOW -0069 0323 ; [.1D99.0020.0002] # LATIN SMALL LETTER I WITH DOT BELOW -1ECA ; [.1D99.0020.0008] # LATIN CAPITAL LETTER I WITH DOT BELOW -0049 0323 ; [.1D99.0020.0008] # LATIN CAPITAL LETTER I WITH DOT BELOW -006B 0070 ; [.1DCC.0020.0002] # -004B 0070 ; [.1DCC.0020.0007] # -004B 0050 ; [.1DCC.0020.0008] # -006B 0077 ; [.1DCD.0020.0002] # -004B 0077 ; [.1DCD.0020.0007] # -004B 0057 ; [.1DCD.0020.0008] # -1E45 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH DOT ABOVE -006E 0307 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH DOT ABOVE -1E44 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH DOT ABOVE -004E 0307 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH DOT ABOVE -006E 0077 ; [.1E21.0020.0002] # -004E 0077 ; [.1E21.0020.0007] # -004E 0057 ; [.1E21.0020.0008] # -006E 0079 ; [.1E22.0020.0002] # -004E 0079 ; [.1E22.0020.0007] # -004E 0059 ; [.1E22.0020.0008] # -1ECD ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DOT BELOW -006F 0323 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DOT BELOW -1ECC ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DOT BELOW -004F 0323 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DOT BELOW -1ED9 ; [.1E44.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1ED8 ; [.1E44.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1EE3 ; [.1E44.0020.0002][.0000.003F.0002] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW -1EE2 ; [.1E44.0020.0008][.0000.003F.0002] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW -0073 0068 ; [.1ED8.0020.0002] # -0053 0068 ; [.1ED8.0020.0007] # -0053 0048 ; [.1ED8.0020.0008] # -1EE5 ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH DOT BELOW -0075 0323 ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH DOT BELOW -1EE4 ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH DOT BELOW -0055 0323 ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH DOT BELOW -1EF1 ; [.1F1C.0020.0002][.0000.003F.0002] # LATIN SMALL LETTER U WITH HORN AND DOT BELOW -1EF0 ; [.1F1C.0020.0008][.0000.003F.0002] # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0063 0068 ; [.1FBD.0020.0002] # +0043 0068 ; [.1FBD.0020.0007] # +0043 0048 ; [.1FBD.0020.0008] # +0067 0062 ; [.2052.0020.0002] # +0047 0062 ; [.2052.0020.0007] # +0047 0042 ; [.2052.0020.0008] # +0067 0068 ; [.2053.0020.0002] # +0047 0068 ; [.2053.0020.0007] # +0047 0048 ; [.2053.0020.0008] # +0067 0077 ; [.2054.0020.0002] # +0047 0077 ; [.2054.0020.0007] # +0047 0057 ; [.2054.0020.0008] # +1ECB ; [.2091.0020.0002] # LATIN SMALL LETTER I WITH DOT BELOW +0069 0323 ; [.2091.0020.0002] # LATIN SMALL LETTER I WITH DOT BELOW +1ECA ; [.2091.0020.0008] # LATIN CAPITAL LETTER I WITH DOT BELOW +0049 0323 ; [.2091.0020.0008] # LATIN CAPITAL LETTER I WITH DOT BELOW +006B 0070 ; [.20C5.0020.0002] # +004B 0070 ; [.20C5.0020.0007] # +004B 0050 ; [.20C5.0020.0008] # +006B 0077 ; [.20C6.0020.0002] # +004B 0077 ; [.20C6.0020.0007] # +004B 0057 ; [.20C6.0020.0008] # +1E45 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH DOT ABOVE +006E 0307 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH DOT ABOVE +1E44 ; [.2119.0020.0008] # LATIN CAPITAL LETTER N WITH DOT ABOVE +004E 0307 ; [.2119.0020.0008] # LATIN CAPITAL LETTER N WITH DOT ABOVE +006E 0077 ; [.211A.0020.0002] # +004E 0077 ; [.211A.0020.0007] # +004E 0057 ; [.211A.0020.0008] # +006E 0079 ; [.211B.0020.0002] # +004E 0079 ; [.211B.0020.0007] # +004E 0059 ; [.211B.0020.0008] # +1ECD ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH DOT BELOW +006F 0323 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH DOT BELOW +1ECC ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH DOT BELOW +004F 0323 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH DOT BELOW +1ED9 ; [.213D.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +1ED8 ; [.213D.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +1EE3 ; [.213D.0020.0002][.0000.003F.0002] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW +1EE2 ; [.213D.0020.0008][.0000.003F.0002] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW +0073 0068 ; [.21D3.0020.0002] # +0053 0068 ; [.21D3.0020.0007] # +0053 0048 ; [.21D3.0020.0008] # +1EE5 ; [.2218.0020.0002] # LATIN SMALL LETTER U WITH DOT BELOW +0075 0323 ; [.2218.0020.0002] # LATIN SMALL LETTER U WITH DOT BELOW +1EE4 ; [.2218.0020.0008] # LATIN CAPITAL LETTER U WITH DOT BELOW +0055 0323 ; [.2218.0020.0008] # LATIN CAPITAL LETTER U WITH DOT BELOW +1EF1 ; [.2218.0020.0002][.0000.003F.0002] # LATIN SMALL LETTER U WITH HORN AND DOT BELOW +1EF0 ; [.2218.0020.0008][.0000.003F.0002] # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/is.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/is.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/is.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/is.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,81 +1,81 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -00E1 ; [.1CC5.0020.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0301 ; [.1CC5.0020.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0341 ; [.1CC5.0020.0002] # LATIN SMALL LETTER A WITH ACUTE -00C1 ; [.1CC5.0020.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0301 ; [.1CC5.0020.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0341 ; [.1CC5.0020.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0111 ; [.1CF5.0021.0002] # LATIN SMALL LETTER D WITH STROKE -0064 0335 ; [.1CF5.0021.0002] # LATIN SMALL LETTER D WITH STROKE -0110 ; [.1CF5.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE -0044 0335 ; [.1CF5.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE -00F0 ; [.1CF6.0020.0002] # LATIN SMALL LETTER ETH -1DD9 ; [.1CF6.0020.0002] # COMBINING LATIN SMALL LETTER ETH -00D0 ; [.1CF6.0020.0008] # LATIN CAPITAL LETTER ETH -00E9 ; [.1D4A.0020.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0301 ; [.1D4A.0020.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0341 ; [.1D4A.0020.0002] # LATIN SMALL LETTER E WITH ACUTE -00C9 ; [.1D4A.0020.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0301 ; [.1D4A.0020.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0341 ; [.1D4A.0020.0008] # LATIN CAPITAL LETTER E WITH ACUTE -00ED ; [.1DB1.0020.0002] # LATIN SMALL LETTER I WITH ACUTE -0069 0301 ; [.1DB1.0020.0002] # LATIN SMALL LETTER I WITH ACUTE -0069 0341 ; [.1DB1.0020.0002] # LATIN SMALL LETTER I WITH ACUTE -00CD ; [.1DB1.0020.0008] # LATIN CAPITAL LETTER I WITH ACUTE -0049 0301 ; [.1DB1.0020.0008] # LATIN CAPITAL LETTER I WITH ACUTE -0049 0341 ; [.1DB1.0020.0008] # LATIN CAPITAL LETTER I WITH ACUTE -00F3 ; [.1E71.0020.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0301 ; [.1E71.0020.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0341 ; [.1E71.0020.0002] # LATIN SMALL LETTER O WITH ACUTE -00D3 ; [.1E71.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0301 ; [.1E71.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0341 ; [.1E71.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE -00FA ; [.1F48.0020.0002] # LATIN SMALL LETTER U WITH ACUTE -0075 0301 ; [.1F48.0020.0002] # LATIN SMALL LETTER U WITH ACUTE -0075 0341 ; [.1F48.0020.0002] # LATIN SMALL LETTER U WITH ACUTE -00DA ; [.1F48.0020.0008] # LATIN CAPITAL LETTER U WITH ACUTE -0055 0301 ; [.1F48.0020.0008] # LATIN CAPITAL LETTER U WITH ACUTE -0055 0341 ; [.1F48.0020.0008] # LATIN CAPITAL LETTER U WITH ACUTE -00FD ; [.1F86.0020.0002] # LATIN SMALL LETTER Y WITH ACUTE -0079 0301 ; [.1F86.0020.0002] # LATIN SMALL LETTER Y WITH ACUTE -0079 0341 ; [.1F86.0020.0002] # LATIN SMALL LETTER Y WITH ACUTE -00DD ; [.1F86.0020.0008] # LATIN CAPITAL LETTER Y WITH ACUTE -0059 0301 ; [.1F86.0020.0008] # LATIN CAPITAL LETTER Y WITH ACUTE -0059 0341 ; [.1F86.0020.0008] # LATIN CAPITAL LETTER Y WITH ACUTE -00E6 ; [.1FFC.0020.0002] # LATIN SMALL LETTER AE -1DD4 ; [.1FFC.0020.0002] # COMBINING LATIN SMALL LETTER AE -00C6 ; [.1FFC.0020.0008] # LATIN CAPITAL LETTER AE -1D2D ; [.1FFC.0020.0014] # MODIFIER LETTER CAPITAL AE -01FD ; [.1FFC.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE -01FC ; [.1FFC.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE -01E3 ; [.1FFC.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON -01E2 ; [.1FFC.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON -00E4 ; [.1FFC.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1FFC.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1FFC.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1FFC.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1FFC.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1FFC.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -00F6 ; [.1FFD.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1FFD.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1FFD.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1FFD.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -00F8 ; [.1FFD.0021.0002] # LATIN SMALL LETTER O WITH STROKE -006F 0338 ; [.1FFD.0021.0002] # LATIN SMALL LETTER O WITH STROKE -00D8 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE -004F 0338 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE -01FF ; [.1FFD.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE -01FE ; [.1FFD.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE -00E5 ; [.1FFE.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -0061 030A ; [.1FFE.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -00C5 ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -0041 030A ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -212B ; [.1FFE.0020.0008] # ANGSTROM SIGN -01FB ; [.1FFE.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE -01FA ; [.1FFE.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +00E1 ; [.1FBB.0020.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0301 ; [.1FBB.0020.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0341 ; [.1FBB.0020.0002] # LATIN SMALL LETTER A WITH ACUTE +00C1 ; [.1FBB.0020.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0301 ; [.1FBB.0020.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0341 ; [.1FBB.0020.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0111 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE +0064 0335 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE +0110 ; [.1FEB.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE +0044 0335 ; [.1FEB.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE +00F0 ; [.1FEC.0020.0002] # LATIN SMALL LETTER ETH +1DD9 ; [.1FEC.0020.0002] # COMBINING LATIN SMALL LETTER ETH +00D0 ; [.1FEC.0020.0008] # LATIN CAPITAL LETTER ETH +00E9 ; [.2041.0020.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0301 ; [.2041.0020.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0341 ; [.2041.0020.0002] # LATIN SMALL LETTER E WITH ACUTE +00C9 ; [.2041.0020.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0301 ; [.2041.0020.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0341 ; [.2041.0020.0008] # LATIN CAPITAL LETTER E WITH ACUTE +00ED ; [.20AA.0020.0002] # LATIN SMALL LETTER I WITH ACUTE +0069 0301 ; [.20AA.0020.0002] # LATIN SMALL LETTER I WITH ACUTE +0069 0341 ; [.20AA.0020.0002] # LATIN SMALL LETTER I WITH ACUTE +00CD ; [.20AA.0020.0008] # LATIN CAPITAL LETTER I WITH ACUTE +0049 0301 ; [.20AA.0020.0008] # LATIN CAPITAL LETTER I WITH ACUTE +0049 0341 ; [.20AA.0020.0008] # LATIN CAPITAL LETTER I WITH ACUTE +00F3 ; [.216A.0020.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0301 ; [.216A.0020.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0341 ; [.216A.0020.0002] # LATIN SMALL LETTER O WITH ACUTE +00D3 ; [.216A.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0301 ; [.216A.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0341 ; [.216A.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE +00FA ; [.2246.0020.0002] # LATIN SMALL LETTER U WITH ACUTE +0075 0301 ; [.2246.0020.0002] # LATIN SMALL LETTER U WITH ACUTE +0075 0341 ; [.2246.0020.0002] # LATIN SMALL LETTER U WITH ACUTE +00DA ; [.2246.0020.0008] # LATIN CAPITAL LETTER U WITH ACUTE +0055 0301 ; [.2246.0020.0008] # LATIN CAPITAL LETTER U WITH ACUTE +0055 0341 ; [.2246.0020.0008] # LATIN CAPITAL LETTER U WITH ACUTE +00FD ; [.2285.0020.0002] # LATIN SMALL LETTER Y WITH ACUTE +0079 0301 ; [.2285.0020.0002] # LATIN SMALL LETTER Y WITH ACUTE +0079 0341 ; [.2285.0020.0002] # LATIN SMALL LETTER Y WITH ACUTE +00DD ; [.2285.0020.0008] # LATIN CAPITAL LETTER Y WITH ACUTE +0059 0301 ; [.2285.0020.0008] # LATIN CAPITAL LETTER Y WITH ACUTE +0059 0341 ; [.2285.0020.0008] # LATIN CAPITAL LETTER Y WITH ACUTE +00E6 ; [.22FB.0020.0002] # LATIN SMALL LETTER AE +1DD4 ; [.22FB.0020.0002] # COMBINING LATIN SMALL LETTER AE +00C6 ; [.22FB.0020.0008] # LATIN CAPITAL LETTER AE +1D2D ; [.22FB.0020.0014] # MODIFIER LETTER CAPITAL AE +01FD ; [.22FB.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE +01FC ; [.22FB.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE +01E3 ; [.22FB.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON +01E2 ; [.22FB.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON +00E4 ; [.22FB.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.22FB.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.22FB.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.22FB.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.22FB.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.22FB.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +00F6 ; [.22FC.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.22FC.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.22FC.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.22FC.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +00F8 ; [.22FC.0021.0002] # LATIN SMALL LETTER O WITH STROKE +006F 0338 ; [.22FC.0021.0002] # LATIN SMALL LETTER O WITH STROKE +00D8 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE +004F 0338 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE +01FF ; [.22FC.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE +01FE ; [.22FC.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +00E5 ; [.22FD.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +0061 030A ; [.22FD.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +00C5 ; [.22FD.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +0041 030A ; [.22FD.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +212B ; [.22FD.0020.0008] # ANGSTROM SIGN +01FB ; [.22FD.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +01FA ; [.22FD.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ja.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ja.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ja.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ja.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,1337 +1,1337 @@ use Unicode::Collate::CJK::JISX0208; +{ - locale_version => 1.27, + locale_version => 1.29, overrideCJK => \&Unicode::Collate::CJK::JISX0208::weightJISX0208, - entry => <<'ENTRY', # for DUCET v10.0.0 -30A1 ; [.3E71.0020.000F.0002] # KATAKANA LETTER SMALL A -30A2 ; [.3E71.0020.0011.0002] # KATAKANA LETTER A -30A3 ; [.3E72.0020.000F.0002] # KATAKANA LETTER SMALL I -30A4 ; [.3E72.0020.0011.0002] # KATAKANA LETTER I -30A5 ; [.3E73.0020.000F.0002] # KATAKANA LETTER SMALL U -30A6 ; [.3E73.0020.0011.0002] # KATAKANA LETTER U -30A7 ; [.3E75.0020.000F.0002] # KATAKANA LETTER SMALL E -30A8 ; [.3E75.0020.0011.0002] # KATAKANA LETTER E -30A9 ; [.3E76.0020.000F.0002] # KATAKANA LETTER SMALL O -30AA ; [.3E76.0020.0011.0002] # KATAKANA LETTER O -30AB ; [.3E77.0020.0011.0002] # KATAKANA LETTER KA -30AC ; [.3E77.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER GA -30AD ; [.3E78.0020.0011.0002] # KATAKANA LETTER KI -30AE ; [.3E78.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER GI -30AF ; [.3E79.0020.0011.0002] # KATAKANA LETTER KU -30B0 ; [.3E79.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER GU -30B1 ; [.3E7A.0020.0011.0002] # KATAKANA LETTER KE -30B2 ; [.3E7A.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER GE -30B3 ; [.3E7B.0020.0011.0002] # KATAKANA LETTER KO -30B4 ; [.3E7B.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER GO -30B5 ; [.3E7C.0020.0011.0002] # KATAKANA LETTER SA -30B6 ; [.3E7C.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER ZA -30B7 ; [.3E7D.0020.0011.0002] # KATAKANA LETTER SI -30B8 ; [.3E7D.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER ZI -30B9 ; [.3E7E.0020.0011.0002] # KATAKANA LETTER SU -30BA ; [.3E7E.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER ZU -30BB ; [.3E7F.0020.0011.0002] # KATAKANA LETTER SE -30BC ; [.3E7F.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER ZE -30BD ; [.3E80.0020.0011.0002] # KATAKANA LETTER SO -30BE ; [.3E80.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER ZO -30BF ; [.3E81.0020.0011.0002] # KATAKANA LETTER TA -30C0 ; [.3E81.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER DA -30C1 ; [.3E82.0020.0011.0002] # KATAKANA LETTER TI -30C2 ; [.3E82.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER DI -30C3 ; [.3E83.0020.000F.0002] # KATAKANA LETTER SMALL TU -30C4 ; [.3E83.0020.0011.0002] # KATAKANA LETTER TU -30C5 ; [.3E83.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER DU -30C6 ; [.3E84.0020.0011.0002] # KATAKANA LETTER TE -30C7 ; [.3E84.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER DE -30C8 ; [.3E85.0020.0011.0002] # KATAKANA LETTER TO -30C9 ; [.3E85.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER DO -30CA ; [.3E86.0020.0011.0002] # KATAKANA LETTER NA -30CB ; [.3E87.0020.0011.0002] # KATAKANA LETTER NI -30CC ; [.3E88.0020.0011.0002] # KATAKANA LETTER NU -30CD ; [.3E89.0020.0011.0002] # KATAKANA LETTER NE -30CE ; [.3E8A.0020.0011.0002] # KATAKANA LETTER NO -30CF ; [.3E8B.0020.0011.0002] # KATAKANA LETTER HA -30D0 ; [.3E8B.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER BA -30D1 ; [.3E8B.0020.0011.0002][.0000.0038.0002] # KATAKANA LETTER PA -30D2 ; [.3E8C.0020.0011.0002] # KATAKANA LETTER HI -30D3 ; [.3E8C.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER BI -30D4 ; [.3E8C.0020.0011.0002][.0000.0038.0002] # KATAKANA LETTER PI -30D5 ; [.3E8D.0020.0011.0002] # KATAKANA LETTER HU -30D6 ; [.3E8D.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER BU -30D7 ; [.3E8D.0020.0011.0002][.0000.0038.0002] # KATAKANA LETTER PU -30D8 ; [.3E8E.0020.0011.0002] # KATAKANA LETTER HE -30D9 ; [.3E8E.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER BE -30DA ; [.3E8E.0020.0011.0002][.0000.0038.0002] # KATAKANA LETTER PE -30DB ; [.3E8F.0020.0011.0002] # KATAKANA LETTER HO -30DC ; [.3E8F.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER BO -30DD ; [.3E8F.0020.0011.0002][.0000.0038.0002] # KATAKANA LETTER PO -30DE ; [.3E90.0020.0011.0002] # KATAKANA LETTER MA -30DF ; [.3E91.0020.0011.0002] # KATAKANA LETTER MI -30E0 ; [.3E92.0020.0011.0002] # KATAKANA LETTER MU -30E1 ; [.3E93.0020.0011.0002] # KATAKANA LETTER ME -30E2 ; [.3E94.0020.0011.0002] # KATAKANA LETTER MO -30E3 ; [.3E95.0020.000F.0002] # KATAKANA LETTER SMALL YA -30E4 ; [.3E95.0020.0011.0002] # KATAKANA LETTER YA -30E5 ; [.3E96.0020.000F.0002] # KATAKANA LETTER SMALL YU -30E6 ; [.3E96.0020.0011.0002] # KATAKANA LETTER YU -30E7 ; [.3E97.0020.000F.0002] # KATAKANA LETTER SMALL YO -30E8 ; [.3E97.0020.0011.0002] # KATAKANA LETTER YO -30E9 ; [.3E98.0020.0011.0002] # KATAKANA LETTER RA -30EA ; [.3E99.0020.0011.0002] # KATAKANA LETTER RI -30EB ; [.3E9A.0020.0011.0002] # KATAKANA LETTER RU -30EC ; [.3E9B.0020.0011.0002] # KATAKANA LETTER RE -30ED ; [.3E9C.0020.0011.0002] # KATAKANA LETTER RO -30EE ; [.3E9D.0020.000F.0002] # KATAKANA LETTER SMALL WA -30EF ; [.3E9D.0020.0011.0002] # KATAKANA LETTER WA -30F0 ; [.3E9E.0020.0011.0002] # KATAKANA LETTER WI -30F1 ; [.3E9F.0020.0011.0002] # KATAKANA LETTER WE -30F2 ; [.3EA0.0020.0011.0002] # KATAKANA LETTER WO -30F3 ; [.3EA1.0020.0011.0002] # KATAKANA LETTER N -30F4 ; [.3E73.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER VU -30F5 ; [.3E77.0020.000F.0002] # KATAKANA LETTER SMALL KA -30F6 ; [.3E7A.0020.000F.0002] # KATAKANA LETTER SMALL KE -30F7 ; [.3E9D.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER VA -30F8 ; [.3E9E.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER VI -30F9 ; [.3E9F.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER VE -30FA ; [.3EA0.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER VO -30FD ; [.1C74.0020.0002.0002] # KATAKANA ITERATION MARK -30FE ; [.1C74.0020.0002.0002][.0000.0037.0002] # KATAKANA VOICED ITERATION MARK -3041 ; [.3E71.0020.000F.0001] # HIRAGANA LETTER SMALL A -3042 ; [.3E71.0020.0011.0001] # HIRAGANA LETTER A -3043 ; [.3E72.0020.000F.0001] # HIRAGANA LETTER SMALL I -3044 ; [.3E72.0020.0011.0001] # HIRAGANA LETTER I -3045 ; [.3E73.0020.000F.0001] # HIRAGANA LETTER SMALL U -3046 ; [.3E73.0020.0011.0001] # HIRAGANA LETTER U -3047 ; [.3E75.0020.000F.0001] # HIRAGANA LETTER SMALL E -3048 ; [.3E75.0020.0011.0001] # HIRAGANA LETTER E -3049 ; [.3E76.0020.000F.0001] # HIRAGANA LETTER SMALL O -304A ; [.3E76.0020.0011.0001] # HIRAGANA LETTER O -304B ; [.3E77.0020.0011.0001] # HIRAGANA LETTER KA -304C ; [.3E77.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER GA -304D ; [.3E78.0020.0011.0001] # HIRAGANA LETTER KI -304E ; [.3E78.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER GI -304F ; [.3E79.0020.0011.0001] # HIRAGANA LETTER KU -3050 ; [.3E79.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER GU -3051 ; [.3E7A.0020.0011.0001] # HIRAGANA LETTER KE -3052 ; [.3E7A.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER GE -3053 ; [.3E7B.0020.0011.0001] # HIRAGANA LETTER KO -3054 ; [.3E7B.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER GO -3055 ; [.3E7C.0020.0011.0001] # HIRAGANA LETTER SA -3056 ; [.3E7C.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER ZA -3057 ; [.3E7D.0020.0011.0001] # HIRAGANA LETTER SI -3058 ; [.3E7D.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER ZI -3059 ; [.3E7E.0020.0011.0001] # HIRAGANA LETTER SU -305A ; [.3E7E.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER ZU -305B ; [.3E7F.0020.0011.0001] # HIRAGANA LETTER SE -305C ; [.3E7F.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER ZE -305D ; [.3E80.0020.0011.0001] # HIRAGANA LETTER SO -305E ; [.3E80.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER ZO -305F ; [.3E81.0020.0011.0001] # HIRAGANA LETTER TA -3060 ; [.3E81.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER DA -3061 ; [.3E82.0020.0011.0001] # HIRAGANA LETTER TI -3062 ; [.3E82.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER DI -3063 ; [.3E83.0020.000F.0001] # HIRAGANA LETTER SMALL TU -3064 ; [.3E83.0020.0011.0001] # HIRAGANA LETTER TU -3065 ; [.3E83.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER DU -3066 ; [.3E84.0020.0011.0001] # HIRAGANA LETTER TE -3067 ; [.3E84.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER DE -3068 ; [.3E85.0020.0011.0001] # HIRAGANA LETTER TO -3069 ; [.3E85.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER DO -306A ; [.3E86.0020.0011.0001] # HIRAGANA LETTER NA -306B ; [.3E87.0020.0011.0001] # HIRAGANA LETTER NI -306C ; [.3E88.0020.0011.0001] # HIRAGANA LETTER NU -306D ; [.3E89.0020.0011.0001] # HIRAGANA LETTER NE -306E ; [.3E8A.0020.0011.0001] # HIRAGANA LETTER NO -306F ; [.3E8B.0020.0011.0001] # HIRAGANA LETTER HA -3070 ; [.3E8B.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER BA -3071 ; [.3E8B.0020.0011.0001][.0000.0038.0002] # HIRAGANA LETTER PA -3072 ; [.3E8C.0020.0011.0001] # HIRAGANA LETTER HI -3073 ; [.3E8C.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER BI -3074 ; [.3E8C.0020.0011.0001][.0000.0038.0002] # HIRAGANA LETTER PI -3075 ; [.3E8D.0020.0011.0001] # HIRAGANA LETTER HU -3076 ; [.3E8D.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER BU -3077 ; [.3E8D.0020.0011.0001][.0000.0038.0002] # HIRAGANA LETTER PU -3078 ; [.3E8E.0020.0011.0001] # HIRAGANA LETTER HE -3079 ; [.3E8E.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER BE -307A ; [.3E8E.0020.0011.0001][.0000.0038.0002] # HIRAGANA LETTER PE -307B ; [.3E8F.0020.0011.0001] # HIRAGANA LETTER HO -307C ; [.3E8F.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER BO -307D ; [.3E8F.0020.0011.0001][.0000.0038.0002] # HIRAGANA LETTER PO -307E ; [.3E90.0020.0011.0001] # HIRAGANA LETTER MA -307F ; [.3E91.0020.0011.0001] # HIRAGANA LETTER MI -3080 ; [.3E92.0020.0011.0001] # HIRAGANA LETTER MU -3081 ; [.3E93.0020.0011.0001] # HIRAGANA LETTER ME -3082 ; [.3E94.0020.0011.0001] # HIRAGANA LETTER MO -3083 ; [.3E95.0020.000F.0001] # HIRAGANA LETTER SMALL YA -3084 ; [.3E95.0020.0011.0001] # HIRAGANA LETTER YA -3085 ; [.3E96.0020.000F.0001] # HIRAGANA LETTER SMALL YU -3086 ; [.3E96.0020.0011.0001] # HIRAGANA LETTER YU -3087 ; [.3E97.0020.000F.0001] # HIRAGANA LETTER SMALL YO -3088 ; [.3E97.0020.0011.0001] # HIRAGANA LETTER YO -3089 ; [.3E98.0020.0011.0001] # HIRAGANA LETTER RA -308A ; [.3E99.0020.0011.0001] # HIRAGANA LETTER RI -308B ; [.3E9A.0020.0011.0001] # HIRAGANA LETTER RU -308C ; [.3E9B.0020.0011.0001] # HIRAGANA LETTER RE -308D ; [.3E9C.0020.0011.0001] # HIRAGANA LETTER RO -308E ; [.3E9D.0020.000F.0001] # HIRAGANA LETTER SMALL WA -308F ; [.3E9D.0020.0011.0001] # HIRAGANA LETTER WA -3090 ; [.3E9E.0020.0011.0001] # HIRAGANA LETTER WI -3091 ; [.3E9F.0020.0011.0001] # HIRAGANA LETTER WE -3092 ; [.3EA0.0020.0011.0001] # HIRAGANA LETTER WO -3093 ; [.3EA1.0020.0011.0001] # HIRAGANA LETTER N -3094 ; [.3E73.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER VU -3095 ; [.3E77.0020.000F.0001] # HIRAGANA LETTER SMALL KA -3096 ; [.3E7A.0020.000F.0001] # HIRAGANA LETTER SMALL KE -309D ; [.1C74.0020.0002.0001] # HIRAGANA ITERATION MARK -309E ; [.1C74.0020.0002.0001][.0000.0037.0002] # HIRAGANA VOICED ITERATION MARK + entry => <<'ENTRY', # for DUCET v13.0.0 +30A1 ; [.42DA.0020.000F.0002] # KATAKANA LETTER SMALL A +30A2 ; [.42DA.0020.0011.0002] # KATAKANA LETTER A +30A3 ; [.42DB.0020.000F.0002] # KATAKANA LETTER SMALL I +30A4 ; [.42DB.0020.0011.0002] # KATAKANA LETTER I +30A5 ; [.42DC.0020.000F.0002] # KATAKANA LETTER SMALL U +30A6 ; [.42DC.0020.0011.0002] # KATAKANA LETTER U +30A7 ; [.42DE.0020.000F.0002] # KATAKANA LETTER SMALL E +30A8 ; [.42DE.0020.0011.0002] # KATAKANA LETTER E +30A9 ; [.42DF.0020.000F.0002] # KATAKANA LETTER SMALL O +30AA ; [.42DF.0020.0011.0002] # KATAKANA LETTER O +30AB ; [.42E0.0020.0011.0002] # KATAKANA LETTER KA +30AC ; [.42E0.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER GA +30AD ; [.42E1.0020.0011.0002] # KATAKANA LETTER KI +30AE ; [.42E1.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER GI +30AF ; [.42E2.0020.0011.0002] # KATAKANA LETTER KU +30B0 ; [.42E2.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER GU +30B1 ; [.42E3.0020.0011.0002] # KATAKANA LETTER KE +30B2 ; [.42E3.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER GE +30B3 ; [.42E4.0020.0011.0002] # KATAKANA LETTER KO +30B4 ; [.42E4.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER GO +30B5 ; [.42E5.0020.0011.0002] # KATAKANA LETTER SA +30B6 ; [.42E5.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER ZA +30B7 ; [.42E6.0020.0011.0002] # KATAKANA LETTER SI +30B8 ; [.42E6.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER ZI +30B9 ; [.42E7.0020.0011.0002] # KATAKANA LETTER SU +30BA ; [.42E7.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER ZU +30BB ; [.42E8.0020.0011.0002] # KATAKANA LETTER SE +30BC ; [.42E8.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER ZE +30BD ; [.42E9.0020.0011.0002] # KATAKANA LETTER SO +30BE ; [.42E9.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER ZO +30BF ; [.42EA.0020.0011.0002] # KATAKANA LETTER TA +30C0 ; [.42EA.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER DA +30C1 ; [.42EB.0020.0011.0002] # KATAKANA LETTER TI +30C2 ; [.42EB.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER DI +30C3 ; [.42EC.0020.000F.0002] # KATAKANA LETTER SMALL TU +30C4 ; [.42EC.0020.0011.0002] # KATAKANA LETTER TU +30C5 ; [.42EC.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER DU +30C6 ; [.42ED.0020.0011.0002] # KATAKANA LETTER TE +30C7 ; [.42ED.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER DE +30C8 ; [.42EE.0020.0011.0002] # KATAKANA LETTER TO +30C9 ; [.42EE.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER DO +30CA ; [.42EF.0020.0011.0002] # KATAKANA LETTER NA +30CB ; [.42F0.0020.0011.0002] # KATAKANA LETTER NI +30CC ; [.42F1.0020.0011.0002] # KATAKANA LETTER NU +30CD ; [.42F2.0020.0011.0002] # KATAKANA LETTER NE +30CE ; [.42F3.0020.0011.0002] # KATAKANA LETTER NO +30CF ; [.42F4.0020.0011.0002] # KATAKANA LETTER HA +30D0 ; [.42F4.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER BA +30D1 ; [.42F4.0020.0011.0002][.0000.0038.0002] # KATAKANA LETTER PA +30D2 ; [.42F5.0020.0011.0002] # KATAKANA LETTER HI +30D3 ; [.42F5.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER BI +30D4 ; [.42F5.0020.0011.0002][.0000.0038.0002] # KATAKANA LETTER PI +30D5 ; [.42F6.0020.0011.0002] # KATAKANA LETTER HU +30D6 ; [.42F6.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER BU +30D7 ; [.42F6.0020.0011.0002][.0000.0038.0002] # KATAKANA LETTER PU +30D8 ; [.42F7.0020.0011.0002] # KATAKANA LETTER HE +30D9 ; [.42F7.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER BE +30DA ; [.42F7.0020.0011.0002][.0000.0038.0002] # KATAKANA LETTER PE +30DB ; [.42F8.0020.0011.0002] # KATAKANA LETTER HO +30DC ; [.42F8.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER BO +30DD ; [.42F8.0020.0011.0002][.0000.0038.0002] # KATAKANA LETTER PO +30DE ; [.42F9.0020.0011.0002] # KATAKANA LETTER MA +30DF ; [.42FA.0020.0011.0002] # KATAKANA LETTER MI +30E0 ; [.42FB.0020.0011.0002] # KATAKANA LETTER MU +30E1 ; [.42FC.0020.0011.0002] # KATAKANA LETTER ME +30E2 ; [.42FD.0020.0011.0002] # KATAKANA LETTER MO +30E3 ; [.42FE.0020.000F.0002] # KATAKANA LETTER SMALL YA +30E4 ; [.42FE.0020.0011.0002] # KATAKANA LETTER YA +30E5 ; [.42FF.0020.000F.0002] # KATAKANA LETTER SMALL YU +30E6 ; [.42FF.0020.0011.0002] # KATAKANA LETTER YU +30E7 ; [.4300.0020.000F.0002] # KATAKANA LETTER SMALL YO +30E8 ; [.4300.0020.0011.0002] # KATAKANA LETTER YO +30E9 ; [.4301.0020.0011.0002] # KATAKANA LETTER RA +30EA ; [.4302.0020.0011.0002] # KATAKANA LETTER RI +30EB ; [.4303.0020.0011.0002] # KATAKANA LETTER RU +30EC ; [.4304.0020.0011.0002] # KATAKANA LETTER RE +30ED ; [.4305.0020.0011.0002] # KATAKANA LETTER RO +30EE ; [.4306.0020.000F.0002] # KATAKANA LETTER SMALL WA +30EF ; [.4306.0020.0011.0002] # KATAKANA LETTER WA +30F0 ; [.4307.0020.0011.0002] # KATAKANA LETTER WI +30F1 ; [.4308.0020.0011.0002] # KATAKANA LETTER WE +30F2 ; [.4309.0020.0011.0002] # KATAKANA LETTER WO +30F3 ; [.430A.0020.0011.0002] # KATAKANA LETTER N +30F4 ; [.42DC.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER VU +30F5 ; [.42E0.0020.000F.0002] # KATAKANA LETTER SMALL KA +30F6 ; [.42E3.0020.000F.0002] # KATAKANA LETTER SMALL KE +30F7 ; [.4306.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER VA +30F8 ; [.4307.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER VI +30F9 ; [.4308.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER VE +30FA ; [.4309.0020.0011.0002][.0000.0037.0002] # KATAKANA LETTER VO +30FD ; [.1F61.0020.0002.0002] # KATAKANA ITERATION MARK +30FE ; [.1F61.0020.0002.0002][.0000.0037.0002] # KATAKANA VOICED ITERATION MARK +3041 ; [.42DA.0020.000F.0001] # HIRAGANA LETTER SMALL A +3042 ; [.42DA.0020.0011.0001] # HIRAGANA LETTER A +3043 ; [.42DB.0020.000F.0001] # HIRAGANA LETTER SMALL I +3044 ; [.42DB.0020.0011.0001] # HIRAGANA LETTER I +3045 ; [.42DC.0020.000F.0001] # HIRAGANA LETTER SMALL U +3046 ; [.42DC.0020.0011.0001] # HIRAGANA LETTER U +3047 ; [.42DE.0020.000F.0001] # HIRAGANA LETTER SMALL E +3048 ; [.42DE.0020.0011.0001] # HIRAGANA LETTER E +3049 ; [.42DF.0020.000F.0001] # HIRAGANA LETTER SMALL O +304A ; [.42DF.0020.0011.0001] # HIRAGANA LETTER O +304B ; [.42E0.0020.0011.0001] # HIRAGANA LETTER KA +304C ; [.42E0.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER GA +304D ; [.42E1.0020.0011.0001] # HIRAGANA LETTER KI +304E ; [.42E1.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER GI +304F ; [.42E2.0020.0011.0001] # HIRAGANA LETTER KU +3050 ; [.42E2.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER GU +3051 ; [.42E3.0020.0011.0001] # HIRAGANA LETTER KE +3052 ; [.42E3.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER GE +3053 ; [.42E4.0020.0011.0001] # HIRAGANA LETTER KO +3054 ; [.42E4.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER GO +3055 ; [.42E5.0020.0011.0001] # HIRAGANA LETTER SA +3056 ; [.42E5.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER ZA +3057 ; [.42E6.0020.0011.0001] # HIRAGANA LETTER SI +3058 ; [.42E6.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER ZI +3059 ; [.42E7.0020.0011.0001] # HIRAGANA LETTER SU +305A ; [.42E7.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER ZU +305B ; [.42E8.0020.0011.0001] # HIRAGANA LETTER SE +305C ; [.42E8.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER ZE +305D ; [.42E9.0020.0011.0001] # HIRAGANA LETTER SO +305E ; [.42E9.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER ZO +305F ; [.42EA.0020.0011.0001] # HIRAGANA LETTER TA +3060 ; [.42EA.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER DA +3061 ; [.42EB.0020.0011.0001] # HIRAGANA LETTER TI +3062 ; [.42EB.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER DI +3063 ; [.42EC.0020.000F.0001] # HIRAGANA LETTER SMALL TU +3064 ; [.42EC.0020.0011.0001] # HIRAGANA LETTER TU +3065 ; [.42EC.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER DU +3066 ; [.42ED.0020.0011.0001] # HIRAGANA LETTER TE +3067 ; [.42ED.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER DE +3068 ; [.42EE.0020.0011.0001] # HIRAGANA LETTER TO +3069 ; [.42EE.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER DO +306A ; [.42EF.0020.0011.0001] # HIRAGANA LETTER NA +306B ; [.42F0.0020.0011.0001] # HIRAGANA LETTER NI +306C ; [.42F1.0020.0011.0001] # HIRAGANA LETTER NU +306D ; [.42F2.0020.0011.0001] # HIRAGANA LETTER NE +306E ; [.42F3.0020.0011.0001] # HIRAGANA LETTER NO +306F ; [.42F4.0020.0011.0001] # HIRAGANA LETTER HA +3070 ; [.42F4.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER BA +3071 ; [.42F4.0020.0011.0001][.0000.0038.0002] # HIRAGANA LETTER PA +3072 ; [.42F5.0020.0011.0001] # HIRAGANA LETTER HI +3073 ; [.42F5.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER BI +3074 ; [.42F5.0020.0011.0001][.0000.0038.0002] # HIRAGANA LETTER PI +3075 ; [.42F6.0020.0011.0001] # HIRAGANA LETTER HU +3076 ; [.42F6.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER BU +3077 ; [.42F6.0020.0011.0001][.0000.0038.0002] # HIRAGANA LETTER PU +3078 ; [.42F7.0020.0011.0001] # HIRAGANA LETTER HE +3079 ; [.42F7.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER BE +307A ; [.42F7.0020.0011.0001][.0000.0038.0002] # HIRAGANA LETTER PE +307B ; [.42F8.0020.0011.0001] # HIRAGANA LETTER HO +307C ; [.42F8.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER BO +307D ; [.42F8.0020.0011.0001][.0000.0038.0002] # HIRAGANA LETTER PO +307E ; [.42F9.0020.0011.0001] # HIRAGANA LETTER MA +307F ; [.42FA.0020.0011.0001] # HIRAGANA LETTER MI +3080 ; [.42FB.0020.0011.0001] # HIRAGANA LETTER MU +3081 ; [.42FC.0020.0011.0001] # HIRAGANA LETTER ME +3082 ; [.42FD.0020.0011.0001] # HIRAGANA LETTER MO +3083 ; [.42FE.0020.000F.0001] # HIRAGANA LETTER SMALL YA +3084 ; [.42FE.0020.0011.0001] # HIRAGANA LETTER YA +3085 ; [.42FF.0020.000F.0001] # HIRAGANA LETTER SMALL YU +3086 ; [.42FF.0020.0011.0001] # HIRAGANA LETTER YU +3087 ; [.4300.0020.000F.0001] # HIRAGANA LETTER SMALL YO +3088 ; [.4300.0020.0011.0001] # HIRAGANA LETTER YO +3089 ; [.4301.0020.0011.0001] # HIRAGANA LETTER RA +308A ; [.4302.0020.0011.0001] # HIRAGANA LETTER RI +308B ; [.4303.0020.0011.0001] # HIRAGANA LETTER RU +308C ; [.4304.0020.0011.0001] # HIRAGANA LETTER RE +308D ; [.4305.0020.0011.0001] # HIRAGANA LETTER RO +308E ; [.4306.0020.000F.0001] # HIRAGANA LETTER SMALL WA +308F ; [.4306.0020.0011.0001] # HIRAGANA LETTER WA +3090 ; [.4307.0020.0011.0001] # HIRAGANA LETTER WI +3091 ; [.4308.0020.0011.0001] # HIRAGANA LETTER WE +3092 ; [.4309.0020.0011.0001] # HIRAGANA LETTER WO +3093 ; [.430A.0020.0011.0001] # HIRAGANA LETTER N +3094 ; [.42DC.0020.0011.0001][.0000.0037.0002] # HIRAGANA LETTER VU +3095 ; [.42E0.0020.000F.0001] # HIRAGANA LETTER SMALL KA +3096 ; [.42E3.0020.000F.0001] # HIRAGANA LETTER SMALL KE +309D ; [.1F61.0020.0002.0001] # HIRAGANA ITERATION MARK +309E ; [.1F61.0020.0002.0001][.0000.0037.0002] # HIRAGANA VOICED ITERATION MARK 3000 ; [*0209.0020.0002] # IDEOGRAPHIC SPACE -FF01 ; [*0261.0020.0002] # FULLWIDTH EXCLAMATION MARK -FF02 ; [*030D.0020.0002] # FULLWIDTH QUOTATION MARK -FF03 ; [*0399.0020.0002] # FULLWIDTH NUMBER SIGN -FF04 ; [.1C77.0020.0002] # FULLWIDTH DOLLAR SIGN -FF05 ; [*039A.0020.0002] # FULLWIDTH PERCENT SIGN -FF06 ; [*0397.0020.0002] # FULLWIDTH AMPERSAND -FF07 ; [*0306.0020.0002] # FULLWIDTH APOSTROPHE -FF08 ; [*0318.0020.0002] # FULLWIDTH LEFT PARENTHESIS -FF09 ; [*0319.0020.0002] # FULLWIDTH RIGHT PARENTHESIS -FF0A ; [*0390.0020.0002] # FULLWIDTH ASTERISK -FF0B ; [*062C.0020.0002] # FULLWIDTH PLUS SIGN -FF0C ; [*0222.0020.0002] # FULLWIDTH COMMA +FF01 ; [*0267.0020.0002] # FULLWIDTH EXCLAMATION MARK +FF02 ; [*031D.0020.0002] # FULLWIDTH QUOTATION MARK +FF03 ; [*03AC.0020.0002] # FULLWIDTH NUMBER SIGN +FF04 ; [.1F64.0020.0002] # FULLWIDTH DOLLAR SIGN +FF05 ; [*03AD.0020.0002] # FULLWIDTH PERCENT SIGN +FF06 ; [*03A9.0020.0002] # FULLWIDTH AMPERSAND +FF07 ; [*0316.0020.0002] # FULLWIDTH APOSTROPHE +FF08 ; [*0328.0020.0002] # FULLWIDTH LEFT PARENTHESIS +FF09 ; [*0329.0020.0002] # FULLWIDTH RIGHT PARENTHESIS +FF0A ; [*03A1.0020.0002] # FULLWIDTH ASTERISK +FF0B ; [*0666.0020.0002] # FULLWIDTH PLUS SIGN +FF0C ; [*0223.0020.0002] # FULLWIDTH COMMA FF0D ; [*020D.0020.0002] # FULLWIDTH HYPHEN-MINUS -FF0E ; [*0278.0020.0002] # FULLWIDTH FULL STOP -FF0F ; [*0395.0020.0002] # FULLWIDTH SOLIDUS -FF10 ; [.1CA3.0020.0002] # FULLWIDTH DIGIT ZERO -FF11 ; [.1CA4.0020.0002] # FULLWIDTH DIGIT ONE -FF12 ; [.1CA5.0020.0002] # FULLWIDTH DIGIT TWO -FF13 ; [.1CA6.0020.0002] # FULLWIDTH DIGIT THREE -FF14 ; [.1CA7.0020.0002] # FULLWIDTH DIGIT FOUR -FF15 ; [.1CA8.0020.0002] # FULLWIDTH DIGIT FIVE -FF16 ; [.1CA9.0020.0002] # FULLWIDTH DIGIT SIX -FF17 ; [.1CAA.0020.0002] # FULLWIDTH DIGIT SEVEN -FF18 ; [.1CAB.0020.0002] # FULLWIDTH DIGIT EIGHT -FF19 ; [.1CAC.0020.0002] # FULLWIDTH DIGIT NINE -FF1A ; [*023A.0020.0002] # FULLWIDTH COLON -FF1B ; [*0234.0020.0002] # FULLWIDTH SEMICOLON -FF1C ; [*0630.0020.0002] # FULLWIDTH LESS-THAN SIGN -FF1D ; [*0631.0020.0002] # FULLWIDTH EQUALS SIGN -FF1E ; [*0632.0020.0002] # FULLWIDTH GREATER-THAN SIGN -FF1F ; [*0267.0020.0002] # FULLWIDTH QUESTION MARK -FF20 ; [*038F.0020.0002] # FULLWIDTH COMMERCIAL AT -FF21 ; [.1CAD.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER A -FF22 ; [.1CC6.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER B -FF23 ; [.1CE0.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER C -FF24 ; [.1CF5.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER D -FF25 ; [.1D10.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER E -FF26 ; [.1D4B.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER F -FF27 ; [.1D5A.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER G -FF28 ; [.1D7E.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER H -FF29 ; [.1D98.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER I -FF2A ; [.1DB2.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER J -FF2B ; [.1DCB.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER K -FF2C ; [.1DDD.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER L -FF2D ; [.1E10.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER M -FF2E ; [.1E1F.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER N -FF2F ; [.1E43.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER O -FF30 ; [.1E72.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER P -FF31 ; [.1E87.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER Q -FF32 ; [.1E99.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER R -FF33 ; [.1ED7.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER S -FF34 ; [.1EFB.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER T -FF35 ; [.1F1B.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER U -FF36 ; [.1F49.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER V -FF37 ; [.1F5B.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER W -FF38 ; [.1F65.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER X -FF39 ; [.1F71.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER Y -FF3A ; [.1F87.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER Z -FF3B ; [*031A.0020.0002] # FULLWIDTH LEFT SQUARE BRACKET -FF3C ; [*0306.0020.0002] # FULLWIDTH REVERSE SOLIDUS -FF3D ; [*031B.0020.0002] # FULLWIDTH RIGHT SQUARE BRACKET -FF3E ; [*049B.0020.0002] # FULLWIDTH CIRCUMFLEX ACCENT +FF0E ; [*027E.0020.0002] # FULLWIDTH FULL STOP +FF0F ; [*03A6.0020.0002] # FULLWIDTH SOLIDUS +FF10 ; [.1F98.0020.0002] # FULLWIDTH DIGIT ZERO +FF11 ; [.1F99.0020.0002] # FULLWIDTH DIGIT ONE +FF12 ; [.1F9A.0020.0002] # FULLWIDTH DIGIT TWO +FF13 ; [.1F9B.0020.0002] # FULLWIDTH DIGIT THREE +FF14 ; [.1F9C.0020.0002] # FULLWIDTH DIGIT FOUR +FF15 ; [.1F9D.0020.0002] # FULLWIDTH DIGIT FIVE +FF16 ; [.1F9E.0020.0002] # FULLWIDTH DIGIT SIX +FF17 ; [.1F9F.0020.0002] # FULLWIDTH DIGIT SEVEN +FF18 ; [.1FA0.0020.0002] # FULLWIDTH DIGIT EIGHT +FF19 ; [.1FA1.0020.0002] # FULLWIDTH DIGIT NINE +FF1A ; [*0240.0020.0002] # FULLWIDTH COLON +FF1B ; [*023A.0020.0002] # FULLWIDTH SEMICOLON +FF1C ; [*066A.0020.0002] # FULLWIDTH LESS-THAN SIGN +FF1D ; [*066B.0020.0002] # FULLWIDTH EQUALS SIGN +FF1E ; [*066C.0020.0002] # FULLWIDTH GREATER-THAN SIGN +FF1F ; [*026D.0020.0002] # FULLWIDTH QUESTION MARK +FF20 ; [*03A0.0020.0002] # FULLWIDTH COMMERCIAL AT +FF21 ; [.1FA2.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER A +FF22 ; [.1FBC.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER B +FF23 ; [.1FD6.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER C +FF24 ; [.1FEB.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER D +FF25 ; [.2007.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER E +FF26 ; [.2042.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER F +FF27 ; [.2051.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER G +FF28 ; [.2075.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER H +FF29 ; [.2090.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER I +FF2A ; [.20AB.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER J +FF2B ; [.20C4.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER K +FF2C ; [.20D6.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER L +FF2D ; [.2109.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER M +FF2E ; [.2118.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER N +FF2F ; [.213C.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER O +FF30 ; [.216B.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER P +FF31 ; [.2180.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER Q +FF32 ; [.2193.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER R +FF33 ; [.21D2.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER S +FF34 ; [.21F7.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER T +FF35 ; [.2217.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER U +FF36 ; [.2247.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER V +FF37 ; [.2259.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER W +FF38 ; [.2264.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER X +FF39 ; [.2270.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER Y +FF3A ; [.2286.0020.0008] # FULLWIDTH LATIN CAPITAL LETTER Z +FF3B ; [*032A.0020.0002] # FULLWIDTH LEFT SQUARE BRACKET +FF3C ; [*0316.0020.0002] # FULLWIDTH REVERSE SOLIDUS +FF3D ; [*032B.0020.0002] # FULLWIDTH RIGHT SQUARE BRACKET +FF3E ; [*04B7.0020.0002] # FULLWIDTH CIRCUMFLEX ACCENT FF3F ; [*020B.0020.0002] # FULLWIDTH LOW LINE -FF40 ; [*0498.0020.0002] # FULLWIDTH GRAVE ACCENT -FF41 ; [.1CAD.0020.0002] # FULLWIDTH LATIN SMALL LETTER A -FF42 ; [.1CC6.0020.0002] # FULLWIDTH LATIN SMALL LETTER B -FF43 ; [.1CE0.0020.0002] # FULLWIDTH LATIN SMALL LETTER C -FF44 ; [.1CF5.0020.0002] # FULLWIDTH LATIN SMALL LETTER D -FF45 ; [.1D10.0020.0002] # FULLWIDTH LATIN SMALL LETTER E -FF46 ; [.1D4B.0020.0002] # FULLWIDTH LATIN SMALL LETTER F -FF47 ; [.1D5A.0020.0002] # FULLWIDTH LATIN SMALL LETTER G -FF48 ; [.1D7E.0020.0002] # FULLWIDTH LATIN SMALL LETTER H -FF49 ; [.1D98.0020.0002] # FULLWIDTH LATIN SMALL LETTER I -FF4A ; [.1DB2.0020.0002] # FULLWIDTH LATIN SMALL LETTER J -FF4B ; [.1DCB.0020.0002] # FULLWIDTH LATIN SMALL LETTER K -FF4C ; [.1DDD.0020.0002] # FULLWIDTH LATIN SMALL LETTER L -FF4D ; [.1E10.0020.0002] # FULLWIDTH LATIN SMALL LETTER M -FF4E ; [.1E1F.0020.0002] # FULLWIDTH LATIN SMALL LETTER N -FF4F ; [.1E43.0020.0002] # FULLWIDTH LATIN SMALL LETTER O -FF50 ; [.1E72.0020.0002] # FULLWIDTH LATIN SMALL LETTER P -FF51 ; [.1E87.0020.0002] # FULLWIDTH LATIN SMALL LETTER Q -FF52 ; [.1E99.0020.0002] # FULLWIDTH LATIN SMALL LETTER R -FF53 ; [.1ED7.0020.0002] # FULLWIDTH LATIN SMALL LETTER S -FF54 ; [.1EFB.0020.0002] # FULLWIDTH LATIN SMALL LETTER T -FF55 ; [.1F1B.0020.0002] # FULLWIDTH LATIN SMALL LETTER U -FF56 ; [.1F49.0020.0002] # FULLWIDTH LATIN SMALL LETTER V -FF57 ; [.1F5B.0020.0002] # FULLWIDTH LATIN SMALL LETTER W -FF58 ; [.1F65.0020.0002] # FULLWIDTH LATIN SMALL LETTER X -FF59 ; [.1F71.0020.0002] # FULLWIDTH LATIN SMALL LETTER Y -FF5A ; [.1F87.0020.0002] # FULLWIDTH LATIN SMALL LETTER Z -FF5B ; [*031C.0020.0002] # FULLWIDTH LEFT CURLY BRACKET -FF5C ; [*0634.0020.0002] # FULLWIDTH VERTICAL LINE -FF5D ; [*031D.0020.0002] # FULLWIDTH RIGHT CURLY BRACKET -FF5E ; [*0636.0020.0002] # FULLWIDTH TILDE -FF5F ; [*032E.0020.0002] # FULLWIDTH LEFT WHITE PARENTHESIS -FF60 ; [*032F.0020.0002] # FULLWIDTH RIGHT WHITE PARENTHESIS -FF61 ; [*028B.0020.0002] # HALFWIDTH IDEOGRAPHIC FULL STOP -FF62 ; [*0374.0020.0002] # HALFWIDTH LEFT CORNER BRACKET -FF63 ; [*0375.0020.0002] # HALFWIDTH RIGHT CORNER BRACKET -FF64 ; [*0231.0020.0002] # HALFWIDTH IDEOGRAPHIC COMMA +FF40 ; [*04B4.0020.0002] # FULLWIDTH GRAVE ACCENT +FF41 ; [.1FA2.0020.0002] # FULLWIDTH LATIN SMALL LETTER A +FF42 ; [.1FBC.0020.0002] # FULLWIDTH LATIN SMALL LETTER B +FF43 ; [.1FD6.0020.0002] # FULLWIDTH LATIN SMALL LETTER C +FF44 ; [.1FEB.0020.0002] # FULLWIDTH LATIN SMALL LETTER D +FF45 ; [.2007.0020.0002] # FULLWIDTH LATIN SMALL LETTER E +FF46 ; [.2042.0020.0002] # FULLWIDTH LATIN SMALL LETTER F +FF47 ; [.2051.0020.0002] # FULLWIDTH LATIN SMALL LETTER G +FF48 ; [.2075.0020.0002] # FULLWIDTH LATIN SMALL LETTER H +FF49 ; [.2090.0020.0002] # FULLWIDTH LATIN SMALL LETTER I +FF4A ; [.20AB.0020.0002] # FULLWIDTH LATIN SMALL LETTER J +FF4B ; [.20C4.0020.0002] # FULLWIDTH LATIN SMALL LETTER K +FF4C ; [.20D6.0020.0002] # FULLWIDTH LATIN SMALL LETTER L +FF4D ; [.2109.0020.0002] # FULLWIDTH LATIN SMALL LETTER M +FF4E ; [.2118.0020.0002] # FULLWIDTH LATIN SMALL LETTER N +FF4F ; [.213C.0020.0002] # FULLWIDTH LATIN SMALL LETTER O +FF50 ; [.216B.0020.0002] # FULLWIDTH LATIN SMALL LETTER P +FF51 ; [.2180.0020.0002] # FULLWIDTH LATIN SMALL LETTER Q +FF52 ; [.2193.0020.0002] # FULLWIDTH LATIN SMALL LETTER R +FF53 ; [.21D2.0020.0002] # FULLWIDTH LATIN SMALL LETTER S +FF54 ; [.21F7.0020.0002] # FULLWIDTH LATIN SMALL LETTER T +FF55 ; [.2217.0020.0002] # FULLWIDTH LATIN SMALL LETTER U +FF56 ; [.2247.0020.0002] # FULLWIDTH LATIN SMALL LETTER V +FF57 ; [.2259.0020.0002] # FULLWIDTH LATIN SMALL LETTER W +FF58 ; [.2264.0020.0002] # FULLWIDTH LATIN SMALL LETTER X +FF59 ; [.2270.0020.0002] # FULLWIDTH LATIN SMALL LETTER Y +FF5A ; [.2286.0020.0002] # FULLWIDTH LATIN SMALL LETTER Z +FF5B ; [*032C.0020.0002] # FULLWIDTH LEFT CURLY BRACKET +FF5C ; [*066E.0020.0002] # FULLWIDTH VERTICAL LINE +FF5D ; [*032D.0020.0002] # FULLWIDTH RIGHT CURLY BRACKET +FF5E ; [*0670.0020.0002] # FULLWIDTH TILDE +FF5F ; [*033E.0020.0002] # FULLWIDTH LEFT WHITE PARENTHESIS +FF60 ; [*033F.0020.0002] # FULLWIDTH RIGHT WHITE PARENTHESIS +FF61 ; [*0292.0020.0002] # HALFWIDTH IDEOGRAPHIC FULL STOP +FF62 ; [*0384.0020.0002] # HALFWIDTH LEFT CORNER BRACKET +FF63 ; [*0385.0020.0002] # HALFWIDTH RIGHT CORNER BRACKET +FF64 ; [*0236.0020.0002] # HALFWIDTH IDEOGRAPHIC COMMA FF65 ; [*0221.0020.0002] # HALFWIDTH KATAKANA MIDDLE DOT -FF66 ; [.3EA0.0020.0011.0002] # HALFWIDTH KATAKANA LETTER WO -FF67 ; [.3E71.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL A -FF68 ; [.3E72.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL I -FF69 ; [.3E73.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL U -FF6A ; [.3E75.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL E -FF6B ; [.3E76.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL O -FF6C ; [.3E95.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL YA -FF6D ; [.3E96.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL YU -FF6E ; [.3E97.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL YO -FF6F ; [.3E83.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL TU -FF70 ; [.1C73.0020.0002] # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK -FF71 ; [.3E71.0020.0011.0002] # HALFWIDTH KATAKANA LETTER A -FF72 ; [.3E72.0020.0011.0002] # HALFWIDTH KATAKANA LETTER I -FF73 ; [.3E73.0020.0011.0002] # HALFWIDTH KATAKANA LETTER U -FF74 ; [.3E75.0020.0011.0002] # HALFWIDTH KATAKANA LETTER E -FF75 ; [.3E76.0020.0011.0002] # HALFWIDTH KATAKANA LETTER O -FF76 ; [.3E77.0020.0011.0002] # HALFWIDTH KATAKANA LETTER KA -FF77 ; [.3E78.0020.0011.0002] # HALFWIDTH KATAKANA LETTER KI -FF78 ; [.3E79.0020.0011.0002] # HALFWIDTH KATAKANA LETTER KU -FF79 ; [.3E7A.0020.0011.0002] # HALFWIDTH KATAKANA LETTER KE -FF7A ; [.3E7B.0020.0011.0002] # HALFWIDTH KATAKANA LETTER KO -FF7B ; [.3E7C.0020.0011.0002] # HALFWIDTH KATAKANA LETTER SA -FF7C ; [.3E7D.0020.0011.0002] # HALFWIDTH KATAKANA LETTER SI -FF7D ; [.3E7E.0020.0011.0002] # HALFWIDTH KATAKANA LETTER SU -FF7E ; [.3E7F.0020.0011.0002] # HALFWIDTH KATAKANA LETTER SE -FF7F ; [.3E80.0020.0011.0002] # HALFWIDTH KATAKANA LETTER SO -FF80 ; [.3E81.0020.0011.0002] # HALFWIDTH KATAKANA LETTER TA -FF81 ; [.3E82.0020.0011.0002] # HALFWIDTH KATAKANA LETTER TI -FF82 ; [.3E83.0020.0011.0002] # HALFWIDTH KATAKANA LETTER TU -FF83 ; [.3E84.0020.0011.0002] # HALFWIDTH KATAKANA LETTER TE -FF84 ; [.3E85.0020.0011.0002] # HALFWIDTH KATAKANA LETTER TO -FF85 ; [.3E86.0020.0011.0002] # HALFWIDTH KATAKANA LETTER NA -FF86 ; [.3E87.0020.0011.0002] # HALFWIDTH KATAKANA LETTER NI -FF87 ; [.3E88.0020.0011.0002] # HALFWIDTH KATAKANA LETTER NU -FF88 ; [.3E89.0020.0011.0002] # HALFWIDTH KATAKANA LETTER NE -FF89 ; [.3E8A.0020.0011.0002] # HALFWIDTH KATAKANA LETTER NO -FF8A ; [.3E8B.0020.0011.0002] # HALFWIDTH KATAKANA LETTER HA -FF8B ; [.3E8C.0020.0011.0002] # HALFWIDTH KATAKANA LETTER HI -FF8C ; [.3E8D.0020.0011.0002] # HALFWIDTH KATAKANA LETTER HU -FF8D ; [.3E8E.0020.0011.0002] # HALFWIDTH KATAKANA LETTER HE -FF8E ; [.3E8F.0020.0011.0002] # HALFWIDTH KATAKANA LETTER HO -FF8F ; [.3E90.0020.0011.0002] # HALFWIDTH KATAKANA LETTER MA -FF90 ; [.3E91.0020.0011.0002] # HALFWIDTH KATAKANA LETTER MI -FF91 ; [.3E92.0020.0011.0002] # HALFWIDTH KATAKANA LETTER MU -FF92 ; [.3E93.0020.0011.0002] # HALFWIDTH KATAKANA LETTER ME -FF93 ; [.3E94.0020.0011.0002] # HALFWIDTH KATAKANA LETTER MO -FF94 ; [.3E95.0020.0011.0002] # HALFWIDTH KATAKANA LETTER YA -FF95 ; [.3E96.0020.0011.0002] # HALFWIDTH KATAKANA LETTER YU -FF96 ; [.3E97.0020.0011.0002] # HALFWIDTH KATAKANA LETTER YO -FF97 ; [.3E98.0020.0011.0002] # HALFWIDTH KATAKANA LETTER RA -FF98 ; [.3E99.0020.0011.0002] # HALFWIDTH KATAKANA LETTER RI -FF99 ; [.3E9A.0020.0011.0002] # HALFWIDTH KATAKANA LETTER RU -FF9A ; [.3E9B.0020.0011.0002] # HALFWIDTH KATAKANA LETTER RE -FF9B ; [.3E9C.0020.0011.0002] # HALFWIDTH KATAKANA LETTER RO -FF9C ; [.3E9D.0020.0011.0002] # HALFWIDTH KATAKANA LETTER WA -FF9D ; [.3EA1.0020.0011.0002] # HALFWIDTH KATAKANA LETTER N +FF66 ; [.4309.0020.0011.0002] # HALFWIDTH KATAKANA LETTER WO +FF67 ; [.42DA.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL A +FF68 ; [.42DB.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL I +FF69 ; [.42DC.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL U +FF6A ; [.42DE.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL E +FF6B ; [.42DF.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL O +FF6C ; [.42FE.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL YA +FF6D ; [.42FF.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL YU +FF6E ; [.4300.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL YO +FF6F ; [.42EC.0020.000F.0002] # HALFWIDTH KATAKANA LETTER SMALL TU +FF70 ; [.1F60.0020.0002] # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK +FF71 ; [.42DA.0020.0011.0002] # HALFWIDTH KATAKANA LETTER A +FF72 ; [.42DB.0020.0011.0002] # HALFWIDTH KATAKANA LETTER I +FF73 ; [.42DC.0020.0011.0002] # HALFWIDTH KATAKANA LETTER U +FF74 ; [.42DE.0020.0011.0002] # HALFWIDTH KATAKANA LETTER E +FF75 ; [.42DF.0020.0011.0002] # HALFWIDTH KATAKANA LETTER O +FF76 ; [.42E0.0020.0011.0002] # HALFWIDTH KATAKANA LETTER KA +FF77 ; [.42E1.0020.0011.0002] # HALFWIDTH KATAKANA LETTER KI +FF78 ; [.42E2.0020.0011.0002] # HALFWIDTH KATAKANA LETTER KU +FF79 ; [.42E3.0020.0011.0002] # HALFWIDTH KATAKANA LETTER KE +FF7A ; [.42E4.0020.0011.0002] # HALFWIDTH KATAKANA LETTER KO +FF7B ; [.42E5.0020.0011.0002] # HALFWIDTH KATAKANA LETTER SA +FF7C ; [.42E6.0020.0011.0002] # HALFWIDTH KATAKANA LETTER SI +FF7D ; [.42E7.0020.0011.0002] # HALFWIDTH KATAKANA LETTER SU +FF7E ; [.42E8.0020.0011.0002] # HALFWIDTH KATAKANA LETTER SE +FF7F ; [.42E9.0020.0011.0002] # HALFWIDTH KATAKANA LETTER SO +FF80 ; [.42EA.0020.0011.0002] # HALFWIDTH KATAKANA LETTER TA +FF81 ; [.42EB.0020.0011.0002] # HALFWIDTH KATAKANA LETTER TI +FF82 ; [.42EC.0020.0011.0002] # HALFWIDTH KATAKANA LETTER TU +FF83 ; [.42ED.0020.0011.0002] # HALFWIDTH KATAKANA LETTER TE +FF84 ; [.42EE.0020.0011.0002] # HALFWIDTH KATAKANA LETTER TO +FF85 ; [.42EF.0020.0011.0002] # HALFWIDTH KATAKANA LETTER NA +FF86 ; [.42F0.0020.0011.0002] # HALFWIDTH KATAKANA LETTER NI +FF87 ; [.42F1.0020.0011.0002] # HALFWIDTH KATAKANA LETTER NU +FF88 ; [.42F2.0020.0011.0002] # HALFWIDTH KATAKANA LETTER NE +FF89 ; [.42F3.0020.0011.0002] # HALFWIDTH KATAKANA LETTER NO +FF8A ; [.42F4.0020.0011.0002] # HALFWIDTH KATAKANA LETTER HA +FF8B ; [.42F5.0020.0011.0002] # HALFWIDTH KATAKANA LETTER HI +FF8C ; [.42F6.0020.0011.0002] # HALFWIDTH KATAKANA LETTER HU +FF8D ; [.42F7.0020.0011.0002] # HALFWIDTH KATAKANA LETTER HE +FF8E ; [.42F8.0020.0011.0002] # HALFWIDTH KATAKANA LETTER HO +FF8F ; [.42F9.0020.0011.0002] # HALFWIDTH KATAKANA LETTER MA +FF90 ; [.42FA.0020.0011.0002] # HALFWIDTH KATAKANA LETTER MI +FF91 ; [.42FB.0020.0011.0002] # HALFWIDTH KATAKANA LETTER MU +FF92 ; [.42FC.0020.0011.0002] # HALFWIDTH KATAKANA LETTER ME +FF93 ; [.42FD.0020.0011.0002] # HALFWIDTH KATAKANA LETTER MO +FF94 ; [.42FE.0020.0011.0002] # HALFWIDTH KATAKANA LETTER YA +FF95 ; [.42FF.0020.0011.0002] # HALFWIDTH KATAKANA LETTER YU +FF96 ; [.4300.0020.0011.0002] # HALFWIDTH KATAKANA LETTER YO +FF97 ; [.4301.0020.0011.0002] # HALFWIDTH KATAKANA LETTER RA +FF98 ; [.4302.0020.0011.0002] # HALFWIDTH KATAKANA LETTER RI +FF99 ; [.4303.0020.0011.0002] # HALFWIDTH KATAKANA LETTER RU +FF9A ; [.4304.0020.0011.0002] # HALFWIDTH KATAKANA LETTER RE +FF9B ; [.4305.0020.0011.0002] # HALFWIDTH KATAKANA LETTER RO +FF9C ; [.4306.0020.0011.0002] # HALFWIDTH KATAKANA LETTER WA +FF9D ; [.430A.0020.0011.0002] # HALFWIDTH KATAKANA LETTER N FF9E ; [.0000.0037.0002] # HALFWIDTH KATAKANA VOICED SOUND MARK FF9F ; [.0000.0038.0002] # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK -FFE0 ; [.1C76.0020.0002] # FULLWIDTH CENT SIGN -FFE1 ; [.1C78.0020.0002] # FULLWIDTH POUND SIGN -FFE2 ; [*0633.0020.0002] # FULLWIDTH NOT SIGN +FFE0 ; [.1F63.0020.0002] # FULLWIDTH CENT SIGN +FFE1 ; [.1F65.0020.0002] # FULLWIDTH POUND SIGN +FFE2 ; [*066D.0020.0002] # FULLWIDTH NOT SIGN FFE3 ; [*0209.0020.0002] # FULLWIDTH MACRON -FFE4 ; [*0635.0020.0002] # FULLWIDTH BROKEN BAR -FFE5 ; [.1C79.0020.0002] # FULLWIDTH YEN SIGN -FFE6 ; [.1C8C.0020.0002] # FULLWIDTH WON SIGN -FFE8 ; [*0831.0020.0002] # HALFWIDTH FORMS LIGHT VERTICAL -FFE9 ; [*05B2.0020.0002] # HALFWIDTH LEFTWARDS ARROW -FFEA ; [*05B4.0020.0002] # HALFWIDTH UPWARDS ARROW -FFEB ; [*05B3.0020.0002] # HALFWIDTH RIGHTWARDS ARROW -FFEC ; [*05B5.0020.0002] # HALFWIDTH DOWNWARDS ARROW -FFED ; [*08CF.0020.0002] # HALFWIDTH BLACK SQUARE -FFEE ; [*08FA.0020.0002] # HALFWIDTH WHITE CIRCLE -30A1 30FC ; [.3E71.0020.000F.0002][.3E71.0020.0007.0002] # -FF67 30FC ; [.3E71.0020.000F.0002][.3E71.0020.0007.0002] # -FF67 FF70 ; [.3E71.0020.000F.0002][.3E71.0020.0007.0002] # -3041 30FC ; [.3E71.0020.000F.0001][.3E71.0020.0007.0002] # -30A2 30FC ; [.3E71.0020.0011.0002][.3E71.0020.0007.0002] # -FF71 30FC ; [.3E71.0020.0011.0002][.3E71.0020.0007.0002] # -FF71 FF70 ; [.3E71.0020.0011.0002][.3E71.0020.0007.0002] # -3042 30FC ; [.3E71.0020.0011.0001][.3E71.0020.0007.0002] # -30AB 30FC ; [.3E77.0020.0011.0002][.3E71.0020.0007.0002] # -FF76 30FC ; [.3E77.0020.0011.0002][.3E71.0020.0007.0002] # -FF76 FF70 ; [.3E77.0020.0011.0002][.3E71.0020.0007.0002] # -304B 30FC ; [.3E77.0020.0011.0001][.3E71.0020.0007.0002] # -30AC 30FC ; [.3E77.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -30AB 3099 30FC ; [.3E77.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -FF76 FF9E 30FC ; [.3E77.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -FF76 FF9E FF70 ; [.3E77.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -304C 30FC ; [.3E77.0020.0011.0001][.0000.0037.0002][.3E71.0020.0007.0002] # -304B 3099 30FC ; [.3E77.0020.0011.0001][.0000.0037.0002][.3E71.0020.0007.0002] # -30B5 30FC ; [.3E7C.0020.0011.0002][.3E71.0020.0007.0002] # -FF7B 30FC ; [.3E7C.0020.0011.0002][.3E71.0020.0007.0002] # -FF7B FF70 ; [.3E7C.0020.0011.0002][.3E71.0020.0007.0002] # -3055 30FC ; [.3E7C.0020.0011.0001][.3E71.0020.0007.0002] # -30B6 30FC ; [.3E7C.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -30B5 3099 30FC ; [.3E7C.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -FF7B FF9E 30FC ; [.3E7C.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -FF7B FF9E FF70 ; [.3E7C.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -3056 30FC ; [.3E7C.0020.0011.0001][.0000.0037.0002][.3E71.0020.0007.0002] # -3055 3099 30FC ; [.3E7C.0020.0011.0001][.0000.0037.0002][.3E71.0020.0007.0002] # -30BF 30FC ; [.3E81.0020.0011.0002][.3E71.0020.0007.0002] # -FF80 30FC ; [.3E81.0020.0011.0002][.3E71.0020.0007.0002] # -FF80 FF70 ; [.3E81.0020.0011.0002][.3E71.0020.0007.0002] # -305F 30FC ; [.3E81.0020.0011.0001][.3E71.0020.0007.0002] # -30C0 30FC ; [.3E81.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -30BF 3099 30FC ; [.3E81.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -FF80 FF9E 30FC ; [.3E81.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -FF80 FF9E FF70 ; [.3E81.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -3060 30FC ; [.3E81.0020.0011.0001][.0000.0037.0002][.3E71.0020.0007.0002] # -305F 3099 30FC ; [.3E81.0020.0011.0001][.0000.0037.0002][.3E71.0020.0007.0002] # -30CA 30FC ; [.3E86.0020.0011.0002][.3E71.0020.0007.0002] # -FF85 30FC ; [.3E86.0020.0011.0002][.3E71.0020.0007.0002] # -FF85 FF70 ; [.3E86.0020.0011.0002][.3E71.0020.0007.0002] # -306A 30FC ; [.3E86.0020.0011.0001][.3E71.0020.0007.0002] # -30CF 30FC ; [.3E8B.0020.0011.0002][.3E71.0020.0007.0002] # -FF8A 30FC ; [.3E8B.0020.0011.0002][.3E71.0020.0007.0002] # -FF8A FF70 ; [.3E8B.0020.0011.0002][.3E71.0020.0007.0002] # -306F 30FC ; [.3E8B.0020.0011.0001][.3E71.0020.0007.0002] # -30D0 30FC ; [.3E8B.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -30CF 3099 30FC ; [.3E8B.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -FF8A FF9E 30FC ; [.3E8B.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -FF8A FF9E FF70 ; [.3E8B.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -3070 30FC ; [.3E8B.0020.0011.0001][.0000.0037.0002][.3E71.0020.0007.0002] # -306F 3099 30FC ; [.3E8B.0020.0011.0001][.0000.0037.0002][.3E71.0020.0007.0002] # -30D1 30FC ; [.3E8B.0020.0011.0002][.0000.0038.0002][.3E71.0020.0007.0002] # -30CF 309A 30FC ; [.3E8B.0020.0011.0002][.0000.0038.0002][.3E71.0020.0007.0002] # -FF8A FF9F 30FC ; [.3E8B.0020.0011.0002][.0000.0038.0002][.3E71.0020.0007.0002] # -FF8A FF9F FF70 ; [.3E8B.0020.0011.0002][.0000.0038.0002][.3E71.0020.0007.0002] # -3071 30FC ; [.3E8B.0020.0011.0001][.0000.0038.0002][.3E71.0020.0007.0002] # -306F 309A 30FC ; [.3E8B.0020.0011.0001][.0000.0038.0002][.3E71.0020.0007.0002] # -30DE 30FC ; [.3E90.0020.0011.0002][.3E71.0020.0007.0002] # -FF8F 30FC ; [.3E90.0020.0011.0002][.3E71.0020.0007.0002] # -FF8F FF70 ; [.3E90.0020.0011.0002][.3E71.0020.0007.0002] # -307E 30FC ; [.3E90.0020.0011.0001][.3E71.0020.0007.0002] # -30E3 30FC ; [.3E95.0020.000F.0002][.3E71.0020.0007.0002] # -FF6C 30FC ; [.3E95.0020.000F.0002][.3E71.0020.0007.0002] # -FF6C FF70 ; [.3E95.0020.000F.0002][.3E71.0020.0007.0002] # -3083 30FC ; [.3E95.0020.000F.0001][.3E71.0020.0007.0002] # -30E4 30FC ; [.3E95.0020.0011.0002][.3E71.0020.0007.0002] # -FF94 30FC ; [.3E95.0020.0011.0002][.3E71.0020.0007.0002] # -FF94 FF70 ; [.3E95.0020.0011.0002][.3E71.0020.0007.0002] # -3084 30FC ; [.3E95.0020.0011.0001][.3E71.0020.0007.0002] # -30E9 30FC ; [.3E98.0020.0011.0002][.3E71.0020.0007.0002] # -FF97 30FC ; [.3E98.0020.0011.0002][.3E71.0020.0007.0002] # -FF97 FF70 ; [.3E98.0020.0011.0002][.3E71.0020.0007.0002] # -3089 30FC ; [.3E98.0020.0011.0001][.3E71.0020.0007.0002] # -30EE 30FC ; [.3E9D.0020.000F.0002][.3E71.0020.0007.0002] # -308E 30FC ; [.3E9D.0020.000F.0001][.3E71.0020.0007.0002] # -30EF 30FC ; [.3E9D.0020.0011.0002][.3E71.0020.0007.0002] # -FF9C 30FC ; [.3E9D.0020.0011.0002][.3E71.0020.0007.0002] # -FF9C FF70 ; [.3E9D.0020.0011.0002][.3E71.0020.0007.0002] # -308F 30FC ; [.3E9D.0020.0011.0001][.3E71.0020.0007.0002] # -30F7 30FC ; [.3E9D.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -30EF 3099 30FC ; [.3E9D.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -FF9C FF9E 30FC ; [.3E9D.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -FF9C FF9E FF70 ; [.3E9D.0020.0011.0002][.0000.0037.0002][.3E71.0020.0007.0002] # -30F5 30FC ; [.3E77.0020.000F.0002][.3E71.0020.0007.0002] # -3095 30FC ; [.3E77.0020.000F.0001][.3E71.0020.0007.0002] # -31F5 30FC ; [.3E8B.0020.000F][.3E71.0020.0007.0002] # -31FB 30FC ; [.3E98.0020.000F][.3E71.0020.0007.0002] # -30A3 30FC ; [.3E72.0020.000F.0002][.3E72.0020.0007.0002] # -FF68 30FC ; [.3E72.0020.000F.0002][.3E72.0020.0007.0002] # -FF68 FF70 ; [.3E72.0020.000F.0002][.3E72.0020.0007.0002] # -3043 30FC ; [.3E72.0020.000F.0001][.3E72.0020.0007.0002] # -30A4 30FC ; [.3E72.0020.0011.0002][.3E72.0020.0007.0002] # -FF72 30FC ; [.3E72.0020.0011.0002][.3E72.0020.0007.0002] # -FF72 FF70 ; [.3E72.0020.0011.0002][.3E72.0020.0007.0002] # -3044 30FC ; [.3E72.0020.0011.0001][.3E72.0020.0007.0002] # -30AD 30FC ; [.3E78.0020.0011.0002][.3E72.0020.0007.0002] # -FF77 30FC ; [.3E78.0020.0011.0002][.3E72.0020.0007.0002] # -FF77 FF70 ; [.3E78.0020.0011.0002][.3E72.0020.0007.0002] # -304D 30FC ; [.3E78.0020.0011.0001][.3E72.0020.0007.0002] # -30AE 30FC ; [.3E78.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -30AD 3099 30FC ; [.3E78.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -FF77 FF9E 30FC ; [.3E78.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -FF77 FF9E FF70 ; [.3E78.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -304E 30FC ; [.3E78.0020.0011.0001][.0000.0037.0002][.3E72.0020.0007.0002] # -304D 3099 30FC ; [.3E78.0020.0011.0001][.0000.0037.0002][.3E72.0020.0007.0002] # -30B7 30FC ; [.3E7D.0020.0011.0002][.3E72.0020.0007.0002] # -FF7C 30FC ; [.3E7D.0020.0011.0002][.3E72.0020.0007.0002] # -FF7C FF70 ; [.3E7D.0020.0011.0002][.3E72.0020.0007.0002] # -3057 30FC ; [.3E7D.0020.0011.0001][.3E72.0020.0007.0002] # -30B8 30FC ; [.3E7D.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -30B7 3099 30FC ; [.3E7D.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -FF7C FF9E 30FC ; [.3E7D.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -FF7C FF9E FF70 ; [.3E7D.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -3058 30FC ; [.3E7D.0020.0011.0001][.0000.0037.0002][.3E72.0020.0007.0002] # -3057 3099 30FC ; [.3E7D.0020.0011.0001][.0000.0037.0002][.3E72.0020.0007.0002] # -30C1 30FC ; [.3E82.0020.0011.0002][.3E72.0020.0007.0002] # -FF81 30FC ; [.3E82.0020.0011.0002][.3E72.0020.0007.0002] # -FF81 FF70 ; [.3E82.0020.0011.0002][.3E72.0020.0007.0002] # -3061 30FC ; [.3E82.0020.0011.0001][.3E72.0020.0007.0002] # -30C2 30FC ; [.3E82.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -30C1 3099 30FC ; [.3E82.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -FF81 FF9E 30FC ; [.3E82.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -FF81 FF9E FF70 ; [.3E82.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -3062 30FC ; [.3E82.0020.0011.0001][.0000.0037.0002][.3E72.0020.0007.0002] # -3061 3099 30FC ; [.3E82.0020.0011.0001][.0000.0037.0002][.3E72.0020.0007.0002] # -30CB 30FC ; [.3E87.0020.0011.0002][.3E72.0020.0007.0002] # -FF86 30FC ; [.3E87.0020.0011.0002][.3E72.0020.0007.0002] # -FF86 FF70 ; [.3E87.0020.0011.0002][.3E72.0020.0007.0002] # -306B 30FC ; [.3E87.0020.0011.0001][.3E72.0020.0007.0002] # -30D2 30FC ; [.3E8C.0020.0011.0002][.3E72.0020.0007.0002] # -FF8B 30FC ; [.3E8C.0020.0011.0002][.3E72.0020.0007.0002] # -FF8B FF70 ; [.3E8C.0020.0011.0002][.3E72.0020.0007.0002] # -3072 30FC ; [.3E8C.0020.0011.0001][.3E72.0020.0007.0002] # -30D3 30FC ; [.3E8C.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -30D2 3099 30FC ; [.3E8C.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -FF8B FF9E 30FC ; [.3E8C.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -FF8B FF9E FF70 ; [.3E8C.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -3073 30FC ; [.3E8C.0020.0011.0001][.0000.0037.0002][.3E72.0020.0007.0002] # -3072 3099 30FC ; [.3E8C.0020.0011.0001][.0000.0037.0002][.3E72.0020.0007.0002] # -30D4 30FC ; [.3E8C.0020.0011.0002][.0000.0038.0002][.3E72.0020.0007.0002] # -30D2 309A 30FC ; [.3E8C.0020.0011.0002][.0000.0038.0002][.3E72.0020.0007.0002] # -FF8B FF9F 30FC ; [.3E8C.0020.0011.0002][.0000.0038.0002][.3E72.0020.0007.0002] # -FF8B FF9F FF70 ; [.3E8C.0020.0011.0002][.0000.0038.0002][.3E72.0020.0007.0002] # -3074 30FC ; [.3E8C.0020.0011.0001][.0000.0038.0002][.3E72.0020.0007.0002] # -3072 309A 30FC ; [.3E8C.0020.0011.0001][.0000.0038.0002][.3E72.0020.0007.0002] # -30DF 30FC ; [.3E91.0020.0011.0002][.3E72.0020.0007.0002] # -FF90 30FC ; [.3E91.0020.0011.0002][.3E72.0020.0007.0002] # -FF90 FF70 ; [.3E91.0020.0011.0002][.3E72.0020.0007.0002] # -307F 30FC ; [.3E91.0020.0011.0001][.3E72.0020.0007.0002] # -30EA 30FC ; [.3E99.0020.0011.0002][.3E72.0020.0007.0002] # -FF98 30FC ; [.3E99.0020.0011.0002][.3E72.0020.0007.0002] # -FF98 FF70 ; [.3E99.0020.0011.0002][.3E72.0020.0007.0002] # -308A 30FC ; [.3E99.0020.0011.0001][.3E72.0020.0007.0002] # -30F0 30FC ; [.3E9E.0020.0011.0002][.3E72.0020.0007.0002] # -3090 30FC ; [.3E9E.0020.0011.0001][.3E72.0020.0007.0002] # -30F8 30FC ; [.3E9E.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -30F0 3099 30FC ; [.3E9E.0020.0011.0002][.0000.0037.0002][.3E72.0020.0007.0002] # -31F1 30FC ; [.3E7D.0020.000F][.3E72.0020.0007.0002] # -31F6 30FC ; [.3E8C.0020.000F][.3E72.0020.0007.0002] # -31FC 30FC ; [.3E99.0020.000F][.3E72.0020.0007.0002] # -30A5 30FC ; [.3E73.0020.000F.0002][.3E73.0020.0007.0002] # -FF69 30FC ; [.3E73.0020.000F.0002][.3E73.0020.0007.0002] # -FF69 FF70 ; [.3E73.0020.000F.0002][.3E73.0020.0007.0002] # -3045 30FC ; [.3E73.0020.000F.0001][.3E73.0020.0007.0002] # -30A6 30FC ; [.3E73.0020.0011.0002][.3E73.0020.0007.0002] # -FF73 30FC ; [.3E73.0020.0011.0002][.3E73.0020.0007.0002] # -FF73 FF70 ; [.3E73.0020.0011.0002][.3E73.0020.0007.0002] # -3046 30FC ; [.3E73.0020.0011.0001][.3E73.0020.0007.0002] # -30AF 30FC ; [.3E79.0020.0011.0002][.3E73.0020.0007.0002] # -FF78 30FC ; [.3E79.0020.0011.0002][.3E73.0020.0007.0002] # -FF78 FF70 ; [.3E79.0020.0011.0002][.3E73.0020.0007.0002] # -304F 30FC ; [.3E79.0020.0011.0001][.3E73.0020.0007.0002] # -30B0 30FC ; [.3E79.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -30AF 3099 30FC ; [.3E79.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -FF78 FF9E 30FC ; [.3E79.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -FF78 FF9E FF70 ; [.3E79.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -3050 30FC ; [.3E79.0020.0011.0001][.0000.0037.0002][.3E73.0020.0007.0002] # -304F 3099 30FC ; [.3E79.0020.0011.0001][.0000.0037.0002][.3E73.0020.0007.0002] # -30B9 30FC ; [.3E7E.0020.0011.0002][.3E73.0020.0007.0002] # -FF7D 30FC ; [.3E7E.0020.0011.0002][.3E73.0020.0007.0002] # -FF7D FF70 ; [.3E7E.0020.0011.0002][.3E73.0020.0007.0002] # -3059 30FC ; [.3E7E.0020.0011.0001][.3E73.0020.0007.0002] # -30BA 30FC ; [.3E7E.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -30B9 3099 30FC ; [.3E7E.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -FF7D FF9E 30FC ; [.3E7E.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -FF7D FF9E FF70 ; [.3E7E.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -305A 30FC ; [.3E7E.0020.0011.0001][.0000.0037.0002][.3E73.0020.0007.0002] # -3059 3099 30FC ; [.3E7E.0020.0011.0001][.0000.0037.0002][.3E73.0020.0007.0002] # -30C3 30FC ; [.3E83.0020.000F.0002][.3E73.0020.0007.0002] # -FF6F 30FC ; [.3E83.0020.000F.0002][.3E73.0020.0007.0002] # -FF6F FF70 ; [.3E83.0020.000F.0002][.3E73.0020.0007.0002] # -3063 30FC ; [.3E83.0020.000F.0001][.3E73.0020.0007.0002] # -30C4 30FC ; [.3E83.0020.0011.0002][.3E73.0020.0007.0002] # -FF82 30FC ; [.3E83.0020.0011.0002][.3E73.0020.0007.0002] # -FF82 FF70 ; [.3E83.0020.0011.0002][.3E73.0020.0007.0002] # -3064 30FC ; [.3E83.0020.0011.0001][.3E73.0020.0007.0002] # -30C5 30FC ; [.3E83.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -30C4 3099 30FC ; [.3E83.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -FF82 FF9E 30FC ; [.3E83.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -FF82 FF9E FF70 ; [.3E83.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -3065 30FC ; [.3E83.0020.0011.0001][.0000.0037.0002][.3E73.0020.0007.0002] # -3064 3099 30FC ; [.3E83.0020.0011.0001][.0000.0037.0002][.3E73.0020.0007.0002] # -30CC 30FC ; [.3E88.0020.0011.0002][.3E73.0020.0007.0002] # -FF87 30FC ; [.3E88.0020.0011.0002][.3E73.0020.0007.0002] # -FF87 FF70 ; [.3E88.0020.0011.0002][.3E73.0020.0007.0002] # -306C 30FC ; [.3E88.0020.0011.0001][.3E73.0020.0007.0002] # -30D5 30FC ; [.3E8D.0020.0011.0002][.3E73.0020.0007.0002] # -FF8C 30FC ; [.3E8D.0020.0011.0002][.3E73.0020.0007.0002] # -FF8C FF70 ; [.3E8D.0020.0011.0002][.3E73.0020.0007.0002] # -3075 30FC ; [.3E8D.0020.0011.0001][.3E73.0020.0007.0002] # -30D6 30FC ; [.3E8D.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -30D5 3099 30FC ; [.3E8D.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -FF8C FF9E 30FC ; [.3E8D.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -FF8C FF9E FF70 ; [.3E8D.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -3076 30FC ; [.3E8D.0020.0011.0001][.0000.0037.0002][.3E73.0020.0007.0002] # -3075 3099 30FC ; [.3E8D.0020.0011.0001][.0000.0037.0002][.3E73.0020.0007.0002] # -30D7 30FC ; [.3E8D.0020.0011.0002][.0000.0038.0002][.3E73.0020.0007.0002] # -30D5 309A 30FC ; [.3E8D.0020.0011.0002][.0000.0038.0002][.3E73.0020.0007.0002] # -FF8C FF9F 30FC ; [.3E8D.0020.0011.0002][.0000.0038.0002][.3E73.0020.0007.0002] # -FF8C FF9F FF70 ; [.3E8D.0020.0011.0002][.0000.0038.0002][.3E73.0020.0007.0002] # -3077 30FC ; [.3E8D.0020.0011.0001][.0000.0038.0002][.3E73.0020.0007.0002] # -3075 309A 30FC ; [.3E8D.0020.0011.0001][.0000.0038.0002][.3E73.0020.0007.0002] # -30E0 30FC ; [.3E92.0020.0011.0002][.3E73.0020.0007.0002] # -FF91 30FC ; [.3E92.0020.0011.0002][.3E73.0020.0007.0002] # -FF91 FF70 ; [.3E92.0020.0011.0002][.3E73.0020.0007.0002] # -3080 30FC ; [.3E92.0020.0011.0001][.3E73.0020.0007.0002] # -30E5 30FC ; [.3E96.0020.000F.0002][.3E73.0020.0007.0002] # -FF6D 30FC ; [.3E96.0020.000F.0002][.3E73.0020.0007.0002] # -FF6D FF70 ; [.3E96.0020.000F.0002][.3E73.0020.0007.0002] # -3085 30FC ; [.3E96.0020.000F.0001][.3E73.0020.0007.0002] # -30E6 30FC ; [.3E96.0020.0011.0002][.3E73.0020.0007.0002] # -FF95 30FC ; [.3E96.0020.0011.0002][.3E73.0020.0007.0002] # -FF95 FF70 ; [.3E96.0020.0011.0002][.3E73.0020.0007.0002] # -3086 30FC ; [.3E96.0020.0011.0001][.3E73.0020.0007.0002] # -30EB 30FC ; [.3E9A.0020.0011.0002][.3E73.0020.0007.0002] # -FF99 30FC ; [.3E9A.0020.0011.0002][.3E73.0020.0007.0002] # -FF99 FF70 ; [.3E9A.0020.0011.0002][.3E73.0020.0007.0002] # -308B 30FC ; [.3E9A.0020.0011.0001][.3E73.0020.0007.0002] # -30F4 30FC ; [.3E73.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -30A6 3099 30FC ; [.3E73.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -FF73 FF9E 30FC ; [.3E73.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -FF73 FF9E FF70 ; [.3E73.0020.0011.0002][.0000.0037.0002][.3E73.0020.0007.0002] # -3094 30FC ; [.3E73.0020.0011.0001][.0000.0037.0002][.3E73.0020.0007.0002] # -3046 3099 30FC ; [.3E73.0020.0011.0001][.0000.0037.0002][.3E73.0020.0007.0002] # -31F0 30FC ; [.3E79.0020.000F][.3E73.0020.0007.0002] # -31F2 30FC ; [.3E7E.0020.000F][.3E73.0020.0007.0002] # -31F4 30FC ; [.3E88.0020.000F][.3E73.0020.0007.0002] # -31F7 30FC ; [.3E8D.0020.000F][.3E73.0020.0007.0002] # -31FA 30FC ; [.3E92.0020.000F][.3E73.0020.0007.0002] # -31FD 30FC ; [.3E9A.0020.000F][.3E73.0020.0007.0002] # -30A7 30FC ; [.3E75.0020.000F.0002][.3E75.0020.0007.0002] # -FF6A 30FC ; [.3E75.0020.000F.0002][.3E75.0020.0007.0002] # -FF6A FF70 ; [.3E75.0020.000F.0002][.3E75.0020.0007.0002] # -3047 30FC ; [.3E75.0020.000F.0001][.3E75.0020.0007.0002] # -30A8 30FC ; [.3E75.0020.0011.0002][.3E75.0020.0007.0002] # -FF74 30FC ; [.3E75.0020.0011.0002][.3E75.0020.0007.0002] # -FF74 FF70 ; [.3E75.0020.0011.0002][.3E75.0020.0007.0002] # -3048 30FC ; [.3E75.0020.0011.0001][.3E75.0020.0007.0002] # -30B1 30FC ; [.3E7A.0020.0011.0002][.3E75.0020.0007.0002] # -FF79 30FC ; [.3E7A.0020.0011.0002][.3E75.0020.0007.0002] # -FF79 FF70 ; [.3E7A.0020.0011.0002][.3E75.0020.0007.0002] # -3051 30FC ; [.3E7A.0020.0011.0001][.3E75.0020.0007.0002] # -30B2 30FC ; [.3E7A.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -30B1 3099 30FC ; [.3E7A.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -FF79 FF9E 30FC ; [.3E7A.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -FF79 FF9E FF70 ; [.3E7A.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -3052 30FC ; [.3E7A.0020.0011.0001][.0000.0037.0002][.3E75.0020.0007.0002] # -3051 3099 30FC ; [.3E7A.0020.0011.0001][.0000.0037.0002][.3E75.0020.0007.0002] # -30BB 30FC ; [.3E7F.0020.0011.0002][.3E75.0020.0007.0002] # -FF7E 30FC ; [.3E7F.0020.0011.0002][.3E75.0020.0007.0002] # -FF7E FF70 ; [.3E7F.0020.0011.0002][.3E75.0020.0007.0002] # -305B 30FC ; [.3E7F.0020.0011.0001][.3E75.0020.0007.0002] # -30BC 30FC ; [.3E7F.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -30BB 3099 30FC ; [.3E7F.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -FF7E FF9E 30FC ; [.3E7F.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -FF7E FF9E FF70 ; [.3E7F.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -305C 30FC ; [.3E7F.0020.0011.0001][.0000.0037.0002][.3E75.0020.0007.0002] # -305B 3099 30FC ; [.3E7F.0020.0011.0001][.0000.0037.0002][.3E75.0020.0007.0002] # -30C6 30FC ; [.3E84.0020.0011.0002][.3E75.0020.0007.0002] # -FF83 30FC ; [.3E84.0020.0011.0002][.3E75.0020.0007.0002] # -FF83 FF70 ; [.3E84.0020.0011.0002][.3E75.0020.0007.0002] # -3066 30FC ; [.3E84.0020.0011.0001][.3E75.0020.0007.0002] # -30C7 30FC ; [.3E84.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -30C6 3099 30FC ; [.3E84.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -FF83 FF9E 30FC ; [.3E84.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -FF83 FF9E FF70 ; [.3E84.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -3067 30FC ; [.3E84.0020.0011.0001][.0000.0037.0002][.3E75.0020.0007.0002] # -3066 3099 30FC ; [.3E84.0020.0011.0001][.0000.0037.0002][.3E75.0020.0007.0002] # -30CD 30FC ; [.3E89.0020.0011.0002][.3E75.0020.0007.0002] # -FF88 30FC ; [.3E89.0020.0011.0002][.3E75.0020.0007.0002] # -FF88 FF70 ; [.3E89.0020.0011.0002][.3E75.0020.0007.0002] # -306D 30FC ; [.3E89.0020.0011.0001][.3E75.0020.0007.0002] # -30D8 30FC ; [.3E8E.0020.0011.0002][.3E75.0020.0007.0002] # -FF8D 30FC ; [.3E8E.0020.0011.0002][.3E75.0020.0007.0002] # -FF8D FF70 ; [.3E8E.0020.0011.0002][.3E75.0020.0007.0002] # -3078 30FC ; [.3E8E.0020.0011.0001][.3E75.0020.0007.0002] # -30D9 30FC ; [.3E8E.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -30D8 3099 30FC ; [.3E8E.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -FF8D FF9E 30FC ; [.3E8E.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -FF8D FF9E FF70 ; [.3E8E.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -3079 30FC ; [.3E8E.0020.0011.0001][.0000.0037.0002][.3E75.0020.0007.0002] # -3078 3099 30FC ; [.3E8E.0020.0011.0001][.0000.0037.0002][.3E75.0020.0007.0002] # -30DA 30FC ; [.3E8E.0020.0011.0002][.0000.0038.0002][.3E75.0020.0007.0002] # -30D8 309A 30FC ; [.3E8E.0020.0011.0002][.0000.0038.0002][.3E75.0020.0007.0002] # -FF8D FF9F 30FC ; [.3E8E.0020.0011.0002][.0000.0038.0002][.3E75.0020.0007.0002] # -FF8D FF9F FF70 ; [.3E8E.0020.0011.0002][.0000.0038.0002][.3E75.0020.0007.0002] # -307A 30FC ; [.3E8E.0020.0011.0001][.0000.0038.0002][.3E75.0020.0007.0002] # -3078 309A 30FC ; [.3E8E.0020.0011.0001][.0000.0038.0002][.3E75.0020.0007.0002] # -30E1 30FC ; [.3E93.0020.0011.0002][.3E75.0020.0007.0002] # -FF92 30FC ; [.3E93.0020.0011.0002][.3E75.0020.0007.0002] # -FF92 FF70 ; [.3E93.0020.0011.0002][.3E75.0020.0007.0002] # -3081 30FC ; [.3E93.0020.0011.0001][.3E75.0020.0007.0002] # -30EC 30FC ; [.3E9B.0020.0011.0002][.3E75.0020.0007.0002] # -FF9A 30FC ; [.3E9B.0020.0011.0002][.3E75.0020.0007.0002] # -FF9A FF70 ; [.3E9B.0020.0011.0002][.3E75.0020.0007.0002] # -308C 30FC ; [.3E9B.0020.0011.0001][.3E75.0020.0007.0002] # -30F1 30FC ; [.3E9F.0020.0011.0002][.3E75.0020.0007.0002] # -3091 30FC ; [.3E9F.0020.0011.0001][.3E75.0020.0007.0002] # -30F9 30FC ; [.3E9F.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -30F1 3099 30FC ; [.3E9F.0020.0011.0002][.0000.0037.0002][.3E75.0020.0007.0002] # -30F6 30FC ; [.3E7A.0020.000F.0002][.3E75.0020.0007.0002] # -3096 30FC ; [.3E7A.0020.000F.0001][.3E75.0020.0007.0002] # -31F8 30FC ; [.3E8E.0020.000F][.3E75.0020.0007.0002] # -31FE 30FC ; [.3E9B.0020.000F][.3E75.0020.0007.0002] # -30A9 30FC ; [.3E76.0020.000F.0002][.3E76.0020.0007.0002] # -FF6B 30FC ; [.3E76.0020.000F.0002][.3E76.0020.0007.0002] # -FF6B FF70 ; [.3E76.0020.000F.0002][.3E76.0020.0007.0002] # -3049 30FC ; [.3E76.0020.000F.0001][.3E76.0020.0007.0002] # -30AA 30FC ; [.3E76.0020.0011.0002][.3E76.0020.0007.0002] # -FF75 30FC ; [.3E76.0020.0011.0002][.3E76.0020.0007.0002] # -FF75 FF70 ; [.3E76.0020.0011.0002][.3E76.0020.0007.0002] # -304A 30FC ; [.3E76.0020.0011.0001][.3E76.0020.0007.0002] # -30B3 30FC ; [.3E7B.0020.0011.0002][.3E76.0020.0007.0002] # -FF7A 30FC ; [.3E7B.0020.0011.0002][.3E76.0020.0007.0002] # -FF7A FF70 ; [.3E7B.0020.0011.0002][.3E76.0020.0007.0002] # -3053 30FC ; [.3E7B.0020.0011.0001][.3E76.0020.0007.0002] # -30B4 30FC ; [.3E7B.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -30B3 3099 30FC ; [.3E7B.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -FF7A FF9E 30FC ; [.3E7B.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -FF7A FF9E FF70 ; [.3E7B.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -3054 30FC ; [.3E7B.0020.0011.0001][.0000.0037.0002][.3E76.0020.0007.0002] # -3053 3099 30FC ; [.3E7B.0020.0011.0001][.0000.0037.0002][.3E76.0020.0007.0002] # -30BD 30FC ; [.3E80.0020.0011.0002][.3E76.0020.0007.0002] # -FF7F 30FC ; [.3E80.0020.0011.0002][.3E76.0020.0007.0002] # -FF7F FF70 ; [.3E80.0020.0011.0002][.3E76.0020.0007.0002] # -305D 30FC ; [.3E80.0020.0011.0001][.3E76.0020.0007.0002] # -30BE 30FC ; [.3E80.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -30BD 3099 30FC ; [.3E80.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -FF7F FF9E 30FC ; [.3E80.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -FF7F FF9E FF70 ; [.3E80.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -305E 30FC ; [.3E80.0020.0011.0001][.0000.0037.0002][.3E76.0020.0007.0002] # -305D 3099 30FC ; [.3E80.0020.0011.0001][.0000.0037.0002][.3E76.0020.0007.0002] # -30C8 30FC ; [.3E85.0020.0011.0002][.3E76.0020.0007.0002] # -FF84 30FC ; [.3E85.0020.0011.0002][.3E76.0020.0007.0002] # -FF84 FF70 ; [.3E85.0020.0011.0002][.3E76.0020.0007.0002] # -3068 30FC ; [.3E85.0020.0011.0001][.3E76.0020.0007.0002] # -30C9 30FC ; [.3E85.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -30C8 3099 30FC ; [.3E85.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -FF84 FF9E 30FC ; [.3E85.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -FF84 FF9E FF70 ; [.3E85.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -3069 30FC ; [.3E85.0020.0011.0001][.0000.0037.0002][.3E76.0020.0007.0002] # -3068 3099 30FC ; [.3E85.0020.0011.0001][.0000.0037.0002][.3E76.0020.0007.0002] # -30CE 30FC ; [.3E8A.0020.0011.0002][.3E76.0020.0007.0002] # -FF89 30FC ; [.3E8A.0020.0011.0002][.3E76.0020.0007.0002] # -FF89 FF70 ; [.3E8A.0020.0011.0002][.3E76.0020.0007.0002] # -306E 30FC ; [.3E8A.0020.0011.0001][.3E76.0020.0007.0002] # -30DB 30FC ; [.3E8F.0020.0011.0002][.3E76.0020.0007.0002] # -FF8E 30FC ; [.3E8F.0020.0011.0002][.3E76.0020.0007.0002] # -FF8E FF70 ; [.3E8F.0020.0011.0002][.3E76.0020.0007.0002] # -307B 30FC ; [.3E8F.0020.0011.0001][.3E76.0020.0007.0002] # -30DC 30FC ; [.3E8F.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -30DB 3099 30FC ; [.3E8F.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -FF8E FF9E 30FC ; [.3E8F.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -FF8E FF9E FF70 ; [.3E8F.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -307C 30FC ; [.3E8F.0020.0011.0001][.0000.0037.0002][.3E76.0020.0007.0002] # -307B 3099 30FC ; [.3E8F.0020.0011.0001][.0000.0037.0002][.3E76.0020.0007.0002] # -30DD 30FC ; [.3E8F.0020.0011.0002][.0000.0038.0002][.3E76.0020.0007.0002] # -30DB 309A 30FC ; [.3E8F.0020.0011.0002][.0000.0038.0002][.3E76.0020.0007.0002] # -FF8E FF9F 30FC ; [.3E8F.0020.0011.0002][.0000.0038.0002][.3E76.0020.0007.0002] # -FF8E FF9F FF70 ; [.3E8F.0020.0011.0002][.0000.0038.0002][.3E76.0020.0007.0002] # -307D 30FC ; [.3E8F.0020.0011.0001][.0000.0038.0002][.3E76.0020.0007.0002] # -307B 309A 30FC ; [.3E8F.0020.0011.0001][.0000.0038.0002][.3E76.0020.0007.0002] # -30E2 30FC ; [.3E94.0020.0011.0002][.3E76.0020.0007.0002] # -FF93 30FC ; [.3E94.0020.0011.0002][.3E76.0020.0007.0002] # -FF93 FF70 ; [.3E94.0020.0011.0002][.3E76.0020.0007.0002] # -3082 30FC ; [.3E94.0020.0011.0001][.3E76.0020.0007.0002] # -30E7 30FC ; [.3E97.0020.000F.0002][.3E76.0020.0007.0002] # -FF6E 30FC ; [.3E97.0020.000F.0002][.3E76.0020.0007.0002] # -FF6E FF70 ; [.3E97.0020.000F.0002][.3E76.0020.0007.0002] # -3087 30FC ; [.3E97.0020.000F.0001][.3E76.0020.0007.0002] # -30E8 30FC ; [.3E97.0020.0011.0002][.3E76.0020.0007.0002] # -FF96 30FC ; [.3E97.0020.0011.0002][.3E76.0020.0007.0002] # -FF96 FF70 ; [.3E97.0020.0011.0002][.3E76.0020.0007.0002] # -3088 30FC ; [.3E97.0020.0011.0001][.3E76.0020.0007.0002] # -30ED 30FC ; [.3E9C.0020.0011.0002][.3E76.0020.0007.0002] # -FF9B 30FC ; [.3E9C.0020.0011.0002][.3E76.0020.0007.0002] # -FF9B FF70 ; [.3E9C.0020.0011.0002][.3E76.0020.0007.0002] # -308D 30FC ; [.3E9C.0020.0011.0001][.3E76.0020.0007.0002] # -30F2 30FC ; [.3EA0.0020.0011.0002][.3E76.0020.0007.0002] # -FF66 30FC ; [.3EA0.0020.0011.0002][.3E76.0020.0007.0002] # -FF66 FF70 ; [.3EA0.0020.0011.0002][.3E76.0020.0007.0002] # -3092 30FC ; [.3EA0.0020.0011.0001][.3E76.0020.0007.0002] # -30FA 30FC ; [.3EA0.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -30F2 3099 30FC ; [.3EA0.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -FF66 FF9E 30FC ; [.3EA0.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -FF66 FF9E FF70 ; [.3EA0.0020.0011.0002][.0000.0037.0002][.3E76.0020.0007.0002] # -31F3 30FC ; [.3E85.0020.000F][.3E76.0020.0007.0002] # -31F9 30FC ; [.3E8F.0020.000F][.3E76.0020.0007.0002] # -31FF 30FC ; [.3E9C.0020.000F][.3E76.0020.0007.0002] # -30A1 30FD ; [.3E71.0020.000F.0002][.3E71.0020.0010.0002] # -FF67 30FD ; [.3E71.0020.000F.0002][.3E71.0020.0010.0002] # -3041 309D ; [.3E71.0020.000F.0001][.3E71.0020.0010.0002] # -30A2 30FD ; [.3E71.0020.0011.0002][.3E71.0020.0010.0002] # -FF71 30FD ; [.3E71.0020.0011.0002][.3E71.0020.0010.0002] # -3042 309D ; [.3E71.0020.0011.0001][.3E71.0020.0010.0002] # -30A3 30FD ; [.3E72.0020.000F.0002][.3E72.0020.0010.0002] # -FF68 30FD ; [.3E72.0020.000F.0002][.3E72.0020.0010.0002] # -3043 309D ; [.3E72.0020.000F.0001][.3E72.0020.0010.0002] # -30A4 30FD ; [.3E72.0020.0011.0002][.3E72.0020.0010.0002] # -FF72 30FD ; [.3E72.0020.0011.0002][.3E72.0020.0010.0002] # -3044 309D ; [.3E72.0020.0011.0001][.3E72.0020.0010.0002] # -30A5 30FD ; [.3E73.0020.000F.0002][.3E73.0020.0010.0002] # -FF69 30FD ; [.3E73.0020.000F.0002][.3E73.0020.0010.0002] # -3045 309D ; [.3E73.0020.000F.0001][.3E73.0020.0010.0002] # -30A5 30FE ; [.3E73.0020.000F.0002][.3E73.0020.0010.0002][.0000.0037.0002] # -FF69 30FE ; [.3E73.0020.000F.0002][.3E73.0020.0010.0002][.0000.0037.0002] # -3045 309E ; [.3E73.0020.000F.0001][.3E73.0020.0010.0002][.0000.0037.0002] # -30A6 30FD ; [.3E73.0020.0011.0002][.3E73.0020.0010.0002] # -FF73 30FD ; [.3E73.0020.0011.0002][.3E73.0020.0010.0002] # -3046 309D ; [.3E73.0020.0011.0001][.3E73.0020.0010.0002] # -30A6 30FE ; [.3E73.0020.0011.0002][.3E73.0020.0010.0002][.0000.0037.0002] # -FF73 30FE ; [.3E73.0020.0011.0002][.3E73.0020.0010.0002][.0000.0037.0002] # -3046 309E ; [.3E73.0020.0011.0001][.3E73.0020.0010.0002][.0000.0037.0002] # -30A7 30FD ; [.3E75.0020.000F.0002][.3E75.0020.0010.0002] # -FF6A 30FD ; [.3E75.0020.000F.0002][.3E75.0020.0010.0002] # -3047 309D ; [.3E75.0020.000F.0001][.3E75.0020.0010.0002] # -30A8 30FD ; [.3E75.0020.0011.0002][.3E75.0020.0010.0002] # -FF74 30FD ; [.3E75.0020.0011.0002][.3E75.0020.0010.0002] # -3048 309D ; [.3E75.0020.0011.0001][.3E75.0020.0010.0002] # -30A9 30FD ; [.3E76.0020.000F.0002][.3E76.0020.0010.0002] # -FF6B 30FD ; [.3E76.0020.000F.0002][.3E76.0020.0010.0002] # -3049 309D ; [.3E76.0020.000F.0001][.3E76.0020.0010.0002] # -30AA 30FD ; [.3E76.0020.0011.0002][.3E76.0020.0010.0002] # -FF75 30FD ; [.3E76.0020.0011.0002][.3E76.0020.0010.0002] # -304A 309D ; [.3E76.0020.0011.0001][.3E76.0020.0010.0002] # -30AB 30FD ; [.3E77.0020.0011.0002][.3E77.0020.0010.0002] # -FF76 30FD ; [.3E77.0020.0011.0002][.3E77.0020.0010.0002] # -304B 309D ; [.3E77.0020.0011.0001][.3E77.0020.0010.0002] # -30AB 30FE ; [.3E77.0020.0011.0002][.3E77.0020.0010.0002][.0000.0037.0002] # -FF76 30FE ; [.3E77.0020.0011.0002][.3E77.0020.0010.0002][.0000.0037.0002] # -304B 309E ; [.3E77.0020.0011.0001][.3E77.0020.0010.0002][.0000.0037.0002] # -30AC 30FD ; [.3E77.0020.0011.0002][.0000.0037.0002][.3E77.0020.0010.0002] # -30AB 3099 30FD ; [.3E77.0020.0011.0002][.0000.0037.0002][.3E77.0020.0010.0002] # -FF76 FF9E 30FD ; [.3E77.0020.0011.0002][.0000.0037.0002][.3E77.0020.0010.0002] # -304C 309D ; [.3E77.0020.0011.0001][.0000.0037.0002][.3E77.0020.0010.0002] # -304B 3099 309D ; [.3E77.0020.0011.0001][.0000.0037.0002][.3E77.0020.0010.0002] # -30AC 30FE ; [.3E77.0020.0011.0002][.0000.0037.0002][.3E77.0020.0010.0002][.0000.0037.0002] # -30AB 3099 30FE ; [.3E77.0020.0011.0002][.0000.0037.0002][.3E77.0020.0010.0002][.0000.0037.0002] # -FF76 FF9E 30FE ; [.3E77.0020.0011.0002][.0000.0037.0002][.3E77.0020.0010.0002][.0000.0037.0002] # -304C 309E ; [.3E77.0020.0011.0001][.0000.0037.0002][.3E77.0020.0010.0002][.0000.0037.0002] # -304B 3099 309E ; [.3E77.0020.0011.0001][.0000.0037.0002][.3E77.0020.0010.0002][.0000.0037.0002] # -30AD 30FD ; [.3E78.0020.0011.0002][.3E78.0020.0010.0002] # -FF77 30FD ; [.3E78.0020.0011.0002][.3E78.0020.0010.0002] # -304D 309D ; [.3E78.0020.0011.0001][.3E78.0020.0010.0002] # -30AD 30FE ; [.3E78.0020.0011.0002][.3E78.0020.0010.0002][.0000.0037.0002] # -FF77 30FE ; [.3E78.0020.0011.0002][.3E78.0020.0010.0002][.0000.0037.0002] # -304D 309E ; [.3E78.0020.0011.0001][.3E78.0020.0010.0002][.0000.0037.0002] # -30AE 30FD ; [.3E78.0020.0011.0002][.0000.0037.0002][.3E78.0020.0010.0002] # -30AD 3099 30FD ; [.3E78.0020.0011.0002][.0000.0037.0002][.3E78.0020.0010.0002] # -FF77 FF9E 30FD ; [.3E78.0020.0011.0002][.0000.0037.0002][.3E78.0020.0010.0002] # -304E 309D ; [.3E78.0020.0011.0001][.0000.0037.0002][.3E78.0020.0010.0002] # -304D 3099 309D ; [.3E78.0020.0011.0001][.0000.0037.0002][.3E78.0020.0010.0002] # -30AE 30FE ; [.3E78.0020.0011.0002][.0000.0037.0002][.3E78.0020.0010.0002][.0000.0037.0002] # -30AD 3099 30FE ; [.3E78.0020.0011.0002][.0000.0037.0002][.3E78.0020.0010.0002][.0000.0037.0002] # -FF77 FF9E 30FE ; [.3E78.0020.0011.0002][.0000.0037.0002][.3E78.0020.0010.0002][.0000.0037.0002] # -304E 309E ; [.3E78.0020.0011.0001][.0000.0037.0002][.3E78.0020.0010.0002][.0000.0037.0002] # -304D 3099 309E ; [.3E78.0020.0011.0001][.0000.0037.0002][.3E78.0020.0010.0002][.0000.0037.0002] # -30AF 30FD ; [.3E79.0020.0011.0002][.3E79.0020.0010.0002] # -FF78 30FD ; [.3E79.0020.0011.0002][.3E79.0020.0010.0002] # -304F 309D ; [.3E79.0020.0011.0001][.3E79.0020.0010.0002] # -30AF 30FE ; [.3E79.0020.0011.0002][.3E79.0020.0010.0002][.0000.0037.0002] # -FF78 30FE ; [.3E79.0020.0011.0002][.3E79.0020.0010.0002][.0000.0037.0002] # -304F 309E ; [.3E79.0020.0011.0001][.3E79.0020.0010.0002][.0000.0037.0002] # -30B0 30FD ; [.3E79.0020.0011.0002][.0000.0037.0002][.3E79.0020.0010.0002] # -30AF 3099 30FD ; [.3E79.0020.0011.0002][.0000.0037.0002][.3E79.0020.0010.0002] # -FF78 FF9E 30FD ; [.3E79.0020.0011.0002][.0000.0037.0002][.3E79.0020.0010.0002] # -3050 309D ; [.3E79.0020.0011.0001][.0000.0037.0002][.3E79.0020.0010.0002] # -304F 3099 309D ; [.3E79.0020.0011.0001][.0000.0037.0002][.3E79.0020.0010.0002] # -30B0 30FE ; [.3E79.0020.0011.0002][.0000.0037.0002][.3E79.0020.0010.0002][.0000.0037.0002] # -30AF 3099 30FE ; [.3E79.0020.0011.0002][.0000.0037.0002][.3E79.0020.0010.0002][.0000.0037.0002] # -FF78 FF9E 30FE ; [.3E79.0020.0011.0002][.0000.0037.0002][.3E79.0020.0010.0002][.0000.0037.0002] # -3050 309E ; [.3E79.0020.0011.0001][.0000.0037.0002][.3E79.0020.0010.0002][.0000.0037.0002] # -304F 3099 309E ; [.3E79.0020.0011.0001][.0000.0037.0002][.3E79.0020.0010.0002][.0000.0037.0002] # -30B1 30FD ; [.3E7A.0020.0011.0002][.3E7A.0020.0010.0002] # -FF79 30FD ; [.3E7A.0020.0011.0002][.3E7A.0020.0010.0002] # -3051 309D ; [.3E7A.0020.0011.0001][.3E7A.0020.0010.0002] # -30B1 30FE ; [.3E7A.0020.0011.0002][.3E7A.0020.0010.0002][.0000.0037.0002] # -FF79 30FE ; [.3E7A.0020.0011.0002][.3E7A.0020.0010.0002][.0000.0037.0002] # -3051 309E ; [.3E7A.0020.0011.0001][.3E7A.0020.0010.0002][.0000.0037.0002] # -30B2 30FD ; [.3E7A.0020.0011.0002][.0000.0037.0002][.3E7A.0020.0010.0002] # -30B1 3099 30FD ; [.3E7A.0020.0011.0002][.0000.0037.0002][.3E7A.0020.0010.0002] # -FF79 FF9E 30FD ; [.3E7A.0020.0011.0002][.0000.0037.0002][.3E7A.0020.0010.0002] # -3052 309D ; [.3E7A.0020.0011.0001][.0000.0037.0002][.3E7A.0020.0010.0002] # -3051 3099 309D ; [.3E7A.0020.0011.0001][.0000.0037.0002][.3E7A.0020.0010.0002] # -30B2 30FE ; [.3E7A.0020.0011.0002][.0000.0037.0002][.3E7A.0020.0010.0002][.0000.0037.0002] # -30B1 3099 30FE ; [.3E7A.0020.0011.0002][.0000.0037.0002][.3E7A.0020.0010.0002][.0000.0037.0002] # -FF79 FF9E 30FE ; [.3E7A.0020.0011.0002][.0000.0037.0002][.3E7A.0020.0010.0002][.0000.0037.0002] # -3052 309E ; [.3E7A.0020.0011.0001][.0000.0037.0002][.3E7A.0020.0010.0002][.0000.0037.0002] # -3051 3099 309E ; [.3E7A.0020.0011.0001][.0000.0037.0002][.3E7A.0020.0010.0002][.0000.0037.0002] # -30B3 30FD ; [.3E7B.0020.0011.0002][.3E7B.0020.0010.0002] # -FF7A 30FD ; [.3E7B.0020.0011.0002][.3E7B.0020.0010.0002] # -3053 309D ; [.3E7B.0020.0011.0001][.3E7B.0020.0010.0002] # -30B3 30FE ; [.3E7B.0020.0011.0002][.3E7B.0020.0010.0002][.0000.0037.0002] # -FF7A 30FE ; [.3E7B.0020.0011.0002][.3E7B.0020.0010.0002][.0000.0037.0002] # -3053 309E ; [.3E7B.0020.0011.0001][.3E7B.0020.0010.0002][.0000.0037.0002] # -30B4 30FD ; [.3E7B.0020.0011.0002][.0000.0037.0002][.3E7B.0020.0010.0002] # -30B3 3099 30FD ; [.3E7B.0020.0011.0002][.0000.0037.0002][.3E7B.0020.0010.0002] # -FF7A FF9E 30FD ; [.3E7B.0020.0011.0002][.0000.0037.0002][.3E7B.0020.0010.0002] # -3054 309D ; [.3E7B.0020.0011.0001][.0000.0037.0002][.3E7B.0020.0010.0002] # -3053 3099 309D ; [.3E7B.0020.0011.0001][.0000.0037.0002][.3E7B.0020.0010.0002] # -30B4 30FE ; [.3E7B.0020.0011.0002][.0000.0037.0002][.3E7B.0020.0010.0002][.0000.0037.0002] # -30B3 3099 30FE ; [.3E7B.0020.0011.0002][.0000.0037.0002][.3E7B.0020.0010.0002][.0000.0037.0002] # -FF7A FF9E 30FE ; [.3E7B.0020.0011.0002][.0000.0037.0002][.3E7B.0020.0010.0002][.0000.0037.0002] # -3054 309E ; [.3E7B.0020.0011.0001][.0000.0037.0002][.3E7B.0020.0010.0002][.0000.0037.0002] # -3053 3099 309E ; [.3E7B.0020.0011.0001][.0000.0037.0002][.3E7B.0020.0010.0002][.0000.0037.0002] # -30B5 30FD ; [.3E7C.0020.0011.0002][.3E7C.0020.0010.0002] # -FF7B 30FD ; [.3E7C.0020.0011.0002][.3E7C.0020.0010.0002] # -3055 309D ; [.3E7C.0020.0011.0001][.3E7C.0020.0010.0002] # -30B5 30FE ; [.3E7C.0020.0011.0002][.3E7C.0020.0010.0002][.0000.0037.0002] # -FF7B 30FE ; [.3E7C.0020.0011.0002][.3E7C.0020.0010.0002][.0000.0037.0002] # -3055 309E ; [.3E7C.0020.0011.0001][.3E7C.0020.0010.0002][.0000.0037.0002] # -30B6 30FD ; [.3E7C.0020.0011.0002][.0000.0037.0002][.3E7C.0020.0010.0002] # -30B5 3099 30FD ; [.3E7C.0020.0011.0002][.0000.0037.0002][.3E7C.0020.0010.0002] # -FF7B FF9E 30FD ; [.3E7C.0020.0011.0002][.0000.0037.0002][.3E7C.0020.0010.0002] # -3056 309D ; [.3E7C.0020.0011.0001][.0000.0037.0002][.3E7C.0020.0010.0002] # -3055 3099 309D ; [.3E7C.0020.0011.0001][.0000.0037.0002][.3E7C.0020.0010.0002] # -30B6 30FE ; [.3E7C.0020.0011.0002][.0000.0037.0002][.3E7C.0020.0010.0002][.0000.0037.0002] # -30B5 3099 30FE ; [.3E7C.0020.0011.0002][.0000.0037.0002][.3E7C.0020.0010.0002][.0000.0037.0002] # -FF7B FF9E 30FE ; [.3E7C.0020.0011.0002][.0000.0037.0002][.3E7C.0020.0010.0002][.0000.0037.0002] # -3056 309E ; [.3E7C.0020.0011.0001][.0000.0037.0002][.3E7C.0020.0010.0002][.0000.0037.0002] # -3055 3099 309E ; [.3E7C.0020.0011.0001][.0000.0037.0002][.3E7C.0020.0010.0002][.0000.0037.0002] # -30B7 30FD ; [.3E7D.0020.0011.0002][.3E7D.0020.0010.0002] # -FF7C 30FD ; [.3E7D.0020.0011.0002][.3E7D.0020.0010.0002] # -3057 309D ; [.3E7D.0020.0011.0001][.3E7D.0020.0010.0002] # -30B7 30FE ; [.3E7D.0020.0011.0002][.3E7D.0020.0010.0002][.0000.0037.0002] # -FF7C 30FE ; [.3E7D.0020.0011.0002][.3E7D.0020.0010.0002][.0000.0037.0002] # -3057 309E ; [.3E7D.0020.0011.0001][.3E7D.0020.0010.0002][.0000.0037.0002] # -30B8 30FD ; [.3E7D.0020.0011.0002][.0000.0037.0002][.3E7D.0020.0010.0002] # -30B7 3099 30FD ; [.3E7D.0020.0011.0002][.0000.0037.0002][.3E7D.0020.0010.0002] # -FF7C FF9E 30FD ; [.3E7D.0020.0011.0002][.0000.0037.0002][.3E7D.0020.0010.0002] # -3058 309D ; [.3E7D.0020.0011.0001][.0000.0037.0002][.3E7D.0020.0010.0002] # -3057 3099 309D ; [.3E7D.0020.0011.0001][.0000.0037.0002][.3E7D.0020.0010.0002] # -30B8 30FE ; [.3E7D.0020.0011.0002][.0000.0037.0002][.3E7D.0020.0010.0002][.0000.0037.0002] # -30B7 3099 30FE ; [.3E7D.0020.0011.0002][.0000.0037.0002][.3E7D.0020.0010.0002][.0000.0037.0002] # -FF7C FF9E 30FE ; [.3E7D.0020.0011.0002][.0000.0037.0002][.3E7D.0020.0010.0002][.0000.0037.0002] # -3058 309E ; [.3E7D.0020.0011.0001][.0000.0037.0002][.3E7D.0020.0010.0002][.0000.0037.0002] # -3057 3099 309E ; [.3E7D.0020.0011.0001][.0000.0037.0002][.3E7D.0020.0010.0002][.0000.0037.0002] # -30B9 30FD ; [.3E7E.0020.0011.0002][.3E7E.0020.0010.0002] # -FF7D 30FD ; [.3E7E.0020.0011.0002][.3E7E.0020.0010.0002] # -3059 309D ; [.3E7E.0020.0011.0001][.3E7E.0020.0010.0002] # -30B9 30FE ; [.3E7E.0020.0011.0002][.3E7E.0020.0010.0002][.0000.0037.0002] # -FF7D 30FE ; [.3E7E.0020.0011.0002][.3E7E.0020.0010.0002][.0000.0037.0002] # -3059 309E ; [.3E7E.0020.0011.0001][.3E7E.0020.0010.0002][.0000.0037.0002] # -30BA 30FD ; [.3E7E.0020.0011.0002][.0000.0037.0002][.3E7E.0020.0010.0002] # -30B9 3099 30FD ; [.3E7E.0020.0011.0002][.0000.0037.0002][.3E7E.0020.0010.0002] # -FF7D FF9E 30FD ; [.3E7E.0020.0011.0002][.0000.0037.0002][.3E7E.0020.0010.0002] # -305A 309D ; [.3E7E.0020.0011.0001][.0000.0037.0002][.3E7E.0020.0010.0002] # -3059 3099 309D ; [.3E7E.0020.0011.0001][.0000.0037.0002][.3E7E.0020.0010.0002] # -30BA 30FE ; [.3E7E.0020.0011.0002][.0000.0037.0002][.3E7E.0020.0010.0002][.0000.0037.0002] # -30B9 3099 30FE ; [.3E7E.0020.0011.0002][.0000.0037.0002][.3E7E.0020.0010.0002][.0000.0037.0002] # -FF7D FF9E 30FE ; [.3E7E.0020.0011.0002][.0000.0037.0002][.3E7E.0020.0010.0002][.0000.0037.0002] # -305A 309E ; [.3E7E.0020.0011.0001][.0000.0037.0002][.3E7E.0020.0010.0002][.0000.0037.0002] # -3059 3099 309E ; [.3E7E.0020.0011.0001][.0000.0037.0002][.3E7E.0020.0010.0002][.0000.0037.0002] # -30BB 30FD ; [.3E7F.0020.0011.0002][.3E7F.0020.0010.0002] # -FF7E 30FD ; [.3E7F.0020.0011.0002][.3E7F.0020.0010.0002] # -305B 309D ; [.3E7F.0020.0011.0001][.3E7F.0020.0010.0002] # -30BB 30FE ; [.3E7F.0020.0011.0002][.3E7F.0020.0010.0002][.0000.0037.0002] # -FF7E 30FE ; [.3E7F.0020.0011.0002][.3E7F.0020.0010.0002][.0000.0037.0002] # -305B 309E ; [.3E7F.0020.0011.0001][.3E7F.0020.0010.0002][.0000.0037.0002] # -30BC 30FD ; [.3E7F.0020.0011.0002][.0000.0037.0002][.3E7F.0020.0010.0002] # -30BB 3099 30FD ; [.3E7F.0020.0011.0002][.0000.0037.0002][.3E7F.0020.0010.0002] # -FF7E FF9E 30FD ; [.3E7F.0020.0011.0002][.0000.0037.0002][.3E7F.0020.0010.0002] # -305C 309D ; [.3E7F.0020.0011.0001][.0000.0037.0002][.3E7F.0020.0010.0002] # -305B 3099 309D ; [.3E7F.0020.0011.0001][.0000.0037.0002][.3E7F.0020.0010.0002] # -30BC 30FE ; [.3E7F.0020.0011.0002][.0000.0037.0002][.3E7F.0020.0010.0002][.0000.0037.0002] # -30BB 3099 30FE ; [.3E7F.0020.0011.0002][.0000.0037.0002][.3E7F.0020.0010.0002][.0000.0037.0002] # -FF7E FF9E 30FE ; [.3E7F.0020.0011.0002][.0000.0037.0002][.3E7F.0020.0010.0002][.0000.0037.0002] # -305C 309E ; [.3E7F.0020.0011.0001][.0000.0037.0002][.3E7F.0020.0010.0002][.0000.0037.0002] # -305B 3099 309E ; [.3E7F.0020.0011.0001][.0000.0037.0002][.3E7F.0020.0010.0002][.0000.0037.0002] # -30BD 30FD ; [.3E80.0020.0011.0002][.3E80.0020.0010.0002] # -FF7F 30FD ; [.3E80.0020.0011.0002][.3E80.0020.0010.0002] # -305D 309D ; [.3E80.0020.0011.0001][.3E80.0020.0010.0002] # -30BD 30FE ; [.3E80.0020.0011.0002][.3E80.0020.0010.0002][.0000.0037.0002] # -FF7F 30FE ; [.3E80.0020.0011.0002][.3E80.0020.0010.0002][.0000.0037.0002] # -305D 309E ; [.3E80.0020.0011.0001][.3E80.0020.0010.0002][.0000.0037.0002] # -30BE 30FD ; [.3E80.0020.0011.0002][.0000.0037.0002][.3E80.0020.0010.0002] # -30BD 3099 30FD ; [.3E80.0020.0011.0002][.0000.0037.0002][.3E80.0020.0010.0002] # -FF7F FF9E 30FD ; [.3E80.0020.0011.0002][.0000.0037.0002][.3E80.0020.0010.0002] # -305E 309D ; [.3E80.0020.0011.0001][.0000.0037.0002][.3E80.0020.0010.0002] # -305D 3099 309D ; [.3E80.0020.0011.0001][.0000.0037.0002][.3E80.0020.0010.0002] # -30BE 30FE ; [.3E80.0020.0011.0002][.0000.0037.0002][.3E80.0020.0010.0002][.0000.0037.0002] # -30BD 3099 30FE ; [.3E80.0020.0011.0002][.0000.0037.0002][.3E80.0020.0010.0002][.0000.0037.0002] # -FF7F FF9E 30FE ; [.3E80.0020.0011.0002][.0000.0037.0002][.3E80.0020.0010.0002][.0000.0037.0002] # -305E 309E ; [.3E80.0020.0011.0001][.0000.0037.0002][.3E80.0020.0010.0002][.0000.0037.0002] # -305D 3099 309E ; [.3E80.0020.0011.0001][.0000.0037.0002][.3E80.0020.0010.0002][.0000.0037.0002] # -30BF 30FD ; [.3E81.0020.0011.0002][.3E81.0020.0010.0002] # -FF80 30FD ; [.3E81.0020.0011.0002][.3E81.0020.0010.0002] # -305F 309D ; [.3E81.0020.0011.0001][.3E81.0020.0010.0002] # -30BF 30FE ; [.3E81.0020.0011.0002][.3E81.0020.0010.0002][.0000.0037.0002] # -FF80 30FE ; [.3E81.0020.0011.0002][.3E81.0020.0010.0002][.0000.0037.0002] # -305F 309E ; [.3E81.0020.0011.0001][.3E81.0020.0010.0002][.0000.0037.0002] # -30C0 30FD ; [.3E81.0020.0011.0002][.0000.0037.0002][.3E81.0020.0010.0002] # -30BF 3099 30FD ; [.3E81.0020.0011.0002][.0000.0037.0002][.3E81.0020.0010.0002] # -FF80 FF9E 30FD ; [.3E81.0020.0011.0002][.0000.0037.0002][.3E81.0020.0010.0002] # -3060 309D ; [.3E81.0020.0011.0001][.0000.0037.0002][.3E81.0020.0010.0002] # -305F 3099 309D ; [.3E81.0020.0011.0001][.0000.0037.0002][.3E81.0020.0010.0002] # -30C0 30FE ; [.3E81.0020.0011.0002][.0000.0037.0002][.3E81.0020.0010.0002][.0000.0037.0002] # -30BF 3099 30FE ; [.3E81.0020.0011.0002][.0000.0037.0002][.3E81.0020.0010.0002][.0000.0037.0002] # -FF80 FF9E 30FE ; [.3E81.0020.0011.0002][.0000.0037.0002][.3E81.0020.0010.0002][.0000.0037.0002] # -3060 309E ; [.3E81.0020.0011.0001][.0000.0037.0002][.3E81.0020.0010.0002][.0000.0037.0002] # -305F 3099 309E ; [.3E81.0020.0011.0001][.0000.0037.0002][.3E81.0020.0010.0002][.0000.0037.0002] # -30C1 30FD ; [.3E82.0020.0011.0002][.3E82.0020.0010.0002] # -FF81 30FD ; [.3E82.0020.0011.0002][.3E82.0020.0010.0002] # -3061 309D ; [.3E82.0020.0011.0001][.3E82.0020.0010.0002] # -30C1 30FE ; [.3E82.0020.0011.0002][.3E82.0020.0010.0002][.0000.0037.0002] # -FF81 30FE ; [.3E82.0020.0011.0002][.3E82.0020.0010.0002][.0000.0037.0002] # -3061 309E ; [.3E82.0020.0011.0001][.3E82.0020.0010.0002][.0000.0037.0002] # -30C2 30FD ; [.3E82.0020.0011.0002][.0000.0037.0002][.3E82.0020.0010.0002] # -30C1 3099 30FD ; [.3E82.0020.0011.0002][.0000.0037.0002][.3E82.0020.0010.0002] # -FF81 FF9E 30FD ; [.3E82.0020.0011.0002][.0000.0037.0002][.3E82.0020.0010.0002] # -3062 309D ; [.3E82.0020.0011.0001][.0000.0037.0002][.3E82.0020.0010.0002] # -3061 3099 309D ; [.3E82.0020.0011.0001][.0000.0037.0002][.3E82.0020.0010.0002] # -30C2 30FE ; [.3E82.0020.0011.0002][.0000.0037.0002][.3E82.0020.0010.0002][.0000.0037.0002] # -30C1 3099 30FE ; [.3E82.0020.0011.0002][.0000.0037.0002][.3E82.0020.0010.0002][.0000.0037.0002] # -FF81 FF9E 30FE ; [.3E82.0020.0011.0002][.0000.0037.0002][.3E82.0020.0010.0002][.0000.0037.0002] # -3062 309E ; [.3E82.0020.0011.0001][.0000.0037.0002][.3E82.0020.0010.0002][.0000.0037.0002] # -3061 3099 309E ; [.3E82.0020.0011.0001][.0000.0037.0002][.3E82.0020.0010.0002][.0000.0037.0002] # -30C3 30FD ; [.3E83.0020.000F.0002][.3E83.0020.0010.0002] # -FF6F 30FD ; [.3E83.0020.000F.0002][.3E83.0020.0010.0002] # -3063 309D ; [.3E83.0020.000F.0001][.3E83.0020.0010.0002] # -30C3 30FE ; [.3E83.0020.000F.0002][.3E83.0020.0010.0002][.0000.0037.0002] # -FF6F 30FE ; [.3E83.0020.000F.0002][.3E83.0020.0010.0002][.0000.0037.0002] # -3063 309E ; [.3E83.0020.000F.0001][.3E83.0020.0010.0002][.0000.0037.0002] # -30C4 30FD ; [.3E83.0020.0011.0002][.3E83.0020.0010.0002] # -FF82 30FD ; [.3E83.0020.0011.0002][.3E83.0020.0010.0002] # -3064 309D ; [.3E83.0020.0011.0001][.3E83.0020.0010.0002] # -30C4 30FE ; [.3E83.0020.0011.0002][.3E83.0020.0010.0002][.0000.0037.0002] # -FF82 30FE ; [.3E83.0020.0011.0002][.3E83.0020.0010.0002][.0000.0037.0002] # -3064 309E ; [.3E83.0020.0011.0001][.3E83.0020.0010.0002][.0000.0037.0002] # -30C5 30FD ; [.3E83.0020.0011.0002][.0000.0037.0002][.3E83.0020.0010.0002] # -30C4 3099 30FD ; [.3E83.0020.0011.0002][.0000.0037.0002][.3E83.0020.0010.0002] # -FF82 FF9E 30FD ; [.3E83.0020.0011.0002][.0000.0037.0002][.3E83.0020.0010.0002] # -3065 309D ; [.3E83.0020.0011.0001][.0000.0037.0002][.3E83.0020.0010.0002] # -3064 3099 309D ; [.3E83.0020.0011.0001][.0000.0037.0002][.3E83.0020.0010.0002] # -30C5 30FE ; [.3E83.0020.0011.0002][.0000.0037.0002][.3E83.0020.0010.0002][.0000.0037.0002] # -30C4 3099 30FE ; [.3E83.0020.0011.0002][.0000.0037.0002][.3E83.0020.0010.0002][.0000.0037.0002] # -FF82 FF9E 30FE ; [.3E83.0020.0011.0002][.0000.0037.0002][.3E83.0020.0010.0002][.0000.0037.0002] # -3065 309E ; [.3E83.0020.0011.0001][.0000.0037.0002][.3E83.0020.0010.0002][.0000.0037.0002] # -3064 3099 309E ; [.3E83.0020.0011.0001][.0000.0037.0002][.3E83.0020.0010.0002][.0000.0037.0002] # -30C6 30FD ; [.3E84.0020.0011.0002][.3E84.0020.0010.0002] # -FF83 30FD ; [.3E84.0020.0011.0002][.3E84.0020.0010.0002] # -3066 309D ; [.3E84.0020.0011.0001][.3E84.0020.0010.0002] # -30C6 30FE ; [.3E84.0020.0011.0002][.3E84.0020.0010.0002][.0000.0037.0002] # -FF83 30FE ; [.3E84.0020.0011.0002][.3E84.0020.0010.0002][.0000.0037.0002] # -3066 309E ; [.3E84.0020.0011.0001][.3E84.0020.0010.0002][.0000.0037.0002] # -30C7 30FD ; [.3E84.0020.0011.0002][.0000.0037.0002][.3E84.0020.0010.0002] # -30C6 3099 30FD ; [.3E84.0020.0011.0002][.0000.0037.0002][.3E84.0020.0010.0002] # -FF83 FF9E 30FD ; [.3E84.0020.0011.0002][.0000.0037.0002][.3E84.0020.0010.0002] # -3067 309D ; [.3E84.0020.0011.0001][.0000.0037.0002][.3E84.0020.0010.0002] # -3066 3099 309D ; [.3E84.0020.0011.0001][.0000.0037.0002][.3E84.0020.0010.0002] # -30C7 30FE ; [.3E84.0020.0011.0002][.0000.0037.0002][.3E84.0020.0010.0002][.0000.0037.0002] # -30C6 3099 30FE ; [.3E84.0020.0011.0002][.0000.0037.0002][.3E84.0020.0010.0002][.0000.0037.0002] # -FF83 FF9E 30FE ; [.3E84.0020.0011.0002][.0000.0037.0002][.3E84.0020.0010.0002][.0000.0037.0002] # -3067 309E ; [.3E84.0020.0011.0001][.0000.0037.0002][.3E84.0020.0010.0002][.0000.0037.0002] # -3066 3099 309E ; [.3E84.0020.0011.0001][.0000.0037.0002][.3E84.0020.0010.0002][.0000.0037.0002] # -30C8 30FD ; [.3E85.0020.0011.0002][.3E85.0020.0010.0002] # -FF84 30FD ; [.3E85.0020.0011.0002][.3E85.0020.0010.0002] # -3068 309D ; [.3E85.0020.0011.0001][.3E85.0020.0010.0002] # -30C8 30FE ; [.3E85.0020.0011.0002][.3E85.0020.0010.0002][.0000.0037.0002] # -FF84 30FE ; [.3E85.0020.0011.0002][.3E85.0020.0010.0002][.0000.0037.0002] # -3068 309E ; [.3E85.0020.0011.0001][.3E85.0020.0010.0002][.0000.0037.0002] # -30C9 30FD ; [.3E85.0020.0011.0002][.0000.0037.0002][.3E85.0020.0010.0002] # -30C8 3099 30FD ; [.3E85.0020.0011.0002][.0000.0037.0002][.3E85.0020.0010.0002] # -FF84 FF9E 30FD ; [.3E85.0020.0011.0002][.0000.0037.0002][.3E85.0020.0010.0002] # -3069 309D ; [.3E85.0020.0011.0001][.0000.0037.0002][.3E85.0020.0010.0002] # -3068 3099 309D ; [.3E85.0020.0011.0001][.0000.0037.0002][.3E85.0020.0010.0002] # -30C9 30FE ; [.3E85.0020.0011.0002][.0000.0037.0002][.3E85.0020.0010.0002][.0000.0037.0002] # -30C8 3099 30FE ; [.3E85.0020.0011.0002][.0000.0037.0002][.3E85.0020.0010.0002][.0000.0037.0002] # -FF84 FF9E 30FE ; [.3E85.0020.0011.0002][.0000.0037.0002][.3E85.0020.0010.0002][.0000.0037.0002] # -3069 309E ; [.3E85.0020.0011.0001][.0000.0037.0002][.3E85.0020.0010.0002][.0000.0037.0002] # -3068 3099 309E ; [.3E85.0020.0011.0001][.0000.0037.0002][.3E85.0020.0010.0002][.0000.0037.0002] # -30CA 30FD ; [.3E86.0020.0011.0002][.3E86.0020.0010.0002] # -FF85 30FD ; [.3E86.0020.0011.0002][.3E86.0020.0010.0002] # -306A 309D ; [.3E86.0020.0011.0001][.3E86.0020.0010.0002] # -30CB 30FD ; [.3E87.0020.0011.0002][.3E87.0020.0010.0002] # -FF86 30FD ; [.3E87.0020.0011.0002][.3E87.0020.0010.0002] # -306B 309D ; [.3E87.0020.0011.0001][.3E87.0020.0010.0002] # -30CC 30FD ; [.3E88.0020.0011.0002][.3E88.0020.0010.0002] # -FF87 30FD ; [.3E88.0020.0011.0002][.3E88.0020.0010.0002] # -306C 309D ; [.3E88.0020.0011.0001][.3E88.0020.0010.0002] # -30CD 30FD ; [.3E89.0020.0011.0002][.3E89.0020.0010.0002] # -FF88 30FD ; [.3E89.0020.0011.0002][.3E89.0020.0010.0002] # -306D 309D ; [.3E89.0020.0011.0001][.3E89.0020.0010.0002] # -30CE 30FD ; [.3E8A.0020.0011.0002][.3E8A.0020.0010.0002] # -FF89 30FD ; [.3E8A.0020.0011.0002][.3E8A.0020.0010.0002] # -306E 309D ; [.3E8A.0020.0011.0001][.3E8A.0020.0010.0002] # -30CF 30FD ; [.3E8B.0020.0011.0002][.3E8B.0020.0010.0002] # -FF8A 30FD ; [.3E8B.0020.0011.0002][.3E8B.0020.0010.0002] # -306F 309D ; [.3E8B.0020.0011.0001][.3E8B.0020.0010.0002] # -30CF 30FE ; [.3E8B.0020.0011.0002][.3E8B.0020.0010.0002][.0000.0037.0002] # -FF8A 30FE ; [.3E8B.0020.0011.0002][.3E8B.0020.0010.0002][.0000.0037.0002] # -306F 309E ; [.3E8B.0020.0011.0001][.3E8B.0020.0010.0002][.0000.0037.0002] # -30D0 30FD ; [.3E8B.0020.0011.0002][.0000.0037.0002][.3E8B.0020.0010.0002] # -30CF 3099 30FD ; [.3E8B.0020.0011.0002][.0000.0037.0002][.3E8B.0020.0010.0002] # -FF8A FF9E 30FD ; [.3E8B.0020.0011.0002][.0000.0037.0002][.3E8B.0020.0010.0002] # -3070 309D ; [.3E8B.0020.0011.0001][.0000.0037.0002][.3E8B.0020.0010.0002] # -306F 3099 309D ; [.3E8B.0020.0011.0001][.0000.0037.0002][.3E8B.0020.0010.0002] # -30D0 30FE ; [.3E8B.0020.0011.0002][.0000.0037.0002][.3E8B.0020.0010.0002][.0000.0037.0002] # -30CF 3099 30FE ; [.3E8B.0020.0011.0002][.0000.0037.0002][.3E8B.0020.0010.0002][.0000.0037.0002] # -FF8A FF9E 30FE ; [.3E8B.0020.0011.0002][.0000.0037.0002][.3E8B.0020.0010.0002][.0000.0037.0002] # -3070 309E ; [.3E8B.0020.0011.0001][.0000.0037.0002][.3E8B.0020.0010.0002][.0000.0037.0002] # -306F 3099 309E ; [.3E8B.0020.0011.0001][.0000.0037.0002][.3E8B.0020.0010.0002][.0000.0037.0002] # -30D1 30FD ; [.3E8B.0020.0011.0002][.0000.0038.0002][.3E8B.0020.0010.0002] # -30CF 309A 30FD ; [.3E8B.0020.0011.0002][.0000.0038.0002][.3E8B.0020.0010.0002] # -FF8A FF9F 30FD ; [.3E8B.0020.0011.0002][.0000.0038.0002][.3E8B.0020.0010.0002] # -3071 309D ; [.3E8B.0020.0011.0001][.0000.0038.0002][.3E8B.0020.0010.0002] # -306F 309A 309D ; [.3E8B.0020.0011.0001][.0000.0038.0002][.3E8B.0020.0010.0002] # -30D1 30FE ; [.3E8B.0020.0011.0002][.0000.0038.0002][.3E8B.0020.0010.0002][.0000.0037.0002] # -30CF 309A 30FE ; [.3E8B.0020.0011.0002][.0000.0038.0002][.3E8B.0020.0010.0002][.0000.0037.0002] # -FF8A FF9F 30FE ; [.3E8B.0020.0011.0002][.0000.0038.0002][.3E8B.0020.0010.0002][.0000.0037.0002] # -3071 309E ; [.3E8B.0020.0011.0001][.0000.0038.0002][.3E8B.0020.0010.0002][.0000.0037.0002] # -306F 309A 309E ; [.3E8B.0020.0011.0001][.0000.0038.0002][.3E8B.0020.0010.0002][.0000.0037.0002] # -30D2 30FD ; [.3E8C.0020.0011.0002][.3E8C.0020.0010.0002] # -FF8B 30FD ; [.3E8C.0020.0011.0002][.3E8C.0020.0010.0002] # -3072 309D ; [.3E8C.0020.0011.0001][.3E8C.0020.0010.0002] # -30D2 30FE ; [.3E8C.0020.0011.0002][.3E8C.0020.0010.0002][.0000.0037.0002] # -FF8B 30FE ; [.3E8C.0020.0011.0002][.3E8C.0020.0010.0002][.0000.0037.0002] # -3072 309E ; [.3E8C.0020.0011.0001][.3E8C.0020.0010.0002][.0000.0037.0002] # -30D3 30FD ; [.3E8C.0020.0011.0002][.0000.0037.0002][.3E8C.0020.0010.0002] # -30D2 3099 30FD ; [.3E8C.0020.0011.0002][.0000.0037.0002][.3E8C.0020.0010.0002] # -FF8B FF9E 30FD ; [.3E8C.0020.0011.0002][.0000.0037.0002][.3E8C.0020.0010.0002] # -3073 309D ; [.3E8C.0020.0011.0001][.0000.0037.0002][.3E8C.0020.0010.0002] # -3072 3099 309D ; [.3E8C.0020.0011.0001][.0000.0037.0002][.3E8C.0020.0010.0002] # -30D3 30FE ; [.3E8C.0020.0011.0002][.0000.0037.0002][.3E8C.0020.0010.0002][.0000.0037.0002] # -30D2 3099 30FE ; [.3E8C.0020.0011.0002][.0000.0037.0002][.3E8C.0020.0010.0002][.0000.0037.0002] # -FF8B FF9E 30FE ; [.3E8C.0020.0011.0002][.0000.0037.0002][.3E8C.0020.0010.0002][.0000.0037.0002] # -3073 309E ; [.3E8C.0020.0011.0001][.0000.0037.0002][.3E8C.0020.0010.0002][.0000.0037.0002] # -3072 3099 309E ; [.3E8C.0020.0011.0001][.0000.0037.0002][.3E8C.0020.0010.0002][.0000.0037.0002] # -30D4 30FD ; [.3E8C.0020.0011.0002][.0000.0038.0002][.3E8C.0020.0010.0002] # -30D2 309A 30FD ; [.3E8C.0020.0011.0002][.0000.0038.0002][.3E8C.0020.0010.0002] # -FF8B FF9F 30FD ; [.3E8C.0020.0011.0002][.0000.0038.0002][.3E8C.0020.0010.0002] # -3074 309D ; [.3E8C.0020.0011.0001][.0000.0038.0002][.3E8C.0020.0010.0002] # -3072 309A 309D ; [.3E8C.0020.0011.0001][.0000.0038.0002][.3E8C.0020.0010.0002] # -30D4 30FE ; [.3E8C.0020.0011.0002][.0000.0038.0002][.3E8C.0020.0010.0002][.0000.0037.0002] # -30D2 309A 30FE ; [.3E8C.0020.0011.0002][.0000.0038.0002][.3E8C.0020.0010.0002][.0000.0037.0002] # -FF8B FF9F 30FE ; [.3E8C.0020.0011.0002][.0000.0038.0002][.3E8C.0020.0010.0002][.0000.0037.0002] # -3074 309E ; [.3E8C.0020.0011.0001][.0000.0038.0002][.3E8C.0020.0010.0002][.0000.0037.0002] # -3072 309A 309E ; [.3E8C.0020.0011.0001][.0000.0038.0002][.3E8C.0020.0010.0002][.0000.0037.0002] # -30D5 30FD ; [.3E8D.0020.0011.0002][.3E8D.0020.0010.0002] # -FF8C 30FD ; [.3E8D.0020.0011.0002][.3E8D.0020.0010.0002] # -3075 309D ; [.3E8D.0020.0011.0001][.3E8D.0020.0010.0002] # -30D5 30FE ; [.3E8D.0020.0011.0002][.3E8D.0020.0010.0002][.0000.0037.0002] # -FF8C 30FE ; [.3E8D.0020.0011.0002][.3E8D.0020.0010.0002][.0000.0037.0002] # -3075 309E ; [.3E8D.0020.0011.0001][.3E8D.0020.0010.0002][.0000.0037.0002] # -30D6 30FD ; [.3E8D.0020.0011.0002][.0000.0037.0002][.3E8D.0020.0010.0002] # -30D5 3099 30FD ; [.3E8D.0020.0011.0002][.0000.0037.0002][.3E8D.0020.0010.0002] # -FF8C FF9E 30FD ; [.3E8D.0020.0011.0002][.0000.0037.0002][.3E8D.0020.0010.0002] # -3076 309D ; [.3E8D.0020.0011.0001][.0000.0037.0002][.3E8D.0020.0010.0002] # -3075 3099 309D ; [.3E8D.0020.0011.0001][.0000.0037.0002][.3E8D.0020.0010.0002] # -30D6 30FE ; [.3E8D.0020.0011.0002][.0000.0037.0002][.3E8D.0020.0010.0002][.0000.0037.0002] # -30D5 3099 30FE ; [.3E8D.0020.0011.0002][.0000.0037.0002][.3E8D.0020.0010.0002][.0000.0037.0002] # -FF8C FF9E 30FE ; [.3E8D.0020.0011.0002][.0000.0037.0002][.3E8D.0020.0010.0002][.0000.0037.0002] # -3076 309E ; [.3E8D.0020.0011.0001][.0000.0037.0002][.3E8D.0020.0010.0002][.0000.0037.0002] # -3075 3099 309E ; [.3E8D.0020.0011.0001][.0000.0037.0002][.3E8D.0020.0010.0002][.0000.0037.0002] # -30D7 30FD ; [.3E8D.0020.0011.0002][.0000.0038.0002][.3E8D.0020.0010.0002] # -30D5 309A 30FD ; [.3E8D.0020.0011.0002][.0000.0038.0002][.3E8D.0020.0010.0002] # -FF8C FF9F 30FD ; [.3E8D.0020.0011.0002][.0000.0038.0002][.3E8D.0020.0010.0002] # -3077 309D ; [.3E8D.0020.0011.0001][.0000.0038.0002][.3E8D.0020.0010.0002] # -3075 309A 309D ; [.3E8D.0020.0011.0001][.0000.0038.0002][.3E8D.0020.0010.0002] # -30D7 30FE ; [.3E8D.0020.0011.0002][.0000.0038.0002][.3E8D.0020.0010.0002][.0000.0037.0002] # -30D5 309A 30FE ; [.3E8D.0020.0011.0002][.0000.0038.0002][.3E8D.0020.0010.0002][.0000.0037.0002] # -FF8C FF9F 30FE ; [.3E8D.0020.0011.0002][.0000.0038.0002][.3E8D.0020.0010.0002][.0000.0037.0002] # -3077 309E ; [.3E8D.0020.0011.0001][.0000.0038.0002][.3E8D.0020.0010.0002][.0000.0037.0002] # -3075 309A 309E ; [.3E8D.0020.0011.0001][.0000.0038.0002][.3E8D.0020.0010.0002][.0000.0037.0002] # -30D8 30FD ; [.3E8E.0020.0011.0002][.3E8E.0020.0010.0002] # -FF8D 30FD ; [.3E8E.0020.0011.0002][.3E8E.0020.0010.0002] # -3078 309D ; [.3E8E.0020.0011.0001][.3E8E.0020.0010.0002] # -30D8 30FE ; [.3E8E.0020.0011.0002][.3E8E.0020.0010.0002][.0000.0037.0002] # -FF8D 30FE ; [.3E8E.0020.0011.0002][.3E8E.0020.0010.0002][.0000.0037.0002] # -3078 309E ; [.3E8E.0020.0011.0001][.3E8E.0020.0010.0002][.0000.0037.0002] # -30D9 30FD ; [.3E8E.0020.0011.0002][.0000.0037.0002][.3E8E.0020.0010.0002] # -30D8 3099 30FD ; [.3E8E.0020.0011.0002][.0000.0037.0002][.3E8E.0020.0010.0002] # -FF8D FF9E 30FD ; [.3E8E.0020.0011.0002][.0000.0037.0002][.3E8E.0020.0010.0002] # -3079 309D ; [.3E8E.0020.0011.0001][.0000.0037.0002][.3E8E.0020.0010.0002] # -3078 3099 309D ; [.3E8E.0020.0011.0001][.0000.0037.0002][.3E8E.0020.0010.0002] # -30D9 30FE ; [.3E8E.0020.0011.0002][.0000.0037.0002][.3E8E.0020.0010.0002][.0000.0037.0002] # -30D8 3099 30FE ; [.3E8E.0020.0011.0002][.0000.0037.0002][.3E8E.0020.0010.0002][.0000.0037.0002] # -FF8D FF9E 30FE ; [.3E8E.0020.0011.0002][.0000.0037.0002][.3E8E.0020.0010.0002][.0000.0037.0002] # -3079 309E ; [.3E8E.0020.0011.0001][.0000.0037.0002][.3E8E.0020.0010.0002][.0000.0037.0002] # -3078 3099 309E ; [.3E8E.0020.0011.0001][.0000.0037.0002][.3E8E.0020.0010.0002][.0000.0037.0002] # -30DA 30FD ; [.3E8E.0020.0011.0002][.0000.0038.0002][.3E8E.0020.0010.0002] # -30D8 309A 30FD ; [.3E8E.0020.0011.0002][.0000.0038.0002][.3E8E.0020.0010.0002] # -FF8D FF9F 30FD ; [.3E8E.0020.0011.0002][.0000.0038.0002][.3E8E.0020.0010.0002] # -307A 309D ; [.3E8E.0020.0011.0001][.0000.0038.0002][.3E8E.0020.0010.0002] # -3078 309A 309D ; [.3E8E.0020.0011.0001][.0000.0038.0002][.3E8E.0020.0010.0002] # -30DA 30FE ; [.3E8E.0020.0011.0002][.0000.0038.0002][.3E8E.0020.0010.0002][.0000.0037.0002] # -30D8 309A 30FE ; [.3E8E.0020.0011.0002][.0000.0038.0002][.3E8E.0020.0010.0002][.0000.0037.0002] # -FF8D FF9F 30FE ; [.3E8E.0020.0011.0002][.0000.0038.0002][.3E8E.0020.0010.0002][.0000.0037.0002] # -307A 309E ; [.3E8E.0020.0011.0001][.0000.0038.0002][.3E8E.0020.0010.0002][.0000.0037.0002] # -3078 309A 309E ; [.3E8E.0020.0011.0001][.0000.0038.0002][.3E8E.0020.0010.0002][.0000.0037.0002] # -30DB 30FD ; [.3E8F.0020.0011.0002][.3E8F.0020.0010.0002] # -FF8E 30FD ; [.3E8F.0020.0011.0002][.3E8F.0020.0010.0002] # -307B 309D ; [.3E8F.0020.0011.0001][.3E8F.0020.0010.0002] # -30DB 30FE ; [.3E8F.0020.0011.0002][.3E8F.0020.0010.0002][.0000.0037.0002] # -FF8E 30FE ; [.3E8F.0020.0011.0002][.3E8F.0020.0010.0002][.0000.0037.0002] # -307B 309E ; [.3E8F.0020.0011.0001][.3E8F.0020.0010.0002][.0000.0037.0002] # -30DC 30FD ; [.3E8F.0020.0011.0002][.0000.0037.0002][.3E8F.0020.0010.0002] # -30DB 3099 30FD ; [.3E8F.0020.0011.0002][.0000.0037.0002][.3E8F.0020.0010.0002] # -FF8E FF9E 30FD ; [.3E8F.0020.0011.0002][.0000.0037.0002][.3E8F.0020.0010.0002] # -307C 309D ; [.3E8F.0020.0011.0001][.0000.0037.0002][.3E8F.0020.0010.0002] # -307B 3099 309D ; [.3E8F.0020.0011.0001][.0000.0037.0002][.3E8F.0020.0010.0002] # -30DC 30FE ; [.3E8F.0020.0011.0002][.0000.0037.0002][.3E8F.0020.0010.0002][.0000.0037.0002] # -30DB 3099 30FE ; [.3E8F.0020.0011.0002][.0000.0037.0002][.3E8F.0020.0010.0002][.0000.0037.0002] # -FF8E FF9E 30FE ; [.3E8F.0020.0011.0002][.0000.0037.0002][.3E8F.0020.0010.0002][.0000.0037.0002] # -307C 309E ; [.3E8F.0020.0011.0001][.0000.0037.0002][.3E8F.0020.0010.0002][.0000.0037.0002] # -307B 3099 309E ; [.3E8F.0020.0011.0001][.0000.0037.0002][.3E8F.0020.0010.0002][.0000.0037.0002] # -30DD 30FD ; [.3E8F.0020.0011.0002][.0000.0038.0002][.3E8F.0020.0010.0002] # -30DB 309A 30FD ; [.3E8F.0020.0011.0002][.0000.0038.0002][.3E8F.0020.0010.0002] # -FF8E FF9F 30FD ; [.3E8F.0020.0011.0002][.0000.0038.0002][.3E8F.0020.0010.0002] # -307D 309D ; [.3E8F.0020.0011.0001][.0000.0038.0002][.3E8F.0020.0010.0002] # -307B 309A 309D ; [.3E8F.0020.0011.0001][.0000.0038.0002][.3E8F.0020.0010.0002] # -30DD 30FE ; [.3E8F.0020.0011.0002][.0000.0038.0002][.3E8F.0020.0010.0002][.0000.0037.0002] # -30DB 309A 30FE ; [.3E8F.0020.0011.0002][.0000.0038.0002][.3E8F.0020.0010.0002][.0000.0037.0002] # -FF8E FF9F 30FE ; [.3E8F.0020.0011.0002][.0000.0038.0002][.3E8F.0020.0010.0002][.0000.0037.0002] # -307D 309E ; [.3E8F.0020.0011.0001][.0000.0038.0002][.3E8F.0020.0010.0002][.0000.0037.0002] # -307B 309A 309E ; [.3E8F.0020.0011.0001][.0000.0038.0002][.3E8F.0020.0010.0002][.0000.0037.0002] # -30DE 30FD ; [.3E90.0020.0011.0002][.3E90.0020.0010.0002] # -FF8F 30FD ; [.3E90.0020.0011.0002][.3E90.0020.0010.0002] # -307E 309D ; [.3E90.0020.0011.0001][.3E90.0020.0010.0002] # -30DF 30FD ; [.3E91.0020.0011.0002][.3E91.0020.0010.0002] # -FF90 30FD ; [.3E91.0020.0011.0002][.3E91.0020.0010.0002] # -307F 309D ; [.3E91.0020.0011.0001][.3E91.0020.0010.0002] # -30E0 30FD ; [.3E92.0020.0011.0002][.3E92.0020.0010.0002] # -FF91 30FD ; [.3E92.0020.0011.0002][.3E92.0020.0010.0002] # -3080 309D ; [.3E92.0020.0011.0001][.3E92.0020.0010.0002] # -30E1 30FD ; [.3E93.0020.0011.0002][.3E93.0020.0010.0002] # -FF92 30FD ; [.3E93.0020.0011.0002][.3E93.0020.0010.0002] # -3081 309D ; [.3E93.0020.0011.0001][.3E93.0020.0010.0002] # -30E2 30FD ; [.3E94.0020.0011.0002][.3E94.0020.0010.0002] # -FF93 30FD ; [.3E94.0020.0011.0002][.3E94.0020.0010.0002] # -3082 309D ; [.3E94.0020.0011.0001][.3E94.0020.0010.0002] # -30E3 30FD ; [.3E95.0020.000F.0002][.3E95.0020.0010.0002] # -FF6C 30FD ; [.3E95.0020.000F.0002][.3E95.0020.0010.0002] # -3083 309D ; [.3E95.0020.000F.0001][.3E95.0020.0010.0002] # -30E4 30FD ; [.3E95.0020.0011.0002][.3E95.0020.0010.0002] # -FF94 30FD ; [.3E95.0020.0011.0002][.3E95.0020.0010.0002] # -3084 309D ; [.3E95.0020.0011.0001][.3E95.0020.0010.0002] # -30E5 30FD ; [.3E96.0020.000F.0002][.3E96.0020.0010.0002] # -FF6D 30FD ; [.3E96.0020.000F.0002][.3E96.0020.0010.0002] # -3085 309D ; [.3E96.0020.000F.0001][.3E96.0020.0010.0002] # -30E6 30FD ; [.3E96.0020.0011.0002][.3E96.0020.0010.0002] # -FF95 30FD ; [.3E96.0020.0011.0002][.3E96.0020.0010.0002] # -3086 309D ; [.3E96.0020.0011.0001][.3E96.0020.0010.0002] # -30E7 30FD ; [.3E97.0020.000F.0002][.3E97.0020.0010.0002] # -FF6E 30FD ; [.3E97.0020.000F.0002][.3E97.0020.0010.0002] # -3087 309D ; [.3E97.0020.000F.0001][.3E97.0020.0010.0002] # -30E8 30FD ; [.3E97.0020.0011.0002][.3E97.0020.0010.0002] # -FF96 30FD ; [.3E97.0020.0011.0002][.3E97.0020.0010.0002] # -3088 309D ; [.3E97.0020.0011.0001][.3E97.0020.0010.0002] # -30E9 30FD ; [.3E98.0020.0011.0002][.3E98.0020.0010.0002] # -FF97 30FD ; [.3E98.0020.0011.0002][.3E98.0020.0010.0002] # -3089 309D ; [.3E98.0020.0011.0001][.3E98.0020.0010.0002] # -30EA 30FD ; [.3E99.0020.0011.0002][.3E99.0020.0010.0002] # -FF98 30FD ; [.3E99.0020.0011.0002][.3E99.0020.0010.0002] # -308A 309D ; [.3E99.0020.0011.0001][.3E99.0020.0010.0002] # -30EB 30FD ; [.3E9A.0020.0011.0002][.3E9A.0020.0010.0002] # -FF99 30FD ; [.3E9A.0020.0011.0002][.3E9A.0020.0010.0002] # -308B 309D ; [.3E9A.0020.0011.0001][.3E9A.0020.0010.0002] # -30EC 30FD ; [.3E9B.0020.0011.0002][.3E9B.0020.0010.0002] # -FF9A 30FD ; [.3E9B.0020.0011.0002][.3E9B.0020.0010.0002] # -308C 309D ; [.3E9B.0020.0011.0001][.3E9B.0020.0010.0002] # -30ED 30FD ; [.3E9C.0020.0011.0002][.3E9C.0020.0010.0002] # -FF9B 30FD ; [.3E9C.0020.0011.0002][.3E9C.0020.0010.0002] # -308D 309D ; [.3E9C.0020.0011.0001][.3E9C.0020.0010.0002] # -30EE 30FD ; [.3E9D.0020.000F.0002][.3E9D.0020.0010.0002] # -308E 309D ; [.3E9D.0020.000F.0001][.3E9D.0020.0010.0002] # -30EE 30FE ; [.3E9D.0020.000F.0002][.3E9D.0020.0010.0002][.0000.0037.0002] # -308E 309E ; [.3E9D.0020.000F.0001][.3E9D.0020.0010.0002][.0000.0037.0002] # -30EF 30FD ; [.3E9D.0020.0011.0002][.3E9D.0020.0010.0002] # -FF9C 30FD ; [.3E9D.0020.0011.0002][.3E9D.0020.0010.0002] # -308F 309D ; [.3E9D.0020.0011.0001][.3E9D.0020.0010.0002] # -30EF 30FE ; [.3E9D.0020.0011.0002][.3E9D.0020.0010.0002][.0000.0037.0002] # -FF9C 30FE ; [.3E9D.0020.0011.0002][.3E9D.0020.0010.0002][.0000.0037.0002] # -308F 309E ; [.3E9D.0020.0011.0001][.3E9D.0020.0010.0002][.0000.0037.0002] # -30F0 30FD ; [.3E9E.0020.0011.0002][.3E9E.0020.0010.0002] # -3090 309D ; [.3E9E.0020.0011.0001][.3E9E.0020.0010.0002] # -30F0 30FE ; [.3E9E.0020.0011.0002][.3E9E.0020.0010.0002][.0000.0037.0002] # -3090 309E ; [.3E9E.0020.0011.0001][.3E9E.0020.0010.0002][.0000.0037.0002] # -30F1 30FD ; [.3E9F.0020.0011.0002][.3E9F.0020.0010.0002] # -3091 309D ; [.3E9F.0020.0011.0001][.3E9F.0020.0010.0002] # -30F1 30FE ; [.3E9F.0020.0011.0002][.3E9F.0020.0010.0002][.0000.0037.0002] # -3091 309E ; [.3E9F.0020.0011.0001][.3E9F.0020.0010.0002][.0000.0037.0002] # -30F2 30FD ; [.3EA0.0020.0011.0002][.3EA0.0020.0010.0002] # -FF66 30FD ; [.3EA0.0020.0011.0002][.3EA0.0020.0010.0002] # -3092 309D ; [.3EA0.0020.0011.0001][.3EA0.0020.0010.0002] # -30F2 30FE ; [.3EA0.0020.0011.0002][.3EA0.0020.0010.0002][.0000.0037.0002] # -FF66 30FE ; [.3EA0.0020.0011.0002][.3EA0.0020.0010.0002][.0000.0037.0002] # -3092 309E ; [.3EA0.0020.0011.0001][.3EA0.0020.0010.0002][.0000.0037.0002] # -30F3 30FD ; [.3EA1.0020.0011.0002][.3EA1.0020.0010.0002] # -FF9D 30FD ; [.3EA1.0020.0011.0002][.3EA1.0020.0010.0002] # -3093 309D ; [.3EA1.0020.0011.0001][.3EA1.0020.0010.0002] # -30F4 30FD ; [.3E73.0020.0011.0002][.0000.0037.0002][.3E73.0020.0010.0002] # -30A6 3099 30FD ; [.3E73.0020.0011.0002][.0000.0037.0002][.3E73.0020.0010.0002] # -FF73 FF9E 30FD ; [.3E73.0020.0011.0002][.0000.0037.0002][.3E73.0020.0010.0002] # -3094 309D ; [.3E73.0020.0011.0001][.0000.0037.0002][.3E73.0020.0010.0002] # -3046 3099 309D ; [.3E73.0020.0011.0001][.0000.0037.0002][.3E73.0020.0010.0002] # -30F4 30FE ; [.3E73.0020.0011.0002][.0000.0037.0002][.3E73.0020.0010.0002][.0000.0037.0002] # -30A6 3099 30FE ; [.3E73.0020.0011.0002][.0000.0037.0002][.3E73.0020.0010.0002][.0000.0037.0002] # -FF73 FF9E 30FE ; [.3E73.0020.0011.0002][.0000.0037.0002][.3E73.0020.0010.0002][.0000.0037.0002] # -3094 309E ; [.3E73.0020.0011.0001][.0000.0037.0002][.3E73.0020.0010.0002][.0000.0037.0002] # -3046 3099 309E ; [.3E73.0020.0011.0001][.0000.0037.0002][.3E73.0020.0010.0002][.0000.0037.0002] # -30F5 30FD ; [.3E77.0020.000F.0002][.3E77.0020.0010.0002] # -3095 309D ; [.3E77.0020.000F.0001][.3E77.0020.0010.0002] # -30F5 30FE ; [.3E77.0020.000F.0002][.3E77.0020.0010.0002][.0000.0037.0002] # -3095 309E ; [.3E77.0020.000F.0001][.3E77.0020.0010.0002][.0000.0037.0002] # -30F6 30FD ; [.3E7A.0020.000F.0002][.3E7A.0020.0010.0002] # -3096 309D ; [.3E7A.0020.000F.0001][.3E7A.0020.0010.0002] # -30F6 30FE ; [.3E7A.0020.000F.0002][.3E7A.0020.0010.0002][.0000.0037.0002] # -3096 309E ; [.3E7A.0020.000F.0001][.3E7A.0020.0010.0002][.0000.0037.0002] # -30F7 30FD ; [.3E9D.0020.0011.0002][.0000.0037.0002][.3E9D.0020.0010.0002] # -30EF 3099 30FD ; [.3E9D.0020.0011.0002][.0000.0037.0002][.3E9D.0020.0010.0002] # -FF9C FF9E 30FD ; [.3E9D.0020.0011.0002][.0000.0037.0002][.3E9D.0020.0010.0002] # -30F7 30FE ; [.3E9D.0020.0011.0002][.0000.0037.0002][.3E9D.0020.0010.0002][.0000.0037.0002] # -30EF 3099 30FE ; [.3E9D.0020.0011.0002][.0000.0037.0002][.3E9D.0020.0010.0002][.0000.0037.0002] # -FF9C FF9E 30FE ; [.3E9D.0020.0011.0002][.0000.0037.0002][.3E9D.0020.0010.0002][.0000.0037.0002] # -30F8 30FD ; [.3E9E.0020.0011.0002][.0000.0037.0002][.3E9E.0020.0010.0002] # -30F0 3099 30FD ; [.3E9E.0020.0011.0002][.0000.0037.0002][.3E9E.0020.0010.0002] # -30F8 30FE ; [.3E9E.0020.0011.0002][.0000.0037.0002][.3E9E.0020.0010.0002][.0000.0037.0002] # -30F0 3099 30FE ; [.3E9E.0020.0011.0002][.0000.0037.0002][.3E9E.0020.0010.0002][.0000.0037.0002] # -30F9 30FD ; [.3E9F.0020.0011.0002][.0000.0037.0002][.3E9F.0020.0010.0002] # -30F1 3099 30FD ; [.3E9F.0020.0011.0002][.0000.0037.0002][.3E9F.0020.0010.0002] # -30F9 30FE ; [.3E9F.0020.0011.0002][.0000.0037.0002][.3E9F.0020.0010.0002][.0000.0037.0002] # -30F1 3099 30FE ; [.3E9F.0020.0011.0002][.0000.0037.0002][.3E9F.0020.0010.0002][.0000.0037.0002] # -30FA 30FD ; [.3EA0.0020.0011.0002][.0000.0037.0002][.3EA0.0020.0010.0002] # -30F2 3099 30FD ; [.3EA0.0020.0011.0002][.0000.0037.0002][.3EA0.0020.0010.0002] # -FF66 FF9E 30FD ; [.3EA0.0020.0011.0002][.0000.0037.0002][.3EA0.0020.0010.0002] # -30FA 30FE ; [.3EA0.0020.0011.0002][.0000.0037.0002][.3EA0.0020.0010.0002][.0000.0037.0002] # -30F2 3099 30FE ; [.3EA0.0020.0011.0002][.0000.0037.0002][.3EA0.0020.0010.0002][.0000.0037.0002] # -FF66 FF9E 30FE ; [.3EA0.0020.0011.0002][.0000.0037.0002][.3EA0.0020.0010.0002][.0000.0037.0002] # -31F0 30FD ; [.3E79.0020.000F][.3E79.0020.0010.0002] # -31F0 30FE ; [.3E79.0020.000F][.3E79.0020.0010.0002][.0000.0037.0002] # -31F1 30FD ; [.3E7D.0020.000F][.3E7D.0020.0010.0002] # -31F1 30FE ; [.3E7D.0020.000F][.3E7D.0020.0010.0002][.0000.0037.0002] # -31F2 30FD ; [.3E7E.0020.000F][.3E7E.0020.0010.0002] # -31F2 30FE ; [.3E7E.0020.000F][.3E7E.0020.0010.0002][.0000.0037.0002] # -31F3 30FD ; [.3E85.0020.000F][.3E85.0020.0010.0002] # -31F3 30FE ; [.3E85.0020.000F][.3E85.0020.0010.0002][.0000.0037.0002] # -31F4 30FD ; [.3E88.0020.000F][.3E88.0020.0010.0002] # -31F5 30FD ; [.3E8B.0020.000F][.3E8B.0020.0010.0002] # -31F5 30FE ; [.3E8B.0020.000F][.3E8B.0020.0010.0002][.0000.0037.0002] # -31F6 30FD ; [.3E8C.0020.000F][.3E8C.0020.0010.0002] # -31F6 30FE ; [.3E8C.0020.000F][.3E8C.0020.0010.0002][.0000.0037.0002] # -31F7 30FD ; [.3E8D.0020.000F][.3E8D.0020.0010.0002] # -31F7 30FE ; [.3E8D.0020.000F][.3E8D.0020.0010.0002][.0000.0037.0002] # -31F8 30FD ; [.3E8E.0020.000F][.3E8E.0020.0010.0002] # -31F8 30FE ; [.3E8E.0020.000F][.3E8E.0020.0010.0002][.0000.0037.0002] # -31F9 30FD ; [.3E8F.0020.000F][.3E8F.0020.0010.0002] # -31F9 30FE ; [.3E8F.0020.000F][.3E8F.0020.0010.0002][.0000.0037.0002] # -31FA 30FD ; [.3E92.0020.000F][.3E92.0020.0010.0002] # -31FB 30FD ; [.3E98.0020.000F][.3E98.0020.0010.0002] # -31FC 30FD ; [.3E99.0020.000F][.3E99.0020.0010.0002] # -31FD 30FD ; [.3E9A.0020.000F][.3E9A.0020.0010.0002] # -31FE 30FD ; [.3E9B.0020.000F][.3E9B.0020.0010.0002] # -31FF 30FD ; [.3E9C.0020.000F][.3E9C.0020.0010.0002] # +FFE4 ; [*066F.0020.0002] # FULLWIDTH BROKEN BAR +FFE5 ; [.1F66.0020.0002] # FULLWIDTH YEN SIGN +FFE6 ; [.1F80.0020.0002] # FULLWIDTH WON SIGN +FFE8 ; [*086B.0020.0002] # HALFWIDTH FORMS LIGHT VERTICAL +FFE9 ; [*05EC.0020.0002] # HALFWIDTH LEFTWARDS ARROW +FFEA ; [*05EE.0020.0002] # HALFWIDTH UPWARDS ARROW +FFEB ; [*05ED.0020.0002] # HALFWIDTH RIGHTWARDS ARROW +FFEC ; [*05EF.0020.0002] # HALFWIDTH DOWNWARDS ARROW +FFED ; [*0909.0020.0002] # HALFWIDTH BLACK SQUARE +FFEE ; [*0934.0020.0002] # HALFWIDTH WHITE CIRCLE +30A1 30FC ; [.42DA.0020.000F.0002][.42DA.0020.0007.0002] # +FF67 30FC ; [.42DA.0020.000F.0002][.42DA.0020.0007.0002] # +FF67 FF70 ; [.42DA.0020.000F.0002][.42DA.0020.0007.0002] # +3041 30FC ; [.42DA.0020.000F.0001][.42DA.0020.0007.0002] # +30A2 30FC ; [.42DA.0020.0011.0002][.42DA.0020.0007.0002] # +FF71 30FC ; [.42DA.0020.0011.0002][.42DA.0020.0007.0002] # +FF71 FF70 ; [.42DA.0020.0011.0002][.42DA.0020.0007.0002] # +3042 30FC ; [.42DA.0020.0011.0001][.42DA.0020.0007.0002] # +30AB 30FC ; [.42E0.0020.0011.0002][.42DA.0020.0007.0002] # +FF76 30FC ; [.42E0.0020.0011.0002][.42DA.0020.0007.0002] # +FF76 FF70 ; [.42E0.0020.0011.0002][.42DA.0020.0007.0002] # +304B 30FC ; [.42E0.0020.0011.0001][.42DA.0020.0007.0002] # +30AC 30FC ; [.42E0.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +30AB 3099 30FC ; [.42E0.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +FF76 FF9E 30FC ; [.42E0.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +FF76 FF9E FF70 ; [.42E0.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +304C 30FC ; [.42E0.0020.0011.0001][.0000.0037.0002][.42DA.0020.0007.0002] # +304B 3099 30FC ; [.42E0.0020.0011.0001][.0000.0037.0002][.42DA.0020.0007.0002] # +30B5 30FC ; [.42E5.0020.0011.0002][.42DA.0020.0007.0002] # +FF7B 30FC ; [.42E5.0020.0011.0002][.42DA.0020.0007.0002] # +FF7B FF70 ; [.42E5.0020.0011.0002][.42DA.0020.0007.0002] # +3055 30FC ; [.42E5.0020.0011.0001][.42DA.0020.0007.0002] # +30B6 30FC ; [.42E5.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +30B5 3099 30FC ; [.42E5.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +FF7B FF9E 30FC ; [.42E5.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +FF7B FF9E FF70 ; [.42E5.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +3056 30FC ; [.42E5.0020.0011.0001][.0000.0037.0002][.42DA.0020.0007.0002] # +3055 3099 30FC ; [.42E5.0020.0011.0001][.0000.0037.0002][.42DA.0020.0007.0002] # +30BF 30FC ; [.42EA.0020.0011.0002][.42DA.0020.0007.0002] # +FF80 30FC ; [.42EA.0020.0011.0002][.42DA.0020.0007.0002] # +FF80 FF70 ; [.42EA.0020.0011.0002][.42DA.0020.0007.0002] # +305F 30FC ; [.42EA.0020.0011.0001][.42DA.0020.0007.0002] # +30C0 30FC ; [.42EA.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +30BF 3099 30FC ; [.42EA.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +FF80 FF9E 30FC ; [.42EA.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +FF80 FF9E FF70 ; [.42EA.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +3060 30FC ; [.42EA.0020.0011.0001][.0000.0037.0002][.42DA.0020.0007.0002] # +305F 3099 30FC ; [.42EA.0020.0011.0001][.0000.0037.0002][.42DA.0020.0007.0002] # +30CA 30FC ; [.42EF.0020.0011.0002][.42DA.0020.0007.0002] # +FF85 30FC ; [.42EF.0020.0011.0002][.42DA.0020.0007.0002] # +FF85 FF70 ; [.42EF.0020.0011.0002][.42DA.0020.0007.0002] # +306A 30FC ; [.42EF.0020.0011.0001][.42DA.0020.0007.0002] # +30CF 30FC ; [.42F4.0020.0011.0002][.42DA.0020.0007.0002] # +FF8A 30FC ; [.42F4.0020.0011.0002][.42DA.0020.0007.0002] # +FF8A FF70 ; [.42F4.0020.0011.0002][.42DA.0020.0007.0002] # +306F 30FC ; [.42F4.0020.0011.0001][.42DA.0020.0007.0002] # +30D0 30FC ; [.42F4.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +30CF 3099 30FC ; [.42F4.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +FF8A FF9E 30FC ; [.42F4.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +FF8A FF9E FF70 ; [.42F4.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +3070 30FC ; [.42F4.0020.0011.0001][.0000.0037.0002][.42DA.0020.0007.0002] # +306F 3099 30FC ; [.42F4.0020.0011.0001][.0000.0037.0002][.42DA.0020.0007.0002] # +30D1 30FC ; [.42F4.0020.0011.0002][.0000.0038.0002][.42DA.0020.0007.0002] # +30CF 309A 30FC ; [.42F4.0020.0011.0002][.0000.0038.0002][.42DA.0020.0007.0002] # +FF8A FF9F 30FC ; [.42F4.0020.0011.0002][.0000.0038.0002][.42DA.0020.0007.0002] # +FF8A FF9F FF70 ; [.42F4.0020.0011.0002][.0000.0038.0002][.42DA.0020.0007.0002] # +3071 30FC ; [.42F4.0020.0011.0001][.0000.0038.0002][.42DA.0020.0007.0002] # +306F 309A 30FC ; [.42F4.0020.0011.0001][.0000.0038.0002][.42DA.0020.0007.0002] # +30DE 30FC ; [.42F9.0020.0011.0002][.42DA.0020.0007.0002] # +FF8F 30FC ; [.42F9.0020.0011.0002][.42DA.0020.0007.0002] # +FF8F FF70 ; [.42F9.0020.0011.0002][.42DA.0020.0007.0002] # +307E 30FC ; [.42F9.0020.0011.0001][.42DA.0020.0007.0002] # +30E3 30FC ; [.42FE.0020.000F.0002][.42DA.0020.0007.0002] # +FF6C 30FC ; [.42FE.0020.000F.0002][.42DA.0020.0007.0002] # +FF6C FF70 ; [.42FE.0020.000F.0002][.42DA.0020.0007.0002] # +3083 30FC ; [.42FE.0020.000F.0001][.42DA.0020.0007.0002] # +30E4 30FC ; [.42FE.0020.0011.0002][.42DA.0020.0007.0002] # +FF94 30FC ; [.42FE.0020.0011.0002][.42DA.0020.0007.0002] # +FF94 FF70 ; [.42FE.0020.0011.0002][.42DA.0020.0007.0002] # +3084 30FC ; [.42FE.0020.0011.0001][.42DA.0020.0007.0002] # +30E9 30FC ; [.4301.0020.0011.0002][.42DA.0020.0007.0002] # +FF97 30FC ; [.4301.0020.0011.0002][.42DA.0020.0007.0002] # +FF97 FF70 ; [.4301.0020.0011.0002][.42DA.0020.0007.0002] # +3089 30FC ; [.4301.0020.0011.0001][.42DA.0020.0007.0002] # +30EE 30FC ; [.4306.0020.000F.0002][.42DA.0020.0007.0002] # +308E 30FC ; [.4306.0020.000F.0001][.42DA.0020.0007.0002] # +30EF 30FC ; [.4306.0020.0011.0002][.42DA.0020.0007.0002] # +FF9C 30FC ; [.4306.0020.0011.0002][.42DA.0020.0007.0002] # +FF9C FF70 ; [.4306.0020.0011.0002][.42DA.0020.0007.0002] # +308F 30FC ; [.4306.0020.0011.0001][.42DA.0020.0007.0002] # +30F7 30FC ; [.4306.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +30EF 3099 30FC ; [.4306.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +FF9C FF9E 30FC ; [.4306.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +FF9C FF9E FF70 ; [.4306.0020.0011.0002][.0000.0037.0002][.42DA.0020.0007.0002] # +30F5 30FC ; [.42E0.0020.000F.0002][.42DA.0020.0007.0002] # +3095 30FC ; [.42E0.0020.000F.0001][.42DA.0020.0007.0002] # +31F5 30FC ; [.42F4.0020.000F][.42DA.0020.0007.0002] # +31FB 30FC ; [.4301.0020.000F][.42DA.0020.0007.0002] # +30A3 30FC ; [.42DB.0020.000F.0002][.42DB.0020.0007.0002] # +FF68 30FC ; [.42DB.0020.000F.0002][.42DB.0020.0007.0002] # +FF68 FF70 ; [.42DB.0020.000F.0002][.42DB.0020.0007.0002] # +3043 30FC ; [.42DB.0020.000F.0001][.42DB.0020.0007.0002] # +30A4 30FC ; [.42DB.0020.0011.0002][.42DB.0020.0007.0002] # +FF72 30FC ; [.42DB.0020.0011.0002][.42DB.0020.0007.0002] # +FF72 FF70 ; [.42DB.0020.0011.0002][.42DB.0020.0007.0002] # +3044 30FC ; [.42DB.0020.0011.0001][.42DB.0020.0007.0002] # +30AD 30FC ; [.42E1.0020.0011.0002][.42DB.0020.0007.0002] # +FF77 30FC ; [.42E1.0020.0011.0002][.42DB.0020.0007.0002] # +FF77 FF70 ; [.42E1.0020.0011.0002][.42DB.0020.0007.0002] # +304D 30FC ; [.42E1.0020.0011.0001][.42DB.0020.0007.0002] # +30AE 30FC ; [.42E1.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +30AD 3099 30FC ; [.42E1.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +FF77 FF9E 30FC ; [.42E1.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +FF77 FF9E FF70 ; [.42E1.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +304E 30FC ; [.42E1.0020.0011.0001][.0000.0037.0002][.42DB.0020.0007.0002] # +304D 3099 30FC ; [.42E1.0020.0011.0001][.0000.0037.0002][.42DB.0020.0007.0002] # +30B7 30FC ; [.42E6.0020.0011.0002][.42DB.0020.0007.0002] # +FF7C 30FC ; [.42E6.0020.0011.0002][.42DB.0020.0007.0002] # +FF7C FF70 ; [.42E6.0020.0011.0002][.42DB.0020.0007.0002] # +3057 30FC ; [.42E6.0020.0011.0001][.42DB.0020.0007.0002] # +30B8 30FC ; [.42E6.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +30B7 3099 30FC ; [.42E6.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +FF7C FF9E 30FC ; [.42E6.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +FF7C FF9E FF70 ; [.42E6.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +3058 30FC ; [.42E6.0020.0011.0001][.0000.0037.0002][.42DB.0020.0007.0002] # +3057 3099 30FC ; [.42E6.0020.0011.0001][.0000.0037.0002][.42DB.0020.0007.0002] # +30C1 30FC ; [.42EB.0020.0011.0002][.42DB.0020.0007.0002] # +FF81 30FC ; [.42EB.0020.0011.0002][.42DB.0020.0007.0002] # +FF81 FF70 ; [.42EB.0020.0011.0002][.42DB.0020.0007.0002] # +3061 30FC ; [.42EB.0020.0011.0001][.42DB.0020.0007.0002] # +30C2 30FC ; [.42EB.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +30C1 3099 30FC ; [.42EB.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +FF81 FF9E 30FC ; [.42EB.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +FF81 FF9E FF70 ; [.42EB.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +3062 30FC ; [.42EB.0020.0011.0001][.0000.0037.0002][.42DB.0020.0007.0002] # +3061 3099 30FC ; [.42EB.0020.0011.0001][.0000.0037.0002][.42DB.0020.0007.0002] # +30CB 30FC ; [.42F0.0020.0011.0002][.42DB.0020.0007.0002] # +FF86 30FC ; [.42F0.0020.0011.0002][.42DB.0020.0007.0002] # +FF86 FF70 ; [.42F0.0020.0011.0002][.42DB.0020.0007.0002] # +306B 30FC ; [.42F0.0020.0011.0001][.42DB.0020.0007.0002] # +30D2 30FC ; [.42F5.0020.0011.0002][.42DB.0020.0007.0002] # +FF8B 30FC ; [.42F5.0020.0011.0002][.42DB.0020.0007.0002] # +FF8B FF70 ; [.42F5.0020.0011.0002][.42DB.0020.0007.0002] # +3072 30FC ; [.42F5.0020.0011.0001][.42DB.0020.0007.0002] # +30D3 30FC ; [.42F5.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +30D2 3099 30FC ; [.42F5.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +FF8B FF9E 30FC ; [.42F5.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +FF8B FF9E FF70 ; [.42F5.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +3073 30FC ; [.42F5.0020.0011.0001][.0000.0037.0002][.42DB.0020.0007.0002] # +3072 3099 30FC ; [.42F5.0020.0011.0001][.0000.0037.0002][.42DB.0020.0007.0002] # +30D4 30FC ; [.42F5.0020.0011.0002][.0000.0038.0002][.42DB.0020.0007.0002] # +30D2 309A 30FC ; [.42F5.0020.0011.0002][.0000.0038.0002][.42DB.0020.0007.0002] # +FF8B FF9F 30FC ; [.42F5.0020.0011.0002][.0000.0038.0002][.42DB.0020.0007.0002] # +FF8B FF9F FF70 ; [.42F5.0020.0011.0002][.0000.0038.0002][.42DB.0020.0007.0002] # +3074 30FC ; [.42F5.0020.0011.0001][.0000.0038.0002][.42DB.0020.0007.0002] # +3072 309A 30FC ; [.42F5.0020.0011.0001][.0000.0038.0002][.42DB.0020.0007.0002] # +30DF 30FC ; [.42FA.0020.0011.0002][.42DB.0020.0007.0002] # +FF90 30FC ; [.42FA.0020.0011.0002][.42DB.0020.0007.0002] # +FF90 FF70 ; [.42FA.0020.0011.0002][.42DB.0020.0007.0002] # +307F 30FC ; [.42FA.0020.0011.0001][.42DB.0020.0007.0002] # +30EA 30FC ; [.4302.0020.0011.0002][.42DB.0020.0007.0002] # +FF98 30FC ; [.4302.0020.0011.0002][.42DB.0020.0007.0002] # +FF98 FF70 ; [.4302.0020.0011.0002][.42DB.0020.0007.0002] # +308A 30FC ; [.4302.0020.0011.0001][.42DB.0020.0007.0002] # +30F0 30FC ; [.4307.0020.0011.0002][.42DB.0020.0007.0002] # +3090 30FC ; [.4307.0020.0011.0001][.42DB.0020.0007.0002] # +30F8 30FC ; [.4307.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +30F0 3099 30FC ; [.4307.0020.0011.0002][.0000.0037.0002][.42DB.0020.0007.0002] # +31F1 30FC ; [.42E6.0020.000F][.42DB.0020.0007.0002] # +31F6 30FC ; [.42F5.0020.000F][.42DB.0020.0007.0002] # +31FC 30FC ; [.4302.0020.000F][.42DB.0020.0007.0002] # +30A5 30FC ; [.42DC.0020.000F.0002][.42DC.0020.0007.0002] # +FF69 30FC ; [.42DC.0020.000F.0002][.42DC.0020.0007.0002] # +FF69 FF70 ; [.42DC.0020.000F.0002][.42DC.0020.0007.0002] # +3045 30FC ; [.42DC.0020.000F.0001][.42DC.0020.0007.0002] # +30A6 30FC ; [.42DC.0020.0011.0002][.42DC.0020.0007.0002] # +FF73 30FC ; [.42DC.0020.0011.0002][.42DC.0020.0007.0002] # +FF73 FF70 ; [.42DC.0020.0011.0002][.42DC.0020.0007.0002] # +3046 30FC ; [.42DC.0020.0011.0001][.42DC.0020.0007.0002] # +30AF 30FC ; [.42E2.0020.0011.0002][.42DC.0020.0007.0002] # +FF78 30FC ; [.42E2.0020.0011.0002][.42DC.0020.0007.0002] # +FF78 FF70 ; [.42E2.0020.0011.0002][.42DC.0020.0007.0002] # +304F 30FC ; [.42E2.0020.0011.0001][.42DC.0020.0007.0002] # +30B0 30FC ; [.42E2.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +30AF 3099 30FC ; [.42E2.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +FF78 FF9E 30FC ; [.42E2.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +FF78 FF9E FF70 ; [.42E2.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +3050 30FC ; [.42E2.0020.0011.0001][.0000.0037.0002][.42DC.0020.0007.0002] # +304F 3099 30FC ; [.42E2.0020.0011.0001][.0000.0037.0002][.42DC.0020.0007.0002] # +30B9 30FC ; [.42E7.0020.0011.0002][.42DC.0020.0007.0002] # +FF7D 30FC ; [.42E7.0020.0011.0002][.42DC.0020.0007.0002] # +FF7D FF70 ; [.42E7.0020.0011.0002][.42DC.0020.0007.0002] # +3059 30FC ; [.42E7.0020.0011.0001][.42DC.0020.0007.0002] # +30BA 30FC ; [.42E7.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +30B9 3099 30FC ; [.42E7.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +FF7D FF9E 30FC ; [.42E7.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +FF7D FF9E FF70 ; [.42E7.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +305A 30FC ; [.42E7.0020.0011.0001][.0000.0037.0002][.42DC.0020.0007.0002] # +3059 3099 30FC ; [.42E7.0020.0011.0001][.0000.0037.0002][.42DC.0020.0007.0002] # +30C3 30FC ; [.42EC.0020.000F.0002][.42DC.0020.0007.0002] # +FF6F 30FC ; [.42EC.0020.000F.0002][.42DC.0020.0007.0002] # +FF6F FF70 ; [.42EC.0020.000F.0002][.42DC.0020.0007.0002] # +3063 30FC ; [.42EC.0020.000F.0001][.42DC.0020.0007.0002] # +30C4 30FC ; [.42EC.0020.0011.0002][.42DC.0020.0007.0002] # +FF82 30FC ; [.42EC.0020.0011.0002][.42DC.0020.0007.0002] # +FF82 FF70 ; [.42EC.0020.0011.0002][.42DC.0020.0007.0002] # +3064 30FC ; [.42EC.0020.0011.0001][.42DC.0020.0007.0002] # +30C5 30FC ; [.42EC.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +30C4 3099 30FC ; [.42EC.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +FF82 FF9E 30FC ; [.42EC.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +FF82 FF9E FF70 ; [.42EC.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +3065 30FC ; [.42EC.0020.0011.0001][.0000.0037.0002][.42DC.0020.0007.0002] # +3064 3099 30FC ; [.42EC.0020.0011.0001][.0000.0037.0002][.42DC.0020.0007.0002] # +30CC 30FC ; [.42F1.0020.0011.0002][.42DC.0020.0007.0002] # +FF87 30FC ; [.42F1.0020.0011.0002][.42DC.0020.0007.0002] # +FF87 FF70 ; [.42F1.0020.0011.0002][.42DC.0020.0007.0002] # +306C 30FC ; [.42F1.0020.0011.0001][.42DC.0020.0007.0002] # +30D5 30FC ; [.42F6.0020.0011.0002][.42DC.0020.0007.0002] # +FF8C 30FC ; [.42F6.0020.0011.0002][.42DC.0020.0007.0002] # +FF8C FF70 ; [.42F6.0020.0011.0002][.42DC.0020.0007.0002] # +3075 30FC ; [.42F6.0020.0011.0001][.42DC.0020.0007.0002] # +30D6 30FC ; [.42F6.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +30D5 3099 30FC ; [.42F6.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +FF8C FF9E 30FC ; [.42F6.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +FF8C FF9E FF70 ; [.42F6.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +3076 30FC ; [.42F6.0020.0011.0001][.0000.0037.0002][.42DC.0020.0007.0002] # +3075 3099 30FC ; [.42F6.0020.0011.0001][.0000.0037.0002][.42DC.0020.0007.0002] # +30D7 30FC ; [.42F6.0020.0011.0002][.0000.0038.0002][.42DC.0020.0007.0002] # +30D5 309A 30FC ; [.42F6.0020.0011.0002][.0000.0038.0002][.42DC.0020.0007.0002] # +FF8C FF9F 30FC ; [.42F6.0020.0011.0002][.0000.0038.0002][.42DC.0020.0007.0002] # +FF8C FF9F FF70 ; [.42F6.0020.0011.0002][.0000.0038.0002][.42DC.0020.0007.0002] # +3077 30FC ; [.42F6.0020.0011.0001][.0000.0038.0002][.42DC.0020.0007.0002] # +3075 309A 30FC ; [.42F6.0020.0011.0001][.0000.0038.0002][.42DC.0020.0007.0002] # +30E0 30FC ; [.42FB.0020.0011.0002][.42DC.0020.0007.0002] # +FF91 30FC ; [.42FB.0020.0011.0002][.42DC.0020.0007.0002] # +FF91 FF70 ; [.42FB.0020.0011.0002][.42DC.0020.0007.0002] # +3080 30FC ; [.42FB.0020.0011.0001][.42DC.0020.0007.0002] # +30E5 30FC ; [.42FF.0020.000F.0002][.42DC.0020.0007.0002] # +FF6D 30FC ; [.42FF.0020.000F.0002][.42DC.0020.0007.0002] # +FF6D FF70 ; [.42FF.0020.000F.0002][.42DC.0020.0007.0002] # +3085 30FC ; [.42FF.0020.000F.0001][.42DC.0020.0007.0002] # +30E6 30FC ; [.42FF.0020.0011.0002][.42DC.0020.0007.0002] # +FF95 30FC ; [.42FF.0020.0011.0002][.42DC.0020.0007.0002] # +FF95 FF70 ; [.42FF.0020.0011.0002][.42DC.0020.0007.0002] # +3086 30FC ; [.42FF.0020.0011.0001][.42DC.0020.0007.0002] # +30EB 30FC ; [.4303.0020.0011.0002][.42DC.0020.0007.0002] # +FF99 30FC ; [.4303.0020.0011.0002][.42DC.0020.0007.0002] # +FF99 FF70 ; [.4303.0020.0011.0002][.42DC.0020.0007.0002] # +308B 30FC ; [.4303.0020.0011.0001][.42DC.0020.0007.0002] # +30F4 30FC ; [.42DC.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +30A6 3099 30FC ; [.42DC.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +FF73 FF9E 30FC ; [.42DC.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +FF73 FF9E FF70 ; [.42DC.0020.0011.0002][.0000.0037.0002][.42DC.0020.0007.0002] # +3094 30FC ; [.42DC.0020.0011.0001][.0000.0037.0002][.42DC.0020.0007.0002] # +3046 3099 30FC ; [.42DC.0020.0011.0001][.0000.0037.0002][.42DC.0020.0007.0002] # +31F0 30FC ; [.42E2.0020.000F][.42DC.0020.0007.0002] # +31F2 30FC ; [.42E7.0020.000F][.42DC.0020.0007.0002] # +31F4 30FC ; [.42F1.0020.000F][.42DC.0020.0007.0002] # +31F7 30FC ; [.42F6.0020.000F][.42DC.0020.0007.0002] # +31FA 30FC ; [.42FB.0020.000F][.42DC.0020.0007.0002] # +31FD 30FC ; [.4303.0020.000F][.42DC.0020.0007.0002] # +30A7 30FC ; [.42DE.0020.000F.0002][.42DE.0020.0007.0002] # +FF6A 30FC ; [.42DE.0020.000F.0002][.42DE.0020.0007.0002] # +FF6A FF70 ; [.42DE.0020.000F.0002][.42DE.0020.0007.0002] # +3047 30FC ; [.42DE.0020.000F.0001][.42DE.0020.0007.0002] # +30A8 30FC ; [.42DE.0020.0011.0002][.42DE.0020.0007.0002] # +FF74 30FC ; [.42DE.0020.0011.0002][.42DE.0020.0007.0002] # +FF74 FF70 ; [.42DE.0020.0011.0002][.42DE.0020.0007.0002] # +3048 30FC ; [.42DE.0020.0011.0001][.42DE.0020.0007.0002] # +30B1 30FC ; [.42E3.0020.0011.0002][.42DE.0020.0007.0002] # +FF79 30FC ; [.42E3.0020.0011.0002][.42DE.0020.0007.0002] # +FF79 FF70 ; [.42E3.0020.0011.0002][.42DE.0020.0007.0002] # +3051 30FC ; [.42E3.0020.0011.0001][.42DE.0020.0007.0002] # +30B2 30FC ; [.42E3.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +30B1 3099 30FC ; [.42E3.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +FF79 FF9E 30FC ; [.42E3.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +FF79 FF9E FF70 ; [.42E3.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +3052 30FC ; [.42E3.0020.0011.0001][.0000.0037.0002][.42DE.0020.0007.0002] # +3051 3099 30FC ; [.42E3.0020.0011.0001][.0000.0037.0002][.42DE.0020.0007.0002] # +30BB 30FC ; [.42E8.0020.0011.0002][.42DE.0020.0007.0002] # +FF7E 30FC ; [.42E8.0020.0011.0002][.42DE.0020.0007.0002] # +FF7E FF70 ; [.42E8.0020.0011.0002][.42DE.0020.0007.0002] # +305B 30FC ; [.42E8.0020.0011.0001][.42DE.0020.0007.0002] # +30BC 30FC ; [.42E8.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +30BB 3099 30FC ; [.42E8.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +FF7E FF9E 30FC ; [.42E8.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +FF7E FF9E FF70 ; [.42E8.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +305C 30FC ; [.42E8.0020.0011.0001][.0000.0037.0002][.42DE.0020.0007.0002] # +305B 3099 30FC ; [.42E8.0020.0011.0001][.0000.0037.0002][.42DE.0020.0007.0002] # +30C6 30FC ; [.42ED.0020.0011.0002][.42DE.0020.0007.0002] # +FF83 30FC ; [.42ED.0020.0011.0002][.42DE.0020.0007.0002] # +FF83 FF70 ; [.42ED.0020.0011.0002][.42DE.0020.0007.0002] # +3066 30FC ; [.42ED.0020.0011.0001][.42DE.0020.0007.0002] # +30C7 30FC ; [.42ED.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +30C6 3099 30FC ; [.42ED.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +FF83 FF9E 30FC ; [.42ED.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +FF83 FF9E FF70 ; [.42ED.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +3067 30FC ; [.42ED.0020.0011.0001][.0000.0037.0002][.42DE.0020.0007.0002] # +3066 3099 30FC ; [.42ED.0020.0011.0001][.0000.0037.0002][.42DE.0020.0007.0002] # +30CD 30FC ; [.42F2.0020.0011.0002][.42DE.0020.0007.0002] # +FF88 30FC ; [.42F2.0020.0011.0002][.42DE.0020.0007.0002] # +FF88 FF70 ; [.42F2.0020.0011.0002][.42DE.0020.0007.0002] # +306D 30FC ; [.42F2.0020.0011.0001][.42DE.0020.0007.0002] # +30D8 30FC ; [.42F7.0020.0011.0002][.42DE.0020.0007.0002] # +FF8D 30FC ; [.42F7.0020.0011.0002][.42DE.0020.0007.0002] # +FF8D FF70 ; [.42F7.0020.0011.0002][.42DE.0020.0007.0002] # +3078 30FC ; [.42F7.0020.0011.0001][.42DE.0020.0007.0002] # +30D9 30FC ; [.42F7.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +30D8 3099 30FC ; [.42F7.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +FF8D FF9E 30FC ; [.42F7.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +FF8D FF9E FF70 ; [.42F7.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +3079 30FC ; [.42F7.0020.0011.0001][.0000.0037.0002][.42DE.0020.0007.0002] # +3078 3099 30FC ; [.42F7.0020.0011.0001][.0000.0037.0002][.42DE.0020.0007.0002] # +30DA 30FC ; [.42F7.0020.0011.0002][.0000.0038.0002][.42DE.0020.0007.0002] # +30D8 309A 30FC ; [.42F7.0020.0011.0002][.0000.0038.0002][.42DE.0020.0007.0002] # +FF8D FF9F 30FC ; [.42F7.0020.0011.0002][.0000.0038.0002][.42DE.0020.0007.0002] # +FF8D FF9F FF70 ; [.42F7.0020.0011.0002][.0000.0038.0002][.42DE.0020.0007.0002] # +307A 30FC ; [.42F7.0020.0011.0001][.0000.0038.0002][.42DE.0020.0007.0002] # +3078 309A 30FC ; [.42F7.0020.0011.0001][.0000.0038.0002][.42DE.0020.0007.0002] # +30E1 30FC ; [.42FC.0020.0011.0002][.42DE.0020.0007.0002] # +FF92 30FC ; [.42FC.0020.0011.0002][.42DE.0020.0007.0002] # +FF92 FF70 ; [.42FC.0020.0011.0002][.42DE.0020.0007.0002] # +3081 30FC ; [.42FC.0020.0011.0001][.42DE.0020.0007.0002] # +30EC 30FC ; [.4304.0020.0011.0002][.42DE.0020.0007.0002] # +FF9A 30FC ; [.4304.0020.0011.0002][.42DE.0020.0007.0002] # +FF9A FF70 ; [.4304.0020.0011.0002][.42DE.0020.0007.0002] # +308C 30FC ; [.4304.0020.0011.0001][.42DE.0020.0007.0002] # +30F1 30FC ; [.4308.0020.0011.0002][.42DE.0020.0007.0002] # +3091 30FC ; [.4308.0020.0011.0001][.42DE.0020.0007.0002] # +30F9 30FC ; [.4308.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +30F1 3099 30FC ; [.4308.0020.0011.0002][.0000.0037.0002][.42DE.0020.0007.0002] # +30F6 30FC ; [.42E3.0020.000F.0002][.42DE.0020.0007.0002] # +3096 30FC ; [.42E3.0020.000F.0001][.42DE.0020.0007.0002] # +31F8 30FC ; [.42F7.0020.000F][.42DE.0020.0007.0002] # +31FE 30FC ; [.4304.0020.000F][.42DE.0020.0007.0002] # +30A9 30FC ; [.42DF.0020.000F.0002][.42DF.0020.0007.0002] # +FF6B 30FC ; [.42DF.0020.000F.0002][.42DF.0020.0007.0002] # +FF6B FF70 ; [.42DF.0020.000F.0002][.42DF.0020.0007.0002] # +3049 30FC ; [.42DF.0020.000F.0001][.42DF.0020.0007.0002] # +30AA 30FC ; [.42DF.0020.0011.0002][.42DF.0020.0007.0002] # +FF75 30FC ; [.42DF.0020.0011.0002][.42DF.0020.0007.0002] # +FF75 FF70 ; [.42DF.0020.0011.0002][.42DF.0020.0007.0002] # +304A 30FC ; [.42DF.0020.0011.0001][.42DF.0020.0007.0002] # +30B3 30FC ; [.42E4.0020.0011.0002][.42DF.0020.0007.0002] # +FF7A 30FC ; [.42E4.0020.0011.0002][.42DF.0020.0007.0002] # +FF7A FF70 ; [.42E4.0020.0011.0002][.42DF.0020.0007.0002] # +3053 30FC ; [.42E4.0020.0011.0001][.42DF.0020.0007.0002] # +30B4 30FC ; [.42E4.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +30B3 3099 30FC ; [.42E4.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +FF7A FF9E 30FC ; [.42E4.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +FF7A FF9E FF70 ; [.42E4.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +3054 30FC ; [.42E4.0020.0011.0001][.0000.0037.0002][.42DF.0020.0007.0002] # +3053 3099 30FC ; [.42E4.0020.0011.0001][.0000.0037.0002][.42DF.0020.0007.0002] # +30BD 30FC ; [.42E9.0020.0011.0002][.42DF.0020.0007.0002] # +FF7F 30FC ; [.42E9.0020.0011.0002][.42DF.0020.0007.0002] # +FF7F FF70 ; [.42E9.0020.0011.0002][.42DF.0020.0007.0002] # +305D 30FC ; [.42E9.0020.0011.0001][.42DF.0020.0007.0002] # +30BE 30FC ; [.42E9.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +30BD 3099 30FC ; [.42E9.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +FF7F FF9E 30FC ; [.42E9.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +FF7F FF9E FF70 ; [.42E9.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +305E 30FC ; [.42E9.0020.0011.0001][.0000.0037.0002][.42DF.0020.0007.0002] # +305D 3099 30FC ; [.42E9.0020.0011.0001][.0000.0037.0002][.42DF.0020.0007.0002] # +30C8 30FC ; [.42EE.0020.0011.0002][.42DF.0020.0007.0002] # +FF84 30FC ; [.42EE.0020.0011.0002][.42DF.0020.0007.0002] # +FF84 FF70 ; [.42EE.0020.0011.0002][.42DF.0020.0007.0002] # +3068 30FC ; [.42EE.0020.0011.0001][.42DF.0020.0007.0002] # +30C9 30FC ; [.42EE.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +30C8 3099 30FC ; [.42EE.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +FF84 FF9E 30FC ; [.42EE.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +FF84 FF9E FF70 ; [.42EE.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +3069 30FC ; [.42EE.0020.0011.0001][.0000.0037.0002][.42DF.0020.0007.0002] # +3068 3099 30FC ; [.42EE.0020.0011.0001][.0000.0037.0002][.42DF.0020.0007.0002] # +30CE 30FC ; [.42F3.0020.0011.0002][.42DF.0020.0007.0002] # +FF89 30FC ; [.42F3.0020.0011.0002][.42DF.0020.0007.0002] # +FF89 FF70 ; [.42F3.0020.0011.0002][.42DF.0020.0007.0002] # +306E 30FC ; [.42F3.0020.0011.0001][.42DF.0020.0007.0002] # +30DB 30FC ; [.42F8.0020.0011.0002][.42DF.0020.0007.0002] # +FF8E 30FC ; [.42F8.0020.0011.0002][.42DF.0020.0007.0002] # +FF8E FF70 ; [.42F8.0020.0011.0002][.42DF.0020.0007.0002] # +307B 30FC ; [.42F8.0020.0011.0001][.42DF.0020.0007.0002] # +30DC 30FC ; [.42F8.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +30DB 3099 30FC ; [.42F8.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +FF8E FF9E 30FC ; [.42F8.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +FF8E FF9E FF70 ; [.42F8.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +307C 30FC ; [.42F8.0020.0011.0001][.0000.0037.0002][.42DF.0020.0007.0002] # +307B 3099 30FC ; [.42F8.0020.0011.0001][.0000.0037.0002][.42DF.0020.0007.0002] # +30DD 30FC ; [.42F8.0020.0011.0002][.0000.0038.0002][.42DF.0020.0007.0002] # +30DB 309A 30FC ; [.42F8.0020.0011.0002][.0000.0038.0002][.42DF.0020.0007.0002] # +FF8E FF9F 30FC ; [.42F8.0020.0011.0002][.0000.0038.0002][.42DF.0020.0007.0002] # +FF8E FF9F FF70 ; [.42F8.0020.0011.0002][.0000.0038.0002][.42DF.0020.0007.0002] # +307D 30FC ; [.42F8.0020.0011.0001][.0000.0038.0002][.42DF.0020.0007.0002] # +307B 309A 30FC ; [.42F8.0020.0011.0001][.0000.0038.0002][.42DF.0020.0007.0002] # +30E2 30FC ; [.42FD.0020.0011.0002][.42DF.0020.0007.0002] # +FF93 30FC ; [.42FD.0020.0011.0002][.42DF.0020.0007.0002] # +FF93 FF70 ; [.42FD.0020.0011.0002][.42DF.0020.0007.0002] # +3082 30FC ; [.42FD.0020.0011.0001][.42DF.0020.0007.0002] # +30E7 30FC ; [.4300.0020.000F.0002][.42DF.0020.0007.0002] # +FF6E 30FC ; [.4300.0020.000F.0002][.42DF.0020.0007.0002] # +FF6E FF70 ; [.4300.0020.000F.0002][.42DF.0020.0007.0002] # +3087 30FC ; [.4300.0020.000F.0001][.42DF.0020.0007.0002] # +30E8 30FC ; [.4300.0020.0011.0002][.42DF.0020.0007.0002] # +FF96 30FC ; [.4300.0020.0011.0002][.42DF.0020.0007.0002] # +FF96 FF70 ; [.4300.0020.0011.0002][.42DF.0020.0007.0002] # +3088 30FC ; [.4300.0020.0011.0001][.42DF.0020.0007.0002] # +30ED 30FC ; [.4305.0020.0011.0002][.42DF.0020.0007.0002] # +FF9B 30FC ; [.4305.0020.0011.0002][.42DF.0020.0007.0002] # +FF9B FF70 ; [.4305.0020.0011.0002][.42DF.0020.0007.0002] # +308D 30FC ; [.4305.0020.0011.0001][.42DF.0020.0007.0002] # +30F2 30FC ; [.4309.0020.0011.0002][.42DF.0020.0007.0002] # +FF66 30FC ; [.4309.0020.0011.0002][.42DF.0020.0007.0002] # +FF66 FF70 ; [.4309.0020.0011.0002][.42DF.0020.0007.0002] # +3092 30FC ; [.4309.0020.0011.0001][.42DF.0020.0007.0002] # +30FA 30FC ; [.4309.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +30F2 3099 30FC ; [.4309.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +FF66 FF9E 30FC ; [.4309.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +FF66 FF9E FF70 ; [.4309.0020.0011.0002][.0000.0037.0002][.42DF.0020.0007.0002] # +31F3 30FC ; [.42EE.0020.000F][.42DF.0020.0007.0002] # +31F9 30FC ; [.42F8.0020.000F][.42DF.0020.0007.0002] # +31FF 30FC ; [.4305.0020.000F][.42DF.0020.0007.0002] # +30A1 30FD ; [.42DA.0020.000F.0002][.42DA.0020.0010.0002] # +FF67 30FD ; [.42DA.0020.000F.0002][.42DA.0020.0010.0002] # +3041 309D ; [.42DA.0020.000F.0001][.42DA.0020.0010.0002] # +30A2 30FD ; [.42DA.0020.0011.0002][.42DA.0020.0010.0002] # +FF71 30FD ; [.42DA.0020.0011.0002][.42DA.0020.0010.0002] # +3042 309D ; [.42DA.0020.0011.0001][.42DA.0020.0010.0002] # +30A3 30FD ; [.42DB.0020.000F.0002][.42DB.0020.0010.0002] # +FF68 30FD ; [.42DB.0020.000F.0002][.42DB.0020.0010.0002] # +3043 309D ; [.42DB.0020.000F.0001][.42DB.0020.0010.0002] # +30A4 30FD ; [.42DB.0020.0011.0002][.42DB.0020.0010.0002] # +FF72 30FD ; [.42DB.0020.0011.0002][.42DB.0020.0010.0002] # +3044 309D ; [.42DB.0020.0011.0001][.42DB.0020.0010.0002] # +30A5 30FD ; [.42DC.0020.000F.0002][.42DC.0020.0010.0002] # +FF69 30FD ; [.42DC.0020.000F.0002][.42DC.0020.0010.0002] # +3045 309D ; [.42DC.0020.000F.0001][.42DC.0020.0010.0002] # +30A5 30FE ; [.42DC.0020.000F.0002][.42DC.0020.0010.0002][.0000.0037.0002] # +FF69 30FE ; [.42DC.0020.000F.0002][.42DC.0020.0010.0002][.0000.0037.0002] # +3045 309E ; [.42DC.0020.000F.0001][.42DC.0020.0010.0002][.0000.0037.0002] # +30A6 30FD ; [.42DC.0020.0011.0002][.42DC.0020.0010.0002] # +FF73 30FD ; [.42DC.0020.0011.0002][.42DC.0020.0010.0002] # +3046 309D ; [.42DC.0020.0011.0001][.42DC.0020.0010.0002] # +30A6 30FE ; [.42DC.0020.0011.0002][.42DC.0020.0010.0002][.0000.0037.0002] # +FF73 30FE ; [.42DC.0020.0011.0002][.42DC.0020.0010.0002][.0000.0037.0002] # +3046 309E ; [.42DC.0020.0011.0001][.42DC.0020.0010.0002][.0000.0037.0002] # +30A7 30FD ; [.42DE.0020.000F.0002][.42DE.0020.0010.0002] # +FF6A 30FD ; [.42DE.0020.000F.0002][.42DE.0020.0010.0002] # +3047 309D ; [.42DE.0020.000F.0001][.42DE.0020.0010.0002] # +30A8 30FD ; [.42DE.0020.0011.0002][.42DE.0020.0010.0002] # +FF74 30FD ; [.42DE.0020.0011.0002][.42DE.0020.0010.0002] # +3048 309D ; [.42DE.0020.0011.0001][.42DE.0020.0010.0002] # +30A9 30FD ; [.42DF.0020.000F.0002][.42DF.0020.0010.0002] # +FF6B 30FD ; [.42DF.0020.000F.0002][.42DF.0020.0010.0002] # +3049 309D ; [.42DF.0020.000F.0001][.42DF.0020.0010.0002] # +30AA 30FD ; [.42DF.0020.0011.0002][.42DF.0020.0010.0002] # +FF75 30FD ; [.42DF.0020.0011.0002][.42DF.0020.0010.0002] # +304A 309D ; [.42DF.0020.0011.0001][.42DF.0020.0010.0002] # +30AB 30FD ; [.42E0.0020.0011.0002][.42E0.0020.0010.0002] # +FF76 30FD ; [.42E0.0020.0011.0002][.42E0.0020.0010.0002] # +304B 309D ; [.42E0.0020.0011.0001][.42E0.0020.0010.0002] # +30AB 30FE ; [.42E0.0020.0011.0002][.42E0.0020.0010.0002][.0000.0037.0002] # +FF76 30FE ; [.42E0.0020.0011.0002][.42E0.0020.0010.0002][.0000.0037.0002] # +304B 309E ; [.42E0.0020.0011.0001][.42E0.0020.0010.0002][.0000.0037.0002] # +30AC 30FD ; [.42E0.0020.0011.0002][.0000.0037.0002][.42E0.0020.0010.0002] # +30AB 3099 30FD ; [.42E0.0020.0011.0002][.0000.0037.0002][.42E0.0020.0010.0002] # +FF76 FF9E 30FD ; [.42E0.0020.0011.0002][.0000.0037.0002][.42E0.0020.0010.0002] # +304C 309D ; [.42E0.0020.0011.0001][.0000.0037.0002][.42E0.0020.0010.0002] # +304B 3099 309D ; [.42E0.0020.0011.0001][.0000.0037.0002][.42E0.0020.0010.0002] # +30AC 30FE ; [.42E0.0020.0011.0002][.0000.0037.0002][.42E0.0020.0010.0002][.0000.0037.0002] # +30AB 3099 30FE ; [.42E0.0020.0011.0002][.0000.0037.0002][.42E0.0020.0010.0002][.0000.0037.0002] # +FF76 FF9E 30FE ; [.42E0.0020.0011.0002][.0000.0037.0002][.42E0.0020.0010.0002][.0000.0037.0002] # +304C 309E ; [.42E0.0020.0011.0001][.0000.0037.0002][.42E0.0020.0010.0002][.0000.0037.0002] # +304B 3099 309E ; [.42E0.0020.0011.0001][.0000.0037.0002][.42E0.0020.0010.0002][.0000.0037.0002] # +30AD 30FD ; [.42E1.0020.0011.0002][.42E1.0020.0010.0002] # +FF77 30FD ; [.42E1.0020.0011.0002][.42E1.0020.0010.0002] # +304D 309D ; [.42E1.0020.0011.0001][.42E1.0020.0010.0002] # +30AD 30FE ; [.42E1.0020.0011.0002][.42E1.0020.0010.0002][.0000.0037.0002] # +FF77 30FE ; [.42E1.0020.0011.0002][.42E1.0020.0010.0002][.0000.0037.0002] # +304D 309E ; [.42E1.0020.0011.0001][.42E1.0020.0010.0002][.0000.0037.0002] # +30AE 30FD ; [.42E1.0020.0011.0002][.0000.0037.0002][.42E1.0020.0010.0002] # +30AD 3099 30FD ; [.42E1.0020.0011.0002][.0000.0037.0002][.42E1.0020.0010.0002] # +FF77 FF9E 30FD ; [.42E1.0020.0011.0002][.0000.0037.0002][.42E1.0020.0010.0002] # +304E 309D ; [.42E1.0020.0011.0001][.0000.0037.0002][.42E1.0020.0010.0002] # +304D 3099 309D ; [.42E1.0020.0011.0001][.0000.0037.0002][.42E1.0020.0010.0002] # +30AE 30FE ; [.42E1.0020.0011.0002][.0000.0037.0002][.42E1.0020.0010.0002][.0000.0037.0002] # +30AD 3099 30FE ; [.42E1.0020.0011.0002][.0000.0037.0002][.42E1.0020.0010.0002][.0000.0037.0002] # +FF77 FF9E 30FE ; [.42E1.0020.0011.0002][.0000.0037.0002][.42E1.0020.0010.0002][.0000.0037.0002] # +304E 309E ; [.42E1.0020.0011.0001][.0000.0037.0002][.42E1.0020.0010.0002][.0000.0037.0002] # +304D 3099 309E ; [.42E1.0020.0011.0001][.0000.0037.0002][.42E1.0020.0010.0002][.0000.0037.0002] # +30AF 30FD ; [.42E2.0020.0011.0002][.42E2.0020.0010.0002] # +FF78 30FD ; [.42E2.0020.0011.0002][.42E2.0020.0010.0002] # +304F 309D ; [.42E2.0020.0011.0001][.42E2.0020.0010.0002] # +30AF 30FE ; [.42E2.0020.0011.0002][.42E2.0020.0010.0002][.0000.0037.0002] # +FF78 30FE ; [.42E2.0020.0011.0002][.42E2.0020.0010.0002][.0000.0037.0002] # +304F 309E ; [.42E2.0020.0011.0001][.42E2.0020.0010.0002][.0000.0037.0002] # +30B0 30FD ; [.42E2.0020.0011.0002][.0000.0037.0002][.42E2.0020.0010.0002] # +30AF 3099 30FD ; [.42E2.0020.0011.0002][.0000.0037.0002][.42E2.0020.0010.0002] # +FF78 FF9E 30FD ; [.42E2.0020.0011.0002][.0000.0037.0002][.42E2.0020.0010.0002] # +3050 309D ; [.42E2.0020.0011.0001][.0000.0037.0002][.42E2.0020.0010.0002] # +304F 3099 309D ; [.42E2.0020.0011.0001][.0000.0037.0002][.42E2.0020.0010.0002] # +30B0 30FE ; [.42E2.0020.0011.0002][.0000.0037.0002][.42E2.0020.0010.0002][.0000.0037.0002] # +30AF 3099 30FE ; [.42E2.0020.0011.0002][.0000.0037.0002][.42E2.0020.0010.0002][.0000.0037.0002] # +FF78 FF9E 30FE ; [.42E2.0020.0011.0002][.0000.0037.0002][.42E2.0020.0010.0002][.0000.0037.0002] # +3050 309E ; [.42E2.0020.0011.0001][.0000.0037.0002][.42E2.0020.0010.0002][.0000.0037.0002] # +304F 3099 309E ; [.42E2.0020.0011.0001][.0000.0037.0002][.42E2.0020.0010.0002][.0000.0037.0002] # +30B1 30FD ; [.42E3.0020.0011.0002][.42E3.0020.0010.0002] # +FF79 30FD ; [.42E3.0020.0011.0002][.42E3.0020.0010.0002] # +3051 309D ; [.42E3.0020.0011.0001][.42E3.0020.0010.0002] # +30B1 30FE ; [.42E3.0020.0011.0002][.42E3.0020.0010.0002][.0000.0037.0002] # +FF79 30FE ; [.42E3.0020.0011.0002][.42E3.0020.0010.0002][.0000.0037.0002] # +3051 309E ; [.42E3.0020.0011.0001][.42E3.0020.0010.0002][.0000.0037.0002] # +30B2 30FD ; [.42E3.0020.0011.0002][.0000.0037.0002][.42E3.0020.0010.0002] # +30B1 3099 30FD ; [.42E3.0020.0011.0002][.0000.0037.0002][.42E3.0020.0010.0002] # +FF79 FF9E 30FD ; [.42E3.0020.0011.0002][.0000.0037.0002][.42E3.0020.0010.0002] # +3052 309D ; [.42E3.0020.0011.0001][.0000.0037.0002][.42E3.0020.0010.0002] # +3051 3099 309D ; [.42E3.0020.0011.0001][.0000.0037.0002][.42E3.0020.0010.0002] # +30B2 30FE ; [.42E3.0020.0011.0002][.0000.0037.0002][.42E3.0020.0010.0002][.0000.0037.0002] # +30B1 3099 30FE ; [.42E3.0020.0011.0002][.0000.0037.0002][.42E3.0020.0010.0002][.0000.0037.0002] # +FF79 FF9E 30FE ; [.42E3.0020.0011.0002][.0000.0037.0002][.42E3.0020.0010.0002][.0000.0037.0002] # +3052 309E ; [.42E3.0020.0011.0001][.0000.0037.0002][.42E3.0020.0010.0002][.0000.0037.0002] # +3051 3099 309E ; [.42E3.0020.0011.0001][.0000.0037.0002][.42E3.0020.0010.0002][.0000.0037.0002] # +30B3 30FD ; [.42E4.0020.0011.0002][.42E4.0020.0010.0002] # +FF7A 30FD ; [.42E4.0020.0011.0002][.42E4.0020.0010.0002] # +3053 309D ; [.42E4.0020.0011.0001][.42E4.0020.0010.0002] # +30B3 30FE ; [.42E4.0020.0011.0002][.42E4.0020.0010.0002][.0000.0037.0002] # +FF7A 30FE ; [.42E4.0020.0011.0002][.42E4.0020.0010.0002][.0000.0037.0002] # +3053 309E ; [.42E4.0020.0011.0001][.42E4.0020.0010.0002][.0000.0037.0002] # +30B4 30FD ; [.42E4.0020.0011.0002][.0000.0037.0002][.42E4.0020.0010.0002] # +30B3 3099 30FD ; [.42E4.0020.0011.0002][.0000.0037.0002][.42E4.0020.0010.0002] # +FF7A FF9E 30FD ; [.42E4.0020.0011.0002][.0000.0037.0002][.42E4.0020.0010.0002] # +3054 309D ; [.42E4.0020.0011.0001][.0000.0037.0002][.42E4.0020.0010.0002] # +3053 3099 309D ; [.42E4.0020.0011.0001][.0000.0037.0002][.42E4.0020.0010.0002] # +30B4 30FE ; [.42E4.0020.0011.0002][.0000.0037.0002][.42E4.0020.0010.0002][.0000.0037.0002] # +30B3 3099 30FE ; [.42E4.0020.0011.0002][.0000.0037.0002][.42E4.0020.0010.0002][.0000.0037.0002] # +FF7A FF9E 30FE ; [.42E4.0020.0011.0002][.0000.0037.0002][.42E4.0020.0010.0002][.0000.0037.0002] # +3054 309E ; [.42E4.0020.0011.0001][.0000.0037.0002][.42E4.0020.0010.0002][.0000.0037.0002] # +3053 3099 309E ; [.42E4.0020.0011.0001][.0000.0037.0002][.42E4.0020.0010.0002][.0000.0037.0002] # +30B5 30FD ; [.42E5.0020.0011.0002][.42E5.0020.0010.0002] # +FF7B 30FD ; [.42E5.0020.0011.0002][.42E5.0020.0010.0002] # +3055 309D ; [.42E5.0020.0011.0001][.42E5.0020.0010.0002] # +30B5 30FE ; [.42E5.0020.0011.0002][.42E5.0020.0010.0002][.0000.0037.0002] # +FF7B 30FE ; [.42E5.0020.0011.0002][.42E5.0020.0010.0002][.0000.0037.0002] # +3055 309E ; [.42E5.0020.0011.0001][.42E5.0020.0010.0002][.0000.0037.0002] # +30B6 30FD ; [.42E5.0020.0011.0002][.0000.0037.0002][.42E5.0020.0010.0002] # +30B5 3099 30FD ; [.42E5.0020.0011.0002][.0000.0037.0002][.42E5.0020.0010.0002] # +FF7B FF9E 30FD ; [.42E5.0020.0011.0002][.0000.0037.0002][.42E5.0020.0010.0002] # +3056 309D ; [.42E5.0020.0011.0001][.0000.0037.0002][.42E5.0020.0010.0002] # +3055 3099 309D ; [.42E5.0020.0011.0001][.0000.0037.0002][.42E5.0020.0010.0002] # +30B6 30FE ; [.42E5.0020.0011.0002][.0000.0037.0002][.42E5.0020.0010.0002][.0000.0037.0002] # +30B5 3099 30FE ; [.42E5.0020.0011.0002][.0000.0037.0002][.42E5.0020.0010.0002][.0000.0037.0002] # +FF7B FF9E 30FE ; [.42E5.0020.0011.0002][.0000.0037.0002][.42E5.0020.0010.0002][.0000.0037.0002] # +3056 309E ; [.42E5.0020.0011.0001][.0000.0037.0002][.42E5.0020.0010.0002][.0000.0037.0002] # +3055 3099 309E ; [.42E5.0020.0011.0001][.0000.0037.0002][.42E5.0020.0010.0002][.0000.0037.0002] # +30B7 30FD ; [.42E6.0020.0011.0002][.42E6.0020.0010.0002] # +FF7C 30FD ; [.42E6.0020.0011.0002][.42E6.0020.0010.0002] # +3057 309D ; [.42E6.0020.0011.0001][.42E6.0020.0010.0002] # +30B7 30FE ; [.42E6.0020.0011.0002][.42E6.0020.0010.0002][.0000.0037.0002] # +FF7C 30FE ; [.42E6.0020.0011.0002][.42E6.0020.0010.0002][.0000.0037.0002] # +3057 309E ; [.42E6.0020.0011.0001][.42E6.0020.0010.0002][.0000.0037.0002] # +30B8 30FD ; [.42E6.0020.0011.0002][.0000.0037.0002][.42E6.0020.0010.0002] # +30B7 3099 30FD ; [.42E6.0020.0011.0002][.0000.0037.0002][.42E6.0020.0010.0002] # +FF7C FF9E 30FD ; [.42E6.0020.0011.0002][.0000.0037.0002][.42E6.0020.0010.0002] # +3058 309D ; [.42E6.0020.0011.0001][.0000.0037.0002][.42E6.0020.0010.0002] # +3057 3099 309D ; [.42E6.0020.0011.0001][.0000.0037.0002][.42E6.0020.0010.0002] # +30B8 30FE ; [.42E6.0020.0011.0002][.0000.0037.0002][.42E6.0020.0010.0002][.0000.0037.0002] # +30B7 3099 30FE ; [.42E6.0020.0011.0002][.0000.0037.0002][.42E6.0020.0010.0002][.0000.0037.0002] # +FF7C FF9E 30FE ; [.42E6.0020.0011.0002][.0000.0037.0002][.42E6.0020.0010.0002][.0000.0037.0002] # +3058 309E ; [.42E6.0020.0011.0001][.0000.0037.0002][.42E6.0020.0010.0002][.0000.0037.0002] # +3057 3099 309E ; [.42E6.0020.0011.0001][.0000.0037.0002][.42E6.0020.0010.0002][.0000.0037.0002] # +30B9 30FD ; [.42E7.0020.0011.0002][.42E7.0020.0010.0002] # +FF7D 30FD ; [.42E7.0020.0011.0002][.42E7.0020.0010.0002] # +3059 309D ; [.42E7.0020.0011.0001][.42E7.0020.0010.0002] # +30B9 30FE ; [.42E7.0020.0011.0002][.42E7.0020.0010.0002][.0000.0037.0002] # +FF7D 30FE ; [.42E7.0020.0011.0002][.42E7.0020.0010.0002][.0000.0037.0002] # +3059 309E ; [.42E7.0020.0011.0001][.42E7.0020.0010.0002][.0000.0037.0002] # +30BA 30FD ; [.42E7.0020.0011.0002][.0000.0037.0002][.42E7.0020.0010.0002] # +30B9 3099 30FD ; [.42E7.0020.0011.0002][.0000.0037.0002][.42E7.0020.0010.0002] # +FF7D FF9E 30FD ; [.42E7.0020.0011.0002][.0000.0037.0002][.42E7.0020.0010.0002] # +305A 309D ; [.42E7.0020.0011.0001][.0000.0037.0002][.42E7.0020.0010.0002] # +3059 3099 309D ; [.42E7.0020.0011.0001][.0000.0037.0002][.42E7.0020.0010.0002] # +30BA 30FE ; [.42E7.0020.0011.0002][.0000.0037.0002][.42E7.0020.0010.0002][.0000.0037.0002] # +30B9 3099 30FE ; [.42E7.0020.0011.0002][.0000.0037.0002][.42E7.0020.0010.0002][.0000.0037.0002] # +FF7D FF9E 30FE ; [.42E7.0020.0011.0002][.0000.0037.0002][.42E7.0020.0010.0002][.0000.0037.0002] # +305A 309E ; [.42E7.0020.0011.0001][.0000.0037.0002][.42E7.0020.0010.0002][.0000.0037.0002] # +3059 3099 309E ; [.42E7.0020.0011.0001][.0000.0037.0002][.42E7.0020.0010.0002][.0000.0037.0002] # +30BB 30FD ; [.42E8.0020.0011.0002][.42E8.0020.0010.0002] # +FF7E 30FD ; [.42E8.0020.0011.0002][.42E8.0020.0010.0002] # +305B 309D ; [.42E8.0020.0011.0001][.42E8.0020.0010.0002] # +30BB 30FE ; [.42E8.0020.0011.0002][.42E8.0020.0010.0002][.0000.0037.0002] # +FF7E 30FE ; [.42E8.0020.0011.0002][.42E8.0020.0010.0002][.0000.0037.0002] # +305B 309E ; [.42E8.0020.0011.0001][.42E8.0020.0010.0002][.0000.0037.0002] # +30BC 30FD ; [.42E8.0020.0011.0002][.0000.0037.0002][.42E8.0020.0010.0002] # +30BB 3099 30FD ; [.42E8.0020.0011.0002][.0000.0037.0002][.42E8.0020.0010.0002] # +FF7E FF9E 30FD ; [.42E8.0020.0011.0002][.0000.0037.0002][.42E8.0020.0010.0002] # +305C 309D ; [.42E8.0020.0011.0001][.0000.0037.0002][.42E8.0020.0010.0002] # +305B 3099 309D ; [.42E8.0020.0011.0001][.0000.0037.0002][.42E8.0020.0010.0002] # +30BC 30FE ; [.42E8.0020.0011.0002][.0000.0037.0002][.42E8.0020.0010.0002][.0000.0037.0002] # +30BB 3099 30FE ; [.42E8.0020.0011.0002][.0000.0037.0002][.42E8.0020.0010.0002][.0000.0037.0002] # +FF7E FF9E 30FE ; [.42E8.0020.0011.0002][.0000.0037.0002][.42E8.0020.0010.0002][.0000.0037.0002] # +305C 309E ; [.42E8.0020.0011.0001][.0000.0037.0002][.42E8.0020.0010.0002][.0000.0037.0002] # +305B 3099 309E ; [.42E8.0020.0011.0001][.0000.0037.0002][.42E8.0020.0010.0002][.0000.0037.0002] # +30BD 30FD ; [.42E9.0020.0011.0002][.42E9.0020.0010.0002] # +FF7F 30FD ; [.42E9.0020.0011.0002][.42E9.0020.0010.0002] # +305D 309D ; [.42E9.0020.0011.0001][.42E9.0020.0010.0002] # +30BD 30FE ; [.42E9.0020.0011.0002][.42E9.0020.0010.0002][.0000.0037.0002] # +FF7F 30FE ; [.42E9.0020.0011.0002][.42E9.0020.0010.0002][.0000.0037.0002] # +305D 309E ; [.42E9.0020.0011.0001][.42E9.0020.0010.0002][.0000.0037.0002] # +30BE 30FD ; [.42E9.0020.0011.0002][.0000.0037.0002][.42E9.0020.0010.0002] # +30BD 3099 30FD ; [.42E9.0020.0011.0002][.0000.0037.0002][.42E9.0020.0010.0002] # +FF7F FF9E 30FD ; [.42E9.0020.0011.0002][.0000.0037.0002][.42E9.0020.0010.0002] # +305E 309D ; [.42E9.0020.0011.0001][.0000.0037.0002][.42E9.0020.0010.0002] # +305D 3099 309D ; [.42E9.0020.0011.0001][.0000.0037.0002][.42E9.0020.0010.0002] # +30BE 30FE ; [.42E9.0020.0011.0002][.0000.0037.0002][.42E9.0020.0010.0002][.0000.0037.0002] # +30BD 3099 30FE ; [.42E9.0020.0011.0002][.0000.0037.0002][.42E9.0020.0010.0002][.0000.0037.0002] # +FF7F FF9E 30FE ; [.42E9.0020.0011.0002][.0000.0037.0002][.42E9.0020.0010.0002][.0000.0037.0002] # +305E 309E ; [.42E9.0020.0011.0001][.0000.0037.0002][.42E9.0020.0010.0002][.0000.0037.0002] # +305D 3099 309E ; [.42E9.0020.0011.0001][.0000.0037.0002][.42E9.0020.0010.0002][.0000.0037.0002] # +30BF 30FD ; [.42EA.0020.0011.0002][.42EA.0020.0010.0002] # +FF80 30FD ; [.42EA.0020.0011.0002][.42EA.0020.0010.0002] # +305F 309D ; [.42EA.0020.0011.0001][.42EA.0020.0010.0002] # +30BF 30FE ; [.42EA.0020.0011.0002][.42EA.0020.0010.0002][.0000.0037.0002] # +FF80 30FE ; [.42EA.0020.0011.0002][.42EA.0020.0010.0002][.0000.0037.0002] # +305F 309E ; [.42EA.0020.0011.0001][.42EA.0020.0010.0002][.0000.0037.0002] # +30C0 30FD ; [.42EA.0020.0011.0002][.0000.0037.0002][.42EA.0020.0010.0002] # +30BF 3099 30FD ; [.42EA.0020.0011.0002][.0000.0037.0002][.42EA.0020.0010.0002] # +FF80 FF9E 30FD ; [.42EA.0020.0011.0002][.0000.0037.0002][.42EA.0020.0010.0002] # +3060 309D ; [.42EA.0020.0011.0001][.0000.0037.0002][.42EA.0020.0010.0002] # +305F 3099 309D ; [.42EA.0020.0011.0001][.0000.0037.0002][.42EA.0020.0010.0002] # +30C0 30FE ; [.42EA.0020.0011.0002][.0000.0037.0002][.42EA.0020.0010.0002][.0000.0037.0002] # +30BF 3099 30FE ; [.42EA.0020.0011.0002][.0000.0037.0002][.42EA.0020.0010.0002][.0000.0037.0002] # +FF80 FF9E 30FE ; [.42EA.0020.0011.0002][.0000.0037.0002][.42EA.0020.0010.0002][.0000.0037.0002] # +3060 309E ; [.42EA.0020.0011.0001][.0000.0037.0002][.42EA.0020.0010.0002][.0000.0037.0002] # +305F 3099 309E ; [.42EA.0020.0011.0001][.0000.0037.0002][.42EA.0020.0010.0002][.0000.0037.0002] # +30C1 30FD ; [.42EB.0020.0011.0002][.42EB.0020.0010.0002] # +FF81 30FD ; [.42EB.0020.0011.0002][.42EB.0020.0010.0002] # +3061 309D ; [.42EB.0020.0011.0001][.42EB.0020.0010.0002] # +30C1 30FE ; [.42EB.0020.0011.0002][.42EB.0020.0010.0002][.0000.0037.0002] # +FF81 30FE ; [.42EB.0020.0011.0002][.42EB.0020.0010.0002][.0000.0037.0002] # +3061 309E ; [.42EB.0020.0011.0001][.42EB.0020.0010.0002][.0000.0037.0002] # +30C2 30FD ; [.42EB.0020.0011.0002][.0000.0037.0002][.42EB.0020.0010.0002] # +30C1 3099 30FD ; [.42EB.0020.0011.0002][.0000.0037.0002][.42EB.0020.0010.0002] # +FF81 FF9E 30FD ; [.42EB.0020.0011.0002][.0000.0037.0002][.42EB.0020.0010.0002] # +3062 309D ; [.42EB.0020.0011.0001][.0000.0037.0002][.42EB.0020.0010.0002] # +3061 3099 309D ; [.42EB.0020.0011.0001][.0000.0037.0002][.42EB.0020.0010.0002] # +30C2 30FE ; [.42EB.0020.0011.0002][.0000.0037.0002][.42EB.0020.0010.0002][.0000.0037.0002] # +30C1 3099 30FE ; [.42EB.0020.0011.0002][.0000.0037.0002][.42EB.0020.0010.0002][.0000.0037.0002] # +FF81 FF9E 30FE ; [.42EB.0020.0011.0002][.0000.0037.0002][.42EB.0020.0010.0002][.0000.0037.0002] # +3062 309E ; [.42EB.0020.0011.0001][.0000.0037.0002][.42EB.0020.0010.0002][.0000.0037.0002] # +3061 3099 309E ; [.42EB.0020.0011.0001][.0000.0037.0002][.42EB.0020.0010.0002][.0000.0037.0002] # +30C3 30FD ; [.42EC.0020.000F.0002][.42EC.0020.0010.0002] # +FF6F 30FD ; [.42EC.0020.000F.0002][.42EC.0020.0010.0002] # +3063 309D ; [.42EC.0020.000F.0001][.42EC.0020.0010.0002] # +30C3 30FE ; [.42EC.0020.000F.0002][.42EC.0020.0010.0002][.0000.0037.0002] # +FF6F 30FE ; [.42EC.0020.000F.0002][.42EC.0020.0010.0002][.0000.0037.0002] # +3063 309E ; [.42EC.0020.000F.0001][.42EC.0020.0010.0002][.0000.0037.0002] # +30C4 30FD ; [.42EC.0020.0011.0002][.42EC.0020.0010.0002] # +FF82 30FD ; [.42EC.0020.0011.0002][.42EC.0020.0010.0002] # +3064 309D ; [.42EC.0020.0011.0001][.42EC.0020.0010.0002] # +30C4 30FE ; [.42EC.0020.0011.0002][.42EC.0020.0010.0002][.0000.0037.0002] # +FF82 30FE ; [.42EC.0020.0011.0002][.42EC.0020.0010.0002][.0000.0037.0002] # +3064 309E ; [.42EC.0020.0011.0001][.42EC.0020.0010.0002][.0000.0037.0002] # +30C5 30FD ; [.42EC.0020.0011.0002][.0000.0037.0002][.42EC.0020.0010.0002] # +30C4 3099 30FD ; [.42EC.0020.0011.0002][.0000.0037.0002][.42EC.0020.0010.0002] # +FF82 FF9E 30FD ; [.42EC.0020.0011.0002][.0000.0037.0002][.42EC.0020.0010.0002] # +3065 309D ; [.42EC.0020.0011.0001][.0000.0037.0002][.42EC.0020.0010.0002] # +3064 3099 309D ; [.42EC.0020.0011.0001][.0000.0037.0002][.42EC.0020.0010.0002] # +30C5 30FE ; [.42EC.0020.0011.0002][.0000.0037.0002][.42EC.0020.0010.0002][.0000.0037.0002] # +30C4 3099 30FE ; [.42EC.0020.0011.0002][.0000.0037.0002][.42EC.0020.0010.0002][.0000.0037.0002] # +FF82 FF9E 30FE ; [.42EC.0020.0011.0002][.0000.0037.0002][.42EC.0020.0010.0002][.0000.0037.0002] # +3065 309E ; [.42EC.0020.0011.0001][.0000.0037.0002][.42EC.0020.0010.0002][.0000.0037.0002] # +3064 3099 309E ; [.42EC.0020.0011.0001][.0000.0037.0002][.42EC.0020.0010.0002][.0000.0037.0002] # +30C6 30FD ; [.42ED.0020.0011.0002][.42ED.0020.0010.0002] # +FF83 30FD ; [.42ED.0020.0011.0002][.42ED.0020.0010.0002] # +3066 309D ; [.42ED.0020.0011.0001][.42ED.0020.0010.0002] # +30C6 30FE ; [.42ED.0020.0011.0002][.42ED.0020.0010.0002][.0000.0037.0002] # +FF83 30FE ; [.42ED.0020.0011.0002][.42ED.0020.0010.0002][.0000.0037.0002] # +3066 309E ; [.42ED.0020.0011.0001][.42ED.0020.0010.0002][.0000.0037.0002] # +30C7 30FD ; [.42ED.0020.0011.0002][.0000.0037.0002][.42ED.0020.0010.0002] # +30C6 3099 30FD ; [.42ED.0020.0011.0002][.0000.0037.0002][.42ED.0020.0010.0002] # +FF83 FF9E 30FD ; [.42ED.0020.0011.0002][.0000.0037.0002][.42ED.0020.0010.0002] # +3067 309D ; [.42ED.0020.0011.0001][.0000.0037.0002][.42ED.0020.0010.0002] # +3066 3099 309D ; [.42ED.0020.0011.0001][.0000.0037.0002][.42ED.0020.0010.0002] # +30C7 30FE ; [.42ED.0020.0011.0002][.0000.0037.0002][.42ED.0020.0010.0002][.0000.0037.0002] # +30C6 3099 30FE ; [.42ED.0020.0011.0002][.0000.0037.0002][.42ED.0020.0010.0002][.0000.0037.0002] # +FF83 FF9E 30FE ; [.42ED.0020.0011.0002][.0000.0037.0002][.42ED.0020.0010.0002][.0000.0037.0002] # +3067 309E ; [.42ED.0020.0011.0001][.0000.0037.0002][.42ED.0020.0010.0002][.0000.0037.0002] # +3066 3099 309E ; [.42ED.0020.0011.0001][.0000.0037.0002][.42ED.0020.0010.0002][.0000.0037.0002] # +30C8 30FD ; [.42EE.0020.0011.0002][.42EE.0020.0010.0002] # +FF84 30FD ; [.42EE.0020.0011.0002][.42EE.0020.0010.0002] # +3068 309D ; [.42EE.0020.0011.0001][.42EE.0020.0010.0002] # +30C8 30FE ; [.42EE.0020.0011.0002][.42EE.0020.0010.0002][.0000.0037.0002] # +FF84 30FE ; [.42EE.0020.0011.0002][.42EE.0020.0010.0002][.0000.0037.0002] # +3068 309E ; [.42EE.0020.0011.0001][.42EE.0020.0010.0002][.0000.0037.0002] # +30C9 30FD ; [.42EE.0020.0011.0002][.0000.0037.0002][.42EE.0020.0010.0002] # +30C8 3099 30FD ; [.42EE.0020.0011.0002][.0000.0037.0002][.42EE.0020.0010.0002] # +FF84 FF9E 30FD ; [.42EE.0020.0011.0002][.0000.0037.0002][.42EE.0020.0010.0002] # +3069 309D ; [.42EE.0020.0011.0001][.0000.0037.0002][.42EE.0020.0010.0002] # +3068 3099 309D ; [.42EE.0020.0011.0001][.0000.0037.0002][.42EE.0020.0010.0002] # +30C9 30FE ; [.42EE.0020.0011.0002][.0000.0037.0002][.42EE.0020.0010.0002][.0000.0037.0002] # +30C8 3099 30FE ; [.42EE.0020.0011.0002][.0000.0037.0002][.42EE.0020.0010.0002][.0000.0037.0002] # +FF84 FF9E 30FE ; [.42EE.0020.0011.0002][.0000.0037.0002][.42EE.0020.0010.0002][.0000.0037.0002] # +3069 309E ; [.42EE.0020.0011.0001][.0000.0037.0002][.42EE.0020.0010.0002][.0000.0037.0002] # +3068 3099 309E ; [.42EE.0020.0011.0001][.0000.0037.0002][.42EE.0020.0010.0002][.0000.0037.0002] # +30CA 30FD ; [.42EF.0020.0011.0002][.42EF.0020.0010.0002] # +FF85 30FD ; [.42EF.0020.0011.0002][.42EF.0020.0010.0002] # +306A 309D ; [.42EF.0020.0011.0001][.42EF.0020.0010.0002] # +30CB 30FD ; [.42F0.0020.0011.0002][.42F0.0020.0010.0002] # +FF86 30FD ; [.42F0.0020.0011.0002][.42F0.0020.0010.0002] # +306B 309D ; [.42F0.0020.0011.0001][.42F0.0020.0010.0002] # +30CC 30FD ; [.42F1.0020.0011.0002][.42F1.0020.0010.0002] # +FF87 30FD ; [.42F1.0020.0011.0002][.42F1.0020.0010.0002] # +306C 309D ; [.42F1.0020.0011.0001][.42F1.0020.0010.0002] # +30CD 30FD ; [.42F2.0020.0011.0002][.42F2.0020.0010.0002] # +FF88 30FD ; [.42F2.0020.0011.0002][.42F2.0020.0010.0002] # +306D 309D ; [.42F2.0020.0011.0001][.42F2.0020.0010.0002] # +30CE 30FD ; [.42F3.0020.0011.0002][.42F3.0020.0010.0002] # +FF89 30FD ; [.42F3.0020.0011.0002][.42F3.0020.0010.0002] # +306E 309D ; [.42F3.0020.0011.0001][.42F3.0020.0010.0002] # +30CF 30FD ; [.42F4.0020.0011.0002][.42F4.0020.0010.0002] # +FF8A 30FD ; [.42F4.0020.0011.0002][.42F4.0020.0010.0002] # +306F 309D ; [.42F4.0020.0011.0001][.42F4.0020.0010.0002] # +30CF 30FE ; [.42F4.0020.0011.0002][.42F4.0020.0010.0002][.0000.0037.0002] # +FF8A 30FE ; [.42F4.0020.0011.0002][.42F4.0020.0010.0002][.0000.0037.0002] # +306F 309E ; [.42F4.0020.0011.0001][.42F4.0020.0010.0002][.0000.0037.0002] # +30D0 30FD ; [.42F4.0020.0011.0002][.0000.0037.0002][.42F4.0020.0010.0002] # +30CF 3099 30FD ; [.42F4.0020.0011.0002][.0000.0037.0002][.42F4.0020.0010.0002] # +FF8A FF9E 30FD ; [.42F4.0020.0011.0002][.0000.0037.0002][.42F4.0020.0010.0002] # +3070 309D ; [.42F4.0020.0011.0001][.0000.0037.0002][.42F4.0020.0010.0002] # +306F 3099 309D ; [.42F4.0020.0011.0001][.0000.0037.0002][.42F4.0020.0010.0002] # +30D0 30FE ; [.42F4.0020.0011.0002][.0000.0037.0002][.42F4.0020.0010.0002][.0000.0037.0002] # +30CF 3099 30FE ; [.42F4.0020.0011.0002][.0000.0037.0002][.42F4.0020.0010.0002][.0000.0037.0002] # +FF8A FF9E 30FE ; [.42F4.0020.0011.0002][.0000.0037.0002][.42F4.0020.0010.0002][.0000.0037.0002] # +3070 309E ; [.42F4.0020.0011.0001][.0000.0037.0002][.42F4.0020.0010.0002][.0000.0037.0002] # +306F 3099 309E ; [.42F4.0020.0011.0001][.0000.0037.0002][.42F4.0020.0010.0002][.0000.0037.0002] # +30D1 30FD ; [.42F4.0020.0011.0002][.0000.0038.0002][.42F4.0020.0010.0002] # +30CF 309A 30FD ; [.42F4.0020.0011.0002][.0000.0038.0002][.42F4.0020.0010.0002] # +FF8A FF9F 30FD ; [.42F4.0020.0011.0002][.0000.0038.0002][.42F4.0020.0010.0002] # +3071 309D ; [.42F4.0020.0011.0001][.0000.0038.0002][.42F4.0020.0010.0002] # +306F 309A 309D ; [.42F4.0020.0011.0001][.0000.0038.0002][.42F4.0020.0010.0002] # +30D1 30FE ; [.42F4.0020.0011.0002][.0000.0038.0002][.42F4.0020.0010.0002][.0000.0037.0002] # +30CF 309A 30FE ; [.42F4.0020.0011.0002][.0000.0038.0002][.42F4.0020.0010.0002][.0000.0037.0002] # +FF8A FF9F 30FE ; [.42F4.0020.0011.0002][.0000.0038.0002][.42F4.0020.0010.0002][.0000.0037.0002] # +3071 309E ; [.42F4.0020.0011.0001][.0000.0038.0002][.42F4.0020.0010.0002][.0000.0037.0002] # +306F 309A 309E ; [.42F4.0020.0011.0001][.0000.0038.0002][.42F4.0020.0010.0002][.0000.0037.0002] # +30D2 30FD ; [.42F5.0020.0011.0002][.42F5.0020.0010.0002] # +FF8B 30FD ; [.42F5.0020.0011.0002][.42F5.0020.0010.0002] # +3072 309D ; [.42F5.0020.0011.0001][.42F5.0020.0010.0002] # +30D2 30FE ; [.42F5.0020.0011.0002][.42F5.0020.0010.0002][.0000.0037.0002] # +FF8B 30FE ; [.42F5.0020.0011.0002][.42F5.0020.0010.0002][.0000.0037.0002] # +3072 309E ; [.42F5.0020.0011.0001][.42F5.0020.0010.0002][.0000.0037.0002] # +30D3 30FD ; [.42F5.0020.0011.0002][.0000.0037.0002][.42F5.0020.0010.0002] # +30D2 3099 30FD ; [.42F5.0020.0011.0002][.0000.0037.0002][.42F5.0020.0010.0002] # +FF8B FF9E 30FD ; [.42F5.0020.0011.0002][.0000.0037.0002][.42F5.0020.0010.0002] # +3073 309D ; [.42F5.0020.0011.0001][.0000.0037.0002][.42F5.0020.0010.0002] # +3072 3099 309D ; [.42F5.0020.0011.0001][.0000.0037.0002][.42F5.0020.0010.0002] # +30D3 30FE ; [.42F5.0020.0011.0002][.0000.0037.0002][.42F5.0020.0010.0002][.0000.0037.0002] # +30D2 3099 30FE ; [.42F5.0020.0011.0002][.0000.0037.0002][.42F5.0020.0010.0002][.0000.0037.0002] # +FF8B FF9E 30FE ; [.42F5.0020.0011.0002][.0000.0037.0002][.42F5.0020.0010.0002][.0000.0037.0002] # +3073 309E ; [.42F5.0020.0011.0001][.0000.0037.0002][.42F5.0020.0010.0002][.0000.0037.0002] # +3072 3099 309E ; [.42F5.0020.0011.0001][.0000.0037.0002][.42F5.0020.0010.0002][.0000.0037.0002] # +30D4 30FD ; [.42F5.0020.0011.0002][.0000.0038.0002][.42F5.0020.0010.0002] # +30D2 309A 30FD ; [.42F5.0020.0011.0002][.0000.0038.0002][.42F5.0020.0010.0002] # +FF8B FF9F 30FD ; [.42F5.0020.0011.0002][.0000.0038.0002][.42F5.0020.0010.0002] # +3074 309D ; [.42F5.0020.0011.0001][.0000.0038.0002][.42F5.0020.0010.0002] # +3072 309A 309D ; [.42F5.0020.0011.0001][.0000.0038.0002][.42F5.0020.0010.0002] # +30D4 30FE ; [.42F5.0020.0011.0002][.0000.0038.0002][.42F5.0020.0010.0002][.0000.0037.0002] # +30D2 309A 30FE ; [.42F5.0020.0011.0002][.0000.0038.0002][.42F5.0020.0010.0002][.0000.0037.0002] # +FF8B FF9F 30FE ; [.42F5.0020.0011.0002][.0000.0038.0002][.42F5.0020.0010.0002][.0000.0037.0002] # +3074 309E ; [.42F5.0020.0011.0001][.0000.0038.0002][.42F5.0020.0010.0002][.0000.0037.0002] # +3072 309A 309E ; [.42F5.0020.0011.0001][.0000.0038.0002][.42F5.0020.0010.0002][.0000.0037.0002] # +30D5 30FD ; [.42F6.0020.0011.0002][.42F6.0020.0010.0002] # +FF8C 30FD ; [.42F6.0020.0011.0002][.42F6.0020.0010.0002] # +3075 309D ; [.42F6.0020.0011.0001][.42F6.0020.0010.0002] # +30D5 30FE ; [.42F6.0020.0011.0002][.42F6.0020.0010.0002][.0000.0037.0002] # +FF8C 30FE ; [.42F6.0020.0011.0002][.42F6.0020.0010.0002][.0000.0037.0002] # +3075 309E ; [.42F6.0020.0011.0001][.42F6.0020.0010.0002][.0000.0037.0002] # +30D6 30FD ; [.42F6.0020.0011.0002][.0000.0037.0002][.42F6.0020.0010.0002] # +30D5 3099 30FD ; [.42F6.0020.0011.0002][.0000.0037.0002][.42F6.0020.0010.0002] # +FF8C FF9E 30FD ; [.42F6.0020.0011.0002][.0000.0037.0002][.42F6.0020.0010.0002] # +3076 309D ; [.42F6.0020.0011.0001][.0000.0037.0002][.42F6.0020.0010.0002] # +3075 3099 309D ; [.42F6.0020.0011.0001][.0000.0037.0002][.42F6.0020.0010.0002] # +30D6 30FE ; [.42F6.0020.0011.0002][.0000.0037.0002][.42F6.0020.0010.0002][.0000.0037.0002] # +30D5 3099 30FE ; [.42F6.0020.0011.0002][.0000.0037.0002][.42F6.0020.0010.0002][.0000.0037.0002] # +FF8C FF9E 30FE ; [.42F6.0020.0011.0002][.0000.0037.0002][.42F6.0020.0010.0002][.0000.0037.0002] # +3076 309E ; [.42F6.0020.0011.0001][.0000.0037.0002][.42F6.0020.0010.0002][.0000.0037.0002] # +3075 3099 309E ; [.42F6.0020.0011.0001][.0000.0037.0002][.42F6.0020.0010.0002][.0000.0037.0002] # +30D7 30FD ; [.42F6.0020.0011.0002][.0000.0038.0002][.42F6.0020.0010.0002] # +30D5 309A 30FD ; [.42F6.0020.0011.0002][.0000.0038.0002][.42F6.0020.0010.0002] # +FF8C FF9F 30FD ; [.42F6.0020.0011.0002][.0000.0038.0002][.42F6.0020.0010.0002] # +3077 309D ; [.42F6.0020.0011.0001][.0000.0038.0002][.42F6.0020.0010.0002] # +3075 309A 309D ; [.42F6.0020.0011.0001][.0000.0038.0002][.42F6.0020.0010.0002] # +30D7 30FE ; [.42F6.0020.0011.0002][.0000.0038.0002][.42F6.0020.0010.0002][.0000.0037.0002] # +30D5 309A 30FE ; [.42F6.0020.0011.0002][.0000.0038.0002][.42F6.0020.0010.0002][.0000.0037.0002] # +FF8C FF9F 30FE ; [.42F6.0020.0011.0002][.0000.0038.0002][.42F6.0020.0010.0002][.0000.0037.0002] # +3077 309E ; [.42F6.0020.0011.0001][.0000.0038.0002][.42F6.0020.0010.0002][.0000.0037.0002] # +3075 309A 309E ; [.42F6.0020.0011.0001][.0000.0038.0002][.42F6.0020.0010.0002][.0000.0037.0002] # +30D8 30FD ; [.42F7.0020.0011.0002][.42F7.0020.0010.0002] # +FF8D 30FD ; [.42F7.0020.0011.0002][.42F7.0020.0010.0002] # +3078 309D ; [.42F7.0020.0011.0001][.42F7.0020.0010.0002] # +30D8 30FE ; [.42F7.0020.0011.0002][.42F7.0020.0010.0002][.0000.0037.0002] # +FF8D 30FE ; [.42F7.0020.0011.0002][.42F7.0020.0010.0002][.0000.0037.0002] # +3078 309E ; [.42F7.0020.0011.0001][.42F7.0020.0010.0002][.0000.0037.0002] # +30D9 30FD ; [.42F7.0020.0011.0002][.0000.0037.0002][.42F7.0020.0010.0002] # +30D8 3099 30FD ; [.42F7.0020.0011.0002][.0000.0037.0002][.42F7.0020.0010.0002] # +FF8D FF9E 30FD ; [.42F7.0020.0011.0002][.0000.0037.0002][.42F7.0020.0010.0002] # +3079 309D ; [.42F7.0020.0011.0001][.0000.0037.0002][.42F7.0020.0010.0002] # +3078 3099 309D ; [.42F7.0020.0011.0001][.0000.0037.0002][.42F7.0020.0010.0002] # +30D9 30FE ; [.42F7.0020.0011.0002][.0000.0037.0002][.42F7.0020.0010.0002][.0000.0037.0002] # +30D8 3099 30FE ; [.42F7.0020.0011.0002][.0000.0037.0002][.42F7.0020.0010.0002][.0000.0037.0002] # +FF8D FF9E 30FE ; [.42F7.0020.0011.0002][.0000.0037.0002][.42F7.0020.0010.0002][.0000.0037.0002] # +3079 309E ; [.42F7.0020.0011.0001][.0000.0037.0002][.42F7.0020.0010.0002][.0000.0037.0002] # +3078 3099 309E ; [.42F7.0020.0011.0001][.0000.0037.0002][.42F7.0020.0010.0002][.0000.0037.0002] # +30DA 30FD ; [.42F7.0020.0011.0002][.0000.0038.0002][.42F7.0020.0010.0002] # +30D8 309A 30FD ; [.42F7.0020.0011.0002][.0000.0038.0002][.42F7.0020.0010.0002] # +FF8D FF9F 30FD ; [.42F7.0020.0011.0002][.0000.0038.0002][.42F7.0020.0010.0002] # +307A 309D ; [.42F7.0020.0011.0001][.0000.0038.0002][.42F7.0020.0010.0002] # +3078 309A 309D ; [.42F7.0020.0011.0001][.0000.0038.0002][.42F7.0020.0010.0002] # +30DA 30FE ; [.42F7.0020.0011.0002][.0000.0038.0002][.42F7.0020.0010.0002][.0000.0037.0002] # +30D8 309A 30FE ; [.42F7.0020.0011.0002][.0000.0038.0002][.42F7.0020.0010.0002][.0000.0037.0002] # +FF8D FF9F 30FE ; [.42F7.0020.0011.0002][.0000.0038.0002][.42F7.0020.0010.0002][.0000.0037.0002] # +307A 309E ; [.42F7.0020.0011.0001][.0000.0038.0002][.42F7.0020.0010.0002][.0000.0037.0002] # +3078 309A 309E ; [.42F7.0020.0011.0001][.0000.0038.0002][.42F7.0020.0010.0002][.0000.0037.0002] # +30DB 30FD ; [.42F8.0020.0011.0002][.42F8.0020.0010.0002] # +FF8E 30FD ; [.42F8.0020.0011.0002][.42F8.0020.0010.0002] # +307B 309D ; [.42F8.0020.0011.0001][.42F8.0020.0010.0002] # +30DB 30FE ; [.42F8.0020.0011.0002][.42F8.0020.0010.0002][.0000.0037.0002] # +FF8E 30FE ; [.42F8.0020.0011.0002][.42F8.0020.0010.0002][.0000.0037.0002] # +307B 309E ; [.42F8.0020.0011.0001][.42F8.0020.0010.0002][.0000.0037.0002] # +30DC 30FD ; [.42F8.0020.0011.0002][.0000.0037.0002][.42F8.0020.0010.0002] # +30DB 3099 30FD ; [.42F8.0020.0011.0002][.0000.0037.0002][.42F8.0020.0010.0002] # +FF8E FF9E 30FD ; [.42F8.0020.0011.0002][.0000.0037.0002][.42F8.0020.0010.0002] # +307C 309D ; [.42F8.0020.0011.0001][.0000.0037.0002][.42F8.0020.0010.0002] # +307B 3099 309D ; [.42F8.0020.0011.0001][.0000.0037.0002][.42F8.0020.0010.0002] # +30DC 30FE ; [.42F8.0020.0011.0002][.0000.0037.0002][.42F8.0020.0010.0002][.0000.0037.0002] # +30DB 3099 30FE ; [.42F8.0020.0011.0002][.0000.0037.0002][.42F8.0020.0010.0002][.0000.0037.0002] # +FF8E FF9E 30FE ; [.42F8.0020.0011.0002][.0000.0037.0002][.42F8.0020.0010.0002][.0000.0037.0002] # +307C 309E ; [.42F8.0020.0011.0001][.0000.0037.0002][.42F8.0020.0010.0002][.0000.0037.0002] # +307B 3099 309E ; [.42F8.0020.0011.0001][.0000.0037.0002][.42F8.0020.0010.0002][.0000.0037.0002] # +30DD 30FD ; [.42F8.0020.0011.0002][.0000.0038.0002][.42F8.0020.0010.0002] # +30DB 309A 30FD ; [.42F8.0020.0011.0002][.0000.0038.0002][.42F8.0020.0010.0002] # +FF8E FF9F 30FD ; [.42F8.0020.0011.0002][.0000.0038.0002][.42F8.0020.0010.0002] # +307D 309D ; [.42F8.0020.0011.0001][.0000.0038.0002][.42F8.0020.0010.0002] # +307B 309A 309D ; [.42F8.0020.0011.0001][.0000.0038.0002][.42F8.0020.0010.0002] # +30DD 30FE ; [.42F8.0020.0011.0002][.0000.0038.0002][.42F8.0020.0010.0002][.0000.0037.0002] # +30DB 309A 30FE ; [.42F8.0020.0011.0002][.0000.0038.0002][.42F8.0020.0010.0002][.0000.0037.0002] # +FF8E FF9F 30FE ; [.42F8.0020.0011.0002][.0000.0038.0002][.42F8.0020.0010.0002][.0000.0037.0002] # +307D 309E ; [.42F8.0020.0011.0001][.0000.0038.0002][.42F8.0020.0010.0002][.0000.0037.0002] # +307B 309A 309E ; [.42F8.0020.0011.0001][.0000.0038.0002][.42F8.0020.0010.0002][.0000.0037.0002] # +30DE 30FD ; [.42F9.0020.0011.0002][.42F9.0020.0010.0002] # +FF8F 30FD ; [.42F9.0020.0011.0002][.42F9.0020.0010.0002] # +307E 309D ; [.42F9.0020.0011.0001][.42F9.0020.0010.0002] # +30DF 30FD ; [.42FA.0020.0011.0002][.42FA.0020.0010.0002] # +FF90 30FD ; [.42FA.0020.0011.0002][.42FA.0020.0010.0002] # +307F 309D ; [.42FA.0020.0011.0001][.42FA.0020.0010.0002] # +30E0 30FD ; [.42FB.0020.0011.0002][.42FB.0020.0010.0002] # +FF91 30FD ; [.42FB.0020.0011.0002][.42FB.0020.0010.0002] # +3080 309D ; [.42FB.0020.0011.0001][.42FB.0020.0010.0002] # +30E1 30FD ; [.42FC.0020.0011.0002][.42FC.0020.0010.0002] # +FF92 30FD ; [.42FC.0020.0011.0002][.42FC.0020.0010.0002] # +3081 309D ; [.42FC.0020.0011.0001][.42FC.0020.0010.0002] # +30E2 30FD ; [.42FD.0020.0011.0002][.42FD.0020.0010.0002] # +FF93 30FD ; [.42FD.0020.0011.0002][.42FD.0020.0010.0002] # +3082 309D ; [.42FD.0020.0011.0001][.42FD.0020.0010.0002] # +30E3 30FD ; [.42FE.0020.000F.0002][.42FE.0020.0010.0002] # +FF6C 30FD ; [.42FE.0020.000F.0002][.42FE.0020.0010.0002] # +3083 309D ; [.42FE.0020.000F.0001][.42FE.0020.0010.0002] # +30E4 30FD ; [.42FE.0020.0011.0002][.42FE.0020.0010.0002] # +FF94 30FD ; [.42FE.0020.0011.0002][.42FE.0020.0010.0002] # +3084 309D ; [.42FE.0020.0011.0001][.42FE.0020.0010.0002] # +30E5 30FD ; [.42FF.0020.000F.0002][.42FF.0020.0010.0002] # +FF6D 30FD ; [.42FF.0020.000F.0002][.42FF.0020.0010.0002] # +3085 309D ; [.42FF.0020.000F.0001][.42FF.0020.0010.0002] # +30E6 30FD ; [.42FF.0020.0011.0002][.42FF.0020.0010.0002] # +FF95 30FD ; [.42FF.0020.0011.0002][.42FF.0020.0010.0002] # +3086 309D ; [.42FF.0020.0011.0001][.42FF.0020.0010.0002] # +30E7 30FD ; [.4300.0020.000F.0002][.4300.0020.0010.0002] # +FF6E 30FD ; [.4300.0020.000F.0002][.4300.0020.0010.0002] # +3087 309D ; [.4300.0020.000F.0001][.4300.0020.0010.0002] # +30E8 30FD ; [.4300.0020.0011.0002][.4300.0020.0010.0002] # +FF96 30FD ; [.4300.0020.0011.0002][.4300.0020.0010.0002] # +3088 309D ; [.4300.0020.0011.0001][.4300.0020.0010.0002] # +30E9 30FD ; [.4301.0020.0011.0002][.4301.0020.0010.0002] # +FF97 30FD ; [.4301.0020.0011.0002][.4301.0020.0010.0002] # +3089 309D ; [.4301.0020.0011.0001][.4301.0020.0010.0002] # +30EA 30FD ; [.4302.0020.0011.0002][.4302.0020.0010.0002] # +FF98 30FD ; [.4302.0020.0011.0002][.4302.0020.0010.0002] # +308A 309D ; [.4302.0020.0011.0001][.4302.0020.0010.0002] # +30EB 30FD ; [.4303.0020.0011.0002][.4303.0020.0010.0002] # +FF99 30FD ; [.4303.0020.0011.0002][.4303.0020.0010.0002] # +308B 309D ; [.4303.0020.0011.0001][.4303.0020.0010.0002] # +30EC 30FD ; [.4304.0020.0011.0002][.4304.0020.0010.0002] # +FF9A 30FD ; [.4304.0020.0011.0002][.4304.0020.0010.0002] # +308C 309D ; [.4304.0020.0011.0001][.4304.0020.0010.0002] # +30ED 30FD ; [.4305.0020.0011.0002][.4305.0020.0010.0002] # +FF9B 30FD ; [.4305.0020.0011.0002][.4305.0020.0010.0002] # +308D 309D ; [.4305.0020.0011.0001][.4305.0020.0010.0002] # +30EE 30FD ; [.4306.0020.000F.0002][.4306.0020.0010.0002] # +308E 309D ; [.4306.0020.000F.0001][.4306.0020.0010.0002] # +30EE 30FE ; [.4306.0020.000F.0002][.4306.0020.0010.0002][.0000.0037.0002] # +308E 309E ; [.4306.0020.000F.0001][.4306.0020.0010.0002][.0000.0037.0002] # +30EF 30FD ; [.4306.0020.0011.0002][.4306.0020.0010.0002] # +FF9C 30FD ; [.4306.0020.0011.0002][.4306.0020.0010.0002] # +308F 309D ; [.4306.0020.0011.0001][.4306.0020.0010.0002] # +30EF 30FE ; [.4306.0020.0011.0002][.4306.0020.0010.0002][.0000.0037.0002] # +FF9C 30FE ; [.4306.0020.0011.0002][.4306.0020.0010.0002][.0000.0037.0002] # +308F 309E ; [.4306.0020.0011.0001][.4306.0020.0010.0002][.0000.0037.0002] # +30F0 30FD ; [.4307.0020.0011.0002][.4307.0020.0010.0002] # +3090 309D ; [.4307.0020.0011.0001][.4307.0020.0010.0002] # +30F0 30FE ; [.4307.0020.0011.0002][.4307.0020.0010.0002][.0000.0037.0002] # +3090 309E ; [.4307.0020.0011.0001][.4307.0020.0010.0002][.0000.0037.0002] # +30F1 30FD ; [.4308.0020.0011.0002][.4308.0020.0010.0002] # +3091 309D ; [.4308.0020.0011.0001][.4308.0020.0010.0002] # +30F1 30FE ; [.4308.0020.0011.0002][.4308.0020.0010.0002][.0000.0037.0002] # +3091 309E ; [.4308.0020.0011.0001][.4308.0020.0010.0002][.0000.0037.0002] # +30F2 30FD ; [.4309.0020.0011.0002][.4309.0020.0010.0002] # +FF66 30FD ; [.4309.0020.0011.0002][.4309.0020.0010.0002] # +3092 309D ; [.4309.0020.0011.0001][.4309.0020.0010.0002] # +30F2 30FE ; [.4309.0020.0011.0002][.4309.0020.0010.0002][.0000.0037.0002] # +FF66 30FE ; [.4309.0020.0011.0002][.4309.0020.0010.0002][.0000.0037.0002] # +3092 309E ; [.4309.0020.0011.0001][.4309.0020.0010.0002][.0000.0037.0002] # +30F3 30FD ; [.430A.0020.0011.0002][.430A.0020.0010.0002] # +FF9D 30FD ; [.430A.0020.0011.0002][.430A.0020.0010.0002] # +3093 309D ; [.430A.0020.0011.0001][.430A.0020.0010.0002] # +30F4 30FD ; [.42DC.0020.0011.0002][.0000.0037.0002][.42DC.0020.0010.0002] # +30A6 3099 30FD ; [.42DC.0020.0011.0002][.0000.0037.0002][.42DC.0020.0010.0002] # +FF73 FF9E 30FD ; [.42DC.0020.0011.0002][.0000.0037.0002][.42DC.0020.0010.0002] # +3094 309D ; [.42DC.0020.0011.0001][.0000.0037.0002][.42DC.0020.0010.0002] # +3046 3099 309D ; [.42DC.0020.0011.0001][.0000.0037.0002][.42DC.0020.0010.0002] # +30F4 30FE ; [.42DC.0020.0011.0002][.0000.0037.0002][.42DC.0020.0010.0002][.0000.0037.0002] # +30A6 3099 30FE ; [.42DC.0020.0011.0002][.0000.0037.0002][.42DC.0020.0010.0002][.0000.0037.0002] # +FF73 FF9E 30FE ; [.42DC.0020.0011.0002][.0000.0037.0002][.42DC.0020.0010.0002][.0000.0037.0002] # +3094 309E ; [.42DC.0020.0011.0001][.0000.0037.0002][.42DC.0020.0010.0002][.0000.0037.0002] # +3046 3099 309E ; [.42DC.0020.0011.0001][.0000.0037.0002][.42DC.0020.0010.0002][.0000.0037.0002] # +30F5 30FD ; [.42E0.0020.000F.0002][.42E0.0020.0010.0002] # +3095 309D ; [.42E0.0020.000F.0001][.42E0.0020.0010.0002] # +30F5 30FE ; [.42E0.0020.000F.0002][.42E0.0020.0010.0002][.0000.0037.0002] # +3095 309E ; [.42E0.0020.000F.0001][.42E0.0020.0010.0002][.0000.0037.0002] # +30F6 30FD ; [.42E3.0020.000F.0002][.42E3.0020.0010.0002] # +3096 309D ; [.42E3.0020.000F.0001][.42E3.0020.0010.0002] # +30F6 30FE ; [.42E3.0020.000F.0002][.42E3.0020.0010.0002][.0000.0037.0002] # +3096 309E ; [.42E3.0020.000F.0001][.42E3.0020.0010.0002][.0000.0037.0002] # +30F7 30FD ; [.4306.0020.0011.0002][.0000.0037.0002][.4306.0020.0010.0002] # +30EF 3099 30FD ; [.4306.0020.0011.0002][.0000.0037.0002][.4306.0020.0010.0002] # +FF9C FF9E 30FD ; [.4306.0020.0011.0002][.0000.0037.0002][.4306.0020.0010.0002] # +30F7 30FE ; [.4306.0020.0011.0002][.0000.0037.0002][.4306.0020.0010.0002][.0000.0037.0002] # +30EF 3099 30FE ; [.4306.0020.0011.0002][.0000.0037.0002][.4306.0020.0010.0002][.0000.0037.0002] # +FF9C FF9E 30FE ; [.4306.0020.0011.0002][.0000.0037.0002][.4306.0020.0010.0002][.0000.0037.0002] # +30F8 30FD ; [.4307.0020.0011.0002][.0000.0037.0002][.4307.0020.0010.0002] # +30F0 3099 30FD ; [.4307.0020.0011.0002][.0000.0037.0002][.4307.0020.0010.0002] # +30F8 30FE ; [.4307.0020.0011.0002][.0000.0037.0002][.4307.0020.0010.0002][.0000.0037.0002] # +30F0 3099 30FE ; [.4307.0020.0011.0002][.0000.0037.0002][.4307.0020.0010.0002][.0000.0037.0002] # +30F9 30FD ; [.4308.0020.0011.0002][.0000.0037.0002][.4308.0020.0010.0002] # +30F1 3099 30FD ; [.4308.0020.0011.0002][.0000.0037.0002][.4308.0020.0010.0002] # +30F9 30FE ; [.4308.0020.0011.0002][.0000.0037.0002][.4308.0020.0010.0002][.0000.0037.0002] # +30F1 3099 30FE ; [.4308.0020.0011.0002][.0000.0037.0002][.4308.0020.0010.0002][.0000.0037.0002] # +30FA 30FD ; [.4309.0020.0011.0002][.0000.0037.0002][.4309.0020.0010.0002] # +30F2 3099 30FD ; [.4309.0020.0011.0002][.0000.0037.0002][.4309.0020.0010.0002] # +FF66 FF9E 30FD ; [.4309.0020.0011.0002][.0000.0037.0002][.4309.0020.0010.0002] # +30FA 30FE ; [.4309.0020.0011.0002][.0000.0037.0002][.4309.0020.0010.0002][.0000.0037.0002] # +30F2 3099 30FE ; [.4309.0020.0011.0002][.0000.0037.0002][.4309.0020.0010.0002][.0000.0037.0002] # +FF66 FF9E 30FE ; [.4309.0020.0011.0002][.0000.0037.0002][.4309.0020.0010.0002][.0000.0037.0002] # +31F0 30FD ; [.42E2.0020.000F][.42E2.0020.0010.0002] # +31F0 30FE ; [.42E2.0020.000F][.42E2.0020.0010.0002][.0000.0037.0002] # +31F1 30FD ; [.42E6.0020.000F][.42E6.0020.0010.0002] # +31F1 30FE ; [.42E6.0020.000F][.42E6.0020.0010.0002][.0000.0037.0002] # +31F2 30FD ; [.42E7.0020.000F][.42E7.0020.0010.0002] # +31F2 30FE ; [.42E7.0020.000F][.42E7.0020.0010.0002][.0000.0037.0002] # +31F3 30FD ; [.42EE.0020.000F][.42EE.0020.0010.0002] # +31F3 30FE ; [.42EE.0020.000F][.42EE.0020.0010.0002][.0000.0037.0002] # +31F4 30FD ; [.42F1.0020.000F][.42F1.0020.0010.0002] # +31F5 30FD ; [.42F4.0020.000F][.42F4.0020.0010.0002] # +31F5 30FE ; [.42F4.0020.000F][.42F4.0020.0010.0002][.0000.0037.0002] # +31F6 30FD ; [.42F5.0020.000F][.42F5.0020.0010.0002] # +31F6 30FE ; [.42F5.0020.000F][.42F5.0020.0010.0002][.0000.0037.0002] # +31F7 30FD ; [.42F6.0020.000F][.42F6.0020.0010.0002] # +31F7 30FE ; [.42F6.0020.000F][.42F6.0020.0010.0002][.0000.0037.0002] # +31F8 30FD ; [.42F7.0020.000F][.42F7.0020.0010.0002] # +31F8 30FE ; [.42F7.0020.000F][.42F7.0020.0010.0002][.0000.0037.0002] # +31F9 30FD ; [.42F8.0020.000F][.42F8.0020.0010.0002] # +31F9 30FE ; [.42F8.0020.000F][.42F8.0020.0010.0002][.0000.0037.0002] # +31FA 30FD ; [.42FB.0020.000F][.42FB.0020.0010.0002] # +31FB 30FD ; [.4301.0020.000F][.4301.0020.0010.0002] # +31FC 30FD ; [.4302.0020.000F][.4302.0020.0010.0002] # +31FD 30FD ; [.4303.0020.000F][.4303.0020.0010.0002] # +31FE 30FD ; [.4304.0020.000F][.4304.0020.0010.0002] # +31FF 30FD ; [.4305.0020.000F][.4305.0020.0010.0002] # F967 ; [.8961.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F967 FA70 ; [.89AD.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA70 F905 ; [.828D.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F905 diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/kk.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/kk.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/kk.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/kk.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,16 +1,16 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0451 ; [.20C1.0020.0002] # CYRILLIC SMALL LETTER IO -0435 0308 ; [.20C1.0020.0002] # CYRILLIC SMALL LETTER IO -0401 ; [.20C1.0020.0008] # CYRILLIC CAPITAL LETTER IO -0415 0308 ; [.20C1.0020.0008] # CYRILLIC CAPITAL LETTER IO -04AF ; [.218C.0020.0002] # CYRILLIC SMALL LETTER STRAIGHT U -04AE ; [.218C.0020.0008] # CYRILLIC CAPITAL LETTER STRAIGHT U -0456 ; [.21FD.0020.0002] # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -0406 ; [.21FD.0020.0008] # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I -0457 ; [.21FD.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER YI -A676 ; [.21FD.0020.0004][.0000.002B.0004] # COMBINING CYRILLIC LETTER YI -0407 ; [.21FD.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER YI + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0451 ; [.23C0.0020.0002] # CYRILLIC SMALL LETTER IO +0435 0308 ; [.23C0.0020.0002] # CYRILLIC SMALL LETTER IO +0401 ; [.23C0.0020.0008] # CYRILLIC CAPITAL LETTER IO +0415 0308 ; [.23C0.0020.0008] # CYRILLIC CAPITAL LETTER IO +04AF ; [.248B.0020.0002] # CYRILLIC SMALL LETTER STRAIGHT U +04AE ; [.248B.0020.0008] # CYRILLIC CAPITAL LETTER STRAIGHT U +0456 ; [.24FC.0020.0002] # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I +0406 ; [.24FC.0020.0008] # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I +0457 ; [.24FC.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER YI +A676 ; [.24FC.0020.0004][.0000.002B.0004] # COMBINING CYRILLIC LETTER YI +0407 ; [.24FC.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER YI ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/kl.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/kl.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/kl.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/kl.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,75 +1,75 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0111 ; [.1CF5.0021.0002] # LATIN SMALL LETTER D WITH STROKE -0064 0335 ; [.1CF5.0021.0002] # LATIN SMALL LETTER D WITH STROKE -0110 ; [.1CF5.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE -0044 0335 ; [.1CF5.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE -00F0 ; [.1CF5.0022.0002] # LATIN SMALL LETTER ETH -1DD9 ; [.1CF5.0022.0002] # COMBINING LATIN SMALL LETTER ETH -00D0 ; [.1CF5.0022.0008] # LATIN CAPITAL LETTER ETH -0138 ; [.1E87.0021.0002] # LATIN SMALL LETTER KRA -004B 0027 ; [.1E87.0021.0008] # -00FE ; [.1EFB.0020.0003][.1D7E.0020.0003] # LATIN SMALL LETTER THORN -00DE ; [.1EFB.0020.0009][.1D7E.0020.0009] # LATIN CAPITAL LETTER THORN -00FC ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1F71.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F71.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1F71.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F71.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1F71.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F71.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1F71.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F71.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0171 ; [.1F71.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0075 030B ; [.1F71.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0170 ; [.1F71.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -0055 030B ; [.1F71.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -00E6 ; [.1FFC.0020.0002] # LATIN SMALL LETTER AE -1DD4 ; [.1FFC.0020.0002] # COMBINING LATIN SMALL LETTER AE -00C6 ; [.1FFC.0020.0008] # LATIN CAPITAL LETTER AE -1D2D ; [.1FFC.0020.0014] # MODIFIER LETTER CAPITAL AE -01FD ; [.1FFC.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE -01FC ; [.1FFC.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE -01E3 ; [.1FFC.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON -01E2 ; [.1FFC.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON -00E4 ; [.1FFC.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1FFC.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1FFC.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1FFC.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1FFC.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1FFC.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -0119 ; [.1FFC.0022.0002] # LATIN SMALL LETTER E WITH OGONEK -0065 0328 ; [.1FFC.0022.0002] # LATIN SMALL LETTER E WITH OGONEK -0118 ; [.1FFC.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK -0045 0328 ; [.1FFC.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK -00F8 ; [.1FFD.0020.0002] # LATIN SMALL LETTER O WITH STROKE -006F 0338 ; [.1FFD.0020.0002] # LATIN SMALL LETTER O WITH STROKE -00D8 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE -004F 0338 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE -01FF ; [.1FFD.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE -01FE ; [.1FFD.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE -00F6 ; [.1FFD.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1FFD.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1FFD.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1FFD.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -0151 ; [.1FFD.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -006F 030B ; [.1FFD.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -0150 ; [.1FFD.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -004F 030B ; [.1FFD.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -0153 ; [.1FFD.0023.0002] # LATIN SMALL LIGATURE OE -0152 ; [.1FFD.0023.0008] # LATIN CAPITAL LIGATURE OE -00E5 ; [.1FFE.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -0061 030A ; [.1FFE.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -00C5 ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -0041 030A ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -212B ; [.1FFE.0020.0008] # ANGSTROM SIGN -01FB ; [.1FFE.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE -01FA ; [.1FFE.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0111 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE +0064 0335 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE +0110 ; [.1FEB.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE +0044 0335 ; [.1FEB.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE +00F0 ; [.1FEB.0022.0002] # LATIN SMALL LETTER ETH +1DD9 ; [.1FEB.0022.0002] # COMBINING LATIN SMALL LETTER ETH +00D0 ; [.1FEB.0022.0008] # LATIN CAPITAL LETTER ETH +0138 ; [.2180.0021.0002] # LATIN SMALL LETTER KRA +004B 0027 ; [.2180.0021.0008] # +00FE ; [.21F7.0020.0003][.2075.0020.0003] # LATIN SMALL LETTER THORN +00DE ; [.21F7.0020.0009][.2075.0020.0009] # LATIN CAPITAL LETTER THORN +00FC ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.2270.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2270.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.2270.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2270.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.2270.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2270.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.2270.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2270.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0171 ; [.2270.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0075 030B ; [.2270.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0170 ; [.2270.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0055 030B ; [.2270.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +00E6 ; [.22FB.0020.0002] # LATIN SMALL LETTER AE +1DD4 ; [.22FB.0020.0002] # COMBINING LATIN SMALL LETTER AE +00C6 ; [.22FB.0020.0008] # LATIN CAPITAL LETTER AE +1D2D ; [.22FB.0020.0014] # MODIFIER LETTER CAPITAL AE +01FD ; [.22FB.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE +01FC ; [.22FB.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE +01E3 ; [.22FB.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON +01E2 ; [.22FB.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON +00E4 ; [.22FB.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.22FB.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.22FB.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.22FB.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.22FB.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.22FB.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +0119 ; [.22FB.0022.0002] # LATIN SMALL LETTER E WITH OGONEK +0065 0328 ; [.22FB.0022.0002] # LATIN SMALL LETTER E WITH OGONEK +0118 ; [.22FB.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK +0045 0328 ; [.22FB.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK +00F8 ; [.22FC.0020.0002] # LATIN SMALL LETTER O WITH STROKE +006F 0338 ; [.22FC.0020.0002] # LATIN SMALL LETTER O WITH STROKE +00D8 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE +004F 0338 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE +01FF ; [.22FC.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE +01FE ; [.22FC.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +00F6 ; [.22FC.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.22FC.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.22FC.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.22FC.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +0151 ; [.22FC.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +006F 030B ; [.22FC.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +0150 ; [.22FC.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +004F 030B ; [.22FC.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +0153 ; [.22FC.0023.0002] # LATIN SMALL LIGATURE OE +0152 ; [.22FC.0023.0008] # LATIN CAPITAL LIGATURE OE +00E5 ; [.22FD.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +0061 030A ; [.22FD.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +00C5 ; [.22FD.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +0041 030A ; [.22FD.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +212B ; [.22FD.0020.0008] # ANGSTROM SIGN +01FB ; [.22FD.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +01FA ; [.22FD.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/kn.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/kn.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/kn.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/kn.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,10 +1,10 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0C82 ; [.28BE.0020.0002][.FFF1.0000.0000] # KANNADA SIGN ANUSVARA -0C83 ; [.28BE.0020.0002][.FFF2.0000.0000] # KANNADA SIGN VISARGA -0CF1 ; [.28BE.0020.0002][.FFF3.0000.0000] # KANNADA SIGN JIHVAMULIYA -0CF2 ; [.28BE.0020.0002][.FFF4.0000.0000] # KANNADA SIGN UPADHMANIYA -0C94 ; [.28BE.0020.0002][.FFF0.0000.0000] # KANNADA LETTER AU + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0C82 ; [.2BCB.0020.0002][.FFF1.0000.0000] # KANNADA SIGN ANUSVARA +0C83 ; [.2BCB.0020.0002][.FFF2.0000.0000] # KANNADA SIGN VISARGA +0CF1 ; [.2BCB.0020.0002][.FFF3.0000.0000] # KANNADA SIGN JIHVAMULIYA +0CF2 ; [.2BCB.0020.0002][.FFF4.0000.0000] # KANNADA SIGN UPADHMANIYA +0C94 ; [.2BCB.0020.0002][.FFF0.0000.0000] # KANNADA LETTER AU ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/kok.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/kok.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/kok.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/kok.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,13 +1,13 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0902 ; [.26CC.0020.0002][.FFF1.0000.0000] # DEVANAGARI SIGN ANUSVARA -0901 ; [.26CC.0021.0002][.FFF1.0000.0000] # DEVANAGARI SIGN CANDRABINDU -0903 ; [.26CC.0020.0002][.FFF2.0000.0000] # DEVANAGARI SIGN VISARGA -0950 ; [.26CC.0020.0002][.FFF0.0000.0000] # DEVANAGARI OM -0933 ; [.270F.0020.0002][.FFF1.0000.0000] # DEVANAGARI LETTER LLA -0934 ; [.270F.0020.0002][.FFF1.0000.0000][.0000.00C2.0002] # DEVANAGARI LETTER LLLA -0915 094D 0937 ; [.270F.0020.0002][.FFF2.0000.0000] # -0939 ; [.270F.0020.0002][.FFF0.0000.0000] # DEVANAGARI LETTER HA + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0902 ; [.29D7.0020.0002][.FFF1.0000.0000] # DEVANAGARI SIGN ANUSVARA +0901 ; [.29D7.0021.0002][.FFF1.0000.0000] # DEVANAGARI SIGN CANDRABINDU +0903 ; [.29D7.0020.0002][.FFF2.0000.0000] # DEVANAGARI SIGN VISARGA +0950 ; [.29D7.0020.0002][.FFF0.0000.0000] # DEVANAGARI OM +0933 ; [.2A1B.0020.0002][.FFF1.0000.0000] # DEVANAGARI LETTER LLA +0934 ; [.2A1B.0020.0002][.FFF1.0000.0000][.0000.00C2.0002] # DEVANAGARI LETTER LLLA +0915 094D 0937 ; [.2A1B.0020.0002][.FFF2.0000.0000] # +0939 ; [.2A1B.0020.0002][.FFF0.0000.0000] # DEVANAGARI LETTER HA ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ko.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ko.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ko.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ko.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,647 +1,647 @@ use Unicode::Collate::CJK::Korean; +{ - locale_version => 1.27, + locale_version => 1.29, overrideCJK => \&Unicode::Collate::CJK::Korean::weightKorean, - entry => <<'ENTRY', # for DUCET v10.0.0 -F967 ; [.3D13.0021.0002.4E0D][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F967 -FA70 ; [.3D13.0032.0002.4E26][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA70 -F905 ; [.3D0C.0021.0002.4E32][.3D92.0020.0002][.3DFD.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F905 -2F801 ; [.3D1E.0021.0002.4E38][.3D93.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F801 -F95E ; [.3D0F.0021.0002.4E39][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F95E -F91B ; [.3D11.0021.0002.4E82][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F91B -F9BA ; [.3D11.0021.0002.4E86][.3D96.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9BA -F977 ; [.3D11.0021.0002.4EAE][.3D8C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F977 -F9FD ; [.3D15.0021.0002.4EC0][.3D9E.0020.0002][.3DF8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9FD -F9A8 ; [.3D11.0021.0002.4EE4][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A8 -F92D ; [.3D11.0021.0002.4F86][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F92D -F9B5 ; [.3D11.0021.0002.4F8B][.3D91.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B5 -FA30 ; [.3D12.0021.0002.4FAE][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA30 -2F805 ; [.3D12.0021.0002.4FAE][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F805 -2F806 ; [.3D1C.0023.0002.4FBB][.3D8A.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F806 -F965 ; [.3D1D.0021.0002.4FBF][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F965 -2F807 ; [.3D13.0022.0002.5002][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F807 -F9D4 ; [.3D11.0022.0002.502B][.3D9B.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D4 -2F809 ; [.3D13.0022.0002.5099][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F809 -2F80B ; [.3D15.0023.0002.50CF][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F80B -F9BB ; [.3D11.0022.0002.50DA][.3D96.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9BB -FA31 ; [.3D15.0023.0002.50E7][.3D9C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA31 -2F80A ; [.3D15.0023.0002.50E7][.3D9C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F80A -FA0C ; [.3D17.0021.0002.5140][.3D92.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA0C -FA74 ; [.3D1A.0021.0002.5145][.3D97.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA74 -FA32 ; [.3D12.0021.0002.514D][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA32 -2F80E ; [.3D12.0021.0002.514D][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F80E -2F814 ; [.3D0E.0022.0002.5167][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F814 -FA72 ; [.3D18.0024.0002.5168][.3D8E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA72 -F978 ; [.3D11.0023.0002.5169][.3D8C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F978 -F9D1 ; [.3D11.0021.0002.516D][.3D9B.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D1 -2F811 ; [.3D0C.0026.0002.5177][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F811 -FA75 ; [.3D0C.0024.0002.5180][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA75 -2F815 ; [.3D18.0021.0002.518D][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F815 -2F8D2 ; [.3D12.0022.0002.5192][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8D2 -2F8D3 ; [.3D12.0022.0002.5195][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8D3 -2F817 ; [.3D17.0023.0002.5197][.3D96.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F817 -2F818 ; [.3D17.003B.0002.51A4][.3D98.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F818 -2F81A ; [.3D0F.0022.0002.51AC][.3D92.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F81A -F92E ; [.3D11.0021.0002.51B7][.3D8B.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F92E -F979 ; [.3D11.0024.0002.51C9][.3D8C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F979 -F955 ; [.3D11.0021.0002.51CC][.3D9C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F955 -F954 ; [.3D11.0021.0002.51DC][.3D9C.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F954 -FA15 ; [.3D1E.0022.0002.51DE][.3D9D.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA15 -2F81E ; [.3D17.0023.0002.5203][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F81E -FA00 ; [.3D18.0021.0002.5207][.3D8E.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA00 -2F850 ; [.3D18.0021.0002.5207][.3D8E.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F850 -F99C ; [.3D11.0022.0002.5217][.3D90.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F99C -F9DD ; [.3D11.0022.0002.5229][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9DD -F9FF ; [.3D18.0022.0002.523A][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9FF -2F820 ; [.3D0C.0021.0002.523B][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F820 -2F822 ; [.3D1E.0021.0002.5272][.3D8A.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F822 -2F823 ; [.3D15.002D.0002.5277][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F823 -F9C7 ; [.3D11.0021.0002.5289][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C7 -F98A ; [.3D11.0021.0002.529B][.3D90.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F98A -F99D ; [.3D11.0023.0002.52A3][.3D90.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F99D -FA76 ; [.3D17.0024.0002.52C7][.3D96.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA76 -2F825 ; [.3D17.0024.0002.52C7][.3D96.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F825 -FA33 ; [.3D12.0023.0002.52C9][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA33 -2F826 ; [.3D12.0023.0002.52C9][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F826 -F952 ; [.3D11.0021.0002.52D2][.3D9C.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F952 -F92F ; [.3D11.0021.0002.52DE][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F92F -FA34 ; [.3D0C.0023.0002.52E4][.3D9C.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA34 -2F827 ; [.3D0C.0023.0002.52E4][.3D9C.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F827 -F97F ; [.3D11.0023.0002.52F5][.3D90.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F97F -FA77 ; [.3D18.0022.0002.52FA][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA77 -2F828 ; [.3D18.0022.0002.52FA][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F828 -2F829 ; [.3D1D.0022.0002.5305][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F829 -F963 ; [.3D13.0021.0002.5317][.3D97.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F963 -2F82B ; [.3D13.0021.0002.5317][.3D97.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F82B -F9EB ; [.3D0E.0021.0002.533F][.3D9E.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9EB -2F82C ; [.3D1E.0021.0002.5349][.3D99.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F82C -FA35 ; [.3D13.0025.0002.5351][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA35 -2F82D ; [.3D13.0025.0002.5351][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F82D -2F82E ; [.3D13.0022.0002.535A][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F82E -2F82F ; [.3D18.0022.0002.5373][.3D9C.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F82F -F91C ; [.3D11.0022.0002.5375][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F91C -2F830 ; [.3D18.0021.0002.537D][.3D9C.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F830 -2F831 ; [.3D0C.0028.0002.537F][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F831 -2F832 ; [.3D0C.0028.0002.537F][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F832 -2F833 ; [.3D0C.0028.0002.537F][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F833 -F96B ; [.3D1A.0022.0002.53C3][.3D8A.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F96B -2F836 ; [.3D0C.0022.0002.53CA][.3D9C.0020.0002][.3DF8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F836 -2F837 ; [.3D15.005E.0002.53DF][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F837 -F906 ; [.3D0C.002A.0002.53E5][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F906 -2F839 ; [.3D0C.0021.0002.53EB][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F839 -2F83A ; [.3D18.0022.0002.53F1][.3D9E.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F83A -F9DE ; [.3D11.0024.0002.540F][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9DE -F9ED ; [.3D11.0021.0002.541D][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9ED -2F83D ; [.3D1E.0021.0002.5438][.3D9C.0020.0002][.3DF8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F83D -F980 ; [.3D11.0024.0002.5442][.3D90.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F980 -2F83E ; [.3D18.0026.0002.5448][.3D8E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F83E -2F83F ; [.3D18.0028.0002.5468][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F83F -2F840 ; [.3D17.0031.0002.54A2][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F840 -F99E ; [.3D17.0025.0002.54BD][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F99E -2F842 ; [.3D0F.0021.0002.5510][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F842 -2F843 ; [.3D0C.0022.0002.5553][.3D91.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F843 -2F844 ; [.3D1E.0024.0002.5563][.3D8A.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F844 -2F845 ; [.3D15.0024.0002.5584][.3D8E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F845 -2F846 ; [.3D15.0024.0002.5584][.3D8E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F846 -F90B ; [.3D11.0021.0002.5587][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F90B -FA7A ; [.3D1E.0022.0002.5599][.3D99.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA7A -2F847 ; [.3D1E.0022.0002.5599][.3D99.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F847 -FA36 ; [.3D0C.0022.0002.559D][.3D8A.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA36 -FA78 ; [.3D0C.0022.0002.559D][.3D8A.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA78 -2F848 ; [.3D0D.0021.0002.55AB][.3D9E.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F848 -FA7B ; [.3D17.0022.0002.55E2][.3D92.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA7B -FA37 ; [.3D1C.0022.0002.5606][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA37 -2F84C ; [.3D1C.0022.0002.5606][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F84C -FA38 ; [.3D0C.0026.0002.5668][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA38 -2F84F ; [.3D13.0023.0002.5674][.3D97.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F84F -F9A9 ; [.3D11.0023.0002.56F9][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A9 -2F84B ; [.3D0F.0024.0002.5716][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F84B -2F855 ; [.3D1E.0024.0002.578B][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F855 -2F852 ; [.3D15.0021.0002.57CE][.3D8E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F852 -2F853 ; [.3D15.0021.0002.57F4][.3D9E.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F853 -2F857 ; [.3D13.0023.0002.5831][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F857 -FA39 ; [.3D13.0033.0002.5840][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA39 -FA10 ; [.3D1A.0022.0002.585A][.3D92.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA10 -FA7C ; [.3D1A.0022.0002.585A][.3D92.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA7C -F96C ; [.3D15.0021.0002.585E][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F96C -FA3A ; [.3D12.0021.0002.58A8][.3D97.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA3A -FA7D ; [.3D13.0024.0002.58B3][.3D97.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA7D -F94A ; [.3D11.0021.0002.58D8][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F94A -F942 ; [.3D11.0021.0002.58DF][.3D92.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F942 -2F85C ; [.3D13.0032.0002.5906][.3D92.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F85C -2F85D ; [.3D0F.0021.0002.591A][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F85D -2F85E ; [.3D12.0021.0002.5922][.3D92.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F85E -FA7E ; [.3D17.0024.0002.5944][.3D8E.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA7E -F90C ; [.3D0E.0023.0002.5948][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F90C -F909 ; [.3D0C.0024.0002.5951][.3D91.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F909 -FA7F ; [.3D13.0025.0002.5954][.3D97.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA7F -2F85F ; [.3D15.0030.0002.5962][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F85F -F981 ; [.3D0E.0021.0002.5973][.3D90.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F981 -2F862 ; [.3D1E.0026.0002.59EC][.3D9D.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F862 -2F863 ; [.3D17.002C.0002.5A1B][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F863 -2F864 ; [.3D1C.0030.0002.5A27][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F864 -FA80 ; [.3D13.0027.0002.5A62][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA80 -2F866 ; [.3D13.002B.0002.5A66][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F866 -2F986 ; [.3D17.0025.0002.5AB5][.3D9E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F986 -2F869 ; [.3D17.0041.0002.5B08][.3D96.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F869 -FA81 ; [.3D18.003C.0002.5B28][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA81 -2F86A ; [.3D11.0029.0002.5B3E][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F86A -2F86B ; [.3D11.0029.0002.5B3E][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F86B -FA04 ; [.3D0F.0021.0002.5B85][.3D8B.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA04 -2F86D ; [.3D17.0029.0002.5BC3][.3D98.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F86D -2F86E ; [.3D1A.003B.0002.5BD8][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F86E -F95F ; [.3D0E.0021.0002.5BE7][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F95F -F9AA ; [.3D0E.0021.0002.5BE7][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9AA -2F86F ; [.3D0E.0021.0002.5BE7][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F86F -F9BC ; [.3D11.0023.0002.5BEE][.3D96.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9BC -F9BD ; [.3D0E.0021.0002.5C3F][.3D96.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9BD -2F877 ; [.3D0F.0028.0002.5C60][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F877 -F94B ; [.3D11.0023.0002.5C62][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F94B -FA3B ; [.3D1A.0021.0002.5C64][.3D9C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA3B -F9DF ; [.3D11.0026.0002.5C65][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9DF -2F879 ; [.3D15.002A.0002.5CC0][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F879 -F9D5 ; [.3D11.0023.0002.5D19][.3D9B.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D5 -F921 ; [.3D11.0021.0002.5D50][.3D8A.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F921 -F9AB ; [.3D11.0025.0002.5DBA][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9AB -2F881 ; [.3D15.0021.0002.5DE1][.3D97.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F881 -2F882 ; [.3D15.0027.0002.5DE2][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F882 -2F884 ; [.3D15.0022.0002.5DFD][.3D92.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F884 -2F885 ; [.3D15.0029.0002.5E28][.3D8F.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F885 -2F886 ; [.3D12.0025.0002.5E3D][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F886 -F98E ; [.3D0E.0021.0002.5E74][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F98E -FA01 ; [.3D0F.002B.0002.5EA6][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA01 -2F88C ; [.3D13.0052.0002.5EB3][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F88C -2F88D ; [.3D15.0025.0002.5EB6][.3D8E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F88D -F9A2 ; [.3D11.0021.0002.5EC9][.3D90.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A2 -F928 ; [.3D11.0021.0002.5ECA][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F928 -2F88E ; [.3D11.0021.0002.5ECA][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F88E -FA0B ; [.3D0C.0021.0002.5ED3][.3D93.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA0B -F982 ; [.3D11.0025.0002.5EEC][.3D90.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F982 -F943 ; [.3D11.0022.0002.5F04][.3D92.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F943 -2F894 ; [.3D0F.004B.0002.5F22][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F894 -2F895 ; [.3D0F.004B.0002.5F22][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F895 -2F899 ; [.3D1E.0025.0002.5F62][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F899 -FA84 ; [.3D1A.0025.0002.5F69][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA84 -2F89A ; [.3D18.0027.0002.5F6B][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F89A -F9D8 ; [.3D11.0021.0002.5F8B][.3D9B.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D8 -F966 ; [.3D13.0026.0002.5FA9][.3D92.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F966 -FA85 ; [.3D17.0043.0002.5FAD][.3D96.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA85 -2F89D ; [.3D17.002A.0002.5FCD][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F89D -2F89E ; [.3D18.0026.0002.5FD7][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F89E -F9A3 ; [.3D0E.0021.0002.5FF5][.3D90.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A3 -F960 ; [.3D0E.0024.0002.6012][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F960 -F9AC ; [.3D11.0026.0002.601C][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9AC -2F8A0 ; [.3D17.0042.0002.6081][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8A0 -FA3D ; [.3D1E.0026.0002.6094][.3D95.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA3D -2F8A3 ; [.3D1E.0026.0002.6094][.3D95.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8A3 -2F8A5 ; [.3D0F.0022.0002.60C7][.3D92.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8A5 -FA86 ; [.3D12.002D.0002.60D8][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA86 -F9B9 ; [.3D17.0025.0002.60E1][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B9 -FA88 ; [.3D17.002E.0002.6108][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA88 -F9D9 ; [.3D11.0022.0002.6144][.3D9B.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D9 -2F8A6 ; [.3D18.002A.0002.6148][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8A6 -2F8A7 ; [.3D1E.0027.0002.614C][.3D93.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8A7 -2F8A9 ; [.3D1E.0027.0002.614C][.3D93.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8A9 -FA8A ; [.3D17.0047.0002.6160][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA8A -FA3E ; [.3D0C.0028.0002.6168][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA3E -2F8AA ; [.3D11.0031.0002.617A][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8AA -FA3F ; [.3D18.0022.0002.618E][.3D9C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA3F -FA89 ; [.3D18.0022.0002.618E][.3D9C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA89 -2F8AB ; [.3D18.0022.0002.618E][.3D9C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8AB -F98F ; [.3D11.0021.0002.6190][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F98F -2F8AD ; [.3D13.0028.0002.61A4][.3D97.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8AD -2F8AE ; [.3D1A.0030.0002.61AF][.3D8A.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8AE -2F8AC ; [.3D1E.0021.0002.61B2][.3D8E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8AC -2F8AF ; [.3D12.0025.0002.61DE][.3D92.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8AF -FA40 ; [.3D18.0022.0002.61F2][.3D9E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA40 -FA8B ; [.3D18.0022.0002.61F2][.3D9E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA8B -2F8B0 ; [.3D18.0022.0002.61F2][.3D9E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8B0 -F90D ; [.3D11.0022.0002.61F6][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F90D -2F8B1 ; [.3D11.0022.0002.61F6][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8B1 -F990 ; [.3D11.0022.0002.6200][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F990 -2F8B2 ; [.3D15.0026.0002.6210][.3D8E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8B2 -F9D2 ; [.3D11.0022.0002.622E][.3D9B.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D2 -FA8C ; [.3D0F.0029.0002.6234][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA8C -2F8B5 ; [.3D1D.002B.0002.62B1][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8B5 -F925 ; [.3D11.0021.0002.62C9][.3D8A.0020.0002][.3DF8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F925 -F95B ; [.3D0E.0024.0002.62CF][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F95B -FA02 ; [.3D1A.0026.0002.62D3][.3D8E.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA02 -2F8B6 ; [.3D13.0022.0002.62D4][.3D8A.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8B6 -F973 ; [.3D15.0022.0002.62FE][.3D9C.0020.0002][.3DF8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F973 -2F8B9 ; [.3D12.0027.0002.633D][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8B9 -2F8B7 ; [.3D17.0027.0002.6350][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8B7 -2F8BB ; [.3D15.0039.0002.6368][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8BB -F9A4 ; [.3D0E.0024.0002.637B][.3D90.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A4 -2F8BC ; [.3D15.0029.0002.6383][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8BC -F975 ; [.3D11.0021.0002.63A0][.3D8C.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F975 -2F8C1 ; [.3D17.0025.0002.63A9][.3D8E.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8C1 -FA8D ; [.3D17.0030.0002.63C4][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA8D -FA8E ; [.3D15.0030.0002.641C][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA8E -2F8BF ; [.3D18.0025.0002.6422][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8BF -2F8C3 ; [.3D12.0021.0002.6469][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8C3 -F991 ; [.3D0E.0022.0002.649A][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F991 -2F8C5 ; [.3D1E.0029.0002.649D][.3D9A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8C5 -F930 ; [.3D11.0023.0002.64C4][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F930 -FA41 ; [.3D12.0025.0002.654F][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA41 -2F8C8 ; [.3D12.0025.0002.654F][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8C8 -FA90 ; [.3D17.0030.0002.6556][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA90 -2F8C9 ; [.3D0C.0030.0002.656C][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8C9 -F969 ; [.3D15.0032.0002.6578][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F969 -F9BE ; [.3D11.0025.0002.6599][.3D96.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9BE -F983 ; [.3D11.0028.0002.65C5][.3D90.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F983 -2F8CB ; [.3D0C.0035.0002.65E3][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8CB -F9E0 ; [.3D17.0024.0002.6613][.3D90.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E0 -2F8CD ; [.3D18.0026.0002.6649][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8CD -FA12 ; [.3D1A.0022.0002.6674][.3D8E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA12 -FA91 ; [.3D1A.0022.0002.6674][.3D8E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA91 -F9C5 ; [.3D1E.002A.0002.6688][.3D97.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C5 -FA43 ; [.3D15.002B.0002.6691][.3D8E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA43 -2F8CF ; [.3D15.002B.0002.6691][.3D8E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8CF -FA06 ; [.3D1D.0022.0002.66B4][.3D92.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA06 -F98B ; [.3D11.0022.0002.66C6][.3D90.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F98B -F901 ; [.3D0C.0033.0002.66F4][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F901 -2F8CC ; [.3D15.002D.0002.66F8][.3D8E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8CC -2F8D4 ; [.3D1A.0023.0002.6700][.3D95.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8D4 -F929 ; [.3D11.0022.0002.6717][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F929 -FA92 ; [.3D11.0022.0002.6717][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA92 -2F8D8 ; [.3D11.0022.0002.6717][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8D8 -FA93 ; [.3D12.0025.0002.671B][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA93 -2F8D9 ; [.3D12.0025.0002.671B][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8D9 -F9E1 ; [.3D11.0028.0002.674E][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E1 -2F8DC ; [.3D1D.0025.0002.6753][.3D96.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8DC -FA94 ; [.3D18.002E.0002.6756][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA94 -2F8DB ; [.3D0C.0038.0002.675E][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8DB -F9C8 ; [.3D0E.0021.0002.677B][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C8 -F9F4 ; [.3D11.0021.0002.6797][.3D9E.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F4 -F9C9 ; [.3D11.0023.0002.67F3][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C9 -F9DA ; [.3D11.0023.0002.6817][.3D9B.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9DA -F97A ; [.3D11.0025.0002.6881][.3D8C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F97A -FA44 ; [.3D12.0027.0002.6885][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA44 -2F8E2 ; [.3D12.0027.0002.6885][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8E2 -F9E2 ; [.3D11.0029.0002.68A8][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E2 -2F8E8 ; [.3D15.0062.0002.6942][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8E8 -2F8EA ; [.3D0C.002A.0002.69EA][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8EA -F914 ; [.3D17.0028.0002.6A02][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F914 -F95C ; [.3D17.0028.0002.6A02][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F95C -F9BF ; [.3D17.0028.0002.6A02][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9BF -F94C ; [.3D11.0024.0002.6A13][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F94C -F931 ; [.3D11.0024.0002.6AD3][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F931 -2F8ED ; [.3D18.0021.0002.6ADB][.3D9C.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8ED -F91D ; [.3D11.0023.0002.6B04][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F91D -2F8EF ; [.3D1A.0028.0002.6B21][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8EF -2F8F1 ; [.3D1E.0025.0002.6B54][.3D8E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8F1 -2F8F3 ; [.3D15.0023.0002.6B72][.3D8F.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8F3 -F98C ; [.3D11.0023.0002.6B77][.3D90.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F98C -F9A5 ; [.3D11.0023.0002.6BAE][.3D90.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A5 -F970 ; [.3D15.0023.0002.6BBA][.3D8A.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F970 -FA96 ; [.3D15.0023.0002.6BBA][.3D8A.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA96 -2F8F5 ; [.3D15.0023.0002.6BBA][.3D8A.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8F5 -2F8FA ; [.3D13.0025.0002.6C4E][.3D8E.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8FA -F972 ; [.3D1A.0024.0002.6C88][.3D9E.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F972 -2F8FC ; [.3D17.002B.0002.6CBF][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8FC -F968 ; [.3D1D.0024.0002.6CCC][.3D9E.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F968 -F9E3 ; [.3D0E.0022.0002.6CE5][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E3 -F915 ; [.3D11.0021.0002.6D1B][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F915 -FA05 ; [.3D0F.002A.0002.6D1E][.3D92.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA05 -2F900 ; [.3D1D.0029.0002.6D3E][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F900 -F9CA ; [.3D11.0025.0002.6D41][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9CA -FA97 ; [.3D11.0025.0002.6D41][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA97 -2F902 ; [.3D11.0025.0002.6D41][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F902 -2F903 ; [.3D1E.002E.0002.6D69][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F903 -F92A ; [.3D11.0023.0002.6D6A][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F92A -FA45 ; [.3D1E.002A.0002.6D77][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA45 -2F901 ; [.3D1E.002A.0002.6D77][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F901 -2F904 ; [.3D1A.0025.0002.6D78][.3D9E.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F904 -2F905 ; [.3D17.0022.0002.6D85][.3D90.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F905 -F9F5 ; [.3D11.0022.0002.6DCB][.3D9E.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F5 -F94D ; [.3D11.0025.0002.6DDA][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F94D -F9D6 ; [.3D11.0024.0002.6DEA][.3D9B.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D6 -2F90E ; [.3D17.0026.0002.6DF9][.3D8E.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F90E -FA46 ; [.3D18.002C.0002.6E1A][.3D8E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA46 -2F908 ; [.3D1E.002B.0002.6E2F][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F908 -2F909 ; [.3D17.002B.0002.6E6E][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F909 -F9CB ; [.3D11.0026.0002.6E9C][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9CB -F9EC ; [.3D0E.0022.0002.6EBA][.3D9E.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9EC -FA99 ; [.3D18.002B.0002.6ECB][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA99 -2F90B ; [.3D18.002B.0002.6ECB][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F90B -F904 ; [.3D1E.0022.0002.6ED1][.3D93.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F904 -F94E ; [.3D11.0026.0002.6F0F][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F94E -FA47 ; [.3D1E.0026.0002.6F22][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA47 -FA9A ; [.3D1E.0026.0002.6F22][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA9A -F992 ; [.3D11.0024.0002.6F23][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F992 -2F90F ; [.3D18.0033.0002.6F6E][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F90F -2F912 ; [.3D13.003C.0002.6FC6][.3D97.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F912 -F922 ; [.3D11.0025.0002.6FEB][.3D8A.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F922 -F984 ; [.3D11.002A.0002.6FFE][.3D90.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F984 -2F915 ; [.3D17.002D.0002.701B][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F915 -FA9B ; [.3D18.003D.0002.701E][.3D8E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA9B -2F914 ; [.3D18.003D.0002.701E][.3D8E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F914 -2F835 ; [.3D1E.002D.0002.7070][.3D95.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F835 -2F918 ; [.3D18.002B.0002.707D][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F918 -F9FB ; [.3D18.002C.0002.7099][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9FB -2F91A ; [.3D1C.0028.0002.70AD][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F91A -F99F ; [.3D11.0025.0002.70C8][.3D90.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F99F -F916 ; [.3D11.0022.0002.70D9][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F916 -F993 ; [.3D11.0025.0002.7149][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F993 -FA48 ; [.3D18.002D.0002.716E][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA48 -FA9C ; [.3D18.002D.0002.716E][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA9C -F9C0 ; [.3D11.0026.0002.71CE][.3D96.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C0 -F9EE ; [.3D11.0023.0002.71D0][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9EE -F932 ; [.3D11.0027.0002.7210][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F932 -F91E ; [.3D11.0026.0002.721B][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F91E -2F920 ; [.3D1A.0036.0002.7228][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F920 -FA9E ; [.3D18.0028.0002.7235][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA9E -2F921 ; [.3D18.0028.0002.7235][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F921 -F946 ; [.3D11.0023.0002.7262][.3D95.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F946 -2F924 ; [.3D15.0030.0002.7280][.3D8E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F924 -FA9F ; [.3D13.0027.0002.72AF][.3D8E.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA9F -F9FA ; [.3D15.0035.0002.72C0][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9FA -F92B ; [.3D11.0024.0002.72FC][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F92B -FA16 ; [.3D18.002E.0002.732A][.3D8E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA16 -FAA0 ; [.3D18.002E.0002.732A][.3D8E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAA0 -F9A7 ; [.3D11.0021.0002.7375][.3D90.0020.0002][.3DF8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A7 -2F928 ; [.3D0F.0023.0002.737A][.3D8A.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F928 -F961 ; [.3D15.0021.0002.7387][.3D92.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F961 -F9DB ; [.3D15.0021.0002.7387][.3D92.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9DB -2F929 ; [.3D17.0025.0002.738B][.3D93.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F929 -F9AD ; [.3D11.0027.0002.73B2][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9AD -F917 ; [.3D11.0023.0002.73DE][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F917 -F9E4 ; [.3D11.002D.0002.7406][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E4 -F9CC ; [.3D11.0028.0002.7409][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9CC -FA4A ; [.3D1C.002B.0002.7422][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA4A -2F92F ; [.3D17.003D.0002.745C][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F92F -F9AE ; [.3D1E.002D.0002.7469][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9AE -FAA1 ; [.3D18.0057.0002.7471][.3D8E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAA1 -2F930 ; [.3D18.0057.0002.7471][.3D8E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F930 -F994 ; [.3D11.0026.0002.7489][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F994 -F9EF ; [.3D11.0024.0002.7498][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9EF -2F932 ; [.3D0C.003A.0002.74CA][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F932 -F9CD ; [.3D11.002A.0002.7559][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9CD -F976 ; [.3D11.0022.0002.7565][.3D8C.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F976 -F962 ; [.3D17.002C.0002.7570][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F962 -2F938 ; [.3D17.002C.0002.7570][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F938 -F9E5 ; [.3D11.002F.0002.75E2][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E5 -2F93A ; [.3D17.0059.0002.7610][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F93A -FAA5 ; [.3D17.0023.0002.761F][.3D92.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAA5 -F9C1 ; [.3D11.0027.0002.7642][.3D96.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C1 -F90E ; [.3D11.0023.0002.7669][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F90E -FA17 ; [.3D17.0022.0002.76CA][.3D9E.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA17 -FAA6 ; [.3D17.0022.0002.76CA][.3D9E.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAA6 -FAA7 ; [.3D15.002B.0002.76DB][.3D8E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAA7 -F933 ; [.3D11.0028.0002.76E7][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F933 -FAA8 ; [.3D18.0021.0002.76F4][.3D9E.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAA8 -2F940 ; [.3D18.0021.0002.76F4][.3D9E.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F940 -F96D ; [.3D15.002C.0002.7701][.3D8E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F96D -2F945 ; [.3D18.0033.0002.771E][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F945 -FAAA ; [.3D1A.0023.0002.7740][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAAA -2F94A ; [.3D18.0034.0002.778B][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F94A -F9CE ; [.3D11.002C.0002.786B][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9CE -F93B ; [.3D11.0021.0002.788C][.3D92.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F93B -2F94F ; [.3D11.0021.0002.788C][.3D92.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F94F -FA4B ; [.3D13.0038.0002.7891][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA4B -F947 ; [.3D11.0024.0002.78CA][.3D95.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F947 -F964 ; [.3D13.0032.0002.78FB][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F964 -F985 ; [.3D11.002B.0002.792A][.3D90.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F985 -FA4C ; [.3D15.0046.0002.793E][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA4C -FA4E ; [.3D0C.004C.0002.7948][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA4E -FA4D ; [.3D18.0035.0002.7949][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA4D -FA4F ; [.3D17.0032.0002.7950][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA4F -FA50 ; [.3D18.0039.0002.7956][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA50 -2F953 ; [.3D18.0039.0002.7956][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F953 -FA51 ; [.3D1A.0023.0002.795D][.3D97.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA51 -FA19 ; [.3D15.002C.0002.795E][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA19 -FA1A ; [.3D15.0037.0002.7965][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA1A -F93C ; [.3D11.0022.0002.797F][.3D92.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F93C -FA52 ; [.3D1E.0027.0002.798D][.3D93.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA52 -FA53 ; [.3D18.0044.0002.798E][.3D8E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA53 -FA1B ; [.3D13.0028.0002.798F][.3D92.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA1B -2F956 ; [.3D13.0028.0002.798F][.3D92.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F956 -F9B6 ; [.3D11.0023.0002.79AE][.3D91.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B6 -F995 ; [.3D0E.0023.0002.79CA][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F995 -2F957 ; [.3D1A.0024.0002.79EB][.3D97.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F957 -F956 ; [.3D11.0023.0002.7A1C][.3D9C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F956 -FA54 ; [.3D0C.0025.0002.7A40][.3D92.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA54 -2F959 ; [.3D0C.0025.0002.7A40][.3D92.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F959 -FA55 ; [.3D0F.0022.0002.7A81][.3D92.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA55 -F9F7 ; [.3D11.0022.0002.7ACB][.3D9E.0020.0002][.3DF8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F7 -F9F8 ; [.3D11.0023.0002.7B20][.3D9E.0020.0002][.3DF8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F8 -FA56 ; [.3D18.0027.0002.7BC0][.3D8E.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA56 -FAAD ; [.3D18.0027.0002.7BC0][.3D8E.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAAD -2F962 ; [.3D18.003D.0002.7BC6][.3D8E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F962 -2F963 ; [.3D1A.0026.0002.7BC9][.3D97.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F963 -F9A6 ; [.3D11.0025.0002.7C3E][.3D90.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A6 -F944 ; [.3D11.0026.0002.7C60][.3D92.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F944 -F9F9 ; [.3D11.0024.0002.7C92][.3D9E.0020.0002][.3DF8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F9 -FA1D ; [.3D18.0047.0002.7CBE][.3D8E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA1D -FA03 ; [.3D0F.0029.0002.7CD6][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA03 -F97B ; [.3D11.0029.0002.7CE7][.3D8C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F97B -2F96A ; [.3D0C.004F.0002.7D00][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F96A -F9CF ; [.3D0E.0022.0002.7D10][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9CF -F96A ; [.3D15.0023.0002.7D22][.3D8B.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F96A -F94F ; [.3D11.0028.0002.7D2F][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F94F -FAAF ; [.3D18.0063.0002.7D5B][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAAF -2F96C ; [.3D13.0034.0002.7D63][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F96C -F93D ; [.3D11.0023.0002.7DA0][.3D92.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F93D -F957 ; [.3D11.0024.0002.7DBE][.3D9C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F957 -2F96E ; [.3D1A.0030.0002.7DC7][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F96E -F996 ; [.3D11.0027.0002.7DF4][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F996 -FA57 ; [.3D11.0027.0002.7DF4][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA57 -FAB0 ; [.3D11.0027.0002.7DF4][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB0 -FA58 ; [.3D18.0036.0002.7E09][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA58 -F950 ; [.3D11.0029.0002.7E37][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F950 -FA59 ; [.3D13.0026.0002.7E41][.3D8E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA59 -2F970 ; [.3D15.0052.0002.7E45][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F970 -FAB1 ; [.3D13.0035.0002.7F3E][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB1 -FA5A ; [.3D15.0035.0002.7F72][.3D8E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA5A -F9E6 ; [.3D11.0031.0002.7F79][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E6 -F90F ; [.3D11.0024.0002.7F85][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F90F -F9AF ; [.3D11.0029.0002.7F9A][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9AF -FA1E ; [.3D17.0036.0002.7FBD][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA1E -2F979 ; [.3D0C.005A.0002.7FFA][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F979 -F934 ; [.3D11.0029.0002.8001][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F934 -FA5B ; [.3D18.0033.0002.8005][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA5B -FAB2 ; [.3D18.0033.0002.8005][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB2 -2F97A ; [.3D18.0033.0002.8005][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F97A -F9B0 ; [.3D11.002B.0002.8046][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B0 -F997 ; [.3D11.0028.0002.806F][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F997 -2F97F ; [.3D1A.0028.0002.8070][.3D92.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F97F -F945 ; [.3D11.0027.0002.807E][.3D92.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F945 -F953 ; [.3D11.0022.0002.808B][.3D9C.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F953 -2F8D6 ; [.3D0E.0023.0002.80AD][.3D97.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8D6 -2F982 ; [.3D17.0024.0002.80B2][.3D9B.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F982 -2F985 ; [.3D13.003F.0002.813E][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F985 -F926 ; [.3D11.0022.0002.81D8][.3D8A.0020.0002][.3DF8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F926 -F9F6 ; [.3D11.0024.0002.81E8][.3D9E.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F6 -FA5C ; [.3D1A.002A.0002.81ED][.3D9A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA5C -2F893 ; [.3D17.002E.0002.8201][.3D90.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F893 -2F98B ; [.3D17.002E.0002.8201][.3D90.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F98B -F97C ; [.3D11.002A.0002.826F][.3D8C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F97C -2F990 ; [.3D17.0037.0002.828B][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F990 -2F991 ; [.3D18.003B.0002.829D][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F991 -2F993 ; [.3D1E.0029.0002.82B1][.3D93.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F993 -2F994 ; [.3D13.0035.0002.82B3][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F994 -2F995 ; [.3D17.0029.0002.82BD][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F995 -F974 ; [.3D17.0023.0002.82E5][.3D8C.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F974 -2F998 ; [.3D17.0023.0002.82E5][.3D8C.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F998 -2F996 ; [.3D0C.003A.0002.82E6][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F996 -2F999 ; [.3D1A.002E.0002.831D][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F999 -2F99C ; [.3D17.004C.0002.8323][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F99C -F9FE ; [.3D0F.0022.0002.8336][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9FE -FAB3 ; [.3D1E.0034.0002.8352][.3D93.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB3 -2F99D ; [.3D12.002A.0002.83BD][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F99D -F93E ; [.3D11.0024.0002.83C9][.3D92.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F93E -2F9A1 ; [.3D0C.0023.0002.83CA][.3D97.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9A1 -2F9A2 ; [.3D0C.0025.0002.83CC][.3D9B.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9A2 -2F9A3 ; [.3D1A.0029.0002.83DC][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9A3 -FAB4 ; [.3D1E.002A.0002.83EF][.3D93.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB4 -F958 ; [.3D11.0025.0002.83F1][.3D9C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F958 -F918 ; [.3D11.0025.0002.843D][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F918 -F96E ; [.3D17.0023.0002.8449][.3D90.0020.0002][.3DF8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F96E -FA5F ; [.3D18.0034.0002.8457][.3D8E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA5F -2F99F ; [.3D18.0034.0002.8457][.3D8E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F99F -F999 ; [.3D11.0029.0002.84EE][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F999 -2F9A8 ; [.3D1D.002A.0002.84F1][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9A8 -F9C2 ; [.3D11.002A.0002.84FC][.3D96.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C2 -2F9AC ; [.3D17.0062.0002.8564][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9AC -F923 ; [.3D11.0028.0002.85CD][.3D8A.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F923 -F9F0 ; [.3D11.0025.0002.85FA][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F0 -F935 ; [.3D11.002A.0002.8606][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F935 -F91F ; [.3D11.0027.0002.862D][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F91F -F910 ; [.3D11.0025.0002.863F][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F910 -2F9B3 ; [.3D1E.0023.0002.8650][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9B3 -F936 ; [.3D11.002B.0002.865C][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F936 -2F9B4 ; [.3D11.002B.0002.865C][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9B4 -2F9B5 ; [.3D1E.0025.0002.8667][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9B5 -2F9B7 ; [.3D1A.0034.0002.86A9][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9B7 -2F9BC ; [.3D18.0026.0002.8728][.3D8E.0020.0002][.3DF8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9BC -F911 ; [.3D11.0026.0002.87BA][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F911 -F927 ; [.3D11.0023.0002.881F][.3D8A.0020.0002][.3DF8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F927 -FA08 ; [.3D1E.0025.0002.884C][.3D8B.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA08 -2F9C4 ; [.3D17.0030.0002.8863][.3D9D.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9C4 -F9A0 ; [.3D11.0026.0002.88C2][.3D90.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A0 -F9E7 ; [.3D11.0034.0002.88CF][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E7 -F9E8 ; [.3D11.0035.0002.88E1][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E8 -F912 ; [.3D11.0027.0002.88F8][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F912 -FA60 ; [.3D0C.0028.0002.8910][.3D8A.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA60 -FAB6 ; [.3D0C.0034.0002.8941][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB6 -F924 ; [.3D11.0029.0002.8964][.3D8A.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F924 -FAB7 ; [.3D13.002D.0002.8986][.3D92.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB7 -FA0A ; [.3D0C.0028.0002.898B][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA0A -FA61 ; [.3D15.0037.0002.8996][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA61 -FAB8 ; [.3D15.0037.0002.8996][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB8 -2F9CF ; [.3D15.0031.0002.8AA0][.3D8E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9CF -F96F ; [.3D15.002B.0002.8AAA][.3D8E.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F96F -F9A1 ; [.3D15.002B.0002.8AAA][.3D8E.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A1 -FAB9 ; [.3D18.0046.0002.8ABF][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB9 -FABB ; [.3D1A.0026.0002.8ACB][.3D8E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FABB -F97D ; [.3D11.002B.0002.8AD2][.3D8C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F97D -F941 ; [.3D11.0021.0002.8AD6][.3D92.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F941 -FABE ; [.3D17.0046.0002.8AED][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FABE -2F9D0 ; [.3D17.0046.0002.8AED][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9D0 -FA22 ; [.3D18.0030.0002.8AF8][.3D8F.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA22 -FABA ; [.3D18.0030.0002.8AF8][.3D8F.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FABA -F95D ; [.3D0E.0021.0002.8AFE][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F95D -FABD ; [.3D0E.0021.0002.8AFE][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FABD -FA62 ; [.3D17.0022.0002.8B01][.3D8A.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA62 -FABC ; [.3D17.0022.0002.8B01][.3D8A.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FABC -FA63 ; [.3D0C.002D.0002.8B39][.3D9C.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA63 -FABF ; [.3D0C.002D.0002.8B39][.3D9C.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FABF -F9FC ; [.3D15.002C.0002.8B58][.3D9E.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9FC -F95A ; [.3D0F.002A.0002.8B80][.3D92.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F95A -FAC0 ; [.3D13.0023.0002.8B8A][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAC0 -2F9D1 ; [.3D13.0023.0002.8B8A][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9D1 -F900 ; [.3D0C.0057.0002.8C48][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F900 -2F9D2 ; [.3D15.003B.0002.8C55][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9D2 -2F9D4 ; [.3D0C.002E.0002.8CAB][.3D93.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9D4 -2F9D5 ; [.3D13.0032.0002.8CC1][.3D97.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9D5 -F948 ; [.3D11.0025.0002.8CC2][.3D95.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F948 -F903 ; [.3D0C.0039.0002.8CC8][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F903 -FA64 ; [.3D13.002D.0002.8CD3][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA64 -FA65 ; [.3D18.002B.0002.8D08][.3D9C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA65 -FAC1 ; [.3D18.002B.0002.8D08][.3D9C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAC1 -2F9D6 ; [.3D0C.0039.0002.8D1B][.3D92.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9D6 -2F9D7 ; [.3D0C.0058.0002.8D77][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9D7 -2F9DA ; [.3D13.0027.0002.8DCB][.3D8A.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9DA -F937 ; [.3D11.002C.0002.8DEF][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F937 -F902 ; [.3D1A.002D.0002.8ECA][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F902 -F998 ; [.3D11.002A.0002.8F26][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F998 -F9D7 ; [.3D11.0026.0002.8F2A][.3D9B.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D7 -FAC2 ; [.3D15.004F.0002.8F38][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAC2 -2F9DF ; [.3D15.004F.0002.8F38][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9DF -FA07 ; [.3D13.002F.0002.8F3B][.3D92.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA07 -F98D ; [.3D11.0026.0002.8F62][.3D90.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F98D -F971 ; [.3D18.003E.0002.8FB0][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F971 -F99A ; [.3D11.002B.0002.9023][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F99A -FA25 ; [.3D17.0027.0002.9038][.3D9E.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA25 -FA67 ; [.3D17.0027.0002.9038][.3D9E.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA67 -FAC3 ; [.3D18.0041.0002.9072][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAC3 -F9C3 ; [.3D11.002B.0002.907C][.3D96.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C3 -F913 ; [.3D11.0028.0002.908F][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F913 -FA2E ; [.3D11.0028.0002.90DE][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA2E -FA26 ; [.3D0F.0045.0002.90FD][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA26 -F919 ; [.3D11.0026.0002.916A][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F919 -F9B7 ; [.3D11.0024.0002.91B4][.3D91.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B7 -F9E9 ; [.3D11.0036.0002.91CC][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E9 -F97E ; [.3D11.002D.0002.91CF][.3D8C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F97E -F90A ; [.3D0C.0021.0002.91D1][.3D9E.0020.0002][.3DF7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F90A -F9B1 ; [.3D11.002D.0002.9234][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B1 -2F9E7 ; [.3D13.002F.0002.9238][.3D8A.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9E7 -2F9EA ; [.3D13.0039.0002.927C][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9EA -2F9E8 ; [.3D1E.003F.0002.92D7][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9E8 -F93F ; [.3D11.0025.0002.9304][.3D92.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F93F -F99B ; [.3D11.002C.0002.934A][.3D90.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F99B -2F9EE ; [.3D0C.0033.0002.958B][.3D8B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9EE -F986 ; [.3D11.002E.0002.95AD][.3D90.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F986 -F9C6 ; [.3D17.0031.0002.962E][.3D93.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C6 -F951 ; [.3D11.002D.0002.964B][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F951 -FA09 ; [.3D0C.0037.0002.964D][.3D8A.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA09 -F959 ; [.3D11.0026.0002.9675][.3D9C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F959 -F9D3 ; [.3D11.0023.0002.9678][.3D9B.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D3 -FAC6 ; [.3D18.004E.0002.967C][.3D8E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAC6 -F9DC ; [.3D11.0021.0002.9686][.3D9B.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9DC -F9F1 ; [.3D11.0027.0002.96A3][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F1 -FA2F ; [.3D11.0025.0002.96B7][.3D91.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA2F -F9B8 ; [.3D11.0026.0002.96B8][.3D91.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B8 -F9EA ; [.3D11.0038.0002.96E2][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9EA -FA68 ; [.3D0E.0023.0002.96E3][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA68 -FAC7 ; [.3D0E.0023.0002.96E3][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAC7 -F9B2 ; [.3D11.002E.0002.96F6][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B2 -F949 ; [.3D11.0028.0002.96F7][.3D95.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F949 -2F9F5 ; [.3D17.0031.0002.9723][.3D97.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9F5 -F938 ; [.3D11.002E.0002.9732][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F938 -F9B3 ; [.3D11.002F.0002.9748][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B3 -FA1C ; [.3D18.0054.0002.9756][.3D8E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA1C -FAC8 ; [.3D18.0054.0002.9756][.3D8E.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAC8 -2F9FA ; [.3D1D.0034.0002.97E0][.3D9E.0020.0002][.3DEF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9FA -FA69 ; [.3D1E.0026.0002.97FF][.3D8C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA69 -FACA ; [.3D1E.0026.0002.97FF][.3D8C.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FACA -F9B4 ; [.3D11.0030.0002.9818][.3D90.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B4 -FA6A ; [.3D13.002E.0002.983B][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA6A -FACC ; [.3D13.002E.0002.983B][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FACC -F9D0 ; [.3D11.002E.0002.985E][.3D9B.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D0 -2FA02 ; [.3D0C.005B.0002.98E2][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2FA02 -FA2A ; [.3D13.0039.0002.98EF][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA2A -FA2B ; [.3D15.005A.0002.98FC][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA2B -FA2C ; [.3D0C.0030.0002.9928][.3D93.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA2C -F91A ; [.3D11.0027.0002.99F1][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F91A -F987 ; [.3D11.0030.0002.9A6A][.3D90.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F987 -FACD ; [.3D18.004C.0002.9B12][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FACD -2FA0A ; [.3D18.004C.0002.9B12][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2FA0A -F939 ; [.3D11.002F.0002.9B6F][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F939 -F9F2 ; [.3D11.0028.0002.9C57][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F2 -FA2D ; [.3D1E.0025.0002.9DB4][.3D8A.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA2D -F93A ; [.3D11.0030.0002.9DFA][.3D92.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F93A -F920 ; [.3D11.0028.0002.9E1E][.3D8A.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F920 -F940 ; [.3D11.0026.0002.9E7F][.3D92.0020.0002][.3DE8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F940 -F988 ; [.3D11.0031.0002.9E97][.3D90.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F988 -F9F3 ; [.3D11.0029.0002.9E9F][.3D9E.0020.0002][.3DEB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F3 -2FA15 ; [.3D12.0028.0002.9EBB][.3D8A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2FA15 -F989 ; [.3D11.0032.0002.9ECE][.3D90.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F989 -2FA1C ; [.3D13.004A.0002.9F3B][.3D9E.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2FA1C -F9C4 ; [.3D11.0021.0002.9F8D][.3D96.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C4 -FAD9 ; [.3D11.002E.0002.9F8E][.3D92.0020.0002][.3DFC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAD9 -F907 ; [.3D0C.0056.0002.9F9C][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F907 -F908 ; [.3D0C.0056.0002.9F9C][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F908 -FACE ; [.3D0C.0056.0002.9F9C][.3D97.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FACE + entry => <<'ENTRY', # for DUCET v13.0.0 +F967 ; [.417C.0021.0002.4E0D][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F967 +FA70 ; [.417C.0032.0002.4E26][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA70 +F905 ; [.4175.0021.0002.4E32][.41FB.0020.0002][.4266.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F905 +2F801 ; [.4187.0021.0002.4E38][.41FC.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F801 +F95E ; [.4178.0021.0002.4E39][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F95E +F91B ; [.417A.0021.0002.4E82][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F91B +F9BA ; [.417A.0021.0002.4E86][.41FF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9BA +F977 ; [.417A.0021.0002.4EAE][.41F5.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F977 +F9FD ; [.417E.0021.0002.4EC0][.4207.0020.0002][.4261.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9FD +F9A8 ; [.417A.0021.0002.4EE4][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A8 +F92D ; [.417A.0021.0002.4F86][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F92D +F9B5 ; [.417A.0021.0002.4F8B][.41FA.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B5 +FA30 ; [.417B.0021.0002.4FAE][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA30 +2F805 ; [.417B.0021.0002.4FAE][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F805 +2F806 ; [.4185.0023.0002.4FBB][.41F3.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F806 +F965 ; [.4186.0021.0002.4FBF][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F965 +2F807 ; [.417C.0022.0002.5002][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F807 +F9D4 ; [.417A.0022.0002.502B][.4204.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D4 +2F809 ; [.417C.0022.0002.5099][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F809 +2F80B ; [.417E.0023.0002.50CF][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F80B +F9BB ; [.417A.0022.0002.50DA][.41FF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9BB +FA31 ; [.417E.0023.0002.50E7][.4205.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA31 +2F80A ; [.417E.0023.0002.50E7][.4205.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F80A +FA0C ; [.4180.0021.0002.5140][.41FB.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA0C +FA74 ; [.4183.0021.0002.5145][.4200.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA74 +FA32 ; [.417B.0021.0002.514D][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA32 +2F80E ; [.417B.0021.0002.514D][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F80E +2F814 ; [.4177.0022.0002.5167][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F814 +FA72 ; [.4181.0024.0002.5168][.41F7.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA72 +F978 ; [.417A.0023.0002.5169][.41F5.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F978 +F9D1 ; [.417A.0021.0002.516D][.4204.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D1 +2F811 ; [.4175.0026.0002.5177][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F811 +FA75 ; [.4175.0024.0002.5180][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA75 +2F815 ; [.4181.0021.0002.518D][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F815 +2F8D2 ; [.417B.0022.0002.5192][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8D2 +2F8D3 ; [.417B.0022.0002.5195][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8D3 +2F817 ; [.4180.0023.0002.5197][.41FF.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F817 +2F818 ; [.4180.003B.0002.51A4][.4201.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F818 +2F81A ; [.4178.0022.0002.51AC][.41FB.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F81A +F92E ; [.417A.0021.0002.51B7][.41F4.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F92E +F979 ; [.417A.0024.0002.51C9][.41F5.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F979 +F955 ; [.417A.0021.0002.51CC][.4205.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F955 +F954 ; [.417A.0021.0002.51DC][.4205.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F954 +FA15 ; [.4187.0022.0002.51DE][.4206.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA15 +2F81E ; [.4180.0023.0002.5203][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F81E +FA00 ; [.4181.0021.0002.5207][.41F7.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA00 +2F850 ; [.4181.0021.0002.5207][.41F7.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F850 +F99C ; [.417A.0022.0002.5217][.41F9.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F99C +F9DD ; [.417A.0022.0002.5229][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9DD +F9FF ; [.4181.0022.0002.523A][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9FF +2F820 ; [.4175.0021.0002.523B][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F820 +2F822 ; [.4187.0021.0002.5272][.41F3.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F822 +2F823 ; [.417E.002D.0002.5277][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F823 +F9C7 ; [.417A.0021.0002.5289][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C7 +F98A ; [.417A.0021.0002.529B][.41F9.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F98A +F99D ; [.417A.0023.0002.52A3][.41F9.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F99D +FA76 ; [.4180.0024.0002.52C7][.41FF.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA76 +2F825 ; [.4180.0024.0002.52C7][.41FF.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F825 +FA33 ; [.417B.0023.0002.52C9][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA33 +2F826 ; [.417B.0023.0002.52C9][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F826 +F952 ; [.417A.0021.0002.52D2][.4205.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F952 +F92F ; [.417A.0021.0002.52DE][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F92F +FA34 ; [.4175.0023.0002.52E4][.4205.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA34 +2F827 ; [.4175.0023.0002.52E4][.4205.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F827 +F97F ; [.417A.0023.0002.52F5][.41F9.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F97F +FA77 ; [.4181.0022.0002.52FA][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA77 +2F828 ; [.4181.0022.0002.52FA][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F828 +2F829 ; [.4186.0022.0002.5305][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F829 +F963 ; [.417C.0021.0002.5317][.4200.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F963 +2F82B ; [.417C.0021.0002.5317][.4200.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F82B +F9EB ; [.4177.0021.0002.533F][.4207.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9EB +2F82C ; [.4187.0021.0002.5349][.4202.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F82C +FA35 ; [.417C.0025.0002.5351][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA35 +2F82D ; [.417C.0025.0002.5351][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F82D +2F82E ; [.417C.0022.0002.535A][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F82E +2F82F ; [.4181.0022.0002.5373][.4205.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F82F +F91C ; [.417A.0022.0002.5375][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F91C +2F830 ; [.4181.0021.0002.537D][.4205.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F830 +2F831 ; [.4175.0028.0002.537F][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F831 +2F832 ; [.4175.0028.0002.537F][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F832 +2F833 ; [.4175.0028.0002.537F][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F833 +F96B ; [.4183.0022.0002.53C3][.41F3.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F96B +2F836 ; [.4175.0022.0002.53CA][.4205.0020.0002][.4261.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F836 +2F837 ; [.417E.005E.0002.53DF][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F837 +F906 ; [.4175.002A.0002.53E5][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F906 +2F839 ; [.4175.0021.0002.53EB][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F839 +2F83A ; [.4181.0022.0002.53F1][.4207.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F83A +F9DE ; [.417A.0024.0002.540F][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9DE +F9ED ; [.417A.0021.0002.541D][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9ED +2F83D ; [.4187.0021.0002.5438][.4205.0020.0002][.4261.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F83D +F980 ; [.417A.0024.0002.5442][.41F9.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F980 +2F83E ; [.4181.0026.0002.5448][.41F7.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F83E +2F83F ; [.4181.0028.0002.5468][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F83F +2F840 ; [.4180.0031.0002.54A2][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F840 +F99E ; [.4180.0025.0002.54BD][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F99E +2F842 ; [.4178.0021.0002.5510][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F842 +2F843 ; [.4175.0022.0002.5553][.41FA.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F843 +2F844 ; [.4187.0024.0002.5563][.41F3.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F844 +2F845 ; [.417E.0024.0002.5584][.41F7.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F845 +2F846 ; [.417E.0024.0002.5584][.41F7.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F846 +F90B ; [.417A.0021.0002.5587][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F90B +FA7A ; [.4187.0022.0002.5599][.4202.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA7A +2F847 ; [.4187.0022.0002.5599][.4202.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F847 +FA36 ; [.4175.0022.0002.559D][.41F3.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA36 +FA78 ; [.4175.0022.0002.559D][.41F3.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA78 +2F848 ; [.4176.0021.0002.55AB][.4207.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F848 +FA7B ; [.4180.0022.0002.55E2][.41FB.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA7B +FA37 ; [.4185.0022.0002.5606][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA37 +2F84C ; [.4185.0022.0002.5606][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F84C +FA38 ; [.4175.0026.0002.5668][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA38 +2F84F ; [.417C.0023.0002.5674][.4200.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F84F +F9A9 ; [.417A.0023.0002.56F9][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A9 +2F84B ; [.4178.0024.0002.5716][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F84B +2F855 ; [.4187.0024.0002.578B][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F855 +2F852 ; [.417E.0021.0002.57CE][.41F7.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F852 +2F853 ; [.417E.0021.0002.57F4][.4207.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F853 +2F857 ; [.417C.0023.0002.5831][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F857 +FA39 ; [.417C.0033.0002.5840][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA39 +FA10 ; [.4183.0022.0002.585A][.41FB.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA10 +FA7C ; [.4183.0022.0002.585A][.41FB.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA7C +F96C ; [.417E.0021.0002.585E][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F96C +FA3A ; [.417B.0021.0002.58A8][.4200.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA3A +FA7D ; [.417C.0024.0002.58B3][.4200.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA7D +F94A ; [.417A.0021.0002.58D8][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F94A +F942 ; [.417A.0021.0002.58DF][.41FB.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F942 +2F85C ; [.417C.0032.0002.5906][.41FB.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F85C +2F85D ; [.4178.0021.0002.591A][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F85D +2F85E ; [.417B.0021.0002.5922][.41FB.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F85E +FA7E ; [.4180.0024.0002.5944][.41F7.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA7E +F90C ; [.4177.0023.0002.5948][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F90C +F909 ; [.4175.0024.0002.5951][.41FA.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F909 +FA7F ; [.417C.0025.0002.5954][.4200.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA7F +2F85F ; [.417E.0030.0002.5962][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F85F +F981 ; [.4177.0021.0002.5973][.41F9.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F981 +2F862 ; [.4187.0026.0002.59EC][.4206.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F862 +2F863 ; [.4180.002C.0002.5A1B][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F863 +2F864 ; [.4185.0030.0002.5A27][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F864 +FA80 ; [.417C.0027.0002.5A62][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA80 +2F866 ; [.417C.002B.0002.5A66][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F866 +2F986 ; [.4180.0025.0002.5AB5][.4207.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F986 +2F869 ; [.4180.0041.0002.5B08][.41FF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F869 +FA81 ; [.4181.003C.0002.5B28][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA81 +2F86A ; [.417A.0029.0002.5B3E][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F86A +2F86B ; [.417A.0029.0002.5B3E][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F86B +FA04 ; [.4178.0021.0002.5B85][.41F4.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA04 +2F86D ; [.4180.0029.0002.5BC3][.4201.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F86D +2F86E ; [.4183.003B.0002.5BD8][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F86E +F95F ; [.4177.0021.0002.5BE7][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F95F +F9AA ; [.4177.0021.0002.5BE7][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9AA +2F86F ; [.4177.0021.0002.5BE7][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F86F +F9BC ; [.417A.0023.0002.5BEE][.41FF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9BC +F9BD ; [.4177.0021.0002.5C3F][.41FF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9BD +2F877 ; [.4178.0028.0002.5C60][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F877 +F94B ; [.417A.0023.0002.5C62][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F94B +FA3B ; [.4183.0021.0002.5C64][.4205.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA3B +F9DF ; [.417A.0026.0002.5C65][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9DF +2F879 ; [.417E.002A.0002.5CC0][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F879 +F9D5 ; [.417A.0023.0002.5D19][.4204.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D5 +F921 ; [.417A.0021.0002.5D50][.41F3.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F921 +F9AB ; [.417A.0025.0002.5DBA][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9AB +2F881 ; [.417E.0021.0002.5DE1][.4200.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F881 +2F882 ; [.417E.0027.0002.5DE2][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F882 +2F884 ; [.417E.0022.0002.5DFD][.41FB.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F884 +2F885 ; [.417E.0029.0002.5E28][.41F8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F885 +2F886 ; [.417B.0025.0002.5E3D][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F886 +F98E ; [.4177.0021.0002.5E74][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F98E +FA01 ; [.4178.002B.0002.5EA6][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA01 +2F88C ; [.417C.0052.0002.5EB3][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F88C +2F88D ; [.417E.0025.0002.5EB6][.41F7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F88D +F9A2 ; [.417A.0021.0002.5EC9][.41F9.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A2 +F928 ; [.417A.0021.0002.5ECA][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F928 +2F88E ; [.417A.0021.0002.5ECA][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F88E +FA0B ; [.4175.0021.0002.5ED3][.41FC.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA0B +F982 ; [.417A.0025.0002.5EEC][.41F9.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F982 +F943 ; [.417A.0022.0002.5F04][.41FB.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F943 +2F894 ; [.4178.004B.0002.5F22][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F894 +2F895 ; [.4178.004B.0002.5F22][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F895 +2F899 ; [.4187.0025.0002.5F62][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F899 +FA84 ; [.4183.0025.0002.5F69][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA84 +2F89A ; [.4181.0027.0002.5F6B][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F89A +F9D8 ; [.417A.0021.0002.5F8B][.4204.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D8 +F966 ; [.417C.0026.0002.5FA9][.41FB.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F966 +FA85 ; [.4180.0043.0002.5FAD][.41FF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA85 +2F89D ; [.4180.002A.0002.5FCD][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F89D +2F89E ; [.4181.0026.0002.5FD7][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F89E +F9A3 ; [.4177.0021.0002.5FF5][.41F9.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A3 +F960 ; [.4177.0024.0002.6012][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F960 +F9AC ; [.417A.0026.0002.601C][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9AC +2F8A0 ; [.4180.0042.0002.6081][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8A0 +FA3D ; [.4187.0026.0002.6094][.41FE.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA3D +2F8A3 ; [.4187.0026.0002.6094][.41FE.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8A3 +2F8A5 ; [.4178.0022.0002.60C7][.41FB.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8A5 +FA86 ; [.417B.002D.0002.60D8][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA86 +F9B9 ; [.4180.0025.0002.60E1][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B9 +FA88 ; [.4180.002E.0002.6108][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA88 +F9D9 ; [.417A.0022.0002.6144][.4204.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D9 +2F8A6 ; [.4181.002A.0002.6148][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8A6 +2F8A7 ; [.4187.0027.0002.614C][.41FC.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8A7 +2F8A9 ; [.4187.0027.0002.614C][.41FC.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8A9 +FA8A ; [.4180.0047.0002.6160][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA8A +FA3E ; [.4175.0028.0002.6168][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA3E +2F8AA ; [.417A.0031.0002.617A][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8AA +FA3F ; [.4181.0022.0002.618E][.4205.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA3F +FA89 ; [.4181.0022.0002.618E][.4205.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA89 +2F8AB ; [.4181.0022.0002.618E][.4205.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8AB +F98F ; [.417A.0021.0002.6190][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F98F +2F8AD ; [.417C.0028.0002.61A4][.4200.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8AD +2F8AE ; [.4183.0030.0002.61AF][.41F3.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8AE +2F8AC ; [.4187.0021.0002.61B2][.41F7.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8AC +2F8AF ; [.417B.0025.0002.61DE][.41FB.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8AF +FA40 ; [.4181.0022.0002.61F2][.4207.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA40 +FA8B ; [.4181.0022.0002.61F2][.4207.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA8B +2F8B0 ; [.4181.0022.0002.61F2][.4207.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8B0 +F90D ; [.417A.0022.0002.61F6][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F90D +2F8B1 ; [.417A.0022.0002.61F6][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8B1 +F990 ; [.417A.0022.0002.6200][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F990 +2F8B2 ; [.417E.0026.0002.6210][.41F7.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8B2 +F9D2 ; [.417A.0022.0002.622E][.4204.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D2 +FA8C ; [.4178.0029.0002.6234][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA8C +2F8B5 ; [.4186.002B.0002.62B1][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8B5 +F925 ; [.417A.0021.0002.62C9][.41F3.0020.0002][.4261.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F925 +F95B ; [.4177.0024.0002.62CF][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F95B +FA02 ; [.4183.0026.0002.62D3][.41F7.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA02 +2F8B6 ; [.417C.0022.0002.62D4][.41F3.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8B6 +F973 ; [.417E.0022.0002.62FE][.4205.0020.0002][.4261.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F973 +2F8B9 ; [.417B.0027.0002.633D][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8B9 +2F8B7 ; [.4180.0027.0002.6350][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8B7 +2F8BB ; [.417E.0039.0002.6368][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8BB +F9A4 ; [.4177.0024.0002.637B][.41F9.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A4 +2F8BC ; [.417E.0029.0002.6383][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8BC +F975 ; [.417A.0021.0002.63A0][.41F5.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F975 +2F8C1 ; [.4180.0025.0002.63A9][.41F7.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8C1 +FA8D ; [.4180.0030.0002.63C4][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA8D +FA8E ; [.417E.0030.0002.641C][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA8E +2F8BF ; [.4181.0025.0002.6422][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8BF +2F8C3 ; [.417B.0021.0002.6469][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8C3 +F991 ; [.4177.0022.0002.649A][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F991 +2F8C5 ; [.4187.0029.0002.649D][.4203.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8C5 +F930 ; [.417A.0023.0002.64C4][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F930 +FA41 ; [.417B.0025.0002.654F][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA41 +2F8C8 ; [.417B.0025.0002.654F][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8C8 +FA90 ; [.4180.0030.0002.6556][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA90 +2F8C9 ; [.4175.0030.0002.656C][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8C9 +F969 ; [.417E.0032.0002.6578][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F969 +F9BE ; [.417A.0025.0002.6599][.41FF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9BE +F983 ; [.417A.0028.0002.65C5][.41F9.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F983 +2F8CB ; [.4175.0035.0002.65E3][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8CB +F9E0 ; [.4180.0024.0002.6613][.41F9.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E0 +2F8CD ; [.4181.0026.0002.6649][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8CD +FA12 ; [.4183.0022.0002.6674][.41F7.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA12 +FA91 ; [.4183.0022.0002.6674][.41F7.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA91 +F9C5 ; [.4187.002A.0002.6688][.4200.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C5 +FA43 ; [.417E.002B.0002.6691][.41F7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA43 +2F8CF ; [.417E.002B.0002.6691][.41F7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8CF +FA06 ; [.4186.0022.0002.66B4][.41FB.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA06 +F98B ; [.417A.0022.0002.66C6][.41F9.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F98B +F901 ; [.4175.0033.0002.66F4][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F901 +2F8CC ; [.417E.002D.0002.66F8][.41F7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8CC +2F8D4 ; [.4183.0023.0002.6700][.41FE.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8D4 +F929 ; [.417A.0022.0002.6717][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F929 +FA92 ; [.417A.0022.0002.6717][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA92 +2F8D8 ; [.417A.0022.0002.6717][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8D8 +FA93 ; [.417B.0025.0002.671B][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA93 +2F8D9 ; [.417B.0025.0002.671B][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8D9 +F9E1 ; [.417A.0028.0002.674E][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E1 +2F8DC ; [.4186.0025.0002.6753][.41FF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8DC +FA94 ; [.4181.002E.0002.6756][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA94 +2F8DB ; [.4175.0038.0002.675E][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8DB +F9C8 ; [.4177.0021.0002.677B][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C8 +F9F4 ; [.417A.0021.0002.6797][.4207.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F4 +F9C9 ; [.417A.0023.0002.67F3][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C9 +F9DA ; [.417A.0023.0002.6817][.4204.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9DA +F97A ; [.417A.0025.0002.6881][.41F5.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F97A +FA44 ; [.417B.0027.0002.6885][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA44 +2F8E2 ; [.417B.0027.0002.6885][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8E2 +F9E2 ; [.417A.0029.0002.68A8][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E2 +2F8E8 ; [.417E.0062.0002.6942][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8E8 +2F8EA ; [.4175.002A.0002.69EA][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8EA +F914 ; [.4180.0028.0002.6A02][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F914 +F95C ; [.4180.0028.0002.6A02][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F95C +F9BF ; [.4180.0028.0002.6A02][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9BF +F94C ; [.417A.0024.0002.6A13][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F94C +F931 ; [.417A.0024.0002.6AD3][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F931 +2F8ED ; [.4181.0021.0002.6ADB][.4205.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8ED +F91D ; [.417A.0023.0002.6B04][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F91D +2F8EF ; [.4183.0028.0002.6B21][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8EF +2F8F1 ; [.4187.0025.0002.6B54][.41F7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8F1 +2F8F3 ; [.417E.0023.0002.6B72][.41F8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8F3 +F98C ; [.417A.0023.0002.6B77][.41F9.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F98C +F9A5 ; [.417A.0023.0002.6BAE][.41F9.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A5 +F970 ; [.417E.0023.0002.6BBA][.41F3.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F970 +FA96 ; [.417E.0023.0002.6BBA][.41F3.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA96 +2F8F5 ; [.417E.0023.0002.6BBA][.41F3.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8F5 +2F8FA ; [.417C.0025.0002.6C4E][.41F7.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8FA +F972 ; [.4183.0024.0002.6C88][.4207.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F972 +2F8FC ; [.4180.002B.0002.6CBF][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8FC +F968 ; [.4186.0024.0002.6CCC][.4207.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F968 +F9E3 ; [.4177.0022.0002.6CE5][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E3 +F915 ; [.417A.0021.0002.6D1B][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F915 +FA05 ; [.4178.002A.0002.6D1E][.41FB.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA05 +2F900 ; [.4186.0029.0002.6D3E][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F900 +F9CA ; [.417A.0025.0002.6D41][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9CA +FA97 ; [.417A.0025.0002.6D41][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA97 +2F902 ; [.417A.0025.0002.6D41][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F902 +2F903 ; [.4187.002E.0002.6D69][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F903 +F92A ; [.417A.0023.0002.6D6A][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F92A +FA45 ; [.4187.002A.0002.6D77][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA45 +2F901 ; [.4187.002A.0002.6D77][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F901 +2F904 ; [.4183.0025.0002.6D78][.4207.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F904 +2F905 ; [.4180.0022.0002.6D85][.41F9.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F905 +F9F5 ; [.417A.0022.0002.6DCB][.4207.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F5 +F94D ; [.417A.0025.0002.6DDA][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F94D +F9D6 ; [.417A.0024.0002.6DEA][.4204.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D6 +2F90E ; [.4180.0026.0002.6DF9][.41F7.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F90E +FA46 ; [.4181.002C.0002.6E1A][.41F7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA46 +2F908 ; [.4187.002B.0002.6E2F][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F908 +2F909 ; [.4180.002B.0002.6E6E][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F909 +F9CB ; [.417A.0026.0002.6E9C][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9CB +F9EC ; [.4177.0022.0002.6EBA][.4207.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9EC +FA99 ; [.4181.002B.0002.6ECB][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA99 +2F90B ; [.4181.002B.0002.6ECB][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F90B +F904 ; [.4187.0022.0002.6ED1][.41FC.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F904 +F94E ; [.417A.0026.0002.6F0F][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F94E +FA47 ; [.4187.0026.0002.6F22][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA47 +FA9A ; [.4187.0026.0002.6F22][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA9A +F992 ; [.417A.0024.0002.6F23][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F992 +2F90F ; [.4181.0033.0002.6F6E][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F90F +2F912 ; [.417C.003C.0002.6FC6][.4200.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F912 +F922 ; [.417A.0025.0002.6FEB][.41F3.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F922 +F984 ; [.417A.002A.0002.6FFE][.41F9.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F984 +2F915 ; [.4180.002D.0002.701B][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F915 +FA9B ; [.4181.003D.0002.701E][.41F7.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA9B +2F914 ; [.4181.003D.0002.701E][.41F7.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F914 +2F835 ; [.4187.002D.0002.7070][.41FE.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F835 +2F918 ; [.4181.002B.0002.707D][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F918 +F9FB ; [.4181.002C.0002.7099][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9FB +2F91A ; [.4185.0028.0002.70AD][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F91A +F99F ; [.417A.0025.0002.70C8][.41F9.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F99F +F916 ; [.417A.0022.0002.70D9][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F916 +F993 ; [.417A.0025.0002.7149][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F993 +FA48 ; [.4181.002D.0002.716E][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA48 +FA9C ; [.4181.002D.0002.716E][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA9C +F9C0 ; [.417A.0026.0002.71CE][.41FF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C0 +F9EE ; [.417A.0023.0002.71D0][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9EE +F932 ; [.417A.0027.0002.7210][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F932 +F91E ; [.417A.0026.0002.721B][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F91E +2F920 ; [.4183.0036.0002.7228][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F920 +FA9E ; [.4181.0028.0002.7235][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA9E +2F921 ; [.4181.0028.0002.7235][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F921 +F946 ; [.417A.0023.0002.7262][.41FE.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F946 +2F924 ; [.417E.0030.0002.7280][.41F7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F924 +FA9F ; [.417C.0027.0002.72AF][.41F7.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA9F +F9FA ; [.417E.0035.0002.72C0][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9FA +F92B ; [.417A.0024.0002.72FC][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F92B +FA16 ; [.4181.002E.0002.732A][.41F7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA16 +FAA0 ; [.4181.002E.0002.732A][.41F7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAA0 +F9A7 ; [.417A.0021.0002.7375][.41F9.0020.0002][.4261.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A7 +2F928 ; [.4178.0023.0002.737A][.41F3.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F928 +F961 ; [.417E.0021.0002.7387][.41FB.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F961 +F9DB ; [.417E.0021.0002.7387][.41FB.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9DB +2F929 ; [.4180.0025.0002.738B][.41FC.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F929 +F9AD ; [.417A.0027.0002.73B2][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9AD +F917 ; [.417A.0023.0002.73DE][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F917 +F9E4 ; [.417A.002D.0002.7406][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E4 +F9CC ; [.417A.0028.0002.7409][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9CC +FA4A ; [.4185.002B.0002.7422][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA4A +2F92F ; [.4180.003D.0002.745C][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F92F +F9AE ; [.4187.002D.0002.7469][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9AE +FAA1 ; [.4181.0057.0002.7471][.41F7.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAA1 +2F930 ; [.4181.0057.0002.7471][.41F7.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F930 +F994 ; [.417A.0026.0002.7489][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F994 +F9EF ; [.417A.0024.0002.7498][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9EF +2F932 ; [.4175.003A.0002.74CA][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F932 +F9CD ; [.417A.002A.0002.7559][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9CD +F976 ; [.417A.0022.0002.7565][.41F5.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F976 +F962 ; [.4180.002C.0002.7570][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F962 +2F938 ; [.4180.002C.0002.7570][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F938 +F9E5 ; [.417A.002F.0002.75E2][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E5 +2F93A ; [.4180.0059.0002.7610][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F93A +FAA5 ; [.4180.0023.0002.761F][.41FB.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAA5 +F9C1 ; [.417A.0027.0002.7642][.41FF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C1 +F90E ; [.417A.0023.0002.7669][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F90E +FA17 ; [.4180.0022.0002.76CA][.4207.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA17 +FAA6 ; [.4180.0022.0002.76CA][.4207.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAA6 +FAA7 ; [.417E.002B.0002.76DB][.41F7.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAA7 +F933 ; [.417A.0028.0002.76E7][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F933 +FAA8 ; [.4181.0021.0002.76F4][.4207.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAA8 +2F940 ; [.4181.0021.0002.76F4][.4207.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F940 +F96D ; [.417E.002C.0002.7701][.41F7.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F96D +2F945 ; [.4181.0033.0002.771E][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F945 +FAAA ; [.4183.0023.0002.7740][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAAA +2F94A ; [.4181.0034.0002.778B][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F94A +F9CE ; [.417A.002C.0002.786B][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9CE +F93B ; [.417A.0021.0002.788C][.41FB.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F93B +2F94F ; [.417A.0021.0002.788C][.41FB.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F94F +FA4B ; [.417C.0038.0002.7891][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA4B +F947 ; [.417A.0024.0002.78CA][.41FE.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F947 +F964 ; [.417C.0032.0002.78FB][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F964 +F985 ; [.417A.002B.0002.792A][.41F9.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F985 +FA4C ; [.417E.0046.0002.793E][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA4C +FA4E ; [.4175.004C.0002.7948][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA4E +FA4D ; [.4181.0035.0002.7949][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA4D +FA4F ; [.4180.0032.0002.7950][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA4F +FA50 ; [.4181.0039.0002.7956][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA50 +2F953 ; [.4181.0039.0002.7956][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F953 +FA51 ; [.4183.0023.0002.795D][.4200.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA51 +FA19 ; [.417E.002C.0002.795E][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA19 +FA1A ; [.417E.0037.0002.7965][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA1A +F93C ; [.417A.0022.0002.797F][.41FB.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F93C +FA52 ; [.4187.0027.0002.798D][.41FC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA52 +FA53 ; [.4181.0044.0002.798E][.41F7.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA53 +FA1B ; [.417C.0028.0002.798F][.41FB.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA1B +2F956 ; [.417C.0028.0002.798F][.41FB.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F956 +F9B6 ; [.417A.0023.0002.79AE][.41FA.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B6 +F995 ; [.4177.0023.0002.79CA][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F995 +2F957 ; [.4183.0024.0002.79EB][.4200.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F957 +F956 ; [.417A.0023.0002.7A1C][.4205.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F956 +FA54 ; [.4175.0025.0002.7A40][.41FB.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA54 +2F959 ; [.4175.0025.0002.7A40][.41FB.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F959 +FA55 ; [.4178.0022.0002.7A81][.41FB.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA55 +F9F7 ; [.417A.0022.0002.7ACB][.4207.0020.0002][.4261.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F7 +F9F8 ; [.417A.0023.0002.7B20][.4207.0020.0002][.4261.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F8 +FA56 ; [.4181.0027.0002.7BC0][.41F7.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA56 +FAAD ; [.4181.0027.0002.7BC0][.41F7.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAAD +2F962 ; [.4181.003D.0002.7BC6][.41F7.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F962 +2F963 ; [.4183.0026.0002.7BC9][.4200.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F963 +F9A6 ; [.417A.0025.0002.7C3E][.41F9.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A6 +F944 ; [.417A.0026.0002.7C60][.41FB.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F944 +F9F9 ; [.417A.0024.0002.7C92][.4207.0020.0002][.4261.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F9 +FA1D ; [.4181.0047.0002.7CBE][.41F7.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA1D +FA03 ; [.4178.0029.0002.7CD6][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA03 +F97B ; [.417A.0029.0002.7CE7][.41F5.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F97B +2F96A ; [.4175.004F.0002.7D00][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F96A +F9CF ; [.4177.0022.0002.7D10][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9CF +F96A ; [.417E.0023.0002.7D22][.41F4.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F96A +F94F ; [.417A.0028.0002.7D2F][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F94F +FAAF ; [.4181.0063.0002.7D5B][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAAF +2F96C ; [.417C.0034.0002.7D63][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F96C +F93D ; [.417A.0023.0002.7DA0][.41FB.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F93D +F957 ; [.417A.0024.0002.7DBE][.4205.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F957 +2F96E ; [.4183.0030.0002.7DC7][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F96E +F996 ; [.417A.0027.0002.7DF4][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F996 +FA57 ; [.417A.0027.0002.7DF4][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA57 +FAB0 ; [.417A.0027.0002.7DF4][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB0 +FA58 ; [.4181.0036.0002.7E09][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA58 +F950 ; [.417A.0029.0002.7E37][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F950 +FA59 ; [.417C.0026.0002.7E41][.41F7.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA59 +2F970 ; [.417E.0052.0002.7E45][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F970 +FAB1 ; [.417C.0035.0002.7F3E][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB1 +FA5A ; [.417E.0035.0002.7F72][.41F7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA5A +F9E6 ; [.417A.0031.0002.7F79][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E6 +F90F ; [.417A.0024.0002.7F85][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F90F +F9AF ; [.417A.0029.0002.7F9A][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9AF +FA1E ; [.4180.0036.0002.7FBD][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA1E +2F979 ; [.4175.005A.0002.7FFA][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F979 +F934 ; [.417A.0029.0002.8001][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F934 +FA5B ; [.4181.0033.0002.8005][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA5B +FAB2 ; [.4181.0033.0002.8005][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB2 +2F97A ; [.4181.0033.0002.8005][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F97A +F9B0 ; [.417A.002B.0002.8046][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B0 +F997 ; [.417A.0028.0002.806F][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F997 +2F97F ; [.4183.0028.0002.8070][.41FB.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F97F +F945 ; [.417A.0027.0002.807E][.41FB.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F945 +F953 ; [.417A.0022.0002.808B][.4205.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F953 +2F8D6 ; [.4177.0023.0002.80AD][.4200.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F8D6 +2F982 ; [.4180.0024.0002.80B2][.4204.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F982 +2F985 ; [.417C.003F.0002.813E][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F985 +F926 ; [.417A.0022.0002.81D8][.41F3.0020.0002][.4261.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F926 +F9F6 ; [.417A.0024.0002.81E8][.4207.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F6 +FA5C ; [.4183.002A.0002.81ED][.4203.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA5C +2F893 ; [.4180.002E.0002.8201][.41F9.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F893 +2F98B ; [.4180.002E.0002.8201][.41F9.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F98B +F97C ; [.417A.002A.0002.826F][.41F5.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F97C +2F990 ; [.4180.0037.0002.828B][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F990 +2F991 ; [.4181.003B.0002.829D][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F991 +2F993 ; [.4187.0029.0002.82B1][.41FC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F993 +2F994 ; [.417C.0035.0002.82B3][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F994 +2F995 ; [.4180.0029.0002.82BD][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F995 +F974 ; [.4180.0023.0002.82E5][.41F5.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F974 +2F998 ; [.4180.0023.0002.82E5][.41F5.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F998 +2F996 ; [.4175.003A.0002.82E6][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F996 +2F999 ; [.4183.002E.0002.831D][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F999 +2F99C ; [.4180.004C.0002.8323][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F99C +F9FE ; [.4178.0022.0002.8336][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9FE +FAB3 ; [.4187.0034.0002.8352][.41FC.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB3 +2F99D ; [.417B.002A.0002.83BD][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F99D +F93E ; [.417A.0024.0002.83C9][.41FB.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F93E +2F9A1 ; [.4175.0023.0002.83CA][.4200.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9A1 +2F9A2 ; [.4175.0025.0002.83CC][.4204.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9A2 +2F9A3 ; [.4183.0029.0002.83DC][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9A3 +FAB4 ; [.4187.002A.0002.83EF][.41FC.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB4 +F958 ; [.417A.0025.0002.83F1][.4205.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F958 +F918 ; [.417A.0025.0002.843D][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F918 +F96E ; [.4180.0023.0002.8449][.41F9.0020.0002][.4261.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F96E +FA5F ; [.4181.0034.0002.8457][.41F7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA5F +2F99F ; [.4181.0034.0002.8457][.41F7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F99F +F999 ; [.417A.0029.0002.84EE][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F999 +2F9A8 ; [.4186.002A.0002.84F1][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9A8 +F9C2 ; [.417A.002A.0002.84FC][.41FF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C2 +2F9AC ; [.4180.0062.0002.8564][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9AC +F923 ; [.417A.0028.0002.85CD][.41F3.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F923 +F9F0 ; [.417A.0025.0002.85FA][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F0 +F935 ; [.417A.002A.0002.8606][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F935 +F91F ; [.417A.0027.0002.862D][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F91F +F910 ; [.417A.0025.0002.863F][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F910 +2F9B3 ; [.4187.0023.0002.8650][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9B3 +F936 ; [.417A.002B.0002.865C][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F936 +2F9B4 ; [.417A.002B.0002.865C][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9B4 +2F9B5 ; [.4187.0025.0002.8667][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9B5 +2F9B7 ; [.4183.0034.0002.86A9][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9B7 +2F9BC ; [.4181.0026.0002.8728][.41F7.0020.0002][.4261.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9BC +F911 ; [.417A.0026.0002.87BA][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F911 +F927 ; [.417A.0023.0002.881F][.41F3.0020.0002][.4261.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F927 +FA08 ; [.4187.0025.0002.884C][.41F4.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA08 +2F9C4 ; [.4180.0030.0002.8863][.4206.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9C4 +F9A0 ; [.417A.0026.0002.88C2][.41F9.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A0 +F9E7 ; [.417A.0034.0002.88CF][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E7 +F9E8 ; [.417A.0035.0002.88E1][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E8 +F912 ; [.417A.0027.0002.88F8][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F912 +FA60 ; [.4175.0028.0002.8910][.41F3.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA60 +FAB6 ; [.4175.0034.0002.8941][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB6 +F924 ; [.417A.0029.0002.8964][.41F3.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F924 +FAB7 ; [.417C.002D.0002.8986][.41FB.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB7 +FA0A ; [.4175.0028.0002.898B][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA0A +FA61 ; [.417E.0037.0002.8996][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA61 +FAB8 ; [.417E.0037.0002.8996][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB8 +2F9CF ; [.417E.0031.0002.8AA0][.41F7.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9CF +F96F ; [.417E.002B.0002.8AAA][.41F7.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F96F +F9A1 ; [.417E.002B.0002.8AAA][.41F7.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9A1 +FAB9 ; [.4181.0046.0002.8ABF][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAB9 +FABB ; [.4183.0026.0002.8ACB][.41F7.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FABB +F97D ; [.417A.002B.0002.8AD2][.41F5.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F97D +F941 ; [.417A.0021.0002.8AD6][.41FB.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F941 +FABE ; [.4180.0046.0002.8AED][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FABE +2F9D0 ; [.4180.0046.0002.8AED][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9D0 +FA22 ; [.4181.0030.0002.8AF8][.41F8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA22 +FABA ; [.4181.0030.0002.8AF8][.41F8.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FABA +F95D ; [.4177.0021.0002.8AFE][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F95D +FABD ; [.4177.0021.0002.8AFE][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FABD +FA62 ; [.4180.0022.0002.8B01][.41F3.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA62 +FABC ; [.4180.0022.0002.8B01][.41F3.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FABC +FA63 ; [.4175.002D.0002.8B39][.4205.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA63 +FABF ; [.4175.002D.0002.8B39][.4205.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FABF +F9FC ; [.417E.002C.0002.8B58][.4207.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9FC +F95A ; [.4178.002A.0002.8B80][.41FB.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F95A +FAC0 ; [.417C.0023.0002.8B8A][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAC0 +2F9D1 ; [.417C.0023.0002.8B8A][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9D1 +F900 ; [.4175.0057.0002.8C48][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F900 +2F9D2 ; [.417E.003B.0002.8C55][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9D2 +2F9D4 ; [.4175.002E.0002.8CAB][.41FC.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9D4 +2F9D5 ; [.417C.0032.0002.8CC1][.4200.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9D5 +F948 ; [.417A.0025.0002.8CC2][.41FE.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F948 +F903 ; [.4175.0039.0002.8CC8][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F903 +FA64 ; [.417C.002D.0002.8CD3][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA64 +FA65 ; [.4181.002B.0002.8D08][.4205.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA65 +FAC1 ; [.4181.002B.0002.8D08][.4205.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAC1 +2F9D6 ; [.4175.0039.0002.8D1B][.41FB.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9D6 +2F9D7 ; [.4175.0058.0002.8D77][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9D7 +2F9DA ; [.417C.0027.0002.8DCB][.41F3.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9DA +F937 ; [.417A.002C.0002.8DEF][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F937 +F902 ; [.4183.002D.0002.8ECA][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F902 +F998 ; [.417A.002A.0002.8F26][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F998 +F9D7 ; [.417A.0026.0002.8F2A][.4204.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D7 +FAC2 ; [.417E.004F.0002.8F38][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAC2 +2F9DF ; [.417E.004F.0002.8F38][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9DF +FA07 ; [.417C.002F.0002.8F3B][.41FB.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA07 +F98D ; [.417A.0026.0002.8F62][.41F9.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F98D +F971 ; [.4181.003E.0002.8FB0][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F971 +F99A ; [.417A.002B.0002.9023][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F99A +FA25 ; [.4180.0027.0002.9038][.4207.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA25 +FA67 ; [.4180.0027.0002.9038][.4207.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA67 +FAC3 ; [.4181.0041.0002.9072][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAC3 +F9C3 ; [.417A.002B.0002.907C][.41FF.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C3 +F913 ; [.417A.0028.0002.908F][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F913 +FA2E ; [.417A.0028.0002.90DE][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA2E +FA26 ; [.4178.0045.0002.90FD][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA26 +F919 ; [.417A.0026.0002.916A][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F919 +F9B7 ; [.417A.0024.0002.91B4][.41FA.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B7 +F9E9 ; [.417A.0036.0002.91CC][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9E9 +F97E ; [.417A.002D.0002.91CF][.41F5.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F97E +F90A ; [.4175.0021.0002.91D1][.4207.0020.0002][.4260.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F90A +F9B1 ; [.417A.002D.0002.9234][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B1 +2F9E7 ; [.417C.002F.0002.9238][.41F3.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9E7 +2F9EA ; [.417C.0039.0002.927C][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9EA +2F9E8 ; [.4187.003F.0002.92D7][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9E8 +F93F ; [.417A.0025.0002.9304][.41FB.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F93F +F99B ; [.417A.002C.0002.934A][.41F9.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F99B +2F9EE ; [.4175.0033.0002.958B][.41F4.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9EE +F986 ; [.417A.002E.0002.95AD][.41F9.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F986 +F9C6 ; [.4180.0031.0002.962E][.41FC.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C6 +F951 ; [.417A.002D.0002.964B][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F951 +FA09 ; [.4175.0037.0002.964D][.41F3.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA09 +F959 ; [.417A.0026.0002.9675][.4205.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F959 +F9D3 ; [.417A.0023.0002.9678][.4204.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D3 +FAC6 ; [.4181.004E.0002.967C][.41F7.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAC6 +F9DC ; [.417A.0021.0002.9686][.4204.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9DC +F9F1 ; [.417A.0027.0002.96A3][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F1 +FA2F ; [.417A.0025.0002.96B7][.41FA.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA2F +F9B8 ; [.417A.0026.0002.96B8][.41FA.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B8 +F9EA ; [.417A.0038.0002.96E2][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9EA +FA68 ; [.4177.0023.0002.96E3][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA68 +FAC7 ; [.4177.0023.0002.96E3][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAC7 +F9B2 ; [.417A.002E.0002.96F6][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B2 +F949 ; [.417A.0028.0002.96F7][.41FE.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F949 +2F9F5 ; [.4180.0031.0002.9723][.4200.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9F5 +F938 ; [.417A.002E.0002.9732][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F938 +F9B3 ; [.417A.002F.0002.9748][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B3 +FA1C ; [.4181.0054.0002.9756][.41F7.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA1C +FAC8 ; [.4181.0054.0002.9756][.41F7.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAC8 +2F9FA ; [.4186.0034.0002.97E0][.4207.0020.0002][.4258.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2F9FA +FA69 ; [.4187.0026.0002.97FF][.41F5.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA69 +FACA ; [.4187.0026.0002.97FF][.41F5.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FACA +F9B4 ; [.417A.0030.0002.9818][.41F9.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9B4 +FA6A ; [.417C.002E.0002.983B][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA6A +FACC ; [.417C.002E.0002.983B][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FACC +F9D0 ; [.417A.002E.0002.985E][.4204.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9D0 +2FA02 ; [.4175.005B.0002.98E2][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2FA02 +FA2A ; [.417C.0039.0002.98EF][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA2A +FA2B ; [.417E.005A.0002.98FC][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA2B +FA2C ; [.4175.0030.0002.9928][.41FC.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA2C +F91A ; [.417A.0027.0002.99F1][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F91A +F987 ; [.417A.0030.0002.9A6A][.41F9.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F987 +FACD ; [.4181.004C.0002.9B12][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FACD +2FA0A ; [.4181.004C.0002.9B12][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2FA0A +F939 ; [.417A.002F.0002.9B6F][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F939 +F9F2 ; [.417A.0028.0002.9C57][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F2 +FA2D ; [.4187.0025.0002.9DB4][.41F3.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA2D +F93A ; [.417A.0030.0002.9DFA][.41FB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F93A +F920 ; [.417A.0028.0002.9E1E][.41F3.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F920 +F940 ; [.417A.0026.0002.9E7F][.41FB.0020.0002][.4251.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F940 +F988 ; [.417A.0031.0002.9E97][.41F9.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F988 +F9F3 ; [.417A.0029.0002.9E9F][.4207.0020.0002][.4254.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9F3 +2FA15 ; [.417B.0028.0002.9EBB][.41F3.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2FA15 +F989 ; [.417A.0032.0002.9ECE][.41F9.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F989 +2FA1C ; [.417C.004A.0002.9F3B][.4207.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-2FA1C +F9C4 ; [.417A.0021.0002.9F8D][.41FF.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F9C4 +FAD9 ; [.417A.002E.0002.9F8E][.41FB.0020.0002][.4265.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FAD9 +F907 ; [.4175.0056.0002.9F9C][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F907 +F908 ; [.4175.0056.0002.9F9C][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F908 +FACE ; [.4175.0056.0002.9F9C][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FACE ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/lkt.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/lkt.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/lkt.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/lkt.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,25 +1,25 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -010D ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON -0063 030C ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON -010C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0043 030C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -01E7 ; [.1D5B.0020.0002] # LATIN SMALL LETTER G WITH CARON -0067 030C ; [.1D5B.0020.0002] # LATIN SMALL LETTER G WITH CARON -01E6 ; [.1D5B.0020.0008] # LATIN CAPITAL LETTER G WITH CARON -0047 030C ; [.1D5B.0020.0008] # LATIN CAPITAL LETTER G WITH CARON -021F ; [.1D7F.0020.0002] # LATIN SMALL LETTER H WITH CARON -0068 030C ; [.1D7F.0020.0002] # LATIN SMALL LETTER H WITH CARON -021E ; [.1D7F.0020.0008] # LATIN CAPITAL LETTER H WITH CARON -0048 030C ; [.1D7F.0020.0008] # LATIN CAPITAL LETTER H WITH CARON -0161 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0073 030C ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0160 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -0053 030C ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -017E ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON -007A 030C ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON -017D ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON -005A 030C ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +010D ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON +0063 030C ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON +010C ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0043 030C ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +01E7 ; [.2052.0020.0002] # LATIN SMALL LETTER G WITH CARON +0067 030C ; [.2052.0020.0002] # LATIN SMALL LETTER G WITH CARON +01E6 ; [.2052.0020.0008] # LATIN CAPITAL LETTER G WITH CARON +0047 030C ; [.2052.0020.0008] # LATIN CAPITAL LETTER G WITH CARON +021F ; [.2076.0020.0002] # LATIN SMALL LETTER H WITH CARON +0068 030C ; [.2076.0020.0002] # LATIN SMALL LETTER H WITH CARON +021E ; [.2076.0020.0008] # LATIN CAPITAL LETTER H WITH CARON +0048 030C ; [.2076.0020.0008] # LATIN CAPITAL LETTER H WITH CARON +0161 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0073 030C ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0160 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +0053 030C ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +017E ; [.2287.0020.0002] # LATIN SMALL LETTER Z WITH CARON +007A 030C ; [.2287.0020.0002] # LATIN SMALL LETTER Z WITH CARON +017D ; [.2287.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON +005A 030C ; [.2287.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ln.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ln.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ln.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ln.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,12 +1,12 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -025B ; [.1D11.0020.0002] # LATIN SMALL LETTER OPEN E -0190 ; [.1D11.0020.0008] # LATIN CAPITAL LETTER OPEN E -2107 ; [.1D11.0020.000A] # EULER CONSTANT -1D4B ; [.1D11.0020.0014] # MODIFIER LETTER SMALL OPEN E -0254 ; [.1E43.0021.0002] # LATIN SMALL LETTER OPEN O -0186 ; [.1E43.0021.0008] # LATIN CAPITAL LETTER OPEN O -1D53 ; [.1E43.0021.0014] # MODIFIER LETTER SMALL OPEN O + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +025B ; [.2008.0020.0002] # LATIN SMALL LETTER OPEN E +0190 ; [.2008.0020.0008] # LATIN CAPITAL LETTER OPEN E +2107 ; [.2008.0020.000A] # EULER CONSTANT +1D4B ; [.2008.0020.0014] # MODIFIER LETTER SMALL OPEN E +0254 ; [.213C.0021.0002] # LATIN SMALL LETTER OPEN O +0186 ; [.213C.0021.0008] # LATIN CAPITAL LETTER OPEN O +1D53 ; [.213C.0021.0014] # MODIFIER LETTER SMALL OPEN O ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/lt.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/lt.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/lt.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/lt.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,48 +1,48 @@ +{ - locale_version => 1.27, + locale_version => 1.29, # in cldr test/lt.xml why I-dot-acute > I-dot though i-dot-acute < i-dot ? - entry => <<'ENTRY', # for DUCET v10.0.0 -0049 0307 ; [.1D98.0020.0008][.0000.002E.0002] # + entry => <<'ENTRY', # for DUCET v13.0.0 +0049 0307 ; [.2090.0020.0008][.0000.002E.0002] # 0307 0300 ; [.0000.0025.0002] # 0307 0301 ; [.0000.0024.0002] # 0307 0303 ; [.0000.002D.0002] # -0105 ; [.1CAD.0021.0002] # LATIN SMALL LETTER A WITH OGONEK -0061 0328 ; [.1CAD.0021.0002] # LATIN SMALL LETTER A WITH OGONEK -0104 ; [.1CAD.0021.0008] # LATIN CAPITAL LETTER A WITH OGONEK -0041 0328 ; [.1CAD.0021.0008] # LATIN CAPITAL LETTER A WITH OGONEK -010D ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON -0063 030C ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON -010C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0043 030C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0119 ; [.1D10.0021.0002] # LATIN SMALL LETTER E WITH OGONEK -0065 0328 ; [.1D10.0021.0002] # LATIN SMALL LETTER E WITH OGONEK -0118 ; [.1D10.0021.0008] # LATIN CAPITAL LETTER E WITH OGONEK -0045 0328 ; [.1D10.0021.0008] # LATIN CAPITAL LETTER E WITH OGONEK -0117 ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH DOT ABOVE -0065 0307 ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH DOT ABOVE -0116 ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH DOT ABOVE -0045 0307 ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH DOT ABOVE -012F ; [.1D98.0021.0002] # LATIN SMALL LETTER I WITH OGONEK -0069 0328 ; [.1D98.0021.0002] # LATIN SMALL LETTER I WITH OGONEK -012E ; [.1D98.0021.0008] # LATIN CAPITAL LETTER I WITH OGONEK -0049 0328 ; [.1D98.0021.0008] # LATIN CAPITAL LETTER I WITH OGONEK -0079 ; [.1D98.0022.0002] # LATIN SMALL LETTER Y -0059 ; [.1D98.0022.0008] # LATIN CAPITAL LETTER Y -0161 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0073 030C ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0160 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -0053 030C ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -0173 ; [.1F1B.0021.0002] # LATIN SMALL LETTER U WITH OGONEK -0075 0328 ; [.1F1B.0021.0002] # LATIN SMALL LETTER U WITH OGONEK -0172 ; [.1F1B.0021.0008] # LATIN CAPITAL LETTER U WITH OGONEK -0055 0328 ; [.1F1B.0021.0008] # LATIN CAPITAL LETTER U WITH OGONEK -016B ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH MACRON -0075 0304 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH MACRON -016A ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH MACRON -0055 0304 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH MACRON -017E ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON -007A 030C ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON -017D ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON -005A 030C ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON +0105 ; [.1FA2.0021.0002] # LATIN SMALL LETTER A WITH OGONEK +0061 0328 ; [.1FA2.0021.0002] # LATIN SMALL LETTER A WITH OGONEK +0104 ; [.1FA2.0021.0008] # LATIN CAPITAL LETTER A WITH OGONEK +0041 0328 ; [.1FA2.0021.0008] # LATIN CAPITAL LETTER A WITH OGONEK +010D ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON +0063 030C ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON +010C ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0043 030C ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0119 ; [.2007.0021.0002] # LATIN SMALL LETTER E WITH OGONEK +0065 0328 ; [.2007.0021.0002] # LATIN SMALL LETTER E WITH OGONEK +0118 ; [.2007.0021.0008] # LATIN CAPITAL LETTER E WITH OGONEK +0045 0328 ; [.2007.0021.0008] # LATIN CAPITAL LETTER E WITH OGONEK +0117 ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH DOT ABOVE +0065 0307 ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH DOT ABOVE +0116 ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH DOT ABOVE +0045 0307 ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH DOT ABOVE +012F ; [.2090.0021.0002] # LATIN SMALL LETTER I WITH OGONEK +0069 0328 ; [.2090.0021.0002] # LATIN SMALL LETTER I WITH OGONEK +012E ; [.2090.0021.0008] # LATIN CAPITAL LETTER I WITH OGONEK +0049 0328 ; [.2090.0021.0008] # LATIN CAPITAL LETTER I WITH OGONEK +0079 ; [.2090.0022.0002] # LATIN SMALL LETTER Y +0059 ; [.2090.0022.0008] # LATIN CAPITAL LETTER Y +0161 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0073 030C ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0160 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +0053 030C ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +0173 ; [.2217.0021.0002] # LATIN SMALL LETTER U WITH OGONEK +0075 0328 ; [.2217.0021.0002] # LATIN SMALL LETTER U WITH OGONEK +0172 ; [.2217.0021.0008] # LATIN CAPITAL LETTER U WITH OGONEK +0055 0328 ; [.2217.0021.0008] # LATIN CAPITAL LETTER U WITH OGONEK +016B ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH MACRON +0075 0304 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH MACRON +016A ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH MACRON +0055 0304 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH MACRON +017E ; [.2287.0020.0002] # LATIN SMALL LETTER Z WITH CARON +007A 030C ; [.2287.0020.0002] # LATIN SMALL LETTER Z WITH CARON +017D ; [.2287.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON +005A 030C ; [.2287.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/lv.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/lv.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/lv.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/lv.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,37 +1,37 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -010D ; [.1CF4.0020.0002] # LATIN SMALL LETTER C WITH CARON -0063 030C ; [.1CF4.0020.0002] # LATIN SMALL LETTER C WITH CARON -010C ; [.1CF4.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0043 030C ; [.1CF4.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0123 ; [.1D7D.0020.0002] # LATIN SMALL LETTER G WITH CEDILLA -0067 0327 ; [.1D7D.0020.0002] # LATIN SMALL LETTER G WITH CEDILLA -0122 ; [.1D7D.0020.0008] # LATIN CAPITAL LETTER G WITH CEDILLA -0047 0327 ; [.1D7D.0020.0008] # LATIN CAPITAL LETTER G WITH CEDILLA -0137 ; [.1DDC.0020.0002] # LATIN SMALL LETTER K WITH CEDILLA -006B 0327 ; [.1DDC.0020.0002] # LATIN SMALL LETTER K WITH CEDILLA -0136 ; [.1DDC.0020.0008] # LATIN CAPITAL LETTER K WITH CEDILLA -004B 0327 ; [.1DDC.0020.0008] # LATIN CAPITAL LETTER K WITH CEDILLA -013C ; [.1E0F.0020.0002] # LATIN SMALL LETTER L WITH CEDILLA -006C 0327 ; [.1E0F.0020.0002] # LATIN SMALL LETTER L WITH CEDILLA -013B ; [.1E0F.0020.0008] # LATIN CAPITAL LETTER L WITH CEDILLA -004C 0327 ; [.1E0F.0020.0008] # LATIN CAPITAL LETTER L WITH CEDILLA -0146 ; [.1E42.0020.0002] # LATIN SMALL LETTER N WITH CEDILLA -006E 0327 ; [.1E42.0020.0002] # LATIN SMALL LETTER N WITH CEDILLA -0145 ; [.1E42.0020.0008] # LATIN CAPITAL LETTER N WITH CEDILLA -004E 0327 ; [.1E42.0020.0008] # LATIN CAPITAL LETTER N WITH CEDILLA -0157 ; [.1ED6.0020.0002] # LATIN SMALL LETTER R WITH CEDILLA -0072 0327 ; [.1ED6.0020.0002] # LATIN SMALL LETTER R WITH CEDILLA -0156 ; [.1ED6.0020.0008] # LATIN CAPITAL LETTER R WITH CEDILLA -0052 0327 ; [.1ED6.0020.0008] # LATIN CAPITAL LETTER R WITH CEDILLA -0161 ; [.1EFA.0020.0002] # LATIN SMALL LETTER S WITH CARON -0073 030C ; [.1EFA.0020.0002] # LATIN SMALL LETTER S WITH CARON -0160 ; [.1EFA.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -0053 030C ; [.1EFA.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -017E ; [.1FA3.0020.0002] # LATIN SMALL LETTER Z WITH CARON -007A 030C ; [.1FA3.0020.0002] # LATIN SMALL LETTER Z WITH CARON -017D ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON -005A 030C ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +010D ; [.1FEA.0020.0002] # LATIN SMALL LETTER C WITH CARON +0063 030C ; [.1FEA.0020.0002] # LATIN SMALL LETTER C WITH CARON +010C ; [.1FEA.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0043 030C ; [.1FEA.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0123 ; [.2074.0020.0002] # LATIN SMALL LETTER G WITH CEDILLA +0067 0327 ; [.2074.0020.0002] # LATIN SMALL LETTER G WITH CEDILLA +0122 ; [.2074.0020.0008] # LATIN CAPITAL LETTER G WITH CEDILLA +0047 0327 ; [.2074.0020.0008] # LATIN CAPITAL LETTER G WITH CEDILLA +0137 ; [.20D5.0020.0002] # LATIN SMALL LETTER K WITH CEDILLA +006B 0327 ; [.20D5.0020.0002] # LATIN SMALL LETTER K WITH CEDILLA +0136 ; [.20D5.0020.0008] # LATIN CAPITAL LETTER K WITH CEDILLA +004B 0327 ; [.20D5.0020.0008] # LATIN CAPITAL LETTER K WITH CEDILLA +013C ; [.2108.0020.0002] # LATIN SMALL LETTER L WITH CEDILLA +006C 0327 ; [.2108.0020.0002] # LATIN SMALL LETTER L WITH CEDILLA +013B ; [.2108.0020.0008] # LATIN CAPITAL LETTER L WITH CEDILLA +004C 0327 ; [.2108.0020.0008] # LATIN CAPITAL LETTER L WITH CEDILLA +0146 ; [.213B.0020.0002] # LATIN SMALL LETTER N WITH CEDILLA +006E 0327 ; [.213B.0020.0002] # LATIN SMALL LETTER N WITH CEDILLA +0145 ; [.213B.0020.0008] # LATIN CAPITAL LETTER N WITH CEDILLA +004E 0327 ; [.213B.0020.0008] # LATIN CAPITAL LETTER N WITH CEDILLA +0157 ; [.21D1.0020.0002] # LATIN SMALL LETTER R WITH CEDILLA +0072 0327 ; [.21D1.0020.0002] # LATIN SMALL LETTER R WITH CEDILLA +0156 ; [.21D1.0020.0008] # LATIN CAPITAL LETTER R WITH CEDILLA +0052 0327 ; [.21D1.0020.0008] # LATIN CAPITAL LETTER R WITH CEDILLA +0161 ; [.21F6.0020.0002] # LATIN SMALL LETTER S WITH CARON +0073 030C ; [.21F6.0020.0002] # LATIN SMALL LETTER S WITH CARON +0160 ; [.21F6.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +0053 030C ; [.21F6.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +017E ; [.22A2.0020.0002] # LATIN SMALL LETTER Z WITH CARON +007A 030C ; [.22A2.0020.0002] # LATIN SMALL LETTER Z WITH CARON +017D ; [.22A2.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON +005A 030C ; [.22A2.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/mk.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/mk.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/mk.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/mk.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,20 +1,20 @@ +{ - locale_version => 1.27, + locale_version => 1.29, suppress => [0x0418, 0x0438], - entry => <<'ENTRY', # for DUCET v10.0.0 -0453 ; [.20BC.0020.0002] # CYRILLIC SMALL LETTER GJE -0433 0301 ; [.20BC.0020.0002] # CYRILLIC SMALL LETTER GJE -0433 0341 ; [.20BC.0020.0002] # CYRILLIC SMALL LETTER GJE -0403 ; [.20BC.0020.0008] # CYRILLIC CAPITAL LETTER GJE -0413 0301 ; [.20BC.0020.0008] # CYRILLIC CAPITAL LETTER GJE -0413 0341 ; [.20BC.0020.0008] # CYRILLIC CAPITAL LETTER GJE -045C ; [.2180.0020.0002] # CYRILLIC SMALL LETTER KJE -043A 0301 ; [.2180.0020.0002] # CYRILLIC SMALL LETTER KJE -043A 0341 ; [.2180.0020.0002] # CYRILLIC SMALL LETTER KJE -040C ; [.2180.0020.0008] # CYRILLIC CAPITAL LETTER KJE -041A 0301 ; [.2180.0020.0008] # CYRILLIC CAPITAL LETTER KJE -041A 0341 ; [.2180.0020.0008] # CYRILLIC CAPITAL LETTER KJE -0439 ; [.20E6.0020.0002][.0000.0026.0002] # CYRILLIC SMALL LETTER SHORT I -0419 ; [.20E6.0020.0008][.0000.0026.0002] # CYRILLIC CAPITAL LETTER SHORT I + entry => <<'ENTRY', # for DUCET v13.0.0 +0453 ; [.23BB.0020.0002] # CYRILLIC SMALL LETTER GJE +0433 0301 ; [.23BB.0020.0002] # CYRILLIC SMALL LETTER GJE +0433 0341 ; [.23BB.0020.0002] # CYRILLIC SMALL LETTER GJE +0403 ; [.23BB.0020.0008] # CYRILLIC CAPITAL LETTER GJE +0413 0301 ; [.23BB.0020.0008] # CYRILLIC CAPITAL LETTER GJE +0413 0341 ; [.23BB.0020.0008] # CYRILLIC CAPITAL LETTER GJE +045C ; [.247F.0020.0002] # CYRILLIC SMALL LETTER KJE +043A 0301 ; [.247F.0020.0002] # CYRILLIC SMALL LETTER KJE +043A 0341 ; [.247F.0020.0002] # CYRILLIC SMALL LETTER KJE +040C ; [.247F.0020.0008] # CYRILLIC CAPITAL LETTER KJE +041A 0301 ; [.247F.0020.0008] # CYRILLIC CAPITAL LETTER KJE +041A 0341 ; [.247F.0020.0008] # CYRILLIC CAPITAL LETTER KJE +0439 ; [.23E5.0020.0002][.0000.0026.0002] # CYRILLIC SMALL LETTER SHORT I +0419 ; [.23E5.0020.0008][.0000.0026.0002] # CYRILLIC CAPITAL LETTER SHORT I ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ml.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ml.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ml.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ml.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,23 +1,23 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 0D3D ; [.0000.00C6.0002] # MALAYALAM SIGN AVAGRAHA -0D57 ; [.293F.0020.0002] # MALAYALAM AU LENGTH MARK -0D4C ; [.293F.0020.0003] # MALAYALAM VOWEL SIGN AU -0D46 0D57 ; [.293F.0020.0003] # MALAYALAM VOWEL SIGN AU -0D15 0D4D 200D ; [.290A.0020.0002][.2941.0021.0002] # -0D7F ; [.290A.0020.0003][.2941.0021.0002] # MALAYALAM LETTER CHILLU K -0D23 0D4D 200D ; [.2918.0020.0002][.2941.0021.0002] # -0D7A ; [.2918.0020.0003][.2941.0021.0002] # MALAYALAM LETTER CHILLU NN -0D28 0D4D 200D ; [.291D.0020.0002][.2941.0021.0002] # -0D7B ; [.291D.0020.0003][.2941.0021.0002] # MALAYALAM LETTER CHILLU N -0D30 0D4D 200D ; [.2925.0020.0002][.2941.0021.0002] # -0D7C ; [.2925.0020.0003][.2941.0021.0002] # MALAYALAM LETTER CHILLU RR -0D32 0D4D 200D ; [.2926.0020.0002][.2941.0021.0002] # -0D7D ; [.2926.0020.0003][.2941.0021.0002] # MALAYALAM LETTER CHILLU L -0D33 0D4D 200D ; [.292C.0020.0002][.2941.0021.0002] # -0D7E ; [.292C.0020.0003][.2941.0021.0002] # MALAYALAM LETTER CHILLU LL -0D02 ; [.2923.0020.0002][.2941.0021.0002] # MALAYALAM SIGN ANUSVARA -0D7B 0D4D ; [.291D.0020.0002][.2941.0020.0003] # +0D57 ; [.2C4D.0020.0002] # MALAYALAM AU LENGTH MARK +0D4C ; [.2C4D.0020.0003] # MALAYALAM VOWEL SIGN AU +0D46 0D57 ; [.2C4D.0020.0003] # MALAYALAM VOWEL SIGN AU +0D15 0D4D 200D ; [.2C17.0020.0002][.2C4F.0021.0002] # +0D7F ; [.2C17.0020.0003][.2C4F.0021.0002] # MALAYALAM LETTER CHILLU K +0D23 0D4D 200D ; [.2C25.0020.0002][.2C4F.0021.0002] # +0D7A ; [.2C25.0020.0003][.2C4F.0021.0002] # MALAYALAM LETTER CHILLU NN +0D28 0D4D 200D ; [.2C2A.0020.0002][.2C4F.0021.0002] # +0D7B ; [.2C2A.0020.0003][.2C4F.0021.0002] # MALAYALAM LETTER CHILLU N +0D30 0D4D 200D ; [.2C32.0020.0002][.2C4F.0021.0002] # +0D7C ; [.2C32.0020.0003][.2C4F.0021.0002] # MALAYALAM LETTER CHILLU RR +0D32 0D4D 200D ; [.2C33.0020.0002][.2C4F.0021.0002] # +0D7D ; [.2C33.0020.0003][.2C4F.0021.0002] # MALAYALAM LETTER CHILLU L +0D33 0D4D 200D ; [.2C39.0020.0002][.2C4F.0021.0002] # +0D7E ; [.2C39.0020.0003][.2C4F.0021.0002] # MALAYALAM LETTER CHILLU LL +0D02 ; [.2C30.0020.0002][.2C4F.0021.0002] # MALAYALAM SIGN ANUSVARA +0D7B 0D4D ; [.2C2A.0020.0002][.2C4F.0020.0003] # ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/mr.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/mr.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/mr.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/mr.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,14 +1,14 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0902 ; [.26CC.0020.0002][.FFF1.0000.0000] # DEVANAGARI SIGN ANUSVARA -0901 ; [.26CC.0021.0002][.FFF1.0000.0000] # DEVANAGARI SIGN CANDRABINDU -0903 ; [.26CC.0020.0002][.FFF2.0000.0000] # DEVANAGARI SIGN VISARGA -0950 ; [.26CC.0020.0002][.FFF0.0000.0000] # DEVANAGARI OM -0933 ; [.270F.0020.0002][.FFF1.0000.0000] # DEVANAGARI LETTER LLA -0934 ; [.270F.0020.0002][.FFF1.0000.0000][.0000.00C2.0002] # DEVANAGARI LETTER LLLA -0915 094D 0937 ; [.270F.0020.0002][.FFF2.0000.0000] # -091C 094D 091E ; [.270F.0020.0002][.FFF3.0000.0000] # -0939 ; [.270F.0020.0002][.FFF0.0000.0000] # DEVANAGARI LETTER HA + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0902 ; [.29D7.0020.0002][.FFF1.0000.0000] # DEVANAGARI SIGN ANUSVARA +0901 ; [.29D7.0021.0002][.FFF1.0000.0000] # DEVANAGARI SIGN CANDRABINDU +0903 ; [.29D7.0020.0002][.FFF2.0000.0000] # DEVANAGARI SIGN VISARGA +0950 ; [.29D7.0020.0002][.FFF0.0000.0000] # DEVANAGARI OM +0933 ; [.2A1B.0020.0002][.FFF1.0000.0000] # DEVANAGARI LETTER LLA +0934 ; [.2A1B.0020.0002][.FFF1.0000.0000][.0000.00C2.0002] # DEVANAGARI LETTER LLLA +0915 094D 0937 ; [.2A1B.0020.0002][.FFF2.0000.0000] # +091C 094D 091E ; [.2A1B.0020.0002][.FFF3.0000.0000] # +0939 ; [.2A1B.0020.0002][.FFF0.0000.0000] # DEVANAGARI LETTER HA ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/mt.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/mt.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/mt.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/mt.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,31 +1,31 @@ +{ - locale_version => 1.27, + locale_version => 1.29, upper_before_lower => 1, - entry => <<'ENTRY', # for DUCET v10.0.0 -010B ; [.1CDF.0020.0002] # LATIN SMALL LETTER C WITH DOT ABOVE -0063 0307 ; [.1CDF.0020.0002] # LATIN SMALL LETTER C WITH DOT ABOVE -010A ; [.1CDF.0020.0008] # LATIN CAPITAL LETTER C WITH DOT ABOVE -0043 0307 ; [.1CDF.0020.0008] # LATIN CAPITAL LETTER C WITH DOT ABOVE -0121 ; [.1D59.0020.0002] # LATIN SMALL LETTER G WITH DOT ABOVE -0067 0307 ; [.1D59.0020.0002] # LATIN SMALL LETTER G WITH DOT ABOVE -0120 ; [.1D59.0020.0008] # LATIN CAPITAL LETTER G WITH DOT ABOVE -0047 0307 ; [.1D59.0020.0008] # LATIN CAPITAL LETTER G WITH DOT ABOVE -0067 0127 ; [.1D7D.0020.0002] # -0067 0126 ; [.1D7D.0020.0007][.0000.0000.0002] # -0047 0127 ; [.1D7D.0020.0007][.0000.0000.0008] # -0047 0126 ; [.1D7D.0020.0008] # -0067 0068 0335 ; [.1D7D.0020.0002] # -0067 0048 0335 ; [.1D7D.0020.0007][.0000.0000.0002] # -0047 0068 0335 ; [.1D7D.0020.0007][.0000.0000.0008] # -0047 0048 0335 ; [.1D7D.0020.0008] # -0127 ; [.1D97.0020.0002] # LATIN SMALL LETTER H WITH STROKE -0068 0335 ; [.1D97.0020.0002] # LATIN SMALL LETTER H WITH STROKE -210F ; [.1D97.0020.0002] # PLANCK CONSTANT OVER TWO PI -0126 ; [.1D97.0020.0008] # LATIN CAPITAL LETTER H WITH STROKE -0048 0335 ; [.1D97.0020.0008] # LATIN CAPITAL LETTER H WITH STROKE -017C ; [.1F86.0020.0002] # LATIN SMALL LETTER Z WITH DOT ABOVE -007A 0307 ; [.1F86.0020.0002] # LATIN SMALL LETTER Z WITH DOT ABOVE -017B ; [.1F86.0020.0008] # LATIN CAPITAL LETTER Z WITH DOT ABOVE -005A 0307 ; [.1F86.0020.0008] # LATIN CAPITAL LETTER Z WITH DOT ABOVE + entry => <<'ENTRY', # for DUCET v13.0.0 +010B ; [.1FD5.0020.0002] # LATIN SMALL LETTER C WITH DOT ABOVE +0063 0307 ; [.1FD5.0020.0002] # LATIN SMALL LETTER C WITH DOT ABOVE +010A ; [.1FD5.0020.0008] # LATIN CAPITAL LETTER C WITH DOT ABOVE +0043 0307 ; [.1FD5.0020.0008] # LATIN CAPITAL LETTER C WITH DOT ABOVE +0121 ; [.2050.0020.0002] # LATIN SMALL LETTER G WITH DOT ABOVE +0067 0307 ; [.2050.0020.0002] # LATIN SMALL LETTER G WITH DOT ABOVE +0120 ; [.2050.0020.0008] # LATIN CAPITAL LETTER G WITH DOT ABOVE +0047 0307 ; [.2050.0020.0008] # LATIN CAPITAL LETTER G WITH DOT ABOVE +0067 0127 ; [.2074.0020.0002] # +0067 0126 ; [.2074.0020.0007][.0000.0000.0002] # +0047 0127 ; [.2074.0020.0007][.0000.0000.0008] # +0047 0126 ; [.2074.0020.0008] # +0067 0068 0335 ; [.2074.0020.0002] # +0067 0048 0335 ; [.2074.0020.0007][.0000.0000.0002] # +0047 0068 0335 ; [.2074.0020.0007][.0000.0000.0008] # +0047 0048 0335 ; [.2074.0020.0008] # +0127 ; [.208F.0020.0002] # LATIN SMALL LETTER H WITH STROKE +0068 0335 ; [.208F.0020.0002] # LATIN SMALL LETTER H WITH STROKE +210F ; [.208F.0020.0002] # PLANCK CONSTANT OVER TWO PI +0126 ; [.208F.0020.0008] # LATIN CAPITAL LETTER H WITH STROKE +0048 0335 ; [.208F.0020.0008] # LATIN CAPITAL LETTER H WITH STROKE +017C ; [.2285.0020.0002] # LATIN SMALL LETTER Z WITH DOT ABOVE +007A 0307 ; [.2285.0020.0002] # LATIN SMALL LETTER Z WITH DOT ABOVE +017B ; [.2285.0020.0008] # LATIN CAPITAL LETTER Z WITH DOT ABOVE +005A 0307 ; [.2285.0020.0008] # LATIN CAPITAL LETTER Z WITH DOT ABOVE ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/nb.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/nb.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/nb.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/nb.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,76 +1,76 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0111 ; [.1CF5.0021.0002] # LATIN SMALL LETTER D WITH STROKE -0064 0335 ; [.1CF5.0021.0002] # LATIN SMALL LETTER D WITH STROKE -0110 ; [.1CF5.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE -0044 0335 ; [.1CF5.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE -00F0 ; [.1CF5.0022.0002] # LATIN SMALL LETTER ETH -1DD9 ; [.1CF5.0022.0002] # COMBINING LATIN SMALL LETTER ETH -00D0 ; [.1CF5.0022.0008] # LATIN CAPITAL LETTER ETH -00FE ; [.1EFB.0020.0003][.1D7E.0020.0003] # LATIN SMALL LETTER THORN -00DE ; [.1EFB.0020.0009][.1D7E.0020.0009] # LATIN CAPITAL LETTER THORN -00FC ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1F71.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F71.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1F71.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F71.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1F71.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F71.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1F71.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F71.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0171 ; [.1F71.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0075 030B ; [.1F71.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0170 ; [.1F71.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -0055 030B ; [.1F71.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -00E6 ; [.1FFC.0020.0002] # LATIN SMALL LETTER AE -1DD4 ; [.1FFC.0020.0002] # COMBINING LATIN SMALL LETTER AE -00C6 ; [.1FFC.0020.0008] # LATIN CAPITAL LETTER AE -1D2D ; [.1FFC.0020.0014] # MODIFIER LETTER CAPITAL AE -01FD ; [.1FFC.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE -01FC ; [.1FFC.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE -01E3 ; [.1FFC.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON -01E2 ; [.1FFC.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON -00E4 ; [.1FFC.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1FFC.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1FFC.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1FFC.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1FFC.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1FFC.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -0119 ; [.1FFC.0022.0002] # LATIN SMALL LETTER E WITH OGONEK -0065 0328 ; [.1FFC.0022.0002] # LATIN SMALL LETTER E WITH OGONEK -0118 ; [.1FFC.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK -0045 0328 ; [.1FFC.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK -00F8 ; [.1FFD.0020.0002] # LATIN SMALL LETTER O WITH STROKE -006F 0338 ; [.1FFD.0020.0002] # LATIN SMALL LETTER O WITH STROKE -00D8 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE -004F 0338 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE -01FF ; [.1FFD.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE -01FE ; [.1FFD.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE -00F6 ; [.1FFD.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1FFD.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1FFD.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1FFD.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -0151 ; [.1FFD.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -006F 030B ; [.1FFD.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -0150 ; [.1FFD.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -004F 030B ; [.1FFD.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -0153 ; [.1FFD.0023.0002] # LATIN SMALL LIGATURE OE -0152 ; [.1FFD.0023.0008] # LATIN CAPITAL LIGATURE OE -00E5 ; [.1FFE.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -0061 030A ; [.1FFE.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -00C5 ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -0041 030A ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -212B ; [.1FFE.0020.0008] # ANGSTROM SIGN -01FB ; [.1FFE.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE -01FA ; [.1FFE.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE -0061 0061 ; [.1FFE.0021.0002] # -0041 0061 ; [.1FFE.0021.0007] # -0041 0041 ; [.1FFE.0021.0008] # + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0111 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE +0064 0335 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE +0110 ; [.1FEB.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE +0044 0335 ; [.1FEB.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE +00F0 ; [.1FEB.0022.0002] # LATIN SMALL LETTER ETH +1DD9 ; [.1FEB.0022.0002] # COMBINING LATIN SMALL LETTER ETH +00D0 ; [.1FEB.0022.0008] # LATIN CAPITAL LETTER ETH +00FE ; [.21F7.0020.0003][.2075.0020.0003] # LATIN SMALL LETTER THORN +00DE ; [.21F7.0020.0009][.2075.0020.0009] # LATIN CAPITAL LETTER THORN +00FC ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.2270.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2270.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.2270.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2270.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.2270.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2270.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.2270.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2270.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0171 ; [.2270.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0075 030B ; [.2270.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0170 ; [.2270.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0055 030B ; [.2270.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +00E6 ; [.22FB.0020.0002] # LATIN SMALL LETTER AE +1DD4 ; [.22FB.0020.0002] # COMBINING LATIN SMALL LETTER AE +00C6 ; [.22FB.0020.0008] # LATIN CAPITAL LETTER AE +1D2D ; [.22FB.0020.0014] # MODIFIER LETTER CAPITAL AE +01FD ; [.22FB.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE +01FC ; [.22FB.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE +01E3 ; [.22FB.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON +01E2 ; [.22FB.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON +00E4 ; [.22FB.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.22FB.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.22FB.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.22FB.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.22FB.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.22FB.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +0119 ; [.22FB.0022.0002] # LATIN SMALL LETTER E WITH OGONEK +0065 0328 ; [.22FB.0022.0002] # LATIN SMALL LETTER E WITH OGONEK +0118 ; [.22FB.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK +0045 0328 ; [.22FB.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK +00F8 ; [.22FC.0020.0002] # LATIN SMALL LETTER O WITH STROKE +006F 0338 ; [.22FC.0020.0002] # LATIN SMALL LETTER O WITH STROKE +00D8 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE +004F 0338 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE +01FF ; [.22FC.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE +01FE ; [.22FC.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +00F6 ; [.22FC.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.22FC.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.22FC.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.22FC.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +0151 ; [.22FC.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +006F 030B ; [.22FC.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +0150 ; [.22FC.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +004F 030B ; [.22FC.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +0153 ; [.22FC.0023.0002] # LATIN SMALL LIGATURE OE +0152 ; [.22FC.0023.0008] # LATIN CAPITAL LIGATURE OE +00E5 ; [.22FD.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +0061 030A ; [.22FD.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +00C5 ; [.22FD.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +0041 030A ; [.22FD.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +212B ; [.22FD.0020.0008] # ANGSTROM SIGN +01FB ; [.22FD.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +01FA ; [.22FD.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +0061 0061 ; [.22FD.0021.0002] # +0041 0061 ; [.22FD.0021.0007] # +0041 0041 ; [.22FD.0021.0008] # ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/nn.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/nn.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/nn.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/nn.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,76 +1,76 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0111 ; [.1CF5.0021.0002] # LATIN SMALL LETTER D WITH STROKE -0064 0335 ; [.1CF5.0021.0002] # LATIN SMALL LETTER D WITH STROKE -0110 ; [.1CF5.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE -0044 0335 ; [.1CF5.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE -00F0 ; [.1CF5.0022.0002] # LATIN SMALL LETTER ETH -1DD9 ; [.1CF5.0022.0002] # COMBINING LATIN SMALL LETTER ETH -00D0 ; [.1CF5.0022.0008] # LATIN CAPITAL LETTER ETH -00FE ; [.1EFB.0020.0003][.1D7E.0020.0003] # LATIN SMALL LETTER THORN -00DE ; [.1EFB.0020.0009][.1D7E.0020.0009] # LATIN CAPITAL LETTER THORN -00FC ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1F71.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F71.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1F71.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F71.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1F71.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F71.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1F71.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F71.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0171 ; [.1F71.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0075 030B ; [.1F71.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0170 ; [.1F71.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -0055 030B ; [.1F71.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -00E6 ; [.1FFC.0020.0002] # LATIN SMALL LETTER AE -1DD4 ; [.1FFC.0020.0002] # COMBINING LATIN SMALL LETTER AE -00C6 ; [.1FFC.0020.0008] # LATIN CAPITAL LETTER AE -1D2D ; [.1FFC.0020.0014] # MODIFIER LETTER CAPITAL AE -01FD ; [.1FFC.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE -01FC ; [.1FFC.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE -01E3 ; [.1FFC.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON -01E2 ; [.1FFC.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON -00E4 ; [.1FFC.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1FFC.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1FFC.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1FFC.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1FFC.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1FFC.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -0119 ; [.1FFC.0022.0002] # LATIN SMALL LETTER E WITH OGONEK -0065 0328 ; [.1FFC.0022.0002] # LATIN SMALL LETTER E WITH OGONEK -0118 ; [.1FFC.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK -0045 0328 ; [.1FFC.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK -00F8 ; [.1FFD.0020.0002] # LATIN SMALL LETTER O WITH STROKE -006F 0338 ; [.1FFD.0020.0002] # LATIN SMALL LETTER O WITH STROKE -00D8 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE -004F 0338 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE -01FF ; [.1FFD.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE -01FE ; [.1FFD.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE -00F6 ; [.1FFD.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1FFD.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1FFD.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1FFD.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -0151 ; [.1FFD.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -006F 030B ; [.1FFD.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -0150 ; [.1FFD.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -004F 030B ; [.1FFD.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -0153 ; [.1FFD.0023.0002] # LATIN SMALL LIGATURE OE -0152 ; [.1FFD.0023.0008] # LATIN CAPITAL LIGATURE OE -00E5 ; [.1FFE.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -0061 030A ; [.1FFE.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -00C5 ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -0041 030A ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -212B ; [.1FFE.0020.0008] # ANGSTROM SIGN -01FB ; [.1FFE.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE -01FA ; [.1FFE.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE -0061 0061 ; [.1FFE.0021.0002] # -0041 0061 ; [.1FFE.0021.0007] # -0041 0041 ; [.1FFE.0021.0008] # + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0111 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE +0064 0335 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE +0110 ; [.1FEB.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE +0044 0335 ; [.1FEB.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE +00F0 ; [.1FEB.0022.0002] # LATIN SMALL LETTER ETH +1DD9 ; [.1FEB.0022.0002] # COMBINING LATIN SMALL LETTER ETH +00D0 ; [.1FEB.0022.0008] # LATIN CAPITAL LETTER ETH +00FE ; [.21F7.0020.0003][.2075.0020.0003] # LATIN SMALL LETTER THORN +00DE ; [.21F7.0020.0009][.2075.0020.0009] # LATIN CAPITAL LETTER THORN +00FC ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.2270.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2270.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.2270.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2270.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.2270.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2270.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.2270.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2270.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0171 ; [.2270.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0075 030B ; [.2270.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0170 ; [.2270.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0055 030B ; [.2270.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +00E6 ; [.22FB.0020.0002] # LATIN SMALL LETTER AE +1DD4 ; [.22FB.0020.0002] # COMBINING LATIN SMALL LETTER AE +00C6 ; [.22FB.0020.0008] # LATIN CAPITAL LETTER AE +1D2D ; [.22FB.0020.0014] # MODIFIER LETTER CAPITAL AE +01FD ; [.22FB.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE +01FC ; [.22FB.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE +01E3 ; [.22FB.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON +01E2 ; [.22FB.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON +00E4 ; [.22FB.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.22FB.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.22FB.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.22FB.0021.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.22FB.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.22FB.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +0119 ; [.22FB.0022.0002] # LATIN SMALL LETTER E WITH OGONEK +0065 0328 ; [.22FB.0022.0002] # LATIN SMALL LETTER E WITH OGONEK +0118 ; [.22FB.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK +0045 0328 ; [.22FB.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK +00F8 ; [.22FC.0020.0002] # LATIN SMALL LETTER O WITH STROKE +006F 0338 ; [.22FC.0020.0002] # LATIN SMALL LETTER O WITH STROKE +00D8 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE +004F 0338 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE +01FF ; [.22FC.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE +01FE ; [.22FC.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +00F6 ; [.22FC.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.22FC.0021.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.22FC.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.22FC.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +0151 ; [.22FC.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +006F 030B ; [.22FC.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +0150 ; [.22FC.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +004F 030B ; [.22FC.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +0153 ; [.22FC.0023.0002] # LATIN SMALL LIGATURE OE +0152 ; [.22FC.0023.0008] # LATIN CAPITAL LIGATURE OE +00E5 ; [.22FD.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +0061 030A ; [.22FD.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +00C5 ; [.22FD.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +0041 030A ; [.22FD.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +212B ; [.22FD.0020.0008] # ANGSTROM SIGN +01FB ; [.22FD.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +01FA ; [.22FD.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +0061 0061 ; [.22FD.0021.0002] # +0041 0061 ; [.22FD.0021.0007] # +0041 0041 ; [.22FD.0021.0008] # ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/nso.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/nso.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/nso.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/nso.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,37 +1,37 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -00EA ; [.1D11.0020.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -0065 0302 ; [.1D11.0020.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -00CA ; [.1D11.0020.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -0045 0302 ; [.1D11.0020.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -1EC1 ; [.1D11.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC0 ; [.1D11.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -1EBF ; [.1D11.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -1EBE ; [.1D11.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -1EC5 ; [.1D11.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE -1EC4 ; [.1D11.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE -1EC3 ; [.1D11.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC2 ; [.1D11.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC7 ; [.1D11.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC6 ; [.1D11.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW -00F4 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX -006F 0302 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX -00D4 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -004F 0302 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -1ED3 ; [.1E44.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED2 ; [.1E44.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED1 ; [.1E44.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED0 ; [.1E44.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED7 ; [.1E44.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE -1ED6 ; [.1E44.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE -1ED5 ; [.1E44.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED4 ; [.1E44.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED9 ; [.1E44.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1ED8 ; [.1E44.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW -0161 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0073 030C ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0160 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -0053 030C ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +00EA ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +0065 0302 ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +00CA ; [.2008.0020.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +0045 0302 ; [.2008.0020.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +1EC1 ; [.2008.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +1EC0 ; [.2008.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +1EBF ; [.2008.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +1EBE ; [.2008.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +1EC5 ; [.2008.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +1EC4 ; [.2008.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +1EC3 ; [.2008.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC2 ; [.2008.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC7 ; [.2008.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +1EC6 ; [.2008.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +00F4 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX +006F 0302 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX +00D4 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +004F 0302 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +1ED3 ; [.213D.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED2 ; [.213D.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED1 ; [.213D.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED0 ; [.213D.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED7 ; [.213D.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +1ED6 ; [.213D.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +1ED5 ; [.213D.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED4 ; [.213D.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED9 ; [.213D.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +1ED8 ; [.213D.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +0161 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0073 030C ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0160 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +0053 030C ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/om.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/om.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/om.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/om.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,22 +1,22 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0063 0068 ; [.1F88.0020.0002] # -0043 0068 ; [.1F88.0020.0007] # -0043 0048 ; [.1F88.0020.0008] # -0064 0068 ; [.1F89.0020.0002] # -0044 0068 ; [.1F89.0020.0007] # -0044 0048 ; [.1F89.0020.0008] # -006B 0068 ; [.1F8A.0020.0002] # -004B 0068 ; [.1F8A.0020.0007] # -004B 0048 ; [.1F8A.0020.0008] # -006E 0079 ; [.1F8B.0020.0002] # -004E 0079 ; [.1F8B.0020.0007] # -004E 0059 ; [.1F8B.0020.0008] # -0070 0068 ; [.1F8C.0020.0002] # -0050 0068 ; [.1F8C.0020.0007] # -0050 0048 ; [.1F8C.0020.0008] # -0073 0068 ; [.1F8D.0020.0002] # -0053 0068 ; [.1F8D.0020.0007] # + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0063 0068 ; [.2287.0020.0002] # +0043 0068 ; [.2287.0020.0007] # +0043 0048 ; [.2287.0020.0008] # +0064 0068 ; [.2288.0020.0002] # +0044 0068 ; [.2288.0020.0007] # +0044 0048 ; [.2288.0020.0008] # +006B 0068 ; [.2289.0020.0002] # +004B 0068 ; [.2289.0020.0007] # +004B 0048 ; [.2289.0020.0008] # +006E 0079 ; [.228A.0020.0002] # +004E 0079 ; [.228A.0020.0007] # +004E 0059 ; [.228A.0020.0008] # +0070 0068 ; [.228B.0020.0002] # +0050 0068 ; [.228B.0020.0007] # +0050 0048 ; [.228B.0020.0008] # +0073 0068 ; [.228C.0020.0002] # +0053 0068 ; [.228C.0020.0007] # ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/or.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/or.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/or.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/or.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,12 +1,12 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0B01 ; [.27FD.0020.0002][.FFF1.0000.0000] # ORIYA SIGN CANDRABINDU -0B02 ; [.27FD.0020.0002][.FFF2.0000.0000] # ORIYA SIGN ANUSVARA -0B03 ; [.27FD.0020.0002][.FFF3.0000.0000] # ORIYA SIGN VISARGA -0B14 ; [.27FD.0020.0002][.FFF0.0000.0000] # ORIYA LETTER AU -0B15 0B4D 0B37 ; [.2821.0020.0002][.FFF1.0000.0000] # -0B39 ; [.2821.0020.0002][.FFF0.0000.0000] # ORIYA LETTER HA -0B5F ; [.2817.0021.0002] # ORIYA LETTER YYA + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0B01 ; [.2B0A.0020.0002][.FFF1.0000.0000] # ORIYA SIGN CANDRABINDU +0B02 ; [.2B0A.0020.0002][.FFF2.0000.0000] # ORIYA SIGN ANUSVARA +0B03 ; [.2B0A.0020.0002][.FFF3.0000.0000] # ORIYA SIGN VISARGA +0B14 ; [.2B0A.0020.0002][.FFF0.0000.0000] # ORIYA LETTER AU +0B15 0B4D 0B37 ; [.2B2E.0020.0002][.FFF1.0000.0000] # +0B39 ; [.2B2E.0020.0002][.FFF0.0000.0000] # ORIYA LETTER HA +0B5F ; [.2B24.0021.0002] # ORIYA LETTER YYA ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/pa.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/pa.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/pa.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/pa.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,27 +1,27 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0A71 ; [.0000.00C3.0002] # GURMUKHI ADDAK -0A03 ; [.0000.00C2.0002] # GURMUKHI SIGN VISARGA -0A70 ; [.0000.00C4.0002] # GURMUKHI TIPPI -0A02 ; [.0000.00C5.0002] # GURMUKHI SIGN BINDI -0A01 ; [.0000.00C6.0002] # GURMUKHI SIGN ADAK BINDI -0A3C ; [.0000.00C7.0002] # GURMUKHI SIGN NUKTA -0A33 ; [.279E.0020.0002][.0000.00C7.0002] # GURMUKHI LETTER LLA -0A36 ; [.277F.0020.0002][.0000.00C7.0002] # GURMUKHI LETTER SHA -0A59 ; [.2783.0020.0002][.0000.00C7.0002] # GURMUKHI LETTER KHHA -0A5A ; [.2784.0020.0002][.0000.00C7.0002] # GURMUKHI LETTER GHHA -0A5B ; [.2789.0020.0002][.0000.00C7.0002] # GURMUKHI LETTER ZA -0A5E ; [.2797.0020.0002][.0000.00C7.0002] # GURMUKHI LETTER FA -0A4D ; [.27A1.0020.0002] # GURMUKHI SIGN VIRAMA -0A3E ; [.27A2.0020.0002] # GURMUKHI VOWEL SIGN AA -0A3F ; [.27A3.0020.0002] # GURMUKHI VOWEL SIGN I -0A40 ; [.27A4.0020.0002] # GURMUKHI VOWEL SIGN II -0A41 ; [.27A5.0020.0002] # GURMUKHI VOWEL SIGN U -0A42 ; [.27A6.0020.0002] # GURMUKHI VOWEL SIGN UU -0A47 ; [.27A7.0020.0002] # GURMUKHI VOWEL SIGN EE -0A48 ; [.27A8.0020.0002] # GURMUKHI VOWEL SIGN AI -0A4B ; [.27A9.0020.0002] # GURMUKHI VOWEL SIGN OO -0A4C ; [.27AA.0020.0002] # GURMUKHI VOWEL SIGN AU + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0A71 ; [.0000.00C4.0002] # GURMUKHI ADDAK +0A03 ; [.0000.00C3.0002] # GURMUKHI SIGN VISARGA +0A70 ; [.0000.00C5.0002] # GURMUKHI TIPPI +0A02 ; [.0000.00C6.0002] # GURMUKHI SIGN BINDI +0A01 ; [.0000.00C7.0002] # GURMUKHI SIGN ADAK BINDI +0A3C ; [.0000.00C8.0002] # GURMUKHI SIGN NUKTA +0A33 ; [.2AAB.0020.0002][.0000.00C8.0002] # GURMUKHI LETTER LLA +0A36 ; [.2A8C.0020.0002][.0000.00C8.0002] # GURMUKHI LETTER SHA +0A59 ; [.2A90.0020.0002][.0000.00C8.0002] # GURMUKHI LETTER KHHA +0A5A ; [.2A91.0020.0002][.0000.00C8.0002] # GURMUKHI LETTER GHHA +0A5B ; [.2A96.0020.0002][.0000.00C8.0002] # GURMUKHI LETTER ZA +0A5E ; [.2AA4.0020.0002][.0000.00C8.0002] # GURMUKHI LETTER FA +0A4D ; [.2AAE.0020.0002] # GURMUKHI SIGN VIRAMA +0A3E ; [.2AAF.0020.0002] # GURMUKHI VOWEL SIGN AA +0A3F ; [.2AB0.0020.0002] # GURMUKHI VOWEL SIGN I +0A40 ; [.2AB1.0020.0002] # GURMUKHI VOWEL SIGN II +0A41 ; [.2AB2.0020.0002] # GURMUKHI VOWEL SIGN U +0A42 ; [.2AB3.0020.0002] # GURMUKHI VOWEL SIGN UU +0A47 ; [.2AB4.0020.0002] # GURMUKHI VOWEL SIGN EE +0A48 ; [.2AB5.0020.0002] # GURMUKHI VOWEL SIGN AI +0A4B ; [.2AB6.0020.0002] # GURMUKHI VOWEL SIGN OO +0A4C ; [.2AB7.0020.0002] # GURMUKHI VOWEL SIGN AU ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/pl.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/pl.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/pl.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/pl.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,51 +1,51 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0105 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH OGONEK -0061 0328 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH OGONEK -0104 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH OGONEK -0041 0328 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH OGONEK -0107 ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH ACUTE -0063 0301 ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH ACUTE -0063 0341 ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH ACUTE -0106 ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE -0043 0301 ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE -0043 0341 ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE -0119 ; [.1D11.0020.0002] # LATIN SMALL LETTER E WITH OGONEK -0065 0328 ; [.1D11.0020.0002] # LATIN SMALL LETTER E WITH OGONEK -0118 ; [.1D11.0020.0008] # LATIN CAPITAL LETTER E WITH OGONEK -0045 0328 ; [.1D11.0020.0008] # LATIN CAPITAL LETTER E WITH OGONEK -0142 ; [.1DDE.0020.0002] # LATIN SMALL LETTER L WITH STROKE -006C 0335 ; [.1DDE.0020.0002] # LATIN SMALL LETTER L WITH STROKE -0141 ; [.1DDE.0020.0008] # LATIN CAPITAL LETTER L WITH STROKE -004C 0335 ; [.1DDE.0020.0008] # LATIN CAPITAL LETTER L WITH STROKE -0144 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0301 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0341 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH ACUTE -0143 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0301 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0341 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE -00F3 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0301 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0341 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH ACUTE -00D3 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0301 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0341 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE -015B ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH ACUTE -0073 0301 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH ACUTE -0073 0341 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH ACUTE -015A ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE -0053 0301 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE -0053 0341 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE -017A ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE -007A 0301 ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE -007A 0341 ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE -0179 ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE -005A 0301 ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE -005A 0341 ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE -017C ; [.1F89.0020.0002] # LATIN SMALL LETTER Z WITH DOT ABOVE -007A 0307 ; [.1F89.0020.0002] # LATIN SMALL LETTER Z WITH DOT ABOVE -017B ; [.1F89.0020.0008] # LATIN CAPITAL LETTER Z WITH DOT ABOVE -005A 0307 ; [.1F89.0020.0008] # LATIN CAPITAL LETTER Z WITH DOT ABOVE + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0105 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH OGONEK +0061 0328 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH OGONEK +0104 ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER A WITH OGONEK +0041 0328 ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER A WITH OGONEK +0107 ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH ACUTE +0063 0301 ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH ACUTE +0063 0341 ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH ACUTE +0106 ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE +0043 0301 ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE +0043 0341 ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE +0119 ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH OGONEK +0065 0328 ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH OGONEK +0118 ; [.2008.0020.0008] # LATIN CAPITAL LETTER E WITH OGONEK +0045 0328 ; [.2008.0020.0008] # LATIN CAPITAL LETTER E WITH OGONEK +0142 ; [.20D7.0020.0002] # LATIN SMALL LETTER L WITH STROKE +006C 0335 ; [.20D7.0020.0002] # LATIN SMALL LETTER L WITH STROKE +0141 ; [.20D7.0020.0008] # LATIN CAPITAL LETTER L WITH STROKE +004C 0335 ; [.20D7.0020.0008] # LATIN CAPITAL LETTER L WITH STROKE +0144 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0301 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0341 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH ACUTE +0143 ; [.2119.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0301 ; [.2119.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0341 ; [.2119.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE +00F3 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0301 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0341 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH ACUTE +00D3 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0301 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0341 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE +015B ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH ACUTE +0073 0301 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH ACUTE +0073 0341 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH ACUTE +015A ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE +0053 0301 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE +0053 0341 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE +017A ; [.2287.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE +007A 0301 ; [.2287.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE +007A 0341 ; [.2287.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE +0179 ; [.2287.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE +005A 0301 ; [.2287.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE +005A 0341 ; [.2287.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE +017C ; [.2288.0020.0002] # LATIN SMALL LETTER Z WITH DOT ABOVE +007A 0307 ; [.2288.0020.0002] # LATIN SMALL LETTER Z WITH DOT ABOVE +017B ; [.2288.0020.0008] # LATIN CAPITAL LETTER Z WITH DOT ABOVE +005A 0307 ; [.2288.0020.0008] # LATIN CAPITAL LETTER Z WITH DOT ABOVE ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ro.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ro.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ro.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ro.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,53 +1,53 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0103 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH BREVE -0061 0306 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH BREVE -0102 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH BREVE -0041 0306 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH BREVE -1EB1 ; [.1CAE.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER A WITH BREVE AND GRAVE -1EB0 ; [.1CAE.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE -1EAF ; [.1CAE.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH BREVE AND ACUTE -1EAE ; [.1CAE.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE -1EB5 ; [.1CAE.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER A WITH BREVE AND TILDE -1EB4 ; [.1CAE.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE -1EB3 ; [.1CAE.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE -1EB2 ; [.1CAE.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE -1EB7 ; [.1CAE.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW -1EB6 ; [.1CAE.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW -00E2 ; [.1CAF.0020.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX -0061 0302 ; [.1CAF.0020.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX -00C2 ; [.1CAF.0020.0008] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX -0041 0302 ; [.1CAF.0020.0008] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX -1EA7 ; [.1CAF.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE -1EA6 ; [.1CAF.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE -1EA5 ; [.1CAF.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE -1EA4 ; [.1CAF.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE -1EAB ; [.1CAF.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE -1EAA ; [.1CAF.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE -1EA9 ; [.1CAF.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE -1EA8 ; [.1CAF.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE -1EAD ; [.1CAF.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW -1EAC ; [.1CAF.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW -00EE ; [.1D99.0020.0002] # LATIN SMALL LETTER I WITH CIRCUMFLEX -0069 0302 ; [.1D99.0020.0002] # LATIN SMALL LETTER I WITH CIRCUMFLEX -00CE ; [.1D99.0020.0008] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX -0049 0302 ; [.1D99.0020.0008] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX -015F ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CEDILLA -0073 0327 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CEDILLA -0219 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH COMMA BELOW -0073 0326 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH COMMA BELOW -015E ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CEDILLA -0053 0327 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CEDILLA -0218 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH COMMA BELOW -0053 0326 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH COMMA BELOW -0163 ; [.1EFC.0020.0002] # LATIN SMALL LETTER T WITH CEDILLA -0074 0327 ; [.1EFC.0020.0002] # LATIN SMALL LETTER T WITH CEDILLA -021B ; [.1EFC.0020.0002] # LATIN SMALL LETTER T WITH COMMA BELOW -0074 0326 ; [.1EFC.0020.0002] # LATIN SMALL LETTER T WITH COMMA BELOW -0162 ; [.1EFC.0020.0008] # LATIN CAPITAL LETTER T WITH CEDILLA -0054 0327 ; [.1EFC.0020.0008] # LATIN CAPITAL LETTER T WITH CEDILLA -021A ; [.1EFC.0020.0008] # LATIN CAPITAL LETTER T WITH COMMA BELOW -0054 0326 ; [.1EFC.0020.0008] # LATIN CAPITAL LETTER T WITH COMMA BELOW + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0103 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH BREVE +0061 0306 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH BREVE +0102 ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER A WITH BREVE +0041 0306 ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER A WITH BREVE +1EB1 ; [.1FA3.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER A WITH BREVE AND GRAVE +1EB0 ; [.1FA3.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE +1EAF ; [.1FA3.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH BREVE AND ACUTE +1EAE ; [.1FA3.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +1EB5 ; [.1FA3.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER A WITH BREVE AND TILDE +1EB4 ; [.1FA3.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE +1EB3 ; [.1FA3.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE +1EB2 ; [.1FA3.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE +1EB7 ; [.1FA3.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +1EB6 ; [.1FA3.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +00E2 ; [.1FA4.0020.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX +0061 0302 ; [.1FA4.0020.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX +00C2 ; [.1FA4.0020.0008] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +0041 0302 ; [.1FA4.0020.0008] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +1EA7 ; [.1FA4.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE +1EA6 ; [.1FA4.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE +1EA5 ; [.1FA4.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +1EA4 ; [.1FA4.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +1EAB ; [.1FA4.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE +1EAA ; [.1FA4.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE +1EA9 ; [.1FA4.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +1EA8 ; [.1FA4.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +1EAD ; [.1FA4.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW +1EAC ; [.1FA4.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW +00EE ; [.2091.0020.0002] # LATIN SMALL LETTER I WITH CIRCUMFLEX +0069 0302 ; [.2091.0020.0002] # LATIN SMALL LETTER I WITH CIRCUMFLEX +00CE ; [.2091.0020.0008] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +0049 0302 ; [.2091.0020.0008] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +015F ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CEDILLA +0073 0327 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CEDILLA +0219 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH COMMA BELOW +0073 0326 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH COMMA BELOW +015E ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CEDILLA +0053 0327 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CEDILLA +0218 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH COMMA BELOW +0053 0326 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH COMMA BELOW +0163 ; [.21F8.0020.0002] # LATIN SMALL LETTER T WITH CEDILLA +0074 0327 ; [.21F8.0020.0002] # LATIN SMALL LETTER T WITH CEDILLA +021B ; [.21F8.0020.0002] # LATIN SMALL LETTER T WITH COMMA BELOW +0074 0326 ; [.21F8.0020.0002] # LATIN SMALL LETTER T WITH COMMA BELOW +0162 ; [.21F8.0020.0008] # LATIN CAPITAL LETTER T WITH CEDILLA +0054 0327 ; [.21F8.0020.0008] # LATIN CAPITAL LETTER T WITH CEDILLA +021A ; [.21F8.0020.0008] # LATIN CAPITAL LETTER T WITH COMMA BELOW +0054 0326 ; [.21F8.0020.0008] # LATIN CAPITAL LETTER T WITH COMMA BELOW ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/sa.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/sa.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/sa.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/sa.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,14 +1,14 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0902 ; [.26CC.0020.0002][.FFF1.0000.0000] # DEVANAGARI SIGN ANUSVARA -0901 ; [.26CC.0021.0002][.FFF1.0000.0000] # DEVANAGARI SIGN CANDRABINDU -0903 ; [.26CC.0020.0002][.FFF2.0000.0000] # DEVANAGARI SIGN VISARGA -0950 ; [.26CC.0020.0002][.FFF0.0000.0000] # DEVANAGARI OM -0933 ; [.270F.0020.0002][.FFF1.0000.0000] # DEVANAGARI LETTER LLA -0934 ; [.270F.0020.0002][.FFF1.0000.0000][.0000.00C2.0002] # DEVANAGARI LETTER LLLA -0915 094D 0937 ; [.270F.0020.0002][.FFF2.0000.0000] # -091C 094D 091E ; [.270F.0020.0002][.FFF3.0000.0000] # -0939 ; [.270F.0020.0002][.FFF0.0000.0000] # DEVANAGARI LETTER HA + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0902 ; [.29D7.0020.0002][.FFF1.0000.0000] # DEVANAGARI SIGN ANUSVARA +0901 ; [.29D7.0021.0002][.FFF1.0000.0000] # DEVANAGARI SIGN CANDRABINDU +0903 ; [.29D7.0020.0002][.FFF2.0000.0000] # DEVANAGARI SIGN VISARGA +0950 ; [.29D7.0020.0002][.FFF0.0000.0000] # DEVANAGARI OM +0933 ; [.2A1B.0020.0002][.FFF1.0000.0000] # DEVANAGARI LETTER LLA +0934 ; [.2A1B.0020.0002][.FFF1.0000.0000][.0000.00C2.0002] # DEVANAGARI LETTER LLLA +0915 094D 0937 ; [.2A1B.0020.0002][.FFF2.0000.0000] # +091C 094D 091E ; [.2A1B.0020.0002][.FFF3.0000.0000] # +0939 ; [.2A1B.0020.0002][.FFF0.0000.0000] # DEVANAGARI LETTER HA ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/se.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/se.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/se.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/se.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,150 +1,150 @@ +{ - locale_version => 1.27, + locale_version => 1.29, # eng, g-stroke, t-stroke don't require tailoring - entry => <<'ENTRY', # for DUCET v10.0.0 -00E1 ; [.1CC5.0020.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0301 ; [.1CC5.0020.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0341 ; [.1CC5.0020.0002] # LATIN SMALL LETTER A WITH ACUTE -00C1 ; [.1CC5.0020.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0301 ; [.1CC5.0020.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0341 ; [.1CC5.0020.0008] # LATIN CAPITAL LETTER A WITH ACUTE -010D ; [.1CF2.0020.0002] # LATIN SMALL LETTER C WITH CARON -0063 030C ; [.1CF2.0020.0002] # LATIN SMALL LETTER C WITH CARON -010C ; [.1CF2.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0043 030C ; [.1CF2.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0292 ; [.1CF3.0020.0002] # LATIN SMALL LETTER EZH -01B7 ; [.1CF3.0020.0008] # LATIN CAPITAL LETTER EZH -01EF ; [.1CF4.0020.0002] # LATIN SMALL LETTER EZH WITH CARON -0292 030C ; [.1CF4.0020.0002] # LATIN SMALL LETTER EZH WITH CARON -01EE ; [.1CF4.0020.0008] # LATIN CAPITAL LETTER EZH WITH CARON -01B7 030C ; [.1CF4.0020.0008] # LATIN CAPITAL LETTER EZH WITH CARON -0111 ; [.1D0F.0020.0002] # LATIN SMALL LETTER D WITH STROKE -0064 0335 ; [.1D0F.0020.0002] # LATIN SMALL LETTER D WITH STROKE -0110 ; [.1D0F.0020.0008] # LATIN CAPITAL LETTER D WITH STROKE -0044 0335 ; [.1D0F.0020.0008] # LATIN CAPITAL LETTER D WITH STROKE -00F0 ; [.1D0F.0021.0002] # LATIN SMALL LETTER ETH -1DD9 ; [.1D0F.0021.0002] # COMBINING LATIN SMALL LETTER ETH -00D0 ; [.1D0F.0021.0008] # LATIN CAPITAL LETTER ETH -01E7 ; [.1D66.0020.0002] # LATIN SMALL LETTER G WITH CARON -0067 030C ; [.1D66.0020.0002] # LATIN SMALL LETTER G WITH CARON -01E6 ; [.1D66.0020.0008] # LATIN CAPITAL LETTER G WITH CARON -0047 030C ; [.1D66.0020.0008] # LATIN CAPITAL LETTER G WITH CARON -01E9 ; [.1DDC.0020.0002] # LATIN SMALL LETTER K WITH CARON -006B 030C ; [.1DDC.0020.0002] # LATIN SMALL LETTER K WITH CARON -01E8 ; [.1DDC.0020.0008] # LATIN CAPITAL LETTER K WITH CARON -004B 030C ; [.1DDC.0020.0008] # LATIN CAPITAL LETTER K WITH CARON -0144 ; [.1E3E.0021.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0301 ; [.1E3E.0021.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0341 ; [.1E3E.0021.0002] # LATIN SMALL LETTER N WITH ACUTE -0143 ; [.1E3E.0021.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0301 ; [.1E3E.0021.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0341 ; [.1E3E.0021.0008] # LATIN CAPITAL LETTER N WITH ACUTE -00F1 ; [.1E3E.0022.0002] # LATIN SMALL LETTER N WITH TILDE -006E 0303 ; [.1E3E.0022.0002] # LATIN SMALL LETTER N WITH TILDE -00D1 ; [.1E3E.0022.0008] # LATIN CAPITAL LETTER N WITH TILDE -004E 0303 ; [.1E3E.0022.0008] # LATIN CAPITAL LETTER N WITH TILDE -0161 ; [.1EFA.0020.0002] # LATIN SMALL LETTER S WITH CARON -0073 030C ; [.1EFA.0020.0002] # LATIN SMALL LETTER S WITH CARON -0160 ; [.1EFA.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -0053 030C ; [.1EFA.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -00FE ; [.1F00.0021.0002] # LATIN SMALL LETTER THORN -00DE ; [.1F00.0021.0008] # LATIN CAPITAL LETTER THORN -00FC ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1F71.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F71.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1F71.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F71.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1F71.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F71.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1F71.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F71.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0171 ; [.1F71.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0075 030B ; [.1F71.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0170 ; [.1F71.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -0055 030B ; [.1F71.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -017E ; [.1FF8.0020.0002] # LATIN SMALL LETTER Z WITH CARON -007A 030C ; [.1FF8.0020.0002] # LATIN SMALL LETTER Z WITH CARON -017D ; [.1FF8.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON -005A 030C ; [.1FF8.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON -00F8 ; [.1FF9.0020.0002] # LATIN SMALL LETTER O WITH STROKE -006F 0338 ; [.1FF9.0020.0002] # LATIN SMALL LETTER O WITH STROKE -00D8 ; [.1FF9.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE -004F 0338 ; [.1FF9.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE -01FF ; [.1FF9.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE -01FE ; [.1FF9.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE -0153 ; [.1FF9.0021.0002] # LATIN SMALL LIGATURE OE -0152 ; [.1FF9.0021.0008] # LATIN CAPITAL LIGATURE OE -00E6 ; [.1FFA.0020.0002] # LATIN SMALL LETTER AE -1DD4 ; [.1FFA.0020.0002] # COMBINING LATIN SMALL LETTER AE -00C6 ; [.1FFA.0020.0008] # LATIN CAPITAL LETTER AE -1D2D ; [.1FFA.0020.0014] # MODIFIER LETTER CAPITAL AE -01FD ; [.1FFA.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE -01FC ; [.1FFA.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE -01E3 ; [.1FFA.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON -01E2 ; [.1FFA.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON -00E5 ; [.1FFC.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -0061 030A ; [.1FFC.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -00C5 ; [.1FFC.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -0041 030A ; [.1FFC.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -212B ; [.1FFC.0020.0008] # ANGSTROM SIGN -01FB ; [.1FFC.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE -01FA ; [.1FFC.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE -0227 ; [.1FFC.0021.0002] # LATIN SMALL LETTER A WITH DOT ABOVE -0061 0307 ; [.1FFC.0021.0002] # LATIN SMALL LETTER A WITH DOT ABOVE -0226 ; [.1FFC.0021.0008] # LATIN CAPITAL LETTER A WITH DOT ABOVE -0041 0307 ; [.1FFC.0021.0008] # LATIN CAPITAL LETTER A WITH DOT ABOVE -00E4 ; [.1FFD.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1FFD.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1FFD.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1FFD.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -00E3 ; [.1FFD.0021.0002] # LATIN SMALL LETTER A WITH TILDE -0061 0303 ; [.1FFD.0021.0002] # LATIN SMALL LETTER A WITH TILDE -00C3 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER A WITH TILDE -0041 0303 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER A WITH TILDE -00F6 ; [.1FFE.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1FFE.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1FFE.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1FFE.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -0151 ; [.1FFE.0021.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -006F 030B ; [.1FFE.0021.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -0150 ; [.1FFE.0021.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -004F 030B ; [.1FFE.0021.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -00F5 ; [.1FFE.0022.0002] # LATIN SMALL LETTER O WITH TILDE -006F 0303 ; [.1FFE.0022.0002] # LATIN SMALL LETTER O WITH TILDE -00D5 ; [.1FFE.0022.0008] # LATIN CAPITAL LETTER O WITH TILDE -004F 0303 ; [.1FFE.0022.0008] # LATIN CAPITAL LETTER O WITH TILDE -1E4D ; [.1FFE.0022.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH TILDE AND ACUTE -1E4C ; [.1FFE.0022.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE -022D ; [.1FFE.0022.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH TILDE AND MACRON -022C ; [.1FFE.0022.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH TILDE AND MACRON -1E4F ; [.1FFE.0022.0002][.0000.002B.0002] # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS -1E4E ; [.1FFE.0022.0008][.0000.002B.0002] # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS -1EE1 ; [.1FFE.0022.0002][.0000.003F.0002] # LATIN SMALL LETTER O WITH HORN AND TILDE -1EE0 ; [.1FFE.0022.0008][.0000.003F.0002] # LATIN CAPITAL LETTER O WITH HORN AND TILDE -00F4 ; [.1FFE.0023.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX -006F 0302 ; [.1FFE.0023.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX -00D4 ; [.1FFE.0023.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -004F 0302 ; [.1FFE.0023.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -1ED3 ; [.1FFE.0023.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED2 ; [.1FFE.0023.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED1 ; [.1FFE.0023.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED0 ; [.1FFE.0023.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED7 ; [.1FFE.0023.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE -1ED6 ; [.1FFE.0023.0008][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE -1ED5 ; [.1FFE.0023.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED4 ; [.1FFE.0023.0008][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED9 ; [.1FFE.0023.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1ED8 ; [.1FFE.0023.0008][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW -01EB ; [.1FFE.0024.0002] # LATIN SMALL LETTER O WITH OGONEK -006F 0328 ; [.1FFE.0024.0002] # LATIN SMALL LETTER O WITH OGONEK -01EA ; [.1FFE.0024.0008] # LATIN CAPITAL LETTER O WITH OGONEK -004F 0328 ; [.1FFE.0024.0008] # LATIN CAPITAL LETTER O WITH OGONEK + entry => <<'ENTRY', # for DUCET v13.0.0 +00E1 ; [.1FBB.0020.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0301 ; [.1FBB.0020.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0341 ; [.1FBB.0020.0002] # LATIN SMALL LETTER A WITH ACUTE +00C1 ; [.1FBB.0020.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0301 ; [.1FBB.0020.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0341 ; [.1FBB.0020.0008] # LATIN CAPITAL LETTER A WITH ACUTE +010D ; [.1FE8.0020.0002] # LATIN SMALL LETTER C WITH CARON +0063 030C ; [.1FE8.0020.0002] # LATIN SMALL LETTER C WITH CARON +010C ; [.1FE8.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0043 030C ; [.1FE8.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0292 ; [.1FE9.0020.0002] # LATIN SMALL LETTER EZH +01B7 ; [.1FE9.0020.0008] # LATIN CAPITAL LETTER EZH +01EF ; [.1FEA.0020.0002] # LATIN SMALL LETTER EZH WITH CARON +0292 030C ; [.1FEA.0020.0002] # LATIN SMALL LETTER EZH WITH CARON +01EE ; [.1FEA.0020.0008] # LATIN CAPITAL LETTER EZH WITH CARON +01B7 030C ; [.1FEA.0020.0008] # LATIN CAPITAL LETTER EZH WITH CARON +0111 ; [.2006.0020.0002] # LATIN SMALL LETTER D WITH STROKE +0064 0335 ; [.2006.0020.0002] # LATIN SMALL LETTER D WITH STROKE +0110 ; [.2006.0020.0008] # LATIN CAPITAL LETTER D WITH STROKE +0044 0335 ; [.2006.0020.0008] # LATIN CAPITAL LETTER D WITH STROKE +00F0 ; [.2006.0021.0002] # LATIN SMALL LETTER ETH +1DD9 ; [.2006.0021.0002] # COMBINING LATIN SMALL LETTER ETH +00D0 ; [.2006.0021.0008] # LATIN CAPITAL LETTER ETH +01E7 ; [.205D.0020.0002] # LATIN SMALL LETTER G WITH CARON +0067 030C ; [.205D.0020.0002] # LATIN SMALL LETTER G WITH CARON +01E6 ; [.205D.0020.0008] # LATIN CAPITAL LETTER G WITH CARON +0047 030C ; [.205D.0020.0008] # LATIN CAPITAL LETTER G WITH CARON +01E9 ; [.20D5.0020.0002] # LATIN SMALL LETTER K WITH CARON +006B 030C ; [.20D5.0020.0002] # LATIN SMALL LETTER K WITH CARON +01E8 ; [.20D5.0020.0008] # LATIN CAPITAL LETTER K WITH CARON +004B 030C ; [.20D5.0020.0008] # LATIN CAPITAL LETTER K WITH CARON +0144 ; [.2137.0021.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0301 ; [.2137.0021.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0341 ; [.2137.0021.0002] # LATIN SMALL LETTER N WITH ACUTE +0143 ; [.2137.0021.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0301 ; [.2137.0021.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0341 ; [.2137.0021.0008] # LATIN CAPITAL LETTER N WITH ACUTE +00F1 ; [.2137.0022.0002] # LATIN SMALL LETTER N WITH TILDE +006E 0303 ; [.2137.0022.0002] # LATIN SMALL LETTER N WITH TILDE +00D1 ; [.2137.0022.0008] # LATIN CAPITAL LETTER N WITH TILDE +004E 0303 ; [.2137.0022.0008] # LATIN CAPITAL LETTER N WITH TILDE +0161 ; [.21F6.0020.0002] # LATIN SMALL LETTER S WITH CARON +0073 030C ; [.21F6.0020.0002] # LATIN SMALL LETTER S WITH CARON +0160 ; [.21F6.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +0053 030C ; [.21F6.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +00FE ; [.21FC.0021.0002] # LATIN SMALL LETTER THORN +00DE ; [.21FC.0021.0008] # LATIN CAPITAL LETTER THORN +00FC ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.2270.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2270.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.2270.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2270.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.2270.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2270.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.2270.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2270.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0171 ; [.2270.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0075 030B ; [.2270.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0170 ; [.2270.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0055 030B ; [.2270.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +017E ; [.22F7.0020.0002] # LATIN SMALL LETTER Z WITH CARON +007A 030C ; [.22F7.0020.0002] # LATIN SMALL LETTER Z WITH CARON +017D ; [.22F7.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON +005A 030C ; [.22F7.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON +00F8 ; [.22F8.0020.0002] # LATIN SMALL LETTER O WITH STROKE +006F 0338 ; [.22F8.0020.0002] # LATIN SMALL LETTER O WITH STROKE +00D8 ; [.22F8.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE +004F 0338 ; [.22F8.0020.0008] # LATIN CAPITAL LETTER O WITH STROKE +01FF ; [.22F8.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE +01FE ; [.22F8.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +0153 ; [.22F8.0021.0002] # LATIN SMALL LIGATURE OE +0152 ; [.22F8.0021.0008] # LATIN CAPITAL LIGATURE OE +00E6 ; [.22F9.0020.0002] # LATIN SMALL LETTER AE +1DD4 ; [.22F9.0020.0002] # COMBINING LATIN SMALL LETTER AE +00C6 ; [.22F9.0020.0008] # LATIN CAPITAL LETTER AE +1D2D ; [.22F9.0020.0014] # MODIFIER LETTER CAPITAL AE +01FD ; [.22F9.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE +01FC ; [.22F9.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE +01E3 ; [.22F9.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON +01E2 ; [.22F9.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON +00E5 ; [.22FB.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +0061 030A ; [.22FB.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +00C5 ; [.22FB.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +0041 030A ; [.22FB.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +212B ; [.22FB.0020.0008] # ANGSTROM SIGN +01FB ; [.22FB.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +01FA ; [.22FB.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +0227 ; [.22FB.0021.0002] # LATIN SMALL LETTER A WITH DOT ABOVE +0061 0307 ; [.22FB.0021.0002] # LATIN SMALL LETTER A WITH DOT ABOVE +0226 ; [.22FB.0021.0008] # LATIN CAPITAL LETTER A WITH DOT ABOVE +0041 0307 ; [.22FB.0021.0008] # LATIN CAPITAL LETTER A WITH DOT ABOVE +00E4 ; [.22FC.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.22FC.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.22FC.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.22FC.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +00E3 ; [.22FC.0021.0002] # LATIN SMALL LETTER A WITH TILDE +0061 0303 ; [.22FC.0021.0002] # LATIN SMALL LETTER A WITH TILDE +00C3 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER A WITH TILDE +0041 0303 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER A WITH TILDE +00F6 ; [.22FD.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.22FD.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.22FD.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.22FD.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.22FD.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.22FD.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +0151 ; [.22FD.0021.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +006F 030B ; [.22FD.0021.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +0150 ; [.22FD.0021.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +004F 030B ; [.22FD.0021.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +00F5 ; [.22FD.0022.0002] # LATIN SMALL LETTER O WITH TILDE +006F 0303 ; [.22FD.0022.0002] # LATIN SMALL LETTER O WITH TILDE +00D5 ; [.22FD.0022.0008] # LATIN CAPITAL LETTER O WITH TILDE +004F 0303 ; [.22FD.0022.0008] # LATIN CAPITAL LETTER O WITH TILDE +1E4D ; [.22FD.0022.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH TILDE AND ACUTE +1E4C ; [.22FD.0022.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE +022D ; [.22FD.0022.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH TILDE AND MACRON +022C ; [.22FD.0022.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH TILDE AND MACRON +1E4F ; [.22FD.0022.0002][.0000.002B.0002] # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS +1E4E ; [.22FD.0022.0008][.0000.002B.0002] # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS +1EE1 ; [.22FD.0022.0002][.0000.003F.0002] # LATIN SMALL LETTER O WITH HORN AND TILDE +1EE0 ; [.22FD.0022.0008][.0000.003F.0002] # LATIN CAPITAL LETTER O WITH HORN AND TILDE +00F4 ; [.22FD.0023.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX +006F 0302 ; [.22FD.0023.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX +00D4 ; [.22FD.0023.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +004F 0302 ; [.22FD.0023.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +1ED3 ; [.22FD.0023.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED2 ; [.22FD.0023.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED1 ; [.22FD.0023.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED0 ; [.22FD.0023.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED7 ; [.22FD.0023.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +1ED6 ; [.22FD.0023.0008][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +1ED5 ; [.22FD.0023.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED4 ; [.22FD.0023.0008][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED9 ; [.22FD.0023.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +1ED8 ; [.22FD.0023.0008][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +01EB ; [.22FD.0024.0002] # LATIN SMALL LETTER O WITH OGONEK +006F 0328 ; [.22FD.0024.0002] # LATIN SMALL LETTER O WITH OGONEK +01EA ; [.22FD.0024.0008] # LATIN CAPITAL LETTER O WITH OGONEK +004F 0328 ; [.22FD.0024.0008] # LATIN CAPITAL LETTER O WITH OGONEK ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/si_dict.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/si_dict.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/si_dict.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/si_dict.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,9 +1,9 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0D82 ; [.2953.0020.0002][.FFF1.0000.0000] # SINHALA SIGN ANUSVARAYA -0D83 ; [.2953.0020.0002][.FFF2.0000.0000] # SINHALA SIGN VISARGAYA -0D96 ; [.2953.0020.0002][.FFF0.0000.0000] # SINHALA LETTER AUYANNA -0DA5 ; [.295C.0020.0002][.298E.0020.0002][.295E.0021.0002] # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0D82 ; [.2C61.0020.0002][.FFF1.0000.0000] # SINHALA SIGN ANUSVARAYA +0D83 ; [.2C61.0020.0002][.FFF2.0000.0000] # SINHALA SIGN VISARGAYA +0D96 ; [.2C61.0020.0002][.FFF0.0000.0000] # SINHALA LETTER AUYANNA +0DA5 ; [.2C6A.0020.0002][.2C9C.0020.0002][.2C6C.0021.0002] # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/si.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/si.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/si.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/si.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,10 +1,10 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0D82 ; [.2953.0020.0002][.FFF1.0000.0000] # SINHALA SIGN ANUSVARAYA -0D83 ; [.2953.0020.0002][.FFF2.0000.0000] # SINHALA SIGN VISARGAYA -0D96 ; [.2953.0020.0002][.FFF0.0000.0000] # SINHALA LETTER AUYANNA -0DA5 ; [.295E.0020.0002] # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA -0DA4 ; [.295F.0020.0002] # SINHALA LETTER TAALUJA NAASIKYAYA + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0D82 ; [.2C61.0020.0002][.FFF1.0000.0000] # SINHALA SIGN ANUSVARAYA +0D83 ; [.2C61.0020.0002][.FFF2.0000.0000] # SINHALA SIGN VISARGAYA +0D96 ; [.2C61.0020.0002][.FFF0.0000.0000] # SINHALA LETTER AUYANNA +0DA5 ; [.2C6C.0020.0002] # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA +0DA4 ; [.2C6D.0020.0002] # SINHALA LETTER TAALUJA NAASIKYAYA ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/sk.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/sk.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/sk.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/sk.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,45 +1,45 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -00E4 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1CAE.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1CAE.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -010D ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON -0063 030C ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON -010C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0043 030C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0063 0068 ; [.1D7F.0020.0002] # -0063 0048 ; [.1D7F.0020.0007][.0000.0000.0002] # -0043 0068 ; [.1D7F.0020.0007][.0000.0000.0008] # -0043 0048 ; [.1D7F.0020.0008] # -00F4 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX -006F 0302 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX -00D4 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -004F 0302 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -1ED3 ; [.1E44.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED2 ; [.1E44.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED1 ; [.1E44.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED0 ; [.1E44.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED7 ; [.1E44.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE -1ED6 ; [.1E44.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE -1ED5 ; [.1E44.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED4 ; [.1E44.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED9 ; [.1E44.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1ED8 ; [.1E44.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW -0159 ; [.1E9A.0020.0002] # LATIN SMALL LETTER R WITH CARON -0072 030C ; [.1E9A.0020.0002] # LATIN SMALL LETTER R WITH CARON -0158 ; [.1E9A.0020.0008] # LATIN CAPITAL LETTER R WITH CARON -0052 030C ; [.1E9A.0020.0008] # LATIN CAPITAL LETTER R WITH CARON -0161 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0073 030C ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0160 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -0053 030C ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -017E ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON -007A 030C ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON -017D ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON -005A 030C ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +00E4 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.1FA3.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.1FA3.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +010D ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON +0063 030C ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON +010C ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0043 030C ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0063 0068 ; [.2076.0020.0002] # +0063 0048 ; [.2076.0020.0007][.0000.0000.0002] # +0043 0068 ; [.2076.0020.0007][.0000.0000.0008] # +0043 0048 ; [.2076.0020.0008] # +00F4 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX +006F 0302 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX +00D4 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +004F 0302 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +1ED3 ; [.213D.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED2 ; [.213D.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED1 ; [.213D.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED0 ; [.213D.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED7 ; [.213D.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +1ED6 ; [.213D.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +1ED5 ; [.213D.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED4 ; [.213D.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED9 ; [.213D.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +1ED8 ; [.213D.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +0159 ; [.2194.0020.0002] # LATIN SMALL LETTER R WITH CARON +0072 030C ; [.2194.0020.0002] # LATIN SMALL LETTER R WITH CARON +0158 ; [.2194.0020.0008] # LATIN CAPITAL LETTER R WITH CARON +0052 030C ; [.2194.0020.0008] # LATIN CAPITAL LETTER R WITH CARON +0161 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0073 030C ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0160 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +0053 030C ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +017E ; [.2287.0020.0002] # LATIN SMALL LETTER Z WITH CARON +007A 030C ; [.2287.0020.0002] # LATIN SMALL LETTER Z WITH CARON +017D ; [.2287.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON +005A 030C ; [.2287.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/sl.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/sl.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/sl.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/sl.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,17 +1,17 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -010D ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON -0063 030C ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON -010C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0043 030C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0161 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0073 030C ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0160 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -0053 030C ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -017E ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON -007A 030C ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON -017D ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON -005A 030C ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +010D ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON +0063 030C ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON +010C ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0043 030C ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0161 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0073 030C ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0160 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +0053 030C ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +017E ; [.2287.0020.0002] # LATIN SMALL LETTER Z WITH CARON +007A 030C ; [.2287.0020.0002] # LATIN SMALL LETTER Z WITH CARON +017D ; [.2287.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON +005A 030C ; [.2287.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/sq.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/sq.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/sq.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/sq.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,49 +1,49 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -00E7 ; [.1CF4.0020.0002] # LATIN SMALL LETTER C WITH CEDILLA -0063 0327 ; [.1CF4.0020.0002] # LATIN SMALL LETTER C WITH CEDILLA -00C7 ; [.1CF4.0020.0008] # LATIN CAPITAL LETTER C WITH CEDILLA -0043 0327 ; [.1CF4.0020.0008] # LATIN CAPITAL LETTER C WITH CEDILLA -0064 0068 ; [.1D0F.0020.0002] # -0064 0048 ; [.1D0F.0020.0007][.0000.0000.0002] # -0044 0068 ; [.1D0F.0020.0007][.0000.0000.0008] # -0044 0048 ; [.1D0F.0020.0008] # -00EB ; [.1D4A.0020.0002] # LATIN SMALL LETTER E WITH DIAERESIS -0065 0308 ; [.1D4A.0020.0002] # LATIN SMALL LETTER E WITH DIAERESIS -00CB ; [.1D4A.0020.0008] # LATIN CAPITAL LETTER E WITH DIAERESIS -0045 0308 ; [.1D4A.0020.0008] # LATIN CAPITAL LETTER E WITH DIAERESIS -0067 006A ; [.1D7D.0020.0002] # -0067 004A ; [.1D7D.0020.0007][.0000.0000.0002] # -0047 006A ; [.1D7D.0020.0007][.0000.0000.0008] # -0047 004A ; [.1D7D.0020.0008] # -006C 006C ; [.1E0F.0020.0002] # -006C 004C ; [.1E0F.0020.0007][.0000.0000.0002] # -004C 006C ; [.1E0F.0020.0007][.0000.0000.0008] # -004C 004C ; [.1E0F.0020.0008] # -006E 006A ; [.1E42.0020.0002] # -006E 004A ; [.1E42.0020.0007][.0000.0000.0002] # -004E 006A ; [.1E42.0020.0007][.0000.0000.0008] # -004E 004A ; [.1E42.0020.0008] # -0072 0072 ; [.1ED6.0020.0002] # -0072 0052 ; [.1ED6.0020.0007][.0000.0000.0002] # -0052 0072 ; [.1ED6.0020.0007][.0000.0000.0008] # -0052 0052 ; [.1ED6.0020.0008] # -0073 0068 ; [.1EFA.0020.0002] # -0073 0048 ; [.1EFA.0020.0007][.0000.0000.0002] # -0053 0068 ; [.1EFA.0020.0007][.0000.0000.0008] # -0053 0048 ; [.1EFA.0020.0008] # -0074 0068 ; [.1F1A.0020.0002] # -0074 0048 ; [.1F1A.0020.0007][.0000.0000.0002] # -0054 0068 ; [.1F1A.0020.0007][.0000.0000.0008] # -0054 0048 ; [.1F1A.0020.0008] # -0078 0068 ; [.1F70.0020.0002] # -0078 0048 ; [.1F70.0020.0007][.0000.0000.0002] # -0058 0068 ; [.1F70.0020.0007][.0000.0000.0008] # -0058 0048 ; [.1F70.0020.0008] # -007A 0068 ; [.1FA3.0020.0002] # -007A 0048 ; [.1FA3.0020.0007][.0000.0000.0002] # -005A 0068 ; [.1FA3.0020.0007][.0000.0000.0008] # -005A 0048 ; [.1FA3.0020.0008] # + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +00E7 ; [.1FEA.0020.0002] # LATIN SMALL LETTER C WITH CEDILLA +0063 0327 ; [.1FEA.0020.0002] # LATIN SMALL LETTER C WITH CEDILLA +00C7 ; [.1FEA.0020.0008] # LATIN CAPITAL LETTER C WITH CEDILLA +0043 0327 ; [.1FEA.0020.0008] # LATIN CAPITAL LETTER C WITH CEDILLA +0064 0068 ; [.2006.0020.0002] # +0064 0048 ; [.2006.0020.0007][.0000.0000.0002] # +0044 0068 ; [.2006.0020.0007][.0000.0000.0008] # +0044 0048 ; [.2006.0020.0008] # +00EB ; [.2041.0020.0002] # LATIN SMALL LETTER E WITH DIAERESIS +0065 0308 ; [.2041.0020.0002] # LATIN SMALL LETTER E WITH DIAERESIS +00CB ; [.2041.0020.0008] # LATIN CAPITAL LETTER E WITH DIAERESIS +0045 0308 ; [.2041.0020.0008] # LATIN CAPITAL LETTER E WITH DIAERESIS +0067 006A ; [.2074.0020.0002] # +0067 004A ; [.2074.0020.0007][.0000.0000.0002] # +0047 006A ; [.2074.0020.0007][.0000.0000.0008] # +0047 004A ; [.2074.0020.0008] # +006C 006C ; [.2108.0020.0002] # +006C 004C ; [.2108.0020.0007][.0000.0000.0002] # +004C 006C ; [.2108.0020.0007][.0000.0000.0008] # +004C 004C ; [.2108.0020.0008] # +006E 006A ; [.213B.0020.0002] # +006E 004A ; [.213B.0020.0007][.0000.0000.0002] # +004E 006A ; [.213B.0020.0007][.0000.0000.0008] # +004E 004A ; [.213B.0020.0008] # +0072 0072 ; [.21D1.0020.0002] # +0072 0052 ; [.21D1.0020.0007][.0000.0000.0002] # +0052 0072 ; [.21D1.0020.0007][.0000.0000.0008] # +0052 0052 ; [.21D1.0020.0008] # +0073 0068 ; [.21F6.0020.0002] # +0073 0048 ; [.21F6.0020.0007][.0000.0000.0002] # +0053 0068 ; [.21F6.0020.0007][.0000.0000.0008] # +0053 0048 ; [.21F6.0020.0008] # +0074 0068 ; [.2216.0020.0002] # +0074 0048 ; [.2216.0020.0007][.0000.0000.0002] # +0054 0068 ; [.2216.0020.0007][.0000.0000.0008] # +0054 0048 ; [.2216.0020.0008] # +0078 0068 ; [.226F.0020.0002] # +0078 0048 ; [.226F.0020.0007][.0000.0000.0002] # +0058 0068 ; [.226F.0020.0007][.0000.0000.0008] # +0058 0048 ; [.226F.0020.0008] # +007A 0068 ; [.22A2.0020.0002] # +007A 0048 ; [.22A2.0020.0007][.0000.0000.0002] # +005A 0068 ; [.22A2.0020.0007][.0000.0000.0008] # +005A 0048 ; [.22A2.0020.0008] # ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/sr.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/sr.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/sr.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/sr.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,8 +1,8 @@ +{ - locale_version => 1.27, + locale_version => 1.29, suppress => [0x0418, 0x0438], - entry => <<'ENTRY', # for DUCET v10.0.0 -0439 ; [.20E6.0020.0002][.0000.0026.0002] # CYRILLIC SMALL LETTER SHORT I -0419 ; [.20E6.0020.0008][.0000.0026.0002] # CYRILLIC CAPITAL LETTER SHORT I + entry => <<'ENTRY', # for DUCET v13.0.0 +0439 ; [.23E5.0020.0002][.0000.0026.0002] # CYRILLIC SMALL LETTER SHORT I +0419 ; [.23E5.0020.0008][.0000.0026.0002] # CYRILLIC CAPITAL LETTER SHORT I ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/sv.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/sv.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/sv.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/sv.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,89 +1,89 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0111 ; [.1CF5.0021.0002] # LATIN SMALL LETTER D WITH STROKE -0064 0335 ; [.1CF5.0021.0002] # LATIN SMALL LETTER D WITH STROKE -0110 ; [.1CF5.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE -0044 0335 ; [.1CF5.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE -00F0 ; [.1CF5.0022.0002] # LATIN SMALL LETTER ETH -1DD9 ; [.1CF5.0022.0002] # COMBINING LATIN SMALL LETTER ETH -00D0 ; [.1CF5.0022.0008] # LATIN CAPITAL LETTER ETH -00FE ; [.1EFB.0020.0003][.1D7E.0020.0003] # LATIN SMALL LETTER THORN -00DE ; [.1EFB.0020.0009][.1D7E.0020.0009] # LATIN CAPITAL LETTER THORN -0077 ; [.1F49.0021.0002] # LATIN SMALL LETTER W -0057 ; [.1F49.0021.0008] # LATIN CAPITAL LETTER W -00FC ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1F71.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F71.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1F71.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F71.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1F71.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F71.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1F71.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F71.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0171 ; [.1F71.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0075 030B ; [.1F71.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0170 ; [.1F71.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -0055 030B ; [.1F71.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -00E5 ; [.1FFC.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -0061 030A ; [.1FFC.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -00C5 ; [.1FFC.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -0041 030A ; [.1FFC.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -212B ; [.1FFC.0020.0008] # ANGSTROM SIGN -01FB ; [.1FFC.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE -01FA ; [.1FFC.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE -00E4 ; [.1FFD.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1FFD.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1FFD.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1FFD.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -00E6 ; [.1FFD.0021.0002] # LATIN SMALL LETTER AE -1DD4 ; [.1FFD.0021.0002] # COMBINING LATIN SMALL LETTER AE -00C6 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER AE -1D2D ; [.1FFD.0021.0014] # MODIFIER LETTER CAPITAL AE -01FD ; [.1FFD.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE -01FC ; [.1FFD.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE -01E3 ; [.1FFD.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON -01E2 ; [.1FFD.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON -0119 ; [.1FFD.0022.0002] # LATIN SMALL LETTER E WITH OGONEK -0065 0328 ; [.1FFD.0022.0002] # LATIN SMALL LETTER E WITH OGONEK -0118 ; [.1FFD.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK -0045 0328 ; [.1FFD.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK -00F6 ; [.1FFE.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1FFE.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1FFE.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1FFE.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -00F8 ; [.1FFE.0021.0002] # LATIN SMALL LETTER O WITH STROKE -006F 0338 ; [.1FFE.0021.0002] # LATIN SMALL LETTER O WITH STROKE -00D8 ; [.1FFE.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE -004F 0338 ; [.1FFE.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE -01FF ; [.1FFE.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE -01FE ; [.1FFE.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE -0151 ; [.1FFE.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -006F 030B ; [.1FFE.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -0150 ; [.1FFE.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -004F 030B ; [.1FFE.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -0153 ; [.1FFE.0023.0002] # LATIN SMALL LIGATURE OE -0152 ; [.1FFE.0023.0008] # LATIN CAPITAL LIGATURE OE -00F4 ; [.1FFE.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX -006F 0302 ; [.1FFE.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX -00D4 ; [.1FFE.0024.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -004F 0302 ; [.1FFE.0024.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -1ED3 ; [.1FFE.0024.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED2 ; [.1FFE.0024.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED1 ; [.1FFE.0024.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED0 ; [.1FFE.0024.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED7 ; [.1FFE.0024.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE -1ED6 ; [.1FFE.0024.0008][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE -1ED5 ; [.1FFE.0024.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED4 ; [.1FFE.0024.0008][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED9 ; [.1FFE.0024.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1ED8 ; [.1FFE.0024.0008][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0111 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE +0064 0335 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE +0110 ; [.1FEB.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE +0044 0335 ; [.1FEB.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE +00F0 ; [.1FEB.0022.0002] # LATIN SMALL LETTER ETH +1DD9 ; [.1FEB.0022.0002] # COMBINING LATIN SMALL LETTER ETH +00D0 ; [.1FEB.0022.0008] # LATIN CAPITAL LETTER ETH +00FE ; [.21F7.0020.0003][.2075.0020.0003] # LATIN SMALL LETTER THORN +00DE ; [.21F7.0020.0009][.2075.0020.0009] # LATIN CAPITAL LETTER THORN +0077 ; [.2247.0021.0002] # LATIN SMALL LETTER W +0057 ; [.2247.0021.0008] # LATIN CAPITAL LETTER W +00FC ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.2270.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2270.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.2270.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2270.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.2270.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2270.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.2270.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2270.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0171 ; [.2270.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0075 030B ; [.2270.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0170 ; [.2270.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0055 030B ; [.2270.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +00E5 ; [.22FB.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +0061 030A ; [.22FB.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +00C5 ; [.22FB.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +0041 030A ; [.22FB.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +212B ; [.22FB.0020.0008] # ANGSTROM SIGN +01FB ; [.22FB.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +01FA ; [.22FB.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +00E4 ; [.22FC.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.22FC.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.22FC.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.22FC.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +00E6 ; [.22FC.0021.0002] # LATIN SMALL LETTER AE +1DD4 ; [.22FC.0021.0002] # COMBINING LATIN SMALL LETTER AE +00C6 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER AE +1D2D ; [.22FC.0021.0014] # MODIFIER LETTER CAPITAL AE +01FD ; [.22FC.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE +01FC ; [.22FC.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE +01E3 ; [.22FC.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON +01E2 ; [.22FC.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON +0119 ; [.22FC.0022.0002] # LATIN SMALL LETTER E WITH OGONEK +0065 0328 ; [.22FC.0022.0002] # LATIN SMALL LETTER E WITH OGONEK +0118 ; [.22FC.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK +0045 0328 ; [.22FC.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK +00F6 ; [.22FD.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.22FD.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.22FD.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.22FD.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.22FD.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.22FD.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +00F8 ; [.22FD.0021.0002] # LATIN SMALL LETTER O WITH STROKE +006F 0338 ; [.22FD.0021.0002] # LATIN SMALL LETTER O WITH STROKE +00D8 ; [.22FD.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE +004F 0338 ; [.22FD.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE +01FF ; [.22FD.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE +01FE ; [.22FD.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +0151 ; [.22FD.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +006F 030B ; [.22FD.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +0150 ; [.22FD.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +004F 030B ; [.22FD.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +0153 ; [.22FD.0023.0002] # LATIN SMALL LIGATURE OE +0152 ; [.22FD.0023.0008] # LATIN CAPITAL LIGATURE OE +00F4 ; [.22FD.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX +006F 0302 ; [.22FD.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX +00D4 ; [.22FD.0024.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +004F 0302 ; [.22FD.0024.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +1ED3 ; [.22FD.0024.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED2 ; [.22FD.0024.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED1 ; [.22FD.0024.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED0 ; [.22FD.0024.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED7 ; [.22FD.0024.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +1ED6 ; [.22FD.0024.0008][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +1ED5 ; [.22FD.0024.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED4 ; [.22FD.0024.0008][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED9 ; [.22FD.0024.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +1ED8 ; [.22FD.0024.0008][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/sv_refo.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/sv_refo.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/sv_refo.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/sv_refo.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,87 +1,87 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0111 ; [.1CF5.0021.0002] # LATIN SMALL LETTER D WITH STROKE -0064 0335 ; [.1CF5.0021.0002] # LATIN SMALL LETTER D WITH STROKE -0110 ; [.1CF5.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE -0044 0335 ; [.1CF5.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE -00F0 ; [.1CF5.0022.0002] # LATIN SMALL LETTER ETH -1DD9 ; [.1CF5.0022.0002] # COMBINING LATIN SMALL LETTER ETH -00D0 ; [.1CF5.0022.0008] # LATIN CAPITAL LETTER ETH -00FE ; [.1EFB.0020.0003][.1D7E.0020.0003] # LATIN SMALL LETTER THORN -00DE ; [.1EFB.0020.0009][.1D7E.0020.0009] # LATIN CAPITAL LETTER THORN -00FC ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F71.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F71.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1F71.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F71.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1F71.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F71.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1F71.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F71.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1F71.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F71.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0171 ; [.1F71.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0075 030B ; [.1F71.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0170 ; [.1F71.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -0055 030B ; [.1F71.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -00E5 ; [.1FFC.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -0061 030A ; [.1FFC.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE -00C5 ; [.1FFC.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -0041 030A ; [.1FFC.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE -212B ; [.1FFC.0020.0008] # ANGSTROM SIGN -01FB ; [.1FFC.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE -01FA ; [.1FFC.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE -00E4 ; [.1FFD.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1FFD.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1FFD.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1FFD.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1FFD.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -00E6 ; [.1FFD.0021.0002] # LATIN SMALL LETTER AE -1DD4 ; [.1FFD.0021.0002] # COMBINING LATIN SMALL LETTER AE -00C6 ; [.1FFD.0021.0008] # LATIN CAPITAL LETTER AE -1D2D ; [.1FFD.0021.0014] # MODIFIER LETTER CAPITAL AE -01FD ; [.1FFD.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE -01FC ; [.1FFD.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE -01E3 ; [.1FFD.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON -01E2 ; [.1FFD.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON -0119 ; [.1FFD.0022.0002] # LATIN SMALL LETTER E WITH OGONEK -0065 0328 ; [.1FFD.0022.0002] # LATIN SMALL LETTER E WITH OGONEK -0118 ; [.1FFD.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK -0045 0328 ; [.1FFD.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK -00F6 ; [.1FFE.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1FFE.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1FFE.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1FFE.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1FFE.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -00F8 ; [.1FFE.0021.0002] # LATIN SMALL LETTER O WITH STROKE -006F 0338 ; [.1FFE.0021.0002] # LATIN SMALL LETTER O WITH STROKE -00D8 ; [.1FFE.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE -004F 0338 ; [.1FFE.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE -01FF ; [.1FFE.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE -01FE ; [.1FFE.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE -0151 ; [.1FFE.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -006F 030B ; [.1FFE.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE -0150 ; [.1FFE.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -004F 030B ; [.1FFE.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -0153 ; [.1FFE.0023.0002] # LATIN SMALL LIGATURE OE -0152 ; [.1FFE.0023.0008] # LATIN CAPITAL LIGATURE OE -00F4 ; [.1FFE.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX -006F 0302 ; [.1FFE.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX -00D4 ; [.1FFE.0024.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -004F 0302 ; [.1FFE.0024.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -1ED3 ; [.1FFE.0024.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED2 ; [.1FFE.0024.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED1 ; [.1FFE.0024.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED0 ; [.1FFE.0024.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED7 ; [.1FFE.0024.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE -1ED6 ; [.1FFE.0024.0008][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE -1ED5 ; [.1FFE.0024.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED4 ; [.1FFE.0024.0008][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED9 ; [.1FFE.0024.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1ED8 ; [.1FFE.0024.0008][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0111 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE +0064 0335 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE +0110 ; [.1FEB.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE +0044 0335 ; [.1FEB.0021.0008] # LATIN CAPITAL LETTER D WITH STROKE +00F0 ; [.1FEB.0022.0002] # LATIN SMALL LETTER ETH +1DD9 ; [.1FEB.0022.0002] # COMBINING LATIN SMALL LETTER ETH +00D0 ; [.1FEB.0022.0008] # LATIN CAPITAL LETTER ETH +00FE ; [.21F7.0020.0003][.2075.0020.0003] # LATIN SMALL LETTER THORN +00DE ; [.21F7.0020.0009][.2075.0020.0009] # LATIN CAPITAL LETTER THORN +00FC ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2270.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2270.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.2270.0021.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2270.0021.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.2270.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2270.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.2270.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2270.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.2270.0021.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2270.0021.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0171 ; [.2270.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0075 030B ; [.2270.0022.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0170 ; [.2270.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0055 030B ; [.2270.0022.0008] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +00E5 ; [.22FB.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +0061 030A ; [.22FB.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE +00C5 ; [.22FB.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +0041 030A ; [.22FB.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE +212B ; [.22FB.0020.0008] # ANGSTROM SIGN +01FB ; [.22FB.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +01FA ; [.22FB.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +00E4 ; [.22FC.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.22FC.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.22FC.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.22FC.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +00E6 ; [.22FC.0021.0002] # LATIN SMALL LETTER AE +1DD4 ; [.22FC.0021.0002] # COMBINING LATIN SMALL LETTER AE +00C6 ; [.22FC.0021.0008] # LATIN CAPITAL LETTER AE +1D2D ; [.22FC.0021.0014] # MODIFIER LETTER CAPITAL AE +01FD ; [.22FC.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE +01FC ; [.22FC.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE +01E3 ; [.22FC.0021.0002][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON +01E2 ; [.22FC.0021.0008][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON +0119 ; [.22FC.0022.0002] # LATIN SMALL LETTER E WITH OGONEK +0065 0328 ; [.22FC.0022.0002] # LATIN SMALL LETTER E WITH OGONEK +0118 ; [.22FC.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK +0045 0328 ; [.22FC.0022.0008] # LATIN CAPITAL LETTER E WITH OGONEK +00F6 ; [.22FD.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.22FD.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.22FD.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.22FD.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.22FD.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.22FD.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +00F8 ; [.22FD.0021.0002] # LATIN SMALL LETTER O WITH STROKE +006F 0338 ; [.22FD.0021.0002] # LATIN SMALL LETTER O WITH STROKE +00D8 ; [.22FD.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE +004F 0338 ; [.22FD.0021.0008] # LATIN CAPITAL LETTER O WITH STROKE +01FF ; [.22FD.0021.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE +01FE ; [.22FD.0021.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +0151 ; [.22FD.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +006F 030B ; [.22FD.0022.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE +0150 ; [.22FD.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +004F 030B ; [.22FD.0022.0008] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +0153 ; [.22FD.0023.0002] # LATIN SMALL LIGATURE OE +0152 ; [.22FD.0023.0008] # LATIN CAPITAL LIGATURE OE +00F4 ; [.22FD.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX +006F 0302 ; [.22FD.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX +00D4 ; [.22FD.0024.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +004F 0302 ; [.22FD.0024.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +1ED3 ; [.22FD.0024.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED2 ; [.22FD.0024.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED1 ; [.22FD.0024.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED0 ; [.22FD.0024.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED7 ; [.22FD.0024.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +1ED6 ; [.22FD.0024.0008][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +1ED5 ; [.22FD.0024.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED4 ; [.22FD.0024.0008][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED9 ; [.22FD.0024.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +1ED8 ; [.22FD.0024.0008][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ta.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ta.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ta.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ta.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,55 +1,55 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0B82 ; [.2840.0020.0002][.FFF0.0000.0000] # TAMIL SIGN ANUSVARA -0B83 ; [.2840.0020.0002][.FFF1.0000.0000] # TAMIL SIGN VISARGA -0B95 0BCD 0BB7 0BCD ; [.2857.0020.0002][.FFF2.0000.0000] # -0B95 0BCD 0BB7 ; [.2857.0020.0002][.FFF3.0000.0000] # -0B95 0BCD ; [.2841.0020.0002][.FFF0.0000.0000] # -0B95 ; [.2841.0020.0002][.FFF1.0000.0000] # TAMIL LETTER KA -0B99 0BCD ; [.2842.0020.0002][.FFF0.0000.0000] # -0B99 ; [.2842.0020.0002][.FFF1.0000.0000] # TAMIL LETTER NGA -0B9A 0BCD ; [.2843.0020.0002][.FFF0.0000.0000] # -0B9A ; [.2843.0020.0002][.FFF1.0000.0000] # TAMIL LETTER CA -0B9E 0BCD ; [.2844.0020.0002][.FFF0.0000.0000] # -0B9E ; [.2844.0020.0002][.FFF1.0000.0000] # TAMIL LETTER NYA -0B9F 0BCD ; [.2845.0020.0002][.FFF0.0000.0000] # -0B9F ; [.2845.0020.0002][.FFF1.0000.0000] # TAMIL LETTER TTA -0BA3 0BCD ; [.2846.0020.0002][.FFF0.0000.0000] # -0BA3 ; [.2846.0020.0002][.FFF1.0000.0000] # TAMIL LETTER NNA -0BA4 0BCD ; [.2847.0020.0002][.FFF0.0000.0000] # -0BA4 ; [.2847.0020.0002][.FFF1.0000.0000] # TAMIL LETTER TA -0BA8 0BCD ; [.2848.0020.0002][.FFF0.0000.0000] # -0BA8 ; [.2848.0020.0002][.FFF1.0000.0000] # TAMIL LETTER NA -0BAA 0BCD ; [.2849.0020.0002][.FFF0.0000.0000] # -0BAA ; [.2849.0020.0002][.FFF1.0000.0000] # TAMIL LETTER PA -0BAE 0BCD ; [.284A.0020.0002][.FFF0.0000.0000] # -0BAE ; [.284A.0020.0002][.FFF1.0000.0000] # TAMIL LETTER MA -0BAF 0BCD ; [.284B.0020.0002][.FFF0.0000.0000] # -0BAF ; [.284B.0020.0002][.FFF1.0000.0000] # TAMIL LETTER YA -0BB0 0BCD ; [.284C.0020.0002][.FFF0.0000.0000] # -0BB0 ; [.284C.0020.0002][.FFF1.0000.0000] # TAMIL LETTER RA -0BB2 0BCD ; [.284D.0020.0002][.FFF0.0000.0000] # -0BB2 ; [.284D.0020.0002][.FFF1.0000.0000] # TAMIL LETTER LA -0BB5 0BCD ; [.284E.0020.0002][.FFF0.0000.0000] # -0BB5 ; [.284E.0020.0002][.FFF1.0000.0000] # TAMIL LETTER VA -0BB4 0BCD ; [.284F.0020.0002][.FFF0.0000.0000] # -0BB4 ; [.284F.0020.0002][.FFF1.0000.0000] # TAMIL LETTER LLLA -0BB3 0BCD ; [.2850.0020.0002][.FFF0.0000.0000] # -0BB3 ; [.2850.0020.0002][.FFF1.0000.0000] # TAMIL LETTER LLA -0BB1 0BCD ; [.2851.0020.0002][.FFF0.0000.0000] # -0BB1 ; [.2851.0020.0002][.FFF1.0000.0000] # TAMIL LETTER RRA -0BA9 0BCD ; [.2852.0020.0002][.FFF0.0000.0000] # -0BA9 ; [.2852.0020.0002][.FFF1.0000.0000] # TAMIL LETTER NNNA -0B9C 0BCD ; [.2853.0020.0002][.FFF0.0000.0000] # -0B9C ; [.2853.0020.0002][.FFF1.0000.0000] # TAMIL LETTER JA -0BB6 0BCD ; [.2854.0020.0002][.FFF0.0000.0000] # -0BB6 ; [.2854.0020.0002][.FFF1.0000.0000] # TAMIL LETTER SHA -0BB7 0BCD ; [.2855.0020.0002][.FFF0.0000.0000] # -0BB7 ; [.2855.0020.0002][.FFF1.0000.0000] # TAMIL LETTER SSA -0BB8 0BCD ; [.2856.0020.0002][.FFF0.0000.0000] # -0BB8 ; [.2856.0020.0002][.FFF1.0000.0000] # TAMIL LETTER SA -0BB9 0BCD ; [.2857.0020.0002][.FFF0.0000.0000] # -0BB9 ; [.2857.0020.0002][.FFF1.0000.0000] # TAMIL LETTER HA + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0B82 ; [.2B4D.0020.0002][.FFF0.0000.0000] # TAMIL SIGN ANUSVARA +0B83 ; [.2B4D.0020.0002][.FFF1.0000.0000] # TAMIL SIGN VISARGA +0B95 0BCD 0BB7 0BCD ; [.2B64.0020.0002][.FFF2.0000.0000] # +0B95 0BCD 0BB7 ; [.2B64.0020.0002][.FFF3.0000.0000] # +0B95 0BCD ; [.2B4E.0020.0002][.FFF0.0000.0000] # +0B95 ; [.2B4E.0020.0002][.FFF1.0000.0000] # TAMIL LETTER KA +0B99 0BCD ; [.2B4F.0020.0002][.FFF0.0000.0000] # +0B99 ; [.2B4F.0020.0002][.FFF1.0000.0000] # TAMIL LETTER NGA +0B9A 0BCD ; [.2B50.0020.0002][.FFF0.0000.0000] # +0B9A ; [.2B50.0020.0002][.FFF1.0000.0000] # TAMIL LETTER CA +0B9E 0BCD ; [.2B51.0020.0002][.FFF0.0000.0000] # +0B9E ; [.2B51.0020.0002][.FFF1.0000.0000] # TAMIL LETTER NYA +0B9F 0BCD ; [.2B52.0020.0002][.FFF0.0000.0000] # +0B9F ; [.2B52.0020.0002][.FFF1.0000.0000] # TAMIL LETTER TTA +0BA3 0BCD ; [.2B53.0020.0002][.FFF0.0000.0000] # +0BA3 ; [.2B53.0020.0002][.FFF1.0000.0000] # TAMIL LETTER NNA +0BA4 0BCD ; [.2B54.0020.0002][.FFF0.0000.0000] # +0BA4 ; [.2B54.0020.0002][.FFF1.0000.0000] # TAMIL LETTER TA +0BA8 0BCD ; [.2B55.0020.0002][.FFF0.0000.0000] # +0BA8 ; [.2B55.0020.0002][.FFF1.0000.0000] # TAMIL LETTER NA +0BAA 0BCD ; [.2B56.0020.0002][.FFF0.0000.0000] # +0BAA ; [.2B56.0020.0002][.FFF1.0000.0000] # TAMIL LETTER PA +0BAE 0BCD ; [.2B57.0020.0002][.FFF0.0000.0000] # +0BAE ; [.2B57.0020.0002][.FFF1.0000.0000] # TAMIL LETTER MA +0BAF 0BCD ; [.2B58.0020.0002][.FFF0.0000.0000] # +0BAF ; [.2B58.0020.0002][.FFF1.0000.0000] # TAMIL LETTER YA +0BB0 0BCD ; [.2B59.0020.0002][.FFF0.0000.0000] # +0BB0 ; [.2B59.0020.0002][.FFF1.0000.0000] # TAMIL LETTER RA +0BB2 0BCD ; [.2B5A.0020.0002][.FFF0.0000.0000] # +0BB2 ; [.2B5A.0020.0002][.FFF1.0000.0000] # TAMIL LETTER LA +0BB5 0BCD ; [.2B5B.0020.0002][.FFF0.0000.0000] # +0BB5 ; [.2B5B.0020.0002][.FFF1.0000.0000] # TAMIL LETTER VA +0BB4 0BCD ; [.2B5C.0020.0002][.FFF0.0000.0000] # +0BB4 ; [.2B5C.0020.0002][.FFF1.0000.0000] # TAMIL LETTER LLLA +0BB3 0BCD ; [.2B5D.0020.0002][.FFF0.0000.0000] # +0BB3 ; [.2B5D.0020.0002][.FFF1.0000.0000] # TAMIL LETTER LLA +0BB1 0BCD ; [.2B5E.0020.0002][.FFF0.0000.0000] # +0BB1 ; [.2B5E.0020.0002][.FFF1.0000.0000] # TAMIL LETTER RRA +0BA9 0BCD ; [.2B5F.0020.0002][.FFF0.0000.0000] # +0BA9 ; [.2B5F.0020.0002][.FFF1.0000.0000] # TAMIL LETTER NNNA +0B9C 0BCD ; [.2B60.0020.0002][.FFF0.0000.0000] # +0B9C ; [.2B60.0020.0002][.FFF1.0000.0000] # TAMIL LETTER JA +0BB6 0BCD ; [.2B61.0020.0002][.FFF0.0000.0000] # +0BB6 ; [.2B61.0020.0002][.FFF1.0000.0000] # TAMIL LETTER SHA +0BB7 0BCD ; [.2B62.0020.0002][.FFF0.0000.0000] # +0BB7 ; [.2B62.0020.0002][.FFF1.0000.0000] # TAMIL LETTER SSA +0BB8 0BCD ; [.2B63.0020.0002][.FFF0.0000.0000] # +0BB8 ; [.2B63.0020.0002][.FFF1.0000.0000] # TAMIL LETTER SA +0BB9 0BCD ; [.2B64.0020.0002][.FFF0.0000.0000] # +0BB9 ; [.2B64.0020.0002][.FFF1.0000.0000] # TAMIL LETTER HA ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/te.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/te.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/te.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/te.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,9 +1,9 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0C01 ; [.2874.0020.0002][.FFF1.0000.0000] # TELUGU SIGN CANDRABINDU -0C02 ; [.2874.0020.0002][.FFF2.0000.0000] # TELUGU SIGN ANUSVARA -0C03 ; [.2874.0020.0002][.FFF3.0000.0000] # TELUGU SIGN VISARGA -0C14 ; [.2874.0020.0002][.FFF0.0000.0000] # TELUGU LETTER AU + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0C01 ; [.2B81.0020.0002][.FFF1.0000.0000] # TELUGU SIGN CANDRABINDU +0C02 ; [.2B81.0020.0002][.FFF2.0000.0000] # TELUGU SIGN ANUSVARA +0C03 ; [.2B81.0020.0002][.FFF3.0000.0000] # TELUGU SIGN VISARGA +0C14 ; [.2B81.0020.0002][.FFF0.0000.0000] # TELUGU LETTER AU ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/th.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/th.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/th.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/th.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,23 +1,23 @@ +{ - locale_version => 1.27, + locale_version => 1.29, variable => 'shifted', alternate => 'shifted', - entry => <<'ENTRY', # for DUCET v10.0.0 -0E2F ; [*03F5.0020.0002][*FFF0.0000.0000] # THAI CHARACTER PAIYANNOI -0E5A ; [*03F5.0020.0002][*FFF1.0000.0000] # THAI CHARACTER ANGKHANKHU -0E46 ; [*03F6.0020.0002][*FFF1.0000.0000] # THAI CHARACTER MAIYAMOK -0E5B ; [*03F6.0020.0002][*FFF0.0000.0000] # THAI CHARACTER KHOMUT -0E4C ; [.0000.00D3.0002] # THAI CHARACTER THANTHAKHAT -0E47 ; [.0000.00D4.0002] # THAI CHARACTER MAITAIKHU -0E48 ; [.0000.00D5.0002] # THAI CHARACTER MAI EK -0E49 ; [.0000.00D6.0002] # THAI CHARACTER MAI THO -0E4A ; [.0000.00D7.0002] # THAI CHARACTER MAI TRI -0E4B ; [.0000.00D8.0002] # THAI CHARACTER MAI CHATTAWA -0E4D ; [.2E4E.0020.0002] # THAI CHARACTER NIKHAHIT -0E45 ; [.2E51.0020.0003] # THAI CHARACTER LAKKHANGYAO -0E4D 0E32 ; [.2E51.0020.0002][.2E4E.0020.0003] # THAI CHARACTER SARA AM -0E33 ; [.2E51.0020.0002][.2E4E.0020.0004] # THAI CHARACTER SARA AM -0E45 0E4D ; [.2E4E.0020.0002][.2E51.0020.0004] # -0E3A ; [.2E5F.0020.0002] # THAI CHARACTER PHINTHU + entry => <<'ENTRY', # for DUCET v13.0.0 +0E2F ; [*040C.0020.0002][*FFF0.0000.0000] # THAI CHARACTER PAIYANNOI +0E5A ; [*040C.0020.0002][*FFF1.0000.0000] # THAI CHARACTER ANGKHANKHU +0E46 ; [*040D.0020.0002][*FFF1.0000.0000] # THAI CHARACTER MAIYAMOK +0E5B ; [*040D.0020.0002][*FFF0.0000.0000] # THAI CHARACTER KHOMUT +0E4C ; [.0000.00D4.0002] # THAI CHARACTER THANTHAKHAT +0E47 ; [.0000.00D5.0002] # THAI CHARACTER MAITAIKHU +0E48 ; [.0000.00D6.0002] # THAI CHARACTER MAI EK +0E49 ; [.0000.00D7.0002] # THAI CHARACTER MAI THO +0E4A ; [.0000.00D8.0002] # THAI CHARACTER MAI TRI +0E4B ; [.0000.00D9.0002] # THAI CHARACTER MAI CHATTAWA +0E4D ; [.3245.0020.0002] # THAI CHARACTER NIKHAHIT +0E45 ; [.3248.0020.0003] # THAI CHARACTER LAKKHANGYAO +0E4D 0E32 ; [.3248.0020.0002][.3245.0020.0003] # THAI CHARACTER SARA AM +0E33 ; [.3248.0020.0002][.3245.0020.0004] # THAI CHARACTER SARA AM +0E45 0E4D ; [.3245.0020.0002][.3248.0020.0004] # +0E3A ; [.3256.0020.0002] # THAI CHARACTER PHINTHU ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/tn.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/tn.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/tn.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/tn.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,37 +1,37 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -00EA ; [.1D11.0020.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -0065 0302 ; [.1D11.0020.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -00CA ; [.1D11.0020.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -0045 0302 ; [.1D11.0020.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -1EC1 ; [.1D11.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC0 ; [.1D11.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -1EBF ; [.1D11.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -1EBE ; [.1D11.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -1EC5 ; [.1D11.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE -1EC4 ; [.1D11.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE -1EC3 ; [.1D11.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC2 ; [.1D11.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC7 ; [.1D11.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC6 ; [.1D11.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW -00F4 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX -006F 0302 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX -00D4 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -004F 0302 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -1ED3 ; [.1E44.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED2 ; [.1E44.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED1 ; [.1E44.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED0 ; [.1E44.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED7 ; [.1E44.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE -1ED6 ; [.1E44.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE -1ED5 ; [.1E44.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED4 ; [.1E44.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED9 ; [.1E44.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1ED8 ; [.1E44.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW -0161 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0073 030C ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON -0160 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -0053 030C ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +00EA ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +0065 0302 ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +00CA ; [.2008.0020.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +0045 0302 ; [.2008.0020.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +1EC1 ; [.2008.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +1EC0 ; [.2008.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +1EBF ; [.2008.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +1EBE ; [.2008.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +1EC5 ; [.2008.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +1EC4 ; [.2008.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +1EC3 ; [.2008.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC2 ; [.2008.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC7 ; [.2008.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +1EC6 ; [.2008.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +00F4 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX +006F 0302 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX +00D4 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +004F 0302 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +1ED3 ; [.213D.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED2 ; [.213D.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED1 ; [.213D.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED0 ; [.213D.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED7 ; [.213D.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +1ED6 ; [.213D.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +1ED5 ; [.213D.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED4 ; [.213D.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED9 ; [.213D.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +1ED8 ; [.213D.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +0161 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0073 030C ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CARON +0160 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +0053 030C ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CARON ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/to.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/to.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/to.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/to.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,62 +1,62 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -006E 0067 ; [.1E20.0020.0002] # -004E 0067 ; [.1E20.0020.0007] # -004E 0047 ; [.1E20.0020.0008] # -014B ; [.1E20.0020.001C] # LATIN SMALL LETTER ENG -014A ; [.1E20.0020.001D] # LATIN CAPITAL LETTER ENG -02BB ; [.1F88.0020.0002] # MODIFIER LETTER TURNED COMMA -02BD ; [.1F88.0020.0003] # MODIFIER LETTER REVERSED COMMA -00E1 ; [.1CAD.0021.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0301 ; [.1CAD.0021.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0341 ; [.1CAD.0021.0002] # LATIN SMALL LETTER A WITH ACUTE -00C1 ; [.1CAD.0021.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0301 ; [.1CAD.0021.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0341 ; [.1CAD.0021.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0101 ; [.1CAD.0022.0002] # LATIN SMALL LETTER A WITH MACRON -0061 0304 ; [.1CAD.0022.0002] # LATIN SMALL LETTER A WITH MACRON -0100 ; [.1CAD.0022.0008] # LATIN CAPITAL LETTER A WITH MACRON -0041 0304 ; [.1CAD.0022.0008] # LATIN CAPITAL LETTER A WITH MACRON -00E9 ; [.1D10.0021.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0301 ; [.1D10.0021.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0341 ; [.1D10.0021.0002] # LATIN SMALL LETTER E WITH ACUTE -00C9 ; [.1D10.0021.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0301 ; [.1D10.0021.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0341 ; [.1D10.0021.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0113 ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH MACRON -0065 0304 ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH MACRON -0112 ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH MACRON -0045 0304 ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH MACRON -00ED ; [.1D98.0021.0002] # LATIN SMALL LETTER I WITH ACUTE -0069 0301 ; [.1D98.0021.0002] # LATIN SMALL LETTER I WITH ACUTE -0069 0341 ; [.1D98.0021.0002] # LATIN SMALL LETTER I WITH ACUTE -00CD ; [.1D98.0021.0008] # LATIN CAPITAL LETTER I WITH ACUTE -0049 0301 ; [.1D98.0021.0008] # LATIN CAPITAL LETTER I WITH ACUTE -0049 0341 ; [.1D98.0021.0008] # LATIN CAPITAL LETTER I WITH ACUTE -012B ; [.1D98.0022.0002] # LATIN SMALL LETTER I WITH MACRON -0069 0304 ; [.1D98.0022.0002] # LATIN SMALL LETTER I WITH MACRON -012A ; [.1D98.0022.0008] # LATIN CAPITAL LETTER I WITH MACRON -0049 0304 ; [.1D98.0022.0008] # LATIN CAPITAL LETTER I WITH MACRON -00F3 ; [.1E43.0021.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0301 ; [.1E43.0021.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0341 ; [.1E43.0021.0002] # LATIN SMALL LETTER O WITH ACUTE -00D3 ; [.1E43.0021.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0301 ; [.1E43.0021.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0341 ; [.1E43.0021.0008] # LATIN CAPITAL LETTER O WITH ACUTE -014D ; [.1E43.0022.0002] # LATIN SMALL LETTER O WITH MACRON -006F 0304 ; [.1E43.0022.0002] # LATIN SMALL LETTER O WITH MACRON -014C ; [.1E43.0022.0008] # LATIN CAPITAL LETTER O WITH MACRON -004F 0304 ; [.1E43.0022.0008] # LATIN CAPITAL LETTER O WITH MACRON -00FA ; [.1F1B.0021.0002] # LATIN SMALL LETTER U WITH ACUTE -0075 0301 ; [.1F1B.0021.0002] # LATIN SMALL LETTER U WITH ACUTE -0075 0341 ; [.1F1B.0021.0002] # LATIN SMALL LETTER U WITH ACUTE -00DA ; [.1F1B.0021.0008] # LATIN CAPITAL LETTER U WITH ACUTE -0055 0301 ; [.1F1B.0021.0008] # LATIN CAPITAL LETTER U WITH ACUTE -0055 0341 ; [.1F1B.0021.0008] # LATIN CAPITAL LETTER U WITH ACUTE -016B ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH MACRON -0075 0304 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH MACRON -016A ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH MACRON -0055 0304 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH MACRON + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +006E 0067 ; [.2119.0020.0002] # +004E 0067 ; [.2119.0020.0007] # +004E 0047 ; [.2119.0020.0008] # +014B ; [.2119.0020.001C] # LATIN SMALL LETTER ENG +014A ; [.2119.0020.001D] # LATIN CAPITAL LETTER ENG +02BB ; [.2287.0020.0002] # MODIFIER LETTER TURNED COMMA +02BD ; [.2287.0020.0003] # MODIFIER LETTER REVERSED COMMA +00E1 ; [.1FA2.0021.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0301 ; [.1FA2.0021.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0341 ; [.1FA2.0021.0002] # LATIN SMALL LETTER A WITH ACUTE +00C1 ; [.1FA2.0021.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0301 ; [.1FA2.0021.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0341 ; [.1FA2.0021.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0101 ; [.1FA2.0022.0002] # LATIN SMALL LETTER A WITH MACRON +0061 0304 ; [.1FA2.0022.0002] # LATIN SMALL LETTER A WITH MACRON +0100 ; [.1FA2.0022.0008] # LATIN CAPITAL LETTER A WITH MACRON +0041 0304 ; [.1FA2.0022.0008] # LATIN CAPITAL LETTER A WITH MACRON +00E9 ; [.2007.0021.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0301 ; [.2007.0021.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0341 ; [.2007.0021.0002] # LATIN SMALL LETTER E WITH ACUTE +00C9 ; [.2007.0021.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0301 ; [.2007.0021.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0341 ; [.2007.0021.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0113 ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH MACRON +0065 0304 ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH MACRON +0112 ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH MACRON +0045 0304 ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH MACRON +00ED ; [.2090.0021.0002] # LATIN SMALL LETTER I WITH ACUTE +0069 0301 ; [.2090.0021.0002] # LATIN SMALL LETTER I WITH ACUTE +0069 0341 ; [.2090.0021.0002] # LATIN SMALL LETTER I WITH ACUTE +00CD ; [.2090.0021.0008] # LATIN CAPITAL LETTER I WITH ACUTE +0049 0301 ; [.2090.0021.0008] # LATIN CAPITAL LETTER I WITH ACUTE +0049 0341 ; [.2090.0021.0008] # LATIN CAPITAL LETTER I WITH ACUTE +012B ; [.2090.0022.0002] # LATIN SMALL LETTER I WITH MACRON +0069 0304 ; [.2090.0022.0002] # LATIN SMALL LETTER I WITH MACRON +012A ; [.2090.0022.0008] # LATIN CAPITAL LETTER I WITH MACRON +0049 0304 ; [.2090.0022.0008] # LATIN CAPITAL LETTER I WITH MACRON +00F3 ; [.213C.0021.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0301 ; [.213C.0021.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0341 ; [.213C.0021.0002] # LATIN SMALL LETTER O WITH ACUTE +00D3 ; [.213C.0021.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0301 ; [.213C.0021.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0341 ; [.213C.0021.0008] # LATIN CAPITAL LETTER O WITH ACUTE +014D ; [.213C.0022.0002] # LATIN SMALL LETTER O WITH MACRON +006F 0304 ; [.213C.0022.0002] # LATIN SMALL LETTER O WITH MACRON +014C ; [.213C.0022.0008] # LATIN CAPITAL LETTER O WITH MACRON +004F 0304 ; [.213C.0022.0008] # LATIN CAPITAL LETTER O WITH MACRON +00FA ; [.2217.0021.0002] # LATIN SMALL LETTER U WITH ACUTE +0075 0301 ; [.2217.0021.0002] # LATIN SMALL LETTER U WITH ACUTE +0075 0341 ; [.2217.0021.0002] # LATIN SMALL LETTER U WITH ACUTE +00DA ; [.2217.0021.0008] # LATIN CAPITAL LETTER U WITH ACUTE +0055 0301 ; [.2217.0021.0008] # LATIN CAPITAL LETTER U WITH ACUTE +0055 0341 ; [.2217.0021.0008] # LATIN CAPITAL LETTER U WITH ACUTE +016B ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH MACRON +0075 0304 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH MACRON +016A ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH MACRON +0055 0304 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH MACRON ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/tr.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/tr.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/tr.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/tr.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,46 +1,46 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -00E7 ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CEDILLA -0063 0327 ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CEDILLA -00C7 ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CEDILLA -0043 0327 ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CEDILLA -011F ; [.1D5B.0020.0002] # LATIN SMALL LETTER G WITH BREVE -0067 0306 ; [.1D5B.0020.0002] # LATIN SMALL LETTER G WITH BREVE -011E ; [.1D5B.0020.0008] # LATIN CAPITAL LETTER G WITH BREVE -0047 0306 ; [.1D5B.0020.0008] # LATIN CAPITAL LETTER G WITH BREVE -0131 ; [.1D97.0020.0002] # LATIN SMALL LETTER DOTLESS I -0049 ; [.1D97.0020.0008] # LATIN CAPITAL LETTER I -00CC ; [.1D97.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER I WITH GRAVE -00CD ; [.1D97.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER I WITH ACUTE -00CE ; [.1D97.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX -00CF ; [.1D97.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER I WITH DIAERESIS -012A ; [.1D97.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER I WITH MACRON -012C ; [.1D97.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER I WITH BREVE -012E ; [.1D97.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER I WITH OGONEK -0130 ; [.1D98.0020.0008] # LATIN CAPITAL LETTER I WITH DOT ABOVE -0049 0307 ; [.1D98.0020.0008] # LATIN CAPITAL LETTER I WITH DOT ABOVE -00F6 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1E44.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1E44.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -015F ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CEDILLA -0073 0327 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CEDILLA -015E ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CEDILLA -0053 0327 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CEDILLA -00FC ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1F1C.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F1C.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1F1C.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F1C.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1F1C.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F1C.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1F1C.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F1C.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +00E7 ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CEDILLA +0063 0327 ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CEDILLA +00C7 ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CEDILLA +0043 0327 ; [.1FD7.0020.0008] # LATIN CAPITAL LETTER C WITH CEDILLA +011F ; [.2052.0020.0002] # LATIN SMALL LETTER G WITH BREVE +0067 0306 ; [.2052.0020.0002] # LATIN SMALL LETTER G WITH BREVE +011E ; [.2052.0020.0008] # LATIN CAPITAL LETTER G WITH BREVE +0047 0306 ; [.2052.0020.0008] # LATIN CAPITAL LETTER G WITH BREVE +0131 ; [.208F.0020.0002] # LATIN SMALL LETTER DOTLESS I +0049 ; [.208F.0020.0008] # LATIN CAPITAL LETTER I +00CC ; [.208F.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER I WITH GRAVE +00CD ; [.208F.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER I WITH ACUTE +00CE ; [.208F.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +00CF ; [.208F.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER I WITH DIAERESIS +012A ; [.208F.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER I WITH MACRON +012C ; [.208F.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER I WITH BREVE +012E ; [.208F.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER I WITH OGONEK +0130 ; [.2090.0020.0008] # LATIN CAPITAL LETTER I WITH DOT ABOVE +0049 0307 ; [.2090.0020.0008] # LATIN CAPITAL LETTER I WITH DOT ABOVE +00F6 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.213D.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.213D.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +015F ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CEDILLA +0073 0327 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH CEDILLA +015E ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CEDILLA +0053 0327 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH CEDILLA +00FC ; [.2218.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2218.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2218.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2218.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.2218.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2218.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.2218.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2218.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.2218.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2218.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.2218.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2218.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ug_cyrl.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ug_cyrl.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ug_cyrl.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ug_cyrl.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,7 +1,7 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -04D9 ; [.20C1.0020.0002] # CYRILLIC SMALL LETTER SCHWA -04D8 ; [.20C1.0020.0008] # CYRILLIC CAPITAL LETTER SCHWA + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +04D9 ; [.23C0.0020.0002] # CYRILLIC SMALL LETTER SCHWA +04D8 ; [.23C0.0020.0008] # CYRILLIC CAPITAL LETTER SCHWA ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/uk.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/uk.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/uk.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/uk.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,14 +1,14 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0491 ; [.209D.0020.0002] # CYRILLIC SMALL LETTER GHE WITH UPTURN -0490 ; [.209D.0020.0008] # CYRILLIC CAPITAL LETTER GHE WITH UPTURN -A647 ; [.20EF.0020.0002] # CYRILLIC SMALL LETTER IOTA -A646 ; [.20EF.0020.0008] # CYRILLIC CAPITAL LETTER IOTA -0457 ; [.20F0.0020.0002] # CYRILLIC SMALL LETTER YI -0456 0308 ; [.20F0.0020.0002] # CYRILLIC SMALL LETTER YI -0407 ; [.20F0.0020.0008] # CYRILLIC CAPITAL LETTER YI -0406 0308 ; [.20F0.0020.0008] # CYRILLIC CAPITAL LETTER YI -A676 ; [.20F0.0020.0004] # COMBINING CYRILLIC LETTER YI + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0491 ; [.239C.0020.0002] # CYRILLIC SMALL LETTER GHE WITH UPTURN +0490 ; [.239C.0020.0008] # CYRILLIC CAPITAL LETTER GHE WITH UPTURN +A647 ; [.23EE.0020.0002] # CYRILLIC SMALL LETTER IOTA +A646 ; [.23EE.0020.0008] # CYRILLIC CAPITAL LETTER IOTA +0457 ; [.23EF.0020.0002] # CYRILLIC SMALL LETTER YI +0456 0308 ; [.23EF.0020.0002] # CYRILLIC SMALL LETTER YI +0407 ; [.23EF.0020.0008] # CYRILLIC CAPITAL LETTER YI +0406 0308 ; [.23EF.0020.0008] # CYRILLIC CAPITAL LETTER YI +A676 ; [.23EF.0020.0004] # COMBINING CYRILLIC LETTER YI ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ur.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ur.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/ur.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/ur.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,76 +1,76 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0623 ; [.2371.0021.0002] # ARABIC LETTER ALEF WITH HAMZA ABOVE -0627 0654 ; [.2371.0021.0002] # ARABIC LETTER ALEF WITH HAMZA ABOVE -0622 ; [.2372.0020.0002][.FFC0.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE -0627 0653 ; [.2372.0020.0002][.FFC0.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE -0628 ; [.2372.0020.0002][.FFC1.0000.0000] # ARABIC LETTER BEH -0628 06BE ; [.2372.0020.0002][.FFC2.0000.0000] # -067E ; [.2372.0020.0002][.FFC3.0000.0000] # ARABIC LETTER PEH -067E 06BE ; [.2372.0020.0002][.FFC4.0000.0000] # -062A ; [.2372.0020.0002][.FFC5.0000.0000] # ARABIC LETTER TEH -062A 06BE ; [.2372.0020.0002][.FFC6.0000.0000] # -0679 ; [.2372.0020.0002][.FFC7.0000.0000] # ARABIC LETTER TTEH -0679 06BE ; [.2372.0020.0002][.FFC8.0000.0000] # -062B ; [.2372.0020.0002][.FFC9.0000.0000] # ARABIC LETTER THEH -062C ; [.2372.0020.0002][.FFCA.0000.0000] # ARABIC LETTER JEEM -062C 06BE ; [.2372.0020.0002][.FFCB.0000.0000] # -0686 ; [.2372.0020.0002][.FFCC.0000.0000] # ARABIC LETTER TCHEH -0686 06BE ; [.2372.0020.0002][.FFCD.0000.0000] # -062D ; [.2372.0020.0002][.FFCE.0000.0000] # ARABIC LETTER HAH -062E ; [.2372.0020.0002][.FFCF.0000.0000] # ARABIC LETTER KHAH -062F ; [.2372.0020.0002][.FFD0.0000.0000] # ARABIC LETTER DAL -062F 06BE ; [.2372.0020.0002][.FFD1.0000.0000] # -0688 ; [.2372.0020.0002][.FFD2.0000.0000] # ARABIC LETTER DDAL -0688 06BE ; [.2372.0020.0002][.FFD3.0000.0000] # -0630 ; [.2372.0020.0002][.FFD4.0000.0000] # ARABIC LETTER THAL -0631 ; [.2372.0020.0002][.FFD5.0000.0000] # ARABIC LETTER REH -0631 06BE ; [.2372.0020.0002][.FFD6.0000.0000] # -0691 ; [.2372.0020.0002][.FFD7.0000.0000] # ARABIC LETTER RREH -0691 06BE ; [.2372.0020.0002][.FFD8.0000.0000] # -0632 ; [.2372.0020.0002][.FFD9.0000.0000] # ARABIC LETTER ZAIN -0698 ; [.2372.0020.0002][.FFDA.0000.0000] # ARABIC LETTER JEH -0633 ; [.2372.0020.0002][.FFDB.0000.0000] # ARABIC LETTER SEEN -0634 ; [.2372.0020.0002][.FFDC.0000.0000] # ARABIC LETTER SHEEN -0635 ; [.2372.0020.0002][.FFDD.0000.0000] # ARABIC LETTER SAD -0636 ; [.2372.0020.0002][.FFDE.0000.0000] # ARABIC LETTER DAD -0637 ; [.2372.0020.0002][.FFDF.0000.0000] # ARABIC LETTER TAH -0638 ; [.2372.0020.0002][.FFE0.0000.0000] # ARABIC LETTER ZAH -0639 ; [.2372.0020.0002][.FFE1.0000.0000] # ARABIC LETTER AIN -063A ; [.2372.0020.0002][.FFE2.0000.0000] # ARABIC LETTER GHAIN -0641 ; [.2372.0020.0002][.FFE3.0000.0000] # ARABIC LETTER FEH -0642 ; [.2372.0020.0002][.FFE4.0000.0000] # ARABIC LETTER QAF -06A9 ; [.2372.0020.0002][.FFE5.0000.0000] # ARABIC LETTER KEHEH -06A9 06BE ; [.2372.0020.0002][.FFE6.0000.0000] # -06AF ; [.2372.0020.0002][.FFE7.0000.0000] # ARABIC LETTER GAF -06AF 06BE ; [.2372.0020.0002][.FFE8.0000.0000] # -0644 ; [.2372.0020.0002][.FFE9.0000.0000] # ARABIC LETTER LAM -0644 06BE ; [.2372.0020.0002][.FFEA.0000.0000] # -0645 ; [.2372.0020.0002][.FFEB.0000.0000] # ARABIC LETTER MEEM -0645 06BE ; [.2372.0020.0002][.FFEC.0000.0000] # -0646 ; [.2372.0020.0002][.FFED.0000.0000] # ARABIC LETTER NOON -0646 06BE ; [.2372.0020.0002][.FFEE.0000.0000] # -06BA ; [.2372.0020.0002][.FFEF.0000.0000] # ARABIC LETTER NOON GHUNNA -06BA 06BE ; [.2372.0020.0002][.FFF0.0000.0000] # -0648 ; [.2372.0020.0002][.FFF1.0000.0000] # ARABIC LETTER WAW -0624 ; [.2372.0021.0002][.FFF1.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE -0648 0654 ; [.2372.0021.0002][.FFF1.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE -0648 06BE ; [.2372.0020.0002][.FFF2.0000.0000] # -06C1 ; [.2372.0020.0002][.FFF3.0000.0000] # ARABIC LETTER HEH GOAL -06C2 ; [.2372.0021.0002][.FFF3.0000.0000] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE -06C1 0654 ; [.2372.0021.0002][.FFF3.0000.0000] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE -06BE ; [.2372.0020.0002][.FFF4.0000.0000] # ARABIC LETTER HEH DOACHASHMEE -06C3 ; [.2372.0020.0002][.FFF5.0000.0000] # ARABIC LETTER TEH MARBUTA GOAL -0621 ; [.2372.0020.0002][.FFF6.0000.0000] # ARABIC LETTER HAMZA -06CC ; [.2372.0020.0002][.FFF7.0000.0000] # ARABIC LETTER FARSI YEH -0626 ; [.2372.0021.0002][.FFF7.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE -064A 0654 ; [.2372.0021.0002][.FFF7.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE -06CC 06BE ; [.2372.0020.0002][.FFF8.0000.0000] # -06D2 ; [.2372.0020.0002][.FFF9.0000.0000] # ARABIC LETTER YEH BARREE -06D3 ; [.2372.0021.0002][.FFF9.0000.0000] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE -06D2 0654 ; [.2372.0021.0002][.FFF9.0000.0000] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE -066E ; [.2372.0020.0002][.FFFA.0000.0000] # ARABIC LETTER DOTLESS BEH + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0623 ; [.2672.0021.0002] # ARABIC LETTER ALEF WITH HAMZA ABOVE +0627 0654 ; [.2672.0021.0002] # ARABIC LETTER ALEF WITH HAMZA ABOVE +0622 ; [.2673.0020.0002][.FFC0.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE +0627 0653 ; [.2673.0020.0002][.FFC0.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE +0628 ; [.2673.0020.0002][.FFC1.0000.0000] # ARABIC LETTER BEH +0628 06BE ; [.2673.0020.0002][.FFC2.0000.0000] # +067E ; [.2673.0020.0002][.FFC3.0000.0000] # ARABIC LETTER PEH +067E 06BE ; [.2673.0020.0002][.FFC4.0000.0000] # +062A ; [.2673.0020.0002][.FFC5.0000.0000] # ARABIC LETTER TEH +062A 06BE ; [.2673.0020.0002][.FFC6.0000.0000] # +0679 ; [.2673.0020.0002][.FFC7.0000.0000] # ARABIC LETTER TTEH +0679 06BE ; [.2673.0020.0002][.FFC8.0000.0000] # +062B ; [.2673.0020.0002][.FFC9.0000.0000] # ARABIC LETTER THEH +062C ; [.2673.0020.0002][.FFCA.0000.0000] # ARABIC LETTER JEEM +062C 06BE ; [.2673.0020.0002][.FFCB.0000.0000] # +0686 ; [.2673.0020.0002][.FFCC.0000.0000] # ARABIC LETTER TCHEH +0686 06BE ; [.2673.0020.0002][.FFCD.0000.0000] # +062D ; [.2673.0020.0002][.FFCE.0000.0000] # ARABIC LETTER HAH +062E ; [.2673.0020.0002][.FFCF.0000.0000] # ARABIC LETTER KHAH +062F ; [.2673.0020.0002][.FFD0.0000.0000] # ARABIC LETTER DAL +062F 06BE ; [.2673.0020.0002][.FFD1.0000.0000] # +0688 ; [.2673.0020.0002][.FFD2.0000.0000] # ARABIC LETTER DDAL +0688 06BE ; [.2673.0020.0002][.FFD3.0000.0000] # +0630 ; [.2673.0020.0002][.FFD4.0000.0000] # ARABIC LETTER THAL +0631 ; [.2673.0020.0002][.FFD5.0000.0000] # ARABIC LETTER REH +0631 06BE ; [.2673.0020.0002][.FFD6.0000.0000] # +0691 ; [.2673.0020.0002][.FFD7.0000.0000] # ARABIC LETTER RREH +0691 06BE ; [.2673.0020.0002][.FFD8.0000.0000] # +0632 ; [.2673.0020.0002][.FFD9.0000.0000] # ARABIC LETTER ZAIN +0698 ; [.2673.0020.0002][.FFDA.0000.0000] # ARABIC LETTER JEH +0633 ; [.2673.0020.0002][.FFDB.0000.0000] # ARABIC LETTER SEEN +0634 ; [.2673.0020.0002][.FFDC.0000.0000] # ARABIC LETTER SHEEN +0635 ; [.2673.0020.0002][.FFDD.0000.0000] # ARABIC LETTER SAD +0636 ; [.2673.0020.0002][.FFDE.0000.0000] # ARABIC LETTER DAD +0637 ; [.2673.0020.0002][.FFDF.0000.0000] # ARABIC LETTER TAH +0638 ; [.2673.0020.0002][.FFE0.0000.0000] # ARABIC LETTER ZAH +0639 ; [.2673.0020.0002][.FFE1.0000.0000] # ARABIC LETTER AIN +063A ; [.2673.0020.0002][.FFE2.0000.0000] # ARABIC LETTER GHAIN +0641 ; [.2673.0020.0002][.FFE3.0000.0000] # ARABIC LETTER FEH +0642 ; [.2673.0020.0002][.FFE4.0000.0000] # ARABIC LETTER QAF +06A9 ; [.2673.0020.0002][.FFE5.0000.0000] # ARABIC LETTER KEHEH +06A9 06BE ; [.2673.0020.0002][.FFE6.0000.0000] # +06AF ; [.2673.0020.0002][.FFE7.0000.0000] # ARABIC LETTER GAF +06AF 06BE ; [.2673.0020.0002][.FFE8.0000.0000] # +0644 ; [.2673.0020.0002][.FFE9.0000.0000] # ARABIC LETTER LAM +0644 06BE ; [.2673.0020.0002][.FFEA.0000.0000] # +0645 ; [.2673.0020.0002][.FFEB.0000.0000] # ARABIC LETTER MEEM +0645 06BE ; [.2673.0020.0002][.FFEC.0000.0000] # +0646 ; [.2673.0020.0002][.FFED.0000.0000] # ARABIC LETTER NOON +0646 06BE ; [.2673.0020.0002][.FFEE.0000.0000] # +06BA ; [.2673.0020.0002][.FFEF.0000.0000] # ARABIC LETTER NOON GHUNNA +06BA 06BE ; [.2673.0020.0002][.FFF0.0000.0000] # +0648 ; [.2673.0020.0002][.FFF1.0000.0000] # ARABIC LETTER WAW +0624 ; [.2673.0021.0002][.FFF1.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE +0648 0654 ; [.2673.0021.0002][.FFF1.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE +0648 06BE ; [.2673.0020.0002][.FFF2.0000.0000] # +06C1 ; [.2673.0020.0002][.FFF3.0000.0000] # ARABIC LETTER HEH GOAL +06C2 ; [.2673.0021.0002][.FFF3.0000.0000] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE +06C1 0654 ; [.2673.0021.0002][.FFF3.0000.0000] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE +06BE ; [.2673.0020.0002][.FFF4.0000.0000] # ARABIC LETTER HEH DOACHASHMEE +06C3 ; [.2673.0020.0002][.FFF5.0000.0000] # ARABIC LETTER TEH MARBUTA GOAL +0621 ; [.2673.0020.0002][.FFF6.0000.0000] # ARABIC LETTER HAMZA +06CC ; [.2673.0020.0002][.FFF7.0000.0000] # ARABIC LETTER FARSI YEH +0626 ; [.2673.0021.0002][.FFF7.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE +064A 0654 ; [.2673.0021.0002][.FFF7.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE +06CC 06BE ; [.2673.0020.0002][.FFF8.0000.0000] # +06D2 ; [.2673.0020.0002][.FFF9.0000.0000] # ARABIC LETTER YEH BARREE +06D3 ; [.2673.0021.0002][.FFF9.0000.0000] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE +06D2 0654 ; [.2673.0021.0002][.FFF9.0000.0000] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE +066E ; [.2673.0020.0002][.FFFA.0000.0000] # ARABIC LETTER DOTLESS BEH 0652 ; [.0000.0074.0002] # ARABIC SUKUN 064E ; [.0000.0075.0002] # ARABIC FATHA 0650 ; [.0000.0076.0002] # ARABIC KASRA diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/vi.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/vi.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/vi.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/vi.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,220 +1,220 @@ +{ - locale_version => 1.27, + locale_version => 1.29, # 0306 is not a Vietnamese tone, just to avoid \x{306} eq. to something. - entry => <<'ENTRY', # for DUCET v10.0.0 + entry => <<'ENTRY', # for DUCET v13.0.0 0309 ; [.0000.0026.0002][.0000.00F0.0000] # COMBINING HOOK ABOVE -1EA3 ; [.1CAD.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER A WITH HOOK ABOVE -1EA2 ; [.1CAD.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER A WITH HOOK ABOVE -1EBB ; [.1D10.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER E WITH HOOK ABOVE -1EBA ; [.1D10.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER E WITH HOOK ABOVE -1EC9 ; [.1D98.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER I WITH HOOK ABOVE -1EC8 ; [.1D98.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER I WITH HOOK ABOVE -1ECF ; [.1E43.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER O WITH HOOK ABOVE -1ECE ; [.1E43.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER O WITH HOOK ABOVE -1EE7 ; [.1F1B.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER U WITH HOOK ABOVE -1EE6 ; [.1F1B.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER U WITH HOOK ABOVE -1EF7 ; [.1F71.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER Y WITH HOOK ABOVE -1EF6 ; [.1F71.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER Y WITH HOOK ABOVE +1EA3 ; [.1FA2.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER A WITH HOOK ABOVE +1EA2 ; [.1FA2.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER A WITH HOOK ABOVE +1EBB ; [.2007.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER E WITH HOOK ABOVE +1EBA ; [.2007.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER E WITH HOOK ABOVE +1EC9 ; [.2090.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER I WITH HOOK ABOVE +1EC8 ; [.2090.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER I WITH HOOK ABOVE +1ECF ; [.213C.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER O WITH HOOK ABOVE +1ECE ; [.213C.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER O WITH HOOK ABOVE +1EE7 ; [.2217.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER U WITH HOOK ABOVE +1EE6 ; [.2217.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER U WITH HOOK ABOVE +1EF7 ; [.2270.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER Y WITH HOOK ABOVE +1EF6 ; [.2270.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER Y WITH HOOK ABOVE 0303 ; [.0000.0026.0002][.0000.00F1.0000] # COMBINING TILDE -00E3 ; [.1CAD.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER A WITH TILDE -00C3 ; [.1CAD.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER A WITH TILDE -1EBD ; [.1D10.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER E WITH TILDE -1EBC ; [.1D10.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER E WITH TILDE -0129 ; [.1D98.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER I WITH TILDE -0128 ; [.1D98.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER I WITH TILDE -00F5 ; [.1E43.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER O WITH TILDE -00D5 ; [.1E43.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER O WITH TILDE -0169 ; [.1F1B.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER U WITH TILDE -0168 ; [.1F1B.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER U WITH TILDE -1EF9 ; [.1F71.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER Y WITH TILDE -1EF8 ; [.1F71.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER Y WITH TILDE +00E3 ; [.1FA2.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER A WITH TILDE +00C3 ; [.1FA2.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER A WITH TILDE +1EBD ; [.2007.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER E WITH TILDE +1EBC ; [.2007.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER E WITH TILDE +0129 ; [.2090.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER I WITH TILDE +0128 ; [.2090.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER I WITH TILDE +00F5 ; [.213C.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER O WITH TILDE +00D5 ; [.213C.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER O WITH TILDE +0169 ; [.2217.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER U WITH TILDE +0168 ; [.2217.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER U WITH TILDE +1EF9 ; [.2270.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER Y WITH TILDE +1EF8 ; [.2270.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER Y WITH TILDE 0301 ; [.0000.0026.0002][.0000.00F2.0000] # COMBINING ACUTE ACCENT -00E1 ; [.1CAD.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER A WITH ACUTE -00C1 ; [.1CAD.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER A WITH ACUTE -00E9 ; [.1D10.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER E WITH ACUTE -00C9 ; [.1D10.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER E WITH ACUTE -00ED ; [.1D98.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER I WITH ACUTE -00CD ; [.1D98.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER I WITH ACUTE -00F3 ; [.1E43.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER O WITH ACUTE -00D3 ; [.1E43.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER O WITH ACUTE -00FA ; [.1F1B.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER U WITH ACUTE -00DA ; [.1F1B.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER U WITH ACUTE -00FD ; [.1F71.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER Y WITH ACUTE -00DD ; [.1F71.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER Y WITH ACUTE +00E1 ; [.1FA2.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER A WITH ACUTE +00C1 ; [.1FA2.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER A WITH ACUTE +00E9 ; [.2007.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER E WITH ACUTE +00C9 ; [.2007.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER E WITH ACUTE +00ED ; [.2090.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER I WITH ACUTE +00CD ; [.2090.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER I WITH ACUTE +00F3 ; [.213C.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER O WITH ACUTE +00D3 ; [.213C.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER O WITH ACUTE +00FA ; [.2217.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER U WITH ACUTE +00DA ; [.2217.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER U WITH ACUTE +00FD ; [.2270.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER Y WITH ACUTE +00DD ; [.2270.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER Y WITH ACUTE 0341 ; [.0000.0026.0002][.0000.00F2.0000] # COMBINING ACUTE TONE MARK 0323 ; [.0000.0026.0002][.0000.00F3.0000] # COMBINING DOT BELOW -1EA1 ; [.1CAD.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER A WITH DOT BELOW -1EA0 ; [.1CAD.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER A WITH DOT BELOW -1EB9 ; [.1D10.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER E WITH DOT BELOW -1EB8 ; [.1D10.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER E WITH DOT BELOW -1ECB ; [.1D98.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER I WITH DOT BELOW -1ECA ; [.1D98.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER I WITH DOT BELOW -1ECD ; [.1E43.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER O WITH DOT BELOW -1ECC ; [.1E43.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER O WITH DOT BELOW -1EE5 ; [.1F1B.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER U WITH DOT BELOW -1EE4 ; [.1F1B.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER U WITH DOT BELOW -1EF5 ; [.1F71.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER Y WITH DOT BELOW -1EF4 ; [.1F71.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER Y WITH DOT BELOW +1EA1 ; [.1FA2.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER A WITH DOT BELOW +1EA0 ; [.1FA2.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER A WITH DOT BELOW +1EB9 ; [.2007.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER E WITH DOT BELOW +1EB8 ; [.2007.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER E WITH DOT BELOW +1ECB ; [.2090.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER I WITH DOT BELOW +1ECA ; [.2090.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER I WITH DOT BELOW +1ECD ; [.213C.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER O WITH DOT BELOW +1ECC ; [.213C.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER O WITH DOT BELOW +1EE5 ; [.2217.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER U WITH DOT BELOW +1EE4 ; [.2217.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER U WITH DOT BELOW +1EF5 ; [.2270.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER Y WITH DOT BELOW +1EF4 ; [.2270.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER Y WITH DOT BELOW 0306 ; [.0000.0026.0002][.0000.00F4.0000] # COMBINING BREVE -0115 ; [.1D10.0020.0002][.0000.0026.0002][.0000.00F4.0000] # LATIN SMALL LETTER E WITH BREVE -0114 ; [.1D10.0020.0008][.0000.0026.0002][.0000.00F4.0000] # LATIN CAPITAL LETTER E WITH BREVE -012D ; [.1D98.0020.0002][.0000.0026.0002][.0000.00F4.0000] # LATIN SMALL LETTER I WITH BREVE -012C ; [.1D98.0020.0008][.0000.0026.0002][.0000.00F4.0000] # LATIN CAPITAL LETTER I WITH BREVE -014F ; [.1E43.0020.0002][.0000.0026.0002][.0000.00F4.0000] # LATIN SMALL LETTER O WITH BREVE -014E ; [.1E43.0020.0008][.0000.0026.0002][.0000.00F4.0000] # LATIN CAPITAL LETTER O WITH BREVE -016D ; [.1F1B.0020.0002][.0000.0026.0002][.0000.00F4.0000] # LATIN SMALL LETTER U WITH BREVE -016C ; [.1F1B.0020.0008][.0000.0026.0002][.0000.00F4.0000] # LATIN CAPITAL LETTER U WITH BREVE -0103 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH BREVE -0061 0306 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH BREVE -0102 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH BREVE -0041 0306 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH BREVE -1EB1 ; [.1CAE.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER A WITH BREVE AND GRAVE -1EB0 ; [.1CAE.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE -1EAF ; [.1CAE.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER A WITH BREVE AND ACUTE -1EAE ; [.1CAE.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE -1EB5 ; [.1CAE.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER A WITH BREVE AND TILDE -1EB4 ; [.1CAE.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE -1EB3 ; [.1CAE.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE -1EB2 ; [.1CAE.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE -1EB7 ; [.1CAE.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW -1EB6 ; [.1CAE.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW -00E2 ; [.1CAF.0020.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX -0061 0302 ; [.1CAF.0020.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX -00C2 ; [.1CAF.0020.0008] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX -0041 0302 ; [.1CAF.0020.0008] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX -1EA7 ; [.1CAF.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE -1EA6 ; [.1CAF.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE -1EA5 ; [.1CAF.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE -1EA4 ; [.1CAF.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE -1EAB ; [.1CAF.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE -1EAA ; [.1CAF.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE -1EA9 ; [.1CAF.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE -1EA8 ; [.1CAF.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE -1EAD ; [.1CAF.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW -1EAC ; [.1CAF.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW -0111 ; [.1CF6.0020.0002] # LATIN SMALL LETTER D WITH STROKE -0064 0335 ; [.1CF6.0020.0002] # LATIN SMALL LETTER D WITH STROKE -0110 ; [.1CF6.0020.0008] # LATIN CAPITAL LETTER D WITH STROKE -0044 0335 ; [.1CF6.0020.0008] # LATIN CAPITAL LETTER D WITH STROKE -00EA ; [.1D11.0020.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -0065 0302 ; [.1D11.0020.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -00CA ; [.1D11.0020.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -0045 0302 ; [.1D11.0020.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -1EC1 ; [.1D11.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC0 ; [.1D11.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -1EBF ; [.1D11.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -1EBE ; [.1D11.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -1EC5 ; [.1D11.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE -1EC4 ; [.1D11.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE -1EC3 ; [.1D11.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC2 ; [.1D11.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC7 ; [.1D11.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC6 ; [.1D11.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW -00F4 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX -006F 0302 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX -00D4 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -004F 0302 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -1ED3 ; [.1E44.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED2 ; [.1E44.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED1 ; [.1E44.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED0 ; [.1E44.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED7 ; [.1E44.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE -1ED6 ; [.1E44.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE -1ED5 ; [.1E44.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED4 ; [.1E44.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED9 ; [.1E44.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1ED8 ; [.1E44.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW -01A1 ; [.1E45.0020.0002] # LATIN SMALL LETTER O WITH HORN -006F 031B ; [.1E45.0020.0002] # LATIN SMALL LETTER O WITH HORN -01A0 ; [.1E45.0020.0008] # LATIN CAPITAL LETTER O WITH HORN -004F 031B ; [.1E45.0020.0008] # LATIN CAPITAL LETTER O WITH HORN -1EDD ; [.1E45.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH HORN AND GRAVE -1EDC ; [.1E45.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH HORN AND GRAVE -1EDB ; [.1E45.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER O WITH HORN AND ACUTE -1EDA ; [.1E45.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER O WITH HORN AND ACUTE -1EE1 ; [.1E45.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER O WITH HORN AND TILDE -1EE0 ; [.1E45.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER O WITH HORN AND TILDE -1EDF ; [.1E45.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE -1EDE ; [.1E45.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE -1EE3 ; [.1E45.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW -1EE2 ; [.1E45.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW -01B0 ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH HORN -0075 031B ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH HORN -01AF ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH HORN -0055 031B ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH HORN -1EEB ; [.1F1C.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH HORN AND GRAVE -1EEA ; [.1F1C.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH HORN AND GRAVE -1EE9 ; [.1F1C.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER U WITH HORN AND ACUTE -1EE8 ; [.1F1C.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER U WITH HORN AND ACUTE -1EEF ; [.1F1C.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER U WITH HORN AND TILDE -1EEE ; [.1F1C.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER U WITH HORN AND TILDE -1EED ; [.1F1C.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE -1EEC ; [.1F1C.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE -1EF1 ; [.1F1C.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER U WITH HORN AND DOT BELOW -1EF0 ; [.1F1C.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW -1EA1 0306 ; [.1CAE.0020.0002][.0000.0026.0002][.0000.00F3.0000] # -1EA0 0306 ; [.1CAE.0020.0008][.0000.0026.0002][.0000.00F3.0000] # -1EA1 0302 ; [.1CAF.0020.0002][.0000.0026.0002][.0000.00F3.0000] # -1EA0 0302 ; [.1CAF.0020.0008][.0000.0026.0002][.0000.00F3.0000] # -1EB9 0302 ; [.1D11.0020.0002][.0000.0026.0002][.0000.00F3.0000] # -1EB8 0302 ; [.1D11.0020.0008][.0000.0026.0002][.0000.00F3.0000] # -1ECD 0302 ; [.1E44.0020.0002][.0000.0026.0002][.0000.00F3.0000] # -1ECC 0302 ; [.1E44.0020.0008][.0000.0026.0002][.0000.00F3.0000] # -00F2 031B ; [.1E45.0020.0002][.0000.0025.0002] # -1ECF 031B ; [.1E45.0020.0002][.0000.0026.0002][.0000.00F0.0000] # -00F5 031B ; [.1E45.0020.0002][.0000.0026.0002][.0000.00F1.0000] # -00F3 031B ; [.1E45.0020.0002][.0000.0026.0002][.0000.00F2.0000] # -1ECD 031B ; [.1E45.0020.0002][.0000.0026.0002][.0000.00F3.0000] # -00D2 031B ; [.1E45.0020.0008][.0000.0025.0002] # -1ECE 031B ; [.1E45.0020.0008][.0000.0026.0002][.0000.00F0.0000] # -00D5 031B ; [.1E45.0020.0008][.0000.0026.0002][.0000.00F1.0000] # -00D3 031B ; [.1E45.0020.0008][.0000.0026.0002][.0000.00F2.0000] # -1ECC 031B ; [.1E45.0020.0008][.0000.0026.0002][.0000.00F3.0000] # -00F9 031B ; [.1F1C.0020.0002][.0000.0025.0002] # -1EE7 031B ; [.1F1C.0020.0002][.0000.0026.0002][.0000.00F0.0000] # -0169 031B ; [.1F1C.0020.0002][.0000.0026.0002][.0000.00F1.0000] # -00FA 031B ; [.1F1C.0020.0002][.0000.0026.0002][.0000.00F2.0000] # -1EE5 031B ; [.1F1C.0020.0002][.0000.0026.0002][.0000.00F3.0000] # -00D9 031B ; [.1F1C.0020.0008][.0000.0025.0002] # -1EE6 031B ; [.1F1C.0020.0008][.0000.0026.0002][.0000.00F0.0000] # -0168 031B ; [.1F1C.0020.0008][.0000.0026.0002][.0000.00F1.0000] # -00DA 031B ; [.1F1C.0020.0008][.0000.0026.0002][.0000.00F2.0000] # -1EE4 031B ; [.1F1C.0020.0008][.0000.0026.0002][.0000.00F3.0000] # -0061 0323 0306 ; [.1CAE.0020.0002][.0000.0026.0002][.0000.00F3.0000] # -0041 0323 0306 ; [.1CAE.0020.0008][.0000.0026.0002][.0000.00F3.0000] # -0061 0323 0302 ; [.1CAF.0020.0002][.0000.0026.0002][.0000.00F3.0000] # -0041 0323 0302 ; [.1CAF.0020.0008][.0000.0026.0002][.0000.00F3.0000] # -0065 0323 0302 ; [.1D11.0020.0002][.0000.0026.0002][.0000.00F3.0000] # -0045 0323 0302 ; [.1D11.0020.0008][.0000.0026.0002][.0000.00F3.0000] # -006F 0323 0302 ; [.1E44.0020.0002][.0000.0026.0002][.0000.00F3.0000] # -004F 0323 0302 ; [.1E44.0020.0008][.0000.0026.0002][.0000.00F3.0000] # -006F 0300 031B ; [.1E45.0020.0002][.0000.0025.0002] # -006F 0340 031B ; [.1E45.0020.0002][.0000.0025.0002] # -006F 0309 031B ; [.1E45.0020.0002][.0000.0026.0002][.0000.00F0.0000] # -006F 0303 031B ; [.1E45.0020.0002][.0000.0026.0002][.0000.00F1.0000] # -006F 0301 031B ; [.1E45.0020.0002][.0000.0026.0002][.0000.00F2.0000] # -006F 0341 031B ; [.1E45.0020.0002][.0000.0026.0002][.0000.00F2.0000] # -006F 0323 031B ; [.1E45.0020.0002][.0000.0026.0002][.0000.00F3.0000] # -004F 0300 031B ; [.1E45.0020.0008][.0000.0025.0002] # -004F 0340 031B ; [.1E45.0020.0008][.0000.0025.0002] # -004F 0309 031B ; [.1E45.0020.0008][.0000.0026.0002][.0000.00F0.0000] # -004F 0303 031B ; [.1E45.0020.0008][.0000.0026.0002][.0000.00F1.0000] # -004F 0301 031B ; [.1E45.0020.0008][.0000.0026.0002][.0000.00F2.0000] # -004F 0341 031B ; [.1E45.0020.0008][.0000.0026.0002][.0000.00F2.0000] # -004F 0323 031B ; [.1E45.0020.0008][.0000.0026.0002][.0000.00F3.0000] # -0075 0300 031B ; [.1F1C.0020.0002][.0000.0025.0002] # -0075 0340 031B ; [.1F1C.0020.0002][.0000.0025.0002] # -0075 0309 031B ; [.1F1C.0020.0002][.0000.0026.0002][.0000.00F0.0000] # -0075 0303 031B ; [.1F1C.0020.0002][.0000.0026.0002][.0000.00F1.0000] # -0075 0301 031B ; [.1F1C.0020.0002][.0000.0026.0002][.0000.00F2.0000] # -0075 0341 031B ; [.1F1C.0020.0002][.0000.0026.0002][.0000.00F2.0000] # -0075 0323 031B ; [.1F1C.0020.0002][.0000.0026.0002][.0000.00F3.0000] # -0055 0300 031B ; [.1F1C.0020.0008][.0000.0025.0002] # -0055 0340 031B ; [.1F1C.0020.0008][.0000.0025.0002] # -0055 0309 031B ; [.1F1C.0020.0008][.0000.0026.0002][.0000.00F0.0000] # -0055 0303 031B ; [.1F1C.0020.0008][.0000.0026.0002][.0000.00F1.0000] # -0055 0301 031B ; [.1F1C.0020.0008][.0000.0026.0002][.0000.00F2.0000] # -0055 0341 031B ; [.1F1C.0020.0008][.0000.0026.0002][.0000.00F2.0000] # -0055 0323 031B ; [.1F1C.0020.0008][.0000.0026.0002][.0000.00F3.0000] # +0115 ; [.2007.0020.0002][.0000.0026.0002][.0000.00F4.0000] # LATIN SMALL LETTER E WITH BREVE +0114 ; [.2007.0020.0008][.0000.0026.0002][.0000.00F4.0000] # LATIN CAPITAL LETTER E WITH BREVE +012D ; [.2090.0020.0002][.0000.0026.0002][.0000.00F4.0000] # LATIN SMALL LETTER I WITH BREVE +012C ; [.2090.0020.0008][.0000.0026.0002][.0000.00F4.0000] # LATIN CAPITAL LETTER I WITH BREVE +014F ; [.213C.0020.0002][.0000.0026.0002][.0000.00F4.0000] # LATIN SMALL LETTER O WITH BREVE +014E ; [.213C.0020.0008][.0000.0026.0002][.0000.00F4.0000] # LATIN CAPITAL LETTER O WITH BREVE +016D ; [.2217.0020.0002][.0000.0026.0002][.0000.00F4.0000] # LATIN SMALL LETTER U WITH BREVE +016C ; [.2217.0020.0008][.0000.0026.0002][.0000.00F4.0000] # LATIN CAPITAL LETTER U WITH BREVE +0103 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH BREVE +0061 0306 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH BREVE +0102 ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER A WITH BREVE +0041 0306 ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER A WITH BREVE +1EB1 ; [.1FA3.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER A WITH BREVE AND GRAVE +1EB0 ; [.1FA3.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE +1EAF ; [.1FA3.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER A WITH BREVE AND ACUTE +1EAE ; [.1FA3.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +1EB5 ; [.1FA3.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER A WITH BREVE AND TILDE +1EB4 ; [.1FA3.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE +1EB3 ; [.1FA3.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE +1EB2 ; [.1FA3.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE +1EB7 ; [.1FA3.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +1EB6 ; [.1FA3.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +00E2 ; [.1FA4.0020.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX +0061 0302 ; [.1FA4.0020.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX +00C2 ; [.1FA4.0020.0008] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +0041 0302 ; [.1FA4.0020.0008] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +1EA7 ; [.1FA4.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE +1EA6 ; [.1FA4.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE +1EA5 ; [.1FA4.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +1EA4 ; [.1FA4.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +1EAB ; [.1FA4.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE +1EAA ; [.1FA4.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE +1EA9 ; [.1FA4.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +1EA8 ; [.1FA4.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +1EAD ; [.1FA4.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW +1EAC ; [.1FA4.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW +0111 ; [.1FEC.0020.0002] # LATIN SMALL LETTER D WITH STROKE +0064 0335 ; [.1FEC.0020.0002] # LATIN SMALL LETTER D WITH STROKE +0110 ; [.1FEC.0020.0008] # LATIN CAPITAL LETTER D WITH STROKE +0044 0335 ; [.1FEC.0020.0008] # LATIN CAPITAL LETTER D WITH STROKE +00EA ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +0065 0302 ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +00CA ; [.2008.0020.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +0045 0302 ; [.2008.0020.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +1EC1 ; [.2008.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +1EC0 ; [.2008.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +1EBF ; [.2008.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +1EBE ; [.2008.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +1EC5 ; [.2008.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +1EC4 ; [.2008.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +1EC3 ; [.2008.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC2 ; [.2008.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC7 ; [.2008.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +1EC6 ; [.2008.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +00F4 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX +006F 0302 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX +00D4 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +004F 0302 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +1ED3 ; [.213D.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED2 ; [.213D.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED1 ; [.213D.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED0 ; [.213D.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED7 ; [.213D.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +1ED6 ; [.213D.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +1ED5 ; [.213D.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED4 ; [.213D.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED9 ; [.213D.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +1ED8 ; [.213D.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +01A1 ; [.213E.0020.0002] # LATIN SMALL LETTER O WITH HORN +006F 031B ; [.213E.0020.0002] # LATIN SMALL LETTER O WITH HORN +01A0 ; [.213E.0020.0008] # LATIN CAPITAL LETTER O WITH HORN +004F 031B ; [.213E.0020.0008] # LATIN CAPITAL LETTER O WITH HORN +1EDD ; [.213E.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH HORN AND GRAVE +1EDC ; [.213E.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH HORN AND GRAVE +1EDB ; [.213E.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER O WITH HORN AND ACUTE +1EDA ; [.213E.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER O WITH HORN AND ACUTE +1EE1 ; [.213E.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER O WITH HORN AND TILDE +1EE0 ; [.213E.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER O WITH HORN AND TILDE +1EDF ; [.213E.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE +1EDE ; [.213E.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE +1EE3 ; [.213E.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW +1EE2 ; [.213E.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW +01B0 ; [.2218.0020.0002] # LATIN SMALL LETTER U WITH HORN +0075 031B ; [.2218.0020.0002] # LATIN SMALL LETTER U WITH HORN +01AF ; [.2218.0020.0008] # LATIN CAPITAL LETTER U WITH HORN +0055 031B ; [.2218.0020.0008] # LATIN CAPITAL LETTER U WITH HORN +1EEB ; [.2218.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH HORN AND GRAVE +1EEA ; [.2218.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH HORN AND GRAVE +1EE9 ; [.2218.0020.0002][.0000.0026.0002][.0000.00F2.0000] # LATIN SMALL LETTER U WITH HORN AND ACUTE +1EE8 ; [.2218.0020.0008][.0000.0026.0002][.0000.00F2.0000] # LATIN CAPITAL LETTER U WITH HORN AND ACUTE +1EEF ; [.2218.0020.0002][.0000.0026.0002][.0000.00F1.0000] # LATIN SMALL LETTER U WITH HORN AND TILDE +1EEE ; [.2218.0020.0008][.0000.0026.0002][.0000.00F1.0000] # LATIN CAPITAL LETTER U WITH HORN AND TILDE +1EED ; [.2218.0020.0002][.0000.0026.0002][.0000.00F0.0000] # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE +1EEC ; [.2218.0020.0008][.0000.0026.0002][.0000.00F0.0000] # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE +1EF1 ; [.2218.0020.0002][.0000.0026.0002][.0000.00F3.0000] # LATIN SMALL LETTER U WITH HORN AND DOT BELOW +1EF0 ; [.2218.0020.0008][.0000.0026.0002][.0000.00F3.0000] # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW +1EA1 0306 ; [.1FA3.0020.0002][.0000.0026.0002][.0000.00F3.0000] # +1EA0 0306 ; [.1FA3.0020.0008][.0000.0026.0002][.0000.00F3.0000] # +1EA1 0302 ; [.1FA4.0020.0002][.0000.0026.0002][.0000.00F3.0000] # +1EA0 0302 ; [.1FA4.0020.0008][.0000.0026.0002][.0000.00F3.0000] # +1EB9 0302 ; [.2008.0020.0002][.0000.0026.0002][.0000.00F3.0000] # +1EB8 0302 ; [.2008.0020.0008][.0000.0026.0002][.0000.00F3.0000] # +1ECD 0302 ; [.213D.0020.0002][.0000.0026.0002][.0000.00F3.0000] # +1ECC 0302 ; [.213D.0020.0008][.0000.0026.0002][.0000.00F3.0000] # +00F2 031B ; [.213E.0020.0002][.0000.0025.0002] # +1ECF 031B ; [.213E.0020.0002][.0000.0026.0002][.0000.00F0.0000] # +00F5 031B ; [.213E.0020.0002][.0000.0026.0002][.0000.00F1.0000] # +00F3 031B ; [.213E.0020.0002][.0000.0026.0002][.0000.00F2.0000] # +1ECD 031B ; [.213E.0020.0002][.0000.0026.0002][.0000.00F3.0000] # +00D2 031B ; [.213E.0020.0008][.0000.0025.0002] # +1ECE 031B ; [.213E.0020.0008][.0000.0026.0002][.0000.00F0.0000] # +00D5 031B ; [.213E.0020.0008][.0000.0026.0002][.0000.00F1.0000] # +00D3 031B ; [.213E.0020.0008][.0000.0026.0002][.0000.00F2.0000] # +1ECC 031B ; [.213E.0020.0008][.0000.0026.0002][.0000.00F3.0000] # +00F9 031B ; [.2218.0020.0002][.0000.0025.0002] # +1EE7 031B ; [.2218.0020.0002][.0000.0026.0002][.0000.00F0.0000] # +0169 031B ; [.2218.0020.0002][.0000.0026.0002][.0000.00F1.0000] # +00FA 031B ; [.2218.0020.0002][.0000.0026.0002][.0000.00F2.0000] # +1EE5 031B ; [.2218.0020.0002][.0000.0026.0002][.0000.00F3.0000] # +00D9 031B ; [.2218.0020.0008][.0000.0025.0002] # +1EE6 031B ; [.2218.0020.0008][.0000.0026.0002][.0000.00F0.0000] # +0168 031B ; [.2218.0020.0008][.0000.0026.0002][.0000.00F1.0000] # +00DA 031B ; [.2218.0020.0008][.0000.0026.0002][.0000.00F2.0000] # +1EE4 031B ; [.2218.0020.0008][.0000.0026.0002][.0000.00F3.0000] # +0061 0323 0306 ; [.1FA3.0020.0002][.0000.0026.0002][.0000.00F3.0000] # +0041 0323 0306 ; [.1FA3.0020.0008][.0000.0026.0002][.0000.00F3.0000] # +0061 0323 0302 ; [.1FA4.0020.0002][.0000.0026.0002][.0000.00F3.0000] # +0041 0323 0302 ; [.1FA4.0020.0008][.0000.0026.0002][.0000.00F3.0000] # +0065 0323 0302 ; [.2008.0020.0002][.0000.0026.0002][.0000.00F3.0000] # +0045 0323 0302 ; [.2008.0020.0008][.0000.0026.0002][.0000.00F3.0000] # +006F 0323 0302 ; [.213D.0020.0002][.0000.0026.0002][.0000.00F3.0000] # +004F 0323 0302 ; [.213D.0020.0008][.0000.0026.0002][.0000.00F3.0000] # +006F 0300 031B ; [.213E.0020.0002][.0000.0025.0002] # +006F 0340 031B ; [.213E.0020.0002][.0000.0025.0002] # +006F 0309 031B ; [.213E.0020.0002][.0000.0026.0002][.0000.00F0.0000] # +006F 0303 031B ; [.213E.0020.0002][.0000.0026.0002][.0000.00F1.0000] # +006F 0301 031B ; [.213E.0020.0002][.0000.0026.0002][.0000.00F2.0000] # +006F 0341 031B ; [.213E.0020.0002][.0000.0026.0002][.0000.00F2.0000] # +006F 0323 031B ; [.213E.0020.0002][.0000.0026.0002][.0000.00F3.0000] # +004F 0300 031B ; [.213E.0020.0008][.0000.0025.0002] # +004F 0340 031B ; [.213E.0020.0008][.0000.0025.0002] # +004F 0309 031B ; [.213E.0020.0008][.0000.0026.0002][.0000.00F0.0000] # +004F 0303 031B ; [.213E.0020.0008][.0000.0026.0002][.0000.00F1.0000] # +004F 0301 031B ; [.213E.0020.0008][.0000.0026.0002][.0000.00F2.0000] # +004F 0341 031B ; [.213E.0020.0008][.0000.0026.0002][.0000.00F2.0000] # +004F 0323 031B ; [.213E.0020.0008][.0000.0026.0002][.0000.00F3.0000] # +0075 0300 031B ; [.2218.0020.0002][.0000.0025.0002] # +0075 0340 031B ; [.2218.0020.0002][.0000.0025.0002] # +0075 0309 031B ; [.2218.0020.0002][.0000.0026.0002][.0000.00F0.0000] # +0075 0303 031B ; [.2218.0020.0002][.0000.0026.0002][.0000.00F1.0000] # +0075 0301 031B ; [.2218.0020.0002][.0000.0026.0002][.0000.00F2.0000] # +0075 0341 031B ; [.2218.0020.0002][.0000.0026.0002][.0000.00F2.0000] # +0075 0323 031B ; [.2218.0020.0002][.0000.0026.0002][.0000.00F3.0000] # +0055 0300 031B ; [.2218.0020.0008][.0000.0025.0002] # +0055 0340 031B ; [.2218.0020.0008][.0000.0025.0002] # +0055 0309 031B ; [.2218.0020.0008][.0000.0026.0002][.0000.00F0.0000] # +0055 0303 031B ; [.2218.0020.0008][.0000.0026.0002][.0000.00F1.0000] # +0055 0301 031B ; [.2218.0020.0008][.0000.0026.0002][.0000.00F2.0000] # +0055 0341 031B ; [.2218.0020.0008][.0000.0026.0002][.0000.00F2.0000] # +0055 0323 031B ; [.2218.0020.0008][.0000.0026.0002][.0000.00F3.0000] # ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/vo.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/vo.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/vo.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/vo.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,29 +1,29 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -00E4 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1CAE.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1CAE.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -00F6 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1E44.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1E44.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -00FC ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1F1C.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F1C.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1F1C.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F1C.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1F1C.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F1C.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1F1C.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F1C.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +00E4 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.1FA3.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.1FA3.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +00F6 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.213D.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.213D.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +00FC ; [.2218.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2218.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2218.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2218.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.2218.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2218.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.2218.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2218.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.2218.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2218.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.2218.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2218.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/wae.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/wae.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/wae.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/wae.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,24 +1,24 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0061 0061 ; [.1CAD.0020.0002][.0000.0024.0002] # -00E4 00E4 ; [.1CAD.0020.0002][.0000.002D.0002] # -00E4 0061 0308 ; [.1CAD.0020.0002][.0000.002D.0002] # -0061 0308 00E4 ; [.1CAD.0020.0002][.0000.002D.0002] # -0061 0308 0061 0308 ; [.1CAD.0020.0002][.0000.002D.0002] # -0065 0065 ; [.1D10.0020.0002][.0000.0024.0002] # -0069 0069 ; [.1D98.0020.0002][.0000.0024.0002] # -006F 006F ; [.1E43.0020.0002][.0000.0024.0002] # -00F6 00F6 ; [.1E43.0020.0002][.0000.002D.0002] # -00F6 006F 0308 ; [.1E43.0020.0002][.0000.002D.0002] # -006F 0308 00F6 ; [.1E43.0020.0002][.0000.002D.0002] # -006F 0308 006F 0308 ; [.1E43.0020.0002][.0000.002D.0002] # -0063 0068 ; [.1CE0.0020.0002][.0000.0028.0002] # -0073 0063 0068 ; [.1ED7.0020.0002][.0000.0028.0002] # -0075 0075 ; [.1F1B.0020.0002][.0000.0024.0002] # -00FC 00FC ; [.1F1B.0020.0002][.0000.002D.0002] # -00FC 0075 0308 ; [.1F1B.0020.0002][.0000.002D.0002] # -0075 0308 00FC ; [.1F1B.0020.0002][.0000.002D.0002] # -0075 0308 0075 0308 ; [.1F1B.0020.0002][.0000.002D.0002] # + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0061 0061 ; [.1FA2.0020.0002][.0000.0024.0002] # +00E4 00E4 ; [.1FA2.0020.0002][.0000.002D.0002] # +00E4 0061 0308 ; [.1FA2.0020.0002][.0000.002D.0002] # +0061 0308 00E4 ; [.1FA2.0020.0002][.0000.002D.0002] # +0061 0308 0061 0308 ; [.1FA2.0020.0002][.0000.002D.0002] # +0065 0065 ; [.2007.0020.0002][.0000.0024.0002] # +0069 0069 ; [.2090.0020.0002][.0000.0024.0002] # +006F 006F ; [.213C.0020.0002][.0000.0024.0002] # +00F6 00F6 ; [.213C.0020.0002][.0000.002D.0002] # +00F6 006F 0308 ; [.213C.0020.0002][.0000.002D.0002] # +006F 0308 00F6 ; [.213C.0020.0002][.0000.002D.0002] # +006F 0308 006F 0308 ; [.213C.0020.0002][.0000.002D.0002] # +0063 0068 ; [.1FD6.0020.0002][.0000.0028.0002] # +0073 0063 0068 ; [.21D2.0020.0002][.0000.0028.0002] # +0075 0075 ; [.2217.0020.0002][.0000.0024.0002] # +00FC 00FC ; [.2217.0020.0002][.0000.002D.0002] # +00FC 0075 0308 ; [.2217.0020.0002][.0000.002D.0002] # +0075 0308 00FC ; [.2217.0020.0002][.0000.002D.0002] # +0075 0308 0075 0308 ; [.2217.0020.0002][.0000.002D.0002] # ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/wo.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/wo.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/wo.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/wo.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,32 +1,32 @@ +{ - locale_version => 1.27, + locale_version => 1.29, # eng doesn't require tailoring - entry => <<'ENTRY', # for DUCET v10.0.0 -00E0 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH GRAVE -0061 0300 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH GRAVE -0061 0340 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH GRAVE -00C0 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0041 0300 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0041 0340 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH GRAVE -00E9 ; [.1D11.0020.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0301 ; [.1D11.0020.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0341 ; [.1D11.0020.0002] # LATIN SMALL LETTER E WITH ACUTE -00C9 ; [.1D11.0020.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0301 ; [.1D11.0020.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0341 ; [.1D11.0020.0008] # LATIN CAPITAL LETTER E WITH ACUTE -00EB ; [.1D12.0020.0002] # LATIN SMALL LETTER E WITH DIAERESIS -0065 0308 ; [.1D12.0020.0002] # LATIN SMALL LETTER E WITH DIAERESIS -00CB ; [.1D12.0020.0008] # LATIN CAPITAL LETTER E WITH DIAERESIS -0045 0308 ; [.1D12.0020.0008] # LATIN CAPITAL LETTER E WITH DIAERESIS -00F1 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH TILDE -006E 0303 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH TILDE -00D1 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH TILDE -004E 0303 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH TILDE -00F3 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0301 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0341 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH ACUTE -00D3 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0301 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0341 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE + entry => <<'ENTRY', # for DUCET v13.0.0 +00E0 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH GRAVE +0061 0300 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH GRAVE +0061 0340 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH GRAVE +00C0 ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0041 0300 ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0041 0340 ; [.1FA3.0020.0008] # LATIN CAPITAL LETTER A WITH GRAVE +00E9 ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0301 ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0341 ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH ACUTE +00C9 ; [.2008.0020.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0301 ; [.2008.0020.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0341 ; [.2008.0020.0008] # LATIN CAPITAL LETTER E WITH ACUTE +00EB ; [.2009.0020.0002] # LATIN SMALL LETTER E WITH DIAERESIS +0065 0308 ; [.2009.0020.0002] # LATIN SMALL LETTER E WITH DIAERESIS +00CB ; [.2009.0020.0008] # LATIN CAPITAL LETTER E WITH DIAERESIS +0045 0308 ; [.2009.0020.0008] # LATIN CAPITAL LETTER E WITH DIAERESIS +00F1 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH TILDE +006E 0303 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH TILDE +00D1 ; [.2119.0020.0008] # LATIN CAPITAL LETTER N WITH TILDE +004E 0303 ; [.2119.0020.0008] # LATIN CAPITAL LETTER N WITH TILDE +00F3 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0301 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0341 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH ACUTE +00D3 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0301 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0341 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH ACUTE ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/yo.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/yo.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/yo.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/yo.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,26 +1,26 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -1EB9 ; [.1D11.0020.0002] # LATIN SMALL LETTER E WITH DOT BELOW -0065 0323 ; [.1D11.0020.0002] # LATIN SMALL LETTER E WITH DOT BELOW -1EB8 ; [.1D11.0020.0008] # LATIN CAPITAL LETTER E WITH DOT BELOW -0045 0323 ; [.1D11.0020.0008] # LATIN CAPITAL LETTER E WITH DOT BELOW -1EC7 ; [.1D11.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC6 ; [.1D11.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW -0067 0062 ; [.1D5B.0020.0002] # -0047 0062 ; [.1D5B.0020.0007] # -0047 0042 ; [.1D5B.0020.0008] # -1ECD ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DOT BELOW -006F 0323 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DOT BELOW -1ECC ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DOT BELOW -004F 0323 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DOT BELOW -1ED9 ; [.1E44.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1ED8 ; [.1E44.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1EE3 ; [.1E44.0020.0002][.0000.003F.0002] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW -1EE2 ; [.1E44.0020.0008][.0000.003F.0002] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW -1E63 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH DOT BELOW -0073 0323 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH DOT BELOW -1E62 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH DOT BELOW -0053 0323 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH DOT BELOW + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +1EB9 ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH DOT BELOW +0065 0323 ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH DOT BELOW +1EB8 ; [.2008.0020.0008] # LATIN CAPITAL LETTER E WITH DOT BELOW +0045 0323 ; [.2008.0020.0008] # LATIN CAPITAL LETTER E WITH DOT BELOW +1EC7 ; [.2008.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +1EC6 ; [.2008.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +0067 0062 ; [.2052.0020.0002] # +0047 0062 ; [.2052.0020.0007] # +0047 0042 ; [.2052.0020.0008] # +1ECD ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH DOT BELOW +006F 0323 ; [.213D.0020.0002] # LATIN SMALL LETTER O WITH DOT BELOW +1ECC ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH DOT BELOW +004F 0323 ; [.213D.0020.0008] # LATIN CAPITAL LETTER O WITH DOT BELOW +1ED9 ; [.213D.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +1ED8 ; [.213D.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +1EE3 ; [.213D.0020.0002][.0000.003F.0002] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW +1EE2 ; [.213D.0020.0008][.0000.003F.0002] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW +1E63 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH DOT BELOW +0073 0323 ; [.21D3.0020.0002] # LATIN SMALL LETTER S WITH DOT BELOW +1E62 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH DOT BELOW +0053 0323 ; [.21D3.0020.0008] # LATIN CAPITAL LETTER S WITH DOT BELOW ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/zh_big5.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/zh_big5.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/zh_big5.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/zh_big5.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,214 +1,214 @@ use Unicode::Collate::CJK::Big5; +{ - locale_version => 1.27, + locale_version => 1.29, overrideCJK => \&Unicode::Collate::CJK::Big5::weightBig5, - entry => <<'ENTRY', # for DUCET v10.0.0 -0101 ; [.1CAD.001C.0002] # LATIN SMALL LETTER A WITH MACRON -0061 0304 ; [.1CAD.001C.0002] # LATIN SMALL LETTER A WITH MACRON -0100 ; [.1CAD.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON -0041 0304 ; [.1CAD.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON -00E1 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0301 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0341 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -00C1 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0301 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0341 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -01CE ; [.1CAD.001E.0002] # LATIN SMALL LETTER A WITH CARON -0061 030C ; [.1CAD.001E.0002] # LATIN SMALL LETTER A WITH CARON -01CD ; [.1CAD.001E.0008] # LATIN CAPITAL LETTER A WITH CARON -0041 030C ; [.1CAD.001E.0008] # LATIN CAPITAL LETTER A WITH CARON -00E0 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -0061 0300 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -0061 0340 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -00C0 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0041 0300 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0041 0340 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0113 ; [.1D10.001C.0002] # LATIN SMALL LETTER E WITH MACRON -0065 0304 ; [.1D10.001C.0002] # LATIN SMALL LETTER E WITH MACRON -0112 ; [.1D10.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON -0045 0304 ; [.1D10.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON -00E9 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0301 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0341 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -00C9 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0301 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0341 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -011B ; [.1D10.001E.0002] # LATIN SMALL LETTER E WITH CARON -0065 030C ; [.1D10.001E.0002] # LATIN SMALL LETTER E WITH CARON -011A ; [.1D10.001E.0008] # LATIN CAPITAL LETTER E WITH CARON -0045 030C ; [.1D10.001E.0008] # LATIN CAPITAL LETTER E WITH CARON -00E8 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -0065 0300 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -0065 0340 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -00C8 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -0045 0300 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -0045 0340 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -00EA 0304 ; [.1D10.0021.0002] # -00CA 0304 ; [.1D10.0021.0008] # -0065 0302 0304 ; [.1D10.0021.0002] # -0045 0302 0304 ; [.1D10.0021.0008] # -1EBF ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -0065 0302 0301 ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -0065 0302 0341 ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -1EBE ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -0045 0302 0301 ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -0045 0302 0341 ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -00EA 0301 ; [.1D10.0022.0002] # -00EA 0341 ; [.1D10.0022.0002] # -00CA 0301 ; [.1D10.0022.0008] # -00CA 0341 ; [.1D10.0022.0008] # -00EA 030C ; [.1D10.0023.0002] # -00CA 030C ; [.1D10.0023.0008] # -0065 0302 030C ; [.1D10.0023.0002] # -0045 0302 030C ; [.1D10.0023.0008] # -1EC1 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -0065 0302 0300 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -0065 0302 0340 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC0 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -0045 0302 0300 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -0045 0302 0340 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -00EA 0300 ; [.1D10.0024.0002] # -00EA 0340 ; [.1D10.0024.0002] # -00CA 0300 ; [.1D10.0024.0008] # -00CA 0340 ; [.1D10.0024.0008] # -00EA ; [.1D10.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -0065 0302 ; [.1D10.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -00CA ; [.1D10.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -0045 0302 ; [.1D10.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -1EC5 ; [.1D10.0025.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE -1EC4 ; [.1D10.0025.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE -1EC3 ; [.1D10.0025.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC2 ; [.1D10.0025.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC7 ; [.1D10.0025.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC6 ; [.1D10.0025.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW -012B ; [.1D98.001C.0002] # LATIN SMALL LETTER I WITH MACRON -0069 0304 ; [.1D98.001C.0002] # LATIN SMALL LETTER I WITH MACRON -012A ; [.1D98.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON -0049 0304 ; [.1D98.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON -00ED ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -0069 0301 ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -0069 0341 ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -00CD ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -0049 0301 ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -0049 0341 ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -01D0 ; [.1D98.001E.0002] # LATIN SMALL LETTER I WITH CARON -0069 030C ; [.1D98.001E.0002] # LATIN SMALL LETTER I WITH CARON -01CF ; [.1D98.001E.0008] # LATIN CAPITAL LETTER I WITH CARON -0049 030C ; [.1D98.001E.0008] # LATIN CAPITAL LETTER I WITH CARON -00EC ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -0069 0300 ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -0069 0340 ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -00CC ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -0049 0300 ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -0049 0340 ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -006D 0304 ; [.1E10.001C.0002] # -004D 0304 ; [.1E10.001C.0008] # -1E3F ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -006D 0301 ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -006D 0341 ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -1E3E ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -004D 0301 ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -004D 0341 ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -006D 030C ; [.1E10.001E.0002] # -004D 030C ; [.1E10.001E.0008] # -006D 0300 ; [.1E10.001F.0002] # -006D 0340 ; [.1E10.001F.0002] # -004D 0300 ; [.1E10.001F.0008] # -004D 0340 ; [.1E10.001F.0008] # -006E 0304 ; [.1E1F.001C.0002] # -004E 0304 ; [.1E1F.001C.0008] # -0144 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0301 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0341 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -0143 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0301 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0341 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -0148 ; [.1E1F.001E.0002] # LATIN SMALL LETTER N WITH CARON -006E 030C ; [.1E1F.001E.0002] # LATIN SMALL LETTER N WITH CARON -0147 ; [.1E1F.001E.0008] # LATIN CAPITAL LETTER N WITH CARON -004E 030C ; [.1E1F.001E.0008] # LATIN CAPITAL LETTER N WITH CARON -01F9 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -006E 0300 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -006E 0340 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -01F8 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -004E 0300 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -004E 0340 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -014D ; [.1E43.001C.0002] # LATIN SMALL LETTER O WITH MACRON -006F 0304 ; [.1E43.001C.0002] # LATIN SMALL LETTER O WITH MACRON -014C ; [.1E43.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON -004F 0304 ; [.1E43.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON -00F3 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0301 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0341 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -00D3 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0301 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0341 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -01D2 ; [.1E43.001E.0002] # LATIN SMALL LETTER O WITH CARON -006F 030C ; [.1E43.001E.0002] # LATIN SMALL LETTER O WITH CARON -01D1 ; [.1E43.001E.0008] # LATIN CAPITAL LETTER O WITH CARON -004F 030C ; [.1E43.001E.0008] # LATIN CAPITAL LETTER O WITH CARON -00F2 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -006F 0300 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -006F 0340 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -00D2 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -004F 0300 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -004F 0340 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -016B ; [.1F1B.001C.0002] # LATIN SMALL LETTER U WITH MACRON -0075 0304 ; [.1F1B.001C.0002] # LATIN SMALL LETTER U WITH MACRON -016A ; [.1F1B.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON -0055 0304 ; [.1F1B.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON -00FA ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -0075 0301 ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -0075 0341 ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -00DA ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -0055 0301 ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -0055 0341 ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -01D4 ; [.1F1B.001E.0002] # LATIN SMALL LETTER U WITH CARON -0075 030C ; [.1F1B.001E.0002] # LATIN SMALL LETTER U WITH CARON -01D3 ; [.1F1B.001E.0008] # LATIN CAPITAL LETTER U WITH CARON -0055 030C ; [.1F1B.001E.0008] # LATIN CAPITAL LETTER U WITH CARON -00F9 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -0075 0300 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -0075 0340 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -00D9 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -0055 0300 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -0055 0340 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -01D6 ; [.1F1B.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -0075 0308 0304 ; [.1F1B.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F1B.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -0055 0308 0304 ; [.1F1B.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -00FC 0304 ; [.1F1B.0021.0002] # -00DC 0304 ; [.1F1B.0021.0008] # -01D8 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -0075 0308 0301 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -0075 0308 0341 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -0055 0308 0301 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -0055 0308 0341 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -00FC 0301 ; [.1F1B.0022.0002] # -00FC 0341 ; [.1F1B.0022.0002] # -00DC 0301 ; [.1F1B.0022.0008] # -00DC 0341 ; [.1F1B.0022.0008] # -01DA ; [.1F1B.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -0075 0308 030C ; [.1F1B.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F1B.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0055 0308 030C ; [.1F1B.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -00FC 030C ; [.1F1B.0023.0002] # -00DC 030C ; [.1F1B.0023.0008] # -01DC ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -0075 0308 0300 ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -0075 0308 0340 ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -0055 0308 0300 ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -0055 0308 0340 ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -00FC 0300 ; [.1F1B.0024.0002] # -00FC 0340 ; [.1F1B.0024.0002] # -00DC 0300 ; [.1F1B.0024.0008] # -00DC 0340 ; [.1F1B.0024.0008] # -00FC ; [.1F1B.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F1B.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F1B.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F1B.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS + entry => <<'ENTRY', # for DUCET v13.0.0 +0101 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON +0061 0304 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON +0100 ; [.1FA2.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON +0041 0304 ; [.1FA2.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON +00E1 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0301 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0341 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +00C1 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0301 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0341 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +01CE ; [.1FA2.001E.0002] # LATIN SMALL LETTER A WITH CARON +0061 030C ; [.1FA2.001E.0002] # LATIN SMALL LETTER A WITH CARON +01CD ; [.1FA2.001E.0008] # LATIN CAPITAL LETTER A WITH CARON +0041 030C ; [.1FA2.001E.0008] # LATIN CAPITAL LETTER A WITH CARON +00E0 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +0061 0300 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +0061 0340 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +00C0 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0041 0300 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0041 0340 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0113 ; [.2007.001C.0002] # LATIN SMALL LETTER E WITH MACRON +0065 0304 ; [.2007.001C.0002] # LATIN SMALL LETTER E WITH MACRON +0112 ; [.2007.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON +0045 0304 ; [.2007.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON +00E9 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0301 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0341 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +00C9 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0301 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0341 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +011B ; [.2007.001E.0002] # LATIN SMALL LETTER E WITH CARON +0065 030C ; [.2007.001E.0002] # LATIN SMALL LETTER E WITH CARON +011A ; [.2007.001E.0008] # LATIN CAPITAL LETTER E WITH CARON +0045 030C ; [.2007.001E.0008] # LATIN CAPITAL LETTER E WITH CARON +00E8 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +0065 0300 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +0065 0340 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +00C8 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +0045 0300 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +0045 0340 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +00EA 0304 ; [.2007.0021.0002] # +00CA 0304 ; [.2007.0021.0008] # +0065 0302 0304 ; [.2007.0021.0002] # +0045 0302 0304 ; [.2007.0021.0008] # +1EBF ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +0065 0302 0301 ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +0065 0302 0341 ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +1EBE ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +0045 0302 0301 ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +0045 0302 0341 ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +00EA 0301 ; [.2007.0022.0002] # +00EA 0341 ; [.2007.0022.0002] # +00CA 0301 ; [.2007.0022.0008] # +00CA 0341 ; [.2007.0022.0008] # +00EA 030C ; [.2007.0023.0002] # +00CA 030C ; [.2007.0023.0008] # +0065 0302 030C ; [.2007.0023.0002] # +0045 0302 030C ; [.2007.0023.0008] # +1EC1 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +0065 0302 0300 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +0065 0302 0340 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +1EC0 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +0045 0302 0300 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +0045 0302 0340 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +00EA 0300 ; [.2007.0024.0002] # +00EA 0340 ; [.2007.0024.0002] # +00CA 0300 ; [.2007.0024.0008] # +00CA 0340 ; [.2007.0024.0008] # +00EA ; [.2007.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +0065 0302 ; [.2007.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +00CA ; [.2007.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +0045 0302 ; [.2007.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +1EC5 ; [.2007.0025.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +1EC4 ; [.2007.0025.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +1EC3 ; [.2007.0025.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC2 ; [.2007.0025.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC7 ; [.2007.0025.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +1EC6 ; [.2007.0025.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +012B ; [.2090.001C.0002] # LATIN SMALL LETTER I WITH MACRON +0069 0304 ; [.2090.001C.0002] # LATIN SMALL LETTER I WITH MACRON +012A ; [.2090.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON +0049 0304 ; [.2090.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON +00ED ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +0069 0301 ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +0069 0341 ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +00CD ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +0049 0301 ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +0049 0341 ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +01D0 ; [.2090.001E.0002] # LATIN SMALL LETTER I WITH CARON +0069 030C ; [.2090.001E.0002] # LATIN SMALL LETTER I WITH CARON +01CF ; [.2090.001E.0008] # LATIN CAPITAL LETTER I WITH CARON +0049 030C ; [.2090.001E.0008] # LATIN CAPITAL LETTER I WITH CARON +00EC ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +0069 0300 ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +0069 0340 ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +00CC ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +0049 0300 ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +0049 0340 ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +006D 0304 ; [.2109.001C.0002] # +004D 0304 ; [.2109.001C.0008] # +1E3F ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +006D 0301 ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +006D 0341 ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +1E3E ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +004D 0301 ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +004D 0341 ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +006D 030C ; [.2109.001E.0002] # +004D 030C ; [.2109.001E.0008] # +006D 0300 ; [.2109.001F.0002] # +006D 0340 ; [.2109.001F.0002] # +004D 0300 ; [.2109.001F.0008] # +004D 0340 ; [.2109.001F.0008] # +006E 0304 ; [.2118.001C.0002] # +004E 0304 ; [.2118.001C.0008] # +0144 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0301 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0341 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +0143 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0301 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0341 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +0148 ; [.2118.001E.0002] # LATIN SMALL LETTER N WITH CARON +006E 030C ; [.2118.001E.0002] # LATIN SMALL LETTER N WITH CARON +0147 ; [.2118.001E.0008] # LATIN CAPITAL LETTER N WITH CARON +004E 030C ; [.2118.001E.0008] # LATIN CAPITAL LETTER N WITH CARON +01F9 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +006E 0300 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +006E 0340 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +01F8 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +004E 0300 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +004E 0340 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +014D ; [.213C.001C.0002] # LATIN SMALL LETTER O WITH MACRON +006F 0304 ; [.213C.001C.0002] # LATIN SMALL LETTER O WITH MACRON +014C ; [.213C.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON +004F 0304 ; [.213C.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON +00F3 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0301 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0341 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +00D3 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0301 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0341 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +01D2 ; [.213C.001E.0002] # LATIN SMALL LETTER O WITH CARON +006F 030C ; [.213C.001E.0002] # LATIN SMALL LETTER O WITH CARON +01D1 ; [.213C.001E.0008] # LATIN CAPITAL LETTER O WITH CARON +004F 030C ; [.213C.001E.0008] # LATIN CAPITAL LETTER O WITH CARON +00F2 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +006F 0300 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +006F 0340 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +00D2 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +004F 0300 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +004F 0340 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +016B ; [.2217.001C.0002] # LATIN SMALL LETTER U WITH MACRON +0075 0304 ; [.2217.001C.0002] # LATIN SMALL LETTER U WITH MACRON +016A ; [.2217.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON +0055 0304 ; [.2217.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON +00FA ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +0075 0301 ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +0075 0341 ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +00DA ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +0055 0301 ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +0055 0341 ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +01D4 ; [.2217.001E.0002] # LATIN SMALL LETTER U WITH CARON +0075 030C ; [.2217.001E.0002] # LATIN SMALL LETTER U WITH CARON +01D3 ; [.2217.001E.0008] # LATIN CAPITAL LETTER U WITH CARON +0055 030C ; [.2217.001E.0008] # LATIN CAPITAL LETTER U WITH CARON +00F9 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +0075 0300 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +0075 0340 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +00D9 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +0055 0300 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +0055 0340 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +01D6 ; [.2217.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +0075 0308 0304 ; [.2217.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2217.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +0055 0308 0304 ; [.2217.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +00FC 0304 ; [.2217.0021.0002] # +00DC 0304 ; [.2217.0021.0008] # +01D8 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +0075 0308 0301 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +0075 0308 0341 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +0055 0308 0301 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +0055 0308 0341 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +00FC 0301 ; [.2217.0022.0002] # +00FC 0341 ; [.2217.0022.0002] # +00DC 0301 ; [.2217.0022.0008] # +00DC 0341 ; [.2217.0022.0008] # +01DA ; [.2217.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +0075 0308 030C ; [.2217.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2217.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0055 0308 030C ; [.2217.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +00FC 030C ; [.2217.0023.0002] # +00DC 030C ; [.2217.0023.0008] # +01DC ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +0075 0308 0300 ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +0075 0308 0340 ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +0055 0308 0300 ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +0055 0308 0340 ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +00FC 0300 ; [.2217.0024.0002] # +00FC 0340 ; [.2217.0024.0002] # +00DC 0300 ; [.2217.0024.0008] # +00DC 0340 ; [.2217.0024.0008] # +00FC ; [.2217.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2217.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2217.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2217.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS F967 ; [.804A.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F967 FA70 ; [.82DE.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-FA70 F905 ; [.81CB.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F905 diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/zh_gb.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/zh_gb.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/zh_gb.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/zh_gb.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,214 +1,214 @@ use Unicode::Collate::CJK::GB2312; +{ - locale_version => 1.27, + locale_version => 1.29, overrideCJK => \&Unicode::Collate::CJK::GB2312::weightGB2312, - entry => <<'ENTRY', # for DUCET v10.0.0 -0101 ; [.1CAD.001C.0002] # LATIN SMALL LETTER A WITH MACRON -0061 0304 ; [.1CAD.001C.0002] # LATIN SMALL LETTER A WITH MACRON -0100 ; [.1CAD.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON -0041 0304 ; [.1CAD.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON -00E1 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0301 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0341 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -00C1 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0301 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0341 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -01CE ; [.1CAD.001E.0002] # LATIN SMALL LETTER A WITH CARON -0061 030C ; [.1CAD.001E.0002] # LATIN SMALL LETTER A WITH CARON -01CD ; [.1CAD.001E.0008] # LATIN CAPITAL LETTER A WITH CARON -0041 030C ; [.1CAD.001E.0008] # LATIN CAPITAL LETTER A WITH CARON -00E0 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -0061 0300 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -0061 0340 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -00C0 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0041 0300 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0041 0340 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0113 ; [.1D10.001C.0002] # LATIN SMALL LETTER E WITH MACRON -0065 0304 ; [.1D10.001C.0002] # LATIN SMALL LETTER E WITH MACRON -0112 ; [.1D10.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON -0045 0304 ; [.1D10.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON -00E9 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0301 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0341 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -00C9 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0301 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0341 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -011B ; [.1D10.001E.0002] # LATIN SMALL LETTER E WITH CARON -0065 030C ; [.1D10.001E.0002] # LATIN SMALL LETTER E WITH CARON -011A ; [.1D10.001E.0008] # LATIN CAPITAL LETTER E WITH CARON -0045 030C ; [.1D10.001E.0008] # LATIN CAPITAL LETTER E WITH CARON -00E8 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -0065 0300 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -0065 0340 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -00C8 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -0045 0300 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -0045 0340 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -00EA 0304 ; [.1D10.0021.0002] # -00CA 0304 ; [.1D10.0021.0008] # -0065 0302 0304 ; [.1D10.0021.0002] # -0045 0302 0304 ; [.1D10.0021.0008] # -1EBF ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -0065 0302 0301 ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -0065 0302 0341 ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -1EBE ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -0045 0302 0301 ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -0045 0302 0341 ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -00EA 0301 ; [.1D10.0022.0002] # -00EA 0341 ; [.1D10.0022.0002] # -00CA 0301 ; [.1D10.0022.0008] # -00CA 0341 ; [.1D10.0022.0008] # -00EA 030C ; [.1D10.0023.0002] # -00CA 030C ; [.1D10.0023.0008] # -0065 0302 030C ; [.1D10.0023.0002] # -0045 0302 030C ; [.1D10.0023.0008] # -1EC1 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -0065 0302 0300 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -0065 0302 0340 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC0 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -0045 0302 0300 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -0045 0302 0340 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -00EA 0300 ; [.1D10.0024.0002] # -00EA 0340 ; [.1D10.0024.0002] # -00CA 0300 ; [.1D10.0024.0008] # -00CA 0340 ; [.1D10.0024.0008] # -00EA ; [.1D10.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -0065 0302 ; [.1D10.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -00CA ; [.1D10.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -0045 0302 ; [.1D10.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -1EC5 ; [.1D10.0025.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE -1EC4 ; [.1D10.0025.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE -1EC3 ; [.1D10.0025.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC2 ; [.1D10.0025.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC7 ; [.1D10.0025.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC6 ; [.1D10.0025.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW -012B ; [.1D98.001C.0002] # LATIN SMALL LETTER I WITH MACRON -0069 0304 ; [.1D98.001C.0002] # LATIN SMALL LETTER I WITH MACRON -012A ; [.1D98.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON -0049 0304 ; [.1D98.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON -00ED ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -0069 0301 ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -0069 0341 ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -00CD ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -0049 0301 ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -0049 0341 ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -01D0 ; [.1D98.001E.0002] # LATIN SMALL LETTER I WITH CARON -0069 030C ; [.1D98.001E.0002] # LATIN SMALL LETTER I WITH CARON -01CF ; [.1D98.001E.0008] # LATIN CAPITAL LETTER I WITH CARON -0049 030C ; [.1D98.001E.0008] # LATIN CAPITAL LETTER I WITH CARON -00EC ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -0069 0300 ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -0069 0340 ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -00CC ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -0049 0300 ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -0049 0340 ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -006D 0304 ; [.1E10.001C.0002] # -004D 0304 ; [.1E10.001C.0008] # -1E3F ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -006D 0301 ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -006D 0341 ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -1E3E ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -004D 0301 ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -004D 0341 ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -006D 030C ; [.1E10.001E.0002] # -004D 030C ; [.1E10.001E.0008] # -006D 0300 ; [.1E10.001F.0002] # -006D 0340 ; [.1E10.001F.0002] # -004D 0300 ; [.1E10.001F.0008] # -004D 0340 ; [.1E10.001F.0008] # -006E 0304 ; [.1E1F.001C.0002] # -004E 0304 ; [.1E1F.001C.0008] # -0144 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0301 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0341 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -0143 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0301 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0341 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -0148 ; [.1E1F.001E.0002] # LATIN SMALL LETTER N WITH CARON -006E 030C ; [.1E1F.001E.0002] # LATIN SMALL LETTER N WITH CARON -0147 ; [.1E1F.001E.0008] # LATIN CAPITAL LETTER N WITH CARON -004E 030C ; [.1E1F.001E.0008] # LATIN CAPITAL LETTER N WITH CARON -01F9 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -006E 0300 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -006E 0340 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -01F8 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -004E 0300 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -004E 0340 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -014D ; [.1E43.001C.0002] # LATIN SMALL LETTER O WITH MACRON -006F 0304 ; [.1E43.001C.0002] # LATIN SMALL LETTER O WITH MACRON -014C ; [.1E43.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON -004F 0304 ; [.1E43.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON -00F3 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0301 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0341 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -00D3 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0301 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0341 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -01D2 ; [.1E43.001E.0002] # LATIN SMALL LETTER O WITH CARON -006F 030C ; [.1E43.001E.0002] # LATIN SMALL LETTER O WITH CARON -01D1 ; [.1E43.001E.0008] # LATIN CAPITAL LETTER O WITH CARON -004F 030C ; [.1E43.001E.0008] # LATIN CAPITAL LETTER O WITH CARON -00F2 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -006F 0300 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -006F 0340 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -00D2 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -004F 0300 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -004F 0340 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -016B ; [.1F1B.001C.0002] # LATIN SMALL LETTER U WITH MACRON -0075 0304 ; [.1F1B.001C.0002] # LATIN SMALL LETTER U WITH MACRON -016A ; [.1F1B.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON -0055 0304 ; [.1F1B.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON -00FA ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -0075 0301 ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -0075 0341 ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -00DA ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -0055 0301 ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -0055 0341 ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -01D4 ; [.1F1B.001E.0002] # LATIN SMALL LETTER U WITH CARON -0075 030C ; [.1F1B.001E.0002] # LATIN SMALL LETTER U WITH CARON -01D3 ; [.1F1B.001E.0008] # LATIN CAPITAL LETTER U WITH CARON -0055 030C ; [.1F1B.001E.0008] # LATIN CAPITAL LETTER U WITH CARON -00F9 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -0075 0300 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -0075 0340 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -00D9 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -0055 0300 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -0055 0340 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -01D6 ; [.1F1B.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -0075 0308 0304 ; [.1F1B.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F1B.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -0055 0308 0304 ; [.1F1B.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -00FC 0304 ; [.1F1B.0021.0002] # -00DC 0304 ; [.1F1B.0021.0008] # -01D8 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -0075 0308 0301 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -0075 0308 0341 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -0055 0308 0301 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -0055 0308 0341 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -00FC 0301 ; [.1F1B.0022.0002] # -00FC 0341 ; [.1F1B.0022.0002] # -00DC 0301 ; [.1F1B.0022.0008] # -00DC 0341 ; [.1F1B.0022.0008] # -01DA ; [.1F1B.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -0075 0308 030C ; [.1F1B.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F1B.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0055 0308 030C ; [.1F1B.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -00FC 030C ; [.1F1B.0023.0002] # -00DC 030C ; [.1F1B.0023.0008] # -01DC ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -0075 0308 0300 ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -0075 0308 0340 ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -0055 0308 0300 ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -0055 0308 0340 ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -00FC 0300 ; [.1F1B.0024.0002] # -00FC 0340 ; [.1F1B.0024.0002] # -00DC 0300 ; [.1F1B.0024.0008] # -00DC 0340 ; [.1F1B.0024.0008] # -00FC ; [.1F1B.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F1B.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F1B.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F1B.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS + entry => <<'ENTRY', # for DUCET v13.0.0 +0101 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON +0061 0304 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON +0100 ; [.1FA2.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON +0041 0304 ; [.1FA2.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON +00E1 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0301 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0341 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +00C1 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0301 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0341 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +01CE ; [.1FA2.001E.0002] # LATIN SMALL LETTER A WITH CARON +0061 030C ; [.1FA2.001E.0002] # LATIN SMALL LETTER A WITH CARON +01CD ; [.1FA2.001E.0008] # LATIN CAPITAL LETTER A WITH CARON +0041 030C ; [.1FA2.001E.0008] # LATIN CAPITAL LETTER A WITH CARON +00E0 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +0061 0300 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +0061 0340 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +00C0 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0041 0300 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0041 0340 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0113 ; [.2007.001C.0002] # LATIN SMALL LETTER E WITH MACRON +0065 0304 ; [.2007.001C.0002] # LATIN SMALL LETTER E WITH MACRON +0112 ; [.2007.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON +0045 0304 ; [.2007.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON +00E9 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0301 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0341 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +00C9 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0301 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0341 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +011B ; [.2007.001E.0002] # LATIN SMALL LETTER E WITH CARON +0065 030C ; [.2007.001E.0002] # LATIN SMALL LETTER E WITH CARON +011A ; [.2007.001E.0008] # LATIN CAPITAL LETTER E WITH CARON +0045 030C ; [.2007.001E.0008] # LATIN CAPITAL LETTER E WITH CARON +00E8 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +0065 0300 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +0065 0340 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +00C8 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +0045 0300 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +0045 0340 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +00EA 0304 ; [.2007.0021.0002] # +00CA 0304 ; [.2007.0021.0008] # +0065 0302 0304 ; [.2007.0021.0002] # +0045 0302 0304 ; [.2007.0021.0008] # +1EBF ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +0065 0302 0301 ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +0065 0302 0341 ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +1EBE ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +0045 0302 0301 ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +0045 0302 0341 ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +00EA 0301 ; [.2007.0022.0002] # +00EA 0341 ; [.2007.0022.0002] # +00CA 0301 ; [.2007.0022.0008] # +00CA 0341 ; [.2007.0022.0008] # +00EA 030C ; [.2007.0023.0002] # +00CA 030C ; [.2007.0023.0008] # +0065 0302 030C ; [.2007.0023.0002] # +0045 0302 030C ; [.2007.0023.0008] # +1EC1 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +0065 0302 0300 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +0065 0302 0340 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +1EC0 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +0045 0302 0300 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +0045 0302 0340 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +00EA 0300 ; [.2007.0024.0002] # +00EA 0340 ; [.2007.0024.0002] # +00CA 0300 ; [.2007.0024.0008] # +00CA 0340 ; [.2007.0024.0008] # +00EA ; [.2007.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +0065 0302 ; [.2007.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +00CA ; [.2007.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +0045 0302 ; [.2007.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +1EC5 ; [.2007.0025.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +1EC4 ; [.2007.0025.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +1EC3 ; [.2007.0025.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC2 ; [.2007.0025.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC7 ; [.2007.0025.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +1EC6 ; [.2007.0025.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +012B ; [.2090.001C.0002] # LATIN SMALL LETTER I WITH MACRON +0069 0304 ; [.2090.001C.0002] # LATIN SMALL LETTER I WITH MACRON +012A ; [.2090.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON +0049 0304 ; [.2090.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON +00ED ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +0069 0301 ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +0069 0341 ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +00CD ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +0049 0301 ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +0049 0341 ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +01D0 ; [.2090.001E.0002] # LATIN SMALL LETTER I WITH CARON +0069 030C ; [.2090.001E.0002] # LATIN SMALL LETTER I WITH CARON +01CF ; [.2090.001E.0008] # LATIN CAPITAL LETTER I WITH CARON +0049 030C ; [.2090.001E.0008] # LATIN CAPITAL LETTER I WITH CARON +00EC ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +0069 0300 ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +0069 0340 ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +00CC ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +0049 0300 ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +0049 0340 ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +006D 0304 ; [.2109.001C.0002] # +004D 0304 ; [.2109.001C.0008] # +1E3F ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +006D 0301 ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +006D 0341 ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +1E3E ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +004D 0301 ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +004D 0341 ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +006D 030C ; [.2109.001E.0002] # +004D 030C ; [.2109.001E.0008] # +006D 0300 ; [.2109.001F.0002] # +006D 0340 ; [.2109.001F.0002] # +004D 0300 ; [.2109.001F.0008] # +004D 0340 ; [.2109.001F.0008] # +006E 0304 ; [.2118.001C.0002] # +004E 0304 ; [.2118.001C.0008] # +0144 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0301 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0341 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +0143 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0301 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0341 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +0148 ; [.2118.001E.0002] # LATIN SMALL LETTER N WITH CARON +006E 030C ; [.2118.001E.0002] # LATIN SMALL LETTER N WITH CARON +0147 ; [.2118.001E.0008] # LATIN CAPITAL LETTER N WITH CARON +004E 030C ; [.2118.001E.0008] # LATIN CAPITAL LETTER N WITH CARON +01F9 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +006E 0300 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +006E 0340 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +01F8 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +004E 0300 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +004E 0340 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +014D ; [.213C.001C.0002] # LATIN SMALL LETTER O WITH MACRON +006F 0304 ; [.213C.001C.0002] # LATIN SMALL LETTER O WITH MACRON +014C ; [.213C.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON +004F 0304 ; [.213C.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON +00F3 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0301 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0341 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +00D3 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0301 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0341 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +01D2 ; [.213C.001E.0002] # LATIN SMALL LETTER O WITH CARON +006F 030C ; [.213C.001E.0002] # LATIN SMALL LETTER O WITH CARON +01D1 ; [.213C.001E.0008] # LATIN CAPITAL LETTER O WITH CARON +004F 030C ; [.213C.001E.0008] # LATIN CAPITAL LETTER O WITH CARON +00F2 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +006F 0300 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +006F 0340 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +00D2 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +004F 0300 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +004F 0340 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +016B ; [.2217.001C.0002] # LATIN SMALL LETTER U WITH MACRON +0075 0304 ; [.2217.001C.0002] # LATIN SMALL LETTER U WITH MACRON +016A ; [.2217.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON +0055 0304 ; [.2217.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON +00FA ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +0075 0301 ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +0075 0341 ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +00DA ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +0055 0301 ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +0055 0341 ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +01D4 ; [.2217.001E.0002] # LATIN SMALL LETTER U WITH CARON +0075 030C ; [.2217.001E.0002] # LATIN SMALL LETTER U WITH CARON +01D3 ; [.2217.001E.0008] # LATIN CAPITAL LETTER U WITH CARON +0055 030C ; [.2217.001E.0008] # LATIN CAPITAL LETTER U WITH CARON +00F9 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +0075 0300 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +0075 0340 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +00D9 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +0055 0300 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +0055 0340 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +01D6 ; [.2217.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +0075 0308 0304 ; [.2217.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2217.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +0055 0308 0304 ; [.2217.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +00FC 0304 ; [.2217.0021.0002] # +00DC 0304 ; [.2217.0021.0008] # +01D8 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +0075 0308 0301 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +0075 0308 0341 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +0055 0308 0301 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +0055 0308 0341 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +00FC 0301 ; [.2217.0022.0002] # +00FC 0341 ; [.2217.0022.0002] # +00DC 0301 ; [.2217.0022.0008] # +00DC 0341 ; [.2217.0022.0008] # +01DA ; [.2217.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +0075 0308 030C ; [.2217.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2217.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0055 0308 030C ; [.2217.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +00FC 030C ; [.2217.0023.0002] # +00DC 030C ; [.2217.0023.0008] # +01DC ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +0075 0308 0300 ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +0075 0308 0340 ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +0055 0308 0300 ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +0055 0308 0340 ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +00FC 0300 ; [.2217.0024.0002] # +00FC 0340 ; [.2217.0024.0002] # +00DC 0300 ; [.2217.0024.0008] # +00DC 0340 ; [.2217.0024.0008] # +00FC ; [.2217.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2217.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2217.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2217.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS E2D8 ; [.8EAB.0020.0002] # E2D9 ; [.8EAC.0020.0002] # E2DA ; [.8EAD.0020.0002] # diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/zh_pin.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/zh_pin.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/zh_pin.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/zh_pin.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,214 +1,214 @@ use Unicode::Collate::CJK::Pinyin; +{ - locale_version => 1.27, + locale_version => 1.29, overrideCJK => \&Unicode::Collate::CJK::Pinyin::weightPinyin, - entry => <<'ENTRY', # for DUCET v10.0.0 -0101 ; [.1CAD.001C.0002] # LATIN SMALL LETTER A WITH MACRON -0061 0304 ; [.1CAD.001C.0002] # LATIN SMALL LETTER A WITH MACRON -0100 ; [.1CAD.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON -0041 0304 ; [.1CAD.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON -00E1 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0301 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0341 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -00C1 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0301 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0341 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -01CE ; [.1CAD.001E.0002] # LATIN SMALL LETTER A WITH CARON -0061 030C ; [.1CAD.001E.0002] # LATIN SMALL LETTER A WITH CARON -01CD ; [.1CAD.001E.0008] # LATIN CAPITAL LETTER A WITH CARON -0041 030C ; [.1CAD.001E.0008] # LATIN CAPITAL LETTER A WITH CARON -00E0 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -0061 0300 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -0061 0340 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -00C0 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0041 0300 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0041 0340 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0113 ; [.1D10.001C.0002] # LATIN SMALL LETTER E WITH MACRON -0065 0304 ; [.1D10.001C.0002] # LATIN SMALL LETTER E WITH MACRON -0112 ; [.1D10.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON -0045 0304 ; [.1D10.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON -00E9 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0301 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0341 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -00C9 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0301 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0341 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -011B ; [.1D10.001E.0002] # LATIN SMALL LETTER E WITH CARON -0065 030C ; [.1D10.001E.0002] # LATIN SMALL LETTER E WITH CARON -011A ; [.1D10.001E.0008] # LATIN CAPITAL LETTER E WITH CARON -0045 030C ; [.1D10.001E.0008] # LATIN CAPITAL LETTER E WITH CARON -00E8 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -0065 0300 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -0065 0340 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -00C8 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -0045 0300 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -0045 0340 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -00EA 0304 ; [.1D10.0021.0002] # -00CA 0304 ; [.1D10.0021.0008] # -0065 0302 0304 ; [.1D10.0021.0002] # -0045 0302 0304 ; [.1D10.0021.0008] # -1EBF ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -0065 0302 0301 ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -0065 0302 0341 ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -1EBE ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -0045 0302 0301 ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -0045 0302 0341 ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -00EA 0301 ; [.1D10.0022.0002] # -00EA 0341 ; [.1D10.0022.0002] # -00CA 0301 ; [.1D10.0022.0008] # -00CA 0341 ; [.1D10.0022.0008] # -00EA 030C ; [.1D10.0023.0002] # -00CA 030C ; [.1D10.0023.0008] # -0065 0302 030C ; [.1D10.0023.0002] # -0045 0302 030C ; [.1D10.0023.0008] # -1EC1 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -0065 0302 0300 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -0065 0302 0340 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC0 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -0045 0302 0300 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -0045 0302 0340 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -00EA 0300 ; [.1D10.0024.0002] # -00EA 0340 ; [.1D10.0024.0002] # -00CA 0300 ; [.1D10.0024.0008] # -00CA 0340 ; [.1D10.0024.0008] # -00EA ; [.1D10.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -0065 0302 ; [.1D10.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -00CA ; [.1D10.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -0045 0302 ; [.1D10.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -1EC5 ; [.1D10.0025.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE -1EC4 ; [.1D10.0025.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE -1EC3 ; [.1D10.0025.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC2 ; [.1D10.0025.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC7 ; [.1D10.0025.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC6 ; [.1D10.0025.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW -012B ; [.1D98.001C.0002] # LATIN SMALL LETTER I WITH MACRON -0069 0304 ; [.1D98.001C.0002] # LATIN SMALL LETTER I WITH MACRON -012A ; [.1D98.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON -0049 0304 ; [.1D98.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON -00ED ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -0069 0301 ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -0069 0341 ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -00CD ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -0049 0301 ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -0049 0341 ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -01D0 ; [.1D98.001E.0002] # LATIN SMALL LETTER I WITH CARON -0069 030C ; [.1D98.001E.0002] # LATIN SMALL LETTER I WITH CARON -01CF ; [.1D98.001E.0008] # LATIN CAPITAL LETTER I WITH CARON -0049 030C ; [.1D98.001E.0008] # LATIN CAPITAL LETTER I WITH CARON -00EC ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -0069 0300 ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -0069 0340 ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -00CC ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -0049 0300 ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -0049 0340 ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -006D 0304 ; [.1E10.001C.0002] # -004D 0304 ; [.1E10.001C.0008] # -1E3F ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -006D 0301 ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -006D 0341 ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -1E3E ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -004D 0301 ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -004D 0341 ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -006D 030C ; [.1E10.001E.0002] # -004D 030C ; [.1E10.001E.0008] # -006D 0300 ; [.1E10.001F.0002] # -006D 0340 ; [.1E10.001F.0002] # -004D 0300 ; [.1E10.001F.0008] # -004D 0340 ; [.1E10.001F.0008] # -006E 0304 ; [.1E1F.001C.0002] # -004E 0304 ; [.1E1F.001C.0008] # -0144 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0301 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0341 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -0143 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0301 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0341 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -0148 ; [.1E1F.001E.0002] # LATIN SMALL LETTER N WITH CARON -006E 030C ; [.1E1F.001E.0002] # LATIN SMALL LETTER N WITH CARON -0147 ; [.1E1F.001E.0008] # LATIN CAPITAL LETTER N WITH CARON -004E 030C ; [.1E1F.001E.0008] # LATIN CAPITAL LETTER N WITH CARON -01F9 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -006E 0300 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -006E 0340 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -01F8 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -004E 0300 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -004E 0340 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -014D ; [.1E43.001C.0002] # LATIN SMALL LETTER O WITH MACRON -006F 0304 ; [.1E43.001C.0002] # LATIN SMALL LETTER O WITH MACRON -014C ; [.1E43.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON -004F 0304 ; [.1E43.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON -00F3 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0301 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0341 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -00D3 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0301 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0341 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -01D2 ; [.1E43.001E.0002] # LATIN SMALL LETTER O WITH CARON -006F 030C ; [.1E43.001E.0002] # LATIN SMALL LETTER O WITH CARON -01D1 ; [.1E43.001E.0008] # LATIN CAPITAL LETTER O WITH CARON -004F 030C ; [.1E43.001E.0008] # LATIN CAPITAL LETTER O WITH CARON -00F2 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -006F 0300 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -006F 0340 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -00D2 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -004F 0300 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -004F 0340 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -016B ; [.1F1B.001C.0002] # LATIN SMALL LETTER U WITH MACRON -0075 0304 ; [.1F1B.001C.0002] # LATIN SMALL LETTER U WITH MACRON -016A ; [.1F1B.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON -0055 0304 ; [.1F1B.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON -00FA ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -0075 0301 ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -0075 0341 ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -00DA ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -0055 0301 ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -0055 0341 ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -01D4 ; [.1F1B.001E.0002] # LATIN SMALL LETTER U WITH CARON -0075 030C ; [.1F1B.001E.0002] # LATIN SMALL LETTER U WITH CARON -01D3 ; [.1F1B.001E.0008] # LATIN CAPITAL LETTER U WITH CARON -0055 030C ; [.1F1B.001E.0008] # LATIN CAPITAL LETTER U WITH CARON -00F9 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -0075 0300 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -0075 0340 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -00D9 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -0055 0300 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -0055 0340 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -01D6 ; [.1F1B.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -0075 0308 0304 ; [.1F1B.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F1B.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -0055 0308 0304 ; [.1F1B.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -00FC 0304 ; [.1F1B.0021.0002] # -00DC 0304 ; [.1F1B.0021.0008] # -01D8 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -0075 0308 0301 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -0075 0308 0341 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -0055 0308 0301 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -0055 0308 0341 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -00FC 0301 ; [.1F1B.0022.0002] # -00FC 0341 ; [.1F1B.0022.0002] # -00DC 0301 ; [.1F1B.0022.0008] # -00DC 0341 ; [.1F1B.0022.0008] # -01DA ; [.1F1B.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -0075 0308 030C ; [.1F1B.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F1B.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0055 0308 030C ; [.1F1B.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -00FC 030C ; [.1F1B.0023.0002] # -00DC 030C ; [.1F1B.0023.0008] # -01DC ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -0075 0308 0300 ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -0075 0308 0340 ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -0055 0308 0300 ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -0055 0308 0340 ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -00FC 0300 ; [.1F1B.0024.0002] # -00FC 0340 ; [.1F1B.0024.0002] # -00DC 0300 ; [.1F1B.0024.0008] # -00DC 0340 ; [.1F1B.0024.0008] # -00FC ; [.1F1B.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F1B.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F1B.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F1B.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS + entry => <<'ENTRY', # for DUCET v13.0.0 +0101 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON +0061 0304 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON +0100 ; [.1FA2.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON +0041 0304 ; [.1FA2.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON +00E1 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0301 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0341 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +00C1 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0301 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0341 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +01CE ; [.1FA2.001E.0002] # LATIN SMALL LETTER A WITH CARON +0061 030C ; [.1FA2.001E.0002] # LATIN SMALL LETTER A WITH CARON +01CD ; [.1FA2.001E.0008] # LATIN CAPITAL LETTER A WITH CARON +0041 030C ; [.1FA2.001E.0008] # LATIN CAPITAL LETTER A WITH CARON +00E0 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +0061 0300 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +0061 0340 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +00C0 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0041 0300 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0041 0340 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0113 ; [.2007.001C.0002] # LATIN SMALL LETTER E WITH MACRON +0065 0304 ; [.2007.001C.0002] # LATIN SMALL LETTER E WITH MACRON +0112 ; [.2007.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON +0045 0304 ; [.2007.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON +00E9 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0301 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0341 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +00C9 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0301 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0341 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +011B ; [.2007.001E.0002] # LATIN SMALL LETTER E WITH CARON +0065 030C ; [.2007.001E.0002] # LATIN SMALL LETTER E WITH CARON +011A ; [.2007.001E.0008] # LATIN CAPITAL LETTER E WITH CARON +0045 030C ; [.2007.001E.0008] # LATIN CAPITAL LETTER E WITH CARON +00E8 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +0065 0300 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +0065 0340 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +00C8 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +0045 0300 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +0045 0340 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +00EA 0304 ; [.2007.0021.0002] # +00CA 0304 ; [.2007.0021.0008] # +0065 0302 0304 ; [.2007.0021.0002] # +0045 0302 0304 ; [.2007.0021.0008] # +1EBF ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +0065 0302 0301 ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +0065 0302 0341 ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +1EBE ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +0045 0302 0301 ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +0045 0302 0341 ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +00EA 0301 ; [.2007.0022.0002] # +00EA 0341 ; [.2007.0022.0002] # +00CA 0301 ; [.2007.0022.0008] # +00CA 0341 ; [.2007.0022.0008] # +00EA 030C ; [.2007.0023.0002] # +00CA 030C ; [.2007.0023.0008] # +0065 0302 030C ; [.2007.0023.0002] # +0045 0302 030C ; [.2007.0023.0008] # +1EC1 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +0065 0302 0300 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +0065 0302 0340 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +1EC0 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +0045 0302 0300 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +0045 0302 0340 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +00EA 0300 ; [.2007.0024.0002] # +00EA 0340 ; [.2007.0024.0002] # +00CA 0300 ; [.2007.0024.0008] # +00CA 0340 ; [.2007.0024.0008] # +00EA ; [.2007.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +0065 0302 ; [.2007.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +00CA ; [.2007.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +0045 0302 ; [.2007.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +1EC5 ; [.2007.0025.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +1EC4 ; [.2007.0025.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +1EC3 ; [.2007.0025.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC2 ; [.2007.0025.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC7 ; [.2007.0025.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +1EC6 ; [.2007.0025.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +012B ; [.2090.001C.0002] # LATIN SMALL LETTER I WITH MACRON +0069 0304 ; [.2090.001C.0002] # LATIN SMALL LETTER I WITH MACRON +012A ; [.2090.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON +0049 0304 ; [.2090.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON +00ED ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +0069 0301 ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +0069 0341 ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +00CD ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +0049 0301 ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +0049 0341 ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +01D0 ; [.2090.001E.0002] # LATIN SMALL LETTER I WITH CARON +0069 030C ; [.2090.001E.0002] # LATIN SMALL LETTER I WITH CARON +01CF ; [.2090.001E.0008] # LATIN CAPITAL LETTER I WITH CARON +0049 030C ; [.2090.001E.0008] # LATIN CAPITAL LETTER I WITH CARON +00EC ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +0069 0300 ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +0069 0340 ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +00CC ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +0049 0300 ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +0049 0340 ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +006D 0304 ; [.2109.001C.0002] # +004D 0304 ; [.2109.001C.0008] # +1E3F ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +006D 0301 ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +006D 0341 ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +1E3E ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +004D 0301 ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +004D 0341 ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +006D 030C ; [.2109.001E.0002] # +004D 030C ; [.2109.001E.0008] # +006D 0300 ; [.2109.001F.0002] # +006D 0340 ; [.2109.001F.0002] # +004D 0300 ; [.2109.001F.0008] # +004D 0340 ; [.2109.001F.0008] # +006E 0304 ; [.2118.001C.0002] # +004E 0304 ; [.2118.001C.0008] # +0144 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0301 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0341 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +0143 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0301 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0341 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +0148 ; [.2118.001E.0002] # LATIN SMALL LETTER N WITH CARON +006E 030C ; [.2118.001E.0002] # LATIN SMALL LETTER N WITH CARON +0147 ; [.2118.001E.0008] # LATIN CAPITAL LETTER N WITH CARON +004E 030C ; [.2118.001E.0008] # LATIN CAPITAL LETTER N WITH CARON +01F9 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +006E 0300 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +006E 0340 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +01F8 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +004E 0300 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +004E 0340 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +014D ; [.213C.001C.0002] # LATIN SMALL LETTER O WITH MACRON +006F 0304 ; [.213C.001C.0002] # LATIN SMALL LETTER O WITH MACRON +014C ; [.213C.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON +004F 0304 ; [.213C.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON +00F3 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0301 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0341 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +00D3 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0301 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0341 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +01D2 ; [.213C.001E.0002] # LATIN SMALL LETTER O WITH CARON +006F 030C ; [.213C.001E.0002] # LATIN SMALL LETTER O WITH CARON +01D1 ; [.213C.001E.0008] # LATIN CAPITAL LETTER O WITH CARON +004F 030C ; [.213C.001E.0008] # LATIN CAPITAL LETTER O WITH CARON +00F2 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +006F 0300 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +006F 0340 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +00D2 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +004F 0300 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +004F 0340 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +016B ; [.2217.001C.0002] # LATIN SMALL LETTER U WITH MACRON +0075 0304 ; [.2217.001C.0002] # LATIN SMALL LETTER U WITH MACRON +016A ; [.2217.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON +0055 0304 ; [.2217.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON +00FA ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +0075 0301 ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +0075 0341 ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +00DA ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +0055 0301 ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +0055 0341 ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +01D4 ; [.2217.001E.0002] # LATIN SMALL LETTER U WITH CARON +0075 030C ; [.2217.001E.0002] # LATIN SMALL LETTER U WITH CARON +01D3 ; [.2217.001E.0008] # LATIN CAPITAL LETTER U WITH CARON +0055 030C ; [.2217.001E.0008] # LATIN CAPITAL LETTER U WITH CARON +00F9 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +0075 0300 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +0075 0340 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +00D9 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +0055 0300 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +0055 0340 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +01D6 ; [.2217.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +0075 0308 0304 ; [.2217.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2217.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +0055 0308 0304 ; [.2217.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +00FC 0304 ; [.2217.0021.0002] # +00DC 0304 ; [.2217.0021.0008] # +01D8 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +0075 0308 0301 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +0075 0308 0341 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +0055 0308 0301 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +0055 0308 0341 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +00FC 0301 ; [.2217.0022.0002] # +00FC 0341 ; [.2217.0022.0002] # +00DC 0301 ; [.2217.0022.0008] # +00DC 0341 ; [.2217.0022.0008] # +01DA ; [.2217.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +0075 0308 030C ; [.2217.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2217.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0055 0308 030C ; [.2217.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +00FC 030C ; [.2217.0023.0002] # +00DC 030C ; [.2217.0023.0008] # +01DC ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +0075 0308 0300 ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +0075 0308 0340 ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +0055 0308 0300 ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +0055 0308 0340 ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +00FC 0300 ; [.2217.0024.0002] # +00FC 0340 ; [.2217.0024.0002] # +00DC 0300 ; [.2217.0024.0008] # +00DC 0340 ; [.2217.0024.0008] # +00FC ; [.2217.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2217.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2217.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2217.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS FDD0 0041 ; [.8000.0020.0002] # FDD0 0042 ; [.80C5.0020.0002] # FDD0 0043 ; [.8441.0020.0002] # @@ -233,119 +233,119 @@ FDD0 0058 ; [.BE4A.0020.0002] # FDD0 0059 ; [.C382.0020.0002] # FDD0 005A ; [.CB22.0020.0002] # -3220 ; [*0318.0020.0004][.C5CF.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH ONE -3226 ; [*0318.0020.0004][.AE03.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SEVEN -3222 ; [*0318.0020.0004][.B35F.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH THREE -3228 ; [*0318.0020.0004][.9C92.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH NINE -3221 ; [*0318.0020.0004][.8E0E.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH TWO -3224 ; [*0318.0020.0004][.BDF1.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FIVE -3239 ; [*0318.0020.0004][.89B6.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH REPRESENT -323D ; [*0318.0020.0004][.AE82.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH ENTERPRISE -3241 ; [*0318.0020.0004][.C1F9.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH REST -3227 ; [*0318.0020.0004][.80C6.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH EIGHT -3225 ; [*0318.0020.0004][.A49F.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SIX -3238 ; [*0318.0020.0004][.A132.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH LABOR -3229 ; [*0318.0020.0004][.B57B.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH TEN -323F ; [*0318.0020.0004][.C10A.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH ALLIANCE -3234 ; [*0318.0020.0004][.A8EB.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH NAME -323A ; [*0318.0020.0004][.9589.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH CALL -3223 ; [*0318.0020.0004][.B715.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FOUR -322F ; [*0318.0020.0004][.BB2D.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH EARTH -323B ; [*0318.0020.0004][.C304.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH STUDY -3230 ; [*0318.0020.0004][.B272.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SUN -322A ; [*0318.0020.0004][.CA96.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH MOON -3232 ; [*0318.0020.0004][.C8D2.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH HAVE -322D ; [*0318.0020.0004][.A98A.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH WOOD -3231 ; [*0318.0020.0004][.CF58.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH STOCK -322C ; [*0318.0020.0004][.B6BA.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH WATER -322B ; [*0318.0020.0004][.97BC.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FIRE -3235 ; [*0318.0020.0004][.B980.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SPECIAL -323C ; [*0318.0020.0004][.999B.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SUPERVISE -3233 ; [*0318.0020.0004][.B4AC.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SOCIETY -3237 ; [*0318.0020.0004][.CFAD.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH CONGRATULATION -3240 ; [*0318.0020.0004][.98D6.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FESTIVAL -3242 ; [*0318.0020.0004][.D0D4.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SELF -3243 ; [*0318.0020.0004][.CE51.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH REACH -3236 ; [*0318.0020.0004][.844F.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FINANCIAL -323E ; [*0318.0020.0004][.D0A3.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH RESOURCE -322E ; [*0318.0020.0004][.9B96.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH METAL -3358 ; [.1CA3.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO -33E9 ; [.1CA4.0020.0004][.1CA3.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN -32C9 ; [.1CA4.0020.0004][.1CA3.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER -3362 ; [.1CA4.0020.0004][.1CA3.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN -33EA ; [.1CA4.0020.0004][.1CA4.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN -32CA ; [.1CA4.0020.0004][.1CA4.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER -3363 ; [.1CA4.0020.0004][.1CA4.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN -33EB ; [.1CA4.0020.0004][.1CA5.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE -32CB ; [.1CA4.0020.0004][.1CA5.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER -3364 ; [.1CA4.0020.0004][.1CA5.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE -33EC ; [.1CA4.0020.0004][.1CA6.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN -3365 ; [.1CA4.0020.0004][.1CA6.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN -33ED ; [.1CA4.0020.0004][.1CA7.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN -3366 ; [.1CA4.0020.0004][.1CA7.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN -33EE ; [.1CA4.0020.0004][.1CA8.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN -3367 ; [.1CA4.0020.0004][.1CA8.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN -33EF ; [.1CA4.0020.0004][.1CA9.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN -3368 ; [.1CA4.0020.0004][.1CA9.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN -33F0 ; [.1CA4.0020.0004][.1CAA.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN -3369 ; [.1CA4.0020.0004][.1CAA.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN -33F1 ; [.1CA4.0020.0004][.1CAB.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN -336A ; [.1CA4.0020.0004][.1CAB.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN -33F2 ; [.1CA4.0020.0004][.1CAC.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN -336B ; [.1CA4.0020.0004][.1CAC.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN -33E0 ; [.1CA4.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE -32C0 ; [.1CA4.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY -3359 ; [.1CA4.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE -33F3 ; [.1CA5.0020.0004][.1CA3.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY -336C ; [.1CA5.0020.0004][.1CA3.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY -33F4 ; [.1CA5.0020.0004][.1CA4.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE -336D ; [.1CA5.0020.0004][.1CA4.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE -33F5 ; [.1CA5.0020.0004][.1CA5.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO -336E ; [.1CA5.0020.0004][.1CA5.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO -33F6 ; [.1CA5.0020.0004][.1CA6.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE -336F ; [.1CA5.0020.0004][.1CA6.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE -33F7 ; [.1CA5.0020.0004][.1CA7.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR -3370 ; [.1CA5.0020.0004][.1CA7.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR -33F8 ; [.1CA5.0020.0004][.1CA8.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE -33F9 ; [.1CA5.0020.0004][.1CA9.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX -33FA ; [.1CA5.0020.0004][.1CAA.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN -33FB ; [.1CA5.0020.0004][.1CAB.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT -33FC ; [.1CA5.0020.0004][.1CAC.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE -33E1 ; [.1CA5.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO -32C1 ; [.1CA5.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY -335A ; [.1CA5.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO -33FD ; [.1CA6.0020.0004][.1CA3.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY -33FE ; [.1CA6.0020.0004][.1CA4.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE -33E2 ; [.1CA6.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE -32C2 ; [.1CA6.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH -335B ; [.1CA6.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE -33E3 ; [.1CA7.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR -32C3 ; [.1CA7.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL -335C ; [.1CA7.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR -33E4 ; [.1CA8.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE -32C4 ; [.1CA8.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY -335D ; [.1CA8.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE -33E5 ; [.1CA9.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX -32C5 ; [.1CA9.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE -335E ; [.1CA9.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX -33E6 ; [.1CAA.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN -32C6 ; [.1CAA.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY -335F ; [.1CAA.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN -33E7 ; [.1CAB.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT -32C7 ; [.1CAB.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST -3360 ; [.1CAB.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT -33E8 ; [.1CAC.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE -32C8 ; [.1CAC.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER -3361 ; [.1CAC.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE -1F241 ; [*037A.0020.0004][.B35F.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 -1F242 ; [*037A.0020.0004][.8E0E.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C -1F247 ; [*037A.0020.0004][.B548.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD -1F243 ; [*037A.0020.0004][.8049.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 -1F245 ; [*037A.0020.0004][.89A6.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 -1F248 ; [*037A.0020.0004][.811B.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 -1F240 ; [*037A.0020.0004][.81FC.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C -1F244 ; [*037A.0020.0004][.8B60.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 -1F246 ; [*037A.0020.0004][.8A91.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 +3220 ; [*0328.0020.0004][.C5CF.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH ONE +3226 ; [*0328.0020.0004][.AE03.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SEVEN +3222 ; [*0328.0020.0004][.B35F.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH THREE +3228 ; [*0328.0020.0004][.9C92.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH NINE +3221 ; [*0328.0020.0004][.8E0E.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH TWO +3224 ; [*0328.0020.0004][.BDF1.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FIVE +3239 ; [*0328.0020.0004][.89B6.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH REPRESENT +323D ; [*0328.0020.0004][.AE82.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH ENTERPRISE +3241 ; [*0328.0020.0004][.C1F9.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH REST +3227 ; [*0328.0020.0004][.80C6.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH EIGHT +3225 ; [*0328.0020.0004][.A49F.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SIX +3238 ; [*0328.0020.0004][.A132.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH LABOR +3229 ; [*0328.0020.0004][.B57B.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH TEN +323F ; [*0328.0020.0004][.C10A.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH ALLIANCE +3234 ; [*0328.0020.0004][.A8EB.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH NAME +323A ; [*0328.0020.0004][.9589.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH CALL +3223 ; [*0328.0020.0004][.B715.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FOUR +322F ; [*0328.0020.0004][.BB2D.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH EARTH +323B ; [*0328.0020.0004][.C304.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH STUDY +3230 ; [*0328.0020.0004][.B272.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SUN +322A ; [*0328.0020.0004][.CA96.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH MOON +3232 ; [*0328.0020.0004][.C8D2.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH HAVE +322D ; [*0328.0020.0004][.A98A.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH WOOD +3231 ; [*0328.0020.0004][.CF58.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH STOCK +322C ; [*0328.0020.0004][.B6BA.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH WATER +322B ; [*0328.0020.0004][.97BC.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FIRE +3235 ; [*0328.0020.0004][.B980.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SPECIAL +323C ; [*0328.0020.0004][.999B.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SUPERVISE +3233 ; [*0328.0020.0004][.B4AC.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SOCIETY +3237 ; [*0328.0020.0004][.CFAD.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH CONGRATULATION +3240 ; [*0328.0020.0004][.98D6.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FESTIVAL +3242 ; [*0328.0020.0004][.D0D4.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SELF +3243 ; [*0328.0020.0004][.CE51.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH REACH +3236 ; [*0328.0020.0004][.844F.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FINANCIAL +323E ; [*0328.0020.0004][.D0A3.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH RESOURCE +322E ; [*0328.0020.0004][.9B96.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH METAL +3358 ; [.1F98.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO +33E9 ; [.1F99.0020.0004][.1F98.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN +32C9 ; [.1F99.0020.0004][.1F98.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER +3362 ; [.1F99.0020.0004][.1F98.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN +33EA ; [.1F99.0020.0004][.1F99.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN +32CA ; [.1F99.0020.0004][.1F99.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER +3363 ; [.1F99.0020.0004][.1F99.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN +33EB ; [.1F99.0020.0004][.1F9A.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE +32CB ; [.1F99.0020.0004][.1F9A.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER +3364 ; [.1F99.0020.0004][.1F9A.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE +33EC ; [.1F99.0020.0004][.1F9B.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN +3365 ; [.1F99.0020.0004][.1F9B.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN +33ED ; [.1F99.0020.0004][.1F9C.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN +3366 ; [.1F99.0020.0004][.1F9C.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN +33EE ; [.1F99.0020.0004][.1F9D.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN +3367 ; [.1F99.0020.0004][.1F9D.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN +33EF ; [.1F99.0020.0004][.1F9E.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN +3368 ; [.1F99.0020.0004][.1F9E.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN +33F0 ; [.1F99.0020.0004][.1F9F.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN +3369 ; [.1F99.0020.0004][.1F9F.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN +33F1 ; [.1F99.0020.0004][.1FA0.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN +336A ; [.1F99.0020.0004][.1FA0.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN +33F2 ; [.1F99.0020.0004][.1FA1.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN +336B ; [.1F99.0020.0004][.1FA1.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN +33E0 ; [.1F99.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE +32C0 ; [.1F99.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY +3359 ; [.1F99.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE +33F3 ; [.1F9A.0020.0004][.1F98.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY +336C ; [.1F9A.0020.0004][.1F98.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY +33F4 ; [.1F9A.0020.0004][.1F99.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE +336D ; [.1F9A.0020.0004][.1F99.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE +33F5 ; [.1F9A.0020.0004][.1F9A.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO +336E ; [.1F9A.0020.0004][.1F9A.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO +33F6 ; [.1F9A.0020.0004][.1F9B.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE +336F ; [.1F9A.0020.0004][.1F9B.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE +33F7 ; [.1F9A.0020.0004][.1F9C.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR +3370 ; [.1F9A.0020.0004][.1F9C.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR +33F8 ; [.1F9A.0020.0004][.1F9D.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE +33F9 ; [.1F9A.0020.0004][.1F9E.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX +33FA ; [.1F9A.0020.0004][.1F9F.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN +33FB ; [.1F9A.0020.0004][.1FA0.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT +33FC ; [.1F9A.0020.0004][.1FA1.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE +33E1 ; [.1F9A.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO +32C1 ; [.1F9A.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY +335A ; [.1F9A.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO +33FD ; [.1F9B.0020.0004][.1F98.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY +33FE ; [.1F9B.0020.0004][.1F99.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE +33E2 ; [.1F9B.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE +32C2 ; [.1F9B.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH +335B ; [.1F9B.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE +33E3 ; [.1F9C.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR +32C3 ; [.1F9C.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL +335C ; [.1F9C.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR +33E4 ; [.1F9D.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE +32C4 ; [.1F9D.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY +335D ; [.1F9D.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE +33E5 ; [.1F9E.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX +32C5 ; [.1F9E.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE +335E ; [.1F9E.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX +33E6 ; [.1F9F.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN +32C6 ; [.1F9F.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY +335F ; [.1F9F.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN +33E7 ; [.1FA0.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT +32C7 ; [.1FA0.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST +3360 ; [.1FA0.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT +33E8 ; [.1FA1.0020.0004][.B272.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE +32C8 ; [.1FA1.0020.0004][.CA96.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER +3361 ; [.1FA1.0020.0004][.8B60.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE +1F241 ; [*038A.0020.0004][.B35F.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 +1F242 ; [*038A.0020.0004][.8E0E.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C +1F247 ; [*038A.0020.0004][.B548.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD +1F243 ; [*038A.0020.0004][.8049.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 +1F245 ; [*038A.0020.0004][.89A6.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 +1F248 ; [*038A.0020.0004][.811B.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 +1F240 ; [*038A.0020.0004][.81FC.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C +1F244 ; [*038A.0020.0004][.8B60.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 +1F246 ; [*038A.0020.0004][.8A91.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 2F00 ; [.C5CF.0020.0004] # KANGXI RADICAL ONE 3192 ; [.C5CF.0020.0014] # IDEOGRAPHIC ANNOTATION ONE MARK 3280 ; [.C5CF.0020.0006] # CIRCLED IDEOGRAPH ONE diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/zh.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/zh.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/zh.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/zh.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,211 +1,211 @@ +{ - locale_version => 1.27, - entry => <<'ENTRY', # for DUCET v10.0.0 -0101 ; [.1CAD.001C.0002] # LATIN SMALL LETTER A WITH MACRON -0061 0304 ; [.1CAD.001C.0002] # LATIN SMALL LETTER A WITH MACRON -0100 ; [.1CAD.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON -0041 0304 ; [.1CAD.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON -00E1 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0301 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0341 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -00C1 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0301 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0341 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -01CE ; [.1CAD.001E.0002] # LATIN SMALL LETTER A WITH CARON -0061 030C ; [.1CAD.001E.0002] # LATIN SMALL LETTER A WITH CARON -01CD ; [.1CAD.001E.0008] # LATIN CAPITAL LETTER A WITH CARON -0041 030C ; [.1CAD.001E.0008] # LATIN CAPITAL LETTER A WITH CARON -00E0 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -0061 0300 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -0061 0340 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -00C0 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0041 0300 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0041 0340 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0113 ; [.1D10.001C.0002] # LATIN SMALL LETTER E WITH MACRON -0065 0304 ; [.1D10.001C.0002] # LATIN SMALL LETTER E WITH MACRON -0112 ; [.1D10.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON -0045 0304 ; [.1D10.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON -00E9 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0301 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0341 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -00C9 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0301 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0341 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -011B ; [.1D10.001E.0002] # LATIN SMALL LETTER E WITH CARON -0065 030C ; [.1D10.001E.0002] # LATIN SMALL LETTER E WITH CARON -011A ; [.1D10.001E.0008] # LATIN CAPITAL LETTER E WITH CARON -0045 030C ; [.1D10.001E.0008] # LATIN CAPITAL LETTER E WITH CARON -00E8 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -0065 0300 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -0065 0340 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -00C8 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -0045 0300 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -0045 0340 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -00EA 0304 ; [.1D10.0021.0002] # -00CA 0304 ; [.1D10.0021.0008] # -0065 0302 0304 ; [.1D10.0021.0002] # -0045 0302 0304 ; [.1D10.0021.0008] # -1EBF ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -0065 0302 0301 ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -0065 0302 0341 ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -1EBE ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -0045 0302 0301 ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -0045 0302 0341 ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -00EA 0301 ; [.1D10.0022.0002] # -00EA 0341 ; [.1D10.0022.0002] # -00CA 0301 ; [.1D10.0022.0008] # -00CA 0341 ; [.1D10.0022.0008] # -00EA 030C ; [.1D10.0023.0002] # -00CA 030C ; [.1D10.0023.0008] # -0065 0302 030C ; [.1D10.0023.0002] # -0045 0302 030C ; [.1D10.0023.0008] # -1EC1 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -0065 0302 0300 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -0065 0302 0340 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC0 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -0045 0302 0300 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -0045 0302 0340 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -00EA 0300 ; [.1D10.0024.0002] # -00EA 0340 ; [.1D10.0024.0002] # -00CA 0300 ; [.1D10.0024.0008] # -00CA 0340 ; [.1D10.0024.0008] # -00EA ; [.1D10.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -0065 0302 ; [.1D10.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -00CA ; [.1D10.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -0045 0302 ; [.1D10.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -1EC5 ; [.1D10.0025.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE -1EC4 ; [.1D10.0025.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE -1EC3 ; [.1D10.0025.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC2 ; [.1D10.0025.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC7 ; [.1D10.0025.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC6 ; [.1D10.0025.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW -012B ; [.1D98.001C.0002] # LATIN SMALL LETTER I WITH MACRON -0069 0304 ; [.1D98.001C.0002] # LATIN SMALL LETTER I WITH MACRON -012A ; [.1D98.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON -0049 0304 ; [.1D98.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON -00ED ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -0069 0301 ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -0069 0341 ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -00CD ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -0049 0301 ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -0049 0341 ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -01D0 ; [.1D98.001E.0002] # LATIN SMALL LETTER I WITH CARON -0069 030C ; [.1D98.001E.0002] # LATIN SMALL LETTER I WITH CARON -01CF ; [.1D98.001E.0008] # LATIN CAPITAL LETTER I WITH CARON -0049 030C ; [.1D98.001E.0008] # LATIN CAPITAL LETTER I WITH CARON -00EC ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -0069 0300 ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -0069 0340 ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -00CC ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -0049 0300 ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -0049 0340 ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -006D 0304 ; [.1E10.001C.0002] # -004D 0304 ; [.1E10.001C.0008] # -1E3F ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -006D 0301 ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -006D 0341 ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -1E3E ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -004D 0301 ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -004D 0341 ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -006D 030C ; [.1E10.001E.0002] # -004D 030C ; [.1E10.001E.0008] # -006D 0300 ; [.1E10.001F.0002] # -006D 0340 ; [.1E10.001F.0002] # -004D 0300 ; [.1E10.001F.0008] # -004D 0340 ; [.1E10.001F.0008] # -006E 0304 ; [.1E1F.001C.0002] # -004E 0304 ; [.1E1F.001C.0008] # -0144 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0301 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0341 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -0143 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0301 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0341 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -0148 ; [.1E1F.001E.0002] # LATIN SMALL LETTER N WITH CARON -006E 030C ; [.1E1F.001E.0002] # LATIN SMALL LETTER N WITH CARON -0147 ; [.1E1F.001E.0008] # LATIN CAPITAL LETTER N WITH CARON -004E 030C ; [.1E1F.001E.0008] # LATIN CAPITAL LETTER N WITH CARON -01F9 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -006E 0300 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -006E 0340 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -01F8 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -004E 0300 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -004E 0340 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -014D ; [.1E43.001C.0002] # LATIN SMALL LETTER O WITH MACRON -006F 0304 ; [.1E43.001C.0002] # LATIN SMALL LETTER O WITH MACRON -014C ; [.1E43.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON -004F 0304 ; [.1E43.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON -00F3 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0301 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0341 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -00D3 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0301 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0341 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -01D2 ; [.1E43.001E.0002] # LATIN SMALL LETTER O WITH CARON -006F 030C ; [.1E43.001E.0002] # LATIN SMALL LETTER O WITH CARON -01D1 ; [.1E43.001E.0008] # LATIN CAPITAL LETTER O WITH CARON -004F 030C ; [.1E43.001E.0008] # LATIN CAPITAL LETTER O WITH CARON -00F2 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -006F 0300 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -006F 0340 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -00D2 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -004F 0300 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -004F 0340 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -016B ; [.1F1B.001C.0002] # LATIN SMALL LETTER U WITH MACRON -0075 0304 ; [.1F1B.001C.0002] # LATIN SMALL LETTER U WITH MACRON -016A ; [.1F1B.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON -0055 0304 ; [.1F1B.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON -00FA ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -0075 0301 ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -0075 0341 ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -00DA ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -0055 0301 ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -0055 0341 ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -01D4 ; [.1F1B.001E.0002] # LATIN SMALL LETTER U WITH CARON -0075 030C ; [.1F1B.001E.0002] # LATIN SMALL LETTER U WITH CARON -01D3 ; [.1F1B.001E.0008] # LATIN CAPITAL LETTER U WITH CARON -0055 030C ; [.1F1B.001E.0008] # LATIN CAPITAL LETTER U WITH CARON -00F9 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -0075 0300 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -0075 0340 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -00D9 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -0055 0300 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -0055 0340 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -01D6 ; [.1F1B.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -0075 0308 0304 ; [.1F1B.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F1B.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -0055 0308 0304 ; [.1F1B.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -00FC 0304 ; [.1F1B.0021.0002] # -00DC 0304 ; [.1F1B.0021.0008] # -01D8 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -0075 0308 0301 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -0075 0308 0341 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -0055 0308 0301 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -0055 0308 0341 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -00FC 0301 ; [.1F1B.0022.0002] # -00FC 0341 ; [.1F1B.0022.0002] # -00DC 0301 ; [.1F1B.0022.0008] # -00DC 0341 ; [.1F1B.0022.0008] # -01DA ; [.1F1B.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -0075 0308 030C ; [.1F1B.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F1B.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0055 0308 030C ; [.1F1B.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -00FC 030C ; [.1F1B.0023.0002] # -00DC 030C ; [.1F1B.0023.0008] # -01DC ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -0075 0308 0300 ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -0075 0308 0340 ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -0055 0308 0300 ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -0055 0308 0340 ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -00FC 0300 ; [.1F1B.0024.0002] # -00FC 0340 ; [.1F1B.0024.0002] # -00DC 0300 ; [.1F1B.0024.0008] # -00DC 0340 ; [.1F1B.0024.0008] # -00FC ; [.1F1B.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F1B.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F1B.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F1B.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS + locale_version => 1.29, + entry => <<'ENTRY', # for DUCET v13.0.0 +0101 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON +0061 0304 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON +0100 ; [.1FA2.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON +0041 0304 ; [.1FA2.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON +00E1 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0301 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0341 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +00C1 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0301 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0341 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +01CE ; [.1FA2.001E.0002] # LATIN SMALL LETTER A WITH CARON +0061 030C ; [.1FA2.001E.0002] # LATIN SMALL LETTER A WITH CARON +01CD ; [.1FA2.001E.0008] # LATIN CAPITAL LETTER A WITH CARON +0041 030C ; [.1FA2.001E.0008] # LATIN CAPITAL LETTER A WITH CARON +00E0 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +0061 0300 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +0061 0340 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +00C0 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0041 0300 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0041 0340 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0113 ; [.2007.001C.0002] # LATIN SMALL LETTER E WITH MACRON +0065 0304 ; [.2007.001C.0002] # LATIN SMALL LETTER E WITH MACRON +0112 ; [.2007.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON +0045 0304 ; [.2007.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON +00E9 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0301 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0341 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +00C9 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0301 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0341 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +011B ; [.2007.001E.0002] # LATIN SMALL LETTER E WITH CARON +0065 030C ; [.2007.001E.0002] # LATIN SMALL LETTER E WITH CARON +011A ; [.2007.001E.0008] # LATIN CAPITAL LETTER E WITH CARON +0045 030C ; [.2007.001E.0008] # LATIN CAPITAL LETTER E WITH CARON +00E8 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +0065 0300 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +0065 0340 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +00C8 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +0045 0300 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +0045 0340 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +00EA 0304 ; [.2007.0021.0002] # +00CA 0304 ; [.2007.0021.0008] # +0065 0302 0304 ; [.2007.0021.0002] # +0045 0302 0304 ; [.2007.0021.0008] # +1EBF ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +0065 0302 0301 ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +0065 0302 0341 ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +1EBE ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +0045 0302 0301 ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +0045 0302 0341 ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +00EA 0301 ; [.2007.0022.0002] # +00EA 0341 ; [.2007.0022.0002] # +00CA 0301 ; [.2007.0022.0008] # +00CA 0341 ; [.2007.0022.0008] # +00EA 030C ; [.2007.0023.0002] # +00CA 030C ; [.2007.0023.0008] # +0065 0302 030C ; [.2007.0023.0002] # +0045 0302 030C ; [.2007.0023.0008] # +1EC1 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +0065 0302 0300 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +0065 0302 0340 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +1EC0 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +0045 0302 0300 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +0045 0302 0340 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +00EA 0300 ; [.2007.0024.0002] # +00EA 0340 ; [.2007.0024.0002] # +00CA 0300 ; [.2007.0024.0008] # +00CA 0340 ; [.2007.0024.0008] # +00EA ; [.2007.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +0065 0302 ; [.2007.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +00CA ; [.2007.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +0045 0302 ; [.2007.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +1EC5 ; [.2007.0025.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +1EC4 ; [.2007.0025.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +1EC3 ; [.2007.0025.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC2 ; [.2007.0025.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC7 ; [.2007.0025.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +1EC6 ; [.2007.0025.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +012B ; [.2090.001C.0002] # LATIN SMALL LETTER I WITH MACRON +0069 0304 ; [.2090.001C.0002] # LATIN SMALL LETTER I WITH MACRON +012A ; [.2090.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON +0049 0304 ; [.2090.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON +00ED ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +0069 0301 ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +0069 0341 ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +00CD ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +0049 0301 ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +0049 0341 ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +01D0 ; [.2090.001E.0002] # LATIN SMALL LETTER I WITH CARON +0069 030C ; [.2090.001E.0002] # LATIN SMALL LETTER I WITH CARON +01CF ; [.2090.001E.0008] # LATIN CAPITAL LETTER I WITH CARON +0049 030C ; [.2090.001E.0008] # LATIN CAPITAL LETTER I WITH CARON +00EC ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +0069 0300 ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +0069 0340 ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +00CC ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +0049 0300 ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +0049 0340 ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +006D 0304 ; [.2109.001C.0002] # +004D 0304 ; [.2109.001C.0008] # +1E3F ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +006D 0301 ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +006D 0341 ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +1E3E ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +004D 0301 ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +004D 0341 ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +006D 030C ; [.2109.001E.0002] # +004D 030C ; [.2109.001E.0008] # +006D 0300 ; [.2109.001F.0002] # +006D 0340 ; [.2109.001F.0002] # +004D 0300 ; [.2109.001F.0008] # +004D 0340 ; [.2109.001F.0008] # +006E 0304 ; [.2118.001C.0002] # +004E 0304 ; [.2118.001C.0008] # +0144 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0301 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0341 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +0143 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0301 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0341 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +0148 ; [.2118.001E.0002] # LATIN SMALL LETTER N WITH CARON +006E 030C ; [.2118.001E.0002] # LATIN SMALL LETTER N WITH CARON +0147 ; [.2118.001E.0008] # LATIN CAPITAL LETTER N WITH CARON +004E 030C ; [.2118.001E.0008] # LATIN CAPITAL LETTER N WITH CARON +01F9 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +006E 0300 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +006E 0340 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +01F8 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +004E 0300 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +004E 0340 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +014D ; [.213C.001C.0002] # LATIN SMALL LETTER O WITH MACRON +006F 0304 ; [.213C.001C.0002] # LATIN SMALL LETTER O WITH MACRON +014C ; [.213C.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON +004F 0304 ; [.213C.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON +00F3 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0301 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0341 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +00D3 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0301 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0341 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +01D2 ; [.213C.001E.0002] # LATIN SMALL LETTER O WITH CARON +006F 030C ; [.213C.001E.0002] # LATIN SMALL LETTER O WITH CARON +01D1 ; [.213C.001E.0008] # LATIN CAPITAL LETTER O WITH CARON +004F 030C ; [.213C.001E.0008] # LATIN CAPITAL LETTER O WITH CARON +00F2 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +006F 0300 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +006F 0340 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +00D2 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +004F 0300 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +004F 0340 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +016B ; [.2217.001C.0002] # LATIN SMALL LETTER U WITH MACRON +0075 0304 ; [.2217.001C.0002] # LATIN SMALL LETTER U WITH MACRON +016A ; [.2217.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON +0055 0304 ; [.2217.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON +00FA ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +0075 0301 ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +0075 0341 ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +00DA ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +0055 0301 ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +0055 0341 ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +01D4 ; [.2217.001E.0002] # LATIN SMALL LETTER U WITH CARON +0075 030C ; [.2217.001E.0002] # LATIN SMALL LETTER U WITH CARON +01D3 ; [.2217.001E.0008] # LATIN CAPITAL LETTER U WITH CARON +0055 030C ; [.2217.001E.0008] # LATIN CAPITAL LETTER U WITH CARON +00F9 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +0075 0300 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +0075 0340 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +00D9 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +0055 0300 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +0055 0340 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +01D6 ; [.2217.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +0075 0308 0304 ; [.2217.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2217.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +0055 0308 0304 ; [.2217.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +00FC 0304 ; [.2217.0021.0002] # +00DC 0304 ; [.2217.0021.0008] # +01D8 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +0075 0308 0301 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +0075 0308 0341 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +0055 0308 0301 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +0055 0308 0341 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +00FC 0301 ; [.2217.0022.0002] # +00FC 0341 ; [.2217.0022.0002] # +00DC 0301 ; [.2217.0022.0008] # +00DC 0341 ; [.2217.0022.0008] # +01DA ; [.2217.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +0075 0308 030C ; [.2217.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2217.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0055 0308 030C ; [.2217.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +00FC 030C ; [.2217.0023.0002] # +00DC 030C ; [.2217.0023.0008] # +01DC ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +0075 0308 0300 ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +0075 0308 0340 ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +0055 0308 0300 ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +0055 0308 0340 ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +00FC 0300 ; [.2217.0024.0002] # +00FC 0340 ; [.2217.0024.0002] # +00DC 0300 ; [.2217.0024.0008] # +00DC 0340 ; [.2217.0024.0008] # +00FC ; [.2217.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2217.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2217.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2217.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS ENTRY }; diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/zh_strk.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/zh_strk.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/zh_strk.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/zh_strk.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,214 +1,214 @@ use Unicode::Collate::CJK::Stroke; +{ - locale_version => 1.27, + locale_version => 1.29, overrideCJK => \&Unicode::Collate::CJK::Stroke::weightStroke, - entry => <<'ENTRY', # for DUCET v10.0.0 -0101 ; [.1CAD.001C.0002] # LATIN SMALL LETTER A WITH MACRON -0061 0304 ; [.1CAD.001C.0002] # LATIN SMALL LETTER A WITH MACRON -0100 ; [.1CAD.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON -0041 0304 ; [.1CAD.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON -00E1 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0301 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0341 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -00C1 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0301 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0341 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -01CE ; [.1CAD.001E.0002] # LATIN SMALL LETTER A WITH CARON -0061 030C ; [.1CAD.001E.0002] # LATIN SMALL LETTER A WITH CARON -01CD ; [.1CAD.001E.0008] # LATIN CAPITAL LETTER A WITH CARON -0041 030C ; [.1CAD.001E.0008] # LATIN CAPITAL LETTER A WITH CARON -00E0 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -0061 0300 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -0061 0340 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -00C0 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0041 0300 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0041 0340 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0113 ; [.1D10.001C.0002] # LATIN SMALL LETTER E WITH MACRON -0065 0304 ; [.1D10.001C.0002] # LATIN SMALL LETTER E WITH MACRON -0112 ; [.1D10.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON -0045 0304 ; [.1D10.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON -00E9 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0301 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0341 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -00C9 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0301 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0341 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -011B ; [.1D10.001E.0002] # LATIN SMALL LETTER E WITH CARON -0065 030C ; [.1D10.001E.0002] # LATIN SMALL LETTER E WITH CARON -011A ; [.1D10.001E.0008] # LATIN CAPITAL LETTER E WITH CARON -0045 030C ; [.1D10.001E.0008] # LATIN CAPITAL LETTER E WITH CARON -00E8 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -0065 0300 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -0065 0340 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -00C8 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -0045 0300 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -0045 0340 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -00EA 0304 ; [.1D10.0021.0002] # -00CA 0304 ; [.1D10.0021.0008] # -0065 0302 0304 ; [.1D10.0021.0002] # -0045 0302 0304 ; [.1D10.0021.0008] # -1EBF ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -0065 0302 0301 ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -0065 0302 0341 ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -1EBE ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -0045 0302 0301 ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -0045 0302 0341 ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -00EA 0301 ; [.1D10.0022.0002] # -00EA 0341 ; [.1D10.0022.0002] # -00CA 0301 ; [.1D10.0022.0008] # -00CA 0341 ; [.1D10.0022.0008] # -00EA 030C ; [.1D10.0023.0002] # -00CA 030C ; [.1D10.0023.0008] # -0065 0302 030C ; [.1D10.0023.0002] # -0045 0302 030C ; [.1D10.0023.0008] # -1EC1 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -0065 0302 0300 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -0065 0302 0340 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC0 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -0045 0302 0300 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -0045 0302 0340 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -00EA 0300 ; [.1D10.0024.0002] # -00EA 0340 ; [.1D10.0024.0002] # -00CA 0300 ; [.1D10.0024.0008] # -00CA 0340 ; [.1D10.0024.0008] # -00EA ; [.1D10.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -0065 0302 ; [.1D10.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -00CA ; [.1D10.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -0045 0302 ; [.1D10.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -1EC5 ; [.1D10.0025.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE -1EC4 ; [.1D10.0025.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE -1EC3 ; [.1D10.0025.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC2 ; [.1D10.0025.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC7 ; [.1D10.0025.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC6 ; [.1D10.0025.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW -012B ; [.1D98.001C.0002] # LATIN SMALL LETTER I WITH MACRON -0069 0304 ; [.1D98.001C.0002] # LATIN SMALL LETTER I WITH MACRON -012A ; [.1D98.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON -0049 0304 ; [.1D98.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON -00ED ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -0069 0301 ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -0069 0341 ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -00CD ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -0049 0301 ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -0049 0341 ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -01D0 ; [.1D98.001E.0002] # LATIN SMALL LETTER I WITH CARON -0069 030C ; [.1D98.001E.0002] # LATIN SMALL LETTER I WITH CARON -01CF ; [.1D98.001E.0008] # LATIN CAPITAL LETTER I WITH CARON -0049 030C ; [.1D98.001E.0008] # LATIN CAPITAL LETTER I WITH CARON -00EC ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -0069 0300 ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -0069 0340 ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -00CC ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -0049 0300 ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -0049 0340 ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -006D 0304 ; [.1E10.001C.0002] # -004D 0304 ; [.1E10.001C.0008] # -1E3F ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -006D 0301 ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -006D 0341 ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -1E3E ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -004D 0301 ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -004D 0341 ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -006D 030C ; [.1E10.001E.0002] # -004D 030C ; [.1E10.001E.0008] # -006D 0300 ; [.1E10.001F.0002] # -006D 0340 ; [.1E10.001F.0002] # -004D 0300 ; [.1E10.001F.0008] # -004D 0340 ; [.1E10.001F.0008] # -006E 0304 ; [.1E1F.001C.0002] # -004E 0304 ; [.1E1F.001C.0008] # -0144 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0301 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0341 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -0143 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0301 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0341 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -0148 ; [.1E1F.001E.0002] # LATIN SMALL LETTER N WITH CARON -006E 030C ; [.1E1F.001E.0002] # LATIN SMALL LETTER N WITH CARON -0147 ; [.1E1F.001E.0008] # LATIN CAPITAL LETTER N WITH CARON -004E 030C ; [.1E1F.001E.0008] # LATIN CAPITAL LETTER N WITH CARON -01F9 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -006E 0300 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -006E 0340 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -01F8 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -004E 0300 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -004E 0340 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -014D ; [.1E43.001C.0002] # LATIN SMALL LETTER O WITH MACRON -006F 0304 ; [.1E43.001C.0002] # LATIN SMALL LETTER O WITH MACRON -014C ; [.1E43.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON -004F 0304 ; [.1E43.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON -00F3 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0301 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0341 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -00D3 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0301 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0341 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -01D2 ; [.1E43.001E.0002] # LATIN SMALL LETTER O WITH CARON -006F 030C ; [.1E43.001E.0002] # LATIN SMALL LETTER O WITH CARON -01D1 ; [.1E43.001E.0008] # LATIN CAPITAL LETTER O WITH CARON -004F 030C ; [.1E43.001E.0008] # LATIN CAPITAL LETTER O WITH CARON -00F2 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -006F 0300 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -006F 0340 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -00D2 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -004F 0300 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -004F 0340 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -016B ; [.1F1B.001C.0002] # LATIN SMALL LETTER U WITH MACRON -0075 0304 ; [.1F1B.001C.0002] # LATIN SMALL LETTER U WITH MACRON -016A ; [.1F1B.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON -0055 0304 ; [.1F1B.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON -00FA ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -0075 0301 ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -0075 0341 ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -00DA ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -0055 0301 ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -0055 0341 ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -01D4 ; [.1F1B.001E.0002] # LATIN SMALL LETTER U WITH CARON -0075 030C ; [.1F1B.001E.0002] # LATIN SMALL LETTER U WITH CARON -01D3 ; [.1F1B.001E.0008] # LATIN CAPITAL LETTER U WITH CARON -0055 030C ; [.1F1B.001E.0008] # LATIN CAPITAL LETTER U WITH CARON -00F9 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -0075 0300 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -0075 0340 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -00D9 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -0055 0300 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -0055 0340 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -01D6 ; [.1F1B.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -0075 0308 0304 ; [.1F1B.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F1B.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -0055 0308 0304 ; [.1F1B.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -00FC 0304 ; [.1F1B.0021.0002] # -00DC 0304 ; [.1F1B.0021.0008] # -01D8 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -0075 0308 0301 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -0075 0308 0341 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -0055 0308 0301 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -0055 0308 0341 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -00FC 0301 ; [.1F1B.0022.0002] # -00FC 0341 ; [.1F1B.0022.0002] # -00DC 0301 ; [.1F1B.0022.0008] # -00DC 0341 ; [.1F1B.0022.0008] # -01DA ; [.1F1B.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -0075 0308 030C ; [.1F1B.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F1B.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0055 0308 030C ; [.1F1B.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -00FC 030C ; [.1F1B.0023.0002] # -00DC 030C ; [.1F1B.0023.0008] # -01DC ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -0075 0308 0300 ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -0075 0308 0340 ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -0055 0308 0300 ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -0055 0308 0340 ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -00FC 0300 ; [.1F1B.0024.0002] # -00FC 0340 ; [.1F1B.0024.0002] # -00DC 0300 ; [.1F1B.0024.0008] # -00DC 0340 ; [.1F1B.0024.0008] # -00FC ; [.1F1B.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F1B.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F1B.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F1B.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS + entry => <<'ENTRY', # for DUCET v13.0.0 +0101 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON +0061 0304 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON +0100 ; [.1FA2.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON +0041 0304 ; [.1FA2.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON +00E1 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0301 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0341 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +00C1 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0301 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0341 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +01CE ; [.1FA2.001E.0002] # LATIN SMALL LETTER A WITH CARON +0061 030C ; [.1FA2.001E.0002] # LATIN SMALL LETTER A WITH CARON +01CD ; [.1FA2.001E.0008] # LATIN CAPITAL LETTER A WITH CARON +0041 030C ; [.1FA2.001E.0008] # LATIN CAPITAL LETTER A WITH CARON +00E0 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +0061 0300 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +0061 0340 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +00C0 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0041 0300 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0041 0340 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0113 ; [.2007.001C.0002] # LATIN SMALL LETTER E WITH MACRON +0065 0304 ; [.2007.001C.0002] # LATIN SMALL LETTER E WITH MACRON +0112 ; [.2007.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON +0045 0304 ; [.2007.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON +00E9 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0301 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0341 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +00C9 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0301 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0341 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +011B ; [.2007.001E.0002] # LATIN SMALL LETTER E WITH CARON +0065 030C ; [.2007.001E.0002] # LATIN SMALL LETTER E WITH CARON +011A ; [.2007.001E.0008] # LATIN CAPITAL LETTER E WITH CARON +0045 030C ; [.2007.001E.0008] # LATIN CAPITAL LETTER E WITH CARON +00E8 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +0065 0300 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +0065 0340 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +00C8 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +0045 0300 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +0045 0340 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +00EA 0304 ; [.2007.0021.0002] # +00CA 0304 ; [.2007.0021.0008] # +0065 0302 0304 ; [.2007.0021.0002] # +0045 0302 0304 ; [.2007.0021.0008] # +1EBF ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +0065 0302 0301 ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +0065 0302 0341 ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +1EBE ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +0045 0302 0301 ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +0045 0302 0341 ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +00EA 0301 ; [.2007.0022.0002] # +00EA 0341 ; [.2007.0022.0002] # +00CA 0301 ; [.2007.0022.0008] # +00CA 0341 ; [.2007.0022.0008] # +00EA 030C ; [.2007.0023.0002] # +00CA 030C ; [.2007.0023.0008] # +0065 0302 030C ; [.2007.0023.0002] # +0045 0302 030C ; [.2007.0023.0008] # +1EC1 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +0065 0302 0300 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +0065 0302 0340 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +1EC0 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +0045 0302 0300 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +0045 0302 0340 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +00EA 0300 ; [.2007.0024.0002] # +00EA 0340 ; [.2007.0024.0002] # +00CA 0300 ; [.2007.0024.0008] # +00CA 0340 ; [.2007.0024.0008] # +00EA ; [.2007.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +0065 0302 ; [.2007.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +00CA ; [.2007.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +0045 0302 ; [.2007.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +1EC5 ; [.2007.0025.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +1EC4 ; [.2007.0025.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +1EC3 ; [.2007.0025.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC2 ; [.2007.0025.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC7 ; [.2007.0025.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +1EC6 ; [.2007.0025.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +012B ; [.2090.001C.0002] # LATIN SMALL LETTER I WITH MACRON +0069 0304 ; [.2090.001C.0002] # LATIN SMALL LETTER I WITH MACRON +012A ; [.2090.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON +0049 0304 ; [.2090.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON +00ED ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +0069 0301 ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +0069 0341 ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +00CD ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +0049 0301 ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +0049 0341 ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +01D0 ; [.2090.001E.0002] # LATIN SMALL LETTER I WITH CARON +0069 030C ; [.2090.001E.0002] # LATIN SMALL LETTER I WITH CARON +01CF ; [.2090.001E.0008] # LATIN CAPITAL LETTER I WITH CARON +0049 030C ; [.2090.001E.0008] # LATIN CAPITAL LETTER I WITH CARON +00EC ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +0069 0300 ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +0069 0340 ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +00CC ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +0049 0300 ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +0049 0340 ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +006D 0304 ; [.2109.001C.0002] # +004D 0304 ; [.2109.001C.0008] # +1E3F ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +006D 0301 ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +006D 0341 ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +1E3E ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +004D 0301 ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +004D 0341 ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +006D 030C ; [.2109.001E.0002] # +004D 030C ; [.2109.001E.0008] # +006D 0300 ; [.2109.001F.0002] # +006D 0340 ; [.2109.001F.0002] # +004D 0300 ; [.2109.001F.0008] # +004D 0340 ; [.2109.001F.0008] # +006E 0304 ; [.2118.001C.0002] # +004E 0304 ; [.2118.001C.0008] # +0144 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0301 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0341 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +0143 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0301 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0341 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +0148 ; [.2118.001E.0002] # LATIN SMALL LETTER N WITH CARON +006E 030C ; [.2118.001E.0002] # LATIN SMALL LETTER N WITH CARON +0147 ; [.2118.001E.0008] # LATIN CAPITAL LETTER N WITH CARON +004E 030C ; [.2118.001E.0008] # LATIN CAPITAL LETTER N WITH CARON +01F9 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +006E 0300 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +006E 0340 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +01F8 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +004E 0300 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +004E 0340 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +014D ; [.213C.001C.0002] # LATIN SMALL LETTER O WITH MACRON +006F 0304 ; [.213C.001C.0002] # LATIN SMALL LETTER O WITH MACRON +014C ; [.213C.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON +004F 0304 ; [.213C.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON +00F3 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0301 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0341 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +00D3 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0301 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0341 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +01D2 ; [.213C.001E.0002] # LATIN SMALL LETTER O WITH CARON +006F 030C ; [.213C.001E.0002] # LATIN SMALL LETTER O WITH CARON +01D1 ; [.213C.001E.0008] # LATIN CAPITAL LETTER O WITH CARON +004F 030C ; [.213C.001E.0008] # LATIN CAPITAL LETTER O WITH CARON +00F2 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +006F 0300 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +006F 0340 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +00D2 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +004F 0300 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +004F 0340 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +016B ; [.2217.001C.0002] # LATIN SMALL LETTER U WITH MACRON +0075 0304 ; [.2217.001C.0002] # LATIN SMALL LETTER U WITH MACRON +016A ; [.2217.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON +0055 0304 ; [.2217.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON +00FA ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +0075 0301 ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +0075 0341 ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +00DA ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +0055 0301 ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +0055 0341 ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +01D4 ; [.2217.001E.0002] # LATIN SMALL LETTER U WITH CARON +0075 030C ; [.2217.001E.0002] # LATIN SMALL LETTER U WITH CARON +01D3 ; [.2217.001E.0008] # LATIN CAPITAL LETTER U WITH CARON +0055 030C ; [.2217.001E.0008] # LATIN CAPITAL LETTER U WITH CARON +00F9 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +0075 0300 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +0075 0340 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +00D9 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +0055 0300 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +0055 0340 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +01D6 ; [.2217.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +0075 0308 0304 ; [.2217.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2217.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +0055 0308 0304 ; [.2217.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +00FC 0304 ; [.2217.0021.0002] # +00DC 0304 ; [.2217.0021.0008] # +01D8 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +0075 0308 0301 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +0075 0308 0341 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +0055 0308 0301 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +0055 0308 0341 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +00FC 0301 ; [.2217.0022.0002] # +00FC 0341 ; [.2217.0022.0002] # +00DC 0301 ; [.2217.0022.0008] # +00DC 0341 ; [.2217.0022.0008] # +01DA ; [.2217.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +0075 0308 030C ; [.2217.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2217.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0055 0308 030C ; [.2217.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +00FC 030C ; [.2217.0023.0002] # +00DC 030C ; [.2217.0023.0008] # +01DC ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +0075 0308 0300 ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +0075 0308 0340 ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +0055 0308 0300 ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +0055 0308 0340 ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +00FC 0300 ; [.2217.0024.0002] # +00FC 0340 ; [.2217.0024.0002] # +00DC 0300 ; [.2217.0024.0008] # +00DC 0340 ; [.2217.0024.0008] # +00FC ; [.2217.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2217.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2217.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2217.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS FDD0 2801 ; [.8000.0020.0002] # 2E84 ; [.8007.0020.0002] # CJK RADICAL SECOND THREE 3006 ; [.8012.0020.0002] # IDEOGRAPHIC CLOSING MARK @@ -299,119 +299,119 @@ FDD0 2824 ; [.DC7E.0020.0002] # FDD0 2827 ; [.DC80.0020.0002] # FDD0 2830 ; [.DC82.0020.0002] # -3220 ; [*0318.0020.0004][.8001.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH ONE -3226 ; [*0318.0020.0004][.801A.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SEVEN -3222 ; [*0318.0020.0004][.8054.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH THREE -3228 ; [*0318.0020.0004][.8027.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH NINE -3221 ; [*0318.0020.0004][.802A.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH TWO -3224 ; [*0318.0020.0004][.80D7.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FIVE -3239 ; [*0318.0020.0004][.81C2.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH REPRESENT -323D ; [*0318.0020.0004][.831C.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH ENTERPRISE -3241 ; [*0318.0020.0004][.832C.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH REST -3227 ; [*0318.0020.0004][.8030.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH EIGHT -3225 ; [*0318.0020.0004][.80F5.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SIX -3238 ; [*0318.0020.0004][.85A8.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH LABOR -3229 ; [*0318.0020.0004][.8041.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH TEN -323F ; [*0318.0020.0004][.899D.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH ALLIANCE -3234 ; [*0318.0020.0004][.839D.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH NAME -323A ; [*0318.0020.0004][.89D5.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH CALL -3223 ; [*0318.0020.0004][.822D.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FOUR -322F ; [*0318.0020.0004][.8081.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH EARTH -323B ; [*0318.0020.0004][.8A8D.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH STUDY -3230 ; [*0318.0020.0004][.815C.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SUN -322A ; [*0318.0020.0004][.815F.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH MOON -3232 ; [*0318.0020.0004][.845A.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH HAVE -322D ; [*0318.0020.0004][.8160.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH WOOD -3231 ; [*0318.0020.0004][.979F.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH STOCK -322C ; [*0318.0020.0004][.816D.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH WATER -322B ; [*0318.0020.0004][.816E.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FIRE -3235 ; [*0318.0020.0004][.9895.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SPECIAL -323C ; [*0318.0020.0004][.B79A.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SUPERVISE -3233 ; [*0318.0020.0004][.8D2E.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SOCIETY -3237 ; [*0318.0020.0004][.9970.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH CONGRATULATION -3240 ; [*0318.0020.0004][.A100.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FESTIVAL -3242 ; [*0318.0020.0004][.84D8.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SELF -3243 ; [*0318.0020.0004][.84D9.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH REACH -3236 ; [*0318.0020.0004][.9B3B.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FINANCIAL -323E ; [*0318.0020.0004][.B2A5.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH RESOURCE -322E ; [*0318.0020.0004][.8E33.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH METAL -3358 ; [.1CA3.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO -33E9 ; [.1CA4.0020.0004][.1CA3.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN -32C9 ; [.1CA4.0020.0004][.1CA3.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER -3362 ; [.1CA4.0020.0004][.1CA3.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN -33EA ; [.1CA4.0020.0004][.1CA4.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN -32CA ; [.1CA4.0020.0004][.1CA4.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER -3363 ; [.1CA4.0020.0004][.1CA4.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN -33EB ; [.1CA4.0020.0004][.1CA5.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE -32CB ; [.1CA4.0020.0004][.1CA5.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER -3364 ; [.1CA4.0020.0004][.1CA5.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE -33EC ; [.1CA4.0020.0004][.1CA6.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN -3365 ; [.1CA4.0020.0004][.1CA6.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN -33ED ; [.1CA4.0020.0004][.1CA7.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN -3366 ; [.1CA4.0020.0004][.1CA7.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN -33EE ; [.1CA4.0020.0004][.1CA8.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN -3367 ; [.1CA4.0020.0004][.1CA8.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN -33EF ; [.1CA4.0020.0004][.1CA9.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN -3368 ; [.1CA4.0020.0004][.1CA9.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN -33F0 ; [.1CA4.0020.0004][.1CAA.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN -3369 ; [.1CA4.0020.0004][.1CAA.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN -33F1 ; [.1CA4.0020.0004][.1CAB.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN -336A ; [.1CA4.0020.0004][.1CAB.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN -33F2 ; [.1CA4.0020.0004][.1CAC.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN -336B ; [.1CA4.0020.0004][.1CAC.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN -33E0 ; [.1CA4.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE -32C0 ; [.1CA4.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY -3359 ; [.1CA4.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE -33F3 ; [.1CA5.0020.0004][.1CA3.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY -336C ; [.1CA5.0020.0004][.1CA3.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY -33F4 ; [.1CA5.0020.0004][.1CA4.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE -336D ; [.1CA5.0020.0004][.1CA4.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE -33F5 ; [.1CA5.0020.0004][.1CA5.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO -336E ; [.1CA5.0020.0004][.1CA5.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO -33F6 ; [.1CA5.0020.0004][.1CA6.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE -336F ; [.1CA5.0020.0004][.1CA6.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE -33F7 ; [.1CA5.0020.0004][.1CA7.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR -3370 ; [.1CA5.0020.0004][.1CA7.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR -33F8 ; [.1CA5.0020.0004][.1CA8.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE -33F9 ; [.1CA5.0020.0004][.1CA9.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX -33FA ; [.1CA5.0020.0004][.1CAA.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN -33FB ; [.1CA5.0020.0004][.1CAB.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT -33FC ; [.1CA5.0020.0004][.1CAC.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE -33E1 ; [.1CA5.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO -32C1 ; [.1CA5.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY -335A ; [.1CA5.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO -33FD ; [.1CA6.0020.0004][.1CA3.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY -33FE ; [.1CA6.0020.0004][.1CA4.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE -33E2 ; [.1CA6.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE -32C2 ; [.1CA6.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH -335B ; [.1CA6.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE -33E3 ; [.1CA7.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR -32C3 ; [.1CA7.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL -335C ; [.1CA7.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR -33E4 ; [.1CA8.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE -32C4 ; [.1CA8.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY -335D ; [.1CA8.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE -33E5 ; [.1CA9.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX -32C5 ; [.1CA9.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE -335E ; [.1CA9.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX -33E6 ; [.1CAA.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN -32C6 ; [.1CAA.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY -335F ; [.1CAA.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN -33E7 ; [.1CAB.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT -32C7 ; [.1CAB.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST -3360 ; [.1CAB.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT -33E8 ; [.1CAC.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE -32C8 ; [.1CAC.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER -3361 ; [.1CAC.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE -1F241 ; [*037A.0020.0004][.8054.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 -1F242 ; [*037A.0020.0004][.802A.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C -1F247 ; [*037A.0020.0004][.A465.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD -1F243 ; [*037A.0020.0004][.83F0.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 -1F245 ; [*037A.0020.0004][.8277.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 -1F248 ; [*037A.0020.0004][.9EDA.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 -1F240 ; [*037A.0020.0004][.8283.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C -1F244 ; [*037A.0020.0004][.9216.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 -1F246 ; [*037A.0020.0004][.A0BD.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 +3220 ; [*0328.0020.0004][.8001.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH ONE +3226 ; [*0328.0020.0004][.801A.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SEVEN +3222 ; [*0328.0020.0004][.8054.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH THREE +3228 ; [*0328.0020.0004][.8027.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH NINE +3221 ; [*0328.0020.0004][.802A.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH TWO +3224 ; [*0328.0020.0004][.80D7.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FIVE +3239 ; [*0328.0020.0004][.81C2.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH REPRESENT +323D ; [*0328.0020.0004][.831C.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH ENTERPRISE +3241 ; [*0328.0020.0004][.832C.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH REST +3227 ; [*0328.0020.0004][.8030.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH EIGHT +3225 ; [*0328.0020.0004][.80F5.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SIX +3238 ; [*0328.0020.0004][.85A8.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH LABOR +3229 ; [*0328.0020.0004][.8041.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH TEN +323F ; [*0328.0020.0004][.899D.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH ALLIANCE +3234 ; [*0328.0020.0004][.839D.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH NAME +323A ; [*0328.0020.0004][.89D5.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH CALL +3223 ; [*0328.0020.0004][.822D.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FOUR +322F ; [*0328.0020.0004][.8081.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH EARTH +323B ; [*0328.0020.0004][.8A8D.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH STUDY +3230 ; [*0328.0020.0004][.815C.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SUN +322A ; [*0328.0020.0004][.815F.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH MOON +3232 ; [*0328.0020.0004][.845A.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH HAVE +322D ; [*0328.0020.0004][.8160.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH WOOD +3231 ; [*0328.0020.0004][.979F.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH STOCK +322C ; [*0328.0020.0004][.816D.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH WATER +322B ; [*0328.0020.0004][.816E.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FIRE +3235 ; [*0328.0020.0004][.9895.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SPECIAL +323C ; [*0328.0020.0004][.B79A.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SUPERVISE +3233 ; [*0328.0020.0004][.8D2E.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SOCIETY +3237 ; [*0328.0020.0004][.9970.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH CONGRATULATION +3240 ; [*0328.0020.0004][.A100.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FESTIVAL +3242 ; [*0328.0020.0004][.84D8.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SELF +3243 ; [*0328.0020.0004][.84D9.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH REACH +3236 ; [*0328.0020.0004][.9B3B.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FINANCIAL +323E ; [*0328.0020.0004][.B2A5.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH RESOURCE +322E ; [*0328.0020.0004][.8E33.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH METAL +3358 ; [.1F98.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO +33E9 ; [.1F99.0020.0004][.1F98.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN +32C9 ; [.1F99.0020.0004][.1F98.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER +3362 ; [.1F99.0020.0004][.1F98.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN +33EA ; [.1F99.0020.0004][.1F99.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN +32CA ; [.1F99.0020.0004][.1F99.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER +3363 ; [.1F99.0020.0004][.1F99.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN +33EB ; [.1F99.0020.0004][.1F9A.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE +32CB ; [.1F99.0020.0004][.1F9A.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER +3364 ; [.1F99.0020.0004][.1F9A.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE +33EC ; [.1F99.0020.0004][.1F9B.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN +3365 ; [.1F99.0020.0004][.1F9B.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN +33ED ; [.1F99.0020.0004][.1F9C.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN +3366 ; [.1F99.0020.0004][.1F9C.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN +33EE ; [.1F99.0020.0004][.1F9D.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN +3367 ; [.1F99.0020.0004][.1F9D.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN +33EF ; [.1F99.0020.0004][.1F9E.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN +3368 ; [.1F99.0020.0004][.1F9E.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN +33F0 ; [.1F99.0020.0004][.1F9F.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN +3369 ; [.1F99.0020.0004][.1F9F.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN +33F1 ; [.1F99.0020.0004][.1FA0.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN +336A ; [.1F99.0020.0004][.1FA0.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN +33F2 ; [.1F99.0020.0004][.1FA1.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN +336B ; [.1F99.0020.0004][.1FA1.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN +33E0 ; [.1F99.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE +32C0 ; [.1F99.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY +3359 ; [.1F99.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE +33F3 ; [.1F9A.0020.0004][.1F98.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY +336C ; [.1F9A.0020.0004][.1F98.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY +33F4 ; [.1F9A.0020.0004][.1F99.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE +336D ; [.1F9A.0020.0004][.1F99.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE +33F5 ; [.1F9A.0020.0004][.1F9A.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO +336E ; [.1F9A.0020.0004][.1F9A.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO +33F6 ; [.1F9A.0020.0004][.1F9B.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE +336F ; [.1F9A.0020.0004][.1F9B.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE +33F7 ; [.1F9A.0020.0004][.1F9C.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR +3370 ; [.1F9A.0020.0004][.1F9C.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR +33F8 ; [.1F9A.0020.0004][.1F9D.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE +33F9 ; [.1F9A.0020.0004][.1F9E.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX +33FA ; [.1F9A.0020.0004][.1F9F.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN +33FB ; [.1F9A.0020.0004][.1FA0.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT +33FC ; [.1F9A.0020.0004][.1FA1.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE +33E1 ; [.1F9A.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO +32C1 ; [.1F9A.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY +335A ; [.1F9A.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO +33FD ; [.1F9B.0020.0004][.1F98.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY +33FE ; [.1F9B.0020.0004][.1F99.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE +33E2 ; [.1F9B.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE +32C2 ; [.1F9B.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH +335B ; [.1F9B.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE +33E3 ; [.1F9C.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR +32C3 ; [.1F9C.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL +335C ; [.1F9C.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR +33E4 ; [.1F9D.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE +32C4 ; [.1F9D.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY +335D ; [.1F9D.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE +33E5 ; [.1F9E.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX +32C5 ; [.1F9E.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE +335E ; [.1F9E.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX +33E6 ; [.1F9F.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN +32C6 ; [.1F9F.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY +335F ; [.1F9F.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN +33E7 ; [.1FA0.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT +32C7 ; [.1FA0.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST +3360 ; [.1FA0.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT +33E8 ; [.1FA1.0020.0004][.815C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE +32C8 ; [.1FA1.0020.0004][.815F.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER +3361 ; [.1FA1.0020.0004][.9216.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE +1F241 ; [*038A.0020.0004][.8054.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 +1F242 ; [*038A.0020.0004][.802A.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C +1F247 ; [*038A.0020.0004][.A465.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD +1F243 ; [*038A.0020.0004][.83F0.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 +1F245 ; [*038A.0020.0004][.8277.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 +1F248 ; [*038A.0020.0004][.9EDA.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 +1F240 ; [*038A.0020.0004][.8283.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C +1F244 ; [*038A.0020.0004][.9216.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 +1F246 ; [*038A.0020.0004][.A0BD.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 2F00 ; [.8001.0020.0004] # KANGXI RADICAL ONE 3192 ; [.8001.0020.0014] # IDEOGRAPHIC ANNOTATION ONE MARK 3280 ; [.8001.0020.0006] # CIRCLED IDEOGRAPH ONE diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/zh_zhu.pl perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/zh_zhu.pl --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale/zh_zhu.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale/zh_zhu.pl 2020-10-24 18:43:34.000000000 +0000 @@ -1,8 +1,8 @@ use Unicode::Collate::CJK::Zhuyin; +{ - locale_version => 1.27, + locale_version => 1.29, overrideCJK => \&Unicode::Collate::CJK::Zhuyin::weightZhuyin, - entry => <<'ENTRY', # for DUCET v10.0.0 + entry => <<'ENTRY', # for DUCET v13.0.0 02C9 ; [.0000.0199.0002] # MODIFIER LETTER MACRON 02CA ; [.019A.0020.0002] # MODIFIER LETTER ACUTE ACCENT 02C7 ; [.019B.0020.0002] # CARON @@ -10,212 +10,212 @@ 02D9 ; [.019D.0020.0002] # DOT ABOVE 02EA ; [.019E.0020.0002] # MODIFIER LETTER YIN DEPARTING TONE MARK 02EB ; [.019F.0020.0002] # MODIFIER LETTER YANG DEPARTING TONE MARK -0101 ; [.1CAD.001C.0002] # LATIN SMALL LETTER A WITH MACRON -0061 0304 ; [.1CAD.001C.0002] # LATIN SMALL LETTER A WITH MACRON -0100 ; [.1CAD.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON -0041 0304 ; [.1CAD.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON -00E1 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0301 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -0061 0341 ; [.1CAD.001D.0002] # LATIN SMALL LETTER A WITH ACUTE -00C1 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0301 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -0041 0341 ; [.1CAD.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE -01CE ; [.1CAD.001E.0002] # LATIN SMALL LETTER A WITH CARON -0061 030C ; [.1CAD.001E.0002] # LATIN SMALL LETTER A WITH CARON -01CD ; [.1CAD.001E.0008] # LATIN CAPITAL LETTER A WITH CARON -0041 030C ; [.1CAD.001E.0008] # LATIN CAPITAL LETTER A WITH CARON -00E0 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -0061 0300 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -0061 0340 ; [.1CAD.001F.0002] # LATIN SMALL LETTER A WITH GRAVE -00C0 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0041 0300 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0041 0340 ; [.1CAD.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE -0113 ; [.1D10.001C.0002] # LATIN SMALL LETTER E WITH MACRON -0065 0304 ; [.1D10.001C.0002] # LATIN SMALL LETTER E WITH MACRON -0112 ; [.1D10.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON -0045 0304 ; [.1D10.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON -00E9 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0301 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -0065 0341 ; [.1D10.001D.0002] # LATIN SMALL LETTER E WITH ACUTE -00C9 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0301 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -0045 0341 ; [.1D10.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE -011B ; [.1D10.001E.0002] # LATIN SMALL LETTER E WITH CARON -0065 030C ; [.1D10.001E.0002] # LATIN SMALL LETTER E WITH CARON -011A ; [.1D10.001E.0008] # LATIN CAPITAL LETTER E WITH CARON -0045 030C ; [.1D10.001E.0008] # LATIN CAPITAL LETTER E WITH CARON -00E8 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -0065 0300 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -0065 0340 ; [.1D10.001F.0002] # LATIN SMALL LETTER E WITH GRAVE -00C8 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -0045 0300 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -0045 0340 ; [.1D10.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE -00EA 0304 ; [.1D10.0021.0002] # -00CA 0304 ; [.1D10.0021.0008] # -0065 0302 0304 ; [.1D10.0021.0002] # -0045 0302 0304 ; [.1D10.0021.0008] # -1EBF ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -0065 0302 0301 ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -0065 0302 0341 ; [.1D10.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -1EBE ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -0045 0302 0301 ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -0045 0302 0341 ; [.1D10.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -00EA 0301 ; [.1D10.0022.0002] # -00EA 0341 ; [.1D10.0022.0002] # -00CA 0301 ; [.1D10.0022.0008] # -00CA 0341 ; [.1D10.0022.0008] # -00EA 030C ; [.1D10.0023.0002] # -00CA 030C ; [.1D10.0023.0008] # -0065 0302 030C ; [.1D10.0023.0002] # -0045 0302 030C ; [.1D10.0023.0008] # -1EC1 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -0065 0302 0300 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -0065 0302 0340 ; [.1D10.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC0 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -0045 0302 0300 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -0045 0302 0340 ; [.1D10.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -00EA 0300 ; [.1D10.0024.0002] # -00EA 0340 ; [.1D10.0024.0002] # -00CA 0300 ; [.1D10.0024.0008] # -00CA 0340 ; [.1D10.0024.0008] # -00EA ; [.1D10.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -0065 0302 ; [.1D10.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX -00CA ; [.1D10.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -0045 0302 ; [.1D10.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -1EC5 ; [.1D10.0025.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE -1EC4 ; [.1D10.0025.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE -1EC3 ; [.1D10.0025.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC2 ; [.1D10.0025.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC7 ; [.1D10.0025.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC6 ; [.1D10.0025.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW -012B ; [.1D98.001C.0002] # LATIN SMALL LETTER I WITH MACRON -0069 0304 ; [.1D98.001C.0002] # LATIN SMALL LETTER I WITH MACRON -012A ; [.1D98.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON -0049 0304 ; [.1D98.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON -00ED ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -0069 0301 ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -0069 0341 ; [.1D98.001D.0002] # LATIN SMALL LETTER I WITH ACUTE -00CD ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -0049 0301 ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -0049 0341 ; [.1D98.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE -01D0 ; [.1D98.001E.0002] # LATIN SMALL LETTER I WITH CARON -0069 030C ; [.1D98.001E.0002] # LATIN SMALL LETTER I WITH CARON -01CF ; [.1D98.001E.0008] # LATIN CAPITAL LETTER I WITH CARON -0049 030C ; [.1D98.001E.0008] # LATIN CAPITAL LETTER I WITH CARON -00EC ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -0069 0300 ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -0069 0340 ; [.1D98.001F.0002] # LATIN SMALL LETTER I WITH GRAVE -00CC ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -0049 0300 ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -0049 0340 ; [.1D98.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE -006D 0304 ; [.1E10.001C.0002] # -004D 0304 ; [.1E10.001C.0008] # -1E3F ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -006D 0301 ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -006D 0341 ; [.1E10.001D.0002] # LATIN SMALL LETTER M WITH ACUTE -1E3E ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -004D 0301 ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -004D 0341 ; [.1E10.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE -006D 030C ; [.1E10.001E.0002] # -004D 030C ; [.1E10.001E.0008] # -006D 0300 ; [.1E10.001F.0002] # -006D 0340 ; [.1E10.001F.0002] # -004D 0300 ; [.1E10.001F.0008] # -004D 0340 ; [.1E10.001F.0008] # -006E 0304 ; [.1E1F.001C.0002] # -004E 0304 ; [.1E1F.001C.0008] # -0144 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0301 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0341 ; [.1E1F.001D.0002] # LATIN SMALL LETTER N WITH ACUTE -0143 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0301 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0341 ; [.1E1F.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE -0148 ; [.1E1F.001E.0002] # LATIN SMALL LETTER N WITH CARON -006E 030C ; [.1E1F.001E.0002] # LATIN SMALL LETTER N WITH CARON -0147 ; [.1E1F.001E.0008] # LATIN CAPITAL LETTER N WITH CARON -004E 030C ; [.1E1F.001E.0008] # LATIN CAPITAL LETTER N WITH CARON -01F9 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -006E 0300 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -006E 0340 ; [.1E1F.001F.0002] # LATIN SMALL LETTER N WITH GRAVE -01F8 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -004E 0300 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -004E 0340 ; [.1E1F.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE -014D ; [.1E43.001C.0002] # LATIN SMALL LETTER O WITH MACRON -006F 0304 ; [.1E43.001C.0002] # LATIN SMALL LETTER O WITH MACRON -014C ; [.1E43.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON -004F 0304 ; [.1E43.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON -00F3 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0301 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -006F 0341 ; [.1E43.001D.0002] # LATIN SMALL LETTER O WITH ACUTE -00D3 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0301 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -004F 0341 ; [.1E43.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE -01D2 ; [.1E43.001E.0002] # LATIN SMALL LETTER O WITH CARON -006F 030C ; [.1E43.001E.0002] # LATIN SMALL LETTER O WITH CARON -01D1 ; [.1E43.001E.0008] # LATIN CAPITAL LETTER O WITH CARON -004F 030C ; [.1E43.001E.0008] # LATIN CAPITAL LETTER O WITH CARON -00F2 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -006F 0300 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -006F 0340 ; [.1E43.001F.0002] # LATIN SMALL LETTER O WITH GRAVE -00D2 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -004F 0300 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -004F 0340 ; [.1E43.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE -016B ; [.1F1B.001C.0002] # LATIN SMALL LETTER U WITH MACRON -0075 0304 ; [.1F1B.001C.0002] # LATIN SMALL LETTER U WITH MACRON -016A ; [.1F1B.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON -0055 0304 ; [.1F1B.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON -00FA ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -0075 0301 ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -0075 0341 ; [.1F1B.001D.0002] # LATIN SMALL LETTER U WITH ACUTE -00DA ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -0055 0301 ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -0055 0341 ; [.1F1B.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE -01D4 ; [.1F1B.001E.0002] # LATIN SMALL LETTER U WITH CARON -0075 030C ; [.1F1B.001E.0002] # LATIN SMALL LETTER U WITH CARON -01D3 ; [.1F1B.001E.0008] # LATIN CAPITAL LETTER U WITH CARON -0055 030C ; [.1F1B.001E.0008] # LATIN CAPITAL LETTER U WITH CARON -00F9 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -0075 0300 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -0075 0340 ; [.1F1B.001F.0002] # LATIN SMALL LETTER U WITH GRAVE -00D9 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -0055 0300 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -0055 0340 ; [.1F1B.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE -01D6 ; [.1F1B.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -0075 0308 0304 ; [.1F1B.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1F1B.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -0055 0308 0304 ; [.1F1B.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -00FC 0304 ; [.1F1B.0021.0002] # -00DC 0304 ; [.1F1B.0021.0008] # -01D8 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -0075 0308 0301 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -0075 0308 0341 ; [.1F1B.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -0055 0308 0301 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -0055 0308 0341 ; [.1F1B.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -00FC 0301 ; [.1F1B.0022.0002] # -00FC 0341 ; [.1F1B.0022.0002] # -00DC 0301 ; [.1F1B.0022.0008] # -00DC 0341 ; [.1F1B.0022.0008] # -01DA ; [.1F1B.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -0075 0308 030C ; [.1F1B.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1F1B.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -0055 0308 030C ; [.1F1B.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -00FC 030C ; [.1F1B.0023.0002] # -00DC 030C ; [.1F1B.0023.0008] # -01DC ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -0075 0308 0300 ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -0075 0308 0340 ; [.1F1B.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -0055 0308 0300 ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -0055 0308 0340 ; [.1F1B.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -00FC 0300 ; [.1F1B.0024.0002] # -00FC 0340 ; [.1F1B.0024.0002] # -00DC 0300 ; [.1F1B.0024.0008] # -00DC 0340 ; [.1F1B.0024.0008] # -00FC ; [.1F1B.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1F1B.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1F1B.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1F1B.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0101 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON +0061 0304 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON +0100 ; [.1FA2.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON +0041 0304 ; [.1FA2.001C.0008] # LATIN CAPITAL LETTER A WITH MACRON +00E1 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0301 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +0061 0341 ; [.1FA2.001D.0002] # LATIN SMALL LETTER A WITH ACUTE +00C1 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0301 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +0041 0341 ; [.1FA2.001D.0008] # LATIN CAPITAL LETTER A WITH ACUTE +01CE ; [.1FA2.001E.0002] # LATIN SMALL LETTER A WITH CARON +0061 030C ; [.1FA2.001E.0002] # LATIN SMALL LETTER A WITH CARON +01CD ; [.1FA2.001E.0008] # LATIN CAPITAL LETTER A WITH CARON +0041 030C ; [.1FA2.001E.0008] # LATIN CAPITAL LETTER A WITH CARON +00E0 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +0061 0300 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +0061 0340 ; [.1FA2.001F.0002] # LATIN SMALL LETTER A WITH GRAVE +00C0 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0041 0300 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0041 0340 ; [.1FA2.001F.0008] # LATIN CAPITAL LETTER A WITH GRAVE +0113 ; [.2007.001C.0002] # LATIN SMALL LETTER E WITH MACRON +0065 0304 ; [.2007.001C.0002] # LATIN SMALL LETTER E WITH MACRON +0112 ; [.2007.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON +0045 0304 ; [.2007.001C.0008] # LATIN CAPITAL LETTER E WITH MACRON +00E9 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0301 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +0065 0341 ; [.2007.001D.0002] # LATIN SMALL LETTER E WITH ACUTE +00C9 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0301 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +0045 0341 ; [.2007.001D.0008] # LATIN CAPITAL LETTER E WITH ACUTE +011B ; [.2007.001E.0002] # LATIN SMALL LETTER E WITH CARON +0065 030C ; [.2007.001E.0002] # LATIN SMALL LETTER E WITH CARON +011A ; [.2007.001E.0008] # LATIN CAPITAL LETTER E WITH CARON +0045 030C ; [.2007.001E.0008] # LATIN CAPITAL LETTER E WITH CARON +00E8 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +0065 0300 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +0065 0340 ; [.2007.001F.0002] # LATIN SMALL LETTER E WITH GRAVE +00C8 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +0045 0300 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +0045 0340 ; [.2007.001F.0008] # LATIN CAPITAL LETTER E WITH GRAVE +00EA 0304 ; [.2007.0021.0002] # +00CA 0304 ; [.2007.0021.0008] # +0065 0302 0304 ; [.2007.0021.0002] # +0045 0302 0304 ; [.2007.0021.0008] # +1EBF ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +0065 0302 0301 ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +0065 0302 0341 ; [.2007.0022.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +1EBE ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +0045 0302 0301 ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +0045 0302 0341 ; [.2007.0022.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +00EA 0301 ; [.2007.0022.0002] # +00EA 0341 ; [.2007.0022.0002] # +00CA 0301 ; [.2007.0022.0008] # +00CA 0341 ; [.2007.0022.0008] # +00EA 030C ; [.2007.0023.0002] # +00CA 030C ; [.2007.0023.0008] # +0065 0302 030C ; [.2007.0023.0002] # +0045 0302 030C ; [.2007.0023.0008] # +1EC1 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +0065 0302 0300 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +0065 0302 0340 ; [.2007.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +1EC0 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +0045 0302 0300 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +0045 0302 0340 ; [.2007.0024.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +00EA 0300 ; [.2007.0024.0002] # +00EA 0340 ; [.2007.0024.0002] # +00CA 0300 ; [.2007.0024.0008] # +00CA 0340 ; [.2007.0024.0008] # +00EA ; [.2007.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +0065 0302 ; [.2007.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX +00CA ; [.2007.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +0045 0302 ; [.2007.0025.0008] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +1EC5 ; [.2007.0025.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +1EC4 ; [.2007.0025.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +1EC3 ; [.2007.0025.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC2 ; [.2007.0025.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC7 ; [.2007.0025.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +1EC6 ; [.2007.0025.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +012B ; [.2090.001C.0002] # LATIN SMALL LETTER I WITH MACRON +0069 0304 ; [.2090.001C.0002] # LATIN SMALL LETTER I WITH MACRON +012A ; [.2090.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON +0049 0304 ; [.2090.001C.0008] # LATIN CAPITAL LETTER I WITH MACRON +00ED ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +0069 0301 ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +0069 0341 ; [.2090.001D.0002] # LATIN SMALL LETTER I WITH ACUTE +00CD ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +0049 0301 ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +0049 0341 ; [.2090.001D.0008] # LATIN CAPITAL LETTER I WITH ACUTE +01D0 ; [.2090.001E.0002] # LATIN SMALL LETTER I WITH CARON +0069 030C ; [.2090.001E.0002] # LATIN SMALL LETTER I WITH CARON +01CF ; [.2090.001E.0008] # LATIN CAPITAL LETTER I WITH CARON +0049 030C ; [.2090.001E.0008] # LATIN CAPITAL LETTER I WITH CARON +00EC ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +0069 0300 ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +0069 0340 ; [.2090.001F.0002] # LATIN SMALL LETTER I WITH GRAVE +00CC ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +0049 0300 ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +0049 0340 ; [.2090.001F.0008] # LATIN CAPITAL LETTER I WITH GRAVE +006D 0304 ; [.2109.001C.0002] # +004D 0304 ; [.2109.001C.0008] # +1E3F ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +006D 0301 ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +006D 0341 ; [.2109.001D.0002] # LATIN SMALL LETTER M WITH ACUTE +1E3E ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +004D 0301 ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +004D 0341 ; [.2109.001D.0008] # LATIN CAPITAL LETTER M WITH ACUTE +006D 030C ; [.2109.001E.0002] # +004D 030C ; [.2109.001E.0008] # +006D 0300 ; [.2109.001F.0002] # +006D 0340 ; [.2109.001F.0002] # +004D 0300 ; [.2109.001F.0008] # +004D 0340 ; [.2109.001F.0008] # +006E 0304 ; [.2118.001C.0002] # +004E 0304 ; [.2118.001C.0008] # +0144 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0301 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0341 ; [.2118.001D.0002] # LATIN SMALL LETTER N WITH ACUTE +0143 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0301 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0341 ; [.2118.001D.0008] # LATIN CAPITAL LETTER N WITH ACUTE +0148 ; [.2118.001E.0002] # LATIN SMALL LETTER N WITH CARON +006E 030C ; [.2118.001E.0002] # LATIN SMALL LETTER N WITH CARON +0147 ; [.2118.001E.0008] # LATIN CAPITAL LETTER N WITH CARON +004E 030C ; [.2118.001E.0008] # LATIN CAPITAL LETTER N WITH CARON +01F9 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +006E 0300 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +006E 0340 ; [.2118.001F.0002] # LATIN SMALL LETTER N WITH GRAVE +01F8 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +004E 0300 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +004E 0340 ; [.2118.001F.0008] # LATIN CAPITAL LETTER N WITH GRAVE +014D ; [.213C.001C.0002] # LATIN SMALL LETTER O WITH MACRON +006F 0304 ; [.213C.001C.0002] # LATIN SMALL LETTER O WITH MACRON +014C ; [.213C.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON +004F 0304 ; [.213C.001C.0008] # LATIN CAPITAL LETTER O WITH MACRON +00F3 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0301 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +006F 0341 ; [.213C.001D.0002] # LATIN SMALL LETTER O WITH ACUTE +00D3 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0301 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +004F 0341 ; [.213C.001D.0008] # LATIN CAPITAL LETTER O WITH ACUTE +01D2 ; [.213C.001E.0002] # LATIN SMALL LETTER O WITH CARON +006F 030C ; [.213C.001E.0002] # LATIN SMALL LETTER O WITH CARON +01D1 ; [.213C.001E.0008] # LATIN CAPITAL LETTER O WITH CARON +004F 030C ; [.213C.001E.0008] # LATIN CAPITAL LETTER O WITH CARON +00F2 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +006F 0300 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +006F 0340 ; [.213C.001F.0002] # LATIN SMALL LETTER O WITH GRAVE +00D2 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +004F 0300 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +004F 0340 ; [.213C.001F.0008] # LATIN CAPITAL LETTER O WITH GRAVE +016B ; [.2217.001C.0002] # LATIN SMALL LETTER U WITH MACRON +0075 0304 ; [.2217.001C.0002] # LATIN SMALL LETTER U WITH MACRON +016A ; [.2217.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON +0055 0304 ; [.2217.001C.0008] # LATIN CAPITAL LETTER U WITH MACRON +00FA ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +0075 0301 ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +0075 0341 ; [.2217.001D.0002] # LATIN SMALL LETTER U WITH ACUTE +00DA ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +0055 0301 ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +0055 0341 ; [.2217.001D.0008] # LATIN CAPITAL LETTER U WITH ACUTE +01D4 ; [.2217.001E.0002] # LATIN SMALL LETTER U WITH CARON +0075 030C ; [.2217.001E.0002] # LATIN SMALL LETTER U WITH CARON +01D3 ; [.2217.001E.0008] # LATIN CAPITAL LETTER U WITH CARON +0055 030C ; [.2217.001E.0008] # LATIN CAPITAL LETTER U WITH CARON +00F9 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +0075 0300 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +0075 0340 ; [.2217.001F.0002] # LATIN SMALL LETTER U WITH GRAVE +00D9 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +0055 0300 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +0055 0340 ; [.2217.001F.0008] # LATIN CAPITAL LETTER U WITH GRAVE +01D6 ; [.2217.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +0075 0308 0304 ; [.2217.0021.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.2217.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +0055 0308 0304 ; [.2217.0021.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +00FC 0304 ; [.2217.0021.0002] # +00DC 0304 ; [.2217.0021.0008] # +01D8 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +0075 0308 0301 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +0075 0308 0341 ; [.2217.0022.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +0055 0308 0301 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +0055 0308 0341 ; [.2217.0022.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +00FC 0301 ; [.2217.0022.0002] # +00FC 0341 ; [.2217.0022.0002] # +00DC 0301 ; [.2217.0022.0008] # +00DC 0341 ; [.2217.0022.0008] # +01DA ; [.2217.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +0075 0308 030C ; [.2217.0023.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.2217.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +0055 0308 030C ; [.2217.0023.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +00FC 030C ; [.2217.0023.0002] # +00DC 030C ; [.2217.0023.0008] # +01DC ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +0075 0308 0300 ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +0075 0308 0340 ; [.2217.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +0055 0308 0300 ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +0055 0308 0340 ; [.2217.0024.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +00FC 0300 ; [.2217.0024.0002] # +00FC 0340 ; [.2217.0024.0002] # +00DC 0300 ; [.2217.0024.0008] # +00DC 0340 ; [.2217.0024.0008] # +00FC ; [.2217.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.2217.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.2217.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.2217.0025.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS FDD0 3105 ; [.8000.0020.0002] # 2E8A ; [.80B5.0020.0002] # CJK RADICAL DIVINATION FDD0 3106 ; [.83B1.0020.0002] # @@ -276,119 +276,119 @@ FDD0 3129 ; [.D403.0020.0002] # 2ED7 ; [.D47E.0020.0002] # CJK RADICAL RAIN 2E9D ; [.D53B.0020.0002] # CJK RADICAL MOON -3220 ; [*0318.0020.0004][.CBDC.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH ONE -3226 ; [*0318.0020.0004][.AD39.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SEVEN -3222 ; [*0318.0020.0004][.C8DF.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH THREE -3228 ; [*0318.0020.0004][.A95D.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH NINE -3221 ; [*0318.0020.0004][.CBCD.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH TWO -3224 ; [*0318.0020.0004][.D1A9.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FIVE -3239 ; [*0318.0020.0004][.8C57.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH REPRESENT -323D ; [*0318.0020.0004][.ADC1.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH ENTERPRISE -3241 ; [*0318.0020.0004][.B3A8.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH REST -3227 ; [*0318.0020.0004][.8001.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH EIGHT -3225 ; [*0318.0020.0004][.9953.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SIX -3238 ; [*0318.0020.0004][.969E.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH LABOR -3229 ; [*0318.0020.0004][.BF85.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH TEN -323F ; [*0318.0020.0004][.B2BC.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH ALLIANCE -3234 ; [*0318.0020.0004][.892A.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH NAME -323A ; [*0318.0020.0004][.A3B5.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH CALL -3223 ; [*0318.0020.0004][.C82E.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FOUR -322F ; [*0318.0020.0004][.92EA.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH EARTH -323B ; [*0318.0020.0004][.B5F0.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH STUDY -3230 ; [*0318.0020.0004][.C2A4.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SUN -322A ; [*0318.0020.0004][.D53C.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH MOON -3232 ; [*0318.0020.0004][.CEC7.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH HAVE -322D ; [*0318.0020.0004][.895F.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH WOOD -3231 ; [*0318.0020.0004][.BA36.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH STOCK -322C ; [*0318.0020.0004][.C26E.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH WATER -322B ; [*0318.0020.0004][.A48C.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FIRE -3235 ; [*0318.0020.0004][.9060.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SPECIAL -323C ; [*0318.0020.0004][.A9B3.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SUPERVISE -3233 ; [*0318.0020.0004][.C05E.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SOCIETY -3237 ; [*0318.0020.0004][.BA90.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH CONGRATULATION -3240 ; [*0318.0020.0004][.A78C.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FESTIVAL -3242 ; [*0318.0020.0004][.C457.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH SELF -3243 ; [*0318.0020.0004][.B766.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH REACH -3236 ; [*0318.0020.0004][.C69F.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH FINANCIAL -323E ; [*0318.0020.0004][.C421.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH RESOURCE -322E ; [*0318.0020.0004][.AA72.0020.0004][*0319.0020.0004] # PARENTHESIZED IDEOGRAPH METAL -3358 ; [.1CA3.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO -33E9 ; [.1CA4.0020.0004][.1CA3.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN -32C9 ; [.1CA4.0020.0004][.1CA3.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER -3362 ; [.1CA4.0020.0004][.1CA3.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN -33EA ; [.1CA4.0020.0004][.1CA4.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN -32CA ; [.1CA4.0020.0004][.1CA4.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER -3363 ; [.1CA4.0020.0004][.1CA4.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN -33EB ; [.1CA4.0020.0004][.1CA5.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE -32CB ; [.1CA4.0020.0004][.1CA5.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER -3364 ; [.1CA4.0020.0004][.1CA5.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE -33EC ; [.1CA4.0020.0004][.1CA6.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN -3365 ; [.1CA4.0020.0004][.1CA6.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN -33ED ; [.1CA4.0020.0004][.1CA7.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN -3366 ; [.1CA4.0020.0004][.1CA7.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN -33EE ; [.1CA4.0020.0004][.1CA8.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN -3367 ; [.1CA4.0020.0004][.1CA8.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN -33EF ; [.1CA4.0020.0004][.1CA9.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN -3368 ; [.1CA4.0020.0004][.1CA9.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN -33F0 ; [.1CA4.0020.0004][.1CAA.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN -3369 ; [.1CA4.0020.0004][.1CAA.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN -33F1 ; [.1CA4.0020.0004][.1CAB.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN -336A ; [.1CA4.0020.0004][.1CAB.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN -33F2 ; [.1CA4.0020.0004][.1CAC.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN -336B ; [.1CA4.0020.0004][.1CAC.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN -33E0 ; [.1CA4.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE -32C0 ; [.1CA4.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY -3359 ; [.1CA4.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE -33F3 ; [.1CA5.0020.0004][.1CA3.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY -336C ; [.1CA5.0020.0004][.1CA3.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY -33F4 ; [.1CA5.0020.0004][.1CA4.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE -336D ; [.1CA5.0020.0004][.1CA4.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE -33F5 ; [.1CA5.0020.0004][.1CA5.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO -336E ; [.1CA5.0020.0004][.1CA5.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO -33F6 ; [.1CA5.0020.0004][.1CA6.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE -336F ; [.1CA5.0020.0004][.1CA6.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE -33F7 ; [.1CA5.0020.0004][.1CA7.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR -3370 ; [.1CA5.0020.0004][.1CA7.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR -33F8 ; [.1CA5.0020.0004][.1CA8.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE -33F9 ; [.1CA5.0020.0004][.1CA9.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX -33FA ; [.1CA5.0020.0004][.1CAA.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN -33FB ; [.1CA5.0020.0004][.1CAB.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT -33FC ; [.1CA5.0020.0004][.1CAC.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE -33E1 ; [.1CA5.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO -32C1 ; [.1CA5.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY -335A ; [.1CA5.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO -33FD ; [.1CA6.0020.0004][.1CA3.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY -33FE ; [.1CA6.0020.0004][.1CA4.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE -33E2 ; [.1CA6.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE -32C2 ; [.1CA6.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH -335B ; [.1CA6.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE -33E3 ; [.1CA7.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR -32C3 ; [.1CA7.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL -335C ; [.1CA7.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR -33E4 ; [.1CA8.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE -32C4 ; [.1CA8.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY -335D ; [.1CA8.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE -33E5 ; [.1CA9.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX -32C5 ; [.1CA9.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE -335E ; [.1CA9.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX -33E6 ; [.1CAA.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN -32C6 ; [.1CAA.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY -335F ; [.1CAA.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN -33E7 ; [.1CAB.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT -32C7 ; [.1CAB.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST -3360 ; [.1CAB.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT -33E8 ; [.1CAC.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE -32C8 ; [.1CAC.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER -3361 ; [.1CAC.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE -1F241 ; [*037A.0020.0004][.C8DF.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 -1F242 ; [*037A.0020.0004][.CBCD.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C -1F247 ; [*037A.0020.0004][.C1CC.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD -1F243 ; [*037A.0020.0004][.CB52.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 -1F245 ; [*037A.0020.0004][.8C38.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 -1F248 ; [*037A.0020.0004][.80CD.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 -1F240 ; [*037A.0020.0004][.819A.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C -1F244 ; [*037A.0020.0004][.8E99.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 -1F246 ; [*037A.0020.0004][.8CA9.0020.0004][*037B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 +3220 ; [*0328.0020.0004][.CBDC.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH ONE +3226 ; [*0328.0020.0004][.AD39.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SEVEN +3222 ; [*0328.0020.0004][.C8DF.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH THREE +3228 ; [*0328.0020.0004][.A95D.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH NINE +3221 ; [*0328.0020.0004][.CBCD.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH TWO +3224 ; [*0328.0020.0004][.D1A9.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FIVE +3239 ; [*0328.0020.0004][.8C57.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH REPRESENT +323D ; [*0328.0020.0004][.ADC1.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH ENTERPRISE +3241 ; [*0328.0020.0004][.B3A8.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH REST +3227 ; [*0328.0020.0004][.8001.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH EIGHT +3225 ; [*0328.0020.0004][.9953.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SIX +3238 ; [*0328.0020.0004][.969E.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH LABOR +3229 ; [*0328.0020.0004][.BF85.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH TEN +323F ; [*0328.0020.0004][.B2BC.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH ALLIANCE +3234 ; [*0328.0020.0004][.892A.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH NAME +323A ; [*0328.0020.0004][.A3B5.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH CALL +3223 ; [*0328.0020.0004][.C82E.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FOUR +322F ; [*0328.0020.0004][.92EA.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH EARTH +323B ; [*0328.0020.0004][.B5F0.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH STUDY +3230 ; [*0328.0020.0004][.C2A4.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SUN +322A ; [*0328.0020.0004][.D53C.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH MOON +3232 ; [*0328.0020.0004][.CEC7.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH HAVE +322D ; [*0328.0020.0004][.895F.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH WOOD +3231 ; [*0328.0020.0004][.BA36.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH STOCK +322C ; [*0328.0020.0004][.C26E.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH WATER +322B ; [*0328.0020.0004][.A48C.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FIRE +3235 ; [*0328.0020.0004][.9060.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SPECIAL +323C ; [*0328.0020.0004][.A9B3.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SUPERVISE +3233 ; [*0328.0020.0004][.C05E.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SOCIETY +3237 ; [*0328.0020.0004][.BA90.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH CONGRATULATION +3240 ; [*0328.0020.0004][.A78C.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FESTIVAL +3242 ; [*0328.0020.0004][.C457.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH SELF +3243 ; [*0328.0020.0004][.B766.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH REACH +3236 ; [*0328.0020.0004][.C69F.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH FINANCIAL +323E ; [*0328.0020.0004][.C421.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH RESOURCE +322E ; [*0328.0020.0004][.AA72.0020.0004][*0329.0020.0004] # PARENTHESIZED IDEOGRAPH METAL +3358 ; [.1F98.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO +33E9 ; [.1F99.0020.0004][.1F98.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN +32C9 ; [.1F99.0020.0004][.1F98.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER +3362 ; [.1F99.0020.0004][.1F98.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN +33EA ; [.1F99.0020.0004][.1F99.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN +32CA ; [.1F99.0020.0004][.1F99.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER +3363 ; [.1F99.0020.0004][.1F99.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN +33EB ; [.1F99.0020.0004][.1F9A.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE +32CB ; [.1F99.0020.0004][.1F9A.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER +3364 ; [.1F99.0020.0004][.1F9A.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE +33EC ; [.1F99.0020.0004][.1F9B.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN +3365 ; [.1F99.0020.0004][.1F9B.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN +33ED ; [.1F99.0020.0004][.1F9C.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN +3366 ; [.1F99.0020.0004][.1F9C.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN +33EE ; [.1F99.0020.0004][.1F9D.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN +3367 ; [.1F99.0020.0004][.1F9D.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN +33EF ; [.1F99.0020.0004][.1F9E.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN +3368 ; [.1F99.0020.0004][.1F9E.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN +33F0 ; [.1F99.0020.0004][.1F9F.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN +3369 ; [.1F99.0020.0004][.1F9F.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN +33F1 ; [.1F99.0020.0004][.1FA0.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN +336A ; [.1F99.0020.0004][.1FA0.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN +33F2 ; [.1F99.0020.0004][.1FA1.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN +336B ; [.1F99.0020.0004][.1FA1.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN +33E0 ; [.1F99.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE +32C0 ; [.1F99.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY +3359 ; [.1F99.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE +33F3 ; [.1F9A.0020.0004][.1F98.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY +336C ; [.1F9A.0020.0004][.1F98.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY +33F4 ; [.1F9A.0020.0004][.1F99.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE +336D ; [.1F9A.0020.0004][.1F99.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE +33F5 ; [.1F9A.0020.0004][.1F9A.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO +336E ; [.1F9A.0020.0004][.1F9A.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO +33F6 ; [.1F9A.0020.0004][.1F9B.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE +336F ; [.1F9A.0020.0004][.1F9B.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE +33F7 ; [.1F9A.0020.0004][.1F9C.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR +3370 ; [.1F9A.0020.0004][.1F9C.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR +33F8 ; [.1F9A.0020.0004][.1F9D.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE +33F9 ; [.1F9A.0020.0004][.1F9E.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX +33FA ; [.1F9A.0020.0004][.1F9F.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN +33FB ; [.1F9A.0020.0004][.1FA0.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT +33FC ; [.1F9A.0020.0004][.1FA1.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE +33E1 ; [.1F9A.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO +32C1 ; [.1F9A.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY +335A ; [.1F9A.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO +33FD ; [.1F9B.0020.0004][.1F98.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY +33FE ; [.1F9B.0020.0004][.1F99.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE +33E2 ; [.1F9B.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE +32C2 ; [.1F9B.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH +335B ; [.1F9B.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE +33E3 ; [.1F9C.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR +32C3 ; [.1F9C.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL +335C ; [.1F9C.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR +33E4 ; [.1F9D.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE +32C4 ; [.1F9D.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY +335D ; [.1F9D.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE +33E5 ; [.1F9E.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX +32C5 ; [.1F9E.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE +335E ; [.1F9E.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX +33E6 ; [.1F9F.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN +32C6 ; [.1F9F.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY +335F ; [.1F9F.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN +33E7 ; [.1FA0.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT +32C7 ; [.1FA0.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST +3360 ; [.1FA0.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT +33E8 ; [.1FA1.0020.0004][.C2A4.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE +32C8 ; [.1FA1.0020.0004][.D53C.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER +3361 ; [.1FA1.0020.0004][.8E99.0020.0004] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE +1F241 ; [*038A.0020.0004][.C8DF.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 +1F242 ; [*038A.0020.0004][.CBCD.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C +1F247 ; [*038A.0020.0004][.C1CC.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD +1F243 ; [*038A.0020.0004][.CB52.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 +1F245 ; [*038A.0020.0004][.8C38.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 +1F248 ; [*038A.0020.0004][.80CD.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 +1F240 ; [*038A.0020.0004][.819A.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C +1F244 ; [*038A.0020.0004][.8E99.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 +1F246 ; [*038A.0020.0004][.8CA9.0020.0004][*038B.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 2F00 ; [.CBDC.0020.0004] # KANGXI RADICAL ONE 3192 ; [.CBDC.0020.0014] # IDEOGRAPHIC ANNOTATION ONE MARK 3280 ; [.CBDC.0020.0006] # CIRCLED IDEOGRAPH ONE diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate/Locale.pm perl-5.34.0/cpan/Unicode-Collate/Collate/Locale.pm --- perl-5.32.1/cpan/Unicode-Collate/Collate/Locale.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate/Locale.pm 2020-10-24 18:43:34.000000000 +0000 @@ -5,7 +5,7 @@ use Carp; use base qw(Unicode::Collate); -our $VERSION = '1.27'; +our $VERSION = '1.29'; my $PL_EXT = '.pl'; @@ -519,7 +519,7 @@ The Unicode::Collate::Locale module for perl was written by SADAHIRO Tomoyuki, . -This module is Copyright(C) 2004-2018, SADAHIRO Tomoyuki. Japan. +This module is Copyright(C) 2004-2020, SADAHIRO Tomoyuki. Japan. All rights reserved. This module is free software; you can redistribute it and/or diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate.pm perl-5.34.0/cpan/Unicode-Collate/Collate.pm --- perl-5.32.1/cpan/Unicode-Collate/Collate.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate.pm 2020-10-24 18:43:34.000000000 +0000 @@ -17,7 +17,7 @@ no warnings 'utf8'; -our $VERSION = '1.27'; +our $VERSION = '1.29'; our $PACKAGE = __PACKAGE__; ### begin XS only ### @@ -88,9 +88,9 @@ my $HighestVCE = pack(VCE_TEMPLATE, 0, 0xFFFE, 0x20, 0x5, 0xFFFF); my $minimalVCE = pack(VCE_TEMPLATE, 0, 1, 0x20, 0x5, 0xFFFE); -sub UCA_Version { '36' } +sub UCA_Version { '43' } -sub Base_Unicode_Version { '10.0.0' } +sub Base_Unicode_Version { '13.0.0' } ###### @@ -191,6 +191,10 @@ 32 => \&_derivCE_32, 34 => \&_derivCE_34, 36 => \&_derivCE_36, + 38 => \&_derivCE_38, + 40 => \&_derivCE_40, + 41 => \&_derivCE_40, # 41 == 40 + 43 => \&_derivCE_43, ); sub checkCollator { @@ -1104,25 +1108,29 @@ behavior of that revision is emulated on collating. If omitted, the return value of C is used. -The following revisions are supported. The default is 36. +The following revisions are supported. The default is 43. UCA Unicode Standard DUCET (@version) ------------------------------------------------------- 8 3.1 3.0.1 (3.0.1d9) - 9 3.1 with Corrigendum 3 3.1.1 (3.1.1) - 11 4.0 4.0.0 (4.0.0) - 14 4.1.0 4.1.0 (4.1.0) - 16 5.0 5.0.0 (5.0.0) - 18 5.1.0 5.1.0 (5.1.0) - 20 5.2.0 5.2.0 (5.2.0) - 22 6.0.0 6.0.0 (6.0.0) - 24 6.1.0 6.1.0 (6.1.0) - 26 6.2.0 6.2.0 (6.2.0) - 28 6.3.0 6.3.0 (6.3.0) - 30 7.0.0 7.0.0 (7.0.0) - 32 8.0.0 8.0.0 (8.0.0) - 34 9.0.0 9.0.0 (9.0.0) - 36 10.0.0 10.0.0(10.0.0) + 9 3.1 with Corrigendum 3 3.1.1 + 11 4.0.0 + 14 4.1.0 + 16 5.0.0 + 18 5.1.0 + 20 5.2.0 + 22 6.0.0 + 24 6.1.0 + 26 6.2.0 + 28 6.3.0 + 30 7.0.0 + 32 8.0.0 + 34 9.0.0 + 36 10.0.0 + 38 11.0.0 + 40 12.0.0 + 41 12.1.0 + 43 13.0.0 * See below for C with C 22 and 24. @@ -1464,13 +1472,19 @@ U+4E00..U+9FCC if UCA_Version is 24 to 30. U+4E00..U+9FD5 if UCA_Version is 32 or 34. U+4E00..U+9FEA if UCA_Version is 36. + U+4E00..U+9FEF if UCA_Version is 38, 40 or 41. + U+4E00..U+9FFC if UCA_Version is 43. In the CJK Unified Ideographs Extension blocks: - Ext.A (U+3400..U+4DB5) and Ext.B (U+20000..U+2A6D6) in any UCA_Version. + Ext.A (U+3400..U+4DB5) if UCA_Version is 8 to 41. + Ext.A (U+3400..U+4DBF) if UCA_Version is 43. + Ext.B (U+20000..U+2A6D6) if UCA_Version is 8 to 41. + Ext.B (U+20000..U+2A6DD) if UCA_Version is 43. Ext.C (U+2A700..U+2B734) if UCA_Version is 20 or later. Ext.D (U+2B740..U+2B81D) if UCA_Version is 22 or later. Ext.E (U+2B820..U+2CEA1) if UCA_Version is 32 or later. - Ext.F (U+2CEB0..U+2EBE0) if UCA_Version is 36. + Ext.F (U+2CEB0..U+2EBE0) if UCA_Version is 36 or later. + Ext.G (U+30000..U+3134A) if UCA_Version is 43. Through C, ordering of CJK unified ideographs (including extensions) can be overridden. @@ -2092,15 +2106,15 @@ =head1 AUTHOR, COPYRIGHT AND LICENSE The Unicode::Collate module for perl was written by SADAHIRO Tomoyuki, -. This module is Copyright(C) 2001-2018, +. This module is Copyright(C) 2001-2020, SADAHIRO Tomoyuki. Japan. All rights reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The file Unicode/Collate/allkeys.txt was copied verbatim -from L. -For this file, Copyright (c) 2016 Unicode, Inc.; distributed +from L. +For this file, Copyright (c) 2020 Unicode, Inc.; distributed under the Terms of Use in L =head1 SEE ALSO diff -Nru perl-5.32.1/cpan/Unicode-Collate/Collate.xs perl-5.34.0/cpan/Unicode-Collate/Collate.xs --- perl-5.32.1/cpan/Unicode-Collate/Collate.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Collate.xs 2020-10-24 18:43:34.000000000 +0000 @@ -58,11 +58,15 @@ #define CJK_UidF61 (0x9FCC) /* Unicode 6.1 */ #define CJK_UidF80 (0x9FD5) /* Unicode 8.0 */ #define CJK_UidF100 (0x9FEA) /* Unicode 10.0 */ +#define CJK_UidF110 (0x9FEF) /* Unicode 11.0 */ +#define CJK_UidF130 (0x9FFC) /* Unicode 13.0 */ #define CJK_ExtAIni (0x3400) /* Unicode 3.0 */ #define CJK_ExtAFin (0x4DB5) /* Unicode 3.0 */ +#define CJK_ExtA130 (0x4DBF) /* Unicode 13.0 */ #define CJK_ExtBIni (0x20000) /* Unicode 3.1 */ #define CJK_ExtBFin (0x2A6D6) /* Unicode 3.1 */ +#define CJK_ExtB130 (0x2A6DD) /* Unicode 13.0 */ #define CJK_ExtCIni (0x2A700) /* Unicode 5.2 */ #define CJK_ExtCFin (0x2B734) /* Unicode 5.2 */ #define CJK_ExtDIni (0x2B740) /* Unicode 6.0 */ @@ -71,6 +75,8 @@ #define CJK_ExtEFin (0x2CEA1) /* Unicode 8.0 */ #define CJK_ExtFIni (0x2CEB0) /* Unicode 10.0 */ #define CJK_ExtFFin (0x2EBE0) /* Unicode 10.0 */ +#define CJK_ExtGIni (0x30000) /* Unicode 13.0 */ +#define CJK_ExtGFin (0x3134A) /* Unicode 13.0 */ #define CJK_CompIni (0xFA0E) #define CJK_CompFin (0xFA29) @@ -80,10 +86,17 @@ #define TangIdeoIni (0x17000) /* Unicode 9.0 */ #define TangIdeoFin (0x187EC) /* Unicode 9.0 */ +#define TangIdeo110 (0x187F1) /* Unicode 11.0 */ +#define TangIdeo120 (0x187F7) /* Unicode 12.0 */ #define TangCompIni (0x18800) /* Unicode 9.0 */ #define TangCompFin (0x18AF2) /* Unicode 9.0 */ +#define TangComp130 (0x18AFF) /* Unicode 13.0 */ +#define TangSuppIni (0x18D00) /* Unicode 13.0 */ +#define TangSuppFin (0x18D08) /* Unicode 13.0 */ #define NushuIni (0x1B170) /* Unicode 10.0 */ #define NushuFin (0x1B2FB) /* Unicode 10.0 */ +#define KhitanIni (0x18B00) /* Unicode 13.0 */ +#define KhitanFin (0x18CD5) /* Unicode 13.0 */ #define codeRange(bcode, ecode) ((bcode) <= code && code <= (ecode)) @@ -283,39 +296,58 @@ _derivCE_32 = 6 _derivCE_34 = 7 _derivCE_36 = 8 + _derivCE_38 = 9 + _derivCE_40 = 10 + _derivCE_43 = 11 PREINIT: UV base, aaaa, bbbb; U8 a[VCE_Length + 1] = "\x00\x00\x00\x00\x00\x00\x00\x00\x00"; U8 b[VCE_Length + 1] = "\x00\x00\x00\x00\x00\x00\x00\x00\x00"; - bool basic_unified = 0, tangut = 0, nushu = 0; + bool basic_unified = 0, tangut = 0, nushu = 0, khitan = 0; PPCODE: if (codeRange(CJK_UidIni, CJK_CompFin)) { if (codeRange(CJK_CompIni, CJK_CompFin)) basic_unified = (bool)UnifiedCompat[code - CJK_CompIni]; else - basic_unified = (ix >= 8 ? (code <= CJK_UidF100) : - ix >= 6 ? (code <= CJK_UidF80) : - ix == 5 ? (code <= CJK_UidF61) : - ix >= 3 ? (code <= CJK_UidF52) : - ix == 2 ? (code <= CJK_UidF51) : - ix == 1 ? (code <= CJK_UidF41) : - (code <= CJK_UidFin)); + basic_unified = (ix >= 11 ? (code <= CJK_UidF130) : + ix >= 9 ? (code <= CJK_UidF110) : + ix == 8 ? (code <= CJK_UidF100) : + ix >= 6 ? (code <= CJK_UidF80) : + ix == 5 ? (code <= CJK_UidF61) : + ix >= 3 ? (code <= CJK_UidF52) : + ix == 2 ? (code <= CJK_UidF51) : + ix == 1 ? (code <= CJK_UidF41) : + (code <= CJK_UidFin)); } else { - if (ix >= 7) - tangut = (codeRange(TangIdeoIni, TangIdeoFin) || - codeRange(TangCompIni, TangCompFin)); + if (ix >= 7) { + tangut = (ix >= 11) ? (codeRange(TangIdeoIni, TangIdeo120) || + codeRange(TangCompIni, TangComp130) || + codeRange(TangSuppIni, TangSuppFin)) : + (ix == 10) ? (codeRange(TangIdeoIni, TangIdeo120) || + codeRange(TangCompIni, TangCompFin)) : + (ix == 9) ? (codeRange(TangIdeoIni, TangIdeo110) || + codeRange(TangCompIni, TangCompFin)) : + (codeRange(TangIdeoIni, TangIdeoFin) || + codeRange(TangCompIni, TangCompFin)); + } if (ix >= 8) nushu = (codeRange(NushuIni, NushuFin)); + if (ix >= 11) + khitan = (codeRange(KhitanIni, KhitanFin)); } base = tangut ? 0xFB00 : nushu ? 0xFB01 : + khitan + ? 0xFB02 : basic_unified ? 0xFB40 : /* CJK */ - ((codeRange(CJK_ExtAIni, CJK_ExtAFin)) + ((ix >= 11 ? codeRange(CJK_ExtAIni, CJK_ExtA130) + : codeRange(CJK_ExtAIni, CJK_ExtAFin)) || - (codeRange(CJK_ExtBIni, CJK_ExtBFin)) + (ix >= 11 ? codeRange(CJK_ExtBIni, CJK_ExtB130) + : codeRange(CJK_ExtBIni, CJK_ExtBFin)) || (ix >= 3 && codeRange(CJK_ExtCIni, CJK_ExtCFin)) || @@ -323,12 +355,15 @@ || (ix >= 6 && codeRange(CJK_ExtEIni, CJK_ExtEFin)) || - (ix >= 8 && codeRange(CJK_ExtFIni, CJK_ExtFFin))) + (ix >= 8 && codeRange(CJK_ExtFIni, CJK_ExtFFin)) + || + (ix >= 11 && codeRange(CJK_ExtGIni, CJK_ExtGFin))) ? 0xFB80 /* CJK ext. */ : 0xFBC0; /* others */ - aaaa = tangut || nushu ? base : base + (code >> 15); + aaaa = tangut || nushu || khitan ? base : base + (code >> 15); bbbb = (tangut ? (code - TangIdeoIni) : - nushu ? (code - NushuIni) : (code & 0x7FFF)) | 0x8000; + nushu ? (code - NushuIni) : + khitan ? (code - KhitanIni) : (code & 0x7FFF)) | 0x8000; a[1] = (U8)(aaaa >> 8); a[2] = (U8)(aaaa & 0xFF); b[1] = (U8)(bbbb >> 8); @@ -389,7 +424,9 @@ if (codeRange(CJK_CompIni, CJK_CompFin)) basic_unified = (bool)UnifiedCompat[code - CJK_CompIni]; else - basic_unified = (uca_vers >= 36 ? (code <= CJK_UidF100) : + basic_unified = (uca_vers >= 43 ? (code <= CJK_UidF130) : + uca_vers >= 38 ? (code <= CJK_UidF110) : + uca_vers >= 36 ? (code <= CJK_UidF100) : uca_vers >= 32 ? (code <= CJK_UidF80) : uca_vers >= 24 ? (code <= CJK_UidF61) : uca_vers >= 20 ? (code <= CJK_UidF52) : @@ -402,8 +439,12 @@ || (codeRange(CJK_ExtAIni, CJK_ExtAFin)) || + (uca_vers >= 43 && codeRange(CJK_ExtAIni, CJK_ExtA130)) + || (uca_vers >= 8 && codeRange(CJK_ExtBIni, CJK_ExtBFin)) || + (uca_vers >= 43 && codeRange(CJK_ExtBIni, CJK_ExtB130)) + || (uca_vers >= 20 && codeRange(CJK_ExtCIni, CJK_ExtCFin)) || (uca_vers >= 22 && codeRange(CJK_ExtDIni, CJK_ExtDFin)) @@ -411,6 +452,8 @@ (uca_vers >= 32 && codeRange(CJK_ExtEIni, CJK_ExtEFin)) || (uca_vers >= 36 && codeRange(CJK_ExtFIni, CJK_ExtFFin)) + || + (uca_vers >= 43 && codeRange(CJK_ExtGIni, CJK_ExtGFin)) ); OUTPUT: RETVAL diff -Nru perl-5.32.1/cpan/Unicode-Collate/Makefile.PL perl-5.34.0/cpan/Unicode-Collate/Makefile.PL --- perl-5.32.1/cpan/Unicode-Collate/Makefile.PL 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/Makefile.PL 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,7 @@ require 5.006001; + +use strict; +use warnings; use ExtUtils::MakeMaker; my $clean = {}; @@ -21,11 +24,11 @@ 'VERSION_FROM' => 'Collate.pm', # finds $VERSION 'clean' => $clean, 'PREREQ_PM' => { - Carp => 0, - File::Spec => 0, - XSLoader => 0, - constant => 0, - strict => 0, - warnings => 0, + 'Carp' => 0, + 'File::Spec' => 0, + 'XSLoader' => 0, + 'constant' => 0, + 'strict' => 0, + 'warnings' => 0, }, ); diff -Nru perl-5.32.1/cpan/Unicode-Collate/t/cjkrange.t perl-5.34.0/cpan/Unicode-Collate/t/cjkrange.t --- perl-5.32.1/cpan/Unicode-Collate/t/cjkrange.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/t/cjkrange.t 2020-10-24 18:43:34.000000000 +0000 @@ -16,7 +16,7 @@ use strict; use warnings; -BEGIN { $| = 1; print "1..901\n"; } # 1 + 60 x @Versions +BEGIN { $| = 1; print "1..1426\n"; } # 1 + 75 x @Versions my $count = 0; sub ok ($;$) { my $p = my $r = shift; @@ -48,15 +48,21 @@ # 9FCC is CJK UI since UCA_Version 24 (Unicode 6.1). # 9FCD..9FD5 are CJK UI since UCA_Version 32 (Unicode 8.0). # 9FD6..9FEA are CJK UI since UCA_Version 36 (Unicode 10.0). +# 9FEB..9FEF are CJK UI since UCA_Version 38 (Unicode 11.0). +# 9FF0..9FFC are CJK UI since UCA_Version 43 (Unicode 13.0). # 3400..4DB5 are CJK UI Ext.A since UCA_Version 8 (Unicode 3.0). +# 4DB6..4DBF are CJK UI Ext.A since UCA_Version 43 (Unicode 13.0). # 20000..2A6D6 are CJK UI Ext.B since UCA_Version 8 (Unicode 3.1). +# 2A6D7..2A6DD are CJK UI Ext.B since UCA_Version 43 (Unicode 13.0). # 2A700..2B734 are CJK UI Ext.C since UCA_Version 20 (Unicode 5.2). # 2B740..2B81D are CJK UI Ext.D since UCA_Version 22 (Unicode 6.0). # 2B820..2CEA1 are CJK UI Ext.E since UCA_Version 32 (Unicode 8.0). # 2CEB0..2EBE0 are CJK UI Ext.F since UCA_Version 36 (Unicode 10.0). +# 30000..3134A are CJK UI Ext.G since UCA_Version 43 (Unicode 13.0). -my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36); +my @Versions = ( 8, 9, 11, 14, 16, 18, 20, 22, 24, 26, + 28, 30, 32, 34, 36, 38, 40, 41, 43); for my $v (@Versions) { $coll->change(UCA_Version => $v); @@ -75,12 +81,16 @@ ok($coll->cmp("\x{3400}", "\x{9FD5}") == ($v >= 32 ? 1 : -1)); # new ok($coll->cmp("\x{3400}", "\x{9FD6}") == ($v >= 36 ? 1 : -1)); # new ok($coll->cmp("\x{3400}", "\x{9FEA}") == ($v >= 36 ? 1 : -1)); # new - ok($coll->cmp("\x{3400}", "\x{9FEB}") == -1); # na + ok($coll->cmp("\x{3400}", "\x{9FEB}") == ($v >= 38 ? 1 : -1)); # new + ok($coll->cmp("\x{3400}", "\x{9FEF}") == ($v >= 38 ? 1 : -1)); # new + ok($coll->cmp("\x{3400}", "\x{9FF0}") == ($v >= 43 ? 1 : -1)); # new + ok($coll->cmp("\x{3400}", "\x{9FFC}") == ($v >= 43 ? 1 : -1)); # new + ok($coll->cmp("\x{3400}", "\x{9FFD}") == -1); # na ok($coll->cmp("\x{3400}", "\x{9FFF}") == -1); # na # UI < UI - ok($coll->cmp("\x{4E00}", "\x{9FA5}") == -1); # UI < UI - ok($coll->cmp("\x{9FA5}", "\x{9FA6}") == -1); # UI < new + ok($coll->cmp("\x{4E00}", "\x{9FA5}") == -1); # UI < UI + ok($coll->cmp("\x{9FA5}", "\x{9FA6}") == -1); # UI < new ok($coll->cmp("\x{9FA6}", "\x{9FBB}") == -1); # new < new ok($coll->cmp("\x{9FBB}", "\x{9FBC}") == -1); # new < new ok($coll->cmp("\x{9FBC}", "\x{9FC3}") == -1); # new < new @@ -91,24 +101,30 @@ ok($coll->cmp("\x{9FCD}", "\x{9FD5}") == -1); # new < new ok($coll->cmp("\x{9FD5}", "\x{9FD6}") == -1); # new < new ok($coll->cmp("\x{9FD6}", "\x{9FEA}") == -1); # new < new - ok($coll->cmp("\x{9FEA}", "\x{9FEB}") == -1); # new < na - ok($coll->cmp("\x{9FEB}", "\x{9FFF}") == -1); # na < na + ok($coll->cmp("\x{9FEA}", "\x{9FEB}") == -1); # new < new + ok($coll->cmp("\x{9FEB}", "\x{9FEF}") == -1); # new < new + ok($coll->cmp("\x{9FEF}", "\x{9FF0}") == -1); # new < new + ok($coll->cmp("\x{9FF0}", "\x{9FFC}") == -1); # new < new + ok($coll->cmp("\x{9FFC}", "\x{9FFD}") == -1); # new < na + ok($coll->cmp("\x{9FFD}", "\x{9FFF}") == -1); # na < na # Ext.A < Ext.B ok($coll->cmp("\x{3400}", "\x{20000}") == -1); # Ext.A ok($coll->cmp("\x{3400}", "\x{4DB5}") == -1); # A < A - ok($coll->cmp("\x{2FFF}", "\x{3400}") == ($v >= 8 ? 1 : -1)); # na > A - ok($coll->cmp("\x{2FFF}", "\x{4DB5}") == ($v >= 8 ? 1 : -1)); # na > A - ok($coll->cmp("\x{2FFF}", "\x{4DB6}") == -1); # na < na - ok($coll->cmp("\x{2FFF}", "\x{4DBF}") == -1); # na < na + ok($coll->cmp("\x{2FFF}", "\x{3400}") == ($v >= 8 ? 1 : -1)); # na > A + ok($coll->cmp("\x{2FFF}", "\x{4DB5}") == ($v >= 8 ? 1 : -1)); # na > A + ok($coll->cmp("\x{2FFF}", "\x{4DB6}") == ($v >= 43 ? 1 : -1)); # na > A + ok($coll->cmp("\x{2FFF}", "\x{4DBF}") == ($v >= 43 ? 1 : -1)); # na > A # Ext.B ok($coll->cmp("\x{20000}","\x{2A6D6}") == -1); # B < B - ok($coll->cmp("\x{2FFF}", "\x{20000}") == ($v >= 9 ? 1 : -1)); # na > B - ok($coll->cmp("\x{2FFF}", "\x{2A6D6}") == ($v >= 9 ? 1 : -1)); # na > B - ok($coll->cmp("\x{2FFF}", "\x{2A6D7}") == -1); # na < na + ok($coll->cmp("\x{2FFF}", "\x{20000}") == ($v >= 9 ? 1 : -1)); # na > B + ok($coll->cmp("\x{2FFF}", "\x{2A6D6}") == ($v >= 9 ? 1 : -1)); # na > B + ok($coll->cmp("\x{2FFF}", "\x{2A6D7}") == ($v >= 43 ? 1 : -1)); # na > B + ok($coll->cmp("\x{2FFF}", "\x{2A6DD}") == ($v >= 43 ? 1 : -1)); # na > B + ok($coll->cmp("\x{2FFF}", "\x{2A6DE}") == -1); # na < na ok($coll->cmp("\x{2FFF}", "\x{2A6DF}") == -1); # na < na # Ext.C @@ -138,5 +154,12 @@ ok($coll->cmp("\x{2FFF}", "\x{2EBE0}") == ($v >= 36 ? 1 : -1)); # na > F ok($coll->cmp("\x{2FFF}", "\x{2EBE1}") == -1); # na < na ok($coll->cmp("\x{2FFF}", "\x{2EBEF}") == -1); # na < na + + # Ext.G + ok($coll->cmp("\x{30000}","\x{3134A}") == -1); # G < G + ok($coll->cmp("\x{2FFF}", "\x{30000}") == ($v >= 43 ? 1 : -1)); # na > G + ok($coll->cmp("\x{2FFF}", "\x{3134A}") == ($v >= 43 ? 1 : -1)); # na > G + ok($coll->cmp("\x{2FFF}", "\x{3134B}") == -1); # na < na + ok($coll->cmp("\x{2FFF}", "\x{3134F}") == -1); # na < na } diff -Nru perl-5.32.1/cpan/Unicode-Collate/t/compatui.t perl-5.34.0/cpan/Unicode-Collate/t/compatui.t --- perl-5.32.1/cpan/Unicode-Collate/t/compatui.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/t/compatui.t 2020-10-24 18:43:34.000000000 +0000 @@ -16,7 +16,7 @@ use strict; use warnings; -BEGIN { $| = 1; print "1..1051\n"; } # 1 + 70 x @Versions +BEGIN { $| = 1; print "1..1331\n"; } # 1 + 70 x @Versions my $count = 0; sub ok ($;$) { my $p = my $r = shift; @@ -33,7 +33,8 @@ ######################### -my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36); +my @Versions = ( 8, 9, 11, 14, 16, 18, 20, 22, 24, 26, + 28, 30, 32, 34, 36, 38, 40, 41, 43); # 12 compatibility ideographs are treated as unified ideographs: # FA0E, FA0F, FA11, FA13, FA14, FA1F, FA21, FA23, FA24, FA27, FA28, FA29. diff -Nru perl-5.32.1/cpan/Unicode-Collate/t/hangtype.t perl-5.34.0/cpan/Unicode-Collate/t/hangtype.t --- perl-5.32.1/cpan/Unicode-Collate/t/hangtype.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/t/hangtype.t 2020-10-24 18:43:34.000000000 +0000 @@ -16,7 +16,7 @@ use strict; use warnings; -BEGIN { $| = 1; print "1..751\n"; } # 1 + 50 x @Versions +BEGIN { $| = 1; print "1..951\n"; } # 1 + 50 x @Versions my $count = 0; sub ok ($;$) { my $p = my $r = shift; @@ -33,7 +33,8 @@ ######################### -my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36); +my @Versions = ( 8, 9, 11, 14, 16, 18, 20, 22, 24, 26, + 28, 30, 32, 34, 36, 38, 40, 41, 43); for my $v (@Versions) { ok(Unicode::Collate::getHST(0x0000, $v), ''); diff -Nru perl-5.32.1/cpan/Unicode-Collate/t/illegal.t perl-5.34.0/cpan/Unicode-Collate/t/illegal.t --- perl-5.32.1/cpan/Unicode-Collate/t/illegal.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/t/illegal.t 2020-10-24 18:43:34.000000000 +0000 @@ -30,7 +30,7 @@ use strict; use warnings; -BEGIN { $| = 1; print "1..156\n"; } # 81 + 5 x @Versions +BEGIN { $| = 1; print "1..176\n"; } # 81 + 5 x @Versions my $count = 0; sub ok ($;$) { my $p = my $r = shift; @@ -192,7 +192,8 @@ overrideOut => sub { 0xFFFD }, ); -my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36); +my @Versions = ( 8, 9, 11, 14, 16, 18, 20, 22, 24, 26, + 28, 30, 32, 34, 36, 38, 40, 41, 43); for my $v (@Versions) { $out->change(UCA_Version => $v); diff -Nru perl-5.32.1/cpan/Unicode-Collate/t/khitan.t perl-5.34.0/cpan/Unicode-Collate/t/khitan.t --- perl-5.32.1/cpan/Unicode-Collate/t/khitan.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/t/khitan.t 2020-10-24 18:43:34.000000000 +0000 @@ -0,0 +1,66 @@ + +BEGIN { + unless ('A' eq pack('U', 0x41)) { + print "1..0 # Unicode::Collate cannot pack a Unicode code point\n"; + exit 0; + } + unless (0x41 == unpack('U', 'A')) { + print "1..0 # Unicode::Collate cannot get a Unicode code point\n"; + exit 0; + } + if ($ENV{PERL_CORE}) { + chdir('t') if -d 't'; + @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib); + } +} + +use strict; +use warnings; +BEGIN { $| = 1; print "1..100\n"; } # 5 + 5 x @Versions +my $count = 0; +sub ok ($;$) { + my $p = my $r = shift; + if (@_) { + my $x = shift; + $p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x; + } + print $p ? "ok" : "not ok", ' ', ++$count, "\n"; +} + +use Unicode::Collate; + +ok(1); + +######################### + +my @Versions = ( 8, 9, 11, 14, 16, 18, 20, 22, 24, 26, + 28, 30, 32, 34, 36, 38, 40, 41, 43); + +my $Collator = Unicode::Collate->new( + table => 'keys.txt', + normalization => undef, + UCA_Version => 43, +); + +ok($Collator->viewSortKey("\x{18B00}"), + '[FB02 8000 | 0020 | 0002 | FFFF |]'); +ok($Collator->viewSortKey("\x{18B01}"), + '[FB02 8001 | 0020 | 0002 | FFFF |]'); +ok($Collator->viewSortKey("\x{18C00}"), + '[FB02 8100 | 0020 | 0002 | FFFF |]'); +ok($Collator->viewSortKey("\x{18CD5}"), + '[FB02 81D5 | 0020 | 0002 | FFFF |]'); + +# Khitan < CJK UI (4E00) < Unassigned. + +# 18B00..18CD5 are Khitan Characters since UCA_Version 43 (Unicode 13.0). + +for my $v (@Versions) { + $Collator->change(UCA_Version => $v); + + ok($Collator->cmp("\x{18B00}", "\x{4E00}") == ($v >= 43 ? -1 : 1)); + ok($Collator->cmp("\x{18C00}", "\x{4E00}") == ($v >= 43 ? -1 : 1)); + ok($Collator->cmp("\x{18CD5}", "\x{4E00}") == ($v >= 43 ? -1 : 1)); + ok($Collator->cmp("\x{18CD6}", "\x{4E00}") == 1); + ok($Collator->cmp("\x{18CDF}", "\x{4E00}") == 1); +} diff -Nru perl-5.32.1/cpan/Unicode-Collate/t/loc_es.t perl-5.34.0/cpan/Unicode-Collate/t/loc_es.t --- perl-5.32.1/cpan/Unicode-Collate/t/loc_es.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/t/loc_es.t 2020-10-24 18:43:34.000000000 +0000 @@ -37,7 +37,7 @@ new(locale => 'ES', normalization => undef); ok($objEs->getlocale, 'es'); -ok($objEs->locale_version, 1.27); +ok($objEs->locale_version, 1.29); $objEs->change(level => 1); diff -Nru perl-5.32.1/cpan/Unicode-Collate/t/loc_estr.t perl-5.34.0/cpan/Unicode-Collate/t/loc_estr.t --- perl-5.32.1/cpan/Unicode-Collate/t/loc_estr.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/t/loc_estr.t 2020-10-24 18:43:34.000000000 +0000 @@ -37,7 +37,7 @@ new(locale => 'ES-trad', normalization => undef); ok($objEsTrad->getlocale, 'es__traditional'); -ok($objEsTrad->locale_version, 1.27); +ok($objEsTrad->locale_version, 1.29); $objEsTrad->change(level => 1); diff -Nru perl-5.32.1/cpan/Unicode-Collate/t/nushu.t perl-5.34.0/cpan/Unicode-Collate/t/nushu.t --- perl-5.32.1/cpan/Unicode-Collate/t/nushu.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/t/nushu.t 2020-10-24 18:43:34.000000000 +0000 @@ -16,7 +16,7 @@ use strict; use warnings; -BEGIN { $| = 1; print "1..185\n"; } # 5 + 12 x @Versions +BEGIN { $| = 1; print "1..233\n"; } # 5 + 12 x @Versions my $count = 0; sub ok ($;$) { my $p = my $r = shift; @@ -33,7 +33,8 @@ ######################### -my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36); +my @Versions = ( 8, 9, 11, 14, 16, 18, 20, 22, 24, 26, + 28, 30, 32, 34, 36, 38, 40, 41, 43); my $Collator = Unicode::Collate->new( table => 'keys.txt', diff -Nru perl-5.32.1/cpan/Unicode-Collate/t/overcjk0.t perl-5.34.0/cpan/Unicode-Collate/t/overcjk0.t --- perl-5.32.1/cpan/Unicode-Collate/t/overcjk0.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/t/overcjk0.t 2020-10-24 18:43:34.000000000 +0000 @@ -16,7 +16,7 @@ use strict; use warnings; -BEGIN { $| = 1; print "1..696\n"; } # 6 + 46 x @Versions +BEGIN { $| = 1; print "1..1070\n"; } # 6 + 56 x @Versions my $count = 0; sub ok ($;$) { my $p = my $r = shift; @@ -61,15 +61,21 @@ # 9FCC is CJK UI since UCA_Version 24 (Unicode 6.1). # 9FCD..9FD5 are CJK UI since UCA_Version 32 (Unicode 8.0). # 9FD6..9FEA are CJK UI since UCA_Version 36 (Unicode 10.0). +# 9FEB..9FEF are CJK UI since UCA_Version 38 (Unicode 11.0). +# 9FF0..9FFC are CJK UI since UCA_Version 43 (Unicode 13.0). # 3400..4DB5 are CJK UI Ext.A since UCA_Version 8 (Unicode 3.0). +# 4DB6..4DBF are CJK UI Ext.A since UCA_Version 43 (Unicode 13.0). # 20000..2A6D6 are CJK UI Ext.B since UCA_Version 8 (Unicode 3.1). +# 2A6D7..2A6DD are CJK UI Ext.B since UCA_Version 43 (Unicode 13.0). # 2A700..2B734 are CJK UI Ext.C since UCA_Version 20 (Unicode 5.2). # 2B740..2B81D are CJK UI Ext.D since UCA_Version 22 (Unicode 6.0). # 2B820..2CEA1 are CJK UI Ext.E since UCA_Version 32 (Unicode 8.0). # 2CEB0..2EBE0 are CJK UI Ext.F since UCA_Version 36 (Unicode 10.0). +# 30000..3134A are CJK UI Ext.G since UCA_Version 43 (Unicode 13.0). -my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36); +my @Versions = ( 8, 9, 11, 14, 16, 18, 20, 22, 24, 26, + 28, 30, 32, 34, 36, 38, 40, 41, 43); for my $v (@Versions) { $ignoreCJK->change(UCA_Version => $v); @@ -95,19 +101,25 @@ ok($ignoreCJK->cmp("\x{9FD6}", "") == ($v >= 36 ? 0 : 1)); ok($ignoreCJK->cmp("\x{9FDF}", "") == ($v >= 36 ? 0 : 1)); ok($ignoreCJK->cmp("\x{9FEA}", "") == ($v >= 36 ? 0 : 1)); - ok($ignoreCJK->cmp("\x{9FEB}", "") == 1); + ok($ignoreCJK->cmp("\x{9FEB}", "") == ($v >= 38 ? 0 : 1)); + ok($ignoreCJK->cmp("\x{9FEF}", "") == ($v >= 38 ? 0 : 1)); + ok($ignoreCJK->cmp("\x{9FF0}", "") == ($v >= 43 ? 0 : 1)); + ok($ignoreCJK->cmp("\x{9FFC}", "") == ($v >= 43 ? 0 : 1)); + ok($ignoreCJK->cmp("\x{9FFD}", "") == 1); ok($ignoreCJK->cmp("\x{9FFF}", "") == 1); # Ext.A ok($ignoreCJK->cmp("\x{3400}", "") == 0); ok($ignoreCJK->cmp("\x{4DB5}", "") == 0); - ok($ignoreCJK->cmp("\x{4DB6}", "") == 1); - ok($ignoreCJK->cmp("\x{4DBF}", "") == 1); + ok($ignoreCJK->cmp("\x{4DB6}", "") == ($v >= 43 ? 0 : 1)); + ok($ignoreCJK->cmp("\x{4DBF}", "") == ($v >= 43 ? 0 : 1)); # Ext.B ok($ignoreCJK->cmp("\x{20000}","") == 0); ok($ignoreCJK->cmp("\x{2A6D6}","") == 0); - ok($ignoreCJK->cmp("\x{2A6D7}","") == 1); + ok($ignoreCJK->cmp("\x{2A6D7}","") == ($v >= 43 ? 0 : 1)); + ok($ignoreCJK->cmp("\x{2A6DD}","") == ($v >= 43 ? 0 : 1)); + ok($ignoreCJK->cmp("\x{2A6DE}","") == 1); ok($ignoreCJK->cmp("\x{2A6DF}","") == 1); # Ext.C @@ -133,5 +145,11 @@ ok($ignoreCJK->cmp("\x{2EBE0}","") == ($v >= 36 ? 0 : 1)); ok($ignoreCJK->cmp("\x{2EBE1}","") == 1); ok($ignoreCJK->cmp("\x{2EBEF}","") == 1); + + # Ext.G + ok($ignoreCJK->cmp("\x{30000}","") == ($v >= 43 ? 0 : 1)); + ok($ignoreCJK->cmp("\x{3134A}","") == ($v >= 43 ? 0 : 1)); + ok($ignoreCJK->cmp("\x{3134B}","") == 1); + ok($ignoreCJK->cmp("\x{3134F}","") == 1); } diff -Nru perl-5.32.1/cpan/Unicode-Collate/t/overcjk1.t perl-5.34.0/cpan/Unicode-Collate/t/overcjk1.t --- perl-5.32.1/cpan/Unicode-Collate/t/overcjk1.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/t/overcjk1.t 2020-10-24 18:43:34.000000000 +0000 @@ -16,7 +16,7 @@ use strict; use warnings; -BEGIN { $| = 1; print "1..356\n"; } # 11 + 23 x @Versions +BEGIN { $| = 1; print "1..562\n"; } # 11 + 29 x @Versions my $count = 0; sub ok ($;$) { my $p = my $r = shift; @@ -67,8 +67,11 @@ # 9FCC is CJK UI since UCA_Version 24 (Unicode 6.1). # 9FCD..9FD5 are CJK UI since UCA_Version 32 (Unicode 8.0). # 9FD6..9FEA are CJK UI since UCA_Version 36 (Unicode 10.0). +# 9FEB..9FEF are CJK UI since UCA_Version 38 (Unicode 11.0). +# 9FF0..9FFC are CJK UI since UCA_Version 43 (Unicode 13.0). -my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36); +my @Versions = ( 8, 9, 11, 14, 16, 18, 20, 22, 24, 26, + 28, 30, 32, 34, 36, 38, 40, 41, 43); for my $v (@Versions) { $overCJK->change(UCA_Version => $v); @@ -92,8 +95,14 @@ ok($overCJK->cmp("a\x{9FD5}", "A\x{9FD6}") == ($v >= 36 ? 1 : -1)); ok($overCJK->cmp("a\x{9FD6}", "A\x{9FDF}") == ($v >= 36 ? 1 : -1)); ok($overCJK->cmp("a\x{9FDF}", "A\x{9FEA}") == ($v >= 36 ? 1 : -1)); - ok($overCJK->cmp("a\x{9FEA}", "A\x{9FEB}") == -1); - ok($overCJK->cmp("a\x{9FEB}", "A\x{9FEF}") == -1); - ok($overCJK->cmp("a\x{9FEF}", "A\x{9FFF}") == -1); + ok($overCJK->cmp("a\x{9FEA}", "A\x{9FEB}") == ($v >= 38 ? 1 : -1)); + ok($overCJK->cmp("a\x{9FEB}", "A\x{9FEE}") == ($v >= 38 ? 1 : -1)); + ok($overCJK->cmp("a\x{9FEE}", "A\x{9FEF}") == ($v >= 38 ? 1 : -1)); + ok($overCJK->cmp("a\x{9FEF}", "A\x{9FF0}") == ($v >= 43 ? 1 : -1)); + ok($overCJK->cmp("a\x{9FF0}", "A\x{9FFB}") == ($v >= 43 ? 1 : -1)); + ok($overCJK->cmp("a\x{9FFB}", "A\x{9FFC}") == ($v >= 43 ? 1 : -1)); + ok($overCJK->cmp("a\x{9FFC}", "A\x{9FFD}") == -1); + ok($overCJK->cmp("a\x{9FFD}", "A\x{9FFE}") == -1); + ok($overCJK->cmp("a\x{9FFE}", "A\x{9FFF}") == -1); } diff -Nru perl-5.32.1/cpan/Unicode-Collate/t/tangut.t perl-5.34.0/cpan/Unicode-Collate/t/tangut.t --- perl-5.32.1/cpan/Unicode-Collate/t/tangut.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/t/tangut.t 2020-10-24 18:43:34.000000000 +0000 @@ -16,7 +16,7 @@ use strict; use warnings; -BEGIN { $| = 1; print "1..380\n"; } # 5 + 25 x @Versions +BEGIN { $| = 1; print "1..689\n"; } # 5 + 36 x @Versions my $count = 0; sub ok ($;$) { my $p = my $r = shift; @@ -33,7 +33,8 @@ ######################### -my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36); +my @Versions = ( 8, 9, 11, 14, 16, 18, 20, 22, 24, 26, + 28, 30, 32, 34, 36, 38, 40, 41, 43); my $Collator = Unicode::Collate->new( table => 'keys.txt', @@ -53,7 +54,11 @@ # Tangut < CJK UI (4E00) < Unassigned. # 17000..187EC are Tangut Ideographs since UCA_Version 34 (Unicode 9.0). +# 187ED..187F1 are Tangut Ideographs since UCA_Version 38 (Unicode 11.0). +# 187F2..187F7 are Tangut Ideographs since UCA_Version 40 (Unicode 12.0). # 18800..18AF2 are Tangut Components since UCA_Version 34 (Unicode 9.0). +# 18AF3..18AFF are Tangut Components since UCA_Version 43 (Unicode 13.0) +# 18D00..18D08 are Tangut Ideographs since UCA_Version 43 (Unicode 13.0) for my $v (@Versions) { $Collator->change(UCA_Version => $v); @@ -65,15 +70,24 @@ ok($Collator->cmp("\x{18000}", "\x{4E00}") == ($v >= 34 ? -1 : 1)); ok($Collator->cmp("\x{187EB}", "\x{4E00}") == ($v >= 34 ? -1 : 1)); ok($Collator->cmp("\x{187EC}", "\x{4E00}") == ($v >= 34 ? -1 : 1)); - ok($Collator->cmp("\x{187ED}", "\x{4E00}") == 1); + ok($Collator->cmp("\x{187ED}", "\x{4E00}") == ($v >= 38 ? -1 : 1)); + ok($Collator->cmp("\x{187EF}", "\x{4E00}") == ($v >= 38 ? -1 : 1)); + ok($Collator->cmp("\x{187F1}", "\x{4E00}") == ($v >= 38 ? -1 : 1)); + ok($Collator->cmp("\x{187F2}", "\x{4E00}") == ($v >= 40 ? -1 : 1)); + ok($Collator->cmp("\x{187F4}", "\x{4E00}") == ($v >= 40 ? -1 : 1)); + ok($Collator->cmp("\x{187F7}", "\x{4E00}") == ($v >= 40 ? -1 : 1)); + ok($Collator->cmp("\x{187F8}", "\x{4E00}") == 1); ok($Collator->cmp("\x{187FE}", "\x{4E00}") == 1); ok($Collator->cmp("\x{187FF}", "\x{4E00}") == 1); ok($Collator->cmp("\x{18800}", "\x{4E00}") == ($v >= 34 ? -1 : 1)); ok($Collator->cmp("\x{18801}", "\x{4E00}") == ($v >= 34 ? -1 : 1)); ok($Collator->cmp("\x{18AF1}", "\x{4E00}") == ($v >= 34 ? -1 : 1)); ok($Collator->cmp("\x{18AF2}", "\x{4E00}") == ($v >= 34 ? -1 : 1)); - ok($Collator->cmp("\x{18AF3}", "\x{4E00}") == 1); - ok($Collator->cmp("\x{18AFF}", "\x{4E00}") == 1); + ok($Collator->cmp("\x{18AF3}", "\x{4E00}") == ($v >= 43 ? -1 : 1)); + ok($Collator->cmp("\x{18AFF}", "\x{4E00}") == ($v >= 43 ? -1 : 1)); + ok($Collator->cmp("\x{18D00}", "\x{4E00}") == ($v >= 43 ? -1 : 1)); + ok($Collator->cmp("\x{18D08}", "\x{4E00}") == ($v >= 43 ? -1 : 1)); + ok($Collator->cmp("\x{18D09}", "\x{4E00}") == 1); ok($Collator->lt("\x{17000}", "\x{17001}")); ok($Collator->lt("\x{17001}", "\x{17002}")); @@ -81,6 +95,8 @@ ok($Collator->lt("\x{17FFF}", "\x{18000}")); ok($Collator->lt("\x{18000}", "\x{187EB}")); ok($Collator->lt("\x{187EB}", "\x{187EC}")); + ok($Collator->lt("\x{187ED}", "\x{187EE}")); + ok($Collator->lt("\x{187F0}", "\x{187F1}")); ok($Collator->lt("\x{18800}", "\x{18801}")); ok($Collator->lt("\x{18801}", "\x{18AF1}")); diff -Nru perl-5.32.1/cpan/Unicode-Collate/t/version.t perl-5.34.0/cpan/Unicode-Collate/t/version.t --- perl-5.32.1/cpan/Unicode-Collate/t/version.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/t/version.t 2020-10-24 18:43:34.000000000 +0000 @@ -34,8 +34,8 @@ ######################### # Fix me when UCA and/or keys.txt is upgraded. -my $UCA_Version = "36"; -my $Base_Unicode_Version = "10.0.0"; +my $UCA_Version = "43"; +my $Base_Unicode_Version = "13.0.0"; my $Key_Version = "3.1.1"; ok(Unicode::Collate::UCA_Version, $UCA_Version); diff -Nru perl-5.32.1/cpan/Unicode-Collate/t/view.t perl-5.34.0/cpan/Unicode-Collate/t/view.t --- perl-5.32.1/cpan/Unicode-Collate/t/view.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Unicode-Collate/t/view.t 2020-10-24 18:43:34.000000000 +0000 @@ -16,7 +16,7 @@ use strict; use warnings; -BEGIN { $| = 1; print "1..174\n"; } # 62 + 8 x @Versions +BEGIN { $| = 1; print "1..214\n"; } # 62 + 8 x @Versions my $count = 0; sub ok ($;$) { my $p = my $r = shift; @@ -268,35 +268,59 @@ ##### 62 -my @Versions = (9, 11, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36); +my @Versions = ( 8, 9, 11, 14, 16, 18, 20, 22, 24, 26, + 28, 30, 32, 34, 36, 38, 40, 41, 43); for my $v (@Versions) { $Collator->change(UCA_Version => $v); + + # primary weights + my $pri1 = '0A0C 0A0D'; + my $pri2 = '0A0C 039F 0A0D'; + my $pri3 = $v >= 9 ? 'FB40 CE02' : '4E02'; + + # secondary weights + my $sec1 = '0020'; + my $sec2 = '0020 0020'; + my $sec3 = '0020 0020 0020'; + + # tertiary weights + my $ter1 = '0002'; + my $ter2 = '0002 0002'; + my $ter3 = '0002 0002 0002'; + + # quaternary weights + my $eququat = 'FFFF 039F FFFF'; + my $hanquat = $v >= 36 || $v == 8 ? 'FFFF' : 'FFFF FFFF'; + + # separators + my $sep1 = $v >= 9 ? ' |' : '|'; + my $sep2 = $v >= 9 ? ' | ' : '|'; + my $app = $v >= 26 ? ' |]' : ']'; - my $sec = $v >= 36 ? '' : ' FFFF'; $Collator->change(variable => 'Shifted', level => 4); ok($Collator->viewSortKey("1+2"), - '[0A0C 0A0D | 0020 0020 | 0002 0002 | FFFF 039F FFFF'.$app); + "[$pri1$sep2$sec2$sep2$ter2$sep2$eququat$app"); ok($Collator->viewSortKey("\x{4E02}"), - '[FB40 CE02 | 0020 | 0002 | FFFF'.$sec.$app); + "[$pri3$sep2$sec1$sep2$ter1$sep2$hanquat$app"); $Collator->change(variable => 'Shift-Trimmed'); ok($Collator->viewSortKey("1+2"), - '[0A0C 0A0D | 0020 0020 | 0002 0002 | 039F'.$app); + "[$pri1$sep2$sec2$sep2$ter2$sep2"."039F$app"); ok($Collator->viewSortKey("\x{4E02}"), - '[FB40 CE02 | 0020 | 0002 |'.$app); + "[$pri3$sep2$sec1$sep2$ter1$sep1$app"); $Collator->change(variable => 'Non-ignorable', level => 3); ok($Collator->viewSortKey("1+2"), - '[0A0C 039F 0A0D | 0020 0020 0020 | 0002 0002 0002 |]'); + "[$pri2$sep2$sec3$sep2$ter3$sep1]"); ok($Collator->viewSortKey("\x{4E02}"), - '[FB40 CE02 | 0020 | 0002 |]'); + "[$pri3$sep2$sec1$sep2$ter1$sep1]"); $Collator->change(variable => 'Blanked'); ok($Collator->viewSortKey("1+2"), - '[0A0C 0A0D | 0020 0020 | 0002 0002 |]'); + "[$pri1$sep2$sec2$sep2$ter2$sep1]"); ok($Collator->viewSortKey("\x{4E02}"), - '[FB40 CE02 | 0020 | 0002 |]'); + "[$pri3$sep2$sec1$sep2$ter1$sep1]"); } diff -Nru perl-5.32.1/cpan/version/lib/version/regex.pm perl-5.34.0/cpan/version/lib/version/regex.pm --- perl-5.32.1/cpan/version/lib/version/regex.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/version/lib/version/regex.pm 2020-10-24 18:43:34.000000000 +0000 @@ -2,7 +2,7 @@ use strict; -our $VERSION = 0.9924; +our $VERSION = 0.9928; #--------------------------------------------------------------------------# # Version regexp components diff -Nru perl-5.32.1/cpan/version/lib/version.pm perl-5.34.0/cpan/version/lib/version.pm --- perl-5.32.1/cpan/version/lib/version.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/version/lib/version.pm 2020-10-24 18:43:34.000000000 +0000 @@ -8,7 +8,7 @@ warnings::register_categories(qw/version/); } -our $VERSION = 0.9924; +our $VERSION = 0.9928; our $CLASS = 'version'; our (@ISA, $STRICT, $LAX); diff -Nru perl-5.32.1/cpan/version/lib/version.pod perl-5.34.0/cpan/version/lib/version.pod --- perl-5.32.1/cpan/version/lib/version.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/version/lib/version.pod 2020-10-24 18:43:34.000000000 +0000 @@ -224,11 +224,11 @@ surprising results: $v1 = version->parse("v0.95.0"); - $bool = $v1 < 0.96; # FALSE since 0.96 is v0.960.0 + $bool = $v1 < 0.94; # TRUE since 0.94 is v0.940.0 Always comparing to a version object will help avoid surprises: - $bool = $v1 < version->parse("v0.96.0"); # TRUE + $bool = $v1 < version->parse("v0.94.0"); # FALSE Note that "alpha" version objects (where the version string contains a trailing underscore segment) compare as less than the equivalent diff -Nru perl-5.32.1/cpan/version/t/01base.t perl-5.34.0/cpan/version/t/01base.t --- perl-5.32.1/cpan/version/t/01base.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/version/t/01base.t 2020-10-24 18:43:34.000000000 +0000 @@ -14,7 +14,7 @@ ) ); require $coretests; - use_ok('version', 0.9924); + use_ok('version', 0.9928); } BaseTests("version","new","qv"); @@ -47,3 +47,9 @@ like $@, qr'Usage: version::new\(class, version\)', 'No implicit object creation when called as function'; } + +{ + eval { version::vcmp($^V) }; + like $@, qr{Usage: version::\S+\(lobj, robj, \.\.\.\)}, + 'vcmp method throws error on single argument'; +} diff -Nru perl-5.32.1/cpan/version/t/02derived.t perl-5.34.0/cpan/version/t/02derived.t --- perl-5.32.1/cpan/version/t/02derived.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/version/t/02derived.t 2020-10-24 18:43:34.000000000 +0000 @@ -15,19 +15,19 @@ ) ); require $coretests; - use_ok("version", 0.9924); + use_ok("version", 0.9928); # If we made it this far, we are ok. } use lib qw/./; package version::Bad; -use parent 'version'; +use base 'version'; sub new { my($self,$n)=@_; bless \$n, $self } # Bad subclass for SemVer failures seen with pure Perl version.pm only package version::Bad2; -use parent 'version'; +use base 'version'; sub new { my ($class, $val) = @_; die 'Invalid version string format' unless version::is_strict($val); @@ -50,7 +50,7 @@ print $fh <<"EOF"; # This is an empty subclass package $package; -use parent 'version'; +use base 'version'; our \$VERSION = 0.001; EOF close $fh; diff -Nru perl-5.32.1/cpan/version/t/03require.t perl-5.34.0/cpan/version/t/03require.t --- perl-5.32.1/cpan/version/t/03require.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/version/t/03require.t 2020-10-24 18:43:34.000000000 +0000 @@ -19,7 +19,7 @@ # Don't want to use, because we need to make sure that the import doesn't # fire just yet (some code does this to avoid importing qv() and delare()). require_ok("version"); -is $version::VERSION, 0.9924, "Make sure we have the correct class"; +is $version::VERSION, 0.9928, "Make sure we have the correct class"; ok(!"main"->can("qv"), "We don't have the imported qv()"); ok(!"main"->can("declare"), "We don't have the imported declare()"); diff -Nru perl-5.32.1/cpan/version/t/04strict_lax.t perl-5.34.0/cpan/version/t/04strict_lax.t --- perl-5.32.1/cpan/version/t/04strict_lax.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/version/t/04strict_lax.t 2020-10-24 18:43:34.000000000 +0000 @@ -90,7 +90,7 @@ CASE_DATA require version; - version->import( qw/is_strict is_lax/ ); + 'version'->import( qw/is_strict is_lax/ ); for my $case ( split qr/\n/, $strict_lax_data ) { my ($v, $strict, $lax) = split qr/\t+/, $case; main::ok( $strict eq 'pass' ? is_strict($v) : ! is_strict($v), "is_strict($v) [$strict]" ); diff -Nru perl-5.32.1/cpan/version/t/05sigdie.t perl-5.34.0/cpan/version/t/05sigdie.t --- perl-5.32.1/cpan/version/t/05sigdie.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/version/t/05sigdie.t 2020-10-24 18:43:34.000000000 +0000 @@ -14,7 +14,7 @@ } BEGIN { - use version 0.9924; + use version 0.9928; } pass "Didn't get caught by the wrong DIE handler, which is a good thing"; diff -Nru perl-5.32.1/cpan/version/t/06noop.t perl-5.34.0/cpan/version/t/06noop.t --- perl-5.32.1/cpan/version/t/06noop.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/version/t/06noop.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,10 +7,10 @@ use Test::More qw/no_plan/; BEGIN { - use_ok('version', 0.9924); + use_ok('version', 0.9928); } -my $v1 = version->new('1.2'); +my $v1 = 'version'->new('1.2'); eval {$v1 = $v1 + 1}; like $@, qr/operation not supported with version object/, 'No math ops with version objects'; eval {$v1 = $v1 - 1}; diff -Nru perl-5.32.1/cpan/version/t/07locale.t perl-5.34.0/cpan/version/t/07locale.t --- perl-5.32.1/cpan/version/t/07locale.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/version/t/07locale.t 2020-10-24 18:43:34.000000000 +0000 @@ -11,12 +11,12 @@ use Config; BEGIN { - use_ok('version', 0.9924); + use_ok('version', 0.9928); } SKIP: { - skip 'No locale testing for Perl < 5.6.0', 6 if $] < 5.006; - skip 'No locale testing without d_setlocale', 6 + skip 'No locale testing for Perl < 5.6.0', 7 if $] < 5.006; + skip 'No locale testing without d_setlocale', 7 if(!$Config{d_setlocale}); # test locale handling @@ -44,7 +44,7 @@ setlocale(LC_NUMERIC, $loc); $ver = 1.23; # has to be floating point number ok ($ver eq "1,23", "Using locale: $loc"); - $v = version->new($ver); + $v = 'version'->new($ver); unlike($warning, qr/Version string '1,23' contains invalid data/, "Process locale-dependent floating point"); ok ($v eq "1.23", "Locale doesn't apply to version objects"); @@ -52,7 +52,7 @@ TODO: { # Resolve https://rt.cpan.org/Ticket/Display.html?id=102272 local $TODO = 'Fails for Perl 5.x.0 < 5.19.0' if $] < 5.019000; - $ver = version->new($]); + $ver = 'version'->new($]); is "$ver", "$]", 'Use PV for dualvars'; } setlocale( LC_ALL, $orig_loc); # reset this before possible skip diff -Nru perl-5.32.1/cpan/version/t/08_corelist.t perl-5.34.0/cpan/version/t/08_corelist.t --- perl-5.32.1/cpan/version/t/08_corelist.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/version/t/08_corelist.t 2020-10-24 18:43:34.000000000 +0000 @@ -5,7 +5,7 @@ ######################### use Test::More tests => 3; -use_ok("version", 0.9924); +use_ok("version", 0.9928); # do strict lax tests in a sub to isolate a package to test importing SKIP: { @@ -13,10 +13,10 @@ skip 'No tied hash in Modules::CoreList in Perl', 2 if $@; - my $foo = version->parse($Module::CoreList::version{5.008_000}{base}); + my $foo = "version"->parse($Module::CoreList::version{5.008_000}{base}); is $foo, 1.03, 'Correctly handle tied hash'; - $foo = version->qv($Module::CoreList::version{5.008_000}{Unicode}); + $foo = "version"->qv($Module::CoreList::version{5.008_000}{Unicode}); is $foo, '3.2.0', 'Correctly handle tied hash with dotted decimal'; } diff -Nru perl-5.32.1/cpan/version/t/09_list_util.t perl-5.34.0/cpan/version/t/09_list_util.t --- perl-5.32.1/cpan/version/t/09_list_util.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/version/t/09_list_util.t 2020-10-24 18:43:34.000000000 +0000 @@ -4,7 +4,7 @@ ######################### use strict; -use_ok("version", 0.9924); +use_ok("version", 0.9928); use Test::More; BEGIN { diff -Nru perl-5.32.1/cpan/version/t/10_lyon.t perl-5.34.0/cpan/version/t/10_lyon.t --- perl-5.32.1/cpan/version/t/10_lyon.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/version/t/10_lyon.t 2020-10-24 18:43:34.000000000 +0000 @@ -7,38 +7,38 @@ # These values are from the Lyon consensus, as taken from # https://gist.github.com/dagolden/9559280 -ok(version->new(1.0203) == version->new('1.0203')); -ok(version->new(1.02_03) == version->new('1.02_03')); -ok(version->new(v1.2.3) == version->new('v1.2.3')); +ok('version'->new(1.0203) == 'version'->new('1.0203')); +ok('version'->new(1.02_03) == 'version'->new('1.02_03')); +ok('version'->new(v1.2.3) == 'version'->new('v1.2.3')); if ($] >= 5.008_001) { - ok(version->new(v1.2.3_0) == version->new('v1.2.3_0')); + ok('version'->new(v1.2.3_0) == 'version'->new('v1.2.3_0')); } -cmp_ok(version->new(1.0203), '==', version->new('1.0203')); -cmp_ok(version->new(1.02_03), '==', version->new('1.02_03')); -cmp_ok(version->new(v1.2.3), '==', version->new('v1.2.3')); +cmp_ok('version'->new(1.0203), '==', 'version'->new('1.0203')); +cmp_ok('version'->new(1.02_03), '==', 'version'->new('1.02_03')); +cmp_ok('version'->new(v1.2.3), '==', 'version'->new('v1.2.3')); if ($] >= 5.008_001) { - cmp_ok(version->new(v1.2.3_0), '==', version->new('v1.2.3_0')); + cmp_ok('version'->new(v1.2.3_0), '==', 'version'->new('v1.2.3_0')); } -cmp_ok(version->new('1.0203')->numify, '==', '1.0203'); -is(version->new('1.0203')->normal, 'v1.20.300'); +cmp_ok('version'->new('1.0203')->numify, '==', '1.0203'); +is('version'->new('1.0203')->normal, 'v1.20.300'); -cmp_ok(version->new('1.02_03')->numify, '==', '1.0203'); -is(version->new('1.02_03')->normal, 'v1.20.300'); +cmp_ok('version'->new('1.02_03')->numify, '==', '1.0203'); +is('version'->new('1.02_03')->normal, 'v1.20.300'); -cmp_ok(version->new('v1.2.30')->numify, '==', '1.002030'); -is(version->new('v1.2.30')->normal, 'v1.2.30'); -cmp_ok(version->new('v1.2.3_0')->numify, '==', '1.002030'); -is(version->new('v1.2.3_0')->normal, 'v1.2.30'); - -is(version->new("1.0203")->stringify, "1.0203"); -is(version->new("1.02_03")->stringify, "1.02_03"); -is(version->new("v1.2.30")->stringify, "v1.2.30"); -is(version->new("v1.2.3_0")->stringify, "v1.2.3_0"); -is(version->new(1.0203)->stringify, "1.0203"); -is(version->new(1.02_03)->stringify, "1.0203"); -is(version->new(v1.2.30)->stringify, "v1.2.30"); +cmp_ok('version'->new('v1.2.30')->numify, '==', '1.002030'); +is('version'->new('v1.2.30')->normal, 'v1.2.30'); +cmp_ok('version'->new('v1.2.3_0')->numify, '==', '1.002030'); +is('version'->new('v1.2.3_0')->normal, 'v1.2.30'); + +is('version'->new("1.0203")->stringify, "1.0203"); +is('version'->new("1.02_03")->stringify, "1.02_03"); +is('version'->new("v1.2.30")->stringify, "v1.2.30"); +is('version'->new("v1.2.3_0")->stringify, "v1.2.3_0"); +is('version'->new(1.0203)->stringify, "1.0203"); +is('version'->new(1.02_03)->stringify, "1.0203"); +is('version'->new(v1.2.30)->stringify, "v1.2.30"); if ($] >= 5.008_001) { - is(version->new(v1.2.3_0)->stringify, "v1.2.30"); + is('version'->new(v1.2.3_0)->stringify, "v1.2.30"); } diff -Nru perl-5.32.1/cpan/version/t/coretests.pm perl-5.34.0/cpan/version/t/coretests.pm --- perl-5.32.1/cpan/version/t/coretests.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/version/t/coretests.pm 2020-10-24 18:43:34.000000000 +0000 @@ -435,7 +435,7 @@ (my $package = basename($filename)) =~ s/\.pm$//; print $fh <<"EOF"; package $package; -use parent $CLASS; +use base $CLASS; 1; EOF close $fh; @@ -581,8 +581,8 @@ { # https://rt.cpan.org/Ticket/Display.html?id=88495 @ver::ISA = $CLASS; - is ref(ver->new), 'ver', 'ver can inherit from version'; - is ref(ver->qv("1.2.3")), 'ver', 'ver can inherit from version'; + is ref('ver'->new), 'ver', 'ver can inherit from version'; + is ref('ver'->qv("1.2.3")), 'ver', 'ver can inherit from version'; } { # discovered while integrating with bleadperl diff -Nru perl-5.32.1/cpan/Win32/Makefile.PL perl-5.34.0/cpan/Win32/Makefile.PL --- perl-5.32.1/cpan/Win32/Makefile.PL 2020-12-18 09:58:24.000000000 +0000 +++ perl-5.34.0/cpan/Win32/Makefile.PL 2021-05-04 06:52:48.000000000 +0000 @@ -11,8 +11,28 @@ NAME => 'Win32', VERSION_FROM => 'Win32.pm', INSTALLDIRS => ($] >= 5.008004 && $] < 5.012 ? 'perl' : 'site'), + PREREQ_PM => { + strict => 0, + warnings => 0, + vars => 0, + Exporter => 0, + DynaLoader => 0 + } ); $param{NO_META} = 1 if eval "$ExtUtils::MakeMaker::VERSION" >= 6.10_03; -$param{LIBS} = ['-L/lib/w32api -lole32 -lversion'] if $^O eq "cygwin"; + +if ($^O eq 'cygwin') { + $param{LIBS} = ['-L/lib/w32api -lole32 -lversion -luserenv -lnetapi32'] +} +else { + $param{LIBS} = ['-luserenv'] +} + +my $test_requires = $ExtUtils::MakeMaker::VERSION >= 6.64 + ? 'TEST_REQUIRES' + : 'PREREQ_PM'; + +$param{$test_requires}{'Test'} = 0; +$param{$test_requires}{'File::Temp'} = 0; WriteMakefile(%param); diff -Nru perl-5.32.1/cpan/Win32/t/GetOSName.t perl-5.34.0/cpan/Win32/t/GetOSName.t --- perl-5.32.1/cpan/Win32/t/GetOSName.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Win32/t/GetOSName.t 2020-10-24 18:43:34.000000000 +0000 @@ -100,14 +100,50 @@ ["7 [Ultimate]", "7", 2, 6, 1, 0x01 ], ["8", "8", 2, 6, 2 ], -["2008 [R2]", "2008", 2, 6, 1, 0x00, 2, 89 ], -["2012", "2012", 2, 6, 2, 0x00, 2, 89 ], +["2008 [R2 Standard]", "2008", 2, 6, 1, 0x07, 2, 89 ], +["2012 [Standard]", "2012", 2, 6, 2, 0x07, 2, 89 ], ["[Small Business Server] 2008 R2", "2008", 2, 6, 1, 0x09, 2, 89 ], ["8.1", "8.1", 2, 6, 3 ], ["2012 [R2]", "2012", 2, 6, 3, 0x00, 2, 89 ], +); + +my @win10_tests = ( +["10 [Build 9840]", "10", 2, 10, 0, 0x00, 0, 0, 9840], + +["10 [Version 1507 (Preview Build 9841)]", "10", 2, 10, 0, 0x00, 0, 0, 9841], +["10 [Version 1507 (RTM)]", "10", 2, 10, 0, 0x00, 0, 0, 10240], + +["10 [Version 1511 (November Update) (Preview Build 10525)]", "10", 2, 10, 0, 0x00, 0, 0, 10525], +["10 [Version 1511 (November Update)]", "10", 2, 10, 0, 0x00, 0, 0, 10586], + +["10 [Version 1607 (Anniversary Update) (Preview Build 11082)]", "10", 2, 10, 0, 0x00, 0, 0, 11082], +["10 [Version 1607 (Anniversary Update)]", "10", 2, 10, 0, 0x00, 0, 0, 14393], + +["10 [Version 1703 (Creators Update) (Preview Build 14901)]", "10", 2, 10, 0, 0x00, 0, 0, 14901], +["10 [Version 1703 (Creators Update)]", "10", 2, 10, 0, 0x00, 0, 0, 15063], -["10", "10", 2, 10, 0 ], +["10 [Version 1709 (Fall Creators Update) (Preview Build 16170)]", "10", 2, 10, 0, 0x00, 0, 0, 16170], +["10 [Version 1709 (Fall Creators Update)]", "10", 2, 10, 0, 0x00, 0, 0, 16299], + +["10 [Version 1803 (April 2018 Update) (Preview Build 16353)]", "10", 2, 10, 0, 0x00, 0, 0, 16353], +["10 [Version 1803 (April 2018 Update)]", "10", 2, 10, 0, 0x00, 0, 0, 17134], + +["10 [Version 1809 (October 2018 Update) (Preview Build 17604)]", "10", 2, 10, 0, 0x00, 0, 0, 17604], +["10 [Version 1809 (October 2018 Update)]", "10", 2, 10, 0, 0x00, 0, 0, 17763], + +["10 [Version 1903 (May 2019 Update) (Preview Build 18204)]", "10", 2, 10, 0, 0x00, 0, 0, 18204], +["10 [Version 1903 (May 2019 Update)]", "10", 2, 10, 0, 0x00, 0, 0, 18362], + +["2016 [Version 1607]", "2016", 2, 10, 0, 0x07, 2, 0, 14393], +["2019 [Version 1809]", "2019", 2, 10, 0, 0x07, 2, 0, 17763], + +["Server [Version 1709]", "Server", 2, 10, 0, 0x07, 2, 0, 16299], +["Server [Version 1803]", "Server", 2, 10, 0, 0x07, 2, 0, 17134], +# The 1809 version from the semi-annual channel will identify as "Windows Server 2019 Version 1809" +#["Server [Version 1809]", "Server", 2, 10, 0, 0x07, 2, 0, 17763], +["Server [Version 1903]", "Server", 2, 10, 0, 0x07, 2, 0, 18362], +["Server [Build 12345]", "Server", 2, 10, 0, 0x07, 2, 0, 12345], ); @@ -116,12 +152,12 @@ ["2003 [Enterprise Edition for Itanium-based Systems]", "2003", 2, 5, 2, 0x0002, 2, 0], ); -plan tests => 6 * (@intel_tests + @amd64_tests + 2*@dual_tests + @ia64_tests); +plan tests => 6 * (@intel_tests + @amd64_tests + 2*@dual_tests + @ia64_tests) + 3 * @win10_tests; # Test internal implementation function sub check { my($test, $arch) = @_; - my($pretty, $expect, $id, $major, $minor, $sm, $pt, $metrics) = @$test; + my($pretty, $expect, $id, $major, $minor, $sm, $pt, $metrics, $build) = @$test; $metrics = [$metrics] if defined($metrics) && not ref $metrics; my $tag = ""; @@ -133,7 +169,7 @@ # and 2003/2008 start with "Windows Server" unless ($pretty eq "Win32s") { my $prefix = "Windows"; - $prefix .= " Server" if $pretty =~ /^20(03|08|12)/; + $prefix .= " Server" if $pretty =~ /^20(03|08|12|16|19)/; $pretty = "$prefix $pretty"; } @@ -148,7 +184,7 @@ # We pass the same value for $suitemask and $productinfo. The former is # used for Windows up to 2003, the latter is used for Vista and later. - my($os, $desc) = Win32::_GetOSName("", $major||0, $minor||0, 0, + my($os, $desc) = Win32::_GetOSName("", $major||0, $minor||0, $build, $id, $sm||0, $pt||1, $sm||0, $arch, $metrics); my $display = Win32::GetOSDisplayName($os, $desc); @@ -157,6 +193,8 @@ is($os, "Win$expect", "os: $os"); is($desc, $tag, "desc: $desc"); + next if $major == 10; + my $sp = "Service Pack 42"; ($os, $desc) = Win32::_GetOSName($sp, $major||0, $minor||0, 0, $id, $sm||0, $pt||1, $sm||0, $arch, $metrics); @@ -168,7 +206,7 @@ is($desc, $expect, "desc: $desc"); } -check($_, Win32::PROCESSOR_ARCHITECTURE_INTEL) for @intel_tests, @dual_tests; +check($_, Win32::PROCESSOR_ARCHITECTURE_INTEL) for @intel_tests, @dual_tests, @win10_tests; check($_, Win32::PROCESSOR_ARCHITECTURE_AMD64) for @amd64_tests, @dual_tests; check($_, Win32::PROCESSOR_ARCHITECTURE_IA64) for @ia64_tests; diff -Nru perl-5.32.1/cpan/Win32/t/GetShortPathName.t perl-5.34.0/cpan/Win32/t/GetShortPathName.t --- perl-5.32.1/cpan/Win32/t/GetShortPathName.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Win32/t/GetShortPathName.t 2020-10-24 18:43:34.000000000 +0000 @@ -2,6 +2,16 @@ use Test; use Win32; +BEGIN { + Win32::CreateFile("8dot3test_canary_GetShortPathName $$"); + my $canary = Win32::GetShortPathName("8dot3test_canary_GetShortPathName $$"); + unlink("8dot3test_canary_GetShortPathName $$"); + if ( length $canary > 12 ) { + print "1..0 # Skip: The system and/or current volume is not configured to support short names.\n"; + exit 0; + } +} + my $path = "Long Path $$"; unlink($path); END { unlink $path } diff -Nru perl-5.32.1/cpan/Win32/t/Privileges.t perl-5.34.0/cpan/Win32/t/Privileges.t --- perl-5.32.1/cpan/Win32/t/Privileges.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/cpan/Win32/t/Privileges.t 2021-05-04 06:52:48.000000000 +0000 @@ -0,0 +1,55 @@ +use strict; +use warnings; + +use Test; +use Win32; +use Config; +use File::Temp; + +plan tests => 7; + +ok(ref(Win32::GetProcessPrivileges()) eq 'HASH'); +ok(ref(Win32::GetProcessPrivileges(Win32::GetCurrentProcessId())) eq 'HASH'); + +# All Windows PIDs are divisible by 4. It's an undocumented implementation +# detail, but it means it's extremely unlikely that the PID below is valid. +ok(!Win32::GetProcessPrivileges(3423237)); + +my $whoami = `whoami /priv 2>&1`; +my $skip = ($? == -1 || $? >> 8) ? '"whoami" command is missing' : 0; + +skip($skip, sub{ + my $privs = Win32::GetProcessPrivileges(); + + while ($whoami =~ /^(Se\w+)/mg) { + return 0 unless exists $privs->{$1}; + } + + return 1; +}); + +# there isn't really anything to test, we just want to make sure that the +# function doesn't segfault +Win32::IsDeveloperModeEnabled(); +ok(1); + +Win32::IsSymlinkCreationAllowed(); +ok(1); + +$skip = $^O ne 'MSWin32' ? 'MSWin32-only test' : 0; +$skip ||= !$Config{d_symlink} ? 'this perl doesn\'t have symlink()' : 0; + +skip($skip, sub { + my $tmpdir = File::Temp->newdir; + my $dirname = $tmpdir->dirname; + + if (Win32::IsSymlinkCreationAllowed()) { + # we expect success + return symlink("foo", $tmpdir->dirname . "/new_symlink") == 1; + } + else { + # we expect failure + return symlink("foo", $tmpdir->dirname . "/new_symlink") == 0; + } +}); + diff -Nru perl-5.32.1/cpan/Win32/t/Unicode.t perl-5.34.0/cpan/Win32/t/Unicode.t --- perl-5.32.1/cpan/Win32/t/Unicode.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Win32/t/Unicode.t 2020-10-24 18:43:34.000000000 +0000 @@ -18,6 +18,13 @@ print "1..0 # Skip: Unicode support requires Windows 2000 or later\n"; exit 0; } + Win32::CreateFile("8dot3test_canary_Unicode $$"); + my $canary = Win32::GetShortPathName("8dot3test_canary_Unicode $$"); + unlink("8dot3test_canary_Unicode $$"); + if ( length $canary > 12 ) { + print "1..0 # Skip: The system and/or current volume is not configured to support short names.\n"; + exit 0; + } } my $home = Win32::GetCwd(); diff -Nru perl-5.32.1/cpan/Win32/Win32.pm perl-5.34.0/cpan/Win32/Win32.pm --- perl-5.32.1/cpan/Win32/Win32.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cpan/Win32/Win32.pm 2021-05-04 06:52:48.000000000 +0000 @@ -8,7 +8,7 @@ require DynaLoader; @ISA = qw|Exporter DynaLoader|; - $VERSION = '0.53'; + $VERSION = '0.57'; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; @@ -174,6 +174,7 @@ sub VER_SUITE_TERMINAL () { 0x00000010 } # Terminal Services is installed. This value is always set. # If VER_SUITE_TERMINAL is set but VER_SUITE_SINGLEUSERTS is not set, the system is running in application server mode. sub VER_SUITE_WH_SERVER () { 0x00008000 } # Windows Home Server is installed. +sub VER_SUITE_MULTIUSERTS () { 0x00020000 } # AppServer mode is enabled. sub SM_TABLETPC () { 86 } @@ -359,7 +360,8 @@ $desc =~ s/^\s*//; s/(200.)/$name Server $1/; } - s/^Windows (20(03|08|12))/Windows Server $1/; + s/^Windows (20(03|08|12|16|19))/Windows Server $1/; + s/^Windows SAC/Windows Server/; } } $name .= " $desc" if length $desc; @@ -528,12 +530,12 @@ } } elsif ($minor == 2) { - if ($producttype == VER_NT_WORKSTATION) { - $os = "8"; - } - else { - $os = "2012"; - } + if ($producttype == VER_NT_WORKSTATION) { + $os = "8"; + } + else { + $os = "2012"; + } } elsif ($minor == 3) { if ($producttype == VER_NT_WORKSTATION) { @@ -546,64 +548,130 @@ } } elsif ($major == 10) { - $os = '10'; + if ($producttype == VER_NT_WORKSTATION) { + # Build numbers from https://en.wikipedia.org/wiki/Windows_10_version_history + $os = '10'; + if (9841 <= $build && $build <= 10240) { + $desc = " Version 1507"; + $desc .= " (Preview Build $build)" if $build < 10240; + $desc .= " (RTM)" if $build == 10240; + } + elsif (10525 <= $build && $build <= 10586) { + $desc = " Version 1511 (November Update)"; + $desc .= " (Preview Build $build)" if $build < 10586; + } + elsif (11082 <= $build && $build <= 14393) { + $desc = " Version 1607 (Anniversary Update)"; + $desc .= " (Preview Build $build)" if $build < 14393; + } + elsif (14901 <= $build && $build <= 15063) { + $desc = " Version 1703 (Creators Update)"; + $desc .= " (Preview Build $build)" if $build < 15063; + } + elsif (16170 <= $build && $build <= 16299) { + $desc = " Version 1709 (Fall Creators Update)"; + $desc .= " (Preview Build $build)" if $build < 16299; + } + elsif (16353 <= $build && $build <= 17134) { + $desc = " Version 1803 (April 2018 Update)"; + $desc .= " (Preview Build $build)" if $build < 17134; + } + elsif (17604 <= $build && $build <= 17763) { + $desc = " Version 1809 (October 2018 Update)"; + $desc .= " (Preview Build $build)" if $build < 17763; + } + elsif (18204 <= $build && $build <= 18362) { + $desc = " Version 1903 (May 2019 Update)"; + $desc .= " (Preview Build $build)" if $build < 18362; + } + else { + $desc = " Build $build"; + } + } + else { + if ($build == 14393) { + $os = "2016"; + $desc = "Version 1607"; + } + elsif ($build == 17763) { + $os = "2019"; + $desc = "Version 1809"; + } + else { + $os = "Server"; + if ($build == 16299) { + $desc = "Version 1709"; + } + elsif ($build == 17134) { + $desc = "Version 1803"; + } + elsif ($build == 18362) { + $desc = "Version 1903"; + } + else { + $desc = "Build $build"; + } + } + } } if ($major >= 6) { - if ($productinfo == PRODUCT_ULTIMATE) { - $desc .= " Ultimate"; - } - elsif ($productinfo == PRODUCT_HOME_PREMIUM) { - $desc .= " Home Premium"; - } - elsif ($productinfo == PRODUCT_HOME_BASIC) { - $desc .= " Home Basic"; - } - elsif ($productinfo == PRODUCT_ENTERPRISE) { - $desc .= " Enterprise"; - } - elsif ($productinfo == PRODUCT_BUSINESS) { - # "Windows 7 Business" had a name change to "Windows 7 Professional" - $desc .= $minor == 0 ? " Business" : " Professional"; - } - elsif ($productinfo == PRODUCT_STARTER) { - $desc .= " Starter"; - } - elsif ($productinfo == PRODUCT_CLUSTER_SERVER) { - $desc .= " HPC Server"; - } - elsif ($productinfo == PRODUCT_DATACENTER_SERVER) { - $desc .= " Datacenter"; - } - elsif ($productinfo == PRODUCT_DATACENTER_SERVER_CORE) { - $desc .= " Datacenter Edition (core installation)"; - } - elsif ($productinfo == PRODUCT_ENTERPRISE_SERVER) { - $desc .= " Enterprise"; - } - elsif ($productinfo == PRODUCT_ENTERPRISE_SERVER_CORE) { - $desc .= " Enterprise Edition (core installation)"; - } - elsif ($productinfo == PRODUCT_ENTERPRISE_SERVER_IA64) { - $desc .= " Enterprise Edition for Itanium-based Systems"; - } - elsif ($productinfo == PRODUCT_SMALLBUSINESS_SERVER) { - $desc .= " Small Business Server"; - } - elsif ($productinfo == PRODUCT_SMALLBUSINESS_SERVER_PREMIUM) { - $desc .= " Small Business Server Premium Edition"; - } - elsif ($productinfo == PRODUCT_STANDARD_SERVER) { - $desc .= " Standard"; - } - elsif ($productinfo == PRODUCT_STANDARD_SERVER_CORE) { - $desc .= " Standard Edition (core installation)"; - } - elsif ($productinfo == PRODUCT_WEB_SERVER) { - $desc .= " Web Server"; - } - elsif ($productinfo == PRODUCT_PROFESSIONAL) { - $desc .= " Professional"; + if ($major == 6) { + if ($productinfo == PRODUCT_ULTIMATE) { + $desc .= " Ultimate"; + } + elsif ($productinfo == PRODUCT_HOME_PREMIUM) { + $desc .= " Home Premium"; + } + elsif ($productinfo == PRODUCT_HOME_BASIC) { + $desc .= " Home Basic"; + } + elsif ($productinfo == PRODUCT_ENTERPRISE) { + $desc .= " Enterprise"; + } + elsif ($productinfo == PRODUCT_BUSINESS) { + # "Windows 7 Business" had a name change to "Windows 7 Professional" + $desc .= $minor == 0 ? " Business" : " Professional"; + } + elsif ($productinfo == PRODUCT_STARTER) { + $desc .= " Starter"; + } + elsif ($productinfo == PRODUCT_CLUSTER_SERVER) { + $desc .= " HPC Server"; + } + elsif ($productinfo == PRODUCT_DATACENTER_SERVER) { + $desc .= " Datacenter"; + } + elsif ($productinfo == PRODUCT_DATACENTER_SERVER_CORE) { + $desc .= " Datacenter Edition (core installation)"; + } + elsif ($productinfo == PRODUCT_ENTERPRISE_SERVER) { + $desc .= " Enterprise"; + } + elsif ($productinfo == PRODUCT_ENTERPRISE_SERVER_CORE) { + $desc .= " Enterprise Edition (core installation)"; + } + elsif ($productinfo == PRODUCT_ENTERPRISE_SERVER_IA64) { + $desc .= " Enterprise Edition for Itanium-based Systems"; + } + elsif ($productinfo == PRODUCT_SMALLBUSINESS_SERVER) { + $desc .= " Small Business Server"; + } + elsif ($productinfo == PRODUCT_SMALLBUSINESS_SERVER_PREMIUM) { + $desc .= " Small Business Server Premium Edition"; + } + elsif ($productinfo == PRODUCT_STANDARD_SERVER) { + $desc .= " Standard"; + } + elsif ($productinfo == PRODUCT_STANDARD_SERVER_CORE) { + $desc .= " Standard Edition (core installation)"; + } + elsif ($productinfo == PRODUCT_WEB_SERVER) { + $desc .= " Web Server"; + } + elsif ($productinfo == PRODUCT_PROFESSIONAL) { + $desc .= " Professional"; + } } if ($arch == PROCESSOR_ARCHITECTURE_INTEL) { @@ -612,7 +680,7 @@ elsif ($arch == PROCESSOR_ARCHITECTURE_AMD64) { $desc .= " (64-bit)"; } - } + } } unless (defined $os) { @@ -645,6 +713,27 @@ return ("Win$os", $desc); } +sub IsSymlinkCreationAllowed { + my(undef, $major, $minor, $build) = GetOSVersion(); + + # Vista was the first Windows version with symlink support + return !!0 if $major < 6; + + # Since Windows 10 1703, enabling the developer mode allows to create + # symlinks regardless of process privileges + if ($major > 10 || ($major == 10 && ($minor > 0 || $build > 15063))) { + return !!1 if IsDeveloperModeEnabled(); + } + + my $privs = GetProcessPrivileges(); + + return !!0 unless $privs; + + # It doesn't matter if the permission is enabled or not, it just has to + # exist. CreateSymbolicLink() will automatically enable it when needed. + return exists $privs->{SeCreateSymbolicLinkPrivilege}; +} + # "no warnings 'redefine';" doesn't work for 5.8.7 and earlier local $^W = 0; bootstrap Win32; @@ -998,6 +1087,10 @@ The description will also include tags for other special editions, like "R2", "Media Center", "Tablet PC", or "Starter Edition". +In the Windows 10 / Server Semi-Annual Channel era, the description may +contain the relevant ReleaseId value, but this is only inferred from +the build number, not determined absolutely. + Currently the possible values for the OS name are WinWin32s @@ -1013,6 +1106,12 @@ WinVista Win2008 Win7 + Win8 + Win8.1 + Win10 + Win2016 + Win2019 + WinSAC This routine is just a simple interface into GetOSVersion(). More specific or demanding situations should use that instead. Another @@ -1038,30 +1137,36 @@ Windows NT/2000/XP/2003/Vista/2008/7. In scalar context it returns just the ID. -Currently known values for ID MAJOR and MINOR are as follows: - - OS ID MAJOR MINOR - Win32s 0 - - - Windows 95 1 4 0 - Windows 98 1 4 10 - Windows Me 1 4 90 - - Windows NT 3.51 2 3 51 - Windows NT 4 2 4 0 - - Windows 2000 2 5 0 - Windows XP 2 5 1 - Windows Server 2003 2 5 2 - Windows Server 2003 R2 2 5 2 - Windows Home Server 2 5 2 - - Windows Vista 2 6 0 - Windows Server 2008 2 6 0 - Windows 7 2 6 1 - Windows Server 2008 R2 2 6 1 - Windows 8 2 6 2 - Windows Server 2012 2 6 2 +Currently known values for ID MAJOR MINOR and BUILD are as follows: + OS ID MAJOR MINOR BUILD + Win32s 0 - - - + Windows 95 1 4 0 - + Windows 98 1 4 10 - + Windows Me 1 4 90 - + + Windows NT 3.51 2 3 51 - + Windows NT 4 2 4 0 - + + Windows 2000 2 5 0 - + Windows XP 2 5 1 - + Windows Server 2003 2 5 2 - + Windows Server 2003 R2 2 5 2 - + Windows Home Server 2 5 2 - + + Windows Vista 2 6 0 - + Windows Server 2008 2 6 0 - + Windows 7 2 6 1 - + Windows Server 2008 R2 2 6 1 - + Windows 8 2 6 2 - + Windows Server 2012 2 6 2 - + Windows 8.1 2 6 2 - + Windows Server 2012 R2 2 6 2 - + + Windows 10 2 10 0 - + Windows Server 2016 2 10 0 14393 + Windows Server 2019 2 10 0 17677 + On Windows NT 4 SP6 and later this function returns the following additional values: SPMAJOR, SPMINOR, SUITEMASK, PRODUCTTYPE. @@ -1081,8 +1186,14 @@ identical; the PRODUCTTYPE field must be used to differentiate between them. +For modern Windows releases, the major and minor version numbers are +identical. The PRODUCTTYPE field must be used to differentiate between +Windows 10 and Server releases. The BUILD field is used to +differentiate Windows Server versions: currently 2016, 2019, and +Semi-Annual Channel releases. + SPMAJOR and SPMINOR are the version numbers of the latest -installed service pack. +installed service pack. (In the Windows 10 era, these are unused.) SUITEMASK is a bitfield identifying the product suites available on the system. Known bits are: @@ -1103,6 +1214,7 @@ VER_SUITE_STORAGE_SERVER 0x00002000 VER_SUITE_COMPUTE_SERVER 0x00004000 VER_SUITE_WH_SERVER 0x00008000 + VER_SUITE_MULTIUSERTS 0x00020000 The VER_SUITE_xxx names are listed here to cross reference the Microsoft documentation. The Win32 module does not provide symbolic names for these @@ -1142,6 +1254,25 @@ the mist of time. Use the Win32::API module instead of this deprecated function. +=item Win32::GetProcessPrivileges([PID]) + +Returns a reference to a hash holding the information about the privileges +held by the specified process. The keys are privilege names, and the values +are booleans indicating whether a given privilege is currently enabled or not. + +If the optional PID parameter is omitted, the function queries the current +process. + +Example return value: + + { + SeTimeZonePrivilege => 0, + SeShutdownPrivilege => 0, + SeUndockPrivilege => 0, + SeIncreaseWorkingSetPrivilege => 0, + SeChangeNotifyPrivilege => 1 + } + =item Win32::GetProductInfo(OSMAJOR, OSMINOR, SPMAJOR, SPMINOR) Retrieves the product type for the operating system on the local @@ -1194,6 +1325,17 @@ and prints a warning if an error occurred. This function always returns 1 on Win9X. +=item Win32::IsDeveloperModeEnabled() + +Returns true if the developer mode is currently enabled. It always returns +false on Windows versions older than Windows 10. + +=item Win32::IsSymlinkCreationAllowed() + +Returns true if the current process is allowed to create symbolic links. This +function is a convenience wrapper around Win32::GetProcessPrivileges() and +Win32::IsDeveloperModeEnabled(). + =item Win32::IsWinNT() [CORE] Returns non zero if the Win32 subsystem is Windows NT. @@ -1332,4 +1474,37 @@ =back +=head1 CAVEATS + +=head2 Short Path Names + +There are many situations in which modern Windows systems will not have +the L +(also called 8.3 or MS-DOS) alias for long file names available. + +Short path support can be configured system-wide via the registry, +but the default on modern systems is to configure short path usage per +volume. The configuration for a volume can be queried in a number of ways, +but these may either be unreliable or require elevated (administrator) +privileges. + +Typically, the configuration for a volume can be queried using the C +utility, e.g. C. On the C level, it can be queried +with a C request to the +C API call, as described in +L. +However, both of these methods require administrator privileges to work. + +The Win32 module does not perform any per-volume check and simply fetches +short path names in the same manner as the underlying Windows API call it +uses: If short path names are disabled, the call will still succeed but the +long name will actually be returned. + +Note that on volumes where this happens, C usually cannot be +used to return useful filenames for files that contain unicode characters. +(In code page 65001, this may still work.) Handling unicode filenames in this +legacy manner relies upon C returning 8.3 filenames, but +without short name support, it will return the filename with all unicode +characters replaced by question mark characters. + =cut diff -Nru perl-5.32.1/cpan/Win32/Win32.xs perl-5.34.0/cpan/Win32/Win32.xs --- perl-5.32.1/cpan/Win32/Win32.xs 2020-12-18 09:58:24.000000000 +0000 +++ perl-5.34.0/cpan/Win32/Win32.xs 2021-05-04 06:52:48.000000000 +0000 @@ -1,9 +1,12 @@ #define WIN32_LEAN_AND_MEAN +#define _WIN32_WINNT 0x0500 #include #include #include #include #include +#include +#include #define PERL_NO_GET_CONTEXT #include "EXTERN.h" @@ -22,27 +25,12 @@ #define GETPROC(fn) pfn##fn = (PFN##fn)GetProcAddress(module, #fn) -typedef BOOL (WINAPI *PFNSHGetSpecialFolderPathA)(HWND, char*, int, BOOL); -typedef BOOL (WINAPI *PFNSHGetSpecialFolderPathW)(HWND, WCHAR*, int, BOOL); -typedef HRESULT (WINAPI *PFNSHGetFolderPathA)(HWND, int, HANDLE, DWORD, LPTSTR); -typedef HRESULT (WINAPI *PFNSHGetFolderPathW)(HWND, int, HANDLE, DWORD, LPWSTR); -typedef BOOL (WINAPI *PFNCreateEnvironmentBlock)(void**, HANDLE, BOOL); -typedef BOOL (WINAPI *PFNDestroyEnvironmentBlock)(void*); typedef int (__stdcall *PFNDllRegisterServer)(void); typedef int (__stdcall *PFNDllUnregisterServer)(void); -typedef DWORD (__stdcall *PFNNetApiBufferFree)(void*); -typedef DWORD (__stdcall *PFNNetWkstaGetInfo)(LPWSTR, DWORD, void*); - -typedef BOOL (__stdcall *PFNOpenProcessToken)(HANDLE, DWORD, HANDLE*); -typedef BOOL (__stdcall *PFNOpenThreadToken)(HANDLE, DWORD, BOOL, HANDLE*); -typedef BOOL (__stdcall *PFNGetTokenInformation)(HANDLE, TOKEN_INFORMATION_CLASS, void*, DWORD, DWORD*); -typedef BOOL (__stdcall *PFNAllocateAndInitializeSid)(PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD, - DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, PSID*); -typedef BOOL (__stdcall *PFNEqualSid)(PSID, PSID); -typedef void* (__stdcall *PFNFreeSid)(PSID); typedef BOOL (__stdcall *PFNIsUserAnAdmin)(void); typedef BOOL (WINAPI *PFNGetProductInfo)(DWORD, DWORD, DWORD, DWORD, DWORD*); typedef void (WINAPI *PFNGetNativeSystemInfo)(LPSYSTEM_INFO lpSystemInfo); +typedef LONG (WINAPI *PFNRegGetValueA)(HKEY, LPCSTR, LPCSTR, DWORD, LPDWORD, PVOID, LPDWORD); #ifndef CSIDL_MYMUSIC # define CSIDL_MYMUSIC 0x000D @@ -133,24 +121,6 @@ #define ONE_K_BUFSIZE 1024 -int -IsWin95(void) -{ - return (g_osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS); -} - -int -IsWinNT(void) -{ - return (g_osver.dwPlatformId == VER_PLATFORM_WIN32_NT); -} - -int -IsWin2000(void) -{ - return (g_osver.dwMajorVersion > 4); -} - /* Convert SV to wide character string. The return value must be * freed using Safefree(). */ @@ -208,70 +178,38 @@ SV *sv = NULL; void *env; HANDLE token; - HMODULE module; - PFNOpenProcessToken pfnOpenProcessToken; /* Get security token for the current process owner */ - module = LoadLibrary("advapi32.dll"); - if (!module) - return NULL; - - GETPROC(OpenProcessToken); - - if (pfnOpenProcessToken == NULL || - !pfnOpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_DUPLICATE, &token)) + if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_DUPLICATE, &token)) { - FreeLibrary(module); return NULL; } - FreeLibrary(module); /* Create a Unicode environment block for this process */ - module = LoadLibrary("userenv.dll"); - if (module) { - PFNCreateEnvironmentBlock pfnCreateEnvironmentBlock; - PFNDestroyEnvironmentBlock pfnDestroyEnvironmentBlock; - - GETPROC(CreateEnvironmentBlock); - GETPROC(DestroyEnvironmentBlock); - - if (pfnCreateEnvironmentBlock && pfnDestroyEnvironmentBlock && - pfnCreateEnvironmentBlock(&env, token, FALSE)) - { - size_t name_len = wcslen(name); - WCHAR *entry = (WCHAR *)env; - while (*entry) { - size_t i; - size_t entry_len = wcslen(entry); - BOOL equal = (entry_len > name_len) && (entry[name_len] == '='); - - for (i=0; equal && i < name_len; ++i) - equal = (towupper(entry[i]) == towupper(name[i])); - - if (equal) { - sv = wstr_to_sv(aTHX_ entry+name_len+1); - break; - } - entry += entry_len+1; + if (CreateEnvironmentBlock(&env, token, FALSE)) + { + size_t name_len = wcslen(name); + WCHAR *entry = (WCHAR *)env; + while (*entry) { + size_t i; + size_t entry_len = wcslen(entry); + BOOL equal = (entry_len > name_len) && (entry[name_len] == '='); + + for (i=0; equal && i < name_len; ++i) + equal = (towupper(entry[i]) == towupper(name[i])); + + if (equal) { + sv = wstr_to_sv(aTHX_ entry+name_len+1); + break; } - pfnDestroyEnvironmentBlock(env); + entry += entry_len+1; } - FreeLibrary(module); + DestroyEnvironmentBlock(env); } CloseHandle(token); return sv; } -/* Define both an ANSI and a Wide version of win32_longpath */ - -#define CHAR_T char -#define WIN32_FIND_DATA_T WIN32_FIND_DATAA -#define FN_FINDFIRSTFILE FindFirstFileA -#define FN_STRLEN strlen -#define FN_STRCPY strcpy -#define LONGPATH my_longpathA -#include "longpath.inc" - #define CHAR_T WCHAR #define WIN32_FIND_DATA_T WIN32_FIND_DATAW #define FN_FINDFIRSTFILE FindFirstFileW @@ -347,20 +285,10 @@ get_childdir(void) { dTHX; - char* ptr; + WCHAR filename[MAX_PATH+1]; - if (IsWin2000()) { - WCHAR filename[MAX_PATH+1]; - GetCurrentDirectoryW(MAX_PATH+1, filename); - ptr = my_ansipath(filename); - } - else { - char filename[MAX_PATH+1]; - GetCurrentDirectoryA(MAX_PATH+1, filename); - New(0, ptr, strlen(filename)+1, char); - strcpy(ptr, filename); - } - return ptr; + GetCurrentDirectoryW(MAX_PATH+1, filename); + return my_ansipath(filename); } void @@ -389,23 +317,17 @@ XS(w32_ExpandEnvironmentStrings) { dXSARGS; + WCHAR value[31*1024]; + WCHAR *source; if (items != 1) croak("usage: Win32::ExpandEnvironmentStrings($String)"); - if (IsWin2000()) { - WCHAR value[31*1024]; - WCHAR *source = sv_to_wstr(aTHX_ ST(0)); - ExpandEnvironmentStringsW(source, value, countof(value)-1); - ST(0) = wstr_to_sv(aTHX_ value); - Safefree(source); - XSRETURN(1); - } - else { - char value[31*1024]; - ExpandEnvironmentStringsA(SvPV_nolen(ST(0)), value, countof(value)-2); - XSRETURN_PV(value); - } + source = sv_to_wstr(aTHX_ ST(0)); + ExpandEnvironmentStringsW(source, value, countof(value)-1); + ST(0) = wstr_to_sv(aTHX_ value); + Safefree(source); + XSRETURN(1); } XS(w32_IsAdminUser) @@ -413,12 +335,6 @@ dXSARGS; HMODULE module; PFNIsUserAnAdmin pfnIsUserAnAdmin; - PFNOpenThreadToken pfnOpenThreadToken; - PFNOpenProcessToken pfnOpenProcessToken; - PFNGetTokenInformation pfnGetTokenInformation; - PFNAllocateAndInitializeSid pfnAllocateAndInitializeSid; - PFNEqualSid pfnEqualSid; - PFNFreeSid pfnFreeSid; HANDLE hTok; DWORD dwTokInfoLen; TOKEN_GROUPS *lpTokInfo; @@ -430,97 +346,61 @@ if (items) croak("usage: Win32::IsAdminUser()"); - /* There is no concept of "Administrator" user accounts on Win9x systems, - so just return true. */ - if (IsWin95()) - XSRETURN_YES; - /* Use IsUserAnAdmin() when available. On Vista this will only return TRUE * if the process is running with elevated privileges and not just when the * process owner is a member of the "Administrators" group. */ - module = LoadLibrary("shell32.dll"); - if (module) { - GETPROC(IsUserAnAdmin); - if (pfnIsUserAnAdmin) { - EXTEND(SP, 1); - ST(0) = sv_2mortal(newSViv(pfnIsUserAnAdmin() ? 1 : 0)); - FreeLibrary(module); - XSRETURN(1); - } - FreeLibrary(module); - } - - module = LoadLibrary("advapi32.dll"); - if (!module) { - warn("Cannot load advapi32.dll library"); - XSRETURN_UNDEF; - } - - GETPROC(OpenThreadToken); - GETPROC(OpenProcessToken); - GETPROC(GetTokenInformation); - GETPROC(AllocateAndInitializeSid); - GETPROC(EqualSid); - GETPROC(FreeSid); - - if (!(pfnOpenThreadToken && pfnOpenProcessToken && - pfnGetTokenInformation && pfnAllocateAndInitializeSid && - pfnEqualSid && pfnFreeSid)) - { - warn("Cannot load functions from advapi32.dll library"); - FreeLibrary(module); - XSRETURN_UNDEF; + module = GetModuleHandleA("shell32.dll"); + GETPROC(IsUserAnAdmin); + if (pfnIsUserAnAdmin) { + EXTEND(SP, 1); + ST(0) = sv_2mortal(newSViv(pfnIsUserAnAdmin() ? 1 : 0)); + XSRETURN(1); } - if (!pfnOpenThreadToken(GetCurrentThread(), TOKEN_QUERY, FALSE, &hTok)) { - if (!pfnOpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hTok)) { + if (!OpenThreadToken(GetCurrentThread(), TOKEN_QUERY, FALSE, &hTok)) { + if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hTok)) { warn("Cannot open thread token or process token"); - FreeLibrary(module); XSRETURN_UNDEF; } } - pfnGetTokenInformation(hTok, TokenGroups, NULL, 0, &dwTokInfoLen); + GetTokenInformation(hTok, TokenGroups, NULL, 0, &dwTokInfoLen); if (!New(1, lpTokInfo, dwTokInfoLen, TOKEN_GROUPS)) { warn("Cannot allocate token information structure"); CloseHandle(hTok); - FreeLibrary(module); XSRETURN_UNDEF; } - if (!pfnGetTokenInformation(hTok, TokenGroups, lpTokInfo, dwTokInfoLen, + if (!GetTokenInformation(hTok, TokenGroups, lpTokInfo, dwTokInfoLen, &dwTokInfoLen)) { warn("Cannot get token information"); Safefree(lpTokInfo); CloseHandle(hTok); - FreeLibrary(module); XSRETURN_UNDEF; } - if (!pfnAllocateAndInitializeSid(&NtAuth, 2, SECURITY_BUILTIN_DOMAIN_RID, + if (!AllocateAndInitializeSid(&NtAuth, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &pAdminSid)) { warn("Cannot allocate administrators' SID"); Safefree(lpTokInfo); CloseHandle(hTok); - FreeLibrary(module); XSRETURN_UNDEF; } iRetVal = 0; for (i = 0; i < lpTokInfo->GroupCount; ++i) { - if (pfnEqualSid(lpTokInfo->Groups[i].Sid, pAdminSid)) { + if (EqualSid(lpTokInfo->Groups[i].Sid, pAdminSid)) { iRetVal = 1; break; } } - pfnFreeSid(pAdminSid); + FreeSid(pAdminSid); Safefree(lpTokInfo); CloseHandle(hTok); - FreeLibrary(module); EXTEND(SP, 1); ST(0) = sv_2mortal(newSViv(iRetVal)); @@ -681,30 +561,23 @@ dXSARGS; DWORD flags = MB_ICONEXCLAMATION; I32 result; + WCHAR *title = NULL, *msg; if (items < 1 || items > 3) croak("usage: Win32::MsgBox($message [, $flags [, $title]])"); + msg = sv_to_wstr(aTHX_ ST(0)); if (items > 1) flags = (DWORD)SvIV(ST(1)); + if (items > 2) + title = sv_to_wstr(aTHX_ ST(2)); + + result = MessageBoxW(GetActiveWindow(), msg, title ? title : L"Perl", flags); + + Safefree(msg); + if (title) + Safefree(title); - if (IsWin2000()) { - WCHAR *title = NULL; - WCHAR *msg = sv_to_wstr(aTHX_ ST(0)); - if (items > 2) - title = sv_to_wstr(aTHX_ ST(2)); - result = MessageBoxW(GetActiveWindow(), msg, title ? title : L"Perl", flags); - Safefree(msg); - if (title) - Safefree(title); - } - else { - const char *title = "Perl"; - char *msg = SvPV_nolen(ST(0)); - if (items > 2) - title = SvPV_nolen(ST(2)); - result = MessageBoxA(GetActiveWindow(), msg, title, flags); - } XSRETURN_IV(result); } @@ -845,11 +718,9 @@ XS(w32_GetFolderPath) { dXSARGS; - char path[MAX_PATH+1]; WCHAR wpath[MAX_PATH+1]; int folder; int create = 0; - HMODULE module; if (items != 1 && items != 2) croak("usage: Win32::GetFolderPath($csidl [, $create])\n"); @@ -858,51 +729,21 @@ if (items == 2) create = SvTRUE(ST(1)) ? CSIDL_FLAG_CREATE : 0; - module = LoadLibrary("shfolder.dll"); - if (module) { - PFNSHGetFolderPathA pfna; - if (IsWin2000()) { - PFNSHGetFolderPathW pfnw; - pfnw = (PFNSHGetFolderPathW)GetProcAddress(module, "SHGetFolderPathW"); - if (pfnw && SUCCEEDED(pfnw(NULL, folder|create, NULL, 0, wpath))) { - FreeLibrary(module); - ST(0) = wstr_to_ansipath(aTHX_ wpath); - XSRETURN(1); - } - } - pfna = (PFNSHGetFolderPathA)GetProcAddress(module, "SHGetFolderPathA"); - if (pfna && SUCCEEDED(pfna(NULL, folder|create, NULL, 0, path))) { - FreeLibrary(module); - XSRETURN_PV(path); - } - FreeLibrary(module); + if (SUCCEEDED(SHGetFolderPathW(NULL, folder|create, NULL, 0, wpath))) { + ST(0) = wstr_to_ansipath(aTHX_ wpath); + XSRETURN(1); } - module = LoadLibrary("shell32.dll"); - if (module) { - PFNSHGetSpecialFolderPathA pfna; - if (IsWin2000()) { - PFNSHGetSpecialFolderPathW pfnw; - pfnw = (PFNSHGetSpecialFolderPathW)GetProcAddress(module, "SHGetSpecialFolderPathW"); - if (pfnw && pfnw(NULL, wpath, folder, !!create)) { - FreeLibrary(module); - ST(0) = wstr_to_ansipath(aTHX_ wpath); - XSRETURN(1); - } - } - pfna = (PFNSHGetSpecialFolderPathA)GetProcAddress(module, "SHGetSpecialFolderPathA"); - if (pfna && pfna(NULL, path, folder, !!create)) { - FreeLibrary(module); - XSRETURN_PV(path); - } - FreeLibrary(module); + if (SHGetSpecialFolderPathW(NULL, wpath, folder, !!create)) { + ST(0) = wstr_to_ansipath(aTHX_ wpath); + XSRETURN(1); } /* SHGetFolderPathW() and SHGetSpecialFolderPathW() may fail on older * Perl versions that have replaced the Unicode environment with an * ANSI version. Let's go spelunking in the registry now... */ - if (IsWin2000()) { + { SV *sv; HKEY hkey; HKEY root = HKEY_CURRENT_USER; @@ -1101,7 +942,7 @@ if (items != 1) Perl_croak(aTHX_ "usage: Win32::SetCwd($cwd)"); - if (IsWin2000() && SvUTF8(ST(0))) { + if (SvUTF8(ST(0))) { WCHAR *wide = sv_to_wstr(aTHX_ ST(0)); char *ansi = my_ansipath(wide); int rc = PerlDir_chdir(ansi); @@ -1158,26 +999,19 @@ XS(w32_LoginName) { dXSARGS; + WCHAR name[128]; + DWORD size = countof(name); + if (items) Perl_croak(aTHX_ "usage: Win32::LoginName()"); + EXTEND(SP,1); - if (IsWin2000()) { - WCHAR name[128]; - DWORD size = countof(name); - if (GetUserNameW(name, &size)) { - ST(0) = wstr_to_sv(aTHX_ name); - XSRETURN(1); - } - } - else { - char name[128]; - DWORD size = countof(name); - if (GetUserNameA(name, &size)) { - /* size includes NULL */ - ST(0) = sv_2mortal(newSVpvn(name, size-1)); - XSRETURN(1); - } + + if (GetUserNameW(name, &size)) { + ST(0) = wstr_to_sv(aTHX_ name); + XSRETURN(1); } + XSRETURN_UNDEF; } @@ -1201,65 +1035,31 @@ XS(w32_DomainName) { dXSARGS; - HMODULE module = LoadLibrary("netapi32.dll"); - PFNNetApiBufferFree pfnNetApiBufferFree = NULL; - PFNNetWkstaGetInfo pfnNetWkstaGetInfo = NULL; + char dname[256]; + DWORD dnamelen = sizeof(dname); + WKSTA_INFO_100 *pwi; + DWORD retval; if (items) Perl_croak(aTHX_ "usage: Win32::DomainName()"); - if (module) { - GETPROC(NetApiBufferFree); - GETPROC(NetWkstaGetInfo); - } + EXTEND(SP,1); - if (module && pfnNetWkstaGetInfo && pfnNetApiBufferFree) { - /* this way is more reliable, in case user has a local account. */ - char dname[256]; - DWORD dnamelen = sizeof(dname); - struct { - DWORD wki100_platform_id; - LPWSTR wki100_computername; - LPWSTR wki100_langroup; - DWORD wki100_ver_major; - DWORD wki100_ver_minor; - } *pwi; - DWORD retval; - retval = pfnNetWkstaGetInfo(NULL, 100, &pwi); - /* NERR_Success *is* 0*/ - if (retval == 0) { - if (pwi->wki100_langroup && *(pwi->wki100_langroup)) { - WideCharToMultiByte(CP_ACP, 0, pwi->wki100_langroup, - -1, (LPSTR)dname, dnamelen, NULL, NULL); - } - else { - WideCharToMultiByte(CP_ACP, 0, pwi->wki100_computername, - -1, (LPSTR)dname, dnamelen, NULL, NULL); - } - pfnNetApiBufferFree(pwi); - FreeLibrary(module); - XSRETURN_PV(dname); - } - FreeLibrary(module); - SetLastError(retval); - } - else { - /* Win95 doesn't have NetWksta*(), so do it the old way */ - char name[256]; - DWORD size = sizeof(name); - if (module) - FreeLibrary(module); - if (GetUserName(name,&size)) { - char sid[ONE_K_BUFSIZE]; - DWORD sidlen = sizeof(sid); - char dname[256]; - DWORD dnamelen = sizeof(dname); - SID_NAME_USE snu; - if (LookupAccountName(NULL, name, (PSID)&sid, &sidlen, - dname, &dnamelen, &snu)) { - XSRETURN_PV(dname); /* all that for this */ - } - } + + retval = NetWkstaGetInfo(NULL, 100, (LPBYTE*)&pwi); + /* NERR_Success *is* 0*/ + if (retval == 0) { + if (pwi->wki100_langroup && *(pwi->wki100_langroup)) { + WideCharToMultiByte(CP_ACP, 0, pwi->wki100_langroup, + -1, (LPSTR)dname, dnamelen, NULL, NULL); + } + else { + WideCharToMultiByte(CP_ACP, 0, pwi->wki100_computername, + -1, (LPSTR)dname, dnamelen, NULL, NULL); + } + NetApiBufferFree(pwi); + XSRETURN_PV(dname); } + SetLastError(retval); XSRETURN_UNDEF; } @@ -1315,7 +1115,7 @@ if (items) Perl_croak(aTHX_ "usage: Win32::IsWinNT()"); EXTEND(SP,1); - XSRETURN_IV(IsWinNT()); + XSRETURN_IV(g_osver.dwPlatformId == VER_PLATFORM_WIN32_NT); } XS(w32_IsWin95) @@ -1324,7 +1124,7 @@ if (items) Perl_croak(aTHX_ "usage: Win32::IsWin95()"); EXTEND(SP,1); - XSRETURN_IV(IsWin95()); + XSRETURN_IV(g_osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS); } XS(w32_FormatMessage) @@ -1383,8 +1183,6 @@ &stProcInfo)) /* <- Process info (if OK) */ { int pid = (int)stProcInfo.dwProcessId; - if (IsWin95() && pid < 0) - pid = -pid; sv_setiv(ST(2), pid); CloseHandle(stProcInfo.hThread);/* library source code does this. */ bSuccess = TRUE; @@ -1409,41 +1207,21 @@ XS(w32_GetShortPathName) { dXSARGS; - SV *shortpath; DWORD len; + WCHAR wshort[MAX_PATH+1], *wlong; if (items != 1) Perl_croak(aTHX_ "usage: Win32::GetShortPathName($longPathName)"); - if (IsWin2000()) { - WCHAR wshort[MAX_PATH+1]; - WCHAR *wlong = sv_to_wstr(aTHX_ ST(0)); - len = GetShortPathNameW(wlong, wshort, countof(wshort)); - Safefree(wlong); - if (len && len < sizeof(wshort)) { - ST(0) = wstr_to_sv(aTHX_ wshort); - XSRETURN(1); - } - XSRETURN_UNDEF; - } - - shortpath = sv_mortalcopy(ST(0)); - SvUPGRADE(shortpath, SVt_PV); - if (!SvPVX(shortpath) || !SvLEN(shortpath)) - XSRETURN_UNDEF; + wlong = sv_to_wstr(aTHX_ ST(0)); + len = GetShortPathNameW(wlong, wshort, countof(wshort)); + Safefree(wlong); - /* src == target is allowed */ - do { - len = GetShortPathName(SvPVX(shortpath), - SvPVX(shortpath), - (DWORD)SvLEN(shortpath)); - } while (len >= SvLEN(shortpath) && sv_grow(shortpath,len+1)); - if (len) { - SvCUR_set(shortpath,len); - *SvEND(shortpath) = '\0'; - ST(0) = shortpath; - XSRETURN(1); + if (len && len < sizeof(wshort)) { + ST(0) = wstr_to_sv(aTHX_ wshort); + XSRETURN(1); } + XSRETURN_UNDEF; } @@ -1467,7 +1245,7 @@ Perl_croak(aTHX_ "usage: Win32::GetFullPathName($filename)"); #if __CYGWIN__ || !defined(PERL_IMPLICIT_SYS) - if (IsWin2000()) { + { WCHAR *filename = sv_to_wstr(aTHX_ ST(0)); WCHAR full[2*MAX_PATH]; DWORD len = GetFullPathNameW(filename, countof(full), full, NULL); @@ -1476,12 +1254,6 @@ XSRETURN_EMPTY; ansi = fullname = my_ansipath(full); } - else { - DWORD len = GetFullPathNameA(SvPV_nolen(ST(0)), countof(buffer), buffer, NULL); - if (len == 0 || len >= countof(buffer)) - XSRETURN_EMPTY; - fullname = buffer; - } #else /* Don't use my_ansipath() unless the $filename argument is in Unicode. * If the relative path doesn't exist, GetShortPathName() will fail and @@ -1492,7 +1264,7 @@ * XXX The one missing case is where we could downgrade $filename * XXX from UTF8 into the current codepage. */ - if (IsWin2000() && SvUTF8(ST(0))) { + if (SvUTF8(ST(0))) { WCHAR *filename = sv_to_wstr(aTHX_ ST(0)); WCHAR *mappedname = PerlDir_mapW(filename); Safefree(filename); @@ -1552,43 +1324,23 @@ XS(w32_GetLongPathName) { dXSARGS; + WCHAR *wstr, *long_path, wide_path[MAX_PATH+1]; if (items != 1) Perl_croak(aTHX_ "usage: Win32::GetLongPathName($pathname)"); - if (IsWin2000()) { - WCHAR *wstr = sv_to_wstr(aTHX_ ST(0)); - WCHAR wide_path[MAX_PATH+1]; - WCHAR *long_path; - - if (wcslen(wstr) < (size_t)countof(wide_path)) { - wcscpy(wide_path, wstr); - long_path = my_longpathW(wide_path); - if (long_path) { - Safefree(wstr); - ST(0) = wstr_to_sv(aTHX_ long_path); - XSRETURN(1); - } - } - Safefree(wstr); - } - else { - SV *path; - char tmpbuf[MAX_PATH+1]; - char *pathstr; - STRLEN len; + wstr = sv_to_wstr(aTHX_ ST(0)); - path = ST(0); - pathstr = SvPV(path,len); - if (len < sizeof(tmpbuf)) { - strcpy(tmpbuf, pathstr); - pathstr = my_longpathA(tmpbuf); - if (pathstr) { - ST(0) = sv_2mortal(newSVpvn(pathstr, strlen(pathstr))); - XSRETURN(1); - } + if (wcslen(wstr) < (size_t)countof(wide_path)) { + wcscpy(wide_path, wstr); + long_path = my_longpathW(wide_path); + if (long_path) { + Safefree(wstr); + ST(0) = wstr_to_sv(aTHX_ long_path); + XSRETURN(1); } } + Safefree(wstr); XSRETURN_EMPTY; } @@ -1678,7 +1430,7 @@ if (items != 1) Perl_croak(aTHX_ "usage: Win32::CreateDirectory($dir)"); - if (IsWin2000() && SvUTF8(ST(0))) { + if (SvUTF8(ST(0))) { WCHAR *dir = sv_to_wstr(aTHX_ ST(0)); result = CreateDirectoryW(dir, NULL); Safefree(dir); @@ -1699,7 +1451,7 @@ if (items != 1) Perl_croak(aTHX_ "usage: Win32::CreateFile($file)"); - if (IsWin2000() && SvUTF8(ST(0))) { + if (SvUTF8(ST(0))) { WCHAR *file = sv_to_wstr(aTHX_ ST(0)); handle = CreateFileW(file, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL); @@ -1806,6 +1558,130 @@ XSRETURN_IV(SetConsoleOutputCP((int)SvIV(ST(0)))); } +XS(w32_GetProcessPrivileges) +{ + dXSARGS; + BOOL ret; + HV *priv_hv; + HANDLE proc_handle, token; + char *priv_name = NULL; + TOKEN_PRIVILEGES *privs = NULL; + DWORD i, pid, priv_name_len = 100, privs_len = 300; + + if (items > 1) + Perl_croak(aTHX_ "usage: Win32::GetProcessPrivileges([$pid])"); + + if (items == 0) { + EXTEND(SP, 1); + pid = GetCurrentProcessId(); + } + else { + pid = (DWORD)SvUV(ST(0)); + } + + proc_handle = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid); + + if (!proc_handle) + XSRETURN_NO; + + ret = OpenProcessToken(proc_handle, TOKEN_QUERY, &token); + CloseHandle(proc_handle); + + if (!ret) + XSRETURN_NO; + + do { + Renewc(privs, privs_len, char, TOKEN_PRIVILEGES); + ret = GetTokenInformation( + token, TokenPrivileges, privs, privs_len, &privs_len + ); + } while (!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER); + + CloseHandle(token); + + if (!ret) { + Safefree(privs); + XSRETURN_NO; + } + + priv_hv = newHV(); + New(0, priv_name, priv_name_len, char); + + for (i = 0; i < privs->PrivilegeCount; ++i) { + DWORD ret_len = 0; + LUID_AND_ATTRIBUTES *priv = &privs->Privileges[i]; + BOOL is_enabled = !!(priv->Attributes & SE_PRIVILEGE_ENABLED); + + if (priv->Attributes & SE_PRIVILEGE_REMOVED) + continue; + + do { + ret_len = priv_name_len; + ret = LookupPrivilegeNameA( + NULL, &priv->Luid, priv_name, &ret_len + ); + + if (ret_len > priv_name_len) { + priv_name_len = ret_len + 1; + Renew(priv_name, priv_name_len, char); + } + } while (!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER); + + if (!ret) { + SvREFCNT_dec((SV*)priv_hv); + Safefree(privs); + Safefree(priv_name); + XSRETURN_NO; + } + + hv_store(priv_hv, priv_name, ret_len, newSViv(is_enabled), 0); + } + + Safefree(privs); + Safefree(priv_name); + + ST(0) = sv_2mortal(newRV_noinc((SV*)priv_hv)); + XSRETURN(1); +} + +XS(w32_IsDeveloperModeEnabled) +{ + dXSARGS; + LONG status; + DWORD val, val_size = sizeof(val); + PFNRegGetValueA pfnRegGetValueA; + HMODULE module; + + if (items) + Perl_croak(aTHX_ "usage: Win32::IsDeveloperModeEnabled()"); + + EXTEND(SP, 1); + + /* developer mode was introduced in Windows 10 */ + if (g_osver.dwMajorVersion < 10) + XSRETURN_NO; + + module = GetModuleHandleA("advapi32.dll"); + GETPROC(RegGetValueA); + if (!pfnRegGetValueA) + XSRETURN_NO; + + status = pfnRegGetValueA( + HKEY_LOCAL_MACHINE, + "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\AppModelUnlock", + "AllowDevelopmentWithoutDevLicense", + RRF_RT_REG_DWORD | KEY_WOW64_64KEY, + NULL, + &val, + &val_size + ); + + if (status == ERROR_SUCCESS && val == 1) + XSRETURN_YES; + + XSRETURN_NO; +} + MODULE = Win32 PACKAGE = Win32 PROTOTYPES: DISABLE @@ -1875,6 +1751,8 @@ newXS("Win32::GetOEMCP", w32_GetOEMCP, file); newXS("Win32::SetConsoleCP", w32_SetConsoleCP, file); newXS("Win32::SetConsoleOutputCP", w32_SetConsoleOutputCP, file); + newXS("Win32::GetProcessPrivileges", w32_GetProcessPrivileges, file); + newXS("Win32::IsDeveloperModeEnabled", w32_IsDeveloperModeEnabled, file); #ifdef __CYGWIN__ newXS("Win32::SetChildShowWindow", w32_SetChildShowWindow, file); #endif diff -Nru perl-5.32.1/Cross/cflags-cross-arm perl-5.34.0/Cross/cflags-cross-arm --- perl-5.32.1/Cross/cflags-cross-arm 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/Cross/cflags-cross-arm 2020-10-04 22:17:12.000000000 +0000 @@ -88,7 +88,6 @@ opmini) ;; pad) ;; perl) ;; - perlapi) ;; perlmain) ;; perly) ;; pp) ;; diff -Nru perl-5.32.1/Cross/config.sh-arm-linux perl-5.34.0/Cross/config.sh-arm-linux --- perl-5.32.1/Cross/config.sh-arm-linux 2020-12-18 13:35:22.000000000 +0000 +++ perl-5.34.0/Cross/config.sh-arm-linux 2021-05-04 23:28:28.000000000 +0000 @@ -32,11 +32,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/perl5/5.32.1/armv4l-linux' -archlibexp='/usr/lib/perl5/5.32.1/armv4l-linux' +archlib='/usr/lib/perl5/5.34.0/armv4l-linux' +archlibexp='/usr/lib/perl5/5.34.0/armv4l-linux' archname64='' archname='armv4l-linux' archobjs='' @@ -55,7 +55,7 @@ cat='cat' cc='cc' cccdlflags='-fpic' -ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.32.1/armv4l-linux/CORE' +ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.34.0/armv4l-linux/CORE' ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccname='arm-linux-gcc' @@ -248,6 +248,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='undef' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -824,7 +825,7 @@ inc_version_list_init='0' incpath='' inews='' -installarchlib='./install_me_here/usr/lib/perl5/5.32.1/armv4l-linux' +installarchlib='./install_me_here/usr/lib/perl5/5.34.0/armv4l-linux' installbin='./install_me_here/usr/bin' installhtml1dir='' installhtml3dir='' @@ -832,13 +833,13 @@ installman3dir='./install_me_here/usr/share/man/man3' installprefix='./install_me_here/usr' installprefixexp='./install_me_here/usr' -installprivlib='./install_me_here/usr/lib/perl5/5.32.1' +installprivlib='./install_me_here/usr/lib/perl5/5.34.0' installscript='./install_me_here/usr/bin' -installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.32.1/armv4l-linux' +installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.34.0/armv4l-linux' installsitebin='./install_me_here/usr/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.32.1' +installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.34.0' installsiteman1dir='./install_me_here/usr/share/man/man1' installsiteman3dir='./install_me_here/usr/share/man/man3' installsitescript='./install_me_here/usr/bin' @@ -972,8 +973,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/lib/perl5/5.32.1' -privlibexp='/usr/lib/perl5/5.32.1' +privlib='/usr/lib/perl5/5.34.0' +privlibexp='/usr/lib/perl5/5.34.0' procselfexe='"/proc/self/exe"' prototype='define' ptrsize='4' @@ -1038,17 +1039,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0' sig_size='68' signal_t='void' -sitearch='/usr/lib/perl5/site_perl/5.32.1/armv4l-linux' -sitearchexp='/usr/lib/perl5/site_perl/5.32.1/armv4l-linux' +sitearch='/usr/lib/perl5/site_perl/5.34.0/armv4l-linux' +sitearchexp='/usr/lib/perl5/site_perl/5.34.0/armv4l-linux' sitebin='/usr/bin' sitebinexp='/usr/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/lib/perl5/site_perl/5.32.1' +sitelib='/usr/lib/perl5/site_perl/5.34.0' sitelib_stem='/usr/lib/perl5/site_perl' -sitelibexp='/usr/lib/perl5/site_perl/5.32.1' +sitelibexp='/usr/lib/perl5/site_perl/5.34.0' siteman1dir='/usr/share/man/man1' siteman1direxp='/usr/share/man/man1' siteman3dir='/usr/share/man/man3' @@ -1087,7 +1088,7 @@ strerror_r_proto='0' strings='/usr/include/string.h' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' tail='' tar='' @@ -1120,11 +1121,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long long' -use5005threads='undef' use64bitall='undef' use64bitint='undef' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1178,8 +1179,8 @@ vendorprefixexp='' vendorscript='' vendorscriptexp='' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1192,10 +1193,10 @@ config_args='' config_argc=0 PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL= PERL_CONFIG_SH=true diff -Nru perl-5.32.1/Cross/config.sh-arm-linux-n770 perl-5.34.0/Cross/config.sh-arm-linux-n770 --- perl-5.32.1/Cross/config.sh-arm-linux-n770 2020-12-18 13:35:28.000000000 +0000 +++ perl-5.34.0/Cross/config.sh-arm-linux-n770 2021-05-04 23:28:28.000000000 +0000 @@ -32,11 +32,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/perl5/5.32.1/armv4l-linux' -archlibexp='/usr/lib/perl5/5.32.1/armv4l-linux' +archlib='/usr/lib/perl5/5.34.0/armv4l-linux' +archlibexp='/usr/lib/perl5/5.34.0/armv4l-linux' archname64='' archname='armv4l-linux' archobjs='' @@ -54,7 +54,7 @@ cat='cat' cc='arm-none-linux-gnueabi-gcc' cccdlflags='-fpic' -ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.32.1/armv4l-linux/CORE' +ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.34.0/armv4l-linux/CORE' ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccname='arm-linux-gcc' @@ -247,6 +247,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='undef' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -822,7 +823,7 @@ inc_version_list_init='0' incpath='' inews='' -installarchlib='./install_me_here/usr/lib/perl5/5.32.1/armv4l-linux' +installarchlib='./install_me_here/usr/lib/perl5/5.34.0/armv4l-linux' installbin='./install_me_here/usr/bin' installhtml1dir='' installhtml3dir='' @@ -830,13 +831,13 @@ installman3dir='./install_me_here/usr/share/man/man3' installprefix='./install_me_here/usr' installprefixexp='./install_me_here/usr' -installprivlib='./install_me_here/usr/lib/perl5/5.32.1' +installprivlib='./install_me_here/usr/lib/perl5/5.34.0' installscript='./install_me_here/usr/bin' -installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.32.1/armv4l-linux' +installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.34.0/armv4l-linux' installsitebin='./install_me_here/usr/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.32.1' +installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.34.0' installsiteman1dir='./install_me_here/usr/share/man/man1' installsiteman3dir='./install_me_here/usr/share/man/man3' installsitescript='./install_me_here/usr/bin' @@ -970,8 +971,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/lib/perl5/5.32.1' -privlibexp='/usr/lib/perl5/5.32.1' +privlib='/usr/lib/perl5/5.34.0' +privlibexp='/usr/lib/perl5/5.34.0' procselfexe='"/proc/self/exe"' prototype='define' ptrsize='4' @@ -1036,17 +1037,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0' sig_size='68' signal_t='void' -sitearch='/usr/lib/perl5/site_perl/5.32.1/armv4l-linux' -sitearchexp='/usr/lib/perl5/site_perl/5.32.1/armv4l-linux' +sitearch='/usr/lib/perl5/site_perl/5.34.0/armv4l-linux' +sitearchexp='/usr/lib/perl5/site_perl/5.34.0/armv4l-linux' sitebin='/usr/bin' sitebinexp='/usr/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/lib/perl5/site_perl/5.32.1' +sitelib='/usr/lib/perl5/site_perl/5.34.0' sitelib_stem='/usr/lib/perl5/site_perl' -sitelibexp='/usr/lib/perl5/site_perl/5.32.1' +sitelibexp='/usr/lib/perl5/site_perl/5.34.0' siteman1dir='/usr/share/man/man1' siteman1direxp='/usr/share/man/man1' siteman3dir='/usr/share/man/man3' @@ -1085,7 +1086,7 @@ strerror_r_proto='0' strings='/usr/include/string.h' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' tail='' tar='' @@ -1118,11 +1119,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long long' -use5005threads='undef' use64bitall='undef' use64bitint='undef' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1176,8 +1177,8 @@ vendorprefixexp='' vendorscript='' vendorscriptexp='' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1190,10 +1191,10 @@ config_args='' config_argc=0 PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL= PERL_CONFIG_SH=true diff -Nru perl-5.32.1/Cross/Makefile-cross-SH perl-5.34.0/Cross/Makefile-cross-SH --- perl-5.32.1/Cross/Makefile-cross-SH 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/Cross/Makefile-cross-SH 2020-10-04 22:17:12.000000000 +0000 @@ -348,14 +348,14 @@ c1 = av.c scope.c op.c doop.c doio.c dquote.c dump.c gv.c hv.c mg.c reentr.c mro_core.c perl.c c2 = perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c sv.c c3 = taint.c time64.c toke.c util.c deb.c run.c universal.c pad.c globals.c keywords.c -c4 = perlio.c perlapi.c numeric.c mathoms.c locale.c pp_pack.c pp_sort.c +c4 = perlio.c numeric.c mathoms.c locale.c pp_pack.c pp_sort.c c5 = $(mallocsrc) c = $(c1) $(c2) $(c3) $(c4) $(c5) miniperlmain.c perlmain.c opmini.c obj1 = $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) op$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dquote$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT) mro_core$(OBJ_EXT) obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) perl$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT) -obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT) time64$(OBJ_EXT) +obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT) time64$(OBJ_EXT) obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) @@ -844,7 +844,7 @@ CHMOD_W = chmod +w # The following files are generated automatically -# embed.pl: proto.h embed.h embedvar.h perlapi.h perlapi.c +# embed.pl: proto.h embed.h embedvar.h # opcode.pl: opcode.h opnames.h pp_proto.h # regcomp.pl: regnodes.h # warnings.pl: warnings.h lib/warnings.pm diff -Nru perl-5.32.1/cv.h perl-5.34.0/cv.h --- perl-5.32.1/cv.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cv.h 2021-01-20 23:04:44.000000000 +0000 @@ -16,18 +16,13 @@ }; /* -=head1 Handy Values +=for apidoc Ayh||CV =for apidoc ADmnU||Nullcv Null CV pointer. (deprecated - use C<(CV *)NULL> instead) -=head1 CV Manipulation Functions - -This section documents functions to manipulate CVs which are code-values, -or subroutines. For more information, see L. - =for apidoc Am|HV*|CvSTASH|CV* cv Returns the stash of the CV. A stash is the symbol table hash, containing the package-scoped variables in the package where the subroutine was defined. @@ -68,7 +63,7 @@ /* these CvPADLIST/CvRESERVED asserts can be reverted one day, once stabilized */ #define CvPADLIST(sv) (*(assert_(!CvISXSUB((CV*)(sv))) \ - &(((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_padlist_u.xcv_padlist))) + &(((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_padlist_u.xcv_padlist))) /* CvPADLIST_set is not public API, it can be removed one day, once stabilized */ #ifdef DEBUGGING # define CvPADLIST_set(sv, padlist) Perl_set_padlist((CV*)sv, padlist) @@ -76,7 +71,7 @@ # define CvPADLIST_set(sv, padlist) (CvPADLIST(sv) = (padlist)) #endif #define CvHSCXT(sv) *(assert_(CvISXSUB((CV*)(sv))) \ - &(((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_padlist_u.xcv_hscxt)) + &(((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_padlist_u.xcv_hscxt)) #ifdef DEBUGGING # if PTRSIZE == 8 # define PoisonPADLIST(sv) \ @@ -97,20 +92,20 @@ /* These two are sometimes called on non-CVs */ #define CvPROTO(sv) \ - ( \ - SvPOK(sv) \ - ? SvTYPE(sv) == SVt_PVCV && CvAUTOLOAD(sv) \ - ? SvEND(sv)+1 : SvPVX_const(sv) \ - : NULL \ - ) + ( \ + SvPOK(sv) \ + ? SvTYPE(sv) == SVt_PVCV && CvAUTOLOAD(sv) \ + ? SvEND(sv)+1 : SvPVX_const(sv) \ + : NULL \ + ) #define CvPROTOLEN(sv) \ - ( \ - SvPOK(sv) \ - ? SvTYPE(sv) == SVt_PVCV && CvAUTOLOAD(sv) \ - ? SvLEN(sv)-SvCUR(sv)-2 \ - : SvCUR(sv) \ - : 0 \ - ) + ( \ + SvPOK(sv) \ + ? SvTYPE(sv) == SVt_PVCV && CvAUTOLOAD(sv) \ + ? SvLEN(sv)-SvCUR(sv)-2 \ + : SvCUR(sv) \ + : 0 \ + ) #define CVf_METHOD 0x0001 /* CV is explicitly marked as a method */ #define CVf_LVALUE 0x0002 /* CV return value can be used as lvalue */ @@ -122,11 +117,11 @@ #define CVf_CLONED 0x0040 /* a clone of one of those */ #define CVf_ANON 0x0080 /* CV is not pointed to by a GV */ #define CVf_UNIQUE 0x0100 /* sub is only called once (eg PL_main_cv, - * require, eval). */ + * require, eval). */ #define CVf_NODEBUG 0x0200 /* no DB::sub indirection for this CV - (esp. useful for special XSUBs) */ + (esp. useful for special XSUBs) */ #define CVf_CVGV_RC 0x0400 /* CvGV is reference counted */ -#ifdef PERL_CORE +#if defined(PERL_CORE) || defined(PERL_EXT) # define CVf_SLABBED 0x0800 /* Holds refcount on op slab */ #endif #define CVf_DYNFILE 0x1000 /* The filename is malloced */ @@ -231,8 +226,8 @@ CvNAME_HEK(CV *sv) { return CvNAMED(sv) - ? ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_gv_u.xcv_hek - : 0; + ? ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_gv_u.xcv_hek + : 0; } /* helper for the common pattern: @@ -247,15 +242,14 @@ /* This lowers the reference count of the previous value, but does *not* increment the reference count of the new value. */ #define CvNAME_HEK_set(cv, hek) ( \ - CvNAME_HEK((CV *)(cv)) \ - ? unshare_hek(SvANY((CV *)(cv))->xcv_gv_u.xcv_hek) \ - : (void)0, \ - ((XPVCV*)MUTABLE_PTR(SvANY(cv)))->xcv_gv_u.xcv_hek = (hek), \ - CvNAMED_on(cv) \ + CvNAME_HEK((CV *)(cv)) \ + ? unshare_hek(SvANY((CV *)(cv))->xcv_gv_u.xcv_hek) \ + : (void)0, \ + ((XPVCV*)MUTABLE_PTR(SvANY(cv)))->xcv_gv_u.xcv_hek = (hek), \ + CvNAMED_on(cv) \ ) /* -=head1 CV reference counts and CvOUTSIDE =for apidoc m|bool|CvWEAKOUTSIDE|CV *cv diff -Nru perl-5.32.1/cygwin/cygwin.c perl-5.34.0/cygwin/cygwin.c --- perl-5.32.1/cygwin/cygwin.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/cygwin/cygwin.c 2021-01-20 23:04:44.000000000 +0000 @@ -35,16 +35,16 @@ rsignal_save(SIGQUIT, (Sighandler_t) SIG_IGN, &qhand); childpid = spawnvp(_P_NOWAIT,path,argv); if (childpid < 0) { - status = -1; - if(ckWARN(WARN_EXEC)) - Perl_warner(aTHX_ packWARN(WARN_EXEC),"Can't spawn \"%s\": %s", - path,Strerror (errno)); + status = -1; + if(ckWARN(WARN_EXEC)) + Perl_warner(aTHX_ packWARN(WARN_EXEC),"Can't spawn \"%s\": %s", + path,Strerror (errno)); } else { - do { - result = wait4pid(childpid, &status, 0); - } while (result == -1 && errno == EINTR); - if(result < 0) - status = -1; + do { + result = wait4pid(childpid, &status, 0); + } while (result == -1 && errno == EINTR); + if(result < 0) + status = -1; } (void)rsignal_restore(SIGINT, &ihand); (void)rsignal_restore(SIGQUIT, &qhand); @@ -98,7 +98,7 @@ ENTER; while (*cmd && isSPACE(*cmd)) - cmd++; + cmd++; if (strBEGINs (cmd,"/bin/sh") && isSPACE (cmd[7])) cmd+=5; @@ -106,32 +106,32 @@ /* save an extra exec if possible */ /* see if there are shell metacharacters in it */ if (strstr (cmd,"...")) - goto doshell; + goto doshell; if (*cmd=='.' && isSPACE (cmd[1])) - goto doshell; + goto doshell; if (strBEGINs (cmd,"exec") && isSPACE (cmd[4])) - goto doshell; + goto doshell; for (s=cmd; *s && isALPHA (*s); s++) ; /* catch VAR=val gizmo */ if (*s=='=') goto doshell; for (s=cmd; *s; s++) - if (strchr (metachars,*s)) - { - if (*s=='\n' && s[1]=='\0') - { - *s='\0'; - break; - } - doshell: - command[0] = "sh"; - command[1] = "-c"; - command[2] = cmd; - command[3] = NULL; - - result = do_spawnvp("sh",command); - goto leave; - } + if (strchr (metachars,*s)) + { + if (*s=='\n' && s[1]=='\0') + { + *s='\0'; + break; + } + doshell: + command[0] = "sh"; + command[1] = "-c"; + command[2] = cmd; + command[3] = NULL; + + result = do_spawnvp("sh",command); + goto leave; + } Newx (argv, (s-cmd)/2+2, const char*); SAVEFREEPV(argv); @@ -139,18 +139,18 @@ SAVEFREEPV(cmd); a=argv; for (s=cmd; *s;) { - while (*s && isSPACE (*s)) s++; - if (*s) - *(a++)=s; - while (*s && !isSPACE (*s)) s++; - if (*s) - *s++='\0'; + while (*s && isSPACE (*s)) s++; + if (*s) + *(a++)=s; + while (*s && !isSPACE (*s)) s++; + if (*s) + *s++='\0'; } *a = (char*)NULL; if (!argv[0]) result = -1; else - result = do_spawnvp(argv[0],(const char * const *)argv); + result = do_spawnvp(argv[0],(const char * const *)argv); leave: LEAVE; return result; @@ -163,12 +163,11 @@ char *buf; int wlen = 0; char *oldlocale; - dVAR; /* Here and elsewhere in this file, we have a critical section to prevent * another thread from changing the locale out from under us. XXX But why * not just use uvchr_to_utf8? */ - LOCALE_LOCK; + SETLOCALE_LOCK; oldlocale = setlocale(LC_CTYPE, NULL); setlocale(LC_CTYPE, "utf-8"); @@ -181,7 +180,7 @@ if (oldlocale) setlocale(LC_CTYPE, oldlocale); else setlocale(LC_CTYPE, "C"); - LOCALE_UNLOCK; + SETLOCALE_UNLOCK; return buf; } @@ -193,9 +192,8 @@ mbstate_t mbs; char *oldlocale; int wlen = sizeof(wchar_t)*strlen(buf); - dVAR; - LOCALE_LOCK; + SETLOCALE_LOCK; oldlocale = setlocale(LC_CTYPE, NULL); @@ -207,7 +205,7 @@ if (oldlocale) setlocale(LC_CTYPE, oldlocale); else setlocale(LC_CTYPE, "C"); - LOCALE_UNLOCK; + SETLOCALE_UNLOCK; return wbuf; } @@ -223,12 +221,12 @@ There is Cwd->cwd() usage in the wild, and previous versions didn't die. */ if(items > 1) - Perl_croak(aTHX_ "Usage: Cwd::cwd()"); + Perl_croak(aTHX_ "Usage: Cwd::cwd()"); if((cwd = getcwd(NULL, -1))) { - ST(0) = sv_2mortal(newSVpv(cwd, 0)); - free(cwd); - SvTAINTED_on(ST(0)); - XSRETURN(1); + ST(0) = sv_2mortal(newSVpv(cwd, 0)); + free(cwd); + SvTAINTED_on(ST(0)); + XSRETURN(1); } XSRETURN_UNDEF; } @@ -245,7 +243,7 @@ pid = (pid_t)SvIV(ST(0)); if ((RETVAL = cygwin_internal(CW_CYGWIN_PID_TO_WINPID, pid)) > 0) { - XSprePUSH; PUSHi((IV)RETVAL); + XSprePUSH; PUSHi((IV)RETVAL); XSRETURN(1); } XSRETURN_UNDEF; @@ -290,10 +288,10 @@ src_path = SvPV(ST(0), len); if (items == 2) - absolute_flag = SvTRUE(ST(1)); + absolute_flag = SvTRUE(ST(1)); if (!len) - Perl_croak(aTHX_ "can't convert empty path"); + Perl_croak(aTHX_ "can't convert empty path"); isutf8 = SvUTF8(ST(0)); #if (CYGWIN_VERSION_API_MINOR >= 181) @@ -301,73 +299,72 @@ Size calculation: On overflow let cygwin_conv_path calculate the final size. */ if (isutf8) { - int what = absolute_flag ? CCP_WIN_W_TO_POSIX : CCP_WIN_W_TO_POSIX | CCP_RELATIVE; - STRLEN wlen = sizeof(wchar_t)*(len + 260 + 1001); - wchar_t *wpath = (wchar_t *) safemalloc(sizeof(wchar_t)*len); - wchar_t *wbuf = (wchar_t *) safemalloc(wlen); - if (!IN_BYTES) { - mbstate_t mbs; + int what = absolute_flag ? CCP_WIN_W_TO_POSIX : CCP_WIN_W_TO_POSIX | CCP_RELATIVE; + STRLEN wlen = sizeof(wchar_t)*(len + 260 + 1001); + wchar_t *wpath = (wchar_t *) safemalloc(sizeof(wchar_t)*len); + wchar_t *wbuf = (wchar_t *) safemalloc(wlen); + if (!IN_BYTES) { + mbstate_t mbs; char *oldlocale; - dVAR; - LOCALE_LOCK; + SETLOCALE_LOCK; oldlocale = setlocale(LC_CTYPE, NULL); setlocale(LC_CTYPE, "utf-8"); - /* utf8_to_uvchr_buf(src_path, src_path + wlen, wpath) or Encoding::_utf8_to_bytes(sv, "UCS-2BE"); */ - wlen = mbsrtowcs(wpath, (const char**)&src_path, wlen, &mbs); - if (wlen > 0) - err = cygwin_conv_path(what, wpath, wbuf, wlen); + /* utf8_to_uvchr_buf(src_path, src_path + wlen, wpath) or Encoding::_utf8_to_bytes(sv, "UCS-2BE"); */ + wlen = mbsrtowcs(wpath, (const char**)&src_path, wlen, &mbs); + if (wlen > 0) + err = cygwin_conv_path(what, wpath, wbuf, wlen); if (oldlocale) setlocale(LC_CTYPE, oldlocale); else setlocale(LC_CTYPE, "C"); - LOCALE_UNLOCK; - } else { /* use bytes; assume already ucs-2 encoded bytestream */ - err = cygwin_conv_path(what, src_path, wbuf, wlen); - } - if (err == ENOSPC) { /* our space assumption was wrong, not enough space */ - int newlen = cygwin_conv_path(what, wpath, wbuf, 0); - wbuf = (wchar_t *) realloc(&wbuf, newlen); - err = cygwin_conv_path(what, wpath, wbuf, newlen); - wlen = newlen; - } - /* utf16_to_utf8(*p, *d, bytlen, *newlen) */ - posix_path = (char *) safemalloc(wlen*3); - Perl_utf16_to_utf8(aTHX_ (U8*)&wpath, (U8*)posix_path, wlen*2, &len); - /* - wlen = wcsrtombs(NULL, (const wchar_t **)&wbuf, wlen, NULL); - posix_path = (char *) safemalloc(wlen+1); - wcsrtombs(posix_path, (const wchar_t **)&wbuf, wlen, NULL); - */ + SETLOCALE_UNLOCK; + } else { /* use bytes; assume already ucs-2 encoded bytestream */ + err = cygwin_conv_path(what, src_path, wbuf, wlen); + } + if (err == ENOSPC) { /* our space assumption was wrong, not enough space */ + int newlen = cygwin_conv_path(what, wpath, wbuf, 0); + wbuf = (wchar_t *) realloc(&wbuf, newlen); + err = cygwin_conv_path(what, wpath, wbuf, newlen); + wlen = newlen; + } + /* utf16_to_utf8(*p, *d, bytlen, *newlen) */ + posix_path = (char *) safemalloc(wlen*3); + Perl_utf16_to_utf8(aTHX_ (U8*)&wpath, (U8*)posix_path, wlen*2, &len); + /* + wlen = wcsrtombs(NULL, (const wchar_t **)&wbuf, wlen, NULL); + posix_path = (char *) safemalloc(wlen+1); + wcsrtombs(posix_path, (const wchar_t **)&wbuf, wlen, NULL); + */ } else { - int what = absolute_flag ? CCP_WIN_A_TO_POSIX : CCP_WIN_A_TO_POSIX | CCP_RELATIVE; - posix_path = (char *) safemalloc (len + 260 + 1001); - err = cygwin_conv_path(what, src_path, posix_path, len + 260 + 1001); - if (err == ENOSPC) { /* our space assumption was wrong, not enough space */ - int newlen = cygwin_conv_path(what, src_path, posix_path, 0); - posix_path = (char *) realloc(&posix_path, newlen); - err = cygwin_conv_path(what, src_path, posix_path, newlen); - } + int what = absolute_flag ? CCP_WIN_A_TO_POSIX : CCP_WIN_A_TO_POSIX | CCP_RELATIVE; + posix_path = (char *) safemalloc (len + 260 + 1001); + err = cygwin_conv_path(what, src_path, posix_path, len + 260 + 1001); + if (err == ENOSPC) { /* our space assumption was wrong, not enough space */ + int newlen = cygwin_conv_path(what, src_path, posix_path, 0); + posix_path = (char *) realloc(&posix_path, newlen); + err = cygwin_conv_path(what, src_path, posix_path, newlen); + } } #else posix_path = (char *) safemalloc (len + 260 + 1001); if (absolute_flag) - err = cygwin_conv_to_full_posix_path(src_path, posix_path); + err = cygwin_conv_to_full_posix_path(src_path, posix_path); else - err = cygwin_conv_to_posix_path(src_path, posix_path); + err = cygwin_conv_to_posix_path(src_path, posix_path); #endif if (!err) { - EXTEND(SP, 1); - ST(0) = sv_2mortal(newSVpv(posix_path, 0)); - if (isutf8) { /* src was utf-8, so result should also */ - /* TODO: convert ANSI (local windows encoding) to utf-8 on cygwin-1.5 */ - SvUTF8_on(ST(0)); - } - safefree(posix_path); + EXTEND(SP, 1); + ST(0) = sv_2mortal(newSVpv(posix_path, 0)); + if (isutf8) { /* src was utf-8, so result should also */ + /* TODO: convert ANSI (local windows encoding) to utf-8 on cygwin-1.5 */ + SvUTF8_on(ST(0)); + } + safefree(posix_path); XSRETURN(1); } else { - safefree(posix_path); - XSRETURN_UNDEF; + safefree(posix_path); + XSRETURN_UNDEF; } } @@ -385,80 +382,79 @@ src_path = SvPVx(ST(0), len); if (items == 2) - absolute_flag = SvTRUE(ST(1)); + absolute_flag = SvTRUE(ST(1)); if (!len) - Perl_croak(aTHX_ "can't convert empty path"); + Perl_croak(aTHX_ "can't convert empty path"); isutf8 = SvUTF8(ST(0)); #if (CYGWIN_VERSION_API_MINOR >= 181) /* Check utf8 flag and use wide api then. Size calculation: On overflow let cygwin_conv_path calculate the final size. */ if (isutf8) { - int what = absolute_flag ? CCP_POSIX_TO_WIN_W : CCP_POSIX_TO_WIN_W | CCP_RELATIVE; - int wlen = sizeof(wchar_t)*(len + 260 + 1001); - wchar_t *wpath = (wchar_t *) safemalloc(sizeof(wchar_t)*len); - wchar_t *wbuf = (wchar_t *) safemalloc(wlen); - char *oldlocale; - dVAR; - - LOCALE_LOCK; - - oldlocale = setlocale(LC_CTYPE, NULL); - setlocale(LC_CTYPE, "utf-8"); - if (!IN_BYTES) { - mbstate_t mbs; - /* utf8_to_uvchr_buf(src_path, src_path + wlen, wpath) or Encoding::_utf8_to_bytes(sv, "UCS-2BE"); */ - wlen = mbsrtowcs(wpath, (const char**)&src_path, wlen, &mbs); - if (wlen > 0) - err = cygwin_conv_path(what, wpath, wbuf, wlen); - } else { /* use bytes; assume already ucs-2 encoded bytestream */ - err = cygwin_conv_path(what, src_path, wbuf, wlen); - } - if (err == ENOSPC) { /* our space assumption was wrong, not enough space */ - int newlen = cygwin_conv_path(what, wpath, wbuf, 0); - wbuf = (wchar_t *) realloc(&wbuf, newlen); - err = cygwin_conv_path(what, wpath, wbuf, newlen); - wlen = newlen; - } - /* also see utf8.c: Perl_utf16_to_utf8() or Encoding::_bytes_to_utf8(sv, "UCS-2BE"); */ - wlen = wcsrtombs(NULL, (const wchar_t **)&wbuf, wlen, NULL); - win_path = (char *) safemalloc(wlen+1); - wcsrtombs(win_path, (const wchar_t **)&wbuf, wlen, NULL); - if (oldlocale) setlocale(LC_CTYPE, oldlocale); - else setlocale(LC_CTYPE, "C"); + int what = absolute_flag ? CCP_POSIX_TO_WIN_W : CCP_POSIX_TO_WIN_W | CCP_RELATIVE; + int wlen = sizeof(wchar_t)*(len + 260 + 1001); + wchar_t *wpath = (wchar_t *) safemalloc(sizeof(wchar_t)*len); + wchar_t *wbuf = (wchar_t *) safemalloc(wlen); + char *oldlocale; + + SETLOCALE_LOCK; + + oldlocale = setlocale(LC_CTYPE, NULL); + setlocale(LC_CTYPE, "utf-8"); + if (!IN_BYTES) { + mbstate_t mbs; + /* utf8_to_uvchr_buf(src_path, src_path + wlen, wpath) or Encoding::_utf8_to_bytes(sv, "UCS-2BE"); */ + wlen = mbsrtowcs(wpath, (const char**)&src_path, wlen, &mbs); + if (wlen > 0) + err = cygwin_conv_path(what, wpath, wbuf, wlen); + } else { /* use bytes; assume already ucs-2 encoded bytestream */ + err = cygwin_conv_path(what, src_path, wbuf, wlen); + } + if (err == ENOSPC) { /* our space assumption was wrong, not enough space */ + int newlen = cygwin_conv_path(what, wpath, wbuf, 0); + wbuf = (wchar_t *) realloc(&wbuf, newlen); + err = cygwin_conv_path(what, wpath, wbuf, newlen); + wlen = newlen; + } + /* also see utf8.c: Perl_utf16_to_utf8() or Encoding::_bytes_to_utf8(sv, "UCS-2BE"); */ + wlen = wcsrtombs(NULL, (const wchar_t **)&wbuf, wlen, NULL); + win_path = (char *) safemalloc(wlen+1); + wcsrtombs(win_path, (const wchar_t **)&wbuf, wlen, NULL); + if (oldlocale) setlocale(LC_CTYPE, oldlocale); + else setlocale(LC_CTYPE, "C"); - LOCALE_UNLOCK; + SETLOCALE_UNLOCK; } else { - int what = absolute_flag ? CCP_POSIX_TO_WIN_A : CCP_POSIX_TO_WIN_A | CCP_RELATIVE; - win_path = (char *) safemalloc(len + 260 + 1001); - err = cygwin_conv_path(what, src_path, win_path, len + 260 + 1001); - if (err == ENOSPC) { /* our space assumption was wrong, not enough space */ - int newlen = cygwin_conv_path(what, src_path, win_path, 0); - win_path = (char *) realloc(&win_path, newlen); - err = cygwin_conv_path(what, src_path, win_path, newlen); - } + int what = absolute_flag ? CCP_POSIX_TO_WIN_A : CCP_POSIX_TO_WIN_A | CCP_RELATIVE; + win_path = (char *) safemalloc(len + 260 + 1001); + err = cygwin_conv_path(what, src_path, win_path, len + 260 + 1001); + if (err == ENOSPC) { /* our space assumption was wrong, not enough space */ + int newlen = cygwin_conv_path(what, src_path, win_path, 0); + win_path = (char *) realloc(&win_path, newlen); + err = cygwin_conv_path(what, src_path, win_path, newlen); + } } #else if (isutf8) - Perl_warn(aTHX_ "can't convert utf8 path"); + Perl_warn(aTHX_ "can't convert utf8 path"); win_path = (char *) safemalloc(len + 260 + 1001); if (absolute_flag) - err = cygwin_conv_to_full_win32_path(src_path, win_path); + err = cygwin_conv_to_full_win32_path(src_path, win_path); else - err = cygwin_conv_to_win32_path(src_path, win_path); + err = cygwin_conv_to_win32_path(src_path, win_path); #endif if (!err) { - EXTEND(SP, 1); - ST(0) = sv_2mortal(newSVpv(win_path, 0)); - if (isutf8) { - SvUTF8_on(ST(0)); - } - safefree(win_path); - XSRETURN(1); + EXTEND(SP, 1); + ST(0) = sv_2mortal(newSVpv(win_path, 0)); + if (isutf8) { + SvUTF8_on(ST(0)); + } + safefree(win_path); + XSRETURN(1); } else { - safefree(win_path); - XSRETURN_UNDEF; + safefree(win_path); + XSRETURN_UNDEF; } } @@ -473,12 +469,12 @@ setmntent (0, 0); while ((mnt = getmntent (0))) { - AV* av = newAV(); - av_push(av, newSVpvn(mnt->mnt_dir, strlen(mnt->mnt_dir))); - av_push(av, newSVpvn(mnt->mnt_fsname, strlen(mnt->mnt_fsname))); - av_push(av, newSVpvn(mnt->mnt_type, strlen(mnt->mnt_type))); - av_push(av, newSVpvn(mnt->mnt_opts, strlen(mnt->mnt_opts))); - XPUSHs(sv_2mortal(newRV_noinc((SV*)av))); + AV* av = newAV(); + av_push(av, newSVpvn(mnt->mnt_dir, strlen(mnt->mnt_dir))); + av_push(av, newSVpvn(mnt->mnt_fsname, strlen(mnt->mnt_fsname))); + av_push(av, newSVpvn(mnt->mnt_type, strlen(mnt->mnt_type))); + av_push(av, newSVpvn(mnt->mnt_opts, strlen(mnt->mnt_opts))); + XPUSHs(sv_2mortal(newRV_noinc((SV*)av))); } endmntent (0); PUTBACK; @@ -497,13 +493,13 @@ pathname = SvPV_nolen(ST(0)); if (strEQ(pathname, "/cygdrive")) { - char user[PATH_MAX]; - char system[PATH_MAX]; - char user_flags[PATH_MAX]; - char system_flags[PATH_MAX]; + char user[PATH_MAX]; + char system[PATH_MAX]; + char user_flags[PATH_MAX]; + char system_flags[PATH_MAX]; - cygwin_internal (CW_GET_CYGDRIVE_INFO, user, system, - user_flags, system_flags); + cygwin_internal (CW_GET_CYGDRIVE_INFO, user, system, + user_flags, system_flags); if (strlen(user) > 0) { sprintf(flags, "%s,cygdrive,%s", user_flags, user); @@ -511,56 +507,56 @@ sprintf(flags, "%s,cygdrive,%s", system_flags, system); } - ST(0) = sv_2mortal(newSVpv(flags, 0)); - XSRETURN(1); + ST(0) = sv_2mortal(newSVpv(flags, 0)); + XSRETURN(1); } else { - struct mntent *mnt; - int found = 0; - setmntent (0, 0); - while ((mnt = getmntent (0))) { - if (strEQ(pathname, mnt->mnt_dir)) { - strcpy(flags, mnt->mnt_type); - if (strlen(mnt->mnt_opts) > 0) { - strcat(flags, ","); - strcat(flags, mnt->mnt_opts); - } - found++; - break; - } - } - endmntent (0); - - /* Check if arg is the current volume moint point if not default, - * and then use CW_GET_CYGDRIVE_INFO also. - */ - if (!found) { - char user[PATH_MAX]; - char system[PATH_MAX]; - char user_flags[PATH_MAX]; - char system_flags[PATH_MAX]; - - cygwin_internal (CW_GET_CYGDRIVE_INFO, user, system, - user_flags, system_flags); - - if (strlen(user) > 0) { - if (strNE(user,pathname)) { - sprintf(flags, "%s,cygdrive,%s", user_flags, user); - found++; - } - } else { - if (strNE(user,pathname)) { - sprintf(flags, "%s,cygdrive,%s", system_flags, system); - found++; - } - } - } - if (found) { - ST(0) = sv_2mortal(newSVpv(flags, 0)); - XSRETURN(1); - } else { - XSRETURN_UNDEF; - } + struct mntent *mnt; + int found = 0; + setmntent (0, 0); + while ((mnt = getmntent (0))) { + if (strEQ(pathname, mnt->mnt_dir)) { + strcpy(flags, mnt->mnt_type); + if (strlen(mnt->mnt_opts) > 0) { + strcat(flags, ","); + strcat(flags, mnt->mnt_opts); + } + found++; + break; + } + } + endmntent (0); + + /* Check if arg is the current volume moint point if not default, + * and then use CW_GET_CYGDRIVE_INFO also. + */ + if (!found) { + char user[PATH_MAX]; + char system[PATH_MAX]; + char user_flags[PATH_MAX]; + char system_flags[PATH_MAX]; + + cygwin_internal (CW_GET_CYGDRIVE_INFO, user, system, + user_flags, system_flags); + + if (strlen(user) > 0) { + if (strNE(user,pathname)) { + sprintf(flags, "%s,cygdrive,%s", user_flags, user); + found++; + } + } else { + if (strNE(user,pathname)) { + sprintf(flags, "%s,cygdrive,%s", system_flags, system); + found++; + } + } + } + if (found) { + ST(0) = sv_2mortal(newSVpv(flags, 0)); + XSRETURN(1); + } else { + XSRETURN_UNDEF; + } } } diff -Nru perl-5.32.1/deb.c perl-5.34.0/deb.c --- perl-5.32.1/deb.c 2020-12-18 09:58:30.000000000 +0000 +++ perl-5.34.0/deb.c 2021-01-20 23:04:44.000000000 +0000 @@ -66,10 +66,10 @@ PERL_ARGS_ASSERT_VDEB; if (DEBUG_v_TEST) - PerlIO_printf(Perl_debug_log, "(%ld:%s:%ld)\t", - (long)PerlProc_getpid(), display_file, line); + PerlIO_printf(Perl_debug_log, "(%ld:%s:%ld)\t", + (long)PerlProc_getpid(), display_file, line); else - PerlIO_printf(Perl_debug_log, "(%s:%ld)\t", display_file, line); + PerlIO_printf(Perl_debug_log, "(%s:%ld)\t", display_file, line); (void) PerlIO_vprintf(Perl_debug_log, pat, *args); #else PERL_UNUSED_CONTEXT; @@ -83,15 +83,15 @@ { #ifdef DEBUGGING PerlIO_printf(Perl_debug_log, - "%8" UVxf " %8" UVxf " %8" IVdf " %8" IVdf " %8" IVdf "\n", - PTR2UV(PL_curstack), PTR2UV(PL_stack_base), - (IV)*PL_markstack_ptr, (IV)(PL_stack_sp-PL_stack_base), - (IV)(PL_stack_max-PL_stack_base)); + "%8" UVxf " %8" UVxf " %8" IVdf " %8" IVdf " %8" IVdf "\n", + PTR2UV(PL_curstack), PTR2UV(PL_stack_base), + (IV)*PL_markstack_ptr, (IV)(PL_stack_sp-PL_stack_base), + (IV)(PL_stack_max-PL_stack_base)); PerlIO_printf(Perl_debug_log, - "%8" UVxf " %8" UVxf " %8" UVuf " %8" UVuf " %8" UVuf "\n", - PTR2UV(PL_mainstack), PTR2UV(AvARRAY(PL_curstack)), - PTR2UV(PL_mainstack), PTR2UV(AvFILLp(PL_curstack)), - PTR2UV(AvMAX(PL_curstack))); + "%8" UVxf " %8" UVxf " %8" UVuf " %8" UVuf " %8" UVuf "\n", + PTR2UV(PL_mainstack), PTR2UV(AvARRAY(PL_curstack)), + PTR2UV(PL_mainstack), PTR2UV(AvFILLp(PL_curstack)), + PTR2UV(AvMAX(PL_curstack))); #else PERL_UNUSED_CONTEXT; #endif /* DEBUGGING */ @@ -110,7 +110,7 @@ STATIC void S_deb_stack_n(pTHX_ SV** stack_base, I32 stack_min, I32 stack_max, - I32 mark_min, I32 mark_max) + I32 mark_min, I32 mark_max) { #ifdef DEBUGGING I32 i = stack_max - 30; @@ -119,30 +119,30 @@ PERL_ARGS_ASSERT_DEB_STACK_N; if (i < stack_min) - i = stack_min; + i = stack_min; while (++markscan <= PL_markstack + mark_max) - if (*markscan >= i) - break; + if (*markscan >= i) + break; if (i > stack_min) - PerlIO_printf(Perl_debug_log, "... "); + PerlIO_printf(Perl_debug_log, "... "); if (stack_base[0] != &PL_sv_undef || stack_max < 0) - PerlIO_printf(Perl_debug_log, " [STACK UNDERFLOW!!!]\n"); + PerlIO_printf(Perl_debug_log, " [STACK UNDERFLOW!!!]\n"); do { - ++i; - if (markscan <= PL_markstack + mark_max && *markscan < i) { - do { - ++markscan; - (void)PerlIO_putc(Perl_debug_log, '*'); - } - while (markscan <= PL_markstack + mark_max && *markscan < i); - PerlIO_printf(Perl_debug_log, " "); - } - if (i > stack_max) - break; - PerlIO_printf(Perl_debug_log, "%-4s ", SvPEEK(stack_base[i])); + ++i; + if (markscan <= PL_markstack + mark_max && *markscan < i) { + do { + ++markscan; + (void)PerlIO_putc(Perl_debug_log, '*'); + } + while (markscan <= PL_markstack + mark_max && *markscan < i); + PerlIO_printf(Perl_debug_log, " "); + } + if (i > stack_max) + break; + PerlIO_printf(Perl_debug_log, "%-4s ", SvPEEK(stack_base[i])); } while (1); PerlIO_printf(Perl_debug_log, "\n"); @@ -164,14 +164,14 @@ { #ifndef SKIP_DEBUGGING if (CopSTASH_eq(PL_curcop, PL_debstash) && !DEBUG_J_TEST_) - return 0; + return 0; PerlIO_printf(Perl_debug_log, " => "); deb_stack_n(PL_stack_base, - 0, - PL_stack_sp - PL_stack_base, - PL_curstackinfo->si_markoff, - PL_markstack_ptr - PL_markstack); + 0, + PL_stack_sp - PL_stack_base, + PL_curstackinfo->si_markoff, + PL_markstack_ptr - PL_markstack); #endif /* SKIP_DEBUGGING */ @@ -209,7 +209,7 @@ /* rewind to start of chain */ si = PL_curstackinfo; while (si->si_prev) - si = si->si_prev; + si = si->si_prev; si_ix=0; for (;;) @@ -218,107 +218,107 @@ const char * const si_name = si_name_ix < C_ARRAY_LENGTH(si_names) ? si_names[si_name_ix] : "????"; - I32 ix; - PerlIO_printf(Perl_debug_log, "STACK %" IVdf ": %s\n", - (IV)si_ix, si_name); - - for (ix=0; ix<=si->si_cxix; ix++) { - - const PERL_CONTEXT * const cx = &(si->si_cxstack[ix]); - PerlIO_printf(Perl_debug_log, - " CX %" IVdf ": %-6s => ", - (IV)ix, PL_block_type[CxTYPE(cx)] - ); - /* substitution contexts don't save stack pointers etc) */ - if (CxTYPE(cx) == CXt_SUBST) - PerlIO_printf(Perl_debug_log, "\n"); - else { - - /* Find the current context's stack range by searching - * forward for any higher contexts using this stack; failing - * that, it will be equal to the size of the stack for old - * stacks, or PL_stack_sp for the current stack - */ - - I32 i, stack_min, stack_max, mark_min, mark_max; - const PERL_CONTEXT *cx_n = NULL; - const PERL_SI *si_n; + I32 ix; + PerlIO_printf(Perl_debug_log, "STACK %" IVdf ": %s\n", + (IV)si_ix, si_name); + + for (ix=0; ix<=si->si_cxix; ix++) { + + const PERL_CONTEXT * const cx = &(si->si_cxstack[ix]); + PerlIO_printf(Perl_debug_log, + " CX %" IVdf ": %-6s => ", + (IV)ix, PL_block_type[CxTYPE(cx)] + ); + /* substitution contexts don't save stack pointers etc) */ + if (CxTYPE(cx) == CXt_SUBST) + PerlIO_printf(Perl_debug_log, "\n"); + else { + + /* Find the current context's stack range by searching + * forward for any higher contexts using this stack; failing + * that, it will be equal to the size of the stack for old + * stacks, or PL_stack_sp for the current stack + */ + + I32 i, stack_min, stack_max, mark_min, mark_max; + const PERL_CONTEXT *cx_n = NULL; + const PERL_SI *si_n; /* there's a separate argument stack per SI, so only * search this one */ - for (i=ix+1; i<=si->si_cxix; i++) { + for (i=ix+1; i<=si->si_cxix; i++) { const PERL_CONTEXT *this_cx = &(si->si_cxstack[i]); if (CxTYPE(this_cx) == CXt_SUBST) - continue; - cx_n = this_cx; - break; - } - - stack_min = cx->blk_oldsp; - - if (cx_n) { - stack_max = cx_n->blk_oldsp; - } - else if (si == PL_curstackinfo) { - stack_max = PL_stack_sp - AvARRAY(si->si_stack); - } - else { - stack_max = AvFILLp(si->si_stack); - } + continue; + cx_n = this_cx; + break; + } + + stack_min = cx->blk_oldsp; + + if (cx_n) { + stack_max = cx_n->blk_oldsp; + } + else if (si == PL_curstackinfo) { + stack_max = PL_stack_sp - AvARRAY(si->si_stack); + } + else { + stack_max = AvFILLp(si->si_stack); + } /* for the markstack, there's only one stack shared * between all SIs */ - si_n = si; - i = ix; - cx_n = NULL; - for (;;) { - i++; - if (i > si_n->si_cxix) { - if (si_n == PL_curstackinfo) - break; - else { - si_n = si_n->si_next; - i = 0; - } - } - if (CxTYPE(&(si_n->si_cxstack[i])) == CXt_SUBST) - continue; - cx_n = &(si_n->si_cxstack[i]); - break; - } - - mark_min = cx->blk_oldmarksp; - if (cx_n) { - mark_max = cx_n->blk_oldmarksp; - } - else { - mark_max = PL_markstack_ptr - PL_markstack; - } - - deb_stack_n(AvARRAY(si->si_stack), - stack_min, stack_max, mark_min, mark_max); - - if (CxTYPE(cx) == CXt_EVAL || CxTYPE(cx) == CXt_SUB - || CxTYPE(cx) == CXt_FORMAT) - { - const OP * const retop = cx->blk_sub.retop; - - PerlIO_printf(Perl_debug_log, " retop=%s\n", - retop ? OP_NAME(retop) : "(null)" - ); - } - } - } /* next context */ - - - if (si == PL_curstackinfo) - break; - si = si->si_next; - si_ix++; - if (!si) - break; /* shouldn't happen, but just in case.. */ + si_n = si; + i = ix; + cx_n = NULL; + for (;;) { + i++; + if (i > si_n->si_cxix) { + if (si_n == PL_curstackinfo) + break; + else { + si_n = si_n->si_next; + i = 0; + } + } + if (CxTYPE(&(si_n->si_cxstack[i])) == CXt_SUBST) + continue; + cx_n = &(si_n->si_cxstack[i]); + break; + } + + mark_min = cx->blk_oldmarksp; + if (cx_n) { + mark_max = cx_n->blk_oldmarksp; + } + else { + mark_max = PL_markstack_ptr - PL_markstack; + } + + deb_stack_n(AvARRAY(si->si_stack), + stack_min, stack_max, mark_min, mark_max); + + if (CxTYPE(cx) == CXt_EVAL || CxTYPE(cx) == CXt_SUB + || CxTYPE(cx) == CXt_FORMAT) + { + const OP * const retop = cx->blk_sub.retop; + + PerlIO_printf(Perl_debug_log, " retop=%s\n", + retop ? OP_NAME(retop) : "(null)" + ); + } + } + } /* next context */ + + + if (si == PL_curstackinfo) + break; + si = si->si_next; + si_ix++; + if (!si) + break; /* shouldn't happen, but just in case.. */ } /* next stackinfo */ PerlIO_printf(Perl_debug_log, "\n"); diff -Nru perl-5.32.1/debian/changelog perl-5.34.0/debian/changelog --- perl-5.32.1/debian/changelog 2022-02-04 21:49:31.000000000 +0000 +++ perl-5.34.0/debian/changelog 2022-02-06 11:02:58.000000000 +0000 @@ -1,4 +1,4 @@ -perl (5.32.1-6ubuntu1) jammy; urgency=medium +perl (5.34.0-3ubuntu1) jammy; urgency=medium * Merge with Debian; remaining changes: - Disable two porting/libperl.t tests, only run on x86*, and only @@ -6,20 +6,52 @@ - Disable the same porting/libperl.t tests on x86*, as on the other Linux architectures. - -- Matthias Klose Fri, 04 Feb 2022 22:49:31 +0100 + -- Matthias Klose Sun, 06 Feb 2022 12:02:58 +0100 + +perl (5.34.0-3) unstable; urgency=medium + + * Add 5.34.0 to debian/released-versions. + * Upload to unstable. + + -- Niko Tyni Sat, 05 Feb 2022 12:20:54 +0200 -perl (5.32.1-6) unstable; urgency=medium +perl (5.34.0-2) experimental; urgency=medium - * Add ARC cross build support files from Evgeniy Didin. (Closes: #990305) - * Apply upstream patch fixing a regexp memory leak. (Closes: #994834) + * Apply upstream patch fixing issues with gdbm 1.20. (Closes: #993514) - -- Niko Tyni Fri, 24 Sep 2021 18:20:33 +0300 + -- Niko Tyni Fri, 27 Aug 2021 22:02:26 +0300 -perl (5.32.1-5) unstable; urgency=high +perl (5.34.0-1) experimental; urgency=medium + * Update to new upstream version 5.34.0. + * Add a build time sanity check to make sure we filter away generated + files from the regen-configure tarball. (Closes: #992200) + * Fix usrmerge related reproducibility issues. Thanks to Vagrant + Cascadian. (Closes: #914128) + * Update cross build support files. + * Skip io/msg.t on x32 due to broken System V message queues. + (See #988900) * [SECURITY] CVE-2021-36770: Encode loading code from working directory - -- Niko Tyni Thu, 05 Aug 2021 22:26:55 +0300 + -- Niko Tyni Thu, 26 Aug 2021 21:20:41 +0300 + +perl (5.34.0~rc2-1) experimental; urgency=medium + + * Update to upstream release candidate 5.34.0-RC2. + + File::Temp file creation permissions are documented now. + (Closes: #987995) + + -- Niko Tyni Mon, 17 May 2021 22:09:52 +0300 + +perl (5.32.1-6ubuntu1) jammy; urgency=medium + + * Merge with Debian; remaining changes: + - Disable two porting/libperl.t tests, only run on x86*, and only + testing the static libperl.a. + - Disable the same porting/libperl.t tests on x86*, as on the other + Linux architectures. + + -- Matthias Klose Fri, 04 Feb 2022 22:49:31 +0100 perl (5.32.1-4) unstable; urgency=medium diff -Nru perl-5.32.1/debian/config.over perl-5.34.0/debian/config.over --- perl-5.32.1/debian/config.over 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/config.over 2022-02-05 10:20:32.000000000 +0000 @@ -146,3 +146,8 @@ myarchname="${machine_uname}-${osname}" myuname="$osname $myhostname $osvers $osdesc $machine_uname $os " fi + +full_sed='/bin/sed' +aphostname='hostname' +lns='ln -s' +rm_try='rm -f try try$_exe a.out .out try.[cho] try.$_o core core.try* try.core*' diff -Nru perl-5.32.1/debian/control perl-5.34.0/debian/control --- perl-5.32.1/debian/control 2022-02-04 21:49:31.000000000 +0000 +++ perl-5.34.0/debian/control 2022-02-06 11:02:58.000000000 +0000 @@ -36,12 +36,12 @@ mono-gac (<< 2.10.8.1-3), Breaks: perl (<< ${Upstream-Version}~), perl-modules (<< ${Upstream-Version}~), - libfile-spec-perl (<< 3.7800), + libfile-spec-perl (<< 3.8000), libxsloader-perl (<< 0.30), - libsocket-perl (<< 2.029), - libio-socket-ip-perl (<< 0.39), - libfile-temp-perl (<< 0.2309), - libfile-path-perl (<< 2.16), + libsocket-perl (<< 2.031), + libio-socket-ip-perl (<< 0.41), + libfile-temp-perl (<< 0.2311), + libfile-path-perl (<< 2.18), libscalar-list-utils-perl (<< 1:1.55), libsbuild-perl (<< 0.67.0-1), backuppc (<< 3.3.1-2), @@ -64,24 +64,24 @@ Replaces: perl (<< 5.10.1-12), perl-modules (<< 5.20.1-3), libscalar-list-utils-perl (<< 1:1.55), libxsloader-perl (<< 0.30), - libsocket-perl (<< 2.029), - libfile-temp-perl (<< 0.2309), - libfile-path-perl (<< 2.16), - libio-socket-ip-perl (<< 0.39), + libsocket-perl (<< 2.031), + libfile-temp-perl (<< 0.2311), + libfile-path-perl (<< 2.18), + libio-socket-ip-perl (<< 0.41), Provides: ${perlapi:Provides}, libscalar-list-utils-perl (= 1:1.55), libxsloader-perl (= 0.30), - libsocket-perl (= 2.029), - libfile-temp-perl (= 0.2309), - libfile-path-perl (= 2.16), - libio-socket-ip-perl (= 0.39), + libsocket-perl (= 2.031), + libfile-temp-perl (= 0.2311), + libfile-path-perl (= 2.18), + libio-socket-ip-perl (= 0.41), Suggests: perl, sensible-utils Description: minimal Perl system Perl is a scripting language used in many system scripts and utilities. . This package provides a Perl interpreter and the small subset of the standard run-time library required to perform basic tasks. For a full - Perl installation, install "perl" (and its dependencies, "perl-modules-5.32" + Perl installation, install "perl" (and its dependencies, "perl-modules-5.34" and "perl-doc"). Package: perl-doc @@ -112,49 +112,49 @@ In addition, this package also includes debugging information for the normal Perl interpreter. -Package: libperl5.32 +Package: libperl5.34 Section: libs Priority: optional Architecture: any -Depends: ${shlibs:Depends}, perl-modules-5.32 (>= ${source:Version}), ${misc:Depends} -Breaks: libdigest-md5-perl (<< 2.55.01), - libmime-base64-perl (<< 3.15), - libtime-hires-perl (<< 1.9764), - libstorable-perl (<< 3.21), +Depends: ${shlibs:Depends}, perl-modules-5.34 (>= ${source:Version}), ${misc:Depends} +Breaks: libdigest-md5-perl (<< 2.58), + libmime-base64-perl (<< 3.16), + libtime-hires-perl (<< 1.9767), + libstorable-perl (<< 3.23), libdigest-sha-perl (<< 6.02), libsys-syslog-perl (<< 0.36), - libcompress-zlib-perl (<< 2.093), - libcompress-raw-zlib-perl (<< 2.093), - libcompress-raw-bzip2-perl (<< 2.093), - libio-compress-zlib-perl (<< 2.093), - libio-compress-bzip2-perl (<< 2.093), - libio-compress-base-perl (<< 2.093), - libio-compress-perl (<< 2.093), - libthreads-perl (<< 2.25), - libthreads-shared-perl (<< 1.61), + libcompress-zlib-perl (<< 2.102), + libcompress-raw-zlib-perl (<< 2.101), + libcompress-raw-bzip2-perl (<< 2.101), + libio-compress-zlib-perl (<< 2.102), + libio-compress-bzip2-perl (<< 2.102), + libio-compress-base-perl (<< 2.102), + libio-compress-perl (<< 2.102), + libthreads-perl (<< 2.26), + libthreads-shared-perl (<< 1.62), libtime-piece-perl (<< 1.3401), - libencode-perl (<< 3.06), - libfilter-perl (<< 1.59), + libencode-perl (<< 3.08), + libfilter-perl (<< 1.60), Replaces: perl-base (<< 5.22.0~), perl (<< 5.22.0~), libarchive-tar-perl (<= 1.38-2), - libdigest-md5-perl (<< 2.55.01), - libmime-base64-perl (<< 3.15), - libtime-hires-perl (<< 1.9764), - libstorable-perl (<< 3.21), + libdigest-md5-perl (<< 2.58), + libmime-base64-perl (<< 3.16), + libtime-hires-perl (<< 1.9767), + libstorable-perl (<< 3.23), libdigest-sha-perl (<< 6.02), libtime-piece-perl (<< 1.3401), libsys-syslog-perl (<< 0.36), - libcompress-zlib-perl (<< 2.093), - libcompress-raw-zlib-perl (<< 2.093), - libcompress-raw-bzip2-perl (<< 2.093), - libio-compress-zlib-perl (<< 2.093), - libio-compress-bzip2-perl (<< 2.093), - libio-compress-base-perl (<< 2.093), - libio-compress-perl (<< 2.093), - libthreads-perl (<< 2.25), - libthreads-shared-perl (<< 1.61), + libcompress-zlib-perl (<< 2.102), + libcompress-raw-zlib-perl (<< 2.101), + libcompress-raw-bzip2-perl (<< 2.101), + libio-compress-zlib-perl (<< 2.102), + libio-compress-bzip2-perl (<< 2.102), + libio-compress-base-perl (<< 2.102), + libio-compress-perl (<< 2.102), + libthreads-perl (<< 2.26), + libthreads-shared-perl (<< 1.62), libmodule-corelist-perl (<< 2.14-2), - libencode-perl (<< 3.06), + libencode-perl (<< 3.08), Suggests: sensible-utils Multi-Arch: same Description: shared Perl library @@ -162,7 +162,7 @@ which embed a Perl interpreter. . It also contains the architecture-dependent parts of the standard - library (and depends on perl-modules-5.32 which contains the + library (and depends on perl-modules-5.34 which contains the architecture-independent parts). Package: libperl-dev @@ -171,12 +171,12 @@ Architecture: any Provides: perl-xs-dev Multi-Arch: same -Depends: perl:any (= ${binary:Version}), libperl5.32 (= ${binary:Version}), +Depends: perl:any (= ${binary:Version}), libperl5.34 (= ${binary:Version}), ${misc:Depends}, libc6-dev | libc-dev Description: Perl library: development files Files for developing applications which embed a Perl interpreter. -Package: perl-modules-5.32 +Package: perl-modules-5.34 Section: libs Priority: standard Architecture: all @@ -187,94 +187,94 @@ Conflicts: perl-modules (<< 5.22.0~), Breaks: perl (<< ${Upstream-Version}~), libansicolor-perl (<< 5.01), - libnet-perl (<< 1:3.11), + libnet-perl (<< 1:3.13), libattribute-handlers-perl (<< 1.01), - libi18n-langtags-perl (<< 0.44), + libi18n-langtags-perl (<< 0.45), liblocale-maketext-perl (<< 1.29), libmath-bigint-perl (<< 1.999818), - libnet-ping-perl (<< 2.72), - libtest-harness-perl (<< 3.42), - libtest-simple-perl (<< 1.302175), - libmodule-corelist-perl (<< 5.20210123), - libio-zlib-perl (<< 1.10), - libarchive-tar-perl (<< 2.36), - libextutils-cbuilder-perl (<< 0.280234), - libmodule-load-perl (<< 0.34), + libnet-ping-perl (<< 2.74), + libtest-harness-perl (<< 3.43), + libtest-simple-perl (<< 1.302183), + libmodule-corelist-perl (<< 5.20210520), + libio-zlib-perl (<< 1.11), + libarchive-tar-perl (<< 2.38), + libextutils-cbuilder-perl (<< 0.280236), + libmodule-load-perl (<< 0.36), liblocale-maketext-simple-perl (<< 0.21.01), libparams-check-perl (<< 0.38), - libmodule-load-conditional-perl (<< 0.70), - libversion-perl (<< 1:0.9924), - libpod-simple-perl (<< 3.40), - libextutils-parsexs-perl (<< 3.400000), + libmodule-load-conditional-perl (<< 0.74), + libversion-perl (<< 1:0.9928), + libpod-simple-perl (<< 3.42), + libextutils-parsexs-perl (<< 3.430000), libpod-escapes-perl (<< 1.07), libparse-cpan-meta-perl (<< 2.150010), libparent-perl (<< 0.238), - libautodie-perl (<< 2.32), + libautodie-perl (<< 2.34), libthread-queue-perl (<< 3.14), - libfile-spec-perl (<< 3.7800), - libtime-local-perl (<< 1.2800), + libfile-spec-perl (<< 3.8000), + libtime-local-perl (<< 1.3000), podlators-perl (<< 4.14), - libunicode-collate-perl (<< 1.27), + libunicode-collate-perl (<< 1.29), libcpan-meta-perl (<< 2.150010), - libmath-complex-perl (<< 1.5901), - libextutils-command-perl (<< 7.44), + libmath-complex-perl (<< 1.5902), + libextutils-command-perl (<< 7.62), libmodule-metadata-perl (<< 1.000037), - libjson-pp-perl (<< 4.04000), + libjson-pp-perl (<< 4.06000), libperl-ostype-perl (<< 1.010), libcpan-meta-yaml-perl (<< 0.018), - libdigest-perl (<< 1.17.01), - libextutils-install-perl (<< 2.14), + libdigest-perl (<< 1.19), + libextutils-install-perl (<< 2.20), libhttp-tiny-perl (<< 0.076), libcpan-meta-requirements-perl (<< 2.140), - libexperimental-perl (<< 0.020), - libtest-use-ok-perl (<< 1.302175), - libtest-tester-perl (<< 1.302175), + libexperimental-perl (<< 0.024), + libtest-use-ok-perl (<< 1.302183), + libtest-tester-perl (<< 1.302183), maildirsync (<< 1.2-2.1), Replaces: perl-modules, perl-base (<< 5.22.0~), libansicolor-perl (<< 5.01), - libnet-perl (<< 1:3.11), + libnet-perl (<< 1:3.13), libattribute-handlers-perl (<< 1.01), - libi18n-langtags-perl (<< 0.44), + libi18n-langtags-perl (<< 0.45), liblocale-maketext-perl (<< 1.29), libmath-bigint-perl (<< 1.999818), - libnet-ping-perl (<< 2.72), - libtest-harness-perl (<< 3.42), - libtest-simple-perl (<< 1.302175), - libmodule-corelist-perl (<< 5.20210123), - libio-zlib-perl (<< 1.10), - libarchive-tar-perl (<< 2.36), - libextutils-cbuilder-perl (<< 0.280234), - libmodule-load-perl (<< 0.34), + libnet-ping-perl (<< 2.74), + libtest-harness-perl (<< 3.43), + libtest-simple-perl (<< 1.302183), + libmodule-corelist-perl (<< 5.20210520), + libio-zlib-perl (<< 1.11), + libarchive-tar-perl (<< 2.38), + libextutils-cbuilder-perl (<< 0.280236), + libmodule-load-perl (<< 0.36), liblocale-maketext-simple-perl (<< 0.21.01), libparams-check-perl (<< 0.38), - libmodule-load-conditional-perl (<< 0.70), - libversion-perl (<< 1:0.9924), - libpod-simple-perl (<< 3.40), - libextutils-parsexs-perl (<< 3.400000), + libmodule-load-conditional-perl (<< 0.74), + libversion-perl (<< 1:0.9928), + libpod-simple-perl (<< 3.42), + libextutils-parsexs-perl (<< 3.430000), libpod-escapes-perl (<< 1.07), libparse-cpan-meta-perl (<< 2.150010), libparent-perl (<< 0.238), - libautodie-perl (<< 2.32), + libautodie-perl (<< 2.34), libthread-queue-perl (<< 3.14), - libfile-spec-perl (<< 3.7800), - libtime-local-perl (<< 1.2800), + libfile-spec-perl (<< 3.8000), + libtime-local-perl (<< 1.3000), podlators-perl (<< 4.14), - libunicode-collate-perl (<< 1.27), + libunicode-collate-perl (<< 1.29), libcpan-meta-perl (<< 2.150010), - libmath-complex-perl (<< 1.5901), - libextutils-command-perl (<< 7.44), + libmath-complex-perl (<< 1.5902), + libextutils-command-perl (<< 7.62), libmodule-metadata-perl (<< 1.000037), - libjson-pp-perl (<< 4.04000), + libjson-pp-perl (<< 4.06000), libperl-ostype-perl (<< 1.010), libcpan-meta-yaml-perl (<< 0.018), - libdigest-perl (<< 1.17.01), - libextutils-install-perl (<< 2.14), + libdigest-perl (<< 1.19), + libextutils-install-perl (<< 2.20), libhttp-tiny-perl (<< 0.076), libcpan-meta-requirements-perl (<< 2.140), - libexperimental-perl (<< 0.020), - libtest-use-ok-perl (<< 1.302175), - libtest-tester-perl (<< 1.302175), + libexperimental-perl (<< 0.024), + libtest-use-ok-perl (<< 1.302183), + libtest-tester-perl (<< 1.302183), Provides: perl-modules Description: Core Perl modules Architecture independent Perl modules. These modules are part of Perl and @@ -282,15 +282,15 @@ . Note that this package only exists to save archive space and should be considered an internal implementation detail of the `perl' package. - Other packages should not depend on `perl-modules-5.32' directly, they - should use `perl' (which depends on `perl-modules-5.32') instead. + Other packages should not depend on `perl-modules-5.34' directly, they + should use `perl' (which depends on `perl-modules-5.34') instead. Package: perl Priority: standard Architecture: any Multi-Arch: allowed Pre-Depends: dpkg (>= 1.17.17) -Depends: perl-base (= ${binary:Version}), perl-modules-5.32 (>= ${source:Version}), libperl5.32 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} +Depends: perl-base (= ${binary:Version}), perl-modules-5.34 (>= ${source:Version}), libperl5.34 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} Conflicts: libjson-pp-perl (<< 2.27200-2) Breaks: perl-doc (<< ${Upstream-Version}-1), libperl-dev (<< 5.24.0~), @@ -300,68 +300,68 @@ apt-show-versions (<< 0.22.10), libmarc-charset-perl (<< 1.35-3), libdist-inkt-perl (<< 0.024-5) -Replaces: perl-modules (<< 5.22.0~), perl-base (<< 5.32.0-2) -Provides: libdigest-md5-perl (= 2.55.01), - libmime-base64-perl (= 3.15), - libtime-hires-perl (= 1.9764), - libstorable-perl (= 3.21), +Replaces: perl-modules (<< 5.22.0~), perl-base (<< 5.34.0-2) +Provides: libdigest-md5-perl (= 2.58), + libmime-base64-perl (= 3.16), + libtime-hires-perl (= 1.9767), + libstorable-perl (= 3.23), libdigest-sha-perl (= 6.02), libsys-syslog-perl (= 0.36), - libcompress-zlib-perl (= 2.093), - libcompress-raw-zlib-perl (= 2.093), - libcompress-raw-bzip2-perl (= 2.093), - libio-compress-zlib-perl (= 2.093), - libio-compress-bzip2-perl (= 2.093), - libio-compress-base-perl (= 2.093), - libio-compress-perl (= 2.093), - libthreads-perl (= 2.25), - libthreads-shared-perl (= 1.61), + libcompress-zlib-perl (= 2.102), + libcompress-raw-zlib-perl (= 2.101), + libcompress-raw-bzip2-perl (= 2.101), + libio-compress-zlib-perl (= 2.102), + libio-compress-bzip2-perl (= 2.102), + libio-compress-base-perl (= 2.102), + libio-compress-perl (= 2.102), + libthreads-perl (= 2.26), + libthreads-shared-perl (= 1.62), libtime-piece-perl (= 1.3401), - libencode-perl (= 3.06), + libencode-perl (= 3.08), libansicolor-perl (= 5.01), - libnet-perl (= 1:3.11), + libnet-perl (= 1:3.13), libattribute-handlers-perl (= 1.01), - libi18n-langtags-perl (= 0.44), + libi18n-langtags-perl (= 0.45), liblocale-maketext-perl (= 1.29), libmath-bigint-perl (= 1.999818), - libnet-ping-perl (= 2.72), - libtest-harness-perl (= 3.42), - libtest-simple-perl (= 1.302175), - libmodule-corelist-perl (= 5.20210123), - libio-zlib-perl (= 1.10), - libarchive-tar-perl (= 2.36), - libextutils-cbuilder-perl (= 0.280234), - libmodule-load-perl (= 0.34), + libnet-ping-perl (= 2.74), + libtest-harness-perl (= 3.43), + libtest-simple-perl (= 1.302183), + libmodule-corelist-perl (= 5.20210520), + libio-zlib-perl (= 1.11), + libarchive-tar-perl (= 2.38), + libextutils-cbuilder-perl (= 0.280236), + libmodule-load-perl (= 0.36), liblocale-maketext-simple-perl (= 0.21.01), libparams-check-perl (= 0.38), - libmodule-load-conditional-perl (= 0.70), - libversion-perl (= 1:0.9924), - libpod-simple-perl (= 3.40), - libextutils-parsexs-perl (= 3.400000), + libmodule-load-conditional-perl (= 0.74), + libversion-perl (= 1:0.9928), + libpod-simple-perl (= 3.42), + libextutils-parsexs-perl (= 3.430000), libpod-escapes-perl (= 1.07), libparse-cpan-meta-perl (= 2.150010), libparent-perl (= 0.238), - libautodie-perl (= 2.32), + libautodie-perl (= 2.34), libthread-queue-perl (= 3.14), - libfile-spec-perl (= 3.7800), - libtime-local-perl (= 1.2800), + libfile-spec-perl (= 3.8000), + libtime-local-perl (= 1.3000), podlators-perl (= 4.14), - libunicode-collate-perl (= 1.27), + libunicode-collate-perl (= 1.29), libcpan-meta-perl (= 2.150010), - libmath-complex-perl (= 1.5901), - libextutils-command-perl (= 7.44), + libmath-complex-perl (= 1.5902), + libextutils-command-perl (= 7.62), libmodule-metadata-perl (= 1.000037), - libjson-pp-perl (= 4.04000), + libjson-pp-perl (= 4.06000), libperl-ostype-perl (= 1.010), libversion-requirements-perl, libcpan-meta-yaml-perl (= 0.018), - libdigest-perl (= 1.17.01), - libextutils-install-perl (= 2.14), + libdigest-perl (= 1.19), + libextutils-install-perl (= 2.20), libhttp-tiny-perl (= 0.076), libcpan-meta-requirements-perl (= 2.140), - libexperimental-perl (= 0.020), - libtest-use-ok-perl (= 1.302175), - libtest-tester-perl (= 1.302175), + libexperimental-perl (= 0.024), + libtest-use-ok-perl (= 1.302183), + libtest-tester-perl (= 1.302183), Recommends: netbase Suggests: perl-doc, libterm-readline-gnu-perl | libterm-readline-perl-perl, diff -Nru perl-5.32.1/debian/copyright perl-5.34.0/debian/copyright --- perl-5.32.1/debian/copyright 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/copyright 2022-02-05 10:20:32.000000000 +0000 @@ -12,7 +12,7 @@ . Larry Wall et. al. (see /usr/share/doc/perl/AUTHORS). . - Last checked against: Perl 5.32.1 + Last checked against: Perl 5.34.0 Files: * Copyright: @@ -175,28 +175,6 @@ This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. -Files: symbian/* -Copyright: - Copyright (c) Nokia 2004-2005. All rights reserved. -License: GPL-1+ or Artistic -Comment: - All files are licensed under the same terms as Perl itself. - -Files: symbian/PerlUiS90.rss -Copyright: - Copyright (c) 2006 Alexander Smishlajev. All rights reserved. -License: GPL-1+ or Artistic -Comment: - The PerlUi class is licensed under the same terms as Perl itself. - -Files: README.symbian -Copyright: - Copyright (c) 2004-2005 Nokia. All rights reserved. - Copyright (c) 2006-2007 Jarkko Hietaniemi. -License: GPL-1+ or Artistic -Comment: - The Symbian port is licensed under the same terms as Perl itself. - Files: t/op/split_unicode.t Copyright: Copyright (c) 1991-2006 Unicode, Inc. @@ -235,7 +213,7 @@ Files: Porting/config_h.pl Copyright: - Copyright (C) 2005-2012 by H.Merijn Brand (m)'12 [22-09-2012] + Copyright (C) 2005-2020 by H.Merijn Brand (m)'20 [23-08-2020] License: GPL-1+ or Artistic Comment: You may distribute under the terms of either the GNU General Public @@ -356,7 +334,7 @@ same terms as Perl itself. Files: cpan/Compress-Raw-Bzip2/* -Copyright: Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright: Copyright (c) 2005-2021 Paul Marquess. All rights reserved. License: GPL-1+ or Artistic Comment: This program is free software; you can redistribute it @@ -376,7 +354,7 @@ License: BZIP Files: cpan/Compress-Raw-Zlib/* -Copyright: Copyright (c) 2005-2019 Paul Marquess. All rights reserved. +Copyright: Copyright (c) 2005-2021 Paul Marquess. All rights reserved. License: GPL-1+ or Artistic Comment: This program is free software; you can redistribute it @@ -389,7 +367,7 @@ Files: cpan/Config-Perl-V/* Copyright: - Copyright (C) 2009-2019 H.Merijn Brand + Copyright (C) 2009-2020 H.Merijn Brand License: GPL-1+ or Artistic Comment: This library is free software; you can redistribute it and/or modify @@ -457,7 +435,7 @@ Files: dist/Devel-PPPort/* Copyright: Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz. - Copyright (C) 2018, The perl5 porters + Copyright (C) 2018-2020, The perl5 porters Version 2.x, Copyright (C) 2001, Paul Marquess. Version 1.x, Copyright (C) 1999, Kenneth Albanowski. License: GPL-1+ or Artistic @@ -585,6 +563,13 @@ This is free software; you can redistribute it and/or modify it under the same terms as Perl itself. +Files: cpan/ExtUtils-PL2Bat/lib/ExtUtils/PL2Bat.pm +Copyright: (c) 2015 by Leon Timmermans +License: GPL-1+ or Artistic +Comment: + This is free software; you can redistribute it and/or modify it under + the same terms as the Perl 5 programming language system itself. + Files: cpan/File-Fetch/* cpan/IPC-Cmd/* @@ -603,7 +588,7 @@ Files: cpan/File-Path/* Copyright: This module is copyright (C) Charles Bailey, Tim Bunce, David Landgren, - James Keenan, and Richard Elberger 1995-2018. All rights reserved. + James Keenan, and Richard Elberger 1995-2020. All rights reserved. License: GPL-1+ or Artistic Comment: This library is free software; you can redistribute it and/or modify @@ -611,7 +596,7 @@ Files: cpan/File-Temp/* Copyright: - This software is copyright (c) 2013 by Tim Jenness and the UK Particle + This software is copyright (c) 2020 by Tim Jenness and the UK Particle Physics and Astronomy Research Council. License: GPL-1+ or Artistic Comment: @@ -649,12 +634,20 @@ Files: cpan/IO-Compress/* Copyright: - Copyright (c) 1995-2019 Paul Marquess. All rights reserved. + Copyright (c) 1995-2021 Paul Marquess. All rights reserved. License: GPL-1+ or Artistic Comment: This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. +Files: cpan/IO-Socket-IP/* +Copyright: + (C) Paul Evans, 2010-2020 -- leonerd@leonerd.org.uk +License: GPL-1+ or Artistic +Comment: + You may distribute under the terms of either the GNU General Public License + or the Artistic License (the same terms as Perl itself) + Files: cpan/IO-Zlib/* Copyright: Copyright (c) 1998-2004 Tom Hughes . All rights reserved. @@ -683,8 +676,8 @@ Files: cpan/libnet/* Copyright: - (C) 1995-2006 Graham Barr. All rights reserved. - (C) 2013-2016 Steve Hay. All rights reserved. + (C) 1995-2010 Graham Barr. All rights reserved. + (C) 2013-2017, 2020 Steve Hay. All rights reserved. License: GPL-1+ or Artistic Comment: This library is free software; you can redistribute it and/or modify @@ -692,11 +685,13 @@ Files: cpan/libnet/Makefile.PL Copyright: - Copyright (C) 2014 Steve Hay. All rights reserved. + Copyright (C) 2014-2015, 2020 Steve Hay. All rights reserved. License: GPL-1+ or Artistic Comment: - You may distribute under the terms of either the GNU General Public License - or the Artistic License, as specified in the LICENCE file. + This script is free software; you can redistribute it and/or modify it under + the same terms as Perl itself, i.e. under the terms of either the GNU + General Public License or the Artistic License, as specified in the LICENCE + file. Files: cpan/Scalar-List-Utils/* Copyright: @@ -827,6 +822,7 @@ Files: cpan/PerlIO-via-QuotedPrint/* Copyright: Copyright (c) 2002-2004,2012 Elizabeth Mattijsen. All rights reserved. + Copyright (C) 2015, 2020 Steve Hay. All rights reserved. License: GPL-1+ or Artistic Comment: This library is free software; you can redistribute it and/or modify @@ -972,9 +968,7 @@ Copyright (c) 2001-2016 by Marek Rouchal. License: GPL-1+ or Artistic Comment: - This file is part of "Pod-Usage". Pod-Usage is free software; - you can redistribute it and/or modify it under the same terms - as Perl itself. + Pod::Usage (the distribution) is licensed under the same terms as Perl Files: cpan/Pod-Usage/t/inc/Pod/PlainText.pm Copyright: @@ -1057,7 +1051,7 @@ Files: cpan/Test-Simple/* Copyright: Copyright 2001-2008 by Michael G Schwern . - Copyright 2019 Chad Granum . + Copyright 2019-2020 Chad Granum . License: GPL-1+ or Artistic Comment: This program is free software; you can redistribute it and/or @@ -1142,11 +1136,13 @@ Files: cpan/Text-Balanced/* Copyright: Copyright 1997 - 2001 Damian Conway. All Rights Reserved. - Some (minor) parts copyright 2009 Adam Kennedy. + Copyright (C) 2009 Adam Kennedy. + Copyright (C) 2015 Steve Hay. All rights reserved. License: GPL-1+ or Artistic Comment: - This module is free software. It may be used, redistributed and/or - modified under the same terms as Perl itself. + This module is free software; you can redistribute it and/or modify it under the + same terms as Perl itself, i.e. under the terms of either the GNU General Public + License or the Artistic License, as specified in the F file. Files: cpan/Text-ParseWords/* Copyright: unknown @@ -1165,9 +1161,16 @@ Copyright (C) 2012-2013 Google, Inc. License: TEXT-TABS +Files: cpan/Tie-RefHash/* +Copyright: + This software is copyright (c) 2006 by יובל קוג'מן (Yuval Kogman) . +License: GPL-1+ or Artistic +Comment: + This is free software; you can redistribute it and/or modify it under + the same terms as the Perl 5 programming language system itself. + Files: cpan/bignum/* - cpan/Tie-RefHash/* cpan/Win32API-File/* cpan/ExtUtils-Install/* cpan/Math-BigInt/* @@ -1185,7 +1188,7 @@ Files: cpan/Time-Local/* Copyright: - Copyright (c) 1997 - 2018 by Graham Barr & Dave Rolsky. + Copyright (c) 1997 - 2020 by Graham Barr & Dave Rolsky. License: GPL-1+ or Artistic Comment: This is free software; you can redistribute it and/or modify it under @@ -1211,7 +1214,7 @@ Files: cpan/Unicode-Collate/* Copyright: - This module is Copyright(C) 2001-2018, SADAHIRO Tomoyuki. Japan. All + This module is Copyright(C) 2001-2020, SADAHIRO Tomoyuki. Japan. All rights reserved. License: GPL-1+ or Artistic Comment: @@ -1220,7 +1223,7 @@ Files: cpan/Unicode-Collate/Collate/allkeys.txt Copyright: - Copyright (c) 2017 Unicode, Inc. + Copyright (c) 2020 Unicode, Inc. License: Unicode Comment: For terms of use, see http://www.unicode.org/terms_of_use.html @@ -1399,7 +1402,7 @@ Files: dist/Net-Ping/* Copyright: - Copyright (c) 2017-2018, Reini Urban. All rights reserved. + Copyright (c) 2017-2020, Reini Urban. All rights reserved. Copyright (c) 2016, cPanel Inc. All rights reserved. Copyright (c) 2012, Steve Peters. All rights reserved. Copyright (c) 2002-2003, Rob Brown. All rights reserved. @@ -1616,15 +1619,6 @@ You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the README file. -Files: ext/DynaLoader/dl_symbian.xs -Copyright: 2004, Nokia -License: GPL-1+ or Artistic -Comment: - ---------------------------------------- - The license in the file is specified as - . - License: Artistic/GPL - Files: ext/Errno/* Copyright: Copyright (c) 1997-8 Graham Barr. All rights reserved. @@ -1959,6 +1953,8 @@ Copyright (c) 2017, Lukas Mai Copyright (c) 2017 Dagfinn Ilmari Mannsåker Copyright (c) 2017-2019, Karl Williamson + Copyright (c) 2020, Raphael Manfredi and Karl Williamson + Copyright (c) 2021 H.Merijn Brand, Karl Williamson License: Artistic or GPL-1+ or Artistic-dist Comment: From regen-configure/U/README: diff -Nru perl-5.32.1/debian/cross/alpha/config.sh.debug.patch perl-5.34.0/debian/cross/alpha/config.sh.debug.patch --- perl-5.32.1/debian/cross/alpha/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/alpha/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:25.363984189 +0200 -+++ config.sh.debug 2021-02-22 16:50:25.351941204 +0200 +--- config.sh.static 2021-08-25 21:57:38.360282608 +0300 ++++ config.sh.debug 2021-08-25 21:57:38.348282300 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=alpha-linux-gnu-gcc -Dcpp=alpha-linux-gnu-cpp -Dld=alpha-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/alpha-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=alpha-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/alpha-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/alpha-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/alpha-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=alpha-linux-gnu-gcc -Dcpp=alpha-linux-gnu-cpp -Dld=alpha-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=alpha-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/alpha-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/alpha-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/alpha-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=alpha-linux-gnu-gcc -Dcpp=alpha-linux-gnu-cpp -Dld=alpha-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/alpha-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=alpha-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/alpha-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/alpha-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/alpha-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=alpha-linux-gnu-gcc -Dcpp=alpha-linux-gnu-cpp -Dld=alpha-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=alpha-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/alpha-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/alpha-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/alpha-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/alpha-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/alpha-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/alpha-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/alpha/config.sh.shared.patch perl-5.34.0/debian/cross/alpha/config.sh.shared.patch --- perl-5.32.1/debian/cross/alpha/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/alpha/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:25.363984189 +0200 -+++ config.sh.shared 2021-02-22 16:50:25.351941204 +0200 +--- config.sh.static 2021-08-25 21:57:38.360282608 +0300 ++++ config.sh.shared 2021-08-25 21:57:38.352282403 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=alpha-linux-gnu-gcc -Dcpp=alpha-linux-gnu-cpp -Dld=alpha-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/alpha-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=alpha-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/alpha-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/alpha-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/alpha-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=alpha-linux-gnu-gcc -Dcpp=alpha-linux-gnu-cpp -Dld=alpha-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/alpha-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=alpha-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/alpha-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/alpha-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/alpha-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=alpha-linux-gnu-gcc -Dcpp=alpha-linux-gnu-cpp -Dld=alpha-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=alpha-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/alpha-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/alpha-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/alpha-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=alpha-linux-gnu-gcc -Dcpp=alpha-linux-gnu-cpp -Dld=alpha-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=alpha-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/alpha-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/alpha-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/alpha-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/alpha-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/alpha-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/alpha-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/alpha/config.sh.static perl-5.34.0/debian/cross/alpha/config.sh.static --- perl-5.32.1/debian/cross/alpha/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/alpha/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 alpha gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=alpha-linux-gnu-gcc -Dcpp=alpha-linux-gnu-cpp -Dld=alpha-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/alpha-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=alpha-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/alpha-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/alpha-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/alpha-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=alpha-linux-gnu-gcc -Dcpp=alpha-linux-gnu-cpp -Dld=alpha-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/alpha-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=alpha-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/alpha-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/alpha-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/alpha-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=alpha-linux-gnu' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/alpha-linux-gnu/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/alpha-linux-gnu/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/alpha-linux-gnu/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/alpha-linux-gnu/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/alpha-linux-gnu/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/alpha-linux-gnu/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/alpha-linux-gnu/perl/5.32' -archlibexp='/usr/lib/alpha-linux-gnu/perl/5.32' +archlib='/usr/lib/alpha-linux-gnu/perl/5.34' +archlibexp='/usr/lib/alpha-linux-gnu/perl/5.34' archname64='' archname='alpha-linux-gnu-thread-multi' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -127,13 +128,13 @@ cppminus='-' cpprun='alpha-linux-gnu-gcc -E' cppstdin='alpha-linux-gnu-gcc -E' -cppsymbols='LANGUAGE_C=1 _FILE_OFFSET_BITS=64 _FORTIFY_SOURCE=2 _GNU_SOURCE=1 _IEEE_FP=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 _LONGLONG=1 _LP64=1 _POSIX_C_SOURCE=200809L _POSIX_SOURCE=1 _REENTRANT=1 _STDC_PREDEF_H=1 _XOPEN_SOURCE=700 _XOPEN_SOURCE_EXTENDED=1 __ATOMIC_ACQUIRE=2 __ATOMIC_ACQ_REL=4 __ATOMIC_CONSUME=1 __ATOMIC_RELAXED=0 __ATOMIC_RELEASE=3 __ATOMIC_SEQ_CST=5 __BIGGEST_ALIGNMENT__=16 __BYTE_ORDER__=1234 __CHAR16_TYPE__=short\ unsigned\ int __CHAR32_TYPE__=unsigned\ int __CHAR_BIT__=8 __DBL_DECIMAL_DIG__=17 __DBL_DENORM_MIN__=((double)4.94065645841246544176568792868221372e-324L) __DBL_DIG__=15 __DBL_EPSILON__=((double)2.22044604925031308084726333618164062e-16L) __DBL_HAS_DENORM__=1 __DBL_HAS_INFINITY__=1 __DBL_HAS_QUIET_NAN__=1 __DBL_MANT_DIG__=53 __DBL_MAX_10_EXP__=308 __DBL_MAX_EXP__=1024 __DBL_MAX__=((double)1.79769313486231570814527423731704357e+308L) __DBL_MIN_10_EXP__=(-307) __DBL_MIN_EXP__=(-1021) __DBL_MIN__=((double)2.22507385850720138309023271733240406e-308L) __DBL_NORM_MAX__=((double)1.79769313486231570814527423731704357e+308L) __DECIMAL_DIG__=36 __DEC_EVAL_METHOD__=2 __ELF__=1 __FINITE_MATH_ONLY__=0 __FLOAT_WORD_ORDER__=1234 __FLT128_DECIMAL_DIG__=36 __FLT128_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F128 __FLT128_DIG__=33 __FLT128_EPSILON__=1.92592994438723585305597794258492732e-34F128 __FLT128_HAS_DENORM__=1 __FLT128_HAS_INFINITY__=1 __FLT128_HAS_QUIET_NAN__=1 __FLT128_MANT_DIG__=113 __FLT128_MAX_10_EXP__=4932 __FLT128_MAX_EXP__=16384 __FLT128_MAX__=1.18973149535723176508575932662800702e+4932F128 __FLT128_MIN_10_EXP__=(-4931) __FLT128_MIN_EXP__=(-16381) __FLT128_MIN__=3.36210314311209350626267781732175260e-4932F128 __FLT128_NORM_MAX__=1.18973149535723176508575932662800702e+4932F128 __FLT32X_DECIMAL_DIG__=17 __FLT32X_DENORM_MIN__=4.94065645841246544176568792868221372e-324F32x __FLT32X_DIG__=15 __FLT32X_EPSILON__=2.22044604925031308084726333618164062e-16F32x __FLT32X_HAS_DENORM__=1 __FLT32X_HAS_INFINITY__=1 __FLT32X_HAS_QUIET_NAN__=1 __FLT32X_MANT_DIG__=53 __FLT32X_MAX_10_EXP__=308 __FLT32X_MAX_EXP__=1024 __FLT32X_MAX__=1.79769313486231570814527423731704357e+308F32x __FLT32X_MIN_10_EXP__=(-307) __FLT32X_MIN_EXP__=(-1021) __FLT32X_MIN__=2.22507385850720138309023271733240406e-308F32x __FLT32X_NORM_MAX__=1.79769313486231570814527423731704357e+308F32x __FLT32_DECIMAL_DIG__=9 __FLT32_DENORM_MIN__=1.40129846432481707092372958328991613e-45F32 __FLT32_DIG__=6 __FLT32_EPSILON__=1.19209289550781250000000000000000000e-7F32 __FLT32_HAS_DENORM__=1 __FLT32_HAS_INFINITY__=1 __FLT32_HAS_QUIET_NAN__=1 __FLT32_MANT_DIG__=24 __FLT32_MAX_10_EXP__=38 __FLT32_MAX_EXP__=128 __FLT32_MAX__=3.40282346638528859811704183484516925e+38F32 __FLT32_MIN_10_EXP__=(-37) __FLT32_MIN_EXP__=(-125) __FLT32_MIN__=1.17549435082228750796873653722224568e-38F32 __FLT32_NORM_MAX__=3.40282346638528859811704183484516925e+38F32 __FLT64X_DECIMAL_DIG__=36 __FLT64X_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F64x __FLT64X_DIG__=33 __FLT64X_EPSILON__=1.92592994438723585305597794258492732e-34F64x __FLT64X_HAS_DENORM__=1 __FLT64X_HAS_INFINITY__=1 __FLT64X_HAS_QUIET_NAN__=1 __FLT64X_MANT_DIG__=113 __FLT64X_MAX_10_EXP__=4932 __FLT64X_MAX_EXP__=16384 __FLT64X_MAX__=1.18973149535723176508575932662800702e+4932F64x __FLT64X_MIN_10_EXP__=(-4931) __FLT64X_MIN_EXP__=(-16381) __FLT64X_MIN__=3.36210314311209350626267781732175260e-4932F64x __FLT64X_NORM_MAX__=1.18973149535723176508575932662800702e+4932F64x __FLT64_DECIMAL_DIG__=17 __FLT64_DENORM_MIN__=4.94065645841246544176568792868221372e-324F64 __FLT64_DIG__=15 __FLT64_EPSILON__=2.22044604925031308084726333618164062e-16F64 __FLT64_HAS_DENORM__=1 __FLT64_HAS_INFINITY__=1 __FLT64_HAS_QUIET_NAN__=1 __FLT64_MANT_DIG__=53 __FLT64_MAX_10_EXP__=308 __FLT64_MAX_EXP__=1024 __FLT64_MAX__=1.79769313486231570814527423731704357e+308F64 __FLT64_MIN_10_EXP__=(-307) __FLT64_MIN_EXP__=(-1021) __FLT64_MIN__=2.22507385850720138309023271733240406e-308F64 __FLT64_NORM_MAX__=1.79769313486231570814527423731704357e+308F64 __FLT_DECIMAL_DIG__=9 __FLT_DENORM_MIN__=1.40129846432481707092372958328991613e-45F __FLT_DIG__=6 __FLT_EPSILON__=1.19209289550781250000000000000000000e-7F __FLT_EVAL_METHOD_TS_18661_3__=0 __FLT_EVAL_METHOD__=0 __FLT_HAS_DENORM__=1 __FLT_HAS_INFINITY__=1 __FLT_HAS_QUIET_NAN__=1 __FLT_MANT_DIG__=24 __FLT_MAX_10_EXP__=38 __FLT_MAX_EXP__=128 __FLT_MAX__=3.40282346638528859811704183484516925e+38F __FLT_MIN_10_EXP__=(-37) __FLT_MIN_EXP__=(-125) __FLT_MIN__=1.17549435082228750796873653722224568e-38F __FLT_NORM_MAX__=3.40282346638528859811704183484516925e+38F __FLT_RADIX__=2 __GCC_ATOMIC_BOOL_LOCK_FREE=2 __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR_LOCK_FREE=2 __GCC_ATOMIC_INT_LOCK_FREE=2 __GCC_ATOMIC_LLONG_LOCK_FREE=2 __GCC_ATOMIC_LONG_LOCK_FREE=2 __GCC_ATOMIC_POINTER_LOCK_FREE=2 __GCC_ATOMIC_SHORT_LOCK_FREE=2 __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1 __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2 __GCC_HAVE_DWARF2_CFI_ASM=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1 __GCC_IEC_559=2 __GCC_IEC_559_COMPLEX=2 __GLIBC_MINOR__=31 __GLIBC__=2 __GNUC_MINOR__=2 __GNUC_PATCHLEVEL__=1 __GNUC_STDC_INLINE__=1 __GNUC__=10 __GNU_LIBRARY__=6 __GXX_ABI_VERSION=1014 __INT16_C=__INT16_C __INT16_MAX__=0x7fff __INT16_TYPE__=short\ int __INT32_C=__INT32_C __INT32_MAX__=0x7fffffff __INT32_TYPE__=int __INT64_C=__INT64_C __INT64_MAX__=0x7fffffffffffffffL __INT64_TYPE__=long\ int __INT8_C=__INT8_C __INT8_MAX__=0x7f __INT8_TYPE__=signed\ char __INTMAX_C=__INTMAX_C __INTMAX_MAX__=0x7fffffffffffffffL __INTMAX_TYPE__=long\ int __INTMAX_WIDTH__=64 __INTPTR_MAX__=0x7fffffffffffffffL __INTPTR_TYPE__=long\ int __INTPTR_WIDTH__=64 __INT_FAST16_MAX__=0x7fffffffffffffffL __INT_FAST16_TYPE__=long\ int __INT_FAST16_WIDTH__=64 __INT_FAST32_MAX__=0x7fffffffffffffffL __INT_FAST32_TYPE__=long\ int __INT_FAST32_WIDTH__=64 __INT_FAST64_MAX__=0x7fffffffffffffffL __INT_FAST64_TYPE__=long\ int __INT_FAST64_WIDTH__=64 __INT_FAST8_MAX__=0x7f __INT_FAST8_TYPE__=signed\ char __INT_FAST8_WIDTH__=8 __INT_LEAST16_MAX__=0x7fff __INT_LEAST16_TYPE__=short\ int __INT_LEAST16_WIDTH__=16 __INT_LEAST32_MAX__=0x7fffffff __INT_LEAST32_TYPE__=int __INT_LEAST32_WIDTH__=32 __INT_LEAST64_MAX__=0x7fffffffffffffffL __INT_LEAST64_TYPE__=long\ int __INT_LEAST64_WIDTH__=64 __INT_LEAST8_MAX__=0x7f __INT_LEAST8_TYPE__=signed\ char __INT_LEAST8_WIDTH__=8 __INT_MAX__=0x7fffffff __INT_WIDTH__=32 __LANGUAGE_C=1 __LANGUAGE_C__=1 __LDBL_DECIMAL_DIG__=36 __LDBL_DENORM_MIN__=6.47517511943802511092443895822764655e-4966L __LDBL_DIG__=33 __LDBL_EPSILON__=1.92592994438723585305597794258492732e-34L __LDBL_HAS_DENORM__=1 __LDBL_HAS_INFINITY__=1 __LDBL_HAS_QUIET_NAN__=1 __LDBL_MANT_DIG__=113 __LDBL_MAX_10_EXP__=4932 __LDBL_MAX_EXP__=16384 __LDBL_MAX__=1.18973149535723176508575932662800702e+4932L __LDBL_MIN_10_EXP__=(-4931) __LDBL_MIN_EXP__=(-16381) __LDBL_MIN__=3.36210314311209350626267781732175260e-4932L __LDBL_NORM_MAX__=1.18973149535723176508575932662800702e+4932L __LONG_DOUBLE_128__=1 __LONG_LONG_MAX__=0x7fffffffffffffffLL __LONG_LONG_WIDTH__=64 __LONG_MAX__=0x7fffffffffffffffL __LONG_WIDTH__=64 __LP64__=1 __ORDER_BIG_ENDIAN__=4321 __ORDER_LITTLE_ENDIAN__=1234 __ORDER_PDP_ENDIAN__=3412 __PRAGMA_REDEFINE_EXTNAME=1 __PTRDIFF_MAX__=0x7fffffffffffffffL __PTRDIFF_TYPE__=long\ int __PTRDIFF_WIDTH__=64 __REGISTER_PREFIX__= __SCHAR_MAX__=0x7f __SCHAR_WIDTH__=8 __SHRT_MAX__=0x7fff __SHRT_WIDTH__=16 __SIG_ATOMIC_MAX__=0x7fffffff __SIG_ATOMIC_MIN__=(-0x7fffffff\ -\ 1) __SIG_ATOMIC_TYPE__=int __SIG_ATOMIC_WIDTH__=32 __SIZEOF_DOUBLE__=8 __SIZEOF_FLOAT__=4 __SIZEOF_INT128__=16 __SIZEOF_INT__=4 __SIZEOF_LONG_DOUBLE__=16 __SIZEOF_LONG_LONG__=8 __SIZEOF_LONG__=8 __SIZEOF_POINTER__=8 __SIZEOF_PTRDIFF_T__=8 __SIZEOF_SHORT__=2 __SIZEOF_SIZE_T__=8 __SIZEOF_WCHAR_T__=4 __SIZEOF_WINT_T__=4 __SIZE_MAX__=0xffffffffffffffffUL __SIZE_TYPE__=long\ unsigned\ int __SIZE_WIDTH__=64 __STDC_HOSTED__=1 __STDC_IEC_559_COMPLEX__=1 __STDC_IEC_559__=1 __STDC_ISO_10646__=201706L __STDC_UTF_16__=1 __STDC_UTF_32__=1 __STDC_VERSION__=201710L __STDC__=1 __UINT16_C=__UINT16_C __UINT16_MAX__=0xffff __UINT16_TYPE__=short\ unsigned\ int __UINT32_C=__UINT32_C __UINT32_MAX__=0xffffffffU __UINT32_TYPE__=unsigned\ int __UINT64_C=__UINT64_C __UINT64_MAX__=0xffffffffffffffffUL __UINT64_TYPE__=long\ unsigned\ int __UINT8_C=__UINT8_C __UINT8_MAX__=0xff __UINT8_TYPE__=unsigned\ char __UINTMAX_C=__UINTMAX_C __UINTMAX_MAX__=0xffffffffffffffffUL __UINTMAX_TYPE__=long\ unsigned\ int __UINTPTR_MAX__=0xffffffffffffffffUL __UINTPTR_TYPE__=long\ unsigned\ int __UINT_FAST16_MAX__=0xffffffffffffffffUL __UINT_FAST16_TYPE__=long\ unsigned\ int __UINT_FAST32_MAX__=0xffffffffffffffffUL __UINT_FAST32_TYPE__=long\ unsigned\ int __UINT_FAST64_MAX__=0xffffffffffffffffUL __UINT_FAST64_TYPE__=long\ unsigned\ int __UINT_FAST8_MAX__=0xff __UINT_FAST8_TYPE__=unsigned\ char __UINT_LEAST16_MAX__=0xffff __UINT_LEAST16_TYPE__=short\ unsigned\ int __UINT_LEAST32_MAX__=0xffffffffU __UINT_LEAST32_TYPE__=unsigned\ int __UINT_LEAST64_MAX__=0xffffffffffffffffUL __UINT_LEAST64_TYPE__=long\ unsigned\ int __UINT_LEAST8_MAX__=0xff __UINT_LEAST8_TYPE__=unsigned\ char __USER_LABEL_PREFIX__= __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_POSIX=1 __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 __VERSION__="10.2.1\ 20210110" __WCHAR_MAX__=0x7fffffff __WCHAR_MIN__=(-0x7fffffff\ -\ 1) __WCHAR_TYPE__=int __WCHAR_WIDTH__=32 __WINT_MAX__=0xffffffffU __WINT_MIN__=0U __WINT_TYPE__=unsigned\ int __WINT_WIDTH__=32 __alpha=1 __alpha__=1 __alpha_ev4__=1 __gnu_linux__=1 __linux=1 __linux__=1 __unix=1 __unix__=1 linux=1 unix=1' +cppsymbols='LANGUAGE_C=1 _FILE_OFFSET_BITS=64 _FORTIFY_SOURCE=2 _GNU_SOURCE=1 _IEEE_FP=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 _LONGLONG=1 _LP64=1 _POSIX_C_SOURCE=200809L _POSIX_SOURCE=1 _REENTRANT=1 _STDC_PREDEF_H=1 _XOPEN_SOURCE=700 _XOPEN_SOURCE_EXTENDED=1 __ATOMIC_ACQUIRE=2 __ATOMIC_ACQ_REL=4 __ATOMIC_CONSUME=1 __ATOMIC_RELAXED=0 __ATOMIC_RELEASE=3 __ATOMIC_SEQ_CST=5 __BIGGEST_ALIGNMENT__=16 __BYTE_ORDER__=1234 __CHAR16_TYPE__=short\ unsigned\ int __CHAR32_TYPE__=unsigned\ int __CHAR_BIT__=8 __DBL_DECIMAL_DIG__=17 __DBL_DENORM_MIN__=((double)4.94065645841246544176568792868221372e-324L) __DBL_DIG__=15 __DBL_EPSILON__=((double)2.22044604925031308084726333618164062e-16L) __DBL_HAS_DENORM__=1 __DBL_HAS_INFINITY__=1 __DBL_HAS_QUIET_NAN__=1 __DBL_IS_IEC_60559__=2 __DBL_MANT_DIG__=53 __DBL_MAX_10_EXP__=308 __DBL_MAX_EXP__=1024 __DBL_MAX__=((double)1.79769313486231570814527423731704357e+308L) __DBL_MIN_10_EXP__=(-307) __DBL_MIN_EXP__=(-1021) __DBL_MIN__=((double)2.22507385850720138309023271733240406e-308L) __DBL_NORM_MAX__=((double)1.79769313486231570814527423731704357e+308L) __DECIMAL_DIG__=36 __DEC_EVAL_METHOD__=2 __ELF__=1 __FINITE_MATH_ONLY__=0 __FLOAT_WORD_ORDER__=1234 __FLT128_DECIMAL_DIG__=36 __FLT128_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F128 __FLT128_DIG__=33 __FLT128_EPSILON__=1.92592994438723585305597794258492732e-34F128 __FLT128_HAS_DENORM__=1 __FLT128_HAS_INFINITY__=1 __FLT128_HAS_QUIET_NAN__=1 __FLT128_IS_IEC_60559__=2 __FLT128_MANT_DIG__=113 __FLT128_MAX_10_EXP__=4932 __FLT128_MAX_EXP__=16384 __FLT128_MAX__=1.18973149535723176508575932662800702e+4932F128 __FLT128_MIN_10_EXP__=(-4931) __FLT128_MIN_EXP__=(-16381) __FLT128_MIN__=3.36210314311209350626267781732175260e-4932F128 __FLT128_NORM_MAX__=1.18973149535723176508575932662800702e+4932F128 __FLT32X_DECIMAL_DIG__=17 __FLT32X_DENORM_MIN__=4.94065645841246544176568792868221372e-324F32x __FLT32X_DIG__=15 __FLT32X_EPSILON__=2.22044604925031308084726333618164062e-16F32x __FLT32X_HAS_DENORM__=1 __FLT32X_HAS_INFINITY__=1 __FLT32X_HAS_QUIET_NAN__=1 __FLT32X_IS_IEC_60559__=2 __FLT32X_MANT_DIG__=53 __FLT32X_MAX_10_EXP__=308 __FLT32X_MAX_EXP__=1024 __FLT32X_MAX__=1.79769313486231570814527423731704357e+308F32x __FLT32X_MIN_10_EXP__=(-307) __FLT32X_MIN_EXP__=(-1021) __FLT32X_MIN__=2.22507385850720138309023271733240406e-308F32x __FLT32X_NORM_MAX__=1.79769313486231570814527423731704357e+308F32x __FLT32_DECIMAL_DIG__=9 __FLT32_DENORM_MIN__=1.40129846432481707092372958328991613e-45F32 __FLT32_DIG__=6 __FLT32_EPSILON__=1.19209289550781250000000000000000000e-7F32 __FLT32_HAS_DENORM__=1 __FLT32_HAS_INFINITY__=1 __FLT32_HAS_QUIET_NAN__=1 __FLT32_IS_IEC_60559__=2 __FLT32_MANT_DIG__=24 __FLT32_MAX_10_EXP__=38 __FLT32_MAX_EXP__=128 __FLT32_MAX__=3.40282346638528859811704183484516925e+38F32 __FLT32_MIN_10_EXP__=(-37) __FLT32_MIN_EXP__=(-125) __FLT32_MIN__=1.17549435082228750796873653722224568e-38F32 __FLT32_NORM_MAX__=3.40282346638528859811704183484516925e+38F32 __FLT64X_DECIMAL_DIG__=36 __FLT64X_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F64x __FLT64X_DIG__=33 __FLT64X_EPSILON__=1.92592994438723585305597794258492732e-34F64x __FLT64X_HAS_DENORM__=1 __FLT64X_HAS_INFINITY__=1 __FLT64X_HAS_QUIET_NAN__=1 __FLT64X_IS_IEC_60559__=2 __FLT64X_MANT_DIG__=113 __FLT64X_MAX_10_EXP__=4932 __FLT64X_MAX_EXP__=16384 __FLT64X_MAX__=1.18973149535723176508575932662800702e+4932F64x __FLT64X_MIN_10_EXP__=(-4931) __FLT64X_MIN_EXP__=(-16381) __FLT64X_MIN__=3.36210314311209350626267781732175260e-4932F64x __FLT64X_NORM_MAX__=1.18973149535723176508575932662800702e+4932F64x __FLT64_DECIMAL_DIG__=17 __FLT64_DENORM_MIN__=4.94065645841246544176568792868221372e-324F64 __FLT64_DIG__=15 __FLT64_EPSILON__=2.22044604925031308084726333618164062e-16F64 __FLT64_HAS_DENORM__=1 __FLT64_HAS_INFINITY__=1 __FLT64_HAS_QUIET_NAN__=1 __FLT64_IS_IEC_60559__=2 __FLT64_MANT_DIG__=53 __FLT64_MAX_10_EXP__=308 __FLT64_MAX_EXP__=1024 __FLT64_MAX__=1.79769313486231570814527423731704357e+308F64 __FLT64_MIN_10_EXP__=(-307) __FLT64_MIN_EXP__=(-1021) __FLT64_MIN__=2.22507385850720138309023271733240406e-308F64 __FLT64_NORM_MAX__=1.79769313486231570814527423731704357e+308F64 __FLT_DECIMAL_DIG__=9 __FLT_DENORM_MIN__=1.40129846432481707092372958328991613e-45F __FLT_DIG__=6 __FLT_EPSILON__=1.19209289550781250000000000000000000e-7F __FLT_EVAL_METHOD_TS_18661_3__=0 __FLT_EVAL_METHOD__=0 __FLT_HAS_DENORM__=1 __FLT_HAS_INFINITY__=1 __FLT_HAS_QUIET_NAN__=1 __FLT_IS_IEC_60559__=2 __FLT_MANT_DIG__=24 __FLT_MAX_10_EXP__=38 __FLT_MAX_EXP__=128 __FLT_MAX__=3.40282346638528859811704183484516925e+38F __FLT_MIN_10_EXP__=(-37) __FLT_MIN_EXP__=(-125) __FLT_MIN__=1.17549435082228750796873653722224568e-38F __FLT_NORM_MAX__=3.40282346638528859811704183484516925e+38F __FLT_RADIX__=2 __GCC_ATOMIC_BOOL_LOCK_FREE=2 __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR_LOCK_FREE=2 __GCC_ATOMIC_INT_LOCK_FREE=2 __GCC_ATOMIC_LLONG_LOCK_FREE=2 __GCC_ATOMIC_LONG_LOCK_FREE=2 __GCC_ATOMIC_POINTER_LOCK_FREE=2 __GCC_ATOMIC_SHORT_LOCK_FREE=2 __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1 __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2 __GCC_HAVE_DWARF2_CFI_ASM=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1 __GCC_IEC_559=2 __GCC_IEC_559_COMPLEX=2 __GLIBC_MINOR__=31 __GLIBC__=2 __GNUC_EXECUTION_CHARSET_NAME="UTF-8" __GNUC_MINOR__=1 __GNUC_PATCHLEVEL__=0 __GNUC_STDC_INLINE__=1 __GNUC_WIDE_EXECUTION_CHARSET_NAME="UTF-32LE" __GNUC__=11 __GNU_LIBRARY__=6 __GXX_ABI_VERSION=1016 __INT16_C=__INT16_C __INT16_MAX__=0x7fff __INT16_TYPE__=short\ int __INT32_C=__INT32_C __INT32_MAX__=0x7fffffff __INT32_TYPE__=int __INT64_C=__INT64_C __INT64_MAX__=0x7fffffffffffffffL __INT64_TYPE__=long\ int __INT8_C=__INT8_C __INT8_MAX__=0x7f __INT8_TYPE__=signed\ char __INTMAX_C=__INTMAX_C __INTMAX_MAX__=0x7fffffffffffffffL __INTMAX_TYPE__=long\ int __INTMAX_WIDTH__=64 __INTPTR_MAX__=0x7fffffffffffffffL __INTPTR_TYPE__=long\ int __INTPTR_WIDTH__=64 __INT_FAST16_MAX__=0x7fffffffffffffffL __INT_FAST16_TYPE__=long\ int __INT_FAST16_WIDTH__=64 __INT_FAST32_MAX__=0x7fffffffffffffffL __INT_FAST32_TYPE__=long\ int __INT_FAST32_WIDTH__=64 __INT_FAST64_MAX__=0x7fffffffffffffffL __INT_FAST64_TYPE__=long\ int __INT_FAST64_WIDTH__=64 __INT_FAST8_MAX__=0x7f __INT_FAST8_TYPE__=signed\ char __INT_FAST8_WIDTH__=8 __INT_LEAST16_MAX__=0x7fff __INT_LEAST16_TYPE__=short\ int __INT_LEAST16_WIDTH__=16 __INT_LEAST32_MAX__=0x7fffffff __INT_LEAST32_TYPE__=int __INT_LEAST32_WIDTH__=32 __INT_LEAST64_MAX__=0x7fffffffffffffffL __INT_LEAST64_TYPE__=long\ int __INT_LEAST64_WIDTH__=64 __INT_LEAST8_MAX__=0x7f __INT_LEAST8_TYPE__=signed\ char __INT_LEAST8_WIDTH__=8 __INT_MAX__=0x7fffffff __INT_WIDTH__=32 __LANGUAGE_C=1 __LANGUAGE_C__=1 __LDBL_DECIMAL_DIG__=36 __LDBL_DENORM_MIN__=6.47517511943802511092443895822764655e-4966L __LDBL_DIG__=33 __LDBL_EPSILON__=1.92592994438723585305597794258492732e-34L __LDBL_HAS_DENORM__=1 __LDBL_HAS_INFINITY__=1 __LDBL_HAS_QUIET_NAN__=1 __LDBL_IS_IEC_60559__=2 __LDBL_MANT_DIG__=113 __LDBL_MAX_10_EXP__=4932 __LDBL_MAX_EXP__=16384 __LDBL_MAX__=1.18973149535723176508575932662800702e+4932L __LDBL_MIN_10_EXP__=(-4931) __LDBL_MIN_EXP__=(-16381) __LDBL_MIN__=3.36210314311209350626267781732175260e-4932L __LDBL_NORM_MAX__=1.18973149535723176508575932662800702e+4932L __LONG_DOUBLE_128__=1 __LONG_LONG_MAX__=0x7fffffffffffffffLL __LONG_LONG_WIDTH__=64 __LONG_MAX__=0x7fffffffffffffffL __LONG_WIDTH__=64 __LP64__=1 __ORDER_BIG_ENDIAN__=4321 __ORDER_LITTLE_ENDIAN__=1234 __ORDER_PDP_ENDIAN__=3412 __PRAGMA_REDEFINE_EXTNAME=1 __PTRDIFF_MAX__=0x7fffffffffffffffL __PTRDIFF_TYPE__=long\ int __PTRDIFF_WIDTH__=64 __REGISTER_PREFIX__= __SCHAR_MAX__=0x7f __SCHAR_WIDTH__=8 __SHRT_MAX__=0x7fff __SHRT_WIDTH__=16 __SIG_ATOMIC_MAX__=0x7fffffff __SIG_ATOMIC_MIN__=(-0x7fffffff\ -\ 1) __SIG_ATOMIC_TYPE__=int __SIG_ATOMIC_WIDTH__=32 __SIZEOF_DOUBLE__=8 __SIZEOF_FLOAT__=4 __SIZEOF_INT128__=16 __SIZEOF_INT__=4 __SIZEOF_LONG_DOUBLE__=16 __SIZEOF_LONG_LONG__=8 __SIZEOF_LONG__=8 __SIZEOF_POINTER__=8 __SIZEOF_PTRDIFF_T__=8 __SIZEOF_SHORT__=2 __SIZEOF_SIZE_T__=8 __SIZEOF_WCHAR_T__=4 __SIZEOF_WINT_T__=4 __SIZE_MAX__=0xffffffffffffffffUL __SIZE_TYPE__=long\ unsigned\ int __SIZE_WIDTH__=64 __STDC_HOSTED__=1 __STDC_IEC_559_COMPLEX__=1 __STDC_IEC_559__=1 __STDC_ISO_10646__=201706L __STDC_UTF_16__=1 __STDC_UTF_32__=1 __STDC_VERSION__=201710L __STDC__=1 __UINT16_C=__UINT16_C __UINT16_MAX__=0xffff __UINT16_TYPE__=short\ unsigned\ int __UINT32_C=__UINT32_C __UINT32_MAX__=0xffffffffU __UINT32_TYPE__=unsigned\ int __UINT64_C=__UINT64_C __UINT64_MAX__=0xffffffffffffffffUL __UINT64_TYPE__=long\ unsigned\ int __UINT8_C=__UINT8_C __UINT8_MAX__=0xff __UINT8_TYPE__=unsigned\ char __UINTMAX_C=__UINTMAX_C __UINTMAX_MAX__=0xffffffffffffffffUL __UINTMAX_TYPE__=long\ unsigned\ int __UINTPTR_MAX__=0xffffffffffffffffUL __UINTPTR_TYPE__=long\ unsigned\ int __UINT_FAST16_MAX__=0xffffffffffffffffUL __UINT_FAST16_TYPE__=long\ unsigned\ int __UINT_FAST32_MAX__=0xffffffffffffffffUL __UINT_FAST32_TYPE__=long\ unsigned\ int __UINT_FAST64_MAX__=0xffffffffffffffffUL __UINT_FAST64_TYPE__=long\ unsigned\ int __UINT_FAST8_MAX__=0xff __UINT_FAST8_TYPE__=unsigned\ char __UINT_LEAST16_MAX__=0xffff __UINT_LEAST16_TYPE__=short\ unsigned\ int __UINT_LEAST32_MAX__=0xffffffffU __UINT_LEAST32_TYPE__=unsigned\ int __UINT_LEAST64_MAX__=0xffffffffffffffffUL __UINT_LEAST64_TYPE__=long\ unsigned\ int __UINT_LEAST8_MAX__=0xff __UINT_LEAST8_TYPE__=unsigned\ char __USER_LABEL_PREFIX__= __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_POSIX=1 __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 __VERSION__="11.1.0" __WCHAR_MAX__=0x7fffffff __WCHAR_MIN__=(-0x7fffffff\ -\ 1) __WCHAR_TYPE__=int __WCHAR_WIDTH__=32 __WINT_MAX__=0xffffffffU __WINT_MIN__=0U __WINT_TYPE__=unsigned\ int __WINT_WIDTH__=32 __alpha=1 __alpha__=1 __alpha_ev4__=1 __gnu_linux__=1 __linux=1 __linux__=1 __unix=1 __unix__=1 linux=1 unix=1' crypt_r_proto='REENTRANT_PROTO_B_CCS' cryptlib='' csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -739,7 +741,7 @@ full_sed='/bin/sed' gccansipedantic='' gccosandvers='' -gccversion='10.2.1 20210110' +gccversion='11.1.0' getgrent_r_proto='REENTRANT_PROTO_I_SBWR' getgrgid_r_proto='REENTRANT_PROTO_I_TSBWR' getgrnam_r_proto='REENTRANT_PROTO_I_CSBWR' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/alpha-linux-gnu-thread-multi' -inc_version_list_init='"5.32.0","5.32.0/alpha-linux-gnu-thread-multi",0' +inc_version_list='' +inc_version_list_init='0' incpath='' -incpth='/usr/lib/gcc/alpha-linux-gnu/10/include /usr/local/include /usr/include/alpha-linux-gnu /usr/include' +incpth='/usr/lib/gcc/alpha-linux-gnu/11/include /usr/local/include /usr/include/alpha-linux-gnu /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/alpha-linux-gnu/perl/5.32' +installarchlib='/usr/lib/alpha-linux-gnu/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/alpha-linux-gnu/perl/5.32.1' +installsitearch='/usr/local/lib/alpha-linux-gnu/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/alpha-linux-gnu/perl5/5.32' +installvendorarch='/usr/lib/alpha-linux-gnu/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"ld"' ivsize='8' ivtype='long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='alpha-linux-gnu-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='/usr/lib/alpha-linux-gnu/libc.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/alpha-linux-gnu /usr/lib /lib/alpha-linux-gnu /lib /usr/lib/alpha-linux-gnu' +libpth='/usr/local/lib /usr/lib/alpha-linux-gnu /usr/lib /lib/alpha-linux-gnu /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/alpha-linux-gnu' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/alpha-linux-gnu/libgdbm.so /usr/lib/alpha-linux-gnu/libgdbm_compat.so /usr/lib/alpha-linux-gnu/libdb.so /usr/lib/alpha-linux-gnu/libdl.so /usr/lib/alpha-linux-gnu/libm.so /usr/lib/alpha-linux-gnu/libpthread.so /usr/lib/alpha-linux-gnu/libc.so /usr/lib/alpha-linux-gnu/libcrypt.so' -libspath=' /usr/local/lib /usr/include/alpha-linux-gnu /usr/lib /lib/alpha-linux-gnu /lib /usr/lib/alpha-linux-gnu' +libspath=' /usr/local/lib /usr/lib/alpha-linux-gnu /usr/lib /lib/alpha-linux-gnu /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1024,13 +1026,13 @@ pg='pg' phostname='hostname' pidtype='pid_t' -plibpth='/lib/alpha-linux-gnu/10 /lib/alpha-linux-gnu /lib /usr/lib/alpha-linux-gnu/10 /usr/lib/alpha-linux-gnu /usr/lib' +plibpth='/lib/alpha-linux-gnu/11 /lib/alpha-linux-gnu /lib /usr/lib/alpha-linux-gnu/11 /usr/lib/alpha-linux-gnu /usr/lib' pmake='' pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='8' quadkind='2' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 20, 23, 29, 0' sig_size='69' signal_t='void' -sitearch='/usr/local/lib/alpha-linux-gnu/perl/5.32.1' -sitearchexp='/usr/local/lib/alpha-linux-gnu/perl/5.32.1' +sitearch='/usr/local/lib/alpha-linux-gnu/perl/5.34.0' +sitearchexp='/usr/local/lib/alpha-linux-gnu/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long' -use5005threads='undef' use64bitall='define' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long' uvuformat='"lu"' uvxformat='"lx"' -vendorarch='/usr/lib/alpha-linux-gnu/perl5/5.32' -vendorarchexp='/usr/lib/alpha-linux-gnu/perl5/5.32' +vendorarch='/usr/lib/alpha-linux-gnu/perl5/5.34' +vendorarchexp='/usr/lib/alpha-linux-gnu/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/amd64/config.sh.debug.patch perl-5.34.0/debian/cross/amd64/config.sh.debug.patch --- perl-5.32.1/debian/cross/amd64/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/amd64/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:25.897889820 +0200 -+++ config.sh.debug 2021-02-22 16:50:25.873803853 +0200 +--- config.sh.static 2021-08-25 21:57:38.896296340 +0300 ++++ config.sh.debug 2021-08-25 21:57:38.884296033 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=x86_64-linux-gnu-gcc -Dcpp=x86_64-linux-gnu-cpp -Dld=x86_64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/x86_64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=x86_64-linux-gnu-gcc -Dcpp=x86_64-linux-gnu-cpp -Dld=x86_64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=x86_64-linux-gnu-gcc -Dcpp=x86_64-linux-gnu-cpp -Dld=x86_64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/x86_64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=x86_64-linux-gnu-gcc -Dcpp=x86_64-linux-gnu-cpp -Dld=x86_64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/x86_64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/x86_64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/x86_64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/amd64/config.sh.shared.patch perl-5.34.0/debian/cross/amd64/config.sh.shared.patch --- perl-5.32.1/debian/cross/amd64/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/amd64/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:25.897889820 +0200 -+++ config.sh.shared 2021-02-22 16:50:25.877818180 +0200 +--- config.sh.static 2021-08-25 21:57:38.896296340 +0300 ++++ config.sh.shared 2021-08-25 21:57:38.888296136 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=x86_64-linux-gnu-gcc -Dcpp=x86_64-linux-gnu-cpp -Dld=x86_64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/x86_64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=x86_64-linux-gnu-gcc -Dcpp=x86_64-linux-gnu-cpp -Dld=x86_64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/x86_64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=x86_64-linux-gnu-gcc -Dcpp=x86_64-linux-gnu-cpp -Dld=x86_64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=x86_64-linux-gnu-gcc -Dcpp=x86_64-linux-gnu-cpp -Dld=x86_64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/x86_64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/x86_64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/x86_64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/amd64/config.sh.static perl-5.34.0/debian/cross/amd64/config.sh.static --- perl-5.32.1/debian/cross/amd64/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/amd64/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 x86_64 gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=x86_64-linux-gnu-gcc -Dcpp=x86_64-linux-gnu-cpp -Dld=x86_64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/x86_64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=x86_64-linux-gnu-gcc -Dcpp=x86_64-linux-gnu-cpp -Dld=x86_64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/x86_64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=x86_64-linux-gnu' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/x86_64-linux-gnu/perl/5.32' -archlibexp='/usr/lib/x86_64-linux-gnu/perl/5.32' +archlib='/usr/lib/x86_64-linux-gnu/perl/5.34' +archlibexp='/usr/lib/x86_64-linux-gnu/perl/5.34' archname64='' archname='x86_64-linux-gnu-thread-multi' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -133,7 +134,7 @@ csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/x86_64-linux-gnu-thread-multi' -inc_version_list_init='"5.32.0","5.32.0/x86_64-linux-gnu-thread-multi",0' +inc_version_list='' +inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/x86_64-linux-gnu/10/include /usr/local/include /usr/include/x86_64-linux-gnu /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/x86_64-linux-gnu/perl/5.32' +installarchlib='/usr/lib/x86_64-linux-gnu/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/x86_64-linux-gnu/perl/5.32.1' +installsitearch='/usr/local/lib/x86_64-linux-gnu/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/x86_64-linux-gnu/perl5/5.32' +installvendorarch='/usr/lib/x86_64-linux-gnu/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"ld"' ivsize='8' ivtype='long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='x86_64-linux-gnu-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='libc-2.31.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib' +libpth='/usr/local/lib /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/x86_64-linux-gnu' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/x86_64-linux-gnu/libgdbm.so /usr/lib/x86_64-linux-gnu/libgdbm_compat.so /usr/lib/x86_64-linux-gnu/libdb.so /usr/lib/x86_64-linux-gnu/libdl.so /usr/lib/x86_64-linux-gnu/libm.so /usr/lib/x86_64-linux-gnu/libpthread.so /usr/lib/x86_64-linux-gnu/libc.so /usr/lib/x86_64-linux-gnu/libcrypt.so' -libspath=' /usr/local/lib /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib' +libspath=' /usr/local/lib /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1029,8 +1031,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='8' quadkind='2' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 0' sig_size='68' signal_t='void' -sitearch='/usr/local/lib/x86_64-linux-gnu/perl/5.32.1' -sitearchexp='/usr/local/lib/x86_64-linux-gnu/perl/5.32.1' +sitearch='/usr/local/lib/x86_64-linux-gnu/perl/5.34.0' +sitearchexp='/usr/local/lib/x86_64-linux-gnu/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long' -use5005threads='undef' use64bitall='define' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long' uvuformat='"lu"' uvxformat='"lx"' -vendorarch='/usr/lib/x86_64-linux-gnu/perl5/5.32' -vendorarchexp='/usr/lib/x86_64-linux-gnu/perl5/5.32' +vendorarch='/usr/lib/x86_64-linux-gnu/perl5/5.34' +vendorarchexp='/usr/lib/x86_64-linux-gnu/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/arc/config.sh.debug.patch perl-5.34.0/debian/cross/arc/config.sh.debug.patch --- perl-5.32.1/debian/cross/arc/config.sh.debug.patch 2021-09-24 15:20:33.000000000 +0000 +++ perl-5.34.0/debian/cross/arc/config.sh.debug.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ ---- config.sh.static 2021-09-08 21:43:57.490565454 +0300 -+++ config.sh.debug 2021-09-08 21:48:18.548491018 +0300 -@@ -14,7 +14,7 @@ - - : Configure command line arguments. - config_arg0='../Configure' --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arc-linux-gnu-gcc -Dcpp=arc-linux-gnu-cpp -Dld=arc-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arc-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/arc-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arc-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/arc-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arc-linux-gnu-gcc -Dcpp=arc-linux-gnu-cpp -Dld=arc-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arc-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/arc-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arc-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/arc-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' - config_argc=40 - config_arg1='-Dmksymlinks' - config_arg2='-Dusethreads' -@@ -22,7 +22,7 @@ - config_arg4='-Dcc=arc-linux-gnu-gcc' - config_arg5='-Dcpp=arc-linux-gnu-cpp' - config_arg6='-Dld=arc-linux-gnu-gcc' --config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security' -+config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security' - config_arg8='-Dldflags= -Wl,-z,relro' - config_arg9='-Dlddlflags=-shared -Wl,-z,relro' - config_arg10='-Dcccdlflags=-fPIC' -@@ -52,7 +52,7 @@ - config_arg34='-Ui_libutil' - config_arg35='-Ui_xlocale' - config_arg36='-Uversiononly' --config_arg37='-DDEBUGGING=-g' -+config_arg37='-DDEBUGGING=both' - config_arg38='-Doptimize=-O2' - config_arg39='-dEs' - config_arg40='-Uuseshrplib' -@@ -100,7 +100,7 @@ - cc='arc-linux-gnu-gcc' - cccdlflags='-fPIC' - ccdlflags='-Wl,-E' --ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/arc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -+ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' - ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' - ccname='gcc' - ccsymbols='' -@@ -122,7 +122,7 @@ - cpp='arc-linux-gnu-cpp' - cpp_stuff='42' - cppccsymbols='' --cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/arc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -+cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' - cpplast='-' - cppminus='-' - cpprun='arc-linux-gnu-gcc -E' diff -Nru perl-5.32.1/debian/cross/arc/config.sh.shared.patch perl-5.34.0/debian/cross/arc/config.sh.shared.patch --- perl-5.32.1/debian/cross/arc/config.sh.shared.patch 2021-09-24 15:20:33.000000000 +0000 +++ perl-5.34.0/debian/cross/arc/config.sh.shared.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ ---- config.sh.static 2021-09-08 21:43:57.490565454 +0300 -+++ config.sh.shared 2021-09-08 21:45:24.253867068 +0300 -@@ -14,15 +14,15 @@ - - : Configure command line arguments. - config_arg0='../Configure' --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arc-linux-gnu-gcc -Dcpp=arc-linux-gnu-cpp -Dld=arc-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arc-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/arc-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arc-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/arc-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' --config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arc-linux-gnu-gcc -Dcpp=arc-linux-gnu-cpp -Dld=arc-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arc-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/arc-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arc-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/arc-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' -+config_argc=41 - config_arg1='-Dmksymlinks' - config_arg2='-Dusethreads' - config_arg3='-Duselargefiles' - config_arg4='-Dcc=arc-linux-gnu-gcc' - config_arg5='-Dcpp=arc-linux-gnu-cpp' - config_arg6='-Dld=arc-linux-gnu-gcc' --config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security' -+config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security' - config_arg8='-Dldflags= -Wl,-z,relro' - config_arg9='-Dlddlflags=-shared -Wl,-z,relro' - config_arg10='-Dcccdlflags=-fPIC' -@@ -55,7 +55,8 @@ - config_arg37='-DDEBUGGING=-g' - config_arg38='-Doptimize=-O2' - config_arg39='-dEs' --config_arg40='-Uuseshrplib' -+config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' - - Author='' - Date='' -@@ -100,7 +101,7 @@ - cc='arc-linux-gnu-gcc' - cccdlflags='-fPIC' - ccdlflags='-Wl,-E' --ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/arc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -+ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' - ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' - ccname='gcc' - ccsymbols='' -@@ -122,7 +123,7 @@ - cpp='arc-linux-gnu-cpp' - cpp_stuff='42' - cppccsymbols='' --cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/arc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -+cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' - cpplast='-' - cppminus='-' - cpprun='arc-linux-gnu-gcc -E' -@@ -925,7 +926,7 @@ - less='less' - lib_ext='.a' - libc='libc-2.31.so' --libperl='libperl.a' -+libperl='libperl.so.5.32.1' - libpth='/usr/local/lib /usr/include/arc-linux-gnu /usr/lib /lib/arc-linux-gnu /lib /usr/lib/arc-linux-gnu' - libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' - libsdirs=' /usr/lib/arc-linux-gnu' -@@ -1208,7 +1209,7 @@ - usequadmath='undef' - usereentrant='undef' - userelocatableinc='undef' --useshrplib='false' -+useshrplib='true' - usesitecustomize='undef' - usesocks='undef' - usethreads='define' diff -Nru perl-5.32.1/debian/cross/arc/config.sh.static perl-5.34.0/debian/cross/arc/config.sh.static --- perl-5.32.1/debian/cross/arc/config.sh.static 2021-09-24 15:20:33.000000000 +0000 +++ perl-5.34.0/debian/cross/arc/config.sh.static 1970-01-01 00:00:00.000000000 +0000 @@ -1,1263 +0,0 @@ -#!/bin/sh -# -# This file was produced by running the Configure script. It holds all the -# definitions figured out by Configure. Should you modify one of these values, -# do not forget to propagate your changes by running "Configure -der". You may -# instead choose to run each of the .SH files by yourself, or "Configure -S". -# - -# Package name : perl5 -# Source directory : /root/perl-5.32.1 -# Configuration time: Thu Aug 5 19:26:55 UTC 2021 -# Configured by : Debian -# Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 arc gnulinux - -: Configure command line arguments. -config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arc-linux-gnu-gcc -Dcpp=arc-linux-gnu-cpp -Dld=arc-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arc-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/arc-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arc-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/arc-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -config_arg1='-Dmksymlinks' -config_arg2='-Dusethreads' -config_arg3='-Duselargefiles' -config_arg4='-Dcc=arc-linux-gnu-gcc' -config_arg5='-Dcpp=arc-linux-gnu-cpp' -config_arg6='-Dld=arc-linux-gnu-gcc' -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security' -config_arg8='-Dldflags= -Wl,-z,relro' -config_arg9='-Dlddlflags=-shared -Wl,-z,relro' -config_arg10='-Dcccdlflags=-fPIC' -config_arg11='-Darchname=arc-linux-gnu' -config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/arc-linux-gnu/perl/5.32' -config_arg15='-Dvendorprefix=/usr' -config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/arc-linux-gnu/perl5/5.32' -config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/arc-linux-gnu/perl/5.32.1' -config_arg21='-Dman1dir=/usr/share/man/man1' -config_arg22='-Dman3dir=/usr/share/man/man3' -config_arg23='-Dsiteman1dir=/usr/local/man/man1' -config_arg24='-Dsiteman3dir=/usr/local/man/man3' -config_arg25='-Duse64bitint' -config_arg26='-Dman1ext=1' -config_arg27='-Dman3ext=3perl' -config_arg28='-Dpager=/usr/bin/sensible-pager' -config_arg29='-Uafs' -config_arg30='-Ud_csh' -config_arg31='-Ud_ualarm' -config_arg32='-Uusesfio' -config_arg33='-Uusenm' -config_arg34='-Ui_libutil' -config_arg35='-Ui_xlocale' -config_arg36='-Uversiononly' -config_arg37='-DDEBUGGING=-g' -config_arg38='-Doptimize=-O2' -config_arg39='-dEs' -config_arg40='-Uuseshrplib' - -Author='' -Date='' -Header='' -Id='' -Locker='' -Log='' -RCSfile='' -Revision='' -Source='' -State='' -_a='.a' -_exe='' -_o='.o' -afs='false' -afsroot='/afs' -alignbytes='4' -aphostname='/bin/hostname' -api_revision='5' -api_subversion='0' -api_version='32' -api_versionstring='5.32.0' -ar='ar' -archlib='/usr/lib/arc-linux-gnu/perl/5.32' -archlibexp='/usr/lib/arc-linux-gnu/perl/5.32' -archname64='64int' -archname='arc-linux-gnu-thread-multi-64int' -archobjs='' -asctime_r_proto='REENTRANT_PROTO_B_SB' -awk='awk' -baserev='5.0' -bash='' -bin='/usr/bin' -bin_ELF='define' -binexp='/usr/bin' -bison='bison' -byacc='byacc' -byteorder='12345678' -c='' -castflags='1' -cat='cat' -cc='arc-linux-gnu-gcc' -cccdlflags='-fPIC' -ccdlflags='-Wl,-E' -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/arc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -ccname='gcc' -ccsymbols='' -ccversion='' -cf_by='Debian' -cf_email='perl@packages.debian.org' -cf_time='Thu Aug 5 19:26:55 UTC 2021' -charbits='8' -charsize='1' -chgrp='' -chmod='chmod' -chown='' -clocktype='clock_t' -comm='comm' -compress='' -contains='grep' -cp='cp' -cpio='' -cpp='arc-linux-gnu-cpp' -cpp_stuff='42' -cppccsymbols='' -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/arc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/root/perl-5.32.1=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -cpplast='-' -cppminus='-' -cpprun='arc-linux-gnu-gcc -E' -cppstdin='arc-linux-gnu-gcc -E' -cppsymbols='__arc__=1 __ARC_ATOMIC__=1 __ARC_BARREL_SHIFTER__=1 __ARC_CODE_DENSITY__=1 __ARC_DIVREM__=1 __ARC_FPU_DP__=1 __ARC_FPU_DP_DIV__=1 __ARC_FPU_DP_FMA__=1 __ARC_FPU_SP__=1 __ARC_FPU_SP_DIV__=1 __ARC_FPU_SP_FMA__=1 __arc_hard_float__=1 __ARC_HARD_FLOAT__=1 __ARCHS__=1 __ARC_LL64__=1 __ARC_LPC_WIDTH__=32 __ARC_MPY__=1 __ARC_MPY_QMACW__=1 __ARC_MPY_WLHX__=1 __ARC_NORM__=1 __ARC_SWAP__=1 __ARC_TLS_REGNO__=25 __ARC_UNALIGNED__=1 __ATOMIC_ACQ_REL=4 __ATOMIC_ACQUIRE=2 __ATOMIC_CONSUME=1 __ATOMIC_RELAXED=0 __ATOMIC_RELEASE=3 __ATOMIC_SEQ_CST=5 __BIGGEST_ALIGNMENT__=4 __BYTE_ORDER__=1234 __CHAR16_TYPE__=short\ unsigned\ int __CHAR32_TYPE__=unsigned\ int __CHAR_BIT__=8 __CHAR_UNSIGNED__=1 __DBL_DECIMAL_DIG__=17 __DBL_DENORM_MIN__=((double)4.9406564584124654e-324L) __DBL_DIG__=15 __DBL_EPSILON__=((double)2.2204460492503131e-16L) __DBL_HAS_DENORM__=1 __DBL_HAS_INFINITY__=1 __DBL_HAS_QUIET_NAN__=1 __DBL_MANT_DIG__=53 __DBL_MAX_10_EXP__=308 __DBL_MAX__=((double)1.7976931348623157e+308L) __DBL_MAX_EXP__=1024 __DBL_MIN_10_EXP__=(-307) __DBL_MIN__=((double)2.2250738585072014e-308L) __DBL_MIN_EXP__=(-1021) __DBL_NORM_MAX__=((double)1.7976931348623157e+308L) __DEC_EVAL_METHOD__=2 __DECIMAL_DIG__=17 __ELF__=1 _FILE_OFFSET_BITS=64 __FINITE_MATH_ONLY__=0 __FLOAT_WORD_ORDER__=1234 __FLT32_DECIMAL_DIG__=9 __FLT32_DENORM_MIN__=1.4012984643248171e-45F32 __FLT32_DIG__=6 __FLT32_EPSILON__=1.1920928955078125e-7F32 __FLT32_HAS_DENORM__=1 __FLT32_HAS_INFINITY__=1 __FLT32_HAS_QUIET_NAN__=1 __FLT32_MANT_DIG__=24 __FLT32_MAX_10_EXP__=38 __FLT32_MAX__=3.4028234663852886e+38F32 __FLT32_MAX_EXP__=128 __FLT32_MIN_10_EXP__=(-37) __FLT32_MIN__=1.1754943508222875e-38F32 __FLT32_MIN_EXP__=(-125) __FLT32_NORM_MAX__=3.4028234663852886e+38F32 __FLT32X_DECIMAL_DIG__=17 __FLT32X_DENORM_MIN__=4.9406564584124654e-324F32x __FLT32X_DIG__=15 __FLT32X_EPSILON__=2.2204460492503131e-16F32x __FLT32X_HAS_DENORM__=1 __FLT32X_HAS_INFINITY__=1 __FLT32X_HAS_QUIET_NAN__=1 __FLT32X_MANT_DIG__=53 __FLT32X_MAX_10_EXP__=308 __FLT32X_MAX__=1.7976931348623157e+308F32x __FLT32X_MAX_EXP__=1024 __FLT32X_MIN_10_EXP__=(-307) __FLT32X_MIN__=2.2250738585072014e-308F32x __FLT32X_MIN_EXP__=(-1021) __FLT32X_NORM_MAX__=1.7976931348623157e+308F32x __FLT64_DECIMAL_DIG__=17 __FLT64_DENORM_MIN__=4.9406564584124654e-324F64 __FLT64_DIG__=15 __FLT64_EPSILON__=2.2204460492503131e-16F64 __FLT64_HAS_DENORM__=1 __FLT64_HAS_INFINITY__=1 __FLT64_HAS_QUIET_NAN__=1 __FLT64_MANT_DIG__=53 __FLT64_MAX_10_EXP__=308 __FLT64_MAX__=1.7976931348623157e+308F64 __FLT64_MAX_EXP__=1024 __FLT64_MIN_10_EXP__=(-307) __FLT64_MIN__=2.2250738585072014e-308F64 __FLT64_MIN_EXP__=(-1021) __FLT64_NORM_MAX__=1.7976931348623157e+308F64 __FLT_DECIMAL_DIG__=9 __FLT_DENORM_MIN__=1.4012984643248171e-45F __FLT_DIG__=6 __FLT_EPSILON__=1.1920928955078125e-7F __FLT_EVAL_METHOD__=0 __FLT_EVAL_METHOD_TS_18661_3__=0 __FLT_HAS_DENORM__=1 __FLT_HAS_INFINITY__=1 __FLT_HAS_QUIET_NAN__=1 __FLT_MANT_DIG__=24 __FLT_MAX_10_EXP__=38 __FLT_MAX__=3.4028234663852886e+38F __FLT_MAX_EXP__=128 __FLT_MIN_10_EXP__=(-37) __FLT_MIN__=1.1754943508222875e-38F __FLT_MIN_EXP__=(-125) __FLT_NORM_MAX__=3.4028234663852886e+38F __FLT_RADIX__=2 _FORTIFY_SOURCE=2 __FP_FAST_FMA=1 __FP_FAST_FMAF=1 __FP_FAST_FMAF32=1 __FP_FAST_FMAF32x=1 __FP_FAST_FMAF64=1 __FP_FAST_FMAL=1 __GCC_ATOMIC_BOOL_LOCK_FREE=2 __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR_LOCK_FREE=2 __GCC_ATOMIC_INT_LOCK_FREE=2 __GCC_ATOMIC_LLONG_LOCK_FREE=1 __GCC_ATOMIC_LONG_LOCK_FREE=2 __GCC_ATOMIC_POINTER_LOCK_FREE=2 __GCC_ATOMIC_SHORT_LOCK_FREE=2 __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1 __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1 __GCC_IEC_559=2 __GCC_IEC_559_COMPLEX=2 __GLIBC__=2 __GLIBC_MINOR__=31 __GNUC__=10 __GNUC_MINOR__=2 __GNUC_PATCHLEVEL__=1 __GNUC_STDC_INLINE__=1 __GNU_LIBRARY__=6 __gnu_linux__=1 _GNU_SOURCE=1 __GXX_ABI_VERSION=1014 __HAVE_SPECULATION_SAFE_VALUE=1 __HS__=1 __INT16_C=__INT16_C __INT16_MAX__=0x7fff __INT16_TYPE__=short\ int __INT32_C=__INT32_C __INT32_MAX__=0x7fffffff __INT32_TYPE__=int __INT64_C=__INT64_C __INT64_MAX__=0x7fffffffffffffffLL __INT64_TYPE__=long\ long\ int __INT8_C=__INT8_C __INT8_MAX__=0x7f __INT8_TYPE__=signed\ char __INT_FAST16_MAX__=0x7fffffff __INT_FAST16_TYPE__=int __INT_FAST16_WIDTH__=32 __INT_FAST32_MAX__=0x7fffffff __INT_FAST32_TYPE__=int __INT_FAST32_WIDTH__=32 __INT_FAST64_MAX__=0x7fffffffffffffffLL __INT_FAST64_TYPE__=long\ long\ int __INT_FAST64_WIDTH__=64 __INT_FAST8_MAX__=0x7f __INT_FAST8_TYPE__=signed\ char __INT_FAST8_WIDTH__=8 __INT_LEAST16_MAX__=0x7fff __INT_LEAST16_TYPE__=short\ int __INT_LEAST16_WIDTH__=16 __INT_LEAST32_MAX__=0x7fffffff __INT_LEAST32_TYPE__=int __INT_LEAST32_WIDTH__=32 __INT_LEAST64_MAX__=0x7fffffffffffffffLL __INT_LEAST64_TYPE__=long\ long\ int __INT_LEAST64_WIDTH__=64 __INT_LEAST8_MAX__=0x7f __INT_LEAST8_TYPE__=signed\ char __INT_LEAST8_WIDTH__=8 __INT_MAX__=0x7fffffff __INTMAX_C=__INTMAX_C __INTMAX_MAX__=0x7fffffffffffffffLL __INTMAX_TYPE__=long\ long\ int __INTMAX_WIDTH__=64 __INTPTR_MAX__=0x7fffffff __INTPTR_TYPE__=int __INTPTR_WIDTH__=32 __INT_WIDTH__=32 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 __LDBL_DECIMAL_DIG__=17 __LDBL_DENORM_MIN__=4.9406564584124654e-324L __LDBL_DIG__=15 __LDBL_EPSILON__=2.2204460492503131e-16L __LDBL_HAS_DENORM__=1 __LDBL_HAS_INFINITY__=1 __LDBL_HAS_QUIET_NAN__=1 __LDBL_MANT_DIG__=53 __LDBL_MAX_10_EXP__=308 __LDBL_MAX__=1.7976931348623157e+308L __LDBL_MAX_EXP__=1024 __LDBL_MIN_10_EXP__=(-307) __LDBL_MIN__=2.2250738585072014e-308L __LDBL_MIN_EXP__=(-1021) __LDBL_NORM_MAX__=1.7976931348623157e+308L __linux=1 __linux__=1 linux=1 __LITTLE_ENDIAN__=1 __LONG_LONG_MAX__=0x7fffffffffffffffLL __LONG_LONG_WIDTH__=64 __LONG_MAX__=0x7fffffffL __LONG_WIDTH__=32 __ORDER_BIG_ENDIAN__=4321 __ORDER_LITTLE_ENDIAN__=1234 __ORDER_PDP_ENDIAN__=3412 __pic__=2 __PIC__=2 __pie__=2 __PIE__=2 _POSIX_C_SOURCE=200809L _POSIX_SOURCE=1 __PRAGMA_REDEFINE_EXTNAME=1 __PTRDIFF_MAX__=0x7fffffff __PTRDIFF_TYPE__=int __PTRDIFF_WIDTH__=32 _REENTRANT=1 __REGISTER_PREFIX__= __SCHAR_MAX__=0x7f __SCHAR_WIDTH__=8 __SHRT_MAX__=0x7fff __SHRT_WIDTH__=16 __SIG_ATOMIC_MAX__=0x7fffffff __SIG_ATOMIC_MIN__=(-0x7fffffff\ -\ 1) __SIG_ATOMIC_TYPE__=int __SIG_ATOMIC_WIDTH__=32 __SIZE_MAX__=0xffffffffU __SIZEOF_DOUBLE__=8 __SIZEOF_FLOAT__=4 __SIZEOF_INT__=4 __SIZEOF_LONG__=4 __SIZEOF_LONG_DOUBLE__=8 __SIZEOF_LONG_LONG__=8 __SIZEOF_POINTER__=4 __SIZEOF_PTRDIFF_T__=4 __SIZEOF_SHORT__=2 __SIZEOF_SIZE_T__=4 __SIZEOF_WCHAR_T__=4 __SIZEOF_WINT_T__=4 __SIZE_TYPE__=unsigned\ int __SIZE_WIDTH__=32 __STDC__=1 __STDC_HOSTED__=1 __STDC_IEC_559__=1 __STDC_IEC_559_COMPLEX__=1 __STDC_ISO_10646__=201706L _STDC_PREDEF_H=1 __STDC_UTF_16__=1 __STDC_UTF_32__=1 __STDC_VERSION__=201710L __UINT16_C=__UINT16_C __UINT16_MAX__=0xffff __UINT16_TYPE__=short\ unsigned\ int __UINT32_C=__UINT32_C __UINT32_MAX__=0xffffffffU __UINT32_TYPE__=unsigned\ int __UINT64_C=__UINT64_C __UINT64_MAX__=0xffffffffffffffffULL __UINT64_TYPE__=long\ long\ unsigned\ int __UINT8_C=__UINT8_C __UINT8_MAX__=0xff __UINT8_TYPE__=unsigned\ char __UINT_FAST16_MAX__=0xffffffffU __UINT_FAST16_TYPE__=unsigned\ int __UINT_FAST32_MAX__=0xffffffffU __UINT_FAST32_TYPE__=unsigned\ int __UINT_FAST64_MAX__=0xffffffffffffffffULL __UINT_FAST64_TYPE__=long\ long\ unsigned\ int __UINT_FAST8_MAX__=0xff __UINT_FAST8_TYPE__=unsigned\ char __UINT_LEAST16_MAX__=0xffff __UINT_LEAST16_TYPE__=short\ unsigned\ int __UINT_LEAST32_MAX__=0xffffffffU __UINT_LEAST32_TYPE__=unsigned\ int __UINT_LEAST64_MAX__=0xffffffffffffffffULL __UINT_LEAST64_TYPE__=long\ long\ unsigned\ int __UINT_LEAST8_MAX__=0xff __UINT_LEAST8_TYPE__=unsigned\ char __UINTMAX_C=__UINTMAX_C __UINTMAX_MAX__=0xffffffffffffffffULL __UINTMAX_TYPE__=long\ long\ unsigned\ int __UINTPTR_MAX__=0xffffffffU __UINTPTR_TYPE__=unsigned\ int __unix=1 __unix__=1 unix=1 __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE=1 __USE_LARGEFILE64=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USER_LABEL_PREFIX__= __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 __VERSION__="10.2.1\ 20210110" __WCHAR_MAX__=0x7fffffff __WCHAR_MIN__=(-0x7fffffff\ -\ 1) __WCHAR_TYPE__=int __WCHAR_WIDTH__=32 __WINT_MAX__=0xffffffffU __WINT_MIN__=0U __WINT_TYPE__=unsigned\ int __WINT_WIDTH__=32 __Xbarrel_shifter=1 __Xnorm=1 _XOPEN_SOURCE=700 _XOPEN_SOURCE_EXTENDED=1' -crypt_r_proto='REENTRANT_PROTO_B_CCS' -cryptlib='' -csh='csh' -ctermid_r_proto='0' -ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' -d_PRIEUldbl='define' -d_PRIFUldbl='define' -d_PRIGUldbl='define' -d_PRIXU64='define' -d_PRId64='define' -d_PRIeldbl='define' -d_PRIfldbl='define' -d_PRIgldbl='define' -d_PRIi64='define' -d_PRIo64='define' -d_PRIu64='define' -d_PRIx64='define' -d_SCNfldbl='define' -d__fwalk='undef' -d_accept4='define' -d_access='define' -d_accessx='undef' -d_acosh='define' -d_aintl='undef' -d_alarm='define' -d_archlib='define' -d_asctime64='undef' -d_asctime_r='define' -d_asinh='define' -d_atanh='define' -d_atolf='undef' -d_atoll='define' -d_attribute_always_inline='define' -d_attribute_deprecated='define' -d_attribute_format='define' -d_attribute_malloc='define' -d_attribute_nonnull='define' -d_attribute_noreturn='define' -d_attribute_pure='define' -d_attribute_unused='define' -d_attribute_warn_unused_result='define' -d_backtrace='define' -d_bsd='undef' -d_bsdgetpgrp='undef' -d_bsdsetpgrp='undef' -d_builtin_add_overflow='define' -d_builtin_choose_expr='define' -d_builtin_expect='define' -d_builtin_mul_overflow='define' -d_builtin_sub_overflow='define' -d_c99_variadic_macros='define' -d_casti32='define' -d_castneg='undef' -d_cbrt='define' -d_chown='define' -d_chroot='define' -d_chsize='undef' -d_class='undef' -d_clearenv='define' -d_closedir='define' -d_cmsghdr_s='define' -d_copysign='define' -d_copysignl='define' -d_cplusplus='undef' -d_crypt='define' -d_crypt_r='define' -d_csh='undef' -d_ctermid='define' -d_ctermid_r='undef' -d_ctime64='undef' -d_ctime_r='define' -d_cuserid='define' -d_dbminitproto='define' -d_difftime64='undef' -d_difftime='define' -d_dir_dd_fd='undef' -d_dirfd='define' -d_dirnamlen='undef' -d_dladdr='define' -d_dlerror='define' -d_dlopen='define' -d_dlsymun='undef' -d_dosuid='undef' -d_double_has_inf='define' -d_double_has_nan='define' -d_double_has_negative_zero='define' -d_double_has_subnormals='define' -d_double_style_cray='undef' -d_double_style_ibm='undef' -d_double_style_ieee='define' -d_double_style_vax='undef' -d_drand48_r='define' -d_drand48proto='define' -d_dup2='define' -d_dup3='define' -d_duplocale='define' -d_eaccess='define' -d_endgrent='define' -d_endgrent_r='undef' -d_endhent='define' -d_endhostent_r='undef' -d_endnent='define' -d_endnetent_r='undef' -d_endpent='define' -d_endprotoent_r='undef' -d_endpwent='define' -d_endpwent_r='undef' -d_endsent='define' -d_endservent_r='undef' -d_eofnblk='define' -d_erf='define' -d_erfc='define' -d_eunice='undef' -d_exp2='define' -d_expm1='define' -d_faststdio='undef' -d_fchdir='define' -d_fchmod='define' -d_fchmodat='define' -d_fchown='define' -d_fcntl='define' -d_fcntl_can_lock='define' -d_fd_macros='define' -d_fd_set='define' -d_fdclose='undef' -d_fdim='define' -d_fds_bits='define' -d_fegetround='define' -d_fgetpos='define' -d_finite='define' -d_finitel='define' -d_flexfnam='define' -d_flock='define' -d_flockproto='define' -d_fma='define' -d_fmax='define' -d_fmin='define' -d_fork='define' -d_fp_class='undef' -d_fp_classify='undef' -d_fp_classl='undef' -d_fpathconf='define' -d_fpclass='undef' -d_fpclassify='define' -d_fpclassl='undef' -d_fpgetround='undef' -d_fpos64_t='undef' -d_freelocale='define' -d_frexpl='define' -d_fs_data_s='undef' -d_fseeko='define' -d_fsetpos='define' -d_fstatfs='define' -d_fstatvfs='define' -d_fsync='define' -d_ftello='define' -d_ftime='undef' -d_futimes='define' -d_gai_strerror='define' -d_gdbm_ndbm_h_uses_prototypes='define' -d_gdbmndbm_h_uses_prototypes='undef' -d_getaddrinfo='define' -d_getcwd='define' -d_getespwnam='undef' -d_getfsstat='undef' -d_getgrent='define' -d_getgrent_r='define' -d_getgrgid_r='define' -d_getgrnam_r='define' -d_getgrps='define' -d_gethbyaddr='define' -d_gethbyname='define' -d_gethent='define' -d_gethname='define' -d_gethostbyaddr_r='define' -d_gethostbyname_r='define' -d_gethostent_r='define' -d_gethostprotos='define' -d_getitimer='define' -d_getlogin='define' -d_getlogin_r='define' -d_getmnt='undef' -d_getmntent='define' -d_getnameinfo='define' -d_getnbyaddr='define' -d_getnbyname='define' -d_getnent='define' -d_getnetbyaddr_r='define' -d_getnetbyname_r='define' -d_getnetent_r='define' -d_getnetprotos='define' -d_getpagsz='define' -d_getpbyname='define' -d_getpbynumber='define' -d_getpent='define' -d_getpgid='define' -d_getpgrp2='undef' -d_getpgrp='define' -d_getppid='define' -d_getprior='define' -d_getprotobyname_r='define' -d_getprotobynumber_r='define' -d_getprotoent_r='define' -d_getprotoprotos='define' -d_getprpwnam='undef' -d_getpwent='define' -d_getpwent_r='define' -d_getpwnam_r='define' -d_getpwuid_r='define' -d_getsbyname='define' -d_getsbyport='define' -d_getsent='define' -d_getservbyname_r='define' -d_getservbyport_r='define' -d_getservent_r='define' -d_getservprotos='define' -d_getspnam='define' -d_getspnam_r='define' -d_gettimeod='define' -d_gmtime64='undef' -d_gmtime_r='define' -d_gnulibc='define' -d_grpasswd='define' -d_has_C_UTF8='true' -d_hasmntopt='define' -d_htonl='define' -d_hypot='define' -d_ilogb='define' -d_ilogbl='define' -d_inc_version_list='define' -d_inetaton='define' -d_inetntop='define' -d_inetpton='define' -d_int64_t='define' -d_ip_mreq='define' -d_ip_mreq_source='define' -d_ipv6_mreq='define' -d_ipv6_mreq_source='undef' -d_isascii='define' -d_isblank='define' -d_isfinite='define' -d_isfinitel='undef' -d_isinf='define' -d_isinfl='define' -d_isless='define' -d_isnan='define' -d_isnanl='define' -d_isnormal='define' -d_j0='define' -d_j0l='define' -d_killpg='define' -d_lc_monetary_2008='define' -d_lchown='define' -d_ldbl_dig='define' -d_ldexpl='define' -d_lgamma='define' -d_lgamma_r='define' -d_libm_lib_version='undef' -d_libname_unique='undef' -d_link='define' -d_linkat='define' -d_llrint='define' -d_llrintl='define' -d_llround='define' -d_llroundl='define' -d_localeconv_l='undef' -d_localtime64='undef' -d_localtime_r='define' -d_localtime_r_needs_tzset='define' -d_locconv='define' -d_lockf='define' -d_log1p='define' -d_log2='define' -d_logb='define' -d_long_double_style_ieee='undef' -d_long_double_style_ieee_doubledouble='undef' -d_long_double_style_ieee_extended='undef' -d_long_double_style_ieee_std='undef' -d_long_double_style_vax='undef' -d_longdbl='define' -d_longlong='define' -d_lrint='define' -d_lrintl='define' -d_lround='define' -d_lroundl='define' -d_lseekproto='define' -d_lstat='define' -d_madvise='define' -d_malloc_good_size='undef' -d_malloc_size='undef' -d_malloc_usable_size='define' -d_mblen='define' -d_mbrlen='define' -d_mbrtowc='define' -d_mbstowcs='define' -d_mbtowc='define' -d_memmem='define' -d_memrchr='define' -d_mkdir='define' -d_mkdtemp='define' -d_mkfifo='define' -d_mkostemp='define' -d_mkstemp='define' -d_mkstemps='define' -d_mktime64='undef' -d_mktime='define' -d_mmap='define' -d_modfl='define' -d_modflproto='define' -d_mprotect='define' -d_msg='define' -d_msg_ctrunc='define' -d_msg_dontroute='define' -d_msg_oob='define' -d_msg_peek='define' -d_msg_proxy='define' -d_msgctl='define' -d_msgget='define' -d_msghdr_s='define' -d_msgrcv='define' -d_msgsnd='define' -d_msync='define' -d_munmap='define' -d_mymalloc='undef' -d_nan='define' -d_nanosleep='define' -d_ndbm='define' -d_ndbm_h_uses_prototypes='define' -d_nearbyint='define' -d_newlocale='define' -d_nextafter='define' -d_nexttoward='define' -d_nice='define' -d_nl_langinfo='define' -d_nv_preserves_uv='undef' -d_nv_zero_is_allbits_zero='define' -d_off64_t='define' -d_old_pthread_create_joinable='undef' -d_oldpthreads='undef' -d_oldsock='undef' -d_open3='define' -d_openat='define' -d_pathconf='define' -d_pause='define' -d_perl_otherlibdirs='undef' -d_phostname='undef' -d_pipe2='define' -d_pipe='define' -d_poll='define' -d_portable='define' -d_prctl='define' -d_prctl_set_name='define' -d_printf_format_null='define' -d_procselfexe='define' -d_pseudofork='undef' -d_pthread_atfork='define' -d_pthread_attr_setscope='define' -d_pthread_yield='define' -d_ptrdiff_t='define' -d_pwage='undef' -d_pwchange='undef' -d_pwclass='undef' -d_pwcomment='undef' -d_pwexpire='undef' -d_pwgecos='define' -d_pwpasswd='define' -d_pwquota='undef' -d_qgcvt='define' -d_quad='define' -d_querylocale='undef' -d_random_r='define' -d_re_comp='undef' -d_readdir64_r='define' -d_readdir='define' -d_readdir_r='define' -d_readlink='define' -d_readv='define' -d_recvmsg='define' -d_regcmp='undef' -d_regcomp='define' -d_remainder='define' -d_remquo='define' -d_rename='define' -d_renameat='define' -d_rewinddir='define' -d_rint='define' -d_rmdir='define' -d_round='define' -d_sbrkproto='define' -d_scalbn='define' -d_scalbnl='define' -d_sched_yield='define' -d_scm_rights='define' -d_seekdir='define' -d_select='define' -d_sem='define' -d_semctl='define' -d_semctl_semid_ds='define' -d_semctl_semun='define' -d_semget='define' -d_semop='define' -d_sendmsg='define' -d_setegid='define' -d_seteuid='define' -d_setgrent='define' -d_setgrent_r='undef' -d_setgrps='define' -d_sethent='define' -d_sethostent_r='undef' -d_setitimer='define' -d_setlinebuf='define' -d_setlocale='define' -d_setlocale_accepts_any_locale_name='undef' -d_setlocale_r='undef' -d_setnent='define' -d_setnetent_r='undef' -d_setpent='define' -d_setpgid='define' -d_setpgrp2='undef' -d_setpgrp='define' -d_setprior='define' -d_setproctitle='undef' -d_setprotoent_r='undef' -d_setpwent='define' -d_setpwent_r='undef' -d_setregid='define' -d_setresgid='define' -d_setresuid='define' -d_setreuid='define' -d_setrgid='undef' -d_setruid='undef' -d_setsent='define' -d_setservent_r='undef' -d_setsid='define' -d_setvbuf='define' -d_shm='define' -d_shmat='define' -d_shmatprototype='define' -d_shmctl='define' -d_shmdt='define' -d_shmget='define' -d_sigaction='define' -d_siginfo_si_addr='define' -d_siginfo_si_band='define' -d_siginfo_si_errno='define' -d_siginfo_si_fd='define' -d_siginfo_si_pid='define' -d_siginfo_si_status='define' -d_siginfo_si_uid='define' -d_siginfo_si_value='define' -d_signbit='define' -d_sigprocmask='define' -d_sigsetjmp='define' -d_sin6_scope_id='define' -d_sitearch='define' -d_snprintf='define' -d_sockaddr_in6='define' -d_sockaddr_sa_len='undef' -d_sockaddr_storage='define' -d_sockatmark='define' -d_sockatmarkproto='define' -d_socket='define' -d_socklen_t='define' -d_sockpair='define' -d_socks5_init='undef' -d_sqrtl='define' -d_srand48_r='define' -d_srandom_r='define' -d_sresgproto='define' -d_sresuproto='define' -d_stat='define' -d_statblks='define' -d_statfs_f_flags='define' -d_statfs_s='define' -d_static_inline='define' -d_statvfs='define' -d_stdio_cnt_lval='undef' -d_stdio_ptr_lval='undef' -d_stdio_ptr_lval_nochange_cnt='undef' -d_stdio_ptr_lval_sets_cnt='undef' -d_stdio_stream_array='undef' -d_stdiobase='undef' -d_stdstdio='undef' -d_strcoll='define' -d_strerror_l='define' -d_strerror_r='define' -d_strftime='define' -d_strlcat='undef' -d_strlcpy='undef' -d_strnlen='define' -d_strtod='define' -d_strtod_l='define' -d_strtol='define' -d_strtold='define' -d_strtold_l='define' -d_strtoll='define' -d_strtoq='define' -d_strtoul='define' -d_strtoull='define' -d_strtouq='define' -d_strxfrm='define' -d_suidsafe='undef' -d_symlink='define' -d_syscall='define' -d_syscallproto='define' -d_sysconf='define' -d_sysernlst='' -d_syserrlst='define' -d_system='define' -d_tcgetpgrp='define' -d_tcsetpgrp='define' -d_telldir='define' -d_telldirproto='define' -d_tgamma='define' -d_thread_safe_nl_langinfo_l='define' -d_time='define' -d_timegm='define' -d_times='define' -d_tm_tm_gmtoff='define' -d_tm_tm_zone='define' -d_tmpnam_r='define' -d_towlower='define' -d_towupper='define' -d_trunc='define' -d_truncate='define' -d_truncl='define' -d_ttyname_r='define' -d_tzname='define' -d_u32align='define' -d_ualarm='undef' -d_umask='define' -d_uname='define' -d_union_semun='undef' -d_unlinkat='define' -d_unordered='undef' -d_unsetenv='define' -d_uselocale='define' -d_usleep='define' -d_usleepproto='define' -d_ustat='undef' -d_vendorarch='define' -d_vendorbin='define' -d_vendorlib='define' -d_vendorscript='define' -d_vfork='undef' -d_void_closedir='undef' -d_voidsig='define' -d_voidtty='' -d_vsnprintf='define' -d_wait4='define' -d_waitpid='define' -d_wcrtomb='define' -d_wcscmp='define' -d_wcstombs='define' -d_wcsxfrm='define' -d_wctomb='define' -d_writev='define' -d_xenix='undef' -date='date' -db_hashtype='u_int32_t' -db_prefixtype='size_t' -db_version_major='5' -db_version_minor='3' -db_version_patch='28' -default_inc_excludes_dot='define' -direntrytype='struct dirent' -dlext='so' -dlsrc='dl_dlopen.xs' -doubleinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f' -doublekind='3' -doublemantbits='52' -doublenanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff' -doublesize='8' -drand01='Perl_drand48()' -drand48_r_proto='REENTRANT_PROTO_I_ST' -dtrace='' -dtraceobject='' -dtracexnolibs='' -dynamic_ext='attributes B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper DB_File Devel/Peek Devel/PPPort Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util Math/BigInt/FastCalc MIME/Base64 mro NDBM_File ODBM_File Opcode PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via POSIX re SDBM_File Socket Storable Sys/Hostname Sys/Syslog threads threads/shared Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap' -eagain='EAGAIN' -ebcdic='undef' -echo='echo' -egrep='egrep' -emacs='' -endgrent_r_proto='0' -endhostent_r_proto='0' -endnetent_r_proto='0' -endprotoent_r_proto='0' -endpwent_r_proto='0' -endservent_r_proto='0' -eunicefix=':' -exe_ext='' -expr='expr' -extensions='attributes B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper DB_File Devel/Peek Devel/PPPort Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util Math/BigInt/FastCalc MIME/Base64 mro NDBM_File ODBM_File Opcode PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via POSIX re SDBM_File Socket Storable Sys/Hostname Sys/Syslog threads threads/shared Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap Archive/Tar Attribute/Handlers autodie AutoLoader autouse base bignum Carp Config/Perl/V constant CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Devel/SelfStubber Digest Dumpvalue encoding/warnings Env Errno experimental Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS FileCache File/Fetch File/Find File/Path File/Temp Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags if IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP lib libnet Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata Net/Ping NEXT Params/Check parent perlfaq PerlIO/via/QuotedPrint Perl/OSType Pod/Checker Pod/Escapes Pod/Functions Pod/Html podlators Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local version XSLoader' -extern_C='extern' -extras='' -fflushNULL='define' -fflushall='undef' -find='' -firstmakefile='makefile' -flex='' -fpossize='16' -fpostype='fpos_t' -freetype='void' -from=':' -full_ar='/usr/bin/ar' -full_csh='csh' -full_sed='/bin/sed' -gccansipedantic='' -gccosandvers='' -gccversion='10.2.1 20210110' -getgrent_r_proto='REENTRANT_PROTO_I_SBWR' -getgrgid_r_proto='REENTRANT_PROTO_I_TSBWR' -getgrnam_r_proto='REENTRANT_PROTO_I_CSBWR' -gethostbyaddr_r_proto='REENTRANT_PROTO_I_TsISBWRE' -gethostbyname_r_proto='REENTRANT_PROTO_I_CSBWRE' -gethostent_r_proto='REENTRANT_PROTO_I_SBWRE' -getlogin_r_proto='REENTRANT_PROTO_I_BW' -getnetbyaddr_r_proto='REENTRANT_PROTO_I_uISBWRE' -getnetbyname_r_proto='REENTRANT_PROTO_I_CSBWRE' -getnetent_r_proto='REENTRANT_PROTO_I_SBWRE' -getprotobyname_r_proto='REENTRANT_PROTO_I_CSBWR' -getprotobynumber_r_proto='REENTRANT_PROTO_I_ISBWR' -getprotoent_r_proto='REENTRANT_PROTO_I_SBWR' -getpwent_r_proto='REENTRANT_PROTO_I_SBWR' -getpwnam_r_proto='REENTRANT_PROTO_I_CSBWR' -getpwuid_r_proto='REENTRANT_PROTO_I_TSBWR' -getservbyname_r_proto='REENTRANT_PROTO_I_CCSBWR' -getservbyport_r_proto='REENTRANT_PROTO_I_ICSBWR' -getservent_r_proto='REENTRANT_PROTO_I_SBWR' -getspnam_r_proto='REENTRANT_PROTO_I_CSBWR' -gidformat='"lu"' -gidsign='1' -gidsize='4' -gidtype='gid_t' -glibpth='/usr/shlib /lib /usr/lib /usr/lib/386 /lib/386 /usr/ccs/lib /usr/ucblib /usr/local/lib ' -gmake='gmake' -gmtime_r_proto='REENTRANT_PROTO_S_TS' -gnulibc_version='2.31' -grep='grep' -groupcat='cat /etc/group' -groupstype='gid_t' -gzip='gzip' -h_fcntl='false' -h_sysfile='true' -hint='recommended' -hostcat='cat /etc/hosts' -hostgenerate='' -hostosname='' -hostperl='' -html1dir=' ' -html1direxp='' -html3dir=' ' -html3direxp='' -i16size='2' -i16type='short' -i32size='4' -i32type='long' -i64size='8' -i64type='long long' -i8size='1' -i8type='signed char' -i_arpainet='define' -i_bfd='undef' -i_bsdioctl='' -i_crypt='define' -i_db='define' -i_dbm='define' -i_dirent='define' -i_dlfcn='define' -i_execinfo='define' -i_fcntl='undef' -i_fenv='define' -i_fp='undef' -i_fp_class='undef' -i_gdbm='define' -i_gdbm_ndbm='define' -i_gdbmndbm='undef' -i_grp='define' -i_ieeefp='undef' -i_inttypes='define' -i_langinfo='define' -i_libutil='undef' -i_locale='define' -i_machcthr='undef' -i_malloc='define' -i_mallocmalloc='undef' -i_mntent='define' -i_ndbm='define' -i_netdb='define' -i_neterrno='undef' -i_netinettcp='define' -i_niin='define' -i_poll='define' -i_prot='undef' -i_pthread='define' -i_pwd='define' -i_quadmath='undef' -i_rpcsvcdbm='undef' -i_sgtty='undef' -i_shadow='define' -i_socks='undef' -i_stdbool='define' -i_stdint='define' -i_stdlib='define' -i_sunmath='undef' -i_sysaccess='undef' -i_sysdir='define' -i_sysfile='define' -i_sysfilio='undef' -i_sysin='undef' -i_sysioctl='define' -i_syslog='define' -i_sysmman='define' -i_sysmode='undef' -i_sysmount='define' -i_sysndir='undef' -i_sysparam='define' -i_syspoll='define' -i_sysresrc='define' -i_syssecrt='undef' -i_sysselct='define' -i_syssockio='undef' -i_sysstat='define' -i_sysstatfs='define' -i_sysstatvfs='define' -i_systime='define' -i_systimek='undef' -i_systimes='define' -i_systypes='define' -i_sysuio='define' -i_sysun='define' -i_sysutsname='define' -i_sysvfs='define' -i_syswait='define' -i_termio='undef' -i_termios='define' -i_time='define' -i_unistd='define' -i_ustat='undef' -i_utime='define' -i_vfork='undef' -i_wchar='define' -i_wctype='define' -i_xlocale='undef' -ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/arc-linux-gnu-thread-multi-64int' -inc_version_list_init='"5.32.0","5.32.0/arc-linux-gnu-thread-multi-64int",0' -incpath='' -incpth='/usr/lib/gcc/arc-linux-gnu/10/include /usr/local/include /usr/include/arc-linux-gnu /usr/include' -inews='' -initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/arc-linux-gnu/perl/5.32' -installbin='/usr/bin' -installhtml1dir='' -installhtml3dir='' -installman1dir='/usr/share/man/man1' -installman3dir='/usr/share/man/man3' -installprefix='/usr' -installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' -installscript='/usr/bin' -installsitearch='/usr/local/lib/arc-linux-gnu/perl/5.32.1' -installsitebin='/usr/local/bin' -installsitehtml1dir='' -installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' -installsiteman1dir='/usr/local/man/man1' -installsiteman3dir='/usr/local/man/man3' -installsitescript='/usr/local/bin' -installstyle='lib/perl5' -installusrbinperl='undef' -installvendorarch='/usr/lib/arc-linux-gnu/perl5/5.32' -installvendorbin='/usr/bin' -installvendorhtml1dir='' -installvendorhtml3dir='' -installvendorlib='/usr/share/perl5' -installvendorman1dir='/usr/share/man/man1' -installvendorman3dir='/usr/share/man/man3' -installvendorscript='/usr/bin' -intsize='4' -issymlink='test -h' -ivdformat='"Ld"' -ivsize='8' -ivtype='long long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers attributes autodie AutoLoader autouse B base bignum Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V constant CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Cwd Data/Dumper DB_File Devel/Peek Devel/PPPort Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode encoding/warnings Env Errno experimental Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl FileCache File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long Hash/Util Hash/Util/FieldHash HTTP/Tiny I18N/Collate I18N/Langinfo I18N/LangTags if IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP lib libnet List/Util Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize MIME/Base64 Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata mro NDBM_File Net/Ping NEXT ODBM_File Opcode Params/Check parent perlfaq PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Perl/OSType Pod/Checker Pod/Escapes Pod/Functions Pod/Html podlators Pod/Perldoc Pod/Simple Pod/Usage POSIX re Safe SDBM_File Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue threads Thread/Semaphore threads/shared Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize version VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XSLoader XS/Typemap ' -ksh='' -ld='arc-linux-gnu-gcc' -ld_can_script='define' -lddlflags='-shared -Wl,-z,relro -L/usr/local/lib -fstack-protector-strong' -ldflags=' -Wl,-z,relro -fstack-protector-strong -L/usr/local/lib' -ldflags_uselargefiles='' -ldlibpthname='LD_LIBRARY_PATH' -less='less' -lib_ext='.a' -libc='libc-2.31.so' -libperl='libperl.a' -libpth='/usr/local/lib /usr/include/arc-linux-gnu /usr/lib /lib/arc-linux-gnu /lib /usr/lib/arc-linux-gnu' -libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' -libsdirs=' /usr/lib/arc-linux-gnu' -libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' -libsfound=' /usr/lib/arc-linux-gnu/libgdbm.so /usr/lib/arc-linux-gnu/libgdbm_compat.so /usr/lib/arc-linux-gnu/libdb.so /usr/lib/arc-linux-gnu/libdl.so /usr/lib/arc-linux-gnu/libm.so /usr/lib/arc-linux-gnu/libpthread.so /usr/lib/arc-linux-gnu/libc.so /usr/lib/arc-linux-gnu/libcrypt.so' -libspath=' /usr/local/lib /usr/include/arc-linux-gnu /usr/lib /lib/arc-linux-gnu /lib /usr/lib/arc-linux-gnu' -libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' -libswanted_uselargefiles='' -line='' -lint='' -lkflags='' -ln='ln' -lns='/bin/ln -s' -localtime_r_proto='REENTRANT_PROTO_S_TS' -locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include' -loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib' -longdblinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f' -longdblkind='0' -longdblmantbits='52' -longdblnanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff' -longdblsize='8' -longlongsize='8' -longsize='4' -lp='' -lpr='' -ls='ls' -lseeksize='8' -lseektype='off_t' -mail='' -mailx='' -make='make' -make_set_make='#' -mallocobj='' -mallocsrc='' -malloctype='void *' -man1dir='/usr/share/man/man1' -man1direxp='/usr/share/man/man1' -man1ext='1' -man3dir='/usr/share/man/man3' -man3direxp='/usr/share/man/man3' -man3ext='3perl' -mips_type='' -mistrustnm='' -mkdir='mkdir' -mmaptype='void *' -modetype='mode_t' -more='more' -multiarch='undef' -mv='' -myarchname='arc-linux' -mydomain='' -myhostname='localhost' -myuname='linux localhost 4.19.0 #1 smp debian 4.19.0 arc gnulinux ' -n='-n' -need_va_copy='undef' -netdb_hlen_type='size_t' -netdb_host_type='const void *' -netdb_name_type='const char *' -netdb_net_type='in_addr_t' -nm='nm' -nm_opt='' -nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers autodie AutoLoader autouse base bignum Carp Config/Perl/V constant CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Devel/SelfStubber Digest Dumpvalue encoding/warnings Env Errno experimental Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS FileCache File/Fetch File/Find File/Path File/Temp Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags if IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP lib libnet Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata Net/Ping NEXT Params/Check parent perlfaq PerlIO/via/QuotedPrint Perl/OSType Pod/Checker Pod/Escapes Pod/Functions Pod/Html podlators Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local version XSLoader' -nroff='nroff' -nvEUformat='"E"' -nvFUformat='"F"' -nvGUformat='"G"' -nv_overflows_integers_at='256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0' -nv_preserves_uv_bits='53' -nveformat='"e"' -nvfformat='"f"' -nvgformat='"g"' -nvmantbits='52' -nvsize='8' -nvtype='double' -o_nonblock='O_NONBLOCK' -obj_ext='.o' -old_pthread_create_joinable='' -optimize='-O2 -g' -orderlib='false' -osname='linux' -osvers='4.19.0' -otherlibdirs=' ' -package='perl5' -pager='/usr/bin/sensible-pager' -passcat='cat /etc/passwd' -patchlevel='32' -path_sep=':' -perl5='/usr/bin/perl' -perl='perl' -perl_patchlevel='' -perl_static_inline='static __inline__' -perladmin='root@localhost' -perllibs='-ldl -lm -lpthread -lc -lcrypt' -perlpath='/usr/bin/perl' -pg='pg' -phostname='hostname' -pidtype='pid_t' -plibpth='/lib/arc-linux-gnu/10 /lib/arc-linux-gnu /lib /usr/lib/arc-linux-gnu/10 /usr/lib/arc-linux-gnu /usr/lib' -pmake='' -pr='' -prefix='/usr' -prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' -procselfexe='"/proc/self/exe"' -ptrsize='4' -quadkind='3' -quadtype='long long' -randbits='48' -randfunc='Perl_drand48' -random_r_proto='REENTRANT_PROTO_I_St' -randseedtype='U32' -ranlib=':' -rd_nodata='-1' -readdir64_r_proto='REENTRANT_PROTO_I_TSR' -readdir_r_proto='REENTRANT_PROTO_I_TSR' -revision='5' -rm='rm' -rm_try='/bin/rm -f try try a.out .out try.[cho] try..o core core.try* try.core*' -rmail='' -run='' -runnm='false' -sGMTIME_max='2147483647' -sGMTIME_min='-2147483648' -sLOCALTIME_max='2147483647' -sLOCALTIME_min='-2147483648' -sPRIEUldbl='"E"' -sPRIFUldbl='"F"' -sPRIGUldbl='"G"' -sPRIXU64='"LX"' -sPRId64='"Ld"' -sPRIeldbl='"e"' -sPRIfldbl='"f"' -sPRIgldbl='"g"' -sPRIi64='"Li"' -sPRIo64='"Lo"' -sPRIu64='"Lu"' -sPRIx64='"Lx"' -sSCNfldbl='"f"' -sched_yield='sched_yield()' -scriptdir='/usr/bin' -scriptdirexp='/usr/bin' -sed='sed' -seedfunc='Perl_drand48_init' -selectminbits='32' -selecttype='fd_set *' -sendmail='' -setgrent_r_proto='0' -sethostent_r_proto='0' -setlocale_r_proto='0' -setnetent_r_proto='0' -setprotoent_r_proto='0' -setpwent_r_proto='0' -setservent_r_proto='0' -sh='/bin/sh' -shar='' -sharpbang='#!' -shmattype='void *' -shortsize='2' -shrpenv='' -shsharp='true' -sig_count='65' -sig_name='ZERO HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS NUM32 NUM33 RTMIN NUM35 NUM36 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43 NUM44 NUM45 NUM46 NUM47 NUM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58 NUM59 NUM60 NUM61 NUM62 NUM63 RTMAX IOT CLD POLL ' -sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "BUS", "FPE", "KILL", "USR1", "SEGV", "USR2", "PIPE", "ALRM", "TERM", "STKFLT", "CHLD", "CONT", "STOP", "TSTP", "TTIN", "TTOU", "URG", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "IO", "PWR", "SYS", "NUM32", "NUM33", "RTMIN", "NUM35", "NUM36", "NUM37", "NUM38", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "NUM48", "NUM49", "NUM50", "NUM51", "NUM52", "NUM53", "NUM54", "NUM55", "NUM56", "NUM57", "NUM58", "NUM59", "NUM60", "NUM61", "NUM62", "NUM63", "RTMAX", "IOT", "CLD", "POLL", 0' -sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 6 17 29 ' -sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 0' -sig_size='68' -signal_t='void' -sitearch='/usr/local/lib/arc-linux-gnu/perl/5.32.1' -sitearchexp='/usr/local/lib/arc-linux-gnu/perl/5.32.1' -sitebin='/usr/local/bin' -sitebinexp='/usr/local/bin' -sitehtml1dir='' -sitehtml1direxp='' -sitehtml3dir='' -sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' -sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' -siteman1dir='/usr/local/man/man1' -siteman1direxp='/usr/local/man/man1' -siteman3dir='/usr/local/man/man3' -siteman3direxp='/usr/local/man/man3' -siteprefix='/usr/local' -siteprefixexp='/usr/local' -sitescript='/usr/local/bin' -sitescriptexp='/usr/local/bin' -sizesize='4' -sizetype='size_t' -sleep='' -smail='' -so='so' -sockethdr='' -socketlib='' -socksizetype='socklen_t' -sort='sort' -spackage='Perl5' -spitshell='cat' -srand48_r_proto='REENTRANT_PROTO_I_LS' -srandom_r_proto='REENTRANT_PROTO_I_TS' -src='/root/perl-5.32.1' -ssizetype='ssize_t' -st_ino_sign='1' -st_ino_size='8' -startperl='#!/usr/bin/perl' -startsh='#!/bin/sh' -static_ext=' ' -stdchar='char' -stdio_base='((fp)->_base)' -stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)' -stdio_cnt='((fp)->_cnt)' -stdio_filbuf='' -stdio_ptr='((fp)->_ptr)' -stdio_stream_array='' -strerror_r_proto='REENTRANT_PROTO_B_IBW' -submit='' -subversion='1' -sysman='/usr/share/man/man1' -sysroot='' -tail='' -tar='' -targetarch='' -targetdir='' -targetenv='' -targethost='' -targetmkdir='' -targetport='' -targetsh='/bin/sh' -tbl='' -tee='' -test='test' -timeincl='/usr/include/arc-linux-gnu/sys/time.h ' -timetype='time_t' -tmpnam_r_proto='REENTRANT_PROTO_B_B' -to=':' -touch='touch' -tr='tr' -trnl='\n' -troff='' -ttyname_r_proto='REENTRANT_PROTO_I_IBW' -u16size='2' -u16type='unsigned short' -u32size='4' -u32type='unsigned long' -u64size='8' -u64type='unsigned long long' -u8size='1' -u8type='unsigned char' -uidformat='"lu"' -uidsign='1' -uidsize='4' -uidtype='uid_t' -uname='uname' -uniq='uniq' -uquadtype='unsigned long long' -use5005threads='undef' -use64bitall='undef' -use64bitint='define' -usecbacktrace='undef' -usecrosscompile='undef' -usedevel='undef' -usedl='define' -usedtrace='undef' -usefaststdio='undef' -useithreads='define' -usekernprocpathname='undef' -uselanginfo='true' -uselargefiles='define' -uselongdouble='undef' -usemallocwrap='define' -usemorebits='undef' -usemultiplicity='define' -usemymalloc='n' -usenm='false' -usensgetexecutablepath='undef' -useopcode='true' -useperlio='define' -useposix='true' -usequadmath='undef' -usereentrant='undef' -userelocatableinc='undef' -useshrplib='false' -usesitecustomize='undef' -usesocks='undef' -usethreads='define' -usevendorprefix='define' -useversionedarchname='undef' -usevfork='false' -usrinc='/usr/include' -uuname='' -uvXUformat='"LX"' -uvoformat='"Lo"' -uvsize='8' -uvtype='unsigned long long' -uvuformat='"Lu"' -uvxformat='"Lx"' -vendorarch='/usr/lib/arc-linux-gnu/perl5/5.32' -vendorarchexp='/usr/lib/arc-linux-gnu/perl5/5.32' -vendorbin='/usr/bin' -vendorbinexp='/usr/bin' -vendorhtml1dir=' ' -vendorhtml1direxp='' -vendorhtml3dir=' ' -vendorhtml3direxp='' -vendorlib='/usr/share/perl5' -vendorlib_stem='' -vendorlibexp='/usr/share/perl5' -vendorman1dir='/usr/share/man/man1' -vendorman1direxp='/usr/share/man/man1' -vendorman3dir='/usr/share/man/man3' -vendorman3direxp='/usr/share/man/man3' -vendorprefix='/usr' -vendorprefixexp='/usr' -vendorscript='/usr/bin' -vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' -versiononly='undef' -vi='' -xlibpth='/usr/lib/386 /lib/386' -yacc='yacc' -yaccflags='' -zcat='' -zip='zip' -PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 -PERL_API_REVISION=5 -PERL_API_VERSION=32 -PERL_API_SUBVERSION=0 -PERL_PATCHLEVEL='' -PERL_CONFIG_SH=true -: Variables propagated from previous config.sh file. -libdb_needs_pthread='N' diff -Nru perl-5.32.1/debian/cross/arm64/config.sh.debug.patch perl-5.34.0/debian/cross/arm64/config.sh.debug.patch --- perl-5.32.1/debian/cross/arm64/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/arm64/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:26.407555092 +0200 -+++ config.sh.debug 2021-02-22 16:50:26.391503944 +0200 +--- config.sh.static 2021-08-25 21:57:39.412309561 +0300 ++++ config.sh.debug 2021-08-25 21:57:39.400309253 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=aarch64-linux-gnu-gcc -Dcpp=aarch64-linux-gnu-cpp -Dld=aarch64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/aarch64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=aarch64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/aarch64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/aarch64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/aarch64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=aarch64-linux-gnu-gcc -Dcpp=aarch64-linux-gnu-cpp -Dld=aarch64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=aarch64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/aarch64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/aarch64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/aarch64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=aarch64-linux-gnu-gcc -Dcpp=aarch64-linux-gnu-cpp -Dld=aarch64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/aarch64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=aarch64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/aarch64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/aarch64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/aarch64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=aarch64-linux-gnu-gcc -Dcpp=aarch64-linux-gnu-cpp -Dld=aarch64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=aarch64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/aarch64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/aarch64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/aarch64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/aarch64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/aarch64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/aarch64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/arm64/config.sh.shared.patch perl-5.34.0/debian/cross/arm64/config.sh.shared.patch --- perl-5.32.1/debian/cross/arm64/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/arm64/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:26.407555092 +0200 -+++ config.sh.shared 2021-02-22 16:50:26.395516731 +0200 +--- config.sh.static 2021-08-25 21:57:39.412309561 +0300 ++++ config.sh.shared 2021-08-25 21:57:39.404309356 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=aarch64-linux-gnu-gcc -Dcpp=aarch64-linux-gnu-cpp -Dld=aarch64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/aarch64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=aarch64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/aarch64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/aarch64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/aarch64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=aarch64-linux-gnu-gcc -Dcpp=aarch64-linux-gnu-cpp -Dld=aarch64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/aarch64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=aarch64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/aarch64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/aarch64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/aarch64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=aarch64-linux-gnu-gcc -Dcpp=aarch64-linux-gnu-cpp -Dld=aarch64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=aarch64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/aarch64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/aarch64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/aarch64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=aarch64-linux-gnu-gcc -Dcpp=aarch64-linux-gnu-cpp -Dld=aarch64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=aarch64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/aarch64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/aarch64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/aarch64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/aarch64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/aarch64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/aarch64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/arm64/config.sh.static perl-5.34.0/debian/cross/arm64/config.sh.static --- perl-5.32.1/debian/cross/arm64/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/arm64/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 aarch64 gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=aarch64-linux-gnu-gcc -Dcpp=aarch64-linux-gnu-cpp -Dld=aarch64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/aarch64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=aarch64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/aarch64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/aarch64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/aarch64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=aarch64-linux-gnu-gcc -Dcpp=aarch64-linux-gnu-cpp -Dld=aarch64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/aarch64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=aarch64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/aarch64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/aarch64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/aarch64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=aarch64-linux-gnu' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/aarch64-linux-gnu/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/aarch64-linux-gnu/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/aarch64-linux-gnu/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/aarch64-linux-gnu/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/aarch64-linux-gnu/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/aarch64-linux-gnu/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/aarch64-linux-gnu/perl/5.32' -archlibexp='/usr/lib/aarch64-linux-gnu/perl/5.32' +archlib='/usr/lib/aarch64-linux-gnu/perl/5.34' +archlibexp='/usr/lib/aarch64-linux-gnu/perl/5.34' archname64='' archname='aarch64-linux-gnu-thread-multi' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -133,7 +134,7 @@ csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/aarch64-linux-gnu-thread-multi' -inc_version_list_init='"5.32.0","5.32.0/aarch64-linux-gnu-thread-multi",0' +inc_version_list='' +inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/aarch64-linux-gnu/10/include /usr/local/include /usr/include/aarch64-linux-gnu /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/aarch64-linux-gnu/perl/5.32' +installarchlib='/usr/lib/aarch64-linux-gnu/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/aarch64-linux-gnu/perl/5.32.1' +installsitearch='/usr/local/lib/aarch64-linux-gnu/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/aarch64-linux-gnu/perl5/5.32' +installvendorarch='/usr/lib/aarch64-linux-gnu/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"ld"' ivsize='8' ivtype='long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='aarch64-linux-gnu-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='libc-2.31.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/aarch64-linux-gnu /usr/lib /lib/aarch64-linux-gnu /lib/../lib /usr/lib/aarch64-linux-gnu /usr/lib/../lib /lib' +libpth='/usr/local/lib /usr/lib/aarch64-linux-gnu /usr/lib /lib/aarch64-linux-gnu /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/aarch64-linux-gnu' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/aarch64-linux-gnu/libgdbm.so /usr/lib/aarch64-linux-gnu/libgdbm_compat.so /usr/lib/aarch64-linux-gnu/libdb.so /usr/lib/aarch64-linux-gnu/libdl.so /usr/lib/aarch64-linux-gnu/libm.so /usr/lib/aarch64-linux-gnu/libpthread.so /usr/lib/aarch64-linux-gnu/libc.so /usr/lib/aarch64-linux-gnu/libcrypt.so' -libspath=' /usr/local/lib /usr/include/aarch64-linux-gnu /usr/lib /lib/aarch64-linux-gnu /lib/../lib /usr/lib/aarch64-linux-gnu /usr/lib/../lib /lib' +libspath=' /usr/local/lib /usr/lib/aarch64-linux-gnu /usr/lib /lib/aarch64-linux-gnu /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1029,8 +1031,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='8' quadkind='2' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 0' sig_size='68' signal_t='void' -sitearch='/usr/local/lib/aarch64-linux-gnu/perl/5.32.1' -sitearchexp='/usr/local/lib/aarch64-linux-gnu/perl/5.32.1' +sitearch='/usr/local/lib/aarch64-linux-gnu/perl/5.34.0' +sitearchexp='/usr/local/lib/aarch64-linux-gnu/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long' -use5005threads='undef' use64bitall='define' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long' uvuformat='"lu"' uvxformat='"lx"' -vendorarch='/usr/lib/aarch64-linux-gnu/perl5/5.32' -vendorarchexp='/usr/lib/aarch64-linux-gnu/perl5/5.32' +vendorarch='/usr/lib/aarch64-linux-gnu/perl5/5.34' +vendorarchexp='/usr/lib/aarch64-linux-gnu/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/armel/config.sh.debug.patch perl-5.34.0/debian/cross/armel/config.sh.debug.patch --- perl-5.32.1/debian/cross/armel/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/armel/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:26.844948882 +0200 -+++ config.sh.debug 2021-02-22 16:50:26.832910521 +0200 +--- config.sh.static 2021-08-25 21:57:39.844320629 +0300 ++++ config.sh.debug 2021-08-25 21:57:39.832320322 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabi-gcc -Dcpp=arm-linux-gnueabi-cpp -Dld=arm-linux-gnueabi-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabi/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabi -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/arm-linux-gnueabi/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabi/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/arm-linux-gnueabi/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabi-gcc -Dcpp=arm-linux-gnueabi-cpp -Dld=arm-linux-gnueabi-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabi -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/arm-linux-gnueabi/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabi/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/arm-linux-gnueabi/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabi-gcc -Dcpp=arm-linux-gnueabi-cpp -Dld=arm-linux-gnueabi-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabi/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabi -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/arm-linux-gnueabi/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabi/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/arm-linux-gnueabi/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabi-gcc -Dcpp=arm-linux-gnueabi-cpp -Dld=arm-linux-gnueabi-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabi -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/arm-linux-gnueabi/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabi/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/arm-linux-gnueabi/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabi/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabi/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabi/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/armel/config.sh.shared.patch perl-5.34.0/debian/cross/armel/config.sh.shared.patch --- perl-5.32.1/debian/cross/armel/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/armel/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:26.844948882 +0200 -+++ config.sh.shared 2021-02-22 16:50:26.836923308 +0200 +--- config.sh.static 2021-08-25 21:57:39.844320629 +0300 ++++ config.sh.shared 2021-08-25 21:57:39.836320425 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabi-gcc -Dcpp=arm-linux-gnueabi-cpp -Dld=arm-linux-gnueabi-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabi/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabi -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/arm-linux-gnueabi/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabi/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/arm-linux-gnueabi/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabi-gcc -Dcpp=arm-linux-gnueabi-cpp -Dld=arm-linux-gnueabi-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabi/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabi -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/arm-linux-gnueabi/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabi/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/arm-linux-gnueabi/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabi-gcc -Dcpp=arm-linux-gnueabi-cpp -Dld=arm-linux-gnueabi-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabi -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/arm-linux-gnueabi/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabi/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/arm-linux-gnueabi/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabi-gcc -Dcpp=arm-linux-gnueabi-cpp -Dld=arm-linux-gnueabi-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabi -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/arm-linux-gnueabi/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabi/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/arm-linux-gnueabi/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabi/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabi/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabi/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/armel/config.sh.static perl-5.34.0/debian/cross/armel/config.sh.static --- perl-5.32.1/debian/cross/armel/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/armel/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 armv7l gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabi-gcc -Dcpp=arm-linux-gnueabi-cpp -Dld=arm-linux-gnueabi-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabi/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabi -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/arm-linux-gnueabi/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabi/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/arm-linux-gnueabi/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabi-gcc -Dcpp=arm-linux-gnueabi-cpp -Dld=arm-linux-gnueabi-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabi/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabi -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/arm-linux-gnueabi/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabi/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/arm-linux-gnueabi/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=arm-linux-gnueabi' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/arm-linux-gnueabi/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/arm-linux-gnueabi/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/arm-linux-gnueabi/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/arm-linux-gnueabi/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/arm-linux-gnueabi/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/arm-linux-gnueabi/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/arm-linux-gnueabi/perl/5.32' -archlibexp='/usr/lib/arm-linux-gnueabi/perl/5.32' +archlib='/usr/lib/arm-linux-gnueabi/perl/5.34' +archlibexp='/usr/lib/arm-linux-gnueabi/perl/5.34' archname64='64int' archname='arm-linux-gnueabi-thread-multi-64int' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -133,7 +134,7 @@ csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/arm-linux-gnueabi-thread-multi-64int' -inc_version_list_init='"5.32.0","5.32.0/arm-linux-gnueabi-thread-multi-64int",0' +inc_version_list='' +inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/arm-linux-gnueabi/10/include /usr/local/include /usr/include/arm-linux-gnueabi /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/arm-linux-gnueabi/perl/5.32' +installarchlib='/usr/lib/arm-linux-gnueabi/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/arm-linux-gnueabi/perl/5.32.1' +installsitearch='/usr/local/lib/arm-linux-gnueabi/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/arm-linux-gnueabi/perl5/5.32' +installvendorarch='/usr/lib/arm-linux-gnueabi/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"Ld"' ivsize='8' ivtype='long long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='arm-linux-gnueabi-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='libc-2.31.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/arm-linux-gnueabi /usr/lib /lib/arm-linux-gnueabi /lib /usr/lib/arm-linux-gnueabi' +libpth='/usr/local/lib /usr/lib/arm-linux-gnueabi /usr/lib /lib/arm-linux-gnueabi /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/arm-linux-gnueabi' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/arm-linux-gnueabi/libgdbm.so /usr/lib/arm-linux-gnueabi/libgdbm_compat.so /usr/lib/arm-linux-gnueabi/libdb.so /usr/lib/arm-linux-gnueabi/libdl.so /usr/lib/arm-linux-gnueabi/libm.so /usr/lib/arm-linux-gnueabi/libpthread.so /usr/lib/arm-linux-gnueabi/libc.so /usr/lib/arm-linux-gnueabi/libcrypt.so' -libspath=' /usr/local/lib /usr/include/arm-linux-gnueabi /usr/lib /lib/arm-linux-gnueabi /lib /usr/lib/arm-linux-gnueabi' +libspath=' /usr/local/lib /usr/lib/arm-linux-gnueabi /usr/lib /lib/arm-linux-gnueabi /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1029,8 +1031,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='4' quadkind='3' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 0' sig_size='68' signal_t='void' -sitearch='/usr/local/lib/arm-linux-gnueabi/perl/5.32.1' -sitearchexp='/usr/local/lib/arm-linux-gnueabi/perl/5.32.1' +sitearch='/usr/local/lib/arm-linux-gnueabi/perl/5.34.0' +sitearchexp='/usr/local/lib/arm-linux-gnueabi/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long long' -use5005threads='undef' use64bitall='undef' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long long' uvuformat='"Lu"' uvxformat='"Lx"' -vendorarch='/usr/lib/arm-linux-gnueabi/perl5/5.32' -vendorarchexp='/usr/lib/arm-linux-gnueabi/perl5/5.32' +vendorarch='/usr/lib/arm-linux-gnueabi/perl5/5.34' +vendorarchexp='/usr/lib/arm-linux-gnueabi/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/armhf/config.sh.debug.patch perl-5.34.0/debian/cross/armhf/config.sh.debug.patch --- perl-5.32.1/debian/cross/armhf/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/armhf/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:27.270213992 +0200 -+++ config.sh.debug 2021-02-22 16:50:27.258179677 +0200 +--- config.sh.static 2021-08-25 21:57:40.300332312 +0300 ++++ config.sh.debug 2021-08-25 21:57:40.276331697 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabihf-gcc -Dcpp=arm-linux-gnueabihf-cpp -Dld=arm-linux-gnueabihf-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabihf/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabihf -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/arm-linux-gnueabihf/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabihf/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/arm-linux-gnueabihf/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabihf-gcc -Dcpp=arm-linux-gnueabihf-cpp -Dld=arm-linux-gnueabihf-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabihf -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/arm-linux-gnueabihf/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabihf/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/arm-linux-gnueabihf/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabihf-gcc -Dcpp=arm-linux-gnueabihf-cpp -Dld=arm-linux-gnueabihf-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabihf/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabihf -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/arm-linux-gnueabihf/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabihf/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/arm-linux-gnueabihf/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabihf-gcc -Dcpp=arm-linux-gnueabihf-cpp -Dld=arm-linux-gnueabihf-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabihf -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/arm-linux-gnueabihf/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabihf/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/arm-linux-gnueabihf/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabihf/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabihf/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabihf/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/armhf/config.sh.shared.patch perl-5.34.0/debian/cross/armhf/config.sh.shared.patch --- perl-5.32.1/debian/cross/armhf/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/armhf/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:27.270213992 +0200 -+++ config.sh.shared 2021-02-22 16:50:27.262191115 +0200 +--- config.sh.static 2021-08-25 21:57:40.300332312 +0300 ++++ config.sh.shared 2021-08-25 21:57:40.288332005 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabihf-gcc -Dcpp=arm-linux-gnueabihf-cpp -Dld=arm-linux-gnueabihf-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabihf/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabihf -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/arm-linux-gnueabihf/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabihf/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/arm-linux-gnueabihf/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabihf-gcc -Dcpp=arm-linux-gnueabihf-cpp -Dld=arm-linux-gnueabihf-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabihf/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabihf -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/arm-linux-gnueabihf/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabihf/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/arm-linux-gnueabihf/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabihf-gcc -Dcpp=arm-linux-gnueabihf-cpp -Dld=arm-linux-gnueabihf-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabihf -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/arm-linux-gnueabihf/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabihf/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/arm-linux-gnueabihf/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabihf-gcc -Dcpp=arm-linux-gnueabihf-cpp -Dld=arm-linux-gnueabihf-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabihf -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/arm-linux-gnueabihf/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabihf/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/arm-linux-gnueabihf/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabihf/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabihf/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabihf/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/armhf/config.sh.static perl-5.34.0/debian/cross/armhf/config.sh.static --- perl-5.32.1/debian/cross/armhf/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/armhf/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 armv7l gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabihf-gcc -Dcpp=arm-linux-gnueabihf-cpp -Dld=arm-linux-gnueabihf-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabihf/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabihf -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/arm-linux-gnueabihf/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabihf/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/arm-linux-gnueabihf/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=arm-linux-gnueabihf-gcc -Dcpp=arm-linux-gnueabihf-cpp -Dld=arm-linux-gnueabihf-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/arm-linux-gnueabihf/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabihf -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/arm-linux-gnueabihf/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/arm-linux-gnueabihf/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/arm-linux-gnueabihf/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=arm-linux-gnueabihf' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/arm-linux-gnueabihf/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/arm-linux-gnueabihf/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/arm-linux-gnueabihf/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/arm-linux-gnueabihf/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/arm-linux-gnueabihf/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/arm-linux-gnueabihf/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/arm-linux-gnueabihf/perl/5.32' -archlibexp='/usr/lib/arm-linux-gnueabihf/perl/5.32' +archlib='/usr/lib/arm-linux-gnueabihf/perl/5.34' +archlibexp='/usr/lib/arm-linux-gnueabihf/perl/5.34' archname64='64int' archname='arm-linux-gnueabihf-thread-multi-64int' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -133,7 +134,7 @@ csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/arm-linux-gnueabihf-thread-multi-64int' -inc_version_list_init='"5.32.0","5.32.0/arm-linux-gnueabihf-thread-multi-64int",0' +inc_version_list='' +inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/arm-linux-gnueabihf/10/include /usr/local/include /usr/include/arm-linux-gnueabihf /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/arm-linux-gnueabihf/perl/5.32' +installarchlib='/usr/lib/arm-linux-gnueabihf/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/arm-linux-gnueabihf/perl/5.32.1' +installsitearch='/usr/local/lib/arm-linux-gnueabihf/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/arm-linux-gnueabihf/perl5/5.32' +installvendorarch='/usr/lib/arm-linux-gnueabihf/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"Ld"' ivsize='8' ivtype='long long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='arm-linux-gnueabihf-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='libc-2.31.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/arm-linux-gnueabihf /usr/lib /lib/arm-linux-gnueabihf /lib /usr/lib/arm-linux-gnueabihf' +libpth='/usr/local/lib /usr/lib/arm-linux-gnueabihf /usr/lib /lib/arm-linux-gnueabihf /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/arm-linux-gnueabihf' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/arm-linux-gnueabihf/libgdbm.so /usr/lib/arm-linux-gnueabihf/libgdbm_compat.so /usr/lib/arm-linux-gnueabihf/libdb.so /usr/lib/arm-linux-gnueabihf/libdl.so /usr/lib/arm-linux-gnueabihf/libm.so /usr/lib/arm-linux-gnueabihf/libpthread.so /usr/lib/arm-linux-gnueabihf/libc.so /usr/lib/arm-linux-gnueabihf/libcrypt.so' -libspath=' /usr/local/lib /usr/include/arm-linux-gnueabihf /usr/lib /lib/arm-linux-gnueabihf /lib /usr/lib/arm-linux-gnueabihf' +libspath=' /usr/local/lib /usr/lib/arm-linux-gnueabihf /usr/lib /lib/arm-linux-gnueabihf /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1029,8 +1031,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='4' quadkind='3' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 0' sig_size='68' signal_t='void' -sitearch='/usr/local/lib/arm-linux-gnueabihf/perl/5.32.1' -sitearchexp='/usr/local/lib/arm-linux-gnueabihf/perl/5.32.1' +sitearch='/usr/local/lib/arm-linux-gnueabihf/perl/5.34.0' +sitearchexp='/usr/local/lib/arm-linux-gnueabihf/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long long' -use5005threads='undef' use64bitall='undef' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long long' uvuformat='"Lu"' uvxformat='"Lx"' -vendorarch='/usr/lib/arm-linux-gnueabihf/perl5/5.32' -vendorarchexp='/usr/lib/arm-linux-gnueabihf/perl5/5.32' +vendorarch='/usr/lib/arm-linux-gnueabihf/perl5/5.34' +vendorarchexp='/usr/lib/arm-linux-gnueabihf/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/hppa/config.sh.debug.patch perl-5.34.0/debian/cross/hppa/config.sh.debug.patch --- perl-5.32.1/debian/cross/hppa/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/hppa/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:27.795712462 +0200 -+++ config.sh.debug 2021-02-22 16:50:27.779666707 +0200 +--- config.sh.static 2021-08-25 21:57:40.828345840 +0300 ++++ config.sh.debug 2021-08-25 21:57:40.812345431 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=hppa-linux-gnu-gcc -Dcpp=hppa-linux-gnu-cpp -Dld=hppa-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/hppa-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=hppa-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/hppa-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/hppa-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/hppa-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=hppa-linux-gnu-gcc -Dcpp=hppa-linux-gnu-cpp -Dld=hppa-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=hppa-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/hppa-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/hppa-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/hppa-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=hppa-linux-gnu-gcc -Dcpp=hppa-linux-gnu-cpp -Dld=hppa-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/hppa-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=hppa-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/hppa-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/hppa-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/hppa-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=hppa-linux-gnu-gcc -Dcpp=hppa-linux-gnu-cpp -Dld=hppa-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=hppa-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/hppa-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/hppa-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/hppa-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/hppa-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/hppa-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/hppa-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/hppa/config.sh.shared.patch perl-5.34.0/debian/cross/hppa/config.sh.shared.patch --- perl-5.32.1/debian/cross/hppa/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/hppa/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:27.795712462 +0200 -+++ config.sh.shared 2021-02-22 16:50:27.783678146 +0200 +--- config.sh.static 2021-08-25 21:57:40.828345840 +0300 ++++ config.sh.shared 2021-08-25 21:57:40.816345533 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=hppa-linux-gnu-gcc -Dcpp=hppa-linux-gnu-cpp -Dld=hppa-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/hppa-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=hppa-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/hppa-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/hppa-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/hppa-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=hppa-linux-gnu-gcc -Dcpp=hppa-linux-gnu-cpp -Dld=hppa-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/hppa-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=hppa-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/hppa-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/hppa-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/hppa-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=hppa-linux-gnu-gcc -Dcpp=hppa-linux-gnu-cpp -Dld=hppa-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=hppa-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/hppa-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/hppa-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/hppa-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=hppa-linux-gnu-gcc -Dcpp=hppa-linux-gnu-cpp -Dld=hppa-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=hppa-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/hppa-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/hppa-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/hppa-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/hppa-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/hppa-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/hppa-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/hppa/config.sh.static perl-5.34.0/debian/cross/hppa/config.sh.static --- perl-5.32.1/debian/cross/hppa/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/hppa/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 parisc64 gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=hppa-linux-gnu-gcc -Dcpp=hppa-linux-gnu-cpp -Dld=hppa-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/hppa-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=hppa-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/hppa-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/hppa-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/hppa-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=hppa-linux-gnu-gcc -Dcpp=hppa-linux-gnu-cpp -Dld=hppa-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/hppa-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=hppa-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/hppa-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/hppa-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/hppa-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=hppa-linux-gnu' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/hppa-linux-gnu/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/hppa-linux-gnu/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/hppa-linux-gnu/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/hppa-linux-gnu/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/hppa-linux-gnu/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/hppa-linux-gnu/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/hppa-linux-gnu/perl/5.32' -archlibexp='/usr/lib/hppa-linux-gnu/perl/5.32' +archlib='/usr/lib/hppa-linux-gnu/perl/5.34' +archlibexp='/usr/lib/hppa-linux-gnu/perl/5.34' archname64='64int' archname='hppa-linux-gnu-thread-multi-64int' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -133,7 +134,7 @@ csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/hppa-linux-gnu-thread-multi-64int' -inc_version_list_init='"5.32.0","5.32.0/hppa-linux-gnu-thread-multi-64int",0' +inc_version_list='' +inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/hppa-linux-gnu/10/include /usr/local/include /usr/include/hppa-linux-gnu /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/hppa-linux-gnu/perl/5.32' +installarchlib='/usr/lib/hppa-linux-gnu/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/hppa-linux-gnu/perl/5.32.1' +installsitearch='/usr/local/lib/hppa-linux-gnu/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/hppa-linux-gnu/perl5/5.32' +installvendorarch='/usr/lib/hppa-linux-gnu/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"Ld"' ivsize='8' ivtype='long long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='hppa-linux-gnu-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='libc-2.31.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/hppa-linux-gnu /usr/lib /lib/hppa-linux-gnu /lib /usr/lib/hppa-linux-gnu' +libpth='/usr/local/lib /usr/lib/hppa-linux-gnu /usr/lib /lib/hppa-linux-gnu /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/hppa-linux-gnu' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/hppa-linux-gnu/libgdbm.so /usr/lib/hppa-linux-gnu/libgdbm_compat.so /usr/lib/hppa-linux-gnu/libdb.so /usr/lib/hppa-linux-gnu/libdl.so /usr/lib/hppa-linux-gnu/libm.so /usr/lib/hppa-linux-gnu/libpthread.so /usr/lib/hppa-linux-gnu/libc.so /usr/lib/hppa-linux-gnu/libcrypt.so' -libspath=' /usr/local/lib /usr/include/hppa-linux-gnu /usr/lib /lib/hppa-linux-gnu /lib /usr/lib/hppa-linux-gnu' +libspath=' /usr/local/lib /usr/lib/hppa-linux-gnu /usr/lib /lib/hppa-linux-gnu /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1029,8 +1031,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='4' quadkind='3' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 18, 22, 0' sig_size='68' signal_t='void' -sitearch='/usr/local/lib/hppa-linux-gnu/perl/5.32.1' -sitearchexp='/usr/local/lib/hppa-linux-gnu/perl/5.32.1' +sitearch='/usr/local/lib/hppa-linux-gnu/perl/5.34.0' +sitearchexp='/usr/local/lib/hppa-linux-gnu/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long long' -use5005threads='undef' use64bitall='undef' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long long' uvuformat='"Lu"' uvxformat='"Lx"' -vendorarch='/usr/lib/hppa-linux-gnu/perl5/5.32' -vendorarchexp='/usr/lib/hppa-linux-gnu/perl5/5.32' +vendorarch='/usr/lib/hppa-linux-gnu/perl5/5.34' +vendorarchexp='/usr/lib/hppa-linux-gnu/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/i386/config.sh.debug.patch perl-5.34.0/debian/cross/i386/config.sh.debug.patch --- perl-5.32.1/debian/cross/i386/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/i386/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:28.734173568 +0200 -+++ config.sh.debug 2021-02-22 16:50:28.722142792 +0200 +--- config.sh.static 2021-08-25 21:57:41.308358139 +0300 ++++ config.sh.debug 2021-08-25 21:57:41.296357831 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=i686-linux-gnu-gcc -Dcpp=i686-linux-gnu-cpp -Dld=i686-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/i386-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=i686-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/i386-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/i386-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/i386-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=i686-linux-gnu-gcc -Dcpp=i686-linux-gnu-cpp -Dld=i686-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=i686-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/i386-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/i386-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/i386-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=i686-linux-gnu-gcc -Dcpp=i686-linux-gnu-cpp -Dld=i686-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/i386-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=i686-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/i386-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/i386-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/i386-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=i686-linux-gnu-gcc -Dcpp=i686-linux-gnu-cpp -Dld=i686-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=i686-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/i386-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/i386-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/i386-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/i386-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/i386-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/i386-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/i386/config.sh.shared.patch perl-5.34.0/debian/cross/i386/config.sh.shared.patch --- perl-5.32.1/debian/cross/i386/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/i386/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:28.734173568 +0200 -+++ config.sh.shared 2021-02-22 16:50:28.722142792 +0200 +--- config.sh.static 2021-08-25 21:57:41.308358139 +0300 ++++ config.sh.shared 2021-08-25 21:57:41.300357933 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=i686-linux-gnu-gcc -Dcpp=i686-linux-gnu-cpp -Dld=i686-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/i386-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=i686-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/i386-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/i386-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/i386-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=i686-linux-gnu-gcc -Dcpp=i686-linux-gnu-cpp -Dld=i686-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/i386-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=i686-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/i386-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/i386-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/i386-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=i686-linux-gnu-gcc -Dcpp=i686-linux-gnu-cpp -Dld=i686-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=i686-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/i386-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/i386-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/i386-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=i686-linux-gnu-gcc -Dcpp=i686-linux-gnu-cpp -Dld=i686-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=i686-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/i386-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/i386-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/i386-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/i386-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/i386-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/i386-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/i386/config.sh.static perl-5.34.0/debian/cross/i386/config.sh.static --- perl-5.32.1/debian/cross/i386/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/i386/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 i686 gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=i686-linux-gnu-gcc -Dcpp=i686-linux-gnu-cpp -Dld=i686-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/i386-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=i686-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/i386-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/i386-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/i386-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=i686-linux-gnu-gcc -Dcpp=i686-linux-gnu-cpp -Dld=i686-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/i386-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=i686-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/i386-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/i386-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/i386-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=i686-linux-gnu' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/i386-linux-gnu/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/i386-linux-gnu/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/i386-linux-gnu/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/i386-linux-gnu/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/i386-linux-gnu/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/i386-linux-gnu/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/i386-linux-gnu/perl/5.32' -archlibexp='/usr/lib/i386-linux-gnu/perl/5.32' +archlib='/usr/lib/i386-linux-gnu/perl/5.34' +archlibexp='/usr/lib/i386-linux-gnu/perl/5.34' archname64='64int' archname='i686-linux-gnu-thread-multi-64int' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -133,7 +134,7 @@ csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/i686-linux-gnu-thread-multi-64int' -inc_version_list_init='"5.32.0","5.32.0/i686-linux-gnu-thread-multi-64int",0' +inc_version_list='' +inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/i686-linux-gnu/10/include /usr/local/include /usr/include/i386-linux-gnu /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/i386-linux-gnu/perl/5.32' +installarchlib='/usr/lib/i386-linux-gnu/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/i386-linux-gnu/perl/5.32.1' +installsitearch='/usr/local/lib/i386-linux-gnu/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/i386-linux-gnu/perl5/5.32' +installvendorarch='/usr/lib/i386-linux-gnu/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"Ld"' ivsize='8' ivtype='long long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='i686-linux-gnu-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='libc-2.31.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/i386-linux-gnu /usr/lib /lib/i386-linux-gnu /lib/../lib /usr/lib/i386-linux-gnu /usr/lib/../lib /lib' +libpth='/usr/local/lib /usr/lib/i386-linux-gnu /usr/lib /lib/i386-linux-gnu /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/i386-linux-gnu' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/i386-linux-gnu/libgdbm.so /usr/lib/i386-linux-gnu/libgdbm_compat.so /usr/lib/i386-linux-gnu/libdb.so /usr/lib/i386-linux-gnu/libdl.so /usr/lib/i386-linux-gnu/libm.so /usr/lib/i386-linux-gnu/libpthread.so /usr/lib/i386-linux-gnu/libc.so /usr/lib/i386-linux-gnu/libcrypt.so' -libspath=' /usr/local/lib /usr/include/i386-linux-gnu /usr/lib /lib/i386-linux-gnu /lib/../lib /usr/lib/i386-linux-gnu /usr/lib/../lib /lib' +libspath=' /usr/local/lib /usr/lib/i386-linux-gnu /usr/lib /lib/i386-linux-gnu /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1029,8 +1031,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='4' quadkind='3' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 0' sig_size='68' signal_t='void' -sitearch='/usr/local/lib/i386-linux-gnu/perl/5.32.1' -sitearchexp='/usr/local/lib/i386-linux-gnu/perl/5.32.1' +sitearch='/usr/local/lib/i386-linux-gnu/perl/5.34.0' +sitearchexp='/usr/local/lib/i386-linux-gnu/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long long' -use5005threads='undef' use64bitall='undef' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long long' uvuformat='"Lu"' uvxformat='"Lx"' -vendorarch='/usr/lib/i386-linux-gnu/perl5/5.32' -vendorarchexp='/usr/lib/i386-linux-gnu/perl5/5.32' +vendorarch='/usr/lib/i386-linux-gnu/perl5/5.34' +vendorarchexp='/usr/lib/i386-linux-gnu/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/ia64/config.sh.debug.patch perl-5.34.0/debian/cross/ia64/config.sh.debug.patch --- perl-5.32.1/debian/cross/ia64/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/ia64/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:29.299544359 +0200 -+++ config.sh.debug 2021-02-22 16:50:29.287516679 +0200 +--- config.sh.static 2021-08-25 21:57:41.872372589 +0300 ++++ config.sh.debug 2021-08-25 21:57:41.860372281 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=ia64-linux-gnu-gcc -Dcpp=ia64-linux-gnu-cpp -Dld=ia64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/ia64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=ia64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/ia64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/ia64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/ia64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=ia64-linux-gnu-gcc -Dcpp=ia64-linux-gnu-cpp -Dld=ia64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=ia64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/ia64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/ia64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/ia64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=ia64-linux-gnu-gcc -Dcpp=ia64-linux-gnu-cpp -Dld=ia64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/ia64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=ia64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/ia64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/ia64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/ia64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=ia64-linux-gnu-gcc -Dcpp=ia64-linux-gnu-cpp -Dld=ia64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=ia64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/ia64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/ia64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/ia64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/ia64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/ia64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/ia64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/ia64/config.sh.shared.patch perl-5.34.0/debian/cross/ia64/config.sh.shared.patch --- perl-5.32.1/debian/cross/ia64/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/ia64/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:29.299544359 +0200 -+++ config.sh.shared 2021-02-22 16:50:29.291525906 +0200 +--- config.sh.static 2021-08-25 21:57:41.872372589 +0300 ++++ config.sh.shared 2021-08-25 21:57:41.864372384 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=ia64-linux-gnu-gcc -Dcpp=ia64-linux-gnu-cpp -Dld=ia64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/ia64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=ia64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/ia64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/ia64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/ia64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=ia64-linux-gnu-gcc -Dcpp=ia64-linux-gnu-cpp -Dld=ia64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/ia64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=ia64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/ia64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/ia64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/ia64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=ia64-linux-gnu-gcc -Dcpp=ia64-linux-gnu-cpp -Dld=ia64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=ia64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/ia64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/ia64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/ia64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=ia64-linux-gnu-gcc -Dcpp=ia64-linux-gnu-cpp -Dld=ia64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=ia64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/ia64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/ia64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/ia64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/ia64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/ia64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/ia64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/ia64/config.sh.static perl-5.34.0/debian/cross/ia64/config.sh.static --- perl-5.32.1/debian/cross/ia64/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/ia64/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 ia64 gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=ia64-linux-gnu-gcc -Dcpp=ia64-linux-gnu-cpp -Dld=ia64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/ia64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=ia64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/ia64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/ia64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/ia64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=ia64-linux-gnu-gcc -Dcpp=ia64-linux-gnu-cpp -Dld=ia64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/ia64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -Wformat -Werror=format-security -Dldflags= -Dlddlflags=-shared -Dcccdlflags=-fPIC -Darchname=ia64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/ia64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/ia64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/ia64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=ia64-linux-gnu' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/ia64-linux-gnu/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/ia64-linux-gnu/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/ia64-linux-gnu/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/ia64-linux-gnu/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/ia64-linux-gnu/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/ia64-linux-gnu/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/ia64-linux-gnu/perl/5.32' -archlibexp='/usr/lib/ia64-linux-gnu/perl/5.32' +archlib='/usr/lib/ia64-linux-gnu/perl/5.34' +archlibexp='/usr/lib/ia64-linux-gnu/perl/5.34' archname64='' archname='ia64-linux-gnu-thread-multi' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -133,7 +134,7 @@ csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/ia64-linux-gnu-thread-multi' -inc_version_list_init='"5.32.0","5.32.0/ia64-linux-gnu-thread-multi",0' +inc_version_list='' +inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/ia64-linux-gnu/10/include /usr/local/include /usr/include/ia64-linux-gnu /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/ia64-linux-gnu/perl/5.32' +installarchlib='/usr/lib/ia64-linux-gnu/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/ia64-linux-gnu/perl/5.32.1' +installsitearch='/usr/local/lib/ia64-linux-gnu/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/ia64-linux-gnu/perl5/5.32' +installvendorarch='/usr/lib/ia64-linux-gnu/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"ld"' ivsize='8' ivtype='long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='ia64-linux-gnu-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='/usr/lib/ia64-linux-gnu/libc.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/ia64-linux-gnu /usr/lib /lib/ia64-linux-gnu /lib /usr/lib/ia64-linux-gnu' +libpth='/usr/local/lib /usr/lib/ia64-linux-gnu /usr/lib /lib/ia64-linux-gnu /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/ia64-linux-gnu' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/ia64-linux-gnu/libgdbm.so /usr/lib/ia64-linux-gnu/libgdbm_compat.so /usr/lib/ia64-linux-gnu/libdb.so /usr/lib/ia64-linux-gnu/libdl.so /usr/lib/ia64-linux-gnu/libm.so /usr/lib/ia64-linux-gnu/libpthread.so /usr/lib/ia64-linux-gnu/libc.so /usr/lib/ia64-linux-gnu/libcrypt.so' -libspath=' /usr/local/lib /usr/include/ia64-linux-gnu /usr/lib /lib/ia64-linux-gnu /lib /usr/lib/ia64-linux-gnu' +libspath=' /usr/local/lib /usr/lib/ia64-linux-gnu /usr/lib /lib/ia64-linux-gnu /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1029,8 +1031,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='8' quadkind='2' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 0' sig_size='68' signal_t='void' -sitearch='/usr/local/lib/ia64-linux-gnu/perl/5.32.1' -sitearchexp='/usr/local/lib/ia64-linux-gnu/perl/5.32.1' +sitearch='/usr/local/lib/ia64-linux-gnu/perl/5.34.0' +sitearchexp='/usr/local/lib/ia64-linux-gnu/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long' -use5005threads='undef' use64bitall='define' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long' uvuformat='"lu"' uvxformat='"lx"' -vendorarch='/usr/lib/ia64-linux-gnu/perl5/5.32' -vendorarchexp='/usr/lib/ia64-linux-gnu/perl5/5.32' +vendorarch='/usr/lib/ia64-linux-gnu/perl5/5.34' +vendorarchexp='/usr/lib/ia64-linux-gnu/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/m68k/config.sh.debug.patch perl-5.34.0/debian/cross/m68k/config.sh.debug.patch --- perl-5.32.1/debian/cross/m68k/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/m68k/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:29.808716129 +0200 -+++ config.sh.debug 2021-02-22 16:50:29.792679223 +0200 +--- config.sh.static 2021-08-25 21:57:42.380385605 +0300 ++++ config.sh.debug 2021-08-25 21:57:42.368385297 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=m68k-linux-gnu-gcc -Dcpp=m68k-linux-gnu-cpp -Dld=m68k-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/m68k-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=m68k-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/m68k-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/m68k-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/m68k-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=m68k-linux-gnu-gcc -Dcpp=m68k-linux-gnu-cpp -Dld=m68k-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=m68k-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/m68k-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/m68k-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/m68k-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=m68k-linux-gnu-gcc -Dcpp=m68k-linux-gnu-cpp -Dld=m68k-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/m68k-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=m68k-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/m68k-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/m68k-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/m68k-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=m68k-linux-gnu-gcc -Dcpp=m68k-linux-gnu-cpp -Dld=m68k-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=m68k-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/m68k-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/m68k-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/m68k-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/m68k-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/m68k-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/m68k-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/m68k/config.sh.shared.patch perl-5.34.0/debian/cross/m68k/config.sh.shared.patch --- perl-5.32.1/debian/cross/m68k/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/m68k/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:29.808716129 +0200 -+++ config.sh.shared 2021-02-22 16:50:29.796688450 +0200 +--- config.sh.static 2021-08-25 21:57:42.380385605 +0300 ++++ config.sh.shared 2021-08-25 21:57:42.372385400 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=m68k-linux-gnu-gcc -Dcpp=m68k-linux-gnu-cpp -Dld=m68k-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/m68k-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=m68k-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/m68k-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/m68k-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/m68k-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=m68k-linux-gnu-gcc -Dcpp=m68k-linux-gnu-cpp -Dld=m68k-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/m68k-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=m68k-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/m68k-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/m68k-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/m68k-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=m68k-linux-gnu-gcc -Dcpp=m68k-linux-gnu-cpp -Dld=m68k-linux-gnu-gcc -Dccflags=-DDEBIAN -fno-regmove -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=m68k-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/m68k-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/m68k-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/m68k-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=m68k-linux-gnu-gcc -Dcpp=m68k-linux-gnu-cpp -Dld=m68k-linux-gnu-gcc -Dccflags=-DDEBIAN -fno-regmove -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=m68k-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/m68k-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/m68k-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/m68k-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/m68k-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/m68k-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-regmove -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/m68k-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-regmove -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/m68k/config.sh.static perl-5.34.0/debian/cross/m68k/config.sh.static --- perl-5.32.1/debian/cross/m68k/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/m68k/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 m68k gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=m68k-linux-gnu-gcc -Dcpp=m68k-linux-gnu-cpp -Dld=m68k-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/m68k-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=m68k-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/m68k-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/m68k-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/m68k-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=m68k-linux-gnu-gcc -Dcpp=m68k-linux-gnu-cpp -Dld=m68k-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/m68k-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=m68k-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/m68k-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/m68k-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/m68k-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=m68k-linux-gnu' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/m68k-linux-gnu/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/m68k-linux-gnu/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/m68k-linux-gnu/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/m68k-linux-gnu/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/m68k-linux-gnu/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/m68k-linux-gnu/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/m68k-linux-gnu/perl/5.32' -archlibexp='/usr/lib/m68k-linux-gnu/perl/5.32' +archlib='/usr/lib/m68k-linux-gnu/perl/5.34' +archlibexp='/usr/lib/m68k-linux-gnu/perl/5.34' archname64='64int' archname='m68k-linux-gnu-thread-multi-64int' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -133,7 +134,7 @@ csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/m68k-linux-gnu-thread-multi-64int' -inc_version_list_init='"5.32.0","5.32.0/m68k-linux-gnu-thread-multi-64int",0' +inc_version_list='' +inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/m68k-linux-gnu/10/include /usr/local/include /usr/include/m68k-linux-gnu /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/m68k-linux-gnu/perl/5.32' +installarchlib='/usr/lib/m68k-linux-gnu/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/m68k-linux-gnu/perl/5.32.1' +installsitearch='/usr/local/lib/m68k-linux-gnu/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/m68k-linux-gnu/perl5/5.32' +installvendorarch='/usr/lib/m68k-linux-gnu/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"Ld"' ivsize='8' ivtype='long long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='m68k-linux-gnu-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='libc-2.31.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/m68k-linux-gnu /usr/lib /lib/m68k-linux-gnu /lib /usr/lib/m68k-linux-gnu' +libpth='/usr/local/lib /usr/lib/m68k-linux-gnu /usr/lib /lib/m68k-linux-gnu /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/m68k-linux-gnu' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/m68k-linux-gnu/libgdbm.so /usr/lib/m68k-linux-gnu/libgdbm_compat.so /usr/lib/m68k-linux-gnu/libdb.so /usr/lib/m68k-linux-gnu/libdl.so /usr/lib/m68k-linux-gnu/libm.so /usr/lib/m68k-linux-gnu/libpthread.so /usr/lib/m68k-linux-gnu/libc.so /usr/lib/m68k-linux-gnu/libcrypt.so' -libspath=' /usr/local/lib /usr/include/m68k-linux-gnu /usr/lib /lib/m68k-linux-gnu /lib /usr/lib/m68k-linux-gnu' +libspath=' /usr/local/lib /usr/lib/m68k-linux-gnu /usr/lib /lib/m68k-linux-gnu /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1029,8 +1031,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='4' quadkind='3' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 0' sig_size='68' signal_t='void' -sitearch='/usr/local/lib/m68k-linux-gnu/perl/5.32.1' -sitearchexp='/usr/local/lib/m68k-linux-gnu/perl/5.32.1' +sitearch='/usr/local/lib/m68k-linux-gnu/perl/5.34.0' +sitearchexp='/usr/local/lib/m68k-linux-gnu/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long long' -use5005threads='undef' use64bitall='undef' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long long' uvuformat='"Lu"' uvxformat='"Lx"' -vendorarch='/usr/lib/m68k-linux-gnu/perl5/5.32' -vendorarchexp='/usr/lib/m68k-linux-gnu/perl5/5.32' +vendorarch='/usr/lib/m68k-linux-gnu/perl5/5.34' +vendorarchexp='/usr/lib/m68k-linux-gnu/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/mips64el/config.sh.debug.patch perl-5.34.0/debian/cross/mips64el/config.sh.debug.patch --- perl-5.32.1/debian/cross/mips64el/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/mips64el/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:30.265708414 +0200 -+++ config.sh.debug 2021-02-22 16:50:30.245666798 +0200 +--- config.sh.static 2021-08-25 21:57:42.880398416 +0300 ++++ config.sh.debug 2021-08-25 21:57:42.868398108 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mips64el-linux-gnuabi64-gcc -Dcpp=mips64el-linux-gnuabi64-cpp -Dld=mips64el-linux-gnuabi64-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/mips64el-linux-gnuabi64/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mips64el-linux-gnuabi64 -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/mips64el-linux-gnuabi64/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mips64el-linux-gnuabi64/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/mips64el-linux-gnuabi64/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mips64el-linux-gnuabi64-gcc -Dcpp=mips64el-linux-gnuabi64-cpp -Dld=mips64el-linux-gnuabi64-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mips64el-linux-gnuabi64 -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/mips64el-linux-gnuabi64/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mips64el-linux-gnuabi64/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/mips64el-linux-gnuabi64/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mips64el-linux-gnuabi64-gcc -Dcpp=mips64el-linux-gnuabi64-cpp -Dld=mips64el-linux-gnuabi64-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/mips64el-linux-gnuabi64/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mips64el-linux-gnuabi64 -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/mips64el-linux-gnuabi64/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mips64el-linux-gnuabi64/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/mips64el-linux-gnuabi64/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mips64el-linux-gnuabi64-gcc -Dcpp=mips64el-linux-gnuabi64-cpp -Dld=mips64el-linux-gnuabi64-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mips64el-linux-gnuabi64 -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/mips64el-linux-gnuabi64/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mips64el-linux-gnuabi64/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/mips64el-linux-gnuabi64/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/mips64el-linux-gnuabi64/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/mips64el-linux-gnuabi64/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/mips64el-linux-gnuabi64/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/mips64el/config.sh.shared.patch perl-5.34.0/debian/cross/mips64el/config.sh.shared.patch --- perl-5.32.1/debian/cross/mips64el/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/mips64el/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:30.265708414 +0200 -+++ config.sh.shared 2021-02-22 16:50:30.253683445 +0200 +--- config.sh.static 2021-08-25 21:57:42.880398416 +0300 ++++ config.sh.shared 2021-08-25 21:57:42.872398211 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mips64el-linux-gnuabi64-gcc -Dcpp=mips64el-linux-gnuabi64-cpp -Dld=mips64el-linux-gnuabi64-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/mips64el-linux-gnuabi64/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mips64el-linux-gnuabi64 -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/mips64el-linux-gnuabi64/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mips64el-linux-gnuabi64/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/mips64el-linux-gnuabi64/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mips64el-linux-gnuabi64-gcc -Dcpp=mips64el-linux-gnuabi64-cpp -Dld=mips64el-linux-gnuabi64-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/mips64el-linux-gnuabi64/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mips64el-linux-gnuabi64 -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/mips64el-linux-gnuabi64/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mips64el-linux-gnuabi64/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/mips64el-linux-gnuabi64/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mips64el-linux-gnuabi64-gcc -Dcpp=mips64el-linux-gnuabi64-cpp -Dld=mips64el-linux-gnuabi64-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mips64el-linux-gnuabi64 -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/mips64el-linux-gnuabi64/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mips64el-linux-gnuabi64/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/mips64el-linux-gnuabi64/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mips64el-linux-gnuabi64-gcc -Dcpp=mips64el-linux-gnuabi64-cpp -Dld=mips64el-linux-gnuabi64-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mips64el-linux-gnuabi64 -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/mips64el-linux-gnuabi64/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mips64el-linux-gnuabi64/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/mips64el-linux-gnuabi64/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/mips64el-linux-gnuabi64/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/mips64el-linux-gnuabi64/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/mips64el-linux-gnuabi64/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/mips64el/config.sh.static perl-5.34.0/debian/cross/mips64el/config.sh.static --- perl-5.32.1/debian/cross/mips64el/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/mips64el/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 mips64 gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mips64el-linux-gnuabi64-gcc -Dcpp=mips64el-linux-gnuabi64-cpp -Dld=mips64el-linux-gnuabi64-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/mips64el-linux-gnuabi64/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mips64el-linux-gnuabi64 -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/mips64el-linux-gnuabi64/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mips64el-linux-gnuabi64/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/mips64el-linux-gnuabi64/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mips64el-linux-gnuabi64-gcc -Dcpp=mips64el-linux-gnuabi64-cpp -Dld=mips64el-linux-gnuabi64-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/mips64el-linux-gnuabi64/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mips64el-linux-gnuabi64 -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/mips64el-linux-gnuabi64/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mips64el-linux-gnuabi64/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/mips64el-linux-gnuabi64/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=mips64el-linux-gnuabi64' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/mips64el-linux-gnuabi64/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/mips64el-linux-gnuabi64/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/mips64el-linux-gnuabi64/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/mips64el-linux-gnuabi64/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/mips64el-linux-gnuabi64/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/mips64el-linux-gnuabi64/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/mips64el-linux-gnuabi64/perl/5.32' -archlibexp='/usr/lib/mips64el-linux-gnuabi64/perl/5.32' +archlib='/usr/lib/mips64el-linux-gnuabi64/perl/5.34' +archlibexp='/usr/lib/mips64el-linux-gnuabi64/perl/5.34' archname64='' archname='mips64el-linux-gnuabi64-thread-multi' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -133,7 +134,7 @@ csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/mips64el-linux-gnuabi64-thread-multi' -inc_version_list_init='"5.32.0","5.32.0/mips64el-linux-gnuabi64-thread-multi",0' +inc_version_list='' +inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/mips64el-linux-gnuabi64/10/include /usr/local/include /usr/include/mips64el-linux-gnuabi64 /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/mips64el-linux-gnuabi64/perl/5.32' +installarchlib='/usr/lib/mips64el-linux-gnuabi64/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/mips64el-linux-gnuabi64/perl/5.32.1' +installsitearch='/usr/local/lib/mips64el-linux-gnuabi64/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/mips64el-linux-gnuabi64/perl5/5.32' +installvendorarch='/usr/lib/mips64el-linux-gnuabi64/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"ld"' ivsize='8' ivtype='long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='mips64el-linux-gnuabi64-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='libc-2.31.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/mips64el-linux-gnuabi64 /usr/lib /lib/mips64el-linux-gnuabi64 /lib/../lib /usr/lib/mips64el-linux-gnuabi64 /usr/lib/../lib /lib' +libpth='/usr/local/lib /usr/lib/mips64el-linux-gnuabi64 /usr/lib /lib/mips64el-linux-gnuabi64 /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/mips64el-linux-gnuabi64' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/mips64el-linux-gnuabi64/libgdbm.so /usr/lib/mips64el-linux-gnuabi64/libgdbm_compat.so /usr/lib/mips64el-linux-gnuabi64/libdb.so /usr/lib/mips64el-linux-gnuabi64/libdl.so /usr/lib/mips64el-linux-gnuabi64/libm.so /usr/lib/mips64el-linux-gnuabi64/libpthread.so /usr/lib/mips64el-linux-gnuabi64/libc.so /usr/lib/mips64el-linux-gnuabi64/libcrypt.so' -libspath=' /usr/local/lib /usr/include/mips64el-linux-gnuabi64 /usr/lib /lib/mips64el-linux-gnuabi64 /lib/../lib /usr/lib/mips64el-linux-gnuabi64 /usr/lib/../lib /lib' +libspath=' /usr/local/lib /usr/lib/mips64el-linux-gnuabi64 /usr/lib /lib/mips64el-linux-gnuabi64 /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1029,8 +1031,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='8' quadkind='2' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 6, 18, 22, 0' sig_size='131' signal_t='void' -sitearch='/usr/local/lib/mips64el-linux-gnuabi64/perl/5.32.1' -sitearchexp='/usr/local/lib/mips64el-linux-gnuabi64/perl/5.32.1' +sitearch='/usr/local/lib/mips64el-linux-gnuabi64/perl/5.34.0' +sitearchexp='/usr/local/lib/mips64el-linux-gnuabi64/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long' -use5005threads='undef' use64bitall='define' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long' uvuformat='"lu"' uvxformat='"lx"' -vendorarch='/usr/lib/mips64el-linux-gnuabi64/perl5/5.32' -vendorarchexp='/usr/lib/mips64el-linux-gnuabi64/perl5/5.32' +vendorarch='/usr/lib/mips64el-linux-gnuabi64/perl5/5.34' +vendorarchexp='/usr/lib/mips64el-linux-gnuabi64/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/mipsel/config.sh.debug.patch perl-5.34.0/debian/cross/mipsel/config.sh.debug.patch --- perl-5.32.1/debian/cross/mipsel/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/mipsel/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:30.710632294 +0200 -+++ config.sh.debug 2021-02-22 16:50:30.698607323 +0200 +--- config.sh.static 2021-08-25 21:57:43.356410612 +0300 ++++ config.sh.debug 2021-08-25 21:57:43.344410305 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mipsel-linux-gnu-gcc -Dcpp=mipsel-linux-gnu-cpp -Dld=mipsel-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/mipsel-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mipsel-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/mipsel-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mipsel-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/mipsel-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mipsel-linux-gnu-gcc -Dcpp=mipsel-linux-gnu-cpp -Dld=mipsel-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mipsel-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/mipsel-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mipsel-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/mipsel-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mipsel-linux-gnu-gcc -Dcpp=mipsel-linux-gnu-cpp -Dld=mipsel-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/mipsel-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mipsel-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/mipsel-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mipsel-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/mipsel-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mipsel-linux-gnu-gcc -Dcpp=mipsel-linux-gnu-cpp -Dld=mipsel-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mipsel-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/mipsel-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mipsel-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/mipsel-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/mipsel-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/mipsel-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/mipsel-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/mipsel/config.sh.shared.patch perl-5.34.0/debian/cross/mipsel/config.sh.shared.patch --- perl-5.32.1/debian/cross/mipsel/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/mipsel/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:30.710632294 +0200 -+++ config.sh.shared 2021-02-22 16:50:30.702615647 +0200 +--- config.sh.static 2021-08-25 21:57:43.356410612 +0300 ++++ config.sh.shared 2021-08-25 21:57:43.348410407 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mipsel-linux-gnu-gcc -Dcpp=mipsel-linux-gnu-cpp -Dld=mipsel-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/mipsel-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mipsel-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/mipsel-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mipsel-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/mipsel-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mipsel-linux-gnu-gcc -Dcpp=mipsel-linux-gnu-cpp -Dld=mipsel-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/mipsel-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mipsel-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/mipsel-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mipsel-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/mipsel-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mipsel-linux-gnu-gcc -Dcpp=mipsel-linux-gnu-cpp -Dld=mipsel-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mipsel-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/mipsel-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mipsel-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/mipsel-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mipsel-linux-gnu-gcc -Dcpp=mipsel-linux-gnu-cpp -Dld=mipsel-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mipsel-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/mipsel-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mipsel-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/mipsel-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/mipsel-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/mipsel-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/mipsel-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/mipsel/config.sh.static perl-5.34.0/debian/cross/mipsel/config.sh.static --- perl-5.32.1/debian/cross/mipsel/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/mipsel/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 mips gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mipsel-linux-gnu-gcc -Dcpp=mipsel-linux-gnu-cpp -Dld=mipsel-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/mipsel-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mipsel-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/mipsel-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mipsel-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/mipsel-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=mipsel-linux-gnu-gcc -Dcpp=mipsel-linux-gnu-cpp -Dld=mipsel-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/mipsel-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=mipsel-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/mipsel-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/mipsel-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/mipsel-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=mipsel-linux-gnu' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/mipsel-linux-gnu/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/mipsel-linux-gnu/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/mipsel-linux-gnu/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/mipsel-linux-gnu/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/mipsel-linux-gnu/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/mipsel-linux-gnu/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/mipsel-linux-gnu/perl/5.32' -archlibexp='/usr/lib/mipsel-linux-gnu/perl/5.32' +archlib='/usr/lib/mipsel-linux-gnu/perl/5.34' +archlibexp='/usr/lib/mipsel-linux-gnu/perl/5.34' archname64='64int' archname='mipsel-linux-gnu-thread-multi-64int' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -133,7 +134,7 @@ csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/mipsel-linux-gnu-thread-multi-64int' -inc_version_list_init='"5.32.0","5.32.0/mipsel-linux-gnu-thread-multi-64int",0' +inc_version_list='' +inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/mipsel-linux-gnu/10/include /usr/local/include /usr/include/mipsel-linux-gnu /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/mipsel-linux-gnu/perl/5.32' +installarchlib='/usr/lib/mipsel-linux-gnu/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/mipsel-linux-gnu/perl/5.32.1' +installsitearch='/usr/local/lib/mipsel-linux-gnu/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/mipsel-linux-gnu/perl5/5.32' +installvendorarch='/usr/lib/mipsel-linux-gnu/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"Ld"' ivsize='8' ivtype='long long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='mipsel-linux-gnu-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='libc-2.31.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/mipsel-linux-gnu /usr/lib /lib/mipsel-linux-gnu /lib/../lib /usr/lib/mipsel-linux-gnu /usr/lib/../lib /lib' +libpth='/usr/local/lib /usr/lib/mipsel-linux-gnu /usr/lib /lib/mipsel-linux-gnu /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/mipsel-linux-gnu' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/mipsel-linux-gnu/libgdbm.so /usr/lib/mipsel-linux-gnu/libgdbm_compat.so /usr/lib/mipsel-linux-gnu/libdb.so /usr/lib/mipsel-linux-gnu/libdl.so /usr/lib/mipsel-linux-gnu/libm.so /usr/lib/mipsel-linux-gnu/libpthread.so /usr/lib/mipsel-linux-gnu/libc.so /usr/lib/mipsel-linux-gnu/libcrypt.so' -libspath=' /usr/local/lib /usr/include/mipsel-linux-gnu /usr/lib /lib/mipsel-linux-gnu /lib/../lib /usr/lib/mipsel-linux-gnu /usr/lib/../lib /lib' +libspath=' /usr/local/lib /usr/lib/mipsel-linux-gnu /usr/lib /lib/mipsel-linux-gnu /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1029,8 +1031,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='4' quadkind='3' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 6, 18, 22, 0' sig_size='131' signal_t='void' -sitearch='/usr/local/lib/mipsel-linux-gnu/perl/5.32.1' -sitearchexp='/usr/local/lib/mipsel-linux-gnu/perl/5.32.1' +sitearch='/usr/local/lib/mipsel-linux-gnu/perl/5.34.0' +sitearchexp='/usr/local/lib/mipsel-linux-gnu/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long long' -use5005threads='undef' use64bitall='undef' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long long' uvuformat='"Lu"' uvxformat='"Lx"' -vendorarch='/usr/lib/mipsel-linux-gnu/perl5/5.32' -vendorarchexp='/usr/lib/mipsel-linux-gnu/perl5/5.32' +vendorarch='/usr/lib/mipsel-linux-gnu/perl5/5.34' +vendorarchexp='/usr/lib/mipsel-linux-gnu/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/powerpc/config.sh.debug.patch perl-5.34.0/debian/cross/powerpc/config.sh.debug.patch --- perl-5.32.1/debian/cross/powerpc/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/powerpc/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:31.199609446 +0200 -+++ config.sh.debug 2021-02-22 16:50:31.187586848 +0200 +--- config.sh.static 2021-08-25 21:57:43.840423014 +0300 ++++ config.sh.debug 2021-08-25 21:57:43.828422705 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc-linux-gnu-gcc -Dcpp=powerpc-linux-gnu-cpp -Dld=powerpc-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/powerpc-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/powerpc-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc-linux-gnu-gcc -Dcpp=powerpc-linux-gnu-cpp -Dld=powerpc-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/powerpc-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/powerpc-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc-linux-gnu-gcc -Dcpp=powerpc-linux-gnu-cpp -Dld=powerpc-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/powerpc-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/powerpc-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc-linux-gnu-gcc -Dcpp=powerpc-linux-gnu-cpp -Dld=powerpc-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/powerpc-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/powerpc-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/powerpc/config.sh.shared.patch perl-5.34.0/debian/cross/powerpc/config.sh.shared.patch --- perl-5.32.1/debian/cross/powerpc/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/powerpc/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:31.199609446 +0200 -+++ config.sh.shared 2021-02-22 16:50:31.191594381 +0200 +--- config.sh.static 2021-08-25 21:57:43.840423014 +0300 ++++ config.sh.shared 2021-08-25 21:57:43.832422808 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc-linux-gnu-gcc -Dcpp=powerpc-linux-gnu-cpp -Dld=powerpc-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/powerpc-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/powerpc-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc-linux-gnu-gcc -Dcpp=powerpc-linux-gnu-cpp -Dld=powerpc-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/powerpc-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/powerpc-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc-linux-gnu-gcc -Dcpp=powerpc-linux-gnu-cpp -Dld=powerpc-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/powerpc-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/powerpc-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc-linux-gnu-gcc -Dcpp=powerpc-linux-gnu-cpp -Dld=powerpc-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/powerpc-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/powerpc-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/powerpc/config.sh.static perl-5.34.0/debian/cross/powerpc/config.sh.static --- perl-5.32.1/debian/cross/powerpc/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/powerpc/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 ppc gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc-linux-gnu-gcc -Dcpp=powerpc-linux-gnu-cpp -Dld=powerpc-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/powerpc-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/powerpc-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc-linux-gnu-gcc -Dcpp=powerpc-linux-gnu-cpp -Dld=powerpc-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/powerpc-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/powerpc-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=powerpc-linux-gnu' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/powerpc-linux-gnu/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/powerpc-linux-gnu/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/powerpc-linux-gnu/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/powerpc-linux-gnu/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/powerpc-linux-gnu/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/powerpc-linux-gnu/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/powerpc-linux-gnu/perl/5.32' -archlibexp='/usr/lib/powerpc-linux-gnu/perl/5.32' +archlib='/usr/lib/powerpc-linux-gnu/perl/5.34' +archlibexp='/usr/lib/powerpc-linux-gnu/perl/5.34' archname64='64int' archname='powerpc-linux-gnu-thread-multi-64int' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -133,7 +134,7 @@ csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/powerpc-linux-gnu-thread-multi-64int' -inc_version_list_init='"5.32.0","5.32.0/powerpc-linux-gnu-thread-multi-64int",0' +inc_version_list='' +inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/powerpc-linux-gnu/10/include /usr/local/include /usr/include/powerpc-linux-gnu /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/powerpc-linux-gnu/perl/5.32' +installarchlib='/usr/lib/powerpc-linux-gnu/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/powerpc-linux-gnu/perl/5.32.1' +installsitearch='/usr/local/lib/powerpc-linux-gnu/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/powerpc-linux-gnu/perl5/5.32' +installvendorarch='/usr/lib/powerpc-linux-gnu/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"Ld"' ivsize='8' ivtype='long long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='powerpc-linux-gnu-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='libc-2.31.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/powerpc-linux-gnu /usr/lib /lib/powerpc-linux-gnu /lib/../lib /usr/lib/powerpc-linux-gnu /usr/lib/../lib /lib' +libpth='/usr/local/lib /usr/lib/powerpc-linux-gnu /usr/lib /lib/powerpc-linux-gnu /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/powerpc-linux-gnu' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/powerpc-linux-gnu/libgdbm.so /usr/lib/powerpc-linux-gnu/libgdbm_compat.so /usr/lib/powerpc-linux-gnu/libdb.so /usr/lib/powerpc-linux-gnu/libdl.so /usr/lib/powerpc-linux-gnu/libm.so /usr/lib/powerpc-linux-gnu/libpthread.so /usr/lib/powerpc-linux-gnu/libc.so /usr/lib/powerpc-linux-gnu/libcrypt.so' -libspath=' /usr/local/lib /usr/include/powerpc-linux-gnu /usr/lib /lib/powerpc-linux-gnu /lib/../lib /usr/lib/powerpc-linux-gnu /usr/lib/../lib /lib' +libspath=' /usr/local/lib /usr/lib/powerpc-linux-gnu /usr/lib /lib/powerpc-linux-gnu /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1029,8 +1031,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='4' quadkind='3' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 0' sig_size='68' signal_t='void' -sitearch='/usr/local/lib/powerpc-linux-gnu/perl/5.32.1' -sitearchexp='/usr/local/lib/powerpc-linux-gnu/perl/5.32.1' +sitearch='/usr/local/lib/powerpc-linux-gnu/perl/5.34.0' +sitearchexp='/usr/local/lib/powerpc-linux-gnu/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long long' -use5005threads='undef' use64bitall='undef' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long long' uvuformat='"Lu"' uvxformat='"Lx"' -vendorarch='/usr/lib/powerpc-linux-gnu/perl5/5.32' -vendorarchexp='/usr/lib/powerpc-linux-gnu/perl5/5.32' +vendorarch='/usr/lib/powerpc-linux-gnu/perl5/5.34' +vendorarchexp='/usr/lib/powerpc-linux-gnu/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/ppc64/config.sh.debug.patch perl-5.34.0/debian/cross/ppc64/config.sh.debug.patch --- perl-5.32.1/debian/cross/ppc64/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/ppc64/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:31.728603782 +0200 -+++ config.sh.debug 2021-02-22 16:50:31.716581184 +0200 +--- config.sh.static 2021-08-25 21:57:44.396437259 +0300 ++++ config.sh.debug 2021-08-25 21:57:44.380436849 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64-linux-gnu-gcc -Dcpp=powerpc64-linux-gnu-cpp -Dld=powerpc64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/powerpc64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/powerpc64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64-linux-gnu-gcc -Dcpp=powerpc64-linux-gnu-cpp -Dld=powerpc64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/powerpc64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/powerpc64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64-linux-gnu-gcc -Dcpp=powerpc64-linux-gnu-cpp -Dld=powerpc64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/powerpc64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/powerpc64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64-linux-gnu-gcc -Dcpp=powerpc64-linux-gnu-cpp -Dld=powerpc64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/powerpc64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/powerpc64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/ppc64/config.sh.shared.patch perl-5.34.0/debian/cross/ppc64/config.sh.shared.patch --- perl-5.32.1/debian/cross/ppc64/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/ppc64/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:31.728603782 +0200 -+++ config.sh.shared 2021-02-22 16:50:31.716581184 +0200 +--- config.sh.static 2021-08-25 21:57:44.396437259 +0300 ++++ config.sh.shared 2021-08-25 21:57:44.384436952 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64-linux-gnu-gcc -Dcpp=powerpc64-linux-gnu-cpp -Dld=powerpc64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/powerpc64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/powerpc64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64-linux-gnu-gcc -Dcpp=powerpc64-linux-gnu-cpp -Dld=powerpc64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/powerpc64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/powerpc64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64-linux-gnu-gcc -Dcpp=powerpc64-linux-gnu-cpp -Dld=powerpc64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/powerpc64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/powerpc64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64-linux-gnu-gcc -Dcpp=powerpc64-linux-gnu-cpp -Dld=powerpc64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/powerpc64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/powerpc64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/ppc64/config.sh.static perl-5.34.0/debian/cross/ppc64/config.sh.static --- perl-5.32.1/debian/cross/ppc64/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/ppc64/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 ppc64 gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64-linux-gnu-gcc -Dcpp=powerpc64-linux-gnu-cpp -Dld=powerpc64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/powerpc64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/powerpc64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64-linux-gnu-gcc -Dcpp=powerpc64-linux-gnu-cpp -Dld=powerpc64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/powerpc64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/powerpc64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=powerpc64-linux-gnu' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/powerpc64-linux-gnu/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/powerpc64-linux-gnu/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/powerpc64-linux-gnu/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/powerpc64-linux-gnu/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/powerpc64-linux-gnu/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/powerpc64-linux-gnu/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/powerpc64-linux-gnu/perl/5.32' -archlibexp='/usr/lib/powerpc64-linux-gnu/perl/5.32' +archlib='/usr/lib/powerpc64-linux-gnu/perl/5.34' +archlibexp='/usr/lib/powerpc64-linux-gnu/perl/5.34' archname64='' archname='powerpc64-linux-gnu-thread-multi' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -133,7 +134,7 @@ csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/powerpc64-linux-gnu-thread-multi' -inc_version_list_init='"5.32.0","5.32.0/powerpc64-linux-gnu-thread-multi",0' +inc_version_list='' +inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/powerpc64-linux-gnu/10/include /usr/local/include /usr/include/powerpc64-linux-gnu /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/powerpc64-linux-gnu/perl/5.32' +installarchlib='/usr/lib/powerpc64-linux-gnu/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/powerpc64-linux-gnu/perl/5.32.1' +installsitearch='/usr/local/lib/powerpc64-linux-gnu/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/powerpc64-linux-gnu/perl5/5.32' +installvendorarch='/usr/lib/powerpc64-linux-gnu/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"ld"' ivsize='8' ivtype='long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='powerpc64-linux-gnu-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='libc-2.31.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/powerpc64-linux-gnu /usr/lib /lib/powerpc64-linux-gnu /lib/../lib /usr/lib/powerpc64-linux-gnu /usr/lib/../lib /lib' +libpth='/usr/local/lib /usr/lib/powerpc64-linux-gnu /usr/lib /lib/powerpc64-linux-gnu /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/powerpc64-linux-gnu' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/powerpc64-linux-gnu/libgdbm.so /usr/lib/powerpc64-linux-gnu/libgdbm_compat.so /usr/lib/powerpc64-linux-gnu/libdb.so /usr/lib/powerpc64-linux-gnu/libdl.so /usr/lib/powerpc64-linux-gnu/libm.so /usr/lib/powerpc64-linux-gnu/libpthread.so /usr/lib/powerpc64-linux-gnu/libc.so /usr/lib/powerpc64-linux-gnu/libcrypt.so' -libspath=' /usr/local/lib /usr/include/powerpc64-linux-gnu /usr/lib /lib/powerpc64-linux-gnu /lib/../lib /usr/lib/powerpc64-linux-gnu /usr/lib/../lib /lib' +libspath=' /usr/local/lib /usr/lib/powerpc64-linux-gnu /usr/lib /lib/powerpc64-linux-gnu /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1029,8 +1031,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='8' quadkind='2' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 0' sig_size='68' signal_t='void' -sitearch='/usr/local/lib/powerpc64-linux-gnu/perl/5.32.1' -sitearchexp='/usr/local/lib/powerpc64-linux-gnu/perl/5.32.1' +sitearch='/usr/local/lib/powerpc64-linux-gnu/perl/5.34.0' +sitearchexp='/usr/local/lib/powerpc64-linux-gnu/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long' -use5005threads='undef' use64bitall='define' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long' uvuformat='"lu"' uvxformat='"lx"' -vendorarch='/usr/lib/powerpc64-linux-gnu/perl5/5.32' -vendorarchexp='/usr/lib/powerpc64-linux-gnu/perl5/5.32' +vendorarch='/usr/lib/powerpc64-linux-gnu/perl5/5.34' +vendorarchexp='/usr/lib/powerpc64-linux-gnu/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/ppc64el/config.sh.debug.patch perl-5.34.0/debian/cross/ppc64el/config.sh.debug.patch --- perl-5.32.1/debian/cross/ppc64el/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/ppc64el/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:32.249540242 +0200 -+++ config.sh.debug 2021-02-22 16:50:32.237519718 +0200 +--- config.sh.static 2021-08-25 21:57:44.932450993 +0300 ++++ config.sh.debug 2021-08-25 21:57:44.916450583 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64le-linux-gnu-gcc -Dcpp=powerpc64le-linux-gnu-cpp -Dld=powerpc64le-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64le-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64le-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/powerpc64le-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64le-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/powerpc64le-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64le-linux-gnu-gcc -Dcpp=powerpc64le-linux-gnu-cpp -Dld=powerpc64le-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64le-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/powerpc64le-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64le-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/powerpc64le-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64le-linux-gnu-gcc -Dcpp=powerpc64le-linux-gnu-cpp -Dld=powerpc64le-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64le-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64le-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/powerpc64le-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64le-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/powerpc64le-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64le-linux-gnu-gcc -Dcpp=powerpc64le-linux-gnu-cpp -Dld=powerpc64le-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64le-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/powerpc64le-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64le-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/powerpc64le-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64le-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64le-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64le-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/ppc64el/config.sh.shared.patch perl-5.34.0/debian/cross/ppc64el/config.sh.shared.patch --- perl-5.32.1/debian/cross/ppc64el/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/ppc64el/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:32.249540242 +0200 -+++ config.sh.shared 2021-02-22 16:50:32.241526559 +0200 +--- config.sh.static 2021-08-25 21:57:44.932450993 +0300 ++++ config.sh.shared 2021-08-25 21:57:44.920450686 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64le-linux-gnu-gcc -Dcpp=powerpc64le-linux-gnu-cpp -Dld=powerpc64le-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64le-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64le-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/powerpc64le-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64le-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/powerpc64le-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64le-linux-gnu-gcc -Dcpp=powerpc64le-linux-gnu-cpp -Dld=powerpc64le-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64le-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64le-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/powerpc64le-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64le-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/powerpc64le-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64le-linux-gnu-gcc -Dcpp=powerpc64le-linux-gnu-cpp -Dld=powerpc64le-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64le-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/powerpc64le-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64le-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/powerpc64le-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64le-linux-gnu-gcc -Dcpp=powerpc64le-linux-gnu-cpp -Dld=powerpc64le-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64le-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/powerpc64le-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64le-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/powerpc64le-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64le-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64le-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64le-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/ppc64el/config.sh.static perl-5.34.0/debian/cross/ppc64el/config.sh.static --- perl-5.32.1/debian/cross/ppc64el/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/ppc64el/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 ppc64le gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64le-linux-gnu-gcc -Dcpp=powerpc64le-linux-gnu-cpp -Dld=powerpc64le-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64le-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64le-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/powerpc64le-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64le-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/powerpc64le-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=powerpc64le-linux-gnu-gcc -Dcpp=powerpc64le-linux-gnu-cpp -Dld=powerpc64le-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/powerpc64le-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=powerpc64le-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/powerpc64le-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/powerpc64le-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/powerpc64le-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=powerpc64le-linux-gnu' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/powerpc64le-linux-gnu/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/powerpc64le-linux-gnu/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/powerpc64le-linux-gnu/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/powerpc64le-linux-gnu/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/powerpc64le-linux-gnu/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/powerpc64le-linux-gnu/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/powerpc64le-linux-gnu/perl/5.32' -archlibexp='/usr/lib/powerpc64le-linux-gnu/perl/5.32' +archlib='/usr/lib/powerpc64le-linux-gnu/perl/5.34' +archlibexp='/usr/lib/powerpc64le-linux-gnu/perl/5.34' archname64='' archname='powerpc64le-linux-gnu-thread-multi' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -133,7 +134,7 @@ csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/powerpc64le-linux-gnu-thread-multi' -inc_version_list_init='"5.32.0","5.32.0/powerpc64le-linux-gnu-thread-multi",0' +inc_version_list='' +inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/powerpc64le-linux-gnu/10/include /usr/local/include /usr/include/powerpc64le-linux-gnu /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/powerpc64le-linux-gnu/perl/5.32' +installarchlib='/usr/lib/powerpc64le-linux-gnu/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/powerpc64le-linux-gnu/perl/5.32.1' +installsitearch='/usr/local/lib/powerpc64le-linux-gnu/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/powerpc64le-linux-gnu/perl5/5.32' +installvendorarch='/usr/lib/powerpc64le-linux-gnu/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"ld"' ivsize='8' ivtype='long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='powerpc64le-linux-gnu-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='libc-2.31.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/powerpc64le-linux-gnu /usr/lib /lib/powerpc64le-linux-gnu /lib/../lib /usr/lib/powerpc64le-linux-gnu /usr/lib/../lib /lib' +libpth='/usr/local/lib /usr/lib/powerpc64le-linux-gnu /usr/lib /lib/powerpc64le-linux-gnu /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/powerpc64le-linux-gnu' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/powerpc64le-linux-gnu/libgdbm.so /usr/lib/powerpc64le-linux-gnu/libgdbm_compat.so /usr/lib/powerpc64le-linux-gnu/libdb.so /usr/lib/powerpc64le-linux-gnu/libdl.so /usr/lib/powerpc64le-linux-gnu/libm.so /usr/lib/powerpc64le-linux-gnu/libpthread.so /usr/lib/powerpc64le-linux-gnu/libc.so /usr/lib/powerpc64le-linux-gnu/libcrypt.so' -libspath=' /usr/local/lib /usr/include/powerpc64le-linux-gnu /usr/lib /lib/powerpc64le-linux-gnu /lib/../lib /usr/lib/powerpc64le-linux-gnu /usr/lib/../lib /lib' +libspath=' /usr/local/lib /usr/lib/powerpc64le-linux-gnu /usr/lib /lib/powerpc64le-linux-gnu /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1029,8 +1031,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='8' quadkind='2' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 0' sig_size='68' signal_t='void' -sitearch='/usr/local/lib/powerpc64le-linux-gnu/perl/5.32.1' -sitearchexp='/usr/local/lib/powerpc64le-linux-gnu/perl/5.32.1' +sitearch='/usr/local/lib/powerpc64le-linux-gnu/perl/5.34.0' +sitearchexp='/usr/local/lib/powerpc64le-linux-gnu/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long' -use5005threads='undef' use64bitall='define' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long' uvuformat='"lu"' uvxformat='"lx"' -vendorarch='/usr/lib/powerpc64le-linux-gnu/perl5/5.32' -vendorarchexp='/usr/lib/powerpc64le-linux-gnu/perl5/5.32' +vendorarch='/usr/lib/powerpc64le-linux-gnu/perl5/5.34' +vendorarchexp='/usr/lib/powerpc64le-linux-gnu/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/riscv64/config.sh.debug.patch perl-5.34.0/debian/cross/riscv64/config.sh.debug.patch --- perl-5.32.1/debian/cross/riscv64/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/riscv64/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:32.714333828 +0200 -+++ config.sh.debug 2021-02-22 16:50:32.702313304 +0200 +--- config.sh.static 2021-08-25 21:57:45.448464214 +0300 ++++ config.sh.debug 2021-08-25 21:57:45.436463907 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=riscv64-linux-gnu-gcc -Dcpp=riscv64-linux-gnu-cpp -Dld=riscv64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/riscv64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=riscv64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/riscv64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/riscv64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/riscv64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=riscv64-linux-gnu-gcc -Dcpp=riscv64-linux-gnu-cpp -Dld=riscv64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=riscv64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/riscv64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/riscv64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/riscv64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=riscv64-linux-gnu-gcc -Dcpp=riscv64-linux-gnu-cpp -Dld=riscv64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/riscv64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=riscv64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/riscv64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/riscv64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/riscv64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=riscv64-linux-gnu-gcc -Dcpp=riscv64-linux-gnu-cpp -Dld=riscv64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=riscv64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/riscv64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/riscv64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/riscv64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/riscv64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/riscv64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/riscv64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/riscv64/config.sh.shared.patch perl-5.34.0/debian/cross/riscv64/config.sh.shared.patch --- perl-5.32.1/debian/cross/riscv64/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/riscv64/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:32.714333828 +0200 -+++ config.sh.shared 2021-02-22 16:50:32.706320146 +0200 +--- config.sh.static 2021-08-25 21:57:45.448464214 +0300 ++++ config.sh.shared 2021-08-25 21:57:45.440464010 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=riscv64-linux-gnu-gcc -Dcpp=riscv64-linux-gnu-cpp -Dld=riscv64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/riscv64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=riscv64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/riscv64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/riscv64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/riscv64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=riscv64-linux-gnu-gcc -Dcpp=riscv64-linux-gnu-cpp -Dld=riscv64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/riscv64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=riscv64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/riscv64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/riscv64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/riscv64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=riscv64-linux-gnu-gcc -Dcpp=riscv64-linux-gnu-cpp -Dld=riscv64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=riscv64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/riscv64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/riscv64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/riscv64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=riscv64-linux-gnu-gcc -Dcpp=riscv64-linux-gnu-cpp -Dld=riscv64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=riscv64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/riscv64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/riscv64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/riscv64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/riscv64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/riscv64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/riscv64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/riscv64/config.sh.static perl-5.34.0/debian/cross/riscv64/config.sh.static --- perl-5.32.1/debian/cross/riscv64/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/riscv64/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 riscv64 gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=riscv64-linux-gnu-gcc -Dcpp=riscv64-linux-gnu-cpp -Dld=riscv64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/riscv64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=riscv64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/riscv64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/riscv64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/riscv64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=riscv64-linux-gnu-gcc -Dcpp=riscv64-linux-gnu-cpp -Dld=riscv64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/riscv64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=riscv64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/riscv64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/riscv64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/riscv64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=riscv64-linux-gnu' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/riscv64-linux-gnu/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/riscv64-linux-gnu/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/riscv64-linux-gnu/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/riscv64-linux-gnu/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/riscv64-linux-gnu/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/riscv64-linux-gnu/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/riscv64-linux-gnu/perl/5.32' -archlibexp='/usr/lib/riscv64-linux-gnu/perl/5.32' +archlib='/usr/lib/riscv64-linux-gnu/perl/5.34' +archlibexp='/usr/lib/riscv64-linux-gnu/perl/5.34' archname64='' archname='riscv64-linux-gnu-thread-multi' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -127,13 +128,13 @@ cppminus='-' cpprun='riscv64-linux-gnu-gcc -E' cppstdin='riscv64-linux-gnu-gcc -E' -cppsymbols='_FILE_OFFSET_BITS=64 _FORTIFY_SOURCE=2 _GNU_SOURCE=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 _LP64=1 _POSIX_C_SOURCE=200809L _POSIX_SOURCE=1 _REENTRANT=1 _STDC_PREDEF_H=1 _XOPEN_SOURCE=700 _XOPEN_SOURCE_EXTENDED=1 __ATOMIC_ACQUIRE=2 __ATOMIC_ACQ_REL=4 __ATOMIC_CONSUME=1 __ATOMIC_RELAXED=0 __ATOMIC_RELEASE=3 __ATOMIC_SEQ_CST=5 __BIGGEST_ALIGNMENT__=16 __BYTE_ORDER__=1234 __CHAR16_TYPE__=short\ unsigned\ int __CHAR32_TYPE__=unsigned\ int __CHAR_BIT__=8 __CHAR_UNSIGNED__=1 __DBL_DECIMAL_DIG__=17 __DBL_DENORM_MIN__=((double)4.94065645841246544176568792868221372e-324L) __DBL_DIG__=15 __DBL_EPSILON__=((double)2.22044604925031308084726333618164062e-16L) __DBL_HAS_DENORM__=1 __DBL_HAS_INFINITY__=1 __DBL_HAS_QUIET_NAN__=1 __DBL_MANT_DIG__=53 __DBL_MAX_10_EXP__=308 __DBL_MAX_EXP__=1024 __DBL_MAX__=((double)1.79769313486231570814527423731704357e+308L) __DBL_MIN_10_EXP__=(-307) __DBL_MIN_EXP__=(-1021) __DBL_MIN__=((double)2.22507385850720138309023271733240406e-308L) __DBL_NORM_MAX__=((double)1.79769313486231570814527423731704357e+308L) __DECIMAL_DIG__=36 __DEC_EVAL_METHOD__=2 __ELF__=1 __FINITE_MATH_ONLY__=0 __FLOAT_WORD_ORDER__=1234 __FLT128_DECIMAL_DIG__=36 __FLT128_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F128 __FLT128_DIG__=33 __FLT128_EPSILON__=1.92592994438723585305597794258492732e-34F128 __FLT128_HAS_DENORM__=1 __FLT128_HAS_INFINITY__=1 __FLT128_HAS_QUIET_NAN__=1 __FLT128_MANT_DIG__=113 __FLT128_MAX_10_EXP__=4932 __FLT128_MAX_EXP__=16384 __FLT128_MAX__=1.18973149535723176508575932662800702e+4932F128 __FLT128_MIN_10_EXP__=(-4931) __FLT128_MIN_EXP__=(-16381) __FLT128_MIN__=3.36210314311209350626267781732175260e-4932F128 __FLT128_NORM_MAX__=1.18973149535723176508575932662800702e+4932F128 __FLT32X_DECIMAL_DIG__=17 __FLT32X_DENORM_MIN__=4.94065645841246544176568792868221372e-324F32x __FLT32X_DIG__=15 __FLT32X_EPSILON__=2.22044604925031308084726333618164062e-16F32x __FLT32X_HAS_DENORM__=1 __FLT32X_HAS_INFINITY__=1 __FLT32X_HAS_QUIET_NAN__=1 __FLT32X_MANT_DIG__=53 __FLT32X_MAX_10_EXP__=308 __FLT32X_MAX_EXP__=1024 __FLT32X_MAX__=1.79769313486231570814527423731704357e+308F32x __FLT32X_MIN_10_EXP__=(-307) __FLT32X_MIN_EXP__=(-1021) __FLT32X_MIN__=2.22507385850720138309023271733240406e-308F32x __FLT32X_NORM_MAX__=1.79769313486231570814527423731704357e+308F32x __FLT32_DECIMAL_DIG__=9 __FLT32_DENORM_MIN__=1.40129846432481707092372958328991613e-45F32 __FLT32_DIG__=6 __FLT32_EPSILON__=1.19209289550781250000000000000000000e-7F32 __FLT32_HAS_DENORM__=1 __FLT32_HAS_INFINITY__=1 __FLT32_HAS_QUIET_NAN__=1 __FLT32_MANT_DIG__=24 __FLT32_MAX_10_EXP__=38 __FLT32_MAX_EXP__=128 __FLT32_MAX__=3.40282346638528859811704183484516925e+38F32 __FLT32_MIN_10_EXP__=(-37) __FLT32_MIN_EXP__=(-125) __FLT32_MIN__=1.17549435082228750796873653722224568e-38F32 __FLT32_NORM_MAX__=3.40282346638528859811704183484516925e+38F32 __FLT64X_DECIMAL_DIG__=36 __FLT64X_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F64x __FLT64X_DIG__=33 __FLT64X_EPSILON__=1.92592994438723585305597794258492732e-34F64x __FLT64X_HAS_DENORM__=1 __FLT64X_HAS_INFINITY__=1 __FLT64X_HAS_QUIET_NAN__=1 __FLT64X_MANT_DIG__=113 __FLT64X_MAX_10_EXP__=4932 __FLT64X_MAX_EXP__=16384 __FLT64X_MAX__=1.18973149535723176508575932662800702e+4932F64x __FLT64X_MIN_10_EXP__=(-4931) __FLT64X_MIN_EXP__=(-16381) __FLT64X_MIN__=3.36210314311209350626267781732175260e-4932F64x __FLT64X_NORM_MAX__=1.18973149535723176508575932662800702e+4932F64x __FLT64_DECIMAL_DIG__=17 __FLT64_DENORM_MIN__=4.94065645841246544176568792868221372e-324F64 __FLT64_DIG__=15 __FLT64_EPSILON__=2.22044604925031308084726333618164062e-16F64 __FLT64_HAS_DENORM__=1 __FLT64_HAS_INFINITY__=1 __FLT64_HAS_QUIET_NAN__=1 __FLT64_MANT_DIG__=53 __FLT64_MAX_10_EXP__=308 __FLT64_MAX_EXP__=1024 __FLT64_MAX__=1.79769313486231570814527423731704357e+308F64 __FLT64_MIN_10_EXP__=(-307) __FLT64_MIN_EXP__=(-1021) __FLT64_MIN__=2.22507385850720138309023271733240406e-308F64 __FLT64_NORM_MAX__=1.79769313486231570814527423731704357e+308F64 __FLT_DECIMAL_DIG__=9 __FLT_DENORM_MIN__=1.40129846432481707092372958328991613e-45F __FLT_DIG__=6 __FLT_EPSILON__=1.19209289550781250000000000000000000e-7F __FLT_EVAL_METHOD_TS_18661_3__=0 __FLT_EVAL_METHOD__=0 __FLT_HAS_DENORM__=1 __FLT_HAS_INFINITY__=1 __FLT_HAS_QUIET_NAN__=1 __FLT_MANT_DIG__=24 __FLT_MAX_10_EXP__=38 __FLT_MAX_EXP__=128 __FLT_MAX__=3.40282346638528859811704183484516925e+38F __FLT_MIN_10_EXP__=(-37) __FLT_MIN_EXP__=(-125) __FLT_MIN__=1.17549435082228750796873653722224568e-38F __FLT_NORM_MAX__=3.40282346638528859811704183484516925e+38F __FLT_RADIX__=2 __FP_FAST_FMA=1 __FP_FAST_FMAF32=1 __FP_FAST_FMAF32x=1 __FP_FAST_FMAF64=1 __FP_FAST_FMAF=1 __GCC_ATOMIC_BOOL_LOCK_FREE=1 __GCC_ATOMIC_CHAR16_T_LOCK_FREE=1 __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR_LOCK_FREE=1 __GCC_ATOMIC_INT_LOCK_FREE=2 __GCC_ATOMIC_LLONG_LOCK_FREE=2 __GCC_ATOMIC_LONG_LOCK_FREE=2 __GCC_ATOMIC_POINTER_LOCK_FREE=2 __GCC_ATOMIC_SHORT_LOCK_FREE=1 __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1 __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1 __GCC_IEC_559=2 __GCC_IEC_559_COMPLEX=2 __GLIBC_MINOR__=31 __GLIBC__=2 __GNUC_MINOR__=2 __GNUC_PATCHLEVEL__=1 __GNUC_STDC_INLINE__=1 __GNUC__=10 __GNU_LIBRARY__=6 __GXX_ABI_VERSION=1014 __INT16_C=__INT16_C __INT16_MAX__=0x7fff __INT16_TYPE__=short\ int __INT32_C=__INT32_C __INT32_MAX__=0x7fffffff __INT32_TYPE__=int __INT64_C=__INT64_C __INT64_MAX__=0x7fffffffffffffffL __INT64_TYPE__=long\ int __INT8_C=__INT8_C __INT8_MAX__=0x7f __INT8_TYPE__=signed\ char __INTMAX_C=__INTMAX_C __INTMAX_MAX__=0x7fffffffffffffffL __INTMAX_TYPE__=long\ int __INTMAX_WIDTH__=64 __INTPTR_MAX__=0x7fffffffffffffffL __INTPTR_TYPE__=long\ int __INTPTR_WIDTH__=64 __INT_FAST16_MAX__=0x7fffffffffffffffL __INT_FAST16_TYPE__=long\ int __INT_FAST16_WIDTH__=64 __INT_FAST32_MAX__=0x7fffffffffffffffL __INT_FAST32_TYPE__=long\ int __INT_FAST32_WIDTH__=64 __INT_FAST64_MAX__=0x7fffffffffffffffL __INT_FAST64_TYPE__=long\ int __INT_FAST64_WIDTH__=64 __INT_FAST8_MAX__=0x7f __INT_FAST8_TYPE__=signed\ char __INT_FAST8_WIDTH__=8 __INT_LEAST16_MAX__=0x7fff __INT_LEAST16_TYPE__=short\ int __INT_LEAST16_WIDTH__=16 __INT_LEAST32_MAX__=0x7fffffff __INT_LEAST32_TYPE__=int __INT_LEAST32_WIDTH__=32 __INT_LEAST64_MAX__=0x7fffffffffffffffL __INT_LEAST64_TYPE__=long\ int __INT_LEAST64_WIDTH__=64 __INT_LEAST8_MAX__=0x7f __INT_LEAST8_TYPE__=signed\ char __INT_LEAST8_WIDTH__=8 __INT_MAX__=0x7fffffff __INT_WIDTH__=32 __LDBL_DECIMAL_DIG__=36 __LDBL_DENORM_MIN__=6.47517511943802511092443895822764655e-4966L __LDBL_DIG__=33 __LDBL_EPSILON__=1.92592994438723585305597794258492732e-34L __LDBL_HAS_DENORM__=1 __LDBL_HAS_INFINITY__=1 __LDBL_HAS_QUIET_NAN__=1 __LDBL_MANT_DIG__=113 __LDBL_MAX_10_EXP__=4932 __LDBL_MAX_EXP__=16384 __LDBL_MAX__=1.18973149535723176508575932662800702e+4932L __LDBL_MIN_10_EXP__=(-4931) __LDBL_MIN_EXP__=(-16381) __LDBL_MIN__=3.36210314311209350626267781732175260e-4932L __LDBL_NORM_MAX__=1.18973149535723176508575932662800702e+4932L __LONG_LONG_MAX__=0x7fffffffffffffffLL __LONG_LONG_WIDTH__=64 __LONG_MAX__=0x7fffffffffffffffL __LONG_WIDTH__=64 __LP64__=1 __ORDER_BIG_ENDIAN__=4321 __ORDER_LITTLE_ENDIAN__=1234 __ORDER_PDP_ENDIAN__=3412 __PIC__=2 __PIE__=2 __PRAGMA_REDEFINE_EXTNAME=1 __PTRDIFF_MAX__=0x7fffffffffffffffL __PTRDIFF_TYPE__=long\ int __PTRDIFF_WIDTH__=64 __REGISTER_PREFIX__= __SCHAR_MAX__=0x7f __SCHAR_WIDTH__=8 __SHRT_MAX__=0x7fff __SHRT_WIDTH__=16 __SIG_ATOMIC_MAX__=0x7fffffff __SIG_ATOMIC_MIN__=(-0x7fffffff\ -\ 1) __SIG_ATOMIC_TYPE__=int __SIG_ATOMIC_WIDTH__=32 __SIZEOF_DOUBLE__=8 __SIZEOF_FLOAT__=4 __SIZEOF_INT128__=16 __SIZEOF_INT__=4 __SIZEOF_LONG_DOUBLE__=16 __SIZEOF_LONG_LONG__=8 __SIZEOF_LONG__=8 __SIZEOF_POINTER__=8 __SIZEOF_PTRDIFF_T__=8 __SIZEOF_SHORT__=2 __SIZEOF_SIZE_T__=8 __SIZEOF_WCHAR_T__=4 __SIZEOF_WINT_T__=4 __SIZE_MAX__=0xffffffffffffffffUL __SIZE_TYPE__=long\ unsigned\ int __SIZE_WIDTH__=64 __STDC_HOSTED__=1 __STDC_IEC_559_COMPLEX__=1 __STDC_IEC_559__=1 __STDC_ISO_10646__=201706L __STDC_UTF_16__=1 __STDC_UTF_32__=1 __STDC_VERSION__=201710L __STDC__=1 __UINT16_C=__UINT16_C __UINT16_MAX__=0xffff __UINT16_TYPE__=short\ unsigned\ int __UINT32_C=__UINT32_C __UINT32_MAX__=0xffffffffU __UINT32_TYPE__=unsigned\ int __UINT64_C=__UINT64_C __UINT64_MAX__=0xffffffffffffffffUL __UINT64_TYPE__=long\ unsigned\ int __UINT8_C=__UINT8_C __UINT8_MAX__=0xff __UINT8_TYPE__=unsigned\ char __UINTMAX_C=__UINTMAX_C __UINTMAX_MAX__=0xffffffffffffffffUL __UINTMAX_TYPE__=long\ unsigned\ int __UINTPTR_MAX__=0xffffffffffffffffUL __UINTPTR_TYPE__=long\ unsigned\ int __UINT_FAST16_MAX__=0xffffffffffffffffUL __UINT_FAST16_TYPE__=long\ unsigned\ int __UINT_FAST32_MAX__=0xffffffffffffffffUL __UINT_FAST32_TYPE__=long\ unsigned\ int __UINT_FAST64_MAX__=0xffffffffffffffffUL __UINT_FAST64_TYPE__=long\ unsigned\ int __UINT_FAST8_MAX__=0xff __UINT_FAST8_TYPE__=unsigned\ char __UINT_LEAST16_MAX__=0xffff __UINT_LEAST16_TYPE__=short\ unsigned\ int __UINT_LEAST32_MAX__=0xffffffffU __UINT_LEAST32_TYPE__=unsigned\ int __UINT_LEAST64_MAX__=0xffffffffffffffffUL __UINT_LEAST64_TYPE__=long\ unsigned\ int __UINT_LEAST8_MAX__=0xff __UINT_LEAST8_TYPE__=unsigned\ char __USER_LABEL_PREFIX__= __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_POSIX=1 __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 __VERSION__="10.2.1\ 20201224" __WCHAR_MAX__=0x7fffffff __WCHAR_MIN__=(-0x7fffffff\ -\ 1) __WCHAR_TYPE__=int __WCHAR_WIDTH__=32 __WINT_MAX__=0xffffffffU __WINT_MIN__=0U __WINT_TYPE__=unsigned\ int __WINT_WIDTH__=32 __gnu_linux__=1 __linux=1 __linux__=1 __pic__=2 __pie__=2 __riscv=1 __riscv_atomic=1 __riscv_cmodel_pic=1 __riscv_compressed=1 __riscv_div=1 __riscv_fdiv=1 __riscv_flen=64 __riscv_float_abi_double=1 __riscv_fsqrt=1 __riscv_mul=1 __riscv_muldiv=1 __riscv_xlen=64 __unix=1 __unix__=1 linux=1 unix=1' +cppsymbols='_FILE_OFFSET_BITS=64 _FORTIFY_SOURCE=2 _GNU_SOURCE=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 _LP64=1 _POSIX_C_SOURCE=200809L _POSIX_SOURCE=1 _REENTRANT=1 _STDC_PREDEF_H=1 _XOPEN_SOURCE=700 _XOPEN_SOURCE_EXTENDED=1 __ATOMIC_ACQUIRE=2 __ATOMIC_ACQ_REL=4 __ATOMIC_CONSUME=1 __ATOMIC_RELAXED=0 __ATOMIC_RELEASE=3 __ATOMIC_SEQ_CST=5 __BIGGEST_ALIGNMENT__=16 __BYTE_ORDER__=1234 __CHAR16_TYPE__=short\ unsigned\ int __CHAR32_TYPE__=unsigned\ int __CHAR_BIT__=8 __CHAR_UNSIGNED__=1 __DBL_DECIMAL_DIG__=17 __DBL_DENORM_MIN__=((double)4.94065645841246544176568792868221372e-324L) __DBL_DIG__=15 __DBL_EPSILON__=((double)2.22044604925031308084726333618164062e-16L) __DBL_HAS_DENORM__=1 __DBL_HAS_INFINITY__=1 __DBL_HAS_QUIET_NAN__=1 __DBL_MANT_DIG__=53 __DBL_MAX_10_EXP__=308 __DBL_MAX_EXP__=1024 __DBL_MAX__=((double)1.79769313486231570814527423731704357e+308L) __DBL_MIN_10_EXP__=(-307) __DBL_MIN_EXP__=(-1021) __DBL_MIN__=((double)2.22507385850720138309023271733240406e-308L) __DBL_NORM_MAX__=((double)1.79769313486231570814527423731704357e+308L) __DECIMAL_DIG__=36 __DEC_EVAL_METHOD__=2 __ELF__=1 __FINITE_MATH_ONLY__=0 __FLOAT_WORD_ORDER__=1234 __FLT128_DECIMAL_DIG__=36 __FLT128_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F128 __FLT128_DIG__=33 __FLT128_EPSILON__=1.92592994438723585305597794258492732e-34F128 __FLT128_HAS_DENORM__=1 __FLT128_HAS_INFINITY__=1 __FLT128_HAS_QUIET_NAN__=1 __FLT128_MANT_DIG__=113 __FLT128_MAX_10_EXP__=4932 __FLT128_MAX_EXP__=16384 __FLT128_MAX__=1.18973149535723176508575932662800702e+4932F128 __FLT128_MIN_10_EXP__=(-4931) __FLT128_MIN_EXP__=(-16381) __FLT128_MIN__=3.36210314311209350626267781732175260e-4932F128 __FLT128_NORM_MAX__=1.18973149535723176508575932662800702e+4932F128 __FLT32X_DECIMAL_DIG__=17 __FLT32X_DENORM_MIN__=4.94065645841246544176568792868221372e-324F32x __FLT32X_DIG__=15 __FLT32X_EPSILON__=2.22044604925031308084726333618164062e-16F32x __FLT32X_HAS_DENORM__=1 __FLT32X_HAS_INFINITY__=1 __FLT32X_HAS_QUIET_NAN__=1 __FLT32X_MANT_DIG__=53 __FLT32X_MAX_10_EXP__=308 __FLT32X_MAX_EXP__=1024 __FLT32X_MAX__=1.79769313486231570814527423731704357e+308F32x __FLT32X_MIN_10_EXP__=(-307) __FLT32X_MIN_EXP__=(-1021) __FLT32X_MIN__=2.22507385850720138309023271733240406e-308F32x __FLT32X_NORM_MAX__=1.79769313486231570814527423731704357e+308F32x __FLT32_DECIMAL_DIG__=9 __FLT32_DENORM_MIN__=1.40129846432481707092372958328991613e-45F32 __FLT32_DIG__=6 __FLT32_EPSILON__=1.19209289550781250000000000000000000e-7F32 __FLT32_HAS_DENORM__=1 __FLT32_HAS_INFINITY__=1 __FLT32_HAS_QUIET_NAN__=1 __FLT32_MANT_DIG__=24 __FLT32_MAX_10_EXP__=38 __FLT32_MAX_EXP__=128 __FLT32_MAX__=3.40282346638528859811704183484516925e+38F32 __FLT32_MIN_10_EXP__=(-37) __FLT32_MIN_EXP__=(-125) __FLT32_MIN__=1.17549435082228750796873653722224568e-38F32 __FLT32_NORM_MAX__=3.40282346638528859811704183484516925e+38F32 __FLT64X_DECIMAL_DIG__=36 __FLT64X_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F64x __FLT64X_DIG__=33 __FLT64X_EPSILON__=1.92592994438723585305597794258492732e-34F64x __FLT64X_HAS_DENORM__=1 __FLT64X_HAS_INFINITY__=1 __FLT64X_HAS_QUIET_NAN__=1 __FLT64X_MANT_DIG__=113 __FLT64X_MAX_10_EXP__=4932 __FLT64X_MAX_EXP__=16384 __FLT64X_MAX__=1.18973149535723176508575932662800702e+4932F64x __FLT64X_MIN_10_EXP__=(-4931) __FLT64X_MIN_EXP__=(-16381) __FLT64X_MIN__=3.36210314311209350626267781732175260e-4932F64x __FLT64X_NORM_MAX__=1.18973149535723176508575932662800702e+4932F64x __FLT64_DECIMAL_DIG__=17 __FLT64_DENORM_MIN__=4.94065645841246544176568792868221372e-324F64 __FLT64_DIG__=15 __FLT64_EPSILON__=2.22044604925031308084726333618164062e-16F64 __FLT64_HAS_DENORM__=1 __FLT64_HAS_INFINITY__=1 __FLT64_HAS_QUIET_NAN__=1 __FLT64_MANT_DIG__=53 __FLT64_MAX_10_EXP__=308 __FLT64_MAX_EXP__=1024 __FLT64_MAX__=1.79769313486231570814527423731704357e+308F64 __FLT64_MIN_10_EXP__=(-307) __FLT64_MIN_EXP__=(-1021) __FLT64_MIN__=2.22507385850720138309023271733240406e-308F64 __FLT64_NORM_MAX__=1.79769313486231570814527423731704357e+308F64 __FLT_DECIMAL_DIG__=9 __FLT_DENORM_MIN__=1.40129846432481707092372958328991613e-45F __FLT_DIG__=6 __FLT_EPSILON__=1.19209289550781250000000000000000000e-7F __FLT_EVAL_METHOD_TS_18661_3__=0 __FLT_EVAL_METHOD__=0 __FLT_HAS_DENORM__=1 __FLT_HAS_INFINITY__=1 __FLT_HAS_QUIET_NAN__=1 __FLT_MANT_DIG__=24 __FLT_MAX_10_EXP__=38 __FLT_MAX_EXP__=128 __FLT_MAX__=3.40282346638528859811704183484516925e+38F __FLT_MIN_10_EXP__=(-37) __FLT_MIN_EXP__=(-125) __FLT_MIN__=1.17549435082228750796873653722224568e-38F __FLT_NORM_MAX__=3.40282346638528859811704183484516925e+38F __FLT_RADIX__=2 __FP_FAST_FMA=1 __FP_FAST_FMAF32=1 __FP_FAST_FMAF32x=1 __FP_FAST_FMAF64=1 __FP_FAST_FMAF=1 __GCC_ATOMIC_BOOL_LOCK_FREE=1 __GCC_ATOMIC_CHAR16_T_LOCK_FREE=1 __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR_LOCK_FREE=1 __GCC_ATOMIC_INT_LOCK_FREE=2 __GCC_ATOMIC_LLONG_LOCK_FREE=2 __GCC_ATOMIC_LONG_LOCK_FREE=2 __GCC_ATOMIC_POINTER_LOCK_FREE=2 __GCC_ATOMIC_SHORT_LOCK_FREE=1 __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1 __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1 __GCC_IEC_559=2 __GCC_IEC_559_COMPLEX=2 __GLIBC_MINOR__=31 __GLIBC__=2 __GNUC_MINOR__=2 __GNUC_PATCHLEVEL__=1 __GNUC_STDC_INLINE__=1 __GNUC__=10 __GNU_LIBRARY__=6 __GXX_ABI_VERSION=1014 __INT16_C=__INT16_C __INT16_MAX__=0x7fff __INT16_TYPE__=short\ int __INT32_C=__INT32_C __INT32_MAX__=0x7fffffff __INT32_TYPE__=int __INT64_C=__INT64_C __INT64_MAX__=0x7fffffffffffffffL __INT64_TYPE__=long\ int __INT8_C=__INT8_C __INT8_MAX__=0x7f __INT8_TYPE__=signed\ char __INTMAX_C=__INTMAX_C __INTMAX_MAX__=0x7fffffffffffffffL __INTMAX_TYPE__=long\ int __INTMAX_WIDTH__=64 __INTPTR_MAX__=0x7fffffffffffffffL __INTPTR_TYPE__=long\ int __INTPTR_WIDTH__=64 __INT_FAST16_MAX__=0x7fffffffffffffffL __INT_FAST16_TYPE__=long\ int __INT_FAST16_WIDTH__=64 __INT_FAST32_MAX__=0x7fffffffffffffffL __INT_FAST32_TYPE__=long\ int __INT_FAST32_WIDTH__=64 __INT_FAST64_MAX__=0x7fffffffffffffffL __INT_FAST64_TYPE__=long\ int __INT_FAST64_WIDTH__=64 __INT_FAST8_MAX__=0x7f __INT_FAST8_TYPE__=signed\ char __INT_FAST8_WIDTH__=8 __INT_LEAST16_MAX__=0x7fff __INT_LEAST16_TYPE__=short\ int __INT_LEAST16_WIDTH__=16 __INT_LEAST32_MAX__=0x7fffffff __INT_LEAST32_TYPE__=int __INT_LEAST32_WIDTH__=32 __INT_LEAST64_MAX__=0x7fffffffffffffffL __INT_LEAST64_TYPE__=long\ int __INT_LEAST64_WIDTH__=64 __INT_LEAST8_MAX__=0x7f __INT_LEAST8_TYPE__=signed\ char __INT_LEAST8_WIDTH__=8 __INT_MAX__=0x7fffffff __INT_WIDTH__=32 __LDBL_DECIMAL_DIG__=36 __LDBL_DENORM_MIN__=6.47517511943802511092443895822764655e-4966L __LDBL_DIG__=33 __LDBL_EPSILON__=1.92592994438723585305597794258492732e-34L __LDBL_HAS_DENORM__=1 __LDBL_HAS_INFINITY__=1 __LDBL_HAS_QUIET_NAN__=1 __LDBL_MANT_DIG__=113 __LDBL_MAX_10_EXP__=4932 __LDBL_MAX_EXP__=16384 __LDBL_MAX__=1.18973149535723176508575932662800702e+4932L __LDBL_MIN_10_EXP__=(-4931) __LDBL_MIN_EXP__=(-16381) __LDBL_MIN__=3.36210314311209350626267781732175260e-4932L __LDBL_NORM_MAX__=1.18973149535723176508575932662800702e+4932L __LONG_LONG_MAX__=0x7fffffffffffffffLL __LONG_LONG_WIDTH__=64 __LONG_MAX__=0x7fffffffffffffffL __LONG_WIDTH__=64 __LP64__=1 __ORDER_BIG_ENDIAN__=4321 __ORDER_LITTLE_ENDIAN__=1234 __ORDER_PDP_ENDIAN__=3412 __PIC__=2 __PIE__=2 __PRAGMA_REDEFINE_EXTNAME=1 __PTRDIFF_MAX__=0x7fffffffffffffffL __PTRDIFF_TYPE__=long\ int __PTRDIFF_WIDTH__=64 __REGISTER_PREFIX__= __SCHAR_MAX__=0x7f __SCHAR_WIDTH__=8 __SHRT_MAX__=0x7fff __SHRT_WIDTH__=16 __SIG_ATOMIC_MAX__=0x7fffffff __SIG_ATOMIC_MIN__=(-0x7fffffff\ -\ 1) __SIG_ATOMIC_TYPE__=int __SIG_ATOMIC_WIDTH__=32 __SIZEOF_DOUBLE__=8 __SIZEOF_FLOAT__=4 __SIZEOF_INT128__=16 __SIZEOF_INT__=4 __SIZEOF_LONG_DOUBLE__=16 __SIZEOF_LONG_LONG__=8 __SIZEOF_LONG__=8 __SIZEOF_POINTER__=8 __SIZEOF_PTRDIFF_T__=8 __SIZEOF_SHORT__=2 __SIZEOF_SIZE_T__=8 __SIZEOF_WCHAR_T__=4 __SIZEOF_WINT_T__=4 __SIZE_MAX__=0xffffffffffffffffUL __SIZE_TYPE__=long\ unsigned\ int __SIZE_WIDTH__=64 __STDC_HOSTED__=1 __STDC_IEC_559_COMPLEX__=1 __STDC_IEC_559__=1 __STDC_ISO_10646__=201706L __STDC_UTF_16__=1 __STDC_UTF_32__=1 __STDC_VERSION__=201710L __STDC__=1 __UINT16_C=__UINT16_C __UINT16_MAX__=0xffff __UINT16_TYPE__=short\ unsigned\ int __UINT32_C=__UINT32_C __UINT32_MAX__=0xffffffffU __UINT32_TYPE__=unsigned\ int __UINT64_C=__UINT64_C __UINT64_MAX__=0xffffffffffffffffUL __UINT64_TYPE__=long\ unsigned\ int __UINT8_C=__UINT8_C __UINT8_MAX__=0xff __UINT8_TYPE__=unsigned\ char __UINTMAX_C=__UINTMAX_C __UINTMAX_MAX__=0xffffffffffffffffUL __UINTMAX_TYPE__=long\ unsigned\ int __UINTPTR_MAX__=0xffffffffffffffffUL __UINTPTR_TYPE__=long\ unsigned\ int __UINT_FAST16_MAX__=0xffffffffffffffffUL __UINT_FAST16_TYPE__=long\ unsigned\ int __UINT_FAST32_MAX__=0xffffffffffffffffUL __UINT_FAST32_TYPE__=long\ unsigned\ int __UINT_FAST64_MAX__=0xffffffffffffffffUL __UINT_FAST64_TYPE__=long\ unsigned\ int __UINT_FAST8_MAX__=0xff __UINT_FAST8_TYPE__=unsigned\ char __UINT_LEAST16_MAX__=0xffff __UINT_LEAST16_TYPE__=short\ unsigned\ int __UINT_LEAST32_MAX__=0xffffffffU __UINT_LEAST32_TYPE__=unsigned\ int __UINT_LEAST64_MAX__=0xffffffffffffffffUL __UINT_LEAST64_TYPE__=long\ unsigned\ int __UINT_LEAST8_MAX__=0xff __UINT_LEAST8_TYPE__=unsigned\ char __USER_LABEL_PREFIX__= __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_POSIX=1 __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 __VERSION__="10.2.1\ 20210110" __WCHAR_MAX__=0x7fffffff __WCHAR_MIN__=(-0x7fffffff\ -\ 1) __WCHAR_TYPE__=int __WCHAR_WIDTH__=32 __WINT_MAX__=0xffffffffU __WINT_MIN__=0U __WINT_TYPE__=unsigned\ int __WINT_WIDTH__=32 __gnu_linux__=1 __linux=1 __linux__=1 __pic__=2 __pie__=2 __riscv=1 __riscv_atomic=1 __riscv_cmodel_pic=1 __riscv_compressed=1 __riscv_div=1 __riscv_fdiv=1 __riscv_flen=64 __riscv_float_abi_double=1 __riscv_fsqrt=1 __riscv_mul=1 __riscv_muldiv=1 __riscv_xlen=64 __unix=1 __unix__=1 linux=1 unix=1' crypt_r_proto='REENTRANT_PROTO_B_CCS' cryptlib='' csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -739,7 +741,7 @@ full_sed='/bin/sed' gccansipedantic='' gccosandvers='' -gccversion='10.2.1 20201224' +gccversion='10.2.1 20210110' getgrent_r_proto='REENTRANT_PROTO_I_SBWR' getgrgid_r_proto='REENTRANT_PROTO_I_TSBWR' getgrnam_r_proto='REENTRANT_PROTO_I_CSBWR' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/riscv64-linux-gnu-thread-multi' -inc_version_list_init='"5.32.0","5.32.0/riscv64-linux-gnu-thread-multi",0' +inc_version_list='' +inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/riscv64-linux-gnu/10/include /usr/local/include /usr/include/riscv64-linux-gnu /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/riscv64-linux-gnu/perl/5.32' +installarchlib='/usr/lib/riscv64-linux-gnu/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/riscv64-linux-gnu/perl/5.32.1' +installsitearch='/usr/local/lib/riscv64-linux-gnu/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/riscv64-linux-gnu/perl5/5.32' +installvendorarch='/usr/lib/riscv64-linux-gnu/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"ld"' ivsize='8' ivtype='long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='riscv64-linux-gnu-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='libc-2.31.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/riscv64-linux-gnu /usr/lib /lib/riscv64-linux-gnu /lib /usr/lib/riscv64-linux-gnu' +libpth='/usr/local/lib /usr/lib/riscv64-linux-gnu /usr/lib /lib/riscv64-linux-gnu /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/riscv64-linux-gnu' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/riscv64-linux-gnu/libgdbm.so /usr/lib/riscv64-linux-gnu/libgdbm_compat.so /usr/lib/riscv64-linux-gnu/libdb.so /usr/lib/riscv64-linux-gnu/libdl.so /usr/lib/riscv64-linux-gnu/libm.so /usr/lib/riscv64-linux-gnu/libpthread.so /usr/lib/riscv64-linux-gnu/libc.so /usr/lib/riscv64-linux-gnu/libcrypt.so' -libspath=' /usr/local/lib /usr/include/riscv64-linux-gnu /usr/lib /lib/riscv64-linux-gnu /lib /usr/lib/riscv64-linux-gnu' +libspath=' /usr/local/lib /usr/lib/riscv64-linux-gnu /usr/lib /lib/riscv64-linux-gnu /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1029,8 +1031,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='8' quadkind='2' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 0' sig_size='68' signal_t='void' -sitearch='/usr/local/lib/riscv64-linux-gnu/perl/5.32.1' -sitearchexp='/usr/local/lib/riscv64-linux-gnu/perl/5.32.1' +sitearch='/usr/local/lib/riscv64-linux-gnu/perl/5.34.0' +sitearchexp='/usr/local/lib/riscv64-linux-gnu/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long' -use5005threads='undef' use64bitall='define' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long' uvuformat='"lu"' uvxformat='"lx"' -vendorarch='/usr/lib/riscv64-linux-gnu/perl5/5.32' -vendorarchexp='/usr/lib/riscv64-linux-gnu/perl5/5.32' +vendorarch='/usr/lib/riscv64-linux-gnu/perl5/5.34' +vendorarchexp='/usr/lib/riscv64-linux-gnu/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/s390x/config.sh.debug.patch perl-5.34.0/debian/cross/s390x/config.sh.debug.patch --- perl-5.32.1/debian/cross/s390x/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/s390x/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:33.227176026 +0200 -+++ config.sh.debug 2021-02-22 16:50:33.215157319 +0200 +--- config.sh.static 2021-08-25 21:57:46.048479589 +0300 ++++ config.sh.debug 2021-08-25 21:57:46.036479281 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=s390x-linux-gnu-gcc -Dcpp=s390x-linux-gnu-cpp -Dld=s390x-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/s390x-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=s390x-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/s390x-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/s390x-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/s390x-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=s390x-linux-gnu-gcc -Dcpp=s390x-linux-gnu-cpp -Dld=s390x-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=s390x-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/s390x-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/s390x-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/s390x-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=s390x-linux-gnu-gcc -Dcpp=s390x-linux-gnu-cpp -Dld=s390x-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/s390x-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=s390x-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/s390x-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/s390x-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/s390x-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=s390x-linux-gnu-gcc -Dcpp=s390x-linux-gnu-cpp -Dld=s390x-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=s390x-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/s390x-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/s390x-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/s390x-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/s390x-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/s390x-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/s390x-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/s390x/config.sh.shared.patch perl-5.34.0/debian/cross/s390x/config.sh.shared.patch --- perl-5.32.1/debian/cross/s390x/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/s390x/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:33.227176026 +0200 -+++ config.sh.shared 2021-02-22 16:50:33.215157319 +0200 +--- config.sh.static 2021-08-25 21:57:46.048479589 +0300 ++++ config.sh.shared 2021-08-25 21:57:46.036479281 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=s390x-linux-gnu-gcc -Dcpp=s390x-linux-gnu-cpp -Dld=s390x-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/s390x-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=s390x-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/s390x-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/s390x-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/s390x-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=s390x-linux-gnu-gcc -Dcpp=s390x-linux-gnu-cpp -Dld=s390x-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/s390x-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=s390x-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/s390x-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/s390x-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/s390x-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=s390x-linux-gnu-gcc -Dcpp=s390x-linux-gnu-cpp -Dld=s390x-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=s390x-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/s390x-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/s390x-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/s390x-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=s390x-linux-gnu-gcc -Dcpp=s390x-linux-gnu-cpp -Dld=s390x-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=s390x-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/s390x-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/s390x-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/s390x-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/s390x-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/s390x-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/s390x-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/s390x/config.sh.static perl-5.34.0/debian/cross/s390x/config.sh.static --- perl-5.32.1/debian/cross/s390x/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/s390x/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 s390x gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=s390x-linux-gnu-gcc -Dcpp=s390x-linux-gnu-cpp -Dld=s390x-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/s390x-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=s390x-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/s390x-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/s390x-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/s390x-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=s390x-linux-gnu-gcc -Dcpp=s390x-linux-gnu-cpp -Dld=s390x-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/s390x-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=s390x-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/s390x-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/s390x-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/s390x-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=s390x-linux-gnu' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/s390x-linux-gnu/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/s390x-linux-gnu/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/s390x-linux-gnu/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/s390x-linux-gnu/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/s390x-linux-gnu/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/s390x-linux-gnu/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/s390x-linux-gnu/perl/5.32' -archlibexp='/usr/lib/s390x-linux-gnu/perl/5.32' +archlib='/usr/lib/s390x-linux-gnu/perl/5.34' +archlibexp='/usr/lib/s390x-linux-gnu/perl/5.34' archname64='' archname='s390x-linux-gnu-thread-multi' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -133,7 +134,7 @@ csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/s390x-linux-gnu-thread-multi' -inc_version_list_init='"5.32.0","5.32.0/s390x-linux-gnu-thread-multi",0' +inc_version_list='' +inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/s390x-linux-gnu/10/include /usr/local/include /usr/include/s390x-linux-gnu /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/s390x-linux-gnu/perl/5.32' +installarchlib='/usr/lib/s390x-linux-gnu/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/s390x-linux-gnu/perl/5.32.1' +installsitearch='/usr/local/lib/s390x-linux-gnu/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/s390x-linux-gnu/perl5/5.32' +installvendorarch='/usr/lib/s390x-linux-gnu/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"ld"' ivsize='8' ivtype='long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='s390x-linux-gnu-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='libc-2.31.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/s390x-linux-gnu /usr/lib /lib/s390x-linux-gnu /lib/../lib /usr/lib/s390x-linux-gnu /usr/lib/../lib /lib' +libpth='/usr/local/lib /usr/lib/s390x-linux-gnu /usr/lib /lib/s390x-linux-gnu /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/s390x-linux-gnu' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/s390x-linux-gnu/libgdbm.so /usr/lib/s390x-linux-gnu/libgdbm_compat.so /usr/lib/s390x-linux-gnu/libdb.so /usr/lib/s390x-linux-gnu/libdl.so /usr/lib/s390x-linux-gnu/libm.so /usr/lib/s390x-linux-gnu/libpthread.so /usr/lib/s390x-linux-gnu/libc.so /usr/lib/s390x-linux-gnu/libcrypt.so' -libspath=' /usr/local/lib /usr/include/s390x-linux-gnu /usr/lib /lib/s390x-linux-gnu /lib/../lib /usr/lib/s390x-linux-gnu /usr/lib/../lib /lib' +libspath=' /usr/local/lib /usr/lib/s390x-linux-gnu /usr/lib /lib/s390x-linux-gnu /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1029,8 +1031,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='8' quadkind='2' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 0' sig_size='68' signal_t='void' -sitearch='/usr/local/lib/s390x-linux-gnu/perl/5.32.1' -sitearchexp='/usr/local/lib/s390x-linux-gnu/perl/5.32.1' +sitearch='/usr/local/lib/s390x-linux-gnu/perl/5.34.0' +sitearchexp='/usr/local/lib/s390x-linux-gnu/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long' -use5005threads='undef' use64bitall='define' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long' uvuformat='"lu"' uvxformat='"lx"' -vendorarch='/usr/lib/s390x-linux-gnu/perl5/5.32' -vendorarchexp='/usr/lib/s390x-linux-gnu/perl5/5.32' +vendorarch='/usr/lib/s390x-linux-gnu/perl5/5.34' +vendorarchexp='/usr/lib/s390x-linux-gnu/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/sh4/config.sh.debug.patch perl-5.34.0/debian/cross/sh4/config.sh.debug.patch --- perl-5.32.1/debian/cross/sh4/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/sh4/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:33.751992958 +0200 -+++ config.sh.debug 2021-02-22 16:50:33.739974250 +0200 +--- config.sh.static 2021-08-25 21:57:46.564492810 +0300 ++++ config.sh.debug 2021-08-25 21:57:46.552492503 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sh4-linux-gnu-gcc -Dcpp=sh4-linux-gnu-cpp -Dld=sh4-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/sh4-linux-gnu/perl-base" -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sh4-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/sh4-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sh4-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/sh4-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sh4-linux-gnu-gcc -Dcpp=sh4-linux-gnu-cpp -Dld=sh4-linux-gnu-gcc -Dccflags=-DDEBIAN -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sh4-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/sh4-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sh4-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/sh4-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sh4-linux-gnu-gcc -Dcpp=sh4-linux-gnu-cpp -Dld=sh4-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/sh4-linux-gnu/perl-base" -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sh4-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/sh4-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sh4-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/sh4-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sh4-linux-gnu-gcc -Dcpp=sh4-linux-gnu-cpp -Dld=sh4-linux-gnu-gcc -Dccflags=-DDEBIAN -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sh4-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/sh4-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sh4-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/sh4-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/sh4-linux-gnu/perl-base" -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/sh4-linux-gnu/perl-base" -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/sh4-linux-gnu/perl-base" -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/sh4/config.sh.shared.patch perl-5.34.0/debian/cross/sh4/config.sh.shared.patch --- perl-5.32.1/debian/cross/sh4/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/sh4/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:33.751992958 +0200 -+++ config.sh.shared 2021-02-22 16:50:33.743980486 +0200 +--- config.sh.static 2021-08-25 21:57:46.564492810 +0300 ++++ config.sh.shared 2021-08-25 21:57:46.556492605 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sh4-linux-gnu-gcc -Dcpp=sh4-linux-gnu-cpp -Dld=sh4-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/sh4-linux-gnu/perl-base" -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sh4-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/sh4-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sh4-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/sh4-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sh4-linux-gnu-gcc -Dcpp=sh4-linux-gnu-cpp -Dld=sh4-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/sh4-linux-gnu/perl-base" -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sh4-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/sh4-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sh4-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/sh4-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sh4-linux-gnu-gcc -Dcpp=sh4-linux-gnu-cpp -Dld=sh4-linux-gnu-gcc -Dccflags=-DDEBIAN -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sh4-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/sh4-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sh4-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/sh4-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sh4-linux-gnu-gcc -Dcpp=sh4-linux-gnu-cpp -Dld=sh4-linux-gnu-gcc -Dccflags=-DDEBIAN -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sh4-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/sh4-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sh4-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/sh4-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/sh4-linux-gnu/perl-base" -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/sh4-linux-gnu/perl-base" -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/sh4-linux-gnu/perl-base" -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/sh4/config.sh.static perl-5.34.0/debian/cross/sh4/config.sh.static --- perl-5.32.1/debian/cross/sh4/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/sh4/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 sh4a gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sh4-linux-gnu-gcc -Dcpp=sh4-linux-gnu-cpp -Dld=sh4-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/sh4-linux-gnu/perl-base" -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sh4-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/sh4-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sh4-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/sh4-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sh4-linux-gnu-gcc -Dcpp=sh4-linux-gnu-cpp -Dld=sh4-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/sh4-linux-gnu/perl-base" -mieee -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sh4-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/sh4-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sh4-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/sh4-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=sh4-linux-gnu' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/sh4-linux-gnu/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/sh4-linux-gnu/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/sh4-linux-gnu/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/sh4-linux-gnu/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/sh4-linux-gnu/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/sh4-linux-gnu/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/sh4-linux-gnu/perl/5.32' -archlibexp='/usr/lib/sh4-linux-gnu/perl/5.32' +archlib='/usr/lib/sh4-linux-gnu/perl/5.34' +archlibexp='/usr/lib/sh4-linux-gnu/perl/5.34' archname64='64int' archname='sh4-linux-gnu-thread-multi-64int' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -127,13 +128,13 @@ cppminus='-' cpprun='sh4-linux-gnu-gcc -E' cppstdin='sh4-linux-gnu-gcc -E' -cppsymbols='_FILE_OFFSET_BITS=64 _FORTIFY_SOURCE=2 _GNU_SOURCE=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 _POSIX_C_SOURCE=200809L _POSIX_SOURCE=1 _REENTRANT=1 _STDC_PREDEF_H=1 _XOPEN_SOURCE=700 _XOPEN_SOURCE_EXTENDED=1 __ATOMIC_ACQUIRE=2 __ATOMIC_ACQ_REL=4 __ATOMIC_CONSUME=1 __ATOMIC_RELAXED=0 __ATOMIC_RELEASE=3 __ATOMIC_SEQ_CST=5 __BIGGEST_ALIGNMENT__=4 __BYTE_ORDER__=1234 __CHAR16_TYPE__=short\ unsigned\ int __CHAR32_TYPE__=unsigned\ int __CHAR_BIT__=8 __DBL_DECIMAL_DIG__=17 __DBL_DENORM_MIN__=((double)4.9406564584124654e-324L) __DBL_DIG__=15 __DBL_EPSILON__=((double)2.2204460492503131e-16L) __DBL_HAS_DENORM__=1 __DBL_HAS_INFINITY__=1 __DBL_HAS_QUIET_NAN__=1 __DBL_MANT_DIG__=53 __DBL_MAX_10_EXP__=308 __DBL_MAX_EXP__=1024 __DBL_MAX__=((double)1.7976931348623157e+308L) __DBL_MIN_10_EXP__=(-307) __DBL_MIN_EXP__=(-1021) __DBL_MIN__=((double)2.2250738585072014e-308L) __DBL_NORM_MAX__=((double)1.7976931348623157e+308L) __DECIMAL_DIG__=17 __DEC_EVAL_METHOD__=2 __ELF__=1 __FINITE_MATH_ONLY__=0 __FLOAT_WORD_ORDER__=1234 __FLT32X_DECIMAL_DIG__=17 __FLT32X_DENORM_MIN__=4.9406564584124654e-324F32x __FLT32X_DIG__=15 __FLT32X_EPSILON__=2.2204460492503131e-16F32x __FLT32X_HAS_DENORM__=1 __FLT32X_HAS_INFINITY__=1 __FLT32X_HAS_QUIET_NAN__=1 __FLT32X_MANT_DIG__=53 __FLT32X_MAX_10_EXP__=308 __FLT32X_MAX_EXP__=1024 __FLT32X_MAX__=1.7976931348623157e+308F32x __FLT32X_MIN_10_EXP__=(-307) __FLT32X_MIN_EXP__=(-1021) __FLT32X_MIN__=2.2250738585072014e-308F32x __FLT32X_NORM_MAX__=1.7976931348623157e+308F32x __FLT32_DECIMAL_DIG__=9 __FLT32_DENORM_MIN__=1.4012984643248171e-45F32 __FLT32_DIG__=6 __FLT32_EPSILON__=1.1920928955078125e-7F32 __FLT32_HAS_DENORM__=1 __FLT32_HAS_INFINITY__=1 __FLT32_HAS_QUIET_NAN__=1 __FLT32_MANT_DIG__=24 __FLT32_MAX_10_EXP__=38 __FLT32_MAX_EXP__=128 __FLT32_MAX__=3.4028234663852886e+38F32 __FLT32_MIN_10_EXP__=(-37) __FLT32_MIN_EXP__=(-125) __FLT32_MIN__=1.1754943508222875e-38F32 __FLT32_NORM_MAX__=3.4028234663852886e+38F32 __FLT64_DECIMAL_DIG__=17 __FLT64_DENORM_MIN__=4.9406564584124654e-324F64 __FLT64_DIG__=15 __FLT64_EPSILON__=2.2204460492503131e-16F64 __FLT64_HAS_DENORM__=1 __FLT64_HAS_INFINITY__=1 __FLT64_HAS_QUIET_NAN__=1 __FLT64_MANT_DIG__=53 __FLT64_MAX_10_EXP__=308 __FLT64_MAX_EXP__=1024 __FLT64_MAX__=1.7976931348623157e+308F64 __FLT64_MIN_10_EXP__=(-307) __FLT64_MIN_EXP__=(-1021) __FLT64_MIN__=2.2250738585072014e-308F64 __FLT64_NORM_MAX__=1.7976931348623157e+308F64 __FLT_DECIMAL_DIG__=9 __FLT_DENORM_MIN__=1.4012984643248171e-45F __FLT_DIG__=6 __FLT_EPSILON__=1.1920928955078125e-7F __FLT_EVAL_METHOD_TS_18661_3__=0 __FLT_EVAL_METHOD__=0 __FLT_HAS_DENORM__=1 __FLT_HAS_INFINITY__=1 __FLT_HAS_QUIET_NAN__=1 __FLT_MANT_DIG__=24 __FLT_MAX_10_EXP__=38 __FLT_MAX_EXP__=128 __FLT_MAX__=3.4028234663852886e+38F __FLT_MIN_10_EXP__=(-37) __FLT_MIN_EXP__=(-125) __FLT_MIN__=1.1754943508222875e-38F __FLT_NORM_MAX__=3.4028234663852886e+38F __FLT_RADIX__=2 __FP_FAST_FMAF32=1 __FP_FAST_FMAF=1 __GCC_ATOMIC_BOOL_LOCK_FREE=2 __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR_LOCK_FREE=2 __GCC_ATOMIC_INT_LOCK_FREE=2 __GCC_ATOMIC_LLONG_LOCK_FREE=1 __GCC_ATOMIC_LONG_LOCK_FREE=2 __GCC_ATOMIC_POINTER_LOCK_FREE=2 __GCC_ATOMIC_SHORT_LOCK_FREE=2 __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=128 __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1 __GCC_IEC_559=2 __GCC_IEC_559_COMPLEX=2 __GLIBC_MINOR__=31 __GLIBC__=2 __GNUC_MINOR__=2 __GNUC_PATCHLEVEL__=1 __GNUC_STDC_INLINE__=1 __GNUC__=10 __GNU_LIBRARY__=6 __GXX_ABI_VERSION=1014 __HAVE_SPECULATION_SAFE_VALUE=1 __INT16_C=__INT16_C __INT16_MAX__=0x7fff __INT16_TYPE__=short\ int __INT32_C=__INT32_C __INT32_MAX__=0x7fffffff __INT32_TYPE__=int __INT64_C=__INT64_C __INT64_MAX__=0x7fffffffffffffffLL __INT64_TYPE__=long\ long\ int __INT8_C=__INT8_C __INT8_MAX__=0x7f __INT8_TYPE__=signed\ char __INTMAX_C=__INTMAX_C __INTMAX_MAX__=0x7fffffffffffffffLL __INTMAX_TYPE__=long\ long\ int __INTMAX_WIDTH__=64 __INTPTR_MAX__=0x7fffffff __INTPTR_TYPE__=int __INTPTR_WIDTH__=32 __INT_FAST16_MAX__=0x7fffffff __INT_FAST16_TYPE__=int __INT_FAST16_WIDTH__=32 __INT_FAST32_MAX__=0x7fffffff __INT_FAST32_TYPE__=int __INT_FAST32_WIDTH__=32 __INT_FAST64_MAX__=0x7fffffffffffffffLL __INT_FAST64_TYPE__=long\ long\ int __INT_FAST64_WIDTH__=64 __INT_FAST8_MAX__=0x7f __INT_FAST8_TYPE__=signed\ char __INT_FAST8_WIDTH__=8 __INT_LEAST16_MAX__=0x7fff __INT_LEAST16_TYPE__=short\ int __INT_LEAST16_WIDTH__=16 __INT_LEAST32_MAX__=0x7fffffff __INT_LEAST32_TYPE__=int __INT_LEAST32_WIDTH__=32 __INT_LEAST64_MAX__=0x7fffffffffffffffLL __INT_LEAST64_TYPE__=long\ long\ int __INT_LEAST64_WIDTH__=64 __INT_LEAST8_MAX__=0x7f __INT_LEAST8_TYPE__=signed\ char __INT_LEAST8_WIDTH__=8 __INT_MAX__=0x7fffffff __INT_WIDTH__=32 __LDBL_DECIMAL_DIG__=17 __LDBL_DENORM_MIN__=4.9406564584124654e-324L __LDBL_DIG__=15 __LDBL_EPSILON__=2.2204460492503131e-16L __LDBL_HAS_DENORM__=1 __LDBL_HAS_INFINITY__=1 __LDBL_HAS_QUIET_NAN__=1 __LDBL_MANT_DIG__=53 __LDBL_MAX_10_EXP__=308 __LDBL_MAX_EXP__=1024 __LDBL_MAX__=1.7976931348623157e+308L __LDBL_MIN_10_EXP__=(-307) __LDBL_MIN_EXP__=(-1021) __LDBL_MIN__=2.2250738585072014e-308L __LDBL_NORM_MAX__=1.7976931348623157e+308L __LITTLE_ENDIAN__=1 __LONG_LONG_MAX__=0x7fffffffffffffffLL __LONG_LONG_WIDTH__=64 __LONG_MAX__=0x7fffffffL __LONG_WIDTH__=32 __ORDER_BIG_ENDIAN__=4321 __ORDER_LITTLE_ENDIAN__=1234 __ORDER_PDP_ENDIAN__=3412 __PRAGMA_REDEFINE_EXTNAME=1 __PTRDIFF_MAX__=0x7fffffff __PTRDIFF_TYPE__=int __PTRDIFF_WIDTH__=32 __REGISTER_PREFIX__= __SCHAR_MAX__=0x7f __SCHAR_WIDTH__=8 __SH4__=1 __SHRT_MAX__=0x7fff __SHRT_WIDTH__=16 __SH_ATOMIC_MODEL_SOFT_GUSA__=1 __SH_FPU_ANY__=1 __SH_FPU_DOUBLE__=1 __SIG_ATOMIC_MAX__=0x7fffffff __SIG_ATOMIC_MIN__=(-0x7fffffff\ -\ 1) __SIG_ATOMIC_TYPE__=int __SIG_ATOMIC_WIDTH__=32 __SIZEOF_DOUBLE__=8 __SIZEOF_FLOAT__=4 __SIZEOF_INT__=4 __SIZEOF_LONG_DOUBLE__=8 __SIZEOF_LONG_LONG__=8 __SIZEOF_LONG__=4 __SIZEOF_POINTER__=4 __SIZEOF_PTRDIFF_T__=4 __SIZEOF_SHORT__=2 __SIZEOF_SIZE_T__=4 __SIZEOF_WCHAR_T__=4 __SIZEOF_WINT_T__=4 __SIZE_MAX__=0xffffffffU __SIZE_TYPE__=unsigned\ int __SIZE_WIDTH__=32 __STDC_HOSTED__=1 __STDC_IEC_559_COMPLEX__=1 __STDC_IEC_559__=1 __STDC_ISO_10646__=201706L __STDC_UTF_16__=1 __STDC_UTF_32__=1 __STDC_VERSION__=201710L __STDC__=1 __UINT16_C=__UINT16_C __UINT16_MAX__=0xffff __UINT16_TYPE__=short\ unsigned\ int __UINT32_C=__UINT32_C __UINT32_MAX__=0xffffffffU __UINT32_TYPE__=unsigned\ int __UINT64_C=__UINT64_C __UINT64_MAX__=0xffffffffffffffffULL __UINT64_TYPE__=long\ long\ unsigned\ int __UINT8_C=__UINT8_C __UINT8_MAX__=0xff __UINT8_TYPE__=unsigned\ char __UINTMAX_C=__UINTMAX_C __UINTMAX_MAX__=0xffffffffffffffffULL __UINTMAX_TYPE__=long\ long\ unsigned\ int __UINTPTR_MAX__=0xffffffffU __UINTPTR_TYPE__=unsigned\ int __UINT_FAST16_MAX__=0xffffffffU __UINT_FAST16_TYPE__=unsigned\ int __UINT_FAST32_MAX__=0xffffffffU __UINT_FAST32_TYPE__=unsigned\ int __UINT_FAST64_MAX__=0xffffffffffffffffULL __UINT_FAST64_TYPE__=long\ long\ unsigned\ int __UINT_FAST8_MAX__=0xff __UINT_FAST8_TYPE__=unsigned\ char __UINT_LEAST16_MAX__=0xffff __UINT_LEAST16_TYPE__=short\ unsigned\ int __UINT_LEAST32_MAX__=0xffffffffU __UINT_LEAST32_TYPE__=unsigned\ int __UINT_LEAST64_MAX__=0xffffffffffffffffULL __UINT_LEAST64_TYPE__=long\ long\ unsigned\ int __UINT_LEAST8_MAX__=0xff __UINT_LEAST8_TYPE__=unsigned\ char __USER_LABEL_PREFIX__= __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_POSIX=1 __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 __VERSION__="10.2.1\ 20201224" __WCHAR_MAX__=0x7fffffffL __WCHAR_MIN__=(-0x7fffffffL\ -\ 1) __WCHAR_TYPE__=long\ int __WCHAR_WIDTH__=32 __WINT_MAX__=0xffffffffU __WINT_MIN__=0U __WINT_TYPE__=unsigned\ int __WINT_WIDTH__=32 __gnu_linux__=1 __linux=1 __linux__=1 __sh__=1 __unix=1 __unix__=1 linux=1 unix=1' +cppsymbols='_FILE_OFFSET_BITS=64 _FORTIFY_SOURCE=2 _GNU_SOURCE=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 _POSIX_C_SOURCE=200809L _POSIX_SOURCE=1 _REENTRANT=1 _STDC_PREDEF_H=1 _XOPEN_SOURCE=700 _XOPEN_SOURCE_EXTENDED=1 __ATOMIC_ACQUIRE=2 __ATOMIC_ACQ_REL=4 __ATOMIC_CONSUME=1 __ATOMIC_RELAXED=0 __ATOMIC_RELEASE=3 __ATOMIC_SEQ_CST=5 __BIGGEST_ALIGNMENT__=4 __BYTE_ORDER__=1234 __CHAR16_TYPE__=short\ unsigned\ int __CHAR32_TYPE__=unsigned\ int __CHAR_BIT__=8 __DBL_DECIMAL_DIG__=17 __DBL_DENORM_MIN__=((double)4.9406564584124654e-324L) __DBL_DIG__=15 __DBL_EPSILON__=((double)2.2204460492503131e-16L) __DBL_HAS_DENORM__=1 __DBL_HAS_INFINITY__=1 __DBL_HAS_QUIET_NAN__=1 __DBL_MANT_DIG__=53 __DBL_MAX_10_EXP__=308 __DBL_MAX_EXP__=1024 __DBL_MAX__=((double)1.7976931348623157e+308L) __DBL_MIN_10_EXP__=(-307) __DBL_MIN_EXP__=(-1021) __DBL_MIN__=((double)2.2250738585072014e-308L) __DBL_NORM_MAX__=((double)1.7976931348623157e+308L) __DECIMAL_DIG__=17 __DEC_EVAL_METHOD__=2 __ELF__=1 __FINITE_MATH_ONLY__=0 __FLOAT_WORD_ORDER__=1234 __FLT32X_DECIMAL_DIG__=17 __FLT32X_DENORM_MIN__=4.9406564584124654e-324F32x __FLT32X_DIG__=15 __FLT32X_EPSILON__=2.2204460492503131e-16F32x __FLT32X_HAS_DENORM__=1 __FLT32X_HAS_INFINITY__=1 __FLT32X_HAS_QUIET_NAN__=1 __FLT32X_MANT_DIG__=53 __FLT32X_MAX_10_EXP__=308 __FLT32X_MAX_EXP__=1024 __FLT32X_MAX__=1.7976931348623157e+308F32x __FLT32X_MIN_10_EXP__=(-307) __FLT32X_MIN_EXP__=(-1021) __FLT32X_MIN__=2.2250738585072014e-308F32x __FLT32X_NORM_MAX__=1.7976931348623157e+308F32x __FLT32_DECIMAL_DIG__=9 __FLT32_DENORM_MIN__=1.4012984643248171e-45F32 __FLT32_DIG__=6 __FLT32_EPSILON__=1.1920928955078125e-7F32 __FLT32_HAS_DENORM__=1 __FLT32_HAS_INFINITY__=1 __FLT32_HAS_QUIET_NAN__=1 __FLT32_MANT_DIG__=24 __FLT32_MAX_10_EXP__=38 __FLT32_MAX_EXP__=128 __FLT32_MAX__=3.4028234663852886e+38F32 __FLT32_MIN_10_EXP__=(-37) __FLT32_MIN_EXP__=(-125) __FLT32_MIN__=1.1754943508222875e-38F32 __FLT32_NORM_MAX__=3.4028234663852886e+38F32 __FLT64_DECIMAL_DIG__=17 __FLT64_DENORM_MIN__=4.9406564584124654e-324F64 __FLT64_DIG__=15 __FLT64_EPSILON__=2.2204460492503131e-16F64 __FLT64_HAS_DENORM__=1 __FLT64_HAS_INFINITY__=1 __FLT64_HAS_QUIET_NAN__=1 __FLT64_MANT_DIG__=53 __FLT64_MAX_10_EXP__=308 __FLT64_MAX_EXP__=1024 __FLT64_MAX__=1.7976931348623157e+308F64 __FLT64_MIN_10_EXP__=(-307) __FLT64_MIN_EXP__=(-1021) __FLT64_MIN__=2.2250738585072014e-308F64 __FLT64_NORM_MAX__=1.7976931348623157e+308F64 __FLT_DECIMAL_DIG__=9 __FLT_DENORM_MIN__=1.4012984643248171e-45F __FLT_DIG__=6 __FLT_EPSILON__=1.1920928955078125e-7F __FLT_EVAL_METHOD_TS_18661_3__=0 __FLT_EVAL_METHOD__=0 __FLT_HAS_DENORM__=1 __FLT_HAS_INFINITY__=1 __FLT_HAS_QUIET_NAN__=1 __FLT_MANT_DIG__=24 __FLT_MAX_10_EXP__=38 __FLT_MAX_EXP__=128 __FLT_MAX__=3.4028234663852886e+38F __FLT_MIN_10_EXP__=(-37) __FLT_MIN_EXP__=(-125) __FLT_MIN__=1.1754943508222875e-38F __FLT_NORM_MAX__=3.4028234663852886e+38F __FLT_RADIX__=2 __FP_FAST_FMAF32=1 __FP_FAST_FMAF=1 __GCC_ATOMIC_BOOL_LOCK_FREE=2 __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR_LOCK_FREE=2 __GCC_ATOMIC_INT_LOCK_FREE=2 __GCC_ATOMIC_LLONG_LOCK_FREE=1 __GCC_ATOMIC_LONG_LOCK_FREE=2 __GCC_ATOMIC_POINTER_LOCK_FREE=2 __GCC_ATOMIC_SHORT_LOCK_FREE=2 __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=128 __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1 __GCC_IEC_559=2 __GCC_IEC_559_COMPLEX=2 __GLIBC_MINOR__=31 __GLIBC__=2 __GNUC_MINOR__=2 __GNUC_PATCHLEVEL__=1 __GNUC_STDC_INLINE__=1 __GNUC__=10 __GNU_LIBRARY__=6 __GXX_ABI_VERSION=1014 __HAVE_SPECULATION_SAFE_VALUE=1 __INT16_C=__INT16_C __INT16_MAX__=0x7fff __INT16_TYPE__=short\ int __INT32_C=__INT32_C __INT32_MAX__=0x7fffffff __INT32_TYPE__=int __INT64_C=__INT64_C __INT64_MAX__=0x7fffffffffffffffLL __INT64_TYPE__=long\ long\ int __INT8_C=__INT8_C __INT8_MAX__=0x7f __INT8_TYPE__=signed\ char __INTMAX_C=__INTMAX_C __INTMAX_MAX__=0x7fffffffffffffffLL __INTMAX_TYPE__=long\ long\ int __INTMAX_WIDTH__=64 __INTPTR_MAX__=0x7fffffff __INTPTR_TYPE__=int __INTPTR_WIDTH__=32 __INT_FAST16_MAX__=0x7fffffff __INT_FAST16_TYPE__=int __INT_FAST16_WIDTH__=32 __INT_FAST32_MAX__=0x7fffffff __INT_FAST32_TYPE__=int __INT_FAST32_WIDTH__=32 __INT_FAST64_MAX__=0x7fffffffffffffffLL __INT_FAST64_TYPE__=long\ long\ int __INT_FAST64_WIDTH__=64 __INT_FAST8_MAX__=0x7f __INT_FAST8_TYPE__=signed\ char __INT_FAST8_WIDTH__=8 __INT_LEAST16_MAX__=0x7fff __INT_LEAST16_TYPE__=short\ int __INT_LEAST16_WIDTH__=16 __INT_LEAST32_MAX__=0x7fffffff __INT_LEAST32_TYPE__=int __INT_LEAST32_WIDTH__=32 __INT_LEAST64_MAX__=0x7fffffffffffffffLL __INT_LEAST64_TYPE__=long\ long\ int __INT_LEAST64_WIDTH__=64 __INT_LEAST8_MAX__=0x7f __INT_LEAST8_TYPE__=signed\ char __INT_LEAST8_WIDTH__=8 __INT_MAX__=0x7fffffff __INT_WIDTH__=32 __LDBL_DECIMAL_DIG__=17 __LDBL_DENORM_MIN__=4.9406564584124654e-324L __LDBL_DIG__=15 __LDBL_EPSILON__=2.2204460492503131e-16L __LDBL_HAS_DENORM__=1 __LDBL_HAS_INFINITY__=1 __LDBL_HAS_QUIET_NAN__=1 __LDBL_MANT_DIG__=53 __LDBL_MAX_10_EXP__=308 __LDBL_MAX_EXP__=1024 __LDBL_MAX__=1.7976931348623157e+308L __LDBL_MIN_10_EXP__=(-307) __LDBL_MIN_EXP__=(-1021) __LDBL_MIN__=2.2250738585072014e-308L __LDBL_NORM_MAX__=1.7976931348623157e+308L __LITTLE_ENDIAN__=1 __LONG_LONG_MAX__=0x7fffffffffffffffLL __LONG_LONG_WIDTH__=64 __LONG_MAX__=0x7fffffffL __LONG_WIDTH__=32 __ORDER_BIG_ENDIAN__=4321 __ORDER_LITTLE_ENDIAN__=1234 __ORDER_PDP_ENDIAN__=3412 __PRAGMA_REDEFINE_EXTNAME=1 __PTRDIFF_MAX__=0x7fffffff __PTRDIFF_TYPE__=int __PTRDIFF_WIDTH__=32 __REGISTER_PREFIX__= __SCHAR_MAX__=0x7f __SCHAR_WIDTH__=8 __SH4__=1 __SHRT_MAX__=0x7fff __SHRT_WIDTH__=16 __SH_ATOMIC_MODEL_SOFT_GUSA__=1 __SH_FPU_ANY__=1 __SH_FPU_DOUBLE__=1 __SIG_ATOMIC_MAX__=0x7fffffff __SIG_ATOMIC_MIN__=(-0x7fffffff\ -\ 1) __SIG_ATOMIC_TYPE__=int __SIG_ATOMIC_WIDTH__=32 __SIZEOF_DOUBLE__=8 __SIZEOF_FLOAT__=4 __SIZEOF_INT__=4 __SIZEOF_LONG_DOUBLE__=8 __SIZEOF_LONG_LONG__=8 __SIZEOF_LONG__=4 __SIZEOF_POINTER__=4 __SIZEOF_PTRDIFF_T__=4 __SIZEOF_SHORT__=2 __SIZEOF_SIZE_T__=4 __SIZEOF_WCHAR_T__=4 __SIZEOF_WINT_T__=4 __SIZE_MAX__=0xffffffffU __SIZE_TYPE__=unsigned\ int __SIZE_WIDTH__=32 __STDC_HOSTED__=1 __STDC_IEC_559_COMPLEX__=1 __STDC_IEC_559__=1 __STDC_ISO_10646__=201706L __STDC_UTF_16__=1 __STDC_UTF_32__=1 __STDC_VERSION__=201710L __STDC__=1 __UINT16_C=__UINT16_C __UINT16_MAX__=0xffff __UINT16_TYPE__=short\ unsigned\ int __UINT32_C=__UINT32_C __UINT32_MAX__=0xffffffffU __UINT32_TYPE__=unsigned\ int __UINT64_C=__UINT64_C __UINT64_MAX__=0xffffffffffffffffULL __UINT64_TYPE__=long\ long\ unsigned\ int __UINT8_C=__UINT8_C __UINT8_MAX__=0xff __UINT8_TYPE__=unsigned\ char __UINTMAX_C=__UINTMAX_C __UINTMAX_MAX__=0xffffffffffffffffULL __UINTMAX_TYPE__=long\ long\ unsigned\ int __UINTPTR_MAX__=0xffffffffU __UINTPTR_TYPE__=unsigned\ int __UINT_FAST16_MAX__=0xffffffffU __UINT_FAST16_TYPE__=unsigned\ int __UINT_FAST32_MAX__=0xffffffffU __UINT_FAST32_TYPE__=unsigned\ int __UINT_FAST64_MAX__=0xffffffffffffffffULL __UINT_FAST64_TYPE__=long\ long\ unsigned\ int __UINT_FAST8_MAX__=0xff __UINT_FAST8_TYPE__=unsigned\ char __UINT_LEAST16_MAX__=0xffff __UINT_LEAST16_TYPE__=short\ unsigned\ int __UINT_LEAST32_MAX__=0xffffffffU __UINT_LEAST32_TYPE__=unsigned\ int __UINT_LEAST64_MAX__=0xffffffffffffffffULL __UINT_LEAST64_TYPE__=long\ long\ unsigned\ int __UINT_LEAST8_MAX__=0xff __UINT_LEAST8_TYPE__=unsigned\ char __USER_LABEL_PREFIX__= __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_POSIX=1 __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 __VERSION__="10.2.1\ 20210110" __WCHAR_MAX__=0x7fffffffL __WCHAR_MIN__=(-0x7fffffffL\ -\ 1) __WCHAR_TYPE__=long\ int __WCHAR_WIDTH__=32 __WINT_MAX__=0xffffffffU __WINT_MIN__=0U __WINT_TYPE__=unsigned\ int __WINT_WIDTH__=32 __gnu_linux__=1 __linux=1 __linux__=1 __sh__=1 __unix=1 __unix__=1 linux=1 unix=1' crypt_r_proto='REENTRANT_PROTO_B_CCS' cryptlib='' csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -739,7 +741,7 @@ full_sed='/bin/sed' gccansipedantic='' gccosandvers='' -gccversion='10.2.1 20201224' +gccversion='10.2.1 20210110' getgrent_r_proto='REENTRANT_PROTO_I_SBWR' getgrgid_r_proto='REENTRANT_PROTO_I_TSBWR' getgrnam_r_proto='REENTRANT_PROTO_I_CSBWR' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/sh4-linux-gnu-thread-multi-64int' -inc_version_list_init='"5.32.0","5.32.0/sh4-linux-gnu-thread-multi-64int",0' +inc_version_list='' +inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/sh4-linux-gnu/10/include /usr/local/include /usr/include/sh4-linux-gnu /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/sh4-linux-gnu/perl/5.32' +installarchlib='/usr/lib/sh4-linux-gnu/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/sh4-linux-gnu/perl/5.32.1' +installsitearch='/usr/local/lib/sh4-linux-gnu/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/sh4-linux-gnu/perl5/5.32' +installvendorarch='/usr/lib/sh4-linux-gnu/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"Ld"' ivsize='8' ivtype='long long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='sh4-linux-gnu-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='libc-2.31.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/sh4-linux-gnu /usr/lib /lib/sh4-linux-gnu /lib /usr/lib/sh4-linux-gnu' +libpth='/usr/local/lib /usr/lib/sh4-linux-gnu /usr/lib /lib/sh4-linux-gnu /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/sh4-linux-gnu' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/sh4-linux-gnu/libgdbm.so /usr/lib/sh4-linux-gnu/libgdbm_compat.so /usr/lib/sh4-linux-gnu/libdb.so /usr/lib/sh4-linux-gnu/libdl.so /usr/lib/sh4-linux-gnu/libm.so /usr/lib/sh4-linux-gnu/libpthread.so /usr/lib/sh4-linux-gnu/libc.so /usr/lib/sh4-linux-gnu/libcrypt.so' -libspath=' /usr/local/lib /usr/include/sh4-linux-gnu /usr/lib /lib/sh4-linux-gnu /lib /usr/lib/sh4-linux-gnu' +libspath=' /usr/local/lib /usr/lib/sh4-linux-gnu /usr/lib /lib/sh4-linux-gnu /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1029,8 +1031,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='4' quadkind='3' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 0' sig_size='68' signal_t='void' -sitearch='/usr/local/lib/sh4-linux-gnu/perl/5.32.1' -sitearchexp='/usr/local/lib/sh4-linux-gnu/perl/5.32.1' +sitearch='/usr/local/lib/sh4-linux-gnu/perl/5.34.0' +sitearchexp='/usr/local/lib/sh4-linux-gnu/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long long' -use5005threads='undef' use64bitall='undef' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long long' uvuformat='"Lu"' uvxformat='"Lx"' -vendorarch='/usr/lib/sh4-linux-gnu/perl5/5.32' -vendorarchexp='/usr/lib/sh4-linux-gnu/perl5/5.32' +vendorarch='/usr/lib/sh4-linux-gnu/perl5/5.34' +vendorarchexp='/usr/lib/sh4-linux-gnu/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/sparc64/config.sh.debug.patch perl-5.34.0/debian/cross/sparc64/config.sh.debug.patch --- perl-5.32.1/debian/cross/sparc64/config.sh.debug.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/sparc64/config.sh.debug.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,8 +1,8 @@ ---- config.sh.static 2021-02-22 16:50:34.228705024 +0200 -+++ config.sh.debug 2021-02-22 16:50:34.212682198 +0200 +--- config.sh.static 2021-08-25 21:57:47.028504699 +0300 ++++ config.sh.debug 2021-08-25 21:57:47.016504392 +0300 @@ -17 +17 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sparc64-linux-gnu-gcc -Dcpp=sparc64-linux-gnu-cpp -Dld=sparc64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/sparc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sparc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/sparc64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sparc64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/sparc64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sparc64-linux-gnu-gcc -Dcpp=sparc64-linux-gnu-cpp -Dld=sparc64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sparc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/sparc64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sparc64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/sparc64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sparc64-linux-gnu-gcc -Dcpp=sparc64-linux-gnu-cpp -Dld=sparc64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/sparc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sparc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/sparc64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sparc64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/sparc64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sparc64-linux-gnu-gcc -Dcpp=sparc64-linux-gnu-cpp -Dld=sparc64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sparc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/sparc64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sparc64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/sparc64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=both -Doptimize=-O2 -dEs -Uuseshrplib' @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/sparc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' +config_arg7='-Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -12,8 +12,8 @@ @@ -103 +103 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/sparc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +125 @@ +@@ -126 +126 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/sparc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -1264 +1263,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1265,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/sparc64/config.sh.shared.patch perl-5.34.0/debian/cross/sparc64/config.sh.shared.patch --- perl-5.32.1/debian/cross/sparc64/config.sh.shared.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/sparc64/config.sh.shared.patch 2022-02-05 10:20:32.000000000 +0000 @@ -1,9 +1,9 @@ ---- config.sh.static 2021-02-22 16:50:34.228705024 +0200 -+++ config.sh.shared 2021-02-22 16:50:34.216687904 +0200 +--- config.sh.static 2021-08-25 21:57:47.028504699 +0300 ++++ config.sh.shared 2021-08-25 21:57:47.020504494 +0300 @@ -17,2 +17,2 @@ --config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sparc64-linux-gnu-gcc -Dcpp=sparc64-linux-gnu-cpp -Dld=sparc64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/sparc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sparc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/sparc64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sparc64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/sparc64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +-config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sparc64-linux-gnu-gcc -Dcpp=sparc64-linux-gnu-cpp -Dld=sparc64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/sparc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sparc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/sparc64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sparc64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/sparc64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' -config_argc=40 -+config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sparc64-linux-gnu-gcc -Dcpp=sparc64-linux-gnu-cpp -Dld=sparc64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sparc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/sparc64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sparc64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/sparc64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1' ++config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sparc64-linux-gnu-gcc -Dcpp=sparc64-linux-gnu-cpp -Dld=sparc64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sparc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/sparc64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sparc64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/sparc64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.34.0' +config_argc=41 @@ -25 +25 @@ -config_arg7='-Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/sparc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security' @@ -11,18 +11,18 @@ @@ -58 +58,2 @@ -config_arg40='-Uuseshrplib' +config_arg40='-Duseshrplib' -+config_arg41='-Dlibperl=libperl.so.5.32.1' ++config_arg41='-Dlibperl=libperl.so.5.34.0' @@ -103 +104 @@ -ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/sparc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' -@@ -125 +126 @@ +@@ -126 +127 @@ -cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DAPPLLIB_EXP="/usr/lib/sparc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' -@@ -928 +929 @@ +@@ -930 +931 @@ -libperl='libperl.a' -+libperl='libperl.so.5.32.1' -@@ -1211 +1212 @@ ++libperl='libperl.so.5.34.0' +@@ -1213 +1214 @@ -useshrplib='false' +useshrplib='true' -@@ -1264 +1264,0 @@ --# Extracted from Debian package version 5.32.1-2 +@@ -1266 +1266,0 @@ +-# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/cross/sparc64/config.sh.static perl-5.34.0/debian/cross/sparc64/config.sh.static --- perl-5.32.1/debian/cross/sparc64/config.sh.static 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/cross/sparc64/config.sh.static 2022-02-05 10:20:32.000000000 +0000 @@ -8,13 +8,13 @@ # Package name : perl5 # Source directory : /dummy/build/dir -# Configuration time: Mon Feb 1 22:44:54 UTC 2021 +# Configuration time: Mon May 17 19:09:52 UTC 2021 # Configured by : Debian # Target system : linux localhost 4.19.0 #1 smp debian 4.19.0 sparc64 gnulinux : Configure command line arguments. config_arg0='../Configure' -config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sparc64-linux-gnu-gcc -Dcpp=sparc64-linux-gnu-cpp -Dld=sparc64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/sparc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sparc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/sparc64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sparc64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/sparc64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' +config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=sparc64-linux-gnu-gcc -Dcpp=sparc64-linux-gnu-cpp -Dld=sparc64-linux-gnu-gcc -Dccflags=-DDEBIAN -DAPPLLIB_EXP="/usr/lib/sparc64-linux-gnu/perl-base" -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=sparc64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.34 -Darchlib=/usr/lib/sparc64-linux-gnu/perl/5.34 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/sparc64-linux-gnu/perl5/5.34 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.34.0 -Dsitearch=/usr/local/lib/sparc64-linux-gnu/perl/5.34.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Uuseshrplib' config_argc=40 config_arg1='-Dmksymlinks' config_arg2='-Dusethreads' @@ -28,14 +28,14 @@ config_arg10='-Dcccdlflags=-fPIC' config_arg11='-Darchname=sparc64-linux-gnu' config_arg12='-Dprefix=/usr' -config_arg13='-Dprivlib=/usr/share/perl/5.32' -config_arg14='-Darchlib=/usr/lib/sparc64-linux-gnu/perl/5.32' +config_arg13='-Dprivlib=/usr/share/perl/5.34' +config_arg14='-Darchlib=/usr/lib/sparc64-linux-gnu/perl/5.34' config_arg15='-Dvendorprefix=/usr' config_arg16='-Dvendorlib=/usr/share/perl5' -config_arg17='-Dvendorarch=/usr/lib/sparc64-linux-gnu/perl5/5.32' +config_arg17='-Dvendorarch=/usr/lib/sparc64-linux-gnu/perl5/5.34' config_arg18='-Dsiteprefix=/usr/local' -config_arg19='-Dsitelib=/usr/local/share/perl/5.32.1' -config_arg20='-Dsitearch=/usr/local/lib/sparc64-linux-gnu/perl/5.32.1' +config_arg19='-Dsitelib=/usr/local/share/perl/5.34.0' +config_arg20='-Dsitearch=/usr/local/lib/sparc64-linux-gnu/perl/5.34.0' config_arg21='-Dman1dir=/usr/share/man/man1' config_arg22='-Dman3dir=/usr/share/man/man3' config_arg23='-Dsiteman1dir=/usr/local/man/man1' @@ -76,11 +76,11 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/usr/lib/sparc64-linux-gnu/perl/5.32' -archlibexp='/usr/lib/sparc64-linux-gnu/perl/5.32' +archlib='/usr/lib/sparc64-linux-gnu/perl/5.34' +archlibexp='/usr/lib/sparc64-linux-gnu/perl/5.34' archname64='' archname='sparc64-linux-gnu-thread-multi' archobjs='' @@ -107,7 +107,7 @@ ccversion='' cf_by='Debian' cf_email='perl@packages.debian.org' -cf_time='Mon Feb 1 22:44:54 UTC 2021' +cf_time='Mon May 17 19:09:52 UTC 2021' charbits='8' charsize='1' chgrp='' @@ -115,6 +115,7 @@ chown='' clocktype='clock_t' comm='comm' +compiler_warning='grep -i warning' compress='' contains='grep' cp='cp' @@ -133,7 +134,7 @@ csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='gcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -292,6 +293,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -358,7 +360,7 @@ d_hypot='define' d_ilogb='define' d_ilogbl='define' -d_inc_version_list='define' +d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' @@ -722,7 +724,7 @@ eunicefix=':' exe_ext='' expr='expr' -extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' @@ -875,13 +877,13 @@ i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' -inc_version_list='5.32.0 5.32.0/sparc64-linux-gnu-thread-multi' -inc_version_list_init='"5.32.0","5.32.0/sparc64-linux-gnu-thread-multi",0' +inc_version_list='' +inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/sparc64-linux-gnu/10/include /usr/local/include /usr/include/sparc64-linux-gnu /usr/include' inews='' initialinstalllocation='/usr/bin' -installarchlib='/usr/lib/sparc64-linux-gnu/perl/5.32' +installarchlib='/usr/lib/sparc64-linux-gnu/perl/5.34' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' @@ -889,19 +891,19 @@ installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' -installprivlib='/usr/share/perl/5.32' +installprivlib='/usr/share/perl/5.34' installscript='/usr/bin' -installsitearch='/usr/local/lib/sparc64-linux-gnu/perl/5.32.1' +installsitearch='/usr/local/lib/sparc64-linux-gnu/perl/5.34.0' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/usr/local/share/perl/5.32.1' +installsitelib='/usr/local/share/perl/5.34.0' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='/usr/lib/sparc64-linux-gnu/perl5/5.32' +installvendorarch='/usr/lib/sparc64-linux-gnu/perl5/5.34' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' @@ -914,7 +916,7 @@ ivdformat='"ld"' ivsize='8' ivtype='long' -known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' +known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='sparc64-linux-gnu-gcc' ld_can_script='define' @@ -926,12 +928,12 @@ lib_ext='.a' libc='libc-2.31.so' libperl='libperl.a' -libpth='/usr/local/lib /usr/include/sparc64-linux-gnu /usr/lib /lib/sparc64-linux-gnu /lib/../lib /usr/lib/sparc64-linux-gnu /usr/lib/../lib /lib' +libpth='/usr/local/lib /usr/lib/sparc64-linux-gnu /usr/lib /lib/sparc64-linux-gnu /lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/sparc64-linux-gnu' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/sparc64-linux-gnu/libgdbm.so /usr/lib/sparc64-linux-gnu/libgdbm_compat.so /usr/lib/sparc64-linux-gnu/libdb.so /usr/lib/sparc64-linux-gnu/libdl.so /usr/lib/sparc64-linux-gnu/libm.so /usr/lib/sparc64-linux-gnu/libpthread.so /usr/lib/sparc64-linux-gnu/libc.so /usr/lib/sparc64-linux-gnu/libcrypt.so' -libspath=' /usr/local/lib /usr/include/sparc64-linux-gnu /usr/lib /lib/sparc64-linux-gnu /lib/../lib /usr/lib/sparc64-linux-gnu /usr/lib/../lib /lib' +libspath=' /usr/local/lib /usr/lib/sparc64-linux-gnu /usr/lib /lib/sparc64-linux-gnu /lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' @@ -988,7 +990,7 @@ nm='nm' nm_opt='' nm_so_opt='--dynamic' -nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' +nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' @@ -1012,7 +1014,7 @@ package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' -patchlevel='32' +patchlevel='34' path_sep=':' perl5='/usr/bin/perl' perl='perl' @@ -1029,8 +1031,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/share/perl/5.32' -privlibexp='/usr/share/perl/5.32' +privlib='/usr/share/perl/5.34' +privlibexp='/usr/share/perl/5.34' procselfexe='"/proc/self/exe"' ptrsize='8' quadkind='2' @@ -1095,17 +1097,17 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 20, 23, 29, 0' sig_size='69' signal_t='void' -sitearch='/usr/local/lib/sparc64-linux-gnu/perl/5.32.1' -sitearchexp='/usr/local/lib/sparc64-linux-gnu/perl/5.32.1' +sitearch='/usr/local/lib/sparc64-linux-gnu/perl/5.34.0' +sitearchexp='/usr/local/lib/sparc64-linux-gnu/perl/5.34.0' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/local/share/perl/5.32.1' +sitelib='/usr/local/share/perl/5.34.0' sitelib_stem='' -sitelibexp='/usr/local/share/perl/5.32.1' +sitelibexp='/usr/local/share/perl/5.34.0' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' @@ -1143,7 +1145,7 @@ stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='1' +subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1182,11 +1184,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long' -use5005threads='undef' use64bitall='define' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' @@ -1223,8 +1225,8 @@ uvtype='unsigned long' uvuformat='"lu"' uvxformat='"lx"' -vendorarch='/usr/lib/sparc64-linux-gnu/perl5/5.32' -vendorarchexp='/usr/lib/sparc64-linux-gnu/perl5/5.32' +vendorarch='/usr/lib/sparc64-linux-gnu/perl5/5.34' +vendorarchexp='/usr/lib/sparc64-linux-gnu/perl5/5.34' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' @@ -1242,8 +1244,8 @@ vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1252,13 +1254,13 @@ zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' -# Extracted from Debian package version 5.32.1-2 +# Extracted from Debian package version 5.34.0~rc2-1 diff -Nru perl-5.32.1/debian/libperl5.32.install perl-5.34.0/debian/libperl5.32.install --- perl-5.32.1/debian/libperl5.32.install 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/libperl5.32.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -usr/lib/${DEB_HOST_MULTIARCH}/perl -usr/lib/${DEB_HOST_MULTIARCH}/libperl.so.${env:fullversion} -usr/bin/perl -usr/bin/cpan -debian/cross/README usr/lib/${DEB_HOST_MULTIARCH}/perl/debian-config-data-${env:fullversion} -debian/errno.ph usr/lib/${DEB_HOST_MULTIARCH}/perl/${env:fullversion} diff -Nru perl-5.32.1/debian/libperl5.32.links perl-5.34.0/debian/libperl5.32.links --- perl-5.32.1/debian/libperl5.32.links 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/libperl5.32.links 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -usr/lib/${DEB_HOST_MULTIARCH}/perl/${env:fullversion}/Config.pm usr/lib/${DEB_HOST_MULTIARCH}/perl/cross-config-${env:fullversion}/Config.pm -usr/lib/${DEB_HOST_MULTIARCH}/perl/${env:fullversion}/Config_heavy.pl usr/lib/${DEB_HOST_MULTIARCH}/perl/cross-config-${env:fullversion}/Config_heavy.pl -usr/lib/${DEB_HOST_MULTIARCH}/libperl.so.${env:fullversion} usr/lib/${DEB_HOST_MULTIARCH}/libperl.so.${env:version} diff -Nru perl-5.32.1/debian/libperl5.32.lintian-overrides perl-5.34.0/debian/libperl5.32.lintian-overrides --- perl-5.32.1/debian/libperl5.32.lintian-overrides 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/libperl5.32.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -# Install for edge cases and not considered as applications -application-in-library-section libs usr/bin/cpan5.32-x86_64-linux-gnu usr/bin/perl5.32-x86_64-linux-gnu -# Documentation describes files in this directory -package-contains-documentation-outside-usr-share-doc usr/lib/x86_64-linux-gnu/perl/debian-config-data-5.32.0/README -# There is logic in the unicode handling code which deals with this typo -spelling-error-in-binary usr/lib/x86_64-linux-gnu/libperl.so.5.32.0 Inseperable Inseparable diff -Nru perl-5.32.1/debian/libperl5.32.manpages perl-5.34.0/debian/libperl5.32.manpages --- perl-5.32.1/debian/libperl5.32.manpages 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/libperl5.32.manpages 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -usr/share/man/man1/perl.1 -usr/share/man/man1/cpan.1 diff -Nru perl-5.32.1/debian/libperl5.32.symbols perl-5.34.0/debian/libperl5.32.symbols --- perl-5.32.1/debian/libperl5.32.symbols 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/libperl5.32.symbols 1970-01-01 00:00:00.000000000 +0000 @@ -1,1864 +0,0 @@ -libperl.so.5.32 libperl5.32 #MINVER# -* Build-Depends-Package: libperl-dev - ASCII_TO_NEED@Base 5.32.0~rc1 - NATIVE_TO_NEED@Base 5.32.0~rc1 - PL_C_locale_obj@Base 5.32.0~rc1 - PL_No@Base 5.32.0~rc1 - PL_WARN_ALL@Base 5.32.0~rc1 - PL_WARN_NONE@Base 5.32.0~rc1 - PL_Yes@Base 5.32.0~rc1 - PL_Zero@Base 5.32.0~rc1 - PL_bincompat_options@Base 5.32.0~rc1 - PL_bitcount@Base 5.32.0~rc1 - PL_block_type@Base 5.32.0~rc1 - PL_c9_utf8_dfa_tab@Base 5.32.0~rc1 - PL_charclass@Base 5.32.0~rc1 - PL_check@Base 5.32.0~rc1 - PL_check_mutex@Base 5.32.0~rc1 - PL_core_reg_engine@Base 5.32.0~rc1 - PL_csighandler1p@Base 5.32.0~rc1 - PL_csighandler3p@Base 5.32.0~rc1 - PL_csighandlerp@Base 5.32.0~rc1 - PL_curinterp@Base 5.32.0~rc1 - PL_do_undump@Base 5.32.0~rc1 - PL_dollarzero_mutex@Base 5.32.0~rc1 - PL_env_mutex@Base 5.32.0~rc1 - PL_extended_cp_format@Base 5.32.0~rc1 - PL_extended_utf8_dfa_tab@Base 5.32.0~rc1 - PL_fold@Base 5.32.0~rc1 - PL_fold_latin1@Base 5.32.0~rc1 - PL_fold_locale@Base 5.32.0~rc1 - PL_freq@Base 5.32.0~rc1 - PL_hash_seed@Base 5.32.0~rc1 - PL_hash_seed_set@Base 5.32.0~rc1 - PL_hash_state@Base 5.32.0~rc1 - PL_hexdigit@Base 5.32.0~rc1 - PL_hints_mutex@Base 5.32.0~rc1 - PL_inf@Base 5.32.0~rc1 - PL_interp_size@Base 5.32.0~rc1 - PL_interp_size_5_18_0@Base 5.32.0~rc1 - PL_isa_DOES@Base 5.32.0~rc1 - PL_keyword_plugin@Base 5.32.0~rc1 - PL_keyword_plugin_mutex@Base 5.32.0~rc1 - PL_latin1_lc@Base 5.32.0~rc1 - PL_magic_data@Base 5.32.0~rc1 - PL_magic_vtable_names@Base 5.32.0~rc1 - PL_magic_vtables@Base 5.32.0~rc1 - PL_memory_wrap@Base 5.32.0~rc1 - PL_mmap_page_size@Base 5.32.0~rc1 - PL_mod_latin1_uc@Base 5.32.0~rc1 - PL_my_ctx_mutex@Base 5.32.0~rc1 - PL_my_cxt_index@Base 5.32.0~rc1 - PL_nan@Base 5.32.0~rc1 - PL_no_aelem@Base 5.32.0~rc1 - PL_no_dir_func@Base 5.32.0~rc1 - PL_no_func@Base 5.32.0~rc1 - PL_no_helem_sv@Base 5.32.0~rc1 - PL_no_localize_ref@Base 5.32.0~rc1 - PL_no_mem@Base 5.32.0~rc1 - PL_no_modify@Base 5.32.0~rc1 - PL_no_myglob@Base 5.32.0~rc1 - PL_no_security@Base 5.32.0~rc1 - PL_no_sock_func@Base 5.32.0~rc1 - PL_no_symref@Base 5.32.0~rc1 - PL_no_symref_sv@Base 5.32.0~rc1 - PL_no_usym@Base 5.32.0~rc1 - PL_no_wrongref@Base 5.32.0~rc1 - PL_op_desc@Base 5.32.0~rc1 - PL_op_mutex@Base 5.32.0~rc1 - PL_op_name@Base 5.32.0~rc1 - PL_op_private_bitdef_ix@Base 5.32.0~rc1 - PL_op_private_bitdefs@Base 5.32.0~rc1 - PL_op_private_bitfields@Base 5.32.0~rc1 - PL_op_private_labels@Base 5.32.0~rc1 - PL_op_private_valid@Base 5.32.0~rc1 - PL_op_seq@Base 5.32.0~rc1 - PL_op_sequence@Base 5.32.0~rc1 - PL_opargs@Base 5.32.0~rc1 - PL_perlio_debug_fd@Base 5.32.0~rc1 - PL_perlio_fd_refcnt@Base 5.32.0~rc1 - PL_perlio_fd_refcnt_size@Base 5.32.0~rc1 - PL_perlio_mutex@Base 5.32.0~rc1 - PL_phase_names@Base 5.32.0~rc1 - PL_ppaddr@Base 5.32.0~rc1 - PL_reg_extflags_name@Base 5.32.0~rc1 - PL_reg_intflags_name@Base 5.32.0~rc1 - PL_reg_name@Base 5.32.0~rc1 - PL_regkind@Base 5.32.0~rc1 - PL_revision@Base 5.32.0~rc1 - PL_runops_dbg@Base 5.32.0~rc1 - PL_runops_std@Base 5.32.0~rc1 - PL_sh_path@Base 5.32.0~rc1 - PL_sig_name@Base 5.32.0~rc1 - PL_sig_num@Base 5.32.0~rc1 - PL_sigfpe_saved@Base 5.32.0~rc1 - PL_simple@Base 5.32.0~rc1 - PL_simple_bitmask@Base 5.32.0~rc1 - PL_strategy_accept@Base 5.32.0~rc1 - PL_strategy_dup2@Base 5.32.0~rc1 - PL_strategy_dup@Base 5.32.0~rc1 - PL_strategy_mkstemp@Base 5.32.0~rc1 - PL_strategy_open3@Base 5.32.0~rc1 - PL_strategy_open@Base 5.32.0~rc1 - PL_strategy_pipe@Base 5.32.0~rc1 - PL_strategy_socket@Base 5.32.0~rc1 - PL_strategy_socketpair@Base 5.32.0~rc1 - PL_strict_utf8_dfa_tab@Base 5.32.0~rc1 - PL_subversion@Base 5.32.0~rc1 - PL_sv_placeholder@Base 5.32.0~rc1 - PL_thr_key@Base 5.32.0~rc1 - PL_use_safe_putenv@Base 5.32.0~rc1 - PL_user_def_props@Base 5.32.0~rc1 - PL_user_def_props_aTHX@Base 5.32.0~rc1 - PL_user_prop_mutex@Base 5.32.0~rc1 - PL_utf8skip@Base 5.32.0~rc1 - PL_uudmap@Base 5.32.0~rc1 - PL_uuemap@Base 5.32.0~rc1 - PL_valid_types_IVX@Base 5.32.0~rc1 - PL_valid_types_IV_set@Base 5.32.0~rc1 - PL_valid_types_NVX@Base 5.32.0~rc1 - PL_valid_types_NV_set@Base 5.32.0~rc1 - PL_valid_types_PVX@Base 5.32.0~rc1 - PL_valid_types_RV@Base 5.32.0~rc1 - PL_varies@Base 5.32.0~rc1 - PL_varies_bitmask@Base 5.32.0~rc1 - PL_version@Base 5.32.0~rc1 - PL_veto_cleanup@Base 5.32.0~rc1 - PL_warn_nl@Base 5.32.0~rc1 - PL_warn_nosemi@Base 5.32.0~rc1 - PL_warn_reserved@Base 5.32.0~rc1 - PL_warn_uninit@Base 5.32.0~rc1 - PL_warn_uninit_sv@Base 5.32.0~rc1 - PL_watch_pvx@Base 5.32.0~rc1 - PerlIOBase_binmode@Base 5.32.0~rc1 - PerlIOBase_clearerr@Base 5.32.0~rc1 - PerlIOBase_close@Base 5.32.0~rc1 - PerlIOBase_dup@Base 5.32.0~rc1 - PerlIOBase_eof@Base 5.32.0~rc1 - PerlIOBase_error@Base 5.32.0~rc1 - PerlIOBase_fileno@Base 5.32.0~rc1 - PerlIOBase_flush_linebuf@Base 5.32.0~rc1 - PerlIOBase_noop_fail@Base 5.32.0~rc1 - PerlIOBase_noop_ok@Base 5.32.0~rc1 - PerlIOBase_open@Base 5.32.0~rc1 - PerlIOBase_popped@Base 5.32.0~rc1 - PerlIOBase_pushed@Base 5.32.0~rc1 - PerlIOBase_read@Base 5.32.0~rc1 - PerlIOBase_setlinebuf@Base 5.32.0~rc1 - PerlIOBase_unread@Base 5.32.0~rc1 - PerlIOBuf_bufsiz@Base 5.32.0~rc1 - PerlIOBuf_close@Base 5.32.0~rc1 - PerlIOBuf_dup@Base 5.32.0~rc1 - PerlIOBuf_fill@Base 5.32.0~rc1 - PerlIOBuf_flush@Base 5.32.0~rc1 - PerlIOBuf_get_base@Base 5.32.0~rc1 - PerlIOBuf_get_cnt@Base 5.32.0~rc1 - PerlIOBuf_get_ptr@Base 5.32.0~rc1 - PerlIOBuf_open@Base 5.32.0~rc1 - PerlIOBuf_popped@Base 5.32.0~rc1 - PerlIOBuf_pushed@Base 5.32.0~rc1 - PerlIOBuf_read@Base 5.32.0~rc1 - PerlIOBuf_seek@Base 5.32.0~rc1 - PerlIOBuf_set_ptrcnt@Base 5.32.0~rc1 - PerlIOBuf_tell@Base 5.32.0~rc1 - PerlIOBuf_unread@Base 5.32.0~rc1 - PerlIOBuf_write@Base 5.32.0~rc1 - PerlIOCrlf_binmode@Base 5.32.0~rc1 - PerlIOCrlf_flush@Base 5.32.0~rc1 - PerlIOCrlf_get_cnt@Base 5.32.0~rc1 - PerlIOCrlf_pushed@Base 5.32.0~rc1 - PerlIOCrlf_set_ptrcnt@Base 5.32.0~rc1 - PerlIOCrlf_unread@Base 5.32.0~rc1 - PerlIOCrlf_write@Base 5.32.0~rc1 - PerlIOPending_close@Base 5.32.0~rc1 - PerlIOPending_fill@Base 5.32.0~rc1 - PerlIOPending_flush@Base 5.32.0~rc1 - PerlIOPending_pushed@Base 5.32.0~rc1 - PerlIOPending_read@Base 5.32.0~rc1 - PerlIOPending_seek@Base 5.32.0~rc1 - PerlIOPending_set_ptrcnt@Base 5.32.0~rc1 - PerlIOPop_pushed@Base 5.32.0~rc1 - PerlIORaw_pushed@Base 5.32.0~rc1 - PerlIOStdio_clearerr@Base 5.32.0~rc1 - PerlIOStdio_close@Base 5.32.0~rc1 - PerlIOStdio_dup@Base 5.32.0~rc1 - PerlIOStdio_eof@Base 5.32.0~rc1 - PerlIOStdio_error@Base 5.32.0~rc1 - PerlIOStdio_fileno@Base 5.32.0~rc1 - PerlIOStdio_fill@Base 5.32.0~rc1 - PerlIOStdio_flush@Base 5.32.0~rc1 - PerlIOStdio_mode@Base 5.32.0~rc1 - PerlIOStdio_open@Base 5.32.0~rc1 - PerlIOStdio_pushed@Base 5.32.0~rc1 - PerlIOStdio_read@Base 5.32.0~rc1 - PerlIOStdio_seek@Base 5.32.0~rc1 - PerlIOStdio_setlinebuf@Base 5.32.0~rc1 - PerlIOStdio_tell@Base 5.32.0~rc1 - PerlIOStdio_unread@Base 5.32.0~rc1 - PerlIOStdio_write@Base 5.32.0~rc1 - PerlIOUnix_close@Base 5.32.0~rc1 - PerlIOUnix_dup@Base 5.32.0~rc1 - PerlIOUnix_fileno@Base 5.32.0~rc1 - PerlIOUnix_oflags@Base 5.32.0~rc1 - PerlIOUnix_open@Base 5.32.0~rc1 - PerlIOUnix_pushed@Base 5.32.0~rc1 - PerlIOUnix_read@Base 5.32.0~rc1 - PerlIOUnix_refcnt@Base 5.32.0~rc1 - PerlIOUnix_refcnt_dec@Base 5.32.0~rc1 - PerlIOUnix_refcnt_inc@Base 5.32.0~rc1 - PerlIOUnix_seek@Base 5.32.0~rc1 - PerlIOUnix_tell@Base 5.32.0~rc1 - PerlIOUnix_write@Base 5.32.0~rc1 - PerlIOUtf8_pushed@Base 5.32.0~rc1 - PerlIO__close@Base 5.32.0~rc1 - PerlIO_allocate@Base 5.32.0~rc1 - PerlIO_apply_layera@Base 5.32.0~rc1 - PerlIO_apply_layers@Base 5.32.0~rc1 - PerlIO_arg_fetch@Base 5.32.0~rc1 - PerlIO_binmode@Base 5.32.0~rc1 - PerlIO_byte@Base 5.32.0~rc1 - PerlIO_canset_cnt@Base 5.32.0~rc1 - PerlIO_cleantable@Base 5.32.0~rc1 - PerlIO_cleanup@Base 5.32.0~rc1 - PerlIO_clone@Base 5.32.0~rc1 - PerlIO_clone_list@Base 5.32.0~rc1 - PerlIO_crlf@Base 5.32.0~rc1 - PerlIO_debug@Base 5.32.0~rc1 - PerlIO_default_buffer@Base 5.32.0~rc1 - PerlIO_default_layer@Base 5.32.0~rc1 - PerlIO_default_layers@Base 5.32.0~rc1 - PerlIO_define_layer@Base 5.32.0~rc1 - PerlIO_destruct@Base 5.32.0~rc1 - PerlIO_exportFILE@Base 5.32.0~rc1 - PerlIO_fast_gets@Base 5.32.0~rc1 - PerlIO_fdopen@Base 5.32.0~rc1 - PerlIO_fdupopen@Base 5.32.0~rc1 - PerlIO_findFILE@Base 5.32.0~rc1 - PerlIO_find_layer@Base 5.32.0~rc1 - PerlIO_get_layers@Base 5.32.0~rc1 - PerlIO_getc@Base 5.32.0~rc1 - PerlIO_getname@Base 5.32.0~rc1 - PerlIO_getpos@Base 5.32.0~rc1 - PerlIO_has_base@Base 5.32.0~rc1 - PerlIO_has_cntptr@Base 5.32.0~rc1 - PerlIO_importFILE@Base 5.32.0~rc1 - PerlIO_init@Base 5.32.0~rc1 - PerlIO_intmode2str@Base 5.32.0~rc1 - PerlIO_isutf8@Base 5.32.0~rc1 - PerlIO_layer_fetch@Base 5.32.0~rc1 - PerlIO_list_alloc@Base 5.32.0~rc1 - PerlIO_list_free@Base 5.32.0~rc1 - PerlIO_list_push@Base 5.32.0~rc1 - PerlIO_modestr@Base 5.32.0~rc1 - PerlIO_open@Base 5.32.0~rc1 - PerlIO_openn@Base 5.32.0~rc1 - PerlIO_parse_layers@Base 5.32.0~rc1 - PerlIO_pending@Base 5.32.0~rc1 - PerlIO_perlio@Base 5.32.0~rc1 - PerlIO_pop@Base 5.32.0~rc1 - PerlIO_printf@Base 5.32.0~rc1 - PerlIO_push@Base 5.32.0~rc1 - PerlIO_putc@Base 5.32.0~rc1 - PerlIO_puts@Base 5.32.0~rc1 - PerlIO_raw@Base 5.32.0~rc1 - PerlIO_releaseFILE@Base 5.32.0~rc1 - PerlIO_remove@Base 5.32.0~rc1 - PerlIO_reopen@Base 5.32.0~rc1 - PerlIO_resolve_layers@Base 5.32.0~rc1 - PerlIO_rewind@Base 5.32.0~rc1 - PerlIO_setpos@Base 5.32.0~rc1 - PerlIO_stdio@Base 5.32.0~rc1 - PerlIO_stdoutf@Base 5.32.0~rc1 - PerlIO_stdstreams@Base 5.32.0~rc1 - PerlIO_sv_dup@Base 5.32.0~rc1 - PerlIO_tab_sv@Base 5.32.0~rc1 - PerlIO_teardown@Base 5.32.0~rc1 - PerlIO_tmpfile@Base 5.32.0~rc1 - PerlIO_tmpfile_flags@Base 5.32.0~rc1 - PerlIO_ungetc@Base 5.32.0~rc1 - PerlIO_unix@Base 5.32.0~rc1 - PerlIO_utf8@Base 5.32.0~rc1 - PerlIO_vprintf@Base 5.32.0~rc1 - Perl_Gv_AMupdate@Base 5.32.0~rc1 - Perl_PerlIO_clearerr@Base 5.32.0~rc1 - Perl_PerlIO_close@Base 5.32.0~rc1 - Perl_PerlIO_context_layers@Base 5.32.0~rc1 - Perl_PerlIO_eof@Base 5.32.0~rc1 - Perl_PerlIO_error@Base 5.32.0~rc1 - Perl_PerlIO_fileno@Base 5.32.0~rc1 - Perl_PerlIO_fill@Base 5.32.0~rc1 - Perl_PerlIO_flush@Base 5.32.0~rc1 - Perl_PerlIO_get_base@Base 5.32.0~rc1 - Perl_PerlIO_get_bufsiz@Base 5.32.0~rc1 - Perl_PerlIO_get_cnt@Base 5.32.0~rc1 - Perl_PerlIO_get_ptr@Base 5.32.0~rc1 - Perl_PerlIO_read@Base 5.32.0~rc1 - Perl_PerlIO_restore_errno@Base 5.32.0~rc1 - Perl_PerlIO_save_errno@Base 5.32.0~rc1 - Perl_PerlIO_seek@Base 5.32.0~rc1 - Perl_PerlIO_set_cnt@Base 5.32.0~rc1 - Perl_PerlIO_set_ptrcnt@Base 5.32.0~rc1 - Perl_PerlIO_setlinebuf@Base 5.32.0~rc1 - Perl_PerlIO_stderr@Base 5.32.0~rc1 - Perl_PerlIO_stdin@Base 5.32.0~rc1 - Perl_PerlIO_stdout@Base 5.32.0~rc1 - Perl_PerlIO_tell@Base 5.32.0~rc1 - Perl_PerlIO_unread@Base 5.32.0~rc1 - Perl_PerlIO_write@Base 5.32.0~rc1 - Perl_PerlLIO_dup2_cloexec@Base 5.32.0~rc1 - Perl_PerlLIO_dup_cloexec@Base 5.32.0~rc1 - Perl_PerlLIO_open3_cloexec@Base 5.32.0~rc1 - Perl_PerlLIO_open_cloexec@Base 5.32.0~rc1 - Perl_PerlProc_pipe_cloexec@Base 5.32.0~rc1 - Perl_PerlSock_accept_cloexec@Base 5.32.0~rc1 - Perl_PerlSock_socket_cloexec@Base 5.32.0~rc1 - Perl_PerlSock_socketpair_cloexec@Base 5.32.0~rc1 - Perl_Slab_Alloc@Base 5.32.0~rc1 - Perl_Slab_Free@Base 5.32.0~rc1 - Perl__add_range_to_invlist@Base 5.32.0~rc1 - Perl__byte_dump_string@Base 5.32.0~rc1 - Perl__force_out_malformed_utf8_message@Base 5.32.0~rc1 - Perl__inverse_folds@Base 5.32.0~rc1 - Perl__invlistEQ@Base 5.32.0~rc1 - Perl__invlist_dump@Base 5.32.0~rc1 - Perl__invlist_intersection_maybe_complement_2nd@Base 5.32.0~rc1 - Perl__invlist_invert@Base 5.32.0~rc1 - Perl__invlist_search@Base 5.32.0~rc1 - Perl__invlist_union_maybe_complement_2nd@Base 5.32.0~rc1 - Perl__is_cur_LC_category_utf8@Base 5.32.0~rc1 - Perl__is_in_locale_category@Base 5.32.0~rc1 - Perl__is_uni_FOO@Base 5.32.0~rc1 - Perl__is_uni_perl_idcont@Base 5.32.0~rc1 - Perl__is_uni_perl_idstart@Base 5.32.0~rc1 - Perl__is_utf8_FOO@Base 5.32.0~rc1 - Perl__is_utf8_perl_idcont@Base 5.32.0~rc1 - Perl__is_utf8_perl_idstart@Base 5.32.0~rc1 - Perl__mem_collxfrm@Base 5.32.0~rc1 - Perl__new_invlist@Base 5.32.0~rc1 - Perl__new_invlist_C_array@Base 5.32.0~rc1 - Perl__setup_canned_invlist@Base 5.32.0~rc1 - Perl__to_fold_latin1@Base 5.32.0~rc1 - Perl__to_uni_fold_flags@Base 5.32.0~rc1 - Perl__to_upper_title_latin1@Base 5.32.0~rc1 - Perl__to_utf8_fold_flags@Base 5.32.0~rc1 - Perl__to_utf8_lower_flags@Base 5.32.0~rc1 - Perl__to_utf8_title_flags@Base 5.32.0~rc1 - Perl__to_utf8_upper_flags@Base 5.32.0~rc1 - Perl__utf8n_to_uvchr_msgs_helper@Base 5.32.0~rc1 - Perl__warn_problematic_locale@Base 5.32.0~rc1 - Perl_abort_execution@Base 5.32.0~rc1 - Perl_alloc_LOGOP@Base 5.32.0~rc1 - Perl_alloccopstash@Base 5.32.0~rc1 - Perl_allocmy@Base 5.32.0~rc1 - Perl_amagic_call@Base 5.32.0~rc1 - Perl_amagic_deref_call@Base 5.32.0~rc1 - Perl_amagic_is_enabled@Base 5.32.0~rc1 - Perl_any_dup@Base 5.32.0~rc1 - Perl_apply@Base 5.32.0~rc1 - Perl_apply_attrs_string@Base 5.32.0~rc1 - Perl_atfork_lock@Base 5.32.0~rc1 - Perl_atfork_unlock@Base 5.32.0~rc1 - Perl_av_arylen_p@Base 5.32.0~rc1 - Perl_av_clear@Base 5.32.0~rc1 - Perl_av_create_and_push@Base 5.32.0~rc1 - Perl_av_create_and_unshift_one@Base 5.32.0~rc1 - Perl_av_delete@Base 5.32.0~rc1 - Perl_av_exists@Base 5.32.0~rc1 - Perl_av_extend@Base 5.32.0~rc1 - Perl_av_extend_guts@Base 5.32.0~rc1 - Perl_av_fetch@Base 5.32.0~rc1 - Perl_av_fill@Base 5.32.0~rc1 - Perl_av_iter_p@Base 5.32.0~rc1 - Perl_av_len@Base 5.32.0~rc1 - Perl_av_make@Base 5.32.0~rc1 - Perl_av_nonelem@Base 5.32.0~rc1 - Perl_av_pop@Base 5.32.0~rc1 - Perl_av_push@Base 5.32.0~rc1 - Perl_av_reify@Base 5.32.0~rc1 - Perl_av_shift@Base 5.32.0~rc1 - Perl_av_store@Base 5.32.0~rc1 - Perl_av_undef@Base 5.32.0~rc1 - Perl_av_unshift@Base 5.32.0~rc1 - Perl_bind_match@Base 5.32.0~rc1 - Perl_block_end@Base 5.32.0~rc1 - Perl_block_gimme@Base 5.32.0~rc1 - Perl_block_start@Base 5.32.0~rc1 - Perl_blockhook_register@Base 5.32.0~rc1 - Perl_boot_core_PerlIO@Base 5.32.0~rc1 - Perl_boot_core_UNIVERSAL@Base 5.32.0~rc1 - Perl_boot_core_mro@Base 5.32.0~rc1 - Perl_bytes_cmp_utf8@Base 5.32.0~rc1 - Perl_bytes_from_utf8@Base 5.32.0~rc1 - Perl_bytes_from_utf8_loc@Base 5.32.0~rc1 - Perl_bytes_to_utf8@Base 5.32.0~rc1 - Perl_call_argv@Base 5.32.0~rc1 - Perl_call_atexit@Base 5.32.0~rc1 - Perl_call_list@Base 5.32.0~rc1 - Perl_call_method@Base 5.32.0~rc1 - Perl_call_pv@Base 5.32.0~rc1 - Perl_call_sv@Base 5.32.0~rc1 - Perl_caller_cx@Base 5.32.0~rc1 - Perl_calloc@Base 5.32.0~rc1 - Perl_cando@Base 5.32.0~rc1 - Perl_cast_i32@Base 5.32.0~rc1 - Perl_cast_iv@Base 5.32.0~rc1 - Perl_cast_ulong@Base 5.32.0~rc1 - Perl_cast_uv@Base 5.32.0~rc1 - Perl_check_utf8_print@Base 5.32.0~rc1 - Perl_ck_anoncode@Base 5.32.0~rc1 - Perl_ck_backtick@Base 5.32.0~rc1 - Perl_ck_bitop@Base 5.32.0~rc1 - Perl_ck_cmp@Base 5.32.0~rc1 - Perl_ck_concat@Base 5.32.0~rc1 - Perl_ck_defined@Base 5.32.0~rc1 - Perl_ck_delete@Base 5.32.0~rc1 - Perl_ck_each@Base 5.32.0~rc1 - Perl_ck_entersub_args_core@Base 5.32.0~rc1 - Perl_ck_entersub_args_list@Base 5.32.0~rc1 - Perl_ck_entersub_args_proto@Base 5.32.0~rc1 - Perl_ck_entersub_args_proto_or_list@Base 5.32.0~rc1 - Perl_ck_eof@Base 5.32.0~rc1 - Perl_ck_eval@Base 5.32.0~rc1 - Perl_ck_exec@Base 5.32.0~rc1 - Perl_ck_exists@Base 5.32.0~rc1 - Perl_ck_ftst@Base 5.32.0~rc1 - Perl_ck_fun@Base 5.32.0~rc1 - Perl_ck_glob@Base 5.32.0~rc1 - Perl_ck_grep@Base 5.32.0~rc1 - Perl_ck_index@Base 5.32.0~rc1 - Perl_ck_isa@Base 5.32.0~rc1 - Perl_ck_join@Base 5.32.0~rc1 - Perl_ck_length@Base 5.32.0~rc1 - Perl_ck_lfun@Base 5.32.0~rc1 - Perl_ck_listiob@Base 5.32.0~rc1 - Perl_ck_match@Base 5.32.0~rc1 - Perl_ck_method@Base 5.32.0~rc1 - Perl_ck_null@Base 5.32.0~rc1 - Perl_ck_open@Base 5.32.0~rc1 - Perl_ck_prototype@Base 5.32.0~rc1 - Perl_ck_readline@Base 5.32.0~rc1 - Perl_ck_refassign@Base 5.32.0~rc1 - Perl_ck_repeat@Base 5.32.0~rc1 - Perl_ck_require@Base 5.32.0~rc1 - Perl_ck_return@Base 5.32.0~rc1 - Perl_ck_rfun@Base 5.32.0~rc1 - Perl_ck_rvconst@Base 5.32.0~rc1 - Perl_ck_sassign@Base 5.32.0~rc1 - Perl_ck_select@Base 5.32.0~rc1 - Perl_ck_shift@Base 5.32.0~rc1 - Perl_ck_smartmatch@Base 5.32.0~rc1 - Perl_ck_sort@Base 5.32.0~rc1 - Perl_ck_spair@Base 5.32.0~rc1 - Perl_ck_split@Base 5.32.0~rc1 - Perl_ck_stringify@Base 5.32.0~rc1 - Perl_ck_subr@Base 5.32.0~rc1 - Perl_ck_substr@Base 5.32.0~rc1 - Perl_ck_svconst@Base 5.32.0~rc1 - Perl_ck_tell@Base 5.32.0~rc1 - Perl_ck_trunc@Base 5.32.0~rc1 - Perl_ck_warner@Base 5.32.0~rc1 - Perl_ck_warner_d@Base 5.32.0~rc1 - Perl_ckwarn@Base 5.32.0~rc1 - Perl_ckwarn_d@Base 5.32.0~rc1 - Perl_clear_defarray@Base 5.32.0~rc1 - Perl_clone_params_del@Base 5.32.0~rc1 - Perl_clone_params_new@Base 5.32.0~rc1 - Perl_closest_cop@Base 5.32.0~rc1 - Perl_cmpchain_extend@Base 5.32.0~rc1 - Perl_cmpchain_finish@Base 5.32.0~rc1 - Perl_cmpchain_start@Base 5.32.0~rc1 - Perl_cntrl_to_mnemonic@Base 5.32.0~rc1 - Perl_cop_fetch_label@Base 5.32.0~rc1 - Perl_cop_store_label@Base 5.32.0~rc1 - Perl_core_prototype@Base 5.32.0~rc1 - Perl_coresub_op@Base 5.32.0~rc1 - Perl_create_eval_scope@Base 5.32.0~rc1 - Perl_croak@Base 5.32.0~rc1 - Perl_croak_caller@Base 5.32.0~rc1 - Perl_croak_memory_wrap@Base 5.32.0~rc1 - Perl_croak_no_mem@Base 5.32.0~rc1 - Perl_croak_no_modify@Base 5.32.0~rc1 - Perl_croak_nocontext@Base 5.32.0~rc1 - Perl_croak_popstack@Base 5.32.0~rc1 - Perl_croak_sv@Base 5.32.0~rc1 - Perl_croak_xs_usage@Base 5.32.0~rc1 - Perl_csighandler1@Base 5.32.0~rc1 - Perl_csighandler3@Base 5.32.0~rc1 - Perl_csighandler@Base 5.32.0~rc1 - Perl_current_re_engine@Base 5.32.0~rc1 - Perl_custom_op_desc@Base 5.32.0~rc1 - Perl_custom_op_get_field@Base 5.32.0~rc1 - Perl_custom_op_name@Base 5.32.0~rc1 - Perl_custom_op_register@Base 5.32.0~rc1 - Perl_cv_ckproto_len_flags@Base 5.32.0~rc1 - Perl_cv_clone@Base 5.32.0~rc1 - Perl_cv_clone_into@Base 5.32.0~rc1 - Perl_cv_const_sv@Base 5.32.0~rc1 - Perl_cv_const_sv_or_av@Base 5.32.0~rc1 - Perl_cv_forget_slab@Base 5.32.0~rc1 - Perl_cv_get_call_checker@Base 5.32.0~rc1 - Perl_cv_get_call_checker_flags@Base 5.32.0~rc1 - Perl_cv_name@Base 5.32.0~rc1 - Perl_cv_set_call_checker@Base 5.32.0~rc1 - Perl_cv_set_call_checker_flags@Base 5.32.0~rc1 - Perl_cv_undef@Base 5.32.0~rc1 - Perl_cv_undef_flags@Base 5.32.0~rc1 - Perl_cvgv_from_hek@Base 5.32.0~rc1 - Perl_cvgv_set@Base 5.32.0~rc1 - Perl_cvstash_set@Base 5.32.0~rc1 - Perl_cx_dump@Base 5.32.0~rc1 - Perl_cx_dup@Base 5.32.0~rc1 - Perl_cxinc@Base 5.32.0~rc1 - Perl_deb@Base 5.32.0~rc1 - Perl_deb_nocontext@Base 5.32.0~rc1 - Perl_deb_stack_all@Base 5.32.0~rc1 - Perl_debop@Base 5.32.0~rc1 - Perl_debprofdump@Base 5.32.0~rc1 - Perl_debstack@Base 5.32.0~rc1 - Perl_debstackptrs@Base 5.32.0~rc1 - Perl_defelem_target@Base 5.32.0~rc1 - Perl_delete_eval_scope@Base 5.32.0~rc1 - Perl_delimcpy@Base 5.32.0~rc1 - Perl_delimcpy_no_escape@Base 5.32.0~rc1 - Perl_despatch_signals@Base 5.32.0~rc1 - Perl_die@Base 5.32.0~rc1 - Perl_die_nocontext@Base 5.32.0~rc1 - Perl_die_sv@Base 5.32.0~rc1 - Perl_die_unwind@Base 5.32.0~rc1 - Perl_dirp_dup@Base 5.32.0~rc1 - Perl_do_aexec5@Base 5.32.0~rc1 - Perl_do_aexec@Base 5.32.0~rc1 - Perl_do_binmode@Base 5.32.0~rc1 - Perl_do_close@Base 5.32.0~rc1 - Perl_do_dump_pad@Base 5.32.0~rc1 - Perl_do_eof@Base 5.32.0~rc1 - Perl_do_exec3@Base 5.32.0~rc1 - Perl_do_gv_dump@Base 5.32.0~rc1 - Perl_do_gvgv_dump@Base 5.32.0~rc1 - Perl_do_hv_dump@Base 5.32.0~rc1 - (arch=!hurd-any)Perl_do_ipcctl@Base 5.32.0~rc1 - (arch=!hurd-any)Perl_do_ipcget@Base 5.32.0~rc1 - Perl_do_join@Base 5.32.0~rc1 - Perl_do_kv@Base 5.32.0~rc1 - Perl_do_magic_dump@Base 5.32.0~rc1 - (arch=!hurd-any)Perl_do_msgrcv@Base 5.32.0~rc1 - (arch=!hurd-any)Perl_do_msgsnd@Base 5.32.0~rc1 - Perl_do_ncmp@Base 5.32.0~rc1 - Perl_do_op_dump@Base 5.32.0~rc1 - Perl_do_open6@Base 5.32.0~rc1 - Perl_do_open9@Base 5.32.0~rc1 - Perl_do_open@Base 5.32.0~rc1 - Perl_do_open_raw@Base 5.32.0~rc1 - Perl_do_openn@Base 5.32.0~rc1 - Perl_do_pmop_dump@Base 5.32.0~rc1 - Perl_do_print@Base 5.32.0~rc1 - Perl_do_readline@Base 5.32.0~rc1 - Perl_do_seek@Base 5.32.0~rc1 - (arch=!hurd-any)Perl_do_semop@Base 5.32.0~rc1 - (arch=!hurd-any)Perl_do_shmio@Base 5.32.0~rc1 - Perl_do_sprintf@Base 5.32.0~rc1 - Perl_do_sv_dump@Base 5.32.0~rc1 - Perl_do_sysseek@Base 5.32.0~rc1 - Perl_do_tell@Base 5.32.0~rc1 - Perl_do_trans@Base 5.32.0~rc1 - Perl_do_uniprop_match@Base 5.32.0~rc1 - Perl_do_vecget@Base 5.32.0~rc1 - Perl_do_vecset@Base 5.32.0~rc1 - Perl_do_vop@Base 5.32.0~rc1 - Perl_dofile@Base 5.32.0~rc1 - Perl_doing_taint@Base 5.32.0~rc1 - Perl_doref@Base 5.32.0~rc1 - Perl_dounwind@Base 5.32.0~rc1 - Perl_dowantarray@Base 5.32.0~rc1 - Perl_drand48_init_r@Base 5.32.0~rc1 - Perl_drand48_r@Base 5.32.0~rc1 - Perl_dump_all@Base 5.32.0~rc1 - Perl_dump_all_perl@Base 5.32.0~rc1 - Perl_dump_eval@Base 5.32.0~rc1 - Perl_dump_form@Base 5.32.0~rc1 - Perl_dump_indent@Base 5.32.0~rc1 - Perl_dump_packsubs@Base 5.32.0~rc1 - Perl_dump_packsubs_perl@Base 5.32.0~rc1 - Perl_dump_sub@Base 5.32.0~rc1 - Perl_dump_sub_perl@Base 5.32.0~rc1 - Perl_dump_vindent@Base 5.32.0~rc1 - Perl_dup_warnings@Base 5.32.0~rc1 - Perl_emulate_cop_io@Base 5.32.0~rc1 - Perl_eval_pv@Base 5.32.0~rc1 - Perl_eval_sv@Base 5.32.0~rc1 - Perl_fbm_compile@Base 5.32.0~rc1 - Perl_fbm_instr@Base 5.32.0~rc1 - Perl_filter_add@Base 5.32.0~rc1 - Perl_filter_del@Base 5.32.0~rc1 - Perl_filter_read@Base 5.32.0~rc1 - Perl_finalize_optree@Base 5.32.0~rc1 - Perl_find_lexical_cv@Base 5.32.0~rc1 - Perl_find_runcv@Base 5.32.0~rc1 - Perl_find_runcv_where@Base 5.32.0~rc1 - Perl_find_rundefsv@Base 5.32.0~rc1 - Perl_find_rundefsvoffset@Base 5.32.0~rc1 - Perl_find_script@Base 5.32.0~rc1 - Perl_foldEQ_utf8_flags@Base 5.32.0~rc1 - Perl_form@Base 5.32.0~rc1 - Perl_form_alien_digit_msg@Base 5.32.0~rc1 - Perl_form_cp_too_large_msg@Base 5.32.0~rc1 - Perl_form_nocontext@Base 5.32.0~rc1 - Perl_fp_dup@Base 5.32.0~rc1 - Perl_fprintf_nocontext@Base 5.32.0~rc1 - Perl_free_tied_hv_pool@Base 5.32.0~rc1 - Perl_free_tmps@Base 5.32.0~rc1 - Perl_get_and_check_backslash_N_name@Base 5.32.0~rc1 - Perl_get_av@Base 5.32.0~rc1 - Perl_get_context@Base 5.32.0~rc1 - Perl_get_cv@Base 5.32.0~rc1 - Perl_get_cvn_flags@Base 5.32.0~rc1 - Perl_get_db_sub@Base 5.32.0~rc1 - Perl_get_deprecated_property_msg@Base 5.32.0~rc1 - Perl_get_hash_seed@Base 5.32.0~rc1 - Perl_get_hv@Base 5.32.0~rc1 - Perl_get_no_modify@Base 5.32.0~rc1 - Perl_get_op_descs@Base 5.32.0~rc1 - Perl_get_op_names@Base 5.32.0~rc1 - Perl_get_opargs@Base 5.32.0~rc1 - Perl_get_ppaddr@Base 5.32.0~rc1 - Perl_get_prop_definition@Base 5.32.0~rc1 - Perl_get_prop_values@Base 5.32.0~rc1 - Perl_get_re_arg@Base 5.32.0~rc1 - Perl_get_regclass_nonbitmap_data@Base 5.32.0~rc1 - Perl_get_sv@Base 5.32.0~rc1 - Perl_get_vtbl@Base 5.32.0~rc1 - Perl_getcwd_sv@Base 5.32.0~rc1 - Perl_getenv_len@Base 5.32.0~rc1 - Perl_gmtime64_r@Base 5.32.0~rc1 - Perl_gp_dup@Base 5.32.0~rc1 - Perl_gp_free@Base 5.32.0~rc1 - Perl_gp_ref@Base 5.32.0~rc1 - Perl_grok_atoUV@Base 5.32.0~rc1 - Perl_grok_bin@Base 5.32.0~rc1 - Perl_grok_bin_oct_hex@Base 5.32.0~rc1 - Perl_grok_bslash_c@Base 5.32.0~rc1 - Perl_grok_bslash_o@Base 5.32.0~rc1 - Perl_grok_bslash_x@Base 5.32.0~rc1 - Perl_grok_hex@Base 5.32.0~rc1 - Perl_grok_infnan@Base 5.32.0~rc1 - Perl_grok_number@Base 5.32.0~rc1 - Perl_grok_number_flags@Base 5.32.0~rc1 - Perl_grok_numeric_radix@Base 5.32.0~rc1 - Perl_grok_oct@Base 5.32.0~rc1 - Perl_gv_AVadd@Base 5.32.0~rc1 - Perl_gv_HVadd@Base 5.32.0~rc1 - Perl_gv_IOadd@Base 5.32.0~rc1 - Perl_gv_SVadd@Base 5.32.0~rc1 - Perl_gv_add_by_type@Base 5.32.0~rc1 - Perl_gv_autoload_pv@Base 5.32.0~rc1 - Perl_gv_autoload_pvn@Base 5.32.0~rc1 - Perl_gv_autoload_sv@Base 5.32.0~rc1 - Perl_gv_check@Base 5.32.0~rc1 - Perl_gv_const_sv@Base 5.32.0~rc1 - Perl_gv_dump@Base 5.32.0~rc1 - Perl_gv_efullname3@Base 5.32.0~rc1 - Perl_gv_efullname4@Base 5.32.0~rc1 - Perl_gv_efullname@Base 5.32.0~rc1 - Perl_gv_fetchfile@Base 5.32.0~rc1 - Perl_gv_fetchfile_flags@Base 5.32.0~rc1 - Perl_gv_fetchmeth_pv@Base 5.32.0~rc1 - Perl_gv_fetchmeth_pv_autoload@Base 5.32.0~rc1 - Perl_gv_fetchmeth_pvn@Base 5.32.0~rc1 - Perl_gv_fetchmeth_pvn_autoload@Base 5.32.0~rc1 - Perl_gv_fetchmeth_sv@Base 5.32.0~rc1 - Perl_gv_fetchmeth_sv_autoload@Base 5.32.0~rc1 - Perl_gv_fetchmethod@Base 5.32.0~rc1 - Perl_gv_fetchmethod_autoload@Base 5.32.0~rc1 - Perl_gv_fetchmethod_pv_flags@Base 5.32.0~rc1 - Perl_gv_fetchmethod_pvn_flags@Base 5.32.0~rc1 - Perl_gv_fetchmethod_sv_flags@Base 5.32.0~rc1 - Perl_gv_fetchpv@Base 5.32.0~rc1 - Perl_gv_fetchpvn_flags@Base 5.32.0~rc1 - Perl_gv_fetchsv@Base 5.32.0~rc1 - Perl_gv_fullname3@Base 5.32.0~rc1 - Perl_gv_fullname4@Base 5.32.0~rc1 - Perl_gv_fullname@Base 5.32.0~rc1 - Perl_gv_handler@Base 5.32.0~rc1 - Perl_gv_init_pv@Base 5.32.0~rc1 - Perl_gv_init_pvn@Base 5.32.0~rc1 - Perl_gv_init_sv@Base 5.32.0~rc1 - Perl_gv_name_set@Base 5.32.0~rc1 - Perl_gv_override@Base 5.32.0~rc1 - Perl_gv_setref@Base 5.32.0~rc1 - Perl_gv_stashpv@Base 5.32.0~rc1 - Perl_gv_stashpvn@Base 5.32.0~rc1 - Perl_gv_stashsv@Base 5.32.0~rc1 - Perl_gv_stashsvpvn_cached@Base 5.32.0~rc1 - Perl_gv_try_downgrade@Base 5.32.0~rc1 - Perl_he_dup@Base 5.32.0~rc1 - Perl_hek_dup@Base 5.32.0~rc1 - Perl_hfree_next_entry@Base 5.32.0~rc1 - Perl_huge@Base 5.32.0~rc1 - Perl_hv_backreferences_p@Base 5.32.0~rc1 - Perl_hv_bucket_ratio@Base 5.32.0~rc1 - Perl_hv_clear@Base 5.32.0~rc1 - Perl_hv_clear_placeholders@Base 5.32.0~rc1 - Perl_hv_common@Base 5.32.0~rc1 - Perl_hv_common_key_len@Base 5.32.0~rc1 - Perl_hv_copy_hints_hv@Base 5.32.0~rc1 - Perl_hv_delayfree_ent@Base 5.32.0~rc1 - Perl_hv_delete@Base 5.32.0~rc1 - Perl_hv_delete_ent@Base 5.32.0~rc1 - Perl_hv_eiter_p@Base 5.32.0~rc1 - Perl_hv_eiter_set@Base 5.32.0~rc1 - Perl_hv_ename_add@Base 5.32.0~rc1 - Perl_hv_ename_delete@Base 5.32.0~rc1 - Perl_hv_exists@Base 5.32.0~rc1 - Perl_hv_exists_ent@Base 5.32.0~rc1 - Perl_hv_fetch@Base 5.32.0~rc1 - Perl_hv_fetch_ent@Base 5.32.0~rc1 - Perl_hv_fill@Base 5.32.0~rc1 - Perl_hv_free_ent@Base 5.32.0~rc1 - Perl_hv_iterinit@Base 5.32.0~rc1 - Perl_hv_iterkey@Base 5.32.0~rc1 - Perl_hv_iterkeysv@Base 5.32.0~rc1 - Perl_hv_iternext@Base 5.32.0~rc1 - Perl_hv_iternext_flags@Base 5.32.0~rc1 - Perl_hv_iternextsv@Base 5.32.0~rc1 - Perl_hv_iterval@Base 5.32.0~rc1 - Perl_hv_kill_backrefs@Base 5.32.0~rc1 - Perl_hv_ksplit@Base 5.32.0~rc1 - Perl_hv_magic@Base 5.32.0~rc1 - Perl_hv_name_set@Base 5.32.0~rc1 - Perl_hv_placeholders_get@Base 5.32.0~rc1 - Perl_hv_placeholders_p@Base 5.32.0~rc1 - Perl_hv_placeholders_set@Base 5.32.0~rc1 - Perl_hv_pushkv@Base 5.32.0~rc1 - Perl_hv_rand_set@Base 5.32.0~rc1 - Perl_hv_riter_p@Base 5.32.0~rc1 - Perl_hv_riter_set@Base 5.32.0~rc1 - Perl_hv_scalar@Base 5.32.0~rc1 - Perl_hv_store@Base 5.32.0~rc1 - Perl_hv_store_ent@Base 5.32.0~rc1 - Perl_hv_store_flags@Base 5.32.0~rc1 - Perl_hv_undef_flags@Base 5.32.0~rc1 - Perl_init_argv_symbols@Base 5.32.0~rc1 - Perl_init_constants@Base 5.32.0~rc1 - Perl_init_dbargs@Base 5.32.0~rc1 - Perl_init_debugger@Base 5.32.0~rc1 - Perl_init_i18nl10n@Base 5.32.0~rc1 - Perl_init_i18nl14n@Base 5.32.0~rc1 - Perl_init_named_cv@Base 5.32.0~rc1 - Perl_init_stacks@Base 5.32.0~rc1 - Perl_init_tm@Base 5.32.0~rc1 - Perl_init_uniprops@Base 5.32.0~rc1 - Perl_instr@Base 5.32.0~rc1 - Perl_intro_my@Base 5.32.0~rc1 - Perl_invert@Base 5.32.0~rc1 - Perl_invlist_clone@Base 5.32.0~rc1 - Perl_invmap_dump@Base 5.32.0~rc1 - Perl_io_close@Base 5.32.0~rc1 - Perl_isFOO_lc@Base 5.32.0~rc1 - Perl_isSCRIPT_RUN@Base 5.32.0~rc1 - Perl_is_grapheme@Base 5.32.0~rc1 - Perl_is_lvalue_sub@Base 5.32.0~rc1 - Perl_is_utf8_char@Base 5.32.0~rc1 - Perl_is_utf8_char_buf@Base 5.32.0~rc1 - Perl_is_utf8_char_helper@Base 5.32.0~rc1 - Perl_is_utf8_string_loc@Base 5.32.0~rc1 - Perl_isinfnan@Base 5.32.0~rc1 - Perl_isinfnansv@Base 5.32.0~rc1 - Perl_jmaybe@Base 5.32.0~rc1 - Perl_keyword@Base 5.32.0~rc1 - Perl_keyword_plugin_standard@Base 5.32.0~rc1 - Perl_langinfo@Base 5.32.0~rc1 - Perl_leave_adjust_stacks@Base 5.32.0~rc1 - Perl_leave_scope@Base 5.32.0~rc1 - Perl_lex_bufutf8@Base 5.32.0~rc1 - Perl_lex_discard_to@Base 5.32.0~rc1 - Perl_lex_grow_linestr@Base 5.32.0~rc1 - Perl_lex_next_chunk@Base 5.32.0~rc1 - Perl_lex_peek_unichar@Base 5.32.0~rc1 - Perl_lex_read_space@Base 5.32.0~rc1 - Perl_lex_read_to@Base 5.32.0~rc1 - Perl_lex_read_unichar@Base 5.32.0~rc1 - Perl_lex_start@Base 5.32.0~rc1 - Perl_lex_stuff_pv@Base 5.32.0~rc1 - Perl_lex_stuff_pvn@Base 5.32.0~rc1 - Perl_lex_stuff_sv@Base 5.32.0~rc1 - Perl_lex_unstuff@Base 5.32.0~rc1 - Perl_list@Base 5.32.0~rc1 - Perl_load_charnames@Base 5.32.0~rc1 - Perl_load_module@Base 5.32.0~rc1 - Perl_load_module_nocontext@Base 5.32.0~rc1 - Perl_localize@Base 5.32.0~rc1 - Perl_localtime64_r@Base 5.32.0~rc1 - Perl_looks_like_number@Base 5.32.0~rc1 - Perl_magic_clear_all_env@Base 5.32.0~rc1 - Perl_magic_cleararylen_p@Base 5.32.0~rc1 - Perl_magic_clearenv@Base 5.32.0~rc1 - Perl_magic_clearhint@Base 5.32.0~rc1 - Perl_magic_clearhints@Base 5.32.0~rc1 - Perl_magic_clearisa@Base 5.32.0~rc1 - Perl_magic_clearpack@Base 5.32.0~rc1 - Perl_magic_clearsig@Base 5.32.0~rc1 - Perl_magic_copycallchecker@Base 5.32.0~rc1 - Perl_magic_dump@Base 5.32.0~rc1 - Perl_magic_existspack@Base 5.32.0~rc1 - Perl_magic_freearylen_p@Base 5.32.0~rc1 - Perl_magic_freeovrld@Base 5.32.0~rc1 - Perl_magic_get@Base 5.32.0~rc1 - Perl_magic_getarylen@Base 5.32.0~rc1 - Perl_magic_getdebugvar@Base 5.32.0~rc1 - Perl_magic_getdefelem@Base 5.32.0~rc1 - Perl_magic_getnkeys@Base 5.32.0~rc1 - Perl_magic_getpack@Base 5.32.0~rc1 - Perl_magic_getpos@Base 5.32.0~rc1 - Perl_magic_getsig@Base 5.32.0~rc1 - Perl_magic_getsubstr@Base 5.32.0~rc1 - Perl_magic_gettaint@Base 5.32.0~rc1 - Perl_magic_getuvar@Base 5.32.0~rc1 - Perl_magic_getvec@Base 5.32.0~rc1 - Perl_magic_killbackrefs@Base 5.32.0~rc1 - Perl_magic_methcall@Base 5.32.0~rc1 - Perl_magic_nextpack@Base 5.32.0~rc1 - Perl_magic_regdata_cnt@Base 5.32.0~rc1 - Perl_magic_regdatum_get@Base 5.32.0~rc1 - Perl_magic_regdatum_set@Base 5.32.0~rc1 - Perl_magic_scalarpack@Base 5.32.0~rc1 - Perl_magic_set@Base 5.32.0~rc1 - Perl_magic_set_all_env@Base 5.32.0~rc1 - Perl_magic_setarylen@Base 5.32.0~rc1 - Perl_magic_setcollxfrm@Base 5.32.0~rc1 - Perl_magic_setdbline@Base 5.32.0~rc1 - Perl_magic_setdebugvar@Base 5.32.0~rc1 - Perl_magic_setdefelem@Base 5.32.0~rc1 - Perl_magic_setenv@Base 5.32.0~rc1 - Perl_magic_sethint@Base 5.32.0~rc1 - Perl_magic_setisa@Base 5.32.0~rc1 - Perl_magic_setlvref@Base 5.32.0~rc1 - Perl_magic_setmglob@Base 5.32.0~rc1 - Perl_magic_setnkeys@Base 5.32.0~rc1 - Perl_magic_setnonelem@Base 5.32.0~rc1 - Perl_magic_setpack@Base 5.32.0~rc1 - Perl_magic_setpos@Base 5.32.0~rc1 - Perl_magic_setregexp@Base 5.32.0~rc1 - Perl_magic_setsig@Base 5.32.0~rc1 - Perl_magic_setsubstr@Base 5.32.0~rc1 - Perl_magic_settaint@Base 5.32.0~rc1 - Perl_magic_setutf8@Base 5.32.0~rc1 - Perl_magic_setuvar@Base 5.32.0~rc1 - Perl_magic_setvec@Base 5.32.0~rc1 - Perl_magic_sizepack@Base 5.32.0~rc1 - Perl_magic_wipepack@Base 5.32.0~rc1 - Perl_malloc@Base 5.32.0~rc1 - Perl_markstack_grow@Base 5.32.0~rc1 - Perl_mem_collxfrm@Base 5.32.0~rc1 - Perl_mess@Base 5.32.0~rc1 - Perl_mess_nocontext@Base 5.32.0~rc1 - Perl_mess_sv@Base 5.32.0~rc1 - Perl_mfree@Base 5.32.0~rc1 - Perl_mg_clear@Base 5.32.0~rc1 - Perl_mg_copy@Base 5.32.0~rc1 - Perl_mg_dup@Base 5.32.0~rc1 - Perl_mg_find@Base 5.32.0~rc1 - Perl_mg_find_mglob@Base 5.32.0~rc1 - Perl_mg_findext@Base 5.32.0~rc1 - Perl_mg_free@Base 5.32.0~rc1 - Perl_mg_free_type@Base 5.32.0~rc1 - Perl_mg_freeext@Base 5.32.0~rc1 - Perl_mg_get@Base 5.32.0~rc1 - Perl_mg_length@Base 5.32.0~rc1 - Perl_mg_localize@Base 5.32.0~rc1 - Perl_mg_magical@Base 5.32.0~rc1 - Perl_mg_set@Base 5.32.0~rc1 - Perl_mg_size@Base 5.32.0~rc1 - Perl_mini_mktime@Base 5.32.0~rc1 - Perl_mode_from_discipline@Base 5.32.0~rc1 - Perl_more_bodies@Base 5.32.0~rc1 - Perl_moreswitches@Base 5.32.0~rc1 - Perl_mro_get_from_name@Base 5.32.0~rc1 - Perl_mro_get_linear_isa@Base 5.32.0~rc1 - Perl_mro_get_private_data@Base 5.32.0~rc1 - Perl_mro_isa_changed_in@Base 5.32.0~rc1 - Perl_mro_meta_dup@Base 5.32.0~rc1 - Perl_mro_meta_init@Base 5.32.0~rc1 - Perl_mro_method_changed_in@Base 5.32.0~rc1 - Perl_mro_package_moved@Base 5.32.0~rc1 - Perl_mro_register@Base 5.32.0~rc1 - Perl_mro_set_mro@Base 5.32.0~rc1 - Perl_mro_set_private_data@Base 5.32.0~rc1 - Perl_multiconcat_stringify@Base 5.32.0~rc1 - Perl_multideref_stringify@Base 5.32.0~rc1 - Perl_my_atof2@Base 5.32.0~rc1 - Perl_my_atof3@Base 5.32.0~rc1 - Perl_my_atof@Base 5.32.0~rc1 - Perl_my_attrs@Base 5.32.0~rc1 - Perl_my_clearenv@Base 5.32.0~rc1 - Perl_my_cxt_init@Base 5.32.0~rc1 - Perl_my_dirfd@Base 5.32.0~rc1 - Perl_my_exit@Base 5.32.0~rc1 - Perl_my_failure_exit@Base 5.32.0~rc1 - Perl_my_fflush_all@Base 5.32.0~rc1 - Perl_my_fork@Base 5.32.0~rc1 - Perl_my_lstat@Base 5.32.0~rc1 - Perl_my_lstat_flags@Base 5.32.0~rc1 - Perl_my_mkostemp_cloexec@Base 5.32.0~rc1 - Perl_my_mkstemp_cloexec@Base 5.32.0~rc1 - Perl_my_pclose@Base 5.32.0~rc1 - Perl_my_popen@Base 5.32.0~rc1 - Perl_my_popen_list@Base 5.32.0~rc1 - Perl_my_setenv@Base 5.32.0~rc1 - Perl_my_snprintf@Base 5.32.0~rc1 - Perl_my_socketpair@Base 5.32.0~rc1 - Perl_my_stat@Base 5.32.0~rc1 - Perl_my_stat_flags@Base 5.32.0~rc1 - Perl_my_strerror@Base 5.32.0~rc1 - Perl_my_strftime@Base 5.32.0~rc1 - Perl_my_strlcat@Base 5.32.0~rc1 - Perl_my_strlcpy@Base 5.32.0~rc1 - Perl_my_strtod@Base 5.32.0~rc1 - Perl_my_unexec@Base 5.32.0~rc1 - Perl_my_vsnprintf@Base 5.32.0~rc1 - Perl_newANONATTRSUB@Base 5.32.0~rc1 - Perl_newANONHASH@Base 5.32.0~rc1 - Perl_newANONLIST@Base 5.32.0~rc1 - Perl_newANONSUB@Base 5.32.0~rc1 - Perl_newASSIGNOP@Base 5.32.0~rc1 - Perl_newATTRSUB_x@Base 5.32.0~rc1 - Perl_newAV@Base 5.32.0~rc1 - Perl_newAVREF@Base 5.32.0~rc1 - Perl_newBINOP@Base 5.32.0~rc1 - Perl_newCONDOP@Base 5.32.0~rc1 - Perl_newCONSTSUB@Base 5.32.0~rc1 - Perl_newCONSTSUB_flags@Base 5.32.0~rc1 - Perl_newCVREF@Base 5.32.0~rc1 - Perl_newDEFSVOP@Base 5.32.0~rc1 - Perl_newFORM@Base 5.32.0~rc1 - Perl_newFOROP@Base 5.32.0~rc1 - Perl_newGIVENOP@Base 5.32.0~rc1 - Perl_newGP@Base 5.32.0~rc1 - Perl_newGVOP@Base 5.32.0~rc1 - Perl_newGVREF@Base 5.32.0~rc1 - Perl_newGVgen_flags@Base 5.32.0~rc1 - Perl_newHV@Base 5.32.0~rc1 - Perl_newHVREF@Base 5.32.0~rc1 - Perl_newHVhv@Base 5.32.0~rc1 - Perl_newIO@Base 5.32.0~rc1 - Perl_newLISTOP@Base 5.32.0~rc1 - Perl_newLOGOP@Base 5.32.0~rc1 - Perl_newLOOPEX@Base 5.32.0~rc1 - Perl_newLOOPOP@Base 5.32.0~rc1 - Perl_newMETHOP@Base 5.32.0~rc1 - Perl_newMETHOP_named@Base 5.32.0~rc1 - Perl_newMYSUB@Base 5.32.0~rc1 - Perl_newNULLLIST@Base 5.32.0~rc1 - Perl_newOP@Base 5.32.0~rc1 - Perl_newPADNAMELIST@Base 5.32.0~rc1 - Perl_newPADNAMEouter@Base 5.32.0~rc1 - Perl_newPADNAMEpvn@Base 5.32.0~rc1 - Perl_newPADOP@Base 5.32.0~rc1 - Perl_newPMOP@Base 5.32.0~rc1 - Perl_newPROG@Base 5.32.0~rc1 - Perl_newPVOP@Base 5.32.0~rc1 - Perl_newRANGE@Base 5.32.0~rc1 - Perl_newRV@Base 5.32.0~rc1 - Perl_newRV_noinc@Base 5.32.0~rc1 - Perl_newSLICEOP@Base 5.32.0~rc1 - Perl_newSTATEOP@Base 5.32.0~rc1 - Perl_newSTUB@Base 5.32.0~rc1 - Perl_newSUB@Base 5.32.0~rc1 - Perl_newSV@Base 5.32.0~rc1 - Perl_newSVOP@Base 5.32.0~rc1 - Perl_newSVREF@Base 5.32.0~rc1 - Perl_newSV_type@Base 5.32.0~rc1 - Perl_newSVavdefelem@Base 5.32.0~rc1 - Perl_newSVhek@Base 5.32.0~rc1 - Perl_newSViv@Base 5.32.0~rc1 - Perl_newSVnv@Base 5.32.0~rc1 - Perl_newSVpv@Base 5.32.0~rc1 - Perl_newSVpv_share@Base 5.32.0~rc1 - Perl_newSVpvf@Base 5.32.0~rc1 - Perl_newSVpvf_nocontext@Base 5.32.0~rc1 - Perl_newSVpvn@Base 5.32.0~rc1 - Perl_newSVpvn_flags@Base 5.32.0~rc1 - Perl_newSVpvn_share@Base 5.32.0~rc1 - Perl_newSVrv@Base 5.32.0~rc1 - Perl_newSVsv@Base 5.32.0~rc1 - Perl_newSVsv_flags@Base 5.32.0~rc1 - Perl_newSVuv@Base 5.32.0~rc1 - Perl_newUNOP@Base 5.32.0~rc1 - Perl_newUNOP_AUX@Base 5.32.0~rc1 - Perl_newWHENOP@Base 5.32.0~rc1 - Perl_newWHILEOP@Base 5.32.0~rc1 - Perl_newXS@Base 5.32.0~rc1 - Perl_newXS_deffile@Base 5.32.0~rc1 - Perl_newXS_flags@Base 5.32.0~rc1 - Perl_newXS_len_flags@Base 5.32.0~rc1 - Perl_new_stackinfo@Base 5.32.0~rc1 - Perl_new_version@Base 5.32.0~rc1 - Perl_new_warnings_bitfield@Base 5.32.0~rc1 - Perl_nextargv@Base 5.32.0~rc1 - Perl_ninstr@Base 5.32.0~rc1 - Perl_noperl_die@Base 5.32.0~rc1 - Perl_nothreadhook@Base 5.32.0~rc1 - Perl_notify_parser_that_changed_to_utf8@Base 5.32.0~rc1 - Perl_oopsAV@Base 5.32.0~rc1 - Perl_oopsHV@Base 5.32.0~rc1 - Perl_op_append_elem@Base 5.32.0~rc1 - Perl_op_append_list@Base 5.32.0~rc1 - Perl_op_class@Base 5.32.0~rc1 - Perl_op_clear@Base 5.32.0~rc1 - Perl_op_contextualize@Base 5.32.0~rc1 - Perl_op_convert_list@Base 5.32.0~rc1 - Perl_op_dump@Base 5.32.0~rc1 - Perl_op_free@Base 5.32.0~rc1 - Perl_op_linklist@Base 5.32.0~rc1 - Perl_op_lvalue_flags@Base 5.32.0~rc1 - Perl_op_null@Base 5.32.0~rc1 - Perl_op_parent@Base 5.32.0~rc1 - Perl_op_prepend_elem@Base 5.32.0~rc1 - Perl_op_refcnt_lock@Base 5.32.0~rc1 - Perl_op_refcnt_unlock@Base 5.32.0~rc1 - Perl_op_scope@Base 5.32.0~rc1 - Perl_op_sibling_splice@Base 5.32.0~rc1 - Perl_op_unscope@Base 5.32.0~rc1 - Perl_opslab_force_free@Base 5.32.0~rc1 - Perl_opslab_free@Base 5.32.0~rc1 - Perl_opslab_free_nopad@Base 5.32.0~rc1 - Perl_optimize_optree@Base 5.32.0~rc1 - Perl_pack_cat@Base 5.32.0~rc1 - Perl_package@Base 5.32.0~rc1 - Perl_package_version@Base 5.32.0~rc1 - Perl_packlist@Base 5.32.0~rc1 - Perl_pad_add_anon@Base 5.32.0~rc1 - Perl_pad_add_name_pv@Base 5.32.0~rc1 - Perl_pad_add_name_pvn@Base 5.32.0~rc1 - Perl_pad_add_name_sv@Base 5.32.0~rc1 - Perl_pad_add_weakref@Base 5.32.0~rc1 - Perl_pad_alloc@Base 5.32.0~rc1 - Perl_pad_block_start@Base 5.32.0~rc1 - Perl_pad_compname_type@Base 5.32.0~rc1 - Perl_pad_findmy_pv@Base 5.32.0~rc1 - Perl_pad_findmy_pvn@Base 5.32.0~rc1 - Perl_pad_findmy_sv@Base 5.32.0~rc1 - Perl_pad_fixup_inner_anons@Base 5.32.0~rc1 - Perl_pad_free@Base 5.32.0~rc1 - Perl_pad_leavemy@Base 5.32.0~rc1 - Perl_pad_new@Base 5.32.0~rc1 - Perl_pad_push@Base 5.32.0~rc1 - Perl_pad_swipe@Base 5.32.0~rc1 - Perl_pad_tidy@Base 5.32.0~rc1 - Perl_padlist_dup@Base 5.32.0~rc1 - Perl_padlist_store@Base 5.32.0~rc1 - Perl_padname_dup@Base 5.32.0~rc1 - Perl_padname_free@Base 5.32.0~rc1 - Perl_padnamelist_dup@Base 5.32.0~rc1 - Perl_padnamelist_fetch@Base 5.32.0~rc1 - Perl_padnamelist_free@Base 5.32.0~rc1 - Perl_padnamelist_store@Base 5.32.0~rc1 - Perl_parse_arithexpr@Base 5.32.0~rc1 - Perl_parse_barestmt@Base 5.32.0~rc1 - Perl_parse_block@Base 5.32.0~rc1 - Perl_parse_fullexpr@Base 5.32.0~rc1 - Perl_parse_fullstmt@Base 5.32.0~rc1 - Perl_parse_label@Base 5.32.0~rc1 - Perl_parse_listexpr@Base 5.32.0~rc1 - Perl_parse_stmtseq@Base 5.32.0~rc1 - Perl_parse_subsignature@Base 5.32.0~rc1 - Perl_parse_termexpr@Base 5.32.0~rc1 - Perl_parse_unicode_opts@Base 5.32.0~rc1 - Perl_parser_dup@Base 5.32.0~rc1 - Perl_parser_free@Base 5.32.0~rc1 - Perl_parser_free_nexttoke_ops@Base 5.32.0~rc1 - Perl_peep@Base 5.32.0~rc1 - Perl_perly_sighandler@Base 5.32.0~rc1 - Perl_pmop_dump@Base 5.32.0~rc1 - Perl_pmruntime@Base 5.32.0~rc1 - Perl_pop_scope@Base 5.32.0~rc1 - Perl_populate_isa@Base 5.32.0~rc1 - Perl_pp_aassign@Base 5.32.0~rc1 - Perl_pp_abs@Base 5.32.0~rc1 - Perl_pp_accept@Base 5.32.0~rc1 - Perl_pp_add@Base 5.32.0~rc1 - Perl_pp_aeach@Base 5.32.0~rc1 - Perl_pp_aelem@Base 5.32.0~rc1 - Perl_pp_aelemfast@Base 5.32.0~rc1 - Perl_pp_akeys@Base 5.32.0~rc1 - Perl_pp_alarm@Base 5.32.0~rc1 - Perl_pp_and@Base 5.32.0~rc1 - Perl_pp_anoncode@Base 5.32.0~rc1 - Perl_pp_anonconst@Base 5.32.0~rc1 - Perl_pp_anonhash@Base 5.32.0~rc1 - Perl_pp_anonlist@Base 5.32.0~rc1 - Perl_pp_argcheck@Base 5.32.0~rc1 - Perl_pp_argdefelem@Base 5.32.0~rc1 - Perl_pp_argelem@Base 5.32.0~rc1 - Perl_pp_aslice@Base 5.32.0~rc1 - Perl_pp_atan2@Base 5.32.0~rc1 - Perl_pp_av2arylen@Base 5.32.0~rc1 - Perl_pp_avhvswitch@Base 5.32.0~rc1 - Perl_pp_backtick@Base 5.32.0~rc1 - Perl_pp_bind@Base 5.32.0~rc1 - Perl_pp_binmode@Base 5.32.0~rc1 - Perl_pp_bit_and@Base 5.32.0~rc1 - Perl_pp_bit_or@Base 5.32.0~rc1 - Perl_pp_bless@Base 5.32.0~rc1 - Perl_pp_break@Base 5.32.0~rc1 - Perl_pp_caller@Base 5.32.0~rc1 - Perl_pp_chdir@Base 5.32.0~rc1 - Perl_pp_chop@Base 5.32.0~rc1 - Perl_pp_chown@Base 5.32.0~rc1 - Perl_pp_chr@Base 5.32.0~rc1 - Perl_pp_chroot@Base 5.32.0~rc1 - Perl_pp_clonecv@Base 5.32.0~rc1 - Perl_pp_close@Base 5.32.0~rc1 - Perl_pp_closedir@Base 5.32.0~rc1 - Perl_pp_cmpchain_and@Base 5.32.0~rc1 - Perl_pp_cmpchain_dup@Base 5.32.0~rc1 - Perl_pp_complement@Base 5.32.0~rc1 - Perl_pp_concat@Base 5.32.0~rc1 - Perl_pp_cond_expr@Base 5.32.0~rc1 - Perl_pp_const@Base 5.32.0~rc1 - Perl_pp_continue@Base 5.32.0~rc1 - Perl_pp_coreargs@Base 5.32.0~rc1 - Perl_pp_crypt@Base 5.32.0~rc1 - Perl_pp_dbmopen@Base 5.32.0~rc1 - Perl_pp_dbstate@Base 5.32.0~rc1 - Perl_pp_defined@Base 5.32.0~rc1 - Perl_pp_delete@Base 5.32.0~rc1 - Perl_pp_die@Base 5.32.0~rc1 - Perl_pp_divide@Base 5.32.0~rc1 - Perl_pp_each@Base 5.32.0~rc1 - Perl_pp_ehostent@Base 5.32.0~rc1 - Perl_pp_enter@Base 5.32.0~rc1 - Perl_pp_entereval@Base 5.32.0~rc1 - Perl_pp_entergiven@Base 5.32.0~rc1 - Perl_pp_enteriter@Base 5.32.0~rc1 - Perl_pp_enterloop@Base 5.32.0~rc1 - Perl_pp_entersub@Base 5.32.0~rc1 - Perl_pp_entertry@Base 5.32.0~rc1 - Perl_pp_enterwhen@Base 5.32.0~rc1 - Perl_pp_enterwrite@Base 5.32.0~rc1 - Perl_pp_eof@Base 5.32.0~rc1 - Perl_pp_eq@Base 5.32.0~rc1 - Perl_pp_exec@Base 5.32.0~rc1 - Perl_pp_exists@Base 5.32.0~rc1 - Perl_pp_exit@Base 5.32.0~rc1 - Perl_pp_fc@Base 5.32.0~rc1 - Perl_pp_fileno@Base 5.32.0~rc1 - Perl_pp_flip@Base 5.32.0~rc1 - Perl_pp_flock@Base 5.32.0~rc1 - Perl_pp_flop@Base 5.32.0~rc1 - Perl_pp_fork@Base 5.32.0~rc1 - Perl_pp_formline@Base 5.32.0~rc1 - Perl_pp_ftis@Base 5.32.0~rc1 - Perl_pp_ftlink@Base 5.32.0~rc1 - Perl_pp_ftrowned@Base 5.32.0~rc1 - Perl_pp_ftrread@Base 5.32.0~rc1 - Perl_pp_fttext@Base 5.32.0~rc1 - Perl_pp_fttty@Base 5.32.0~rc1 - Perl_pp_ge@Base 5.32.0~rc1 - Perl_pp_gelem@Base 5.32.0~rc1 - Perl_pp_getc@Base 5.32.0~rc1 - Perl_pp_getlogin@Base 5.32.0~rc1 - Perl_pp_getpeername@Base 5.32.0~rc1 - Perl_pp_getpgrp@Base 5.32.0~rc1 - Perl_pp_getppid@Base 5.32.0~rc1 - Perl_pp_getpriority@Base 5.32.0~rc1 - Perl_pp_ggrent@Base 5.32.0~rc1 - Perl_pp_ghostent@Base 5.32.0~rc1 - Perl_pp_glob@Base 5.32.0~rc1 - Perl_pp_gmtime@Base 5.32.0~rc1 - Perl_pp_gnetent@Base 5.32.0~rc1 - Perl_pp_goto@Base 5.32.0~rc1 - Perl_pp_gprotoent@Base 5.32.0~rc1 - Perl_pp_gpwent@Base 5.32.0~rc1 - Perl_pp_grepstart@Base 5.32.0~rc1 - Perl_pp_grepwhile@Base 5.32.0~rc1 - Perl_pp_gservent@Base 5.32.0~rc1 - Perl_pp_gt@Base 5.32.0~rc1 - Perl_pp_gv@Base 5.32.0~rc1 - Perl_pp_gvsv@Base 5.32.0~rc1 - Perl_pp_helem@Base 5.32.0~rc1 - Perl_pp_hintseval@Base 5.32.0~rc1 - Perl_pp_hslice@Base 5.32.0~rc1 - Perl_pp_i_add@Base 5.32.0~rc1 - Perl_pp_i_divide@Base 5.32.0~rc1 - Perl_pp_i_eq@Base 5.32.0~rc1 - Perl_pp_i_ge@Base 5.32.0~rc1 - Perl_pp_i_gt@Base 5.32.0~rc1 - Perl_pp_i_le@Base 5.32.0~rc1 - Perl_pp_i_lt@Base 5.32.0~rc1 - Perl_pp_i_modulo@Base 5.32.0~rc1 - Perl_pp_i_multiply@Base 5.32.0~rc1 - Perl_pp_i_ncmp@Base 5.32.0~rc1 - Perl_pp_i_ne@Base 5.32.0~rc1 - Perl_pp_i_negate@Base 5.32.0~rc1 - Perl_pp_i_subtract@Base 5.32.0~rc1 - Perl_pp_index@Base 5.32.0~rc1 - Perl_pp_int@Base 5.32.0~rc1 - Perl_pp_introcv@Base 5.32.0~rc1 - Perl_pp_ioctl@Base 5.32.0~rc1 - Perl_pp_isa@Base 5.32.0~rc1 - Perl_pp_iter@Base 5.32.0~rc1 - Perl_pp_join@Base 5.32.0~rc1 - Perl_pp_kvaslice@Base 5.32.0~rc1 - Perl_pp_kvhslice@Base 5.32.0~rc1 - Perl_pp_last@Base 5.32.0~rc1 - Perl_pp_lc@Base 5.32.0~rc1 - Perl_pp_le@Base 5.32.0~rc1 - Perl_pp_leave@Base 5.32.0~rc1 - Perl_pp_leaveeval@Base 5.32.0~rc1 - Perl_pp_leavegiven@Base 5.32.0~rc1 - Perl_pp_leaveloop@Base 5.32.0~rc1 - Perl_pp_leavesub@Base 5.32.0~rc1 - Perl_pp_leavesublv@Base 5.32.0~rc1 - Perl_pp_leavetry@Base 5.32.0~rc1 - Perl_pp_leavewhen@Base 5.32.0~rc1 - Perl_pp_leavewrite@Base 5.32.0~rc1 - Perl_pp_left_shift@Base 5.32.0~rc1 - Perl_pp_length@Base 5.32.0~rc1 - Perl_pp_link@Base 5.32.0~rc1 - Perl_pp_list@Base 5.32.0~rc1 - Perl_pp_listen@Base 5.32.0~rc1 - Perl_pp_lock@Base 5.32.0~rc1 - Perl_pp_lslice@Base 5.32.0~rc1 - Perl_pp_lt@Base 5.32.0~rc1 - Perl_pp_lvavref@Base 5.32.0~rc1 - Perl_pp_lvref@Base 5.32.0~rc1 - Perl_pp_lvrefslice@Base 5.32.0~rc1 - Perl_pp_mapwhile@Base 5.32.0~rc1 - Perl_pp_match@Base 5.32.0~rc1 - Perl_pp_method@Base 5.32.0~rc1 - Perl_pp_method_named@Base 5.32.0~rc1 - Perl_pp_method_redir@Base 5.32.0~rc1 - Perl_pp_method_redir_super@Base 5.32.0~rc1 - Perl_pp_method_super@Base 5.32.0~rc1 - Perl_pp_mkdir@Base 5.32.0~rc1 - Perl_pp_modulo@Base 5.32.0~rc1 - Perl_pp_multiconcat@Base 5.32.0~rc1 - Perl_pp_multideref@Base 5.32.0~rc1 - Perl_pp_multiply@Base 5.32.0~rc1 - Perl_pp_nbit_and@Base 5.32.0~rc1 - Perl_pp_nbit_or@Base 5.32.0~rc1 - Perl_pp_ncmp@Base 5.32.0~rc1 - Perl_pp_ncomplement@Base 5.32.0~rc1 - Perl_pp_ne@Base 5.32.0~rc1 - Perl_pp_negate@Base 5.32.0~rc1 - Perl_pp_next@Base 5.32.0~rc1 - Perl_pp_nextstate@Base 5.32.0~rc1 - Perl_pp_not@Base 5.32.0~rc1 - Perl_pp_null@Base 5.32.0~rc1 - Perl_pp_oct@Base 5.32.0~rc1 - Perl_pp_once@Base 5.32.0~rc1 - Perl_pp_open@Base 5.32.0~rc1 - Perl_pp_open_dir@Base 5.32.0~rc1 - Perl_pp_or@Base 5.32.0~rc1 - Perl_pp_ord@Base 5.32.0~rc1 - Perl_pp_pack@Base 5.32.0~rc1 - Perl_pp_padav@Base 5.32.0~rc1 - Perl_pp_padcv@Base 5.32.0~rc1 - Perl_pp_padhv@Base 5.32.0~rc1 - Perl_pp_padrange@Base 5.32.0~rc1 - Perl_pp_padsv@Base 5.32.0~rc1 - Perl_pp_pipe_op@Base 5.32.0~rc1 - Perl_pp_pos@Base 5.32.0~rc1 - Perl_pp_postdec@Base 5.32.0~rc1 - Perl_pp_postinc@Base 5.32.0~rc1 - Perl_pp_pow@Base 5.32.0~rc1 - Perl_pp_predec@Base 5.32.0~rc1 - Perl_pp_preinc@Base 5.32.0~rc1 - Perl_pp_print@Base 5.32.0~rc1 - Perl_pp_prototype@Base 5.32.0~rc1 - Perl_pp_prtf@Base 5.32.0~rc1 - Perl_pp_push@Base 5.32.0~rc1 - Perl_pp_pushmark@Base 5.32.0~rc1 - Perl_pp_qr@Base 5.32.0~rc1 - Perl_pp_quotemeta@Base 5.32.0~rc1 - Perl_pp_rand@Base 5.32.0~rc1 - Perl_pp_range@Base 5.32.0~rc1 - Perl_pp_rcatline@Base 5.32.0~rc1 - Perl_pp_readdir@Base 5.32.0~rc1 - Perl_pp_readline@Base 5.32.0~rc1 - Perl_pp_readlink@Base 5.32.0~rc1 - Perl_pp_redo@Base 5.32.0~rc1 - Perl_pp_ref@Base 5.32.0~rc1 - Perl_pp_refassign@Base 5.32.0~rc1 - Perl_pp_refgen@Base 5.32.0~rc1 - Perl_pp_regcomp@Base 5.32.0~rc1 - Perl_pp_regcreset@Base 5.32.0~rc1 - Perl_pp_rename@Base 5.32.0~rc1 - Perl_pp_repeat@Base 5.32.0~rc1 - Perl_pp_require@Base 5.32.0~rc1 - Perl_pp_reset@Base 5.32.0~rc1 - Perl_pp_return@Base 5.32.0~rc1 - Perl_pp_reverse@Base 5.32.0~rc1 - Perl_pp_rewinddir@Base 5.32.0~rc1 - Perl_pp_right_shift@Base 5.32.0~rc1 - Perl_pp_rmdir@Base 5.32.0~rc1 - Perl_pp_runcv@Base 5.32.0~rc1 - Perl_pp_rv2av@Base 5.32.0~rc1 - Perl_pp_rv2cv@Base 5.32.0~rc1 - Perl_pp_rv2gv@Base 5.32.0~rc1 - Perl_pp_rv2sv@Base 5.32.0~rc1 - Perl_pp_sassign@Base 5.32.0~rc1 - Perl_pp_sbit_and@Base 5.32.0~rc1 - Perl_pp_sbit_or@Base 5.32.0~rc1 - Perl_pp_schop@Base 5.32.0~rc1 - Perl_pp_scmp@Base 5.32.0~rc1 - Perl_pp_scomplement@Base 5.32.0~rc1 - Perl_pp_seekdir@Base 5.32.0~rc1 - Perl_pp_select@Base 5.32.0~rc1 - Perl_pp_semctl@Base 5.32.0~rc1 - Perl_pp_semget@Base 5.32.0~rc1 - Perl_pp_seq@Base 5.32.0~rc1 - Perl_pp_setpgrp@Base 5.32.0~rc1 - Perl_pp_setpriority@Base 5.32.0~rc1 - Perl_pp_shift@Base 5.32.0~rc1 - Perl_pp_shmwrite@Base 5.32.0~rc1 - Perl_pp_shostent@Base 5.32.0~rc1 - Perl_pp_shutdown@Base 5.32.0~rc1 - Perl_pp_sin@Base 5.32.0~rc1 - Perl_pp_sle@Base 5.32.0~rc1 - Perl_pp_sleep@Base 5.32.0~rc1 - Perl_pp_smartmatch@Base 5.32.0~rc1 - Perl_pp_sne@Base 5.32.0~rc1 - Perl_pp_socket@Base 5.32.0~rc1 - Perl_pp_sockpair@Base 5.32.0~rc1 - Perl_pp_sort@Base 5.32.0~rc1 - Perl_pp_splice@Base 5.32.0~rc1 - Perl_pp_split@Base 5.32.0~rc1 - Perl_pp_sprintf@Base 5.32.0~rc1 - Perl_pp_srand@Base 5.32.0~rc1 - Perl_pp_srefgen@Base 5.32.0~rc1 - Perl_pp_sselect@Base 5.32.0~rc1 - Perl_pp_ssockopt@Base 5.32.0~rc1 - Perl_pp_stat@Base 5.32.0~rc1 - Perl_pp_stringify@Base 5.32.0~rc1 - Perl_pp_stub@Base 5.32.0~rc1 - Perl_pp_study@Base 5.32.0~rc1 - Perl_pp_subst@Base 5.32.0~rc1 - Perl_pp_substcont@Base 5.32.0~rc1 - Perl_pp_substr@Base 5.32.0~rc1 - Perl_pp_subtract@Base 5.32.0~rc1 - Perl_pp_syscall@Base 5.32.0~rc1 - Perl_pp_sysopen@Base 5.32.0~rc1 - Perl_pp_sysread@Base 5.32.0~rc1 - Perl_pp_sysseek@Base 5.32.0~rc1 - Perl_pp_system@Base 5.32.0~rc1 - Perl_pp_syswrite@Base 5.32.0~rc1 - Perl_pp_tell@Base 5.32.0~rc1 - Perl_pp_telldir@Base 5.32.0~rc1 - Perl_pp_tie@Base 5.32.0~rc1 - Perl_pp_tied@Base 5.32.0~rc1 - Perl_pp_time@Base 5.32.0~rc1 - Perl_pp_tms@Base 5.32.0~rc1 - Perl_pp_trans@Base 5.32.0~rc1 - Perl_pp_truncate@Base 5.32.0~rc1 - Perl_pp_uc@Base 5.32.0~rc1 - Perl_pp_ucfirst@Base 5.32.0~rc1 - Perl_pp_umask@Base 5.32.0~rc1 - Perl_pp_undef@Base 5.32.0~rc1 - Perl_pp_unpack@Base 5.32.0~rc1 - Perl_pp_unshift@Base 5.32.0~rc1 - Perl_pp_unstack@Base 5.32.0~rc1 - Perl_pp_untie@Base 5.32.0~rc1 - Perl_pp_vec@Base 5.32.0~rc1 - Perl_pp_wait@Base 5.32.0~rc1 - Perl_pp_waitpid@Base 5.32.0~rc1 - Perl_pp_wantarray@Base 5.32.0~rc1 - Perl_pp_warn@Base 5.32.0~rc1 - Perl_pp_xor@Base 5.32.0~rc1 - Perl_pregcomp@Base 5.32.0~rc1 - Perl_pregexec@Base 5.32.0~rc1 - Perl_pregfree2@Base 5.32.0~rc1 - Perl_pregfree@Base 5.32.0~rc1 - Perl_prescan_version@Base 5.32.0~rc1 - Perl_printf_nocontext@Base 5.32.0~rc1 - Perl_ptr_table_clear@Base 5.32.0~rc1 - Perl_ptr_table_fetch@Base 5.32.0~rc1 - Perl_ptr_table_free@Base 5.32.0~rc1 - Perl_ptr_table_new@Base 5.32.0~rc1 - Perl_ptr_table_split@Base 5.32.0~rc1 - Perl_ptr_table_store@Base 5.32.0~rc1 - Perl_push_scope@Base 5.32.0~rc1 - Perl_pv_display@Base 5.32.0~rc1 - Perl_pv_escape@Base 5.32.0~rc1 - Perl_pv_pretty@Base 5.32.0~rc1 - Perl_pv_uni_display@Base 5.32.0~rc1 - Perl_qerror@Base 5.32.0~rc1 - Perl_re_compile@Base 5.32.0~rc1 - Perl_re_dup_guts@Base 5.32.0~rc1 - Perl_re_intuit_start@Base 5.32.0~rc1 - Perl_re_intuit_string@Base 5.32.0~rc1 - Perl_re_op_compile@Base 5.32.0~rc1 - Perl_realloc@Base 5.32.0~rc1 - Perl_reentrant_free@Base 5.32.0~rc1 - Perl_reentrant_init@Base 5.32.0~rc1 - Perl_reentrant_retry@Base 5.32.0~rc1 - Perl_reentrant_size@Base 5.32.0~rc1 - Perl_ref@Base 5.32.0~rc1 - Perl_refcounted_he_chain_2hv@Base 5.32.0~rc1 - Perl_refcounted_he_fetch_pv@Base 5.32.0~rc1 - Perl_refcounted_he_fetch_pvn@Base 5.32.0~rc1 - Perl_refcounted_he_fetch_sv@Base 5.32.0~rc1 - Perl_refcounted_he_free@Base 5.32.0~rc1 - Perl_refcounted_he_inc@Base 5.32.0~rc1 - Perl_refcounted_he_new_pv@Base 5.32.0~rc1 - Perl_refcounted_he_new_pvn@Base 5.32.0~rc1 - Perl_refcounted_he_new_sv@Base 5.32.0~rc1 - Perl_reg_named_buff@Base 5.32.0~rc1 - Perl_reg_named_buff_all@Base 5.32.0~rc1 - Perl_reg_named_buff_exists@Base 5.32.0~rc1 - Perl_reg_named_buff_fetch@Base 5.32.0~rc1 - Perl_reg_named_buff_firstkey@Base 5.32.0~rc1 - Perl_reg_named_buff_iter@Base 5.32.0~rc1 - Perl_reg_named_buff_nextkey@Base 5.32.0~rc1 - Perl_reg_named_buff_scalar@Base 5.32.0~rc1 - Perl_reg_numbered_buff_fetch@Base 5.32.0~rc1 - Perl_reg_numbered_buff_length@Base 5.32.0~rc1 - Perl_reg_numbered_buff_store@Base 5.32.0~rc1 - Perl_reg_qr_package@Base 5.32.0~rc1 - Perl_reg_temp_copy@Base 5.32.0~rc1 - Perl_regdump@Base 5.32.0~rc1 - Perl_regdupe_internal@Base 5.32.0~rc1 - Perl_regexec_flags@Base 5.32.0~rc1 - Perl_regfree_internal@Base 5.32.0~rc1 - Perl_reginitcolors@Base 5.32.0~rc1 - Perl_regnext@Base 5.32.0~rc1 - Perl_regprop@Base 5.32.0~rc1 - Perl_repeatcpy@Base 5.32.0~rc1 - Perl_report_evil_fh@Base 5.32.0~rc1 - Perl_report_redefined_cv@Base 5.32.0~rc1 - Perl_report_uninit@Base 5.32.0~rc1 - Perl_report_wrongway_fh@Base 5.32.0~rc1 - Perl_require_pv@Base 5.32.0~rc1 - Perl_rninstr@Base 5.32.0~rc1 - Perl_rpeep@Base 5.32.0~rc1 - Perl_rsignal@Base 5.32.0~rc1 - Perl_rsignal_restore@Base 5.32.0~rc1 - Perl_rsignal_save@Base 5.32.0~rc1 - Perl_rsignal_state@Base 5.32.0~rc1 - Perl_runops_debug@Base 5.32.0~rc1 - Perl_runops_standard@Base 5.32.0~rc1 - Perl_rv2cv_op_cv@Base 5.32.0~rc1 - Perl_rvpv_dup@Base 5.32.0~rc1 - Perl_rxres_save@Base 5.32.0~rc1 - Perl_safesyscalloc@Base 5.32.0~rc1 - Perl_safesysfree@Base 5.32.0~rc1 - Perl_safesysmalloc@Base 5.32.0~rc1 - Perl_safesysrealloc@Base 5.32.0~rc1 - Perl_save_I16@Base 5.32.0~rc1 - Perl_save_I32@Base 5.32.0~rc1 - Perl_save_I8@Base 5.32.0~rc1 - Perl_save_adelete@Base 5.32.0~rc1 - Perl_save_aelem_flags@Base 5.32.0~rc1 - Perl_save_alloc@Base 5.32.0~rc1 - Perl_save_aptr@Base 5.32.0~rc1 - Perl_save_ary@Base 5.32.0~rc1 - Perl_save_bool@Base 5.32.0~rc1 - Perl_save_clearsv@Base 5.32.0~rc1 - Perl_save_delete@Base 5.32.0~rc1 - Perl_save_destructor@Base 5.32.0~rc1 - Perl_save_destructor_x@Base 5.32.0~rc1 - Perl_save_freeop@Base 5.32.0~rc1 - Perl_save_freepv@Base 5.32.0~rc1 - Perl_save_freesv@Base 5.32.0~rc1 - Perl_save_generic_pvref@Base 5.32.0~rc1 - Perl_save_generic_svref@Base 5.32.0~rc1 - Perl_save_gp@Base 5.32.0~rc1 - Perl_save_hash@Base 5.32.0~rc1 - Perl_save_hdelete@Base 5.32.0~rc1 - Perl_save_helem_flags@Base 5.32.0~rc1 - Perl_save_hints@Base 5.32.0~rc1 - Perl_save_hptr@Base 5.32.0~rc1 - Perl_save_int@Base 5.32.0~rc1 - Perl_save_item@Base 5.32.0~rc1 - Perl_save_iv@Base 5.32.0~rc1 - Perl_save_list@Base 5.32.0~rc1 - Perl_save_long@Base 5.32.0~rc1 - Perl_save_mortalizesv@Base 5.32.0~rc1 - Perl_save_nogv@Base 5.32.0~rc1 - Perl_save_op@Base 5.32.0~rc1 - Perl_save_padsv_and_mortalize@Base 5.32.0~rc1 - Perl_save_pptr@Base 5.32.0~rc1 - Perl_save_pushi32ptr@Base 5.32.0~rc1 - Perl_save_pushptr@Base 5.32.0~rc1 - Perl_save_pushptrptr@Base 5.32.0~rc1 - Perl_save_re_context@Base 5.32.0~rc1 - Perl_save_scalar@Base 5.32.0~rc1 - Perl_save_set_svflags@Base 5.32.0~rc1 - Perl_save_shared_pvref@Base 5.32.0~rc1 - Perl_save_sptr@Base 5.32.0~rc1 - Perl_save_strlen@Base 5.32.0~rc1 - Perl_save_svref@Base 5.32.0~rc1 - Perl_save_vptr@Base 5.32.0~rc1 - Perl_savepv@Base 5.32.0~rc1 - Perl_savepvn@Base 5.32.0~rc1 - Perl_savesharedpv@Base 5.32.0~rc1 - Perl_savesharedpvn@Base 5.32.0~rc1 - Perl_savesharedsvpv@Base 5.32.0~rc1 - Perl_savestack_grow@Base 5.32.0~rc1 - Perl_savestack_grow_cnt@Base 5.32.0~rc1 - Perl_savesvpv@Base 5.32.0~rc1 - Perl_savetmps@Base 5.32.0~rc1 - Perl_sawparens@Base 5.32.0~rc1 - Perl_scalar@Base 5.32.0~rc1 - Perl_scalarvoid@Base 5.32.0~rc1 - Perl_scan_bin@Base 5.32.0~rc1 - Perl_scan_hex@Base 5.32.0~rc1 - Perl_scan_num@Base 5.32.0~rc1 - Perl_scan_oct@Base 5.32.0~rc1 - Perl_scan_str@Base 5.32.0~rc1 - Perl_scan_version@Base 5.32.0~rc1 - Perl_scan_vstring@Base 5.32.0~rc1 - Perl_scan_word@Base 5.32.0~rc1 - Perl_seed@Base 5.32.0~rc1 - Perl_set_caret_X@Base 5.32.0~rc1 - Perl_set_context@Base 5.32.0~rc1 - Perl_set_numeric_standard@Base 5.32.0~rc1 - Perl_set_numeric_underlying@Base 5.32.0~rc1 - Perl_setdefout@Base 5.32.0~rc1 - Perl_setfd_cloexec@Base 5.32.0~rc1 - Perl_setfd_cloexec_for_nonsysfd@Base 5.32.0~rc1 - Perl_setfd_cloexec_or_inhexec_by_sysfdness@Base 5.32.0~rc1 - Perl_setfd_inhexec@Base 5.32.0~rc1 - Perl_setfd_inhexec_for_sysfd@Base 5.32.0~rc1 - Perl_setlocale@Base 5.32.0~rc1 - Perl_share_hek@Base 5.32.0~rc1 - Perl_si_dup@Base 5.32.0~rc1 - Perl_sighandler1@Base 5.32.0~rc1 - Perl_sighandler3@Base 5.32.0~rc1 - Perl_sighandler@Base 5.32.0~rc1 - Perl_skipspace_flags@Base 5.32.0~rc1 - Perl_softref2xv@Base 5.32.0~rc1 - Perl_sortsv@Base 5.32.0~rc1 - Perl_sortsv_flags@Base 5.32.0~rc1 - Perl_ss_dup@Base 5.32.0~rc1 - Perl_stack_grow@Base 5.32.0~rc1 - Perl_start_glob@Base 5.32.0~rc1 - Perl_start_subparse@Base 5.32.0~rc1 - Perl_str_to_version@Base 5.32.0~rc1 - Perl_sub_crush_depth@Base 5.32.0~rc1 - Perl_sv_2bool@Base 5.32.0~rc1 - Perl_sv_2bool_flags@Base 5.32.0~rc1 - Perl_sv_2cv@Base 5.32.0~rc1 - Perl_sv_2io@Base 5.32.0~rc1 - Perl_sv_2iv@Base 5.32.0~rc1 - Perl_sv_2iv_flags@Base 5.32.0~rc1 - Perl_sv_2mortal@Base 5.32.0~rc1 - Perl_sv_2num@Base 5.32.0~rc1 - Perl_sv_2nv@Base 5.32.0~rc1 - Perl_sv_2nv_flags@Base 5.32.0~rc1 - Perl_sv_2pv@Base 5.32.0~rc1 - Perl_sv_2pv_flags@Base 5.32.0~rc1 - Perl_sv_2pv_nolen@Base 5.32.0~rc1 - Perl_sv_2pvbyte@Base 5.32.0~rc1 - Perl_sv_2pvbyte_flags@Base 5.32.0~rc1 - Perl_sv_2pvbyte_nolen@Base 5.32.0~rc1 - Perl_sv_2pvutf8@Base 5.32.0~rc1 - Perl_sv_2pvutf8_flags@Base 5.32.0~rc1 - Perl_sv_2pvutf8_nolen@Base 5.32.0~rc1 - Perl_sv_2uv@Base 5.32.0~rc1 - Perl_sv_2uv_flags@Base 5.32.0~rc1 - Perl_sv_add_backref@Base 5.32.0~rc1 - Perl_sv_backoff@Base 5.32.0~rc1 - Perl_sv_bless@Base 5.32.0~rc1 - Perl_sv_cat_decode@Base 5.32.0~rc1 - Perl_sv_catpv@Base 5.32.0~rc1 - Perl_sv_catpv_flags@Base 5.32.0~rc1 - Perl_sv_catpv_mg@Base 5.32.0~rc1 - Perl_sv_catpvf@Base 5.32.0~rc1 - Perl_sv_catpvf_mg@Base 5.32.0~rc1 - Perl_sv_catpvf_mg_nocontext@Base 5.32.0~rc1 - Perl_sv_catpvf_nocontext@Base 5.32.0~rc1 - Perl_sv_catpvn@Base 5.32.0~rc1 - Perl_sv_catpvn_flags@Base 5.32.0~rc1 - Perl_sv_catpvn_mg@Base 5.32.0~rc1 - Perl_sv_catsv@Base 5.32.0~rc1 - Perl_sv_catsv_flags@Base 5.32.0~rc1 - Perl_sv_catsv_mg@Base 5.32.0~rc1 - Perl_sv_chop@Base 5.32.0~rc1 - Perl_sv_clean_all@Base 5.32.0~rc1 - Perl_sv_clean_objs@Base 5.32.0~rc1 - Perl_sv_clear@Base 5.32.0~rc1 - Perl_sv_cmp@Base 5.32.0~rc1 - Perl_sv_cmp_flags@Base 5.32.0~rc1 - Perl_sv_cmp_locale@Base 5.32.0~rc1 - Perl_sv_cmp_locale_flags@Base 5.32.0~rc1 - Perl_sv_collxfrm@Base 5.32.0~rc1 - Perl_sv_collxfrm_flags@Base 5.32.0~rc1 - Perl_sv_copypv@Base 5.32.0~rc1 - Perl_sv_copypv_flags@Base 5.32.0~rc1 - Perl_sv_dec@Base 5.32.0~rc1 - Perl_sv_dec_nomg@Base 5.32.0~rc1 - Perl_sv_del_backref@Base 5.32.0~rc1 - Perl_sv_derived_from@Base 5.32.0~rc1 - Perl_sv_derived_from_pv@Base 5.32.0~rc1 - Perl_sv_derived_from_pvn@Base 5.32.0~rc1 - Perl_sv_derived_from_sv@Base 5.32.0~rc1 - Perl_sv_destroyable@Base 5.32.0~rc1 - Perl_sv_does@Base 5.32.0~rc1 - Perl_sv_does_pv@Base 5.32.0~rc1 - Perl_sv_does_pvn@Base 5.32.0~rc1 - Perl_sv_does_sv@Base 5.32.0~rc1 - Perl_sv_dump@Base 5.32.0~rc1 - Perl_sv_dup@Base 5.32.0~rc1 - Perl_sv_dup_inc@Base 5.32.0~rc1 - Perl_sv_eq@Base 5.32.0~rc1 - Perl_sv_eq_flags@Base 5.32.0~rc1 - Perl_sv_force_normal@Base 5.32.0~rc1 - Perl_sv_force_normal_flags@Base 5.32.0~rc1 - Perl_sv_free2@Base 5.32.0~rc1 - Perl_sv_free@Base 5.32.0~rc1 - Perl_sv_free_arenas@Base 5.32.0~rc1 - Perl_sv_get_backrefs@Base 5.32.0~rc1 - Perl_sv_gets@Base 5.32.0~rc1 - Perl_sv_grow@Base 5.32.0~rc1 - Perl_sv_inc@Base 5.32.0~rc1 - Perl_sv_inc_nomg@Base 5.32.0~rc1 - Perl_sv_insert@Base 5.32.0~rc1 - Perl_sv_insert_flags@Base 5.32.0~rc1 - Perl_sv_isa@Base 5.32.0~rc1 - Perl_sv_isa_sv@Base 5.32.0~rc1 - Perl_sv_isobject@Base 5.32.0~rc1 - Perl_sv_iv@Base 5.32.0~rc1 - Perl_sv_kill_backrefs@Base 5.32.0~rc1 - Perl_sv_len@Base 5.32.0~rc1 - Perl_sv_len_utf8@Base 5.32.0~rc1 - Perl_sv_len_utf8_nomg@Base 5.32.0~rc1 - Perl_sv_magic@Base 5.32.0~rc1 - Perl_sv_magicext@Base 5.32.0~rc1 - Perl_sv_magicext_mglob@Base 5.32.0~rc1 - Perl_sv_mortalcopy@Base 5.32.0~rc1 - Perl_sv_mortalcopy_flags@Base 5.32.0~rc1 - Perl_sv_newmortal@Base 5.32.0~rc1 - Perl_sv_newref@Base 5.32.0~rc1 - Perl_sv_nolocking@Base 5.32.0~rc1 - Perl_sv_nosharing@Base 5.32.0~rc1 - Perl_sv_nounlocking@Base 5.32.0~rc1 - Perl_sv_nv@Base 5.32.0~rc1 - Perl_sv_peek@Base 5.32.0~rc1 - Perl_sv_pos_b2u@Base 5.32.0~rc1 - Perl_sv_pos_b2u_flags@Base 5.32.0~rc1 - Perl_sv_pos_u2b@Base 5.32.0~rc1 - Perl_sv_pos_u2b_flags@Base 5.32.0~rc1 - Perl_sv_pv@Base 5.32.0~rc1 - Perl_sv_pvbyte@Base 5.32.0~rc1 - Perl_sv_pvbyten@Base 5.32.0~rc1 - Perl_sv_pvbyten_force@Base 5.32.0~rc1 - Perl_sv_pvn@Base 5.32.0~rc1 - Perl_sv_pvn_force@Base 5.32.0~rc1 - Perl_sv_pvn_force_flags@Base 5.32.0~rc1 - Perl_sv_pvn_nomg@Base 5.32.0~rc1 - Perl_sv_pvutf8@Base 5.32.0~rc1 - Perl_sv_pvutf8n@Base 5.32.0~rc1 - Perl_sv_pvutf8n_force@Base 5.32.0~rc1 - Perl_sv_recode_to_utf8@Base 5.32.0~rc1 - Perl_sv_ref@Base 5.32.0~rc1 - Perl_sv_reftype@Base 5.32.0~rc1 - Perl_sv_replace@Base 5.32.0~rc1 - Perl_sv_report_used@Base 5.32.0~rc1 - Perl_sv_reset@Base 5.32.0~rc1 - Perl_sv_resetpvn@Base 5.32.0~rc1 - Perl_sv_rvunweaken@Base 5.32.0~rc1 - Perl_sv_rvweaken@Base 5.32.0~rc1 - Perl_sv_set_undef@Base 5.32.0~rc1 - Perl_sv_sethek@Base 5.32.0~rc1 - Perl_sv_setiv@Base 5.32.0~rc1 - Perl_sv_setiv_mg@Base 5.32.0~rc1 - Perl_sv_setnv@Base 5.32.0~rc1 - Perl_sv_setnv_mg@Base 5.32.0~rc1 - Perl_sv_setpv@Base 5.32.0~rc1 - Perl_sv_setpv_bufsize@Base 5.32.0~rc1 - Perl_sv_setpv_mg@Base 5.32.0~rc1 - Perl_sv_setpvf@Base 5.32.0~rc1 - Perl_sv_setpvf_mg@Base 5.32.0~rc1 - Perl_sv_setpvf_mg_nocontext@Base 5.32.0~rc1 - Perl_sv_setpvf_nocontext@Base 5.32.0~rc1 - Perl_sv_setpviv@Base 5.32.0~rc1 - Perl_sv_setpviv_mg@Base 5.32.0~rc1 - Perl_sv_setpvn@Base 5.32.0~rc1 - Perl_sv_setpvn_mg@Base 5.32.0~rc1 - Perl_sv_setref_iv@Base 5.32.0~rc1 - Perl_sv_setref_nv@Base 5.32.0~rc1 - Perl_sv_setref_pv@Base 5.32.0~rc1 - Perl_sv_setref_pvn@Base 5.32.0~rc1 - Perl_sv_setref_uv@Base 5.32.0~rc1 - Perl_sv_setsv@Base 5.32.0~rc1 - Perl_sv_setsv_cow@Base 5.32.0~rc1 - Perl_sv_setsv_flags@Base 5.32.0~rc1 - Perl_sv_setsv_mg@Base 5.32.0~rc1 - Perl_sv_setuv@Base 5.32.0~rc1 - Perl_sv_setuv_mg@Base 5.32.0~rc1 - Perl_sv_string_from_errnum@Base 5.32.0~rc1 - Perl_sv_taint@Base 5.32.0~rc1 - Perl_sv_tainted@Base 5.32.0~rc1 - Perl_sv_true@Base 5.32.0~rc1 - Perl_sv_uni_display@Base 5.32.0~rc1 - Perl_sv_unmagic@Base 5.32.0~rc1 - Perl_sv_unmagicext@Base 5.32.0~rc1 - Perl_sv_unref@Base 5.32.0~rc1 - Perl_sv_unref_flags@Base 5.32.0~rc1 - Perl_sv_untaint@Base 5.32.0~rc1 - Perl_sv_upgrade@Base 5.32.0~rc1 - Perl_sv_usepvn@Base 5.32.0~rc1 - Perl_sv_usepvn_flags@Base 5.32.0~rc1 - Perl_sv_usepvn_mg@Base 5.32.0~rc1 - Perl_sv_utf8_decode@Base 5.32.0~rc1 - Perl_sv_utf8_downgrade@Base 5.32.0~rc1 - Perl_sv_utf8_downgrade_flags@Base 5.32.0~rc1 - Perl_sv_utf8_encode@Base 5.32.0~rc1 - Perl_sv_utf8_upgrade@Base 5.32.0~rc1 - Perl_sv_utf8_upgrade_flags_grow@Base 5.32.0~rc1 - Perl_sv_uv@Base 5.32.0~rc1 - Perl_sv_vcatpvf@Base 5.32.0~rc1 - Perl_sv_vcatpvf_mg@Base 5.32.0~rc1 - Perl_sv_vcatpvfn@Base 5.32.0~rc1 - Perl_sv_vcatpvfn_flags@Base 5.32.0~rc1 - Perl_sv_vsetpvf@Base 5.32.0~rc1 - Perl_sv_vsetpvf_mg@Base 5.32.0~rc1 - Perl_sv_vsetpvfn@Base 5.32.0~rc1 - Perl_switch_to_global_locale@Base 5.32.0~rc1 - Perl_sync_locale@Base 5.32.0~rc1 - Perl_sys_init3@Base 5.32.0~rc1 - Perl_sys_init@Base 5.32.0~rc1 - Perl_sys_term@Base 5.32.0~rc1 - Perl_taint_env@Base 5.32.0~rc1 - Perl_taint_proper@Base 5.32.0~rc1 - Perl_thread_locale_init@Base 5.32.0~rc1 - Perl_thread_locale_term@Base 5.32.0~rc1 - Perl_tied_method@Base 5.32.0~rc1 - Perl_tmps_grow_p@Base 5.32.0~rc1 - Perl_to_uni_lower@Base 5.32.0~rc1 - Perl_to_uni_title@Base 5.32.0~rc1 - Perl_to_uni_upper@Base 5.32.0~rc1 - Perl_translate_substr_offsets@Base 5.32.0~rc1 - Perl_try_amagic_bin@Base 5.32.0~rc1 - Perl_try_amagic_un@Base 5.32.0~rc1 - Perl_unimplemented_op@Base 5.32.0~rc1 - Perl_unpack_str@Base 5.32.0~rc1 - Perl_unpackstring@Base 5.32.0~rc1 - Perl_unshare_hek@Base 5.32.0~rc1 - Perl_unsharepvn@Base 5.32.0~rc1 - Perl_upg_version@Base 5.32.0~rc1 - Perl_utf16_to_utf8@Base 5.32.0~rc1 - Perl_utf16_to_utf8_reversed@Base 5.32.0~rc1 - Perl_utf8_length@Base 5.32.0~rc1 - Perl_utf8_to_bytes@Base 5.32.0~rc1 - Perl_utf8_to_uvchr@Base 5.32.0~rc1 - Perl_utf8_to_uvchr_buf@Base 5.32.0~rc1 - Perl_utf8_to_uvuni@Base 5.32.0~rc1 - Perl_utf8_to_uvuni_buf@Base 5.32.0~rc1 - Perl_utf8n_to_uvchr@Base 5.32.0~rc1 - Perl_utf8n_to_uvchr_error@Base 5.32.0~rc1 - Perl_utf8n_to_uvuni@Base 5.32.0~rc1 - Perl_utilize@Base 5.32.0~rc1 - Perl_uvchr_to_utf8@Base 5.32.0~rc1 - Perl_uvchr_to_utf8_flags@Base 5.32.0~rc1 - Perl_uvoffuni_to_utf8_flags@Base 5.32.0~rc1 - Perl_uvoffuni_to_utf8_flags_msgs@Base 5.32.0~rc1 - Perl_uvuni_to_utf8@Base 5.32.0~rc1 - Perl_uvuni_to_utf8_flags@Base 5.32.0~rc1 - Perl_valid_utf8_to_uvuni@Base 5.32.0~rc1 - Perl_validate_proto@Base 5.32.0~rc1 - Perl_varname@Base 5.32.0~rc1 - Perl_vcmp@Base 5.32.0~rc1 - Perl_vcroak@Base 5.32.0~rc1 - Perl_vdeb@Base 5.32.0~rc1 - Perl_vform@Base 5.32.0~rc1 - Perl_vivify_defelem@Base 5.32.0~rc1 - Perl_vivify_ref@Base 5.32.0~rc1 - Perl_vload_module@Base 5.32.0~rc1 - Perl_vmess@Base 5.32.0~rc1 - Perl_vnewSVpvf@Base 5.32.0~rc1 - Perl_vnormal@Base 5.32.0~rc1 - Perl_vnumify@Base 5.32.0~rc1 - Perl_vstringify@Base 5.32.0~rc1 - Perl_vverify@Base 5.32.0~rc1 - Perl_vwarn@Base 5.32.0~rc1 - Perl_vwarner@Base 5.32.0~rc1 - Perl_wait4pid@Base 5.32.0~rc1 - Perl_warn@Base 5.32.0~rc1 - Perl_warn_nocontext@Base 5.32.0~rc1 - Perl_warn_sv@Base 5.32.0~rc1 - Perl_warner@Base 5.32.0~rc1 - Perl_warner_nocontext@Base 5.32.0~rc1 - Perl_was_lvalue_sub@Base 5.32.0~rc1 - Perl_watch@Base 5.32.0~rc1 - Perl_whichsig_pv@Base 5.32.0~rc1 - Perl_whichsig_pvn@Base 5.32.0~rc1 - Perl_whichsig_sv@Base 5.32.0~rc1 - Perl_wrap_keyword_plugin@Base 5.32.0~rc1 - Perl_wrap_op_checker@Base 5.32.0~rc1 - Perl_write_to_stderr@Base 5.32.0~rc1 - Perl_xs_boot_epilog@Base 5.32.0~rc1 - Perl_xs_handshake@Base 5.32.0~rc1 - Perl_yyerror@Base 5.32.0~rc1 - Perl_yyerror_pv@Base 5.32.0~rc1 - Perl_yyerror_pvn@Base 5.32.0~rc1 - Perl_yylex@Base 5.32.0~rc1 - Perl_yyparse@Base 5.32.0~rc1 - Perl_yyquit@Base 5.32.0~rc1 - Perl_yyunlex@Base 5.32.0~rc1 - XS_DynaLoader_CLONE@Base 5.32.0~rc1 - XS_DynaLoader_dl_error@Base 5.32.0~rc1 - XS_DynaLoader_dl_find_symbol@Base 5.32.0~rc1 - XS_DynaLoader_dl_install_xsub@Base 5.32.0~rc1 - XS_DynaLoader_dl_load_file@Base 5.32.0~rc1 - XS_DynaLoader_dl_undef_symbols@Base 5.32.0~rc1 - XS_DynaLoader_dl_unload_file@Base 5.32.0~rc1 - XS_Internals_SvREADONLY@Base 5.32.0~rc1 - XS_Internals_SvREFCNT@Base 5.32.0~rc1 - XS_Internals_getcwd@Base 5.32.0~rc1 - XS_Internals_hv_clear_placehold@Base 5.32.0~rc1 - XS_NamedCapture_FETCH@Base 5.32.0~rc1 - XS_NamedCapture_FIRSTKEY@Base 5.32.0~rc1 - XS_NamedCapture_TIEHASH@Base 5.32.0~rc1 - XS_NamedCapture_flags@Base 5.32.0~rc1 - XS_NamedCapture_tie_it@Base 5.32.0~rc1 - XS_PerlIO__Layer__NoWarnings@Base 5.32.0~rc1 - XS_PerlIO__Layer__find@Base 5.32.0~rc1 - XS_PerlIO_get_layers@Base 5.32.0~rc1 - XS_UNIVERSAL_DOES@Base 5.32.0~rc1 - XS_UNIVERSAL_can@Base 5.32.0~rc1 - XS_UNIVERSAL_isa@Base 5.32.0~rc1 - XS_constant__make_const@Base 5.32.0~rc1 - XS_mro_method_changed_in@Base 5.32.0~rc1 - XS_re_is_regexp@Base 5.32.0~rc1 - XS_re_regexp_pattern@Base 5.32.0~rc1 - XS_re_regname@Base 5.32.0~rc1 - XS_re_regnames@Base 5.32.0~rc1 - XS_re_regnames_count@Base 5.32.0~rc1 - XS_utf8_decode@Base 5.32.0~rc1 - XS_utf8_downgrade@Base 5.32.0~rc1 - XS_utf8_encode@Base 5.32.0~rc1 - XS_utf8_is_utf8@Base 5.32.0~rc1 - XS_utf8_native_to_unicode@Base 5.32.0~rc1 - XS_utf8_unicode_to_native@Base 5.32.0~rc1 - XS_utf8_upgrade@Base 5.32.0~rc1 - XS_utf8_valid@Base 5.32.0~rc1 - boot_DynaLoader@Base 5.32.0~rc1 - categories@Base 5.32.0~rc1 - category_masks@Base 5.32.0~rc1 - category_names@Base 5.32.0~rc1 - cv_flags_names@Base 5.32.0~rc1 - deprecated_property_msgs@Base 5.32.0~rc1 - first_sv_flags_names@Base 5.32.0~rc1 - gp_flags_imported_names@Base 5.32.0~rc1 - gp_flags_names@Base 5.32.0~rc1 - hv_flags_names@Base 5.32.0~rc1 - match_uniprop@Base 5.32.0~rc1 - nonchar_cp_format@Base 5.32.0~rc1 - op_class_names@Base 5.32.0~rc1 - op_flags_names@Base 5.32.0~rc1 - perl_alloc@Base 5.32.0~rc1 - perl_clone@Base 5.32.0~rc1 - perl_construct@Base 5.32.0~rc1 - perl_destruct@Base 5.32.0~rc1 - perl_free@Base 5.32.0~rc1 - perl_parse@Base 5.32.0~rc1 - perl_run@Base 5.32.0~rc1 - perlsio_binmode@Base 5.32.0~rc1 - pmflags_flags_names@Base 5.32.0~rc1 - regexp_core_intflags_names@Base 5.32.0~rc1 - regexp_extflags_names@Base 5.32.0~rc1 - second_sv_flags_names@Base 5.32.0~rc1 - super_cp_format@Base 5.32.0~rc1 - surrogate_cp_format@Base 5.32.0~rc1 diff -Nru perl-5.32.1/debian/libperl5.34.install perl-5.34.0/debian/libperl5.34.install --- perl-5.32.1/debian/libperl5.34.install 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/debian/libperl5.34.install 2022-02-05 10:20:32.000000000 +0000 @@ -0,0 +1,6 @@ +usr/lib/${DEB_HOST_MULTIARCH}/perl +usr/lib/${DEB_HOST_MULTIARCH}/libperl.so.${env:fullversion} +usr/bin/perl +usr/bin/cpan +debian/cross/README usr/lib/${DEB_HOST_MULTIARCH}/perl/debian-config-data-${env:fullversion} +debian/errno.ph usr/lib/${DEB_HOST_MULTIARCH}/perl/${env:fullversion} diff -Nru perl-5.32.1/debian/libperl5.34.links perl-5.34.0/debian/libperl5.34.links --- perl-5.32.1/debian/libperl5.34.links 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/debian/libperl5.34.links 2022-02-05 10:20:32.000000000 +0000 @@ -0,0 +1,3 @@ +usr/lib/${DEB_HOST_MULTIARCH}/perl/${env:fullversion}/Config.pm usr/lib/${DEB_HOST_MULTIARCH}/perl/cross-config-${env:fullversion}/Config.pm +usr/lib/${DEB_HOST_MULTIARCH}/perl/${env:fullversion}/Config_heavy.pl usr/lib/${DEB_HOST_MULTIARCH}/perl/cross-config-${env:fullversion}/Config_heavy.pl +usr/lib/${DEB_HOST_MULTIARCH}/libperl.so.${env:fullversion} usr/lib/${DEB_HOST_MULTIARCH}/libperl.so.${env:version} diff -Nru perl-5.32.1/debian/libperl5.34.lintian-overrides perl-5.34.0/debian/libperl5.34.lintian-overrides --- perl-5.32.1/debian/libperl5.34.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/debian/libperl5.34.lintian-overrides 2022-02-05 10:20:32.000000000 +0000 @@ -0,0 +1,6 @@ +# Install for edge cases and not considered as applications +application-in-library-section libs usr/bin/cpan5.32-x86_64-linux-gnu usr/bin/perl5.32-x86_64-linux-gnu +# Documentation describes files in this directory +package-contains-documentation-outside-usr-share-doc usr/lib/x86_64-linux-gnu/perl/debian-config-data-5.32.0/README +# There is logic in the unicode handling code which deals with this typo +spelling-error-in-binary usr/lib/x86_64-linux-gnu/libperl.so.5.32.0 Inseperable Inseparable diff -Nru perl-5.32.1/debian/libperl5.34.manpages perl-5.34.0/debian/libperl5.34.manpages --- perl-5.32.1/debian/libperl5.34.manpages 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/debian/libperl5.34.manpages 2022-02-05 10:20:32.000000000 +0000 @@ -0,0 +1,2 @@ +usr/share/man/man1/perl.1 +usr/share/man/man1/cpan.1 diff -Nru perl-5.32.1/debian/libperl5.34.symbols perl-5.34.0/debian/libperl5.34.symbols --- perl-5.32.1/debian/libperl5.34.symbols 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/debian/libperl5.34.symbols 2022-02-05 10:20:32.000000000 +0000 @@ -0,0 +1,1879 @@ +libperl.so.5.34 libperl5.34 #MINVER# +* Build-Depends-Package: libperl-dev + ASCII_TO_NEED@Base 5.34.0 + NATIVE_TO_NEED@Base 5.34.0 + PL_C_locale_obj@Base 5.34.0 + PL_EXACTFish_bitmask@Base 5.34.0 + PL_EXACT_REQ8_bitmask@Base 5.34.0 + PL_No@Base 5.34.0 + PL_WARN_ALL@Base 5.34.0 + PL_WARN_NONE@Base 5.34.0 + PL_Yes@Base 5.34.0 + PL_Zero@Base 5.34.0 + PL_bincompat_options@Base 5.34.0 + PL_bitcount@Base 5.34.0 + PL_block_type@Base 5.34.0 + PL_c9_utf8_dfa_tab@Base 5.34.0 + PL_charclass@Base 5.34.0 + PL_check@Base 5.34.0 + PL_check_mutex@Base 5.34.0 + PL_core_reg_engine@Base 5.34.0 + PL_csighandler1p@Base 5.34.0 + PL_csighandler3p@Base 5.34.0 + PL_csighandlerp@Base 5.34.0 + PL_curinterp@Base 5.34.0 + PL_do_undump@Base 5.34.0 + PL_dollarzero_mutex@Base 5.34.0 + PL_env_mutex@Base 5.34.0 + PL_extended_cp_format@Base 5.34.0 + PL_extended_utf8_dfa_tab@Base 5.34.0 + PL_fold@Base 5.34.0 + PL_fold_latin1@Base 5.34.0 + PL_fold_locale@Base 5.34.0 + PL_hash_seed_set@Base 5.34.0 + PL_hash_seed_w@Base 5.34.0 + PL_hash_state_w@Base 5.34.0 + PL_hexdigit@Base 5.34.0 + PL_hints_mutex@Base 5.34.0 + PL_inf@Base 5.34.0 + PL_interp_size@Base 5.34.0 + PL_interp_size_5_18_0@Base 5.34.0 + PL_isa_DOES@Base 5.34.0 + PL_keyword_plugin@Base 5.34.0 + PL_keyword_plugin_mutex@Base 5.34.0 + PL_latin1_lc@Base 5.34.0 + PL_locale_mutex@Base 5.34.0 + PL_magic_data@Base 5.34.0 + PL_magic_vtable_names@Base 5.34.0 + PL_magic_vtables@Base 5.34.0 + PL_memory_wrap@Base 5.34.0 + PL_mmap_page_size@Base 5.34.0 + PL_mod_latin1_uc@Base 5.34.0 + PL_my_ctx_mutex@Base 5.34.0 + PL_my_cxt_index@Base 5.34.0 + PL_nan@Base 5.34.0 + PL_no_aelem@Base 5.34.0 + PL_no_dir_func@Base 5.34.0 + PL_no_func@Base 5.34.0 + PL_no_helem_sv@Base 5.34.0 + PL_no_localize_ref@Base 5.34.0 + PL_no_mem@Base 5.34.0 + PL_no_modify@Base 5.34.0 + PL_no_myglob@Base 5.34.0 + PL_no_security@Base 5.34.0 + PL_no_sock_func@Base 5.34.0 + PL_no_symref@Base 5.34.0 + PL_no_symref_sv@Base 5.34.0 + PL_no_usym@Base 5.34.0 + PL_no_wrongref@Base 5.34.0 + PL_op_desc@Base 5.34.0 + PL_op_mutex@Base 5.34.0 + PL_op_name@Base 5.34.0 + PL_op_private_bitdef_ix@Base 5.34.0 + PL_op_private_bitdefs@Base 5.34.0 + PL_op_private_bitfields@Base 5.34.0 + PL_op_private_labels@Base 5.34.0 + PL_op_private_valid@Base 5.34.0 + PL_op_seq@Base 5.34.0 + PL_op_sequence@Base 5.34.0 + PL_opargs@Base 5.34.0 + PL_perlio_debug_fd@Base 5.34.0 + PL_perlio_fd_refcnt@Base 5.34.0 + PL_perlio_fd_refcnt_size@Base 5.34.0 + PL_perlio_mutex@Base 5.34.0 + PL_phase_names@Base 5.34.0 + PL_ppaddr@Base 5.34.0 + PL_reg_extflags_name@Base 5.34.0 + PL_reg_intflags_name@Base 5.34.0 + PL_reg_name@Base 5.34.0 + PL_regkind@Base 5.34.0 + PL_revision@Base 5.34.0 + PL_runops_dbg@Base 5.34.0 + PL_runops_std@Base 5.34.0 + PL_sh_path@Base 5.34.0 + PL_sig_name@Base 5.34.0 + PL_sig_num@Base 5.34.0 + PL_sigfpe_saved@Base 5.34.0 + PL_simple@Base 5.34.0 + PL_simple_bitmask@Base 5.34.0 + PL_strategy_accept@Base 5.34.0 + PL_strategy_dup2@Base 5.34.0 + PL_strategy_dup@Base 5.34.0 + PL_strategy_mkstemp@Base 5.34.0 + PL_strategy_open3@Base 5.34.0 + PL_strategy_open@Base 5.34.0 + PL_strategy_pipe@Base 5.34.0 + PL_strategy_socket@Base 5.34.0 + PL_strategy_socketpair@Base 5.34.0 + PL_strict_utf8_dfa_tab@Base 5.34.0 + PL_subversion@Base 5.34.0 + PL_sv_placeholder@Base 5.34.0 + PL_thr_key@Base 5.34.0 + PL_use_safe_putenv@Base 5.34.0 + PL_user_def_props@Base 5.34.0 + PL_user_def_props_aTHX@Base 5.34.0 + PL_user_prop_mutex@Base 5.34.0 + PL_utf8skip@Base 5.34.0 + PL_uudmap@Base 5.34.0 + PL_uuemap@Base 5.34.0 + PL_valid_types_IVX@Base 5.34.0 + PL_valid_types_IV_set@Base 5.34.0 + PL_valid_types_NVX@Base 5.34.0 + PL_valid_types_NV_set@Base 5.34.0 + PL_valid_types_PVX@Base 5.34.0 + PL_valid_types_RV@Base 5.34.0 + PL_varies@Base 5.34.0 + PL_varies_bitmask@Base 5.34.0 + PL_version@Base 5.34.0 + PL_veto_cleanup@Base 5.34.0 + PL_warn_nl@Base 5.34.0 + PL_warn_nosemi@Base 5.34.0 + PL_warn_reserved@Base 5.34.0 + PL_warn_uninit@Base 5.34.0 + PL_warn_uninit_sv@Base 5.34.0 + PL_watch_pvx@Base 5.34.0 + PerlIOBase_binmode@Base 5.34.0 + PerlIOBase_clearerr@Base 5.34.0 + PerlIOBase_close@Base 5.34.0 + PerlIOBase_dup@Base 5.34.0 + PerlIOBase_eof@Base 5.34.0 + PerlIOBase_error@Base 5.34.0 + PerlIOBase_fileno@Base 5.34.0 + PerlIOBase_flush_linebuf@Base 5.34.0 + PerlIOBase_noop_fail@Base 5.34.0 + PerlIOBase_noop_ok@Base 5.34.0 + PerlIOBase_open@Base 5.34.0 + PerlIOBase_popped@Base 5.34.0 + PerlIOBase_pushed@Base 5.34.0 + PerlIOBase_read@Base 5.34.0 + PerlIOBase_setlinebuf@Base 5.34.0 + PerlIOBase_unread@Base 5.34.0 + PerlIOBuf_bufsiz@Base 5.34.0 + PerlIOBuf_close@Base 5.34.0 + PerlIOBuf_dup@Base 5.34.0 + PerlIOBuf_fill@Base 5.34.0 + PerlIOBuf_flush@Base 5.34.0 + PerlIOBuf_get_base@Base 5.34.0 + PerlIOBuf_get_cnt@Base 5.34.0 + PerlIOBuf_get_ptr@Base 5.34.0 + PerlIOBuf_open@Base 5.34.0 + PerlIOBuf_popped@Base 5.34.0 + PerlIOBuf_pushed@Base 5.34.0 + PerlIOBuf_read@Base 5.34.0 + PerlIOBuf_seek@Base 5.34.0 + PerlIOBuf_set_ptrcnt@Base 5.34.0 + PerlIOBuf_tell@Base 5.34.0 + PerlIOBuf_unread@Base 5.34.0 + PerlIOBuf_write@Base 5.34.0 + PerlIOCrlf_binmode@Base 5.34.0 + PerlIOCrlf_flush@Base 5.34.0 + PerlIOCrlf_get_cnt@Base 5.34.0 + PerlIOCrlf_pushed@Base 5.34.0 + PerlIOCrlf_set_ptrcnt@Base 5.34.0 + PerlIOCrlf_unread@Base 5.34.0 + PerlIOCrlf_write@Base 5.34.0 + PerlIOPending_close@Base 5.34.0 + PerlIOPending_fill@Base 5.34.0 + PerlIOPending_flush@Base 5.34.0 + PerlIOPending_pushed@Base 5.34.0 + PerlIOPending_read@Base 5.34.0 + PerlIOPending_seek@Base 5.34.0 + PerlIOPending_set_ptrcnt@Base 5.34.0 + PerlIOPop_pushed@Base 5.34.0 + PerlIORaw_pushed@Base 5.34.0 + PerlIOStdio_clearerr@Base 5.34.0 + PerlIOStdio_close@Base 5.34.0 + PerlIOStdio_dup@Base 5.34.0 + PerlIOStdio_eof@Base 5.34.0 + PerlIOStdio_error@Base 5.34.0 + PerlIOStdio_fileno@Base 5.34.0 + PerlIOStdio_fill@Base 5.34.0 + PerlIOStdio_flush@Base 5.34.0 + PerlIOStdio_mode@Base 5.34.0 + PerlIOStdio_open@Base 5.34.0 + PerlIOStdio_pushed@Base 5.34.0 + PerlIOStdio_read@Base 5.34.0 + PerlIOStdio_seek@Base 5.34.0 + PerlIOStdio_setlinebuf@Base 5.34.0 + PerlIOStdio_tell@Base 5.34.0 + PerlIOStdio_unread@Base 5.34.0 + PerlIOStdio_write@Base 5.34.0 + PerlIOUnix_close@Base 5.34.0 + PerlIOUnix_dup@Base 5.34.0 + PerlIOUnix_fileno@Base 5.34.0 + PerlIOUnix_oflags@Base 5.34.0 + PerlIOUnix_open@Base 5.34.0 + PerlIOUnix_pushed@Base 5.34.0 + PerlIOUnix_read@Base 5.34.0 + PerlIOUnix_refcnt@Base 5.34.0 + PerlIOUnix_refcnt_dec@Base 5.34.0 + PerlIOUnix_refcnt_inc@Base 5.34.0 + PerlIOUnix_seek@Base 5.34.0 + PerlIOUnix_tell@Base 5.34.0 + PerlIOUnix_write@Base 5.34.0 + PerlIOUtf8_pushed@Base 5.34.0 + PerlIO__close@Base 5.34.0 + PerlIO_allocate@Base 5.34.0 + PerlIO_apply_layera@Base 5.34.0 + PerlIO_apply_layers@Base 5.34.0 + PerlIO_arg_fetch@Base 5.34.0 + PerlIO_binmode@Base 5.34.0 + PerlIO_byte@Base 5.34.0 + PerlIO_canset_cnt@Base 5.34.0 + PerlIO_cleantable@Base 5.34.0 + PerlIO_cleanup@Base 5.34.0 + PerlIO_clone@Base 5.34.0 + PerlIO_clone_list@Base 5.34.0 + PerlIO_crlf@Base 5.34.0 + PerlIO_debug@Base 5.34.0 + PerlIO_default_buffer@Base 5.34.0 + PerlIO_default_layer@Base 5.34.0 + PerlIO_default_layers@Base 5.34.0 + PerlIO_define_layer@Base 5.34.0 + PerlIO_destruct@Base 5.34.0 + PerlIO_exportFILE@Base 5.34.0 + PerlIO_fast_gets@Base 5.34.0 + PerlIO_fdopen@Base 5.34.0 + PerlIO_fdupopen@Base 5.34.0 + PerlIO_findFILE@Base 5.34.0 + PerlIO_find_layer@Base 5.34.0 + PerlIO_get_layers@Base 5.34.0 + PerlIO_getc@Base 5.34.0 + PerlIO_getname@Base 5.34.0 + PerlIO_getpos@Base 5.34.0 + PerlIO_has_base@Base 5.34.0 + PerlIO_has_cntptr@Base 5.34.0 + PerlIO_importFILE@Base 5.34.0 + PerlIO_init@Base 5.34.0 + PerlIO_intmode2str@Base 5.34.0 + PerlIO_isutf8@Base 5.34.0 + PerlIO_layer_fetch@Base 5.34.0 + PerlIO_list_alloc@Base 5.34.0 + PerlIO_list_free@Base 5.34.0 + PerlIO_list_push@Base 5.34.0 + PerlIO_modestr@Base 5.34.0 + PerlIO_open@Base 5.34.0 + PerlIO_openn@Base 5.34.0 + PerlIO_parse_layers@Base 5.34.0 + PerlIO_pending@Base 5.34.0 + PerlIO_perlio@Base 5.34.0 + PerlIO_pop@Base 5.34.0 + PerlIO_printf@Base 5.34.0 + PerlIO_push@Base 5.34.0 + PerlIO_putc@Base 5.34.0 + PerlIO_puts@Base 5.34.0 + PerlIO_raw@Base 5.34.0 + PerlIO_releaseFILE@Base 5.34.0 + PerlIO_remove@Base 5.34.0 + PerlIO_reopen@Base 5.34.0 + PerlIO_resolve_layers@Base 5.34.0 + PerlIO_rewind@Base 5.34.0 + PerlIO_setpos@Base 5.34.0 + PerlIO_stdio@Base 5.34.0 + PerlIO_stdoutf@Base 5.34.0 + PerlIO_stdstreams@Base 5.34.0 + PerlIO_sv_dup@Base 5.34.0 + PerlIO_tab_sv@Base 5.34.0 + PerlIO_teardown@Base 5.34.0 + PerlIO_tmpfile@Base 5.34.0 + PerlIO_tmpfile_flags@Base 5.34.0 + PerlIO_ungetc@Base 5.34.0 + PerlIO_unix@Base 5.34.0 + PerlIO_utf8@Base 5.34.0 + PerlIO_vprintf@Base 5.34.0 + Perl_Gv_AMupdate@Base 5.34.0 + Perl_PerlIO_clearerr@Base 5.34.0 + Perl_PerlIO_close@Base 5.34.0 + Perl_PerlIO_context_layers@Base 5.34.0 + Perl_PerlIO_eof@Base 5.34.0 + Perl_PerlIO_error@Base 5.34.0 + Perl_PerlIO_fileno@Base 5.34.0 + Perl_PerlIO_fill@Base 5.34.0 + Perl_PerlIO_flush@Base 5.34.0 + Perl_PerlIO_get_base@Base 5.34.0 + Perl_PerlIO_get_bufsiz@Base 5.34.0 + Perl_PerlIO_get_cnt@Base 5.34.0 + Perl_PerlIO_get_ptr@Base 5.34.0 + Perl_PerlIO_read@Base 5.34.0 + Perl_PerlIO_restore_errno@Base 5.34.0 + Perl_PerlIO_save_errno@Base 5.34.0 + Perl_PerlIO_seek@Base 5.34.0 + Perl_PerlIO_set_cnt@Base 5.34.0 + Perl_PerlIO_set_ptrcnt@Base 5.34.0 + Perl_PerlIO_setlinebuf@Base 5.34.0 + Perl_PerlIO_stderr@Base 5.34.0 + Perl_PerlIO_stdin@Base 5.34.0 + Perl_PerlIO_stdout@Base 5.34.0 + Perl_PerlIO_tell@Base 5.34.0 + Perl_PerlIO_unread@Base 5.34.0 + Perl_PerlIO_write@Base 5.34.0 + Perl_PerlLIO_dup2_cloexec@Base 5.34.0 + Perl_PerlLIO_dup_cloexec@Base 5.34.0 + Perl_PerlLIO_open3_cloexec@Base 5.34.0 + Perl_PerlLIO_open_cloexec@Base 5.34.0 + Perl_PerlProc_pipe_cloexec@Base 5.34.0 + Perl_PerlSock_accept_cloexec@Base 5.34.0 + Perl_PerlSock_socket_cloexec@Base 5.34.0 + Perl_PerlSock_socketpair_cloexec@Base 5.34.0 + Perl_Slab_Alloc@Base 5.34.0 + Perl_Slab_Free@Base 5.34.0 + Perl__add_range_to_invlist@Base 5.34.0 + Perl__byte_dump_string@Base 5.34.0 + Perl__force_out_malformed_utf8_message@Base 5.34.0 + Perl__inverse_folds@Base 5.34.0 + Perl__invlistEQ@Base 5.34.0 + Perl__invlist_dump@Base 5.34.0 + Perl__invlist_intersection_maybe_complement_2nd@Base 5.34.0 + Perl__invlist_invert@Base 5.34.0 + Perl__invlist_search@Base 5.34.0 + Perl__invlist_union_maybe_complement_2nd@Base 5.34.0 + Perl__is_cur_LC_category_utf8@Base 5.34.0 + Perl__is_in_locale_category@Base 5.34.0 + Perl__is_uni_FOO@Base 5.34.0 + Perl__is_uni_perl_idcont@Base 5.34.0 + Perl__is_uni_perl_idstart@Base 5.34.0 + Perl__is_utf8_FOO@Base 5.34.0 + Perl__is_utf8_perl_idcont@Base 5.34.0 + Perl__is_utf8_perl_idstart@Base 5.34.0 + Perl__mem_collxfrm@Base 5.34.0 + Perl__new_invlist@Base 5.34.0 + Perl__new_invlist_C_array@Base 5.34.0 + Perl__setup_canned_invlist@Base 5.34.0 + Perl__to_fold_latin1@Base 5.34.0 + Perl__to_uni_fold_flags@Base 5.34.0 + Perl__to_upper_title_latin1@Base 5.34.0 + Perl__to_utf8_fold_flags@Base 5.34.0 + Perl__to_utf8_lower_flags@Base 5.34.0 + Perl__to_utf8_title_flags@Base 5.34.0 + Perl__to_utf8_upper_flags@Base 5.34.0 + Perl__utf8n_to_uvchr_msgs_helper@Base 5.34.0 + Perl__warn_problematic_locale@Base 5.34.0 + Perl_abort_execution@Base 5.34.0 + Perl_alloc_LOGOP@Base 5.34.0 + Perl_alloccopstash@Base 5.34.0 + Perl_allocmy@Base 5.34.0 + Perl_amagic_call@Base 5.34.0 + Perl_amagic_deref_call@Base 5.34.0 + Perl_amagic_is_enabled@Base 5.34.0 + Perl_any_dup@Base 5.34.0 + Perl_apply@Base 5.34.0 + Perl_apply_attrs_string@Base 5.34.0 + Perl_atfork_lock@Base 5.34.0 + Perl_atfork_unlock@Base 5.34.0 + Perl_av_arylen_p@Base 5.34.0 + Perl_av_clear@Base 5.34.0 + Perl_av_create_and_push@Base 5.34.0 + Perl_av_create_and_unshift_one@Base 5.34.0 + Perl_av_delete@Base 5.34.0 + Perl_av_exists@Base 5.34.0 + Perl_av_extend@Base 5.34.0 + Perl_av_extend_guts@Base 5.34.0 + Perl_av_fetch@Base 5.34.0 + Perl_av_fill@Base 5.34.0 + Perl_av_iter_p@Base 5.34.0 + Perl_av_len@Base 5.34.0 + Perl_av_make@Base 5.34.0 + Perl_av_nonelem@Base 5.34.0 + Perl_av_pop@Base 5.34.0 + Perl_av_push@Base 5.34.0 + Perl_av_reify@Base 5.34.0 + Perl_av_shift@Base 5.34.0 + Perl_av_store@Base 5.34.0 + Perl_av_undef@Base 5.34.0 + Perl_av_unshift@Base 5.34.0 + Perl_bind_match@Base 5.34.0 + Perl_block_end@Base 5.34.0 + Perl_block_gimme@Base 5.34.0 + Perl_block_start@Base 5.34.0 + Perl_blockhook_register@Base 5.34.0 + Perl_boot_core_PerlIO@Base 5.34.0 + Perl_boot_core_UNIVERSAL@Base 5.34.0 + Perl_boot_core_mro@Base 5.34.0 + Perl_bytes_cmp_utf8@Base 5.34.0 + Perl_bytes_from_utf8@Base 5.34.0 + Perl_bytes_from_utf8_loc@Base 5.34.0 + Perl_bytes_to_utf8@Base 5.34.0 + Perl_call_argv@Base 5.34.0 + Perl_call_atexit@Base 5.34.0 + Perl_call_list@Base 5.34.0 + Perl_call_method@Base 5.34.0 + Perl_call_pv@Base 5.34.0 + Perl_call_sv@Base 5.34.0 + Perl_caller_cx@Base 5.34.0 + Perl_calloc@Base 5.34.0 + Perl_cando@Base 5.34.0 + Perl_cast_i32@Base 5.34.0 + Perl_cast_iv@Base 5.34.0 + Perl_cast_ulong@Base 5.34.0 + Perl_cast_uv@Base 5.34.0 + Perl_check_utf8_print@Base 5.34.0 + Perl_ck_anoncode@Base 5.34.0 + Perl_ck_backtick@Base 5.34.0 + Perl_ck_bitop@Base 5.34.0 + Perl_ck_cmp@Base 5.34.0 + Perl_ck_concat@Base 5.34.0 + Perl_ck_defined@Base 5.34.0 + Perl_ck_delete@Base 5.34.0 + Perl_ck_each@Base 5.34.0 + Perl_ck_entersub_args_core@Base 5.34.0 + Perl_ck_entersub_args_list@Base 5.34.0 + Perl_ck_entersub_args_proto@Base 5.34.0 + Perl_ck_entersub_args_proto_or_list@Base 5.34.0 + Perl_ck_eof@Base 5.34.0 + Perl_ck_eval@Base 5.34.0 + Perl_ck_exec@Base 5.34.0 + Perl_ck_exists@Base 5.34.0 + Perl_ck_ftst@Base 5.34.0 + Perl_ck_fun@Base 5.34.0 + Perl_ck_glob@Base 5.34.0 + Perl_ck_grep@Base 5.34.0 + Perl_ck_index@Base 5.34.0 + Perl_ck_isa@Base 5.34.0 + Perl_ck_join@Base 5.34.0 + Perl_ck_length@Base 5.34.0 + Perl_ck_lfun@Base 5.34.0 + Perl_ck_listiob@Base 5.34.0 + Perl_ck_match@Base 5.34.0 + Perl_ck_method@Base 5.34.0 + Perl_ck_null@Base 5.34.0 + Perl_ck_open@Base 5.34.0 + Perl_ck_prototype@Base 5.34.0 + Perl_ck_readline@Base 5.34.0 + Perl_ck_refassign@Base 5.34.0 + Perl_ck_repeat@Base 5.34.0 + Perl_ck_require@Base 5.34.0 + Perl_ck_return@Base 5.34.0 + Perl_ck_rfun@Base 5.34.0 + Perl_ck_rvconst@Base 5.34.0 + Perl_ck_sassign@Base 5.34.0 + Perl_ck_select@Base 5.34.0 + Perl_ck_shift@Base 5.34.0 + Perl_ck_smartmatch@Base 5.34.0 + Perl_ck_sort@Base 5.34.0 + Perl_ck_spair@Base 5.34.0 + Perl_ck_split@Base 5.34.0 + Perl_ck_stringify@Base 5.34.0 + Perl_ck_subr@Base 5.34.0 + Perl_ck_substr@Base 5.34.0 + Perl_ck_svconst@Base 5.34.0 + Perl_ck_tell@Base 5.34.0 + Perl_ck_trunc@Base 5.34.0 + Perl_ck_trycatch@Base 5.34.0 + Perl_ck_warner@Base 5.34.0 + Perl_ck_warner_d@Base 5.34.0 + Perl_ckwarn@Base 5.34.0 + Perl_ckwarn_d@Base 5.34.0 + Perl_clear_defarray@Base 5.34.0 + Perl_clone_params_del@Base 5.34.0 + Perl_clone_params_new@Base 5.34.0 + Perl_closest_cop@Base 5.34.0 + Perl_cmpchain_extend@Base 5.34.0 + Perl_cmpchain_finish@Base 5.34.0 + Perl_cmpchain_start@Base 5.34.0 + Perl_cntrl_to_mnemonic@Base 5.34.0 + Perl_cop_fetch_label@Base 5.34.0 + Perl_cop_store_label@Base 5.34.0 + Perl_core_prototype@Base 5.34.0 + Perl_coresub_op@Base 5.34.0 + Perl_create_eval_scope@Base 5.34.0 + Perl_croak@Base 5.34.0 + Perl_croak_caller@Base 5.34.0 + Perl_croak_memory_wrap@Base 5.34.0 + Perl_croak_no_mem@Base 5.34.0 + Perl_croak_no_modify@Base 5.34.0 + Perl_croak_nocontext@Base 5.34.0 + Perl_croak_popstack@Base 5.34.0 + Perl_croak_sv@Base 5.34.0 + Perl_croak_xs_usage@Base 5.34.0 + Perl_csighandler1@Base 5.34.0 + Perl_csighandler3@Base 5.34.0 + Perl_csighandler@Base 5.34.0 + Perl_current_re_engine@Base 5.34.0 + Perl_custom_op_desc@Base 5.34.0 + Perl_custom_op_get_field@Base 5.34.0 + Perl_custom_op_name@Base 5.34.0 + Perl_custom_op_register@Base 5.34.0 + Perl_cv_ckproto_len_flags@Base 5.34.0 + Perl_cv_clone@Base 5.34.0 + Perl_cv_clone_into@Base 5.34.0 + Perl_cv_const_sv@Base 5.34.0 + Perl_cv_const_sv_or_av@Base 5.34.0 + Perl_cv_forget_slab@Base 5.34.0 + Perl_cv_get_call_checker@Base 5.34.0 + Perl_cv_get_call_checker_flags@Base 5.34.0 + Perl_cv_name@Base 5.34.0 + Perl_cv_set_call_checker@Base 5.34.0 + Perl_cv_set_call_checker_flags@Base 5.34.0 + Perl_cv_undef@Base 5.34.0 + Perl_cv_undef_flags@Base 5.34.0 + Perl_cvgv_from_hek@Base 5.34.0 + Perl_cvgv_set@Base 5.34.0 + Perl_cvstash_set@Base 5.34.0 + Perl_cx_dump@Base 5.34.0 + Perl_cx_dup@Base 5.34.0 + Perl_cxinc@Base 5.34.0 + Perl_deb@Base 5.34.0 + Perl_deb_nocontext@Base 5.34.0 + Perl_deb_stack_all@Base 5.34.0 + Perl_debop@Base 5.34.0 + Perl_debprofdump@Base 5.34.0 + Perl_debstack@Base 5.34.0 + Perl_debstackptrs@Base 5.34.0 + Perl_defelem_target@Base 5.34.0 + Perl_delete_eval_scope@Base 5.34.0 + Perl_delimcpy@Base 5.34.0 + Perl_delimcpy_no_escape@Base 5.34.0 + Perl_despatch_signals@Base 5.34.0 + Perl_die@Base 5.34.0 + Perl_die_nocontext@Base 5.34.0 + Perl_die_sv@Base 5.34.0 + Perl_die_unwind@Base 5.34.0 + Perl_dirp_dup@Base 5.34.0 + Perl_do_aexec5@Base 5.34.0 + Perl_do_aexec@Base 5.34.0 + Perl_do_binmode@Base 5.34.0 + Perl_do_close@Base 5.34.0 + Perl_do_dump_pad@Base 5.34.0 + Perl_do_eof@Base 5.34.0 + Perl_do_exec3@Base 5.34.0 + Perl_do_gv_dump@Base 5.34.0 + Perl_do_gvgv_dump@Base 5.34.0 + Perl_do_hv_dump@Base 5.34.0 + (arch=!hurd-any)Perl_do_ipcctl@Base 5.34.0 + (arch=!hurd-any)Perl_do_ipcget@Base 5.34.0 + Perl_do_join@Base 5.34.0 + Perl_do_kv@Base 5.34.0 + Perl_do_magic_dump@Base 5.34.0 + (arch=!hurd-any)Perl_do_msgrcv@Base 5.34.0 + (arch=!hurd-any)Perl_do_msgsnd@Base 5.34.0 + Perl_do_ncmp@Base 5.34.0 + Perl_do_op_dump@Base 5.34.0 + Perl_do_open6@Base 5.34.0 + Perl_do_open9@Base 5.34.0 + Perl_do_open@Base 5.34.0 + Perl_do_open_raw@Base 5.34.0 + Perl_do_openn@Base 5.34.0 + Perl_do_pmop_dump@Base 5.34.0 + Perl_do_print@Base 5.34.0 + Perl_do_readline@Base 5.34.0 + Perl_do_seek@Base 5.34.0 + (arch=!hurd-any)Perl_do_semop@Base 5.34.0 + (arch=!hurd-any)Perl_do_shmio@Base 5.34.0 + Perl_do_sprintf@Base 5.34.0 + Perl_do_sv_dump@Base 5.34.0 + Perl_do_sysseek@Base 5.34.0 + Perl_do_tell@Base 5.34.0 + Perl_do_trans@Base 5.34.0 + Perl_do_uniprop_match@Base 5.34.0 + Perl_do_vecget@Base 5.34.0 + Perl_do_vecset@Base 5.34.0 + Perl_do_vop@Base 5.34.0 + Perl_dofile@Base 5.34.0 + Perl_doing_taint@Base 5.34.0 + Perl_doref@Base 5.34.0 + Perl_dounwind@Base 5.34.0 + Perl_dowantarray@Base 5.34.0 + Perl_drand48_init_r@Base 5.34.0 + Perl_drand48_r@Base 5.34.0 + Perl_dump_all@Base 5.34.0 + Perl_dump_all_perl@Base 5.34.0 + Perl_dump_eval@Base 5.34.0 + Perl_dump_form@Base 5.34.0 + Perl_dump_indent@Base 5.34.0 + Perl_dump_packsubs@Base 5.34.0 + Perl_dump_packsubs_perl@Base 5.34.0 + Perl_dump_sub@Base 5.34.0 + Perl_dump_sub_perl@Base 5.34.0 + Perl_dump_vindent@Base 5.34.0 + Perl_dup_warnings@Base 5.34.0 + Perl_emulate_cop_io@Base 5.34.0 + Perl_eval_pv@Base 5.34.0 + Perl_eval_sv@Base 5.34.0 + Perl_fbm_compile@Base 5.34.0 + Perl_fbm_instr@Base 5.34.0 + Perl_filter_add@Base 5.34.0 + Perl_filter_del@Base 5.34.0 + Perl_filter_read@Base 5.34.0 + Perl_finalize_optree@Base 5.34.0 + Perl_find_lexical_cv@Base 5.34.0 + Perl_find_runcv@Base 5.34.0 + Perl_find_runcv_where@Base 5.34.0 + Perl_find_rundefsv@Base 5.34.0 + Perl_find_rundefsvoffset@Base 5.34.0 + Perl_find_script@Base 5.34.0 + Perl_foldEQ_utf8_flags@Base 5.34.0 + Perl_form@Base 5.34.0 + Perl_form_alien_digit_msg@Base 5.34.0 + Perl_form_cp_too_large_msg@Base 5.34.0 + Perl_form_nocontext@Base 5.34.0 + Perl_fp_dup@Base 5.34.0 + Perl_fprintf_nocontext@Base 5.34.0 + Perl_free_tied_hv_pool@Base 5.34.0 + Perl_free_tmps@Base 5.34.0 + Perl_get_and_check_backslash_N_name@Base 5.34.0 + Perl_get_av@Base 5.34.0 + Perl_get_context@Base 5.34.0 + Perl_get_cv@Base 5.34.0 + Perl_get_cvn_flags@Base 5.34.0 + Perl_get_db_sub@Base 5.34.0 + Perl_get_deprecated_property_msg@Base 5.34.0 + Perl_get_hash_seed@Base 5.34.0 + Perl_get_hv@Base 5.34.0 + Perl_get_no_modify@Base 5.34.0 + Perl_get_op_descs@Base 5.34.0 + Perl_get_op_names@Base 5.34.0 + Perl_get_opargs@Base 5.34.0 + Perl_get_ppaddr@Base 5.34.0 + Perl_get_prop_definition@Base 5.34.0 + Perl_get_prop_values@Base 5.34.0 + Perl_get_re_arg@Base 5.34.0 + Perl_get_regclass_nonbitmap_data@Base 5.34.0 + Perl_get_sv@Base 5.34.0 + Perl_get_vtbl@Base 5.34.0 + Perl_getcwd_sv@Base 5.34.0 + Perl_getenv_len@Base 5.34.0 + Perl_gmtime64_r@Base 5.34.0 + Perl_gp_dup@Base 5.34.0 + Perl_gp_free@Base 5.34.0 + Perl_gp_ref@Base 5.34.0 + Perl_grok_atoUV@Base 5.34.0 + Perl_grok_bin@Base 5.34.0 + Perl_grok_bin_oct_hex@Base 5.34.0 + Perl_grok_bslash_c@Base 5.34.0 + Perl_grok_bslash_o@Base 5.34.0 + Perl_grok_bslash_x@Base 5.34.0 + Perl_grok_hex@Base 5.34.0 + Perl_grok_infnan@Base 5.34.0 + Perl_grok_number@Base 5.34.0 + Perl_grok_number_flags@Base 5.34.0 + Perl_grok_numeric_radix@Base 5.34.0 + Perl_grok_oct@Base 5.34.0 + Perl_gv_AVadd@Base 5.34.0 + Perl_gv_HVadd@Base 5.34.0 + Perl_gv_IOadd@Base 5.34.0 + Perl_gv_SVadd@Base 5.34.0 + Perl_gv_add_by_type@Base 5.34.0 + Perl_gv_autoload_pv@Base 5.34.0 + Perl_gv_autoload_pvn@Base 5.34.0 + Perl_gv_autoload_sv@Base 5.34.0 + Perl_gv_check@Base 5.34.0 + Perl_gv_const_sv@Base 5.34.0 + Perl_gv_dump@Base 5.34.0 + Perl_gv_efullname3@Base 5.34.0 + Perl_gv_efullname4@Base 5.34.0 + Perl_gv_efullname@Base 5.34.0 + Perl_gv_fetchfile@Base 5.34.0 + Perl_gv_fetchfile_flags@Base 5.34.0 + Perl_gv_fetchmeth_pv@Base 5.34.0 + Perl_gv_fetchmeth_pv_autoload@Base 5.34.0 + Perl_gv_fetchmeth_pvn@Base 5.34.0 + Perl_gv_fetchmeth_pvn_autoload@Base 5.34.0 + Perl_gv_fetchmeth_sv@Base 5.34.0 + Perl_gv_fetchmeth_sv_autoload@Base 5.34.0 + Perl_gv_fetchmethod@Base 5.34.0 + Perl_gv_fetchmethod_autoload@Base 5.34.0 + Perl_gv_fetchmethod_pv_flags@Base 5.34.0 + Perl_gv_fetchmethod_pvn_flags@Base 5.34.0 + Perl_gv_fetchmethod_sv_flags@Base 5.34.0 + Perl_gv_fetchpv@Base 5.34.0 + Perl_gv_fetchpvn_flags@Base 5.34.0 + Perl_gv_fetchsv@Base 5.34.0 + Perl_gv_fullname3@Base 5.34.0 + Perl_gv_fullname4@Base 5.34.0 + Perl_gv_fullname@Base 5.34.0 + Perl_gv_handler@Base 5.34.0 + Perl_gv_init_pv@Base 5.34.0 + Perl_gv_init_pvn@Base 5.34.0 + Perl_gv_init_sv@Base 5.34.0 + Perl_gv_name_set@Base 5.34.0 + Perl_gv_override@Base 5.34.0 + Perl_gv_setref@Base 5.34.0 + Perl_gv_stashpv@Base 5.34.0 + Perl_gv_stashpvn@Base 5.34.0 + Perl_gv_stashsv@Base 5.34.0 + Perl_gv_stashsvpvn_cached@Base 5.34.0 + Perl_gv_try_downgrade@Base 5.34.0 + Perl_he_dup@Base 5.34.0 + Perl_hek_dup@Base 5.34.0 + Perl_hfree_next_entry@Base 5.34.0 + Perl_huge@Base 5.34.0 + Perl_hv_backreferences_p@Base 5.34.0 + Perl_hv_bucket_ratio@Base 5.34.0 + Perl_hv_clear@Base 5.34.0 + Perl_hv_clear_placeholders@Base 5.34.0 + Perl_hv_common@Base 5.34.0 + Perl_hv_common_key_len@Base 5.34.0 + Perl_hv_copy_hints_hv@Base 5.34.0 + Perl_hv_delayfree_ent@Base 5.34.0 + Perl_hv_delete@Base 5.34.0 + Perl_hv_delete_ent@Base 5.34.0 + Perl_hv_eiter_p@Base 5.34.0 + Perl_hv_eiter_set@Base 5.34.0 + Perl_hv_ename_add@Base 5.34.0 + Perl_hv_ename_delete@Base 5.34.0 + Perl_hv_exists@Base 5.34.0 + Perl_hv_exists_ent@Base 5.34.0 + Perl_hv_fetch@Base 5.34.0 + Perl_hv_fetch_ent@Base 5.34.0 + Perl_hv_fill@Base 5.34.0 + Perl_hv_free_ent@Base 5.34.0 + Perl_hv_iterinit@Base 5.34.0 + Perl_hv_iterkey@Base 5.34.0 + Perl_hv_iterkeysv@Base 5.34.0 + Perl_hv_iternext@Base 5.34.0 + Perl_hv_iternext_flags@Base 5.34.0 + Perl_hv_iternextsv@Base 5.34.0 + Perl_hv_iterval@Base 5.34.0 + Perl_hv_kill_backrefs@Base 5.34.0 + Perl_hv_ksplit@Base 5.34.0 + Perl_hv_magic@Base 5.34.0 + Perl_hv_name_set@Base 5.34.0 + Perl_hv_placeholders_get@Base 5.34.0 + Perl_hv_placeholders_p@Base 5.34.0 + Perl_hv_placeholders_set@Base 5.34.0 + Perl_hv_pushkv@Base 5.34.0 + Perl_hv_rand_set@Base 5.34.0 + Perl_hv_riter_p@Base 5.34.0 + Perl_hv_riter_set@Base 5.34.0 + Perl_hv_scalar@Base 5.34.0 + Perl_hv_store@Base 5.34.0 + Perl_hv_store_ent@Base 5.34.0 + Perl_hv_store_flags@Base 5.34.0 + Perl_hv_undef_flags@Base 5.34.0 + Perl_init_argv_symbols@Base 5.34.0 + Perl_init_constants@Base 5.34.0 + Perl_init_dbargs@Base 5.34.0 + Perl_init_debugger@Base 5.34.0 + Perl_init_i18nl10n@Base 5.34.0 + Perl_init_i18nl14n@Base 5.34.0 + Perl_init_named_cv@Base 5.34.0 + Perl_init_stacks@Base 5.34.0 + Perl_init_tm@Base 5.34.0 + Perl_init_uniprops@Base 5.34.0 + Perl_instr@Base 5.34.0 + Perl_intro_my@Base 5.34.0 + Perl_invert@Base 5.34.0 + Perl_invlist_clone@Base 5.34.0 + Perl_invmap_dump@Base 5.34.0 + Perl_io_close@Base 5.34.0 + Perl_isSCRIPT_RUN@Base 5.34.0 + Perl_is_grapheme@Base 5.34.0 + Perl_is_lvalue_sub@Base 5.34.0 + Perl_is_utf8_char@Base 5.34.0 + Perl_is_utf8_char_buf@Base 5.34.0 + Perl_is_utf8_char_helper@Base 5.34.0 + Perl_is_utf8_string_loc@Base 5.34.0 + Perl_isinfnan@Base 5.34.0 + Perl_isinfnansv@Base 5.34.0 + Perl_jmaybe@Base 5.34.0 + Perl_keyword@Base 5.34.0 + Perl_keyword_plugin_standard@Base 5.34.0 + Perl_langinfo@Base 5.34.0 + Perl_leave_adjust_stacks@Base 5.34.0 + Perl_leave_scope@Base 5.34.0 + Perl_lex_bufutf8@Base 5.34.0 + Perl_lex_discard_to@Base 5.34.0 + Perl_lex_grow_linestr@Base 5.34.0 + Perl_lex_next_chunk@Base 5.34.0 + Perl_lex_peek_unichar@Base 5.34.0 + Perl_lex_read_space@Base 5.34.0 + Perl_lex_read_to@Base 5.34.0 + Perl_lex_read_unichar@Base 5.34.0 + Perl_lex_start@Base 5.34.0 + Perl_lex_stuff_pv@Base 5.34.0 + Perl_lex_stuff_pvn@Base 5.34.0 + Perl_lex_stuff_sv@Base 5.34.0 + Perl_lex_unstuff@Base 5.34.0 + Perl_list@Base 5.34.0 + Perl_load_charnames@Base 5.34.0 + Perl_load_module@Base 5.34.0 + Perl_load_module_nocontext@Base 5.34.0 + Perl_localize@Base 5.34.0 + Perl_localtime64_r@Base 5.34.0 + Perl_looks_like_number@Base 5.34.0 + Perl_magic_clear_all_env@Base 5.34.0 + Perl_magic_cleararylen_p@Base 5.34.0 + Perl_magic_clearenv@Base 5.34.0 + Perl_magic_clearhint@Base 5.34.0 + Perl_magic_clearhints@Base 5.34.0 + Perl_magic_clearisa@Base 5.34.0 + Perl_magic_clearpack@Base 5.34.0 + Perl_magic_clearsig@Base 5.34.0 + Perl_magic_copycallchecker@Base 5.34.0 + Perl_magic_dump@Base 5.34.0 + Perl_magic_existspack@Base 5.34.0 + Perl_magic_freearylen_p@Base 5.34.0 + Perl_magic_freecollxfrm@Base 5.34.0 + Perl_magic_freemglob@Base 5.34.0 + Perl_magic_freeovrld@Base 5.34.0 + Perl_magic_freeutf8@Base 5.34.0 + Perl_magic_get@Base 5.34.0 + Perl_magic_getarylen@Base 5.34.0 + Perl_magic_getdebugvar@Base 5.34.0 + Perl_magic_getdefelem@Base 5.34.0 + Perl_magic_getnkeys@Base 5.34.0 + Perl_magic_getpack@Base 5.34.0 + Perl_magic_getpos@Base 5.34.0 + Perl_magic_getsig@Base 5.34.0 + Perl_magic_getsubstr@Base 5.34.0 + Perl_magic_gettaint@Base 5.34.0 + Perl_magic_getuvar@Base 5.34.0 + Perl_magic_getvec@Base 5.34.0 + Perl_magic_killbackrefs@Base 5.34.0 + Perl_magic_methcall@Base 5.34.0 + Perl_magic_nextpack@Base 5.34.0 + Perl_magic_regdata_cnt@Base 5.34.0 + Perl_magic_regdatum_get@Base 5.34.0 + Perl_magic_regdatum_set@Base 5.34.0 + Perl_magic_scalarpack@Base 5.34.0 + Perl_magic_set@Base 5.34.0 + Perl_magic_set_all_env@Base 5.34.0 + Perl_magic_setarylen@Base 5.34.0 + Perl_magic_setcollxfrm@Base 5.34.0 + Perl_magic_setdbline@Base 5.34.0 + Perl_magic_setdebugvar@Base 5.34.0 + Perl_magic_setdefelem@Base 5.34.0 + Perl_magic_setenv@Base 5.34.0 + Perl_magic_sethint@Base 5.34.0 + Perl_magic_setisa@Base 5.34.0 + Perl_magic_setlvref@Base 5.34.0 + Perl_magic_setmglob@Base 5.34.0 + Perl_magic_setnkeys@Base 5.34.0 + Perl_magic_setnonelem@Base 5.34.0 + Perl_magic_setpack@Base 5.34.0 + Perl_magic_setpos@Base 5.34.0 + Perl_magic_setregexp@Base 5.34.0 + Perl_magic_setsig@Base 5.34.0 + Perl_magic_setsubstr@Base 5.34.0 + Perl_magic_settaint@Base 5.34.0 + Perl_magic_setutf8@Base 5.34.0 + Perl_magic_setuvar@Base 5.34.0 + Perl_magic_setvec@Base 5.34.0 + Perl_magic_sizepack@Base 5.34.0 + Perl_magic_wipepack@Base 5.34.0 + Perl_malloc@Base 5.34.0 + Perl_markstack_grow@Base 5.34.0 + Perl_mem_collxfrm@Base 5.34.0 + Perl_mess@Base 5.34.0 + Perl_mess_nocontext@Base 5.34.0 + Perl_mess_sv@Base 5.34.0 + Perl_mfree@Base 5.34.0 + Perl_mg_clear@Base 5.34.0 + Perl_mg_copy@Base 5.34.0 + Perl_mg_dup@Base 5.34.0 + Perl_mg_find@Base 5.34.0 + Perl_mg_find_mglob@Base 5.34.0 + Perl_mg_findext@Base 5.34.0 + Perl_mg_free@Base 5.34.0 + Perl_mg_free_type@Base 5.34.0 + Perl_mg_freeext@Base 5.34.0 + Perl_mg_get@Base 5.34.0 + Perl_mg_length@Base 5.34.0 + Perl_mg_localize@Base 5.34.0 + Perl_mg_magical@Base 5.34.0 + Perl_mg_set@Base 5.34.0 + Perl_mg_size@Base 5.34.0 + Perl_mini_mktime@Base 5.34.0 + Perl_mode_from_discipline@Base 5.34.0 + Perl_more_bodies@Base 5.34.0 + Perl_moreswitches@Base 5.34.0 + Perl_mro_get_from_name@Base 5.34.0 + Perl_mro_get_linear_isa@Base 5.34.0 + Perl_mro_get_private_data@Base 5.34.0 + Perl_mro_isa_changed_in@Base 5.34.0 + Perl_mro_meta_dup@Base 5.34.0 + Perl_mro_meta_init@Base 5.34.0 + Perl_mro_method_changed_in@Base 5.34.0 + Perl_mro_package_moved@Base 5.34.0 + Perl_mro_register@Base 5.34.0 + Perl_mro_set_mro@Base 5.34.0 + Perl_mro_set_private_data@Base 5.34.0 + Perl_multiconcat_stringify@Base 5.34.0 + Perl_multideref_stringify@Base 5.34.0 + Perl_my_atof2@Base 5.34.0 + Perl_my_atof3@Base 5.34.0 + Perl_my_atof@Base 5.34.0 + Perl_my_attrs@Base 5.34.0 + Perl_my_clearenv@Base 5.34.0 + Perl_my_cxt_init@Base 5.34.0 + Perl_my_dirfd@Base 5.34.0 + Perl_my_exit@Base 5.34.0 + Perl_my_failure_exit@Base 5.34.0 + Perl_my_fflush_all@Base 5.34.0 + Perl_my_fork@Base 5.34.0 + Perl_my_lstat@Base 5.34.0 + Perl_my_lstat_flags@Base 5.34.0 + Perl_my_mkostemp_cloexec@Base 5.34.0 + Perl_my_mkstemp_cloexec@Base 5.34.0 + Perl_my_pclose@Base 5.34.0 + Perl_my_popen@Base 5.34.0 + Perl_my_popen_list@Base 5.34.0 + Perl_my_setenv@Base 5.34.0 + Perl_my_snprintf@Base 5.34.0 + Perl_my_socketpair@Base 5.34.0 + Perl_my_stat@Base 5.34.0 + Perl_my_stat_flags@Base 5.34.0 + Perl_my_strerror@Base 5.34.0 + Perl_my_strftime@Base 5.34.0 + Perl_my_strlcat@Base 5.34.0 + Perl_my_strlcpy@Base 5.34.0 + Perl_my_strtod@Base 5.34.0 + Perl_my_unexec@Base 5.34.0 + Perl_my_vsnprintf@Base 5.34.0 + Perl_newANONATTRSUB@Base 5.34.0 + Perl_newANONHASH@Base 5.34.0 + Perl_newANONLIST@Base 5.34.0 + Perl_newANONSUB@Base 5.34.0 + Perl_newASSIGNOP@Base 5.34.0 + Perl_newATTRSUB_x@Base 5.34.0 + Perl_newAV@Base 5.34.0 + Perl_newAVREF@Base 5.34.0 + Perl_newBINOP@Base 5.34.0 + Perl_newCONDOP@Base 5.34.0 + Perl_newCONSTSUB@Base 5.34.0 + Perl_newCONSTSUB_flags@Base 5.34.0 + Perl_newCVREF@Base 5.34.0 + Perl_newDEFSVOP@Base 5.34.0 + Perl_newFORM@Base 5.34.0 + Perl_newFOROP@Base 5.34.0 + Perl_newGIVENOP@Base 5.34.0 + Perl_newGP@Base 5.34.0 + Perl_newGVOP@Base 5.34.0 + Perl_newGVREF@Base 5.34.0 + Perl_newGVgen_flags@Base 5.34.0 + Perl_newHV@Base 5.34.0 + Perl_newHVREF@Base 5.34.0 + Perl_newHVhv@Base 5.34.0 + Perl_newIO@Base 5.34.0 + Perl_newLISTOP@Base 5.34.0 + Perl_newLOGOP@Base 5.34.0 + Perl_newLOOPEX@Base 5.34.0 + Perl_newLOOPOP@Base 5.34.0 + Perl_newMETHOP@Base 5.34.0 + Perl_newMETHOP_named@Base 5.34.0 + Perl_newMYSUB@Base 5.34.0 + Perl_newNULLLIST@Base 5.34.0 + Perl_newOP@Base 5.34.0 + Perl_newPADNAMELIST@Base 5.34.0 + Perl_newPADNAMEouter@Base 5.34.0 + Perl_newPADNAMEpvn@Base 5.34.0 + Perl_newPADOP@Base 5.34.0 + Perl_newPMOP@Base 5.34.0 + Perl_newPROG@Base 5.34.0 + Perl_newPVOP@Base 5.34.0 + Perl_newRANGE@Base 5.34.0 + Perl_newRV@Base 5.34.0 + Perl_newRV_noinc@Base 5.34.0 + Perl_newSLICEOP@Base 5.34.0 + Perl_newSTATEOP@Base 5.34.0 + Perl_newSTUB@Base 5.34.0 + Perl_newSUB@Base 5.34.0 + Perl_newSV@Base 5.34.0 + Perl_newSVOP@Base 5.34.0 + Perl_newSVREF@Base 5.34.0 + Perl_newSV_type@Base 5.34.0 + Perl_newSVavdefelem@Base 5.34.0 + Perl_newSVhek@Base 5.34.0 + Perl_newSViv@Base 5.34.0 + Perl_newSVnv@Base 5.34.0 + Perl_newSVpv@Base 5.34.0 + Perl_newSVpv_share@Base 5.34.0 + Perl_newSVpvf@Base 5.34.0 + Perl_newSVpvf_nocontext@Base 5.34.0 + Perl_newSVpvn@Base 5.34.0 + Perl_newSVpvn_flags@Base 5.34.0 + Perl_newSVpvn_share@Base 5.34.0 + Perl_newSVrv@Base 5.34.0 + Perl_newSVsv@Base 5.34.0 + Perl_newSVsv_flags@Base 5.34.0 + Perl_newSVuv@Base 5.34.0 + Perl_newTRYCATCHOP@Base 5.34.0 + Perl_newUNOP@Base 5.34.0 + Perl_newUNOP_AUX@Base 5.34.0 + Perl_newWHENOP@Base 5.34.0 + Perl_newWHILEOP@Base 5.34.0 + Perl_newXS@Base 5.34.0 + Perl_newXS_deffile@Base 5.34.0 + Perl_newXS_flags@Base 5.34.0 + Perl_newXS_len_flags@Base 5.34.0 + Perl_new_stackinfo@Base 5.34.0 + Perl_new_version@Base 5.34.0 + Perl_new_warnings_bitfield@Base 5.34.0 + Perl_nextargv@Base 5.34.0 + Perl_ninstr@Base 5.34.0 + Perl_no_bareword_filehandle@Base 5.34.0 + Perl_noperl_die@Base 5.34.0 + Perl_nothreadhook@Base 5.34.0 + Perl_notify_parser_that_changed_to_utf8@Base 5.34.0 + Perl_oopsAV@Base 5.34.0 + Perl_oopsHV@Base 5.34.0 + Perl_op_append_elem@Base 5.34.0 + Perl_op_append_list@Base 5.34.0 + Perl_op_class@Base 5.34.0 + Perl_op_clear@Base 5.34.0 + Perl_op_contextualize@Base 5.34.0 + Perl_op_convert_list@Base 5.34.0 + Perl_op_dump@Base 5.34.0 + Perl_op_free@Base 5.34.0 + Perl_op_linklist@Base 5.34.0 + Perl_op_lvalue_flags@Base 5.34.0 + Perl_op_null@Base 5.34.0 + Perl_op_parent@Base 5.34.0 + Perl_op_prepend_elem@Base 5.34.0 + Perl_op_refcnt_lock@Base 5.34.0 + Perl_op_refcnt_unlock@Base 5.34.0 + Perl_op_scope@Base 5.34.0 + Perl_op_sibling_splice@Base 5.34.0 + Perl_op_unscope@Base 5.34.0 + Perl_opslab_force_free@Base 5.34.0 + Perl_opslab_free@Base 5.34.0 + Perl_opslab_free_nopad@Base 5.34.0 + Perl_optimize_optree@Base 5.34.0 + Perl_pack_cat@Base 5.34.0 + Perl_package@Base 5.34.0 + Perl_package_version@Base 5.34.0 + Perl_packlist@Base 5.34.0 + Perl_pad_add_anon@Base 5.34.0 + Perl_pad_add_name_pv@Base 5.34.0 + Perl_pad_add_name_pvn@Base 5.34.0 + Perl_pad_add_name_sv@Base 5.34.0 + Perl_pad_add_weakref@Base 5.34.0 + Perl_pad_alloc@Base 5.34.0 + Perl_pad_block_start@Base 5.34.0 + Perl_pad_compname_type@Base 5.34.0 + Perl_pad_findmy_pv@Base 5.34.0 + Perl_pad_findmy_pvn@Base 5.34.0 + Perl_pad_findmy_sv@Base 5.34.0 + Perl_pad_fixup_inner_anons@Base 5.34.0 + Perl_pad_free@Base 5.34.0 + Perl_pad_leavemy@Base 5.34.0 + Perl_pad_new@Base 5.34.0 + Perl_pad_push@Base 5.34.0 + Perl_pad_swipe@Base 5.34.0 + Perl_pad_tidy@Base 5.34.0 + Perl_padlist_dup@Base 5.34.0 + Perl_padlist_store@Base 5.34.0 + Perl_padname_dup@Base 5.34.0 + Perl_padname_free@Base 5.34.0 + Perl_padnamelist_dup@Base 5.34.0 + Perl_padnamelist_fetch@Base 5.34.0 + Perl_padnamelist_free@Base 5.34.0 + Perl_padnamelist_store@Base 5.34.0 + Perl_parse_arithexpr@Base 5.34.0 + Perl_parse_barestmt@Base 5.34.0 + Perl_parse_block@Base 5.34.0 + Perl_parse_fullexpr@Base 5.34.0 + Perl_parse_fullstmt@Base 5.34.0 + Perl_parse_label@Base 5.34.0 + Perl_parse_listexpr@Base 5.34.0 + Perl_parse_stmtseq@Base 5.34.0 + Perl_parse_subsignature@Base 5.34.0 + Perl_parse_termexpr@Base 5.34.0 + Perl_parse_unicode_opts@Base 5.34.0 + Perl_parser_dup@Base 5.34.0 + Perl_parser_free@Base 5.34.0 + Perl_parser_free_nexttoke_ops@Base 5.34.0 + Perl_peep@Base 5.34.0 + Perl_perly_sighandler@Base 5.34.0 + Perl_pmop_dump@Base 5.34.0 + Perl_pmruntime@Base 5.34.0 + Perl_pop_scope@Base 5.34.0 + Perl_populate_isa@Base 5.34.0 + Perl_pp_aassign@Base 5.34.0 + Perl_pp_abs@Base 5.34.0 + Perl_pp_accept@Base 5.34.0 + Perl_pp_add@Base 5.34.0 + Perl_pp_aeach@Base 5.34.0 + Perl_pp_aelem@Base 5.34.0 + Perl_pp_aelemfast@Base 5.34.0 + Perl_pp_akeys@Base 5.34.0 + Perl_pp_alarm@Base 5.34.0 + Perl_pp_and@Base 5.34.0 + Perl_pp_anoncode@Base 5.34.0 + Perl_pp_anonconst@Base 5.34.0 + Perl_pp_anonhash@Base 5.34.0 + Perl_pp_anonlist@Base 5.34.0 + Perl_pp_argcheck@Base 5.34.0 + Perl_pp_argdefelem@Base 5.34.0 + Perl_pp_argelem@Base 5.34.0 + Perl_pp_aslice@Base 5.34.0 + Perl_pp_atan2@Base 5.34.0 + Perl_pp_av2arylen@Base 5.34.0 + Perl_pp_avhvswitch@Base 5.34.0 + Perl_pp_backtick@Base 5.34.0 + Perl_pp_bind@Base 5.34.0 + Perl_pp_binmode@Base 5.34.0 + Perl_pp_bit_and@Base 5.34.0 + Perl_pp_bit_or@Base 5.34.0 + Perl_pp_bless@Base 5.34.0 + Perl_pp_break@Base 5.34.0 + Perl_pp_caller@Base 5.34.0 + Perl_pp_catch@Base 5.34.0 + Perl_pp_chdir@Base 5.34.0 + Perl_pp_chop@Base 5.34.0 + Perl_pp_chown@Base 5.34.0 + Perl_pp_chr@Base 5.34.0 + Perl_pp_chroot@Base 5.34.0 + Perl_pp_clonecv@Base 5.34.0 + Perl_pp_close@Base 5.34.0 + Perl_pp_closedir@Base 5.34.0 + Perl_pp_cmpchain_and@Base 5.34.0 + Perl_pp_cmpchain_dup@Base 5.34.0 + Perl_pp_complement@Base 5.34.0 + Perl_pp_concat@Base 5.34.0 + Perl_pp_cond_expr@Base 5.34.0 + Perl_pp_const@Base 5.34.0 + Perl_pp_continue@Base 5.34.0 + Perl_pp_coreargs@Base 5.34.0 + Perl_pp_crypt@Base 5.34.0 + Perl_pp_dbmopen@Base 5.34.0 + Perl_pp_dbstate@Base 5.34.0 + Perl_pp_defined@Base 5.34.0 + Perl_pp_delete@Base 5.34.0 + Perl_pp_die@Base 5.34.0 + Perl_pp_divide@Base 5.34.0 + Perl_pp_each@Base 5.34.0 + Perl_pp_ehostent@Base 5.34.0 + Perl_pp_enter@Base 5.34.0 + Perl_pp_entereval@Base 5.34.0 + Perl_pp_entergiven@Base 5.34.0 + Perl_pp_enteriter@Base 5.34.0 + Perl_pp_enterloop@Base 5.34.0 + Perl_pp_entersub@Base 5.34.0 + Perl_pp_entertry@Base 5.34.0 + Perl_pp_entertrycatch@Base 5.34.0 + Perl_pp_enterwhen@Base 5.34.0 + Perl_pp_enterwrite@Base 5.34.0 + Perl_pp_eof@Base 5.34.0 + Perl_pp_eq@Base 5.34.0 + Perl_pp_exec@Base 5.34.0 + Perl_pp_exists@Base 5.34.0 + Perl_pp_exit@Base 5.34.0 + Perl_pp_fc@Base 5.34.0 + Perl_pp_fileno@Base 5.34.0 + Perl_pp_flip@Base 5.34.0 + Perl_pp_flock@Base 5.34.0 + Perl_pp_flop@Base 5.34.0 + Perl_pp_fork@Base 5.34.0 + Perl_pp_formline@Base 5.34.0 + Perl_pp_ftis@Base 5.34.0 + Perl_pp_ftlink@Base 5.34.0 + Perl_pp_ftrowned@Base 5.34.0 + Perl_pp_ftrread@Base 5.34.0 + Perl_pp_fttext@Base 5.34.0 + Perl_pp_fttty@Base 5.34.0 + Perl_pp_ge@Base 5.34.0 + Perl_pp_gelem@Base 5.34.0 + Perl_pp_getc@Base 5.34.0 + Perl_pp_getlogin@Base 5.34.0 + Perl_pp_getpeername@Base 5.34.0 + Perl_pp_getpgrp@Base 5.34.0 + Perl_pp_getppid@Base 5.34.0 + Perl_pp_getpriority@Base 5.34.0 + Perl_pp_ggrent@Base 5.34.0 + Perl_pp_ghostent@Base 5.34.0 + Perl_pp_glob@Base 5.34.0 + Perl_pp_gmtime@Base 5.34.0 + Perl_pp_gnetent@Base 5.34.0 + Perl_pp_goto@Base 5.34.0 + Perl_pp_gprotoent@Base 5.34.0 + Perl_pp_gpwent@Base 5.34.0 + Perl_pp_grepstart@Base 5.34.0 + Perl_pp_grepwhile@Base 5.34.0 + Perl_pp_gservent@Base 5.34.0 + Perl_pp_gt@Base 5.34.0 + Perl_pp_gv@Base 5.34.0 + Perl_pp_gvsv@Base 5.34.0 + Perl_pp_helem@Base 5.34.0 + Perl_pp_hintseval@Base 5.34.0 + Perl_pp_hslice@Base 5.34.0 + Perl_pp_i_add@Base 5.34.0 + Perl_pp_i_divide@Base 5.34.0 + Perl_pp_i_eq@Base 5.34.0 + Perl_pp_i_ge@Base 5.34.0 + Perl_pp_i_gt@Base 5.34.0 + Perl_pp_i_le@Base 5.34.0 + Perl_pp_i_lt@Base 5.34.0 + Perl_pp_i_modulo@Base 5.34.0 + Perl_pp_i_multiply@Base 5.34.0 + Perl_pp_i_ncmp@Base 5.34.0 + Perl_pp_i_ne@Base 5.34.0 + Perl_pp_i_negate@Base 5.34.0 + Perl_pp_i_subtract@Base 5.34.0 + Perl_pp_index@Base 5.34.0 + Perl_pp_int@Base 5.34.0 + Perl_pp_introcv@Base 5.34.0 + Perl_pp_ioctl@Base 5.34.0 + Perl_pp_isa@Base 5.34.0 + Perl_pp_iter@Base 5.34.0 + Perl_pp_join@Base 5.34.0 + Perl_pp_kvaslice@Base 5.34.0 + Perl_pp_kvhslice@Base 5.34.0 + Perl_pp_last@Base 5.34.0 + Perl_pp_lc@Base 5.34.0 + Perl_pp_le@Base 5.34.0 + Perl_pp_leave@Base 5.34.0 + Perl_pp_leaveeval@Base 5.34.0 + Perl_pp_leavegiven@Base 5.34.0 + Perl_pp_leaveloop@Base 5.34.0 + Perl_pp_leavesub@Base 5.34.0 + Perl_pp_leavesublv@Base 5.34.0 + Perl_pp_leavetry@Base 5.34.0 + Perl_pp_leavetrycatch@Base 5.34.0 + Perl_pp_leavewhen@Base 5.34.0 + Perl_pp_leavewrite@Base 5.34.0 + Perl_pp_left_shift@Base 5.34.0 + Perl_pp_length@Base 5.34.0 + Perl_pp_link@Base 5.34.0 + Perl_pp_list@Base 5.34.0 + Perl_pp_listen@Base 5.34.0 + Perl_pp_lock@Base 5.34.0 + Perl_pp_lslice@Base 5.34.0 + Perl_pp_lt@Base 5.34.0 + Perl_pp_lvavref@Base 5.34.0 + Perl_pp_lvref@Base 5.34.0 + Perl_pp_lvrefslice@Base 5.34.0 + Perl_pp_mapwhile@Base 5.34.0 + Perl_pp_match@Base 5.34.0 + Perl_pp_method@Base 5.34.0 + Perl_pp_method_named@Base 5.34.0 + Perl_pp_method_redir@Base 5.34.0 + Perl_pp_method_redir_super@Base 5.34.0 + Perl_pp_method_super@Base 5.34.0 + Perl_pp_mkdir@Base 5.34.0 + Perl_pp_modulo@Base 5.34.0 + Perl_pp_multiconcat@Base 5.34.0 + Perl_pp_multideref@Base 5.34.0 + Perl_pp_multiply@Base 5.34.0 + Perl_pp_nbit_and@Base 5.34.0 + Perl_pp_nbit_or@Base 5.34.0 + Perl_pp_ncmp@Base 5.34.0 + Perl_pp_ncomplement@Base 5.34.0 + Perl_pp_ne@Base 5.34.0 + Perl_pp_negate@Base 5.34.0 + Perl_pp_next@Base 5.34.0 + Perl_pp_nextstate@Base 5.34.0 + Perl_pp_not@Base 5.34.0 + Perl_pp_null@Base 5.34.0 + Perl_pp_oct@Base 5.34.0 + Perl_pp_once@Base 5.34.0 + Perl_pp_open@Base 5.34.0 + Perl_pp_open_dir@Base 5.34.0 + Perl_pp_or@Base 5.34.0 + Perl_pp_ord@Base 5.34.0 + Perl_pp_pack@Base 5.34.0 + Perl_pp_padav@Base 5.34.0 + Perl_pp_padcv@Base 5.34.0 + Perl_pp_padhv@Base 5.34.0 + Perl_pp_padrange@Base 5.34.0 + Perl_pp_padsv@Base 5.34.0 + Perl_pp_pipe_op@Base 5.34.0 + Perl_pp_poptry@Base 5.34.0 + Perl_pp_pos@Base 5.34.0 + Perl_pp_postdec@Base 5.34.0 + Perl_pp_postinc@Base 5.34.0 + Perl_pp_pow@Base 5.34.0 + Perl_pp_predec@Base 5.34.0 + Perl_pp_preinc@Base 5.34.0 + Perl_pp_print@Base 5.34.0 + Perl_pp_prototype@Base 5.34.0 + Perl_pp_prtf@Base 5.34.0 + Perl_pp_push@Base 5.34.0 + Perl_pp_pushmark@Base 5.34.0 + Perl_pp_qr@Base 5.34.0 + Perl_pp_quotemeta@Base 5.34.0 + Perl_pp_rand@Base 5.34.0 + Perl_pp_range@Base 5.34.0 + Perl_pp_rcatline@Base 5.34.0 + Perl_pp_readdir@Base 5.34.0 + Perl_pp_readline@Base 5.34.0 + Perl_pp_readlink@Base 5.34.0 + Perl_pp_redo@Base 5.34.0 + Perl_pp_ref@Base 5.34.0 + Perl_pp_refassign@Base 5.34.0 + Perl_pp_refgen@Base 5.34.0 + Perl_pp_regcomp@Base 5.34.0 + Perl_pp_regcreset@Base 5.34.0 + Perl_pp_rename@Base 5.34.0 + Perl_pp_repeat@Base 5.34.0 + Perl_pp_require@Base 5.34.0 + Perl_pp_reset@Base 5.34.0 + Perl_pp_return@Base 5.34.0 + Perl_pp_reverse@Base 5.34.0 + Perl_pp_rewinddir@Base 5.34.0 + Perl_pp_right_shift@Base 5.34.0 + Perl_pp_rmdir@Base 5.34.0 + Perl_pp_runcv@Base 5.34.0 + Perl_pp_rv2av@Base 5.34.0 + Perl_pp_rv2cv@Base 5.34.0 + Perl_pp_rv2gv@Base 5.34.0 + Perl_pp_rv2sv@Base 5.34.0 + Perl_pp_sassign@Base 5.34.0 + Perl_pp_sbit_and@Base 5.34.0 + Perl_pp_sbit_or@Base 5.34.0 + Perl_pp_schop@Base 5.34.0 + Perl_pp_scmp@Base 5.34.0 + Perl_pp_scomplement@Base 5.34.0 + Perl_pp_seekdir@Base 5.34.0 + Perl_pp_select@Base 5.34.0 + Perl_pp_semctl@Base 5.34.0 + Perl_pp_semget@Base 5.34.0 + Perl_pp_seq@Base 5.34.0 + Perl_pp_setpgrp@Base 5.34.0 + Perl_pp_setpriority@Base 5.34.0 + Perl_pp_shift@Base 5.34.0 + Perl_pp_shmwrite@Base 5.34.0 + Perl_pp_shostent@Base 5.34.0 + Perl_pp_shutdown@Base 5.34.0 + Perl_pp_sin@Base 5.34.0 + Perl_pp_sle@Base 5.34.0 + Perl_pp_sleep@Base 5.34.0 + Perl_pp_smartmatch@Base 5.34.0 + Perl_pp_sne@Base 5.34.0 + Perl_pp_socket@Base 5.34.0 + Perl_pp_sockpair@Base 5.34.0 + Perl_pp_sort@Base 5.34.0 + Perl_pp_splice@Base 5.34.0 + Perl_pp_split@Base 5.34.0 + Perl_pp_sprintf@Base 5.34.0 + Perl_pp_srand@Base 5.34.0 + Perl_pp_srefgen@Base 5.34.0 + Perl_pp_sselect@Base 5.34.0 + Perl_pp_ssockopt@Base 5.34.0 + Perl_pp_stat@Base 5.34.0 + Perl_pp_stringify@Base 5.34.0 + Perl_pp_stub@Base 5.34.0 + Perl_pp_study@Base 5.34.0 + Perl_pp_subst@Base 5.34.0 + Perl_pp_substcont@Base 5.34.0 + Perl_pp_substr@Base 5.34.0 + Perl_pp_subtract@Base 5.34.0 + Perl_pp_syscall@Base 5.34.0 + Perl_pp_sysopen@Base 5.34.0 + Perl_pp_sysread@Base 5.34.0 + Perl_pp_sysseek@Base 5.34.0 + Perl_pp_system@Base 5.34.0 + Perl_pp_syswrite@Base 5.34.0 + Perl_pp_tell@Base 5.34.0 + Perl_pp_telldir@Base 5.34.0 + Perl_pp_tie@Base 5.34.0 + Perl_pp_tied@Base 5.34.0 + Perl_pp_time@Base 5.34.0 + Perl_pp_tms@Base 5.34.0 + Perl_pp_trans@Base 5.34.0 + Perl_pp_truncate@Base 5.34.0 + Perl_pp_uc@Base 5.34.0 + Perl_pp_ucfirst@Base 5.34.0 + Perl_pp_umask@Base 5.34.0 + Perl_pp_undef@Base 5.34.0 + Perl_pp_unpack@Base 5.34.0 + Perl_pp_unshift@Base 5.34.0 + Perl_pp_unstack@Base 5.34.0 + Perl_pp_untie@Base 5.34.0 + Perl_pp_vec@Base 5.34.0 + Perl_pp_wait@Base 5.34.0 + Perl_pp_waitpid@Base 5.34.0 + Perl_pp_wantarray@Base 5.34.0 + Perl_pp_warn@Base 5.34.0 + Perl_pp_xor@Base 5.34.0 + Perl_pregcomp@Base 5.34.0 + Perl_pregexec@Base 5.34.0 + Perl_pregfree2@Base 5.34.0 + Perl_pregfree@Base 5.34.0 + Perl_prescan_version@Base 5.34.0 + Perl_printf_nocontext@Base 5.34.0 + Perl_ptr_table_clear@Base 5.34.0 + Perl_ptr_table_fetch@Base 5.34.0 + Perl_ptr_table_free@Base 5.34.0 + Perl_ptr_table_new@Base 5.34.0 + Perl_ptr_table_split@Base 5.34.0 + Perl_ptr_table_store@Base 5.34.0 + Perl_push_scope@Base 5.34.0 + Perl_pv_display@Base 5.34.0 + Perl_pv_escape@Base 5.34.0 + Perl_pv_pretty@Base 5.34.0 + Perl_pv_uni_display@Base 5.34.0 + Perl_qerror@Base 5.34.0 + Perl_re_compile@Base 5.34.0 + Perl_re_dup_guts@Base 5.34.0 + Perl_re_intuit_start@Base 5.34.0 + Perl_re_intuit_string@Base 5.34.0 + Perl_re_op_compile@Base 5.34.0 + Perl_realloc@Base 5.34.0 + Perl_reentrant_free@Base 5.34.0 + Perl_reentrant_init@Base 5.34.0 + Perl_reentrant_retry@Base 5.34.0 + Perl_reentrant_size@Base 5.34.0 + Perl_ref@Base 5.34.0 + Perl_refcounted_he_chain_2hv@Base 5.34.0 + Perl_refcounted_he_fetch_pv@Base 5.34.0 + Perl_refcounted_he_fetch_pvn@Base 5.34.0 + Perl_refcounted_he_fetch_sv@Base 5.34.0 + Perl_refcounted_he_free@Base 5.34.0 + Perl_refcounted_he_inc@Base 5.34.0 + Perl_refcounted_he_new_pv@Base 5.34.0 + Perl_refcounted_he_new_pvn@Base 5.34.0 + Perl_refcounted_he_new_sv@Base 5.34.0 + Perl_reg_named_buff@Base 5.34.0 + Perl_reg_named_buff_all@Base 5.34.0 + Perl_reg_named_buff_exists@Base 5.34.0 + Perl_reg_named_buff_fetch@Base 5.34.0 + Perl_reg_named_buff_firstkey@Base 5.34.0 + Perl_reg_named_buff_iter@Base 5.34.0 + Perl_reg_named_buff_nextkey@Base 5.34.0 + Perl_reg_named_buff_scalar@Base 5.34.0 + Perl_reg_numbered_buff_fetch@Base 5.34.0 + Perl_reg_numbered_buff_length@Base 5.34.0 + Perl_reg_numbered_buff_store@Base 5.34.0 + Perl_reg_qr_package@Base 5.34.0 + Perl_reg_temp_copy@Base 5.34.0 + Perl_regcurly@Base 5.34.0 + Perl_regdump@Base 5.34.0 + Perl_regdupe_internal@Base 5.34.0 + Perl_regexec_flags@Base 5.34.0 + Perl_regfree_internal@Base 5.34.0 + Perl_reginitcolors@Base 5.34.0 + Perl_regnext@Base 5.34.0 + Perl_regprop@Base 5.34.0 + Perl_repeatcpy@Base 5.34.0 + Perl_report_evil_fh@Base 5.34.0 + Perl_report_redefined_cv@Base 5.34.0 + Perl_report_uninit@Base 5.34.0 + Perl_report_wrongway_fh@Base 5.34.0 + Perl_require_pv@Base 5.34.0 + Perl_rninstr@Base 5.34.0 + Perl_rpeep@Base 5.34.0 + Perl_rsignal@Base 5.34.0 + Perl_rsignal_restore@Base 5.34.0 + Perl_rsignal_save@Base 5.34.0 + Perl_rsignal_state@Base 5.34.0 + Perl_runops_debug@Base 5.34.0 + Perl_runops_standard@Base 5.34.0 + Perl_rv2cv_op_cv@Base 5.34.0 + Perl_rvpv_dup@Base 5.34.0 + Perl_rxres_save@Base 5.34.0 + Perl_safesyscalloc@Base 5.34.0 + Perl_safesysfree@Base 5.34.0 + Perl_safesysmalloc@Base 5.34.0 + Perl_safesysrealloc@Base 5.34.0 + Perl_save_I16@Base 5.34.0 + Perl_save_I32@Base 5.34.0 + Perl_save_I8@Base 5.34.0 + Perl_save_adelete@Base 5.34.0 + Perl_save_aelem_flags@Base 5.34.0 + Perl_save_alloc@Base 5.34.0 + Perl_save_aptr@Base 5.34.0 + Perl_save_ary@Base 5.34.0 + Perl_save_bool@Base 5.34.0 + Perl_save_clearsv@Base 5.34.0 + Perl_save_delete@Base 5.34.0 + Perl_save_destructor@Base 5.34.0 + Perl_save_destructor_x@Base 5.34.0 + Perl_save_freeop@Base 5.34.0 + Perl_save_freepv@Base 5.34.0 + Perl_save_freesv@Base 5.34.0 + Perl_save_generic_pvref@Base 5.34.0 + Perl_save_generic_svref@Base 5.34.0 + Perl_save_gp@Base 5.34.0 + Perl_save_hash@Base 5.34.0 + Perl_save_hdelete@Base 5.34.0 + Perl_save_helem_flags@Base 5.34.0 + Perl_save_hints@Base 5.34.0 + Perl_save_hptr@Base 5.34.0 + Perl_save_int@Base 5.34.0 + Perl_save_item@Base 5.34.0 + Perl_save_iv@Base 5.34.0 + Perl_save_list@Base 5.34.0 + Perl_save_long@Base 5.34.0 + Perl_save_mortalizesv@Base 5.34.0 + Perl_save_nogv@Base 5.34.0 + Perl_save_op@Base 5.34.0 + Perl_save_padsv_and_mortalize@Base 5.34.0 + Perl_save_pptr@Base 5.34.0 + Perl_save_pushi32ptr@Base 5.34.0 + Perl_save_pushptr@Base 5.34.0 + Perl_save_pushptrptr@Base 5.34.0 + Perl_save_re_context@Base 5.34.0 + Perl_save_scalar@Base 5.34.0 + Perl_save_set_svflags@Base 5.34.0 + Perl_save_shared_pvref@Base 5.34.0 + Perl_save_sptr@Base 5.34.0 + Perl_save_strlen@Base 5.34.0 + Perl_save_svref@Base 5.34.0 + Perl_save_vptr@Base 5.34.0 + Perl_savepv@Base 5.34.0 + Perl_savepvn@Base 5.34.0 + Perl_savesharedpv@Base 5.34.0 + Perl_savesharedpvn@Base 5.34.0 + Perl_savesharedsvpv@Base 5.34.0 + Perl_savestack_grow@Base 5.34.0 + Perl_savestack_grow_cnt@Base 5.34.0 + Perl_savesvpv@Base 5.34.0 + Perl_savetmps@Base 5.34.0 + Perl_sawparens@Base 5.34.0 + Perl_scalar@Base 5.34.0 + Perl_scalarvoid@Base 5.34.0 + Perl_scan_bin@Base 5.34.0 + Perl_scan_hex@Base 5.34.0 + Perl_scan_num@Base 5.34.0 + Perl_scan_oct@Base 5.34.0 + Perl_scan_str@Base 5.34.0 + Perl_scan_version@Base 5.34.0 + Perl_scan_vstring@Base 5.34.0 + Perl_scan_word@Base 5.34.0 + Perl_seed@Base 5.34.0 + Perl_set_caret_X@Base 5.34.0 + Perl_set_context@Base 5.34.0 + Perl_set_numeric_standard@Base 5.34.0 + Perl_set_numeric_underlying@Base 5.34.0 + Perl_setdefout@Base 5.34.0 + Perl_setfd_cloexec@Base 5.34.0 + Perl_setfd_cloexec_for_nonsysfd@Base 5.34.0 + Perl_setfd_cloexec_or_inhexec_by_sysfdness@Base 5.34.0 + Perl_setfd_inhexec@Base 5.34.0 + Perl_setfd_inhexec_for_sysfd@Base 5.34.0 + Perl_setlocale@Base 5.34.0 + Perl_share_hek@Base 5.34.0 + Perl_si_dup@Base 5.34.0 + Perl_sighandler1@Base 5.34.0 + Perl_sighandler3@Base 5.34.0 + Perl_sighandler@Base 5.34.0 + Perl_skipspace_flags@Base 5.34.0 + Perl_softref2xv@Base 5.34.0 + Perl_sortsv@Base 5.34.0 + Perl_sortsv_flags@Base 5.34.0 + Perl_ss_dup@Base 5.34.0 + Perl_stack_grow@Base 5.34.0 + Perl_start_glob@Base 5.34.0 + Perl_start_subparse@Base 5.34.0 + Perl_str_to_version@Base 5.34.0 + Perl_sub_crush_depth@Base 5.34.0 + Perl_sv_2bool@Base 5.34.0 + Perl_sv_2bool_flags@Base 5.34.0 + Perl_sv_2cv@Base 5.34.0 + Perl_sv_2io@Base 5.34.0 + Perl_sv_2iv@Base 5.34.0 + Perl_sv_2iv_flags@Base 5.34.0 + Perl_sv_2mortal@Base 5.34.0 + Perl_sv_2num@Base 5.34.0 + Perl_sv_2nv@Base 5.34.0 + Perl_sv_2nv_flags@Base 5.34.0 + Perl_sv_2pv@Base 5.34.0 + Perl_sv_2pv_flags@Base 5.34.0 + Perl_sv_2pv_nolen@Base 5.34.0 + Perl_sv_2pvbyte@Base 5.34.0 + Perl_sv_2pvbyte_flags@Base 5.34.0 + Perl_sv_2pvbyte_nolen@Base 5.34.0 + Perl_sv_2pvutf8@Base 5.34.0 + Perl_sv_2pvutf8_flags@Base 5.34.0 + Perl_sv_2pvutf8_nolen@Base 5.34.0 + Perl_sv_2uv@Base 5.34.0 + Perl_sv_2uv_flags@Base 5.34.0 + Perl_sv_add_backref@Base 5.34.0 + Perl_sv_backoff@Base 5.34.0 + Perl_sv_bless@Base 5.34.0 + Perl_sv_cat_decode@Base 5.34.0 + Perl_sv_catpv@Base 5.34.0 + Perl_sv_catpv_flags@Base 5.34.0 + Perl_sv_catpv_mg@Base 5.34.0 + Perl_sv_catpvf@Base 5.34.0 + Perl_sv_catpvf_mg@Base 5.34.0 + Perl_sv_catpvf_mg_nocontext@Base 5.34.0 + Perl_sv_catpvf_nocontext@Base 5.34.0 + Perl_sv_catpvn@Base 5.34.0 + Perl_sv_catpvn_flags@Base 5.34.0 + Perl_sv_catpvn_mg@Base 5.34.0 + Perl_sv_catsv@Base 5.34.0 + Perl_sv_catsv_flags@Base 5.34.0 + Perl_sv_catsv_mg@Base 5.34.0 + Perl_sv_chop@Base 5.34.0 + Perl_sv_clean_all@Base 5.34.0 + Perl_sv_clean_objs@Base 5.34.0 + Perl_sv_clear@Base 5.34.0 + Perl_sv_cmp@Base 5.34.0 + Perl_sv_cmp_flags@Base 5.34.0 + Perl_sv_cmp_locale@Base 5.34.0 + Perl_sv_cmp_locale_flags@Base 5.34.0 + Perl_sv_collxfrm@Base 5.34.0 + Perl_sv_collxfrm_flags@Base 5.34.0 + Perl_sv_copypv@Base 5.34.0 + Perl_sv_copypv_flags@Base 5.34.0 + Perl_sv_dec@Base 5.34.0 + Perl_sv_dec_nomg@Base 5.34.0 + Perl_sv_del_backref@Base 5.34.0 + Perl_sv_derived_from@Base 5.34.0 + Perl_sv_derived_from_pv@Base 5.34.0 + Perl_sv_derived_from_pvn@Base 5.34.0 + Perl_sv_derived_from_sv@Base 5.34.0 + Perl_sv_destroyable@Base 5.34.0 + Perl_sv_does@Base 5.34.0 + Perl_sv_does_pv@Base 5.34.0 + Perl_sv_does_pvn@Base 5.34.0 + Perl_sv_does_sv@Base 5.34.0 + Perl_sv_dump@Base 5.34.0 + Perl_sv_dup@Base 5.34.0 + Perl_sv_dup_inc@Base 5.34.0 + Perl_sv_eq@Base 5.34.0 + Perl_sv_eq_flags@Base 5.34.0 + Perl_sv_force_normal@Base 5.34.0 + Perl_sv_force_normal_flags@Base 5.34.0 + Perl_sv_free2@Base 5.34.0 + Perl_sv_free@Base 5.34.0 + Perl_sv_free_arenas@Base 5.34.0 + Perl_sv_get_backrefs@Base 5.34.0 + Perl_sv_gets@Base 5.34.0 + Perl_sv_grow@Base 5.34.0 + Perl_sv_inc@Base 5.34.0 + Perl_sv_inc_nomg@Base 5.34.0 + Perl_sv_insert@Base 5.34.0 + Perl_sv_insert_flags@Base 5.34.0 + Perl_sv_isa@Base 5.34.0 + Perl_sv_isa_sv@Base 5.34.0 + Perl_sv_isobject@Base 5.34.0 + Perl_sv_iv@Base 5.34.0 + Perl_sv_kill_backrefs@Base 5.34.0 + Perl_sv_len@Base 5.34.0 + Perl_sv_len_utf8@Base 5.34.0 + Perl_sv_len_utf8_nomg@Base 5.34.0 + Perl_sv_magic@Base 5.34.0 + Perl_sv_magicext@Base 5.34.0 + Perl_sv_magicext_mglob@Base 5.34.0 + Perl_sv_mortalcopy@Base 5.34.0 + Perl_sv_mortalcopy_flags@Base 5.34.0 + Perl_sv_newmortal@Base 5.34.0 + Perl_sv_newref@Base 5.34.0 + Perl_sv_nolocking@Base 5.34.0 + Perl_sv_nosharing@Base 5.34.0 + Perl_sv_nounlocking@Base 5.34.0 + Perl_sv_nv@Base 5.34.0 + Perl_sv_peek@Base 5.34.0 + Perl_sv_pos_b2u@Base 5.34.0 + Perl_sv_pos_b2u_flags@Base 5.34.0 + Perl_sv_pos_u2b@Base 5.34.0 + Perl_sv_pos_u2b_flags@Base 5.34.0 + Perl_sv_pv@Base 5.34.0 + Perl_sv_pvbyte@Base 5.34.0 + Perl_sv_pvbyten@Base 5.34.0 + Perl_sv_pvbyten_force@Base 5.34.0 + Perl_sv_pvn@Base 5.34.0 + Perl_sv_pvn_force@Base 5.34.0 + Perl_sv_pvn_force_flags@Base 5.34.0 + Perl_sv_pvn_nomg@Base 5.34.0 + Perl_sv_pvutf8@Base 5.34.0 + Perl_sv_pvutf8n@Base 5.34.0 + Perl_sv_pvutf8n_force@Base 5.34.0 + Perl_sv_recode_to_utf8@Base 5.34.0 + Perl_sv_ref@Base 5.34.0 + Perl_sv_reftype@Base 5.34.0 + Perl_sv_replace@Base 5.34.0 + Perl_sv_report_used@Base 5.34.0 + Perl_sv_reset@Base 5.34.0 + Perl_sv_resetpvn@Base 5.34.0 + Perl_sv_rvunweaken@Base 5.34.0 + Perl_sv_rvweaken@Base 5.34.0 + Perl_sv_set_undef@Base 5.34.0 + Perl_sv_sethek@Base 5.34.0 + Perl_sv_setiv@Base 5.34.0 + Perl_sv_setiv_mg@Base 5.34.0 + Perl_sv_setnv@Base 5.34.0 + Perl_sv_setnv_mg@Base 5.34.0 + Perl_sv_setpv@Base 5.34.0 + Perl_sv_setpv_bufsize@Base 5.34.0 + Perl_sv_setpv_mg@Base 5.34.0 + Perl_sv_setpvf@Base 5.34.0 + Perl_sv_setpvf_mg@Base 5.34.0 + Perl_sv_setpvf_mg_nocontext@Base 5.34.0 + Perl_sv_setpvf_nocontext@Base 5.34.0 + Perl_sv_setpviv@Base 5.34.0 + Perl_sv_setpviv_mg@Base 5.34.0 + Perl_sv_setpvn@Base 5.34.0 + Perl_sv_setpvn_mg@Base 5.34.0 + Perl_sv_setref_iv@Base 5.34.0 + Perl_sv_setref_nv@Base 5.34.0 + Perl_sv_setref_pv@Base 5.34.0 + Perl_sv_setref_pvn@Base 5.34.0 + Perl_sv_setref_uv@Base 5.34.0 + Perl_sv_setsv@Base 5.34.0 + Perl_sv_setsv_cow@Base 5.34.0 + Perl_sv_setsv_flags@Base 5.34.0 + Perl_sv_setsv_mg@Base 5.34.0 + Perl_sv_setuv@Base 5.34.0 + Perl_sv_setuv_mg@Base 5.34.0 + Perl_sv_string_from_errnum@Base 5.34.0 + Perl_sv_taint@Base 5.34.0 + Perl_sv_tainted@Base 5.34.0 + Perl_sv_true@Base 5.34.0 + Perl_sv_uni_display@Base 5.34.0 + Perl_sv_unmagic@Base 5.34.0 + Perl_sv_unmagicext@Base 5.34.0 + Perl_sv_unref@Base 5.34.0 + Perl_sv_unref_flags@Base 5.34.0 + Perl_sv_untaint@Base 5.34.0 + Perl_sv_upgrade@Base 5.34.0 + Perl_sv_usepvn@Base 5.34.0 + Perl_sv_usepvn_flags@Base 5.34.0 + Perl_sv_usepvn_mg@Base 5.34.0 + Perl_sv_utf8_decode@Base 5.34.0 + Perl_sv_utf8_downgrade@Base 5.34.0 + Perl_sv_utf8_downgrade_flags@Base 5.34.0 + Perl_sv_utf8_encode@Base 5.34.0 + Perl_sv_utf8_upgrade@Base 5.34.0 + Perl_sv_utf8_upgrade_flags_grow@Base 5.34.0 + Perl_sv_uv@Base 5.34.0 + Perl_sv_vcatpvf@Base 5.34.0 + Perl_sv_vcatpvf_mg@Base 5.34.0 + Perl_sv_vcatpvfn@Base 5.34.0 + Perl_sv_vcatpvfn_flags@Base 5.34.0 + Perl_sv_vsetpvf@Base 5.34.0 + Perl_sv_vsetpvf_mg@Base 5.34.0 + Perl_sv_vsetpvfn@Base 5.34.0 + Perl_switch_to_global_locale@Base 5.34.0 + Perl_sync_locale@Base 5.34.0 + Perl_sys_init3@Base 5.34.0 + Perl_sys_init@Base 5.34.0 + Perl_sys_term@Base 5.34.0 + Perl_taint_env@Base 5.34.0 + Perl_taint_proper@Base 5.34.0 + Perl_thread_locale_init@Base 5.34.0 + Perl_thread_locale_term@Base 5.34.0 + Perl_tied_method@Base 5.34.0 + Perl_tmps_grow_p@Base 5.34.0 + Perl_to_uni_lower@Base 5.34.0 + Perl_to_uni_title@Base 5.34.0 + Perl_to_uni_upper@Base 5.34.0 + Perl_translate_substr_offsets@Base 5.34.0 + Perl_try_amagic_bin@Base 5.34.0 + Perl_try_amagic_un@Base 5.34.0 + Perl_unimplemented_op@Base 5.34.0 + Perl_unpack_str@Base 5.34.0 + Perl_unpackstring@Base 5.34.0 + Perl_unshare_hek@Base 5.34.0 + Perl_unsharepvn@Base 5.34.0 + Perl_upg_version@Base 5.34.0 + Perl_utf16_to_utf8@Base 5.34.0 + Perl_utf16_to_utf8_reversed@Base 5.34.0 + Perl_utf8_length@Base 5.34.0 + Perl_utf8_to_bytes@Base 5.34.0 + Perl_utf8_to_uvchr@Base 5.34.0 + Perl_utf8_to_uvchr_buf@Base 5.34.0 + Perl_utf8_to_uvuni@Base 5.34.0 + Perl_utf8_to_uvuni_buf@Base 5.34.0 + Perl_utf8n_to_uvchr@Base 5.34.0 + Perl_utf8n_to_uvchr_error@Base 5.34.0 + Perl_utf8n_to_uvuni@Base 5.34.0 + Perl_utilize@Base 5.34.0 + Perl_uvchr_to_utf8@Base 5.34.0 + Perl_uvchr_to_utf8_flags@Base 5.34.0 + Perl_uvoffuni_to_utf8_flags@Base 5.34.0 + Perl_uvoffuni_to_utf8_flags_msgs@Base 5.34.0 + Perl_uvuni_to_utf8@Base 5.34.0 + Perl_uvuni_to_utf8_flags@Base 5.34.0 + Perl_valid_utf8_to_uvuni@Base 5.34.0 + Perl_validate_proto@Base 5.34.0 + Perl_varname@Base 5.34.0 + Perl_vcmp@Base 5.34.0 + Perl_vcroak@Base 5.34.0 + Perl_vdeb@Base 5.34.0 + Perl_vform@Base 5.34.0 + Perl_vivify_defelem@Base 5.34.0 + Perl_vivify_ref@Base 5.34.0 + Perl_vload_module@Base 5.34.0 + Perl_vmess@Base 5.34.0 + Perl_vnewSVpvf@Base 5.34.0 + Perl_vnormal@Base 5.34.0 + Perl_vnumify@Base 5.34.0 + Perl_vstringify@Base 5.34.0 + Perl_vverify@Base 5.34.0 + Perl_vwarn@Base 5.34.0 + Perl_vwarner@Base 5.34.0 + Perl_wait4pid@Base 5.34.0 + Perl_warn@Base 5.34.0 + Perl_warn_nocontext@Base 5.34.0 + Perl_warn_sv@Base 5.34.0 + Perl_warner@Base 5.34.0 + Perl_warner_nocontext@Base 5.34.0 + Perl_was_lvalue_sub@Base 5.34.0 + Perl_watch@Base 5.34.0 + Perl_whichsig_pv@Base 5.34.0 + Perl_whichsig_pvn@Base 5.34.0 + Perl_whichsig_sv@Base 5.34.0 + Perl_wrap_keyword_plugin@Base 5.34.0 + Perl_wrap_op_checker@Base 5.34.0 + Perl_write_to_stderr@Base 5.34.0 + Perl_xs_boot_epilog@Base 5.34.0 + Perl_xs_handshake@Base 5.34.0 + Perl_yyerror@Base 5.34.0 + Perl_yyerror_pv@Base 5.34.0 + Perl_yyerror_pvn@Base 5.34.0 + Perl_yylex@Base 5.34.0 + Perl_yyparse@Base 5.34.0 + Perl_yyquit@Base 5.34.0 + Perl_yyunlex@Base 5.34.0 + XS_DynaLoader_CLONE@Base 5.34.0 + XS_DynaLoader_dl_error@Base 5.34.0 + XS_DynaLoader_dl_find_symbol@Base 5.34.0 + XS_DynaLoader_dl_install_xsub@Base 5.34.0 + XS_DynaLoader_dl_load_file@Base 5.34.0 + XS_DynaLoader_dl_undef_symbols@Base 5.34.0 + XS_DynaLoader_dl_unload_file@Base 5.34.0 + XS_Internals_SvREADONLY@Base 5.34.0 + XS_Internals_SvREFCNT@Base 5.34.0 + XS_Internals_getcwd@Base 5.34.0 + XS_Internals_hv_clear_placehold@Base 5.34.0 + XS_NamedCapture_FETCH@Base 5.34.0 + XS_NamedCapture_FIRSTKEY@Base 5.34.0 + XS_NamedCapture_TIEHASH@Base 5.34.0 + XS_NamedCapture_flags@Base 5.34.0 + XS_NamedCapture_tie_it@Base 5.34.0 + XS_PerlIO__Layer__NoWarnings@Base 5.34.0 + XS_PerlIO__Layer__find@Base 5.34.0 + XS_PerlIO_get_layers@Base 5.34.0 + XS_UNIVERSAL_DOES@Base 5.34.0 + XS_UNIVERSAL_can@Base 5.34.0 + XS_UNIVERSAL_isa@Base 5.34.0 + XS_constant__make_const@Base 5.34.0 + XS_mro_method_changed_in@Base 5.34.0 + XS_re_is_regexp@Base 5.34.0 + XS_re_regexp_pattern@Base 5.34.0 + XS_re_regname@Base 5.34.0 + XS_re_regnames@Base 5.34.0 + XS_re_regnames_count@Base 5.34.0 + XS_utf8_decode@Base 5.34.0 + XS_utf8_downgrade@Base 5.34.0 + XS_utf8_encode@Base 5.34.0 + XS_utf8_is_utf8@Base 5.34.0 + XS_utf8_native_to_unicode@Base 5.34.0 + XS_utf8_unicode_to_native@Base 5.34.0 + XS_utf8_upgrade@Base 5.34.0 + XS_utf8_valid@Base 5.34.0 + boot_DynaLoader@Base 5.34.0 + categories@Base 5.34.0 + category_masks@Base 5.34.0 + category_names@Base 5.34.0 + cv_flags_names@Base 5.34.0 + deprecated_property_msgs@Base 5.34.0 + first_sv_flags_names@Base 5.34.0 + gp_flags_imported_names@Base 5.34.0 + gp_flags_names@Base 5.34.0 + hv_flags_names@Base 5.34.0 + match_uniprop@Base 5.34.0 + nonchar_cp_format@Base 5.34.0 + op_class_names@Base 5.34.0 + op_flags_names@Base 5.34.0 + perl_alloc@Base 5.34.0 + perl_clone@Base 5.34.0 + perl_construct@Base 5.34.0 + perl_destruct@Base 5.34.0 + perl_free@Base 5.34.0 + perl_parse@Base 5.34.0 + perl_run@Base 5.34.0 + perl_tsa_mutex_destroy@Base 5.34.0 + perl_tsa_mutex_lock@Base 5.34.0 + perl_tsa_mutex_unlock@Base 5.34.0 + perlsio_binmode@Base 5.34.0 + pmflags_flags_names@Base 5.34.0 + regexp_core_intflags_names@Base 5.34.0 + regexp_extflags_names@Base 5.34.0 + second_sv_flags_names@Base 5.34.0 + super_cp_format@Base 5.34.0 + surrogate_cp_format@Base 5.34.0 diff -Nru perl-5.32.1/debian/patches/debian/configure-regen.diff perl-5.34.0/debian/patches/debian/configure-regen.diff --- perl-5.32.1/debian/patches/debian/configure-regen.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/configure-regen.diff 2022-02-05 10:20:32.000000000 +0000 @@ -1,17 +1,25 @@ From: Niko Tyni -Date: Sat, 14 Oct 2017 17:47:09 +0300 +Date: Wed, 25 Aug 2021 21:24:38 +0300 Subject: Regenerate Configure et al. after probe unit changes Bug-Debian: https://bugs.debian.org/762638 --- - Configure | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) + Configure | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Configure b/Configure -index fbc2258..0b5bdd4 100755 +index 913e080..630503a 100755 --- a/Configure +++ b/Configure -@@ -1491,8 +1491,7 @@ archname='' +@@ -1462,7 +1462,6 @@ glibpth="/lib /usr/lib $xlibpth" + glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib" + test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth" + test -f /shlib/libc.so && glibpth="/shlib $glibpth" +-test -d /usr/lib64 && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64" + + : Private path used by Configure to find libraries. Its value + : is prepended to libpth. This variable takes care of special +@@ -1493,8 +1492,7 @@ archname='' usereentrant='undef' : List of libraries we want. : If anyone needs extra -lxxx, put those in a hint file. @@ -21,7 +29,25 @@ : We probably want to search /usr/shlib before most other libraries. : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist. glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'` -@@ -23899,7 +23898,7 @@ sunos*X4*) +@@ -4871,7 +4869,7 @@ case "$ccname" in + if $test $# -gt 0; then + for i in $*; do + case $realpath in +- */realpath) i=`$realpath $i` ;; ++ */realpath) i=`$realpath --no-symlinks $i` ;; + esac + incpth="$incpth $i" + j="`$echo $i | $sed 's,/include[^/]*,/lib,'`" +@@ -4883,7 +4881,7 @@ case "$ccname" in + for xxx in $inclibpth $loclibpth $plibpth $glibpth; do + if $test -d $xxx; then + case $realpath in +- */realpath) xxx=`$realpath $xxx` ;; ++ */realpath) xxx=`$realpath --no-symlinks $xxx` ;; + esac + case " $libpth " in + *" $xxx "*) ;; +@@ -24030,7 +24028,7 @@ sunos*X4*) ;; *) case "$usedl" in $define|true|[yY]*) diff -Nru perl-5.32.1/debian/patches/debian/cpan_definstalldirs.diff perl-5.34.0/debian/patches/debian/cpan_definstalldirs.diff --- perl-5.32.1/debian/patches/debian/cpan_definstalldirs.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/cpan_definstalldirs.diff 2022-02-05 10:20:32.000000000 +0000 @@ -11,7 +11,7 @@ 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpan/CPAN/lib/CPAN/FirstTime.pm b/cpan/CPAN/lib/CPAN/FirstTime.pm -index af4a6d7..b7322fd 100644 +index 310e73a..6410cda 100644 --- a/cpan/CPAN/lib/CPAN/FirstTime.pm +++ b/cpan/CPAN/lib/CPAN/FirstTime.pm @@ -1080,7 +1080,7 @@ sub init { diff -Nru perl-5.32.1/debian/patches/debian/cpan-missing-site-dirs.diff perl-5.34.0/debian/patches/debian/cpan-missing-site-dirs.diff --- perl-5.32.1/debian/patches/debian/cpan-missing-site-dirs.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/cpan-missing-site-dirs.diff 2022-02-05 10:20:32.000000000 +0000 @@ -16,7 +16,7 @@ 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/cpan/CPAN/lib/CPAN/FirstTime.pm b/cpan/CPAN/lib/CPAN/FirstTime.pm -index b7322fd..d3517ac 100644 +index 6410cda..a07b027 100644 --- a/cpan/CPAN/lib/CPAN/FirstTime.pm +++ b/cpan/CPAN/lib/CPAN/FirstTime.pm @@ -2136,11 +2136,34 @@ sub _print_urllist { diff -Nru perl-5.32.1/debian/patches/debian/db_file_ver.diff perl-5.34.0/debian/patches/debian/db_file_ver.diff --- perl-5.32.1/debian/patches/debian/db_file_ver.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/db_file_ver.diff 2022-02-05 10:20:32.000000000 +0000 @@ -10,7 +10,7 @@ 1 file changed, 2 insertions(+) diff --git a/cpan/DB_File/version.c b/cpan/DB_File/version.c -index ecf73de..8846b4a 100644 +index 7df0d5a..1430443 100644 --- a/cpan/DB_File/version.c +++ b/cpan/DB_File/version.c @@ -48,6 +48,7 @@ __getBerkeleyDBInfo() @@ -23,9 +23,9 @@ /* || Patch != DB_VERSION_PATCH) */ @@ -55,6 +56,7 @@ __getBerkeleyDBInfo() croak("\nDB_File was build with libdb version %d.%d.%d,\nbut you are attempting to run it with libdb version %d.%d.%d\n", - DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH, + DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH, Major, Minor, Patch) ; +#endif /* DEBIAN */ - + /* check that libdb is recent enough -- we need 2.3.4 or greater */ if (Major == 2 && (Minor < 3 || (Minor == 3 && Patch < 4))) diff -Nru perl-5.32.1/debian/patches/debian/disable-stack-check.diff perl-5.34.0/debian/patches/debian/disable-stack-check.diff --- perl-5.32.1/debian/patches/debian/disable-stack-check.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/disable-stack-check.diff 2022-02-05 10:20:32.000000000 +0000 @@ -19,10 +19,10 @@ 2 files changed, 6 insertions(+) diff --git a/dump.c b/dump.c -index f03c3f6..737be76 100644 +index a72accd..ced47af 100644 --- a/dump.c +++ b/dump.c -@@ -2535,6 +2535,8 @@ Perl_runops_debug(pTHX) +@@ -2549,6 +2549,8 @@ Perl_runops_debug(pTHX) ++PL_op_exec_cnt[PL_op->op_type]; #endif #if defined DEBUGGING && !defined DEBUGGING_RE_ONLY @@ -31,20 +31,20 @@ if (PL_curstackinfo->si_stack_hwm < PL_stack_sp - PL_stack_base) Perl_croak_nocontext( "panic: previous op failed to extend arg stack: " -@@ -2542,6 +2544,7 @@ Perl_runops_debug(pTHX) +@@ -2556,6 +2558,7 @@ Perl_runops_debug(pTHX) PL_stack_base, PL_stack_sp, PL_stack_base + PL_curstackinfo->si_stack_hwm); PL_curstackinfo->si_stack_hwm = PL_stack_sp - PL_stack_base; +#endif #endif - if (PL_debug) { + if (PL_debug) { ENTER; diff --git a/pp_hot.c b/pp_hot.c -index 95f6d64..4f29316 100644 +index 3348afe..6fe8703 100644 --- a/pp_hot.c +++ b/pp_hot.c -@@ -5277,6 +5277,8 @@ PP(pp_entersub) - CvXSUB(cv)(aTHX_ cv); +@@ -5281,6 +5281,8 @@ PP(pp_entersub) + CvXSUB(cv)(aTHX_ cv); #if defined DEBUGGING && !defined DEBUGGING_RE_ONLY +/* disabled on Debian due to https://bugs.debian.org/902779 */ @@ -52,11 +52,11 @@ /* This duplicates the check done in runops_debug(), but provides more * information in the common case of the fault being with an XSUB. * -@@ -5290,6 +5292,7 @@ PP(pp_entersub) +@@ -5294,6 +5296,7 @@ PP(pp_entersub) HvNAME(GvSTASH(CvGV(cv))), GvNAME(CvGV(cv)), CvFILE(cv), PL_stack_base, PL_stack_sp, PL_stack_base + PL_curstackinfo->si_stack_hwm); +#endif #endif - /* Enforce some sanity in scalar context. */ - if (is_scalar) { + /* Enforce some sanity in scalar context. */ + if (is_scalar) { diff -Nru perl-5.32.1/debian/patches/debian/doc_info.diff perl-5.34.0/debian/patches/debian/doc_info.diff --- perl-5.32.1/debian/patches/debian/doc_info.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/doc_info.diff 2022-02-05 10:20:32.000000000 +0000 @@ -9,10 +9,10 @@ 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pod/perl.pod b/pod/perl.pod -index 25ae560..d053e4b 100644 +index 5f0815e..cc9c6bf 100644 --- a/pod/perl.pod +++ b/pod/perl.pod -@@ -305,8 +305,16 @@ aux h2ph h2xs perlbug pl2pm pod2html pod2man splain xsubpp +@@ -308,8 +308,16 @@ aux h2ph h2xs perlbug pl2pm pod2html pod2man splain xsubpp =for buildtoc __END__ diff -Nru perl-5.32.1/debian/patches/debian/errno_ver.diff perl-5.34.0/debian/patches/debian/errno_ver.diff --- perl-5.32.1/debian/patches/debian/errno_ver.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/errno_ver.diff 2022-02-05 10:20:32.000000000 +0000 @@ -13,10 +13,10 @@ 1 file changed, 16 deletions(-) diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 84fd151..9d1454c 100644 +index 0b9d4c7..cead331 100644 --- a/ext/Errno/Errno_pm.PL +++ b/ext/Errno/Errno_pm.PL -@@ -292,22 +292,6 @@ package Errno; +@@ -287,22 +287,6 @@ package Errno; require Exporter; use strict; diff -Nru perl-5.32.1/debian/patches/debian/eu-mm-perl-base.diff perl-5.34.0/debian/patches/debian/eu-mm-perl-base.diff --- perl-5.32.1/debian/patches/debian/eu-mm-perl-base.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/eu-mm-perl-base.diff 2022-02-05 10:20:32.000000000 +0000 @@ -10,10 +10,10 @@ 1 file changed, 2 insertions(+) diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm -index 2658299..0745e70 100644 +index cf63a96..eca0e45 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm -@@ -2740,6 +2740,8 @@ sub arch_check { +@@ -2741,6 +2741,8 @@ sub arch_check { my($pvol, $pthinks) = $self->splitpath($pconfig); my($cvol, $cthinks) = $self->splitpath($cconfig); diff -Nru perl-5.32.1/debian/patches/debian/extutils_set_libperl_path.diff perl-5.34.0/debian/patches/debian/extutils_set_libperl_path.diff --- perl-5.32.1/debian/patches/debian/extutils_set_libperl_path.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/extutils_set_libperl_path.diff 2022-02-05 10:20:32.000000000 +0000 @@ -9,10 +9,10 @@ 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm -index eadc051..e2550ae 100644 +index ff1b88e..6b50698 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm -@@ -2645,7 +2645,7 @@ MAP_PRELIBS = $Config{perllibs} $Config{cryptlib} +@@ -2646,7 +2646,7 @@ MAP_PRELIBS = $Config{perllibs} $Config{cryptlib} ($lperl = $libperl) =~ s/\$\(A\)/$self->{LIB_EXT}/; } unless ($libperl && -f $lperl) { # Ilya's code... diff -Nru perl-5.32.1/debian/patches/debian/fakeroot.diff perl-5.34.0/debian/patches/debian/fakeroot.diff --- perl-5.32.1/debian/patches/debian/fakeroot.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/fakeroot.diff 2022-02-05 10:20:32.000000000 +0000 @@ -13,7 +13,7 @@ 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Makefile.SH b/Makefile.SH -index 124db32..a593df6 100755 +index 2895bfc..2f8be12 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -48,10 +48,7 @@ case "$useshrplib" in diff -Nru perl-5.32.1/debian/patches/debian/hurd-softupdates.diff perl-5.34.0/debian/patches/debian/hurd-softupdates.diff --- perl-5.32.1/debian/patches/debian/hurd-softupdates.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/hurd-softupdates.diff 2022-02-05 10:20:32.000000000 +0000 @@ -11,10 +11,10 @@ 1 file changed, 1 insertion(+) diff --git a/t/op/stat.t b/t/op/stat.t -index 230e8d8..2ad60d2 100644 +index 3ebfb05..8b52fa1 100644 --- a/t/op/stat.t +++ b/t/op/stat.t -@@ -102,6 +102,7 @@ print FOO "Now is the time for all good men to come to.\n"; +@@ -104,6 +104,7 @@ print FOO "Now is the time for all good men to come to.\n"; close(FOO); stat($tmpfile) if $^O =~ /^gnukfreebsd/; # Work around Debian Bug#796798 diff -Nru perl-5.32.1/debian/patches/debian/kfreebsd-softupdates.diff perl-5.34.0/debian/patches/debian/kfreebsd-softupdates.diff --- perl-5.32.1/debian/patches/debian/kfreebsd-softupdates.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/kfreebsd-softupdates.diff 2022-02-05 10:20:32.000000000 +0000 @@ -14,10 +14,10 @@ 1 file changed, 1 insertion(+) diff --git a/t/op/stat.t b/t/op/stat.t -index 5ad119c..230e8d8 100644 +index 099a3f1..3ebfb05 100644 --- a/t/op/stat.t +++ b/t/op/stat.t -@@ -101,6 +101,7 @@ sleep 3 if $funky_FAT_timestamps; +@@ -103,6 +103,7 @@ sleep 3 if $funky_FAT_timestamps; print FOO "Now is the time for all good men to come to.\n"; close(FOO); diff -Nru perl-5.32.1/debian/patches/debian/ld_run_path.diff perl-5.34.0/debian/patches/debian/ld_run_path.diff --- perl-5.32.1/debian/patches/debian/ld_run_path.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/ld_run_path.diff 2022-02-05 10:20:32.000000000 +0000 @@ -7,7 +7,7 @@ 1 file changed, 2 insertions(+) diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm -index e040a89..01d09c5 100644 +index 3a715fb..31962a8 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm @@ -64,6 +64,8 @@ sub _unix_os2_ext { @@ -17,5 +17,5 @@ + # Debian-specific: don't use LD_RUN_PATH for standard dirs + $ld_run_path_seen{$_}++ for @libpath; - foreach my $thislib ( Text::ParseWords::quotewords( '\s+', 0, $potential_libs) ) { + foreach my $thislib ( Text::ParseWords::shellwords($potential_libs) ) { my ( $custom_name ) = ''; diff -Nru perl-5.32.1/debian/patches/debian/libnet_config_path.diff perl-5.34.0/debian/patches/debian/libnet_config_path.diff --- perl-5.32.1/debian/patches/debian/libnet_config_path.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/libnet_config_path.diff 2022-02-05 10:20:32.000000000 +0000 @@ -8,7 +8,7 @@ 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/cpan/libnet/lib/Net/Config.pm b/cpan/libnet/lib/Net/Config.pm -index 4f822a4..4b39781 100644 +index 2f8417f..b6d08e2 100644 --- a/cpan/libnet/lib/Net/Config.pm +++ b/cpan/libnet/lib/Net/Config.pm @@ -72,9 +72,8 @@ my %nc = ( diff -Nru perl-5.32.1/debian/patches/debian/makemaker-manext.diff perl-5.34.0/debian/patches/debian/makemaker-manext.diff --- perl-5.32.1/debian/patches/debian/makemaker-manext.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/makemaker-manext.diff 2022-02-05 10:20:32.000000000 +0000 @@ -14,10 +14,10 @@ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm -index 4f4b252..2658299 100644 +index 69a9492..cf63a96 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm -@@ -1090,7 +1090,7 @@ END +@@ -1091,7 +1091,7 @@ END my @man_cmds; foreach my $num (qw(1 3)) { my $pods = $self->{"MAN${num}PODS"}; @@ -27,10 +27,10 @@ CMD push @man_cmds, $self->split_command($p2m, map {($_,$pods->{$_})} sort keys %$pods); diff --git a/cpan/ExtUtils-MakeMaker/t/build_man.t b/cpan/ExtUtils-MakeMaker/t/build_man.t -index d2ab550..7518a1c 100644 +index 59a80eb..d525e2a 100644 --- a/cpan/ExtUtils-MakeMaker/t/build_man.t +++ b/cpan/ExtUtils-MakeMaker/t/build_man.t -@@ -221,9 +221,9 @@ unlink $README; +@@ -222,9 +222,9 @@ unlink $README; like $makefile, qr/\QMAN1SECTION = 1pm\E/xms, "Set MAN1SECTION"; like $makefile, qr/\QMAN3SECTION = 3pm\E/xms, "Set MAN3SECTION"; diff -Nru perl-5.32.1/debian/patches/debian/makemaker-pasthru.diff perl-5.34.0/debian/patches/debian/makemaker-pasthru.diff --- perl-5.32.1/debian/patches/debian/makemaker-pasthru.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/makemaker-pasthru.diff 2022-02-05 10:20:32.000000000 +0000 @@ -14,10 +14,10 @@ 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm -index 6c8f790..19690ab 100644 +index 9c12677..4370a87 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm -@@ -3036,7 +3036,7 @@ sub pasthru { +@@ -3041,7 +3041,7 @@ sub pasthru { my($sep) = $Is{VMS} ? ',' : ''; $sep .= "\\\n\t"; diff -Nru perl-5.32.1/debian/patches/debian/mod_paths.diff perl-5.34.0/debian/patches/debian/mod_paths.diff --- perl-5.32.1/debian/patches/debian/mod_paths.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/mod_paths.diff 2022-02-05 10:20:32.000000000 +0000 @@ -22,10 +22,10 @@ 1 file changed, 62 insertions(+) diff --git a/perl.c b/perl.c -index 071675c..6b33efe 100644 +index 48ae9a3..9d6c472 100644 --- a/perl.c +++ b/perl.c -@@ -4743,11 +4743,19 @@ S_init_perllib(pTHX) +@@ -4720,11 +4720,19 @@ S_init_perllib(pTHX) /* Use the ~-expanded versions of APPLLIB (undocumented), SITEARCH, SITELIB, VENDORARCH, VENDORLIB, ARCHLIB and PRIVLIB */ @@ -45,7 +45,7 @@ INCPUSH_ARCHLIB_EXP INCPUSH_PRIVLIB_EXP INCPUSH_PERL_OTHERLIBDIRS -@@ -4755,6 +4763,60 @@ S_init_perllib(pTHX) +@@ -4732,6 +4740,60 @@ S_init_perllib(pTHX) INCPUSH_APPLLIB_OLD_EXP INCPUSH_SITELIB_STEM INCPUSH_PERL_VENDORLIB_STEM diff -Nru perl-5.32.1/debian/patches/debian/no_packlist_perllocal.diff perl-5.34.0/debian/patches/debian/no_packlist_perllocal.diff --- perl-5.32.1/debian/patches/debian/no_packlist_perllocal.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/no_packlist_perllocal.diff 2022-02-05 10:20:32.000000000 +0000 @@ -7,10 +7,10 @@ 1 file changed, 3 insertions(+), 32 deletions(-) diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm -index e2550ae..6c8f790 100644 +index 6b50698..9c12677 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm -@@ -2313,11 +2313,6 @@ pure_perl_install :: all +@@ -2314,11 +2314,6 @@ pure_perl_install :: all $(NOECHO) umask 022; $(MOD_INSTALL) \ }; @@ -22,7 +22,7 @@ push @m, q{ "$(INST_LIB)" "$(DESTINSTALLPRIVLIB)" \ "$(INST_ARCHLIB)" "$(DESTINSTALLARCHLIB)" \ -@@ -2350,10 +2345,6 @@ q{ "$(INST_LIB)" "$(DESTINSTALLSITELIB)" \ +@@ -2351,10 +2346,6 @@ q{ "$(INST_LIB)" "$(DESTINSTALLSITELIB)" \ pure_vendor_install :: all $(NOECHO) umask 022; $(MOD_INSTALL) \ }; @@ -33,7 +33,7 @@ push @m, q{ "$(INST_LIB)" "$(DESTINSTALLVENDORLIB)" \ -@@ -2379,37 +2370,19 @@ doc_vendor_install :: all +@@ -2380,37 +2371,19 @@ doc_vendor_install :: all push @m, q{ doc_perl_install :: all @@ -74,7 +74,7 @@ } unless $self->{NO_PERLLOCAL}; -@@ -2418,13 +2391,11 @@ uninstall :: uninstall_from_$(INSTALLDIRS)dirs +@@ -2419,13 +2392,11 @@ uninstall :: uninstall_from_$(INSTALLDIRS)dirs $(NOECHO) $(NOOP) uninstall_from_perldirs :: diff -Nru perl-5.32.1/debian/patches/debian/patchlevel.diff perl-5.34.0/debian/patches/debian/patchlevel.diff --- perl-5.32.1/debian/patches/debian/patchlevel.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/patchlevel.diff 2022-02-05 10:20:32.000000000 +0000 @@ -12,16 +12,16 @@ 1 file changed, 3 insertions(+) diff --git a/patchlevel.h b/patchlevel.h -index 3c504ee..527f2bb 100644 +index 1a48368..74eeb30 100644 --- a/patchlevel.h +++ b/patchlevel.h -@@ -137,6 +137,9 @@ static const char * const local_patches[] = { - ,"uncommitted-changes" +@@ -161,6 +161,9 @@ static const char * const local_patches[] = { + ,"uncommitted-changes" #endif - PERL_GIT_UNPUSHED_COMMITS /* do not remove this line */ + PERL_GIT_UNPUSHED_COMMITS /* do not remove this line */ +#ifdef DEBIAN +#include "patchlevel-debian.h" +#endif - ,NULL + ,NULL }; diff -Nru perl-5.32.1/debian/patches/debian/perl5db-x-terminal-emulator.patch perl-5.34.0/debian/patches/debian/perl5db-x-terminal-emulator.patch --- perl-5.32.1/debian/patches/debian/perl5db-x-terminal-emulator.patch 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/perl5db-x-terminal-emulator.patch 2022-02-05 10:20:32.000000000 +0000 @@ -12,10 +12,10 @@ 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/perl5db.pl b/lib/perl5db.pl -index 69a9bb6..53d60f9 100644 +index 3ab6e57..7e714f0 100644 --- a/lib/perl5db.pl +++ b/lib/perl5db.pl -@@ -6988,7 +6988,7 @@ properly set up. +@@ -6990,7 +6990,7 @@ properly set up. sub xterm_get_fork_TTY { ( my $name = $0 ) =~ s,^.*[/\\],,s; open XT, diff -Nru perl-5.32.1/debian/patches/debian/perlbug-editor.diff perl-5.34.0/debian/patches/debian/perlbug-editor.diff --- perl-5.32.1/debian/patches/debian/perlbug-editor.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/perlbug-editor.diff 2022-02-05 10:20:32.000000000 +0000 @@ -8,7 +8,7 @@ 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/perlbug.PL b/utils/perlbug.PL -index f78b63c..67d7ca8 100644 +index 4715e9d..7918266 100644 --- a/utils/perlbug.PL +++ b/utils/perlbug.PL @@ -267,7 +267,7 @@ sub Init { diff -Nru perl-5.32.1/debian/patches/debian/perlivp.diff perl-5.34.0/debian/patches/debian/perlivp.diff --- perl-5.32.1/debian/patches/debian/perlivp.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/perlivp.diff 2022-02-05 10:20:32.000000000 +0000 @@ -23,7 +23,7 @@ 1 file changed, 1 insertion(+) diff --git a/utils/perlivp.PL b/utils/perlivp.PL -index f175caa..509f943 100644 +index 597ed6f..5459c07 100644 --- a/utils/perlivp.PL +++ b/utils/perlivp.PL @@ -155,6 +155,7 @@ my $INC_total = 0; diff -Nru perl-5.32.1/debian/patches/debian/squelch-locale-warnings.diff perl-5.34.0/debian/patches/debian/squelch-locale-warnings.diff --- perl-5.32.1/debian/patches/debian/squelch-locale-warnings.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/squelch-locale-warnings.diff 2022-02-05 10:20:32.000000000 +0000 @@ -17,10 +17,10 @@ 2 files changed, 11 insertions(+) diff --git a/locale.c b/locale.c -index 578c54f..a599d63 100644 +index eb6590f..5f933d4 100644 --- a/locale.c +++ b/locale.c -@@ -3317,6 +3317,9 @@ Perl_init_i18nl10n(pTHX_ int printwarn) +@@ -3226,6 +3226,9 @@ Perl_init_i18nl10n(pTHX_ int printwarn) const bool locwarn = (printwarn > 1 || ( printwarn @@ -31,7 +31,7 @@ || ( /* disallow with "" or "0" */ diff --git a/pod/perllocale.pod b/pod/perllocale.pod -index e03dc84..b0d9bd0 100644 +index 8354fe2..f0b0965 100644 --- a/pod/perllocale.pod +++ b/pod/perllocale.pod @@ -1304,6 +1304,14 @@ B: C only gives you a way to hide the warning message. diff -Nru perl-5.32.1/debian/patches/debian/usrmerge-lib64.diff perl-5.34.0/debian/patches/debian/usrmerge-lib64.diff --- perl-5.32.1/debian/patches/debian/usrmerge-lib64.diff 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/usrmerge-lib64.diff 2022-02-05 10:20:32.000000000 +0000 @@ -0,0 +1,28 @@ +From: Vagrant Cascadian +Date: Thu, 15 Jul 2021 20:20:07 +0000 +Subject: Configure / libpth.U: Do not adjust glibpth when /usr/lib64 is + present. + +This results in differing values when built on a usrmerge system. + +[Niko Tyni: Debian systems have /lib64/ld-linux-x86-64.so.2 and nothing +else, so but so called "usrmerged" systems with symlinks like /lib64 -> +/usr/lib64 would trigger the unnecessary addition of both in glibpth.] + +Bug-Debian: https://bugs.debian.org/914128 +--- + regen-configure/U/modified/libpth.U | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/regen-configure/U/modified/libpth.U b/regen-configure/U/modified/libpth.U +index ba7126d..d429280 100644 +--- a/regen-configure/U/modified/libpth.U ++++ b/regen-configure/U/modified/libpth.U +@@ -83,7 +83,6 @@ + ?X: /usr/shlib is for OSF/1 systems. + ?INIT:test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth" + ?INIT:test -f /shlib/libc.so && glibpth="/shlib $glibpth" +-?INIT:test -d /usr/lib64 && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64" + ?INIT: + ?INIT:: Private path used by Configure to find libraries. Its value + ?INIT:: is prepended to libpth. This variable takes care of special diff -Nru perl-5.32.1/debian/patches/debian/usrmerge-realpath.diff perl-5.34.0/debian/patches/debian/usrmerge-realpath.diff --- perl-5.32.1/debian/patches/debian/usrmerge-realpath.diff 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/usrmerge-realpath.diff 2022-02-05 10:20:32.000000000 +0000 @@ -0,0 +1,34 @@ +From: Niko Tyni +Date: Tue, 24 Aug 2021 23:48:58 +0300 +Subject: Configure / libpth.U: use realpath --no-symlinks on Debian + +This makes the libpth probe results identical on usrmerged (/lib -> /usr/lib etc.) +vs. non-usrmerged systems. + +Bug-Debian: https://bugs.debian.org/914128 +--- + regen-configure/U/modified/libpth.U | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/regen-configure/U/modified/libpth.U b/regen-configure/U/modified/libpth.U +index d429280..933cbb8 100644 +--- a/regen-configure/U/modified/libpth.U ++++ b/regen-configure/U/modified/libpth.U +@@ -112,7 +112,7 @@ case "$ccname" in + if $test $# -gt 0; then + for i in $*; do + case $realpath in +- */realpath) i=`$realpath $i` ;; ++ */realpath) i=`$realpath --no-symlinks $i` ;; + esac + incpth="$incpth $i" + j="`$echo $i | $sed 's,/include[^/]*,/lib,'`" +@@ -124,7 +124,7 @@ case "$ccname" in + for xxx in $inclibpth $loclibpth $plibpth $glibpth; do + if $test -d $xxx; then + case $realpath in +- */realpath) xxx=`$realpath $xxx` ;; ++ */realpath) xxx=`$realpath --no-symlinks $xxx` ;; + esac + case " $libpth " in + *" $xxx "*) ;; diff -Nru perl-5.32.1/debian/patches/debian/writable_site_dirs.diff perl-5.34.0/debian/patches/debian/writable_site_dirs.diff --- perl-5.32.1/debian/patches/debian/writable_site_dirs.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/debian/writable_site_dirs.diff 2022-02-05 10:20:32.000000000 +0000 @@ -8,10 +8,10 @@ 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm -index b759d3f1..eadc051 100644 +index d4b7eaf..ff1b88e 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm -@@ -2330,7 +2330,7 @@ q{ "$(INST_LIB)" "$(DESTINSTALLPRIVLIB)" \ +@@ -2331,7 +2331,7 @@ q{ "$(INST_LIB)" "$(DESTINSTALLPRIVLIB)" \ pure_site_install :: all @@ -20,7 +20,7 @@ }; push @m, q{ read "}.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{" \ -@@ -2391,8 +2391,8 @@ doc_perl_install :: all +@@ -2392,8 +2392,8 @@ doc_perl_install :: all doc_site_install :: all $(NOECHO) $(ECHO) Appending installation info to "$(DESTINSTALLARCHLIB)/perllocal.pod" diff -Nru perl-5.32.1/debian/patches/disable-libperl-tests.diff perl-5.34.0/debian/patches/disable-libperl-tests.diff --- perl-5.32.1/debian/patches/disable-libperl-tests.diff 2022-02-04 21:49:31.000000000 +0000 +++ perl-5.34.0/debian/patches/disable-libperl-tests.diff 2022-02-06 11:02:58.000000000 +0000 @@ -1,6 +1,6 @@ --- a/t/porting/libperl.t +++ b/t/porting/libperl.t -@@ -129,7 +129,7 @@ if (defined $nm_style) { +@@ -124,7 +124,7 @@ if (defined $nm_style) { } } @@ -9,7 +9,7 @@ # For example in ppc most (but not all!) code symbols are placed # in 'D' (data), not in ' T '. We cannot work under such conditions. skip_all "linux but archname $Config{archname} not x86*"; -@@ -325,8 +325,9 @@ unless (exists $symbols{text}) { +@@ -320,8 +320,9 @@ unless (exists $symbols{text}) { ok($symbols{obj}{'pp.o'}, "has object pp.o"); ok($symbols{text}{'Perl_peep'}, "has text Perl_peep"); ok($symbols{text}{'Perl_pp_uc'}{'pp.o'}, "has text Perl_pp_uc in pp.o"); @@ -19,5 +19,5 @@ +#ok(exists $symbols{data}{const}, "has data const symbols"); +#ok($symbols{data}{const}{PL_no_mem}{'globals.o'}, "has PL_no_mem"); - my $GS = $Config{ccflags} =~ /-DPERL_GLOBAL_STRUCT\b/ ? 1 : 0; - my $GSP = $Config{ccflags} =~ /-DPERL_GLOBAL_STRUCT_PRIVATE/ ? 1 : 0; + my $nocommon = $Config{ccflags} =~ /-fno-common/ ? 1 : 0; + diff -Nru perl-5.32.1/debian/patches/fixes/cpan_web_link.diff perl-5.34.0/debian/patches/fixes/cpan_web_link.diff --- perl-5.32.1/debian/patches/fixes/cpan_web_link.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/fixes/cpan_web_link.diff 2022-02-05 10:20:32.000000000 +0000 @@ -9,10 +9,10 @@ 1 file changed, 3 insertions(+) diff --git a/cpan/CPAN/lib/CPAN.pm b/cpan/CPAN/lib/CPAN.pm -index 2d87f47..9345a07 100644 +index c93d98e..fdd8357 100644 --- a/cpan/CPAN/lib/CPAN.pm +++ b/cpan/CPAN/lib/CPAN.pm -@@ -4083,6 +4083,9 @@ your operating system) then typing C in a console window will +@@ -4086,6 +4086,9 @@ your operating system) then typing C in a console window will work for you as well. Above that the utility provides several commandline shortcuts. diff -Nru perl-5.32.1/debian/patches/fixes/document_makemaker_ccflags.diff perl-5.34.0/debian/patches/fixes/document_makemaker_ccflags.diff --- perl-5.32.1/debian/patches/fixes/document_makemaker_ccflags.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/fixes/document_makemaker_ccflags.diff 2022-02-05 10:20:32.000000000 +0000 @@ -12,10 +12,10 @@ 1 file changed, 4 insertions(+) diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm -index 6dceb98..99960bb 100644 +index b9b3836..cc637ad 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm -@@ -1842,6 +1842,10 @@ currently used by MakeMaker but may be handy in Makefile.PLs. +@@ -1838,6 +1838,10 @@ currently used by MakeMaker but may be handy in Makefile.PLs. String that will be included in the compiler call command line between the arguments INC and OPTIMIZE. diff -Nru perl-5.32.1/debian/patches/fixes/encode-CVE-2021-36770.diff perl-5.34.0/debian/patches/fixes/encode-CVE-2021-36770.diff --- perl-5.32.1/debian/patches/fixes/encode-CVE-2021-36770.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/fixes/encode-CVE-2021-36770.diff 2022-02-05 10:20:32.000000000 +0000 @@ -7,7 +7,7 @@ 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpan/Encode/Encode.pm b/cpan/Encode/Encode.pm -index de06ba1..4ec7d86 100644 +index d3eb3c1..9fb5fc7 100644 --- a/cpan/Encode/Encode.pm +++ b/cpan/Encode/Encode.pm @@ -65,8 +65,8 @@ require Encode::Config; diff -Nru perl-5.32.1/debian/patches/fixes/gdbm-1.20.diff perl-5.34.0/debian/patches/fixes/gdbm-1.20.diff --- perl-5.32.1/debian/patches/fixes/gdbm-1.20.diff 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/debian/patches/fixes/gdbm-1.20.diff 2022-02-05 10:20:32.000000000 +0000 @@ -0,0 +1,40 @@ +From: Sergey Poznyakoff +Date: Wed, 23 Jun 2021 10:26:50 +0300 +Subject: Fix GDBM_File to compile with version 1.20 and earlier + +* ext/GDBM_File/GDBM_File.xs (ITEM_NOT_FOUND): Define conditionally, +depending on the GDBM_VERSION_MAJOR and GDBM_VERSION_MINOR. +Don't assume GDBM_ITEM_NOT_FOUND is a define (it isn't since +gdbm commit d3e27957). + +Origin: backport, https://github.com/Perl/perl5/pull/18924/commits/aacd2398e766500cb5d83c4d76b642fcf31d997a +Bug: https://github.com/Perl/perl5/issues/18915 +Bug-Debian: https://bugs.debian.org/993514 +--- + ext/GDBM_File/GDBM_File.xs | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +diff --git a/ext/GDBM_File/GDBM_File.xs b/ext/GDBM_File/GDBM_File.xs +index cd0bb6f..494c288 100644 +--- a/ext/GDBM_File/GDBM_File.xs ++++ b/ext/GDBM_File/GDBM_File.xs +@@ -145,14 +145,13 @@ output_datum(pTHX_ SV *arg, char *str, int size) + #define gdbm_setopt(db,optflag,optval,optlen) not_here("gdbm_setopt") + #endif + +-#ifndef GDBM_ITEM_NOT_FOUND +-# define GDBM_ITEM_NOT_FOUND GDBM_NO_ERROR +-#endif +- ++#if GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR < 13 + /* Prior to 1.13, gdbm_fetch family functions set gdbm_errno to GDBM_NO_ERROR + if the requested key did not exist */ +-#define ITEM_NOT_FOUND() \ +- (gdbm_errno == GDBM_ITEM_NOT_FOUND || gdbm_errno == GDBM_NO_ERROR) ++# define ITEM_NOT_FOUND() (gdbm_errno == GDBM_NO_ERROR) ++#else ++# define ITEM_NOT_FOUND() (gdbm_errno == GDBM_ITEM_NOT_FOUND) ++#endif + + #define CHECKDB(db) do { \ + if (!db->dbp) { \ diff -Nru perl-5.32.1/debian/patches/fixes/hurd-cachepropagate-test-fix.diff perl-5.34.0/debian/patches/fixes/hurd-cachepropagate-test-fix.diff --- perl-5.32.1/debian/patches/fixes/hurd-cachepropagate-test-fix.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/fixes/hurd-cachepropagate-test-fix.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -From: Samuel Thibault -Date: Thu, 18 Jun 2020 13:47:36 +0200 -Subject: GNU/Hurd doesn't support SO_PROTOCOL - -Bug-Debian: https://bugs.debian.org/963214 -Origin: https://github.com/Perl/perl5/pull/17873 ---- - dist/IO/t/cachepropagate-unix.t | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/dist/IO/t/cachepropagate-unix.t b/dist/IO/t/cachepropagate-unix.t -index e0dde1e..718d01d 100644 ---- a/dist/IO/t/cachepropagate-unix.t -+++ b/dist/IO/t/cachepropagate-unix.t -@@ -50,7 +50,7 @@ my $p = $listener->protocol(); - # This is a TODO instead of a skip so if these ever implement SO_PROTOCOL - # we'll be notified about the passing TODO so the test can be updated. - local $TODO = "$^O doesn't support SO_PROTOCOL on AF_UNIX" -- if $^O =~ /^(netbsd|darwin|cygwin|hpux|solaris|dragonfly|os390)$/; -+ if $^O =~ /^(netbsd|darwin|cygwin|hpux|solaris|dragonfly|os390|gnu)$/; - ok(defined($p), 'protocol defined'); - } - my $d = $listener->sockdomain(); -@@ -105,7 +105,7 @@ SKIP: { - { - # see comment above - local $TODO = "$^O doesn't support SO_PROTOCOL on AF_UNIX" -- if $^O =~ /^(netbsd|darwin|cygwin|hpux|solaris|dragonfly|os390)$/; -+ if $^O =~ /^(netbsd|darwin|cygwin|hpux|solaris|dragonfly|os390|gnu)$/; - ok(defined($p), 'protocol defined'); - } - $d = $listener->sockdomain(); diff -Nru perl-5.32.1/debian/patches/fixes/io_socket_ip_ipv6.diff perl-5.34.0/debian/patches/fixes/io_socket_ip_ipv6.diff --- perl-5.32.1/debian/patches/fixes/io_socket_ip_ipv6.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/fixes/io_socket_ip_ipv6.diff 2022-02-05 10:20:32.000000000 +0000 @@ -14,10 +14,10 @@ 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/cpan/IO-Socket-IP/lib/IO/Socket/IP.pm b/cpan/IO-Socket-IP/lib/IO/Socket/IP.pm -index 5a5ee7d..2481c63 100644 +index 3158ef5..8d0c83e 100644 --- a/cpan/IO-Socket-IP/lib/IO/Socket/IP.pm +++ b/cpan/IO-Socket-IP/lib/IO/Socket/IP.pm -@@ -30,6 +30,7 @@ use Socket 1.97 qw( +@@ -33,6 +33,7 @@ use Socket 1.97 qw( ); my $AF_INET6 = eval { Socket::AF_INET6() }; # may not be defined my $AI_ADDRCONFIG = eval { Socket::AI_ADDRCONFIG() } || 0; @@ -25,7 +25,7 @@ use POSIX qw( dup2 ); use Errno qw( EINVAL EINPROGRESS EISCONN ENOTCONN ETIMEDOUT EWOULDBLOCK EOPNOTSUPP ); -@@ -409,6 +410,8 @@ sub _io_socket_ip__configure +@@ -415,6 +416,8 @@ sub _io_socket_ip__configure my ( $arg ) = @_; my %hints; @@ -34,7 +34,7 @@ my @localinfos; my @peerinfos; -@@ -420,9 +423,20 @@ sub _io_socket_ip__configure +@@ -426,9 +429,20 @@ sub _io_socket_ip__configure if( defined $arg->{GetAddrInfoFlags} ) { $hints{flags} = $arg->{GetAddrInfoFlags}; @@ -56,7 +56,7 @@ } if( defined( my $family = $arg->{Family} ) ) { -@@ -479,6 +493,7 @@ sub _io_socket_ip__configure +@@ -485,6 +499,7 @@ sub _io_socket_ip__configure my $fallback_port = $1; my %localhints = %hints; @@ -64,7 +64,7 @@ $localhints{flags} |= AI_PASSIVE; ( my $err, @localinfos ) = getaddrinfo( $host, $service, \%localhints ); -@@ -507,10 +522,12 @@ sub _io_socket_ip__configure +@@ -513,10 +528,12 @@ sub _io_socket_ip__configure defined $service and $service =~ s/\((\d+)\)$// and my $fallback_port = $1; @@ -79,7 +79,7 @@ } if( $err ) { -@@ -590,6 +607,7 @@ sub _io_socket_ip__configure +@@ -596,6 +613,7 @@ sub _io_socket_ip__configure # If there wasn't, use getaddrinfo()'s AI_ADDRCONFIG side-effect to guess a # suitable family first. else { diff -Nru perl-5.32.1/debian/patches/fixes/regcomp-memleak.diff perl-5.34.0/debian/patches/fixes/regcomp-memleak.diff --- perl-5.32.1/debian/patches/fixes/regcomp-memleak.diff 2021-09-24 15:20:33.000000000 +0000 +++ perl-5.34.0/debian/patches/fixes/regcomp-memleak.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -From: Karl Williamson -Date: Sat, 27 Feb 2021 11:43:41 -0700 -Subject: regcomp.c: Remove memory leak - -This fixes GH #18604. There was a path through the code where a -particular SV did not get its reference count decremented. - -I did an audit of the function and came up with several other -possiblities that are included in this commit. - -Further, there would be leaks for some instances of finding syntax -errors in the input pattern, or when warnings are fatalized. Those -would require mortalizing some SVs, but that is beyond the scope of this -commit. - -Origin: backport, https://github.com/Perl/perl5/commit/5f41fa466a67b5535aa8bcf4b814f242545ac7bd -Bug: https://github.com/Perl/perl5/issues/18604 -Bug-Debian: https://bugs.debian.org/994834 ---- - regcomp.c | 7 +++++++ - t/op/svleak.t | 3 ++- - 2 files changed, 9 insertions(+), 1 deletion(-) - -diff --git a/regcomp.c b/regcomp.c -index 0da659c..5c72ff7 100644 ---- a/regcomp.c -+++ b/regcomp.c -@@ -18626,6 +18626,12 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth, - RExC_end = save_end; - RExC_in_multi_char_class = 0; - SvREFCNT_dec_NN(multi_char_matches); -+ SvREFCNT_dec(properties); -+ SvREFCNT_dec(cp_list); -+ SvREFCNT_dec(simple_posixes); -+ SvREFCNT_dec(posixes); -+ SvREFCNT_dec(nposixes); -+ SvREFCNT_dec(cp_foldable_list); - return ret; - } - -@@ -19983,6 +19989,7 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth, - RExC_parse - orig_parse);; - SvREFCNT_dec(cp_list);; - SvREFCNT_dec(only_utf8_locale_list); -+ SvREFCNT_dec(upper_latin1_only_utf8_matches); - return ret; - } - -diff --git a/t/op/svleak.t b/t/op/svleak.t -index 6acc298..3df4838 100644 ---- a/t/op/svleak.t -+++ b/t/op/svleak.t -@@ -15,7 +15,7 @@ BEGIN { - - use Config; - --plan tests => 150; -+plan tests => 151; - - # run some code N times. If the number of SVs at the end of loop N is - # greater than (N-1)*delta at the end of loop 1, we've got a leak -@@ -278,6 +278,7 @@ eleak(2,0,'/[[:ascii:]]/'); - eleak(2,0,'/[[.zog.]]/'); - eleak(2,0,'/[.zog.]/'); - eleak(2,0,'/|\W/', '/|\W/ [perl #123198]'); -+eleak(2,0,'/a\sb/', '/a\sb/ [GH #18604]'); - eleak(2,0,'no warnings; /(?[])/'); - eleak(2,0,'no warnings; /(?[[a]+[b]])/'); - eleak(2,0,'no warnings; /(?[[a]-[b]])/'); diff -Nru perl-5.32.1/debian/patches/fixes/respect_umask.diff perl-5.34.0/debian/patches/fixes/respect_umask.diff --- perl-5.32.1/debian/patches/fixes/respect_umask.diff 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/patches/fixes/respect_umask.diff 2022-02-05 10:20:32.000000000 +0000 @@ -10,19 +10,19 @@ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm b/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm -index 047c007..cd7e4f2 100644 +index 9608180..3da1e36 100644 --- a/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm +++ b/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm -@@ -463,7 +463,7 @@ sub _can_write_dir { +@@ -442,7 +442,7 @@ sub _can_write_dir { + return 0; + } - =pod - --=item _mkpath($dir,$show,$mode,$verbose,$dry_run) -+=item _mkpath($dir,$show,$verbose,$dry_run) +-=head2 _mkpath($dir,$show,$mode,$verbose,$dry_run) ++=head2 _mkpath($dir,$show,$verbose,$dry_run) Wrapper around File::Path::mkpath() to handle errors. -@@ -480,13 +480,13 @@ writable. +@@ -459,15 +459,15 @@ writable. =cut sub _mkpath { @@ -34,12 +34,14 @@ + printf "mkpath(%s,%d)\n", $dir, $show; } if (!$dry_run) { -- if ( ! eval { File::Path::mkpath($dir,$show,$mode); 1 } ) { -+ if ( ! eval { File::Path::mkpath($dir,$show); 1 } ) { - _choke("Can't create '$dir'","$@"); - } - -@@ -799,7 +799,7 @@ sub install { #XXX OS-SPECIFIC + my @created; + eval { +- @created = File::Path::mkpath($dir,$show,$mode); ++ @created = File::Path::mkpath($dir,$show); + 1; + } or _choke("Can't create '$dir'","$@"); + # if we created any directories, we were able to write and don't need +@@ -769,7 +769,7 @@ sub install { #XXX OS-SPECIFIC _chdir($cwd); } foreach my $targetdir (sort keys %check_dirs) { @@ -48,7 +50,7 @@ } foreach my $found (@found_files) { my ($diff, $ffd, $origfile, $mode, $size, $atime, $mtime, -@@ -813,7 +813,7 @@ sub install { #XXX OS-SPECIFIC +@@ -783,7 +783,7 @@ sub install { #XXX OS-SPECIFIC $targetfile= _unlink_or_rename( $targetfile, 'tryhard', 'install' ) unless $dry_run; } elsif ( ! -d $targetdir ) { @@ -57,7 +59,7 @@ } print "Installing $targetfile\n"; -@@ -853,7 +853,7 @@ sub install { #XXX OS-SPECIFIC +@@ -823,7 +823,7 @@ sub install { #XXX OS-SPECIFIC if ($pack{'write'}) { $dir = install_rooted_dir(dirname($pack{'write'})); @@ -66,29 +68,29 @@ print "Writing $pack{'write'}\n" if $verbose; $packlist->write(install_rooted_file($pack{'write'})) unless $dry_run; } -@@ -1199,7 +1199,7 @@ environment variable will silence this output. - sub pm_to_blib { +@@ -1161,7 +1161,7 @@ sub pm_to_blib { my($fromto,$autodir,$pm_filter) = @_; + my %dirs; - _mkpath($autodir,0,0755) if defined $autodir; + _mkpath($autodir,0) if defined $autodir; while(my($from, $to) = each %$fromto) { if( -f $to && -s $from == -s $to && -M $to < -M $from ) { print "Skip $to (unchanged)\n" unless $INSTALL_QUIET; -@@ -1222,7 +1222,7 @@ sub pm_to_blib { - # we wont try hard here. its too likely to mess things up. - forceunlink($to); +@@ -1186,7 +1186,7 @@ sub pm_to_blib { } else { -- _mkpath(dirname($to),0,0755); -+ _mkpath(dirname($to),0); + my $dirname = dirname($to); + if (!$dirs{$dirname}++) { +- _mkpath($dirname,0,0755); ++ _mkpath($dirname,0); + } } if ($need_filtering) { - run_filter($pm_filter, $from, $to); diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm -index ce12927..b759d3f1 100644 +index 977b50e..d4b7eaf 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm -@@ -2310,7 +2310,7 @@ doc__install : doc_site_install +@@ -2311,7 +2311,7 @@ doc__install : doc_site_install $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site pure_perl_install :: all @@ -97,7 +99,7 @@ }; push @m, -@@ -2330,7 +2330,7 @@ q{ "$(INST_LIB)" "$(DESTINSTALLPRIVLIB)" \ +@@ -2331,7 +2331,7 @@ q{ "$(INST_LIB)" "$(DESTINSTALLPRIVLIB)" \ pure_site_install :: all @@ -106,7 +108,7 @@ }; push @m, q{ read "}.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{" \ -@@ -2348,7 +2348,7 @@ q{ "$(INST_LIB)" "$(DESTINSTALLSITELIB)" \ +@@ -2349,7 +2349,7 @@ q{ "$(INST_LIB)" "$(DESTINSTALLSITELIB)" \ "}.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{" pure_vendor_install :: all @@ -115,7 +117,7 @@ }; push @m, q{ read "}.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{" \ -@@ -2380,8 +2380,8 @@ doc_vendor_install :: all +@@ -2381,8 +2381,8 @@ doc_vendor_install :: all push @m, q{ doc_perl_install :: all $(NOECHO) $(ECHO) Appending installation info to "$(DESTINSTALLARCHLIB)/perllocal.pod" @@ -126,7 +128,7 @@ "Module" "$(NAME)" \ "installed into" "$(INSTALLPRIVLIB)" \ LINKTYPE "$(LINKTYPE)" \ -@@ -2391,8 +2391,8 @@ doc_perl_install :: all +@@ -2392,8 +2392,8 @@ doc_perl_install :: all doc_site_install :: all $(NOECHO) $(ECHO) Appending installation info to "$(DESTINSTALLARCHLIB)/perllocal.pod" @@ -137,7 +139,7 @@ "Module" "$(NAME)" \ "installed into" "$(INSTALLSITELIB)" \ LINKTYPE "$(LINKTYPE)" \ -@@ -2402,8 +2402,8 @@ doc_site_install :: all +@@ -2403,8 +2403,8 @@ doc_site_install :: all doc_vendor_install :: all $(NOECHO) $(ECHO) Appending installation info to "$(DESTINSTALLARCHLIB)/perllocal.pod" diff -Nru perl-5.32.1/debian/patches/fixes/x32-io-msg-skip.diff perl-5.34.0/debian/patches/fixes/x32-io-msg-skip.diff --- perl-5.32.1/debian/patches/fixes/x32-io-msg-skip.diff 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/debian/patches/fixes/x32-io-msg-skip.diff 2022-02-05 10:20:32.000000000 +0000 @@ -0,0 +1,23 @@ +From: Niko Tyni +Date: Thu, 26 Aug 2021 00:34:37 +0300 +Subject: Skip io/msg.t on x32 due to broken System V message queues + +Bug-Debian: https://bugs.debian.org/922609 +--- + t/io/msg.t | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/t/io/msg.t b/t/io/msg.t +index 2c3f75b..f5bc991 100644 +--- a/t/io/msg.t ++++ b/t/io/msg.t +@@ -14,6 +14,9 @@ BEGIN { + if ($Config{'d_msg'} ne 'define') { + skip_all('-- $Config{d_msg} undefined'); + } ++ if ($Config{'archname'} =~ /gnux32/) { ++ skip_all('-- SysV IPC message queues are broken on x32, see https://bugs.debian.org/988900'); ++ } + } + + use strict; diff -Nru perl-5.32.1/debian/patches/series perl-5.34.0/debian/patches/series --- perl-5.32.1/debian/patches/series 2022-02-04 21:49:31.000000000 +0000 +++ perl-5.34.0/debian/patches/series 2022-02-06 11:02:58.000000000 +0000 @@ -36,13 +36,15 @@ debian/perldoc-pager.diff debian/prune_libs.diff debian/mod_paths.diff -debian/configure-regen.diff debian/deprecate-with-apt.diff debian/disable-stack-check.diff debian/perlbug-editor.diff debian/eu-mm-perl-base.diff -fixes/hurd-cachepropagate-test-fix.diff fixes/io_socket_ip_ipv6.diff +debian/usrmerge-lib64.diff +debian/usrmerge-realpath.diff +debian/configure-regen.diff +fixes/x32-io-msg-skip.diff fixes/encode-CVE-2021-36770.diff -fixes/regcomp-memleak.diff +fixes/gdbm-1.20.diff disable-libperl-tests.diff diff -Nru perl-5.32.1/debian/perl-modules-5.32.install perl-5.34.0/debian/perl-modules-5.32.install --- perl-5.32.1/debian/perl-modules-5.32.install 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/perl-modules-5.32.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/share/perl diff -Nru perl-5.32.1/debian/perl-modules-5.32.README.Debian perl-5.34.0/debian/perl-modules-5.32.README.Debian --- perl-5.32.1/debian/perl-modules-5.32.README.Debian 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/perl-modules-5.32.README.Debian 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -This package contains those Perl core modules that are architecture -independent. See /usr/share/doc/perl/README.Debian for more information -on the Perl Debian packaging. - -Please note that this package only exists to save archive space and -should be considered an internal implementation detail of the `perl' -package. Other packages should not depend on `perl-modules-5.xx' directly, -they should use `perl' (which depends on `perl-modules-5.xx') instead. -See Debian bug #552052 for background. - diff -Nru perl-5.32.1/debian/perl-modules-5.34.install perl-5.34.0/debian/perl-modules-5.34.install --- perl-5.32.1/debian/perl-modules-5.34.install 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/debian/perl-modules-5.34.install 2022-02-05 10:20:32.000000000 +0000 @@ -0,0 +1 @@ +usr/share/perl diff -Nru perl-5.32.1/debian/perl-modules-5.34.README.Debian perl-5.34.0/debian/perl-modules-5.34.README.Debian --- perl-5.32.1/debian/perl-modules-5.34.README.Debian 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/debian/perl-modules-5.34.README.Debian 2022-02-05 10:20:32.000000000 +0000 @@ -0,0 +1,10 @@ +This package contains those Perl core modules that are architecture +independent. See /usr/share/doc/perl/README.Debian for more information +on the Perl Debian packaging. + +Please note that this package only exists to save archive space and +should be considered an internal implementation detail of the `perl' +package. Other packages should not depend on `perl-modules-5.xx' directly, +they should use `perl' (which depends on `perl-modules-5.xx') instead. +See Debian bug #552052 for background. + diff -Nru perl-5.32.1/debian/perl.postinst perl-5.34.0/debian/perl.postinst --- perl-5.32.1/debian/perl.postinst 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/perl.postinst 2022-02-05 10:20:32.000000000 +0000 @@ -7,7 +7,7 @@ if which dpkg-trigger >/dev/null 2>&1 && \ [ -n "$2" ] && \ - dpkg --compare-versions "$2" lt 5.32.0~ + dpkg --compare-versions "$2" lt 5.34.0~ then dpkg-trigger --no-await perl-major-upgrade fi diff -Nru perl-5.32.1/debian/perl.README.Debian perl-5.34.0/debian/perl.README.Debian --- perl-5.32.1/debian/perl.README.Debian 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/perl.README.Debian 2022-02-05 10:20:32.000000000 +0000 @@ -5,14 +5,14 @@ perl-base - The Pathologically Eclectic Rubbish Lister. perl-doc - Perl documentation. perl-debug - Debug-enabled Perl interpreter. - libperl5.32 - Shared Perl library. - perl-modules-5.32 - Architecture independent core Perl modules. + libperl5.34 - Shared Perl library. + perl-modules-5.34 - Architecture independent core Perl modules. libperl-dev - Perl library: development files. To provide a minimal working perl, the ``perl-base'' package provides the /usr/bin/perl binary plus a basic set of libraries. -The remainder of the application is included in the perl, perl-modules-5.32 +The remainder of the application is included in the perl, perl-modules-5.34 and perl-doc packages. See the 'README.source' file in the perl source package for information diff -Nru perl-5.32.1/debian/README.source perl-5.34.0/debian/README.source --- perl-5.32.1/debian/README.source 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/README.source 2022-02-05 10:20:32.000000000 +0000 @@ -99,22 +99,18 @@ ------------------------------- Assuming you are importing a new major upstream release and -have the files perl_5.31.0.orig.tar.xz and -perl_5.31.0.orig-regen-configure.tar.gz in the parent directory -(see below for information about the regen-configure component +have the files perl_5.34.0.orig.tar.xz and +perl_5.34.0.orig-regen-configure.tar.xz in the parent directory +(see below for information about getting the regen-configure component tarball). -# necessary due to https://bugs.debian.org/898026 -ln -s perl_5.31.0.orig-regen-configure.tar.gz perl_5.31.0.orig-regen-configure.tar.xz cd perl -git branch upstream-debian-5.31 upstream-debian-5.30 -git branch debian-5.31 debian-5.30 -gbp import-orig --upstream-version 5.31.0 --upstream-branch upstream-debian-5.31 --debian-branch debian-5.31 --component regen-configure --no-merge ../perl_5.31.0.orig.tar.xz -pristine-tar commit ../perl_5.31.0.orig.tar.xz 5.31.0 -pristine-tar commit ../perl_5.31.0.orig-regen-configure.tar.gz 5.31.0 -git debrebase new-upstream 5.31.0 +git branch upstream-debian-5.34 upstream-debian-5.32 +git branch debian-5.34 debian-5.32 +gbp import-orig --upstream-version 5.34.0 --upstream-branch upstream-debian-5.34 --debian-branch debian-5.34 --component regen-configure --pristine-tar --no-merge ../perl_5.34.0.orig.tar.xz +git debrebase new-upstream 5.34.0 # possibly resolve conflicts -git diff debian/5.30.0-1..HEAD . ':!debian' # review changes +git diff debian-5.32..HEAD . ':!debian' # review changes # hack on code, add other patches, etc # before pushing git debrebase conclude @@ -181,10 +177,6 @@ It can be regenerated by running uscan(1), which uses mk-origtargz(1) behind the scenes. -The initial packaging for 5.26.1 was based on upstream -commit d99ddb45cefcc4ae5fde1787cfbe18e1073f9f54, tagged -as debian/perl-5.26.1 in the above repository. - Credits ------- diff -Nru perl-5.32.1/debian/released-versions perl-5.34.0/debian/released-versions --- perl-5.32.1/debian/released-versions 2021-08-25 18:11:56.000000000 +0000 +++ perl-5.34.0/debian/released-versions 2022-02-05 10:20:44.000000000 +0000 @@ -32,3 +32,4 @@ 5.30.3 5.32.0 5.32.1 +5.34.0 diff -Nru perl-5.32.1/debian/rules perl-5.34.0/debian/rules --- perl-5.32.1/debian/rules 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/rules 2022-02-05 10:20:32.000000000 +0000 @@ -92,6 +92,11 @@ test -f Configure update-configure-stamp: + if [ -e regen-configure/bin ]; then \ + echo "regen-configure/bin is present but should have been repacked away, aborting" 1>&2; \ + echo '(see README.source and https://bugs.debian.org/992200)' 1>&2; \ + exit 1; \ + fi mv Configure Configure.orig mv config_h.SH config_h.SH.orig ln -s regen-configure/U diff -Nru perl-5.32.1/debian/t/control.t perl-5.34.0/debian/t/control.t --- perl-5.32.1/debian/t/control.t 2021-09-24 15:20:24.000000000 +0000 +++ perl-5.34.0/debian/t/control.t 2022-02-05 10:20:32.000000000 +0000 @@ -73,7 +73,7 @@ # Replaces+Provides my %triplet_check_skip = ( "perl-base" => [ "libfile-spec-perl" ], - "libperl5.32" => [ "libfilter-perl" ], + "libperl5.34" => [ "libfilter-perl" ], ); # list special cases where the name of the Debian package does not diff -Nru perl-5.32.1/dist/base/t/fields-5_6_0.t perl-5.34.0/dist/base/t/fields-5_6_0.t --- perl-5.32.1/dist/base/t/fields-5_6_0.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/base/t/fields-5_6_0.t 2020-10-24 18:43:34.000000000 +0000 @@ -182,7 +182,7 @@ $ph = fields::phash([qw/a b c/], [1, 2, 3]); ok( fstr($ph) eq 'a:1,b:2,c:3' ); -# The way exists() works with psuedohashes changed from 5.005 to 5.6 +# The way exists() works with pseudohashes changed from 5.005 to 5.6 $ph = fields::phash([qw/a b c/], [1]); if( $] > 5.006 ) { ok( !( exists $ph->{b} or exists $ph->{c} or !exists $ph->{a} ) ); diff -Nru perl-5.32.1/dist/Carp/lib/Carp/Heavy.pm perl-5.34.0/dist/Carp/lib/Carp/Heavy.pm --- perl-5.32.1/dist/Carp/lib/Carp/Heavy.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Carp/lib/Carp/Heavy.pm 2021-01-20 23:04:44.000000000 +0000 @@ -2,7 +2,7 @@ use Carp (); -our $VERSION = '1.50'; +our $VERSION = '1.52'; $VERSION =~ tr/_//d; # Carp::Heavy was merged into Carp in version 1.12. Any mismatched versions diff -Nru perl-5.32.1/dist/Carp/lib/Carp.pm perl-5.34.0/dist/Carp/lib/Carp.pm --- perl-5.32.1/dist/Carp/lib/Carp.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Carp/lib/Carp.pm 2021-01-20 23:04:44.000000000 +0000 @@ -211,7 +211,7 @@ } -our $VERSION = '1.50'; +our $VERSION = '1.52'; $VERSION =~ tr/_//d; our $MaxEvalLen = 0; @@ -284,7 +284,7 @@ my $cgc = _cgc(); # Icky backwards compatibility wrapper. :-( - local @CARP_NOT = $cgc ? $cgc->() : caller(); + local @CARP_NOT = scalar( $cgc ? $cgc->() : caller() ); shortmess_heavy(@_); } @@ -944,10 +944,10 @@ Plain scalars and objects that implement C will not go through this formatter. Calling C from within this function is not supported. -local $Carp::RefArgFormatter = sub { - require Data::Dumper; - Data::Dumper::Dump($_[0]); # not necessarily safe -}; + local $Carp::RefArgFormatter = sub { + require Data::Dumper; + Data::Dumper->Dump($_[0]); # not necessarily safe + }; =head2 @CARP_NOT diff -Nru perl-5.32.1/dist/Carp/t/broken_can.t perl-5.34.0/dist/Carp/t/broken_can.t --- perl-5.32.1/dist/Carp/t/broken_can.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Carp/t/broken_can.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,3 +1,6 @@ +use strict; +use warnings; + use Test::More tests => 1; # [perl #132910] @@ -10,6 +13,6 @@ use Carp; eval { - sub { confess-sins }->(bless[], Foo); + sub { confess-sins }->(bless[], 'Foo'); }; like $@, qr/^-sins at /; diff -Nru perl-5.32.1/dist/Carp/t/broken_univ_can.t perl-5.34.0/dist/Carp/t/broken_univ_can.t --- perl-5.32.1/dist/Carp/t/broken_univ_can.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Carp/t/broken_univ_can.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,15 +1,21 @@ +use strict; +use warnings; + # [perl #132910] # This mock-up breaks Test::More. Don’t use Test::More. -sub UNIVERSAL::can { die; } +{ + no warnings 'redefine'; + sub UNIVERSAL::can { die; } +} # Carp depends on this to detect the override: -BEGIN { $UNIVERSAL::can::VERSION = 0xbaff1ed_bee; } +BEGIN { no warnings 'portable'; $UNIVERSAL::can::VERSION = 0xbaff1ed_bee; } use Carp; eval { - sub { confess-sins }->(bless[], Foo); + sub { confess-sins }->(bless[], 'Foo'); }; print "1..1\n"; if ($@ !~ qr/^-sins at /) { diff -Nru perl-5.32.1/dist/Carp/t/Carp_overloadless.t perl-5.34.0/dist/Carp/t/Carp_overloadless.t --- perl-5.32.1/dist/Carp/t/Carp_overloadless.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Carp/t/Carp_overloadless.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,12 +1,14 @@ +use strict; use warnings; -#no warnings 'once'; + use Test::More tests => 1; use Carp; # test that enabling overload without loading overload.pm does not trigger infinite recursion -my $p = "OverloadedInXS"; +no strict 'refs'; +my $p = "OverloadedInXS"; *{$p."::(("} = sub{}; *{$p.q!::(""!} = sub { Carp::cluck "" }; sub { Carp::longmess("longmess:") }->(bless {}, $p); diff -Nru perl-5.32.1/dist/Carp/t/Carp.t perl-5.34.0/dist/Carp/t/Carp.t --- perl-5.32.1/dist/Carp/t/Carp.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Carp/t/Carp.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,6 @@ +use strict; use warnings; -no warnings "once"; + use Config; use IPC::Open3 1.0103 qw(open3); @@ -353,6 +354,7 @@ print "# required B\n"; } my $accum = ''; + no warnings 'once'; local *CORE::GLOBAL::caller = sub { local *__ANON__ = "fakecaller"; my @c = CORE::caller(@_); @@ -480,7 +482,7 @@ ); package Foo::No::Autovivify; - $CARP_NOT = 1; + our $CARP_NOT = 1; eval { Carp::croak(1) }; ::ok( !defined *{$Foo::No::Autovivify::{CARP_NOT}}{ARRAY}, diff -Nru perl-5.32.1/dist/Carp/t/vivify_stash.t perl-5.34.0/dist/Carp/t/vivify_stash.t --- perl-5.32.1/dist/Carp/t/vivify_stash.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Carp/t/vivify_stash.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,3 +1,6 @@ +use strict; +use warnings; + BEGIN { print "1..5\n"; } our $has_utf8; BEGIN { $has_utf8 = exists($::{"utf8::"}); } @@ -18,7 +21,8 @@ print $@ eq '' ? "ok 4 # longmess check1\n" : "not ok 4 # longmess check1\n# $@"; # overload:: glob without hash -undef *{"overload::"}; +# Clear overload quoted so it happens to the runtime stash. +{ no strict 'refs'; undef *{"overload::"} } eval { sub { Carp::longmess() }->(\1) }; print $@ eq '' ? "ok 5 # longmess check2\n" : "not ok 5 # longmess check2\n# $@"; diff -Nru perl-5.32.1/dist/Data-Dumper/Changes perl-5.34.0/dist/Data-Dumper/Changes --- perl-5.32.1/dist/Data-Dumper/Changes 2020-12-18 09:58:30.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/Changes 2021-05-15 08:16:04.000000000 +0000 @@ -6,11 +6,35 @@ =over 8 -=item 2.173 +=item 2.179 (May 13 2021) + +Revert the changes of 2.177 for the v5.34.0 release to avoid a regression. + +=item 2.178 (Apr 7 2021) + +Correct documentation of indent Style 2. + +=item 2.177 (Mar 3 2021) + +Make Data::Dumper mark regex output as UTF-8 if needed. (GH #18614) + +=item 2.176 (Sep 30 2020) + +Make Data::Dumper strict and warnings compliant. + +=item 2.175 (Aug 13 2020) + +Avoid some leaks if we call get magic and that throws an exception. + +=item 2.174 (Apr 3 2019) + +Avoid leaking if we croak due to excessive recursion. + +=item 2.173 (Nov 10 2018) perl #133624: Reinstate support for 5.8.8 and older. -=item 2.172 +=item 2.172 (Sep 19 2018) Prepare recent changes for CPAN release diff -Nru perl-5.32.1/dist/Data-Dumper/Dumper.pm perl-5.34.0/dist/Data-Dumper/Dumper.pm --- perl-5.32.1/dist/Data-Dumper/Dumper.pm 2020-12-26 15:06:10.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/Dumper.pm 2021-05-15 08:16:04.000000000 +0000 @@ -9,9 +9,8 @@ package Data::Dumper; -BEGIN { - $VERSION = '2.174_01'; # Don't forget to set version and release -} # date in POD below! +use strict; +use warnings; #$| = 1; @@ -22,7 +21,17 @@ use Carp (); +# Globals people alter. +our ( $Indent, $Trailingcomma, $Purity, $Pad, $Varname, $Useqq, $Terse, $Freezer, + $Toaster, $Deepcopy, $Quotekeys, $Bless, $Maxdepth, $Pair, $Sortkeys, + $Deparse, $Sparseseen, $Maxrecurse, $Useperl ); + +our ( @ISA, @EXPORT, @EXPORT_OK, $VERSION ); + BEGIN { + $VERSION = '2.179'; # Don't forget to set version and release + # date in POD below! + @ISA = qw(Exporter); @EXPORT = qw(Dumper); @EXPORT_OK = qw(DumperX); @@ -237,6 +246,7 @@ # dump the refs in the current dumper object. # expects same args as new() if called via package name. # +our @post; sub Dumpperl { my($s) = shift; my(@out, $val, $name); @@ -485,7 +495,7 @@ if ($s->{deparse}) { require B::Deparse; my $sub = 'sub ' . (B::Deparse->new)->coderef2text($val); - $pad = $s->{sep} . $s->{pad} . $s->{apad} . $s->{xpad} x ($s->{level} - 1); + my $pad = $s->{sep} . $s->{pad} . $s->{apad} . $s->{xpad} x ($s->{level} - 1); $sub =~ s/\n/$pad/gs; $out .= $sub; } @@ -1029,15 +1039,14 @@ $Data::Dumper::Indent I I<$OBJ>->Indent(I<[NEWVAL]>) Controls the style of indentation. It can be set to 0, 1, 2 or 3. Style 0 -spews output without any newlines, indentation, or spaces between list -items. It is the most compact format possible that can still be called -valid perl. Style 1 outputs a readable form with newlines but no fancy -indentation (each level in the structure is simply indented by a fixed -amount of whitespace). Style 2 (the default) outputs a very readable form -which takes into account the length of hash keys (so the hash value lines -up). Style 3 is like style 2, but also annotates the elements of arrays -with their index (but the comment is on its own line, so array output -consumes twice the number of lines). Style 2 is the default. +spews output without any newlines, indentation, or spaces between list items. +It is the most compact format possible that can still be called valid perl. +Style 1 outputs a readable form with newlines but no fancy indentation (each +level in the structure is simply indented by a fixed amount of whitespace). +Style 2 (the default) outputs a very readable form which lines up the hash +keys. Style 3 is like style 2, but also annotates the elements of arrays with +their index (but the comment is on its own line, so array output consumes +twice the number of lines). Style 2 is the default. =item * @@ -1467,7 +1476,7 @@ =head1 VERSION -Version 2.174_01 +Version 2.179 =head1 SEE ALSO diff -Nru perl-5.32.1/dist/Data-Dumper/Dumper.xs perl-5.34.0/dist/Data-Dumper/Dumper.xs --- perl-5.32.1/dist/Data-Dumper/Dumper.xs 2020-12-26 14:51:02.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/Dumper.xs 2021-05-15 08:16:04.000000000 +0000 @@ -8,7 +8,7 @@ # include "ppport.h" #endif -#if PERL_VERSION < 8 +#if PERL_VERSION_LT(5,8,0) # define DD_USE_OLD_ID_FORMAT #endif @@ -109,7 +109,7 @@ * length parameter. This wrongly allowed reading beyond the end of buffer * given malformed input */ -#if PERL_VERSION <= 6 /* Perl 5.6 and earlier */ +#if PERL_VERSION_LE(5,6,'*') /* Perl 5.6 and earlier */ UV Perl_utf8_to_uvchr_buf(pTHX_ U8 *s, U8 *send, STRLEN *retlen) @@ -125,10 +125,10 @@ # define utf8_to_uvchr_buf(a,b,c) Perl_utf8_to_uvchr_buf(aTHX_ a,b,c) # endif -#endif /* PERL_VERSION <= 6 */ +#endif /* PERL_VERSION_LE(5,6,'*') */ /* Perl 5.7 through part of 5.15 */ -#if PERL_VERSION > 6 && PERL_VERSION <= 15 && ! defined(utf8_to_uvchr_buf) +#if PERL_VERSION_GE(5,7,0) && PERL_VERSION_LE(5,15,'*') && ! defined(utf8_to_uvchr_buf) UV Perl_utf8_to_uvchr_buf(pTHX_ U8 *s, U8 *send, STRLEN *retlen) @@ -146,12 +146,12 @@ # define utf8_to_uvchr_buf(a,b,c) Perl_utf8_to_uvchr_buf(aTHX_ a,b,c) # endif -#endif /* PERL_VERSION > 6 && <= 15 */ +#endif /* Perl 5.7 through part of 5.15 */ /* Changes in 5.7 series mean that now IOK is only set if scalar is precisely integer but in 5.6 and earlier we need to do a more complex test */ -#if PERL_VERSION <= 6 +#if PERL_VERSION_LT(5,7,0) #define DD_is_integer(sv) (SvIOK(sv) && (SvIsUV(val) ? SvUV(sv) == SvNV(sv) : SvIV(sv) == SvNV(sv))) #else #define DD_is_integer(sv) SvIOK(sv) @@ -429,7 +429,7 @@ * first byte */ increment = (k == 0 && *s != '\0') ? 1 : UTF8SKIP(s); -#if PERL_VERSION < 10 +#if PERL_VERSION_LT(5,10,0) sprintf(r, "\\x{%" UVxf "}", k); r += strlen(r); /* my_sprintf is not supported by ppport.h */ @@ -565,13 +565,13 @@ * the stack moving underneath anything that directly or indirectly calls * Perl_load_module()". If we're in an older Perl, we can't rely on that * stack, and must create a fresh sacrificial stack of our own. */ -#if PERL_VERSION < 20 +#if PERL_VERSION_LT(5,20,0) PUSHSTACKi(PERLSI_REQUIRE); #endif load_module(PERL_LOADMOD_NOIMPORT, pkg, 0); -#if PERL_VERSION < 20 +#if PERL_VERSION_LT(5,20,0) POPSTACK; SPAGAIN; #endif @@ -610,6 +610,72 @@ return text; } +static void +dump_regexp(pTHX_ SV *retval, SV *val) +{ + STRLEN rlen; + SV *sv_pattern = NULL; + SV *sv_flags = NULL; + const char *rval; + const char *rend; + const char *slash; + CV *re_pattern_cv = get_cv("re::regexp_pattern", 0); + + if (!re_pattern_cv) { + sv_pattern = val; + } + else { + dSP; + I32 count; + ENTER; + SAVETMPS; + PUSHMARK(SP); + XPUSHs(val); + PUTBACK; + count = call_sv((SV*)re_pattern_cv, G_ARRAY); + SPAGAIN; + if (count >= 2) { + sv_flags = POPs; + sv_pattern = POPs; + SvREFCNT_inc(sv_flags); + SvREFCNT_inc(sv_pattern); + } + PUTBACK; + FREETMPS; + LEAVE; + if (sv_pattern) { + sv_2mortal(sv_pattern); + sv_2mortal(sv_flags); + } + } + + assert(sv_pattern); + + rval = SvPV(sv_pattern, rlen); + rend = rval+rlen; + slash = rval; + sv_catpvs(retval, "qr/"); + + for ( ; slash < rend; slash++) { + if (*slash == '\\') { + ++slash; + continue; + } + if (*slash == '/') { + sv_catpvn(retval, rval, slash-rval); + sv_catpvs(retval, "\\/"); + rlen -= slash-rval+1; + rval = slash+1; + } + } + + sv_catpvn(retval, rval, rlen); + sv_catpvs(retval, "/"); + + if (sv_flags) + sv_catsv(retval, sv_flags); +} + /* * This ought to be split into smaller functions. (it is one long function since * it exactly parallels the perl version, which was one long thing for @@ -768,9 +834,9 @@ /* regexps dont have to be blessed into package "Regexp" * they can be blessed into any package. */ -#if PERL_VERSION < 8 +#if PERL_VERSION_LT(5,8,0) if (realpack && *realpack == 'R' && strEQ(realpack, "Regexp")) -#elif PERL_VERSION < 11 +#elif PERL_VERSION_LT(5,11,0) if (realpack && realtype == SVt_PVMG && mg_find(ival, PERL_MAGIC_qr)) #else if (realpack && realtype == SVt_REGEXP) @@ -816,64 +882,11 @@ ipad = sv_x(aTHX_ Nullsv, SvPVX_const(style->xpad), SvCUR(style->xpad), level+1); sv_2mortal(ipad); - if (is_regex) - { - STRLEN rlen; - SV *sv_pattern = NULL; - SV *sv_flags = NULL; - CV *re_pattern_cv; - const char *rval; - const char *rend; - const char *slash; - - if ((re_pattern_cv = get_cv("re::regexp_pattern", 0))) { - dSP; - I32 count; - ENTER; - SAVETMPS; - PUSHMARK(SP); - XPUSHs(val); - PUTBACK; - count = call_sv((SV*)re_pattern_cv, G_ARRAY); - SPAGAIN; - if (count >= 2) { - sv_flags = POPs; - sv_pattern = POPs; - SvREFCNT_inc(sv_flags); - SvREFCNT_inc(sv_pattern); - } - PUTBACK; - FREETMPS; - LEAVE; - if (sv_pattern) { - sv_2mortal(sv_pattern); - sv_2mortal(sv_flags); - } - } - else { - sv_pattern = val; - } - assert(sv_pattern); - rval = SvPV(sv_pattern, rlen); - rend = rval+rlen; - slash = rval; - sv_catpvs(retval, "qr/"); - for (;slash < rend; slash++) { - if (*slash == '\\') { ++slash; continue; } - if (*slash == '/') { - sv_catpvn(retval, rval, slash-rval); - sv_catpvs(retval, "\\/"); - rlen -= slash-rval+1; - rval = slash+1; - } - } - sv_catpvn(retval, rval, rlen); - sv_catpvs(retval, "/"); - if (sv_flags) - sv_catsv(retval, sv_flags); + if (is_regex) { + dump_regexp(aTHX_ retval, val); } else if ( -#if PERL_VERSION < 9 +#if PERL_VERSION_LT(5,9,0) realtype <= SVt_PVBM #else realtype <= SVt_PVMG @@ -956,7 +969,7 @@ ilen = inamelen; sv_setiv(ixsv, ix); -#if PERL_VERSION < 10 +#if PERL_VERSION_LT(5,10,0) (void) sprintf(iname+ilen, "%" IVdf, (IV)ix); ilen = strlen(iname); #else @@ -1029,7 +1042,7 @@ /* If requested, get a sorted/filtered array of hash keys */ if (style->sortkeys) { -#if PERL_VERSION >= 8 +#if PERL_VERSION_GE(5,8,0) if (style->sortkeys == &PL_sv_yes) { keys = newAV(); (void)hv_iterinit((HV*)ival); @@ -1350,7 +1363,7 @@ if(i) ++c, --i; /* just get the name */ if (memBEGINs(c, i, "main::")) { c += 4; -#if PERL_VERSION < 7 +#if PERL_VERSION_LT(5,7,0) if (i == 6 || (i == 7 && c[6] == '\0')) #else if (i == 6) @@ -1427,9 +1440,9 @@ } #ifdef SvVOK else if (SvMAGICAL(val) && (mg = mg_find(val, 'V'))) { -# if !defined(PL_vtbl_vstring) && PERL_VERSION < 17 +# if !defined(PL_vtbl_vstring) && PERL_VERSION_LT(5,17,0) SV * const vecsv = sv_newmortal(); -# if PERL_VERSION < 10 +# if PERL_VERSION_LT(5,10,0) scan_vstring(mg->mg_ptr, vecsv); # else scan_vstring(mg->mg_ptr, mg->mg_ptr + mg->mg_len, vecsv); @@ -1603,7 +1616,8 @@ style.sortkeys = NULL; else if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVCV) style.sortkeys = sv; - else if (PERL_VERSION < 8) + else +#if PERL_VERSION_LT(5,8,0) /* 5.6 doesn't make sortsv() available to XS code, * so we must use this helper instead. Note that we * always allocate this mortal SV, but it will be @@ -1611,9 +1625,10 @@ * while dumping recursively; an older version * allocated it lazily as needed. */ style.sortkeys = sv_2mortal(newSVpvs("Data::Dumper::_sortkeys")); - else +#else /* flag to use sortsv() for sorting hash keys */ style.sortkeys = &PL_sv_yes; +#endif } postav = newAV(); sv_2mortal((SV*)postav); diff -Nru perl-5.32.1/dist/Data-Dumper/t/bless.t perl-5.34.0/dist/Data-Dumper/t/bless.t --- perl-5.32.1/dist/Data-Dumper/t/bless.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/bless.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ #!perl +use strict; +use warnings; + use Test::More 0.60; # Test::More 0.60 required because: @@ -30,6 +33,7 @@ PERL is($dt, $o, "package name in bless is escaped if needed"); +no strict 'vars'; is_deeply(scalar eval($dt), $t, "eval reverts dump"); } @@ -41,6 +45,7 @@ PERL is($dt, $o, "package name in bless is escaped if needed"); +no strict 'vars'; is_deeply(scalar eval($dt), $t, "eval reverts dump"); } SKIP: { diff -Nru perl-5.32.1/dist/Data-Dumper/t/bless_var_method.t perl-5.34.0/dist/Data-Dumper/t/bless_var_method.t --- perl-5.32.1/dist/Data-Dumper/t/bless_var_method.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/bless_var_method.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,18 +1,8 @@ #!./perl -w # t/bless.t - Test Bless() -BEGIN { - if ($ENV{PERL_CORE}){ - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } - } -} - use strict; +use warnings; use Data::Dumper; use Test::More tests => 8; diff -Nru perl-5.32.1/dist/Data-Dumper/t/bugs.t perl-5.34.0/dist/Data-Dumper/t/bugs.t --- perl-5.32.1/dist/Data-Dumper/t/bugs.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/bugs.t 2020-10-24 18:43:34.000000000 +0000 @@ -2,16 +2,9 @@ # # regression tests for old bugs that do not fit other categories -BEGIN { - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } -} - use strict; +use warnings; + use Test::More tests => 24; use Data::Dumper; diff -Nru perl-5.32.1/dist/Data-Dumper/t/deparse.t perl-5.34.0/dist/Data-Dumper/t/deparse.t --- perl-5.32.1/dist/Data-Dumper/t/deparse.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/deparse.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,18 +1,8 @@ #!./perl -w # t/deparse.t - Test Deparse() -BEGIN { - if ($ENV{PERL_CORE}){ - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } - } -} - use strict; +use warnings; use Data::Dumper; use Test::More tests => 16; diff -Nru perl-5.32.1/dist/Data-Dumper/t/dumper.t perl-5.34.0/dist/Data-Dumper/t/dumper.t --- perl-5.32.1/dist/Data-Dumper/t/dumper.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/dumper.t 2021-05-15 08:16:04.000000000 +0000 @@ -3,26 +3,28 @@ # testsuite for Data::Dumper # -BEGIN { - require Config; import Config; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } -} - -# Since Perl 5.8.1 because otherwise hash ordering is really random. -local $Data::Dumper::Sortkeys = 1; +use strict; +use warnings; use Data::Dumper; use Config; +# Since Perl 5.8.1 because otherwise hash ordering is really random. +$Data::Dumper::Sortkeys = 1; $Data::Dumper::Pad = "#"; + my $TMAX; my $XS; my $TNUM = 0; my $WANT = ''; +our ( @a, $c, $d, $foo, @foo, %foo, @globs, $v, $ping, %ping ); +our ( @dogs, %kennel, $mutts ); + +our ( @numbers, @strings ); +our ( @numbers_s, @numbers_i, @numbers_is, @numbers_n, @numbers_ns, @numbers_ni, @numbers_nis ); +our ( @strings_s, @strings_i, @strings_is, @strings_n, @strings_ns, @strings_ni, @strings_nis ); + # Perl 5.16 was the first version that correctly handled Unicode in typeglob # names. Tests for how globs are dumped must revise their expectations # downwards when run on earlier Perls. @@ -96,23 +98,37 @@ sub TEST { my $string = shift; my $name = shift; - my $t = eval $string; + my $t; + { + no strict; + $t = eval $string; + } + $t = '' unless defined $t; ++$TNUM; $t =~ s/([A-Z]+)\(0x[0-9a-f]+\)/$1(0xdeadbeef)/g if ($WANT =~ /deadbeef/); $name = $name ? " - $name" : ''; - print( ($t eq $WANT and not $@) ? "ok $TNUM$name\n" - : "not ok $TNUM$name\n--Expected--\n$WANT\n--Got--\n$@$t\n"); + my $ok = ($t eq $WANT and not $@); + print( $ok ? "ok $TNUM$name\n" + : "not ok $TNUM X$name\n--Expected--\n$WANT\n--Got--\n$@$t\n"); ++$TNUM; - eval "$t"; - print $@ ? "not ok $TNUM\n# \$@ says: $@\n" : "ok $TNUM - no eval error\n"; + { + no strict; + eval "$t"; + } + print $@ ? "not ok $TNUM YY\n# \$@ says: $@\n" : "ok $TNUM - no eval error\n"; - $t = eval $string; + { + no strict; + $t = eval $string; + } + $t = '' unless defined $t; ++$TNUM; $t =~ s/([A-Z]+)\(0x[0-9a-f]+\)/$1(0xdeadbeef)/g if ($WANT =~ /deadbeef/); - print( ($t eq $WANT and not $@) ? "ok $TNUM - works a 2nd time after intervening eval\n" + $ok = ($t eq $WANT and not $@); + print( $ok ? "ok $TNUM - works a 2nd time after intervening eval\n" : "not ok $TNUM - re-evaled version \n--Expected--\n$WANT\n--Got--\n$@$t\n"); } @@ -123,7 +139,7 @@ ++$TNUM; print "ok $TNUM # skip $reason\n"; } -$TMAX = 468; +$TMAX = 474; # Force Data::Dumper::Dump to use perl. We test Dumpxs explicitly by calling # it direct. Out here it lets us knobble the next if to test that the perl @@ -145,10 +161,10 @@ ############# ############# -@c = ('c'); +my @c = ('c'); $c = \@c; -$b = {}; -$a = [1, $b, $c]; +$b = {}; # FIXME - use another variable name +$a = [1, $b, $c]; # FIXME - use another variable name $b->{a} = $a; $b->{b} = $a->[1]; $b->{c} = $a->[2]; @@ -284,7 +300,6 @@ 'Indent: Seen: Dumpxs()'); } - ############# ## $WANT = <<'EOT'; @@ -383,8 +398,6 @@ TEST (q(Data::Dumper::DumperX($foo)), 'Useqq: DumperX') if $XS; } - - ############# ############# @@ -872,12 +885,12 @@ } { - $f = "pearl"; - $e = [ $f ]; + my $f = "pearl"; + my $e = [ $f ]; $d = { 'e' => $e }; $c = [ $d ]; - $b = { 'c' => $c }; - $a = { 'b' => $b }; + $b = { 'c' => $c }; # FIXME use different variable name + $a = { 'b' => $b }; # FIXME use different variable name ############# ## @@ -973,8 +986,8 @@ } { - $i = 0; - $a = { map { ("$_$_$_", ++$i) } 'I'..'Q' }; + my $i = 0; + $a = { map { ("$_$_$_", ++$i) } 'I'..'Q' }; # FIXME use different variable name ############# ## @@ -1000,7 +1013,7 @@ } { - $i = 5; + my $i = 5; $c = { map { (++$i, "$_$_$_") } 'I'..'Q' }; local $Data::Dumper::Sortkeys = \&sort199; sub sort199 { @@ -1030,7 +1043,7 @@ } { - $i = 5; + my $i = 5; $c = { map { (++$i, "$_$_$_") } 'I'..'Q' }; $d = { reverse %$c }; local $Data::Dumper::Sortkeys = \&sort205; @@ -1087,6 +1100,7 @@ $WANT = <<'EOT'; #$VAR1 = { # foo => sub { +# use warnings; # print 'foo'; # } # }; @@ -1135,7 +1149,7 @@ ); # The perl code always does things the same way for numbers. - $WANT_PL_N = <<'EOT'; + my $WANT_PL_N = <<'EOT'; #$VAR1 = 0; #$VAR2 = 1; #$VAR3 = -2; @@ -1157,7 +1171,7 @@ EOT # The perl code knows that 0 and -2 stringify exactly back to the strings, # so it dumps them as numbers, not strings. - $WANT_PL_S = <<'EOT'; + my $WANT_PL_S = <<'EOT'; #$VAR1 = 0; #$VAR2 = '+1'; #$VAR3 = -2; @@ -1183,7 +1197,7 @@ # (which makes IVs where possible) so values the tokeniser thought were # floating point are stored as NVs. The XS code outputs these as strings, # but as it has converted them from NVs, leading + signs will not be there. - $WANT_XS_N = <<'EOT'; + my $WANT_XS_N = <<'EOT'; #$VAR1 = 0; #$VAR2 = 1; #$VAR3 = -2; @@ -1206,7 +1220,7 @@ # These are the strings as seen by the tokeniser. The XS code will output # these for all cases except where the scalar has been used in integer context - $WANT_XS_S = <<'EOT'; + my $WANT_XS_S = <<'EOT'; #$VAR1 = '0'; #$VAR2 = '+1'; #$VAR3 = '-2'; @@ -1231,7 +1245,7 @@ # These will differ from WANT_XS_N because now IV flags will be set on all # values that were actually integer, and the XS code will then output these # as numbers not strings. - $WANT_XS_I = <<'EOT'; + my $WANT_XS_I = <<'EOT'; #$VAR1 = 0; #$VAR2 = 1; #$VAR3 = -2; @@ -1694,6 +1708,32 @@ } ############# { + # [github #18614 - handling of Unicode characters in regexes] + if ($] lt '5.010') { + SKIP_TEST "Incomplete support for UTF-8 in old perls"; + SKIP_TEST "Incomplete support for UTF-8 in old perls"; + last; + } +$WANT = <<"EOW"; +#\$VAR1 = [ +# "\\x{41f}", +# qr/\x{8b80}/, +# qr/\x{41f}/ +#]; +EOW + $WANT =~ s{/(,?)$}{/u$1}mg if $] gt '5.014'; + TEST qq(Data::Dumper->Dump([ [qq/\x{41f}/, qr/\x{8b80}/, qr/\x{41f}/] ])), + "string with Unicode + regexp with Unicode"; + + SKIP_TEST "skipped, pending fix for github #18764"; + last; + + TEST qq(Data::Dumper->Dumpxs([ [qq/\x{41f}/, qr/\x{8b80}/, qr/\x{41f}/] ])), + "string with Unicode + regexp with Unicode, XS" + if $XS; +} +############# +{ # [perl #82948] # re::regexp_pattern was moved to universal.c in v5.10.0-252-g192c1e2 # and apparently backported to maint-5.10 @@ -1756,8 +1796,12 @@ TEST (qq(Data::Dumper::DumperX("\n")), '\n alone') if $XS; } ############# -our @globs = map { $_, \$_ } map { *$_ } map { $_, "s::$_" } - "foo", "\1bar", "L\x{e9}on", "m\x{100}cron", "snow\x{2603}"; +{ + no strict 'refs'; + @globs = map { $_, \$_ } map { *$_ } map { $_, "s::$_" } + "foo", "\1bar", "L\x{e9}on", "m\x{100}cron", "snow\x{2603}"; +} + $WANT = change_glob_expectation(<<'EOT'); #$globs = [ # *::foo, @@ -1813,9 +1857,12 @@ EOT { *ppp = { a => 1 }; - *{"a/b"} = { b => 3 }; - *{"a\x{2603}b"} = { c => 5 }; - our $v = { a => \*ppp, b => \*{"a/b"}, c => \*{"a\x{2603}b"} }; + { + no strict 'refs'; + *{"a/b"} = { b => 3 }; + *{"a\x{2603}b"} = { c => 5 }; + $v = { a => \*ppp, b => \*{"a/b"}, c => \*{"a\x{2603}b"} }; + } local $Data::Dumper::Purity = 1; TEST (q(Data::Dumper->Dump([$v], ["v"])), 'glob purity: Dump()'); TEST (q(Data::Dumper->Dumpxs([$v], ["v"])), 'glob purity: Dumpxs()') if $XS; diff -Nru perl-5.32.1/dist/Data-Dumper/t/dumpperl.t perl-5.34.0/dist/Data-Dumper/t/dumpperl.t --- perl-5.32.1/dist/Data-Dumper/t/dumpperl.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/dumpperl.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,17 +1,9 @@ #!./perl -w # t/dumpperl.t - test all branches of, and modes of triggering, Dumpperl() -BEGIN { - if ($ENV{PERL_CORE}){ - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } - } -} use strict; +use warnings; + use Carp; use Data::Dumper; use Test::More tests => 31; diff -Nru perl-5.32.1/dist/Data-Dumper/t/freezer.t perl-5.34.0/dist/Data-Dumper/t/freezer.t --- perl-5.32.1/dist/Data-Dumper/t/freezer.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/freezer.t 2020-10-24 18:43:34.000000000 +0000 @@ -3,16 +3,9 @@ # test a few problems with the Freezer option, not a complete Freezer # test suite yet -BEGIN { - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } -} - use strict; +use warnings; + use Test::More tests => 8; use Data::Dumper; use lib qw( ./t/lib ); diff -Nru perl-5.32.1/dist/Data-Dumper/t/freezer_useperl.t perl-5.34.0/dist/Data-Dumper/t/freezer_useperl.t --- perl-5.32.1/dist/Data-Dumper/t/freezer_useperl.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/freezer_useperl.t 2020-10-24 18:43:34.000000000 +0000 @@ -3,16 +3,9 @@ # test a few problems with the Freezer option, not a complete Freezer # test suite yet -BEGIN { - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } -} - use strict; +use warnings; + use Test::More tests => 7; use Data::Dumper; use lib qw( ./t/lib ); diff -Nru perl-5.32.1/dist/Data-Dumper/t/huge.t perl-5.34.0/dist/Data-Dumper/t/huge.t --- perl-5.32.1/dist/Data-Dumper/t/huge.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/huge.t 2020-10-24 18:43:34.000000000 +0000 @@ -13,8 +13,6 @@ use Data::Dumper; BEGIN { - plan skip_all => 'Data::Dumper was not built' - if $Config{extensions} !~ m{\b Data/Dumper \b}x; plan skip_all => 'Need 64-bit pointers for this test' if $Config{ptrsize} < 8; plan skip_all => 'Need ~10 GiB of core for this test' diff -Nru perl-5.32.1/dist/Data-Dumper/t/indent.t perl-5.34.0/dist/Data-Dumper/t/indent.t --- perl-5.32.1/dist/Data-Dumper/t/indent.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/indent.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,17 +1,8 @@ #!./perl -w # t/indent.t - Test Indent() -BEGIN { - if ($ENV{PERL_CORE}){ - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } - } -} use strict; +use warnings; use Data::Dumper; use Test::More tests => 9; diff -Nru perl-5.32.1/dist/Data-Dumper/t/misc.t perl-5.34.0/dist/Data-Dumper/t/misc.t --- perl-5.32.1/dist/Data-Dumper/t/misc.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/misc.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,18 +1,8 @@ #!./perl -w # t/misc.t - Test various functionality -BEGIN { - if ($ENV{PERL_CORE}){ - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } - } -} - use strict; +use warnings; use Data::Dumper; use Test::More tests => 18; diff -Nru perl-5.32.1/dist/Data-Dumper/t/names.t perl-5.34.0/dist/Data-Dumper/t/names.t --- perl-5.32.1/dist/Data-Dumper/t/names.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/names.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,17 +1,8 @@ #!./perl -w -BEGIN { - if ($ENV{PERL_CORE}){ - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } - } -} - use strict; +use warnings; + use Carp; use Data::Dumper; use Test::More tests => 15; diff -Nru perl-5.32.1/dist/Data-Dumper/t/overload.t perl-5.34.0/dist/Data-Dumper/t/overload.t --- perl-5.32.1/dist/Data-Dumper/t/overload.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/overload.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,17 +1,8 @@ #!./perl -w -BEGIN { - if ($ENV{PERL_CORE}){ - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } - } -} - use strict; +use warnings; + use Data::Dumper; use Test::More tests => 4; diff -Nru perl-5.32.1/dist/Data-Dumper/t/pair.t perl-5.34.0/dist/Data-Dumper/t/pair.t --- perl-5.32.1/dist/Data-Dumper/t/pair.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/pair.t 2020-10-24 18:43:34.000000000 +0000 @@ -3,18 +3,9 @@ # test for $Data::Dumper::Pair AKA Data::Dumper->new([ ... ])->Pair('...') # -BEGIN { - if ($ENV{PERL_CORE}){ - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } - } -} - use strict; +use warnings; + our ($want_colon, $want_comma); use Test::More tests => 9; diff -Nru perl-5.32.1/dist/Data-Dumper/t/perl-74170.t perl-5.34.0/dist/Data-Dumper/t/perl-74170.t --- perl-5.32.1/dist/Data-Dumper/t/perl-74170.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/perl-74170.t 2020-10-24 18:43:34.000000000 +0000 @@ -3,17 +3,9 @@ # Regression test for [perl #74170] (missing SPAGAIN after DD_Dump(...)): # Since it’s so large, it gets its own file. -BEGIN { - if ($ENV{PERL_CORE}){ - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } - } -} use strict; +use warnings; + use Test::More tests => 1; use Data::Dumper; diff -Nru perl-5.32.1/dist/Data-Dumper/t/purity_deepcopy_maxdepth.t perl-5.34.0/dist/Data-Dumper/t/purity_deepcopy_maxdepth.t --- perl-5.32.1/dist/Data-Dumper/t/purity_deepcopy_maxdepth.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/purity_deepcopy_maxdepth.t 2020-10-24 18:43:34.000000000 +0000 @@ -2,18 +2,8 @@ # t/purity_deepcopy_maxdepth.t - Test Purity(), Deepcopy(), # Maxdepth() and recursive structures -BEGIN { - if ($ENV{PERL_CORE}){ - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } - } -} - use strict; +use warnings; use Data::Dumper; use Test::More tests => 22; diff -Nru perl-5.32.1/dist/Data-Dumper/t/qr.t perl-5.34.0/dist/Data-Dumper/t/qr.t --- perl-5.32.1/dist/Data-Dumper/t/qr.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/qr.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,13 +1,7 @@ #!perl -X -BEGIN { - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } -} +use strict; +use warnings; use Test::More tests => 2; use Data::Dumper; @@ -16,9 +10,15 @@ my $q = q| \/ |; use Data::Dumper; my $qr = qr{$q}; - eval Dumper $qr; + { + no strict 'vars'; + eval Dumper $qr; + } ok(!$@, "Dumping $qr with XS") or diag $@, Dumper $qr; local $Data::Dumper::Useperl = 1; - eval Dumper $qr; + { + no strict 'vars'; + eval Dumper $qr; + } ok(!$@, "Dumping $qr with PP") or diag $@, Dumper $qr; } diff -Nru perl-5.32.1/dist/Data-Dumper/t/quotekeys.t perl-5.34.0/dist/Data-Dumper/t/quotekeys.t --- perl-5.32.1/dist/Data-Dumper/t/quotekeys.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/quotekeys.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,18 +1,8 @@ #!./perl -w # t/quotekeys.t - Test Quotekeys() -BEGIN { - if ($ENV{PERL_CORE}){ - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } - } -} - use strict; +use warnings; use Data::Dumper; use Test::More tests => 18; diff -Nru perl-5.32.1/dist/Data-Dumper/t/recurse.t perl-5.34.0/dist/Data-Dumper/t/recurse.t --- perl-5.32.1/dist/Data-Dumper/t/recurse.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/recurse.t 2020-10-24 18:43:34.000000000 +0000 @@ -3,6 +3,8 @@ # Test the Maxrecurse option use strict; +use warnings; + use Test::More tests => 32; use Data::Dumper; diff -Nru perl-5.32.1/dist/Data-Dumper/t/seen.t perl-5.34.0/dist/Data-Dumper/t/seen.t --- perl-5.32.1/dist/Data-Dumper/t/seen.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/seen.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,18 +1,8 @@ #!./perl -w # t/seen.t - Test Seen() -BEGIN { - if ($ENV{PERL_CORE}){ - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } - } -} - use strict; +use warnings; use Data::Dumper; use Test::More tests => 10; diff -Nru perl-5.32.1/dist/Data-Dumper/t/sortkeys.t perl-5.34.0/dist/Data-Dumper/t/sortkeys.t --- perl-5.32.1/dist/Data-Dumper/t/sortkeys.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/sortkeys.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,18 +1,8 @@ #!./perl -w # t/sortkeys.t - Test Sortkeys() -BEGIN { - if ($ENV{PERL_CORE}){ - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } - } -} - use strict; +use warnings; use Data::Dumper; use Test::More tests => 26; diff -Nru perl-5.32.1/dist/Data-Dumper/t/sparseseen.t perl-5.34.0/dist/Data-Dumper/t/sparseseen.t --- perl-5.32.1/dist/Data-Dumper/t/sparseseen.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/sparseseen.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,18 +1,8 @@ #!./perl -w # t/sparseseen.t - Test Sparseseen() -BEGIN { - if ($ENV{PERL_CORE}){ - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } - } -} - use strict; +use warnings; use Data::Dumper; use Test::More tests => 8; diff -Nru perl-5.32.1/dist/Data-Dumper/t/terse.t perl-5.34.0/dist/Data-Dumper/t/terse.t --- perl-5.32.1/dist/Data-Dumper/t/terse.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/terse.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,4 +1,5 @@ #!perl + use strict; use warnings; diff -Nru perl-5.32.1/dist/Data-Dumper/t/toaster.t perl-5.34.0/dist/Data-Dumper/t/toaster.t --- perl-5.32.1/dist/Data-Dumper/t/toaster.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/toaster.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,18 +1,8 @@ #!./perl -w # t/toaster.t - Test Toaster() -BEGIN { - if ($ENV{PERL_CORE}){ - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } - } -} - use strict; +use warnings; use Data::Dumper; use Test::More tests => 8; diff -Nru perl-5.32.1/dist/Data-Dumper/t/trailing_comma.t perl-5.34.0/dist/Data-Dumper/t/trailing_comma.t --- perl-5.32.1/dist/Data-Dumper/t/trailing_comma.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/trailing_comma.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,18 +1,8 @@ #!./perl -w # t/trailing_comma.t - Test TrailingComma() -BEGIN { - if ($ENV{PERL_CORE}){ - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } - } -} - use strict; +use warnings; use Data::Dumper; use Test::More; diff -Nru perl-5.32.1/dist/Data-Dumper/t/values.t perl-5.34.0/dist/Data-Dumper/t/values.t --- perl-5.32.1/dist/Data-Dumper/t/values.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Data-Dumper/t/values.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,17 +1,8 @@ #!./perl -w -BEGIN { - if ($ENV{PERL_CORE}){ - require Config; import Config; - no warnings 'once'; - if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { - print "1..0 # Skip: Data::Dumper was not built\n"; - exit 0; - } - } -} - use strict; +use warnings; + use Data::Dumper; use Test::More tests => 4; diff -Nru perl-5.32.1/dist/Devel-PPPort/Changes perl-5.34.0/dist/Devel-PPPort/Changes --- perl-5.32.1/dist/Devel-PPPort/Changes 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/Changes 2020-10-24 18:43:34.000000000 +0000 @@ -1,28 +1,65 @@ Revision history for Devel-PPPort - 3.57 - 2020-01-31 - - * Fix eval_sv for Perl versions prior to 5.6.0 (Pali) - * Fix t/ppphtest.t for Perl versions prior to 5.6.0 (Pali) - * Fix compilation of sv_setsv_flags when GCC extensions are not present (Pali) - * Fix SV_NOSTEAL on 5.7.2 (Karl Williamson) - * Fix multiple unit test issues (Craig A. Berry, Karl Williamson, Pali) - * Avoid generating warnings on early Perls (Karl Williamson) - * Backport memCHRs (Karl Williamson) - * Implement sv_setsv_flags() with SV_NOSTEAL and SV_GMAGIC flags for Perl versions < 5.7.3 (Pali) - * Implement UTF8f format and its UTF8fARG macro (Pali) - - 3.56 - 2019-11-25 - - * mktests.PL: use FindBin for INC setup - * devel/regenerate: Adjust POD line length - * Fix compilation with Visual C++ bugs introduced in 3.55 (Tomasz Konojacki) - * Fix mess.t failures when on VC++ when $0 contains backslashes (Tomasz Konojacki) - * Fix failing builds on 5.20.[1-3] introduced in 3.55 (Karl Williamson) - * Change tests to accept and use Test::More-like functions (Karl Williamson) - - 3.55 - 2019-11-07 +3.62 - 2020-10-16 + * Restore missing PPPort.pm + * Fix metaCPAN indexing + +3.61 - 2020-10-12 + * Fix scanprov + * Define PERL_ARGS_ASSERT_CROAK_XS_USAGE when setting croak_xs_usage + * Backport ck_warner, ck_warner_d, ckWARN_d, ckWARN_2, ckWARN_3, ckWARN_4, ckWARN2_d, ckWARN3_d, ckWARN4_d + * Backport packWARN, packWARN2, packWARN3, packWARN4 + * Backport LC_NUMERIC locale handling + * Backport SvPVx_nolen_const + * Backport MUTABLE_AV, MUTABLE_CV, MUTABLE_GV, MUTABLE_HV, MUTABLE_IO + * Backport vwarner + * Use PERL_USE_GCC_BRACE_GROUPS + * Remove C `register` declaration + * Implement return value for newCONSTSUB() + +3.60 - 2020-08-11 + * Restore PERL_BCDVERSION helper which is used on CPAN + * A few API elements were not properly found, like IVTYPE + +3.59 - 2020-08-10 + * Add PERL_VERSION_* compare macros + * Rename PERL_BCDVERSION to internal name to discourage future use + * Stop versioning generated test files + * Enforce strict & warnings + * Avoid indirect calls + * scanprov: multiple improvements + * Use ivers() in tests + * Update POD documentation and HACKERS file + * Change ppport.h --api-info to not output non-API info unless that is the + only match + * Find more elements to be listed in the --api-info option (and similar) to + ppport.h + +3.58 - 2020-03-09 + * Safer definition of UVCHR_SKIP + * Make sure WIDEST_UTYPE is unsigned + * Avoid Pax Header in tarballs + +3.57 - 2020-01-31 + * Fix eval_sv for Perl versions prior to 5.6.0 (Pali) + * Fix t/ppphtest.t for Perl versions prior to 5.6.0 (Pali) + * Fix compilation of sv_setsv_flags when GCC extensions are not present (Pali) + * Fix SV_NOSTEAL on 5.7.2 (Karl Williamson) + * Fix multiple unit test issues (Craig A. Berry, Karl Williamson, Pali) + * Avoid generating warnings on early Perls (Karl Williamson) + * Backport memCHRs (Karl Williamson) + * Implement sv_setsv_flags() with SV_NOSTEAL and SV_GMAGIC flags for Perl versions < 5.7.3 (Pali) + * Implement UTF8f format and its UTF8fARG macro (Pali) + +3.56 - 2019-11-25 + * mktests.PL: use FindBin for INC setup + * devel/regenerate: Adjust POD line length + * Fix compilation with Visual C++ bugs introduced in 3.55 (Tomasz Konojacki) + * Fix mess.t failures when on VC++ when $0 contains backslashes (Tomasz Konojacki) + * Fix failing builds on 5.20.[1-3] introduced in 3.55 (Karl Williamson) + * Change tests to accept and use Test::More-like functions (Karl Williamson) +3.55 - 2019-11-07 * Fix p5-Text-Xslate on Perl 5.8.5 (Nicolas R) * Fix EBCDIC build problem (Karl Williamson) * Fix isGRAPH_L1() bug (Karl Williamson) @@ -43,8 +80,7 @@ * Backport UTF8_SKIP (Karl Williamson) * Backport UNI to/from NATIVE (Karl Williamson) - 3.54 - 2019-09-27 - +3.54 - 2019-09-27 * Fix Unix-format path in Devel::PPPort's Makefile.PL * Fix utf8_to_uvchr_buf for 5.7.0 * Add hint for utf8_to_uvchr() diff -Nru perl-5.32.1/dist/Devel-PPPort/devel/devtools.pl perl-5.34.0/dist/Devel-PPPort/devel/devtools.pl --- perl-5.32.1/dist/Devel-PPPort/devel/devtools.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/devel/devtools.pl 2020-10-04 22:17:12.000000000 +0000 @@ -120,6 +120,7 @@ local $| = 1; do { print "\a\n$q [y/n] "; + return unless -t; # Fail if no tty input $a = <>; } while ($a !~ /^\s*([yn])\s*$/i); return lc $1 eq 'y'; diff -Nru perl-5.32.1/dist/Devel-PPPort/devel/mkapidoc.pl perl-5.34.0/dist/Devel-PPPort/devel/mkapidoc.pl --- perl-5.32.1/dist/Devel-PPPort/devel/mkapidoc.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/devel/mkapidoc.pl 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,5 @@ +#!/usr/bin/perl + ################################################################################ # # mkapidoc.pl -- generate apidoc.fnc from scanning the Perl source @@ -21,14 +23,17 @@ use warnings; use strict; +use File::Find; my $PERLROOT = $ARGV[0]; -$PERLROOT = '../..' unless $PERLROOT; +unless ($PERLROOT) { + $PERLROOT = '../..'; + print STDERR "$0: perl directory root argument not specified. Assuming '$PERLROOT'\n"; +} die "'$PERLROOT' is invalid, or you haven't successfully run 'make' in it" unless -e "$PERLROOT/warnings.h"; -my $config= "$PERLROOT/config_h.SH"; my %seen; # Find the files in MANIFEST that are core, but not embed.fnc, nor .t's @@ -39,18 +44,54 @@ next if m! ^ embed \. fnc \t !x; next if m! ^ ( cpan | dist | t) / !x; next if m! [^\t]* \.t \t !x; - push @files, $_; + s/\t.*//; + push @files, "$PERLROOT/$_"; +} +close $m; + +# Examine the SEE ALSO section of perlapi which should contain links to all +# the pods with apidoc entries in them. Add them to the MANIFEST list. +my $file; + +sub callback { + return unless $_ eq $file; + return if $_ eq 'config.h'; # We don't examine this one + return if $_ eq 'perlintern.pod'; # We don't examine this one + return if $File::Find::dir =~ / \/ ( cpan | dist | t ) \b /x; + push @files, $File::Find::name; } -# These files are also needed. This might have to be added to in the future. -push @files, qw(pod/perlguts.pod lib/perlxs.pod); +open my $a, '<', "$PERLROOT/pod/perlapi.pod" + or die "Can't open perlapi.pod ($PERLROOT needs to have been built): $!"; +while (<$a>) { + next unless / ^ =head1\ SEE\ ALSO /x; + while (<$a>) { + # The lines look like: + # F, L, L, L, L, + last if / ^ = /x; + my @tags = split /, \s* | \s+ /x; # Allow comma- or just space-separated + foreach my $tag (@tags) { + if ($tag =~ / ^ F< (.*) > $ /x) { + $file = $1; + } + elsif ($tag =~ / ^ L< (.*) > $ /x) { + $file = "$1.pod"; + } + else { + die "Unknown tag '$tag'"; + } -# Find the apidoc entries in all these files + find(\&callback, $PERLROOT); + } + } +} + +# Look through all the files that potentially have apidoc entries my @entries; for (@files) { s/ \t .* //x; - open my $f, '<', "$PERLROOT/$_" or die "Can't open $_: $!"; + open my $f, '<', "$_" or die "Can't open $_: $!"; my $line; while (defined ($line = <$f>)) { @@ -84,33 +125,9 @@ } } -# The entries in config_h.SH are also (documented) macros that are -# accessible to XS code, and ppport.h backports some of them. We -# use only the unconditionally compiled parameterless ones (as -# that"s all that"s backported so far, and we don"t have to know -# the types of the parameters). -open(my $c, "<", $config) or die "$config: $!"; -my $if_depth = 0; # We don"t use the ones within #if statements - # The #ifndef that guards the whole file is not - # noticed by the code below -while (<$c>) { - $if_depth ++ if / ^ \# [[:blank:]]* (ifdef | if\ defined ) /x; - $if_depth -- if $if_depth > 0 && / ^ \# [[:blank:]]* endif /x; - next unless $if_depth <= 0; - - # We are only interested in #defines with no parameters - next unless /^ \# [[:blank:]]* define [[:blank:]]+ - ( [A-Za-z][A-Za-z0-9]* ) - [[:blank:]] - /x; - next if $seen{$1}; # Ignore duplicates - push @entries, "Amnd||$1\n"; - $seen{$1}++; -} -close $c or die "Close failed: $!"; - -open my $out, ">", "parts/apidoc.fnc" - or die "Can't open 'parts/apidoc.fnc' for writing: $!"; +my $outfile = "parts/apidoc.fnc"; +open my $out, ">", $outfile + or die "Can't open '$outfile' for writing: $!"; require "./parts/inc/inctools"; print $out <) { - my $line = $_; - next if $line =~ / ^ [^|]* A /x; # Skip API - chomp $line; - push @non_public_provided, $line - # Look for the name in the third '|' separated field - if grep { $line =~ / ^ [^|]* \| [^|]* \| \s* $_ \s* (?: $ |\| ) /x } - @provided; -} +my $embed_fnc = "$main_dir/parts/embed.fnc"; + +# One of the outputs is a known element provided only by us. +my @out = 'Am|void|sv_magic_portable|NN SV* sv|NULLOK SV* obj|int how|NULLOK const char* name|I32 namlen'; -my @embeds = parse_embed('parts/embed.fnc', $api_fnc); +# First, get the known macros and functions +my @embeds = parse_embed($api_fnc, $embed_fnc); +# Then look for 1) non-API functions that are furnished by us. +# 2) documented non-API macros that are furnished by us +# We want to test for everything furnished by us. The non-API elements +# otherwise wouldn't be. In both these cases, we know the signature of the +# element, so can create a test for it. +foreach my $element (@embeds) { + my $flags = join "", sort { lc $a cmp lc $b or $a cmp $b } + keys %{$element->{'flags'}}; + next if $flags =~ /A/; # Skip public; they'll get tested anyway + my $name = $element->{'name'}; + next unless grep { $name eq $_ } @provided; # Skip unprovided, as that's + # not what this program is for + my $entry = "$flags|$element->{'ret'}|$name"; + if ($flags !~ /n/) { + $entry .= '|'; + $entry .= join '|', map { join ' ', @$_ } $element->{'args'}->@* + } + push @out, $entry; +} + +# Now that we have the things we know the signatures for, we add the +# no-parameter elements, as the signatures for those are trivial. # Look for %include lines in the ppport.h generator my $PPPort = "$main_dir/PPPort_pm.PL"; open F, "<", $PPPort or die "Can't open $PPPort: $!"; +# Now find all the elements furnished by us whose signatures we don't know +# (hence not in embed.fnc nor apidoc.fnc) and have no parameters. my @no_parameters; while () { next unless/^%include (\w+)/; - my $implementation = parse_partspec("$main_dir/parts/inc/$1")->{'implementation'}; - - # Find no-parameter entries using __UNDEFINED__ that aren't in the other. - # We know these are provided. - while ($implementation =~ /^__UNDEFINED__\s+(\w+)\s/mg) { - push @no_parameters, $1 unless grep { $1 eq $_->{'name'} } @embeds; + my @implementation = split /\n/, + parse_partspec("$main_dir/parts/inc/$1")->{'implementation'}; + while (defined (my $line = shift @implementation)) { + #my $type; + my $var; + if ($line =~ /^ \s* __UNDEFINED__ \s+ (\w+) \s /x) { + $var = $1; + } + elsif ($line =~ /^ \s* __NEED_VAR__ \s+ (\w+) \s+ (\w+) /x) { + #$type = $1; # Another mechanism to create a variable + $var = $2; + } + elsif ($line =~ / ^ \# \s* define \s+ ( \w+ ) \s /x) { + $var = $1; + } + + next unless defined $var; + next if $var =~ / ^ D_PPP_ /x; # Skip internal only + next if grep { $1 eq $_->{'name'} } @embeds; # Skip known elements + next if grep { $1 eq $_ } @no_parameters; # Skip if already have it + push @no_parameters, $var; } } -# Repeat, but look for ones that are 'provided' that don't use __UNDEFINED__ -seek F, 0, 0; -while () { - next unless/^%include (\w+)/; - my $implementation = parse_partspec("$main_dir/parts/inc/$1")->{'implementation'}; - - while ($implementation =~ /^#\s*define\s+(\w+)\s/mg) { - next if grep { $1 eq $_ } @no_parameters; - next if grep { $1 eq $_->{'name'} } @embeds; - next unless grep { $1 eq $_ } @provided; - push @no_parameters, $1; - } -} - -my @out = 'Am|void|sv_magic_portable|NN SV* sv|NULLOK SV* obj|int how|NULLOK const char* name|I32 namlen'; -push @out, @non_public_provided; -push @out, map { "Amn|void|$_" } @no_parameters; +push @out, map { "AmnT|void|$_" } @no_parameters; @out = sort sort_api_lines @out; @@ -150,16 +161,18 @@ : :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : -: This file lists all API functions/macros that are provided purely -: by Devel::PPPort, or that are not public. It is in the same format as the -: F that ships with the Perl source code. +: This file lists all functions/macros that are provided by Devel::PPPort that +: would not be tested otherwise; because either they are not public, or they +: exist only in D:P. It is in the same format as the F that ships +: with the Perl source code. : : Since these are used only to provide the argument types, it's ok to have the -: return value be void for some where it's an issues +: return value be void for some where it's a potential issue. EOF print OUT join "\n", @out; print OUT "\n"; +print "$out regenerated\n"; close OUT; diff -Nru perl-5.32.1/dist/Devel-PPPort/devel/regenerate perl-5.34.0/dist/Devel-PPPort/devel/regenerate --- perl-5.32.1/dist/Devel-PPPort/devel/regenerate 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/devel/regenerate 2020-10-04 22:17:12.000000000 +0000 @@ -102,7 +102,7 @@ my @bad = grep { ! exists $hard_ref->{$_} } @unorthodox; if (@bad) { print "The following items need to be manually added to the list in", - " part/inc/ppptools: known_but_hard_to_test_for(): ", + " parts/ppptools.pl: known_but_hard_to_test_for(): ", join ", ", @bad, "\n"; quit_now(); } diff -Nru perl-5.32.1/dist/Devel-PPPort/devel/scanprov perl-5.34.0/dist/Devel-PPPort/devel/scanprov --- perl-5.32.1/dist/Devel-PPPort/devel/scanprov 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/devel/scanprov 2020-10-24 18:43:34.000000000 +0000 @@ -1,22 +1,40 @@ #!/usr/bin/perl -w +$|=1; ################################################################################ # -# scanprov -- scan Perl headers for provided macros, and add known -# exceptions, and functions we weren't able to otherwise find. -# Thus the purpose of this file has been expanded beyond what its -# name says. +# scanprov -- scan Perl headers for macros, and add known exceptions, and +# functions we weren't able to otherwise find. Thus the purpose +# of this file has been expanded beyond what its name says. +# +# Besides the normal options, 'mode=clean' is understood as 'write', but +# first remove any scanprov lines added in previous runs of this. # # The lines added have a code to signify they are added by us: -# M means it is a macro -# X means it is a known exceptional item # F means it is a function in embed.fnc that the normal routines didn't find +# K means it is a macro in config.h, hence is provided, and documented +# M means it is a provided by D:P macro +# X means it is a known exceptional item +# Z means it is an unprovided macro without documentation # # The regeneration routines do not know the prototypes for the macros scanned # for, which is gotten from documentation in the source. (If they were # documented, they would be put in parts/apidoc.fnc, and test cases generated -# for them in mktodo.pl). Therefore these are all undocumented. It would be -# best if people would add document to them in the perl source, and then this -# portion of this function would be minimized. +# for them in mktodo.pl). Therefore these are all undocumented, except for +# things from config.h which are all documented there, and many of which are +# just defined or not defined, and hence can't be tested. Thus looking for +# them here is the most convenient option, which is why it's done here. +# +# The scope of this program has also expanded to look in almost all header +# files for almost all macros that aren't documented nor provided. This +# allows ppport.h --api-info=/foo/ to return when a given element actually +# came into existence, which can be a time saver for developers of the perl +# core. +# +# It would be best if people would add documentation to them in the perl +# source, and then this portion of this function would be minimized. +# +# On Linux nm and other uses by D:P, these are the remaining unused capital +# flags: HJLOQY # ################################################################################ # @@ -46,7 +64,9 @@ GetOptions(\%opt, qw( install=s mode=s blead=s debug=i debug-start=s)) or die; -my $write = $opt{mode} eq 'write'; +my $clean = $opt{mode} eq 'clean'; +my $write = $clean || $opt{mode} eq 'write'; +my $debug = $opt{debug}; # Get the list of known macros. Functions are calculated separately below my %embed = map { $_->{flags}{m} ? ( $_->{name} => 1 ) : () } @@ -63,11 +83,33 @@ my $base_dir = 'parts/base'; my $todo_dir = 'parts/todo'; +# The identifying text placed in every entry by this program +my $id_text = "added by $0"; + if ($write) { - # Get the list of files, which are returned sorted, and so the min version - # is in the 0th element + # Get the list of files my @files = all_files_in_dir($base_dir); + + # If asked to, first strip out the results of previous incarnations of + # this script + if ($clean) { + print "Cleaning previous $0 runs\n"; + foreach my $file (@files) { + open my $fh, "+<", $file or die "$file: $!\n"; + my @lines = <$fh>; + my $orig_count = @lines; + @lines = grep { $_ !~ /$id_text/ } @lines; + next if @lines == $orig_count; # No need to write if unchanged. + truncate $fh, 0; + seek $fh, 0, 0; + print $fh @lines; + close $fh or die "$file: $!\n"; + } + } + + # The file list is returned sorted, and so the min version is in the 0th + # element my $file = $files[0]; my $min_perl = $file; $min_perl =~ s,.*/,,; # The name is the integer of __MIN_PERL__ @@ -76,15 +118,25 @@ # exist all the way back. Add them now to avoid throwing later things # off. print "-- $file --\n"; - open F, ">>$file" or die "$file: $!\n"; + open my $fh, "+<", $file or die "$file: $!\n"; + my @lines = <$fh>; + my $count = @lines; for (qw(RETVAL CALL THIS)) { # These are also in hard_to_test_for(), # so can't be in blead, as they are skipped # in testing, so no real need to check that # they aren't dups. + my $line = format_output_line($_, 'X'); + next if grep { /$line/ } @lines; print "Adding $_ to $file\n"; - print F format_output_line($_, 'X'); + push @lines, $line; + } + if ($count != @lines) { + @lines = sort symbol_order @lines; + truncate $fh, 0; + seek $fh, 0, 0; + print $fh @lines; } - close F; + close $fh; # Now we're going to add the hard to test symbols. The hash has been # manually populated and commited, with the version number ppport supports @@ -116,15 +168,24 @@ foreach my $version (keys %add_by_version) { my $file = "$todo_dir/" . int_parse_version($version); print "-- Adding known exceptions to $file --\n"; - my $need_version_line = ! -e $file; - open F, ">>$file" or die "$file: $!\n"; - print F format_version_line($version) . "\n" if $need_version_line; - foreach my $symbol (sort dictionary_order @{$add_by_version{$version}}) - { - print "adding $symbol\n"; - print F format_output_line($symbol, 'X'); + open my $fh, "+<", $file or die "$file: $!\n"; + my @lines = <$fh>; + my $count = @lines; + push @lines, format_version_line($version) . "\n" unless @lines; + foreach my $symbol (@{$add_by_version{$version}}) { + my $line = format_output_line($symbol, 'X'); + unless (grep { /$line/ } @lines) {; + print "adding $symbol\n"; + push @lines, $line unless grep { /$line/ } @lines; + } + } + if (@lines != $count) { + @lines = sort symbol_order @lines; + truncate $fh, 0; + seek $fh, 0, 0; + print $fh @lines; } - close F; + close $fh; } } @@ -147,8 +208,7 @@ my @functions = parse_embed(qw(parts/embed.fnc)); # We could just gather data for the publicly available ones, but having this -# information available for everything is useful (for those who know where to -# look) +# information available for everything is useful. #@functions = grep { exists $_->{flags}{A} } @functions; # The ones we don't have info on are the ones in embed.fnc that aren't in the @@ -171,12 +231,23 @@ 'F' ); +sub symbol_order # Sort based on first word on line +{ + my $stripped_a = $a =~ s/ ^ \s* //rx; + $stripped_a =~ s/ \s.* //x; + + my $stripped_b = $b =~ s/ ^ \s* //rx; + $stripped_b =~ s/ \s.* //x; + + return dictionary_order($stripped_a, $stripped_b); +} + sub format_output_line { my $sym = shift; my $code = shift; - return sprintf "%-30s # $code added by $0\n", $sym; + return sprintf "%-30s # $code $id_text\n", $sym; } sub find_first_mentions @@ -187,14 +258,18 @@ my $strip_comments = shift; my $code = shift; # Mark entries as having this type + use feature 'state'; + state $first_perl = 1; + $hdrs = [ $hdrs ] unless ref $hdrs; - my @remaining = @$look_for_ref; + my %remaining; + $remaining{$_} = $code for @$look_for_ref; my %v; # We look in descending order of perl versions. Each time through the - # loop @remaining is narrowed. + # loop %remaining is narrowed. for my $p (@$perls_ref) { print "checking perl $p->{version}...\n"; @@ -204,23 +279,87 @@ local @ARGV; push @ARGV, glob "$archlib/CORE/$_" for @$hdrs; + # %sym's keys are every single thing that looks like an identifier + # (beginning with a non-digit \w, followed by \w*) that occurs in any + # header, regardless of where (outside of comments). For macros, it + # can't end in an underscore, nor be like 'AbCd', which are marks for + # internal. my %sym; - # %sym's keys are every single thing that looks like an identifier - # (beginning with a non-digit \w, followed by \w*) that occurs in all - # the headers, regardless of where (outside of comments). local $/ = undef; - while (<>) { # Read in the next file + while (<<>>) { # Read in the whole next file as one string. + + # This would override function definitions with macro ones + next if $code eq 'M' && $ARGV =~ m! / embed\.h $ !x; + + my $is_config_h = $ARGV =~ m! / config\.h $ !x; + + my $contents = $_; + + # Strip initial '/*' in config.h /*#define... lines. This just + # means the item isn't available on the platform this program is + # being run on. + $contents =~ s! ^ /\* \s* (?=\#\s*define\s) !!mx if $is_config_h; # Strip comments, from perl faq if ($strip_comments) { - s#/\*[^*]*\*+([^/*][^*]*\*+)*/|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|.[^/"'\\]*)#defined $2 ? $2 : ""#gse; + $contents =~ s#/\*[^*]*\*+([^/*][^*]*\*+)*/|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|.[^/"'\\]*)#defined $2 ? $2 : ""#gse; } - $sym{$_}++ for /(\b[^\W\d]\w*)/g; + # For macros, we look for #defines + if ($code eq 'M') { + my %defines; + + while ($contents =~ m/ ^ \s* \# \s* define \s+ + + # A symbol not ending in underscore + ( [A-Za-z][_A-Za-z0-9]*[A-Za-z0-9] ) + /mxg) + { + my $this_define = $1; + + # These are internal and not of external interest, so just + # noise if we were to index them + next if $this_define =~ / ^ PERL_ARGS_ASSERT /x; + + # Names like AbCd are internal + next if $this_define =~ /[[:upper:]][[:lower:]][[:upper:]][[:lower:]]/; + + $defines{$this_define}++; + } + $sym{$_}++ for keys %defines; + + # For functions, etc we get all the symbols for the latest + # perl passed in, but for macros, it is just the ones for the + # known documented ones, and we have to find the rest. This + # allows us to keep the logic for that in just one place: + # here. + if ($first_perl) { + + # config.h symbols are documented; the rest aren't, so use + # different flags so downstream processing knows which are + # which. + if ($is_config_h) { + foreach my $define (keys %defines) { + $remaining{$define} = 'K'; + } + } + else { + foreach my $define (keys %defines) { + # Don't override input 'M' symbols. + $remaining{$define} = 'Z' + unless defined $remaining{$define}; + } + } + } + } + else { # Look for potential function names; remember comments + # have been stripped off. + $sym{$_}++ for /(\b[^\W\d]\w*)/g; + } } - # @remaining is narrowed to include only those identifier-like things + # %remaining is narrowed to include only those identifier-like things # that are mentioned in one of the input hdrs in this release. (If it # isn't even mentioned, it won't exist in the release.) For those not # mentioned, a key is added of the identifier-like thing in %v. It is @@ -229,13 +368,20 @@ # the provided element was mentioned there, and now it no longer is. # We take that to mean that to mean that the element became provided # for in n+1. - @remaining = map { $sym{$_} or $v{$p->{todo}}{$_}++; - $sym{$_} ? $_ : () - } @remaining; + foreach my $symbol (keys %remaining) { + next if defined $sym{$symbol}; # Still exists in this release + # Gone in this release, must have come into existence in the next + # higher one. + $v{$p->{todo}}{$symbol} = delete $remaining{$symbol}; + } + + $first_perl = 0; } - $v{$perls_ref->[-1]{file}}{$_}++ for @remaining; + # After all releases, assume that anything still defined came into + # existence in that earliest release. + $v{$perls_ref->[-1]{file}}{$_} = $remaining{$_} for keys %remaining; # Read in the parts/base files. The hash ref has keys being all symbols # found in all the files in base/, which are all we are concerned with @@ -252,30 +398,41 @@ # 'UTF8_MAXBYTES' => 1 # }, - for my $v (keys %v) { + for my $version (keys %v) { # Things listed in blead (the most recent file) are special. They are # there by default because we haven't found them anywhere, so they # don't really exist as far as we can determine, so shouldn't be # listed as existing. - next if $v > $perls_ref->[0]->{file}; + next if $version > $perls_ref->[0]->{file}; - # @new becomes the symbols for version $v not already in the file for - # $v - my @new = sort dictionary_order grep { !exists $base_ref->{$_} } - keys %{$v{$v}}; + # @new becomes the symbols for $version not already in the file for it + my @new = sort symbol_order grep { !exists $base_ref->{$_} } + keys %{$v{$version}}; @new or next; # Nothing new, skip writing - my $file = $v; + my $file = $version; $file =~ s/\.//g; $file = "$base_dir/$file"; -e $file or die "non-existent: $file\n"; print "-- $file --\n"; - $write and (open F, ">>$file" or die "$file: $!\n"); - for (@new) { - print "adding $_\n"; - $write and print F format_output_line($_, $code); + if ($write) { + open my $fh, "+<", $file or die "$file: $!\n"; + my @lines = <$fh>; + my $count = @lines; + for my $new (@new) { + my $line = format_output_line($new, $v{$version}{$new}); + next if grep { /$line/ } @lines; + print "adding $new\n"; + push @lines, $line; + } + if (@lines != $count) { + @lines = sort symbol_order @lines; + truncate $fh, 0; + seek $fh, 0, 0; + print $fh @lines; + } + close $fh; } - $write and close F; } } diff -Nru perl-5.32.1/dist/Devel-PPPort/devel/update_release_date.pl perl-5.34.0/dist/Devel-PPPort/devel/update_release_date.pl --- perl-5.32.1/dist/Devel-PPPort/devel/update_release_date.pl 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/devel/update_release_date.pl 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1,54 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use FindBin; + +exit( run(@ARGV) || 0 ) unless caller; + +sub run { + my $now = time(); + + my $a_day = 86_400; + my $today = $now - $now % $a_day; + + my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = + gmtime($today); + ++$mon; + $year += 1_900; + + my $human_ts = sprintf( "%04d-%02d-%02d", $year, $mon, $mday ); + + print qq[# Updating D_PPP_RELEASE_DATE timestamp to $today /* $human_ts */\n]; + + my $f = q[parts/inc/version]; + my $file_to_patch = $FindBin::Bin . '/../' . $f; + die "Cannot find $f: $!" unless -e $file_to_patch; + + my $content; + open( my $fh, '+<', $file_to_patch ) or die "$f: $!\n"; + { + local $/; + $content = <$fh>; + } + die qq[No content for file $f\n] unless $content; + + $content =~ + s{^(\#\s*define\s+D_PPP_RELEASE_DATE)\b.*$}{$1 $today /* $human_ts */}m + or die "Cannot find D_PPP_RELEASE_DATE pattern in file $f"; + + { + truncate $fh, 0; + seek $fh, 0, 0; + print {$fh} $content; + } + + close($fh); + + print qq[$f patched with D_PPP_RELEASE_DATE\n]; + + return; +} + +1; diff -Nru perl-5.32.1/dist/Devel-PPPort/HACKERS perl-5.34.0/dist/Devel-PPPort/HACKERS --- perl-5.32.1/dist/Devel-PPPort/HACKERS 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/HACKERS 2021-02-21 11:01:31.000000000 +0000 @@ -14,13 +14,12 @@ =head2 How to backport something First, make sure that what you want to backport is documented. If it's worth -backporting, it surely is worth documenting. Send a documentation patch to -L if necessary. Also, -C cannot automatically generate proper information about the -item without at least knowing its API prototype. It can get this from -F if the item is a function, but if it is a macro, there needs to be -at least a S> line for C to be able to figure -things out on its own. +backporting, it surely is worth documenting. Submit a documentation patch to +L if necessary. Also, C +cannot automatically generate proper information about the item without at +least knowing its API prototype. It can get this from F if the item +is a function, but if it is a macro, there needs to be at least a S> line for C to be able to figure things out on its own. Next, figure out where to place your implementation. Look at all the files in F for one that fits what you're planning. If there isn't one, @@ -134,18 +133,26 @@ It also means you have to check for and skip tests that aren't relevant to this version. The recommended way to do this is like: - if (ivers($]) < ivers(5.6.2)) { + if (ivers($]) < ivers(5.6)) { # No quotes needed skip "reason", $count; } - elsif (if (ivers($]) > ivers(5.5) { + elsif (if (ivers($]) > ivers("5.5.4") { + # Quotes needed for double-dotted versions prior to 5.6.0 skip "other reason", $count; } + else { + do_the_test + } C is a function automatically made available to all F<.t> files. It converts any reasonble expression of a version number into an integer, which can reliably be compared using numeric comparison operators, with the output of a second C call on a different version number, like in the result above. +It's worth emphasizing that, due to bugs in early perl parsing, if you use a +version number containing two dots on a version befor 5.6.0, it has to be +quoted. + =back In all sections, lines that begin with C<##> are completely ignored. @@ -153,10 +160,29 @@ =head2 Implementation Section Details You can implement API elements via C functions or macros, or simple variables. -For a function, just place its body in this C<=implementation> section. But it -is preferable to use a macro if feasible. Otherwise, the user must explicitly -request that it get loaded, by defining a C> (or I) -as described in F. +It is preferable to use a macro if feasible. Otherwise, the user must +explicitly request that it get loaded, by defining a C> (or +I) as described in F. If a function, I is required, +place its body in this C<=implementation> section, like so: + + #if { NEED foo } + + char * + foo(pTHX_ const U8 *arg1, const U32 arg2, ...) + { + ... + } + + #endif + +Similarly for a variable. + +It's obviously best to use a macro if at all feasible. Sometimes what once +was implemented with a macro now requires a function; perhaps an edge case was +overlooked. Doing so will cause the new F to not be drop-in +compatible with the older version, and can hence cause breakage. This +incompatiblity (while easily solved) really needs to be stressed in +documentation. =over @@ -204,20 +230,18 @@ =item Version numbers -Version checking can be tricky to get correct (besides being buggy in some perl -versions). -C is used in the C<=tests> section to overcome this, and constructs +Version checking used to be tricky to get correct (besides being buggy in some +perl versions). +C is used in the C<=tests> section to overcome this. and constructs like the following in the C language sections. #if { VERSION < 5.9.3 } -instead of - - #if ((PERL_VERSION < 9) \ - || (PERL_VERSION == 9 && PERL_SUBVERSION < 3)) +You SHOULD be using this construct or the alternatives listed below for ALL +version checks, and not come up with something on your own. -The version number can be either of the new form C<5.x.x> or the older -form C<5.00x_yy>. Both are translated into the correct preprocessor +In this form, the version number can be either of the new form C<5.x.y> or the +older form C<5.00x_yy>. Both are translated into the correct preprocessor statements. It is also possible to combine this with other statements: #if { VERSION >= 5.004 } && !defined(sv_vcatpvf) @@ -229,14 +253,40 @@ This not only works in the C<=implementation> section, but also in the C<=xsubs>, C<=xsinit>, C<=xsmisc>, C<=xshead> and C<=xsboot> sections. +Alternatively, you can use the forms now available in regular Perl: + + #if PERL_VERSION_EQ(5,9,3) + #if PERL_VERSION_NE(5,9,3) + #if PERL_VERSION_LT(5,9,3) + #if PERL_VERSION_GT(5,9,3) + #if PERL_VERSION_LE(5,9,3) + #if PERL_VERSION_GE(5,9,3) + +These forms have the advantage over the '{ VERSION ... }' form in that you may +use the special value '*' for the final number to mean ALL possible values for +it. Thus, + + #if PERL_VERSION_EQ(5,31,'*') + +means all perls in the 5.31 series. And + + #if PERL_VERSION_NE(5,24,'*') + +means all perls EXCEPT 5.24 ones. And + + #if PERL_VERSION_LE(5,9,'*') + +is effectively + + #if PERL_VERSION_LT(5,10,0) + =item Hints If you add a comment like so: /* Hint: PL_expect, PL_copline, PL_rsfp - paragraphs of stuff about foo you want to have - shown when ppport.h outputs something about PL_expect or - PL_copline or PL_rsfp + paragraphs of stuff you want to have shown when ppport.h outputs + something about any one of PL_expect, PL_copline, or PL_rsfp */ Earlier versions of F required an asterisk at the beginning of every @@ -244,12 +294,11 @@ =item Warnings -A more serious caution about C can be displayed by instead saying +A more serious caution can be displayed by instead saying /* Warning: PL_expect, PL_copline, PL_rsfp - paragraphs of stuff about foo you want to have - shown when ppport.h outputs something about PL_expect or - PL_copline or PL_rsfp + paragraphs of stuff you want to have shown when ppport.h outputs + something about any one of PL_expect, PL_copline, or PL_rsfp */ Earlier versions of F required an asterisk at the beginning of every @@ -394,12 +443,14 @@ And you will need updated API information. Copy the latest F file from bleadperl to the F directory and run F to -collect the remaining information in F. +collect the remaining information in F. This needs to be +done after the perl has been compiled, as there are generated files that feed +it. =item * The final step before regenerating everything is to run -F to update the F file. +F to update the F file. =back @@ -566,7 +617,7 @@ All of these files could be generated on the fly while building C, but not having the tests in F will confuse TEST/harness in the core. Not having F will be bad for -viewing the docs on C. So unfortunately, it's +viewing the docs on C. So unfortunately, it's unavoidable to put some redundancy into the package. =head2 Submitting Patches @@ -598,7 +649,7 @@ =head1 COPYRIGHT -Version 3.x, Copyright (C) 2004-2019, Marcus Holland-Moritz +Version 3.x, Copyright (C) 2004-2020, Marcus Holland-Moritz and Perl 5 porters Version 2.x, Copyright (C) 2001, Paul Marquess. diff -Nru perl-5.32.1/dist/Devel-PPPort/Makefile.PL perl-5.34.0/dist/Devel-PPPort/Makefile.PL --- perl-5.32.1/dist/Devel-PPPort/Makefile.PL 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/Makefile.PL 2020-10-04 22:17:12.000000000 +0000 @@ -11,6 +11,11 @@ # This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. # +# CAUTION! that this runs on 5.003. That means there are certain restrictions +# apply. The most likely gotchas are in the HACKERS file under "How to +# backport something". Under the tests paragraph, there is a list of things +# to avoid. +# ################################################################################ require 5.003; @@ -53,7 +58,7 @@ sub configure { - my @clean = qw{ $(H_FILES) RealPPPort.xs RealPPPort.c PPPort.pm }; + my @clean = qw{ $(H_FILES) RealPPPort.xs RealPPPort.c PPPort.pm t/*.t }; my %depend = ( '$(OBJECT)' => '$(H_FILES)', 'Makefile' => '$(VERSION_FROM)', @@ -144,7 +149,11 @@ sub MY::postamble { package MY; + use Config; my $post = shift->SUPER::postamble(@_); + # .PHONY is a syntax error in MMK/MMS + my $phony = ($Config{make} =~ m/MM(K|S)/) ? 'PHONY' : '.PHONY'; + $post .= "\n\n${phony}: purge_all regen_pm regen_xs regen_tests regen_h regen_release_date\n\n"; $post .= <<'POSTAMBLE'; purge_all: realclean @@ -162,7 +171,10 @@ regen_h: $(PERL) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) ppport_h.PL -regen: regen_pm regen_xs regen_tests regen_h +regen_release_date: + $(PERL) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) devel/update_release_date.pl + +regen: regen_pm regen_xs regen_tests regen_h regen_release_date POSTAMBLE return $post; @@ -207,6 +219,24 @@ return $updated; } +sub MY::dist_basics +{ + package MY; + my $original = shift->SUPER::dist_basics(@_); + + my $updated = ''; + my @rules = split( m{^\s*$}m, $original ); + my $rule; + foreach $rule ( @rules ) { + if ( $rule =~ m{^\s*^manifest\s+:}m ) { + $rule =~ s{^(\s*^manifest\s+:.*)}{$1 $t_01_test}m; # make sure we regenerate tests + } + $updated .= $rule; + } + + return $updated; +} + sub MY::dist_core { package MY; @@ -217,8 +247,10 @@ my $rule; foreach $rule ( @rules ) { if ( $rule =~ m{^\s*^dist\s+:}m ) { - $rule =~ s{:}{: PPPort.pm manifest}; # make sure we update PPPort.pm + $rule =~ s{:}{: PPPort.pm manifest regen}; # make sure we update PPPort.pm $rule .= qq[\t].q[$(NOECHO) $(ECHO) "Warning: Please check '__MAX_PERL__' value in PPPort_pm.PL"].qq[\n]; + # checking that the tarball has no Pax Header - avoid false positives by using [P]axHEader + $rule .= qq[\t].q[$(NOECHO) zgrep -a -e '[P]axHeader' $(DISTVNAME).tar$(SUFFIX) && ( $(ECHO) "ERROR: Pax Header detected in tarball"; rm -f $(DISTVNAME).tar$(SUFFIX) ) ||:].qq[\n]; } $updated .= $rule; } diff -Nru perl-5.32.1/dist/Devel-PPPort/mktests.PL perl-5.34.0/dist/Devel-PPPort/mktests.PL --- perl-5.32.1/dist/Devel-PPPort/mktests.PL 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/mktests.PL 2020-10-04 22:17:12.000000000 +0000 @@ -78,7 +78,7 @@ if ($ENV{'PERL_CORE'}) { chdir 't' if -d 't'; unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; + require Config; Config->import; use vars '%Config'; if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; @@ -110,7 +110,7 @@ use vars '@ISA'; require DynaLoader; @ISA = qw(DynaLoader); -bootstrap Devel::PPPort; +Devel::PPPort->bootstrap; package main; diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/apicheck.pl perl-5.34.0/dist/Devel-PPPort/parts/apicheck.pl --- perl-5.32.1/dist/Devel-PPPort/parts/apicheck.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/apicheck.pl 2020-10-04 22:17:12.000000000 +0000 @@ -55,6 +55,7 @@ type => 'int', cast => 'int', block => '{1;}', + number => '1', ); # Certain return types are instead considered void @@ -121,6 +122,7 @@ STORE_LC_NUMERIC_FORCE_TO_UNDERLYING => ['DECLARATION_FOR_LC_NUMERIC_MANIPULATION;'], STORE_LC_NUMERIC_SET_TO_NEEDED => ['DECLARATION_FOR_LC_NUMERIC_MANIPULATION;'], STORE_LC_NUMERIC_SET_TO_NEEDED_IN => ['DECLARATION_FOR_LC_NUMERIC_MANIPULATION;'], + TARG => ['dTARG;'], UNDERBAR => ['dUNDERBAR;'], XCPT_CATCH => ['dXCPT;'], XCPT_RETHROW => ['dXCPT;'], @@ -186,6 +188,21 @@ typedef void yy_parser; #endif +/* Handle both 5.x.y and 7.x.y and up +#ifndef PERL_VERSION_MAJOR +# define PERL_VERSION_MAJOR PERL_REVISION +#endif +#ifndef PERL_VERSION_MINOR +# define PERL_VERSION_MINOR PERL_VERSION +#endif +#ifndef PERL_VERSION_PATCH +# define PERL_VERSION_PATCH PERL_SUBVERSION +#endif + +/* This causes some functions to compile that otherwise wouldn't, so we can + * get their info; and doesn't seem to harm anything */ +#define PERL_IMPLICIT_CONTEXT + HEAD # Caller can restrict what functions tests are generated for @@ -338,8 +355,14 @@ # #ifdef out if marked as todo (not known in) this version if (exists $todo{$f->{'name'}}) { - my($five, $ver,$sub) = parse_version($todo{$f->{'name'}}{'version'}); - print OUT "#if PERL_VERSION > $ver || (PERL_VERSION == $ver && PERL_SUBVERSION >= $sub) /* TODO */\n"; + my($rev, $ver,$sub) = parse_version($todo{$f->{'name'}}{'version'}); + print OUT < $rev \\ + || ( PERL_VERSION_MAJOR == $rev \\ + && ( PERL_VERSION_MINOR > $ver \\ + || ( PERL_VERSION_MINOR == $ver \\ + && PERL_VERSION_PATCH >= $sub))) /* TODO */ +EOT } my $final = $varargs diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/apidoc.fnc perl-5.34.0/dist/Devel-PPPort/parts/apidoc.fnc --- perl-5.32.1/dist/Devel-PPPort/parts/apidoc.fnc 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/apidoc.fnc 2020-10-04 22:17:12.000000000 +0000 @@ -15,38 +15,39 @@ Amnhd||_aMY_CXT Amnhd||aMY_CXT Amnhd||aMY_CXT_ -Amnd||ARCHNAME Amd|void|__ASSERT_|bool expr Amnhd||aTHX Amnhd||aTHX_ Amd|int|AvFILL|AV* av +md|int|AvFILLp|AV* av Amnd|I32|ax Amxud|void|BhkDISABLE|BHK *hk|which Amxud|void|BhkENABLE|BHK *hk|which mxud|void *|BhkENTRY|BHK *hk|which Amxud|void|BhkENTRY_set|BHK *hk|which|void *ptr mxd|U32|BhkFLAGS|BHK *hk -Amnd||BIN AmnUd|const char *|BOM_UTF8 Amd|SV *|boolSV|bool b -Amnd||BYTEORDER mxud|void|CALL_BLOCK_HOOKS|which|arg Amnhd||CALL_CHECKER_REQUIRE_GV Amd|void *|C_ARRAY_END|void *a Amd|STRLEN|C_ARRAY_LENGTH|void *a -Amnd||CASTFLAGS Amd|bool|cBOOL|bool expr -Amnd||CHARBITS Amd|bool|ckWARN|U32 w Amd|bool|ckWARN2|U32 w1|U32 w2 -Amd|bool|ckWARN2_d|U32 w1|U32 w2 -Amd|bool|ckWARN3|U32 w1|U32 w2|U32 w3 -Amd|bool|ckWARN3_d|U32 w1|U32 w2|U32 w3 -Amd|bool|ckWARN4|U32 w1|U32 w2|U32 w3|U32 w4 -Amd|bool|ckWARN4_d|U32 w1|U32 w2|U32 w3|U32 w4 +Amhd|bool|ckWARN2_d|U32 w1|U32 w2 +Amhd|bool|ckWARN3|U32 w1|U32 w2|U32 w3 +Amhd|bool|ckWARN3_d|U32 w1|U32 w2|U32 w3 +Amhd|bool|ckWARN4|U32 w1|U32 w2|U32 w3|U32 w4 +Amhd|bool|ckWARN4_d|U32 w1|U32 w2|U32 w3|U32 w4 Amd|bool|ckWARN_d|U32 w Amnd|char*|CLASS Amd|void|CLEAR_ERRSV +Amd|const char *|CopFILE|const COP * c +Amd|AV *|CopFILEAV|const COP * c +Amd|const char *|CopFILEGV|const COP * c +Amd|void|CopFILE_set|COP * c|const char * pv +Amd|SV *|CopFILESV|const COP * c Amxd|HV *|cophh_2hv|const COPHH *cophh|U32 flags Amxd|COPHH *|cophh_copy|COPHH *cophh Amxd|COPHH *|cophh_delete_pv|const COPHH *cophh|const char *key|U32 hash|U32 flags @@ -72,12 +73,15 @@ Amd|const char *|CopLABEL|COP *const cop Amd|const char *|CopLABEL_len|COP *const cop|STRLEN *len Amd|const char *|CopLABEL_len_flags|COP *const cop|STRLEN *len|U32 *flags +Amd|STRLEN|CopLINE|const COP * c +Amd|HV *|CopSTASH|const COP * c +Amd|bool|CopSTASH_eq|const COP * c|const HV * hv +Amd|char *|CopSTASHPV|const COP * c +Amd|void|CopSTASHPV_set|COP * c|const char * pv +Amd|bool|CopSTASH_set|COP * c|const HV * hv Amd|void|Copy|void* src|void* dest|int nitems|type Amd|void *|CopyD|void* src|void* dest|int nitems|type -Amnd||CPPLAST -Amnd||CPPMINUS -Amnd||CPPRUN -Amnd||CPPSTDIN +AmDd|void|CPERLscope|void x Amnhd||CV_NAME_NOTQUAL Amxd|PADLIST *|CvPADLIST|CV *cv Amd|HV*|CvSTASH|CV* cv @@ -87,57 +91,71 @@ Amnsd||dAX Amnsd||dAXMARK Amnd|void|DECLARATION_FOR_LC_NUMERIC_MANIPULATION +Amnd|SV *|DEFSV +Amd|void|DEFSV_set|SV * sv Amnsd||dITEMS msd||djSP Amnsd||dMARK Amnsd||dMULTICALL Amnhd||dMY_CXT +Amnsd||dMY_CXT_SV +Amnsd||dNOOP Amnsd||dORIGMARK -Amnd||DOUBLEINFBYTES -Amnd||DOUBLEKIND -Amnd||DOUBLEMANTBITS -Amnd||DOUBLENANBYTES -Amnd||DOUBLESIZE Amd|bool|DO_UTF8|SV* sv mnd|void|dSAVEDERRNO mnd|void|dSAVE_ERRNO Amnsd||dSP +Amnsd||dTARGET Amnhd||dTHR Amnhd||dTHX +AmUd|void|dTHXa|PerlInterpreter * a +AmUd|void|dTHXoa|PerlInterpreter * a Amnsd||dUNDERBAR -Amnhd||dVAR +AmnUd||dVAR Amnsd||dXCPT Amnsd||dXSARGS Amnsd||dXSI32 +AmnUud|void|END_EXTERN_C Amnsd||ENTER Amsd||ENTER_with_name|"name" Amnd|SV *|ERRSV Amd|void|EXTEND|SP|SSize_t nitems +AmnUud|void|EXTERN_C Amnsd||FREETMPS -AmnUd||G_ARRAY -AmnUd||G_DISCARD -AmnUd||G_EVAL -Amnd|U32|GIMME +AmnUhd||G_ARRAY +AmnUhd||G_DISCARD +Amd|CV *|get_cvs|"string"|I32 flags +AmnUhd||G_EVAL +AmnDd|U32|GIMME Amnd|U32|GIMME_V +AmnUhd||G_KEEPERR Amnhd||G_METHOD Amnhd||G_METHOD_NAMED -AmnUd||G_NOARGS +AmnUhd||G_NOARGS Amnhd||G_RETHROW AmdR|bool|GROK_NUMERIC_RADIX|NN const char **sp|NN const char *send -AmnUd||G_SCALAR +AmnUhd||G_SCALAR Amnhd||GV_ADD Amnhd||GV_ADDMG Amnhd||GV_ADDMULTI +Amnhd||GV_ADDWARN Amd|AV*|GvAV|GV* gv +Emnhd||GV_CACHE_ONLY Amd|CV*|GvCV|GV* gv +Amd|GV*|gv_fetchpvn|const char* name|STRLEN len|I32 flags|const svtype sv_type +Amd|GV*|gv_fetchpvs|"name"|I32 flags|const svtype sv_type +Amd|GV *|gv_fetchsv_nomg|SV *name|I32 flags|const svtype sv_type Amd|HV*|GvHV|GV* gv Amnhd||GV_NOADD_NOINIT Amnhd||GV_NOEXPAND Amnhd||GV_NOINIT -AmnUd||G_VOID +Amnhd||GV_NO_SVGMAGIC +Amnhd||GV_NOTQUAL +AmnUhd||G_VOID Amd|HV*|gv_stashpvs|"name"|I32 create Amnhd||GV_SUPER Amd|SV*|GvSV|GV* gv +Amd|SV*|GvSVn|GV* gv AmnUd||HEf_SVKEY Amd|U32|HeHASH|HE* he Amd|void*|HeKEY|HE* he @@ -155,20 +173,18 @@ Amd|STRLEN|HvFILL|HV *const hv Amnhd||HV_ITERNEXT_WANTPLACEHOLDERS Amd|char*|HvNAME|HV* stash +Cmhd|char*|HvNAME_get|HV* stash Amd|STRLEN|HvNAMELEN|HV *stash +Amhd|char*|HvNAMELEN_get|HV* stash Amd|unsigned char|HvNAMEUTF8|HV *stash Amd|SV**|hv_stores|HV* tb|"key"|SV* val -Amnd||I16SIZE -Amnd||I16TYPE -Amnd||I32SIZE -Amnd||I32TYPE -Amnd||I8SIZE -Amnd||I8TYPE Amnd|bool|IN_LOCALE Amnd|bool|IN_LOCALE_COMPILETIME Amnd|bool|IN_LOCALE_RUNTIME +Amnd|bool|IN_PERL_COMPILETIME +Amnd|bool|IN_PERL_RUNTIME Amhd|void *|INT2PTR|type|int value -Amnd||INTSIZE +Amd||INTMAX_C|number Amhd|bool|isALNUM|int ch Amhd|bool|isALNUM_A|int ch Amhd|bool|isALNUMC|int ch @@ -241,6 +257,7 @@ Amhd|bool|isGRAPH_utf8|U8 * s|U8 * end Amhd|bool|isGRAPH_utf8_safe|U8 * s|U8 * end Amhd|bool|isGRAPH_uvchr|int ch +Amd|bool|isGV_with_GP|SV * sv Amd|bool|isIDCONT|char ch Amhd|bool|isIDCONT_A|int ch Amhd|bool|isIDCONT_L1|int ch @@ -344,8 +361,6 @@ Amhd|bool|isXDIGIT_uvchr|int ch Amnd|I32|items Amnhd||IVdf -Amnd||IVSIZE -Amnd||IVTYPE Amnd|I32|ix Amd|U8|LATIN1_TO_NATIVE|U8 ch Amnsd||LEAVE @@ -355,11 +370,6 @@ Amnhd||LEX_STUFF_UTF8 AmUd|bool|LIKELY|const bool expr Amd|OP*|LINKLIST|OP *o -Amnd||LONGDBLINFBYTES -Amnd||LONGDBLMANTBITS -Amnd||LONGDBLNANBYTES -Amnd||LONGSIZE -Amnd||LSEEKSIZE mnUd||LVRET AmnUd||MARK Amd|bool|memCHRs|"list"|char c @@ -375,6 +385,13 @@ Amd|void|mPUSHs|SV* sv Amd|void|mPUSHu|UV uv Amnsd||MULTICALL +Amhd|AV *|MUTABLE_AV|AV * p +Amhd|CV *|MUTABLE_CV|CV * p +Amhd|GV *|MUTABLE_GV|GV * p +Amhd|HV *|MUTABLE_HV|HV * p +Amhd|IO *|MUTABLE_IO|IO * p +Amd|void *|MUTABLE_PTR|void * p +Amhd|SV *|MUTABLE_SV|SV * p Amd|void|mXPUSHi|IV iv Amd|void|mXPUSHn|NV nv Amd|void|mXPUSHp|char* str|STRLEN len @@ -396,17 +413,16 @@ Amd|void|Newxc|void* ptr|int nitems|type|cast AmUd||newXSproto|char* name|XSUBADDR_t f|char* filename|const char *proto Amd|void|Newxz|void* ptr|int nitems|type +Amnsd||NOOP ADmnUd||Nullav AmnUd||Nullch ADmnUd||Nullcv ADmnUd||Nullhv AmnUd||Nullsv +Cmhd|void *|NUM2PTR|type|int value Amnhd||NVef Amnhd||NVff Amnhd||NVgf -Amnd||NVMANTBITS -Amnd||NVSIZE -Amnd||NVTYPE Amd|U32|OP_CLASS|OP *o Amd|const char *|OP_DESC|OP *o Amnhd||OPf_KIDS @@ -421,8 +437,10 @@ Amd|bool|OP_TYPE_IS|OP *o|Optype type Amd|bool|OP_TYPE_IS_OR_WAS|OP *o|Optype type AmnUd||ORIGMARK -Amnd||OSNAME -Amnd||OSVERS +Amd|U32|packWARN|U32 w1 +Amhd|bool|packWARN2|U32 w1|U32 w2 +Amhd|bool|packWARN3|U32 w1|U32 w2|U32 w3 +Amhd|bool|packWARN4|U32 w1|U32 w2|U32 w3|U32 w4 Amd|PADOFFSET|pad_add_name_pvs|"name"|U32 flags|HV *typestash|HV *ourstash Amxd|SV **|PadARRAY|PAD * pad md|SV *|PAD_BASE_SV |PADLIST padlist|PADOFFSET po @@ -482,6 +500,8 @@ ATmhd|int |PerlIO_fast_gets|PerlIO *f ATmhd|PerlIO*|PerlIO_fdopen|int fd|const char *mode ATmhd|FILE *|PerlIO_findFILE|PerlIO *f +Amd|PerlIO_funcs *|PERLIO_FUNCS_CAST|PerlIO * func +Amd||PERLIO_FUNCS_DECL|PerlIO * func ATmhd|int |PerlIO_getc|PerlIO *d ATmhd|int |PerlIO_getpos|PerlIO *f|SV *save ATmhd|int |PerlIO_has_base|PerlIO *f @@ -556,12 +576,15 @@ Amnhd||PERL_PV_ESCAPE_RE Amnhd||PERL_PV_ESCAPE_UNI Amnhd||PERL_PV_ESCAPE_UNI_DETECT +Cmnhd||PERL_PV_PRETTY_DUMP Amnhd||PERL_PV_PRETTY_ELLIPSES Amnhd||PERL_PV_PRETTY_LTGT +Cmnhd||PERL_PV_PRETTY_NOCLEAR Amnhd||PERL_PV_PRETTY_QUOTE +Cmnhd||PERL_PV_PRETTY_REGPROP AmnUhd||PERL_QUAD_MAX AmnUhd||PERL_QUAD_MIN -hAmnd|int|PERL_REVISION +AmDnUd|U8|PERL_REVISION Amnhd||PERL_SCAN_ALLOW_UNDERSCORES Amnhd||PERL_SCAN_DISALLOW_PREFIX Amnhd||PERL_SCAN_GREATER_THAN_UV_MAX @@ -569,29 +592,48 @@ Amnhd||PERL_SCAN_TRAILING AmnUhd||PERL_SHORT_MAX AmnUhd||PERL_SHORT_MIN -hAmnd|int|PERL_SUBVERSION +Amnd|U32|PERL_SIGNALS_UNSAFE_FLAG +AmDnUd|U8|PERL_SUBVERSION Amd|void|PERL_SYS_INIT|int *argc|char*** argv Amd|void|PERL_SYS_INIT3|int *argc|char*** argv|char*** env Amd|void|PERL_SYS_TERM| AmnUhd||PERL_UCHAR_MAX AmnUhd||PERL_UCHAR_MIN AmnUhd||PERL_UINT_MAX +AmnUhd||PERL_UINT_MIN AmnUhd||PERL_ULONG_MAX AmnUhd||PERL_ULONG_MIN +Amd||PERL_UNUSED_ARG|void x +Amnd||PERL_UNUSED_CONTEXT +AmnUd||PERL_UNUSED_DECL +Amd||PERL_UNUSED_RESULT|void x +Amd||PERL_UNUSED_VAR|void x AmnUhd||PERL_UQUAD_MAX AmnUhd||PERL_UQUAD_MIN +AmnuUd|bool|PERL_USE_GCC_BRACE_GROUPS AmnUhd||PERL_USHORT_MAX AmnUhd||PERL_USHORT_MIN -hAmnd|int|PERL_VERSION +AmDnUd|U8|PERL_VERSION +AmRd|bool|PERL_VERSION_EQ|const U8 major|const U8 minor|const U8 patch +AmRhd|bool|PERL_VERSION_GE|const U8 major|const U8 minor|const U8 patch +AmRhd|bool|PERL_VERSION_GT|const U8 major|const U8 minor|const U8 patch +AmRhd|bool|PERL_VERSION_LE|const U8 major|const U8 minor|const U8 patch +AmRhd|bool|PERL_VERSION_LT|const U8 major|const U8 minor|const U8 patch +AmRhd|bool|PERL_VERSION_NE|const U8 major|const U8 minor|const U8 patch AmnUd|Perl_check_t *|PL_check AmnxUd|PAD *|PL_comppad AmnxUd|PADNAMELIST *|PL_comppad_name Amnd|COP*|PL_curcop AmnxUd|SV **|PL_curpad Amnd|HV*|PL_curstash +mnd|SV *|PL_DBsingle +mnd|GV *|PL_DBsub +mnd|SV *|PL_DBtrace Amnd|GV *|PL_defgv -Amnhd|GV *|PL_errgv +mnd|U8|PL_dowarn +AmnUhd|GV *|PL_errgv Amnd|U8|PL_exit_flags +AmTuUd|const char *|PL_hexdigit|U8 value AmnUxd|Perl_keyword_plugin_t|PL_keyword_plugin mnd|GV*|PL_last_in_gv Amnd|HV*|PL_modglobal @@ -609,6 +651,7 @@ Amnd|peep_t|PL_rpeepp mnd|SV*|PL_rs Amnd|runops_proc_t|PL_runops +Amnd||PL_Sv Amnd|SV|PL_sv_no Amnd|SV|PL_sv_undef Amnd|SV|PL_sv_yes @@ -630,13 +673,14 @@ Amnd|SV*|POPs Amnd|UV|POPu Amnd|long|POPul -Amnd||PRIVLIB Amnhd||pTHX Amnhd||pTHX_ Amhd|IV|PTR2IV|void * +Amhd|IV|PTR2nat|void * Amhd|NV|PTR2NV|void * +Amhd|unsigned long|PTR2ul|void * Amhd|UV|PTR2UV|void * -Amnd||PTRSIZE +AmhuUd|type|PTRV Amd|void|PUSHi|IV iv Amd|void|PUSHMARK|SP Amnd|void|PUSHmortal @@ -646,7 +690,6 @@ Amd|void|PUSHs|SV* sv Amd|void|PUSHu|UV uv Amnsd||PUTBACK -Amnd||RANDBITS Amd|U8|READ_XDIGIT|char str* md|SV *|refcounted_he_fetch_pvs|const struct refcounted_he *chain|"key"|U32 flags md|struct refcounted_he *|refcounted_he_new_pvs|struct refcounted_he *parent|"key"|SV *value|U32 flags @@ -660,22 +703,36 @@ Amnhd||RV2CVOPCV_RETURN_NAME_GV Amd|void|Safefree|void* ptr Amd|void|SANE_ERRSV +Amhd||SAVEBOOL|int i md|void|SAVECLEARSV |SV **svp md|void|SAVECOMPPAD +Amnd|void|SAVE_DEFSV +Amhd||SAVEDELETE|HV * hv|char * key|I32 length +Amhd||SAVEDESTRUCTOR|DESTRUCTORFUNC_NOCONTEXT_t f|void *p mnd|void|SAVE_ERRNO +Amhd||SAVEFREEOP|OP *op +Amhd||SAVEFREEPV|void * p +Amhd||SAVEFREESV|SV* sv +Amhd||SAVEI16|I16 i +Amhd||SAVEI32|I32 i +Amhd||SAVEI8|I8 i +Amhd||SAVEINT|int i +Amhd||SAVEIV|IV i +Amhd||SAVELONG|long i +Amhd||SAVEMORTALIZESV|SV* sv md|void|SAVEPADSV |PADOFFSET po +Amhd||SAVEPPTR|char * p Amad|char*|savepvs|"literal string" Amad|char*|savesharedpvs|"literal string" +Amhd||SAVESPTR|SV * s +Amhd||SAVESTACK_POS Amnsd||SAVETMPS md|void|SETERRNO|int errcode|int vmserrcode -Amnd||SHORTSIZE -Amnd||SITELIB AmnUd||SP Amnsd||SPAGAIN Amd|SV*|ST|int ix +AmnUud|void|START_EXTERN_C Amnhd||START_MY_CXT -Amnd||STARTPERL -Amnd||STDCHAR AmnUhud|void|STMT_END AmnUud|void|STMT_START Amd|void|STORE_LC_NUMERIC_FORCE_TO_UNDERLYING @@ -711,7 +768,6 @@ Amhd||SVfARG|SV *sv Amnhd||SVf_UTF8 Amd|U32|SvGAMAGIC|SV* sv -Amd|void|SvGETMAGIC|SV* sv Amnhd||SV_GMAGIC Amd|char *|SvGROW|SV* sv|STRLEN len Amnhd||SV_HAS_TRAILING_NUL @@ -726,8 +782,6 @@ Amd|bool|SvIOK_UV|SV* sv Amd|U32|SvIsCOW|SV* sv Amd|bool|SvIsCOW_shared_hash|SV* sv -Amd|IV|SvIV|SV* sv -Amd|IV|SvIV_nomg|SV* sv Amd|void|SvIV_set|SV* sv|IV val Amd|IV|SvIVX|SV* sv Amd|IV|SvIVx|SV* sv @@ -744,13 +798,12 @@ Amd|void|SvNOK_only|SV* sv Amd|U32|SvNOKp|SV* sv Amnhd||SV_NOSTEAL -Amd|NV|SvNV|SV* sv -Amd|NV|SvNV_nomg|SV* sv Amd|void|SvNV_set|SV* sv|NV val Amd|NV|SvNVX|SV* sv Amd|NV|SvNVx|SV* sv Amd|U32|SvOK|SV* sv Amd|U32|SvOOK|SV* sv +Amd|void|SvOOK_off|SV * sv Amd|void|SvOOK_offset|SV*sv|STRLEN len Amd|U32|SvPOK|SV* sv Amd|void|SvPOK_off|SV* sv @@ -768,12 +821,29 @@ Amd|char*|SvPVbytex|SV* sv|STRLEN len Amd|char*|SvPVbytex_force|SV* sv|STRLEN len Amd|char *|SvPVCLEAR|SV* sv +Amhd|const char*|SvPV_const|SV* sv|STRLEN len +Amd|char *|SvPV_flags|SV * sv|STRLEN len|U32 flags +Amhd|const char *|SvPV_flags_const|SV * sv|STRLEN len|U32 flags +Amd|const char *|SvPV_flags_const_nolen|SV * sv|U32 flags +Amhd|char *|SvPV_flags_mutable|SV * sv|STRLEN len|U32 flags Amd|char*|SvPV_force|SV* sv|STRLEN len -Amd|char*|SvPV_force_nomg|SV* sv|STRLEN len +Amd|char *|SvPV_force_flags|SV * sv|STRLEN len|U32 flags +Amhd|char*|SvPV_force_flags_mutable|SV* sv|STRLEN len|U32 flags +Amd|char*|SvPV_force_flags_nolen|SV* sv|U32 flags +Amhd|char*|SvPV_force_mutable|SV* sv|STRLEN len +Amd|char*|SvPV_force_nolen|SV* sv +Amhd|char*|SvPV_force_nomg|SV* sv|STRLEN len +Amhd|char*|SvPV_force_nomg_nolen|SV* sv +Amhd|const char*|SvPV_mutable|SV* sv|STRLEN len Amd|char*|SvPV_nolen|SV* sv -Amd|char*|SvPV_nomg|SV* sv|STRLEN len -Amd|char*|SvPV_nomg_nolen|SV* sv +Amhd|const char*|SvPV_nolen_const|SV* sv +Amhd|char*|SvPV_nomg|SV* sv|STRLEN len +Amhd|const char*|SvPV_nomg_const|SV* sv|STRLEN len +Amhd|const char*|SvPV_nomg_const_nolen|SV* sv +Amhd|char*|SvPV_nomg_nolen|SV* sv +Amd|void|SvPV_renew|SV* sv|STRLEN len Amd|void|SvPV_set|SV* sv|char* val +Amd|void|SvPV_shrink_to_cur|SV* sv Amd|char*|SvPVutf8|SV* sv|STRLEN len Amd|char*|SvPVutf8_force|SV* sv|STRLEN len Amd|char*|SvPVutf8_nolen|SV* sv @@ -783,7 +853,9 @@ Amd|char*|SvPVutf8x|SV* sv|STRLEN len Amd|char*|SvPVutf8x_force|SV* sv|STRLEN len Amd|char*|SvPVX|SV* sv -Amd|char*|SvPVx|SV* sv|STRLEN len +Amhd|char*|SvPVx|SV* sv|STRLEN len +Amd|const char*|SvPVX_const|SV* sv +Amd|const char*|SvPVX_mutable|SV* sv Amd|U32|SvREADONLY|SV* sv Amd|U32|SvREADONLY_off|SV* sv Amd|U32|SvREADONLY_on|SV* sv @@ -810,6 +882,7 @@ Amd|void|sv_setsv_nomg|SV* dsv|SV* ssv Amd|void|SvSetSV_nosteal|SV* dsv|SV* ssv Amd|void|SvSHARE|SV* sv +Amd|struct hek*|SvSHARED_HASH|SV * sv Amnhd||SV_SMAGIC Amnhd||SVs_PADSTALE Amd|HV*|SvSTASH|SV* sv @@ -836,8 +909,7 @@ AmnUd||SVt_PVMG AmnUd||SVt_PVNV AmnUd||SVt_REGEXP -Amd|bool|SvTRUE|SV* sv -Amd|bool|SvTRUE_nomg|SV* sv +Amd|bool|SvTRUE_nomg_NN|SV* sv Amd|bool|SvTRUEx|SV* sv Amd|svtype|SvTYPE|SV* sv AmnUd||svtype @@ -845,15 +917,16 @@ Amd|bool|SvUOK|SV* sv Amd|void|SvUPGRADE|SV* sv|svtype type Amd|U32|SvUTF8|SV* sv +AmnhDd||SV_UTF8_NO_ENCODING Amd|void|SvUTF8_off|SV *sv Amd|void|SvUTF8_on|SV *sv -Amd|UV|SvUV|SV* sv -Amd|UV|SvUV_nomg|SV* sv Amd|void|SvUV_set|SV* sv|UV val Amd|UV|SvUVX|SV* sv Amd|UV|SvUVx|SV* sv AmDd|UV|SvUVXx|SV* sv Amd|bool|SvVOK|SV* sv +Amd|MAGIC*|SvVSTRING_mg|SV * sv +Amnsd||TARG Amnd|(whatever)|THIS Amd|U8|toFOLD|U8 ch Amd|UV|toFOLD_utf8|U8* p|U8* e|U8* s|STRLEN* lenp @@ -873,12 +946,7 @@ Amd|UV|toUPPER_utf8|U8* p|U8* e|U8* s|STRLEN* lenp Amd|UV|toUPPER_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp Amd|UV|toUPPER_uvchr|UV cp|U8* s|STRLEN* lenp -Amnd||U16SIZE -Amnd||U16TYPE -Amnd||U32SIZE -Amnd||U32TYPE -Amnd||U8SIZE -Amnd||U8TYPE +Amd||UINTMAX_C|number AmnUd||UNDERBAR AmnUd|UV|UNICODE_REPLACEMENT Amd|UV|UNI_TO_NATIVE|UV ch @@ -911,10 +979,7 @@ Amd|bool|UVCHR_IS_INVARIANT|UV cp Amd|STRLEN|UVCHR_SKIP|UV cp Amnhd||UVof -Amnd||UVSIZE -Amnd||UVTYPE Amnhd||UVuf -Amnd||UVXf Amnhd||UVxf Amnhd||WARN_ALL Amnhd||WARN_AMBIGUOUS @@ -1009,10 +1074,11 @@ Amd|void|XPUSHp|char* str|STRLEN len Amd|void|XPUSHs|SV* sv Amd|void|XPUSHu|UV uv -AmnUd||XS +AmUd||XS Amnsd||XS_APIVERSION_BOOTCHECK -AmnUd||XS_EXTERNAL +AmUd||XS_EXTERNAL AmUd||XS_INTERNAL +AmUd||XSPROTO Amd|void|XSRETURN|int nitems Amnsd||XSRETURN_EMPTY Amd|void|XSRETURN_IV|IV iv diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5003007 perl-5.34.0/dist/Devel-PPPort/parts/base/5003007 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5003007 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5003007 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,25 @@ 5.003007 +ABORT # Z added by devel/scanprov amagic_call # T +AMG_CALLun # Z added by devel/scanprov +AMGfallNEVER # Z added by devel/scanprov +AMGfallNO # Z added by devel/scanprov +AMGfallYES # Z added by devel/scanprov +AMGf_assign # Z added by devel/scanprov +AMGf_noleft # Z added by devel/scanprov +AMGf_noright # Z added by devel/scanprov +AMGf_unary # Z added by devel/scanprov +ANYOF # Z added by devel/scanprov +apply # F added by devel/scanprov +ARCHLIB # K added by devel/scanprov +ARCHLIB_EXP # K added by devel/scanprov +ARG1 # Z added by devel/scanprov +ARG2 # Z added by devel/scanprov +ARGTARG # Z added by devel/scanprov +assert # Z added by devel/scanprov +AvALLOC # Z added by devel/scanprov +AvARRAY # Z added by devel/scanprov +AvARYLEN # Z added by devel/scanprov av_clear # T av_extend # T av_fetch # T @@ -7,84 +27,474 @@ AvFILL # T av_len # T av_make # T +AvMAX # Z added by devel/scanprov av_pop # T av_push # T +AvREAL # Z added by devel/scanprov +AvREALISH # Z added by devel/scanprov +AvREAL_off # Z added by devel/scanprov +AvREAL_on # Z added by devel/scanprov +AvREIFY # Z added by devel/scanprov +AvREIFY_off # Z added by devel/scanprov +AvREIFY_on # Z added by devel/scanprov av_shift # T av_store # T av_undef # T av_unshift # T ax # T -BIN # T -BYTEORDER # T -CASTFLAGS # T +BASEOP # Z added by devel/scanprov +BIN # K added by devel/scanprov +bind_match # F added by devel/scanprov +BIT_BUCKET # Z added by devel/scanprov +blk_eval # Z added by devel/scanprov +blk_gimme # Z added by devel/scanprov +blk_loop # Z added by devel/scanprov +blk_oldcop # Z added by devel/scanprov +blk_oldmarksp # Z added by devel/scanprov +blk_oldpm # Z added by devel/scanprov +blk_oldscopesp # Z added by devel/scanprov +blk_oldsp # Z added by devel/scanprov +blk_sub # Z added by devel/scanprov +BmPREVIOUS # Z added by devel/scanprov +BmRARE # Z added by devel/scanprov +BmUSEFUL # Z added by devel/scanprov +BOL # Z added by devel/scanprov +bool # Z added by devel/scanprov +boot_core_UNIVERSAL # F added by devel/scanprov +BOUND # Z added by devel/scanprov +BRANCH # Z added by devel/scanprov +BSD_GETPGRP # Z added by devel/scanprov +BSD_SETPGRP # Z added by devel/scanprov +BUFSIZ # Z added by devel/scanprov +BYTEORDER # K added by devel/scanprov +CALL # X added by devel/scanprov +cando # F added by devel/scanprov +CAN_PROTOTYPE # Z added by devel/scanprov +CASTFLAGS # K added by devel/scanprov +CASTNEGFLOAT # K added by devel/scanprov +cast_ulong # F added by devel/scanprov +CAT2 # K added by devel/scanprov +cBINOP # Z added by devel/scanprov +cCOP # Z added by devel/scanprov +checkcomma # F added by devel/scanprov +check_uni # F added by devel/scanprov +clearerr # Z added by devel/scanprov +cLISTOP # Z added by devel/scanprov +cLOGOP # Z added by devel/scanprov +cLOOP # Z added by devel/scanprov +CLOSE # Z added by devel/scanprov Copy # T -CPPMINUS # T -CPPSTDIN # T +cPMOP # Z added by devel/scanprov +CPPMINUS # K added by devel/scanprov +CPPSTDIN # K added by devel/scanprov +cPVOP # Z added by devel/scanprov +CSH # K added by devel/scanprov +cSVOP # Z added by devel/scanprov +Ctl # Z added by devel/scanprov +CTYPE256 # Z added by devel/scanprov +cUNOP # Z added by devel/scanprov +CURLY # Z added by devel/scanprov +CURLYX # Z added by devel/scanprov +CvANON # Z added by devel/scanprov +CvANON_off # Z added by devel/scanprov +CvANON_on # Z added by devel/scanprov cv_clone # T +CvCLONE # Z added by devel/scanprov +CvCLONED # Z added by devel/scanprov +CvCLONED_off # Z added by devel/scanprov +CvCLONED_on # Z added by devel/scanprov +CvCLONE_off # Z added by devel/scanprov +CvCLONE_on # Z added by devel/scanprov cv_const_sv # T CvDEPTH # T +CVf_ANON # Z added by devel/scanprov +CVf_CLONE # Z added by devel/scanprov +CVf_CLONED # Z added by devel/scanprov +CvFILEGV # Z added by devel/scanprov +CvFLAGS # Z added by devel/scanprov CvGV # T +CvOUTSIDE # Z added by devel/scanprov +CvROOT # Z added by devel/scanprov +CvSTART # Z added by devel/scanprov CvSTASH # T cv_undef # T -cxinc # T +CvXSUB # Z added by devel/scanprov +CvXSUBANY # Z added by devel/scanprov +cx_dump # F added by devel/scanprov +CXINC # Z added by devel/scanprov +cxinc # F added by devel/scanprov +CXt_BLOCK # Z added by devel/scanprov +CXt_EVAL # Z added by devel/scanprov +CXt_NULL # Z added by devel/scanprov +CXt_SUB # Z added by devel/scanprov +CXt_SUBST # Z added by devel/scanprov +dATARGET # Z added by devel/scanprov +DB_Hash_t # K added by devel/scanprov +DB_Prefix_t # K added by devel/scanprov +DEBUG # Z added by devel/scanprov +DEBUG_c # Z added by devel/scanprov +DEBUG_D # Z added by devel/scanprov +DEBUG_f # Z added by devel/scanprov +DEBUG_l # Z added by devel/scanprov +DEBUG_m # Z added by devel/scanprov +DEBUG_o # Z added by devel/scanprov +DEBUG_P # Z added by devel/scanprov +DEBUG_p # Z added by devel/scanprov +DEBUG_r # Z added by devel/scanprov +DEBUG_s # Z added by devel/scanprov +DEBUG_t # Z added by devel/scanprov +DEBUG_u # Z added by devel/scanprov +DEBUG_X # Z added by devel/scanprov +DEBUG_x # Z added by devel/scanprov +dEXT # Z added by devel/scanprov +DIE # Z added by devel/scanprov +Direntry_t # K added by devel/scanprov dMARK # T +DM_DELAY # Z added by devel/scanprov +DM_EGID # Z added by devel/scanprov +DM_EUID # Z added by devel/scanprov +DM_GID # Z added by devel/scanprov +DM_RGID # Z added by devel/scanprov +DM_RUID # Z added by devel/scanprov +DM_UID # Z added by devel/scanprov +do_chomp # F added by devel/scanprov do_close # T +do_eof # F added by devel/scanprov +dofindlabel # F added by devel/scanprov +DOINIT # Z added by devel/scanprov +do_ipcctl # F added by devel/scanprov +do_ipcget # F added by devel/scanprov do_join # T +do_msgrcv # F added by devel/scanprov +do_msgsnd # F added by devel/scanprov do_open # T +dopoptoeval # F added by devel/scanprov +do_print # F added by devel/scanprov +do_readline # F added by devel/scanprov dORIGMARK # T -do_sprintf # T -dounwind # T +do_seek # F added by devel/scanprov +do_semop # F added by devel/scanprov +do_shmio # F added by devel/scanprov +DOSISH # Z added by devel/scanprov +do_sprintf # F added by devel/scanprov +do_tell # F added by devel/scanprov +do_trans # F added by devel/scanprov +dounwind # F added by devel/scanprov +do_vecset # F added by devel/scanprov +do_vop # F added by devel/scanprov dowantarray # T +dPOPiv # Z added by devel/scanprov +dPOPnv # Z added by devel/scanprov +dPOPPOPiirl # Z added by devel/scanprov +dPOPPOPnnrl # Z added by devel/scanprov +dPOPPOPssrl # Z added by devel/scanprov +dPOPss # Z added by devel/scanprov +dPOPTOPiirl # Z added by devel/scanprov +dPOPTOPnnrl # Z added by devel/scanprov +dPOPTOPssrl # Z added by devel/scanprov dSP # T +dTARG # Z added by devel/scanprov +dTARGET # T +dTARGETSTACKED # Z added by devel/scanprov dTHX # T +dTOPiv # Z added by devel/scanprov +dTOPnv # Z added by devel/scanprov +dTOPss # Z added by devel/scanprov +dump_mstats # F added by devel/scanprov dXSARGS # T +dXSI32 # M added by devel/scanprov +dXSUB_SYS # Z added by devel/scanprov +END # Z added by devel/scanprov ENTER # T +environ # Z added by devel/scanprov +EOF # Z added by devel/scanprov +EOF_NONBLOCK # K added by devel/scanprov +EOL # Z added by devel/scanprov +EXT # Z added by devel/scanprov EXTEND # T +FALSE # Z added by devel/scanprov +fclose # Z added by devel/scanprov +fdopen # Z added by devel/scanprov +feof # Z added by devel/scanprov +ferror # Z added by devel/scanprov +FF_BLANK # Z added by devel/scanprov +FF_CHECKCHOP # Z added by devel/scanprov +FF_CHECKNL # Z added by devel/scanprov +FF_CHOP # Z added by devel/scanprov +FF_DECIMAL # Z added by devel/scanprov +FF_END # Z added by devel/scanprov +FF_FETCH # Z added by devel/scanprov +FF_HALFSPACE # Z added by devel/scanprov +FF_ITEM # Z added by devel/scanprov +FF_LINEGLOB # Z added by devel/scanprov +FF_LINEMARK # Z added by devel/scanprov +FF_LITERAL # Z added by devel/scanprov +Fflush # Z added by devel/scanprov +fflush # Z added by devel/scanprov +FF_MORE # Z added by devel/scanprov +FF_NEWLINE # Z added by devel/scanprov +FF_SKIP # Z added by devel/scanprov +FF_SPACE # Z added by devel/scanprov +fgetc # Z added by devel/scanprov +fgetpos # Z added by devel/scanprov +fgets # Z added by devel/scanprov +FILE # Z added by devel/scanprov +FILE_base # K added by devel/scanprov +FILE_bufsiz # K added by devel/scanprov +FILE_cnt # K added by devel/scanprov +fileno # Z added by devel/scanprov +FILE_ptr # K added by devel/scanprov filter_add # T +FILTER_DATA # Z added by devel/scanprov filter_del # T +FILTER_ISREADER # Z added by devel/scanprov +FILTER_READ # Z added by devel/scanprov filter_read # T -free_tmps # T +FLEXFILENAMES # K added by devel/scanprov +flockfile # Z added by devel/scanprov +FmLINES # Z added by devel/scanprov +fold_constants # F added by devel/scanprov +fopen # Z added by devel/scanprov +force_ident # F added by devel/scanprov +force_list # F added by devel/scanprov +force_next # F added by devel/scanprov +force_word # F added by devel/scanprov +Fpos_t # K added by devel/scanprov +fprintf # Z added by devel/scanprov +fputc # Z added by devel/scanprov +fputs # Z added by devel/scanprov +fread # Z added by devel/scanprov +free # Z added by devel/scanprov +Free_t # K added by devel/scanprov +free_tmps # F added by devel/scanprov FREETMPS # T +freopen # Z added by devel/scanprov +fscanf # Z added by devel/scanprov +fseek # Z added by devel/scanprov +fsetpos # Z added by devel/scanprov +Fstat # Z added by devel/scanprov +ftell # Z added by devel/scanprov +ftrylockfile # Z added by devel/scanprov +funlockfile # Z added by devel/scanprov +fwrite # Z added by devel/scanprov +fwrite1 # Z added by devel/scanprov G_ARRAY # T +Gconvert # K added by devel/scanprov G_DISCARD # T +gen_constant_list # F added by devel/scanprov +GETATARGET # Z added by devel/scanprov +getc # Z added by devel/scanprov +getc_unlocked # Z added by devel/scanprov +GETTARGET # Z added by devel/scanprov +GETTARGETSTACKED # Z added by devel/scanprov +getw # Z added by devel/scanprov G_EVAL # T +Gid_t # K added by devel/scanprov GIMME # T +G_KEEPERR # T G_NOARGS # T gp_free # T gp_ref # T +Groups_t # K added by devel/scanprov G_SCALAR # T GV_ADD # T GV_ADDMULTI # T +GV_ADDWARN # T +Gv_AMG # Z added by devel/scanprov +GvASSUMECV # Z added by devel/scanprov +GvASSUMECV_off # Z added by devel/scanprov +GvASSUMECV_on # Z added by devel/scanprov GvAV # T gv_AVadd # T -gv_check # T +GvAVn # Z added by devel/scanprov +gv_check # F added by devel/scanprov GvCV # T +GvCVGEN # Z added by devel/scanprov gv_efullname # T gv_efullname3 # T +GvEGV # Z added by devel/scanprov +GvENAME # Z added by devel/scanprov +GvESTASH # Z added by devel/scanprov +GVf_ASSUMECV # Z added by devel/scanprov gv_fetchfile # T gv_fetchmeth # T gv_fetchmethod # T gv_fetchpv # T +GvFILEGV # Z added by devel/scanprov +GVf_IMPORTED # Z added by devel/scanprov +GVf_IMPORTED_AV # Z added by devel/scanprov +GVf_IMPORTED_CV # Z added by devel/scanprov +GVf_IMPORTED_HV # Z added by devel/scanprov +GVf_IMPORTED_SV # Z added by devel/scanprov +GVf_INTRO # Z added by devel/scanprov +GvFLAGS # Z added by devel/scanprov +GVf_MULTI # Z added by devel/scanprov +GvFORM # Z added by devel/scanprov gv_fullname # T gv_fullname3 # T +GvGP # Z added by devel/scanprov GvHV # T gv_HVadd # T +GvHVn # Z added by devel/scanprov +GvIMPORTED # Z added by devel/scanprov +GvIMPORTED_AV # Z added by devel/scanprov +GvIMPORTED_AV_off # Z added by devel/scanprov +GvIMPORTED_AV_on # Z added by devel/scanprov +GvIMPORTED_CV # Z added by devel/scanprov +GvIMPORTED_CV_off # Z added by devel/scanprov +GvIMPORTED_CV_on # Z added by devel/scanprov +GvIMPORTED_HV # Z added by devel/scanprov +GvIMPORTED_HV_off # Z added by devel/scanprov +GvIMPORTED_HV_on # Z added by devel/scanprov +GvIMPORTED_off # Z added by devel/scanprov +GvIMPORTED_on # Z added by devel/scanprov +GvIMPORTED_SV # Z added by devel/scanprov +GvIMPORTED_SV_off # Z added by devel/scanprov +GvIMPORTED_SV_on # Z added by devel/scanprov gv_init # T +GvINTRO # Z added by devel/scanprov +GvINTRO_off # Z added by devel/scanprov +GvINTRO_on # Z added by devel/scanprov +GvIO # Z added by devel/scanprov gv_IOadd # T +GvIOn # Z added by devel/scanprov +GvIOp # Z added by devel/scanprov +GvLINE # Z added by devel/scanprov +GvMULTI # Z added by devel/scanprov +GvMULTI_off # Z added by devel/scanprov +GvMULTI_on # Z added by devel/scanprov +GvNAME # Z added by devel/scanprov +GvNAMELEN # Z added by devel/scanprov +GvREFCNT # Z added by devel/scanprov +GvSTASH # Z added by devel/scanprov gv_stashpv # T gv_stashpvn # T gv_stashsv # T GvSV # T +GvXPVGV # Z added by devel/scanprov +HAS_ALARM # K added by devel/scanprov +HAS_BOOL # Z added by devel/scanprov +HAS_CHOWN # K added by devel/scanprov +HAS_CHROOT # K added by devel/scanprov +HAS_CRYPT # K added by devel/scanprov +HAS_CUSERID # K added by devel/scanprov +HAS_DIFFTIME # K added by devel/scanprov +HAS_DLERROR # K added by devel/scanprov +HAS_DUP2 # K added by devel/scanprov +HAS_FCHMOD # K added by devel/scanprov +HAS_FCHOWN # K added by devel/scanprov +HAS_FCNTL # K added by devel/scanprov +HAS_FGETPOS # K added by devel/scanprov +HAS_FLOCK # K added by devel/scanprov +HAS_FORK # K added by devel/scanprov +HAS_FPATHCONF # K added by devel/scanprov +HAS_FSETPOS # K added by devel/scanprov +HAS_GETGROUPS # K added by devel/scanprov +HAS_GETHOSTENT # K added by devel/scanprov +HAS_GETLOGIN # K added by devel/scanprov +HAS_GETPGID # K added by devel/scanprov +HAS_GETPGRP # K added by devel/scanprov +HAS_GETPPID # K added by devel/scanprov +HAS_GETPRIORITY # K added by devel/scanprov +HAS_GROUP # Z added by devel/scanprov +HAS_HTONL # K added by devel/scanprov +HAS_HTONS # K added by devel/scanprov +HAS_IOCTL # Z added by devel/scanprov +HAS_ISASCII # K added by devel/scanprov +HAS_KILL # Z added by devel/scanprov +HAS_KILLPG # K added by devel/scanprov +HAS_LINK # K added by devel/scanprov +HAS_LOCALECONV # K added by devel/scanprov +HAS_LOCKF # K added by devel/scanprov +HAS_LSTAT # K added by devel/scanprov +HAS_MBLEN # K added by devel/scanprov +HAS_MBSTOWCS # K added by devel/scanprov +HAS_MBTOWC # K added by devel/scanprov +HAS_MKDIR # K added by devel/scanprov +HAS_MKFIFO # K added by devel/scanprov +HAS_MKTIME # K added by devel/scanprov +HAS_MSG # K added by devel/scanprov +HAS_NICE # K added by devel/scanprov +HAS_NTOHL # K added by devel/scanprov +HAS_NTOHS # K added by devel/scanprov +HAS_OPEN3 # K added by devel/scanprov +HAS_PASSWD # Z added by devel/scanprov +HAS_PATHCONF # K added by devel/scanprov +HAS_PAUSE # K added by devel/scanprov +HAS_PIPE # K added by devel/scanprov +HAS_POLL # K added by devel/scanprov +HAS_QUAD # K added by devel/scanprov +HAS_READDIR # K added by devel/scanprov +HAS_READLINK # K added by devel/scanprov +HAS_RENAME # K added by devel/scanprov +HAS_REWINDDIR # K added by devel/scanprov +HAS_RMDIR # K added by devel/scanprov +HAS_SEEKDIR # K added by devel/scanprov +HAS_SELECT # K added by devel/scanprov +HAS_SEM # K added by devel/scanprov +HAS_SETEGID # K added by devel/scanprov +HAS_SETEUID # K added by devel/scanprov +HAS_SETLINEBUF # K added by devel/scanprov +HAS_SETLOCALE # K added by devel/scanprov +HAS_SETPGID # K added by devel/scanprov +HAS_SETPGRP # K added by devel/scanprov +HAS_SETPRIORITY # K added by devel/scanprov +HAS_SETREGID # K added by devel/scanprov +HAS_SETRESGID # K added by devel/scanprov +HAS_SETRESUID # K added by devel/scanprov +HAS_SETREUID # K added by devel/scanprov +HAS_SETSID # K added by devel/scanprov +HAS_SHM # K added by devel/scanprov +HAS_SHMAT_PROTOTYPE # K added by devel/scanprov +HAS_SIGACTION # K added by devel/scanprov +HAS_SIGSETJMP # K added by devel/scanprov +HAS_SOCKET # K added by devel/scanprov +HAS_SOCKETPAIR # K added by devel/scanprov +HAS_STRCOLL # K added by devel/scanprov +HAS_STRXFRM # K added by devel/scanprov +HAS_SYMLINK # K added by devel/scanprov +HAS_SYSCALL # K added by devel/scanprov +HAS_SYSCONF # K added by devel/scanprov +HAS_SYS_ERRLIST # K added by devel/scanprov +HAS_SYSTEM # K added by devel/scanprov +HAS_TCGETPGRP # K added by devel/scanprov +HAS_TCSETPGRP # K added by devel/scanprov +HAS_TELLDIR # K added by devel/scanprov +HAS_TIMES # K added by devel/scanprov +HAS_TRUNCATE # K added by devel/scanprov +HAS_TZNAME # K added by devel/scanprov +HAS_UMASK # K added by devel/scanprov +HAS_UNAME # K added by devel/scanprov +HAS_UTIME # Z added by devel/scanprov +HAS_WAIT # Z added by devel/scanprov +HAS_WAIT4 # K added by devel/scanprov +HAS_WAITPID # K added by devel/scanprov +HAS_WCSTOMBS # K added by devel/scanprov +HAS_WCTOMB # K added by devel/scanprov HEf_SVKEY # T HeHASH # T HeKEY # T HeKLEN # T +HeNEXT # Z added by devel/scanprov HeSVKEY # T HeSVKEY_force # T HeVAL # T +HINT_BLOCK_SCOPE # Z added by devel/scanprov +HINT_INTEGER # Z added by devel/scanprov +HINT_STRICT_REFS # Z added by devel/scanprov +HINT_STRICT_SUBS # Z added by devel/scanprov +HINT_STRICT_VARS # Z added by devel/scanprov +H_PERL # Z added by devel/scanprov +htoni # Z added by devel/scanprov +htonl # Z added by devel/scanprov +htons # Z added by devel/scanprov +htovl # Z added by devel/scanprov +htovs # Z added by devel/scanprov +HvARRAY # Z added by devel/scanprov hv_clear # T hv_delete # T hv_delete_ent # T +HvEITER # Z added by devel/scanprov hv_exists # T hv_exists_ent # T hv_fetch # T @@ -96,39 +506,422 @@ hv_iternext # T hv_iternextsv # T hv_iterval # T +HvKEYS # Z added by devel/scanprov hv_ksplit # T +HvLAZYDEL # Z added by devel/scanprov +HvLAZYDEL_off # Z added by devel/scanprov +HvLAZYDEL_on # Z added by devel/scanprov hv_magic # T +HvMAX # Z added by devel/scanprov HvNAME # T +HvRITER # Z added by devel/scanprov +HvSHAREKEYS # Z added by devel/scanprov +HvSHAREKEYS_off # Z added by devel/scanprov +HvSHAREKEYS_on # Z added by devel/scanprov hv_store # T hv_store_ent # T hv_undef # T +I16_MAX # Z added by devel/scanprov +I16_MIN # Z added by devel/scanprov +I_32 # Z added by devel/scanprov +I32_MAX # Z added by devel/scanprov +I32_MIN # Z added by devel/scanprov ibcmp # T +I_DIRENT # K added by devel/scanprov +I_DLFCN # K added by devel/scanprov +IFMATCH # Z added by devel/scanprov +I_GRP # K added by devel/scanprov +I_LIMITS # Z added by devel/scanprov +I_LOCALE # K added by devel/scanprov +I_NETINET_IN # K added by devel/scanprov +ingroup # F added by devel/scanprov +INIT # Z added by devel/scanprov instr # T -INTSIZE # T +INTMAX_C # T +INTSIZE # K added by devel/scanprov +intuit_more # F added by devel/scanprov +invert # F added by devel/scanprov +IoBOTTOM_GV # Z added by devel/scanprov +IoBOTTOM_NAME # Z added by devel/scanprov +io_close # F added by devel/scanprov +IOCPARM_LEN # Z added by devel/scanprov +IoDIRP # Z added by devel/scanprov +IOf_ARGV # Z added by devel/scanprov +IOf_DIDTOP # Z added by devel/scanprov +IOf_FLUSH # Z added by devel/scanprov +IoFLAGS # Z added by devel/scanprov +IoFMT_GV # Z added by devel/scanprov +IoFMT_NAME # Z added by devel/scanprov +IOf_START # Z added by devel/scanprov +IOf_UNTAINT # Z added by devel/scanprov +IoIFP # Z added by devel/scanprov +IoLINES # Z added by devel/scanprov +IoLINES_LEFT # Z added by devel/scanprov +IoOFP # Z added by devel/scanprov +IoPAGE # Z added by devel/scanprov +IoPAGE_LEN # Z added by devel/scanprov +IoTOP_GV # Z added by devel/scanprov +IoTOP_NAME # Z added by devel/scanprov +IoTYPE # Z added by devel/scanprov +I_PWD # K added by devel/scanprov isALNUM # T isALPHA # T isDIGIT # T +isGV # Z added by devel/scanprov isIDFIRST # T isLOWER # T isSPACE # T +I_STDARG # Z added by devel/scanprov isUPPER # T +I_SYS_DIR # K added by devel/scanprov +I_SYS_FILE # K added by devel/scanprov +I_SYS_IOCTL # K added by devel/scanprov +I_SYS_PARAM # K added by devel/scanprov +I_SYS_RESOURCE # K added by devel/scanprov +I_SYS_SELECT # K added by devel/scanprov +I_SYS_STAT # K added by devel/scanprov +I_SYS_TIME # K added by devel/scanprov +I_SYS_TIMES # K added by devel/scanprov +I_SYS_TYPES # K added by devel/scanprov +I_SYS_UN # K added by devel/scanprov +I_SYS_WAIT # K added by devel/scanprov +I_TERMIOS # K added by devel/scanprov +I_TIME # K added by devel/scanprov +I_UNISTD # K added by devel/scanprov +I_UTIME # K added by devel/scanprov +I_V # Z added by devel/scanprov +IV_MAX # Z added by devel/scanprov +IV_MIN # Z added by devel/scanprov +jmaybe # F added by devel/scanprov +kBINOP # Z added by devel/scanprov +kCOP # Z added by devel/scanprov +KERNEL # Z added by devel/scanprov +KEY_abs # Z added by devel/scanprov +KEY_accept # Z added by devel/scanprov +KEY_alarm # Z added by devel/scanprov +KEY_and # Z added by devel/scanprov +KEY_atan2 # Z added by devel/scanprov +KEY_AUTOLOAD # Z added by devel/scanprov +KEY_BEGIN # Z added by devel/scanprov +KEY_bind # Z added by devel/scanprov +KEY_binmode # Z added by devel/scanprov +KEY_bless # Z added by devel/scanprov +KEY_caller # Z added by devel/scanprov +KEY_chdir # Z added by devel/scanprov +KEY_chmod # Z added by devel/scanprov +KEY_chomp # Z added by devel/scanprov +KEY_chop # Z added by devel/scanprov +KEY_chown # Z added by devel/scanprov +KEY_chr # Z added by devel/scanprov +KEY_chroot # Z added by devel/scanprov +KEY_close # Z added by devel/scanprov +KEY_closedir # Z added by devel/scanprov +KEY_cmp # Z added by devel/scanprov +KEY_connect # Z added by devel/scanprov +KEY_continue # Z added by devel/scanprov +KEY_cos # Z added by devel/scanprov +KEY_crypt # Z added by devel/scanprov +KEY___DATA # Z added by devel/scanprov +KEY_dbmclose # Z added by devel/scanprov +KEY_dbmopen # Z added by devel/scanprov +KEY_defined # Z added by devel/scanprov +KEY_delete # Z added by devel/scanprov +KEY_DESTROY # Z added by devel/scanprov +KEY_die # Z added by devel/scanprov +KEY_do # Z added by devel/scanprov +KEY_dump # Z added by devel/scanprov +KEY_each # Z added by devel/scanprov +KEY_else # Z added by devel/scanprov +KEY_elsif # Z added by devel/scanprov +KEY___END # Z added by devel/scanprov +KEY_END # Z added by devel/scanprov +KEY_endgrent # Z added by devel/scanprov +KEY_endhostent # Z added by devel/scanprov +KEY_endnetent # Z added by devel/scanprov +KEY_endprotoent # Z added by devel/scanprov +KEY_endpwent # Z added by devel/scanprov +KEY_endservent # Z added by devel/scanprov +KEY_eof # Z added by devel/scanprov +KEY_eq # Z added by devel/scanprov +KEY_eval # Z added by devel/scanprov +KEY_exec # Z added by devel/scanprov +KEY_exists # Z added by devel/scanprov +KEY_exit # Z added by devel/scanprov +KEY_exp # Z added by devel/scanprov +KEY_fcntl # Z added by devel/scanprov +KEY___FILE # Z added by devel/scanprov +KEY_fileno # Z added by devel/scanprov +KEY_flock # Z added by devel/scanprov +KEY_for # Z added by devel/scanprov +KEY_foreach # Z added by devel/scanprov +KEY_fork # Z added by devel/scanprov +KEY_format # Z added by devel/scanprov +KEY_formline # Z added by devel/scanprov +KEY_ge # Z added by devel/scanprov +KEY_getc # Z added by devel/scanprov +KEY_getgrent # Z added by devel/scanprov +KEY_getgrgid # Z added by devel/scanprov +KEY_getgrnam # Z added by devel/scanprov +KEY_gethostbyaddr # Z added by devel/scanprov +KEY_gethostbyname # Z added by devel/scanprov +KEY_gethostent # Z added by devel/scanprov +KEY_getlogin # Z added by devel/scanprov +KEY_getnetbyaddr # Z added by devel/scanprov +KEY_getnetbyname # Z added by devel/scanprov +KEY_getnetent # Z added by devel/scanprov +KEY_getpeername # Z added by devel/scanprov +KEY_getpgrp # Z added by devel/scanprov +KEY_getppid # Z added by devel/scanprov +KEY_getpriority # Z added by devel/scanprov +KEY_getprotobyname # Z added by devel/scanprov +KEY_getprotobynumber # Z added by devel/scanprov +KEY_getprotoent # Z added by devel/scanprov +KEY_getpwent # Z added by devel/scanprov +KEY_getpwnam # Z added by devel/scanprov +KEY_getpwuid # Z added by devel/scanprov +KEY_getservbyname # Z added by devel/scanprov +KEY_getservbyport # Z added by devel/scanprov +KEY_getservent # Z added by devel/scanprov +KEY_getsockname # Z added by devel/scanprov +KEY_getsockopt # Z added by devel/scanprov +KEY_glob # Z added by devel/scanprov +KEY_gmtime # Z added by devel/scanprov +KEY_goto # Z added by devel/scanprov +KEY_grep # Z added by devel/scanprov +KEY_gt # Z added by devel/scanprov +KEY_hex # Z added by devel/scanprov +KEY_if # Z added by devel/scanprov +KEY_index # Z added by devel/scanprov +KEY_int # Z added by devel/scanprov +KEY_ioctl # Z added by devel/scanprov +KEY_join # Z added by devel/scanprov +KEY_keys # Z added by devel/scanprov +KEY_kill # Z added by devel/scanprov +KEY_last # Z added by devel/scanprov +KEY_lc # Z added by devel/scanprov +KEY_lcfirst # Z added by devel/scanprov +KEY_le # Z added by devel/scanprov +KEY_length # Z added by devel/scanprov +KEY___LINE # Z added by devel/scanprov +KEY_link # Z added by devel/scanprov +KEY_listen # Z added by devel/scanprov +KEY_local # Z added by devel/scanprov +KEY_localtime # Z added by devel/scanprov +KEY_log # Z added by devel/scanprov +KEY_lstat # Z added by devel/scanprov +KEY_lt # Z added by devel/scanprov +KEY_m # Z added by devel/scanprov +KEY_map # Z added by devel/scanprov +KEY_mkdir # Z added by devel/scanprov +KEY_msgctl # Z added by devel/scanprov +KEY_msgget # Z added by devel/scanprov +KEY_msgrcv # Z added by devel/scanprov +KEY_msgsnd # Z added by devel/scanprov +KEY_my # Z added by devel/scanprov +KEY_ne # Z added by devel/scanprov +KEY_next # Z added by devel/scanprov +KEY_no # Z added by devel/scanprov +KEY_not # Z added by devel/scanprov +KEY_NULL # Z added by devel/scanprov +KEY_oct # Z added by devel/scanprov +KEY_open # Z added by devel/scanprov +KEY_opendir # Z added by devel/scanprov +KEY_or # Z added by devel/scanprov +KEY_ord # Z added by devel/scanprov +KEY_pack # Z added by devel/scanprov +KEY_package # Z added by devel/scanprov +KEY_pipe # Z added by devel/scanprov +KEY_pop # Z added by devel/scanprov +KEY_pos # Z added by devel/scanprov +KEY_print # Z added by devel/scanprov +KEY_printf # Z added by devel/scanprov +KEY_prototype # Z added by devel/scanprov +KEY_push # Z added by devel/scanprov +KEY_q # Z added by devel/scanprov +KEY_qq # Z added by devel/scanprov +KEY_quotemeta # Z added by devel/scanprov +KEY_qw # Z added by devel/scanprov +KEY_qx # Z added by devel/scanprov +KEY_rand # Z added by devel/scanprov +KEY_read # Z added by devel/scanprov +KEY_readdir # Z added by devel/scanprov +KEY_readline # Z added by devel/scanprov +KEY_readlink # Z added by devel/scanprov +KEY_readpipe # Z added by devel/scanprov +KEY_recv # Z added by devel/scanprov +KEY_redo # Z added by devel/scanprov +KEY_ref # Z added by devel/scanprov +KEY_rename # Z added by devel/scanprov +KEY_require # Z added by devel/scanprov +KEY_reset # Z added by devel/scanprov +KEY_return # Z added by devel/scanprov +KEY_reverse # Z added by devel/scanprov +KEY_rewinddir # Z added by devel/scanprov +KEY_rindex # Z added by devel/scanprov +KEY_rmdir # Z added by devel/scanprov +KEY_s # Z added by devel/scanprov +KEY_scalar # Z added by devel/scanprov +KEY_seek # Z added by devel/scanprov +KEY_seekdir # Z added by devel/scanprov +KEY_select # Z added by devel/scanprov +KEY_semctl # Z added by devel/scanprov +KEY_semget # Z added by devel/scanprov +KEY_semop # Z added by devel/scanprov +KEY_send # Z added by devel/scanprov +KEY_setgrent # Z added by devel/scanprov +KEY_sethostent # Z added by devel/scanprov +KEY_setnetent # Z added by devel/scanprov +KEY_setpgrp # Z added by devel/scanprov +KEY_setpriority # Z added by devel/scanprov +KEY_setprotoent # Z added by devel/scanprov +KEY_setpwent # Z added by devel/scanprov +KEY_setservent # Z added by devel/scanprov +KEY_setsockopt # Z added by devel/scanprov +KEY_shift # Z added by devel/scanprov +KEY_shmctl # Z added by devel/scanprov +KEY_shmget # Z added by devel/scanprov +KEY_shmread # Z added by devel/scanprov +KEY_shmwrite # Z added by devel/scanprov +KEY_shutdown # Z added by devel/scanprov +KEY_sin # Z added by devel/scanprov +KEY_sleep # Z added by devel/scanprov +KEY_socket # Z added by devel/scanprov +KEY_socketpair # Z added by devel/scanprov +KEY_sort # Z added by devel/scanprov +KEY_splice # Z added by devel/scanprov +KEY_split # Z added by devel/scanprov +KEY_sprintf # Z added by devel/scanprov +KEY_sqrt # Z added by devel/scanprov +KEY_srand # Z added by devel/scanprov +KEY_stat # Z added by devel/scanprov +KEY_study # Z added by devel/scanprov +KEY_sub # Z added by devel/scanprov +KEY_substr # Z added by devel/scanprov +KEY_symlink # Z added by devel/scanprov +KEY_syscall # Z added by devel/scanprov +KEY_sysopen # Z added by devel/scanprov +KEY_sysread # Z added by devel/scanprov +KEY_system # Z added by devel/scanprov +KEY_syswrite # Z added by devel/scanprov +KEY_tell # Z added by devel/scanprov +KEY_telldir # Z added by devel/scanprov +KEY_tie # Z added by devel/scanprov +KEY_tied # Z added by devel/scanprov +KEY_time # Z added by devel/scanprov +KEY_times # Z added by devel/scanprov +KEY_tr # Z added by devel/scanprov +KEY_truncate # Z added by devel/scanprov +KEY_uc # Z added by devel/scanprov +KEY_ucfirst # Z added by devel/scanprov +KEY_umask # Z added by devel/scanprov +KEY_undef # Z added by devel/scanprov +KEY_unless # Z added by devel/scanprov +KEY_unlink # Z added by devel/scanprov +KEY_unpack # Z added by devel/scanprov +KEY_unshift # Z added by devel/scanprov +KEY_untie # Z added by devel/scanprov +KEY_until # Z added by devel/scanprov +KEY_use # Z added by devel/scanprov +KEY_utime # Z added by devel/scanprov +KEY_values # Z added by devel/scanprov +KEY_vec # Z added by devel/scanprov +KEY_wait # Z added by devel/scanprov +KEY_waitpid # Z added by devel/scanprov +KEY_wantarray # Z added by devel/scanprov +KEY_warn # Z added by devel/scanprov +KEY_while # Z added by devel/scanprov +keyword # F added by devel/scanprov +KEY_write # Z added by devel/scanprov +KEY_x # Z added by devel/scanprov +KEY_xor # Z added by devel/scanprov +KEY_y # Z added by devel/scanprov +kLISTOP # Z added by devel/scanprov +kLOGOP # Z added by devel/scanprov +kLOOP # Z added by devel/scanprov +kPMOP # Z added by devel/scanprov +kPVOP # Z added by devel/scanprov +kSVOP # Z added by devel/scanprov +kUNOP # Z added by devel/scanprov LEAVE # T +LEAVE_SCOPE # Z added by devel/scanprov leave_scope # T +list # F added by devel/scanprov +listkids # F added by devel/scanprov +localize # F added by devel/scanprov +LOCAL_PATCH_COUNT # Z added by devel/scanprov +LOC_SED # K added by devel/scanprov looks_like_number # T +LvTARG # Z added by devel/scanprov +LvTARGLEN # Z added by devel/scanprov +LvTARGOFF # Z added by devel/scanprov +LvTYPE # Z added by devel/scanprov +magic_clearenv # F added by devel/scanprov +magic_clearpack # F added by devel/scanprov +magic_clearsig # F added by devel/scanprov +magic_existspack # F added by devel/scanprov +magic_get # F added by devel/scanprov +magic_getarylen # F added by devel/scanprov +magic_getpack # F added by devel/scanprov +magic_getpos # F added by devel/scanprov +magic_getsig # F added by devel/scanprov +magic_gettaint # F added by devel/scanprov +magic_getuvar # F added by devel/scanprov +magic_nextpack # F added by devel/scanprov +magic_set # F added by devel/scanprov +magic_setarylen # F added by devel/scanprov +magic_setdbline # F added by devel/scanprov +magic_setenv # F added by devel/scanprov +magic_setisa # F added by devel/scanprov +magic_setmglob # F added by devel/scanprov +magic_setnkeys # F added by devel/scanprov +magic_setpack # F added by devel/scanprov +magic_setpos # F added by devel/scanprov +magic_setsig # F added by devel/scanprov +magic_setsubstr # F added by devel/scanprov +magic_settaint # F added by devel/scanprov +magic_setuvar # F added by devel/scanprov +magic_setvec # F added by devel/scanprov +magic_wipepack # F added by devel/scanprov +Malloc_t # K added by devel/scanprov MARK # T +MAXARG # Z added by devel/scanprov +MAXO # Z added by devel/scanprov +MAXSYSFD # Z added by devel/scanprov +MBOL # Z added by devel/scanprov +MEM_ALIGNBYTES # K added by devel/scanprov +mem_collxfrm # F added by devel/scanprov +MEM_SIZE # Z added by devel/scanprov +memzero # Z added by devel/scanprov +MEOL # Z added by devel/scanprov +MEXTEND # Z added by devel/scanprov mg_clear # T mg_copy # T +MGf_GSKIP # Z added by devel/scanprov mg_find # T +MGf_MINMATCH # Z added by devel/scanprov mg_free # T +MGf_REFCOUNTED # Z added by devel/scanprov +MGf_TAINTEDDIR # Z added by devel/scanprov mg_get # T mg_magical # T +MgPV # Z added by devel/scanprov mg_set # T -moreswitches # T +MgTAINTEDDIR # Z added by devel/scanprov +MgTAINTEDDIR_on # Z added by devel/scanprov +MINMOD # Z added by devel/scanprov +Mode_t # K added by devel/scanprov +modkids # F added by devel/scanprov +moreswitches # F added by devel/scanprov Move # T +MSPAGAIN # Z added by devel/scanprov +my_chsize # F added by devel/scanprov my_exit # T my_pclose # T my_popen # T my_setenv # T +my_unexec # F added by devel/scanprov +NBOUND # Z added by devel/scanprov +New # Z added by devel/scanprov newANONHASH # T newANONLIST # T newANONSUB # T @@ -136,6 +929,7 @@ newAV # T newAVREF # T newBINOP # T +Newc # Z added by devel/scanprov newCONDOP # T newCVREF # T newFORM # T @@ -159,6 +953,7 @@ newSLICEOP # T newSTATEOP # T newSUB # T +NEWSV # Z added by devel/scanprov newSV # T newSViv # T newSVOP # T @@ -167,24 +962,98 @@ newSVrv # T newSVsv # T newUNOP # T +Newz # Z added by devel/scanprov +nextargv # F added by devel/scanprov +NEXTOPER # Z added by devel/scanprov ninstr # T +NofAMmeth # Z added by devel/scanprov +no_fh_allowed # F added by devel/scanprov +NOLINE # Z added by devel/scanprov +no_op # F added by devel/scanprov +NORMAL # Z added by devel/scanprov +NOTHING # Z added by devel/scanprov +ntohi # Z added by devel/scanprov +ntohl # Z added by devel/scanprov +ntohs # Z added by devel/scanprov +Null # Z added by devel/scanprov Nullav # T Nullch # T Nullcv # T +Nullfp # Z added by devel/scanprov +Nullgv # Z added by devel/scanprov +Nullhe # Z added by devel/scanprov Nullhv # T +Nullop # Z added by devel/scanprov Nullsv # T +OA_AVREF # Z added by devel/scanprov +OA_CVREF # Z added by devel/scanprov +OA_DANGEROUS # Z added by devel/scanprov +OA_DEFGV # Z added by devel/scanprov +OA_FILEREF # Z added by devel/scanprov +OA_FOLDCONST # Z added by devel/scanprov +OA_HVREF # Z added by devel/scanprov +OA_LIST # Z added by devel/scanprov +OA_MARK # Z added by devel/scanprov +OA_OPTIONAL # Z added by devel/scanprov +OA_OTHERINT # Z added by devel/scanprov +OA_RETSCALAR # Z added by devel/scanprov +OA_SCALAR # Z added by devel/scanprov +OA_SCALARREF # Z added by devel/scanprov +OASHIFT # Z added by devel/scanprov +OA_TARGET # Z added by devel/scanprov +Off_t # K added by devel/scanprov +oopsAV # F added by devel/scanprov +oopsHV # F added by devel/scanprov +OP # Z added by devel/scanprov +opASSIGN # Z added by devel/scanprov +OPCODE # Z added by devel/scanprov +OPEN # Z added by devel/scanprov +OPERAND # Z added by devel/scanprov OPf_KIDS # T +OPf_KNOW # Z added by devel/scanprov +OPf_LIST # Z added by devel/scanprov +OPf_MOD # Z added by devel/scanprov +OPf_PARENS # Z added by devel/scanprov op_free # T +OPf_REF # Z added by devel/scanprov +OPf_SPECIAL # Z added by devel/scanprov +OPf_STACKED # Z added by devel/scanprov +OPpASSIGN_BACKWARDS # Z added by devel/scanprov +OPpCONST_BARE # Z added by devel/scanprov +OPpCONST_ENTERED # Z added by devel/scanprov +OPpDEREF_AV # Z added by devel/scanprov +OPpDEREF_HV # Z added by devel/scanprov OPpENTERSUB_AMPER # T +OPpENTERSUB_DB # Z added by devel/scanprov +OPpFLIP_LINENUM # Z added by devel/scanprov +OPpLIST_GUESSED # Z added by devel/scanprov +OPpLVAL_INTRO # Z added by devel/scanprov +OPpREPEAT_DOLIST # Z added by devel/scanprov +OPpTRANS_COMPLEMENT # Z added by devel/scanprov +OPpTRANS_DELETE # Z added by devel/scanprov +OPpTRANS_SQUASH # Z added by devel/scanprov ORIGMARK # T -OSNAME # T +OSNAME # K added by devel/scanprov +package # F added by devel/scanprov pad_alloc # T +pad_free # F added by devel/scanprov +pad_leavemy # F added by devel/scanprov +pad_reset # F added by devel/scanprov +PAD_SV # Z added by devel/scanprov +pad_sv # F added by devel/scanprov +pad_swipe # F added by devel/scanprov +PATCHLEVEL # Z added by devel/scanprov +Pause # Z added by devel/scanprov +pclose # Z added by devel/scanprov +peep # F added by devel/scanprov perl_alloc # T perl_construct # T +Perl_debug_log # Z added by devel/scanprov perl_free # T PERL_HASH # T PERL_INT_MAX # T PERL_INT_MIN # T +PerlIO # Z added by devel/scanprov PerlIO_canset_cnt # T PerlIO_exportFILE # T PerlIO_fast_gets # T @@ -195,6 +1064,7 @@ PerlIO_has_base # T PerlIO_has_cntptr # T PerlIO_importFILE # T +PERLIO_NOT_STDIO # Z added by devel/scanprov PerlIO_open # T PerlIO_putc # T PerlIO_puts # T @@ -216,93 +1086,308 @@ PERL_UCHAR_MAX # T PERL_UCHAR_MIN # T PERL_UINT_MAX # T +PERL_UINT_MIN # T PERL_ULONG_MAX # T PERL_ULONG_MIN # T PERL_UQUAD_MAX # T PERL_UQUAD_MIN # T PERL_USHORT_MAX # T PERL_USHORT_MIN # T +pidgone # F added by devel/scanprov +PLUS # Z added by devel/scanprov +PMf_CONST # Z added by devel/scanprov +PMf_EVAL # Z added by devel/scanprov +PMf_EXTENDED # Z added by devel/scanprov +PMf_FOLD # Z added by devel/scanprov +PMf_GLOBAL # Z added by devel/scanprov +PMf_KEEP # Z added by devel/scanprov +PMf_MULTILINE # Z added by devel/scanprov +PMf_ONCE # Z added by devel/scanprov +PMf_SINGLELINE # Z added by devel/scanprov +pmruntime # F added by devel/scanprov +pmtrans # F added by devel/scanprov +popen # Z added by devel/scanprov POPi # T POPl # T +POPMARK # Z added by devel/scanprov POPp # T POPs # T pop_scope # T +PP # Z added by devel/scanprov pregexec # T pregfree # T -PRIVLIB # T +PREVOPER # Z added by devel/scanprov +printf # Z added by devel/scanprov +PRIVLIB # K added by devel/scanprov +PRIVLIB_EXP # K added by devel/scanprov +PRIVSHIFT # Z added by devel/scanprov PUSHi # T PUSHMARK # T PUSHp # T PUSHs # T push_scope # T +PUSHTARG # Z added by devel/scanprov PUTBACK # T -RANDBITS # T +putc # Z added by devel/scanprov +putc_unlocked # Z added by devel/scanprov +putw # Z added by devel/scanprov +Quad_t # K added by devel/scanprov +RANDBITS # K added by devel/scanprov +RD_NODATA # K added by devel/scanprov +REF # Z added by devel/scanprov +refkids # F added by devel/scanprov +regdump # F added by devel/scanprov +register # Z added by devel/scanprov +regnext # F added by devel/scanprov +regprop # F added by devel/scanprov Renew # T Renewc # T repeatcpy # T +RETPUSHNO # Z added by devel/scanprov +RETPUSHUNDEF # Z added by devel/scanprov +RETPUSHYES # Z added by devel/scanprov +RETSETNO # Z added by devel/scanprov +RETSETUNDEF # Z added by devel/scanprov +RETSETYES # Z added by devel/scanprov +RETURN # Z added by devel/scanprov +RETURNOP # Z added by devel/scanprov +RETURNX # Z added by devel/scanprov +RETVAL # X added by devel/scanprov +rewind # Z added by devel/scanprov rninstr # T +RsPARA # Z added by devel/scanprov +RsSIMPLE # Z added by devel/scanprov +RsSNARF # Z added by devel/scanprov +safecalloc # Z added by devel/scanprov Safefree # T +safefree # Z added by devel/scanprov +safemalloc # Z added by devel/scanprov +saferealloc # Z added by devel/scanprov +same_dirent # F added by devel/scanprov +SANY # Z added by devel/scanprov save_aptr # T save_ary # T -save_clearsv # T -save_delete # T -save_freepv # T -save_freesv # T +save_clearsv # F added by devel/scanprov +SAVECLEARSV # Z added by devel/scanprov +save_delete # F added by devel/scanprov +SAVEDELETE # T +save_destructor # F added by devel/scanprov +SAVEFREEPV # T +SAVEFREESV # T save_hash # T save_hptr # T -save_I32 # T -save_int # T +save_I32 # F added by devel/scanprov +SAVEI32 # T +save_int # F added by devel/scanprov +SAVEINT # T save_item # T +SAVEIV # T save_list # T -save_long # T +save_long # F added by devel/scanprov +SAVELONG # T save_nogv # T -save_pptr # T +save_pptr # F added by devel/scanprov +SAVEPPTR # T savepv # T savepvn # T save_scalar # T -save_sptr # T +save_sptr # F added by devel/scanprov +SAVESPTR # T savestack_grow # T save_svref # T +SAVEt_APTR # Z added by devel/scanprov +SAVEt_AV # Z added by devel/scanprov +SAVEt_CLEARSV # Z added by devel/scanprov +SAVEt_DELETE # Z added by devel/scanprov +SAVEt_DESTRUCTOR # Z added by devel/scanprov +SAVEt_FREEOP # Z added by devel/scanprov +SAVEt_FREEPV # Z added by devel/scanprov +SAVEt_FREESV # Z added by devel/scanprov +SAVEt_GP # Z added by devel/scanprov +SAVEt_HPTR # Z added by devel/scanprov +SAVEt_HV # Z added by devel/scanprov +SAVEt_I32 # Z added by devel/scanprov +SAVEt_INT # Z added by devel/scanprov +SAVEt_ITEM # Z added by devel/scanprov +SAVEt_IV # Z added by devel/scanprov +SAVEt_LONG # Z added by devel/scanprov SAVETMPS # T +SAVEt_NSTAB # Z added by devel/scanprov +SAVEt_PPTR # Z added by devel/scanprov +SAVEt_REGCONTEXT # Z added by devel/scanprov +SAVEt_SPTR # Z added by devel/scanprov +SAVEt_SV # Z added by devel/scanprov +SAVEt_SVREF # Z added by devel/scanprov +sawparens # F added by devel/scanprov +sb_dstr # Z added by devel/scanprov +sb_iters # Z added by devel/scanprov +sb_m # Z added by devel/scanprov +sb_maxiters # Z added by devel/scanprov +SBOL # Z added by devel/scanprov +sb_orig # Z added by devel/scanprov +sb_rx # Z added by devel/scanprov +sb_s # Z added by devel/scanprov +sb_strend # Z added by devel/scanprov +sb_targ # Z added by devel/scanprov +scalar # F added by devel/scanprov +scalarkids # F added by devel/scanprov +scalarseq # F added by devel/scanprov +scalarvoid # F added by devel/scanprov +scan_const # F added by devel/scanprov +SCAN_DEF # Z added by devel/scanprov +scan_formline # F added by devel/scanprov +scan_heredoc # F added by devel/scanprov +scan_ident # F added by devel/scanprov +scan_inputsymbol # F added by devel/scanprov +scan_num # F added by devel/scanprov +scan_pat # F added by devel/scanprov +SCAN_REPL # Z added by devel/scanprov +scan_str # F added by devel/scanprov +scan_subst # F added by devel/scanprov +SCAN_TR # Z added by devel/scanprov +scan_trans # F added by devel/scanprov +scan_word # F added by devel/scanprov +SEEK_CUR # Z added by devel/scanprov +SEEK_END # Z added by devel/scanprov +SEEK_SET # Z added by devel/scanprov +Select_fd_set_t # K added by devel/scanprov +SEOL # Z added by devel/scanprov +setbuf # Z added by devel/scanprov setdefout # T -SITELIB # T +SETERRNO # Z added by devel/scanprov +SETi # Z added by devel/scanprov +SETn # Z added by devel/scanprov +SETp # Z added by devel/scanprov +setregid # Z added by devel/scanprov +setreuid # Z added by devel/scanprov +SETs # Z added by devel/scanprov +SETTARG # Z added by devel/scanprov +setvbuf # Z added by devel/scanprov +Shmat_t # K added by devel/scanprov +SH_PATH # K added by devel/scanprov +S_IFMT # Z added by devel/scanprov +SIGABRT # Z added by devel/scanprov +sighandler # F added by devel/scanprov +SIGILL # Z added by devel/scanprov +Sigjmp_buf # K added by devel/scanprov +Siglongjmp # K added by devel/scanprov +Signal_t # K added by devel/scanprov +SIG_NAME # K added by devel/scanprov +SIG_NUM # K added by devel/scanprov +Sigsetjmp # K added by devel/scanprov +S_IRGRP # Z added by devel/scanprov +S_IROTH # Z added by devel/scanprov +S_IRUSR # Z added by devel/scanprov +S_ISBLK # Z added by devel/scanprov +S_ISCHR # Z added by devel/scanprov +S_ISDIR # Z added by devel/scanprov +S_ISFIFO # Z added by devel/scanprov +S_ISGID # Z added by devel/scanprov +S_ISLNK # Z added by devel/scanprov +S_ISREG # Z added by devel/scanprov +S_ISSOCK # Z added by devel/scanprov +S_ISUID # Z added by devel/scanprov +SITEARCH # K added by devel/scanprov +SITEARCH_EXP # K added by devel/scanprov +SITELIB # K added by devel/scanprov +SITELIB_EXP # K added by devel/scanprov +S_IWGRP # Z added by devel/scanprov +S_IWOTH # Z added by devel/scanprov +S_IWUSR # Z added by devel/scanprov +S_IXGRP # Z added by devel/scanprov +S_IXOTH # Z added by devel/scanprov +S_IXUSR # Z added by devel/scanprov +Size_t # K added by devel/scanprov +SLOPPYDIVIDE # Z added by devel/scanprov SP # T SPAGAIN # T +SSCHECK # Z added by devel/scanprov +SSize_t # K added by devel/scanprov +SSPOPDPTR # Z added by devel/scanprov +SSPOPINT # Z added by devel/scanprov +SSPOPIV # Z added by devel/scanprov +SSPOPLONG # Z added by devel/scanprov +SSPOPPTR # Z added by devel/scanprov +SSPUSHDPTR # Z added by devel/scanprov +SSPUSHINT # Z added by devel/scanprov +SSPUSHIV # Z added by devel/scanprov +SSPUSHLONG # Z added by devel/scanprov +SSPUSHPTR # Z added by devel/scanprov ST # T -stack_grow # T -STARTPERL # T -STDCHAR # T +stack_grow # F added by devel/scanprov +STANDARD_C # Z added by devel/scanprov +STAR # Z added by devel/scanprov +STARTPERL # K added by devel/scanprov +Stat # Z added by devel/scanprov +STDCHAR # K added by devel/scanprov +stderr # Z added by devel/scanprov +stdin # Z added by devel/scanprov +stdout # Z added by devel/scanprov +STMT_END # M added by devel/scanprov +STMT_START # M added by devel/scanprov strEQ # T +Strerror # Z added by devel/scanprov strGE # T strGT # T +STRINGIFY # K added by devel/scanprov strLE # T strLT # T strNE # T strnEQ # T strnNE # T -sv_2bool # T +StructCopy # M added by devel/scanprov +SUBVERSION # Z added by devel/scanprov +SUCCEED # Z added by devel/scanprov sv_2cv # T sv_2io # T -sv_2iv # T sv_2mortal # T -sv_2pv # T +sv_add_arena # F added by devel/scanprov +SvAMAGIC # Z added by devel/scanprov +SvANY # Z added by devel/scanprov sv_backoff # T sv_bless # T sv_catpv # T sv_catpvn # T sv_catsv # T sv_chop # T +sv_clean_all # F added by devel/scanprov +sv_clean_objs # F added by devel/scanprov sv_clear # T sv_cmp # T +SvCOMPILED # Z added by devel/scanprov +SvCOMPILED_off # Z added by devel/scanprov +SvCOMPILED_on # Z added by devel/scanprov SvCUR # T SvCUR_set # T sv_dec # T sv_dump # T SvEND # T +SvEND_set # Z added by devel/scanprov +SvENDx # Z added by devel/scanprov sv_eq # T +SvFAKE # Z added by devel/scanprov +SvFAKE_off # Z added by devel/scanprov +SvFAKE_on # Z added by devel/scanprov +SVf_AMAGIC # Z added by devel/scanprov +SVf_BREAK # Z added by devel/scanprov +SVf_FAKE # Z added by devel/scanprov +SVf_IOK # Z added by devel/scanprov +SvFLAGS # Z added by devel/scanprov +SVf_NOK # Z added by devel/scanprov +SVf_OK # Z added by devel/scanprov +SVf_OOK # Z added by devel/scanprov +SVf_POK # Z added by devel/scanprov +SVf_READONLY # Z added by devel/scanprov sv_free # T +sv_free_arenas # F added by devel/scanprov +SVf_ROK # Z added by devel/scanprov +SVf_THINKFIRST # Z added by devel/scanprov sv_gets # T -sv_grow # T +SvGMAGICAL # Z added by devel/scanprov +SvGMAGICAL_off # Z added by devel/scanprov +SvGMAGICAL_on # Z added by devel/scanprov +Sv_Grow # Z added by devel/scanprov +sv_grow # F added by devel/scanprov SvGROW # T sv_inc # T sv_insert # T @@ -311,19 +1396,26 @@ SvIOK_on # T SvIOK_only # T SvIOKp # T +SvIOKp_on # Z added by devel/scanprov sv_isa # T sv_isobject # T SvIV # T SvIV_set # T SvIVX # T SvIVx # T +SvIVXx # Z added by devel/scanprov sv_len # T SvLEN # T SvLEN_set # T +SvLENx # Z added by devel/scanprov sv_magic # T +SvMAGIC # Z added by devel/scanprov +SvMAGICAL # Z added by devel/scanprov +SvMAGICAL_off # Z added by devel/scanprov +SvMAGICAL_on # Z added by devel/scanprov sv_mortalcopy # T sv_newmortal # T -sv_newref # T +sv_newref # F added by devel/scanprov SvNIOK # T SvNIOK_off # T SvNIOKp # T @@ -332,19 +1424,42 @@ SvNOK_on # T SvNOK_only # T SvNOKp # T +SvNOKp_on # Z added by devel/scanprov +SvNVXx # Z added by devel/scanprov +SvOBJECT # Z added by devel/scanprov +SvOBJECT_off # Z added by devel/scanprov +SvOBJECT_on # Z added by devel/scanprov SvOK # T +SvOK_off # Z added by devel/scanprov +SvOKp # Z added by devel/scanprov SvOOK # T +SvOOK_off # T +SvOOK_on # Z added by devel/scanprov +SvPADMY # Z added by devel/scanprov +SvPADMY_on # Z added by devel/scanprov +SvPADTMP # Z added by devel/scanprov +SvPADTMP_off # Z added by devel/scanprov +SvPADTMP_on # Z added by devel/scanprov +SvPEEK # Z added by devel/scanprov +SVphv_LAZYDEL # Z added by devel/scanprov +SVphv_SHAREKEYS # Z added by devel/scanprov +SVp_IOK # Z added by devel/scanprov +SVp_NOK # Z added by devel/scanprov SvPOK # T SvPOK_off # T SvPOK_on # T SvPOK_only # T SvPOKp # T +SvPOKp_on # Z added by devel/scanprov +SVp_POK # Z added by devel/scanprov +SVp_SCREAM # Z added by devel/scanprov SvPV # T SvPV_force # T -sv_pvn_force # T SvPV_set # T SvPVX # T SvPVx # T +SvPVx_force # Z added by devel/scanprov +SvPVXx # Z added by devel/scanprov SvREADONLY # T SvREADONLY_off # T SvREADONLY_on # T @@ -355,10 +1470,17 @@ sv_replace # T sv_report_used # T sv_reset # T +SvRMAGICAL # Z added by devel/scanprov +SvRMAGICAL_off # Z added by devel/scanprov +SvRMAGICAL_on # Z added by devel/scanprov SvROK # T SvROK_off # T SvROK_on # T SvRV # T +SvRVx # Z added by devel/scanprov +SvSCREAM # Z added by devel/scanprov +SvSCREAM_off # Z added by devel/scanprov +SvSCREAM_on # Z added by devel/scanprov sv_setiv # T SvSETMAGIC # T sv_setpv # T @@ -368,9 +1490,23 @@ sv_setref_pvn # T sv_setsv # T SvSetSV # T +SVs_GMG # Z added by devel/scanprov +SvSMAGICAL # Z added by devel/scanprov +SvSMAGICAL_off # Z added by devel/scanprov +SvSMAGICAL_on # Z added by devel/scanprov +SVs_OBJECT # Z added by devel/scanprov +SVs_PADMY # Z added by devel/scanprov +SVs_PADTMP # Z added by devel/scanprov +SVs_RMG # Z added by devel/scanprov +SVs_SMG # Z added by devel/scanprov SvSTASH # T SVs_TEMP # T +SvTAIL # Z added by devel/scanprov SvTAINT # T +SvTEMP # Z added by devel/scanprov +SvTEMP_off # Z added by devel/scanprov +SvTEMP_on # Z added by devel/scanprov +SvTHINKFIRST # Z added by devel/scanprov SVt_IV # T SVt_NULL # T SVt_NV # T @@ -388,20 +1524,74 @@ SvTRUE # T SvTRUEx # T SvTYPE # T +SVTYPEMASK # Z added by devel/scanprov sv_unmagic # T sv_unref # T sv_upgrade # T SvUPGRADE # T sv_usepvn # T -taint_env # T -taint_proper # T +SvVALID # Z added by devel/scanprov +SWITCHSTACK # Z added by devel/scanprov +TAINT_ENV # Z added by devel/scanprov +taint_env # F added by devel/scanprov +TAINT_IF # Z added by devel/scanprov +TAINT_NOT # Z added by devel/scanprov +TAINT_PROPER # Z added by devel/scanprov +taint_proper # F added by devel/scanprov +TARG # T +THIS # X added by devel/scanprov +Time_t # K added by devel/scanprov +tmpfile # Z added by devel/scanprov toLOWER # T +TOPi # Z added by devel/scanprov +TOPl # Z added by devel/scanprov +TOPMARK # Z added by devel/scanprov +TOPn # Z added by devel/scanprov +TOPp # Z added by devel/scanprov +TOPs # Z added by devel/scanprov toUPPER # T +TRUE # Z added by devel/scanprov +U16_MAX # Z added by devel/scanprov +U16_MIN # Z added by devel/scanprov +U32_MAX # Z added by devel/scanprov +U32_MIN # Z added by devel/scanprov +U8_MAX # Z added by devel/scanprov +U8_MIN # Z added by devel/scanprov +UCHARAT # Z added by devel/scanprov +U_I # Z added by devel/scanprov +Uid_t # K added by devel/scanprov +UINTMAX_C # T +U_L # Z added by devel/scanprov +ungetc # Z added by devel/scanprov +UNLESSM # Z added by devel/scanprov +UNLINK # Z added by devel/scanprov +unlnk # F added by devel/scanprov unsharepvn # T +U_S # Z added by devel/scanprov +USE_BSDPGRP # Z added by devel/scanprov +USE_DYNAMIC_LOADING # K added by devel/scanprov +USE_STAT_RDEV # Z added by devel/scanprov +USE_STDIO # Z added by devel/scanprov +utilize # F added by devel/scanprov +U_V # Z added by devel/scanprov +UV_MAX # Z added by devel/scanprov +UV_MIN # Z added by devel/scanprov +VAL_EAGAIN # K added by devel/scanprov +VAL_O_NONBLOCK # K added by devel/scanprov +vfprintf # Z added by devel/scanprov +VOL # Z added by devel/scanprov +vtohl # Z added by devel/scanprov +vtohs # Z added by devel/scanprov +wait4pid # F added by devel/scanprov +watch # F added by devel/scanprov whichsig # T +WHILEM # Z added by devel/scanprov XPUSHi # T XPUSHp # T XPUSHs # T +XPUSHTARG # Z added by devel/scanprov +XS # M added by devel/scanprov +XSANY # Z added by devel/scanprov XSRETURN # T XSRETURN_EMPTY # T XSRETURN_IV # T @@ -416,134 +1606,8 @@ XST_mYES # T XS_VERSION # T XS_VERSION_BOOTCHECK # T -Zero # T -RETVAL # X added by devel/scanprov -CALL # X added by devel/scanprov -THIS # X added by devel/scanprov -dXSI32 # M added by devel/scanprov -items # M added by devel/scanprov -ix # M added by devel/scanprov -PERL_UINT_MIN # M added by devel/scanprov -STMT_END # M added by devel/scanprov -STMT_START # M added by devel/scanprov -StructCopy # M added by devel/scanprov -svtype # M added by devel/scanprov -XS # M added by devel/scanprov -apply # F added by devel/scanprov -bind_match # F added by devel/scanprov -boot_core_UNIVERSAL # F added by devel/scanprov -cando # F added by devel/scanprov -checkcomma # F added by devel/scanprov -check_uni # F added by devel/scanprov -do_chomp # F added by devel/scanprov -do_eof # F added by devel/scanprov -do_exec # F added by devel/scanprov -dofindlabel # F added by devel/scanprov -do_ipcctl # F added by devel/scanprov -do_ipcget # F added by devel/scanprov -do_msgrcv # F added by devel/scanprov -do_msgsnd # F added by devel/scanprov -dopoptoeval # F added by devel/scanprov -do_print # F added by devel/scanprov -do_readline # F added by devel/scanprov -do_seek # F added by devel/scanprov -do_semop # F added by devel/scanprov -do_shmio # F added by devel/scanprov -do_tell # F added by devel/scanprov -do_trans # F added by devel/scanprov -do_vecset # F added by devel/scanprov -do_vop # F added by devel/scanprov -dump_mstats # F added by devel/scanprov -fold_constants # F added by devel/scanprov -force_ident # F added by devel/scanprov -force_list # F added by devel/scanprov -force_next # F added by devel/scanprov -force_word # F added by devel/scanprov -gen_constant_list # F added by devel/scanprov -ingroup # F added by devel/scanprov -intuit_more # F added by devel/scanprov -invert # F added by devel/scanprov -io_close # F added by devel/scanprov -jmaybe # F added by devel/scanprov -keyword # F added by devel/scanprov -list # F added by devel/scanprov -listkids # F added by devel/scanprov -localize # F added by devel/scanprov -magic_clearenv # F added by devel/scanprov -magic_clearpack # F added by devel/scanprov -magic_clearsig # F added by devel/scanprov -magic_existspack # F added by devel/scanprov -magic_get # F added by devel/scanprov -magic_getarylen # F added by devel/scanprov -magic_getpack # F added by devel/scanprov -magic_getpos # F added by devel/scanprov -magic_getsig # F added by devel/scanprov -magic_gettaint # F added by devel/scanprov -magic_getuvar # F added by devel/scanprov -magic_nextpack # F added by devel/scanprov -magic_set # F added by devel/scanprov -magic_setarylen # F added by devel/scanprov -magic_setdbline # F added by devel/scanprov -magic_setenv # F added by devel/scanprov -magic_setisa # F added by devel/scanprov -magic_setmglob # F added by devel/scanprov -magic_setnkeys # F added by devel/scanprov -magic_setpack # F added by devel/scanprov -magic_setpos # F added by devel/scanprov -magic_setsig # F added by devel/scanprov -magic_setsubstr # F added by devel/scanprov -magic_settaint # F added by devel/scanprov -magic_setuvar # F added by devel/scanprov -magic_setvec # F added by devel/scanprov -magic_wipepack # F added by devel/scanprov -mem_collxfrm # F added by devel/scanprov -modkids # F added by devel/scanprov -my_chsize # F added by devel/scanprov -my_unexec # F added by devel/scanprov -nextargv # F added by devel/scanprov -no_fh_allowed # F added by devel/scanprov -no_op # F added by devel/scanprov -oopsAV # F added by devel/scanprov -oopsHV # F added by devel/scanprov -package # F added by devel/scanprov -pad_free # F added by devel/scanprov -pad_leavemy # F added by devel/scanprov -pad_reset # F added by devel/scanprov -pad_sv # F added by devel/scanprov -pad_swipe # F added by devel/scanprov -peep # F added by devel/scanprov -pidgone # F added by devel/scanprov -pmruntime # F added by devel/scanprov -pmtrans # F added by devel/scanprov -ref # F added by devel/scanprov -refkids # F added by devel/scanprov -regprop # F added by devel/scanprov -same_dirent # F added by devel/scanprov -sawparens # F added by devel/scanprov -scalar # F added by devel/scanprov -scalarkids # F added by devel/scanprov -scalarseq # F added by devel/scanprov -scalarvoid # F added by devel/scanprov -scan_const # F added by devel/scanprov -scan_formline # F added by devel/scanprov -scan_heredoc # F added by devel/scanprov -scan_ident # F added by devel/scanprov -scan_inputsymbol # F added by devel/scanprov -scan_pat # F added by devel/scanprov -scan_str # F added by devel/scanprov -scan_subst # F added by devel/scanprov -scan_trans # F added by devel/scanprov -scan_word # F added by devel/scanprov -sighandler # F added by devel/scanprov -sv_add_arena # F added by devel/scanprov -sv_clean_all # F added by devel/scanprov -sv_clean_objs # F added by devel/scanprov -sv_free_arenas # F added by devel/scanprov -unlnk # F added by devel/scanprov -utilize # F added by devel/scanprov -wait4pid # F added by devel/scanprov -watch # F added by devel/scanprov yyerror # F added by devel/scanprov yylex # F added by devel/scanprov yyparse # F added by devel/scanprov yywarn # F added by devel/scanprov +Zero # T diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5004000 perl-5.34.0/dist/Devel-PPPort/parts/base/5004000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5004000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5004000 2020-10-04 22:17:12.000000000 +0000 @@ -1,17 +1,74 @@ 5.004000 -ARCHNAME # E +AMT_AMAGIC # Z added by devel/scanprov +AMT_AMAGIC_off # Z added by devel/scanprov +AMT_AMAGIC_on # Z added by devel/scanprov +AMTf_AMAGIC # Z added by devel/scanprov +ANYOF_ALNUML # Z added by devel/scanprov +ANYOF_INVERT # Z added by devel/scanprov +ANYOF_NALNUML # Z added by devel/scanprov +ANYOF_NSPACEL # Z added by devel/scanprov +ANYOF_SPACEL # Z added by devel/scanprov +ARCHNAME # K added by devel/scanprov +BIN_EXP # K added by devel/scanprov +BIT_DIGITS # Z added by devel/scanprov block_end # E (Perl_block_end) block_gimme # E block_start # E (Perl_block_start) boolSV # E +BOUNDL # Z added by devel/scanprov call_list # E +CATCH_GET # Z added by devel/scanprov +CATCH_SET # Z added by devel/scanprov +CVf_NODEBUG # Z added by devel/scanprov +CVf_UNIQUE # Z added by devel/scanprov +CvNODEBUG # Z added by devel/scanprov +CvNODEBUG_off # Z added by devel/scanprov +CvNODEBUG_on # Z added by devel/scanprov +CvUNIQUE # Z added by devel/scanprov +CvUNIQUE_off # Z added by devel/scanprov +CvUNIQUE_on # Z added by devel/scanprov delimcpy # U +dEXTCONST # Z added by devel/scanprov +dJMPENV # Z added by devel/scanprov +do_sysseek # F added by devel/scanprov +dPOPuv # Z added by devel/scanprov +dPOPXiirl # Z added by devel/scanprov +dPOPXnnrl # Z added by devel/scanprov +dPOPXssrl # Z added by devel/scanprov +dTOPuv # Z added by devel/scanprov +EXACT # Z added by devel/scanprov +EXACTF # Z added by devel/scanprov +EXACTFL # Z added by devel/scanprov +EXTCONST # Z added by devel/scanprov +EXTEND_MORTAL # Z added by devel/scanprov +F_atan2_amg # Z added by devel/scanprov +F_cos_amg # Z added by devel/scanprov +F_exp_amg # Z added by devel/scanprov +F_log_amg # Z added by devel/scanprov +F_pow_amg # Z added by devel/scanprov +F_sin_amg # Z added by devel/scanprov +F_sqrt_amg # Z added by devel/scanprov GIMME_V # E +GPOS # Z added by devel/scanprov gv_autoload4 # E +GvCVu # Z added by devel/scanprov gv_fetchmethod_autoload # E G_VOID # E +HAS_GETTIMEOFDAY # K added by devel/scanprov +HAS_INET_ATON # K added by devel/scanprov +HAS_SETGROUPS # K added by devel/scanprov +HAS_STRTOD # K added by devel/scanprov +HAS_STRTOL # K added by devel/scanprov +HAS_STRTOUL # K added by devel/scanprov +HEK_BASESIZE # Z added by devel/scanprov +HeKEY_hek # Z added by devel/scanprov +HeKEY_sv # Z added by devel/scanprov +HEK_HASH # Z added by devel/scanprov +HEK_KEY # Z added by devel/scanprov +HEK_LEN # Z added by devel/scanprov HePV # A HeSVKEY_set # E +HINT_LOCALE # Z added by devel/scanprov hv_delayfree_ent # E hv_free_ent # E ibcmp_locale # E @@ -25,52 +82,97 @@ isPRINT_LC # E isSPACE_LC # E isUPPER_LC # E -LONGSIZE # E +JMPENV_JUMP # Z added by devel/scanprov +JMPENV_POP # Z added by devel/scanprov +JMPENV_PUSH # Z added by devel/scanprov +KEY___PACKAGE # Z added by devel/scanprov +KEY_sysseek # Z added by devel/scanprov +LONGSIZE # K added by devel/scanprov +magic_getdefelem # F added by devel/scanprov +magic_setcollxfrm # F added by devel/scanprov +magic_setdefelem # F added by devel/scanprov memEQ # E memNE # E +MgTAINTEDDIR_off # Z added by devel/scanprov +Mkdir # Z added by devel/scanprov my_failure_exit # E +NBOUNDL # Z added by devel/scanprov newRV_inc # E newRV_noinc # E +Nullhek # Z added by devel/scanprov +OP_BINARY # Z added by devel/scanprov +OPf_WANT # Z added by devel/scanprov +OPf_WANT_LIST # Z added by devel/scanprov +OPf_WANT_SCALAR # Z added by devel/scanprov +OPf_WANT_VOID # Z added by devel/scanprov +OP_GIMME # Z added by devel/scanprov +OPpDEREF # Z added by devel/scanprov +OPpDEREF_SV # Z added by devel/scanprov +OPpLVAL_DEFER # Z added by devel/scanprov +OPpSLICE # Z added by devel/scanprov +PMf_CONTINUE # Z added by devel/scanprov POPu # E PUSHu # E rsignal # E +rsignal_restore # F added by devel/scanprov +rsignal_save # F added by devel/scanprov rsignal_state # E +rxres_free # F added by devel/scanprov +rxres_restore # F added by devel/scanprov +rxres_save # F added by devel/scanprov save_gp # E -save_I16 # E +save_I16 # F added by devel/scanprov +SAVEI16 # E +save_iv # F added by devel/scanprov +SAVESTACK_POS # E +SAVEt_I16 # Z added by devel/scanprov +SAVEt_STACK_POS # Z added by devel/scanprov +sb_rxres # Z added by devel/scanprov +sb_rxtainted # Z added by devel/scanprov +SET_NUMERIC_STANDARD # Z added by devel/scanprov +SETu # Z added by devel/scanprov share_hek # E -SHORTSIZE # E +SHORTSIZE # K added by devel/scanprov start_subparse # E (Perl_start_subparse) -sv_2uv # U +STATUS_ALL_FAILURE # Z added by devel/scanprov +STATUS_ALL_SUCCESS # Z added by devel/scanprov +STATUS_CURRENT # Z added by devel/scanprov +STATUS_NATIVE # Z added by devel/scanprov +STRUCT_OFFSET # Z added by devel/scanprov +sub_crush_depth # F added by devel/scanprov sv_cmp_locale # U sv_derived_from # E +SvIMMORTAL # Z added by devel/scanprov +sv_pvn # F added by devel/scanprov SvSetMagicSV # E SvSetMagicSV_nosteal # E SvSetSV_nosteal # E sv_setuv # E -sv_taint # U -sv_tainted # E +sv_tainted # F added by devel/scanprov SvTAINTED # E SvTAINTED_off # E SvTAINTED_on # E -sv_untaint # E +sv_untaint # F added by devel/scanprov SvUV # E SvUVX # E SvUVx # E SvUVXx # E sv_vcatpvfn # E sv_vsetpvfn # E +TAINT # Z added by devel/scanprov +Timeval # K added by devel/scanprov +toCTRL # Z added by devel/scanprov toLOWER_LC # E -XPUSHu # E -do_sysseek # F added by devel/scanprov -magic_getdefelem # F added by devel/scanprov -magic_setcollxfrm # F added by devel/scanprov -magic_setdefelem # F added by devel/scanprov -rsignal_restore # F added by devel/scanprov -rsignal_save # F added by devel/scanprov -rxres_free # F added by devel/scanprov -rxres_restore # F added by devel/scanprov -rxres_save # F added by devel/scanprov -sub_crush_depth # F added by devel/scanprov +TOPu # Z added by devel/scanprov +toUPPER_LC # Z added by devel/scanprov +TYPE_CHARS # Z added by devel/scanprov +TYPE_DIGITS # Z added by devel/scanprov unshare_hek # F added by devel/scanprov +USE_LEFT # Z added by devel/scanprov +USE_LOCALE # Z added by devel/scanprov +USE_LOCALE_COLLATE # Z added by devel/scanprov +USE_LOCALE_CTYPE # Z added by devel/scanprov +USE_LOCALE_NUMERIC # Z added by devel/scanprov vivify_defelem # F added by devel/scanprov vivify_ref # F added by devel/scanprov +XPUSHu # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5004001 perl-5.34.0/dist/Devel-PPPort/parts/base/5004001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5004001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5004001 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,4 @@ 5.004001 magic_clear_all_env # F added by devel/scanprov +REFF # Z added by devel/scanprov +REFFL # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5004002 perl-5.34.0/dist/Devel-PPPort/parts/base/5004002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5004002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5004002 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,14 @@ 5.004002 +PERLDB_ALL # Z added by devel/scanprov +PERLDBf_INTER # Z added by devel/scanprov +PERLDBf_LINE # Z added by devel/scanprov +PERLDBf_NOOPT # Z added by devel/scanprov +PERLDBf_SINGLE # Z added by devel/scanprov +PERLDBf_SUB # Z added by devel/scanprov +PERLDBf_SUBLINE # Z added by devel/scanprov +PERLDB_INTER # Z added by devel/scanprov +PERLDB_LINE # Z added by devel/scanprov +PERLDB_NOOPT # Z added by devel/scanprov +PERLDB_SINGLE # Z added by devel/scanprov +PERLDB_SUB # Z added by devel/scanprov +PERLDB_SUBLINE # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5004004 perl-5.34.0/dist/Devel-PPPort/parts/base/5004004 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5004004 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5004004 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,4 @@ 5.004004 av_reify # F added by devel/scanprov +LEX_NOTPARSING # Z added by devel/scanprov magic_set_all_env # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5004005 perl-5.34.0/dist/Devel-PPPort/parts/base/5004005 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5004005 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5004005 2020-10-04 22:17:12.000000000 +0000 @@ -1,10 +1,36 @@ 5.004005 +ANYOF_BIT # Z added by devel/scanprov +AvFILLp # M added by devel/scanprov +cBINOPo # Z added by devel/scanprov +cCOPo # Z added by devel/scanprov +cLISTOPo # Z added by devel/scanprov +cLOGOPo # Z added by devel/scanprov +cLOOPo # Z added by devel/scanprov +cPMOPo # Z added by devel/scanprov +cPVOPo # Z added by devel/scanprov +cSVOPo # Z added by devel/scanprov +cUNOPo # Z added by devel/scanprov +DEFSV # E +djSP # Z added by devel/scanprov do_binmode # E dTHR # E ERRSV # E +find_script # F added by devel/scanprov +G_NODEBUG # Z added by devel/scanprov GV_NOINIT # E +HAS_CHSIZE # K added by devel/scanprov +HAS_GNULIBC # K added by devel/scanprov +HINT_RE_TAINT # Z added by devel/scanprov +magic_getnkeys # F added by devel/scanprov +magic_getsubstr # F added by devel/scanprov +magic_getvec # F added by devel/scanprov newCONSTSUB # E newSVpvn # E +PERLDBf_GOTO # Z added by devel/scanprov +PERLDBf_NONAME # Z added by devel/scanprov +PERLDB_GOTO # Z added by devel/scanprov +PERLDB_SUB_NN # Z added by devel/scanprov +PERL_SCRIPT_MODE # Z added by devel/scanprov PL_curcop # E PL_curstash # E PL_defgv # E @@ -14,8 +40,16 @@ PL_sv_no # E PL_sv_undef # E PL_sv_yes # E +PMf_RETAINT # Z added by devel/scanprov +PWGECOS # K added by devel/scanprov +REG_INFTY # Z added by devel/scanprov save_aelem # E +SAVE_DEFSV # E save_helem # E +SAVEt_AELEM # Z added by devel/scanprov +SAVEt_HELEM # Z added by devel/scanprov +Semctl # Z added by devel/scanprov +Stat_t # Z added by devel/scanprov sv_catpv_mg # E sv_catpvn_mg # U sv_catsv_mg # U @@ -26,24 +60,5 @@ sv_setsv_mg # E sv_setuv_mg # E sv_usepvn_mg # U -AvFILLp # M added by devel/scanprov -DEFSV # M added by devel/scanprov -PL_compiling # M added by devel/scanprov -PL_DBsingle # M added by devel/scanprov -PL_DBsub # M added by devel/scanprov -PL_debstash # M added by devel/scanprov -PL_diehook # M added by devel/scanprov -PL_dirty # M added by devel/scanprov -PL_dowarn # M added by devel/scanprov -PL_perldb # M added by devel/scanprov -PL_stack_base # M added by devel/scanprov -PL_stack_sp # M added by devel/scanprov -PL_stdingv # M added by devel/scanprov -PL_sv_arenaroot # M added by devel/scanprov -PL_tainted # M added by devel/scanprov -PL_tainting # M added by devel/scanprov -SAVE_DEFSV # M added by devel/scanprov -find_script # F added by devel/scanprov -magic_getnkeys # F added by devel/scanprov -magic_getsubstr # F added by devel/scanprov -magic_getvec # F added by devel/scanprov +USE_SEMCTL_SEMID_DS # K added by devel/scanprov +USE_SEMCTL_SEMUN # K added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5005000 perl-5.34.0/dist/Devel-PPPort/parts/base/5005000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5005000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5005000 2020-10-04 22:17:12.000000000 +0000 @@ -1,49 +1,55 @@ 5.005000 -cx_dump # U -debop # U -debprofdump # U -DOUBLESIZE # E -fbm_compile # E (Perl_fbm_compile) -fbm_instr # E (Perl_fbm_instr) -get_op_descs # E -get_op_names # E -init_stacks # E -mg_length # E -mg_size # E -newHVhv # E -new_stackinfo # E -PL_curpad # E -PL_modglobal # E -PTRSIZE # E -regdump # U -regexec_flags # E -regnext # E (Perl_regnext) -runops_debug # E -runops_standard # E -save_iv # E (save_iv) -sv_iv # E -sv_peek # U -sv_pvn # E -sv_true # E -sv_uv # E -CPERLscope # M added by devel/scanprov -END_EXTERN_C # M added by devel/scanprov -EXTERN_C # M added by devel/scanprov -NOOP # M added by devel/scanprov -PL_DBsignal # M added by devel/scanprov -PL_DBtrace # M added by devel/scanprov -PL_hexdigit # M added by devel/scanprov -PL_hints # M added by devel/scanprov -PL_laststatval # M added by devel/scanprov -PL_mess_sv # M added by devel/scanprov -PL_statcache # M added by devel/scanprov -PL_Sv # M added by devel/scanprov -PL_Xpv # M added by devel/scanprov -START_EXTERN_C # M added by devel/scanprov +abort # Z added by devel/scanprov +accept # Z added by devel/scanprov +access # Z added by devel/scanprov add_data # F added by devel/scanprov +anchored_offset # Z added by devel/scanprov +anchored_substr # Z added by devel/scanprov ao # F added by devel/scanprov +ARG # Z added by devel/scanprov +ARG1_LOC # Z added by devel/scanprov +ARG1_SET # Z added by devel/scanprov +ARG2_LOC # Z added by devel/scanprov +ARG2_SET # Z added by devel/scanprov +ARG_LOC # Z added by devel/scanprov +ARG__SET # Z added by devel/scanprov +ARG_SET # Z added by devel/scanprov +ARG_VALUE # Z added by devel/scanprov +bind # Z added by devel/scanprov +BRANCHJ # Z added by devel/scanprov +CALLREGCOMP # Z added by devel/scanprov +CALLREGEXEC # Z added by devel/scanprov +CALLRUNOPS # Z added by devel/scanprov +chdir # Z added by devel/scanprov +check_offset_max # Z added by devel/scanprov +check_offset_min # Z added by devel/scanprov +check_substr # Z added by devel/scanprov +chmod # Z added by devel/scanprov +chsize # Z added by devel/scanprov +close # Z added by devel/scanprov +closedir # Z added by devel/scanprov +COND_BROADCAST # Z added by devel/scanprov +COND_DESTROY # Z added by devel/scanprov +COND_INIT # Z added by devel/scanprov +COND_SIGNAL # Z added by devel/scanprov +COND_WAIT # Z added by devel/scanprov +connect # Z added by devel/scanprov +CPERLarg # Z added by devel/scanprov +CPERLscope # M added by devel/scanprov +CURLYM # Z added by devel/scanprov +CURLYN # Z added by devel/scanprov +CVf_METHOD # Z added by devel/scanprov +CvMETHOD # Z added by devel/scanprov +CvMETHOD_off # Z added by devel/scanprov +CvMETHOD_on # Z added by devel/scanprov +cxstack # Z added by devel/scanprov +cxstack_ix # Z added by devel/scanprov +cxstack_max # Z added by devel/scanprov +debop # U debprof # F added by devel/scanprov +debprofdump # U del_sv # F added by devel/scanprov +DETACH # Z added by devel/scanprov div128 # F added by devel/scanprov docatch # F added by devel/scanprov doform # F added by devel/scanprov @@ -51,41 +57,509 @@ dopoptolabel # F added by devel/scanprov dopoptoloop # F added by devel/scanprov dopoptosub_at # F added by devel/scanprov +DOUBLESIZE # K added by devel/scanprov dumpuntil # F added by devel/scanprov +dup # Z added by devel/scanprov +dup2 # Z added by devel/scanprov +dXSFUNCTION # Z added by devel/scanprov +END_EXTERN_C # M added by devel/scanprov +endhostent # Z added by devel/scanprov +endnetent # Z added by devel/scanprov +endprotoent # Z added by devel/scanprov +endservent # Z added by devel/scanprov +EOS # Z added by devel/scanprov +EVAL # Z added by devel/scanprov +execl # Z added by devel/scanprov +execv # Z added by devel/scanprov +execvp # Z added by devel/scanprov +exit # Z added by devel/scanprov +EXTERN_C # M added by devel/scanprov +EXTRA_SIZE # Z added by devel/scanprov +EXTRA_STEP_2ARGS # Z added by devel/scanprov +fbm_compile # E (Perl_fbm_compile) +fbm_instr # E (Perl_fbm_instr) +FILL_ADVANCE_NODE # Z added by devel/scanprov +FILL_ADVANCE_NODE_ARG # Z added by devel/scanprov filter_gets # F added by devel/scanprov find_beginning # F added by devel/scanprov +float_max_offset # Z added by devel/scanprov +float_min_offset # Z added by devel/scanprov +float_substr # Z added by devel/scanprov +flock # Z added by devel/scanprov forbid_setid # F added by devel/scanprov force_version # F added by devel/scanprov +frewind # Z added by devel/scanprov +fstat # Z added by devel/scanprov +getegid # Z added by devel/scanprov +getenv # Z added by devel/scanprov +geteuid # Z added by devel/scanprov +getgid # Z added by devel/scanprov +gethostbyaddr # Z added by devel/scanprov +gethostbyname # Z added by devel/scanprov +gethostent # Z added by devel/scanprov +gethostname # Z added by devel/scanprov +getlogin # Z added by devel/scanprov +getnetbyaddr # Z added by devel/scanprov +getnetbyname # Z added by devel/scanprov +getnetent # Z added by devel/scanprov get_no_modify # F added by devel/scanprov get_opargs # F added by devel/scanprov +get_op_descs # E +get_op_names # E +getpeername # Z added by devel/scanprov +getprotobyname # Z added by devel/scanprov +getprotobynumber # Z added by devel/scanprov +getprotoent # Z added by devel/scanprov +getservbyname # Z added by devel/scanprov +getservbyport # Z added by devel/scanprov +getservent # Z added by devel/scanprov +getsockname # Z added by devel/scanprov +getsockopt # Z added by devel/scanprov +getuid # Z added by devel/scanprov +GROUPP # Z added by devel/scanprov +GRPASSWD # K added by devel/scanprov +HAS_CSH # K added by devel/scanprov +HAS_ENDGRENT # K added by devel/scanprov +HAS_ENDHOSTENT # K added by devel/scanprov +HAS_ENDNETENT # K added by devel/scanprov +HAS_ENDPROTOENT # K added by devel/scanprov +HAS_ENDPWENT # K added by devel/scanprov +HAS_ENDSERVENT # K added by devel/scanprov +HAS_GETGRENT # K added by devel/scanprov +HAS_GETHOSTBYADDR # K added by devel/scanprov +HAS_GETHOSTBYNAME # K added by devel/scanprov +HAS_GETHOST_PROTOS # K added by devel/scanprov +HAS_GETNETBYADDR # K added by devel/scanprov +HAS_GETNETBYNAME # K added by devel/scanprov +HAS_GETNETENT # K added by devel/scanprov +HAS_GETNET_PROTOS # K added by devel/scanprov +HAS_GETPROTOBYNAME # K added by devel/scanprov +HAS_GETPROTOBYNUMBER # K added by devel/scanprov +HAS_GETPROTOENT # K added by devel/scanprov +HAS_GETPROTO_PROTOS # K added by devel/scanprov +HAS_GETPWENT # K added by devel/scanprov +HAS_GETSERVBYNAME # K added by devel/scanprov +HAS_GETSERVBYPORT # K added by devel/scanprov +HAS_GETSERVENT # K added by devel/scanprov +HAS_GETSERV_PROTOS # K added by devel/scanprov +HAS_LCHOWN # K added by devel/scanprov +HAS_LONG_DOUBLE # K added by devel/scanprov +HAS_LONG_LONG # K added by devel/scanprov +HAS_SCHED_YIELD # K added by devel/scanprov +HAS_SETGRENT # K added by devel/scanprov +HAS_SETHOSTENT # K added by devel/scanprov +HAS_SETNETENT # K added by devel/scanprov +HAS_SETPROTOENT # K added by devel/scanprov +HAS_SETPWENT # K added by devel/scanprov +HAS_SETSERVENT # K added by devel/scanprov +HAS_SETVBUF # K added by devel/scanprov +HINT_LOCALIZE_HH # Z added by devel/scanprov +HINT_NEW_BINARY # Z added by devel/scanprov +HINT_NEW_FLOAT # Z added by devel/scanprov +HINT_NEW_INTEGER # Z added by devel/scanprov +HINT_NEW_RE # Z added by devel/scanprov +HINT_NEW_STRING # Z added by devel/scanprov +HINT_RE_EVAL # Z added by devel/scanprov hsplit # F added by devel/scanprov +I_ARPA_INET # K added by devel/scanprov +IFTHEN # Z added by devel/scanprov incline # F added by devel/scanprov incpush # F added by devel/scanprov +inet_addr # Z added by devel/scanprov +I_NETDB # K added by devel/scanprov +inet_ntoa # Z added by devel/scanprov init_debugger # F added by devel/scanprov init_ids # F added by devel/scanprov init_interp # F added by devel/scanprov init_main_stash # F added by devel/scanprov +init_os_extras # Z added by devel/scanprov init_perllib # F added by devel/scanprov init_postdump_symbols # F added by devel/scanprov init_predump_symbols # F added by devel/scanprov +init_stacks # E +INIT_THREADS # Z added by devel/scanprov intuit_method # F added by devel/scanprov +ioctl # Z added by devel/scanprov isa_lookup # F added by devel/scanprov is_an_int # F added by devel/scanprov +isatty # Z added by devel/scanprov +JOIN # Z added by devel/scanprov +KEY_INIT # Z added by devel/scanprov +KEY_lock # Z added by devel/scanprov +KEY_qr # Z added by devel/scanprov +kill # Z added by devel/scanprov +killpg # Z added by devel/scanprov +listen # Z added by devel/scanprov +LOGICAL # Z added by devel/scanprov +LONG_DOUBLESIZE # K added by devel/scanprov +LONGJMP # Z added by devel/scanprov +longjmp # Z added by devel/scanprov +LONGLONGSIZE # K added by devel/scanprov lop # F added by devel/scanprov +lseek # Z added by devel/scanprov +lstat # Z added by devel/scanprov magic_methpack # F added by devel/scanprov magic_sizepack # F added by devel/scanprov malloced_size # F added by devel/scanprov +MALLOC_INIT # Z added by devel/scanprov +MALLOC_TERM # Z added by devel/scanprov mess_alloc # F added by devel/scanprov +mg_length # E +mg_size # E missingterm # F added by devel/scanprov +mkdir # Z added by devel/scanprov +mktemp # Z added by devel/scanprov mul128 # F added by devel/scanprov +MUTEX_DESTROY # Z added by devel/scanprov +MUTEX_INIT # Z added by devel/scanprov +MUTEX_LOCK # Z added by devel/scanprov +MUTEX_UNLOCK # Z added by devel/scanprov my_exit_jump # F added by devel/scanprov +NEED_PTHREAD_INIT # Z added by devel/scanprov +Netdb_hlen_t # K added by devel/scanprov +Netdb_host_t # K added by devel/scanprov +Netdb_name_t # K added by devel/scanprov +Netdb_net_t # K added by devel/scanprov new_he # F added by devel/scanprov +newHVhv # E new_logop # F added by devel/scanprov +new_stackinfo # E nextchar # F added by devel/scanprov +NEXT_OFF # Z added by devel/scanprov +NODE_ALIGN # Z added by devel/scanprov +NODE_ALIGN_FILL # Z added by devel/scanprov +NODE_STEP_REGNODE # Z added by devel/scanprov +NO_LOCALECONV_MON_THOUSANDS_SEP # Z added by devel/scanprov +NOOP # E not_a_number # F added by devel/scanprov +NOT_IN_PAD # Z added by devel/scanprov nuke_stacks # F added by devel/scanprov +OA_BASEOP # Z added by devel/scanprov +OA_BASEOP_OR_UNOP # Z added by devel/scanprov +OA_BINOP # Z added by devel/scanprov +OA_CLASS_MASK # Z added by devel/scanprov +OA_COP # Z added by devel/scanprov +OA_FILESTATOP # Z added by devel/scanprov +OA_LISTOP # Z added by devel/scanprov +OA_LOGOP # Z added by devel/scanprov +OA_LOOP # Z added by devel/scanprov +OA_LOOPEXOP # Z added by devel/scanprov +OA_PMOP # Z added by devel/scanprov +OA_SVOP # Z added by devel/scanprov +OA_UNOP # Z added by devel/scanprov +open # Z added by devel/scanprov +opendir # Z added by devel/scanprov open_script # F added by devel/scanprov +OPTIMIZED # Z added by devel/scanprov pad_findlex # F added by devel/scanprov +pause # Z added by devel/scanprov +PerlDir_chdir # Z added by devel/scanprov +PerlDir_close # Z added by devel/scanprov +PerlDir_mkdir # Z added by devel/scanprov +PerlDir_open # Z added by devel/scanprov +PerlDir_read # Z added by devel/scanprov +PerlDir_rewind # Z added by devel/scanprov +PerlDir_rmdir # Z added by devel/scanprov +PerlDir_seek # Z added by devel/scanprov +PerlDir_tell # Z added by devel/scanprov +PerlEnv_getenv # Z added by devel/scanprov +PerlEnv_lib_path # Z added by devel/scanprov +PerlEnv_putenv # Z added by devel/scanprov +PerlEnv_sitelib_path # Z added by devel/scanprov +PerlLIO_access # Z added by devel/scanprov +PerlLIO_chmod # Z added by devel/scanprov +PerlLIO_chown # Z added by devel/scanprov +PerlLIO_chsize # Z added by devel/scanprov +PerlLIO_close # Z added by devel/scanprov +PerlLIO_dup # Z added by devel/scanprov +PerlLIO_dup2 # Z added by devel/scanprov +PerlLIO_flock # Z added by devel/scanprov +PerlLIO_fstat # Z added by devel/scanprov +PerlLIO_ioctl # Z added by devel/scanprov +PerlLIO_isatty # Z added by devel/scanprov +PerlLIO_lseek # Z added by devel/scanprov +PerlLIO_lstat # Z added by devel/scanprov +PerlLIO_mktemp # Z added by devel/scanprov +PerlLIO_open # Z added by devel/scanprov +PerlLIO_open3 # Z added by devel/scanprov +PerlLIO_read # Z added by devel/scanprov +PerlLIO_rename # Z added by devel/scanprov +PerlLIO_setmode # Z added by devel/scanprov +PerlLIO_stat # Z added by devel/scanprov +PerlLIO_tmpnam # Z added by devel/scanprov +PerlLIO_umask # Z added by devel/scanprov +PerlLIO_unlink # Z added by devel/scanprov +PerlLIO_utime # Z added by devel/scanprov +PerlLIO_write # Z added by devel/scanprov +PerlMem_free # Z added by devel/scanprov +PerlMem_malloc # Z added by devel/scanprov +PerlMem_realloc # Z added by devel/scanprov +PERL_OBJECT_THIS # Z added by devel/scanprov +PerlProc_abort # Z added by devel/scanprov +PerlProc_crypt # Z added by devel/scanprov +PerlProc_execl # Z added by devel/scanprov +PerlProc_execv # Z added by devel/scanprov +PerlProc_execvp # Z added by devel/scanprov +PerlProc__exit # Z added by devel/scanprov +PerlProc_exit # Z added by devel/scanprov +PerlProc_getegid # Z added by devel/scanprov +PerlProc_geteuid # Z added by devel/scanprov +PerlProc_getgid # Z added by devel/scanprov +PerlProc_getlogin # Z added by devel/scanprov +PerlProc_getuid # Z added by devel/scanprov +PerlProc_kill # Z added by devel/scanprov +PerlProc_killpg # Z added by devel/scanprov +PerlProc_longjmp # Z added by devel/scanprov +PerlProc_pause # Z added by devel/scanprov +PerlProc_pclose # Z added by devel/scanprov +PerlProc_pipe # Z added by devel/scanprov +PerlProc_popen # Z added by devel/scanprov +PerlProc_setgid # Z added by devel/scanprov +PerlProc_setjmp # Z added by devel/scanprov +PerlProc_setuid # Z added by devel/scanprov +PerlProc_signal # Z added by devel/scanprov +PerlProc_sleep # Z added by devel/scanprov +PerlProc_times # Z added by devel/scanprov +PerlProc_wait # Z added by devel/scanprov +PerlProc_waitpid # Z added by devel/scanprov +PERLSI_DESTROY # Z added by devel/scanprov +PERLSI_DIEHOOK # Z added by devel/scanprov +PERLSI_MAGIC # Z added by devel/scanprov +PERLSI_MAIN # Z added by devel/scanprov +PERLSI_OVERLOAD # Z added by devel/scanprov +PERLSI_REQUIRE # Z added by devel/scanprov +PERLSI_SIGNAL # Z added by devel/scanprov +PERLSI_SORT # Z added by devel/scanprov +PERLSI_UNDEF # Z added by devel/scanprov +PERLSI_UNKNOWN # Z added by devel/scanprov +PERLSI_WARNHOOK # Z added by devel/scanprov +PerlSock_accept # Z added by devel/scanprov +PerlSock_bind # Z added by devel/scanprov +PerlSock_connect # Z added by devel/scanprov +PerlSock_endhostent # Z added by devel/scanprov +PerlSock_endnetent # Z added by devel/scanprov +PerlSock_endprotoent # Z added by devel/scanprov +PerlSock_endservent # Z added by devel/scanprov +PerlSock_gethostbyaddr # Z added by devel/scanprov +PerlSock_gethostbyname # Z added by devel/scanprov +PerlSock_gethostent # Z added by devel/scanprov +PerlSock_gethostname # Z added by devel/scanprov +PerlSock_getnetbyaddr # Z added by devel/scanprov +PerlSock_getnetbyname # Z added by devel/scanprov +PerlSock_getnetent # Z added by devel/scanprov +PerlSock_getpeername # Z added by devel/scanprov +PerlSock_getprotobyname # Z added by devel/scanprov +PerlSock_getprotobynumber # Z added by devel/scanprov +PerlSock_getprotoent # Z added by devel/scanprov +PerlSock_getservbyname # Z added by devel/scanprov +PerlSock_getservbyport # Z added by devel/scanprov +PerlSock_getservent # Z added by devel/scanprov +PerlSock_getsockname # Z added by devel/scanprov +PerlSock_getsockopt # Z added by devel/scanprov +PerlSock_htonl # Z added by devel/scanprov +PerlSock_htons # Z added by devel/scanprov +PerlSock_inet_addr # Z added by devel/scanprov +PerlSock_inet_ntoa # Z added by devel/scanprov +PerlSock_listen # Z added by devel/scanprov +PerlSock_ntohl # Z added by devel/scanprov +PerlSock_ntohs # Z added by devel/scanprov +PerlSock_recv # Z added by devel/scanprov +PerlSock_recvfrom # Z added by devel/scanprov +PerlSock_select # Z added by devel/scanprov +PerlSock_send # Z added by devel/scanprov +PerlSock_sendto # Z added by devel/scanprov +PerlSock_sethostent # Z added by devel/scanprov +PerlSock_setnetent # Z added by devel/scanprov +PerlSock_setprotoent # Z added by devel/scanprov +PerlSock_setservent # Z added by devel/scanprov +PerlSock_setsockopt # Z added by devel/scanprov +PerlSock_shutdown # Z added by devel/scanprov +PerlSock_socket # Z added by devel/scanprov +PerlSock_socketpair # Z added by devel/scanprov +PERLVAR # Z added by devel/scanprov +PERLVARI # Z added by devel/scanprov +PERLVARIC # Z added by devel/scanprov +Pid_t # K added by devel/scanprov +pipe # Z added by devel/scanprov +PL_amagic_generation # Z added by devel/scanprov +PL_an # Z added by devel/scanprov +PL_argvgv # Z added by devel/scanprov +PL_argvoutgv # Z added by devel/scanprov +PL_basetime # Z added by devel/scanprov +PL_beginav # Z added by devel/scanprov +PL_bodytarget # Z added by devel/scanprov +PL_chopset # Z added by devel/scanprov +PL_collation_ix # Z added by devel/scanprov +PL_collation_name # Z added by devel/scanprov +PL_collation_standard # Z added by devel/scanprov +PL_collxfrm_base # Z added by devel/scanprov +PL_collxfrm_mult # Z added by devel/scanprov +PL_colors # Z added by devel/scanprov +PL_colorset # Z added by devel/scanprov +PL_compcv # Z added by devel/scanprov +PL_compiling # M added by devel/scanprov +PL_comppad_name_fill # Z added by devel/scanprov +PL_comppad_name_floor # Z added by devel/scanprov +PL_cop_seqmax # Z added by devel/scanprov +PL_cryptseen # Z added by devel/scanprov +PL_cshlen # Z added by devel/scanprov +PL_curcopdb # Z added by devel/scanprov +PL_curpad # E +PL_curpm # Z added by devel/scanprov +PL_curstack # Z added by devel/scanprov +PL_curstackinfo # Z added by devel/scanprov +PL_curstname # Z added by devel/scanprov +PL_dbargs # Z added by devel/scanprov +PL_DBcv # Z added by devel/scanprov +PL_DBgv # Z added by devel/scanprov +PL_DBline # Z added by devel/scanprov +PL_DBsignal # M added by devel/scanprov +PL_DBsingle # M added by devel/scanprov +PL_DBsub # M added by devel/scanprov +PL_DBtrace # M added by devel/scanprov +PL_debstash # M added by devel/scanprov +PL_debug # Z added by devel/scanprov +PL_defoutgv # Z added by devel/scanprov +PL_defstash # Z added by devel/scanprov +PL_delaymagic # Z added by devel/scanprov +PL_diehook # M added by devel/scanprov +PL_dirty # M added by devel/scanprov +PL_doswitches # Z added by devel/scanprov +PL_dowarn # M added by devel/scanprov +PL_endav # Z added by devel/scanprov +PL_envgv # Z added by devel/scanprov +PL_e_script # Z added by devel/scanprov +PL_eval_root # Z added by devel/scanprov +PL_evalseq # Z added by devel/scanprov +PL_eval_start # Z added by devel/scanprov +PL_exitlist # Z added by devel/scanprov +PL_exitlistlen # Z added by devel/scanprov +PL_fdpid # Z added by devel/scanprov +PL_filemode # Z added by devel/scanprov +PL_firstgv # Z added by devel/scanprov +PL_forkprocess # Z added by devel/scanprov +PL_formtarget # Z added by devel/scanprov +PL_generation # Z added by devel/scanprov +PL_gensym # Z added by devel/scanprov +PL_globalstash # Z added by devel/scanprov +PL_hintgv # Z added by devel/scanprov +PL_hints # M added by devel/scanprov +PL_hv_fetch_ent_mh # Z added by devel/scanprov +PL_incgv # Z added by devel/scanprov +PL_in_clean_all # Z added by devel/scanprov +PL_in_clean_objs # Z added by devel/scanprov +PL_in_eval # Z added by devel/scanprov +PL_initav # Z added by devel/scanprov +PL_inplace # Z added by devel/scanprov +PL_lastfd # Z added by devel/scanprov +PL_lastgotoprobe # Z added by devel/scanprov +PL_last_in_gv # Z added by devel/scanprov +PL_laststatval # M added by devel/scanprov +PL_laststype # Z added by devel/scanprov +PL_localizing # Z added by devel/scanprov +PL_localpatches # Z added by devel/scanprov +PL_main_cv # Z added by devel/scanprov +PL_main_root # Z added by devel/scanprov +PL_mainstack # Z added by devel/scanprov +PL_main_start # Z added by devel/scanprov +PL_markstack # Z added by devel/scanprov +PL_markstack_max # Z added by devel/scanprov +PL_markstack_ptr # Z added by devel/scanprov +PL_max_intro_pending # Z added by devel/scanprov +PL_maxo # Z added by devel/scanprov +PL_maxsysfd # Z added by devel/scanprov +PL_mess_sv # M added by devel/scanprov +PL_min_intro_pending # Z added by devel/scanprov +PL_minus_a # Z added by devel/scanprov +PL_minus_c # Z added by devel/scanprov +PL_minus_F # Z added by devel/scanprov +PL_minus_l # Z added by devel/scanprov +PL_minus_n # Z added by devel/scanprov +PL_minus_p # Z added by devel/scanprov +PL_modcount # Z added by devel/scanprov +PL_modglobal # E +PL_nomemok # Z added by devel/scanprov +PL_numeric_name # Z added by devel/scanprov +PL_numeric_standard # Z added by devel/scanprov +PL_oldname # Z added by devel/scanprov +PL_op # Z added by devel/scanprov +PL_op_mask # Z added by devel/scanprov +PL_origalen # Z added by devel/scanprov +PL_origargc # Z added by devel/scanprov +PL_origargv # Z added by devel/scanprov +PL_origenviron # Z added by devel/scanprov +PL_origfilename # Z added by devel/scanprov +PL_osname # Z added by devel/scanprov +PL_padix # Z added by devel/scanprov +PL_padix_floor # Z added by devel/scanprov +PL_pad_reset_pending # Z added by devel/scanprov +PL_patchlevel # Z added by devel/scanprov +PL_perldb # M added by devel/scanprov +PL_pidstatus # Z added by devel/scanprov +PL_preambleav # Z added by devel/scanprov +PL_profiledata # Z added by devel/scanprov +PL_replgv # Z added by devel/scanprov +PL_restartop # Z added by devel/scanprov +PL_rs # Z added by devel/scanprov +PL_savestack # Z added by devel/scanprov +PL_savestack_ix # Z added by devel/scanprov +PL_savestack_max # Z added by devel/scanprov +PL_sawampersand # Z added by devel/scanprov +PL_scopestack # Z added by devel/scanprov +PL_scopestack_ix # Z added by devel/scanprov +PL_scopestack_max # Z added by devel/scanprov +PL_secondgv # Z added by devel/scanprov +PL_sighandlerp # Z added by devel/scanprov +PL_sortcop # Z added by devel/scanprov +PL_sortstash # Z added by devel/scanprov +PL_splitstr # Z added by devel/scanprov +PL_stack_base # M added by devel/scanprov +PL_stack_max # Z added by devel/scanprov +PL_stack_sp # M added by devel/scanprov +PL_start_env # Z added by devel/scanprov +PL_statcache # M added by devel/scanprov +PL_statgv # Z added by devel/scanprov +PL_statname # Z added by devel/scanprov +PL_statusvalue # Z added by devel/scanprov +PL_statusvalue_vms # Z added by devel/scanprov +PL_stdingv # M added by devel/scanprov +PL_strtab # Z added by devel/scanprov +PL_sub_generation # Z added by devel/scanprov +PL_subline # Z added by devel/scanprov +PL_subname # Z added by devel/scanprov +PL_Sv # E +PL_sv_arenaroot # M added by devel/scanprov +PL_sv_count # Z added by devel/scanprov +PL_sv_root # Z added by devel/scanprov +PL_sys_intern # Z added by devel/scanprov +PL_tainted # M added by devel/scanprov +PL_tainting # M added by devel/scanprov +PL_tmps_floor # Z added by devel/scanprov +PL_tmps_ix # Z added by devel/scanprov +PL_tmps_max # Z added by devel/scanprov +PL_tmps_stack # Z added by devel/scanprov +PL_top_env # Z added by devel/scanprov +PL_toptarget # Z added by devel/scanprov +PL_unsafe # Z added by devel/scanprov +PL_warnhook # Z added by devel/scanprov +PL_Xpv # M added by devel/scanprov +POPSTACK # Z added by devel/scanprov +POPSTACK_TO # Z added by devel/scanprov +pthread_addr_t # Z added by devel/scanprov +pthread_condattr_default # Z added by devel/scanprov +PTHREAD_CREATE_JOINABLE # Z added by devel/scanprov +pthread_key_create # Z added by devel/scanprov +pthread_mutexattr_default # Z added by devel/scanprov +pthread_mutexattr_init # Z added by devel/scanprov +pthread_mutexattr_settype # Z added by devel/scanprov +PTRSIZE # K added by devel/scanprov +PUSHSTACK # Z added by devel/scanprov +PUSHSTACKi # Z added by devel/scanprov +putenv # Z added by devel/scanprov +PWPASSWD # K added by devel/scanprov +read # Z added by devel/scanprov +readdir # Z added by devel/scanprov +recvfrom # Z added by devel/scanprov refto # F added by devel/scanprov reg # F added by devel/scanprov reganode # F added by devel/scanprov @@ -94,6 +568,7 @@ regclass # F added by devel/scanprov regcppop # F added by devel/scanprov regcppush # F added by devel/scanprov +regexec_flags # F added by devel/scanprov reginclass # F added by devel/scanprov reginsert # F added by devel/scanprov regmatch # F added by devel/scanprov @@ -102,15 +577,84 @@ regrepeat # F added by devel/scanprov regtail # F added by devel/scanprov regtry # F added by devel/scanprov +rename # Z added by devel/scanprov +RENUM # Z added by devel/scanprov +ReREFCNT_dec # Z added by devel/scanprov +ReREFCNT_inc # Z added by devel/scanprov +rewinddir # Z added by devel/scanprov +REXEC_CHECKED # Z added by devel/scanprov +REXEC_COPY_STR # Z added by devel/scanprov +rmdir # Z added by devel/scanprov +RsRECORD # Z added by devel/scanprov +runops_debug # F added by devel/scanprov +RUNOPS_DEFAULT # Z added by devel/scanprov +runops_standard # F added by devel/scanprov +RX_MATCH_TAINTED # Z added by devel/scanprov +RX_MATCH_TAINTED_off # Z added by devel/scanprov +RX_MATCH_TAINTED_on # Z added by devel/scanprov +RX_MATCH_TAINTED_set # Z added by devel/scanprov +SAVEHINTS # Z added by devel/scanprov save_lines # F added by devel/scanprov +SAVEOP # Z added by devel/scanprov save_scalar_at # F added by devel/scanprov +SAVEt_HINTS # Z added by devel/scanprov +SAVEt_OP # Z added by devel/scanprov scalarboolean # F added by devel/scanprov scan_commit # F added by devel/scanprov +seekdir # Z added by devel/scanprov +select # Z added by devel/scanprov +send # Z added by devel/scanprov +sendto # Z added by devel/scanprov +setgid # Z added by devel/scanprov +sethostent # Z added by devel/scanprov +setjmp # Z added by devel/scanprov +setlinebuf # Z added by devel/scanprov +setmode # Z added by devel/scanprov +setnetent # Z added by devel/scanprov +setprotoent # Z added by devel/scanprov +setservent # Z added by devel/scanprov +setsockopt # Z added by devel/scanprov +SET_THR # Z added by devel/scanprov +setuid # Z added by devel/scanprov +sharepvn # Z added by devel/scanprov +shutdown # Z added by devel/scanprov +signal # Z added by devel/scanprov +SIZE_ALIGN # Z added by devel/scanprov +sleep # Z added by devel/scanprov +socket # Z added by devel/scanprov +socketpair # Z added by devel/scanprov +START_EXTERN_C # M added by devel/scanprov +stat # Z added by devel/scanprov +STATIC # Z added by devel/scanprov +stdoutf # Z added by devel/scanprov study_chunk # F added by devel/scanprov sublex_done # F added by devel/scanprov sublex_push # F added by devel/scanprov sublex_start # F added by devel/scanprov +SUSPEND # Z added by devel/scanprov +sv_2pv # Z added by devel/scanprov +sv_iv # F added by devel/scanprov +sv_nv # F added by devel/scanprov +sv_peek # U +sv_pvn_force # Z added by devel/scanprov +sv_true # F added by devel/scanprov sv_unglob # F added by devel/scanprov +sv_uv # F added by devel/scanprov +TAIL # Z added by devel/scanprov +telldir # Z added by devel/scanprov +THR # Z added by devel/scanprov +THREAD_RET_TYPE # Z added by devel/scanprov +times # Z added by devel/scanprov +tmpnam # Z added by devel/scanprov tokeq # F added by devel/scanprov +umask # Z added by devel/scanprov +unlink # Z added by devel/scanprov usage # F added by devel/scanprov +utime # Z added by devel/scanprov visit # F added by devel/scanprov +wait # Z added by devel/scanprov +write # Z added by devel/scanprov +XSINTERFACE_CVT # Z added by devel/scanprov +XSINTERFACE_FUNC # Z added by devel/scanprov +XSINTERFACE_FUNC_SET # Z added by devel/scanprov +YIELD # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5005002 perl-5.34.0/dist/Devel-PPPort/parts/base/5005002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5005002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5005002 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,2 @@ 5.005002 +PERL_CALLCONV # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5005003 perl-5.34.0/dist/Devel-PPPort/parts/base/5005003 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5005003 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5005003 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,53 @@ 5.005003 +ALLOC_THREAD_KEY # Z added by devel/scanprov +ASCIIish # Z added by devel/scanprov +CvEVAL # Z added by devel/scanprov +CvEVAL_off # Z added by devel/scanprov +CvEVAL_on # Z added by devel/scanprov +CvSPECIAL # Z added by devel/scanprov +CvSPECIAL_off # Z added by devel/scanprov +CvSPECIAL_on # Z added by devel/scanprov +CXp_REAL # Z added by devel/scanprov +CxREALEVAL # Z added by devel/scanprov +CxTYPE # Z added by devel/scanprov +CXTYPEMASK # Z added by devel/scanprov +dofile # F added by devel/scanprov get_vtbl # E +IOf_NOLINE # Z added by devel/scanprov +I_PTHREAD # K added by devel/scanprov +MUTEX_INIT_NEEDS_MUTEX_ZEROED # Z added by devel/scanprov POPpx # E +SAVEGENERICSV # Z added by devel/scanprov save_generic_svref # E -dofile # F added by devel/scanprov +SAVEt_GENERIC_SVREF # Z added by devel/scanprov +SELECT_MIN_BITS # K added by devel/scanprov +SET_THREAD_SELF # Z added by devel/scanprov +SvTIED_mg # Z added by devel/scanprov +SvTIED_obj # Z added by devel/scanprov +TOPpx # Z added by devel/scanprov +USE_STAT_BLOCKS # K added by devel/scanprov +VTBL_amagic # Z added by devel/scanprov +VTBL_amagicelem # Z added by devel/scanprov +VTBL_arylen # Z added by devel/scanprov +VTBL_bm # Z added by devel/scanprov +VTBL_collxfrm # Z added by devel/scanprov +VTBL_dbline # Z added by devel/scanprov +VTBL_defelem # Z added by devel/scanprov +VTBL_env # Z added by devel/scanprov +VTBL_envelem # Z added by devel/scanprov +VTBL_fm # Z added by devel/scanprov +VTBL_glob # Z added by devel/scanprov +VTBL_isa # Z added by devel/scanprov +VTBL_isaelem # Z added by devel/scanprov +VTBL_mglob # Z added by devel/scanprov +VTBL_nkeys # Z added by devel/scanprov +VTBL_pack # Z added by devel/scanprov +VTBL_packelem # Z added by devel/scanprov +VTBL_pos # Z added by devel/scanprov +VTBL_regexp # Z added by devel/scanprov +VTBL_sigelem # Z added by devel/scanprov +VTBL_substr # Z added by devel/scanprov +VTBL_sv # Z added by devel/scanprov +VTBL_taint # Z added by devel/scanprov +VTBL_uvar # Z added by devel/scanprov +VTBL_vec # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5005004 perl-5.34.0/dist/Devel-PPPort/parts/base/5005004 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5005004 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5005004 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,6 @@ 5.005004 no_bareword_allowed # F added by devel/scanprov +OPpCONST_STRICT # Z added by devel/scanprov +OPpENTERSUB_NOPAREN # Z added by devel/scanprov +PerlEnv_uname # Z added by devel/scanprov +uname # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5006000 perl-5.34.0/dist/Devel-PPPort/parts/base/5006000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5006000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5006000 2020-10-04 22:17:12.000000000 +0000 @@ -1,165 +1,655 @@ 5.006000 +any_dup # F added by devel/scanprov +ANYOF_ALNUM # Z added by devel/scanprov +ANYOF_ALPHA # Z added by devel/scanprov +ANYOF_ASCII # Z added by devel/scanprov +ANYOF_BITMAP # Z added by devel/scanprov +ANYOF_BITMAP_BYTE # Z added by devel/scanprov +ANYOF_BITMAP_CLEAR # Z added by devel/scanprov +ANYOF_BITMAP_SET # Z added by devel/scanprov +ANYOF_BITMAP_SIZE # Z added by devel/scanprov +ANYOF_BITMAP_TEST # Z added by devel/scanprov +ANYOF_BITMAP_ZERO # Z added by devel/scanprov +ANYOF_CNTRL # Z added by devel/scanprov +ANYOF_DIGIT # Z added by devel/scanprov +ANYOF_FLAGS # Z added by devel/scanprov +ANYOF_FLAGS_ALL # Z added by devel/scanprov +ANYOF_GRAPH # Z added by devel/scanprov +ANYOF_LOWER # Z added by devel/scanprov +ANYOF_MAX # Z added by devel/scanprov +ANYOF_NALNUM # Z added by devel/scanprov +ANYOF_NALPHA # Z added by devel/scanprov +ANYOF_NASCII # Z added by devel/scanprov +ANYOF_NCNTRL # Z added by devel/scanprov +ANYOF_NDIGIT # Z added by devel/scanprov +ANYOF_NGRAPH # Z added by devel/scanprov +ANYOF_NLOWER # Z added by devel/scanprov +ANYOF_NPRINT # Z added by devel/scanprov +ANYOF_NPUNCT # Z added by devel/scanprov +ANYOF_NSPACE # Z added by devel/scanprov +ANYOF_NUPPER # Z added by devel/scanprov +ANYOF_NXDIGIT # Z added by devel/scanprov +ANYOF_PRINT # Z added by devel/scanprov +ANYOF_PUNCT # Z added by devel/scanprov +ANYOF_SPACE # Z added by devel/scanprov +ANYOF_UPPER # Z added by devel/scanprov +ANYOF_XDIGIT # Z added by devel/scanprov +apply_attrs # F added by devel/scanprov aTHX # E aTHX_ # E +aTHXo # Z added by devel/scanprov +aTHXx # Z added by devel/scanprov +Atof # Z added by devel/scanprov +Atol # Z added by devel/scanprov +Atoul # Z added by devel/scanprov av_delete # E av_exists # E +Bit # Z added by devel/scanprov call_argv # E (perl_call_argv) call_atexit # E +CALL_FPTR # Z added by devel/scanprov call_method # E (perl_call_method) call_pv # E (perl_call_pv) +CALLREGFREE # Z added by devel/scanprov +CALLREG_INTUIT_START # Z added by devel/scanprov +CALLREG_INTUIT_STRING # Z added by devel/scanprov call_sv # E (perl_call_sv) -cast_i32 # E (cast_i32) -cast_iv # E (cast_iv) -cast_ulong # E -cast_uv # E (cast_uv) +cast_i32 # F added by devel/scanprov +cast_iv # F added by devel/scanprov +cast_uv # F added by devel/scanprov +cBINOPx # Z added by devel/scanprov +cCOPx # Z added by devel/scanprov +cGVOP_gv # Z added by devel/scanprov +cGVOPo_gv # Z added by devel/scanprov +cGVOPx_gv # Z added by devel/scanprov +ckDEAD # Z added by devel/scanprov ckWARN # E ckWARN2 # E ckWARN2_d # E ckWARN_d # E -CPPLAST # E -CPPRUN # E +CLEAR_ARGARRAY # Z added by devel/scanprov +cLISTOPx # Z added by devel/scanprov +cLOGOPx # Z added by devel/scanprov +cLOOPx # Z added by devel/scanprov +CLUMP # Z added by devel/scanprov +CLUMP_2IV # Z added by devel/scanprov +CLUMP_2UV # Z added by devel/scanprov +CopFILE # E +CopFILEAV # E +CopFILEGV # E +CopFILEGV_set # E +CopFILE_set # E +CopFILESV # E +cop_free # F added by devel/scanprov +CopLINE # E +CopLINE_dec # Z added by devel/scanprov +CopLINE_inc # Z added by devel/scanprov +CopLINE_set # Z added by devel/scanprov +CopSTASH # E +CopSTASH_eq # E +CopSTASH_ne # Z added by devel/scanprov +CopSTASHPV # E +CopSTASH_set # E +cPADOP # Z added by devel/scanprov +cPADOPo # Z added by devel/scanprov +cPADOPx # Z added by devel/scanprov +cPMOPx # Z added by devel/scanprov +CPPLAST # K added by devel/scanprov +CPPRUN # K added by devel/scanprov +cPVOPx # Z added by devel/scanprov croak # E (Perl_croak) +croak_nocontext # U +cr_textfilter # F added by devel/scanprov +cSVOPo_sv # Z added by devel/scanprov +cSVOP_sv # Z added by devel/scanprov +cSVOPx # Z added by devel/scanprov +cSVOPx_sv # Z added by devel/scanprov +cSVOPx_svp # Z added by devel/scanprov +cUNOPx # Z added by devel/scanprov +cv_dump # F added by devel/scanprov +CvFILE # Z added by devel/scanprov +CVf_LVALUE # Z added by devel/scanprov +CvLVALUE # Z added by devel/scanprov +CvLVALUE_off # Z added by devel/scanprov +CvLVALUE_on # Z added by devel/scanprov +cx_dup # F added by devel/scanprov +CxITERVAR # Z added by devel/scanprov +CxPADLOOP # Z added by devel/scanprov +CXp_TRYBLOCK # Z added by devel/scanprov +CXt_FORMAT # Z added by devel/scanprov +CxTRYBLOCK # Z added by devel/scanprov die # E (Perl_die) -do_gv_dump # E -do_gvgv_dump # E -do_hv_dump # E -do_magic_dump # E -do_op_dump # E +die_nocontext # U +dNOOP # E +do_aexec5 # F added by devel/scanprov +do_exec3 # F added by devel/scanprov +do_gv_dump # F added by devel/scanprov +do_gvgv_dump # F added by devel/scanprov +do_hv_dump # F added by devel/scanprov +do_magic_dump # F added by devel/scanprov +do_oddball # F added by devel/scanprov +dooneliner # F added by devel/scanprov +do_op_dump # F added by devel/scanprov do_open9 # E -do_pmop_dump # E -do_sv_dump # E +do_pmop_dump # F added by devel/scanprov +do_sv_dump # F added by devel/scanprov DO_UTF8 # E +do_vecget # F added by devel/scanprov +Drand01 # K added by devel/scanprov +dTHXa # E +dTHXo # Z added by devel/scanprov +dTHXx # Z added by devel/scanprov dump_all # U dump_eval # U dump_form # U -dump_indent # E +dump_indent # F added by devel/scanprov dump_packsubs # U dump_sub # U -dump_vindent # E +dump_vindent # F added by devel/scanprov +dup_attrlist # F added by devel/scanprov +dXSTARG # M added by devel/scanprov +EMBEDMYMALLOC # Z added by devel/scanprov +EVAL_INEVAL # Z added by devel/scanprov +EVAL_KEEPERR # Z added by devel/scanprov +EVAL_NULL # Z added by devel/scanprov eval_pv # E (perl_eval_pv) eval_sv # E (perl_eval_sv) +EVAL_WARNONLY # Z added by devel/scanprov +FBMcf_TAIL # Z added by devel/scanprov +FBMcf_TAIL_DOLLAR # Z added by devel/scanprov +FBMcf_TAIL_DOLLARM # Z added by devel/scanprov +FBMcf_TAIL_Z # Z added by devel/scanprov +FBMcf_TAIL_z # Z added by devel/scanprov +FBMrf_MULTILINE # Z added by devel/scanprov +fcntl # Z added by devel/scanprov +FFLUSH_NULL # K added by devel/scanprov +find_byclass # F added by devel/scanprov form # E (Perl_form) +form_nocontext # U +fprintf_nocontext # U +FSEEKSIZE # Z added by devel/scanprov +ftruncate # Z added by devel/scanprov get_av # E (perl_get_av) get_context # U get_cv # E (perl_get_cv) +getenv_len # F added by devel/scanprov get_hv # E (perl_get_hv) +get_mstats # F added by devel/scanprov +getpid # Z added by devel/scanprov get_ppaddr # E get_sv # E (perl_get_sv) +Gid_t_f # K added by devel/scanprov +Gid_t_sign # K added by devel/scanprov +Gid_t_size # K added by devel/scanprov gv_dump # E -I16SIZE # E -I16TYPE # E -I32SIZE # E -I32TYPE # E -I8SIZE # E -I8TYPE # E +GvFILE # Z added by devel/scanprov +GvIN_PAD # Z added by devel/scanprov +GvIN_PAD_off # Z added by devel/scanprov +GvIN_PAD_on # Z added by devel/scanprov +G_WARN_ALL_MASK # Z added by devel/scanprov +G_WARN_ALL_OFF # Z added by devel/scanprov +G_WARN_ALL_ON # Z added by devel/scanprov +G_WARN_OFF # Z added by devel/scanprov +G_WARN_ON # Z added by devel/scanprov +G_WARN_ONCE # Z added by devel/scanprov +HAS_ACCESS # K added by devel/scanprov +HAS_ATOLL # K added by devel/scanprov +HAS_DRAND48_PROTO # K added by devel/scanprov +HAS_EACCESS # K added by devel/scanprov +HAS_FD_SET # K added by devel/scanprov +HAS_FSEEKO # K added by devel/scanprov +HAS_FTELLO # K added by devel/scanprov +HAS_GETCWD # K added by devel/scanprov +HAS_GETHOSTNAME # K added by devel/scanprov +HAS_GETSPNAM # K added by devel/scanprov +HAS_INT64_T # K added by devel/scanprov +HAS_LDBL_DIG # K added by devel/scanprov +HAS_LSEEK_PROTO # K added by devel/scanprov +HAS_MADVISE # K added by devel/scanprov +HAS_MKDTEMP # K added by devel/scanprov +HAS_MKSTEMP # K added by devel/scanprov +HAS_MKSTEMPS # K added by devel/scanprov +HAS_MMAP # K added by devel/scanprov +HAS_MPROTECT # K added by devel/scanprov +HAS_MSYNC # K added by devel/scanprov +HAS_MUNMAP # K added by devel/scanprov +HAS_SQRTL # K added by devel/scanprov +HAS_STRTOLD # K added by devel/scanprov +HAS_STRTOLL # K added by devel/scanprov +HAS_STRTOULL # K added by devel/scanprov +HAS_STRTOUQ # K added by devel/scanprov +HAS_TELLDIR_PROTO # K added by devel/scanprov +HINT_FILETEST_ACCESS # Z added by devel/scanprov +HINT_UTF8 # Z added by devel/scanprov +hv_magic_check # F added by devel/scanprov +I16SIZE # K added by devel/scanprov +I16TYPE # K added by devel/scanprov +I32SIZE # K added by devel/scanprov +I32TYPE # K added by devel/scanprov +I64SIZE # K added by devel/scanprov +I64TYPE # K added by devel/scanprov +I8SIZE # K added by devel/scanprov +I8TYPE # K added by devel/scanprov +I_INTTYPES # K added by devel/scanprov +I_NETINET_TCP # K added by devel/scanprov +init_i18nl10n # F added by devel/scanprov +init_i18nl14n # F added by devel/scanprov INT2PTR # E +IOf_FAKE_DIRP # Z added by devel/scanprov +I_POLL # K added by devel/scanprov isALNUMC # E isALNUMC_LC # E +isALNUM_LC_utf8 # Z added by devel/scanprov +isALNUM_uni # Z added by devel/scanprov +isALNUM_utf8 # Z added by devel/scanprov +isALPHA_LC_utf8 # Z added by devel/scanprov +isALPHA_uni # Z added by devel/scanprov isASCII # E +isASCII_uni # Z added by devel/scanprov isCNTRL # E isCNTRL_LC # E +isCNTRL_LC_utf8 # Z added by devel/scanprov +isCNTRL_uni # Z added by devel/scanprov +isDIGIT_LC_utf8 # Z added by devel/scanprov +isDIGIT_uni # Z added by devel/scanprov isGRAPH # E isGRAPH_LC # E +isGRAPH_LC_utf8 # Z added by devel/scanprov +isGRAPH_uni # Z added by devel/scanprov +I_SHADOW # K added by devel/scanprov +is_handle_constructor # F added by devel/scanprov +isIDFIRST_LC_utf8 # Z added by devel/scanprov +isIDFIRST_uni # Z added by devel/scanprov +isLEXWARN_off # Z added by devel/scanprov +isLEXWARN_on # Z added by devel/scanprov +isLOWER_LC_utf8 # Z added by devel/scanprov +isLOWER_uni # Z added by devel/scanprov +IS_NUMERIC_RADIX # Z added by devel/scanprov +IS_PADCONST # Z added by devel/scanprov +IS_PADGV # Z added by devel/scanprov +isPRINT_LC_utf8 # Z added by devel/scanprov +isPRINT_uni # Z added by devel/scanprov isPUNCT # E isPUNCT_LC # E +isPUNCT_LC_utf8 # Z added by devel/scanprov +isPUNCT_uni # Z added by devel/scanprov +isSPACE_LC_utf8 # Z added by devel/scanprov +isSPACE_uni # Z added by devel/scanprov +isUPPER_LC_utf8 # Z added by devel/scanprov +isUPPER_uni # Z added by devel/scanprov is_utf8_char # U +isWARN_on # Z added by devel/scanprov +isWARN_ONCE # Z added by devel/scanprov isXDIGIT # E +isXDIGIT_uni # Z added by devel/scanprov +I_SYSLOG # K added by devel/scanprov +I_SYSUIO # K added by devel/scanprov +I_SYSUTSNAME # K added by devel/scanprov IVdf # E -IVSIZE # E -IVTYPE # E +IV_DIG # Z added by devel/scanprov +IV_IS_QUAD # Z added by devel/scanprov +IVSIZE # K added by devel/scanprov +IVTYPE # K added by devel/scanprov +JMPENV_BOOTSTRAP # Z added by devel/scanprov +KEY_CHECK # Z added by devel/scanprov +KEY_our # Z added by devel/scanprov +kGVOP_gv # Z added by devel/scanprov +kPADOP # Z added by devel/scanprov +kSVOP_sv # Z added by devel/scanprov +LDBL_DIG # Z added by devel/scanprov +link # Z added by devel/scanprov load_module # E -LSEEKSIZE # E +load_module_nocontext # U +lockf # Z added by devel/scanprov +LSEEKSIZE # K added by devel/scanprov magic_dump # E +magic_killbackrefs # F added by devel/scanprov +magic_regdata_cnt # F added by devel/scanprov +magic_regdatum_get # F added by devel/scanprov +MALLOC_OVERHEAD # Z added by devel/scanprov +MAXPATHLEN # Z added by devel/scanprov +MEMBER_TO_FPTR # Z added by devel/scanprov mess # E (Perl_mess) +mess_nocontext # U +Mmap_t # K added by devel/scanprov +mode_from_discipline # F added by devel/scanprov +MULTIPLICITY # K added by devel/scanprov my_atof # E +my_attrs # F added by devel/scanprov +my_binmode # Z added by devel/scanprov my_fflush_all # E +my_kid # F added by devel/scanprov newANONATTRSUB # E newATTRSUB # E +new_collate # F added by devel/scanprov +new_ctype # F added by devel/scanprov +new_numeric # F added by devel/scanprov +newPADOP # F added by devel/scanprov newSVnv # E (Perl_newSVnv) newSVpvf # E (Perl_newSVpvf) +newSVpvf_nocontext # U newSVuv # E newXS # E (Perl_newXS) newXSproto # E -NVTYPE # E +NODE_SZ_STR # Z added by devel/scanprov +NUM2PTR # M added by devel/scanprov +NV_DIG # Z added by devel/scanprov +NVTYPE # K added by devel/scanprov +NV_WITHIN_IV # Z added by devel/scanprov +NV_WITHIN_UV # Z added by devel/scanprov +OA_PADOP # Z added by devel/scanprov +OA_PVOP_OR_SVOP # Z added by devel/scanprov +OA_TARGLEX # Z added by devel/scanprov +O_BINARY # Z added by devel/scanprov +O_CREAT # Z added by devel/scanprov +OCSHIFT # Z added by devel/scanprov +Off # Z added by devel/scanprov +Off_t_size # K added by devel/scanprov +op_clear # F added by devel/scanprov op_dump # E OPpEARLY_CV # E +OPpENTERSUB_HASTARG # Z added by devel/scanprov +OPpENTERSUB_INARGS # Z added by devel/scanprov +OPpEXISTS_SUB # Z added by devel/scanprov +OPpOPEN_IN_CRLF # Z added by devel/scanprov +OPpOPEN_IN_RAW # Z added by devel/scanprov +OPpOPEN_OUT_CRLF # Z added by devel/scanprov +OPpOPEN_OUT_RAW # Z added by devel/scanprov +OPpOUR_INTRO # Z added by devel/scanprov +OPpREFCOUNTED # Z added by devel/scanprov +OPpSORT_INTEGER # Z added by devel/scanprov +OPpSORT_NUMERIC # Z added by devel/scanprov +OPpSORT_REVERSE # Z added by devel/scanprov +OPpTARGET_MY # Z added by devel/scanprov +OPpTRANS_FROM_UTF # Z added by devel/scanprov +OPpTRANS_GROWS # Z added by devel/scanprov +OPpTRANS_IDENTICAL # Z added by devel/scanprov +OPpTRANS_TO_UTF # Z added by devel/scanprov +OpREFCNT_dec # Z added by devel/scanprov +OpREFCNT_inc # Z added by devel/scanprov +OP_REFCNT_INIT # Z added by devel/scanprov +OP_REFCNT_LOCK # Z added by devel/scanprov +OpREFCNT_set # Z added by devel/scanprov +OP_REFCNT_TERM # Z added by devel/scanprov +OP_REFCNT_UNLOCK # Z added by devel/scanprov +O_RDONLY # Z added by devel/scanprov +O_RDWR # Z added by devel/scanprov +O_TEXT # Z added by devel/scanprov +O_WRONLY # Z added by devel/scanprov +parse_body # F added by devel/scanprov +PERL_ALLOC_CHECK # Z added by devel/scanprov +perl_alloc_using # F added by devel/scanprov +PERL_API_REVISION # Z added by devel/scanprov +PERL_API_SUBVERSION # Z added by devel/scanprov +PERL_API_VERSION # Z added by devel/scanprov +PERL_ASYNC_CHECK # Z added by devel/scanprov +Perl_atan2 # Z added by devel/scanprov +Perl_atof # Z added by devel/scanprov +Perl_calloc # Z added by devel/scanprov +PERL_CKDEF # Z added by devel/scanprov +perl_clone # F added by devel/scanprov +perl_clone_using # F added by devel/scanprov +Perl_cos # Z added by devel/scanprov +PERLDBf_NAMEANON # Z added by devel/scanprov +PERLDBf_NAMEEVAL # Z added by devel/scanprov +PERLDB_NAMEANON # Z added by devel/scanprov +PERLDB_NAMEEVAL # Z added by devel/scanprov +PerlDir_mapA # Z added by devel/scanprov +PerlDir_mapW # Z added by devel/scanprov +PerlEnv_clearenv # Z added by devel/scanprov +PerlEnv_ENVgetenv # Z added by devel/scanprov +PerlEnv_ENVgetenv_len # Z added by devel/scanprov +PerlEnv_free_childdir # Z added by devel/scanprov +PerlEnv_free_childenv # Z added by devel/scanprov +PerlEnv_get_childdir # Z added by devel/scanprov +PerlEnv_get_childenv # Z added by devel/scanprov +PerlEnv_get_child_IO # Z added by devel/scanprov +PerlEnv_getenv_len # Z added by devel/scanprov +PerlEnv_os_id # Z added by devel/scanprov +PerlEnv_vendorlib_path # Z added by devel/scanprov +Perl_error_log # Z added by devel/scanprov PERL_EXIT_EXPECTED # E +Perl_exp # Z added by devel/scanprov +PERL_FILE_IS_ABSOLUTE # Z added by devel/scanprov +Perl_floor # Z added by devel/scanprov +PERL_FLUSHALL_FOR_CHILD # Z added by devel/scanprov +Perl_fmod # Z added by devel/scanprov +Perl_frexp # Z added by devel/scanprov +PERL_FS_VER_FMT # Z added by devel/scanprov +PERL_GET_CONTEXT # Z added by devel/scanprov +PERL_GET_INTERP # Z added by devel/scanprov +PERL_GET_THX # Z added by devel/scanprov +PERL_HV_ARRAY_ALLOC_BYTES # Z added by devel/scanprov +PERL_IMPLICIT_CONTEXT # Z added by devel/scanprov PerlIO_printf # E PerlIO_stdoutf # E +PerlLIO_link # Z added by devel/scanprov PERL_LOADMOD_DENY # E PERL_LOADMOD_IMPORT_OPS # E PERL_LOADMOD_NOIMPORT # E +Perl_log # Z added by devel/scanprov +Perl_malloc # Z added by devel/scanprov +PerlMem_calloc # Z added by devel/scanprov +PerlMem_free_lock # Z added by devel/scanprov +PerlMem_get_lock # Z added by devel/scanprov +PerlMem_is_locked # Z added by devel/scanprov +PerlMemParse_calloc # Z added by devel/scanprov +PerlMemParse_free # Z added by devel/scanprov +PerlMemParse_free_lock # Z added by devel/scanprov +PerlMemParse_get_lock # Z added by devel/scanprov +PerlMemParse_is_locked # Z added by devel/scanprov +PerlMemParse_malloc # Z added by devel/scanprov +PerlMemParse_realloc # Z added by devel/scanprov +PerlMemShared_calloc # Z added by devel/scanprov +PerlMemShared_free # Z added by devel/scanprov +PerlMemShared_free_lock # Z added by devel/scanprov +PerlMemShared_get_lock # Z added by devel/scanprov +PerlMemShared_is_locked # Z added by devel/scanprov +PerlMemShared_malloc # Z added by devel/scanprov +PerlMemShared_realloc # Z added by devel/scanprov +Perl_mfree # Z added by devel/scanprov +Perl_modf # Z added by devel/scanprov perl_parse # E (perl_parse) +PERL_PATCHLEVEL_H_IMPLICIT # Z added by devel/scanprov +Perl_pow # Z added by devel/scanprov +PERL_PPDEF # Z added by devel/scanprov +Perl_pp_i_postdec # Z added by devel/scanprov +Perl_pp_i_postinc # Z added by devel/scanprov +Perl_pp_i_predec # Z added by devel/scanprov +Perl_pp_i_preinc # Z added by devel/scanprov +PERL_PRIfldbl # K added by devel/scanprov +PERL_PRIgldbl # K added by devel/scanprov +PerlProc_DynaLoad # Z added by devel/scanprov +PerlProc_fork # Z added by devel/scanprov +PerlProc_GetOSError # Z added by devel/scanprov +PerlProc_getpid # Z added by devel/scanprov +Perl_realloc # Z added by devel/scanprov PERL_REVISION # E +PERL_SET_CONTEXT # Z added by devel/scanprov +PERL_SET_INTERP # Z added by devel/scanprov +PERL_SET_THX # Z added by devel/scanprov +Perl_sharepvn # Z added by devel/scanprov +Perl_sin # Z added by devel/scanprov +PerlSock_closesocket # Z added by devel/scanprov +Perl_sqrt # Z added by devel/scanprov +PERL_STACK_OVERFLOW_CHECK # Z added by devel/scanprov PERL_SUBVERSION # E PERL_SYS_INIT3 # E +PERLVARA # Z added by devel/scanprov PERL_VERSION # E +PERL_WAIT_FOR_CHILDREN # Z added by devel/scanprov +PHOSTNAME # K added by devel/scanprov +PL_argvout_stack # Z added by devel/scanprov +PL_checkav # Z added by devel/scanprov +PL_Dir # Z added by devel/scanprov +PL_dumpindent # Z added by devel/scanprov +PL_efloatbuf # Z added by devel/scanprov +PL_efloatsize # Z added by devel/scanprov +PL_Env # Z added by devel/scanprov +PL_errors # Z added by devel/scanprov PL_exit_flags # E +PL_LIO # Z added by devel/scanprov +PL_Mem # Z added by devel/scanprov +PL_MemParse # Z added by devel/scanprov +PL_MemShared # Z added by devel/scanprov +PL_Proc # Z added by devel/scanprov +PL_psig_name # Z added by devel/scanprov +PL_psig_ptr # Z added by devel/scanprov +PL_ptr_table # Z added by devel/scanprov +PL_reg_curpm # Z added by devel/scanprov PL_runops # E +PL_Sock # Z added by devel/scanprov +PL_srand_called # Z added by devel/scanprov +PL_stderrgv # Z added by devel/scanprov +PL_StdIO # Z added by devel/scanprov +PL_utf8_mark # Z added by devel/scanprov +PL_utf8_tolower # Z added by devel/scanprov +PL_utf8_totitle # Z added by devel/scanprov +PL_utf8_toupper # Z added by devel/scanprov +PL_watchaddr # Z added by devel/scanprov +PL_watchok # Z added by devel/scanprov pmop_dump # E POPn # E POPul # E +pthread_attr_init # Z added by devel/scanprov +PTHREAD_ATTR_SETDETACHSTATE # Z added by devel/scanprov +PTHREAD_CREATE # Z added by devel/scanprov +PTHREAD_GETSPECIFIC_INT # Z added by devel/scanprov pTHX # E +pTHX_1 # Z added by devel/scanprov +pTHX_2 # Z added by devel/scanprov +pTHX_3 # Z added by devel/scanprov +pTHX_4 # Z added by devel/scanprov +pTHXo # Z added by devel/scanprov +pTHXx # Z added by devel/scanprov PTR2IV # E PTR2NV # E PTR2UV # E +PTRV # M added by devel/scanprov PUSHn # E pv_display # E -reginitcolors # E +pWARN_ALL # Z added by devel/scanprov +pWARN_NONE # Z added by devel/scanprov +pWARN_STD # Z added by devel/scanprov +qerror # F added by devel/scanprov +QUAD_IS_INT # K added by devel/scanprov +QUAD_IS_INT64_T # K added by devel/scanprov +QUAD_IS_LONG # K added by devel/scanprov +QUAD_IS_LONG_LONG # K added by devel/scanprov +QUADKIND # K added by devel/scanprov +Rand_seed_t # K added by devel/scanprov +recv # Z added by devel/scanprov +REG_ANY # Z added by devel/scanprov +reginitcolors # F added by devel/scanprov +REG_MAGIC # Z added by devel/scanprov +re_intuit_start # F added by devel/scanprov +re_intuit_string # F added by devel/scanprov +report_uninit # F added by devel/scanprov require_pv # E (perl_require_pv) +REXEC_IGNOREPOS # Z added by devel/scanprov +REXEC_NOT_FIRST # Z added by devel/scanprov +REXEC_SCREAM # Z added by devel/scanprov +run_body # F added by devel/scanprov +RX_MATCH_COPIED # Z added by devel/scanprov +RX_MATCH_COPIED_off # Z added by devel/scanprov +RX_MATCH_COPIED_on # Z added by devel/scanprov +RX_MATCH_COPIED_set # Z added by devel/scanprov safesyscalloc # U safesysfree # U safesysmalloc # U safesysrealloc # U save_alloc # E -save_destructor # E (Perl_save_destructor) -save_destructor_x # E -save_I8 # E -save_re_context # E +SAVECOMPPAD # Z added by devel/scanprov +SAVECOPFILE # Z added by devel/scanprov +SAVECOPLINE # Z added by devel/scanprov +SAVEDESTRUCTOR # E +save_destructor_x # F added by devel/scanprov +SAVEDESTRUCTOR_X # Z added by devel/scanprov +save_I8 # F added by devel/scanprov +SAVEI8 # E +save_re_context # F added by devel/scanprov +SAVEt_ALLOC # Z added by devel/scanprov +SAVEt_COMPPAD # Z added by devel/scanprov +SAVEt_DESTRUCTOR_X # Z added by devel/scanprov +SAVEt_I8 # Z added by devel/scanprov +SAVEt_VPTR # Z added by devel/scanprov save_vptr # E +SAVEVPTR # Z added by devel/scanprov +sb_rflags # Z added by devel/scanprov +scalar_mod_type # F added by devel/scanprov scan_bin # E scan_hex # E (Perl_scan_hex) scan_oct # E (Perl_scan_oct) +SCHED_YIELD # K added by devel/scanprov +seedDrand01 # K added by devel/scanprov +semun # Z added by devel/scanprov set_context # U +SET_MARK_OFFSET # Z added by devel/scanprov +set_numeric_radix # F added by devel/scanprov +set_numeric_standard # F added by devel/scanprov +S_IEXEC # Z added by devel/scanprov +simplify_sort # F added by devel/scanprov +S_IREAD # Z added by devel/scanprov +S_IRWXG # Z added by devel/scanprov +S_IRWXO # Z added by devel/scanprov +S_IRWXU # Z added by devel/scanprov +SITELIB_STEM # K added by devel/scanprov +S_IWRITE # Z added by devel/scanprov +Size_t_size # K added by devel/scanprov +Slab_Alloc # F added by devel/scanprov +Sock_size_t # K added by devel/scanprov +specialWARN # Z added by devel/scanprov +SSNEW # Z added by devel/scanprov +SSNEWa # Z added by devel/scanprov +SSPOPDXPTR # Z added by devel/scanprov +SSPTR # Z added by devel/scanprov +SSPUSHDXPTR # Z added by devel/scanprov +STDIO_PTR_LVALUE # K added by devel/scanprov +STDIO_STREAM_ARRAY # K added by devel/scanprov +STRING # Z added by devel/scanprov +STR_LEN # Z added by devel/scanprov +STR_SZ # Z added by devel/scanprov Strtol # E +strtoll # Z added by devel/scanprov Strtoul # E -str_to_version # E +strtoull # Z added by devel/scanprov +str_to_version # F added by devel/scanprov sv_2pvbyte # U -sv_2pvbyte_nolen # U -sv_2pv_nolen # U sv_2pvutf8 # U -sv_2pvutf8_nolen # U sv_catpvf # E (Perl_sv_catpvf) sv_catpvf_mg # E (Perl_sv_catpvf_mg) +sv_catpvf_mg_nocontext # U +sv_catpvf_nocontext # U +sv_del_backref # F added by devel/scanprov SVf # E +SVf_IVisUV # Z added by devel/scanprov sv_force_normal # U SVf_UTF8 # E SvIOK_notUV # E SvIOK_only_UV # E SvIOK_UV # E sv_len_utf8 # E -sv_nv # E (Perl_sv_nv) SvNV # E SvNV_set # E SvNVX # E SvNVx # E +SvOK_off_exc_UV # Z added by devel/scanprov +SVpad_OUR # Z added by devel/scanprov SvPOK_only_UTF8 # E sv_pos_b2u # E sv_pos_u2b # E -sv_pv # U -sv_pvbyte # U +SVprv_WEAKREF # Z added by devel/scanprov SvPVbyte # E -sv_pvbyten # E -sv_pvbyten_force # E +sv_pvbyten # F added by devel/scanprov +sv_pvbyten_force # F added by devel/scanprov SvPVbyte_nolen # E SvPVbytex # E SvPVbytex_force # E SvPV_nolen # E -sv_pvutf8 # U SvPVutf8 # E SvPVutf8_force # E -sv_pvutf8n # E -sv_pvutf8n_force # E +sv_pvutf8n # F added by devel/scanprov +sv_pvutf8n_force # F added by devel/scanprov SvPVutf8_nolen # E SvPVutf8x # E SvPVutf8x_force # E @@ -168,6 +658,8 @@ sv_setnv_mg # E (Perl_sv_setnv_mg) sv_setpvf # E (Perl_sv_setpvf) sv_setpvf_mg # E (Perl_sv_setpvf_mg) +sv_setpvf_mg_nocontext # U +sv_setpvf_nocontext # U sv_setref_nv # E (Perl_sv_setref_nv) SvUTF8 # E sv_utf8_decode # E @@ -179,18 +671,53 @@ sv_vcatpvf_mg # E sv_vsetpvf # E sv_vsetpvf_mg # E -U16SIZE # E -U16TYPE # E -U32SIZE # E -U32TYPE # E -U8SIZE # E -U8TYPE # E +SvWEAKREF # Z added by devel/scanprov +SvWEAKREF_off # Z added by devel/scanprov +SvWEAKREF_on # Z added by devel/scanprov +sys_intern_dup # F added by devel/scanprov +toLOWER_uni # Z added by devel/scanprov +TOPul # Z added by devel/scanprov +toTITLE_uni # Z added by devel/scanprov +to_uni_lower # F added by devel/scanprov +to_uni_title # F added by devel/scanprov +to_uni_upper # F added by devel/scanprov +toUPPER_uni # Z added by devel/scanprov +truncate # Z added by devel/scanprov +tryAMAGICunDEREF # Z added by devel/scanprov +U16SIZE # K added by devel/scanprov +U16TYPE # K added by devel/scanprov +U32SIZE # K added by devel/scanprov +U32TYPE # K added by devel/scanprov +U64SIZE # K added by devel/scanprov +U64TYPE # K added by devel/scanprov +U8SIZE # K added by devel/scanprov +U8TYPE # K added by devel/scanprov +Uid_t_f # K added by devel/scanprov +Uid_t_sign # K added by devel/scanprov +Uid_t_size # K added by devel/scanprov +UINT32_MIN # Z added by devel/scanprov +UINT64_MIN # Z added by devel/scanprov +Uquad_t # K added by devel/scanprov +USE_64_BIT_ALL # K added by devel/scanprov +USE_64_BIT_INT # K added by devel/scanprov +USE_64_BIT_RAWIO # Z added by devel/scanprov +USE_64_BIT_STDIO # Z added by devel/scanprov +USE_LARGE_FILES # K added by devel/scanprov +USEMYBINMODE # Z added by devel/scanprov +USE_STDIO_BASE # K added by devel/scanprov +USE_STDIO_PTR # K added by devel/scanprov +USE_THREADS # K added by devel/scanprov +utf16_to_utf8 # F added by devel/scanprov +utf16_to_utf8_reversed # F added by devel/scanprov utf8_distance # E utf8_hop # U +UTF8_MAXLEN # Z added by devel/scanprov UTF8SKIP # E +UV_DIG # Z added by devel/scanprov +UV_IS_QUAD # Z added by devel/scanprov UVof # E -UVSIZE # E -UVTYPE # E +UVSIZE # K added by devel/scanprov +UVTYPE # K added by devel/scanprov UVuf # E UVxf # E vcroak # E @@ -198,10 +725,14 @@ vload_module # E vmess # E vnewSVpvf # E +VTBL_regdata # Z added by devel/scanprov +VTBL_regdatum # Z added by devel/scanprov +vTHX # Z added by devel/scanprov vwarn # E vwarner # E warn # E (Perl_warn) WARN_ALL # E +WARN_ALLstring # Z added by devel/scanprov WARN_AMBIGUOUS # E WARN_BAREWORD # E WARN_CLOSED # E @@ -210,6 +741,7 @@ WARN_DEPRECATED # E WARN_DIGIT # E warner # E +warner_nocontext # U WARN_EXEC # E WARN_EXITING # E WARN_GLOB # E @@ -219,6 +751,8 @@ WARN_MALLOC # E WARN_MISC # E WARN_NEWLINE # E +warn_nocontext # U +WARN_NONEstring # Z added by devel/scanprov WARN_NUMERIC # E WARN_ONCE # E WARN_OVERFLOW # E @@ -237,6 +771,7 @@ WARN_SEMICOLON # E WARN_SEVERE # E WARN_SIGNAL # E +WARNsize # Z added by devel/scanprov WARN_SUBSTR # E WARN_SYNTAX # E WARN_TAINT # E @@ -247,90 +782,9 @@ WARN_UTF8 # E WARN_VOID # E XPUSHn # E +XPUSHundef # Z added by devel/scanprov +XSprePUSH # M added by devel/scanprov XSRETURN_NV # E +XSRETURN_PVN # Z added by devel/scanprov XST_mNV # E -CopFILE # M added by devel/scanprov -CopFILEAV # M added by devel/scanprov -CopFILEGV # M added by devel/scanprov -CopFILEGV_set # M added by devel/scanprov -CopFILE_set # M added by devel/scanprov -CopFILESV # M added by devel/scanprov -CopSTASH # M added by devel/scanprov -CopSTASH_eq # M added by devel/scanprov -CopSTASHPV # M added by devel/scanprov -CopSTASHPV_set # M added by devel/scanprov -CopSTASH_set # M added by devel/scanprov -croak_nocontext # M added by devel/scanprov -dNOOP # M added by devel/scanprov -dTHXa # M added by devel/scanprov -dTHXoa # M added by devel/scanprov -dXSTARG # M added by devel/scanprov -mess_nocontext # M added by devel/scanprov -NUM2PTR # M added by devel/scanprov -PL_no_modify # M added by devel/scanprov -PL_ppaddr # M added by devel/scanprov -pTHX_ # M added by devel/scanprov -PTRV # M added by devel/scanprov -sv_catpvf_mg_nocontext # M added by devel/scanprov -sv_setpvf_mg_nocontext # M added by devel/scanprov -warn_nocontext # M added by devel/scanprov -XSprePUSH # M added by devel/scanprov -any_dup # F added by devel/scanprov -apply_attrs # F added by devel/scanprov -cop_free # F added by devel/scanprov -cr_textfilter # F added by devel/scanprov -cv_dump # F added by devel/scanprov -die_nocontext # F added by devel/scanprov -do_aexec5 # F added by devel/scanprov -do_exec3 # F added by devel/scanprov -do_oddball # F added by devel/scanprov -dooneliner # F added by devel/scanprov -do_vecget # F added by devel/scanprov -dup_attrlist # F added by devel/scanprov -find_byclass # F added by devel/scanprov -form_nocontext # F added by devel/scanprov -fprintf_nocontext # F added by devel/scanprov -getenv_len # F added by devel/scanprov -get_mstats # F added by devel/scanprov -GetVars # F added by devel/scanprov -hv_magic_check # F added by devel/scanprov -init_i18nl10n # F added by devel/scanprov -init_i18nl14n # F added by devel/scanprov -is_handle_constructor # F added by devel/scanprov -load_module_nocontext # F added by devel/scanprov -magic_killbackrefs # F added by devel/scanprov -magic_regdata_cnt # F added by devel/scanprov -magic_regdatum_get # F added by devel/scanprov -mode_from_discipline # F added by devel/scanprov -my_attrs # F added by devel/scanprov -my_kid # F added by devel/scanprov -new_collate # F added by devel/scanprov -new_ctype # F added by devel/scanprov -new_numeric # F added by devel/scanprov -newPADOP # F added by devel/scanprov -newSVpvf_nocontext # F added by devel/scanprov -op_clear # F added by devel/scanprov -parse_body # F added by devel/scanprov -perl_alloc_using # F added by devel/scanprov -perl_clone # F added by devel/scanprov -perl_clone_using # F added by devel/scanprov -qerror # F added by devel/scanprov -re_intuit_start # F added by devel/scanprov -re_intuit_string # F added by devel/scanprov -report_uninit # F added by devel/scanprov -run_body # F added by devel/scanprov -scalar_mod_type # F added by devel/scanprov -set_numeric_radix # F added by devel/scanprov -set_numeric_standard # F added by devel/scanprov -simplify_sort # F added by devel/scanprov -Slab_Alloc # F added by devel/scanprov -sv_catpvf_nocontext # F added by devel/scanprov -sv_del_backref # F added by devel/scanprov -sv_setpvf_nocontext # F added by devel/scanprov -sys_intern_dup # F added by devel/scanprov -to_uni_lower # F added by devel/scanprov -to_uni_title # F added by devel/scanprov -to_uni_upper # F added by devel/scanprov -utf16_to_utf8 # F added by devel/scanprov -utf16_to_utf8_reversed # F added by devel/scanprov -warner_nocontext # F added by devel/scanprov +XST_mPVN # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5006001 perl-5.34.0/dist/Devel-PPPort/parts/base/5006001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5006001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5006001 2020-10-04 22:17:12.000000000 +0000 @@ -1,27 +1,67 @@ 5.006001 +ANYOF_BLANK # Z added by devel/scanprov +ANYOF_NBLANK # Z added by devel/scanprov apply_attrs_string # U bytes_to_utf8 # U +do_trans_complex # F added by devel/scanprov +do_trans_count # F added by devel/scanprov +do_trans_simple # F added by devel/scanprov +dTHXoa # U +find_in_my_stash # F added by devel/scanprov +FREE_THREAD_KEY # Z added by devel/scanprov G_METHOD # E gv_efullname4 # U gv_fullname4 # U +HAS_FREXPL # K added by devel/scanprov +HAS_ISNAN # K added by devel/scanprov +HAS_ISNANL # K added by devel/scanprov +HAS_MODFL # K added by devel/scanprov +IoANY # Z added by devel/scanprov +IoTYPE_APPEND # Z added by devel/scanprov +IoTYPE_CLOSED # Z added by devel/scanprov +IoTYPE_PIPE # Z added by devel/scanprov +IoTYPE_RDONLY # Z added by devel/scanprov +IoTYPE_RDWR # Z added by devel/scanprov +IoTYPE_SOCKET # Z added by devel/scanprov +IoTYPE_STD # Z added by devel/scanprov +IoTYPE_WRONLY # Z added by devel/scanprov isBLANK # U isBLANK_LC # U +isBLANK_LC_uni # Z added by devel/scanprov +isBLANK_LC_utf8 # Z added by devel/scanprov +isBLANK_uni # Z added by devel/scanprov isPSXSPC # U isPSXSPC_LC # U +isPSXSPC_LC_utf8 # Z added by devel/scanprov +isPSXSPC_uni # Z added by devel/scanprov is_utf8_string # U +isWARNf_on # Z added by devel/scanprov +magic_regdatum_set # F added by devel/scanprov NVef # E NVff # E NVgf # E -NVSIZE # E +NV_MANT_DIG # Z added by devel/scanprov +NV_MAX # Z added by devel/scanprov +NV_MIN # Z added by devel/scanprov +NV_PRESERVES_UV_BITS # K added by devel/scanprov +NVSIZE # K added by devel/scanprov +OP_IS_FILETEST # Z added by devel/scanprov +OP_IS_SOCKET # Z added by devel/scanprov +Perl_atof2 # Z added by devel/scanprov +Perl_isnan # Z added by devel/scanprov +PERL_PRIeldbl # K added by devel/scanprov +PERL_SCNfldbl # K added by devel/scanprov +PL_beginav_save # Z added by devel/scanprov +report_evil_fh # F added by devel/scanprov +SAVECOPFILE_FREE # Z added by devel/scanprov +SAVECOPSTASH_FREE # Z added by devel/scanprov +SAVEGENERICPV # Z added by devel/scanprov save_generic_pvref # U +SAVEt_GENERIC_PVREF # Z added by devel/scanprov SvGAMAGIC # U -utf8_to_bytes # U -do_trans_complex # F added by devel/scanprov -do_trans_count # F added by devel/scanprov -do_trans_simple # F added by devel/scanprov -find_in_my_stash # F added by devel/scanprov -magic_regdatum_set # F added by devel/scanprov -report_evil_fh # F added by devel/scanprov swallow_bom # F added by devel/scanprov sys_intern_clear # F added by devel/scanprov sys_intern_init # F added by devel/scanprov +utf8_to_bytes # U +xio_any # Z added by devel/scanprov +xio_dirp # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5007000 perl-5.34.0/dist/Devel-PPPort/parts/base/5007000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5007000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5007000 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,2 @@ 5.007000 +NO_LOCALE # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5007001 perl-5.34.0/dist/Devel-PPPort/parts/base/5007001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5007001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5007001 2020-10-04 22:17:12.000000000 +0000 @@ -1,8 +1,78 @@ 5.007001 +ASCII_TO_NATIVE # Z added by devel/scanprov bytes_from_utf8 # U -despatch_signals # U +CLONEf_COPY_STACKS # Z added by devel/scanprov +CLONEf_KEEP_PTR_TABLE # Z added by devel/scanprov +CvCONST # Z added by devel/scanprov +CvCONST_off # Z added by devel/scanprov +CvCONST_on # Z added by devel/scanprov +CVf_CONST # Z added by devel/scanprov +DEBUG_c_FLAG # Z added by devel/scanprov +DEBUG_c_TEST # Z added by devel/scanprov +DEBUG_DB_RECURSE_FLAG # Z added by devel/scanprov +DEBUG_D_FLAG # Z added by devel/scanprov +DEBUG_D_TEST # Z added by devel/scanprov +DEBUG_f_FLAG # Z added by devel/scanprov +DEBUG_f_TEST # Z added by devel/scanprov +DEBUG_l_FLAG # Z added by devel/scanprov +DEBUG_l_TEST # Z added by devel/scanprov +DEBUG_MASK # Z added by devel/scanprov +DEBUG_m_FLAG # Z added by devel/scanprov +DEBUG_m_TEST # Z added by devel/scanprov +DEBUG_o_FLAG # Z added by devel/scanprov +DEBUG_o_TEST # Z added by devel/scanprov +DEBUG_P_FLAG # Z added by devel/scanprov +DEBUG_p_FLAG # Z added by devel/scanprov +DEBUG_P_TEST # Z added by devel/scanprov +DEBUG_p_TEST # Z added by devel/scanprov +DEBUG_R # Z added by devel/scanprov +DEBUG_R_FLAG # Z added by devel/scanprov +DEBUG_r_FLAG # Z added by devel/scanprov +DEBUG_R_TEST # Z added by devel/scanprov +DEBUG_r_TEST # Z added by devel/scanprov +DEBUG_s_FLAG # Z added by devel/scanprov +DEBUG_s_TEST # Z added by devel/scanprov +DEBUG_T # Z added by devel/scanprov +DEBUG_T_FLAG # Z added by devel/scanprov +DEBUG_t_FLAG # Z added by devel/scanprov +DEBUG_TOP_FLAG # Z added by devel/scanprov +DEBUG_T_TEST # Z added by devel/scanprov +DEBUG_t_TEST # Z added by devel/scanprov +DEBUG_u_FLAG # Z added by devel/scanprov +DEBUG_u_TEST # Z added by devel/scanprov +DEBUG_X_FLAG # Z added by devel/scanprov +DEBUG_x_FLAG # Z added by devel/scanprov +DEBUG_X_TEST # Z added by devel/scanprov +DEBUG_x_TEST # Z added by devel/scanprov +despatch_signals # F added by devel/scanprov do_openn # U +EVAL_INREQUIRE # Z added by devel/scanprov +EXEC_ARGV_CAST # Z added by devel/scanprov +expect_number # F added by devel/scanprov +FCNTL_CAN_LOCK # K added by devel/scanprov +FF_0DECIMAL # Z added by devel/scanprov gv_handler # U +HAS_FSYNC # K added by devel/scanprov +HAS_GETITIMER # K added by devel/scanprov +HAS_GETPAGESIZE # K added by devel/scanprov +HAS_READV # K added by devel/scanprov +HAS_RECVMSG # K added by devel/scanprov +HAS_SBRK_PROTO # K added by devel/scanprov +HAS_SENDMSG # K added by devel/scanprov +HAS_SETITIMER # K added by devel/scanprov +HAS_SIGPROCMASK # K added by devel/scanprov +HAS_SOCKATMARK # K added by devel/scanprov +HAS_STRTOQ # K added by devel/scanprov +HAS_STRUCT_CMSGHDR # K added by devel/scanprov +HAS_STRUCT_MSGHDR # K added by devel/scanprov +HAS_UALARM # K added by devel/scanprov +HAS_USLEEP # K added by devel/scanprov +HAS_WRITEV # K added by devel/scanprov +HeKLEN_UTF8 # Z added by devel/scanprov +HEK_UTF8 # Z added by devel/scanprov +HeKUTF8 # Z added by devel/scanprov +INCLUDE_PROTOTYPES # Z added by devel/scanprov +INT64_C # Z added by devel/scanprov isALNUM_LC_uvchr # U isALPHA_LC_uvchr # U isCNTRL_LC_uvchr # U @@ -15,39 +85,175 @@ isPUNCT_LC_uvchr # U isSPACE_LC_uvchr # U isUPPER_LC_uvchr # U +LONG_DOUBLE_EQUALS_DOUBLE # Z added by devel/scanprov +LVRET # Z added by devel/scanprov +magic_freeovrld # F added by devel/scanprov my_popen_list # U +NATIVE_TO_ASCII # Z added by devel/scanprov NATIVE_TO_UNI # U +NATIVE_TO_UTF # Z added by devel/scanprov +NEED_VA_COPY # K added by devel/scanprov newSVpvn_share # U +OPpMAYBE_LVSUB # Z added by devel/scanprov PerlIO_apply_layers # U +PerlIOArg # Z added by devel/scanprov +PerlIOBase # Z added by devel/scanprov PerlIO_binmode # U PerlIO_debug # U +PERLIO_F_APPEND # Z added by devel/scanprov +PERLIO_F_CANREAD # Z added by devel/scanprov +PERLIO_F_CANWRITE # Z added by devel/scanprov +PERLIO_F_CRLF # Z added by devel/scanprov +PERLIO_F_EOF # Z added by devel/scanprov +PERLIO_F_ERROR # Z added by devel/scanprov +PERLIO_F_FASTGETS # Z added by devel/scanprov +PERLIO_F_LINEBUF # Z added by devel/scanprov +PERLIO_F_OPEN # Z added by devel/scanprov +PERLIO_F_RDBUF # Z added by devel/scanprov +PERLIO_F_TEMP # Z added by devel/scanprov +PERLIO_F_TRUNCATE # Z added by devel/scanprov +PERLIO_F_TTY # Z added by devel/scanprov +PERLIO_F_UNBUF # Z added by devel/scanprov +PERLIO_F_UTF8 # Z added by devel/scanprov +PERLIO_F_WRBUF # Z added by devel/scanprov +PERLIO_K_BUFFERED # Z added by devel/scanprov +PERLIO_K_CANCRLF # Z added by devel/scanprov +PERLIO_K_DESTRUCT # Z added by devel/scanprov +PERLIO_K_DUMMY # Z added by devel/scanprov +PERLIO_K_FASTGETS # Z added by devel/scanprov +PERLIO_K_RAW # Z added by devel/scanprov +PERLIO_K_UTF8 # Z added by devel/scanprov +PERLIO_LAYERS # Z added by devel/scanprov +PerlIONext # Z added by devel/scanprov +PerlIOSelf # Z added by devel/scanprov +PERLIO_STDTEXT # Z added by devel/scanprov +PERL_MG_UFUNC # Z added by devel/scanprov +PERL_PRESERVE_IVUV # Z added by devel/scanprov +PerlProc_lasthost # Z added by devel/scanprov +PerlProc_popen_list # Z added by devel/scanprov +PerlSIO_canset_cnt # Z added by devel/scanprov +PerlSIO_clearerr # Z added by devel/scanprov +PerlSIO_fast_gets # Z added by devel/scanprov +PerlSIO_fclose # Z added by devel/scanprov +PerlSIO_fdopen # Z added by devel/scanprov +PerlSIO_fdupopen # Z added by devel/scanprov +PerlSIO_feof # Z added by devel/scanprov +PerlSIO_ferror # Z added by devel/scanprov +PerlSIO_fflush # Z added by devel/scanprov +PerlSIO_fgetc # Z added by devel/scanprov +PerlSIO_fgetpos # Z added by devel/scanprov +PerlSIO_fgets # Z added by devel/scanprov +PerlSIO_fileno # Z added by devel/scanprov +PerlSIO_fopen # Z added by devel/scanprov +PerlSIO_fputc # Z added by devel/scanprov +PerlSIO_fputs # Z added by devel/scanprov +PerlSIO_fread # Z added by devel/scanprov +PerlSIO_freopen # Z added by devel/scanprov +PerlSIO_fseek # Z added by devel/scanprov +PerlSIO_fsetpos # Z added by devel/scanprov +PerlSIO_ftell # Z added by devel/scanprov +PerlSIO_fwrite # Z added by devel/scanprov +PerlSIO_get_base # Z added by devel/scanprov +PerlSIO_get_bufsiz # Z added by devel/scanprov +PerlSIO_get_cnt # Z added by devel/scanprov +PerlSIO_get_ptr # Z added by devel/scanprov +PerlSIO_has_base # Z added by devel/scanprov +PerlSIO_has_cntptr # Z added by devel/scanprov +PerlSIO_init # Z added by devel/scanprov +PerlSIO_printf # Z added by devel/scanprov +PerlSIO_rewind # Z added by devel/scanprov +PerlSIO_setbuf # Z added by devel/scanprov +PerlSIO_set_cnt # Z added by devel/scanprov +PerlSIO_setlinebuf # Z added by devel/scanprov +PerlSIO_set_ptr # Z added by devel/scanprov +PerlSIO_setvbuf # Z added by devel/scanprov +PerlSIO_stderr # Z added by devel/scanprov +PerlSIO_stdin # Z added by devel/scanprov +PerlSIO_stdout # Z added by devel/scanprov +PerlSIO_stdoutf # Z added by devel/scanprov +PerlSIO_tmpfile # Z added by devel/scanprov +PerlSIO_ungetc # Z added by devel/scanprov +PerlSIO_vprintf # Z added by devel/scanprov +PERL_SOCKS_NEED_PROTOTYPES # Z added by devel/scanprov +Perl_start_glob # F added by devel/scanprov +Perl_va_copy # Z added by devel/scanprov +PL_ors_sv # Z added by devel/scanprov +PL_psig_pend # Z added by devel/scanprov +PL_sig_pending # Z added by devel/scanprov +PmopSTASH # Z added by devel/scanprov +PmopSTASHPV # Z added by devel/scanprov +PmopSTASHPV_set # Z added by devel/scanprov +PmopSTASH_set # Z added by devel/scanprov POPpbytex # E printf_nocontext # U -save_mortalizesv # U -scan_num # A +PTR2ul # U +reghop3 # F added by devel/scanprov +reghopmaybe3 # F added by devel/scanprov +SAVEMORTALIZESV # U +SAVEt_MORTALIZESV # Z added by devel/scanprov +SCOPE_SAVES_SIGNAL_MASK # Z added by devel/scanprov +SIG_SIZE # K added by devel/scanprov +SSNEWat # Z added by devel/scanprov +SSNEWt # Z added by devel/scanprov +SSPTRt # Z added by devel/scanprov +StashHANDLER # Z added by devel/scanprov +STDIO_PTR_LVAL_SETS_CNT # K added by devel/scanprov +stdize_locale # F added by devel/scanprov +STRUCT_SV # Z added by devel/scanprov +sv_2iuv_non_preserve # F added by devel/scanprov sv_force_normal_flags # U SV_IMMEDIATE_UNREF # E +SvIV_please # Z added by devel/scanprov sv_setref_uv # U sv_unref_flags # U SvUOK # U sv_utf8_upgrade # E (Perl_sv_utf8_upgrade) +tokereport # F added by devel/scanprov +TOPm1s # Z added by devel/scanprov +TOPp1s # Z added by devel/scanprov +U32_ALIGNMENT_REQUIRED # K added by devel/scanprov +UINT64_C # Z added by devel/scanprov +UNICODE_IS_BYTE_ORDER_MARK # Z added by devel/scanprov +UNICODE_IS_REPLACEMENT # Z added by devel/scanprov +UNICODE_IS_SURROGATE # Z added by devel/scanprov UNICODE_REPLACEMENT # E +UNICODE_SURROGATE_FIRST # Z added by devel/scanprov +UNICODE_SURROGATE_LAST # Z added by devel/scanprov +UNI_IS_INVARIANT # Z added by devel/scanprov +UNISKIP # Z added by devel/scanprov UNI_TO_NATIVE # U +USE_ENVIRON_ARRAY # Z added by devel/scanprov +USE_PERLIO # K added by devel/scanprov +UTF8_ACCUMULATE # Z added by devel/scanprov +UTF8_ALLOW_ANY # Z added by devel/scanprov +UTF8_ALLOW_ANYUV # Z added by devel/scanprov +UTF8_ALLOW_CONTINUATION # Z added by devel/scanprov +UTF8_ALLOW_EMPTY # Z added by devel/scanprov +UTF8_ALLOW_FFFF # Z added by devel/scanprov +UTF8_ALLOW_LONG # Z added by devel/scanprov +UTF8_ALLOW_NON_CONTINUATION # Z added by devel/scanprov +UTF8_ALLOW_SHORT # Z added by devel/scanprov +UTF8_ALLOW_SURROGATE # Z added by devel/scanprov UTF8_CHECK_ONLY # E +UTF8_EIGHT_BIT_HI # Z added by devel/scanprov +UTF8_EIGHT_BIT_LO # Z added by devel/scanprov +UTF8_IS_CONTINUATION # Z added by devel/scanprov +UTF8_IS_CONTINUED # Z added by devel/scanprov +UTF8_IS_DOWNGRADEABLE_START # Z added by devel/scanprov UTF8_IS_INVARIANT # U +UTF8_IS_START # Z added by devel/scanprov utf8_length # U utf8n_to_uvchr # U -utf8_to_uvchr # U -uvchr_to_utf8 # U -UVXf # E -PTR2ul # M added by devel/scanprov -expect_number # F added by devel/scanprov -magic_freeovrld # F added by devel/scanprov -Perl_start_glob # F added by devel/scanprov -reghop3 # F added by devel/scanprov -reghopmaybe3 # F added by devel/scanprov -stdize_locale # F added by devel/scanprov -sv_2iuv_non_preserve # F added by devel/scanprov -tokereport # F added by devel/scanprov utf8n_to_uvuni # F added by devel/scanprov +utf8_to_uvchr # U utf8_to_uvuni # F added by devel/scanprov +UTF_ACCUMULATION_SHIFT # Z added by devel/scanprov +UTF_CONTINUATION_MARK # Z added by devel/scanprov +UTF_CONTINUATION_MASK # Z added by devel/scanprov +UTF_START_MARK # Z added by devel/scanprov +UTF_START_MASK # Z added by devel/scanprov +UTF_TO_NATIVE # Z added by devel/scanprov +uvchr_to_utf8 # U +UVf # Z added by devel/scanprov +UVXf # K added by devel/scanprov +WIN32SCK_IS_STDSCK # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5007002 perl-5.34.0/dist/Devel-PPPort/parts/base/5007002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5007002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5007002 2020-10-04 22:17:12.000000000 +0000 @@ -1,28 +1,54 @@ 5.007002 atfork_lock # U atfork_unlock # U +boot_core_PerlIO # F added by devel/scanprov calloc # U +CLONEf_CLONE_HOST # Z added by devel/scanprov +closest_cop # F added by devel/scanprov +CvFILE_set_from_cop # Z added by devel/scanprov dAX # E +DB_VERSION_MAJOR_CFG # K added by devel/scanprov +DB_VERSION_MINOR_CFG # K added by devel/scanprov +DB_VERSION_PATCH_CFG # K added by devel/scanprov +deb_curcv # F added by devel/scanprov dITEMS # E +dTHXs # Z added by devel/scanprov getcwd_sv # U grok_number # U GROK_NUMERIC_RADIX # U grok_numeric_radix # U +HAS_FCHDIR # K added by devel/scanprov +HAS_FLOCK_PROTO # K added by devel/scanprov +HAS_NL_LANGINFO # K added by devel/scanprov +HAS_PTHREAD_UNCHECKED_GETSPECIFIC_NP # Z added by devel/scanprov +HAS_SOCKATMARK_PROTO # K added by devel/scanprov +HAS_STRFTIME # K added by devel/scanprov +HAS_SYSCALL_PROTO # K added by devel/scanprov +HAS_USLEEP_PROTO # K added by devel/scanprov +HINT_BYTES # Z added by devel/scanprov +I32_MAX_P1 # Z added by devel/scanprov +I_LANGINFO # K added by devel/scanprov +IN_BYTES # Z added by devel/scanprov init_tm # U IN_LOCALE # E IN_LOCALE_COMPILETIME # E IN_LOCALE_RUNTIME # E +INT32_MIN # Z added by devel/scanprov +INT64_MIN # Z added by devel/scanprov IS_NUMBER_GREATER_THAN_UV_MAX # E IS_NUMBER_INFINITY # E IS_NUMBER_IN_UV # E IS_NUMBER_NEG # E IS_NUMBER_NOT_INT # E +IV_MAX_P1 # Z added by devel/scanprov malloc # U mfree # U mini_mktime # U my_strftime # U op_null # U -OSVERS # E +OSVERS # K added by devel/scanprov +PERL_FPU_INIT # Z added by devel/scanprov +PERL_GPROF_MONCONTROL # Z added by devel/scanprov PERL_MAGIC_arylen # E PERL_MAGIC_backref # E PERL_MAGIC_bm # E @@ -53,25 +79,39 @@ PERL_MAGIC_tiedscalar # E PERL_MAGIC_uvar # E PERL_MAGIC_vec # E +PERL_TARGETARCH # K added by devel/scanprov +PERL_UNUSED_DECL # E +PERL_UNUSED_VAR # U +PL_numeric_radix_sv # Z added by devel/scanprov +PL_reentrant_buffer # Z added by devel/scanprov +PL_regex_pad # Z added by devel/scanprov +PL_regex_padav # Z added by devel/scanprov +PM_GETRE # Z added by devel/scanprov +PM_SETRE # Z added by devel/scanprov +PTHREAD_ATFORK # Z added by devel/scanprov +PTHREAD_GETSPECIFIC # Z added by devel/scanprov realloc # U -sv_2pv_flags # U +sv_2pv_flags # F added by devel/scanprov +sv_2pv_nomg # Z added by devel/scanprov sv_catpvn_flags # U sv_catpvn_nomg # U sv_catsv_flags # U sv_catsv_nomg # U SV_GMAGIC # E +SVpad_TYPED # Z added by devel/scanprov +SvPV_flags # U +SvPV_force_flags # U SvPV_force_nomg # U sv_pvn_force_flags # U +sv_pvn_force_nomg # Z added by devel/scanprov SvPV_nomg # U sv_setsv_flags # U sv_setsv_nomg # U sv_utf8_upgrade_flags # U sv_utf8_upgrade_nomg # U -PERL_UNUSED_DECL # M added by devel/scanprov -PERL_UNUSED_VAR # M added by devel/scanprov -SvPV_flags # M added by devel/scanprov -SvPV_force_flags # M added by devel/scanprov -boot_core_PerlIO # F added by devel/scanprov -closest_cop # F added by devel/scanprov -deb_curcv # F added by devel/scanprov -Perl_my_atof2 # F added by devel/scanprov +THREAD_CREATE_NEEDS_STACK # Z added by devel/scanprov +U_32 # Z added by devel/scanprov +U32_MAX_P1 # Z added by devel/scanprov +U32_MAX_P1_HALF # Z added by devel/scanprov +UV_MAX_P1 # Z added by devel/scanprov +UV_MAX_P1_HALF # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5007003 perl-5.34.0/dist/Devel-PPPort/parts/base/5007003 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5007003 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5007003 2020-10-04 22:17:12.000000000 +0000 @@ -1,33 +1,87 @@ 5.007003 +ANYOF_BITMAP_CLEARALL # Z added by devel/scanprov +ANYOF_BITMAP_SETALL # Z added by devel/scanprov +ANYOF_FOLD_SHARP_S # Z added by devel/scanprov +apply_attrs_my # F added by devel/scanprov ckWARN3 # U ckWARN3_d # U ckWARN4 # U ckWARN4_d # U +CopFILE_free # Z added by devel/scanprov custom_op_desc # U custom_op_name # U -cx_dup # E (Perl_cx_dup) deb # U deb_nocontext # U debstack # U debstackptrs # U +DEBUG_J_FLAG # Z added by devel/scanprov +DEBUG_J_TEST # Z added by devel/scanprov fp_dup # A gp_dup # E (Perl_gp_dup) grok_bin # U grok_hex # U grok_oct # U +group_end # F added by devel/scanprov gv_fetchmeth_autoload # U +HAS_DIRFD # K added by devel/scanprov +HAS_FINITE # K added by devel/scanprov +HAS_FINITEL # K added by devel/scanprov +HAS_ISINF # K added by devel/scanprov +HAS_PROCSELFEXE # K added by devel/scanprov he_dup # E (Perl_he_dup) +HINT_SORT_STABLE # Z added by devel/scanprov +HvPLACEHOLDERS # Z added by devel/scanprov +HvTOTALKEYS # Z added by devel/scanprov +HvUSEDKEYS # Z added by devel/scanprov ibcmp_utf8 # U +init_argv_symbols # F added by devel/scanprov IS_NUMBER_NAN # E +measure_struct # F added by devel/scanprov mg_dup # E (Perl_mg_dup) +MGf_COPY # Z added by devel/scanprov +MGf_DUP # Z added by devel/scanprov my_fork # U my_socketpair # U +NEXT_LINE_CHAR # Z added by devel/scanprov +next_symbol # F added by devel/scanprov +NV_EPSILON # Z added by devel/scanprov +NV_INF # Z added by devel/scanprov +NV_MAX_10_EXP # Z added by devel/scanprov +NV_MIN_10_EXP # Z added by devel/scanprov +NV_NAN # Z added by devel/scanprov OP_DESC # U OP_NAME # U +OPpHUSH_VMSISH # Z added by devel/scanprov +OutCopFILE # Z added by devel/scanprov +pack_cat # U +packWARN # U +packWARN2 # U +packWARN3 # U +packWARN4 # U +PERL_DEBUG_PAD # Z added by devel/scanprov +PERL_DEBUG_PAD_ZERO # Z added by devel/scanprov perl_destruct # E (perl_destruct) PERL_EXIT_DESTRUCT_END # E +Perl_fp_class # Z added by devel/scanprov +Perl_fp_class_denorm # Z added by devel/scanprov +Perl_fp_class_inf # Z added by devel/scanprov +Perl_fp_class_nan # Z added by devel/scanprov +Perl_fp_class_ndenorm # Z added by devel/scanprov +Perl_fp_class_ninf # Z added by devel/scanprov +Perl_fp_class_nnorm # Z added by devel/scanprov +Perl_fp_class_norm # Z added by devel/scanprov +Perl_fp_class_nzero # Z added by devel/scanprov +Perl_fp_class_pdenorm # Z added by devel/scanprov +Perl_fp_class_pinf # Z added by devel/scanprov +Perl_fp_class_pnorm # Z added by devel/scanprov +Perl_fp_class_pzero # Z added by devel/scanprov +Perl_fp_class_qnan # Z added by devel/scanprov +Perl_fp_class_snan # Z added by devel/scanprov +Perl_fp_class_zero # Z added by devel/scanprov PerlIO_clearerr # U (PerlIO_clearerr) PerlIO_close # U (PerlIO_close) +PERLIO_DUP_CLONE # Z added by devel/scanprov +PERLIO_DUP_FD # Z added by devel/scanprov PerlIO_eof # U (PerlIO_eof) PerlIO_error # U (PerlIO_error) PerlIO_fileno # U (PerlIO_fileno) @@ -37,6 +91,7 @@ PerlIO_get_bufsiz # U (PerlIO_get_bufsiz) PerlIO_get_cnt # U (PerlIO_get_cnt) PerlIO_get_ptr # U (PerlIO_get_ptr) +PERLIO_K_MULTIARG # Z added by devel/scanprov PerlIO_read # U (PerlIO_read) PerlIO_seek # U (PerlIO_seek) PerlIO_set_cnt # U (PerlIO_set_cnt) @@ -47,19 +102,43 @@ PerlIO_stdout # U (PerlIO_stdout) PerlIO_tell # U (PerlIO_tell) PerlIO_unread # U (PerlIO_unread) +PERLIO_USING_CRLF # Z added by devel/scanprov +PerlIOValid # Z added by devel/scanprov PerlIO_write # U (PerlIO_write) +Perl_isfinite # Z added by devel/scanprov +Perl_isinf # Z added by devel/scanprov PERL_MAGIC_shared # E PERL_MAGIC_shared_scalar # E PERL_MAGIC_uvar_elem # E PERL_SCAN_ALLOW_UNDERSCORES # E PERL_SCAN_DISALLOW_PREFIX # E PERL_SCAN_GREATER_THAN_UV_MAX # E +PERL_UNICODE_MAX # Z added by devel/scanprov +PERL_WRITE_MSG_TO_CONSOLE # Z added by devel/scanprov +PL_custom_op_descs # Z added by devel/scanprov +PL_custom_op_names # Z added by devel/scanprov +PL_debug_pad # Z added by devel/scanprov +PL_def_layerlist # Z added by devel/scanprov +PL_encoding # Z added by devel/scanprov +PL_known_layers # Z added by devel/scanprov +PL_lockhook # Z added by devel/scanprov PL_peepp # E +PL_perlio # Z added by devel/scanprov +PL_savebegin # Z added by devel/scanprov +PL_sharehook # Z added by devel/scanprov +PL_taint_warn # Z added by devel/scanprov +PL_unlockhook # Z added by devel/scanprov +PL_utf8_tofold # Z added by devel/scanprov +PROCSELFEXE_PATH # K added by devel/scanprov pv_uni_display # U rvpv_dup # E +SAVESHAREDPV # Z added by devel/scanprov savesharedpv # U save_shared_pvref # U +SAVEt_SHARED_PVREF # Z added by devel/scanprov +SHARP_S_SKIP # Z added by devel/scanprov si_dup # E (Perl_si_dup) +Slab_Free # F added by devel/scanprov sortsv # U ss_dup # E (Perl_ss_dup) sv_copypv # U @@ -74,17 +153,25 @@ SvSHARE # U sv_uni_display # U SvUNLOCK # U +toFOLD_uni # Z added by devel/scanprov +UNICODE_ALLOW_ANY # Z added by devel/scanprov +UNICODE_ALLOW_SUPER # Z added by devel/scanprov +UNICODE_ALLOW_SURROGATE # Z added by devel/scanprov +UNICODE_GREEK_CAPITAL_LETTER_SIGMA # Z added by devel/scanprov +UNICODE_GREEK_SMALL_LETTER_FINAL_SIGMA # Z added by devel/scanprov +UNICODE_GREEK_SMALL_LETTER_SIGMA # Z added by devel/scanprov +UNI_DISPLAY_BACKSLASH # Z added by devel/scanprov +UNI_DISPLAY_ISPRINT # Z added by devel/scanprov +UNI_DISPLAY_QQ # Z added by devel/scanprov +UNI_DISPLAY_REGEX # Z added by devel/scanprov unpack_str # U +unpackWARN1 # Z added by devel/scanprov +unpackWARN2 # Z added by devel/scanprov +unpackWARN3 # Z added by devel/scanprov +unpackWARN4 # Z added by devel/scanprov +USE_REENTRANT_API # Z added by devel/scanprov +USE_UTF8_IN_NAMES # Z added by devel/scanprov uvchr_to_utf8_flags # U -vdeb # U -dMY_CXT_SV # M added by devel/scanprov -packWARN # M added by devel/scanprov -_pMY_CXT # M added by devel/scanprov -pMY_CXT_ # M added by devel/scanprov -apply_attrs_my # F added by devel/scanprov -group_end # F added by devel/scanprov -init_argv_symbols # F added by devel/scanprov -measure_struct # F added by devel/scanprov -next_symbol # F added by devel/scanprov -Slab_Free # F added by devel/scanprov uvuni_to_utf8_flags # F added by devel/scanprov +vdeb # U +XHvTOTALKEYS # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5008000 perl-5.34.0/dist/Devel-PPPort/parts/base/5008000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5008000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5008000 2020-10-04 22:17:12.000000000 +0000 @@ -1,17 +1,246 @@ 5.008000 +anchored_utf8 # Z added by devel/scanprov +ASCTIME_R_PROTO # K added by devel/scanprov +atoll # Z added by devel/scanprov +check_utf8 # Z added by devel/scanprov +CRYPT_R_PROTO # K added by devel/scanprov +CTERMID_R_PROTO # K added by devel/scanprov +CTIME_R_PROTO # K added by devel/scanprov +CVf_BUILTIN_ATTRS # Z added by devel/scanprov +do_aspawn # F added by devel/scanprov +do_spawn # F added by devel/scanprov +do_spawn_nowait # F added by devel/scanprov +DRAND48_R_PROTO # K added by devel/scanprov +ENDGRENT_R_HAS_FPTR # Z added by devel/scanprov +ENDGRENT_R_PROTO # K added by devel/scanprov +ENDHOSTENT_R_PROTO # K added by devel/scanprov +ENDNETENT_R_PROTO # K added by devel/scanprov +ENDPROTOENT_R_PROTO # K added by devel/scanprov +ENDPWENT_R_HAS_FPTR # Z added by devel/scanprov +ENDPWENT_R_PROTO # K added by devel/scanprov +ENDSERVENT_R_PROTO # K added by devel/scanprov +FD_CLR # Z added by devel/scanprov +FD_ISSET # Z added by devel/scanprov +FD_SET # Z added by devel/scanprov +fd_set # Z added by devel/scanprov +FD_ZERO # Z added by devel/scanprov +float_utf8 # Z added by devel/scanprov +GETGRENT_R_HAS_BUFFER # Z added by devel/scanprov +GETGRENT_R_HAS_FPTR # Z added by devel/scanprov +GETGRENT_R_HAS_PTR # Z added by devel/scanprov +GETGRENT_R_PROTO # K added by devel/scanprov +GETGRGID_R_HAS_BUFFER # Z added by devel/scanprov +GETGRGID_R_HAS_PTR # Z added by devel/scanprov +GETGRGID_R_PROTO # K added by devel/scanprov +GETGRNAM_R_HAS_BUFFER # Z added by devel/scanprov +GETGRNAM_R_HAS_PTR # Z added by devel/scanprov +GETGRNAM_R_PROTO # K added by devel/scanprov +GETHOSTBYADDR_R_HAS_BUFFER # Z added by devel/scanprov +GETHOSTBYADDR_R_HAS_ERRNO # Z added by devel/scanprov +GETHOSTBYADDR_R_HAS_PTR # Z added by devel/scanprov +GETHOSTBYADDR_R_PROTO # K added by devel/scanprov +GETHOSTBYNAME_R_HAS_BUFFER # Z added by devel/scanprov +GETHOSTBYNAME_R_HAS_ERRNO # Z added by devel/scanprov +GETHOSTBYNAME_R_HAS_PTR # Z added by devel/scanprov +GETHOSTBYNAME_R_PROTO # K added by devel/scanprov +GETHOSTENT_R_HAS_BUFFER # Z added by devel/scanprov +GETHOSTENT_R_HAS_ERRNO # Z added by devel/scanprov +GETHOSTENT_R_HAS_PTR # Z added by devel/scanprov +GETHOSTENT_R_PROTO # K added by devel/scanprov +GETLOGIN_R_PROTO # K added by devel/scanprov +GETNETBYADDR_R_HAS_BUFFER # Z added by devel/scanprov +GETNETBYADDR_R_HAS_ERRNO # Z added by devel/scanprov +GETNETBYADDR_R_HAS_PTR # Z added by devel/scanprov +GETNETBYADDR_R_PROTO # K added by devel/scanprov +GETNETBYNAME_R_HAS_BUFFER # Z added by devel/scanprov +GETNETBYNAME_R_HAS_ERRNO # Z added by devel/scanprov +GETNETBYNAME_R_HAS_PTR # Z added by devel/scanprov +GETNETBYNAME_R_PROTO # K added by devel/scanprov +GETNETENT_R_HAS_BUFFER # Z added by devel/scanprov +GETNETENT_R_HAS_ERRNO # Z added by devel/scanprov +GETNETENT_R_HAS_PTR # Z added by devel/scanprov +GETNETENT_R_PROTO # K added by devel/scanprov +GETPROTOBYNAME_R_HAS_BUFFER # Z added by devel/scanprov +GETPROTOBYNAME_R_HAS_PTR # Z added by devel/scanprov +GETPROTOBYNAME_R_PROTO # K added by devel/scanprov +GETPROTOBYNUMBER_R_HAS_BUFFER # Z added by devel/scanprov +GETPROTOBYNUMBER_R_HAS_PTR # Z added by devel/scanprov +GETPROTOBYNUMBER_R_PROTO # K added by devel/scanprov +GETPROTOENT_R_HAS_BUFFER # Z added by devel/scanprov +GETPROTOENT_R_HAS_PTR # Z added by devel/scanprov +GETPROTOENT_R_PROTO # K added by devel/scanprov +GETPWENT_R_HAS_BUFFER # Z added by devel/scanprov +GETPWENT_R_HAS_FPTR # Z added by devel/scanprov +GETPWENT_R_HAS_PTR # Z added by devel/scanprov +GETPWENT_R_PROTO # K added by devel/scanprov +GETPWNAM_R_HAS_BUFFER # Z added by devel/scanprov +GETPWNAM_R_HAS_PTR # Z added by devel/scanprov +GETPWNAM_R_PROTO # K added by devel/scanprov +GETPWUID_R_HAS_PTR # Z added by devel/scanprov +GETPWUID_R_PROTO # K added by devel/scanprov +GETSERVBYNAME_R_HAS_BUFFER # Z added by devel/scanprov +GETSERVBYNAME_R_HAS_PTR # Z added by devel/scanprov +GETSERVBYNAME_R_PROTO # K added by devel/scanprov +GETSERVBYPORT_R_HAS_BUFFER # Z added by devel/scanprov +GETSERVBYPORT_R_HAS_PTR # Z added by devel/scanprov +GETSERVBYPORT_R_PROTO # K added by devel/scanprov +GETSERVENT_R_HAS_BUFFER # Z added by devel/scanprov +GETSERVENT_R_HAS_PTR # Z added by devel/scanprov +GETSERVENT_R_PROTO # K added by devel/scanprov +GETSPNAM_R_HAS_PTR # Z added by devel/scanprov +GETSPNAM_R_PROTO # K added by devel/scanprov +gettimeofday # Z added by devel/scanprov +GMTIME_R_PROTO # K added by devel/scanprov +HAS_TIME # K added by devel/scanprov +HAS_TM_TM_ZONE # K added by devel/scanprov +HEK_FLAGS # Z added by devel/scanprov +HeKFLAGS # Z added by devel/scanprov +HEK_UTF8_off # Z added by devel/scanprov +HEK_UTF8_on # Z added by devel/scanprov +HEK_WASUTF8 # Z added by devel/scanprov +HeKWASUTF8 # Z added by devel/scanprov +HEK_WASUTF8_off # Z added by devel/scanprov +HEK_WASUTF8_on # Z added by devel/scanprov +HvHASKFLAGS # Z added by devel/scanprov +HvHASKFLAGS_off # Z added by devel/scanprov +HvHASKFLAGS_on # Z added by devel/scanprov +HVhek_FREEKEY # Z added by devel/scanprov +HVhek_MASK # Z added by devel/scanprov +HVhek_PLACEHOLD # Z added by devel/scanprov +HVhek_UTF8 # Z added by devel/scanprov +HVhek_WASUTF8 # Z added by devel/scanprov hv_iternext_flags # U HV_ITERNEXT_WANTPLACEHOLDERS # E +hv_notallowed # F added by devel/scanprov hv_store_flags # U +I_CRYPT # K added by devel/scanprov +LOCALTIME_R_PROTO # K added by devel/scanprov +NETDB_R_OBSOLETE # Z added by devel/scanprov nothreadhook # U +PerlProc_gettimeofday # Z added by devel/scanprov +PerlProc_spawnvp # Z added by devel/scanprov +PL_threadhook # Z added by devel/scanprov +PL_utf8_idcont # Z added by devel/scanprov +PL_utf8_idstart # Z added by devel/scanprov Poison # E -WARN_LAYER # E -WARN_THREADS # E -do_aspawn # F added by devel/scanprov -do_spawn # F added by devel/scanprov -do_spawn_nowait # F added by devel/scanprov -hv_notallowed # F added by devel/scanprov +RANDOM_R_PROTO # K added by devel/scanprov +READDIR64_R_PROTO # K added by devel/scanprov +READDIR_R_PROTO # K added by devel/scanprov +reentrant_free # F added by devel/scanprov +reentrant_init # F added by devel/scanprov +REENTRANT_PROTO_B_B # Z added by devel/scanprov +REENTRANT_PROTO_B_BI # Z added by devel/scanprov +REENTRANT_PROTO_B_BW # Z added by devel/scanprov +REENTRANT_PROTO_B_CCD # Z added by devel/scanprov +REENTRANT_PROTO_B_CCS # Z added by devel/scanprov +REENTRANT_PROTO_B_IBI # Z added by devel/scanprov +REENTRANT_PROTO_B_IBW # Z added by devel/scanprov +REENTRANT_PROTO_B_SB # Z added by devel/scanprov +REENTRANT_PROTO_B_SBI # Z added by devel/scanprov +REENTRANT_PROTO_I_BI # Z added by devel/scanprov +REENTRANT_PROTO_I_BW # Z added by devel/scanprov +REENTRANT_PROTO_I_CCSBWR # Z added by devel/scanprov +REENTRANT_PROTO_I_CCSD # Z added by devel/scanprov +REENTRANT_PROTO_I_CII # Z added by devel/scanprov +REENTRANT_PROTO_I_CIISD # Z added by devel/scanprov +REENTRANT_PROTO_I_CSBI # Z added by devel/scanprov +REENTRANT_PROTO_I_CSBIR # Z added by devel/scanprov +REENTRANT_PROTO_I_CSBWR # Z added by devel/scanprov +REENTRANT_PROTO_I_CSBWRE # Z added by devel/scanprov +REENTRANT_PROTO_I_CSD # Z added by devel/scanprov +REENTRANT_PROTO_I_CWISBWRE # Z added by devel/scanprov +REENTRANT_PROTO_I_CWISD # Z added by devel/scanprov +REENTRANT_PROTO_I_D # Z added by devel/scanprov +REENTRANT_PROTO_I_H # Z added by devel/scanprov +REENTRANT_PROTO_I_IBI # Z added by devel/scanprov +REENTRANT_PROTO_I_IBW # Z added by devel/scanprov +REENTRANT_PROTO_I_ICBI # Z added by devel/scanprov +REENTRANT_PROTO_I_ICSBWR # Z added by devel/scanprov +REENTRANT_PROTO_I_ICSD # Z added by devel/scanprov +REENTRANT_PROTO_I_ID # Z added by devel/scanprov +REENTRANT_PROTO_I_IISD # Z added by devel/scanprov +REENTRANT_PROTO_I_ISBWR # Z added by devel/scanprov +REENTRANT_PROTO_I_ISD # Z added by devel/scanprov +REENTRANT_PROTO_I_LISBI # Z added by devel/scanprov +REENTRANT_PROTO_I_LISD # Z added by devel/scanprov +REENTRANT_PROTO_I_SB # Z added by devel/scanprov +REENTRANT_PROTO_I_SBI # Z added by devel/scanprov +REENTRANT_PROTO_I_SBIE # Z added by devel/scanprov +REENTRANT_PROTO_I_SBIH # Z added by devel/scanprov +REENTRANT_PROTO_I_SBIR # Z added by devel/scanprov +REENTRANT_PROTO_I_SBWR # Z added by devel/scanprov +REENTRANT_PROTO_I_SBWRE # Z added by devel/scanprov +REENTRANT_PROTO_I_SD # Z added by devel/scanprov +REENTRANT_PROTO_I_TISD # Z added by devel/scanprov +REENTRANT_PROTO_I_TS # Z added by devel/scanprov +REENTRANT_PROTO_I_TSBI # Z added by devel/scanprov +REENTRANT_PROTO_I_TSBIR # Z added by devel/scanprov +REENTRANT_PROTO_I_TSBWR # Z added by devel/scanprov +REENTRANT_PROTO_I_TSR # Z added by devel/scanprov +REENTRANT_PROTO_I_UISBWRE # Z added by devel/scanprov +REENTRANT_PROTO_S_CBI # Z added by devel/scanprov +REENTRANT_PROTO_S_CCSBI # Z added by devel/scanprov +REENTRANT_PROTO_S_CIISBIE # Z added by devel/scanprov +REENTRANT_PROTO_S_CSBI # Z added by devel/scanprov +REENTRANT_PROTO_S_CSBIE # Z added by devel/scanprov +REENTRANT_PROTO_S_CWISBIE # Z added by devel/scanprov +REENTRANT_PROTO_S_CWISBWIE # Z added by devel/scanprov +REENTRANT_PROTO_S_ICSBI # Z added by devel/scanprov +REENTRANT_PROTO_S_ISBI # Z added by devel/scanprov +REENTRANT_PROTO_S_LISBI # Z added by devel/scanprov +REENTRANT_PROTO_S_SBI # Z added by devel/scanprov +REENTRANT_PROTO_S_SBIE # Z added by devel/scanprov +REENTRANT_PROTO_S_SBW # Z added by devel/scanprov +REENTRANT_PROTO_S_TISBI # Z added by devel/scanprov +REENTRANT_PROTO_S_TSBI # Z added by devel/scanprov +REENTRANT_PROTO_S_TSBIE # Z added by devel/scanprov +REENTRANT_PROTO_S_TWISBIE # Z added by devel/scanprov +REENTRANT_PROTO_V_D # Z added by devel/scanprov +REENTRANT_PROTO_V_H # Z added by devel/scanprov +REENTRANT_PROTO_V_ID # Z added by devel/scanprov +reentrant_retry # F added by devel/scanprov +reentrant_size # F added by devel/scanprov save_hek_flags # F added by devel/scanprov +SETGRENT_R_HAS_FPTR # Z added by devel/scanprov +SETGRENT_R_PROTO # K added by devel/scanprov +SETHOSTENT_R_PROTO # K added by devel/scanprov +SETLOCALE_R_PROTO # K added by devel/scanprov +SETNETENT_R_PROTO # K added by devel/scanprov +SETPROTOENT_R_PROTO # K added by devel/scanprov +SETPWENT_R_HAS_FPTR # Z added by devel/scanprov +SETPWENT_R_PROTO # K added by devel/scanprov +SETSERVENT_R_PROTO # K added by devel/scanprov share_hek_flags # F added by devel/scanprov +SRAND48_R_PROTO # K added by devel/scanprov +SRANDOM_R_PROTO # K added by devel/scanprov +STRERROR_R_PROTO # K added by devel/scanprov +SVphv_HASKFLAGS # Z added by devel/scanprov +sv_pv # Z added by devel/scanprov +sv_pvbyte # Z added by devel/scanprov +sv_pvutf8 # Z added by devel/scanprov +TMPNAM_R_PROTO # K added by devel/scanprov to_byte_substr # F added by devel/scanprov to_utf8_substr # F added by devel/scanprov +TTYNAME_R_PROTO # K added by devel/scanprov +UNICODE_BYTE_ORDER_MARK # Z added by devel/scanprov unshare_hek_or_pvn # F added by devel/scanprov +USE_GRENT_BUFFER # Z added by devel/scanprov +USE_GRENT_FPTR # Z added by devel/scanprov +USE_GRENT_PTR # Z added by devel/scanprov +USE_HOSTENT_BUFFER # Z added by devel/scanprov +USE_HOSTENT_ERRNO # Z added by devel/scanprov +USE_HOSTENT_PTR # Z added by devel/scanprov +USE_NETENT_BUFFER # Z added by devel/scanprov +USE_NETENT_ERRNO # Z added by devel/scanprov +USE_NETENT_PTR # Z added by devel/scanprov +USE_PERL_ATOF # Z added by devel/scanprov +USE_PROTOENT_BUFFER # Z added by devel/scanprov +USE_PROTOENT_PTR # Z added by devel/scanprov +USE_PWENT_BUFFER # Z added by devel/scanprov +USE_PWENT_FPTR # Z added by devel/scanprov +USE_PWENT_PTR # Z added by devel/scanprov +USE_SERVENT_BUFFER # Z added by devel/scanprov +USE_SERVENT_PTR # Z added by devel/scanprov +USE_SPENT_PTR # Z added by devel/scanprov +WARN_LAYER # E +WARN_THREADS # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5008001 perl-5.34.0/dist/Devel-PPPort/parts/base/5008001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5008001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5008001 2020-10-04 22:17:12.000000000 +0000 @@ -1,50 +1,184 @@ 5.008001 +allocmy # F added by devel/scanprov +ASSERT_CURPAD_ACTIVE # Z added by devel/scanprov +ASSERT_CURPAD_LEGAL # Z added by devel/scanprov +assert_not_ROK # Z added by devel/scanprov +BSDish # Z added by devel/scanprov C_ARRAY_LENGTH # U +CHECK_MALLOC_TAINT # Z added by devel/scanprov +CHECK_MALLOC_TOO_LATE_FOR # Z added by devel/scanprov +CLONEf_JOIN_IN # Z added by devel/scanprov +csighandler # F added by devel/scanprov +CVf_WEAKOUTSIDE # Z added by devel/scanprov +CvOUTSIDE_SEQ # Z added by devel/scanprov CvPADLIST # E -doing_taint # U +CvWEAKOUTSIDE # Z added by devel/scanprov +CvWEAKOUTSIDE_off # Z added by devel/scanprov +CvWEAKOUTSIDE_on # Z added by devel/scanprov +CX_CURPAD_SAVE # Z added by devel/scanprov +CX_CURPAD_SV # Z added by devel/scanprov +DBM_ckFilter # Z added by devel/scanprov +DBM_setFilter # Z added by devel/scanprov +deb_stack_all # F added by devel/scanprov +deb_stack_n # F added by devel/scanprov +DEBUG_SCOPE # Z added by devel/scanprov +DEBUG_v # Z added by devel/scanprov +DEBUG_v_FLAG # Z added by devel/scanprov +DEBUG_v_TEST # Z added by devel/scanprov +DEBUG_Xv # Z added by devel/scanprov +DEBUG_Xv_TEST # Z added by devel/scanprov +do_dump_pad # F added by devel/scanprov +doing_taint # F added by devel/scanprov +doopen_pm # F added by devel/scanprov find_runcv # U +FreeOp # Z added by devel/scanprov +free_tied_hv_pool # F added by devel/scanprov +get_debug_opts # F added by devel/scanprov +get_hash_seed # F added by devel/scanprov +get_num # F added by devel/scanprov +HAS_COPYSIGNL # K added by devel/scanprov +HAS_FAST_STDIO # K added by devel/scanprov +HAS_ILOGBL # K added by devel/scanprov +HAS_PTHREAD_ATTR_SETSCOPE # K added by devel/scanprov +HAS_SCALBNL # K added by devel/scanprov +HAS_TM_TM_GMTOFF # K added by devel/scanprov +IN_PERL_COMPILETIME # E +IN_PERL_RUNTIME # E +IoTYPE_IMPLICIT # Z added by devel/scanprov +IoTYPE_NUMERIC # Z added by devel/scanprov is_utf8_string_loc # U +LIB_INVARG # Z added by devel/scanprov +LOCK_DOLLARZERO_MUTEX # Z added by devel/scanprov +magic_setregexp # F added by devel/scanprov +magic_setutf8 # F added by devel/scanprov +MALLOC_CHECK_TAINT # Z added by devel/scanprov +MALLOC_CHECK_TAINT2 # Z added by devel/scanprov +MALLOC_TOO_LATE_FOR # Z added by devel/scanprov +NEGATIVE_INDICES_VAR # Z added by devel/scanprov +NewOp # Z added by devel/scanprov +OP_IS_FILETEST_ACCESS # Z added by devel/scanprov +OPpFT_ACCESS # Z added by devel/scanprov packlist # U +pack_rec # F added by devel/scanprov pad_add_anon # U +PAD_BASE_SV # Z added by devel/scanprov +pad_block_start # F added by devel/scanprov +pad_check_dup # F added by devel/scanprov +PAD_CLONE_VARS # Z added by devel/scanprov +PAD_COMPNAME_FLAGS # Z added by devel/scanprov +PAD_COMPNAME_GEN # Z added by devel/scanprov +PAD_COMPNAME_OURSTASH # Z added by devel/scanprov +PAD_COMPNAME_PV # Z added by devel/scanprov +PAD_COMPNAME_TYPE # Z added by devel/scanprov +pad_fixup_inner_anons # F added by devel/scanprov pad_new # E -pad_setsv # U +padnew_CLONE # Z added by devel/scanprov +padnew_SAVE # Z added by devel/scanprov +padnew_SAVESUB # Z added by devel/scanprov +pad_push # F added by devel/scanprov +PAD_RESTORE_LOCAL # Z added by devel/scanprov +PAD_SAVE_LOCAL # Z added by devel/scanprov +PAD_SAVE_SETNULLPAD # Z added by devel/scanprov +PAD_SET_CUR # Z added by devel/scanprov +PAD_SETSV # Z added by devel/scanprov +pad_setsv # F added by devel/scanprov +PAD_SVl # Z added by devel/scanprov pad_tidy # E +panic_write2 # Z added by devel/scanprov +parse_unicode_opts # F added by devel/scanprov PERL_ABS # U +PERL_DEB # Z added by devel/scanprov +PERL_DEBUG # Z added by devel/scanprov +PERL_FPU_POST_EXEC # Z added by devel/scanprov +PERL_FPU_PRE_EXEC # Z added by devel/scanprov +PERL_GCC_BRACE_GROUPS_FORBIDDEN # Z added by devel/scanprov +PERL_HASH_SEED # Z added by devel/scanprov +PERLIO_F_NOTREG # Z added by devel/scanprov PERL_MAGIC_utf8 # E +PERL_MAGIC_UTF8_CACHESIZE # Z added by devel/scanprov PERL_MAGIC_vstring # E PERL_SCAN_SILENT_ILLDIGIT # E +PERL_SIGNALS_UNSAFE_FLAG # E +PERL_UNICODE_ALL_FLAGS # Z added by devel/scanprov +PERL_UNICODE_ARGV # Z added by devel/scanprov +PERL_UNICODE_ARGV_FLAG # Z added by devel/scanprov +PERL_UNICODE_DEFAULT_FLAGS # Z added by devel/scanprov +PERL_UNICODE_IN # Z added by devel/scanprov +PERL_UNICODE_IN_FLAG # Z added by devel/scanprov +PERL_UNICODE_INOUT # Z added by devel/scanprov +PERL_UNICODE_INOUT_FLAG # Z added by devel/scanprov +PERL_UNICODE_LOCALE # Z added by devel/scanprov +PERL_UNICODE_LOCALE_FLAG # Z added by devel/scanprov +PERL_UNICODE_OUT # Z added by devel/scanprov +PERL_UNICODE_OUT_FLAG # Z added by devel/scanprov +PERL_UNICODE_STD # Z added by devel/scanprov +PERL_UNICODE_STDERR # Z added by devel/scanprov +PERL_UNICODE_STDERR_FLAG # Z added by devel/scanprov +PERL_UNICODE_STD_FLAG # Z added by devel/scanprov +PERL_UNICODE_STDIN # Z added by devel/scanprov +PERL_UNICODE_STDIN_FLAG # Z added by devel/scanprov +PERL_UNICODE_STDOUT # Z added by devel/scanprov +PERL_UNICODE_STDOUT_FLAG # Z added by devel/scanprov +PERL_UNICODE_WIDESYSCALLS # Z added by devel/scanprov +PERL_UNICODE_WIDESYSCALLS_FLAG # Z added by devel/scanprov +PIPESOCK_MODE # Z added by devel/scanprov +PL_checkav_save # Z added by devel/scanprov +PL_clocktick # Z added by devel/scanprov PL_comppad # E -save_bool # U +PL_in_load_module # Z added by devel/scanprov +PL_reentrant_retint # Z added by devel/scanprov +PL_signals # M added by devel/scanprov +PL_stashcache # Z added by devel/scanprov +PL_unicode # Z added by devel/scanprov +PL_utf8locale # Z added by devel/scanprov +pthread_create # Z added by devel/scanprov +pthread_keycreate # Z added by devel/scanprov +REENTRANT_PROTO_I_TsISBWRE # Z added by devel/scanprov +REENTRANT_PROTO_I_uISBWRE # Z added by devel/scanprov +RMS_DIR # Z added by devel/scanprov +RMS_FAC # Z added by devel/scanprov +RMS_FEX # Z added by devel/scanprov +RMS_FNF # Z added by devel/scanprov +RMS_IFI # Z added by devel/scanprov +RMS_ISI # Z added by devel/scanprov +RMS_PRV # Z added by devel/scanprov +RX_MATCH_UTF8 # Z added by devel/scanprov +RX_MATCH_UTF8_off # Z added by devel/scanprov +RX_MATCH_UTF8_on # Z added by devel/scanprov +RX_MATCH_UTF8_set # Z added by devel/scanprov +save_bool # F added by devel/scanprov +SAVEBOOL # U savestack_grow_cnt # U +SAVEt_BOOL # Z added by devel/scanprov seed # U +SS_ACCVIO # Z added by devel/scanprov +SS_DEVOFFLINE # Z added by devel/scanprov +SSGROW # Z added by devel/scanprov +SS_IVCHAN # Z added by devel/scanprov +SS_NORMAL # Z added by devel/scanprov +SSPOPBOOL # Z added by devel/scanprov +SSPUSHBOOL # Z added by devel/scanprov sv_cat_decode # U +SV_CHECK_THINKFIRST # Z added by devel/scanprov SV_COW_DROP_PV # E +SVf256 # Z added by devel/scanprov sv_setpviv # U sv_setpviv_mg # U +SV_UTF8_NO_ENCODING # E SvVOK # U +TOO_LATE_FOR # Z added by devel/scanprov +UNLOCK_DOLLARZERO_MUTEX # Z added by devel/scanprov +unpack_rec # F added by devel/scanprov unpackstring # U +USE_HASH_SEED # Z added by devel/scanprov +WEXITSTATUS # Z added by devel/scanprov +WIFEXITED # Z added by devel/scanprov +WIFSIGNALED # Z added by devel/scanprov +WIFSTOPPED # Z added by devel/scanprov +WNOHANG # Z added by devel/scanprov +write_to_stderr # F added by devel/scanprov +WSTOPSIG # Z added by devel/scanprov +WTERMSIG # Z added by devel/scanprov +WUNTRACED # Z added by devel/scanprov XSRETURN_UV # U XST_mUV # U -IN_PERL_COMPILETIME # M added by devel/scanprov -PERL_SIGNALS_UNSAFE_FLAG # M added by devel/scanprov -PL_signals # M added by devel/scanprov -SV_UTF8_NO_ENCODING # M added by devel/scanprov -allocmy # F added by devel/scanprov -deb_stack_all # F added by devel/scanprov -deb_stack_n # F added by devel/scanprov -do_dump_pad # F added by devel/scanprov -doopen_pm # F added by devel/scanprov -free_tied_hv_pool # F added by devel/scanprov -get_debug_opts # F added by devel/scanprov -get_hash_seed # F added by devel/scanprov -get_num # F added by devel/scanprov -magic_setregexp # F added by devel/scanprov -magic_setutf8 # F added by devel/scanprov -pack_rec # F added by devel/scanprov -pad_block_start # F added by devel/scanprov -pad_check_dup # F added by devel/scanprov -pad_fixup_inner_anons # F added by devel/scanprov -pad_push # F added by devel/scanprov -parse_unicode_opts # F added by devel/scanprov -unpack_rec # F added by devel/scanprov -write_to_stderr # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5008002 perl-5.34.0/dist/Devel-PPPort/parts/base/5008002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5008002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5008002 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,6 @@ 5.008002 +HVhek_ENABLEHVKFLAGS # Z added by devel/scanprov +PAD_SET_CUR_NOSAVE # Z added by devel/scanprov +PERL_HASH_INTERNAL # Z added by devel/scanprov +PIPE_OPEN_MODE # Z added by devel/scanprov +SOCKET_OPEN_MODE # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5008009 perl-5.34.0/dist/Devel-PPPort/parts/base/5008009 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5008009 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5008009 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1 @@ 5.008009 -hv_assert # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5009000 perl-5.34.0/dist/Devel-PPPort/parts/base/5009000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5009000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5009000 2020-10-04 22:17:12.000000000 +0000 @@ -2,19 +2,49 @@ _aMY_CXT # E aMY_CXT # E aMY_CXT_ # E +asctime # Z added by devel/scanprov +CAN_COW_FLAGS # Z added by devel/scanprov +CAN_COW_MASK # Z added by devel/scanprov +crypt # Z added by devel/scanprov +ctermid # Z added by devel/scanprov +ctime # Z added by devel/scanprov +DEBUG_C # Z added by devel/scanprov +DEBUG_C_FLAG # Z added by devel/scanprov +DEBUG_C_TEST # Z added by devel/scanprov dMY_CXT # E +endgrent # Z added by devel/scanprov +endpwent # Z added by devel/scanprov +getgrent # Z added by devel/scanprov +getgrgid # Z added by devel/scanprov +getgrnam # Z added by devel/scanprov +getpwent # Z added by devel/scanprov +getpwnam # Z added by devel/scanprov +getpwuid # Z added by devel/scanprov +getspnam # Z added by devel/scanprov hek_dup # U MY_CXT # E MY_CXT_INIT # E -my_cxt_init # U new_version # U parser_dup # E +Perl_sv_free2 # F added by devel/scanprov +PL_cv_has_eval # Z added by devel/scanprov pMY_CXT # E -regdupe_internal # U +readdir64 # Z added by devel/scanprov +RX_MATCH_COPY_FREE # Z added by devel/scanprov save_set_svflags # U +SAVESETSVFLAGS # Z added by devel/scanprov +SAVEt_SET_SVFLAGS # Z added by devel/scanprov +setgrent # Z added by devel/scanprov +setlocale # Z added by devel/scanprov +setpwent # Z added by devel/scanprov +strerror # Z added by devel/scanprov +SV_CHECK_THINKFIRST_COW_DROP # Z added by devel/scanprov +SvPADSTALE # Z added by devel/scanprov +SvPADSTALE_off # Z added by devel/scanprov +SvPADSTALE_on # Z added by devel/scanprov +sv_setsv_cow # F added by devel/scanprov SVs_PADSTALE # E +ttyname # Z added by devel/scanprov vcmp # U vnumify # U vstringify # U -Perl_sv_free2 # F added by devel/scanprov -sv_setsv_cow # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5009001 perl-5.34.0/dist/Devel-PPPort/parts/base/5009001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5009001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5009001 2020-10-04 22:17:12.000000000 +0000 @@ -1,11 +1,29 @@ 5.009001 +DEBUG_A # Z added by devel/scanprov +DEBUG_A_FLAG # Z added by devel/scanprov +DEBUG_A_TEST # Z added by devel/scanprov +DEBUG_q # Z added by devel/scanprov +DEBUG_q_FLAG # Z added by devel/scanprov +DEBUG_q_TEST # Z added by devel/scanprov +FF_LINESNGL # Z added by devel/scanprov hv_clear_placeholders # U +hv_delete_common # F added by devel/scanprov hv_scalar # U +magic_scalarpack # F added by devel/scanprov +num_overflow # F added by devel/scanprov +OPpCONST_SHORTCIRCUIT # Z added by devel/scanprov +OPpFT_STACKED # Z added by devel/scanprov +OPpSORT_INPLACE # Z added by devel/scanprov +OPpTRANS_ALL # Z added by devel/scanprov +Perl_ceil # Z added by devel/scanprov +Perl_hv_assert # F added by devel/scanprov scan_version # E (Perl_scan_version) +sv_2iv # Z added by devel/scanprov sv_2iv_flags # U +sv_2uv # M added by devel/scanprov sv_2uv_flags # U SvIV_nomg # U SvUV_nomg # U -hv_delete_common # F added by devel/scanprov -magic_scalarpack # F added by devel/scanprov -num_overflow # F added by devel/scanprov +YYSTYPE_IS_DECLARED # Z added by devel/scanprov +YYSTYPE_IS_TRIVIAL # Z added by devel/scanprov +YYTOKENTYPE # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5009002 perl-5.34.0/dist/Devel-PPPort/parts/base/5009002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5009002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5009002 2020-10-04 22:17:12.000000000 +0000 @@ -1,10 +1,23 @@ 5.009002 CopyD # E +DEBUG_COMPILE_r # Z added by devel/scanprov +DEBUG_EXECUTE_r # Z added by devel/scanprov +DEBUG_OFFSETS_r # Z added by devel/scanprov +DEBUG_OPTIMISE_r # Z added by devel/scanprov +DEBUG_TRIE_COMPILE_MORE_r # Z added by devel/scanprov +DEBUG_TRIE_COMPILE_r # Z added by devel/scanprov +DEBUG_TRIE_EXECUTE_MORE_r # Z added by devel/scanprov +DEBUG_TRIE_EXECUTE_r # Z added by devel/scanprov +DEBUG_TRIE_r # Z added by devel/scanprov dUNDERBAR # E dXCPT # E find_rundefsvoffset # U +find_uninit_var # F added by devel/scanprov gv_fetchpvn_flags # U gv_fetchsv # U +make_trie # F added by devel/scanprov +MEM_WRAP_CHECK # Z added by devel/scanprov +MEM_WRAP_CHECK_1 # Z added by devel/scanprov MoveD # E mPUSHi # U mPUSHn # U @@ -15,12 +28,29 @@ mXPUSHp # U mXPUSHu # U MY_CXT_CLONE # E +OPpITER_REVERSED # Z added by devel/scanprov +OPpSORT_DESCEND # Z added by devel/scanprov op_refcnt_lock # U op_refcnt_unlock # U +PERL_MALLOC_WRAP # K added by devel/scanprov +pTHX__FORMAT # Z added by devel/scanprov +pTHX_FORMAT # Z added by devel/scanprov +pTHX__VALUE # Z added by devel/scanprov +pTHX_VALUE # Z added by devel/scanprov PUSHmortal # E +RE_DEBUG_FLAGS # Z added by devel/scanprov +RE_TRIE_MAXBUF_INIT # Z added by devel/scanprov +RE_TRIE_MAXBUF_NAME # Z added by devel/scanprov +SAFE_TRIE_NODENUM # Z added by devel/scanprov savesvpv # U +SAVESWITCHSTACK # Z added by devel/scanprov +SAVEt_SAVESWITCHSTACK # Z added by devel/scanprov +SVf32 # Z added by devel/scanprov SV_NOSTEAL # E SvPVbyte_force # U +TRIE # Z added by devel/scanprov +TRIE_NODEIDX # Z added by devel/scanprov +TRIE_NODENUM # Z added by devel/scanprov UNDERBAR # E UTF8_MAXBYTES # E UTF8_MAXBYTES_CASE # E @@ -31,5 +61,3 @@ XCPT_TRY_START # E XPUSHmortal # E ZeroD # E -find_uninit_var # F added by devel/scanprov -make_trie # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5009003 perl-5.34.0/dist/Devel-PPPort/parts/base/5009003 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5009003 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5009003 2020-10-04 22:17:12.000000000 +0000 @@ -1,26 +1,91 @@ 5.009003 -av_arylen_p # U -ckwarn # U -ckwarn_d # U +amagic_cmp # F added by devel/scanprov +amagic_cmp_locale # F added by devel/scanprov +amagic_i_ncmp # F added by devel/scanprov +amagic_ncmp # F added by devel/scanprov +AvREAL_only # Z added by devel/scanprov +AvREIFY_only # Z added by devel/scanprov +C_FAC_POSIX # Z added by devel/scanprov +check_type_and_open # F added by devel/scanprov +child_offset_bits # Z added by devel/scanprov +CopFILEAVx # Z added by devel/scanprov +CxFOREACH # Z added by devel/scanprov +CxMULTICALL # Z added by devel/scanprov +CXp_MULTICALL # Z added by devel/scanprov dAXMARK # E dMULTICALL # E +dMY_CXT_INTERP # Z added by devel/scanprov +do_aexec # Z added by devel/scanprov +do_exec # Z added by devel/scanprov doref # U +DPTR2FPTR # Z added by devel/scanprov +dump_sv_child # F added by devel/scanprov dVAR # E +EXTPERLIO # Z added by devel/scanprov +F0convert # F added by devel/scanprov +FAKE_DEFAULT_SIGNAL_HANDLERS # Z added by devel/scanprov +FAKE_PERSISTENT_SIGNAL_HANDLERS # Z added by devel/scanprov +first_symbol # F added by devel/scanprov +FPTR2DPTR # Z added by devel/scanprov +FUNCTION # Z added by devel/scanprov gv_const_sv # U GV_NOADD_NOINIT # E GV_NOEXPAND # E gv_stashpvs # U +GvSVn # U +HASATTRIBUTE_FORMAT # K added by devel/scanprov +HASATTRIBUTE_MALLOC # K added by devel/scanprov +HASATTRIBUTE_NONNULL # K added by devel/scanprov +HASATTRIBUTE_NORETURN # K added by devel/scanprov +HASATTRIBUTE_PURE # K added by devel/scanprov +HASATTRIBUTE_UNUSED # K added by devel/scanprov +HASATTRIBUTE_WARN_UNUSED_RESULT # K added by devel/scanprov +HAS_CLEARENV # K added by devel/scanprov +HAS_FUTIMES # K added by devel/scanprov +HAS_MODFL_PROTO # K added by devel/scanprov +HAS_SNPRINTF # K added by devel/scanprov +HAS_UNSETENV # K added by devel/scanprov +HAS_VSNPRINTF # K added by devel/scanprov +HE_SVSLOT # Z added by devel/scanprov +HvAUX # Z added by devel/scanprov +hv_auxinit # F added by devel/scanprov +HvEITER_get # Z added by devel/scanprov hv_eiter_p # U hv_eiter_set # U +HvEITER_set # Z added by devel/scanprov hv_fetchs # U +HvNAME_get # M added by devel/scanprov +HvNAME_HEK # Z added by devel/scanprov +HvNAMELEN_get # U hv_name_set # U hv_placeholders_get # U +HvPLACEHOLDERS_get # Z added by devel/scanprov hv_placeholders_set # U +HvPLACEHOLDERS_set # Z added by devel/scanprov +HvRITER_get # Z added by devel/scanprov hv_riter_p # U hv_riter_set # U +HvRITER_set # Z added by devel/scanprov +incpush_if_exists # F added by devel/scanprov +IS_UTF8_CHAR # Z added by devel/scanprov +is_utf8_common # F added by devel/scanprov is_utf8_string_loclen # U +KEY_given # Z added by devel/scanprov +KEY_say # Z added by devel/scanprov +LIBM_LIB_VERSION # K added by devel/scanprov +magic_freearylen_p # F added by devel/scanprov +MEM_LOG_ALLOC # Z added by devel/scanprov +MEM_LOG_FREE # Z added by devel/scanprov +MEM_LOG_REALLOC # Z added by devel/scanprov +MGf_LOCAL # Z added by devel/scanprov +mg_localize # F added by devel/scanprov +MgPV_const # Z added by devel/scanprov +MgPV_nolen_const # Z added by devel/scanprov MULTICALL # E +my_clearenv # F added by devel/scanprov +MY_CXT_INIT_INTERP # Z added by devel/scanprov my_sprintf # U +need_utf8 # F added by devel/scanprov newGIVENOP # U newSVhek # U newSVpvs # U @@ -28,79 +93,120 @@ Newx # E Newxc # E Newxz # E +NORETURN_FUNCTION_END # Z added by devel/scanprov +NSIG # Z added by devel/scanprov +NV_ZERO_IS_ALLBITS_ZERO # K added by devel/scanprov +OPpASSIGN_CV_TO_GV # Z added by devel/scanprov +OPpCONST_NOVER # Z added by devel/scanprov +OPpDONT_INIT_GV # Z added by devel/scanprov +OPpEVAL_HAS_HH # Z added by devel/scanprov +OPpMAY_RETURN_CONSTANT # Z added by devel/scanprov +OPpSORT_STABLE # Z added by devel/scanprov +PAD_COMPNAME_GEN_set # Z added by devel/scanprov +pad_compname_type # U +PERL_ARENA_SIZE # Z added by devel/scanprov +Perl_av_arylen_p # F added by devel/scanprov +Perl_ckwarn # F added by devel/scanprov +Perl_ckwarn_d # F added by devel/scanprov +PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION # Z added by devel/scanprov +PERL_DONT_CREATE_GVSV # Z added by devel/scanprov +Perl_hv_backreferences_p # F added by devel/scanprov +Perl_hv_placeholders_p # F added by devel/scanprov +PERLIO_FUNCS_CAST # U +PERLIO_FUNCS_DECL # M added by devel/scanprov PERL_MAGIC_arylen_p # E PERL_MAGIC_rhash # E PERL_MAGIC_symtab # E -PL_check # E -POP_MULTICALL # E -savepvs # U -sortsv_flags # U -sv_catpvs # U -SvMAGIC_set # U -SvRV_set # U -SV_SMAGIC # E -SvSTASH_set # U -SvUV_set # U -vverify # U -GvSVn # M added by devel/scanprov -HvNAME_get # M added by devel/scanprov -HvNAMELEN_get # M added by devel/scanprov -PERLIO_FUNCS_CAST # M added by devel/scanprov -PERLIO_FUNCS_DECL # M added by devel/scanprov -PERL_UNUSED_ARG # M added by devel/scanprov -PTR2nat # M added by devel/scanprov -STR_WITH_LEN # M added by devel/scanprov -SV_CONST_RETURN # M added by devel/scanprov -SV_MUTABLE_RETURN # M added by devel/scanprov -SvPV_const # M added by devel/scanprov -SvPV_flags_const # M added by devel/scanprov -SvPV_flags_const_nolen # M added by devel/scanprov -SvPV_flags_mutable # M added by devel/scanprov -SvPV_force_flags_mutable # M added by devel/scanprov -SvPV_force_flags_nolen # M added by devel/scanprov -SvPV_force_mutable # M added by devel/scanprov -SvPV_force_nolen # M added by devel/scanprov -SvPV_force_nomg_nolen # M added by devel/scanprov -SvPV_mutable # M added by devel/scanprov -SvPV_nolen_const # M added by devel/scanprov -SvPV_nomg_const # M added by devel/scanprov -SvPV_nomg_const_nolen # M added by devel/scanprov -SvPV_renew # M added by devel/scanprov -SvPVX_const # M added by devel/scanprov -SvPVX_mutable # M added by devel/scanprov -SvSHARED_HASH # M added by devel/scanprov -amagic_cmp # F added by devel/scanprov -amagic_cmp_locale # F added by devel/scanprov -amagic_i_ncmp # F added by devel/scanprov -amagic_ncmp # F added by devel/scanprov -check_type_and_open # F added by devel/scanprov -dump_sv_child # F added by devel/scanprov -F0convert # F added by devel/scanprov -first_symbol # F added by devel/scanprov -free_global_struct # F added by devel/scanprov -hv_auxinit # F added by devel/scanprov -incpush_if_exists # F added by devel/scanprov -init_global_struct # F added by devel/scanprov -is_utf8_common # F added by devel/scanprov -magic_freearylen_p # F added by devel/scanprov -mg_localize # F added by devel/scanprov -my_clearenv # F added by devel/scanprov -need_utf8 # F added by devel/scanprov -Perl_hv_backreferences_p # F added by devel/scanprov -Perl_hv_placeholders_p # F added by devel/scanprov +PERL_STRLEN_ROUNDUP # Z added by devel/scanprov +PERL_STRLEN_ROUNDUP_QUANTUM # Z added by devel/scanprov Perl_sv_add_backref # F added by devel/scanprov Perl_sv_kill_backrefs # F added by devel/scanprov +PERL_TRACK_MEMPOOL # Z added by devel/scanprov +PERL_UNUSED_ARG # U +PERL_USES_PL_PIDSTATUS # Z added by devel/scanprov +PL_body_roots # Z added by devel/scanprov +PL_check # E +PL_dumper_fd # Z added by devel/scanprov +PL_minus_E # Z added by devel/scanprov +PL_my_cxt_list # Z added by devel/scanprov +PL_my_cxt_size # Z added by devel/scanprov +PL_statusvalue_posix # Z added by devel/scanprov +POP_MULTICALL # E +POPpconstx # Z added by devel/scanprov +pTHX_5 # Z added by devel/scanprov +pTHX_6 # Z added by devel/scanprov +pTHX_7 # Z added by devel/scanprov +pTHX_8 # Z added by devel/scanprov +pTHX_9 # Z added by devel/scanprov +PTR2nat # U +REENTR_MEMZERO # Z added by devel/scanprov +ref # Z added by devel/scanprov restore_magic # F added by devel/scanprov run_user_filter # F added by devel/scanprov +savepvs # U sequence_num # F added by devel/scanprov +share_hek_hek # Z added by devel/scanprov sortcv # F added by devel/scanprov sortcv_stacked # F added by devel/scanprov sortcv_xsub # F added by devel/scanprov +sortsv_flags # U +STATUS_EXIT # Z added by devel/scanprov +STATUS_EXIT_SET # Z added by devel/scanprov +STATUS_NATIVE_CHILD_SET # Z added by devel/scanprov +STATUS_UNIX # Z added by devel/scanprov +STATUS_UNIX_EXIT_SET # Z added by devel/scanprov +STATUS_UNIX_SET # Z added by devel/scanprov strip_return # F added by devel/scanprov +STR_WITH_LEN # M added by devel/scanprov +sv_2pvbyte_nolen # M added by devel/scanprov +sv_2pv_nolen # M added by devel/scanprov +sv_2pvutf8_nolen # Z added by devel/scanprov +sv_catpvs # U +SV_CONST_RETURN # M added by devel/scanprov sv_exp_grow # F added by devel/scanprov +SvGROW_mutable # Z added by devel/scanprov sv_i_ncmp # F added by devel/scanprov +SvIS_FREED # Z added by devel/scanprov +SvMAGIC_set # U +SV_MUTABLE_RETURN # M added by devel/scanprov sv_ncmp # F added by devel/scanprov +SVpav_REAL # Z added by devel/scanprov +SVpav_REIFY # Z added by devel/scanprov +SVphv_CLONEABLE # Z added by devel/scanprov +SvPVbytex_nolen # Z added by devel/scanprov +SvPV_const # U +SvPV_flags_const # U +SvPV_flags_const_nolen # U +SvPV_flags_mutable # U +SvPV_force_flags_mutable # U +SvPV_force_flags_nolen # U +SvPV_force_mutable # U +SvPV_force_nolen # U +SvPV_force_nomg_nolen # U +SvPV_free # Z added by devel/scanprov +SvPV_mutable # U +SvPV_nolen_const # U +SvPV_nomg_const # U +SvPV_nomg_const_nolen # U +SvPV_renew # U +SvPV_shrink_to_cur # U +SvPVX_const # U +SvPVx_const # Z added by devel/scanprov +SvPVX_mutable # U +SvPVx_nolen # Z added by devel/scanprov +SvPVx_nolen_const # Z added by devel/scanprov +SvRV_set # U +SvSHARED_HASH # U +SvSHARED_HEK_FROM_PV # Z added by devel/scanprov +SV_SMAGIC # E +SvSTASH_set # U +sv_taint # Z added by devel/scanprov +SvUV_set # U tokenize_use # F added by devel/scanprov +tTHX # Z added by devel/scanprov uiv_2buf # F added by devel/scanprov unwind_handler_stack # F added by devel/scanprov varname # F added by devel/scanprov +vverify # U +xiv_iv # Z added by devel/scanprov +xuv_uv # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5009004 perl-5.34.0/dist/Devel-PPPort/parts/base/5009004 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5009004 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5009004 2020-10-04 22:17:12.000000000 +0000 @@ -1,16 +1,87 @@ 5.009004 +assert_not_glob # Z added by devel/scanprov +clear_placeholders # F added by devel/scanprov +CopHINTS_get # Z added by devel/scanprov +CopHINTS_set # Z added by devel/scanprov +create_eval_scope # F added by devel/scanprov +cv_ckproto # Z added by devel/scanprov +CVf_ISXSUB # Z added by devel/scanprov +CvISXSUB # Z added by devel/scanprov +CvISXSUB_off # Z added by devel/scanprov +CvISXSUB_on # Z added by devel/scanprov +DEBUG_DUMP_r # Z added by devel/scanprov +DEBUG_EXTRA_r # Z added by devel/scanprov +DEBUG_INTUIT_r # Z added by devel/scanprov +DEBUG_MATCH_r # Z added by devel/scanprov +DEBUG_PARSE_r # Z added by devel/scanprov +debug_start_match # F added by devel/scanprov +DEBUG_STATE_r # Z added by devel/scanprov +delete_eval_scope # F added by devel/scanprov +dump_exec_pos # F added by devel/scanprov +dump_trie # F added by devel/scanprov +dump_trie_interim_list # F added by devel/scanprov +dump_trie_interim_table # F added by devel/scanprov +DUP_WARNINGS # Z added by devel/scanprov +exec_failed # F added by devel/scanprov +EXPECT # Z added by devel/scanprov +EXT_MGVTBL # Z added by devel/scanprov +find_array_subscript # F added by devel/scanprov +find_hash_subscript # F added by devel/scanprov +G_FAKINGEVAL # Z added by devel/scanprov +glob_2number # F added by devel/scanprov +glob_assign_glob # F added by devel/scanprov +gv_fetchpvs # U +GvFILE_HEK # Z added by devel/scanprov +GvNAME_get # Z added by devel/scanprov +GvNAME_HEK # Z added by devel/scanprov +GvNAMELEN_get # Z added by devel/scanprov gv_name_set # U +GV_NOTQUAL # E +HAS_BUILTIN_CHOOSE_EXPR # K added by devel/scanprov +HAS_C99_VARIADIC_MACROS # K added by devel/scanprov +HINTS_REFCNT_INIT # Z added by devel/scanprov +HINTS_REFCNT_LOCK # Z added by devel/scanprov +HINTS_REFCNT_TERM # Z added by devel/scanprov +HINTS_REFCNT_UNLOCK # Z added by devel/scanprov hv_copy_hints_hv # U +HVhek_UNSHARED # Z added by devel/scanprov +HVrhek_delete # Z added by devel/scanprov +HVrhek_IV # Z added by devel/scanprov +HVrhek_PV # Z added by devel/scanprov +HVrhek_typemask # Z added by devel/scanprov +HVrhek_undef # Z added by devel/scanprov +HVrhek_UV # Z added by devel/scanprov hv_stores # U +INIT_TRACK_MEMPOOL # Z added by devel/scanprov +isGV_with_GP # U +join_exact # F added by devel/scanprov +KEY_state # Z added by devel/scanprov LIKELY # U +magic_clearhint # F added by devel/scanprov +magic_sethint # F added by devel/scanprov +MJD_OFFSET_DEBUG # Z added by devel/scanprov +more_sv # F added by devel/scanprov my_snprintf # U my_strlcat # U my_strlcpy # U my_vsnprintf # U newXS_flags # U +NO_ENV_ARRAY_IN_MAIN # Z added by devel/scanprov +OPpPAD_STATE # Z added by devel/scanprov +PAD_COMPNAME_FLAGS_isOUR # Z added by devel/scanprov +pad_peg # Z added by devel/scanprov +PERL_ARENA_ROOTS_SIZE # Z added by devel/scanprov +PERL_ENABLE_EXPERIMENTAL_REGEX_OPTIMISATIONS # Z added by devel/scanprov +PERL_ENABLE_EXTENDED_TRIE_OPTIMISATION # Z added by devel/scanprov +PERL_ENABLE_TRIE_OPTIMISATION # Z added by devel/scanprov PerlIO_context_layers # U PERL_MAGIC_hints # E PERL_MAGIC_hintselem # E +PERL_MY_SNPRINTF_GUARDED # Z added by devel/scanprov +PERL_MY_VSNPRINTF_GUARDED # Z added by devel/scanprov +Perl_newGP # F added by devel/scanprov +Perl_new_warnings_bitfield # F added by devel/scanprov +PERL_NO_DEV_RANDOM # Z added by devel/scanprov PERL_PV_ESCAPE_ALL # E PERL_PV_ESCAPE_FIRSTCHAR # E PERL_PV_ESCAPE_NOBACKSLASH # E @@ -18,15 +89,70 @@ PERL_PV_ESCAPE_QUOTE # E PERL_PV_ESCAPE_UNI # E PERL_PV_ESCAPE_UNI_DETECT # E +PERL_PV_PRETTY_DUMP # M added by devel/scanprov PERL_PV_PRETTY_LTGT # E PERL_PV_PRETTY_QUOTE # E +PERL_PV_PRETTY_REGPROP # M added by devel/scanprov +PERL_REGMATCH_SLAB_SLOTS # Z added by devel/scanprov +PERL_UNICODE_UTF8CACHEASSERT # Z added by devel/scanprov +PERL_UNICODE_UTF8CACHEASSERT_FLAG # Z added by devel/scanprov +PERL_UNLOCK_HOOK # Z added by devel/scanprov +PERL_UNUSED_CONTEXT # E +PERL_USE_GCC_BRACE_GROUPS # M added by devel/scanprov +PERL_WARNHOOK_FATAL # Z added by devel/scanprov +PL_body_arenas # Z added by devel/scanprov +PL_memory_debug_header # Z added by devel/scanprov +PL_regmatch_slab # Z added by devel/scanprov +PL_regmatch_state # Z added by devel/scanprov +PL_utf8cache # Z added by devel/scanprov +pm_description # F added by devel/scanprov PoisonFree # E PoisonNew # E PoisonWith # E +printbuf # F added by devel/scanprov +PSEUDO # Z added by devel/scanprov +ptr_table_find # F added by devel/scanprov pv_escape # U pv_pretty # U +RE_DEBUG_COMPILE_DUMP # Z added by devel/scanprov +RE_DEBUG_COMPILE_MASK # Z added by devel/scanprov +RE_DEBUG_COMPILE_OPTIMISE # Z added by devel/scanprov +RE_DEBUG_COMPILE_PARSE # Z added by devel/scanprov +RE_DEBUG_COMPILE_TRIE # Z added by devel/scanprov +RE_DEBUG_EXECUTE_INTUIT # Z added by devel/scanprov +RE_DEBUG_EXECUTE_MASK # Z added by devel/scanprov +RE_DEBUG_EXECUTE_MATCH # Z added by devel/scanprov +RE_DEBUG_EXECUTE_TRIE # Z added by devel/scanprov +RE_DEBUG_EXTRA_MASK # Z added by devel/scanprov +RE_DEBUG_EXTRA_OFFSETS # Z added by devel/scanprov +RE_DEBUG_EXTRA_STATE # Z added by devel/scanprov +RE_DEBUG_EXTRA_TRIE # Z added by devel/scanprov +RE_DEBUG_FLAG # Z added by devel/scanprov +refcounted_he_value # F added by devel/scanprov +REGNODE_MAX # Z added by devel/scanprov +regtail_study # F added by devel/scanprov +RE_PV_COLOR_DECL # Z added by devel/scanprov +RE_PV_QUOTED_DECL # Z added by devel/scanprov +RE_SV_DUMPLEN # Z added by devel/scanprov +RE_SV_ESCAPE # Z added by devel/scanprov +RE_SV_TAIL # Z added by devel/scanprov +SAVECOMPILEWARNINGS # Z added by devel/scanprov +SAVEt_COMPILE_WARNINGS # Z added by devel/scanprov +space_join_names_mortal # F added by devel/scanprov +sv_2iuv_common # F added by devel/scanprov sv_does # U SV_HAS_TRAILING_NUL # E +SvPAD_OUR # Z added by devel/scanprov +SvPAD_OUR_on # Z added by devel/scanprov +SVpad_STATE # Z added by devel/scanprov +SvPAD_STATE # Z added by devel/scanprov +SvPAD_STATE_on # Z added by devel/scanprov +SvPAD_TYPED # Z added by devel/scanprov +SvPAD_TYPED_on # Z added by devel/scanprov +sv_pos_b2u_midway # F added by devel/scanprov +sv_pos_u2b_cached # F added by devel/scanprov +sv_pos_u2b_forwards # F added by devel/scanprov +sv_pos_u2b_midway # F added by devel/scanprov SvREFCNT_inc_NN # U SvREFCNT_inc_simple # U SvREFCNT_inc_simple_NN # U @@ -36,42 +162,15 @@ SvREFCNT_inc_void_NN # U sv_setpvs # U sv_usepvn_flags # U +SvVSTRING_mg # U +TRIE_BITMAP # Z added by devel/scanprov +TRIE_BITMAP_BYTE # Z added by devel/scanprov +TRIE_BITMAP_CLEAR # Z added by devel/scanprov +TRIE_BITMAP_SET # Z added by devel/scanprov +TRIE_BITMAP_TEST # Z added by devel/scanprov +TRIEC # Z added by devel/scanprov +TRIE_CHARCOUNT # Z added by devel/scanprov UNLIKELY # U -gv_fetchpvs # M added by devel/scanprov -isGV_with_GP # M added by devel/scanprov -PERL_PV_PRETTY_DUMP # M added by devel/scanprov -PERL_PV_PRETTY_REGPROP # M added by devel/scanprov -PERL_UNUSED_CONTEXT # M added by devel/scanprov -PERL_USE_GCC_BRACE_GROUPS # M added by devel/scanprov -SvVSTRING_mg # M added by devel/scanprov -clear_placeholders # F added by devel/scanprov -create_eval_scope # F added by devel/scanprov -debug_start_match # F added by devel/scanprov -delete_eval_scope # F added by devel/scanprov -dump_exec_pos # F added by devel/scanprov -dump_trie # F added by devel/scanprov -dump_trie_interim_list # F added by devel/scanprov -dump_trie_interim_table # F added by devel/scanprov -exec_failed # F added by devel/scanprov -find_array_subscript # F added by devel/scanprov -find_hash_subscript # F added by devel/scanprov -glob_2number # F added by devel/scanprov -glob_assign_glob # F added by devel/scanprov -join_exact # F added by devel/scanprov -magic_clearhint # F added by devel/scanprov -magic_sethint # F added by devel/scanprov -more_sv # F added by devel/scanprov -Perl_newGP # F added by devel/scanprov -Perl_new_warnings_bitfield # F added by devel/scanprov -pm_description # F added by devel/scanprov -printbuf # F added by devel/scanprov -ptr_table_find # F added by devel/scanprov -refcounted_he_value # F added by devel/scanprov -regtail_study # F added by devel/scanprov -space_join_names_mortal # F added by devel/scanprov -sv_2iuv_common # F added by devel/scanprov -sv_pos_b2u_midway # F added by devel/scanprov -sv_pos_u2b_cached # F added by devel/scanprov -sv_pos_u2b_forwards # F added by devel/scanprov -sv_pos_u2b_midway # F added by devel/scanprov +UTF8_ALLOW_DEFAULT # Z added by devel/scanprov utf8_mg_pos_cache_update # F added by devel/scanprov +XS_DYNAMIC_FILENAME # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5009005 perl-5.34.0/dist/Devel-PPPort/parts/base/5009005 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5009005 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5009005 2020-10-04 22:17:12.000000000 +0000 @@ -1,62 +1,206 @@ 5.009005 +ACCEPT # Z added by devel/scanprov +AHOCORASICK # Z added by devel/scanprov +AHOCORASICKC # Z added by devel/scanprov +anchored_end_shift # Z added by devel/scanprov +ANYOF_HORIZWS # Z added by devel/scanprov +ANYOF_NHORIZWS # Z added by devel/scanprov +ANYOF_NVERTWS # Z added by devel/scanprov +ANYOF_VERTWS # Z added by devel/scanprov +ARG2L # Z added by devel/scanprov +ARG2L_LOC # Z added by devel/scanprov +ARG2L_SET # Z added by devel/scanprov av_create_and_push # U av_create_and_unshift_one # U +BITMAP_BYTE # Z added by devel/scanprov +BITMAP_TEST # Z added by devel/scanprov +BmFLAGS # Z added by devel/scanprov +boot_core_mro # F added by devel/scanprov +BRANCH_next # Z added by devel/scanprov +BRANCH_next_fail # Z added by devel/scanprov +CALLREGCOMP_ENG # Z added by devel/scanprov +CALLREGDUPE # Z added by devel/scanprov +CALLREGDUPE_PVT # Z added by devel/scanprov +CALLREGFREE_PVT # Z added by devel/scanprov +CALLREG_NAMED_BUFF_ALL # Z added by devel/scanprov +CALLREG_NAMED_BUFF_CLEAR # Z added by devel/scanprov +CALLREG_NAMED_BUFF_COUNT # Z added by devel/scanprov +CALLREG_NAMED_BUFF_DELETE # Z added by devel/scanprov +CALLREG_NAMED_BUFF_EXISTS # Z added by devel/scanprov +CALLREG_NAMED_BUFF_FETCH # Z added by devel/scanprov +CALLREG_NAMED_BUFF_FIRSTKEY # Z added by devel/scanprov +CALLREG_NAMED_BUFF_NEXTKEY # Z added by devel/scanprov +CALLREG_NAMED_BUFF_SCALAR # Z added by devel/scanprov +CALLREG_NAMED_BUFF_STORE # Z added by devel/scanprov +CALLREG_NUMBUF_FETCH # Z added by devel/scanprov +CALLREG_NUMBUF_LENGTH # Z added by devel/scanprov +CALLREG_NUMBUF_STORE # Z added by devel/scanprov +CALLREG_PACKAGE # Z added by devel/scanprov +CASE_STD_PMMOD_FLAGS_PARSE_SET # Z added by devel/scanprov +check_end_shift # Z added by devel/scanprov +COMMIT # Z added by devel/scanprov +COMMIT_next # Z added by devel/scanprov +COMMIT_next_fail # Z added by devel/scanprov +CONTINUE_PAT_MOD # Z added by devel/scanprov +CopFILE_setn # Z added by devel/scanprov CopLABEL # U +CopLABEL_alloc # Z added by devel/scanprov +COP_SEQ_RANGE_HIGH # Z added by devel/scanprov +COP_SEQ_RANGE_LOW # Z added by devel/scanprov +CURLY_B_max # Z added by devel/scanprov +CURLY_B_max_fail # Z added by devel/scanprov +CURLY_B_min # Z added by devel/scanprov +CURLY_B_min_fail # Z added by devel/scanprov +CURLYM_A # Z added by devel/scanprov +CURLYM_A_fail # Z added by devel/scanprov +CURLYM_B # Z added by devel/scanprov +CURLYM_B_fail # Z added by devel/scanprov +CURLYX_end # Z added by devel/scanprov +CURLYX_end_fail # Z added by devel/scanprov +CUTGROUP # Z added by devel/scanprov +CUTGROUP_next # Z added by devel/scanprov +CUTGROUP_next_fail # Z added by devel/scanprov +cx_type # Z added by devel/scanprov +DEBUG_BUFFERS_r # Z added by devel/scanprov +DEBUG_FLAGS_r # Z added by devel/scanprov +DEBUG_OPTIMISE_MORE_r # Z added by devel/scanprov +DEBUG_STACK_r # Z added by devel/scanprov +DEBUG_U # Z added by devel/scanprov +DEBUG_U_FLAG # Z added by devel/scanprov +DEBUG_U_TEST # Z added by devel/scanprov +DEBUG_Uv # Z added by devel/scanprov +DEBUG_Uv_TEST # Z added by devel/scanprov +DEFINEP # Z added by devel/scanprov +ENDLIKE # Z added by devel/scanprov +EXEC_PAT_MOD # Z added by devel/scanprov +EXEC_PAT_MODS # Z added by devel/scanprov +EXT_PAT_MODS # Z added by devel/scanprov +FAKE_BIT_BUCKET # Z added by devel/scanprov +find_and_forget_pmops # F added by devel/scanprov +float_end_shift # Z added by devel/scanprov get_cvn_flags # U +GLOBAL_PAT_MOD # Z added by devel/scanprov +GOSUB # Z added by devel/scanprov gv_fetchfile_flags # U +GV_NOADD_MASK # Z added by devel/scanprov +HAS_CTERMID # K added by devel/scanprov +HAS_PTHREAD_YIELD # K added by devel/scanprov +HAS_SIGNBIT # K added by devel/scanprov +HINT_LEXICAL_IO_IN # Z added by devel/scanprov +HINT_LEXICAL_IO_OUT # Z added by devel/scanprov +HV_DELETE # Z added by devel/scanprov +HV_FETCH_ISEXISTS # Z added by devel/scanprov +HV_FETCH_ISSTORE # Z added by devel/scanprov +HV_FETCH_JUST_SV # Z added by devel/scanprov +HV_FETCH_LVALUE # Z added by devel/scanprov +HvMROMETA # Z added by devel/scanprov +HVrhek_PV_UTF8 # Z added by devel/scanprov +IFMATCH_A # Z added by devel/scanprov +IFMATCH_A_fail # Z added by devel/scanprov +IGNORE_PAT_MOD # Z added by devel/scanprov +INSUBP # Z added by devel/scanprov +INT_PAT_MODS # Z added by devel/scanprov +IS_ANYOF_TRIE # Z added by devel/scanprov +isGV_with_GP_off # Z added by devel/scanprov +isGV_with_GP_on # Z added by devel/scanprov +is_LNBREAK_latin1_safe # Z added by devel/scanprov +is_LNBREAK_safe # Z added by devel/scanprov +is_LNBREAK_utf8_safe # Z added by devel/scanprov +IS_TRIE_AC # Z added by devel/scanprov +KEEPCOPY_PAT_MOD # Z added by devel/scanprov +KEEPCOPY_PAT_MODS # Z added by devel/scanprov +KEEPS # Z added by devel/scanprov +KEEPS_next # Z added by devel/scanprov +KEEPS_next_fail # Z added by devel/scanprov +KEY_UNITCHECK # Z added by devel/scanprov lex_start # E (Perl_lex_start) +LNBREAK # Z added by devel/scanprov +LOOP_PAT_MODS # Z added by devel/scanprov +L_R_TZSET # K added by devel/scanprov +MARKPOINT # Z added by devel/scanprov +MARKPOINT_next # Z added by devel/scanprov +MARKPOINT_next_fail # Z added by devel/scanprov +MAX_RECURSE_EVAL_NOCHANGE_DEPTH # Z added by devel/scanprov memEQs # U memNEs # U +MEM_SIZE_MAX # Z added by devel/scanprov +M_PAT_MODS # Z added by devel/scanprov mro_get_linear_isa # U +mro_get_linear_isa_dfs # F added by devel/scanprov +mro_isa_changed_in # F added by devel/scanprov +mro_meta_dup # F added by devel/scanprov mro_method_changed_in # U +MULTILINE_PAT_MOD # Z added by devel/scanprov +MY_CXT_INDEX # Z added by devel/scanprov my_dirfd # U newSV_type # U +ONCE_PAT_MOD # Z added by devel/scanprov +ONCE_PAT_MODS # Z added by devel/scanprov +OPFAIL # Z added by devel/scanprov +PAD_COMPNAME_SV # Z added by devel/scanprov +PAD_FAKELEX_ANON # Z added by devel/scanprov +PAD_FAKELEX_MULTI # Z added by devel/scanprov +PARENT_FAKELEX_FLAGS # Z added by devel/scanprov +PARENT_PAD_INDEX # Z added by devel/scanprov +parser_free # F added by devel/scanprov +Perl_emulate_cop_io # F added by devel/scanprov +PERL_ENABLE_POSITIVE_ASSERTION_STUDY # Z added by devel/scanprov +PERL_FILTER_EXISTS # Z added by devel/scanprov +Perl_get_db_sub # F added by devel/scanprov +Perl_get_re_arg # F added by devel/scanprov +PERL___I # Z added by devel/scanprov +PERLIO_INIT # Z added by devel/scanprov +PERLIO_TERM # Z added by devel/scanprov +Perl_mro_meta_init # F added by devel/scanprov +Perl_op_refcnt_dec # F added by devel/scanprov +Perl_op_refcnt_inc # F added by devel/scanprov PERL_PV_ESCAPE_RE # E +PERL_REENTR_API # Z added by devel/scanprov Perl_signbit # U +Perl_softref2xv # F added by devel/scanprov +PL_isarev # Z added by devel/scanprov PL_parser # E +PL_unitcheckav # Z added by devel/scanprov +PL_unitcheckav_save # Z added by devel/scanprov +PMf_KEEPCOPY # Z added by devel/scanprov +PMf_USED # Z added by devel/scanprov pregcomp # E (Perl_pregcomp) +PREGf_CUTGROUP_SEEN # Z added by devel/scanprov +PREGf_IMPLICIT # Z added by devel/scanprov +PREGf_NAUGHTY # Z added by devel/scanprov +PREGf_SKIP # Z added by devel/scanprov +PREGf_VERBARG_SEEN # Z added by devel/scanprov +PRINTF_FORMAT_NULL_OK # K added by devel/scanprov +process_special_blocks # F added by devel/scanprov +PRUNE # Z added by devel/scanprov ptr_table_clear # U ptr_table_fetch # U ptr_table_free # U ptr_table_new # U ptr_table_split # U ptr_table_store # U +QR_PAT_MODS # Z added by devel/scanprov re_compile # U -regfree_internal # U -reg_named_buff_all # U -reg_named_buff_exists # U -reg_named_buff_fetch # U -reg_named_buff_firstkey # U -reg_named_buff_nextkey # U -reg_named_buff_scalar # U -savesharedpvn # U -scan_vstring # E (Perl_scan_vstring) -SVfARG # U -SvRX # U -SvRXOK # U -upg_version # E (Perl_upg_version) -GV_NOADD_MASK # M added by devel/scanprov -SV_COW_SHARED_HASH_KEYS # M added by devel/scanprov -boot_core_mro # F added by devel/scanprov -find_and_forget_pmops # F added by devel/scanprov -mro_get_linear_isa_dfs # F added by devel/scanprov -mro_isa_changed_in # F added by devel/scanprov -mro_meta_dup # F added by devel/scanprov -parser_free # F added by devel/scanprov -Perl_emulate_cop_io # F added by devel/scanprov -Perl_get_db_sub # F added by devel/scanprov -Perl_get_re_arg # F added by devel/scanprov -Perl_mro_meta_init # F added by devel/scanprov -Perl_my_cxt_index # F added by devel/scanprov -Perl_op_refcnt_dec # F added by devel/scanprov -Perl_op_refcnt_inc # F added by devel/scanprov -Perl_softref2xv # F added by devel/scanprov -process_special_blocks # F added by devel/scanprov +RE_DEBUG_COMPILE_FLAGS # Z added by devel/scanprov +RE_DEBUG_EXTRA_BUFFERS # Z added by devel/scanprov +RE_DEBUG_EXTRA_OFFDEBUG # Z added by devel/scanprov +RE_DEBUG_EXTRA_OPTIMISE # Z added by devel/scanprov +RE_DEBUG_EXTRA_STACK # Z added by devel/scanprov +REF_HE_KEY # Z added by devel/scanprov reg_check_named_buff_matched # F added by devel/scanprov regdump_extflags # F added by devel/scanprov +regdupe_internal # F added by devel/scanprov +regfree_internal # F added by devel/scanprov reghop4 # F added by devel/scanprov +REGMATCH_STATE_MAX # Z added by devel/scanprov reg_named_buff # F added by devel/scanprov +reg_named_buff_all # F added by devel/scanprov +reg_named_buff_exists # F added by devel/scanprov +reg_named_buff_fetch # F added by devel/scanprov +reg_named_buff_firstkey # F added by devel/scanprov reg_named_buff_iter # F added by devel/scanprov +reg_named_buff_nextkey # F added by devel/scanprov +reg_named_buff_scalar # F added by devel/scanprov reg_numbered_buff_fetch # F added by devel/scanprov reg_numbered_buff_length # F added by devel/scanprov reg_numbered_buff_store # F added by devel/scanprov @@ -65,5 +209,88 @@ reg_skipcomment # F added by devel/scanprov reg_temp_copy # F added by devel/scanprov require_tie_mod # F added by devel/scanprov +RE_TRACK_PATTERN_OFFSETS # Z added by devel/scanprov +RXapif_ALL # Z added by devel/scanprov +RXapif_CLEAR # Z added by devel/scanprov +RXapif_DELETE # Z added by devel/scanprov +RXapif_EXISTS # Z added by devel/scanprov +RXapif_FETCH # Z added by devel/scanprov +RXapif_FIRSTKEY # Z added by devel/scanprov +RXapif_NEXTKEY # Z added by devel/scanprov +RXapif_ONE # Z added by devel/scanprov +RXapif_REGNAME # Z added by devel/scanprov +RXapif_REGNAMES # Z added by devel/scanprov +RXapif_REGNAMES_COUNT # Z added by devel/scanprov +RXapif_SCALAR # Z added by devel/scanprov +RXapif_STORE # Z added by devel/scanprov +RX_BUFF_IDX_FULLMATCH # Z added by devel/scanprov +RX_BUFF_IDX_POSTMATCH # Z added by devel/scanprov +RX_BUFF_IDX_PREMATCH # Z added by devel/scanprov +RXf_CHECK_ALL # Z added by devel/scanprov +RXf_COPY_DONE # Z added by devel/scanprov +RXf_EVAL_SEEN # Z added by devel/scanprov +RXf_INTUIT_TAIL # Z added by devel/scanprov +RXf_MATCH_UTF8 # Z added by devel/scanprov +RXf_PMf_COMPILETIME # Z added by devel/scanprov +RXf_PMf_EXTENDED # Z added by devel/scanprov +RXf_PMf_FOLD # Z added by devel/scanprov +RXf_PMf_KEEPCOPY # Z added by devel/scanprov +RXf_PMf_MULTILINE # Z added by devel/scanprov +RXf_PMf_SINGLELINE # Z added by devel/scanprov +RXf_PMf_STD_PMMOD # Z added by devel/scanprov +RXf_SKIPWHITE # Z added by devel/scanprov +RXf_SPLIT # Z added by devel/scanprov +RXf_START_ONLY # Z added by devel/scanprov +RXf_TAINTED # Z added by devel/scanprov +RXf_TAINTED_SEEN # Z added by devel/scanprov +RXf_USE_INTUIT # Z added by devel/scanprov +RXf_USE_INTUIT_ML # Z added by devel/scanprov +RXf_USE_INTUIT_NOML # Z added by devel/scanprov +RXf_WHITE # Z added by devel/scanprov +RXi_GET # Z added by devel/scanprov +RXi_GET_DECL # Z added by devel/scanprov +RXi_SET # Z added by devel/scanprov +SAVEPARSER # Z added by devel/scanprov +savesharedpvn # U +SAVEt_PARSER # Z added by devel/scanprov +scan_vstring # E (Perl_scan_vstring) +SINGLE_PAT_MOD # Z added by devel/scanprov +SKIP # Z added by devel/scanprov +SKIP_next # Z added by devel/scanprov +SKIP_next_fail # Z added by devel/scanprov Slab_to_rw # F added by devel/scanprov +S_PAT_MODS # Z added by devel/scanprov +STD_PAT_MODS # Z added by devel/scanprov +SV_COW_OTHER_PVS # Z added by devel/scanprov +SV_COW_SHARED_HASH_KEYS # M added by devel/scanprov +SV_DO_COW_SVSETSV # Z added by devel/scanprov +SVfARG # U +SvOURSTASH # Z added by devel/scanprov +SvOURSTASH_set # Z added by devel/scanprov +SvPCS_IMPORTED # Z added by devel/scanprov +SvPCS_IMPORTED_off # Z added by devel/scanprov +SvPCS_IMPORTED_on # Z added by devel/scanprov +SVpgv_GP # Z added by devel/scanprov +SVprv_PCS_IMPORTED # Z added by devel/scanprov +SvRX # U +SvRXOK # U +SV_SAVED_COPY # Z added by devel/scanprov +SVt_PVBM # Z added by devel/scanprov +TRIE_next # Z added by devel/scanprov +TRIE_next_fail # Z added by devel/scanprov +TRIE_WORDS_OFFSET # Z added by devel/scanprov update_debugger_info # F added by devel/scanprov +upg_version # E (Perl_upg_version) +VERB # Z added by devel/scanprov +WHILEM_A_max # Z added by devel/scanprov +WHILEM_A_max_fail # Z added by devel/scanprov +WHILEM_A_min # Z added by devel/scanprov +WHILEM_A_min_fail # Z added by devel/scanprov +WHILEM_A_pre # Z added by devel/scanprov +WHILEM_A_pre_fail # Z added by devel/scanprov +WHILEM_B_max # Z added by devel/scanprov +WHILEM_B_max_fail # Z added by devel/scanprov +WHILEM_B_min # Z added by devel/scanprov +WHILEM_B_min_fail # Z added by devel/scanprov +XTENDED_PAT_MOD # Z added by devel/scanprov +YYEMPTY # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5010000 perl-5.34.0/dist/Devel-PPPort/parts/base/5010000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5010000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5010000 2020-10-04 22:17:12.000000000 +0000 @@ -1,16 +1,62 @@ 5.010000 -hv_common # U -hv_common_key_len # U +HAS_ASCTIME_R # K added by devel/scanprov +HAS_CRYPT_R # K added by devel/scanprov +HAS_CTIME_R # K added by devel/scanprov +HAS_DRAND48_R # K added by devel/scanprov +HAS_GETGRENT_R # K added by devel/scanprov +HAS_GETGRGID_R # K added by devel/scanprov +HAS_GETGRNAM_R # K added by devel/scanprov +HAS_GETHOSTBYADDR_R # K added by devel/scanprov +HAS_GETHOSTBYNAME_R # K added by devel/scanprov +HAS_GETHOSTENT_R # K added by devel/scanprov +HAS_GETLOGIN_R # K added by devel/scanprov +HAS_GETNETBYADDR_R # K added by devel/scanprov +HAS_GETNETBYNAME_R # K added by devel/scanprov +HAS_GETNETENT_R # K added by devel/scanprov +HAS_GETPROTOBYNAME_R # K added by devel/scanprov +HAS_GETPROTOBYNUMBER_R # K added by devel/scanprov +HAS_GETPROTOENT_R # K added by devel/scanprov +HAS_GETPWENT_R # K added by devel/scanprov +HAS_GETPWNAM_R # K added by devel/scanprov +HAS_GETPWUID_R # K added by devel/scanprov +HAS_GETSERVBYNAME_R # K added by devel/scanprov +HAS_GETSERVBYPORT_R # K added by devel/scanprov +HAS_GETSERVENT_R # K added by devel/scanprov +HAS_GETSPNAM_R # K added by devel/scanprov +HAS_GMTIME_R # K added by devel/scanprov +HAS_LOCALTIME_R # K added by devel/scanprov +HAS_OFF64_T # K added by devel/scanprov +HAS_PTHREAD_ATFORK # K added by devel/scanprov +HAS_RANDOM_R # K added by devel/scanprov +HAS_READDIR64_R # K added by devel/scanprov +HAS_READDIR_R # K added by devel/scanprov +HAS_SETRESGID_PROTO # K added by devel/scanprov +HAS_SETRESUID_PROTO # K added by devel/scanprov +HAS_SRAND48_R # K added by devel/scanprov +HAS_SRANDOM_R # K added by devel/scanprov +HAS_STRERROR_R # K added by devel/scanprov +HAS_TMPNAM_R # K added by devel/scanprov +HAS_TTYNAME_R # K added by devel/scanprov +hv_common # F added by devel/scanprov +hv_common_key_len # F added by devel/scanprov +HV_DISABLE_UVAR_XKEY # Z added by devel/scanprov +LOCALTIME_R_NEEDS_TZSET # K added by devel/scanprov +my_cxt_init # U +PERL_INTERPRETER_SIZE_UPTO_MEMBER # Z added by devel/scanprov PERL_PV_PRETTY_ELLIPSES # E -reentrant_free # U -reentrant_init # U -reentrant_retry # U -reentrant_size # U +PERL_PV_PRETTY_NOCLEAR # M added by devel/scanprov +Perl_sys_init # F added by devel/scanprov +Perl_sys_init3 # F added by devel/scanprov +PERL_SYS_INIT3_BODY # Z added by devel/scanprov +PERL_SYS_INIT_BODY # Z added by devel/scanprov +Perl_sys_term # F added by devel/scanprov +PERL_SYS_TERM_BODY # Z added by devel/scanprov +PL_destroyhook # Z added by devel/scanprov +RXf_NULL # Z added by devel/scanprov START_MY_CXT # E +sv_2num # F added by devel/scanprov sv_destroyable # U -sys_init # U -sys_init3 # U -sys_term # U -PERL_PV_PRETTY_NOCLEAR # M added by devel/scanprov +SvDESTROYABLE # Z added by devel/scanprov +USE_ITHREADS # K added by devel/scanprov +XSINTERFACE_CVT_ANON # Z added by devel/scanprov XSPROTO # M added by devel/scanprov -sv_2num # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5010001 perl-5.34.0/dist/Devel-PPPort/parts/base/5010001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5010001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5010001 2020-10-04 22:17:12.000000000 +0000 @@ -1,29 +1,121 @@ 5.010001 croak_xs_usage # U +CxHASARGS # Z added by devel/scanprov +CxLABEL # Z added by devel/scanprov +CxLVAL # Z added by devel/scanprov +CxOLD_IN_EVAL # Z added by devel/scanprov +CxOLD_OP_TYPE # Z added by devel/scanprov +CxONCE # Z added by devel/scanprov +DEFSV_set # U +dSAVEDERRNO # Z added by devel/scanprov +dSAVE_ERRNO # Z added by devel/scanprov +GMTIME_MAX # K added by devel/scanprov +GMTIME_MIN # K added by devel/scanprov +G_WANT # Z added by devel/scanprov +HASATTRIBUTE_DEPRECATED # K added by devel/scanprov +HAS_BUILTIN_EXPECT # K added by devel/scanprov +HAS_GETADDRINFO # K added by devel/scanprov +HAS_GETNAMEINFO # K added by devel/scanprov +HAS_INETNTOP # K added by devel/scanprov +HAS_INETPTON # K added by devel/scanprov +HAS_TIMEGM # K added by devel/scanprov HeUTF8 # U +HINT_NO_AMAGIC # Z added by devel/scanprov +HVhek_KEYCANONICAL # Z added by devel/scanprov +I_SYS_POLL # K added by devel/scanprov +LOCALTIME_MAX # K added by devel/scanprov +LOCALTIME_MIN # K added by devel/scanprov +magic_clearisa # F added by devel/scanprov +malloc_good_size # F added by devel/scanprov +mem_log_common # F added by devel/scanprov mPUSHs # U mro_get_from_name # U +MRO_GET_PRIVATE_DATA # Z added by devel/scanprov mro_get_private_data # U mro_register # U mro_set_mro # U mro_set_private_data # U +MUTABLE_AV # U +MUTABLE_CV # U +MUTABLE_GV # U +MUTABLE_HV # U +MUTABLE_IO # U +MUTABLE_PTR # U +MUTABLE_SV # U mXPUSHs # U newSVpvn_flags # U newSVpvn_utf8 # U newSVpvs_flags # U -save_freeop # U (Perl_save_freeop) +NV_OVERFLOWS_INTEGERS_AT # K added by devel/scanprov +OP_GIMME_REVERSE # Z added by devel/scanprov +PERL_BITFIELD16 # Z added by devel/scanprov +PERL_BITFIELD32 # Z added by devel/scanprov +PERL_BITFIELD8 # Z added by devel/scanprov +PERLDBf_SAVESRC # Z added by devel/scanprov +PERLDBf_SAVESRC_INVALID # Z added by devel/scanprov +PERLDBf_SAVESRC_NOSUBS # Z added by devel/scanprov +PERLDB_SAVESRC # Z added by devel/scanprov +PERLDB_SAVESRC_INVALID # Z added by devel/scanprov +PERLDB_SAVESRC_NOSUBS # Z added by devel/scanprov +PERL_FS_VERSION # Z added by devel/scanprov +PERL_GIT_UNPUSHED_COMMITS # Z added by devel/scanprov +Perl_malloc_good_size # Z added by devel/scanprov +PERL_PATCHNUM # Z added by devel/scanprov +Perl_safesysmalloc_size # Z added by devel/scanprov +PERL_SUB_DEPTH_WARN # Z added by devel/scanprov +PERL_USE_DEVEL # K added by devel/scanprov +PERL_VERSION_STRING # Z added by devel/scanprov +PL_breakable_sub_gen # Z added by devel/scanprov +PL_registered_mros # Z added by devel/scanprov +PL_sv_serial # Z added by devel/scanprov +prepare_SV_for_RV # Z added by devel/scanprov +RESTORE_ERRNO # Z added by devel/scanprov +RX_ANCHORED_SUBSTR # Z added by devel/scanprov +RX_ANCHORED_UTF8 # Z added by devel/scanprov +RX_CHECK_SUBSTR # Z added by devel/scanprov +RX_ENGINE # Z added by devel/scanprov +RX_EXTFLAGS # Z added by devel/scanprov +RX_FLOAT_SUBSTR # Z added by devel/scanprov +RX_FLOAT_UTF8 # Z added by devel/scanprov +RXf_PMf_STD_PMMOD_SHIFT # Z added by devel/scanprov +RX_GOFS # Z added by devel/scanprov +RX_LASTCLOSEPAREN # Z added by devel/scanprov +RX_LASTPAREN # Z added by devel/scanprov +RX_MINLEN # Z added by devel/scanprov +RX_MINLENRET # Z added by devel/scanprov +RX_NPARENS # Z added by devel/scanprov +RX_OFFS # Z added by devel/scanprov +RXp_EXTFLAGS # Z added by devel/scanprov +RXp_MATCH_COPIED # Z added by devel/scanprov +RXp_MATCH_COPIED_off # Z added by devel/scanprov +RXp_MATCH_COPIED_on # Z added by devel/scanprov +RXp_MATCH_TAINTED # Z added by devel/scanprov +RXp_MATCH_UTF8 # Z added by devel/scanprov +RXp_PAREN_NAMES # Z added by devel/scanprov +RX_PRECOMP # Z added by devel/scanprov +RX_PRECOMP_const # Z added by devel/scanprov +RX_PRELEN # Z added by devel/scanprov +RX_REFCNT # Z added by devel/scanprov +RX_SUBBEG # Z added by devel/scanprov +RX_SUBLEN # Z added by devel/scanprov +RX_UTF8 # Z added by devel/scanprov +RX_WRAPLEN # Z added by devel/scanprov +RX_WRAPPED # Z added by devel/scanprov +SAVE_ERRNO # Z added by devel/scanprov +save_freeop # Z added by devel/scanprov +SAVEFREEOP # U +save_freepv # Z added by devel/scanprov +save_freesv # Z added by devel/scanprov save_hints # U +save_mortalizesv # Z added by devel/scanprov save_op # U (Perl_save_op) save_padsv_and_mortalize # U +SAVEPADSVANDMORTALIZE # Z added by devel/scanprov save_pushi32ptr # U save_pushptr # U -save_pushptrptr # U -sv_insert_flags # U -DEFSV_set # M added by devel/scanprov -MUTABLE_PTR # M added by devel/scanprov -MUTABLE_SV # M added by devel/scanprov -magic_clearisa # F added by devel/scanprov -malloc_good_size # F added by devel/scanprov -mem_log_common # F added by devel/scanprov save_pushptri32ptr # F added by devel/scanprov +save_pushptrptr # U +SAVEt_PADSV_AND_MORTALIZE # Z added by devel/scanprov search_const # F added by devel/scanprov +sv_insert_flags # U +SvRV_const # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5011000 perl-5.34.0/dist/Devel-PPPort/parts/base/5011000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5011000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5011000 2020-10-04 22:17:12.000000000 +0000 @@ -1,26 +1,67 @@ 5.011000 -av_iter_p # U +blk_format # Z added by devel/scanprov +blk_u16 # Z added by devel/scanprov +CXp_HASARGS # Z added by devel/scanprov +CXp_ONCE # Z added by devel/scanprov +CXt_LOOP_LAZYIV # Z added by devel/scanprov +CXt_LOOP_LAZYSV # Z added by devel/scanprov +CXt_LOOP_PLAIN # Z added by devel/scanprov +CxTYPE_is_LOOP # Z added by devel/scanprov +DEBUG_B # Z added by devel/scanprov +DEBUG_B_FLAG # Z added by devel/scanprov +DEBUG_B_TEST # Z added by devel/scanprov +DEBUG_GPOS_r # Z added by devel/scanprov +do_delete_local # F added by devel/scanprov +dump_all_perl # F added by devel/scanprov +dump_packsubs_perl # F added by devel/scanprov +dump_sub_perl # F added by devel/scanprov +get_aux_mg # F added by devel/scanprov +get_cvs # U gv_add_by_type # U Gv_AMupdate # A +GV_AUTOLOAD # Z added by devel/scanprov +GV_CROAK # Z added by devel/scanprov +gv_SVadd # Z added by devel/scanprov +incpush_use_sep # F added by devel/scanprov +INT_64_T # Z added by devel/scanprov is_ascii_string # U +magic_clearhints # F added by devel/scanprov +my # Z added by devel/scanprov +NATIVE8_TO_UNI # Z added by devel/scanprov +Perl_assert # Z added by devel/scanprov +Perl_av_iter_p # F added by devel/scanprov +PL_ofsgv # Z added by devel/scanprov PL_opfreehook # E -pregfree2 # U +pregfree2 # F added by devel/scanprov PUSH_MULTICALL # U +RE_DEBUG_EXTRA_GPOS # Z added by devel/scanprov re_dup_guts # U +RX_SAVED_COPY # Z added by devel/scanprov +RX_WRAPPED_const # Z added by devel/scanprov save_adelete # U +SAVEADELETE # Z added by devel/scanprov save_aelem_flags # U +SAVEf_KEEPOLDELEM # Z added by devel/scanprov +SAVEf_SETMAGIC # Z added by devel/scanprov save_hdelete # U +SAVEHDELETE # Z added by devel/scanprov save_helem_flags # U +SAVEt_ADELETE # Z added by devel/scanprov +S_IFIFO # Z added by devel/scanprov +SvCANEXISTDELETE # Z added by devel/scanprov +sv_dup_inc_multiple # F added by devel/scanprov +SV_FORCE_UTF8_UPGRADE # Z added by devel/scanprov SvOOK_offset # U SVt_REGEXP # E +SVt_RV # Z added by devel/scanprov +SV_UNDEF_RETURNS_NULL # Z added by devel/scanprov sv_utf8_upgrade_flags_grow # U +SYSTEM_GMTIME_MAX # Z added by devel/scanprov +SYSTEM_GMTIME_MIN # Z added by devel/scanprov +SYSTEM_LOCALTIME_MAX # Z added by devel/scanprov +SYSTEM_LOCALTIME_MIN # Z added by devel/scanprov +TM # Z added by devel/scanprov +USE_SYSTEM_GMTIME # Z added by devel/scanprov +USE_SYSTEM_LOCALTIME # Z added by devel/scanprov +USE_TM64 # Z added by devel/scanprov WARN_IMPRECISION # E -get_cvs # M added by devel/scanprov -do_delete_local # F added by devel/scanprov -dump_all_perl # F added by devel/scanprov -dump_packsubs_perl # F added by devel/scanprov -dump_sub_perl # F added by devel/scanprov -get_aux_mg # F added by devel/scanprov -incpush_use_sep # F added by devel/scanprov -magic_clearhints # F added by devel/scanprov -sv_dup_inc_multiple # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5011001 perl-5.34.0/dist/Devel-PPPort/parts/base/5011001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5011001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5011001 2020-10-04 22:17:12.000000000 +0000 @@ -1,7 +1,9 @@ 5.011001 -ck_warner # U -ck_warner_d # U add_utf16_textfilter # F added by devel/scanprov ckwarn_common # F added by devel/scanprov +ck_warner # U +ck_warner_d # U +deprecate # Z added by devel/scanprov package_version # F added by devel/scanprov utf16_textfilter # F added by devel/scanprov +WARNshift # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5011002 perl-5.34.0/dist/Devel-PPPort/parts/base/5011002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5011002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5011002 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,14 @@ 5.011002 -CHARBITS # E +CHARBITS # K added by devel/scanprov ENTER_with_name # U +gv_try_downgrade # F added by devel/scanprov +HINT_UNI_8_BIT # Z added by devel/scanprov +IN_UNI_8_BIT # Z added by devel/scanprov +KEYWORD_PLUGIN_DECLINE # Z added by devel/scanprov +KEYWORD_PLUGIN_EXPR # Z added by devel/scanprov +KEYWORD_PLUGIN_STMT # Z added by devel/scanprov +LATIN_SMALL_LETTER_SHARP_S # Z added by devel/scanprov +LATIN_SMALL_LETTER_Y_WITH_DIAERESIS # Z added by devel/scanprov LEAVE_with_name # U lex_bufutf8 # U lex_discard_to # U @@ -15,6 +23,18 @@ lex_stuff_sv # U LEX_STUFF_UTF8 # E lex_unstuff # U -PL_keyword_plugin # E -gv_try_downgrade # F added by devel/scanprov +MAX_PORTABLE_UTF8_TWO_BYTE # Z added by devel/scanprov +MICRO_SIGN # Z added by devel/scanprov +OPpREVERSE_INPLACE # Z added by devel/scanprov +padadd_NO_DUP_CHECK # Z added by devel/scanprov +padadd_OUR # Z added by devel/scanprov +padadd_STATE # Z added by devel/scanprov Perl_keyword_plugin_standard # F added by devel/scanprov +PL_keyword_plugin # E +PL_scopestack_name # Z added by devel/scanprov +toLOWER_LATIN1 # Z added by devel/scanprov +toUPPER_LATIN1_MOD # Z added by devel/scanprov +UTF8_TWO_BYTE_HI # Z added by devel/scanprov +UTF8_TWO_BYTE_HI_nocast # Z added by devel/scanprov +UTF8_TWO_BYTE_LO # Z added by devel/scanprov +UTF8_TWO_BYTE_LO_nocast # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5011004 perl-5.34.0/dist/Devel-PPPort/parts/base/5011004 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5011004 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5011004 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,7 @@ 5.011004 +BADVERSION # Z added by devel/scanprov +force_strict_version # F added by devel/scanprov +is_LAX_VERSION # Z added by devel/scanprov +is_STRICT_VERSION # Z added by devel/scanprov prescan_version # U WARN_ILLEGALPROTO # E -force_strict_version # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5011005 perl-5.34.0/dist/Devel-PPPort/parts/base/5011005 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5011005 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5011005 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,5 @@ 5.011005 +isALNUMU # Z added by devel/scanprov +isALPHAU # Z added by devel/scanprov +isCHARNAME_CONT # Z added by devel/scanprov sv_pos_u2b_flags # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5013000 perl-5.34.0/dist/Devel-PPPort/parts/base/5013000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5013000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5013000 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,5 @@ 5.013000 cBOOL # U +GvEGVx # Z added by devel/scanprov +HAS_PRCTL # K added by devel/scanprov +HAS_PRCTL_SET_NAME # K added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5013001 perl-5.34.0/dist/Devel-PPPort/parts/base/5013001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5013001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5013001 2020-10-04 22:17:12.000000000 +0000 @@ -1,12 +1,22 @@ 5.013001 croak_sv # U die_sv # U -mess_sv # U -sv_2nv_flags # U -warn_sv # U die_unwind # F added by devel/scanprov grok_bslash_c # F added by devel/scanprov +G_UNDEF_FILL # Z added by devel/scanprov invoke_exception_hook # F added by devel/scanprov magic_methcall1 # F added by devel/scanprov +mess_sv # U Perl_magic_methcall # F added by devel/scanprov +PL_restartjmpenv # Z added by devel/scanprov +SAVE_MASK # Z added by devel/scanprov +SAVEt_I32_SMALL # Z added by devel/scanprov +SAVE_TIGHT_SHIFT # Z added by devel/scanprov +SAVEt_INT_SMALL # Z added by devel/scanprov +SSPOPUV # Z added by devel/scanprov +SSPUSHUV # Z added by devel/scanprov +sv_2nv # Z added by devel/scanprov +sv_2nv_flags # U +SV_SKIP_OVERLOAD # Z added by devel/scanprov +warn_sv # U with_queued_errors # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5013002 perl-5.34.0/dist/Devel-PPPort/parts/base/5013002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5013002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5013002 2020-10-04 22:17:12.000000000 +0000 @@ -1,18 +1,34 @@ 5.013002 +AMGf_numeric # Z added by devel/scanprov C_ARRAY_END # U clone_params_del # U clone_params_new # U +DM_ARRAY_ISA # Z added by devel/scanprov +dPOPnv_nomg # Z added by devel/scanprov +dPOPTOPiirl_nomg # Z added by devel/scanprov +dPOPTOPiirl_ul_nomg # Z added by devel/scanprov +dPOPTOPnnrl_nomg # Z added by devel/scanprov +dPOPXiirl_ul_nomg # Z added by devel/scanprov find_rundefsv # U foldEQ # U foldEQ_locale # U foldEQ_utf8 # U hv_fill # U -sv_dec_nomg # U -sv_dup_inc # U -sv_inc_nomg # U -SvNV_nomg # U +NONDESTRUCT_PAT_MOD # Z added by devel/scanprov +NONDESTRUCT_PAT_MODS # Z added by devel/scanprov padlist_dup # F added by devel/scanprov Perl_try_amagic_bin # F added by devel/scanprov Perl_try_amagic_un # F added by devel/scanprov +PL_signalhook # Z added by devel/scanprov +PMf_NONDESTRUCT # Z added by devel/scanprov +REGNODE_SIMPLE # Z added by devel/scanprov +REGNODE_VARIES # Z added by devel/scanprov +sv_dec_nomg # U sv_dup_common # F added by devel/scanprov +sv_dup_inc # U +sv_inc_nomg # U +SvIV_please_nomg # Z added by devel/scanprov +SvNV_nomg # U +tryAMAGICbin_MG # Z added by devel/scanprov +tryAMAGICun_MG # Z added by devel/scanprov unreferenced_to_tmp_stack # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5013003 perl-5.34.0/dist/Devel-PPPort/parts/base/5013003 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5013003 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5013003 2020-10-04 22:17:12.000000000 +0000 @@ -1,10 +1,24 @@ 5.013003 -blockhook_register # E -croak_no_modify # U anonymise_cv_maybe # F added by devel/scanprov assert_uft8_cache_coherent # F added by devel/scanprov +BhkDISABLE # Z added by devel/scanprov +BhkENABLE # Z added by devel/scanprov +BhkENTRY # Z added by devel/scanprov +BhkENTRY_set # Z added by devel/scanprov +BhkFLAGS # Z added by devel/scanprov +blockhook_register # E +CALL_BLOCK_HOOKS # Z added by devel/scanprov +croak_no_modify # U +CvCVGV_RC # Z added by devel/scanprov +CvCVGV_RC_off # Z added by devel/scanprov +CvCVGV_RC_on # Z added by devel/scanprov +CVf_CVGV_RC # Z added by devel/scanprov +CvGV_set # Z added by devel/scanprov cvgv_set # F added by devel/scanprov grok_bslash_o # F added by devel/scanprov +my_lstat # Z added by devel/scanprov my_lstat_flags # F added by devel/scanprov +my_stat # Z added by devel/scanprov my_stat_flags # F added by devel/scanprov +PL_blockhooks # Z added by devel/scanprov utf8_mg_len_cache_update # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5013004 perl-5.34.0/dist/Devel-PPPort/parts/base/5013004 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5013004 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5013004 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,10 @@ 5.013004 -XS_APIVERSION_BOOTCHECK # E +HAS_STATIC_INLINE # K added by devel/scanprov +PERL_API_VERSION_STRING # Z added by devel/scanprov Perl_hv_kill_backrefs # F added by devel/scanprov Perl_init_dbargs # F added by devel/scanprov +PERL_STATIC_INLINE # K added by devel/scanprov +PERL_STRLEN_EXPAND_SHIFT # Z added by devel/scanprov +PMf_BASE_SHIFT # Z added by devel/scanprov +RXf_BASE_SHIFT # Z added by devel/scanprov +XS_APIVERSION_BOOTCHECK # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5013005 perl-5.34.0/dist/Devel-PPPort/parts/base/5013005 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5013005 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5013005 2020-10-04 22:17:12.000000000 +0000 @@ -1,10 +1,13 @@ 5.013005 caller_cx # U +FITS_IN_8_BITS # Z added by devel/scanprov +gv_magicalize_isa # F added by devel/scanprov isOCTAL # U lex_stuff_pvs # U +MY_CXT_INIT_ARG # Z added by devel/scanprov parse_fullstmt # U -PL_rpeepp # E -gv_magicalize_isa # F added by devel/scanprov Perl_more_bodies # F added by devel/scanprov +PL_rpeepp # E rpeep # F added by devel/scanprov +SAVEt_GVSV # Z added by devel/scanprov yyunlex # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5013006 perl-5.34.0/dist/Devel-PPPort/parts/base/5013006 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5013006 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5013006 2020-10-04 22:17:12.000000000 +0000 @@ -1,9 +1,16 @@ 5.013006 +BHKf_bhk_eval # Z added by devel/scanprov +BHKf_bhk_post_end # Z added by devel/scanprov +BHKf_bhk_pre_end # Z added by devel/scanprov +BHKf_bhk_start # Z added by devel/scanprov ck_entersub_args_list # U ck_entersub_args_proto # U ck_entersub_args_proto_or_list # U cv_get_call_checker # E cv_set_call_checker # E +DEFAULT_PAT_MOD # Z added by devel/scanprov +FLAGS # Z added by devel/scanprov +gv_fetchpvn # U isALNUMC_A # U isALNUMC_L1 # U isALPHA_A # U @@ -40,7 +47,10 @@ isXDIGIT_L1 # U lex_stuff_pv # U LINKLIST # U +LOCALE_PAT_MOD # Z added by devel/scanprov +LOCALE_PAT_MODS # Z added by devel/scanprov mg_free_type # U +mro_package_moved # F added by devel/scanprov newSVpv_share # U op_append_elem # U op_append_list # U @@ -49,23 +59,28 @@ op_prepend_elem # U parse_stmtseq # U PERL_MAGIC_checkcall # E +Perl_populate_isa # F added by devel/scanprov rv2cv_op_cv # U RV2CVOPCV_MARK_EARLY # E RV2CVOPCV_RETURN_NAME_GV # E savesharedpvs # U savesharedsvpv # U -sv_2bool_flags # U +STD_PMMOD_FLAGS_CLEAR # Z added by devel/scanprov +sv_2bool # Z added by devel/scanprov +sv_2bool_flags # F added by devel/scanprov sv_catpv_flags # U sv_catpv_nomg # U sv_catpvs_flags # U sv_catpvs_mg # U sv_catpvs_nomg # U +sv_catxmlpvs # Z added by devel/scanprov sv_cmp_flags # U sv_cmp_locale_flags # U +sv_collxfrm # Z added by devel/scanprov sv_collxfrm_flags # U sv_eq_flags # U sv_setpvs_mg # U sv_setref_pvs # U SvTRUE_nomg # U -mro_package_moved # F added by devel/scanprov -Perl_populate_isa # F added by devel/scanprov +UNICODE_PAT_MOD # Z added by devel/scanprov +UNICODE_PAT_MODS # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5013007 perl-5.34.0/dist/Devel-PPPort/parts/base/5013007 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5013007 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5013007 2020-10-04 22:17:12.000000000 +0000 @@ -18,14 +18,29 @@ cophh_store_pvn # E cophh_store_pvs # E cophh_store_sv # E +CopHINTHASH_get # Z added by devel/scanprov +CopHINTHASH_set # Z added by devel/scanprov cop_hints_2hv # A cop_hints_fetch_pv # U cop_hints_fetch_pvn # U cop_hints_fetch_pvs # U cop_hints_fetch_sv # U custom_op_register # E +CvSTASH_set # Z added by devel/scanprov +cvstash_set # F added by devel/scanprov dirp_dup # A +HINT_RE_FLAGS # Z added by devel/scanprov HvENAME # U +hv_ename_add # F added by devel/scanprov +hv_ename_delete # F added by devel/scanprov +HvENAME_get # Z added by devel/scanprov +HvENAME_HEK # Z added by devel/scanprov +HvENAME_HEK_NN # Z added by devel/scanprov +HvENAMELEN_get # Z added by devel/scanprov +HV_FETCH_EMPTY_HE # Z added by devel/scanprov +HvNAME_HEK_NN # Z added by devel/scanprov +mro_clean_isarev # F added by devel/scanprov +mro_gather_and_rename # F added by devel/scanprov newFOROP # A newWHILEOP # A OP_CLASS # U @@ -35,25 +50,35 @@ parse_block # U parse_label # U PARSE_OPTIONAL # E +PERLIOBUF_DEFAULT_BUFSIZ # Z added by devel/scanprov +PL_custom_ops # Z added by devel/scanprov PL_phase # E -SvPV_nomg_nolen # U -XopFLAGS # E -XopDISABLE # M added by devel/scanprov -XopENABLE # M added by devel/scanprov -XopENTRY # M added by devel/scanprov -XopENTRY_set # M added by devel/scanprov -cvstash_set # F added by devel/scanprov -hv_ename_add # F added by devel/scanprov -hv_ename_delete # F added by devel/scanprov -mro_clean_isarev # F added by devel/scanprov -mro_gather_and_rename # F added by devel/scanprov -Perl_custom_op_xop # F added by devel/scanprov +PL_utf8_foldclosures # Z added by devel/scanprov refcounted_he_chain_2hv # F added by devel/scanprov refcounted_he_fetch_pv # F added by devel/scanprov refcounted_he_fetch_pvn # F added by devel/scanprov +refcounted_he_fetch_pvs # Z added by devel/scanprov refcounted_he_fetch_sv # F added by devel/scanprov refcounted_he_free # F added by devel/scanprov refcounted_he_inc # F added by devel/scanprov +REFCOUNTED_HE_KEY_UTF8 # Z added by devel/scanprov refcounted_he_new_pv # F added by devel/scanprov refcounted_he_new_pvn # F added by devel/scanprov +refcounted_he_new_pvs # Z added by devel/scanprov refcounted_he_new_sv # F added by devel/scanprov +SAVEFREECOPHH # Z added by devel/scanprov +SAVEt_FREECOPHH # Z added by devel/scanprov +SvPV_nomg_nolen # U +XopDISABLE # M added by devel/scanprov +XOPd_xop_class # Z added by devel/scanprov +XOPd_xop_desc # Z added by devel/scanprov +XOPd_xop_name # Z added by devel/scanprov +XOPd_xop_peep # Z added by devel/scanprov +XopENABLE # M added by devel/scanprov +XopENTRY # M added by devel/scanprov +XopENTRY_set # M added by devel/scanprov +XopFLAGS # E +XOPf_xop_class # Z added by devel/scanprov +XOPf_xop_desc # Z added by devel/scanprov +XOPf_xop_name # Z added by devel/scanprov +XOPf_xop_peep # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5013008 perl-5.34.0/dist/Devel-PPPort/parts/base/5013008 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5013008 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5013008 2020-10-04 22:17:12.000000000 +0000 @@ -1,9 +1,18 @@ 5.013008 -foldEQ_latin1 # U +ANYOF_CLASS_TEST_ANY_SET # Z added by devel/scanprov +DEBUG_Pv # Z added by devel/scanprov +DEBUG_Pv_TEST # Z added by devel/scanprov +EXACTFU # Z added by devel/scanprov +foldEQ_latin1 # F added by devel/scanprov +GREEK_SMALL_LETTER_MU # Z added by devel/scanprov +HV_NAME_SETALL # Z added by devel/scanprov mg_findext # U parse_arithexpr # U parse_fullexpr # U parse_listexpr # U parse_termexpr # U -sv_unmagicext # U Perl_hv_undef_flags # F added by devel/scanprov +PERLIO_F_CLEARED # Z added by devel/scanprov +REFFU # Z added by devel/scanprov +sv_unmagicext # U +TWO_BYTE_UTF8_TO_UNI # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5013009 perl-5.34.0/dist/Devel-PPPort/parts/base/5013009 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5013009 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5013009 2020-10-04 22:17:12.000000000 +0000 @@ -1,14 +1,151 @@ 5.013009 +AMG_CALLunary # Z added by devel/scanprov +ASCII_RESTRICT_PAT_MOD # Z added by devel/scanprov +ASCII_RESTRICT_PAT_MODS # Z added by devel/scanprov +BOUNDA # Z added by devel/scanprov +BOUNDU # Z added by devel/scanprov +check_utf8_print # F added by devel/scanprov +curse # F added by devel/scanprov +DEPENDS_PAT_MOD # Z added by devel/scanprov +DEPENDS_PAT_MODS # Z added by devel/scanprov +G_WRITING_TO_STDERR # Z added by devel/scanprov +HAS_SIN6_SCOPE_ID # K added by devel/scanprov +MAX_CHARSET_NAME_LENGTH # Z added by devel/scanprov +NBOUNDA # Z added by devel/scanprov +NBOUNDU # Z added by devel/scanprov +Perl_pp_accept # Z added by devel/scanprov +Perl_pp_andassign # Z added by devel/scanprov +Perl_pp_avalues # Z added by devel/scanprov +Perl_pp_bind # Z added by devel/scanprov +Perl_pp_bit_xor # Z added by devel/scanprov +Perl_pp_chmod # Z added by devel/scanprov +Perl_pp_chomp # Z added by devel/scanprov +Perl_pp_connect # Z added by devel/scanprov +Perl_pp_cos # Z added by devel/scanprov +Perl_pp_custom # Z added by devel/scanprov +Perl_pp_dbmclose # Z added by devel/scanprov +Perl_pp_dofile # Z added by devel/scanprov +Perl_pp_dor # Z added by devel/scanprov +Perl_pp_dorassign # Z added by devel/scanprov +Perl_pp_dump # Z added by devel/scanprov +Perl_pp_egrent # Z added by devel/scanprov +Perl_pp_enetent # Z added by devel/scanprov +Perl_pp_eprotoent # Z added by devel/scanprov +Perl_pp_epwent # Z added by devel/scanprov +Perl_pp_eservent # Z added by devel/scanprov +Perl_pp_exp # Z added by devel/scanprov +Perl_pp_fcntl # Z added by devel/scanprov +Perl_pp_ftatime # Z added by devel/scanprov +Perl_pp_ftbinary # Z added by devel/scanprov +Perl_pp_ftblk # Z added by devel/scanprov +Perl_pp_ftchr # Z added by devel/scanprov +Perl_pp_ftctime # Z added by devel/scanprov +Perl_pp_ftdir # Z added by devel/scanprov +Perl_pp_fteexec # Z added by devel/scanprov +Perl_pp_fteowned # Z added by devel/scanprov +Perl_pp_fteread # Z added by devel/scanprov +Perl_pp_ftewrite # Z added by devel/scanprov +Perl_pp_ftfile # Z added by devel/scanprov +Perl_pp_ftmtime # Z added by devel/scanprov +Perl_pp_ftpipe # Z added by devel/scanprov +Perl_pp_ftrexec # Z added by devel/scanprov +Perl_pp_ftrwrite # Z added by devel/scanprov +Perl_pp_ftsgid # Z added by devel/scanprov +Perl_pp_ftsize # Z added by devel/scanprov +Perl_pp_ftsock # Z added by devel/scanprov +Perl_pp_ftsuid # Z added by devel/scanprov +Perl_pp_ftsvtx # Z added by devel/scanprov +Perl_pp_ftzero # Z added by devel/scanprov +Perl_pp_getpeername # Z added by devel/scanprov +Perl_pp_getsockname # Z added by devel/scanprov +Perl_pp_ggrgid # Z added by devel/scanprov +Perl_pp_ggrnam # Z added by devel/scanprov +Perl_pp_ghbyaddr # Z added by devel/scanprov +Perl_pp_ghbyname # Z added by devel/scanprov +Perl_pp_gnbyaddr # Z added by devel/scanprov +Perl_pp_gnbyname # Z added by devel/scanprov +Perl_pp_gpbyname # Z added by devel/scanprov +Perl_pp_gpbynumber # Z added by devel/scanprov +Perl_pp_gpwnam # Z added by devel/scanprov +Perl_pp_gpwuid # Z added by devel/scanprov +Perl_pp_gsbyname # Z added by devel/scanprov +Perl_pp_gsbyport # Z added by devel/scanprov +Perl_pp_gsockopt # Z added by devel/scanprov +Perl_pp_hex # Z added by devel/scanprov +Perl_pp_keys # Z added by devel/scanprov +Perl_pp_kill # Z added by devel/scanprov +Perl_pp_lcfirst # Z added by devel/scanprov +Perl_pp_lineseq # Z added by devel/scanprov +Perl_pp_listen # Z added by devel/scanprov +Perl_pp_localtime # Z added by devel/scanprov +Perl_pp_log # Z added by devel/scanprov +Perl_pp_lstat # Z added by devel/scanprov +Perl_pp_mapstart # Z added by devel/scanprov +Perl_pp_msgctl # Z added by devel/scanprov +Perl_pp_msgget # Z added by devel/scanprov +Perl_pp_msgrcv # Z added by devel/scanprov +Perl_pp_msgsnd # Z added by devel/scanprov +Perl_pp_orassign # Z added by devel/scanprov +Perl_pp_padany # Z added by devel/scanprov +Perl_pp_pop # Z added by devel/scanprov +Perl_pp_read # Z added by devel/scanprov +Perl_pp_recv # Z added by devel/scanprov +Perl_pp_regcmaybe # Z added by devel/scanprov +Perl_pp_rindex # Z added by devel/scanprov +Perl_pp_rv2hv # Z added by devel/scanprov +Perl_pp_say # Z added by devel/scanprov +Perl_pp_scalar # Z added by devel/scanprov +Perl_pp_schomp # Z added by devel/scanprov +Perl_pp_scope # Z added by devel/scanprov +Perl_pp_seek # Z added by devel/scanprov +Perl_pp_semop # Z added by devel/scanprov +Perl_pp_send # Z added by devel/scanprov +Perl_pp_sge # Z added by devel/scanprov +Perl_pp_sgrent # Z added by devel/scanprov +Perl_pp_sgt # Z added by devel/scanprov +Perl_pp_shmctl # Z added by devel/scanprov +Perl_pp_shmget # Z added by devel/scanprov +Perl_pp_shmread # Z added by devel/scanprov +Perl_pp_shutdown # Z added by devel/scanprov +Perl_pp_slt # Z added by devel/scanprov +Perl_pp_snetent # Z added by devel/scanprov +Perl_pp_socket # Z added by devel/scanprov +Perl_pp_sprotoent # Z added by devel/scanprov +Perl_pp_spwent # Z added by devel/scanprov +Perl_pp_sqrt # Z added by devel/scanprov +Perl_pp_sservent # Z added by devel/scanprov +Perl_pp_ssockopt # Z added by devel/scanprov +Perl_pp_symlink # Z added by devel/scanprov +Perl_pp_transr # Z added by devel/scanprov +Perl_pp_unlink # Z added by devel/scanprov +Perl_pp_utime # Z added by devel/scanprov +Perl_pp_values # Z added by devel/scanprov PERL_PV_ESCAPE_NONASCII # E +report_wrongway_fh # F added by devel/scanprov +RXf_PMf_CHARSET # Z added by devel/scanprov +tied_method # F added by devel/scanprov +TIED_METHOD_ARGUMENTS_ON_STACK # Z added by devel/scanprov +TIED_METHOD_MORTALIZE_NOT_NEEDED # Z added by devel/scanprov +TIED_METHOD_SAY # Z added by devel/scanprov +UNICODE_DISALLOW_ILLEGAL_INTERCHANGE # Z added by devel/scanprov +UNICODE_DISALLOW_NONCHAR # Z added by devel/scanprov +UNICODE_DISALLOW_SUPER # Z added by devel/scanprov +UNICODE_DISALLOW_SURROGATE # Z added by devel/scanprov +UNICODE_IS_NONCHAR # Z added by devel/scanprov +UNICODE_IS_SUPER # Z added by devel/scanprov +UNICODE_WARN_ILLEGAL_INTERCHANGE # Z added by devel/scanprov +UNICODE_WARN_NONCHAR # Z added by devel/scanprov +UNICODE_WARN_SUPER # Z added by devel/scanprov +UNICODE_WARN_SURROGATE # Z added by devel/scanprov +UTF8_DISALLOW_FE_FF # Z added by devel/scanprov UTF8_DISALLOW_ILLEGAL_INTERCHANGE # E UTF8_DISALLOW_NONCHAR # E UTF8_DISALLOW_SUPER # E UTF8_DISALLOW_SURROGATE # E +UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC # Z added by devel/scanprov +UTF8_MAX_FOLD_CHAR_EXPAND # Z added by devel/scanprov +UTF8_WARN_FE_FF # Z added by devel/scanprov UTF8_WARN_ILLEGAL_INTERCHANGE # E UTF8_WARN_NONCHAR # E UTF8_WARN_SUPER # E UTF8_WARN_SURROGATE # E -check_utf8_print # F added by devel/scanprov -curse # F added by devel/scanprov -report_wrongway_fh # F added by devel/scanprov -tied_method # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5013010 perl-5.34.0/dist/Devel-PPPort/parts/base/5013010 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5013010 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5013010 2020-10-04 22:17:12.000000000 +0000 @@ -1,13 +1,29 @@ 5.013010 -WARN_NONCHAR # E -WARN_NON_UNICODE # E -WARN_SURROGATE # E _append_range_to_invlist # F added by devel/scanprov +ASCII_MORE_RESTRICT_PAT_MODS # Z added by devel/scanprov +CHARSET_PAT_MODS # Z added by devel/scanprov foldEQ_utf8_flags # F added by devel/scanprov +FOLDEQ_UTF8_NOMIX_ASCII # Z added by devel/scanprov +GvCV_set # Z added by devel/scanprov +GvGP_set # Z added by devel/scanprov invlist_array # F added by devel/scanprov invlist_extend # F added by devel/scanprov invlist_max # F added by devel/scanprov invlist_set_len # F added by devel/scanprov invlist_trim # F added by devel/scanprov +MAX_FEATURE_LEN # Z added by devel/scanprov _new_invlist # F added by devel/scanprov +PERL_COP_SEQMAX # Z added by devel/scanprov +PERL_PADSEQ_INTRO # Z added by devel/scanprov +PL_utf8_xidcont # Z added by devel/scanprov +PL_utf8_xidstart # Z added by devel/scanprov +REFFA # Z added by devel/scanprov regcurly # F added by devel/scanprov +SUBST_TAINT_BOOLRET # Z added by devel/scanprov +SUBST_TAINT_PAT # Z added by devel/scanprov +SUBST_TAINT_REPL # Z added by devel/scanprov +SUBST_TAINT_RETAINT # Z added by devel/scanprov +SUBST_TAINT_STR # Z added by devel/scanprov +WARN_NONCHAR # E +WARN_NON_UNICODE # E +WARN_SURROGATE # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5013011 perl-5.34.0/dist/Devel-PPPort/parts/base/5013011 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5013011 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5013011 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,7 @@ 5.013011 add_cp_to_invlist # F added by devel/scanprov +ANYOF_CLASS_SETALL # Z added by devel/scanprov +GREEK_CAPITAL_LETTER_MU # Z added by devel/scanprov +LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE # Z added by devel/scanprov +LATIN_CAPITAL_LETTER_Y_WITH_DIAERESIS # Z added by devel/scanprov +LATIN_SMALL_LETTER_A_WITH_RING_ABOVE # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5014000 perl-5.34.0/dist/Devel-PPPort/parts/base/5014000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5014000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5014000 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,6 @@ 5.014000 +LATIN_CAPITAL_LETTER_SHARP_S # Z added by devel/scanprov +LEX_START_SAME_FILTER # Z added by devel/scanprov +to_uni_fold # Z added by devel/scanprov _to_uni_fold_flags # F added by devel/scanprov _to_utf8_fold_flags # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5015000 perl-5.34.0/dist/Devel-PPPort/parts/base/5015000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5015000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5015000 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,41 @@ 5.015000 hv_free_ent_ret # F added by devel/scanprov Perl_hfree_next_entry # F added by devel/scanprov +PERL_MAGIC_READONLY_ACCEPTABLE # Z added by devel/scanprov +PERL_MAGIC_TYPE_IS_VALUE_MAGIC # Z added by devel/scanprov +PERL_MAGIC_TYPE_READONLY_ACCEPTABLE # Z added by devel/scanprov +PERL_MAGIC_VALUE_MAGIC # Z added by devel/scanprov +PERL_MAGIC_VTABLE_MASK # Z added by devel/scanprov +Perl_pp_aelemfast_lex # Z added by devel/scanprov +PL_vtbl_arylen # Z added by devel/scanprov +PL_vtbl_arylen_p # Z added by devel/scanprov +PL_vtbl_backref # Z added by devel/scanprov +PL_vtbl_bm # Z added by devel/scanprov +PL_vtbl_collxfrm # Z added by devel/scanprov +PL_vtbl_dbline # Z added by devel/scanprov +PL_vtbl_defelem # Z added by devel/scanprov +PL_vtbl_env # Z added by devel/scanprov +PL_vtbl_envelem # Z added by devel/scanprov +PL_vtbl_fm # Z added by devel/scanprov +PL_vtbl_hints # Z added by devel/scanprov +PL_vtbl_hintselem # Z added by devel/scanprov +PL_vtbl_isa # Z added by devel/scanprov +PL_vtbl_isaelem # Z added by devel/scanprov +PL_vtbl_mglob # Z added by devel/scanprov +PL_vtbl_nkeys # Z added by devel/scanprov +PL_vtbl_ovrld # Z added by devel/scanprov +PL_vtbl_pack # Z added by devel/scanprov +PL_vtbl_packelem # Z added by devel/scanprov +PL_vtbl_pos # Z added by devel/scanprov +PL_vtbl_regdata # Z added by devel/scanprov +PL_vtbl_regdatum # Z added by devel/scanprov +PL_vtbl_regexp # Z added by devel/scanprov +PL_vtbl_sigelem # Z added by devel/scanprov +PL_vtbl_substr # Z added by devel/scanprov +PL_vtbl_sv # Z added by devel/scanprov +PL_vtbl_taint # Z added by devel/scanprov +PL_vtbl_utf8 # Z added by devel/scanprov +PL_vtbl_uvar # Z added by devel/scanprov +PL_vtbl_vec # Z added by devel/scanprov +want_vtbl_bm # Z added by devel/scanprov +want_vtbl_fm # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5015001 perl-5.34.0/dist/Devel-PPPort/parts/base/5015001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5015001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5015001 2020-10-04 22:17:12.000000000 +0000 @@ -1,14 +1,6 @@ 5.015001 cop_fetch_label # U cop_store_label # U -pad_add_name_pv # U -pad_add_name_pvn # U -pad_add_name_pvs # U -pad_add_name_sv # U -pad_findmy_pv # U -pad_findmy_pvn # U -pad_findmy_pvs # U -pad_findmy_sv # U do_ncmp # F added by devel/scanprov get_invlist_iter_addr # F added by devel/scanprov _invlist_array_init # F added by devel/scanprov @@ -19,6 +11,20 @@ invlist_iternext # F added by devel/scanprov _invlist_subtract # F added by devel/scanprov _invlist_union # F added by devel/scanprov +OP_LVALUE_NO_CROAK # Z added by devel/scanprov +OPpENTERSUB_LVAL_MASK # Z added by devel/scanprov +OPpFT_STACKING # Z added by devel/scanprov +pad_add_name_pv # U +pad_add_name_pvn # U +pad_add_name_pvs # U +pad_add_name_sv # U pad_alloc_name # F added by devel/scanprov +pad_findmy_pv # U +pad_findmy_pvn # U +pad_findmy_pvs # U +pad_findmy_sv # U Perl_op_lvalue_flags # F added by devel/scanprov +PERL_SCAN_SILENT_NON_PORTABLE # Z added by devel/scanprov +PERL_SET_PHASE # Z added by devel/scanprov Perl_was_lvalue_sub # F added by devel/scanprov +SVt_MASK # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5015002 perl-5.34.0/dist/Devel-PPPort/parts/base/5015002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5015002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5015002 2020-10-04 22:17:12.000000000 +0000 @@ -1,7 +1,14 @@ 5.015002 -XS_EXTERNAL # M added by devel/scanprov -XS_INTERNAL # M added by devel/scanprov core_prototype # F added by devel/scanprov +CvDYNFILE # Z added by devel/scanprov +CvDYNFILE_off # Z added by devel/scanprov +CvDYNFILE_on # Z added by devel/scanprov +CVf_DYNFILE # Z added by devel/scanprov finalize_op # F added by devel/scanprov finalize_optree # F added by devel/scanprov +OPpOFFBYONE # Z added by devel/scanprov Perl_ck_entersub_args_core # F added by devel/scanprov +ST_INO_SIGN # K added by devel/scanprov +ST_INO_SIZE # K added by devel/scanprov +XS_EXTERNAL # M added by devel/scanprov +XS_INTERNAL # M added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5015003 perl-5.34.0/dist/Devel-PPPort/parts/base/5015003 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5015003 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5015003 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,19 @@ 5.015003 -GV_ADDMG # E coresub_op # F added by devel/scanprov +GV_ADDMG # E +gv_fetchsv_nomg # U +GV_NO_SVGMAGIC # E inplace_aassign # F added by devel/scanprov +I_STDBOOL # K added by devel/scanprov +MAYBE_DEREF_GV # Z added by devel/scanprov +MAYBE_DEREF_GV_flags # Z added by devel/scanprov +MAYBE_DEREF_GV_nomg # Z added by devel/scanprov op_integerize # F added by devel/scanprov +OP_IS_DIRHOP # Z added by devel/scanprov +OP_IS_NUMCOMPARE # Z added by devel/scanprov +OPpCOREARGS_DEREF1 # Z added by devel/scanprov +OPpCOREARGS_DEREF2 # Z added by devel/scanprov +OPpCOREARGS_PUSHMARK # Z added by devel/scanprov +OPpCOREARGS_SCALARMOD # Z added by devel/scanprov op_std_init # F added by devel/scanprov +QUAD_IS___INT64 # K added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5015004 perl-5.34.0/dist/Devel-PPPort/parts/base/5015004 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5015004 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5015004 2020-10-04 22:17:12.000000000 +0000 @@ -1,7 +1,21 @@ 5.015004 +CvAUTOLOAD # Z added by devel/scanprov +CvAUTOLOAD_off # Z added by devel/scanprov +CvAUTOLOAD_on # Z added by devel/scanprov +cv_ckproto_len_flags # F added by devel/scanprov +CVf_AUTOLOAD # Z added by devel/scanprov +CvPROTO # Z added by devel/scanprov +CvPROTOLEN # Z added by devel/scanprov +FOLDEQ_S1_ALREADY_FOLDED # Z added by devel/scanprov +FOLDEQ_S2_ALREADY_FOLDED # Z added by devel/scanprov +GV_AUTOLOAD_ISMETHOD # Z added by devel/scanprov gv_autoload_pv # U gv_autoload_pvn # U gv_autoload_sv # U +GvENAME_HEK # Z added by devel/scanprov +GvENAMELEN # Z added by devel/scanprov +GvENAMEUTF8 # Z added by devel/scanprov +gv_fetchmethod_flags # Z added by devel/scanprov gv_fetchmethod_pv_flags # U gv_fetchmethod_pvn_flags # U gv_fetchmethod_sv_flags # U @@ -14,12 +28,18 @@ gv_init_pv # U gv_init_pvn # U gv_init_sv # U +gv_init_svtype # F added by devel/scanprov +GvNAMEUTF8 # Z added by devel/scanprov +HEKf # Z added by devel/scanprov +HEKf256 # Z added by devel/scanprov +HEKfARG # Z added by devel/scanprov HvENAMELEN # U HvENAMEUTF8 # U HvNAMELEN # U HvNAMEUTF8 # U isASCII_L1 # U newGVgen_flags # U +PL_utf8_perl_idstart # Z added by devel/scanprov sv_derived_from_pv # U sv_derived_from_pvn # U sv_derived_from_sv # U @@ -27,10 +47,8 @@ sv_does_pvn # U sv_does_sv # U sv_ref # U +sv_sethek # F added by devel/scanprov whichsig_pv # U whichsig_pvn # U whichsig_sv # U WIDEST_UTYPE # E -cv_ckproto_len_flags # F added by devel/scanprov -gv_init_svtype # F added by devel/scanprov -sv_sethek # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5015005 perl-5.34.0/dist/Devel-PPPort/parts/base/5015005 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5015005 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5015005 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,13 @@ 5.015005 +KEY_evalbytes # Z added by devel/scanprov +LEX_EVALBYTES # Z added by devel/scanprov +LEX_IGNORE_UTF8_HINTS # Z added by devel/scanprov +LEX_START_COPIED # Z added by devel/scanprov +LEX_START_FLAGS # Z added by devel/scanprov +OPpEVAL_BYTES # Z added by devel/scanprov +OPpEVAL_COPHH # Z added by devel/scanprov +OPpEVAL_UNICODE # Z added by devel/scanprov +PL_globhook # Z added by devel/scanprov _to_fold_latin1 # F added by devel/scanprov to_lower_latin1 # F added by devel/scanprov _to_upper_title_latin1 # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5015006 perl-5.34.0/dist/Devel-PPPort/parts/base/5015006 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5015006 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5015006 2020-10-04 22:17:12.000000000 +0000 @@ -1,9 +1,17 @@ 5.015006 -newCONSTSUB_flags # A check_locale_boundary_crossing # F added by devel/scanprov +FOLD_FLAGS_FULL # Z added by devel/scanprov +FOLD_FLAGS_LOCALE # Z added by devel/scanprov +I8_TO_NATIVE # Z added by devel/scanprov +KEY___SUB # Z added by devel/scanprov +LvFLAGS # Z added by devel/scanprov mayberelocate # F added by devel/scanprov minus_v # F added by devel/scanprov +NATIVE_TO_I8 # Z added by devel/scanprov +newCONSTSUB_flags # A newXS_len_flags # F added by devel/scanprov +OPpALLOW_FAKE # Z added by devel/scanprov +OPpSUBSTR_REPL_FIRST # Z added by devel/scanprov report_redefined_cv # F added by devel/scanprov _to_utf8_lower_flags # F added by devel/scanprov _to_utf8_title_flags # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5015007 perl-5.34.0/dist/Devel-PPPort/parts/base/5015007 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5015007 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5015007 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,19 @@ 5.015007 +CURRENT_FEATURE_BUNDLE # Z added by devel/scanprov +CURRENT_HINTS # Z added by devel/scanprov +FEATURE_BUNDLE_510 # Z added by devel/scanprov +FEATURE_BUNDLE_511 # Z added by devel/scanprov +FEATURE_BUNDLE_515 # Z added by devel/scanprov +FEATURE_BUNDLE_CUSTOM # Z added by devel/scanprov +FEATURE_BUNDLE_DEFAULT # Z added by devel/scanprov +FEATURE_EVALBYTES_IS_ENABLED # Z added by devel/scanprov +FEATURE_SAY_IS_ENABLED # Z added by devel/scanprov +FEATURE_STATE_IS_ENABLED # Z added by devel/scanprov +FEATURE___SUB___IS_ENABLED # Z added by devel/scanprov +FEATURE_SWITCH_IS_ENABLED # Z added by devel/scanprov +FEATURE_UNICODE_IS_ENABLED # Z added by devel/scanprov +FEATURE_UNIEVAL_IS_ENABLED # Z added by devel/scanprov +HAS_ISBLANK # K added by devel/scanprov +HINT_FEATURE_MASK # Z added by devel/scanprov +HINT_FEATURE_SHIFT # Z added by devel/scanprov +REFCOUNTED_HE_EXISTS # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5015008 perl-5.34.0/dist/Devel-PPPort/parts/base/5015008 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5015008 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5015008 2020-10-04 22:17:12.000000000 +0000 @@ -1,8 +1,26 @@ 5.015008 -isASCII_LC # U -is_utf8_char_buf # U -wrap_op_checker # U amagic_is_enabled # F added by devel/scanprov +FEATURE_FC_IS_ENABLED # Z added by devel/scanprov +HAS_IPV6_MREQ # K added by devel/scanprov +HAS_SOCKADDR_IN6 # K added by devel/scanprov +IN_SOME_LOCALE_FORM # Z added by devel/scanprov +IN_SOME_LOCALE_FORM_COMPILETIME # Z added by devel/scanprov +IN_SOME_LOCALE_FORM_RUNTIME # Z added by devel/scanprov _invlist_intersection_maybe_complement_2nd # F added by devel/scanprov _invlist_union_maybe_complement_2nd # F added by devel/scanprov +isASCII_LC # U +is_utf8_char_buf # U +KEY_fc # Z added by devel/scanprov _new_invlist_C_array # F added by devel/scanprov +OP_CHECK_MUTEX_INIT # Z added by devel/scanprov +OP_CHECK_MUTEX_LOCK # Z added by devel/scanprov +OP_CHECK_MUTEX_TERM # Z added by devel/scanprov +OP_CHECK_MUTEX_UNLOCK # Z added by devel/scanprov +OPpFT_AFTER_t # Z added by devel/scanprov +PL_AboveLatin1 # Z added by devel/scanprov +PL_delaymagic_egid # Z added by devel/scanprov +PL_delaymagic_euid # Z added by devel/scanprov +PL_delaymagic_gid # Z added by devel/scanprov +PL_delaymagic_uid # Z added by devel/scanprov +PL_Latin1 # Z added by devel/scanprov +wrap_op_checker # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5015009 perl-5.34.0/dist/Devel-PPPort/parts/base/5015009 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5015009 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5015009 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,5 @@ 5.015009 +LEX_DONT_CLOSE_RSFP # Z added by devel/scanprov utf8_to_uvchr_buf # U utf8_to_uvuni_buf # F added by devel/scanprov valid_utf8_to_uvchr # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5016000 perl-5.34.0/dist/Devel-PPPort/parts/base/5016000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5016000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5016000 2020-10-04 22:17:12.000000000 +0000 @@ -1,8 +1,14 @@ 5.016000 -CopLABEL_len # U -CopLABEL_len_flags # U _add_range_to_invlist # F added by devel/scanprov bad_type_pv # F added by devel/scanprov +CopLABEL_len # U +CopLABEL_len_flags # U +CxLABEL_len # Z added by devel/scanprov +CxLABEL_len_flags # Z added by devel/scanprov +HINT_EXPLICIT_STRICT_REFS # Z added by devel/scanprov +HINT_EXPLICIT_STRICT_SUBS # Z added by devel/scanprov +HINT_EXPLICIT_STRICT_VARS # Z added by devel/scanprov +OPpPV_IS_UTF8 # Z added by devel/scanprov too_few_arguments_pv # F added by devel/scanprov too_many_arguments_pv # F added by devel/scanprov yyerror_pv # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5017000 perl-5.34.0/dist/Devel-PPPort/parts/base/5017000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5017000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5017000 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,8 @@ 5.017000 +FOLD_FLAGS_NOMIX_ASCII # Z added by devel/scanprov +HvAMAGIC # Z added by devel/scanprov +HvAMAGIC_off # Z added by devel/scanprov +HvAMAGIC_on # Z added by devel/scanprov magic_copycallchecker # F added by devel/scanprov +PL_vtbl_checkcall # Z added by devel/scanprov +UTF8_IS_REPLACEMENT # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5017001 perl-5.34.0/dist/Devel-PPPort/parts/base/5017001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5017001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5017001 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,14 @@ 5.017001 alloccopstash # U +CopSTASHPV_set # A current_re_engine # F added by devel/scanprov newSTUB # F added by devel/scanprov +PL_stashpad # Z added by devel/scanprov +PL_stashpadix # Z added by devel/scanprov +PL_stashpadmax # Z added by devel/scanprov +PMf_CODELIST_PRIVATE # Z added by devel/scanprov +PMf_HAS_CV # Z added by devel/scanprov +PMf_IS_QR # Z added by devel/scanprov +PMf_USE_RE_EVAL # Z added by devel/scanprov +PREGf_USE_RE_EVAL # Z added by devel/scanprov re_op_compile # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5017002 perl-5.34.0/dist/Devel-PPPort/parts/base/5017002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5017002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5017002 2020-10-04 22:17:12.000000000 +0000 @@ -1,13 +1,56 @@ 5.017002 -sv_copypv_flags # U -sv_copypv_nomg # U -sv_vcatpvfn_flags # U +AMGf_want_list # Z added by devel/scanprov +CVf_HASEVAL # Z added by devel/scanprov cv_forget_slab # F added by devel/scanprov +CVf_SLABBED # Z added by devel/scanprov +CvHASEVAL # Z added by devel/scanprov +CvHASEVAL_off # Z added by devel/scanprov +CvHASEVAL_on # Z added by devel/scanprov +CvSLABBED # Z added by devel/scanprov +CvSLABBED_off # Z added by devel/scanprov +CvSLABBED_on # Z added by devel/scanprov +DEBUG_S # Z added by devel/scanprov +DEBUG_S_FLAG # Z added by devel/scanprov +DEBUG_S_TEST # Z added by devel/scanprov +FIND_RUNCV_level_eq # Z added by devel/scanprov find_runcv_where # F added by devel/scanprov grok_bslash_x # F added by devel/scanprov +HAS_IP_MREQ # K added by devel/scanprov invlist_highest # F added by devel/scanprov magic_cleararylen_p # F added by devel/scanprov +OP_FREED # Z added by devel/scanprov +OpSLAB # Z added by devel/scanprov opslab_force_free # F added by devel/scanprov opslab_free # F added by devel/scanprov opslab_free_nopad # F added by devel/scanprov +OpslabREFCNT_dec # Z added by devel/scanprov +OpslabREFCNT_dec_padok # Z added by devel/scanprov +OpSLOT # Z added by devel/scanprov +OPSLOT_HEADER # Z added by devel/scanprov +OPSLOT_HEADER_P # Z added by devel/scanprov +PERL_CALLCONV_NO_RET # Z added by devel/scanprov +PERL_RELOCATABLE_INC # K added by devel/scanprov Slab_to_ro # F added by devel/scanprov +sv_2bool_nomg # Z added by devel/scanprov +sv_catpvn_nomg_utf8_upgrade # Z added by devel/scanprov +sv_copypv_flags # U +sv_copypv_nomg # U +SvIOK_nog # Z added by devel/scanprov +SvIOK_nogthink # Z added by devel/scanprov +SvNIOK_nog # Z added by devel/scanprov +SvNIOK_nogthink # Z added by devel/scanprov +SvNOK_nog # Z added by devel/scanprov +SvNOK_nogthink # Z added by devel/scanprov +SvPOK_byte_nog # Z added by devel/scanprov +SvPOK_byte_nogthink # Z added by devel/scanprov +SvPOK_nog # Z added by devel/scanprov +SvPOK_nogthink # Z added by devel/scanprov +SvPOK_utf8_nog # Z added by devel/scanprov +SvPOK_utf8_nogthink # Z added by devel/scanprov +SvPVXtrue # Z added by devel/scanprov +SvTRUE_common # Z added by devel/scanprov +SvTRUEx_nomg # Z added by devel/scanprov +SvUOK_nog # Z added by devel/scanprov +SvUOK_nogthink # Z added by devel/scanprov +sv_vcatpvfn_flags # U +tryAMAGICunTARGETlist # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5017003 perl-5.34.0/dist/Devel-PPPort/parts/base/5017003 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5017003 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5017003 2020-10-04 22:17:12.000000000 +0000 @@ -1,7 +1,22 @@ 5.017003 +ANGSTROM_SIGN # Z added by devel/scanprov compute_EXACTish # F added by devel/scanprov grok_bslash_N # F added by devel/scanprov init_constants # F added by devel/scanprov _invlist_contains_cp # F added by devel/scanprov _invlist_search # F added by devel/scanprov +KELVIN_SIGN # Z added by devel/scanprov +LATIN_SMALL_LETTER_LONG_S # Z added by devel/scanprov +NPOSIXA # Z added by devel/scanprov +NPOSIXD # Z added by devel/scanprov +NPOSIXL # Z added by devel/scanprov +NPOSIXU # Z added by devel/scanprov op_unscope # F added by devel/scanprov +padadd_STALEOK # Z added by devel/scanprov +POSIXA # Z added by devel/scanprov +POSIXD # Z added by devel/scanprov +POSIXL # Z added by devel/scanprov +POSIXU # Z added by devel/scanprov +SvPOK_byte_pure_nogthink # Z added by devel/scanprov +SvPOK_pure_nogthink # Z added by devel/scanprov +SvPOK_utf8_pure_nogthink # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5017004 perl-5.34.0/dist/Devel-PPPort/parts/base/5017004 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5017004 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5017004 2020-10-04 22:17:12.000000000 +0000 @@ -1,30 +1,64 @@ 5.017004 +av_extend_guts # F added by devel/scanprov +COMBINING_GRAVE_ACCENT_UTF8 # Z added by devel/scanprov +cv_clone_into # F added by devel/scanprov +CVf_NAMED # Z added by devel/scanprov +CvNAMED # Z added by devel/scanprov +CvNAMED_off # Z added by devel/scanprov +CvNAMED_on # Z added by devel/scanprov +CvNAME_HEK_set # Z added by devel/scanprov +FIND_RUNCV_padid_eq # Z added by devel/scanprov +force_ident_maybe_lex # F added by devel/scanprov +get_invlist_previous_index_addr # F added by devel/scanprov GV_SUPER # E +HAS_IP_MREQ_SOURCE # K added by devel/scanprov +HYPHEN_UTF8 # Z added by devel/scanprov +_invlist_len # F added by devel/scanprov +invlist_previous_index # F added by devel/scanprov +invlist_set_previous_index # F added by devel/scanprov +is_QUOTEMETA_high # Z added by devel/scanprov +LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE_NATIVE # Z added by devel/scanprov +LATIN_SMALL_LETTER_A_WITH_RING_ABOVE_NATIVE # Z added by devel/scanprov +LATIN_SMALL_LETTER_SHARP_S_NATIVE # Z added by devel/scanprov +LATIN_SMALL_LETTER_Y_WITH_DIAERESIS_NATIVE # Z added by devel/scanprov +MICRO_SIGN_NATIVE # Z added by devel/scanprov newMYSUB # E (Perl_newMYSUB) newSVpadname # E +OPpMAYBE_TRUEBOOL # Z added by devel/scanprov +OPpTRUEBOOL # Z added by devel/scanprov PadARRAY # U +PAD_COMPNAME # Z added by devel/scanprov PadlistARRAY # U PadlistMAX # U PadlistNAMES # E PadlistNAMESARRAY # E PadlistNAMESMAX # U PadlistREFCNT # U +padlist_store # F added by devel/scanprov PadMAX # U +PadnameIsOUR # Z added by devel/scanprov +PadnameIsSTATE # Z added by devel/scanprov PadnameLEN # E PadnamelistARRAY # E PadnamelistMAX # E +PadnameOURSTASH # Z added by devel/scanprov +PadnameOUTER # Z added by devel/scanprov PadnamePV # E PadnameSV # E +PadnameTYPE # Z added by devel/scanprov PadnameUTF8 # E +pending_ident # F added by devel/scanprov PL_comppad_name # E +REXEC_COPY_SKIP_POST # Z added by devel/scanprov +REXEC_COPY_SKIP_PRE # Z added by devel/scanprov +RX_BUFF_IDX_CARET_FULLMATCH # Z added by devel/scanprov +RX_BUFF_IDX_CARET_POSTMATCH # Z added by devel/scanprov +RX_BUFF_IDX_CARET_PREMATCH # Z added by devel/scanprov +RX_SUBCOFFSET # Z added by devel/scanprov +RX_SUBOFFSET # Z added by devel/scanprov +SAWAMPERSAND_LEFT # Z added by devel/scanprov +SAWAMPERSAND_MIDDLE # Z added by devel/scanprov +SAWAMPERSAND_RIGHT # Z added by devel/scanprov +sv_len_utf8_nomg # F added by devel/scanprov +UTF8_IS_ABOVE_LATIN1 # Z added by devel/scanprov WARN_EXPERIMENTAL # E -sv_len_utf8_nomg # M added by devel/scanprov -av_extend_guts # F added by devel/scanprov -cv_clone_into # F added by devel/scanprov -force_ident_maybe_lex # F added by devel/scanprov -get_invlist_previous_index_addr # F added by devel/scanprov -_invlist_len # F added by devel/scanprov -invlist_previous_index # F added by devel/scanprov -invlist_set_previous_index # F added by devel/scanprov -padlist_store # F added by devel/scanprov -pending_ident # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5017005 perl-5.34.0/dist/Devel-PPPort/parts/base/5017005 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5017005 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5017005 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,11 @@ 5.017005 +ANYOF_NWORDCHAR # Z added by devel/scanprov +ANYOF_WORDCHAR # Z added by devel/scanprov +PERL_STATIC_INLINE_NO_RET # Z added by devel/scanprov +PERL_STATIC_NO_RET # Z added by devel/scanprov +PL_HasMultiCharFold # Z added by devel/scanprov +sv_catpvn_nomg_maybeutf8 # Z added by devel/scanprov sv_mortalcopy_flags # U -WARN_EXPERIMENTAL__LEXICAL_SUBS # E +sv_or_pv_len_utf8 # Z added by devel/scanprov sv_resetpvn # F added by devel/scanprov +WARN_EXPERIMENTAL__LEXICAL_SUBS # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5017006 perl-5.34.0/dist/Devel-PPPort/parts/base/5017006 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5017006 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5017006 2020-10-04 22:17:12.000000000 +0000 @@ -1,7 +1,42 @@ 5.017006 -croak_memory_wrap # U -READ_XDIGIT # U +ANYOF_UNIPROP # Z added by devel/scanprov +aTHXa # Z added by devel/scanprov croak_no_mem # F added by devel/scanprov get_and_check_backslash_N_name # F added by devel/scanprov +is_HORIZWS_cp_high # Z added by devel/scanprov +is_HORIZWS_high # Z added by devel/scanprov +isREGEXP # Z added by devel/scanprov +is_VERTWS_cp_high # Z added by devel/scanprov +is_VERTWS_high # Z added by devel/scanprov +isVERTWS_uni # Z added by devel/scanprov +isVERTWS_utf8 # Z added by devel/scanprov +isWORDCHAR_uni # Z added by devel/scanprov +is_XDIGIT_cp_high # Z added by devel/scanprov +is_XDIGIT_high # Z added by devel/scanprov +is_XPERLSPACE_cp_high # Z added by devel/scanprov +is_XPERLSPACE_high # Z added by devel/scanprov +NO_TAINT_SUPPORT # Z added by devel/scanprov +OPpPADRANGE_COUNTMASK # Z added by devel/scanprov +OPpPADRANGE_COUNTSHIFT # Z added by devel/scanprov parser_free_nexttoke_ops # F added by devel/scanprov +PERL_HASH_FUNC # Z added by devel/scanprov +PERL_HASH_SEED_BYTES # Z added by devel/scanprov +PL_utf8_charname_begin # Z added by devel/scanprov +PL_utf8_charname_continue # Z added by devel/scanprov +READ_XDIGIT # U +ReANY # Z added by devel/scanprov +RX_ISTAINTED # Z added by devel/scanprov +RX_TAINT_on # Z added by devel/scanprov +SAVEt_CLEARPADRANGE # Z added by devel/scanprov +SIPROUND # Z added by devel/scanprov +SVf_IsCOW # Z added by devel/scanprov +TAINT_get # Z added by devel/scanprov +TAINTING_get # Z added by devel/scanprov +TAINTING_set # Z added by devel/scanprov +TAINT_set # Z added by devel/scanprov +TAINT_WARN_get # Z added by devel/scanprov +TAINT_WARN_set # Z added by devel/scanprov +U8TO64_LE # Z added by devel/scanprov +UTF8_IS_NEXT_CHAR_DOWNGRADEABLE # Z added by devel/scanprov win32_croak_not_implemented # F added by devel/scanprov +xpv_len # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5017007 perl-5.34.0/dist/Devel-PPPort/parts/base/5017007 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5017007 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5017007 2020-10-04 22:17:12.000000000 +0000 @@ -1,13 +1,38 @@ 5.017007 +ANYOF_CLASS_OR # Z added by devel/scanprov +CowREFCNT # Z added by devel/scanprov +dSS_ADD # Z added by devel/scanprov +forget_pmop # F added by devel/scanprov +gv_method_changed # Z added by devel/scanprov isALNUMC_LC_uvchr # U +isALNUMC_uni # Z added by devel/scanprov +isALNUMC_utf8 # Z added by devel/scanprov +isASCII_LC_utf8 # Z added by devel/scanprov isASCII_LC_uvchr # U isBLANK_LC_uvchr # U +isFOO_lc # F added by devel/scanprov isPSXSPC_LC_uvchr # U +_is_uni_perl_idstart # F added by devel/scanprov isWORDCHAR_LC # U +isWORDCHAR_LC_utf8 # Z added by devel/scanprov isWORDCHAR_LC_uvchr # U isXDIGIT_LC # U +isXDIGIT_LC_utf8 # Z added by devel/scanprov isXDIGIT_LC_uvchr # U +PERL_ANY_COW # Z added by devel/scanprov +SAVEt_GVSLOT # Z added by devel/scanprov +SS_ADD_BOOL # Z added by devel/scanprov +SS_ADD_DPTR # Z added by devel/scanprov +SS_ADD_DXPTR # Z added by devel/scanprov +SS_ADD_END # Z added by devel/scanprov +SS_ADD_INT # Z added by devel/scanprov +SS_ADD_IV # Z added by devel/scanprov +SS_ADD_LONG # Z added by devel/scanprov +SS_ADD_PTR # Z added by devel/scanprov +SS_ADD_UV # Z added by devel/scanprov +SS_MAXPUSH # Z added by devel/scanprov +SvCANCOW # Z added by devel/scanprov +SV_COW_REFCNT_MAX # Z added by devel/scanprov SvREFCNT_dec_NN # U -forget_pmop # F added by devel/scanprov -isFOO_lc # F added by devel/scanprov -_is_uni_perl_idstart # F added by devel/scanprov +SvTRUE_NN # U +SvTRUE_nomg_NN # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5017008 perl-5.34.0/dist/Devel-PPPort/parts/base/5017008 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5017008 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5017008 2020-10-04 22:17:12.000000000 +0000 @@ -1,18 +1,33 @@ 5.017008 +ANYOF_ALPHANUMERIC # Z added by devel/scanprov +ANYOF_CASED # Z added by devel/scanprov +ANYOF_NALPHANUMERIC # Z added by devel/scanprov +ANYOF_NCASED # Z added by devel/scanprov +croak_popstack # F added by devel/scanprov +invlist_is_iterating # F added by devel/scanprov +invlist_iterfinish # F added by devel/scanprov isALPHANUMERIC # U isALPHANUMERIC_A # U isALPHANUMERIC_L1 # U isALPHANUMERIC_LC # U +isALPHANUMERIC_LC_utf8 # Z added by devel/scanprov isALPHANUMERIC_LC_uvchr # U +isALPHANUMERIC_uni # Z added by devel/scanprov +isFOO_utf8_lc # F added by devel/scanprov isIDCONT # U isIDCONT_A # U isIDCONT_L1 # U isIDCONT_LC # U +isIDCONT_LC_utf8 # Z added by devel/scanprov isIDCONT_LC_uvchr # U -WARN_EXPERIMENTAL__REGEX_SETS # E -croak_popstack # F added by devel/scanprov -invlist_is_iterating # F added by devel/scanprov -invlist_iterfinish # F added by devel/scanprov -isFOO_utf8_lc # F added by devel/scanprov +isIDCONT_uni # Z added by devel/scanprov +is_PATWS_cp # Z added by devel/scanprov +is_PATWS_safe # Z added by devel/scanprov _is_uni_FOO # F added by devel/scanprov _is_uni_perl_idcont # F added by devel/scanprov +PL_utf8_perl_idcont # Z added by devel/scanprov +PL_XPosix_ptrs # Z added by devel/scanprov +POSIX_CC_COUNT # Z added by devel/scanprov +RXp_MATCH_TAINTED_on # Z added by devel/scanprov +SvREFCNT_IMMORTAL # Z added by devel/scanprov +WARN_EXPERIMENTAL__REGEX_SETS # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5017009 perl-5.34.0/dist/Devel-PPPort/parts/base/5017009 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5017009 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5017009 2020-10-04 22:17:12.000000000 +0000 @@ -3,3 +3,4 @@ av_top_index # U handle_regex_sets # F added by devel/scanprov parse_lparen_question_flags # F added by devel/scanprov +PERL_LAST_5_18_0_INTERP_MEMBER # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5017010 perl-5.34.0/dist/Devel-PPPort/parts/base/5017010 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5017010 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5017010 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,12 @@ 5.017010 +DEL_NATIVE # Z added by devel/scanprov parse_ident # F added by devel/scanprov +PERL_SAWAMPERSAND # Z added by devel/scanprov +PERL_SEEN_HV_FUNC_H # Z added by devel/scanprov +PL_hash_rand_bits # Z added by devel/scanprov ptr_hash # F added by devel/scanprov +ROTL32 # Z added by devel/scanprov +ROTL64 # Z added by devel/scanprov +ROTL_UV # Z added by devel/scanprov +U8TO16_LE # Z added by devel/scanprov +U8TO32_LE # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5017011 perl-5.34.0/dist/Devel-PPPort/parts/base/5017011 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5017011 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5017011 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,15 @@ 5.017011 +EVAL_RE_REPARSING # Z added by devel/scanprov +G_RE_REPARSING # Z added by devel/scanprov +HvLASTRAND_get # Z added by devel/scanprov +HvRAND_get # Z added by devel/scanprov +OPpEVAL_RE_REPARSING # Z added by devel/scanprov +PERL_HASH_DEFAULT_HvMAX # Z added by devel/scanprov +PMf_CHARSET # Z added by devel/scanprov +PMf_SPLIT # Z added by devel/scanprov +RX_COMPFLAGS # Z added by devel/scanprov +RXf_NO_INPLACE_SUBST # Z added by devel/scanprov +RXf_PMf_FLAGCOPYMASK # Z added by devel/scanprov +RXf_PMf_SPLIT # Z added by devel/scanprov +RXp_COMPFLAGS # Z added by devel/scanprov WARN_EXPERIMENTAL__SMARTMATCH # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5018000 perl-5.34.0/dist/Devel-PPPort/parts/base/5018000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5018000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5018000 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,11 @@ 5.018000 +CHANGE_MULTICALL_FLAGS # Z added by devel/scanprov +CXp_SUB_RE # Z added by devel/scanprov +CXp_SUB_RE_FAKE # Z added by devel/scanprov hv_rand_set # U +PERL_HASH_ITER_BUCKET # Z added by devel/scanprov +PERL_HASH_RANDOMIZE_KEYS # Z added by devel/scanprov +PL_HASH_RAND_BITS_ENABLED # Z added by devel/scanprov +PL_hash_rand_bits_enabled # Z added by devel/scanprov +PUSH_MULTICALL_FLAGS # Z added by devel/scanprov +USE_PERL_PERTURB_KEYS # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5019001 perl-5.34.0/dist/Devel-PPPort/parts/base/5019001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5019001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5019001 2020-10-04 22:17:12.000000000 +0000 @@ -1,7 +1,18 @@ 5.019001 +find_lexical_cv # F added by devel/scanprov +LATIN_CAPITAL_LETTER_SHARP_S_UTF8 # Z added by devel/scanprov +LATIN_SMALL_LETTER_LONG_S_UTF8 # Z added by devel/scanprov +path_is_searchable # F added by devel/scanprov +SvGID # Z added by devel/scanprov +sv_setgid # Z added by devel/scanprov +sv_setuid # Z added by devel/scanprov +SvUID # Z added by devel/scanprov toFOLD # U +toFOLD_A # Z added by devel/scanprov +toFOLD_LC # Z added by devel/scanprov +toLOWER_A # Z added by devel/scanprov toLOWER_L1 # U toTITLE # U +toTITLE_A # Z added by devel/scanprov +toUPPER_A # Z added by devel/scanprov UTF8f # E -find_lexical_cv # F added by devel/scanprov -path_is_searchable # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5019002 perl-5.34.0/dist/Devel-PPPort/parts/base/5019002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5019002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5019002 2020-10-04 22:17:12.000000000 +0000 @@ -1,12 +1,56 @@ 5.019002 -G_METHOD_NAMED # E -UTF8fARG # U bad_type_gv # F added by devel/scanprov defelem_target # F added by devel/scanprov get_invlist_offset_addr # F added by devel/scanprov +G_METHOD_NAMED # E +HAS_SKIP_LOCALE_INIT # Z added by devel/scanprov mg_find_mglob # F added by devel/scanprov +OPpSPLIT_IMPLIM # Z added by devel/scanprov +PL_op_exec_cnt # Z added by devel/scanprov +PL_sv_consts # Z added by devel/scanprov regdump_intflags # F added by devel/scanprov save_magic_flags # F added by devel/scanprov +SAVEt_READONLY_OFF # Z added by devel/scanprov skipspace_flags # F added by devel/scanprov +SV_CONST # Z added by devel/scanprov +SV_CONST_BINMODE # Z added by devel/scanprov +SV_CONST_CLEAR # Z added by devel/scanprov +SV_CONST_CLOSE # Z added by devel/scanprov +SV_CONST_DELETE # Z added by devel/scanprov +SV_CONST_DESTROY # Z added by devel/scanprov +SV_CONST_EOF # Z added by devel/scanprov +SV_CONST_EXISTS # Z added by devel/scanprov +SV_CONST_EXTEND # Z added by devel/scanprov +SV_CONST_FETCH # Z added by devel/scanprov +SV_CONST_FETCHSIZE # Z added by devel/scanprov +SV_CONST_FILENO # Z added by devel/scanprov +SV_CONST_FIRSTKEY # Z added by devel/scanprov +SV_CONST_GETC # Z added by devel/scanprov +SV_CONST_NEXTKEY # Z added by devel/scanprov +SV_CONST_OPEN # Z added by devel/scanprov +SV_CONST_POP # Z added by devel/scanprov +SV_CONST_PRINT # Z added by devel/scanprov +SV_CONST_PRINTF # Z added by devel/scanprov +SV_CONST_PUSH # Z added by devel/scanprov +SV_CONST_READ # Z added by devel/scanprov +SV_CONST_READLINE # Z added by devel/scanprov +SV_CONST_SCALAR # Z added by devel/scanprov +SV_CONSTS_COUNT # Z added by devel/scanprov +SV_CONST_SEEK # Z added by devel/scanprov +SV_CONST_SHIFT # Z added by devel/scanprov +SV_CONST_SPLICE # Z added by devel/scanprov +SV_CONST_STORE # Z added by devel/scanprov +SV_CONST_STORESIZE # Z added by devel/scanprov +SV_CONST_TELL # Z added by devel/scanprov +SV_CONST_TIEARRAY # Z added by devel/scanprov +SV_CONST_TIEHANDLE # Z added by devel/scanprov +SV_CONST_TIEHASH # Z added by devel/scanprov +SV_CONST_TIESCALAR # Z added by devel/scanprov +SV_CONST_UNSHIFT # Z added by devel/scanprov +SV_CONST_UNTIE # Z added by devel/scanprov +SV_CONST_WRITE # Z added by devel/scanprov sv_magicext_mglob # F added by devel/scanprov +USE_LOCALE_MESSAGES # Z added by devel/scanprov +USE_LOCALE_MONETARY # Z added by devel/scanprov +UTF8fARG # U validate_proto # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5019003 perl-5.34.0/dist/Devel-PPPort/parts/base/5019003 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5019003 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5019003 2020-10-04 22:17:12.000000000 +0000 @@ -1,7 +1,11 @@ 5.019003 -PERL_EXIT_ABORT # E -PERL_EXIT_WARN # E -sv_pos_b2u_flags # U adjust_size_and_find_bucket # F added by devel/scanprov +croak_memory_wrap # F added by devel/scanprov cv_const_sv_or_av # F added by devel/scanprov _invlist_dump # F added by devel/scanprov +PadnamelistMAXNAMED # Z added by devel/scanprov +PERL_EXIT_ABORT # E +PERL_EXIT_WARN # E +REXEC_FAIL_ON_UNDERFLOW # Z added by devel/scanprov +RX_ZERO_LEN # Z added by devel/scanprov +sv_pos_b2u_flags # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5019004 perl-5.34.0/dist/Devel-PPPort/parts/base/5019004 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5019004 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5019004 2020-10-04 22:17:12.000000000 +0000 @@ -1,21 +1,51 @@ 5.019004 -IS_SAFE_SYSCALL # U -is_safe_syscall # U -LATIN1_TO_NATIVE # U -NATIVE_TO_LATIN1 # U -UVCHR_IS_INVARIANT # U -WARN_SYSCALLS # E append_utf8_from_native_byte # F added by devel/scanprov ASCII_TO_NEED # F added by devel/scanprov +BOM_UTF8_FIRST_BYTE # Z added by devel/scanprov +BOM_UTF8_TAIL # Z added by devel/scanprov +CR_NATIVE # Z added by devel/scanprov find_default_stash # F added by devel/scanprov gv_is_in_main # F added by devel/scanprov gv_magicalize # F added by devel/scanprov +I8_TO_NATIVE_UTF8 # Z added by devel/scanprov +ILLEGAL_UTF8_BYTE # Z added by devel/scanprov +IS_SAFE_PATHNAME # Z added by devel/scanprov +IS_SAFE_SYSCALL # U +is_safe_syscall # U +LATIN1_TO_NATIVE # U +LATIN_SMALL_LIGATURE_LONG_S_T # Z added by devel/scanprov +LATIN_SMALL_LIGATURE_LONG_S_T_UTF8 # Z added by devel/scanprov +LATIN_SMALL_LIGATURE_ST # Z added by devel/scanprov +LATIN_SMALL_LIGATURE_ST_UTF8 # Z added by devel/scanprov +LF_NATIVE # Z added by devel/scanprov +LvSTARGOFF # Z added by devel/scanprov +MAX_UTF8_TWO_BYTE # Z added by devel/scanprov maybe_multimagic_gv # F added by devel/scanprov +MgBYTEPOS # Z added by devel/scanprov +MgBYTEPOS_set # Z added by devel/scanprov +MGf_BYTES # Z added by devel/scanprov +NATIVE_BYTE_IS_INVARIANT # Z added by devel/scanprov +NATIVE_SKIP # Z added by devel/scanprov +NATIVE_TO_LATIN1 # U NATIVE_TO_NEED # F added by devel/scanprov +NATIVE_UTF8_TO_I8 # Z added by devel/scanprov newSVavdefelem # F added by devel/scanprov +OFFUNISKIP # Z added by devel/scanprov +OPpSLICEWARNING # Z added by devel/scanprov parse_gv_stash_name # F added by devel/scanprov +Perl_drand48 # Z added by devel/scanprov +Perl_drand48_init # Z added by devel/scanprov Perl_drand48_init_r # F added by devel/scanprov +PERL_DRAND48_QUAD # Z added by devel/scanprov Perl_drand48_r # F added by devel/scanprov +PL_random_state # Z added by devel/scanprov +PL_RANDOM_STATE_TYPE # Z added by devel/scanprov save_strlen # F added by devel/scanprov +SAVEt_STRLEN # Z added by devel/scanprov +SSize_t_MAX # Z added by devel/scanprov sv_or_pv_pos_u2b # F added by devel/scanprov +TWO_BYTE_UTF8_TO_NATIVE # Z added by devel/scanprov +UVCHR_IS_INVARIANT # U uvuni_to_utf8 # F added by devel/scanprov +WARN_SYSCALLS # E +xlv_targoff # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5019005 perl-5.34.0/dist/Devel-PPPort/parts/base/5019005 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5019005 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5019005 2020-10-04 22:17:12.000000000 +0000 @@ -1,7 +1,19 @@ 5.019005 -WARN_EXPERIMENTAL__POSTDEREF # E +ANYOF_LOCALE_FLAGS # Z added by devel/scanprov +ANYOF_POSIXL_AND # Z added by devel/scanprov +ANYOF_POSIXL_CLEAR # Z added by devel/scanprov +ANYOF_POSIXL_MAX # Z added by devel/scanprov +ANYOF_POSIXL_OR # Z added by devel/scanprov +ANYOF_POSIXL_SET # Z added by devel/scanprov +ANYOF_POSIXL_SETALL # Z added by devel/scanprov +ANYOF_POSIXL_TEST # Z added by devel/scanprov +ANYOF_POSIXL_TEST_ALL_SET # Z added by devel/scanprov +ANYOF_POSIXL_TEST_ANY_SET # Z added by devel/scanprov +ANYOF_POSIXL_ZERO # Z added by devel/scanprov +FEATURE_POSTDEREF_QQ_IS_ENABLED # Z added by devel/scanprov get_ANYOF_cp_list_for_ssc # F added by devel/scanprov move_proto_attr # F added by devel/scanprov +PL_UpperLatin1 # Z added by devel/scanprov populate_ANYOF_from_invlist # F added by devel/scanprov set_ANYOF_arg # F added by devel/scanprov ssc_add_range # F added by devel/scanprov @@ -16,3 +28,4 @@ ssc_is_cp_posixl_init # F added by devel/scanprov ssc_or # F added by devel/scanprov ssc_union # F added by devel/scanprov +WARN_EXPERIMENTAL__POSTDEREF # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5019006 perl-5.34.0/dist/Devel-PPPort/parts/base/5019006 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5019006 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5019006 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,14 @@ 5.019006 -XopENTRYCUSTOM # M added by devel/scanprov +ASSUME # Z added by devel/scanprov custom_op_get_field # F added by devel/scanprov +GvFILEx # Z added by devel/scanprov gv_override # F added by devel/scanprov +hv_deletehek # Z added by devel/scanprov +hv_fetchhek # Z added by devel/scanprov +hv_storehek # Z added by devel/scanprov +NOT_REACHED # Z added by devel/scanprov +OPpLVALUE # Z added by devel/scanprov +Perl_custom_op_xop # Z added by devel/scanprov +PERL_POISON_EXPR # Z added by devel/scanprov set_caret_X # F added by devel/scanprov +XopENTRYCUSTOM # M added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5019007 perl-5.34.0/dist/Devel-PPPort/parts/base/5019007 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5019007 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5019007 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,7 @@ 5.019007 __ASSERT_ # E -OP_TYPE_IS # U fixup_errno_string # F added by devel/scanprov +GCC_DIAG_IGNORE # Z added by devel/scanprov +GCC_DIAG_RESTORE # Z added by devel/scanprov +OP_TYPE_IS # U +UNKNOWN_ERRNO_MSG # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5019008 perl-5.34.0/dist/Devel-PPPort/parts/base/5019008 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5019008 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5019008 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,21 @@ 5.019008 +ANYOF_COMMON_FLAGS # Z added by devel/scanprov +ISA_VERSION_OBJ # Z added by devel/scanprov newATTRSUB_x # F added by devel/scanprov +NEW_VERSION # Z added by devel/scanprov +OCTAL_VALUE # Z added by devel/scanprov +PERL_DECIMAL_VERSION # Z added by devel/scanprov +PERL_PV_ESCAPE_DWIM # Z added by devel/scanprov +PRESCAN_VERSION # Z added by devel/scanprov +SCAN_VERSION # Z added by devel/scanprov _setup_canned_invlist # F added by devel/scanprov sv_buf_to_ro # F added by devel/scanprov sv_buf_to_rw # F added by devel/scanprov +UPG_VERSION # Z added by devel/scanprov +VCMP # Z added by devel/scanprov +VNORMAL # Z added by devel/scanprov +VNUMIFY # Z added by devel/scanprov +VSTRINGIFY # Z added by devel/scanprov +VUTIL_REPLACE_CORE # Z added by devel/scanprov +VVERIFY # Z added by devel/scanprov +XDIGIT_VALUE # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5019009 perl-5.34.0/dist/Devel-PPPort/parts/base/5019009 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5019009 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5019009 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,41 @@ 5.019009 -WARN_EXPERIMENTAL__SIGNATURES # E -_get_regclass_nonbitmap_data # F added by devel/scanprov +ANYOF_POSIXL_SSC_TEST_ALL_SET # Z added by devel/scanprov +ANYOF_POSIXL_SSC_TEST_ANY_SET # Z added by devel/scanprov +DEBUG_L # Z added by devel/scanprov +DEBUG_L_FLAG # Z added by devel/scanprov +DEBUG_L_TEST # Z added by devel/scanprov +FEATURE_SIGNATURES_IS_ENABLED # Z added by devel/scanprov +FOLDEQ_LOCALE # Z added by devel/scanprov +IN_UTF8_CTYPE_LOCALE # Z added by devel/scanprov +is_ANYOF_SYNTHETIC # Z added by devel/scanprov +is_FOLDS_TO_MULTI_utf8 # Z added by devel/scanprov +is_PROBLEMATIC_LOCALE_FOLD_cp # Z added by devel/scanprov +is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp # Z added by devel/scanprov +is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8 # Z added by devel/scanprov +is_PROBLEMATIC_LOCALE_FOLD_utf8 # Z added by devel/scanprov +PERL_MEMORY_DEBUG_HEADER_SIZE # Z added by devel/scanprov +PL_in_utf8_CTYPE_locale # Z added by devel/scanprov +PREGf_ANCH # Z added by devel/scanprov +PREGf_ANCH_GPOS # Z added by devel/scanprov +PREGf_ANCH_MBOL # Z added by devel/scanprov +PREGf_ANCH_SBOL # Z added by devel/scanprov +PREGf_GPOS_FLOAT # Z added by devel/scanprov +PREGf_GPOS_SEEN # Z added by devel/scanprov +PREGf_NOSCAN # Z added by devel/scanprov put_range # F added by devel/scanprov +REG_CUTGROUP_SEEN # Z added by devel/scanprov +REG_GPOS_SEEN # Z added by devel/scanprov +REG_LOOKBEHIND_SEEN # Z added by devel/scanprov +REG_RECURSE_SEEN # Z added by devel/scanprov +REG_RUN_ON_COMMENT_SEEN # Z added by devel/scanprov +REG_TOP_LEVEL_BRANCHES_SEEN # Z added by devel/scanprov +REG_UNBOUNDED_QUANTIFIER_SEEN # Z added by devel/scanprov +REG_UNFOLDED_MULTI_SEEN # Z added by devel/scanprov +REG_VERBARG_SEEN # Z added by devel/scanprov +REG_ZERO_LEN_SEEN # Z added by devel/scanprov +RXf_IS_ANCHORED # Z added by devel/scanprov +RXf_UNBOUNDED_QUANTIFIER_SEEN # Z added by devel/scanprov +RX_INTFLAGS # Z added by devel/scanprov +RXp_INTFLAGS # Z added by devel/scanprov +set_ANYOF_SYNTHETIC # Z added by devel/scanprov +WARN_EXPERIMENTAL__SIGNATURES # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5019010 perl-5.34.0/dist/Devel-PPPort/parts/base/5019010 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5019010 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5019010 2020-10-04 22:17:12.000000000 +0000 @@ -1,7 +1,21 @@ 5.019010 -OP_TYPE_IS_OR_WAS # U do_open6 # F added by devel/scanprov do_open_raw # F added by devel/scanprov +HvAUXf_NO_DEREF # Z added by devel/scanprov +HvAUXf_SCAN_STASH # Z added by devel/scanprov hv_auxinit_internal # F added by devel/scanprov +is_MULTI_CHAR_FOLD_latin1_safe # Z added by devel/scanprov +is_MULTI_CHAR_FOLD_utf8_safe # Z added by devel/scanprov +is_MULTI_CHAR_FOLD_utf8_safe_part0 # Z added by devel/scanprov +is_MULTI_CHAR_FOLD_utf8_safe_part1 # Z added by devel/scanprov openn_cleanup # F added by devel/scanprov openn_setup # F added by devel/scanprov +OP_TYPE_IS_NN # Z added by devel/scanprov +OP_TYPE_ISNT # Z added by devel/scanprov +OP_TYPE_ISNT_AND_WASNT # Z added by devel/scanprov +OP_TYPE_ISNT_AND_WASNT_NN # Z added by devel/scanprov +OP_TYPE_ISNT_NN # Z added by devel/scanprov +OP_TYPE_IS_OR_WAS # U +OP_TYPE_IS_OR_WAS_NN # Z added by devel/scanprov +PERL_HV_ALLOC_AUX_SIZE # Z added by devel/scanprov +pTHX_12 # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5020000 perl-5.34.0/dist/Devel-PPPort/parts/base/5020000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5020000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5020000 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,3 @@ 5.020000 +REG_EXTFLAGS_NAME_SIZE # Z added by devel/scanprov +REG_INTFLAGS_NAME_SIZE # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5021001 perl-5.34.0/dist/Devel-PPPort/parts/base/5021001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5021001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5021001 2020-10-04 22:17:12.000000000 +0000 @@ -1,15 +1,41 @@ 5.021001 -isUTF8_CHAR # U -markstack_grow # E (Perl_markstack_grow) -WARN_EXPERIMENTAL__WIN32_PERLIO # E -PERL_UNUSED_RESULT # M added by devel/scanprov add_above_Latin1_folds # F added by devel/scanprov construct_ahocorasick_from_trie # F added by devel/scanprov dump_c_backtrace # F added by devel/scanprov free_c_backtrace # F added by devel/scanprov +GCC_DIAG_PRAGMA # Z added by devel/scanprov get_c_backtrace # F added by devel/scanprov get_c_backtrace_dump # F added by devel/scanprov +HAS_BACKTRACE # K added by devel/scanprov +HAS_DLADDR # K added by devel/scanprov +HAS_PTRDIFF_T # K added by devel/scanprov +HAS_WCSCMP # K added by devel/scanprov +HAS_WCSXFRM # K added by devel/scanprov +HINT_LOCALE_PARTIAL # Z added by devel/scanprov +I_EXECINFO # K added by devel/scanprov +IN_LC # Z added by devel/scanprov +IN_LC_ALL_COMPILETIME # Z added by devel/scanprov +IN_LC_ALL_RUNTIME # Z added by devel/scanprov +IN_LC_COMPILETIME # Z added by devel/scanprov +IN_LC_PARTIAL_COMPILETIME # Z added by devel/scanprov +IN_LC_PARTIAL_RUNTIME # Z added by devel/scanprov +IN_LC_RUNTIME # Z added by devel/scanprov _is_cur_LC_category_utf8 # F added by devel/scanprov _is_in_locale_category # F added by devel/scanprov +is_QUOTEMETA_high_part0 # Z added by devel/scanprov +is_QUOTEMETA_high_part1 # Z added by devel/scanprov +isUTF8_CHAR # U +is_UTF8_CHAR_utf8_no_length_checks # Z added by devel/scanprov +LOCK_NUMERIC_STANDARD # Z added by devel/scanprov +markstack_grow # E (Perl_markstack_grow) my_strerror # F added by devel/scanprov +NBSP_NATIVE # Z added by devel/scanprov +NBSP_UTF8 # Z added by devel/scanprov +Perl_free_c_backtrace # Z added by devel/scanprov +PERL_HASH_WITH_SEED # Z added by devel/scanprov +PERL_UNUSED_RESULT # U +QUESTION_MARK_CTRL # Z added by devel/scanprov should_warn_nl # F added by devel/scanprov +SS_NOPRIV # Z added by devel/scanprov +UNLOCK_NUMERIC_STANDARD # Z added by devel/scanprov +WARN_EXPERIMENTAL__WIN32_PERLIO # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5021002 perl-5.34.0/dist/Devel-PPPort/parts/base/5021002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5021002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5021002 2020-10-04 22:17:12.000000000 +0000 @@ -1,8 +1,14 @@ 5.021002 grok_number_flags # U +IS_NUMBER_TRAILING # Z added by devel/scanprov +not_incrementable # F added by devel/scanprov +OP_SIBLING # Z added by devel/scanprov op_sibling_splice # U +PERL_MY_SNPRINTF_POST_GUARD # Z added by devel/scanprov +PERL_MY_VSNPRINTF_POST_GUARD # Z added by devel/scanprov PERL_SCAN_TRAILING # E +PERL_SNPRINTF_CHECK # Z added by devel/scanprov +sv_display # F added by devel/scanprov +USE_LOCALE_TIME # Z added by devel/scanprov WARN_MISSING # E WARN_REDUNDANT # E -not_incrementable # F added by devel/scanprov -sv_display # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5021003 perl-5.34.0/dist/Devel-PPPort/parts/base/5021003 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5021003 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5021003 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,16 @@ 5.021003 clear_special_blocks # F added by devel/scanprov +HAS_LDEXPL # K added by devel/scanprov +LONG_DOUBLE_IS_DOUBLE # K added by devel/scanprov +LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN # K added by devel/scanprov +LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN # K added by devel/scanprov +LONG_DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN # K added by devel/scanprov +LONG_DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN # K added by devel/scanprov +LONG_DOUBLE_IS_UNKNOWN_FORMAT # K added by devel/scanprov +LONG_DOUBLE_IS_X86_80_BIT_BIG_ENDIAN # K added by devel/scanprov +LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN # K added by devel/scanprov +LONG_DOUBLEKIND # K added by devel/scanprov +NV_MAX_EXP # Z added by devel/scanprov +NV_MIN_EXP # Z added by devel/scanprov +Perl_ldexp # Z added by devel/scanprov +Size_t_MAX # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5021004 perl-5.34.0/dist/Devel-PPPort/parts/base/5021004 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5021004 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5021004 2020-10-04 22:17:12.000000000 +0000 @@ -1,14 +1,67 @@ 5.021004 -CALL_CHECKER_REQUIRE_GV # E -cv_set_call_checker_flags # U -grok_infnan # U -isinfnan # U add_multi_match # F added by devel/scanprov +ANYOF_MATCHES_ALL_ABOVE_BITMAP # Z added by devel/scanprov +ANYOF_MATCHES_POSIXL # Z added by devel/scanprov +ANYOF_ONLY_HAS_BITMAP # Z added by devel/scanprov +CALL_CHECKER_REQUIRE_GV # E cntrl_to_mnemonic # F added by devel/scanprov +CVf_LEXICAL # Z added by devel/scanprov +CvHASGV # Z added by devel/scanprov +CvLEXICAL # Z added by devel/scanprov +CvLEXICAL_off # Z added by devel/scanprov +CvLEXICAL_on # Z added by devel/scanprov +cv_set_call_checker_flags # U cv_undef_flags # F added by devel/scanprov +CV_UNDEF_KEEP_NAME # Z added by devel/scanprov +ESC_NATIVE # Z added by devel/scanprov +FP_PINF # Z added by devel/scanprov +FP_QNAN # Z added by devel/scanprov +grok_infnan # U +GV_CACHE_ONLY # Z added by devel/scanprov +GvGPFLAGS # Z added by devel/scanprov gv_stashpvn_internal # F added by devel/scanprov gv_stashsvpvn_cached # F added by devel/scanprov +HAS_ACOSH # K added by devel/scanprov +HAS_C99 # Z added by devel/scanprov +HAS_FEGETROUND # K added by devel/scanprov +HAS_FPCLASSIFY # K added by devel/scanprov +HAS_ISFINITE # K added by devel/scanprov +HAS_ISINFL # K added by devel/scanprov +HAS_J0 # K added by devel/scanprov +HAS_J0L # K added by devel/scanprov +HAS_TRUNCL # K added by devel/scanprov +I_FENV # K added by devel/scanprov +isALPHA_FOLD_EQ # Z added by devel/scanprov +isALPHA_FOLD_NE # Z added by devel/scanprov +isinfnan # U +isnormal # Z added by devel/scanprov +I_STDINT # K added by devel/scanprov +MAX_PRINT_A_FOR_USE_ONLY_BY_REGCOMP_DOT_C # Z added by devel/scanprov +MGf_REQUIRE_GV # Z added by devel/scanprov +NUM_ANYOF_CODE_POINTS # Z added by devel/scanprov +OPpARG1_MASK # Z added by devel/scanprov +OPpARG2_MASK # Z added by devel/scanprov +OPpARG3_MASK # Z added by devel/scanprov +OPpARG4_MASK # Z added by devel/scanprov +OPpHINT_STRICT_REFS # Z added by devel/scanprov +Perl_acos # Z added by devel/scanprov +Perl_asin # Z added by devel/scanprov +Perl_atan # Z added by devel/scanprov +Perl_cosh # Z added by devel/scanprov Perl_cvgv_from_hek # F added by devel/scanprov +Perl_isfinitel # Z added by devel/scanprov +Perl_log10 # Z added by devel/scanprov +Perl_sinh # Z added by devel/scanprov +Perl_strtod # Z added by devel/scanprov +Perl_tan # Z added by devel/scanprov +Perl_tanh # Z added by devel/scanprov +PL_constpadix # Z added by devel/scanprov put_charclass_bitmap_innards # F added by devel/scanprov put_code_point # F added by devel/scanprov quadmath_format_needed # F added by devel/scanprov +RV2CVOPCV_FLAG_MASK # Z added by devel/scanprov +RV2CVOPCV_MAYBE_NAME_GV # Z added by devel/scanprov +RV2CVOPCV_RETURN_STUB # Z added by devel/scanprov +SSC_MATCHES_EMPTY_STRING # Z added by devel/scanprov +sv_cathek # Z added by devel/scanprov +VT_NATIVE # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5021005 perl-5.34.0/dist/Devel-PPPort/parts/base/5021005 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5021005 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5021005 2020-10-04 22:17:12.000000000 +0000 @@ -1,22 +1,57 @@ 5.021005 +assignment_type # F added by devel/scanprov +cMETHOPx # Z added by devel/scanprov +cMETHOPx_meth # Z added by devel/scanprov cv_name # A CV_NAME_NOTQUAL # E -newMETHOP # U -newMETHOP_named # U -PERL_MAGIC_debugvar # E -PERL_MAGIC_lvref # E -SV_CATBYTES # E -SV_CATUTF8 # E -WARN_EXPERIMENTAL__REFALIASING # E -assignment_type # F added by devel/scanprov +CXp_FOR_LVREF # Z added by devel/scanprov +DBVARMG_COUNT # Z added by devel/scanprov +DBVARMG_SIGNAL # Z added by devel/scanprov +DBVARMG_SINGLE # Z added by devel/scanprov +DBVARMG_TRACE # Z added by devel/scanprov +DEBUG_TEST_r # Z added by devel/scanprov +FEATURE_REFALIASING_IS_ENABLED # Z added by devel/scanprov +FILL_ADVANCE_NODE_2L_ARG # Z added by devel/scanprov gv_setref # F added by devel/scanprov +HAS_LC_MONETARY_2008 # K added by devel/scanprov isinfnansv # F added by devel/scanprov is_ssc_worth_it # F added by devel/scanprov magic_getdebugvar # F added by devel/scanprov magic_setdebugvar # F added by devel/scanprov magic_setlvref # F added by devel/scanprov +MGf_PERSIST # Z added by devel/scanprov +NAN_COMPARE_BROKEN # Z added by devel/scanprov +newMETHOP # U newMETHOP_internal # F added by devel/scanprov +newMETHOP_named # U +NON_OTHER_COUNT_FOR_USE_ONLY_BY_REGCOMP_DOT_C # Z added by devel/scanprov +OA_METHOP # Z added by devel/scanprov +OPpLVREF_AV # Z added by devel/scanprov +OPpLVREF_CV # Z added by devel/scanprov +OPpLVREF_ELEM # Z added by devel/scanprov +OPpLVREF_HV # Z added by devel/scanprov +OPpLVREF_ITER # Z added by devel/scanprov +OPpLVREF_SV # Z added by devel/scanprov +OPpLVREF_TYPE # Z added by devel/scanprov op_relocate_sv # F added by devel/scanprov +PERL_MAGIC_debugvar # E +PERL_MAGIC_lvref # E +PERL_PV_PRETTY_EXACTSIZE # Z added by devel/scanprov +PERL_SYS_FPU_INIT # Z added by devel/scanprov +PL_DBcontrol # Z added by devel/scanprov +PL_DBsignal_iv # Z added by devel/scanprov +PL_DBsingle_iv # Z added by devel/scanprov +PL_DBtrace_iv # Z added by devel/scanprov +PL_vtbl_debugvar # Z added by devel/scanprov +PL_vtbl_lvref # Z added by devel/scanprov +PMf_EXTENDED_MORE # Z added by devel/scanprov +RE_DEBUG_COMPILE_TEST # Z added by devel/scanprov reg2Lanode # F added by devel/scanprov regnode_guts # F added by devel/scanprov +RXf_PMf_EXTENDED_MORE # Z added by devel/scanprov +SV_CATBYTES # E +SV_CATUTF8 # E +SVf_PROTECT # Z added by devel/scanprov +SVt_FIRST # Z added by devel/scanprov tmps_grow_p # F added by devel/scanprov +WARN_EXPERIMENTAL__REFALIASING # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5021006 perl-5.34.0/dist/Devel-PPPort/parts/base/5021006 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5021006 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5021006 2020-10-04 22:17:12.000000000 +0000 @@ -1,12 +1,89 @@ 5.021006 -DOUBLEKIND # E +COP_SEQMAX_INC # Z added by devel/scanprov +CvDEPTHunsafe # Z added by devel/scanprov +CvHSCXT # Z added by devel/scanprov +CvPADLIST_set # Z added by devel/scanprov +DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN # K added by devel/scanprov +DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN # K added by devel/scanprov +DOUBLE_IS_IEEE_754_32_BIT_BIG_ENDIAN # K added by devel/scanprov +DOUBLE_IS_IEEE_754_32_BIT_LITTLE_ENDIAN # K added by devel/scanprov +DOUBLE_IS_IEEE_754_64_BIT_BIG_ENDIAN # K added by devel/scanprov +DOUBLE_IS_IEEE_754_64_BIT_LITTLE_ENDIAN # K added by devel/scanprov +DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE # K added by devel/scanprov +DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE # K added by devel/scanprov +DOUBLE_IS_UNKNOWN_FORMAT # K added by devel/scanprov +DOUBLEKIND # K added by devel/scanprov +dXSBOOTARGSAPIVERCHK # Z added by devel/scanprov +dXSBOOTARGSNOVERCHK # Z added by devel/scanprov +dXSBOOTARGSXSAPIVERCHK # Z added by devel/scanprov +HAS_ASINH # K added by devel/scanprov +HAS_ATANH # K added by devel/scanprov +HAS_CBRT # K added by devel/scanprov +HAS_COPYSIGN # K added by devel/scanprov +HAS_ERF # K added by devel/scanprov +HAS_ERFC # K added by devel/scanprov +HAS_EXP2 # K added by devel/scanprov +HAS_EXPM1 # K added by devel/scanprov +HAS_FDIM # K added by devel/scanprov +HAS_FMA # K added by devel/scanprov +HAS_FMAX # K added by devel/scanprov +HAS_FMIN # K added by devel/scanprov +HAS_HYPOT # K added by devel/scanprov +HAS_ILOGB # K added by devel/scanprov +HAS_ISNORMAL # K added by devel/scanprov +HAS_LGAMMA # K added by devel/scanprov +HAS_LGAMMA_R # K added by devel/scanprov +HAS_LLRINT # K added by devel/scanprov +HAS_LLROUND # K added by devel/scanprov +HAS_LOG1P # K added by devel/scanprov +HAS_LOG2 # K added by devel/scanprov +HAS_LOGB # K added by devel/scanprov +HAS_LRINT # K added by devel/scanprov +HAS_LROUND # K added by devel/scanprov +HAS_NAN # K added by devel/scanprov +HAS_NEARBYINT # K added by devel/scanprov +HAS_NEXTAFTER # K added by devel/scanprov +HAS_NEXTTOWARD # K added by devel/scanprov +HAS_REMAINDER # K added by devel/scanprov +HAS_REMQUO # K added by devel/scanprov +HAS_RINT # K added by devel/scanprov +HAS_ROUND # K added by devel/scanprov +HAS_SCALBN # K added by devel/scanprov +HAS_TGAMMA # K added by devel/scanprov +HAS_TRUNC # K added by devel/scanprov +HS_APIVERLEN_MAX # Z added by devel/scanprov +HS_CXT # Z added by devel/scanprov +HSf_IMP_CXT # Z added by devel/scanprov +HSf_NOCHK # Z added by devel/scanprov +HSf_POPMARK # Z added by devel/scanprov +HSf_SETXSUBFN # Z added by devel/scanprov +HS_GETAPIVERLEN # Z added by devel/scanprov +HS_GETINTERPSIZE # Z added by devel/scanprov +HS_GETXSVERLEN # Z added by devel/scanprov +HS_KEY # Z added by devel/scanprov +HS_KEYp # Z added by devel/scanprov +HSm_APIVERLEN # Z added by devel/scanprov +HSm_INTRPSIZE # Z added by devel/scanprov +HSm_KEY_MATCH # Z added by devel/scanprov +HSm_XSVERLEN # Z added by devel/scanprov +HS_XSVERLEN_MAX # Z added by devel/scanprov newDEFSVOP # U -op_convert_list # U -WARN_LOCALE # E newXS_deffile # F added by devel/scanprov noperl_die # F added by devel/scanprov +op_convert_list # U +PadnameLVALUE # Z added by devel/scanprov +PadnameLVALUE_on # Z added by devel/scanprov PerlIO_restore_errno # F added by devel/scanprov PerlIO_save_errno # F added by devel/scanprov Perl_xs_handshake # F added by devel/scanprov +PL_xsubfilename # Z added by devel/scanprov +PoisonPADLIST # Z added by devel/scanprov set_padlist # F added by devel/scanprov +WARN_LOCALE # E +XS_APIVERSION_POPMARK_BOOTCHECK # Z added by devel/scanprov +XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK # Z added by devel/scanprov xs_boot_epilog # F added by devel/scanprov +XS_BOTHVERSION_BOOTCHECK # Z added by devel/scanprov +XS_BOTHVERSION_POPMARK_BOOTCHECK # Z added by devel/scanprov +XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK # Z added by devel/scanprov +XS_SETXSUBFN_POPMARK # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5021007 perl-5.34.0/dist/Devel-PPPort/parts/base/5021007 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5021007 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5021007 2020-10-04 22:17:12.000000000 +0000 @@ -1,22 +1,82 @@ 5.021007 +cMETHOPx_rclass # Z added by devel/scanprov +cUNOP_AUX # Z added by devel/scanprov +cUNOP_AUXo # Z added by devel/scanprov +cUNOP_AUXx # Z added by devel/scanprov +gv_fetchmeth_internal # F added by devel/scanprov +HAS_REGCOMP # K added by devel/scanprov +HAS_STAT # K added by devel/scanprov +I_GDBM # K added by devel/scanprov +I_GDBMNDBM # K added by devel/scanprov is_invariant_string # U +kUNOP_AUX # Z added by devel/scanprov +MDEREF_ACTION_MASK # Z added by devel/scanprov +MDEREF_AV_gvav_aelem # Z added by devel/scanprov +MDEREF_AV_gvsv_vivify_rv2av_aelem # Z added by devel/scanprov +MDEREF_AV_padav_aelem # Z added by devel/scanprov +MDEREF_AV_padsv_vivify_rv2av_aelem # Z added by devel/scanprov +MDEREF_AV_pop_rv2av_aelem # Z added by devel/scanprov +MDEREF_AV_vivify_rv2av_aelem # Z added by devel/scanprov +MDEREF_FLAG_last # Z added by devel/scanprov +MDEREF_HV_gvhv_helem # Z added by devel/scanprov +MDEREF_HV_gvsv_vivify_rv2hv_helem # Z added by devel/scanprov +MDEREF_HV_padhv_helem # Z added by devel/scanprov +MDEREF_HV_padsv_vivify_rv2hv_helem # Z added by devel/scanprov +MDEREF_HV_pop_rv2hv_helem # Z added by devel/scanprov +MDEREF_HV_vivify_rv2hv_helem # Z added by devel/scanprov +MDEREF_INDEX_const # Z added by devel/scanprov +MDEREF_INDEX_gvsv # Z added by devel/scanprov +MDEREF_INDEX_MASK # Z added by devel/scanprov +MDEREF_INDEX_none # Z added by devel/scanprov +MDEREF_INDEX_padsv # Z added by devel/scanprov +MDEREF_MASK # Z added by devel/scanprov +MDEREF_reload # Z added by devel/scanprov +MDEREF_SHIFT # Z added by devel/scanprov +NDEBUG # Z added by devel/scanprov newPADNAMELIST # U newPADNAMEouter # U newPADNAMEpvn # U newUNOP_AUX # E +OA_UNOP_AUX # Z added by devel/scanprov +OPf_FOLDED # Z added by devel/scanprov OpHAS_SIBLING # U +opmethod_stash # F added by devel/scanprov +OPpMULTIDEREF_DELETE # Z added by devel/scanprov +OPpMULTIDEREF_EXISTS # Z added by devel/scanprov OpSIBLING # U +pad_add_weakref # F added by devel/scanprov +padname_dup # F added by devel/scanprov +PadnameFLAGS # Z added by devel/scanprov +PADNAME_FROM_PV # Z added by devel/scanprov +PadnameIsSTATE_on # Z added by devel/scanprov +padnamelist_dup # F added by devel/scanprov padnamelist_fetch # U PadnamelistREFCNT # U PadnamelistREFCNT_dec # U padnamelist_store # U +PadnameOURSTASH_set # Z added by devel/scanprov +PadnamePROTOCV # Z added by devel/scanprov PadnameREFCNT # U PadnameREFCNT_dec # U +PADNAMEt_LVALUE # Z added by devel/scanprov +PADNAMEt_OUR # Z added by devel/scanprov PADNAMEt_OUTER # E -gv_fetchmeth_internal # F added by devel/scanprov -opmethod_stash # F added by devel/scanprov -pad_add_weakref # F added by devel/scanprov -padname_dup # F added by devel/scanprov -padnamelist_dup # F added by devel/scanprov +PADNAMEt_STATE # Z added by devel/scanprov +PADNAMEt_TYPED # Z added by devel/scanprov +PadnameTYPE_set # Z added by devel/scanprov +PERL_DEB2 # Z added by devel/scanprov Perl_padname_free # F added by devel/scanprov Perl_padnamelist_free # F added by devel/scanprov +PERL_PADNAME_MINIMAL # Z added by devel/scanprov +PL_multideref_pc # Z added by devel/scanprov +PL_padlist_generation # Z added by devel/scanprov +PL_padname_const # Z added by devel/scanprov +PL_padname_undef # Z added by devel/scanprov +PNf # Z added by devel/scanprov +PNfARG # Z added by devel/scanprov +SAVEFREEPADNAME # Z added by devel/scanprov +SAVEt_FREEPADNAME # Z added by devel/scanprov +STATIC_ASSERT_1 # Z added by devel/scanprov +STATIC_ASSERT_2 # Z added by devel/scanprov +STATIC_ASSERT_STMT # Z added by devel/scanprov +UNOP_AUX_item_sv # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5021008 perl-5.34.0/dist/Devel-PPPort/parts/base/5021008 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5021008 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5021008 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,20 @@ 5.021008 +ANYOFL # Z added by devel/scanprov +CvANONCONST # Z added by devel/scanprov +CvANONCONST_off # Z added by devel/scanprov +CvANONCONST_on # Z added by devel/scanprov +CVf_ANONCONST # Z added by devel/scanprov +EXACTFLU8 # Z added by devel/scanprov +EXACTL # Z added by devel/scanprov +FOLDEQ_S1_FOLDS_SANE # Z added by devel/scanprov +FOLDEQ_S2_FOLDS_SANE # Z added by devel/scanprov +NOCAPTURE_PAT_MOD # Z added by devel/scanprov +NOCAPTURE_PAT_MODS # Z added by devel/scanprov +PL_warn_locale # Z added by devel/scanprov +PMf_NOCAPTURE # Z added by devel/scanprov +PMf_STRICT # Z added by devel/scanprov +RXf_PMf_NOCAPTURE # Z added by devel/scanprov +RXf_PMf_STRICT # Z added by devel/scanprov sv_get_backrefs # U WARN_EXPERIMENTAL__CONST_ATTR # E WARN_EXPERIMENTAL__RE_STRICT # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5021009 perl-5.34.0/dist/Devel-PPPort/parts/base/5021009 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5021009 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5021009 2020-10-04 22:17:12.000000000 +0000 @@ -1,11 +1,36 @@ 5.021009 -WARN_EXPERIMENTAL__BITWISE # E advance_one_SB # F added by devel/scanprov advance_one_WB # F added by devel/scanprov +AMGf_numarg # Z added by devel/scanprov backup_one_SB # F added by devel/scanprov backup_one_WB # F added by devel/scanprov +DOUBLE_BIG_ENDIAN # Z added by devel/scanprov +DOUBLE_LITTLE_ENDIAN # Z added by devel/scanprov +DOUBLE_MIX_ENDIAN # Z added by devel/scanprov +FEATURE_BITWISE_IS_ENABLED # Z added by devel/scanprov +HAS_LLRINTL # K added by devel/scanprov +HAS_LLROUNDL # K added by devel/scanprov +HAS_LRINTL # K added by devel/scanprov +HAS_LROUNDL # K added by devel/scanprov isGCB # F added by devel/scanprov isSB # F added by devel/scanprov isWB # F added by devel/scanprov +LONGDOUBLE_BIG_ENDIAN # Z added by devel/scanprov +LONGDOUBLE_DOUBLEDOUBLE # Z added by devel/scanprov +LONGDOUBLE_LITTLE_ENDIAN # Z added by devel/scanprov +LONGDOUBLE_X86_80_BIT # Z added by devel/scanprov multideref_stringify # F added by devel/scanprov my_bytes_to_utf8 # F added by devel/scanprov +NV_BIG_ENDIAN # Z added by devel/scanprov +NV_IMPLICIT_BIT # Z added by devel/scanprov +NV_LITTLE_ENDIAN # Z added by devel/scanprov +NV_MIX_ENDIAN # Z added by devel/scanprov +OP_IS_INFIX_BIT # Z added by devel/scanprov +Perl_pp_nbit_xor # Z added by devel/scanprov +Perl_pp_sbit_xor # Z added by devel/scanprov +PL_GCB_invlist # Z added by devel/scanprov +PL_SB_invlist # Z added by devel/scanprov +PL_WB_invlist # Z added by devel/scanprov +RETSETTARG # Z added by devel/scanprov +SS_BUFFEROVF # Z added by devel/scanprov +WARN_EXPERIMENTAL__BITWISE # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5021010 perl-5.34.0/dist/Devel-PPPort/parts/base/5021010 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5021010 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5021010 2020-10-04 22:17:12.000000000 +0000 @@ -1,8 +1,11 @@ 5.021010 DECLARATION_FOR_LC_NUMERIC_MANIPULATION # E +grok_atoUV # F added by devel/scanprov +LOCK_LC_NUMERIC_STANDARD # Z added by devel/scanprov +regex_set_precedence # F added by devel/scanprov RESTORE_LC_NUMERIC # E +SET_NUMERIC_UNDERLYING # Z added by devel/scanprov STORE_LC_NUMERIC_FORCE_TO_UNDERLYING # E STORE_LC_NUMERIC_SET_TO_NEEDED # E -grok_atoUV # F added by devel/scanprov -regex_set_precedence # F added by devel/scanprov sv_only_taint_gmagic # F added by devel/scanprov +UNLOCK_LC_NUMERIC_STANDARD # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5023000 perl-5.34.0/dist/Devel-PPPort/parts/base/5023000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5023000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5023000 2020-10-04 22:17:12.000000000 +0000 @@ -1,8 +1,37 @@ 5.023000 -DOUBLEINFBYTES # E -DOUBLEMANTBITS # E -DOUBLENANBYTES # E -LONGDBLINFBYTES # E -LONGDBLMANTBITS # E -LONGDBLNANBYTES # E -NVMANTBITS # E +DOUBLEINFBYTES # K added by devel/scanprov +DOUBLEMANTBITS # K added by devel/scanprov +DOUBLENANBYTES # K added by devel/scanprov +INFNAN_NV_U8_DECL # Z added by devel/scanprov +INFNAN_U8_NV_DECL # Z added by devel/scanprov +LONGDBLINFBYTES # K added by devel/scanprov +LONGDBLMANTBITS # K added by devel/scanprov +LONGDBLNANBYTES # K added by devel/scanprov +NVMANTBITS # K added by devel/scanprov +NV_NAN_BITS # Z added by devel/scanprov +NV_NAN_IS_QUIET # Z added by devel/scanprov +NV_NAN_IS_SIGNALING # Z added by devel/scanprov +NV_NAN_PAYLOAD_MASK # Z added by devel/scanprov +NV_NAN_PAYLOAD_MASK_IEEE_754_128_BE # Z added by devel/scanprov +NV_NAN_PAYLOAD_MASK_IEEE_754_128_LE # Z added by devel/scanprov +NV_NAN_PAYLOAD_MASK_IEEE_754_64_BE # Z added by devel/scanprov +NV_NAN_PAYLOAD_MASK_IEEE_754_64_LE # Z added by devel/scanprov +NV_NAN_PAYLOAD_PERM # Z added by devel/scanprov +NV_NAN_PAYLOAD_PERM_0_TO_7 # Z added by devel/scanprov +NV_NAN_PAYLOAD_PERM_7_TO_0 # Z added by devel/scanprov +NV_NAN_PAYLOAD_PERM_IEEE_754_128_BE # Z added by devel/scanprov +NV_NAN_PAYLOAD_PERM_IEEE_754_128_LE # Z added by devel/scanprov +NV_NAN_PAYLOAD_PERM_IEEE_754_64_BE # Z added by devel/scanprov +NV_NAN_PAYLOAD_PERM_IEEE_754_64_LE # Z added by devel/scanprov +NV_NAN_QS_BIT # Z added by devel/scanprov +NV_NAN_QS_BIT_OFFSET # Z added by devel/scanprov +NV_NAN_QS_BIT_SHIFT # Z added by devel/scanprov +NV_NAN_QS_BYTE # Z added by devel/scanprov +NV_NAN_QS_BYTE_OFFSET # Z added by devel/scanprov +NV_NAN_QS_QUIET # Z added by devel/scanprov +NV_NAN_QS_SIGNALING # Z added by devel/scanprov +NV_NAN_QS_TEST # Z added by devel/scanprov +NV_NAN_QS_XOR # Z added by devel/scanprov +NV_NAN_SET_QUIET # Z added by devel/scanprov +NV_NAN_SET_SIGNALING # Z added by devel/scanprov +PERLSI_MULTICALL # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5023001 perl-5.34.0/dist/Devel-PPPort/parts/base/5023001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5023001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5023001 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,3 @@ 5.023001 +FEATURE_BUNDLE_523 # Z added by devel/scanprov +PERL_COPY_ON_WRITE # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5023002 perl-5.34.0/dist/Devel-PPPort/parts/base/5023002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5023002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5023002 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,20 @@ 5.023002 +ELEMENT_RANGE_MATCHES_INVLIST # Z added by devel/scanprov +FROM_INTERNAL_SIZE # Z added by devel/scanprov +LATIN_CAPITAL_LETTER_I_WITH_DOT_ABOVE # Z added by devel/scanprov +LATIN_CAPITAL_LETTER_I_WITH_DOT_ABOVE_UTF8 # Z added by devel/scanprov +LATIN_SMALL_LETTER_DOTLESS_I # Z added by devel/scanprov +LATIN_SMALL_LETTER_DOTLESS_I_UTF8 # Z added by devel/scanprov +OPpASSIGN_COMMON_AGG # Z added by devel/scanprov +OPpASSIGN_COMMON_RC1 # Z added by devel/scanprov +OPpASSIGN_COMMON_SCALAR # Z added by devel/scanprov +PERLDB_LINE_OR_SAVESRC # Z added by devel/scanprov +PREV_RANGE_MATCHES_INVLIST # Z added by devel/scanprov +TO_INTERNAL_SIZE # Z added by devel/scanprov +U64 # Z added by devel/scanprov +UNICODE_DOT_DOT_VERSION # Z added by devel/scanprov +UNICODE_DOT_VERSION # Z added by devel/scanprov +UNICODE_MAJOR_VERSION # Z added by devel/scanprov UTF8_IS_NONCHAR # U UTF8_IS_SUPER # A UTF8_IS_SURROGATE # A diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5023003 perl-5.34.0/dist/Devel-PPPort/parts/base/5023003 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5023003 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5023003 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,9 @@ 5.023003 +ANYOFD # Z added by devel/scanprov +ANYOF_SHARED_d_MATCHES_ALL_NON_UTF8_NON_ASCII_non_d_WARN_SUPER # Z added by devel/scanprov +DEBUG_Lv # Z added by devel/scanprov +DEBUG_Lv_TEST # Z added by devel/scanprov +EIGHT_BIT_UTF8_TO_NATIVE # Z added by devel/scanprov +isUTF8_POSSIBLY_PROBLEMATIC # Z added by devel/scanprov +OFFUNI_IS_INVARIANT # Z added by devel/scanprov +UTF8_IS_ABOVE_LATIN1_START # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5023005 perl-5.34.0/dist/Devel-PPPort/parts/base/5023005 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5023005 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5023005 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,18 @@ 5.023005 +HAS_FSTATFS # K added by devel/scanprov +HAS_FSTATVFS # K added by devel/scanprov +HAS_GETMNTENT # K added by devel/scanprov +HAS_HASMNTOPT # K added by devel/scanprov +HAS_STRUCT_STATFS # K added by devel/scanprov +HAS_STRUCT_STATFS_F_FLAGS # K added by devel/scanprov +HAS_USTAT # K added by devel/scanprov +I_MNTENT # K added by devel/scanprov +INCMARK # Z added by devel/scanprov +I_SYS_MOUNT # K added by devel/scanprov +I_SYS_STATFS # K added by devel/scanprov +I_SYS_STATVFS # K added by devel/scanprov +I_SYS_VFS # K added by devel/scanprov +I_USTAT # K added by devel/scanprov +TARGi # Z added by devel/scanprov +TARGn # Z added by devel/scanprov +TARGu # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5023006 perl-5.34.0/dist/Devel-PPPort/parts/base/5023006 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5023006 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5023006 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,34 @@ 5.023006 +ANYOF_SHARED_d_UPPER_LATIN1_UTF8_STRING_MATCHES_non_d_RUNTIME_USER_PROP # Z added by devel/scanprov +CLANG_DIAG_IGNORE # Z added by devel/scanprov +CLANG_DIAG_PRAGMA # Z added by devel/scanprov +CLANG_DIAG_RESTORE # Z added by devel/scanprov +HIGHEST_CASE_CHANGING_CP_FOR_USE_ONLY_BY_UTF8_DOT_C # Z added by devel/scanprov _invlistEQ # F added by devel/scanprov +LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE # K added by devel/scanprov +LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE # K added by devel/scanprov +LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE # K added by devel/scanprov +LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE # K added by devel/scanprov +LONGDOUBLE_MIX_ENDIAN # Z added by devel/scanprov +NV_NAN_PAYLOAD_MASK_SKIP_EIGHT # Z added by devel/scanprov +NV_NAN_PAYLOAD_PERM_SKIP_EIGHT # Z added by devel/scanprov +perl_pthread_mutex_lock # Z added by devel/scanprov +perl_pthread_mutex_unlock # Z added by devel/scanprov +PERL_TSA # Z added by devel/scanprov +PERL_TSA_ACQUIRE # Z added by devel/scanprov +PERL_TSA_ACTIVE # Z added by devel/scanprov +PERL_TSA_CAPABILITY # Z added by devel/scanprov +PERL_TSA_EXCLUDES # Z added by devel/scanprov +PERL_TSA_GUARDED_BY # Z added by devel/scanprov +PERL_TSA_NO_TSA # Z added by devel/scanprov +PERL_TSA_PT_GUARDED_BY # Z added by devel/scanprov +PERL_TSA_RELEASE # Z added by devel/scanprov +PERL_TSA_REQUIRES # Z added by devel/scanprov _to_utf8_case # F added by devel/scanprov +UNICODE_DISALLOW_ABOVE_31_BIT # Z added by devel/scanprov +UNICODE_IS_32_CONTIGUOUS_NONCHARS # Z added by devel/scanprov +UNICODE_IS_END_PLANE_NONCHAR_GIVEN_NOT_SUPER # Z added by devel/scanprov +UNICODE_WARN_ABOVE_31_BIT # Z added by devel/scanprov +UTF8_DISALLOW_ABOVE_31_BIT # Z added by devel/scanprov +UTF8_WARN_ABOVE_31_BIT # Z added by devel/scanprov +UTF_IS_CONTINUATION_MASK # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5023007 perl-5.34.0/dist/Devel-PPPort/parts/base/5023007 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5023007 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5023007 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,17 @@ 5.023007 advance_one_LB # F added by devel/scanprov +ANYOFL_FOLD # Z added by devel/scanprov +ANYOFL_SHARED_UTF8_LOCALE_fold_HAS_MATCHES_nonfold_REQD # Z added by devel/scanprov +ANYOFL_SOME_FOLDS_ONLY_IN_UTF8_LOCALE # Z added by devel/scanprov +ANYOFL_UTF8_LOCALE_REQD # Z added by devel/scanprov backup_one_LB # F added by devel/scanprov isLB # F added by devel/scanprov +LB_BREAKABLE # Z added by devel/scanprov +LB_HY_or_BA_then_foo # Z added by devel/scanprov +LB_NOBREAK # Z added by devel/scanprov +LB_NOBREAK_EVEN_WITH_SP_BETWEEN # Z added by devel/scanprov +LB_PR_or_PO_then_OP_or_HY # Z added by devel/scanprov +LB_SP_foo # Z added by devel/scanprov +LB_SY_or_IS_then_various # Z added by devel/scanprov +LB_various_then_PO_or_PR # Z added by devel/scanprov +PL_LB_invlist # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5023008 perl-5.34.0/dist/Devel-PPPort/parts/base/5023008 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5023008 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5023008 2020-10-04 22:17:12.000000000 +0000 @@ -1,25 +1,61 @@ 5.023008 +blk_oldsaveix # Z added by devel/scanprov +blk_old_tmpsfloor # Z added by devel/scanprov clear_defarray # U -cx_popblock # U -cx_popeval # U -cx_popformat # U -cx_poploop # U -cx_popsub # U -cx_popsub_args # U -cx_popsub_common # U -cx_pushblock # U -cx_pusheval # U -cx_pushformat # U -cx_pushloop_for # U -cx_pushloop_plain # U -cx_pushsub # U -cx_topblock # U -leave_adjust_stacks # U -savetmps # U +CX_CUR # Z added by devel/scanprov +CX_DEBUG # Z added by devel/scanprov +CX_LEAVE_SCOPE # Z added by devel/scanprov +CXp_FOR_GV # Z added by devel/scanprov +CXp_FOR_PAD # Z added by devel/scanprov +CX_POP # Z added by devel/scanprov +cx_popblock # F added by devel/scanprov +cx_popeval # F added by devel/scanprov +cx_popformat # F added by devel/scanprov +cx_poploop # F added by devel/scanprov +CX_POP_SAVEARRAY # Z added by devel/scanprov +cx_popsub # F added by devel/scanprov +cx_popsub_args # F added by devel/scanprov +cx_popsub_common # F added by devel/scanprov +CX_POPSUBST # Z added by devel/scanprov +cx_pushblock # F added by devel/scanprov +cx_pusheval # F added by devel/scanprov +cx_pushformat # F added by devel/scanprov +cx_pushloop_for # F added by devel/scanprov +cx_pushloop_plain # F added by devel/scanprov +cx_pushsub # F added by devel/scanprov +CX_PUSHSUB_GET_LVALUE_MASK # Z added by devel/scanprov +CX_PUSHSUBST # Z added by devel/scanprov +CXt_LOOP_ARY # Z added by devel/scanprov +CXt_LOOP_LIST # Z added by devel/scanprov +cx_topblock # F added by devel/scanprov doeval_compile # F added by devel/scanprov edit_distance # F added by devel/scanprov handle_named_backref # F added by devel/scanprov handle_possible_posix # F added by devel/scanprov +HAS_SIGINFO_SI_ADDR # K added by devel/scanprov +HAS_SIGINFO_SI_BAND # K added by devel/scanprov +HAS_SIGINFO_SI_ERRNO # K added by devel/scanprov +HAS_SIGINFO_SI_PID # K added by devel/scanprov +HAS_SIGINFO_SI_STATUS # K added by devel/scanprov +HAS_SIGINFO_SI_UID # K added by devel/scanprov +HAS_SIGINFO_SI_VALUE # K added by devel/scanprov invlist_contents # F added by devel/scanprov +leave_adjust_stacks # U +PERL_BISON_VERSION # Z added by devel/scanprov +PERL_SMALL_MACRO_BUFFER # Z added by devel/scanprov +PL_dump_re_max_len # Z added by devel/scanprov put_charclass_bitmap_innards_common # F added by devel/scanprov put_charclass_bitmap_innards_invlist # F added by devel/scanprov +savetmps # U +SAVEt_TMPSFLOOR # Z added by devel/scanprov +SET_SVANY_FOR_BODYLESS_IV # Z added by devel/scanprov +SET_SVANY_FOR_BODYLESS_NV # Z added by devel/scanprov +WB_BREAKABLE # Z added by devel/scanprov +WB_DQ_then_HL # Z added by devel/scanprov +WB_HL_then_DQ # Z added by devel/scanprov +WB_hs_then_hs # Z added by devel/scanprov +WB_LE_or_HL_then_MB_or_ML_or_SQ # Z added by devel/scanprov +WB_MB_or_ML_or_SQ_then_LE_or_HL # Z added by devel/scanprov +WB_MB_or_MN_or_SQ_then_NU # Z added by devel/scanprov +WB_NOBREAK # Z added by devel/scanprov +WB_NU_then_MB_or_MN_or_SQ # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5023009 perl-5.34.0/dist/Devel-PPPort/parts/base/5023009 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5023009 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5023009 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,9 @@ 5.023009 +HAS_FREELOCALE # K added by devel/scanprov +HAS_NEWLOCALE # K added by devel/scanprov +HAS_USELOCALE # K added by devel/scanprov +invlist_clear # F added by devel/scanprov +invlist_replace_list_destroys_src # F added by devel/scanprov isALPHANUMERIC_uvchr # U isALPHA_uvchr # U isASCII_uvchr # U @@ -14,18 +19,24 @@ isPUNCT_uvchr # U isSPACE_uvchr # U isUPPER_uvchr # U +isVERTWS_uvchr # Z added by devel/scanprov isWORDCHAR_uvchr # U isXDIGIT_uvchr # U -toFOLD_uvchr # U -toLOWER_uvchr # U -toTITLE_uvchr # U -toUPPER_uvchr # U -invlist_clear # F added by devel/scanprov -invlist_replace_list_destroys_src # F added by devel/scanprov Perl_dtrace_probe_call # F added by devel/scanprov +PERL_DTRACE_PROBE_ENTRY # Z added by devel/scanprov +PERL_DTRACE_PROBE_FILE_LOADED # Z added by devel/scanprov +PERL_DTRACE_PROBE_FILE_LOADING # Z added by devel/scanprov Perl_dtrace_probe_load # F added by devel/scanprov +PERL_DTRACE_PROBE_OP # Z added by devel/scanprov Perl_dtrace_probe_op # F added by devel/scanprov +PERL_DTRACE_PROBE_PHASE # Z added by devel/scanprov Perl_dtrace_probe_phase # F added by devel/scanprov +PERL_DTRACE_PROBE_RETURN # Z added by devel/scanprov +PREGf_RECURSE_SEEN # Z added by devel/scanprov re_exec_indentf # F added by devel/scanprov re_indentf # F added by devel/scanprov re_printf # F added by devel/scanprov +toFOLD_uvchr # U +toLOWER_uvchr # U +toTITLE_uvchr # U +toUPPER_uvchr # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5024000 perl-5.34.0/dist/Devel-PPPort/parts/base/5024000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5024000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5024000 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,9 @@ 5.024000 +HAS_MEMMEM # K added by devel/scanprov +LOCALE_INIT # Z added by devel/scanprov +LOCALE_LOCK # Z added by devel/scanprov +LOCALE_TERM # Z added by devel/scanprov +LOCALE_UNLOCK # Z added by devel/scanprov mem_log_alloc # F added by devel/scanprov mem_log_free # F added by devel/scanprov mem_log_realloc # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5025001 perl-5.34.0/dist/Devel-PPPort/parts/base/5025001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5025001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5025001 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,3 @@ 5.025001 op_parent # U +PERL_OP_PARENT # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5025002 perl-5.34.0/dist/Devel-PPPort/parts/base/5025002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5025002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5025002 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,9 @@ 5.025002 +DEBUG_i # Z added by devel/scanprov +DEBUG_i_FLAG # Z added by devel/scanprov +DEBUG_i_TEST # Z added by devel/scanprov +HAS_STRERROR_L # K added by devel/scanprov _mem_collxfrm # F added by devel/scanprov +PL_in_utf8_COLLATE_locale # Z added by devel/scanprov +PL_strxfrm_is_behaved # Z added by devel/scanprov +PL_strxfrm_max_cp # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5025003 perl-5.34.0/dist/Devel-PPPort/parts/base/5025003 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5025003 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5025003 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,22 @@ 5.025003 +backup_one_GCB # F added by devel/scanprov +DOUBLE_HAS_INF # K added by devel/scanprov +DOUBLE_HAS_NAN # K added by devel/scanprov +DOUBLE_IS_IEEE_FORMAT # Z added by devel/scanprov +DOUBLE_IS_VAX_D_FLOAT # K added by devel/scanprov +DOUBLE_IS_VAX_F_FLOAT # K added by devel/scanprov +DOUBLE_IS_VAX_FLOAT # Z added by devel/scanprov +DOUBLE_IS_VAX_G_FLOAT # K added by devel/scanprov +DOUBLE_VAX_ENDIAN # Z added by devel/scanprov +FEATURE_MYREF_IS_ENABLED # Z added by devel/scanprov +GCB_BREAKABLE # Z added by devel/scanprov +GCB_EX_then_EM # Z added by devel/scanprov +GCB_NOBREAK # Z added by devel/scanprov +GCB_RI_then_RI # Z added by devel/scanprov hv_bucket_ratio # U +LB_CM_ZWJ_foo # Z added by devel/scanprov +LB_RI_then_RI # Z added by devel/scanprov +NV_VAX_ENDIAN # Z added by devel/scanprov WARN_EXPERIMENTAL__DECLARED_REFS # E -backup_one_GCB # F added by devel/scanprov +WB_Ex_or_FO_or_ZWJ_then_foo # Z added by devel/scanprov +WB_RI_then_RI # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5025004 perl-5.34.0/dist/Devel-PPPort/parts/base/5025004 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5025004 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5025004 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,15 @@ 5.025004 alloc_LOGOP # F added by devel/scanprov croak_caller # F added by devel/scanprov +HAS_GAI_STRERROR # K added by devel/scanprov +I_XLOCALE # K added by devel/scanprov +KEY_sigvar # Z added by devel/scanprov +LONG_DOUBLE_IS_VAX_H_FLOAT # K added by devel/scanprov +LONGDOUBLE_VAX_ENDIAN # Z added by devel/scanprov +NV_X86_80_BIT # Z added by devel/scanprov +OPpARGELEM_AV # Z added by devel/scanprov +OPpARGELEM_HV # Z added by devel/scanprov +OPpARGELEM_MASK # Z added by devel/scanprov +OPpARGELEM_SV # Z added by devel/scanprov print_collxfrm_input_and_return # F added by devel/scanprov +USE_THREAD_SAFE_LOCALE # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5025005 perl-5.34.0/dist/Devel-PPPort/parts/base/5025005 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5025005 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5025005 2020-10-04 22:17:12.000000000 +0000 @@ -1,13 +1,25 @@ 5.025005 BOM_UTF8 # E +delimcpy_no_escape # F added by devel/scanprov isC9_STRICT_UTF8_CHAR # U +is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks # Z added by devel/scanprov +is_NONCHAR_utf8_safe # Z added by devel/scanprov isSTRICT_UTF8_CHAR # U +is_STRICT_UTF8_CHAR_utf8_no_length_checks # Z added by devel/scanprov +is_STRICT_UTF8_CHAR_utf8_no_length_checks_part0 # Z added by devel/scanprov +is_STRICT_UTF8_CHAR_utf8_no_length_checks_part1 # Z added by devel/scanprov +is_SURROGATE_utf8_safe # Z added by devel/scanprov isUTF8_CHAR_flags # U +is_utf8_cp_above_31_bits # F added by devel/scanprov is_utf8_invariant_string # U is_utf8_valid_partial_char # U is_utf8_valid_partial_char_flags # U +memGE # Z added by devel/scanprov +memGT # Z added by devel/scanprov +memLE # Z added by devel/scanprov +memLT # Z added by devel/scanprov REPLACEMENT_CHARACTER_UTF8 # E +UNICODE_DISALLOW_ILLEGAL_C9_INTERCHANGE # Z added by devel/scanprov +UNICODE_WARN_ILLEGAL_C9_INTERCHANGE # Z added by devel/scanprov UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE # E UTF8_WARN_ILLEGAL_C9_INTERCHANGE # E -delimcpy_no_escape # F added by devel/scanprov -is_utf8_cp_above_31_bits # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5025006 perl-5.34.0/dist/Devel-PPPort/parts/base/5025006 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5025006 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5025006 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,13 @@ 5.025006 +_byte_dump_string # F added by devel/scanprov +does_utf8_overflow # F added by devel/scanprov +DOUBLE_IS_CRAY_SINGLE_64_BIT # K added by devel/scanprov +DOUBLE_IS_IBM_DOUBLE_64_BIT # K added by devel/scanprov +DOUBLE_IS_IBM_SINGLE_32_BIT # K added by devel/scanprov +dump_regex_sets_structures # F added by devel/scanprov +hv_deletes # Z added by devel/scanprov +hv_existss # Z added by devel/scanprov +hv_name_sets # Z added by devel/scanprov is_c9strict_utf8_string # U is_c9strict_utf8_string_loc # U is_c9strict_utf8_string_loclen # U @@ -8,15 +17,28 @@ is_utf8_fixed_width_buf_flags # U is_utf8_fixed_width_buf_loc_flags # U is_utf8_fixed_width_buf_loclen_flags # U +is_utf8_overlong_given_start_byte_ok # F added by devel/scanprov is_utf8_string_flags # U is_utf8_string_loc_flags # U is_utf8_string_loclen_flags # U +MAX # Z added by devel/scanprov +MIN # Z added by devel/scanprov +OPpAVHVSWITCH_MASK # Z added by devel/scanprov +OPpSPLIT_ASSIGN # Z added by devel/scanprov +OPpSPLIT_LEX # Z added by devel/scanprov +regcp_restore # F added by devel/scanprov SvPVCLEAR # U sv_setpv_bufsize # U -utf8n_to_uvchr_error # U -_byte_dump_string # F added by devel/scanprov -does_utf8_overflow # F added by devel/scanprov -dump_regex_sets_structures # F added by devel/scanprov -is_utf8_overlong_given_start_byte_ok # F added by devel/scanprov -regcp_restore # F added by devel/scanprov unexpected_non_continuation_text # F added by devel/scanprov +UTF8_GOT_ABOVE_31_BIT # Z added by devel/scanprov +UTF8_GOT_CONTINUATION # Z added by devel/scanprov +UTF8_GOT_EMPTY # Z added by devel/scanprov +UTF8_GOT_LONG # Z added by devel/scanprov +UTF8_GOT_NONCHAR # Z added by devel/scanprov +UTF8_GOT_NON_CONTINUATION # Z added by devel/scanprov +UTF8_GOT_OVERFLOW # Z added by devel/scanprov +UTF8_GOT_SHORT # Z added by devel/scanprov +UTF8_GOT_SUPER # Z added by devel/scanprov +UTF8_GOT_SURROGATE # Z added by devel/scanprov +utf8n_to_uvchr_error # U +YYDEBUG # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5025007 perl-5.34.0/dist/Devel-PPPort/parts/base/5025007 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5025007 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5025007 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,13 @@ 5.025007 CLEAR_ERRSV # E +CxEVAL_TXT_REFCNTED # Z added by devel/scanprov +DOUBLE_HAS_NEGATIVE_ZERO # K added by devel/scanprov +DOUBLE_HAS_SUBNORMALS # K added by devel/scanprov +DOUBLE_STYLE_IEEE # K added by devel/scanprov +isFF_OVERLONG # F added by devel/scanprov +LONG_DOUBLE_STYLE_IEEE # K added by devel/scanprov +LONG_DOUBLE_STYLE_IEEE_EXTENDED # K added by devel/scanprov +PL_curpm_under # Z added by devel/scanprov utf8_hop_back # U utf8_hop_forward # U utf8_hop_safe # U -isFF_OVERLONG # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5025008 perl-5.34.0/dist/Devel-PPPort/parts/base/5025008 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5025008 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5025008 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,10 @@ 5.025008 +is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks_part0 # Z added by devel/scanprov +is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks_part1 # Z added by devel/scanprov +is_MULTI_CHAR_FOLD_utf8_safe_part2 # Z added by devel/scanprov +is_MULTI_CHAR_FOLD_utf8_safe_part3 # Z added by devel/scanprov +is_STRICT_UTF8_CHAR_utf8_no_length_checks_part2 # Z added by devel/scanprov +is_STRICT_UTF8_CHAR_utf8_no_length_checks_part3 # Z added by devel/scanprov +PERL_SIPHASH_FNC # Z added by devel/scanprov +PL_strxfrm_NUL_replacement # Z added by devel/scanprov sv_set_undef # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5025009 perl-5.34.0/dist/Devel-PPPort/parts/base/5025009 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5025009 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5025009 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,7 @@ 5.025009 +deprecate_disappears_in # Z added by devel/scanprov +deprecate_fatal_in # Z added by devel/scanprov +_force_out_malformed_utf8_message # F added by devel/scanprov isALPHA_LC_utf8_safe # U isALPHANUMERIC_LC_utf8_safe # U isALPHANUMERIC_utf8_safe # U @@ -15,6 +18,7 @@ isGRAPH_utf8_safe # U isIDCONT_LC_utf8_safe # U isIDCONT_utf8_safe # U +isIDFIRST_lazy_if_safe # Z added by devel/scanprov isIDFIRST_LC_utf8_safe # U isIDFIRST_utf8_safe # U isLOWER_LC_utf8_safe # U @@ -29,13 +33,17 @@ isSPACE_utf8_safe # U isUPPER_LC_utf8_safe # U isUPPER_utf8_safe # U +isVERTWS_utf8_safe # Z added by devel/scanprov +isWORDCHAR_lazy_if_safe # Z added by devel/scanprov isWORDCHAR_LC_utf8_safe # U isWORDCHAR_utf8_safe # U isXDIGIT_LC_utf8_safe # U isXDIGIT_utf8_safe # U +PL_Assigned_invlist # Z added by devel/scanprov toFOLD_utf8_safe # U toLOWER_utf8_safe # U toTITLE_utf8_safe # U toUPPER_utf8_safe # U -_force_out_malformed_utf8_message # F added by devel/scanprov +UTF8_ALLOW_LONG_AND_ITS_VALUE # Z added by devel/scanprov +UTF8_ALLOW_OVERFLOW # Z added by devel/scanprov warn_on_first_deprecated_use # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5025010 perl-5.34.0/dist/Devel-PPPort/parts/base/5025010 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5025010 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5025010 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,12 @@ 5.025010 -op_class # E abort_execution # F added by devel/scanprov +av_tindex_skip_len_mg # Z added by devel/scanprov +av_top_index_skip_len_mg # Z added by devel/scanprov +EVAL_B # Z added by devel/scanprov +EVAL_B_fail # Z added by devel/scanprov +EVAL_postponed_AB # Z added by devel/scanprov +EVAL_postponed_AB_fail # Z added by devel/scanprov notify_parser_that_changed_to_utf8 # F added by devel/scanprov +op_class # E +PMf_HAS_ERROR # Z added by devel/scanprov yyquit # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5025011 perl-5.34.0/dist/Devel-PPPort/parts/base/5025011 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5025011 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5025011 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,2 @@ 5.025011 +DEFAULT_INC_EXCLUDES_DOT # K added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5025012 perl-5.34.0/dist/Devel-PPPort/parts/base/5025012 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5025012 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5025012 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,2 @@ 5.025012 +PERL_UTIL_H # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5027001 perl-5.34.0/dist/Devel-PPPort/parts/base/5027001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5027001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5027001 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,334 @@ 5.027001 bytes_from_utf8_loc # U +CAN64BITHASH # Z added by devel/scanprov +case_100_SBOX32 # Z added by devel/scanprov +case_101_SBOX32 # Z added by devel/scanprov +case_102_SBOX32 # Z added by devel/scanprov +case_103_SBOX32 # Z added by devel/scanprov +case_104_SBOX32 # Z added by devel/scanprov +case_105_SBOX32 # Z added by devel/scanprov +case_106_SBOX32 # Z added by devel/scanprov +case_107_SBOX32 # Z added by devel/scanprov +case_108_SBOX32 # Z added by devel/scanprov +case_109_SBOX32 # Z added by devel/scanprov +case_10_SBOX32 # Z added by devel/scanprov +case_110_SBOX32 # Z added by devel/scanprov +case_111_SBOX32 # Z added by devel/scanprov +case_112_SBOX32 # Z added by devel/scanprov +case_113_SBOX32 # Z added by devel/scanprov +case_114_SBOX32 # Z added by devel/scanprov +case_115_SBOX32 # Z added by devel/scanprov +case_116_SBOX32 # Z added by devel/scanprov +case_117_SBOX32 # Z added by devel/scanprov +case_118_SBOX32 # Z added by devel/scanprov +case_119_SBOX32 # Z added by devel/scanprov +case_11_SBOX32 # Z added by devel/scanprov +case_120_SBOX32 # Z added by devel/scanprov +case_121_SBOX32 # Z added by devel/scanprov +case_122_SBOX32 # Z added by devel/scanprov +case_123_SBOX32 # Z added by devel/scanprov +case_124_SBOX32 # Z added by devel/scanprov +case_125_SBOX32 # Z added by devel/scanprov +case_126_SBOX32 # Z added by devel/scanprov +case_127_SBOX32 # Z added by devel/scanprov +case_128_SBOX32 # Z added by devel/scanprov +case_129_SBOX32 # Z added by devel/scanprov +case_12_SBOX32 # Z added by devel/scanprov +case_130_SBOX32 # Z added by devel/scanprov +case_131_SBOX32 # Z added by devel/scanprov +case_132_SBOX32 # Z added by devel/scanprov +case_133_SBOX32 # Z added by devel/scanprov +case_134_SBOX32 # Z added by devel/scanprov +case_135_SBOX32 # Z added by devel/scanprov +case_136_SBOX32 # Z added by devel/scanprov +case_137_SBOX32 # Z added by devel/scanprov +case_138_SBOX32 # Z added by devel/scanprov +case_139_SBOX32 # Z added by devel/scanprov +case_13_SBOX32 # Z added by devel/scanprov +case_140_SBOX32 # Z added by devel/scanprov +case_141_SBOX32 # Z added by devel/scanprov +case_142_SBOX32 # Z added by devel/scanprov +case_143_SBOX32 # Z added by devel/scanprov +case_144_SBOX32 # Z added by devel/scanprov +case_145_SBOX32 # Z added by devel/scanprov +case_146_SBOX32 # Z added by devel/scanprov +case_147_SBOX32 # Z added by devel/scanprov +case_148_SBOX32 # Z added by devel/scanprov +case_149_SBOX32 # Z added by devel/scanprov +case_14_SBOX32 # Z added by devel/scanprov +case_150_SBOX32 # Z added by devel/scanprov +case_151_SBOX32 # Z added by devel/scanprov +case_152_SBOX32 # Z added by devel/scanprov +case_153_SBOX32 # Z added by devel/scanprov +case_154_SBOX32 # Z added by devel/scanprov +case_155_SBOX32 # Z added by devel/scanprov +case_156_SBOX32 # Z added by devel/scanprov +case_157_SBOX32 # Z added by devel/scanprov +case_158_SBOX32 # Z added by devel/scanprov +case_159_SBOX32 # Z added by devel/scanprov +case_15_SBOX32 # Z added by devel/scanprov +case_160_SBOX32 # Z added by devel/scanprov +case_161_SBOX32 # Z added by devel/scanprov +case_162_SBOX32 # Z added by devel/scanprov +case_163_SBOX32 # Z added by devel/scanprov +case_164_SBOX32 # Z added by devel/scanprov +case_165_SBOX32 # Z added by devel/scanprov +case_166_SBOX32 # Z added by devel/scanprov +case_167_SBOX32 # Z added by devel/scanprov +case_168_SBOX32 # Z added by devel/scanprov +case_169_SBOX32 # Z added by devel/scanprov +case_16_SBOX32 # Z added by devel/scanprov +case_170_SBOX32 # Z added by devel/scanprov +case_171_SBOX32 # Z added by devel/scanprov +case_172_SBOX32 # Z added by devel/scanprov +case_173_SBOX32 # Z added by devel/scanprov +case_174_SBOX32 # Z added by devel/scanprov +case_175_SBOX32 # Z added by devel/scanprov +case_176_SBOX32 # Z added by devel/scanprov +case_177_SBOX32 # Z added by devel/scanprov +case_178_SBOX32 # Z added by devel/scanprov +case_179_SBOX32 # Z added by devel/scanprov +case_17_SBOX32 # Z added by devel/scanprov +case_180_SBOX32 # Z added by devel/scanprov +case_181_SBOX32 # Z added by devel/scanprov +case_182_SBOX32 # Z added by devel/scanprov +case_183_SBOX32 # Z added by devel/scanprov +case_184_SBOX32 # Z added by devel/scanprov +case_185_SBOX32 # Z added by devel/scanprov +case_186_SBOX32 # Z added by devel/scanprov +case_187_SBOX32 # Z added by devel/scanprov +case_188_SBOX32 # Z added by devel/scanprov +case_189_SBOX32 # Z added by devel/scanprov +case_18_SBOX32 # Z added by devel/scanprov +case_190_SBOX32 # Z added by devel/scanprov +case_191_SBOX32 # Z added by devel/scanprov +case_192_SBOX32 # Z added by devel/scanprov +case_193_SBOX32 # Z added by devel/scanprov +case_194_SBOX32 # Z added by devel/scanprov +case_195_SBOX32 # Z added by devel/scanprov +case_196_SBOX32 # Z added by devel/scanprov +case_197_SBOX32 # Z added by devel/scanprov +case_198_SBOX32 # Z added by devel/scanprov +case_199_SBOX32 # Z added by devel/scanprov +case_19_SBOX32 # Z added by devel/scanprov +case_1_SBOX32 # Z added by devel/scanprov +case_200_SBOX32 # Z added by devel/scanprov +case_201_SBOX32 # Z added by devel/scanprov +case_202_SBOX32 # Z added by devel/scanprov +case_203_SBOX32 # Z added by devel/scanprov +case_204_SBOX32 # Z added by devel/scanprov +case_205_SBOX32 # Z added by devel/scanprov +case_206_SBOX32 # Z added by devel/scanprov +case_207_SBOX32 # Z added by devel/scanprov +case_208_SBOX32 # Z added by devel/scanprov +case_209_SBOX32 # Z added by devel/scanprov +case_20_SBOX32 # Z added by devel/scanprov +case_210_SBOX32 # Z added by devel/scanprov +case_211_SBOX32 # Z added by devel/scanprov +case_212_SBOX32 # Z added by devel/scanprov +case_213_SBOX32 # Z added by devel/scanprov +case_214_SBOX32 # Z added by devel/scanprov +case_215_SBOX32 # Z added by devel/scanprov +case_216_SBOX32 # Z added by devel/scanprov +case_217_SBOX32 # Z added by devel/scanprov +case_218_SBOX32 # Z added by devel/scanprov +case_219_SBOX32 # Z added by devel/scanprov +case_21_SBOX32 # Z added by devel/scanprov +case_220_SBOX32 # Z added by devel/scanprov +case_221_SBOX32 # Z added by devel/scanprov +case_222_SBOX32 # Z added by devel/scanprov +case_223_SBOX32 # Z added by devel/scanprov +case_224_SBOX32 # Z added by devel/scanprov +case_225_SBOX32 # Z added by devel/scanprov +case_226_SBOX32 # Z added by devel/scanprov +case_227_SBOX32 # Z added by devel/scanprov +case_228_SBOX32 # Z added by devel/scanprov +case_229_SBOX32 # Z added by devel/scanprov +case_22_SBOX32 # Z added by devel/scanprov +case_230_SBOX32 # Z added by devel/scanprov +case_231_SBOX32 # Z added by devel/scanprov +case_232_SBOX32 # Z added by devel/scanprov +case_233_SBOX32 # Z added by devel/scanprov +case_234_SBOX32 # Z added by devel/scanprov +case_235_SBOX32 # Z added by devel/scanprov +case_236_SBOX32 # Z added by devel/scanprov +case_237_SBOX32 # Z added by devel/scanprov +case_238_SBOX32 # Z added by devel/scanprov +case_239_SBOX32 # Z added by devel/scanprov +case_23_SBOX32 # Z added by devel/scanprov +case_240_SBOX32 # Z added by devel/scanprov +case_241_SBOX32 # Z added by devel/scanprov +case_242_SBOX32 # Z added by devel/scanprov +case_243_SBOX32 # Z added by devel/scanprov +case_244_SBOX32 # Z added by devel/scanprov +case_245_SBOX32 # Z added by devel/scanprov +case_246_SBOX32 # Z added by devel/scanprov +case_247_SBOX32 # Z added by devel/scanprov +case_248_SBOX32 # Z added by devel/scanprov +case_249_SBOX32 # Z added by devel/scanprov +case_24_SBOX32 # Z added by devel/scanprov +case_250_SBOX32 # Z added by devel/scanprov +case_251_SBOX32 # Z added by devel/scanprov +case_252_SBOX32 # Z added by devel/scanprov +case_253_SBOX32 # Z added by devel/scanprov +case_254_SBOX32 # Z added by devel/scanprov +case_255_SBOX32 # Z added by devel/scanprov +case_256_SBOX32 # Z added by devel/scanprov +case_25_SBOX32 # Z added by devel/scanprov +case_26_SBOX32 # Z added by devel/scanprov +case_27_SBOX32 # Z added by devel/scanprov +case_28_SBOX32 # Z added by devel/scanprov +case_29_SBOX32 # Z added by devel/scanprov +case_2_SBOX32 # Z added by devel/scanprov +case_30_SBOX32 # Z added by devel/scanprov +case_31_SBOX32 # Z added by devel/scanprov +case_32_SBOX32 # Z added by devel/scanprov +case_33_SBOX32 # Z added by devel/scanprov +case_34_SBOX32 # Z added by devel/scanprov +case_35_SBOX32 # Z added by devel/scanprov +case_36_SBOX32 # Z added by devel/scanprov +case_37_SBOX32 # Z added by devel/scanprov +case_38_SBOX32 # Z added by devel/scanprov +case_39_SBOX32 # Z added by devel/scanprov +case_3_SBOX32 # Z added by devel/scanprov +case_40_SBOX32 # Z added by devel/scanprov +case_41_SBOX32 # Z added by devel/scanprov +case_42_SBOX32 # Z added by devel/scanprov +case_43_SBOX32 # Z added by devel/scanprov +case_44_SBOX32 # Z added by devel/scanprov +case_45_SBOX32 # Z added by devel/scanprov +case_46_SBOX32 # Z added by devel/scanprov +case_47_SBOX32 # Z added by devel/scanprov +case_48_SBOX32 # Z added by devel/scanprov +case_49_SBOX32 # Z added by devel/scanprov +case_4_SBOX32 # Z added by devel/scanprov +case_50_SBOX32 # Z added by devel/scanprov +case_51_SBOX32 # Z added by devel/scanprov +case_52_SBOX32 # Z added by devel/scanprov +case_53_SBOX32 # Z added by devel/scanprov +case_54_SBOX32 # Z added by devel/scanprov +case_55_SBOX32 # Z added by devel/scanprov +case_56_SBOX32 # Z added by devel/scanprov +case_57_SBOX32 # Z added by devel/scanprov +case_58_SBOX32 # Z added by devel/scanprov +case_59_SBOX32 # Z added by devel/scanprov +case_5_SBOX32 # Z added by devel/scanprov +case_60_SBOX32 # Z added by devel/scanprov +case_61_SBOX32 # Z added by devel/scanprov +case_62_SBOX32 # Z added by devel/scanprov +case_63_SBOX32 # Z added by devel/scanprov +case_64_SBOX32 # Z added by devel/scanprov +case_65_SBOX32 # Z added by devel/scanprov +case_66_SBOX32 # Z added by devel/scanprov +case_67_SBOX32 # Z added by devel/scanprov +case_68_SBOX32 # Z added by devel/scanprov +case_69_SBOX32 # Z added by devel/scanprov +case_6_SBOX32 # Z added by devel/scanprov +case_70_SBOX32 # Z added by devel/scanprov +case_71_SBOX32 # Z added by devel/scanprov +case_72_SBOX32 # Z added by devel/scanprov +case_73_SBOX32 # Z added by devel/scanprov +case_74_SBOX32 # Z added by devel/scanprov +case_75_SBOX32 # Z added by devel/scanprov +case_76_SBOX32 # Z added by devel/scanprov +case_77_SBOX32 # Z added by devel/scanprov +case_78_SBOX32 # Z added by devel/scanprov +case_79_SBOX32 # Z added by devel/scanprov +case_7_SBOX32 # Z added by devel/scanprov +case_80_SBOX32 # Z added by devel/scanprov +case_81_SBOX32 # Z added by devel/scanprov +case_82_SBOX32 # Z added by devel/scanprov +case_83_SBOX32 # Z added by devel/scanprov +case_84_SBOX32 # Z added by devel/scanprov +case_85_SBOX32 # Z added by devel/scanprov +case_86_SBOX32 # Z added by devel/scanprov +case_87_SBOX32 # Z added by devel/scanprov +case_88_SBOX32 # Z added by devel/scanprov +case_89_SBOX32 # Z added by devel/scanprov +case_8_SBOX32 # Z added by devel/scanprov +case_90_SBOX32 # Z added by devel/scanprov +case_91_SBOX32 # Z added by devel/scanprov +case_92_SBOX32 # Z added by devel/scanprov +case_93_SBOX32 # Z added by devel/scanprov +case_94_SBOX32 # Z added by devel/scanprov +case_95_SBOX32 # Z added by devel/scanprov +case_96_SBOX32 # Z added by devel/scanprov +case_97_SBOX32 # Z added by devel/scanprov +case_98_SBOX32 # Z added by devel/scanprov +case_99_SBOX32 # Z added by devel/scanprov +case_9_SBOX32 # Z added by devel/scanprov +DEBUG_SBOX32_HASH # Z added by devel/scanprov +DEBUG_STADTX_HASH # Z added by devel/scanprov +DEBUG_ZAPHOD32_HASH # Z added by devel/scanprov is_utf8_invariant_string_loc # U +LVf_NEG_LEN # Z added by devel/scanprov +LVf_NEG_OFF # Z added by devel/scanprov +LVf_OUT_OF_RANGE # Z added by devel/scanprov new_regcurly # F added by devel/scanprov +NOTE3 # Z added by devel/scanprov +OPpKVSLICE # Z added by devel/scanprov +PERL_EBCDIC_TABLES_H # Z added by devel/scanprov +PERL_HANDY_H # Z added by devel/scanprov +PERL_HASH_FUNC_STADTX # Z added by devel/scanprov +PERL_HASH_FUNC_ZAPHOD32 # Z added by devel/scanprov +PERL_HASH_SEED_STATE # Z added by devel/scanprov +PERL_HASH_STATE_BYTES # Z added by devel/scanprov +PERL_HASH_USE_SBOX32_ALSO # Z added by devel/scanprov +PERL_HASH_WITH_STATE # Z added by devel/scanprov +PERLIO_H # Z added by devel/scanprov +PERLIOL_H # Z added by devel/scanprov +PERL_MALLOC_CTL_H # Z added by devel/scanprov +PERL_REENTR_H # Z added by devel/scanprov +PERL_REGCHARCLASS_H # Z added by devel/scanprov +PERL_SEEN_HV_MACRO_H # Z added by devel/scanprov +PERL_TIME64_CONFIG_H # Z added by devel/scanprov +PERL_TIME64_H # Z added by devel/scanprov +PERL_UNICODE_CONSTANTS_H # Z added by devel/scanprov +PERL_UTF8_H # Z added by devel/scanprov +PERL_XSUB_H # Z added by devel/scanprov +ROTR32 # Z added by devel/scanprov +ROTR64 # Z added by devel/scanprov +ROTR_UV # Z added by devel/scanprov +SBOX32_CHURN_ROUNDS # Z added by devel/scanprov +SBOX32_MAX_LEN # Z added by devel/scanprov +SBOX32_MIX3 # Z added by devel/scanprov +SBOX32_MIX4 # Z added by devel/scanprov +SBOX32_SCRAMBLE32 # Z added by devel/scanprov +SBOX32_SKIP_MASK # Z added by devel/scanprov +SBOX32_STATE_BITS # Z added by devel/scanprov +SBOX32_STATE_BYTES # Z added by devel/scanprov +SBOX32_STATE_WORDS # Z added by devel/scanprov +SBOX32_STATIC_INLINE # Z added by devel/scanprov +SBOX32_WARN2 # Z added by devel/scanprov +SBOX32_WARN3 # Z added by devel/scanprov +SBOX32_WARN4 # Z added by devel/scanprov +SBOX32_WARN5 # Z added by devel/scanprov +SBOX32_WARN6 # Z added by devel/scanprov +SIPHASH_SEED_STATE # Z added by devel/scanprov +STADTX_HASH_H # Z added by devel/scanprov +STADTX_K0_U64 # Z added by devel/scanprov +STADTX_K1_U64 # Z added by devel/scanprov +STADTX_K2_U32 # Z added by devel/scanprov +STADTX_K2_U64 # Z added by devel/scanprov +STADTX_K3_U32 # Z added by devel/scanprov +STADTX_K3_U64 # Z added by devel/scanprov +STADTX_K4_U32 # Z added by devel/scanprov +STADTX_K5_U32 # Z added by devel/scanprov +STADTX_SCRAMBLE64 # Z added by devel/scanprov +STADTX_STATIC_INLINE # Z added by devel/scanprov +STATIC_ASSERT_DECL # Z added by devel/scanprov +STRLEN # Z added by devel/scanprov +U16 # Z added by devel/scanprov +U32 # Z added by devel/scanprov +U8 # Z added by devel/scanprov +XORSHIFT128_set # Z added by devel/scanprov +XORSHIFT96_set # Z added by devel/scanprov +ZAPHOD32_FINALIZE # Z added by devel/scanprov +ZAPHOD32_MIX # Z added by devel/scanprov +ZAPHOD32_SCRAMBLE32 # Z added by devel/scanprov +ZAPHOD32_STATIC_INLINE # Z added by devel/scanprov +ZAPHOD32_WARN2 # Z added by devel/scanprov +ZAPHOD32_WARN3 # Z added by devel/scanprov +ZAPHOD32_WARN4 # Z added by devel/scanprov +ZAPHOD32_WARN5 # Z added by devel/scanprov +ZAPHOD32_WARN6 # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5027002 perl-5.34.0/dist/Devel-PPPort/parts/base/5027002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5027002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5027002 2020-10-04 22:17:12.000000000 +0000 @@ -1,7 +1,17 @@ 5.027002 -Perl_setlocale # U -UTF8_DISALLOW_PERL_EXTENDED # E -UTF8_WARN_PERL_EXTENDED # E +EXTEND_HWM_SET # Z added by devel/scanprov +EXTEND_SKIP # Z added by devel/scanprov hv_free_entries # F added by devel/scanprov +JE_OLD_STACK_HWM_restore # Z added by devel/scanprov +JE_OLD_STACK_HWM_save # Z added by devel/scanprov +JE_OLD_STACK_HWM_zero # Z added by devel/scanprov +Perl_setlocale # U print_bytes_for_locale # F added by devel/scanprov +PUSHSTACK_INIT_HWM # Z added by devel/scanprov setlocale_debug_string # F added by devel/scanprov +UNICODE_DISALLOW_PERL_EXTENDED # Z added by devel/scanprov +UNICODE_IS_PERL_EXTENDED # Z added by devel/scanprov +UNICODE_WARN_PERL_EXTENDED # Z added by devel/scanprov +UTF8_DISALLOW_PERL_EXTENDED # E +UTF8_GOT_PERL_EXTENDED # Z added by devel/scanprov +UTF8_WARN_PERL_EXTENDED # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5027003 perl-5.34.0/dist/Devel-PPPort/parts/base/5027003 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5027003 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5027003 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,31 @@ 5.027003 cv_get_call_checker_flags # U +HAS_POSIX_2008_LOCALE # Z added by devel/scanprov +hv_pushkv # F added by devel/scanprov +OPpASSIGN_TRUEBOOL # Z added by devel/scanprov +OPpINDEX_BOOLNEG # Z added by devel/scanprov +OPpPADHV_ISKEYS # Z added by devel/scanprov +OPpRV2HV_ISKEYS # Z added by devel/scanprov +PL_sv_immortals # Z added by devel/scanprov PL_sv_zero # E +RXp_ENGINE # Z added by devel/scanprov +RXp_GOFS # Z added by devel/scanprov +RXp_HAS_CUTGROUP # Z added by devel/scanprov +RXp_ISTAINTED # Z added by devel/scanprov +RXp_MATCH_COPY_FREE # Z added by devel/scanprov +RXp_MATCH_TAINTED_off # Z added by devel/scanprov +RXp_MATCH_UTF8_off # Z added by devel/scanprov +RXp_MATCH_UTF8_on # Z added by devel/scanprov +RXp_MATCH_UTF8_set # Z added by devel/scanprov +RXp_MINLEN # Z added by devel/scanprov +RXp_MINLENRET # Z added by devel/scanprov +RXp_NPARENS # Z added by devel/scanprov +RXp_OFFS # Z added by devel/scanprov +RXp_SAVED_COPY # Z added by devel/scanprov +RXp_SUBBEG # Z added by devel/scanprov +RXp_SUBOFFSET # Z added by devel/scanprov +RXp_ZERO_LEN # Z added by devel/scanprov +SvIMMORTAL_INTERP # Z added by devel/scanprov +SvIMMORTAL_TRUE # Z added by devel/scanprov sv_string_from_errnum # U -hv_pushkv # F added by devel/scanprov +USE_POSIX_2008_LOCALE # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5027004 perl-5.34.0/dist/Devel-PPPort/parts/base/5027004 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5027004 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5027004 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,19 @@ 5.027004 +HAS_FCHMODAT # K added by devel/scanprov +HAS_LINKAT # K added by devel/scanprov +HAS_OPENAT # K added by devel/scanprov +HAS_RENAMEAT # K added by devel/scanprov +HAS_UNLINKAT # K added by devel/scanprov +HINT_SORT_UNSTABLE # Z added by devel/scanprov mg_freeext # U +OPpSORT_UNSTABLE # Z added by devel/scanprov +perl_assert_ptr # Z added by devel/scanprov +Perl_internal_drand48 # Z added by devel/scanprov Perl_langinfo # U -sv_rvunweaken # U -Perl_my_mkstemp # F added by devel/scanprov +PERL_LANGINFO_H # Z added by devel/scanprov +Perl_my_mkstemp # Z added by devel/scanprov +PL_internal_random_state # Z added by devel/scanprov +PL_langinfo_buf # Z added by devel/scanprov +PL_langinfo_bufsize # Z added by devel/scanprov save_to_buffer # F added by devel/scanprov +sv_rvunweaken # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5027005 perl-5.34.0/dist/Devel-PPPort/parts/base/5027005 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5027005 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5027005 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,3 @@ 5.027005 +HAS_MEMRCHR # K added by devel/scanprov +isGV_or_RVCV # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5027006 perl-5.34.0/dist/Devel-PPPort/parts/base/5027006 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5027006 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5027006 2020-10-04 22:17:12.000000000 +0000 @@ -1,10 +1,53 @@ 5.027006 -my_strnlen # U -wrap_keyword_plugin # U +DEFINE_INC_MACROS # Z added by devel/scanprov +HAS_MBRLEN # K added by devel/scanprov +HAS_MBRTOWC # K added by devel/scanprov +HAS_NANOSLEEP # K added by devel/scanprov +HAS_STRNLEN # K added by devel/scanprov +HAS_STRTOLD_L # K added by devel/scanprov +HAS_THREAD_SAFE_NL_LANGINFO_L # K added by devel/scanprov +INCPUSH_APPLLIB_EXP # Z added by devel/scanprov +INCPUSH_APPLLIB_OLD_EXP # Z added by devel/scanprov +INCPUSH_ARCHLIB_EXP # Z added by devel/scanprov +INCPUSH_PERL5LIB # Z added by devel/scanprov +INCPUSH_PERL_OTHERLIBDIRS # Z added by devel/scanprov +INCPUSH_PERL_OTHERLIBDIRS_ARCHONLY # Z added by devel/scanprov +INCPUSH_PERL_VENDORARCH_EXP # Z added by devel/scanprov +INCPUSH_PERL_VENDORLIB_EXP # Z added by devel/scanprov +INCPUSH_PERL_VENDORLIB_STEM # Z added by devel/scanprov +INCPUSH_PRIVLIB_EXP # Z added by devel/scanprov +INCPUSH_SITEARCH_EXP # Z added by devel/scanprov +INCPUSH_SITELIB_EXP # Z added by devel/scanprov +INCPUSH_SITELIB_STEM # Z added by devel/scanprov +I_WCHAR # K added by devel/scanprov +KEYWORD_PLUGIN_MUTEX_INIT # Z added by devel/scanprov +KEYWORD_PLUGIN_MUTEX_LOCK # Z added by devel/scanprov +KEYWORD_PLUGIN_MUTEX_TERM # Z added by devel/scanprov +KEYWORD_PLUGIN_MUTEX_UNLOCK # Z added by devel/scanprov +MAX_UNICODE_UTF8 # Z added by devel/scanprov +memBEGINPs # Z added by devel/scanprov +memBEGINs # Z added by devel/scanprov +memENDPs # Z added by devel/scanprov +memENDs # Z added by devel/scanprov multiconcat_stringify # F added by devel/scanprov -my_memrchr # F added by devel/scanprov +my_memrchr # Z added by devel/scanprov my_nl_langinfo # F added by devel/scanprov +my_strnlen # U +OPpMULTICONCAT_APPEND # Z added by devel/scanprov +OPpMULTICONCAT_FAKE # Z added by devel/scanprov +OPpMULTICONCAT_STRINGIFY # Z added by devel/scanprov optimize_op # F added by devel/scanprov optimize_optree # F added by devel/scanprov +PERL_MULTICONCAT_HEADER_SIZE # Z added by devel/scanprov +PERL_MULTICONCAT_IX_LENGTHS # Z added by devel/scanprov +PERL_MULTICONCAT_IX_NARGS # Z added by devel/scanprov +PERL_MULTICONCAT_IX_PLAIN_LEN # Z added by devel/scanprov +PERL_MULTICONCAT_IX_PLAIN_PV # Z added by devel/scanprov +PERL_MULTICONCAT_IX_UTF8_LEN # Z added by devel/scanprov +PERL_MULTICONCAT_IX_UTF8_PV # Z added by devel/scanprov +PERL_MULTICONCAT_MAXARG # Z added by devel/scanprov +PL_numeric_underlying # Z added by devel/scanprov set_numeric_underlying # F added by devel/scanprov +strBEGINs # Z added by devel/scanprov win32_setlocale # F added by devel/scanprov +wrap_keyword_plugin # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5027007 perl-5.34.0/dist/Devel-PPPort/parts/base/5027007 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5027007 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5027007 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,21 @@ 5.027007 -WARN_SHADOW # E +CLANG_DIAG_IGNORE_DECL # Z added by devel/scanprov +CLANG_DIAG_IGNORE_STMT # Z added by devel/scanprov +CLANG_DIAG_RESTORE_DECL # Z added by devel/scanprov +CLANG_DIAG_RESTORE_STMT # Z added by devel/scanprov +FIRST_NON_ASCII_DECIMAL_DIGIT # Z added by devel/scanprov +GCC_DIAG_IGNORE_DECL # Z added by devel/scanprov +GCC_DIAG_IGNORE_STMT # Z added by devel/scanprov +GCC_DIAG_RESTORE_DECL # Z added by devel/scanprov +GCC_DIAG_RESTORE_STMT # Z added by devel/scanprov is_utf8_non_invariant_string # F added by devel/scanprov +OPpCONCAT_NESTED # Z added by devel/scanprov +PERL_COUNT_MULTIPLIER # Z added by devel/scanprov +PERL_IS_SUBWORD_ADDR # Z added by devel/scanprov +PERL_VARIANTS_WORD_MASK # Z added by devel/scanprov +PERL_WORD_BOUNDARY_MASK # Z added by devel/scanprov +PERL_WORDSIZE # Z added by devel/scanprov +UINT16_C # Z added by devel/scanprov +UINT32_C # Z added by devel/scanprov variant_under_utf8_count # F added by devel/scanprov +WARN_SHADOW # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5027008 perl-5.34.0/dist/Devel-PPPort/parts/base/5027008 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5027008 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5027008 2020-10-04 22:17:12.000000000 +0000 @@ -1,33 +1,53 @@ 5.027008 -cx_popgiven # U -cx_popwhen # U -cx_pushgiven # U -cx_pushwhen # U -newWHENOP # U -WARN_EXPERIMENTAL__SCRIPT_RUN # E +blk_givwhen # Z added by devel/scanprov category_name # F added by devel/scanprov +CXp_FOR_DEF # Z added by devel/scanprov +cx_popgiven # F added by devel/scanprov +cx_popwhen # F added by devel/scanprov +cx_pushgiven # F added by devel/scanprov +cx_pushwhen # F added by devel/scanprov +CXt_GIVEN # Z added by devel/scanprov +CXt_WHEN # Z added by devel/scanprov +DEBUG_M # Z added by devel/scanprov +DEBUG_M_FLAG # Z added by devel/scanprov +DEBUG_M_TEST # Z added by devel/scanprov destroy_matcher # F added by devel/scanprov dopoptogivenfor # F added by devel/scanprov dopoptowhen # F added by devel/scanprov do_smartmatch # F added by devel/scanprov +FEATURE_BUNDLE_527 # Z added by devel/scanprov +HAS_ACCEPT4 # K added by devel/scanprov +HAS_DUP3 # K added by devel/scanprov +HAS_MKOSTEMP # K added by devel/scanprov +HAS_PIPE2 # K added by devel/scanprov +HAS_SCX_AUX_TABLES # Z added by devel/scanprov isSCRIPT_RUN # F added by devel/scanprov +KEY_break # Z added by devel/scanprov +KEY_default # Z added by devel/scanprov +KEY_when # Z added by devel/scanprov looks_like_bool # F added by devel/scanprov make_matcher # F added by devel/scanprov matcher_matches_sv # F added by devel/scanprov newGIVWHENOP # F added by devel/scanprov +newWHENOP # U +OPpITER_DEF # Z added by devel/scanprov PerlLIO_dup2_cloexec # F added by devel/scanprov PerlLIO_dup_cloexec # F added by devel/scanprov PerlLIO_open3_cloexec # F added by devel/scanprov PerlLIO_open_cloexec # F added by devel/scanprov -Perl_my_mkostemp # F added by devel/scanprov +Perl_my_mkostemp # Z added by devel/scanprov Perl_my_mkstemp_cloexec # F added by devel/scanprov PerlProc_pipe_cloexec # F added by devel/scanprov PerlSock_accept_cloexec # F added by devel/scanprov PerlSock_socket_cloexec # F added by devel/scanprov PerlSock_socketpair_cloexec # F added by devel/scanprov +PL_SCX_invlist # Z added by devel/scanprov ref_array_or_hash # F added by devel/scanprov setfd_cloexec # F added by devel/scanprov setfd_cloexec_for_nonsysfd # F added by devel/scanprov setfd_cloexec_or_inhexec_by_sysfdness # F added by devel/scanprov setfd_inhexec # F added by devel/scanprov setfd_inhexec_for_sysfd # F added by devel/scanprov +SRCLOSE # Z added by devel/scanprov +SROPEN # Z added by devel/scanprov +WARN_EXPERIMENTAL__SCRIPT_RUN # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5027009 perl-5.34.0/dist/Devel-PPPort/parts/base/5027009 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5027009 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5027009 2020-10-04 22:17:12.000000000 +0000 @@ -1,20 +1,47 @@ 5.027009 -PERL_MAGIC_nonelem # E -switch_to_global_locale # U -sync_locale # E (Perl_sync_locale) -thread_locale_init # U -thread_locale_term # U -utf8n_to_uvchr_msgs # U -uvchr_to_utf8_flags_msgs # U -WARN_EXPERIMENTAL__ALPHA_ASSERTIONS # E +ANYOFM # Z added by devel/scanprov av_nonelem # F added by devel/scanprov +dTHX_DEBUGGING # Z added by devel/scanprov emulate_setlocale # F added by devel/scanprov +EXACTFAA # Z added by devel/scanprov +EXACTFAA_NO_TRIE # Z added by devel/scanprov find_next_masked # F added by devel/scanprov find_span_end # F added by devel/scanprov find_span_end_mask # F added by devel/scanprov get_ANYOFM_contents # F added by devel/scanprov +LC_NUMERIC_LOCK # Z added by devel/scanprov +LC_NUMERIC_UNLOCK # Z added by devel/scanprov magic_setnonelem # F added by devel/scanprov new_msg_hv # F added by devel/scanprov +PERL_MAGIC_nonelem # E +PL_curlocales # Z added by devel/scanprov +PL_lc_numeric_mutex_depth # Z added by devel/scanprov +PL_locale_utf8ness # Z added by devel/scanprov +PL_numeric_underlying_is_standard # Z added by devel/scanprov +PL_setlocale_buf # Z added by devel/scanprov +PL_setlocale_bufsize # Z added by devel/scanprov +PL_underlying_numeric_obj # Z added by devel/scanprov +PL_vtbl_nonelem # Z added by devel/scanprov restore_switched_locale # F added by devel/scanprov +STORE_LC_NUMERIC_SET_STANDARD # Z added by devel/scanprov +STORE_NUMERIC_SET_STANDARD # Z added by devel/scanprov switch_category_locale_to_template # F added by devel/scanprov +switch_to_global_locale # U +sync_locale # E (Perl_sync_locale) +thread_locale_init # U +thread_locale_term # U +UNICODE_GOT_NONCHAR # Z added by devel/scanprov +UNICODE_GOT_PERL_EXTENDED # Z added by devel/scanprov +UNICODE_GOT_SUPER # Z added by devel/scanprov +UNICODE_GOT_SURROGATE # Z added by devel/scanprov +USE_LOCALE_ADDRESS # Z added by devel/scanprov +USE_LOCALE_IDENTIFICATION # Z added by devel/scanprov +USE_LOCALE_MEASUREMENT # Z added by devel/scanprov +USE_LOCALE_PAPER # Z added by devel/scanprov +USE_LOCALE_TELEPHONE # Z added by devel/scanprov +UTF8_ALLOW_FE_FF # Z added by devel/scanprov +utf8n_to_uvchr_msgs # U +uvchr_to_utf8_flags_msgs # U +uvoffuni_to_utf8_flags # Z added by devel/scanprov uvoffuni_to_utf8_flags_msgs # F added by devel/scanprov +WARN_EXPERIMENTAL__ALPHA_ASSERTIONS # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5027010 perl-5.34.0/dist/Devel-PPPort/parts/base/5027010 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5027010 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5027010 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,64 @@ 5.027010 +ABDAY_1 # Z added by devel/scanprov +ABDAY_2 # Z added by devel/scanprov +ABDAY_3 # Z added by devel/scanprov +ABDAY_4 # Z added by devel/scanprov +ABDAY_5 # Z added by devel/scanprov +ABDAY_6 # Z added by devel/scanprov +ABDAY_7 # Z added by devel/scanprov +ABMON_1 # Z added by devel/scanprov +ABMON_10 # Z added by devel/scanprov +ABMON_11 # Z added by devel/scanprov +ABMON_12 # Z added by devel/scanprov +ABMON_2 # Z added by devel/scanprov +ABMON_3 # Z added by devel/scanprov +ABMON_4 # Z added by devel/scanprov +ABMON_5 # Z added by devel/scanprov +ABMON_6 # Z added by devel/scanprov +ABMON_7 # Z added by devel/scanprov +ABMON_8 # Z added by devel/scanprov +ABMON_9 # Z added by devel/scanprov +ALT_DIGITS # Z added by devel/scanprov +AM_STR # Z added by devel/scanprov +CODESET # Z added by devel/scanprov +CRNCYSTR # Z added by devel/scanprov +DAY_1 # Z added by devel/scanprov +DAY_2 # Z added by devel/scanprov +DAY_3 # Z added by devel/scanprov +DAY_4 # Z added by devel/scanprov +DAY_5 # Z added by devel/scanprov +DAY_6 # Z added by devel/scanprov +DAY_7 # Z added by devel/scanprov +D_FMT # Z added by devel/scanprov +D_T_FMT # Z added by devel/scanprov +ERA # Z added by devel/scanprov +ERA_D_FMT # Z added by devel/scanprov +ERA_D_T_FMT # Z added by devel/scanprov +ERA_T_FMT # Z added by devel/scanprov +FATAL_ABOVE_FF_MSG # Z added by devel/scanprov init_named_cv # F added by devel/scanprov +LOCALE_LOCK_V # Z added by devel/scanprov +LOCALE_UNLOCK_V # Z added by devel/scanprov +MEM_WRAP_CHECK_s # Z added by devel/scanprov +MON_1 # Z added by devel/scanprov +MON_10 # Z added by devel/scanprov +MON_11 # Z added by devel/scanprov +MON_12 # Z added by devel/scanprov +MON_2 # Z added by devel/scanprov +MON_3 # Z added by devel/scanprov +MON_4 # Z added by devel/scanprov +MON_5 # Z added by devel/scanprov +MON_6 # Z added by devel/scanprov +MON_7 # Z added by devel/scanprov +MON_8 # Z added by devel/scanprov +MON_9 # Z added by devel/scanprov +NOEXPR # Z added by devel/scanprov +NOSTR # Z added by devel/scanprov +PM_STR # Z added by devel/scanprov +RADIXCHAR # Z added by devel/scanprov +T_FMT # Z added by devel/scanprov +T_FMT_AMPM # Z added by devel/scanprov +THOUSEP # Z added by devel/scanprov +TS_W32_BROKEN_LOCALECONV # Z added by devel/scanprov +YESEXPR # Z added by devel/scanprov +YESSTR # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5027011 perl-5.34.0/dist/Devel-PPPort/parts/base/5027011 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5027011 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5027011 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,16 @@ 5.027011 +HAS_CF_AUX_TABLES # Z added by devel/scanprov +HAS_DUPLOCALE # K added by devel/scanprov +HAS_IVCF_AUX_TABLES # Z added by devel/scanprov +HAS_LC_AUX_TABLES # Z added by devel/scanprov +HAS_STRTOD_L # K added by devel/scanprov +HAS_TC_AUX_TABLES # Z added by devel/scanprov +HAS_UC_AUX_TABLES # Z added by devel/scanprov init_uniprops # F added by devel/scanprov _inverse_folds # F added by devel/scanprov +MAX_UNI_KEYWORD_INDEX # Z added by devel/scanprov +MPH_BUCKETS # Z added by devel/scanprov +MPH_RSHIFT # Z added by devel/scanprov +MPH_VALt # Z added by devel/scanprov parse_uniprop_string # F added by devel/scanprov +PL_utf8_tosimplefold # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5028002 perl-5.34.0/dist/Devel-PPPort/parts/base/5028002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5028002 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5028002 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.028002 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5028003 perl-5.34.0/dist/Devel-PPPort/parts/base/5028003 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5028003 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5028003 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.028003 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5029000 perl-5.34.0/dist/Devel-PPPort/parts/base/5029000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5029000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5029000 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,5 @@ 5.029000 +my_atof2 # Z added by devel/scanprov my_atof3 # F added by devel/scanprov +PL_E_FORMAT_PRECISION # Z added by devel/scanprov +PL_Posix_ptrs # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5029001 perl-5.34.0/dist/Devel-PPPort/parts/base/5029001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5029001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5029001 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,16 @@ 5.029001 +is_HANGUL_ED_utf8_safe # Z added by devel/scanprov +N0 # Z added by devel/scanprov +N1 # Z added by devel/scanprov +N10 # Z added by devel/scanprov +N11 # Z added by devel/scanprov +N2 # Z added by devel/scanprov +N3 # Z added by devel/scanprov +N4 # Z added by devel/scanprov +N5 # Z added by devel/scanprov +N6 # Z added by devel/scanprov +N7 # Z added by devel/scanprov +N8 # Z added by devel/scanprov +N9 # Z added by devel/scanprov +NUM_CLASSES # Z added by devel/scanprov _utf8n_to_uvchr_msgs_helper # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5029002 perl-5.34.0/dist/Devel-PPPort/parts/base/5029002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5029002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5029002 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,46 @@ 5.029002 +GCB_Maybe_Emoji_NonBreak # Z added by devel/scanprov initialize_invlist_guts # F added by devel/scanprov is_invlist # F added by devel/scanprov +MAX_LEGAL_CP # Z added by devel/scanprov +UNI_AHEX # Z added by devel/scanprov +UNI_ALNUM # Z added by devel/scanprov +UNI_ALPHA # Z added by devel/scanprov +UNI_ALPHABETIC # Z added by devel/scanprov +UNI_ASCIIHEXDIGIT # Z added by devel/scanprov +UNI_BASICLATIN # Z added by devel/scanprov +UNI_BLANK # Z added by devel/scanprov +UNI_CC # Z added by devel/scanprov +UNI_CNTRL # Z added by devel/scanprov +UNI_CONTROL # Z added by devel/scanprov +UNI_DECIMALNUMBER # Z added by devel/scanprov +UNI_DIGIT # Z added by devel/scanprov +UNI_GRAPH # Z added by devel/scanprov +UNI_HEX # Z added by devel/scanprov +UNI_HEXDIGIT # Z added by devel/scanprov +UNI_HORIZSPACE # Z added by devel/scanprov +UNI_HYPHEN # Z added by devel/scanprov +UNI_L # Z added by devel/scanprov +UNI_L_AMP # Z added by devel/scanprov +UNI_LB__SG # Z added by devel/scanprov +UNI_LC # Z added by devel/scanprov +UNI_LL # Z added by devel/scanprov +UNI_LOWER # Z added by devel/scanprov +UNI_LOWERCASE # Z added by devel/scanprov +UNI_LT # Z added by devel/scanprov +UNI_LU # Z added by devel/scanprov +UNI_ND # Z added by devel/scanprov +UNI_PERLSPACE # Z added by devel/scanprov +UNI_PERLWORD # Z added by devel/scanprov +UNI_PRINT # Z added by devel/scanprov +UNI_SPACE # Z added by devel/scanprov +UNI_SPACEPERL # Z added by devel/scanprov +UNI_TITLECASE # Z added by devel/scanprov +UNI_TITLECASELETTER # Z added by devel/scanprov +UNI_UPPER # Z added by devel/scanprov +UNI_UPPERCASE # Z added by devel/scanprov +UNI_WHITESPACE # Z added by devel/scanprov +UNI_WORD # Z added by devel/scanprov +UNI_WSPACE # Z added by devel/scanprov +UNI_XDIGIT # Z added by devel/scanprov +UNI_XPERLSPACE # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5029003 perl-5.34.0/dist/Devel-PPPort/parts/base/5029003 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5029003 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5029003 2020-10-04 22:17:12.000000000 +0000 @@ -1 +1,2 @@ 5.029003 +Ptrdiff_t # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5029004 perl-5.34.0/dist/Devel-PPPort/parts/base/5029004 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5029004 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5029004 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,10 @@ 5.029004 +ANYOFPOSIXL # Z added by devel/scanprov +ANYOF_POSIXL_SET_TO_BITMAP # Z added by devel/scanprov change_engine_size # F added by devel/scanprov +FILL_NODE # Z added by devel/scanprov +POSIXL_CLEAR # Z added by devel/scanprov +POSIXL_SET # Z added by devel/scanprov +POSIXL_TEST # Z added by devel/scanprov +POSIXL_ZERO # Z added by devel/scanprov set_regex_pv # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5029005 perl-5.34.0/dist/Devel-PPPort/parts/base/5029005 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5029005 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5029005 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,3 @@ 5.029005 +NANYOFM # Z added by devel/scanprov output_posix_warnings # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5029006 perl-5.34.0/dist/Devel-PPPort/parts/base/5029006 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5029006 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5029006 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,7 @@ 5.029006 argvout_final # F added by devel/scanprov +isPOWER_OF_2 # Z added by devel/scanprov +MAX_FOLD_FROMS # Z added by devel/scanprov +PERL_FEATURE_H # Z added by devel/scanprov +PERL_INVLIST_INLINE_H # Z added by devel/scanprov +PERL_REGCOMP_H # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5029007 perl-5.34.0/dist/Devel-PPPort/parts/base/5029007 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5029007 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5029007 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,6 @@ 5.029007 +ANYOFH # Z added by devel/scanprov +EXACTFUP # Z added by devel/scanprov +EXACTFU_S_EDGE # Z added by devel/scanprov foldEQ_latin1_s2_folded # F added by devel/scanprov +PL_in_some_fold # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5029008 perl-5.34.0/dist/Devel-PPPort/parts/base/5029008 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5029008 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5029008 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,13 @@ 5.029008 +COMBINING_DOT_ABOVE_UTF8 # Z added by devel/scanprov handle_user_defined_property # F added by devel/scanprov +PL_CCC_non0_non230 # Z added by devel/scanprov +PL_in_utf8_turkic_locale # Z added by devel/scanprov traverse_op_tree # F added by devel/scanprov turkic_fc # F added by devel/scanprov turkic_lc # F added by devel/scanprov turkic_uc # F added by devel/scanprov +USER_PROP_MUTEX_INIT # Z added by devel/scanprov +USER_PROP_MUTEX_LOCK # Z added by devel/scanprov +USER_PROP_MUTEX_TERM # Z added by devel/scanprov +USER_PROP_MUTEX_UNLOCK # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5029009 perl-5.34.0/dist/Devel-PPPort/parts/base/5029009 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5029009 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5029009 2020-10-04 22:17:12.000000000 +0000 @@ -1,9 +1,90 @@ 5.029009 -newSVsv_flags # U +get_and_check_backslash_N_name_wrapper # F added by devel/scanprov +HAS_TOWLOWER # K added by devel/scanprov +HAS_TOWUPPER # K added by devel/scanprov +I_WCTYPE # K added by devel/scanprov +newSVsv_flags # F added by devel/scanprov newSVsv_nomg # U +Perl_dup_warnings # F added by devel/scanprov +PL_Private_Use # Z added by devel/scanprov +RE_COMPILE_RECURSION_INIT # Z added by devel/scanprov +RE_COMPILE_RECURSION_LIMIT # Z added by devel/scanprov +UNI_age_values_index # Z added by devel/scanprov +UNI_ahex_values_index # Z added by devel/scanprov +UNI_alpha_values_index # Z added by devel/scanprov +UNI_bc_values_index # Z added by devel/scanprov +UNI_bidic_values_index # Z added by devel/scanprov +UNI_bidim_values_index # Z added by devel/scanprov +UNI_blk_values_index # Z added by devel/scanprov +UNI_bpt_values_index # Z added by devel/scanprov +UNI_cased_values_index # Z added by devel/scanprov +UNI_ccc_values_index # Z added by devel/scanprov +UNI_ce_values_index # Z added by devel/scanprov +UNI_ci_values_index # Z added by devel/scanprov +UNI_compex_values_index # Z added by devel/scanprov +UNI_cwcf_values_index # Z added by devel/scanprov +UNI_cwcm_values_index # Z added by devel/scanprov +UNI_cwkcf_values_index # Z added by devel/scanprov +UNI_cwl_values_index # Z added by devel/scanprov +UNI_cwt_values_index # Z added by devel/scanprov +UNI_cwu_values_index # Z added by devel/scanprov +UNI_dash_values_index # Z added by devel/scanprov +UNI_dep_values_index # Z added by devel/scanprov +UNI_dia_values_index # Z added by devel/scanprov +UNI_di_values_index # Z added by devel/scanprov +UNI_dt_values_index # Z added by devel/scanprov +UNI_ea_values_index # Z added by devel/scanprov +UNI_ext_values_index # Z added by devel/scanprov +UNI_gcb_values_index # Z added by devel/scanprov +UNI_gc_values_index # Z added by devel/scanprov +UNI_grbase_values_index # Z added by devel/scanprov +UNI_grext_values_index # Z added by devel/scanprov +UNI_hex_values_index # Z added by devel/scanprov +UNI_hst_values_index # Z added by devel/scanprov +UNI_hyphen_values_index # Z added by devel/scanprov +UNI_idc_values_index # Z added by devel/scanprov +UNI_ideo_values_index # Z added by devel/scanprov +UNI_idsb_values_index # Z added by devel/scanprov +UNI_idst_values_index # Z added by devel/scanprov +UNI_ids_values_index # Z added by devel/scanprov +UNI_inpc_values_index # Z added by devel/scanprov +UNI_insc_values_index # Z added by devel/scanprov +UNI_in_values_index # Z added by devel/scanprov +UNI_jg_values_index # Z added by devel/scanprov +UNI_joinc_values_index # Z added by devel/scanprov +UNI_jt_values_index # Z added by devel/scanprov +UNI_lb_values_index # Z added by devel/scanprov +UNI_loe_values_index # Z added by devel/scanprov +UNI_lower_values_index # Z added by devel/scanprov +UNI_math_values_index # Z added by devel/scanprov +UNI_nchar_values_index # Z added by devel/scanprov +UNI_nfcqc_values_index # Z added by devel/scanprov +UNI_nfdqc_values_index # Z added by devel/scanprov +UNI_nfkcqc_values_index # Z added by devel/scanprov +UNI_nfkdqc_values_index # Z added by devel/scanprov +UNI_nt_values_index # Z added by devel/scanprov +UNI_nv_values_index # Z added by devel/scanprov +UNI_patsyn_values_index # Z added by devel/scanprov +UNI_patws_values_index # Z added by devel/scanprov +UNI_pcm_values_index # Z added by devel/scanprov +UNI_qmark_values_index # Z added by devel/scanprov +UNI_radical_values_index # Z added by devel/scanprov +UNI_ri_values_index # Z added by devel/scanprov +UNI_sb_values_index # Z added by devel/scanprov +UNI_sc_values_index # Z added by devel/scanprov +UNI_scx_values_index # Z added by devel/scanprov +UNI_sd_values_index # Z added by devel/scanprov +UNI_sterm_values_index # Z added by devel/scanprov +UNI_term_values_index # Z added by devel/scanprov +UNI_uideo_values_index # Z added by devel/scanprov +UNI_upper_values_index # Z added by devel/scanprov +UNI_vo_values_index # Z added by devel/scanprov +UNI_vs_values_index # Z added by devel/scanprov +UNI_wb_values_index # Z added by devel/scanprov +UNI_wspace_values_index # Z added by devel/scanprov +UNI_xidc_values_index # Z added by devel/scanprov +UNI_xids_values_index # Z added by devel/scanprov UTF8_SAFE_SKIP # U WARN_EXPERIMENTAL__PRIVATE_USE # E WARN_EXPERIMENTAL__UNIPROP_WILDCARDS # E WARN_EXPERIMENTAL__VLB # E -get_and_check_backslash_N_name_wrapper # F added by devel/scanprov -Perl_dup_warnings # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5029010 perl-5.34.0/dist/Devel-PPPort/parts/base/5029010 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5029010 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5029010 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,10 @@ 5.029010 +inRANGE # Z added by devel/scanprov +MSVC_DIAG_IGNORE # Z added by devel/scanprov +MSVC_DIAG_IGNORE_DECL # Z added by devel/scanprov +MSVC_DIAG_IGNORE_STMT # Z added by devel/scanprov +MSVC_DIAG_RESTORE # Z added by devel/scanprov +MSVC_DIAG_RESTORE_DECL # Z added by devel/scanprov +MSVC_DIAG_RESTORE_STMT # Z added by devel/scanprov my_strtod # U Strtod # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5030001 perl-5.34.0/dist/Devel-PPPort/parts/base/5030001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5030001 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5030001 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.030001 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5030002 perl-5.34.0/dist/Devel-PPPort/parts/base/5030002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5030002 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5030002 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.030002 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5030003 perl-5.34.0/dist/Devel-PPPort/parts/base/5030003 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5030003 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5030003 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.030003 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5031000 perl-5.34.0/dist/Devel-PPPort/parts/base/5031000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5031000 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5031000 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.031000 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5031001 perl-5.34.0/dist/Devel-PPPort/parts/base/5031001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5031001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5031001 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,10 @@ 5.031001 +ANYOFHb # Z added by devel/scanprov +GROUPPN # Z added by devel/scanprov lossless_NV_to_IV # F added by devel/scanprov +OP_IS_STAT # Z added by devel/scanprov +REFFAN # Z added by devel/scanprov +REFFLN # Z added by devel/scanprov +REFFN # Z added by devel/scanprov +REFFUN # Z added by devel/scanprov +REFN # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5031002 perl-5.34.0/dist/Devel-PPPort/parts/base/5031002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5031002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5031002 2020-10-04 22:17:12.000000000 +0000 @@ -1,3 +1,8 @@ 5.031002 +ANYOFHr # Z added by devel/scanprov G_RETHROW # E +HIGHEST_ANYOF_HRx_BYTE # Z added by devel/scanprov +LOWEST_ANYOF_HRx_BYTE # Z added by devel/scanprov +MAX_ANYOF_HRx_BYTE # Z added by devel/scanprov +O_VMS_DELETEONCLOSE # Z added by devel/scanprov Perl_my_mkostemp_cloexec # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5031004 perl-5.34.0/dist/Devel-PPPort/parts/base/5031004 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5031004 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5031004 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,9 @@ 5.031004 +DEBUG_DUMP_PRE_OPTIMIZE_r # Z added by devel/scanprov +get_regex_charset_name # F added by devel/scanprov +is_utf8_char_helper # F added by devel/scanprov +PadnameIN_SCOPE # F added by devel/scanprov +RE_DEBUG_EXTRA_DUMP_PRE_OPTIMIZE # Z added by devel/scanprov sv_2pvbyte_flags # U sv_2pvutf8_flags # U SvAMAGIC_off # U @@ -11,12 +16,6 @@ SvPVutf8_or_null_nomg # U sv_utf8_downgrade_flags # U sv_utf8_downgrade_nomg # U -get_regex_charset_name # F added by devel/scanprov -is_utf8_char_helper # F added by devel/scanprov -PadnameIN_SCOPE # F added by devel/scanprov -Perl_POPMARK # F added by devel/scanprov -Perl_ReANY # F added by devel/scanprov -Perl_TOPMARK # F added by devel/scanprov -to_uni_fold # F added by devel/scanprov utf8_to_uvchr_buf_helper # F added by devel/scanprov variant_byte_number # F added by devel/scanprov +withinCOUNT # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5031005 perl-5.34.0/dist/Devel-PPPort/parts/base/5031005 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5031005 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5031005 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,5 @@ 5.031005 -gimme_V # U +gimme_V # F added by devel/scanprov isALPHANUMERIC_utf8 # A isALPHA_utf8 # A isASCII_utf8 # A @@ -17,6 +17,14 @@ isUPPER_utf8 # A isWORDCHAR_utf8 # A isXDIGIT_utf8 # A +LEXACT # Z added by devel/scanprov +OPERANDl # Z added by devel/scanprov +OPERANDs # Z added by devel/scanprov +setSTR_LEN # Z added by devel/scanprov +STRINGl # Z added by devel/scanprov +STRINGs # Z added by devel/scanprov +STR_LENl # Z added by devel/scanprov +STR_LENs # Z added by devel/scanprov toFOLD_utf8 # A toLOWER_utf8 # A toTITLE_utf8 # A diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5031006 perl-5.34.0/dist/Devel-PPPort/parts/base/5031006 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5031006 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5031006 2020-10-04 22:17:12.000000000 +0000 @@ -1,10 +1,33 @@ 5.031006 -UTF8_CHK_SKIP # U -do_trans_count_invmap # F added by devel/scanprov -do_trans_invmap # F added by devel/scanprov -invmap_dump # F added by devel/scanprov +CLEARFEATUREBITS # Z added by devel/scanprov +EXACTFU_REQ8 # Z added by devel/scanprov +EXACT_REQ8 # Z added by devel/scanprov +FEATURE_BITWISE_BIT # Z added by devel/scanprov +FEATURE_EVALBYTES_BIT # Z added by devel/scanprov +FEATURE_FC_BIT # Z added by devel/scanprov +FEATURE_IS_ENABLED_MASK # Z added by devel/scanprov +FEATURE_MYREF_BIT # Z added by devel/scanprov +FEATURE_POSTDEREF_QQ_BIT # Z added by devel/scanprov +FEATURE_REFALIASING_BIT # Z added by devel/scanprov +FEATURE_SAY_BIT # Z added by devel/scanprov +FEATURE_SIGNATURES_BIT # Z added by devel/scanprov +FEATURE_STATE_BIT # Z added by devel/scanprov +FEATURE___SUB___BIT # Z added by devel/scanprov +FEATURE_SWITCH_BIT # Z added by devel/scanprov +FEATURE_UNICODE_BIT # Z added by devel/scanprov +FEATURE_UNIEVAL_BIT # Z added by devel/scanprov +FETCHFEATUREBITSHH # Z added by devel/scanprov +GDBMNDBM_H_USES_PROTOTYPES # K added by devel/scanprov +HAS_DBMINIT_PROTO # K added by devel/scanprov +I_DBM # K added by devel/scanprov +I_NDBM # K added by devel/scanprov _is_utf8_FOO # F added by devel/scanprov _is_utf8_perl_idcont # F added by devel/scanprov _is_utf8_perl_idstart # F added by devel/scanprov -make_exactf_invlist # F added by devel/scanprov -sv_derived_from_svpvn # F added by devel/scanprov +LEXACT_REQ8 # Z added by devel/scanprov +NDBM_H_USES_PROTOTYPES # K added by devel/scanprov +SAVEFEATUREBITS # Z added by devel/scanprov +STOREFEATUREBITSHH # Z added by devel/scanprov +UTF8_CHK_SKIP # U +UTF_MIN_ABOVE_LATIN1_BYTE # Z added by devel/scanprov +UTF_MIN_START_BYTE # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5031007 perl-5.34.0/dist/Devel-PPPort/parts/base/5031007 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5031007 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5031007 2020-10-04 22:17:12.000000000 +0000 @@ -1,13 +1,59 @@ 5.031007 -csighandler # E (Perl_csighandler) -csighandler1 # U -csighandler3 # E -perly_sighandler # E -sv_isa_sv # U -WARN_EXPERIMENTAL__ISA # E +ANYOFHs # Z added by devel/scanprov +ANYOFR # Z added by devel/scanprov +ANYOFRb # Z added by devel/scanprov +ANYOFRbase # Z added by devel/scanprov +ANYOFR_BASE_BITS # Z added by devel/scanprov +ANYOFRdelta # Z added by devel/scanprov +csighandler1 # F added by devel/scanprov +csighandler3 # F added by devel/scanprov +DEBUG_y # Z added by devel/scanprov +DEBUG_y_FLAG # Z added by devel/scanprov +DEBUG_y_TEST # Z added by devel/scanprov +DEBUG_yv # Z added by devel/scanprov +DEBUG_yv_TEST # Z added by devel/scanprov +do_trans_count_invmap # F added by devel/scanprov +do_trans_invmap # F added by devel/scanprov +FEATURE_ISA_BIT # Z added by devel/scanprov +FEATURE_ISA_IS_ENABLED # Z added by devel/scanprov find_first_differing_byte_pos # F added by devel/scanprov +HASATTRIBUTE_ALWAYS_INLINE # K added by devel/scanprov +HAS_ISLESS # K added by devel/scanprov +HAS_WCRTOMB # K added by devel/scanprov invlist_lowest # F added by devel/scanprov +invmap_dump # F added by devel/scanprov +isALNUMC_LC_utf8_safe # Z added by devel/scanprov +isALNUMC_utf8_safe # Z added by devel/scanprov +isALNUM_lazy_if_safe # Z added by devel/scanprov +isALNUM_LC_utf8_safe # Z added by devel/scanprov +isALNUM_utf8_safe # Z added by devel/scanprov is_grapheme # F added by devel/scanprov +is_THREE_CHAR_FOLD_HEAD_latin1_safe # Z added by devel/scanprov +is_THREE_CHAR_FOLD_HEAD_utf8_safe # Z added by devel/scanprov +is_THREE_CHAR_FOLD_latin1_safe # Z added by devel/scanprov +is_THREE_CHAR_FOLD_utf8_safe # Z added by devel/scanprov +KEY_isa # Z added by devel/scanprov +magic_sethint_feature # Z added by devel/scanprov +make_exactf_invlist # F added by devel/scanprov +memCHRs # U +OPpTRANS_CAN_FORCE_UTF8 # Z added by devel/scanprov +OPpTRANS_USE_SVOP # Z added by devel/scanprov +perly_sighandler # F added by devel/scanprov +PL_sighandler1p # Z added by devel/scanprov +PL_sighandler3p # Z added by devel/scanprov +PL_TR_SPECIAL_HANDLING_UTF8 # Z added by devel/scanprov quadmath_format_valid # F added by devel/scanprov +RANGE_INDICATOR # Z added by devel/scanprov sighandler1 # F added by devel/scanprov sighandler3 # F added by devel/scanprov +sv_derived_from_svpvn # F added by devel/scanprov +sv_isa_sv # U +TR_DELETE # Z added by devel/scanprov +TR_OOB # Z added by devel/scanprov +TR_R_EMPTY # Z added by devel/scanprov +TR_SPECIAL_HANDLING # Z added by devel/scanprov +TR_UNLISTED # Z added by devel/scanprov +TR_UNMAPPED # Z added by devel/scanprov +UNICODE_ALLOW_ABOVE_IV_MAX # Z added by devel/scanprov +UTF8_IS_START_base # Z added by devel/scanprov +WARN_EXPERIMENTAL__ISA # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5031008 perl-5.34.0/dist/Devel-PPPort/parts/base/5031008 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5031008 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5031008 2020-10-04 22:17:12.000000000 +0000 @@ -1,4 +1,4 @@ 5.031008 -memCHRs # U grok_bin_oct_hex # F added by devel/scanprov output_non_portable # F added by devel/scanprov +PERL_SCAN_NOTIFY_ILLDIGIT # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5031009 perl-5.34.0/dist/Devel-PPPort/parts/base/5031009 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5031009 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5031009 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1,30 @@ +5.031009 +ARGp # Z added by devel/scanprov +ARGp_LOC # Z added by devel/scanprov +ARGp_SET # Z added by devel/scanprov +compile_wildcard # F added by devel/scanprov +execute_wildcard # F added by devel/scanprov +FEATURE_INDIRECT_BIT # Z added by devel/scanprov +FEATURE_INDIRECT_IS_ENABLED # Z added by devel/scanprov +FILL_ADVANCE_NODE_ARGp # Z added by devel/scanprov +form_alien_digit_msg # F added by devel/scanprov +form_cp_too_large_msg # F added by devel/scanprov +isMNEMONIC_CNTRL # Z added by devel/scanprov +load_charnames # F added by devel/scanprov +PERL_SCAN_ALLOW_MEDIAL_UNDERSCORES # Z added by devel/scanprov +PERL_SCAN_SILENT_OVERFLOW # Z added by devel/scanprov +PL_mbrlen_ps # Z added by devel/scanprov +PL_mbrtowc_ps # Z added by devel/scanprov +PL_wcrtomb_ps # Z added by devel/scanprov +PMf_WILDCARD # Z added by devel/scanprov +REGEX_SET # Z added by devel/scanprov +regpnode # F added by devel/scanprov +UNI_DISPLAY_BACKSPACE # Z added by devel/scanprov +UNI_ebase_values_index # Z added by devel/scanprov +UNI_ecomp_values_index # Z added by devel/scanprov +UNI_emod_values_index # Z added by devel/scanprov +UNI_emoji_values_index # Z added by devel/scanprov +UNI_epres_values_index # Z added by devel/scanprov +UNI_extpict_values_index # Z added by devel/scanprov +UNI_identifierstatus_values_index # Z added by devel/scanprov +UNI_identifiertype_values_index # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5031010 perl-5.34.0/dist/Devel-PPPort/parts/base/5031010 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5031010 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5031010 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1,88 @@ +5.031010 +amagic_cmp_desc # F added by devel/scanprov +amagic_cmp_locale_desc # F added by devel/scanprov +amagic_i_ncmp_desc # F added by devel/scanprov +amagic_ncmp_desc # F added by devel/scanprov +cmpchain_extend # F added by devel/scanprov +cmpchain_finish # F added by devel/scanprov +cmpchain_start # F added by devel/scanprov +cmp_desc # F added by devel/scanprov +cmp_locale_desc # F added by devel/scanprov +DECLARE_AND_GET_RE_DEBUG_FLAGS # Z added by devel/scanprov +DECLARE_AND_GET_RE_DEBUG_FLAGS_NON_REGEX # Z added by devel/scanprov +do_uniprop_match # F added by devel/scanprov +ENV_INIT # Z added by devel/scanprov +ENV_LOCALE_LOCK # Z added by devel/scanprov +ENV_LOCALE_READ_LOCK # Z added by devel/scanprov +ENV_LOCALE_READ_UNLOCK # Z added by devel/scanprov +ENV_LOCALE_UNLOCK # Z added by devel/scanprov +ENV_LOCK # Z added by devel/scanprov +ENV_TERM # Z added by devel/scanprov +ENV_UNLOCK # Z added by devel/scanprov +free_and_set_cop_warnings # Z added by devel/scanprov +get_deprecated_property_msg # F added by devel/scanprov +get_prop_definition # F added by devel/scanprov +get_prop_values # F added by devel/scanprov +get_re_gclass_nonbitmap_data # F added by devel/scanprov +get_regclass_nonbitmap_data # F added by devel/scanprov +GETSPNAM_R_HAS_BUFFER # Z added by devel/scanprov +gmtime # Z added by devel/scanprov +handle_names_wildcard # F added by devel/scanprov +isDEBUG_WILDCARD # Z added by devel/scanprov +KEY_getspnam # Z added by devel/scanprov +localtime # Z added by devel/scanprov +mortal_getenv # F added by devel/scanprov +PERL_REENTR_USING_ASCTIME_R # Z added by devel/scanprov +PERL_REENTR_USING_CRYPT_R # Z added by devel/scanprov +PERL_REENTR_USING_CTERMID_R # Z added by devel/scanprov +PERL_REENTR_USING_CTIME_R # Z added by devel/scanprov +PERL_REENTR_USING_ENDGRENT_R # Z added by devel/scanprov +PERL_REENTR_USING_ENDHOSTENT_R # Z added by devel/scanprov +PERL_REENTR_USING_ENDNETENT_R # Z added by devel/scanprov +PERL_REENTR_USING_ENDPROTOENT_R # Z added by devel/scanprov +PERL_REENTR_USING_ENDPWENT_R # Z added by devel/scanprov +PERL_REENTR_USING_ENDSERVENT_R # Z added by devel/scanprov +PERL_REENTR_USING_GETGRENT_R # Z added by devel/scanprov +PERL_REENTR_USING_GETGRGID_R # Z added by devel/scanprov +PERL_REENTR_USING_GETGRNAM_R # Z added by devel/scanprov +PERL_REENTR_USING_GETHOSTBYADDR_R # Z added by devel/scanprov +PERL_REENTR_USING_GETHOSTBYNAME_R # Z added by devel/scanprov +PERL_REENTR_USING_GETHOSTENT_R # Z added by devel/scanprov +PERL_REENTR_USING_GETLOGIN_R # Z added by devel/scanprov +PERL_REENTR_USING_GETNETBYADDR_R # Z added by devel/scanprov +PERL_REENTR_USING_GETNETBYNAME_R # Z added by devel/scanprov +PERL_REENTR_USING_GETNETENT_R # Z added by devel/scanprov +PERL_REENTR_USING_GETPROTOBYNAME_R # Z added by devel/scanprov +PERL_REENTR_USING_GETPROTOBYNUMBER_R # Z added by devel/scanprov +PERL_REENTR_USING_GETPROTOENT_R # Z added by devel/scanprov +PERL_REENTR_USING_GETPWENT_R # Z added by devel/scanprov +PERL_REENTR_USING_GETPWNAM_R # Z added by devel/scanprov +PERL_REENTR_USING_GETPWUID_R # Z added by devel/scanprov +PERL_REENTR_USING_GETSERVBYNAME_R # Z added by devel/scanprov +PERL_REENTR_USING_GETSERVBYPORT_R # Z added by devel/scanprov +PERL_REENTR_USING_GETSERVENT_R # Z added by devel/scanprov +PERL_REENTR_USING_GETSPNAM_R # Z added by devel/scanprov +PERL_REENTR_USING_GMTIME_R # Z added by devel/scanprov +PERL_REENTR_USING_LOCALTIME_R # Z added by devel/scanprov +PERL_REENTR_USING_READDIR64_R # Z added by devel/scanprov +PERL_REENTR_USING_READDIR_R # Z added by devel/scanprov +PERL_REENTR_USING_SETGRENT_R # Z added by devel/scanprov +PERL_REENTR_USING_SETHOSTENT_R # Z added by devel/scanprov +PERL_REENTR_USING_SETLOCALE_R # Z added by devel/scanprov +PERL_REENTR_USING_SETNETENT_R # Z added by devel/scanprov +PERL_REENTR_USING_SETPROTOENT_R # Z added by devel/scanprov +PERL_REENTR_USING_SETPWENT_R # Z added by devel/scanprov +PERL_REENTR_USING_SETSERVENT_R # Z added by devel/scanprov +PERL_REENTR_USING_STRERROR_R # Z added by devel/scanprov +PERL_REENTR_USING_TMPNAM_R # Z added by devel/scanprov +PERL_REENTR_USING_TTYNAME_R # Z added by devel/scanprov +PERLSI_REGCOMP # Z added by devel/scanprov +PERL_STATIC_FORCE_INLINE # Z added by devel/scanprov +PERL_STATIC_FORCE_INLINE_NO_RET # Z added by devel/scanprov +RE_DEBUG_EXTRA_WILDCARD # Z added by devel/scanprov +REENTRANT_PROTO_S_TS # Z added by devel/scanprov +should_we_output_Debug_r # F added by devel/scanprov +sortsv_flags_impl # F added by devel/scanprov +sv_i_ncmp_desc # F added by devel/scanprov +sv_ncmp_desc # F added by devel/scanprov +USE_SPENT_BUFFER # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5031011 perl-5.34.0/dist/Devel-PPPort/parts/base/5031011 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5031011 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5031011 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1,2 @@ +5.031011 +PERL_IS_GCC # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5032000 perl-5.34.0/dist/Devel-PPPort/parts/base/5032000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5032000 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5032000 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1,3 @@ +5.032000 +HAS_SOCKADDR_STORAGE # K added by devel/scanprov +rck_elide_nothing # F added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5033000 perl-5.34.0/dist/Devel-PPPort/parts/base/5033000 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5033000 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5033000 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1,11 @@ +5.033000 +PERL_GIT_UNCOMMITTED_CHANGES # Z added by devel/scanprov +PERL_INC_VERSION_LIST # K added by devel/scanprov +PERL_RVS_TO_DECIMAL # Z added by devel/scanprov +PERL_VERSION_EQ # U +PERL_VERSION_GE # U +PERL_VERSION_GT # U +PERL_VERSION_LE # U +PERL_VERSION_LT # U +PERL_VERSION_NE # U +USE_C_BACKTRACE # K added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5033001 perl-5.34.0/dist/Devel-PPPort/parts/base/5033001 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5033001 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5033001 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1,7 @@ +5.033001 +av_count # U +dMY_CXT_SV # E +nBIT_MASK # Z added by devel/scanprov +nBIT_UMAX # Z added by devel/scanprov +USE_LOCALE_SYNTAX # Z added by devel/scanprov +USE_LOCALE_TOD # Z added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/base/5033002 perl-5.34.0/dist/Devel-PPPort/parts/base/5033002 --- perl-5.32.1/dist/Devel-PPPort/parts/base/5033002 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/base/5033002 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.033002 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/embed.fnc perl-5.34.0/dist/Devel-PPPort/parts/embed.fnc --- perl-5.32.1/dist/Devel-PPPort/parts/embed.fnc 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/embed.fnc 2020-10-04 22:17:12.000000000 +0000 @@ -14,7 +14,7 @@ : real (full) name, with any appropriate thread context paramaters, thus hiding : that detail from the typical code. : -: Most macros listed here are the complete full name. +: Most macros (as opposed to function) listed here are the complete full name. : : All non-static functions defined by perl need to be listed in this file. : embed.pl uses the entries here to construct: @@ -22,9 +22,16 @@ : 2) embed.h to create short name macros : : Static functions internal to a file need not appear here, but there is -: benefit to declaring them here, as it generally handles the thread context -: parameter invisibly, as well as making sure a PERL_ARGS_ASSERT_foo macro is -: defined, which can save you debugging time. +: benefit to declaring them here: +: 1) It generally handles the thread context parameter invisibly making it +: trivial to add or remove needing thread context passed; +: 2) It defines a PERL_ARGS_ASSERT_foo macro, which can save you debugging +: time; +: 3) It is is automatically known to Devel::PPPort, making it quicker to +: later find out when it came into existence. For example +: perl ppport.h --api-info=/edit_distance/ +: yields +: Supported at least since perl-5.23.8, with or without ppport.h. : : Lines in this file are of the form: : flags|return_type|name|arg1|arg2|...|argN @@ -91,9 +98,9 @@ : The E flag is used instead for a function and its short name that is supposed : to be used only in the core, and in extensions compiled with the : PERL_EXT symbol defined. Again, on some platforms, the function -: will be visible everywhere, so the 'p' flag is generally needed. -: Also note that an XS writer can always cheat and pretend to be an -: extension by #defining PERL_EXT. +: will be visible everywhere, so one of the 'p' or 'S' flags is +: generally needed. Also note that an XS writer can always cheat +: and pretend to be an extension by #defining PERL_EXT. : : The X flag is similar to the C flag in that the function (whose entry better : have the 'p' flag) is accessible everywhere on all platforms. @@ -106,40 +113,98 @@ : function in its full 'Perl_' form with any necessary thread : context parameter. : +: Just below is a description of the automatic documentation generation system +: which heavily involves this file. Below that is a description of all the +: flags used in this file. +: : Scattered around the perl source are lines of the form: : : =for apidoc name : -: followed by pod for that function. The purpose of these is to tell -: autodoc.pl where the documentation is for a function listed in this file. It -: uses the prototype from here and the pod from there in generating the -: documentation in perlapi or perlintern. The entries in this file that have -: corresponding '=for apidoc' entries should have the 'd' flag set in this +: followed by pod for that function. The purpose of these lines and the text +: that immediately follows them is to furnish documentation for functions +: and macros listed here in embed.fnc. The lines tend to be placed near the +: source for the item they describe. autodoc.pl is run as part of the standard +: build process to extract this documentation and build perlapi.pod from the +: elements that are in the API (flagged as A in this file), and perlintern.pod +: from the other elements. +: +: 'name' in the apidoc line corresponds to an item listed in this file, so that +: the signature and flags need only be specified once, here, and automatically +: they get placed into the generated pod. +: +: The 'h' flag is used to hide (suppress) the pod associated with =apidoc lines +: from being placed in the generated perlapi or perlintern. There are several +: reasons you might want to do this, given in the 'h' flag description below, +: but one is for the case where the =apidoc occurs in a file that contains +: regular pod. Without that flag, the associated pod will be placed in both +: it, and perlapi or perlintern. That may be what you want, but it gives you +: the flexibility to choose that, or instead have just a link to the source pod +: inserted in perlapi or perlintern. This allows single-source browsing for +: someone; they don't have to scan multiple pods trying to find something +: suitable. +: +: In C files, the apidoc lines are inside comment blocks. Inside other files, +: the =for causes lines from there until the next line beginning with an '=' to +: be ignored. +: +: The entries in this file that have corresponding '=for apidoc' entries must +: have the 'd' flag set in this file. +: +: There are also lines of this form scattered around the perl +: source: +: +: =for apidoc_header HEADING_TEXT +: =head1 HEADING_TEXT +: +: where HEADING_TEXT is arbitrary text up to the end of the line. These are +: used by autodoc to group the documentation into sections of related +: items. After having been stripped of leading space, HEADING_TEXT, gives the +: section the following apidoc lines will be grouped under, and its title. +: By using the same HEADING_TEXT in multiple files, everything related will +: automatically get grouped together regardless of its source file. +: Originally, all apidoc lines were in C files, and the =heading1 worked there +: when placed in comment blocks, like the rest of the apidoc lines. But now, +: the documentation can also come from pure perl files, and =head1 has meaning +: to them, so has to be avoided there. You can use the '=for apidoc_header' +: lines anywhere. +: +: Within sections functions are listed, sorted in dictionary order. What goes +: into a section ends with the next =head1, '=for apidoc_header', or the end of : file. : -: There are also lines of this form scattered around: +: What goes into the documentation of a particular function ends with the next +: line that begins with an '='. In particular, an '=cut' line ends that +: documentation without introducing something new. +: +: It makes sense for some macros to have documentation not in embed.fnc, but +: somewhere else. To that end, also scattered around the perl source are lines +: like this: : : =for apidoc flags|return_type|name|arg1|arg2|...|argN : -: and with the same meanings as the lines in this file. These are for -: documenting macros. The 'name' in any such line must not be the same as any -: in this file (i.e., no redundant definitions), and one of the flags must be -: 'm', indicating it is a macro. The lines following these are pod for the -: respective macro. Since these are macros, the arguments need not be legal C -: parameters. To indicate this to downstream software that inspects these -: lines, there are a few conventions: -: type should be the entire argument name if it names a type -: cast should be the entire argument name if it is a cast -: SP should be the entire argument name if it is the stack pointer SP -: block should be the entire argument name if it is a C brace-enclosed block +: and with the same meanings as the lines in this file. The 'name' in any such +: line must not be the same as any in this file (i.e., no redundant +: definitions), and one of the flags must be 'm', indicating it is a macro. +: Since these are macros, the arguments need not be legal C parameters. To +: indicate this to downstream software that inspects these lines, there are a +: few conventions: +: type should be the entire argument name if it names a type +: cast should be the entire argument name if it is a cast +: SP should be the entire argument name if it is the stack pointer SP +: block should be the entire argument name if it is a C brace-enclosed block +: number should be the entire argument name if it means a C numeric constant +: "string" should be the entire argument name if it is a literal C +: double-quoted string +: +: Except for "string", the letters above are exact. For example, you have to +: have 't', 'y', 'p', and 'e' literally. Here is an example: : -: The letters above are exact. For example, you have to have 't', 'y', 'p', -: and 'e' literally. Here is an example: : =for apidoc Am|void|Newxc|void* ptr|int nitems|type|cast : -: Additionally, an argument can be some word(s) enclosed in double quotes to -: indicate that it has to be a string, instead of a const char * const, like this -: =for apidoc Ama|SV*|newSVpvs|"string" +: The text within double quotes can be arbitrary descriptive text. +: +: =for apidoc Ama|SV*|newSVpvs|"literal string" : : If any argument or return value is not one of the above, and isn't a legal C : language one, the 'u' flag should be specified. @@ -248,11 +313,19 @@ : : f Function takes a format string. If the function name =~ qr/strftime/ : then it is assumed to take a strftime-style format string as the 1st -: arg; otherwise it's assumed to be a printf style format string, varargs -: (hence any entry that would otherwise go in embed.h is suppressed): +: arg; otherwise it's assumed to take a printf style format string, not +: necessarily the 1st arg. All the arguments following it (including +: possibly '...') are assumed to be for the format. : +: embed.h: any entry in here is suppressed because of varargs : proto.h: add __attribute__format__ (or ...null_ok__) : +: F Function has a '...' parameter, but don't assume it is a format. This +: is to make sure that new functions with formats can't be added without +: considering if they are format functions or not. A reason to use this +: flag even on a format function is if the format would generate +: error: format string argument is not a string type +: : G Suppress empty PERL_ARGS_ASSERT_foo macro. Normally such a macro is : generated for all entries for functions 'foo' in this file. If there is : a pointer argument to 'foo', it needs to be declared in this file as @@ -268,26 +341,45 @@ : proto.h: PERL_ARGS_ASSERT macro is not defined unless the function : has NN arguments : -: h Hide any documentation. This is used when the documentation is atypical -: of the rest of perlapi and perlintern. In other words the item is -: documented, but just not the standard way. One reason would be if there -: are a bunch of macros which follow a common paradigm in their naming, so -: rather than having an entry for each slight variation, there is an -: overarchinge one. It is also used when the documentation is in another -: pod, such as perlguts or warnings.h. This flag is useful for downstream -: programs, such as Devel::PPPort. +: h Hide any documentation that would normally go into perlapi or +: perlintern. This is typically used when the documentation is actually +: in another pod. If you don't use the 'h', that documentation is +: displayed in both places; with the flag, it stays in the pod, and a +: link to that pod is instead placed in perlapi or perlintern. This +: allows one to browse perlapi or perlintern and see all the potentially +: relevant elements. A good example is perlapio. It has documentation +: about PerlIO functions with other text giving context. There's no point +: in writing a second entry for perlapi, but it would be good if someone +: browsing perlapi knew about it. By adding '=for apidoc' lines in +: perlapio, the appropriate text could be simply copied into perlapi if +: deemed appropriate, or just a link added there when the 'h' flag is +: specified. +: This flag is useful for symbolic names for flags. A single =for apidoc +: line can be added to the pod where the meaning is discussed, and perlapi +: will list the name, with a link to the pod. Another use would be if +: there are a bunch of macros which follow a common paradigm in their +: naming, so rather than having an entry for each slight variation, there +: is an overarching one. This flag is useful for downstream programs, +: such as Devel::PPPort. : : i inline static. This is used for functions that the compiler is being : requested to inline. If the function is in a header file its : definition will be visible (unless guarded by #if..#endif) to all : XS code. (A typical guard will be that it is being included in a : particular C file(s) or in the perl core.) Therefore, all -: non-guarded function should also have the 'p' flag specified to avoid +: non-guarded functions should also have the 'p' flag specified to avoid : polluting the XS code name space. Otherwise an error is generated if : the 'S' flag is not also specified. : : proto.h: function is declared as PERL_STATIC_INLINE : +: I This flag works exactly the same as 'i' but it also adds +: __attribute__((always_inline)) or __forceinline if either of them is +: supported by the compiler. +: +: proto.h: function is declared as PERL_STATIC_FORCE_INLINE and +: __attribute__always_inline__ is added +: : m Implemented as a macro; there is no function associated with this name, : and hence no long Perl_ or S_ name. However, if the macro name itself : begins with 'Perl_', autodoc.pl will show a thread context parameter @@ -318,11 +410,16 @@ : characters, and a warning is raised otherwise. This flag suppresses : that warning, so that weird things can be documented : -: n Has no arguments (used only in =for apidoc entries) -: +: n Has no arguments. (used only in =for apidoc entries) : The macro (it can't be a function) is used without any parameters nor : empty parentheses. : +: Perhaps a better name for this flag would have been '0'. The reason the +: flag was not changed to that from 'n', is if D:P were to be regenerated +: on an older perl, it still would use the new embed.fnc shipped with it, +: but would be using the flags from the older perl source code. +: +: : O Has a perl_ compatibility macro. : : The really OLD name for API funcs. @@ -370,7 +467,8 @@ : : gcc has a bug (which they claim is a feature) in which casting the : result of one of these to (void) doesn't silence the warning that the -: result is ignored. +: result is ignored. (Perl has a workaround for this bug, see +: PERL_UNUSED_RESULT docs) : : proto.h: add __attribute__warn_unused_result__ : @@ -438,6 +536,8 @@ : : Individual flags may be separated by non-tab whitespace. +CipRTX |char * |mortal_getenv |NN const char * str + #if defined(PERL_IMPLICIT_SYS) ATo |PerlInterpreter*|perl_alloc_using \ |NN struct IPerlMem *ipM \ @@ -457,7 +557,7 @@ ATod |int |perl_run |NN PerlInterpreter *my_perl ATod |int |perl_parse |NN PerlInterpreter *my_perl|XSINIT_t xsinit \ |int argc|NULLOK char** argv|NULLOK char** env -ATpR |bool |doing_taint |int argc|NULLOK char** argv|NULLOK char** env +CTpR |bool |doing_taint |int argc|NULLOK char** argv|NULLOK char** env #if defined(USE_ITHREADS) ATod |PerlInterpreter*|perl_clone|NN PerlInterpreter *proto_perl|UV flags # if defined(PERL_IMPLICIT_SYS) @@ -524,13 +624,14 @@ EXp |void |av_reify |NN AV *av ApdR |SV* |av_shift |NN AV *av Apd |SV** |av_store |NN AV *av|SSize_t key|NULLOK SV *val -AidRp |SSize_t|av_top_index |NN AV *av +AMdRp |SSize_t|av_top_index |NN AV *av +AidRp |Size_t |av_count |NN AV *av AmdR |SSize_t|av_tindex |NN AV *av Apd |void |av_undef |NN AV *av Apdoex |SV** |av_create_and_unshift_one|NN AV **const avp|NN SV *const val Apd |void |av_unshift |NN AV *av|SSize_t num -Apo |SV** |av_arylen_p |NN AV *av -Apo |IV* |av_iter_p |NN AV *av +Cpo |SV** |av_arylen_p |NN AV *av +Cpo |IV* |av_iter_p |NN AV *av #if defined(PERL_IN_AV_C) S |MAGIC* |get_aux_mg |NN AV *av #endif @@ -551,10 +652,10 @@ |NULLOK const PERL_CONTEXT **dbcxp : Used in several source files pR |bool |cando |Mode_t mode|bool effective|NN const Stat_t* statbufp -ApRT |U32 |cast_ulong |NV f -ApRT |I32 |cast_i32 |NV f -ApRT |IV |cast_iv |NV f -ApRT |UV |cast_uv |NV f +CdpRT |U32 |cast_ulong |NV f +CdpRT |I32 |cast_i32 |NV f +CdpRT |IV |cast_iv |NV f +CdpRT |UV |cast_uv |NV f #if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP) ApR |I32 |my_chsize |int fd|Off_t length #endif @@ -579,19 +680,19 @@ Tore |void |win32_croak_not_implemented|NN const char * fname #endif #if defined(PERL_IMPLICIT_CONTEXT) -AfTrp |void |croak_nocontext|NULLOK const char* pat|... -AfTrp |OP* |die_nocontext |NULLOK const char* pat|... +AdfTrp |void |croak_nocontext|NULLOK const char* pat|... +AdfTrp |OP* |die_nocontext |NULLOK const char* pat|... AfTp |void |deb_nocontext |NN const char* pat|... -AfTp |char* |form_nocontext |NN const char* pat|... -ATp |void |load_module_nocontext|U32 flags|NN SV* name|NULLOK SV* ver|... -AfTp |SV* |mess_nocontext |NN const char* pat|... -AfTp |void |warn_nocontext |NN const char* pat|... -AfTp |void |warner_nocontext|U32 err|NN const char* pat|... -AfTp |SV* |newSVpvf_nocontext|NN const char *const pat|... -AfTp |void |sv_catpvf_nocontext|NN SV *const sv|NN const char *const pat|... -AfTp |void |sv_setpvf_nocontext|NN SV *const sv|NN const char *const pat|... -AfTp |void |sv_catpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|... -AfTp |void |sv_setpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|... +AdfTp |char* |form_nocontext |NN const char* pat|... +AdFTp |void |load_module_nocontext|U32 flags|NN SV* name|NULLOK SV* ver|... +AdfTp |SV* |mess_nocontext |NN const char* pat|... +AdfTp |void |warn_nocontext |NN const char* pat|... +AdfTp |void |warner_nocontext|U32 err|NN const char* pat|... +AdfTp |SV* |newSVpvf_nocontext|NN const char *const pat|... +AdfTp |void |sv_catpvf_nocontext|NN SV *const sv|NN const char *const pat|... +AdfTp |void |sv_setpvf_nocontext|NN SV *const sv|NN const char *const pat|... +AdfTp |void |sv_catpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|... +AdfTp |void |sv_setpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|... AbfTpD |int |fprintf_nocontext|NN PerlIO *stream|NN const char *format|... AbfTpD |int |printf_nocontext|NN const char *format|... #endif @@ -613,9 +714,9 @@ Apd |void |cv_undef |NN CV* cv p |void |cv_undef_flags |NN CV* cv|U32 flags pd |void |cv_forget_slab |NULLOK CV *cv -Ap |void |cx_dump |NN PERL_CONTEXT* cx -AiMp |GV * |CvGV |NN CV *sv -AiMTp |I32 * |CvDEPTH |NN const CV * const sv +Cp |void |cx_dump |NN PERL_CONTEXT* cx +AdiMp |GV * |CvGV |NN CV *sv +AdiMTp |I32 * |CvDEPTH |NN const CV * const sv Aphd |SV* |filter_add |NULLOK filter_t funcp|NULLOK SV* datasv Ap |void |filter_del |NN filter_t funcp ApRhd |I32 |filter_read |int idx|NN SV *buf_sv|int maxlen @@ -627,7 +728,7 @@ pPR |U32* |get_opargs ApPR |PPADDR_t*|get_ppaddr : Used by CXINC, which appears to be in widespread use -ApR |I32 |cxinc +CpR |I32 |cxinc Afp |void |deb |NN const char* pat|... Ap |void |vdeb |NN const char* pat|NULLOK va_list* args Ap |void |debprofdump @@ -637,9 +738,9 @@ Ap |I32 |debstack Ap |I32 |debstackptrs pR |SV * |defelem_target |NN SV *sv|NULLOK MAGIC *mg -ATp |char* |delimcpy |NN char* to|NN const char* toend|NN const char* from \ +AdTp |char* |delimcpy |NN char* to|NN const char* toend|NN const char* from \ |NN const char* fromend|int delim|NN I32* retlen -Tp |char* |delimcpy_no_escape|NN char* to|NN const char* toend \ +dTp |char* |delimcpy_no_escape|NN char* to|NN const char* toend \ |NN const char* from \ |NN const char* fromend|int delim \ |NN I32* retlen @@ -649,7 +750,7 @@ Afrpd |OP* |die |NULLOK const char* pat|... : Used in util.c pr |void |die_unwind |NN SV* msv -Ap |void |dounwind |I32 cxix +Cp |void |dounwind |I32 cxix : FIXME pMb |bool|do_aexec |NULLOK SV* really|NN SV** mark|NN SV** sp : Used in pp_sys.c @@ -666,7 +767,7 @@ p |bool|do_exec |NN const char* cmd #endif -#if defined(WIN32) || defined(__SYMBIAN32__) || defined(VMS) +#if defined(WIN32) || defined(VMS) Ap |int |do_aspawn |NULLOK SV* really|NN SV** mark|NN SV** sp Ap |int |do_spawn |NN char* cmd Ap |int |do_spawn_nowait|NN char* cmd @@ -754,7 +855,7 @@ pR |OP* |do_readline : Defined in doio.c, used only in pp_sys.c p |bool |do_seek |NULLOK GV* gv|Off_t pos|int whence -Ap |void |do_sprintf |NN SV* sv|SSize_t len|NN SV** sarg +Cp |void |do_sprintf |NN SV* sv|SSize_t len|NN SV** sarg : Defined in doio.c, used only in pp_sys.c p |Off_t |do_sysseek |NN GV* gv|Off_t pos|int whence : Defined in doio.c, used only in pp_sys.c @@ -804,8 +905,8 @@ Sd |OP* |traverse_op_tree|NN OP* top|NN OP* o #endif Afpd |char* |form |NN const char* pat|... -Ap |char* |vform |NN const char* pat|NULLOK va_list* args -Ap |void |free_tmps +Adp |char* |vform |NN const char* pat|NULLOK va_list* args +Cp |void |free_tmps #if defined(PERL_IN_OP_C) S |void |gen_constant_list|NULLOK OP* o #endif @@ -821,19 +922,19 @@ ApMb |GV* |gv_AVadd |NULLOK GV *gv ApMb |GV* |gv_HVadd |NULLOK GV *gv ApMb |GV* |gv_IOadd |NULLOK GV* gv -AmR |GV* |gv_autoload4 |NULLOK HV* stash|NN const char* name \ +AdmR |GV* |gv_autoload4 |NULLOK HV* stash|NN const char* name \ |STRLEN len|I32 method -ApR |GV* |gv_autoload_sv |NULLOK HV* stash|NN SV* namesv|U32 flags -ApR |GV* |gv_autoload_pv |NULLOK HV* stash|NN const char* namepv \ +ApRd |GV* |gv_autoload_sv |NULLOK HV* stash|NN SV* namesv|U32 flags +ApRd |GV* |gv_autoload_pv |NULLOK HV* stash|NN const char* namepv \ |U32 flags -ApR |GV* |gv_autoload_pvn |NULLOK HV* stash|NN const char* name \ +ApRd |GV* |gv_autoload_pvn |NULLOK HV* stash|NN const char* name \ |STRLEN len|U32 flags -Ap |void |gv_check |NN HV* stash +Cp |void |gv_check |NN HV* stash AbpD |void |gv_efullname |NN SV* sv|NN const GV* gv ApMb |void |gv_efullname3 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix Ap |void |gv_efullname4 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain -Ap |GV* |gv_fetchfile |NN const char* name -Ap |GV* |gv_fetchfile_flags|NN const char *const name|const STRLEN len\ +Adp |GV* |gv_fetchfile |NN const char* name +Adp |GV* |gv_fetchfile_flags|NN const char *const name|const STRLEN len\ |const U32 flags Amd |GV* |gv_fetchmeth |NULLOK HV* stash|NN const char* name \ |STRLEN len|I32 level @@ -855,10 +956,10 @@ |I32 autoload Apx |GV* |gv_fetchmethod_sv_flags|NN HV* stash|NN SV* namesv|U32 flags Apx |GV* |gv_fetchmethod_pv_flags|NN HV* stash|NN const char* name \ - |U32 flags + |U32 flags Apx |GV* |gv_fetchmethod_pvn_flags|NN HV* stash|NN const char* name \ |const STRLEN len|U32 flags -Ap |GV* |gv_fetchpv |NN const char *nambeg|I32 add|const svtype sv_type +Adp |GV* |gv_fetchpv |NN const char *nambeg|I32 flags|const svtype sv_type AbpD |void |gv_fullname |NN SV* sv|NN const GV* gv ApMb |void |gv_fullname3 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix Ap |void |gv_fullname4 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain @@ -882,7 +983,7 @@ Apd |HV* |gv_stashpv |NN const char* name|I32 flags Apd |HV* |gv_stashpvn |NN const char* name|U32 namelen|I32 flags #if defined(PERL_IN_GV_C) || defined(PERL_IN_UNIVERSAL_C) -EpG |HV* |gv_stashsvpvn_cached |NULLOK SV *namesv|NULLOK const char* name|U32 namelen|I32 flags +Epd |HV* |gv_stashsvpvn_cached |NULLOK SV *namesv|NULLOK const char* name|U32 namelen|I32 flags #endif #if defined(PERL_IN_GV_C) i |HV* |gv_stashpvn_internal |NN const char* name|U32 namelen|I32 flags @@ -902,10 +1003,10 @@ AbMdp |SV** |hv_fetch |NULLOK HV *hv|NN const char *key|I32 klen \ |I32 lval AbMdp |HE* |hv_fetch_ent |NULLOK HV *hv|NN SV *keysv|I32 lval|U32 hash -Ap |void* |hv_common |NULLOK HV *hv|NULLOK SV *keysv \ +Cp |void* |hv_common |NULLOK HV *hv|NULLOK SV *keysv \ |NULLOK const char* key|STRLEN klen|int flags \ |int action|NULLOK SV *val|U32 hash -Ap |void* |hv_common_key_len|NULLOK HV *hv|NN const char *key \ +Cp |void* |hv_common_key_len|NULLOK HV *hv|NN const char *key \ |I32 klen_i32|const int action|NULLOK SV *val \ |const U32 hash Apod |STRLEN |hv_fill |NN HV *const hv @@ -955,7 +1056,7 @@ AdiTp |I32 |foldEQ |NN const char* a|NN const char* b|I32 len AdmP |I32 |ibcmp_locale |NN const char* a|NN const char* b|I32 len AiTpd |I32 |foldEQ_locale |NN const char* a|NN const char* b|I32 len -Am |I32 |ibcmp_utf8 |NN const char *s1|NULLOK char **pe1|UV l1 \ +Adm |I32 |ibcmp_utf8 |NN const char *s1|NULLOK char **pe1|UV l1 \ |bool u1|NN const char *s2|NULLOK char **pe2 \ |UV l2|bool u2 Amd |I32 |foldEQ_utf8 |NN const char *s1|NULLOK char **pe1|UV l1 \ @@ -964,7 +1065,7 @@ Cp |I32 |foldEQ_utf8_flags |NN const char *s1|NULLOK char **pe1|UV l1 \ |bool u1|NN const char *s2|NULLOK char **pe2 \ |UV l2|bool u2|U32 flags -AiTp |I32 |foldEQ_latin1 |NN const char* a|NN const char* b|I32 len +CiTp |I32 |foldEQ_latin1 |NN const char* a|NN const char* b|I32 len #if defined(PERL_IN_DOIO_C) SR |bool |ingroup |Gid_t testgid|bool effective #endif @@ -983,6 +1084,10 @@ |bool not_implicit|bool warn_on_fail : Used in perly.y pR |OP* |invert |NULLOK OP* cmd +pR |OP* |cmpchain_start |I32 type|NULLOK OP* left \ + |NULLOK OP* right +pR |OP* |cmpchain_extend|I32 type|NN OP* ch|NULLOK OP* right +pR |OP* |cmpchain_finish|NN OP* ch ApR |I32 |is_lvalue_sub : Used in cop.h XopR |I32 |was_lvalue_sub @@ -999,9 +1104,6 @@ |const bool consider_overlongs # endif #endif -#if defined(PERL_IN_UTF8_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) -EXTp |UV |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const unsigned int flags -#endif #if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C) p |UV |_to_upper_title_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const char S_or_s #endif @@ -1086,7 +1188,7 @@ #endif : Used in perly.y p |OP* |jmaybe |NN OP *o -: Used in pp.c +: Used in pp.c pP |I32 |keyword |NN const char *name|I32 len|bool all_keywords #if defined(PERL_IN_OP_C) S |void |inplace_aassign |NN OP* o @@ -1131,48 +1233,11 @@ S |OP* |listkids |NULLOK OP* o #endif p |OP* |list |NULLOK OP* o -Apd |void |load_module|U32 flags|NN SV* name|NULLOK SV* ver|... -Ap |void |vload_module|U32 flags|NN SV* name|NULLOK SV* ver|NULLOK va_list* args +AFpd |void |load_module|U32 flags|NN SV* name|NULLOK SV* ver|... +Adp |void |vload_module|U32 flags|NN SV* name|NULLOK SV* ver|NULLOK va_list* args : Used in perly.y p |OP* |localize |NN OP *o|I32 lex ApdR |I32 |looks_like_number|NN SV *const sv -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_DQUOTE_C) -EpRX |bool |grok_bslash_x |NN char** s \ - |NN const char* const send \ - |NN UV* uv \ - |NN const char** message \ - |NULLOK U32 * packed_warn \ - |const bool strict \ - |const bool allow_UV_MAX \ - |const bool utf8 -EpRX |bool |grok_bslash_c |const char source \ - |NN U8 * result \ - |NN const char** message \ - |NULLOK U32 * packed_warn -EpRX |bool |grok_bslash_o |NN char** s \ - |NN const char* const send \ - |NN UV* uv \ - |NN const char** message \ - |NULLOK U32 * packed_warn \ - |const bool strict \ - |const bool allow_UV_MAX \ - |const bool utf8 -EpRX |const char *|form_alien_digit_msg|const U8 which \ - |const STRLEN valids_len \ - |NN const char * const first_bad\ - |NN const char * const send \ - |const bool UTF \ - |const bool braced -#endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) -EiRT |bool |regcurly |NN const char *s -#endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_UTF8_C) -EpRX |const char *|form_cp_too_large_msg|const U8 which \ - |NULLOK const char * string \ - |const Size_t len \ - |const UV cp -#endif AMpd |UV |grok_hex |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result Apd |int |grok_infnan |NN const char** sp|NN const char *send Apd |int |grok_number |NN const char *pv|STRLEN len|NULLOK UV *valuep @@ -1252,7 +1317,7 @@ p |int |magic_set_all_env|NN SV* sv|NN MAGIC* mg p |U32 |magic_sizepack |NN SV* sv|NN MAGIC* mg p |int |magic_wipepack |NN SV* sv|NN MAGIC* mg -pod |SV* |magic_methcall |NN SV *sv|NN const MAGIC *mg \ +Fpod |SV* |magic_methcall |NN SV *sv|NN const MAGIC *mg \ |NN SV *meth|U32 flags \ |U32 argc|... Ap |I32 * |markstack_grow @@ -1288,12 +1353,13 @@ Apd |int |mg_free |NN SV* sv Apd |void |mg_free_type |NN SV* sv|int how Apd |void |mg_freeext |NN SV* sv|int how|NULLOK const MGVTBL *vtbl +Aipd |void |SvGETMAGIC |NN SV *sv Apd |int |mg_get |NN SV* sv ApdD |U32 |mg_length |NN SV* sv ApdT |void |mg_magical |NN SV* sv Apd |int |mg_set |NN SV* sv Ap |I32 |mg_size |NN SV* sv -ApT |void |mini_mktime |NN struct tm *ptm +AdpT |void |mini_mktime |NN struct tm *ptm Axmd |OP* |op_lvalue |NULLOK OP* o|I32 type poX |OP* |op_lvalue_flags|NULLOK OP* o|I32 type|U32 flags pd |void |finalize_optree |NN OP* o @@ -1306,8 +1372,8 @@ #endif : Used in op.c and pp_sys.c p |int |mode_from_discipline|NULLOK const char* s|STRLEN len -Ap |const char* |moreswitches |NN const char* s -Ap |NV |my_atof |NN const char *s +Cp |const char* |moreswitches |NN const char* s +Adp |NV |my_atof |NN const char *s ATdpR |NV |my_strtod |NN const char * const s|NULLOK char ** e Aprd |void |my_exit |U32 status Apr |void |my_failure_exit @@ -1315,7 +1381,7 @@ ATp |Pid_t |my_fork ATp |void |atfork_lock ATp |void |atfork_unlock -ApMb |I32 |my_lstat +m |I32 |my_lstat pX |I32 |my_lstat_flags |NULLOK const U32 flags #if ! defined(HAS_MEMRCHR) && (defined(PERL_CORE) || defined(PERL_EXT)) EeiT |void * |my_memrchr |NN const char * s|const char c|const STRLEN len @@ -1326,9 +1392,9 @@ #endif Ap |PerlIO*|my_popen_list |NN const char* mode|int n|NN SV ** args Apd |void |my_setenv |NULLOK const char* nam|NULLOK const char* val -ApMb |I32 |my_stat +m |I32 |my_stat pX |I32 |my_stat_flags |NULLOK const U32 flags -Afp |char * |my_strftime |NN const char *fmt|int sec|int min|int hour|int mday|int mon|int year|int wday|int yday|int isdst +Adfp |char * |my_strftime |NN const char *fmt|int sec|int min|int hour|int mday|int mon|int year|int wday|int yday|int isdst : Used in pp_ctl.c p |void |my_unexec CbDTPR |UV |NATIVE_TO_NEED |const UV enc|const UV ch @@ -1355,7 +1421,7 @@ ApdR |OP* |newRANGE |I32 flags|NN OP* left|NN OP* right ApdR |OP* |newSLICEOP |I32 flags|NULLOK OP* subscript|NULLOK OP* listop ApdR |OP* |newSTATEOP |I32 flags|NULLOK char* label|NULLOK OP* o -ApbM |CV* |newSUB |I32 floor|NULLOK OP* o|NULLOK OP* proto \ +AdpbM |CV* |newSUB |I32 floor|NULLOK OP* o|NULLOK OP* proto \ |NULLOK OP* block pd |CV * |newXS_len_flags|NULLOK const char *name|STRLEN len \ |NN XSUBADDR_t subaddr\ @@ -1406,11 +1472,11 @@ ApdR |SV* |newSVpvn_share |NULLOK const char* s|I32 len|U32 hash ApdR |SV* |newSVpv_share |NULLOK const char* s|U32 hash AfpdR |SV* |newSVpvf |NN const char *const pat|... -ApR |SV* |vnewSVpvf |NN const char *const pat|NULLOK va_list *const args +ApRd |SV* |vnewSVpvf |NN const char *const pat|NULLOK va_list *const args Apd |SV* |newSVrv |NN SV *const rv|NULLOK const char *const classname ApMbdR |SV* |newSVsv |NULLOK SV *const old AmdR |SV* |newSVsv_nomg |NULLOK SV *const old -ApR |SV* |newSVsv_flags |NULLOK SV *const old|I32 flags +CpR |SV* |newSVsv_flags |NULLOK SV *const old|I32 flags ApdR |SV* |newSV_type |const svtype type ApdR |OP* |newUNOP |I32 type|I32 flags|NULLOK OP* first ApdR |OP* |newUNOP_AUX |I32 type|I32 flags|NULLOK OP* first \ @@ -1481,10 +1547,10 @@ : Defined in doio.c, used only in pp_hot.c dopx |PerlIO*|start_glob |NN SV *tmpglob|NN IO *io -Ap |void |reentrant_size -Ap |void |reentrant_init -Ap |void |reentrant_free -ATp |void* |reentrant_retry|NN const char *f|... +Cp |void |reentrant_size +Cp |void |reentrant_init +Cp |void |reentrant_free +CFTp |void* |reentrant_retry|NN const char *f|... : "Very" special - can't use the O flag for this one: : (The rename from perl_atexit to Perl_call_atexit was in 864dbfa3ca8032ef) @@ -1493,7 +1559,7 @@ ApdO |I32 |call_method |NN const char* methname|I32 flags ApdO |I32 |call_pv |NN const char* sub_name|I32 flags ApdO |I32 |call_sv |NN SV* sv|volatile I32 flags -Ap |void |despatch_signals +Cp |void |despatch_signals Ap |OP * |doref |NN OP *o|I32 type|bool set_op_ref ApdO |SV* |eval_pv |NN const char* p|I32 croak_on_error ApdO |I32 |eval_sv |NN SV* sv|I32 flags @@ -1520,9 +1586,9 @@ ApxT |void |thread_locale_init ApxT |void |thread_locale_term ApdO |void |require_pv |NN const char* pv -AbpdM |void |pack_cat |NN SV *cat|NN const char *pat|NN const char *patend \ +AbpdD |void |pack_cat |NN SV *cat|NN const char *pat|NN const char *patend \ |NN SV **beglist|NN SV **endlist|NN SV ***next_in_list|U32 flags -Apd |void |packlist |NN SV *cat|NN const char *pat|NN const char *patend|NN SV **beglist|NN SV **endlist +Apd |void |packlist |NN SV *cat|NN const char *pat|NN const char *patend|NN SV **beglist|NN SV **endlist #if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C) S |void |pidgone |Pid_t pid|int status #endif @@ -1536,70 +1602,11 @@ Ap |void |pop_scope Ap |void |push_scope #if defined(PERL_IN_PERLY_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_TOKE_C) -ApMb |OP* |ref |NULLOK OP* o|I32 type +pMb |OP* |ref |NULLOK OP* o|I32 type #endif #if defined(PERL_IN_OP_C) S |OP* |refkids |NULLOK OP* o|I32 type #endif -Ap |void |regdump |NN const regexp* r -CiTop |struct regexp *|ReANY |NN const REGEXP * const re -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_UTF8_C) -EXpR |SV* |_new_invlist_C_array|NN const UV* const list -EXp |bool |_invlistEQ |NN SV* const a|NN SV* const b|const bool complement_b -#endif -Ap |I32 |pregexec |NN REGEXP * const prog|NN char* stringarg \ - |NN char* strend|NN char* strbeg \ - |SSize_t minend |NN SV* screamer|U32 nosave -Ap |void |pregfree |NULLOK REGEXP* r -Ap |void |pregfree2 |NN REGEXP *rx -: FIXME - is anything in re using this now? -EXp |REGEXP*|reg_temp_copy |NULLOK REGEXP* dsv|NN REGEXP* ssv -Ap |void |regfree_internal|NN REGEXP *const rx -#if defined(USE_ITHREADS) -Ap |void* |regdupe_internal|NN REGEXP * const r|NN CLONE_PARAMS* param -#endif -EXp |regexp_engine const *|current_re_engine -Ap |REGEXP*|pregcomp |NN SV * const pattern|const U32 flags -p |REGEXP*|re_op_compile |NULLOK SV ** const patternp \ - |int pat_count|NULLOK OP *expr \ - |NN const regexp_engine* eng \ - |NULLOK REGEXP *old_re \ - |NULLOK bool *is_bare_re \ - |const U32 rx_flags|const U32 pm_flags -Ap |REGEXP*|re_compile |NN SV * const pattern|U32 orig_rx_flags -Cp |char* |re_intuit_start|NN REGEXP * const rx \ - |NULLOK SV* sv \ - |NN const char* const strbeg \ - |NN char* strpos \ - |NN char* strend \ - |const U32 flags \ - |NULLOK re_scream_pos_data *data -Cp |SV* |re_intuit_string|NN REGEXP *const r -Ap |I32 |regexec_flags |NN REGEXP *const rx|NN char *stringarg \ - |NN char *strend|NN char *strbeg \ - |SSize_t minend|NN SV *sv \ - |NULLOK void *data|U32 flags -ApR |regnode*|regnext |NULLOK regnode* p -EXp |SV*|reg_named_buff |NN REGEXP * const rx|NULLOK SV * const key \ - |NULLOK SV * const value|const U32 flags -EXp |SV*|reg_named_buff_iter |NN REGEXP * const rx|NULLOK const SV * const lastkey \ - |const U32 flags -Ap |SV*|reg_named_buff_fetch |NN REGEXP * const rx|NN SV * const namesv|const U32 flags -Ap |bool|reg_named_buff_exists |NN REGEXP * const rx|NN SV * const key|const U32 flags -Ap |SV*|reg_named_buff_firstkey |NN REGEXP * const rx|const U32 flags -Ap |SV*|reg_named_buff_nextkey |NN REGEXP * const rx|const U32 flags -Ap |SV*|reg_named_buff_scalar |NN REGEXP * const rx|const U32 flags -Ap |SV*|reg_named_buff_all |NN REGEXP * const rx|const U32 flags - -: FIXME - is anything in re using this now? -EXp |void|reg_numbered_buff_fetch|NN REGEXP * const rx|const I32 paren|NULLOK SV * const sv -: FIXME - is anything in re using this now? -EXp |void|reg_numbered_buff_store|NN REGEXP * const rx|const I32 paren|NULLOK SV const * const value -: FIXME - is anything in re using this now? -EXp |I32|reg_numbered_buff_length|NN REGEXP * const rx|NN const SV * const sv|const I32 paren - -: FIXME - is anything in re using this now? -EXp |SV*|reg_qr_package|NN REGEXP * const rx ATp |void |repeatcpy |NN char* to|NN const char* from|I32 len|IV count AdTpP |char* |rninstr |NN const char* big|NN const char* bigend \ @@ -1637,17 +1644,17 @@ Ap |I32 |save_alloc |I32 size|I32 pad Apdh |void |save_aptr |NN AV** aptr Apdh |AV* |save_ary |NN GV* gv -Ap |void |save_bool |NN bool* boolp -Ap |void |save_clearsv |NN SV** svp -Ap |void |save_delete |NN HV *hv|NN char *key|I32 klen +Cp |void |save_bool |NN bool* boolp +Cp |void |save_clearsv |NN SV** svp +Cp |void |save_delete |NN HV *hv|NN char *key|I32 klen Ap |void |save_hdelete |NN HV *hv|NN SV *keysv Ap |void |save_adelete |NN AV *av|SSize_t key -Ap |void |save_destructor|DESTRUCTORFUNC_NOCONTEXT_t f|NN void* p -Ap |void |save_destructor_x|DESTRUCTORFUNC_t f|NULLOK void* p -ApMb |void |save_freesv |NULLOK SV* sv +Cp |void |save_destructor|DESTRUCTORFUNC_NOCONTEXT_t f|NN void* p +Cp |void |save_destructor_x|DESTRUCTORFUNC_t f|NULLOK void* p +CpMb |void |save_freesv |NULLOK SV* sv : Used in SAVEFREOP(), used in op.c, pp_ctl.c -ApMb |void |save_freeop |NULLOK OP* o -ApMb |void |save_freepv |NULLOK char* pv +CpMb |void |save_freeop |NULLOK OP* o +CpMb |void |save_freepv |NULLOK char* pv Ap |void |save_generic_svref|NN SV** sptr Ap |void |save_generic_pvref|NN char** str Ap |void |save_shared_pvref|NN char** str @@ -1657,24 +1664,24 @@ Am |void |save_helem |NN HV *hv|NN SV *key|NN SV **sptr Ap |void |save_helem_flags|NN HV *hv|NN SV *key|NN SV **sptr|const U32 flags Apdh |void |save_hptr |NN HV** hptr -Ap |void |save_I16 |NN I16* intp -Ap |void |save_I32 |NN I32* intp -Ap |void |save_I8 |NN I8* bytep -Ap |void |save_int |NN int* intp +Cp |void |save_I16 |NN I16* intp +Cp |void |save_I32 |NN I32* intp +Cp |void |save_I8 |NN I8* bytep +Cp |void |save_int |NN int* intp Apdh |void |save_item |NN SV* item -Ap |void |save_iv |NN IV *ivp +Cp |void |save_iv |NN IV *ivp AbpDdh |void |save_list |NN SV** sarg|I32 maxsarg -AbpD |void |save_long |NN long* longp -ApMb |void |save_mortalizesv|NN SV* sv +CbpD |void |save_long |NN long* longp +CpMb |void |save_mortalizesv|NN SV* sv AbpD |void |save_nogv |NN GV* gv : Used in SAVEFREOP(), used in gv.c, op.c, perl.c, pp_ctl.c, pp_sort.c ApMb |void |save_op Apdh |SV* |save_scalar |NN GV* gv -Ap |void |save_pptr |NN char** pptr +Cp |void |save_pptr |NN char** pptr Ap |void |save_vptr |NN void *ptr -Ap |void |save_re_context +Cp |void |save_re_context Ap |void |save_padsv_and_mortalize|PADOFFSET off -Ap |void |save_sptr |NN SV** sptr +Cp |void |save_sptr |NN SV** sptr Xp |void |save_strlen |NN STRLEN* ptr Apdh |SV* |save_svref |NN SV** sptr Axpo |void |savetmps @@ -1702,7 +1709,7 @@ p |OP* |scalarvoid |NN OP* o Apd |NV |scan_bin |NN const char* start|STRLEN len|NN STRLEN* retlen Apd |NV |scan_hex |NN const char* start|STRLEN len|NN STRLEN* retlen -Ap |char* |scan_num |NN const char* s|NN YYSTYPE *lvalp +Cp |char* |scan_num |NN const char* s|NN YYSTYPE *lvalp Apd |NV |scan_oct |NN const char* start|STRLEN len|NN STRLEN* retlen Axpd |OP* |op_scope |NULLOK OP* o : Only used by perl.c/miniperl.c, but defined in caretx.c @@ -1712,51 +1719,51 @@ #ifdef PERL_USE_3ARG_SIGHANDLER : Used in perl.c Tp |Signal_t |sighandler |int sig|NULLOK Siginfo_t *info|NULLOK void *uap -ATp |Signal_t |csighandler |int sig|NULLOK Siginfo_t *info|NULLOK void *uap +CTp |Signal_t |csighandler |int sig|NULLOK Siginfo_t *info|NULLOK void *uap #else Tp |Signal_t |sighandler |int sig -ATp |Signal_t |csighandler |int sig +CTp |Signal_t |csighandler |int sig #endif Tp |Signal_t |sighandler1 |int sig -ATp |Signal_t |csighandler1 |int sig +CTp |Signal_t |csighandler1 |int sig Tp |Signal_t |sighandler3 |int sig|NULLOK Siginfo_t *info|NULLOK void *uap -ATp |Signal_t |csighandler3 |int sig|NULLOK Siginfo_t *info|NULLOK void *uap -ATp |Signal_t |perly_sighandler |int sig|NULLOK Siginfo_t *info|NULLOK void *uap|bool safe -Ap |SV** |stack_grow |NN SV** sp|NN SV** p|SSize_t n +CTp |Signal_t |csighandler3 |int sig|NULLOK Siginfo_t *info|NULLOK void *uap +CTp |Signal_t |perly_sighandler |int sig|NULLOK Siginfo_t *info|NULLOK void *uap|bool safe +Cp |SV** |stack_grow |NN SV** sp|NN SV** p|SSize_t n Ap |I32 |start_subparse |I32 is_format|U32 flags Xp |void |init_named_cv |NN CV *cv|NN OP *nameop : Used in pp_ctl.c p |void |sub_crush_depth|NN CV* cv -ApbMd |bool |sv_2bool |NN SV *const sv -Apd |bool |sv_2bool_flags |NN SV *sv|I32 flags +CpbMd |bool |sv_2bool |NN SV *const sv +Cpd |bool |sv_2bool_flags |NN SV *sv|I32 flags Apd |CV* |sv_2cv |NULLOK SV* sv|NN HV **const st|NN GV **const gvp \ |const I32 lref Apd |IO* |sv_2io |NN SV *const sv #if defined(PERL_IN_SV_C) S |bool |glob_2number |NN GV* const gv #endif -ApMb |IV |sv_2iv |NN SV *sv +CpMb |IV |sv_2iv |NN SV *sv Apd |IV |sv_2iv_flags |NN SV *const sv|const I32 flags Apd |SV* |sv_2mortal |NULLOK SV *const sv Apd |NV |sv_2nv_flags |NN SV *const sv|const I32 flags : Used in pp.c, pp_hot.c, sv.c pxd |SV* |sv_2num |NN SV *const sv -ApMb |char* |sv_2pv |NN SV *sv|NULLOK STRLEN *lp -Apd |char* |sv_2pv_flags |NN SV *const sv|NULLOK STRLEN *const lp|const I32 flags +CpMb |char* |sv_2pv |NN SV *sv|NULLOK STRLEN *lp +Cpd |char* |sv_2pv_flags |NN SV *const sv|NULLOK STRLEN *const lp|const U32 flags ApdMb |char* |sv_2pvutf8 |NN SV *sv|NULLOK STRLEN *const lp Ap |char* |sv_2pvutf8_flags |NN SV *sv|NULLOK STRLEN *const lp|const U32 flags ApdMb |char* |sv_2pvbyte |NN SV *sv|NULLOK STRLEN *const lp -Ap |char* |sv_2pvbyte_flags |NN SV *sv|NULLOK STRLEN *const lp|const U32 flags +Apd |char* |sv_2pvbyte_flags |NN SV *sv|NULLOK STRLEN *const lp|const U32 flags AbpD |char* |sv_pvn_nomg |NN SV* sv|NULLOK STRLEN* lp -ApMb |UV |sv_2uv |NN SV *sv +CpMb |UV |sv_2uv |NN SV *sv Apd |UV |sv_2uv_flags |NN SV *const sv|const I32 flags -AbpdD |IV |sv_iv |NN SV* sv -AbpdD |UV |sv_uv |NN SV* sv -AbpdD |NV |sv_nv |NN SV* sv -AbpdD |char* |sv_pvn |NN SV *sv|NN STRLEN *lp -AbpdD |char* |sv_pvutf8n |NN SV *sv|NN STRLEN *lp -AbpdD |char* |sv_pvbyten |NN SV *sv|NN STRLEN *lp -Apd |I32 |sv_true |NULLOK SV *const sv +CbpdD |IV |sv_iv |NN SV* sv +CbpdD |UV |sv_uv |NN SV* sv +CbpdD |NV |sv_nv |NN SV* sv +CbpdD |char* |sv_pvn |NN SV *sv|NN STRLEN *lp +CbpdD |char* |sv_pvutf8n |NN SV *sv|NN STRLEN *lp +CbpdD |char* |sv_pvbyten |NN SV *sv|NN STRLEN *lp +Cpd |I32 |sv_true |NULLOK SV *const sv #if defined(PERL_IN_SV_C) Sd |void |sv_add_arena |NN char *const ptr|const U32 size \ |const U32 flags @@ -1816,7 +1823,7 @@ : Used only in perl.c pd |void |sv_free_arenas Apd |char* |sv_gets |NN SV *const sv|NN PerlIO *const fp|I32 append -Apd |char* |sv_grow |NN SV *const sv|STRLEN newlen +Cpd |char* |sv_grow |NN SV *const sv|STRLEN newlen Apd |void |sv_inc |NULLOK SV *const sv Apd |void |sv_inc_nomg |NULLOK SV *const sv ApMdb |void |sv_insert |NN SV *const bigstr|const STRLEN offset \ @@ -1840,7 +1847,7 @@ ApdbMR |SV* |sv_mortalcopy |NULLOK SV *const oldsv ApdR |SV* |sv_mortalcopy_flags|NULLOK SV *const oldsv|U32 flags ApdR |SV* |sv_newmortal -Apd |SV* |sv_newref |NULLOK SV *const sv +Cpd |SV* |sv_newref |NULLOK SV *const sv Ap |char* |sv_peek |NULLOK SV* sv Apd |void |sv_pos_u2b |NULLOK SV *const sv|NN I32 *const offsetp|NULLOK I32 *const lenp Apd |STRLEN |sv_pos_u2b_flags|NN SV *const sv|STRLEN uoffset \ @@ -1848,9 +1855,11 @@ Apd |void |sv_pos_b2u |NULLOK SV *const sv|NN I32 *const offsetp Apd |STRLEN |sv_pos_b2u_flags|NN SV *const sv|STRLEN const offset \ |U32 flags -ApMdb |char* |sv_pvn_force |NN SV* sv|NULLOK STRLEN* lp -Apd |char* |sv_pvutf8n_force|NN SV *const sv|NULLOK STRLEN *const lp -Apd |char* |sv_pvbyten_force|NN SV *const sv|NULLOK STRLEN *const lp +CpMdb |char* |sv_pvn_force |NN SV* sv|NULLOK STRLEN* lp +Cpd |char* |sv_pvutf8n_force|NN SV *const sv|NULLOK STRLEN *const lp +Ip |char* |sv_pvutf8n_force_wrapper|NN SV *const sv|NULLOK STRLEN *const lp|const U32 dummy +Cpd |char* |sv_pvbyten_force|NN SV *const sv|NULLOK STRLEN *const lp +Ip |char* |sv_pvbyten_force_wrapper|NN SV *const sv|NULLOK STRLEN *const lp|const U32 dummy Apd |char* |sv_recode_to_utf8 |NN SV* sv|NN SV *encoding Apd |bool |sv_cat_decode |NN SV* dsv|NN SV *encoding|NN SV *ssv|NN int *offset \ |NN char* tstr|int tlen @@ -1879,13 +1888,13 @@ Apd |char *|sv_setpv_bufsize|NN SV *const sv|const STRLEN cur|const STRLEN len Xp |void |sv_sethek |NN SV *const sv|NULLOK const HEK *const hek ApMdb |void |sv_setsv |NN SV *dstr|NULLOK SV *sstr -ApMdb |void |sv_taint |NN SV* sv -ApdR |bool |sv_tainted |NN SV *const sv +CpMdb |void |sv_taint |NN SV* sv +CpdR |bool |sv_tainted |NN SV *const sv Apd |int |sv_unmagic |NN SV *const sv|const int type Apd |int |sv_unmagicext |NN SV *const sv|const int type|NULLOK MGVTBL *vtbl ApdMb |void |sv_unref |NN SV* sv Apd |void |sv_unref_flags |NN SV *const ref|const U32 flags -Apd |void |sv_untaint |NN SV *const sv +Cpd |void |sv_untaint |NN SV *const sv Apd |void |sv_upgrade |NN SV *const sv|svtype new_type ApdMb |void |sv_usepvn |NN SV* sv|NULLOK char* ptr|STRLEN len Apd |void |sv_usepvn_flags|NN SV *const sv|NULLOK char* ptr|const STRLEN len\ @@ -1899,147 +1908,582 @@ Apd |void |sv_vsetpvfn |NN SV *const sv|NN const char *const pat|const STRLEN patlen \ |NULLOK va_list *const args|NULLOK SV **const svargs \ |const Size_t sv_count|NULLOK bool *const maybe_tainted -ApR |NV |str_to_version |NN SV *sv -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_DOOP_C) -EiR |SV* |add_cp_to_invlist |NULLOK SV* invlist|const UV cp -Ei |void |invlist_extend |NN SV* const invlist|const UV len -Ei |void |invlist_set_len|NN SV* const invlist|const UV len|const bool offset -EiRT |UV |invlist_highest|NN SV* const invlist -#endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_OP_C) -EiRT |STRLEN*|get_invlist_iter_addr |NN SV* invlist -EiT |void |invlist_iterinit|NN SV* invlist -EiRT |bool |invlist_iternext|NN SV* invlist|NN UV* start|NN UV* end -EiT |void |invlist_iterfinish|NN SV* invlist +CpR |NV |str_to_version |NN SV *sv +Cp |void |regdump |NN const regexp* r +CiTop |struct regexp *|ReANY |NN const REGEXP * const re +Adph |I32 |pregexec |NN REGEXP * const prog|NN char* stringarg \ + |NN char* strend|NN char* strbeg \ + |SSize_t minend |NN SV* screamer|U32 nosave +Ap |void |pregfree |NULLOK REGEXP* r +Cp |void |pregfree2 |NN REGEXP *rx +: FIXME - is anything in re using this now? +EXp |REGEXP*|reg_temp_copy |NULLOK REGEXP* dsv|NN REGEXP* ssv +Cp |void |regfree_internal|NN REGEXP *const rx +#if defined(USE_ITHREADS) +Cp |void* |regdupe_internal|NN REGEXP * const r|NN CLONE_PARAMS* param #endif +EXp |regexp_engine const *|current_re_engine +Adph |REGEXP*|pregcomp |NN SV * const pattern|const U32 flags +p |REGEXP*|re_op_compile |NULLOK SV ** const patternp \ + |int pat_count|NULLOK OP *expr \ + |NN const regexp_engine* eng \ + |NULLOK REGEXP *old_re \ + |NULLOK bool *is_bare_re \ + |const U32 rx_flags|const U32 pm_flags +Ap |REGEXP*|re_compile |NN SV * const pattern|U32 orig_rx_flags +Cp |char* |re_intuit_start|NN REGEXP * const rx \ + |NULLOK SV* sv \ + |NN const char* const strbeg \ + |NN char* strpos \ + |NN char* strend \ + |const U32 flags \ + |NULLOK re_scream_pos_data *data +Cp |SV* |re_intuit_string|NN REGEXP *const r +Cp |I32 |regexec_flags |NN REGEXP *const rx|NN char *stringarg \ + |NN char *strend|NN char *strbeg \ + |SSize_t minend|NN SV *sv \ + |NULLOK void *data|U32 flags +CpR |regnode*|regnext |NULLOK regnode* p +EXp |SV*|reg_named_buff |NN REGEXP * const rx|NULLOK SV * const key \ + |NULLOK SV * const value|const U32 flags +EXp |SV*|reg_named_buff_iter |NN REGEXP * const rx|NULLOK const SV * const lastkey \ + |const U32 flags +Cp |SV*|reg_named_buff_fetch |NN REGEXP * const rx|NN SV * const namesv|const U32 flags +Cp |bool|reg_named_buff_exists |NN REGEXP * const rx|NN SV * const key|const U32 flags +Cp |SV*|reg_named_buff_firstkey |NN REGEXP * const rx|const U32 flags +Cp |SV*|reg_named_buff_nextkey |NN REGEXP * const rx|const U32 flags +Cp |SV*|reg_named_buff_scalar |NN REGEXP * const rx|const U32 flags +Cp |SV*|reg_named_buff_all |NN REGEXP * const rx|const U32 flags + +: FIXME - is anything in re using this now? +EXp |void|reg_numbered_buff_fetch|NN REGEXP * const rx|const I32 paren|NULLOK SV * const sv +: FIXME - is anything in re using this now? +EXp |void|reg_numbered_buff_store|NN REGEXP * const rx|const I32 paren|NULLOK SV const * const value +: FIXME - is anything in re using this now? +EXp |I32|reg_numbered_buff_length|NN REGEXP * const rx|NN const SV * const sv|const I32 paren + +: FIXME - is anything in re using this now? +EXp |SV*|reg_qr_package|NN REGEXP * const rx +EXpRT |I16 |do_uniprop_match|NN const char * const key|const U16 key_len +EXpRT |const char * const *|get_prop_values|const int table_index +EXpR |SV * |get_prop_definition|const int table_index +EXpRT |const char *|get_deprecated_property_msg|const Size_t warning_offset #if defined(PERL_IN_REGCOMP_C) EiRT |bool |invlist_is_iterating|NN SV* const invlist EiR |SV* |invlist_contents|NN SV* const invlist \ |const bool traditional_style EixRT |UV |invlist_lowest|NN SV* const invlist -#ifndef PERL_EXT_RE_BUILD -EiRT |UV* |_invlist_array_init |NN SV* const invlist|const bool will_have_0 -EiRT |UV |invlist_max |NN SV* const invlist -EiRT |IV* |get_invlist_previous_index_addr|NN SV* invlist -EiT |void |invlist_set_previous_index|NN SV* const invlist|const IV index -EiRT |IV |invlist_previous_index|NN SV* const invlist -EiT |void |invlist_trim |NN SV* invlist -Ei |void |invlist_clear |NN SV* invlist -#endif ESRT |bool |new_regcurly |NN const char *s|NN const char *e ERS |SV* |make_exactf_invlist |NN RExC_state_t *pRExC_state \ |NN regnode *node -#ifndef PERL_EXT_RE_BUILD -ES |void |_append_range_to_invlist |NN SV* const invlist|const UV start|const UV end -ES |void |invlist_replace_list_destroys_src|NN SV *dest|NN SV *src -S |void |initialize_invlist_guts|NN SV* invlist|const Size_t initial_size -#endif -#endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_DOOP_C) -m |void |_invlist_intersection |NN SV* const a|NN SV* const b|NN SV** i -EXp |void |_invlist_intersection_maybe_complement_2nd \ - |NULLOK SV* const a|NN SV* const b \ - |const bool complement_b|NN SV** i -Cm |void |_invlist_union |NULLOK SV* const a|NN SV* const b|NN SV** output -EXp |void |_invlist_union_maybe_complement_2nd \ - |NULLOK SV* const a|NN SV* const b \ - |const bool complement_b|NN SV** output -m |void |_invlist_subtract|NN SV* const a|NN SV* const b|NN SV** result -EXp |void |_invlist_invert|NN SV* const invlist -EXpR |SV* |_new_invlist |IV initial_size -EXpR |SV* |_add_range_to_invlist |NULLOK SV* invlist|UV start|UV end -EXpR |SV* |_setup_canned_invlist|const STRLEN size|const UV element0|NN UV** other_elements_ptr -#endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_SV_C) -EpX |SV* |invlist_clone |NN SV* const invlist|NULLOK SV* newlist -#endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) \ - || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C) \ - || defined(PERL_IN_PP_C) || defined(PERL_IN_OP_C) \ - || defined(PERL_IN_DOOP_C) -EiRT |UV* |invlist_array |NN SV* const invlist -EiRT |bool |is_invlist |NULLOK SV* const invlist -EiRT |bool* |get_invlist_offset_addr|NN SV* invlist -EiRT |UV |_invlist_len |NN SV* const invlist -EiRT |bool |_invlist_contains_cp|NN SV* const invlist|const UV cp -EXpRT |SSize_t|_invlist_search |NN SV* const invlist|const UV cp -#endif -#if defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UNIVERSAL_C) -EiT |const char *|get_regex_charset_name|const U32 flags|NN STRLEN* const lenp -#endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) -EXp |SV* |_get_regclass_nonbitmap_data \ - |NULLOK const regexp *prog \ - |NN const struct regnode *node \ - |bool doinit \ - |NULLOK SV **listsvp \ - |NULLOK SV **lonly_utf8_locale \ - |NULLOK SV **output_invlist -#endif -#if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C) || defined(PERL_IN_OP_C) -EXp |void |_invlist_dump |NN PerlIO *file|I32 level \ - |NN const char* const indent \ - |NN SV* const invlist -#endif -Ap |void |taint_env -Ap |void |taint_proper |NULLOK const char* f|NN const char *const s -EXp |char * |_byte_dump_string \ - |NN const U8 * const start \ - |const STRLEN len \ - |const bool format -#if defined(PERL_IN_UTF8_C) -iTR |int |does_utf8_overflow|NN const U8 * const s \ - |NN const U8 * e \ - |const bool consider_overlongs -iTR |int |is_utf8_overlong_given_start_byte_ok|NN const U8 * const s \ - |const STRLEN len -iTR |int |isFF_OVERLONG |NN const U8 * const s|const STRLEN len -SR |char * |unexpected_non_continuation_text \ - |NN const U8 * const s \ - |STRLEN print_len \ - |const STRLEN non_cont_byte_pos \ - |const STRLEN expect_len -#if 0 /* Not currently used, but may be needed in the future */ -S |void |warn_on_first_deprecated_use \ - |NN const char * const name \ - |NN const char * const alternative \ - |const bool use_locale \ - |NN const char * const file \ - |const unsigned line -#endif -S |UV |_to_utf8_case |const UV uv1 \ - |NULLOK const U8 *p \ - |NN U8* ustrp \ - |NN STRLEN *lenp \ - |NN SV *invlist \ - |NN const I32 * const invmap \ - |NULLOK const U32 * const * const aux_tables \ - |NULLOK const U8 * const aux_table_lengths \ - |NN const char * const normal -S |UV |turkic_fc |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp -S |UV |turkic_lc |NN const U8 * const p0|NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp -S |UV |turkic_uc |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp -#endif -Cp |UV |_to_utf8_lower_flags|NN const U8 *p|NULLOK const U8* e \ - |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags -Cp |UV |_to_utf8_upper_flags |NN const U8 *p|NULLOK const U8 *e \ - |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags -Cp |UV |_to_utf8_title_flags |NN const U8 *p|NULLOK const U8* e \ - |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags -Cp |UV |_to_utf8_fold_flags|NN const U8 *p|NULLOK const U8 *e \ - |NN U8* ustrp|NULLOK STRLEN *lenp|U8 flags -#if defined(PERL_IN_MG_C) || defined(PERL_IN_PP_C) -pT |bool |translate_substr_offsets|STRLEN curlen|IV pos1_iv \ - |bool pos1_is_uv|IV len_iv \ - |bool len_is_uv|NN STRLEN *posp \ - |NN STRLEN *lenp -#endif -#if defined(UNLINK_ALL_VERSIONS) -Ap |I32 |unlnk |NN const char* f -#endif -AbpdD |SSize_t|unpack_str |NN const char *pat|NN const char *patend|NN const char *s \ - |NULLOK const char *strbeg|NN const char *strend|NULLOK char **new_s \ - |I32 ocnt|U32 flags +ES |regnode_offset|reg |NN RExC_state_t *pRExC_state \ + |I32 paren|NN I32 *flagp|U32 depth +ES |regnode_offset|regnode_guts|NN RExC_state_t *pRExC_state \ + |const U8 op \ + |const STRLEN extra_len \ + |NN const char* const name +ES |void |change_engine_size|NN RExC_state_t *pRExC_state|const Ptrdiff_t size +ES |regnode_offset|reganode|NN RExC_state_t *pRExC_state|U8 op \ + |U32 arg +ES |regnode_offset|regpnode|NN RExC_state_t *pRExC_state|U8 op \ + |NN SV * arg +ES |regnode_offset|reg2Lanode|NN RExC_state_t *pRExC_state \ + |const U8 op \ + |const U32 arg1 \ + |const I32 arg2 +ES |regnode_offset|regatom |NN RExC_state_t *pRExC_state \ + |NN I32 *flagp|U32 depth +ES |regnode_offset|regbranch |NN RExC_state_t *pRExC_state \ + |NN I32 *flagp|I32 first|U32 depth +ES |void |set_ANYOF_arg |NN RExC_state_t* const pRExC_state \ + |NN regnode* const node \ + |NULLOK SV* const cp_list \ + |NULLOK SV* const runtime_defns \ + |NULLOK SV* const only_utf8_locale_list +ES |void |output_posix_warnings \ + |NN RExC_state_t *pRExC_state \ + |NN AV* posix_warnings +EiT |Size_t |find_first_differing_byte_pos|NN const U8 * s1|NN const U8 * s2| const Size_t max +ES |AV* |add_multi_match|NULLOK AV* multi_char_matches \ + |NN SV* multi_string \ + |const STRLEN cp_count +ES |regnode_offset|regclass|NN RExC_state_t *pRExC_state \ + |NN I32 *flagp|U32 depth|const bool stop_at_1 \ + |bool allow_multi_fold \ + |const bool silence_non_portable \ + |const bool strict \ + |bool optimizable \ + |NULLOK SV** ret_invlist +ES |SV * |parse_uniprop_string|NN const char * const name \ + |Size_t name_len \ + |const bool is_utf8 \ + |const bool to_fold \ + |const bool runtime \ + |const bool deferrable \ + |NULLOK AV ** strings \ + |NN bool * user_defined_ptr \ + |NN SV * msg \ + |const STRLEN level +ES |SV * |handle_user_defined_property|NN const char * name \ + |const STRLEN name_len \ + |const bool is_utf8 \ + |const bool to_fold \ + |const bool runtime \ + |const bool deferrable \ + |NN SV* contents \ + |NN bool *user_defined_ptr \ + |NN SV * msg \ + |const STRLEN level +ERS |REGEXP*|compile_wildcard|NN const char * subpattern|const STRLEN len\ + |const bool ignore_case +ES |I32 |execute_wildcard|NN REGEXP * const prog|NN char* stringarg \ + |NN char* strend|NN char* strbeg \ + |SSize_t minend |NN SV* screamer|U32 nosave +ES |bool |handle_names_wildcard \ + |NN const char * wname \ + |const STRLEN wname_len \ + |NN SV ** prop_definition \ + |NN AV ** strings +ES |void|add_above_Latin1_folds|NN RExC_state_t *pRExC_state|const U8 cp \ + |NN SV** invlist +ES |regnode_offset|handle_named_backref|NN RExC_state_t *pRExC_state \ + |NN I32 *flagp \ + |NN char * parse_start \ + |char ch +ESTR |unsigned int|regex_set_precedence|const U8 my_operator +ES |regnode_offset|handle_regex_sets|NN RExC_state_t *pRExC_state \ + |NULLOK SV ** return_invlist \ + |NN I32 *flagp|U32 depth \ + |NN char * const oregcomp_parse +ES |void |set_regex_pv |NN RExC_state_t *pRExC_state|NN REGEXP *Rx +# if defined(DEBUGGING) && defined(ENABLE_REGEX_SETS_DEBUGGING) +ES |void |dump_regex_sets_structures \ + |NN RExC_state_t *pRExC_state \ + |NN AV * stack \ + |const IV fence|NN AV * fence_stack +# endif +ES |void|parse_lparen_question_flags|NN RExC_state_t *pRExC_state +ES |regnode_offset|reg_node|NN RExC_state_t *pRExC_state|U8 op +ES |regnode_offset|regpiece|NN RExC_state_t *pRExC_state \ + |NN I32 *flagp|U32 depth +ES |bool |grok_bslash_N |NN RExC_state_t *pRExC_state \ + |NULLOK regnode_offset* nodep \ + |NULLOK UV *code_point_p \ + |NULLOK int* cp_count \ + |NN I32 *flagp \ + |const bool strict \ + |const U32 depth +ES |void |reginsert |NN RExC_state_t *pRExC_state \ + |const U8 op \ + |const regnode_offset operand \ + |const U32 depth +ESR |bool |regtail |NN RExC_state_t * pRExC_state \ + |NN const regnode_offset p \ + |NN const regnode_offset val \ + |const U32 depth +ES |SV * |reg_scan_name |NN RExC_state_t *pRExC_state \ + |U32 flags +ES |U32 |join_exact |NN RExC_state_t *pRExC_state \ + |NN regnode *scan|NN UV *min_subtract \ + |NN bool *unfolded_multi_char \ + |U32 flags|NULLOK regnode *val|U32 depth +EST |U8 |compute_EXACTish|NN RExC_state_t *pRExC_state +ES |void |nextchar |NN RExC_state_t *pRExC_state +ES |void |skip_to_be_ignored_text|NN RExC_state_t *pRExC_state \ + |NN char ** p \ + |const bool force_to_xmod +EiT |char * |reg_skipcomment|NN RExC_state_t *pRExC_state|NN char * p +ES |void |scan_commit |NN const RExC_state_t *pRExC_state \ + |NN struct scan_data_t *data \ + |NN SSize_t *minlenp \ + |int is_inf +ES |void |populate_ANYOF_from_invlist|NN regnode *node|NN SV** invlist_ptr +ES |void |ssc_anything |NN regnode_ssc *ssc +ESRT |int |ssc_is_anything|NN const regnode_ssc *ssc +ES |void |ssc_init |NN const RExC_state_t *pRExC_state \ + |NN regnode_ssc *ssc +ESRT |int |ssc_is_cp_posixl_init|NN const RExC_state_t *pRExC_state \ + |NN const regnode_ssc *ssc +ES |void |ssc_and |NN const RExC_state_t *pRExC_state \ + |NN regnode_ssc *ssc \ + |NN const regnode_charclass *and_with +ES |void |ssc_or |NN const RExC_state_t *pRExC_state \ + |NN regnode_ssc *ssc \ + |NN const regnode_charclass *or_with +ES |SV* |get_ANYOF_cp_list_for_ssc \ + |NN const RExC_state_t *pRExC_state \ + |NN const regnode_charclass* const node +ES |void |ssc_intersection|NN regnode_ssc *ssc \ + |NN SV* const invlist|const bool invert_2nd +ES |void |ssc_union |NN regnode_ssc *ssc \ + |NN SV* const invlist|const bool invert_2nd +ES |void |ssc_add_range |NN regnode_ssc *ssc \ + |UV const start|UV const end +ES |void |ssc_cp_and |NN regnode_ssc *ssc \ + |UV const cp +EST |void |ssc_clear_locale|NN regnode_ssc *ssc +ETS |bool |is_ssc_worth_it|NN const RExC_state_t * pRExC_state \ + |NN const regnode_ssc * ssc +ES |void |ssc_finalize |NN RExC_state_t *pRExC_state \ + |NN regnode_ssc *ssc +ES |SSize_t|study_chunk |NN RExC_state_t *pRExC_state \ + |NN regnode **scanp|NN SSize_t *minlenp \ + |NN SSize_t *deltap|NN regnode *last \ + |NULLOK struct scan_data_t *data \ + |I32 stopparen|U32 recursed_depth \ + |NULLOK regnode_ssc *and_withp \ + |U32 flags|U32 depth|bool was_mutate_ok +ES |void |rck_elide_nothing|NN regnode *node +ESR |SV * |get_ANYOFM_contents|NN const regnode * n +ESRT |U32 |add_data |NN RExC_state_t* const pRExC_state \ + |NN const char* const s|const U32 n +frS |void |re_croak |bool utf8|NN const char* pat|... +ES |int |handle_possible_posix \ + |NN RExC_state_t *pRExC_state \ + |NN const char* const s \ + |NULLOK char ** updated_parse_ptr \ + |NULLOK AV** posix_warnings \ + |const bool check_only +ES |I32 |make_trie |NN RExC_state_t *pRExC_state \ + |NN regnode *startbranch|NN regnode *first \ + |NN regnode *last|NN regnode *tail \ + |U32 word_count|U32 flags|U32 depth +ES |regnode *|construct_ahocorasick_from_trie|NN RExC_state_t *pRExC_state \ + |NN regnode *source|U32 depth +ETSR |int |edit_distance |NN const UV *src \ + |NN const UV *tgt \ + |const STRLEN x \ + |const STRLEN y \ + |const SSize_t maxDistance +# ifdef DEBUGGING +EFp |int |re_indentf |NN const char *fmt|U32 depth|... +ES |void |regdump_intflags|NULLOK const char *lead| const U32 flags +ES |void |regdump_extflags|NULLOK const char *lead| const U32 flags +ES |const regnode*|dumpuntil|NN const regexp *r|NN const regnode *start \ + |NN const regnode *node \ + |NULLOK const regnode *last \ + |NULLOK const regnode *plast \ + |NN SV* sv|I32 indent|U32 depth +ES |void |put_code_point |NN SV* sv|UV c +ES |bool |put_charclass_bitmap_innards|NN SV* sv \ + |NULLOK char* bitmap \ + |NULLOK SV* nonbitmap_invlist \ + |NULLOK SV* only_utf8_locale_invlist\ + |NULLOK const regnode * const node \ + |const U8 flags \ + |const bool force_as_is_display +ES |SV* |put_charclass_bitmap_innards_common \ + |NN SV* invlist \ + |NULLOK SV* posixes \ + |NULLOK SV* only_utf8 \ + |NULLOK SV* not_utf8 \ + |NULLOK SV* only_utf8_locale \ + |const bool invert +ES |void |put_charclass_bitmap_innards_invlist \ + |NN SV *sv \ + |NN SV* invlist +ES |void |put_range |NN SV* sv|UV start|const UV end \ + |const bool allow_literals +ES |void |dump_trie |NN const struct _reg_trie_data *trie\ + |NULLOK HV* widecharmap|NN AV *revcharmap\ + |U32 depth +ES |void |dump_trie_interim_list|NN const struct _reg_trie_data *trie\ + |NULLOK HV* widecharmap|NN AV *revcharmap\ + |U32 next_alloc|U32 depth +ES |void |dump_trie_interim_table|NN const struct _reg_trie_data *trie\ + |NULLOK HV* widecharmap|NN AV *revcharmap\ + |U32 next_alloc|U32 depth +ESR |bool |regtail_study |NN RExC_state_t *pRExC_state \ + |NN regnode_offset p|NN const regnode_offset val|U32 depth +# endif +# ifndef PERL_EXT_RE_BUILD +EiRT |UV* |_invlist_array_init |NN SV* const invlist|const bool will_have_0 +EiRT |UV |invlist_max |NN SV* const invlist +EiRT |IV* |get_invlist_previous_index_addr|NN SV* invlist +EiT |void |invlist_set_previous_index|NN SV* const invlist|const IV index +EiRT |IV |invlist_previous_index|NN SV* const invlist +EiT |void |invlist_trim |NN SV* invlist +Ei |void |invlist_clear |NN SV* invlist +ES |void |_append_range_to_invlist |NN SV* const invlist|const UV start|const UV end +ES |void |invlist_replace_list_destroys_src|NN SV *dest|NN SV *src +S |void |initialize_invlist_guts|NN SV* invlist|const Size_t initial_size +# endif +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) +EiR |SV* |add_cp_to_invlist |NULLOK SV* invlist|const UV cp +Ei |void |invlist_extend |NN SV* const invlist|const UV len +Ei |void |invlist_set_len|NN SV* const invlist|const UV len|const bool offset +EiRT |UV |invlist_highest|NN SV* const invlist +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_UTF8_C) +m |void |_invlist_intersection |NN SV* const a|NN SV* const b|NN SV** i +EXp |void |_invlist_intersection_maybe_complement_2nd \ + |NULLOK SV* const a|NN SV* const b \ + |const bool complement_b|NN SV** i +Cm |void |_invlist_union |NULLOK SV* const a|NN SV* const b|NN SV** output +EXp |void |_invlist_union_maybe_complement_2nd \ + |NULLOK SV* const a|NN SV* const b \ + |const bool complement_b|NN SV** output +m |void |_invlist_subtract|NN SV* const a|NN SV* const b|NN SV** result +EXp |void |_invlist_invert|NN SV* const invlist +EXpR |SV* |_new_invlist |IV initial_size +EXpR |SV* |_add_range_to_invlist |NULLOK SV* invlist|UV start|UV end +EXpR |SV* |_setup_canned_invlist|const STRLEN size|const UV element0|NN UV** other_elements_ptr +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_TOKE_C) +EpRX |bool |grok_bslash_x |NN char** s \ + |NN const char* const send \ + |NN UV* uv \ + |NN const char** message \ + |NULLOK U32 * packed_warn \ + |const bool strict \ + |const bool allow_UV_MAX \ + |const bool utf8 +EpRX |bool |grok_bslash_c |const char source \ + |NN U8 * result \ + |NN const char** message \ + |NULLOK U32 * packed_warn +EpRX |bool |grok_bslash_o |NN char** s \ + |NN const char* const send \ + |NN UV* uv \ + |NN const char** message \ + |NULLOK U32 * packed_warn \ + |const bool strict \ + |const bool allow_UV_MAX \ + |const bool utf8 +EpRX |const char *|form_alien_digit_msg|const U8 which \ + |const STRLEN valids_len \ + |NN const char * const first_bad\ + |NN const char * const send \ + |const bool UTF \ + |const bool braced +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C) +EpRX |const char *|form_cp_too_large_msg|const U8 which \ + |NULLOK const char * string \ + |const Size_t len \ + |const UV cp +#endif +#if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C) || defined(PERL_IN_OP_C) +EXp |void |_invlist_dump |NN PerlIO *file|I32 level \ + |NN const char* const indent \ + |NN SV* const invlist +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_OP_C) +EiRT |STRLEN*|get_invlist_iter_addr |NN SV* invlist +EiT |void |invlist_iterinit|NN SV* invlist +EiRT |bool |invlist_iternext|NN SV* invlist|NN UV* start|NN UV* end +EiT |void |invlist_iterfinish|NN SV* invlist +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_UTF8_C) +EXpR |SV* |_new_invlist_C_array|NN const UV* const list +EXp |bool |_invlistEQ |NN SV* const a|NN SV* const b|const bool complement_b +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UNIVERSAL_C) +EiT |const char *|get_regex_charset_name|const U32 flags|NN STRLEN* const lenp +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) \ + || defined(PERL_IN_PP_C) || defined(PERL_IN_OP_C) \ + || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C) \ + || defined(PERL_IN_DOOP_C) +EiRT |UV* |invlist_array |NN SV* const invlist +EiRT |bool |is_invlist |NULLOK SV* const invlist +EiRT |bool* |get_invlist_offset_addr|NN SV* invlist +EiRT |UV |_invlist_len |NN SV* const invlist +EiRT |bool |_invlist_contains_cp|NN SV* const invlist|const UV cp +EXpRT |SSize_t|_invlist_search |NN SV* const invlist|const UV cp +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) +# ifndef PERL_EXT_RE_BUILD +Ep |SV* |get_regclass_nonbitmap_data \ + |NULLOK const regexp *prog \ + |NN const struct regnode *node \ + |bool doinit \ + |NULLOK SV **listsvp \ + |NULLOK SV **lonly_utf8_locale \ + |NULLOK SV **output_invlist +# else +Ep |SV* |get_re_gclass_nonbitmap_data \ + |NULLOK const regexp *prog \ + |NN const struct regnode *node \ + |bool doinit \ + |NULLOK SV **listsvp \ + |NULLOK SV **lonly_utf8_locale \ + |NULLOK SV **output_invlist +#endif +Ep |void |regprop |NULLOK const regexp *prog|NN SV* sv|NN const regnode* o|NULLOK const regmatch_info *reginfo \ + |NULLOK const RExC_state_t *pRExC_state +Efp |int |re_printf |NN const char *fmt|... +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) +ERp |bool |is_grapheme |NN const U8 * strbeg|NN const U8 * s|NN const U8 *strend|const UV cp +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C) +EXTp |UV |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const unsigned int flags +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_SV_C) +EpX |SV* |invlist_clone |NN SV* const invlist|NULLOK SV* newlist +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) +EiRT |bool |regcurly |NN const char *s +#endif +#if defined(PERL_IN_REGEXEC_C) +ERS |bool |isFOO_utf8_lc |const U8 classnum|NN const U8* character|NN const U8* e +ERTS |U8 * |find_next_masked|NN U8 * s \ + |NN const U8 * send \ + |const U8 byte|const U8 mask +ERTS |U8 *|find_span_end |NN U8* s|NN const U8 * send|const U8 span_byte +ERTS |U8 *|find_span_end_mask|NN U8 * s|NN const U8 * send \ + |const U8 span_byte|const U8 mask +ERS |SSize_t|regmatch |NN regmatch_info *reginfo|NN char *startpos|NN regnode *prog +WERS |I32 |regrepeat |NN regexp *prog|NN char **startposp \ + |NN const regnode *p \ + |NN char *loceol \ + |NN regmatch_info *const reginfo \ + |I32 max +ERS |bool |regtry |NN regmatch_info *reginfo|NN char **startposp +ERS |bool |reginclass |NULLOK regexp * const prog \ + |NN const regnode * const n \ + |NN const U8 * const p \ + |NN const U8 * const p_end \ + |bool const utf8_target +WES |CHECKPOINT|regcppush |NN const regexp *rex|I32 parenfloor\ + |U32 maxopenparen +WES |void |regcppop |NN regexp *rex|NN U32 *maxopenparen_p +WES |void |regcp_restore |NN regexp *rex|I32 ix|NN U32 *maxopenparen_p +ERST |U8* |reghop3 |NN U8 *s|SSize_t off|NN const U8 *lim +ERST |U8* |reghop4 |NN U8 *s|SSize_t off|NN const U8 *llim \ + |NN const U8 *rlim +ERST |U8* |reghopmaybe3 |NN U8 *s|SSize_t off|NN const U8 * const lim +ERS |char* |find_byclass |NN regexp * prog|NN const regnode *c \ + |NN char *s|NN const char *strend \ + |NULLOK regmatch_info *reginfo +ES |void |to_utf8_substr |NN regexp * prog +ES |bool |to_byte_substr |NN regexp * prog +ERST |I32 |reg_check_named_buff_matched |NN const regexp *rex \ + |NN const regnode *scan +ESR |bool |isGCB |const GCB_enum before \ + |const GCB_enum after \ + |NN const U8 * const strbeg \ + |NN const U8 * const curpos \ + |const bool utf8_target +ESR |GCB_enum|backup_one_GCB|NN const U8 * const strbeg \ + |NN U8 ** curpos \ + |const bool utf8_target +ESR |bool |isLB |LB_enum before \ + |LB_enum after \ + |NN const U8 * const strbeg \ + |NN const U8 * const curpos \ + |NN const U8 * const strend \ + |const bool utf8_target +ESR |LB_enum|advance_one_LB |NN U8 ** curpos \ + |NN const U8 * const strend \ + |const bool utf8_target +ESR |LB_enum|backup_one_LB |NN const U8 * const strbeg \ + |NN U8 ** curpos \ + |const bool utf8_target +ESR |bool |isSB |SB_enum before \ + |SB_enum after \ + |NN const U8 * const strbeg \ + |NN const U8 * const curpos \ + |NN const U8 * const strend \ + |const bool utf8_target +ESR |SB_enum|advance_one_SB |NN U8 ** curpos \ + |NN const U8 * const strend \ + |const bool utf8_target +ESR |SB_enum|backup_one_SB |NN const U8 * const strbeg \ + |NN U8 ** curpos \ + |const bool utf8_target +ESR |bool |isWB |WB_enum previous \ + |WB_enum before \ + |WB_enum after \ + |NN const U8 * const strbeg \ + |NN const U8 * const curpos \ + |NN const U8 * const strend \ + |const bool utf8_target +ESR |WB_enum|advance_one_WB |NN U8 ** curpos \ + |NN const U8 * const strend \ + |const bool utf8_target \ + |const bool skip_Extend_Format +ESR |WB_enum|backup_one_WB |NN WB_enum * previous \ + |NN const U8 * const strbeg \ + |NN U8 ** curpos \ + |const bool utf8_target +EiT |I32 |foldEQ_latin1_s2_folded|NN const char* a|NN const char* b|I32 len +# ifdef DEBUGGING +ES |void |dump_exec_pos |NN const char *locinput|NN const regnode *scan|NN const char *loc_regeol\ + |NN const char *loc_bostr|NN const char *loc_reg_starttry|const bool do_utf8|const U32 depth +ES |void |debug_start_match|NN const REGEXP *prog|const bool do_utf8\ + |NN const char *start|NN const char *end\ + |NN const char *blurb + +EFp |int |re_exec_indentf|NN const char *fmt|U32 depth|... +# endif +#endif +#if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C) +EXRp |bool |isFOO_lc |const U8 classnum|const U8 character +#endif + +Cp |void |taint_env +Cp |void |taint_proper |NULLOK const char* f|NN const char *const s +EXp |char * |_byte_dump_string \ + |NN const U8 * const start \ + |const STRLEN len \ + |const bool format + +#if defined(PERL_IN_UTF8_C) +iTR |int |does_utf8_overflow|NN const U8 * const s \ + |NN const U8 * e \ + |const bool consider_overlongs +iTR |int |is_utf8_overlong_given_start_byte_ok|NN const U8 * const s \ + |const STRLEN len +iTR |int |isFF_OVERLONG |NN const U8 * const s|const STRLEN len +SR |char * |unexpected_non_continuation_text \ + |NN const U8 * const s \ + |STRLEN print_len \ + |const STRLEN non_cont_byte_pos \ + |const STRLEN expect_len +#if 0 /* Not currently used, but may be needed in the future */ +S |void |warn_on_first_deprecated_use \ + |NN const char * const name \ + |NN const char * const alternative \ + |const bool use_locale \ + |NN const char * const file \ + |const unsigned line +#endif +S |UV |_to_utf8_case |const UV uv1 \ + |NULLOK const U8 *p \ + |NN U8* ustrp \ + |NN STRLEN *lenp \ + |NN SV *invlist \ + |NN const I32 * const invmap \ + |NULLOK const U32 * const * const aux_tables \ + |NULLOK const U8 * const aux_table_lengths \ + |NN const char * const normal +S |UV |turkic_fc |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp +S |UV |turkic_lc |NN const U8 * const p0|NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp +S |UV |turkic_uc |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp +#endif +Cp |UV |_to_utf8_lower_flags|NN const U8 *p|NULLOK const U8* e \ + |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags +Cp |UV |_to_utf8_upper_flags |NN const U8 *p|NULLOK const U8 *e \ + |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags +Cp |UV |_to_utf8_title_flags |NN const U8 *p|NULLOK const U8* e \ + |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags +Cp |UV |_to_utf8_fold_flags|NN const U8 *p|NULLOK const U8 *e \ + |NN U8* ustrp|NULLOK STRLEN *lenp|U8 flags +#if defined(PERL_IN_MG_C) || defined(PERL_IN_PP_C) +pT |bool |translate_substr_offsets|STRLEN curlen|IV pos1_iv \ + |bool pos1_is_uv|IV len_iv \ + |bool len_is_uv|NN STRLEN *posp \ + |NN STRLEN *lenp +#endif +#if defined(UNLINK_ALL_VERSIONS) +Cp |I32 |unlnk |NN const char* f +#endif +AbpdD |SSize_t|unpack_str |NN const char *pat|NN const char *patend|NN const char *s \ + |NULLOK const char *strbeg|NN const char *strend|NULLOK char **new_s \ + |I32 ocnt|U32 flags Apd |SSize_t|unpackstring |NN const char *pat|NN const char *patend|NN const char *s \ |NN const char *strend|U32 flags Ap |void |unsharepvn |NULLOK const char* sv|I32 len|U32 hash @@ -2067,7 +2511,7 @@ |NN bool *is_utf8p \ |NULLOK const U8 ** first_unconverted Apxd |U8* |bytes_to_utf8 |NN const U8 *s|NN STRLEN *lenp -ApdD |UV |utf8_to_uvchr |NN const U8 *s|NULLOK STRLEN *retlen +ApdDb |UV |utf8_to_uvchr |NN const U8 *s|NULLOK STRLEN *retlen CbpdD |UV |utf8_to_uvuni |NN const U8 *s|NULLOK STRLEN *retlen CbpD |UV |valid_utf8_to_uvuni |NN const U8 *s|NULLOK STRLEN *retlen AMpd |UV |utf8_to_uvchr_buf |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen @@ -2084,7 +2528,7 @@ |NULLOK STRLEN *retlen \ |const U32 flags \ |NULLOK U32 * errors -AxTdip |UV |utf8n_to_uvchr_msgs|NN const U8 *s \ +ATdip |UV |utf8n_to_uvchr_msgs|NN const U8 *s \ |STRLEN curlen \ |NULLOK STRLEN *retlen \ |const U32 flags \ @@ -2098,15 +2542,15 @@ |NULLOK U32 * errors \ |NULLOK AV ** msgs CipTRd |UV |valid_utf8_to_uvchr |NN const U8 *s|NULLOK STRLEN *retlen -Cdp |UV |utf8n_to_uvuni|NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags +CdbDp |UV |utf8n_to_uvuni|NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags Adm |U8* |uvchr_to_utf8 |NN U8 *d|UV uv Cp |U8* |uvuni_to_utf8 |NN U8 *d|UV uv Adm |U8* |uvchr_to_utf8_flags |NN U8 *d|UV uv|UV flags -Admx |U8* |uvchr_to_utf8_flags_msgs|NN U8 *d|UV uv|UV flags|NULLOK HV ** msgs +Adm |U8* |uvchr_to_utf8_flags_msgs|NN U8 *d|UV uv|UV flags|NULLOK HV ** msgs CMpd |U8* |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|const UV flags Cp |U8* |uvoffuni_to_utf8_flags_msgs|NN U8 *d|UV uv|const UV flags|NULLOK HV** msgs -Cdp |U8* |uvuni_to_utf8_flags |NN U8 *d|UV uv|UV flags +CdpbD |U8* |uvuni_to_utf8_flags |NN U8 *d|UV uv|UV flags Apd |char* |pv_uni_display |NN SV *dsv|NN const U8 *spv|STRLEN len|STRLEN pvlim|UV flags ApdR |char* |sv_uni_display |NN SV *dsv|NN SV *ssv|STRLEN pvlim|UV flags EXpR |Size_t |_inverse_folds |const UV cp \ @@ -2139,10 +2583,10 @@ Apd |void |warn_sv |NN SV *baseex Afpd |void |warn |NN const char* pat|... Apd |void |vwarn |NN const char* pat|NULLOK va_list* args -Afp |void |warner |U32 err|NN const char* pat|... -Afp |void |ck_warner |U32 err|NN const char* pat|... -Afp |void |ck_warner_d |U32 err|NN const char* pat|... -Ap |void |vwarner |U32 err|NN const char* pat|NULLOK va_list* args +Adfp |void |warner |U32 err|NN const char* pat|... +Adfp |void |ck_warner |U32 err|NN const char* pat|... +Adfp |void |ck_warner_d |U32 err|NN const char* pat|... +Adp |void |vwarner |U32 err|NN const char* pat|NULLOK va_list* args #ifdef USE_C_BACKTRACE pd |Perl_c_backtrace*|get_c_backtrace|int max_depth|int skip dm |void |free_c_backtrace|NN Perl_c_backtrace* bt @@ -2151,10 +2595,10 @@ #endif : FIXME p |void |watch |NN char** addr -Am |I32 |whichsig |NN const char* sig -Ap |I32 |whichsig_sv |NN SV* sigsv -Ap |I32 |whichsig_pv |NN const char* sig -Ap |I32 |whichsig_pvn |NN const char* sig|STRLEN len +Amd |I32 |whichsig |NN const char* sig +Apd |I32 |whichsig_sv |NN SV* sigsv +Apd |I32 |whichsig_pv |NN const char* sig +Apd |I32 |whichsig_pvn |NN const char* sig|STRLEN len : used to check for NULs in pathnames and other names AiRdp |bool |is_safe_syscall|NN const char *pv|STRLEN len|NN const char *what|NN const char *op_name #ifdef PERL_CORE @@ -2186,18 +2630,13 @@ Ap |void |dump_mstats |NN const char* s Ap |int |get_mstats |NN perl_mstats_t *buf|int buflen|int level #endif -ATpa |Malloc_t|safesysmalloc |MEM_SIZE nbytes -ATpa |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size -ATpR |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes -ATp |Free_t |safesysfree |Malloc_t where -AirTep |void |croak_memory_wrap -#if defined(PERL_GLOBAL_STRUCT) -Ap |struct perl_vars *|GetVars -Ap |struct perl_vars*|init_global_struct -Ap |void |free_global_struct|NN struct perl_vars *plvarsp -#endif -Ap |int |runops_standard -Ap |int |runops_debug +ATdpa |Malloc_t|safesysmalloc |MEM_SIZE nbytes +ATdpa |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size +ATdpR |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes +AdTp |Free_t |safesysfree |Malloc_t where +CrTp |void |croak_memory_wrap +Cp |int |runops_standard +Cp |int |runops_debug Afpd |void |sv_catpvf_mg |NN SV *const sv|NN const char *const pat|... Apd |void |sv_vcatpvf_mg |NN SV *const sv|NN const char *const pat \ |NULLOK va_list *const args @@ -2221,35 +2660,35 @@ Apd |char* |pv_escape |NULLOK SV *dsv|NN char const * const str\ |const STRLEN count|const STRLEN max\ |NULLOK STRLEN * const escaped\ - |const U32 flags + |const U32 flags Apd |char* |pv_pretty |NN SV *dsv|NN char const * const str\ |const STRLEN count|const STRLEN max\ |NULLOK char const * const start_color\ |NULLOK char const * const end_color\ - |const U32 flags -Afp |void |dump_indent |I32 level|NN PerlIO *file|NN const char* pat|... -Ap |void |dump_vindent |I32 level|NN PerlIO *file|NN const char* pat \ + |const U32 flags +Cfp |void |dump_indent |I32 level|NN PerlIO *file|NN const char* pat|... +Cp |void |dump_vindent |I32 level|NN PerlIO *file|NN const char* pat \ |NULLOK va_list *args -Ap |void |do_gv_dump |I32 level|NN PerlIO *file|NN const char *name\ +Cp |void |do_gv_dump |I32 level|NN PerlIO *file|NN const char *name\ |NULLOK GV *sv -Ap |void |do_gvgv_dump |I32 level|NN PerlIO *file|NN const char *name\ +Cp |void |do_gvgv_dump |I32 level|NN PerlIO *file|NN const char *name\ |NULLOK GV *sv -Ap |void |do_hv_dump |I32 level|NN PerlIO *file|NN const char *name\ +Cp |void |do_hv_dump |I32 level|NN PerlIO *file|NN const char *name\ |NULLOK HV *sv -Ap |void |do_magic_dump |I32 level|NN PerlIO *file|NULLOK const MAGIC *mg|I32 nest \ +Cp |void |do_magic_dump |I32 level|NN PerlIO *file|NULLOK const MAGIC *mg|I32 nest \ |I32 maxnest|bool dumpops|STRLEN pvlim -Ap |void |do_op_dump |I32 level|NN PerlIO *file|NULLOK const OP *o -Ap |void |do_pmop_dump |I32 level|NN PerlIO *file|NULLOK const PMOP *pm -Ap |void |do_sv_dump |I32 level|NN PerlIO *file|NULLOK SV *sv|I32 nest \ +Cp |void |do_op_dump |I32 level|NN PerlIO *file|NULLOK const OP *o +Cp |void |do_pmop_dump |I32 level|NN PerlIO *file|NULLOK const PMOP *pm +Cp |void |do_sv_dump |I32 level|NN PerlIO *file|NULLOK SV *sv|I32 nest \ |I32 maxnest|bool dumpops|STRLEN pvlim Ap |void |magic_dump |NULLOK const MAGIC *mg -Ap |void |reginitcolors -ApdRMb |char* |sv_2pv_nolen |NN SV* sv -ApdRMb |char* |sv_2pvutf8_nolen|NN SV* sv -ApdRMb |char* |sv_2pvbyte_nolen|NN SV* sv -ApMdbR |char* |sv_pv |NN SV *sv -ApMdbR |char* |sv_pvutf8 |NN SV *sv -ApMdbR |char* |sv_pvbyte |NN SV *sv +Cp |void |reginitcolors +CpdRMb |char* |sv_2pv_nolen |NN SV* sv +CpdRMb |char* |sv_2pvutf8_nolen|NN SV* sv +CpdRMb |char* |sv_2pvbyte_nolen|NN SV* sv +CpMdbR |char* |sv_pv |NN SV *sv +CpMdbR |char* |sv_pvutf8 |NN SV *sv +CpMdbR |char* |sv_pvbyte |NN SV *sv ApMdb |STRLEN |sv_utf8_upgrade|NN SV *sv Amd |STRLEN |sv_utf8_upgrade_nomg|NN SV *sv ApdMb |bool |sv_utf8_downgrade|NN SV *const sv|const bool fail_ok @@ -2268,12 +2707,22 @@ AiTMdp |void |SvREFCNT_inc_void|NULLOK SV *sv AiMdp |void |SvREFCNT_dec |NULLOK SV *sv AiMdp |void |SvREFCNT_dec_NN|NN SV *sv -AiTp |void |SvAMAGIC_on |NN SV *sv -AiTp |void |SvAMAGIC_off |NN SV *sv +AdiTp |void |SvAMAGIC_on |NN SV *sv +AdiTp |void |SvAMAGIC_off |NN SV *sv +Aipd |IV |SvIV |NN SV *sv +Aipd |UV |SvUV |NN SV *sv +Aipd |NV |SvNV |NN SV *sv +Aipd |IV |SvIV_nomg |NN SV *sv +Aipd |UV |SvUV_nomg |NN SV *sv +Aipd |NV |SvNV_nomg |NN SV *sv +Aipd |bool |SvTRUE |NULLOK SV *sv +Aipd |bool |SvTRUE_nomg |NULLOK SV *sv +Aipd |bool |SvTRUE_NN |NN SV *sv +Cip |bool |SvTRUE_common |NN SV *sv|const bool sv_2bool_is_fallback : This is indirectly referenced by globals.c. This is somewhat annoying. p |int |magic_killbackrefs|NN SV *sv|NN MAGIC *mg Ap |OP* |newANONATTRSUB |I32 floor|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block -Am |CV* |newATTRSUB |I32 floor|NULLOK OP *o|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block +Adm |CV* |newATTRSUB |I32 floor|NULLOK OP *o|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block pdX |CV* |newATTRSUB_x |I32 floor|NULLOK OP *o|NULLOK OP *proto \ |NULLOK OP *attrs|NULLOK OP *block \ |bool o_is_gv @@ -2283,13 +2732,13 @@ : Used in perly.y p |OP * |my_attrs |NN OP *o|NULLOK OP *attrs #if defined(USE_ITHREADS) -ApR |PERL_CONTEXT*|cx_dup |NULLOK PERL_CONTEXT* cx|I32 ix|I32 max|NN CLONE_PARAMS* param +CpR |PERL_CONTEXT*|cx_dup |NULLOK PERL_CONTEXT* cx|I32 ix|I32 max|NN CLONE_PARAMS* param ApR |PERL_SI*|si_dup |NULLOK PERL_SI* si|NN CLONE_PARAMS* param ApR |ANY* |ss_dup |NN PerlInterpreter* proto_perl|NN CLONE_PARAMS* param ApR |void* |any_dup |NULLOK void* v|NN const PerlInterpreter* proto_perl ApR |HE* |he_dup |NULLOK const HE* e|bool shared|NN CLONE_PARAMS* param ApR |HEK* |hek_dup |NULLOK HEK* e|NN CLONE_PARAMS* param -Ap |void |re_dup_guts |NN const REGEXP *sstr|NN REGEXP *dstr \ +Adp |void |re_dup_guts |NN const REGEXP *sstr|NN REGEXP *dstr \ |NN CLONE_PARAMS* param Ap |PerlIO*|fp_dup |NULLOK PerlIO *const fp|const char type|NN CLONE_PARAMS *const param ApR |DIR* |dirp_dup |NULLOK DIR *const dp|NN CLONE_PARAMS *const param @@ -2341,548 +2790,244 @@ #if defined(PERL_IN_DOOP_C) SR |Size_t |do_trans_simple |NN SV * const sv|NN const OPtrans_map * const tbl SR |Size_t |do_trans_count |NN SV * const sv|NN const OPtrans_map * const tbl -SR |Size_t |do_trans_complex |NN SV * const sv|NN const OPtrans_map * const tbl -SR |Size_t |do_trans_invmap |NN SV * const sv|NN AV * const map -SR |Size_t |do_trans_count_invmap |NN SV * const sv|NN AV * const map -#endif - -#if defined(PERL_IN_GV_C) -S |void |gv_init_svtype |NN GV *gv|const svtype sv_type -S |void |gv_magicalize_isa |NN GV *gv -S |bool|parse_gv_stash_name|NN HV **stash|NN GV **gv \ - |NN const char **name|NN STRLEN *len \ - |NN const char *nambeg|STRLEN full_len \ - |const U32 is_utf8|const I32 add -S |bool|find_default_stash|NN HV **stash|NN const char *name \ - |STRLEN len|const U32 is_utf8|const I32 add \ - |const svtype sv_type -S |bool|gv_magicalize|NN GV *gv|NN HV *stash|NN const char *name \ - |STRLEN len \ - |const svtype sv_type -S |void|maybe_multimagic_gv|NN GV *gv|NN const char *name|const svtype sv_type -S |bool|gv_is_in_main|NN const char *name|STRLEN len \ - |const U32 is_utf8 -S |void |require_tie_mod|NN GV *gv|NN const char varname \ - |NN const char * name|STRLEN len \ - |const U32 flags -#endif - -#if defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) -po |SV* |hfree_next_entry |NN HV *hv|NN STRLEN *indexp -#endif - -#if defined(PERL_IN_HV_C) -S |void |hsplit |NN HV *hv|STRLEN const oldsize|STRLEN newsize -S |void |hv_free_entries|NN HV *hv -S |SV* |hv_free_ent_ret|NN HV *hv|NN HE *entry -SR |HE* |new_he -SaTR |HEK* |save_hek_flags |NN const char *str|I32 len|U32 hash|int flags -ST |void |hv_magic_check |NN HV *hv|NN bool *needs_copy|NN bool *needs_store -S |void |unshare_hek_or_pvn|NULLOK const HEK* hek|NULLOK const char* str|I32 len|U32 hash -SR |HEK* |share_hek_flags|NN const char *str|STRLEN len|U32 hash|int flags -rS |void |hv_notallowed |int flags|NN const char *key|I32 klen|NN const char *msg -iT |U32|ptr_hash|PTRV u -S |struct xpvhv_aux*|hv_auxinit|NN HV *hv -ST |struct xpvhv_aux*|hv_auxinit_internal|NN struct xpvhv_aux *iter -Sx |SV* |hv_delete_common|NULLOK HV *hv|NULLOK SV *keysv \ - |NULLOK const char *key|STRLEN klen|int k_flags|I32 d_flags \ - |U32 hash -Sx |void |clear_placeholders |NN HV *hv|U32 items -#endif - -#if defined(PERL_IN_MG_C) -S |void |save_magic_flags|I32 mgs_ix|NN SV *sv|U32 flags -S |int |magic_methpack |NN SV *sv|NN const MAGIC *mg|NN SV *meth -S |SV* |magic_methcall1|NN SV *sv|NN const MAGIC *mg \ - |NN SV *meth|U32 flags \ - |int n|NULLOK SV *val -S |void |restore_magic |NULLOK const void *p -S |void |unwind_handler_stack|NULLOK const void *p -S |void |fixup_errno_string|NN SV* sv - -#endif - -#if defined(PERL_IN_OP_C) -SRT |bool |is_handle_constructor|NN const OP *o|I32 numargs -SR |I32 |assignment_type|NULLOK const OP *o -S |void |forget_pmop |NN PMOP *const o -S |void |find_and_forget_pmops |NN OP *o -S |void |cop_free |NN COP *cop -S |OP* |modkids |NULLOK OP *o|I32 type -S |OP* |scalarboolean |NN OP *o -SR |OP* |search_const |NN OP *o -SR |OP* |new_logop |I32 type|I32 flags|NN OP **firstp|NN OP **otherp -S |void |simplify_sort |NN OP *o -SRT |bool |scalar_mod_type|NULLOK const OP *o|I32 type -S |OP * |my_kid |NULLOK OP *o|NULLOK OP *attrs|NN OP **imopsp -S |OP * |dup_attrlist |NN OP *o -S |void |apply_attrs |NN HV *stash|NN SV *target|NULLOK OP *attrs -S |void |apply_attrs_my |NN HV *stash|NN OP *target|NULLOK OP *attrs|NN OP **imopsp -S |void |bad_type_pv |I32 n|NN const char *t|NN const OP *o|NN const OP *kid -S |void |bad_type_gv |I32 n|NN GV *gv|NN const OP *kid|NN const char *t -S |void |no_bareword_allowed|NN OP *o -SR |OP* |no_fh_allowed|NN OP *o -SR |OP* |too_few_arguments_pv|NN OP *o|NN const char* name|U32 flags -S |OP* |too_many_arguments_pv|NN OP *o|NN const char* name|U32 flags -S |bool |looks_like_bool|NN const OP* o -S |OP* |newGIVWHENOP |NULLOK OP* cond|NN OP *block \ - |I32 enter_opcode|I32 leave_opcode \ - |PADOFFSET entertarg -S |OP* |ref_array_or_hash|NULLOK OP* cond -S |bool |process_special_blocks |I32 floor \ - |NN const char *const fullname\ - |NN GV *const gv|NN CV *const cv -S |void |clear_special_blocks |NN const char *const fullname\ - |NN GV *const gv|NN CV *const cv -#endif -XpR |void* |Slab_Alloc |size_t sz -Xp |void |Slab_Free |NN void *op -#if defined(PERL_DEBUG_READONLY_OPS) -# if defined(PERL_CORE) -pe |void |Slab_to_ro |NN OPSLAB *slab -pe |void |Slab_to_rw |NN OPSLAB *const slab -# endif -: Used in OpREFCNT_inc() in sv.c -poex |OP * |op_refcnt_inc |NULLOK OP *o -: FIXME - can be static. -poex |PADOFFSET |op_refcnt_dec |NN OP *o -#endif - -#if defined(PERL_IN_PERL_C) -S |void |find_beginning |NN SV* linestr_sv|NN PerlIO *rsfp -S |void |forbid_setid |const char flag|const bool suidscript -S |void |incpush |NN const char *const dir|STRLEN len \ - |U32 flags -S |SV* |mayberelocate |NN const char *const dir|STRLEN len \ - |U32 flags -S |void |incpush_use_sep|NN const char *p|STRLEN len|U32 flags -S |void |init_interp -S |void |init_ids -S |void |init_main_stash -S |void |init_perllib -S |void |init_postdump_symbols|int argc|NN char **argv|NULLOK char **env -S |void |init_predump_symbols -rS |void |my_exit_jump -S |void |nuke_stacks -S |PerlIO *|open_script |NN const char *scriptname|bool dosearch \ - |NN bool *suidscript -Sr |void |usage -#ifndef SETUID_SCRIPTS_ARE_SECURE_NOW -So |void |validate_suid |NN PerlIO *rsfp -#endif -Sr |void |minus_v - -S |void* |parse_body |NULLOK char **env|XSINIT_t xsinit -rS |void |run_body |I32 oldscope -# ifndef PERL_IS_MINIPERL -S |SV * |incpush_if_exists|NN AV *const av|NN SV *dir|NN SV *const stem -# endif -#endif - -#if defined(PERL_IN_PP_C) -S |size_t |do_chomp |NN SV *retval|NN SV *sv|bool chomping -S |OP* |do_delete_local -SR |SV* |refto |NN SV* sv -#endif -#if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C) -: Used in pp_hot.c -pReo |GV* |softref2xv |NN SV *const sv|NN const char *const what \ - |const svtype type|NN SV ***spp -iTR |bool |lossless_NV_to_IV|const NV nv|NN IV * ivp -#endif - -#if defined(PERL_IN_PP_PACK_C) -S |SSize_t|unpack_rec |NN struct tempsym* symptr|NN const char *s \ - |NN const char *strbeg|NN const char *strend|NULLOK const char **new_s -S |SV ** |pack_rec |NN SV *cat|NN struct tempsym* symptr|NN SV **beglist|NN SV **endlist -S |SV* |mul128 |NN SV *sv|U8 m -S |SSize_t|measure_struct |NN struct tempsym* symptr -S |bool |next_symbol |NN struct tempsym* symptr -SR |SV* |is_an_int |NN const char *s|STRLEN l -S |int |div128 |NN SV *pnum|NN bool *done -S |const char *|group_end |NN const char *patptr|NN const char *patend \ - |char ender -SR |const char *|get_num |NN const char *patptr|NN SSize_t *lenptr -TS |bool |need_utf8 |NN const char *pat|NN const char *patend -TS |char |first_symbol |NN const char *pat|NN const char *patend -SR |char * |sv_exp_grow |NN SV *sv|STRLEN needed -STR |char * |my_bytes_to_utf8|NN const U8 *start|STRLEN len|NN char *dest \ - |const bool needs_swap -#endif - -#if defined(PERL_IN_PP_CTL_C) -SdR |OP* |docatch |Perl_ppaddr_t firstpp -SR |OP* |dofindlabel |NN OP *o|NN const char *label|STRLEN len \ - |U32 flags|NN OP **opstack|NN OP **oplimit -S |MAGIC *|doparseform |NN SV *sv -STR |bool |num_overflow |NV value|I32 fldsize|I32 frcsize -SR |I32 |dopoptoeval |I32 startingblock -SR |I32 |dopoptogivenfor|I32 startingblock -SR |I32 |dopoptolabel |NN const char *label|STRLEN len|U32 flags -SR |I32 |dopoptoloop |I32 startingblock -SR |I32 |dopoptosub_at |NN const PERL_CONTEXT* cxstk|I32 startingblock -SR |I32 |dopoptowhen |I32 startingblock -S |void |save_lines |NULLOK AV *array|NN SV *sv -S |bool |doeval_compile |U8 gimme \ - |NULLOK CV* outside|U32 seq|NULLOK HV* hh -SR |PerlIO *|check_type_and_open|NN SV *name -#ifndef PERL_DISABLE_PMC -SR |PerlIO *|doopen_pm |NN SV *name -#endif -iRT |bool |path_is_searchable|NN const char *name -SR |I32 |run_user_filter|int idx|NN SV *buf_sv|int maxlen -SR |PMOP* |make_matcher |NN REGEXP* re -SR |bool |matcher_matches_sv|NN PMOP* matcher|NN SV* sv -S |void |destroy_matcher|NN PMOP* matcher -S |OP* |do_smartmatch |NULLOK HV* seen_this \ - |NULLOK HV* seen_other|const bool copied +SR |Size_t |do_trans_complex |NN SV * const sv|NN const OPtrans_map * const tbl +SR |Size_t |do_trans_invmap |NN SV * const sv|NN AV * const map +SR |Size_t |do_trans_count_invmap |NN SV * const sv|NN AV * const map #endif -#if defined(PERL_IN_PP_HOT_C) -S |void |do_oddball |NN SV **oddkey|NN SV **firstkey -i |HV* |opmethod_stash |NN SV* meth +#if defined(PERL_IN_GV_C) +S |void |gv_init_svtype |NN GV *gv|const svtype sv_type +S |void |gv_magicalize_isa |NN GV *gv +S |bool|parse_gv_stash_name|NN HV **stash|NN GV **gv \ + |NN const char **name|NN STRLEN *len \ + |NN const char *nambeg|STRLEN full_len \ + |const U32 is_utf8|const I32 add +S |bool|find_default_stash|NN HV **stash|NN const char *name \ + |STRLEN len|const U32 is_utf8|const I32 add \ + |const svtype sv_type +S |bool|gv_magicalize|NN GV *gv|NN HV *stash|NN const char *name \ + |STRLEN len \ + |const svtype sv_type +S |void|maybe_multimagic_gv|NN GV *gv|NN const char *name|const svtype sv_type +S |bool|gv_is_in_main|NN const char *name|STRLEN len \ + |const U32 is_utf8 +S |void |require_tie_mod|NN GV *gv|NN const char varname \ + |NN const char * name|STRLEN len \ + |const U32 flags #endif -#if defined(PERL_IN_PP_SORT_C) -S |I32 |sv_ncmp |NN SV *const a|NN SV *const b -S |I32 |sv_i_ncmp |NN SV *const a|NN SV *const b -S |I32 |amagic_ncmp |NN SV *const a|NN SV *const b -S |I32 |amagic_i_ncmp |NN SV *const a|NN SV *const b -S |I32 |amagic_cmp |NN SV *const str1|NN SV *const str2 -# ifdef USE_LOCALE_COLLATE -S |I32 |amagic_cmp_locale|NN SV *const str1|NN SV *const str2 -# endif -S |I32 |sortcv |NN SV *const a|NN SV *const b -S |I32 |sortcv_xsub |NN SV *const a|NN SV *const b -S |I32 |sortcv_stacked |NN SV *const a|NN SV *const b +#if defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) +po |SV* |hfree_next_entry |NN HV *hv|NN STRLEN *indexp #endif -#if defined(PERL_IN_PP_SYS_C) -S |OP* |doform |NN CV *cv|NN GV *gv|NULLOK OP *retop -# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) -SR |int |dooneliner |NN const char *cmd|NN const char *filename -# endif -S |SV * |space_join_names_mortal|NULLOK char *const *array +#if defined(PERL_IN_HV_C) +S |void |hsplit |NN HV *hv|STRLEN const oldsize|STRLEN newsize +S |void |hv_free_entries|NN HV *hv +S |SV* |hv_free_ent_ret|NN HV *hv|NN HE *entry +SR |HE* |new_he +SaTR |HEK* |save_hek_flags |NN const char *str|I32 len|U32 hash|int flags +ST |void |hv_magic_check |NN HV *hv|NN bool *needs_copy|NN bool *needs_store +S |void |unshare_hek_or_pvn|NULLOK const HEK* hek|NULLOK const char* str|I32 len|U32 hash +SR |HEK* |share_hek_flags|NN const char *str|STRLEN len|U32 hash|int flags +rS |void |hv_notallowed |int flags|NN const char *key|I32 klen|NN const char *msg +iT |U32|ptr_hash|PTRV u +S |struct xpvhv_aux*|hv_auxinit|NN HV *hv +ST |struct xpvhv_aux*|hv_auxinit_internal|NN struct xpvhv_aux *iter +Sx |SV* |hv_delete_common|NULLOK HV *hv|NULLOK SV *keysv \ + |NULLOK const char *key|STRLEN klen|int k_flags|I32 d_flags \ + |U32 hash +Sx |void |clear_placeholders |NN HV *hv|U32 items #endif -p |OP * |tied_method|NN SV *methname|NN SV **sp \ - |NN SV *const sv|NN const MAGIC *const mg \ - |const U32 flags|U32 argc|... -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) -Ep |void |regprop |NULLOK const regexp *prog|NN SV* sv|NN const regnode* o|NULLOK const regmatch_info *reginfo \ - |NULLOK const RExC_state_t *pRExC_state -Ep |int |re_printf |NN const char *fmt|... -#endif -#if defined(PERL_IN_REGCOMP_C) -ES |regnode_offset|reg |NN RExC_state_t *pRExC_state \ - |I32 paren|NN I32 *flagp|U32 depth -ES |regnode_offset|regnode_guts|NN RExC_state_t *pRExC_state \ - |const U8 op \ - |const STRLEN extra_len \ - |NN const char* const name -ES |void |change_engine_size|NN RExC_state_t *pRExC_state|const Ptrdiff_t size -ES |regnode_offset|reganode|NN RExC_state_t *pRExC_state|U8 op \ - |U32 arg -ES |regnode_offset|reg2Lanode|NN RExC_state_t *pRExC_state \ - |const U8 op \ - |const U32 arg1 \ - |const I32 arg2 -ES |regnode_offset|regatom |NN RExC_state_t *pRExC_state \ - |NN I32 *flagp|U32 depth -ES |regnode_offset|regbranch |NN RExC_state_t *pRExC_state \ - |NN I32 *flagp|I32 first|U32 depth -ES |void |set_ANYOF_arg |NN RExC_state_t* const pRExC_state \ - |NN regnode* const node \ - |NULLOK SV* const cp_list \ - |NULLOK SV* const runtime_defns \ - |NULLOK SV* const only_utf8_locale_list -ES |void |output_posix_warnings \ - |NN RExC_state_t *pRExC_state \ - |NN AV* posix_warnings -EiT |Size_t |find_first_differing_byte_pos|NN const U8 * s1|NN const U8 * s2| const Size_t max -ES |AV* |add_multi_match|NULLOK AV* multi_char_matches \ - |NN SV* multi_string \ - |const STRLEN cp_count -ES |regnode_offset|regclass|NN RExC_state_t *pRExC_state \ - |NN I32 *flagp|U32 depth|const bool stop_at_1 \ - |bool allow_multi_fold \ - |const bool silence_non_portable \ - |const bool strict \ - |bool optimizable \ - |NULLOK SV** ret_invlist -ES |void|add_above_Latin1_folds|NN RExC_state_t *pRExC_state|const U8 cp \ - |NN SV** invlist -Ei |regnode_offset|handle_named_backref|NN RExC_state_t *pRExC_state \ - |NN I32 *flagp \ - |NN char * parse_start \ - |char ch -ESTR |unsigned int|regex_set_precedence|const U8 my_operator -ES |regnode_offset|handle_regex_sets|NN RExC_state_t *pRExC_state \ - |NULLOK SV ** return_invlist \ - |NN I32 *flagp|U32 depth \ - |NN char * const oregcomp_parse -ES |void |set_regex_pv |NN RExC_state_t *pRExC_state|NN REGEXP *Rx -#if defined(DEBUGGING) && defined(ENABLE_REGEX_SETS_DEBUGGING) -ES |void |dump_regex_sets_structures \ - |NN RExC_state_t *pRExC_state \ - |NN AV * stack \ - |const IV fence|NN AV * fence_stack -#endif -ES |void|parse_lparen_question_flags|NN RExC_state_t *pRExC_state -ES |regnode_offset|reg_node|NN RExC_state_t *pRExC_state|U8 op -ES |regnode_offset|regpiece|NN RExC_state_t *pRExC_state \ - |NN I32 *flagp|U32 depth -ES |bool |grok_bslash_N |NN RExC_state_t *pRExC_state \ - |NULLOK regnode_offset* nodep \ - |NULLOK UV *code_point_p \ - |NULLOK int* cp_count \ - |NN I32 *flagp \ - |const bool strict \ - |const U32 depth -ES |void |reginsert |NN RExC_state_t *pRExC_state \ - |const U8 op \ - |const regnode_offset operand \ - |const U32 depth -ESR |bool |regtail |NN RExC_state_t * pRExC_state \ - |NN const regnode_offset p \ - |NN const regnode_offset val \ - |const U32 depth -ES |SV * |reg_scan_name |NN RExC_state_t *pRExC_state \ - |U32 flags -ES |U32 |join_exact |NN RExC_state_t *pRExC_state \ - |NN regnode *scan|NN UV *min_subtract \ - |NN bool *unfolded_multi_char \ - |U32 flags|NULLOK regnode *val|U32 depth -EiT |U8 |compute_EXACTish|NN RExC_state_t *pRExC_state -ES |void |nextchar |NN RExC_state_t *pRExC_state -ES |void |skip_to_be_ignored_text|NN RExC_state_t *pRExC_state \ - |NN char ** p \ - |const bool force_to_xmod -EiT |char * |reg_skipcomment|NN RExC_state_t *pRExC_state|NN char * p -ES |void |scan_commit |NN const RExC_state_t *pRExC_state \ - |NN struct scan_data_t *data \ - |NN SSize_t *minlenp \ - |int is_inf -ES |void |populate_ANYOF_from_invlist|NN regnode *node|NN SV** invlist_ptr -ES |void |ssc_anything |NN regnode_ssc *ssc -ESRT |int |ssc_is_anything|NN const regnode_ssc *ssc -ES |void |ssc_init |NN const RExC_state_t *pRExC_state \ - |NN regnode_ssc *ssc -ESRT |int |ssc_is_cp_posixl_init|NN const RExC_state_t *pRExC_state \ - |NN const regnode_ssc *ssc -ES |void |ssc_and |NN const RExC_state_t *pRExC_state \ - |NN regnode_ssc *ssc \ - |NN const regnode_charclass *and_with -ES |void |ssc_or |NN const RExC_state_t *pRExC_state \ - |NN regnode_ssc *ssc \ - |NN const regnode_charclass *or_with -ES |SV* |get_ANYOF_cp_list_for_ssc \ - |NN const RExC_state_t *pRExC_state \ - |NN const regnode_charclass* const node -Ei |void |ssc_intersection|NN regnode_ssc *ssc \ - |NN SV* const invlist|const bool invert_2nd -Ei |void |ssc_union |NN regnode_ssc *ssc \ - |NN SV* const invlist|const bool invert_2nd -Ei |void |ssc_add_range |NN regnode_ssc *ssc \ - |UV const start|UV const end -Ei |void |ssc_cp_and |NN regnode_ssc *ssc \ - |UV const cp -EiT |void |ssc_clear_locale|NN regnode_ssc *ssc -ETS |bool |is_ssc_worth_it|NN const RExC_state_t * pRExC_state \ - |NN const regnode_ssc * ssc -ES |void |ssc_finalize |NN RExC_state_t *pRExC_state \ - |NN regnode_ssc *ssc -ES |SSize_t|study_chunk |NN RExC_state_t *pRExC_state \ - |NN regnode **scanp|NN SSize_t *minlenp \ - |NN SSize_t *deltap|NN regnode *last \ - |NULLOK struct scan_data_t *data \ - |I32 stopparen|U32 recursed_depth \ - |NULLOK regnode_ssc *and_withp \ - |U32 flags|U32 depth -ESR |SV * |get_ANYOFM_contents|NN const regnode * n -ESRT |U32 |add_data |NN RExC_state_t* const pRExC_state \ - |NN const char* const s|const U32 n -rS |void |re_croak2 |bool utf8|NN const char* pat1|NN const char* pat2|... -ES |int |handle_possible_posix \ - |NN RExC_state_t *pRExC_state \ - |NN const char* const s \ - |NULLOK char ** updated_parse_ptr \ - |NULLOK AV** posix_warnings \ - |const bool check_only -ES |I32 |make_trie |NN RExC_state_t *pRExC_state \ - |NN regnode *startbranch|NN regnode *first \ - |NN regnode *last|NN regnode *tail \ - |U32 word_count|U32 flags|U32 depth -ES |regnode *|construct_ahocorasick_from_trie|NN RExC_state_t *pRExC_state \ - |NN regnode *source|U32 depth -ETSR |int |edit_distance |NN const UV *src \ - |NN const UV *tgt \ - |const STRLEN x \ - |const STRLEN y \ - |const SSize_t maxDistance -EpX |SV * |parse_uniprop_string|NN const char * const name \ - |Size_t name_len \ - |const bool is_utf8 \ - |const bool to_fold \ - |const bool runtime \ - |const bool deferrable \ - |NN bool * user_defined_ptr \ - |NN SV * msg \ - |const STRLEN level -EXp |SV * |handle_user_defined_property|NN const char * name \ - |const STRLEN name_len \ - |const bool is_utf8 \ - |const bool to_fold \ - |const bool runtime \ - |const bool deferrable \ - |NN SV* contents \ - |NN bool *user_defined_ptr \ - |NN SV * msg \ - |const STRLEN level -# ifdef DEBUGGING -Ep |int |re_indentf |NN const char *fmt|U32 depth|... -ES |void |regdump_intflags|NULLOK const char *lead| const U32 flags -ES |void |regdump_extflags|NULLOK const char *lead| const U32 flags -ES |const regnode*|dumpuntil|NN const regexp *r|NN const regnode *start \ - |NN const regnode *node \ - |NULLOK const regnode *last \ - |NULLOK const regnode *plast \ - |NN SV* sv|I32 indent|U32 depth -ES |void |put_code_point |NN SV* sv|UV c -ES |bool |put_charclass_bitmap_innards|NN SV* sv \ - |NULLOK char* bitmap \ - |NULLOK SV* nonbitmap_invlist \ - |NULLOK SV* only_utf8_locale_invlist\ - |NULLOK const regnode * const node \ - |const U8 flags \ - |const bool force_as_is_display -ES |SV* |put_charclass_bitmap_innards_common \ - |NN SV* invlist \ - |NULLOK SV* posixes \ - |NULLOK SV* only_utf8 \ - |NULLOK SV* not_utf8 \ - |NULLOK SV* only_utf8_locale \ - |const bool invert -ES |void |put_charclass_bitmap_innards_invlist \ - |NN SV *sv \ - |NN SV* invlist -ES |void |put_range |NN SV* sv|UV start|const UV end \ - |const bool allow_literals -ES |void |dump_trie |NN const struct _reg_trie_data *trie\ - |NULLOK HV* widecharmap|NN AV *revcharmap\ - |U32 depth -ES |void |dump_trie_interim_list|NN const struct _reg_trie_data *trie\ - |NULLOK HV* widecharmap|NN AV *revcharmap\ - |U32 next_alloc|U32 depth -ES |void |dump_trie_interim_table|NN const struct _reg_trie_data *trie\ - |NULLOK HV* widecharmap|NN AV *revcharmap\ - |U32 next_alloc|U32 depth -ESR |bool |regtail_study |NN RExC_state_t *pRExC_state \ - |NN regnode_offset p|NN const regnode_offset val|U32 depth +#if defined(PERL_IN_MG_C) +S |void |save_magic_flags|I32 mgs_ix|NN SV *sv|U32 flags +S |int |magic_methpack |NN SV *sv|NN const MAGIC *mg|NN SV *meth +S |SV* |magic_methcall1|NN SV *sv|NN const MAGIC *mg \ + |NN SV *meth|U32 flags \ + |int n|NULLOK SV *val +S |void |restore_magic |NULLOK const void *p +S |void |unwind_handler_stack|NULLOK const void *p +S |void |fixup_errno_string|NN SV* sv + +#endif + +#if defined(PERL_IN_OP_C) +SRT |bool |is_handle_constructor|NN const OP *o|I32 numargs +SR |I32 |assignment_type|NULLOK const OP *o +S |void |forget_pmop |NN PMOP *const o +S |void |find_and_forget_pmops |NN OP *o +S |void |cop_free |NN COP *cop +S |OP* |modkids |NULLOK OP *o|I32 type +S |OP* |scalarboolean |NN OP *o +SR |OP* |search_const |NN OP *o +SR |OP* |new_logop |I32 type|I32 flags|NN OP **firstp|NN OP **otherp +S |void |simplify_sort |NN OP *o +SRT |bool |scalar_mod_type|NULLOK const OP *o|I32 type +S |OP * |my_kid |NULLOK OP *o|NULLOK OP *attrs|NN OP **imopsp +S |OP * |dup_attrlist |NN OP *o +S |void |apply_attrs |NN HV *stash|NN SV *target|NULLOK OP *attrs +S |void |apply_attrs_my |NN HV *stash|NN OP *target|NULLOK OP *attrs|NN OP **imopsp +S |void |bad_type_pv |I32 n|NN const char *t|NN const OP *o|NN const OP *kid +S |void |bad_type_gv |I32 n|NN GV *gv|NN const OP *kid|NN const char *t +S |void |no_bareword_allowed|NN OP *o +SR |OP* |no_fh_allowed|NN OP *o +SR |OP* |too_few_arguments_pv|NN OP *o|NN const char* name|U32 flags +S |OP* |too_many_arguments_pv|NN OP *o|NN const char* name|U32 flags +S |bool |looks_like_bool|NN const OP* o +S |OP* |newGIVWHENOP |NULLOK OP* cond|NN OP *block \ + |I32 enter_opcode|I32 leave_opcode \ + |PADOFFSET entertarg +S |OP* |ref_array_or_hash|NULLOK OP* cond +S |bool |process_special_blocks |I32 floor \ + |NN const char *const fullname\ + |NN GV *const gv|NN CV *const cv +S |void |clear_special_blocks |NN const char *const fullname\ + |NN GV *const gv|NN CV *const cv +#endif +XpR |void* |Slab_Alloc |size_t sz +Xp |void |Slab_Free |NN void *op +#if defined(PERL_DEBUG_READONLY_OPS) +# if defined(PERL_CORE) +pe |void |Slab_to_ro |NN OPSLAB *slab +pe |void |Slab_to_rw |NN OPSLAB *const slab +# endif +: Used in OpREFCNT_inc() in sv.c +poex |OP * |op_refcnt_inc |NULLOK OP *o +: FIXME - can be static. +poex |PADOFFSET |op_refcnt_dec |NN OP *o +#endif + +#if defined(PERL_IN_PERL_C) +S |void |find_beginning |NN SV* linestr_sv|NN PerlIO *rsfp +S |void |forbid_setid |const char flag|const bool suidscript +S |void |incpush |NN const char *const dir|STRLEN len \ + |U32 flags +S |SV* |mayberelocate |NN const char *const dir|STRLEN len \ + |U32 flags +S |void |incpush_use_sep|NN const char *p|STRLEN len|U32 flags +S |void |init_interp +S |void |init_ids +S |void |init_main_stash +S |void |init_perllib +S |void |init_postdump_symbols|int argc|NN char **argv|NULLOK char **env +S |void |init_predump_symbols +rS |void |my_exit_jump +S |void |nuke_stacks +S |PerlIO *|open_script |NN const char *scriptname|bool dosearch \ + |NN bool *suidscript +Sr |void |usage +#ifndef SETUID_SCRIPTS_ARE_SECURE_NOW +So |void |validate_suid |NN PerlIO *rsfp +#endif +Sr |void |minus_v + +S |void* |parse_body |NULLOK char **env|XSINIT_t xsinit +rS |void |run_body |I32 oldscope +# ifndef PERL_IS_MINIPERL +S |SV * |incpush_if_exists|NN AV *const av|NN SV *dir|NN SV *const stem # endif #endif -#if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C) -EXRp |bool |isFOO_lc |const U8 classnum|const U8 character +#if defined(PERL_IN_PP_C) +S |size_t |do_chomp |NN SV *retval|NN SV *sv|bool chomping +S |OP* |do_delete_local +SR |SV* |refto |NN SV* sv +#endif +#if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C) +: Used in pp_hot.c +pReo |GV* |softref2xv |NN SV *const sv|NN const char *const what \ + |const svtype type|NN SV ***spp +iTR |bool |lossless_NV_to_IV|const NV nv|NN IV * ivp +#endif +#if defined(PERL_IN_PP_HOT_C) +IR |bool |should_we_output_Debug_r|NN regexp * prog #endif -#if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) -ERp |bool |is_grapheme |NN const U8 * strbeg|NN const U8 * s|NN const U8 *strend|const UV cp +#if defined(PERL_IN_PP_PACK_C) +S |SSize_t|unpack_rec |NN struct tempsym* symptr|NN const char *s \ + |NN const char *strbeg|NN const char *strend|NULLOK const char **new_s +S |SV ** |pack_rec |NN SV *cat|NN struct tempsym* symptr|NN SV **beglist|NN SV **endlist +S |SV* |mul128 |NN SV *sv|U8 m +S |SSize_t|measure_struct |NN struct tempsym* symptr +S |bool |next_symbol |NN struct tempsym* symptr +SR |SV* |is_an_int |NN const char *s|STRLEN l +S |int |div128 |NN SV *pnum|NN bool *done +S |const char *|group_end |NN const char *patptr|NN const char *patend \ + |char ender +SR |const char *|get_num |NN const char *patptr|NN SSize_t *lenptr +TS |bool |need_utf8 |NN const char *pat|NN const char *patend +TS |char |first_symbol |NN const char *pat|NN const char *patend +SR |char * |sv_exp_grow |NN SV *sv|STRLEN needed +STR |char * |my_bytes_to_utf8|NN const U8 *start|STRLEN len|NN char *dest \ + |const bool needs_swap #endif -#if defined(PERL_IN_REGEXEC_C) -ERS |bool |isFOO_utf8_lc |const U8 classnum|NN const U8* character|NN const U8* e -ERTS |U8 * |find_next_masked|NN U8 * s \ - |NN const U8 * send \ - |const U8 byte|const U8 mask -ERTS |U8 *|find_span_end |NN U8* s|NN const U8 * send|const U8 span_byte -ERTS |U8 *|find_span_end_mask|NN U8 * s|NN const U8 * send \ - |const U8 span_byte|const U8 mask -ERS |SSize_t|regmatch |NN regmatch_info *reginfo|NN char *startpos|NN regnode *prog -WERS |I32 |regrepeat |NN regexp *prog|NN char **startposp \ - |NN const regnode *p \ - |NN char *loceol \ - |NN regmatch_info *const reginfo \ - |I32 max -ERS |bool |regtry |NN regmatch_info *reginfo|NN char **startposp -ERS |bool |reginclass |NULLOK regexp * const prog \ - |NN const regnode * const n \ - |NN const U8 * const p \ - |NN const U8 * const p_end \ - |bool const utf8_target -WES |CHECKPOINT|regcppush |NN const regexp *rex|I32 parenfloor\ - |U32 maxopenparen -WES |void |regcppop |NN regexp *rex|NN U32 *maxopenparen_p -WES |void |regcp_restore |NN regexp *rex|I32 ix|NN U32 *maxopenparen_p -ERST |U8* |reghop3 |NN U8 *s|SSize_t off|NN const U8 *lim -ERST |U8* |reghop4 |NN U8 *s|SSize_t off|NN const U8 *llim \ - |NN const U8 *rlim -ERST |U8* |reghopmaybe3 |NN U8 *s|SSize_t off|NN const U8 * const lim -ERS |char* |find_byclass |NN regexp * prog|NN const regnode *c \ - |NN char *s|NN const char *strend \ - |NULLOK regmatch_info *reginfo -ES |void |to_utf8_substr |NN regexp * prog -ES |bool |to_byte_substr |NN regexp * prog -ERST |I32 |reg_check_named_buff_matched |NN const regexp *rex \ - |NN const regnode *scan -ESR |bool |isGCB |const GCB_enum before \ - |const GCB_enum after \ - |NN const U8 * const strbeg \ - |NN const U8 * const curpos \ - |const bool utf8_target -ESR |GCB_enum|backup_one_GCB|NN const U8 * const strbeg \ - |NN U8 ** curpos \ - |const bool utf8_target -ESR |bool |isLB |LB_enum before \ - |LB_enum after \ - |NN const U8 * const strbeg \ - |NN const U8 * const curpos \ - |NN const U8 * const strend \ - |const bool utf8_target -ESR |LB_enum|advance_one_LB |NN U8 ** curpos \ - |NN const U8 * const strend \ - |const bool utf8_target -ESR |LB_enum|backup_one_LB |NN const U8 * const strbeg \ - |NN U8 ** curpos \ - |const bool utf8_target -ESR |bool |isSB |SB_enum before \ - |SB_enum after \ - |NN const U8 * const strbeg \ - |NN const U8 * const curpos \ - |NN const U8 * const strend \ - |const bool utf8_target -ESR |SB_enum|advance_one_SB |NN U8 ** curpos \ - |NN const U8 * const strend \ - |const bool utf8_target -ESR |SB_enum|backup_one_SB |NN const U8 * const strbeg \ - |NN U8 ** curpos \ - |const bool utf8_target -ESR |bool |isWB |WB_enum previous \ - |WB_enum before \ - |WB_enum after \ - |NN const U8 * const strbeg \ - |NN const U8 * const curpos \ - |NN const U8 * const strend \ - |const bool utf8_target -ESR |WB_enum|advance_one_WB |NN U8 ** curpos \ - |NN const U8 * const strend \ - |const bool utf8_target \ - |const bool skip_Extend_Format -ESR |WB_enum|backup_one_WB |NN WB_enum * previous \ - |NN const U8 * const strbeg \ - |NN U8 ** curpos \ - |const bool utf8_target -EiT |I32 |foldEQ_latin1_s2_folded|NN const char* a|NN const char* b|I32 len -# ifdef DEBUGGING -ES |void |dump_exec_pos |NN const char *locinput|NN const regnode *scan|NN const char *loc_regeol\ - |NN const char *loc_bostr|NN const char *loc_reg_starttry|const bool do_utf8|const U32 depth -ES |void |debug_start_match|NN const REGEXP *prog|const bool do_utf8\ - |NN const char *start|NN const char *end\ - |NN const char *blurb +#if defined(PERL_IN_PP_CTL_C) +SdR |OP* |docatch |Perl_ppaddr_t firstpp +SR |OP* |dofindlabel |NN OP *o|NN const char *label|STRLEN len \ + |U32 flags|NN OP **opstack|NN OP **oplimit +S |MAGIC *|doparseform |NN SV *sv +STR |bool |num_overflow |NV value|I32 fldsize|I32 frcsize +SR |I32 |dopoptoeval |I32 startingblock +SR |I32 |dopoptogivenfor|I32 startingblock +SR |I32 |dopoptolabel |NN const char *label|STRLEN len|U32 flags +SR |I32 |dopoptoloop |I32 startingblock +SR |I32 |dopoptosub_at |NN const PERL_CONTEXT* cxstk|I32 startingblock +SR |I32 |dopoptowhen |I32 startingblock +S |void |save_lines |NULLOK AV *array|NN SV *sv +S |bool |doeval_compile |U8 gimme \ + |NULLOK CV* outside|U32 seq|NULLOK HV* hh +SR |PerlIO *|check_type_and_open|NN SV *name +#ifndef PERL_DISABLE_PMC +SR |PerlIO *|doopen_pm |NN SV *name +#endif +iRT |bool |path_is_searchable|NN const char *name +SR |I32 |run_user_filter|int idx|NN SV *buf_sv|int maxlen +SR |PMOP* |make_matcher |NN REGEXP* re +SR |bool |matcher_matches_sv|NN PMOP* matcher|NN SV* sv +S |void |destroy_matcher|NN PMOP* matcher +S |OP* |do_smartmatch |NULLOK HV* seen_this \ + |NULLOK HV* seen_other|const bool copied +#endif + +#if defined(PERL_IN_PP_HOT_C) +S |void |do_oddball |NN SV **oddkey|NN SV **firstkey +i |HV* |opmethod_stash |NN SV* meth +#endif + +#if defined(PERL_IN_PP_SORT_C) +I |I32 |sv_ncmp |NN SV *const a|NN SV *const b +I |I32 |sv_ncmp_desc |NN SV *const a|NN SV *const b +I |I32 |sv_i_ncmp |NN SV *const a|NN SV *const b +I |I32 |sv_i_ncmp_desc |NN SV *const a|NN SV *const b +I |I32 |amagic_ncmp |NN SV *const a|NN SV *const b +I |I32 |amagic_ncmp_desc |NN SV *const a|NN SV *const b +I |I32 |amagic_i_ncmp |NN SV *const a|NN SV *const b +I |I32 |amagic_i_ncmp_desc |NN SV *const a|NN SV *const b +I |I32 |amagic_cmp |NN SV *const str1|NN SV *const str2 +I |I32 |amagic_cmp_desc |NN SV *const str1|NN SV *const str2 +I |I32 |cmp_desc |NN SV *const str1|NN SV *const str2 +# ifdef USE_LOCALE_COLLATE +I |I32 |amagic_cmp_locale |NN SV *const str1|NN SV *const str2 +I |I32 |amagic_cmp_locale_desc|NN SV *const str1|NN SV *const str2 +I |I32 |cmp_locale_desc|NN SV *const str1|NN SV *const str2 +# endif +S |I32 |sortcv |NN SV *const a|NN SV *const b +S |I32 |sortcv_xsub |NN SV *const a|NN SV *const b +S |I32 |sortcv_stacked |NN SV *const a|NN SV *const b +I |void |sortsv_flags_impl |NULLOK SV** array|size_t num_elts|NN SVCOMPARE_t cmp|U32 flags +#endif -Ep |int |re_exec_indentf |NN const char *fmt|U32 depth|... +#if defined(PERL_IN_PP_SYS_C) +S |OP* |doform |NN CV *cv|NN GV *gv|NULLOK OP *retop +# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) +SR |int |dooneliner |NN const char *cmd|NN const char *filename # endif +S |SV * |space_join_names_mortal|NULLOK char *const *array #endif +Fp |OP * |tied_method|NN SV *methname|NN SV **sp \ + |NN SV *const sv|NN const MAGIC *const mg \ + |const U32 flags|U32 argc|... #if defined(PERL_IN_DUMP_C) S |CV* |deb_curcv |I32 ix @@ -2962,6 +3107,10 @@ |NN const char* const e \ |const bool is_utf8 \ |NN const char** error_msg +EXpR |HV* |load_charnames |NN SV * char_name \ + |NN const char * context \ + |const STRLEN context_len \ + |NN const char ** error_msg : For use ONLY in B::Hooks::Parser, by special dispensation EXpxR |char* |scan_str |NN char *start|int keep_quoted \ @@ -3144,7 +3293,7 @@ Apd |void |sv_catsv_flags |NN SV *const dsv|NULLOK SV *const ssv|const I32 flags Amd |STRLEN |sv_utf8_upgrade_flags|NN SV *const sv|const I32 flags Adp |STRLEN |sv_utf8_upgrade_flags_grow|NN SV *const sv|const I32 flags|STRLEN extra -Apd |char* |sv_pvn_force_flags|NN SV *const sv|NULLOK STRLEN *const lp|const I32 flags +Apd |char* |sv_pvn_force_flags|NN SV *const sv|NULLOK STRLEN *const lp|const U32 flags AdpMb |void |sv_copypv |NN SV *const dsv|NN SV *const ssv Amd |void |sv_copypv_nomg |NN SV *const dsv|NN SV *const ssv Apd |void |sv_copypv_flags |NN SV *const dsv|NN SV *const ssv|const I32 flags @@ -3236,8 +3385,8 @@ |NN PADNAME** out_name|NN int *out_flags #endif #ifdef DEBUGGING -Apd |SV* |pad_sv |PADOFFSET po -Apd |void |pad_setsv |PADOFFSET po|NN SV* sv +Cpd |SV* |pad_sv |PADOFFSET po +Cpd |void |pad_setsv |PADOFFSET po|NN SV* sv #endif pd |void |pad_block_start|int full Apd |U32 |intro_my @@ -3261,7 +3410,7 @@ p |CV* |cv_clone_into |NN CV* proto|NN CV *target pd |void |pad_fixup_inner_anons|NN PADLIST *padlist|NN CV *old_cv|NN CV *new_cv pdX |void |pad_push |NN PADLIST *padlist|int depth -ApbdRM |HV* |pad_compname_type|const PADOFFSET po +ApbdDR |HV* |pad_compname_type|const PADOFFSET po AxpdRT |PADNAME *|padnamelist_fetch|NN PADNAMELIST *pnl|SSize_t key Xop |void |padnamelist_free|NN PADNAMELIST *pnl Axpd |PADNAME **|padnamelist_store|NN PADNAMELIST *pnl|SSize_t key \ @@ -3288,7 +3437,7 @@ #endif Ap |void |save_set_svflags|NN SV *sv|U32 mask|U32 val #ifdef DEBUGGING -Apod |void |hv_assert |NN HV *hv +Cpod |void |hv_assert |NN HV *hv #endif ApdR |SV* |hv_scalar |NN HV *hv @@ -3327,8 +3476,8 @@ |NN const char **desc_p #endif -Ap |GV* |gv_fetchpvn_flags|NN const char* name|STRLEN len|I32 flags|const svtype sv_type -Ap |GV* |gv_fetchsv|NN SV *name|I32 flags|const svtype sv_type +Adp |GV* |gv_fetchpvn_flags|NN const char* name|STRLEN len|I32 flags|const svtype sv_type +Adp |GV* |gv_fetchsv|NN SV *name|I32 flags|const svtype sv_type #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP : Used in sv.c @@ -3341,8 +3490,8 @@ #if defined(PERL_IN_UTIL_C) S |bool |ckwarn_common |U32 w #endif -ApoP |bool |ckwarn |U32 w -ApoP |bool |ckwarn_d |U32 w +CpoP |bool |ckwarn |U32 w +CpoP |bool |ckwarn_d |U32 w : FIXME - exported for ByteLoader - public or private? XEopxR |STRLEN *|new_warnings_bitfield|NULLOK STRLEN *buffer \ |NN const char *const bits|STRLEN size @@ -3358,18 +3507,13 @@ pe |void |my_clearenv #ifdef PERL_IMPLICIT_CONTEXT -#ifdef PERL_GLOBAL_STRUCT_PRIVATE -Apo |void* |my_cxt_init |NN const char *my_cxt_key|size_t size -Apo |int |my_cxt_index |NN const char *my_cxt_key -#else Apo |void* |my_cxt_init |NN int *indexp|size_t size #endif -#endif #if defined(PERL_IN_UTIL_C) So |void |xs_version_bootcheck|U32 items|U32 ax|NN const char *xs_p \ |STRLEN xs_len #endif -XpoT |I32 |xs_handshake |const U32 key|NN void * v_my_perl\ +FXpoT |I32 |xs_handshake |const U32 key|NN void * v_my_perl\ |NN const char * file| ... Xp |void |xs_boot_epilog |const I32 ax #ifndef HAS_STRLCAT @@ -3438,9 +3582,9 @@ pde |void |mro_package_moved |NULLOK HV * const stash|NULLOK HV * const oldstash|NN const GV * const gv|U32 flags : Only used in perl.c p |void |boot_core_mro -ApoT |void |sys_init |NN int* argc|NN char*** argv -ApoT |void |sys_init3 |NN int* argc|NN char*** argv|NN char*** env -ApoT |void |sys_term +CpoT |void |sys_init |NN int* argc|NN char*** argv +CpoT |void |sys_init3 |NN int* argc|NN char*** argv|NN char*** env +CpoT |void |sys_term Apxd |const char *|cop_fetch_label|NN COP *const cop \ |NULLOK STRLEN *len|NULLOK U32 *flags : Only used in op.c and the perl compiler @@ -3459,7 +3603,7 @@ #endif : Used in perl.c and toke.c -op |void |populate_isa |NN const char *name|STRLEN len|... +Fop |void |populate_isa |NN const char *name|STRLEN len|... : Some static inline functions need predeclaration because they are used : inside other static inline functions. @@ -3474,29 +3618,29 @@ |U8 gimme|int filter #ifndef PERL_NO_INLINE_FUNCTIONS -Aixp |U8 |gimme_V | -Aixp |PERL_CONTEXT * |cx_pushblock|U8 type|U8 gimme|NN SV** sp|I32 saveix -Aixp |void |cx_popblock|NN PERL_CONTEXT *cx -Aixp |void |cx_topblock|NN PERL_CONTEXT *cx -Aixp |void |cx_pushsub |NN PERL_CONTEXT *cx|NN CV *cv \ +Cixp |U8 |gimme_V | +Cixp |PERL_CONTEXT * |cx_pushblock|U8 type|U8 gimme|NN SV** sp|I32 saveix +Cixp |void |cx_popblock|NN PERL_CONTEXT *cx +Cixp |void |cx_topblock|NN PERL_CONTEXT *cx +Cixp |void |cx_pushsub |NN PERL_CONTEXT *cx|NN CV *cv \ |NULLOK OP *retop|bool hasargs -Aixp |void |cx_popsub_common|NN PERL_CONTEXT *cx -Aixp |void |cx_popsub_args |NN PERL_CONTEXT *cx -Aixp |void |cx_popsub |NN PERL_CONTEXT *cx -Aixp |void |cx_pushformat |NN PERL_CONTEXT *cx|NN CV *cv \ +Cixp |void |cx_popsub_common|NN PERL_CONTEXT *cx +Cixp |void |cx_popsub_args |NN PERL_CONTEXT *cx +Cixp |void |cx_popsub |NN PERL_CONTEXT *cx +Cixp |void |cx_pushformat |NN PERL_CONTEXT *cx|NN CV *cv \ |NULLOK OP *retop|NULLOK GV *gv -Aixp |void |cx_popformat |NN PERL_CONTEXT *cx -Aixp |void |cx_pusheval |NN PERL_CONTEXT *cx \ +Cixp |void |cx_popformat |NN PERL_CONTEXT *cx +Cixp |void |cx_pusheval |NN PERL_CONTEXT *cx \ |NULLOK OP *retop|NULLOK SV *namesv -Aixp |void |cx_popeval |NN PERL_CONTEXT *cx -Aixp |void |cx_pushloop_plain|NN PERL_CONTEXT *cx -Aixp |void |cx_pushloop_for |NN PERL_CONTEXT *cx \ +Cixp |void |cx_popeval |NN PERL_CONTEXT *cx +Cixp |void |cx_pushloop_plain|NN PERL_CONTEXT *cx +Cixp |void |cx_pushloop_for |NN PERL_CONTEXT *cx \ |NN void *itervarp|NULLOK SV *itersave -Aixp |void |cx_poploop |NN PERL_CONTEXT *cx -Aixp |void |cx_pushwhen |NN PERL_CONTEXT *cx -Aixp |void |cx_popwhen |NN PERL_CONTEXT *cx -Aixp |void |cx_pushgiven |NN PERL_CONTEXT *cx|NULLOK SV *orig_defsv -Aixp |void |cx_popgiven |NN PERL_CONTEXT *cx +Cixp |void |cx_poploop |NN PERL_CONTEXT *cx +Cixp |void |cx_pushwhen |NN PERL_CONTEXT *cx +Cixp |void |cx_popwhen |NN PERL_CONTEXT *cx +Cixp |void |cx_pushgiven |NN PERL_CONTEXT *cx|NULLOK SV *orig_defsv +Cixp |void |cx_popgiven |NN PERL_CONTEXT *cx #endif #ifdef USE_DTRACE @@ -3508,4 +3652,8 @@ XEop |STRLEN*|dup_warnings |NULLOK STRLEN* warnings +#ifndef USE_ITHREADS +Amd |void |CopFILEGV_set |NN COP * c|NN GV * gv +#endif + : ex: set ts=8 sts=4 sw=4 noet: diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/call perl-5.34.0/dist/Devel-PPPort/parts/inc/call --- perl-5.32.1/dist/Devel-PPPort/parts/inc/call 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/call 2020-10-24 18:43:34.000000000 +0000 @@ -46,7 +46,7 @@ __UNDEFINED__ PERL_LOADMOD_NOIMPORT 0x2 __UNDEFINED__ PERL_LOADMOD_IMPORT_OPS 0x4 -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +#if defined(PERL_USE_GCC_BRACE_GROUPS) # define D_PPP_CROAK_IF_ERROR(cond) ({ SV *_errsv; ((cond) && (_errsv = ERRSV) && (SvROK(_errsv) || SvTRUE(_errsv)) && (croak_sv(_errsv), 1)); }) #else # define D_PPP_CROAK_IF_ERROR(cond) ((cond) && (SvROK(ERRSV) || SvTRUE(ERRSV)) && (croak_sv(ERRSV), 1)) @@ -71,7 +71,7 @@ # ifdef eval_sv # undef eval_sv # endif -# if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +# if defined(PERL_USE_GCC_BRACE_GROUPS) # define eval_sv(sv, flags) ({ I32 _flags = (flags); I32 _ret = Perl_eval_sv(aTHX_ sv, (_flags & ~G_RETHROW)); D_PPP_CROAK_IF_ERROR(_flags & G_RETHROW); _ret; }) # else # define eval_sv(sv, flags) ((PL_na = Perl_eval_sv(aTHX_ sv, ((flags) & ~G_RETHROW))), D_PPP_CROAK_IF_ERROR((flags) & G_RETHROW), (I32)PL_na) @@ -82,7 +82,7 @@ #if { VERSION < 5.31.2 } # ifdef eval_pv # undef eval_pv -# if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +# if defined(PERL_USE_GCC_BRACE_GROUPS) # define eval_pv(p, croak_on_error) ({ SV *_sv = Perl_eval_pv(aTHX_ p, 0); D_PPP_CROAK_IF_ERROR(croak_on_error); _sv; }) # else # define eval_pv(p, croak_on_error) ((PL_Sv = Perl_eval_pv(aTHX_ p, 0)), D_PPP_CROAK_IF_ERROR(croak_on_error), PL_Sv) @@ -409,7 +409,7 @@ ok($@ =~ /^string3 at \(eval [0-9]+\) line 1\.\n$/); ok(!eval { Devel::PPPort::eval_pv('die False->new', 1); 1 }, 'check false value is rethrown'); -if ("$]" >= '5.007003' or ("$]" >= '5.006001' and "$]" < '5.007')) { +if (ivers($]) >= ivers('5.007003') or (ivers($]) >= ivers('5.006001') and ivers($]) < ivers('5.007'))) { my $hashref = { key => 'value' }; is(eval { Devel::PPPort::eval_pv('die $hashref', 1); 1 }, undef, 'check plain hashref is rethrown'); is(ref($@), 'HASH', 'check $@ is hashref') and @@ -436,7 +436,7 @@ ok($@ =~ /^string3 at \(eval [0-9]+\) line 1\.\n$/); ok(!eval { Devel::PPPort::eval_sv('die False->new', &Devel::PPPort::G_RETHROW); 1 }, 'check false value is rethrown'); -if ("$]" >= '5.007003' or ("$]" >= '5.006001' and "$]" < '5.007')) { +if (ivers($]) >= ivers('5.007003') or (ivers($]) >= ivers('5.006001') and ivers($]) < ivers('5.007'))) { my $hashref = { key => 'value' }; is(eval { Devel::PPPort::eval_sv('die $hashref', &Devel::PPPort::G_RETHROW); 1 }, undef, 'check plain hashref is rethrown'); is(ref($@), 'HASH', 'check $@ is hashref') and diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/cop perl-5.34.0/dist/Devel-PPPort/parts/inc/cop --- perl-5.32.1/dist/Devel-PPPort/parts/inc/cop 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/cop 2020-10-24 18:43:34.000000000 +0000 @@ -57,7 +57,7 @@ I32 i; for (i = startingblock; i >= 0; i--) { - register const PERL_CONTEXT * const cx = &cxstk[i]; + const PERL_CONTEXT * const cx = &cxstk[i]; switch (CxTYPE(cx)) { default: continue; @@ -76,9 +76,9 @@ const PERL_CONTEXT * caller_cx(pTHX_ I32 level, const PERL_CONTEXT **dbcxp) { - register I32 cxix = DPPP_dopoptosub_at(cxstack, cxstack_ix); - register const PERL_CONTEXT *cx; - register const PERL_CONTEXT *ccstack = cxstack; + I32 cxix = DPPP_dopoptosub_at(cxstack, cxstack_ix); + const PERL_CONTEXT *cx; + const PERL_CONTEXT *ccstack = cxstack; const PERL_SI *top_si = PL_curstackinfo; for (;;) { @@ -182,7 +182,7 @@ ok($file =~ /cop/i); BEGIN { - if ("$]" < 5.006000) { + if (ivers($]) < ivers('5.006000')) { skip("Perl version too early", 8); exit; } diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/format perl-5.34.0/dist/Devel-PPPort/parts/inc/format --- perl-5.32.1/dist/Devel-PPPort/parts/inc/format 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/format 2020-10-04 22:17:12.000000000 +0000 @@ -93,7 +93,7 @@ use Config; -if ("$]" < '5.004') { +if (ivers($]) < ivers('5.004')) { skip 'skip: No newSVpvf support', 5; exit; } diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/gv perl-5.34.0/dist/Devel-PPPort/parts/inc/gv --- perl-5.32.1/dist/Devel-PPPort/parts/inc/gv 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/gv 2020-10-04 22:17:12.000000000 +0000 @@ -11,13 +11,7 @@ =provides -GV_NOADD_MASK -gv_fetchpvn_flags -GvSVn -isGV_with_GP -gv_fetchsv -get_cvn_flags -gv_init_pvn +__UNDEFINED__ =implementation @@ -25,8 +19,13 @@ #undef gv_fetchpvn_flags #endif -__UNDEFINED__ GV_NOADD_MASK 0xE0 -__UNDEFINED__ gv_fetchpvn_flags(name, len, flags, sv_type) gv_fetchpv(SvPVX(sv_2mortal(newSVpvn((name), (len)))), ((flags) & GV_NOADD_MASK) ? FALSE : TRUE, (I32)(sv_type)) +#ifdef GV_NOADD_MASK +# define D_PPP_GV_NOADD_MASK GV_NOADD_MASK +#else +# define D_PPP_GV_NOADD_MASK 0xE0 +#endif + +__UNDEFINED__ gv_fetchpvn_flags(name, len, flags, sv_type) gv_fetchpv(SvPVX(sv_2mortal(newSVpvn((name), (len)))), ((flags) & D_PPP_GV_NOADD_MASK) ? FALSE : TRUE, (I32)(sv_type)) __UNDEFINED__ GvSVn(gv) GvSV(gv) __UNDEFINED__ isGV_with_GP(gv) isGV(gv) diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/inctools perl-5.34.0/dist/Devel-PPPort/parts/inc/inctools --- perl-5.32.1/dist/Devel-PPPort/parts/inc/inctools 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/inctools 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,12 @@ # These are tools that must be included in ppport.h. It doesn't work if given -# a .pl suffix +# a .pl suffix. +# +# WARNING: Use only constructs that are legal as far back as D:P handles, as +# this is run in the perl version being tested. + +# What revisions are legal, to be output as-is and converted into a pattern +# that matches them precisely +my $r_pat = "[57]"; sub format_version { @@ -20,43 +27,43 @@ sub parse_version { - # Returns a triplet, (5, major, minor) from the input, treated as a string, - # which can be in any of several typical formats. + # Returns a triplet, (revision, major, minor) from the input, treated as a + # string, which can be in any of several typical formats. my $ver = shift; $ver = "" unless defined $ver; my($r,$v,$s); - if ( ($r, $v, $s) = $ver =~ /^(5)(\d{3})(\d{3})$/ # 5029010, from the file + if ( ($r, $v, $s) = $ver =~ /^([0-9]+)([0-9]{3})([0-9]{3})$/ # 5029010, from the file # names in our # parts/base/ and # parts/todo directories - or ($r, $v, $s) = $ver =~ /^(\d+)\.(\d+)\.(\d+)$/ # 5.25.7 - or ($r, $v, $s) = $ver =~ /^(\d+)\.(\d{3})(\d{3})$/ # 5.025008, from the - # output of $] - or ($r, $v, $s) = $ver =~ /^(\d+)\.(\d{1,3})()$/ # 5.24, 5.004 - or ($r, $v, $s) = $ver =~ /^(\d+)\.(00[1-5])_?(\d{2})$/ # 5.003_07 + or ($r, $v, $s) = $ver =~ /^([0-9]+)\.([0-9]+)\.([0-9]+)$/ # 5.25.7 + or ($r, $v, $s) = $ver =~ /^([0-9]+)\.([0-9]{3})([0-9]{3})$/ # 5.025008, from the + # output of $] + or ($r, $v, $s) = $ver =~ /^([0-9]+)\.([0-9]{1,3})()$/ # 5.24, 5.004 + or ($r, $v, $s) = $ver =~ /^([0-9]+)\.(00[1-5])_?([0-9]{2})$/ # 5.003_07 ) { $s = 0 unless $s; - die "Only Perl 5 is supported '$ver'\n" if $r != 5; + die "Only Perl $r_pat are supported '$ver'\n" unless $r =~ / ^ $r_pat $ /x; die "Invalid version number: $ver\n" if $v >= 1000 || $s >= 1000; - return (5, 0 + $v, 0 + $s); + return (0 +$r, 0 + $v, 0 + $s); } # For some safety, don't assume something is a version number if it has a # literal dot as one of the three characters. This will have to be fixed - # when we reach 5.46 + # when we reach x.46 (since 46 is ord('.')) if ($ver !~ /\./ && (($r, $v, $s) = $ver =~ /^(.)(.)(.)$/)) # vstring 5.25.7 { $r = ord $r; $v = ord $v; $s = ord $s; - die "Only Perl 5 is supported '$ver'\n" if $r != 5; - return (5, $v, $s); + die "Only Perl $r_pat are supported '$ver'\n" unless $r =~ / ^ $r_pat $ /x; + return ($r, $v, $s); } my $mesg = ""; @@ -82,24 +89,30 @@ # Returns a floating point representation of the input version my $version = int_parse_version(shift); - $version =~ s/^5\B/5./; + $version =~ s/ ^ ( $r_pat ) \B /$1./x; return $version; } -sub dictionary_order($$) # Sort caselessly, ignoring punct -{ +BEGIN { + if ("$]" < "5.006" ) { + # On early perls, the implicit pass by reference doesn't work, so we have + # to use the globals to initialize. + eval q[sub dictionary_order($$) { _dictionary_order($a, $b) } ]; + } elsif ("$]" < "5.022" ) { + eval q[sub dictionary_order($$) { _dictionary_order(@_) } ]; + } else { + eval q[sub dictionary_order :prototype($$) { _dictionary_order(@_) } ]; + } +} + +sub _dictionary_order { # Sort caselessly, ignoring punct + my ($valid_a, $valid_b) = @_; + my ($lc_a, $lc_b); my ($squeezed_a, $squeezed_b); - my ($valid_a, $valid_b); # Meaning valid for all releases - # On early perls, the implicit pass by reference doesn't work, so we have - # to use the globals to initialize. - if ("$]" < "5.006" ) { - $valid_a = $a; $valid_b = $b; - } - else { - ($valid_a, $valid_b) = @_; - } + $valid_a = '' unless defined $valid_a; + $valid_b = '' unless defined $valid_b; $lc_a = lc $valid_a; $lc_b = lc $valid_b; diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/locale perl-5.34.0/dist/Devel-PPPort/parts/inc/locale --- perl-5.32.1/dist/Devel-PPPort/parts/inc/locale 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/locale 2020-10-24 18:43:34.000000000 +0000 @@ -1,11 +1,47 @@ =provides __UNDEFINED__ +LOCK_NUMERIC_STANDARD +UNLOCK_NUMERIC_STANDARD =implementation +#if PERL_VERSION_LT(5,27,9) +__UNDEFINED__ LC_NUMERIC_LOCK +__UNDEFINED__ LC_NUMERIC_UNLOCK +# if PERL_VERSION_LT(5,19,0) +# undef STORE_LC_NUMERIC_SET_STANDARD +# undef RESTORE_LC_NUMERIC +# undef DECLARATION_FOR_LC_NUMERIC_MANIPULATION +# ifdef USE_LOCALE +__UNDEFINED__ DECLARATION_FOR_LC_NUMERIC_MANIPULATION char *LoC_ +__UNDEFINED__ STORE_NUMERIC_SET_STANDARD() \ + LoC_ = savepv(setlocale(LC_NUMERIC, NULL)); \ + SAVEFREEPV(LoC_); \ + setlocale(LC_NUMERIC, "C"); +__UNDEFINED__ RESTORE_LC_NUMERIC() \ + setlocale(LC_NUMERIC, LoC_); +# else +__UNDEFINED__ DECLARATION_FOR_LC_NUMERIC_MANIPULATION +__UNDEFINED__ STORE_LC_NUMERIC_SET_STANDARD() +__UNDEFINED__ RESTORE_LC_NUMERIC() +# endif +# endif +#endif + +#ifndef LOCK_NUMERIC_STANDARD +# define LOCK_NUMERIC_STANDARD() +#endif + +#ifndef UNLOCK_NUMERIC_STANDARD +# define UNLOCK_NUMERIC_STANDARD() +#endif + +/* The names of these changed in 5.28 */ +__UNDEFINED__ LOCK_LC_NUMERIC_STANDARD LOCK_NUMERIC_STANDARD +__UNDEFINED__ UNLOCK_LC_NUMERIC_STANDARD UNLOCK_NUMERIC_STANDARD -/* If this doesn't exist, it's not needed, so noop */ +/* If this doesn't exist, it's not needed, so is void noop */ __UNDEFINED__ switch_to_global_locale() /* Originally, this didn't return a value, but in perls like that, the value @@ -17,7 +53,7 @@ # if { VERSION >= 5.21.3 } # undef sync_locale # define sync_locale() (Perl_sync_locale(aTHX), 1) -# elif defined(sync_locale) /* These should be the 5.20 maints*/ +# elif defined(sync_locale) /* These should only be the 5.20 maints*/ # undef sync_locale /* Just copy their defn and return 1 */ # define sync_locale() (new_ctype(setlocale(LC_CTYPE, NULL)), \ new_collate(setlocale(LC_COLLATE, NULL)), \ @@ -46,13 +82,13 @@ use Config; - # We don't know for sure that we are in the global locale for testing. But - # if this is unthreaded, it almost certainly is. But Configure can be called - # to force POSIX locales on unthreaded systems. If this becomes a problem - # this check could be beefed up. - if ($Config{usethreads}) { - ok(1); +# We don't know for sure that we are in the global locale for testing. But +# if this is unthreaded, it almost certainly is. But Configure can be called +# to force POSIX locales on unthreaded systems. If this becomes a problem +# this check could be beefed up. +if ($Config{usethreads}) { + ok(1, "ironically we have to skip testing sync_locale under threads"); } else { - ok(&Devel::PPPort::sync_locale()); + ok(&Devel::PPPort::sync_locale(), "sync_locale returns TRUE"); } diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/magic perl-5.34.0/dist/Devel-PPPort/parts/inc/magic --- perl-5.32.1/dist/Devel-PPPort/parts/inc/magic 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/magic 2020-10-24 18:43:34.000000000 +0000 @@ -34,7 +34,7 @@ __UNDEFINED__ sv_pvn_nomg sv_pvn #ifdef SVf_IVisUV -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +#if defined(PERL_USE_GCC_BRACE_GROUPS) __UNDEFINED__ SvIV_nomg(sv) (!SvGMAGICAL((sv)) ? SvIV((sv)) : ({ SV *_sviv = sv_mortalcopy_flags((sv), SV_NOSTEAL); IV _iv = SvIV(_sviv); SvFLAGS((sv)) = (SvFLAGS((sv)) & ~SVf_IVisUV) | (SvFLAGS(_sviv) & SVf_IVisUV); _iv; })) __UNDEFINED__ SvUV_nomg(sv) (!SvGMAGICAL((sv)) ? SvUV((sv)) : ({ SV *_svuv = sv_mortalcopy_flags((sv), SV_NOSTEAL); UV _uv = SvUV(_svuv); SvFLAGS((sv)) = (SvFLAGS((sv)) & ~SVf_IVisUV) | (SvFLAGS(_svuv) & SVf_IVisUV); _uv; })) #else @@ -643,8 +643,8 @@ # v1 is treated as a bareword in older perls... my $ver = do { local $SIG{'__WARN__'} = sub {}; eval qq[v1.2.0] }; -ok("$]" < 5.009 || $@ eq ''); -ok("$]" < 5.009 || Devel::PPPort::SvVSTRING_mg($ver)); +ok(ivers($]) < ivers("5.009") || $@ eq ''); +ok(ivers($]) < ivers("5.009") || Devel::PPPort::SvVSTRING_mg($ver)); ok(!Devel::PPPort::SvVSTRING_mg(4711)); my $foo = 'bar'; @@ -686,7 +686,7 @@ is tied($negative)->{fetch}, 1; is tied($negative)->{store}, 0; is Devel::PPPort::magic_SvIV_nomg($negative), -1; -if (ivers($]) >= ivers(5.6)) { +if (ivers($]) >= ivers("5.6")) { ok !Devel::PPPort::SVf_IVisUV($negative); } else { skip 'SVf_IVisUV is unsupported', 1; @@ -694,7 +694,7 @@ is tied($negative)->{fetch}, 1; is tied($negative)->{store}, 0; Devel::PPPort::magic_SvUV_nomg($negative); -if (ivers($]) >= ivers(5.6)) { +if (ivers($]) >= ivers("5.6")) { ok !Devel::PPPort::SVf_IVisUV($negative); } else { skip 'SVf_IVisUV is unsupported', 1; @@ -708,7 +708,7 @@ is tied($big)->{fetch}, 1; is tied($big)->{store}, 0; Devel::PPPort::magic_SvIV_nomg($big); -if (ivers($]) >= ivers(5.6)) { +if (ivers($]) >= ivers("5.6")) { ok Devel::PPPort::SVf_IVisUV($big); } else { skip 'SVf_IVisUV is unsupported', 1; @@ -716,7 +716,7 @@ is tied($big)->{fetch}, 1; is tied($big)->{store}, 0; is Devel::PPPort::magic_SvUV_nomg($big), Devel::PPPort::above_IV_MAX(); -if (ivers($]) >= ivers(5.6)) { +if (ivers($]) >= ivers("5.6")) { ok Devel::PPPort::SVf_IVisUV($big); } else { skip 'SVf_IVisUV is unsupported', 1; diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/mess perl-5.34.0/dist/Devel-PPPort/parts/inc/mess --- perl-5.32.1/dist/Devel-PPPort/parts/inc/mess 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/mess 2021-02-21 11:01:31.000000000 +0000 @@ -21,6 +21,7 @@ warn_nocontext croak_nocontext +PERL_ARGS_ASSERT_CROAK_XS_USAGE croak_no_modify Perl_croak_no_modify @@ -313,7 +314,7 @@ =tests plan => 102 -BEGIN { if ("$]" < '5.006') { $^W = 0; } } +BEGIN { if (ivers($]) < ivers('5.006')) { $^W = 0; } } my $warn; my $die; @@ -435,17 +436,17 @@ ok Devel::PPPort::mess_sv("\xC3\xA1", 0) =~ /^\xC3\xA1 at \Q$0\E line /; ok Devel::PPPort::mess_sv(do {my $tmp = "\xC3\xA1"}, 1) =~ /^\xC3\xA1 at \Q$0\E line /; -if ("$]" >= '5.006') { - BEGIN { if ("$]" >= '5.006' && "$]" < '5.008') { require utf8; utf8->import(); } } +if (ivers($]) >= ivers('5.006')) { + BEGIN { if (ivers($]) >= ivers('5.006') && ivers($]) < ivers('5.008')) { require utf8; utf8->import(); } } undef $die; ok !defined eval { Devel::PPPort::croak_sv("\x{100}\n") }; - if ("$]" < '5.007001' || "$]" > '5.007003') { + if (ivers($]) < ivers('5.007001') || ivers($]) > ivers('5.007003')) { is $@, "\x{100}\n"; } else { skip 'skip: broken utf8 support in die hook', 1; } - if ("$]" < '5.007001' || "$]" > '5.008') { + if (ivers($]) < ivers('5.007001') || ivers($]) > ivers('5.008')) { is $die, "\x{100}\n"; } else { skip 'skip: broken utf8 support in die hook', 1; @@ -453,18 +454,18 @@ undef $die; ok !defined eval { Devel::PPPort::croak_sv("\x{100}") }; - if ("$]" < '5.007001' || "$]" > '5.007003') { + if (ivers($]) < ivers('5.007001') || ivers($]) > ivers('5.007003')) { ok $@ =~ /^\x{100} at \Q$0\E line /; } else { skip 'skip: broken utf8 support in die hook', 1; } - if ("$]" < '5.007001' || "$]" > '5.008') { + if (ivers($]) < ivers('5.007001') || ivers($]) > ivers('5.008')) { ok $die =~ /^\x{100} at \Q$0\E line /; } else { skip 'skip: broken utf8 support in die hook', 1; } - if ("$]" < '5.007001' || "$]" > '5.008') { + if (ivers($]) < ivers('5.007001') || ivers($]) > ivers('5.008')) { undef $warn; Devel::PPPort::warn_sv("\x{100}\n"); is $warn, "\x{100}\n"; @@ -487,9 +488,9 @@ if (ord('A') != 65) { skip 'skip: no ASCII support', 24; -} elsif ( "$]" >= '5.008' - && "$]" != '5.013000' # Broken in these ranges - && ! ("$]" >= '5.011005' && "$]" <= '5.012000')) +} elsif ( ivers($]) >= ivers('5.008') + && ivers($]) != ivers('5.013000') # Broken in these ranges + && ! (ivers($]) >= ivers('5.011005') && ivers($]) <= ivers('5.012000'))) { undef $die; ok !defined eval { Devel::PPPort::croak_sv(eval '"\N{U+E1}\n"') }; @@ -533,7 +534,7 @@ Devel::PPPort::warn_sv("\xC3\xA1"); ok $warn =~ eval 'qr/^\N{U+C3}\N{U+A1} at \Q$0\E line /'; - if ("$]" < '5.004') { + if (ivers($]) < ivers('5.004')) { skip 'skip: no support for mess_sv', 8; } else { @@ -553,7 +554,7 @@ skip 'skip: no support for \N{U+..} syntax', 24; } -if ("$]" >= '5.007003' or ("$]" >= '5.006001' and "$]" < '5.007')) { +if (ivers($]) >= ivers('5.007003') or (ivers($]) >= ivers('5.006001') and ivers($]) < ivers('5.007'))) { undef $die; ok !defined eval { Devel::PPPort::croak_sv($scalar_ref) }; ok $@ == $scalar_ref; diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/misc perl-5.34.0/dist/Devel-PPPort/parts/inc/misc --- perl-5.32.1/dist/Devel-PPPort/parts/inc/misc 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/misc 2020-10-24 18:43:34.000000000 +0000 @@ -50,12 +50,23 @@ __UNDEFINED__ __ASSERT_(statement) #endif +#ifndef WIDEST_UTYPE +# ifdef QUADKIND +# ifdef U64TYPE +# define WIDEST_UTYPE U64TYPE +# else +# define WIDEST_UTYPE unsigned Quad_t +# endif +# else +# define WIDEST_UTYPE U32 +# endif +#endif + /* These could become provided if/when they become part of the public API */ __UNDEF_NOT_PROVIDED__ withinCOUNT(c, l, n) \ (((WIDEST_UTYPE) (((c)) - ((l) | 0))) <= (((WIDEST_UTYPE) ((n) | 0)))) __UNDEF_NOT_PROVIDED__ inRANGE(c, l, u) \ ( (sizeof(c) == sizeof(U8)) ? withinCOUNT(((U8) (c)), (l), ((u) - (l))) \ - : (sizeof(c) == sizeof(U16)) ? withinCOUNT(((U16) (c)), (l), ((u) - (l))) \ : (sizeof(c) == sizeof(U32)) ? withinCOUNT(((U32) (c)), (l), ((u) - (l))) \ : (withinCOUNT(((WIDEST_UTYPE) (c)), (l), ((u) - (l))))) @@ -262,6 +273,7 @@ __UNDEFINED__ av_tindex AvFILL __UNDEFINED__ av_top_index AvFILL +__UNDEFINED__ av_count(av) (AvFILL(av)+1) __UNDEFINED__ ERRSV get_sv("@",FALSE) @@ -290,7 +302,7 @@ __UNDEFINED__ dXSTARG SV * targ = sv_newmortal() __UNDEFINED__ dAXMARK I32 ax = POPMARK; \ - register SV ** const mark = PL_stack_base + ax++ + SV ** const mark = PL_stack_base + ax++ __UNDEFINED__ XSprePUSH (sp = PL_stack_base + ax - 1) @@ -348,18 +360,6 @@ #endif -#ifndef WIDEST_UTYPE -# ifdef QUADKIND -# ifdef U64TYPE -# define WIDEST_UTYPE U64TYPE -# else -# define WIDEST_UTYPE Quad_t -# endif -# else -# define WIDEST_UTYPE U32 -# endif -#endif - /* On versions without NATIVE_TO_ASCII, only ASCII is supported */ #if defined(EBCDIC) && defined(NATIVE_TO_ASCI) __UNDEFINED__ NATIVE_TO_LATIN1(c) NATIVE_TO_ASCII(c) @@ -1068,13 +1068,18 @@ __UNDEFINED__ UNLIKELY(x) (x) #ifndef MUTABLE_PTR -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +#if defined(PERL_USE_GCC_BRACE_GROUPS) # define MUTABLE_PTR(p) ({ void *_p = (p); _p; }) #else # define MUTABLE_PTR(p) ((void *) (p)) #endif #endif +__UNDEFINED__ MUTABLE_AV(p) ((AV *)MUTABLE_PTR(p)) +__UNDEFINED__ MUTABLE_CV(p) ((CV *)MUTABLE_PTR(p)) +__UNDEFINED__ MUTABLE_GV(p) ((GV *)MUTABLE_PTR(p)) +__UNDEFINED__ MUTABLE_HV(p) ((HV *)MUTABLE_PTR(p)) +__UNDEFINED__ MUTABLE_IO(p) ((IO *)MUTABLE_PTR(p)) __UNDEFINED__ MUTABLE_SV(p) ((SV *)MUTABLE_PTR(p)) =xsmisc @@ -2527,7 +2532,15 @@ OUTPUT: RETVAL -=tests plan => 26826 +STRLEN +av_count(av) + SV *av + CODE: + RETVAL = av_count((AV*)SvRV(av)); + OUTPUT: + RETVAL + +=tests plan => 26827 use vars qw($my_sv @my_av %my_hv); @@ -2973,3 +2986,4 @@ is(&Devel::PPPort::av_top_index([1,2,3]), 2); is(&Devel::PPPort::av_tindex([1,2,3,4]), 3); +is(&Devel::PPPort::av_count([1,2,3,4]), 4); diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/newCONSTSUB perl-5.34.0/dist/Devel-PPPort/parts/inc/newCONSTSUB --- perl-5.32.1/dist/Devel-PPPort/parts/inc/newCONSTSUB 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/newCONSTSUB 2020-10-24 18:43:34.000000000 +0000 @@ -19,11 +19,6 @@ =implementation -/* Hint: newCONSTSUB - * Returns a CV* as of perl-5.7.1. This return value is not supported - * by Devel::PPPort. - */ - /* newCONSTSUB from IO.xs is in the core starting with 5.004_63 */ #if { VERSION < 5.004_63 } && { VERSION != 5.004_05 } @@ -37,9 +32,10 @@ /* (There's no PL_parser in perl < 5.005, so this is completely safe) */ #define D_PPP_PL_copline PL_copline -void +CV * newCONSTSUB(HV *stash, const char *name, SV *sv) { + CV *cv; U32 oldhints = PL_hints; HV *old_cop_stash = PL_curcop->cop_stash; HV *old_curstash = PL_curstash; @@ -50,7 +46,7 @@ if (stash) PL_curstash = PL_curcop->cop_stash = stash; - newSUB( + cv = newSUB( start_subparse(FALSE, 0), @@ -63,6 +59,8 @@ PL_curcop->cop_stash = old_cop_stash; PL_curstash = old_curstash; PL_curcop->cop_line = oldline; + + return cv; } #endif #endif diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/newRV perl-5.34.0/dist/Devel-PPPort/parts/inc/newRV --- perl-5.32.1/dist/Devel-PPPort/parts/inc/newRV 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/newRV 2020-10-24 18:43:34.000000000 +0000 @@ -19,7 +19,7 @@ __UNDEFINED__ newRV_inc(sv) newRV(sv) /* Replace */ #ifndef newRV_noinc -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +#if defined(PERL_USE_GCC_BRACE_GROUPS) # define newRV_noinc(sv) ({ SV *_sv = (SV *)newRV((sv)); SvREFCNT_dec((sv)); _sv; }) #else # define newRV_noinc(sv) ((PL_Sv = (SV *)newRV((sv))), SvREFCNT_dec((sv)), PL_Sv) diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/newSVpv perl-5.34.0/dist/Devel-PPPort/parts/inc/newSVpv --- perl-5.32.1/dist/Devel-PPPort/parts/inc/newSVpv 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/newSVpv 2020-10-24 18:43:34.000000000 +0000 @@ -31,7 +31,7 @@ __UNDEFINED__ SVf_UTF8 0 #ifndef newSVpvn_flags -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +#if defined(PERL_USE_GCC_BRACE_GROUPS) # define newSVpvn_flags(s, len, flags) ({ SV *_sv = newSVpvn(D_PPP_CONSTPV_ARG((s)), (len)); SvFLAGS(_sv) |= ((flags) & SVf_UTF8); ((flags) & SVs_TEMP) ? sv_2mortal(_sv) : _sv; }) #else # define newSVpvn_flags(s, len, flags) ((PL_Sv = newSVpvn(D_PPP_CONSTPV_ARG((s)), (len))), SvFLAGS(PL_Sv) |= ((flags) & SVf_UTF8), (((flags) & SVs_TEMP) ? sv_2mortal(PL_Sv) : PL_Sv)) @@ -88,7 +88,7 @@ ok(@s == 1); is($s[0], "test"); -if ("$]" >= 5.008001) { +if (ivers($]) >= ivers("5.008001")) { require utf8; ok(utf8::is_utf8($s[0])); } diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/newSV_type perl-5.34.0/dist/Devel-PPPort/parts/inc/newSV_type --- perl-5.32.1/dist/Devel-PPPort/parts/inc/newSV_type 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/newSV_type 2020-10-24 18:43:34.000000000 +0000 @@ -16,7 +16,7 @@ =implementation #ifndef newSV_type -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +#if defined(PERL_USE_GCC_BRACE_GROUPS) # define newSV_type(t) ({ SV *_sv = newSV(0); sv_upgrade(_sv, (t)); _sv; }) #else # define newSV_type(t) ((PL_Sv = newSV(0)), sv_upgrade(PL_Sv, (t)), PL_Sv) diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/ppphbin perl-5.34.0/dist/Devel-PPPort/parts/inc/ppphbin --- perl-5.32.1/dist/Devel-PPPort/parts/inc/ppphbin 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/ppphbin 2020-10-04 22:17:12.000000000 +0000 @@ -18,7 +18,7 @@ BEGIN { require warnings if "$]" > '5.006' } # Disable broken TRIE-optimization -BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if "$]" >= 5.009004 && "$]" <= 5.009005 } +BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if "$]" >= "5.009004" && "$]" <= "5.009005"} my $VERSION = __VERSION__; @@ -92,7 +92,7 @@ (index($4, 'V') >= 0 ? ( unverified => 1 ) : ()), } ) : die "invalid spec: $_" } qw( -__PERL_API__ +__ALL_ELEMENTS__ ); if (exists $opt{'list-unsupported'}) { @@ -104,7 +104,9 @@ next if $API{$f}{experimental}; next unless $API{$f}{todo}; next if int_parse_version($API{$f}{todo}) <= $int_min_perl; - print "$f ", '.'x(40-length($f)), " ", format_version($API{$f}{todo}), "\n"; + my $repeat = 40 - length($f); + $repeat = 0 if $repeat < 0; + print "$f ", '.'x $repeat, " ", format_version($API{$f}{todo}), "\n"; } exit 0; } @@ -216,7 +218,6 @@ # Set $replace to the number given for lines that look like # / * Replace: \d+ * / - # (blanks added to keep real C comments from appearing in this file) # Thus setting it to 1 starts a region where replacements are automatically # done, and setting it to 0 ends that region. $replace = $1 if m{^\s*$rccs\s+Replace:\s+(\d+)\s+$rcce\s*$}; @@ -226,17 +227,14 @@ $replace{$2} = $1 if $replace and m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+)}; # Add bar => foo to %replace for lines like '#define foo bar / * Replace * / - # (blanks added to keep real C comments from appearing in this file) $replace{$2} = $1 if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+).*$rccs\s+Replace\s+$rcce}; # Add foo => bar to %replace for lines like / * Replace foo with bar * / - # (blanks added to keep real C comments from appearing in this file) - $replace{$1} = $2 if m{^\s*$rccs\s+Replace (\w+) with (\w+)\s+$rcce\s*$}; + $replace{$1} = $2 if m{^\s*$rccs\s+Replace (\w+) with (\w+.*?)\s+$rcce\s*$}; # For lines like / * foo, bar depends on baz, bat * / # create a list of the elements on the rhs, and make that list apply to each # element in the lhs, which becomes a key in \%depends. - # (blanks added to keep real C comments from appearing in this file) if (m{^\s*$rccs\s+(\w+(\s*,\s*\w+)*)\s+depends\s+on\s+(\w+(\s*,\s*\w+)*)\s+$rcce\s*$}) { my @deps = map { s/\s+//g; $_ } split /,/, $3; my $d; @@ -257,8 +255,29 @@ my $f; my $count = 0; my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$"; + + # Sort the names, and split into two classes; one for things that are part of + # the API; a second for things that aren't. + my @ok_to_use; + my @shouldnt_use; for $f (sort dictionary_order keys %API) { next unless $f =~ /$match/; + my $base = int_parse_version($API{$f}{base}) if $API{$f}{base}; + if ($base && ! $API{$f}{inaccessible} && ! $API{$f}{core_only}) { + push @ok_to_use, $f; + } + else { + push @shouldnt_use, $f; + } + } + + # We normally suppress non-API items. But if the search matched no API + # items, output the non-ones. This allows someone to get the info for an + # item if they ask for it specifically enough, but doesn't normally clutter + # the output with irrelevant results. + @ok_to_use = @shouldnt_use unless @ok_to_use; + + for $f (@ok_to_use) { print "\n=== $f ===\n"; my $info = 0; my $base; @@ -266,8 +285,8 @@ my $todo; $todo = int_parse_version($API{$f}{todo}) if $API{$f}{todo}; - # Output information if it is generally publicly usable - if ($base && ! $API{$f}{inaccessible} && ! $API{$f}{core_only}) { + # Output information + if ($base) { my $with_or= ""; if ( $base <= $int_min_perl || ( (! $API{$f}{provided} && ! $todo) @@ -275,7 +294,9 @@ { $with_or= " with or"; } - print "\nSupported at least since perl-", + + my $Supported = ($API{$f}{undocumented}) ? 'Available' : 'Supported'; + print "\n$Supported at least since perl-", format_version($base), ",$with_or without $ppport."; if ($API{$f}{unverified}) { print "\nThis information is based on inspection of the source code", @@ -594,7 +615,7 @@ diag("Uses $func"); } } - $warnings += hint($func); + $warnings += (hint($func) || 0); } unless ($opt{quiet}) { @@ -882,7 +903,7 @@ $hint =~ s/^/ /mg; print " --- hint for $func ---\n", $hint; } - $rv; + $rv || 0; } sub usage diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/ppphdoc perl-5.34.0/dist/Devel-PPPort/parts/inc/ppphdoc --- perl-5.32.1/dist/Devel-PPPort/parts/inc/ppphdoc 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/ppphdoc 2020-10-04 22:17:12.000000000 +0000 @@ -54,7 +54,8 @@ from ppport.h --list-provided list provided API - --list-unsupported list unsupported API + --list-unsupported list API that isn't supported all the way + back --api-info=name show Perl API portability information =head1 COMPATIBILITY @@ -155,16 +156,23 @@ =head2 --list-unsupported -Lists the API elements that are known not to be supported by -F and below which version of Perl they probably -won't be available or work. +Lists the API elements that are known not to be FULLY supported by F, +and below which version of Perl they probably won't be available or work. +By FULLY, we mean that support isn't provided all the way back to the first +version of Perl that F supports at all. =head2 --api-info=I -Show portability information for API elements matching I. +Show portability information for elements matching I. If I is surrounded by slashes, it is interpreted as a regular expression. +Normally, only API elements are shown, but if there are no matching API +elements but there are some other matching elements, those are shown. This +allows you to conveniently find when functions internal to the core +implementation were added; only people working on the core are likely to find +this last part useful. + =head1 DESCRIPTION In order for a Perl extension (XS) module to be as portable as possible @@ -192,6 +200,50 @@ =item * +Although the purpose of F is to keep you from having to concern +yourself with what version you are running under, there may arise instances +where you have to do so. These macros, the same ones as in base Perl, are +available to you in all versions, and are what you should use: + +=over 4 + +=item C(major, minor, patch)> + +Returns whether or not the perl currently being compiled has the specified +relationship I to the perl given by the parameters. I is one of +C, C, C, C, C, C. + +For example, + + #if PERL_VERSION_GT(5,24,2) + code that will only be compiled on perls after v5.24.2 + #else + fallback code + #endif + +Note that this is usable in making compile-time decisions + +You may use the special value '*' for the final number to mean ALL possible +values for it. Thus, + + #if PERL_VERSION_EQ(5,31,'*') + +means all perls in the 5.31 series. And + + #if PERL_VERSION_NE(5,24,'*') + +means all perls EXCEPT 5.24 ones. And + + #if PERL_VERSION_LE(5,9,'*') + +is effectively + + #if PERL_VERSION_LT(5,10,0) + +=back + +=item * + If you use one of a few functions or variables that were not present in earlier versions of Perl, and that can't be provided using a macro, you have to explicitly request support for these functions by adding one or @@ -301,7 +353,7 @@ If F was generated using the latest version of C and is causing failure of this module, please -send a bug report to L. +file a bug report at L Please include the following information: diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/ppphtest perl-5.34.0/dist/Devel-PPPort/parts/inc/ppphtest --- perl-5.32.1/dist/Devel-PPPort/parts/inc/ppphtest 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/ppphtest 2020-10-24 18:43:34.000000000 +0000 @@ -9,7 +9,7 @@ ## ################################################################################ -=tests plan => 238 +=tests plan => 235 BEGIN { if ($ENV{'SKIP_SLOW_TESTS'}) { @@ -284,7 +284,6 @@ ok($o =~ /^Uses PL_expect/m); ok($o =~ /^Uses SvPV_nolen.*depends.*sv_2pv_flags/m); ok($o =~ /WARNING: PL_expect/m); -ok($o =~ /hint for newCONSTSUB/m); ok($o =~ /^Analysis completed \(1 warning\)/m); ok($o =~ /^Looks good/m); @@ -296,7 +295,6 @@ ok($o =~ /^Uses PL_expect/m); ok($o =~ /^Uses SvPV_nolen.*depends.*sv_2pv_flags/m); ok($o =~ /WARNING: PL_expect/m); -ok($o !~ /hint for newCONSTSUB/m); ok($o =~ /^Analysis completed \(1 warning\)/m); ok($o =~ /^Looks good/m); @@ -308,7 +306,6 @@ ok($o !~ /^Uses PL_expect/m); ok($o !~ /^Uses SvPV_nolen/m); ok($o =~ /WARNING: PL_expect/m); -ok($o !~ /hint for newCONSTSUB/m); ok($o =~ /^Analysis completed \(1 warning\)/m); ok($o =~ /^Looks good/m); @@ -614,8 +611,8 @@ $o = ppport(qw(--nochanges --compat-version=5.999.999)); ok($o !~ /Uses SvPVutf8_force/m); -$o = ppport(qw(--nochanges --compat-version=6.0.0)); -ok($o =~ /Only Perl 5 is supported/m); +$o = ppport(qw(--nochanges --compat-version=8.0.0)); +ok($o =~ /Only Perl \[57\] are supported/m); $o = ppport(qw(--nochanges --compat-version=5.1000.999)); ok($o =~ /Invalid version number: 5.1000.999/m); @@ -680,7 +677,10 @@ my $fail = 0; for (@o) { my($name, $flags) = /^(\w+)(?:\s+\[(\w+(?:,\s+\w+)*)\])?$/ or $fail++; - exists $p{$name} and $fail++; + { + 'warnings'->unimport('uninitialized') if ivers($]) > ivers('5.006'); + exists $p{$name} and $fail++; + } $p{$name} = defined $flags ? { map { ($_ => 1) } $flags =~ /(\w+)/g } : ''; } ok(@o > 100); @@ -720,8 +720,8 @@ my %p; my $fail = 0; for (@o) { - my($name, $ver) = /^(\w+)\s*\.+\s*([\d._]+)$/ or $fail++; - exists $p{$name} and $fail++; + my($name, $ver) = /^(\w+)\s*\.*\s*([\d._]+)$/ or $fail++; + { exists $p{$name} and $fail++; } $p{$name} = $ver; } ok(@o > 100); diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/pv_tools perl-5.34.0/dist/Devel-PPPort/parts/inc/pv_tools --- perl-5.32.1/dist/Devel-PPPort/parts/inc/pv_tools 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/pv_tools 2020-10-04 22:17:12.000000000 +0000 @@ -252,7 +252,7 @@ my $uni = &Devel::PPPort::pv_escape_can_unicode(); # sanity check -ok($uni ? "$]" >= 5.006 : "$]" < 5.008); +ok($uni ? ivers($]) >= ivers("5.006") : ivers($]) < ivers("5.008")); my @r; diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/SvPV perl-5.34.0/dist/Devel-PPPort/parts/inc/SvPV --- perl-5.32.1/dist/Devel-PPPort/parts/inc/SvPV 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/SvPV 2020-10-24 18:43:34.000000000 +0000 @@ -82,7 +82,7 @@ __UNDEFINED__ SV_HAS_TRAILING_NUL 0 __UNDEFINED__ SV_COW_SHARED_HASH_KEYS 0 -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +#if defined(PERL_USE_GCC_BRACE_GROUPS) __UNDEFINED__ sv_2pv_flags(sv, lp, flags) ({ SV *_sv = (sv); const I32 _flags = (flags); STRLEN *_lp = lp; _lp = _lp ? : &PL_na; (!(_flags & SV_GMAGIC) && SvGMAGICAL(_sv)) ? ({ char *_pv; SvGMAGICAL_off(_sv); _pv = sv_2pv(_sv, _lp); SvGMAGICAL_on(_sv); _pv; }) : sv_2pv(_sv, _lp); }) __UNDEFINED__ sv_pvn_force_flags(sv, lp, flags) ({ SV *_sv = (sv); const I32 _flags = (flags); STRLEN *_lp = lp; _lp = _lp ? : &PL_na; (!(_flags & SV_GMAGIC) && SvGMAGICAL(_sv)) ? ({ char *_pv; SvGMAGICAL_off(_sv); _pv = sv_pvn_force(_sv, _lp); SvGMAGICAL_on(_sv); _pv; }) : sv_pvn_force(_sv, _lp); }) #else @@ -144,6 +144,11 @@ __UNDEFINED__ SvPV_nolen_const(sv) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX_const(sv) : sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC|SV_CONST_RETURN)) +# if defined(PERL_USE_GCC_BRACE_GROUPS) +__UNDEFINED__ SvPVx_nolen_const(sv) ({SV *sV_ = (sv); SvPV_nolen_const(sV_); }) +# else +__UNDEFINED__ SvPVx_nolen_const(sv) (PL_Sv = sv, SvPV_nolen_const(PL_Sv)) +# endif __UNDEFINED__ SvPV_nomg(sv, lp) SvPV_flags(sv, lp, 0) __UNDEFINED__ SvPV_nomg_const(sv, lp) SvPV_flags_const(sv, lp, 0) diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/Sv_set perl-5.34.0/dist/Devel-PPPort/parts/inc/Sv_set --- perl-5.32.1/dist/Devel-PPPort/parts/inc/Sv_set 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/Sv_set 2020-10-24 18:43:34.000000000 +0000 @@ -22,7 +22,7 @@ #if ( { VERSION >= 5.7.3 } && { VERSION < 5.8.7 } ) || ( { VERSION >= 5.9.0 } && { VERSION < 5.9.2 } ) #undef sv_setsv_flags -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +#if defined(PERL_USE_GCC_BRACE_GROUPS) #define sv_setsv_flags(dstr, sstr, flags) \ STMT_START { \ if (((flags) & SV_NOSTEAL) && (sstr) && (SvFLAGS((SV *)(sstr)) & SVs_TEMP)) { \ @@ -48,7 +48,7 @@ #endif #endif -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +#if defined(PERL_USE_GCC_BRACE_GROUPS) __UNDEFINED__ sv_setsv_flags(dstr, sstr, flags) \ STMT_START { \ if (((flags) & SV_NOSTEAL) && (sstr) && (SvFLAGS((SV *)(sstr)) & SVs_TEMP)) { \ @@ -101,7 +101,7 @@ ) #endif -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +#if defined(PERL_USE_GCC_BRACE_GROUPS) __UNDEFINED__ newSVsv_flags(sv, flags) ({ SV *_sv = newSV(0); sv_setsv_flags(_sv, (sv), (flags)); _sv; }) #else __UNDEFINED__ newSVsv_flags(sv, flags) ((PL_Sv = newSV(0)), sv_setsv_flags(PL_Sv, (sv), (flags)), PL_Sv) diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/sv_xpvf perl-5.34.0/dist/Devel-PPPort/parts/inc/sv_xpvf --- perl-5.32.1/dist/Devel-PPPort/parts/inc/sv_xpvf 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/sv_xpvf 2020-10-24 18:43:34.000000000 +0000 @@ -26,7 +26,7 @@ =implementation #if { VERSION >= 5.004 } && !defined(vnewSVpvf) -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +#if defined(PERL_USE_GCC_BRACE_GROUPS) # define vnewSVpvf(pat, args) ({ SV *_sv = newSV(0); sv_vsetpvfn(_sv, (pat), strlen((pat)), (args), Null(SV**), 0, Null(bool*)); _sv; }) #else # define vnewSVpvf(pat, args) ((PL_Sv = newSV(0)), sv_vsetpvfn(PL_Sv, (pat), strlen((pat)), (args), Null(SV**), 0, Null(bool*)), PL_Sv) @@ -283,24 +283,24 @@ $h{foo} = 'foo-'; $h{bar} = ''; -is(&Devel::PPPort::vnewSVpvf(), "$]" >= 5.004 ? 'Perl-42' : '%s-%d'); -is(&Devel::PPPort::sv_vcatpvf('1-2-3-'), "$]" >= 5.004 ? '1-2-3-Perl-42' : '1-2-3-%s-%d'); -is(&Devel::PPPort::sv_vsetpvf('1-2-3-'), "$]" >= 5.004 ? 'Perl-42' : '%s-%d'); +is(&Devel::PPPort::vnewSVpvf(), ivers($]) >= ivers("5.004") ? 'Perl-42' : '%s-%d'); +is(&Devel::PPPort::sv_vcatpvf('1-2-3-'), ivers($]) >= ivers("5.004") ? '1-2-3-Perl-42' : '1-2-3-%s-%d'); +is(&Devel::PPPort::sv_vsetpvf('1-2-3-'), ivers($]) >= ivers("5.004") ? 'Perl-42' : '%s-%d'); &Devel::PPPort::sv_catpvf_mg($h{foo}); -is($h{foo}, "$]" >= 5.004 ? 'foo-Perl-42' : 'foo-'); +is($h{foo}, ivers($]) >= ivers("5.004") ? 'foo-Perl-42' : 'foo-'); &Devel::PPPort::Perl_sv_catpvf_mg($h{foo}); -is($h{foo}, "$]" >= 5.004 ? 'foo-Perl-42-Perl-43' : 'foo-'); +is($h{foo}, ivers($]) >= ivers("5.004") ? 'foo-Perl-42-Perl-43' : 'foo-'); &Devel::PPPort::sv_catpvf_mg_nocontext($h{foo}); -is($h{foo}, "$]" >= 5.004 ? 'foo-Perl-42-Perl-43-Perl-44' : 'foo-'); +is($h{foo}, ivers($]) >= ivers("5.004") ? 'foo-Perl-42-Perl-43-Perl-44' : 'foo-'); &Devel::PPPort::sv_setpvf_mg($h{bar}); -is($h{bar}, "$]" >= 5.004 ? 'mhx-42' : ''); +is($h{bar}, ivers($]) >= ivers("5.004") ? 'mhx-42' : ''); &Devel::PPPort::Perl_sv_setpvf_mg($h{bar}); -is($h{bar}, "$]" >= 5.004 ? 'foo-43' : ''); +is($h{bar}, ivers($]) >= ivers("5.004") ? 'foo-43' : ''); &Devel::PPPort::sv_setpvf_mg_nocontext($h{bar}); -is($h{bar}, "$]" >= 5.004 ? 'bar-44' : ''); +is($h{bar}, ivers($]) >= ivers("5.004") ? 'bar-44' : ''); diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/utf8 perl-5.34.0/dist/Devel-PPPort/parts/inc/utf8 --- perl-5.32.1/dist/Devel-PPPort/parts/inc/utf8 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/utf8 2020-10-24 18:43:34.000000000 +0000 @@ -127,17 +127,14 @@ __UNDEFINED__ UVCHR_IS_INVARIANT(c) UTF8_IS_INVARIANT(c) #ifdef UVCHR_IS_INVARIANT -# if 'A' == 65 -# ifdef QUADKIND -# define D_PPP_UVCHR_SKIP_UPPER(c) \ - (WIDEST_UTYPE) (c) < \ - (((WIDEST_UTYPE) 1) << (6 * D_PPP_BYTE_INFO_BITS)) ? 7 : 13 -# else -# define D_PPP_UVCHR_SKIP_UPPER(c) 7 /* 32 bit platform */ -# endif -# else - /* In the releases this is backported to, UTF-EBCDIC had a max of 2**31-1 */ +# if 'A' != 65 || UVSIZE < 8 + /* 32 bit platform, which includes UTF-EBCDIC on the releases this is + * backported to */ # define D_PPP_UVCHR_SKIP_UPPER(c) 7 +# else +# define D_PPP_UVCHR_SKIP_UPPER(c) \ + (((WIDEST_UTYPE) (c)) < \ + (((WIDEST_UTYPE) 1) << (6 * D_PPP_BYTE_INFO_BITS)) ? 7 : 13) # endif __UNDEFINED__ UVCHR_SKIP(c) \ @@ -435,7 +432,7 @@ /* Also note that SvGETMAGIC() may change presence of SVf_UTF8 flag */ # if { VERSION < 5.17.5 } # undef sv_len_utf8 -# if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +# if defined(PERL_USE_GCC_BRACE_GROUPS) # define sv_len_utf8_nomg(sv) ({ SV *_sv2 = (sv); (SvUTF8(_sv2) ? Perl_sv_len_utf8(aTHX_ (!SvGMAGICAL(_sv2) ? _sv2 : sv_mortalcopy_flags(_sv2, SV_NOSTEAL))) : ({ STRLEN _len; SvPV_nomg(_sv2, _len); _len; })); }) # define sv_len_utf8(sv) ({ SV *_sv1 = (sv); SvGETMAGIC(_sv1); sv_len_utf8_nomg(_sv1); }) # else @@ -443,7 +440,7 @@ # define sv_len_utf8(sv) (PL_Sv = (sv), SvGETMAGIC(PL_Sv), sv_len_utf8_nomg(PL_Sv)) # endif # endif -# if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +# if defined(PERL_USE_GCC_BRACE_GROUPS) __UNDEFINED__ sv_len_utf8_nomg(sv) ({ SV *_sv = (sv); sv_len_utf8(!SvGMAGICAL(_sv) ? _sv : sv_mortalcopy_flags(_sv, SV_NOSTEAL)); }) # else __UNDEFINED__ sv_len_utf8_nomg(sv) ((PL_Sv = (sv)), sv_len_utf8(!SvGMAGICAL(PL_Sv) ? PL_Sv : sv_mortalcopy_flags(PL_Sv, SV_NOSTEAL))) @@ -821,7 +818,7 @@ # An empty input is an assertion failure on debugging builds. It is # deliberately the first test. - require Config; import Config; + require Config; Config->import; use vars '%Config'; # VMS doesn't put DEBUGGING in ccflags, and Windows doesn't have diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/uv perl-5.34.0/dist/Devel-PPPort/parts/inc/uv --- perl-5.32.1/dist/Devel-PPPort/parts/inc/uv 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/uv 2020-10-24 18:43:34.000000000 +0000 @@ -28,7 +28,7 @@ __UNDEFINED__ newSVuv(uv) ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv)) -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +#if defined(PERL_USE_GCC_BRACE_GROUPS) __UNDEFINED__ sv_2uv(sv) ({ SV *_sv = (sv); (UV) (SvNOK(_sv) ? SvNV(_sv) : sv_2nv(_sv)); }) #else __UNDEFINED__ sv_2uv(sv) ((PL_Sv = (sv)), (UV) (SvNOK(PL_Sv) ? SvNV(PL_Sv) : sv_2nv(PL_Sv))) @@ -38,7 +38,7 @@ __UNDEFINED__ SvUVXx(sv) SvUVX(sv) __UNDEFINED__ SvUV(sv) (SvIOK(sv) ? SvUVX(sv) : sv_2uv(sv)) -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +#if defined(PERL_USE_GCC_BRACE_GROUPS) __UNDEFINED__ SvUVx(sv) ({ SV *_sv = (sv)); SvUV(_sv); }) #else __UNDEFINED__ SvUVx(sv) ((PL_Sv = (sv)), SvUV(PL_Sv)) @@ -152,7 +152,7 @@ =tests plan => 11 -BEGIN { require warnings if "$]" > '5.006' } +BEGIN { require warnings if ivers($]) > ivers('5.006') } is(&Devel::PPPort::sv_setuv(42), 42); is(&Devel::PPPort::newSVuv(123), 123); diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/variables perl-5.34.0/dist/Devel-PPPort/parts/inc/variables --- perl-5.32.1/dist/Devel-PPPort/parts/inc/variables 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/variables 2020-10-04 22:17:12.000000000 +0000 @@ -445,7 +445,7 @@ is(&Devel::PPPort::PL_na("abcd"), 4); is(&Devel::PPPort::PL_Sv(), "mhx"); ok(defined &Devel::PPPort::PL_tokenbuf()); -ok("$]" >= 5.009005 || &Devel::PPPort::PL_parser()); +ok(ivers($]) >= ivers("5.009005") || &Devel::PPPort::PL_parser()); ok(&Devel::PPPort::PL_hexdigit() =~ /^[0-9a-zA-Z]+$/); ok(defined &Devel::PPPort::PL_hints()); is(&Devel::PPPort::PL_ppaddr("mhx"), "MHX"); @@ -461,7 +461,7 @@ local $SIG{'__WARN__'} = sub { push @w, @_ }; ok(&Devel::PPPort::dummy_parser_warning()); } - if ("$]" >= 5.009005) { + if (ivers($]) >= ivers("5.009005")) { ok(@w >= 0); for (@w) { print "# $_"; @@ -477,11 +477,11 @@ is($fail, 0); } -ok(&Devel::PPPort::no_dummy_parser_vars(1) >= ("$]" < 5.009005 ? 1 : 0)); +ok(&Devel::PPPort::no_dummy_parser_vars(1) >= (ivers($]) < ivers("5.009005") ? 1 : 0)); eval { &Devel::PPPort::no_dummy_parser_vars(0) }; -if ("$]" < 5.009005) { +if (ivers($]) < ivers("5.009005")) { is($@, ''); } else { diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/version perl-5.34.0/dist/Devel-PPPort/parts/inc/version --- perl-5.32.1/dist/Devel-PPPort/parts/inc/version 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/version 2020-10-24 18:43:34.000000000 +0000 @@ -11,41 +11,145 @@ =provides -PERL_REVISION -PERL_VERSION -PERL_SUBVERSION -PERL_BCDVERSION +__UNDEFINED__ =dontwarn +## We don't want people to be using these symbols so even though we provide +## them, we don't publicly mention them + +PERL_REVISION +PERL_VERSION +PERL_SUBVERSION PERL_PATCHLEVEL_H_IMPLICIT +PERL_BCDVERSION =implementation -#ifndef PERL_REVISION -# if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION)) +#define D_PPP_RELEASE_DATE 1602806400 /* 2020-10-16 */ + +#if ! defined(PERL_REVISION) && ! defined(PERL_VERSION_MAJOR) +# if ! defined(__PATCHLEVEL_H_INCLUDED__) \ + && ! ( defined(PATCHLEVEL) && defined(SUBVERSION)) # define PERL_PATCHLEVEL_H_IMPLICIT # include # endif -# if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL))) +# if ! defined(PERL_VERSION) \ + && ! defined(PERL_VERSION_MAJOR) \ + && ( ! defined(SUBVERSION) || ! defined(PATCHLEVEL) ) # include # endif -# ifndef PERL_REVISION -# define PERL_REVISION (5) - /* Replace: 1 */ -# define PERL_VERSION PATCHLEVEL -# define PERL_SUBVERSION SUBVERSION - /* Replace PERL_PATCHLEVEL with PERL_VERSION */ - /* Replace: 0 */ -# endif #endif -#define D_PPP_DEC2BCD(dec) ((((dec)/100)<<8)|((((dec)%100)/10)<<4)|((dec)%10)) -#define PERL_BCDVERSION ((D_PPP_DEC2BCD(PERL_REVISION)<<24)|(D_PPP_DEC2BCD(PERL_VERSION)<<12)|D_PPP_DEC2BCD(PERL_SUBVERSION)) +#ifdef PERL_VERSION_MAJOR +# define D_PPP_MAJOR PERL_VERSION_MAJOR +#elif defined(PERL_REVISION) +# define D_PPP_MAJOR PERL_REVISION +#else +# define D_PPP_MAJOR 5 +#endif + +#ifdef PERL_VERSION_MINOR +# define D_PPP_MINOR PERL_VERSION_MINOR +#elif defined(PERL_VERSION) +# define D_PPP_MINOR PERL_VERSION +#elif defined(PATCHLEVEL) +# define D_PPP_MINOR PATCHLEVEL +# define PERL_VERSION PATCHLEVEL /* back-compat */ +#else +# error Could not find a source for PERL_VERSION_MINOR +#endif -/* It is very unlikely that anyone will try to use this with Perl 6 - (or greater), but who knows. +#ifdef PERL_VERSION_PATCH +# define D_PPP_PATCH PERL_VERSION_PATCH +#elif defined(PERL_SUBVERSION) +# define D_PPP_PATCH PERL_SUBVERSION +#elif defined(SUBVERSION) +# define D_PPP_PATCH SUBVERSION +# define PERL_SUBVERSION SUBVERSION /* back-compat */ +#else +# error Could not find a source for PERL_VERSION_PATCH +#endif + +#if D_PPP_MAJOR < 5 || D_PPP_MAJOR == 6 +# error Devel::PPPort works only on Perl 5, Perl 7, ... +#elif D_PPP_MAJOR != 5 + /* Perl 7 and above: the old forms are deprecated, set up so that they + * assume Perl 5, and will make this look like 5.201.201. + * + * 201 is used so will be well above anything that would come from a 5 + * series if we unexpectedly have to continue it, but still gives plenty of + * room, up to 255, of numbers that will fit into a byte in case there is + * something else unforeseen */ +# undef PERL_REVISION +# undef PERL_VERSION +# undef PERL_SUBVERSION +# define D_PPP_REVISION 5 +# define D_PPP_VERSION 201 +# define D_PPP_SUBVERSION 201 +# if (defined(__clang__) /* _Pragma here doesn't work with gcc */ \ + && ( (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \ + || defined(_STDC_C99) \ + || defined(__c99))) +# define D_PPP_STRINGIFY(x) #x +# define D_PPP_deprecate(xyz) _Pragma(D_PPP_STRINGIFY(GCC warning(D_PPP_STRINGIFY(xyz) " is deprecated"))) +# define PERL_REVISION (D_PPP_REVISION D_PPP_deprecate(PERL_REVISION)) +# define PERL_VERSION (D_PPP_REVISION D_PPP_deprecate(PERL_VERSION)) +# define PERL_SUBVERSION (D_PPP_SUBVERSION D_PPP_deprecate(PERL_SUBVERSION)) +# else +# define PERL_REVISION D_PPP_REVISION +# define PERL_VERSION D_PPP_REVISION +# define PERL_SUBVERSION D_PPP_SUBVERSION +# endif +#endif + +/* Warning: PERL_PATCHLEVEL PATCHLEVEL SUBVERSION PERL_REVISION PERL_VERSION + * PERL_SUBVERSION PERL_BCDVERSION + * + * You should be using PERL_VERSION_xy(maj,min,ptch) instead of this, where xy + * is one of EQ, NE, LE, GT, LT, GE */ -#if PERL_REVISION != 5 -# error ppport.h only works with Perl version 5 -#endif /* PERL_REVISION != 5 */ + +/* Replace PERL_PATCHLEVEL with PERL_VERSION_xy(5,a,b) (where xy is EQ,LT,GT...) */ +/* Replace PATCHLEVEL with PERL_VERSION_xy(5,a,b) (where xy is EQ,LT,GT...) */ +/* Replace SUBVERSION with PERL_VERSION_xy(5,a,b) (where xy is EQ,LT,GT...) */ +/* Replace PERL_REVISION with PERL_VERSION_xy(a,b,c) (where xy is EQ,LT,GT...) */ +/* Replace PERL_VERSION with PERL_VERSION_xy(5,a,b) (where xy is EQ,LT,GT...) */ +/* Replace PERL_SUBVERSION with PERL_VERSION_xy(5,a,b) (where xy is EQ,LT,GT...) */ +/* Replace PERL_BCDVERSION with PERL_VERSION_xy(5,a,b) (where xy is EQ,LT,GT...) */ + +#define D_PPP_DEC2BCD(dec) ((((dec)/100)<<8)|((((dec)%100)/10)<<4)|((dec)%10)) +#define D_PPP_JNP_TO_BCD(j,n,p) ((D_PPP_DEC2BCD(j)<<24)|(D_PPP_DEC2BCD(n)<<12)|D_PPP_DEC2BCD(p)) +#define PERL_BCDVERSION D_PPP_JNP_TO_BCD(D_PPP_MAJOR, \ + D_PPP_MINOR, \ + D_PPP_PATCH) + +/* These differ from the versions outside D:P in using PERL_BCDVERSION instead + * of PERL_DECIMAL_VERSION. The formats printing in this module assume BCD, so + * always use it */ +#undef PERL_VERSION_EQ +#undef PERL_VERSION_NE +#undef PERL_VERSION_LT +#undef PERL_VERSION_GE +#undef PERL_VERSION_LE +#undef PERL_VERSION_GT + +/* N.B. These don't work if the patch number is 42 or 92, as those are what '*' + * is in ASCII and EBCDIC respectively */ +__UNDEFINED__ PERL_VERSION_EQ(j,n,p) \ + (((p) == '*') ? ( (j) == D_PPP_VERSION_MAJOR \ + && (n) == D_PPP_VERSION_MINOR) \ + : (PERL_BCDVERSION == D_PPP_JNP_TO_BCD(j,n,p))) +__UNDEFINED__ PERL_VERSION_NE(j,n,p) (! PERL_VERSION_EQ(j,n,p)) + +__UNDEFINED__ PERL_VERSION_LT(j,n,p) /* p=='*' means _LT(j,n,0) */ \ + (PERL_BCDVERSION < D_PPP_JNP_TO_BCD( (j), \ + (n), \ + (((p) == '*') ? 0 : (p)))) +__UNDEFINED__ PERL_VERSION_GE(j,n,p) (! PERL_VERSION_LT(j,n,p)) + +__UNDEFINED__ PERL_VERSION_LE(j,n,p) /* p=='*' means _LT(j,n+1,0) */ \ + (PERL_BCDVERSION < D_PPP_JNP_TO_BCD( (j), \ + (((p) == '*') ? ((n)+1) : (n)), \ + (((p) == '*') ? 0 : (p)))) +__UNDEFINED__ PERL_VERSION_GT(j,n,p) (! PERL_VERSION_LE(j,n,p)) diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/inc/warn perl-5.34.0/dist/Devel-PPPort/parts/inc/warn --- perl-5.32.1/dist/Devel-PPPort/parts/inc/warn 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/inc/warn 2020-10-24 18:43:34.000000000 +0000 @@ -13,8 +13,13 @@ __UNDEFINED__ ckWARN +ckWARN_d warner +ck_warner +ck_warner_d Perl_warner +Perl_ck_warner +Perl_ck_warner_d Perl_warner_nocontext =implementation @@ -67,7 +72,10 @@ __UNDEFINED__ WARN_VOID 45 __UNDEFINED__ WARN_ASSERTIONS 46 -__UNDEFINED__ packWARN(a) (a) +__UNDEFINED__ packWARN(a) (a) +__UNDEFINED__ packWARN2(a,b) (packWARN(a) << 8 | (b)) +__UNDEFINED__ packWARN3(a,b,c) (packWARN2(a,b) << 8 | (c)) +__UNDEFINED__ packWARN4(a,b,c,d) (packWARN3(a,b,c) << 8 | (d)) #ifndef ckWARN # ifdef G_WARN_ON @@ -77,34 +85,107 @@ # endif #endif +__UNDEFINED__ ckWARN2(a,b) (ckWARN(a) || ckWARN(b)) +__UNDEFINED__ ckWARN3(a,b,c) (ckWARN(c) || ckWARN2(a,b)) +__UNDEFINED__ ckWARN4(a,b,c,d) (ckWARN(d) || ckWARN3(a,b,c)) + +#ifndef ckWARN_d +# ifdef isLEXWARN_off +# define ckWARN_d(a) (isLEXWARN_off || ckWARN(a)) +# else +# define ckWARN_d(a) 1 +# endif +#endif + +__UNDEFINED__ ckWARN2_d(a,b) (ckWARN_d(a) || ckWARN_d(b)) +__UNDEFINED__ ckWARN3_d(a,b,c) (ckWARN_d(c) || ckWARN2_d(a,b)) +__UNDEFINED__ ckWARN4_d(a,b,c,d) (ckWARN_d(d) || ckWARN3_d(a,b,c)) + +__UNDEFINED__ vwarner(err, pat, argsp) \ + STMT_START { SV *sv; \ + PERL_UNUSED_ARG(err); \ + sv = vnewSVpvf(pat, argsp); \ + sv_2mortal(sv); \ + warn("%s", SvPV_nolen(sv)); \ + } STMT_END + + #if { VERSION >= 5.004 } && !defined(warner) -#if { NEED warner } +# if { NEED warner } void warner(U32 err, const char *pat, ...) { - SV *sv; va_list args; - - PERL_UNUSED_ARG(err); - va_start(args, pat); - sv = vnewSVpvf(pat, &args); + vwarner(err, pat, &args); va_end(args); - sv_2mortal(sv); - warn("%s", SvPV_nolen(sv)); } -#define warner Perl_warner +# define warner Perl_warner + +# define Perl_warner_nocontext Perl_warner + +# endif +#endif + +#if { VERSION >= 5.004 } && !defined(ck_warner) +# if { NEED ck_warner } + +void +ck_warner(pTHX_ U32 err, const char *pat, ...) +{ + va_list args; -#define Perl_warner_nocontext Perl_warner + if ( ! ckWARN((err ) & 0xFF) + && ! ckWARN((err >> 8) & 0xFF) + && ! ckWARN((err >> 16) & 0xFF) + && ! ckWARN((err >> 24) & 0xFF)) + { + return; + } + + va_start(args, pat); + vwarner(err, pat, &args); + va_end(args); +} +# define ck_warner Perl_ck_warner +# endif #endif + +#if { VERSION >= 5.004 } && !defined(ck_warner_d) +# if { NEED ck_warner_d } + +void +ck_warner_d(pTHX_ U32 err, const char *pat, ...) +{ + va_list args; + + if ( ! ckWARN_d((err ) & 0xFF) + && ! ckWARN_d((err >> 8) & 0xFF) + && ! ckWARN_d((err >> 16) & 0xFF) + && ! ckWARN_d((err >> 24) & 0xFF)) + { + return; + } + + va_start(args, pat); + vwarner(err, pat, &args); + va_end(args); +} + +# define ck_warner_d Perl_ck_warner_d + + +# endif #endif =xsinit #define NEED_warner +#define NEED_ck_warner +#define NEED_ck_warner_d =xsubs @@ -123,6 +204,20 @@ #endif void +Perl_ck_warner() + CODE: +#if { VERSION >= 5.004 } + Perl_ck_warner(aTHX_ packWARN(WARN_MISC), "Perl_ck_warner %s:%d", "bar", 42); +#endif + +void +Perl_ck_warner_d() + CODE: +#if { VERSION >= 5.004 } + Perl_ck_warner_d(aTHX_ packWARN(WARN_MISC), "Perl_ck_warner_d %s:%d", "bar", 42); +#endif + +void Perl_warner_nocontext() CODE: #if { VERSION >= 5.004 } @@ -137,7 +232,15 @@ Perl_warner_nocontext(packWARN(WARN_MISC), "ckWARN %s:%d", "bar", 42); #endif -=tests plan => 5 +void +ckWARN_d() + CODE: +#if { VERSION >= 5.004 } + if (ckWARN_d(WARN_MISC)) + Perl_warner_nocontext(packWARN(WARN_MISC), "ckWARN_d %s:%d", "bar", 42); +#endif + +=tests plan => 11 $^W = 0; @@ -147,22 +250,46 @@ $warning = ''; Devel::PPPort::warner(); -ok("$]" >= 5.004 ? $warning =~ /^warner bar:42/ : $warning eq ''); +ok(ivers($]) >= ivers("5.004") ? $warning =~ /^warner bar:42/ : $warning eq ''); $warning = ''; Devel::PPPort::Perl_warner(); -ok("$]" >= 5.004 ? $warning =~ /^Perl_warner bar:42/ : $warning eq ''); +ok(ivers($]) >= ivers("5.004") ? $warning =~ /^Perl_warner bar:42/ : $warning eq ''); $warning = ''; Devel::PPPort::Perl_warner_nocontext(); -ok("$]" >= 5.004 ? $warning =~ /^Perl_warner_nocontext bar:42/ : $warning eq ''); +ok(ivers($]) >= ivers("5.004") ? $warning =~ /^Perl_warner_nocontext bar:42/ : $warning eq ''); $warning = ''; Devel::PPPort::ckWARN(); is($warning, ''); +$warning = ''; +Devel::PPPort::ckWARN_d(); +ok(ivers($]) >= ivers("5.004") ? $warning =~ /^ckWARN_d bar:42/ : $warning eq ''); + +$warning = ''; +Devel::PPPort::Perl_ck_warner(); +ok($warning eq ''); + +$warning = ''; +Devel::PPPort::Perl_ck_warner_d(); +ok(ivers($]) >= ivers("5.004") ? $warning =~ /^Perl_ck_warner_d bar:42/ : $warning eq ''); + $^W = 1; $warning = ''; Devel::PPPort::ckWARN(); -ok("$]" >= 5.004 ? $warning =~ /^ckWARN bar:42/ : $warning eq ''); +ok(ivers($]) >= ivers("5.004") ? $warning =~ /^ckWARN bar:42/ : $warning eq ''); + +$warning = ''; +Devel::PPPort::ckWARN_d(); +ok(ivers($]) >= ivers("5.004") ? $warning =~ /^ckWARN_d bar:42/ : $warning eq ''); + +$warning = ''; +Devel::PPPort::Perl_ck_warner(); +ok(ivers($]) >= ivers("5.004") ? $warning =~ /^Perl_ck_warner bar:42/ : $warning eq ''); + +$warning = ''; +Devel::PPPort::Perl_ck_warner_d(); +ok(ivers($]) >= ivers("5.004") ? $warning =~ /^Perl_ck_warner_d bar:42/ : $warning eq ''); diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/ppport.fnc perl-5.34.0/dist/Devel-PPPort/parts/ppport.fnc --- perl-5.32.1/dist/Devel-PPPort/parts/ppport.fnc 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/ppport.fnc 2020-10-04 22:17:12.000000000 +0000 @@ -15,86 +15,90 @@ : :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : -: This file lists all API functions/macros that are provided purely -: by Devel::PPPort, or that are not public. It is in the same format as the -: F that ships with the Perl source code. +: This file lists all functions/macros that are provided by Devel::PPPort that +: would not be tested otherwise; because either they are not public, or they +: exist only in D:P. It is in the same format as the F that ships +: with the Perl source code. : : Since these are used only to provide the argument types, it's ok to have the -: return value be void for some where it's an issues +: return value be void for some where it's a potential issue. -Amn|void|aTHXR -Amn|void|aTHXR_ -md|int|AvFILLp|AV* av -Amn|void|DEFSV -Amn|void|dMY_CXT_SV -Amn|void|dNOOP -Amn|void|dTHXR -Amn|void|dXSTARG -Amn|void|END_EXTERN_C -Amn|void|EXTERN_C -Amn|void|GV_NOADD_MASK -Amn|void|IN_PERL_COMPILETIME -Amn|void|NOOP -Amn|void|PERL_BCDVERSION -Amn|void|Perl_eval_pv -Amn|void|Perl_eval_sv -Amn|void|PERL_MAGIC_glob -Amn|void|PERL_MAGIC_mutex -Amn|void|PERL_MAGIC_overload -Amn|void|PERL_MAGIC_overload_elem -Amn|void|PERL_PV_PRETTY_DUMP -Amn|void|PERL_PV_PRETTY_NOCLEAR -Amn|void|PERL_PV_PRETTY_REGPROP -Amn|void|PERL_SIGNALS_UNSAFE_FLAG -Amn|void|PERL_UINT_MIN -Amn|void|PERL_UNUSED_CONTEXT -Amn|void|PERL_UNUSED_DECL -Amn|void|PERL_USE_GCC_BRACE_GROUPS -Amn|void|PL_bufend -Amn|void|PL_bufptr -Amn|void|PL_compiling -Amn|void|PL_copline -Amn|void|PL_DBsignal -mnd|SV *|PL_DBsingle -mnd|GV *|PL_DBsub -mnd|SV *|PL_DBtrace -Amn|void|PL_debstash -Amn|void|PL_diehook -Amn|void|PL_dirty -mnd|U8|PL_dowarn -Amn|void|PL_error_count -Amn|void|PL_expect -Amn|void|PL_hexdigit -Amn|void|PL_hints -Amn|void|PL_in_my -Amn|void|PL_in_my_stash -Amn|void|PL_laststatval -Amn|void|PL_lex_state -Amn|void|PL_lex_stuff -Amn|void|PL_linestr -Amn|void|PL_mess_sv -Amn|void|PL_no_modify -Amn|void|PL_perldb -Amn|void|PL_ppaddr -Amn|void|PL_rsfp -Amn|void|PL_rsfp_filters -Amn|void|PL_stack_base -Amn|void|PL_stack_sp -Amn|void|PL_statcache -Amn|void|PL_stdingv -Amn|void|PL_Sv -Amn|void|PL_sv_arenaroot -Amn|void|PL_tainted -Amn|void|PL_tainting -Amn|void|PL_tokenbuf -Amn|void|PL_Xpv -Amn|void|PTRV -Amn|void|SAVE_DEFSV -Amn|void|START_EXTERN_C -Amn|void|SV_CONST_RETURN -Amn|void|SV_COW_SHARED_HASH_KEYS +AmnT|void|aTHXR +AmnT|void|aTHXR_ +dm|int|AvFILLp|AV * av +CprT|void|croak_memory_wrap| +AmnT|void|dTHXR +AmnT|void|dXSTARG +Cdhm|char *|HvNAME_get|HV * stash +AmnT|void|IV_MAX +AmnT|void|IV_MIN +AmnT|void|IVSIZE +AmnT|void|IVTYPE +AmnT|void|LONGSIZE +CpR|SV *|newSVsv_flags|SV * const old|I32 flags +Cdhm|void *|NUM2PTR|type|int value +AmnT|void|NVTYPE +AmnT|void|Perl_eval_pv +AmnT|void|Perl_eval_sv +AmnT|void|PERL_MAGIC_glob +AmnT|void|PERL_MAGIC_mutex +AmnT|void|PERL_MAGIC_overload +AmnT|void|PERL_MAGIC_overload_elem +Cdhmn||PERL_PV_PRETTY_DUMP +Cdhmn||PERL_PV_PRETTY_NOCLEAR +Cdhmn||PERL_PV_PRETTY_REGPROP +AmnT|void|Perl_warner_nocontext +AmnT|void|PL_bufend +AmnT|void|PL_bufptr +AmnT|void|PL_compiling +AmnT|void|PL_copline +AmnT|void|PL_DBsignal +dmn|SV *|PL_DBsingle +dmn|GV *|PL_DBsub +dmn|SV *|PL_DBtrace +AmnT|void|PL_debstash +AmnT|void|PL_diehook +AmnT|void|PL_dirty +dmn|U8|PL_dowarn +AmnT|void|PL_error_count +AmnT|void|PL_expect +AmnT|void|PL_hints +AmnT|void|PL_in_my +AmnT|void|PL_in_my_stash +AmnT|void|PL_laststatval +AmnT|void|PL_lex_state +AmnT|void|PL_lex_stuff +AmnT|void|PL_linestr +AmnT|void|PL_mess_sv +AmnT|void|PL_no_modify +AmnT|void|PL_perldb +AmnT|void|PL_ppaddr +AmnT|void|PL_rsfp +AmnT|void|PL_rsfp_filters +AmnT|void|PL_signals +AmnT|void|PL_stack_base +AmnT|void|PL_stack_sp +AmnT|void|PL_statcache +AmnT|void|PL_stdingv +AmnT|void|PL_sv_arenaroot +AmnT|void|PL_tainted +AmnT|void|PL_tainting +AmnT|void|PL_tokenbuf +AmnT|void|PL_Xpv +bCdMmpR|char *|sv_2pvbyte_nolen|SV * sv +Cdp|char *|sv_2pv_flags|SV * const sv|STRLEN * const lp|const U32 flags +bCdMmpR|char *|sv_2pv_nolen|SV * sv +bCMmp|UV|sv_2uv|SV * sv +AmnT|void|SV_CONST_RETURN +AmnT|void|SV_COW_SHARED_HASH_KEYS +p|STRLEN|sv_len_utf8_nomg|SV * const sv Am|void|sv_magic_portable|NN SV* sv|NULLOK SV* obj|int how|NULLOK const char* name|I32 namlen -Amn|void|SV_MUTABLE_RETURN -Amn|void|SV_UTF8_NO_ENCODING -Amn|void|WARN_ASSERTIONS -Amn|void|XSprePUSH +AmnT|void|SV_MUTABLE_RETURN +bCDdp|UV|sv_uv|SV * sv +AmnT|void|UV_MAX +AmnT|void|UV_MIN +AmnT|void|UVSIZE +AmnT|void|UVTYPE +AmnT|void|UVXf +AmnT|void|WARN_ASSERTIONS +AmnT|void|XSprePUSH diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/ppptools.pl perl-5.34.0/dist/Devel-PPPort/parts/ppptools.pl --- perl-5.32.1/dist/Devel-PPPort/parts/ppptools.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/ppptools.pl 2020-10-04 22:17:12.000000000 +0000 @@ -65,8 +65,8 @@ my $code = $1; s/^\s+//; s/\s+$//; /^\s*$/ and next; - /^\w+$/ or die "invalid identifier: $_\n"; - exists $todo{$_} and die "duplicate identifier: $_ ($todo{$_} <=> $version)\n"; + /^\w+$/ or die "parse_todo: invalid identifier in $todo: $_\n"; + exists $todo{$_} and die "parse_todo: duplicate identifier in $todo: $_ ($todo{$_} <=> $version)\n"; $todo{$_}{'version'} = $version; $todo{$_}{'code'} = $code if $code; } @@ -80,7 +80,7 @@ { my($op, $ver) = @_; my($r, $v, $s) = parse_version($ver); - $r == 5 or die "only Perl revision 5 is supported\n"; + $r =~ / ^ [57] $ /x or die "only Perl revisions [57] are supported\n"; my $bcdver = sprintf "0x%d%03d%03d", $r, $v, $s; return "(PERL_BCDVERSION $op $bcdver)"; } @@ -299,7 +299,8 @@ s/^\s+//; s/\s+$//; # No leading, trailing spacd s/\s+/ /g; # Collapse multiple space into one - return ($_, $name); + return ($_, $name) if defined $name; + return $_; } sub parse_embed @@ -362,6 +363,12 @@ } if ($name =~ /^[^\W\d]\w*$/) { + my $cond = ppcond(\@pps); + if ($cond =~ /defined\(PERL_IN_[A-Z0-9_]+_[CH]/ && $flags =~ /A/) + { + warn "$name marked as API, but restricted scope: $cond\n"; + } + #warn "$name: $cond" if length $cond && $flags =~ /A/; for (@args) { $_ = [trim_arg($_)]; } @@ -371,7 +378,7 @@ flags => { map { $_, 1 } $flags =~ /./g }, ret => $ret, args => \@args, - cond => ppcond(\@pps), + cond => $cond, }; $func[-1]{'ppport_fnc'} = 1 if $file =~ /ppport\.fnc/; } @@ -433,13 +440,19 @@ # # The values for the keys are each the version that ppport.h makes them # work on, and were gleaned by manually looking at the code parts/inc/*. - # For non-ppport.h, scanprov will automatically figure out the version + # For functions, scanprov will automatically figure out the version # they were introduced in. my %return; - for (qw(CLASS dXSI32 items ix pTHX_ RETVAL StructCopy svtype - STMT_START STMT_END STR_WITH_LEN THIS XS)) + + + + +for (qw(CLASS CPERLscope dMY_CXT_SV dXSI32 END_EXTERN_C EXTERN_C items + ix PERL_USE_GCC_BRACE_GROUPS PL_hexdigit pTHX_ PTRV + RETVAL START_EXTERN_C STMT_END STMT_START StructCopy + STR_WITH_LEN svtype THIS XS XSPROTO)) { # __MIN_PERL__ is this at the time of this commit. This is the # earliest these have been tested to at the time of the commit, but @@ -449,6 +462,9 @@ for (qw(_pMY_CXT pMY_CXT_)) { $return{$_} = '5.9.0'; } + for (qw(PERLIO_FUNCS_DECL)) { + $return{$_} = '5.9.3'; + } for (qw(XopDISABLE XopENABLE XopENTRY XopENTRYCUSTOM XopENTRY_set)) { $return{$_} = '5.13.7'; } diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5003007 perl-5.34.0/dist/Devel-PPPort/parts/todo/5003007 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5003007 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5003007 2020-10-04 22:17:12.000000000 +0000 @@ -5,6 +5,7 @@ aTHXR # T aTHXR_ # T av_clear # T +av_count # T av_extend # T av_fetch # T av_fill # T @@ -21,25 +22,33 @@ av_undef # T av_unshift # T ax # T -BIN # T BOM_UTF8 # T boolSV # T -BYTEORDER # T call_argv # T call_method # T call_pv # T call_sv # T C_ARRAY_END # T C_ARRAY_LENGTH # T -CASTFLAGS # T cBOOL # T ckWARN # T +CLASS # X added by devel/scanprov +CopFILE # T +CopFILEAV # T +CopFILEGV # T +CopFILEGV_set # T +CopFILE_set # T +CopFILESV # T +CopSTASH # T +CopSTASH_eq # T +CopSTASHPV # T +CopSTASH_set # T Copy # T CopyD # T -CPPMINUS # T -CPPSTDIN # T +CPERLscope # X added by devel/scanprov croak # T croak_memory_wrap # T +croak_nocontext # T croak_no_modify # T croak_sv # T croak_xs_usage # T @@ -49,10 +58,10 @@ CvGV # T CvSTASH # T cv_undef # T -cxinc # T dAX # T dAXMARK # T DEFSV # T +DEFSV_set # T die # T die_sv # T dITEMS # T @@ -62,39 +71,42 @@ do_join # T do_open # T dORIGMARK # T -do_sprintf # T -dounwind # T dowantarray # T dSP # T +dTARGET # T dTHR # T dTHX # T +dTHXa # T +dTHXoa # T dTHXR # T dUNDERBAR # T dVAR # T dXCPT # T dXSARGS # T +dXSI32 # X added by devel/scanprov dXSTARG # T -END_EXTERN_C # T +END_EXTERN_C # X added by devel/scanprov ENTER # T ERRSV # T eval_pv # T eval_sv # T EXTEND # T -EXTERN_C # T +EXTERN_C # X added by devel/scanprov filter_add # T filter_del # T filter_read # T -free_tmps # T FREETMPS # T G_ARRAY # T G_DISCARD # T get_av # T get_cv # T get_cvn_flags # T +get_cvs # T get_hv # T get_sv # T G_EVAL # T GIMME # T +G_KEEPERR # T G_METHOD # T G_NOARGS # T gp_free # T @@ -109,9 +121,9 @@ G_SCALAR # T GV_ADD # T GV_ADDMULTI # T +GV_ADDWARN # T GvAV # T gv_AVadd # T -gv_check # T GvCV # T gv_efullname # T gv_efullname3 # T @@ -120,6 +132,7 @@ gv_fetchmethod # T gv_fetchpv # T gv_fetchpvn_flags # T +gv_fetchpvs # T gv_fetchsv # T gv_fullname # T gv_fullname3 # T @@ -128,12 +141,12 @@ gv_init # T gv_init_pvn # T gv_IOadd # T -GV_NOADD_MASK # T gv_stashpv # T gv_stashpvn # T gv_stashpvs # T gv_stashsv # T GvSV # T +GvSVn # T HEf_SVKEY # T HeHASH # T HeKEY # T @@ -159,6 +172,8 @@ hv_ksplit # T hv_magic # T HvNAME # T +HvNAME_get # T +HvNAMELEN_get # T hv_store # T hv_store_ent # T hv_stores # T @@ -167,7 +182,7 @@ IN_PERL_COMPILETIME # T instr # T INT2PTR # T -INTSIZE # T +INTMAX_C # T isALNUM # T isALNUM_A # T isALNUMC # T @@ -198,6 +213,7 @@ isGRAPH # T isGRAPH_A # T isGRAPH_L1 # T +isGV_with_GP # T isIDCONT # T isIDCONT_A # T isIDCONT_L1 # T @@ -238,9 +254,13 @@ isXDIGIT_A # T isXDIGIT_L1 # T isXDIGIT_LC # T +items # X added by devel/scanprov IVdf # T +IV_MAX # T +IV_MIN # T IVSIZE # T IVTYPE # T +ix # X added by devel/scanprov LATIN1_TO_NATIVE # T LEAVE # T leave_scope # T @@ -262,7 +282,6 @@ mg_get # T mg_magical # T mg_set # T -moreswitches # T Move # T MoveD # T mPUSHi # T @@ -270,6 +289,8 @@ mPUSHp # T mPUSHs # T mPUSHu # T +MUTABLE_PTR # T +MUTABLE_SV # T mXPUSHi # T mXPUSHn # T mXPUSHp # T @@ -349,6 +370,7 @@ Nullcv # T Nullhv # T Nullsv # T +NUM2PTR # T NVef # T NVff # T NVgf # T @@ -362,11 +384,10 @@ OPpENTERSUB_AMPER # T OpSIBLING # T ORIGMARK # T -OSNAME # T +packWARN # T pad_alloc # T PERL_ABS # T perl_alloc # T -PERL_BCDVERSION # T perl_construct # T Perl_eval_pv # T Perl_eval_sv # T @@ -455,7 +476,6 @@ PERL_PV_PRETTY_REGPROP # T PERL_QUAD_MAX # T PERL_QUAD_MIN # T -PERL_REVISION # T perl_run # T PERL_SCAN_ALLOW_UNDERSCORES # T PERL_SCAN_DISALLOW_PREFIX # T @@ -473,13 +493,21 @@ PERL_UINT_MIN # T PERL_ULONG_MAX # T PERL_ULONG_MIN # T +PERL_UNUSED_ARG # T PERL_UNUSED_CONTEXT # T PERL_UNUSED_DECL # T +PERL_UNUSED_RESULT # T +PERL_UNUSED_VAR # T PERL_UQUAD_MAX # T PERL_UQUAD_MIN # T +PERL_USE_GCC_BRACE_GROUPS # X added by devel/scanprov PERL_USHORT_MAX # T PERL_USHORT_MIN # T PERL_VERSION # T +PERL_VERSION_GE # T +PERL_VERSION_GT # T +PERL_VERSION_LE # T +PERL_VERSION_LT # T PL_bufend # T PL_bufptr # T PL_compiling # T @@ -498,7 +526,7 @@ PL_errgv # T PL_error_count # T PL_expect # T -PL_hexdigit # T +PL_hexdigit # X added by devel/scanprov PL_hints # T PL_in_my # T PL_laststatval # T @@ -513,6 +541,7 @@ PL_ppaddr # T PL_rsfp # T PL_rsfp_filters # T +PL_signals # T PL_stack_base # T PL_stack_sp # T PL_statcache # T @@ -538,12 +567,14 @@ pop_scope # T pregexec # T pregfree # T -PRIVLIB # T pTHX # T +pTHX_ # X added by devel/scanprov PTR2IV # T +PTR2nat # T PTR2NV # T +PTR2ul # T PTR2UV # T -PTRV # T +PTRV # X added by devel/scanprov PUSHi # T PUSHMARK # T PUSHmortal # T @@ -556,48 +587,46 @@ pv_display # T pv_escape # T pv_pretty # T -RANDBITS # T Renew # T Renewc # T repeatcpy # T REPLACEMENT_CHARACTER_UTF8 # T +RETVAL # X added by devel/scanprov rninstr # T Safefree # T save_aptr # T save_ary # T -save_clearsv # T SAVE_DEFSV # T -save_delete # T -save_freepv # T -save_freesv # T +SAVEDELETE # T +SAVEFREEPV # T +SAVEFREESV # T save_hash # T save_hptr # T -save_I32 # T -save_int # T +SAVEI32 # T +SAVEINT # T save_item # T +SAVEIV # T save_list # T -save_long # T +SAVELONG # T save_nogv # T -save_pptr # T +SAVEPPTR # T savepv # T savepvn # T save_scalar # T -save_sptr # T +SAVESPTR # T savestack_grow # T save_svref # T SAVETMPS # T scan_hex # T scan_oct # T setdefout # T -SITELIB # T SP # T SPAGAIN # T ST # T -stack_grow # T -START_EXTERN_C # T -STARTPERL # T +START_EXTERN_C # X added by devel/scanprov start_subparse # T -STDCHAR # T +STMT_END # X added by devel/scanprov +STMT_START # X added by devel/scanprov strEQ # T strGE # T strGT # T @@ -606,12 +635,11 @@ strNE # T strnEQ # T strnNE # T -sv_2bool # T +StructCopy # X added by devel/scanprov +STR_WITH_LEN # X added by devel/scanprov sv_2cv # T sv_2io # T -sv_2iv # T sv_2mortal # T -sv_2pv # T sv_2pvbyte # T sv_2pvbyte_nolen # T sv_2pv_flags # T @@ -647,7 +675,6 @@ SvGETMAGIC # T sv_gets # T SV_GMAGIC # T -sv_grow # T SvGROW # T SV_HAS_TRAILING_NUL # T SV_IMMEDIATE_UNREF # T @@ -674,7 +701,6 @@ sv_mortalcopy_flags # T SV_MUTABLE_RETURN # T sv_newmortal # T -sv_newref # T SvNIOK # T SvNIOK_off # T SvNIOKp # T @@ -691,6 +717,7 @@ SvNVx # T SvOK # T SvOOK # T +SvOOK_off # T SvPOK # T SvPOK_off # T SvPOK_on # T @@ -698,16 +725,33 @@ SvPOKp # T SvPV # T SvPVbyte # T +SvPV_const # T +SvPV_flags # T +SvPV_flags_const # T +SvPV_flags_const_nolen # T +SvPV_flags_mutable # T SvPV_force # T +SvPV_force_flags # T +SvPV_force_flags_mutable # T +SvPV_force_flags_nolen # T +SvPV_force_mutable # T +SvPV_force_nolen # T SvPV_force_nomg # T -sv_pvn_force # T +SvPV_force_nomg_nolen # T +SvPV_mutable # T sv_pvn_force_flags # T SvPV_nolen # T +SvPV_nolen_const # T SvPV_nomg # T +SvPV_nomg_const # T +SvPV_nomg_const_nolen # T SvPV_nomg_nolen # T +SvPV_renew # T SvPV_set # T SvPVX # T SvPVx # T +SvPVX_const # T +SvPVX_mutable # T SvREADONLY # T SvREADONLY_off # T SvREADONLY_on # T @@ -753,6 +797,7 @@ sv_setsv_nomg # T sv_setuv # T sv_setuv_mg # T +SvSHARED_HASH # T SV_SMAGIC # T SvSTASH # T SvSTASH_set # T @@ -776,6 +821,7 @@ SvTRUE_nomg # T SvTRUEx # T SvTYPE # T +svtype # X added by devel/scanprov sv_unmagic # T sv_unmagicext # T sv_unref # T @@ -792,12 +838,14 @@ SvUVX # T SvUVx # T SvUVXx # T +SvVSTRING_mg # T switch_to_global_locale # T sync_locale # T -taint_env # T -taint_proper # T +TARG # T +THIS # X added by devel/scanprov toLOWER # T toUPPER # T +UINTMAX_C # T UNDERBAR # T UNICODE_REPLACEMENT # T UNI_TO_NATIVE # T @@ -809,6 +857,8 @@ UTF8_MAXBYTES_CASE # T UVCHR_IS_INVARIANT # T UVCHR_SKIP # T +UV_MAX # T +UV_MIN # T UVof # T UVSIZE # T UVTYPE # T @@ -876,7 +926,9 @@ XPUSHp # T XPUSHs # T XPUSHu # T +XS # X added by devel/scanprov XSprePUSH # T +XSPROTO # X added by devel/scanprov XSRETURN # T XSRETURN_EMPTY # T XSRETURN_IV # T @@ -897,16 +949,3 @@ XS_VERSION_BOOTCHECK # T Zero # T ZeroD # T -CLASS # X added by devel/scanprov -dXSI32 # X added by devel/scanprov -items # X added by devel/scanprov -ix # X added by devel/scanprov -pTHX_ # X added by devel/scanprov -RETVAL # X added by devel/scanprov -STMT_END # X added by devel/scanprov -STMT_START # X added by devel/scanprov -StructCopy # X added by devel/scanprov -STR_WITH_LEN # X added by devel/scanprov -svtype # X added by devel/scanprov -THIS # X added by devel/scanprov -XS # X added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5004000 perl-5.34.0/dist/Devel-PPPort/parts/todo/5004000 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5004000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5004000 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,4 @@ 5.004000 -ARCHNAME # E block_end # E (Perl_block_end) block_gimme # U block_start # E (Perl_block_start) @@ -31,18 +30,19 @@ isUPPER_LC # U isWORDCHAR_LC # U mess # E (Perl_mess) +mess_nocontext # U mess_sv # U my_failure_exit # U newSVpvf # U -PERL_USE_GCC_BRACE_GROUPS # E +Perl_warner_nocontext # E PL_mess_sv # E POPu # E rsignal # E rsignal_state # E save_gp # U -save_I16 # U +SAVEI16 # U +SAVESTACK_POS # U share_hek # E -SHORTSIZE # E sv_catpvf # U sv_catpvf_mg # U sv_cmp_locale # U @@ -53,12 +53,9 @@ sv_setpvf # U sv_setpvf_mg # U SvSetSV_nosteal # U -sv_taint # U -sv_tainted # U SvTAINTED # U SvTAINTED_off # U SvTAINTED_on # U -sv_untaint # U sv_vcatpvf # U sv_vcatpvf_mg # U sv_vcatpvfn # U @@ -69,3 +66,4 @@ vmess # U vnewSVpvf # U warner # U +warner_nocontext # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5005000 perl-5.34.0/dist/Devel-PPPort/parts/todo/5005000 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5005000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5005000 2020-10-04 22:17:12.000000000 +0000 @@ -1,8 +1,6 @@ 5.005000 -cx_dump # U debop # U debprofdump # U -DOUBLESIZE # E fbm_compile # E (Perl_fbm_compile) fbm_instr # E (Perl_fbm_instr) get_op_descs # U @@ -15,16 +13,5 @@ PL_curpad # E PL_in_my_stash # E PL_modglobal # E -PTRSIZE # E -regdump # U -regexec_flags # U -regnext # E (Perl_regnext) -runops_debug # U -runops_standard # U -save_iv # U (save_iv) -sv_iv # U -sv_nv # U sv_peek # U -sv_pvn # U sv_pvn_nomg # U -sv_true # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5006000 perl-5.34.0/dist/Devel-PPPort/parts/todo/5006000 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5006000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5006000 2020-10-04 22:17:12.000000000 +0000 @@ -3,40 +3,23 @@ av_exists # U call_atexit # E caller_cx # U -cast_i32 # U (cast_i32) -cast_iv # U (cast_iv) -cast_ulong # U -cast_uv # U (cast_uv) ckWARN2 # U ckWARN2_d # U ckWARN_d # U -CPPLAST # E -CPPRUN # E -do_gv_dump # U -do_gvgv_dump # U -do_hv_dump # U -do_magic_dump # U -do_op_dump # U +CopLINE # U +die_nocontext # U do_open9 # U -do_pmop_dump # U -do_sv_dump # U DO_UTF8 # U dump_all # U dump_eval # U dump_form # U -dump_indent # U dump_packsubs # U dump_sub # U -dump_vindent # U +form_nocontext # U +fprintf_nocontext # U get_context # U get_ppaddr # E gv_dump # U -I16SIZE # E -I16TYPE # E -I32SIZE # E -I32TYPE # E -I8SIZE # E -I8TYPE # E isALNUMC_LC # U isALPHA_LC_utf8_safe # U isALPHANUMERIC_LC_utf8_safe # U @@ -90,67 +73,62 @@ isXDIGIT_LC_utf8_safe # U isXDIGIT_utf8_safe # U isXDIGIT_uvchr # U -LSEEKSIZE # E +load_module_nocontext # U magic_dump # U my_atof # U my_fflush_all # U newANONATTRSUB # U newATTRSUB # U +newSVpvf_nocontext # U newXS # E (Perl_newXS) newXSproto # E op_dump # U OPpEARLY_CV # E PERL_EXIT_EXPECTED # E perl_parse # E (perl_parse) +PERL_REVISION # E PERL_SYS_INIT3 # U PL_check # E PL_exit_flags # E PL_runops # E pmop_dump # U POPul # E -reginitcolors # U require_pv # U (perl_require_pv) safesyscalloc # U safesysfree # U safesysmalloc # U safesysrealloc # U save_alloc # U -save_destructor # E (Perl_save_destructor) -save_destructor_x # E -save_I8 # U -save_re_context # U +SAVEDESTRUCTOR # E +SAVEI8 # U save_vptr # U scan_bin # U set_context # U Strtol # U Strtoul # U -str_to_version # U sv_2pvutf8 # U -sv_2pvutf8_nolen # U +sv_catpvf_mg_nocontext # U +sv_catpvf_nocontext # U sv_force_normal # U SvIOK_notUV # U SvIOK_only_UV # U SvIOK_UV # U sv_len_utf8 # U +sv_len_utf8_nomg # U SvPOK_only_UTF8 # U sv_pos_b2u # U sv_pos_u2b # U -sv_pv # U -sv_pvbyte # U -sv_pvbyten # U -sv_pvbyten_force # U SvPVbyte_nolen # U SvPVbytex # U SvPVbytex_force # U -sv_pvutf8 # U SvPVutf8 # U SvPVutf8_force # U -sv_pvutf8n # U -sv_pvutf8n_force # U SvPVutf8_nolen # U SvPVutf8x # U SvPVutf8x_force # U sv_rvweaken # U +sv_setpvf_mg_nocontext # U +sv_setpvf_nocontext # U SvUOK # U sv_utf8_decode # U sv_utf8_downgrade # U @@ -165,12 +143,6 @@ toTITLE_uvchr # U toUPPER_utf8_safe # U toUPPER_uvchr # U -U16SIZE # E -U16TYPE # E -U32SIZE # E -U32TYPE # E -U8SIZE # E -U8TYPE # E UTF8_CHK_SKIP # U utf8_distance # U utf8_hop # U @@ -182,3 +154,4 @@ vform # U vwarn # U vwarner # U +warn_nocontext # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5006001 perl-5.34.0/dist/Devel-PPPort/parts/todo/5006001 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5006001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5006001 2020-10-04 22:17:12.000000000 +0000 @@ -6,7 +6,6 @@ isPSXSPC_LC # U isUTF8_CHAR # U is_utf8_string # U -NVSIZE # E save_generic_pvref # U SvGAMAGIC # U utf8_to_bytes # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5007001 perl-5.34.0/dist/Devel-PPPort/parts/todo/5007001 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5007001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5007001 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,5 @@ 5.007001 bytes_from_utf8 # U -despatch_signals # U do_openn # U gv_handler # U isALNUM_LC_uvchr # U @@ -19,10 +18,10 @@ PerlIO_apply_layers # U PerlIO_binmode # U PerlIO_debug # U +PERLIO_FUNCS_CAST # E POPpbytex # E printf_nocontext # U -save_mortalizesv # U -scan_num # A +SAVEMORTALIZESV # U sv_force_normal_flags # U sv_setref_uv # U sv_unref_flags # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5007002 perl-5.34.0/dist/Devel-PPPort/parts/todo/5007002 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5007002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5007002 2020-10-04 22:17:12.000000000 +0000 @@ -9,7 +9,6 @@ mini_mktime # U my_strftime # U op_null # U -OSVERS # E realloc # U sv_catpvn_flags # U sv_catsv_flags # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5007003 perl-5.34.0/dist/Devel-PPPort/parts/todo/5007003 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5007003 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5007003 2020-10-04 22:17:12.000000000 +0000 @@ -5,7 +5,6 @@ ckWARN4_d # U custom_op_desc # U custom_op_name # U -cx_dup # E (Perl_cx_dup) deb # U deb_nocontext # U debstack # U @@ -21,6 +20,10 @@ my_socketpair # U OP_DESC # U OP_NAME # U +pack_cat # U +packWARN2 # U +packWARN3 # U +packWARN4 # U perl_destruct # E (perl_destruct) PERL_EXIT_DESTRUCT_END # E PerlIO_clearerr # U (PerlIO_clearerr) diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5008001 perl-5.34.0/dist/Devel-PPPort/parts/todo/5008001 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5008001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5008001 2020-10-04 22:17:12.000000000 +0000 @@ -1,15 +1,14 @@ 5.008001 CvPADLIST # E -doing_taint # U find_runcv # U +IN_PERL_RUNTIME # E is_utf8_string_loc # U packlist # U pad_add_anon # U pad_new # E -pad_setsv # U pad_tidy # E PL_comppad # E -save_bool # U +SAVEBOOL # U savestack_grow_cnt # U seed # U sv_cat_decode # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5008009 perl-5.34.0/dist/Devel-PPPort/parts/todo/5008009 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5008009 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5008009 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1 @@ 5.008009 -hv_assert # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5009000 perl-5.34.0/dist/Devel-PPPort/parts/todo/5009000 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5009000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5009000 2020-10-04 22:17:12.000000000 +0000 @@ -7,15 +7,13 @@ MY_CXT # E MY_CXT_CLONE # E MY_CXT_INIT # E -my_cxt_init # U new_version # U parser_dup # U +_pMY_CXT # X added by devel/scanprov pMY_CXT # E -regdupe_internal # U +pMY_CXT_ # X added by devel/scanprov save_set_svflags # U SVs_PADSTALE # E vcmp # U vnumify # U vstringify # U -_pMY_CXT # X added by devel/scanprov -pMY_CXT_ # X added by devel/scanprov diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5009003 perl-5.34.0/dist/Devel-PPPort/parts/todo/5009003 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5009003 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5009003 2020-10-04 22:17:12.000000000 +0000 @@ -1,7 +1,4 @@ 5.009003 -av_arylen_p # U -ckwarn # U -ckwarn_d # U dMULTICALL # E doref # U gv_const_sv # U @@ -18,10 +15,13 @@ MULTICALL # E newGIVENOP # U newSVhek # U +pad_compname_type # U +PERLIO_FUNCS_DECL # X added by devel/scanprov PERL_MAGIC_arylen_p # E PERL_MAGIC_rhash # E PERL_MAGIC_symtab # E POP_MULTICALL # E savepvs # U sortsv_flags # U +SvPV_shrink_to_cur # U vverify # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5009004 perl-5.34.0/dist/Devel-PPPort/parts/todo/5009004 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5009004 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5009004 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ 5.009004 gv_name_set # U +GV_NOTQUAL # E hv_copy_hints_hv # U my_vsnprintf # U newXS_flags # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5009005 perl-5.34.0/dist/Devel-PPPort/parts/todo/5009005 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5009005 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5009005 2020-10-04 22:17:12.000000000 +0000 @@ -16,13 +16,6 @@ ptr_table_split # U ptr_table_store # U re_compile # U -regfree_internal # U -reg_named_buff_all # U -reg_named_buff_exists # U -reg_named_buff_fetch # U -reg_named_buff_firstkey # U -reg_named_buff_nextkey # U -reg_named_buff_scalar # U savesharedpvn # U scan_vstring # E (Perl_scan_vstring) upg_version # E (Perl_upg_version) diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5010000 perl-5.34.0/dist/Devel-PPPort/parts/todo/5010000 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5010000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5010000 2020-10-04 22:17:12.000000000 +0000 @@ -1,12 +1,4 @@ 5.010000 -hv_common # U -hv_common_key_len # U -reentrant_free # U -reentrant_init # U -reentrant_retry # U -reentrant_size # U +my_cxt_init # U START_MY_CXT # E sv_destroyable # U -sys_init # U -sys_init3 # U -sys_term # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5010001 perl-5.34.0/dist/Devel-PPPort/parts/todo/5010001 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5010001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5010001 2020-10-04 22:17:12.000000000 +0000 @@ -4,7 +4,12 @@ mro_register # U mro_set_mro # U mro_set_private_data # U -save_freeop # U (Perl_save_freeop) +MUTABLE_AV # U +MUTABLE_CV # U +MUTABLE_GV # U +MUTABLE_HV # U +MUTABLE_IO # U +SAVEFREEOP # U save_hints # U save_op # U (Perl_save_op) save_padsv_and_mortalize # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5011000 perl-5.34.0/dist/Devel-PPPort/parts/todo/5011000 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5011000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5011000 2020-10-04 22:17:12.000000000 +0000 @@ -1,12 +1,10 @@ 5.011000 -av_iter_p # U gv_add_by_type # U Gv_AMupdate # A is_ascii_string # U is_invariant_string # U is_utf8_invariant_string # U PL_opfreehook # E -pregfree2 # U PUSH_MULTICALL # U re_dup_guts # U save_adelete # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5011002 perl-5.34.0/dist/Devel-PPPort/parts/todo/5011002 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5011002 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5011002 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,4 @@ 5.011002 -CHARBITS # E ENTER_with_name # U LEAVE_with_name # U lex_bufutf8 # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5013006 perl-5.34.0/dist/Devel-PPPort/parts/todo/5013006 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5013006 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5013006 2020-10-04 22:17:12.000000000 +0000 @@ -4,6 +4,7 @@ ck_entersub_args_proto_or_list # U cv_get_call_checker # E cv_set_call_checker # E +gv_fetchpvn # U lex_stuff_pv # U LINKLIST # U mg_free_type # U @@ -20,7 +21,6 @@ RV2CVOPCV_RETURN_NAME_GV # E savesharedpvs # U savesharedsvpv # U -sv_2bool_flags # U sv_catpv_flags # U sv_catpv_nomg # U sv_catpvs_flags # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5013007 perl-5.34.0/dist/Devel-PPPort/parts/todo/5013007 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5013007 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5013007 2020-10-04 22:17:12.000000000 +0000 @@ -36,9 +36,9 @@ parse_label # U PARSE_OPTIONAL # E PL_phase # E -XopFLAGS # E XopDISABLE # X added by devel/scanprov XopENABLE # X added by devel/scanprov XopENTRY # X added by devel/scanprov XopENTRYCUSTOM # X added by devel/scanprov XopENTRY_set # X added by devel/scanprov +XopFLAGS # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5013008 perl-5.34.0/dist/Devel-PPPort/parts/todo/5013008 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5013008 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5013008 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,4 @@ 5.013008 -foldEQ_latin1 # U parse_arithexpr # U parse_fullexpr # U parse_listexpr # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5015003 perl-5.34.0/dist/Devel-PPPort/parts/todo/5015003 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5015003 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5015003 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,4 @@ 5.015003 GV_ADDMG # E +gv_fetchsv_nomg # U +GV_NO_SVGMAGIC # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5017001 perl-5.34.0/dist/Devel-PPPort/parts/todo/5017001 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5017001 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5017001 2020-10-04 22:17:12.000000000 +0000 @@ -1,2 +1,3 @@ 5.017001 alloccopstash # U +CopSTASHPV_set # A diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5017007 perl-5.34.0/dist/Devel-PPPort/parts/todo/5017007 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5017007 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5017007 2020-10-04 22:17:12.000000000 +0000 @@ -6,3 +6,5 @@ isWORDCHAR_LC_uvchr # U isXDIGIT_LC_uvchr # U SvREFCNT_dec_NN # U +SvTRUE_NN # U +SvTRUE_nomg_NN # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5021006 perl-5.34.0/dist/Devel-PPPort/parts/todo/5021006 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5021006 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5021006 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,4 @@ 5.021006 -DOUBLEKIND # E newDEFSVOP # U op_convert_list # U WARN_LOCALE # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5023000 perl-5.34.0/dist/Devel-PPPort/parts/todo/5023000 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5023000 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5023000 2020-10-04 22:17:12.000000000 +0000 @@ -1,8 +1 @@ 5.023000 -DOUBLEINFBYTES # E -DOUBLEMANTBITS # E -DOUBLENANBYTES # E -LONGDBLINFBYTES # E -LONGDBLMANTBITS # E -LONGDBLNANBYTES # E -NVMANTBITS # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5023008 perl-5.34.0/dist/Devel-PPPort/parts/todo/5023008 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5023008 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5023008 2020-10-04 22:17:12.000000000 +0000 @@ -1,18 +1,4 @@ 5.023008 clear_defarray # U -cx_popblock # U -cx_popeval # U -cx_popformat # U -cx_poploop # U -cx_popsub # U -cx_popsub_args # U -cx_popsub_common # U -cx_pushblock # U -cx_pusheval # U -cx_pushformat # U -cx_pushloop_for # U -cx_pushloop_plain # U -cx_pushsub # U -cx_topblock # U leave_adjust_stacks # U savetmps # U diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5027008 perl-5.34.0/dist/Devel-PPPort/parts/todo/5027008 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5027008 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5027008 2020-10-04 22:17:12.000000000 +0000 @@ -1,7 +1,3 @@ 5.027008 -cx_popgiven # U -cx_popwhen # U -cx_pushgiven # U -cx_pushwhen # U newWHENOP # U WARN_EXPERIMENTAL__SCRIPT_RUN # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5028002 perl-5.34.0/dist/Devel-PPPort/parts/todo/5028002 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5028002 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5028002 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.028002 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5028003 perl-5.34.0/dist/Devel-PPPort/parts/todo/5028003 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5028003 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5028003 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.028003 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5030001 perl-5.34.0/dist/Devel-PPPort/parts/todo/5030001 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5030001 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5030001 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.030001 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5030002 perl-5.34.0/dist/Devel-PPPort/parts/todo/5030002 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5030002 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5030002 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.030002 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5030003 perl-5.34.0/dist/Devel-PPPort/parts/todo/5030003 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5030003 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5030003 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.030003 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5031000 perl-5.34.0/dist/Devel-PPPort/parts/todo/5031000 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5031000 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5031000 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.031000 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5031005 perl-5.34.0/dist/Devel-PPPort/parts/todo/5031005 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5031005 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5031005 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,4 @@ 5.031005 -gimme_V # U isALPHANUMERIC_utf8 # A isALPHA_utf8 # A isASCII_utf8 # A diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5031007 perl-5.34.0/dist/Devel-PPPort/parts/todo/5031007 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5031007 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5031007 2020-10-04 22:17:12.000000000 +0000 @@ -1,7 +1,3 @@ 5.031007 -csighandler # E (Perl_csighandler) -csighandler1 # U -csighandler3 # E -perly_sighandler # E sv_isa_sv # U WARN_EXPERIMENTAL__ISA # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5031009 perl-5.34.0/dist/Devel-PPPort/parts/todo/5031009 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5031009 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5031009 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.031009 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5031010 perl-5.34.0/dist/Devel-PPPort/parts/todo/5031010 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5031010 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5031010 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.031010 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5031011 perl-5.34.0/dist/Devel-PPPort/parts/todo/5031011 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5031011 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5031011 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.031011 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5032000 perl-5.34.0/dist/Devel-PPPort/parts/todo/5032000 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5032000 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5032000 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.032000 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5033000 perl-5.34.0/dist/Devel-PPPort/parts/todo/5033000 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5033000 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5033000 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1 @@ +5.033000 diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5033001 perl-5.34.0/dist/Devel-PPPort/parts/todo/5033001 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5033001 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5033001 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1,2 @@ +5.033001 +dMY_CXT_SV # E diff -Nru perl-5.32.1/dist/Devel-PPPort/parts/todo/5033002 perl-5.34.0/dist/Devel-PPPort/parts/todo/5033002 --- perl-5.32.1/dist/Devel-PPPort/parts/todo/5033002 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/parts/todo/5033002 2020-10-04 22:17:12.000000000 +0000 @@ -0,0 +1,3 @@ +5.033002 +PERL_VERSION_EQ # E +PERL_VERSION_NE # E diff -Nru perl-5.32.1/dist/Devel-PPPort/PPPort_pm.PL perl-5.34.0/dist/Devel-PPPort/PPPort_pm.PL --- perl-5.32.1/dist/Devel-PPPort/PPPort_pm.PL 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/PPPort_pm.PL 2020-10-24 18:43:34.000000000 +0000 @@ -85,7 +85,25 @@ # determine my %raw_todo = %{&parse_todo('parts/todo')}; -# Invert so each key is the 7 digit version number, and it's value is an array +# The items defined by config.h are found instead by scanprov which currently +# doesn't write them to the todo files. Instead add them here. All such have +# the K code, and we know certain things about them, so set their flags +# accordingly. +for (keys %raw_base) { + if ( exists $raw_base{$_}{code} + && $raw_base{$_}{code} eq 'K') + { + $embed{$_}->{flags}{'A'} = 1; + $embed{$_}->{flags}{'m'} = 1; + $embed{$_}->{flags}{'d'} = 1; + $embed{$_}->{flags}{'T'} = 1; + # + # Don't override any existing + $raw_todo{$_} = $raw_base{$_} unless exists $raw_todo{$_}; + } +} + +# Invert so each key is the 7 digit version number, and its value is an array # of all symbols within it, like: # '5005003' => [ # 'POPpx', @@ -106,7 +124,7 @@ # directories are empty (which should only happen during regeneration of the # base and todo files).). Actually the final element is for blead (at the # time things were regenerated), which is 1 beyond the max version supported. -my $INT_MAX_PERL = (@todo_list) ? $todo_list[0] - 1 : '5030000'; # used for __MAX_PERL__ +my $INT_MAX_PERL = (@todo_list) ? $todo_list[0] - 1 : '5032000'; # used for __MAX_PERL__ my $MAX_PERL = format_version($INT_MAX_PERL); my $INT_MIN_PERL = (@todo_list) ? $todo_list[-1] : 5003007; my $MIN_PERL = format_version($INT_MIN_PERL); @@ -138,21 +156,30 @@ } } -my @perl_api; +my %perl_api; for (@provided) { next if /^Perl_(.*)/ && exists $embed{$1}; next if exists $embed{$_}; - push @perl_api, $_; + $perl_api{$_} = 1; check(2, "No API definition for provided element $_ found."); } -# At this point @perl_api is the list of things we provide that weren't found -# in the .fnc files. -my @prototype_unknown = @perl_api; +# At this point the keys of %perl_api give the list of things we provide that +# weren't found in the .fnc files. +my @prototype_unknown = keys %perl_api; # Add in the .fnc file definitions. -push @perl_api, keys %embed; -@perl_api = sort dictionary_order @perl_api; +for (keys %embed) { + $perl_api{$_} = 1; +} + +# Finally, scanprov has found macros of various types +my @scanprov_found_macros = grep { $raw_base{$_}{code} =~ /[KMZ]/ } keys %raw_base; +for (@scanprov_found_macros) { + $perl_api{$_} = 1; +} + +my @perl_api = sort dictionary_order keys %perl_api; for (@perl_api) { # $_ is the item name if (exists $provides{$_} && !exists $raw_base{$_}) { @@ -175,18 +202,19 @@ $e = $embed{$_} if exists $embed{$_}; my $is_documented = 0; my $is_accessible = 0; + my $has_thread = 1; if (defined $e) { if (exists $e->{flags}{'p'}) { # Has 'Perl_' prefix my $args = $e->{args}; $line .= 'v' if @$args && $args->[-1][0] eq '...'; } $line .= 'o' if exists $e->{ppport_fnc}; - $line .= 'n' if exists $e->{flags}{'T'}; # No thread context parameter $line .= 'd' if exists $e->{flags}{'D'}; # deprecated $line .= 'x' if exists $e->{flags}{'x'}; # experimental $line .= 'c' if exists $e->{flags}{'C'} # core-only || ( exists $e->{flags}{'X'} && (exists $e->{flags}{'E'} || ! exists $e->{flags}{'m'})); + $has_thread = 0 if exists $e->{flags}{'T'}; # No thread context parameter $is_accessible = 1 if exists $e->{flags}{'A'} || exists $e->{flags}{'C'} || ( exists $e->{flags}{'X'} @@ -195,21 +223,29 @@ $is_documented = 1 if exists $e->{flags}{'d'}; } - # scanprov adds the M and F flags. The M is for provided macros; F for - # functions we didn't find in testing (usually because they are hidden - # behind ifdefs, like PERL_GLOBAL_STRUCT_PRIVATE). None of them were - # verified + # scanprov adds several flags: + # F is for functions we didn't find in testing (usually because they are + # hidden behind ifdefs, like USE_THREADS if built on unthreaded perls, + # or vice-versa. + # K for config.h #defines. These are considered provided and are + # documented in config.h (mnemonic: K is like c in config) + # M for provided, undocumented macros. If they were documented, they + # would have been found before scanprov was run. + # Z for macros that aren't documented or provided. (mnemonic: + # 'Zecret'). Some of these may be hidden behind an #ifdef PERL_CORE. + # None of these were verified by compilation if (exists $raw_base{$_}{code}) { - $line .= 'V' if $raw_base{$_}{code} =~ /[MFX]/; + $line .= 'V' if $raw_base{$_}{code} =~ /[FKMXZ]/; $is_accessible = 1 if $raw_base{$_}{code} =~ /M/; } + $line .= 'n' unless $has_thread; $line .= 'i' unless $is_accessible; $line .= 'u' unless $is_documented; $_ = $line; } -$data =~ s/^([\t ]*)__PERL_API__(\s*?)$/ +$data =~ s/^([\t ]*)__ALL_ELEMENTS__(\s*?)$/ join "\n", map "$1$_", sort dictionary_order @perl_api /gem; @@ -218,7 +254,7 @@ my @todo; for (@todo_list) { my $ver = format_version($_); - $ver .= " (at least)" if $_ == $todo_list[-1]; + $ver .= " (or maybe earlier)" if $_ == $todo_list[-1]; my $todo = "=item perl $ver\n\n"; for (sort dictionary_order @{$todo{$_}}) { $todo .= " $_"; @@ -488,7 +524,7 @@ # # This file was automatically generated from the definition files in the # parts/inc/ subdirectory by PPPort_pm.PL. To learn more about how all this -# works, please read the F file that came with this distribution. +# works, please read the L file that came with this distribution. # ################################################################################ # @@ -567,7 +603,16 @@ optional. Rather, just take the most recent copy of F that you can find (e.g. by generating it with the latest C release from CPAN), copy it into your project, adjust your project to -use it, and distribute the header along with your module. +use it, test it, and distribute the header along with your module. + +It is important to use the most recent version of F. You do need to +test before shipping a newer version than you already had. One possible +failure is that someone had to convert a backported element from a macro into +a function, and actual functions must be enabled with a NEED macro to minimize +the possibility of namespace pollution. See L for details. The +developers of C want to hear if there are other problems that +arise from using a later F. Use +L to report any. =head2 Running ppport.h @@ -691,7 +736,7 @@ Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz. - Copyright (C) 2018, The perl5 porters + Copyright (C) 2018-2020, The perl5 porters Version 2.x, Copyright (C) 2001, Paul Marquess. @@ -711,7 +756,7 @@ use strict; use vars qw($VERSION $data); -$VERSION = '3.57'; +$VERSION = '3.62'; sub _init_data { @@ -747,7 +792,7 @@ __DATA__ #if 0 -<<'SKIP'; +my $void = <<'SKIP'; #endif /* ---------------------------------------------------------------------- diff -Nru perl-5.32.1/dist/Devel-PPPort/t/01_test.t perl-5.34.0/dist/Devel-PPPort/t/01_test.t --- perl-5.32.1/dist/Devel-PPPort/t/01_test.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/01_test.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/01_test instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (1) { - load(); - plan(tests => 1); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -# This test file is used as target dependency for Makefile -ok 1; - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/call.t perl-5.34.0/dist/Devel-PPPort/t/call.t --- perl-5.32.1/dist/Devel-PPPort/t/call.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/call.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,165 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/call instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (88) { - load(); - plan(tests => 88); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -sub f -{ - shift; - unshift @_, 'b'; - pop @_; - @_, defined wantarray ? wantarray ? 'x' : 'y' : 'z'; -} - -my $obj = bless [], 'Foo'; - -sub Foo::meth -{ - return 'bad_self' unless @_ && ref $_[0] && ref($_[0]) eq 'Foo'; - shift; - shift; - unshift @_, 'b'; - pop @_; - @_, defined wantarray ? wantarray ? 'x' : 'y' : 'z'; -} - -my $test; - -for $test ( - # flags args expected description - [ &Devel::PPPort::G_SCALAR, [ ], [ qw(y 1) ], '0 args, G_SCALAR' ], - [ &Devel::PPPort::G_SCALAR, [ qw(a p q) ], [ qw(y 1) ], '3 args, G_SCALAR' ], - [ &Devel::PPPort::G_ARRAY, [ ], [ qw(x 1) ], '0 args, G_ARRAY' ], - [ &Devel::PPPort::G_ARRAY, [ qw(a p q) ], [ qw(b p x 3) ], '3 args, G_ARRAY' ], - [ &Devel::PPPort::G_DISCARD, [ ], [ qw(0) ], '0 args, G_DISCARD' ], - [ &Devel::PPPort::G_DISCARD, [ qw(a p q) ], [ qw(0) ], '3 args, G_DISCARD' ], -) -{ - my ($flags, $args, $expected, $description) = @$test; - print "# --- $description ---\n"; - ok(eq_array( [ &Devel::PPPort::call_sv(\&f, $flags, @$args) ], $expected)); - ok(eq_array( [ &Devel::PPPort::call_sv(*f, $flags, @$args) ], $expected)); - ok(eq_array( [ &Devel::PPPort::call_sv('f', $flags, @$args) ], $expected)); - ok(eq_array( [ &Devel::PPPort::call_pv('f', $flags, @$args) ], $expected)); - ok(eq_array( [ &Devel::PPPort::call_argv('f', $flags, @$args) ], $expected)); - ok(eq_array( [ &Devel::PPPort::eval_sv("f(qw(@$args))", $flags) ], $expected)); - ok(eq_array( [ &Devel::PPPort::call_method('meth', $flags, $obj, @$args) ], $expected)); - ok(eq_array( [ &Devel::PPPort::call_sv_G_METHOD('meth', $flags, $obj, @$args) ], $expected)); -}; - -is(&Devel::PPPort::eval_pv('f()', 0), 'y'); -is(&Devel::PPPort::eval_pv('f(qw(a b c))', 0), 'y'); - -is(!defined $::{'less::'}, 1, "Hadn't loaded less yet"); -Devel::PPPort::load_module(0, "less", undef); -is(defined $::{'less::'}, 1, "Have now loaded less"); - -ok(eval { Devel::PPPort::eval_pv('die', 0); 1 }); -ok(!eval { Devel::PPPort::eval_pv('die', 1); 1 }); -ok($@ =~ /^Died at \(eval [0-9]+\) line 1\.\n$/); -ok(eval { $@ = 'string1'; Devel::PPPort::eval_pv('', 0); 1 }); -ok(eval { $@ = 'string1'; Devel::PPPort::eval_pv('', 1); 1 }); -ok(eval { $@ = 'string1'; Devel::PPPort::eval_pv('$@ = "string2"', 0); 1 }); -ok(eval { $@ = 'string1'; Devel::PPPort::eval_pv('$@ = "string2"', 1); 1 }); -ok(eval { $@ = 'string1'; Devel::PPPort::eval_pv('$@ = "string2"; die "string3"', 0); 1 }); -ok(!eval { $@ = 'string1'; Devel::PPPort::eval_pv('$@ = "string2"; die "string3"', 1); 1 }); -ok($@ =~ /^string3 at \(eval [0-9]+\) line 1\.\n$/); -ok(!eval { Devel::PPPort::eval_pv('die False->new', 1); 1 }, 'check false value is rethrown'); - -if ("$]" >= '5.007003' or ("$]" >= '5.006001' and "$]" < '5.007')) { - my $hashref = { key => 'value' }; - is(eval { Devel::PPPort::eval_pv('die $hashref', 1); 1 }, undef, 'check plain hashref is rethrown'); - is(ref($@), 'HASH', 'check $@ is hashref') and - is($@->{key}, 'value', 'check $@ hashref has correct value'); - - my $false = False->new; - ok(!$false); - is(eval { Devel::PPPort::eval_pv('die $false', 1); 1 }, undef, 'check false objects are rethrown'); - is(ref($@), 'False', 'check that $@ contains False object'); - is("$@", "$false", 'check we got the expected object'); -} else { - skip 'skip: no support for references in $@', 7; -} - -ok(eval { Devel::PPPort::eval_sv('die', 0); 1 }); -ok(!eval { Devel::PPPort::eval_sv('die', &Devel::PPPort::G_RETHROW); 1 }); -ok($@ =~ /^Died at \(eval [0-9]+\) line 1\.\n$/); -ok(eval { $@ = 'string1'; Devel::PPPort::eval_sv('', 0); 1 }); -ok(eval { $@ = 'string1'; Devel::PPPort::eval_sv('', &Devel::PPPort::G_RETHROW); 1 }); -ok(eval { $@ = 'string1'; Devel::PPPort::eval_sv('$@ = "string2"', 0); 1 }); -ok(eval { $@ = 'string1'; Devel::PPPort::eval_sv('$@ = "string2"', &Devel::PPPort::G_RETHROW); 1 }); -ok(eval { $@ = 'string1'; Devel::PPPort::eval_sv('$@ = "string2"; die "string3"', 0); 1 }); -ok(!eval { $@ = 'string1'; Devel::PPPort::eval_sv('$@ = "string2"; die "string3"', &Devel::PPPort::G_RETHROW); 1 }); -ok($@ =~ /^string3 at \(eval [0-9]+\) line 1\.\n$/); -ok(!eval { Devel::PPPort::eval_sv('die False->new', &Devel::PPPort::G_RETHROW); 1 }, 'check false value is rethrown'); - -if ("$]" >= '5.007003' or ("$]" >= '5.006001' and "$]" < '5.007')) { - my $hashref = { key => 'value' }; - is(eval { Devel::PPPort::eval_sv('die $hashref', &Devel::PPPort::G_RETHROW); 1 }, undef, 'check plain hashref is rethrown'); - is(ref($@), 'HASH', 'check $@ is hashref') and - is($@->{key}, 'value', 'check $@ hashref has correct value'); - - my $false = False->new; - ok(!$false); - is(eval { Devel::PPPort::eval_sv('die $false', &Devel::PPPort::G_RETHROW); 1 }, undef, 'check false objects are rethrown'); - is(ref($@), 'False', 'check that $@ contains False object'); - is("$@", "$false", 'check we got the expected object'); -} else { - skip 'skip: no support for references in $@', 7; -} - -{ - package False; - use overload bool => sub { 0 }, '""' => sub { 'Foo' }; - sub new { bless {}, shift } -} - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/cop.t perl-5.34.0/dist/Devel-PPPort/t/cop.t --- perl-5.32.1/dist/Devel-PPPort/t/cop.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/cop.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,108 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/cop instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (8) { - load(); - plan(tests => 8); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -my $package; -{ - package MyPackage; - $package = &Devel::PPPort::CopSTASHPV(); -} -print "# $package\n"; -is($package, "MyPackage"); - -my $file = &Devel::PPPort::CopFILE(); -print "# $file\n"; -ok($file =~ /cop/i); - -BEGIN { - if ("$]" < 5.006000) { - skip("Perl version too early", 8); - exit; - } -} - -BEGIN { - package DB; - no strict "refs"; - local $^P = 1; - sub sub { &$DB::sub } -} - -{ package One; sub one { Devel::PPPort::caller_cx($_[0]) } } -{ - package Two; - sub two { One::one(@_) } - sub dbtwo { - BEGIN { $^P = 1 } - One::one(@_); - BEGIN { $^P = 0 } - } -} - -for ( - # This is rather confusing. The package is the package the call is - # made *from*, the sub name is the sub the call is made *to*. When - # DB::sub is involved the first call is to DB::sub from the calling - # package, the second is to the real sub from package DB. - [\&One::one, 0, qw/main one main one/], - [\&One::one, 2, ], - [\&Two::two, 0, qw/Two one Two one/], - [\&Two::two, 1, qw/main two main two/], - [\&Two::dbtwo, 0, qw/Two sub DB one/], - [\&Two::dbtwo, 1, qw/main dbtwo main dbtwo/], -) { - my ($sub, $arg, @want) = @$_; - my @got = $sub->($arg); - ok(eq_array(\@got, \@want)); -} - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/exception.t perl-5.34.0/dist/Devel-PPPort/t/exception.t --- perl-5.32.1/dist/Devel-PPPort/t/exception.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/exception.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/exception instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (7) { - load(); - plan(tests => 7); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -my $rv; - -$Devel::PPPort::exception_caught = undef; - -$rv = eval { &Devel::PPPort::exception(0) }; -is($@, ''); -ok(defined $rv); -is($rv, 42); -is($Devel::PPPort::exception_caught, 0); - -$Devel::PPPort::exception_caught = undef; - -$rv = eval { &Devel::PPPort::exception(1) }; -is($@, "boo\n"); -ok(not defined $rv); -is($Devel::PPPort::exception_caught, 1); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/format.t perl-5.34.0/dist/Devel-PPPort/t/format.t --- perl-5.32.1/dist/Devel-PPPort/t/format.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/format.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,80 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/format instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (5) { - load(); - plan(tests => 5); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -use Config; - -if ("$]" < '5.004') { - skip 'skip: No newSVpvf support', 5; - exit; -} - -my $num = 1.12345678901234567890; - -eval { Devel::PPPort::croak_NVgf($num) }; -ok($@ =~ /^1.1234567890/); - -is(Devel::PPPort::sprintf_iv(-8), 'XX_-8_XX'); -is(Devel::PPPort::sprintf_uv(15), 'XX_15_XX'); - -my $ivsize = $Config::Config{ivsize}; -if ($ivsize && ($ivsize == 4 || $ivsize == 8)) { - my $ivmax = ($ivsize == 4) ? '2147483647' : '9223372036854775807'; - my $uvmax = ($ivsize == 4) ? '4294967295' : '18446744073709551615'; - is(Devel::PPPort::sprintf_ivmax(), $ivmax); - is(Devel::PPPort::sprintf_uvmax(), $uvmax); -} -else { - skip 'skip: unknown ivsize', 2; -} - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/grok.t perl-5.34.0/dist/Devel-PPPort/t/grok.t --- perl-5.32.1/dist/Devel-PPPort/t/grok.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/grok.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/grok instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (10) { - load(); - plan(tests => 10); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -is(&Devel::PPPort::grok_number("42"), 42); -ok(!defined(&Devel::PPPort::grok_number("A"))); -is(&Devel::PPPort::grok_bin("10000001"), 129); -is(&Devel::PPPort::grok_hex("deadbeef"), 0xdeadbeef); -is(&Devel::PPPort::grok_oct("377"), 255); - -is(&Devel::PPPort::Perl_grok_number("42"), 42); -ok(!defined(&Devel::PPPort::Perl_grok_number("A"))); -is(&Devel::PPPort::Perl_grok_bin("10000001"), 129); -is(&Devel::PPPort::Perl_grok_hex("deadbeef"), 0xdeadbeef); -is(&Devel::PPPort::Perl_grok_oct("377"), 255); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/gv.t perl-5.34.0/dist/Devel-PPPort/t/gv.t --- perl-5.32.1/dist/Devel-PPPort/t/gv.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/gv.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/gv instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (7) { - load(); - plan(tests => 7); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -is(Devel::PPPort::GvSVn(), 1); - -is(Devel::PPPort::isGV_with_GP(), 2); - -is(Devel::PPPort::get_cvn_flags(), 3); - -is(Devel::PPPort::gv_fetchpvn_flags(), \*Devel::PPPort::VERSION); - -is(Devel::PPPort::gv_fetchsv("Devel::PPPort::VERSION"), \*Devel::PPPort::VERSION); - -is(Devel::PPPort::gv_init_type("sanity_check", 0, 0), "*main::sanity_check"); -ok($::{sanity_check}); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/HvNAME.t perl-5.34.0/dist/Devel-PPPort/t/HvNAME.t --- perl-5.32.1/dist/Devel-PPPort/t/HvNAME.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/HvNAME.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/HvNAME instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (4) { - load(); - plan(tests => 4); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -is(Devel::PPPort::HvNAME_get(\%Devel::PPPort::), 'Devel::PPPort'); -ok(!defined Devel::PPPort::HvNAME_get({})); - -is(Devel::PPPort::HvNAMELEN_get(\%Devel::PPPort::), length('Devel::PPPort')); -is(Devel::PPPort::HvNAMELEN_get({}), 0); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/limits.t perl-5.34.0/dist/Devel-PPPort/t/limits.t --- perl-5.32.1/dist/Devel-PPPort/t/limits.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/limits.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/limits instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (4) { - load(); - plan(tests => 4); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -ok(&Devel::PPPort::iv_size()); -ok(&Devel::PPPort::uv_size()); -ok(&Devel::PPPort::iv_type()); -ok(&Devel::PPPort::uv_type()); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/locale.t perl-5.34.0/dist/Devel-PPPort/t/locale.t --- perl-5.32.1/dist/Devel-PPPort/t/locale.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/locale.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/locale instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (1) { - load(); - plan(tests => 1); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -use Config; - - # We don't know for sure that we are in the global locale for testing. But - # if this is unthreaded, it almost certainly is. But Configure can be called - # to force POSIX locales on unthreaded systems. If this becomes a problem - # this check could be beefed up. - if ($Config{usethreads}) { - ok(1); -} -else { - ok(&Devel::PPPort::sync_locale()); -} - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/magic.t perl-5.34.0/dist/Devel-PPPort/t/magic.t --- perl-5.32.1/dist/Devel-PPPort/t/magic.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/magic.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,229 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/magic instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (63) { - load(); - plan(tests => 63); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -# Find proper magic -ok(my $obj1 = Devel::PPPort->new_with_mg()); -is(Devel::PPPort::as_string($obj1), 'hello'); - -# Find with no magic -my $obj = bless {}, 'Fake::Class'; -is(Devel::PPPort::as_string($obj), "Sorry, your princess is in another castle."); - -# Find with other magic (not the magic we are looking for) -ok($obj = Devel::PPPort->new_with_other_mg()); -is(Devel::PPPort::as_string($obj), "Sorry, your princess is in another castle."); - -# Okay, attempt to remove magic that isn't there -Devel::PPPort::remove_other_magic($obj1); -is(Devel::PPPort::as_string($obj1), 'hello'); - -# Remove magic that IS there -Devel::PPPort::remove_null_magic($obj1); -is(Devel::PPPort::as_string($obj1), "Sorry, your princess is in another castle."); - -# Removing when no magic present -Devel::PPPort::remove_null_magic($obj1); -is(Devel::PPPort::as_string($obj1), "Sorry, your princess is in another castle."); - -use Tie::Hash; -my %h; -tie %h, 'Tie::StdHash'; -$h{foo} = 'foo'; -$h{bar} = ''; - -&Devel::PPPort::sv_catpv_mg($h{foo}, 'bar'); -is($h{foo}, 'foobar'); - -&Devel::PPPort::sv_catpvn_mg($h{bar}, 'baz'); -is($h{bar}, 'baz'); - -&Devel::PPPort::sv_catsv_mg($h{foo}, '42'); -is($h{foo}, 'foobar42'); - -&Devel::PPPort::sv_setiv_mg($h{bar}, 42); -is($h{bar}, 42); - -&Devel::PPPort::sv_setnv_mg($h{PI}, 3.14159); -ok(abs($h{PI} - 3.14159) < 0.01); - -&Devel::PPPort::sv_setpv_mg($h{mhx}, 'mhx'); -is($h{mhx}, 'mhx'); - -&Devel::PPPort::sv_setpvn_mg($h{mhx}, 'Marcus'); -is($h{mhx}, 'Marcus'); - -&Devel::PPPort::sv_setsv_mg($h{sv}, 'SV'); -is($h{sv}, 'SV'); - -&Devel::PPPort::sv_setuv_mg($h{sv}, 4711); -is($h{sv}, 4711); - -&Devel::PPPort::sv_usepvn_mg($h{sv}, 'Perl'); -is($h{sv}, 'Perl'); - -# v1 is treated as a bareword in older perls... -my $ver = do { local $SIG{'__WARN__'} = sub {}; eval qq[v1.2.0] }; -ok("$]" < 5.009 || $@ eq ''); -ok("$]" < 5.009 || Devel::PPPort::SvVSTRING_mg($ver)); -ok(!Devel::PPPort::SvVSTRING_mg(4711)); - -my $foo = 'bar'; -ok(Devel::PPPort::sv_magic_portable($foo)); -ok($foo eq 'bar'); - - tie my $scalar, 'TieScalarCounter', 10; - my $fetch = $scalar; - - is tied($scalar)->{fetch}, 1; - is tied($scalar)->{store}, 0; - is Devel::PPPort::magic_SvIV_nomg($scalar), 10; - is tied($scalar)->{fetch}, 1; - is tied($scalar)->{store}, 0; - is Devel::PPPort::magic_SvUV_nomg($scalar), 10; - is tied($scalar)->{fetch}, 1; - is tied($scalar)->{store}, 0; - is Devel::PPPort::magic_SvNV_nomg($scalar), 10; - is tied($scalar)->{fetch}, 1; - is tied($scalar)->{store}, 0; - is Devel::PPPort::magic_SvPV_nomg_nolen($scalar), 10; - is tied($scalar)->{fetch}, 1; - is tied($scalar)->{store}, 0; - ok Devel::PPPort::magic_SvTRUE_nomg($scalar); - is tied($scalar)->{fetch}, 1; - is tied($scalar)->{store}, 0; - - my $object = OverloadedObject->new('string', 5.5, 0); - - is Devel::PPPort::magic_SvIV_nomg($object), 5; - is Devel::PPPort::magic_SvUV_nomg($object), 5; - is Devel::PPPort::magic_SvNV_nomg($object), 5.5; - is Devel::PPPort::magic_SvPV_nomg_nolen($object), 'string'; - ok !Devel::PPPort::magic_SvTRUE_nomg($object); - -tie my $negative, 'TieScalarCounter', -1; -$fetch = $negative; - -is tied($negative)->{fetch}, 1; -is tied($negative)->{store}, 0; -is Devel::PPPort::magic_SvIV_nomg($negative), -1; -if (ivers($]) >= ivers(5.6)) { - ok !Devel::PPPort::SVf_IVisUV($negative); -} else { - skip 'SVf_IVisUV is unsupported', 1; -} -is tied($negative)->{fetch}, 1; -is tied($negative)->{store}, 0; -Devel::PPPort::magic_SvUV_nomg($negative); -if (ivers($]) >= ivers(5.6)) { - ok !Devel::PPPort::SVf_IVisUV($negative); -} else { - skip 'SVf_IVisUV is unsupported', 1; -} -is tied($negative)->{fetch}, 1; -is tied($negative)->{store}, 0; - -tie my $big, 'TieScalarCounter', Devel::PPPort::above_IV_MAX(); -$fetch = $big; - -is tied($big)->{fetch}, 1; -is tied($big)->{store}, 0; -Devel::PPPort::magic_SvIV_nomg($big); -if (ivers($]) >= ivers(5.6)) { - ok Devel::PPPort::SVf_IVisUV($big); -} else { - skip 'SVf_IVisUV is unsupported', 1; -} -is tied($big)->{fetch}, 1; -is tied($big)->{store}, 0; -is Devel::PPPort::magic_SvUV_nomg($big), Devel::PPPort::above_IV_MAX(); -if (ivers($]) >= ivers(5.6)) { - ok Devel::PPPort::SVf_IVisUV($big); -} else { - skip 'SVf_IVisUV is unsupported', 1; -} -is tied($big)->{fetch}, 1; -is tied($big)->{store}, 0; - -package TieScalarCounter; - -sub TIESCALAR { - my ($class, $value) = @_; - return bless { fetch => 0, store => 0, value => $value }, $class; -} - -sub FETCH { - my ($self) = @_; - $self->{fetch}++; - return $self->{value}; -} - -sub STORE { - my ($self, $value) = @_; - $self->{store}++; - $self->{value} = $value; -} - -package OverloadedObject; - -sub new { - my ($class, $str, $num, $bool) = @_; - return bless { str => $str, num => $num, bool => $bool }, $class; -} - -use overload - '""' => sub { $_[0]->{str} }, - '0+' => sub { $_[0]->{num} }, - 'bool' => sub { $_[0]->{bool} }, - ; - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/memory.t perl-5.34.0/dist/Devel-PPPort/t/memory.t --- perl-5.32.1/dist/Devel-PPPort/t/memory.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/memory.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/memory instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (1) { - load(); - plan(tests => 1); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -is(Devel::PPPort::checkmem(), 6); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/mess.t perl-5.34.0/dist/Devel-PPPort/t/mess.t --- perl-5.32.1/dist/Devel-PPPort/t/mess.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/mess.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,327 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/mess instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (102) { - load(); - plan(tests => 102); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -BEGIN { if ("$]" < '5.006') { $^W = 0; } } - -my $warn; -my $die; -local $SIG{__WARN__} = sub { $warn = $_[0] }; -local $SIG{__DIE__} = sub { $die = $_[0] }; - -my $scalar_ref = \do {my $tmp = 10}; -my $array_ref = []; -my $hash_ref = {}; -my $obj = bless {}, 'Package'; - -undef $die; -ok !defined eval { Devel::PPPort::croak_sv("\xE1\n") }; -is $@, "\xE1\n"; -is $die, "\xE1\n"; - -undef $die; -ok !defined eval { Devel::PPPort::croak_sv(10) }; -ok $@ =~ /^10 at \Q$0\E line /; -ok $die =~ /^10 at \Q$0\E line /; - -undef $die; -$@ = 'should not be visible (1)'; -ok !defined eval { - $@ = 'should not be visible (2)'; - Devel::PPPort::croak_sv(''); -}; -ok $@ =~ /^ at \Q$0\E line /; -ok $die =~ /^ at \Q$0\E line /; - -undef $die; -$@ = 'should not be visible'; -ok !defined eval { - $@ = 'this must be visible'; - Devel::PPPort::croak_sv($@) -}; -ok $@ =~ /^this must be visible at \Q$0\E line /; -ok $die =~ /^this must be visible at \Q$0\E line /; - -undef $die; -$@ = 'should not be visible'; -ok !defined eval { - $@ = "this must be visible\n"; - Devel::PPPort::croak_sv($@) -}; -is $@, "this must be visible\n"; -is $die, "this must be visible\n"; - -undef $die; -$@ = 'should not be visible'; -ok !defined eval { - $@ = 'this must be visible'; - Devel::PPPort::croak_sv_errsv() -}; -ok $@ =~ /^this must be visible at \Q$0\E line /; -ok $die =~ /^this must be visible at \Q$0\E line /; - -undef $die; -$@ = 'should not be visible'; -ok !defined eval { - $@ = "this must be visible\n"; - Devel::PPPort::croak_sv_errsv() -}; -is $@, "this must be visible\n"; -is $die, "this must be visible\n"; - -undef $die; -ok !defined eval { Devel::PPPort::croak_sv_with_counter("message\n") }; -is $@, "message\n"; -is Devel::PPPort::get_counter(), 1; - -undef $die; -ok !defined eval { Devel::PPPort::croak_sv('') }; -ok $@ =~ /^ at \Q$0\E line /; -ok $die =~ /^ at \Q$0\E line /; - -undef $die; -ok !defined eval { Devel::PPPort::croak_sv("\xE1") }; -ok $@ =~ /^\xE1 at \Q$0\E line /; -ok $die =~ /^\xE1 at \Q$0\E line /; - -undef $die; -ok !defined eval { Devel::PPPort::croak_sv("\xC3\xA1") }; -ok $@ =~ /^\xC3\xA1 at \Q$0\E line /; -ok $die =~ /^\xC3\xA1 at \Q$0\E line /; - -undef $warn; -Devel::PPPort::warn_sv("\xE1\n"); -is $warn, "\xE1\n"; - -undef $warn; -Devel::PPPort::warn_sv(10); -ok $warn =~ /^10 at \Q$0\E line /; - -undef $warn; -Devel::PPPort::warn_sv(''); -ok $warn =~ /^ at \Q$0\E line /; - -undef $warn; -Devel::PPPort::warn_sv("\xE1"); -ok $warn =~ /^\xE1 at \Q$0\E line /; - -undef $warn; -Devel::PPPort::warn_sv("\xC3\xA1"); -ok $warn =~ /^\xC3\xA1 at \Q$0\E line /; - -is Devel::PPPort::mess_sv("\xE1\n", 0), "\xE1\n"; -is Devel::PPPort::mess_sv(do {my $tmp = "\xE1\n"}, 1), "\xE1\n"; - -ok Devel::PPPort::mess_sv(10, 0) =~ /^10 at \Q$0\E line /; -ok Devel::PPPort::mess_sv(do {my $tmp = 10}, 1) =~ /^10 at \Q$0\E line /; - -ok Devel::PPPort::mess_sv('', 0) =~ /^ at \Q$0\E line /; -ok Devel::PPPort::mess_sv(do {my $tmp = ''}, 1) =~ /^ at \Q$0\E line /; - -ok Devel::PPPort::mess_sv("\xE1", 0) =~ /^\xE1 at \Q$0\E line /; -ok Devel::PPPort::mess_sv(do {my $tmp = "\xE1"}, 1) =~ /^\xE1 at \Q$0\E line /; - -ok Devel::PPPort::mess_sv("\xC3\xA1", 0) =~ /^\xC3\xA1 at \Q$0\E line /; -ok Devel::PPPort::mess_sv(do {my $tmp = "\xC3\xA1"}, 1) =~ /^\xC3\xA1 at \Q$0\E line /; - -if ("$]" >= '5.006') { - BEGIN { if ("$]" >= '5.006' && "$]" < '5.008') { require utf8; utf8->import(); } } - - undef $die; - ok !defined eval { Devel::PPPort::croak_sv("\x{100}\n") }; - if ("$]" < '5.007001' || "$]" > '5.007003') { - is $@, "\x{100}\n"; - } else { - skip 'skip: broken utf8 support in die hook', 1; - } - if ("$]" < '5.007001' || "$]" > '5.008') { - is $die, "\x{100}\n"; - } else { - skip 'skip: broken utf8 support in die hook', 1; - } - - undef $die; - ok !defined eval { Devel::PPPort::croak_sv("\x{100}") }; - if ("$]" < '5.007001' || "$]" > '5.007003') { - ok $@ =~ /^\x{100} at \Q$0\E line /; - } else { - skip 'skip: broken utf8 support in die hook', 1; - } - if ("$]" < '5.007001' || "$]" > '5.008') { - ok $die =~ /^\x{100} at \Q$0\E line /; - } else { - skip 'skip: broken utf8 support in die hook', 1; - } - - if ("$]" < '5.007001' || "$]" > '5.008') { - undef $warn; - Devel::PPPort::warn_sv("\x{100}\n"); - is $warn, "\x{100}\n"; - - undef $warn; - Devel::PPPort::warn_sv("\x{100}"); - ok (my $tmp = $warn) =~ /^\x{100} at \Q$0\E line /; - } else { - skip 'skip: broken utf8 support in warn hook', 2; - } - - is Devel::PPPort::mess_sv("\x{100}\n", 0), "\x{100}\n"; - is Devel::PPPort::mess_sv(do {my $tmp = "\x{100}\n"}, 1), "\x{100}\n"; - - ok Devel::PPPort::mess_sv("\x{100}", 0) =~ /^\x{100} at \Q$0\E line /; - ok Devel::PPPort::mess_sv(do {my $tmp = "\x{100}"}, 1) =~ /^\x{100} at \Q$0\E line /; -} else { - skip 'skip: no utf8 support', 12; -} - -if (ord('A') != 65) { - skip 'skip: no ASCII support', 24; -} elsif ( "$]" >= '5.008' - && "$]" != '5.013000' # Broken in these ranges - && ! ("$]" >= '5.011005' && "$]" <= '5.012000')) -{ - undef $die; - ok !defined eval { Devel::PPPort::croak_sv(eval '"\N{U+E1}\n"') }; - is $@, "\xE1\n"; - is $die, "\xE1\n"; - - undef $die; - ok !defined eval { Devel::PPPort::croak_sv(eval '"\N{U+E1}"') }; - ok $@ =~ /^\xE1 at \Q$0\E line /; - ok $die =~ /^\xE1 at \Q$0\E line /; - - { - undef $die; - my $expect = eval '"\N{U+C3}\N{U+A1}\n"'; - ok !defined eval { Devel::PPPort::croak_sv("\xC3\xA1\n") }; - is $@, $expect; - is $die, $expect; - } - - { - undef $die; - my $expect = eval 'qr/^\N{U+C3}\N{U+A1} at \Q$0\E line /'; - ok !defined eval { Devel::PPPort::croak_sv("\xC3\xA1") }; - ok $@ =~ $expect; - ok $die =~ $expect; - } - - undef $warn; - Devel::PPPort::warn_sv(eval '"\N{U+E1}\n"'); - is $warn, "\xE1\n"; - - undef $warn; - Devel::PPPort::warn_sv(eval '"\N{U+E1}"'); - ok $warn =~ /^\xE1 at \Q$0\E line /; - - undef $warn; - Devel::PPPort::warn_sv("\xC3\xA1\n"); - is $warn, eval '"\N{U+C3}\N{U+A1}\n"'; - - undef $warn; - Devel::PPPort::warn_sv("\xC3\xA1"); - ok $warn =~ eval 'qr/^\N{U+C3}\N{U+A1} at \Q$0\E line /'; - - if ("$]" < '5.004') { - skip 'skip: no support for mess_sv', 8; - } - else { - is Devel::PPPort::mess_sv(eval('"\N{U+E1}\n"'), 0), eval '"\N{U+E1}\n"'; - is Devel::PPPort::mess_sv(do {my $tmp = eval '"\N{U+E1}\n"'}, 1), eval '"\N{U+E1}\n"'; - - ok Devel::PPPort::mess_sv(eval('"\N{U+E1}"'), 0) =~ eval 'qr/^\N{U+E1} at \Q$0\E line /'; - ok Devel::PPPort::mess_sv(do {my $tmp = eval '"\N{U+E1}"'}, 1) =~ eval 'qr/^\N{U+E1} at \Q$0\E line /'; - - is Devel::PPPort::mess_sv("\xC3\xA1\n", 0), eval '"\N{U+C3}\N{U+A1}\n"'; - is Devel::PPPort::mess_sv(do {my $tmp = "\xC3\xA1\n"}, 1), eval '"\N{U+C3}\N{U+A1}\n"'; - - ok Devel::PPPort::mess_sv("\xC3\xA1", 0) =~ eval 'qr/^\N{U+C3}\N{U+A1} at \Q$0\E line /'; - ok Devel::PPPort::mess_sv(do {my $tmp = "\xC3\xA1"}, 1) =~ eval 'qr/^\N{U+C3}\N{U+A1} at \Q$0\E line /'; - } -} else { - skip 'skip: no support for \N{U+..} syntax', 24; -} - -if ("$]" >= '5.007003' or ("$]" >= '5.006001' and "$]" < '5.007')) { - undef $die; - ok !defined eval { Devel::PPPort::croak_sv($scalar_ref) }; - ok $@ == $scalar_ref; - ok $die == $scalar_ref; - - undef $die; - ok !defined eval { Devel::PPPort::croak_sv($array_ref) }; - ok $@ == $array_ref; - ok $die == $array_ref; - - undef $die; - ok !defined eval { Devel::PPPort::croak_sv($hash_ref) }; - ok $@ == $hash_ref; - ok $die == $hash_ref; - - undef $die; - ok !defined eval { Devel::PPPort::croak_sv($obj) }; - ok $@ == $obj; - ok $die == $obj; -} else { - skip 'skip: no support for exceptions', 12; -} - -ok !defined eval { Devel::PPPort::croak_no_modify() }; -ok $@ =~ /^Modification of a read-only value attempted at \Q$0\E line /; - -ok !defined eval { Devel::PPPort::croak_memory_wrap() }; -ok $@ =~ /^panic: memory wrap at \Q$0\E line /; - -ok !defined eval { Devel::PPPort::croak_xs_usage("params") }; -ok $@ =~ /^Usage: Devel::PPPort::croak_xs_usage\(params\) at \Q$0\E line /; - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/misc.t perl-5.34.0/dist/Devel-PPPort/t/misc.t --- perl-5.32.1/dist/Devel-PPPort/t/misc.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/misc.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,499 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/misc instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (26826) { - load(); - plan(tests => 26826); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -use vars qw($my_sv @my_av %my_hv); - -ok(&Devel::PPPort::boolSV(1), "Verify boolSV(1) is true"); -ok(!&Devel::PPPort::boolSV(0), "Verify boolSV(0) is false"); - -$_ = "Fred"; -is(&Devel::PPPort::DEFSV(), "Fred", '$_ is FRED; Verify DEFSV is FRED'); -is(&Devel::PPPort::UNDERBAR(), "Fred", 'And verify UNDERBAR is FRED'); - -if (ivers($]) >= ivers(5.9.2) && ivers($]) < ivers(5.23)) { - eval q{ - no warnings "deprecated"; - no if $^V >= v5.17.9, warnings => "experimental::lexical_topic"; - my $_ = "Tony"; - is(&Devel::PPPort::DEFSV(), "Fred", 'lexical_topic eval: $_ is Tony; Verify DEFSV is Fred'); - is(&Devel::PPPort::UNDERBAR(), "Tony", 'And verify UNDERBAR is Tony'); - }; - die __FILE__ . __LINE__ . ": $@" if $@; -} -else { - skip("perl version outside testing range of lexical_topic", 2); -} - -my @r = &Devel::PPPort::DEFSV_modify(); - -ok(@r == 3, "Verify got 3 elements"); -is($r[0], 'Fred'); -is($r[1], 'DEFSV'); -is($r[2], 'Fred'); - -is(&Devel::PPPort::DEFSV(), "Fred"); - -eval { 1 }; -ok(!&Devel::PPPort::ERRSV(), "Verify ERRSV on true is false"); -eval { cannot_call_this_one() }; -ok(&Devel::PPPort::ERRSV(), "Verify ERRSV on false is true"); - -ok(&Devel::PPPort::gv_stashpvn('Devel::PPPort', 0)); -ok(!&Devel::PPPort::gv_stashpvn('does::not::exist', 0)); -ok(&Devel::PPPort::gv_stashpvn('does::not::exist', 1)); - -$my_sv = 1; -ok(&Devel::PPPort::get_sv('my_sv', 0)); -ok(!&Devel::PPPort::get_sv('not_my_sv', 0)); -ok(&Devel::PPPort::get_sv('not_my_sv', 1)); - -@my_av = (1); -ok(&Devel::PPPort::get_av('my_av', 0)); -ok(!&Devel::PPPort::get_av('not_my_av', 0)); -ok(&Devel::PPPort::get_av('not_my_av', 1)); - -%my_hv = (a=>1); -ok(&Devel::PPPort::get_hv('my_hv', 0)); -ok(!&Devel::PPPort::get_hv('not_my_hv', 0)); -ok(&Devel::PPPort::get_hv('not_my_hv', 1)); - -sub my_cv { 1 }; -ok(&Devel::PPPort::get_cv('my_cv', 0)); -ok(!&Devel::PPPort::get_cv('not_my_cv', 0)); -ok(&Devel::PPPort::get_cv('not_my_cv', 1)); - -is(Devel::PPPort::dXSTARG(42), 43); -is(Devel::PPPort::dAXMARK(4711), 4710); - -is(Devel::PPPort::prepush(), 42); - -is(join(':', Devel::PPPort::xsreturn(0)), 'test1'); -is(join(':', Devel::PPPort::xsreturn(1)), 'test1:test2'); - -is(Devel::PPPort::PERL_ABS(42), 42, "Verify PERL_ABS(42) is 42"); -is(Devel::PPPort::PERL_ABS(-13), 13, "Verify PERL_ABS(-13) is 13"); - -is(Devel::PPPort::SVf(42), ivers($]) >= ivers(5.4) ? '[42]' : '42'); -is(Devel::PPPort::SVf('abc'), ivers($]) >= ivers(5.4) ? '[abc]' : 'abc'); - -is(&Devel::PPPort::Perl_ppaddr_t("FOO"), "foo"); - -is(&Devel::PPPort::ptrtests(), 63); - -is(&Devel::PPPort::OpSIBLING_tests(), 0); - -if (ivers($]) >= ivers(5.9)) { - eval q{ - is(&Devel::PPPort::check_HeUTF8("hello"), "norm"); - is(&Devel::PPPort::check_HeUTF8("\N{U+263a}"), "utf8"); - }; -} else { - skip("Too early perl version", 2); -} - -@r = &Devel::PPPort::check_c_array(); -is($r[0], 4); -is($r[1], "13"); - -ok(!Devel::PPPort::SvRXOK("")); -ok(!Devel::PPPort::SvRXOK(bless [], "Regexp")); - -if (ivers($]) < ivers(5.5)) { - skip 'no qr// objects in this perl', 2; -} else { - my $qr = eval 'qr/./'; - ok(Devel::PPPort::SvRXOK($qr), "SVRXOK(qr) is true"); - ok(Devel::PPPort::SvRXOK(bless $qr, "Surprise")); -} - -ok( Devel::PPPort::NATIVE_TO_LATIN1(0xB6) == 0xB6); -ok( Devel::PPPort::NATIVE_TO_LATIN1(0x1) == 0x1); -ok( Devel::PPPort::NATIVE_TO_LATIN1(ord("A")) == 0x41); -ok( Devel::PPPort::NATIVE_TO_LATIN1(ord("0")) == 0x30); - -ok( Devel::PPPort::LATIN1_TO_NATIVE(0xB6) == 0xB6, "Verify LATIN1_TO_NATIVE(0xB6) is 0xB6"); -if (ord("A") == 65) { - ok( Devel::PPPort::LATIN1_TO_NATIVE(0x41) == 0x41); - ok( Devel::PPPort::LATIN1_TO_NATIVE(0x30) == 0x30); -} -else { - ok( Devel::PPPort::LATIN1_TO_NATIVE(0x41) == 0xC1); - ok( Devel::PPPort::LATIN1_TO_NATIVE(0x30) == 0xF0); -} - -ok( Devel::PPPort::isALNUMC_L1(ord("5"))); -ok( Devel::PPPort::isALNUMC_L1(0xFC)); -ok(! Devel::PPPort::isALNUMC_L1(0xB6)); - -ok( Devel::PPPort::isOCTAL(ord("7")), "Verify '7' is OCTAL"); -ok(! Devel::PPPort::isOCTAL(ord("8")), "Verify '8' isn't OCTAL"); - -ok( Devel::PPPort::isOCTAL_A(ord("0")), "Verify '0' is OCTAL_A"); -ok(! Devel::PPPort::isOCTAL_A(ord("9")), "Verify '9' isn't OCTAL_A"); - -ok( Devel::PPPort::isOCTAL_L1(ord("2")), "Verify '2' is OCTAL_L1"); -ok(! Devel::PPPort::isOCTAL_L1(ord("8")), "Verify '8' isn't OCTAL_L1"); - -my $way_too_early_msg = 'UTF-8 not implemented on this perl'; - -# For the other properties, we test every code point from 0.255, and a -# smattering of higher ones. First populate a hash with keys like '65:ALPHA' -# to indicate that the code point there is alphabetic -my $i; -my %types; -for $i (0x41..0x5A, 0x61..0x7A, 0xAA, 0xB5, 0xBA, 0xC0..0xD6, 0xD8..0xF6, - 0xF8..0x101) -{ - my $native = Devel::PPPort::LATIN1_TO_NATIVE($i); - $types{"$native:ALPHA"} = 1; - $types{"$native:ALPHANUMERIC"} = 1; - $types{"$native:IDFIRST"} = 1; - $types{"$native:IDCONT"} = 1; - $types{"$native:PRINT"} = 1; - $types{"$native:WORDCHAR"} = 1; -} -for $i (0x30..0x39, 0x660, 0xFF19) { - my $native = Devel::PPPort::LATIN1_TO_NATIVE($i); - $types{"$native:ALPHANUMERIC"} = 1; - $types{"$native:DIGIT"} = 1; - $types{"$native:IDCONT"} = 1; - $types{"$native:WORDCHAR"} = 1; - $types{"$native:GRAPH"} = 1; - $types{"$native:PRINT"} = 1; - $types{"$native:XDIGIT"} = 1 if $i < 255 || ($i >= 0xFF10 && $i <= 0xFF19); -} - -for $i (0..0x7F) { - my $native = Devel::PPPort::LATIN1_TO_NATIVE($i); - $types{"$native:ASCII"} = 1; -} -for $i (0..0x1f, 0x7F..0x9F) { - my $native = Devel::PPPort::LATIN1_TO_NATIVE($i); - $types{"$native:CNTRL"} = 1; -} -for $i (0x21..0x7E, 0xA1..0x101, 0x660) { - my $native = Devel::PPPort::LATIN1_TO_NATIVE($i); - $types{"$native:GRAPH"} = 1; - $types{"$native:PRINT"} = 1; -} -for $i (0x09, 0x20, 0xA0) { - my $native = Devel::PPPort::LATIN1_TO_NATIVE($i); - $types{"$native:BLANK"} = 1; - $types{"$native:SPACE"} = 1; - $types{"$native:PSXSPC"} = 1; - $types{"$native:PRINT"} = 1 if $i > 0x09; -} -for $i (0x09..0x0D, 0x85, 0x2029) { - my $native = Devel::PPPort::LATIN1_TO_NATIVE($i); - $types{"$native:SPACE"} = 1; - $types{"$native:PSXSPC"} = 1; -} -for $i (0x41..0x5A, 0xC0..0xD6, 0xD8..0xDE, 0x100) { - my $native = Devel::PPPort::LATIN1_TO_NATIVE($i); - $types{"$native:UPPER"} = 1; - $types{"$native:XDIGIT"} = 1 if $i < 0x47; -} -for $i (0x61..0x7A, 0xAA, 0xB5, 0xBA, 0xDF..0xF6, 0xF8..0xFF, 0x101) { - my $native = Devel::PPPort::LATIN1_TO_NATIVE($i); - $types{"$native:LOWER"} = 1; - $types{"$native:XDIGIT"} = 1 if $i < 0x67; -} -for $i (0x21..0x2F, 0x3A..0x40, 0x5B..0x60, 0x7B..0x7E, 0xB6, 0xA1, 0xA7, 0xAB, - 0xB7, 0xBB, 0xBF, 0x5BE) -{ - my $native = Devel::PPPort::LATIN1_TO_NATIVE($i); - $types{"$native:PUNCT"} = 1; - $types{"$native:GRAPH"} = 1; - $types{"$native:PRINT"} = 1; -} - -$i = ord('_'); -$types{"$i:WORDCHAR"} = 1; -$types{"$i:IDFIRST"} = 1; -$types{"$i:IDCONT"} = 1; - -# Now find all the unique code points included above. -my %code_points_to_test; -my $key; -for $key (keys %types) { - $key =~ s/:.*//; - $code_points_to_test{$key} = 1; -} - -# And test each one -for $i (sort { $a <=> $b } keys %code_points_to_test) { - my $native = Devel::PPPort::LATIN1_TO_NATIVE($i); - my $hex = sprintf("0x%02X", $native); - - # And for each code point test each of the classes - my $class; - for $class (qw(ALPHA ALPHANUMERIC ASCII BLANK CNTRL DIGIT GRAPH IDCONT - IDFIRST LOWER PRINT PSXSPC PUNCT SPACE UPPER WORDCHAR - XDIGIT)) - { - if ($i < 256) { # For the ones that can fit in a byte, test each of - # three macros. - my $suffix; - for $suffix ("", "_A", "_L1", "_uvchr") { - my $should_be = ($i > 0x7F && $suffix !~ /_(uvchr|L1)/) - ? 0 # Fail on non-ASCII unless unicode - : ($types{"$native:$class"} || 0); - if (ivers($]) < ivers(5.6) && $suffix eq '_uvchr') { - skip("No UTF-8 on this perl", 1); - next; - } - - my $eval_string = "Devel::PPPort::is${class}$suffix($hex)"; - local $SIG{__WARN__} = sub {}; - my $is = eval $eval_string || 0; - die "eval 'For $i: $eval_string' gave $@" if $@; - is($is, $should_be, "'$eval_string'"); - } - } - - # For all code points, test the '_utf8' macros - my $sub_fcn; - for $sub_fcn ("", "_LC") { - my $skip = ""; - if (ivers($]) < ivers(5.6)) { - $skip = $way_too_early_msg; - } - elsif (ivers($]) < ivers(5.7) && $native > 255) { - $skip = "Perls earlier than 5.7 give wrong answers for above Latin1 code points"; - } - elsif (ivers($]) <= ivers(5.11.3) && $native == 0x2029 && ($class eq 'PRINT' || $class eq 'GRAPH')) { - $skip = "Perls earlier than 5.11.3 considered high space characters as isPRINT and isGRAPH"; - } - elsif ($sub_fcn eq '_LC' && $i < 256) { - $skip = "Testing of code points whose results depend on locale is skipped "; - } - my $fcn = "Devel::PPPort::is${class}${sub_fcn}_utf8_safe"; - my $utf8; - - if ($skip) { - skip $skip, 1; - } - else { - $utf8 = quotemeta Devel::PPPort::uvchr_to_utf8($native); - my $should_be = $types{"$native:$class"} || 0; - my $eval_string = "$fcn(\"$utf8\", 0)"; - local $SIG{__WARN__} = sub {}; - my $is = eval $eval_string || 0; - die "eval 'For $i, $eval_string' gave $@" if $@; - is($is, $should_be, sprintf("For U+%04X '%s'", $native, $eval_string)); - } - - # And for the high code points, test that a too short malformation (the - # -1) causes it to fail - if ($i > 255) { - if ($skip) { - skip $skip, 1; - } - elsif (ivers($]) >= ivers(5.25.9)) { - skip("Prints an annoying error message that khw doesn't know how to easily suppress", 1); - } - else { - my $eval_string = "$fcn(\"$utf8\", -1)"; - local $SIG{__WARN__} = sub {}; - my $is = eval "$eval_string" || 0; - die "eval '$eval_string' gave $@" if $@; - is($is, 0, sprintf("For U+%04X '%s'", $native, $eval_string)); - } - } - } - } -} - -my %case_changing = ( 'LOWER' => [ [ ord('A'), ord('a') ], - [ Devel::PPPort::LATIN1_TO_NATIVE(0xC0), - Devel::PPPort::LATIN1_TO_NATIVE(0xE0) ], - [ 0x100, 0x101 ], - ], - 'FOLD' => [ [ ord('C'), ord('c') ], - [ Devel::PPPort::LATIN1_TO_NATIVE(0xC0), - Devel::PPPort::LATIN1_TO_NATIVE(0xE0) ], - [ 0x104, 0x105 ], - [ Devel::PPPort::LATIN1_TO_NATIVE(0xDF), - 'ss' ], - ], - 'UPPER' => [ [ ord('a'), ord('A'), ], - [ Devel::PPPort::LATIN1_TO_NATIVE(0xE0), - Devel::PPPort::LATIN1_TO_NATIVE(0xC0) ], - [ 0x101, 0x100 ], - [ Devel::PPPort::LATIN1_TO_NATIVE(0xDF), - 'SS' ], - ], - 'TITLE' => [ [ ord('c'), ord('C'), ], - [ Devel::PPPort::LATIN1_TO_NATIVE(0xE2), - Devel::PPPort::LATIN1_TO_NATIVE(0xC2) ], - [ 0x103, 0x102 ], - [ Devel::PPPort::LATIN1_TO_NATIVE(0xDF), - 'Ss' ], - ], - ); - -my $name; -for $name (keys %case_changing) { - my @code_points_to_test = @{$case_changing{$name}}; - my $unchanged; - for $unchanged (@code_points_to_test) { - my @pair = @$unchanged; - my $original = $pair[0]; - my $changed = $pair[1]; - my $utf8_changed = $changed; - my $is_cp = $utf8_changed =~ /^\d+$/; - my $should_be_bytes; - if (ivers($]) >= ivers(5.6)) { - if ($is_cp) { - $utf8_changed = Devel::PPPort::uvchr_to_utf8($changed); - $should_be_bytes = Devel::PPPort::UTF8_SAFE_SKIP($utf8_changed, 0); - } - else { - die("Test currently doesn't work for non-ASCII multi-char case changes") if eval '$utf8_changed =~ /[[:^ascii:]]/'; - $should_be_bytes = length $utf8_changed; - } - } - - my $fcn = "to${name}_uvchr"; - my $skip = ""; - - if (ivers($]) < ivers(5.6)) { - $skip = $way_too_early_msg; - } - elsif (! $is_cp) { - $skip = "Can't do uvchr on a multi-char string"; - } - if ($skip) { - skip $skip, 4; - } - else { - if ($is_cp) { - $utf8_changed = Devel::PPPort::uvchr_to_utf8($changed); - $should_be_bytes = Devel::PPPort::UTF8_SAFE_SKIP($utf8_changed, 0); - } - else { - my $non_ascii_re = (ivers($]) >= ivers(5.6)) ? '[[:^ascii:]]' : '[^\x00-\x7F]'; - die("Test currently doesn't work for non-ASCII multi-char case changes") if eval '$utf8_changed =~ /$non_ascii_re/'; - $should_be_bytes = length $utf8_changed; - } - - my $ret = eval "Devel::PPPort::$fcn($original)"; - my $fail = $@; # Have to save $@, as it gets destroyed - is ($fail, "", "$fcn($original) didn't fail"); - my $first = (ivers($]) != ivers(5.6)) - ? substr($utf8_changed, 0, 1) - : $utf8_changed, 0, 1; - is($ret->[0], ord $first, - "ord of $fcn($original) is $changed"); - is($ret->[1], $utf8_changed, - "UTF-8 of of $fcn($original) is correct"); - is($ret->[2], $should_be_bytes, - "Length of $fcn($original) is $should_be_bytes"); - } - - my $truncate; - for $truncate (0..2) { - my $skip; - if (ivers($]) < ivers(5.6)) { - $skip = $way_too_early_msg; - } - elsif (! $is_cp && ivers($]) < ivers(5.7.3)) { - $skip = "Multi-character case change not implemented until 5.7.3"; - } - elsif ($truncate == 2 && ivers($]) > ivers(5.25.8)) { - $skip = "Zero length inputs cause assertion failure; test dies in modern perls"; - } - elsif ($truncate > 0 && length $changed > 1) { - $skip = "Don't test shortened multi-char case changes"; - } - elsif ($truncate > 0 && Devel::PPPort::UVCHR_IS_INVARIANT($original)) { - $skip = "Don't try to test shortened single bytes"; - } - if ($skip) { - skip $skip, 4; - } - else { - my $fcn = "to${name}_utf8_safe"; - my $utf8 = quotemeta Devel::PPPort::uvchr_to_utf8($original); - my $real_truncate = ($truncate < 2) - ? $truncate : $should_be_bytes; - my $eval_string = "Devel::PPPort::$fcn(\"$utf8\", $real_truncate)"; - my $ret = eval "no warnings; $eval_string" || 0; - my $fail = $@; # Have to save $@, as it gets destroyed - if ($truncate == 0) { - is ($fail, "", "Didn't fail on full length input"); - my $first = (ivers($]) != ivers(5.6)) - ? substr($utf8_changed, 0, 1) - : $utf8_changed, 0, 1; - is($ret->[0], ord $first, - "ord of $fcn($original) is $changed"); - is($ret->[1], $utf8_changed, - "UTF-8 of of $fcn($original) is correct"); - is($ret->[2], $should_be_bytes, - "Length of $fcn($original) is $should_be_bytes"); - } - else { - is ($fail, eval 'qr/Malformed UTF-8 character/', - "Gave appropriate error for short char: $original"); - skip("Expected failure means remaining tests for" - . " this aren't relevant", 3); - } - } - } - } -} - -is(&Devel::PPPort::av_top_index([1,2,3]), 2); -is(&Devel::PPPort::av_tindex([1,2,3,4]), 3); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/mPUSH.t perl-5.34.0/dist/Devel-PPPort/t/mPUSH.t --- perl-5.32.1/dist/Devel-PPPort/t/mPUSH.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/mPUSH.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/mPUSH instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (10) { - load(); - plan(tests => 10); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -is(join(':', &Devel::PPPort::mPUSHs()), "foo:bar:42"); -is(join(':', &Devel::PPPort::mPUSHp()), "one:two:three"); -is(join(':', &Devel::PPPort::mPUSHn()), "0.5:-0.25:0.125"); -is(join(':', &Devel::PPPort::mPUSHi()), "-1:2:-3"); -is(join(':', &Devel::PPPort::mPUSHu()), "1:2:3"); - -is(join(':', &Devel::PPPort::mXPUSHs()), "foo:bar:42"); -is(join(':', &Devel::PPPort::mXPUSHp()), "one:two:three"); -is(join(':', &Devel::PPPort::mXPUSHn()), "0.5:-0.25:0.125"); -is(join(':', &Devel::PPPort::mXPUSHi()), "-1:2:-3"); -is(join(':', &Devel::PPPort::mXPUSHu()), "1:2:3"); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/MY_CXT.t perl-5.34.0/dist/Devel-PPPort/t/MY_CXT.t --- perl-5.32.1/dist/Devel-PPPort/t/MY_CXT.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/MY_CXT.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/MY_CXT instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (3) { - load(); - plan(tests => 3); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -ok(&Devel::PPPort::MY_CXT_1()); -ok(&Devel::PPPort::MY_CXT_2()); -ok(&Devel::PPPort::MY_CXT_CLONE()); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/newCONSTSUB.t perl-5.34.0/dist/Devel-PPPort/t/newCONSTSUB.t --- perl-5.32.1/dist/Devel-PPPort/t/newCONSTSUB.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/newCONSTSUB.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/newCONSTSUB instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (3) { - load(); - plan(tests => 3); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -&Devel::PPPort::call_newCONSTSUB_1(); -is(&Devel::PPPort::test_value_1(), 1); - -&Devel::PPPort::call_newCONSTSUB_2(); -is(&Devel::PPPort::test_value_2(), 2); - -&Devel::PPPort::call_newCONSTSUB_3(); -is(&Devel::PPPort::test_value_3(), 3); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/newRV.t perl-5.34.0/dist/Devel-PPPort/t/newRV.t --- perl-5.32.1/dist/Devel-PPPort/t/newRV.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/newRV.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/newRV instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (2) { - load(); - plan(tests => 2); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -is(&Devel::PPPort::newRV_inc_REFCNT, 1); -is(&Devel::PPPort::newRV_noinc_REFCNT, 1); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/newSVpv.t perl-5.34.0/dist/Devel-PPPort/t/newSVpv.t --- perl-5.32.1/dist/Devel-PPPort/t/newSVpv.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/newSVpv.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/newSVpv instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (15) { - load(); - plan(tests => 15); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -my @s = &Devel::PPPort::newSVpvn(); -ok(@s == 5); -is($s[0], "test"); -is($s[1], "te"); -is($s[2], ""); -ok(!defined($s[3])); -ok(!defined($s[4])); - -@s = &Devel::PPPort::newSVpvn_flags(); -ok(@s == 5); -is($s[0], "test"); -is($s[1], "te"); -is($s[2], ""); -ok(!defined($s[3])); -ok(!defined($s[4])); - -@s = &Devel::PPPort::newSVpvn_utf8(); -ok(@s == 1); -is($s[0], "test"); - -if ("$]" >= 5.008001) { - require utf8; - ok(utf8::is_utf8($s[0])); -} -else { - skip("skip: no is_utf8()", 1); -} - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/newSV_type.t perl-5.34.0/dist/Devel-PPPort/t/newSV_type.t --- perl-5.32.1/dist/Devel-PPPort/t/newSV_type.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/newSV_type.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/newSV_type instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (1) { - load(); - plan(tests => 1); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -is(Devel::PPPort::newSV_type(), 4); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/podtest.t perl-5.34.0/dist/Devel-PPPort/t/podtest.t --- perl-5.32.1/dist/Devel-PPPort/t/podtest.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/podtest.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,87 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/podtest instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (0) { - load(); - plan(tests => 0); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -my @pods = qw( HACKERS PPPort.pm ppport.h soak devel/regenerate devel/buildperl.pl ); - -my $reason = ''; - -if ($ENV{'SKIP_SLOW_TESTS'}) { - $reason = 'SKIP_SLOW_TESTS'; -} -else { - # Try loading Test::Pod - eval q{ - use Test::Pod; - $Test::Pod::VERSION >= 1.41 - or die "Test::Pod version only $Test::Pod::VERSION"; - import Test::Pod tests => scalar @pods; - }; - $reason = 'Test::Pod >= 1.41 required' if $@; -} - -if ($reason) { - load(); - plan(tests => scalar @pods); -} - -for (@pods) { - print "# checking $_\n"; - if ($reason) { - skip("skip: $reason", 1); - } - else { - pod_file_ok($_); - } -} - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/ppphtest.t perl-5.34.0/dist/Devel-PPPort/t/ppphtest.t --- perl-5.32.1/dist/Devel-PPPort/t/ppphtest.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/ppphtest.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,942 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/ppphtest instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (238) { - load(); - plan(tests => 238); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -BEGIN { - if ($ENV{'SKIP_SLOW_TESTS'}) { - skip("skip: SKIP_SLOW_TESTS", 238); - exit 0; - } -} - -use File::Path qw/rmtree mkpath/; -use Config; - -my $tmp = 'ppptmp'; -my $inc = ''; -my $isVMS = $^O eq 'VMS'; -my $isMAC = $^O eq 'MacOS'; -my $perl = find_perl(); - -rmtree($tmp) if -d $tmp; -mkpath($tmp) or die "mkpath $tmp: $!\n"; -chdir($tmp) or die "chdir $tmp: $!\n"; - -if ($ENV{'PERL_CORE'}) { - if (-d '../../lib') { - if ($isVMS) { - $inc = '"-I../../lib"'; - } - elsif ($isMAC) { - $inc = '-I:::lib'; - } - else { - $inc = '-I../../lib'; - } - unshift @INC, '../../lib'; - } -} -if ($perl =~ m!^\./!) { - $perl = ".$perl"; -} - -END { - chdir('..') if !-d $tmp && -d "../$tmp"; - rmtree($tmp) if -d $tmp; -} - -ok(&Devel::PPPort::WriteFile("ppport.h")); - -# Check GetFileContents() -is(-e "ppport.h", 1); - -my $data; - -open(F, ") { - $data .= $_; -} -close(F); - -is(Devel::PPPort::GetFileContents("ppport.h"), $data); -is(Devel::PPPort::GetFileContents(), $data); - -sub comment -{ - my $c = shift; - my $x = 0; - $c =~ s/^/sprintf("# %2d| ", ++$x)/meg; - $c .= "\n" unless $c =~ /[\r\n]$/; - print $c; -} - -sub ppport -{ - my @args = ('ppport.h', @_); - unshift @args, $inc if $inc; - my $run = $perl =~ m/\s/ ? qq("$perl") : $perl; - $run .= ' -MMac::err=unix' if $isMAC; - for (@args) { - $_ = qq("$_") if $isVMS && /^[^"]/; - $run .= " $_"; - } - print "# *** running $run ***\n"; - $run .= ' 2>&1' unless $isMAC; - my @out = `$run`; - my $out = join '', @out; - comment($out); - return wantarray ? @out : $out; -} - -sub matches -{ - my($str, $re, $mod) = @_; - my @n; - eval "\@n = \$str =~ /$re/g$mod;"; - if ($@) { - my $err = $@; - $err =~ s/^/# *** /mg; - print "# *** ERROR ***\n$err\n"; - } - return $@ ? -42 : scalar @n; -} - -sub eq_files -{ - my($f1, $f2) = @_; - return 0 unless -e $f1 && -e $f2; - local *F; - for ($f1, $f2) { - print "# File: $_\n"; - unless (open F, $_) { - print "# couldn't open $_: $!\n"; - return 0; - } - $_ = do { local $/; }; - close F; - comment($_); - } - return $f1 eq $f2; -} - -my @tests; - -for (split /\s*={70,}\s*/, do { local $/; }) { - s/^\s+//; s/\s+$//; - my($c, %f); - ($c, @f{m/-{20,}\s+(\S+)\s+-{20,}/g}) = split /\s*-{20,}\s+\S+\s+-{20,}\s*/; - push @tests, { code => $c, files => \%f }; -} - -my $t; -for $t (@tests) { - print "#\n", ('# ', '-'x70, "\n")x3, "#\n"; - my $f; - for $f (keys %{$t->{files}}) { - my @f = split /\//, $f; - if (@f > 1) { - pop @f; - my $path = join '/', @f; - mkpath($path) or die "mkpath('$path'): $!\n"; - } - my $txt = $t->{files}{$f}; - local *F; - open F, ">$f" or die "open $f: $!\n"; - print F "$txt\n"; - close F; - print "# *** writing $f ***\n"; - comment($txt); - } - - print "# *** evaluating test code ***\n"; - comment($t->{code}); - - eval $t->{code}; - if ($@) { - my $err = $@; - $err =~ s/^/# *** /mg; - print "# *** ERROR ***\n$err\n"; - } - is($@, ''); - - for (keys %{$t->{files}}) { - unlink $_ or die "unlink('$_'): $!\n"; - } -} - -sub find_perl -{ - my $perl = $^X; - - return $perl if $isVMS; - - my $exe = $Config{'_exe'} || ''; - - if ($perl =~ /^perl\Q$exe\E$/i) { - $perl = "perl$exe"; - eval "require File::Spec"; - if ($@) { - $perl = "./$perl"; - } else { - $perl = File::Spec->catfile(File::Spec->curdir(), $perl); - } - } - - if ($perl !~ /\Q$exe\E$/i) { - $perl .= $exe; - } - - warn "find_perl: cannot find $perl from $^X" unless -f $perl; - - return $perl; -} - -__DATA__ - -my $o = ppport(qw(--help)); -ok($o =~ /^Usage:.*ppport\.h/m); -ok($o =~ /--help/m); - -$o = ppport(qw(--version)); -ok($o =~ /^This is.*ppport.*\d+\.\d+(?:_?\d+)?\.$/); - -$o = ppport(qw(--nochanges)); -ok($o =~ /^Scanning.*test\.xs/mi); -ok($o =~ /Analyzing.*test\.xs/mi); -is(matches($o, '^Scanning', 'm'), 1); -is(matches($o, 'Analyzing', 'm'), 1); -ok($o =~ /Uses Perl_newSViv instead of newSViv/); - -$o = ppport(qw(--quiet --nochanges)); -ok($o =~ /^\s*$/); - ----------------------------- test.xs ------------------------------------------ - -Perl_newSViv(); - -=============================================================================== - -# check if C and C++ comments are filtered correctly - -my $o = ppport(qw(--copy=a)); -ok($o =~ /^Scanning.*MyExt\.xs/mi); -ok($o =~ /Analyzing.*MyExt\.xs/mi); -is(matches($o, '^Scanning', 'm'), 1); -ok($o =~ /^Needs to include.*ppport\.h/m); -ok($o !~ /^Uses grok_bin/m); -ok($o !~ /^Uses newSVpv/m); -ok($o =~ /Uses 1 C\+\+ style comment/m); -ok(eq_files('MyExt.xsa', 'MyExt.ra')); - -# check if C++ are left untouched with --cplusplus - -$o = ppport(qw(--copy=b --cplusplus)); -ok($o =~ /^Scanning.*MyExt\.xs/mi); -ok($o =~ /Analyzing.*MyExt\.xs/mi); -is(matches($o, '^Scanning', 'm'), 1); -ok($o =~ /^Needs to include.*ppport\.h/m); -ok($o !~ /^Uses grok_bin/m); -ok($o !~ /^Uses newSVpv/m); -ok($o !~ /Uses \d+ C\+\+ style comment/m); -ok(eq_files('MyExt.xsb', 'MyExt.rb')); - -unlink qw(MyExt.xsa MyExt.xsb); - ----------------------------- MyExt.xs ----------------------------------------- - -newSVuv(); - // newSVpv(); - XPUSHs(foo); -/* grok_bin(); */ - ----------------------------- MyExt.ra ----------------------------------------- - -#include "ppport.h" -newSVuv(); - /* newSVpv(); */ - XPUSHs(foo); -/* grok_bin(); */ - ----------------------------- MyExt.rb ----------------------------------------- - -#include "ppport.h" -newSVuv(); - // newSVpv(); - XPUSHs(foo); -/* grok_bin(); */ - -=============================================================================== - -my $o = ppport(qw(--nochanges file1.xs)); -ok($o =~ /^Scanning.*file1\.xs/mi); -ok($o =~ /Analyzing.*file1\.xs/mi); -ok($o !~ /^Scanning.*file2\.xs/mi); -ok($o =~ /^Uses newCONSTSUB/m); -ok($o =~ /^Uses PL_expect/m); -ok($o =~ /^Uses SvPV_nolen.*depends.*sv_2pv_flags/m); -ok($o =~ /WARNING: PL_expect/m); -ok($o =~ /hint for newCONSTSUB/m); -ok($o =~ /^Analysis completed \(1 warning\)/m); -ok($o =~ /^Looks good/m); - -$o = ppport(qw(--nochanges --nohints file1.xs)); -ok($o =~ /^Scanning.*file1\.xs/mi); -ok($o =~ /Analyzing.*file1\.xs/mi); -ok($o !~ /^Scanning.*file2\.xs/mi); -ok($o =~ /^Uses newCONSTSUB/m); -ok($o =~ /^Uses PL_expect/m); -ok($o =~ /^Uses SvPV_nolen.*depends.*sv_2pv_flags/m); -ok($o =~ /WARNING: PL_expect/m); -ok($o !~ /hint for newCONSTSUB/m); -ok($o =~ /^Analysis completed \(1 warning\)/m); -ok($o =~ /^Looks good/m); - -$o = ppport(qw(--nochanges --nohints --nodiag file1.xs)); -ok($o =~ /^Scanning.*file1\.xs/mi); -ok($o =~ /Analyzing.*file1\.xs/mi); -ok($o !~ /^Scanning.*file2\.xs/mi); -ok($o !~ /^Uses newCONSTSUB/m); -ok($o !~ /^Uses PL_expect/m); -ok($o !~ /^Uses SvPV_nolen/m); -ok($o =~ /WARNING: PL_expect/m); -ok($o !~ /hint for newCONSTSUB/m); -ok($o =~ /^Analysis completed \(1 warning\)/m); -ok($o =~ /^Looks good/m); - -$o = ppport(qw(--nochanges --quiet file1.xs)); -ok($o =~ /^\s*$/); - -$o = ppport(qw(--nochanges file2.xs)); -ok($o =~ /^Scanning.*file2\.xs/mi); -ok($o =~ /Analyzing.*file2\.xs/mi); -ok($o !~ /^Scanning.*file1\.xs/mi); -ok($o =~ /^Uses mXPUSHp/m); -ok($o =~ /^Needs to include.*ppport\.h/m); -ok($o !~ /^Looks good/m); -ok($o =~ /^1 potentially required change detected/m); - -$o = ppport(qw(--nochanges --nohints file2.xs)); -ok($o =~ /^Scanning.*file2\.xs/mi); -ok($o =~ /Analyzing.*file2\.xs/mi); -ok($o !~ /^Scanning.*file1\.xs/mi); -ok($o =~ /^Uses mXPUSHp/m); -ok($o =~ /^Needs to include.*ppport\.h/m); -ok($o !~ /^Looks good/m); -ok($o =~ /^1 potentially required change detected/m); - -$o = ppport(qw(--nochanges --nohints --nodiag file2.xs)); -ok($o =~ /^Scanning.*file2\.xs/mi); -ok($o =~ /Analyzing.*file2\.xs/mi); -ok($o !~ /^Scanning.*file1\.xs/mi); -ok($o !~ /^Uses mXPUSHp/m); -ok($o !~ /^Needs to include.*ppport\.h/m); -ok($o !~ /^Looks good/m); -ok($o =~ /^1 potentially required change detected/m); - -$o = ppport(qw(--nochanges --quiet file2.xs)); -ok($o =~ /^\s*$/); - ----------------------------- file1.xs ----------------------------------------- - -#define NEED_newCONSTSUB -#define NEED_PL_parser -#include "ppport.h" - -newCONSTSUB(); -SvPV_nolen(); -PL_expect = 0; - ----------------------------- file2.xs ----------------------------------------- - -mXPUSHp(foo); - -=============================================================================== - -my $o = ppport(qw(--nochanges)); -ok($o =~ /^Scanning.*FooBar\.xs/mi); -ok($o =~ /Analyzing.*FooBar\.xs/mi); -is(matches($o, '^Scanning', 'm'), 1); -ok($o !~ /^Looks good/m); -ok($o =~ /^Uses grok_bin/m); - ----------------------------- FooBar.xs ---------------------------------------- - -newSViv(); -XPUSHs(foo); -grok_bin(); - -=============================================================================== - -my $o = ppport(qw(--nochanges)); -ok($o =~ /^Scanning.*First\.xs/mi); -ok($o =~ /Analyzing.*First\.xs/mi); -ok($o =~ /^Scanning.*second\.h/mi); -ok($o =~ /Analyzing.*second\.h/mi); -ok($o =~ /^Scanning.*sub.*third\.c/mi); -ok($o =~ /Analyzing.*sub.*third\.c/mi); -ok($o !~ /^Scanning.*foobar/mi); -is(matches($o, '^Scanning', 'm'), 3); - ----------------------------- First.xs ----------------------------------------- - -one - ----------------------------- foobar.xyz --------------------------------------- - -two - ----------------------------- second.h ----------------------------------------- - -three - ----------------------------- sub/third.c -------------------------------------- - -four - -=============================================================================== - -my $o = ppport(qw(--nochanges)); -ok($o =~ /Possibly wrong #define NEED_foobar in.*test.xs/i); - ----------------------------- test.xs ------------------------------------------ - -#define NEED_foobar - -=============================================================================== - -# And now some complex "real-world" example - -my $o = ppport(qw(--copy=f)); -for (qw(main.xs mod1.c mod2.c mod3.c mod4.c mod5.c)) { - ok($o =~ /^Scanning.*\Q$_\E/mi); - ok($o =~ /Analyzing.*\Q$_\E/i); -} -is(matches($o, '^Scanning', 'm'), 6); - -is(matches($o, '^Writing copy of', 'm'), 5); -ok(!-e "mod5.cf"); - -for (qw(main.xs mod1.c mod2.c mod3.c mod4.c)) { - ok($o =~ /^Writing copy of.*\Q$_\E.*with changes/mi); - ok(-e "${_}f"); - ok(eq_files("${_}f", "${_}r")); - unlink "${_}f"; -} - ----------------------------- main.xs ------------------------------------------ - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -#define NEED_newCONSTSUB -#define NEED_grok_hex_GLOBAL -#include "ppport.h" - -newCONSTSUB(); -grok_hex(); -Perl_grok_bin(aTHX_ foo, bar); - -/* some comment */ - -perl_eval_pv(); -grok_bin(); -Perl_grok_bin(bar, sv_no); - ----------------------------- mod1.c ------------------------------------------- - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -#define NEED_grok_bin_GLOBAL -#define NEED_newCONSTSUB -#include "ppport.h" - -newCONSTSUB(); -grok_bin(); -{ - Perl_croak ("foo"); - Perl_sv_catpvf(); /* I know it's wrong ;-) */ -} - ----------------------------- mod2.c ------------------------------------------- - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -#define NEED_eval_pv -#include "ppport.h" - -newSViv(); - -/* - eval_pv(); -*/ - ----------------------------- mod3.c ------------------------------------------- - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -grok_oct(); -eval_pv(); - ----------------------------- mod4.c ------------------------------------------- - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -START_MY_CXT; - ----------------------------- mod5.c ------------------------------------------- - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -#include "ppport.h" -call_pv(); - ----------------------------- main.xsr ----------------------------------------- - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -#define NEED_eval_pv_GLOBAL -#define NEED_grok_hex -#define NEED_newCONSTSUB_GLOBAL -#include "ppport.h" - -newCONSTSUB(); -grok_hex(); -grok_bin(foo, bar); - -/* some comment */ - -eval_pv(); -grok_bin(); -grok_bin(bar, PL_sv_no); - ----------------------------- mod1.cr ------------------------------------------ - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -#define NEED_grok_bin_GLOBAL -#include "ppport.h" - -newCONSTSUB(); -grok_bin(); -{ - Perl_croak (aTHX_ "foo"); - Perl_sv_catpvf(aTHX); /* I know it's wrong ;-) */ -} - ----------------------------- mod2.cr ------------------------------------------ - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - - -newSViv(); - -/* - eval_pv(); -*/ - ----------------------------- mod3.cr ------------------------------------------ - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" -#define NEED_grok_oct -#include "ppport.h" - -grok_oct(); -eval_pv(); - ----------------------------- mod4.cr ------------------------------------------ - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" -#include "ppport.h" - -START_MY_CXT; - -=============================================================================== - -my $o = ppport(qw(--nochanges)); -ok($o =~ /Uses grok_hex/m); -ok($o !~ /Looks good/m); - -$o = ppport(qw(--nochanges --compat-version=5.8.0)); -ok($o !~ /Uses grok_hex/m); -ok($o =~ /Looks good/m); - ----------------------------- FooBar.xs ---------------------------------------- - -grok_hex(); - -=============================================================================== - -my $o = ppport(qw(--nochanges)); -ok($o =~ /Uses SvPVutf8_force, which may not be portable/m); - -$o = ppport(qw(--nochanges --compat-version=5.5.3)); -ok($o =~ /Uses SvPVutf8_force, which may not be portable/m); - -$o = ppport(qw(--nochanges --compat-version=5.005_03)); -ok($o =~ /Uses SvPVutf8_force, which may not be portable/m); - -$o = ppport(qw(--nochanges --compat-version=5.6.0)); -ok($o !~ /Uses SvPVutf8_force/m); - -$o = ppport(qw(--nochanges --compat-version=5.006)); -ok($o !~ /Uses SvPVutf8_force/m); - -$o = ppport(qw(--nochanges --compat-version=5.999.999)); -ok($o !~ /Uses SvPVutf8_force/m); - -$o = ppport(qw(--nochanges --compat-version=6.0.0)); -ok($o =~ /Only Perl 5 is supported/m); - -$o = ppport(qw(--nochanges --compat-version=5.1000.999)); -ok($o =~ /Invalid version number: 5.1000.999/m); - -$o = ppport(qw(--nochanges --compat-version=5.999.1000)); -ok($o =~ /Invalid version number: 5.999.1000/m); - ----------------------------- FooBar.xs ---------------------------------------- - -SvPVutf8_force(); - -=============================================================================== - -my $o = ppport(qw(--nochanges)); -ok($o !~ /potentially required change/); -is(matches($o, '^Looks good', 'm'), 2); - ----------------------------- FooBar.xs ---------------------------------------- - -#define NEED_grok_numeric_radix -#define NEED_grok_number -#include "ppport.h" - -GROK_NUMERIC_RADIX(); -grok_number(); - ----------------------------- foo.c -------------------------------------------- - -#include "ppport.h" - -call_pv(); - -=============================================================================== - -# check --api-info option - -my $o = ppport(qw(--api-info=INT2PTR)); -my %found = map {($_ => 1)} $o =~ /^===\s+(\w+)\s+===/mg; -is(scalar keys %found, 1, "found 1 key"); -ok(exists $found{INT2PTR}); -is(matches($o, '^Supported at least since perl-5\.6\.0', 'm'), 1, "INT2PTR supported without ppport.h to 5.6.0"); -is(matches($o, '^ppport.h additionally provides support at least back to perl-5\.003', 'm'), 1, "INT2PTR supported with ppport.h to 5.003"); - -$o = ppport(qw(--api-info=Zero)); -%found = map {($_ => 1)} $o =~ /^===\s+(\w+)\s+===/mg; -is(scalar keys %found, 1, "found 1 key"); -ok(exists $found{Zero}); -is(matches($o, '^Supported at least since perl-5.003', 'm'), 1, "Zero supported to 5.003"); - -$o = ppport(qw(--api-info=/Zero/)); -%found = map {($_ => 1)} $o =~ /^===\s+(\w+)\s+===/mg; -is(scalar keys %found, 2, "found 2 keys"); -ok(exists $found{Zero}); -ok(exists $found{ZeroD}); - -=============================================================================== - -# check --list-provided option - -my @o = ppport(qw(--list-provided)); -my %p; -my $fail = 0; -for (@o) { - my($name, $flags) = /^(\w+)(?:\s+\[(\w+(?:,\s+\w+)*)\])?$/ or $fail++; - exists $p{$name} and $fail++; - $p{$name} = defined $flags ? { map { ($_ => 1) } $flags =~ /(\w+)/g } : ''; -} -ok(@o > 100); -is($fail, 0); - -ok(exists $p{call_pv}); -ok(not ref $p{call_pv}); - -ok(exists $p{grok_bin}); -is(ref $p{grok_bin}, 'HASH'); -is(scalar keys %{$p{grok_bin}}, 2); -ok($p{grok_bin}{explicit}); -ok($p{grok_bin}{depend}); - -ok(exists $p{gv_stashpvn}); -is(ref $p{gv_stashpvn}, 'HASH'); -is(scalar keys %{$p{gv_stashpvn}}, 2); -ok($p{gv_stashpvn}{depend}); -ok($p{gv_stashpvn}{hint}); - -ok(exists $p{sv_catpvf_mg}); -is(ref $p{sv_catpvf_mg}, 'HASH'); -is(scalar keys %{$p{sv_catpvf_mg}}, 2); -ok($p{sv_catpvf_mg}{explicit}); -ok($p{sv_catpvf_mg}{depend}); - -ok(exists $p{PL_signals}); -is(ref $p{PL_signals}, 'HASH'); -is(scalar keys %{$p{PL_signals}}, 1); -ok($p{PL_signals}{explicit}); - -=============================================================================== - -# check --list-unsupported option - -my @o = ppport(qw(--list-unsupported)); -my %p; -my $fail = 0; -for (@o) { - my($name, $ver) = /^(\w+)\s*\.+\s*([\d._]+)$/ or $fail++; - exists $p{$name} and $fail++; - $p{$name} = $ver; -} -ok(@o > 100); -is($fail, 0); - -ok(exists $p{utf8_distance}); -is($p{utf8_distance}, '5.6.0'); - -ok(exists $p{save_generic_svref}); -is($p{save_generic_svref}, '5.005_03'); - -=============================================================================== - -# check --nofilter option - -my $o = ppport(qw(--nochanges)); -ok($o =~ /^Scanning.*foo\.cpp/mi); -ok($o =~ /Analyzing.*foo\.cpp/mi); -is(matches($o, '^Scanning', 'm'), 1); -is(matches($o, 'Analyzing', 'm'), 1); - -$o = ppport(qw(--nochanges foo.cpp foo.o Makefile.PL)); -ok($o =~ /Skipping the following files \(use --nofilter to avoid this\):/m); -is(matches($o, '^\|\s+foo\.o', 'mi'), 1); -is(matches($o, '^\|\s+Makefile\.PL', 'mi'), 1); -ok($o =~ /^Scanning.*foo\.cpp/mi); -ok($o =~ /Analyzing.*foo\.cpp/mi); -is(matches($o, '^Scanning', 'm'), 1); -is(matches($o, 'Analyzing', 'm'), 1); - -$o = ppport(qw(--nochanges --nofilter foo.cpp foo.o Makefile.PL)); -ok($o =~ /^Scanning.*foo\.cpp/mi); -ok($o =~ /Analyzing.*foo\.cpp/mi); -ok($o =~ /^Scanning.*foo\.o/mi); -ok($o =~ /Analyzing.*foo\.o/mi); -ok($o =~ /^Scanning.*Makefile/mi); -ok($o =~ /Analyzing.*Makefile/mi); -is(matches($o, '^Scanning', 'm'), 3); -is(matches($o, 'Analyzing', 'm'), 3); - ----------------------------- foo.cpp ------------------------------------------ - -newSViv(); - ----------------------------- foo.o -------------------------------------------- - -newSViv(); - ----------------------------- Makefile.PL -------------------------------------- - -newSViv(); - -=============================================================================== - -# check if explicit variables are handled propery - -my $o = ppport(qw(--copy=a)); -ok($o =~ /^Needs to include.*ppport\.h/m); -ok($o =~ /^Uses PL_signals/m); -ok($o =~ /^File needs PL_signals, adding static request/m); -ok(eq_files('MyExt.xsa', 'MyExt.ra')); - -unlink qw(MyExt.xsa); - ----------------------------- MyExt.xs ----------------------------------------- - -PL_signals = 123; -if (PL_signals == 42) - foo(); - ----------------------------- MyExt.ra ----------------------------------------- - -#define NEED_PL_signals -#include "ppport.h" -PL_signals = 123; -if (PL_signals == 42) - foo(); - -=============================================================================== - -my $o = ppport(qw(--nochanges file.xs)); -ok($o =~ /^Uses PL_copline/m); -ok($o =~ /WARNING: PL_copline/m); -ok($o =~ /^Uses SvUOK/m); -ok($o =~ /WARNING: Uses SvUOK, which may not be portable/m); -ok($o =~ /^Analysis completed \(2 warnings\)/m); -ok($o =~ /^Looks good/m); - -$o = ppport(qw(--nochanges --compat-version=5.8.0 file.xs)); -ok($o =~ /^Uses PL_copline/m); -ok($o =~ /WARNING: PL_copline/m); -ok($o !~ /WARNING: Uses SvUOK, which may not be portable/m); -ok($o =~ /^Analysis completed \(1 warning\)/m); -ok($o =~ /^Looks good/m); - ----------------------------- file.xs ----------------------------------------- - -#define NEED_PL_parser -#include "ppport.h" -SvUOK -PL_copline - -=============================================================================== - -my $o = ppport(qw(--copy=f)); - -for (qw(file.xs)) { - ok($o =~ /^Writing copy of.*\Q$_\E.*with changes/mi); - ok(-e "${_}f"); - ok(eq_files("${_}f", "${_}r")); - unlink "${_}f"; -} - ----------------------------- file.xs ----------------------------------------- - -a_string = "sv_undef" -a_char = 'sv_yes' -#define SOMETHING defgv -/* C-comment: sv_tainted */ -# -# This is just a big XS comment using sv_no -# -/* The following, is NOT an XS comment! */ -# define SOMETHING_ELSE defgv + \ - sv_undef - ----------------------------- file.xsr ----------------------------------------- - -#include "ppport.h" -a_string = "sv_undef" -a_char = 'sv_yes' -#define SOMETHING PL_defgv -/* C-comment: sv_tainted */ -# -# This is just a big XS comment using sv_no -# -/* The following, is NOT an XS comment! */ -# define SOMETHING_ELSE PL_defgv + \ - PL_sv_undef - -=============================================================================== - -my $o = ppport(qw(--copy=f)); - -for (qw(file.xs)) { - ok($o =~ /^Writing copy of.*\Q$_\E.*with changes/mi); - ok(-e "${_}f"); - ok(eq_files("${_}f", "${_}r")); - unlink "${_}f"; -} - ----------------------------- file.xs ----------------------------------------- - -#define NEED_warner -#include "ppport.h" -Perl_croak_nocontext("foo"); -Perl_croak("bar"); -croak("foo"); -croak_nocontext("foo"); -Perl_warner_nocontext("foo"); -Perl_warner("foo"); -warner_nocontext("foo"); -warner("foo"); - ----------------------------- file.xsr ----------------------------------------- - -#define NEED_warner -#include "ppport.h" -Perl_croak_nocontext("foo"); -Perl_croak(aTHX_ "bar"); -croak("foo"); -croak_nocontext("foo"); -Perl_warner_nocontext("foo"); -Perl_warner(aTHX_ "foo"); -warner_nocontext("foo"); -warner("foo"); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/pvs.t perl-5.34.0/dist/Devel-PPPort/t/pvs.t --- perl-5.32.1/dist/Devel-PPPort/t/pvs.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/pvs.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/pvs instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (12) { - load(); - plan(tests => 12); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -my $x = 'foo'; - -is(Devel::PPPort::newSVpvs(), "newSVpvs"); -is(Devel::PPPort::newSVpvs_flags(), "newSVpvs_flags"); -is(Devel::PPPort::newSVpvs_share(), 3); - -Devel::PPPort::sv_catpvs($x); -is($x, "foosv_catpvs"); - -Devel::PPPort::sv_setpvs($x); -is($x, "sv_setpvs"); - -my %h = ('hv_fetchs' => 42); -Devel::PPPort::hv_stores(\%h, 4711); -is(scalar keys %h, 2); -ok(exists $h{'hv_stores'}); -is($h{'hv_stores'}, 4711); -is(Devel::PPPort::hv_fetchs(\%h), 42); -is(Devel::PPPort::gv_fetchpvs(), \*Devel::PPPort::VERSION); -is(Devel::PPPort::gv_stashpvs(), \%Devel::PPPort::); - -is(Devel::PPPort::get_cvs(), 3); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/pv_tools.t perl-5.34.0/dist/Devel-PPPort/t/pv_tools.t --- perl-5.32.1/dist/Devel-PPPort/t/pv_tools.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/pv_tools.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/pv_tools instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (13) { - load(); - plan(tests => 13); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -my $uni = &Devel::PPPort::pv_escape_can_unicode(); - -# sanity check -ok($uni ? "$]" >= 5.006 : "$]" < 5.008); - -my @r; - -@r = &Devel::PPPort::pv_pretty(); -is($r[0], $r[1]); -is($r[0], "foobarbaz"); -is($r[2], $r[3]); -is($r[2], ''); -is($r[4], $r[5]); -if(ord("A") == 65) { - is($r[4], $uni ? 'N\375 Batter\355' : 'N\303\275 Batter\303'); -} -else { - skip("Skip for non-ASCII platform"); -} -is($r[6], $r[7]); -if(ord("A") == 65) { - is($r[6], $uni ? '\301g\346tis Byrju...' : '\303\201g\303\246t...'); -} -else { - skip("Skip for non-ASCII platform"); -} - -@r = &Devel::PPPort::pv_display(); -is($r[0], $r[1]); -is($r[0], '"foob\0rbaz"\0'); -is($r[2], $r[3]); -ok($r[2] eq '"pv_di"...\0' || - $r[2] eq '"pv_d"...\0'); # some perl implementations are broken... :( - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/shared_pv.t perl-5.34.0/dist/Devel-PPPort/t/shared_pv.t --- perl-5.32.1/dist/Devel-PPPort/t/shared_pv.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/shared_pv.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/shared_pv instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (1) { - load(); - plan(tests => 1); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -is(&Devel::PPPort::newSVpvn_share(), 6); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/snprintf.t perl-5.34.0/dist/Devel-PPPort/t/snprintf.t --- perl-5.32.1/dist/Devel-PPPort/t/snprintf.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/snprintf.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/snprintf instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (2) { - load(); - plan(tests => 2); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -my($l, $s) = Devel::PPPort::my_snprintf(); -is($l, 8); -is($s, "foobar42"); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/sprintf.t perl-5.34.0/dist/Devel-PPPort/t/sprintf.t --- perl-5.32.1/dist/Devel-PPPort/t/sprintf.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/sprintf.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/sprintf instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (2) { - load(); - plan(tests => 2); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -my($l, $s) = Devel::PPPort::my_sprintf(); -is($l, 8); -is($s, "foobar42"); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/strlfuncs.t perl-5.34.0/dist/Devel-PPPort/t/strlfuncs.t --- perl-5.32.1/dist/Devel-PPPort/t/strlfuncs.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/strlfuncs.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/strlfuncs instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (13) { - load(); - plan(tests => 13); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -my @e = (3, 'foo', - 6, 'foobar', - 9, 'foobarb', - 10, '1234567', - 4, '1234', - 16, '1234567', - ); -my @r = Devel::PPPort::my_strlfunc(); - -ok(@e == @r); - -for (0 .. $#e) { - is($r[$_], $e[$_]); -} - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/SvPV.t perl-5.34.0/dist/Devel-PPPort/t/SvPV.t --- perl-5.32.1/dist/Devel-PPPort/t/SvPV.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/SvPV.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,124 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/SvPV instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (49) { - load(); - plan(tests => 49); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -my $mhx = "mhx"; - -is(&Devel::PPPort::SvPVbyte($mhx), 3); - -my $i = 42; - -is(&Devel::PPPort::SvPV_nolen($mhx), $i++); -is(&Devel::PPPort::SvPV_const($mhx), $i++); -is(&Devel::PPPort::SvPV_mutable($mhx), $i++); -is(&Devel::PPPort::SvPV_flags($mhx), $i++); -is(&Devel::PPPort::SvPV_flags_const($mhx), $i++); - -is(&Devel::PPPort::SvPV_flags_const_nolen($mhx), $i++); -is(&Devel::PPPort::SvPV_flags_mutable($mhx), $i++); -is(&Devel::PPPort::SvPV_force($mhx), $i++); -is(&Devel::PPPort::SvPV_force_nolen($mhx), $i++); -is(&Devel::PPPort::SvPV_force_mutable($mhx), $i++); - -is(&Devel::PPPort::SvPV_force_nomg($mhx), $i++); -is(&Devel::PPPort::SvPV_force_nomg_nolen($mhx), $i++); -is(&Devel::PPPort::SvPV_force_flags($mhx), $i++); -is(&Devel::PPPort::SvPV_force_flags_nolen($mhx), $i++); -is(&Devel::PPPort::SvPV_force_flags_mutable($mhx), $i++); - -is(&Devel::PPPort::SvPV_nolen_const($mhx), $i++); -is(&Devel::PPPort::SvPV_nomg($mhx), $i++); -is(&Devel::PPPort::SvPV_nomg_const($mhx), $i++); -is(&Devel::PPPort::SvPV_nomg_const_nolen($mhx), $i++); -is(&Devel::PPPort::SvPV_nomg_nolen($mhx), $i++); - -$mhx = 42; is(&Devel::PPPort::SvPV_nolen($mhx), 0); -$mhx = 42; is(&Devel::PPPort::SvPV_const($mhx), 2); -$mhx = 42; is(&Devel::PPPort::SvPV_mutable($mhx), 2); -$mhx = 42; is(&Devel::PPPort::SvPV_flags($mhx), 2); -$mhx = 42; is(&Devel::PPPort::SvPV_flags_const($mhx), 2); - -$mhx = 42; is(&Devel::PPPort::SvPV_flags_const_nolen($mhx), 0); -$mhx = 42; is(&Devel::PPPort::SvPV_flags_mutable($mhx), 2); -$mhx = 42; is(&Devel::PPPort::SvPV_force($mhx), 2); -$mhx = 42; is(&Devel::PPPort::SvPV_force_nolen($mhx), 0); -$mhx = 42; is(&Devel::PPPort::SvPV_force_mutable($mhx), 2); - -$mhx = 42; is(&Devel::PPPort::SvPV_force_nomg($mhx), 2); -$mhx = 42; is(&Devel::PPPort::SvPV_force_nomg_nolen($mhx), 0); -$mhx = 42; is(&Devel::PPPort::SvPV_force_flags($mhx), 2); -$mhx = 42; is(&Devel::PPPort::SvPV_force_flags_nolen($mhx), 0); -$mhx = 42; is(&Devel::PPPort::SvPV_force_flags_mutable($mhx), 2); - -$mhx = 42; is(&Devel::PPPort::SvPV_nolen_const($mhx), 0); -$mhx = 42; is(&Devel::PPPort::SvPV_nomg($mhx), 2); -$mhx = 42; is(&Devel::PPPort::SvPV_nomg_const($mhx), 2); -$mhx = 42; is(&Devel::PPPort::SvPV_nomg_const_nolen($mhx), 0); -$mhx = 42; is(&Devel::PPPort::SvPV_nomg_nolen($mhx), 0); - -my $str = ""; -&Devel::PPPort::SvPV_force($str); -my($s2, $before, $after) = &Devel::PPPort::SvPV_renew($str, 81, "x"x80); -is($str, "x"x80); -is($s2, "x"x80); -ok($before < 81); -is($after, 81); - -$str = "x"x400; -&Devel::PPPort::SvPV_force($str); -($s2, $before, $after) = &Devel::PPPort::SvPV_renew($str, 41, "x"x40); -is($str, "x"x40); -is($s2, "x"x40); -ok($before > 41); -is($after, 41); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/SvREFCNT.t perl-5.34.0/dist/Devel-PPPort/t/SvREFCNT.t --- perl-5.32.1/dist/Devel-PPPort/t/SvREFCNT.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/SvREFCNT.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/SvREFCNT instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (14) { - load(); - plan(tests => 14); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -for (Devel::PPPort::SvREFCNT()) { - ok(defined $_ and $_); -} - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/Sv_set.t perl-5.34.0/dist/Devel-PPPort/t/Sv_set.t --- perl-5.32.1/dist/Devel-PPPort/t/Sv_set.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/Sv_set.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,117 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/Sv_set instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (15) { - load(); - plan(tests => 15); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -my $foo = 5; -is(&Devel::PPPort::TestSvUV_set($foo, 12345), 42); -is(&Devel::PPPort::TestSvPVX_const("mhx"), 43); -is(&Devel::PPPort::TestSvPVX_mutable("mhx"), 44); - -my $bar = []; - -bless $bar, 'foo'; -is($bar->x(), 'foobar'); - -Devel::PPPort::TestSvSTASH_set($bar, 'bar'); -is($bar->x(), 'hacker'); - - if (ivers($]) != ivers(5.7.2)) { - ok(Devel::PPPort::Test_sv_setsv_SV_NOSTEAL()); - } - else { - skip("7.2 broken for NOSTEAL", 1); - } - - tie my $scalar, 'TieScalarCounter', 'string'; - - is tied($scalar)->{fetch}, 0; - is tied($scalar)->{store}, 0; - my $copy = Devel::PPPort::newSVsv_nomg($scalar); - is tied($scalar)->{fetch}, 0; - is tied($scalar)->{store}, 0; - - my $fetch = $scalar; - is tied($scalar)->{fetch}, 1; - is tied($scalar)->{store}, 0; - my $copy2 = Devel::PPPort::newSVsv_nomg($scalar); - is tied($scalar)->{fetch}, 1; - is tied($scalar)->{store}, 0; - is $copy2, 'string'; - -package TieScalarCounter; - -sub TIESCALAR { - my ($class, $value) = @_; - return bless { fetch => 0, store => 0, value => $value }, $class; -} - -sub FETCH { - my ($self) = @_; - $self->{fetch}++; - return $self->{value}; -} - -sub STORE { - my ($self, $value) = @_; - $self->{store}++; - $self->{value} = $value; -} - -package foo; - -sub x { 'foobar' } - -package bar; - -sub x { 'hacker' } - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/sv_xpvf.t perl-5.34.0/dist/Devel-PPPort/t/sv_xpvf.t --- perl-5.32.1/dist/Devel-PPPort/t/sv_xpvf.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/sv_xpvf.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/sv_xpvf instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (9) { - load(); - plan(tests => 9); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -use Tie::Hash; -my %h; -tie %h, 'Tie::StdHash'; -$h{foo} = 'foo-'; -$h{bar} = ''; - -is(&Devel::PPPort::vnewSVpvf(), "$]" >= 5.004 ? 'Perl-42' : '%s-%d'); -is(&Devel::PPPort::sv_vcatpvf('1-2-3-'), "$]" >= 5.004 ? '1-2-3-Perl-42' : '1-2-3-%s-%d'); -is(&Devel::PPPort::sv_vsetpvf('1-2-3-'), "$]" >= 5.004 ? 'Perl-42' : '%s-%d'); - -&Devel::PPPort::sv_catpvf_mg($h{foo}); -is($h{foo}, "$]" >= 5.004 ? 'foo-Perl-42' : 'foo-'); - -&Devel::PPPort::Perl_sv_catpvf_mg($h{foo}); -is($h{foo}, "$]" >= 5.004 ? 'foo-Perl-42-Perl-43' : 'foo-'); - -&Devel::PPPort::sv_catpvf_mg_nocontext($h{foo}); -is($h{foo}, "$]" >= 5.004 ? 'foo-Perl-42-Perl-43-Perl-44' : 'foo-'); - -&Devel::PPPort::sv_setpvf_mg($h{bar}); -is($h{bar}, "$]" >= 5.004 ? 'mhx-42' : ''); - -&Devel::PPPort::Perl_sv_setpvf_mg($h{bar}); -is($h{bar}, "$]" >= 5.004 ? 'foo-43' : ''); - -&Devel::PPPort::sv_setpvf_mg_nocontext($h{bar}); -is($h{bar}, "$]" >= 5.004 ? 'bar-44' : ''); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/threads.t perl-5.34.0/dist/Devel-PPPort/t/threads.t --- perl-5.32.1/dist/Devel-PPPort/t/threads.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/threads.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/threads instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (2) { - load(); - plan(tests => 2); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -is(&Devel::PPPort::no_THX_arg("42"), 43); -eval { &Devel::PPPort::with_THX_arg("yes\n"); }; -ok($@ =~ /^yes/); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/utf8.t perl-5.34.0/dist/Devel-PPPort/t/utf8.t --- perl-5.32.1/dist/Devel-PPPort/t/utf8.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/utf8.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,300 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/utf8 instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (98) { - load(); - plan(tests => 98); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -BEGIN { - # skip tests on 5.6.0 and earlier, plus 5.7.0 - if (ivers($]) <= ivers(5.6) || ivers($]) == ivers(5.7) ) { - skip 'skip: broken utf8 support', 98; - exit; - } - require warnings; -} - -is(Devel::PPPort::UTF8f(42), '[42]'); -is(Devel::PPPort::UTF8f('abc'), '[abc]'); -is(Devel::PPPort::UTF8f("\x{263a}"), "[\x{263a}]"); - -my $str = "\x{A8}"; -if (ivers($]) >= ivers(5.8)) { eval q{utf8::upgrade($str)} } -is(Devel::PPPort::UTF8f($str), "[\x{A8}]"); -if (ivers($]) >= ivers(5.8)) { eval q{utf8::downgrade($str)} } -is(Devel::PPPort::UTF8f($str), "[\x{A8}]"); - -is(&Devel::PPPort::UTF8_SAFE_SKIP("A", 0), 1); -is(&Devel::PPPort::UTF8_SAFE_SKIP("A", -1), 0); - -is(&Devel::PPPort::isUTF8_CHAR("A", -1), 0); -is(&Devel::PPPort::isUTF8_CHAR("A", 0), 1); -is(&Devel::PPPort::isUTF8_CHAR("\x{100}", -1), 0); -is(&Devel::PPPort::isUTF8_CHAR("\x{100}", 0), 2); - -is(&Devel::PPPort::UVCHR_IS_INVARIANT(ord("A")), 1); -ok(! &Devel::PPPort::UVCHR_IS_INVARIANT(0xb6)); -ok(! &Devel::PPPort::UVCHR_IS_INVARIANT(0x100)); - -is(&Devel::PPPort::UVCHR_SKIP(ord("A")), 1); -is(&Devel::PPPort::UVCHR_SKIP(0xb6), 2, "This is a test"); -is(&Devel::PPPort::UVCHR_SKIP(0x3FF), 2); -is(&Devel::PPPort::UVCHR_SKIP(0x3FFF), 3); -is(&Devel::PPPort::UVCHR_SKIP(0x3FFFF), 4); -is(&Devel::PPPort::UVCHR_SKIP(0x3FFFFF), 5); -is(&Devel::PPPort::UVCHR_SKIP(0x3FFFFFF), ord("A") == 65 ? 5 : 6); -is(&Devel::PPPort::UVCHR_SKIP(0x4000000), ord("A") == 65 ? 6 : 7); -if (ord("A") != 65) { - skip("Test not valid on EBCDIC", 1) -} -else { - is(&Devel::PPPort::UVCHR_SKIP(0xFFFFFFFF), 7); -} - -if (ivers($]) < ivers(5.8)) { - skip("Perl version too early", 3); -} -else { - is(&Devel::PPPort::foldEQ_utf8("A\x{100}", 3, 1, "a\x{101}", 3, 1), 1); - is(&Devel::PPPort::foldEQ_utf8("A\x{100}", 3, 1, "a\x{102}", 3, 1), 0); - is(&Devel::PPPort::foldEQ_utf8("A\x{100}", 3, 1, "b\x{101}", 3, 1), 0); -} - -my $ret = &Devel::PPPort::utf8_to_uvchr("A"); -is($ret->[0], ord("A")); -is($ret->[1], 1); - -$ret = &Devel::PPPort::utf8_to_uvchr("\0"); -is($ret->[0], 0); -is($ret->[1], 1); - -$ret = &Devel::PPPort::utf8_to_uvchr_buf("A", 0); -is($ret->[0], ord("A")); -is($ret->[1], 1); - -$ret = &Devel::PPPort::utf8_to_uvchr_buf("\0", 0); -is($ret->[0], 0); -is($ret->[1], 1); - -my @buf_tests = ( - { - input => "A", - adjustment => -1, - warning => eval "qr/empty/", - no_warnings_returned_length => 0, - }, - { - input => "\xc4\xc5", - adjustment => 0, - warning => eval "qr/non-continuation/", - no_warnings_returned_length => 1, - }, - { - input => "\xc4\x80", - adjustment => -1, - warning => eval "qr/short|1 byte, need 2/", - no_warnings_returned_length => 1, - }, - { - input => "\xc0\x81", - adjustment => 0, - warning => eval "qr/overlong|2 bytes, need 1/", - no_warnings_returned_length => 2, - }, - { - input => "\xe0\x80\x81", - adjustment => 0, - warning => eval "qr/overlong|3 bytes, need 1/", - no_warnings_returned_length => 3, - }, - { - input => "\xf0\x80\x80\x81", - adjustment => 0, - warning => eval "qr/overlong|4 bytes, need 1/", - no_warnings_returned_length => 4, - }, - { # Old algorithm failed to detect this - input => "\xff\x80\x90\x90\x90\xbf\xbf\xbf\xbf\xbf\xbf\xbf\xbf", - adjustment => 0, - warning => eval "qr/overflow/", - no_warnings_returned_length => 13, - }, -); - -if (ord("A") != 65) { # tests not valid for EBCDIC - skip("Perl version too early", 2 + 4 + (scalar @buf_tests * 5)); -} -else { - $ret = &Devel::PPPort::utf8_to_uvchr_buf("\xc4\x80", 0); - is($ret->[0], 0x100); - is($ret->[1], 2); - - my @warnings; - local $SIG{__WARN__} = sub { push @warnings, @_; }; - - { - use warnings 'utf8'; - $ret = &Devel::PPPort::utf8_to_uvchr("\xe0\0\x80"); - is($ret->[0], 0); - is($ret->[1], -1); - - no warnings 'utf8'; - $ret = &Devel::PPPort::utf8_to_uvchr("\xe0\0\x80"); - is($ret->[0], 0xFFFD); - is($ret->[1], 1); - } - - - # An empty input is an assertion failure on debugging builds. It is - # deliberately the first test. - require Config; import Config; - use vars '%Config'; - - # VMS doesn't put DEBUGGING in ccflags, and Windows doesn't have - # $Config{config_args}. When 5.14 or later can be assumed, use - # Config::non_bincompat_options(), but for now we're stuck with this. - if ( $Config{ccflags} =~ /-DDEBUGGING/ - || $^O eq 'VMS' && $Config{config_args} =~ /\bDDEBUGGING\b/) - { - shift @buf_tests; - skip("Test not valid on DEBUGGING builds", 5); - } - - my $test; - for $test (@buf_tests) { - my $input = $test->{'input'}; - my $adjustment = $test->{'adjustment'}; - my $display = 'utf8_to_uvchr_buf("'; - my $i; - for ($i = 0; $i < length($input) + $adjustment; $i++) { - $display .= sprintf "\\x%02x", ord substr($input, $i, 1); - } - - $display .= '")'; - my $warning = $test->{'warning'}; - - undef @warnings; - use warnings 'utf8'; - $ret = &Devel::PPPort::utf8_to_uvchr_buf($input, $adjustment); - is($ret->[0], 0, "returned value $display; warnings enabled"); - is($ret->[1], -1, "returned length $display; warnings enabled"); - my $all_warnings = join "; ", @warnings; - my $contains = grep { $_ =~ $warning } $all_warnings; - is($contains, 1, $display - . "; Got: '$all_warnings', which should contain '$warning'"); - - undef @warnings; - no warnings 'utf8'; - $ret = &Devel::PPPort::utf8_to_uvchr_buf($input, $adjustment); - is($ret->[0], 0xFFFD, "returned value $display; warnings disabled"); - is($ret->[1], $test->{'no_warnings_returned_length'}, - "returned length $display; warnings disabled"); - } -} - -if (ivers($]) ge ivers(5.008)) { - BEGIN { if (ivers($]) ge ivers(5.008)) { require utf8; "utf8"->import() } } - - is(Devel::PPPort::sv_len_utf8("aščť"), 4); - is(Devel::PPPort::sv_len_utf8_nomg("aščť"), 4); - - my $str = "áíé"; - utf8::downgrade($str); - is(Devel::PPPort::sv_len_utf8($str), 3); - utf8::downgrade($str); - is(Devel::PPPort::sv_len_utf8_nomg($str), 3); - utf8::upgrade($str); - is(Devel::PPPort::sv_len_utf8($str), 3); - utf8::upgrade($str); - is(Devel::PPPort::sv_len_utf8_nomg($str), 3); - - tie my $scalar, 'TieScalarCounter', "é"; - - is(tied($scalar)->{fetch}, 0); - is(tied($scalar)->{store}, 0); - is(Devel::PPPort::sv_len_utf8($scalar), 2); - is(tied($scalar)->{fetch}, 1); - is(tied($scalar)->{store}, 0); - is(Devel::PPPort::sv_len_utf8($scalar), 3); - is(tied($scalar)->{fetch}, 2); - is(tied($scalar)->{store}, 0); - is(Devel::PPPort::sv_len_utf8($scalar), 4); - is(tied($scalar)->{fetch}, 3); - is(tied($scalar)->{store}, 0); - is(Devel::PPPort::sv_len_utf8_nomg($scalar), 4); - is(tied($scalar)->{fetch}, 3); - is(tied($scalar)->{store}, 0); - is(Devel::PPPort::sv_len_utf8_nomg($scalar), 4); - is(tied($scalar)->{fetch}, 3); - is(tied($scalar)->{store}, 0); -} else { - skip 'skip: no utf8::downgrade/utf8::upgrade support', 23; -} - -package TieScalarCounter; - -sub TIESCALAR { - my ($class, $value) = @_; - return bless { fetch => 0, store => 0, value => $value }, $class; -} - -sub FETCH { - BEGIN { if (main::ivers($]) ge main::ivers(5.008)) { require utf8; "utf8"->import() } } - my ($self) = @_; - $self->{fetch}++; - return $self->{value} .= "é"; -} - -sub STORE { - my ($self, $value) = @_; - $self->{store}++; - $self->{value} = $value; -} - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/uv.t perl-5.34.0/dist/Devel-PPPort/t/uv.t --- perl-5.32.1/dist/Devel-PPPort/t/uv.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/uv.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/uv instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (11) { - load(); - plan(tests => 11); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -BEGIN { require warnings if "$]" > '5.006' } - -is(&Devel::PPPort::sv_setuv(42), 42); -is(&Devel::PPPort::newSVuv(123), 123); -is(&Devel::PPPort::sv_2uv("4711"), 4711); -is(&Devel::PPPort::sv_2uv("1735928559"), 1735928559); -is(&Devel::PPPort::SvUVx("1735928559"), 1735928559); -is(&Devel::PPPort::SvUVx(1735928559), 1735928559); -is(&Devel::PPPort::SvUVx(0xdeadbeef), 0xdeadbeef); -is(&Devel::PPPort::XSRETURN_UV(), 42); -is(&Devel::PPPort::PUSHu(), 42); -is(&Devel::PPPort::XPUSHu(), 43); -is(&Devel::PPPort::my_strnlen("abc\0def", 7), 3); - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/variables.t perl-5.34.0/dist/Devel-PPPort/t/variables.t --- perl-5.32.1/dist/Devel-PPPort/t/variables.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/variables.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/variables instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (52) { - load(); - plan(tests => 52); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -ok(Devel::PPPort::compare_PL_signals()); - -ok(!defined(&Devel::PPPort::PL_sv_undef())); -ok(&Devel::PPPort::PL_sv_yes()); -ok(!&Devel::PPPort::PL_sv_no()); -is(&Devel::PPPort::PL_na("abcd"), 4); -is(&Devel::PPPort::PL_Sv(), "mhx"); -ok(defined &Devel::PPPort::PL_tokenbuf()); -ok("$]" >= 5.009005 || &Devel::PPPort::PL_parser()); -ok(&Devel::PPPort::PL_hexdigit() =~ /^[0-9a-zA-Z]+$/); -ok(defined &Devel::PPPort::PL_hints()); -is(&Devel::PPPort::PL_ppaddr("mhx"), "MHX"); - -for (&Devel::PPPort::other_variables()) { - ok($_ != 0); -} - -{ - my @w; - my $fail = 0; - { - local $SIG{'__WARN__'} = sub { push @w, @_ }; - ok(&Devel::PPPort::dummy_parser_warning()); - } - if ("$]" >= 5.009005) { - ok(@w >= 0); - for (@w) { - print "# $_"; - unless (/^warning: dummy PL_bufptr used in.*module3.*:\d+/i) { - warn $_; - $fail++; - } - } - } - else { - ok(@w == 0); - } - is($fail, 0); -} - -ok(&Devel::PPPort::no_dummy_parser_vars(1) >= ("$]" < 5.009005 ? 1 : 0)); - -eval { &Devel::PPPort::no_dummy_parser_vars(0) }; - -if ("$]" < 5.009005) { - is($@, ''); -} -else { - if ($@) { - print "# $@"; - ok($@ =~ /^panic: PL_parser == NULL in.*module2.*:\d+/i); - } - else { - ok(1); - } -} - diff -Nru perl-5.32.1/dist/Devel-PPPort/t/warn.t perl-5.34.0/dist/Devel-PPPort/t/warn.t --- perl-5.32.1/dist/Devel-PPPort/t/warn.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Devel-PPPort/t/warn.t 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ -################################################################################ -# -# !!!!! Do NOT edit this file directly! !!!!! -# -# Edit mktests.PL and/or parts/inc/warn instead. -# -# This file was automatically generated from the definition files in the -# parts/inc/ subdirectory by mktests.PL. To learn more about how all this -# works, please read the F file that came with this distribution. -# -################################################################################ - -use FindBin (); - -BEGIN { - if ($ENV{'PERL_CORE'}) { - chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib' && -d '../ext'; - require Config; import Config; - use vars '%Config'; - if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { - print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; - exit 0; - } - } - - use lib "$FindBin::Bin"; - use lib "$FindBin::Bin/../parts/inc"; - - die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc"; - - sub load { - require 'testutil.pl'; - require 'inctools'; - } - - if (5) { - load(); - plan(tests => 5); - } -} - -use Devel::PPPort; -use strict; -BEGIN { $^W = 1; } - -package Devel::PPPort; -use vars '@ISA'; -require DynaLoader; -@ISA = qw(DynaLoader); -bootstrap Devel::PPPort; - -package main; - -$^W = 0; - -my $warning; - -$SIG{'__WARN__'} = sub { $warning = $_[0] }; - -$warning = ''; -Devel::PPPort::warner(); -ok("$]" >= 5.004 ? $warning =~ /^warner bar:42/ : $warning eq ''); - -$warning = ''; -Devel::PPPort::Perl_warner(); -ok("$]" >= 5.004 ? $warning =~ /^Perl_warner bar:42/ : $warning eq ''); - -$warning = ''; -Devel::PPPort::Perl_warner_nocontext(); -ok("$]" >= 5.004 ? $warning =~ /^Perl_warner_nocontext bar:42/ : $warning eq ''); - -$warning = ''; -Devel::PPPort::ckWARN(); -is($warning, ''); - -$^W = 1; - -$warning = ''; -Devel::PPPort::ckWARN(); -ok("$]" >= 5.004 ? $warning =~ /^ckWARN bar:42/ : $warning eq ''); - diff -Nru perl-5.32.1/dist/Dumpvalue/t/Dumpvalue.t perl-5.34.0/dist/Dumpvalue/t/Dumpvalue.t --- perl-5.32.1/dist/Dumpvalue/t/Dumpvalue.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Dumpvalue/t/Dumpvalue.t 2020-10-04 22:17:12.000000000 +0000 @@ -14,8 +14,6 @@ $^W = 0; } -our ( $foo, @bar, %baz ); - use lib ("./t/lib"); use TieOut; use Test::More tests => 88; @@ -28,7 +26,10 @@ $d->set( globPrint => 1, dumpReused => 1 ); is( $d->{globPrint}, 1, 'set an option correctly' ); is( $d->get('globPrint'), 1, 'get an option correctly' ); -is( $d->get('globPrint', 'dumpReused'), qw( 1 1 ), 'get multiple options' ); +is_deeply( [ $d->get('globPrint', 'dumpReused') ], + [ 1, 1 ], + 'get multiple options' +); # check to see if unctrl works is( ref( Dumpvalue::unctrl(*FOO) ), 'GLOB', 'unctrl should not modify GLOB' ); @@ -179,13 +180,13 @@ $foo = 1; $d->dumpglob( '', 2, 'foo', local *foo = \$foo ); is( $out->read, " \$foo = 1\n", 'dumped glob for $foo correctly' ); -@bar = (1, 2); +our @bar = (1, 2); # the key name is a little different here $d->dumpglob( '', 0, 'boo', *bar ); is( $out->read, "\@boo = (\n 0..1 1 2\n)\n", 'dumped glob for @bar fine' ); -%baz = ( one => 1, two => 2 ); +our %baz = ( one => 1, two => 2 ); $d->dumpglob( '', 0, 'baz', *baz ); is( $out->read, "\%baz = (\n 'one' => 1, 'two' => 2\n)\n", 'dumped glob for %baz fine' ); @@ -223,8 +224,11 @@ # test findsubs is( $d->findsubs(), undef, 'findsubs returns nothing without %DB::sub' ); -$DB::sub{'TieOut::read'} = 'TieOut'; -is( $d->findsubs( \&TieOut::read ), 'TieOut::read', 'findsubs reported sub' ); +{ + no warnings 'once'; + $DB::sub{'TieOut::read'} = 'TieOut'; + is( $d->findsubs( \&TieOut::read ), 'TieOut::read', 'findsubs reported sub' ); +} # now that it's capable of finding the package... $d->dumpsub( '', 'TieOut::read' ); @@ -256,26 +260,26 @@ is( $out->read, "\%c = 1 item (keys: 3; values: 3; total: 6 bytes)\n", 'hashUsage complex message okay' ); -$foo = 'one'; -@foo = ('two'); -%foo = ( three => '123' ); -is( $d->globUsage(\*foo, 'foo'), 14, 'globUsage reports length correctly' ); -like( $out->read, qr/\@foo =.+\%foo =/s, 'globValue message okay' ); +our $folly = 'one'; +our @folly = ('two'); +our %folly = ( three => '123' ); +is( $d->globUsage(\*folly, 'folly'), 14, 'globUsage reports length correctly' ); +like( $out->read, qr/\@folly =.+\%folly =/s, 'globValue message okay' ); # and now, the real show $d->dumpValue(undef); is( $out->read, "undef\n", 'dumpValue caught undef value okay' ); -$d->dumpValue($foo); +$d->dumpValue($folly); is( $out->read, "'one'\n", 'dumpValue worked' ); -$d->dumpValue(@foo); +$d->dumpValue(@folly); is( $out->read, "'two'\n", 'dumpValue worked on array' ); -$d->dumpValue(\$foo); +$d->dumpValue(\$folly); is( $out->read, "-> 'one'\n", 'dumpValue worked on scalar ref' ); # dumpValues (the rest of these should be caught by unwrap) $d->dumpValues(undef); is( $out->read, "undef\n", 'dumpValues caught undef value fine' ); -$d->dumpValues(\@foo); +$d->dumpValues(\@folly); is( $out->read, "0 0..0 'two'\n", 'dumpValues worked on array ref' ); $d->dumpValues('one', 'two'); is( $out->read, "0..1 'one' 'two'\n", 'dumpValues worked on multiple values' ); diff -Nru perl-5.32.1/dist/Env/lib/Env.pm perl-5.34.0/dist/Env/lib/Env.pm --- perl-5.32.1/dist/Env/lib/Env.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Env/lib/Env.pm 2020-10-04 22:17:12.000000000 +0000 @@ -1,6 +1,6 @@ package Env; -our $VERSION = '1.04'; +our $VERSION = '1.05'; =head1 NAME @@ -35,7 +35,7 @@ or modify it - $PATH .= ":."; + $PATH .= ":/any/path"; push @LD_LIBRARY_PATH, $dir; however you'd like. Bear in mind, however, that each access to a tied array @@ -44,15 +44,16 @@ The code: use Env qw(@PATH); - push @PATH, '.'; + push @PATH, '/any/path'; -is equivalent to: +is almost equivalent to: use Env qw(PATH); - $PATH .= ":."; + $PATH .= ":/any/path"; except that if C<$ENV{PATH}> started out empty, the second approach leaves -it with the (odd) value "C<:.>", but the first approach leaves it with "C<.>". +it with the (odd) value "C<:/any/path>", but the first approach leaves it with +"C". To remove a tied environment variable from the environment, assign it the undefined value diff -Nru perl-5.32.1/dist/Exporter/lib/Exporter/Heavy.pm perl-5.34.0/dist/Exporter/lib/Exporter/Heavy.pm --- perl-5.32.1/dist/Exporter/lib/Exporter/Heavy.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Exporter/lib/Exporter/Heavy.pm 2020-10-24 18:43:34.000000000 +0000 @@ -4,7 +4,7 @@ no strict 'refs'; # On one line so MakeMaker will see it. -require Exporter; our $VERSION = $Exporter::VERSION; +our $VERSION = '5.76'; =head1 NAME diff -Nru perl-5.32.1/dist/Exporter/lib/Exporter.pm perl-5.34.0/dist/Exporter/lib/Exporter.pm --- perl-5.32.1/dist/Exporter/lib/Exporter.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Exporter/lib/Exporter.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,16 +1,13 @@ package Exporter; -require 5.006; - -# Be lean. -#use strict; -#no strict 'refs'; +use strict; +no strict 'refs'; our $Debug = 0; our $ExportLevel = 0; our $Verbose ||= 0; -our $VERSION = '5.74'; -our (%Cache); +our $VERSION = '5.76'; +our %Cache; sub as_heavy { require Exporter::Heavy; diff -Nru perl-5.32.1/dist/Exporter/t/Exporter.t perl-5.34.0/dist/Exporter/t/Exporter.t --- perl-5.32.1/dist/Exporter/t/Exporter.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Exporter/t/Exporter.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ #!perl -w +use strict; +use warnings; + # Can't use Test::Simple/More, they depend on Exporter. my $test; sub ok ($;$) { @@ -18,39 +21,36 @@ BEGIN { $test = 1; - print "1..33\n"; + print "1..34\n"; require Exporter; ok( 1, 'Exporter compiled' ); } -BEGIN { - # Methods which Exporter says it implements. - @Exporter_Methods = qw(import +our @Exporter_Methods = qw(import export_to_level require_version export_fail ); -} package Testing; require Exporter; -@ISA = qw(Exporter); +our @ISA = qw(Exporter); # Make sure Testing can do everything its supposed to. foreach my $meth (@::Exporter_Methods) { ::ok( Testing->can($meth), "subclass can $meth()" ); } -%EXPORT_TAGS = ( +our %EXPORT_TAGS = ( This => [qw(stuff %left)], That => [qw(Above the @wailing)], tray => [qw(Fasten $seatbelt)], ); -@EXPORT = qw(lifejacket is); -@EXPORT_OK = qw(under &your $seat); -$VERSION = '1.05'; +our @EXPORT = qw(lifejacket is); +our @EXPORT_OK = qw(under &your $seat); +our $VERSION = '1.05'; ::ok( Testing->require_version(1.05), 'require_version()' ); eval { Testing->require_version(1.11); 1 }; @@ -168,15 +168,15 @@ package More::Testing; -@ISA = qw(Exporter); -$VERSION = 0; +our @ISA = qw(Exporter); +our $VERSION = 0; eval { More::Testing->require_version(0); 1 }; ::ok(!$@, 'require_version(0) and $VERSION = 0'); package Yet::More::Testing; -@ISA = qw(Exporter); -$VERSION = 0; +our @ISA = qw(Exporter); +our $VERSION = 0; eval { Yet::More::Testing->require_version(10); 1 }; ::ok($@ !~ /\(undef\)/, 'require_version(10) and $VERSION = 0'); @@ -185,8 +185,8 @@ BEGIN { local $SIG{__WARN__} = sub { $warnings = join '', @_ }; package Testing::Unused::Vars; - @ISA = qw(Exporter); - @EXPORT = qw(this $TODO that); + our @ISA = qw(Exporter); + our @EXPORT = qw(this $TODO that); package Foo; Testing::Unused::Vars->import; @@ -196,8 +196,8 @@ print "# $warnings\n"; package Moving::Target; -@ISA = qw(Exporter); -@EXPORT_OK = qw (foo); +our @ISA = qw(Exporter); +our @EXPORT_OK = qw (foo); sub foo {"This is foo"}; sub bar {"This is bar"}; @@ -215,12 +215,11 @@ ::ok (bar() eq "This is bar", "imported bar after EXPORT_OK changed"); package The::Import; - use Exporter 'import'; ::ok(\&import == \&Exporter::import, "imported the import routine"); -@EXPORT = qw( wibble ); +our @EXPORT = qw( wibble ); sub wibble {return "wobble"}; package Use::The::Import; @@ -238,8 +237,8 @@ package Exporter::for::Tied::_; -@ISA = 'Exporter'; -@EXPORT = 'foo'; +our @ISA = 'Exporter'; +our @EXPORT = 'foo'; package Tied::_; @@ -253,3 +252,8 @@ } } ::ok(1, 'import with tied $_'); + +# this should be loaded, but make sure +require Exporter::Heavy; +::ok(Exporter->VERSION eq Exporter::Heavy->VERSION, + 'Exporter and Exporter::Heavy have matching versions'); diff -Nru perl-5.32.1/dist/Exporter/t/warn.t perl-5.34.0/dist/Exporter/t/warn.t --- perl-5.32.1/dist/Exporter/t/warn.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Exporter/t/warn.t 2020-10-24 18:43:34.000000000 +0000 @@ -25,7 +25,8 @@ package Foo; Exporter->import("import"); -@EXPORT_OK = "bar"; +our @EXPORT_OK = qw/bar/; + package main; diff -Nru perl-5.32.1/dist/ExtUtils-CBuilder/Changes perl-5.34.0/dist/ExtUtils-CBuilder/Changes --- perl-5.32.1/dist/ExtUtils-CBuilder/Changes 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-CBuilder/Changes 2021-02-21 11:01:31.000000000 +0000 @@ -1,5 +1,19 @@ Revision history for Perl extension ExtUtils::CBuilder. +0.280236 - 2021-02-12 + + Fix: + + - Remove image-base generation on Win32/gcc and instead use GCC's built-in + `--enable-auto-image-base` linker option. + +0.280235 - 2020-11-01 + + Fix: + + - Fix compilation on darwin with XCode 12 (-Werror=implicit-function-declaration) + Thanks to DrHyde for the patch. + 0.280234 - 2020-01-21 Update: diff -Nru perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm --- perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm 2021-02-21 11:01:31.000000000 +0000 @@ -9,7 +9,7 @@ use IPC::Cmd qw(can_run); use File::Temp qw(tempfile); -our $VERSION = '0.280234'; # VERSION +our $VERSION = '0.280236'; # VERSION # More details about C/C++ compilers: # http://developers.sun.com/sunstudio/documentation/product/compiler.jsp diff -Nru perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm --- perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm 2021-02-21 11:01:31.000000000 +0000 @@ -5,7 +5,7 @@ use ExtUtils::CBuilder::Platform::Unix; use File::Spec; -our $VERSION = '0.280234'; # VERSION +our $VERSION = '0.280236'; # VERSION our @ISA = qw(ExtUtils::CBuilder::Platform::Unix); sub need_prelink { 1 } diff -Nru perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/android.pm perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/android.pm --- perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/android.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/android.pm 2021-02-21 11:01:31.000000000 +0000 @@ -6,7 +6,7 @@ use ExtUtils::CBuilder::Platform::Unix; use Config; -our $VERSION = '0.280234'; # VERSION +our $VERSION = '0.280236'; # VERSION our @ISA = qw(ExtUtils::CBuilder::Platform::Unix); # The Android linker will not recognize symbols from diff -Nru perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm --- perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm 2021-02-21 11:01:31.000000000 +0000 @@ -5,7 +5,7 @@ use File::Spec; use ExtUtils::CBuilder::Platform::Unix; -our $VERSION = '0.280234'; # VERSION +our $VERSION = '0.280236'; # VERSION our @ISA = qw(ExtUtils::CBuilder::Platform::Unix); # TODO: If a specific exe_file name is requested, if the exe created diff -Nru perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm --- perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm 2021-02-21 11:01:31.000000000 +0000 @@ -4,7 +4,7 @@ use strict; use ExtUtils::CBuilder::Platform::Unix; -our $VERSION = '0.280234'; # VERSION +our $VERSION = '0.280236'; # VERSION our @ISA = qw(ExtUtils::CBuilder::Platform::Unix); sub compile { @@ -15,6 +15,10 @@ # it's mistakenly in Config.pm as both. Make the correction here. local $cf->{ccflags} = $cf->{ccflags}; $cf->{ccflags} =~ s/-flat_namespace//; + + # XCode 12 makes this fatal, breaking tons of XS modules + $cf->{ccflags} .= ($cf->{ccflags} ? ' ' : '').'-Wno-error=implicit-function-declaration'; + $self->SUPER::compile(@_); } diff -Nru perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm --- perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm 2021-02-21 11:01:31.000000000 +0000 @@ -5,7 +5,7 @@ use ExtUtils::CBuilder::Platform::Unix; use File::Spec; -our $VERSION = '0.280234'; # VERSION +our $VERSION = '0.280236'; # VERSION our @ISA = qw(ExtUtils::CBuilder::Platform::Unix); sub link_executable { diff -Nru perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm --- perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm 2021-02-21 11:01:31.000000000 +0000 @@ -4,7 +4,7 @@ use strict; use ExtUtils::CBuilder::Platform::Unix; -our $VERSION = '0.280234'; # VERSION +our $VERSION = '0.280236'; # VERSION our @ISA = qw(ExtUtils::CBuilder::Platform::Unix); sub need_prelink { 1 } diff -Nru perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm --- perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm 2021-02-21 11:01:31.000000000 +0000 @@ -4,7 +4,7 @@ use strict; use ExtUtils::CBuilder::Base; -our $VERSION = '0.280234'; # VERSION +our $VERSION = '0.280236'; # VERSION our @ISA = qw(ExtUtils::CBuilder::Base); sub link_executable { diff -Nru perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm --- perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm 2021-02-21 11:01:31.000000000 +0000 @@ -4,7 +4,7 @@ use strict; use ExtUtils::CBuilder::Base; -our $VERSION = '0.280234'; # VERSION +our $VERSION = '0.280236'; # VERSION our @ISA = qw(ExtUtils::CBuilder::Base); use File::Spec::Functions qw(catfile catdir); diff -Nru perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm --- perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm 2021-02-21 11:01:31.000000000 +0000 @@ -1,6 +1,6 @@ package ExtUtils::CBuilder::Platform::Windows::BCC; -our $VERSION = '0.280234'; # VERSION +our $VERSION = '0.280236'; # VERSION use strict; use warnings; diff -Nru perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm --- perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm 2021-02-21 11:01:31.000000000 +0000 @@ -1,6 +1,6 @@ package ExtUtils::CBuilder::Platform::Windows::GCC; -our $VERSION = '0.280234'; # VERSION +our $VERSION = '0.280236'; # VERSION use warnings; use strict; @@ -40,15 +40,6 @@ unshift( @{$spec{other_ldflags}}, '-nostartfiles' ) if ( $spec{startup} && @{$spec{startup}} ); - # From ExtUtils::MM_Win32: - # - ## one thing for GCC/Mingw32: - ## we try to overcome non-relocateable-DLL problems by generating - ## a (hopefully unique) image-base from the dll's name - ## -- BKS, 10-19-1999 - File::Basename::basename( $spec{output} ) =~ /(....)(.{0,4})/; - $spec{image_base} = sprintf( "0x%x0000", unpack('n', $1 ^ $2) ); - %spec = $self->write_linker_script(%spec) if $spec{use_scripts}; @@ -72,7 +63,7 @@ @ld , '-o', $spec{output} , "-Wl,--base-file,$spec{base_file}" , - "-Wl,--image-base,$spec{image_base}" , + "-Wl,--enable-auto-image-base" , @{$spec{lddlflags}} , @{$spec{libpath}} , @{$spec{startup}} , @@ -93,7 +84,7 @@ push @cmds, [ grep {defined && length} ( @ld , '-o', $spec{output} , - "-Wl,--image-base,$spec{image_base}" , + "-Wl,--enable-auto-image-base" , @{$spec{lddlflags}} , @{$spec{libpath}} , @{$spec{startup}} , diff -Nru perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm --- perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm 2021-02-21 11:01:31.000000000 +0000 @@ -1,6 +1,6 @@ package ExtUtils::CBuilder::Platform::Windows::MSVC; -our $VERSION = '0.280234'; # VERSION +our $VERSION = '0.280236'; # VERSION use warnings; use strict; diff -Nru perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm --- perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm 2021-02-21 11:01:31.000000000 +0000 @@ -8,7 +8,7 @@ use ExtUtils::CBuilder::Base; use IO::File; -our $VERSION = '0.280234'; # VERSION +our $VERSION = '0.280236'; # VERSION our @ISA = qw(ExtUtils::CBuilder::Base); =begin comment diff -Nru perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm --- perl-5.32.1/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm 2021-02-21 11:01:31.000000000 +0000 @@ -7,7 +7,7 @@ use warnings; use strict; -our $VERSION = '0.280234'; # VERSION +our $VERSION = '0.280236'; # VERSION our @ISA; # We only use this once - don't waste a symbol table entry on it. diff -Nru perl-5.32.1/dist/ExtUtils-CBuilder/Makefile.PL perl-5.34.0/dist/ExtUtils-CBuilder/Makefile.PL --- perl-5.32.1/dist/ExtUtils-CBuilder/Makefile.PL 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-CBuilder/Makefile.PL 2020-11-18 22:09:15.000000000 +0000 @@ -1,4 +1,4 @@ -# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.012. +# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.015. use strict; use warnings; @@ -29,7 +29,7 @@ "TEST_REQUIRES" => { "Test::More" => "0.47" }, - "VERSION" => "0.280234", + "VERSION" => "0.280235", "test" => { "TESTS" => "t/*.t" } diff -Nru perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm --- perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm 2021-05-04 06:52:48.000000000 +0000 @@ -3,7 +3,7 @@ use warnings; use Symbol; -our $VERSION = '3.40'; +our $VERSION = '3.43'; =head1 NAME diff -Nru perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm --- perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm 2021-05-04 06:52:48.000000000 +0000 @@ -1,7 +1,7 @@ package ExtUtils::ParseXS::CountLines; use strict; -our $VERSION = '3.40'; +our $VERSION = '3.43'; our $SECTION_END_MARKER; diff -Nru perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Eval.pm perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Eval.pm --- perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Eval.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Eval.pm 2021-05-04 06:52:48.000000000 +0000 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '3.40'; +our $VERSION = '3.43'; =head1 NAME diff -Nru perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm --- perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm 2021-05-04 06:52:48.000000000 +0000 @@ -5,7 +5,7 @@ use File::Spec; use ExtUtils::ParseXS::Constants (); -our $VERSION = '3.40'; +our $VERSION = '3.43'; our (@ISA, @EXPORT_OK); @ISA = qw(Exporter); diff -Nru perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm --- perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm 2021-05-04 06:52:48.000000000 +0000 @@ -11,7 +11,7 @@ our $VERSION; BEGIN { - $VERSION = '3.40'; + $VERSION = '3.43'; require ExtUtils::ParseXS::Constants; ExtUtils::ParseXS::Constants->VERSION($VERSION); require ExtUtils::ParseXS::CountLines; ExtUtils::ParseXS::CountLines->VERSION($VERSION); require ExtUtils::ParseXS::Utilities; ExtUtils::ParseXS::Utilities->VERSION($VERSION); @@ -42,6 +42,7 @@ our @EXPORT_OK = qw( process_file report_error_count + errors ); ############################## @@ -911,7 +912,7 @@ #-Wall: if there is no $self->{Full_func_name} there are no xsubs in this .xs #so 'file' is unused print Q(<<"EOF") if $self->{Full_func_name}; -##if (PERL_REVISION == 5 && PERL_VERSION < 9) +##if PERL_VERSION_LE(5, 8, 999) /* PERL_VERSION_LT is 5.33+ */ # char* file = __FILE__; ##else # const char* file = __FILE__; @@ -954,7 +955,7 @@ print Q(<<"EOF") if ($self->{Overload}); # /* register the overloading (type 'A') magic */ -##if (PERL_REVISION == 5 && PERL_VERSION < 9) +##if PERL_VERSION_LE(5, 8, 999) /* PERL_VERSION_LT is 5.33+ */ # PL_amagic_generation++; ##endif # /* The magic for overload gets a GV* via gv_fetchmeth as */ @@ -1012,6 +1013,7 @@ return $Singleton->{errors}||0; } } +*errors = \&report_error_count; # Input: ($self, $_, @{ $self->{line} }) == unparsed input. # Output: ($_, @{ $self->{line} }) == (rest of line, following lines). @@ -1904,7 +1906,7 @@ my $inputmap = $typemaps->get_inputmap(xstype => $xstype); if (not defined $inputmap) { - $self->blurt("Error: No INPUT definition for type '$type', typekind '" . $type->xstype . "' found"); + $self->blurt("Error: No INPUT definition for type '$type', typekind '$xstype' found"); return; } diff -Nru perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm --- perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm 2020-12-18 09:58:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm 2021-05-04 06:52:48.000000000 +0000 @@ -2,7 +2,7 @@ use 5.006001; use strict; use warnings; -our $VERSION = '3.38'; +our $VERSION = '3.43'; use ExtUtils::Typemaps; diff -Nru perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm --- perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm 2020-12-18 09:58:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm 2021-05-04 06:52:48.000000000 +0000 @@ -2,7 +2,7 @@ use 5.006001; use strict; use warnings; -our $VERSION = '3.38'; +our $VERSION = '3.43'; =head1 NAME diff -Nru perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm --- perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm 2020-12-18 09:58:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm 2021-05-04 06:52:48.000000000 +0000 @@ -2,7 +2,7 @@ use 5.006001; use strict; use warnings; -our $VERSION = '3.38'; +our $VERSION = '3.43'; =head1 NAME diff -Nru perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm --- perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm 2020-12-18 09:58:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm 2021-05-04 06:52:48.000000000 +0000 @@ -4,7 +4,7 @@ use warnings; require ExtUtils::Typemaps; -our $VERSION = '3.38'; +our $VERSION = '3.43'; =head1 NAME diff -Nru perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm --- perl-5.32.1/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm 2020-12-18 09:58:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm 2021-05-04 06:52:48.000000000 +0000 @@ -2,7 +2,7 @@ use 5.006001; use strict; use warnings; -our $VERSION = '3.38'; +our $VERSION = '3.43'; require ExtUtils::ParseXS; require ExtUtils::ParseXS::Constants; diff -Nru perl-5.32.1/dist/ExtUtils-ParseXS/lib/perlxs.pod perl-5.34.0/dist/ExtUtils-ParseXS/lib/perlxs.pod --- perl-5.32.1/dist/ExtUtils-ParseXS/lib/perlxs.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-ParseXS/lib/perlxs.pod 2021-05-04 06:52:48.000000000 +0000 @@ -603,7 +603,7 @@ bool_t rpcb_gettime(host,timep) - char *host = (char *)SvPV_nolen($arg); + char *host = (char *)SvPVbyte_nolen($arg); time_t &timep = 0; OUTPUT: timep @@ -630,7 +630,7 @@ bool_t rpcb_gettime(host,timep) time_t &timep; /* \$v{timep}=@{[$v{timep}=$arg]} */ - char *host + SvOK($v{timep}) ? SvPV_nolen($arg) : NULL; + char *host + SvOK($v{timep}) ? SvPVbyte_nolen($arg) : NULL; OUTPUT: timep @@ -993,7 +993,7 @@ char *host = "localhost"; CODE: if( items > 1 ) - host = (char *)SvPV_nolen(ST(1)); + host = (char *)SvPVbyte_nolen(ST(1)); RETVAL = rpcb_gettime( host, &timep ); OUTPUT: timep @@ -1294,7 +1294,7 @@ char *host = "localhost"; CODE: if( items > 1 ) - host = (char *)SvPV_nolen(ST(1)); + host = (char *)SvPVbyte_nolen(ST(1)); RETVAL = rpcb_gettime( host, &timep ); OUTPUT: timep @@ -2103,7 +2103,8 @@ #include "perl.h" #include "XSUB.h" - #include + /* Note: On glibc 2.13 and earlier, this needs be */ + #include typedef struct netconfig Netconfig; @@ -2163,6 +2164,8 @@ print "time = $a\n"; print "netconf = $netconf\n"; +In Makefile.PL add -ltirpc and -I/usr/include/tirpc. + =head1 CAVEATS XS code has full access to system calls including C library functions. @@ -2273,7 +2276,7 @@ continues to use C, and the interpreter translates that into the per-thread functions. -All other locale-senstive functions automatically use the per-thread +All other locale-sensitive functions automatically use the per-thread locale, if that is turned on, and failing that, the global locale. Thus calls to C are ineffective on POSIX systems for the current thread if that thread is using a per-thread locale. If perl is compiled diff -Nru perl-5.32.1/dist/ExtUtils-ParseXS/lib/perlxstut.pod perl-5.34.0/dist/ExtUtils-ParseXS/lib/perlxstut.pod --- perl-5.32.1/dist/ExtUtils-ParseXS/lib/perlxstut.pod 2020-12-18 09:58:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-ParseXS/lib/perlxstut.pod 2021-05-04 06:52:48.000000000 +0000 @@ -115,14 +115,15 @@ The file Makefile.PL should look something like this: use ExtUtils::MakeMaker; + # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. WriteMakefile( - NAME => 'Mytest', - VERSION_FROM => 'Mytest.pm', # finds $VERSION - LIBS => [''], # e.g., '-lm' - DEFINE => '', # e.g., '-DHAVE_SOMETHING' - INC => '', # e.g., '-I/usr/include/other' + NAME => 'Mytest', + VERSION_FROM => 'Mytest.pm', # finds $VERSION + LIBS => [''], # e.g., '-lm' + DEFINE => '', # e.g., '-DHAVE_SOMETHING' + INC => '-I', # e.g., '-I. -I/usr/include/other' ); The file Mytest.pm should start with something like this: @@ -276,9 +277,9 @@ # so read its man page ( perldoc Test::More ) for help writing this # test script. - is(&Mytest::is_even(0), 1); - is(&Mytest::is_even(1), 0); - is(&Mytest::is_even(2), 1); + is( Mytest::is_even(0), 1 ); + is( Mytest::is_even(1), 0 ); + is( Mytest::is_even(2), 1 ); We will be calling the test script through the command "C". You should see output that looks something like this: @@ -390,16 +391,32 @@ Edit the Makefile.PL file so that the corresponding line looks like this: - 'LIBS' => ['-lm'], # e.g., '-lm' + LIBS => ['-lm'], # e.g., '-lm' Generate the Makefile and run make. Change the test number in Mytest.t to "9" and add the following tests: - $i = -1.5; &Mytest::round($i); is( $i, -2.0 ); - $i = -1.1; &Mytest::round($i); is( $i, -1.0 ); - $i = 0.0; &Mytest::round($i); is( $i, 0.0 ); - $i = 0.5; &Mytest::round($i); is( $i, 1.0 ); - $i = 1.2; &Mytest::round($i); is( $i, 1.0 ); + my $i; + + $i = -1.5; + Mytest::round($i); + is( $i, -2.0, 'Rounding -1.5 to -2.0' ); + + $i = -1.1; + Mytest::round($i); + is( $i, -1.0, 'Rounding -1.1 to -1.0' ); + + $i = 0.0; + Mytest::round($i); + is( $i, 0.0, 'Rounding 0.0 to 0.0' ); + + $i = 0.5; + Mytest::round($i); + is( $i, 1.0, 'Rounding 0.5 to 1.0' ); + + $i = 1.2; + Mytest::round($i); + is( $i, 1.0, 'Rounding 1.2 to 1.0' ); Running "C" should now print out that all nine tests are okay. @@ -407,7 +424,7 @@ scalar variable. You might be wondering if you can round a constant or literal. To see what happens, temporarily add the following line to Mytest.t: - &Mytest::round(3); + Mytest::round(3); Run "C" and notice that Perl dies with a fatal error. Perl won't let you change the value of constants! @@ -534,7 +551,7 @@ Also create a file mylib.c that looks like this: #include - #include "./mylib.h" + #include "mylib.h" double foo(int a, long b, const char *c) @@ -547,9 +564,9 @@ use ExtUtils::MakeMaker; $Verbose = 1; WriteMakefile( - NAME => 'Mytest2::mylib', - SKIP => [qw(all static static_lib dynamic dynamic_lib)], - clean => {'FILES' => 'libmylib$(LIB_EXT)'}, + NAME => 'Mytest2::mylib', + SKIP => [qw(all static static_lib dynamic dynamic_lib)], + clean => {'FILES' => 'libmylib$(LIB_EXT)'}, ); @@ -576,7 +593,7 @@ We will now create the main top-level Mytest2 files. Change to the directory above Mytest2 and run the following command: - % h2xs -O -n Mytest2 ./Mytest2/mylib/mylib.h + % h2xs -O -n Mytest2 Mytest2/mylib/mylib.h This will print out a warning about overwriting Mytest2, but that's okay. Our files are stored in Mytest2/mylib, and will be untouched. @@ -587,12 +604,12 @@ the WriteMakefile call so that it looks like this: WriteMakefile( - 'NAME' => 'Mytest2', - 'VERSION_FROM' => 'Mytest2.pm', # finds $VERSION - 'LIBS' => [''], # e.g., '-lm' - 'DEFINE' => '', # e.g., '-DHAVE_SOMETHING' - 'INC' => '', # e.g., '-I/usr/include/other' - 'MYEXTLIB' => 'mylib/libmylib$(LIB_EXT)', + NAME => 'Mytest2', + VERSION_FROM => 'Mytest2.pm', # finds $VERSION + LIBS => [''], # e.g., '-lm' + DEFINE => '', # e.g., '-DHAVE_SOMETHING' + INC => '', # e.g., '-I/usr/include/other' + MYEXTLIB => 'mylib/libmylib$(LIB_EXT)', ); and then at the end add a subroutine (which will override the pre-existing @@ -606,9 +623,7 @@ '; } -Let's also fix the MANIFEST file so that it accurately reflects the contents -of our extension. The single line that says "mylib" should be replaced by -the following three lines: +Let's also fix the MANIFEST file by appending the following three lines: mylib/Makefile.PL mylib/mylib.c @@ -642,12 +657,12 @@ Makefile in the mylib directory. Run make and watch that it does cd into the mylib directory and run make in there as well. -Now edit the Mytest2.t script and change the number of tests to "4", +Now edit the Mytest2.t script and change the number of tests to "5", and add the following lines to the end of the script: - is( &Mytest2::foo(1, 2, "Hello, world!"), 7 ); - is( &Mytest2::foo(1, 2, "0.0"), 7 ); - ok( abs(&Mytest2::foo(0, 0, "-3.4") - 0.6) <= 0.01 ); + is( Mytest2::foo( 1, 2, "Hello, world!" ), 7 ); + is( Mytest2::foo( 1, 2, "0.0" ), 7 ); + ok( abs( Mytest2::foo( 0, 0, "-3.4" ) - 0.6 ) <= 0.01 ); (When dealing with floating-point comparisons, it is best to not check for equality, but rather that the difference between the expected and actual @@ -1017,9 +1032,12 @@ Also add the following code segment to Mytest.t while incrementing the "9" tests to "11": - @a = &Mytest::statfs("/blech"); + my @a; + + @a = Mytest::statfs("/blech"); ok( scalar(@a) == 1 && $a[0] == 2 ); - @a = &Mytest::statfs("/"); + + @a = Mytest::statfs("/"); is( scalar(@a), 7 ); =head2 New Things in this Example @@ -1125,7 +1143,8 @@ for (n = 0; n <= numpaths; n++) { HV * rh; STRLEN l; - char * fn = SvPV(*av_fetch((AV *)SvRV(paths), n, 0), l); + SV * path = *av_fetch((AV *)SvRV(paths), n, 0); + char * fn = SvPVbyte(path, l); i = statfs(fn, &buf); if (i != 0) { @@ -1152,7 +1171,7 @@ And add the following code to Mytest.t, while incrementing the "11" tests to "13": - $results = Mytest::multi_statfs([ '/', '/blech' ]); + my $results = Mytest::multi_statfs([ '/', '/blech' ]); ok( ref $results->[0] ); ok( ! ref $results->[1] ); @@ -1246,21 +1265,24 @@ Suppose that for some strange reason we need a wrapper around the standard C library function C. This is all we need: - #define PERLIO_NOT_STDIO 0 - #define PERL_NO_GET_CONTEXT - #include "EXTERN.h" - #include "perl.h" - #include "XSUB.h" - - #include - - int - fputs(s, stream) - char * s - FILE * stream + #define PERLIO_NOT_STDIO 0 /* For co-existence with stdio only */ + #define PERL_NO_GET_CONTEXT /* This is more efficient */ + #include "EXTERN.h" + #include "perl.h" + #include "XSUB.h" + + #include + + int + fputs(s, stream) + char * s + FILE * stream The real work is done in the standard typemap. +For more details, see +L. + B you lose all the fine stuff done by the perlio layers. This calls the stdio function C, which knows nothing about them. @@ -1382,7 +1404,7 @@ =head1 See also For more information, consult L, L, L, L, -and L. +L, and L =head1 Author @@ -1396,6 +1418,8 @@ Changes for h2xs as of Perl 5.8.x by Renee Baecker +This document is now maintained as part of Perl itself. + =head2 Last Changed -2012-01-20 +2020-10-05 diff -Nru perl-5.32.1/dist/ExtUtils-ParseXS/t/001-basic.t perl-5.34.0/dist/ExtUtils-ParseXS/t/001-basic.t --- perl-5.32.1/dist/ExtUtils-ParseXS/t/001-basic.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-ParseXS/t/001-basic.t 2021-05-04 06:52:48.000000000 +0000 @@ -1,10 +1,12 @@ #!/usr/bin/perl use strict; -use Test::More tests => 17; +use Test::More tests => 18; use Config; use DynaLoader; use ExtUtils::CBuilder; +use lib (-d 't' ? File::Spec->catdir(qw(t lib)) : 'lib'); +use PrimitiveCapture; my ($source_file, $obj_file, $lib_file); @@ -15,13 +17,14 @@ use Carp; $SIG{__WARN__} = \&Carp::cluck; -# Some trickery for Android. If we leave @INC as-is, it'll have '.' in it. -# Later on, the 'require XSTest' end up in DynaLoader looking for -# ./PL_XSTest.so, but unless our current directory happens to be in -# LD_LIBRARY_PATH, Android's linker will never find the file, and the test -# will fail. Instead, if we have all absolute paths, it'll just work. -@INC = map { File::Spec->rel2abs($_) } @INC - if $^O =~ /android/; +# The linker on some platforms doesn't like loading libraries using relative +# paths. Android won't find relative paths, and system perl on macOS will +# refuse to load relative paths. The path that DynaLoader uses to load the +# .so or .bundle file is based on the @INC path that the library is loaded +# from. The XSTest module we're using for testing is in the current directory, +# so we need an absolute path in @INC rather than '.'. Just convert all of the +# paths to absolute for simplicity. +@INC = map { File::Spec->rel2abs($_) } @INC; ######################### @@ -177,6 +180,16 @@ } ##################################################################### +{ # third block: broken typemap +my $pxs = ExtUtils::ParseXS->new; +tie *FH, 'Foo'; +my $stderr = PrimitiveCapture::capture_stderr(sub { + $pxs->process_file(filename => 'XSBroken.xs', output => \*FH); +}); +like $stderr, '/No INPUT definition/', "Exercise typemap error"; +} +##################################################################### + sub Foo::TIEHANDLE { bless {}, 'Foo' } sub Foo::PRINT { shift->{buf} .= join '', @_ } sub Foo::content { shift->{buf} } diff -Nru perl-5.32.1/dist/ExtUtils-ParseXS/t/002-more.t perl-5.34.0/dist/ExtUtils-ParseXS/t/002-more.t --- perl-5.32.1/dist/ExtUtils-ParseXS/t/002-more.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-ParseXS/t/002-more.t 2020-10-04 22:17:12.000000000 +0000 @@ -22,8 +22,7 @@ use Carp; $SIG{__WARN__} = \&Carp::cluck; # See the comments about this in 001-basics.t -@INC = map { File::Spec->rel2abs($_) } @INC - if $^O =~ /android/; +@INC = map { File::Spec->rel2abs($_) } @INC; ######################### diff -Nru perl-5.32.1/dist/ExtUtils-ParseXS/t/003-usage.t perl-5.34.0/dist/ExtUtils-ParseXS/t/003-usage.t --- perl-5.32.1/dist/ExtUtils-ParseXS/t/003-usage.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-ParseXS/t/003-usage.t 2020-10-04 22:17:12.000000000 +0000 @@ -23,8 +23,7 @@ use Carp; $SIG{__WARN__} = \&Carp::cluck; # See the comments about this in 001-basics.t -@INC = map { File::Spec->rel2abs($_) } @INC - if $^O =~ /android/; +@INC = map { File::Spec->rel2abs($_) } @INC; ######################### diff -Nru perl-5.32.1/dist/ExtUtils-ParseXS/t/XSBroken.xs perl-5.34.0/dist/ExtUtils-ParseXS/t/XSBroken.xs --- perl-5.32.1/dist/ExtUtils-ParseXS/t/XSBroken.xs 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/ExtUtils-ParseXS/t/XSBroken.xs 2021-05-04 06:52:48.000000000 +0000 @@ -0,0 +1,26 @@ +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +typedef IV MyType3; + +MODULE = XSBroken PACKAGE = XSBroken + +PROTOTYPES: ENABLE + + +TYPEMAP: <<'END' +MyType3 T_BAAR + +OUTPUT +T_BAAR + sv_setiv($arg, (IV)$var); +END + +MyType3 +typemaptest3(foo) + MyType3 foo + CODE: + RETVAL = foo; + OUTPUT: + RETVAL diff -Nru perl-5.32.1/dist/FindBin/lib/FindBin.pm perl-5.34.0/dist/FindBin/lib/FindBin.pm --- perl-5.32.1/dist/FindBin/lib/FindBin.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/FindBin/lib/FindBin.pm 2020-10-24 18:43:34.000000000 +0000 @@ -77,19 +77,21 @@ =cut package FindBin; +use strict; +use warnings; + use Carp; -require 5.000; require Exporter; use Cwd qw(getcwd cwd abs_path); use File::Basename; use File::Spec; -@EXPORT_OK = qw($Bin $Script $RealBin $RealScript $Dir $RealDir); -%EXPORT_TAGS = (ALL => [qw($Bin $Script $RealBin $RealScript $Dir $RealDir)]); -@ISA = qw(Exporter); - -$VERSION = "1.51"; +our ($Bin, $Script, $RealBin, $RealScript, $Dir, $RealDir); +our @EXPORT_OK = qw($Bin $Script $RealBin $RealScript $Dir $RealDir); +our %EXPORT_TAGS = (ALL => [qw($Bin $Script $RealBin $RealScript $Dir $RealDir)]); +our @ISA = qw(Exporter); +our $VERSION = "1.52"; # needed for VMS-specific filename translation if( $^O eq 'VMS' ) { diff -Nru perl-5.32.1/dist/FindBin/t/FindBin.t perl-5.34.0/dist/FindBin/t/FindBin.t --- perl-5.32.1/dist/FindBin/t/FindBin.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/FindBin/t/FindBin.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ #!./perl +use strict; +use warnings; + print "1..2\n"; use FindBin qw($Bin); diff -Nru perl-5.32.1/dist/I18N-LangTags/lib/I18N/LangTags.pm perl-5.34.0/dist/I18N-LangTags/lib/I18N/LangTags.pm --- perl-5.32.1/dist/I18N-LangTags/lib/I18N/LangTags.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/I18N-LangTags/lib/I18N/LangTags.pm 2020-10-24 18:43:34.000000000 +0000 @@ -18,7 +18,7 @@ ); our %EXPORT_TAGS = ('ALL' => \@EXPORT_OK); -our $VERSION = "0.44"; +our $VERSION = "0.45"; our %Panic; sub uniq { my %seen; return grep(!($seen{$_}++), @_); } # a util function @@ -677,7 +677,7 @@ # And the panic languages for English is, of course, nil! # My guesses at Slavic intelligibility: - ([qw(ru be uk)]) x 2, # Russian, Belarusian, Ukranian + ([qw(ru be uk)]) x 2, # Russian, Belarusian, Ukrainian ([qw(sr hr bs)]) x 2, # Serbian, Croatian, Bosnian 'cs' => 'sk', 'sk' => 'cs', # Czech + Slovak diff -Nru perl-5.32.1/dist/if/if.pm perl-5.34.0/dist/if/if.pm --- perl-5.32.1/dist/if/if.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/if/if.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,6 +1,6 @@ package if; - -$VERSION = '0.0608'; +use strict; +our $VERSION = '0.0609'; sub work { my $method = shift() ? 'import' : 'unimport'; diff -Nru perl-5.32.1/dist/IO/ChangeLog perl-5.34.0/dist/IO/ChangeLog --- perl-5.32.1/dist/IO/ChangeLog 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/ChangeLog 2021-01-20 23:04:44.000000000 +0000 @@ -1,3 +1,20 @@ +IO 1.45 + * Put IO::Socket constructor error messages in $IO::Socket::errstr as well + as $@, to encourage better practices + +IO 1.44 + * IO::Handle::error() now checks both the input and output stream + for error. This is an issue for sockets and character devices. GH #6799 + * IO::Handle::clearerr() now clears the error on both input and + output streams. + +IO 1.43 + * only cache the protocol for sockets when one is supplied, + otherwise protocol could return an incorrect protocol. This means + that on platforms that don't support SO_PROTOCOL (or don't support + it for some socket types) protocol() can now return undef. + + IO 1.42 - Jan 20 2020 - Todd Rinaldo * Point IO support to perl/perl5 not dual-life/IO diff -Nru perl-5.32.1/dist/IO/IO.pm perl-5.34.0/dist/IO/IO.pm --- perl-5.32.1/dist/IO/IO.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/IO.pm 2021-02-21 11:01:31.000000000 +0000 @@ -7,7 +7,7 @@ use strict; use warnings; -our $VERSION = "1.43"; +our $VERSION = "1.46"; XSLoader::load 'IO', $VERSION; sub import { @@ -53,7 +53,7 @@ Some other IO modules don't belong to the perl core but can be loaded as well if they have been installed from CPAN. You can discover which -ones exist by searching for "^IO::" on L. +ones exist with this query: L. For more information on any of these modules, please see its respective documentation. diff -Nru perl-5.32.1/dist/IO/IO.xs perl-5.34.0/dist/IO/IO.xs --- perl-5.32.1/dist/IO/IO.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/IO.xs 2020-10-04 22:17:12.000000000 +0000 @@ -194,7 +194,7 @@ CODE: if (handle) { #ifdef PerlIO -#if PERL_VERSION < 8 +#if PERL_VERSION_LT(5,8,0) Fpos_t pos; ST(0) = sv_newmortal(); if (PerlIO_getpos(handle, &pos) != 0) { @@ -214,7 +214,7 @@ if (fgetpos(handle, &pos)) { ST(0) = &PL_sv_undef; } else { -# if PERL_VERSION >= 11 +# if PERL_VERSION_GE(5,11,0) ST(0) = newSVpvn_flags((char*)&pos, sizeof(Fpos_t), SVs_TEMP); # else ST(0) = sv_2mortal(newSVpvn((char*)&pos, sizeof(Fpos_t))); @@ -234,7 +234,7 @@ CODE: if (handle) { #ifdef PerlIO -#if PERL_VERSION < 8 +#if PERL_VERSION_LT(5,8,0) char *p; STRLEN len; if (SvOK(pos) && (p = SvPV(pos,len)) && len == sizeof(Fpos_t)) { @@ -389,13 +389,17 @@ int ferror(handle) - InputStream handle + SV * handle + PREINIT: + IO *io = sv_2io(handle); + InputStream in = IoIFP(io); + OutputStream out = IoOFP(io); CODE: - if (handle) + if (in) #ifdef PerlIO - RETVAL = PerlIO_error(handle); + RETVAL = PerlIO_error(in) || (out && in != out && PerlIO_error(out)); #else - RETVAL = ferror(handle); + RETVAL = ferror(in) || (out && in != out && ferror(out)); #endif else { RETVAL = -1; @@ -406,13 +410,21 @@ int clearerr(handle) - InputStream handle + SV * handle + PREINIT: + IO *io = sv_2io(handle); + InputStream in = IoIFP(io); + OutputStream out = IoOFP(io); CODE: if (handle) { #ifdef PerlIO - PerlIO_clearerr(handle); -#else - clearerr(handle); + PerlIO_clearerr(in); + if (in != out) + PerlIO_clearerr(out); +#else + clearerr(in); + if (in != out) + clearerr(out); #endif RETVAL = 0; } diff -Nru perl-5.32.1/dist/IO/lib/IO/Dir.pm perl-5.34.0/dist/IO/lib/IO/Dir.pm --- perl-5.32.1/dist/IO/lib/IO/Dir.pm 2020-12-18 09:58:37.000000000 +0000 +++ perl-5.34.0/dist/IO/lib/IO/Dir.pm 2021-02-21 11:01:31.000000000 +0000 @@ -18,7 +18,7 @@ use File::Spec; our @ISA = qw(Tie::Hash Exporter); -our $VERSION = "1.41"; +our $VERSION = "1.46"; our @EXPORT_OK = qw(DIR_UNLINK); diff -Nru perl-5.32.1/dist/IO/lib/IO/File.pm perl-5.34.0/dist/IO/lib/IO/File.pm --- perl-5.32.1/dist/IO/lib/IO/File.pm 2020-12-18 09:58:37.000000000 +0000 +++ perl-5.34.0/dist/IO/lib/IO/File.pm 2021-02-21 11:01:31.000000000 +0000 @@ -135,7 +135,7 @@ our @ISA = qw(IO::Handle IO::Seekable Exporter); -our $VERSION = "1.41"; +our $VERSION = "1.46"; our @EXPORT = @IO::Seekable::EXPORT; diff -Nru perl-5.32.1/dist/IO/lib/IO/Handle.pm perl-5.34.0/dist/IO/lib/IO/Handle.pm --- perl-5.32.1/dist/IO/lib/IO/Handle.pm 2020-12-18 09:58:37.000000000 +0000 +++ perl-5.34.0/dist/IO/lib/IO/Handle.pm 2021-02-21 11:01:31.000000000 +0000 @@ -270,7 +270,7 @@ require Exporter; our @ISA = qw(Exporter); -our $VERSION = "1.42"; +our $VERSION = "1.46"; our @EXPORT_OK = qw( autoflush diff -Nru perl-5.32.1/dist/IO/lib/IO/Pipe.pm perl-5.34.0/dist/IO/lib/IO/Pipe.pm --- perl-5.32.1/dist/IO/lib/IO/Pipe.pm 2020-12-18 09:58:37.000000000 +0000 +++ perl-5.34.0/dist/IO/lib/IO/Pipe.pm 2021-02-21 11:01:31.000000000 +0000 @@ -13,7 +13,7 @@ use Carp; use Symbol; -our $VERSION = "1.41"; +our $VERSION = "1.46"; sub new { my $type = shift; diff -Nru perl-5.32.1/dist/IO/lib/IO/Poll.pm perl-5.34.0/dist/IO/lib/IO/Poll.pm --- perl-5.32.1/dist/IO/lib/IO/Poll.pm 2020-12-18 09:58:37.000000000 +0000 +++ perl-5.34.0/dist/IO/lib/IO/Poll.pm 2021-02-21 11:01:31.000000000 +0000 @@ -12,7 +12,7 @@ use Exporter (); our @ISA = qw(Exporter); -our $VERSION = "1.41"; +our $VERSION = "1.46"; our @EXPORT = qw( POLLIN POLLOUT diff -Nru perl-5.32.1/dist/IO/lib/IO/Seekable.pm perl-5.34.0/dist/IO/lib/IO/Seekable.pm --- perl-5.32.1/dist/IO/lib/IO/Seekable.pm 2020-12-18 09:58:37.000000000 +0000 +++ perl-5.34.0/dist/IO/lib/IO/Seekable.pm 2021-02-21 11:01:31.000000000 +0000 @@ -106,7 +106,7 @@ our @EXPORT = qw(SEEK_SET SEEK_CUR SEEK_END); our @ISA = qw(Exporter); -our $VERSION = "1.41"; +our $VERSION = "1.46"; sub seek { @_ == 3 or croak 'usage: $io->seek(POS, WHENCE)'; diff -Nru perl-5.32.1/dist/IO/lib/IO/Select.pm perl-5.34.0/dist/IO/lib/IO/Select.pm --- perl-5.32.1/dist/IO/lib/IO/Select.pm 2020-12-18 09:58:37.000000000 +0000 +++ perl-5.34.0/dist/IO/lib/IO/Select.pm 2021-02-21 11:01:31.000000000 +0000 @@ -10,7 +10,7 @@ use warnings::register; require Exporter; -our $VERSION = "1.42"; +our $VERSION = "1.46"; our @ISA = qw(Exporter); # This is only so we can do version checking diff -Nru perl-5.32.1/dist/IO/lib/IO/Socket/INET.pm perl-5.34.0/dist/IO/lib/IO/Socket/INET.pm --- perl-5.32.1/dist/IO/lib/IO/Socket/INET.pm 2020-12-18 09:58:37.000000000 +0000 +++ perl-5.34.0/dist/IO/lib/IO/Socket/INET.pm 2021-02-21 11:01:31.000000000 +0000 @@ -14,7 +14,7 @@ use Errno; our @ISA = qw(IO::Socket); -our $VERSION = "1.41"; +our $VERSION = "1.46"; my $EINVAL = exists(&Errno::EINVAL) ? Errno::EINVAL() : 1; @@ -79,7 +79,7 @@ if(defined $proto && $proto =~ /\D/) { my $num = _get_proto_number($proto); unless (defined $num) { - $@ = "Bad protocol '$proto'"; + $IO::Socket::errstr = $@ = "Bad protocol '$proto'"; return; } $proto = $num; @@ -94,7 +94,7 @@ $port = $serv[2] || $defport || $pnum; unless (defined $port) { - $@ = "Bad service '$origport'"; + $IO::Socket::errstr = $@ = "Bad service '$origport'"; return; } @@ -113,7 +113,7 @@ { local($!); my $title = ref($sock).": "; - $@ = join("", $_[0] =~ /^$title/ ? "" : $title, @_); + $IO::Socket::errstr = $@ = join("", $_[0] =~ /^$title/ ? "" : $title, @_); $sock->close() if(defined fileno($sock)); } @@ -404,14 +404,19 @@ Proto => udp, LocalAddr => 'localhost', Broadcast => 1 ) - or die "Can't bind : $@\n"; + or die "Can't bind : $IO::Socket::errstr\n"; -B +If the constructor fails it will return C and set the +C<$IO::Socket::errstr> package variable to contain an error message. -As of VERSION 1.18 all IO::Socket objects have autoflush turned on -by default. This was not the case with earlier releases. + $sock = IO::Socket::INET->new(...) + or die "Cannot create socket - $IO::Socket::errstr\n"; -B +For legacy reasons the error message is also set into the global C<$@> +variable, and you may still find older code which looks here instead. + + $sock = IO::Socket::INET->new(...) + or die "Cannot create socket - $@\n"; =back diff -Nru perl-5.32.1/dist/IO/lib/IO/Socket/UNIX.pm perl-5.34.0/dist/IO/lib/IO/Socket/UNIX.pm --- perl-5.32.1/dist/IO/lib/IO/Socket/UNIX.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/lib/IO/Socket/UNIX.pm 2021-02-21 11:01:31.000000000 +0000 @@ -11,7 +11,7 @@ use Carp; our @ISA = qw(IO::Socket); -our $VERSION = "1.41"; +our $VERSION = "1.46"; IO::Socket::UNIX->register_domain( AF_UNIX ); @@ -30,6 +30,10 @@ $sock->socket(AF_UNIX, $type, 0) or return undef; + if(exists $arg->{Blocking}) { + $sock->blocking($arg->{Blocking}) or + return undef; + } if(exists $arg->{Local}) { my $addr = sockaddr_un($arg->{Local}); $sock->bind($addr) or @@ -123,6 +127,18 @@ If the C argument is given, but false, the queue size will be set to 5. +If the constructor fails it will return C and set the +C<$IO::Socket::errstr> package variable to contain an error message. + + $sock = IO::Socket::UNIX->new(...) + or die "Cannot create socket - $IO::Socket::errstr\n"; + +For legacy reasons the error message is also set into the global C<$@> +variable, and you may still find older code which looks here instead. + + $sock = IO::Socket::UNIX->new(...) + or die "Cannot create socket - $@\n"; + =back =head1 METHODS diff -Nru perl-5.32.1/dist/IO/lib/IO/Socket.pm perl-5.34.0/dist/IO/lib/IO/Socket.pm --- perl-5.32.1/dist/IO/lib/IO/Socket.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/lib/IO/Socket.pm 2021-02-21 11:01:31.000000000 +0000 @@ -23,10 +23,12 @@ our @ISA = qw(IO::Handle); -our $VERSION = "1.43"; +our $VERSION = "1.46"; our @EXPORT_OK = qw(sockatmark); +our $errstr; + sub import { my $pkg = shift; if (@_ && $_[0] eq 'sockatmark') { # not very extensible but for now, fast @@ -120,7 +122,7 @@ if (defined $timeout && ($!{EINPROGRESS} || $!{EWOULDBLOCK})) { require IO::Select; - my $sel = new IO::Select $sock; + my $sel = IO::Select->new( $sock ); undef $!; my($r,$w,$e) = IO::Select::select(undef,$sel,$sel,$timeout); @@ -132,11 +134,11 @@ # set we now emulate the behavior in Linux # - Karthik Rajagopalan $err = $sock->getsockopt(SOL_SOCKET,SO_ERROR); - $@ = "connect: $err"; + $errstr = $@ = "connect: $err"; } elsif(!@$w[0]) { $err = $! || (exists &Errno::ETIMEDOUT ? &Errno::ETIMEDOUT : 1); - $@ = "connect: timeout"; + $errstr = $@ = "connect: timeout"; } elsif (!connect($sock,$addr) && not ($!{EISCONN} || ($^O eq 'MSWin32' && @@ -147,12 +149,12 @@ # Windows sets errno to WSAEINVAL (10022) (pre-5.19.4) or # EINVAL (22) (5.19.4 onwards). $err = $!; - $@ = "connect: $!"; + $errstr = $@ = "connect: $!"; } } elsif ($blocking || !($!{EINPROGRESS} || $!{EWOULDBLOCK})) { $err = $!; - $@ = "connect: $!"; + $errstr = $@ = "connect: $!"; } } @@ -243,10 +245,10 @@ if(defined $timeout) { require IO::Select; - my $sel = new IO::Select $sock; + my $sel = IO::Select->new( $sock ); unless ($sel->can_read($timeout)) { - $@ = 'accept: timeout'; + $errstr = $@ = 'accept: timeout'; $! = (exists &Errno::ETIMEDOUT ? &Errno::ETIMEDOUT : 1); return; } @@ -530,6 +532,18 @@ proper subclass for the domain family is registered. All other arguments will be passed to the C method of the package for that domain. +If the constructor fails it will return C and set the C<$errstr> package +variable to contain an error message. + + $sock = IO::Socket->new(...) + or die "Cannot create socket - $IO::Socket::errstr\n"; + +For legacy reasons the error message is also set into the global C<$@> +variable, and you may still find older code which looks here instead. + + $sock = IO::Socket->new(...) + or die "Cannot create socket - $@\n"; + =head1 METHODS C inherits all methods from L and implements the @@ -832,7 +846,7 @@ LocalPort => 3333, ReusePort => 1, Listen => 5, - ) || die "Can't open socket: $@"; + ) || die "Can't open socket: $IO::Socket::errstr"; say "Waiting on 3333"; while (1) { @@ -873,7 +887,7 @@ proto => 'tcp', PeerPort => 3333, PeerHost => '0.0.0.0', - ) || die "Can't open socket: $@"; + ) || die "Can't open socket: $IO::Socket::errstr"; say "Sending Hello World!"; my $size = $client->send("Hello World!"); diff -Nru perl-5.32.1/dist/IO/Makefile.PL perl-5.34.0/dist/IO/Makefile.PL --- perl-5.32.1/dist/IO/Makefile.PL 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/Makefile.PL 2020-10-04 22:17:12.000000000 +0000 @@ -11,7 +11,7 @@ unless ( $PERL_CORE or exists $Config{'i_poll'} ) { my @inc = split( /\s+/, join( " ", $Config{'usrinc'}, $Config{'incpth'}, $Config{'locincpth'} ) ); - foreach $path (@inc) { + foreach my $path (@inc) { if ( -f $path . "/poll.h" ) { $define .= "-DI_POLL "; last; diff -Nru perl-5.32.1/dist/IO/poll.c perl-5.34.0/dist/IO/poll.c --- perl-5.32.1/dist/IO/poll.c 2020-12-18 09:58:37.000000000 +0000 +++ perl-5.34.0/dist/IO/poll.c 2021-01-20 23:04:44.000000000 +0000 @@ -61,74 +61,74 @@ FD_ZERO(&efd); for(i = 0 ; i < (int)nfds ; i++) { - int events = fds[i].events; - int fd = fds[i].fd; + int events = fds[i].events; + int fd = fds[i].fd; - fds[i].revents = 0; + fds[i].revents = 0; - if(fd < 0 || FD_ISSET(fd, &ifd)) - continue; + if(fd < 0 || FD_ISSET(fd, &ifd)) + continue; - if(fd > n) - n = fd; + if(fd > n) + n = fd; - if(events & POLL_CAN_READ) - FD_SET(fd, &rfd); + if(events & POLL_CAN_READ) + FD_SET(fd, &rfd); - if(events & POLL_CAN_WRITE) - FD_SET(fd, &wfd); + if(events & POLL_CAN_WRITE) + FD_SET(fd, &wfd); - if(events & POLL_HAS_EXCP) - FD_SET(fd, &efd); + if(events & POLL_HAS_EXCP) + FD_SET(fd, &efd); } if(timeout >= 0) { - timebuf.tv_sec = timeout / 1000; - timebuf.tv_usec = (timeout % 1000) * 1000; - tbuf = &timebuf; + timebuf.tv_sec = timeout / 1000; + timebuf.tv_usec = (timeout % 1000) * 1000; + tbuf = &timebuf; } err = select(n+1,&rfd,&wfd,&efd,tbuf); if(err < 0) { #ifdef HAS_FSTAT - if(errno == EBADF) { - for(i = 0 ; i < nfds ; i++) { - struct stat buf; - if((fstat(fds[i].fd,&buf) < 0) && (errno == EBADF)) { - FD_SET(fds[i].fd, &ifd); - goto again; - } - } - } + if(errno == EBADF) { + for(i = 0 ; i < nfds ; i++) { + struct stat buf; + if((fstat(fds[i].fd,&buf) < 0) && (errno == EBADF)) { + FD_SET(fds[i].fd, &ifd); + goto again; + } + } + } #endif /* HAS_FSTAT */ - return err; + return err; } count = 0; for(i = 0 ; i < (int)nfds ; i++) { - int revents = (fds[i].events & POLL_EVENTS_MASK); - int fd = fds[i].fd; + int revents = (fds[i].events & POLL_EVENTS_MASK); + int fd = fds[i].fd; - if(fd < 0) - continue; + if(fd < 0) + continue; - if(FD_ISSET(fd, &ifd)) - revents = POLLNVAL; - else { - if(!FD_ISSET(fd, &rfd)) - revents &= ~POLL_CAN_READ; - - if(!FD_ISSET(fd, &wfd)) - revents &= ~POLL_CAN_WRITE; - - if(!FD_ISSET(fd, &efd)) - revents &= ~POLL_HAS_EXCP; - } + if(FD_ISSET(fd, &ifd)) + revents = POLLNVAL; + else { + if(!FD_ISSET(fd, &rfd)) + revents &= ~POLL_CAN_READ; + + if(!FD_ISSET(fd, &wfd)) + revents &= ~POLL_CAN_WRITE; + + if(!FD_ISSET(fd, &efd)) + revents &= ~POLL_HAS_EXCP; + } - if((fds[i].revents = revents) != 0) - count++; + if((fds[i].revents = revents) != 0) + count++; } return count; diff -Nru perl-5.32.1/dist/IO/t/cachepropagate-unix.t perl-5.34.0/dist/IO/t/cachepropagate-unix.t --- perl-5.32.1/dist/IO/t/cachepropagate-unix.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/t/cachepropagate-unix.t 2020-10-04 22:17:12.000000000 +0000 @@ -50,7 +50,7 @@ # This is a TODO instead of a skip so if these ever implement SO_PROTOCOL # we'll be notified about the passing TODO so the test can be updated. local $TODO = "$^O doesn't support SO_PROTOCOL on AF_UNIX" - if $^O =~ /^(netbsd|darwin|cygwin|hpux|solaris|dragonfly|os390)$/; + if $^O =~ /^(netbsd|darwin|cygwin|hpux|solaris|dragonfly|os390|gnu)$/; ok(defined($p), 'protocol defined'); } my $d = $listener->sockdomain(); @@ -105,7 +105,7 @@ { # see comment above local $TODO = "$^O doesn't support SO_PROTOCOL on AF_UNIX" - if $^O =~ /^(netbsd|darwin|cygwin|hpux|solaris|dragonfly|os390)$/; + if $^O =~ /^(netbsd|darwin|cygwin|hpux|solaris|dragonfly|os390|gnu)$/; ok(defined($p), 'protocol defined'); } $d = $listener->sockdomain(); diff -Nru perl-5.32.1/dist/IO/t/io_const.t perl-5.34.0/dist/IO/t/io_const.t --- perl-5.32.1/dist/IO/t/io_const.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/t/io_const.t 2020-10-04 22:17:12.000000000 +0000 @@ -14,6 +14,7 @@ print "1..6\n"; my $i = 1; foreach (qw(SEEK_SET SEEK_CUR SEEK_END _IOFBF _IOLBF _IONBF)) { + no strict 'refs'; my $d1 = defined(&{"IO::Handle::" . $_}) ? 1 : 0; my $v1 = $d1 ? &{"IO::Handle::" . $_}() : undef; my $v2 = IO::Handle::constant($_); diff -Nru perl-5.32.1/dist/IO/t/io_dir.t perl-5.34.0/dist/IO/t/io_dir.t --- perl-5.32.1/dist/IO/t/io_dir.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/t/io_dir.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,11 @@ #!./perl +use strict; +use File::Temp qw( tempdir ); +use Cwd; + +no strict 'subs'; + BEGIN { require($ENV{PERL_CORE} ? "../../t/test.pl" : "./t/test.pl"); plan(16); @@ -8,10 +14,6 @@ IO::Dir->import(DIR_UNLINK); } -use strict; -use File::Temp qw( tempdir ); -use Cwd; - my $cwd = cwd(); { diff -Nru perl-5.32.1/dist/IO/t/io_dup.t perl-5.34.0/dist/IO/t/io_dup.t --- perl-5.32.1/dist/IO/t/io_dup.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/t/io_dup.t 2020-10-04 22:17:12.000000000 +0000 @@ -21,11 +21,11 @@ print "ok 1\n"; -$dupout = IO::Handle->new->fdopen( \*STDOUT ,"w"); -$duperr = IO::Handle->new->fdopen( \*STDERR ,"w"); +my $dupout = IO::Handle->new->fdopen( \*STDOUT ,"w"); +my $duperr = IO::Handle->new->fdopen( \*STDERR ,"w"); -$stdout = \*STDOUT; bless $stdout, "IO::File"; # "IO::Handle"; -$stderr = \*STDERR; bless $stderr, "IO::Handle"; +my $stdout = \*STDOUT; bless $stdout, "IO::File"; # "IO::Handle"; +my $stderr = \*STDERR; bless $stderr, "IO::Handle"; $stdout->open( "Io.dup","w") || die "Can't open stdout"; $stderr->fdopen($stdout,"w"); @@ -34,9 +34,9 @@ print $stderr "ok 3\n"; # Since some systems don't have echo, we use Perl. -$echo = qq{$^X -le "print q(ok %d)"}; +my $echo = qq{$^X -le "print q(ok %d)"}; -$cmd = sprintf $echo, 4; +my $cmd = sprintf $echo, 4; print `$cmd`; $cmd = sprintf "$echo 1>&2", 5; diff -Nru perl-5.32.1/dist/IO/t/io_linenum.t perl-5.34.0/dist/IO/t/io_linenum.t --- perl-5.32.1/dist/IO/t/io_linenum.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/t/io_linenum.t 2020-10-04 22:17:12.000000000 +0000 @@ -7,7 +7,7 @@ BEGIN { $File = __FILE__; - require strict; import strict; + require strict; strict->import(); } use Test::More tests => 12; diff -Nru perl-5.32.1/dist/IO/t/io_multihomed.t perl-5.34.0/dist/IO/t/io_multihomed.t --- perl-5.32.1/dist/IO/t/io_multihomed.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/t/io_multihomed.t 2020-10-04 22:17:12.000000000 +0000 @@ -29,7 +29,7 @@ package Multi; require IO::Socket::INET; -@ISA=qw(IO::Socket::INET); +our @ISA=qw(IO::Socket::INET); use Socket qw(inet_aton inet_ntoa unpack_sockaddr_in); @@ -74,7 +74,7 @@ use IO::Socket; -$listen = IO::Socket::INET->new(LocalAddr => 'localhost', +my $listen = IO::Socket::INET->new(LocalAddr => 'localhost', Listen => 2, Proto => 'tcp', Timeout => 5, @@ -82,11 +82,11 @@ print "ok 1\n"; -$port = $listen->sockport; +my $port = $listen->sockport; -if($pid = fork()) { +if (my $pid = fork()) { - $sock = $listen->accept() or die "$!"; + my $sock = $listen->accept() or die "$!"; print "ok 5\n"; print $sock->getline(); @@ -100,7 +100,7 @@ } elsif(defined $pid) { - $sock = Multi->new(PeerPort => $port, + my $sock = Multi->new(PeerPort => $port, Proto => 'tcp', PeerAddr => 'localhost', MultiHomed => 1, diff -Nru perl-5.32.1/dist/IO/t/io_pipe.t perl-5.34.0/dist/IO/t/io_pipe.t --- perl-5.32.1/dist/IO/t/io_pipe.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/t/io_pipe.t 2020-10-04 22:17:12.000000000 +0000 @@ -37,18 +37,20 @@ $| = 1; print "1..10\n"; +my $pipe; + if ($is_win32) { print "ok $_ # skipped: $is_win32\n" for 1..4; } else { - $pipe = new IO::Pipe->reader($perl, '-e', 'print qq(not ok 1\n)'); + $pipe = IO::Pipe->new()->reader($perl, '-e', 'print qq(not ok 1\n)'); while (<$pipe>) { s/^not //; print; } $pipe->close or print "# \$!=$!\nnot "; print "ok 2\n"; - $cmd = 'BEGIN{$SIG{ALRM} = sub {print qq(not ok 4\n); exit}; alarm 10} s/not //'; - $pipe = new IO::Pipe->writer($perl, '-pe', $cmd); + my $cmd = 'BEGIN{$SIG{ALRM} = sub {print qq(not ok 4\n); exit}; alarm 10} s/not //'; + $pipe = IO::Pipe->new()->writer($perl, '-pe', $cmd); print $pipe "not ok 3\n" ; $pipe->close or print "# \$!=$!\nnot "; print "ok 4\n"; @@ -61,9 +63,9 @@ exit 0; } -$pipe = new IO::Pipe; +$pipe = IO::Pipe->new(); -$pid = fork(); +my $pid = fork(); if($pid) { @@ -76,7 +78,7 @@ elsif(defined $pid) { $pipe->reader; - $stdin = bless \*STDIN, "IO::Handle"; + my $stdin = bless \*STDIN, "IO::Handle"; $stdin->fdopen($pipe,"r"); exec $^X, '-pne', 'tr/YX/ko/'; } @@ -88,8 +90,8 @@ if ($is_win32) { print "ok $_ # skipped: $is_win32\n" for 7..8; } else { - $pipe = new IO::Pipe; - $pid = fork(); + $pipe = IO::Pipe->new(); + my $pid = fork(); if($pid) { @@ -105,7 +107,7 @@ { $pipe->writer; - $stdout = bless \*STDOUT, "IO::Handle"; + my $stdout = bless \*STDOUT, "IO::Handle"; $stdout->fdopen($pipe,"w"); print STDOUT "not ok 7\n"; my @echo = 'echo'; @@ -122,7 +124,7 @@ if ($is_win32) { print "ok $_ # skipped: $is_win32\n" for 9; } else { - $pipe = new IO::Pipe; + $pipe = IO::Pipe->new; $pipe->writer; $SIG{'PIPE'} = 'broken_pipe'; diff -Nru perl-5.32.1/dist/IO/t/io_poll.t perl-5.34.0/dist/IO/t/io_poll.t --- perl-5.32.1/dist/IO/t/io_poll.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/t/io_poll.t 2020-10-04 22:17:12.000000000 +0000 @@ -8,7 +8,7 @@ use IO::Handle; use IO::Poll qw(/POLL/); -my $poll = new IO::Poll; +my $poll = IO::Poll->new(); my $stdout = \*STDOUT; my $dupout = IO::Handle->new_from_fd(fileno($stdout),"w"); diff -Nru perl-5.32.1/dist/IO/t/io_sel.t perl-5.34.0/dist/IO/t/io_sel.t --- perl-5.32.1/dist/IO/t/io_sel.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/t/io_sel.t 2020-10-04 22:17:12.000000000 +0000 @@ -7,14 +7,14 @@ use IO::Select 1.09; -my $sel = new IO::Select(\*STDIN); +my $sel = IO::Select->new(\*STDIN); $sel->add(4, 5) == 2 or print "not "; print "ok 1\n"; $sel->add([\*STDOUT, 'foo']) == 1 or print "not "; print "ok 2\n"; -@handles = $sel->handles; +my @handles = $sel->handles; print "not " unless $sel->count == 4 && @handles == 4; print "ok 3\n"; #print $sel->as_string, "\n"; @@ -34,7 +34,7 @@ print "not " unless $sel->count == 0 && !defined($sel->bits); print "ok 7\n"; -$sel = new IO::Select; +$sel = IO::Select->new(); print "not " unless $sel->count == 0 && !defined($sel->bits); print "ok 8\n"; @@ -50,7 +50,7 @@ goto POST_SOCKET; } -@a = $sel->can_read(); # should return immediately +my @a = $sel->can_read(); # should return immediately print "not " unless @a == 0; print "ok 10\n"; @@ -70,7 +70,7 @@ print "not " unless @a == 3; print "ok 13\n"; -($r, $w, $e) = @a; +my ($r, $w, $e) = @a; print "not " unless @$r == 0 && @$w == 1 && @$e == 0; print "ok 14\n"; diff -Nru perl-5.32.1/dist/IO/t/io_sock_errstr.t perl-5.34.0/dist/IO/t/io_sock_errstr.t --- perl-5.32.1/dist/IO/t/io_sock_errstr.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/dist/IO/t/io_sock_errstr.t 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,34 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Test::More; + +plan tests => 3; + +use Errno qw( EINVAL ); + +# Keep this unit test in a file of its own because we need to override +# connect() globally +BEGIN { + *CORE::GLOBAL::connect = sub { $! = EINVAL; return undef }; +} + +my $EINVAL_STR = do { local $! = EINVAL; "$!" }; + +use IO::Socket; + +# test that error strings turn up in both places +my $sock = IO::Socket::INET->new( + PeerHost => "localhost", + PeerPort => 1, +); +my $e = $@; + +ok(!defined $sock, 'fails to connect with CORE::GLOBAL::connect override'); + +is($IO::Socket::errstr, "IO::Socket::INET: connect: $EINVAL_STR", + 'error message appears in $IO::Socket::errstr'); +is($e, "IO::Socket::INET: connect: $EINVAL_STR", + 'error message appeared in $@'); diff -Nru perl-5.32.1/dist/IO/t/io_sock.t perl-5.34.0/dist/IO/t/io_sock.t --- perl-5.32.1/dist/IO/t/io_sock.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/t/io_sock.t 2021-01-20 23:04:44.000000000 +0000 @@ -25,7 +25,7 @@ } } -my $has_perlio = find PerlIO::Layer 'perlio'; +my $has_perlio = PerlIO::Layer->find( 'perlio' ); $| = 1; print "1..26\n"; @@ -37,7 +37,7 @@ use IO::Socket; -$listen = IO::Socket::INET->new(LocalAddr => 'localhost', +my $listen = IO::Socket::INET->new(LocalAddr => 'localhost', Listen => 2, Proto => 'tcp', # some systems seem to need as much as 10, @@ -54,11 +54,11 @@ exit 0; } -$port = $listen->sockport; +my $port = $listen->sockport; -if($pid = fork()) { +if(my $pid = fork()) { - $sock = $listen->accept() or die "accept failed: $!"; + my $sock = $listen->accept() or die "accept failed: $!"; print "ok 2\n"; $sock->autoflush(1); @@ -74,7 +74,7 @@ } elsif(defined $pid) { - $sock = IO::Socket::INET->new(PeerPort => $port, + my $sock = IO::Socket::INET->new(PeerPort => $port, Proto => 'tcp', PeerAddr => 'localhost' ) @@ -102,10 +102,10 @@ $listen = IO::Socket::INET->new(LocalAddr => 'localhost', Listen => '', Timeout => 15) or die "$!"; $port = $listen->sockport; -if($pid = fork()) { +if(my $pid = fork()) { SERVER_LOOP: while (1) { - last SERVER_LOOP unless $sock = $listen->accept; + last SERVER_LOOP unless my $sock = $listen->accept; while (<$sock>) { last SERVER_LOOP if /^quit/; last if /^done/; @@ -116,7 +116,7 @@ $listen->close; } elsif (defined $pid) { # child, try various ways to connect - $sock = IO::Socket::INET->new("localhost:$port") + my $sock = IO::Socket::INET->new("localhost:$port") || IO::Socket::INET->new("127.0.0.1:$port"); if ($sock) { print "not " unless $sock->connected; @@ -129,7 +129,7 @@ $sock->close; } else { - print "# $@\n"; + print "# $IO::Socket::errstr\n"; print "not ok 6\n"; print "not ok 7\n"; print "not ok 8\n"; @@ -146,7 +146,7 @@ $sock->close; } else { - print "# $@\n"; + print "# $IO::Socket::errstr\n"; print "not ok 10\n"; } @@ -171,7 +171,7 @@ } # Then test UDP sockets -$server = IO::Socket->new(Domain => AF_INET, +my $server = IO::Socket->new(Domain => AF_INET, Proto => 'udp', LocalAddr => 'localhost') || IO::Socket->new(Domain => AF_INET, @@ -179,13 +179,13 @@ LocalAddr => '127.0.0.1'); $port = $server->sockport; -if ($pid = fork()) { +if (my $pid = fork()) { my $buf; $server->recv($buf, 100); print $buf; } elsif (defined($pid)) { #child - $sock = IO::Socket::INET->new(Proto => 'udp', + my $sock = IO::Socket::INET->new(Proto => 'udp', PeerAddr => "localhost:$port") || IO::Socket::INET->new(Proto => 'udp', PeerAddr => "127.0.0.1:$port"); @@ -214,7 +214,7 @@ ### Set up some data to be transferred between the server and ### the client. We'll use own source code ... # -local @data; +my @data; if( !open( SRC, '<', $0)) { print "not ok 15 - $!\n"; } else { @@ -226,7 +226,7 @@ ### TEST 16 ### Start the server # -my $listen = IO::Socket::INET->new(LocalAddr => 'localhost', Listen => 2, Proto => 'tcp', Timeout => 15) || +$listen = IO::Socket::INET->new(LocalAddr => 'localhost', Listen => 2, Proto => 'tcp', Timeout => 15) || print "not "; print "ok 16\n"; die if( !defined( $listen)); @@ -241,7 +241,7 @@ ### TEST 18 ### Get data from the server using a single stream # - $sock = IO::Socket::INET->new("localhost:$serverport") + my $sock = IO::Socket::INET->new("localhost:$serverport") || IO::Socket::INET->new("127.0.0.1:$serverport"); if ($sock) { @@ -343,7 +343,7 @@ ### Child # SERVER_LOOP: while (1) { - last SERVER_LOOP unless $sock = $listen->accept; + last SERVER_LOOP unless my $sock = $listen->accept; # Do not print ok/not ok for this binmode() since there's # a race condition with our client, just die if we fail. if ($has_perlio) { binmode($sock, ":utf8") or die } @@ -383,7 +383,7 @@ # test Blocking option in constructor -$sock = IO::Socket::INET->new(Blocking => 0) +my $sock = IO::Socket::INET->new(Blocking => 0) or print "not "; print "ok 25\n"; diff -Nru perl-5.32.1/dist/IO/t/io_taint.t perl-5.34.0/dist/IO/t/io_taint.t --- perl-5.32.1/dist/IO/t/io_taint.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/t/io_taint.t 2020-10-04 22:17:12.000000000 +0000 @@ -24,11 +24,11 @@ END { unlink "./__taint__$$" } use IO::File; -my $x = new IO::File "> ./__taint__$$" || die("Cannot open ./__taint__$$\n"); +my $x = IO::File->new( "> ./__taint__$$" ) || die("Cannot open ./__taint__$$\n"); print $x "$$\n"; $x->close; -$x = new IO::File "< ./__taint__$$" || die("Cannot open ./__taint__$$\n"); +$x = IO::File->new( "< ./__taint__$$" ) || die("Cannot open ./__taint__$$\n"); chop(my $unsafe = <$x>); eval { kill 0 * $unsafe }; SKIP: { @@ -39,7 +39,7 @@ # We could have just done a seek on $x, but technically we haven't tested # seek yet... -$x = new IO::File "< ./__taint__$$" || die("Cannot open ./__taint__$$\n"); +$x = IO::File->new( "< ./__taint__$$" ) || die("Cannot open ./__taint__$$\n"); $x->untaint; ok(!$?); # Calling the method worked chop($unsafe = <$x>); diff -Nru perl-5.32.1/dist/IO/t/io_tell.t perl-5.34.0/dist/IO/t/io_tell.t --- perl-5.32.1/dist/IO/t/io_tell.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/t/io_tell.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,5 +1,6 @@ #!./perl +my $tell_file; BEGIN { $tell_file = "Makefile.PL"; } @@ -17,20 +18,20 @@ use IO::File; -$tst = IO::File->new("$tell_file","r") || die("Can't open $tell_file"); +my $tst = IO::File->new("$tell_file","r") || die("Can't open $tell_file"); binmode $tst; # its a nop unless it matters. Was only if ($^O eq 'MSWin32' or $^O eq 'dos'); if ($tst->eof) { print "not ok 1\n"; } else { print "ok 1\n"; } -$firstline = <$tst>; -$secondpos = tell; +my $firstline = <$tst>; +my $secondpos = tell; -$x = 0; +my $x = 0; while (<$tst>) { if (eof) {$x++;} } if ($x == 1) { print "ok 2\n"; } else { print "not ok 2\n"; } -$lastpos = tell; +my $lastpos = tell; unless (eof) { print "not ok 3\n"; } else { print "ok 3\n"; } diff -Nru perl-5.32.1/dist/IO/t/io_unix.t perl-5.34.0/dist/IO/t/io_unix.t --- perl-5.32.1/dist/IO/t/io_unix.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/t/io_unix.t 2020-10-04 22:17:12.000000000 +0000 @@ -43,7 +43,7 @@ } } -$PATH = "sock-$$"; +my $PATH = "sock-$$"; if ($^O eq 'os2') { # Can't create sockets with relative path... require Cwd; @@ -64,7 +64,7 @@ $| = 1; print "1..5\n"; -$listen = IO::Socket::UNIX->new(Local => $PATH, Listen => 0); +my $listen = IO::Socket::UNIX->new(Local => $PATH, Listen => 0); # Sometimes UNIX filesystems are mounted for security reasons # with "nodev" option which spells out "no" for creating UNIX @@ -73,7 +73,7 @@ unless (defined $listen) { eval { require File::Temp }; unless ($@) { - import File::Temp 'mktemp'; + File::Temp->import( 'mktemp' ); for my $TMPDIR ($ENV{TMPDIR}, "/tmp") { if (defined $TMPDIR && -d $TMPDIR && -w $TMPDIR) { $PATH = mktemp("$TMPDIR/sXXXXXXXX"); @@ -86,9 +86,9 @@ } print "ok 1\n"; -if($pid = fork()) { +if (my $pid = fork()) { - $sock = $listen->accept(); + my $sock = $listen->accept(); if (defined $sock) { print "ok 2\n"; @@ -111,7 +111,7 @@ } } elsif(defined $pid) { - $sock = IO::Socket::UNIX->new(Peer => $PATH) or die "$!"; + my $sock = IO::Socket::UNIX->new(Peer => $PATH) or die "$!"; print $sock "ok 3\n"; diff -Nru perl-5.32.1/dist/IO/t/io_utf8argv.t perl-5.34.0/dist/IO/t/io_utf8argv.t --- perl-5.32.1/dist/IO/t/io_utf8argv.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/t/io_utf8argv.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,7 +1,7 @@ #!./perl BEGIN { - unless (find PerlIO::Layer 'perlio') { + unless ( PerlIO::Layer->find('perlio') ) { print "1..0 # Skip: not perlio\n"; exit 0; } diff -Nru perl-5.32.1/dist/IO/t/io_utf8.t perl-5.34.0/dist/IO/t/io_utf8.t --- perl-5.32.1/dist/IO/t/io_utf8.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/t/io_utf8.t 2020-10-04 22:17:12.000000000 +0000 @@ -1,7 +1,7 @@ #!./perl BEGIN { - unless (find PerlIO::Layer 'perlio') { + unless ( PerlIO::Layer->find('perlio') ) { print "1..0 # Skip: not perlio\n"; exit 0; } diff -Nru perl-5.32.1/dist/IO/t/io_xs.t perl-5.34.0/dist/IO/t/io_xs.t --- perl-5.32.1/dist/IO/t/io_xs.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/IO/t/io_xs.t 2020-10-04 22:17:12.000000000 +0000 @@ -11,11 +11,11 @@ } } -use Test::More tests => 5; +use Test::More tests => 10; use IO::File; use IO::Seekable; -$x = new_tmpfile IO::File; +my $x = IO::File->new_tmpfile(); ok($x, "new_tmpfile"); print $x "ok 2\n"; $x->seek(0,SEEK_SET); @@ -24,7 +24,7 @@ $x->seek(0,SEEK_SET); print $x "not ok 3\n"; -$p = $x->getpos; +my $p = $x->getpos; print $x "ok 3\n"; $x->flush; $x->setpos($p); @@ -50,3 +50,30 @@ ok($fh->sync, "sync to a read only handle") or diag "sync(): ", $!; } + + +SKIP: { + # gh 6799 + # + # This isn't really a Linux/BSD specific test, but /dev/full is (I + # hope) reasonably well defined on these. Patches welcome if your platform + # also supports it (or something like it) + skip "no /dev/full or not a /dev/full platform", 3 + unless $^O =~ /^(linux|netbsd|freebsd)$/ && -c "/dev/full"; + open my $fh, ">", "/dev/full" + or skip "Could not open /dev/full: $!", 3; + $fh->print("a" x 1024); + ok(!$fh->flush, "should fail to flush"); + ok($fh->error, "stream should be in error"); + $fh->clearerr; + ok(!$fh->error, "check clearerr removed the error"); + close $fh; # silently ignore the error +} + +{ + # [GH #18019] IO::Handle->error misreported an error after successully + # opening a regular file for reading. It was a regression in GH #6799 fix. + ok(open(my $fh, '<', __FILE__), "a regular file opened for reading"); + ok(!$fh->error, "no spurious error reported by error()"); + close $fh; +} diff -Nru perl-5.32.1/dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod perl-5.34.0/dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod --- perl-5.32.1/dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod 2020-10-24 18:43:34.000000000 +0000 @@ -460,13 +460,13 @@ write only once the hairy code that, given a numeric value, would return some specification of which case and number a given quantified noun should use. But suppose that you discover, while localizing an -interface for, say, Ukranian (a Slavic language related to Russian, +interface for, say, Ukrainian (a Slavic language related to Russian, spoken by several million people, many of whom would be relieved to find that your Web site's or software's interface is available in -their language), that the rules in Ukranian are the same as in Russian +their language), that the rules in Ukrainian are the same as in Russian for quantification, and probably for many other grammatical functions. While there may well be no phrases in common between Russian and -Ukranian, you could still choose to have the Ukranian module inherit +Ukrainian, you could still choose to have the Ukrainian module inherit from the Russian module, just for the sake of inheriting all the various grammatical methods. Or, probably better organizationally, you could move those functions to a module called C<_E_Slavic> or diff -Nru perl-5.32.1/dist/Module-CoreList/Changes perl-5.34.0/dist/Module-CoreList/Changes --- perl-5.32.1/dist/Module-CoreList/Changes 2021-01-23 12:55:41.000000000 +0000 +++ perl-5.34.0/dist/Module-CoreList/Changes 2021-05-04 23:28:28.000000000 +0000 @@ -1,3 +1,15 @@ +5.20210520 + - Updated for v5.34.0 + +5.20210420 + - Updated for v5.33.9 + +5.20210320 + - Updated for v5.33.8 + +5.20210220 + - Updated for v5.33.7 + 5.20210123 - Updated for v5.32.1 diff -Nru perl-5.32.1/dist/Module-CoreList/lib/Module/CoreList/Utils.pm perl-5.34.0/dist/Module-CoreList/lib/Module/CoreList/Utils.pm --- perl-5.32.1/dist/Module-CoreList/lib/Module/CoreList/Utils.pm 2021-01-23 12:55:41.000000000 +0000 +++ perl-5.34.0/dist/Module-CoreList/lib/Module/CoreList/Utils.pm 2021-05-20 17:05:50.000000000 +0000 @@ -4,7 +4,7 @@ use warnings; use Module::CoreList; -our $VERSION = '5.20210123'; +our $VERSION = '5.20210520'; our %utilities; sub utilities { @@ -1676,6 +1676,34 @@ changed => { }, removed => { + } + }, + 5.033007 => { + delta_from => 5.033006, + changed => { + }, + removed => { + } + }, + 5.033008 => { + delta_from => 5.033007, + changed => { + }, + removed => { + } + }, + 5.033009 => { + delta_from => 5.033008, + changed => { + }, + removed => { + } + }, + 5.034000 => { + delta_from => 5.033009, + changed => { + }, + removed => { } }, ); diff -Nru perl-5.32.1/dist/Module-CoreList/lib/Module/CoreList.pm perl-5.34.0/dist/Module-CoreList/lib/Module/CoreList.pm --- perl-5.32.1/dist/Module-CoreList/lib/Module/CoreList.pm 2021-01-23 12:55:41.000000000 +0000 +++ perl-5.34.0/dist/Module-CoreList/lib/Module/CoreList.pm 2021-05-20 17:05:50.000000000 +0000 @@ -4,7 +4,7 @@ our ( %released, %version, %families, %upstream, %bug_tracker, %deprecated, %delta ); use version; -our $VERSION = '5.20210123'; +our $VERSION = '5.20210520'; sub PKG_PATTERN () { q#\A[a-zA-Z_][0-9a-zA-Z_]*(?:(::|')[0-9a-zA-Z_]+)*\z# } sub _looks_like_invocant ($) { local $@; !!eval { $_[0]->isa(__PACKAGE__) } } @@ -374,6 +374,10 @@ 5.033005 => '2020-12-20', 5.033006 => '2021-01-20', 5.032001 => '2021-01-23', + 5.033007 => '2021-02-20', + 5.033008 => '2021-03-20', + 5.033009 => '2021-04-20', + 5.034000 => '2021-05-20', ); for my $version ( sort { $a <=> $b } keys %released ) { @@ -18318,6 +18322,206 @@ removed => { } }, + 5.033007 => { + delta_from => 5.033006, + changed => { + 'B::Deparse' => '1.56', + 'B::Op_private' => '5.033007', + 'Config' => '5.033007', + 'ExtUtils::CBuilder' => '0.280236', + 'ExtUtils::CBuilder::Base'=> '0.280236', + 'ExtUtils::CBuilder::Platform::Unix'=> '0.280236', + 'ExtUtils::CBuilder::Platform::VMS'=> '0.280236', + 'ExtUtils::CBuilder::Platform::Windows'=> '0.280236', + 'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280236', + 'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280236', + 'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280236', + 'ExtUtils::CBuilder::Platform::aix'=> '0.280236', + 'ExtUtils::CBuilder::Platform::android'=> '0.280236', + 'ExtUtils::CBuilder::Platform::cygwin'=> '0.280236', + 'ExtUtils::CBuilder::Platform::darwin'=> '0.280236', + 'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280236', + 'ExtUtils::CBuilder::Platform::os2'=> '0.280236', + 'ExtUtils::Command' => '7.60', + 'ExtUtils::Command::MM' => '7.60', + 'ExtUtils::Liblist' => '7.60', + 'ExtUtils::Liblist::Kid'=> '7.60', + 'ExtUtils::MM' => '7.60', + 'ExtUtils::MM_AIX' => '7.60', + 'ExtUtils::MM_Any' => '7.60', + 'ExtUtils::MM_BeOS' => '7.60', + 'ExtUtils::MM_Cygwin' => '7.60', + 'ExtUtils::MM_DOS' => '7.60', + 'ExtUtils::MM_Darwin' => '7.60', + 'ExtUtils::MM_MacOS' => '7.60', + 'ExtUtils::MM_NW5' => '7.60', + 'ExtUtils::MM_OS2' => '7.60', + 'ExtUtils::MM_OS390' => '7.60', + 'ExtUtils::MM_QNX' => '7.60', + 'ExtUtils::MM_UWIN' => '7.60', + 'ExtUtils::MM_Unix' => '7.60', + 'ExtUtils::MM_VMS' => '7.60', + 'ExtUtils::MM_VOS' => '7.60', + 'ExtUtils::MM_Win32' => '7.60', + 'ExtUtils::MM_Win95' => '7.60', + 'ExtUtils::MY' => '7.60', + 'ExtUtils::MakeMaker' => '7.60', + 'ExtUtils::MakeMaker::Config'=> '7.60', + 'ExtUtils::MakeMaker::Locale'=> '7.60', + 'ExtUtils::MakeMaker::version'=> '7.60', + 'ExtUtils::MakeMaker::version::regex'=> '7.60', + 'ExtUtils::Mkbootstrap' => '7.60', + 'ExtUtils::Mksymlists' => '7.60', + 'ExtUtils::PL2Bat' => '0.004', + 'ExtUtils::testlib' => '7.60', + 'Fatal' => '2.34', + 'File::Find' => '1.39', + 'Hash::Util' => '0.25', + 'IO' => '1.46', + 'IO::Dir' => '1.46', + 'IO::File' => '1.46', + 'IO::Handle' => '1.46', + 'IO::Pipe' => '1.46', + 'IO::Poll' => '1.46', + 'IO::Seekable' => '1.46', + 'IO::Select' => '1.46', + 'IO::Socket' => '1.46', + 'IO::Socket::INET' => '1.46', + 'IO::Socket::UNIX' => '1.46', + 'JSON::PP' => '4.06', + 'JSON::PP::Boolean' => '4.06', + 'Module::CoreList' => '5.20210220', + 'Module::CoreList::Utils'=> '5.20210220', + 'Opcode' => '1.50', + 'PerlIO::encoding' => '0.30', + 'Time::HiRes' => '1.9767', + 'autodie' => '2.34', + 'autodie::Scope::Guard' => '2.34', + 'autodie::Scope::GuardStack'=> '2.34', + 'autodie::Util' => '2.34', + 'autodie::exception' => '2.34', + 'autodie::exception::system'=> '2.34', + 'autodie::hints' => '2.34', + 'autodie::skip' => '2.34', + 'feature' => '1.63', + 'mro' => '1.25_001', + 'warnings' => '1.51', + }, + removed => { + } + }, + 5.033008 => { + delta_from => 5.033007, + changed => { + 'B::Op_private' => '5.033008', + 'Compress::Raw::Bzip2' => '2.101', + 'Compress::Raw::Zlib' => '2.101', + 'Compress::Zlib' => '2.102', + 'Config' => '5.033008', + 'Data::Dumper' => '2.177', + 'IO::Compress::Adapter::Bzip2'=> '2.102', + 'IO::Compress::Adapter::Deflate'=> '2.102', + 'IO::Compress::Adapter::Identity'=> '2.102', + 'IO::Compress::Base' => '2.102', + 'IO::Compress::Base::Common'=> '2.102', + 'IO::Compress::Bzip2' => '2.102', + 'IO::Compress::Deflate' => '2.102', + 'IO::Compress::Gzip' => '2.102', + 'IO::Compress::Gzip::Constants'=> '2.102', + 'IO::Compress::RawDeflate'=> '2.102', + 'IO::Compress::Zip' => '2.102', + 'IO::Compress::Zip::Constants'=> '2.102', + 'IO::Compress::Zlib::Constants'=> '2.102', + 'IO::Compress::Zlib::Extra'=> '2.102', + 'IO::Uncompress::Adapter::Bunzip2'=> '2.102', + 'IO::Uncompress::Adapter::Identity'=> '2.102', + 'IO::Uncompress::Adapter::Inflate'=> '2.102', + 'IO::Uncompress::AnyInflate'=> '2.102', + 'IO::Uncompress::AnyUncompress'=> '2.102', + 'IO::Uncompress::Base' => '2.102', + 'IO::Uncompress::Bunzip2'=> '2.102', + 'IO::Uncompress::Gunzip'=> '2.102', + 'IO::Uncompress::Inflate'=> '2.102', + 'IO::Uncompress::RawInflate'=> '2.102', + 'IO::Uncompress::Unzip' => '2.102', + 'Module::CoreList' => '5.20210320', + 'Module::CoreList::Utils'=> '5.20210320', + 'Pod::Html' => '1.27', + 'Win32' => '0.57', + }, + removed => { + } + }, + 5.033009 => { + delta_from => 5.033008, + changed => { + 'B::Op_private' => '5.033009', + 'Config' => '5.033009', + 'Data::Dumper' => '2.178', + 'ExtUtils::Command' => '7.62', + 'ExtUtils::Command::MM' => '7.62', + 'ExtUtils::Liblist' => '7.62', + 'ExtUtils::Liblist::Kid'=> '7.62', + 'ExtUtils::MM' => '7.62', + 'ExtUtils::MM_AIX' => '7.62', + 'ExtUtils::MM_Any' => '7.62', + 'ExtUtils::MM_BeOS' => '7.62', + 'ExtUtils::MM_Cygwin' => '7.62', + 'ExtUtils::MM_DOS' => '7.62', + 'ExtUtils::MM_Darwin' => '7.62', + 'ExtUtils::MM_MacOS' => '7.62', + 'ExtUtils::MM_NW5' => '7.62', + 'ExtUtils::MM_OS2' => '7.62', + 'ExtUtils::MM_OS390' => '7.62', + 'ExtUtils::MM_QNX' => '7.62', + 'ExtUtils::MM_UWIN' => '7.62', + 'ExtUtils::MM_Unix' => '7.62', + 'ExtUtils::MM_VMS' => '7.62', + 'ExtUtils::MM_VOS' => '7.62', + 'ExtUtils::MM_Win32' => '7.62', + 'ExtUtils::MM_Win95' => '7.62', + 'ExtUtils::MY' => '7.62', + 'ExtUtils::MakeMaker' => '7.62', + 'ExtUtils::MakeMaker::Config'=> '7.62', + 'ExtUtils::MakeMaker::Locale'=> '7.62', + 'ExtUtils::MakeMaker::version'=> '7.62', + 'ExtUtils::MakeMaker::version::regex'=> '7.62', + 'ExtUtils::Mkbootstrap' => '7.62', + 'ExtUtils::Mksymlists' => '7.62', + 'ExtUtils::ParseXS' => '3.43', + 'ExtUtils::ParseXS::Constants'=> '3.43', + 'ExtUtils::ParseXS::CountLines'=> '3.43', + 'ExtUtils::ParseXS::Eval'=> '3.43', + 'ExtUtils::ParseXS::Utilities'=> '3.43', + 'ExtUtils::Typemaps' => '3.43', + 'ExtUtils::Typemaps::Cmd'=> '3.43', + 'ExtUtils::Typemaps::InputMap'=> '3.43', + 'ExtUtils::Typemaps::OutputMap'=> '3.43', + 'ExtUtils::Typemaps::Type'=> '3.43', + 'ExtUtils::testlib' => '7.62', + 'Module::CoreList' => '5.20210420', + 'Module::CoreList::Utils'=> '5.20210420', + 'NEXT' => '0.68', + 'XS::APItest' => '1.16', + 'feature' => '1.64', + 'perlfaq' => '5.20210411', + }, + removed => { + } + }, + 5.034000 => { + delta_from => 5.033009, + changed => { + 'B::Op_private' => '5.034000', + 'Config' => '5.034', + 'Data::Dumper' => '2.179', + 'Module::CoreList' => '5.20210520', + 'Module::CoreList::Utils'=> '5.20210520', + 'experimental' => '0.024', + }, + removed => { + } + }, ); sub is_core @@ -19495,6 +19699,34 @@ removed => { } }, + 5.033007 => { + delta_from => 5.033006, + changed => { + }, + removed => { + } + }, + 5.033008 => { + delta_from => 5.033007, + changed => { + }, + removed => { + } + }, + 5.033009 => { + delta_from => 5.033008, + changed => { + }, + removed => { + } + }, + 5.034000 => { + delta_from => 5.033009, + changed => { + }, + removed => { + } + }, ); %deprecated = _undelta(\%deprecated); @@ -19610,6 +19842,7 @@ 'ExtUtils::MM_MacOS' => 'cpan', 'ExtUtils::MM_NW5' => 'cpan', 'ExtUtils::MM_OS2' => 'cpan', + 'ExtUtils::MM_OS390' => 'cpan', 'ExtUtils::MM_QNX' => 'cpan', 'ExtUtils::MM_UWIN' => 'cpan', 'ExtUtils::MM_Unix' => 'cpan', @@ -19626,6 +19859,7 @@ 'ExtUtils::Manifest' => 'cpan', 'ExtUtils::Mkbootstrap' => 'cpan', 'ExtUtils::Mksymlists' => 'cpan', + 'ExtUtils::PL2Bat' => 'cpan', 'ExtUtils::Packlist' => 'cpan', 'ExtUtils::testlib' => 'cpan', 'Fatal' => 'cpan', @@ -19822,6 +20056,11 @@ 'Test2::API::Breakage' => 'cpan', 'Test2::API::Context' => 'cpan', 'Test2::API::Instance' => 'cpan', + 'Test2::API::InterceptResult'=> 'cpan', + 'Test2::API::InterceptResult::Event'=> 'cpan', + 'Test2::API::InterceptResult::Facet'=> 'cpan', + 'Test2::API::InterceptResult::Hub'=> 'cpan', + 'Test2::API::InterceptResult::Squasher'=> 'cpan', 'Test2::API::Stack' => 'cpan', 'Test2::Event' => 'cpan', 'Test2::Event::Bail' => 'cpan', @@ -20031,6 +20270,7 @@ 'ExtUtils::MM_MacOS' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_NW5' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_OS2' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', + 'ExtUtils::MM_OS390' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_QNX' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_UWIN' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_Unix' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', @@ -20047,9 +20287,10 @@ 'ExtUtils::Manifest' => 'http://github.com/Perl-Toolchain-Gang/ExtUtils-Manifest/issues', 'ExtUtils::Mkbootstrap' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::Mksymlists' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', + 'ExtUtils::PL2Bat' => 'https://github.com/Perl-Toolchain-Gang/extutils-pl2bat/issues', 'ExtUtils::Packlist' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-Install', 'ExtUtils::testlib' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', - 'Fatal' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie', + 'Fatal' => 'https://github.com/pjf/autodie/issues', 'File::Fetch' => undef, 'File::GlobMapper' => 'https://github.com/pmqs/IO-Compress/issues', 'File::Path' => undef, @@ -20243,6 +20484,11 @@ 'Test2::API::Breakage' => 'http://github.com/Test-More/test-more/issues', 'Test2::API::Context' => 'http://github.com/Test-More/test-more/issues', 'Test2::API::Instance' => 'http://github.com/Test-More/test-more/issues', + 'Test2::API::InterceptResult'=> 'http://github.com/Test-More/test-more/issues', + 'Test2::API::InterceptResult::Event'=> 'http://github.com/Test-More/test-more/issues', + 'Test2::API::InterceptResult::Facet'=> 'http://github.com/Test-More/test-more/issues', + 'Test2::API::InterceptResult::Hub'=> 'http://github.com/Test-More/test-more/issues', + 'Test2::API::InterceptResult::Squasher'=> 'http://github.com/Test-More/test-more/issues', 'Test2::API::Stack' => 'http://github.com/Test-More/test-more/issues', 'Test2::Event' => 'http://github.com/Test-More/test-more/issues', 'Test2::Event::Bail' => 'http://github.com/Test-More/test-more/issues', @@ -20323,14 +20569,14 @@ 'Unicode::Collate::Locale'=> undef, 'Win32' => 'https://github.com/perl-libwin32/win32/issues', 'Win32API::File' => undef, - 'autodie' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie', - 'autodie::Scope::Guard' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie', - 'autodie::Scope::GuardStack'=> 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie', - 'autodie::Util' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie', - 'autodie::exception' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie', - 'autodie::exception::system'=> 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie', - 'autodie::hints' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie', - 'autodie::skip' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie', + 'autodie' => 'https://github.com/pjf/autodie/issues', + 'autodie::Scope::Guard' => 'https://github.com/pjf/autodie/issues', + 'autodie::Scope::GuardStack'=> 'https://github.com/pjf/autodie/issues', + 'autodie::Util' => 'https://github.com/pjf/autodie/issues', + 'autodie::exception' => 'https://github.com/pjf/autodie/issues', + 'autodie::exception::system'=> 'https://github.com/pjf/autodie/issues', + 'autodie::hints' => 'https://github.com/pjf/autodie/issues', + 'autodie::skip' => 'https://github.com/pjf/autodie/issues', 'bigint' => undef, 'bignum' => undef, 'bigrat' => undef, diff -Nru perl-5.32.1/dist/Net-Ping/Changes perl-5.34.0/dist/Net-Ping/Changes --- perl-5.32.1/dist/Net-Ping/Changes 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Net-Ping/Changes 2020-11-18 22:09:15.000000000 +0000 @@ -1,5 +1,34 @@ CHANGES ------- +2.74 2020-09-09 09:21:39 rurban + Features + - Add ICMPv6_NI_REPLY support. + Bugfixes + - Fix icmp payload offset to match icmpv6 (JimC Leones GH #21) + Skip the 20 byte header to reliably find the various return types. + This unifies icmpv6 with icmp better. + - Fix $SOCKET::VERSION eval (Petr Pavlu, PR #22) + META Changes + - Fix and improve the META repository as hashref, license as arrayref + (Tom Hukins, PR #19) + - add TEST_REQUIRES + - sort MANIFEST + - add windows smokers: appveyor + Test fixes + - Improve the tcp test to localhost, when there is no route to localhost + (freebsd mostly) + - TODO a flaky 450_service.t on 127.0.0.1 on port 2 on Windows (analog to freebsd, ...) + (Christian Walde, PR #20) + - Skip 501_ping_icmpv6.t when icmpv6 cannot be initialized. Mostly due to missing + icmpv6 support. (GH #15) + - add more xt tests: t/602_kwalitee.t, t/603_meta.t, t/604_manifest.t + +2.73 Thu Feb 27 14:32:25 CET 2020 (rurban) + Bugfixes + - Fix shadowing of hash options in constructor (Patrick Heesom, RT #131919) + - Fix icmp v4 length with given bytes/data_size option (Patrick Heesom, RT #131919) + - Call _resolv as class method (Marc Reissner, GH #16) + 2.72 Thu 28 Mar 2019 09:01:39 AM CET (rurban) Features - add .cirrus.yml smoker https://cirrus-ci.com/github/rurban/Net-Ping diff -Nru perl-5.32.1/dist/Net-Ping/lib/Net/Ping.pm perl-5.34.0/dist/Net-Ping/lib/Net/Ping.pm --- perl-5.32.1/dist/Net-Ping/lib/Net/Ping.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Net-Ping/lib/Net/Ping.pm 2020-11-18 22:09:15.000000000 +0000 @@ -4,8 +4,11 @@ require Exporter; use strict; -our $hires; +use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION + $def_timeout $def_proto $def_factor $def_family + $max_datasize $pingstring $hires $source_verify $syn_forking); use Fcntl qw( F_GETFL F_SETFL O_NONBLOCK ); +use Socket 2.007; use Socket qw( SOCK_DGRAM SOCK_STREAM SOCK_RAW AF_INET PF_INET IPPROTO_TCP SOL_SOCKET SO_ERROR SO_BROADCAST IPPROTO_IP IP_TOS IP_TTL @@ -16,22 +19,22 @@ use Carp; use Time::HiRes; -our @ISA = qw(Exporter); -our @EXPORT = qw(pingecho); -our @EXPORT_OK = qw(wakeonlan); -our $VERSION = "2.72"; +@ISA = qw(Exporter); +@EXPORT = qw(pingecho); +@EXPORT_OK = qw(wakeonlan); +$VERSION = "2.74"; # Globals -our $def_timeout = 5; # Default timeout to wait for a reply -our $def_proto = "tcp"; # Default protocol to use for pinging -our $def_factor = 1.2; # Default exponential backoff rate. -our $def_family = AF_INET; # Default family. -our $max_datasize = 65535; # Maximum data bytes. recommended: 1472 (Ethernet MTU: 1500) +$def_timeout = 5; # Default timeout to wait for a reply +$def_proto = "tcp"; # Default protocol to use for pinging +$def_factor = 1.2; # Default exponential backoff rate. +$def_family = AF_INET; # Default family. +$max_datasize = 65535; # Maximum data bytes. recommended: 1472 (Ethernet MTU: 1500) # The data we exchange with the server for the stream protocol -our $pingstring = "pingschwingping!\n"; -our $source_verify = 1; # Default is to verify source endpoint -our $syn_forking = 0; +$pingstring = "pingschwingping!\n"; +$source_verify = 1; # Default is to verify source endpoint +$syn_forking = 0; # Constants @@ -44,7 +47,7 @@ #my $IPV6_HOPLIMIT = eval { Socket::IPV6_HOPLIMIT() }; # ping6 -h 0-255 my $qr_family = qr/^(?:(?:(:?ip)?v?(?:4|6))|${\AF_INET}|$AF_INET6)$/; my $qr_family4 = qr/^(?:(?:(:?ip)?v?4)|${\AF_INET})$/; -my $Socket_VERSION = eval { $Socket::VERSION }; +my $Socket_VERSION = eval $Socket::VERSION; if ($^O =~ /Win32/i) { # Hack to avoid this Win32 spewage: @@ -118,6 +121,13 @@ # some are still globals if ($k eq 'pingstring') { $pingstring = $proto->{$k} } if ($k eq 'source_verify') { $source_verify = $proto->{$k} } + # and some are local + $timeout = $proto->{$k} if ($k eq 'timeout'); + $data_size = $proto->{$k} if ($k eq 'data_size'); + $device = $proto->{$k} if ($k eq 'device'); + $tos = $proto->{$k} if ($k eq 'tos'); + $ttl = $proto->{$k} if ($k eq 'ttl'); + $family = $proto->{$k} if ($k eq 'family'); delete $proto->{$k}; } } @@ -143,7 +153,7 @@ if ($self->{'host'}) { my $host = $self->{'host'}; - my $ip = _resolv($host) or + my $ip = $self->_resolv($host) or carp("could not resolve host $host"); $self->{host} = $ip; $self->{family} = $ip->{family}; @@ -151,7 +161,7 @@ if ($self->{bind}) { my $addr = $self->{bind}; - my $ip = _resolv($addr) + my $ip = $self->_resolv($addr) or carp("could not resolve local addr $addr"); $self->{local_addr} = $ip; } else { @@ -245,7 +255,7 @@ $self->_setopts(); if ($self->{'gateway'}) { my $g = $self->{gateway}; - my $ip = _resolv($g) + my $ip = $self->_resolv($g) or croak("nonexistent gateway $g"); $self->{family} eq $AF_INET6 or croak("gateway requires the AF_INET6 family"); @@ -635,10 +645,11 @@ # h2ph "asm/socket.h" # require "asm/socket.ph"; use constant SO_BINDTODEVICE => 25; -use constant ICMP_ECHOREPLY => 0; # ICMP packet types +use constant ICMP_ECHOREPLY => 0; # ICMP packet types use constant ICMPv6_ECHOREPLY => 129; # ICMP packet types -use constant ICMP_UNREACHABLE => 3; # ICMP packet types +use constant ICMP_UNREACHABLE => 3; # ICMP packet types use constant ICMPv6_UNREACHABLE => 1; # ICMP packet types +use constant ICMPv6_NI_REPLY => 140; # ICMP packet types use constant ICMP_ECHO => 8; use constant ICMPv6_ECHO => 128; use constant ICMP_TIME_EXCEEDED => 11; # ICMP packet types @@ -687,6 +698,7 @@ $done, # set to 1 when we are done $ret, # Return value $recv_msg, # Received message including IP header + $recv_msg_len, # Length of recevied message, less any additional data $from_saddr, # sockaddr_in of sender $from_port, # Port packet was sent from $from_ip, # Packed IP of sender @@ -769,32 +781,27 @@ $from_pid = -1; $from_seq = -1; $from_saddr = recv($self->{fh}, $recv_msg, 1500, ICMP_FLAGS); + $recv_msg_len = length($recv_msg) - length($self->{data}); ($from_port, $from_ip) = _unpack_sockaddr_in($from_saddr, $ip->{family}); - ($from_type, $from_subcode) = unpack("C2", substr($recv_msg, 20, 2)); + # ICMP echo includes the header and ICMPv6 doesn't. + # IPv4 length($recv_msg) is 28 (20 header + 8 payload) + # while IPv6 length is only 8 (sans header). + my $off = ($ip->{family} == AF_INET) ? 20 : 0; # payload offset + ($from_type, $from_subcode) = unpack("C2", substr($recv_msg, $off, 2)); if ($from_type == ICMP_TIMESTAMP_REPLY) { - ($from_pid, $from_seq) = unpack("n3", substr($recv_msg, 24, 4)) - if length $recv_msg >= 28; - } elsif ($from_type == ICMP_ECHOREPLY) { + ($from_pid, $from_seq) = unpack("n3", substr($recv_msg, $off + 4, 4)) + if length $recv_msg >= $off + 8; + } elsif ($from_type == ICMP_ECHOREPLY || $from_type == ICMPv6_ECHOREPLY) { #warn "ICMP_ECHOREPLY: ", $ip->{family}, " ",$recv_msg, ":", length($recv_msg); - ($from_pid, $from_seq) = unpack("n2", substr($recv_msg, 24, 4)) - if ($ip->{family} == AF_INET && length $recv_msg == 28); + ($from_pid, $from_seq) = unpack("n2", substr($recv_msg, $off + 4, 4)) + if $recv_msg_len == $off + 8; + } elsif ($from_type == ICMPv6_NI_REPLY) { ($from_pid, $from_seq) = unpack("n2", substr($recv_msg, 4, 4)) if ($ip->{family} == $AF_INET6 && length $recv_msg == 8); - } elsif ($from_type == ICMPv6_ECHOREPLY) { - #($from_pid, $from_seq) = unpack("n3", substr($recv_msg, 24, 4)) - # if length $recv_msg >= 28; - #($from_pid, $from_seq) = unpack("n2", substr($recv_msg, 24, 4)) - # if ($ip->{family} == AF_INET && length $recv_msg == 28); - #warn "ICMPv6_ECHOREPLY: ", $ip->{family}, " ",$recv_msg, ":", length($recv_msg); - ($from_pid, $from_seq) = unpack("n2", substr($recv_msg, 4, 4)) - if ($ip->{family} == $AF_INET6 && length $recv_msg == 8); - #} elsif ($from_type == ICMPv6_NI_REPLY) { - # ($from_pid, $from_seq) = unpack("n2", substr($recv_msg, 4, 4)) - # if ($ip->{family} == $AF_INET6 && length $recv_msg == 8); } else { #warn "ICMP: ", $from_type, " ",$ip->{family}, " ",$recv_msg, ":", length($recv_msg); - ($from_pid, $from_seq) = unpack("n2", substr($recv_msg, 52, 4)) - if length $recv_msg >= 56; + ($from_pid, $from_seq) = unpack("n2", substr($recv_msg, $off + 32, 4)) + if length $recv_msg >= $off + 36; } $self->{from_ip} = $from_ip; $self->{from_type} = $from_type; @@ -2012,6 +2019,10 @@ } $p->close(); + $p = Net::Ping->new("icmpv6"); + $ip = "[fd00:dead:beef::4e]"; + print "$ip is alive.\n" if $p->ping($ip); + $p = Net::Ping->new("tcp", 2); # Try connecting to the www port instead of the echo port $p->port_number(scalar(getservbyname("http", "tcp"))); @@ -2357,7 +2368,7 @@ The L method used with the icmp protocol. -=item $p->ping_icmpv6([$host, $timeout, $family]) I +=item $p->ping_icmpv6([$host, $timeout, $family]) X The L method used with the icmpv6 protocol. @@ -2563,7 +2574,7 @@ =head1 COPYRIGHT -Copyright (c) 2017-2018, Reini Urban. All rights reserved. +Copyright (c) 2017-2020, Reini Urban. All rights reserved. Copyright (c) 2016, cPanel Inc. All rights reserved. diff -Nru perl-5.32.1/dist/Net-Ping/t/200_ping_tcp.t perl-5.34.0/dist/Net-Ping/t/200_ping_tcp.t --- perl-5.32.1/dist/Net-Ping/t/200_ping_tcp.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Net-Ping/t/200_ping_tcp.t 2020-11-18 22:09:15.000000000 +0000 @@ -44,14 +44,28 @@ }; like($@, qr/message type only supported on 'icmp' protocol/, "message_type() API only concern 'icmp' protocol"); -isnt($p->ping("localhost"), 0, 'Test on the default port'); +my $localhost = $p->ping("localhost"); +if ($localhost) { + isnt($p->ping("localhost"), 0, 'Test on the default port'); +} else { + ok(1, "SKIP localhost on the default port on $^O"); +} # Change to use the more common web port. # This will pull from /etc/services on UNIX. # (Make sure getservbyname works in scalar context.) -isnt($p->{port_num} = (getservbyname("http", "tcp") || 80), undef); +isnt($p->{port_num} = (getservbyname("http", "tcp") || 80), undef, "getservbyname http"); -isnt($p->ping("localhost"), 0, 'Test localhost on the web port'); +if ($localhost) { + isnt($p->ping("localhost"), 0, 'Test localhost on the web port'); +} else { + my $result = $p->ping("localhost"); + if ($result) { + isnt($p->ping("localhost"), 0, "localhost on the web port unexpectedly worked on $^O"); + } else { + ok(1, "SKIP localhost on the web port on $^O"); + } +} is($p->ping($fail_ip), 0, "Can't reach $fail_ip"); diff -Nru perl-5.32.1/dist/Net-Ping/t/450_service.t perl-5.34.0/dist/Net-Ping/t/450_service.t --- perl-5.32.1/dist/Net-Ping/t/450_service.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Net-Ping/t/450_service.t 2020-10-04 22:17:12.000000000 +0000 @@ -78,7 +78,7 @@ $p->{port_num} = $port2; { - local $TODO = "Believed not to work on $^O" if $^O =~ /^(?:hpux|os390|freebsd)$/; + local $TODO = "Believed not to work on $^O" if $^O =~ /^(?:hpux|MSWin32|os390|freebsd)$/; is($p->ping("127.0.0.1"), 1, 'second port is reachable'); } diff -Nru perl-5.32.1/dist/PathTools/Cwd.pm perl-5.34.0/dist/PathTools/Cwd.pm --- perl-5.32.1/dist/PathTools/Cwd.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/PathTools/Cwd.pm 2021-01-20 23:04:44.000000000 +0000 @@ -3,7 +3,7 @@ use Exporter; -our $VERSION = '3.78'; +our $VERSION = '3.80'; my $xs_version = $VERSION; $VERSION =~ tr/_//d; diff -Nru perl-5.32.1/dist/PathTools/Cwd.xs perl-5.34.0/dist/PathTools/Cwd.xs --- perl-5.32.1/dist/PathTools/Cwd.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/PathTools/Cwd.xs 2021-01-20 23:04:44.000000000 +0000 @@ -84,6 +84,9 @@ unsigned symlinks; int serrno; char remaining[MAXPATHLEN], next_token[MAXPATHLEN]; +#ifdef PERL_IMPLICIT_SYS + dTHX; +#endif serrno = errno; symlinks = 0; @@ -119,15 +122,24 @@ p = strchr(remaining, '/'); s = p ? p : remaining + remaining_len; + if ((STRLEN)(s - remaining) >= (STRLEN)sizeof(next_token)) { errno = ENAMETOOLONG; return (NULL); } memcpy(next_token, remaining, s - remaining); next_token[s - remaining] = '\0'; - remaining_len -= s - remaining; - if (p != NULL) - memmove(remaining, s + 1, remaining_len + 1); + + /* shift first component off front of path, including '/' */ + if (p) { + s++; /* skip '/' */ + remaining_len -= s - remaining; + /* the +1 includes the trailing '\0' */ + memmove(remaining, s, remaining_len + 1); + } + else + remaining_len = 0; + if (resolved[resolved_len - 1] != '/') { if (resolved_len + 1 >= MAXPATHLEN) { errno = ENAMETOOLONG; @@ -166,8 +178,8 @@ } #if defined(HAS_LSTAT) && defined(HAS_READLINK) && defined(HAS_SYMLINK) { - struct stat sb; - if (lstat(resolved, &sb) != 0) { + Stat_t sb; + if (PerlLIO_lstat(resolved, &sb) != 0) { if (errno == ENOENT && p == NULL) { errno = serrno; return (resolved); @@ -182,7 +194,7 @@ errno = ELOOP; return (NULL); } - slen = readlink(resolved, symlink, sizeof(symlink) - 1); + slen = PerlLIO_readlink(resolved, symlink, sizeof(symlink) - 1); if (slen < 0) return (NULL); symlink[slen] = '\0'; diff -Nru perl-5.32.1/dist/PathTools/lib/File/Spec/AmigaOS.pm perl-5.34.0/dist/PathTools/lib/File/Spec/AmigaOS.pm --- perl-5.32.1/dist/PathTools/lib/File/Spec/AmigaOS.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/PathTools/lib/File/Spec/AmigaOS.pm 2021-01-20 23:04:44.000000000 +0000 @@ -3,7 +3,7 @@ use strict; require File::Spec::Unix; -our $VERSION = '3.78'; +our $VERSION = '3.80'; $VERSION =~ tr/_//d; our @ISA = qw(File::Spec::Unix); diff -Nru perl-5.32.1/dist/PathTools/lib/File/Spec/Cygwin.pm perl-5.34.0/dist/PathTools/lib/File/Spec/Cygwin.pm --- perl-5.32.1/dist/PathTools/lib/File/Spec/Cygwin.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/PathTools/lib/File/Spec/Cygwin.pm 2021-01-20 23:04:44.000000000 +0000 @@ -3,7 +3,7 @@ use strict; require File::Spec::Unix; -our $VERSION = '3.78'; +our $VERSION = '3.80'; $VERSION =~ tr/_//d; our @ISA = qw(File::Spec::Unix); diff -Nru perl-5.32.1/dist/PathTools/lib/File/Spec/Epoc.pm perl-5.34.0/dist/PathTools/lib/File/Spec/Epoc.pm --- perl-5.32.1/dist/PathTools/lib/File/Spec/Epoc.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/PathTools/lib/File/Spec/Epoc.pm 2021-01-20 23:04:44.000000000 +0000 @@ -2,7 +2,7 @@ use strict; -our $VERSION = '3.78'; +our $VERSION = '3.80'; $VERSION =~ tr/_//d; require File::Spec::Unix; diff -Nru perl-5.32.1/dist/PathTools/lib/File/Spec/Functions.pm perl-5.34.0/dist/PathTools/lib/File/Spec/Functions.pm --- perl-5.32.1/dist/PathTools/lib/File/Spec/Functions.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/PathTools/lib/File/Spec/Functions.pm 2021-01-20 23:04:44.000000000 +0000 @@ -3,7 +3,7 @@ use File::Spec; use strict; -our $VERSION = '3.78'; +our $VERSION = '3.80'; $VERSION =~ tr/_//d; require Exporter; diff -Nru perl-5.32.1/dist/PathTools/lib/File/Spec/Mac.pm perl-5.34.0/dist/PathTools/lib/File/Spec/Mac.pm --- perl-5.32.1/dist/PathTools/lib/File/Spec/Mac.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/PathTools/lib/File/Spec/Mac.pm 2021-01-20 23:04:44.000000000 +0000 @@ -4,7 +4,7 @@ use Cwd (); require File::Spec::Unix; -our $VERSION = '3.78'; +our $VERSION = '3.80'; $VERSION =~ tr/_//d; our @ISA = qw(File::Spec::Unix); diff -Nru perl-5.32.1/dist/PathTools/lib/File/Spec/OS2.pm perl-5.34.0/dist/PathTools/lib/File/Spec/OS2.pm --- perl-5.32.1/dist/PathTools/lib/File/Spec/OS2.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/PathTools/lib/File/Spec/OS2.pm 2021-01-20 23:04:44.000000000 +0000 @@ -4,7 +4,7 @@ use Cwd (); require File::Spec::Unix; -our $VERSION = '3.78'; +our $VERSION = '3.80'; $VERSION =~ tr/_//d; our @ISA = qw(File::Spec::Unix); diff -Nru perl-5.32.1/dist/PathTools/lib/File/Spec/Unix.pm perl-5.34.0/dist/PathTools/lib/File/Spec/Unix.pm --- perl-5.32.1/dist/PathTools/lib/File/Spec/Unix.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/PathTools/lib/File/Spec/Unix.pm 2021-01-20 23:04:44.000000000 +0000 @@ -3,7 +3,7 @@ use strict; use Cwd (); -our $VERSION = '3.78'; +our $VERSION = '3.80'; $VERSION =~ tr/_//d; =head1 NAME diff -Nru perl-5.32.1/dist/PathTools/lib/File/Spec/VMS.pm perl-5.34.0/dist/PathTools/lib/File/Spec/VMS.pm --- perl-5.32.1/dist/PathTools/lib/File/Spec/VMS.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/PathTools/lib/File/Spec/VMS.pm 2021-01-20 23:04:44.000000000 +0000 @@ -4,7 +4,7 @@ use Cwd (); require File::Spec::Unix; -our $VERSION = '3.78'; +our $VERSION = '3.80'; $VERSION =~ tr/_//d; our @ISA = qw(File::Spec::Unix); diff -Nru perl-5.32.1/dist/PathTools/lib/File/Spec/Win32.pm perl-5.34.0/dist/PathTools/lib/File/Spec/Win32.pm --- perl-5.32.1/dist/PathTools/lib/File/Spec/Win32.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/PathTools/lib/File/Spec/Win32.pm 2021-01-20 23:04:44.000000000 +0000 @@ -5,7 +5,7 @@ use Cwd (); require File::Spec::Unix; -our $VERSION = '3.79'; +our $VERSION = '3.80'; $VERSION =~ tr/_//d; our @ISA = qw(File::Spec::Unix); diff -Nru perl-5.32.1/dist/PathTools/lib/File/Spec.pm perl-5.34.0/dist/PathTools/lib/File/Spec.pm --- perl-5.32.1/dist/PathTools/lib/File/Spec.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/PathTools/lib/File/Spec.pm 2021-01-20 23:04:44.000000000 +0000 @@ -2,7 +2,7 @@ use strict; -our $VERSION = '3.78'; +our $VERSION = '3.80'; $VERSION =~ tr/_//d; my %module = ( diff -Nru perl-5.32.1/dist/PathTools/t/cwd_enoent.t perl-5.34.0/dist/PathTools/t/cwd_enoent.t --- perl-5.32.1/dist/PathTools/t/cwd_enoent.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/PathTools/t/cwd_enoent.t 2020-11-18 22:09:15.000000000 +0000 @@ -26,6 +26,8 @@ if $type eq "perl" && !(($Config{prefix} =~ m/\//) && $^O ne "cygwin"); + # https://github.com/Perl/perl5/issues/16525 + # https://bugs.dragonflybsd.org/issues/3250 skip "getcwd() doesn't fail on non-existent directories on this platform", 4 if $type eq 'regular' && $^O eq 'dragonfly'; diff -Nru perl-5.32.1/dist/PathTools/t/cwd.t perl-5.34.0/dist/PathTools/t/cwd.t --- perl-5.32.1/dist/PathTools/t/cwd.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/PathTools/t/cwd.t 2021-01-20 23:04:44.000000000 +0000 @@ -187,6 +187,10 @@ SKIP: { skip "no symlinks on this platform", 2+$EXTRA_ABSPATH_TESTS unless $Config{d_symlink} && $^O !~ m!^(qnx|nto)!; + # on Win32 GetCurrentDirectory() includes the symlink if + # you chdir() to a path including the symlink. + skip "Win32 symlinks are unusual", 2+$EXTRA_ABSPATH_TESTS if $^O eq "MSWin32"; + my $file = "linktest"; mkpath([$Test_Dir], 0, 0777); symlink $Test_Dir, $file; diff -Nru perl-5.32.1/dist/Safe/Safe.pm perl-5.34.0/dist/Safe/Safe.pm --- perl-5.32.1/dist/Safe/Safe.pm 2021-01-09 12:15:54.000000000 +0000 +++ perl-5.34.0/dist/Safe/Safe.pm 2020-10-04 22:17:12.000000000 +0000 @@ -3,7 +3,7 @@ use 5.003_11; use Scalar::Util qw(reftype refaddr); -$Safe::VERSION = "2.41_01"; +$Safe::VERSION = "2.43"; # *** Don't declare any lexicals above this point *** # @@ -67,7 +67,7 @@ # particular code points don't cause it to load. # (Swashes are cached internally by perl in PL_utf8_* variables # independent of being inside/outside of Safe. So once loaded they can be) -do { my $a = pack('U',0x100); my $b = chr 0x101; utf8::upgrade $b; $a =~ /$b/i }; +do { my $a = pack('U',0x100); $a =~ m/\x{1234}/; $a =~ tr/\x{1234}//; }; # now we can safely include utf8::SWASHNEW in $default_share defined below. my $default_root = 0; diff -Nru perl-5.32.1/dist/Safe/t/safeutf8.t perl-5.34.0/dist/Safe/t/safeutf8.t --- perl-5.32.1/dist/Safe/t/safeutf8.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Safe/t/safeutf8.t 2020-10-04 22:17:12.000000000 +0000 @@ -22,11 +22,7 @@ # Fails with "Undefined subroutine PLPerl::utf8::SWASHNEW called" # if SWASHNEW is not shared, else returns true if unicode logic is working. # (For early Perls we don't take into account EBCDIC, so will fail there -my $trigger = q{ my $a = pack('U',0xC4); my $b = chr } - . (($] lt 5.007_003) ? "" : 'utf8::unicode_to_native(') - . '0xE4' - . (($] lt 5.007_003) ? "" : ')') - . q{; utf8::upgrade $b; $a =~ /$b/i }; +my $trigger = q{ my $a = pack('U',0xC4); $a =~ tr/\x{1234}//rd }; ok $safe->reval( $trigger ), 'trigger expression should return true'; is $@, '', 'trigger expression should not die'; diff -Nru perl-5.32.1/dist/Storable/Storable.pm perl-5.34.0/dist/Storable/Storable.pm --- perl-5.32.1/dist/Storable/Storable.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Storable/Storable.pm 2020-10-24 18:43:34.000000000 +0000 @@ -28,7 +28,7 @@ our ($canonical, $forgive_me); BEGIN { - our $VERSION = '3.21'; + our $VERSION = '3.23'; } our $recursion_limit; @@ -1423,7 +1423,7 @@ and references to tied items support. Benjamin Holzman added a performance improvement for overloaded classes; thanks to Grant Street Group for footing the bill. -Reini Urban took over maintainance from p5p, and added security fixes +Reini Urban took over maintenance from p5p, and added security fixes and huge object support. =head1 AUTHOR diff -Nru perl-5.32.1/dist/Storable/Storable.xs perl-5.34.0/dist/Storable/Storable.xs --- perl-5.32.1/dist/Storable/Storable.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Storable/Storable.xs 2020-10-04 22:17:13.000000000 +0000 @@ -16,18 +16,16 @@ #include #include -#ifndef PATCHLEVEL -#include /* Perl's one, needed since 5.6 */ -#endif - -#if !defined(PERL_VERSION) || PERL_VERSION < 10 || (PERL_VERSION == 10 && PERL_SUBVERSION < 1) -#define NEED_PL_parser -#define NEED_sv_2pv_flags -#define NEED_load_module -#define NEED_vload_module -#define NEED_newCONSTSUB -#define NEED_newSVpvn_flags -#define NEED_newRV_noinc +#ifndef PERL_VERSION_LT +# if !defined(PERL_VERSION) || !defined(PERL_REVISION) || ( PERL_REVISION == 5 && ( PERL_VERSION < 10 || (PERL_VERSION == 10 && PERL_SUBVERSION < 1) ) ) +# define NEED_PL_parser +# define NEED_sv_2pv_flags +# define NEED_load_module +# define NEED_vload_module +# define NEED_newCONSTSUB +# define NEED_newSVpvn_flags +# define NEED_newRV_noinc +# endif #include "ppport.h" /* handle old perls */ #endif @@ -521,7 +519,7 @@ #if defined(MULTIPLICITY) || defined(PERL_OBJECT) || defined(PERL_CAPI) -#if (PATCHLEVEL <= 4) && (SUBVERSION < 68) +#if PERL_VERSION_LT(5,4,68) #define dSTCXT_SV \ SV *perinterp_sv = get_sv(MY_VERSION, 0) #else /* >= perl5.004_68 */ @@ -1012,22 +1010,22 @@ #define STORABLE_BIN_MAJOR 2 /* Binary major "version" */ #define STORABLE_BIN_MINOR 11 /* Binary minor "version" */ -#if (PATCHLEVEL <= 5) +#if PERL_VERSION_LT(5,6,0) #define STORABLE_BIN_WRITE_MINOR 4 #elif !defined (SvVOK) /* * Perl 5.6.0-5.8.0 can do weak references, but not vstring magic. */ #define STORABLE_BIN_WRITE_MINOR 8 -#elif PATCHLEVEL >= 19 +#elif PERL_VERSION_GE(5,19,0) /* Perl 5.19 takes away the special meaning of PL_sv_undef in arrays. */ /* With 3.x we added LOBJECT */ #define STORABLE_BIN_WRITE_MINOR 11 #else #define STORABLE_BIN_WRITE_MINOR 9 -#endif /* (PATCHLEVEL <= 5) */ +#endif /* PERL_VERSION_LT(5,6,0) */ -#if (PATCHLEVEL < 8 || (PATCHLEVEL == 8 && SUBVERSION < 1)) +#if PERL_VERSION_LT(5,8,1) #define PL_sv_placeholder PL_sv_undef #endif @@ -1354,7 +1352,7 @@ * sortsv is not available ( <= 5.6.1 ). */ -#if (PATCHLEVEL <= 6) +#if PERL_VERSION_LT(5,7,0) #if defined(USE_ITHREADS) @@ -1373,12 +1371,12 @@ #endif /* USE_ITHREADS */ -#else /* PATCHLEVEL > 6 */ +#else /* PERL >= 5.7.0 */ #define STORE_HASH_SORT \ sortsv(AvARRAY(av), len, Perl_sv_cmp); -#endif /* PATCHLEVEL <= 6 */ +#endif /* PERL_VERSION_LT(5,7,0) */ static int store(pTHX_ stcxt_t *cxt, SV *sv); static SV *retrieve(pTHX_ stcxt_t *cxt, const char *cname); @@ -1650,7 +1648,7 @@ * * It is reported fixed in 5.005, hence the #if. */ -#if PERL_VERSION >= 5 +#if PERL_VERSION_GE(5,5,0) #define HBUCKETS 4096 /* Buckets for %hseen */ #ifndef USE_PTR_TABLE HvMAX(cxt->hseen) = HBUCKETS - 1; /* keys %hseen = $HBUCKETS; */ @@ -1667,7 +1665,7 @@ cxt->hclass = newHV(); /* Where seen classnames are stored */ -#if PERL_VERSION >= 5 +#if PERL_VERSION_GE(5,5,0) HvMAX(cxt->hclass) = HBUCKETS - 1; /* keys %hclass = $HBUCKETS; */ #endif @@ -2244,7 +2242,7 @@ return av; } -#if PERL_VERSION < 15 +#if PERL_VERSION_LT(5,15,0) static void cleanup_recursive_av(pTHX_ AV* av) { SSize_t i = AvFILLp(av); @@ -2252,7 +2250,7 @@ if (SvMAGICAL(av)) return; while (i >= 0) { if (arr[i]) { -#if PERL_VERSION < 14 +#if PERL_VERSION_LT(5,14,0) arr[i] = NULL; #else SvREFCNT_dec(arr[i]); @@ -2283,7 +2281,7 @@ } i--; } -#if PERL_VERSION < 8 +#if PERL_VERSION_LT(5,8,0) ((XPVHV*)SvANY(hv))->xhv_array = NULL; #else HvARRAY(hv) = NULL; @@ -2394,7 +2392,7 @@ TRACEME((">ref recur_depth %" IVdf ", recur_sv (0x%" UVxf ") max %" IVdf, cxt->recur_depth, PTR2UV(cxt->recur_sv), cxt->max_recur_depth)); if (RECURSION_TOO_DEEP()) { -#if PERL_VERSION < 15 +#if PERL_VERSION_LT(5,15,0) cleanup_recursive_data(aTHX_ (SV*)sv); #endif CROAK((MAX_DEPTH_ERROR)); @@ -2498,7 +2496,7 @@ /* public string - go direct to string read. */ goto string_readlen; } else if ( -#if (PATCHLEVEL <= 6) +#if PERL_VERSION_LT(5,7,0) /* For 5.6 and earlier NV flag trumps IV flag, so only use integer direct if NV flag is off. */ (flags & (SVf_NOK | SVf_IOK)) == SVf_IOK @@ -2576,7 +2574,7 @@ */ Zero(&nv, 1, NV_bytes); #endif -#if (PATCHLEVEL <= 6) +#if PERL_VERSION_LT(5,7,0) nv.nv = SvNV(sv); /* * Watch for number being an integer in disguise. @@ -2699,7 +2697,7 @@ if (recur_sv != (SV*)av) { if (RECURSION_TOO_DEEP()) { /* with <= 5.14 it recurses in the cleanup also, needing 2x stack size */ -#if PERL_VERSION < 15 +#if PERL_VERSION_LT(5,15,0) cleanup_recursive_data(aTHX_ (SV*)av); #endif CROAK((MAX_DEPTH_ERROR)); @@ -2717,7 +2715,7 @@ STORE_SV_UNDEF(); continue; } -#if PATCHLEVEL >= 19 +#if PERL_VERSION_GE(5,19,0) /* In 5.19.3 and up, &PL_sv_undef can actually be stored in * an array; it no longer represents nonexistent elements. * Historically, we have used SX_SV_UNDEF in arrays for @@ -2748,7 +2746,7 @@ } -#if (PATCHLEVEL <= 6) +#if PERL_VERSION_LT(5,7,0) /* * sortcmp @@ -2765,7 +2763,7 @@ return sv_cmp(*(SV * const *) a, *(SV * const *) b); } -#endif /* PATCHLEVEL <= 6 */ +#endif /* PERL_VERSION_LT(5,7,0) */ /* * store_hash @@ -2861,7 +2859,7 @@ ++cxt->recur_depth; } if (RECURSION_TOO_DEEP_HASH()) { -#if PERL_VERSION < 15 +#if PERL_VERSION_LT(5,15,0) cleanup_recursive_data(aTHX_ (SV*)hv); #endif CROAK((MAX_DEPTH_ERROR)); @@ -3275,7 +3273,7 @@ ++cxt->recur_depth; } if (RECURSION_TOO_DEEP_HASH()) { -#if PERL_VERSION < 15 +#if PERL_VERSION_LT(5,15,0) cleanup_recursive_data(aTHX_ (SV*)hv); #endif CROAK((MAX_DEPTH_ERROR)); @@ -3311,7 +3309,7 @@ */ static int store_code(pTHX_ stcxt_t *cxt, CV *cv) { -#if PERL_VERSION < 6 +#if PERL_VERSION_LT(5,6,0) /* * retrieve_code does not work with perl 5.005 or less */ @@ -3410,10 +3408,10 @@ #endif } -#if PERL_VERSION < 8 +#if PERL_VERSION_LT(5,8,0) # define PERL_MAGIC_qr 'r' /* precompiled qr// regex */ # define BFD_Svs_SMG_OR_RMG SVs_RMG -#elif ((PERL_VERSION==8) && (PERL_SUBVERSION >= 1) || (PERL_VERSION>8)) +#elif PERL_VERSION_GE(5,8,1) # define BFD_Svs_SMG_OR_RMG SVs_SMG # define MY_PLACEHOLDER PL_sv_placeholder #else @@ -3424,7 +3422,7 @@ static int get_regexp(pTHX_ stcxt_t *cxt, SV* sv, SV **re, SV **flags) { dSP; SV* rv; -#if PERL_VERSION >= 12 +#if PERL_VERSION_GE(5,12,0) CV *cv = get_cv("re::regexp_pattern", 0); #else CV *cv = get_cv("Storable::_regexp_pattern", 0); @@ -4286,7 +4284,7 @@ { switch (SvTYPE(sv)) { case SVt_NULL: -#if PERL_VERSION <= 10 +#if PERL_VERSION_LT(5,11,0) case SVt_IV: #endif case SVt_NV: @@ -4296,7 +4294,7 @@ */ return svis_SCALAR; case SVt_PV: -#if PERL_VERSION <= 10 +#if PERL_VERSION_LT(5,11,0) case SVt_RV: #else case SVt_IV: @@ -4314,7 +4312,7 @@ */ return SvROK(sv) ? svis_REF : svis_SCALAR; case SVt_PVMG: -#if PERL_VERSION <= 10 +#if PERL_VERSION_LT(5,11,0) if ((SvFLAGS(sv) & (SVs_OBJECT|SVf_OK|SVs_GMG|SVs_SMG|SVs_RMG)) == (SVs_OBJECT|BFD_Svs_SMG_OR_RMG) && mg_find(sv, PERL_MAGIC_qr)) { @@ -4327,7 +4325,7 @@ (mg_find(sv, 'p'))) return svis_TIED_ITEM; /* FALL THROUGH */ -#if PERL_VERSION < 9 +#if PERL_VERSION_LT(5,9,0) case SVt_PVBM: #endif if ((SvFLAGS(sv) & (SVs_GMG|SVs_SMG|SVs_RMG)) == @@ -4345,10 +4343,10 @@ return svis_HASH; case SVt_PVCV: return svis_CODE; -#if PERL_VERSION > 8 +#if PERL_VERSION_GE(5,9,0) /* case SVt_INVLIST: */ #endif -#if PERL_VERSION > 10 +#if PERL_VERSION_GE(5,11,0) case SVt_REGEXP: return svis_REGEXP; #endif @@ -6689,7 +6687,7 @@ */ static SV *retrieve_code(pTHX_ stcxt_t *cxt, const char *cname) { -#if PERL_VERSION < 6 +#if PERL_VERSION_LT(5,6,0) CROAK(("retrieve_code does not work with perl 5.005 or less\n")); #else dSP; @@ -6817,7 +6815,7 @@ } static SV *retrieve_regexp(pTHX_ stcxt_t *cxt, const char *cname) { -#if PERL_VERSION >= 8 +#if PERL_VERSION_GE(5,8,0) int op_flags; U32 re_len; STRLEN flags_len; @@ -7582,7 +7580,7 @@ if (!sv) { TRACEMED(("retrieve ERROR")); -#if (PATCHLEVEL <= 4) +#if PERL_VERSION_LT(5,5,0) /* perl 5.00405 seems to screw up at this point with an 'attempt to modify a read only value' error reported in the eval { $self = pretrieve(*FILE) } in _retrieve. @@ -7712,7 +7710,7 @@ */ if ((SvTYPE(sv) == SVt_PVLV -#if PERL_VERSION < 8 +#if PERL_VERSION_LT(5,8,0) || SvTYPE(sv) == SVt_PVMG #endif ) && (SvFLAGS(sv) & (SVs_GMG|SVs_SMG|SVs_RMG)) == diff -Nru perl-5.32.1/dist/Storable/t/canonical.t perl-5.34.0/dist/Storable/t/canonical.t --- perl-5.32.1/dist/Storable/t/canonical.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Storable/t/canonical.t 2021-01-20 23:04:44.000000000 +0000 @@ -34,7 +34,7 @@ eval { require Digest::MD5; }; $gotmd5 = !$@; -diag "Will use Digest::MD5" if $gotmd5; +note "Will use Digest::MD5" if $gotmd5; # Use Data::Dumper if debugging and it is available to create an ASCII dump diff -Nru perl-5.32.1/dist/Storable/t/malice.t perl-5.34.0/dist/Storable/t/malice.t --- perl-5.32.1/dist/Storable/t/malice.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Storable/t/malice.t 2020-10-04 22:17:13.000000000 +0000 @@ -63,7 +63,7 @@ is (ref $clone, "HASH", "Get hash back"); is (scalar keys %$clone, 1, "with 1 key"); is ((keys %$clone)[0], "perl", "which is correct"); - is ($clone->{perl}, "rules"); + is ($clone->{perl}, "rules", "Got expected value when looking up key in clone"); } sub test_header { @@ -238,7 +238,7 @@ } } -ok (defined store(\%hash, $file)); +ok (defined store(\%hash, $file), "store() returned defined value"); my $expected = 20 + length ($file_magic_str) + $other_magic + $fancy; my $length = -s $file; @@ -266,7 +266,7 @@ # Network order. unlink $file or die "Can't unlink '$file': $!"; -ok (defined nstore(\%hash, $file)); +ok (defined nstore(\%hash, $file), "nstore() returned defined value"); $expected = 20 + length ($file_magic_str) + $network_magic + $fancy; $length = -s $file; diff -Nru perl-5.32.1/dist/threads/lib/threads.pm perl-5.34.0/dist/threads/lib/threads.pm --- perl-5.32.1/dist/threads/lib/threads.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/threads/lib/threads.pm 2020-10-04 22:17:13.000000000 +0000 @@ -5,7 +5,7 @@ use strict; use warnings; -our $VERSION = '2.25'; # remember to update version in POD! +our $VERSION = '2.26'; # remember to update version in POD! my $XS_VERSION = $VERSION; $VERSION = eval $VERSION; @@ -134,7 +134,7 @@ =head1 VERSION -This document describes threads version 2.25 +This document describes threads version 2.26 =head1 WARNING diff -Nru perl-5.32.1/dist/threads/t/libc.t perl-5.34.0/dist/threads/t/libc.t --- perl-5.32.1/dist/threads/t/libc.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/threads/t/libc.t 2021-01-20 23:04:44.000000000 +0000 @@ -9,6 +9,12 @@ skip_all(q/Perl not compiled with 'useithreads'/); } + my $time_out_factor = $ENV{PERL_TEST_TIME_OUT_FACTOR} || 1; + $time_out_factor = 1 if $time_out_factor < 1; + + # Guard against bugs that result in deadlock + watchdog(1 * 60 * $time_out_factor); + plan(11); } diff -Nru perl-5.32.1/dist/threads/threads.xs perl-5.34.0/dist/threads/threads.xs --- perl-5.32.1/dist/threads/threads.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/threads/threads.xs 2020-10-04 22:17:13.000000000 +0000 @@ -421,7 +421,7 @@ ithread_mg_free, /* free */ 0, /* copy */ ithread_mg_dup, /* dup */ -#if (PERL_VERSION > 8) || (PERL_VERSION == 8 && PERL_SUBVERSION > 8) +#if PERL_VERSION_GT(5,8,8) 0 /* local */ #endif }; @@ -751,7 +751,7 @@ AV *params; SV **array; -#if PERL_VERSION <= 8 && PERL_SUBVERSION <= 7 +#if PERL_VERSION_LE(5,8,7) SV **tmps_tmp = PL_tmps_stack; IV tmps_ix = PL_tmps_ix; #endif @@ -849,7 +849,7 @@ * context for the duration of our work for new interpreter. */ { -#if (PERL_VERSION > 13) || (PERL_VERSION == 13 && PERL_SUBVERSION > 1) +#if PERL_VERSION_GE(5,13,2) CLONE_PARAMS *clone_param = Perl_clone_params_new(aTHX, thread->interp); #else CLONE_PARAMS clone_param_s; @@ -859,7 +859,7 @@ MY_CXT_CLONE; -#if (PERL_VERSION < 13) || (PERL_VERSION == 13 && PERL_SUBVERSION <= 1) +#if PERL_VERSION_LT(5,13,2) clone_param->flags = 0; #endif @@ -886,7 +886,7 @@ perl_clone() and sv_dup_inc(). Hence copy the parameters somewhere under our control first, before duplicating. */ if (num_params) { -#if (PERL_VERSION > 8) +#if PERL_VERSION_GE(5,9,0) Copy(parent_perl->Istack_base + params_start, array, num_params, SV *); #else Copy(parent_perl->Tstack_base + params_start, array, num_params, SV *); @@ -897,11 +897,11 @@ } } -#if (PERL_VERSION > 13) || (PERL_VERSION == 13 && PERL_SUBVERSION > 1) +#if PERL_VERSION_GE(5,13,2) Perl_clone_params_del(clone_param); #endif -#if PERL_VERSION <= 8 && PERL_SUBVERSION <= 7 +#if PERL_VERSION_LT(5,8,8) /* The code below checks that anything living on the tmps stack and * has been cloned (so it lives in the ptr_table) has a refcount * higher than 0. @@ -1339,7 +1339,7 @@ /* Get the return value from the call_sv */ /* Objects do not survive this process - FIXME */ if ((thread->gimme & G_WANT) != G_VOID) { -#if (PERL_VERSION < 13) || (PERL_VERSION == 13 && PERL_SUBVERSION <= 1) +#if PERL_VERSION_LT(5,13,2) AV *params_copy; PerlInterpreter *other_perl; CLONE_PARAMS clone_params; @@ -1766,7 +1766,7 @@ /* If thread died, then clone the error into the calling thread */ if (thread->state & PERL_ITHR_DIED) { -#if (PERL_VERSION < 13) || (PERL_VERSION == 13 && PERL_SUBVERSION <= 1) +#if PERL_VERSION_LT(5,13,2) PerlInterpreter *other_perl; CLONE_PARAMS clone_params; ithread *current_thread; diff -Nru perl-5.32.1/dist/threads-shared/lib/threads/shared.pm perl-5.34.0/dist/threads-shared/lib/threads/shared.pm --- perl-5.32.1/dist/threads-shared/lib/threads/shared.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/threads-shared/lib/threads/shared.pm 2020-10-04 22:17:13.000000000 +0000 @@ -8,7 +8,7 @@ use Scalar::Util qw(reftype refaddr blessed); -our $VERSION = '1.61'; # Please update the pod, too. +our $VERSION = '1.62'; # Please update the pod, too. my $XS_VERSION = $VERSION; $VERSION = eval $VERSION; @@ -196,7 +196,7 @@ =head1 VERSION -This document describes threads::shared version 1.61 +This document describes threads::shared version 1.62 =head1 SYNOPSIS diff -Nru perl-5.32.1/dist/threads-shared/shared.xs perl-5.34.0/dist/threads-shared/shared.xs --- perl-5.32.1/dist/threads-shared/shared.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/threads-shared/shared.xs 2020-10-04 22:17:13.000000000 +0000 @@ -1183,7 +1183,7 @@ * This is called when perl is about to access an element of * the array - */ -#if PERL_VERSION >= 11 +#if PERL_VERSION_GE(5,11,0) static int sharedsv_array_mg_copy(pTHX_ SV *sv, MAGIC* mg, SV *nsv, const char *name, I32 namlen) diff -Nru perl-5.32.1/dist/Time-HiRes/Changes perl-5.34.0/dist/Time-HiRes/Changes --- perl-5.32.1/dist/Time-HiRes/Changes 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Time-HiRes/Changes 2020-10-04 22:17:13.000000000 +0000 @@ -2,6 +2,20 @@ {{NEXT}} + - Remove obsolete vms code + - Use core version compare + +1.9764 [2020-08-10] + - Fix a bunch of repeated-word typos + - Fix compilation with Visual C++ 2013 and older + - Implement clock_gettime() and clock_getres() for win32 + - Remove workaround for an ancient Devel::PPPort bug + - Remove the remains of MacOS classic support + - Remove code for perls older than 5.6 + - Remove vestiges of mpeix support (removed in 5.17.x) + - Remove trailing blanks + - Add links to pod + 1.9760 [2019-02-18] - make utime() available only if we have both fd and name setting [RT #133030] diff -Nru perl-5.32.1/dist/Time-HiRes/HiRes.pm perl-5.34.0/dist/Time-HiRes/HiRes.pm --- perl-5.32.1/dist/Time-HiRes/HiRes.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Time-HiRes/HiRes.pm 2021-02-21 11:01:31.000000000 +0000 @@ -50,7 +50,7 @@ stat lstat utime ); -our $VERSION = '1.9764'; +our $VERSION = '1.9767'; our $XS_VERSION = $VERSION; $VERSION = eval $VERSION; diff -Nru perl-5.32.1/dist/Time-HiRes/HiRes.xs perl-5.34.0/dist/Time-HiRes/HiRes.xs --- perl-5.32.1/dist/Time-HiRes/HiRes.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Time-HiRes/HiRes.xs 2021-02-21 11:01:31.000000000 +0000 @@ -18,6 +18,7 @@ #include "EXTERN.h" #include "perl.h" #include "XSUB.h" +#include "reentr.h" #ifdef USE_PPPORT_H # include "ppport.h" #endif @@ -42,12 +43,6 @@ } #endif -#define PERL_VERSION_DECIMAL(r,v,s) (r*1000000 + v*1000 + s) -#define PERL_DECIMAL_VERSION \ - PERL_VERSION_DECIMAL(PERL_REVISION,PERL_VERSION,PERL_SUBVERSION) -#define PERL_VERSION_GE(r,v,s) \ - (PERL_DECIMAL_VERSION >= PERL_VERSION_DECIMAL(r,v,s)) - #ifndef GCC_DIAG_IGNORE # define GCC_DIAG_IGNORE(x) # define GCC_DIAG_RESTORE @@ -139,8 +134,12 @@ unsigned __int64 reset_time; } my_cxt_t; -/* Visual C++ 2013 and older don't have the timespec structure */ -# if defined(_MSC_VER) && _MSC_VER < 1900 +/* Visual C++ 2013 and older don't have the timespec structure. + * Neither do mingw.org compilers with MinGW runtimes older than 3.22. */ +# if((defined(_MSC_VER) && _MSC_VER < 1900) || \ + (defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) && \ + defined(__MINGW32_MAJOR_VERSION) && (__MINGW32_MAJOR_VERSION < 3 || \ + (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION < 22)))) struct timespec { time_t tv_sec; long tv_nsec; @@ -323,193 +322,6 @@ #endif /* #if defined(WIN32) || defined(CYGWIN_WITH_W32API) */ -#if !defined(HAS_GETTIMEOFDAY) && defined(VMS) -# define HAS_GETTIMEOFDAY - -# include -# include /* gettimeofday */ -# include /* qdiv */ -# include /* sys$gettim */ -# include -# ifdef __VAX -# include /* lib$ediv() */ -# endif - -/* - VMS binary time is expressed in 100 nano-seconds since - system base time which is 17-NOV-1858 00:00:00.00 -*/ - -# define DIV_100NS_TO_SECS 10000000L -# define DIV_100NS_TO_USECS 10L - -/* - gettimeofday is supposed to return times since the epoch - so need to determine this in terms of VMS base time -*/ -static $DESCRIPTOR(dscepoch,"01-JAN-1970 00:00:00.00"); - -# ifdef __VAX -static long base_adjust[2]={0L,0L}; -# else -static __int64 base_adjust=0; -# endif - -/* - - If we don't have gettimeofday, then likely we are on a VMS machine that - operates on local time rather than UTC...so we have to zone-adjust. - This code gleefully swiped from VMS.C - -*/ -/* method used to handle UTC conversions: - * 1 == CRTL gmtime(); 2 == SYS$TIMEZONE_DIFFERENTIAL; 3 == no correction - */ -static int gmtime_emulation_type; -/* number of secs to add to UTC POSIX-style time to get local time */ -static long int utc_offset_secs; -static struct dsc$descriptor_s fildevdsc = - { 12, DSC$K_DTYPE_T, DSC$K_CLASS_S, "LNM$FILE_DEV" }; -static struct dsc$descriptor_s *fildev[] = { &fildevdsc, NULL }; - -static time_t toutc_dst(time_t loc) { - struct tm *rsltmp; - - if ((rsltmp = localtime(&loc)) == NULL) return -1; - loc -= utc_offset_secs; - if (rsltmp->tm_isdst) loc -= 3600; - return loc; -} - -static time_t toloc_dst(time_t utc) { - struct tm *rsltmp; - - utc += utc_offset_secs; - if ((rsltmp = localtime(&utc)) == NULL) return -1; - if (rsltmp->tm_isdst) utc += 3600; - return utc; -} - -# define _toutc(secs) ((secs) == (time_t) -1 ? (time_t) -1 : \ - ((gmtime_emulation_type || timezone_setup()), \ - (gmtime_emulation_type == 1 ? toutc_dst(secs) : \ - ((secs) - utc_offset_secs)))) - -# define _toloc(secs) ((secs) == (time_t) -1 ? (time_t) -1 : \ - ((gmtime_emulation_type || timezone_setup()), \ - (gmtime_emulation_type == 1 ? toloc_dst(secs) : \ - ((secs) + utc_offset_secs)))) - -static int -timezone_setup(void) -{ - struct tm *tm_p; - - if (gmtime_emulation_type == 0) { - int dstnow; - time_t base = 15 * 86400; /* 15jan71; to avoid month/year ends between */ - /* results of calls to gmtime() and localtime() */ - /* for same &base */ - - gmtime_emulation_type++; - if ((tm_p = gmtime(&base)) == NULL) { /* CRTL gmtime() is a fake */ - char off[LNM$C_NAMLENGTH+1];; - - gmtime_emulation_type++; - if (!Perl_vmstrnenv("SYS$TIMEZONE_DIFFERENTIAL",off,0,fildev,0)) { - gmtime_emulation_type++; - utc_offset_secs = 0; - Perl_warn(aTHX_ "no UTC offset information; assuming local time is UTC"); - } - else { utc_offset_secs = atol(off); } - } - else { /* We've got a working gmtime() */ - struct tm gmt, local; - - gmt = *tm_p; - tm_p = localtime(&base); - local = *tm_p; - utc_offset_secs = (local.tm_mday - gmt.tm_mday) * 86400; - utc_offset_secs += (local.tm_hour - gmt.tm_hour) * 3600; - utc_offset_secs += (local.tm_min - gmt.tm_min) * 60; - utc_offset_secs += (local.tm_sec - gmt.tm_sec); - } - } - return 1; -} - - -int -gettimeofday (struct timeval *tp, void *tpz) -{ - long ret; -# ifdef __VAX - long quad[2]; - long quad1[2]; - long div_100ns_to_secs; - long div_100ns_to_usecs; - long quo,rem; - long quo1,rem1; -# else - __int64 quad; - __qdiv_t ans1,ans2; -# endif - /* - In case of error, tv_usec = 0 and tv_sec = VMS condition code. - The return from function is also set to -1. - This is not exactly as per the manual page. - */ - - tp->tv_usec = 0; - -# ifdef __VAX - if (base_adjust[0]==0 && base_adjust[1]==0) { -# else - if (base_adjust==0) { /* Need to determine epoch adjustment */ -# endif - ret=sys$bintim(&dscepoch,&base_adjust); - if (1 != (ret &&1)) { - tp->tv_sec = ret; - return -1; - } - } - - ret=sys$gettim(&quad); /* Get VMS system time */ - if ((1 && ret) == 1) { -# ifdef __VAX - quad[0] -= base_adjust[0]; /* convert to epoch offset */ - quad[1] -= base_adjust[1]; /* convert 2nd half of quadword */ - div_100ns_to_secs = DIV_100NS_TO_SECS; - div_100ns_to_usecs = DIV_100NS_TO_USECS; - lib$ediv(&div_100ns_to_secs,&quad,&quo,&rem); - quad1[0] = rem; - quad1[1] = 0L; - lib$ediv(&div_100ns_to_usecs,&quad1,&quo1,&rem1); - tp->tv_sec = quo; /* Whole seconds */ - tp->tv_usec = quo1; /* Micro-seconds */ -# else - quad -= base_adjust; /* convert to epoch offset */ - ans1=qdiv(quad,DIV_100NS_TO_SECS); - ans2=qdiv(ans1.rem,DIV_100NS_TO_USECS); - tp->tv_sec = ans1.quot; /* Whole seconds */ - tp->tv_usec = ans2.quot; /* Micro-seconds */ -# endif - } else { - tp->tv_sec = ret; - return -1; - } -# ifdef VMSISH_TIME -# ifdef RTL_USES_UTC - if (VMSISH_TIME) tp->tv_sec = _toloc(tp->tv_sec); -# else - if (!VMSISH_TIME) tp->tv_sec = _toutc(tp->tv_sec); -# endif -# endif - return 0; -} -#endif /* #if !defined(HAS_GETTIMEOFDAY) && defined(VMS) */ - - /* Do not use H A S _ N A N O S L E E P * so that Perl Configure doesn't scan for it (and pull in -lrt and * the like which are not usually good ideas for the default Perl). @@ -1086,7 +898,7 @@ /* In case Perl and/or Devel::PPPort are too old, minimally emulate * IS_SAFE_PATHNAME() (which looks for zero bytes in the pathname). */ #ifndef IS_SAFE_PATHNAME -# if PERL_VERSION >= 12 /* Perl_ck_warner is 5.10.0 -> */ +# if PERL_VERSION_GE(5,12,0) /* Perl_ck_warner is 5.10.0 -> */ # ifdef WARN_SYSCALLS # define WARNEMUCAT WARN_SYSCALLS /* 5.22.0 -> */ # else diff -Nru perl-5.32.1/dist/Time-HiRes/Makefile.PL perl-5.34.0/dist/Time-HiRes/Makefile.PL --- perl-5.32.1/dist/Time-HiRes/Makefile.PL 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Time-HiRes/Makefile.PL 2020-10-04 22:17:13.000000000 +0000 @@ -912,9 +912,9 @@ push @makefileopts, ( META_MERGE => { resources => { - repository => 'git://perl5.git.perl.org/perl.git', - bugtracker => 'https://rt.perl.org/rt3/', - homepage => "http://dev.perl.org/", + repository => 'https://github.com/Perl/perl5.git', + bugtracker => 'https://github.com/Perl/perl5/issues', + homepage => "https://github.com/Perl/perl5", }, }, ) diff -Nru perl-5.32.1/dist/Time-HiRes/t/utime.t perl-5.34.0/dist/Time-HiRes/t/utime.t --- perl-5.32.1/dist/Time-HiRes/t/utime.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Time-HiRes/t/utime.t 2020-11-18 22:09:15.000000000 +0000 @@ -132,9 +132,15 @@ $atime = 1.1111111; $mtime = 2.2222222; } +if ($^O eq 'dragonfly') { + # Dragonfly (hammer2?) timestamps have less precision. + $atime = 1.111111; + $mtime = 2.222222; +} print "# \$^O = $^O, atime = $atime, mtime = $mtime\n"; my $skip_atime = $^O eq 'netbsd' && tempfile_has_noatime_mount(); +$skip_atime = 1 if $^O eq 'dragonfly'; # noatime by default if ($skip_atime) { printf("# Skipping atime tests because tempfiles seem to be in a filesystem mounted with 'noatime' ($^O)\n'"); diff -Nru perl-5.32.1/dist/Unicode-Normalize/Makefile.PL perl-5.34.0/dist/Unicode-Normalize/Makefile.PL --- perl-5.32.1/dist/Unicode-Normalize/Makefile.PL 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Unicode-Normalize/Makefile.PL 2021-01-20 23:04:44.000000000 +0000 @@ -1,4 +1,6 @@ -require 5.006001; +use strict; +use warnings; + use ExtUtils::MakeMaker; my $clean = {}; @@ -6,7 +8,7 @@ my $mm_ver = ExtUtils::MakeMaker->VERSION; if (-f "Normalize.xs") { - print STDERR "Making header files for XS...\n"; + print "Making header files for XS...\n"; do './mkheader' or die $@ || "mkheader: $!"; @@ -29,14 +31,14 @@ 'clean' => $clean, 'depend' => { 'Normalize.o' => '$(H_FILES)' }, 'PREREQ_PM' => { - Carp => 0, - constant => 0, - DynaLoader => 0, - Exporter => 0, - File::Spec => 0, - strict => 0, - warnings => 0, - SelectSaver => 0, + 'Carp' => 0, + 'constant' => 0, + 'DynaLoader' => 0, + 'Exporter' => 0, + 'File::Spec' => 0, + 'strict' => 0, + 'warnings' => 0, + 'SelectSaver' => 0, }, ($mm_ver < 6.48 ? () : MIN_PERL_VERSION => 5.6.0), ($mm_ver < 6.46 ? () : (META_MERGE => { diff -Nru perl-5.32.1/dist/Unicode-Normalize/Normalize.pm perl-5.34.0/dist/Unicode-Normalize/Normalize.pm --- perl-5.32.1/dist/Unicode-Normalize/Normalize.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Unicode-Normalize/Normalize.pm 2020-10-04 22:17:13.000000000 +0000 @@ -16,7 +16,7 @@ no warnings 'utf8'; -our $VERSION = '1.27'; +our $VERSION = '1.28'; our $PACKAGE = __PACKAGE__; our @EXPORT = qw( NFC NFD NFKC NFKD ); diff -Nru perl-5.32.1/dist/Unicode-Normalize/Normalize.xs perl-5.34.0/dist/Unicode-Normalize/Normalize.xs --- perl-5.32.1/dist/Unicode-Normalize/Normalize.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dist/Unicode-Normalize/Normalize.xs 2020-10-04 22:17:13.000000000 +0000 @@ -23,7 +23,7 @@ /* The generated normalization tables since v5.20 are in native character set * terms. Prior to that, they were in Unicode terms. So we use 'uvchr' for * later perls, and redefine that to be 'uvuni' for earlier ones */ -#if PERL_VERSION < 20 +#if PERL_VERSION_LT(5,20,0) # undef uvchr_to_utf8 # ifdef uvuni_to_utf8 # define uvchr_to_utf8 uvuni_to_utf8 diff -Nru perl-5.32.1/djgpp/djgpp.c perl-5.34.0/djgpp/djgpp.c --- perl-5.32.1/djgpp/djgpp.c 2020-12-18 09:58:43.000000000 +0000 +++ perl-5.34.0/djgpp/djgpp.c 2021-01-20 23:04:44.000000000 +0000 @@ -107,7 +107,7 @@ { if (rc < 0 && ckWARN(WARN_EXEC)) Perl_warner(aTHX_ packWARN(WARN_EXEC),"Can't %s \"%s\": %s", - fl ? "exec" : "spawn",prog,Strerror (errno)); + fl ? "exec" : "spawn",prog,Strerror (errno)); if (rc >= 0) return rc << 8; return -1; @@ -155,13 +155,13 @@ ENTER; if ((shell=getenv("SHELL"))==NULL && (shell=getenv("COMSPEC"))==NULL) - shell="c:\\command.com" EXTRA; + shell="c:\\command.com" EXTRA; unixysh=_is_unixy_shell (shell); metachars=unixysh ? "$&*(){}[]'\";\\?>|<~`\n" EXTRA : "*?[|<>\"\\" EXTRA; while (*cmd && isSPACE(*cmd)) - cmd++; + cmd++; if (strBEGINs (cmd,"/bin/sh") && isSPACE (cmd[7])) cmd+=5; @@ -181,20 +181,20 @@ goto doshell; } for (s=cmd; *s; s++) - if (strchr (metachars,*s)) - { - if (*s=='\n' && s[1]=='\0') - { - *s='\0'; - break; - } + if (strchr (metachars,*s)) + { + if (*s=='\n' && s[1]=='\0') + { + *s='\0'; + break; + } doshell: - if (execf==EXECF_EXEC) + if (execf==EXECF_EXEC) result = convretcode (execl (shell,shell,unixysh ? "-c" : "/c",cmd,NULL),cmd,execf); - else - result = convretcode (system (cmd),cmd,execf); - goto leave; - } + else + result = convretcode (system (cmd),cmd,execf); + goto leave; + } Newx (argv,(s-cmd)/2+2,char*); SAVEFREEPV(argv); @@ -202,17 +202,17 @@ SAVEFREEPV(cmd); a=argv; for (s=cmd; *s;) { - while (*s && isSPACE (*s)) s++; - if (*s) - *(a++)=s; - while (*s && !isSPACE (*s)) s++; - if (*s) - *s++='\0'; + while (*s && isSPACE (*s)) s++; + if (*s) + *(a++)=s; + while (*s && !isSPACE (*s)) s++; + if (*s) + *s++='\0'; } *a=NULL; if (!argv[0]) { result = -1; - goto leave; + goto leave; } if (execf==EXECF_EXEC) @@ -362,7 +362,7 @@ ST(0)=sv_newmortal (); if (getcwd (tmp,PATH_MAX+1)!=NULL) sv_setpv ((SV*)ST(0),tmp); - SvTAINTED_on(ST(0)); + SvTAINTED_on(ST(0)); } XSRETURN (1); } @@ -378,14 +378,14 @@ { dXSARGS; if (items != 0) - Perl_croak_nocontext("Usage: Cwd::sys_cwd()"); + Perl_croak_nocontext("Usage: Cwd::sys_cwd()"); { - char p[MAXPATHLEN]; - char * RETVAL; - RETVAL = getcwd(p, MAXPATHLEN); - ST(0) = sv_newmortal(); - sv_setpv((SV*)ST(0), RETVAL); - SvTAINTED_on(ST(0)); + char p[MAXPATHLEN]; + char * RETVAL; + RETVAL = getcwd(p, MAXPATHLEN); + ST(0) = sv_newmortal(); + sv_setpv((SV*)ST(0), RETVAL); + SvTAINTED_on(ST(0)); } XSRETURN(1); } @@ -453,9 +453,9 @@ int res; if ((res = fflush(fp)) == 0 && fp) { - Stat_t s; - if (Fstat(fileno(fp), &s) == 0 && !S_ISSOCK(s.st_mode)) - res = fsync(fileno(fp)); + Stat_t s; + if (Fstat(fileno(fp), &s) == 0 && !S_ISSOCK(s.st_mode)) + res = fsync(fileno(fp)); } /* * If the flush succeeded but set end-of-file, we need to clear diff -Nru perl-5.32.1/doio.c perl-5.34.0/doio.c --- perl-5.32.1/doio.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/doio.c 2021-01-20 23:04:44.000000000 +0000 @@ -83,7 +83,7 @@ { assert(fd >= 0); if(fd > PL_maxsysfd) - setfd_cloexec(fd); + setfd_cloexec(fd); } void @@ -91,96 +91,96 @@ { assert(fd >= 0); if(fd <= PL_maxsysfd) - setfd_inhexec(fd); + setfd_inhexec(fd); } void Perl_setfd_cloexec_or_inhexec_by_sysfdness(pTHX_ int fd) { assert(fd >= 0); if(fd <= PL_maxsysfd) - setfd_inhexec(fd); + setfd_inhexec(fd); else - setfd_cloexec(fd); + setfd_cloexec(fd); } #define DO_GENOPEN_THEN_CLOEXEC(GENOPEN_NORMAL, GENSETFD_CLOEXEC) \ - do { \ - int res = (GENOPEN_NORMAL); \ - if(LIKELY(res != -1)) GENSETFD_CLOEXEC; \ - return res; \ - } while(0) + do { \ + int res = (GENOPEN_NORMAL); \ + if(LIKELY(res != -1)) GENSETFD_CLOEXEC; \ + return res; \ + } while(0) #if defined(HAS_FCNTL) && defined(F_SETFD) && defined(FD_CLOEXEC) && \ - defined(F_GETFD) + defined(F_GETFD) enum { CLOEXEC_EXPERIMENT = 0, CLOEXEC_AT_OPEN, CLOEXEC_AFTER_OPEN }; # define DO_GENOPEN_EXPERIMENTING_CLOEXEC(strategy, TESTFD, GENOPEN_CLOEXEC, \ - GENOPEN_NORMAL, GENSETFD_CLOEXEC) \ - do { \ - switch (strategy) { \ - case CLOEXEC_EXPERIMENT: default: { \ - int res = (GENOPEN_CLOEXEC), eno; \ - if (LIKELY(res != -1)) { \ - int fdflags = fcntl((TESTFD), F_GETFD); \ - if (LIKELY(fdflags != -1) && \ - LIKELY(fdflags & FD_CLOEXEC)) { \ - strategy = CLOEXEC_AT_OPEN; \ - } else { \ - strategy = CLOEXEC_AFTER_OPEN; \ - GENSETFD_CLOEXEC; \ - } \ - } else if (UNLIKELY((eno = errno) == EINVAL || \ - eno == ENOSYS)) { \ - res = (GENOPEN_NORMAL); \ - if (LIKELY(res != -1)) { \ - strategy = CLOEXEC_AFTER_OPEN; \ - GENSETFD_CLOEXEC; \ - } else if (!LIKELY((eno = errno) == EINVAL || \ - eno == ENOSYS)) { \ - strategy = CLOEXEC_AFTER_OPEN; \ - } \ - } \ - return res; \ - } \ - case CLOEXEC_AT_OPEN: \ - return (GENOPEN_CLOEXEC); \ - case CLOEXEC_AFTER_OPEN: \ - DO_GENOPEN_THEN_CLOEXEC(GENOPEN_NORMAL, GENSETFD_CLOEXEC); \ - } \ - } while(0) + GENOPEN_NORMAL, GENSETFD_CLOEXEC) \ + do { \ + switch (strategy) { \ + case CLOEXEC_EXPERIMENT: default: { \ + int res = (GENOPEN_CLOEXEC), eno; \ + if (LIKELY(res != -1)) { \ + int fdflags = fcntl((TESTFD), F_GETFD); \ + if (LIKELY(fdflags != -1) && \ + LIKELY(fdflags & FD_CLOEXEC)) { \ + strategy = CLOEXEC_AT_OPEN; \ + } else { \ + strategy = CLOEXEC_AFTER_OPEN; \ + GENSETFD_CLOEXEC; \ + } \ + } else if (UNLIKELY((eno = errno) == EINVAL || \ + eno == ENOSYS)) { \ + res = (GENOPEN_NORMAL); \ + if (LIKELY(res != -1)) { \ + strategy = CLOEXEC_AFTER_OPEN; \ + GENSETFD_CLOEXEC; \ + } else if (!LIKELY((eno = errno) == EINVAL || \ + eno == ENOSYS)) { \ + strategy = CLOEXEC_AFTER_OPEN; \ + } \ + } \ + return res; \ + } \ + case CLOEXEC_AT_OPEN: \ + return (GENOPEN_CLOEXEC); \ + case CLOEXEC_AFTER_OPEN: \ + DO_GENOPEN_THEN_CLOEXEC(GENOPEN_NORMAL, GENSETFD_CLOEXEC); \ + } \ + } while(0) #else # define DO_GENOPEN_EXPERIMENTING_CLOEXEC(strategy, TESTFD, GENOPEN_CLOEXEC, \ - GENOPEN_NORMAL, GENSETFD_CLOEXEC) \ - DO_GENOPEN_THEN_CLOEXEC(GENOPEN_NORMAL, GENSETFD_CLOEXEC) + GENOPEN_NORMAL, GENSETFD_CLOEXEC) \ + DO_GENOPEN_THEN_CLOEXEC(GENOPEN_NORMAL, GENSETFD_CLOEXEC) #endif #define DO_ONEOPEN_THEN_CLOEXEC(ONEOPEN_NORMAL) \ - do { \ - int fd; \ - DO_GENOPEN_THEN_CLOEXEC(fd = (ONEOPEN_NORMAL), \ - setfd_cloexec(fd)); \ - } while(0) + do { \ + int fd; \ + DO_GENOPEN_THEN_CLOEXEC(fd = (ONEOPEN_NORMAL), \ + setfd_cloexec(fd)); \ + } while(0) #define DO_ONEOPEN_EXPERIMENTING_CLOEXEC(strategy, \ ONEOPEN_CLOEXEC, ONEOPEN_NORMAL) \ - do { \ - int fd; \ - DO_GENOPEN_EXPERIMENTING_CLOEXEC(strategy, \ + do { \ + int fd; \ + DO_GENOPEN_EXPERIMENTING_CLOEXEC(strategy, \ fd, \ fd = (ONEOPEN_CLOEXEC), \ - fd = (ONEOPEN_NORMAL), setfd_cloexec(fd)); \ - } while(0) + fd = (ONEOPEN_NORMAL), setfd_cloexec(fd)); \ + } while(0) #define DO_PIPESETFD_CLOEXEC(PIPEFD) \ - do { \ - setfd_cloexec((PIPEFD)[0]); \ - setfd_cloexec((PIPEFD)[1]); \ - } while(0) + do { \ + setfd_cloexec((PIPEFD)[0]); \ + setfd_cloexec((PIPEFD)[1]); \ + } while(0) #define DO_PIPEOPEN_THEN_CLOEXEC(PIPEFD, PIPEOPEN_NORMAL) \ - DO_GENOPEN_THEN_CLOEXEC(PIPEOPEN_NORMAL, DO_PIPESETFD_CLOEXEC(PIPEFD)) + DO_GENOPEN_THEN_CLOEXEC(PIPEOPEN_NORMAL, DO_PIPESETFD_CLOEXEC(PIPEFD)) #define DO_PIPEOPEN_EXPERIMENTING_CLOEXEC(strategy, PIPEFD, PIPEOPEN_CLOEXEC, \ - PIPEOPEN_NORMAL) \ - DO_GENOPEN_EXPERIMENTING_CLOEXEC(strategy, \ + PIPEOPEN_NORMAL) \ + DO_GENOPEN_EXPERIMENTING_CLOEXEC(strategy, \ (PIPEFD)[0], PIPEOPEN_CLOEXEC, \ - PIPEOPEN_NORMAL, DO_PIPESETFD_CLOEXEC(PIPEFD)) + PIPEOPEN_NORMAL, DO_PIPESETFD_CLOEXEC(PIPEFD)) int Perl_PerlLIO_dup_cloexec(pTHX_ int oldfd) @@ -191,11 +191,10 @@ * to extend it, so for the time being this just isn't available on * PERL_IMPLICIT_SYS builds. */ - dVAR; DO_ONEOPEN_EXPERIMENTING_CLOEXEC( PL_strategy_dup, - fcntl(oldfd, F_DUPFD_CLOEXEC, 0), - PerlLIO_dup(oldfd)); + fcntl(oldfd, F_DUPFD_CLOEXEC, 0), + PerlLIO_dup(oldfd)); #else DO_ONEOPEN_THEN_CLOEXEC(PerlLIO_dup(oldfd)); #endif @@ -210,11 +209,10 @@ * to extend it, so for the time being this just isn't available on * PERL_IMPLICIT_SYS builds. */ - dVAR; DO_ONEOPEN_EXPERIMENTING_CLOEXEC( PL_strategy_dup2, - dup3(oldfd, newfd, O_CLOEXEC), - PerlLIO_dup2(oldfd, newfd)); + dup3(oldfd, newfd, O_CLOEXEC), + PerlLIO_dup2(oldfd, newfd)); #else DO_ONEOPEN_THEN_CLOEXEC(PerlLIO_dup2(oldfd, newfd)); #endif @@ -223,13 +221,12 @@ int Perl_PerlLIO_open_cloexec(pTHX_ const char *file, int flag) { - dVAR; PERL_ARGS_ASSERT_PERLLIO_OPEN_CLOEXEC; #if defined(O_CLOEXEC) DO_ONEOPEN_EXPERIMENTING_CLOEXEC( PL_strategy_open, - PerlLIO_open(file, flag | O_CLOEXEC), - PerlLIO_open(file, flag)); + PerlLIO_open(file, flag | O_CLOEXEC), + PerlLIO_open(file, flag)); #else DO_ONEOPEN_THEN_CLOEXEC(PerlLIO_open(file, flag)); #endif @@ -238,13 +235,12 @@ int Perl_PerlLIO_open3_cloexec(pTHX_ const char *file, int flag, int perm) { - dVAR; PERL_ARGS_ASSERT_PERLLIO_OPEN3_CLOEXEC; #if defined(O_CLOEXEC) DO_ONEOPEN_EXPERIMENTING_CLOEXEC( PL_strategy_open3, - PerlLIO_open3(file, flag | O_CLOEXEC, perm), - PerlLIO_open3(file, flag, perm)); + PerlLIO_open3(file, flag | O_CLOEXEC, perm), + PerlLIO_open3(file, flag, perm)); #else DO_ONEOPEN_THEN_CLOEXEC(PerlLIO_open3(file, flag, perm)); #endif @@ -253,13 +249,12 @@ int Perl_my_mkstemp_cloexec(char *templte) { - dVAR; PERL_ARGS_ASSERT_MY_MKSTEMP_CLOEXEC; #if defined(O_CLOEXEC) DO_ONEOPEN_EXPERIMENTING_CLOEXEC( PL_strategy_mkstemp, - Perl_my_mkostemp(templte, O_CLOEXEC), - Perl_my_mkstemp(templte)); + Perl_my_mkostemp(templte, O_CLOEXEC), + Perl_my_mkstemp(templte)); #else DO_ONEOPEN_THEN_CLOEXEC(Perl_my_mkstemp(templte)); #endif @@ -268,13 +263,12 @@ int Perl_my_mkostemp_cloexec(char *templte, int flags) { - dVAR; PERL_ARGS_ASSERT_MY_MKOSTEMP_CLOEXEC; #if defined(O_CLOEXEC) DO_ONEOPEN_EXPERIMENTING_CLOEXEC( PL_strategy_mkstemp, - Perl_my_mkostemp(templte, flags | O_CLOEXEC), - Perl_my_mkostemp(templte, flags)); + Perl_my_mkostemp(templte, flags | O_CLOEXEC), + Perl_my_mkostemp(templte, flags)); #else DO_ONEOPEN_THEN_CLOEXEC(Perl_my_mkostemp(templte, flags)); #endif @@ -284,7 +278,6 @@ int Perl_PerlProc_pipe_cloexec(pTHX_ int *pipefd) { - dVAR; PERL_ARGS_ASSERT_PERLPROC_PIPE_CLOEXEC; /* * struct IPerlProc doesn't cover pipe2(), and there's no clear way @@ -293,8 +286,8 @@ */ # if !defined(PERL_IMPLICIT_SYS) && defined(HAS_PIPE2) && defined(O_CLOEXEC) DO_PIPEOPEN_EXPERIMENTING_CLOEXEC(PL_strategy_pipe, pipefd, - pipe2(pipefd, O_CLOEXEC), - PerlProc_pipe(pipefd)); + pipe2(pipefd, O_CLOEXEC), + PerlProc_pipe(pipefd)); # else DO_PIPEOPEN_THEN_CLOEXEC(pipefd, PerlProc_pipe(pipefd)); # endif @@ -307,11 +300,10 @@ Perl_PerlSock_socket_cloexec(pTHX_ int domain, int type, int protocol) { # if defined(SOCK_CLOEXEC) - dVAR; DO_ONEOPEN_EXPERIMENTING_CLOEXEC( PL_strategy_socket, - PerlSock_socket(domain, type | SOCK_CLOEXEC, protocol), - PerlSock_socket(domain, type, protocol)); + PerlSock_socket(domain, type | SOCK_CLOEXEC, protocol), + PerlSock_socket(domain, type, protocol)); # else DO_ONEOPEN_THEN_CLOEXEC(PerlSock_socket(domain, type, protocol)); # endif @@ -322,17 +314,16 @@ Sock_size_t *addrlen) { # if !defined(PERL_IMPLICIT_SYS) && \ - defined(HAS_ACCEPT4) && defined(SOCK_CLOEXEC) + defined(HAS_ACCEPT4) && defined(SOCK_CLOEXEC) /* * struct IPerlSock doesn't cover accept4(), and there's no clear * way to extend it, so for the time being this just isn't available * on PERL_IMPLICIT_SYS builds. */ - dVAR; DO_ONEOPEN_EXPERIMENTING_CLOEXEC( PL_strategy_accept, - accept4(listenfd, addr, addrlen, SOCK_CLOEXEC), - PerlSock_accept(listenfd, addr, addrlen)); + accept4(listenfd, addr, addrlen, SOCK_CLOEXEC), + PerlSock_accept(listenfd, addr, addrlen)); # else DO_ONEOPEN_THEN_CLOEXEC(PerlSock_accept(listenfd, addr, addrlen)); # endif @@ -342,20 +333,19 @@ #if defined (HAS_SOCKETPAIR) || \ (defined (HAS_SOCKET) && defined(SOCK_DGRAM) && \ - defined(AF_INET) && defined(PF_INET)) + defined(AF_INET) && defined(PF_INET)) int Perl_PerlSock_socketpair_cloexec(pTHX_ int domain, int type, int protocol, int *pairfd) { - dVAR; PERL_ARGS_ASSERT_PERLSOCK_SOCKETPAIR_CLOEXEC; # ifdef SOCK_CLOEXEC DO_PIPEOPEN_EXPERIMENTING_CLOEXEC(PL_strategy_socketpair, pairfd, - PerlSock_socketpair(domain, type | SOCK_CLOEXEC, protocol, pairfd), - PerlSock_socketpair(domain, type, protocol, pairfd)); + PerlSock_socketpair(domain, type | SOCK_CLOEXEC, protocol, pairfd), + PerlSock_socketpair(domain, type, protocol, pairfd)); # else DO_PIPEOPEN_THEN_CLOEXEC(pairfd, - PerlSock_socketpair(domain, type, protocol, pairfd)); + PerlSock_socketpair(domain, type, protocol, pairfd)); # endif } #endif @@ -378,10 +368,10 @@ /* If currently open - close before we re-open */ if (IoIFP(io)) { - if (IoTYPE(io) == IoTYPE_STD) { - /* This is a clone of one of STD* handles */ - } - else { + if (IoTYPE(io) == IoTYPE_STD) { + /* This is a clone of one of STD* handles */ + } + else { const int old_fd = PerlIO_fileno(IoIFP(io)); if (inRANGE(old_fd, 0, PL_maxsysfd)) { @@ -417,25 +407,25 @@ } } } - IoOFP(io) = IoIFP(io) = NULL; + IoOFP(io) = IoIFP(io) = NULL; } return io; } bool Perl_do_openn(pTHX_ GV *gv, const char *oname, I32 len, int as_raw, - int rawmode, int rawperm, PerlIO *supplied_fp, SV **svp, - I32 num_svs) + int rawmode, int rawperm, PerlIO *supplied_fp, SV **svp, + I32 num_svs) { PERL_ARGS_ASSERT_DO_OPENN; if (as_raw) { /* sysopen style args, i.e. integer mode and permissions */ - if (num_svs != 0) { - Perl_croak(aTHX_ "panic: sysopen with multiple args, num_svs=%ld", - (long) num_svs); - } + if (num_svs != 0) { + Perl_croak(aTHX_ "panic: sysopen with multiple args, num_svs=%ld", + (long) num_svs); + } return do_open_raw(gv, oname, len, rawmode, rawperm, NULL); } return do_open6(gv, oname, len, supplied_fp, svp, num_svs); @@ -459,52 +449,52 @@ /* For ease of blame back to 5.000, keep the existing indenting. */ { /* sysopen style args, i.e. integer mode and permissions */ - STRLEN ix = 0; - const int appendtrunc = - 0 + STRLEN ix = 0; + const int appendtrunc = + 0 #ifdef O_APPEND /* Not fully portable. */ - |O_APPEND + |O_APPEND #endif #ifdef O_TRUNC /* Not fully portable. */ - |O_TRUNC + |O_TRUNC #endif - ; - const int modifyingmode = O_WRONLY|O_RDWR|O_CREAT|appendtrunc; - int ismodifying; + ; + const int modifyingmode = O_WRONLY|O_RDWR|O_CREAT|appendtrunc; + int ismodifying; SV *namesv; - /* It's not always + /* It's not always - O_RDONLY 0 - O_WRONLY 1 - O_RDWR 2 - - It might be (in OS/390 and Mac OS Classic it is) - - O_WRONLY 1 - O_RDONLY 2 - O_RDWR 3 - - This means that simple & with O_RDWR would look - like O_RDONLY is present. Therefore we have to - be more careful. - */ - if ((ismodifying = (rawmode & modifyingmode))) { - if ((ismodifying & O_WRONLY) == O_WRONLY || - (ismodifying & O_RDWR) == O_RDWR || - (ismodifying & (O_CREAT|appendtrunc))) - TAINT_PROPER("sysopen"); - } - mode[ix++] = IoTYPE_NUMERIC; /* Marker to openn to use numeric "sysopen" */ + O_RDONLY 0 + O_WRONLY 1 + O_RDWR 2 + + It might be (in OS/390 and Mac OS Classic it is) + + O_WRONLY 1 + O_RDONLY 2 + O_RDWR 3 + + This means that simple & with O_RDWR would look + like O_RDONLY is present. Therefore we have to + be more careful. + */ + if ((ismodifying = (rawmode & modifyingmode))) { + if ((ismodifying & O_WRONLY) == O_WRONLY || + (ismodifying & O_RDWR) == O_RDWR || + (ismodifying & (O_CREAT|appendtrunc))) + TAINT_PROPER("sysopen"); + } + mode[ix++] = IoTYPE_NUMERIC; /* Marker to openn to use numeric "sysopen" */ #if defined(USE_64_BIT_RAWIO) && defined(O_LARGEFILE) - rawmode |= O_LARGEFILE; /* Transparently largefiley. */ + rawmode |= O_LARGEFILE; /* Transparently largefiley. */ #endif IoTYPE(io) = PerlIO_intmode2str(rawmode, &mode[ix], &writing); - namesv = newSVpvn_flags(oname, len, SVs_TEMP); - fp = PerlIO_openn(aTHX_ NULL, mode, -1, rawmode, rawperm, NULL, 1, &namesv); + namesv = newSVpvn_flags(oname, len, SVs_TEMP); + fp = PerlIO_openn(aTHX_ NULL, mode, -1, rawmode, rawperm, NULL, 1, &namesv); } return openn_cleanup(gv, io, fp, mode, oname, saveifp, saveofp, savefd, savetype, writing, 0, NULL, statbufp); @@ -529,11 +519,11 @@ /* For ease of blame back to 5.000, keep the existing indenting. */ { - /* Regular (non-sys) open */ - char *name; - STRLEN olen = len; - char *tend; - int dodup = 0; + /* Regular (non-sys) open */ + char *name; + STRLEN olen = len; + char *tend; + int dodup = 0; bool in_raw = 0, in_crlf = 0, out_raw = 0, out_crlf = 0; /* Collect default raw/crlf info from the op */ @@ -546,29 +536,29 @@ out_crlf = (flags & OPpOPEN_OUT_CRLF); } - type = savepvn(oname, len); - tend = type+len; - SAVEFREEPV(type); + type = savepvn(oname, len); + tend = type+len; + SAVEFREEPV(type); /* Lose leading and trailing white space */ - while (isSPACE(*type)) - type++; + while (isSPACE(*type)) + type++; while (tend > type && isSPACE(tend[-1])) - *--tend = '\0'; + *--tend = '\0'; - if (num_svs) { + if (num_svs) { const char *p; STRLEN nlen = 0; - /* New style explicit name, type is just mode and layer info */ + /* New style explicit name, type is just mode and layer info */ #ifdef USE_STDIO - if (SvROK(*svp) && !memchr(oname, '&', len)) { - if (ckWARN(WARN_IO)) - Perl_warner(aTHX_ packWARN(WARN_IO), - "Can't open a reference"); - SETERRNO(EINVAL, LIB_INVARG); + if (SvROK(*svp) && !memchr(oname, '&', len)) { + if (ckWARN(WARN_IO)) + Perl_warner(aTHX_ packWARN(WARN_IO), + "Can't open a reference"); + SETERRNO(EINVAL, LIB_INVARG); fp = NULL; - goto say_false; - } + goto say_false; + } #endif /* USE_STDIO */ p = (SvOK(*svp) || SvGMAGICAL(*svp)) ? SvPV(*svp, nlen) : NULL; @@ -577,331 +567,331 @@ goto say_false; } - name = p ? savepvn(p, nlen) : savepvs(""); + name = p ? savepvn(p, nlen) : savepvs(""); - SAVEFREEPV(name); - } - else { - name = type; - len = tend-type; - } - IoTYPE(io) = *type; - if ((*type == IoTYPE_RDWR) && /* scary */ + SAVEFREEPV(name); + } + else { + name = type; + len = tend-type; + } + IoTYPE(io) = *type; + if ((*type == IoTYPE_RDWR) && /* scary */ (*(type+1) == IoTYPE_RDONLY || *(type+1) == IoTYPE_WRONLY) && - ((!num_svs || (tend > type+1 && tend[-1] != IoTYPE_PIPE)))) { - TAINT_PROPER("open"); - mode[1] = *type++; - writing = 1; - } - - if (*type == IoTYPE_PIPE) { - if (num_svs) { - if (type[1] != IoTYPE_STD) { - unknown_open_mode: - Perl_croak(aTHX_ "Unknown open() mode '%.*s'", (int)olen, oname); - } - type++; - } - do { - type++; - } while (isSPACE(*type)); - if (!num_svs) { - name = type; - len = tend-type; - } - if (*name == '\0') { - /* command is missing 19990114 */ - if (ckWARN(WARN_PIPE)) - Perl_warner(aTHX_ packWARN(WARN_PIPE), "Missing command in piped open"); - errno = EPIPE; + ((!num_svs || (tend > type+1 && tend[-1] != IoTYPE_PIPE)))) { + TAINT_PROPER("open"); + mode[1] = *type++; + writing = 1; + } + + if (*type == IoTYPE_PIPE) { + if (num_svs) { + if (type[1] != IoTYPE_STD) { + unknown_open_mode: + Perl_croak(aTHX_ "Unknown open() mode '%.*s'", (int)olen, oname); + } + type++; + } + do { + type++; + } while (isSPACE(*type)); + if (!num_svs) { + name = type; + len = tend-type; + } + if (*name == '\0') { + /* command is missing 19990114 */ + if (ckWARN(WARN_PIPE)) + Perl_warner(aTHX_ packWARN(WARN_PIPE), "Missing command in piped open"); + errno = EPIPE; fp = NULL; - goto say_false; - } - if (!(*name == '-' && name[1] == '\0') || num_svs) - TAINT_ENV(); - TAINT_PROPER("piped open"); - if (!num_svs && name[len-1] == '|') { - name[--len] = '\0' ; - if (ckWARN(WARN_PIPE)) - Perl_warner(aTHX_ packWARN(WARN_PIPE), "Can't open bidirectional pipe"); - } - mode[0] = 'w'; - writing = 1; + goto say_false; + } + if (!(*name == '-' && name[1] == '\0') || num_svs) + TAINT_ENV(); + TAINT_PROPER("piped open"); + if (!num_svs && name[len-1] == '|') { + name[--len] = '\0' ; + if (ckWARN(WARN_PIPE)) + Perl_warner(aTHX_ packWARN(WARN_PIPE), "Can't open bidirectional pipe"); + } + mode[0] = 'w'; + writing = 1; if (out_raw) - mode[1] = 'b'; + mode[1] = 'b'; else if (out_crlf) - mode[1] = 't'; - if (num_svs > 1) { - fp = PerlProc_popen_list(mode, num_svs, svp); - } - else { - fp = PerlProc_popen(name,mode); - } - if (num_svs) { - if (*type) { - if (PerlIO_apply_layers(aTHX_ fp, mode, type) != 0) { + mode[1] = 't'; + if (num_svs > 1) { + fp = PerlProc_popen_list(mode, num_svs, svp); + } + else { + fp = PerlProc_popen(name,mode); + } + if (num_svs) { + if (*type) { + if (PerlIO_apply_layers(aTHX_ fp, mode, type) != 0) { fp = NULL; - goto say_false; - } - } - } - } /* IoTYPE_PIPE */ - else if (*type == IoTYPE_WRONLY) { - TAINT_PROPER("open"); - type++; - if (*type == IoTYPE_WRONLY) { - /* Two IoTYPE_WRONLYs in a row make for an IoTYPE_APPEND. */ - mode[0] = IoTYPE(io) = IoTYPE_APPEND; - type++; - } - else { - mode[0] = 'w'; - } - writing = 1; + goto say_false; + } + } + } + } /* IoTYPE_PIPE */ + else if (*type == IoTYPE_WRONLY) { + TAINT_PROPER("open"); + type++; + if (*type == IoTYPE_WRONLY) { + /* Two IoTYPE_WRONLYs in a row make for an IoTYPE_APPEND. */ + mode[0] = IoTYPE(io) = IoTYPE_APPEND; + type++; + } + else { + mode[0] = 'w'; + } + writing = 1; if (out_raw) - mode[1] = 'b'; + mode[1] = 'b'; else if (out_crlf) - mode[1] = 't'; - if (*type == '&') { - duplicity: - dodup = PERLIO_DUP_FD; - type++; - if (*type == '=') { - dodup = 0; - type++; - } - if (!num_svs && !*type && supplied_fp) { - /* "<+&" etc. is used by typemaps */ - fp = supplied_fp; - } - else { - PerlIO *that_fp = NULL; + mode[1] = 't'; + if (*type == '&') { + duplicity: + dodup = PERLIO_DUP_FD; + type++; + if (*type == '=') { + dodup = 0; + type++; + } + if (!num_svs && !*type && supplied_fp) { + /* "<+&" etc. is used by typemaps */ + fp = supplied_fp; + } + else { + PerlIO *that_fp = NULL; int wanted_fd; UV uv; - if (num_svs > 1) { - /* diag_listed_as: More than one argument to '%s' open */ - Perl_croak(aTHX_ "More than one argument to '%c&' open",IoTYPE(io)); - } - while (isSPACE(*type)) - type++; - if (num_svs && ( - SvIOK(*svp) - || (SvPOKp(*svp) && looks_like_number(*svp)) - )) { + if (num_svs > 1) { + /* diag_listed_as: More than one argument to '%s' open */ + Perl_croak(aTHX_ "More than one argument to '%c&' open",IoTYPE(io)); + } + while (isSPACE(*type)) + type++; + if (num_svs && ( + SvIOK(*svp) + || (SvPOKp(*svp) && looks_like_number(*svp)) + )) { wanted_fd = SvUV(*svp); - num_svs = 0; - } - else if (isDIGIT(*type) + num_svs = 0; + } + else if (isDIGIT(*type) && grok_atoUV(type, &uv, NULL) && uv <= INT_MAX ) { wanted_fd = (int)uv; - } - else { - const IO* thatio; - if (num_svs) { - thatio = sv_2io(*svp); - } - else { - GV * const thatgv = gv_fetchpvn_flags(type, tend - type, - 0, SVt_PVIO); - thatio = GvIO(thatgv); - } - if (!thatio) { + } + else { + const IO* thatio; + if (num_svs) { + thatio = sv_2io(*svp); + } + else { + GV * const thatgv = gv_fetchpvn_flags(type, tend - type, + 0, SVt_PVIO); + thatio = GvIO(thatgv); + } + if (!thatio) { #ifdef EINVAL - SETERRNO(EINVAL,SS_IVCHAN); + SETERRNO(EINVAL,SS_IVCHAN); #endif fp = NULL; - goto say_false; - } - if ((that_fp = IoIFP(thatio))) { - /* Flush stdio buffer before dup. --mjd - * Unfortunately SEEK_CURing 0 seems to - * be optimized away on most platforms; - * only Solaris and Linux seem to flush - * on that. --jhi */ - /* On the other hand, do all platforms - * take gracefully to flushing a read-only - * filehandle? Perhaps we should do - * fsetpos(src)+fgetpos(dst)? --nik */ - PerlIO_flush(that_fp); - wanted_fd = PerlIO_fileno(that_fp); - /* When dup()ing STDIN, STDOUT or STDERR - * explicitly set appropriate access mode */ - if (that_fp == PerlIO_stdout() - || that_fp == PerlIO_stderr()) - IoTYPE(io) = IoTYPE_WRONLY; - else if (that_fp == PerlIO_stdin()) + goto say_false; + } + if ((that_fp = IoIFP(thatio))) { + /* Flush stdio buffer before dup. --mjd + * Unfortunately SEEK_CURing 0 seems to + * be optimized away on most platforms; + * only Solaris and Linux seem to flush + * on that. --jhi */ + /* On the other hand, do all platforms + * take gracefully to flushing a read-only + * filehandle? Perhaps we should do + * fsetpos(src)+fgetpos(dst)? --nik */ + PerlIO_flush(that_fp); + wanted_fd = PerlIO_fileno(that_fp); + /* When dup()ing STDIN, STDOUT or STDERR + * explicitly set appropriate access mode */ + if (that_fp == PerlIO_stdout() + || that_fp == PerlIO_stderr()) + IoTYPE(io) = IoTYPE_WRONLY; + else if (that_fp == PerlIO_stdin()) IoTYPE(io) = IoTYPE_RDONLY; - /* When dup()ing a socket, say result is - * one as well */ - else if (IoTYPE(thatio) == IoTYPE_SOCKET) - IoTYPE(io) = IoTYPE_SOCKET; - } + /* When dup()ing a socket, say result is + * one as well */ + else if (IoTYPE(thatio) == IoTYPE_SOCKET) + IoTYPE(io) = IoTYPE_SOCKET; + } else { SETERRNO(EBADF, RMS_IFI); fp = NULL; goto say_false; } - } - if (!num_svs) - type = NULL; - if (that_fp) { - fp = PerlIO_fdupopen(aTHX_ that_fp, NULL, dodup); - } - else { - if (dodup) + } + if (!num_svs) + type = NULL; + if (that_fp) { + fp = PerlIO_fdupopen(aTHX_ that_fp, NULL, dodup); + } + else { + if (dodup) wanted_fd = PerlLIO_dup_cloexec(wanted_fd); - else - was_fdopen = TRUE; + else + was_fdopen = TRUE; if (!(fp = PerlIO_openn(aTHX_ type,mode,wanted_fd,0,0,NULL,num_svs,svp))) { if (dodup && wanted_fd >= 0) PerlLIO_close(wanted_fd); - } - } - } - } /* & */ - else { - while (isSPACE(*type)) - type++; - if (*type == IoTYPE_STD && (!type[1] || isSPACE(type[1]) || type[1] == ':')) { - type++; - fp = PerlIO_stdout(); - IoTYPE(io) = IoTYPE_STD; - if (num_svs > 1) { - /* diag_listed_as: More than one argument to '%s' open */ - Perl_croak(aTHX_ "More than one argument to '>%c' open",IoTYPE_STD); - } - } - else { - if (num_svs) { + } + } + } + } /* & */ + else { + while (isSPACE(*type)) + type++; + if (*type == IoTYPE_STD && (!type[1] || isSPACE(type[1]) || type[1] == ':')) { + type++; + fp = PerlIO_stdout(); + IoTYPE(io) = IoTYPE_STD; + if (num_svs > 1) { + /* diag_listed_as: More than one argument to '%s' open */ + Perl_croak(aTHX_ "More than one argument to '>%c' open",IoTYPE_STD); + } + } + else { + if (num_svs) { fp = PerlIO_openn(aTHX_ type,mode,-1,0,0,NULL,num_svs,svp); } else { SV *namesv = newSVpvn_flags(type, tend - type, SVs_TEMP); - type = NULL; + type = NULL; fp = PerlIO_openn(aTHX_ type,mode,-1,0,0,NULL,1,&namesv); - } - } - } /* !& */ - if (!fp && type && *type && *type != ':' && !isIDFIRST(*type)) - goto unknown_open_mode; - } /* IoTYPE_WRONLY */ - else if (*type == IoTYPE_RDONLY) { - do { - type++; - } while (isSPACE(*type)); - mode[0] = 'r'; + } + } + } /* !& */ + if (!fp && type && *type && *type != ':' && !isIDFIRST(*type)) + goto unknown_open_mode; + } /* IoTYPE_WRONLY */ + else if (*type == IoTYPE_RDONLY) { + do { + type++; + } while (isSPACE(*type)); + mode[0] = 'r'; if (in_raw) - mode[1] = 'b'; + mode[1] = 'b'; else if (in_crlf) - mode[1] = 't'; - if (*type == '&') { - goto duplicity; - } - if (*type == IoTYPE_STD && (!type[1] || isSPACE(type[1]) || type[1] == ':')) { - type++; - fp = PerlIO_stdin(); - IoTYPE(io) = IoTYPE_STD; - if (num_svs > 1) { - /* diag_listed_as: More than one argument to '%s' open */ - Perl_croak(aTHX_ "More than one argument to '<%c' open",IoTYPE_STD); - } - } - else { - if (num_svs) { + mode[1] = 't'; + if (*type == '&') { + goto duplicity; + } + if (*type == IoTYPE_STD && (!type[1] || isSPACE(type[1]) || type[1] == ':')) { + type++; + fp = PerlIO_stdin(); + IoTYPE(io) = IoTYPE_STD; + if (num_svs > 1) { + /* diag_listed_as: More than one argument to '%s' open */ + Perl_croak(aTHX_ "More than one argument to '<%c' open",IoTYPE_STD); + } + } + else { + if (num_svs) { fp = PerlIO_openn(aTHX_ type,mode,-1,0,0,NULL,num_svs,svp); } else { SV *namesv = newSVpvn_flags(type, tend - type, SVs_TEMP); - type = NULL; + type = NULL; fp = PerlIO_openn(aTHX_ type,mode,-1,0,0,NULL,1,&namesv); - } - } - if (!fp && type && *type && *type != ':' && !isIDFIRST(*type)) - goto unknown_open_mode; - } /* IoTYPE_RDONLY */ - else if ((num_svs && /* '-|...' or '...|' */ - type[0] == IoTYPE_STD && type[1] == IoTYPE_PIPE) || - (!num_svs && tend > type+1 && tend[-1] == IoTYPE_PIPE)) { - if (num_svs) { - type += 2; /* skip over '-|' */ - } - else { - *--tend = '\0'; - while (tend > type && isSPACE(tend[-1])) - *--tend = '\0'; - for (; isSPACE(*type); type++) - ; - name = type; - len = tend-type; - } - if (*name == '\0') { - /* command is missing 19990114 */ - if (ckWARN(WARN_PIPE)) - Perl_warner(aTHX_ packWARN(WARN_PIPE), "Missing command in piped open"); - errno = EPIPE; + } + } + if (!fp && type && *type && *type != ':' && !isIDFIRST(*type)) + goto unknown_open_mode; + } /* IoTYPE_RDONLY */ + else if ((num_svs && /* '-|...' or '...|' */ + type[0] == IoTYPE_STD && type[1] == IoTYPE_PIPE) || + (!num_svs && tend > type+1 && tend[-1] == IoTYPE_PIPE)) { + if (num_svs) { + type += 2; /* skip over '-|' */ + } + else { + *--tend = '\0'; + while (tend > type && isSPACE(tend[-1])) + *--tend = '\0'; + for (; isSPACE(*type); type++) + ; + name = type; + len = tend-type; + } + if (*name == '\0') { + /* command is missing 19990114 */ + if (ckWARN(WARN_PIPE)) + Perl_warner(aTHX_ packWARN(WARN_PIPE), "Missing command in piped open"); + errno = EPIPE; fp = NULL; - goto say_false; - } - if (!(*name == '-' && name[1] == '\0') || num_svs) - TAINT_ENV(); - TAINT_PROPER("piped open"); - mode[0] = 'r'; + goto say_false; + } + if (!(*name == '-' && name[1] == '\0') || num_svs) + TAINT_ENV(); + TAINT_PROPER("piped open"); + mode[0] = 'r'; if (in_raw) - mode[1] = 'b'; + mode[1] = 'b'; else if (in_crlf) - mode[1] = 't'; + mode[1] = 't'; - if (num_svs > 1) { - fp = PerlProc_popen_list(mode,num_svs,svp); - } - else { - fp = PerlProc_popen(name,mode); - } - IoTYPE(io) = IoTYPE_PIPE; - if (num_svs) { - while (isSPACE(*type)) - type++; - if (*type) { - if (PerlIO_apply_layers(aTHX_ fp, mode, type) != 0) { + if (num_svs > 1) { + fp = PerlProc_popen_list(mode,num_svs,svp); + } + else { + fp = PerlProc_popen(name,mode); + } + IoTYPE(io) = IoTYPE_PIPE; + if (num_svs) { + while (isSPACE(*type)) + type++; + if (*type) { + if (PerlIO_apply_layers(aTHX_ fp, mode, type) != 0) { fp = NULL; - goto say_false; - } - } - } - } - else { /* layer(Args) */ - if (num_svs) - goto unknown_open_mode; - name = type; - IoTYPE(io) = IoTYPE_RDONLY; - for (; isSPACE(*name); name++) - ; - mode[0] = 'r'; + goto say_false; + } + } + } + } + else { /* layer(Args) */ + if (num_svs) + goto unknown_open_mode; + name = type; + IoTYPE(io) = IoTYPE_RDONLY; + for (; isSPACE(*name); name++) + ; + mode[0] = 'r'; if (in_raw) - mode[1] = 'b'; + mode[1] = 'b'; else if (in_crlf) - mode[1] = 't'; + mode[1] = 't'; - if (*name == '-' && name[1] == '\0') { - fp = PerlIO_stdin(); - IoTYPE(io) = IoTYPE_STD; - } - else { - if (num_svs) { + if (*name == '-' && name[1] == '\0') { + fp = PerlIO_stdin(); + IoTYPE(io) = IoTYPE_STD; + } + else { + if (num_svs) { fp = PerlIO_openn(aTHX_ type,mode,-1,0,0,NULL,num_svs,svp); } else { - SV *namesv = newSVpvn_flags(type, tend - type, SVs_TEMP); - type = NULL; + SV *namesv = newSVpvn_flags(type, tend - type, SVs_TEMP); + type = NULL; fp = PerlIO_openn(aTHX_ type,mode,-1,0,0,NULL,1,&namesv); - } - } - } + } + } + } } say_false: @@ -924,33 +914,33 @@ Zero(&statbuf, 1, Stat_t); if (!fp) { - if (IoTYPE(io) == IoTYPE_RDONLY && ckWARN(WARN_NEWLINE) - && should_warn_nl(oname) - - ) + if (IoTYPE(io) == IoTYPE_RDONLY && ckWARN(WARN_NEWLINE) + && should_warn_nl(oname) + + ) { GCC_DIAG_IGNORE_STMT(-Wformat-nonliteral); /* PL_warn_nl is constant */ - Perl_warner(aTHX_ packWARN(WARN_NEWLINE), PL_warn_nl, "open"); + Perl_warner(aTHX_ packWARN(WARN_NEWLINE), PL_warn_nl, "open"); GCC_DIAG_RESTORE_STMT; } - goto say_false; + goto say_false; } if (ckWARN(WARN_IO)) { - if ((IoTYPE(io) == IoTYPE_RDONLY) && - (fp == PerlIO_stdout() || fp == PerlIO_stderr())) { - Perl_warner(aTHX_ packWARN(WARN_IO), - "Filehandle STD%s reopened as %" HEKf - " only for input", - ((fp == PerlIO_stdout()) ? "OUT" : "ERR"), - HEKfARG(GvENAME_HEK(gv))); - } - else if ((IoTYPE(io) == IoTYPE_WRONLY) && fp == PerlIO_stdin()) { - Perl_warner(aTHX_ packWARN(WARN_IO), - "Filehandle STDIN reopened as %" HEKf " only for output", - HEKfARG(GvENAME_HEK(gv)) - ); - } + if ((IoTYPE(io) == IoTYPE_RDONLY) && + (fp == PerlIO_stdout() || fp == PerlIO_stderr())) { + Perl_warner(aTHX_ packWARN(WARN_IO), + "Filehandle STD%s reopened as %" HEKf + " only for input", + ((fp == PerlIO_stdout()) ? "OUT" : "ERR"), + HEKfARG(GvENAME_HEK(gv))); + } + else if ((IoTYPE(io) == IoTYPE_WRONLY) && fp == PerlIO_stdin()) { + Perl_warner(aTHX_ packWARN(WARN_IO), + "Filehandle STDIN reopened as %" HEKf " only for output", + HEKfARG(GvENAME_HEK(gv)) + ); + } } fd = PerlIO_fileno(fp); @@ -959,27 +949,27 @@ * otherwise unless we "know" the type probe for socket-ness. */ if (IoTYPE(io) && IoTYPE(io) != IoTYPE_PIPE && IoTYPE(io) != IoTYPE_STD && fd >= 0) { - if (PerlLIO_fstat(fd,&statbuf) < 0) { - /* If PerlIO claims to have fd we had better be able to fstat() it. */ - (void) PerlIO_close(fp); - goto say_false; - } + if (PerlLIO_fstat(fd,&statbuf) < 0) { + /* If PerlIO claims to have fd we had better be able to fstat() it. */ + (void) PerlIO_close(fp); + goto say_false; + } #ifndef PERL_MICRO - if (S_ISSOCK(statbuf.st_mode)) - IoTYPE(io) = IoTYPE_SOCKET; /* in case a socket was passed in to us */ + if (S_ISSOCK(statbuf.st_mode)) + IoTYPE(io) = IoTYPE_SOCKET; /* in case a socket was passed in to us */ #ifdef HAS_SOCKET - else if ( - !(statbuf.st_mode & S_IFMT) - && IoTYPE(io) != IoTYPE_WRONLY /* Dups of STD* filehandles already have */ - && IoTYPE(io) != IoTYPE_RDONLY /* type so they aren't marked as sockets */ - ) { /* on OS's that return 0 on fstat()ed pipe */ - char tmpbuf[256]; - Sock_size_t buflen = sizeof tmpbuf; - if (PerlSock_getsockname(fd, (struct sockaddr *)tmpbuf, &buflen) >= 0 - || errno != ENOTSOCK) - IoTYPE(io) = IoTYPE_SOCKET; /* some OS's return 0 on fstat()ed socket */ - /* but some return 0 for streams too, sigh */ - } + else if ( + !(statbuf.st_mode & S_IFMT) + && IoTYPE(io) != IoTYPE_WRONLY /* Dups of STD* filehandles already have */ + && IoTYPE(io) != IoTYPE_RDONLY /* type so they aren't marked as sockets */ + ) { /* on OS's that return 0 on fstat()ed pipe */ + char tmpbuf[256]; + Sock_size_t buflen = sizeof tmpbuf; + if (PerlSock_getsockname(fd, (struct sockaddr *)tmpbuf, &buflen) >= 0 + || errno != ENOTSOCK) + IoTYPE(io) = IoTYPE_SOCKET; /* some OS's return 0 on fstat()ed socket */ + /* but some return 0 for streams too, sigh */ + } #endif /* HAS_SOCKET */ #endif /* !PERL_MICRO */ } @@ -993,26 +983,26 @@ /* If fd is less that PL_maxsysfd i.e. STDIN..STDERR then dup the new fileno down */ - if (saveofp) { - PerlIO_flush(saveofp); /* emulate PerlIO_close() */ - if (saveofp != saveifp) { /* was a socket? */ - PerlIO_close(saveofp); - } - } - if (savefd != fd) { - /* Still a small can-of-worms here if (say) PerlIO::scalar - is assigned to (say) STDOUT - for now let dup2() fail - and provide the error - */ - if (fd < 0) { + if (saveofp) { + PerlIO_flush(saveofp); /* emulate PerlIO_close() */ + if (saveofp != saveifp) { /* was a socket? */ + PerlIO_close(saveofp); + } + } + if (savefd != fd) { + /* Still a small can-of-worms here if (say) PerlIO::scalar + is assigned to (say) STDOUT - for now let dup2() fail + and provide the error + */ + if (fd < 0) { SETERRNO(EBADF,RMS_IFI); - goto say_false; + goto say_false; } else if (PerlLIO_dup2(fd, savefd) < 0) { - (void)PerlIO_close(fp); - goto say_false; - } + (void)PerlIO_close(fp); + goto say_false; + } #ifdef VMS - if (savefd != PerlIO_fileno(PerlIO_stdin())) { + if (savefd != PerlIO_fileno(PerlIO_stdin())) { char newname[FILENAME_MAX+1]; if (PerlIO_getname(fp, newname)) { if (fd == PerlIO_fileno(PerlIO_stdout())) @@ -1020,7 +1010,7 @@ if (fd == PerlIO_fileno(PerlIO_stderr())) vmssetuserlnm("SYS$ERROR", newname); } - } + } #endif #if !defined(WIN32) @@ -1040,7 +1030,7 @@ } #endif - if (was_fdopen) { + if (was_fdopen) { /* need to close fp without closing underlying fd */ int ofd = PerlIO_fileno(fp); int dupfd = ofd >= 0 ? PerlLIO_dup_cloexec(ofd) : -1; @@ -1053,31 +1043,31 @@ PerlLIO_dup2_cloexec(dupfd, ofd); setfd_inhexec_for_sysfd(ofd); PerlLIO_close(dupfd); - } + } else - PerlIO_close(fp); - } - fp = saveifp; - PerlIO_clearerr(fp); - fd = PerlIO_fileno(fp); + PerlIO_close(fp); + } + fp = saveifp; + PerlIO_clearerr(fp); + fd = PerlIO_fileno(fp); } IoIFP(io) = fp; IoFLAGS(io) &= ~IOf_NOLINE; if (writing) { - if (IoTYPE(io) == IoTYPE_SOCKET - || (IoTYPE(io) == IoTYPE_WRONLY && fd >= 0 && S_ISCHR(statbuf.st_mode)) ) { - char *s = mode; - if (*s == IoTYPE_IMPLICIT || *s == IoTYPE_NUMERIC) - s++; - *s = 'w'; - if (!(IoOFP(io) = PerlIO_openn(aTHX_ type,s,fd,0,0,NULL,0,NULL))) { - PerlIO_close(fp); - goto say_false; - } - } - else - IoOFP(io) = fp; + if (IoTYPE(io) == IoTYPE_SOCKET + || (IoTYPE(io) == IoTYPE_WRONLY && fd >= 0 && S_ISCHR(statbuf.st_mode)) ) { + char *s = mode; + if (*s == IoTYPE_IMPLICIT || *s == IoTYPE_NUMERIC) + s++; + *s = 'w'; + if (!(IoOFP(io) = PerlIO_openn(aTHX_ type,s,fd,0,0,NULL,0,NULL))) { + PerlIO_close(fp); + goto say_false; + } + } + else + IoOFP(io) = fp; } if (statbufp) *statbufp = statbuf; @@ -1301,14 +1291,14 @@ SAVEFREESV(old_out_name); if (!PL_argvoutgv) - PL_argvoutgv = gv_fetchpvs("ARGVOUT", GV_ADD|GV_NOTQUAL, SVt_PVIO); + PL_argvoutgv = gv_fetchpvs("ARGVOUT", GV_ADD|GV_NOTQUAL, SVt_PVIO); if (io && (IoFLAGS(io) & (IOf_ARGV|IOf_START)) == (IOf_ARGV|IOf_START)) { - IoFLAGS(io) &= ~IOf_START; - if (PL_inplace) { - assert(PL_defoutgv); - Perl_av_create_and_push(aTHX_ &PL_argvout_stack, - SvREFCNT_inc_simple_NN(PL_defoutgv)); - } + IoFLAGS(io) &= ~IOf_START; + if (PL_inplace) { + assert(PL_defoutgv); + Perl_av_create_and_push(aTHX_ &PL_argvout_stack, + SvREFCNT_inc_simple_NN(PL_defoutgv)); + } } { @@ -1321,15 +1311,15 @@ PL_lastfd = -1; PL_filemode = 0; if (!GvAV(gv)) - return NULL; - while (av_tindex(GvAV(gv)) >= 0) { - STRLEN oldlen; + return NULL; + while (av_count(GvAV(gv)) > 0) { + STRLEN oldlen; SV *const sv = av_shift(GvAV(gv)); - SAVEFREESV(sv); - SvTAINTED_off(GvSVn(gv)); /* previous tainting irrelevant */ - sv_setsv(GvSVn(gv),sv); - SvSETMAGIC(GvSV(gv)); - PL_oldname = SvPVx(GvSV(gv), oldlen); + SAVEFREESV(sv); + SvTAINTED_off(GvSVn(gv)); /* previous tainting irrelevant */ + sv_setsv(GvSVn(gv),sv); + SvSETMAGIC(GvSV(gv)); + PL_oldname = SvPVx(GvSV(gv), oldlen); if (LIKELY(!PL_inplace)) { if (nomagicopen ? do_open6(gv, "<", 1, NULL, &GvSV(gv), 1) @@ -1358,77 +1348,77 @@ SV *temp_name_sv = NULL; MAGIC *mg; - TAINT_PROPER("inplace open"); - if (oldlen == 1 && *PL_oldname == '-') { - setdefout(gv_fetchpvs("STDOUT", GV_ADD|GV_NOTQUAL, - SVt_PVIO)); - return IoIFP(GvIOp(gv)); - } + TAINT_PROPER("inplace open"); + if (oldlen == 1 && *PL_oldname == '-') { + setdefout(gv_fetchpvs("STDOUT", GV_ADD|GV_NOTQUAL, + SVt_PVIO)); + return IoIFP(GvIOp(gv)); + } #ifndef FLEXFILENAMES - filedev = statbuf.st_dev; - fileino = statbuf.st_ino; + filedev = statbuf.st_dev; + fileino = statbuf.st_ino; #endif - PL_filemode = statbuf.st_mode; - fileuid = statbuf.st_uid; - filegid = statbuf.st_gid; - if (!S_ISREG(PL_filemode)) { - Perl_ck_warner_d(aTHX_ packWARN(WARN_INPLACE), - "Can't do inplace edit: %s is not a regular file", - PL_oldname ); - do_close(gv,FALSE); - continue; - } + PL_filemode = statbuf.st_mode; + fileuid = statbuf.st_uid; + filegid = statbuf.st_gid; + if (!S_ISREG(PL_filemode)) { + Perl_ck_warner_d(aTHX_ packWARN(WARN_INPLACE), + "Can't do inplace edit: %s is not a regular file", + PL_oldname ); + do_close(gv,FALSE); + continue; + } magic_av = newAV(); - if (*PL_inplace && strNE(PL_inplace, "*")) { - const char *star = strchr(PL_inplace, '*'); - if (star) { - const char *begin = PL_inplace; + if (*PL_inplace && strNE(PL_inplace, "*")) { + const char *star = strchr(PL_inplace, '*'); + if (star) { + const char *begin = PL_inplace; SvPVCLEAR(sv); - do { - sv_catpvn(sv, begin, star - begin); - sv_catpvn(sv, PL_oldname, oldlen); - begin = ++star; - } while ((star = strchr(begin, '*'))); - if (*begin) - sv_catpv(sv,begin); - } - else { - sv_catpv(sv,PL_inplace); - } + do { + sv_catpvn(sv, begin, star - begin); + sv_catpvn(sv, PL_oldname, oldlen); + begin = ++star; + } while ((star = strchr(begin, '*'))); + if (*begin) + sv_catpv(sv,begin); + } + else { + sv_catpv(sv,PL_inplace); + } #ifndef FLEXFILENAMES - if ((PerlLIO_stat(SvPVX_const(sv),&statbuf) >= 0 - && statbuf.st_dev == filedev - && statbuf.st_ino == fileino) + if ((PerlLIO_stat(SvPVX_const(sv),&statbuf) >= 0 + && statbuf.st_dev == filedev + && statbuf.st_ino == fileino) #ifdef DJGPP - || ((_djstat_fail_bits & _STFAIL_TRUENAME)!=0) + || ((_djstat_fail_bits & _STFAIL_TRUENAME)!=0) #endif ) - { - Perl_ck_warner_d(aTHX_ packWARN(WARN_INPLACE), - "Can't do inplace edit: %" + { + Perl_ck_warner_d(aTHX_ packWARN(WARN_INPLACE), + "Can't do inplace edit: %" SVf " would not be unique", - SVfARG(sv)); + SVfARG(sv)); goto cleanup_argv; - } + } #endif av_store(magic_av, ARGVMG_BACKUP_NAME, newSVsv(sv)); - } + } - sv_setpvn(sv,PL_oldname,oldlen); - SETERRNO(0,0); /* in case sprintf set errno */ + sv_setpvn(sv,PL_oldname,oldlen); + SETERRNO(0,0); /* in case sprintf set errno */ temp_name_sv = newSV(0); if (!S_openindirtemp(aTHX_ PL_argvoutgv, GvSV(gv), temp_name_sv)) { SvREFCNT_dec(temp_name_sv); /* diag_listed_as: Can't do inplace edit on %s: %s */ Perl_ck_warner_d(aTHX_ packWARN(WARN_INPLACE), "Can't do inplace edit on %s: Cannot make temp name: %s", - PL_oldname, Strerror(errno) ); + PL_oldname, Strerror(errno) ); #ifndef FLEXFILENAMES cleanup_argv: #endif do_close(gv,FALSE); SvREFCNT_dec(magic_av); continue; - } + } av_store(magic_av, ARGVMG_TEMP_NAME, temp_name_sv); av_store(magic_av, ARGVMG_ORIG_NAME, newSVsv(sv)); av_store(magic_av, ARGVMG_ORIG_MODE, newSVuv(PL_filemode)); @@ -1442,12 +1432,12 @@ newSVpvn((char *)&statbuf, sizeof(statbuf))); } #endif - setdefout(PL_argvoutgv); + setdefout(PL_argvoutgv); sv_setsv(GvSVn(PL_argvoutgv), temp_name_sv); mg = sv_magicext((SV*)GvIOp(PL_argvoutgv), (SV*)magic_av, PERL_MAGIC_uvar, &argvout_vtbl, NULL, 0); mg->mg_flags |= MGf_DUP; SvREFCNT_dec(magic_av); - PL_lastfd = PerlIO_fileno(IoIFP(GvIOp(PL_argvoutgv))); + PL_lastfd = PerlIO_fileno(IoIFP(GvIOp(PL_argvoutgv))); if (PL_lastfd >= 0) { (void)PerlLIO_fstat(PL_lastfd,&statbuf); #ifdef HAS_FCHMOD @@ -1463,10 +1453,10 @@ PERL_UNUSED_RESULT(PerlLIO_chown(PL_oldname,fileuid,filegid)); #endif } - } + } return IoIFP(GvIOp(gv)); - } - } /* successful do_open_raw(), PL_inplace non-NULL */ + } + } /* successful do_open_raw(), PL_inplace non-NULL */ if (ckWARN_d(WARN_INPLACE)) { const int eno = errno; @@ -1481,20 +1471,20 @@ Perl_warner(aTHX_ packWARN(WARN_INPLACE), "Can't open %s: %s", PL_oldname, Strerror(eno)); } - } + } } if (io && (IoFLAGS(io) & IOf_ARGV)) - IoFLAGS(io) |= IOf_START; + IoFLAGS(io) |= IOf_START; if (PL_inplace) { - if (io && (IoFLAGS(io) & IOf_ARGV) - && PL_argvout_stack && AvFILLp(PL_argvout_stack) >= 0) - { - GV * const oldout = MUTABLE_GV(av_pop(PL_argvout_stack)); - setdefout(oldout); - SvREFCNT_dec_NN(oldout); - return NULL; - } - setdefout(gv_fetchpvs("STDOUT", GV_ADD|GV_NOTQUAL, SVt_PVIO)); + if (io && (IoFLAGS(io) & IOf_ARGV) + && PL_argvout_stack && AvFILLp(PL_argvout_stack) >= 0) + { + GV * const oldout = MUTABLE_GV(av_pop(PL_argvout_stack)); + setdefout(oldout); + SvREFCNT_dec_NN(oldout); + return NULL; + } + setdefout(gv_fetchpvs("STDOUT", GV_ADD|GV_NOTQUAL, SVt_PVIO)); } return NULL; } @@ -1697,7 +1687,7 @@ #if !defined(HAS_RENAME) link(SvPVX(*temp_psv), orig_pv) < 0 #elif defined(ARGV_USE_ATFUNCTIONS) - S_my_renameat(dfd, SvPVX(*temp_psv), dfd, orig_pv) < 0 && + S_my_renameat(dfd, SvPVX(*temp_psv), dfd, orig_pv) < 0 && !(UNLIKELY(NotSupported(errno)) && dir_unchanged(orig_pv, mg) && PerlLIO_rename(SvPVX(*temp_psv), orig_pv) == 0) @@ -1754,19 +1744,19 @@ MAGIC *mg; if (!gv) - gv = PL_argvgv; + gv = PL_argvgv; if (!gv || !isGV_with_GP(gv)) { - if (not_implicit) - SETERRNO(EBADF,SS_IVCHAN); - return FALSE; + if (not_implicit) + SETERRNO(EBADF,SS_IVCHAN); + return FALSE; } io = GvIO(gv); if (!io) { /* never opened */ - if (not_implicit) { - report_evil_fh(gv); - SETERRNO(EBADF,SS_IVCHAN); - } - return FALSE; + if (not_implicit) { + report_evil_fh(gv); + SETERRNO(EBADF,SS_IVCHAN); + } + return FALSE; } if ((mg = mg_findext((SV*)io, PERL_MAGIC_uvar, &argvout_vtbl)) && mg->mg_obj) { @@ -1777,9 +1767,9 @@ retval = io_close(io, NULL, not_implicit, FALSE); } if (not_implicit) { - IoLINES(io) = 0; - IoPAGE(io) = 0; - IoLINES_LEFT(io) = IoPAGE_LEN(io); + IoLINES(io) = 0; + IoPAGE(io) = 0; + IoLINES_LEFT(io) = IoPAGE_LEN(io); } IoTYPE(io) = IoTYPE_CLOSED; return retval; @@ -1793,7 +1783,7 @@ PERL_ARGS_ASSERT_IO_CLOSE; if (IoIFP(io)) { - if (IoTYPE(io) == IoTYPE_PIPE) { + if (IoTYPE(io) == IoTYPE_PIPE) { PerlIO *fh = IoIFP(io); int status; @@ -1804,54 +1794,54 @@ So NULL it early. */ IoOFP(io) = IoIFP(io) = NULL; - status = PerlProc_pclose(fh); - if (not_implicit) { - STATUS_NATIVE_CHILD_SET(status); - retval = (STATUS_UNIX == 0); - } - else { - retval = (status != -1); - } - } - else if (IoTYPE(io) == IoTYPE_STD) - retval = TRUE; - else { - if (IoOFP(io) && IoOFP(io) != IoIFP(io)) { /* a socket */ - const bool prev_err = PerlIO_error(IoOFP(io)); + status = PerlProc_pclose(fh); + if (not_implicit) { + STATUS_NATIVE_CHILD_SET(status); + retval = (STATUS_UNIX == 0); + } + else { + retval = (status != -1); + } + } + else if (IoTYPE(io) == IoTYPE_STD) + retval = TRUE; + else { + if (IoOFP(io) && IoOFP(io) != IoIFP(io)) { /* a socket */ + const bool prev_err = PerlIO_error(IoOFP(io)); #ifdef USE_PERLIO - if (prev_err) - PerlIO_restore_errno(IoOFP(io)); + if (prev_err) + PerlIO_restore_errno(IoOFP(io)); #endif - retval = (PerlIO_close(IoOFP(io)) != EOF && !prev_err); - PerlIO_close(IoIFP(io)); /* clear stdio, fd already closed */ - } - else { - const bool prev_err = PerlIO_error(IoIFP(io)); + retval = (PerlIO_close(IoOFP(io)) != EOF && !prev_err); + PerlIO_close(IoIFP(io)); /* clear stdio, fd already closed */ + } + else { + const bool prev_err = PerlIO_error(IoIFP(io)); #ifdef USE_PERLIO - if (prev_err) - PerlIO_restore_errno(IoIFP(io)); + if (prev_err) + PerlIO_restore_errno(IoIFP(io)); #endif - retval = (PerlIO_close(IoIFP(io)) != EOF && !prev_err); - } - } - IoOFP(io) = IoIFP(io) = NULL; - - if (warn_on_fail && !retval) { - if (gv) - Perl_ck_warner_d(aTHX_ packWARN(WARN_IO), - "Warning: unable to close filehandle %" - HEKf " properly: %" SVf, - HEKfARG(GvNAME_HEK(gv)), + retval = (PerlIO_close(IoIFP(io)) != EOF && !prev_err); + } + } + IoOFP(io) = IoIFP(io) = NULL; + + if (warn_on_fail && !retval) { + if (gv) + Perl_ck_warner_d(aTHX_ packWARN(WARN_IO), + "Warning: unable to close filehandle %" + HEKf " properly: %" SVf, + HEKfARG(GvNAME_HEK(gv)), + SVfARG(get_sv("!",GV_ADD))); + else + Perl_ck_warner_d(aTHX_ packWARN(WARN_IO), + "Warning: unable to close filehandle " + "properly: %" SVf, SVfARG(get_sv("!",GV_ADD))); - else - Perl_ck_warner_d(aTHX_ packWARN(WARN_IO), - "Warning: unable to close filehandle " - "properly: %" SVf, - SVfARG(get_sv("!",GV_ADD))); - } + } } else if (not_implicit) { - SETERRNO(EBADF,SS_IVCHAN); + SETERRNO(EBADF,SS_IVCHAN); } return retval; @@ -1865,38 +1855,38 @@ PERL_ARGS_ASSERT_DO_EOF; if (!io) - return TRUE; + return TRUE; else if (IoTYPE(io) == IoTYPE_WRONLY) - report_wrongway_fh(gv, '>'); + report_wrongway_fh(gv, '>'); while (IoIFP(io)) { if (PerlIO_has_cntptr(IoIFP(io))) { /* (the code works without this) */ - if (PerlIO_get_cnt(IoIFP(io)) > 0) /* cheat a little, since */ - return FALSE; /* this is the most usual case */ + if (PerlIO_get_cnt(IoIFP(io)) > 0) /* cheat a little, since */ + return FALSE; /* this is the most usual case */ } - { - /* getc and ungetc can stomp on errno */ - dSAVE_ERRNO; - const int ch = PerlIO_getc(IoIFP(io)); - if (ch != EOF) { - (void)PerlIO_ungetc(IoIFP(io),ch); - RESTORE_ERRNO; - return FALSE; - } - RESTORE_ERRNO; - } + { + /* getc and ungetc can stomp on errno */ + dSAVE_ERRNO; + const int ch = PerlIO_getc(IoIFP(io)); + if (ch != EOF) { + (void)PerlIO_ungetc(IoIFP(io),ch); + RESTORE_ERRNO; + return FALSE; + } + RESTORE_ERRNO; + } if (PerlIO_has_cntptr(IoIFP(io)) && PerlIO_canset_cnt(IoIFP(io))) { - if (PerlIO_get_cnt(IoIFP(io)) < -1) - PerlIO_set_cnt(IoIFP(io),-1); - } - if (PL_op->op_flags & OPf_SPECIAL) { /* not necessarily a real EOF yet? */ - if (gv != PL_argvgv || !nextargv(gv, FALSE)) /* get another fp handy */ - return TRUE; - } - else - return TRUE; /* normal fp, definitely end of file */ + if (PerlIO_get_cnt(IoIFP(io)) < -1) + PerlIO_set_cnt(IoIFP(io),-1); + } + if (PL_op->op_flags & OPf_SPECIAL) { /* not necessarily a real EOF yet? */ + if (gv != PL_argvgv || !nextargv(gv, FALSE)) /* get another fp handy */ + return TRUE; + } + else + return TRUE; /* normal fp, definitely end of file */ } return TRUE; } @@ -1910,7 +1900,7 @@ PERL_ARGS_ASSERT_DO_TELL; if (io && (fp = IoIFP(io))) { - return PerlIO_tell(fp); + return PerlIO_tell(fp); } report_evil_fh(gv); SETERRNO(EBADF,RMS_IFI); @@ -1924,7 +1914,7 @@ PerlIO *fp; if (io && (fp = IoIFP(io))) { - return PerlIO_seek(fp, pos, whence) >= 0; + return PerlIO_seek(fp, pos, whence) >= 0; } report_evil_fh(gv); SETERRNO(EBADF,RMS_IFI); @@ -1959,51 +1949,51 @@ int mode = O_BINARY; PERL_UNUSED_CONTEXT; if (s) { - while (*s) { - if (*s == ':') { - switch (s[1]) { - case 'r': - if (s[2] == 'a' && s[3] == 'w' - && (!s[4] || s[4] == ':' || isSPACE(s[4]))) - { - mode = O_BINARY; - s += 4; - len -= 4; - break; - } - /* FALLTHROUGH */ - case 'c': - if (s[2] == 'r' && s[3] == 'l' && s[4] == 'f' - && (!s[5] || s[5] == ':' || isSPACE(s[5]))) - { - mode = O_TEXT; - s += 5; - len -= 5; - break; - } - /* FALLTHROUGH */ - default: - goto fail_discipline; - } - } - else if (isSPACE(*s)) { - ++s; - --len; - } - else { - const char *end; + while (*s) { + if (*s == ':') { + switch (s[1]) { + case 'r': + if (s[2] == 'a' && s[3] == 'w' + && (!s[4] || s[4] == ':' || isSPACE(s[4]))) + { + mode = O_BINARY; + s += 4; + len -= 4; + break; + } + /* FALLTHROUGH */ + case 'c': + if (s[2] == 'r' && s[3] == 'l' && s[4] == 'f' + && (!s[5] || s[5] == ':' || isSPACE(s[5]))) + { + mode = O_TEXT; + s += 5; + len -= 5; + break; + } + /* FALLTHROUGH */ + default: + goto fail_discipline; + } + } + else if (isSPACE(*s)) { + ++s; + --len; + } + else { + const char *end; fail_discipline: - end = (char *) memchr(s+1, ':', len); - if (!end) - end = s+len; + end = (char *) memchr(s+1, ':', len); + if (!end) + end = s+len; #ifndef PERLIO_LAYERS - Perl_croak(aTHX_ "IO layers (like '%.*s') unavailable", end-s, s); + Perl_croak(aTHX_ "IO layers (like '%.*s') unavailable", end-s, s); #else - len -= end-s; - s = end; + len -= end-s; + s = end; #endif - } - } + } + } } return mode; } @@ -2013,44 +2003,44 @@ my_chsize(int fd, Off_t length) { #ifdef F_FREESP - /* code courtesy of William Kucharski */ + /* code courtesy of William Kucharski */ #define HAS_CHSIZE Stat_t filebuf; if (PerlLIO_fstat(fd, &filebuf) < 0) - return -1; + return -1; if (filebuf.st_size < length) { - /* extend file length */ + /* extend file length */ - if ((PerlLIO_lseek(fd, (length - 1), 0)) < 0) - return -1; + if ((PerlLIO_lseek(fd, (length - 1), 0)) < 0) + return -1; - /* write a "0" byte */ + /* write a "0" byte */ - if ((PerlLIO_write(fd, "", 1)) != 1) - return -1; + if ((PerlLIO_write(fd, "", 1)) != 1) + return -1; } else { - /* truncate length */ - struct flock fl; - fl.l_whence = 0; - fl.l_len = 0; - fl.l_start = length; - fl.l_type = F_WRLCK; /* write lock on file space */ - - /* - * This relies on the UNDOCUMENTED F_FREESP argument to - * fcntl(2), which truncates the file so that it ends at the - * position indicated by fl.l_start. - * - * Will minor miracles never cease? - */ + /* truncate length */ + struct flock fl; + fl.l_whence = 0; + fl.l_len = 0; + fl.l_start = length; + fl.l_type = F_WRLCK; /* write lock on file space */ + + /* + * This relies on the UNDOCUMENTED F_FREESP argument to + * fcntl(2), which truncates the file so that it ends at the + * position indicated by fl.l_start. + * + * Will minor miracles never cease? + */ - if (fcntl(fd, F_FREESP, &fl) < 0) - return -1; + if (fcntl(fd, F_FREESP, &fl) < 0) + return -1; } return 0; @@ -2068,67 +2058,67 @@ /* assuming fp is checked earlier */ if (!sv) - return TRUE; + return TRUE; if (SvTYPE(sv) == SVt_IV && SvIOK(sv)) { - assert(!SvGMAGICAL(sv)); - if (SvIsUV(sv)) - PerlIO_printf(fp, "%" UVuf, (UV)SvUVX(sv)); - else - PerlIO_printf(fp, "%" IVdf, (IV)SvIVX(sv)); - return !PerlIO_error(fp); + assert(!SvGMAGICAL(sv)); + if (SvIsUV(sv)) + PerlIO_printf(fp, "%" UVuf, (UV)SvUVX(sv)); + else + PerlIO_printf(fp, "%" IVdf, (IV)SvIVX(sv)); + return !PerlIO_error(fp); } else { - STRLEN len; - /* Do this first to trigger any overloading. */ - const char *tmps = SvPV_const(sv, len); - U8 *tmpbuf = NULL; - bool happy = TRUE; - - if (PerlIO_isutf8(fp)) { /* If the stream is utf8 ... */ - if (!SvUTF8(sv)) { /* Convert to utf8 if necessary */ - /* We don't modify the original scalar. */ - tmpbuf = bytes_to_utf8((const U8*) tmps, &len); - tmps = (char *) tmpbuf; - } - else if (ckWARN4_d(WARN_UTF8, WARN_SURROGATE, WARN_NON_UNICODE, WARN_NONCHAR)) { - (void) check_utf8_print((const U8*) tmps, len); - } - } /* else stream isn't utf8 */ - else if (DO_UTF8(sv)) { /* But if is utf8 internally, attempt to - convert to bytes */ - STRLEN tmplen = len; - bool utf8 = TRUE; - U8 * const result = bytes_from_utf8((const U8*) tmps, &tmplen, &utf8); - if (!utf8) { - - /* Here, succeeded in downgrading from utf8. Set up to below - * output the converted value */ - tmpbuf = result; - tmps = (char *) tmpbuf; - len = tmplen; - } - else { /* Non-utf8 output stream, but string only representable in - utf8 */ - assert((char *)result == tmps); - Perl_ck_warner_d(aTHX_ packWARN(WARN_UTF8), - "Wide character in %s", - PL_op ? OP_DESC(PL_op) : "print" - ); - /* Could also check that isn't one of the things to avoid - * in utf8 by using check_utf8_print(), but not doing so, - * since the stream isn't a UTF8 stream */ - } - } - /* To detect whether the process is about to overstep its - * filesize limit we would need getrlimit(). We could then - * also transparently raise the limit with setrlimit() -- - * but only until the system hard limit/the filesystem limit, - * at which we would get EPERM. Note that when using buffered - * io the write failure can be delayed until the flush/close. --jhi */ - if (len && (PerlIO_write(fp,tmps,len) == 0)) - happy = FALSE; - Safefree(tmpbuf); - return happy ? !PerlIO_error(fp) : FALSE; + STRLEN len; + /* Do this first to trigger any overloading. */ + const char *tmps = SvPV_const(sv, len); + U8 *tmpbuf = NULL; + bool happy = TRUE; + + if (PerlIO_isutf8(fp)) { /* If the stream is utf8 ... */ + if (!SvUTF8(sv)) { /* Convert to utf8 if necessary */ + /* We don't modify the original scalar. */ + tmpbuf = bytes_to_utf8((const U8*) tmps, &len); + tmps = (char *) tmpbuf; + } + else if (ckWARN4_d(WARN_UTF8, WARN_SURROGATE, WARN_NON_UNICODE, WARN_NONCHAR)) { + (void) check_utf8_print((const U8*) tmps, len); + } + } /* else stream isn't utf8 */ + else if (DO_UTF8(sv)) { /* But if is utf8 internally, attempt to + convert to bytes */ + STRLEN tmplen = len; + bool utf8 = TRUE; + U8 * const result = bytes_from_utf8((const U8*) tmps, &tmplen, &utf8); + if (!utf8) { + + /* Here, succeeded in downgrading from utf8. Set up to below + * output the converted value */ + tmpbuf = result; + tmps = (char *) tmpbuf; + len = tmplen; + } + else { /* Non-utf8 output stream, but string only representable in + utf8 */ + assert((char *)result == tmps); + Perl_ck_warner_d(aTHX_ packWARN(WARN_UTF8), + "Wide character in %s", + PL_op ? OP_DESC(PL_op) : "print" + ); + /* Could also check that isn't one of the things to avoid + * in utf8 by using check_utf8_print(), but not doing so, + * since the stream isn't a UTF8 stream */ + } + } + /* To detect whether the process is about to overstep its + * filesize limit we would need getrlimit(). We could then + * also transparently raise the limit with setrlimit() -- + * but only until the system hard limit/the filesystem limit, + * at which we would get EPERM. Note that when using buffered + * io the write failure can be delayed until the flush/close. --jhi */ + if (len && (PerlIO_write(fp,tmps,len) == 0)) + happy = FALSE; + Safefree(tmpbuf); + return happy ? !PerlIO_error(fp) : FALSE; } } @@ -2140,24 +2130,24 @@ GV* gv; if (PL_op->op_flags & OPf_REF) { - gv = cGVOP_gv; + gv = cGVOP_gv; do_fstat: if (gv == PL_defgv) { - if (PL_laststatval < 0) - SETERRNO(EBADF,RMS_IFI); + if (PL_laststatval < 0) + SETERRNO(EBADF,RMS_IFI); return PL_laststatval; - } - io = GvIO(gv); + } + io = GvIO(gv); do_fstat_have_io: PL_laststype = OP_STAT; PL_statgv = gv ? gv : (GV *)io; SvPVCLEAR(PL_statname); if (io) { - if (IoIFP(io)) { + if (IoIFP(io)) { int fd = PerlIO_fileno(IoIFP(io)); if (fd < 0) { /* E.g. PerlIO::scalar has no real fd. */ - SETERRNO(EBADF,RMS_IFI); + SETERRNO(EBADF,RMS_IFI); return (PL_laststatval = -1); } else { return (PL_laststatval = PerlLIO_fstat(fd, &PL_statcache)); @@ -2166,44 +2156,44 @@ return (PL_laststatval = PerlLIO_fstat(my_dirfd(IoDIRP(io)), &PL_statcache)); } } - PL_laststatval = -1; - report_evil_fh(gv); - SETERRNO(EBADF,RMS_IFI); - return -1; + PL_laststatval = -1; + report_evil_fh(gv); + SETERRNO(EBADF,RMS_IFI); + return -1; } else if ((PL_op->op_private & (OPpFT_STACKED|OPpFT_AFTER_t)) - == OPpFT_STACKED) - return PL_laststatval; + == OPpFT_STACKED) + return PL_laststatval; else { - SV* const sv = TOPs; - const char *s, *d; - STRLEN len; - if ((gv = MAYBE_DEREF_GV_flags(sv,flags))) { - goto do_fstat; - } + SV* const sv = TOPs; + const char *s, *d; + STRLEN len; + if ((gv = MAYBE_DEREF_GV_flags(sv,flags))) { + goto do_fstat; + } else if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVIO) { io = MUTABLE_IO(SvRV(sv)); - gv = NULL; + gv = NULL; goto do_fstat_have_io; } - s = SvPV_flags_const(sv, len, flags); - PL_statgv = NULL; - sv_setpvn(PL_statname, s, len); - d = SvPVX_const(PL_statname); /* s now NUL-terminated */ - PL_laststype = OP_STAT; + s = SvPV_flags_const(sv, len, flags); + PL_statgv = NULL; + sv_setpvn(PL_statname, s, len); + d = SvPVX_const(PL_statname); /* s now NUL-terminated */ + PL_laststype = OP_STAT; if (!IS_SAFE_PATHNAME(s, len, OP_NAME(PL_op))) { PL_laststatval = -1; } else { PL_laststatval = PerlLIO_stat(d, &PL_statcache); } - if (PL_laststatval < 0 && ckWARN(WARN_NEWLINE) && should_warn_nl(s)) { + if (PL_laststatval < 0 && ckWARN(WARN_NEWLINE) && should_warn_nl(s)) { GCC_DIAG_IGNORE_STMT(-Wformat-nonliteral); /* PL_warn_nl is constant */ - Perl_warner(aTHX_ packWARN(WARN_NEWLINE), PL_warn_nl, "stat"); + Perl_warner(aTHX_ packWARN(WARN_NEWLINE), PL_warn_nl, "stat"); GCC_DIAG_RESTORE_STMT; } - return PL_laststatval; + return PL_laststatval; } } @@ -2218,27 +2208,27 @@ SV* const sv = TOPs; bool isio = FALSE; if (PL_op->op_flags & OPf_REF) { - if (cGVOP_gv == PL_defgv) { - if (PL_laststype != OP_LSTAT) - Perl_croak(aTHX_ "%s", no_prev_lstat); - if (PL_laststatval < 0) - SETERRNO(EBADF,RMS_IFI); - return PL_laststatval; - } - PL_laststatval = -1; - if (ckWARN(WARN_IO)) { - /* diag_listed_as: Use of -l on filehandle%s */ - Perl_warner(aTHX_ packWARN(WARN_IO), - "Use of -l on filehandle %" HEKf, - HEKfARG(GvENAME_HEK(cGVOP_gv))); - } - SETERRNO(EBADF,RMS_IFI); - return -1; + if (cGVOP_gv == PL_defgv) { + if (PL_laststype != OP_LSTAT) + Perl_croak(aTHX_ "%s", no_prev_lstat); + if (PL_laststatval < 0) + SETERRNO(EBADF,RMS_IFI); + return PL_laststatval; + } + PL_laststatval = -1; + if (ckWARN(WARN_IO)) { + /* diag_listed_as: Use of -l on filehandle%s */ + Perl_warner(aTHX_ packWARN(WARN_IO), + "Use of -l on filehandle %" HEKf, + HEKfARG(GvENAME_HEK(cGVOP_gv))); + } + SETERRNO(EBADF,RMS_IFI); + return -1; } if ((PL_op->op_private & (OPpFT_STACKED|OPpFT_AFTER_t)) - == OPpFT_STACKED) { + == OPpFT_STACKED) { if (PL_laststype != OP_LSTAT) - Perl_croak(aTHX_ "%s", no_prev_lstat); + Perl_croak(aTHX_ "%s", no_prev_lstat); return PL_laststatval; } @@ -2251,11 +2241,11 @@ ) && ckWARN(WARN_IO)) { if (isio) - /* diag_listed_as: Use of -l on filehandle%s */ + /* diag_listed_as: Use of -l on filehandle%s */ Perl_warner(aTHX_ packWARN(WARN_IO), "Use of -l on filehandle"); else - /* diag_listed_as: Use of -l on filehandle%s */ + /* diag_listed_as: Use of -l on filehandle%s */ Perl_warner(aTHX_ packWARN(WARN_IO), "Use of -l on filehandle %" HEKf, HEKfARG(GvENAME_HEK((const GV *) @@ -2289,53 +2279,52 @@ if (do_report) { /* XXX silently ignore failures */ PERL_UNUSED_RESULT(PerlLIO_write(fd, (void*)&e, sizeof(int))); - PerlLIO_close(fd); + PerlLIO_close(fd); } } bool Perl_do_aexec5(pTHX_ SV *really, SV **mark, SV **sp, - int fd, int do_report) + int fd, int do_report) { - dVAR; PERL_ARGS_ASSERT_DO_AEXEC5; -#if defined(__SYMBIAN32__) || defined(__LIBCATAMOUNT__) +#if defined(__LIBCATAMOUNT__) Perl_croak(aTHX_ "exec? I'm not *that* kind of operating system"); #else assert(sp >= mark); ENTER; { - const char **argv, **a; - const char *tmps = NULL; - Newx(argv, sp - mark + 1, const char*); - SAVEFREEPV(argv); - a = argv; - - while (++mark <= sp) { - if (*mark) { - char *arg = savepv(SvPV_nolen_const(*mark)); - SAVEFREEPV(arg); - *a++ = arg; - } else - *a++ = ""; - } - *a = NULL; - if (really) { - tmps = savepv(SvPV_nolen_const(really)); - SAVEFREEPV(tmps); - } + const char **argv, **a; + const char *tmps = NULL; + Newx(argv, sp - mark + 1, const char*); + SAVEFREEPV(argv); + a = argv; + + while (++mark <= sp) { + if (*mark) { + char *arg = savepv(SvPV_nolen_const(*mark)); + SAVEFREEPV(arg); + *a++ = arg; + } else + *a++ = ""; + } + *a = NULL; + if (really) { + tmps = savepv(SvPV_nolen_const(really)); + SAVEFREEPV(tmps); + } if ((!really && argv[0] && *argv[0] != '/') || - (really && *tmps != '/')) /* will execvp use PATH? */ - TAINT_ENV(); /* testing IFS here is overkill, probably */ - PERL_FPU_PRE_EXEC - if (really && *tmps) { + (really && *tmps != '/')) /* will execvp use PATH? */ + TAINT_ENV(); /* testing IFS here is overkill, probably */ + PERL_FPU_PRE_EXEC + if (really && *tmps) { PerlProc_execvp(tmps,EXEC_ARGV_CAST(argv)); } else if (argv[0]) { PerlProc_execvp(argv[0],EXEC_ARGV_CAST(argv)); } else { SETERRNO(ENOENT,RMS_FNF); } - PERL_FPU_POST_EXEC + PERL_FPU_POST_EXEC S_exec_failed(aTHX_ (really ? tmps : argv[0] ? argv[0] : ""), fd, do_report); } LEAVE; @@ -2348,7 +2337,6 @@ bool Perl_do_exec3(pTHX_ const char *incmd, int fd, int do_report) { - dVAR; const char **argv, **a; char *s; char *buf; @@ -2365,86 +2353,86 @@ memcpy(cmd, incmd, cmdlen); while (*cmd && isSPACE(*cmd)) - cmd++; + cmd++; /* save an extra exec if possible */ #ifdef CSH { char flags[PERL_FLAGS_MAX]; - if (strnEQ(cmd,PL_cshname,PL_cshlen) && - strBEGINs(cmd+PL_cshlen," -c")) { + if (strnEQ(cmd,PL_cshname,PL_cshlen) && + strBEGINs(cmd+PL_cshlen," -c")) { my_strlcpy(flags, "-c", PERL_FLAGS_MAX); - s = cmd+PL_cshlen+3; - if (*s == 'f') { - s++; + s = cmd+PL_cshlen+3; + if (*s == 'f') { + s++; my_strlcat(flags, "f", PERL_FLAGS_MAX - 2); - } - if (*s == ' ') - s++; - if (*s++ == '\'') { - char * const ncmd = s; - - while (*s) - s++; - if (s[-1] == '\n') - *--s = '\0'; - if (s[-1] == '\'') { - *--s = '\0'; - PERL_FPU_PRE_EXEC - PerlProc_execl(PL_cshname, "csh", flags, ncmd, (char*)NULL); - PERL_FPU_POST_EXEC - *s = '\''; - S_exec_failed(aTHX_ PL_cshname, fd, do_report); - goto leave; - } - } - } + } + if (*s == ' ') + s++; + if (*s++ == '\'') { + char * const ncmd = s; + + while (*s) + s++; + if (s[-1] == '\n') + *--s = '\0'; + if (s[-1] == '\'') { + *--s = '\0'; + PERL_FPU_PRE_EXEC + PerlProc_execl(PL_cshname, "csh", flags, ncmd, (char*)NULL); + PERL_FPU_POST_EXEC + *s = '\''; + S_exec_failed(aTHX_ PL_cshname, fd, do_report); + goto leave; + } + } + } } #endif /* CSH */ /* see if there are shell metacharacters in it */ if (*cmd == '.' && isSPACE(cmd[1])) - goto doshell; + goto doshell; if (strBEGINs(cmd,"exec") && isSPACE(cmd[4])) - goto doshell; + goto doshell; s = cmd; while (isWORDCHAR(*s)) - s++; /* catch VAR=val gizmo */ + s++; /* catch VAR=val gizmo */ if (*s == '=') - goto doshell; + goto doshell; for (s = cmd; *s; s++) { - if (*s != ' ' && !isALPHA(*s) && - memCHRs("$&*(){}[]'\";\\|?<>~`\n",*s)) { - if (*s == '\n' && !s[1]) { - *s = '\0'; - break; - } - /* handle the 2>&1 construct at the end */ - if (*s == '>' && s[1] == '&' && s[2] == '1' - && s > cmd + 1 && s[-1] == '2' && isSPACE(s[-2]) - && (!s[3] || isSPACE(s[3]))) - { + if (*s != ' ' && !isALPHA(*s) && + memCHRs("$&*(){}[]'\";\\|?<>~`\n",*s)) { + if (*s == '\n' && !s[1]) { + *s = '\0'; + break; + } + /* handle the 2>&1 construct at the end */ + if (*s == '>' && s[1] == '&' && s[2] == '1' + && s > cmd + 1 && s[-1] == '2' && isSPACE(s[-2]) + && (!s[3] || isSPACE(s[3]))) + { const char *t = s + 3; - while (*t && isSPACE(*t)) - ++t; - if (!*t && (PerlLIO_dup2(1,2) != -1)) { - s[-2] = '\0'; - break; - } - } - doshell: - PERL_FPU_PRE_EXEC + while (*t && isSPACE(*t)) + ++t; + if (!*t && (PerlLIO_dup2(1,2) != -1)) { + s[-2] = '\0'; + break; + } + } + doshell: + PERL_FPU_PRE_EXEC PerlProc_execl(PL_sh_path, "sh", "-c", cmd, (char *)NULL); - PERL_FPU_POST_EXEC - S_exec_failed(aTHX_ PL_sh_path, fd, do_report); - goto leave; - } + PERL_FPU_POST_EXEC + S_exec_failed(aTHX_ PL_sh_path, fd, do_report); + goto leave; + } } Newx(argv, (s - cmd) / 2 + 2, const char*); @@ -2453,23 +2441,23 @@ SAVEFREEPV(cmd); a = argv; for (s = cmd; *s;) { - while (isSPACE(*s)) - s++; - if (*s) - *(a++) = s; - while (*s && !isSPACE(*s)) - s++; - if (*s) - *s++ = '\0'; + while (isSPACE(*s)) + s++; + if (*s) + *(a++) = s; + while (*s && !isSPACE(*s)) + s++; + if (*s) + *s++ = '\0'; } *a = NULL; if (argv[0]) { - PERL_FPU_PRE_EXEC + PERL_FPU_PRE_EXEC PerlProc_execvp(argv[0],EXEC_ARGV_CAST(argv)); - PERL_FPU_POST_EXEC - if (errno == ENOEXEC) /* for system V NIH syndrome */ - goto doshell; - S_exec_failed(aTHX_ argv[0], fd, do_report); + PERL_FPU_POST_EXEC + if (errno == ENOEXEC) /* for system V NIH syndrome */ + goto doshell; + S_exec_failed(aTHX_ argv[0], fd, do_report); } leave: LEAVE; @@ -2498,109 +2486,109 @@ platforms where kill was not defined. */ #ifndef HAS_KILL if (type == OP_KILL) - Perl_die(aTHX_ PL_no_func, what); + Perl_die(aTHX_ PL_no_func, what); #endif #ifndef HAS_CHOWN if (type == OP_CHOWN) - Perl_die(aTHX_ PL_no_func, what); + Perl_die(aTHX_ PL_no_func, what); #endif #define APPLY_TAINT_PROPER() \ STMT_START { \ - if (TAINT_get) { TAINT_PROPER(what); } \ + if (TAINT_get) { TAINT_PROPER(what); } \ } STMT_END /* This is a first heuristic; it doesn't catch tainting magic. */ if (TAINTING_get) { - while (++mark <= sp) { - if (SvTAINTED(*mark)) { - TAINT; - break; - } - } - mark = oldmark; + while (++mark <= sp) { + if (SvTAINTED(*mark)) { + TAINT; + break; + } + } + mark = oldmark; } switch (type) { case OP_CHMOD: - APPLY_TAINT_PROPER(); - if (++mark <= sp) { - val = SvIV(*mark); - APPLY_TAINT_PROPER(); - tot = sp - mark; - while (++mark <= sp) { + APPLY_TAINT_PROPER(); + if (++mark <= sp) { + val = SvIV(*mark); + APPLY_TAINT_PROPER(); + tot = sp - mark; + while (++mark <= sp) { GV* gv; if ((gv = MAYBE_DEREF_GV(*mark))) { - if (GvIO(gv) && IoIFP(GvIOp(gv))) { + if (GvIO(gv) && IoIFP(GvIOp(gv))) { #ifdef HAS_FCHMOD int fd = PerlIO_fileno(IoIFP(GvIOn(gv))); - APPLY_TAINT_PROPER(); + APPLY_TAINT_PROPER(); if (fd < 0) { SETERRNO(EBADF,RMS_IFI); tot--; } else if (fchmod(fd, val)) tot--; #else - Perl_die(aTHX_ PL_no_func, "fchmod"); + Perl_die(aTHX_ PL_no_func, "fchmod"); #endif - } - else { + } + else { SETERRNO(EBADF,RMS_IFI); - tot--; - } - } - else { - const char *name = SvPV_nomg_const(*mark, len); - APPLY_TAINT_PROPER(); + tot--; + } + } + else { + const char *name = SvPV_nomg_const(*mark, len); + APPLY_TAINT_PROPER(); if (!IS_SAFE_PATHNAME(name, len, "chmod") || PerlLIO_chmod(name, val)) { tot--; } - } - } - } - break; + } + } + } + break; #ifdef HAS_CHOWN case OP_CHOWN: - APPLY_TAINT_PROPER(); - if (sp - mark > 2) { + APPLY_TAINT_PROPER(); + if (sp - mark > 2) { I32 val2; - val = SvIVx(*++mark); - val2 = SvIVx(*++mark); - APPLY_TAINT_PROPER(); - tot = sp - mark; - while (++mark <= sp) { + val = SvIVx(*++mark); + val2 = SvIVx(*++mark); + APPLY_TAINT_PROPER(); + tot = sp - mark; + while (++mark <= sp) { GV* gv; - if ((gv = MAYBE_DEREF_GV(*mark))) { - if (GvIO(gv) && IoIFP(GvIOp(gv))) { + if ((gv = MAYBE_DEREF_GV(*mark))) { + if (GvIO(gv) && IoIFP(GvIOp(gv))) { #ifdef HAS_FCHOWN int fd = PerlIO_fileno(IoIFP(GvIOn(gv))); - APPLY_TAINT_PROPER(); + APPLY_TAINT_PROPER(); if (fd < 0) { SETERRNO(EBADF,RMS_IFI); - tot--; + tot--; } else if (fchown(fd, val, val2)) - tot--; + tot--; #else - Perl_die(aTHX_ PL_no_func, "fchown"); + Perl_die(aTHX_ PL_no_func, "fchown"); #endif - } - else { + } + else { SETERRNO(EBADF,RMS_IFI); - tot--; - } - } - else { - const char *name = SvPV_nomg_const(*mark, len); - APPLY_TAINT_PROPER(); + tot--; + } + } + else { + const char *name = SvPV_nomg_const(*mark, len); + APPLY_TAINT_PROPER(); if (!IS_SAFE_PATHNAME(name, len, "chown") || PerlLIO_chown(name, val, val2)) { - tot--; + tot--; } - } - } - } - break; + } + } + } + break; #endif /* XXX Should we make lchown() directly available from perl? @@ -2610,44 +2598,44 @@ */ #ifdef HAS_KILL case OP_KILL: - APPLY_TAINT_PROPER(); - if (mark == sp) - break; - s = SvPVx_const(*++mark, len); - if (*s == '-' && isALPHA(s[1])) - { - s++; - len--; + APPLY_TAINT_PROPER(); + if (mark == sp) + break; + s = SvPVx_const(*++mark, len); + if (*s == '-' && isALPHA(s[1])) + { + s++; + len--; killgp = TRUE; - } - if (isALPHA(*s)) { - if (*s == 'S' && s[1] == 'I' && s[2] == 'G') { - s += 3; + } + if (isALPHA(*s)) { + if (*s == 'S' && s[1] == 'I' && s[2] == 'G') { + s += 3; len -= 3; } if ((val = whichsig_pvn(s, len)) < 0) Perl_croak(aTHX_ "Unrecognized signal name \"%" SVf "\"", SVfARG(*mark)); - } - else - { - val = SvIV(*mark); - if (val < 0) - { - killgp = TRUE; + } + else + { + val = SvIV(*mark); + if (val < 0) + { + killgp = TRUE; val = -val; - } - } - APPLY_TAINT_PROPER(); - tot = sp - mark; - - while (++mark <= sp) { - Pid_t proc; - SvGETMAGIC(*mark); - if (!(SvNIOK(*mark) || looks_like_number(*mark))) - Perl_croak(aTHX_ "Can't kill a non-numeric process ID"); - proc = SvIV_nomg(*mark); - APPLY_TAINT_PROPER(); + } + } + APPLY_TAINT_PROPER(); + tot = sp - mark; + + while (++mark <= sp) { + Pid_t proc; + SvGETMAGIC(*mark); + if (!(SvNIOK(*mark) || looks_like_number(*mark))) + Perl_croak(aTHX_ "Can't kill a non-numeric process ID"); + proc = SvIV_nomg(*mark); + APPLY_TAINT_PROPER(); #ifdef HAS_KILLPG /* use killpg in preference, as the killpg() wrapper for Win32 * understands process groups, but the kill() wrapper doesn't */ @@ -2656,28 +2644,28 @@ #else if (PerlProc_kill(killgp ? -proc: proc, val)) #endif - tot--; - } - PERL_ASYNC_CHECK(); - break; + tot--; + } + PERL_ASYNC_CHECK(); + break; #endif case OP_UNLINK: - APPLY_TAINT_PROPER(); - tot = sp - mark; - while (++mark <= sp) { - s = SvPV_const(*mark, len); - APPLY_TAINT_PROPER(); - if (!IS_SAFE_PATHNAME(s, len, "unlink")) { + APPLY_TAINT_PROPER(); + tot = sp - mark; + while (++mark <= sp) { + s = SvPV_const(*mark, len); + APPLY_TAINT_PROPER(); + if (!IS_SAFE_PATHNAME(s, len, "unlink")) { tot--; } - else if (PL_unsafe) { - if (UNLINK(s)) - { - tot--; - } + else if (PL_unsafe) { + if (UNLINK(s)) + { + tot--; + } #if defined(__amigaos4__) && defined(NEWLIB) - else - { + else + { /* Under AmigaOS4 unlink only 'fails' if the * filename is invalid. It may not remove the file * if it's locked, so check if it's still around. */ @@ -2685,58 +2673,58 @@ { tot--; } - } + } #endif - } - else { /* don't let root wipe out directories without -U */ - Stat_t statbuf; - if (PerlLIO_lstat(s, &statbuf) < 0) - tot--; - else if (S_ISDIR(statbuf.st_mode)) { - SETERRNO(EISDIR, SS_NOPRIV); - tot--; - } - else { - if (UNLINK(s)) - { - tot--; - } + } + else { /* don't let root wipe out directories without -U */ + Stat_t statbuf; + if (PerlLIO_lstat(s, &statbuf) < 0) + tot--; + else if (S_ISDIR(statbuf.st_mode)) { + SETERRNO(EISDIR, SS_NOPRIV); + tot--; + } + else { + if (UNLINK(s)) + { + tot--; + } #if defined(__amigaos4__) && defined(NEWLIB) - else - { - /* Under AmigaOS4 unlink only 'fails' if the filename is invalid */ - /* It may not remove the file if it's Locked, so check if it's still */ - /* arround */ - if((access(s,F_OK) != -1)) - { - tot--; - } - } -#endif - } - } - } - break; + else + { + /* Under AmigaOS4 unlink only 'fails' if the filename is invalid */ + /* It may not remove the file if it's Locked, so check if it's still */ + /* arround */ + if((access(s,F_OK) != -1)) + { + tot--; + } + } +#endif + } + } + } + break; #if defined(HAS_UTIME) || defined(HAS_FUTIMES) case OP_UTIME: - APPLY_TAINT_PROPER(); - if (sp - mark > 2) { + APPLY_TAINT_PROPER(); + if (sp - mark > 2) { #if defined(HAS_FUTIMES) - struct timeval utbuf[2]; - void *utbufp = utbuf; + struct timeval utbuf[2]; + void *utbufp = utbuf; #elif defined(I_UTIME) || defined(VMS) - struct utimbuf utbuf; - struct utimbuf *utbufp = &utbuf; + struct utimbuf utbuf; + struct utimbuf *utbufp = &utbuf; #else - struct { - Time_t actime; - Time_t modtime; - } utbuf; - void *utbufp = &utbuf; + struct { + Time_t actime; + Time_t modtime; + } utbuf; + void *utbufp = &utbuf; #endif - SV* const accessed = *++mark; - SV* const modified = *++mark; + SV* const accessed = *++mark; + SV* const modified = *++mark; /* Be like C, and if both times are undefined, let the C * library figure out what to do. This usually means @@ -2747,10 +2735,10 @@ else { Zero(&utbuf, sizeof utbuf, char); #ifdef HAS_FUTIMES - utbuf[0].tv_sec = (long)SvIV(accessed); /* time accessed */ - utbuf[0].tv_usec = 0; - utbuf[1].tv_sec = (long)SvIV(modified); /* time modified */ - utbuf[1].tv_usec = 0; + utbuf[0].tv_sec = (long)SvIV(accessed); /* time accessed */ + utbuf[0].tv_usec = 0; + utbuf[1].tv_sec = (long)SvIV(modified); /* time modified */ + utbuf[1].tv_usec = 0; #elif defined(BIG_TIME) utbuf.actime = (Time_t)SvNV(accessed); /* time accessed */ utbuf.modtime = (Time_t)SvNV(modified); /* time modified */ @@ -2759,48 +2747,48 @@ utbuf.modtime = (Time_t)SvIV(modified); /* time modified */ #endif } - APPLY_TAINT_PROPER(); - tot = sp - mark; - while (++mark <= sp) { + APPLY_TAINT_PROPER(); + tot = sp - mark; + while (++mark <= sp) { GV* gv; if ((gv = MAYBE_DEREF_GV(*mark))) { - if (GvIO(gv) && IoIFP(GvIOp(gv))) { + if (GvIO(gv) && IoIFP(GvIOp(gv))) { #ifdef HAS_FUTIMES int fd = PerlIO_fileno(IoIFP(GvIOn(gv))); - APPLY_TAINT_PROPER(); + APPLY_TAINT_PROPER(); if (fd < 0) { SETERRNO(EBADF,RMS_IFI); tot--; - } else if (futimes(fd, (struct timeval *) utbufp)) - tot--; + } else if (futimes(fd, (struct timeval *) utbufp)) + tot--; #else - Perl_die(aTHX_ PL_no_func, "futimes"); + Perl_die(aTHX_ PL_no_func, "futimes"); #endif - } - else { - tot--; - } - } - else { - const char * const name = SvPV_nomg_const(*mark, len); - APPLY_TAINT_PROPER(); - if (!IS_SAFE_PATHNAME(name, len, "utime")) { + } + else { + tot--; + } + } + else { + const char * const name = SvPV_nomg_const(*mark, len); + APPLY_TAINT_PROPER(); + if (!IS_SAFE_PATHNAME(name, len, "utime")) { tot--; } else #ifdef HAS_FUTIMES - if (utimes(name, (struct timeval *)utbufp)) + if (utimes(name, (struct timeval *)utbufp)) #else - if (PerlLIO_utime(name, utbufp)) + if (PerlLIO_utime(name, utbufp)) #endif - tot--; - } + tot--; + } - } - } - else - tot = 0; - break; + } + } + else + tot = 0; + break; #endif } return tot; @@ -2849,24 +2837,24 @@ # else if ((effective ? PerlProc_geteuid() : PerlProc_getuid()) == 0) { /* root is special */ # endif - if (mode == S_IXUSR) { - if (statbufp->st_mode & 0111 || S_ISDIR(statbufp->st_mode)) - return TRUE; - } - else - return TRUE; /* root reads and writes anything */ - return FALSE; + if (mode == S_IXUSR) { + if (statbufp->st_mode & 0111 || S_ISDIR(statbufp->st_mode)) + return TRUE; + } + else + return TRUE; /* root reads and writes anything */ + return FALSE; } if (statbufp->st_uid == (effective ? PerlProc_geteuid() : PerlProc_getuid()) ) { - if (statbufp->st_mode & mode) - return TRUE; /* ok as "user" */ + if (statbufp->st_mode & mode) + return TRUE; /* ok as "user" */ } else if (ingroup(statbufp->st_gid,effective)) { - if (statbufp->st_mode & mode >> 3) - return TRUE; /* ok as "group" */ + if (statbufp->st_mode & mode >> 3) + return TRUE; /* ok as "group" */ } else if (statbufp->st_mode & mode >> 6) - return TRUE; /* ok as "other" */ + return TRUE; /* ok as "other" */ return FALSE; #endif /* ! DOSISH */ } @@ -2880,14 +2868,14 @@ PERL_UNUSED_CONTEXT; #endif if (testgid == (effective ? PerlProc_getegid() : PerlProc_getgid())) - return TRUE; + return TRUE; #ifdef HAS_GETGROUPS { - Groups_t *gary = NULL; - I32 anum; + Groups_t *gary = NULL; + I32 anum; bool rc = FALSE; - anum = getgroups(0, gary); + anum = getgroups(0, gary); if (anum > 0) { Newx(gary, anum, Groups_t); anum = getgroups(anum, gary); @@ -2923,20 +2911,20 @@ { #ifdef HAS_MSG case OP_MSGGET: - return msgget(key, flags); + return msgget(key, flags); #endif #ifdef HAS_SEM case OP_SEMGET: - return semget(key, (int) SvIV(nsv), flags); + return semget(key, (int) SvIV(nsv), flags); #endif #ifdef HAS_SHM case OP_SHMGET: - return shmget(key, (size_t) SvUV(nsv), flags); + return shmget(key, (size_t) SvUV(nsv), flags); #endif #if !defined(HAS_MSG) || !defined(HAS_SEM) || !defined(HAS_SHM) default: /* diag_listed_as: msg%s not implemented */ - Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]); + Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]); #endif } return -1; /* should never happen */ @@ -2963,80 +2951,94 @@ { #ifdef HAS_MSG case OP_MSGCTL: - if (cmd == IPC_STAT || cmd == IPC_SET) - infosize = sizeof(struct msqid_ds); - break; + if (cmd == IPC_STAT || cmd == IPC_SET) + infosize = sizeof(struct msqid_ds); + break; #endif #ifdef HAS_SHM case OP_SHMCTL: - if (cmd == IPC_STAT || cmd == IPC_SET) - infosize = sizeof(struct shmid_ds); - break; + if (cmd == IPC_STAT || cmd == IPC_SET) + infosize = sizeof(struct shmid_ds); + break; #endif #ifdef HAS_SEM case OP_SEMCTL: #ifdef Semctl - if (cmd == IPC_STAT || cmd == IPC_SET) - infosize = sizeof(struct semid_ds); - else if (cmd == GETALL || cmd == SETALL) - { - struct semid_ds semds; - union semun semun; + if (cmd == IPC_STAT || cmd == IPC_SET) + infosize = sizeof(struct semid_ds); + else if (cmd == GETALL || cmd == SETALL) + { + struct semid_ds semds; + union semun semun; #ifdef EXTRA_F_IN_SEMUN_BUF semun.buff = &semds; #else semun.buf = &semds; #endif - getinfo = (cmd == GETALL); - if (Semctl(id, 0, IPC_STAT, semun) == -1) - return -1; - infosize = semds.sem_nsems * sizeof(short); - /* "short" is technically wrong but much more portable - than guessing about u_?short(_t)? */ - } + getinfo = (cmd == GETALL); + if (Semctl(id, 0, IPC_STAT, semun) == -1) + return -1; + infosize = semds.sem_nsems * sizeof(short); + /* "short" is technically wrong but much more portable + than guessing about u_?short(_t)? */ + } #else /* diag_listed_as: sem%s not implemented */ - Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]); + Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]); #endif - break; + break; #endif #if !defined(HAS_MSG) || !defined(HAS_SEM) || !defined(HAS_SHM) default: /* diag_listed_as: shm%s not implemented */ - Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]); + Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]); #endif } if (infosize) { - if (getinfo) - { - SvPV_force_nolen(astr); - a = SvGROW(astr, infosize+1); - } - else - { - STRLEN len; - a = SvPV(astr, len); - if (len != infosize) - Perl_croak(aTHX_ "Bad arg length for %s, is %lu, should be %ld", - PL_op_desc[optype], - (unsigned long)len, - (long)infosize); - } + if (getinfo) + { + /* we're not using the value here, so don't SvPVanything */ + SvUPGRADE(astr, SVt_PV); + SvGETMAGIC(astr); + if (SvTHINKFIRST(astr)) + sv_force_normal_flags(astr, 0); + a = SvGROW(astr, infosize+1); + } + else + { + STRLEN len; + a = SvPVbyte(astr, len); + if (len != infosize) + Perl_croak(aTHX_ "Bad arg length for %s, is %lu, should be %ld", + PL_op_desc[optype], + (unsigned long)len, + (long)infosize); + } } else { - const IV i = SvIV(astr); - a = INT2PTR(char *,i); /* ouch */ + /* We historically treat this as a pointer if we don't otherwise recognize + the op, but for many ops the value is simply ignored anyway, so + don't warn on undef. + */ + SvGETMAGIC(astr); + if (SvOK(astr)) { + const IV i = SvIV_nomg(astr); + a = INT2PTR(char *,i); /* ouch */ + } + else { + a = NULL; + } } SETERRNO(0,0); switch (optype) { #ifdef HAS_MSG case OP_MSGCTL: - ret = msgctl(id, cmd, (struct msqid_ds *)a); - break; + ret = msgctl(id, cmd, (struct msqid_ds *)a); + break; #endif #ifdef HAS_SEM case OP_SEMCTL: { @@ -3053,24 +3055,25 @@ unsemds.buf = (struct semid_ds *)a; #endif } - ret = Semctl(id, n, cmd, unsemds); + ret = Semctl(id, n, cmd, unsemds); #else - /* diag_listed_as: sem%s not implemented */ - Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]); + /* diag_listed_as: sem%s not implemented */ + Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]); #endif } - break; + break; #endif #ifdef HAS_SHM case OP_SHMCTL: - ret = shmctl(id, cmd, (struct shmid_ds *)a); - break; + ret = shmctl(id, cmd, (struct shmid_ds *)a); + break; #endif } if (getinfo && ret >= 0) { - SvCUR_set(astr, infosize); - *SvEND(astr) = '\0'; - SvSETMAGIC(astr); + SvCUR_set(astr, infosize); + *SvEND(astr) = '\0'; + SvPOK_only(astr); + SvSETMAGIC(astr); } return ret; } @@ -3083,14 +3086,14 @@ const I32 id = SvIVx(*++mark); SV * const mstr = *++mark; const I32 flags = SvIVx(*++mark); - const char * const mbuf = SvPV_const(mstr, len); + const char * const mbuf = SvPVbyte(mstr, len); const I32 msize = len - sizeof(long); PERL_ARGS_ASSERT_DO_MSGSND; PERL_UNUSED_ARG(sp); if (msize < 0) - Perl_croak(aTHX_ "Arg too short for msgsnd"); + Perl_croak(aTHX_ "Arg too short for msgsnd"); SETERRNO(0,0); if (id >= 0 && flags >= 0) { return msgsnd(id, (struct msgbuf *)mbuf, msize, flags); @@ -3137,10 +3140,11 @@ ret = -1; } if (ret >= 0) { - SvCUR_set(mstr, sizeof(long)+ret); - *SvEND(mstr) = '\0'; - /* who knows who has been playing with this message? */ - SvTAINTED_on(mstr); + SvCUR_set(mstr, sizeof(long)+ret); + SvPOK_only(mstr); + *SvEND(mstr) = '\0'; + /* who knows who has been playing with this message? */ + SvTAINTED_on(mstr); } return ret; #else @@ -3159,15 +3163,15 @@ STRLEN opsize; const I32 id = SvIVx(*++mark); SV * const opstr = *++mark; - const char * const opbuf = SvPV_const(opstr, opsize); + const char * const opbuf = SvPVbyte(opstr, opsize); PERL_ARGS_ASSERT_DO_SEMOP; PERL_UNUSED_ARG(sp); if (opsize < 3 * SHORTSIZE - || (opsize % (3 * SHORTSIZE))) { - SETERRNO(EINVAL,LIB_INVARG); - return -1; + || (opsize % (3 * SHORTSIZE))) { + SETERRNO(EINVAL,LIB_INVARG); + return -1; } SETERRNO(0,0); /* We can't assume that sizeof(struct sembuf) == 3 * sizeof(short). */ @@ -3213,11 +3217,11 @@ SETERRNO(0,0); if (shmctl(id, IPC_STAT, &shmds) == -1) - return -1; + return -1; if (mpos < 0 || msize < 0 - || (size_t)mpos + msize > (size_t)shmds.shm_segsz) { - SETERRNO(EFAULT,SS_ACCVIO); /* can't do as caller requested */ - return -1; + || (size_t)mpos + msize > (size_t)shmds.shm_segsz) { + SETERRNO(EFAULT,SS_ACCVIO); /* can't do as caller requested */ + return -1; } if (id >= 0) { shm = (char *)shmat(id, NULL, (optype == OP_SHMREAD) ? SHM_RDONLY : 0); @@ -3226,32 +3230,32 @@ return -1; } if (shm == (char *)-1) /* I hate System V IPC, I really do */ - return -1; + return -1; if (optype == OP_SHMREAD) { - char *mbuf; - /* suppress warning when reading into undef var (tchrist 3/Mar/00) */ - SvGETMAGIC(mstr); - SvUPGRADE(mstr, SVt_PV); - if (! SvOK(mstr)) + char *mbuf; + /* suppress warning when reading into undef var (tchrist 3/Mar/00) */ + SvGETMAGIC(mstr); + SvUPGRADE(mstr, SVt_PV); + if (! SvOK(mstr)) SvPVCLEAR(mstr); - SvPOK_only(mstr); - mbuf = SvGROW(mstr, (STRLEN)msize+1); + SvPOK_only(mstr); + mbuf = SvGROW(mstr, (STRLEN)msize+1); - Copy(shm + mpos, mbuf, msize, char); - SvCUR_set(mstr, msize); - *SvEND(mstr) = '\0'; - SvSETMAGIC(mstr); - /* who knows who has been playing with this shared memory? */ - SvTAINTED_on(mstr); + Copy(shm + mpos, mbuf, msize, char); + SvCUR_set(mstr, msize); + *SvEND(mstr) = '\0'; + SvSETMAGIC(mstr); + /* who knows who has been playing with this shared memory? */ + SvTAINTED_on(mstr); } else { - STRLEN len; + STRLEN len; - const char *mbuf = SvPV_const(mstr, len); - const I32 n = ((I32)len > msize) ? msize : (I32)len; - Copy(mbuf, shm + mpos, n, char); - if (n < msize) - memzero(shm + mpos + n, msize - n); + const char *mbuf = SvPVbyte(mstr, len); + const I32 n = ((I32)len > msize) ? msize : (I32)len; + Copy(mbuf, shm + mpos, n, char); + if (n < msize) + memzero(shm + mpos + n, msize - n); } return shmdt(shm); #else @@ -3264,8 +3268,6 @@ #endif /* SYSV IPC */ /* -=head1 IO Functions - =for apidoc start_glob Function called by C to spawn a glob (or do the glob inside diff -Nru perl-5.32.1/doop.c perl-5.34.0/doop.c --- perl-5.32.1/doop.c 2020-12-26 14:50:15.000000000 +0000 +++ perl-5.34.0/doop.c 2021-01-20 23:04:44.000000000 +0000 @@ -53,57 +53,57 @@ /* First, take care of non-UTF-8 input strings, because they're easy */ if (!SvUTF8(sv)) { - while (s < send) { - const short ch = tbl->map[*s]; - if (ch >= 0) { - matches++; - *s = (U8)ch; - } - s++; - } - SvSETMAGIC(sv); + while (s < send) { + const short ch = tbl->map[*s]; + if (ch >= 0) { + matches++; + *s = (U8)ch; + } + s++; + } + SvSETMAGIC(sv); } else { - const bool grows = cBOOL(PL_op->op_private & OPpTRANS_GROWS); - U8 *d; - U8 *dstart; + const bool grows = cBOOL(PL_op->op_private & OPpTRANS_GROWS); + U8 *d; + U8 *dstart; /* Allow for worst-case expansion: Each input byte can become 2. For a * given input character, this happens when it occupies a single byte * under UTF-8, but is to be translated to something that occupies two: * $_="a".chr(400); tr/a/\xFE/, FE needs encoding. */ - if (grows) - Newx(d, len*2+1, U8); - else - d = s; - dstart = d; - while (s < send) { - STRLEN ulen; - short ch; - - /* Need to check this, otherwise 128..255 won't match */ - const UV c = utf8n_to_uvchr(s, send - s, &ulen, UTF8_ALLOW_DEFAULT); - if (c < 0x100 && (ch = tbl->map[c]) >= 0) { - matches++; - d = uvchr_to_utf8(d, (UV)ch); - s += ulen; - } - else { /* No match -> copy */ - Move(s, d, ulen, U8); - d += ulen; - s += ulen; - } - } - if (grows) { - sv_setpvn(sv, (char*)dstart, d - dstart); - Safefree(dstart); - } - else { - *d = '\0'; - SvCUR_set(sv, d - dstart); - } - SvUTF8_on(sv); - SvSETMAGIC(sv); + if (grows) + Newx(d, len*2+1, U8); + else + d = s; + dstart = d; + while (s < send) { + STRLEN ulen; + short ch; + + /* Need to check this, otherwise 128..255 won't match */ + const UV c = utf8n_to_uvchr(s, send - s, &ulen, UTF8_ALLOW_DEFAULT); + if (c < 0x100 && (ch = tbl->map[c]) >= 0) { + matches++; + d = uvchr_to_utf8(d, (UV)ch); + s += ulen; + } + else { /* No match -> copy */ + Move(s, d, ulen, U8); + d += ulen; + s += ulen; + } + } + if (grows) { + sv_setpvn(sv, (char*)dstart, d - dstart); + Safefree(dstart); + } + else { + *d = '\0'; + SvCUR_set(sv, d - dstart); + } + SvUTF8_on(sv); + SvSETMAGIC(sv); } DEBUG_y(PerlIO_printf(Perl_debug_log, "%s: %d: returning %zu\n", __FILE__, __LINE__, matches)); @@ -140,23 +140,23 @@ DEBUG_y(sv_dump(sv)); if (!SvUTF8(sv)) { - while (s < send) { + while (s < send) { if (tbl->map[*s++] >= 0) matches++; - } + } } else { - const bool complement = cBOOL(PL_op->op_private & OPpTRANS_COMPLEMENT); - while (s < send) { - STRLEN ulen; - const UV c = utf8n_to_uvchr(s, send - s, &ulen, UTF8_ALLOW_DEFAULT); - if (c < 0x100) { - if (tbl->map[c] >= 0) - matches++; - } else if (complement) - matches++; - s += ulen; - } + const bool complement = cBOOL(PL_op->op_private & OPpTRANS_COMPLEMENT); + while (s < send) { + STRLEN ulen; + const UV c = utf8n_to_uvchr(s, send - s, &ulen, UTF8_ALLOW_DEFAULT); + if (c < 0x100) { + if (tbl->map[c] >= 0) + matches++; + } else if (complement) + matches++; + s += ulen; + } } DEBUG_y(PerlIO_printf(Perl_debug_log, "%s: %d: count returning %zu\n", @@ -190,26 +190,26 @@ DEBUG_y(sv_dump(sv)); if (!SvUTF8(sv)) { - U8 *d = s; - U8 * const dstart = d; + U8 *d = s; + U8 * const dstart = d; - if (PL_op->op_private & OPpTRANS_SQUASH) { + if (PL_op->op_private & OPpTRANS_SQUASH) { /* What the mapping of the previous character was to. If the new * character has the same mapping, it is squashed from the output * (but still is included in the count) */ short previous_map = (short) TR_OOB; - while (s < send) { - const short this_map = tbl->map[*s]; - if (this_map >= 0) { + while (s < send) { + const short this_map = tbl->map[*s]; + if (this_map >= 0) { matches++; if (this_map != previous_map) { *d++ = (U8)this_map; previous_map = this_map; } - } - else { + } + else { if (this_map == (short) TR_UNMAPPED) { *d++ = *s; previous_map = (short) TR_OOB; @@ -220,47 +220,47 @@ } } - s++; - } - } - else { /* Not to squash */ - while (s < send) { - const short this_map = tbl->map[*s]; - if (this_map >= 0) { - matches++; - *d++ = (U8)this_map; - } - else if (this_map == (short) TR_UNMAPPED) - *d++ = *s; - else if (this_map == (short) TR_DELETE) - matches++; - s++; - } - } - *d = '\0'; - SvCUR_set(sv, d - dstart); + s++; + } + } + else { /* Not to squash */ + while (s < send) { + const short this_map = tbl->map[*s]; + if (this_map >= 0) { + matches++; + *d++ = (U8)this_map; + } + else if (this_map == (short) TR_UNMAPPED) + *d++ = *s; + else if (this_map == (short) TR_DELETE) + matches++; + s++; + } + } + *d = '\0'; + SvCUR_set(sv, d - dstart); } else { /* is utf8 */ - const bool squash = cBOOL(PL_op->op_private & OPpTRANS_SQUASH); - const bool grows = cBOOL(PL_op->op_private & OPpTRANS_GROWS); - U8 *d; - U8 *dstart; - Size_t size = tbl->size; + const bool squash = cBOOL(PL_op->op_private & OPpTRANS_SQUASH); + const bool grows = cBOOL(PL_op->op_private & OPpTRANS_GROWS); + U8 *d; + U8 *dstart; + Size_t size = tbl->size; /* What the mapping of the previous character was to. If the new * character has the same mapping, it is squashed from the output (but * still is included in the count) */ UV pch = TR_OOB; - if (grows) + if (grows) /* Allow for worst-case expansion: Each input byte can become 2. * For a given input character, this happens when it occupies a * single byte under UTF-8, but is to be translated to something * that occupies two: */ - Newx(d, len*2+1, U8); - else - d = s; - dstart = d; + Newx(d, len*2+1, U8); + else + d = s; + dstart = d; while (s < send) { STRLEN len; @@ -302,15 +302,15 @@ s += len; } - if (grows) { - sv_setpvn(sv, (char*)dstart, d - dstart); - Safefree(dstart); - } - else { - *d = '\0'; - SvCUR_set(sv, d - dstart); - } - SvUTF8_on(sv); + if (grows) { + sv_setpvn(sv, (char*)dstart, d - dstart); + Safefree(dstart); + } + else { + *d = '\0'; + SvCUR_set(sv, d - dstart); + } + SvUTF8_on(sv); } SvSETMAGIC(sv); DEBUG_y(PerlIO_printf(Perl_debug_log, "%s: %d: returning %zu\n", @@ -442,9 +442,6 @@ * assume cannot */ if (! out_is_utf8 && (PL_op->op_private & OPpTRANS_CAN_FORCE_UTF8)) { inplace = FALSE; - if (max_expansion < 2) { - max_expansion = 2; - } } s = (U8*)SvPV_nomg(sv, len); @@ -462,7 +459,7 @@ * transliterations are longer than the input. If none can, we just edit * in place. */ if (inplace) { - d0 = d = s; + d0 = d = s; } else { /* Here, we can't edit in place. We have no idea how much, if any, @@ -470,8 +467,8 @@ * calculated the maximum expansion possible. Use that to allocate * based on the worst case scenario. (First +1 is to round up; 2nd is * for \0) */ - Newx(d, (STRLEN) (len * max_expansion + 1 + 1), U8); - d0 = d; + Newx(d, (STRLEN) (len * max_expansion + 1 + 1), U8); + d0 = d; } restart: @@ -517,7 +514,7 @@ previous_map = to; s += s_len; continue; - } + } /* Everything else is counted as a match */ matches++; @@ -561,12 +558,12 @@ s_len = 0; s += s_len; if (! inplace) { - sv_setpvn(sv, (char*)d0, d - d0); + sv_setpvn(sv, (char*)d0, d - d0); Safefree(d0); } else { - *d = '\0'; - SvCUR_set(sv, d - d0); + *d = '\0'; + SvCUR_set(sv, d - d0); } if (! SvUTF8(sv) && out_is_utf8) { @@ -602,11 +599,11 @@ } (void)SvPV_const(sv, len); if (!len) - return 0; + return 0; if (! identical) { - if (!SvPOKp(sv) || SvTHINKFIRST(sv)) - (void)SvPV_force_nomg(sv, len); - (void)SvPOK_only_UTF8(sv); + if (!SvPOKp(sv) || SvTHINKFIRST(sv)) + (void)SvPV_force_nomg(sv, len); + (void)SvPOK_only_UTF8(sv); } if (use_utf8_fcns) { @@ -653,19 +650,19 @@ len = (items > 0 ? (delimlen * (items - 1) ) : 0); SvUPGRADE(sv, SVt_PV); if (SvLEN(sv) < len + items) { /* current length is way too short */ - while (items-- > 0) { - if (*mark && !SvGAMAGIC(*mark) && SvOK(*mark)) { - STRLEN tmplen; - SvPV_const(*mark, tmplen); - len += tmplen; - } - mark++; - } - SvGROW(sv, len + 1); /* so try to pre-extend */ - - mark = oldmark; - items = sp - mark; - ++mark; + while (items-- > 0) { + if (*mark && !SvGAMAGIC(*mark) && SvOK(*mark)) { + STRLEN tmplen; + SvPV_const(*mark, tmplen); + len += tmplen; + } + mark++; + } + SvGROW(sv, len + 1); /* so try to pre-extend */ + + mark = oldmark; + items = sp - mark; + ++mark; } SvPVCLEAR(sv); @@ -673,33 +670,33 @@ SvUTF8_off(sv); if (TAINTING_get && SvMAGICAL(sv)) - SvTAINTED_off(sv); + SvTAINTED_off(sv); if (items-- > 0) { - if (*mark) - sv_catsv(sv, *mark); - mark++; + if (*mark) + sv_catsv(sv, *mark); + mark++; } if (delimlen) { - const U32 delimflag = DO_UTF8(delim) ? SV_CATUTF8 : SV_CATBYTES; - for (; items > 0; items--,mark++) { - STRLEN len; - const char *s; - sv_catpvn_flags(sv,delims,delimlen,delimflag); - s = SvPV_const(*mark,len); - sv_catpvn_flags(sv,s,len, - DO_UTF8(*mark) ? SV_CATUTF8 : SV_CATBYTES); - } + const U32 delimflag = DO_UTF8(delim) ? SV_CATUTF8 : SV_CATBYTES; + for (; items > 0; items--,mark++) { + STRLEN len; + const char *s; + sv_catpvn_flags(sv,delims,delimlen,delimflag); + s = SvPV_const(*mark,len); + sv_catpvn_flags(sv,s,len, + DO_UTF8(*mark) ? SV_CATUTF8 : SV_CATBYTES); + } } else { - for (; items > 0; items--,mark++) - { - STRLEN len; - const char *s = SvPV_const(*mark,len); - sv_catpvn_flags(sv,s,len, - DO_UTF8(*mark) ? SV_CATUTF8 : SV_CATBYTES); - } + for (; items > 0; items--,mark++) + { + STRLEN len; + const char *s = SvPV_const(*mark,len); + sv_catpvn_flags(sv,s,len, + DO_UTF8(*mark) ? SV_CATUTF8 : SV_CATBYTES); + } } SvSETMAGIC(sv); } @@ -715,23 +712,22 @@ assert(len >= 1); if (SvTAINTED(*sarg)) - TAINT_PROPER( - (PL_op && PL_op->op_type < OP_max) - ? (PL_op->op_type == OP_PRTF) - ? "printf" - : PL_op_name[PL_op->op_type] - : "(unknown)" - ); + TAINT_PROPER( + (PL_op && PL_op->op_type < OP_max) + ? (PL_op->op_type == OP_PRTF) + ? "printf" + : PL_op_name[PL_op->op_type] + : "(unknown)" + ); SvUTF8_off(sv); if (DO_UTF8(*sarg)) SvUTF8_on(sv); sv_vsetpvfn(sv, pat, patlen, NULL, sarg + 1, (Size_t)(len - 1), &do_taint); SvSETMAGIC(sv); if (do_taint) - SvTAINTED_on(sv); + SvTAINTED_on(sv); } -/* currently converts input to bytes if possible, but doesn't sweat failure */ UV Perl_do_vecget(pTHX_ SV *sv, STRLEN offset, int size) { @@ -749,30 +745,31 @@ PERL_ARGS_ASSERT_DO_VECGET; if (size < 1 || (size & (size-1))) /* size < 1 or not a power of two */ - Perl_croak(aTHX_ "Illegal number of bits in vec"); + Perl_croak(aTHX_ "Illegal number of bits in vec"); if (SvUTF8(sv)) { - if (Perl_sv_utf8_downgrade_flags(aTHX_ sv, TRUE, 0)) { + if (Perl_sv_utf8_downgrade_flags(aTHX_ sv, TRUE, 0)) { /* PVX may have changed */ s = (unsigned char *) SvPV_flags(sv, srclen, svpv_flags); } else { - Perl_croak(aTHX_ "Use of strings with code points over 0xFF as arguments to vec is forbidden"); + Perl_croak(aTHX_ "Use of strings with code points over 0xFF" + " as arguments to vec is forbidden"); } } if (size < 8) { - bitoffs = ((offset%8)*size)%8; - uoffset = offset/(8/size); + bitoffs = ((offset%8)*size)%8; + uoffset = offset/(8/size); } else if (size > 8) { - int n = size/8; + int n = size/8; if (offset > Size_t_MAX / n - 1) /* would overflow */ return 0; - uoffset = offset*n; + uoffset = offset*n; } else - uoffset = offset; + uoffset = offset; if (uoffset >= srclen) return 0; @@ -783,108 +780,108 @@ /* Does the byte range overlap the end of the string? If so, * handle specially. */ if (avail < len) { - if (size <= 8) - retnum = 0; - else { - if (size == 16) { + if (size <= 8) + retnum = 0; + else { + if (size == 16) { assert(avail == 1); retnum = (UV) s[uoffset] << 8; - } - else if (size == 32) { + } + else if (size == 32) { assert(avail >= 1 && avail <= 3); - if (avail == 1) - retnum = - ((UV) s[uoffset ] << 24); - else if (avail == 2) - retnum = - ((UV) s[uoffset ] << 24) + - ((UV) s[uoffset + 1] << 16); - else - retnum = - ((UV) s[uoffset ] << 24) + - ((UV) s[uoffset + 1] << 16) + - ( s[uoffset + 2] << 8); - } + if (avail == 1) + retnum = + ((UV) s[uoffset ] << 24); + else if (avail == 2) + retnum = + ((UV) s[uoffset ] << 24) + + ((UV) s[uoffset + 1] << 16); + else + retnum = + ((UV) s[uoffset ] << 24) + + ((UV) s[uoffset + 1] << 16) + + ( s[uoffset + 2] << 8); + } #ifdef UV_IS_QUAD - else if (size == 64) { - Perl_ck_warner(aTHX_ packWARN(WARN_PORTABLE), - "Bit vector size > 32 non-portable"); + else if (size == 64) { + Perl_ck_warner(aTHX_ packWARN(WARN_PORTABLE), + "Bit vector size > 32 non-portable"); assert(avail >= 1 && avail <= 7); - if (avail == 1) - retnum = - (UV) s[uoffset ] << 56; - else if (avail == 2) - retnum = - ((UV) s[uoffset ] << 56) + - ((UV) s[uoffset + 1] << 48); - else if (avail == 3) - retnum = - ((UV) s[uoffset ] << 56) + - ((UV) s[uoffset + 1] << 48) + - ((UV) s[uoffset + 2] << 40); - else if (avail == 4) - retnum = - ((UV) s[uoffset ] << 56) + - ((UV) s[uoffset + 1] << 48) + - ((UV) s[uoffset + 2] << 40) + - ((UV) s[uoffset + 3] << 32); - else if (avail == 5) - retnum = - ((UV) s[uoffset ] << 56) + - ((UV) s[uoffset + 1] << 48) + - ((UV) s[uoffset + 2] << 40) + - ((UV) s[uoffset + 3] << 32) + - ((UV) s[uoffset + 4] << 24); - else if (avail == 6) - retnum = - ((UV) s[uoffset ] << 56) + - ((UV) s[uoffset + 1] << 48) + - ((UV) s[uoffset + 2] << 40) + - ((UV) s[uoffset + 3] << 32) + - ((UV) s[uoffset + 4] << 24) + - ((UV) s[uoffset + 5] << 16); - else - retnum = - ((UV) s[uoffset ] << 56) + - ((UV) s[uoffset + 1] << 48) + - ((UV) s[uoffset + 2] << 40) + - ((UV) s[uoffset + 3] << 32) + - ((UV) s[uoffset + 4] << 24) + - ((UV) s[uoffset + 5] << 16) + - ((UV) s[uoffset + 6] << 8); - } + if (avail == 1) + retnum = + (UV) s[uoffset ] << 56; + else if (avail == 2) + retnum = + ((UV) s[uoffset ] << 56) + + ((UV) s[uoffset + 1] << 48); + else if (avail == 3) + retnum = + ((UV) s[uoffset ] << 56) + + ((UV) s[uoffset + 1] << 48) + + ((UV) s[uoffset + 2] << 40); + else if (avail == 4) + retnum = + ((UV) s[uoffset ] << 56) + + ((UV) s[uoffset + 1] << 48) + + ((UV) s[uoffset + 2] << 40) + + ((UV) s[uoffset + 3] << 32); + else if (avail == 5) + retnum = + ((UV) s[uoffset ] << 56) + + ((UV) s[uoffset + 1] << 48) + + ((UV) s[uoffset + 2] << 40) + + ((UV) s[uoffset + 3] << 32) + + ((UV) s[uoffset + 4] << 24); + else if (avail == 6) + retnum = + ((UV) s[uoffset ] << 56) + + ((UV) s[uoffset + 1] << 48) + + ((UV) s[uoffset + 2] << 40) + + ((UV) s[uoffset + 3] << 32) + + ((UV) s[uoffset + 4] << 24) + + ((UV) s[uoffset + 5] << 16); + else + retnum = + ((UV) s[uoffset ] << 56) + + ((UV) s[uoffset + 1] << 48) + + ((UV) s[uoffset + 2] << 40) + + ((UV) s[uoffset + 3] << 32) + + ((UV) s[uoffset + 4] << 24) + + ((UV) s[uoffset + 5] << 16) + + ((UV) s[uoffset + 6] << 8); + } #endif - } + } } else if (size < 8) - retnum = (s[uoffset] >> bitoffs) & ((1 << size) - 1); + retnum = (s[uoffset] >> bitoffs) & nBIT_MASK(size); else { - if (size == 8) - retnum = s[uoffset]; - else if (size == 16) - retnum = - ((UV) s[uoffset] << 8) + - s[uoffset + 1]; - else if (size == 32) - retnum = - ((UV) s[uoffset ] << 24) + - ((UV) s[uoffset + 1] << 16) + - ( s[uoffset + 2] << 8) + - s[uoffset + 3]; + if (size == 8) + retnum = s[uoffset]; + else if (size == 16) + retnum = + ((UV) s[uoffset] << 8) + + s[uoffset + 1]; + else if (size == 32) + retnum = + ((UV) s[uoffset ] << 24) + + ((UV) s[uoffset + 1] << 16) + + ( s[uoffset + 2] << 8) + + s[uoffset + 3]; #ifdef UV_IS_QUAD - else if (size == 64) { - Perl_ck_warner(aTHX_ packWARN(WARN_PORTABLE), - "Bit vector size > 32 non-portable"); - retnum = - ((UV) s[uoffset ] << 56) + - ((UV) s[uoffset + 1] << 48) + - ((UV) s[uoffset + 2] << 40) + - ((UV) s[uoffset + 3] << 32) + - ((UV) s[uoffset + 4] << 24) + - ((UV) s[uoffset + 5] << 16) + - ( s[uoffset + 6] << 8) + - s[uoffset + 7]; - } + else if (size == 64) { + Perl_ck_warner(aTHX_ packWARN(WARN_PORTABLE), + "Bit vector size > 32 non-portable"); + retnum = + ((UV) s[uoffset ] << 56) + + ((UV) s[uoffset + 1] << 48) + + ((UV) s[uoffset + 2] << 40) + + ((UV) s[uoffset + 3] << 32) + + ((UV) s[uoffset + 4] << 24) + + ((UV) s[uoffset + 5] << 16) + + ( s[uoffset + 6] << 8) + + s[uoffset + 7]; + } #endif } @@ -920,15 +917,15 @@ } if (!targ) - return; + return; s = (unsigned char*)SvPV_force_flags(targ, targlen, SV_GMAGIC | SV_UNDEF_RETURNS_NULL); if (SvUTF8(targ)) { - /* This is handled by the SvPOK_only below... - if (!Perl_sv_utf8_downgrade_flags(aTHX_ targ, TRUE, 0)) - SvUTF8_off(targ); - */ - (void) Perl_sv_utf8_downgrade_flags(aTHX_ targ, TRUE, 0); + /* This is handled by the SvPOK_only below... + if (!Perl_sv_utf8_downgrade_flags(aTHX_ targ, TRUE, 0)) + SvUTF8_off(targ); + */ + (void) Perl_sv_utf8_downgrade_flags(aTHX_ targ, TRUE, 0); } (void)SvPOK_only(targ); @@ -937,60 +934,60 @@ size = LvTARGLEN(sv); if (size < 1 || (size & (size-1))) /* size < 1 or not a power of two */ - Perl_croak(aTHX_ "Illegal number of bits in vec"); + Perl_croak(aTHX_ "Illegal number of bits in vec"); if (size < 8) { - bitoffs = ((offset%8)*size)%8; - offset /= 8/size; + bitoffs = ((offset%8)*size)%8; + offset /= 8/size; } else if (size > 8) { - int n = size/8; + int n = size/8; if (offset > Size_t_MAX / n - 1) /* would overflow */ Perl_croak_nocontext("Out of memory!"); - offset *= n; + offset *= n; } len = (bitoffs + size + 7)/8; /* required number of bytes */ if (targlen < offset || targlen - offset < len) { STRLEN newlen = offset > Size_t_MAX - len - 1 ? /* avoid overflow */ Size_t_MAX : offset + len + 1; - s = (unsigned char*)SvGROW(targ, newlen); - (void)memzero((char *)(s + targlen), newlen - targlen); - SvCUR_set(targ, newlen - 1); + s = (unsigned char*)SvGROW(targ, newlen); + (void)memzero((char *)(s + targlen), newlen - targlen); + SvCUR_set(targ, newlen - 1); } if (size < 8) { - mask = (1 << size) - 1; - lval &= mask; - s[offset] &= ~(mask << bitoffs); - s[offset] |= lval << bitoffs; + mask = nBIT_MASK(size); + lval &= mask; + s[offset] &= ~(mask << bitoffs); + s[offset] |= lval << bitoffs; } else { - if (size == 8) - s[offset ] = (U8)( lval & 0xff); - else if (size == 16) { - s[offset ] = (U8)((lval >> 8) & 0xff); - s[offset+1] = (U8)( lval & 0xff); - } - else if (size == 32) { - s[offset ] = (U8)((lval >> 24) & 0xff); - s[offset+1] = (U8)((lval >> 16) & 0xff); - s[offset+2] = (U8)((lval >> 8) & 0xff); - s[offset+3] = (U8)( lval & 0xff); - } + if (size == 8) + s[offset ] = (U8)( lval & 0xff); + else if (size == 16) { + s[offset ] = (U8)((lval >> 8) & 0xff); + s[offset+1] = (U8)( lval & 0xff); + } + else if (size == 32) { + s[offset ] = (U8)((lval >> 24) & 0xff); + s[offset+1] = (U8)((lval >> 16) & 0xff); + s[offset+2] = (U8)((lval >> 8) & 0xff); + s[offset+3] = (U8)( lval & 0xff); + } #ifdef UV_IS_QUAD - else if (size == 64) { - Perl_ck_warner(aTHX_ packWARN(WARN_PORTABLE), - "Bit vector size > 32 non-portable"); - s[offset ] = (U8)((lval >> 56) & 0xff); - s[offset+1] = (U8)((lval >> 48) & 0xff); - s[offset+2] = (U8)((lval >> 40) & 0xff); - s[offset+3] = (U8)((lval >> 32) & 0xff); - s[offset+4] = (U8)((lval >> 24) & 0xff); - s[offset+5] = (U8)((lval >> 16) & 0xff); - s[offset+6] = (U8)((lval >> 8) & 0xff); - s[offset+7] = (U8)( lval & 0xff); - } + else if (size == 64) { + Perl_ck_warner(aTHX_ packWARN(WARN_PORTABLE), + "Bit vector size > 32 non-portable"); + s[offset ] = (U8)((lval >> 56) & 0xff); + s[offset+1] = (U8)((lval >> 48) & 0xff); + s[offset+2] = (U8)((lval >> 40) & 0xff); + s[offset+3] = (U8)((lval >> 32) & 0xff); + s[offset+4] = (U8)((lval >> 24) & 0xff); + s[offset+5] = (U8)((lval >> 16) & 0xff); + s[offset+6] = (U8)((lval >> 8) & 0xff); + s[offset+7] = (U8)( lval & 0xff); + } #endif } SvSETMAGIC(targ); @@ -1027,11 +1024,11 @@ if (sv != left || (optype != OP_BIT_AND && !SvOK(sv))) SvPVCLEAR(sv); /* avoid undef warning on |= and ^= */ if (sv == left) { - lc = SvPV_force_nomg(left, leftlen); + lc = SvPV_force_nomg(left, leftlen); } else { - lc = SvPV_nomg_const(left, leftlen); - SvPV_force_nomg_nolen(sv); + lc = SvPV_nomg_const(left, leftlen); + SvPV_force_nomg_nolen(sv); } rc = SvPV_nomg_const(right, rightlen); @@ -1092,64 +1089,64 @@ (void)SvPOK_only(sv); if (SvOK(sv) || SvTYPE(sv) > SVt_PVMG) { - dc = SvPV_force_nomg_nolen(sv); - if (SvLEN(sv) < len + 1) { - dc = SvGROW(sv, len + 1); - (void)memzero(dc + SvCUR(sv), len - SvCUR(sv) + 1); - } + dc = SvPV_force_nomg_nolen(sv); + if (SvLEN(sv) < len + 1) { + dc = SvGROW(sv, len + 1); + (void)memzero(dc + SvCUR(sv), len - SvCUR(sv) + 1); + } } else { - needlen = optype == OP_BIT_AND - ? len : (leftlen > rightlen ? leftlen : rightlen); - Newxz(dc, needlen + 1, char); - sv_usepvn_flags(sv, dc, needlen, SV_HAS_TRAILING_NUL); - dc = SvPVX(sv); /* sv_usepvn() calls Renew() */ + needlen = optype == OP_BIT_AND + ? len : (leftlen > rightlen ? leftlen : rightlen); + Newxz(dc, needlen + 1, char); + sv_usepvn_flags(sv, dc, needlen, SV_HAS_TRAILING_NUL); + dc = SvPVX(sv); /* sv_usepvn() calls Renew() */ } SvCUR_set(sv, len); if (len >= sizeof(long)*4 && - !(PTR2nat(dc) % sizeof(long)) && - !(PTR2nat(lc) % sizeof(long)) && - !(PTR2nat(rc) % sizeof(long))) /* It's almost always aligned... */ + !(PTR2nat(dc) % sizeof(long)) && + !(PTR2nat(lc) % sizeof(long)) && + !(PTR2nat(rc) % sizeof(long))) /* It's almost always aligned... */ { - const STRLEN remainder = len % (sizeof(long)*4); - len /= (sizeof(long)*4); + const STRLEN remainder = len % (sizeof(long)*4); + len /= (sizeof(long)*4); + + dl = (long*)dc; + ll = (long*)lc; + rl = (long*)rc; + + switch (optype) { + case OP_BIT_AND: + while (len--) { + *dl++ = *ll++ & *rl++; + *dl++ = *ll++ & *rl++; + *dl++ = *ll++ & *rl++; + *dl++ = *ll++ & *rl++; + } + break; + case OP_BIT_XOR: + while (len--) { + *dl++ = *ll++ ^ *rl++; + *dl++ = *ll++ ^ *rl++; + *dl++ = *ll++ ^ *rl++; + *dl++ = *ll++ ^ *rl++; + } + break; + case OP_BIT_OR: + while (len--) { + *dl++ = *ll++ | *rl++; + *dl++ = *ll++ | *rl++; + *dl++ = *ll++ | *rl++; + *dl++ = *ll++ | *rl++; + } + } - dl = (long*)dc; - ll = (long*)lc; - rl = (long*)rc; - - switch (optype) { - case OP_BIT_AND: - while (len--) { - *dl++ = *ll++ & *rl++; - *dl++ = *ll++ & *rl++; - *dl++ = *ll++ & *rl++; - *dl++ = *ll++ & *rl++; - } - break; - case OP_BIT_XOR: - while (len--) { - *dl++ = *ll++ ^ *rl++; - *dl++ = *ll++ ^ *rl++; - *dl++ = *ll++ ^ *rl++; - *dl++ = *ll++ ^ *rl++; - } - break; - case OP_BIT_OR: - while (len--) { - *dl++ = *ll++ | *rl++; - *dl++ = *ll++ | *rl++; - *dl++ = *ll++ | *rl++; - *dl++ = *ll++ | *rl++; - } - } - - dc = (char*)dl; - lc = (char*)ll; - rc = (char*)rl; + dc = (char*)dl; + lc = (char*)ll; + rc = (char*)rl; - len = remainder; + len = remainder; } switch (optype) { @@ -1245,42 +1242,42 @@ (void)hv_iterinit(keys); /* always reset iterator regardless */ if (gimme == G_VOID) - RETURN; + RETURN; if (gimme == G_SCALAR) { - if (PL_op->op_flags & OPf_MOD || LVRET) { /* lvalue */ - SV * const ret = sv_2mortal(newSV_type(SVt_PVLV)); /* Not TARG RT#67838 */ - sv_magic(ret, NULL, PERL_MAGIC_nkeys, NULL, 0); - LvTYPE(ret) = 'k'; - LvTARG(ret) = SvREFCNT_inc_simple(keys); - PUSHs(ret); - } - else { - IV i; - dTARGET; + if (PL_op->op_flags & OPf_MOD || LVRET) { /* lvalue */ + SV * const ret = sv_2mortal(newSV_type(SVt_PVLV)); /* Not TARG RT#67838 */ + sv_magic(ret, NULL, PERL_MAGIC_nkeys, NULL, 0); + LvTYPE(ret) = 'k'; + LvTARG(ret) = SvREFCNT_inc_simple(keys); + PUSHs(ret); + } + else { + IV i; + dTARGET; /* note that in 'scalar(keys %h)' the OP_KEYS is usually * optimised away and the action is performed directly by the * padhv or rv2hv op. We now only get here via OP_AVHVSWITCH * and \&CORE::keys */ - if (! SvTIED_mg((const SV *)keys, PERL_MAGIC_tied) ) { - i = HvUSEDKEYS(keys); - } - else { - i = 0; - while (hv_iternext(keys)) i++; - } - PUSHi( i ); - } - RETURN; + if (! SvTIED_mg((const SV *)keys, PERL_MAGIC_tied) ) { + i = HvUSEDKEYS(keys); + } + else { + i = 0; + while (hv_iternext(keys)) i++; + } + PUSHi( i ); + } + RETURN; } if (UNLIKELY(PL_op->op_private & OPpMAYBE_LVSUB)) { - const I32 flags = is_lvalue_sub(); - if (flags && !(flags & OPpENTERSUB_INARGS)) - /* diag_listed_as: Can't modify %s in %s */ - Perl_croak(aTHX_ "Can't modify keys in list assignment"); + const I32 flags = is_lvalue_sub(); + if (flags && !(flags & OPpENTERSUB_INARGS)) + /* diag_listed_as: Can't modify %s in %s */ + Perl_croak(aTHX_ "Can't modify keys in list assignment"); } PUTBACK; diff -Nru perl-5.32.1/dosish.h perl-5.34.0/dosish.h --- perl-5.32.1/dosish.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dosish.h 2021-01-20 23:04:44.000000000 +0000 @@ -17,7 +17,7 @@ # define BIT_BUCKET "nul" # define OP_BINARY O_BINARY # define PERL_SYS_INIT_BODY(c,v) \ - MALLOC_CHECK_TAINT2(*c,*v) Perl_DJGPP_init(c,v); PERLIO_INIT + MALLOC_CHECK_TAINT2(*c,*v) Perl_DJGPP_init(c,v); PERLIO_INIT # define init_os_extras Perl_init_os_extras # define HAS_UTIME # define HAS_KILL @@ -30,8 +30,8 @@ # define PERL_FS_VER_FMT "%d_%d_%d" # endif # define PERL_FS_VERSION STRINGIFY(PERL_REVISION) "_" \ - STRINGIFY(PERL_VERSION) "_" \ - STRINGIFY(PERL_SUBVERSION) + STRINGIFY(PERL_VERSION) "_" \ + STRINGIFY(PERL_SUBVERSION) #elif defined(WIN32) # define PERL_SYS_INIT_BODY(c,v) \ MALLOC_CHECK_TAINT2(*c,*v) Perl_win32_init(c,v); PERLIO_INIT @@ -70,10 +70,10 @@ * to include and to get any typedef'ed * information. */ -#if defined(WIN64) || defined(USE_LARGE_FILES) -# define Stat_t struct _stati64 +#if defined(WIN32) +# define Stat_t struct w32_stat #else -# define Stat_t struct stat +# define Stat_t struct _stati64 #endif /* USE_STAT_RDEV: diff -Nru perl-5.32.1/dquote.c perl-5.34.0/dquote.c --- perl-5.32.1/dquote.c 2020-12-18 09:58:44.000000000 +0000 +++ perl-5.34.0/dquote.c 2021-01-20 23:04:44.000000000 +0000 @@ -267,8 +267,10 @@ * UV_MAX, which is normally illegal, reserved for internal use. * UTF is true iff the string *s is encoded in UTF-8. */ - char* e; + char * e; + char * rbrace; STRLEN numbers_len; + STRLEN trailing_blanks_len = 0; I32 flags = PERL_SCAN_ALLOW_UNDERSCORES | PERL_SCAN_DISALLOW_PREFIX | PERL_SCAN_SILENT_NON_PORTABLE @@ -290,18 +292,35 @@ return FALSE; } - e = (char *) memchr(*s, '}', send - *s); - if (!e) { + rbrace = (char *) memchr(*s, '}', send - *s); + if (!rbrace) { (*s)++; /* Move past the '{' */ - while (isOCTAL(**s)) { /* Position beyond the legal digits */ + + /* Position beyond the legal digits and blanks */ + while (*s < send && isBLANK(**s)) { (*s)++; } + + while (*s < send && isOCTAL(**s)) { + (*s)++; + } + *message = "Missing right brace on \\o{}"; return FALSE; } - (*s)++; /* Point to expected first digit (could be first byte of utf8 - sequence if not a digit) */ + /* Point to expected first digit (could be first byte of utf8 sequence if + * not a digit) */ + (*s)++; + while (isBLANK(**s)) { + (*s)++; + } + + e = rbrace; + while (*s < e && isBLANK(*(e - 1))) { + e--; + } + numbers_len = e - *s; if (numbers_len == 0) { (*s)++; /* Move past the '}' */ @@ -314,13 +333,18 @@ || (! allow_UV_MAX && *uv == UV_MAX))) { *message = form_cp_too_large_msg(8, *s, numbers_len, 0); - *s = e + 1; + *s = rbrace + 1; return FALSE; } + while (isBLANK(**s)) { + trailing_blanks_len++; + (*s)++; + } + /* Note that if has non-octal, will ignore everything starting with that up * to the '}' */ - if (numbers_len != (STRLEN) (e - *s)) { + if (numbers_len + trailing_blanks_len != (STRLEN) (e - *s)) { *s += numbers_len; if (strict) { *s += (UTF) ? UTF8_SAFE_SKIP(*s, send) : 1; @@ -342,7 +366,7 @@ } /* Return past the '}' */ - *s = e + 1; + *s = rbrace + 1; return TRUE; } @@ -391,7 +415,9 @@ * UTF is true iff the string *s is encoded in UTF-8. */ char* e; + char * rbrace; STRLEN numbers_len; + STRLEN trailing_blanks_len = 0; I32 flags = PERL_SCAN_DISALLOW_PREFIX | PERL_SCAN_SILENT_ILLDIGIT | PERL_SCAN_NOTIFY_ILLDIGIT @@ -452,18 +478,34 @@ return TRUE; } - e = (char *) memchr(*s, '}', send - *s); - if (!e) { + rbrace = (char *) memchr(*s, '}', send - *s); + if (!rbrace) { (*s)++; /* Move past the '{' */ - while (*s < send && isXDIGIT(**s)) { /* Position beyond legal digits */ + + /* Position beyond legal blanks and digits */ + while (*s < send && isBLANK(**s)) { (*s)++; } + + while (*s < send && isXDIGIT(**s)) { + (*s)++; + } + *message = "Missing right brace on \\x{}"; return FALSE; } (*s)++; /* Point to expected first digit (could be first byte of utf8 sequence if not a digit) */ + while (isBLANK(**s)) { + (*s)++; + } + + e = rbrace; + while (*s < e && isBLANK(*(e - 1))) { + e--; + } + numbers_len = e - *s; if (numbers_len == 0) { if (strict) { @@ -471,7 +513,7 @@ *message = "Empty \\x{}"; return FALSE; } - *s = e + 1; + *s = rbrace + 1; *uv = 0; return TRUE; } @@ -487,7 +529,12 @@ return FALSE; } - if (numbers_len != (STRLEN) (e - *s)) { + while (isBLANK(**s)) { + trailing_blanks_len++; + (*s)++; + } + + if (numbers_len + trailing_blanks_len != (STRLEN) (e - *s)) { *s += numbers_len; if (strict) { *s += (UTF) ? UTF8_SAFE_SKIP(*s, send) : 1; @@ -509,7 +556,7 @@ } /* Return past the '}' */ - *s = e + 1; + *s = rbrace + 1; return TRUE; } diff -Nru perl-5.32.1/dump.c perl-5.34.0/dump.c --- perl-5.32.1/dump.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/dump.c 2021-05-04 06:52:48.000000000 +0000 @@ -21,7 +21,7 @@ * * It also holds the debugging version of the runops function. -=head1 Display and Dump functions +=for apidoc_section $display */ #include "EXTERN.h" @@ -75,11 +75,11 @@ static void S_append_flags(pTHX_ SV *sv, U32 flags, const struct flag_to_name *start, - const struct flag_to_name *const end) + const struct flag_to_name *const end) { do { - if (flags & start->flag) - sv_catpv(sv, start->name); + if (flags & start->flag) + sv_catpv(sv, start->name); } while (++start < end); } @@ -143,6 +143,13 @@ =for apidoc Amnh||PERL_PV_ESCAPE_UNI_DETECT =cut + +Unused or not for public use +=for apidoc Cmnh||PERL_PV_PRETTY_REGPROP +=for apidoc Cmnh||PERL_PV_PRETTY_DUMP +=for apidoc Cmnh||PERL_PV_PRETTY_NOCLEAR + +=cut */ #define PV_ESCAPE_OCTBUFSIZE 32 @@ -165,7 +172,7 @@ PERL_ARGS_ASSERT_PV_ESCAPE; if (dsv && !(flags & PERL_PV_ESCAPE_NOCLEAR)) { - /* This won't alter the UTF-8 flag */ + /* This won't alter the UTF-8 flag */ SvPVCLEAR(dsv); } @@ -177,9 +184,9 @@ const U8 c = (U8)u & 0xFF; if ( ( u > 255 ) - || (flags & PERL_PV_ESCAPE_ALL) - || (( ! isASCII(u) ) && (flags & (PERL_PV_ESCAPE_NONASCII|PERL_PV_ESCAPE_DWIM)))) - { + || (flags & PERL_PV_ESCAPE_ALL) + || (( ! isASCII(u) ) && (flags & (PERL_PV_ESCAPE_NONASCII|PERL_PV_ESCAPE_DWIM)))) + { if (flags & PERL_PV_ESCAPE_FIRSTCHAR) chsize = my_snprintf( octbuf, PV_ESCAPE_OCTBUFSIZE, "%" UVxf, u); @@ -193,28 +200,28 @@ chsize = 1; } else { if ( (c == dq) || (c == esc) || !isPRINT(c) ) { - chsize = 2; + chsize = 2; switch (c) { - case '\\' : /* FALLTHROUGH */ - case '%' : if ( c == esc ) { - octbuf[1] = esc; - } else { - chsize = 1; - } - break; - case '\v' : octbuf[1] = 'v'; break; - case '\t' : octbuf[1] = 't'; break; - case '\r' : octbuf[1] = 'r'; break; - case '\n' : octbuf[1] = 'n'; break; - case '\f' : octbuf[1] = 'f'; break; + case '\\' : /* FALLTHROUGH */ + case '%' : if ( c == esc ) { + octbuf[1] = esc; + } else { + chsize = 1; + } + break; + case '\v' : octbuf[1] = 'v'; break; + case '\t' : octbuf[1] = 't'; break; + case '\r' : octbuf[1] = 'r'; break; + case '\n' : octbuf[1] = 'n'; break; + case '\f' : octbuf[1] = 'f'; break; case '"' : if ( dq == '"' ) - octbuf[1] = '"'; + octbuf[1] = '"'; else chsize = 1; break; - default: + default: if ( (flags & PERL_PV_ESCAPE_DWIM) && c != '\0' ) { chsize = my_snprintf( octbuf, PV_ESCAPE_OCTBUFSIZE, isuni ? "%cx{%02" UVxf "}" : "%cx%02" UVxf, @@ -230,24 +237,24 @@ } else { chsize = 1; } - } - if ( max && (wrote + chsize > max) ) { - break; + } + if ( max && (wrote + chsize > max) ) { + break; } else if (chsize > 1) { if (dsv) sv_catpvn(dsv, octbuf, chsize); wrote += chsize; - } else { - /* If PERL_PV_ESCAPE_NOBACKSLASH is set then non-ASCII bytes - can be appended raw to the dsv. If dsv happens to be - UTF-8 then we need catpvf to upgrade them for us. - Or add a new API call sv_catpvc(). Think about that name, and - how to keep it clear that it's unlike the s of catpvs, which is - really an array of octets, not a string. */ + } else { + /* If PERL_PV_ESCAPE_NOBACKSLASH is set then non-ASCII bytes + can be appended raw to the dsv. If dsv happens to be + UTF-8 then we need catpvf to upgrade them for us. + Or add a new API call sv_catpvc(). Think about that name, and + how to keep it clear that it's unlike the s of catpvs, which is + really an array of octets, not a string. */ if (dsv) Perl_sv_catpvf( aTHX_ dsv, "%c", c); - wrote++; - } + wrote++; + } if ( flags & PERL_PV_ESCAPE_FIRSTCHAR ) break; } @@ -328,7 +335,7 @@ Perl_sv_catpvf(aTHX_ dsv, "%c", quotes[1]); if ( (flags & PERL_PV_PRETTY_ELLIPSES) && ( escaped < count ) ) - sv_catpvs(dsv, "..."); + sv_catpvs(dsv, "..."); if ((flags & PERL_PV_PRETTY_EXACTSIZE)) { while( SvCUR(dsv) - orig_cur < max ) @@ -367,7 +374,6 @@ char * Perl_sv_peek(pTHX_ SV *sv) { - dVAR; SV * const t = sv_newmortal(); int unref = 0; U32 type; @@ -375,80 +381,80 @@ SvPVCLEAR(t); retry: if (!sv) { - sv_catpvs(t, "VOID"); - goto finish; + sv_catpvs(t, "VOID"); + goto finish; } else if (sv == (const SV *)0x55555555 || ((char)SvTYPE(sv)) == 'U') { /* detect data corruption under memory poisoning */ - sv_catpvs(t, "WILD"); - goto finish; + sv_catpvs(t, "WILD"); + goto finish; } else if ( sv == &PL_sv_undef || sv == &PL_sv_no || sv == &PL_sv_yes || sv == &PL_sv_zero || sv == &PL_sv_placeholder) { - if (sv == &PL_sv_undef) { - sv_catpvs(t, "SV_UNDEF"); - if (!(SvFLAGS(sv) & (SVf_OK|SVf_OOK|SVs_OBJECT| - SVs_GMG|SVs_SMG|SVs_RMG)) && - SvREADONLY(sv)) - goto finish; - } - else if (sv == &PL_sv_no) { - sv_catpvs(t, "SV_NO"); - if (!(SvFLAGS(sv) & (SVf_ROK|SVf_OOK|SVs_OBJECT| - SVs_GMG|SVs_SMG|SVs_RMG)) && - !(~SvFLAGS(sv) & (SVf_POK|SVf_NOK|SVf_READONLY| - SVp_POK|SVp_NOK)) && - SvCUR(sv) == 0 && - SvNVX(sv) == 0.0) - goto finish; - } - else if (sv == &PL_sv_yes) { - sv_catpvs(t, "SV_YES"); - if (!(SvFLAGS(sv) & (SVf_ROK|SVf_OOK|SVs_OBJECT| - SVs_GMG|SVs_SMG|SVs_RMG)) && - !(~SvFLAGS(sv) & (SVf_POK|SVf_NOK|SVf_READONLY| - SVp_POK|SVp_NOK)) && - SvCUR(sv) == 1 && - SvPVX_const(sv) && *SvPVX_const(sv) == '1' && - SvNVX(sv) == 1.0) - goto finish; - } - else if (sv == &PL_sv_zero) { - sv_catpvs(t, "SV_ZERO"); - if (!(SvFLAGS(sv) & (SVf_ROK|SVf_OOK|SVs_OBJECT| - SVs_GMG|SVs_SMG|SVs_RMG)) && - !(~SvFLAGS(sv) & (SVf_POK|SVf_NOK|SVf_READONLY| - SVp_POK|SVp_NOK)) && - SvCUR(sv) == 1 && - SvPVX_const(sv) && *SvPVX_const(sv) == '0' && - SvNVX(sv) == 0.0) - goto finish; - } - else { - sv_catpvs(t, "SV_PLACEHOLDER"); - if (!(SvFLAGS(sv) & (SVf_OK|SVf_OOK|SVs_OBJECT| - SVs_GMG|SVs_SMG|SVs_RMG)) && - SvREADONLY(sv)) - goto finish; - } - sv_catpvs(t, ":"); + if (sv == &PL_sv_undef) { + sv_catpvs(t, "SV_UNDEF"); + if (!(SvFLAGS(sv) & (SVf_OK|SVf_OOK|SVs_OBJECT| + SVs_GMG|SVs_SMG|SVs_RMG)) && + SvREADONLY(sv)) + goto finish; + } + else if (sv == &PL_sv_no) { + sv_catpvs(t, "SV_NO"); + if (!(SvFLAGS(sv) & (SVf_ROK|SVf_OOK|SVs_OBJECT| + SVs_GMG|SVs_SMG|SVs_RMG)) && + !(~SvFLAGS(sv) & (SVf_POK|SVf_NOK|SVf_READONLY| + SVp_POK|SVp_NOK)) && + SvCUR(sv) == 0 && + SvNVX(sv) == 0.0) + goto finish; + } + else if (sv == &PL_sv_yes) { + sv_catpvs(t, "SV_YES"); + if (!(SvFLAGS(sv) & (SVf_ROK|SVf_OOK|SVs_OBJECT| + SVs_GMG|SVs_SMG|SVs_RMG)) && + !(~SvFLAGS(sv) & (SVf_POK|SVf_NOK|SVf_READONLY| + SVp_POK|SVp_NOK)) && + SvCUR(sv) == 1 && + SvPVX_const(sv) && *SvPVX_const(sv) == '1' && + SvNVX(sv) == 1.0) + goto finish; + } + else if (sv == &PL_sv_zero) { + sv_catpvs(t, "SV_ZERO"); + if (!(SvFLAGS(sv) & (SVf_ROK|SVf_OOK|SVs_OBJECT| + SVs_GMG|SVs_SMG|SVs_RMG)) && + !(~SvFLAGS(sv) & (SVf_POK|SVf_NOK|SVf_READONLY| + SVp_POK|SVp_NOK)) && + SvCUR(sv) == 1 && + SvPVX_const(sv) && *SvPVX_const(sv) == '0' && + SvNVX(sv) == 0.0) + goto finish; + } + else { + sv_catpvs(t, "SV_PLACEHOLDER"); + if (!(SvFLAGS(sv) & (SVf_OK|SVf_OOK|SVs_OBJECT| + SVs_GMG|SVs_SMG|SVs_RMG)) && + SvREADONLY(sv)) + goto finish; + } + sv_catpvs(t, ":"); } else if (SvREFCNT(sv) == 0) { - sv_catpvs(t, "("); - unref++; + sv_catpvs(t, "("); + unref++; } else if (DEBUG_R_TEST_) { - int is_tmp = 0; - SSize_t ix; - /* is this SV on the tmps stack? */ - for (ix=PL_tmps_ix; ix>=0; ix--) { - if (PL_tmps_stack[ix] == sv) { - is_tmp = 1; - break; - } - } - if (is_tmp || SvREFCNT(sv) > 1) { + int is_tmp = 0; + SSize_t ix; + /* is this SV on the tmps stack? */ + for (ix=PL_tmps_ix; ix>=0; ix--) { + if (PL_tmps_stack[ix] == sv) { + is_tmp = 1; + break; + } + } + if (is_tmp || SvREFCNT(sv) > 1) { Perl_sv_catpvf(aTHX_ t, "<"); if (SvREFCNT(sv) > 1) Perl_sv_catpvf(aTHX_ t, "%" UVuf, (UV)SvREFCNT(sv)); @@ -459,15 +465,15 @@ } if (SvROK(sv)) { - sv_catpvs(t, "\\"); - if (SvCUR(t) + unref > 10) { - SvCUR_set(t, unref + 3); - *SvEND(t) = '\0'; - sv_catpvs(t, "..."); - goto finish; - } - sv = SvRV(sv); - goto retry; + sv_catpvs(t, "\\"); + if (SvCUR(t) + unref > 10) { + SvCUR_set(t, unref + 3); + *SvEND(t) = '\0'; + sv_catpvs(t, "..."); + goto finish; + } + sv = SvRV(sv); + goto retry; } type = SvTYPE(sv); if (type == SVt_PVCV) { @@ -476,63 +482,59 @@ Perl_sv_catpvf(aTHX_ t, "CV(%s)", gvcv ? generic_pv_escape( tmp, GvNAME(gvcv), GvNAMELEN(gvcv), GvNAMEUTF8(gvcv)) : ""); - goto finish; + goto finish; } else if (type < SVt_LAST) { - sv_catpv(t, svshorttypenames[type]); + sv_catpv(t, svshorttypenames[type]); - if (type == SVt_NULL) - goto finish; + if (type == SVt_NULL) + goto finish; } else { - sv_catpvs(t, "FREED"); - goto finish; + sv_catpvs(t, "FREED"); + goto finish; } if (SvPOKp(sv)) { - if (!SvPVX_const(sv)) - sv_catpvs(t, "(null)"); - else { - SV * const tmp = newSVpvs(""); - sv_catpvs(t, "("); - if (SvOOK(sv)) { - STRLEN delta; - SvOOK_offset(sv, delta); - Perl_sv_catpvf(aTHX_ t, "[%s]", pv_display(tmp, SvPVX_const(sv)-delta, delta, 0, 127)); - } - Perl_sv_catpvf(aTHX_ t, "%s)", pv_display(tmp, SvPVX_const(sv), SvCUR(sv), SvLEN(sv), 127)); - if (SvUTF8(sv)) - Perl_sv_catpvf(aTHX_ t, " [UTF8 \"%s\"]", - sv_uni_display(tmp, sv, 6 * SvCUR(sv), - UNI_DISPLAY_QQ)); - SvREFCNT_dec_NN(tmp); - } + if (!SvPVX_const(sv)) + sv_catpvs(t, "(null)"); + else { + SV * const tmp = newSVpvs(""); + sv_catpvs(t, "("); + if (SvOOK(sv)) { + STRLEN delta; + SvOOK_offset(sv, delta); + Perl_sv_catpvf(aTHX_ t, "[%s]", pv_display(tmp, SvPVX_const(sv)-delta, delta, 0, 127)); + } + Perl_sv_catpvf(aTHX_ t, "%s)", pv_display(tmp, SvPVX_const(sv), SvCUR(sv), SvLEN(sv), 127)); + if (SvUTF8(sv)) + Perl_sv_catpvf(aTHX_ t, " [UTF8 \"%s\"]", + sv_uni_display(tmp, sv, 6 * SvCUR(sv), + UNI_DISPLAY_QQ)); + SvREFCNT_dec_NN(tmp); + } } else if (SvNOKp(sv)) { DECLARATION_FOR_LC_NUMERIC_MANIPULATION; STORE_LC_NUMERIC_SET_STANDARD(); - Perl_sv_catpvf(aTHX_ t, "(%" NVgf ")",SvNVX(sv)); + Perl_sv_catpvf(aTHX_ t, "(%" NVgf ")",SvNVX(sv)); RESTORE_LC_NUMERIC(); } else if (SvIOKp(sv)) { - if (SvIsUV(sv)) - Perl_sv_catpvf(aTHX_ t, "(%" UVuf ")", (UV)SvUVX(sv)); - else + if (SvIsUV(sv)) + Perl_sv_catpvf(aTHX_ t, "(%" UVuf ")", (UV)SvUVX(sv)); + else Perl_sv_catpvf(aTHX_ t, "(%" IVdf ")", (IV)SvIVX(sv)); } else - sv_catpvs(t, "()"); + sv_catpvs(t, "()"); finish: while (unref--) - sv_catpvs(t, ")"); + sv_catpvs(t, ")"); if (TAINTING_get && sv && SvTAINTED(sv)) - sv_catpvs(t, " [tainted]"); + sv_catpvs(t, " [tainted]"); return SvPV_nolen(t); } -/* -=head1 Debugging Utilities -*/ - void Perl_dump_indent(pTHX_ I32 level, PerlIO *file, const char* pat, ...) { @@ -607,7 +609,7 @@ } else - PerlIO_printf(file, " "); + PerlIO_printf(file, " "); for (i = level-1; i >= 0; i--) PerlIO_puts(file, @@ -637,6 +639,7 @@ } /* +=for apidoc_section $debugging =for apidoc dump_all Dumps the entire optree of the current program starting at C to @@ -657,7 +660,7 @@ { PerlIO_setlinebuf(Perl_debug_log); if (PL_main_root) - op_dump(PL_main_root); + op_dump(PL_main_root); dump_packsubs_perl(PL_defstash, justperl); } @@ -684,26 +687,26 @@ PERL_ARGS_ASSERT_DUMP_PACKSUBS_PERL; if (!HvARRAY(stash)) - return; + return; for (i = 0; i <= (I32) HvMAX(stash); i++) { const HE *entry; - for (entry = HvARRAY(stash)[i]; entry; entry = HeNEXT(entry)) { - GV * gv = (GV *)HeVAL(entry); + for (entry = HvARRAY(stash)[i]; entry; entry = HeNEXT(entry)) { + GV * gv = (GV *)HeVAL(entry); if (SvROK(gv) && SvTYPE(SvRV(gv)) == SVt_PVCV) /* unfake a fake GV */ (void)CvGV(SvRV(gv)); - if (SvTYPE(gv) != SVt_PVGV || !GvGP(gv)) - continue; - if (GvCVu(gv)) - dump_sub_perl(gv, justperl); - if (GvFORM(gv)) - dump_form(gv); - if (HeKEY(entry)[HeKLEN(entry)-1] == ':') { - const HV * const hv = GvHV(gv); - if (hv && (hv != PL_defstash)) - dump_packsubs_perl(hv, justperl); /* nested package */ - } - } + if (SvTYPE(gv) != SVt_PVGV || !GvGP(gv)) + continue; + if (GvCVu(gv)) + dump_sub_perl(gv, justperl); + if (GvFORM(gv)) + dump_form(gv); + if (HeKEY(entry)[HeKLEN(entry)-1] == ':') { + const HV * const hv = GvHV(gv); + if (hv && (hv != PL_defstash)) + dump_packsubs_perl(hv, justperl); /* nested package */ + } + } } } @@ -722,30 +725,30 @@ PERL_ARGS_ASSERT_DUMP_SUB_PERL; cv = isGV_with_GP(gv) ? GvCV(gv) : - (assert(SvROK((SV*)gv)), (CV*)SvRV((SV*)gv)); + (assert(SvROK((SV*)gv)), (CV*)SvRV((SV*)gv)); if (justperl && (CvISXSUB(cv) || !CvROOT(cv))) - return; + return; if (isGV_with_GP(gv)) { - SV * const namesv = newSVpvs_flags("", SVs_TEMP); - SV *escsv = newSVpvs_flags("", SVs_TEMP); - const char *namepv; - STRLEN namelen; - gv_fullname3(namesv, gv, NULL); - namepv = SvPV_const(namesv, namelen); - Perl_dump_indent(aTHX_ 0, Perl_debug_log, "\nSUB %s = ", - generic_pv_escape(escsv, namepv, namelen, SvUTF8(namesv))); + SV * const namesv = newSVpvs_flags("", SVs_TEMP); + SV *escsv = newSVpvs_flags("", SVs_TEMP); + const char *namepv; + STRLEN namelen; + gv_fullname3(namesv, gv, NULL); + namepv = SvPV_const(namesv, namelen); + Perl_dump_indent(aTHX_ 0, Perl_debug_log, "\nSUB %s = ", + generic_pv_escape(escsv, namepv, namelen, SvUTF8(namesv))); } else { - Perl_dump_indent(aTHX_ 0, Perl_debug_log, "\nSUB = "); + Perl_dump_indent(aTHX_ 0, Perl_debug_log, "\nSUB = "); } if (CvISXSUB(cv)) - Perl_dump_indent(aTHX_ 0, Perl_debug_log, "(xsub 0x%" UVxf " %d)\n", - PTR2UV(CvXSUB(cv)), - (int)CvXSUBANY(cv).any_i32); + Perl_dump_indent(aTHX_ 0, Perl_debug_log, "(xsub 0x%" UVxf " %d)\n", + PTR2UV(CvXSUB(cv)), + (int)CvXSUBANY(cv).any_i32); else if (CvROOT(cv)) - op_dump(CvROOT(cv)); + op_dump(CvROOT(cv)); else - Perl_dump_indent(aTHX_ 0, Perl_debug_log, "\n"); + Perl_dump_indent(aTHX_ 0, Perl_debug_log, "\n"); } void @@ -758,9 +761,9 @@ gv_fullname3(sv, gv, NULL); Perl_dump_indent(aTHX_ 0, Perl_debug_log, "\nFORMAT %s = ", SvPVX_const(sv)); if (CvROOT(GvFORM(gv))) - op_dump(CvROOT(GvFORM(gv))); + op_dump(CvROOT(GvFORM(gv))); else - Perl_dump_indent(aTHX_ 0, Perl_debug_log, "\n"); + Perl_dump_indent(aTHX_ 0, Perl_debug_log, "\n"); } void @@ -812,23 +815,23 @@ UV kidbar; if (!pm) - return; + return; kidbar = ((bar << 1) | cBOOL(pm->op_flags & OPf_KIDS)) << 1; if (PM_GETRE(pm)) { char ch = (pm->op_pmflags & PMf_ONCE) ? '?' : '/'; - S_opdump_indent(aTHX_ (OP*)pm, level, bar, file, "PMf_PRE %c%.*s%c\n", - ch,(int)RX_PRELEN(PM_GETRE(pm)), RX_PRECOMP(PM_GETRE(pm)), ch); + S_opdump_indent(aTHX_ (OP*)pm, level, bar, file, "PMf_PRE %c%.*s%c\n", + ch,(int)RX_PRELEN(PM_GETRE(pm)), RX_PRECOMP(PM_GETRE(pm)), ch); } else - S_opdump_indent(aTHX_ (OP*)pm, level, bar, file, "PMf_PRE (RUNTIME)\n"); + S_opdump_indent(aTHX_ (OP*)pm, level, bar, file, "PMf_PRE (RUNTIME)\n"); - if (pm->op_pmflags || (PM_GETRE(pm) && RX_CHECK_SUBSTR(PM_GETRE(pm)))) { - SV * const tmpsv = pm_description(pm); - S_opdump_indent(aTHX_ (OP*)pm, level, bar, file, "PMFLAGS = (%s)\n", + if (pm->op_pmflags || PM_GETRE(pm)) { + SV * const tmpsv = pm_description(pm); + S_opdump_indent(aTHX_ (OP*)pm, level, bar, file, "PMFLAGS = (%s)\n", SvCUR(tmpsv) ? SvPVX_const(tmpsv) + 1 : ""); - SvREFCNT_dec_NN(tmpsv); + SvREFCNT_dec_NN(tmpsv); } if (pm->op_type == OP_SPLIT) @@ -838,21 +841,21 @@ else { if (pm->op_pmreplrootu.op_pmreplroot) { S_opdump_indent(aTHX_ (OP*)pm, level, bar, file, "PMf_REPL =\n"); - S_do_op_dump_bar(aTHX_ level + 2, + S_do_op_dump_bar(aTHX_ level + 2, (kidbar|cBOOL(OpHAS_SIBLING(pm->op_pmreplrootu.op_pmreplroot))), file, pm->op_pmreplrootu.op_pmreplroot); } } if (pm->op_code_list) { - if (pm->op_pmflags & PMf_CODELIST_PRIVATE) { - S_opdump_indent(aTHX_ (OP*)pm, level, bar, file, "CODE_LIST =\n"); - S_do_op_dump_bar(aTHX_ level + 2, + if (pm->op_pmflags & PMf_CODELIST_PRIVATE) { + S_opdump_indent(aTHX_ (OP*)pm, level, bar, file, "CODE_LIST =\n"); + S_do_op_dump_bar(aTHX_ level + 2, (kidbar | cBOOL(OpHAS_SIBLING(pm->op_code_list))), file, pm->op_code_list); - } - else - S_opdump_indent(aTHX_ (OP*)pm, level, bar, file, + } + else + S_opdump_indent(aTHX_ (OP*)pm, level, bar, file, "CODE_LIST = 0x%" UVxf "\n", PTR2UV(pm->op_code_list)); } } @@ -889,7 +892,7 @@ PERL_ARGS_ASSERT_PM_DESCRIPTION; if (pmflags & PMf_ONCE) - sv_catpvs(desc, ",ONCE"); + sv_catpvs(desc, ",ONCE"); #ifdef USE_ITHREADS if (SvREADONLY(PL_regex_pad[pm->op_pmoffset])) sv_catpvs(desc, ":USED"); @@ -907,8 +910,14 @@ if (RX_EXTFLAGS(regex) & RXf_CHECK_ALL) sv_catpvs(desc, ",ALL"); } + if (RX_EXTFLAGS(regex) & RXf_START_ONLY) + sv_catpvs(desc, ",START_ONLY"); if (RX_EXTFLAGS(regex) & RXf_SKIPWHITE) sv_catpvs(desc, ",SKIPWHITE"); + if (RX_EXTFLAGS(regex) & RXf_WHITE) + sv_catpvs(desc, ",WHITE"); + if (RX_EXTFLAGS(regex) & RXf_NULL) + sv_catpvs(desc, ",NULL"); } append_flags(desc, pmflags, pmflags_flags_names); @@ -929,21 +938,20 @@ STATIC UV S_sequence_num(pTHX_ const OP *o) { - dVAR; SV *op, **seq; const char *key; STRLEN len; if (!o) - return 0; + return 0; op = newSVuv(PTR2UV(o)); sv_2mortal(op); key = SvPV_const(op, len); if (!PL_op_sequence) - PL_op_sequence = newHV(); + PL_op_sequence = newHV(); seq = hv_fetch(PL_op_sequence, key, len, 0); if (seq) - return SvUV(*seq); + return SvUV(*seq); (void)hv_store(PL_op_sequence, key, len, newSVuv(++PL_op_seq), 0); return PL_op_seq; } @@ -1040,7 +1048,7 @@ } if (o->op_targ && optype != OP_NULL) - S_opdump_indent(aTHX_ o, level, bar, file, "TARG = %ld\n", + S_opdump_indent(aTHX_ o, level, bar, file, "TARG = %ld\n", (long)o->op_targ); if (o->op_flags || o->op_slabbed || o->op_savefree || o->op_static) { @@ -1148,10 +1156,10 @@ Perl_sv_catpvf(aTHX_ tmpsv, "0x%" UVxf, (UV)oppriv); } } - if (tmpsv && SvCUR(tmpsv)) { + if (tmpsv && SvCUR(tmpsv)) { S_opdump_indent(aTHX_ o, level, bar, file, "PRIVATE = (%s)\n", SvPVX_const(tmpsv) + 1); - } else + } else S_opdump_indent(aTHX_ o, level, bar, file, "PRIVATE = (0x%" UVxf ")\n", (UV)oppriv); } @@ -1161,36 +1169,36 @@ case OP_GVSV: case OP_GV: #ifdef USE_ITHREADS - S_opdump_indent(aTHX_ o, level, bar, file, + S_opdump_indent(aTHX_ o, level, bar, file, "PADIX = %" IVdf "\n", (IV)cPADOPo->op_padix); #else S_opdump_indent(aTHX_ o, level, bar, file, "GV = %" SVf " (0x%" UVxf ")\n", SVfARG(S_gv_display(aTHX_ cGVOPo_gv)), PTR2UV(cGVOPo_gv)); #endif - break; + break; case OP_MULTIDEREF: { UNOP_AUX_item *items = cUNOP_AUXo->op_aux; UV i, count = items[-1].uv; - S_opdump_indent(aTHX_ o, level, bar, file, "ARGS = \n"); + S_opdump_indent(aTHX_ o, level, bar, file, "ARGS = \n"); for (i=0; i < count; i++) S_opdump_indent(aTHX_ o, level+1, (bar << 1), file, "%" UVuf " => 0x%" UVxf "\n", i, items[i].uv); - break; + break; } case OP_MULTICONCAT: - S_opdump_indent(aTHX_ o, level, bar, file, "NARGS = %" IVdf "\n", + S_opdump_indent(aTHX_ o, level, bar, file, "NARGS = %" IVdf "\n", (IV)cUNOP_AUXo->op_aux[PERL_MULTICONCAT_IX_NARGS].ssize); /* XXX really ought to dump each field individually, * but that's too much like hard work */ - S_opdump_indent(aTHX_ o, level, bar, file, "CONSTS = (%" SVf ")\n", + S_opdump_indent(aTHX_ o, level, bar, file, "CONSTS = (%" SVf ")\n", SVfARG(multiconcat_stringify(o))); - break; + break; case OP_CONST: case OP_HINTSEVAL: @@ -1199,21 +1207,21 @@ case OP_METHOD_REDIR: case OP_METHOD_REDIR_SUPER: #ifndef USE_ITHREADS - /* with ITHREADS, consts are stored in the pad, and the right pad - * may not be active here, so skip */ - S_opdump_indent(aTHX_ o, level, bar, file, "SV = %s\n", + /* with ITHREADS, consts are stored in the pad, and the right pad + * may not be active here, so skip */ + S_opdump_indent(aTHX_ o, level, bar, file, "SV = %s\n", SvPEEK(cMETHOPx_meth(o))); #endif - break; + break; case OP_NULL: - if (o->op_targ != OP_NEXTSTATE && o->op_targ != OP_DBSTATE) - break; - /* FALLTHROUGH */ + if (o->op_targ != OP_NEXTSTATE && o->op_targ != OP_DBSTATE) + break; + /* FALLTHROUGH */ case OP_NEXTSTATE: case OP_DBSTATE: - if (CopLINE(cCOPo)) - S_opdump_indent(aTHX_ o, level, bar, file, "LINE = %" UVuf "\n", - (UV)CopLINE(cCOPo)); + if (CopLINE(cCOPo)) + S_opdump_indent(aTHX_ o, level, bar, file, "LINE = %" UVuf "\n", + (UV)CopLINE(cCOPo)); if (CopSTASHPV(cCOPo)) { SV* tmpsv = newSVpvs_flags("", SVs_TEMP); @@ -1238,17 +1246,17 @@ S_opdump_indent(aTHX_ o, level, bar, file, "SEQ = %u\n", (unsigned int)cCOPo->cop_seq); - break; + break; case OP_ENTERITER: case OP_ENTERLOOP: - S_opdump_indent(aTHX_ o, level, bar, file, "REDO"); + S_opdump_indent(aTHX_ o, level, bar, file, "REDO"); S_opdump_link(aTHX_ o, cLOOPo->op_redoop, file); - S_opdump_indent(aTHX_ o, level, bar, file, "NEXT"); + S_opdump_indent(aTHX_ o, level, bar, file, "NEXT"); S_opdump_link(aTHX_ o, cLOOPo->op_nextop, file); - S_opdump_indent(aTHX_ o, level, bar, file, "LAST"); + S_opdump_indent(aTHX_ o, level, bar, file, "LAST"); S_opdump_link(aTHX_ o, cLOOPo->op_lastop, file); - break; + break; case OP_REGCOMP: case OP_SUBSTCONT: @@ -1267,33 +1275,33 @@ case OP_ENTERWHEN: case OP_ENTERTRY: case OP_ONCE: - S_opdump_indent(aTHX_ o, level, bar, file, "OTHER"); + S_opdump_indent(aTHX_ o, level, bar, file, "OTHER"); S_opdump_link(aTHX_ o, cLOGOPo->op_other, file); - break; + break; case OP_SPLIT: case OP_MATCH: case OP_QR: case OP_SUBST: - S_do_pmop_dump_bar(aTHX_ level, bar, file, cPMOPo); - break; + S_do_pmop_dump_bar(aTHX_ level, bar, file, cPMOPo); + break; case OP_LEAVE: case OP_LEAVEEVAL: case OP_LEAVESUB: case OP_LEAVESUBLV: case OP_LEAVEWRITE: case OP_SCOPE: - if (o->op_private & OPpREFCOUNTED) - S_opdump_indent(aTHX_ o, level, bar, file, + if (o->op_private & OPpREFCOUNTED) + S_opdump_indent(aTHX_ o, level, bar, file, "REFCNT = %" UVuf "\n", (UV)o->op_targ); - break; + break; case OP_DUMP: case OP_GOTO: case OP_NEXT: case OP_LAST: case OP_REDO: - if (o->op_flags & (OPf_SPECIAL|OPf_STACKED|OPf_KIDS)) - break; + if (o->op_flags & (OPf_SPECIAL|OPf_STACKED|OPf_KIDS)) + break; { SV * const label = newSVpvs_flags("", SVs_TEMP); generic_pv_escape(label, cPVOPo->op_pv, strlen(cPVOPo->op_pv), 0); @@ -1308,8 +1316,8 @@ if (o->op_private & OPpTRANS_USE_SVOP) { /* utf8: table stored as an inversion map */ #ifndef USE_ITHREADS - /* with ITHREADS, it is stored in the pad, and the right pad - * may not be active here, so skip */ + /* with ITHREADS, it is stored in the pad, and the right pad + * may not be active here, so skip */ S_opdump_indent(aTHX_ o, level, bar, file, "INVMAP = 0x%" UVxf "\n", PTR2UV(MUTABLE_SV(cSVOPo->op_sv))); @@ -1344,14 +1352,14 @@ default: - break; + break; } if (o->op_flags & OPf_KIDS) { - OP *kid; + OP *kid; level++; bar <<= 1; - for (kid = cUNOPo->op_first; kid; kid = OpSIBLING(kid)) - S_do_op_dump_bar(aTHX_ level, + for (kid = cUNOPo->op_first; kid; kid = OpSIBLING(kid)) + S_do_op_dump_bar(aTHX_ level, (bar | cBOOL(OpHAS_SIBLING(kid))), file, kid); } @@ -1388,8 +1396,8 @@ SV *sv, *tmp = newSVpvs_flags("", SVs_TEMP); if (!gv) { - PerlIO_printf(Perl_debug_log, "{}\n"); - return; + PerlIO_printf(Perl_debug_log, "{}\n"); + return; } sv = sv_newmortal(); PerlIO_printf(Perl_debug_log, "{\n"); @@ -1398,7 +1406,7 @@ Perl_dump_indent(aTHX_ 1, Perl_debug_log, "GV_NAME = %s", generic_pv_escape( tmp, name, len, SvUTF8(sv) )); if (gv != GvEGV(gv)) { - gv_efullname3(sv, GvEGV(gv), NULL); + gv_efullname3(sv, GvEGV(gv), NULL); name = SvPV_const(sv, len); Perl_dump_indent(aTHX_ 1, Perl_debug_log, "-> %s", generic_pv_escape( tmp, name, len, SvUTF8(sv) )); @@ -1414,8 +1422,8 @@ static const struct { const char type; const char *name; } magic_names[] = { #include "mg_names.inc" - /* this null string terminates the list */ - { 0, NULL }, + /* this null string terminates the list */ + { 0, NULL }, }; void @@ -1425,120 +1433,120 @@ for (; mg; mg = mg->mg_moremagic) { Perl_dump_indent(aTHX_ level, file, - " MAGIC = 0x%" UVxf "\n", PTR2UV(mg)); + " MAGIC = 0x%" UVxf "\n", PTR2UV(mg)); if (mg->mg_virtual) { const MGVTBL * const v = mg->mg_virtual; - if (v >= PL_magic_vtables - && v < PL_magic_vtables + magic_vtable_max) { - const U32 i = v - PL_magic_vtables; - Perl_dump_indent(aTHX_ level, file, " MG_VIRTUAL = &PL_vtbl_%s\n", PL_magic_vtable_names[i]); - } - else - Perl_dump_indent(aTHX_ level, file, " MG_VIRTUAL = 0x%" + if (v >= PL_magic_vtables + && v < PL_magic_vtables + magic_vtable_max) { + const U32 i = v - PL_magic_vtables; + Perl_dump_indent(aTHX_ level, file, " MG_VIRTUAL = &PL_vtbl_%s\n", PL_magic_vtable_names[i]); + } + else + Perl_dump_indent(aTHX_ level, file, " MG_VIRTUAL = 0x%" UVxf "\n", PTR2UV(v)); } - else - Perl_dump_indent(aTHX_ level, file, " MG_VIRTUAL = 0\n"); + else + Perl_dump_indent(aTHX_ level, file, " MG_VIRTUAL = 0\n"); - if (mg->mg_private) - Perl_dump_indent(aTHX_ level, file, " MG_PRIVATE = %d\n", mg->mg_private); + if (mg->mg_private) + Perl_dump_indent(aTHX_ level, file, " MG_PRIVATE = %d\n", mg->mg_private); - { - int n; - const char *name = NULL; - for (n = 0; magic_names[n].name; n++) { - if (mg->mg_type == magic_names[n].type) { - name = magic_names[n].name; - break; - } - } - if (name) - Perl_dump_indent(aTHX_ level, file, - " MG_TYPE = PERL_MAGIC_%s\n", name); - else - Perl_dump_indent(aTHX_ level, file, - " MG_TYPE = UNKNOWN(\\%o)\n", mg->mg_type); - } + { + int n; + const char *name = NULL; + for (n = 0; magic_names[n].name; n++) { + if (mg->mg_type == magic_names[n].type) { + name = magic_names[n].name; + break; + } + } + if (name) + Perl_dump_indent(aTHX_ level, file, + " MG_TYPE = PERL_MAGIC_%s\n", name); + else + Perl_dump_indent(aTHX_ level, file, + " MG_TYPE = UNKNOWN(\\%o)\n", mg->mg_type); + } if (mg->mg_flags) { Perl_dump_indent(aTHX_ level, file, " MG_FLAGS = 0x%02X\n", mg->mg_flags); - if (mg->mg_type == PERL_MAGIC_envelem && - mg->mg_flags & MGf_TAINTEDDIR) - Perl_dump_indent(aTHX_ level, file, " TAINTEDDIR\n"); - if (mg->mg_type == PERL_MAGIC_regex_global && - mg->mg_flags & MGf_MINMATCH) - Perl_dump_indent(aTHX_ level, file, " MINMATCH\n"); - if (mg->mg_flags & MGf_REFCOUNTED) - Perl_dump_indent(aTHX_ level, file, " REFCOUNTED\n"); + if (mg->mg_type == PERL_MAGIC_envelem && + mg->mg_flags & MGf_TAINTEDDIR) + Perl_dump_indent(aTHX_ level, file, " TAINTEDDIR\n"); + if (mg->mg_type == PERL_MAGIC_regex_global && + mg->mg_flags & MGf_MINMATCH) + Perl_dump_indent(aTHX_ level, file, " MINMATCH\n"); + if (mg->mg_flags & MGf_REFCOUNTED) + Perl_dump_indent(aTHX_ level, file, " REFCOUNTED\n"); if (mg->mg_flags & MGf_GSKIP) - Perl_dump_indent(aTHX_ level, file, " GSKIP\n"); - if (mg->mg_flags & MGf_COPY) - Perl_dump_indent(aTHX_ level, file, " COPY\n"); - if (mg->mg_flags & MGf_DUP) - Perl_dump_indent(aTHX_ level, file, " DUP\n"); - if (mg->mg_flags & MGf_LOCAL) - Perl_dump_indent(aTHX_ level, file, " LOCAL\n"); - if (mg->mg_type == PERL_MAGIC_regex_global && - mg->mg_flags & MGf_BYTES) - Perl_dump_indent(aTHX_ level, file, " BYTES\n"); - } - if (mg->mg_obj) { - Perl_dump_indent(aTHX_ level, file, " MG_OBJ = 0x%" UVxf "\n", - PTR2UV(mg->mg_obj)); + Perl_dump_indent(aTHX_ level, file, " GSKIP\n"); + if (mg->mg_flags & MGf_COPY) + Perl_dump_indent(aTHX_ level, file, " COPY\n"); + if (mg->mg_flags & MGf_DUP) + Perl_dump_indent(aTHX_ level, file, " DUP\n"); + if (mg->mg_flags & MGf_LOCAL) + Perl_dump_indent(aTHX_ level, file, " LOCAL\n"); + if (mg->mg_type == PERL_MAGIC_regex_global && + mg->mg_flags & MGf_BYTES) + Perl_dump_indent(aTHX_ level, file, " BYTES\n"); + } + if (mg->mg_obj) { + Perl_dump_indent(aTHX_ level, file, " MG_OBJ = 0x%" UVxf "\n", + PTR2UV(mg->mg_obj)); if (mg->mg_type == PERL_MAGIC_qr) { - REGEXP* const re = (REGEXP *)mg->mg_obj; - SV * const dsv = sv_newmortal(); + REGEXP* const re = (REGEXP *)mg->mg_obj; + SV * const dsv = sv_newmortal(); const char * const s - = pv_pretty(dsv, RX_WRAPPED(re), RX_WRAPLEN(re), + = pv_pretty(dsv, RX_WRAPPED(re), RX_WRAPLEN(re), 60, NULL, NULL, ( PERL_PV_PRETTY_QUOTE | PERL_PV_ESCAPE_RE | PERL_PV_PRETTY_ELLIPSES | (RX_UTF8(re) ? PERL_PV_ESCAPE_UNI : 0)) ); - Perl_dump_indent(aTHX_ level+1, file, " PAT = %s\n", s); - Perl_dump_indent(aTHX_ level+1, file, " REFCNT = %" IVdf "\n", - (IV)RX_REFCNT(re)); + Perl_dump_indent(aTHX_ level+1, file, " PAT = %s\n", s); + Perl_dump_indent(aTHX_ level+1, file, " REFCNT = %" IVdf "\n", + (IV)RX_REFCNT(re)); } if (mg->mg_flags & MGf_REFCOUNTED) - do_sv_dump(level+2, file, mg->mg_obj, nest+1, maxnest, dumpops, pvlim); /* MG is already +1 */ - } + do_sv_dump(level+2, file, mg->mg_obj, nest+1, maxnest, dumpops, pvlim); /* MG is already +1 */ + } if (mg->mg_len) - Perl_dump_indent(aTHX_ level, file, " MG_LEN = %ld\n", (long)mg->mg_len); + Perl_dump_indent(aTHX_ level, file, " MG_LEN = %ld\n", (long)mg->mg_len); if (mg->mg_ptr) { - Perl_dump_indent(aTHX_ level, file, " MG_PTR = 0x%" UVxf, PTR2UV(mg->mg_ptr)); - if (mg->mg_len >= 0) { - if (mg->mg_type != PERL_MAGIC_utf8) { - SV * const sv = newSVpvs(""); - PerlIO_printf(file, " %s", pv_display(sv, mg->mg_ptr, mg->mg_len, 0, pvlim)); - SvREFCNT_dec_NN(sv); - } - } - else if (mg->mg_len == HEf_SVKEY) { - PerlIO_puts(file, " => HEf_SVKEY\n"); - do_sv_dump(level+2, file, MUTABLE_SV(((mg)->mg_ptr)), nest+1, - maxnest, dumpops, pvlim); /* MG is already +1 */ - continue; - } - else if (mg->mg_len == -1 && mg->mg_type == PERL_MAGIC_utf8); - else - PerlIO_puts( - file, - " ???? - " __FILE__ - " does not know how to handle this MG_LEN" - ); + Perl_dump_indent(aTHX_ level, file, " MG_PTR = 0x%" UVxf, PTR2UV(mg->mg_ptr)); + if (mg->mg_len >= 0) { + if (mg->mg_type != PERL_MAGIC_utf8) { + SV * const sv = newSVpvs(""); + PerlIO_printf(file, " %s", pv_display(sv, mg->mg_ptr, mg->mg_len, 0, pvlim)); + SvREFCNT_dec_NN(sv); + } + } + else if (mg->mg_len == HEf_SVKEY) { + PerlIO_puts(file, " => HEf_SVKEY\n"); + do_sv_dump(level+2, file, MUTABLE_SV(((mg)->mg_ptr)), nest+1, + maxnest, dumpops, pvlim); /* MG is already +1 */ + continue; + } + else if (mg->mg_len == -1 && mg->mg_type == PERL_MAGIC_utf8); + else + PerlIO_puts( + file, + " ???? - " __FILE__ + " does not know how to handle this MG_LEN" + ); (void)PerlIO_putc(file, '\n'); } - if (mg->mg_type == PERL_MAGIC_utf8) { - const STRLEN * const cache = (STRLEN *) mg->mg_ptr; - if (cache) { - IV i; - for (i = 0; i < PERL_MAGIC_UTF8_CACHESIZE; i++) - Perl_dump_indent(aTHX_ level, file, - " %2" IVdf ": %" UVuf " -> %" UVuf "\n", - i, - (UV)cache[i * 2], - (UV)cache[i * 2 + 1]); - } - } + if (mg->mg_type == PERL_MAGIC_utf8) { + const STRLEN * const cache = (STRLEN *) mg->mg_ptr; + if (cache) { + IV i; + for (i = 0; i < PERL_MAGIC_UTF8_CACHESIZE; i++) + Perl_dump_indent(aTHX_ level, file, + " %2" IVdf ": %" UVuf " -> %" UVuf "\n", + i, + (UV)cache[i * 2], + (UV)cache[i * 2 + 1]); + } + } } } @@ -1558,7 +1566,7 @@ Perl_dump_indent(aTHX_ level, file, "%s = 0x%" UVxf, name, PTR2UV(sv)); if (sv && (hvname = HvNAME_get(sv))) { - /* we have to use pv_display and HvNAMELEN_get() so that we display the real package + /* we have to use pv_display and HvNAMELEN_get() so that we display the real package name which quite legally could contain insane things like tabs, newlines, nulls or other scary crap - this should produce sane results - except maybe for unicode package names - but we will wait for someone to file a bug on that - demerphq */ @@ -1594,11 +1602,11 @@ Perl_dump_indent(aTHX_ level, file, "%s = 0x%" UVxf, name, PTR2UV(sv)); if (sv && GvNAME(sv)) { SV *tmp = newSVpvs_flags("", SVs_TEMP); - const char *hvname; + const char *hvname; HV * const stash = GvSTASH(sv); - PerlIO_printf(file, "\t"); + PerlIO_printf(file, "\t"); /* TODO might have an extra \" here */ - if (stash && (hvname = HvNAME_get(stash))) { + if (stash && (hvname = HvNAME_get(stash))) { PerlIO_printf(file, "\"%s\" :: \"", generic_pv_escape(tmp, hvname, HvNAMELEN(stash), HvNAMEUTF8(stash))); @@ -1733,7 +1741,6 @@ void Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim) { - dVAR; SV *d; const char *s; U32 flags; @@ -1742,8 +1749,8 @@ PERL_ARGS_ASSERT_DO_SV_DUMP; if (!sv) { - Perl_dump_indent(aTHX_ level, file, "SV = 0\n"); - return; + Perl_dump_indent(aTHX_ level, file, "SV = 0\n"); + return; } flags = SvFLAGS(sv); @@ -1752,28 +1759,28 @@ /* process general SV flags */ d = Perl_newSVpvf(aTHX_ - "(0x%" UVxf ") at 0x%" UVxf "\n%*s REFCNT = %" IVdf "\n%*s FLAGS = (", - PTR2UV(SvANY(sv)), PTR2UV(sv), - (int)(PL_dumpindent*level), "", (IV)SvREFCNT(sv), - (int)(PL_dumpindent*level), ""); + "(0x%" UVxf ") at 0x%" UVxf "\n%*s REFCNT = %" IVdf "\n%*s FLAGS = (", + PTR2UV(SvANY(sv)), PTR2UV(sv), + (int)(PL_dumpindent*level), "", (IV)SvREFCNT(sv), + (int)(PL_dumpindent*level), ""); if ((flags & SVs_PADSTALE)) - sv_catpvs(d, "PADSTALE,"); + sv_catpvs(d, "PADSTALE,"); if ((flags & SVs_PADTMP)) - sv_catpvs(d, "PADTMP,"); + sv_catpvs(d, "PADTMP,"); append_flags(d, flags, first_sv_flags_names); if (flags & SVf_ROK) { sv_catpvs(d, "ROK,"); - if (SvWEAKREF(sv)) sv_catpvs(d, "WEAKREF,"); + if (SvWEAKREF(sv)) sv_catpvs(d, "WEAKREF,"); } if (flags & SVf_IsCOW && type != SVt_PVHV) sv_catpvs(d, "IsCOW,"); append_flags(d, flags, second_sv_flags_names); if (flags & SVp_SCREAM && type != SVt_PVHV && !isGV_with_GP(sv) - && type != SVt_PVAV) { - if (SvPCS_IMPORTED(sv)) - sv_catpvs(d, "PCS_IMPORTED,"); - else - sv_catpvs(d, "SCREAM,"); + && type != SVt_PVAV) { + if (SvPCS_IMPORTED(sv)) + sv_catpvs(d, "PCS_IMPORTED,"); + else + sv_catpvs(d, "SCREAM,"); } /* process type-specific SV flags */ @@ -1781,34 +1788,34 @@ switch (type) { case SVt_PVCV: case SVt_PVFM: - append_flags(d, CvFLAGS(sv), cv_flags_names); - break; + append_flags(d, CvFLAGS(sv), cv_flags_names); + break; case SVt_PVHV: - append_flags(d, flags, hv_flags_names); - break; + append_flags(d, flags, hv_flags_names); + break; case SVt_PVGV: case SVt_PVLV: - if (isGV_with_GP(sv)) { - append_flags(d, GvFLAGS(sv), gp_flags_names); - } - if (isGV_with_GP(sv) && GvIMPORTED(sv)) { - sv_catpvs(d, "IMPORT"); - if (GvIMPORTED(sv) == GVf_IMPORTED) - sv_catpvs(d, "ALL,"); - else { - sv_catpvs(d, "("); - append_flags(d, GvFLAGS(sv), gp_flags_imported_names); - sv_catpvs(d, " ),"); - } - } - /* FALLTHROUGH */ + if (isGV_with_GP(sv)) { + append_flags(d, GvFLAGS(sv), gp_flags_names); + } + if (isGV_with_GP(sv) && GvIMPORTED(sv)) { + sv_catpvs(d, "IMPORT"); + if (GvIMPORTED(sv) == GVf_IMPORTED) + sv_catpvs(d, "ALL,"); + else { + sv_catpvs(d, "("); + append_flags(d, GvFLAGS(sv), gp_flags_imported_names); + sv_catpvs(d, " ),"); + } + } + /* FALLTHROUGH */ case SVt_PVMG: default: - if (SvIsUV(sv) && !(flags & SVf_ROK)) sv_catpvs(d, "IsUV,"); - break; + if (SvIsUV(sv) && !(flags & SVf_ROK)) sv_catpvs(d, "IsUV,"); + break; case SVt_PVAV: - break; + break; } /* SVphv_SHAREKEYS is also 0x20000000 */ if ((type != SVt_PVHV) && SvUTF8(sv)) @@ -1816,7 +1823,7 @@ if (*(SvEND(d) - 1) == ',') { SvCUR_set(d, SvCUR(d) - 1); - SvPVX(d)[SvCUR(d)] = '\0'; + SvPVX(d)[SvCUR(d)] = '\0'; } sv_catpvs(d, ")"); s = SvPVX_const(d); @@ -1825,13 +1832,13 @@ #ifdef DEBUG_LEAKING_SCALARS Perl_dump_indent(aTHX_ level, file, - "ALLOCATED at %s:%d %s %s (parent 0x%" UVxf "); serial %" UVuf "\n", - sv->sv_debug_file ? sv->sv_debug_file : "(unknown)", - sv->sv_debug_line, - sv->sv_debug_inpad ? "for" : "by", - sv->sv_debug_optype ? PL_op_name[sv->sv_debug_optype]: "(none)", - PTR2UV(sv->sv_debug_parent), - sv->sv_debug_serial + "ALLOCATED at %s:%d %s %s (parent 0x%" UVxf "); serial %" UVuf "\n", + sv->sv_debug_file ? sv->sv_debug_file : "(unknown)", + sv->sv_debug_line, + sv->sv_debug_inpad ? "for" : "by", + sv->sv_debug_optype ? PL_op_name[sv->sv_debug_optype]: "(none)", + PTR2UV(sv->sv_debug_parent), + sv->sv_debug_serial ); #endif Perl_dump_indent(aTHX_ level, file, "SV = "); @@ -1839,77 +1846,77 @@ /* Dump SV type */ if (type < SVt_LAST) { - PerlIO_printf(file, "%s%s\n", svtypenames[type], s); + PerlIO_printf(file, "%s%s\n", svtypenames[type], s); - if (type == SVt_NULL) { - SvREFCNT_dec_NN(d); - return; - } + if (type == SVt_NULL) { + SvREFCNT_dec_NN(d); + return; + } } else { - PerlIO_printf(file, "UNKNOWN(0x%" UVxf ") %s\n", (UV)type, s); - SvREFCNT_dec_NN(d); - return; + PerlIO_printf(file, "UNKNOWN(0x%" UVxf ") %s\n", (UV)type, s); + SvREFCNT_dec_NN(d); + return; } /* Dump general SV fields */ if ((type >= SVt_PVIV && type != SVt_PVAV && type != SVt_PVHV - && type != SVt_PVCV && type != SVt_PVFM && type != SVt_PVIO - && type != SVt_REGEXP && !isGV_with_GP(sv) && !SvVALID(sv)) - || (type == SVt_IV && !SvROK(sv))) { - if (SvIsUV(sv) - ) - Perl_dump_indent(aTHX_ level, file, " UV = %" UVuf, (UV)SvUVX(sv)); - else - Perl_dump_indent(aTHX_ level, file, " IV = %" IVdf, (IV)SvIVX(sv)); - (void)PerlIO_putc(file, '\n'); + && type != SVt_PVCV && type != SVt_PVFM && type != SVt_PVIO + && type != SVt_REGEXP && !isGV_with_GP(sv) && !SvVALID(sv)) + || (type == SVt_IV && !SvROK(sv))) { + if (SvIsUV(sv) + ) + Perl_dump_indent(aTHX_ level, file, " UV = %" UVuf, (UV)SvUVX(sv)); + else + Perl_dump_indent(aTHX_ level, file, " IV = %" IVdf, (IV)SvIVX(sv)); + (void)PerlIO_putc(file, '\n'); } if ((type >= SVt_PVNV && type != SVt_PVAV && type != SVt_PVHV - && type != SVt_PVCV && type != SVt_PVFM && type != SVt_REGEXP - && type != SVt_PVIO && !isGV_with_GP(sv) && !SvVALID(sv)) - || type == SVt_NV) { + && type != SVt_PVCV && type != SVt_PVFM && type != SVt_REGEXP + && type != SVt_PVIO && !isGV_with_GP(sv) && !SvVALID(sv)) + || type == SVt_NV) { DECLARATION_FOR_LC_NUMERIC_MANIPULATION; STORE_LC_NUMERIC_SET_STANDARD(); - Perl_dump_indent(aTHX_ level, file, " NV = %.*" NVgf "\n", NV_DIG, SvNVX(sv)); + Perl_dump_indent(aTHX_ level, file, " NV = %.*" NVgf "\n", NV_DIG, SvNVX(sv)); RESTORE_LC_NUMERIC(); } if (SvROK(sv)) { - Perl_dump_indent(aTHX_ level, file, " RV = 0x%" UVxf "\n", + Perl_dump_indent(aTHX_ level, file, " RV = 0x%" UVxf "\n", PTR2UV(SvRV(sv))); - if (nest < maxnest) - do_sv_dump(level+1, file, SvRV(sv), nest+1, maxnest, dumpops, pvlim); + if (nest < maxnest) + do_sv_dump(level+1, file, SvRV(sv), nest+1, maxnest, dumpops, pvlim); } if (type < SVt_PV) { - SvREFCNT_dec_NN(d); - return; + SvREFCNT_dec_NN(d); + return; } if ((type <= SVt_PVLV && !isGV_with_GP(sv)) || (type == SVt_PVIO && IoFLAGS(sv) & IOf_FAKE_DIRP)) { - const bool re = isREGEXP(sv); - const char * const ptr = - re ? RX_WRAPPED((REGEXP*)sv) : SvPVX_const(sv); - if (ptr) { - STRLEN delta; - if (SvOOK(sv)) { - SvOOK_offset(sv, delta); - Perl_dump_indent(aTHX_ level, file," OFFSET = %" UVuf "\n", - (UV) delta); - } else { - delta = 0; - } - Perl_dump_indent(aTHX_ level, file," PV = 0x%" UVxf " ", + const bool re = isREGEXP(sv); + const char * const ptr = + re ? RX_WRAPPED((REGEXP*)sv) : SvPVX_const(sv); + if (ptr) { + STRLEN delta; + if (SvOOK(sv)) { + SvOOK_offset(sv, delta); + Perl_dump_indent(aTHX_ level, file," OFFSET = %" UVuf "\n", + (UV) delta); + } else { + delta = 0; + } + Perl_dump_indent(aTHX_ level, file," PV = 0x%" UVxf " ", PTR2UV(ptr)); - if (SvOOK(sv)) { - PerlIO_printf(file, "( %s . ) ", - pv_display(d, ptr - delta, delta, 0, - pvlim)); - } + if (SvOOK(sv)) { + PerlIO_printf(file, "( %s . ) ", + pv_display(d, ptr - delta, delta, 0, + pvlim)); + } if (type == SVt_INVLIST) { - PerlIO_printf(file, "\n"); + PerlIO_printf(file, "\n"); /* 4 blanks indents 2 beyond the PV, etc */ _invlist_dump(file, level, " ", sv); } @@ -1923,139 +1930,139 @@ UNI_DISPLAY_QQ)); PerlIO_printf(file, "\n"); } - Perl_dump_indent(aTHX_ level, file, " CUR = %" IVdf "\n", (IV)SvCUR(sv)); - if (re && type == SVt_PVLV) + Perl_dump_indent(aTHX_ level, file, " CUR = %" IVdf "\n", (IV)SvCUR(sv)); + if (re && type == SVt_PVLV) /* LV-as-REGEXP usurps len field to store pointer to * regexp struct */ - Perl_dump_indent(aTHX_ level, file, " REGEXP = 0x%" UVxf "\n", + Perl_dump_indent(aTHX_ level, file, " REGEXP = 0x%" UVxf "\n", PTR2UV(((XPV*)SvANY(sv))->xpv_len_u.xpvlenu_rx)); else - Perl_dump_indent(aTHX_ level, file, " LEN = %" IVdf "\n", - (IV)SvLEN(sv)); + Perl_dump_indent(aTHX_ level, file, " LEN = %" IVdf "\n", + (IV)SvLEN(sv)); #ifdef PERL_COPY_ON_WRITE - if (SvIsCOW(sv) && SvLEN(sv)) - Perl_dump_indent(aTHX_ level, file, " COW_REFCNT = %d\n", - CowREFCNT(sv)); + if (SvIsCOW(sv) && SvLEN(sv)) + Perl_dump_indent(aTHX_ level, file, " COW_REFCNT = %d\n", + CowREFCNT(sv)); #endif - } - else - Perl_dump_indent(aTHX_ level, file, " PV = 0\n"); + } + else + Perl_dump_indent(aTHX_ level, file, " PV = 0\n"); } if (type >= SVt_PVMG) { - if (SvMAGIC(sv)) - do_magic_dump(level, file, SvMAGIC(sv), nest+1, maxnest, dumpops, pvlim); - if (SvSTASH(sv)) - do_hv_dump(level, file, " STASH", SvSTASH(sv)); + if (SvMAGIC(sv)) + do_magic_dump(level, file, SvMAGIC(sv), nest+1, maxnest, dumpops, pvlim); + if (SvSTASH(sv)) + do_hv_dump(level, file, " STASH", SvSTASH(sv)); - if ((type == SVt_PVMG || type == SVt_PVLV) && SvVALID(sv)) { - Perl_dump_indent(aTHX_ level, file, " USEFUL = %" IVdf "\n", + if ((type == SVt_PVMG || type == SVt_PVLV) && SvVALID(sv)) { + Perl_dump_indent(aTHX_ level, file, " USEFUL = %" IVdf "\n", (IV)BmUSEFUL(sv)); - } + } } /* Dump type-specific SV fields */ switch (type) { case SVt_PVAV: - Perl_dump_indent(aTHX_ level, file, " ARRAY = 0x%" UVxf, + Perl_dump_indent(aTHX_ level, file, " ARRAY = 0x%" UVxf, PTR2UV(AvARRAY(sv))); - if (AvARRAY(sv) != AvALLOC(sv)) { - PerlIO_printf(file, " (offset=%" IVdf ")\n", + if (AvARRAY(sv) != AvALLOC(sv)) { + PerlIO_printf(file, " (offset=%" IVdf ")\n", (IV)(AvARRAY(sv) - AvALLOC(sv))); - Perl_dump_indent(aTHX_ level, file, " ALLOC = 0x%" UVxf "\n", + Perl_dump_indent(aTHX_ level, file, " ALLOC = 0x%" UVxf "\n", PTR2UV(AvALLOC(sv))); - } - else + } + else (void)PerlIO_putc(file, '\n'); - Perl_dump_indent(aTHX_ level, file, " FILL = %" IVdf "\n", + Perl_dump_indent(aTHX_ level, file, " FILL = %" IVdf "\n", (IV)AvFILLp(sv)); - Perl_dump_indent(aTHX_ level, file, " MAX = %" IVdf "\n", + Perl_dump_indent(aTHX_ level, file, " MAX = %" IVdf "\n", (IV)AvMAX(sv)); SvPVCLEAR(d); - if (AvREAL(sv)) sv_catpvs(d, ",REAL"); - if (AvREIFY(sv)) sv_catpvs(d, ",REIFY"); - Perl_dump_indent(aTHX_ level, file, " FLAGS = (%s)\n", - SvCUR(d) ? SvPVX_const(d) + 1 : ""); - if (nest < maxnest && AvARRAY(MUTABLE_AV(sv))) { - SSize_t count; + if (AvREAL(sv)) sv_catpvs(d, ",REAL"); + if (AvREIFY(sv)) sv_catpvs(d, ",REIFY"); + Perl_dump_indent(aTHX_ level, file, " FLAGS = (%s)\n", + SvCUR(d) ? SvPVX_const(d) + 1 : ""); + if (nest < maxnest && AvARRAY(MUTABLE_AV(sv))) { + SSize_t count; SV **svp = AvARRAY(MUTABLE_AV(sv)); - for (count = 0; + for (count = 0; count <= AvFILLp(MUTABLE_AV(sv)) && count < maxnest; count++, svp++) { - SV* const elt = *svp; - Perl_dump_indent(aTHX_ level + 1, file, "Elt No. %" IVdf "\n", + SV* const elt = *svp; + Perl_dump_indent(aTHX_ level + 1, file, "Elt No. %" IVdf "\n", (IV)count); do_sv_dump(level+1, file, elt, nest+1, maxnest, dumpops, pvlim); - } - } - break; + } + } + break; case SVt_PVHV: { - U32 usedkeys; + U32 usedkeys; if (SvOOK(sv)) { struct xpvhv_aux *const aux = HvAUX(sv); Perl_dump_indent(aTHX_ level, file, " AUX_FLAGS = %" UVuf "\n", (UV)aux->xhv_aux_flags); } - Perl_dump_indent(aTHX_ level, file, " ARRAY = 0x%" UVxf, PTR2UV(HvARRAY(sv))); - usedkeys = HvUSEDKEYS(MUTABLE_HV(sv)); - if (HvARRAY(sv) && usedkeys) { - /* Show distribution of HEs in the ARRAY */ - int freq[200]; + Perl_dump_indent(aTHX_ level, file, " ARRAY = 0x%" UVxf, PTR2UV(HvARRAY(sv))); + usedkeys = HvUSEDKEYS(MUTABLE_HV(sv)); + if (HvARRAY(sv) && usedkeys) { + /* Show distribution of HEs in the ARRAY */ + int freq[200]; #define FREQ_MAX ((int)(C_ARRAY_LENGTH(freq) - 1)) - int i; - int max = 0; - U32 pow2 = 2, keys = usedkeys; - NV theoret, sum = 0; - - PerlIO_printf(file, " ("); - Zero(freq, FREQ_MAX + 1, int); - for (i = 0; (STRLEN)i <= HvMAX(sv); i++) { - HE* h; - int count = 0; + int i; + int max = 0; + U32 pow2 = 2, keys = usedkeys; + NV theoret, sum = 0; + + PerlIO_printf(file, " ("); + Zero(freq, FREQ_MAX + 1, int); + for (i = 0; (STRLEN)i <= HvMAX(sv); i++) { + HE* h; + int count = 0; for (h = HvARRAY(sv)[i]; h; h = HeNEXT(h)) - count++; - if (count > FREQ_MAX) - count = FREQ_MAX; - freq[count]++; - if (max < count) - max = count; - } - for (i = 0; i <= max; i++) { - if (freq[i]) { - PerlIO_printf(file, "%d%s:%d", i, - (i == FREQ_MAX) ? "+" : "", - freq[i]); - if (i != max) - PerlIO_printf(file, ", "); - } - } - (void)PerlIO_putc(file, ')'); - /* The "quality" of a hash is defined as the total number of - comparisons needed to access every element once, relative - to the expected number needed for a random hash. - - The total number of comparisons is equal to the sum of - the squares of the number of entries in each bucket. - For a random hash of n keys into k buckets, the expected - value is - n + n(n-1)/2k - */ - - for (i = max; i > 0; i--) { /* Precision: count down. */ - sum += freq[i] * i * i; - } - while ((keys = keys >> 1)) - pow2 = pow2 << 1; - theoret = usedkeys; - theoret += theoret * (theoret-1)/pow2; - (void)PerlIO_putc(file, '\n'); - Perl_dump_indent(aTHX_ level, file, " hash quality = %.1" + count++; + if (count > FREQ_MAX) + count = FREQ_MAX; + freq[count]++; + if (max < count) + max = count; + } + for (i = 0; i <= max; i++) { + if (freq[i]) { + PerlIO_printf(file, "%d%s:%d", i, + (i == FREQ_MAX) ? "+" : "", + freq[i]); + if (i != max) + PerlIO_printf(file, ", "); + } + } + (void)PerlIO_putc(file, ')'); + /* The "quality" of a hash is defined as the total number of + comparisons needed to access every element once, relative + to the expected number needed for a random hash. + + The total number of comparisons is equal to the sum of + the squares of the number of entries in each bucket. + For a random hash of n keys into k buckets, the expected + value is + n + n(n-1)/2k + */ + + for (i = max; i > 0; i--) { /* Precision: count down. */ + sum += freq[i] * i * i; + } + while ((keys = keys >> 1)) + pow2 = pow2 << 1; + theoret = usedkeys; + theoret += theoret * (theoret-1)/pow2; + (void)PerlIO_putc(file, '\n'); + Perl_dump_indent(aTHX_ level, file, " hash quality = %.1" NVff "%%", theoret/sum*100); - } - (void)PerlIO_putc(file, '\n'); - Perl_dump_indent(aTHX_ level, file, " KEYS = %" IVdf "\n", + } + (void)PerlIO_putc(file, '\n'); + Perl_dump_indent(aTHX_ level, file, " KEYS = %" IVdf "\n", (IV)usedkeys); { STRLEN count = 0; @@ -2074,15 +2081,15 @@ Perl_dump_indent(aTHX_ level, file, " FILL = %" UVuf "\n", (UV)count); } - Perl_dump_indent(aTHX_ level, file, " MAX = %" IVdf "\n", + Perl_dump_indent(aTHX_ level, file, " MAX = %" IVdf "\n", (IV)HvMAX(sv)); if (SvOOK(sv)) { - Perl_dump_indent(aTHX_ level, file, " RITER = %" IVdf "\n", + Perl_dump_indent(aTHX_ level, file, " RITER = %" IVdf "\n", (IV)HvRITER_get(sv)); - Perl_dump_indent(aTHX_ level, file, " EITER = 0x%" UVxf "\n", + Perl_dump_indent(aTHX_ level, file, " EITER = 0x%" UVxf "\n", PTR2UV(HvEITER_get(sv))); #ifdef PERL_HASH_RANDOMIZE_KEYS - Perl_dump_indent(aTHX_ level, file, " RAND = 0x%" UVxf, + Perl_dump_indent(aTHX_ level, file, " RAND = 0x%" UVxf, (UV)HvRAND_get(sv)); if (HvRAND_get(sv) != HvLASTRAND_get(sv) && HvRITER_get(sv) != -1 ) { PerlIO_printf(file, " (LAST = 0x%" UVxf ")", @@ -2091,254 +2098,261 @@ #endif (void)PerlIO_putc(file, '\n'); } - { - MAGIC * const mg = mg_find(sv, PERL_MAGIC_symtab); - if (mg && mg->mg_obj) { - Perl_dump_indent(aTHX_ level, file, " PMROOT = 0x%" UVxf "\n", PTR2UV(mg->mg_obj)); - } - } - { - const char * const hvname = HvNAME_get(sv); - if (hvname) { + { + MAGIC * const mg = mg_find(sv, PERL_MAGIC_symtab); + if (mg && mg->mg_obj) { + Perl_dump_indent(aTHX_ level, file, " PMROOT = 0x%" UVxf "\n", PTR2UV(mg->mg_obj)); + } + } + { + const char * const hvname = HvNAME_get(sv); + if (hvname) { SV* tmpsv = newSVpvs_flags("", SVs_TEMP); Perl_dump_indent(aTHX_ level, file, " NAME = \"%s\"\n", generic_pv_escape( tmpsv, hvname, HvNAMELEN(sv), HvNAMEUTF8(sv))); } - } - if (SvOOK(sv)) { - AV * const backrefs - = *Perl_hv_backreferences_p(aTHX_ MUTABLE_HV(sv)); - struct mro_meta * const meta = HvAUX(sv)->xhv_mro_meta; - if (HvAUX(sv)->xhv_name_count) - Perl_dump_indent(aTHX_ - level, file, " NAMECOUNT = %" IVdf "\n", - (IV)HvAUX(sv)->xhv_name_count - ); - if (HvAUX(sv)->xhv_name_u.xhvnameu_name && HvENAME_HEK_NN(sv)) { - const I32 count = HvAUX(sv)->xhv_name_count; - if (count) { - SV * const names = newSVpvs_flags("", SVs_TEMP); - /* The starting point is the first element if count is - positive and the second element if count is negative. */ - HEK *const *hekp = HvAUX(sv)->xhv_name_u.xhvnameu_names - + (count < 0 ? 1 : 0); - HEK *const *const endp = HvAUX(sv)->xhv_name_u.xhvnameu_names - + (count < 0 ? -count : count); - while (hekp < endp) { - if (*hekp) { + } + if (SvOOK(sv)) { + AV * const backrefs + = *Perl_hv_backreferences_p(aTHX_ MUTABLE_HV(sv)); + struct mro_meta * const meta = HvAUX(sv)->xhv_mro_meta; + if (HvAUX(sv)->xhv_name_count) + Perl_dump_indent(aTHX_ + level, file, " NAMECOUNT = %" IVdf "\n", + (IV)HvAUX(sv)->xhv_name_count + ); + if (HvAUX(sv)->xhv_name_u.xhvnameu_name && HvENAME_HEK_NN(sv)) { + const I32 count = HvAUX(sv)->xhv_name_count; + if (count) { + SV * const names = newSVpvs_flags("", SVs_TEMP); + /* The starting point is the first element if count is + positive and the second element if count is negative. */ + HEK *const *hekp = HvAUX(sv)->xhv_name_u.xhvnameu_names + + (count < 0 ? 1 : 0); + HEK *const *const endp = HvAUX(sv)->xhv_name_u.xhvnameu_names + + (count < 0 ? -count : count); + while (hekp < endp) { + if (*hekp) { SV *tmp = newSVpvs_flags("", SVs_TEMP); - Perl_sv_catpvf(aTHX_ names, ", \"%s\"", + Perl_sv_catpvf(aTHX_ names, ", \"%s\"", generic_pv_escape(tmp, HEK_KEY(*hekp), HEK_LEN(*hekp), HEK_UTF8(*hekp))); - } else { - /* This should never happen. */ - sv_catpvs(names, ", (null)"); - } - ++hekp; - } - Perl_dump_indent(aTHX_ - level, file, " ENAME = %s\n", SvPV_nolen(names)+2 - ); - } - else { + } else { + /* This should never happen. */ + sv_catpvs(names, ", (null)"); + } + ++hekp; + } + Perl_dump_indent(aTHX_ + level, file, " ENAME = %s\n", SvPV_nolen(names)+2 + ); + } + else { SV * const tmp = newSVpvs_flags("", SVs_TEMP); const char *const hvename = HvENAME_get(sv); - Perl_dump_indent(aTHX_ - level, file, " ENAME = \"%s\"\n", + Perl_dump_indent(aTHX_ + level, file, " ENAME = \"%s\"\n", generic_pv_escape(tmp, hvename, HvENAMELEN_get(sv), HvENAMEUTF8(sv))); } - } - if (backrefs) { - Perl_dump_indent(aTHX_ level, file, " BACKREFS = 0x%" UVxf "\n", - PTR2UV(backrefs)); - do_sv_dump(level+1, file, MUTABLE_SV(backrefs), nest+1, maxnest, - dumpops, pvlim); - } - if (meta) { - SV* tmpsv = newSVpvs_flags("", SVs_TEMP); - Perl_dump_indent(aTHX_ level, file, " MRO_WHICH = \"%s\" (0x%" + } + if (backrefs) { + Perl_dump_indent(aTHX_ level, file, " BACKREFS = 0x%" UVxf "\n", + PTR2UV(backrefs)); + do_sv_dump(level+1, file, MUTABLE_SV(backrefs), nest+1, maxnest, + dumpops, pvlim); + } + if (meta) { + SV* tmpsv = newSVpvs_flags("", SVs_TEMP); + Perl_dump_indent(aTHX_ level, file, " MRO_WHICH = \"%s\" (0x%" UVxf ")\n", - generic_pv_escape( tmpsv, meta->mro_which->name, + generic_pv_escape( tmpsv, meta->mro_which->name, meta->mro_which->length, (meta->mro_which->kflags & HVhek_UTF8)), - PTR2UV(meta->mro_which)); - Perl_dump_indent(aTHX_ level, file, " CACHE_GEN = 0x%" + PTR2UV(meta->mro_which)); + Perl_dump_indent(aTHX_ level, file, " CACHE_GEN = 0x%" UVxf "\n", - (UV)meta->cache_gen); - Perl_dump_indent(aTHX_ level, file, " PKG_GEN = 0x%" UVxf "\n", - (UV)meta->pkg_gen); - if (meta->mro_linear_all) { - Perl_dump_indent(aTHX_ level, file, " MRO_LINEAR_ALL = 0x%" + (UV)meta->cache_gen); + Perl_dump_indent(aTHX_ level, file, " PKG_GEN = 0x%" UVxf "\n", + (UV)meta->pkg_gen); + if (meta->mro_linear_all) { + Perl_dump_indent(aTHX_ level, file, " MRO_LINEAR_ALL = 0x%" UVxf "\n", - PTR2UV(meta->mro_linear_all)); - do_sv_dump(level+1, file, MUTABLE_SV(meta->mro_linear_all), nest+1, maxnest, - dumpops, pvlim); - } - if (meta->mro_linear_current) { - Perl_dump_indent(aTHX_ level, file, + PTR2UV(meta->mro_linear_all)); + do_sv_dump(level+1, file, MUTABLE_SV(meta->mro_linear_all), nest+1, maxnest, + dumpops, pvlim); + } + if (meta->mro_linear_current) { + Perl_dump_indent(aTHX_ level, file, " MRO_LINEAR_CURRENT = 0x%" UVxf "\n", - PTR2UV(meta->mro_linear_current)); - do_sv_dump(level+1, file, MUTABLE_SV(meta->mro_linear_current), nest+1, maxnest, - dumpops, pvlim); - } - if (meta->mro_nextmethod) { - Perl_dump_indent(aTHX_ level, file, + PTR2UV(meta->mro_linear_current)); + do_sv_dump(level+1, file, MUTABLE_SV(meta->mro_linear_current), nest+1, maxnest, + dumpops, pvlim); + } + if (meta->mro_nextmethod) { + Perl_dump_indent(aTHX_ level, file, " MRO_NEXTMETHOD = 0x%" UVxf "\n", - PTR2UV(meta->mro_nextmethod)); - do_sv_dump(level+1, file, MUTABLE_SV(meta->mro_nextmethod), nest+1, maxnest, - dumpops, pvlim); - } - if (meta->isa) { - Perl_dump_indent(aTHX_ level, file, " ISA = 0x%" UVxf "\n", - PTR2UV(meta->isa)); - do_sv_dump(level+1, file, MUTABLE_SV(meta->isa), nest+1, maxnest, - dumpops, pvlim); - } - } - } - if (nest < maxnest) { - HV * const hv = MUTABLE_HV(sv); - STRLEN i; - HE *he; - - if (HvARRAY(hv)) { - int count = maxnest - nest; - for (i=0; i <= HvMAX(hv); i++) { - for (he = HvARRAY(hv)[i]; he; he = HeNEXT(he)) { - U32 hash; - SV * keysv; - const char * keypv; - SV * elt; + PTR2UV(meta->mro_nextmethod)); + do_sv_dump(level+1, file, MUTABLE_SV(meta->mro_nextmethod), nest+1, maxnest, + dumpops, pvlim); + } + if (meta->isa) { + Perl_dump_indent(aTHX_ level, file, " ISA = 0x%" UVxf "\n", + PTR2UV(meta->isa)); + do_sv_dump(level+1, file, MUTABLE_SV(meta->isa), nest+1, maxnest, + dumpops, pvlim); + } + } + } + if (nest < maxnest) { + HV * const hv = MUTABLE_HV(sv); + STRLEN i; + HE *he; + + if (HvARRAY(hv)) { + int count = maxnest - nest; + for (i=0; i <= HvMAX(hv); i++) { + for (he = HvARRAY(hv)[i]; he; he = HeNEXT(he)) { + U32 hash; + SV * keysv; + const char * keypv; + SV * elt; STRLEN len; - if (count-- <= 0) goto DONEHV; + if (count-- <= 0) goto DONEHV; - hash = HeHASH(he); - keysv = hv_iterkeysv(he); - keypv = SvPV_const(keysv, len); - elt = HeVAL(he); + hash = HeHASH(he); + keysv = hv_iterkeysv(he); + keypv = SvPV_const(keysv, len); + elt = HeVAL(he); Perl_dump_indent(aTHX_ level+1, file, "Elt %s ", pv_display(d, keypv, len, 0, pvlim)); if (SvUTF8(keysv)) PerlIO_printf(file, "[UTF8 \"%s\"] ", sv_uni_display(d, keysv, 6 * SvCUR(keysv), UNI_DISPLAY_QQ)); - if (HvEITER_get(hv) == he) - PerlIO_printf(file, "[CURRENT] "); - PerlIO_printf(file, "HASH = 0x%" UVxf "\n", (UV) hash); - do_sv_dump(level+1, file, elt, nest+1, maxnest, dumpops, pvlim); + if (HvEITER_get(hv) == he) + PerlIO_printf(file, "[CURRENT] "); + PerlIO_printf(file, "HASH = 0x%" UVxf, (UV) hash); + + if (sv == (SV*)PL_strtab) + PerlIO_printf(file, " REFCNT = 0x%" UVxf "\n", + (UV)he->he_valu.hent_refcount ); + else { + (void)PerlIO_putc(file, '\n'); + do_sv_dump(level+1, file, elt, nest+1, maxnest, dumpops, pvlim); + } } - } - DONEHV:; - } - } - break; + } + DONEHV:; + } + } + break; } /* case SVt_PVHV */ case SVt_PVCV: - if (CvAUTOLOAD(sv)) { - SV* tmpsv = newSVpvs_flags("", SVs_TEMP); + if (CvAUTOLOAD(sv)) { + SV* tmpsv = newSVpvs_flags("", SVs_TEMP); STRLEN len; - const char *const name = SvPV_const(sv, len); - Perl_dump_indent(aTHX_ level, file, " AUTOLOAD = \"%s\"\n", - generic_pv_escape(tmpsv, name, len, SvUTF8(sv))); - } - if (SvPOK(sv)) { + const char *const name = SvPV_const(sv, len); + Perl_dump_indent(aTHX_ level, file, " AUTOLOAD = \"%s\"\n", + generic_pv_escape(tmpsv, name, len, SvUTF8(sv))); + } + if (SvPOK(sv)) { SV* tmpsv = newSVpvs_flags("", SVs_TEMP); const char *const proto = CvPROTO(sv); - Perl_dump_indent(aTHX_ level, file, " PROTOTYPE = \"%s\"\n", - generic_pv_escape(tmpsv, proto, CvPROTOLEN(sv), + Perl_dump_indent(aTHX_ level, file, " PROTOTYPE = \"%s\"\n", + generic_pv_escape(tmpsv, proto, CvPROTOLEN(sv), SvUTF8(sv))); - } - /* FALLTHROUGH */ + } + /* FALLTHROUGH */ case SVt_PVFM: - do_hv_dump(level, file, " COMP_STASH", CvSTASH(sv)); - if (!CvISXSUB(sv)) { - if (CvSTART(sv)) { + do_hv_dump(level, file, " COMP_STASH", CvSTASH(sv)); + if (!CvISXSUB(sv)) { + if (CvSTART(sv)) { if (CvSLABBED(sv)) Perl_dump_indent(aTHX_ level, file, - " SLAB = 0x%" UVxf "\n", - PTR2UV(CvSTART(sv))); + " SLAB = 0x%" UVxf "\n", + PTR2UV(CvSTART(sv))); else Perl_dump_indent(aTHX_ level, file, - " START = 0x%" UVxf " ===> %" IVdf "\n", - PTR2UV(CvSTART(sv)), - (IV)sequence_num(CvSTART(sv))); - } - Perl_dump_indent(aTHX_ level, file, " ROOT = 0x%" UVxf "\n", - PTR2UV(CvROOT(sv))); - if (CvROOT(sv) && dumpops) { - do_op_dump(level+1, file, CvROOT(sv)); - } - } else { - SV * const constant = cv_const_sv((const CV *)sv); - - Perl_dump_indent(aTHX_ level, file, " XSUB = 0x%" UVxf "\n", PTR2UV(CvXSUB(sv))); - - if (constant) { - Perl_dump_indent(aTHX_ level, file, " XSUBANY = 0x%" UVxf - " (CONST SV)\n", - PTR2UV(CvXSUBANY(sv).any_ptr)); - do_sv_dump(level+1, file, constant, nest+1, maxnest, dumpops, - pvlim); - } else { - Perl_dump_indent(aTHX_ level, file, " XSUBANY = %" IVdf "\n", - (IV)CvXSUBANY(sv).any_i32); - } - } - if (CvNAMED(sv)) - Perl_dump_indent(aTHX_ level, file, " NAME = \"%s\"\n", - HEK_KEY(CvNAME_HEK((CV *)sv))); - else do_gvgv_dump(level, file, " GVGV::GV", CvGV(sv)); - Perl_dump_indent(aTHX_ level, file, " FILE = \"%s\"\n", CvFILE(sv)); - Perl_dump_indent(aTHX_ level, file, " DEPTH = %" + " START = 0x%" UVxf " ===> %" IVdf "\n", + PTR2UV(CvSTART(sv)), + (IV)sequence_num(CvSTART(sv))); + } + Perl_dump_indent(aTHX_ level, file, " ROOT = 0x%" UVxf "\n", + PTR2UV(CvROOT(sv))); + if (CvROOT(sv) && dumpops) { + do_op_dump(level+1, file, CvROOT(sv)); + } + } else { + SV * const constant = cv_const_sv((const CV *)sv); + + Perl_dump_indent(aTHX_ level, file, " XSUB = 0x%" UVxf "\n", PTR2UV(CvXSUB(sv))); + + if (constant) { + Perl_dump_indent(aTHX_ level, file, " XSUBANY = 0x%" UVxf + " (CONST SV)\n", + PTR2UV(CvXSUBANY(sv).any_ptr)); + do_sv_dump(level+1, file, constant, nest+1, maxnest, dumpops, + pvlim); + } else { + Perl_dump_indent(aTHX_ level, file, " XSUBANY = %" IVdf "\n", + (IV)CvXSUBANY(sv).any_i32); + } + } + if (CvNAMED(sv)) + Perl_dump_indent(aTHX_ level, file, " NAME = \"%s\"\n", + HEK_KEY(CvNAME_HEK((CV *)sv))); + else do_gvgv_dump(level, file, " GVGV::GV", CvGV(sv)); + Perl_dump_indent(aTHX_ level, file, " FILE = \"%s\"\n", CvFILE(sv)); + Perl_dump_indent(aTHX_ level, file, " DEPTH = %" IVdf "\n", (IV)CvDEPTH(sv)); - Perl_dump_indent(aTHX_ level, file, " FLAGS = 0x%" UVxf "\n", + Perl_dump_indent(aTHX_ level, file, " FLAGS = 0x%" UVxf "\n", (UV)CvFLAGS(sv)); - Perl_dump_indent(aTHX_ level, file, " OUTSIDE_SEQ = %" UVuf "\n", (UV)CvOUTSIDE_SEQ(sv)); - if (!CvISXSUB(sv)) { - Perl_dump_indent(aTHX_ level, file, " PADLIST = 0x%" UVxf "\n", PTR2UV(CvPADLIST(sv))); - if (nest < maxnest) { - do_dump_pad(level+1, file, CvPADLIST(sv), 0); - } - } - else - Perl_dump_indent(aTHX_ level, file, " HSCXT = 0x%p\n", CvHSCXT(sv)); - { - const CV * const outside = CvOUTSIDE(sv); - Perl_dump_indent(aTHX_ level, file, " OUTSIDE = 0x%" UVxf " (%s)\n", - PTR2UV(outside), - (!outside ? "null" - : CvANON(outside) ? "ANON" - : (outside == PL_main_cv) ? "MAIN" - : CvUNIQUE(outside) ? "UNIQUE" - : CvGV(outside) ? - generic_pv_escape( - newSVpvs_flags("", SVs_TEMP), - GvNAME(CvGV(outside)), - GvNAMELEN(CvGV(outside)), - GvNAMEUTF8(CvGV(outside))) - : "UNDEFINED")); - } - if (CvOUTSIDE(sv) - && (nest < maxnest && (CvCLONE(sv) || CvCLONED(sv)))) - do_sv_dump(level+1, file, MUTABLE_SV(CvOUTSIDE(sv)), nest+1, maxnest, dumpops, pvlim); - break; + Perl_dump_indent(aTHX_ level, file, " OUTSIDE_SEQ = %" UVuf "\n", (UV)CvOUTSIDE_SEQ(sv)); + if (!CvISXSUB(sv)) { + Perl_dump_indent(aTHX_ level, file, " PADLIST = 0x%" UVxf "\n", PTR2UV(CvPADLIST(sv))); + if (nest < maxnest) { + do_dump_pad(level+1, file, CvPADLIST(sv), 0); + } + } + else + Perl_dump_indent(aTHX_ level, file, " HSCXT = 0x%p\n", CvHSCXT(sv)); + { + const CV * const outside = CvOUTSIDE(sv); + Perl_dump_indent(aTHX_ level, file, " OUTSIDE = 0x%" UVxf " (%s)\n", + PTR2UV(outside), + (!outside ? "null" + : CvANON(outside) ? "ANON" + : (outside == PL_main_cv) ? "MAIN" + : CvUNIQUE(outside) ? "UNIQUE" + : CvGV(outside) ? + generic_pv_escape( + newSVpvs_flags("", SVs_TEMP), + GvNAME(CvGV(outside)), + GvNAMELEN(CvGV(outside)), + GvNAMEUTF8(CvGV(outside))) + : "UNDEFINED")); + } + if (CvOUTSIDE(sv) + && (nest < maxnest && (CvCLONE(sv) || CvCLONED(sv)))) + do_sv_dump(level+1, file, MUTABLE_SV(CvOUTSIDE(sv)), nest+1, maxnest, dumpops, pvlim); + break; case SVt_PVGV: case SVt_PVLV: - if (type == SVt_PVLV) { - Perl_dump_indent(aTHX_ level, file, " TYPE = %c\n", LvTYPE(sv)); - Perl_dump_indent(aTHX_ level, file, " TARGOFF = %" IVdf "\n", (IV)LvTARGOFF(sv)); - Perl_dump_indent(aTHX_ level, file, " TARGLEN = %" IVdf "\n", (IV)LvTARGLEN(sv)); - Perl_dump_indent(aTHX_ level, file, " TARG = 0x%" UVxf "\n", PTR2UV(LvTARG(sv))); - Perl_dump_indent(aTHX_ level, file, " FLAGS = %" IVdf "\n", (IV)LvFLAGS(sv)); - if (isALPHA_FOLD_NE(LvTYPE(sv), 't')) - do_sv_dump(level+1, file, LvTARG(sv), nest+1, maxnest, - dumpops, pvlim); - } - if (isREGEXP(sv)) goto dumpregexp; - if (!isGV_with_GP(sv)) - break; + if (type == SVt_PVLV) { + Perl_dump_indent(aTHX_ level, file, " TYPE = %c\n", LvTYPE(sv)); + Perl_dump_indent(aTHX_ level, file, " TARGOFF = %" IVdf "\n", (IV)LvTARGOFF(sv)); + Perl_dump_indent(aTHX_ level, file, " TARGLEN = %" IVdf "\n", (IV)LvTARGLEN(sv)); + Perl_dump_indent(aTHX_ level, file, " TARG = 0x%" UVxf "\n", PTR2UV(LvTARG(sv))); + Perl_dump_indent(aTHX_ level, file, " FLAGS = %" IVdf "\n", (IV)LvFLAGS(sv)); + if (isALPHA_FOLD_NE(LvTYPE(sv), 't')) + do_sv_dump(level+1, file, LvTARG(sv), nest+1, maxnest, + dumpops, pvlim); + } + if (isREGEXP(sv)) goto dumpregexp; + if (!isGV_with_GP(sv)) + break; { SV* tmpsv = newSVpvs_flags("", SVs_TEMP); Perl_dump_indent(aTHX_ level, file, " NAME = \"%s\"\n", @@ -2346,78 +2360,78 @@ GvNAMELEN(sv), GvNAMEUTF8(sv))); } - Perl_dump_indent(aTHX_ level, file, " NAMELEN = %" IVdf "\n", (IV)GvNAMELEN(sv)); - do_hv_dump (level, file, " GvSTASH", GvSTASH(sv)); - Perl_dump_indent(aTHX_ level, file, " FLAGS = 0x%" UVxf "\n", (UV)GvFLAGS(sv)); - Perl_dump_indent(aTHX_ level, file, " GP = 0x%" UVxf "\n", PTR2UV(GvGP(sv))); - if (!GvGP(sv)) - break; - Perl_dump_indent(aTHX_ level, file, " SV = 0x%" UVxf "\n", PTR2UV(GvSV(sv))); - Perl_dump_indent(aTHX_ level, file, " REFCNT = %" IVdf "\n", (IV)GvREFCNT(sv)); - Perl_dump_indent(aTHX_ level, file, " IO = 0x%" UVxf "\n", PTR2UV(GvIOp(sv))); - Perl_dump_indent(aTHX_ level, file, " FORM = 0x%" UVxf " \n", PTR2UV(GvFORM(sv))); - Perl_dump_indent(aTHX_ level, file, " AV = 0x%" UVxf "\n", PTR2UV(GvAV(sv))); - Perl_dump_indent(aTHX_ level, file, " HV = 0x%" UVxf "\n", PTR2UV(GvHV(sv))); - Perl_dump_indent(aTHX_ level, file, " CV = 0x%" UVxf "\n", PTR2UV(GvCV(sv))); - Perl_dump_indent(aTHX_ level, file, " CVGEN = 0x%" UVxf "\n", (UV)GvCVGEN(sv)); - Perl_dump_indent(aTHX_ level, file, " GPFLAGS = 0x%" UVxf - " (%s)\n", - (UV)GvGPFLAGS(sv), - ""); - Perl_dump_indent(aTHX_ level, file, " LINE = %" IVdf "\n", (IV)GvLINE(sv)); - Perl_dump_indent(aTHX_ level, file, " FILE = \"%s\"\n", GvFILE(sv)); - do_gv_dump (level, file, " EGV", GvEGV(sv)); - break; + Perl_dump_indent(aTHX_ level, file, " NAMELEN = %" IVdf "\n", (IV)GvNAMELEN(sv)); + do_hv_dump (level, file, " GvSTASH", GvSTASH(sv)); + Perl_dump_indent(aTHX_ level, file, " FLAGS = 0x%" UVxf "\n", (UV)GvFLAGS(sv)); + Perl_dump_indent(aTHX_ level, file, " GP = 0x%" UVxf "\n", PTR2UV(GvGP(sv))); + if (!GvGP(sv)) + break; + Perl_dump_indent(aTHX_ level, file, " SV = 0x%" UVxf "\n", PTR2UV(GvSV(sv))); + Perl_dump_indent(aTHX_ level, file, " REFCNT = %" IVdf "\n", (IV)GvREFCNT(sv)); + Perl_dump_indent(aTHX_ level, file, " IO = 0x%" UVxf "\n", PTR2UV(GvIOp(sv))); + Perl_dump_indent(aTHX_ level, file, " FORM = 0x%" UVxf " \n", PTR2UV(GvFORM(sv))); + Perl_dump_indent(aTHX_ level, file, " AV = 0x%" UVxf "\n", PTR2UV(GvAV(sv))); + Perl_dump_indent(aTHX_ level, file, " HV = 0x%" UVxf "\n", PTR2UV(GvHV(sv))); + Perl_dump_indent(aTHX_ level, file, " CV = 0x%" UVxf "\n", PTR2UV(GvCV(sv))); + Perl_dump_indent(aTHX_ level, file, " CVGEN = 0x%" UVxf "\n", (UV)GvCVGEN(sv)); + Perl_dump_indent(aTHX_ level, file, " GPFLAGS = 0x%" UVxf + " (%s)\n", + (UV)GvGPFLAGS(sv), + ""); + Perl_dump_indent(aTHX_ level, file, " LINE = %" IVdf "\n", (IV)GvLINE(sv)); + Perl_dump_indent(aTHX_ level, file, " FILE = \"%s\"\n", GvFILE(sv)); + do_gv_dump (level, file, " EGV", GvEGV(sv)); + break; case SVt_PVIO: - Perl_dump_indent(aTHX_ level, file, " IFP = 0x%" UVxf "\n", PTR2UV(IoIFP(sv))); - Perl_dump_indent(aTHX_ level, file, " OFP = 0x%" UVxf "\n", PTR2UV(IoOFP(sv))); - Perl_dump_indent(aTHX_ level, file, " DIRP = 0x%" UVxf "\n", PTR2UV(IoDIRP(sv))); - Perl_dump_indent(aTHX_ level, file, " LINES = %" IVdf "\n", (IV)IoLINES(sv)); - Perl_dump_indent(aTHX_ level, file, " PAGE = %" IVdf "\n", (IV)IoPAGE(sv)); - Perl_dump_indent(aTHX_ level, file, " PAGE_LEN = %" IVdf "\n", (IV)IoPAGE_LEN(sv)); - Perl_dump_indent(aTHX_ level, file, " LINES_LEFT = %" IVdf "\n", (IV)IoLINES_LEFT(sv)); + Perl_dump_indent(aTHX_ level, file, " IFP = 0x%" UVxf "\n", PTR2UV(IoIFP(sv))); + Perl_dump_indent(aTHX_ level, file, " OFP = 0x%" UVxf "\n", PTR2UV(IoOFP(sv))); + Perl_dump_indent(aTHX_ level, file, " DIRP = 0x%" UVxf "\n", PTR2UV(IoDIRP(sv))); + Perl_dump_indent(aTHX_ level, file, " LINES = %" IVdf "\n", (IV)IoLINES(sv)); + Perl_dump_indent(aTHX_ level, file, " PAGE = %" IVdf "\n", (IV)IoPAGE(sv)); + Perl_dump_indent(aTHX_ level, file, " PAGE_LEN = %" IVdf "\n", (IV)IoPAGE_LEN(sv)); + Perl_dump_indent(aTHX_ level, file, " LINES_LEFT = %" IVdf "\n", (IV)IoLINES_LEFT(sv)); if (IoTOP_NAME(sv)) Perl_dump_indent(aTHX_ level, file, " TOP_NAME = \"%s\"\n", IoTOP_NAME(sv)); - if (!IoTOP_GV(sv) || SvTYPE(IoTOP_GV(sv)) == SVt_PVGV) - do_gv_dump (level, file, " TOP_GV", IoTOP_GV(sv)); - else { - Perl_dump_indent(aTHX_ level, file, " TOP_GV = 0x%" UVxf "\n", - PTR2UV(IoTOP_GV(sv))); - do_sv_dump (level+1, file, MUTABLE_SV(IoTOP_GV(sv)), nest+1, - maxnest, dumpops, pvlim); - } - /* Source filters hide things that are not GVs in these three, so let's - be careful out there. */ + if (!IoTOP_GV(sv) || SvTYPE(IoTOP_GV(sv)) == SVt_PVGV) + do_gv_dump (level, file, " TOP_GV", IoTOP_GV(sv)); + else { + Perl_dump_indent(aTHX_ level, file, " TOP_GV = 0x%" UVxf "\n", + PTR2UV(IoTOP_GV(sv))); + do_sv_dump (level+1, file, MUTABLE_SV(IoTOP_GV(sv)), nest+1, + maxnest, dumpops, pvlim); + } + /* Source filters hide things that are not GVs in these three, so let's + be careful out there. */ if (IoFMT_NAME(sv)) Perl_dump_indent(aTHX_ level, file, " FMT_NAME = \"%s\"\n", IoFMT_NAME(sv)); - if (!IoFMT_GV(sv) || SvTYPE(IoFMT_GV(sv)) == SVt_PVGV) - do_gv_dump (level, file, " FMT_GV", IoFMT_GV(sv)); - else { - Perl_dump_indent(aTHX_ level, file, " FMT_GV = 0x%" UVxf "\n", - PTR2UV(IoFMT_GV(sv))); - do_sv_dump (level+1, file, MUTABLE_SV(IoFMT_GV(sv)), nest+1, - maxnest, dumpops, pvlim); - } + if (!IoFMT_GV(sv) || SvTYPE(IoFMT_GV(sv)) == SVt_PVGV) + do_gv_dump (level, file, " FMT_GV", IoFMT_GV(sv)); + else { + Perl_dump_indent(aTHX_ level, file, " FMT_GV = 0x%" UVxf "\n", + PTR2UV(IoFMT_GV(sv))); + do_sv_dump (level+1, file, MUTABLE_SV(IoFMT_GV(sv)), nest+1, + maxnest, dumpops, pvlim); + } if (IoBOTTOM_NAME(sv)) Perl_dump_indent(aTHX_ level, file, " BOTTOM_NAME = \"%s\"\n", IoBOTTOM_NAME(sv)); - if (!IoBOTTOM_GV(sv) || SvTYPE(IoBOTTOM_GV(sv)) == SVt_PVGV) - do_gv_dump (level, file, " BOTTOM_GV", IoBOTTOM_GV(sv)); - else { - Perl_dump_indent(aTHX_ level, file, " BOTTOM_GV = 0x%" UVxf "\n", - PTR2UV(IoBOTTOM_GV(sv))); - do_sv_dump (level+1, file, MUTABLE_SV(IoBOTTOM_GV(sv)), nest+1, - maxnest, dumpops, pvlim); - } - if (isPRINT(IoTYPE(sv))) + if (!IoBOTTOM_GV(sv) || SvTYPE(IoBOTTOM_GV(sv)) == SVt_PVGV) + do_gv_dump (level, file, " BOTTOM_GV", IoBOTTOM_GV(sv)); + else { + Perl_dump_indent(aTHX_ level, file, " BOTTOM_GV = 0x%" UVxf "\n", + PTR2UV(IoBOTTOM_GV(sv))); + do_sv_dump (level+1, file, MUTABLE_SV(IoBOTTOM_GV(sv)), nest+1, + maxnest, dumpops, pvlim); + } + if (isPRINT(IoTYPE(sv))) Perl_dump_indent(aTHX_ level, file, " TYPE = '%c'\n", IoTYPE(sv)); - else + else Perl_dump_indent(aTHX_ level, file, " TYPE = '\\%o'\n", IoTYPE(sv)); - Perl_dump_indent(aTHX_ level, file, " FLAGS = 0x%" UVxf "\n", (UV)IoFLAGS(sv)); - break; + Perl_dump_indent(aTHX_ level, file, " FLAGS = 0x%" UVxf "\n", (UV)IoFLAGS(sv)); + break; case SVt_REGEXP: dumpregexp: - { - struct regexp * const r = ReANY((REGEXP*)sv); + { + struct regexp * const r = ReANY((REGEXP*)sv); #define SV_SET_STRINGIFY_REGEXP_FLAGS(d,flags,names) STMT_START { \ sv_setpv(d,""); \ @@ -2432,7 +2446,7 @@ (UV)(r->compflags), SvPVX_const(d)); SV_SET_STRINGIFY_REGEXP_FLAGS(d,r->extflags,regexp_extflags_names); - Perl_dump_indent(aTHX_ level, file, " EXTFLAGS = 0x%" UVxf " (%s)\n", + Perl_dump_indent(aTHX_ level, file, " EXTFLAGS = 0x%" UVxf " (%s)\n", (UV)(r->extflags), SvPVX_const(d)); Perl_dump_indent(aTHX_ level, file, " ENGINE = 0x%" UVxf " (%s)\n", @@ -2443,56 +2457,56 @@ (UV)(r->intflags), SvPVX_const(d)); } else { Perl_dump_indent(aTHX_ level, file, " INTFLAGS = 0x%" UVxf "\n", - (UV)(r->intflags)); + (UV)(r->intflags)); } #undef SV_SET_STRINGIFY_REGEXP_FLAGS - Perl_dump_indent(aTHX_ level, file, " NPARENS = %" UVuf "\n", - (UV)(r->nparens)); - Perl_dump_indent(aTHX_ level, file, " LASTPAREN = %" UVuf "\n", - (UV)(r->lastparen)); - Perl_dump_indent(aTHX_ level, file, " LASTCLOSEPAREN = %" UVuf "\n", - (UV)(r->lastcloseparen)); - Perl_dump_indent(aTHX_ level, file, " MINLEN = %" IVdf "\n", - (IV)(r->minlen)); - Perl_dump_indent(aTHX_ level, file, " MINLENRET = %" IVdf "\n", - (IV)(r->minlenret)); - Perl_dump_indent(aTHX_ level, file, " GOFS = %" UVuf "\n", - (UV)(r->gofs)); - Perl_dump_indent(aTHX_ level, file, " PRE_PREFIX = %" UVuf "\n", - (UV)(r->pre_prefix)); - Perl_dump_indent(aTHX_ level, file, " SUBLEN = %" IVdf "\n", - (IV)(r->sublen)); - Perl_dump_indent(aTHX_ level, file, " SUBOFFSET = %" IVdf "\n", - (IV)(r->suboffset)); - Perl_dump_indent(aTHX_ level, file, " SUBCOFFSET = %" IVdf "\n", - (IV)(r->subcoffset)); - if (r->subbeg) - Perl_dump_indent(aTHX_ level, file, " SUBBEG = 0x%" UVxf " %s\n", - PTR2UV(r->subbeg), - pv_display(d, r->subbeg, r->sublen, 50, pvlim)); - else - Perl_dump_indent(aTHX_ level, file, " SUBBEG = 0x0\n"); - Perl_dump_indent(aTHX_ level, file, " MOTHER_RE = 0x%" UVxf "\n", - PTR2UV(r->mother_re)); - if (nest < maxnest && r->mother_re) - do_sv_dump(level+1, file, (SV *)r->mother_re, nest+1, - maxnest, dumpops, pvlim); - Perl_dump_indent(aTHX_ level, file, " PAREN_NAMES = 0x%" UVxf "\n", - PTR2UV(r->paren_names)); - Perl_dump_indent(aTHX_ level, file, " SUBSTRS = 0x%" UVxf "\n", - PTR2UV(r->substrs)); - Perl_dump_indent(aTHX_ level, file, " PPRIVATE = 0x%" UVxf "\n", - PTR2UV(r->pprivate)); - Perl_dump_indent(aTHX_ level, file, " OFFS = 0x%" UVxf "\n", - PTR2UV(r->offs)); - Perl_dump_indent(aTHX_ level, file, " QR_ANONCV = 0x%" UVxf "\n", - PTR2UV(r->qr_anoncv)); + Perl_dump_indent(aTHX_ level, file, " NPARENS = %" UVuf "\n", + (UV)(r->nparens)); + Perl_dump_indent(aTHX_ level, file, " LASTPAREN = %" UVuf "\n", + (UV)(r->lastparen)); + Perl_dump_indent(aTHX_ level, file, " LASTCLOSEPAREN = %" UVuf "\n", + (UV)(r->lastcloseparen)); + Perl_dump_indent(aTHX_ level, file, " MINLEN = %" IVdf "\n", + (IV)(r->minlen)); + Perl_dump_indent(aTHX_ level, file, " MINLENRET = %" IVdf "\n", + (IV)(r->minlenret)); + Perl_dump_indent(aTHX_ level, file, " GOFS = %" UVuf "\n", + (UV)(r->gofs)); + Perl_dump_indent(aTHX_ level, file, " PRE_PREFIX = %" UVuf "\n", + (UV)(r->pre_prefix)); + Perl_dump_indent(aTHX_ level, file, " SUBLEN = %" IVdf "\n", + (IV)(r->sublen)); + Perl_dump_indent(aTHX_ level, file, " SUBOFFSET = %" IVdf "\n", + (IV)(r->suboffset)); + Perl_dump_indent(aTHX_ level, file, " SUBCOFFSET = %" IVdf "\n", + (IV)(r->subcoffset)); + if (r->subbeg) + Perl_dump_indent(aTHX_ level, file, " SUBBEG = 0x%" UVxf " %s\n", + PTR2UV(r->subbeg), + pv_display(d, r->subbeg, r->sublen, 50, pvlim)); + else + Perl_dump_indent(aTHX_ level, file, " SUBBEG = 0x0\n"); + Perl_dump_indent(aTHX_ level, file, " MOTHER_RE = 0x%" UVxf "\n", + PTR2UV(r->mother_re)); + if (nest < maxnest && r->mother_re) + do_sv_dump(level+1, file, (SV *)r->mother_re, nest+1, + maxnest, dumpops, pvlim); + Perl_dump_indent(aTHX_ level, file, " PAREN_NAMES = 0x%" UVxf "\n", + PTR2UV(r->paren_names)); + Perl_dump_indent(aTHX_ level, file, " SUBSTRS = 0x%" UVxf "\n", + PTR2UV(r->substrs)); + Perl_dump_indent(aTHX_ level, file, " PPRIVATE = 0x%" UVxf "\n", + PTR2UV(r->pprivate)); + Perl_dump_indent(aTHX_ level, file, " OFFS = 0x%" UVxf "\n", + PTR2UV(r->offs)); + Perl_dump_indent(aTHX_ level, file, " QR_ANONCV = 0x%" UVxf "\n", + PTR2UV(r->qr_anoncv)); #ifdef PERL_ANY_COW - Perl_dump_indent(aTHX_ level, file, " SAVED_COPY = 0x%" UVxf "\n", - PTR2UV(r->saved_copy)); + Perl_dump_indent(aTHX_ level, file, " SAVED_COPY = 0x%" UVxf "\n", + PTR2UV(r->saved_copy)); #endif - } - break; + } + break; } SvREFCNT_dec_NN(d); } @@ -2511,9 +2525,9 @@ Perl_sv_dump(pTHX_ SV *sv) { if (sv && SvROK(sv)) - do_sv_dump(0, Perl_debug_log, sv, 0, 4, 0, 0); + do_sv_dump(0, Perl_debug_log, sv, 0, 4, 0, 0); else - do_sv_dump(0, Perl_debug_log, sv, 0, 0, 0, 0); + do_sv_dump(0, Perl_debug_log, sv, 0, 0, 0, 0); } int @@ -2526,8 +2540,8 @@ #endif if (!PL_op) { - Perl_ck_warner_d(aTHX_ packWARN(WARN_DEBUGGING), "NULL OP IN RUN"); - return 0; + Perl_ck_warner_d(aTHX_ packWARN(WARN_DEBUGGING), "NULL OP IN RUN"); + return 0; } DEBUG_l(Perl_deb(aTHX_ "Entering new RUNOPS level\n")); do { @@ -2543,29 +2557,29 @@ PL_stack_base + PL_curstackinfo->si_stack_hwm); PL_curstackinfo->si_stack_hwm = PL_stack_sp - PL_stack_base; #endif - if (PL_debug) { + if (PL_debug) { ENTER; SAVETMPS; - if (PL_watchaddr && (*PL_watchaddr != PL_watchok)) - PerlIO_printf(Perl_debug_log, - "WARNING: %" UVxf " changed from %" UVxf " to %" UVxf "\n", - PTR2UV(PL_watchaddr), PTR2UV(PL_watchok), - PTR2UV(*PL_watchaddr)); - if (DEBUG_s_TEST_) { - if (DEBUG_v_TEST_) { - PerlIO_printf(Perl_debug_log, "\n"); - deb_stack_all(); - } - else - debstack(); - } + if (PL_watchaddr && (*PL_watchaddr != PL_watchok)) + PerlIO_printf(Perl_debug_log, + "WARNING: %" UVxf " changed from %" UVxf " to %" UVxf "\n", + PTR2UV(PL_watchaddr), PTR2UV(PL_watchok), + PTR2UV(*PL_watchaddr)); + if (DEBUG_s_TEST_) { + if (DEBUG_v_TEST_) { + PerlIO_printf(Perl_debug_log, "\n"); + deb_stack_all(); + } + else + debstack(); + } - if (DEBUG_t_TEST_) debop(PL_op); - if (DEBUG_P_TEST_) debprof(PL_op); + if (DEBUG_t_TEST_) debop(PL_op); + if (DEBUG_P_TEST_) debprof(PL_op); FREETMPS; LEAVE; - } + } PERL_DTRACE_PROBE_OP(PL_op); } while ((PL_op = PL_op->op_ppaddr(aTHX))); @@ -2860,26 +2874,26 @@ PERL_ARGS_ASSERT_DEBOP; if (CopSTASH_eq(PL_curcop, PL_debstash) && !DEBUG_J_TEST_) - return 0; + return 0; Perl_deb(aTHX_ "%s", OP_NAME(o)); switch (o->op_type) { case OP_CONST: case OP_HINTSEVAL: - /* With ITHREADS, consts are stored in the pad, and the right pad - * may not be active here, so check. - * Looks like only during compiling the pads are illegal. - */ + /* With ITHREADS, consts are stored in the pad, and the right pad + * may not be active here, so check. + * Looks like only during compiling the pads are illegal. + */ #ifdef USE_ITHREADS - if ((((SVOP*)o)->op_sv) || !IN_PERL_COMPILETIME) + if ((((SVOP*)o)->op_sv) || !IN_PERL_COMPILETIME) #endif - PerlIO_printf(Perl_debug_log, "(%s)", SvPEEK(cSVOPo_sv)); - break; + PerlIO_printf(Perl_debug_log, "(%s)", SvPEEK(cSVOPo_sv)); + break; case OP_GVSV: case OP_GV: PerlIO_printf(Perl_debug_log, "(%" SVf ")", SVfARG(S_gv_display(aTHX_ cGVOPo_gv))); - break; + break; case OP_PADSV: case OP_PADAV: @@ -2904,7 +2918,7 @@ break; default: - break; + break; } PerlIO_printf(Perl_debug_log, "\n"); return 0; @@ -2927,29 +2941,29 @@ bool custom = 0; if (!o) - return OPclass_NULL; + return OPclass_NULL; if (o->op_type == 0) { - if (o->op_targ == OP_NEXTSTATE || o->op_targ == OP_DBSTATE) - return OPclass_COP; - return (o->op_flags & OPf_KIDS) ? OPclass_UNOP : OPclass_BASEOP; + if (o->op_targ == OP_NEXTSTATE || o->op_targ == OP_DBSTATE) + return OPclass_COP; + return (o->op_flags & OPf_KIDS) ? OPclass_UNOP : OPclass_BASEOP; } if (o->op_type == OP_SASSIGN) - return ((o->op_private & OPpASSIGN_BACKWARDS) ? OPclass_UNOP : OPclass_BINOP); + return ((o->op_private & OPpASSIGN_BACKWARDS) ? OPclass_UNOP : OPclass_BINOP); if (o->op_type == OP_AELEMFAST) { #ifdef USE_ITHREADS - return OPclass_PADOP; + return OPclass_PADOP; #else - return OPclass_SVOP; + return OPclass_SVOP; #endif } #ifdef USE_ITHREADS if (o->op_type == OP_GV || o->op_type == OP_GVSV || - o->op_type == OP_RCATLINE) - return OPclass_PADOP; + o->op_type == OP_RCATLINE) + return OPclass_PADOP; #endif if (o->op_type == OP_CUSTOM) @@ -2957,28 +2971,28 @@ switch (OP_CLASS(o)) { case OA_BASEOP: - return OPclass_BASEOP; + return OPclass_BASEOP; case OA_UNOP: - return OPclass_UNOP; + return OPclass_UNOP; case OA_BINOP: - return OPclass_BINOP; + return OPclass_BINOP; case OA_LOGOP: - return OPclass_LOGOP; + return OPclass_LOGOP; case OA_LISTOP: - return OPclass_LISTOP; + return OPclass_LISTOP; case OA_PMOP: - return OPclass_PMOP; + return OPclass_PMOP; case OA_SVOP: - return OPclass_SVOP; + return OPclass_SVOP; case OA_PADOP: - return OPclass_PADOP; + return OPclass_PADOP; case OA_PVOP_OR_SVOP: /* @@ -2988,70 +3002,70 @@ * the OP is an SVOP (or, under threads, a PADOP), * and the SV is an AV. */ - return (!custom && - (o->op_private & OPpTRANS_USE_SVOP) - ) + return (!custom && + (o->op_private & OPpTRANS_USE_SVOP) + ) #if defined(USE_ITHREADS) - ? OPclass_PADOP : OPclass_PVOP; + ? OPclass_PADOP : OPclass_PVOP; #else - ? OPclass_SVOP : OPclass_PVOP; + ? OPclass_SVOP : OPclass_PVOP; #endif case OA_LOOP: - return OPclass_LOOP; + return OPclass_LOOP; case OA_COP: - return OPclass_COP; + return OPclass_COP; case OA_BASEOP_OR_UNOP: - /* - * UNI(OP_foo) in toke.c returns token UNI or FUNC1 depending on - * whether parens were seen. perly.y uses OPf_SPECIAL to - * signal whether a BASEOP had empty parens or none. - * Some other UNOPs are created later, though, so the best - * test is OPf_KIDS, which is set in newUNOP. - */ - return (o->op_flags & OPf_KIDS) ? OPclass_UNOP : OPclass_BASEOP; + /* + * UNI(OP_foo) in toke.c returns token UNI or FUNC1 depending on + * whether parens were seen. perly.y uses OPf_SPECIAL to + * signal whether a BASEOP had empty parens or none. + * Some other UNOPs are created later, though, so the best + * test is OPf_KIDS, which is set in newUNOP. + */ + return (o->op_flags & OPf_KIDS) ? OPclass_UNOP : OPclass_BASEOP; case OA_FILESTATOP: - /* - * The file stat OPs are created via UNI(OP_foo) in toke.c but use - * the OPf_REF flag to distinguish between OP types instead of the - * usual OPf_SPECIAL flag. As usual, if OPf_KIDS is set, then we - * return OPclass_UNOP so that walkoptree can find our children. If - * OPf_KIDS is not set then we check OPf_REF. Without OPf_REF set - * (no argument to the operator) it's an OP; with OPf_REF set it's - * an SVOP (and op_sv is the GV for the filehandle argument). - */ - return ((o->op_flags & OPf_KIDS) ? OPclass_UNOP : + /* + * The file stat OPs are created via UNI(OP_foo) in toke.c but use + * the OPf_REF flag to distinguish between OP types instead of the + * usual OPf_SPECIAL flag. As usual, if OPf_KIDS is set, then we + * return OPclass_UNOP so that walkoptree can find our children. If + * OPf_KIDS is not set then we check OPf_REF. Without OPf_REF set + * (no argument to the operator) it's an OP; with OPf_REF set it's + * an SVOP (and op_sv is the GV for the filehandle argument). + */ + return ((o->op_flags & OPf_KIDS) ? OPclass_UNOP : #ifdef USE_ITHREADS - (o->op_flags & OPf_REF) ? OPclass_PADOP : OPclass_BASEOP); + (o->op_flags & OPf_REF) ? OPclass_PADOP : OPclass_BASEOP); #else - (o->op_flags & OPf_REF) ? OPclass_SVOP : OPclass_BASEOP); + (o->op_flags & OPf_REF) ? OPclass_SVOP : OPclass_BASEOP); #endif case OA_LOOPEXOP: - /* - * next, last, redo, dump and goto use OPf_SPECIAL to indicate that a - * label was omitted (in which case it's a BASEOP) or else a term was - * seen. In this last case, all except goto are definitely PVOP but - * goto is either a PVOP (with an ordinary constant label), an UNOP - * with OPf_STACKED (with a non-constant non-sub) or an UNOP for - * OP_REFGEN (with goto &sub) in which case OPf_STACKED also seems to - * get set. - */ - if (o->op_flags & OPf_STACKED) - return OPclass_UNOP; - else if (o->op_flags & OPf_SPECIAL) - return OPclass_BASEOP; - else - return OPclass_PVOP; + /* + * next, last, redo, dump and goto use OPf_SPECIAL to indicate that a + * label was omitted (in which case it's a BASEOP) or else a term was + * seen. In this last case, all except goto are definitely PVOP but + * goto is either a PVOP (with an ordinary constant label), an UNOP + * with OPf_STACKED (with a non-constant non-sub) or an UNOP for + * OP_REFGEN (with goto &sub) in which case OPf_STACKED also seems to + * get set. + */ + if (o->op_flags & OPf_STACKED) + return OPclass_UNOP; + else if (o->op_flags & OPf_SPECIAL) + return OPclass_BASEOP; + else + return OPclass_PVOP; case OA_METHOP: - return OPclass_METHOP; + return OPclass_METHOP; case OA_UNOP_AUX: - return OPclass_UNOP_AUX; + return OPclass_UNOP_AUX; } Perl_warn(aTHX_ "Can't determine class of operator %s, assuming BASEOP\n", - OP_NAME(o)); + OP_NAME(o)); return OPclass_BASEOP; } @@ -3066,7 +3080,7 @@ if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT) return cx->blk_sub.cv; - else if (CxTYPE(cx) == CXt_EVAL && !CxTRYBLOCK(cx)) + else if (CxTYPE(cx) == CXt_EVAL && !CxEVALBLOCK(cx)) return cx->blk_eval.cv; else if (ix == 0 && si->si_type == PERLSI_MAIN) return PL_main_cv; @@ -3089,7 +3103,7 @@ PL_watchaddr = addr; PL_watchok = *addr; PerlIO_printf(Perl_debug_log, "WATCHING, %" UVxf " is currently %" UVxf "\n", - PTR2UV(PL_watchaddr), PTR2UV(PL_watchok)); + PTR2UV(PL_watchaddr), PTR2UV(PL_watchok)); } STATIC void @@ -3098,9 +3112,9 @@ PERL_ARGS_ASSERT_DEBPROF; if (!DEBUG_J_TEST_ && CopSTASH_eq(PL_curcop, PL_debstash)) - return; + return; if (!PL_profiledata) - Newxz(PL_profiledata, MAXO, U32); + Newxz(PL_profiledata, MAXO, U32); ++PL_profiledata[o->op_type]; } @@ -3109,11 +3123,11 @@ { unsigned i; if (!PL_profiledata) - return; + return; for (i = 0; i < MAXO; i++) { - if (PL_profiledata[i]) - PerlIO_printf(Perl_debug_log, - "%5lu %s\n", (unsigned long)PL_profiledata[i], + if (PL_profiledata[i]) + PerlIO_printf(Perl_debug_log, + "%5lu %s\n", (unsigned long)PL_profiledata[i], PL_op_name[i]); } } diff -Nru perl-5.32.1/ebcdic_tables.h perl-5.34.0/ebcdic_tables.h --- perl-5.32.1/ebcdic_tables.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ebcdic_tables.h 2020-10-04 22:17:13.000000000 +0000 @@ -44,9 +44,9 @@ /* Index is ASCII platform code point; value is EBCDIC 1047 equivalent */ # ifndef DOINIT - EXTCONST U8 PL_a2e[]; + EXTCONST U8 PL_a2e[256]; # else - EXTCONST U8 PL_a2e[] = { + EXTCONST U8 PL_a2e[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/0x00,0x01,0x02,0x03,0x37,0x2D,0x2E,0x2F,0x16,0x05,0x15,0x0B,0x0C,0x0D,0x0E,0x0F, /*1_*/0x10,0x11,0x12,0x13,0x3C,0x3D,0x32,0x26,0x18,0x19,0x3F,0x27,0x1C,0x1D,0x1E,0x1F, @@ -70,9 +70,9 @@ /* Index is EBCDIC 1047 code point; value is ASCII platform equivalent */ # ifndef DOINIT - EXTCONST U8 PL_e2a[]; + EXTCONST U8 PL_e2a[256]; # else - EXTCONST U8 PL_e2a[] = { + EXTCONST U8 PL_e2a[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/0x00,0x01,0x02,0x03,0x9C,0x09,0x86,0x7F,0x97,0x8D,0x8E,0x0B,0x0C,0x0D,0x0E,0x0F, /*1_*/0x10,0x11,0x12,0x13,0x9D,0x0A,0x08,0x87,0x18,0x19,0x92,0x8F,0x1C,0x1D,0x1E,0x1F, @@ -97,9 +97,9 @@ /* (Confusingly named) Index is EBCDIC 1047 I8 byte; value is * EBCDIC 1047 UTF-EBCDIC equivalent */ # ifndef DOINIT - EXTCONST U8 PL_utf2e[]; + EXTCONST U8 PL_utf2e[256]; # else - EXTCONST U8 PL_utf2e[] = { + EXTCONST U8 PL_utf2e[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/0x00,0x01,0x02,0x03,0x37,0x2D,0x2E,0x2F,0x16,0x05,0x15,0x0B,0x0C,0x0D,0x0E,0x0F, /*1_*/0x10,0x11,0x12,0x13,0x3C,0x3D,0x32,0x26,0x18,0x19,0x3F,0x27,0x1C,0x1D,0x1E,0x1F, @@ -124,9 +124,9 @@ /* (Confusingly named) Index is EBCDIC 1047 UTF-EBCDIC byte; value is * EBCDIC 1047 I8 equivalent */ # ifndef DOINIT - EXTCONST U8 PL_e2utf[]; + EXTCONST U8 PL_e2utf[256]; # else - EXTCONST U8 PL_e2utf[] = { + EXTCONST U8 PL_e2utf[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/0x00,0x01,0x02,0x03,0x9C,0x09,0x86,0x7F,0x97,0x8D,0x8E,0x0B,0x0C,0x0D,0x0E,0x0F, /*1_*/0x10,0x11,0x12,0x13,0x9D,0x0A,0x08,0x87,0x18,0x19,0x92,0x8F,0x1C,0x1D,0x1E,0x1F, @@ -153,9 +153,9 @@ * flags table in tr16. The entries marked 9 in tr16 are continuation bytes * and are marked as length 1 here so that we can recover. */ # ifndef DOINIT - EXTCONST U8 PL_utf8skip[]; + EXTCONST U8 PL_utf8skip[256]; # else - EXTCONST U8 PL_utf8skip[] = { + EXTCONST U8 PL_utf8skip[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*1_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -179,9 +179,9 @@ /* Index is EBCDIC 1047 code point; value is its lowercase equivalent */ # ifndef DOINIT - EXTCONST U8 PL_latin1_lc[]; + EXTCONST U8 PL_latin1_lc[256]; # else - EXTCONST U8 PL_latin1_lc[] = { + EXTCONST U8 PL_latin1_lc[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, /*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, @@ -207,9 +207,9 @@ * The 'mod' in the name means that codepoints whose uppercase is above 255 or * longer than 1 character map to LATIN SMALL LETTER Y WITH DIARESIS */ # ifndef DOINIT - EXTCONST U8 PL_mod_latin1_uc[]; + EXTCONST U8 PL_mod_latin1_uc[256]; # else - EXTCONST U8 PL_mod_latin1_uc[] = { + EXTCONST U8 PL_mod_latin1_uc[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, /*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, @@ -234,9 +234,34 @@ /* Index is EBCDIC 1047 code point; For A-Z, value is a-z; for a-z, value * is A-Z; all other code points map to themselves */ # ifndef DOINIT - EXTCONST U8 PL_fold[]; + EXTCONST U8 PL_fold[256]; # else - EXTCONST U8 PL_fold[] = { + EXTCONST U8 PL_fold[256] = { +/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ +/*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, +/*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, +/*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, +/*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +/*4_*/0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, +/*5_*/0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, +/*6_*/0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, +/*7_*/0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, +/*8_*/0x80,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, +/*9_*/0x90,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, +/*A_*/0xA0,0xA1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, +/*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, +/*C_*/0xC0,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, +/*D_*/0xD0,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, +/*E_*/0xE0,0xE1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, +/*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF +/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ +}; +# endif + +# ifndef DOINIT + EXT U8 PL_fold_locale[256]; +# else + EXT U8 PL_fold_locale[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, /*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, @@ -262,9 +287,9 @@ * (A => a; a => A, etc) in the 0-255 range. If no such equivalent, value is * the code point itself */ # ifndef DOINIT - EXTCONST U8 PL_fold_latin1[]; + EXTCONST U8 PL_fold_latin1[256]; # else - EXTCONST U8 PL_fold_latin1[] = { + EXTCONST U8 PL_fold_latin1[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, /*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, @@ -293,9 +318,9 @@ */ # ifndef DOINIT - EXTCONST U8 PL_extended_utf8_dfa_tab[]; + EXTCONST U8 PL_extended_utf8_dfa_tab[416]; # else - EXTCONST U8 PL_extended_utf8_dfa_tab[] = { + EXTCONST U8 PL_extended_utf8_dfa_tab[416] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*1_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -334,9 +359,9 @@ */ # ifndef DOINIT - EXTCONST U16 PL_strict_utf8_dfa_tab[]; + EXTCONST U16 PL_strict_utf8_dfa_tab[624]; # else - EXTCONST U16 PL_strict_utf8_dfa_tab[] = { + EXTCONST U16 PL_strict_utf8_dfa_tab[624] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*1_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -381,9 +406,9 @@ */ # ifndef DOINIT - EXTCONST U8 PL_c9_utf8_dfa_tab[]; + EXTCONST U8 PL_c9_utf8_dfa_tab[368]; # else - EXTCONST U8 PL_c9_utf8_dfa_tab[] = { + EXTCONST U8 PL_c9_utf8_dfa_tab[368] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*1_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -422,9 +447,9 @@ /* Index is ASCII platform code point; value is EBCDIC 037 equivalent */ # ifndef DOINIT - EXTCONST U8 PL_a2e[]; + EXTCONST U8 PL_a2e[256]; # else - EXTCONST U8 PL_a2e[] = { + EXTCONST U8 PL_a2e[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/0x00,0x01,0x02,0x03,0x37,0x2D,0x2E,0x2F,0x16,0x05,0x25,0x0B,0x0C,0x0D,0x0E,0x0F, /*1_*/0x10,0x11,0x12,0x13,0x3C,0x3D,0x32,0x26,0x18,0x19,0x3F,0x27,0x1C,0x1D,0x1E,0x1F, @@ -448,9 +473,9 @@ /* Index is EBCDIC 037 code point; value is ASCII platform equivalent */ # ifndef DOINIT - EXTCONST U8 PL_e2a[]; + EXTCONST U8 PL_e2a[256]; # else - EXTCONST U8 PL_e2a[] = { + EXTCONST U8 PL_e2a[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/0x00,0x01,0x02,0x03,0x9C,0x09,0x86,0x7F,0x97,0x8D,0x8E,0x0B,0x0C,0x0D,0x0E,0x0F, /*1_*/0x10,0x11,0x12,0x13,0x9D,0x85,0x08,0x87,0x18,0x19,0x92,0x8F,0x1C,0x1D,0x1E,0x1F, @@ -475,9 +500,9 @@ /* (Confusingly named) Index is EBCDIC 037 I8 byte; value is * EBCDIC 037 UTF-EBCDIC equivalent */ # ifndef DOINIT - EXTCONST U8 PL_utf2e[]; + EXTCONST U8 PL_utf2e[256]; # else - EXTCONST U8 PL_utf2e[] = { + EXTCONST U8 PL_utf2e[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/0x00,0x01,0x02,0x03,0x37,0x2D,0x2E,0x2F,0x16,0x05,0x25,0x0B,0x0C,0x0D,0x0E,0x0F, /*1_*/0x10,0x11,0x12,0x13,0x3C,0x3D,0x32,0x26,0x18,0x19,0x3F,0x27,0x1C,0x1D,0x1E,0x1F, @@ -502,9 +527,9 @@ /* (Confusingly named) Index is EBCDIC 037 UTF-EBCDIC byte; value is * EBCDIC 037 I8 equivalent */ # ifndef DOINIT - EXTCONST U8 PL_e2utf[]; + EXTCONST U8 PL_e2utf[256]; # else - EXTCONST U8 PL_e2utf[] = { + EXTCONST U8 PL_e2utf[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/0x00,0x01,0x02,0x03,0x9C,0x09,0x86,0x7F,0x97,0x8D,0x8E,0x0B,0x0C,0x0D,0x0E,0x0F, /*1_*/0x10,0x11,0x12,0x13,0x9D,0x85,0x08,0x87,0x18,0x19,0x92,0x8F,0x1C,0x1D,0x1E,0x1F, @@ -531,9 +556,9 @@ * flags table in tr16. The entries marked 9 in tr16 are continuation bytes * and are marked as length 1 here so that we can recover. */ # ifndef DOINIT - EXTCONST U8 PL_utf8skip[]; + EXTCONST U8 PL_utf8skip[256]; # else - EXTCONST U8 PL_utf8skip[] = { + EXTCONST U8 PL_utf8skip[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*1_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -557,9 +582,9 @@ /* Index is EBCDIC 037 code point; value is its lowercase equivalent */ # ifndef DOINIT - EXTCONST U8 PL_latin1_lc[]; + EXTCONST U8 PL_latin1_lc[256]; # else - EXTCONST U8 PL_latin1_lc[] = { + EXTCONST U8 PL_latin1_lc[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, /*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, @@ -585,9 +610,9 @@ * The 'mod' in the name means that codepoints whose uppercase is above 255 or * longer than 1 character map to LATIN SMALL LETTER Y WITH DIARESIS */ # ifndef DOINIT - EXTCONST U8 PL_mod_latin1_uc[]; + EXTCONST U8 PL_mod_latin1_uc[256]; # else - EXTCONST U8 PL_mod_latin1_uc[] = { + EXTCONST U8 PL_mod_latin1_uc[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, /*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, @@ -612,9 +637,34 @@ /* Index is EBCDIC 037 code point; For A-Z, value is a-z; for a-z, value * is A-Z; all other code points map to themselves */ # ifndef DOINIT - EXTCONST U8 PL_fold[]; + EXTCONST U8 PL_fold[256]; +# else + EXTCONST U8 PL_fold[256] = { +/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ +/*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, +/*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, +/*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, +/*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +/*4_*/0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, +/*5_*/0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, +/*6_*/0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, +/*7_*/0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, +/*8_*/0x80,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, +/*9_*/0x90,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, +/*A_*/0xA0,0xA1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, +/*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, +/*C_*/0xC0,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, +/*D_*/0xD0,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, +/*E_*/0xE0,0xE1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, +/*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF +/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ +}; +# endif + +# ifndef DOINIT + EXT U8 PL_fold_locale[256]; # else - EXTCONST U8 PL_fold[] = { + EXT U8 PL_fold_locale[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, /*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, @@ -640,9 +690,9 @@ * (A => a; a => A, etc) in the 0-255 range. If no such equivalent, value is * the code point itself */ # ifndef DOINIT - EXTCONST U8 PL_fold_latin1[]; + EXTCONST U8 PL_fold_latin1[256]; # else - EXTCONST U8 PL_fold_latin1[] = { + EXTCONST U8 PL_fold_latin1[256] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, /*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, @@ -671,9 +721,9 @@ */ # ifndef DOINIT - EXTCONST U8 PL_extended_utf8_dfa_tab[]; + EXTCONST U8 PL_extended_utf8_dfa_tab[416]; # else - EXTCONST U8 PL_extended_utf8_dfa_tab[] = { + EXTCONST U8 PL_extended_utf8_dfa_tab[416] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*1_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -712,9 +762,9 @@ */ # ifndef DOINIT - EXTCONST U16 PL_strict_utf8_dfa_tab[]; + EXTCONST U16 PL_strict_utf8_dfa_tab[624]; # else - EXTCONST U16 PL_strict_utf8_dfa_tab[] = { + EXTCONST U16 PL_strict_utf8_dfa_tab[624] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*1_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -759,9 +809,9 @@ */ # ifndef DOINIT - EXTCONST U8 PL_c9_utf8_dfa_tab[]; + EXTCONST U8 PL_c9_utf8_dfa_tab[368]; # else - EXTCONST U8 PL_c9_utf8_dfa_tab[] = { + EXTCONST U8 PL_c9_utf8_dfa_tab[368] = { /* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/ /*0_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*1_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, diff -Nru perl-5.32.1/.editorconfig perl-5.34.0/.editorconfig --- perl-5.32.1/.editorconfig 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/.editorconfig 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,10 @@ +root = true + +[**/*.[ch]] +charset = utf-8 +indent_style = space +indent_size = 4 +tab_width = 8 +end_of_line = lf +trim_trailing_whitespace = true +insert_final_newline = true diff -Nru perl-5.32.1/embed.fnc perl-5.34.0/embed.fnc --- perl-5.32.1/embed.fnc 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/embed.fnc 2021-05-04 06:52:48.000000000 +0000 @@ -14,7 +14,7 @@ : real (full) name, with any appropriate thread context paramaters, thus hiding : that detail from the typical code. : -: Most macros listed here are the complete full name. +: Most macros (as opposed to function) listed here are the complete full name. : : All non-static functions defined by perl need to be listed in this file. : embed.pl uses the entries here to construct: @@ -22,9 +22,16 @@ : 2) embed.h to create short name macros : : Static functions internal to a file need not appear here, but there is -: benefit to declaring them here, as it generally handles the thread context -: parameter invisibly, as well as making sure a PERL_ARGS_ASSERT_foo macro is -: defined, which can save you debugging time. +: benefit to declaring them here: +: 1) It generally handles the thread context parameter invisibly making it +: trivial to add or remove needing thread context passed; +: 2) It defines a PERL_ARGS_ASSERT_foo macro, which can save you debugging +: time; +: 3) It is is automatically known to Devel::PPPort, making it quicker to +: later find out when it came into existence. For example +: perl ppport.h --api-info=/edit_distance/ +: yields +: Supported at least since perl-5.23.8, with or without ppport.h. : : Lines in this file are of the form: : flags|return_type|name|arg1|arg2|...|argN @@ -106,49 +113,118 @@ : function in its full 'Perl_' form with any necessary thread : context parameter. : +: Just below is a description of the relevant parts of the automatic +: documentation generation system which heavily involves this file. Below that +: is a description of all the flags used in this file. +: : Scattered around the perl source are lines of the form: : : =for apidoc name +: =for apidoc_item name : -: followed by pod for that function. The purpose of these is to tell -: autodoc.pl where the documentation is for a function listed in this file. It -: uses the prototype from here and the pod from there in generating the -: documentation in perlapi or perlintern. The entries in this file that have -: corresponding '=for apidoc' entries should have the 'd' flag set in this -: file. -: -: There are also lines of this form scattered around: +: followed by pod for that function. The purpose of these lines and the text +: that immediately follows them is to furnish documentation for functions +: and macros listed here in embed.fnc. The lines tend to be placed near the +: source for the item they describe. autodoc.pl is run as part of the standard +: build process to extract this documentation and build perlapi.pod from the +: elements that are in the API (flagged as A in this file), and perlintern.pod +: from the other elements. +: +: 'name' in the apidoc line corresponds to an item listed in this file, so that +: the signature and flags need only be specified once, here, and automatically +: they get placed into the generated pod. +: +: 'apidoc_item' is used for subsidiary entries, which share the same pod as the +: plain apidoc one does. Thus the documentation for functions which do +: essentially the same thing, but with minor differences can all be placed in +: the same entry. The apidoc_item lines must all come after the apidoc line +: and before the pod for the entry. +: +: The entries in this file that have corresponding '=for apidoc' entries must +: have the 'd' flag set in this file. +: +: In C files, the apidoc lines are inside comment blocks. They may also be +: placed in pod files. In those, the =for causes lines from there until the +: next line beginning with an '=' to not be considered part of that pod. +: +: The 'h' flag is used to hide (suppress) the pod associated with =apidoc lines +: from being placed in the generated perlapi or perlintern. There are several +: reasons you might want to do this, given in the 'h' flag description below, +: but one is for the case where the =apidoc occurs in a file that contains +: regular pod. Without that flag, the associated pod will be placed in both +: it, and perlapi or perlintern. That may be what you want, but it gives you +: the flexibility to choose that, or instead have just a link to the source pod +: inserted in perlapi or perlintern. This allows single-source browsing for +: someone; they don't have to scan multiple pods trying to find something +: suitable. +: +: There are also lines of this form scattered around the perl +: source: +: +: =for apidoc_section Section Name +: =head1 Section Name +: +: These aren't tied to this embed.fnc file, and so are documented in autodoc.pl. +: +: What goes into the documentation of a particular function ends with the next +: line that begins with an '='. In particular, an '=cut' line ends that +: documentation without introducing something new. +: +: Various macros and other elements aren't listed here in embed.fnc. They are +: documented in the same manner, but since they don't have this file to get +: information from, the defining lines have the syntax and meaning they do in +: this file, so it can be specified: : : =for apidoc flags|return_type|name|arg1|arg2|...|argN +: =for apidoc_item flags|return_type|name|arg1|arg2|...|argN : -: and with the same meanings as the lines in this file. These are for -: documenting macros. The 'name' in any such line must not be the same as any -: in this file (i.e., no redundant definitions), and one of the flags must be -: 'm', indicating it is a macro. The lines following these are pod for the -: respective macro. Since these are macros, the arguments need not be legal C -: parameters. To indicate this to downstream software that inspects these -: lines, there are a few conventions: -: type should be the entire argument name if it names a type -: cast should be the entire argument name if it is a cast -: SP should be the entire argument name if it is the stack pointer SP -: block should be the entire argument name if it is a C brace-enclosed block +: The 'name' in any such line must not be the same as any in this file (i.e., +: no redundant definitions), and one of the flags on the apidoc lines must be +: 'm' or 'y', indicating it is not a function. +: +: All but the name field of an apidoc_item line are optional, and if empty, +: inherits from the controlling plain apidoc line. The flags field is +: generally empty, and in fact, the only flags it can have are ones directly +: related to its display. For example it might have the T flag to indicate no +: thread context parameter is used, whereas the apidoc entry does have a thread +: context. Here is an example: +: +: =for apidoc Am|char* |SvPV |SV* sv|STRLEN len +: =for apidoc_item |const char*|SvPV_const |SV* sv|STRLEN len +: =for apidoc_item |char* |SvPV_nolen |SV* sv +: +: Since these are macros, the arguments need not be legal C parameters. To +: indicate this to downstream software that inspects these lines, there are a +: few conventions. An example would be: : -: The letters above are exact. For example, you have to have 't', 'y', 'p', -: and 'e' literally. Here is an example: : =for apidoc Am|void|Newxc|void* ptr|int nitems|type|cast : -: Additionally, an argument can be some word(s) enclosed in double quotes to -: indicate that it has to be a string, instead of a const char * const, like this -: =for apidoc Ama|SV*|newSVpvs|"string" +: In this example, a real call of Newxc, 'type' would be specified as something +: like 'int' or 'char', and 'cast' by perhaps 'struct foo'. +: +: The complete list of conventions is: +: type the argument names a type +: cast the argument names a type which the macro casts to +: SP the argument is the stack pointer, SP +: block the argument is a C brace-enclosed block +: number the argument is a C numeric constant, like 3 +: token the argument is a generic C preprocessor token, like abc +: "string" the argument is a literal C double-quoted string; what's important +: here are the quotes; for clarity, you can say whatever you want +: inside them +: +: Unlike other arguments, none of these is of the form 'int name'. There is no +: name. +: +: If any argument or return value is not one of the above, and isn't legal C +: language, the entry still can be specified, using the 'u' flag. : -: If any argument or return value is not one of the above, and isn't a legal C -: language one, the 'u' flag should be specified. +: 'return_type' in these lines can be empty, unlike in this file: : -: Again, autodoc uses these lines to construct perlapi. 'return_type' in these -: lines can be empty, unlike in this file. +: =for apidoc Amnu||START_EXTERN_C : : Devel::PPPort also looks at both this file and the '=for apidoc' lines. In -: part it is to construct lists of functions that are or are not backported. +: part it is to construct lists of elements that are or are not backported. : : makedef.pl uses this file for constructing the export list which lists the : symbols that should be available on all platforms. @@ -239,7 +315,7 @@ : into "#if defined(PERL_CORE) || defined(PERL_EXT)" : : To be usable from dynamically loaded extensions, either: -: 1) it must be static to its containing file ("i" or "s" flag); or +: 1) it must be static to its containing file ("i" or "S" flag); or : 2) be combined with the "X" flag. : : e Not exported @@ -276,33 +352,45 @@ : proto.h: PERL_ARGS_ASSERT macro is not defined unless the function : has NN arguments : -: h Hide any documentation. This is used when the documentation is atypical -: of the rest of perlapi and perlintern. In other words the item is -: documented, but just not the standard way. One reason would be if there -: are a bunch of macros which follow a common paradigm in their naming, so -: rather than having an entry for each slight variation, there is an -: overarchinge one. It is also used when the documentation is in another -: pod, such as perlguts or warnings.h. This flag is useful for downstream -: programs, such as Devel::PPPort. -: -: I This flag works exactly the same as 'i' but it also adds -: __attribute__((always_inline)) or __forceinline if either of them is -: supported by the compiler. -: -: proto.h: function is declared as PERL_STATIC_FORCE_INLINE and -: __attribute__always_inline__ is added +: h Hide any documentation that would normally go into perlapi or +: perlintern. This is typically used when the documentation is actually +: in another pod. If you don't use the 'h', that documentation is +: displayed in both places; with the flag, it stays in the pod, and a +: link to that pod is instead placed in perlapi or perlintern. This +: allows one to browse perlapi or perlintern and see all the potentially +: relevant elements. A good example is perlapio. It has documentation +: about PerlIO functions with other text giving context. There's no point +: in writing a second entry for perlapi, but it would be good if someone +: browsing perlapi knew about it. By adding '=for apidoc' lines in +: perlapio, the appropriate text could be simply copied into perlapi if +: deemed appropriate, or just a link added there when the 'h' flag is +: specified. +: This flag is useful for symbolic names for flags. A single =for apidoc +: line can be added to the pod where the meaning is discussed, and perlapi +: will list the name, with a link to the pod. Another use would be if +: there are a bunch of macros which follow a common paradigm in their +: naming, so rather than having an entry for each slight variation, there +: is an overarching one. This flag is useful for downstream programs, +: such as Devel::PPPort. : : i inline static. This is used for functions that the compiler is being : requested to inline. If the function is in a header file its : definition will be visible (unless guarded by #if..#endif) to all : XS code. (A typical guard will be that it is being included in a : particular C file(s) or in the perl core.) Therefore, all -: non-guarded function should also have the 'p' flag specified to avoid +: non-guarded functions should also have the 'p' flag specified to avoid : polluting the XS code name space. Otherwise an error is generated if : the 'S' flag is not also specified. : : proto.h: function is declared as PERL_STATIC_INLINE : +: I This flag works exactly the same as 'i' but it also adds +: __attribute__((always_inline)) or __forceinline if either of them is +: supported by the compiler. +: +: proto.h: function is declared as PERL_STATIC_FORCE_INLINE and +: __attribute__always_inline__ is added +: : m Implemented as a macro; there is no function associated with this name, : and hence no long Perl_ or S_ name. However, if the macro name itself : begins with 'Perl_', autodoc.pl will show a thread context parameter @@ -333,11 +421,18 @@ : characters, and a warning is raised otherwise. This flag suppresses : that warning, so that weird things can be documented : -: n Has no arguments (used only in =for apidoc entries) +: n Has no arguments. Perhaps a better name would have been '0'. (used only +: in =for apidoc entries) : : The macro (it can't be a function) is used without any parameters nor : empty parentheses. : +: Perhaps a better name for this flag would have been '0'. The reason the +: flag was not changed to that from 'n', is if D:P were to be regenerated +: on an older perl, it still would use the new embed.fnc shipped with it, +: but would be using the flags from the older perl source code. +: +: : O Has a perl_ compatibility macro. : : The really OLD name for API funcs. @@ -355,7 +450,10 @@ : embed.h: suppress "#define foo Perl_foo" : : autodoc.pl adds a note that this function must be explicitly called as -: Perl_$name with an aTHX_ parameter. +: Perl_$name, and with an aTHX_ parameter unless the 'T' flag is also +: specified. + +: mnemonic: 'omit' generated macro : : P Pure function: : @@ -385,7 +483,8 @@ : : gcc has a bug (which they claim is a feature) in which casting the : result of one of these to (void) doesn't silence the warning that the -: result is ignored. +: result is ignored. (Perl has a workaround for this bug, see +: PERL_UNUSED_RESULT docs) : : proto.h: add __attribute__warn_unused_result__ : @@ -416,9 +515,11 @@ : : For example, the expansion of STR_WITH_LEN is a comma separated pair of : values, so would have this flag; or some macros take preprocessor -: tokens, so would have this flag. This flag is an indication to -: downstream tools, such as Devel::PPPort, that this requires special -: handling. +: tokens, so would have this flag. +: +: This also is used for entries that require processing for use, such as +: being compiled by xsubpp. This flag is an indication to downstream +: tools, such as Devel::PPPort, that this requires special handling. : : U autodoc.pl will not output a usage example : @@ -443,6 +544,8 @@ : any doc entry is marked that it may change. Also used to suppress : making a perlapi doc entry if it would just be a placeholder. : +: y Typedef. The element names a type rather than being a macro +: : In this file, pointer parameters that must not be passed NULLs should be : prefixed with NN. : @@ -474,7 +577,7 @@ ATod |int |perl_run |NN PerlInterpreter *my_perl ATod |int |perl_parse |NN PerlInterpreter *my_perl|XSINIT_t xsinit \ |int argc|NULLOK char** argv|NULLOK char** env -ATpR |bool |doing_taint |int argc|NULLOK char** argv|NULLOK char** env +CTpR |bool |doing_taint |int argc|NULLOK char** argv|NULLOK char** env #if defined(USE_ITHREADS) ATod |PerlInterpreter*|perl_clone|NN PerlInterpreter *proto_perl|UV flags # if defined(PERL_IMPLICIT_SYS) @@ -541,13 +644,14 @@ EXp |void |av_reify |NN AV *av ApdR |SV* |av_shift |NN AV *av Apd |SV** |av_store |NN AV *av|SSize_t key|NULLOK SV *val -AidRp |SSize_t|av_top_index |NN AV *av +AmdR |SSize_t|av_top_index |NN AV *av +AidRp |Size_t |av_count |NN AV *av AmdR |SSize_t|av_tindex |NN AV *av Apd |void |av_undef |NN AV *av Apdoex |SV** |av_create_and_unshift_one|NN AV **const avp|NN SV *const val Apd |void |av_unshift |NN AV *av|SSize_t num -Apo |SV** |av_arylen_p |NN AV *av -Apo |IV* |av_iter_p |NN AV *av +Cpo |SV** |av_arylen_p |NN AV *av +Cpo |IV* |av_iter_p |NN AV *av #if defined(PERL_IN_AV_C) S |MAGIC* |get_aux_mg |NN AV *av #endif @@ -568,10 +672,10 @@ |NULLOK const PERL_CONTEXT **dbcxp : Used in several source files pR |bool |cando |Mode_t mode|bool effective|NN const Stat_t* statbufp -ApRT |U32 |cast_ulong |NV f -ApRT |I32 |cast_i32 |NV f -ApRT |IV |cast_iv |NV f -ApRT |UV |cast_uv |NV f +CpRT |U32 |cast_ulong |NV f +CpRT |I32 |cast_i32 |NV f +CpRT |IV |cast_iv |NV f +CpRT |UV |cast_uv |NV f #if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP) ApR |I32 |my_chsize |int fd|Off_t length #endif @@ -596,19 +700,19 @@ Tore |void |win32_croak_not_implemented|NN const char * fname #endif #if defined(PERL_IMPLICIT_CONTEXT) -AfTrp |void |croak_nocontext|NULLOK const char* pat|... -AfTrp |OP* |die_nocontext |NULLOK const char* pat|... +AdfTrp |void |croak_nocontext|NULLOK const char* pat|... +AdfTrp |OP* |die_nocontext |NULLOK const char* pat|... AfTp |void |deb_nocontext |NN const char* pat|... -AfTp |char* |form_nocontext |NN const char* pat|... -AFTp |void |load_module_nocontext|U32 flags|NN SV* name|NULLOK SV* ver|... -AfTp |SV* |mess_nocontext |NN const char* pat|... -AfTp |void |warn_nocontext |NN const char* pat|... -AfTp |void |warner_nocontext|U32 err|NN const char* pat|... -AfTp |SV* |newSVpvf_nocontext|NN const char *const pat|... -AfTp |void |sv_catpvf_nocontext|NN SV *const sv|NN const char *const pat|... -AfTp |void |sv_setpvf_nocontext|NN SV *const sv|NN const char *const pat|... -AfTp |void |sv_catpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|... -AfTp |void |sv_setpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|... +AdfTp |char* |form_nocontext |NN const char* pat|... +AdFTp |void |load_module_nocontext|U32 flags|NN SV* name|NULLOK SV* ver|... +AdfTp |SV* |mess_nocontext |NN const char* pat|... +AdfTp |void |warn_nocontext |NN const char* pat|... +AdfTp |void |warner_nocontext|U32 err|NN const char* pat|... +AdfTp |SV* |newSVpvf_nocontext|NN const char *const pat|... +AdfTp |void |sv_catpvf_nocontext|NN SV *const sv|NN const char *const pat|... +AdfTp |void |sv_setpvf_nocontext|NN SV *const sv|NN const char *const pat|... +AdfTp |void |sv_catpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|... +AdfTp |void |sv_setpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|... AbfTpD |int |fprintf_nocontext|NN PerlIO *stream|NN const char *format|... AbfTpD |int |printf_nocontext|NN const char *format|... #endif @@ -630,8 +734,8 @@ Apd |void |cv_undef |NN CV* cv p |void |cv_undef_flags |NN CV* cv|U32 flags pd |void |cv_forget_slab |NULLOK CV *cv -Ap |void |cx_dump |NN PERL_CONTEXT* cx -AiMp |GV * |CvGV |NN CV *sv +Cp |void |cx_dump |NN PERL_CONTEXT* cx +AiMpd |GV * |CvGV |NN CV *sv AiMTp |I32 * |CvDEPTH |NN const CV * const sv Aphd |SV* |filter_add |NULLOK filter_t funcp|NULLOK SV* datasv Ap |void |filter_del |NN filter_t funcp @@ -644,7 +748,7 @@ pPR |U32* |get_opargs ApPR |PPADDR_t*|get_ppaddr : Used by CXINC, which appears to be in widespread use -ApR |I32 |cxinc +CpR |I32 |cxinc Afp |void |deb |NN const char* pat|... Ap |void |vdeb |NN const char* pat|NULLOK va_list* args Ap |void |debprofdump @@ -654,12 +758,13 @@ Ap |I32 |debstack Ap |I32 |debstackptrs pR |SV * |defelem_target |NN SV *sv|NULLOK MAGIC *mg -ATp |char* |delimcpy |NN char* to|NN const char* toend|NN const char* from \ - |NN const char* fromend|int delim|NN I32* retlen -Tp |char* |delimcpy_no_escape|NN char* to|NN const char* toend \ - |NN const char* from \ - |NN const char* fromend|int delim \ - |NN I32* retlen +ATpd |char* |delimcpy|NN char* to|NN const char* to_end \ + |NN const char* from|NN const char* from_end \ + |const int delim|NN I32* retlen +EXTpd |char* |delimcpy_no_escape|NN char* to|NN const char* to_end \ + |NN const char* from \ + |NN const char* from_end \ + |const int delim|NN I32* retlen : Used in op.c, perl.c px |void |delete_eval_scope Aprd |OP* |die_sv |NN SV *baseex @@ -683,7 +788,7 @@ p |bool|do_exec |NN const char* cmd #endif -#if defined(WIN32) || defined(__SYMBIAN32__) || defined(VMS) +#if defined(WIN32) || defined(VMS) Ap |int |do_aspawn |NULLOK SV* really|NN SV** mark|NN SV** sp Ap |int |do_spawn |NN char* cmd Ap |int |do_spawn_nowait|NN char* cmd @@ -821,8 +926,8 @@ Sd |OP* |traverse_op_tree|NN OP* top|NN OP* o #endif Afpd |char* |form |NN const char* pat|... -Ap |char* |vform |NN const char* pat|NULLOK va_list* args -Ap |void |free_tmps +Adp |char* |vform |NN const char* pat|NULLOK va_list* args +Cp |void |free_tmps #if defined(PERL_IN_OP_C) S |void |gen_constant_list|NULLOK OP* o #endif @@ -838,19 +943,19 @@ ApMb |GV* |gv_AVadd |NULLOK GV *gv ApMb |GV* |gv_HVadd |NULLOK GV *gv ApMb |GV* |gv_IOadd |NULLOK GV* gv -AmR |GV* |gv_autoload4 |NULLOK HV* stash|NN const char* name \ +AdmR |GV* |gv_autoload4 |NULLOK HV* stash|NN const char* name \ |STRLEN len|I32 method ApR |GV* |gv_autoload_sv |NULLOK HV* stash|NN SV* namesv|U32 flags ApR |GV* |gv_autoload_pv |NULLOK HV* stash|NN const char* namepv \ |U32 flags ApR |GV* |gv_autoload_pvn |NULLOK HV* stash|NN const char* name \ |STRLEN len|U32 flags -Ap |void |gv_check |NN HV* stash +Cp |void |gv_check |NN HV* stash AbpD |void |gv_efullname |NN SV* sv|NN const GV* gv ApMb |void |gv_efullname3 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix Ap |void |gv_efullname4 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain -Ap |GV* |gv_fetchfile |NN const char* name -Ap |GV* |gv_fetchfile_flags|NN const char *const name|const STRLEN len\ +Adp |GV* |gv_fetchfile |NN const char* name +Adp |GV* |gv_fetchfile_flags|NN const char *const name|const STRLEN len\ |const U32 flags Amd |GV* |gv_fetchmeth |NULLOK HV* stash|NN const char* name \ |STRLEN len|I32 level @@ -875,7 +980,7 @@ |U32 flags Apx |GV* |gv_fetchmethod_pvn_flags|NN HV* stash|NN const char* name \ |const STRLEN len|U32 flags -Ap |GV* |gv_fetchpv |NN const char *nambeg|I32 add|const svtype sv_type +Adp |GV* |gv_fetchpv |NN const char *nambeg|I32 flags|const svtype sv_type AbpD |void |gv_fullname |NN SV* sv|NN const GV* gv ApMb |void |gv_fullname3 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix Ap |void |gv_fullname4 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain @@ -895,11 +1000,11 @@ pe |GV * |gv_override |NN const char * const name \ |const STRLEN len Xxpd |void |gv_try_downgrade|NN GV* gv -p |void |gv_setref |NN SV *const dstr|NN SV *const sstr +p |void |gv_setref |NN SV *const dsv|NN SV *const ssv Apd |HV* |gv_stashpv |NN const char* name|I32 flags Apd |HV* |gv_stashpvn |NN const char* name|U32 namelen|I32 flags #if defined(PERL_IN_GV_C) || defined(PERL_IN_UNIVERSAL_C) -EpG |HV* |gv_stashsvpvn_cached |NULLOK SV *namesv|NULLOK const char* name|U32 namelen|I32 flags +EpGd |HV* |gv_stashsvpvn_cached|SV *namesv|const char* name|U32 namelen|I32 flags #endif #if defined(PERL_IN_GV_C) i |HV* |gv_stashpvn_internal |NN const char* name|U32 namelen|I32 flags @@ -919,10 +1024,10 @@ AbMdp |SV** |hv_fetch |NULLOK HV *hv|NN const char *key|I32 klen \ |I32 lval AbMdp |HE* |hv_fetch_ent |NULLOK HV *hv|NN SV *keysv|I32 lval|U32 hash -Ap |void* |hv_common |NULLOK HV *hv|NULLOK SV *keysv \ +Cp |void* |hv_common |NULLOK HV *hv|NULLOK SV *keysv \ |NULLOK const char* key|STRLEN klen|int flags \ |int action|NULLOK SV *val|U32 hash -Ap |void* |hv_common_key_len|NULLOK HV *hv|NN const char *key \ +Cp |void* |hv_common_key_len|NULLOK HV *hv|NN const char *key \ |I32 klen_i32|const int action|NULLOK SV *val \ |const U32 hash Apod |STRLEN |hv_fill |NN HV *const hv @@ -972,7 +1077,7 @@ AdiTp |I32 |foldEQ |NN const char* a|NN const char* b|I32 len AdmP |I32 |ibcmp_locale |NN const char* a|NN const char* b|I32 len AiTpd |I32 |foldEQ_locale |NN const char* a|NN const char* b|I32 len -Am |I32 |ibcmp_utf8 |NN const char *s1|NULLOK char **pe1|UV l1 \ +Adm |I32 |ibcmp_utf8 |NN const char *s1|NULLOK char **pe1|UV l1 \ |bool u1|NN const char *s2|NULLOK char **pe2 \ |UV l2|bool u2 Amd |I32 |foldEQ_utf8 |NN const char *s1|NULLOK char **pe1|UV l1 \ @@ -981,7 +1086,7 @@ Cp |I32 |foldEQ_utf8_flags |NN const char *s1|NULLOK char **pe1|UV l1 \ |bool u1|NN const char *s2|NULLOK char **pe2 \ |UV l2|bool u2|U32 flags -AiTp |I32 |foldEQ_latin1 |NN const char* a|NN const char* b|I32 len +CiTp |I32 |foldEQ_latin1 |NN const char* a|NN const char* b|I32 len #if defined(PERL_IN_DOIO_C) SR |bool |ingroup |Gid_t testgid|bool effective #endif @@ -1150,7 +1255,7 @@ #endif p |OP* |list |NULLOK OP* o AFpd |void |load_module|U32 flags|NN SV* name|NULLOK SV* ver|... -Ap |void |vload_module|U32 flags|NN SV* name|NULLOK SV* ver|NULLOK va_list* args +Adp |void |vload_module|U32 flags|NN SV* name|NULLOK SV* ver|NULLOK va_list* args : Used in perly.y p |OP* |localize |NN OP *o|I32 lex ApdR |I32 |looks_like_number|NN SV *const sv @@ -1220,6 +1325,7 @@ p |int |magic_setisa |NN SV* sv|NN MAGIC* mg p |int |magic_setlvref |NN SV* sv|NN MAGIC* mg p |int |magic_setmglob |NN SV* sv|NN MAGIC* mg +p |int |magic_freemglob|NN SV* sv|NN MAGIC* mg p |int |magic_setnkeys |NN SV* sv|NN MAGIC* mg p |int |magic_setpack |NN SV* sv|NN MAGIC* mg p |int |magic_setpos |NN SV* sv|NN MAGIC* mg @@ -1230,6 +1336,7 @@ p |int |magic_setuvar |NN SV* sv|NN MAGIC* mg p |int |magic_setvec |NN SV* sv|NN MAGIC* mg p |int |magic_setutf8 |NN SV* sv|NN MAGIC* mg +p |int |magic_freeutf8 |NN SV* sv|NN MAGIC* mg p |int |magic_set_all_env|NN SV* sv|NN MAGIC* mg p |U32 |magic_sizepack |NN SV* sv|NN MAGIC* mg p |int |magic_wipepack |NN SV* sv|NN MAGIC* mg @@ -1239,6 +1346,7 @@ Ap |I32 * |markstack_grow #if defined(USE_LOCALE_COLLATE) p |int |magic_setcollxfrm|NN SV* sv|NN MAGIC* mg +p |int |magic_freecollxfrm|NN SV* sv|NN MAGIC* mg pbD |char* |mem_collxfrm |NN const char* input_string|STRLEN len|NN STRLEN* xlen : Defined in locale.c, used only in sv.c # if defined(PERL_IN_LOCALE_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_MATHOMS_C) @@ -1274,7 +1382,7 @@ ApdT |void |mg_magical |NN SV* sv Apd |int |mg_set |NN SV* sv Ap |I32 |mg_size |NN SV* sv -ApT |void |mini_mktime |NN struct tm *ptm +AdpT |void |mini_mktime |NN struct tm *ptm Axmd |OP* |op_lvalue |NULLOK OP* o|I32 type poX |OP* |op_lvalue_flags|NULLOK OP* o|I32 type|U32 flags pd |void |finalize_optree |NN OP* o @@ -1287,8 +1395,8 @@ #endif : Used in op.c and pp_sys.c p |int |mode_from_discipline|NULLOK const char* s|STRLEN len -Ap |const char* |moreswitches |NN const char* s -Ap |NV |my_atof |NN const char *s +Cp |const char* |moreswitches |NN const char* s +Apd |NV |my_atof |NN const char *s ATdpR |NV |my_strtod |NN const char * const s|NULLOK char ** e Aprd |void |my_exit |U32 status Apr |void |my_failure_exit @@ -1296,7 +1404,7 @@ ATp |Pid_t |my_fork ATp |void |atfork_lock ATp |void |atfork_unlock -ApMb |I32 |my_lstat +m |I32 |my_lstat pX |I32 |my_lstat_flags |NULLOK const U32 flags #if ! defined(HAS_MEMRCHR) && (defined(PERL_CORE) || defined(PERL_EXT)) EeiT |void * |my_memrchr |NN const char * s|const char c|const STRLEN len @@ -1307,9 +1415,9 @@ #endif Ap |PerlIO*|my_popen_list |NN const char* mode|int n|NN SV ** args Apd |void |my_setenv |NULLOK const char* nam|NULLOK const char* val -ApMb |I32 |my_stat +m |I32 |my_stat pX |I32 |my_stat_flags |NULLOK const U32 flags -Afp |char * |my_strftime |NN const char *fmt|int sec|int min|int hour|int mday|int mon|int year|int wday|int yday|int isdst +Adfp |char * |my_strftime |NN const char *fmt|int sec|int min|int hour|int mday|int mon|int year|int wday|int yday|int isdst : Used in pp_ctl.c p |void |my_unexec CbDTPR |UV |NATIVE_TO_NEED |const UV enc|const UV ch @@ -1336,8 +1444,9 @@ ApdR |OP* |newRANGE |I32 flags|NN OP* left|NN OP* right ApdR |OP* |newSLICEOP |I32 flags|NULLOK OP* subscript|NULLOK OP* listop ApdR |OP* |newSTATEOP |I32 flags|NULLOK char* label|NULLOK OP* o -ApbM |CV* |newSUB |I32 floor|NULLOK OP* o|NULLOK OP* proto \ +AdpbM |CV* |newSUB |I32 floor|NULLOK OP* o|NULLOK OP* proto \ |NULLOK OP* block +ApdRx |OP* |newTRYCATCHOP |I32 flags|NN OP* tryblock|NN OP *catchvar|NN OP* catchblock pd |CV * |newXS_len_flags|NULLOK const char *name|STRLEN len \ |NN XSUBADDR_t subaddr\ |NULLOK const char *const filename \ @@ -1370,7 +1479,7 @@ #endif ApdR |OP* |newPMOP |I32 type|I32 flags ApdR |OP* |newPVOP |I32 type|I32 flags|NULLOK char* pv -ApR |SV* |newRV |NN SV *const sv +ApdR |SV* |newRV |NN SV *const sv ApdR |SV* |newRV_noinc |NN SV *const tmpRef ApdR |SV* |newSV |const STRLEN len ApR |OP* |newSVREF |NN OP* o @@ -1387,11 +1496,11 @@ ApdR |SV* |newSVpvn_share |NULLOK const char* s|I32 len|U32 hash ApdR |SV* |newSVpv_share |NULLOK const char* s|U32 hash AfpdR |SV* |newSVpvf |NN const char *const pat|... -ApR |SV* |vnewSVpvf |NN const char *const pat|NULLOK va_list *const args +ApRd |SV* |vnewSVpvf |NN const char *const pat|NULLOK va_list *const args Apd |SV* |newSVrv |NN SV *const rv|NULLOK const char *const classname ApMbdR |SV* |newSVsv |NULLOK SV *const old AmdR |SV* |newSVsv_nomg |NULLOK SV *const old -ApR |SV* |newSVsv_flags |NULLOK SV *const old|I32 flags +AdpR |SV* |newSVsv_flags |NULLOK SV *const old|I32 flags ApdR |SV* |newSV_type |const svtype type ApdR |OP* |newUNOP |I32 type|I32 flags|NULLOK OP* first ApdR |OP* |newUNOP_AUX |I32 type|I32 flags|NULLOK OP* first \ @@ -1462,10 +1571,10 @@ : Defined in doio.c, used only in pp_hot.c dopx |PerlIO*|start_glob |NN SV *tmpglob|NN IO *io -Ap |void |reentrant_size -Ap |void |reentrant_init -Ap |void |reentrant_free -AFTp |void* |reentrant_retry|NN const char *f|... +Cp |void |reentrant_size +Cp |void |reentrant_init +Cp |void |reentrant_free +CFTp |void* |reentrant_retry|NN const char *f|... : "Very" special - can't use the O flag for this one: : (The rename from perl_atexit to Perl_call_atexit was in 864dbfa3ca8032ef) @@ -1474,7 +1583,7 @@ ApdO |I32 |call_method |NN const char* methname|I32 flags ApdO |I32 |call_pv |NN const char* sub_name|I32 flags ApdO |I32 |call_sv |NN SV* sv|volatile I32 flags -Ap |void |despatch_signals +Cp |void |despatch_signals Ap |OP * |doref |NN OP *o|I32 type|bool set_op_ref ApdO |SV* |eval_pv |NN const char* p|I32 croak_on_error ApdO |I32 |eval_sv |NN SV* sv|I32 flags @@ -1501,7 +1610,7 @@ ApxT |void |thread_locale_init ApxT |void |thread_locale_term ApdO |void |require_pv |NN const char* pv -AbpdM |void |pack_cat |NN SV *cat|NN const char *pat|NN const char *patend \ +AbpdD |void |pack_cat |NN SV *cat|NN const char *pat|NN const char *patend \ |NN SV **beglist|NN SV **endlist|NN SV ***next_in_list|U32 flags Apd |void |packlist |NN SV *cat|NN const char *pat|NN const char *patend|NN SV **beglist|NN SV **endlist #if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C) @@ -1517,7 +1626,7 @@ Ap |void |pop_scope Ap |void |push_scope #if defined(PERL_IN_PERLY_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_TOKE_C) -ApMb |OP* |ref |NULLOK OP* o|I32 type +pMb |OP* |ref |NULLOK OP* o|I32 type #endif #if defined(PERL_IN_OP_C) S |OP* |refkids |NULLOK OP* o|I32 type @@ -1559,17 +1668,17 @@ Ap |I32 |save_alloc |I32 size|I32 pad Apdh |void |save_aptr |NN AV** aptr Apdh |AV* |save_ary |NN GV* gv -Ap |void |save_bool |NN bool* boolp -Ap |void |save_clearsv |NN SV** svp -Ap |void |save_delete |NN HV *hv|NN char *key|I32 klen +Cp |void |save_bool |NN bool* boolp +Cp |void |save_clearsv |NN SV** svp +Cp |void |save_delete |NN HV *hv|NN char *key|I32 klen Ap |void |save_hdelete |NN HV *hv|NN SV *keysv Ap |void |save_adelete |NN AV *av|SSize_t key -Ap |void |save_destructor|DESTRUCTORFUNC_NOCONTEXT_t f|NN void* p -Ap |void |save_destructor_x|DESTRUCTORFUNC_t f|NULLOK void* p -ApMb |void |save_freesv |NULLOK SV* sv +Cp |void |save_destructor|DESTRUCTORFUNC_NOCONTEXT_t f|NN void* p +Cp |void |save_destructor_x|DESTRUCTORFUNC_t f|NULLOK void* p +CpMb |void |save_freesv |NULLOK SV* sv : Used in SAVEFREOP(), used in op.c, pp_ctl.c -ApMb |void |save_freeop |NULLOK OP* o -ApMb |void |save_freepv |NULLOK char* pv +CpMb |void |save_freeop |NULLOK OP* o +CpMb |void |save_freepv |NULLOK char* pv Ap |void |save_generic_svref|NN SV** sptr Ap |void |save_generic_pvref|NN char** str Ap |void |save_shared_pvref|NN char** str @@ -1579,24 +1688,24 @@ Am |void |save_helem |NN HV *hv|NN SV *key|NN SV **sptr Ap |void |save_helem_flags|NN HV *hv|NN SV *key|NN SV **sptr|const U32 flags Apdh |void |save_hptr |NN HV** hptr -Ap |void |save_I16 |NN I16* intp -Ap |void |save_I32 |NN I32* intp -Ap |void |save_I8 |NN I8* bytep -Ap |void |save_int |NN int* intp +Cp |void |save_I16 |NN I16* intp +Cp |void |save_I32 |NN I32* intp +Cp |void |save_I8 |NN I8* bytep +Cp |void |save_int |NN int* intp Apdh |void |save_item |NN SV* item -Ap |void |save_iv |NN IV *ivp +Cp |void |save_iv |NN IV *ivp AbpDdh |void |save_list |NN SV** sarg|I32 maxsarg -AbpD |void |save_long |NN long* longp -ApMb |void |save_mortalizesv|NN SV* sv +CbpD |void |save_long |NN long* longp +CpMb |void |save_mortalizesv|NN SV* sv AbpD |void |save_nogv |NN GV* gv : Used in SAVEFREOP(), used in gv.c, op.c, perl.c, pp_ctl.c, pp_sort.c ApMb |void |save_op Apdh |SV* |save_scalar |NN GV* gv -Ap |void |save_pptr |NN char** pptr +Cp |void |save_pptr |NN char** pptr Ap |void |save_vptr |NN void *ptr -Ap |void |save_re_context +Cp |void |save_re_context Ap |void |save_padsv_and_mortalize|PADOFFSET off -Ap |void |save_sptr |NN SV** sptr +Cp |void |save_sptr |NN SV** sptr Xp |void |save_strlen |NN STRLEN* ptr Apdh |SV* |save_svref |NN SV** sptr Axpo |void |savetmps @@ -1624,7 +1733,7 @@ p |OP* |scalarvoid |NN OP* o Apd |NV |scan_bin |NN const char* start|STRLEN len|NN STRLEN* retlen Apd |NV |scan_hex |NN const char* start|STRLEN len|NN STRLEN* retlen -Ap |char* |scan_num |NN const char* s|NN YYSTYPE *lvalp +Cp |char* |scan_num |NN const char* s|NN YYSTYPE *lvalp Apd |NV |scan_oct |NN const char* start|STRLEN len|NN STRLEN* retlen Axpd |OP* |op_scope |NULLOK OP* o : Only used by perl.c/miniperl.c, but defined in caretx.c @@ -1634,51 +1743,51 @@ #ifdef PERL_USE_3ARG_SIGHANDLER : Used in perl.c Tp |Signal_t |sighandler |int sig|NULLOK Siginfo_t *info|NULLOK void *uap -ATp |Signal_t |csighandler |int sig|NULLOK Siginfo_t *info|NULLOK void *uap +CTp |Signal_t |csighandler |int sig|NULLOK Siginfo_t *info|NULLOK void *uap #else Tp |Signal_t |sighandler |int sig -ATp |Signal_t |csighandler |int sig +CTp |Signal_t |csighandler |int sig #endif Tp |Signal_t |sighandler1 |int sig -ATp |Signal_t |csighandler1 |int sig +CTp |Signal_t |csighandler1 |int sig Tp |Signal_t |sighandler3 |int sig|NULLOK Siginfo_t *info|NULLOK void *uap -ATp |Signal_t |csighandler3 |int sig|NULLOK Siginfo_t *info|NULLOK void *uap -ATp |Signal_t |perly_sighandler |int sig|NULLOK Siginfo_t *info|NULLOK void *uap|bool safe -Ap |SV** |stack_grow |NN SV** sp|NN SV** p|SSize_t n +CTp |Signal_t |csighandler3 |int sig|NULLOK Siginfo_t *info|NULLOK void *uap +CTp |Signal_t |perly_sighandler |int sig|NULLOK Siginfo_t *info|NULLOK void *uap|bool safe +Cp |SV** |stack_grow |NN SV** sp|NN SV** p|SSize_t n Ap |I32 |start_subparse |I32 is_format|U32 flags Xp |void |init_named_cv |NN CV *cv|NN OP *nameop : Used in pp_ctl.c p |void |sub_crush_depth|NN CV* cv -ApbMd |bool |sv_2bool |NN SV *const sv -Apd |bool |sv_2bool_flags |NN SV *sv|I32 flags +CpbMd |bool |sv_2bool |NN SV *const sv +Cpd |bool |sv_2bool_flags |NN SV *sv|I32 flags Apd |CV* |sv_2cv |NULLOK SV* sv|NN HV **const st|NN GV **const gvp \ |const I32 lref Apd |IO* |sv_2io |NN SV *const sv #if defined(PERL_IN_SV_C) S |bool |glob_2number |NN GV* const gv #endif -ApMb |IV |sv_2iv |NN SV *sv +CpMb |IV |sv_2iv |NN SV *sv Apd |IV |sv_2iv_flags |NN SV *const sv|const I32 flags Apd |SV* |sv_2mortal |NULLOK SV *const sv Apd |NV |sv_2nv_flags |NN SV *const sv|const I32 flags : Used in pp.c, pp_hot.c, sv.c pxd |SV* |sv_2num |NN SV *const sv -ApMb |char* |sv_2pv |NN SV *sv|NULLOK STRLEN *lp -Apd |char* |sv_2pv_flags |NN SV *const sv|NULLOK STRLEN *const lp|const I32 flags +CpMb |char* |sv_2pv |NN SV *sv|NULLOK STRLEN *lp +Cpd |char* |sv_2pv_flags |NN SV *const sv|NULLOK STRLEN *const lp|const U32 flags ApdMb |char* |sv_2pvutf8 |NN SV *sv|NULLOK STRLEN *const lp Ap |char* |sv_2pvutf8_flags |NN SV *sv|NULLOK STRLEN *const lp|const U32 flags ApdMb |char* |sv_2pvbyte |NN SV *sv|NULLOK STRLEN *const lp Ap |char* |sv_2pvbyte_flags |NN SV *sv|NULLOK STRLEN *const lp|const U32 flags AbpD |char* |sv_pvn_nomg |NN SV* sv|NULLOK STRLEN* lp -ApMb |UV |sv_2uv |NN SV *sv +CpMb |UV |sv_2uv |NN SV *sv Apd |UV |sv_2uv_flags |NN SV *const sv|const I32 flags -AbpdD |IV |sv_iv |NN SV* sv -AbpdD |UV |sv_uv |NN SV* sv -AbpdD |NV |sv_nv |NN SV* sv -AbpdD |char* |sv_pvn |NN SV *sv|NN STRLEN *lp -AbpdD |char* |sv_pvutf8n |NN SV *sv|NN STRLEN *lp -AbpdD |char* |sv_pvbyten |NN SV *sv|NN STRLEN *lp -Apd |I32 |sv_true |NULLOK SV *const sv +CbpdD |IV |sv_iv |NN SV* sv +CbpdD |UV |sv_uv |NN SV* sv +CbpdD |NV |sv_nv |NN SV* sv +CbpdD |char* |sv_pvn |NN SV *sv|NN STRLEN *lp +CbpdD |char* |sv_pvutf8n |NN SV *sv|NN STRLEN *lp +CbpdD |char* |sv_pvbyten |NN SV *sv|NN STRLEN *lp +Cpd |I32 |sv_true |NULLOK SV *const sv #if defined(PERL_IN_SV_C) Sd |void |sv_add_arena |NN char *const ptr|const U32 size \ |const U32 flags @@ -1694,9 +1803,9 @@ Afpd |void |sv_catpvf |NN SV *const sv|NN const char *const pat|... Apd |void |sv_vcatpvf |NN SV *const sv|NN const char *const pat \ |NULLOK va_list *const args -Apd |void |sv_catpv |NN SV *const sv|NULLOK const char* ptr +Apd |void |sv_catpv |NN SV *const dsv|NULLOK const char* sstr ApMdb |void |sv_catpvn |NN SV *dsv|NN const char *sstr|STRLEN len -ApMdb |void |sv_catsv |NN SV *dstr|NULLOK SV *sstr +ApMdb |void |sv_catsv |NN SV *dsv|NULLOK SV *sstr Apd |void |sv_chop |NN SV *const sv|NULLOK const char *const ptr : Used only in perl.c pd |I32 |sv_clean_all @@ -1738,7 +1847,7 @@ : Used only in perl.c pd |void |sv_free_arenas Apd |char* |sv_gets |NN SV *const sv|NN PerlIO *const fp|I32 append -Apd |char* |sv_grow |NN SV *const sv|STRLEN newlen +Cpd |char* |sv_grow |NN SV *const sv|STRLEN newlen Apd |void |sv_inc |NULLOK SV *const sv Apd |void |sv_inc_nomg |NULLOK SV *const sv ApMdb |void |sv_insert |NN SV *const bigstr|const STRLEN offset \ @@ -1762,7 +1871,7 @@ ApdbMR |SV* |sv_mortalcopy |NULLOK SV *const oldsv ApdR |SV* |sv_mortalcopy_flags|NULLOK SV *const oldsv|U32 flags ApdR |SV* |sv_newmortal -Apd |SV* |sv_newref |NULLOK SV *const sv +Cpd |SV* |sv_newref |NULLOK SV *const sv Ap |char* |sv_peek |NULLOK SV* sv Apd |void |sv_pos_u2b |NULLOK SV *const sv|NN I32 *const offsetp|NULLOK I32 *const lenp Apd |STRLEN |sv_pos_u2b_flags|NN SV *const sv|STRLEN uoffset \ @@ -1770,9 +1879,9 @@ Apd |void |sv_pos_b2u |NULLOK SV *const sv|NN I32 *const offsetp Apd |STRLEN |sv_pos_b2u_flags|NN SV *const sv|STRLEN const offset \ |U32 flags -ApMdb |char* |sv_pvn_force |NN SV* sv|NULLOK STRLEN* lp -Apd |char* |sv_pvutf8n_force|NN SV *const sv|NULLOK STRLEN *const lp -Apd |char* |sv_pvbyten_force|NN SV *const sv|NULLOK STRLEN *const lp +CpMdb |char* |sv_pvn_force |NN SV* sv|NULLOK STRLEN* lp +Cpd |char* |sv_pvutf8n_force|NN SV *const sv|NULLOK STRLEN *const lp +Cpd |char* |sv_pvbyten_force|NN SV *const sv|NULLOK STRLEN *const lp Apd |char* |sv_recode_to_utf8 |NN SV* sv|NN SV *encoding Apd |bool |sv_cat_decode |NN SV* dsv|NN SV *encoding|NN SV *ssv|NN int *offset \ |NN char* tstr|int tlen @@ -1800,14 +1909,14 @@ Apd |void |sv_setpvn |NN SV *const sv|NULLOK const char *const ptr|const STRLEN len Apd |char *|sv_setpv_bufsize|NN SV *const sv|const STRLEN cur|const STRLEN len Xp |void |sv_sethek |NN SV *const sv|NULLOK const HEK *const hek -ApMdb |void |sv_setsv |NN SV *dstr|NULLOK SV *sstr -ApMdb |void |sv_taint |NN SV* sv -ApdR |bool |sv_tainted |NN SV *const sv +ApMdb |void |sv_setsv |NN SV *dsv|NULLOK SV *ssv +CpMdb |void |sv_taint |NN SV* sv +CpdR |bool |sv_tainted |NN SV *const sv Apd |int |sv_unmagic |NN SV *const sv|const int type Apd |int |sv_unmagicext |NN SV *const sv|const int type|NULLOK MGVTBL *vtbl ApdMb |void |sv_unref |NN SV* sv Apd |void |sv_unref_flags |NN SV *const ref|const U32 flags -Apd |void |sv_untaint |NN SV *const sv +Cpd |void |sv_untaint |NN SV *const sv Apd |void |sv_upgrade |NN SV *const sv|svtype new_type ApdMb |void |sv_usepvn |NN SV* sv|NULLOK char* ptr|STRLEN len Apd |void |sv_usepvn_flags|NN SV *const sv|NULLOK char* ptr|const STRLEN len\ @@ -1821,22 +1930,22 @@ Apd |void |sv_vsetpvfn |NN SV *const sv|NN const char *const pat|const STRLEN patlen \ |NULLOK va_list *const args|NULLOK SV **const svargs \ |const Size_t sv_count|NULLOK bool *const maybe_tainted -ApR |NV |str_to_version |NN SV *sv +CpR |NV |str_to_version |NN SV *sv Ap |void |regdump |NN const regexp* r CiTop |struct regexp *|ReANY |NN const REGEXP * const re -Ap |I32 |pregexec |NN REGEXP * const prog|NN char* stringarg \ +Apdh |I32 |pregexec |NN REGEXP * const prog|NN char* stringarg \ |NN char* strend|NN char* strbeg \ |SSize_t minend |NN SV* screamer|U32 nosave Ap |void |pregfree |NULLOK REGEXP* r -Ap |void |pregfree2 |NN REGEXP *rx +Cp |void |pregfree2 |NN REGEXP *rx : FIXME - is anything in re using this now? EXp |REGEXP*|reg_temp_copy |NULLOK REGEXP* dsv|NN REGEXP* ssv -Ap |void |regfree_internal|NN REGEXP *const rx +Cp |void |regfree_internal|NN REGEXP *const rx #if defined(USE_ITHREADS) -Ap |void* |regdupe_internal|NN REGEXP * const r|NN CLONE_PARAMS* param +Cp |void* |regdupe_internal|NN REGEXP * const r|NN CLONE_PARAMS* param #endif EXp |regexp_engine const *|current_re_engine -Ap |REGEXP*|pregcomp |NN SV * const pattern|const U32 flags +Apdh |REGEXP*|pregcomp |NN SV * const pattern|const U32 flags p |REGEXP*|re_op_compile |NULLOK SV ** const patternp \ |int pat_count|NULLOK OP *expr \ |NN const regexp_engine* eng \ @@ -1852,21 +1961,21 @@ |const U32 flags \ |NULLOK re_scream_pos_data *data Cp |SV* |re_intuit_string|NN REGEXP *const r -Ap |I32 |regexec_flags |NN REGEXP *const rx|NN char *stringarg \ +Cp |I32 |regexec_flags |NN REGEXP *const rx|NN char *stringarg \ |NN char *strend|NN char *strbeg \ |SSize_t minend|NN SV *sv \ |NULLOK void *data|U32 flags -ApR |regnode*|regnext |NULLOK regnode* p +CpR |regnode*|regnext |NULLOK regnode* p EXp |SV*|reg_named_buff |NN REGEXP * const rx|NULLOK SV * const key \ |NULLOK SV * const value|const U32 flags EXp |SV*|reg_named_buff_iter |NN REGEXP * const rx|NULLOK const SV * const lastkey \ |const U32 flags -Ap |SV*|reg_named_buff_fetch |NN REGEXP * const rx|NN SV * const namesv|const U32 flags -Ap |bool|reg_named_buff_exists |NN REGEXP * const rx|NN SV * const key|const U32 flags -Ap |SV*|reg_named_buff_firstkey |NN REGEXP * const rx|const U32 flags -Ap |SV*|reg_named_buff_nextkey |NN REGEXP * const rx|const U32 flags -Ap |SV*|reg_named_buff_scalar |NN REGEXP * const rx|const U32 flags -Ap |SV*|reg_named_buff_all |NN REGEXP * const rx|const U32 flags +Cp |SV*|reg_named_buff_fetch |NN REGEXP * const rx|NN SV * const namesv|const U32 flags +Cp |bool|reg_named_buff_exists |NN REGEXP * const rx|NN SV * const key|const U32 flags +Cp |SV*|reg_named_buff_firstkey |NN REGEXP * const rx|const U32 flags +Cp |SV*|reg_named_buff_nextkey |NN REGEXP * const rx|const U32 flags +Cp |SV*|reg_named_buff_scalar |NN REGEXP * const rx|const U32 flags +Cp |SV*|reg_named_buff_all |NN REGEXP * const rx|const U32 flags : FIXME - is anything in re using this now? EXp |void|reg_numbered_buff_fetch|NN REGEXP * const rx|const I32 paren|NULLOK SV * const sv @@ -1886,7 +1995,6 @@ EiR |SV* |invlist_contents|NN SV* const invlist \ |const bool traditional_style EixRT |UV |invlist_lowest|NN SV* const invlist -ESRT |bool |new_regcurly |NN const char *s|NN const char *e ERS |SV* |make_exactf_invlist |NN RExC_state_t *pRExC_state \ |NN regnode *node ES |regnode_offset|reg |NN RExC_state_t *pRExC_state \ @@ -1977,6 +2085,8 @@ # endif ES |void|parse_lparen_question_flags|NN RExC_state_t *pRExC_state ES |regnode_offset|reg_node|NN RExC_state_t *pRExC_state|U8 op +ES |U32 |get_quantifier_value|NN RExC_state_t *pRExC_state \ + |NN const char * start|NN const char * end ES |regnode_offset|regpiece|NN RExC_state_t *pRExC_state \ |NN I32 *flagp|U32 depth ES |bool |grok_bslash_N |NN RExC_state_t *pRExC_state \ @@ -2238,7 +2348,7 @@ EpX |SV* |invlist_clone |NN SV* const invlist|NULLOK SV* newlist #endif #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) -EiRT |bool |regcurly |NN const char *s +EXpRT |bool |regcurly |NN const char *s|NN const char *e|NULLOK const char * result[5] #endif #if defined(PERL_IN_REGEXEC_C) ERS |bool |isFOO_utf8_lc |const U8 classnum|NN const U8* character|NN const U8* e @@ -2333,8 +2443,8 @@ EFp |int |re_exec_indentf|NN const char *fmt|U32 depth|... # endif #endif -#if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C) -EXRp |bool |isFOO_lc |const U8 classnum|const U8 character +#if defined(PERL_IN_REGEXEC_C) +ESR |bool |isFOO_lc |const U8 classnum|const U8 character #endif Ap |void |taint_env @@ -2392,7 +2502,7 @@ |NN STRLEN *lenp #endif #if defined(UNLINK_ALL_VERSIONS) -Ap |I32 |unlnk |NN const char* f +Cp |I32 |unlnk |NN const char* f #endif AbpdD |SSize_t|unpack_str |NN const char *pat|NN const char *patend|NN const char *s \ |NULLOK const char *strbeg|NN const char *strend|NULLOK char **new_s \ @@ -2419,7 +2529,7 @@ Apd |int |bytes_cmp_utf8 |NN const U8 *b|STRLEN blen|NN const U8 *u \ |STRLEN ulen AMxdp |U8* |bytes_from_utf8|NN const U8 *s|NN STRLEN *lenp|NN bool *is_utf8p -AxTp |U8* |bytes_from_utf8_loc|NN const U8 *s \ +CxTdp |U8* |bytes_from_utf8_loc|NN const U8 *s \ |NN STRLEN *lenp \ |NN bool *is_utf8p \ |NULLOK const U8 ** first_unconverted @@ -2441,7 +2551,7 @@ |NULLOK STRLEN *retlen \ |const U32 flags \ |NULLOK U32 * errors -AxTdip |UV |utf8n_to_uvchr_msgs|NN const U8 *s \ +ATdip |UV |utf8n_to_uvchr_msgs|NN const U8 *s \ |STRLEN curlen \ |NULLOK STRLEN *retlen \ |const U32 flags \ @@ -2460,7 +2570,7 @@ Adm |U8* |uvchr_to_utf8 |NN U8 *d|UV uv Cp |U8* |uvuni_to_utf8 |NN U8 *d|UV uv Adm |U8* |uvchr_to_utf8_flags |NN U8 *d|UV uv|UV flags -Admx |U8* |uvchr_to_utf8_flags_msgs|NN U8 *d|UV uv|UV flags|NULLOK HV ** msgs +Adm |U8* |uvchr_to_utf8_flags_msgs|NN U8 *d|UV uv|UV flags|NULLOK HV ** msgs CMpd |U8* |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|const UV flags Cp |U8* |uvoffuni_to_utf8_flags_msgs|NN U8 *d|UV uv|const UV flags|NULLOK HV** msgs CdpbD |U8* |uvuni_to_utf8_flags |NN U8 *d|UV uv|UV flags @@ -2496,10 +2606,10 @@ Apd |void |warn_sv |NN SV *baseex Afpd |void |warn |NN const char* pat|... Apd |void |vwarn |NN const char* pat|NULLOK va_list* args -Afp |void |warner |U32 err|NN const char* pat|... -Afp |void |ck_warner |U32 err|NN const char* pat|... -Afp |void |ck_warner_d |U32 err|NN const char* pat|... -Ap |void |vwarner |U32 err|NN const char* pat|NULLOK va_list* args +Adfp |void |warner |U32 err|NN const char* pat|... +Adfp |void |ck_warner |U32 err|NN const char* pat|... +Adfp |void |ck_warner_d |U32 err|NN const char* pat|... +Adp |void |vwarner |U32 err|NN const char* pat|NULLOK va_list* args #ifdef USE_C_BACKTRACE pd |Perl_c_backtrace*|get_c_backtrace|int max_depth|int skip dm |void |free_c_backtrace|NN Perl_c_backtrace* bt @@ -2508,10 +2618,10 @@ #endif : FIXME p |void |watch |NN char** addr -Am |I32 |whichsig |NN const char* sig -Ap |I32 |whichsig_sv |NN SV* sigsv -Ap |I32 |whichsig_pv |NN const char* sig -Ap |I32 |whichsig_pvn |NN const char* sig|STRLEN len +Amd |I32 |whichsig |NN const char* sig +Apd |I32 |whichsig_sv |NN SV* sigsv +Apd |I32 |whichsig_pv |NN const char* sig +Apd |I32 |whichsig_pvn |NN const char* sig|STRLEN len : used to check for NULs in pathnames and other names AiRdp |bool |is_safe_syscall|NN const char *pv|STRLEN len|NN const char *what|NN const char *op_name #ifdef PERL_CORE @@ -2543,24 +2653,19 @@ Ap |void |dump_mstats |NN const char* s Ap |int |get_mstats |NN perl_mstats_t *buf|int buflen|int level #endif -ATpa |Malloc_t|safesysmalloc |MEM_SIZE nbytes -ATpa |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size -ATpR |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes -ATp |Free_t |safesysfree |Malloc_t where +ATdpa |Malloc_t|safesysmalloc |MEM_SIZE nbytes +ATdpa |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size +ATdpR |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes +AdTp |Free_t |safesysfree |Malloc_t where CrTp |void |croak_memory_wrap -#if defined(PERL_GLOBAL_STRUCT) -Ap |struct perl_vars *|GetVars -Ap |struct perl_vars*|init_global_struct -Ap |void |free_global_struct|NN struct perl_vars *plvarsp -#endif -Ap |int |runops_standard -Ap |int |runops_debug +Cp |int |runops_standard +Cp |int |runops_debug Afpd |void |sv_catpvf_mg |NN SV *const sv|NN const char *const pat|... Apd |void |sv_vcatpvf_mg |NN SV *const sv|NN const char *const pat \ |NULLOK va_list *const args -Apd |void |sv_catpv_mg |NN SV *const sv|NULLOK const char *const ptr -ApdbM |void |sv_catpvn_mg |NN SV *sv|NN const char *ptr|STRLEN len -ApdbM |void |sv_catsv_mg |NN SV *dsv|NULLOK SV *ssv +Apd |void |sv_catpv_mg |NN SV *const dsv|NULLOK const char *const sstr +ApdbM |void |sv_catpvn_mg |NN SV *dsv|NN const char *sstr|STRLEN len +ApdbM |void |sv_catsv_mg |NN SV *dsv|NULLOK SV *sstr Afpd |void |sv_setpvf_mg |NN SV *const sv|NN const char *const pat|... Apd |void |sv_vsetpvf_mg |NN SV *const sv|NN const char *const pat \ |NULLOK va_list *const args @@ -2570,7 +2675,7 @@ Apd |void |sv_setnv_mg |NN SV *const sv|const NV num Apd |void |sv_setpv_mg |NN SV *const sv|NULLOK const char *const ptr Apd |void |sv_setpvn_mg |NN SV *const sv|NN const char *const ptr|const STRLEN len -Apd |void |sv_setsv_mg |NN SV *const dstr|NULLOK SV *const sstr +Apd |void |sv_setsv_mg |NN SV *const dsv|NULLOK SV *const ssv ApdbM |void |sv_usepvn_mg |NN SV *sv|NULLOK char *ptr|STRLEN len ApR |MGVTBL*|get_vtbl |int vtbl_id Apd |char* |pv_display |NN SV *dsv|NN const char *pv|STRLEN cur|STRLEN len \ @@ -2584,29 +2689,29 @@ |NULLOK char const * const start_color\ |NULLOK char const * const end_color\ |const U32 flags -Afp |void |dump_indent |I32 level|NN PerlIO *file|NN const char* pat|... -Ap |void |dump_vindent |I32 level|NN PerlIO *file|NN const char* pat \ +Cfp |void |dump_indent |I32 level|NN PerlIO *file|NN const char* pat|... +Cp |void |dump_vindent |I32 level|NN PerlIO *file|NN const char* pat \ |NULLOK va_list *args -Ap |void |do_gv_dump |I32 level|NN PerlIO *file|NN const char *name\ +Cp |void |do_gv_dump |I32 level|NN PerlIO *file|NN const char *name\ |NULLOK GV *sv -Ap |void |do_gvgv_dump |I32 level|NN PerlIO *file|NN const char *name\ +Cp |void |do_gvgv_dump |I32 level|NN PerlIO *file|NN const char *name\ |NULLOK GV *sv -Ap |void |do_hv_dump |I32 level|NN PerlIO *file|NN const char *name\ +Cp |void |do_hv_dump |I32 level|NN PerlIO *file|NN const char *name\ |NULLOK HV *sv -Ap |void |do_magic_dump |I32 level|NN PerlIO *file|NULLOK const MAGIC *mg|I32 nest \ +Cp |void |do_magic_dump |I32 level|NN PerlIO *file|NULLOK const MAGIC *mg|I32 nest \ |I32 maxnest|bool dumpops|STRLEN pvlim -Ap |void |do_op_dump |I32 level|NN PerlIO *file|NULLOK const OP *o -Ap |void |do_pmop_dump |I32 level|NN PerlIO *file|NULLOK const PMOP *pm -Ap |void |do_sv_dump |I32 level|NN PerlIO *file|NULLOK SV *sv|I32 nest \ +Cp |void |do_op_dump |I32 level|NN PerlIO *file|NULLOK const OP *o +Cp |void |do_pmop_dump |I32 level|NN PerlIO *file|NULLOK const PMOP *pm +Cp |void |do_sv_dump |I32 level|NN PerlIO *file|NULLOK SV *sv|I32 nest \ |I32 maxnest|bool dumpops|STRLEN pvlim Ap |void |magic_dump |NULLOK const MAGIC *mg -Ap |void |reginitcolors -ApdRMb |char* |sv_2pv_nolen |NN SV* sv -ApdRMb |char* |sv_2pvutf8_nolen|NN SV* sv -ApdRMb |char* |sv_2pvbyte_nolen|NN SV* sv -ApMdbR |char* |sv_pv |NN SV *sv -ApMdbR |char* |sv_pvutf8 |NN SV *sv -ApMdbR |char* |sv_pvbyte |NN SV *sv +Cp |void |reginitcolors +CpdRMb |char* |sv_2pv_nolen |NN SV* sv +CpdRMb |char* |sv_2pvutf8_nolen|NN SV* sv +CpdRMb |char* |sv_2pvbyte_nolen|NN SV* sv +CpMdbR |char* |sv_pv |NN SV *sv +CpMdbR |char* |sv_pvutf8 |NN SV *sv +CpMdbR |char* |sv_pvbyte |NN SV *sv ApMdb |STRLEN |sv_utf8_upgrade|NN SV *sv Amd |STRLEN |sv_utf8_upgrade_nomg|NN SV *sv ApdMb |bool |sv_utf8_downgrade|NN SV *const sv|const bool fail_ok @@ -2627,10 +2732,14 @@ AiMdp |void |SvREFCNT_dec_NN|NN SV *sv AiTp |void |SvAMAGIC_on |NN SV *sv AiTp |void |SvAMAGIC_off |NN SV *sv +Aipd |bool |SvTRUE |NULLOK SV *sv +Aipd |bool |SvTRUE_nomg |NULLOK SV *sv +Aipd |bool |SvTRUE_NN |NN SV *sv +Cip |bool |SvTRUE_common |NN SV *sv|const bool sv_2bool_is_fallback : This is indirectly referenced by globals.c. This is somewhat annoying. p |int |magic_killbackrefs|NN SV *sv|NN MAGIC *mg Ap |OP* |newANONATTRSUB |I32 floor|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block -Am |CV* |newATTRSUB |I32 floor|NULLOK OP *o|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block +Adm |CV* |newATTRSUB |I32 floor|NULLOK OP *o|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block pdX |CV* |newATTRSUB_x |I32 floor|NULLOK OP *o|NULLOK OP *proto \ |NULLOK OP *attrs|NULLOK OP *block \ |bool o_is_gv @@ -2640,13 +2749,13 @@ : Used in perly.y p |OP * |my_attrs |NN OP *o|NULLOK OP *attrs #if defined(USE_ITHREADS) -ApR |PERL_CONTEXT*|cx_dup |NULLOK PERL_CONTEXT* cx|I32 ix|I32 max|NN CLONE_PARAMS* param +CpR |PERL_CONTEXT*|cx_dup |NULLOK PERL_CONTEXT* cx|I32 ix|I32 max|NN CLONE_PARAMS* param ApR |PERL_SI*|si_dup |NULLOK PERL_SI* si|NN CLONE_PARAMS* param ApR |ANY* |ss_dup |NN PerlInterpreter* proto_perl|NN CLONE_PARAMS* param ApR |void* |any_dup |NULLOK void* v|NN const PerlInterpreter* proto_perl ApR |HE* |he_dup |NULLOK const HE* e|bool shared|NN CLONE_PARAMS* param ApR |HEK* |hek_dup |NULLOK HEK* e|NN CLONE_PARAMS* param -Ap |void |re_dup_guts |NN const REGEXP *sstr|NN REGEXP *dstr \ +Adp |void |re_dup_guts |NN const REGEXP *sstr|NN REGEXP *dstr \ |NN CLONE_PARAMS* param Ap |PerlIO*|fp_dup |NULLOK PerlIO *const fp|const char type|NN CLONE_PARAMS *const param ApR |DIR* |dirp_dup |NULLOK DIR *const dp|NN CLONE_PARAMS *const param @@ -2655,13 +2764,13 @@ #if defined(PERL_IN_SV_C) S |SV ** |sv_dup_inc_multiple|NN SV *const *source|NN SV **dest \ |SSize_t items|NN CLONE_PARAMS *const param -SR |SV* |sv_dup_common |NN const SV *const sstr \ +SR |SV* |sv_dup_common |NN const SV *const ssv \ |NN CLONE_PARAMS *const param #endif -ApR |SV* |sv_dup |NULLOK const SV *const sstr|NN CLONE_PARAMS *const param -ApR |SV* |sv_dup_inc |NULLOK const SV *const sstr \ +ApR |SV* |sv_dup |NULLOK const SV *const ssv|NN CLONE_PARAMS *const param +ApR |SV* |sv_dup_inc |NULLOK const SV *const ssv \ |NN CLONE_PARAMS *const param -Ap |void |rvpv_dup |NN SV *const dstr|NN const SV *const sstr|NN CLONE_PARAMS *const param +Ap |void |rvpv_dup |NN SV *const dsv|NN const SV *const ssv|NN CLONE_PARAMS *const param Ap |yy_parser*|parser_dup |NULLOK const yy_parser *const proto|NN CLONE_PARAMS *const param #endif ApR |PTR_TBL_t*|ptr_table_new @@ -2792,6 +2901,7 @@ S |void |clear_special_blocks |NN const char *const fullname\ |NN GV *const gv|NN CV *const cv #endif +p |void |no_bareword_filehandle|NN const char *fhname XpR |void* |Slab_Alloc |size_t sz Xp |void |Slab_Free |NN void *op #if defined(PERL_DEBUG_READONLY_OPS) @@ -3002,7 +3112,7 @@ ST |char * |F0convert |NV nv|NN char *const endbuf|NN STRLEN *const len S |SV * |more_sv S |bool |sv_2iuv_common |NN SV *const sv -S |void |glob_assign_glob|NN SV *const dstr|NN SV *const sstr \ +S |void |glob_assign_glob|NN SV *const dsv|NN SV *const ssv \ |const int dtype SRT |PTR_TBL_ENT_t *|ptr_table_find|NN PTR_TBL_t *const tbl|NULLOK const void *const sv S |void |anonymise_cv_maybe |NN GV *gv|NN CV *cv @@ -3012,7 +3122,7 @@ po |void * |more_bodies |const svtype sv_type|const size_t body_size \ |const size_t arena_size EXpR |SV* |get_and_check_backslash_N_name|NN const char* s \ - |NN const char* const e \ + |NN const char* e \ |const bool is_utf8 \ |NN const char** error_msg EXpR |HV* |load_charnames |NN SV * char_name \ @@ -3161,13 +3271,13 @@ S |SV* |mess_alloc S |SV * |with_queued_errors|NN SV *ex S |bool |invoke_exception_hook|NULLOK SV *ex|bool warn -#if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL) +# if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL) ST |void |mem_log_common |enum mem_log_type mlt|const UV n|const UV typesize \ |NN const char *type_name|NULLOK const SV *sv \ |Malloc_t oldalloc|Malloc_t newalloc \ |NN const char *filename|const int linenumber \ |NN const char *funcname -#endif +# endif #endif #if defined(PERL_MEM_LOG) @@ -3193,15 +3303,15 @@ EXiTp |void |append_utf8_from_native_byte|const U8 byte|NN U8** dest Apd |void |sv_set_undef |NN SV *sv -Apd |void |sv_setsv_flags |NN SV *dstr|NULLOK SV *sstr|const I32 flags -Apd |void |sv_catpvn_flags|NN SV *const dstr|NN const char *sstr|const STRLEN len \ +Apd |void |sv_setsv_flags |NN SV *dsv|NULLOK SV *ssv|const I32 flags +Apd |void |sv_catpvn_flags|NN SV *const dsv|NN const char *sstr|const STRLEN len \ |const I32 flags -Apd |void |sv_catpv_flags |NN SV *dstr|NN const char *sstr \ +Apd |void |sv_catpv_flags |NN SV *dsv|NN const char *sstr \ |const I32 flags -Apd |void |sv_catsv_flags |NN SV *const dsv|NULLOK SV *const ssv|const I32 flags +Apd |void |sv_catsv_flags |NN SV *const dsv|NULLOK SV *const sstr|const I32 flags Amd |STRLEN |sv_utf8_upgrade_flags|NN SV *const sv|const I32 flags Adp |STRLEN |sv_utf8_upgrade_flags_grow|NN SV *const sv|const I32 flags|STRLEN extra -Apd |char* |sv_pvn_force_flags|NN SV *const sv|NULLOK STRLEN *const lp|const I32 flags +Apd |char* |sv_pvn_force_flags|NN SV *const sv|NULLOK STRLEN *const lp|const U32 flags AdpMb |void |sv_copypv |NN SV *const dsv|NN SV *const ssv Amd |void |sv_copypv_nomg |NN SV *const dsv|NN SV *const ssv Apd |void |sv_copypv_flags |NN SV *const dsv|NN SV *const ssv|const I32 flags @@ -3211,7 +3321,7 @@ ApT |int |my_dirfd |NULLOK DIR* dir #ifdef PERL_ANY_COW : Used in regexec.c -pxXE |SV* |sv_setsv_cow |NULLOK SV* dstr|NN SV* sstr +pxXE |SV* |sv_setsv_cow |NULLOK SV* dsv|NN SV* ssv #endif Aop |const char *|PerlIO_context_layers|NULLOK const char *mode @@ -3293,8 +3403,8 @@ |NN PADNAME** out_name|NN int *out_flags #endif #ifdef DEBUGGING -Apd |SV* |pad_sv |PADOFFSET po -Apd |void |pad_setsv |PADOFFSET po|NN SV* sv +Cpd |SV* |pad_sv |PADOFFSET po +Cpd |void |pad_setsv |PADOFFSET po|NN SV* sv #endif pd |void |pad_block_start|int full Apd |U32 |intro_my @@ -3318,7 +3428,7 @@ p |CV* |cv_clone_into |NN CV* proto|NN CV *target pd |void |pad_fixup_inner_anons|NN PADLIST *padlist|NN CV *old_cv|NN CV *new_cv pdX |void |pad_push |NN PADLIST *padlist|int depth -ApbdRM |HV* |pad_compname_type|const PADOFFSET po +ApbdDR |HV* |pad_compname_type|const PADOFFSET po AxpdRT |PADNAME *|padnamelist_fetch|NN PADNAMELIST *pnl|SSize_t key Xop |void |padnamelist_free|NN PADNAMELIST *pnl Axpd |PADNAME **|padnamelist_store|NN PADNAMELIST *pnl|SSize_t key \ @@ -3384,8 +3494,8 @@ |NN const char **desc_p #endif -Ap |GV* |gv_fetchpvn_flags|NN const char* name|STRLEN len|I32 flags|const svtype sv_type -Ap |GV* |gv_fetchsv|NN SV *name|I32 flags|const svtype sv_type +Adp |GV* |gv_fetchpvn_flags|NN const char* name|STRLEN len|I32 flags|const svtype sv_type +Adp |GV* |gv_fetchsv|NN SV *name|I32 flags|const svtype sv_type #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP : Used in sv.c @@ -3398,8 +3508,8 @@ #if defined(PERL_IN_UTIL_C) S |bool |ckwarn_common |U32 w #endif -ApoP |bool |ckwarn |U32 w -ApoP |bool |ckwarn_d |U32 w +CpoP |bool |ckwarn |U32 w +CpoP |bool |ckwarn_d |U32 w : FIXME - exported for ByteLoader - public or private? XEopxR |STRLEN *|new_warnings_bitfield|NULLOK STRLEN *buffer \ |NN const char *const bits|STRLEN size @@ -3415,13 +3525,8 @@ pe |void |my_clearenv #ifdef PERL_IMPLICIT_CONTEXT -#ifdef PERL_GLOBAL_STRUCT_PRIVATE -Apo |void* |my_cxt_init |NN const char *my_cxt_key|size_t size -Apo |int |my_cxt_index |NN const char *my_cxt_key -#else Apo |void* |my_cxt_init |NN int *indexp|size_t size #endif -#endif #if defined(PERL_IN_UTIL_C) So |void |xs_version_bootcheck|U32 items|U32 ax|NN const char *xs_p \ |STRLEN xs_len @@ -3460,7 +3565,7 @@ : Used by SvRX and SvRXOK XExop |REGEXP *|get_re_arg|NULLOK SV *sv -Aopdh |SV* |mro_get_private_data|NN struct mro_meta *const smeta \ +Coph |SV* |mro_get_private_data|NN struct mro_meta *const smeta \ |NN const struct mro_alg *const which Aopdh |SV* |mro_set_private_data|NN struct mro_meta *const smeta \ |NN const struct mro_alg *const which \ @@ -3495,9 +3600,9 @@ pde |void |mro_package_moved |NULLOK HV * const stash|NULLOK HV * const oldstash|NN const GV * const gv|U32 flags : Only used in perl.c p |void |boot_core_mro -ApoT |void |sys_init |NN int* argc|NN char*** argv -ApoT |void |sys_init3 |NN int* argc|NN char*** argv|NN char*** env -ApoT |void |sys_term +CpoT |void |sys_init |NN int* argc|NN char*** argv +CpoT |void |sys_init3 |NN int* argc|NN char*** argv|NN char*** env +CpoT |void |sys_term Apxd |const char *|cop_fetch_label|NN COP *const cop \ |NULLOK STRLEN *len|NULLOK U32 *flags : Only used in op.c and the perl compiler @@ -3531,29 +3636,30 @@ |U8 gimme|int filter #ifndef PERL_NO_INLINE_FUNCTIONS -Aixp |U8 |gimme_V | -Aixp |PERL_CONTEXT * |cx_pushblock|U8 type|U8 gimme|NN SV** sp|I32 saveix -Aixp |void |cx_popblock|NN PERL_CONTEXT *cx -Aixp |void |cx_topblock|NN PERL_CONTEXT *cx -Aixp |void |cx_pushsub |NN PERL_CONTEXT *cx|NN CV *cv \ +Cixp |U8 |gimme_V | +Cixp |PERL_CONTEXT * |cx_pushblock|U8 type|U8 gimme|NN SV** sp|I32 saveix +Cixp |void |cx_popblock|NN PERL_CONTEXT *cx +Cixp |void |cx_topblock|NN PERL_CONTEXT *cx +Cixp |void |cx_pushsub |NN PERL_CONTEXT *cx|NN CV *cv \ |NULLOK OP *retop|bool hasargs -Aixp |void |cx_popsub_common|NN PERL_CONTEXT *cx -Aixp |void |cx_popsub_args |NN PERL_CONTEXT *cx -Aixp |void |cx_popsub |NN PERL_CONTEXT *cx -Aixp |void |cx_pushformat |NN PERL_CONTEXT *cx|NN CV *cv \ +Cixp |void |cx_popsub_common|NN PERL_CONTEXT *cx +Cixp |void |cx_popsub_args |NN PERL_CONTEXT *cx +Cixp |void |cx_popsub |NN PERL_CONTEXT *cx +Cixp |void |cx_pushformat |NN PERL_CONTEXT *cx|NN CV *cv \ |NULLOK OP *retop|NULLOK GV *gv -Aixp |void |cx_popformat |NN PERL_CONTEXT *cx -Aixp |void |cx_pusheval |NN PERL_CONTEXT *cx \ +Cixp |void |cx_popformat |NN PERL_CONTEXT *cx +Cixp |void |cx_pusheval |NN PERL_CONTEXT *cx \ |NULLOK OP *retop|NULLOK SV *namesv -Aixp |void |cx_popeval |NN PERL_CONTEXT *cx -Aixp |void |cx_pushloop_plain|NN PERL_CONTEXT *cx -Aixp |void |cx_pushloop_for |NN PERL_CONTEXT *cx \ +Cixp |void |cx_pushtry |NN PERL_CONTEXT *cx|NULLOK OP *retop +Cixp |void |cx_popeval |NN PERL_CONTEXT *cx +Cixp |void |cx_pushloop_plain|NN PERL_CONTEXT *cx +Cixp |void |cx_pushloop_for |NN PERL_CONTEXT *cx \ |NN void *itervarp|NULLOK SV *itersave -Aixp |void |cx_poploop |NN PERL_CONTEXT *cx -Aixp |void |cx_pushwhen |NN PERL_CONTEXT *cx -Aixp |void |cx_popwhen |NN PERL_CONTEXT *cx -Aixp |void |cx_pushgiven |NN PERL_CONTEXT *cx|NULLOK SV *orig_defsv -Aixp |void |cx_popgiven |NN PERL_CONTEXT *cx +Cixp |void |cx_poploop |NN PERL_CONTEXT *cx +Cixp |void |cx_pushwhen |NN PERL_CONTEXT *cx +Cixp |void |cx_popwhen |NN PERL_CONTEXT *cx +Cixp |void |cx_pushgiven |NN PERL_CONTEXT *cx|NULLOK SV *orig_defsv +Cixp |void |cx_popgiven |NN PERL_CONTEXT *cx #endif #ifdef USE_DTRACE @@ -3565,4 +3671,8 @@ XEop |STRLEN*|dup_warnings |NULLOK STRLEN* warnings +#ifndef USE_ITHREADS +Amd |void |CopFILEGV_set |NN COP * c|NN GV * gv +#endif + : ex: set ts=8 sts=4 sw=4 noet: diff -Nru perl-5.32.1/embed.h perl-5.34.0/embed.h --- perl-5.32.1/embed.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/embed.h 2021-02-21 11:01:31.000000000 +0000 @@ -20,7 +20,9 @@ /* By defining PERL_NO_SHORT_NAMES (not done by default) the short forms * (like warn instead of Perl_warn) for the API are not defined. - * Not defining the short forms is a good thing for cleaner embedding. */ + * Not defining the short forms is a good thing for cleaner embedding. + * BEWARE that a bunch of macros don't have long names, so either must be + * added or don't use them if you define this symbol */ #ifndef PERL_NO_SHORT_NAMES @@ -29,6 +31,10 @@ #define Gv_AMupdate(a,b) Perl_Gv_AMupdate(aTHX_ a,b) #define SvAMAGIC_off Perl_SvAMAGIC_off #define SvAMAGIC_on Perl_SvAMAGIC_on +#define SvTRUE(a) Perl_SvTRUE(aTHX_ a) +#define SvTRUE_NN(a) Perl_SvTRUE_NN(aTHX_ a) +#define SvTRUE_common(a,b) Perl_SvTRUE_common(aTHX_ a,b) +#define SvTRUE_nomg(a) Perl_SvTRUE_nomg(aTHX_ a) #define _force_out_malformed_utf8_message(a,b,c,d) Perl__force_out_malformed_utf8_message(aTHX_ a,b,c,d) #define _is_uni_FOO(a,b) Perl__is_uni_FOO(aTHX_ a,b) #define _is_uni_perl_idcont(a) Perl__is_uni_perl_idcont(aTHX_ a) @@ -48,6 +54,7 @@ #define atfork_lock Perl_atfork_lock #define atfork_unlock Perl_atfork_unlock #define av_clear(a) Perl_av_clear(aTHX_ a) +#define av_count(a) Perl_av_count(aTHX_ a) #define av_delete(a,b,c) Perl_av_delete(aTHX_ a,b,c) #define av_exists(a,b) Perl_av_exists(aTHX_ a,b) #define av_extend(a,b) Perl_av_extend(aTHX_ a,b) @@ -59,7 +66,6 @@ #define av_push(a,b) Perl_av_push(aTHX_ a,b) #define av_shift(a) Perl_av_shift(aTHX_ a) #define av_store(a,b,c) Perl_av_store(aTHX_ a,b,c) -#define av_top_index(a) Perl_av_top_index(aTHX_ a) #define av_undef(a) Perl_av_undef(aTHX_ a) #define av_unshift(a,b) Perl_av_unshift(aTHX_ a,b) #define block_end(a,b) Perl_block_end(aTHX_ a,b) @@ -386,6 +392,7 @@ #define newSVrv(a,b) Perl_newSVrv(aTHX_ a,b) #define newSVsv_flags(a,b) Perl_newSVsv_flags(aTHX_ a,b) #define newSVuv(a) Perl_newSVuv(aTHX_ a) +#define newTRYCATCHOP(a,b,c,d) Perl_newTRYCATCHOP(aTHX_ a,b,c,d) #define newUNOP(a,b,c) Perl_newUNOP(aTHX_ a,b,c) #define newUNOP_AUX(a,b,c,d) Perl_newUNOP_AUX(aTHX_ a,b,c,d) #define newWHENOP(a,b) Perl_newWHENOP(aTHX_ a,b) @@ -410,12 +417,18 @@ #define op_refcnt_unlock() Perl_op_refcnt_unlock(aTHX) #define op_scope(a) Perl_op_scope(aTHX_ a) #define op_sibling_splice Perl_op_sibling_splice +#ifndef NO_MATHOMS +#define pack_cat(a,b,c,d,e,f,g) Perl_pack_cat(aTHX_ a,b,c,d,e,f,g) +#endif #define packlist(a,b,c,d,e) Perl_packlist(aTHX_ a,b,c,d,e) #define pad_add_anon(a,b) Perl_pad_add_anon(aTHX_ a,b) #define pad_add_name_pv(a,b,c,d) Perl_pad_add_name_pv(aTHX_ a,b,c,d) #define pad_add_name_pvn(a,b,c,d,e) Perl_pad_add_name_pvn(aTHX_ a,b,c,d,e) #define pad_add_name_sv(a,b,c,d) Perl_pad_add_name_sv(aTHX_ a,b,c,d) #define pad_alloc(a,b) Perl_pad_alloc(aTHX_ a,b) +#ifndef NO_MATHOMS +#define pad_compname_type(a) Perl_pad_compname_type(aTHX_ a) +#endif #define pad_findmy_pv(a,b) Perl_pad_findmy_pv(aTHX_ a,b) #define pad_findmy_pvn(a,b,c) Perl_pad_findmy_pvn(aTHX_ a,b,c) #define pad_findmy_sv(a,b) Perl_pad_findmy_sv(aTHX_ a,b) @@ -809,6 +822,7 @@ #define cx_pushloop_for(a,b,c) Perl_cx_pushloop_for(aTHX_ a,b,c) #define cx_pushloop_plain(a) Perl_cx_pushloop_plain(aTHX_ a) #define cx_pushsub(a,b,c,d) Perl_cx_pushsub(aTHX_ a,b,c,d) +#define cx_pushtry(a,b) Perl_cx_pushtry(aTHX_ a,b) #define cx_pushwhen(a) Perl_cx_pushwhen(aTHX_ a) #define cx_topblock(a) Perl_cx_topblock(aTHX_ a) #define gimme_V() Perl_gimme_V(aTHX) @@ -828,11 +842,6 @@ #define dump_mstats(a) Perl_dump_mstats(aTHX_ a) #define get_mstats(a,b,c) Perl_get_mstats(aTHX_ a,b,c) #endif -#if defined(PERL_GLOBAL_STRUCT) -#define GetVars() Perl_GetVars(aTHX) -#define free_global_struct(a) Perl_free_global_struct(aTHX_ a) -#define init_global_struct() Perl_init_global_struct(aTHX) -#endif #if defined(PERL_IMPLICIT_CONTEXT) #define croak_nocontext Perl_croak_nocontext #define deb_nocontext Perl_deb_nocontext @@ -914,7 +923,7 @@ #define PerlIO_unread(a,b,c) Perl_PerlIO_unread(aTHX_ a,b,c) #define PerlIO_write(a,b,c) Perl_PerlIO_write(aTHX_ a,b,c) #endif -#if defined(WIN32) || defined(__SYMBIAN32__) || defined(VMS) +#if defined(WIN32) || defined(VMS) #define do_aspawn(a,b,c) Perl_do_aspawn(aTHX_ a,b,c) #define do_spawn(a) Perl_do_spawn(aTHX_ a) #define do_spawn_nowait(a) Perl_do_spawn_nowait(aTHX_ a) @@ -927,6 +936,7 @@ #define cntrl_to_mnemonic Perl_cntrl_to_mnemonic #define current_re_engine() Perl_current_re_engine(aTHX) #define cv_ckproto_len_flags(a,b,c,d,e) Perl_cv_ckproto_len_flags(aTHX_ a,b,c,d,e) +#define delimcpy_no_escape Perl_delimcpy_no_escape #define do_uniprop_match Perl_do_uniprop_match #define get_and_check_backslash_N_name(a,b,c,d) Perl_get_and_check_backslash_N_name(aTHX_ a,b,c,d) #define get_deprecated_property_msg Perl_get_deprecated_property_msg @@ -1039,6 +1049,7 @@ #define find_first_differing_byte_pos S_find_first_differing_byte_pos #define get_ANYOFM_contents(a) S_get_ANYOFM_contents(aTHX_ a) #define get_ANYOF_cp_list_for_ssc(a,b) S_get_ANYOF_cp_list_for_ssc(aTHX_ a,b) +#define get_quantifier_value(a,b,c) S_get_quantifier_value(aTHX_ a,b,c) #define grok_bslash_N(a,b,c,d,e,f,g) S_grok_bslash_N(aTHX_ a,b,c,d,e,f,g) #define handle_named_backref(a,b,c,d) S_handle_named_backref(aTHX_ a,b,c,d) #define handle_names_wildcard(a,b,c,d) S_handle_names_wildcard(aTHX_ a,b,c,d) @@ -1052,7 +1063,6 @@ #define join_exact(a,b,c,d,e,f,g) S_join_exact(aTHX_ a,b,c,d,e,f,g) #define make_exactf_invlist(a,b) S_make_exactf_invlist(aTHX_ a,b) #define make_trie(a,b,c,d,e,f,g,h) S_make_trie(aTHX_ a,b,c,d,e,f,g,h) -#define new_regcurly S_new_regcurly #define nextchar(a) S_nextchar(aTHX_ a) #define output_posix_warnings(a,b) S_output_posix_warnings(aTHX_ a,b) #define parse_lparen_question_flags(a) S_parse_lparen_question_flags(aTHX_ a) @@ -1155,7 +1165,7 @@ #define invlist_clone(a,b) Perl_invlist_clone(aTHX_ a,b) # endif # if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) -#define regcurly S_regcurly +#define regcurly Perl_regcurly # endif # if defined(PERL_IN_REGEXEC_C) #define advance_one_LB(a,b,c) S_advance_one_LB(aTHX_ a,b,c) @@ -1170,6 +1180,7 @@ #define find_span_end S_find_span_end #define find_span_end_mask S_find_span_end_mask #define foldEQ_latin1_s2_folded S_foldEQ_latin1_s2_folded +#define isFOO_lc(a,b) S_isFOO_lc(aTHX_ a,b) #define isFOO_utf8_lc(a,b,c) S_isFOO_utf8_lc(aTHX_ a,b,c) #define isGCB(a,b,c,d,e) S_isGCB(aTHX_ a,b,c,d,e) #define isLB(a,b,c,d,e,f) S_isLB(aTHX_ a,b,c,d,e,f) @@ -1189,9 +1200,6 @@ #define to_byte_substr(a) S_to_byte_substr(aTHX_ a) #define to_utf8_substr(a) S_to_utf8_substr(aTHX_ a) # endif -# if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C) -#define isFOO_lc(a,b) Perl_isFOO_lc(aTHX_ a,b) -# endif #endif #ifdef PERL_CORE #define PerlLIO_dup2_cloexec(a,b) Perl_PerlLIO_dup2_cloexec(aTHX_ a,b) @@ -1262,6 +1270,7 @@ #define ck_svconst(a) Perl_ck_svconst(aTHX_ a) #define ck_tell(a) Perl_ck_tell(aTHX_ a) #define ck_trunc(a) Perl_ck_trunc(aTHX_ a) +#define ck_trycatch(a) Perl_ck_trycatch(aTHX_ a) #define closest_cop(a,b,c,d) Perl_closest_cop(aTHX_ a,b,c,d) #define cmpchain_extend(a,b,c) Perl_cmpchain_extend(aTHX_ a,b,c) #define cmpchain_finish(a) Perl_cmpchain_finish(aTHX_ a) @@ -1282,7 +1291,6 @@ #define deb_stack_all() Perl_deb_stack_all(aTHX) #define defelem_target(a,b) Perl_defelem_target(aTHX_ a,b) #define delete_eval_scope() Perl_delete_eval_scope(aTHX) -#define delimcpy_no_escape Perl_delimcpy_no_escape #define die_unwind(a) Perl_die_unwind(aTHX_ a) #define do_aexec5(a,b,c,d,e) Perl_do_aexec5(aTHX_ a,b,c,d,e) #define do_dump_pad(a,b,c,d) Perl_do_dump_pad(aTHX_ a,b,c,d) @@ -1341,7 +1349,9 @@ #define magic_copycallchecker(a,b,c,d,e) Perl_magic_copycallchecker(aTHX_ a,b,c,d,e) #define magic_existspack(a,b) Perl_magic_existspack(aTHX_ a,b) #define magic_freearylen_p(a,b) Perl_magic_freearylen_p(aTHX_ a,b) +#define magic_freemglob(a,b) Perl_magic_freemglob(aTHX_ a,b) #define magic_freeovrld(a,b) Perl_magic_freeovrld(aTHX_ a,b) +#define magic_freeutf8(a,b) Perl_magic_freeutf8(aTHX_ a,b) #define magic_get(a,b) Perl_magic_get(aTHX_ a,b) #define magic_getarylen(a,b) Perl_magic_getarylen(aTHX_ a,b) #define magic_getdebugvar(a,b) Perl_magic_getdebugvar(aTHX_ a,b) @@ -1399,6 +1409,7 @@ #define newXS_deffile(a,b) Perl_newXS_deffile(aTHX_ a,b) #define newXS_len_flags(a,b,c,d,e,f,g) Perl_newXS_len_flags(aTHX_ a,b,c,d,e,f,g) #define nextargv(a,b) Perl_nextargv(aTHX_ a,b) +#define no_bareword_filehandle(a) Perl_no_bareword_filehandle(aTHX_ a) #define noperl_die Perl_noperl_die #define notify_parser_that_changed_to_utf8() Perl_notify_parser_that_changed_to_utf8(aTHX) #define oopsAV(a) Perl_oopsAV(aTHX_ a) @@ -2008,6 +2019,7 @@ #define padnamelist_dup(a,b) Perl_padnamelist_dup(aTHX_ a,b) # endif # if defined(USE_LOCALE_COLLATE) +#define magic_freecollxfrm(a,b) Perl_magic_freecollxfrm(aTHX_ a,b) #define magic_setcollxfrm(a,b) Perl_magic_setcollxfrm(aTHX_ a,b) #ifndef NO_MATHOMS #define mem_collxfrm(a,b,c) Perl_mem_collxfrm(aTHX_ a,b,c) diff -Nru perl-5.32.1/embedvar.h perl-5.34.0/embedvar.h --- perl-5.32.1/embedvar.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/embedvar.h 2021-01-20 23:04:44.000000000 +0000 @@ -107,7 +107,6 @@ #define PL_comppad_name_floor (vTHX->Icomppad_name_floor) #define PL_constpadix (vTHX->Iconstpadix) #define PL_cop_seqmax (vTHX->Icop_seqmax) -#define PL_cryptseen (vTHX->Icryptseen) #define PL_curcop (vTHX->Icurcop) #define PL_curcopdb (vTHX->Icurcopdb) #define PL_curlocales (vTHX->Icurlocales) @@ -205,6 +204,7 @@ #define PL_maxsysfd (vTHX->Imaxsysfd) #define PL_mbrlen_ps (vTHX->Imbrlen_ps) #define PL_mbrtowc_ps (vTHX->Imbrtowc_ps) +#define PL_mem_log (vTHX->Imem_log) #define PL_memory_debug_header (vTHX->Imemory_debug_header) #define PL_mess_sv (vTHX->Imess_sv) #define PL_min_intro_pending (vTHX->Imin_intro_pending) @@ -376,133 +376,4 @@ #endif /* MULTIPLICITY */ -#if defined(PERL_GLOBAL_STRUCT) - -#define PL_C_locale_obj (my_vars->GC_locale_obj) -#define PL_GC_locale_obj (my_vars->GC_locale_obj) -#define PL_appctx (my_vars->Gappctx) -#define PL_Gappctx (my_vars->Gappctx) -#define PL_check (my_vars->Gcheck) -#define PL_Gcheck (my_vars->Gcheck) -#define PL_check_mutex (my_vars->Gcheck_mutex) -#define PL_Gcheck_mutex (my_vars->Gcheck_mutex) -#define PL_csighandler1p (my_vars->Gcsighandler1p) -#define PL_Gcsighandler1p (my_vars->Gcsighandler1p) -#define PL_csighandler3p (my_vars->Gcsighandler3p) -#define PL_Gcsighandler3p (my_vars->Gcsighandler3p) -#define PL_csighandlerp (my_vars->Gcsighandlerp) -#define PL_Gcsighandlerp (my_vars->Gcsighandlerp) -#define PL_curinterp (my_vars->Gcurinterp) -#define PL_Gcurinterp (my_vars->Gcurinterp) -#define PL_do_undump (my_vars->Gdo_undump) -#define PL_Gdo_undump (my_vars->Gdo_undump) -#define PL_dollarzero_mutex (my_vars->Gdollarzero_mutex) -#define PL_Gdollarzero_mutex (my_vars->Gdollarzero_mutex) -#define PL_env_mutex (my_vars->Genv_mutex) -#define PL_Genv_mutex (my_vars->Genv_mutex) -#define PL_fold_locale (my_vars->Gfold_locale) -#define PL_Gfold_locale (my_vars->Gfold_locale) -#define PL_hash_chars (my_vars->Ghash_chars) -#define PL_Ghash_chars (my_vars->Ghash_chars) -#define PL_hash_seed (my_vars->Ghash_seed) -#define PL_Ghash_seed (my_vars->Ghash_seed) -#define PL_hash_seed_set (my_vars->Ghash_seed_set) -#define PL_Ghash_seed_set (my_vars->Ghash_seed_set) -#define PL_hash_state (my_vars->Ghash_state) -#define PL_Ghash_state (my_vars->Ghash_state) -#define PL_hints_mutex (my_vars->Ghints_mutex) -#define PL_Ghints_mutex (my_vars->Ghints_mutex) -#define PL_keyword_plugin (my_vars->Gkeyword_plugin) -#define PL_Gkeyword_plugin (my_vars->Gkeyword_plugin) -#define PL_keyword_plugin_mutex (my_vars->Gkeyword_plugin_mutex) -#define PL_Gkeyword_plugin_mutex (my_vars->Gkeyword_plugin_mutex) -#define PL_lc_numeric_mutex (my_vars->Glc_numeric_mutex) -#define PL_Glc_numeric_mutex (my_vars->Glc_numeric_mutex) -#define PL_locale_mutex (my_vars->Glocale_mutex) -#define PL_Glocale_mutex (my_vars->Glocale_mutex) -#define PL_malloc_mutex (my_vars->Gmalloc_mutex) -#define PL_Gmalloc_mutex (my_vars->Gmalloc_mutex) -#define PL_mmap_page_size (my_vars->Gmmap_page_size) -#define PL_Gmmap_page_size (my_vars->Gmmap_page_size) -#define PL_my_ctx_mutex (my_vars->Gmy_ctx_mutex) -#define PL_Gmy_ctx_mutex (my_vars->Gmy_ctx_mutex) -#define PL_my_cxt_index (my_vars->Gmy_cxt_index) -#define PL_Gmy_cxt_index (my_vars->Gmy_cxt_index) -#define PL_my_cxt_keys (my_vars->Gmy_cxt_keys) -#define PL_Gmy_cxt_keys (my_vars->Gmy_cxt_keys) -#define PL_my_cxt_keys_size (my_vars->Gmy_cxt_keys_size) -#define PL_Gmy_cxt_keys_size (my_vars->Gmy_cxt_keys_size) -#define PL_op_mutex (my_vars->Gop_mutex) -#define PL_Gop_mutex (my_vars->Gop_mutex) -#define PL_op_seq (my_vars->Gop_seq) -#define PL_Gop_seq (my_vars->Gop_seq) -#define PL_op_sequence (my_vars->Gop_sequence) -#define PL_Gop_sequence (my_vars->Gop_sequence) -#define PL_perlio_debug_fd (my_vars->Gperlio_debug_fd) -#define PL_Gperlio_debug_fd (my_vars->Gperlio_debug_fd) -#define PL_perlio_fd_refcnt (my_vars->Gperlio_fd_refcnt) -#define PL_Gperlio_fd_refcnt (my_vars->Gperlio_fd_refcnt) -#define PL_perlio_fd_refcnt_size (my_vars->Gperlio_fd_refcnt_size) -#define PL_Gperlio_fd_refcnt_size (my_vars->Gperlio_fd_refcnt_size) -#define PL_perlio_mutex (my_vars->Gperlio_mutex) -#define PL_Gperlio_mutex (my_vars->Gperlio_mutex) -#ifdef __VMS -#define PL_perllib_sep (my_vars->Gperllib_sep) -#define PL_Gperllib_sep (my_vars->Gperllib_sep) -#endif -#define PL_ppaddr (my_vars->Gppaddr) -#define PL_Gppaddr (my_vars->Gppaddr) -#ifdef OS2 -#define PL_sh_path (my_vars->Gsh_path) -#define PL_Gsh_path (my_vars->Gsh_path) -#endif -#define PL_sig_defaulting (my_vars->Gsig_defaulting) -#define PL_Gsig_defaulting (my_vars->Gsig_defaulting) -#define PL_sig_handlers_initted (my_vars->Gsig_handlers_initted) -#define PL_Gsig_handlers_initted (my_vars->Gsig_handlers_initted) -#define PL_sig_ignoring (my_vars->Gsig_ignoring) -#define PL_Gsig_ignoring (my_vars->Gsig_ignoring) -#define PL_sig_trapped (my_vars->Gsig_trapped) -#define PL_Gsig_trapped (my_vars->Gsig_trapped) -#define PL_sigfpe_saved (my_vars->Gsigfpe_saved) -#define PL_Gsigfpe_saved (my_vars->Gsigfpe_saved) -#define PL_strategy_accept (my_vars->Gstrategy_accept) -#define PL_Gstrategy_accept (my_vars->Gstrategy_accept) -#define PL_strategy_dup (my_vars->Gstrategy_dup) -#define PL_Gstrategy_dup (my_vars->Gstrategy_dup) -#define PL_strategy_dup2 (my_vars->Gstrategy_dup2) -#define PL_Gstrategy_dup2 (my_vars->Gstrategy_dup2) -#define PL_strategy_mkstemp (my_vars->Gstrategy_mkstemp) -#define PL_Gstrategy_mkstemp (my_vars->Gstrategy_mkstemp) -#define PL_strategy_open (my_vars->Gstrategy_open) -#define PL_Gstrategy_open (my_vars->Gstrategy_open) -#define PL_strategy_open3 (my_vars->Gstrategy_open3) -#define PL_Gstrategy_open3 (my_vars->Gstrategy_open3) -#define PL_strategy_pipe (my_vars->Gstrategy_pipe) -#define PL_Gstrategy_pipe (my_vars->Gstrategy_pipe) -#define PL_strategy_socket (my_vars->Gstrategy_socket) -#define PL_Gstrategy_socket (my_vars->Gstrategy_socket) -#define PL_strategy_socketpair (my_vars->Gstrategy_socketpair) -#define PL_Gstrategy_socketpair (my_vars->Gstrategy_socketpair) -#define PL_sv_placeholder (my_vars->Gsv_placeholder) -#define PL_Gsv_placeholder (my_vars->Gsv_placeholder) -#define PL_thr_key (my_vars->Gthr_key) -#define PL_Gthr_key (my_vars->Gthr_key) -#define PL_timesbase (my_vars->Gtimesbase) -#define PL_Gtimesbase (my_vars->Gtimesbase) -#define PL_use_safe_putenv (my_vars->Guse_safe_putenv) -#define PL_Guse_safe_putenv (my_vars->Guse_safe_putenv) -#define PL_user_def_props (my_vars->Guser_def_props) -#define PL_Guser_def_props (my_vars->Guser_def_props) -#define PL_user_def_props_aTHX (my_vars->Guser_def_props_aTHX) -#define PL_Guser_def_props_aTHX (my_vars->Guser_def_props_aTHX) -#define PL_user_prop_mutex (my_vars->Guser_prop_mutex) -#define PL_Guser_prop_mutex (my_vars->Guser_prop_mutex) -#define PL_veto_cleanup (my_vars->Gveto_cleanup) -#define PL_Gveto_cleanup (my_vars->Gveto_cleanup) -#define PL_watch_pvx (my_vars->Gwatch_pvx) -#define PL_Gwatch_pvx (my_vars->Gwatch_pvx) - -#endif /* PERL_GLOBAL_STRUCT */ - /* ex: set ro: */ diff -Nru perl-5.32.1/ext/Amiga-ARexx/ARexx.pm perl-5.34.0/ext/Amiga-ARexx/ARexx.pm --- perl-5.32.1/ext/Amiga-ARexx/ARexx.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/Amiga-ARexx/ARexx.pm 2020-10-24 18:43:34.000000000 +0000 @@ -26,7 +26,7 @@ our @EXPORT = qw( ); -our $VERSION = '0.04'; +our $VERSION = '0.05'; require XSLoader; XSLoader::load('Amiga::ARexx', $VERSION); @@ -309,7 +309,7 @@ $m = $msg->message(); -Retreive the message "command" as a string; +Retrieve the message "command" as a string; =head2 reply diff -Nru perl-5.32.1/ext/B/B.pm perl-5.34.0/ext/B/B.pm --- perl-5.32.1/ext/B/B.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/B/B.pm 2020-11-18 22:09:15.000000000 +0000 @@ -20,7 +20,7 @@ # walkoptree comes from B.xs BEGIN { - $B::VERSION = '1.80'; + $B::VERSION = '1.82'; @B::EXPORT_OK = (); # Our BOOT code needs $VERSION set, and will append to @EXPORT_OK. @@ -559,9 +559,9 @@ +------------+------------+ | | | B::PV B::IV B::NV - \ / / - \ / / - B::PVIV / + / \ / / + / \ / / + B::INVLIST B::PVIV / \ / \ / \ / @@ -735,6 +735,32 @@ =back +=head2 B::INVLIST Methods + +=over 4 + +=item prev_index + +Returns the cache result of previous invlist_search() (internal usage) + +=item is_offset + +Returns a boolean value (0 or 1) to know if the invlist is using an offset. +When false the list begins with the code point U+0000. +When true the list begins with the following elements. + +=item array_len + +Returns an integer with the size of the array used to define the invlist. + +=item get_invlist_array + +This method returns a list of integers representing the array used by the +invlist. +Note: this cannot be used while in middle of iterating on an invlist and croaks. + +=back + =head2 B::PVLV Methods =over 4 diff -Nru perl-5.32.1/ext/B/B.xs perl-5.34.0/ext/B/B.xs --- perl-5.32.1/ext/B/B.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/B/B.xs 2020-11-18 22:09:15.000000000 +0000 @@ -13,6 +13,9 @@ #include "perl.h" #include "XSUB.h" +/* #include "invlist_inline.h" */ +#define FROM_INTERNAL_SIZE(x) ((x)/ sizeof(UV)) + #ifdef PerlIO typedef PerlIO * InputStream; #else @@ -472,6 +475,7 @@ typedef PADNAMELIST *B__PADNAMELIST; typedef PADNAME *B__PADNAME; +typedef INVLIST *B__INVLIST; #ifdef MULTIPLICITY # define ASSIGN_COMMON_ALIAS(prefix, var) \ @@ -486,7 +490,6 @@ static XSPROTO(intrpvar_sv_common); /* prototype to pass -Wmissing-prototypes */ static XSPROTO(intrpvar_sv_common) { - dVAR; dXSARGS; SV *ret; if (items != 0) @@ -1632,6 +1635,71 @@ PUSHi(PTR2IV(sv)); } +MODULE = B PACKAGE = B::INVLIST PREFIX = Invlist + +int +prev_index(invlist) + B::INVLIST invlist + CODE: + RETVAL = ((XINVLIST*) SvANY(invlist))->prev_index; + OUTPUT: + RETVAL + +int +is_offset(invlist) + B::INVLIST invlist + CODE: + RETVAL = ((XINVLIST*) SvANY(invlist))->is_offset == TRUE ? 1 : 0; + OUTPUT: + RETVAL + +unsigned int +array_len(invlist) + B::INVLIST invlist + CODE: + { + if (SvCUR(invlist) > 0) + RETVAL = FROM_INTERNAL_SIZE(SvCUR(invlist)); /* - ((XINVLIST*) SvANY(invlist))->is_offset; */ /* <- for iteration */ + else + RETVAL = 0; + } + OUTPUT: + RETVAL + +void +get_invlist_array(invlist) + B::INVLIST invlist +PPCODE: + { + /* should use invlist_is_iterating but not public for now */ + bool is_iterating = ( (XINVLIST*) SvANY(invlist) )->iterator < (STRLEN) UV_MAX; + + if (is_iterating) { + croak( "Can't access inversion list: in middle of iterating" ); + } + + { + UV pos; + UV len; + + len = 0; + /* should use _invlist_len (or not) */ + if (SvCUR(invlist) > 0) + len = FROM_INTERNAL_SIZE(SvCUR(invlist)); /* - ((XINVLIST*) SvANY(invlist))->is_offset; */ /* <- for iteration */ + + if ( len > 0 ) { + UV *array = (UV*) SvPVX( invlist ); /* invlist_array */ + + EXTEND(SP, (int) len); + + for ( pos = 0; pos < len; ++pos ) { + PUSHs( sv_2mortal( newSVuv(array[pos]) ) ); + } + } + } + + } + MODULE = B PACKAGE = B::PV void @@ -2207,7 +2275,7 @@ B::PADLIST::outid = PL_outid_ix PREINIT: char *ptr; - SV *ret; + SV *ret = NULL; PPCODE: ptr = (ix & 0xFFFF) + (char *)pn; switch ((U8)(ix >> 16)) { diff -Nru perl-5.32.1/ext/B/Makefile.PL perl-5.34.0/ext/B/Makefile.PL --- perl-5.32.1/ext/B/Makefile.PL 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/B/Makefile.PL 2020-10-24 18:43:34.000000000 +0000 @@ -40,7 +40,7 @@ push @depend, $path; open my $fh, '<', $path or die "Cannot open $path: $!"; while (<$fh>) { - push @names, $1 if (/ \#define \s+ ( $pfx \w+ ) \s+ + push @names, $1 if (/ ^ \s* \# \s* define \s+ ( $pfx \w+ ) \s+ ( [()|\dx]+ [UuLl]{0,2} # Parens, '|', digits, 'x', # followed by optional long, # unsigned qualifiers diff -Nru perl-5.32.1/ext/B/t/concise.t perl-5.34.0/ext/B/t/concise.t --- perl-5.32.1/ext/B/t/concise.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/B/t/concise.t 2020-10-04 22:17:13.000000000 +0000 @@ -521,7 +521,7 @@ is(scalar(@hints), 3, "3 hints"); is($hints[0], 'v:{', "hints[0]"); is($hints[1], 'v:*,&,{,x*,x&,x$,$', "hints[1]"); - is($hints[2], 'v:us,*,&,{,x*,x&,x$,$,fea=7', "hints[2]"); + is($hints[2], 'v:us,*,&,{,x*,x&,x$,$,fea=15', "hints[2]"); } __END__ diff -Nru perl-5.32.1/ext/B/t/invlist.t perl-5.34.0/ext/B/t/invlist.t --- perl-5.32.1/ext/B/t/invlist.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/ext/B/t/invlist.t 2020-11-18 22:09:15.000000000 +0000 @@ -0,0 +1,65 @@ +#!./perl + +BEGIN { + unshift @INC, 't'; + require Config; + if ( ( $Config::Config{'extensions'} !~ /\bB\b/ ) ) { + print "1..0 # Skip -- Perl configured without B module\n"; + exit 0; + } +} + +use strict; +use warnings; +use Test::More; + +if ( $Config::Config{useithreads} ) { + plan( skip_all => "Perl compiled with ithreads... no invlist in the example"); +} + +use_ok('B'); + +# Somewhat minimal tests. + +my $found_invlist; + +# we are going to walk this sub +sub check { + "ABCD" !~ tr/\0-\377//c; # this is using the Latin1_invlist +} + +sub B::OP::visit { + my $op = shift; + + note ref($op) . " ; NAME: ", $op->name, " ; TYPE: ", $op->type; + + return unless ref $op eq 'B::SVOP' && $op->name eq 'trans'; + + my $sv = $op->sv; + + note "SV: ", ref $sv, " = " . $sv->LEN . " " . $sv->CUR; + foreach my $elt ( $sv->ARRAY ) { + next unless ref $elt eq 'B::INVLIST'; + $found_invlist = 1; + my $invlist = $elt; + + is $invlist->prev_index, 0, "prev_index=0"; + is $invlist->is_offset, 0, "is_offset = 0 (false)"; + + my @array = $invlist->get_invlist_array; + is scalar @array, 2, "invlist array size is 2" or diag explain \@array; + is $array[0], 0, "PL_Latin1 first value in the invlist array is 0" or diag explain \@array; + is $array[1], 256, "PL_Latin1 second value in the invlist array is 0" or diag explain \@array; + + is $invlist->array_len(), 2, "PL_Latin1 array length is 2"; + } + + return; +} + +my $op = B::svref_2object( \*main::check ); +B::walkoptree( $op->CV->ROOT, 'visit' ); + +ok $found_invlist, "visited one INVLIST"; + +done_testing(); diff -Nru perl-5.32.1/ext/B/t/OptreeCheck.pm perl-5.34.0/ext/B/t/OptreeCheck.pm --- perl-5.32.1/ext/B/t/OptreeCheck.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/B/t/OptreeCheck.pm 2020-10-04 22:17:13.000000000 +0000 @@ -5,7 +5,7 @@ our ($TODO, $Level, $using_open); require "test.pl"; -our $VERSION = '0.16'; +our $VERSION = '0.17'; # now export checkOptree, and those test.pl functions used by tests our @EXPORT = qw( checkOptree plan skip skip_all pass is like unlike @@ -314,21 +314,7 @@ ); -# Not sure if this is too much cheating. Officially we say that -# $Config::Config{usethreads} is true if some sort of threading is in -# use, in which case we ought to be able to use it in place of the || -# below. However, it is now possible to Configure perl with "threads" -# but neither ithreads or 5005threads, which forces the re-entrant -# APIs, but no perl user visible threading. - -# This seems to have the side effect that most of perl doesn't think -# that it's threaded, hence the ops aren't threaded either. Not sure -# if this is actually a "supported" configuration, but given that -# ponie uses it, it's going to be used by something official at least -# in the interim. So it's nice for tests to all pass. - -our $threaded = 1 - if $Config::Config{useithreads} || $Config::Config{use5005threads}; +our $threaded = 1 if $Config::Config{usethreads}; our $platform = ($threaded) ? "threaded" : "plain"; our $thrstat = ($threaded) ? "threaded" : "nonthreaded"; diff -Nru perl-5.32.1/ext/B/t/optree_specials.t perl-5.34.0/ext/B/t/optree_specials.t --- perl-5.32.1/ext/B/t/optree_specials.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/B/t/optree_specials.t 2020-10-24 18:43:34.000000000 +0000 @@ -45,52 +45,54 @@ prog => $src, strip_open_hints => 1, expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); -# - <@> lineseq KP ->7 -# 1 <;> nextstate(B::Concise -1151 Concise.pm:116) v:*,&,{,x*,x&,x$,$ ->2 -# 6 <2> sassign sKS/2 ->7 -# 4 <1> srefgen sK/1 ->5 -# - <1> ex-list lKRM ->4 -# 3 <1> rv2gv sKRM/STRICT,1 ->4 -# 2 <#> gv[*STDOUT] s ->3 -# - <1> ex-rv2sv sKRM*/STRICT,1 ->6 -# 5 <#> gvsv[*B::Concise::walkHandle] s ->6 +# BEGIN 1: +# a <1> leavesub[1 ref] K/REFC,1 ->(end) +# - <@> lineseq KP ->a +# 1 <;> nextstate(Exporter::Heavy -1410 Heavy.pm:4) v:*,&,{,x*,x&,x$,$ ->2 +# 3 <1> require sK/1 ->4 +# 2 <$> const[PV "strict.pm"] s/BARE ->3 +# - <;> ex-nextstate(Exporter::Heavy -1410 Heavy.pm:4) v:*,&,{,x*,x&,x$,$ ->4 +# - <@> lineseq K ->- +# 4 <;> nextstate(Exporter::Heavy -1410 Heavy.pm:4) :*,&,{,x*,x&,x$,$ ->5 +# 9 <1> entersub[t1] KRS*/TARG,STRICT ->a +# 5 <0> pushmark s ->6 +# 6 <$> const[PV "strict"] sM ->7 +# 7 <$> const[PV "refs"] sM ->8 +# 8 <.> method_named[PV "unimport"] ->9 # BEGIN 2: -# h <1> leavesub[1 ref] K/REFC,1 ->(end) -# - <@> lineseq K ->h -# 8 <;> nextstate(B::Concise -1113 Concise.pm:181) v:*,&,x*,x&,x$,$ ->9 -# a <1> require sK/1 ->b -# 9 <$> const[PV "strict.pm"] s/BARE ->a -# - <;> ex-nextstate(B::Concise -1113 Concise.pm:181) v:*,&,x*,x&,x$,$ ->b -# - <@> lineseq K ->- -# b <;> nextstate(B::Concise -1113 Concise.pm:181) :*,&,x*,x&,x$,$ ->c -# g <1> entersub[t1] KRS*/TARG,STRICT ->h -# c <0> pushmark s ->d -# d <$> const[PV "strict"] sM ->e -# e <$> const[PV "refs"] sM ->f -# f <.> method_named[PV "unimport"] ->g +# k <1> leavesub[1 ref] K/REFC,1 ->(end) +# - <@> lineseq KP ->k +# b <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) v:*,&,{,x*,x&,x$ ->c +# d <1> require sK/1 ->e +# c <$> const[PV "warnings.pm"] s/BARE ->d +# - <;> ex-nextstate(Exporter::Heavy -1251 Heavy.pm:202) v:*,&,{,x*,x&,x$ ->e +# - <@> lineseq K ->- +# e <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) :*,&,{,x*,x&,x$ ->f +# j <1> entersub[t1] KRS*/TARG ->k +# f <0> pushmark s ->g +# g <$> const[PV "warnings"] sM ->h +# h <$> const[PV "once"] sM ->i +# i <.> method_named[PV "unimport"] ->j # BEGIN 3: # r <1> leavesub[1 ref] K/REFC,1 ->(end) -# - <@> lineseq K ->r -# i <;> nextstate(B::Concise -1010 Concise.pm:303) v:*,&,x*,x&,x$,$ ->j -# k <1> require sK/1 ->l -# j <$> const[PV "strict.pm"] s/BARE ->k -# - <;> ex-nextstate(B::Concise -1010 Concise.pm:303) v:*,&,x*,x&,x$,$ ->l -# - <@> lineseq K ->- -# l <;> nextstate(B::Concise -1010 Concise.pm:303) :*,&,x*,x&,x$,$ ->m -# q <1> entersub[t1] KRS*/TARG,STRICT ->r -# m <0> pushmark s ->n -# n <$> const[PV "strict"] sM ->o -# o <$> const[PV "refs"] sM ->p -# p <.> method_named[PV "unimport"] ->q +# - <@> lineseq KP ->r +# l <;> nextstate(B::Concise -1175 Concise.pm:117) v:*,&,{,x*,x&,x$,$ ->m +# q <2> sassign sKS/2 ->r +# o <1> srefgen sK/1 ->p +# - <1> ex-list lKRM ->o +# n <1> rv2gv sKRM/STRICT,1 ->o +# m <#> gv[*STDOUT] s ->n +# - <1> ex-rv2sv sKRM*/STRICT,1 ->q +# p <#> gvsv[*B::Concise::walkHandle] s ->q # BEGIN 4: # 11 <1> leavesub[1 ref] K/REFC,1 ->(end) -# - <@> lineseq KP ->11 -# s <;> nextstate(B::Concise -963 Concise.pm:368) v:*,&,{,x*,x&,x$,$ ->t +# - <@> lineseq K ->11 +# s <;> nextstate(B::Concise -1134 Concise.pm:183) v:*,&,x*,x&,x$,$ ->t # u <1> require sK/1 ->v # t <$> const[PV "strict.pm"] s/BARE ->u -# - <;> ex-nextstate(B::Concise -963 Concise.pm:368) v:*,&,{,x*,x&,x$,$ ->v +# - <;> ex-nextstate(B::Concise -1134 Concise.pm:183) v:*,&,x*,x&,x$,$ ->v # - <@> lineseq K ->- -# v <;> nextstate(B::Concise -963 Concise.pm:368) :*,&,{,x*,x&,x$,$ ->w +# v <;> nextstate(B::Concise -1134 Concise.pm:183) :*,&,x*,x&,x$,$ ->w # 10 <1> entersub[t1] KRS*/TARG,STRICT ->11 # w <0> pushmark s ->x # x <$> const[PV "strict"] sM ->y @@ -99,12 +101,12 @@ # BEGIN 5: # 1b <1> leavesub[1 ref] K/REFC,1 ->(end) # - <@> lineseq K ->1b -# 12 <;> nextstate(B::Concise -938 Concise.pm:388) v:*,&,x*,x&,x$,$ ->13 +# 12 <;> nextstate(B::Concise -1031 Concise.pm:305) v:*,&,x*,x&,x$,$ ->13 # 14 <1> require sK/1 ->15 # 13 <$> const[PV "strict.pm"] s/BARE ->14 -# - <;> ex-nextstate(B::Concise -938 Concise.pm:388) v:*,&,x*,x&,x$,$ ->15 +# - <;> ex-nextstate(B::Concise -1031 Concise.pm:305) v:*,&,x*,x&,x$,$ ->15 # - <@> lineseq K ->- -# 15 <;> nextstate(B::Concise -938 Concise.pm:388) :*,&,x*,x&,x$,$ ->16 +# 15 <;> nextstate(B::Concise -1031 Concise.pm:305) :*,&,x*,x&,x$,$ ->16 # 1a <1> entersub[t1] KRS*/TARG,STRICT ->1b # 16 <0> pushmark s ->17 # 17 <$> const[PV "strict"] sM ->18 @@ -113,73 +115,101 @@ # BEGIN 6: # 1l <1> leavesub[1 ref] K/REFC,1 ->(end) # - <@> lineseq KP ->1l -# 1c <;> nextstate(B::Concise -924 Concise.pm:408) v:*,&,{,x*,x&,x$,$ ->1d +# 1c <;> nextstate(B::Concise -984 Concise.pm:370) v:*,&,{,x*,x&,x$,$ ->1d # 1e <1> require sK/1 ->1f -# 1d <$> const[PV "warnings.pm"] s/BARE ->1e -# - <;> ex-nextstate(B::Concise -924 Concise.pm:408) v:*,&,{,x*,x&,x$,$ ->1f +# 1d <$> const[PV "strict.pm"] s/BARE ->1e +# - <;> ex-nextstate(B::Concise -984 Concise.pm:370) v:*,&,{,x*,x&,x$,$ ->1f # - <@> lineseq K ->- -# 1f <;> nextstate(B::Concise -924 Concise.pm:408) :*,&,{,x*,x&,x$,$ ->1g +# 1f <;> nextstate(B::Concise -984 Concise.pm:370) :*,&,{,x*,x&,x$,$ ->1g # 1k <1> entersub[t1] KRS*/TARG,STRICT ->1l # 1g <0> pushmark s ->1h -# 1h <$> const[PV "warnings"] sM ->1i -# 1i <$> const[PV "qw"] sM ->1j +# 1h <$> const[PV "strict"] sM ->1i +# 1i <$> const[PV "refs"] sM ->1j # 1j <.> method_named[PV "unimport"] ->1k # BEGIN 7: -# 1p <1> leavesub[1 ref] K/REFC,1 ->(end) -# - <@> lineseq KP ->1p -# 1m <;> nextstate(main 3 -e:1) v:>,<,%,{ ->1n -# 1o <1> postinc[t3] sK/1 ->1p -# - <1> ex-rv2sv sKRM/1 ->1o -# 1n <#> gvsv[*beg] s ->1o +# 1v <1> leavesub[1 ref] K/REFC,1 ->(end) +# - <@> lineseq K ->1v +# 1m <;> nextstate(B::Concise -959 Concise.pm:390) v:*,&,x*,x&,x$,$ ->1n +# 1o <1> require sK/1 ->1p +# 1n <$> const[PV "strict.pm"] s/BARE ->1o +# - <;> ex-nextstate(B::Concise -959 Concise.pm:390) v:*,&,x*,x&,x$,$ ->1p +# - <@> lineseq K ->- +# 1p <;> nextstate(B::Concise -959 Concise.pm:390) :*,&,x*,x&,x$,$ ->1q +# 1u <1> entersub[t1] KRS*/TARG,STRICT ->1v +# 1q <0> pushmark s ->1r +# 1r <$> const[PV "strict"] sM ->1s +# 1s <$> const[PV "refs"] sM ->1t +# 1t <.> method_named[PV "unimport"] ->1u +# BEGIN 8: +# 25 <1> leavesub[1 ref] K/REFC,1 ->(end) +# - <@> lineseq KP ->25 +# 1w <;> nextstate(B::Concise -945 Concise.pm:410) v:*,&,{,x*,x&,x$,$ ->1x +# 1y <1> require sK/1 ->1z +# 1x <$> const[PV "warnings.pm"] s/BARE ->1y +# - <;> ex-nextstate(B::Concise -945 Concise.pm:410) v:*,&,{,x*,x&,x$,$ ->1z +# - <@> lineseq K ->- +# 1z <;> nextstate(B::Concise -945 Concise.pm:410) :*,&,{,x*,x&,x$,$ ->20 +# 24 <1> entersub[t1] KRS*/TARG,STRICT ->25 +# 20 <0> pushmark s ->21 +# 21 <$> const[PV "warnings"] sM ->22 +# 22 <$> const[PV "qw"] sM ->23 +# 23 <.> method_named[PV "unimport"] ->24 +# BEGIN 9: +# 29 <1> leavesub[1 ref] K/REFC,1 ->(end) +# - <@> lineseq KP ->29 +# 26 <;> nextstate(main 3 -e:1) v:{ ->27 +# 28 <1> postinc[t3] sK/1 ->29 +# - <1> ex-rv2sv sKRM/1 ->28 +# 27 <#> gvsv[*beg] s ->28 EOT_EOT # BEGIN 1: -# 7 <1> leavesub[1 ref] K/REFC,1 ->(end) -# - <@> lineseq KP ->7 -# 1 <;> nextstate(B::Concise -1151 Concise.pm:116) v:*,&,{,x*,x&,x$,$ ->2 -# 6 <2> sassign sKS/2 ->7 -# 4 <1> srefgen sK/1 ->5 -# - <1> ex-list lKRM ->4 -# 3 <1> rv2gv sKRM/STRICT,1 ->4 -# 2 <$> gv(*STDOUT) s ->3 -# - <1> ex-rv2sv sKRM*/STRICT,1 ->6 -# 5 <$> gvsv(*B::Concise::walkHandle) s ->6 +# a <1> leavesub[1 ref] K/REFC,1 ->(end) +# - <@> lineseq KP ->a +# 1 <;> nextstate(Exporter::Heavy -1410 Heavy.pm:4) v:*,&,{,x*,x&,x$,$ ->2 +# 3 <1> require sK/1 ->4 +# 2 <$> const(PV "strict.pm") s/BARE ->3 +# - <;> ex-nextstate(Exporter::Heavy -1410 Heavy.pm:4) v:*,&,{,x*,x&,x$,$ ->4 +# - <@> lineseq K ->- +# 4 <;> nextstate(Exporter::Heavy -1410 Heavy.pm:4) :*,&,{,x*,x&,x$,$ ->5 +# 9 <1> entersub[t1] KRS*/TARG,STRICT ->a +# 5 <0> pushmark s ->6 +# 6 <$> const(PV "strict") sM ->7 +# 7 <$> const(PV "refs") sM ->8 +# 8 <.> method_named(PV "unimport") ->9 # BEGIN 2: -# h <1> leavesub[1 ref] K/REFC,1 ->(end) -# - <@> lineseq K ->h -# 8 <;> nextstate(B::Concise -1113 Concise.pm:181) v:*,&,x*,x&,x$,$ ->9 -# a <1> require sK/1 ->b -# 9 <$> const(PV "strict.pm") s/BARE ->a -# - <;> ex-nextstate(B::Concise -1113 Concise.pm:181) v:*,&,x*,x&,x$,$ ->b -# - <@> lineseq K ->- -# b <;> nextstate(B::Concise -1113 Concise.pm:181) :*,&,x*,x&,x$,$ ->c -# g <1> entersub[t1] KRS*/TARG,STRICT ->h -# c <0> pushmark s ->d -# d <$> const(PV "strict") sM ->e -# e <$> const(PV "refs") sM ->f -# f <.> method_named(PV "unimport") ->g +# k <1> leavesub[1 ref] K/REFC,1 ->(end) +# - <@> lineseq KP ->k +# b <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) v:*,&,{,x*,x&,x$ ->c +# d <1> require sK/1 ->e +# c <$> const(PV "warnings.pm") s/BARE ->d +# - <;> ex-nextstate(Exporter::Heavy -1251 Heavy.pm:202) v:*,&,{,x*,x&,x$ ->e +# - <@> lineseq K ->- +# e <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) :*,&,{,x*,x&,x$ ->f +# j <1> entersub[t1] KRS*/TARG ->k +# f <0> pushmark s ->g +# g <$> const(PV "warnings") sM ->h +# h <$> const(PV "once") sM ->i +# i <.> method_named(PV "unimport") ->j # BEGIN 3: # r <1> leavesub[1 ref] K/REFC,1 ->(end) -# - <@> lineseq K ->r -# i <;> nextstate(B::Concise -1010 Concise.pm:303) v:*,&,x*,x&,x$,$ ->j -# k <1> require sK/1 ->l -# j <$> const(PV "strict.pm") s/BARE ->k -# - <;> ex-nextstate(B::Concise -1010 Concise.pm:303) v:*,&,x*,x&,x$,$ ->l -# - <@> lineseq K ->- -# l <;> nextstate(B::Concise -1010 Concise.pm:303) :*,&,x*,x&,x$,$ ->m -# q <1> entersub[t1] KRS*/TARG,STRICT ->r -# m <0> pushmark s ->n -# n <$> const(PV "strict") sM ->o -# o <$> const(PV "refs") sM ->p -# p <.> method_named(PV "unimport") ->q +# - <@> lineseq KP ->r +# l <;> nextstate(B::Concise -1175 Concise.pm:117) v:*,&,{,x*,x&,x$,$ ->m +# q <2> sassign sKS/2 ->r +# o <1> srefgen sK/1 ->p +# - <1> ex-list lKRM ->o +# n <1> rv2gv sKRM/STRICT,1 ->o +# m <$> gv(*STDOUT) s ->n +# - <1> ex-rv2sv sKRM*/STRICT,1 ->q +# p <$> gvsv(*B::Concise::walkHandle) s ->q # BEGIN 4: # 11 <1> leavesub[1 ref] K/REFC,1 ->(end) -# - <@> lineseq KP ->11 -# s <;> nextstate(B::Concise -963 Concise.pm:368) v:*,&,{,x*,x&,x$,$ ->t +# - <@> lineseq K ->11 +# s <;> nextstate(B::Concise -1134 Concise.pm:183) v:*,&,x*,x&,x$,$ ->t # u <1> require sK/1 ->v # t <$> const(PV "strict.pm") s/BARE ->u -# - <;> ex-nextstate(B::Concise -963 Concise.pm:368) v:*,&,{,x*,x&,x$,$ ->v +# - <;> ex-nextstate(B::Concise -1134 Concise.pm:183) v:*,&,x*,x&,x$,$ ->v # - <@> lineseq K ->- -# v <;> nextstate(B::Concise -963 Concise.pm:368) :*,&,{,x*,x&,x$,$ ->w +# v <;> nextstate(B::Concise -1134 Concise.pm:183) :*,&,x*,x&,x$,$ ->w # 10 <1> entersub[t1] KRS*/TARG,STRICT ->11 # w <0> pushmark s ->x # x <$> const(PV "strict") sM ->y @@ -188,12 +218,12 @@ # BEGIN 5: # 1b <1> leavesub[1 ref] K/REFC,1 ->(end) # - <@> lineseq K ->1b -# 12 <;> nextstate(B::Concise -938 Concise.pm:388) v:*,&,x*,x&,x$,$ ->13 +# 12 <;> nextstate(B::Concise -1031 Concise.pm:305) v:*,&,x*,x&,x$,$ ->13 # 14 <1> require sK/1 ->15 # 13 <$> const(PV "strict.pm") s/BARE ->14 -# - <;> ex-nextstate(B::Concise -938 Concise.pm:388) v:*,&,x*,x&,x$,$ ->15 +# - <;> ex-nextstate(B::Concise -1031 Concise.pm:305) v:*,&,x*,x&,x$,$ ->15 # - <@> lineseq K ->- -# 15 <;> nextstate(B::Concise -938 Concise.pm:388) :*,&,x*,x&,x$,$ ->16 +# 15 <;> nextstate(B::Concise -1031 Concise.pm:305) :*,&,x*,x&,x$,$ ->16 # 1a <1> entersub[t1] KRS*/TARG,STRICT ->1b # 16 <0> pushmark s ->17 # 17 <$> const(PV "strict") sM ->18 @@ -202,24 +232,52 @@ # BEGIN 6: # 1l <1> leavesub[1 ref] K/REFC,1 ->(end) # - <@> lineseq KP ->1l -# 1c <;> nextstate(B::Concise -924 Concise.pm:408) v:*,&,{,x*,x&,x$,$ ->1d +# 1c <;> nextstate(B::Concise -984 Concise.pm:370) v:*,&,{,x*,x&,x$,$ ->1d # 1e <1> require sK/1 ->1f -# 1d <$> const(PV "warnings.pm") s/BARE ->1e -# - <;> ex-nextstate(B::Concise -924 Concise.pm:408) v:*,&,{,x*,x&,x$,$ ->1f +# 1d <$> const(PV "strict.pm") s/BARE ->1e +# - <;> ex-nextstate(B::Concise -984 Concise.pm:370) v:*,&,{,x*,x&,x$,$ ->1f # - <@> lineseq K ->- -# 1f <;> nextstate(B::Concise -924 Concise.pm:408) :*,&,{,x*,x&,x$,$ ->1g +# 1f <;> nextstate(B::Concise -984 Concise.pm:370) :*,&,{,x*,x&,x$,$ ->1g # 1k <1> entersub[t1] KRS*/TARG,STRICT ->1l # 1g <0> pushmark s ->1h -# 1h <$> const(PV "warnings") sM ->1i -# 1i <$> const(PV "qw") sM ->1j +# 1h <$> const(PV "strict") sM ->1i +# 1i <$> const(PV "refs") sM ->1j # 1j <.> method_named(PV "unimport") ->1k # BEGIN 7: -# 1p <1> leavesub[1 ref] K/REFC,1 ->(end) -# - <@> lineseq KP ->1p -# 1m <;> nextstate(main 3 -e:1) v:>,<,%,{ ->1n -# 1o <1> postinc[t2] sK/1 ->1p -# - <1> ex-rv2sv sKRM/1 ->1o -# 1n <$> gvsv(*beg) s ->1o +# 1v <1> leavesub[1 ref] K/REFC,1 ->(end) +# - <@> lineseq K ->1v +# 1m <;> nextstate(B::Concise -959 Concise.pm:390) v:*,&,x*,x&,x$,$ ->1n +# 1o <1> require sK/1 ->1p +# 1n <$> const(PV "strict.pm") s/BARE ->1o +# - <;> ex-nextstate(B::Concise -959 Concise.pm:390) v:*,&,x*,x&,x$,$ ->1p +# - <@> lineseq K ->- +# 1p <;> nextstate(B::Concise -959 Concise.pm:390) :*,&,x*,x&,x$,$ ->1q +# 1u <1> entersub[t1] KRS*/TARG,STRICT ->1v +# 1q <0> pushmark s ->1r +# 1r <$> const(PV "strict") sM ->1s +# 1s <$> const(PV "refs") sM ->1t +# 1t <.> method_named(PV "unimport") ->1u +# BEGIN 8: +# 25 <1> leavesub[1 ref] K/REFC,1 ->(end) +# - <@> lineseq KP ->25 +# 1w <;> nextstate(B::Concise -945 Concise.pm:410) v:*,&,{,x*,x&,x$,$ ->1x +# 1y <1> require sK/1 ->1z +# 1x <$> const(PV "warnings.pm") s/BARE ->1y +# - <;> ex-nextstate(B::Concise -945 Concise.pm:410) v:*,&,{,x*,x&,x$,$ ->1z +# - <@> lineseq K ->- +# 1z <;> nextstate(B::Concise -945 Concise.pm:410) :*,&,{,x*,x&,x$,$ ->20 +# 24 <1> entersub[t1] KRS*/TARG,STRICT ->25 +# 20 <0> pushmark s ->21 +# 21 <$> const(PV "warnings") sM ->22 +# 22 <$> const(PV "qw") sM ->23 +# 23 <.> method_named(PV "unimport") ->24 +# BEGIN 9: +# 29 <1> leavesub[1 ref] K/REFC,1 ->(end) +# - <@> lineseq KP ->29 +# 26 <;> nextstate(main 3 -e:1) v:{ ->27 +# 28 <1> postinc[t2] sK/1 ->29 +# - <1> ex-rv2sv sKRM/1 ->28 +# 27 <$> gvsv(*beg) s ->28 EONT_EONT checkOptree ( name => 'END', @@ -317,40 +375,40 @@ strip_open_hints => 1, expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); # BEGIN 1: -# 1 <;> nextstate(B::Concise -1151 Concise.pm:116) v:*,&,{,x*,x&,x$,$ -# 2 <#> gv[*STDOUT] s -# 3 <1> rv2gv sKRM/STRICT,1 -# 4 <1> srefgen sK/1 -# 5 <#> gvsv[*B::Concise::walkHandle] s -# 6 <2> sassign sKS/2 -# 7 <1> leavesub[1 ref] K/REFC,1 +# 1 <;> nextstate(Exporter::Heavy -1410 Heavy.pm:4) v:*,&,{,x*,x&,x$,$ +# 2 <$> const[PV "strict.pm"] s/BARE +# 3 <1> require sK/1 +# 4 <;> nextstate(Exporter::Heavy -1410 Heavy.pm:4) :*,&,{,x*,x&,x$,$ +# 5 <0> pushmark s +# 6 <$> const[PV "strict"] sM +# 7 <$> const[PV "refs"] sM +# 8 <.> method_named[PV "unimport"] +# 9 <1> entersub[t1] KRS*/TARG,STRICT +# a <1> leavesub[1 ref] K/REFC,1 # BEGIN 2: -# 8 <;> nextstate(B::Concise -1113 Concise.pm:181) v:*,&,x*,x&,x$,$ -# 9 <$> const[PV "strict.pm"] s/BARE -# a <1> require sK/1 -# b <;> nextstate(B::Concise -1113 Concise.pm:181) :*,&,x*,x&,x$,$ -# c <0> pushmark s -# d <$> const[PV "strict"] sM -# e <$> const[PV "refs"] sM -# f <.> method_named[PV "unimport"] -# g <1> entersub[t1] KRS*/TARG,STRICT -# h <1> leavesub[1 ref] K/REFC,1 +# b <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) v:*,&,{,x*,x&,x$ +# c <$> const[PV "warnings.pm"] s/BARE +# d <1> require sK/1 +# e <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) :*,&,{,x*,x&,x$ +# f <0> pushmark s +# g <$> const[PV "warnings"] sM +# h <$> const[PV "once"] sM +# i <.> method_named[PV "unimport"] +# j <1> entersub[t1] KRS*/TARG +# k <1> leavesub[1 ref] K/REFC,1 # BEGIN 3: -# i <;> nextstate(B::Concise -1010 Concise.pm:303) v:*,&,x*,x&,x$,$ -# j <$> const[PV "strict.pm"] s/BARE -# k <1> require sK/1 -# l <;> nextstate(B::Concise -1010 Concise.pm:303) :*,&,x*,x&,x$,$ -# m <0> pushmark s -# n <$> const[PV "strict"] sM -# o <$> const[PV "refs"] sM -# p <.> method_named[PV "unimport"] -# q <1> entersub[t1] KRS*/TARG,STRICT +# l <;> nextstate(B::Concise -1175 Concise.pm:117) v:*,&,{,x*,x&,x$,$ +# m <#> gv[*STDOUT] s +# n <1> rv2gv sKRM/STRICT,1 +# o <1> srefgen sK/1 +# p <#> gvsv[*B::Concise::walkHandle] s +# q <2> sassign sKS/2 # r <1> leavesub[1 ref] K/REFC,1 # BEGIN 4: -# s <;> nextstate(B::Concise -963 Concise.pm:368) v:*,&,{,x*,x&,x$,$ +# s <;> nextstate(B::Concise -1134 Concise.pm:183) v:*,&,x*,x&,x$,$ # t <$> const[PV "strict.pm"] s/BARE # u <1> require sK/1 -# v <;> nextstate(B::Concise -963 Concise.pm:368) :*,&,{,x*,x&,x$,$ +# v <;> nextstate(B::Concise -1134 Concise.pm:183) :*,&,x*,x&,x$,$ # w <0> pushmark s # x <$> const[PV "strict"] sM # y <$> const[PV "refs"] sM @@ -358,10 +416,10 @@ # 10 <1> entersub[t1] KRS*/TARG,STRICT # 11 <1> leavesub[1 ref] K/REFC,1 # BEGIN 5: -# 12 <;> nextstate(B::Concise -938 Concise.pm:388) v:*,&,x*,x&,x$,$ +# 12 <;> nextstate(B::Concise -1031 Concise.pm:305) v:*,&,x*,x&,x$,$ # 13 <$> const[PV "strict.pm"] s/BARE # 14 <1> require sK/1 -# 15 <;> nextstate(B::Concise -938 Concise.pm:388) :*,&,x*,x&,x$,$ +# 15 <;> nextstate(B::Concise -1031 Concise.pm:305) :*,&,x*,x&,x$,$ # 16 <0> pushmark s # 17 <$> const[PV "strict"] sM # 18 <$> const[PV "refs"] sM @@ -369,77 +427,99 @@ # 1a <1> entersub[t1] KRS*/TARG,STRICT # 1b <1> leavesub[1 ref] K/REFC,1 # BEGIN 6: -# 1c <;> nextstate(B::Concise -924 Concise.pm:408) v:*,&,{,x*,x&,x$,$ -# 1d <$> const[PV "warnings.pm"] s/BARE +# 1c <;> nextstate(B::Concise -984 Concise.pm:370) v:*,&,{,x*,x&,x$,$ +# 1d <$> const[PV "strict.pm"] s/BARE # 1e <1> require sK/1 -# 1f <;> nextstate(B::Concise -924 Concise.pm:408) :*,&,{,x*,x&,x$,$ +# 1f <;> nextstate(B::Concise -984 Concise.pm:370) :*,&,{,x*,x&,x$,$ # 1g <0> pushmark s -# 1h <$> const[PV "warnings"] sM -# 1i <$> const[PV "qw"] sM +# 1h <$> const[PV "strict"] sM +# 1i <$> const[PV "refs"] sM # 1j <.> method_named[PV "unimport"] # 1k <1> entersub[t1] KRS*/TARG,STRICT # 1l <1> leavesub[1 ref] K/REFC,1 # BEGIN 7: -# 1m <;> nextstate(main 3 -e:1) v:>,<,%,{ -# 1n <#> gvsv[*beg] s -# 1o <1> postinc[t3] sK/1 -# 1p <1> leavesub[1 ref] K/REFC,1 +# 1m <;> nextstate(B::Concise -959 Concise.pm:390) v:*,&,x*,x&,x$,$ +# 1n <$> const[PV "strict.pm"] s/BARE +# 1o <1> require sK/1 +# 1p <;> nextstate(B::Concise -959 Concise.pm:390) :*,&,x*,x&,x$,$ +# 1q <0> pushmark s +# 1r <$> const[PV "strict"] sM +# 1s <$> const[PV "refs"] sM +# 1t <.> method_named[PV "unimport"] +# 1u <1> entersub[t1] KRS*/TARG,STRICT +# 1v <1> leavesub[1 ref] K/REFC,1 +# BEGIN 8: +# 1w <;> nextstate(B::Concise -945 Concise.pm:410) v:*,&,{,x*,x&,x$,$ +# 1x <$> const[PV "warnings.pm"] s/BARE +# 1y <1> require sK/1 +# 1z <;> nextstate(B::Concise -945 Concise.pm:410) :*,&,{,x*,x&,x$,$ +# 20 <0> pushmark s +# 21 <$> const[PV "warnings"] sM +# 22 <$> const[PV "qw"] sM +# 23 <.> method_named[PV "unimport"] +# 24 <1> entersub[t1] KRS*/TARG,STRICT +# 25 <1> leavesub[1 ref] K/REFC,1 +# BEGIN 9: +# 26 <;> nextstate(main 3 -e:1) v:{ +# 27 <#> gvsv[*beg] s +# 28 <1> postinc[t3] sK/1 +# 29 <1> leavesub[1 ref] K/REFC,1 # END 1: -# 1q <;> nextstate(main 9 -e:1) v:>,<,%,{ -# 1r <#> gvsv[*end] s -# 1s <1> postinc[t3] sK/1 -# 1t <1> leavesub[1 ref] K/REFC,1 +# 2a <;> nextstate(main 9 -e:1) v:{ +# 2b <#> gvsv[*end] s +# 2c <1> postinc[t3] sK/1 +# 2d <1> leavesub[1 ref] K/REFC,1 # INIT 1: -# 1u <;> nextstate(main 7 -e:1) v:>,<,%,{ -# 1v <#> gvsv[*init] s -# 1w <1> postinc[t3] sK/1 -# 1x <1> leavesub[1 ref] K/REFC,1 +# 2e <;> nextstate(main 7 -e:1) v:{ +# 2f <#> gvsv[*init] s +# 2g <1> postinc[t3] sK/1 +# 2h <1> leavesub[1 ref] K/REFC,1 # CHECK 1: -# 1y <;> nextstate(main 5 -e:1) v:>,<,%,{ -# 1z <#> gvsv[*chk] s -# 20 <1> postinc[t3] sK/1 -# 21 <1> leavesub[1 ref] K/REFC,1 +# 2i <;> nextstate(main 5 -e:1) v:{ +# 2j <#> gvsv[*chk] s +# 2k <1> postinc[t3] sK/1 +# 2l <1> leavesub[1 ref] K/REFC,1 # UNITCHECK 1: -# 22 <;> nextstate(main 11 -e:1) v:>,<,%,{ -# 23 <#> gvsv[*uc] s -# 24 <1> postinc[t3] sK/1 -# 25 <1> leavesub[1 ref] K/REFC,1 +# 2m <;> nextstate(main 11 -e:1) v:{ +# 2n <#> gvsv[*uc] s +# 2o <1> postinc[t3] sK/1 +# 2p <1> leavesub[1 ref] K/REFC,1 EOT_EOT # BEGIN 1: -# 1 <;> nextstate(B::Concise -1151 Concise.pm:116) v:*,&,{,x*,x&,x$,$ -# 2 <$> gv(*STDOUT) s -# 3 <1> rv2gv sKRM/STRICT,1 -# 4 <1> srefgen sK/1 -# 5 <$> gvsv(*B::Concise::walkHandle) s -# 6 <2> sassign sKS/2 -# 7 <1> leavesub[1 ref] K/REFC,1 +# 1 <;> nextstate(Exporter::Heavy -1410 Heavy.pm:4) v:*,&,{,x*,x&,x$,$ +# 2 <$> const(PV "strict.pm") s/BARE +# 3 <1> require sK/1 +# 4 <;> nextstate(Exporter::Heavy -1410 Heavy.pm:4) :*,&,{,x*,x&,x$,$ +# 5 <0> pushmark s +# 6 <$> const(PV "strict") sM +# 7 <$> const(PV "refs") sM +# 8 <.> method_named(PV "unimport") +# 9 <1> entersub[t1] KRS*/TARG,STRICT +# a <1> leavesub[1 ref] K/REFC,1 # BEGIN 2: -# 8 <;> nextstate(B::Concise -1113 Concise.pm:181) v:*,&,x*,x&,x$,$ -# 9 <$> const(PV "strict.pm") s/BARE -# a <1> require sK/1 -# b <;> nextstate(B::Concise -1113 Concise.pm:181) :*,&,x*,x&,x$,$ -# c <0> pushmark s -# d <$> const(PV "strict") sM -# e <$> const(PV "refs") sM -# f <.> method_named(PV "unimport") -# g <1> entersub[t1] KRS*/TARG,STRICT -# h <1> leavesub[1 ref] K/REFC,1 +# b <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) v:*,&,{,x*,x&,x$ +# c <$> const(PV "warnings.pm") s/BARE +# d <1> require sK/1 +# e <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) :*,&,{,x*,x&,x$ +# f <0> pushmark s +# g <$> const(PV "warnings") sM +# h <$> const(PV "once") sM +# i <.> method_named(PV "unimport") +# j <1> entersub[t1] KRS*/TARG +# k <1> leavesub[1 ref] K/REFC,1 # BEGIN 3: -# i <;> nextstate(B::Concise -1010 Concise.pm:303) v:*,&,x*,x&,x$,$ -# j <$> const(PV "strict.pm") s/BARE -# k <1> require sK/1 -# l <;> nextstate(B::Concise -1010 Concise.pm:303) :*,&,x*,x&,x$,$ -# m <0> pushmark s -# n <$> const(PV "strict") sM -# o <$> const(PV "refs") sM -# p <.> method_named(PV "unimport") -# q <1> entersub[t1] KRS*/TARG,STRICT +# l <;> nextstate(B::Concise -1175 Concise.pm:117) v:*,&,{,x*,x&,x$,$ +# m <$> gv(*STDOUT) s +# n <1> rv2gv sKRM/STRICT,1 +# o <1> srefgen sK/1 +# p <$> gvsv(*B::Concise::walkHandle) s +# q <2> sassign sKS/2 # r <1> leavesub[1 ref] K/REFC,1 # BEGIN 4: -# s <;> nextstate(B::Concise -963 Concise.pm:368) v:*,&,{,x*,x&,x$,$ +# s <;> nextstate(B::Concise -1134 Concise.pm:183) v:*,&,x*,x&,x$,$ # t <$> const(PV "strict.pm") s/BARE # u <1> require sK/1 -# v <;> nextstate(B::Concise -963 Concise.pm:368) :*,&,{,x*,x&,x$,$ +# v <;> nextstate(B::Concise -1134 Concise.pm:183) :*,&,x*,x&,x$,$ # w <0> pushmark s # x <$> const(PV "strict") sM # y <$> const(PV "refs") sM @@ -447,10 +527,10 @@ # 10 <1> entersub[t1] KRS*/TARG,STRICT # 11 <1> leavesub[1 ref] K/REFC,1 # BEGIN 5: -# 12 <;> nextstate(B::Concise -938 Concise.pm:388) v:*,&,x*,x&,x$,$ +# 12 <;> nextstate(B::Concise -1031 Concise.pm:305) v:*,&,x*,x&,x$,$ # 13 <$> const(PV "strict.pm") s/BARE # 14 <1> require sK/1 -# 15 <;> nextstate(B::Concise -938 Concise.pm:388) :*,&,x*,x&,x$,$ +# 15 <;> nextstate(B::Concise -1031 Concise.pm:305) :*,&,x*,x&,x$,$ # 16 <0> pushmark s # 17 <$> const(PV "strict") sM # 18 <$> const(PV "refs") sM @@ -458,41 +538,63 @@ # 1a <1> entersub[t1] KRS*/TARG,STRICT # 1b <1> leavesub[1 ref] K/REFC,1 # BEGIN 6: -# 1c <;> nextstate(B::Concise -924 Concise.pm:408) v:*,&,{,x*,x&,x$,$ -# 1d <$> const(PV "warnings.pm") s/BARE +# 1c <;> nextstate(B::Concise -984 Concise.pm:370) v:*,&,{,x*,x&,x$,$ +# 1d <$> const(PV "strict.pm") s/BARE # 1e <1> require sK/1 -# 1f <;> nextstate(B::Concise -924 Concise.pm:408) :*,&,{,x*,x&,x$,$ +# 1f <;> nextstate(B::Concise -984 Concise.pm:370) :*,&,{,x*,x&,x$,$ # 1g <0> pushmark s -# 1h <$> const(PV "warnings") sM -# 1i <$> const(PV "qw") sM +# 1h <$> const(PV "strict") sM +# 1i <$> const(PV "refs") sM # 1j <.> method_named(PV "unimport") # 1k <1> entersub[t1] KRS*/TARG,STRICT # 1l <1> leavesub[1 ref] K/REFC,1 # BEGIN 7: -# 1m <;> nextstate(main 3 -e:1) v:>,<,%,{ -# 1n <$> gvsv(*beg) s -# 1o <1> postinc[t2] sK/1 -# 1p <1> leavesub[1 ref] K/REFC,1 +# 1m <;> nextstate(B::Concise -959 Concise.pm:390) v:*,&,x*,x&,x$,$ +# 1n <$> const(PV "strict.pm") s/BARE +# 1o <1> require sK/1 +# 1p <;> nextstate(B::Concise -959 Concise.pm:390) :*,&,x*,x&,x$,$ +# 1q <0> pushmark s +# 1r <$> const(PV "strict") sM +# 1s <$> const(PV "refs") sM +# 1t <.> method_named(PV "unimport") +# 1u <1> entersub[t1] KRS*/TARG,STRICT +# 1v <1> leavesub[1 ref] K/REFC,1 +# BEGIN 8: +# 1w <;> nextstate(B::Concise -945 Concise.pm:410) v:*,&,{,x*,x&,x$,$ +# 1x <$> const(PV "warnings.pm") s/BARE +# 1y <1> require sK/1 +# 1z <;> nextstate(B::Concise -945 Concise.pm:410) :*,&,{,x*,x&,x$,$ +# 20 <0> pushmark s +# 21 <$> const(PV "warnings") sM +# 22 <$> const(PV "qw") sM +# 23 <.> method_named(PV "unimport") +# 24 <1> entersub[t1] KRS*/TARG,STRICT +# 25 <1> leavesub[1 ref] K/REFC,1 +# BEGIN 9: +# 26 <;> nextstate(main 3 -e:1) v:{ +# 27 <$> gvsv(*beg) s +# 28 <1> postinc[t2] sK/1 +# 29 <1> leavesub[1 ref] K/REFC,1 # END 1: -# 1q <;> nextstate(main 9 -e:1) v:>,<,%,{ -# 1r <$> gvsv(*end) s -# 1s <1> postinc[t2] sK/1 -# 1t <1> leavesub[1 ref] K/REFC,1 +# 2a <;> nextstate(main 9 -e:1) v:{ +# 2b <$> gvsv(*end) s +# 2c <1> postinc[t2] sK/1 +# 2d <1> leavesub[1 ref] K/REFC,1 # INIT 1: -# 1u <;> nextstate(main 7 -e:1) v:>,<,%,{ -# 1v <$> gvsv(*init) s -# 1w <1> postinc[t2] sK/1 -# 1x <1> leavesub[1 ref] K/REFC,1 +# 2e <;> nextstate(main 7 -e:1) v:{ +# 2f <$> gvsv(*init) s +# 2g <1> postinc[t2] sK/1 +# 2h <1> leavesub[1 ref] K/REFC,1 # CHECK 1: -# 1y <;> nextstate(main 5 -e:1) v:>,<,%,{ -# 1z <$> gvsv(*chk) s -# 20 <1> postinc[t2] sK/1 -# 21 <1> leavesub[1 ref] K/REFC,1 +# 2i <;> nextstate(main 5 -e:1) v:{ +# 2j <$> gvsv(*chk) s +# 2k <1> postinc[t2] sK/1 +# 2l <1> leavesub[1 ref] K/REFC,1 # UNITCHECK 1: -# 22 <;> nextstate(main 11 -e:1) v:>,<,%,{ -# 23 <$> gvsv(*uc) s -# 24 <1> postinc[t2] sK/1 -# 25 <1> leavesub[1 ref] K/REFC,1 +# 2m <;> nextstate(main 11 -e:1) v:{ +# 2n <$> gvsv(*uc) s +# 2o <1> postinc[t2] sK/1 +# 2p <1> leavesub[1 ref] K/REFC,1 EONT_EONT # perl "-I../lib" -MO=Concise,BEGIN,CHECK,INIT,END,-exec -e '$a=$b && print q/foo/' @@ -502,40 +604,40 @@ prog => 'print q/foo/', expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); # BEGIN 1: -# 1 <;> nextstate(B::Concise -275 Concise.pm:356) v:*,&,{,x*,x&,x$,$ -# 2 <#> gv[*STDOUT] s -# 3 <1> rv2gv sKRM/STRICT,1 -# 4 <1> srefgen sK/1 -# 5 <#> gvsv[*B::Concise::walkHandle] s -# 6 <2> sassign sKS/2 -# 7 <1> leavesub[1 ref] K/REFC,1 +# 1 <;> nextstate(Exporter::Heavy -1410 Heavy.pm:4) v:*,&,{,x*,x&,x$,$ +# 2 <$> const[PV "strict.pm"] s/BARE +# 3 <1> require sK/1 +# 4 <;> nextstate(Exporter::Heavy -1410 Heavy.pm:4) :*,&,{,x*,x&,x$,$ +# 5 <0> pushmark s +# 6 <$> const[PV "strict"] sM +# 7 <$> const[PV "refs"] sM +# 8 <.> method_named[PV "unimport"] +# 9 <1> entersub[t1] KRS*/TARG,STRICT +# a <1> leavesub[1 ref] K/REFC,1 # BEGIN 2: -# 8 <;> nextstate(B::Concise -1113 Concise.pm:181) v:*,&,x*,x&,x$,$ -# 9 <$> const[PV "strict.pm"] s/BARE -# a <1> require sK/1 -# b <;> nextstate(B::Concise -1113 Concise.pm:181) :*,&,x*,x&,x$,$ -# c <0> pushmark s -# d <$> const[PV "strict"] sM -# e <$> const[PV "refs"] sM -# f <.> method_named[PV "unimport"] -# g <1> entersub[t1] KRS*/TARG,STRICT -# h <1> leavesub[1 ref] K/REFC,1 +# b <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) v:*,&,{,x*,x&,x$ +# c <$> const[PV "warnings.pm"] s/BARE +# d <1> require sK/1 +# e <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) :*,&,{,x*,x&,x$ +# f <0> pushmark s +# g <$> const[PV "warnings"] sM +# h <$> const[PV "once"] sM +# i <.> method_named[PV "unimport"] +# j <1> entersub[t1] KRS*/TARG +# k <1> leavesub[1 ref] K/REFC,1 # BEGIN 3: -# i <;> nextstate(B::Concise -1010 Concise.pm:303) v:*,&,x*,x&,x$,$ -# j <$> const[PV "strict.pm"] s/BARE -# k <1> require sK/1 -# l <;> nextstate(B::Concise -1010 Concise.pm:303) :*,&,x*,x&,x$,$ -# m <0> pushmark s -# n <$> const[PV "strict"] sM -# o <$> const[PV "refs"] sM -# p <.> method_named[PV "unimport"] -# q <1> entersub[t1] KRS*/TARG,STRICT +# l <;> nextstate(B::Concise -1175 Concise.pm:117) v:*,&,{,x*,x&,x$,$ +# m <#> gv[*STDOUT] s +# n <1> rv2gv sKRM/STRICT,1 +# o <1> srefgen sK/1 +# p <#> gvsv[*B::Concise::walkHandle] s +# q <2> sassign sKS/2 # r <1> leavesub[1 ref] K/REFC,1 # BEGIN 4: -# s <;> nextstate(B::Concise -963 Concise.pm:368) v:*,&,{,x*,x&,x$,$ +# s <;> nextstate(B::Concise -1134 Concise.pm:183) v:*,&,x*,x&,x$,$ # t <$> const[PV "strict.pm"] s/BARE # u <1> require sK/1 -# v <;> nextstate(B::Concise -963 Concise.pm:368) :*,&,{,x*,x&,x$,$ +# v <;> nextstate(B::Concise -1134 Concise.pm:183) :*,&,x*,x&,x$,$ # w <0> pushmark s # x <$> const[PV "strict"] sM # y <$> const[PV "refs"] sM @@ -543,10 +645,10 @@ # 10 <1> entersub[t1] KRS*/TARG,STRICT # 11 <1> leavesub[1 ref] K/REFC,1 # BEGIN 5: -# 12 <;> nextstate(B::Concise -938 Concise.pm:388) v:*,&,x*,x&,x$,$ +# 12 <;> nextstate(B::Concise -1031 Concise.pm:305) v:*,&,x*,x&,x$,$ # 13 <$> const[PV "strict.pm"] s/BARE # 14 <1> require sK/1 -# 15 <;> nextstate(B::Concise -938 Concise.pm:388) :*,&,x*,x&,x$,$ +# 15 <;> nextstate(B::Concise -1031 Concise.pm:305) :*,&,x*,x&,x$,$ # 16 <0> pushmark s # 17 <$> const[PV "strict"] sM # 18 <$> const[PV "refs"] sM @@ -554,52 +656,74 @@ # 1a <1> entersub[t1] KRS*/TARG,STRICT # 1b <1> leavesub[1 ref] K/REFC,1 # BEGIN 6: -# 1c <;> nextstate(B::Concise -924 Concise.pm:408) v:*,&,{,x*,x&,x$,$ -# 1d <$> const[PV "warnings.pm"] s/BARE +# 1c <;> nextstate(B::Concise -984 Concise.pm:370) v:*,&,{,x*,x&,x$,$ +# 1d <$> const[PV "strict.pm"] s/BARE # 1e <1> require sK/1 -# 1f <;> nextstate(B::Concise -924 Concise.pm:408) :*,&,{,x*,x&,x$,$ +# 1f <;> nextstate(B::Concise -984 Concise.pm:370) :*,&,{,x*,x&,x$,$ # 1g <0> pushmark s -# 1h <$> const[PV "warnings"] sM -# 1i <$> const[PV "qw"] sM +# 1h <$> const[PV "strict"] sM +# 1i <$> const[PV "refs"] sM # 1j <.> method_named[PV "unimport"] # 1k <1> entersub[t1] KRS*/TARG,STRICT # 1l <1> leavesub[1 ref] K/REFC,1 +# BEGIN 7: +# 1m <;> nextstate(B::Concise -959 Concise.pm:390) v:*,&,x*,x&,x$,$ +# 1n <$> const[PV "strict.pm"] s/BARE +# 1o <1> require sK/1 +# 1p <;> nextstate(B::Concise -959 Concise.pm:390) :*,&,x*,x&,x$,$ +# 1q <0> pushmark s +# 1r <$> const[PV "strict"] sM +# 1s <$> const[PV "refs"] sM +# 1t <.> method_named[PV "unimport"] +# 1u <1> entersub[t1] KRS*/TARG,STRICT +# 1v <1> leavesub[1 ref] K/REFC,1 +# BEGIN 8: +# 1w <;> nextstate(B::Concise -945 Concise.pm:410) v:*,&,{,x*,x&,x$,$ +# 1x <$> const[PV "warnings.pm"] s/BARE +# 1y <1> require sK/1 +# 1z <;> nextstate(B::Concise -945 Concise.pm:410) :*,&,{,x*,x&,x$,$ +# 20 <0> pushmark s +# 21 <$> const[PV "warnings"] sM +# 22 <$> const[PV "qw"] sM +# 23 <.> method_named[PV "unimport"] +# 24 <1> entersub[t1] KRS*/TARG,STRICT +# 25 <1> leavesub[1 ref] K/REFC,1 EOT_EOT # BEGIN 1: -# 1 <;> nextstate(B::Concise -1151 Concise.pm:116) v:*,&,{,x*,x&,x$,$ -# 2 <$> gv(*STDOUT) s -# 3 <1> rv2gv sKRM/STRICT,1 -# 4 <1> srefgen sK/1 -# 5 <$> gvsv(*B::Concise::walkHandle) s -# 6 <2> sassign sKS/2 -# 7 <1> leavesub[1 ref] K/REFC,1 +# 1 <;> nextstate(Exporter::Heavy -1410 Heavy.pm:4) v:*,&,{,x*,x&,x$,$ +# 2 <$> const(PV "strict.pm") s/BARE +# 3 <1> require sK/1 +# 4 <;> nextstate(Exporter::Heavy -1410 Heavy.pm:4) :*,&,{,x*,x&,x$,$ +# 5 <0> pushmark s +# 6 <$> const(PV "strict") sM +# 7 <$> const(PV "refs") sM +# 8 <.> method_named(PV "unimport") +# 9 <1> entersub[t1] KRS*/TARG,STRICT +# a <1> leavesub[1 ref] K/REFC,1 # BEGIN 2: -# 8 <;> nextstate(B::Concise -1113 Concise.pm:181) v:*,&,x*,x&,x$,$ -# 9 <$> const(PV "strict.pm") s/BARE -# a <1> require sK/1 -# b <;> nextstate(B::Concise -1113 Concise.pm:181) :*,&,x*,x&,x$,$ -# c <0> pushmark s -# d <$> const(PV "strict") sM -# e <$> const(PV "refs") sM -# f <.> method_named(PV "unimport") -# g <1> entersub[t1] KRS*/TARG,STRICT -# h <1> leavesub[1 ref] K/REFC,1 +# b <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) v:*,&,{,x*,x&,x$ +# c <$> const(PV "warnings.pm") s/BARE +# d <1> require sK/1 +# e <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) :*,&,{,x*,x&,x$ +# f <0> pushmark s +# g <$> const(PV "warnings") sM +# h <$> const(PV "once") sM +# i <.> method_named(PV "unimport") +# j <1> entersub[t1] KRS*/TARG +# k <1> leavesub[1 ref] K/REFC,1 # BEGIN 3: -# i <;> nextstate(B::Concise -1010 Concise.pm:303) v:*,&,x*,x&,x$,$ -# j <$> const(PV "strict.pm") s/BARE -# k <1> require sK/1 -# l <;> nextstate(B::Concise -1010 Concise.pm:303) :*,&,x*,x&,x$,$ -# m <0> pushmark s -# n <$> const(PV "strict") sM -# o <$> const(PV "refs") sM -# p <.> method_named(PV "unimport") -# q <1> entersub[t1] KRS*/TARG,STRICT +# l <;> nextstate(B::Concise -1175 Concise.pm:117) v:*,&,{,x*,x&,x$,$ +# m <$> gv(*STDOUT) s +# n <1> rv2gv sKRM/STRICT,1 +# o <1> srefgen sK/1 +# p <$> gvsv(*B::Concise::walkHandle) s +# q <2> sassign sKS/2 # r <1> leavesub[1 ref] K/REFC,1 # BEGIN 4: -# s <;> nextstate(B::Concise -963 Concise.pm:368) v:*,&,{,x*,x&,x$,$ +# s <;> nextstate(B::Concise -1134 Concise.pm:183) v:*,&,x*,x&,x$,$ # t <$> const(PV "strict.pm") s/BARE # u <1> require sK/1 -# v <;> nextstate(B::Concise -963 Concise.pm:368) :*,&,{,x*,x&,x$,$ +# v <;> nextstate(B::Concise -1134 Concise.pm:183) :*,&,x*,x&,x$,$ # w <0> pushmark s # x <$> const(PV "strict") sM # y <$> const(PV "refs") sM @@ -607,10 +731,10 @@ # 10 <1> entersub[t1] KRS*/TARG,STRICT # 11 <1> leavesub[1 ref] K/REFC,1 # BEGIN 5: -# 12 <;> nextstate(B::Concise -938 Concise.pm:388) v:*,&,x*,x&,x$,$ +# 12 <;> nextstate(B::Concise -1031 Concise.pm:305) v:*,&,x*,x&,x$,$ # 13 <$> const(PV "strict.pm") s/BARE # 14 <1> require sK/1 -# 15 <;> nextstate(B::Concise -938 Concise.pm:388) :*,&,x*,x&,x$,$ +# 15 <;> nextstate(B::Concise -1031 Concise.pm:305) :*,&,x*,x&,x$,$ # 16 <0> pushmark s # 17 <$> const(PV "strict") sM # 18 <$> const(PV "refs") sM @@ -618,14 +742,36 @@ # 1a <1> entersub[t1] KRS*/TARG,STRICT # 1b <1> leavesub[1 ref] K/REFC,1 # BEGIN 6: -# 1c <;> nextstate(B::Concise -924 Concise.pm:408) v:*,&,{,x*,x&,x$,$ -# 1d <$> const(PV "warnings.pm") s/BARE +# 1c <;> nextstate(B::Concise -984 Concise.pm:370) v:*,&,{,x*,x&,x$,$ +# 1d <$> const(PV "strict.pm") s/BARE # 1e <1> require sK/1 -# 1f <;> nextstate(B::Concise -924 Concise.pm:408) :*,&,{,x*,x&,x$,$ +# 1f <;> nextstate(B::Concise -984 Concise.pm:370) :*,&,{,x*,x&,x$,$ # 1g <0> pushmark s -# 1h <$> const(PV "warnings") sM -# 1i <$> const(PV "qw") sM +# 1h <$> const(PV "strict") sM +# 1i <$> const(PV "refs") sM # 1j <.> method_named(PV "unimport") # 1k <1> entersub[t1] KRS*/TARG,STRICT # 1l <1> leavesub[1 ref] K/REFC,1 +# BEGIN 7: +# 1m <;> nextstate(B::Concise -959 Concise.pm:390) v:*,&,x*,x&,x$,$ +# 1n <$> const(PV "strict.pm") s/BARE +# 1o <1> require sK/1 +# 1p <;> nextstate(B::Concise -959 Concise.pm:390) :*,&,x*,x&,x$,$ +# 1q <0> pushmark s +# 1r <$> const(PV "strict") sM +# 1s <$> const(PV "refs") sM +# 1t <.> method_named(PV "unimport") +# 1u <1> entersub[t1] KRS*/TARG,STRICT +# 1v <1> leavesub[1 ref] K/REFC,1 +# BEGIN 8: +# 1w <;> nextstate(B::Concise -945 Concise.pm:410) v:*,&,{,x*,x&,x$,$ +# 1x <$> const(PV "warnings.pm") s/BARE +# 1y <1> require sK/1 +# 1z <;> nextstate(B::Concise -945 Concise.pm:410) :*,&,{,x*,x&,x$,$ +# 20 <0> pushmark s +# 21 <$> const(PV "warnings") sM +# 22 <$> const(PV "qw") sM +# 23 <.> method_named(PV "unimport") +# 24 <1> entersub[t1] KRS*/TARG,STRICT +# 25 <1> leavesub[1 ref] K/REFC,1 EONT_EONT diff -Nru perl-5.32.1/ext/B/t/showlex.t perl-5.34.0/ext/B/t/showlex.t --- perl-5.32.1/ext/B/t/showlex.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/B/t/showlex.t 2020-10-04 22:17:13.000000000 +0000 @@ -20,18 +20,11 @@ my $verbose = @ARGV; # set if ANY ARGS -my $a; - my $path = join " ", map { qq["-I$_"] } @INC; -my $is_thread = $Config{use5005threads} && $Config{use5005threads} eq 'define'; -if ($is_thread) { - ok "# use5005threads: test skipped\n"; -} else { - $a = `$^X $path "-MO=Showlex" -e "my \@one" 2>&1`; - like ($a, qr/undef.*: \([^)]*\) \@one.*Nullsv.*AV/s, - "canonical usage works"); -} +my $o = `$^X $path "-MO=Showlex" -e "my \@one" 2>&1`; +like ($o, qr/undef.*: \([^)]*\) \@one.*Nullsv.*AV/s, + "canonical usage works"); # v1.01 tests diff -Nru perl-5.32.1/ext/B/typemap perl-5.34.0/ext/B/typemap --- perl-5.32.1/ext/B/typemap 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/B/typemap 2020-11-18 22:09:15.000000000 +0000 @@ -27,6 +27,7 @@ B::AV T_SV_OBJ B::IO T_SV_OBJ B::FM T_SV_OBJ +B::INVLIST T_SV_OBJ B::MAGIC T_MG_OBJ SSize_t T_IV diff -Nru perl-5.32.1/ext/Devel-Peek/Peek.pm perl-5.34.0/ext/Devel-Peek/Peek.pm --- perl-5.32.1/ext/Devel-Peek/Peek.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/Devel-Peek/Peek.pm 2020-10-24 18:43:34.000000000 +0000 @@ -3,7 +3,7 @@ package Devel::Peek; -$VERSION = '1.28'; +$VERSION = '1.30'; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; @@ -119,7 +119,7 @@ The C function takes one or two arguments: something to dump, and an optional limit for recursion and array elements (default is 4). The -first argument is evaluted in rvalue scalar context, with exceptions for +first argument is evaluated in rvalue scalar context, with exceptions for @array and %hash, which dump the array or hash itself. So C works, as does C. And C will call C in rvalue context, whereas C will call it in lvalue context. diff -Nru perl-5.32.1/ext/Devel-Peek/Peek.xs perl-5.34.0/ext/Devel-Peek/Peek.xs --- perl-5.32.1/ext/Devel-Peek/Peek.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/Devel-Peek/Peek.xs 2020-10-04 22:17:13.000000000 +0000 @@ -328,7 +328,6 @@ static void S_do_dump(pTHX_ SV *const sv, I32 lim) { - dVAR; SV *pv_lim_sv = perl_get_sv("Devel::Peek::pv_limit", 0); const STRLEN pv_lim = pv_lim_sv ? SvIV(pv_lim_sv) : 0; SV *dumpop = perl_get_sv("Devel::Peek::dump_ops", 0); diff -Nru perl-5.32.1/ext/Devel-Peek/t/Peek.t perl-5.34.0/ext/Devel-Peek/t/Peek.t --- perl-5.32.1/ext/Devel-Peek/t/Peek.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/Devel-Peek/t/Peek.t 2020-11-18 22:09:15.000000000 +0000 @@ -38,9 +38,11 @@ my $pattern = $_[2]; my $do_eval = $_[5]; if (open(OUT,'>', "peek$$")) { - open(STDERR, ">&OUT") or die "Can't dup OUT: $!"; + my $setup_stderr = sub { open(STDERR, ">&OUT") or die "Can't dup OUT: $!" }; if ($do_eval) { my $sub = eval "sub { Dump $_[1] }"; + die $@ if $@; + $setup_stderr->(); $sub->(); print STDERR "*****\n"; # second dump to compare with the first to make sure nothing @@ -48,6 +50,7 @@ $sub->(); } else { + $setup_stderr->(); Dump($_[1]); print STDERR "*****\n"; # second dump to compare with the first to make sure nothing @@ -342,6 +345,8 @@ \\d+\\. $ADDR<\\d+> \\(\\d+,\\d+\\) "\\$repeat_todo" \\d+\\. $ADDR<\\d+> \\(\\d+,\\d+\\) "\\$pattern" \\d+\\. $ADDR<\\d+> \\(\\d+,\\d+\\) "\\$do_eval" +\s+\\d+\\. $ADDR<\\d+> \\(\\d+,\\d+\\) "\\$setup_stderr" +\s+\\d+\\. $ADDR<\\d+> \\(\\d+,\\d+\\) "&" \\d+\\. $ADDR<\\d+> \\(\\d+,\\d+\\) "\\$sub" \\d+\\. $ADDR<\\d+> FAKE "\\$DEBUG" flags=0x0 index=0 \\d+\\. $ADDR<\\d+> \\(\\d+,\\d+\\) "\\$dump" diff -Nru perl-5.32.1/ext/DynaLoader/dl_symbian.xs perl-5.34.0/ext/DynaLoader/dl_symbian.xs --- perl-5.32.1/ext/DynaLoader/dl_symbian.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/DynaLoader/dl_symbian.xs 1970-01-01 00:00:00.000000000 +0000 @@ -1,245 +0,0 @@ -/* dl_symbian.xs - * - * Platform: Symbian 7.0s - * Author: Jarkko Hietaniemi - * Copyright: 2004, Nokia - * License: Artistic/GPL - * - */ - -/* - * In Symbian DLLs there is no name information, one can only access - * the functions by their ordinals. Perl, however, very much would like - * to load functions by their names. We fake this by having a special - * setup function at the ordinal 1 (this is arranged by building the DLLs - * in a special way). The setup function builds a Perl hash mapping the - * names to the ordinals, and the hash is then used by dlsym(). - * - */ - -#include -#include -#include - -/* This is a useful pattern: first include the Symbian headers, - * only after that the Perl ones. Otherwise you will get a lot - * trouble because of Symbian's New(), Copy(), etc definitions. */ - -#define PERL_EXT -#define PERL_IN_DL_SYMBIAN_XS - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -START_EXTERN_C - -void *dlopen(const char *filename, int flag); -void *dlsym(void *handle, const char *symbol); -int dlclose(void *handle); -const char *dlerror(void); - -extern void* memset(void *s, int c, size_t n); -extern size_t strlen(const char *s); - -END_EXTERN_C - -#include "dlutils.c" - -#define RTLD_LAZY 0x0001 -#define RTLD_NOW 0x0002 -#define RTLD_GLOBAL 0x0004 - -#ifndef NULL -# define NULL 0 -#endif - -/* No need to pull in symbian_dll.cpp for this. */ -#define symbian_get_vars() ((void*)Dll::Tls()) - -const TInt KPerlDllSetupFunction = 1; - -typedef struct { - RLibrary handle; - TInt error; - HV* symbols; -} PerlSymbianLibHandle; - -typedef void (*PerlSymbianLibInit)(void *); - -void* dlopen(const char *filename, int flags) { - TBuf16 utf16fn; - const TUint8* utf8fn = (const TUint8*)filename; - PerlSymbianLibHandle* h = NULL; - TInt error; - - error = - CnvUtfConverter::ConvertToUnicodeFromUtf8(utf16fn, TPtrC8(utf8fn)); - if (error == KErrNone) { - h = new PerlSymbianLibHandle; - if (h) { - h->error = KErrNone; - h->symbols = (HV *)NULL; - } else - error = KErrNoMemory; - } - - if (h && error == KErrNone) { - error = (h->handle).Load(utf16fn); - if (error == KErrNone) { - TLibraryFunction init = (h->handle).Lookup(KPerlDllSetupFunction); - ((PerlSymbianLibInit)init)(h); - } else { - free(h); - h = NULL; - } - } - - if (h) - h->error = error; - - return h; -} - -void* dlsym(void *handle, const char *symbol) { - if (handle) { - dTHX; - PerlSymbianLibHandle* h = (PerlSymbianLibHandle*)handle; - HV* symbols = h->symbols; - if (symbols) { - SV** svp = hv_fetch(symbols, symbol, strlen(symbol), FALSE); - if (svp && *svp && SvIOK(*svp)) { - IV ord = SvIV(*svp); - if (ord > 0) - return (void*)((h->handle).Lookup(ord)); - } - } - } - return NULL; -} - -int dlclose(void *handle) { - PerlSymbianLibHandle* h = (PerlSymbianLibHandle*)handle; - if (h) { - (h->handle).Close(); - if (h->symbols) { - dTHX; - hv_undef(h->symbols); - h->symbols = NULL; - } - return 0; - } else - return 1; -} - -const char* dlerror(void) { - return 0; /* Bad interface: assumes static data. */ -} - -static void -dl_private_init(pTHX) -{ - (void)dl_generic_private_init(aTHX); -} - -MODULE = DynaLoader PACKAGE = DynaLoader - -PROTOTYPES: ENABLE - -BOOT: - (void)dl_private_init(aTHX); - - -void -dl_load_file(filename, flags=0) - char * filename - int flags - PREINIT: - PerlSymbianLibHandle* h; - CODE: -{ - ST(0) = sv_newmortal(); - h = (PerlSymbianLibHandle*)dlopen(filename, flags); - if (h && h->error == KErrNone) - sv_setiv(ST(0), PTR2IV(h)); - else - SaveError(aTHX_ "(dl_load_file %s %d)" - filename, h ? h->error : -1); -} - - -int -dl_unload_file(libhandle) - void * libhandle - CODE: - RETVAL = (dlclose(libhandle) == 0 ? 1 : 0); - OUTPUT: - RETVAL - - -void -dl_find_symbol(libhandle, symbolname, ign_err=0) - void * libhandle - char * symbolname - int ign_err - PREINIT: - void *sym; - CODE: - PerlSymbianLibHandle* h = (PerlSymbianLibHandle*)libhandle; - sym = dlsym(libhandle, symbolname); - ST(0) = sv_newmortal(); - if (sym) { - sv_setiv(ST(0), PTR2IV(sym)); - } else { - if (!ign_err) - SaveError(aTHX_ "(dl_find_symbol %s %d)", - symbolname, h ? h->error : -1); - } - - -void -dl_undef_symbols() - CODE: - - - -# These functions should not need changing on any platform: - -void -dl_install_xsub(perl_name, symref, filename="$Package") - char * perl_name - void * symref - const char * filename - CODE: - ST(0) = sv_2mortal(newRV((SV*)newXS_flags(perl_name, - (void(*)(pTHX_ CV *))symref, - filename, NULL, - XS_DYNAMIC_FILENAME))); - - -SV * -dl_error() - CODE: - dMY_CXT; - RETVAL = newSVsv(MY_CXT.x_dl_last_error); - OUTPUT: - RETVAL - -#if defined(USE_ITHREADS) - -void -CLONE(...) - CODE: - MY_CXT_CLONE; - - PERL_UNUSED_VAR(items); - - /* MY_CXT_CLONE just does a memcpy on the whole structure, so to avoid - * using Perl variables that belong to another thread, we create our - * own for this thread. - */ - MY_CXT.x_dl_last_error = newSVpvs(""); - -#endif - -# end. diff -Nru perl-5.32.1/ext/DynaLoader/dlutils.c perl-5.34.0/ext/DynaLoader/dlutils.c --- perl-5.32.1/ext/DynaLoader/dlutils.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/DynaLoader/dlutils.c 2021-01-20 23:04:44.000000000 +0000 @@ -27,10 +27,10 @@ typedef struct { SV* x_dl_last_error; /* pointer to allocated memory for - last error message */ + last error message */ #if defined(PERL_IN_DL_HPUX_XS) || defined(PERL_IN_DL_DLOPEN_XS) int x_dl_nonlazy; /* flag for immediate rather than lazy - linking (spots unresolved symbol) */ + linking (spots unresolved symbol) */ #endif #ifdef DL_LOADONCEONLY HV * x_dl_loaded_files; /* only needed on a few systems */ @@ -62,8 +62,8 @@ #ifdef DEBUGGING #define DLDEBUG(level,code) \ STMT_START { \ - dMY_CXT; \ - if (dl_debug>=level) { code; } \ + dMY_CXT; \ + if (dl_debug>=level) { code; } \ } STMT_END #else #define DLDEBUG(level,code) NOOP @@ -109,25 +109,25 @@ #endif #ifdef DEBUGGING { - SV *sv = get_sv("DynaLoader::dl_debug", 0); - dl_debug = sv ? SvIV(sv) : 0; + SV *sv = get_sv("DynaLoader::dl_debug", 0); + dl_debug = sv ? SvIV(sv) : 0; } #endif #if defined(PERL_IN_DL_HPUX_XS) || defined(PERL_IN_DL_DLOPEN_XS) - if ( (perl_dl_nonlazy = getenv("PERL_DL_NONLAZY")) != NULL - && grok_atoUV(perl_dl_nonlazy, &uv, NULL) - && uv <= INT_MAX + if ( (perl_dl_nonlazy = PerlEnv_getenv("PERL_DL_NONLAZY")) != NULL + && grok_atoUV(perl_dl_nonlazy, &uv, NULL) + && uv <= INT_MAX ) { - dl_nonlazy = (int)uv; + dl_nonlazy = (int)uv; } else - dl_nonlazy = 0; + dl_nonlazy = 0; if (dl_nonlazy) - DLDEBUG(1,PerlIO_printf(Perl_debug_log, "DynaLoader bind mode is 'non-lazy'\n")); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "DynaLoader bind mode is 'non-lazy'\n")); #endif #ifdef DL_LOADONCEONLY if (!dl_loaded_files) - dl_loaded_files = newHV(); /* provide cache for dl_*.xs if needed */ + dl_loaded_files = newHV(); /* provide cache for dl_*.xs if needed */ #endif #ifdef DL_UNLOAD_ALL_AT_EXIT call_atexit(&dl_unload_all_files, (void*)0); @@ -155,10 +155,10 @@ len++; /* include terminating null char */ { - dMY_CXT; + dMY_CXT; /* Copy message into dl_last_error (including terminating null char) */ - sv_setpvn(MY_CXT.x_dl_last_error, message, len) ; - DLDEBUG(2,PerlIO_printf(Perl_debug_log, "DynaLoader: stored error msg '%s'\n",dl_last_error)); + sv_setpvn(MY_CXT.x_dl_last_error, message, len) ; + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "DynaLoader: stored error msg '%s'\n",dl_last_error)); } } #endif diff -Nru perl-5.32.1/ext/DynaLoader/DynaLoader_pm.PL perl-5.34.0/ext/DynaLoader/DynaLoader_pm.PL --- perl-5.32.1/ext/DynaLoader/DynaLoader_pm.PL 2021-01-08 21:20:36.000000000 +0000 +++ perl-5.34.0/ext/DynaLoader/DynaLoader_pm.PL 2021-01-20 23:04:44.000000000 +0000 @@ -88,7 +88,7 @@ # Tim.Bunce@ig.co.uk, August 1994 BEGIN { - $VERSION = '1.47_01'; + $VERSION = '1.50'; } EOT @@ -486,14 +486,6 @@ push(@names, $_); } my $dirsep = '/'; - <<$^O-eq-symbian>> - $dirsep = '\\'; - if ($0 =~ /^([a-z]):/i) { - my $drive = $1; - @dirs = map { "$drive:$_" } @dirs; - @dl_library_path = map { "$drive:$_" } @dl_library_path; - } - <> foreach $dir (@dirs, @dl_library_path) { next unless -d $dir; <<$^O-eq-VMS>> diff -Nru perl-5.32.1/ext/DynaLoader/t/DynaLoader.t perl-5.34.0/ext/DynaLoader/t/DynaLoader.t --- perl-5.32.1/ext/DynaLoader/t/DynaLoader.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/DynaLoader/t/DynaLoader.t 2020-10-04 22:17:13.000000000 +0000 @@ -148,18 +148,14 @@ my @loaded_modules = @DynaLoader::dl_modules; for my $libref (reverse @DynaLoader::dl_librefs) { - TODO: { - todo_skip( "Can't safely unload with -DPERL_GLOBAL_STRUCT_PRIVATE (RT #119409)", 2 ) - if $Config{ccflags} =~ /(?:^|\s)-DPERL_GLOBAL_STRUCT_PRIVATE\b/; - SKIP: { - skip( "unloading unsupported on $^O", 2 ) - if ($old_darwin || $^O eq 'VMS'); - my $module = pop @loaded_modules; - skip( "File::Glob sets PL_opfreehook", 2 ) if $module eq 'File::Glob'; - my $r = eval { DynaLoader::dl_unload_file($libref) }; - is( $@, '', "calling dl_unload_file() for $module" ); - is( $r, 1, " - unload was successful" ); - } +SKIP: { + skip( "unloading unsupported on $^O", 2 ) + if ($old_darwin || $^O eq 'VMS'); + my $module = pop @loaded_modules; + skip( "File::Glob sets PL_opfreehook", 2 ) if $module eq 'File::Glob'; + my $r = eval { DynaLoader::dl_unload_file($libref) }; + is( $@, '', "calling dl_unload_file() for $module" ); + is( $r, 1, " - unload was successful" ); } } diff -Nru perl-5.32.1/ext/Errno/Errno_pm.PL perl-5.34.0/ext/Errno/Errno_pm.PL --- perl-5.32.1/ext/Errno/Errno_pm.PL 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/Errno/Errno_pm.PL 2020-10-24 18:43:34.000000000 +0000 @@ -2,14 +2,11 @@ use Config; use strict; -our $VERSION = "1.30"; +our $VERSION = "1.33"; my %err = (); -# Symbian cross-compiling environment. -my $IsSymbian = exists $ENV{SDK} && -d "$ENV{SDK}\\epoc32"; - -my $IsMSWin32 = $^O eq 'MSWin32' && !$IsSymbian; +my $IsMSWin32 = $^O eq 'MSWin32'; unlink "Errno.pm" if -f "Errno.pm"; unlink "Errno.tmp" if -f "Errno.tmp"; @@ -21,11 +18,18 @@ # MinGW complains "warning: #pragma system_header ignored outside include # file" if the header files are processed individually, so include them # all in .c file and process that instead. + my %seen; open INCS, '>', 'includes.c' or die "Cannot open includes.c"; foreach $file (@files) { next if $file eq 'errno.c'; next unless -f $file; + if ( $file eq 'avx512vpopcntdqvlintrin.h' || $file eq 'avx512bwintrin.h' ) { + # "Never use directly; include instead." + # "Never use directly; include instead." + $file = 'immintrin.h'; + } + next if ++$seen{$file} > 1; print INCS qq[#include "$file"\n]; } close INCS; @@ -143,15 +147,11 @@ $file{$linux_errno_h} = 1; } elsif ($^O eq 'haiku') { # hidden in a special place - $file{'/boot/develop/headers/posix/errno.h'} = 1; + $file{'/boot/system/develop/headers/posix/errno.h'} = 1; } elsif ($^O eq 'vos') { # avoid problem where cpp returns non-POSIX pathnames $file{'/system/include_library/errno.h'} = 1; - } elsif ($IsSymbian) { - my $SDK = $ENV{SDK}; - $SDK =~ s!\\!/!g; - $file{"$SDK/epoc32/include/libc/sys/errno.h"} = 1; } else { open(CPPI, '>', 'errno.c') or die "Cannot open errno.c"; @@ -244,12 +244,7 @@ $inhibit_linemarkers; open(CPPO,"$cpp errno.c |") or die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { - my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . - $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { + } else { my $cpp = default_cpp() . $inhibit_linemarkers; open(CPPO,"$cpp < errno.c |") or die "Cannot exec $cpp"; diff -Nru perl-5.32.1/ext/ExtUtils-Miniperl/lib/ExtUtils/Miniperl.pm perl-5.34.0/ext/ExtUtils-Miniperl/lib/ExtUtils/Miniperl.pm --- perl-5.32.1/ext/ExtUtils-Miniperl/lib/ExtUtils/Miniperl.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/ExtUtils-Miniperl/lib/ExtUtils/Miniperl.pm 2020-10-04 22:17:13.000000000 +0000 @@ -6,7 +6,7 @@ our @ISA = qw(Exporter); our @EXPORT = qw(writemain); -our $VERSION = '1.09'; +our $VERSION = '1.10'; # blead will run this with miniperl, hence we can't use autodie or File::Temp my $temp; @@ -87,15 +87,6 @@ static void xs_init (pTHX); static PerlInterpreter *my_perl; -#if defined(PERL_GLOBAL_STRUCT_PRIVATE) -/* The static struct perl_vars* may seem counterproductive since the - * whole idea PERL_GLOBAL_STRUCT_PRIVATE was to avoid statics, but note - * that this static is not in the shared perl library, the globals PL_Vars - * and PL_VarsPtr will stay away. */ -static struct perl_vars* my_plvarsp; -struct perl_vars* Perl_GetVarsPrivate(void) { return my_plvarsp; } -#endif - #ifdef NO_ENV_ARRAY_IN_MAIN extern char **environ; int @@ -106,14 +97,6 @@ #endif { int exitstatus, i; -#ifdef PERL_GLOBAL_STRUCT - struct perl_vars *my_vars = init_global_struct(); -# ifdef PERL_GLOBAL_STRUCT_PRIVATE - int veto; - - my_plvarsp = my_vars; -# endif -#endif /* PERL_GLOBAL_STRUCT */ #ifndef NO_ENV_ARRAY_IN_MAIN PERL_UNUSED_ARG(env); #endif @@ -187,20 +170,6 @@ PERL_SYS_TERM(); -#ifdef PERL_GLOBAL_STRUCT -# ifdef PERL_GLOBAL_STRUCT_PRIVATE - veto = my_plvarsp->Gveto_cleanup; -# endif - free_global_struct(my_vars); -# ifdef PERL_GLOBAL_STRUCT_PRIVATE - if (!veto) - my_plvarsp = NULL; - /* Remember, functions registered with atexit() can run after this point, - and may access "global" variables, and hence end up calling - Perl_GetVarsPrivate() */ -#endif -#endif /* PERL_GLOBAL_STRUCT */ - exit(exitstatus); } diff -Nru perl-5.32.1/ext/Fcntl/Fcntl.pm perl-5.34.0/ext/Fcntl/Fcntl.pm --- perl-5.32.1/ext/Fcntl/Fcntl.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/Fcntl/Fcntl.pm 2020-10-04 22:17:13.000000000 +0000 @@ -61,7 +61,7 @@ require Exporter; require XSLoader; @ISA = qw(Exporter); -$VERSION = '1.13'; +$VERSION = '1.14'; XSLoader::load(); diff -Nru perl-5.32.1/ext/Fcntl/Fcntl.xs perl-5.34.0/ext/Fcntl/Fcntl.xs --- perl-5.32.1/ext/Fcntl/Fcntl.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/Fcntl/Fcntl.xs 2020-10-04 22:17:13.000000000 +0000 @@ -36,7 +36,6 @@ static void XS_Fcntl_S_ISREG(pTHX_ CV* cv) { - dVAR; dXSARGS; dXSI32; /* Preserve the semantics of the perl code, which was: diff -Nru perl-5.32.1/ext/File-Find/lib/File/Find.pm perl-5.34.0/ext/File-Find/lib/File/Find.pm --- perl-5.32.1/ext/File-Find/lib/File/Find.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/File-Find/lib/File/Find.pm 2021-02-21 11:01:31.000000000 +0000 @@ -3,7 +3,7 @@ use strict; use warnings; use warnings::register; -our $VERSION = '1.37'; +our $VERSION = '1.39'; require Exporter; require Cwd; @@ -161,9 +161,8 @@ $pre_process = $wanted->{preprocess}; $post_process = $wanted->{postprocess}; $no_chdir = $wanted->{no_chdir}; - $full_check = $Is_Win32 ? 0 : $wanted->{follow}; - $follow = $Is_Win32 ? 0 : - $full_check || $wanted->{follow_fast}; + $full_check = $wanted->{follow}; + $follow = $full_check || $wanted->{follow_fast}; $follow_skip = $wanted->{follow_skip}; $untaint = $wanted->{untaint}; $untaint_pat = $wanted->{untaint_pattern}; @@ -840,6 +839,9 @@ =back +Despite the name of the C function, both C and +C perform a depth-first search of the directory hierarchy. + =head2 %options The first argument to C is either a code reference to your @@ -849,7 +851,7 @@ Here are the possible keys for the hash: -=over 3 +=over 4 =item C @@ -893,7 +895,7 @@ directory tree. See L and L below. If either I or I is in effect: -=over 6 +=over 4 =item * @@ -1080,9 +1082,9 @@ in the appropriate scope. See L for more info about lexical warnings. -=head1 CAVEAT +=head1 BUGS AND CAVEATS -=over 2 +=over 4 =item $dont_use_nlink @@ -1108,12 +1110,6 @@ =back -=head1 BUGS AND CAVEATS - -Despite the name of the C function, both C and -C perform a depth-first search of the directory -hierarchy. - =head1 HISTORY File::Find used to produce incorrect results if called recursively. diff -Nru perl-5.32.1/ext/File-Find/t/find.t perl-5.34.0/ext/File-Find/t/find.t --- perl-5.32.1/ext/File-Find/t/find.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/File-Find/t/find.t 2021-01-20 23:04:44.000000000 +0000 @@ -24,13 +24,8 @@ } my $symlink_exists = eval { symlink("",""); 1 }; -my $test_count = 111; -$test_count += 127 if $symlink_exists; -$test_count += 26 if $^O eq 'MSWin32'; -$test_count += 2 if $^O eq 'MSWin32' and $symlink_exists; use Test::More; -plan tests => $test_count; use lib qw( ./t/lib ); use Testing qw( create_file_ok @@ -39,6 +34,7 @@ dir_path file_path ); +use Errno (); my %Expect_File = (); # what we expect for $_ my %Expect_Name = (); # what we expect for $File::Find::name/fullname @@ -252,7 +248,17 @@ mkdir_ok( dir_path('fb', 'fba'), 0770 ); create_file_ok( file_path('fb', 'fba', $testing_basenames[1]) ); if ($symlink_exists) { - symlink_ok('../fb','fa/fsl'); + if (symlink('../fb','fa/fsl')) { + pass("able to symlink from ../fb to fa/fsl"); + } + else { + if ($^O eq "MSWin32" && ($! == &Errno::ENOSYS || $! == &Errno::EPERM)) { + $symlink_exists = 0; + } + else { + fail("able to symlink from ../fb to fa/fsl"); + } + } } create_file_ok( file_path('fa', $testing_basenames[2]) ); @@ -885,6 +891,7 @@ dir_path('fb') => 1, dir_path('fba') => 1); + $FastFileTests_OK = 0; File::Find::find( {wanted => \&wanted_File_Dir}, topdir('fa')); is( scalar(keys %Expect_File), 0, "Got no files, as expected" ); @@ -1104,3 +1111,5 @@ like($@, qr/invalid top directory/, "find() correctly died due to undefined top directory"); } + +done_testing(); diff -Nru perl-5.32.1/ext/File-Find/t/lib/Testing.pm perl-5.34.0/ext/File-Find/t/lib/Testing.pm --- perl-5.32.1/ext/File-Find/t/lib/Testing.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/File-Find/t/lib/Testing.pm 2021-01-20 23:04:44.000000000 +0000 @@ -28,7 +28,7 @@ my ($dir, $mask) = @_[0..1]; my $msg = $_[2] || "able to mkdir: $dir"; ok( mkdir($dir, $mask), $msg ) - or die("Unable to mkdir: $dir"); + or die("Unable to mkdir $!: $dir"); } sub symlink_ok($$;$) { diff -Nru perl-5.32.1/ext/File-Find/t/taint.t perl-5.34.0/ext/File-Find/t/taint.t --- perl-5.32.1/ext/File-Find/t/taint.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/File-Find/t/taint.t 2021-01-20 23:04:44.000000000 +0000 @@ -1,5 +1,24 @@ #!./perl -T use strict; + +BEGIN { + require File::Spec; + if ($ENV{PERL_CORE}) { + # May be doing dynamic loading while @INC is all relative + @INC = map { $_ = File::Spec->rel2abs($_); /(.*)/; $1 } @INC; + } + + if ($^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'VMS') { + # This is a hack - at present File::Find does not produce native names + # on Win32 or VMS, so force File::Spec to use Unix names. + # must be set *before* importing File::Find + require File::Spec::Unix; + @File::Spec::ISA = 'File::Spec::Unix'; + } + require File::Find; + import File::Find; +} + use Test::More; BEGIN { plan( @@ -16,6 +35,7 @@ dir_path file_path ); +use Errno (); my %Expect_File = (); # what we expect for $_ my %Expect_Name = (); # what we expect for $File::Find::name/fullname @@ -169,8 +189,21 @@ mkdir_ok( dir_path('fb_taint', 'fba'), 0770 ); create_file_ok( file_path('fb_taint', 'fba', 'fba_ord') ); SKIP: { - skip "Creating symlink", 1, unless $symlink_exists; - ok( symlink('../fb_taint','fa_taint/fsl'), 'Created symbolic link' ); + skip "Creating symlink", 1, unless $symlink_exists; + if (symlink('../fb_taint','fa_taint/fsl')) { + pass('Created symbolic link' ); + } + else { + my $error = 0 + $!; + if ($^O eq "MSWin32" && + ($error == &Errno::ENOSYS || $error == &Errno::EPERM)) { + $symlink_exists = 0; + skip "symbolic links not available", 1; + } + else { + fail('Created symbolic link'); + } + } } create_file_ok( file_path('fa_taint', 'fa_ord') ); @@ -201,7 +234,8 @@ File::Find::find( {wanted => \&wanted_File_Dir_prune, untaint => 1, untaint_pattern => qr|^(.+)$|}, topdir('fa_taint') ); -is(scalar keys %Expect_File, 0, 'Found all expected files'); +is(scalar keys %Expect_File, 0, 'Found all expected files') + or diag "Not found " . join(" ", sort keys %Expect_File); # don't untaint at all, should die %Expect_File = (); diff -Nru perl-5.32.1/ext/File-Glob/bsd_glob.c perl-5.34.0/ext/File-Glob/bsd_glob.c --- perl-5.32.1/ext/File-Glob/bsd_glob.c 2020-12-18 09:58:45.000000000 +0000 +++ perl-5.34.0/ext/File-Glob/bsd_glob.c 2021-01-20 23:04:44.000000000 +0000 @@ -74,8 +74,8 @@ # include #else #if defined(HAS_PASSWD) && !defined(VMS) - struct passwd *getpwnam(char *); - struct passwd *getpwuid(Uid_t); + struct passwd *getpwnam(char *); + struct passwd *getpwuid(Uid_t); #endif #endif @@ -168,12 +168,12 @@ static int glob0(const Char *, glob_t *); static int glob1(Char *, Char *, glob_t *, size_t *); static int glob2(Char *, Char *, Char *, Char *, Char *, Char *, - glob_t *, size_t *); + glob_t *, size_t *); static int glob3(Char *, Char *, Char *, Char *, Char *, - Char *, Char *, glob_t *, size_t *); + Char *, Char *, glob_t *, size_t *); static int globextend(const Char *, glob_t *, size_t *); static const Char * - globtilde(const Char *, Char *, size_t, glob_t *); + globtilde(const Char *, Char *, size_t, glob_t *); static int globexp1(const Char *, glob_t *); static int globexp2(const Char *, const Char *, glob_t *, int *); static int match(Char *, Char *, Char *, int); @@ -216,82 +216,82 @@ int bsd_glob(const char *pattern, int flags, - int (*errfunc)(const char *, int), glob_t *pglob) + int (*errfunc)(const char *, int), glob_t *pglob) { - const U8 *patnext; - int c; - Char *bufnext, *bufend, patbuf[MAXPATHLEN]; - patnext = (U8 *) pattern; - /* TODO: GLOB_APPEND / GLOB_DOOFFS aren't supported yet */ + const U8 *patnext; + int c; + Char *bufnext, *bufend, patbuf[MAXPATHLEN]; + patnext = (U8 *) pattern; + /* TODO: GLOB_APPEND / GLOB_DOOFFS aren't supported yet */ #if 0 - if (!(flags & GLOB_APPEND)) { - pglob->gl_pathc = 0; - pglob->gl_pathv = NULL; - if (!(flags & GLOB_DOOFFS)) - pglob->gl_offs = 0; - } + if (!(flags & GLOB_APPEND)) { + pglob->gl_pathc = 0; + pglob->gl_pathv = NULL; + if (!(flags & GLOB_DOOFFS)) + pglob->gl_offs = 0; + } #else - pglob->gl_pathc = 0; - pglob->gl_pathv = NULL; - pglob->gl_offs = 0; + pglob->gl_pathc = 0; + pglob->gl_pathv = NULL; + pglob->gl_offs = 0; #endif - pglob->gl_flags = flags & ~GLOB_MAGCHAR; - pglob->gl_errfunc = errfunc; - pglob->gl_matchc = 0; + pglob->gl_flags = flags & ~GLOB_MAGCHAR; + pglob->gl_errfunc = errfunc; + pglob->gl_matchc = 0; - bufnext = patbuf; - bufend = bufnext + MAXPATHLEN - 1; + bufnext = patbuf; + bufend = bufnext + MAXPATHLEN - 1; #ifdef DOSISH - /* Nasty hack to treat patterns like "C:*" correctly. In this - * case, the * should match any file in the current directory - * on the C: drive. However, the glob code does not treat the - * colon specially, so it looks for files beginning "C:" in - * the current directory. To fix this, change the pattern to - * add an explicit "./" at the start (just after the drive - * letter and colon - ie change to "C:./"). - */ - if (isalpha(pattern[0]) && pattern[1] == ':' && - pattern[2] != BG_SEP && pattern[2] != BG_SEP2 && - bufend - bufnext > 4) { - *bufnext++ = pattern[0]; - *bufnext++ = ':'; - *bufnext++ = '.'; - *bufnext++ = BG_SEP; - patnext += 2; - } + /* Nasty hack to treat patterns like "C:*" correctly. In this + * case, the * should match any file in the current directory + * on the C: drive. However, the glob code does not treat the + * colon specially, so it looks for files beginning "C:" in + * the current directory. To fix this, change the pattern to + * add an explicit "./" at the start (just after the drive + * letter and colon - ie change to "C:./"). + */ + if (isalpha(pattern[0]) && pattern[1] == ':' && + pattern[2] != BG_SEP && pattern[2] != BG_SEP2 && + bufend - bufnext > 4) { + *bufnext++ = pattern[0]; + *bufnext++ = ':'; + *bufnext++ = '.'; + *bufnext++ = BG_SEP; + patnext += 2; + } #endif - if (flags & GLOB_QUOTE) { - /* Protect the quoted characters. */ - while (bufnext < bufend && (c = *patnext++) != BG_EOS) - if (c == BG_QUOTE) { + if (flags & GLOB_QUOTE) { + /* Protect the quoted characters. */ + while (bufnext < bufend && (c = *patnext++) != BG_EOS) + if (c == BG_QUOTE) { #ifdef DOSISH - /* To avoid backslashitis on Win32, - * we only treat \ as a quoting character - * if it precedes one of the - * metacharacters []-{}~\ - */ - if ((c = *patnext++) != '[' && c != ']' && - c != '-' && c != '{' && c != '}' && - c != '~' && c != '\\') { + /* To avoid backslashitis on Win32, + * we only treat \ as a quoting character + * if it precedes one of the + * metacharacters []-{}~\ + */ + if ((c = *patnext++) != '[' && c != ']' && + c != '-' && c != '{' && c != '}' && + c != '~' && c != '\\') { #else - if ((c = *patnext++) == BG_EOS) { + if ((c = *patnext++) == BG_EOS) { #endif - c = BG_QUOTE; - --patnext; - } - *bufnext++ = c | M_PROTECT; - } else - *bufnext++ = c; - } else - while (bufnext < bufend && (c = *patnext++) != BG_EOS) - *bufnext++ = c; - *bufnext = BG_EOS; - - if (flags & GLOB_BRACE) - return globexp1(patbuf, pglob); - else - return glob0(patbuf, pglob); + c = BG_QUOTE; + --patnext; + } + *bufnext++ = c | M_PROTECT; + } else + *bufnext++ = c; + } else + while (bufnext < bufend && (c = *patnext++) != BG_EOS) + *bufnext++ = c; + *bufnext = BG_EOS; + + if (flags & GLOB_BRACE) + return globexp1(patbuf, pglob); + else + return glob0(patbuf, pglob); } /* @@ -302,18 +302,18 @@ static int globexp1(const Char *pattern, glob_t *pglob) { - const Char* ptr = pattern; - int rv; + const Char* ptr = pattern; + int rv; - /* Protect a single {}, for find(1), like csh */ - if (pattern[0] == BG_LBRACE && pattern[1] == BG_RBRACE && pattern[2] == BG_EOS) - return glob0(pattern, pglob); - - while ((ptr = (const Char *) g_strchr((Char *) ptr, BG_LBRACE)) != NULL) - if (!globexp2(ptr, pattern, pglob, &rv)) - return rv; + /* Protect a single {}, for find(1), like csh */ + if (pattern[0] == BG_LBRACE && pattern[1] == BG_RBRACE && pattern[2] == BG_EOS) + return glob0(pattern, pglob); + + while ((ptr = (const Char *) g_strchr((Char *) ptr, BG_LBRACE)) != NULL) + if (!globexp2(ptr, pattern, pglob, &rv)) + return rv; - return glob0(pattern, pglob); + return glob0(pattern, pglob); } @@ -324,103 +324,103 @@ */ static int globexp2(const Char *ptr, const Char *pattern, - glob_t *pglob, int *rv) + glob_t *pglob, int *rv) { - int i; - Char *lm, *ls; - const Char *pe, *pm, *pm1, *pl; - Char patbuf[MAXPATHLEN]; - - /* copy part up to the brace */ - for (lm = patbuf, pm = pattern; pm != ptr; *lm++ = *pm++) - ; - *lm = BG_EOS; - ls = lm; - - /* Find the balanced brace */ - for (i = 0, pe = ++ptr; *pe; pe++) - if (*pe == BG_LBRACKET) { - /* Ignore everything between [] */ - for (pm = pe++; *pe != BG_RBRACKET && *pe != BG_EOS; pe++) - ; - if (*pe == BG_EOS) { - /* - * We could not find a matching BG_RBRACKET. - * Ignore and just look for BG_RBRACE - */ - pe = pm; - } - } else if (*pe == BG_LBRACE) - i++; - else if (*pe == BG_RBRACE) { - if (i == 0) - break; - i--; - } - - /* Non matching braces; just glob the pattern */ - if (i != 0 || *pe == BG_EOS) { - *rv = glob0(patbuf, pglob); - return 0; - } - - for (i = 0, pl = pm = ptr; pm <= pe; pm++) { - switch (*pm) { - case BG_LBRACKET: - /* Ignore everything between [] */ - for (pm1 = pm++; *pm != BG_RBRACKET && *pm != BG_EOS; pm++) - ; - if (*pm == BG_EOS) { - /* - * We could not find a matching BG_RBRACKET. - * Ignore and just look for BG_RBRACE - */ - pm = pm1; - } - break; - - case BG_LBRACE: - i++; - break; - - case BG_RBRACE: - if (i) { - i--; - break; - } - /* FALLTHROUGH */ - case BG_COMMA: - if (i && *pm == BG_COMMA) - break; - else { - /* Append the current string */ - for (lm = ls; (pl < pm); *lm++ = *pl++) - ; - - /* - * Append the rest of the pattern after the - * closing brace - */ - for (pl = pe + 1; (*lm++ = *pl++) != BG_EOS; ) - ; + int i; + Char *lm, *ls; + const Char *pe, *pm, *pm1, *pl; + Char patbuf[MAXPATHLEN]; + + /* copy part up to the brace */ + for (lm = patbuf, pm = pattern; pm != ptr; *lm++ = *pm++) + ; + *lm = BG_EOS; + ls = lm; + + /* Find the balanced brace */ + for (i = 0, pe = ++ptr; *pe; pe++) + if (*pe == BG_LBRACKET) { + /* Ignore everything between [] */ + for (pm = pe++; *pe != BG_RBRACKET && *pe != BG_EOS; pe++) + ; + if (*pe == BG_EOS) { + /* + * We could not find a matching BG_RBRACKET. + * Ignore and just look for BG_RBRACE + */ + pe = pm; + } + } else if (*pe == BG_LBRACE) + i++; + else if (*pe == BG_RBRACE) { + if (i == 0) + break; + i--; + } + + /* Non matching braces; just glob the pattern */ + if (i != 0 || *pe == BG_EOS) { + *rv = glob0(patbuf, pglob); + return 0; + } - /* Expand the current pattern */ + for (i = 0, pl = pm = ptr; pm <= pe; pm++) { + switch (*pm) { + case BG_LBRACKET: + /* Ignore everything between [] */ + for (pm1 = pm++; *pm != BG_RBRACKET && *pm != BG_EOS; pm++) + ; + if (*pm == BG_EOS) { + /* + * We could not find a matching BG_RBRACKET. + * Ignore and just look for BG_RBRACE + */ + pm = pm1; + } + break; + + case BG_LBRACE: + i++; + break; + + case BG_RBRACE: + if (i) { + i--; + break; + } + /* FALLTHROUGH */ + case BG_COMMA: + if (i && *pm == BG_COMMA) + break; + else { + /* Append the current string */ + for (lm = ls; (pl < pm); *lm++ = *pl++) + ; + + /* + * Append the rest of the pattern after the + * closing brace + */ + for (pl = pe + 1; (*lm++ = *pl++) != BG_EOS; ) + ; + + /* Expand the current pattern */ #ifdef GLOB_DEBUG - qprintf("globexp2:", patbuf); + qprintf("globexp2:", patbuf); #endif /* GLOB_DEBUG */ - *rv = globexp1(patbuf, pglob); + *rv = globexp1(patbuf, pglob); - /* move after the comma, to the next string */ - pl = pm + 1; - } - break; - - default: - break; - } - } - *rv = 0; - return 0; + /* move after the comma, to the next string */ + pl = pm + 1; + } + break; + + default: + break; + } + } + *rv = 0; + return 0; } @@ -431,76 +431,76 @@ static const Char * globtilde(const Char *pattern, Char *patbuf, size_t patbuf_len, glob_t *pglob) { - char *h; - const Char *p; - Char *b, *eb; - - if (*pattern != BG_TILDE || !(pglob->gl_flags & GLOB_TILDE)) - return pattern; - - /* Copy up to the end of the string or / */ - eb = &patbuf[patbuf_len - 1]; - for (p = pattern + 1, h = (char *) patbuf; - h < (char*)eb && *p && *p != BG_SLASH; *h++ = (char)*p++) - ; + char *h; + const Char *p; + Char *b, *eb; - *h = BG_EOS; + if (*pattern != BG_TILDE || !(pglob->gl_flags & GLOB_TILDE)) + return pattern; + + /* Copy up to the end of the string or / */ + eb = &patbuf[patbuf_len - 1]; + for (p = pattern + 1, h = (char *) patbuf; + h < (char*)eb && *p && *p != BG_SLASH; *h++ = (char)*p++) + ; + + *h = BG_EOS; #if 0 - if (h == (char *)eb) - return what; + if (h == (char *)eb) + return what; #endif - if (((char *) patbuf)[0] == BG_EOS) { - /* - * handle a plain ~ or ~/ by expanding $HOME - * first and then trying the password file - * or $USERPROFILE on DOSISH systems - */ - if ((h = PerlEnv_getenv("HOME")) == NULL) { + if (((char *) patbuf)[0] == BG_EOS) { + /* + * handle a plain ~ or ~/ by expanding $HOME + * first and then trying the password file + * or $USERPROFILE on DOSISH systems + */ + if ((h = PerlEnv_getenv("HOME")) == NULL) { #ifdef HAS_PASSWD - struct passwd *pwd; - if ((pwd = getpwuid(getuid())) == NULL) - return pattern; - else - h = pwd->pw_dir; + struct passwd *pwd; + if ((pwd = getpwuid(getuid())) == NULL) + return pattern; + else + h = pwd->pw_dir; #elif DOSISH - /* - * When no passwd file, fallback to the USERPROFILE - * environment variable on DOSish systems. - */ - if ((h = PerlEnv_getenv("USERPROFILE")) == NULL) { - return pattern; - } + /* + * When no passwd file, fallback to the USERPROFILE + * environment variable on DOSish systems. + */ + if ((h = PerlEnv_getenv("USERPROFILE")) == NULL) { + return pattern; + } #else return pattern; #endif - } - } else { - /* - * Expand a ~user - */ + } + } else { + /* + * Expand a ~user + */ #ifdef HAS_PASSWD - struct passwd *pwd; - if ((pwd = getpwnam((char*) patbuf)) == NULL) - return pattern; - else - h = pwd->pw_dir; + struct passwd *pwd; + if ((pwd = getpwnam((char*) patbuf)) == NULL) + return pattern; + else + h = pwd->pw_dir; #else return pattern; #endif - } + } - /* Copy the home directory */ - for (b = patbuf; b < eb && *h; *b++ = *h++) - ; - - /* Append the rest of the pattern */ - while (b < eb && (*b++ = *p++) != BG_EOS) - ; - *b = BG_EOS; + /* Copy the home directory */ + for (b = patbuf; b < eb && *h; *b++ = *h++) + ; + + /* Append the rest of the pattern */ + while (b < eb && (*b++ = *p++) != BG_EOS) + ; + *b = BG_EOS; - return patbuf; + return patbuf; } @@ -514,142 +514,142 @@ static int glob0(const Char *pattern, glob_t *pglob) { - const Char *qpat, *qpatnext; - int c, err, oldflags, oldpathc; - Char *bufnext, patbuf[MAXPATHLEN]; - size_t limit = 0; - - qpat = globtilde(pattern, patbuf, MAXPATHLEN, pglob); - qpatnext = qpat; - oldflags = pglob->gl_flags; - oldpathc = pglob->gl_pathc; - bufnext = patbuf; - - /* We don't need to check for buffer overflow any more. */ - while ((c = *qpatnext++) != BG_EOS) { - switch (c) { - case BG_LBRACKET: - c = *qpatnext; - if (c == BG_NOT) - ++qpatnext; - if (*qpatnext == BG_EOS || - g_strchr((Char *) qpatnext+1, BG_RBRACKET) == NULL) { - *bufnext++ = BG_LBRACKET; - if (c == BG_NOT) - --qpatnext; - break; - } - *bufnext++ = M_SET; - if (c == BG_NOT) - *bufnext++ = M_NOT; - c = *qpatnext++; - do { - *bufnext++ = CHAR(c); - if (*qpatnext == BG_RANGE && - (c = qpatnext[1]) != BG_RBRACKET) { - *bufnext++ = M_RNG; - *bufnext++ = CHAR(c); - qpatnext += 2; - } - } while ((c = *qpatnext++) != BG_RBRACKET); - pglob->gl_flags |= GLOB_MAGCHAR; - *bufnext++ = M_END; - break; - case BG_QUESTION: - pglob->gl_flags |= GLOB_MAGCHAR; - *bufnext++ = M_ONE; - break; - case BG_STAR: - pglob->gl_flags |= GLOB_MAGCHAR; + const Char *qpat, *qpatnext; + int c, err, oldflags, oldpathc; + Char *bufnext, patbuf[MAXPATHLEN]; + size_t limit = 0; + + qpat = globtilde(pattern, patbuf, MAXPATHLEN, pglob); + qpatnext = qpat; + oldflags = pglob->gl_flags; + oldpathc = pglob->gl_pathc; + bufnext = patbuf; + + /* We don't need to check for buffer overflow any more. */ + while ((c = *qpatnext++) != BG_EOS) { + switch (c) { + case BG_LBRACKET: + c = *qpatnext; + if (c == BG_NOT) + ++qpatnext; + if (*qpatnext == BG_EOS || + g_strchr((Char *) qpatnext+1, BG_RBRACKET) == NULL) { + *bufnext++ = BG_LBRACKET; + if (c == BG_NOT) + --qpatnext; + break; + } + *bufnext++ = M_SET; + if (c == BG_NOT) + *bufnext++ = M_NOT; + c = *qpatnext++; + do { + *bufnext++ = CHAR(c); + if (*qpatnext == BG_RANGE && + (c = qpatnext[1]) != BG_RBRACKET) { + *bufnext++ = M_RNG; + *bufnext++ = CHAR(c); + qpatnext += 2; + } + } while ((c = *qpatnext++) != BG_RBRACKET); + pglob->gl_flags |= GLOB_MAGCHAR; + *bufnext++ = M_END; + break; + case BG_QUESTION: + pglob->gl_flags |= GLOB_MAGCHAR; + *bufnext++ = M_ONE; + break; + case BG_STAR: + pglob->gl_flags |= GLOB_MAGCHAR; /* Collapse adjacent stars to one. * This is required to ensure that a pattern like * "a**" matches a name like "a", as without this * check when the first star matched everything it would * cause the second star to return a match fail. * As long ** is folded here this does not happen. - */ - if (bufnext == patbuf || bufnext[-1] != M_ALL) - *bufnext++ = M_ALL; - break; - default: - *bufnext++ = CHAR(c); - break; - } - } - *bufnext = BG_EOS; + */ + if (bufnext == patbuf || bufnext[-1] != M_ALL) + *bufnext++ = M_ALL; + break; + default: + *bufnext++ = CHAR(c); + break; + } + } + *bufnext = BG_EOS; #ifdef GLOB_DEBUG - qprintf("glob0:", patbuf); + qprintf("glob0:", patbuf); #endif /* GLOB_DEBUG */ - if ((err = glob1(patbuf, patbuf+MAXPATHLEN-1, pglob, &limit)) != 0) { - pglob->gl_flags = oldflags; - return(err); - } - - /* - * If there was no match we are going to append the pattern - * if GLOB_NOCHECK was specified or if GLOB_NOMAGIC was specified - * and the pattern did not contain any magic characters - * GLOB_NOMAGIC is there just for compatibility with csh. - */ - if (pglob->gl_pathc == oldpathc && - ((pglob->gl_flags & GLOB_NOCHECK) || - ((pglob->gl_flags & GLOB_NOMAGIC) && - !(pglob->gl_flags & GLOB_MAGCHAR)))) - { + if ((err = glob1(patbuf, patbuf+MAXPATHLEN-1, pglob, &limit)) != 0) { + pglob->gl_flags = oldflags; + return(err); + } + + /* + * If there was no match we are going to append the pattern + * if GLOB_NOCHECK was specified or if GLOB_NOMAGIC was specified + * and the pattern did not contain any magic characters + * GLOB_NOMAGIC is there just for compatibility with csh. + */ + if (pglob->gl_pathc == oldpathc && + ((pglob->gl_flags & GLOB_NOCHECK) || + ((pglob->gl_flags & GLOB_NOMAGIC) && + !(pglob->gl_flags & GLOB_MAGCHAR)))) + { #ifdef GLOB_DEBUG - printf("calling globextend from glob0\n"); + printf("calling globextend from glob0\n"); #endif /* GLOB_DEBUG */ - pglob->gl_flags = oldflags; - return(globextend(qpat, pglob, &limit)); + pglob->gl_flags = oldflags; + return(globextend(qpat, pglob, &limit)); } - else if (!(pglob->gl_flags & GLOB_NOSORT)) + else if (!(pglob->gl_flags & GLOB_NOSORT)) if (pglob->gl_pathv) - qsort(pglob->gl_pathv + pglob->gl_offs + oldpathc, - pglob->gl_pathc - oldpathc, sizeof(char *), - (pglob->gl_flags & (GLOB_ALPHASORT|GLOB_NOCASE)) - ? ci_compare : compare); - pglob->gl_flags = oldflags; - return(0); + qsort(pglob->gl_pathv + pglob->gl_offs + oldpathc, + pglob->gl_pathc - oldpathc, sizeof(char *), + (pglob->gl_flags & (GLOB_ALPHASORT|GLOB_NOCASE)) + ? ci_compare : compare); + pglob->gl_flags = oldflags; + return(0); } static int ci_compare(const void *p, const void *q) { - const char *pp = *(const char **)p; - const char *qq = *(const char **)q; - int ci; - while (*pp && *qq) { - if (toFOLD(*pp) != toFOLD(*qq)) - break; - ++pp; - ++qq; - } - ci = toFOLD(*pp) - toFOLD(*qq); - if (ci == 0) - return compare(p, q); - return ci; + const char *pp = *(const char **)p; + const char *qq = *(const char **)q; + int ci; + while (*pp && *qq) { + if (toFOLD(*pp) != toFOLD(*qq)) + break; + ++pp; + ++qq; + } + ci = toFOLD(*pp) - toFOLD(*qq); + if (ci == 0) + return compare(p, q); + return ci; } static int compare(const void *p, const void *q) { - return(strcmp(*(char **)p, *(char **)q)); + return(strcmp(*(char **)p, *(char **)q)); } static int glob1(Char *pattern, Char *pattern_last, glob_t *pglob, size_t *limitp) { - Char pathbuf[MAXPATHLEN]; + Char pathbuf[MAXPATHLEN]; assert(pattern < pattern_last); - /* A null pathname is invalid -- POSIX 1003.1 sect. 2.4. */ - if (*pattern == BG_EOS) - return(0); - return(glob2(pathbuf, pathbuf+MAXPATHLEN-1, - pathbuf, pathbuf+MAXPATHLEN-1, - pattern, pattern_last, pglob, limitp)); + /* A null pathname is invalid -- POSIX 1003.1 sect. 2.4. */ + if (*pattern == BG_EOS) + return(0); + return(glob2(pathbuf, pathbuf+MAXPATHLEN-1, + pathbuf, pathbuf+MAXPATHLEN-1, + pattern, pattern_last, pglob, limitp)); } /* @@ -661,79 +661,79 @@ glob2(Char *pathbuf, Char *pathbuf_last, Char *pathend, Char *pathend_last, Char *pattern, Char *pattern_last, glob_t *pglob, size_t *limitp) { - Stat_t sb; - Char *p, *q; - int anymeta; + Stat_t sb; + Char *p, *q; + int anymeta; assert(pattern < pattern_last); - /* - * Loop over pattern segments until end of pattern or until - * segment with meta character found. - */ - for (anymeta = 0;;) { - if (*pattern == BG_EOS) { /* End of pattern? */ - *pathend = BG_EOS; - if (g_lstat(pathbuf, &sb, pglob)) - return(0); + /* + * Loop over pattern segments until end of pattern or until + * segment with meta character found. + */ + for (anymeta = 0;;) { + if (*pattern == BG_EOS) { /* End of pattern? */ + *pathend = BG_EOS; + if (g_lstat(pathbuf, &sb, pglob)) + return(0); - if (((pglob->gl_flags & GLOB_MARK) && - pathend[-1] != BG_SEP + if (((pglob->gl_flags & GLOB_MARK) && + pathend[-1] != BG_SEP #ifdef DOSISH - && pathend[-1] != BG_SEP2 + && pathend[-1] != BG_SEP2 #endif - ) && (S_ISDIR(sb.st_mode) || - (S_ISLNK(sb.st_mode) && - (g_stat(pathbuf, &sb, pglob) == 0) && - S_ISDIR(sb.st_mode)))) { - if (pathend+1 > pathend_last) - return (1); - *pathend++ = BG_SEP; - *pathend = BG_EOS; - } - ++pglob->gl_matchc; + ) && (S_ISDIR(sb.st_mode) || + (S_ISLNK(sb.st_mode) && + (g_stat(pathbuf, &sb, pglob) == 0) && + S_ISDIR(sb.st_mode)))) { + if (pathend+1 > pathend_last) + return (1); + *pathend++ = BG_SEP; + *pathend = BG_EOS; + } + ++pglob->gl_matchc; #ifdef GLOB_DEBUG printf("calling globextend from glob2\n"); #endif /* GLOB_DEBUG */ - return(globextend(pathbuf, pglob, limitp)); - } + return(globextend(pathbuf, pglob, limitp)); + } - /* Find end of next segment, copy tentatively to pathend. */ - q = pathend; - p = pattern; - while (*p != BG_EOS && *p != BG_SEP + /* Find end of next segment, copy tentatively to pathend. */ + q = pathend; + p = pattern; + while (*p != BG_EOS && *p != BG_SEP #ifdef DOSISH - && *p != BG_SEP2 + && *p != BG_SEP2 #endif - ) { + ) { assert(p < pattern_last); - if (ismeta(*p)) - anymeta = 1; - if (q+1 > pathend_last) - return (1); - *q++ = *p++; - } - - if (!anymeta) { /* No expansion, do next segment. */ - pathend = q; - pattern = p; - while (*pattern == BG_SEP + if (ismeta(*p)) + anymeta = 1; + if (q+1 > pathend_last) + return (1); + *q++ = *p++; + } + + if (!anymeta) { /* No expansion, do next segment. */ + pathend = q; + pattern = p; + while (*pattern == BG_SEP #ifdef DOSISH - || *pattern == BG_SEP2 + || *pattern == BG_SEP2 #endif - ) { + ) { assert(p < pattern_last); - if (pathend+1 > pathend_last) - return (1); - *pathend++ = *pattern++; - } - } else - /* Need expansion, recurse. */ - return(glob3(pathbuf, pathbuf_last, pathend, - pathend_last, pattern, - p, pattern_last, pglob, limitp)); - } - /* NOTREACHED */ + if (pathend+1 > pathend_last) + return (1); + *pathend++ = *pattern++; + } + } else + /* Need expansion, recurse. */ + return(glob3(pathbuf, pathbuf_last, pathend, + pathend_last, pattern, + p, pattern_last, pglob, limitp)); + } + /* NOTREACHED */ } static int @@ -741,97 +741,97 @@ Char *pattern, Char *restpattern, Char *restpattern_last, glob_t *pglob, size_t *limitp) { - Direntry_t *dp; - DIR *dirp; - int err; - int nocase; - char buf[MAXPATHLEN]; - - /* - * The readdirfunc declaration can't be prototyped, because it is - * assigned, below, to two functions which are prototyped in glob.h - * and dirent.h as taking pointers to differently typed opaque - * structures. - */ - Direntry_t *(*readdirfunc)(DIR*); + Direntry_t *dp; + DIR *dirp; + int err; + int nocase; + char buf[MAXPATHLEN]; + + /* + * The readdirfunc declaration can't be prototyped, because it is + * assigned, below, to two functions which are prototyped in glob.h + * and dirent.h as taking pointers to differently typed opaque + * structures. + */ + Direntry_t *(*readdirfunc)(DIR*); assert(pattern < restpattern_last); assert(restpattern < restpattern_last); - if (pathend > pathend_last) - return (1); - *pathend = BG_EOS; - errno = 0; + if (pathend > pathend_last) + return (1); + *pathend = BG_EOS; + errno = 0; #ifdef VMS { - Char *q = pathend; - if (q - pathbuf > 5) { - q -= 5; - if (q[0] == '.' && - tolower(q[1]) == 'd' && tolower(q[2]) == 'i' && - tolower(q[3]) == 'r' && q[4] == '/') - { - q[0] = '/'; - q[1] = BG_EOS; - pathend = q+1; - } - } + Char *q = pathend; + if (q - pathbuf > 5) { + q -= 5; + if (q[0] == '.' && + tolower(q[1]) == 'd' && tolower(q[2]) == 'i' && + tolower(q[3]) == 'r' && q[4] == '/') + { + q[0] = '/'; + q[1] = BG_EOS; + pathend = q+1; + } + } } #endif - if ((dirp = g_opendir(pathbuf, pglob)) == NULL) { - /* TODO: don't call for ENOENT or ENOTDIR? */ - if (pglob->gl_errfunc) { - if (g_Ctoc(pathbuf, buf, sizeof(buf))) - return (GLOB_ABEND); - if (pglob->gl_errfunc(buf, errno) || - (pglob->gl_flags & GLOB_ERR)) - return (GLOB_ABEND); - } - return(0); - } - - err = 0; - nocase = ((pglob->gl_flags & GLOB_NOCASE) != 0); - - /* Search directory for matching names. */ - if (pglob->gl_flags & GLOB_ALTDIRFUNC) - readdirfunc = (Direntry_t *(*)(DIR *))pglob->gl_readdir; - else - readdirfunc = (Direntry_t *(*)(DIR *))my_readdir; - while ((dp = (*readdirfunc)(dirp))) { - U8 *sc; - Char *dc; - - /* Initial BG_DOT must be matched literally. */ - if (dp->d_name[0] == BG_DOT && *pattern != BG_DOT) - continue; - dc = pathend; - sc = (U8 *) dp->d_name; - while (dc < pathend_last && (*dc++ = *sc++) != BG_EOS) - ; - if (dc >= pathend_last) { - *dc = BG_EOS; - err = 1; - break; - } - - if (!match(pathend, pattern, restpattern, nocase)) { - *pathend = BG_EOS; - continue; - } - err = glob2(pathbuf, pathbuf_last, --dc, pathend_last, - restpattern, restpattern_last, pglob, limitp); - if (err) - break; - } - - if (pglob->gl_flags & GLOB_ALTDIRFUNC) - (*pglob->gl_closedir)(dirp); - else - PerlDir_close(dirp); - return(err); + if ((dirp = g_opendir(pathbuf, pglob)) == NULL) { + /* TODO: don't call for ENOENT or ENOTDIR? */ + if (pglob->gl_errfunc) { + if (g_Ctoc(pathbuf, buf, sizeof(buf))) + return (GLOB_ABEND); + if (pglob->gl_errfunc(buf, errno) || + (pglob->gl_flags & GLOB_ERR)) + return (GLOB_ABEND); + } + return(0); + } + + err = 0; + nocase = ((pglob->gl_flags & GLOB_NOCASE) != 0); + + /* Search directory for matching names. */ + if (pglob->gl_flags & GLOB_ALTDIRFUNC) + readdirfunc = (Direntry_t *(*)(DIR *))pglob->gl_readdir; + else + readdirfunc = (Direntry_t *(*)(DIR *))my_readdir; + while ((dp = (*readdirfunc)(dirp))) { + U8 *sc; + Char *dc; + + /* Initial BG_DOT must be matched literally. */ + if (dp->d_name[0] == BG_DOT && *pattern != BG_DOT) + continue; + dc = pathend; + sc = (U8 *) dp->d_name; + while (dc < pathend_last && (*dc++ = *sc++) != BG_EOS) + ; + if (dc >= pathend_last) { + *dc = BG_EOS; + err = 1; + break; + } + + if (!match(pathend, pattern, restpattern, nocase)) { + *pathend = BG_EOS; + continue; + } + err = glob2(pathbuf, pathbuf_last, --dc, pathend_last, + restpattern, restpattern_last, pglob, limitp); + if (err) + break; + } + + if (pglob->gl_flags & GLOB_ALTDIRFUNC) + (*pglob->gl_closedir)(dirp); + else + PerlDir_close(dirp); + return(err); } @@ -852,61 +852,61 @@ static int globextend(const Char *path, glob_t *pglob, size_t *limitp) { - char **pathv; - int i; - STRLEN newsize, len; - char *copy; - const Char *p; + char **pathv; + int i; + STRLEN newsize, len; + char *copy; + const Char *p; #ifdef GLOB_DEBUG - printf("Adding "); + printf("Adding "); for (p = path; *p; p++) (void)printf("%c", CHAR(*p)); printf("\n"); #endif /* GLOB_DEBUG */ - newsize = sizeof(*pathv) * (2 + pglob->gl_pathc + pglob->gl_offs); - if (pglob->gl_pathv) - pathv = Renew(pglob->gl_pathv,newsize,char*); - else - Newx(pathv,newsize,char*); - if (pathv == NULL) { - if (pglob->gl_pathv) { - Safefree(pglob->gl_pathv); - pglob->gl_pathv = NULL; - } - return(GLOB_NOSPACE); - } - - if (pglob->gl_pathv == NULL && pglob->gl_offs > 0) { - /* first time around -- clear initial gl_offs items */ - pathv += pglob->gl_offs; - for (i = pglob->gl_offs; --i >= 0; ) - *--pathv = NULL; - } - pglob->gl_pathv = pathv; - - for (p = path; *p++;) - ; - len = (STRLEN)(p - path); - *limitp += len; - Newx(copy, p-path, char); - if (copy != NULL) { - if (g_Ctoc(path, copy, len)) { - Safefree(copy); - return(GLOB_NOSPACE); - } - pathv[pglob->gl_offs + pglob->gl_pathc++] = copy; - } - pathv[pglob->gl_offs + pglob->gl_pathc] = NULL; - - if ((pglob->gl_flags & GLOB_LIMIT) && - newsize + *limitp >= (unsigned long)ARG_MAX) { - errno = 0; - return(GLOB_NOSPACE); - } + newsize = sizeof(*pathv) * (2 + pglob->gl_pathc + pglob->gl_offs); + if (pglob->gl_pathv) + pathv = Renew(pglob->gl_pathv,newsize,char*); + else + Newx(pathv,newsize,char*); + if (pathv == NULL) { + if (pglob->gl_pathv) { + Safefree(pglob->gl_pathv); + pglob->gl_pathv = NULL; + } + return(GLOB_NOSPACE); + } - return(copy == NULL ? GLOB_NOSPACE : 0); + if (pglob->gl_pathv == NULL && pglob->gl_offs > 0) { + /* first time around -- clear initial gl_offs items */ + pathv += pglob->gl_offs; + for (i = pglob->gl_offs; --i >= 0; ) + *--pathv = NULL; + } + pglob->gl_pathv = pathv; + + for (p = path; *p++;) + ; + len = (STRLEN)(p - path); + *limitp += len; + Newx(copy, p-path, char); + if (copy != NULL) { + if (g_Ctoc(path, copy, len)) { + Safefree(copy); + return(GLOB_NOSPACE); + } + pathv[pglob->gl_offs + pglob->gl_pathc++] = copy; + } + pathv[pglob->gl_offs + pglob->gl_pathc] = NULL; + + if ((pglob->gl_flags & GLOB_LIMIT) && + newsize + *limitp >= (unsigned long)ARG_MAX) { + errno = 0; + return(GLOB_NOSPACE); + } + + return(copy == NULL ? GLOB_NOSPACE : 0); } @@ -930,171 +930,171 @@ static int match(Char *name, Char *pat, Char *patend, int nocase) { - int ok, negate_range; - Char c, k; - Char *nextp = NULL; - Char *nextn = NULL; + int ok, negate_range; + Char c, k; + Char *nextp = NULL; + Char *nextn = NULL; redo: - while (pat < patend) { - c = *pat++; - switch (c & M_MASK) { - case M_ALL: - if (pat == patend) - return(1); - if (*name == BG_EOS) - return 0; - nextn = name + 1; - nextp = pat - 1; - break; - case M_ONE: + while (pat < patend) { + c = *pat++; + switch (c & M_MASK) { + case M_ALL: + if (pat == patend) + return(1); + if (*name == BG_EOS) + return 0; + nextn = name + 1; + nextp = pat - 1; + break; + case M_ONE: /* since * matches leftmost-shortest first * * if we encounter the EOS then backtracking * * will not help, so we can exit early here. */ - if (*name++ == BG_EOS) + if (*name++ == BG_EOS) return 0; - break; - case M_SET: - ok = 0; + break; + case M_SET: + ok = 0; /* since * matches leftmost-shortest first * * if we encounter the EOS then backtracking * * will not help, so we can exit early here. */ - if ((k = *name++) == BG_EOS) + if ((k = *name++) == BG_EOS) return 0; - if ((negate_range = ((*pat & M_MASK) == M_NOT)) != BG_EOS) - ++pat; - while (((c = *pat++) & M_MASK) != M_END) - if ((*pat & M_MASK) == M_RNG) { - if (nocase) { - if (tolower(c) <= tolower(k) && tolower(k) <= tolower(pat[1])) - ok = 1; - } else { - if (c <= k && k <= pat[1]) - ok = 1; - } - pat += 2; - } else if (nocase ? (tolower(c) == tolower(k)) : (c == k)) - ok = 1; - if (ok == negate_range) - goto fail; - break; - default: - k = *name++; - if (nocase ? (tolower(k) != tolower(c)) : (k != c)) - goto fail; - break; - } - } - if (*name == BG_EOS) - return 1; + if ((negate_range = ((*pat & M_MASK) == M_NOT)) != BG_EOS) + ++pat; + while (((c = *pat++) & M_MASK) != M_END) + if ((*pat & M_MASK) == M_RNG) { + if (nocase) { + if (tolower(c) <= tolower(k) && tolower(k) <= tolower(pat[1])) + ok = 1; + } else { + if (c <= k && k <= pat[1]) + ok = 1; + } + pat += 2; + } else if (nocase ? (tolower(c) == tolower(k)) : (c == k)) + ok = 1; + if (ok == negate_range) + goto fail; + break; + default: + k = *name++; + if (nocase ? (tolower(k) != tolower(c)) : (k != c)) + goto fail; + break; + } + } + if (*name == BG_EOS) + return 1; fail: - if (nextn) { - pat = nextp; - name = nextn; - goto redo; - } - return 0; + if (nextn) { + pat = nextp; + name = nextn; + goto redo; + } + return 0; } /* Free allocated data belonging to a glob_t structure. */ void bsd_globfree(glob_t *pglob) { - int i; - char **pp; + int i; + char **pp; - if (pglob->gl_pathv != NULL) { - pp = pglob->gl_pathv + pglob->gl_offs; - for (i = pglob->gl_pathc; i--; ++pp) - if (*pp) - Safefree(*pp); - Safefree(pglob->gl_pathv); - pglob->gl_pathv = NULL; - } + if (pglob->gl_pathv != NULL) { + pp = pglob->gl_pathv + pglob->gl_offs; + for (i = pglob->gl_pathc; i--; ++pp) + if (*pp) + Safefree(*pp); + Safefree(pglob->gl_pathv); + pglob->gl_pathv = NULL; + } } static DIR * g_opendir(Char *str, glob_t *pglob) { - char buf[MAXPATHLEN]; + char buf[MAXPATHLEN]; - if (!*str) { - my_strlcpy(buf, ".", sizeof(buf)); - } else { - if (g_Ctoc(str, buf, sizeof(buf))) - return(NULL); - } + if (!*str) { + my_strlcpy(buf, ".", sizeof(buf)); + } else { + if (g_Ctoc(str, buf, sizeof(buf))) + return(NULL); + } - if (pglob->gl_flags & GLOB_ALTDIRFUNC) - return((DIR*)(*pglob->gl_opendir)(buf)); + if (pglob->gl_flags & GLOB_ALTDIRFUNC) + return((DIR*)(*pglob->gl_opendir)(buf)); - return(PerlDir_open(buf)); + return(PerlDir_open(buf)); } static int g_lstat(Char *fn, Stat_t *sb, glob_t *pglob) { - char buf[MAXPATHLEN]; + char buf[MAXPATHLEN]; - if (g_Ctoc(fn, buf, sizeof(buf))) - return(-1); - if (pglob->gl_flags & GLOB_ALTDIRFUNC) - return((*pglob->gl_lstat)(buf, sb)); + if (g_Ctoc(fn, buf, sizeof(buf))) + return(-1); + if (pglob->gl_flags & GLOB_ALTDIRFUNC) + return((*pglob->gl_lstat)(buf, sb)); #ifdef HAS_LSTAT - return(PerlLIO_lstat(buf, sb)); + return(PerlLIO_lstat(buf, sb)); #else - return(PerlLIO_stat(buf, sb)); + return(PerlLIO_stat(buf, sb)); #endif /* HAS_LSTAT */ } static int g_stat(Char *fn, Stat_t *sb, glob_t *pglob) { - char buf[MAXPATHLEN]; + char buf[MAXPATHLEN]; - if (g_Ctoc(fn, buf, sizeof(buf))) - return(-1); - if (pglob->gl_flags & GLOB_ALTDIRFUNC) - return((*pglob->gl_stat)(buf, sb)); - return(PerlLIO_stat(buf, sb)); + if (g_Ctoc(fn, buf, sizeof(buf))) + return(-1); + if (pglob->gl_flags & GLOB_ALTDIRFUNC) + return((*pglob->gl_stat)(buf, sb)); + return(PerlLIO_stat(buf, sb)); } static Char * g_strchr(Char *str, int ch) { - do { - if (*str == ch) - return (str); - } while (*str++); - return (NULL); + do { + if (*str == ch) + return (str); + } while (*str++); + return (NULL); } static int g_Ctoc(const Char *str, char *buf, STRLEN len) { - while (len--) { - if ((*buf++ = (char)*str++) == BG_EOS) - return (0); - } - return (1); + while (len--) { + if ((*buf++ = (char)*str++) == BG_EOS) + return (0); + } + return (1); } #ifdef GLOB_DEBUG static void qprintf(const char *str, Char *s) { - Char *p; + Char *p; - (void)printf("%s:\n", str); - for (p = s; *p; p++) - (void)printf("%c", CHAR(*p)); - (void)printf("\n"); - for (p = s; *p; p++) - (void)printf("%c", *p & M_PROTECT ? '"' : ' '); - (void)printf("\n"); - for (p = s; *p; p++) - (void)printf("%c", ismeta(*p) ? '_' : ' '); - (void)printf("\n"); + (void)printf("%s:\n", str); + for (p = s; *p; p++) + (void)printf("%c", CHAR(*p)); + (void)printf("\n"); + for (p = s; *p; p++) + (void)printf("%c", *p & M_PROTECT ? '"' : ' '); + (void)printf("\n"); + for (p = s; *p; p++) + (void)printf("%c", ismeta(*p) ? '_' : ' '); + (void)printf("\n"); } #endif /* GLOB_DEBUG */ diff -Nru perl-5.32.1/ext/File-Glob/bsd_glob.h perl-5.34.0/ext/File-Glob/bsd_glob.h --- perl-5.32.1/ext/File-Glob/bsd_glob.h 2020-12-18 09:58:45.000000000 +0000 +++ perl-5.34.0/ext/File-Glob/bsd_glob.h 2021-01-20 23:04:44.000000000 +0000 @@ -39,24 +39,24 @@ /* #include */ typedef struct { - int gl_pathc; /* Count of total paths so far. */ - int gl_matchc; /* Count of paths matching pattern. */ - int gl_offs; /* Reserved at beginning of gl_pathv. */ - int gl_flags; /* Copy of flags parameter to glob. */ - char **gl_pathv; /* List of paths matching pattern. */ - /* Copy of errfunc parameter to glob. */ - int (*gl_errfunc)(const char *, int); + int gl_pathc; /* Count of total paths so far. */ + int gl_matchc; /* Count of paths matching pattern. */ + int gl_offs; /* Reserved at beginning of gl_pathv. */ + int gl_flags; /* Copy of flags parameter to glob. */ + char **gl_pathv; /* List of paths matching pattern. */ + /* Copy of errfunc parameter to glob. */ + int (*gl_errfunc)(const char *, int); - /* - * Alternate filesystem access methods for glob; replacement - * versions of closedir(3), readdir(3), opendir(3), stat(2) - * and lstat(2). - */ - void (*gl_closedir)(void *); - Direntry_t *(*gl_readdir)(void *); - void *(*gl_opendir)(const char *); - int (*gl_lstat)(const char *, Stat_t *); - int (*gl_stat)(const char *, Stat_t *); + /* + * Alternate filesystem access methods for glob; replacement + * versions of closedir(3), readdir(3), opendir(3), stat(2) + * and lstat(2). + */ + void (*gl_closedir)(void *); + Direntry_t *(*gl_readdir)(void *); + void *(*gl_opendir)(const char *); + int (*gl_lstat)(const char *, Stat_t *); + int (*gl_stat)(const char *, Stat_t *); } glob_t; #define GLOB_APPEND 0x0001 /* Append to output from previous call. */ @@ -75,7 +75,7 @@ #define GLOB_NOCASE 0x1000 /* Treat filenames without regard for case. */ #define GLOB_ALPHASORT 0x2000 /* Alphabetic, not ASCII sort, like csh. */ #define GLOB_LIMIT 0x4000 /* Limit pattern match output to ARG_MAX - (usually from limits.h). */ + (usually from limits.h). */ #define GLOB_NOSPACE (-1) /* Malloc call failed. */ #define GLOB_ABEND (-2) /* Unignored error. */ diff -Nru perl-5.32.1/ext/File-Glob/t/basic.t perl-5.34.0/ext/File-Glob/t/basic.t --- perl-5.32.1/ext/File-Glob/t/basic.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/File-Glob/t/basic.t 2020-10-04 22:17:13.000000000 +0000 @@ -182,8 +182,8 @@ } # GLOB_ALPHASORT (default) should sort alphabetically regardless of case -mkdir "pteerslo", 0777; -chdir "pteerslo"; +mkdir "pteerslo", 0777 or die "mkdir 'pteerslo', 0777: $!"; +chdir "pteerslo" or die "chdir 'pteerslo' $!"; my @f_names = qw(Ax.pl Bx.pl Cx.pl aY.pl bY.pl cY.pl); my @f_alpha = qw(Ax.pl aY.pl Bx.pl bY.pl Cx.pl cY.pl); @@ -196,8 +196,8 @@ } for (@f_names) { - open T, '>', $_; - close T; + open T, '>', $_ or die "Couldn't write to '$_': $!"; + close T or die "Couldn't close '$_': $!"; } my $pat = "*.pl"; diff -Nru perl-5.32.1/ext/GDBM_File/GDBM_File.pm perl-5.34.0/ext/GDBM_File/GDBM_File.pm --- perl-5.32.1/ext/GDBM_File/GDBM_File.pm 2020-12-18 09:58:45.000000000 +0000 +++ perl-5.34.0/ext/GDBM_File/GDBM_File.pm 2021-01-20 23:04:44.000000000 +0000 @@ -6,9 +6,47 @@ =head1 SYNOPSIS - use GDBM_File ; - tie %hash, 'GDBM_File', $filename, &GDBM_WRCREAT, 0640; + use GDBM_File; + [$db =] tie %hash, 'GDBM_File', $filename, &GDBM_WRCREAT, 0640; # Use the %hash array. + + $e = $db->errno; + $e = $db->syserrno; + $str = $db->strerror; + $bool = $db->needs_recovery; + + $db->clear_error; + + $db->reorganize; + $db->sync; + + $n = $db->count; + + $n = $db->flags; + + $str = $db->dbname; + + $db->cache_size; + $db->cache_size($newsize); + + $n = $db->block_size; + + $bool = $db->sync_mode; + $db->sync_mode($bool); + + $bool = $db->centfree; + $db->centfree($bool); + + $bool = $db->coalesce; + $db->coalesce($bool); + + $bool = $db->mmap; + + $size = $db->mmapsize; + $db->mmapsize($newsize); + + $db->recover(%args); + untie %hash ; =head1 DESCRIPTION @@ -24,6 +62,250 @@ item from a GDBM_File tied hash while iterating over it with C. This is a limitation of the gdbm library. +=head1 STATIC METHODS + +=head2 GDBM_version + + $str = GDBM_File->GDBM_version; + @ar = GDBM_File->GDBM_version; + +Returns the version number of the underlying B library. In scalar +context, returns the library version formatted as string: + + MINOR.MAJOR[.PATCH][ (GUESS)] + +where I, I, and I are version numbers, and I is +a guess level (see below). + +In list context, returns a list: + + ( MINOR, MAJOR, PATCH [, GUESS] ) + +The I component is present only if B version is 1.8.3 or +earlier. This is because earlier releases of B did not include +information about their version and the B module has to implement +certain guesswork in order to determine it. I is a textual description +in string context, and a positive number indicating how rough the guess is +in list context. Possible values are: + +=over 4 + +=item 1 - exact guess + +The major and minor version numbers are guaranteed to be correct. The actual +patchlevel is most probably guessed right, but can be 1-2 less than indicated. + +=item 2 - approximate + +The major and minor number are guaranteed to be correct. The patchlevel is +set to the upper bound. + +=item 3 - rough guess + +The version is guaranteed to be not newer than B.I>. + +=back + +=head1 METHODS + +=head2 close + + $db->close; + +Closes the database. You are not advised to use this method directly. Please, +use B instead. + +=head2 errno + + $db->errno + +Returns the last error status associated with this database. + +=head2 syserrno + + $db->syserrno + +Returns the last system error status (C C variable), associated with +this database, + +=head2 strerror + + $db->strerror + +Returns textual description of the last error that occurred in this database. + +=head2 clear_error + + $db->clear_error + +Clear error status. + +=head2 needs_recovery + + $db->needs_recovery + +Returns true if the database needs recovery. + +=head2 reorganize + + $db->reorganize; + +Reorganizes the database. + +=head2 sync + + $db->sync; + +Synchronizes recent changes to the database with its disk copy. + +=head2 count + + $n = $db->count; + +Returns number of keys in the database. + +=head2 flags + + $db->flags; + +Returns flags passed as 4th argument to B. + +=head2 dbname + + $db->dbname; + +Returns the database name (i.e. 3rd argument to B. + +=head2 cache_size + + $db->cache_size; + $db->cache_size($newsize); + +Returns the size of the internal B cache for that database. + +Called with argument, sets the size to I<$newsize>. + +=head2 block_size + + $db->block_size; + +Returns the block size of the database. + +=head2 sync_mode + + $db->sync_mode; + $db->sync_mode($bool); + +Returns the status of the automatic synchronization mode. Called with argument, +enables or disables the sync mode, depending on whether $bool is B or +B. + +When synchronization mode is on (B), any changes to the database are +immediately written to the disk. This ensures database consistency in case +of any unforeseen errors (e.g. power failures), at the expense of considerable +slowdown of operation. + +Synchronization mode is off by default. + +=head2 centfree + + $db->centfree; + $db->centfree($bool); + +Returns status of the central free block pool (B<0> - disabled, +B<1> - enabled). + +With argument, changes its status. + +By default, central free block pool is disabled. + +=head2 coalesce + + $db->coalesce; + $db->coalesce($bool); + +=head2 mmap + + $db->mmap; + +Returns true if memory mapping is enabled. + +This method will B if the B library is complied without +memory mapping support. + +=head2 mmapsize + + $db->mmapsize; + $db->mmapsize($newsize); + +If memory mapping is enabled, returns the size of memory mapping. With +argument, sets the size to B<$newsize>. + +This method will B if the B library is complied without +memory mapping support. + +=head2 recover + + $db->recover(%args); + +Recovers data from a failed database. B<%args> is optional and can contain +following keys: + +=over 4 + +=item err => sub { ... } + +Reference to code for detailed error reporting. Upon encountering an error, +B will call this sub with a single argument - a description of the +error. + +=item backup => \$str + +Creates a backup copy of the database before recovery and returns its +filename in B<$str>. + +=item max_failed_keys => $n + +Maximum allowed number of failed keys. If the actual number becomes equal +to I<$n>, B aborts and returns error. + +=item max_failed_buckets => $n + +Maximum allowed number of failed buckets. If the actual number becomes equal +to I<$n>, B aborts and returns error. + +=item max_failures => $n + +Maximum allowed number of failures during recovery. + +=item stat => \%hash + +Return recovery statistics in I<%hash>. Upon return, the following keys will +be present: + +=over 8 + +=item recovered_keys + +Number of successfully recovered keys. + +=item recovered_buckets + +Number of successfully recovered buckets. + +=item failed_keys + +Number of keys that failed to be retrieved. + +=item failed_buckets + +Number of buckets that failed to be retrieved. + +=back + +=back + + =head1 AVAILABILITY gdbm is available from any GNU archive. The master site is @@ -43,15 +325,11 @@ A maliciously crafted file might cause perl to crash or even expose a security vulnerability. -=head1 BUGS - -The available functions and the gdbm/perl interface need to be documented. - -The GDBM error number and error message interface needs to be added. - =head1 SEE ALSO -L, L, L. +L, L, L, +L, +L. =cut @@ -67,25 +345,25 @@ require XSLoader; @ISA = qw(Tie::Hash Exporter); @EXPORT = qw( - GDBM_CACHESIZE - GDBM_CENTFREE - GDBM_COALESCEBLKS - GDBM_FAST - GDBM_FASTMODE - GDBM_INSERT - GDBM_NEWDB - GDBM_NOLOCK - GDBM_OPENMASK - GDBM_READER - GDBM_REPLACE - GDBM_SYNC - GDBM_SYNCMODE - GDBM_WRCREAT - GDBM_WRITER + GDBM_CACHESIZE + GDBM_CENTFREE + GDBM_COALESCEBLKS + GDBM_FAST + GDBM_FASTMODE + GDBM_INSERT + GDBM_NEWDB + GDBM_NOLOCK + GDBM_OPENMASK + GDBM_READER + GDBM_REPLACE + GDBM_SYNC + GDBM_SYNCMODE + GDBM_WRCREAT + GDBM_WRITER ); # This module isn't dual life, so no need for dev version numbers. -$VERSION = '1.18'; +$VERSION = '1.19'; XSLoader::load(); diff -Nru perl-5.32.1/ext/GDBM_File/GDBM_File.xs perl-5.34.0/ext/GDBM_File/GDBM_File.xs --- perl-5.32.1/ext/GDBM_File/GDBM_File.xs 2020-12-18 09:58:45.000000000 +0000 +++ perl-5.34.0/ext/GDBM_File/GDBM_File.xs 2021-01-20 23:04:44.000000000 +0000 @@ -23,23 +23,106 @@ typedef datum datum_value ; typedef datum datum_key_copy; -#if defined(GDBM_VERSION_MAJOR) && defined(GDBM_VERSION_MINOR) \ - && GDBM_VERSION_MAJOR > 1 || \ - (GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR >= 9) -typedef void (*FATALFUNC)(const char *); +/* Indexes for gdbm_flags aliases */ +enum { + opt_flags = 0, + opt_cache_size, + opt_sync_mode, + opt_centfree, + opt_coalesce, + opt_dbname, + opt_block_size, + opt_mmap, + opt_mmapsize +}; + +/* Names of gdbm_flags aliases, for error reporting. + Indexed by opt_ constants above. +*/ +char const *opt_names[] = { + "GDBM_File::flags", + "GDBM_File::cache_size", + "GDBM_File::sync_mode", + "GDBM_File::centfree", + "GDBM_File::coalesce", + "GDBM_File::dbname", + "GDBM_File::block_size", + "GDBM_File::mmap", + "GDBM_File::mmapsize" +}; + +#ifdef GDBM_VERSION_MAJOR +# define GDBM_VERSION_GUESS 0 #else -typedef void (*FATALFUNC)(); +/* Try educated guess + * The value of GDBM_VERSION_GUESS indicates how rough the guess is: + * 1 - Precise; based on the CVS logs and existing archives + * 2 - Moderate. The major and minor number are correct. The patchlevel + * is set to the upper bound. + * 3 - Rough; The version is guaranteed to be not newer than major.minor. + */ +# if defined(GDBM_SYNCMODE) +/* CHANGES from 1.7.3 to 1.8 + * 1. Added GDBM_CENTFREE functionality and option. + */ +# define GDBM_VERSION_MAJOR 1 +# define GDBM_VERSION_MINOR 8 +# define GDBM_VERSION_PATCH 3 +# define GDBM_VERSION_GUESS 1 +# elif defined(GDBM_FASTMODE) +/* CHANGES from 1.7.2 to 1.7.3 + * 1. Fixed a couple of last minute problems. (Namely, no autoconf.h in + * version.c, and no GDBM_FASTMODE in gdbm.h!) + */ +# define GDBM_VERSION_MAJOR 1 +# define GDBM_VERSION_MINOR 7 +# define GDBM_VERSION_PATCH 3 +# define GDBM_VERSION_GUESS 1 +# elif defined(GDBM_FAST) +/* From CVS logs: + * Mon May 17 12:32:02 1993 Phil Nelson (phil at cs.wwu.edu) + * + * * gdbm.proto: Added GDBM_FAST to the read_write flags. + */ +# define GDBM_VERSION_MAJOR 1 +# define GDBM_VERSION_MINOR 7 +# define GDBM_VERSION_PATCH 2 +# define GDBM_VERSION_GUESS 2 +# else +# define GDBM_VERSION_MAJOR 1 +# define GDBM_VERSION_MINOR 6 +# define GDBM_VERSION_GUESS 3 +# endif #endif -#ifndef GDBM_FAST -static int -not_here(char *s) -{ - croak("GDBM_File::%s not implemented on this architecture", s); - return -1; +#ifndef GDBM_VERSION_PATCH +# define GDBM_VERSION_PATCH 0 +#endif + +/* The use of fatal_func argument to gdbm_open is deprecated since 1.13 */ +#if GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR >= 13 +# define FATALFUNC NULL +#elif GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR >= 9 +# define FATALFUNC croak_string +# define NEED_FATALFUNC 1 +#else +# define FATALFUNC (void (*)()) croak_string +# define NEED_FATALFUNC 1 +#endif + +#ifdef NEED_FATALFUNC +static void +croak_string(const char *message) { + Perl_croak_nocontext("%s", message); } #endif +#define not_here(s) (croak("GDBM_File::%s not implemented", #s),-1) + +#if ! (GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR >= 11) +typedef unsigned gdbm_count_t; +#endif + /* GDBM allocates the datum with system malloc() and expects the user * to free() it. So we either have to free() it immediately, or have * perl free() it when it deallocates the SV, depending on whether @@ -62,17 +145,113 @@ #define gdbm_setopt(db,optflag,optval,optlen) not_here("gdbm_setopt") #endif +#ifndef GDBM_ITEM_NOT_FOUND +# define GDBM_ITEM_NOT_FOUND GDBM_NO_ERROR +#endif + +/* Prior to 1.13, gdbm_fetch family functions set gdbm_errno to GDBM_NO_ERROR + if the requested key did not exist */ +#define ITEM_NOT_FOUND() \ + (gdbm_errno == GDBM_ITEM_NOT_FOUND || gdbm_errno == GDBM_NO_ERROR) + +#define CHECKDB(db) do { \ + if (!db->dbp) { \ + croak("database was closed"); \ + } \ + } while (0) + static void -croak_string(const char *message) { - Perl_croak_nocontext("%s", message); +dbcroak(GDBM_File db, char const *func) +{ +#if GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR >= 13 + croak("%s: %s", func, gdbm_db_strerror(db->dbp)); +#else + (void)db; + croak("%s: %s", func, gdbm_strerror(gdbm_errno)); +#endif +} + +#if GDBM_VERSION_MAJOR == 1 && (GDBM_VERSION_MINOR > 16 || GDBM_VERSION_PATCH >= 90) +# define gdbm_close(db) gdbm_close(db->dbp) +#else +# define gdbm_close(db) (gdbm_close(db->dbp),0) +#endif +static int +gdbm_file_close(GDBM_File db) +{ + int rc = 0; + if (db->dbp) { + rc = gdbm_close(db); + db->dbp = NULL; + } + return rc; } +#if GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR >= 13 +/* Error-reporting wrapper for gdbm_recover */ +static void +rcvr_errfun(void *cv, char const *fmt, ...) +{ + dTHX; + dSP; + va_list ap; + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + va_start(ap, fmt); + XPUSHs(sv_2mortal(vnewSVpvf(fmt, &ap))); + va_end(ap); + PUTBACK; + + call_sv((SV*)cv, G_DISCARD); + + FREETMPS; + LEAVE; +} +#endif + #include "const-c.inc" MODULE = GDBM_File PACKAGE = GDBM_File PREFIX = gdbm_ INCLUDE: const-xs.inc +void +gdbm_GDBM_version(package) + PPCODE: + I32 gimme = GIMME_V; + if (gimme == G_VOID) { + /* nothing */; + } else if (gimme == G_SCALAR) { + static char const *guess[] = { + "", + " (exact guess)", + " (approximate)", + " (rough guess)" + }; + if (GDBM_VERSION_PATCH > 0) { + XPUSHs(sv_2mortal(newSVpvf("%d.%d.%d%s", + GDBM_VERSION_MAJOR, + GDBM_VERSION_MINOR, + GDBM_VERSION_PATCH, + guess[GDBM_VERSION_GUESS]))); + } else { + XPUSHs(sv_2mortal(newSVpvf("%d.%d%s", + GDBM_VERSION_MAJOR, + GDBM_VERSION_MINOR, + guess[GDBM_VERSION_GUESS]))); + } + } else { + XPUSHs(sv_2mortal(newSVuv(GDBM_VERSION_MAJOR))); + XPUSHs(sv_2mortal(newSVuv(GDBM_VERSION_MINOR))); + XPUSHs(sv_2mortal(newSVuv(GDBM_VERSION_PATCH))); + if (GDBM_VERSION_GUESS > 0) { + XPUSHs(sv_2mortal(newSVuv(GDBM_VERSION_GUESS))); + } + } + GDBM_File gdbm_TIEHASH(dbtype, name, read_write, mode) char * dbtype @@ -82,7 +261,7 @@ PREINIT: GDBM_FILE dbp; CODE: - dbp = gdbm_open(name, 0, read_write, mode, (FATALFUNC)croak_string); + dbp = gdbm_open(name, 0, read_write, mode, FATALFUNC); if (!dbp && gdbm_errno == GDBM_BLOCK_SIZE_ERROR) { /* * By specifying a block size of 0 above, we asked gdbm to @@ -93,8 +272,7 @@ * defaulting to fail. In that case, force an acceptable * block size. */ - dbp = gdbm_open(name, 4096, read_write, mode, - (FATALFUNC)croak_string); + dbp = gdbm_open(name, 4096, read_write, mode, FATALFUNC); } if (dbp) { RETVAL = (GDBM_File)safecalloc(1, sizeof(GDBM_File_type)); @@ -105,31 +283,46 @@ OUTPUT: RETVAL - -#define gdbm_close(db) gdbm_close(db->dbp) -void -gdbm_close(db) - GDBM_File db - CLEANUP: - void gdbm_DESTROY(db) GDBM_File db PREINIT: int i = store_value; - CODE: - gdbm_close(db); + CODE: + if (gdbm_file_close(db)) { + croak("gdbm_close: %s; %s", gdbm_strerror(gdbm_errno), + strerror(errno)); + } do { if (db->filter[i]) SvREFCNT_dec(db->filter[i]); } while (i-- > 0); safefree(db); +void +gdbm_UNTIE(db, count) + GDBM_File db + unsigned count + CODE: + if (count == 0) { + if (gdbm_file_close(db)) + croak("gdbm_close: %s; %s", + gdbm_strerror(gdbm_errno), + strerror(errno)); + } + + #define gdbm_FETCH(db,key) gdbm_fetch(db->dbp,key) datum_value gdbm_FETCH(db, key) GDBM_File db datum_key_copy key + INIT: + CHECKDB(db); + CLEANUP: + if (RETVAL.dptr == NULL && !ITEM_NOT_FOUND()) { + dbcroak(db, "gdbm_fetch"); + } #define gdbm_STORE(db,key,value,flags) gdbm_store(db->dbp,key,value,flags) int @@ -138,12 +331,11 @@ datum_key key datum_value value int flags + INIT: + CHECKDB(db); CLEANUP: if (RETVAL) { - if (RETVAL < 0 && errno == EPERM) - croak("No write permission to gdbm file"); - croak("gdbm store returned %d, errno %d, key \"%.*s\"", - RETVAL,errno,key.dsize,key.dptr); + dbcroak(db, "gdbm_store"); } #define gdbm_DELETE(db,key) gdbm_delete(db->dbp,key) @@ -151,35 +343,468 @@ gdbm_DELETE(db, key) GDBM_File db datum_key key + INIT: + CHECKDB(db); + CLEANUP: + if (RETVAL && !ITEM_NOT_FOUND()) { + dbcroak(db, "gdbm_delete"); + } #define gdbm_FIRSTKEY(db) gdbm_firstkey(db->dbp) datum_key gdbm_FIRSTKEY(db) GDBM_File db + INIT: + CHECKDB(db); + CLEANUP: + if (RETVAL.dptr == NULL && !ITEM_NOT_FOUND()) { + dbcroak(db, "gdbm_firstkey"); + } #define gdbm_NEXTKEY(db,key) gdbm_nextkey(db->dbp,key) datum_key gdbm_NEXTKEY(db, key) GDBM_File db datum_key key + INIT: + CHECKDB(db); + CLEANUP: + if (RETVAL.dptr == NULL && !ITEM_NOT_FOUND()) { + dbcroak(db, "gdbm_nextkey"); + } + +#define gdbm_EXISTS(db,key) gdbm_exists(db->dbp,key) +int +gdbm_EXISTS(db, key) + GDBM_File db + datum_key key + INIT: + CHECKDB(db); + +## + +int +gdbm_close(db) + GDBM_File db + INIT: + CHECKDB(db); + CODE: + RETVAL = gdbm_file_close(db); + OUTPUT: + RETVAL + +int +gdbm_errno(db) + GDBM_File db + INIT: + CHECKDB(db); + CODE: +#if GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR >= 13 + RETVAL = gdbm_last_errno(db->dbp); +#else + RETVAL = gdbm_errno; +#endif + OUTPUT: + RETVAL + +int +gdbm_syserrno(db) + GDBM_File db + INIT: + CHECKDB(db); + CODE: +#if GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR >= 13 + { + int ec = gdbm_last_errno(db->dbp); + if (gdbm_check_syserr(ec)) { + RETVAL = gdbm_last_syserr(db->dbp); + } else { + RETVAL = 0; + } + } +#else + not_here("syserrno"); +#endif + OUTPUT: + RETVAL +SV * +gdbm_strerror(db) + GDBM_File db + PREINIT: + char const *errstr; + INIT: + CHECKDB(db); + CODE: +#if GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR >= 13 + errstr = gdbm_db_strerror(db->dbp); +#else + errstr = gdbm_strerror(gdbm_errno); +#endif + RETVAL = newSVpv(errstr, 0); + OUTPUT: + RETVAL + +#if GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR >= 13 +# define gdbm_clear_error(db) gdbm_clear_error(db->dbp) +#else +# define gdbm_clear_error(db) (gdbm_errno = 0) +#endif +void +gdbm_clear_error(db) + GDBM_File db + INIT: + CHECKDB(db); + +#if GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR >= 13 +# define gdbm_needs_recovery(db) gdbm_needs_recovery(db->dbp) +#else +# define gdbm_needs_recovery(db) not_here("gdbm_needs_recovery") +#endif +int +gdbm_needs_recovery(db) + GDBM_File db + INIT: + CHECKDB(db); + #define gdbm_reorganize(db) gdbm_reorganize(db->dbp) int gdbm_reorganize(db) GDBM_File db + INIT: + CHECKDB(db); + + +# Arguments: +# err => sub { ... } +# max_failed_keys => $n +# max_failed_buckets => $n +# max_failures => $n +# backup => \$str +# stat => \%hash +#if GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR >= 13 -#define gdbm_sync(db) gdbm_sync(db->dbp) void -gdbm_sync(db) +gdbm_recover(db, ...) GDBM_File db + PREINIT: + int flags = GDBM_RCVR_FORCE; + SV *backup_ref = &PL_sv_undef; + SV *stat_ref = &PL_sv_undef; + gdbm_recovery rcvr; + INIT: + CHECKDB(db); + CODE: + if (items > 1) { + int i; + if ((items % 2) == 0) { + croak("bad number of arguments"); + } + for (i = 1; i < items; i += 2) { + char *kw; + SV *sv = ST(i); + SV *val = ST(i+1); + + if (!SvPOK(sv)) + croak("bad arguments near #%d", i); + kw = SvPV_nolen(sv); + if (strcmp(kw, "err") == 0) { + if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVCV) { + rcvr.data = SvRV(val); + } else { + croak("%s must be a code ref", kw); + } + rcvr.errfun = rcvr_errfun; + flags |= GDBM_RCVR_ERRFUN; + } else if (strcmp(kw, "max_failed_keys") == 0) { + if (SvIOK(val)) { + rcvr.max_failed_keys = SvUV(val); + } else { + croak("max_failed_keys must be numeric"); + } + flags |= GDBM_RCVR_MAX_FAILED_KEYS; + } else if (strcmp(kw, "max_failed_buckets") == 0) { + if (SvIOK(val)) { + rcvr.max_failed_buckets = SvUV(val); + } else { + croak("max_failed_buckets must be numeric"); + } + flags |= GDBM_RCVR_MAX_FAILED_BUCKETS; + } else if (strcmp(kw, "max_failures") == 0) { + if (SvIOK(val)) { + rcvr.max_failures = SvUV(val); + } else { + croak("max_failures must be numeric"); + } + flags |= GDBM_RCVR_MAX_FAILURES; + } else if (strcmp(kw, "backup") == 0) { + if (SvROK(val) && SvTYPE(SvRV(val)) < SVt_PVAV) { + backup_ref = val; + } else { + croak("backup must be a scalar reference"); + } + flags |= GDBM_RCVR_BACKUP; + } else if (strcmp(kw, "stat") == 0) { + if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVHV) { + stat_ref = val; + } else { + croak("backup must be a scalar reference"); + } + } else { + croak("%s: unrecognized argument", kw); + } + } + } + if (gdbm_recover(db->dbp, &rcvr, flags)) { + dbcroak(db, "gdbm_recover"); + } + if (stat_ref != &PL_sv_undef) { + HV *hv = (HV*)SvRV(stat_ref); +#define STAT_RECOVERED_KEYS_STR "recovered_keys" +#define STAT_RECOVERED_KEYS_LEN (sizeof(STAT_RECOVERED_KEYS_STR)-1) +#define STAT_RECOVERED_BUCKETS_STR "recovered_buckets" +#define STAT_RECOVERED_BUCKETS_LEN (sizeof(STAT_RECOVERED_BUCKETS_STR)-1) +#define STAT_FAILED_KEYS_STR "failed_keys" +#define STAT_FAILED_KEYS_LEN (sizeof(STAT_FAILED_KEYS_STR)-1) +#define STAT_FAILED_BUCKETS_STR "failed_buckets" +#define STAT_FAILED_BUCKETS_LEN (sizeof(STAT_FAILED_BUCKETS_STR)-1) + hv_store(hv, STAT_RECOVERED_KEYS_STR, STAT_RECOVERED_KEYS_LEN, + newSVuv(rcvr.recovered_keys), 0); + hv_store(hv, + STAT_RECOVERED_BUCKETS_STR, + STAT_RECOVERED_BUCKETS_LEN, + newSVuv(rcvr.recovered_buckets), 0); + hv_store(hv, + STAT_FAILED_KEYS_STR, + STAT_FAILED_KEYS_LEN, + newSVuv(rcvr.failed_keys), 0); + hv_store(hv, + STAT_FAILED_BUCKETS_STR, + STAT_FAILED_BUCKETS_LEN, + newSVuv(rcvr.failed_buckets), 0); + } + if (backup_ref != &PL_sv_undef) { + SV *sv = SvRV(backup_ref); + sv_setpv(sv, rcvr.backup_name); + free(rcvr.backup_name); + } -#define gdbm_EXISTS(db,key) gdbm_exists(db->dbp,key) +#endif + +#if GDBM_VERSION_MAJOR == 1 && (GDBM_VERSION_MINOR > 16 || GDBM_VERSION_PATCH >= 90) +# define gdbm_sync(db) gdbm_sync(db->dbp) +#else +# define gdbm_sync(db) (gdbm_sync(db->dbp),0) +#endif int -gdbm_EXISTS(db, key) +gdbm_sync(db) GDBM_File db - datum_key key + INIT: + CHECKDB(db); + CLEANUP: + if (RETVAL) { + dbcroak(db, "gdbm_sync"); + } + +#if GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR >= 11 + +gdbm_count_t +gdbm_count(db) + GDBM_File db + PREINIT: + gdbm_count_t c; + INIT: + CHECKDB(db); + CODE: + if (gdbm_count(db->dbp, &c)) { + dbcroak(db, "gdbm_count"); + } + RETVAL = c; + OUTPUT: + RETVAL + +#endif + +#define OPTNAME(a,b) a ## b +#define INTOPTSETUP(opt) \ + do { \ + if (items == 1) { \ + opcode = OPTNAME(GDBM_GET, opt); \ + } else { \ + opcode = OPTNAME(GDBM_SET, opt); \ + sv = ST(1); \ + if (!SvIOK(sv)) { \ + croak("%s: bad argument type", opt_names[ix]); \ + } \ + c_iv = SvIV(sv); \ + } \ + } while (0) + +#if GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR >= 9 +# define OPTVALPTR void * +#else +# define OPTVALPTR int * +#endif + +# GDBM_GET defines appeared in version 1.9 (2011-08-12). +# +# Provide definitions for earlier versions. These will cause gdbm_setopt +# to fail with GDBM_OPT_ILLEGAL +#ifndef GDBM_GETFLAGS +# define GDBM_GETFLAGS -1 +#endif +#ifndef GDBM_GETMMAP +# define GDBM_GETMMAP -1 +#endif +#ifndef GDBM_GETCACHESIZE +# define GDBM_GETCACHESIZE -1 +#endif +#ifndef GDBM_GETSYNCMODE +# define GDBM_GETSYNCMODE -1 +#endif +#ifndef GDBM_GETCENTFREE +# define GDBM_GETCENTFREE -1 +#endif +#ifndef GDBM_GETCOALESCEBLKS +# define GDBM_GETCOALESCEBLKS -1 +#endif +#ifndef GDBM_GETMAXMAPSIZE +# define GDBM_GETMAXMAPSIZE -1 +#endif +#ifndef GDBM_GETDBNAME +# define GDBM_GETDBNAME -1 +#endif +#ifndef GDBM_GETBLOCKSIZE +# define GDBM_GETBLOCKSIZE -1 +#endif + +# These two appeared in version 1.10: + +#ifndef GDBM_SETMAXMAPSIZE +# define GDBM_SETMAXMAPSIZE -1 +#endif +#ifndef GDBM_SETMMAP +# define GDBM_SETMMAP -1 +#endif + +# These GDBM_SET defines appeared in 1.10, replacing obsolete opcodes. +# Provide definitions for older versions + +#ifndef GDBM_SETCACHESIZE +# define GDBM_SETCACHESIZE GDBM_CACHESIZE +#endif +#ifndef GDBM_SETSYNCMODE +# define GDBM_SETSYNCMODE GDBM_SYNCMODE +#endif +#ifndef GDBM_SETCENTFREE +# define GDBM_SETCENTFREE GDBM_CENTFREE +#endif +#ifndef GDBM_SETCOALESCEBLKS +# define GDBM_SETCOALESCEBLKS GDBM_COALESCEBLKS +#endif + +SV * +gdbm_flags(db, ...) + GDBM_File db + SV * RETVAL = &PL_sv_undef; + ALIAS: + GDBM_File::cache_size = opt_cache_size + GDBM_File::sync_mode = opt_sync_mode + GDBM_File::centfree = opt_centfree + GDBM_File::coalesce = opt_coalesce + GDBM_File::dbname = opt_dbname + GDBM_File::block_size = opt_block_size + GDBM_File::mmap = opt_mmap + GDBM_File::mmapsize = opt_mmapsize + PREINIT: + int opcode = -1; + int c_iv; + unsigned c_uv; + char *c_cv; + OPTVALPTR vptr = (OPTVALPTR) &c_iv; + size_t vsiz = sizeof(c_iv); + SV *sv; + INIT: + CHECKDB(db); + CODE: + if (items > 2) { + croak("%s: too many arguments", opt_names[ix]); + } + + switch (ix) { + case opt_flags: + if (items > 1) { + croak("%s: too many arguments", opt_names[ix]); + } + opcode = GDBM_GETFLAGS; + break; + case opt_cache_size: + INTOPTSETUP(CACHESIZE); + break; + case opt_sync_mode: + INTOPTSETUP(SYNCMODE); + break; + case opt_centfree: + INTOPTSETUP(CENTFREE); + break; + case opt_coalesce: + INTOPTSETUP(COALESCEBLKS); + break; + case opt_dbname: + if (items > 1) { + croak("%s: too many arguments", opt_names[ix]); + } + opcode = GDBM_GETDBNAME; + vptr = (OPTVALPTR) &c_cv; + vsiz = sizeof(c_cv); + break; + case opt_block_size: + if (items > 1) { + croak("%s: too many arguments", opt_names[ix]); + } + opcode = GDBM_GETBLOCKSIZE; + break; + case opt_mmap: + if (items > 1) { + croak("%s: too many arguments", opt_names[ix]); + } + opcode = GDBM_GETMMAP; + break; + case opt_mmapsize: + vptr = (OPTVALPTR) &c_uv; + vsiz = sizeof(c_uv); + if (items == 1) { + opcode = GDBM_GETMAXMAPSIZE; + } else { + opcode = GDBM_SETMAXMAPSIZE; + sv = ST(1); + if (!SvUOK(sv)) { + croak("%s: bad argument type", opt_names[ix]); + } + c_uv = SvUV(sv); + } + break; + } + + if (gdbm_setopt(db->dbp, opcode, vptr, vsiz)) { + if (gdbm_errno == GDBM_OPT_ILLEGAL) + croak("%s not implemented", opt_names[ix]); + dbcroak(db, "gdbm_setopt"); + } + + if (vptr == (OPTVALPTR) &c_iv) { + RETVAL = newSViv(c_iv); + } else if (vptr == (OPTVALPTR) &c_uv) { + RETVAL = newSVuv(c_uv); + } else { + RETVAL = newSVpv(c_cv, 0); + free(c_cv); + } + OUTPUT: + RETVAL + #define gdbm_setopt(db,optflag, optval, optlen) gdbm_setopt(db->dbp,optflag, optval, optlen) int gdbm_setopt (db, optflag, optval, optlen) @@ -187,17 +812,23 @@ int optflag int &optval int optlen - + INIT: + CHECKDB(db); + CLEANUP: + if (RETVAL) { + dbcroak(db, "gdbm_setopt"); + } SV * filter_fetch_key(db, code) GDBM_File db SV * code SV * RETVAL = &PL_sv_undef ; - ALIAS: + ALIAS: GDBM_File::filter_fetch_key = fetch_key GDBM_File::filter_store_key = store_key GDBM_File::filter_fetch_value = fetch_value GDBM_File::filter_store_value = store_value - CODE: - DBM_setFilter(db->filter[ix], code); + CODE: + DBM_setFilter(db->filter[ix], code); + diff -Nru perl-5.32.1/ext/GDBM_File/t/count.t perl-5.34.0/ext/GDBM_File/t/count.t --- perl-5.32.1/ext/GDBM_File/t/count.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/ext/GDBM_File/t/count.t 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,37 @@ +#!./perl -w +use strict; + +use Test::More; +use Config; +use File::Temp 'tempdir'; +use File::Spec; + +BEGIN { + plan(skip_all => "GDBM_File was not built") + unless $Config{extensions} =~ /\bGDBM_File\b/; + + # https://rt.perl.org/Public/Bug/Display.html?id=117967 + plan(skip_all => "GDBM_File is flaky in $^O") + if $^O =~ /darwin/; + + plan(tests => 3); + use_ok('GDBM_File'); + } + +my $wd = tempdir(CLEANUP => 1); + +my %h; +my $db = tie(%h, 'GDBM_File', File::Spec->catfile($wd, 'Op_dbmx'), + GDBM_WRCREAT, 0640); + +isa_ok($db, 'GDBM_File'); +SKIP: { + skip 'GDBM_File::count not available', 1 + unless $db->can('count'); + + $h{one} = '1'; + $h{two} = '2'; + $h{three} = '3'; + is($db->count, 3, 'count'); +} + diff -Nru perl-5.32.1/ext/GDBM_File/t/fatal.t perl-5.34.0/ext/GDBM_File/t/fatal.t --- perl-5.32.1/ext/GDBM_File/t/fatal.t 2020-12-18 09:58:45.000000000 +0000 +++ perl-5.34.0/ext/GDBM_File/t/fatal.t 2021-01-20 23:04:44.000000000 +0000 @@ -11,6 +11,8 @@ use Test::More; use Config; +use File::Temp 'tempdir'; +use File::Spec; BEGIN { plan(skip_all => "GDBM_File was not built") @@ -24,8 +26,6 @@ use_ok('GDBM_File'); } -unlink ; - open my $fh, '<', $^X or die "Can't open $^X: $!"; my $fileno = fileno $fh; isnt($fileno, undef, "Can find next available file descriptor"); @@ -35,8 +35,10 @@ "Check that we cannot open fileno $fileno. \$! is $!"); umask(0); +my $wd = tempdir(CLEANUP => 1); my %h; -isa_ok(tie(%h, 'GDBM_File', 'fatal_dbmx', GDBM_WRCREAT, 0640), 'GDBM_File'); +isa_ok(tie(%h, 'GDBM_File', File::Spec->catfile($wd, 'fatal_dbmx'), + GDBM_WRCREAT, 0640), 'GDBM_File'); isnt((open $fh, "<&=$fileno"), undef, "dup fileno $fileno") or diag("\$! = $!"); @@ -63,4 +65,3 @@ 'expected error message from GDBM_File'); } -unlink ; diff -Nru perl-5.32.1/ext/GDBM_File/t/opt.t perl-5.34.0/ext/GDBM_File/t/opt.t --- perl-5.32.1/ext/GDBM_File/t/opt.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/ext/GDBM_File/t/opt.t 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,37 @@ +#!./perl -w +use strict; + +use Test::More; +use Config; +use File::Temp 'tempdir'; +use File::Spec; + +BEGIN { + plan(skip_all => "GDBM_File was not built") + unless $Config{extensions} =~ /\bGDBM_File\b/; + + # https://rt.perl.org/Public/Bug/Display.html?id=117967 + plan(skip_all => "GDBM_File is flaky in $^O") + if $^O =~ /darwin/; + + plan(tests => 8); + use_ok('GDBM_File'); +} + +my $wd = tempdir(CLEANUP => 1); +my $dbname = File::Spec->catfile($wd, 'Op_dbmx'); +my %h; +my $db = tie(%h, 'GDBM_File', $dbname, GDBM_WRCREAT, 0640); +isa_ok($db, 'GDBM_File'); +SKIP: { + my $name = eval { $db->dbname } or do { + skip "gdbm_setopt GET calls not implemented", 6 + if $@ =~ /GDBM_File::dbname not implemented/; + }; + is($db->dbname, $dbname, 'get dbname'); + is(eval { $db->dbname("a"); }, undef, 'dbname - bad usage'); + is($db->flags, GDBM_WRCREAT, 'get flags'); + is($db->sync_mode, 0, 'get sync_mode'); + is($db->sync_mode(1), 1, 'set sync_mode'); + is($db->sync_mode, 1, 'get sync_mode'); +} diff -Nru perl-5.32.1/ext/GDBM_File/typemap perl-5.34.0/ext/GDBM_File/typemap --- perl-5.32.1/ext/GDBM_File/typemap 2020-12-18 09:58:45.000000000 +0000 +++ perl-5.34.0/ext/GDBM_File/typemap 2021-01-20 23:04:44.000000000 +0000 @@ -11,6 +11,7 @@ ODBM_File T_PTROBJ DB_File T_PTROBJ DBZ_File T_PTROBJ +gdbm_count_t T_UV INPUT T_DATUM_K diff -Nru perl-5.32.1/ext/Hash-Util/Changes perl-5.34.0/ext/Hash-Util/Changes --- perl-5.32.1/ext/Hash-Util/Changes 2020-12-18 09:58:45.000000000 +0000 +++ perl-5.34.0/ext/Hash-Util/Changes 2021-02-21 11:01:31.000000000 +0000 @@ -1,5 +1,14 @@ Revision history for Perl extension Hash::Util. +0.25, 0.24 + Build fixes. + +0.23 + Doc Fixes. + +0.22, 0.21 + Build Fixes. + 0.20 Add bucket_ratio, num_buckets, used_buckets as a back-compat shin for 5.25 where we remove the bucket data from scalar(%hash) diff -Nru perl-5.32.1/ext/Hash-Util/lib/Hash/Util.pm perl-5.34.0/ext/Hash-Util/lib/Hash/Util.pm --- perl-5.32.1/ext/Hash-Util/lib/Hash/Util.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/Hash-Util/lib/Hash/Util.pm 2021-02-21 11:01:31.000000000 +0000 @@ -42,7 +42,7 @@ BEGIN { # make sure all our XS routines are available early so their prototypes # are correctly applied in the following code. - our $VERSION = '0.23'; + our $VERSION = '0.25'; require XSLoader; XSLoader::load(); } diff -Nru perl-5.32.1/ext/Hash-Util/t/Util.t perl-5.34.0/ext/Hash-Util/t/Util.t --- perl-5.32.1/ext/Hash-Util/t/Util.t 2020-12-18 09:58:45.000000000 +0000 +++ perl-5.34.0/ext/Hash-Util/t/Util.t 2021-02-21 11:01:31.000000000 +0000 @@ -46,7 +46,7 @@ lock_hash_recurse unlock_hash_recurse lock_hashref_recurse unlock_hashref_recurse ); - plan tests => 244 + @Exported_Funcs; + plan tests => 250 + @Exported_Funcs; use_ok 'Hash::Util', @Exported_Funcs; } foreach my $func (@Exported_Funcs) { @@ -597,7 +597,27 @@ my $h2= hash_value("bar"); is( $h1, hash_value("foo") ); is( $h2, hash_value("bar") ); + + my $seed= hash_seed(); + my $h1s= hash_value("foo",$seed); + my $h2s= hash_value("bar",$seed); + + is( $h1s, hash_value("foo",$seed) ); + is( $h2s, hash_value("bar",$seed) ); + + $seed= join "", map { chr $_ } 1..length($seed); + + my $h1s2= hash_value("foo",$seed); + my $h2s2= hash_value("bar",$seed); + + is( $h1s2, hash_value("foo",$seed) ); + is( $h2s2, hash_value("bar",$seed) ); + + isnt($h1s,$h1s2); + isnt($h1s,$h1s2); + } + { my @info1= bucket_info({}); my @info2= bucket_info({1..10}); diff -Nru perl-5.32.1/ext/Hash-Util/Util.xs perl-5.34.0/ext/Hash-Util/Util.xs --- perl-5.32.1/ext/Hash-Util/Util.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/Hash-Util/Util.xs 2021-02-21 11:01:31.000000000 +0000 @@ -95,8 +95,8 @@ U8 *seedbuf= (U8 *)SvPV(ST(1),seedlen); if ( seedlen < PERL_HASH_SEED_BYTES ) { sv_dump(ST(1)); - Perl_croak(aTHX_ "seed len must be at least %d long only got %" - UVuf " bytes", PERL_HASH_SEED_BYTES, (UV)seedlen); + Perl_croak(aTHX_ "seed len must be at least %" UVuf " long only got %" + UVuf " bytes", (UV)PERL_HASH_SEED_BYTES, (UV)seedlen); } PERL_HASH_WITH_SEED(seedbuf, uv, pv, len); @@ -284,7 +284,7 @@ if (SvROK(rhv)) { rhv= SvRV(rhv); if ( SvTYPE(rhv)==SVt_PVHV ) { -#if PERL_VERSION < 25 +#if PERL_VERSION_LT(5,25,0) SV *ret= Perl_hv_scalar(aTHX_ (HV*)rhv); #else SV *ret= Perl_hv_bucket_ratio(aTHX_ (HV*)rhv); diff -Nru perl-5.32.1/ext/Hash-Util-FieldHash/FieldHash.xs perl-5.34.0/ext/Hash-Util-FieldHash/FieldHash.xs --- perl-5.32.1/ext/Hash-Util-FieldHash/FieldHash.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/Hash-Util-FieldHash/FieldHash.xs 2020-10-04 22:17:13.000000000 +0000 @@ -318,8 +318,8 @@ hv_iterinit(MY_CXT.ob_reg); while((ent = hv_iternext(MY_CXT.ob_reg))) av_push(oblist, SvREFCNT_inc(hv_iterkeysv(ent))); - len = av_tindex(oblist); - for (i = 0; i <= len; ++i) { + len = av_count(oblist); + for (i = 0; i < len; ++i) { SV* old_id = *av_fetch(oblist, i, 0); SV* trigger = hv_delete_ent(MY_CXT.ob_reg, old_id, 0, 0); SV* obj = SvRV(trigger); diff -Nru perl-5.32.1/ext/Hash-Util-FieldHash/lib/Hash/Util/FieldHash.pm perl-5.34.0/ext/Hash-Util-FieldHash/lib/Hash/Util/FieldHash.pm --- perl-5.32.1/ext/Hash-Util-FieldHash/lib/Hash/Util/FieldHash.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/Hash-Util-FieldHash/lib/Hash/Util/FieldHash.pm 2020-10-04 22:17:13.000000000 +0000 @@ -5,7 +5,7 @@ use warnings; use Scalar::Util qw( reftype); -our $VERSION = '1.20'; +our $VERSION = '1.21'; require Exporter; our @ISA = qw(Exporter); diff -Nru perl-5.32.1/ext/mro/mro.pm perl-5.34.0/ext/mro/mro.pm --- perl-5.32.1/ext/mro/mro.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/mro/mro.pm 2021-02-21 11:01:31.000000000 +0000 @@ -12,7 +12,7 @@ # mro.pm versions < 1.00 reserved for MRO::Compat # for partial back-compat to 5.[68].x -our $VERSION = '1.23'; +our $VERSION = '1.25_001'; require XSLoader; XSLoader::load('mro'); @@ -89,8 +89,7 @@ the language Dylan (see links in the L section), and then later adopted as the preferred MRO (Method Resolution Order) for the new-style classes in Python 2.3. Most recently it has been adopted as the -"canonical" MRO for Perl 6 classes, and the default MRO for Parrot objects -as well. +"canonical" MRO for Raku classes. =head2 How does C3 work diff -Nru perl-5.32.1/ext/mro/mro.xs perl-5.34.0/ext/mro/mro.xs --- perl-5.32.1/ext/mro/mro.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/mro/mro.xs 2021-02-21 11:01:31.000000000 +0000 @@ -63,8 +63,9 @@ /* For a better idea how the rest of this works, see the much clearer pure perl version in Algorithm::C3 0.01: - http://search.cpan.org/src/STEVAN/Algorithm-C3-0.01/lib/Algorithm/C3.pm - (later versions go about it differently than this code for speed reasons) + https://fastapi.metacpan.org/source/STEVAN/Algorithm-C3-0.01/lib/Algorithm/C3.pm + (later versions of this module go about it differently than this code + for speed reasons) */ if(isa && AvFILLp(isa) >= 0) { @@ -253,13 +254,13 @@ hierarchy is not C3-incompatible */ if(!winner) { SV *errmsg; - I32 i; + Size_t i; errmsg = newSVpvf( "Inconsistent hierarchy during C3 merge of class '%" HEKf "':\n\t" "current merge results [\n", HEKfARG(stashhek)); - for (i = 0; i <= av_tindex(retval); i++) { + for (i = 0; i < av_count(retval); i++) { SV **elem = av_fetch(retval, i, 0); sv_catpvf(errmsg, "\t\t%" SVf ",\n", SVfARG(*elem)); } diff -Nru perl-5.32.1/ext/ODBM_File/ODBM_File.pm perl-5.34.0/ext/ODBM_File/ODBM_File.pm --- perl-5.32.1/ext/ODBM_File/ODBM_File.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/ODBM_File/ODBM_File.pm 2021-01-20 23:04:44.000000000 +0000 @@ -7,7 +7,7 @@ require XSLoader; our @ISA = qw(Tie::Hash); -our $VERSION = "1.16"; +our $VERSION = "1.17"; XSLoader::load(); diff -Nru perl-5.32.1/ext/ODBM_File/ODBM_File.xs perl-5.34.0/ext/ODBM_File/ODBM_File.xs --- perl-5.32.1/ext/ODBM_File/ODBM_File.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/ODBM_File/ODBM_File.xs 2021-01-20 23:04:44.000000000 +0000 @@ -181,6 +181,14 @@ odbm_DELETE(db, key) ODBM_File db datum_key key + CODE: + /* don't warn about 'delete' being a C++ keyword */ + GCC_DIAG_IGNORE_STMT(-Wc++-compat); + RETVAL = odbm_DELETE(db, key); + GCC_DIAG_RESTORE_STMT; + OUTPUT: + RETVAL + datum_key odbm_FIRSTKEY(db) diff -Nru perl-5.32.1/ext/Opcode/Opcode.pm perl-5.34.0/ext/Opcode/Opcode.pm --- perl-5.32.1/ext/Opcode/Opcode.pm 2021-01-09 12:15:13.000000000 +0000 +++ perl-5.34.0/ext/Opcode/Opcode.pm 2021-02-21 11:01:31.000000000 +0000 @@ -6,7 +6,7 @@ our($VERSION, @ISA, @EXPORT_OK); -$VERSION = "1.48"; +$VERSION = "1.50"; use Carp; use Exporter (); @@ -435,6 +435,7 @@ localtime gmtime entertry leavetry -- can be used to 'hide' fatal errors + entertrycatch poptry catch leavetrycatch -- similar entergiven leavegiven enterwhen leavewhen diff -Nru perl-5.32.1/ext/Opcode/Opcode.xs perl-5.34.0/ext/Opcode/Opcode.xs --- perl-5.32.1/ext/Opcode/Opcode.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/Opcode/Opcode.xs 2021-01-20 23:04:44.000000000 +0000 @@ -237,7 +237,8 @@ * is disallowed by Borland */ if (opcode_debug >= 2) - SAVEDESTRUCTOR((void(*)(void*))Perl_warn,"PL_op_mask restored"); + SAVEDESTRUCTOR((void(*)(void*))Perl_warn_nocontext, + "PL_op_mask restored"); PL_op_mask = &op_mask_buf[0]; if (orig_op_mask) Copy(orig_op_mask, PL_op_mask, PL_maxo, char); diff -Nru perl-5.32.1/ext/PerlIO-encoding/encoding.pm perl-5.34.0/ext/PerlIO-encoding/encoding.pm --- perl-5.32.1/ext/PerlIO-encoding/encoding.pm 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/PerlIO-encoding/encoding.pm 2021-02-21 11:01:31.000000000 +0000 @@ -1,7 +1,7 @@ package PerlIO::encoding; use strict; -our $VERSION = '0.28'; +our $VERSION = '0.30'; our $DEBUG = 0; $DEBUG and warn __PACKAGE__, " called by ", join(", ", caller), "\n"; @@ -13,8 +13,7 @@ require XSLoader; XSLoader::load(); -our $fallback = - Encode::PERLQQ()|Encode::WARN_ON_ERR()|Encode::ONLY_PRAGMA_WARNINGS()|Encode::STOP_AT_PARTIAL(); +our $fallback = Encode::PERLQQ()|Encode::WARN_ON_ERR()|Encode::ONLY_PRAGMA_WARNINGS(); 1; __END__ diff -Nru perl-5.32.1/ext/PerlIO-encoding/encoding.xs perl-5.34.0/ext/PerlIO-encoding/encoding.xs --- perl-5.32.1/ext/PerlIO-encoding/encoding.xs 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/PerlIO-encoding/encoding.xs 2021-02-21 11:01:31.000000000 +0000 @@ -5,6 +5,12 @@ #define U8 U8 #define OUR_DEFAULT_FB "Encode::PERLQQ" +#define OUR_STOP_AT_PARTIAL "Encode::STOP_AT_PARTIAL" +#define OUR_LEAVE_SRC "Encode::LEAVE_SRC" + +/* This will be set during BOOT */ +static unsigned int encode_stop_at_partial = 0; +static unsigned int encode_leave_src = 0; #if defined(USE_PERLIO) @@ -164,6 +170,9 @@ } e->chk = newSVsv(get_sv("PerlIO::encoding::fallback", 0)); + if (SvROK(e->chk)) + Perl_croak(aTHX_ "PerlIO::encoding::fallback must be an integer"); + SvUV_set(e->chk, ((SvUV(e->chk) & ~encode_leave_src) | encode_stop_at_partial)); e->inEncodeCall = 0; FREETMPS; @@ -638,30 +647,36 @@ BOOT: { - SV *chk = get_sv("PerlIO::encoding::fallback", GV_ADD|GV_ADDMULTI); /* * we now "use Encode ()" here instead of * PerlIO/encoding.pm. This avoids SEGV when ":encoding()" * is invoked without prior "use Encode". -- dankogai */ PUSHSTACKi(PERLSI_MAGIC); - if (!get_cvs(OUR_DEFAULT_FB, 0)) { -#if 0 - /* This would just be an irritant now loading works */ - Perl_warner(aTHX_ packWARN(WARN_IO), ":encoding without 'use Encode'"); -#endif + if (!get_cvs(OUR_STOP_AT_PARTIAL, 0)) { /* The SV is magically freed by load_module */ load_module(PERL_LOADMOD_NOIMPORT, newSVpvs("Encode"), Nullsv, Nullsv); assert(sp == PL_stack_sp); } + + PUSHMARK(sp); + PUTBACK; + if (call_pv(OUR_STOP_AT_PARTIAL, G_SCALAR) != 1) { + /* should never happen */ + Perl_die(aTHX_ "%s did not return a value", OUR_STOP_AT_PARTIAL); + } + SPAGAIN; + encode_stop_at_partial = POPu; + PUSHMARK(sp); PUTBACK; - if (call_pv(OUR_DEFAULT_FB, G_SCALAR) != 1) { + if (call_pv(OUR_LEAVE_SRC, G_SCALAR) != 1) { /* should never happen */ - Perl_die(aTHX_ "%s did not return a value",OUR_DEFAULT_FB); + Perl_die(aTHX_ "%s did not return a value", OUR_LEAVE_SRC); } SPAGAIN; - sv_setsv(chk, POPs); + encode_leave_src = POPu; + PUTBACK; #ifdef PERLIO_LAYERS PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_encode)); diff -Nru perl-5.32.1/ext/PerlIO-mmap/mmap.pm perl-5.34.0/ext/PerlIO-mmap/mmap.pm --- perl-5.32.1/ext/PerlIO-mmap/mmap.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/PerlIO-mmap/mmap.pm 2020-10-04 22:17:13.000000000 +0000 @@ -1,7 +1,7 @@ package PerlIO::mmap; use strict; use warnings; -our $VERSION = '0.016'; +our $VERSION = '0.017'; use XSLoader; XSLoader::load(__PACKAGE__, __PACKAGE__->VERSION); diff -Nru perl-5.32.1/ext/PerlIO-mmap/mmap.xs perl-5.34.0/ext/PerlIO-mmap/mmap.xs --- perl-5.32.1/ext/PerlIO-mmap/mmap.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/PerlIO-mmap/mmap.xs 2020-10-04 22:17:13.000000000 +0000 @@ -26,7 +26,6 @@ static IV PerlIOMmap_map(pTHX_ PerlIO *f) { - dVAR; PerlIOMmap * const m = PerlIOSelf(f, PerlIOMmap); const IV flags = PerlIOBase(f)->flags; IV code = 0; diff -Nru perl-5.32.1/ext/PerlIO-scalar/scalar.pm perl-5.34.0/ext/PerlIO-scalar/scalar.pm --- perl-5.32.1/ext/PerlIO-scalar/scalar.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/PerlIO-scalar/scalar.pm 2020-10-04 22:17:13.000000000 +0000 @@ -1,5 +1,5 @@ package PerlIO::scalar; -our $VERSION = '0.30'; +our $VERSION = '0.31'; require XSLoader; XSLoader::load(); 1; @@ -32,6 +32,9 @@ on the handle. The scalar is considered a stream of bytes. Currently fileno($fh) returns -1. +Attempting to open a read-only scalar for writing will fail, and if +warnings are enabled, produce a warning. + =head1 IMPLEMENTATION NOTE C only exists to use XSLoader to load C code that diff -Nru perl-5.32.1/ext/PerlIO-scalar/t/scalar.t perl-5.34.0/ext/PerlIO-scalar/t/scalar.t --- perl-5.32.1/ext/PerlIO-scalar/t/scalar.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/PerlIO-scalar/t/scalar.t 2020-10-04 22:17:13.000000000 +0000 @@ -17,7 +17,7 @@ $| = 1; -use Test::More tests => 123; +use Test::More tests => 125; my $fh; my $var = "aaa\n"; @@ -181,12 +181,19 @@ # [perl #40267] PerlIO::scalar doesn't respect readonly-ness { + my $warn; + local $SIG{__WARN__} = sub { $warn = "@_" }; ok(!(defined open(F, '>', \undef)), "[perl #40267] - $!"); + is($warn, undef, "no warning with warnings off"); close F; + use warnings 'layer'; + undef $warn; my $ro = \43; ok(!(defined open(F, '>', $ro)), $!); is($!+0, EACCES, "check we get a read-onlyish error code"); + like($warn, qr/Modification of a read-only value attempted/, + "check we did warn"); close F; # but we can read from it ok(open(F, '<', $ro), $!); diff -Nru perl-5.32.1/ext/Pod-Html/lib/Pod/Html.pm perl-5.34.0/ext/Pod-Html/lib/Pod/Html.pm --- perl-5.32.1/ext/Pod-Html/lib/Pod/Html.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/Pod-Html/lib/Pod/Html.pm 2021-05-04 06:52:48.000000000 +0000 @@ -2,7 +2,7 @@ use strict; require Exporter; -our $VERSION = 1.25; +our $VERSION = 1.27; our @ISA = qw(Exporter); our @EXPORT = qw(pod2html htmlify); our @EXPORT_OK = qw(anchorify relativize_url); @@ -16,6 +16,7 @@ use Getopt::Long; use Pod::Simple::Search; use Pod::Simple::SimpleTree (); +use Text::Tabs; use locale; # make \w work right in non-ASCII lands =head1 NAME @@ -257,8 +258,6 @@ my $Curdir = File::Spec->curdir; -init_globals(); - sub init_globals { $Cachedir = "."; # The directory to which directory caches # will be written. @@ -367,6 +366,9 @@ # set options for input parser my $parser = Pod::Simple::SimpleTree->new; + # Normalize whitespace indenting + $parser->strip_verbatim_indent(\&trim_leading_whitespace); + $parser->codes_in_verbatim(0); $parser->accept_targets(qw(html HTML)); $parser->no_errata_section(!$Poderrors); # note the inverse @@ -579,13 +581,12 @@ sub get_cache { my($dircache, $podpath, $podroot, $recurse) = @_; - my @cache_key_args = @_; # A first-level cache: # Don't bother reading the cache files if they still apply # and haven't changed since we last read them. - my $this_cache_key = cache_key(@cache_key_args); + my $this_cache_key = cache_key($dircache, $podpath, $podroot, $recurse); return 1 if $Saved_Cache_Key and $this_cache_key eq $Saved_Cache_Key; $Saved_Cache_Key = $this_cache_key; @@ -842,4 +843,24 @@ return $rel_path; } +# Remove any level of indentation (spaces or tabs) from each code block consistently +# Adapted from: https://metacpan.org/source/HAARG/MetaCPAN-Pod-XHTML-0.002001/lib/Pod/Simple/Role/StripVerbatimIndent.pm +sub trim_leading_whitespace { + my ($para) = @_; + + # Start by converting tabs to spaces + @$para = Text::Tabs::expand(@$para); + + # Find the line with the least amount of indent, as that's our "base" + my @indent_levels = (sort(map { $_ =~ /^( *)./mg } @$para)); + my $indent = $indent_levels[0] || ""; + + # Remove the "base" amount of indent from each line + foreach (@$para) { + $_ =~ s/^\Q$indent//mg; + } + + return; +} + 1; diff -Nru perl-5.32.1/ext/Pod-Html/t/crossref2.t perl-5.34.0/ext/Pod-Html/t/crossref2.t --- perl-5.32.1/ext/Pod-Html/t/crossref2.t 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/Pod-Html/t/crossref2.t 2021-05-04 06:52:48.000000000 +0000 @@ -19,10 +19,12 @@ my $cwd = Pod::Html::_unixify(cwd()); convert_n_test("crossref", "cross references", - "--podpath=t:testdir/test.lib", - "--podroot=$cwd", - "--htmldir=$cwd", - "--quiet", + { + podpath => 't:testdir/test.lib', + podroot => $cwd, + htmldir => $cwd, + quiet => 1, + } ); } diff -Nru perl-5.32.1/ext/Pod-Html/t/crossref3.t perl-5.34.0/ext/Pod-Html/t/crossref3.t --- perl-5.32.1/ext/Pod-Html/t/crossref3.t 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/Pod-Html/t/crossref3.t 2021-05-04 06:52:48.000000000 +0000 @@ -18,12 +18,12 @@ my $cwd = cwd(); - convert_n_test("crossref", "cross references", - "--podpath=t:testdir/test.lib", - "--podroot=$cwd", - "--htmlroot=$cwd", - "--quiet", - ); + convert_n_test("crossref", "cross references", { + podpath => 't:testdir/test.lib', + podroot => $cwd, + htmlroot => $cwd, + quiet => 1, + } ); } __DATA__ diff -Nru perl-5.32.1/ext/Pod-Html/t/crossref.t perl-5.34.0/ext/Pod-Html/t/crossref.t --- perl-5.32.1/ext/Pod-Html/t/crossref.t 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/Pod-Html/t/crossref.t 2021-05-04 06:52:48.000000000 +0000 @@ -22,12 +22,11 @@ shift @dirs if $dirs[0] eq ''; my $relcwd = join '/', @dirs; - convert_n_test("crossref", "cross references", - "--podpath=". File::Spec::Unix->catdir($relcwd, 't') . ":" - . File::Spec::Unix->catdir($relcwd, 'testdir/test.lib'), - "--podroot=". catpath($v, '/', ''), - "--quiet", - ); + convert_n_test("crossref", "cross references", { + podpath => File::Spec::Unix->catdir($relcwd, 't') . ":" . File::Spec::Unix->catdir($relcwd, 'testdir/test.lib'), + podroot => catpath($v, '/', ''), + quiet => 1, + } ); } __DATA__ diff -Nru perl-5.32.1/ext/Pod-Html/t/feature2.t perl-5.34.0/ext/Pod-Html/t/feature2.t --- perl-5.32.1/ext/Pod-Html/t/feature2.t 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/Pod-Html/t/feature2.t 2021-05-04 06:52:48.000000000 +0000 @@ -14,16 +14,15 @@ my $warn; $SIG{__WARN__} = sub { $warn .= $_[0] }; -convert_n_test("feature2", "misc pod-html features 2", - "--backlink", - "--header", - "--podpath=.", - "--podroot=$cwd", - "--norecurse", - "--verbose", - "--quiet", - ); - +convert_n_test("feature2", "misc pod-html features 2", { + backlink => 1, + header => 1, + podpath => '.', + podroot => $cwd, + norecurse => 1, + verbose => 1, + quiet => 1, +} ); like($warn, qr( \Acaching\ directories\ for\ later\ use\n diff -Nru perl-5.32.1/ext/Pod-Html/t/feature.t perl-5.34.0/ext/Pod-Html/t/feature.t --- perl-5.32.1/ext/Pod-Html/t/feature.t 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/Pod-Html/t/feature.t 2021-05-04 06:52:48.000000000 +0000 @@ -11,17 +11,17 @@ my $cwd = cwd(); -convert_n_test("feature", "misc pod-html features", - "--backlink", - "--css=style.css", - "--header", # no styling b/c of --ccs - "--htmldir=". catdir($cwd, 't'), - "--noindex", - "--podpath=t", - "--podroot=$cwd", - "--title=a title", - "--quiet", - ); +convert_n_test("feature", "misc pod-html features", { + backlink => 1, + css => 'style.css', + header => 1, # no styling b/c of --ccs + htmldir => catdir($cwd, 't'), + noindex => 1, + podpath => 't', + podroot => $cwd, + title => 'a title', + quiet => 1, +} ); __DATA__ diff -Nru perl-5.32.1/ext/Pod-Html/t/htmldir1.t perl-5.34.0/ext/Pod-Html/t/htmldir1.t --- perl-5.32.1/ext/Pod-Html/t/htmldir1.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/Pod-Html/t/htmldir1.t 2021-05-04 06:52:48.000000000 +0000 @@ -28,23 +28,23 @@ my $data_pos = tell DATA; # to read twice - convert_n_test("htmldir1", "test --htmldir and --htmlroot 1a", - "--podpath=". File::Spec::Unix->catdir($relcwd, 't') . ":" - . File::Spec::Unix->catdir($relcwd, 'testdir/test.lib'), - "--podroot=". catpath($v, '/', ''), - "--htmldir=t", - "--quiet", - ); + convert_n_test("htmldir1", "test --htmldir and --htmlroot 1a", { + podpath => File::Spec::Unix->catdir($relcwd, 't') . ":" . + File::Spec::Unix->catdir($relcwd, 'testdir/test.lib'), + podroot => catpath($v, '/', ''), + htmldir => 't', + quiet => 1, + } ); seek DATA, $data_pos, 0; # to read twice (expected output is the same) - convert_n_test("htmldir1", "test --htmldir and --htmlroot 1b", - "--podpath=$relcwd", - "--podroot=". catpath($v, '/', ''), - "--htmldir=". catdir($relcwd, 't'), - "--htmlroot=/", - "--quiet", - ); + convert_n_test("htmldir1", "test --htmldir and --htmlroot 1b", { + podpath => $relcwd, + podroot => catpath($v, '/', ''), + htmldir => catdir($relcwd, 't'), + htmlroot => '/', + quiet => 1, + } ); } __DATA__ @@ -72,7 +72,7 @@

LINKS

-
  Verbatim B<means> verbatim.
+
Verbatim B<means> verbatim.

Normal text, a link to nowhere,

diff -Nru perl-5.32.1/ext/Pod-Html/t/htmldir2.t perl-5.34.0/ext/Pod-Html/t/htmldir2.t --- perl-5.32.1/ext/Pod-Html/t/htmldir2.t 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/Pod-Html/t/htmldir2.t 2021-05-04 06:52:48.000000000 +0000 @@ -11,28 +11,28 @@ my $cwd = cwd(); my $data_pos = tell DATA; # to read twice -convert_n_test("htmldir2", "test --htmldir and --htmlroot 2a", - "--podpath=t", - "--htmldir=t", - "--quiet", -); +convert_n_test("htmldir2", "test --htmldir and --htmlroot 2a", { + podpath => 't', + htmldir => 't', + quiet => 1, +} ); seek DATA, $data_pos, 0; # to read twice (expected output is the same) -convert_n_test("htmldir2", "test --htmldir and --htmlroot 2b", - "--podpath=t", - "--quiet", -); +convert_n_test("htmldir2", "test --htmldir and --htmlroot 2b", { + podpath => 't', + quiet => 1, +} ); seek DATA, $data_pos, 0; # to read thrice (expected output is the same) # this test makes sure paths are absolute unless --htmldir is specified -convert_n_test("htmldir2", "test --htmldir and --htmlroot 2c", - "--podpath=t", - "--podroot=$cwd", - "--norecurse", # testing --norecurse, too - "--quiet", -); +convert_n_test("htmldir2", "test --htmldir and --htmlroot 2c", { + podpath => 't', + podroot => $cwd, + norecurse => 1, # testing --norecurse, too + quiet => 1, +} ); __DATA__ diff -Nru perl-5.32.1/ext/Pod-Html/t/htmldir3.t perl-5.34.0/ext/Pod-Html/t/htmldir3.t --- perl-5.32.1/ext/Pod-Html/t/htmldir3.t 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/Pod-Html/t/htmldir3.t 2021-05-04 06:52:48.000000000 +0000 @@ -25,22 +25,22 @@ my $data_pos = tell DATA; # to read twice - convert_n_test("htmldir3", "test --htmldir and --htmlroot 3a", - "--podpath=$relcwd", - "--podroot=". catpath($v, '/', ''), - "--htmldir=". catdir($cwd, 't', ''), # test removal trailing slash, - "--quiet", - ); + convert_n_test("htmldir3", "test --htmldir and --htmlroot 3a", { + podpath => $relcwd, + podroot => catpath($v, '/', ''), + htmldir => catdir($cwd, 't', ''), # test removal trailing slash, + quiet => 1, + } ); seek DATA, $data_pos, 0; # to read twice (expected output is the same) - convert_n_test("htmldir3", "test --htmldir and --htmlroot 3b", - "--podpath=". catdir($relcwd, 't'), - "--podroot=". catpath($v, '/', ''), - "--htmldir=t", - "--outfile=t/htmldir3.html", - "--quiet", - ); + convert_n_test("htmldir3", "test --htmldir and --htmlroot 3b", { + podpath => catdir($relcwd, 't'), + podroot => catpath($v, '/', ''), + htmldir => 't', + outfile => 't/htmldir3.html', + quiet => 1, + } ); } __DATA__ diff -Nru perl-5.32.1/ext/Pod-Html/t/htmldir4.t perl-5.34.0/ext/Pod-Html/t/htmldir4.t --- perl-5.32.1/ext/Pod-Html/t/htmldir4.t 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/Pod-Html/t/htmldir4.t 2021-05-04 06:52:48.000000000 +0000 @@ -12,22 +12,22 @@ my $cwd = cwd(); my $data_pos = tell DATA; # to read twice -convert_n_test("htmldir4", "test --htmldir and --htmlroot 4a", - "--podpath=t", - "--htmldir=t", - "--outfile=". catfile('t', 'htmldir4.html'), - "--quiet", -); +convert_n_test("htmldir4", "test --htmldir and --htmlroot 4a", { + podpath => 't', + htmldir => 't', + outfile => catfile('t', 'htmldir4.html'), + quiet => 1, +} ); seek DATA, $data_pos, 0; # to read twice (expected output is the same) -convert_n_test("htmldir4", "test --htmldir and --htmlroot 4b", - "--podpath=t", - "--podroot=$cwd", - "--htmldir=". catdir($cwd, 't'), - "--norecurse", - "--quiet", -); +convert_n_test("htmldir4", "test --htmldir and --htmlroot 4b", { + podpath => 't', + podroot => $cwd, + htmldir => catdir($cwd, 't'), + norecurse => 1, + quiet => 1, +} ); __DATA__ diff -Nru perl-5.32.1/ext/Pod-Html/t/htmldir5.t perl-5.34.0/ext/Pod-Html/t/htmldir5.t --- perl-5.32.1/ext/Pod-Html/t/htmldir5.t 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/Pod-Html/t/htmldir5.t 2021-05-04 06:52:48.000000000 +0000 @@ -23,13 +23,13 @@ # XXX but why don't the other tests complain about # this? - convert_n_test("htmldir5", "test --htmldir and --htmlroot 5", - "--podpath=t:testdir/test.lib", - "--podroot=$cwd", - "--htmldir=$cwd", - "--htmlroot=/", - "--quiet", - ); + convert_n_test("htmldir5", "test --htmldir and --htmlroot 5", { + podpath => 't:testdir/test.lib', + podroot => $cwd, + htmldir => $cwd, + htmlroot => '/', + quiet => 1, + } ); } __DATA__ diff -Nru perl-5.32.1/ext/Pod-Html/t/htmlview.t perl-5.34.0/ext/Pod-Html/t/htmlview.t --- perl-5.32.1/ext/Pod-Html/t/htmlview.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/Pod-Html/t/htmlview.t 2021-05-04 06:52:48.000000000 +0000 @@ -7,7 +7,9 @@ use strict; use Test::More tests => 1; -convert_n_test("htmlview", "html rendering", "--quiet"); +convert_n_test("htmlview", "html rendering", { + quiet => 1, +} ); __DATA__ @@ -45,15 +47,15 @@

SYNOPSIS

-
    use My::Module;
+
use My::Module;
 
-    my $module = My::Module->new();
+my $module = My::Module->new();

DESCRIPTION

This is the description.

-
    Here is a verbatim section.
+
Here is a verbatim section.

This is some more regular text.

@@ -207,7 +209,7 @@

This is an email link: mailto:foo@bar.com

-
    This is a link in a verbatim block <a href="http://perl.org"> Perl </a>
+
This is a link in a verbatim block <a href="http://perl.org"> Perl </a>

SEE ALSO

diff -Nru perl-5.32.1/ext/Pod-Html/t/pod2html-lib.pl perl-5.34.0/ext/Pod-Html/t/pod2html-lib.pl --- perl-5.32.1/ext/Pod-Html/t/pod2html-lib.pl 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/Pod-Html/t/pod2html-lib.pl 2021-05-04 06:52:48.000000000 +0000 @@ -29,7 +29,11 @@ } sub convert_n_test { - my($podfile, $testname, @p2h_args) = @_; + my($podfile, $testname, $p2h_args_ref) = @_; + if (defined $p2h_args_ref) { + die "3rd argument must be hashref" + unless ref($p2h_args_ref) eq 'HASH'; # TEST ME + } my $cwd = Pod::Html::_unixify( Cwd::cwd() ); my ($vol, $dir) = splitpath($cwd, 1); @@ -41,15 +45,38 @@ my $infile = catpath $vol, $new_dir, "$podfile.pod"; my $outfile = catpath $vol, $new_dir, "$podfile.html"; - # To add/modify args to p2h, use @p2h_args - Pod::Html::pod2html( - "--infile=$infile", - "--outfile=$outfile", - "--podpath=t", - "--htmlroot=/", - "--podroot=$cwd", - @p2h_args, + my %args_table = ( + infile => $infile, + outfile => $outfile, + podpath => 't', + htmlroot => '/', + podroot => $cwd, ); + my %no_arg_switches = map { $_ => 1 } ( qw| + flush recurse norecurse + quiet noquiet verbose noverbose + index noindex backlink nobacklink + header noheader poderrors nopoderrors + | ); + if (defined $p2h_args_ref) { + for my $sw (keys %{$p2h_args_ref}) { + if ($no_arg_switches{$sw}) { + $args_table{$sw} = undef; + } else { + $args_table{$sw} = $p2h_args_ref->{$sw}; + } + } + } + my @args_list = (); + for my $k (keys %args_table) { + if (defined $args_table{$k}) { + push @args_list, "--" . $k . "=" . $args_table{$k}; + } else { + push @args_list, "--" . $k; + } + } + + Pod::Html::pod2html( @args_list ); $cwd =~ s|\/$||; diff -Nru perl-5.32.1/ext/Pod-Html/t/podnoerr.t perl-5.34.0/ext/Pod-Html/t/podnoerr.t --- perl-5.32.1/ext/Pod-Html/t/podnoerr.t 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/Pod-Html/t/podnoerr.t 2021-05-04 06:52:48.000000000 +0000 @@ -7,9 +7,9 @@ use strict; use Test::More tests => 1; -convert_n_test("podnoerr", "pod error section", - "--nopoderrors", -); +convert_n_test("podnoerr", "pod error section", { + nopoderrors => 1, +} ); __DATA__ diff -Nru perl-5.32.1/ext/POSIX/lib/POSIX.pm perl-5.34.0/ext/POSIX/lib/POSIX.pm --- perl-5.32.1/ext/POSIX/lib/POSIX.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/POSIX/lib/POSIX.pm 2021-01-20 23:04:44.000000000 +0000 @@ -4,7 +4,7 @@ our ($AUTOLOAD, %SIGRT); -our $VERSION = '1.94'; +our $VERSION = '1.97'; require XSLoader; @@ -307,7 +307,8 @@ locale_h => [qw(LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME LC_IDENTIFICATION - LC_MEASUREMENT LC_PAPER LC_TELEPHONE LC_ADDRESS NULL + LC_MEASUREMENT LC_PAPER LC_TELEPHONE LC_ADDRESS + LC_SYNTAX LC_TOD NULL localeconv setlocale)], math_h => [qw(FP_ILOGB0 FP_ILOGBNAN FP_INFINITE FP_NAN FP_NORMAL diff -Nru perl-5.32.1/ext/POSIX/lib/POSIX.pod perl-5.34.0/ext/POSIX/lib/POSIX.pod --- perl-5.32.1/ext/POSIX/lib/POSIX.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/POSIX/lib/POSIX.pod 2021-05-04 06:52:48.000000000 +0000 @@ -32,6 +32,11 @@ constants and macros in an organization which roughly follows IEEE Std 1003.1b-1993. +The notation C<[C99]> indicates functions that were added in the ISO/IEC +9899:1999 version of the C language standard. Some may not be available +on your system if it adheres to an earlier standard. Attempts to use +any missing one will result in a fatal runtime error message. + =head1 CAVEATS I (with a handful of exceptions). @@ -111,7 +116,7 @@ This is identical to the C function C, returning the hyperbolic arcus cosine of its numerical argument [C99]. See also -L. +L. Added in Perl v5.22. =item C @@ -139,6 +144,10 @@ 1900-based: 2001 equals C<101>. C<$wday> and C<$yday> default to zero (and are usually ignored anyway), and C<$isdst> defaults to -1. +Note the result is always in English. Use C> instead to +get a result suitable for the current locale. That function's C<%c> +format yields the locale's preferred representation. + =item C This is identical to the C function C, returning @@ -148,7 +157,7 @@ This is identical to the C function C, returning the hyperbolic arcus sine of its numerical argument [C99]. See also -L. +L. Added in Perl v5.22. =item C @@ -164,7 +173,7 @@ This is identical to the C function C, returning the hyperbolic arcus tangent of its numerical argument [C99]. See also -L. +L. Added in Perl v5.22. =item C @@ -204,7 +213,7 @@ =item C -The cube root [C99]. +The cube root [C99]. Added in Perl v5.22. =item C @@ -283,7 +292,7 @@ =item C -Returns C but with the sign of C [C99]. +Returns C but with the sign of C [C99]. Added in Perl v5.22. $x_with_sign_of_y = POSIX::copysign($x, $y); @@ -352,11 +361,11 @@ =item C -The error function [C99]. +The error function [C99]. Added in Perl v5.22. =item C -The complementary error function [C99]. +The complementary error function [C99]. Added in Perl v5.22. =item C @@ -404,6 +413,7 @@ =item C Equivalent to C, but more precise for small argument values [C99]. +Added in Perl v5.22. See also L. @@ -463,6 +473,7 @@ =item C "Positive difference", S> if S y>>, zero otherwise [C99]. +Added in Perl v5.22. =item C @@ -471,27 +482,31 @@ FE_TONEAREST FE_TOWARDZERO FE_UPWARD FE_DOWNWARD C is like L, C is like L [C99]. +Added in Perl v5.22. =item C -Sets the floating point rounding mode, see L [C99]. +Sets the floating point rounding mode, see L [C99]. Added in +Perl v5.22. =item C "Fused multiply-add", S>, possibly faster (and less lossy) -than the explicit two operations [C99]. +than the explicit two operations [C99]. Added in Perl v5.22. my $fused = POSIX::fma($x, $y, $z); =item C Maximum of C and C, except when either is C, returns the other [C99]. +Added in Perl v5.22. my $min = POSIX::fmax($x, $y); =item C Minimum of C and C, except when either is C, returns the other [C99]. +Added in Perl v5.22. my $min = POSIX::fmin($x, $y); @@ -538,6 +553,7 @@ or negative infinity, C is not-a-number. C means subnormal numbers (also known as denormals), very small numbers with low precision. C is zero. C is all the rest. +Added in Perl v5.22. =item C @@ -664,7 +680,7 @@ use POSIX ':nan_payload'; getpayload($var) -Returns the C payload. +Returns the C payload. Added in Perl v5.24. Note the API instability warning in L. @@ -721,11 +737,11 @@ =item C Equivalent to C> except more stable on very large -or very small arguments [C99]. +or very small arguments [C99]. Added in Perl v5.22. =item C -Integer binary logarithm [C99] +Integer binary logarithm [C99]. Added in Perl v5.22. For example C is 4, as an integer. @@ -743,13 +759,13 @@ =item C -This function has been removed as of v5.24. It was very similar to +This function has been removed as of Perl v5.24. It was very similar to matching against S>, which you should convert to use instead. See L. =item C -This function has been removed as of v5.24. It was very similar to +This function has been removed as of Perl v5.24. It was very similar to matching against S>, which you should convert to use instead. See L. @@ -760,26 +776,26 @@ =item C -This function has been removed as of v5.24. It was very similar to +This function has been removed as of Perl v5.24. It was very similar to matching against S>, which you should convert to use instead. See L. =item C -This function has been removed as of v5.24. It was very similar to +This function has been removed as of Perl v5.24. It was very similar to matching against S>, which you should convert to use instead. See L. =item C Returns true if the argument is a finite number (that is, not an -infinity, or the not-a-number) [C99]. +infinity, or the not-a-number) [C99]. Added in Perl v5.22. See also L, L, and L. =item C -This function has been removed as of v5.24. It was very similar to +This function has been removed as of Perl v5.24. It was very similar to matching against S>, which you should convert to use instead. See L. @@ -788,23 +804,26 @@ (Also C, C, C, C, C) -Floating point comparisons which handle the C [C99]. +Floating point comparisons which handle the C [C99]. Added in Perl +v5.22. =item C Returns true if the argument is an infinity (positive or negative) [C99]. +Added in Perl v5.22. See also L, L, L, and L. =item C -This function has been removed as of v5.24. It was very similar to +This function has been removed as of Perl v5.24. It was very similar to matching against S>, which you should convert to use instead. See L. =item C -Returns true if the argument is C (not-a-number) [C99]. +Returns true if the argument is C (not-a-number) [C99]. Added in +Perl v5.22. Note that you cannot test for "C-ness" with @@ -817,19 +836,19 @@ =item C Returns true if the argument is normal (that is, not a subnormal/denormal, -and not an infinity, or a not-a-number) [C99]. +and not an infinity, or a not-a-number) [C99]. Added in Perl v5.22. See also L, and L. =item C -This function has been removed as of v5.24. It was very similar to +This function has been removed as of Perl v5.24. It was very similar to matching against S>, which you should convert to use instead. See L. =item C -This function has been removed as of v5.24. It was very similar to +This function has been removed as of Perl v5.24. It was very similar to matching against S>, which you should convert to use instead. See L. @@ -838,7 +857,7 @@ use POSIX ':nan_payload'; issignaling($var, $payload) -Return true if the argument is a I NaN. +Return true if the argument is a I NaN. Added in Perl v5.24. Note the API instability warning in L. @@ -846,19 +865,19 @@ =item C -This function has been removed as of v5.24. It was very similar to +This function has been removed as of Perl v5.24. It was very similar to matching against S>, which you should convert to use instead. See L. =item C -This function has been removed as of v5.24. It was very similar to +This function has been removed as of Perl v5.24. It was very similar to matching against S>, which you should convert to use instead. See L. =item C -This function has been removed as of v5.24. It was very similar to +This function has been removed as of Perl v5.24. It was very similar to matching against S>, which you should convert to use instead. See L. @@ -910,24 +929,24 @@ =item C -The logarithm of the Gamma function [C99]. +The logarithm of the Gamma function [C99]. Added in Perl v5.22. See also L. =item C Equivalent to S>, but more stable results for small argument -values [C99]. +values [C99]. Added in Perl v5.22. =item C -Logarithm base two [C99]. +Logarithm base two [C99]. Added in Perl v5.22. See also L. =item C -Integer binary logarithm [C99]. +Integer binary logarithm [C99]. Added in Perl v5.22. For example C is 4, as a floating point number. @@ -953,7 +972,7 @@ changes the locale, which globally affects all threads simultaneously. Windows platforms starting with Visual Studio 2005 are mostly thread-safe, but use of this function in those prior to Visual Studio -2015 can interfere with a thread that has called +2015 can have a race with a thread that has called L. Here is how to query the database for the B (Deutsch or German) locale. @@ -1049,13 +1068,14 @@ Depending on the current floating point rounding mode, rounds the argument either toward nearest (like L), toward zero (like L), downward (toward negative infinity), or upward (toward -positive infinity) [C99]. +positive infinity) [C99]. Added in Perl v5.22. For the rounding mode, see L. =item C -Like L, but as integer, as opposed to floating point [C99]. +Like L, but as integer, as opposed to floating point [C99]. Added +in Perl v5.22. See also L, L, L. @@ -1207,7 +1227,7 @@ my $nan = nan(); -Returns C, not-a-number [C99]. +Returns C, not-a-number [C99]. Added in Perl v5.22. The returned NaN is always a I NaN, as opposed to I. @@ -1243,12 +1263,12 @@ =item C Returns the nearest integer to the argument, according to the current -rounding mode (see L) [C99]. +rounding mode (see L) [C99]. Added in Perl v5.22. =item C Returns the next representable floating point number after C in the -direction of C [C99]. +direction of C [C99]. Added in Perl v5.22. my $nextafter = POSIX::nextafter($x, $y); @@ -1257,7 +1277,7 @@ =item C Returns the next representable floating point number after C in the -direction of C [C99]. +direction of C [C99]. Added in Perl v5.22. my $nexttoward = POSIX::nexttoward($x, $y); @@ -1416,7 +1436,7 @@ =item C Given C and C, returns the value S>, where C is the integer -closest to C/C. [C99] +closest to C/C [C99]. Added in Perl v5.22. my $remainder = POSIX::remainder($x, $y) @@ -1430,7 +1450,7 @@ =item C Like L but also returns the low-order bits of the quotient (n) -[C99] +[C99]. Added in Perl v5.22. (This is quite esoteric interface, mainly used to implement numerical algorithms.) @@ -1461,13 +1481,13 @@ =item C Returns the integer (but still as floating point) nearest to the -argument [C99]. +argument [C99]. Added in Perl v5.22. See also L, L, L, L, and L. =item C -Returns S> [C99]. +Returns S> [C99]. Added in Perl v5.22. See also L and L. @@ -1551,7 +1571,7 @@ use POSIX ':nan_payload'; setpayload($var, $payload); -Sets the C payload of var. +Sets the C payload of var. Added in Perl v5.24. NOTE: the NaN payload APIs are based on the latest (as of June 2015) proposed ISO C interfaces, but they are not yet a standard. Things @@ -1566,7 +1586,8 @@ use POSIX ':nan_payload'; setpayloadsig($var, $payload); -Like L but also makes the NaN I. +Like L but also makes the NaN I. Added in Perl +v5.24. Depending on the platform the NaN may or may not behave differently. @@ -1624,7 +1645,7 @@ otherwise the signal was sent by the kernel The constants for specific C values can be imported individually -or using the C<:signal_h_si_code> tag. +or using the C<:signal_h_si_code> tag, since Perl v5.24. The following are also defined by POSIX/SUSv3, but unfortunately not very widely implemented: @@ -1653,6 +1674,7 @@ =item C Returns zero for positive arguments, non-zero for negative arguments [C99]. +Added in Perl v5.22. =item C @@ -1769,6 +1791,10 @@ be in UTF-8; and when not in a UTF-8 locale, anything passed must not be UTF-8 encoded. +Note also that it doesn't make sense for a string to be encoded in one +locale (say, ISO-8859-6, Arabic) and to collate it based on another +(like ISO-8859-7, Greek). The results will be essentially meaningless. + =item C Not implemented. C is C-specific, use C<=> instead, see L. @@ -1940,7 +1966,7 @@ $dst = POSIX::strxfrm( $src ); -Used in conjunction with the C function, see L. +Used with C or C as an alternative to C>. Not really needed since Perl can do this transparently, see L. @@ -2018,7 +2044,7 @@ =item C -The Gamma function [C99]. +The Gamma function [C99]. Added in Perl v5.22. See also L. @@ -2049,11 +2075,11 @@ For security reasons, which are probably detailed in your system's documentation for the C library C function, this interface -is no longer available; instead use L. +is no longer available since Perl v5.26; instead use L. =item C -This function has been removed as of v5.26. +This function has been removed as of Perl v5.26. This is identical to the C function, except that it can apply to a single character or to a whole string, and currently operates as if the locale always is "C". Consider using the C function, see L, @@ -2062,7 +2088,7 @@ =item C -This function has been removed as of v5.26. +This function has been removed as of Perl v5.26. This is similar to the C function, except that it can apply to a single character or to a whole string, and currently operates as if the locale always is "C". Consider using the C function, see L, @@ -2070,7 +2096,8 @@ =item C -Returns the integer toward zero from the argument [C99]. +Returns the integer toward zero from the argument [C99]. Added in Perl +v5.22. See also L, L, and L. @@ -2561,6 +2588,8 @@ =item Constants +Added in Perl v5.28: + C C C =back @@ -2666,6 +2695,8 @@ C +Added in Perl v5.22: + C C C C C C C C C C C C C C C C C C C C @@ -2685,6 +2716,9 @@ C C C C C C C C C C C C C C C C C + +Added in Perl v5.24: + C C C C C C C C C C C C C C C C C C C C @@ -2824,6 +2858,8 @@ =item Constants +Added in Perl v5.24: + C C C C C C C C C C C C C C C C diff -Nru perl-5.32.1/ext/POSIX/Makefile.PL perl-5.34.0/ext/POSIX/Makefile.PL --- perl-5.32.1/ext/POSIX/Makefile.PL 2020-12-18 09:58:46.000000000 +0000 +++ perl-5.34.0/ext/POSIX/Makefile.PL 2021-05-04 06:52:48.000000000 +0000 @@ -95,17 +95,19 @@ #else HUGE_VAL #endif - '}); + '}, + # POSIX says these are constant expressions, but if these are not available + # we might fallback to NV_INF/NV_NAN which may be not constants. + {name=>"INFINITY", type=>"NV", not_constant=>1}, + {name=>"NAN", type=>"NV", not_constant=>1}); if ($Config{d_double_has_inf}) { push @names, - {name=>"INFINITY", type=>"NV", value=>"NV_INF", not_constant=>1}, {name=>"Inf", type=>"NV", value=>"NV_INF", not_constant=>1}, } if ($Config{d_double_has_nan}) { push @names, - {name=>"NAN", type=>"NV", value=>"NV_NAN", not_constant=>1}, {name=>"NaN", type=>"NV", value=>"NV_NAN", not_constant=>1}; } @@ -116,15 +118,18 @@ foreach (qw(DBL_MAX FLT_MAX LDBL_MAX LDBL_MIN LDBL_EPSILON DBL_EPSILON DBL_MIN FLT_EPSILON FLT_MIN)); -push @names, {name=>$_, type=>"NV"} +push @names, {name=>$_, type=>"IV"} foreach (qw(DBL_DIG DBL_MANT_DIG DBL_MAX_10_EXP DBL_MAX_EXP DBL_MIN_10_EXP DBL_MIN_EXP FLT_DIG FLT_MANT_DIG FLT_MAX_10_EXP FLT_MAX_EXP FLT_MIN_10_EXP FLT_MIN_EXP FLT_RADIX LDBL_DIG LDBL_MANT_DIG LDBL_MAX_10_EXP LDBL_MAX_EXP LDBL_MIN_10_EXP LDBL_MIN_EXP)); -push @names, {name=>$_, type=>"NV"} +push @names, {name=>$_, type=>"IV"} foreach (qw(FP_ILOGB0 FP_ILOGBNAN FP_INFINITE FP_NAN FP_NORMAL - FP_SUBNORMAL FP_ZERO M_1_PI M_2_PI M_2_SQRTPI M_E M_LN10 M_LN2 + FP_SUBNORMAL FP_ZERO)); + +push @names, {name=>$_, type=>"NV"} + foreach (qw(M_1_PI M_2_PI M_2_SQRTPI M_E M_LN10 M_LN2 M_LOG10E M_LOG2E M_PI M_PI_2 M_PI_4 M_SQRT1_2 M_SQRT2)); push @names, {name=>$_, type=>"IV"} diff -Nru perl-5.32.1/ext/POSIX/POSIX.xs perl-5.34.0/ext/POSIX/POSIX.xs --- perl-5.32.1/ext/POSIX/POSIX.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/POSIX/POSIX.xs 2021-01-20 23:04:44.000000000 +0000 @@ -280,7 +280,7 @@ # define c99_rint rintq # define c99_round roundq # define c99_scalbn scalbnq -# define c99_signbit signbitq +/* We already define Perl_signbit to signbitq in perl.h. */ # define c99_tgamma tgammaq # define c99_trunc truncq # define bessel_j0 j0q @@ -331,9 +331,7 @@ # define c99_rint rintl # define c99_round roundl # define c99_scalbn scalbnl -# ifdef HAS_SIGNBIT /* possibly bad assumption */ -# define c99_signbit signbitl -# endif +/* We already define Perl_signbit in perl.h. */ # define c99_tgamma tgammal # define c99_trunc truncl #else @@ -376,9 +374,6 @@ # define c99_round round # define c99_scalbn scalbn /* We already define Perl_signbit in perl.h. */ -# ifdef HAS_SIGNBIT -# define c99_signbit signbit -# endif # define c99_tgamma tgamma # define c99_trunc trunc #endif @@ -422,6 +417,22 @@ # undef c99_trunc #endif +/* The cc with NetBSD 8.0 and 9.0 claims to be a C11 hosted compiler, + * but doesn't define several functions required by C99, let alone C11. + * http://gnats.netbsd.org/53234 + */ +#if defined(USE_LONG_DOUBLE) && defined(__NetBSD__) \ + && !defined(NETBSD_HAVE_FIXED_LONG_DOUBLE_MATH) +# undef c99_expm1 +# undef c99_lgamma +# undef c99_log1p +# undef c99_log2 +# undef c99_nexttoward +# undef c99_remainder +# undef c99_remquo +# undef c99_tgamma +#endif + #ifndef isunordered # ifdef Perl_isnan # define isunordered(x, y) (Perl_isnan(x) || Perl_isnan(y)) @@ -562,9 +573,6 @@ #ifndef HAS_SCALBN # undef c99_scalbn #endif -#ifndef HAS_SIGNBIT -# undef c99_signbit -#endif #ifndef HAS_TGAMMA # undef c99_tgamma #endif @@ -1317,7 +1325,7 @@ #ifdef NV_PAYLOAD_DEBUG Perl_warn(aTHX_ "a[%d] = %" UVxf "\n", i, a[i]); #endif - payload *= UV_MAX; + payload *= (NV) UV_MAX; payload += a[i]; } #ifdef NV_PAYLOAD_DEBUG @@ -1408,9 +1416,9 @@ # define setuid(a) not_here("setuid") # define setgid(a) not_here("setgid") #endif /* NETWARE */ -#ifndef USE_LONG_DOUBLE +#if !defined(USE_LONG_DOUBLE) && !defined(USE_QUADMATH) # define strtold(s1,s2) not_here("strtold") -#endif /* USE_LONG_DOUBLE */ +#endif /* !(USE_LONG_DOUBLE) && !(USE_QUADMATH) */ #else # ifndef HAS_MKFIFO @@ -1543,13 +1551,13 @@ #endif #if ! defined(HAS_MBLEN) && ! defined(HAS_MBRLEN) -#define mblen(a,b) not_here("mblen") +# define mblen(a,b) not_here("mblen") #endif #if ! defined(HAS_MBTOWC) && ! defined(HAS_MBRTOWC) -#define mbtowc(pwc, s, n) not_here("mbtowc") +# define mbtowc(pwc, s, n) not_here("mbtowc") #endif -#ifndef HAS_WCTOMB -#define wctomb(s, wchar) not_here("wctomb") +#if ! defined(HAS_WCTOMB) && ! defined(HAS_WCRTOMB) +# define wctomb(s, wchar) not_here("wctomb") #endif #if !defined(HAS_MBLEN) && !defined(HAS_MBSTOWCS) && !defined(HAS_MBTOWC) && !defined(HAS_WCSTOMBS) && !defined(HAS_WCTOMB) /* If we don't have these functions, then we wouldn't have gotten a typedef @@ -1562,7 +1570,7 @@ #endif #endif -#ifndef HAS_LOCALECONV +#if ! defined(HAS_LOCALECONV) && ! defined(HAS_LOCALECONV_L) # define localeconv() not_here("localeconv") #else struct lconv_offset { @@ -1788,6 +1796,7 @@ char* newenv; const char* perl_tz_env = win32_getenv("TZ"); const char* crt_tz_env = getenv("TZ"); + if (perl_tz_env == NULL) perl_tz_env = ""; if (crt_tz_env == NULL) @@ -2158,8 +2167,7 @@ sv_2mortal((SV*)RETVAL); # if defined(USE_ITHREADS) \ && defined(HAS_POSIX_2008_LOCALE) \ - && defined(HAS_LOCALECONV_L) \ - && defined(HAS_DUPLOCALE) + && defined(HAS_LOCALECONV_L) cur = uselocale((locale_t) 0); if (cur == LC_GLOBAL_LOCALE) { @@ -2169,8 +2177,8 @@ lcbuf = localeconv_l(cur); # else - LOCALE_LOCK_V; /* Prevent interference with other threads using - localeconv() */ + LOCALECONV_LOCK; /* Prevent interference with other threads using + localeconv() */ # ifdef TS_W32_BROKEN_LOCALECONV /* This is a workaround for a Windows bug prior to VS 15, in which * localeconv only looks at the global locale. We toggle to the global @@ -2255,7 +2263,7 @@ Safefree(save_global); Safefree(save_thread); # endif - LOCALE_UNLOCK_V; + LOCALECONV_UNLOCK; # endif RESTORE_LC_NUMERIC(); #endif /* HAS_LOCALECONV */ @@ -2610,16 +2618,7 @@ break; case 8: default: -#ifdef Perl_signbit RETVAL = Perl_signbit(x); -#else - RETVAL = (x < 0); -#ifdef DOUBLE_IS_IEEE_FORMAT - if (x == -0.0) { - RETVAL = TRUE; - } -#endif -#endif break; } OUTPUT: @@ -2975,7 +2974,6 @@ # interface look beautiful, which is hard. { - dVAR; POSIX__SigAction action; GV *siggv = gv_fetchpvs("SIG", GV_ADD, SVt_PVHV); struct sigaction act; @@ -3361,9 +3359,9 @@ memzero(&PL_mbrlen_ps, sizeof(PL_mbrlen_ps)); RETVAL = 0; #else - LOCALE_LOCK; + MBLEN_LOCK; RETVAL = mblen(NULL, 0); - LOCALE_UNLOCK; + MBLEN_UNLOCK; #endif } else { /* Not resetting state */ @@ -3383,9 +3381,9 @@ #else /* Locking prevents races, but locales can be switched out * without locking, so this isn't a cure all */ - LOCALE_LOCK; + MBLEN_LOCK; RETVAL = mblen(string, len); - LOCALE_UNLOCK; + MBLEN_UNLOCK; #endif } } @@ -3412,9 +3410,9 @@ memzero(&PL_mbrtowc_ps, sizeof(PL_mbrtowc_ps)); RETVAL = 0; #else - LOCALE_LOCK; + MBTOWC_LOCK; RETVAL = mbtowc(NULL, NULL, 0); - LOCALE_UNLOCK; + MBTOWC_UNLOCK; #endif } else { /* Not resetting state */ @@ -3433,9 +3431,9 @@ #else /* Locking prevents races, but locales can be switched out * without locking, so this isn't a cure all */ - LOCALE_LOCK; + MBTOWC_LOCK; RETVAL = mbtowc(&wc, string, len); - LOCALE_UNLOCK; + MBTOWC_UNLOCK; #endif if (RETVAL >= 0) { sv_setiv_mg(pwc, wc); @@ -3467,9 +3465,9 @@ * But probably memzero would too */ RETVAL = wcrtomb(NULL, L'\0', &PL_wcrtomb_ps); #else - LOCALE_LOCK; + WCTOMB_LOCK; RETVAL = wctomb(NULL, L'\0'); - LOCALE_UNLOCK; + WCTOMB_UNLOCK; #endif } else { /* Not resetting state */ @@ -3479,9 +3477,9 @@ #else /* Locking prevents races, but locales can be switched out without * locking, so this isn't a cure all */ - LOCALE_LOCK; + WCTOMB_LOCK; RETVAL = wctomb(buffer, wchar); - LOCALE_UNLOCK; + WCTOMB_UNLOCK; #endif if (RETVAL >= 0) { sv_setpvn_mg(s, buffer, RETVAL); diff -Nru perl-5.32.1/ext/POSIX/t/export.t perl-5.34.0/ext/POSIX/t/export.t --- perl-5.32.1/ext/POSIX/t/export.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/POSIX/t/export.t 2020-10-04 22:17:13.000000000 +0000 @@ -48,7 +48,7 @@ INT_MAX INT_MIN ISIG ISTRIP IXOFF IXON LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NUMERIC LC_PAPER - LC_TELEPHONE LC_TIME LDBL_DIG + LC_TELEPHONE LC_TIME LC_SYNTAX LC_TOD LDBL_DIG LDBL_EPSILON LDBL_MANT_DIG LDBL_MAX LDBL_MAX_10_EXP LDBL_MAX_EXP LDBL_MIN LDBL_MIN_10_EXP LDBL_MIN_EXP LINK_MAX LONG_MAX LONG_MIN L_ctermid L_cuserid MAX_CANON diff -Nru perl-5.32.1/ext/POSIX/t/iv_const.t perl-5.34.0/ext/POSIX/t/iv_const.t --- perl-5.32.1/ext/POSIX/t/iv_const.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/ext/POSIX/t/iv_const.t 2021-01-20 23:04:44.000000000 +0000 @@ -0,0 +1,69 @@ +#! perl -w + +# Test integer constants (DBL_DIG, DBL_MAX_EXP, FP_*, ...) are IV, not NV. + +use strict; +use Test::More; +use Devel::Peek; +use POSIX; +use Config; + +# Capture output from Devel::Peek::Dump() into Perl string +sub capture_dump +{ + open my $olderr, '>&', *STDERR + or die "Can't save STDERR: $!"; + my $str; + my $result = eval { + local $SIG{__DIE__}; + close STDERR; + open STDERR, '>', \$str + or die "Can't redirect STDERR: $!"; + Dump($_[0]); + 1; + }; + my $reason = $@; + open STDERR, '>&', $olderr + or die "Can't restore STDERR: $!"; + $result or die $reason; + $str; +} + +# Avoid die() in a test harness. +sub capture_dump_in_test +{ + my $str; + eval { $str = capture_dump($_[0]); 1 } or BAIL_OUT $@; + $str; +} + +sub is_iv ($$) +{ + # We would write "ok(SvIOK($_[0]), ...)", + # but unfortunately SvIOK is not available in Perl. + + my $dump = capture_dump_in_test($_[0]); + #note($dump); + ok($dump =~ /^\h*FLAGS = .*\bIOK\b/m && $dump =~ /^\h*IV =/m, $_[1]); +} + +my @tests = qw(EXIT_SUCCESS); + +push @tests, qw(FLT_RADIX FP_NORMAL FP_ZERO FP_SUBNORMAL FP_INFINITE FP_NAN); + +if ($Config{uselongdouble} ? $Config{d_ilogbl} : $Config{d_ilogb}) { + push @tests, qw(FP_ILOGB0); + push @tests, qw(FP_ILOGBNAN) if $Config{d_double_has_nan}; +} + +foreach my $flt ('FLT', 'DBL', ($Config{d_longdbl} ? ('LDBL') : ())) { + push @tests, "${flt}_$_" + foreach qw(DIG MANT_DIG MAX_10_EXP MAX_EXP MIN_10_EXP MIN_EXP); +} + +push @tests, qw(FE_TONEAREST FE_TOWARDZERO FE_UPWARD FE_DOWNWARD) + if $Config{d_fegetround}; + +is_iv(eval "POSIX::$_", "$_ is an integer") foreach @tests; + +done_testing(); diff -Nru perl-5.32.1/ext/POSIX/t/math.t perl-5.34.0/ext/POSIX/t/math.t --- perl-5.32.1/ext/POSIX/t/math.t 2020-12-18 09:58:46.000000000 +0000 +++ perl-5.34.0/ext/POSIX/t/math.t 2021-05-04 06:52:48.000000000 +0000 @@ -110,17 +110,15 @@ ok(!isinf(42), "isinf 42"); ok(!isnan(42), "isnan Inf"); SKIP: { - skip("no inf", 4) unless $Config{d_double_has_inf}; + skip("no inf", 3) unless $Config{d_double_has_inf}; ok(!isfinite(Inf), "isfinite Inf"); - ok(isinf(INFINITY), "isinf INFINITY"); ok(isinf(Inf), "isinf Inf"); ok(!isnan(Inf), "isnan Inf"); } SKIP: { - skip("no nan", 5) unless $Config{d_double_has_nan}; + skip("no nan", 4) unless $Config{d_double_has_nan}; ok(!isfinite(NaN), "isfinite NaN"); ok(!isinf(NaN), "isinf NaN"); - ok(isnan(NAN), "isnan NAN"); ok(isnan(NaN), "isnan NaN"); cmp_ok(nan(), '!=', nan(), 'nan'); } @@ -275,4 +273,27 @@ } } # SKIP +SKIP: { + skip('no INFINITY', 4) unless defined &INFINITY; + # Note that if INFINITY were a bareword, it would be numified to +Inf, + # which might confuse following tests. + # But this cannot happen as long as "use strict" is effective. + ok(isinf(INFINITY), "isinf INFINITY"); + is(INFINITY, 'Inf', "INFINITY is Perl's Inf"); + cmp_ok(INFINITY, '>', ($Config{uselongdouble} ? POSIX::LDBL_MAX : POSIX::DBL_MAX), + "INFINITY > DBL_MAX"); + ok(!signbit(INFINITY), "signbit(INFINITY)"); +} + +SKIP: { + skip('no NAN', 5) unless defined &NAN; + ok(isnan(NAN()), "isnan NAN"); + # Using like() rather than is() is to deal with non-zero payload + # (currently this is not the case, but someday Perl might stringify it...) + like(NAN, qr/^NaN/, "NAN is Perl's NaN"); + cmp_ok(NAN, '!=', NAN, "NAN != NAN"); + ok(!(NAN == NAN), "NAN == NAN"); + ok(!signbit(NAN), "signbit(NAN)"); +} + done_testing(); diff -Nru perl-5.32.1/ext/POSIX/t/mb.t perl-5.34.0/ext/POSIX/t/mb.t --- perl-5.32.1/ext/POSIX/t/mb.t 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/POSIX/t/mb.t 2021-02-21 11:01:31.000000000 +0000 @@ -74,7 +74,7 @@ } SKIP: { - skip("mbtowc() not present", 5) unless $Config{d_mbtowc}; + skip("mbtowc() not present", 5) unless $Config{d_mbtowc} || $Config{d_mbrtowc}; my $wide; @@ -119,7 +119,7 @@ } SKIP: { - skip("mbtowc or wctomb() not present", 2) unless $Config{d_mbtowc} && $Config{d_wctomb}; + skip("wctomb() not present", 2) unless $Config{d_wctomb} || $Config{d_wcrtomb}; fresh_perl_is('use POSIX; &POSIX::wctomb(undef,0); my $string; my $len = &POSIX::wctomb($string, ord "A"); print "$len:$string"', "1:A", {}, 'wctomb() works on ASCII input'); diff -Nru perl-5.32.1/ext/POSIX/t/posix.t perl-5.34.0/ext/POSIX/t/posix.t --- perl-5.32.1/ext/POSIX/t/posix.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/POSIX/t/posix.t 2021-01-20 23:04:44.000000000 +0000 @@ -15,6 +15,7 @@ use POSIX qw(fcntl_h signal_h limits_h _exit getcwd open read strftime write errno localeconv dup dup2 lseek access); use strict 'subs'; +use warnings; sub next_test { my $builder = Test::More->builder; @@ -73,8 +74,8 @@ @fds = POSIX::pipe(); cmp_ok($fds[0], '>', $testfd, 'POSIX::pipe'); - CORE::open($reader = \*READER, "<&=".$fds[0]); - CORE::open($writer = \*WRITER, ">&=".$fds[1]); + CORE::open(my $reader, "<&=".$fds[0]); + CORE::open(my $writer, ">&=".$fds[1]); my $test = next_test(); print $writer "ok $test\n"; close $writer; @@ -350,11 +351,16 @@ like ($@, qr/^Unimplemented: POSIX::fgets\(\): Use method IO::Handle::gets\(\) instead/, "check its redef message"); -eval { use strict; POSIX->import("S_ISBLK"); my $x = S_ISBLK }; +eval { + use strict; + no warnings 'uninitialized'; # S_ISBLK normally has an arg + POSIX->import("S_ISBLK"); + my $x = S_ISBLK +}; unlike( $@, qr/Can't use string .* as a symbol ref/, "Can import autoloaded constants" ); SKIP: { - skip("locales not available", 26) unless locales_enabled(qw(NUMERIC MONETARY)); + skip("locales not available", 26) unless locales_enabled([ qw(NUMERIC MONETARY) ]); skip("localeconv() not available", 26) unless $Config{d_locconv}; my $conv = localeconv; is(ref $conv, 'HASH', 'localeconv returns a hash reference'); diff -Nru perl-5.32.1/ext/POSIX/t/sysconf.t perl-5.34.0/ext/POSIX/t/sysconf.t --- perl-5.32.1/ext/POSIX/t/sysconf.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/POSIX/t/sysconf.t 2020-11-18 22:09:15.000000000 +0000 @@ -7,6 +7,7 @@ } use strict; +use warnings; use File::Spec; use POSIX; @@ -110,12 +111,12 @@ -c $TTY or skip("$TTY not a character file", $n); - open(TTY, '<', $TTY) + open(my $LEXTTY, '<', $TTY) or skip("failed to open $TTY: $!", $n); - -t TTY - or skip("TTY ($TTY) not a terminal file", $n); + -t $LEXTTY + or skip("$LEXTTY ($TTY) not a terminal file", $n); - my $fd = fileno(TTY); + my $fd = fileno($LEXTTY); # testing fpathconf() on a terminal file for my $constant (@path_consts_terminal) { @@ -123,7 +124,7 @@ "calling fpathconf($fd, $constant) ($TTY)"); } - close($fd); + close($LEXTTY); # testing pathconf() on a terminal file for my $constant (@path_consts_terminal) { _check_and_report(sub { pathconf($TTY, shift) }, $constant, @@ -157,7 +158,9 @@ } END { - 1 while unlink($fifo); + if ($fifo) { + 1 while unlink($fifo); + } } SKIP: { diff -Nru perl-5.32.1/ext/POSIX/t/termios.t perl-5.34.0/ext/POSIX/t/termios.t --- perl-5.32.1/ext/POSIX/t/termios.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/POSIX/t/termios.t 2020-11-18 22:09:15.000000000 +0000 @@ -71,12 +71,22 @@ $! = 0; is($termios->setattr(fileno $not_a_tty), undef, 'setattr on a non tty should fail'); - cmp_ok($!, '==', POSIX::ENOTTY, 'and set errno to ENOTTY'); + { + # https://bugs.dragonflybsd.org/issues/3252 + local $TODO = "dragonfly returns bad errno" + if $^O eq 'dragonfly'; + cmp_ok($!, '==', POSIX::ENOTTY, 'and set errno to ENOTTY'); + } $! = 0; is($termios->setattr(fileno $not_a_tty, TCSANOW), undef, 'setattr on a non tty should fail'); - cmp_ok($!, '==', POSIX::ENOTTY, 'and set errno to ENOTTY'); + { + # https://bugs.dragonflybsd.org/issues/3252 + local $TODO = "dragonfly returns bad errno" + if $^O eq 'dragonfly'; + cmp_ok($!, '==', POSIX::ENOTTY, 'and set errno to ENOTTY'); + } } { @@ -160,20 +170,40 @@ $! = 0; is(tcdrain(fileno $not_a_tty), undef, 'tcdrain on a non tty should fail'); -cmp_ok($!, '==', POSIX::ENOTTY, 'and set errno to ENOTTY'); +{ + # https://bugs.dragonflybsd.org/issues/3252 + local $TODO = "dragonfly returns bad errno" + if $^O eq 'dragonfly'; + cmp_ok($!, '==', POSIX::ENOTTY, 'and set errno to ENOTTY'); +} $! = 0; is(tcflow(fileno $not_a_tty, TCOON), undef, 'tcflow on a non tty should fail'); -cmp_ok($!, '==', POSIX::ENOTTY, 'and set errno to ENOTTY'); +{ + # https://bugs.dragonflybsd.org/issues/3252 + local $TODO = "dragonfly returns bad errno" + if $^O eq 'dragonfly'; + cmp_ok($!, '==', POSIX::ENOTTY, 'and set errno to ENOTTY'); +} $! = 0; is(tcflush(fileno $not_a_tty, TCOFLUSH), undef, 'tcflush on a non tty should fail'); -cmp_ok($!, '==', POSIX::ENOTTY, 'and set errno to ENOTTY'); +{ + # https://bugs.dragonflybsd.org/issues/3252 + local $TODO = "dragonfly returns bad errno" + if $^O eq 'dragonfly'; + cmp_ok($!, '==', POSIX::ENOTTY, 'and set errno to ENOTTY'); +} $! = 0; is(tcsendbreak(fileno $not_a_tty, 0), undef, - 'tcsendbreak on a non tty should fail'); -cmp_ok($!, '==', POSIX::ENOTTY, 'and set errno to ENOTTY'); + 'tcsendbreak on a non tty should fail'); +{ + # https://bugs.dragonflybsd.org/issues/3252 + local $TODO = "dragonfly returns bad errno" + if $^O eq 'dragonfly'; + cmp_ok($!, '==', POSIX::ENOTTY, 'and set errno to ENOTTY'); +} done_testing(); diff -Nru perl-5.32.1/ext/POSIX/t/waitpid.t perl-5.34.0/ext/POSIX/t/waitpid.t --- perl-5.32.1/ext/POSIX/t/waitpid.t 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/POSIX/t/waitpid.t 2021-01-20 23:04:44.000000000 +0000 @@ -61,7 +61,7 @@ $state = NEG1_REQUIRED; is(WIFEXITED(${^CHILD_ERROR_NATIVE}), 1, 'child exited cleanly'); is(WEXITSTATUS(${^CHILD_ERROR_NATIVE}), 0, - 'child exited with 0 (the retun value of its sleep(3) call)'); + 'child exited with 0 (the return value of its sleep(3) call)'); } } diff -Nru perl-5.32.1/ext/re/re.pm perl-5.34.0/ext/re/re.pm --- perl-5.32.1/ext/re/re.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/re/re.pm 2020-10-04 22:17:13.000000000 +0000 @@ -4,11 +4,13 @@ use strict; use warnings; -our $VERSION = "0.40"; +our $VERSION = "0.41"; our @ISA = qw(Exporter); -our @EXPORT_OK = ('regmust', - qw(is_regexp regexp_pattern - regname regnames regnames_count)); +our @EXPORT_OK = qw{ + is_regexp regexp_pattern + regname regnames regnames_count + regmust optimization +}; our %EXPORT_OK = map { $_ => 1 } @EXPORT_OK; my %bitmask = ( @@ -751,6 +753,28 @@ Like C this function will not be confused by overloading or blessing of the object. +=item regname($name,$all) + +Returns the contents of a named buffer of the last successful match. If +$all is true, then returns an array ref containing one entry per buffer, +otherwise returns the first defined buffer. + +=item regnames($all) + +Returns a list of all of the named buffers defined in the last successful +match. If $all is true, then it returns all names defined, if not it returns +only names which were involved in the match. + +=item regnames_count() + +Returns the number of distinct names defined in the pattern used +for the last successful match. + +B this result is always the actual number of distinct +named buffers defined, it may not actually match that which is +returned by C and related routines when those routines +have not been called with the $all parameter set. + =item regmust($ref) If the argument is a compiled regular expression as returned by C, @@ -783,27 +807,115 @@ are using thinks is the longest. If you believe that the result is wrong please report it via the L utility. -=item regname($name,$all) +=item optimization($ref) -Returns the contents of a named buffer of the last successful match. If -$all is true, then returns an array ref containing one entry per buffer, -otherwise returns the first defined buffer. +If the argument is a compiled regular expression as returned by C, +then this function returns a hashref of the optimization information +discovered at compile time, so we can write tests around it. If any +other argument is given, returns C. + +The hash contents are expected to change from time to time as we develop +new ways to optimize - no assumption of stability should be made, not +even between minor versions of perl. -=item regnames($all) +For the current version, the hash will have the following contents: -Returns a list of all of the named buffers defined in the last successful -match. If $all is true, then it returns all names defined, if not it returns -only names which were involved in the match. +=over 4 -=item regnames_count() +=item minlen -Returns the number of distinct names defined in the pattern used -for the last successful match. +An integer, the least number of characters in any string that can match. -B this result is always the actual number of distinct -named buffers defined, it may not actually match that which is -returned by C and related routines when those routines -have not been called with the $all parameter set. +=item minlenret + +An integer, the least number of characters that can be in C<$&> after a +match. (Consider eg C< /ns(?=\d)/ >.) + +=item gofs + +An integer, the number of characters before C to start match at. + +=item noscan + +A boolean, C to indicate that any anchored/floating substrings +found should not be used. (CHECKME: apparently this is set for an +anchored pattern with no floating substring, but never used.) + +=item isall + +A boolean, C to indicate that the optimizer information is all +that the regular expression contains, and thus one does not need to +enter the regexp runtime engine at all. + +=item anchor SBOL + +A boolean, C if the pattern is anchored to start of string. + +=item anchor MBOL + +A boolean, C if the pattern is anchored to any start of line +within the string. + +=item anchor GPOS + +A boolean, C if the pattern is anchored to the end of the previous +match. + +=item skip + +A boolean, C if the start class can match only the first of a run. + +=item implicit + +A boolean, C if a C has been turned implicitly into a C. + +=item anchored/floating + +A byte string representing an anchored or floating substring respectively +that any match must contain, or undef if no such substring was found, or +if the substring would require utf8 to represent. + +=item anchored utf8/floating utf8 + +A utf8 string representing an anchored or floating substring respectively +that any match must contain, or undef if no such substring was found, or +if the substring contains only 7-bit ASCII characters. + +=item anchored min offset/floating min offset + +An integer, the first offset in characters from a match location at which +we should look for the corresponding substring. + +=item anchored max offset/floating max offset + +An integer, the last offset in characters from a match location at which +we should look for the corresponding substring. + +Ignored for anchored, so may be 0 or same as min. + +=item anchored end shift/floating end shift + +FIXME: not sure what this is, something to do with lookbehind. regcomp.c +says: + When the final pattern is compiled and the data is moved from the + scan_data_t structure into the regexp structure the information + about lookbehind is factored in, with the information that would + have been lost precalculated in the end_shift field for the + associated string. + +=item checking + +A constant string, one of "anchored", "floating" or "none" to indicate +which substring (if any) should be checked for first. + +=item stclass + +A string representation of a character class ("start class") that must +be the first character of any match. + +TODO: explain the representations. + +=back =back diff -Nru perl-5.32.1/ext/re/re.xs perl-5.34.0/ext/re/re.xs --- perl-5.32.1/ext/re/re.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/re/re.xs 2020-10-04 22:17:13.000000000 +0000 @@ -11,7 +11,7 @@ #undef dXSBOOTARGSXSAPIVERCHK /* skip API version checking due to different interp struct size but, - this hack is until #123007 is resolved */ + this hack is until GitHub issue #14169 is resolved */ #define dXSBOOTARGSXSAPIVERCHK dXSBOOTARGSNOVERCHK START_EXTERN_C @@ -54,6 +54,10 @@ #if defined(USE_ITHREADS) extern void* my_regdupe (pTHX_ REGEXP * const r, CLONE_PARAMS *param); #endif +extern void my_regprop(pTHX_ + const regexp *prog, SV* sv, const regnode* o, + const regmatch_info *reginfo, const RExC_state_t *pRExC_state +); EXTERN_C const struct regexp_engine my_reg_engine; EXTERN_C const struct regexp_engine wild_reg_engine; @@ -100,6 +104,8 @@ my_re_op_compile, }; +#define newSVbool_(x) newSViv((x) ? 1 : 0) + MODULE = re PACKAGE = re void @@ -143,3 +149,94 @@ XSRETURN_UNDEF; } +SV * +optimization(sv) + SV * sv +PROTOTYPE: $ +PREINIT: + REGEXP *re; + regexp *r; + struct reg_substr_datum * data; + HV *hv; +CODE: +{ + re = SvRX(sv); + if (!re) { + XSRETURN_UNDEF; + } + + /* only for re engines we know about */ + if ( RX_ENGINE(re) != &my_reg_engine + && RX_ENGINE(re) != &wild_reg_engine + && RX_ENGINE(re) != &PL_core_reg_engine) + { + XSRETURN_UNDEF; + } + + if (!PL_colorset) { + reginitcolors(); + } + + r = ReANY(re); + hv = newHV(); + + hv_stores(hv, "minlen", newSViv(r->minlen)); + hv_stores(hv, "minlenret", newSViv(r->minlenret)); + hv_stores(hv, "gofs", newSViv(r->gofs)); + + data = &r->substrs->data[0]; + hv_stores(hv, "anchored", data->substr + ? newSVsv(data->substr) : &PL_sv_undef); + hv_stores(hv, "anchored utf8", data->utf8_substr + ? newSVsv(data->utf8_substr) : &PL_sv_undef); + hv_stores(hv, "anchored min offset", newSViv(data->min_offset)); + hv_stores(hv, "anchored max offset", newSViv(data->max_offset)); + hv_stores(hv, "anchored end shift", newSViv(data->end_shift)); + + data = &r->substrs->data[1]; + hv_stores(hv, "floating", data->substr + ? newSVsv(data->substr) : &PL_sv_undef); + hv_stores(hv, "floating utf8", data->utf8_substr + ? newSVsv(data->utf8_substr) : &PL_sv_undef); + hv_stores(hv, "floating min offset", newSViv(data->min_offset)); + hv_stores(hv, "floating max offset", newSViv(data->max_offset)); + hv_stores(hv, "floating end shift", newSViv(data->end_shift)); + + hv_stores(hv, "checking", newSVpv( + (!r->check_substr && !r->check_utf8) + ? "none" + : ( r->check_substr == r->substrs->data[1].substr + && r->check_utf8 == r->substrs->data[1].utf8_substr + ) + ? "floating" + : "anchored" + , 0)); + + hv_stores(hv, "noscan", newSVbool_(r->intflags & PREGf_NOSCAN)); + hv_stores(hv, "isall", newSVbool_(r->extflags & RXf_CHECK_ALL)); + hv_stores(hv, "anchor SBOL", newSVbool_(r->intflags & PREGf_ANCH_SBOL)); + hv_stores(hv, "anchor MBOL", newSVbool_(r->intflags & PREGf_ANCH_MBOL)); + hv_stores(hv, "anchor GPOS", newSVbool_(r->intflags & PREGf_ANCH_GPOS)); + hv_stores(hv, "skip", newSVbool_(r->intflags & PREGf_SKIP)); + hv_stores(hv, "implicit", newSVbool_(r->intflags & PREGf_IMPLICIT)); + + { + RXi_GET_DECL(r, ri); + if (ri->regstclass) { + SV* sv = newSV(0); + /* not Perl_regprop, we must have the DEBUGGING version */ + my_regprop(aTHX_ r, sv, ri->regstclass, NULL, NULL); + hv_stores(hv, "stclass", sv); + } else { + hv_stores(hv, "stclass", &PL_sv_undef); + } + } + + RETVAL = newRV_noinc((SV *)hv); +} +OUTPUT: + RETVAL + +# +# ex: set ts=8 sts=4 sw=4 et: +# diff -Nru perl-5.32.1/ext/re/t/re_funcs.t perl-5.34.0/ext/re/t/re_funcs.t --- perl-5.32.1/ext/re/t/re_funcs.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/re/t/re_funcs.t 2020-10-04 22:17:13.000000000 +0000 @@ -1,19 +1,19 @@ #!./perl BEGIN { - require Config; - if (($Config::Config{'extensions'} !~ /\bre\b/) ){ - print "1..0 # Skip -- Perl configured without re module\n"; - exit 0; - } + require Config; + if (($Config::Config{'extensions'} !~ /\bre\b/) ){ + print "1..0 # Skip -- Perl configured without re module\n"; + exit 0; + } } use strict; use warnings; use Test::More; # test count at bottom of file -use re qw(regmust); { + use re qw{regmust}; my $qr=qr/here .* there/x; my ($anchored,$floating)=regmust($qr); is($anchored,'here',"Regmust anchored - qr//"); @@ -27,6 +27,75 @@ is($anchored,undef,"Regmust anchored - ref"); is($floating,undef,"Regmust anchored - ref"); } + +{ + use re qw{optimization}; + # try to show each element is populated, without working the regexp + # engine any harder than necessary - the real work will be testing + # that optimization happens correctly using this under t/re. + + is(optimization(undef), undef, "non-qr returns undef"); + is(optimization("foo"), undef, "non-qr returns undef"); + is(optimization(bless {}, "Regexp"), undef, "non-qr returns undef"); + + my $o = optimization(qr{foo}); + is(ref($o), 'HASH', "qr returns a hashref"); + is($o->{minlen}, 3, "/foo/ has minlen"); + + $o = optimization(qr{foo(?=bar)}); + is($o->{minlenret}, 3, "/foo(?=bar)/ has minlenret"); + + $o = optimization(qr{.\G.}); + ok($o->{'anchor GPOS'}, "/.\\G./ has anchor GPOS"); + is($o->{gofs}, 1, "/.\\G./ has gofs"); + + $o = optimization(qr{a|bc}); + is($o->{anchored}, undef, "/a|bc/ has no anchored substring"); + is($o->{floating}, undef, "/a|bc/ has no floating substring"); + is($o->{checking}, "none", "/a|bc/ is checking no substring"); + + $o = optimization(qr{foo}); + ok($o->{isall}, "/foo/ has isall"); + is($o->{anchored}, "foo", "/foo/ has anchored substring"); + is($o->{'anchored utf8'}, undef, "/foo/ has no anchored utf8"); + is($o->{floating}, undef, "/foo/ has no floating substring"); + is($o->{checking}, "anchored", "/foo/ is checking anchored"); + + $o = optimization(qr{.foo}); + is($o->{'anchored min offset'}, 1, "/.foo/ has anchored min offset"); + like($o->{'anchored max offset'}, qr{^[01]\z}, + "/.foo/ has valid anchored max offset"); + + $o = optimization(qr{.foo\x{100}}); + is($o->{anchored}, undef, "/.foo\\x{100}/ has no anchored"); + is($o->{'anchored utf8'}, "foo\x{100}", "/.foo\\x{100}/ has anchored utf8"); + is($o->{'anchored min offset'}, 1, "/.foo\\x{100}/ has anchored min"); + like($o->{'anchored max offset'}, qr{^[01]\z}, + "/.foo\\x{100}/ has valid anchored max offset"); + + $o = optimization(qr{.x?foo}); + is($o->{anchored}, undef, "/.x?foo/ has no anchored substring"); + is($o->{floating}, "foo", "/.x?foo/ has floating substring"); + is($o->{'floating utf8'}, undef, "/.x?foo/ has no floating utf8"); + is($o->{'floating min offset'}, 1, "/.x?foo/ has floating min offset"); + is($o->{'floating max offset'}, 2, "/.x?foo/ has floating max offset"); + is($o->{checking}, "floating", "/foo/ is checking floating"); + + $o = optimization(qr{[ab]+}); + ok($o->{skip}, "/[ab]+/ has skip"); + like($o->{stclass}, qr{^ANYOF}, "/[ab]+/ has stclass"); + + ok(optimization(qr{^foo})->{'anchor SBOL'}, "/^foo/ has anchor SBOL"); + ok(optimization(qr{^foo}m)->{'anchor MBOL'}, "/^foo/m has anchor MBOL"); + ok(optimization(qr{.*})->{implicit}, "/.*/ has implicit anchor"); + ok(optimization(qr{^.foo})->{noscan}, "/^.foo/ has noscan"); + + # TODO: test anchored/floating end shift +} # New tests above this line, don't forget to update the test count below! -use Test::More tests => 6; +use Test::More tests => 40; # No tests here! + +# +# ex: set ts=8 sts=4 sw=4 et: +# diff -Nru perl-5.32.1/ext/SDBM_File/dba.c perl-5.34.0/ext/SDBM_File/dba.c --- perl-5.32.1/ext/SDBM_File/dba.c 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/SDBM_File/dba.c 2021-01-20 23:04:44.000000000 +0000 @@ -13,75 +13,75 @@ int main(int argc, char **argv) { - int n; - char *p; - char *name; - int pagf; - - progname = argv[0]; - - if (p = argv[1]) { - name = (char *) malloc((n = strlen(p)) + 5); - if (!name) - oops("cannot get memory"); - - strcpy(name, p); - strcpy(name + n, ".pag"); - - if ((pagf = open(name, O_RDONLY)) < 0) - oops("cannot open %s.", name); - - sdump(pagf); - } - else - oops("usage: %s dbname", progname); + int n; + char *p; + char *name; + int pagf; + + progname = argv[0]; + + if (p = argv[1]) { + name = (char *) malloc((n = strlen(p)) + 5); + if (!name) + oops("cannot get memory"); + + strcpy(name, p); + strcpy(name + n, ".pag"); + + if ((pagf = open(name, O_RDONLY)) < 0) + oops("cannot open %s.", name); + + sdump(pagf); + } + else + oops("usage: %s dbname", progname); - return 0; + return 0; } void sdump(int pagf) { - int b; - int n = 0; - int t = 0; - int o = 0; - int e; - char pag[PBLKSIZ]; - - while ((b = read(pagf, pag, PBLKSIZ)) > 0) { - printf("#%d: ", n); - if (!okpage(pag)) - printf("bad\n"); - else { - printf("ok. "); - if (!(e = pagestat(pag))) - o++; - else - t += e; - } - n++; - } - - if (b == 0) - printf("%d pages (%d holes): %d entries\n", n, o, t); - else - oops("read failed: block %d", n); + int b; + int n = 0; + int t = 0; + int o = 0; + int e; + char pag[PBLKSIZ]; + + while ((b = read(pagf, pag, PBLKSIZ)) > 0) { + printf("#%d: ", n); + if (!okpage(pag)) + printf("bad\n"); + else { + printf("ok. "); + if (!(e = pagestat(pag))) + o++; + else + t += e; + } + n++; + } + + if (b == 0) + printf("%d pages (%d holes): %d entries\n", n, o, t); + else + oops("read failed: block %d", n); } int pagestat(char *pag) { - int n; - int free; - short *ino = (short *) pag; - - if (!(n = ino[0])) - printf("no entries.\n"); - else { - free = ino[n] - (n + 1) * sizeof(short); - printf("%3d entries %2d%% used free %d.\n", - n / 2, ((PBLKSIZ - free) * 100) / PBLKSIZ, free); - } - return n / 2; + int n; + int free; + short *ino = (short *) pag; + + if (!(n = ino[0])) + printf("no entries.\n"); + else { + free = ino[n] - (n + 1) * sizeof(short); + printf("%3d entries %2d%% used free %d.\n", + n / 2, ((PBLKSIZ - free) * 100) / PBLKSIZ, free); + } + return n / 2; } diff -Nru perl-5.32.1/ext/SDBM_File/dbd.c perl-5.34.0/ext/SDBM_File/dbd.c --- perl-5.32.1/ext/SDBM_File/dbd.c 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/SDBM_File/dbd.c 2021-01-20 23:04:44.000000000 +0000 @@ -16,53 +16,53 @@ int main(int argc, char **argv) { - int n; - char *p; - char *name; - int pagf; - - progname = argv[0]; - - if (p = argv[1]) { - name = (char *) malloc((n = strlen(p)) + 5); - if (!name) - oops("cannot get memory"); - - strcpy(name, p); - strcpy(name + n, ".pag"); - - if ((pagf = open(name, O_RDONLY)) < 0) - oops("cannot open %s.", name); - - sdump(pagf); - } - else - oops("usage: %s dbname", progname); - return 0; + int n; + char *p; + char *name; + int pagf; + + progname = argv[0]; + + if (p = argv[1]) { + name = (char *) malloc((n = strlen(p)) + 5); + if (!name) + oops("cannot get memory"); + + strcpy(name, p); + strcpy(name + n, ".pag"); + + if ((pagf = open(name, O_RDONLY)) < 0) + oops("cannot open %s.", name); + + sdump(pagf); + } + else + oops("usage: %s dbname", progname); + return 0; } void sdump(int pagf) { - int r; - int n = 0; - int o = 0; - char pag[PBLKSIZ]; - - while ((r = read(pagf, pag, PBLKSIZ)) > 0) { - if (!okpage(pag)) - fprintf(stderr, "%d: bad page.\n", n); - else if (empty(pag)) - o++; - else - dispage(pag); - n++; - } - - if (r == 0) - fprintf(stderr, "%d pages (%d holes).\n", n, o); - else - oops("read failed: block %d", n); + int r; + int n = 0; + int o = 0; + char pag[PBLKSIZ]; + + while ((r = read(pagf, pag, PBLKSIZ)) > 0) { + if (!okpage(pag)) + fprintf(stderr, "%d: bad page.\n", n); + else if (empty(pag)) + o++; + else + dispage(pag); + n++; + } + + if (r == 0) + fprintf(stderr, "%d pages (%d holes).\n", n, o); + else + oops("read failed: block %d", n); } @@ -70,44 +70,44 @@ int dispage(char *pag) { - int i, n; - int off; - int short *ino = (short *) pag; - - off = PBLKSIZ; - for (i = 1; i < ino[0]; i += 2) { - printf("\t[%d]: ", ino[i]); - for (n = ino[i]; n < off; n++) - putchar(pag[n]); - putchar(' '); - off = ino[i]; - printf("[%d]: ", ino[i + 1]); - for (n = ino[i + 1]; n < off; n++) - putchar(pag[n]); - off = ino[i + 1]; - putchar('\n'); - } + int i, n; + int off; + int short *ino = (short *) pag; + + off = PBLKSIZ; + for (i = 1; i < ino[0]; i += 2) { + printf("\t[%d]: ", ino[i]); + for (n = ino[i]; n < off; n++) + putchar(pag[n]); + putchar(' '); + off = ino[i]; + printf("[%d]: ", ino[i + 1]); + for (n = ino[i + 1]; n < off; n++) + putchar(pag[n]); + off = ino[i + 1]; + putchar('\n'); + } } #else void dispage(char *pag) { - int i, n; - int off; - short *ino = (short *) pag; - - off = PBLKSIZ; - for (i = 1; i < ino[0]; i += 2) { - for (n = ino[i]; n < off; n++) - if (pag[n] != 0) - putchar(pag[n]); - putchar('\t'); - off = ino[i]; - for (n = ino[i + 1]; n < off; n++) - if (pag[n] != 0) - putchar(pag[n]); - putchar('\n'); - off = ino[i + 1]; - } + int i, n; + int off; + short *ino = (short *) pag; + + off = PBLKSIZ; + for (i = 1; i < ino[0]; i += 2) { + for (n = ino[i]; n < off; n++) + if (pag[n] != 0) + putchar(pag[n]); + putchar('\t'); + off = ino[i]; + for (n = ino[i + 1]; n < off; n++) + if (pag[n] != 0) + putchar(pag[n]); + putchar('\n'); + off = ino[i + 1]; + } } #endif diff -Nru perl-5.32.1/ext/SDBM_File/dbe.c perl-5.34.0/ext/SDBM_File/dbe.c --- perl-5.32.1/ext/SDBM_File/dbe.c 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/SDBM_File/dbe.c 2021-01-20 23:04:44.000000000 +0000 @@ -51,381 +51,381 @@ char getopt(int argc, char **argv, char *optstring) { - int c; - char *place; - static int optind = 0; - static char *scan = NULL; - - optarg = NULL; - - if (scan == NULL || *scan == '\0') { - - if (optind == 0) - optind++; - if (optind >= argc) - return ':'; - - optarg = place = argv[optind++]; - if (place[0] != '-' || place[1] == '\0') - return '?'; - if (place[1] == '-' && place[2] == '\0') - return '?'; - scan = place + 1; - } - - c = *scan++; - place = strchr(optstring, c); - if (place == NULL || c == ':' || c == ';') { - - (void) fprintf(stderr, "%s: unknown option %c\n", argv[0], c); - scan = NULL; - return '!'; - } - if (*++place == ':') { - - if (*scan != '\0') { - - optarg = scan; - scan = NULL; - - } - else { - - if (optind >= argc) { - - (void) fprintf(stderr, "%s: %c requires an argument\n", - argv[0], c); - return '!'; - } - optarg = argv[optind]; - optind++; - } - } - else if (*place == ';') { - - if (*scan != '\0') { - - optarg = scan; - scan = NULL; - - } - else { - - if (optind >= argc || *argv[optind] == '-') - optarg = NULL; - else { - optarg = argv[optind]; - optind++; - } - } - } - return c; + int c; + char *place; + static int optind = 0; + static char *scan = NULL; + + optarg = NULL; + + if (scan == NULL || *scan == '\0') { + + if (optind == 0) + optind++; + if (optind >= argc) + return ':'; + + optarg = place = argv[optind++]; + if (place[0] != '-' || place[1] == '\0') + return '?'; + if (place[1] == '-' && place[2] == '\0') + return '?'; + scan = place + 1; + } + + c = *scan++; + place = strchr(optstring, c); + if (place == NULL || c == ':' || c == ';') { + + (void) fprintf(stderr, "%s: unknown option %c\n", argv[0], c); + scan = NULL; + return '!'; + } + if (*++place == ':') { + + if (*scan != '\0') { + + optarg = scan; + scan = NULL; + + } + else { + + if (optind >= argc) { + + (void) fprintf(stderr, "%s: %c requires an argument\n", + argv[0], c); + return '!'; + } + optarg = argv[optind]; + optind++; + } + } + else if (*place == ';') { + + if (*scan != '\0') { + + optarg = scan; + scan = NULL; + + } + else { + + if (optind >= argc || *argv[optind] == '-') + optarg = NULL; + else { + optarg = argv[optind]; + optind++; + } + } + } + return c; } void print_datum(datum db) { - int i; + int i; - putchar('"'); - for (i = 0; i < db.dsize; i++) { - if (isprint((unsigned char)db.dptr[i])) - putchar(db.dptr[i]); - else { - putchar('\\'); - putchar('0' + ((db.dptr[i] >> 6) & 0x07)); - putchar('0' + ((db.dptr[i] >> 3) & 0x07)); - putchar('0' + (db.dptr[i] & 0x07)); - } - } - putchar('"'); + putchar('"'); + for (i = 0; i < db.dsize; i++) { + if (isprint((unsigned char)db.dptr[i])) + putchar(db.dptr[i]); + else { + putchar('\\'); + putchar('0' + ((db.dptr[i] >> 6) & 0x07)); + putchar('0' + ((db.dptr[i] >> 3) & 0x07)); + putchar('0' + (db.dptr[i] & 0x07)); + } + } + putchar('"'); } datum read_datum(char *s) { - datum db; - char *p; - int i; - - db.dsize = 0; - db.dptr = (char *) malloc(strlen(s) * sizeof(char)); - if (!db.dptr) - oops("cannot get memory"); - - for (p = db.dptr; *s != '\0'; p++, db.dsize++, s++) { - if (*s == '\\') { - if (*++s == 'n') - *p = '\n'; - else if (*s == 'r') - *p = '\r'; - else if (*s == 'f') - *p = '\f'; - else if (*s == 't') - *p = '\t'; - else if (isdigit((unsigned char)*s) - && isdigit((unsigned char)*(s + 1)) - && isdigit((unsigned char)*(s + 2))) - { - i = (*s++ - '0') << 6; - i |= (*s++ - '0') << 3; - i |= *s - '0'; - *p = i; - } - else if (*s == '0') - *p = '\0'; - else - *p = *s; - } - else - *p = *s; - } + datum db; + char *p; + int i; + + db.dsize = 0; + db.dptr = (char *) malloc(strlen(s) * sizeof(char)); + if (!db.dptr) + oops("cannot get memory"); + + for (p = db.dptr; *s != '\0'; p++, db.dsize++, s++) { + if (*s == '\\') { + if (*++s == 'n') + *p = '\n'; + else if (*s == 'r') + *p = '\r'; + else if (*s == 'f') + *p = '\f'; + else if (*s == 't') + *p = '\t'; + else if (isdigit((unsigned char)*s) + && isdigit((unsigned char)*(s + 1)) + && isdigit((unsigned char)*(s + 2))) + { + i = (*s++ - '0') << 6; + i |= (*s++ - '0') << 3; + i |= *s - '0'; + *p = i; + } + else if (*s == '0') + *p = '\0'; + else + *p = *s; + } + else + *p = *s; + } - return db; + return db; } char * key2s(datum db) { - char *buf; - char *p1, *p2; + char *buf; + char *p1, *p2; - buf = (char *) malloc((db.dsize + 1) * sizeof(char)); - if (!buf) - oops("cannot get memory"); - for (p1 = buf, p2 = db.dptr; *p2 != '\0'; *p1++ = *p2++); - *p1 = '\0'; - return buf; + buf = (char *) malloc((db.dsize + 1) * sizeof(char)); + if (!buf) + oops("cannot get memory"); + for (p1 = buf, p2 = db.dptr; *p2 != '\0'; *p1++ = *p2++); + *p1 = '\0'; + return buf; } int main(int argc, char **argv) { - typedef enum { - YOW, FETCH, STORE, DELETE, SCAN, REGEXP - } commands; - char opt; - int flags; - int giveusage = 0; - int verbose = 0; - commands what = YOW; - char *comarg[3]; - int st_flag = DBM_INSERT; - int argn; - DBM *db; - datum key; - datum content; - - flags = O_RDWR; - argn = 0; - - while ((opt = getopt(argc, argv, "acdfFm:rstvx")) != ':') { - switch (opt) { - case 'a': - what = SCAN; - break; - case 'c': - flags |= O_CREAT; - break; - case 'd': - what = DELETE; - break; - case 'f': - what = FETCH; - break; - case 'F': - what = REGEXP; - break; - case 'm': - flags &= ~(000007); - if (strcmp(optarg, "r") == 0) - flags |= O_RDONLY; - else if (strcmp(optarg, "w") == 0) - flags |= O_WRONLY; - else if (strcmp(optarg, "rw") == 0) - flags |= O_RDWR; - else { - fprintf(stderr, "Invalid mode: \"%s\"\n", optarg); - giveusage = 1; - } - break; - case 'r': - st_flag = DBM_REPLACE; - break; - case 's': - what = STORE; - break; - case 't': - flags |= O_TRUNC; - break; - case 'v': - verbose = 1; - break; - case 'x': - flags |= O_EXCL; - break; - case '!': - giveusage = 1; - break; - case '?': - if (argn < 3) - comarg[argn++] = optarg; - else { - fprintf(stderr, "Too many arguments.\n"); - giveusage = 1; - } - break; - } - } - - if (giveusage || what == YOW || argn < 1) { - fprintf(stderr, "Usage: %s database [-m r|w|rw] [-crtx] -a|-d|-f|-F|-s [key [content]]\n", argv[0]); - exit(-1); - } - - if ((db = dbm_open(comarg[0], flags, 0777)) == NULL) { - fprintf(stderr, "Error opening database \"%s\"\n", comarg[0]); - exit(-1); - } - - if (argn > 1) - key = read_datum(comarg[1]); - if (argn > 2) - content = read_datum(comarg[2]); - - switch (what) { - - case SCAN: - key = dbm_firstkey(db); - if (dbm_error(db)) { - fprintf(stderr, "Error when fetching first key\n"); - goto db_exit; - } - while (key.dptr != NULL) { - content = dbm_fetch(db, key); - if (dbm_error(db)) { - fprintf(stderr, "Error when fetching "); - print_datum(key); - printf("\n"); - goto db_exit; - } - print_datum(key); - printf(": "); - print_datum(content); - printf("\n"); - if (dbm_error(db)) { - fprintf(stderr, "Error when fetching next key\n"); - goto db_exit; - } - key = dbm_nextkey(db); - } - break; - - case REGEXP: - if (argn < 2) { - fprintf(stderr, "Missing regular expression.\n"); - goto db_exit; - } - if (re_comp(comarg[1])) { - fprintf(stderr, "Invalid regular expression\n"); - goto db_exit; - } - key = dbm_firstkey(db); - if (dbm_error(db)) { - fprintf(stderr, "Error when fetching first key\n"); - goto db_exit; - } - while (key.dptr != NULL) { - if (re_exec(key2s(key))) { - content = dbm_fetch(db, key); - if (dbm_error(db)) { - fprintf(stderr, "Error when fetching "); - print_datum(key); - printf("\n"); - goto db_exit; - } - print_datum(key); - printf(": "); - print_datum(content); - printf("\n"); - if (dbm_error(db)) { - fprintf(stderr, "Error when fetching next key\n"); - goto db_exit; - } - } - key = dbm_nextkey(db); - } - break; - - case FETCH: - if (argn < 2) { - fprintf(stderr, "Missing fetch key.\n"); - goto db_exit; - } - content = dbm_fetch(db, key); - if (dbm_error(db)) { - fprintf(stderr, "Error when fetching "); - print_datum(key); - printf("\n"); - goto db_exit; - } - if (content.dptr == NULL) { - fprintf(stderr, "Cannot find "); - print_datum(key); - printf("\n"); - goto db_exit; - } - print_datum(key); - printf(": "); - print_datum(content); - printf("\n"); - break; - - case DELETE: - if (argn < 2) { - fprintf(stderr, "Missing delete key.\n"); - goto db_exit; - } - if (dbm_delete(db, key) || dbm_error(db)) { - fprintf(stderr, "Error when deleting "); - print_datum(key); - printf("\n"); - goto db_exit; - } - if (verbose) { - print_datum(key); - printf(": DELETED\n"); - } - break; - - case STORE: - if (argn < 3) { - fprintf(stderr, "Missing key and/or content.\n"); - goto db_exit; - } - if (dbm_store(db, key, content, st_flag) || dbm_error(db)) { - fprintf(stderr, "Error when storing "); - print_datum(key); - printf("\n"); - goto db_exit; - } - if (verbose) { - print_datum(key); - printf(": "); - print_datum(content); - printf(" STORED\n"); - } - break; - } + typedef enum { + YOW, FETCH, STORE, DELETE, SCAN, REGEXP + } commands; + char opt; + int flags; + int giveusage = 0; + int verbose = 0; + commands what = YOW; + char *comarg[3]; + int st_flag = DBM_INSERT; + int argn; + DBM *db; + datum key; + datum content; + + flags = O_RDWR; + argn = 0; + + while ((opt = getopt(argc, argv, "acdfFm:rstvx")) != ':') { + switch (opt) { + case 'a': + what = SCAN; + break; + case 'c': + flags |= O_CREAT; + break; + case 'd': + what = DELETE; + break; + case 'f': + what = FETCH; + break; + case 'F': + what = REGEXP; + break; + case 'm': + flags &= ~(000007); + if (strcmp(optarg, "r") == 0) + flags |= O_RDONLY; + else if (strcmp(optarg, "w") == 0) + flags |= O_WRONLY; + else if (strcmp(optarg, "rw") == 0) + flags |= O_RDWR; + else { + fprintf(stderr, "Invalid mode: \"%s\"\n", optarg); + giveusage = 1; + } + break; + case 'r': + st_flag = DBM_REPLACE; + break; + case 's': + what = STORE; + break; + case 't': + flags |= O_TRUNC; + break; + case 'v': + verbose = 1; + break; + case 'x': + flags |= O_EXCL; + break; + case '!': + giveusage = 1; + break; + case '?': + if (argn < 3) + comarg[argn++] = optarg; + else { + fprintf(stderr, "Too many arguments.\n"); + giveusage = 1; + } + break; + } + } + + if (giveusage || what == YOW || argn < 1) { + fprintf(stderr, "Usage: %s database [-m r|w|rw] [-crtx] -a|-d|-f|-F|-s [key [content]]\n", argv[0]); + exit(-1); + } + + if ((db = dbm_open(comarg[0], flags, 0777)) == NULL) { + fprintf(stderr, "Error opening database \"%s\"\n", comarg[0]); + exit(-1); + } + + if (argn > 1) + key = read_datum(comarg[1]); + if (argn > 2) + content = read_datum(comarg[2]); + + switch (what) { + + case SCAN: + key = dbm_firstkey(db); + if (dbm_error(db)) { + fprintf(stderr, "Error when fetching first key\n"); + goto db_exit; + } + while (key.dptr != NULL) { + content = dbm_fetch(db, key); + if (dbm_error(db)) { + fprintf(stderr, "Error when fetching "); + print_datum(key); + printf("\n"); + goto db_exit; + } + print_datum(key); + printf(": "); + print_datum(content); + printf("\n"); + if (dbm_error(db)) { + fprintf(stderr, "Error when fetching next key\n"); + goto db_exit; + } + key = dbm_nextkey(db); + } + break; + + case REGEXP: + if (argn < 2) { + fprintf(stderr, "Missing regular expression.\n"); + goto db_exit; + } + if (re_comp(comarg[1])) { + fprintf(stderr, "Invalid regular expression\n"); + goto db_exit; + } + key = dbm_firstkey(db); + if (dbm_error(db)) { + fprintf(stderr, "Error when fetching first key\n"); + goto db_exit; + } + while (key.dptr != NULL) { + if (re_exec(key2s(key))) { + content = dbm_fetch(db, key); + if (dbm_error(db)) { + fprintf(stderr, "Error when fetching "); + print_datum(key); + printf("\n"); + goto db_exit; + } + print_datum(key); + printf(": "); + print_datum(content); + printf("\n"); + if (dbm_error(db)) { + fprintf(stderr, "Error when fetching next key\n"); + goto db_exit; + } + } + key = dbm_nextkey(db); + } + break; + + case FETCH: + if (argn < 2) { + fprintf(stderr, "Missing fetch key.\n"); + goto db_exit; + } + content = dbm_fetch(db, key); + if (dbm_error(db)) { + fprintf(stderr, "Error when fetching "); + print_datum(key); + printf("\n"); + goto db_exit; + } + if (content.dptr == NULL) { + fprintf(stderr, "Cannot find "); + print_datum(key); + printf("\n"); + goto db_exit; + } + print_datum(key); + printf(": "); + print_datum(content); + printf("\n"); + break; + + case DELETE: + if (argn < 2) { + fprintf(stderr, "Missing delete key.\n"); + goto db_exit; + } + if (dbm_delete(db, key) || dbm_error(db)) { + fprintf(stderr, "Error when deleting "); + print_datum(key); + printf("\n"); + goto db_exit; + } + if (verbose) { + print_datum(key); + printf(": DELETED\n"); + } + break; + + case STORE: + if (argn < 3) { + fprintf(stderr, "Missing key and/or content.\n"); + goto db_exit; + } + if (dbm_store(db, key, content, st_flag) || dbm_error(db)) { + fprintf(stderr, "Error when storing "); + print_datum(key); + printf("\n"); + goto db_exit; + } + if (verbose) { + print_datum(key); + printf(": "); + print_datum(content); + printf(" STORED\n"); + } + break; + } db_exit: - dbm_clearerr(db); - dbm_close(db); - if (dbm_error(db)) { - fprintf(stderr, "Error closing database \"%s\"\n", comarg[0]); - exit(-1); - } + dbm_clearerr(db); + dbm_close(db); + if (dbm_error(db)) { + fprintf(stderr, "Error closing database \"%s\"\n", comarg[0]); + exit(-1); + } } diff -Nru perl-5.32.1/ext/SDBM_File/dbu.c perl-5.34.0/ext/SDBM_File/dbu.c --- perl-5.32.1/ext/SDBM_File/dbu.c 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/SDBM_File/dbu.c 2021-01-20 23:04:44.000000000 +0000 @@ -28,30 +28,30 @@ #define LINEMAX 8192 typedef struct { - char *sname; - int scode; - int flags; + char *sname; + int scode; + int flags; } cmd; static cmd cmds[] = { - "fetch", DLOOK, O_RDONLY, - "get", DLOOK, O_RDONLY, - "look", DLOOK, O_RDONLY, - "add", DINSERT, O_RDWR, - "insert", DINSERT, O_RDWR, - "store", DINSERT, O_RDWR, - "delete", DDELETE, O_RDWR, - "remove", DDELETE, O_RDWR, - "dump", DCAT, O_RDONLY, - "list", DCAT, O_RDONLY, - "cat", DCAT, O_RDONLY, - "creat", DCREAT, O_RDWR | O_CREAT | O_TRUNC, - "new", DCREAT, O_RDWR | O_CREAT | O_TRUNC, - "build", DBUILD, O_RDWR | O_CREAT, - "squash", DPRESS, O_RDWR, - "compact", DPRESS, O_RDWR, - "compress", DPRESS, O_RDWR + "fetch", DLOOK, O_RDONLY, + "get", DLOOK, O_RDONLY, + "look", DLOOK, O_RDONLY, + "add", DINSERT, O_RDWR, + "insert", DINSERT, O_RDWR, + "store", DINSERT, O_RDWR, + "delete", DDELETE, O_RDWR, + "remove", DDELETE, O_RDWR, + "dump", DCAT, O_RDONLY, + "list", DCAT, O_RDONLY, + "cat", DCAT, O_RDONLY, + "creat", DCREAT, O_RDWR | O_CREAT | O_TRUNC, + "new", DCREAT, O_RDWR | O_CREAT | O_TRUNC, + "build", DBUILD, O_RDWR | O_CREAT, + "squash", DPRESS, O_RDWR, + "compact", DPRESS, O_RDWR, + "compress", DPRESS, O_RDWR }; #define CTABSIZ (sizeof (cmds)/sizeof (cmd)) @@ -62,173 +62,173 @@ int main(int argc, char **argv) { - int c; - cmd *act; - extern int optind; - extern char *optarg; - - progname = argv[0]; - - while ((c = getopt(argc, argv, "R")) != EOF) - switch (c) { - case 'R': /* raw processing */ - rflag++; - break; - - default: - oops("usage: %s", usage); - break; - } - - if ((argc -= optind) < 2) - oops("usage: %s", usage); - - if ((act = parse(argv[optind])) == NULL) - badk(argv[optind]); - optind++; - doit(act, argv[optind]); - return 0; + int c; + cmd *act; + extern int optind; + extern char *optarg; + + progname = argv[0]; + + while ((c = getopt(argc, argv, "R")) != EOF) + switch (c) { + case 'R': /* raw processing */ + rflag++; + break; + + default: + oops("usage: %s", usage); + break; + } + + if ((argc -= optind) < 2) + oops("usage: %s", usage); + + if ((act = parse(argv[optind])) == NULL) + badk(argv[optind]); + optind++; + doit(act, argv[optind]); + return 0; } static void doit(cmd *act, char *file) { - datum key; - datum val; - DBM *db; - char *op; - int n; - char *line; + datum key; + datum val; + DBM *db; + char *op; + int n; + char *line; #ifdef TIME - long start; - extern long time(); + long start; + extern long time(); #endif - if ((db = dbm_open(file, act->flags, 0644)) == NULL) - oops("cannot open: %s", file); + if ((db = dbm_open(file, act->flags, 0644)) == NULL) + oops("cannot open: %s", file); - if ((line = (char *) malloc(LINEMAX)) == NULL) - oops("%s: cannot get memory", "line alloc"); + if ((line = (char *) malloc(LINEMAX)) == NULL) + oops("%s: cannot get memory", "line alloc"); - switch (act->scode) { + switch (act->scode) { - case DLOOK: - while (fgets(line, LINEMAX, stdin) != NULL) { - n = strlen(line) - 1; - line[n] = 0; - key.dptr = line; - key.dsize = n; - val = dbm_fetch(db, key); - if (val.dptr != NULL) { - prdatum(stdout, val); - putchar('\n'); - continue; - } - prdatum(stderr, key); - fprintf(stderr, ": not found.\n"); - } - break; - case DINSERT: - break; - case DDELETE: - while (fgets(line, LINEMAX, stdin) != NULL) { - n = strlen(line) - 1; - line[n] = 0; - key.dptr = line; - key.dsize = n; - if (dbm_delete(db, key) == -1) { - prdatum(stderr, key); - fprintf(stderr, ": not found.\n"); - } - } - break; - case DCAT: - for (key = dbm_firstkey(db); key.dptr != 0; - key = dbm_nextkey(db)) { - prdatum(stdout, key); - putchar('\t'); - prdatum(stdout, dbm_fetch(db, key)); - putchar('\n'); - } - break; - case DBUILD: + case DLOOK: + while (fgets(line, LINEMAX, stdin) != NULL) { + n = strlen(line) - 1; + line[n] = 0; + key.dptr = line; + key.dsize = n; + val = dbm_fetch(db, key); + if (val.dptr != NULL) { + prdatum(stdout, val); + putchar('\n'); + continue; + } + prdatum(stderr, key); + fprintf(stderr, ": not found.\n"); + } + break; + case DINSERT: + break; + case DDELETE: + while (fgets(line, LINEMAX, stdin) != NULL) { + n = strlen(line) - 1; + line[n] = 0; + key.dptr = line; + key.dsize = n; + if (dbm_delete(db, key) == -1) { + prdatum(stderr, key); + fprintf(stderr, ": not found.\n"); + } + } + break; + case DCAT: + for (key = dbm_firstkey(db); key.dptr != 0; + key = dbm_nextkey(db)) { + prdatum(stdout, key); + putchar('\t'); + prdatum(stdout, dbm_fetch(db, key)); + putchar('\n'); + } + break; + case DBUILD: #ifdef TIME - start = time(0); + start = time(0); #endif - while (fgets(line, LINEMAX, stdin) != NULL) { - n = strlen(line) - 1; - line[n] = 0; - key.dptr = line; - if ((op = strchr(line, '\t')) != 0) { - key.dsize = op - line; - *op++ = 0; - val.dptr = op; - val.dsize = line + n - op; - } - else - oops("bad input; %s", line); - - if (dbm_store(db, key, val, DBM_REPLACE) < 0) { - prdatum(stderr, key); - fprintf(stderr, ": "); - oops("store: %s", "failed"); - } - } + while (fgets(line, LINEMAX, stdin) != NULL) { + n = strlen(line) - 1; + line[n] = 0; + key.dptr = line; + if ((op = strchr(line, '\t')) != 0) { + key.dsize = op - line; + *op++ = 0; + val.dptr = op; + val.dsize = line + n - op; + } + else + oops("bad input; %s", line); + + if (dbm_store(db, key, val, DBM_REPLACE) < 0) { + prdatum(stderr, key); + fprintf(stderr, ": "); + oops("store: %s", "failed"); + } + } #ifdef TIME - printf("done: %d seconds.\n", time(0) - start); + printf("done: %d seconds.\n", time(0) - start); #endif - break; - case DPRESS: - break; - case DCREAT: - break; - } + break; + case DPRESS: + break; + case DCREAT: + break; + } - dbm_close(db); + dbm_close(db); } static void badk(char *word) { - int i; + int i; - if (progname) - fprintf(stderr, "%s: ", progname); - fprintf(stderr, "bad keywd %s. use one of\n", word); - for (i = 0; i < (int)CTABSIZ; i++) - fprintf(stderr, "%-8s%c", cmds[i].sname, - ((i + 1) % 6 == 0) ? '\n' : ' '); - fprintf(stderr, "\n"); - exit(1); - /*NOTREACHED*/ + if (progname) + fprintf(stderr, "%s: ", progname); + fprintf(stderr, "bad keywd %s. use one of\n", word); + for (i = 0; i < (int)CTABSIZ; i++) + fprintf(stderr, "%-8s%c", cmds[i].sname, + ((i + 1) % 6 == 0) ? '\n' : ' '); + fprintf(stderr, "\n"); + exit(1); + /*NOTREACHED*/ } static cmd * parse(char *str) { - int i = CTABSIZ; - cmd *p; - - for (p = cmds; i--; p++) - if (strcmp(p->sname, str) == 0) - return p; - return NULL; + int i = CTABSIZ; + cmd *p; + + for (p = cmds; i--; p++) + if (strcmp(p->sname, str) == 0) + return p; + return NULL; } static void prdatum(FILE *stream, datum d) { - int c; - U8 *p = (U8 *) d.dptr; - int n = d.dsize; + int c; + U8 *p = (U8 *) d.dptr; + int n = d.dsize; - while (n--) { - c = *p++; + while (n--) { + c = *p++; #ifndef EBCDIC /* Meta notation doesn't make sense on EBCDIC systems*/ - if (c & 0200) { + if (c & 0200) { fprintf(stream, "M-"); c &= 0177; - } + } #endif /* \c notation applies for \0 . \x1f, plus \c? */ if (c <= 0x1F || c == QUESTION_MARK_CTRL) { @@ -237,12 +237,12 @@ #ifdef EBCDIC /* Instead of meta, use \x{} for non-printables */ else if (! isPRINT_A(c)) { fprintf(stream, "\\x{%02x}", c); - } + } #endif - else { /* must be an ASCII printable */ + else { /* must be an ASCII printable */ putc(c, stream); } - } + } } diff -Nru perl-5.32.1/ext/SDBM_File/sdbm.c perl-5.34.0/ext/SDBM_File/sdbm.c --- perl-5.32.1/ext/SDBM_File/sdbm.c 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/SDBM_File/sdbm.c 2021-01-20 23:04:44.000000000 +0000 @@ -29,7 +29,7 @@ */ #include /* See notes in perl.h about avoiding - extern int errno; */ + extern int errno; */ #ifdef __cplusplus extern "C" { #endif @@ -63,58 +63,58 @@ #define OFF_DIR(off) (long) (off) * DBLKSIZ static const long masks[] = { - 000000000000, 000000000001, 000000000003, 000000000007, - 000000000017, 000000000037, 000000000077, 000000000177, - 000000000377, 000000000777, 000000001777, 000000003777, - 000000007777, 000000017777, 000000037777, 000000077777, - 000000177777, 000000377777, 000000777777, 000001777777, - 000003777777, 000007777777, 000017777777, 000037777777, - 000077777777, 000177777777, 000377777777, 000777777777, - 001777777777, 003777777777, 007777777777, 017777777777 + 000000000000, 000000000001, 000000000003, 000000000007, + 000000000017, 000000000037, 000000000077, 000000000177, + 000000000377, 000000000777, 000000001777, 000000003777, + 000000007777, 000000017777, 000000037777, 000000077777, + 000000177777, 000000377777, 000000777777, 000001777777, + 000003777777, 000007777777, 000017777777, 000037777777, + 000077777777, 000177777777, 000377777777, 000777777777, + 001777777777, 003777777777, 007777777777, 017777777777 }; DBM * sdbm_open(char *file, int flags, int mode) { - DBM *db; - char *dirname; - char *pagname; - size_t filelen; - const size_t dirfext_size = sizeof(DIRFEXT ""); - const size_t pagfext_size = sizeof(PAGFEXT ""); + DBM *db; + char *dirname; + char *pagname; + size_t filelen; + const size_t dirfext_size = sizeof(DIRFEXT ""); + const size_t pagfext_size = sizeof(PAGFEXT ""); - if (file == NULL || !*file) - return errno = EINVAL, (DBM *) NULL; + if (file == NULL || !*file) + return errno = EINVAL, (DBM *) NULL; /* * need space for two separate filenames */ - filelen = strlen(file); + filelen = strlen(file); - if ((dirname = (char *) malloc(filelen + dirfext_size - + filelen + pagfext_size)) == NULL) - return errno = ENOMEM, (DBM *) NULL; + if ((dirname = (char *) malloc(filelen + dirfext_size + + filelen + pagfext_size)) == NULL) + return errno = ENOMEM, (DBM *) NULL; /* * build the file names */ - memcpy(dirname, file, filelen); - memcpy(dirname + filelen, DIRFEXT, dirfext_size); - pagname = dirname + filelen + dirfext_size; - memcpy(pagname, file, filelen); - memcpy(pagname + filelen, PAGFEXT, pagfext_size); - - db = sdbm_prep(dirname, pagname, flags, mode); - free((char *) dirname); - return db; + memcpy(dirname, file, filelen); + memcpy(dirname + filelen, DIRFEXT, dirfext_size); + pagname = dirname + filelen + dirfext_size; + memcpy(pagname, file, filelen); + memcpy(pagname + filelen, PAGFEXT, pagfext_size); + + db = sdbm_prep(dirname, pagname, flags, mode); + free((char *) dirname); + return db; } DBM * sdbm_prep(char *dirname, char *pagname, int flags, int mode) { - DBM *db; - struct stat dstat; + DBM *db; + struct stat dstat; - if ((db = (DBM *) malloc(sizeof(DBM))) == NULL) - return errno = ENOMEM, (DBM *) NULL; + if ((db = (DBM *) malloc(sizeof(DBM))) == NULL) + return errno = ENOMEM, (DBM *) NULL; db->flags = 0; db->hmask = 0; @@ -125,158 +125,158 @@ * as required by this package. Also set our internal * flag for RDONLY if needed. */ - if (flags & O_WRONLY) - flags = (flags & ~O_WRONLY) | O_RDWR; + if (flags & O_WRONLY) + flags = (flags & ~O_WRONLY) | O_RDWR; - else if ((flags & 03) == O_RDONLY) - db->flags = DBM_RDONLY; + else if ((flags & 03) == O_RDONLY) + db->flags = DBM_RDONLY; /* * open the files in sequence, and stat the dirfile. * If we fail anywhere, undo everything, return NULL. */ #if defined(OS2) || defined(MSDOS) || defined(WIN32) || defined(__CYGWIN__) - flags |= O_BINARY; + flags |= O_BINARY; # endif - if ((db->pagf = open(pagname, flags, mode)) > -1) { - if ((db->dirf = open(dirname, flags, mode)) > -1) { + if ((db->pagf = open(pagname, flags, mode)) > -1) { + if ((db->dirf = open(dirname, flags, mode)) > -1) { /* * need the dirfile size to establish max bit number. */ - if (fstat(db->dirf, &dstat) == 0) { + if (fstat(db->dirf, &dstat) == 0) { /* * zero size: either a fresh database, or one with a single, * unsplit data page: dirpage is all zeros. */ - db->dirbno = (!dstat.st_size) ? 0 : -1; - db->pagbno = -1; - db->maxbno = dstat.st_size * BYTESIZ; - - (void) memset(db->pagbuf, 0, PBLKSIZ); - (void) memset(db->dirbuf, 0, DBLKSIZ); - /* - * success - */ - return db; - } - (void) close(db->dirf); - } - (void) close(db->pagf); - } - free((char *) db); - return (DBM *) NULL; + db->dirbno = (!dstat.st_size) ? 0 : -1; + db->pagbno = -1; + db->maxbno = dstat.st_size * BYTESIZ; + + (void) memset(db->pagbuf, 0, PBLKSIZ); + (void) memset(db->dirbuf, 0, DBLKSIZ); + /* + * success + */ + return db; + } + (void) close(db->dirf); + } + (void) close(db->pagf); + } + free((char *) db); + return (DBM *) NULL; } void sdbm_close(DBM *db) { - if (db == NULL) - errno = EINVAL; - else { - (void) close(db->dirf); - (void) close(db->pagf); - free((char *) db); - } + if (db == NULL) + errno = EINVAL; + else { + (void) close(db->dirf); + (void) close(db->pagf); + free((char *) db); + } } datum sdbm_fetch(DBM *db, datum key) { - if (db == NULL || bad(key)) - return errno = EINVAL, nullitem; + if (db == NULL || bad(key)) + return errno = EINVAL, nullitem; - if (getpage(db, exhash(key))) - return getpair(db->pagbuf, key); + if (getpage(db, exhash(key))) + return getpair(db->pagbuf, key); - return ioerr(db), nullitem; + return ioerr(db), nullitem; } int sdbm_exists(DBM *db, datum key) { - if (db == NULL || bad(key)) - return errno = EINVAL, -1; + if (db == NULL || bad(key)) + return errno = EINVAL, -1; - if (getpage(db, exhash(key))) - return exipair(db->pagbuf, key); + if (getpage(db, exhash(key))) + return exipair(db->pagbuf, key); - return ioerr(db), -1; + return ioerr(db), -1; } int sdbm_delete(DBM *db, datum key) { - if (db == NULL || bad(key)) - return errno = EINVAL, -1; - if (sdbm_rdonly(db)) - return errno = EPERM, -1; - - if (getpage(db, exhash(key))) { - if (!delpair(db->pagbuf, key)) - return -1; + if (db == NULL || bad(key)) + return errno = EINVAL, -1; + if (sdbm_rdonly(db)) + return errno = EPERM, -1; + + if (getpage(db, exhash(key))) { + if (!delpair(db->pagbuf, key)) + return -1; /* * update the page file */ - if (lseek(db->pagf, OFF_PAG(db->pagbno), SEEK_SET) < 0 - || write(db->pagf, db->pagbuf, PBLKSIZ) < 0) - return ioerr(db), -1; + if (lseek(db->pagf, OFF_PAG(db->pagbno), SEEK_SET) < 0 + || write(db->pagf, db->pagbuf, PBLKSIZ) < 0) + return ioerr(db), -1; - return 0; - } + return 0; + } - return ioerr(db), -1; + return ioerr(db), -1; } int sdbm_store(DBM *db, datum key, datum val, int flags) { - int need; - long hash; + int need; + long hash; - if (db == NULL || bad(key)) - return errno = EINVAL, -1; - if (sdbm_rdonly(db)) - return errno = EPERM, -1; + if (db == NULL || bad(key)) + return errno = EINVAL, -1; + if (sdbm_rdonly(db)) + return errno = EPERM, -1; - need = key.dsize + val.dsize; + need = key.dsize + val.dsize; /* * is the pair too big (or too small) for this database ?? */ - if (need < 0 || need > PAIRMAX) - return errno = EINVAL, -1; + if (need < 0 || need > PAIRMAX) + return errno = EINVAL, -1; - if (getpage(db, (hash = exhash(key)))) { + if (getpage(db, (hash = exhash(key)))) { /* * if we need to replace, delete the key/data pair * first. If it is not there, ignore. */ - if (flags == DBM_REPLACE) - (void) delpair(db->pagbuf, key); + if (flags == DBM_REPLACE) + (void) delpair(db->pagbuf, key); #ifdef SEEDUPS - else if (duppair(db->pagbuf, key)) - return 1; + else if (duppair(db->pagbuf, key)) + return 1; #endif /* * if we do not have enough room, we have to split. */ - if (!fitpair(db->pagbuf, need)) - if (!makroom(db, hash, need)) - return ioerr(db), -1; + if (!fitpair(db->pagbuf, need)) + if (!makroom(db, hash, need)) + return ioerr(db), -1; /* * we have enough room or split is successful. insert the key, * and update the page file. */ - (void) putpair(db->pagbuf, key, val); + (void) putpair(db->pagbuf, key, val); - if (lseek(db->pagf, OFF_PAG(db->pagbno), SEEK_SET) < 0 - || write(db->pagf, db->pagbuf, PBLKSIZ) < 0) - return ioerr(db), -1; - /* - * success - */ - return 0; - } + if (lseek(db->pagf, OFF_PAG(db->pagbno), SEEK_SET) < 0 + || write(db->pagf, db->pagbuf, PBLKSIZ) < 0) + return ioerr(db), -1; + /* + * success + */ + return 0; + } - return ioerr(db), -1; + return ioerr(db), -1; } /* @@ -287,28 +287,28 @@ static int makroom(DBM *db, long int hash, int need) { - long newp; - char twin[PBLKSIZ]; + long newp; + char twin[PBLKSIZ]; #if defined(DOSISH) || defined(WIN32) - char zer[PBLKSIZ]; - long oldtail; + char zer[PBLKSIZ]; + long oldtail; #endif - char *pag = db->pagbuf; - char *New = twin; - int smax = SPLTMAX; + char *pag = db->pagbuf; + char *New = twin; + int smax = SPLTMAX; #ifdef BADMESS - int rc; + int rc; #endif - do { + do { /* * split the current page */ - (void) splpage(pag, New, db->hmask + 1); + (void) splpage(pag, New, db->hmask + 1); /* * address of the new page */ - newp = (hash & db->hmask) | (db->hmask + 1); + newp = (hash & db->hmask) | (db->hmask + 1); /* * write delay, read avoidance/cache shuffle: @@ -320,65 +320,65 @@ */ #if defined(DOSISH) || defined(WIN32) - /* - * Fill hole with 0 if made it. - * (hole is NOT read as 0) - */ - oldtail = lseek(db->pagf, 0L, SEEK_END); - memset(zer, 0, PBLKSIZ); - while (OFF_PAG(newp) > oldtail) { - if (lseek(db->pagf, 0L, SEEK_END) < 0 || - write(db->pagf, zer, PBLKSIZ) < 0) { - - return 0; - } - oldtail += PBLKSIZ; - } + /* + * Fill hole with 0 if made it. + * (hole is NOT read as 0) + */ + oldtail = lseek(db->pagf, 0L, SEEK_END); + memset(zer, 0, PBLKSIZ); + while (OFF_PAG(newp) > oldtail) { + if (lseek(db->pagf, 0L, SEEK_END) < 0 || + write(db->pagf, zer, PBLKSIZ) < 0) { + + return 0; + } + oldtail += PBLKSIZ; + } #endif - if (hash & (db->hmask + 1)) { - if (lseek(db->pagf, OFF_PAG(db->pagbno), SEEK_SET) < 0 - || write(db->pagf, db->pagbuf, PBLKSIZ) < 0) - return 0; - db->pagbno = newp; - (void) memcpy(pag, New, PBLKSIZ); - } - else if (lseek(db->pagf, OFF_PAG(newp), SEEK_SET) < 0 - || write(db->pagf, New, PBLKSIZ) < 0) - return 0; + if (hash & (db->hmask + 1)) { + if (lseek(db->pagf, OFF_PAG(db->pagbno), SEEK_SET) < 0 + || write(db->pagf, db->pagbuf, PBLKSIZ) < 0) + return 0; + db->pagbno = newp; + (void) memcpy(pag, New, PBLKSIZ); + } + else if (lseek(db->pagf, OFF_PAG(newp), SEEK_SET) < 0 + || write(db->pagf, New, PBLKSIZ) < 0) + return 0; - if (!setdbit(db, db->curbit)) - return 0; + if (!setdbit(db, db->curbit)) + return 0; /* * see if we have enough room now */ - if (fitpair(pag, need)) - return 1; + if (fitpair(pag, need)) + return 1; /* * try again... update curbit and hmask as getpage would have * done. because of our update of the current page, we do not * need to read in anything. BUT we have to write the current * [deferred] page out, as the window of failure is too great. */ - db->curbit = 2 * db->curbit + - ((hash & (db->hmask + 1)) ? 2 : 1); - db->hmask |= db->hmask + 1; - - if (lseek(db->pagf, OFF_PAG(db->pagbno), SEEK_SET) < 0 - || write(db->pagf, db->pagbuf, PBLKSIZ) < 0) - return 0; + db->curbit = 2 * db->curbit + + ((hash & (db->hmask + 1)) ? 2 : 1); + db->hmask |= db->hmask + 1; + + if (lseek(db->pagf, OFF_PAG(db->pagbno), SEEK_SET) < 0 + || write(db->pagf, db->pagbuf, PBLKSIZ) < 0) + return 0; - } while (--smax); + } while (--smax); /* * if we are here, this is real bad news. After SPLTMAX splits, * we still cannot fit the key. say goodnight. */ #ifdef BADMESS - rc = write(2, "sdbm: cannot insert after SPLTMAX attempts.\n", 44); - /* PERL_UNUSED_VAR() or PERL_UNUSED_RESULT() would be - * useful here but that would mean pulling in perl.h */ - (void)rc; + rc = write(2, "sdbm: cannot insert after SPLTMAX attempts.\n", 44); + /* PERL_UNUSED_VAR() or PERL_UNUSED_RESULT() would be + * useful here but that would mean pulling in perl.h */ + (void)rc; #endif - return 0; + return 0; } @@ -389,33 +389,33 @@ datum sdbm_firstkey(DBM *db) { - if (db == NULL) - return errno = EINVAL, nullitem; + if (db == NULL) + return errno = EINVAL, nullitem; /* * start at page 0 */ - if (lseek(db->pagf, OFF_PAG(0), SEEK_SET) < 0 - || read(db->pagf, db->pagbuf, PBLKSIZ) < 0) - return ioerr(db), nullitem; + if (lseek(db->pagf, OFF_PAG(0), SEEK_SET) < 0 + || read(db->pagf, db->pagbuf, PBLKSIZ) < 0) + return ioerr(db), nullitem; if (!chkpage(db->pagbuf)) { errno = EINVAL; ioerr(db); db->pagbno = -1; return nullitem; } - db->pagbno = 0; - db->blkptr = 0; - db->keyptr = 0; + db->pagbno = 0; + db->blkptr = 0; + db->keyptr = 0; - return getnext(db); + return getnext(db); } datum sdbm_nextkey(DBM *db) { - if (db == NULL) - return errno = EINVAL, nullitem; - return getnext(db); + if (db == NULL) + return errno = EINVAL, nullitem; + return getnext(db); } /* @@ -424,106 +424,106 @@ static int getpage(DBM *db, long int hash) { - int hbit; - long dbit; - long pagb; + int hbit; + long dbit; + long pagb; - dbit = 0; - hbit = 0; - while (dbit < db->maxbno && getdbit(db, dbit)) - dbit = 2 * dbit + ((hash & (1 << hbit++)) ? 2 : 1); + dbit = 0; + hbit = 0; + while (dbit < db->maxbno && getdbit(db, dbit)) + dbit = 2 * dbit + ((hash & (1 << hbit++)) ? 2 : 1); - debug(("dbit: %d...", dbit)); + debug(("dbit: %d...", dbit)); - db->curbit = dbit; - db->hmask = masks[hbit]; + db->curbit = dbit; + db->hmask = masks[hbit]; - pagb = hash & db->hmask; + pagb = hash & db->hmask; /* * see if the block we need is already in memory. * note: this lookaside cache has about 10% hit rate. */ - if (pagb != db->pagbno) { + if (pagb != db->pagbno) { /* * note: here, we assume a "hole" is read as 0s. * if not, must zero pagbuf first. */ - if (lseek(db->pagf, OFF_PAG(pagb), SEEK_SET) < 0 - || read(db->pagf, db->pagbuf, PBLKSIZ) < 0) - return 0; - if (!chkpage(db->pagbuf)) { + if (lseek(db->pagf, OFF_PAG(pagb), SEEK_SET) < 0 + || read(db->pagf, db->pagbuf, PBLKSIZ) < 0) + return 0; + if (!chkpage(db->pagbuf)) { errno = EINVAL; db->pagbno = -1; ioerr(db); return 0; } - db->pagbno = pagb; + db->pagbno = pagb; - debug(("pag read: %d\n", pagb)); - } - return 1; + debug(("pag read: %d\n", pagb)); + } + return 1; } static int getdbit(DBM *db, long int dbit) { - long c; - long dirb; + long c; + long dirb; - c = dbit / BYTESIZ; - dirb = c / DBLKSIZ; + c = dbit / BYTESIZ; + dirb = c / DBLKSIZ; - if (dirb != db->dirbno) { - int got; - if (lseek(db->dirf, OFF_DIR(dirb), SEEK_SET) < 0 - || (got=read(db->dirf, db->dirbuf, DBLKSIZ)) < 0) - return 0; - if (got==0) - memset(db->dirbuf,0,DBLKSIZ); - db->dirbno = dirb; + if (dirb != db->dirbno) { + int got; + if (lseek(db->dirf, OFF_DIR(dirb), SEEK_SET) < 0 + || (got=read(db->dirf, db->dirbuf, DBLKSIZ)) < 0) + return 0; + if (got==0) + memset(db->dirbuf,0,DBLKSIZ); + db->dirbno = dirb; - debug(("dir read: %d\n", dirb)); - } + debug(("dir read: %d\n", dirb)); + } - return db->dirbuf[c % DBLKSIZ] & (1 << dbit % BYTESIZ); + return db->dirbuf[c % DBLKSIZ] & (1 << dbit % BYTESIZ); } static int setdbit(DBM *db, long int dbit) { - long c; - long dirb; + long c; + long dirb; - c = dbit / BYTESIZ; - dirb = c / DBLKSIZ; + c = dbit / BYTESIZ; + dirb = c / DBLKSIZ; - if (dirb != db->dirbno) { - int got; - if (lseek(db->dirf, OFF_DIR(dirb), SEEK_SET) < 0 - || (got=read(db->dirf, db->dirbuf, DBLKSIZ)) < 0) - return 0; - if (got==0) - memset(db->dirbuf,0,DBLKSIZ); - db->dirbno = dirb; + if (dirb != db->dirbno) { + int got; + if (lseek(db->dirf, OFF_DIR(dirb), SEEK_SET) < 0 + || (got=read(db->dirf, db->dirbuf, DBLKSIZ)) < 0) + return 0; + if (got==0) + memset(db->dirbuf,0,DBLKSIZ); + db->dirbno = dirb; - debug(("dir read: %d\n", dirb)); - } + debug(("dir read: %d\n", dirb)); + } - db->dirbuf[c % DBLKSIZ] |= (1 << dbit % BYTESIZ); + db->dirbuf[c % DBLKSIZ] |= (1 << dbit % BYTESIZ); #if 0 - if (dbit >= db->maxbno) - db->maxbno += DBLKSIZ * BYTESIZ; + if (dbit >= db->maxbno) + db->maxbno += DBLKSIZ * BYTESIZ; #else - if (OFF_DIR((dirb+1))*BYTESIZ > db->maxbno) - db->maxbno=OFF_DIR((dirb+1))*BYTESIZ; + if (OFF_DIR((dirb+1))*BYTESIZ > db->maxbno) + db->maxbno=OFF_DIR((dirb+1))*BYTESIZ; #endif - if (lseek(db->dirf, OFF_DIR(dirb), SEEK_SET) < 0 - || write(db->dirf, db->dirbuf, DBLKSIZ) < 0) - return 0; + if (lseek(db->dirf, OFF_DIR(dirb), SEEK_SET) < 0 + || write(db->dirf, db->dirbuf, DBLKSIZ) < 0) + return 0; - return 1; + return 1; } /* @@ -533,33 +533,33 @@ static datum getnext(DBM *db) { - datum key; + datum key; - for (;;) { - db->keyptr++; - key = getnkey(db->pagbuf, db->keyptr); - if (key.dptr != NULL) - return key; + for (;;) { + db->keyptr++; + key = getnkey(db->pagbuf, db->keyptr); + if (key.dptr != NULL) + return key; /* * we either run out, or there is nothing on this page.. * try the next one... If we lost our position on the * file, we will have to seek. */ - db->keyptr = 0; - if (db->pagbno != db->blkptr++) - if (lseek(db->pagf, OFF_PAG(db->blkptr), SEEK_SET) < 0) - break; - db->pagbno = db->blkptr; - if (read(db->pagf, db->pagbuf, PBLKSIZ) <= 0) - break; - if (!chkpage(db->pagbuf)) { + db->keyptr = 0; + if (db->pagbno != db->blkptr++) + if (lseek(db->pagf, OFF_PAG(db->blkptr), SEEK_SET) < 0) + break; + db->pagbno = db->blkptr; + if (read(db->pagf, db->pagbuf, PBLKSIZ) <= 0) + break; + if (!chkpage(db->pagbuf)) { errno = EINVAL; db->pagbno = -1; ioerr(db); break; } - } + } - return ioerr(db), nullitem; + return ioerr(db), nullitem; } diff -Nru perl-5.32.1/ext/SDBM_File/sdbm.h perl-5.34.0/ext/SDBM_File/sdbm.h --- perl-5.32.1/ext/SDBM_File/sdbm.h 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/SDBM_File/sdbm.h 2021-01-20 23:04:44.000000000 +0000 @@ -11,7 +11,7 @@ #define PBLKSIZ 1024 #define PAIRMAX 1008 /* arbitrary on PBLKSIZ-N */ #define SPLTMAX 10 /* maximum allowed splits */ - /* for a single insertion */ + /* for a single insertion */ #ifdef VMS #define DIRFEXT ".sdbm_dir" #else @@ -20,19 +20,19 @@ #define PAGFEXT ".pag" typedef struct { - int dirf; /* directory file descriptor */ - int pagf; /* page file descriptor */ - int flags; /* status/error flags, see below */ - long maxbno; /* size of dirfile in bits */ - long curbit; /* current bit number */ - long hmask; /* current hash mask */ - long blkptr; /* current block for nextkey */ - int keyptr; /* current key for nextkey */ - long blkno; /* current page to read/write */ - long pagbno; /* current page in pagbuf */ - char pagbuf[PBLKSIZ]; /* page file block buffer */ - long dirbno; /* current block in dirbuf */ - char dirbuf[DBLKSIZ]; /* directory file block buffer */ + int dirf; /* directory file descriptor */ + int pagf; /* page file descriptor */ + int flags; /* status/error flags, see below */ + long maxbno; /* size of dirfile in bits */ + long curbit; /* current bit number */ + long hmask; /* current hash mask */ + long blkptr; /* current block for nextkey */ + int keyptr; /* current key for nextkey */ + long blkno; /* current page to read/write */ + long pagbno; /* current page in pagbuf */ + char pagbuf[PBLKSIZ]; /* page file block buffer */ + long dirbno; /* current block in dirbuf */ + char dirbuf[DBLKSIZ]; /* directory file block buffer */ } DBM; #define DBM_RDONLY 0x1 /* data base open read-only */ @@ -50,8 +50,8 @@ #define sdbm_pagfno(db) ((db)->pagf) typedef struct { - const char *dptr; - int dsize; + const char *dptr; + int dsize; } datum; extern const datum nullitem; diff -Nru perl-5.32.1/ext/SDBM_File/t/corrupt.t perl-5.34.0/ext/SDBM_File/t/corrupt.t --- perl-5.32.1/ext/SDBM_File/t/corrupt.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/SDBM_File/t/corrupt.t 2020-10-04 22:17:13.000000000 +0000 @@ -16,7 +16,7 @@ my ($dirfh, $dirname) = tempfile(UNLINK => 1); my ($pagfh, $pagname) = tempfile(UNLINK => 1); close $dirfh; -close pagefh; +close $pagfh; # these might only fail under ASAN while (my $testdata = do { local $/ = "END\n"; ; }) { diff -Nru perl-5.32.1/ext/SDBM_File/tune.h perl-5.34.0/ext/SDBM_File/tune.h --- perl-5.32.1/ext/SDBM_File/tune.h 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/SDBM_File/tune.h 2021-01-20 23:04:44.000000000 +0000 @@ -12,7 +12,7 @@ #define SEEDUPS /* always detect duplicates */ #define BADMESS /* generate a message for worst case: - cannot make room after SPLTMAX splits */ + cannot make room after SPLTMAX splits */ /* * misc */ diff -Nru perl-5.32.1/ext/SDBM_File/util.c perl-5.34.0/ext/SDBM_File/util.c --- perl-5.32.1/ext/SDBM_File/util.c 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/SDBM_File/util.c 2021-01-20 23:04:44.000000000 +0000 @@ -8,40 +8,40 @@ void oops(char *s1, char *s2) { - extern int errno, sys_nerr; - extern char *sys_errlist[]; - extern char *progname; - - if (progname) - fprintf(stderr, "%s: ", progname); - fprintf(stderr, s1, s2); - if (errno > 0 && errno < sys_nerr) - fprintf(stderr, " (%s)", sys_errlist[errno]); - fprintf(stderr, "\n"); - exit(1); + extern int errno, sys_nerr; + extern char *sys_errlist[]; + extern char *progname; + + if (progname) + fprintf(stderr, "%s: ", progname); + fprintf(stderr, s1, s2); + if (errno > 0 && errno < sys_nerr) + fprintf(stderr, " (%s)", sys_errlist[errno]); + fprintf(stderr, "\n"); + exit(1); } int okpage(char *pag) { - unsigned n; - int off; - short *ino = (short *) pag; - - if ((n = ino[0]) > PBLKSIZ / sizeof(short)) - return 0; - - if (!n) - return 1; - - off = PBLKSIZ; - for (ino++; n; ino += 2) { - if (ino[0] > off || ino[1] > off || - ino[1] > ino[0]) - return 0; - off = ino[1]; - n -= 2; - } + unsigned n; + int off; + short *ino = (short *) pag; + + if ((n = ino[0]) > PBLKSIZ / sizeof(short)) + return 0; + + if (!n) + return 1; + + off = PBLKSIZ; + for (ino++; n; ino += 2) { + if (ino[0] > off || ino[1] > off || + ino[1] > ino[0]) + return 0; + off = ino[1]; + n -= 2; + } - return 1; + return 1; } diff -Nru perl-5.32.1/ext/Win32CORE/Win32CORE.c perl-5.34.0/ext/Win32CORE/Win32CORE.c --- perl-5.32.1/ext/Win32CORE/Win32CORE.c 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/Win32CORE/Win32CORE.c 2021-01-20 23:04:44.000000000 +0000 @@ -64,78 +64,78 @@ */ static const struct { - char Win32__GetCwd [sizeof("Win32::GetCwd")]; - char Win32__SetCwd [sizeof("Win32::SetCwd")]; - char Win32__GetNextAvailDrive [sizeof("Win32::GetNextAvailDrive")]; - char Win32__GetLastError [sizeof("Win32::GetLastError")]; - char Win32__SetLastError [sizeof("Win32::SetLastError")]; - char Win32__LoginName [sizeof("Win32::LoginName")]; - char Win32__NodeName [sizeof("Win32::NodeName")]; - char Win32__DomainName [sizeof("Win32::DomainName")]; - char Win32__FsType [sizeof("Win32::FsType")]; - char Win32__GetOSVersion [sizeof("Win32::GetOSVersion")]; - char Win32__IsWinNT [sizeof("Win32::IsWinNT")]; - char Win32__IsWin95 [sizeof("Win32::IsWin95")]; - char Win32__FormatMessage [sizeof("Win32::FormatMessage")]; - char Win32__Spawn [sizeof("Win32::Spawn")]; - char Win32__GetTickCount [sizeof("Win32::GetTickCount")]; - char Win32__GetShortPathName [sizeof("Win32::GetShortPathName")]; - char Win32__GetFullPathName [sizeof("Win32::GetFullPathName")]; - char Win32__GetLongPathName [sizeof("Win32::GetLongPathName")]; - char Win32__CopyFile [sizeof("Win32::CopyFile")]; - char Win32__Sleep [sizeof("Win32::Sleep")]; + char Win32__GetCwd [sizeof("Win32::GetCwd")]; + char Win32__SetCwd [sizeof("Win32::SetCwd")]; + char Win32__GetNextAvailDrive [sizeof("Win32::GetNextAvailDrive")]; + char Win32__GetLastError [sizeof("Win32::GetLastError")]; + char Win32__SetLastError [sizeof("Win32::SetLastError")]; + char Win32__LoginName [sizeof("Win32::LoginName")]; + char Win32__NodeName [sizeof("Win32::NodeName")]; + char Win32__DomainName [sizeof("Win32::DomainName")]; + char Win32__FsType [sizeof("Win32::FsType")]; + char Win32__GetOSVersion [sizeof("Win32::GetOSVersion")]; + char Win32__IsWinNT [sizeof("Win32::IsWinNT")]; + char Win32__IsWin95 [sizeof("Win32::IsWin95")]; + char Win32__FormatMessage [sizeof("Win32::FormatMessage")]; + char Win32__Spawn [sizeof("Win32::Spawn")]; + char Win32__GetTickCount [sizeof("Win32::GetTickCount")]; + char Win32__GetShortPathName [sizeof("Win32::GetShortPathName")]; + char Win32__GetFullPathName [sizeof("Win32::GetFullPathName")]; + char Win32__GetLongPathName [sizeof("Win32::GetLongPathName")]; + char Win32__CopyFile [sizeof("Win32::CopyFile")]; + char Win32__Sleep [sizeof("Win32::Sleep")]; } fnname_table = { - "Win32::GetCwd", - "Win32::SetCwd", - "Win32::GetNextAvailDrive", - "Win32::GetLastError", - "Win32::SetLastError", - "Win32::LoginName", - "Win32::NodeName", - "Win32::DomainName", - "Win32::FsType", - "Win32::GetOSVersion", - "Win32::IsWinNT", - "Win32::IsWin95", - "Win32::FormatMessage", - "Win32::Spawn", - "Win32::GetTickCount", - "Win32::GetShortPathName", - "Win32::GetFullPathName", - "Win32::GetLongPathName", - "Win32::CopyFile", - "Win32::Sleep" + "Win32::GetCwd", + "Win32::SetCwd", + "Win32::GetNextAvailDrive", + "Win32::GetLastError", + "Win32::SetLastError", + "Win32::LoginName", + "Win32::NodeName", + "Win32::DomainName", + "Win32::FsType", + "Win32::GetOSVersion", + "Win32::IsWinNT", + "Win32::IsWin95", + "Win32::FormatMessage", + "Win32::Spawn", + "Win32::GetTickCount", + "Win32::GetShortPathName", + "Win32::GetFullPathName", + "Win32::GetLongPathName", + "Win32::CopyFile", + "Win32::Sleep" }; static const unsigned char fnname_lens [] = { - sizeof("Win32::GetCwd"), - sizeof("Win32::SetCwd"), - sizeof("Win32::GetNextAvailDrive"), - sizeof("Win32::GetLastError"), - sizeof("Win32::SetLastError"), - sizeof("Win32::LoginName"), - sizeof("Win32::NodeName"), - sizeof("Win32::DomainName"), - sizeof("Win32::FsType"), - sizeof("Win32::GetOSVersion"), - sizeof("Win32::IsWinNT"), - sizeof("Win32::IsWin95"), - sizeof("Win32::FormatMessage"), - sizeof("Win32::Spawn"), - sizeof("Win32::GetTickCount"), - sizeof("Win32::GetShortPathName"), - sizeof("Win32::GetFullPathName"), - sizeof("Win32::GetLongPathName"), - sizeof("Win32::CopyFile"), - sizeof("Win32::Sleep") + sizeof("Win32::GetCwd"), + sizeof("Win32::SetCwd"), + sizeof("Win32::GetNextAvailDrive"), + sizeof("Win32::GetLastError"), + sizeof("Win32::SetLastError"), + sizeof("Win32::LoginName"), + sizeof("Win32::NodeName"), + sizeof("Win32::DomainName"), + sizeof("Win32::FsType"), + sizeof("Win32::GetOSVersion"), + sizeof("Win32::IsWinNT"), + sizeof("Win32::IsWin95"), + sizeof("Win32::FormatMessage"), + sizeof("Win32::Spawn"), + sizeof("Win32::GetTickCount"), + sizeof("Win32::GetShortPathName"), + sizeof("Win32::GetFullPathName"), + sizeof("Win32::GetLongPathName"), + sizeof("Win32::CopyFile"), + sizeof("Win32::Sleep") }; const unsigned char * len = (const unsigned char *)&fnname_lens; const char * function = (char *)&fnname_table; while (function < (char *)&fnname_table + sizeof(fnname_table)) { - const char * const file = __FILE__; - CV * const cv = newXS(function, w32_CORE_all, file); - XSANY.any_ptr = (void *)function; - function += *len++; + const char * const file = __FILE__; + CV * const cv = newXS(function, w32_CORE_all, file); + XSANY.any_ptr = (void *)function; + function += *len++; } diff -Nru perl-5.32.1/ext/XS-APItest/APItest.pm perl-5.34.0/ext/XS-APItest/APItest.pm --- perl-5.32.1/ext/XS-APItest/APItest.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/XS-APItest/APItest.pm 2021-05-04 06:52:48.000000000 +0000 @@ -5,7 +5,7 @@ use warnings; use Carp; -our $VERSION = '1.09'; +our $VERSION = '1.16'; require XSLoader; diff -Nru perl-5.32.1/ext/XS-APItest/APItest.xs perl-5.34.0/ext/XS-APItest/APItest.xs --- perl-5.32.1/ext/XS-APItest/APItest.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/XS-APItest/APItest.xs 2021-05-04 06:52:48.000000000 +0000 @@ -374,10 +374,10 @@ SAVEGENERICSV(GvAV(MY_CXT.cscgv)); if (cur) { - I32 i; + Size_t i; AV *const new_av = newAV(); - for (i = 0; i <= av_tindex(cur); i++) { + for (i = 0; i < av_count(cur); i++) { av_store(new_av, i, newSVsv(*av_fetch(cur, i, 0))); } @@ -470,19 +470,25 @@ } STATIC void -my_rpeep (pTHX_ OP *o) +my_rpeep (pTHX_ OP *first) { dMY_CXT; + OP *o, *t; - if (!o) + if (!first) return; - MY_CXT.orig_rpeep(aTHX_ o); + MY_CXT.orig_rpeep(aTHX_ first); if (!MY_CXT.peep_recording) return; - for (; o; o = o->op_next) { + for (o = first, t = first; o; o = o->op_next, t = t->op_next) { + if (o->op_type == OP_CONST && cSVOPx_sv(o) && SvPOK(cSVOPx_sv(o))) { + av_push(MY_CXT.rpeep_recorder, newSVsv(cSVOPx_sv(o))); + } + o = o->op_next; + if (!o || o == t) break; if (o->op_type == OP_CONST && cSVOPx_sv(o) && SvPOK(cSVOPx_sv(o))) { av_push(MY_CXT.rpeep_recorder, newSVsv(cSVOPx_sv(o))); } @@ -2008,7 +2014,7 @@ OUTPUT: RETVAL -#if PERL_VERSION >= 9 +#if PERL_VERSION_GE(5,9,0) bool refcounted_he_exists(key, level=0) @@ -2350,6 +2356,18 @@ #endif void +print_long_doubleL() + CODE: +#ifdef HAS_LONG_DOUBLE + /* used to test we allow the length modifier required by the standard */ + long double val = 7.0; + printf("%5.3Lf\n",val); +#else + double val = 7.0; + printf("%5.3f\n",val); +#endif + +void print_int(val) int val CODE: @@ -6789,15 +6807,79 @@ OUTPUT: RETVAL +AV * +test_delimcpy(SV * from_sv, STRLEN trunc_from, char delim, STRLEN to_len, STRLEN trunc_to, char poison = '?') + PREINIT: + char * from; + I32 retlen; + char * from_pos_after_copy; + char * to; + CODE: + from = SvPV_nolen(from_sv); + Newx(to, to_len, char); + PoisonWith(to, to_len, char, poison); + assert(trunc_from <= SvCUR(from_sv)); + /* trunc_to allows us to throttle the output size available */ + assert(trunc_to <= to_len); + from_pos_after_copy = delimcpy(to, to + trunc_to, + from, from + trunc_from, + delim, &retlen); + RETVAL = newAV(); + sv_2mortal((SV*)RETVAL); + av_push(RETVAL, newSVpvn(to, to_len)); + av_push(RETVAL, newSVuv(retlen)); + av_push(RETVAL, newSVuv(from_pos_after_copy - from)); + Safefree(to); + OUTPUT: + RETVAL + +AV * +test_delimcpy_no_escape(SV * from_sv, STRLEN trunc_from, char delim, STRLEN to_len, STRLEN trunc_to, char poison = '?') + PREINIT: + char * from; + AV *av; + I32 retlen; + char * from_pos_after_copy; + char * to; + CODE: + from = SvPV_nolen(from_sv); + Newx(to, to_len, char); + PoisonWith(to, to_len, char, poison); + assert(trunc_from <= SvCUR(from_sv)); + /* trunc_to allows us to throttle the output size available */ + assert(trunc_to <= to_len); + from_pos_after_copy = delimcpy_no_escape(to, to + trunc_to, + from, from + trunc_from, + delim, &retlen); + av = newAV(); + av_push(av, newSVpvn(to, to_len)); + av_push(av, newSVuv(retlen)); + av_push(av, newSVuv(from_pos_after_copy - from)); + Safefree(to); + RETVAL = av; + OUTPUT: + RETVAL + SV * test_Gconvert(SV * number, SV * num_digits) PREINIT: char buffer[100]; int len; + int extras; CODE: len = (int) SvIV(num_digits); - if (len > 99) croak("Too long a number for test_Gconvert"); - if (len < 0) croak("Too short a number for test_Gconvert"); + /* To silence a -Wformat-overflow compiler warning we * + * make allowance for the following characters that may * + * appear, in addition to the digits of the significand: * + * a leading "-", a single byte radix point, "e-", the * + * terminating NULL, and a 3 or 4 digit exponent. * + * Ie, allow 8 bytes if nvtype is "double", otherwise 9 * + * bytes (as the exponent could then contain 4 digits ). */ + extras = sizeof(NV) == 8 ? 8 : 9; + if(len > 100 - extras) + croak("Too long a number for test_Gconvert"); + if (len < 0) + croak("Too short a number for test_Gconvert"); PERL_UNUSED_RESULT(Gconvert(SvNV(number), len, 0, /* No trailing zeroes */ buffer)); @@ -6877,6 +6959,31 @@ #endif +MODULE = XS::APItest PACKAGE = XS::APItest::RWMacro + +#if defined(USE_ITHREADS) + +void +compile_macros() + PREINIT: + perl_RnW1_mutex_t m; + perl_RnW1_mutex_t *pm = &m; + CODE: + PERL_RW_MUTEX_INIT(&m); + PERL_WRITE_LOCK(&m); + PERL_WRITE_UNLOCK(&m); + PERL_READ_LOCK(&m); + PERL_READ_UNLOCK(&m); + PERL_RW_MUTEX_DESTROY(&m); + PERL_RW_MUTEX_INIT(pm); + PERL_WRITE_LOCK(pm); + PERL_WRITE_UNLOCK(pm); + PERL_READ_LOCK(pm); + PERL_READ_UNLOCK(pm); + PERL_RW_MUTEX_DESTROY(pm); + +#endif + MODULE = XS::APItest PACKAGE = XS::APItest::HvMacro @@ -6911,6 +7018,7 @@ u64= U8TO64_LE(pv+ofs); RETVAL= (UV)u64; #else + PERL_UNUSED_VAR(u64); croak("not a 64 bit perl IVSIZE=%d",IVSIZE); #endif break; diff -Nru perl-5.32.1/ext/XS-APItest/t/clone-with-stack.t perl-5.34.0/ext/XS-APItest/t/clone-with-stack.t --- perl-5.32.1/ext/XS-APItest/t/clone-with-stack.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/XS-APItest/t/clone-with-stack.t 2020-10-24 18:43:34.000000000 +0000 @@ -10,7 +10,7 @@ # clone_with_stack creates a clone of the perl interpreter including # the stack, then destroys the original interpreter and runs the # remaining code using the new one. -# This is like doing a psuedo-fork and exiting the parent. +# This is like doing a pseudo-fork and exiting the parent. use Config; if (not $Config{'useithreads'}) { diff -Nru perl-5.32.1/ext/XS-APItest/t/delimcpy.t perl-5.34.0/ext/XS-APItest/t/delimcpy.t --- perl-5.32.1/ext/XS-APItest/t/delimcpy.t 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/ext/XS-APItest/t/delimcpy.t 2020-11-18 22:09:15.000000000 +0000 @@ -0,0 +1,193 @@ +#!perl -w +use warnings; +use strict; + +use Test::More; +use XS::APItest; + +sub expected($$$$) { + my ($copied, # What the copy should look like + $length, # but truncated to this, + $poison, # and filled with this so as to catch overruns + $actual_dest_length) # to this total number of bytes + = @_; + + return substr($copied, 0, $length) . ($poison x ($actual_dest_length - $length)); +} + +my $b = "\\"; +my $poison = '?'; +my $failure_return = 0x7FFF_FFFF; # I32 max +my $ret; + +# ib = innocent bystander; a character that isn't a delimiter nor an escape +my $ib = 'y'; + +foreach my $d ("x", "\0") { # Try both printable and NUL delimiters + my $source = $ib; + my $source_len = 1; + my $should_be = $source; + + $ret = test_delimcpy($source, $source_len, $d, $source_len, $source_len, $poison); + is($ret->[0], expected($source, $source_len, $poison, $source_len), + "Works when there is no delimiter at all"); + is($ret->[1], $source_len, "Destination length is correct"); + is($ret->[2], 1, "Source advance is correct"); + + $source .= $d; + $ret = test_delimcpy($source, $source_len, $d, $source_len, $source_len, $poison); + is($ret->[0], expected($source, $source_len, $poison, $source_len), + "Works when delimiter is just beyond the examined portion"); + is($ret->[1], $source_len, "Destination length is correct"); + is($ret->[2], 1, "Source advance is correct"); + + $should_be = $ib . $b; + $source = $should_be . $d; + $source_len = 2; + $ret = test_delimcpy($source, $source_len, $d, $source_len, $source_len, $poison); + is($ret->[0], expected($source, $source_len, $poison, $source_len), + "Works when delimiter is just beyond the examined portion, which" + . " ends in a backslash"); + is($ret->[1], $source_len, "Destination length is correct"); + is($ret->[2], 2, "Source advance is correct"); + + # Delimiter in first byte + my $actual_dest_len = 5; + $ret = test_delimcpy($d, 1, $d, $actual_dest_len, $actual_dest_len, $poison); + is($ret->[0], "\0" . $poison x ($actual_dest_len - 1), + "Copied correctly when delimiter is first character"); + is($ret->[1], 0, "0 bytes copied"); + is($ret->[2], 0, "0 bytes advanced"); + + # Now to more extensive tests. The source includes escaped delimiters + # (which should have one backslash stripped), and finally a delimiter with + # an even number of backslashes, so is not escaped + my $base_source = $b . $d . $b x 3 . $d . $b x 5 . $d . $b x 2 . $d; + $should_be = $d . $b x 2 . $d . $b x 4 . $d . $b x 2; + # byte counts: | || | |||| | || = 11 bytes + my $dest_len = 11; + + # The return from this function should be how many bytes did it advance + # the source pointer. This won't include the unescaped delimiter + my $source_advance = length($base_source) - 1; + + # Add some trailing non-special charss + $source = $base_source . ($ib x 6); + $source_len = length $source; + $actual_dest_len = $source_advance + 10; + + my $with_NUL = $should_be . "\0"; + my $trunc_dest_len = length $with_NUL; + + $ret = test_delimcpy($source, $source_len, + $d, $actual_dest_len, $trunc_dest_len+1, $poison); + is($ret->[0], expected($with_NUL, $trunc_dest_len, $poison, + $actual_dest_len), + "Stops at first unescaped delimiter; stripping off the escapes;" + . " destination has more than enough space for a safety NUL"); + is($ret->[1], $dest_len, "Destination length is correct"); + is($ret->[2], $source_advance, "Source advance is correct"); + + $ret = test_delimcpy($source, $source_len, $d, + $actual_dest_len, $trunc_dest_len, $poison); + is($ret->[0], expected($with_NUL, $trunc_dest_len, $poison, + $actual_dest_len), + "As above, but with just enough space for a safety NUL"); + is($ret->[1], $dest_len, "Destination length is correct"); + is($ret->[2], $source_advance, "Source advance is correct"); + + $trunc_dest_len--; + $ret = test_delimcpy($source, $source_len, + $d, $actual_dest_len, $trunc_dest_len, + $poison); + is($ret->[0], expected($should_be, $trunc_dest_len, $poison, + $actual_dest_len), + "As above, but not enough room for the safety NUL"); + is($ret->[1], $dest_len, "Destination length is correct"); + is($ret->[2], $source_advance, "Source advance is correct"); + + $trunc_dest_len--; + $ret = test_delimcpy($source, $source_len, + $d, $actual_dest_len, $trunc_dest_len, + $poison); + is($ret->[0], expected($should_be, $trunc_dest_len, $poison, + $actual_dest_len), + "As above, but not enough room for the final backslash"); + ok($ret->[1] > $trunc_dest_len, + "Error return is correctly > buffer length"); + is($ret->[2], $source_advance, "Source advance is correct"); + + # Keep trying shorter and shorter permissible dest lengths + do { + $trunc_dest_len--; + $ret = test_delimcpy($source, $source_len, + $d, $actual_dest_len, $trunc_dest_len, + $poison); + is($ret->[0], expected($should_be, $trunc_dest_len, $poison, + $actual_dest_len), + "Preceding test but room only for $trunc_dest_len bytes"); + ok($ret->[1] > $trunc_dest_len, + "Error return is correctly > buffer length"); + is($ret->[2], $source_advance, "Source advance is correct"); + } while ($trunc_dest_len > 0); +} + +# Repeat a few of the tests with a backslash delimiter, which means there +# is no possibiliby of an escape. And this escape-less form can be used to +# also do a general test on 'delimcpy_no_escape' +foreach my $d ("x", "\0", '\\') { + for my $func (qw(delimcpy delimcpy_no_escape)) { + next if $func eq 'delimcpy' && $d ne '\\'; + my $test_func = "test_$func"; + + my $source = $ib; + my $source_len = 1; + my $should_be = $source; + + $ret = eval "$test_func(\$source, \$source_len, \$d, \$source_len, \$source_len, \$poison)"; + is($ret->[0], expected($source, $source_len, $poison, $source_len), + "$func works when there is no delimiter at all"); + is($ret->[1], $source_len, "Destination length is correct"); + is($ret->[2], 1, "Source advance is correct"); + + $source .= $d; + $ret = eval "$test_func(\$source, \$source_len, \$d, \$source_len, \$source_len, \$poison)"; + is($ret->[0], expected($source, $source_len, $poison, $source_len), + "Works when delimiter is just beyond the examined portion"); + is($ret->[1], $source_len, "Destination length is correct"); + is($ret->[2], 1, "Source advance is correct"); + + # Delimiter in first byte + my $actual_dest_len = 5; + $ret = eval "$test_func(\$d, 1, \$d, \$actual_dest_len, \$actual_dest_len, \$poison)"; + is($ret->[0], "\0" . $poison x ($actual_dest_len - 1), + "Copied correctly when delimiter is first character"); + is($ret->[1], 0, "0 bytes copied"); + is($ret->[2], 0, "0 bytes advanced"); + + $source = $ib x 6; + my $len_sans_delim = length $source; + my $with_NULL = $source . "\0"; + $source .= $d . ($ib x 7); + $source_len = length $source; + $ret = eval "$test_func(\$source, \$source_len, \$d, \$source_len, \$source_len, \$poison)"; + is($ret->[0], expected($with_NULL, $len_sans_delim + 1, $poison, $source_len), + "$func works when delim is in middle of source, plenty of room"); + is($ret->[1], $len_sans_delim, "Destination length is correct"); + is($ret->[2], $len_sans_delim, "Source advance is correct"); + + $ret = eval "$test_func(\$source, \$source_len, \$d, \$source_len, \$len_sans_delim, \$poison)"; + is($ret->[0], expected($source, $len_sans_delim, $poison, $source_len), + "$func works when delim is in middle of source; no room for safety NUL"); + is($ret->[1], $len_sans_delim, "Destination length is correct"); + is($ret->[2], $len_sans_delim, "Source advance is correct"); + + $ret = eval "$test_func(\$source, \$source_len, \$d, \$source_len, \$len_sans_delim - 1, \$poison)"; + is($ret->[0], expected($source, $len_sans_delim - 1, $poison, $source_len), + "$func works when not enough space for copy"); + is($ret->[1], $failure_return, "Destination length is correct"); + is($ret->[2], $len_sans_delim, "Source advance is correct"); + } +} + +done_testing(); diff -Nru perl-5.32.1/ext/XS-APItest/t/hv_macro.t perl-5.34.0/ext/XS-APItest/t/hv_macro.t --- perl-5.32.1/ext/XS-APItest/t/hv_macro.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/XS-APItest/t/hv_macro.t 2020-10-04 22:17:13.000000000 +0000 @@ -202,17 +202,23 @@ "rotl64(n,1) and rotr64(n,1) return different results" ); } if ($is_wide) { - my $seed = "perl is for good"; + push @INC, '../../t'; + require 'charset_tools.pl'; + + # The values here are from the ASCII/Unicode code points; so if on EBCDIC + # we need # to convert from native to uni to get the same values + + my $seed = native_to_uni("perl is for good"); my $state = XS::APItest::HvMacro::siphash_seed_state($seed); is( sprintf( "%016x", - XS::APItest::HvMacro::siphash24( $state, "Larry wall is BDFL" ) ), + XS::APItest::HvMacro::siphash24( $state, native_to_uni("Larry wall is BDFL")) ), "71a11e065cefc12c", "Siphash24 seems to work" ); is( sprintf( "%016x", - XS::APItest::HvMacro::siphash13( $state, "Larry wall is BDFL" ) ), + XS::APItest::HvMacro::siphash13( $state, native_to_uni("Larry wall is BDFL" ))), "adee71f47e49757a", "Siphash13 seems to work" ); diff -Nru perl-5.32.1/ext/XS-APItest/t/locale.t perl-5.34.0/ext/XS-APItest/t/locale.t --- perl-5.32.1/ext/XS-APItest/t/locale.t 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/XS-APItest/t/locale.t 2021-05-04 06:52:48.000000000 +0000 @@ -128,6 +128,7 @@ I18N::Langinfo->import(keys %items) if $has_nl_langinfo; foreach my $formal_item (sort keys %items) { + SKIP: if (exists $correct_C_responses{$formal_item}) { my $correct = $correct_C_responses{$formal_item}; my $item = eval $items{$formal_item}; @@ -137,9 +138,11 @@ is ($result, $correct, "Returns expected value" . "('$correct') for $formal_item"); } + elsif (defined $result) { + pass("Returns a value (in this case '$result') for $formal_item"); + } else { - ok (defined $result, - "Returns a value (in this case '$result') for $formal_item"); + fail("Returned undef for $formal_item"); } } } diff -Nru perl-5.32.1/ext/XS-APItest/t/printf.t perl-5.34.0/ext/XS-APItest/t/printf.t --- perl-5.32.1/ext/XS-APItest/t/printf.t 2020-12-18 09:58:47.000000000 +0000 +++ perl-5.34.0/ext/XS-APItest/t/printf.t 2021-05-04 06:52:48.000000000 +0000 @@ -1,12 +1,4 @@ -BEGIN { - require Config; import Config; - if ($Config{usequadmath}) { - print "1..0 # Skip: usequadmath\n"; - exit(0); - } -} - -use Test::More tests => 12; +use Test::More tests => 13; BEGIN { use_ok('XS::APItest') }; @@ -29,6 +21,7 @@ print_long(4); print_float(4); print_long_double() if $ldok; # val=7 hardwired +print_long_doubleL() if $ldok; # val=7 hardwired print_flush(); @@ -47,8 +40,9 @@ is($output[3], "4.000", "print_float"); SKIP: { - skip "No long doubles", 1 unless $ldok; + skip "No long doubles", 2 unless $ldok; is($output[4], "7.000", "print_long_double"); + is($output[5], "7.000", "print_long_doubleL"); } { diff -Nru perl-5.32.1/ext/XS-APItest/t/utf8_warn_base.pl perl-5.34.0/ext/XS-APItest/t/utf8_warn_base.pl --- perl-5.32.1/ext/XS-APItest/t/utf8_warn_base.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/XS-APItest/t/utf8_warn_base.pl 2020-10-04 22:17:13.000000000 +0000 @@ -36,8 +36,9 @@ sub requires_extended_utf8($) { # Returns a boolean as to whether or not the code point parameter fits - # into 31 bits, subject to the convention that a negative code point - # stands for one that overflows the word size, so won't fit in 31 bits. + # into 31 bits (30 on EBCDIC), subject to the convention that a negative + # code point stands for one that overflows the word size, so won't fit in + # 31 bits. return shift > $highest_non_extended_utf8_cp; } @@ -485,7 +486,6 @@ : I8_to_native( "\xff\xa7\xbf\xbf\xbf\xbf\xbf\xbf\xbf\xbf\xbf\xbf\xbf\xbf"), 0x7FFFFFFFFFFFFFFF, - (isASCII) ? 1 : 2, ], [ "first 64 bit code point", (isASCII) @@ -524,7 +524,6 @@ I8_to_native( "\xff\xa0\xa0\xa0\xa0\xa0\xa1\xa0\xa0\xa0\xa0\xa0\xa0\xa0"), 0x800000000, - 40000000 ], [ "requires at least 32 bits", I8_to_native( diff -Nru perl-5.32.1/ext/XS-APItest/t/xsub_h.t perl-5.34.0/ext/XS-APItest/t/xsub_h.t --- perl-5.32.1/ext/XS-APItest/t/xsub_h.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/XS-APItest/t/xsub_h.t 2020-10-04 22:17:13.000000000 +0000 @@ -117,7 +117,7 @@ is_deeply([XS_APIVERSION_valid("Pie")], [], "XS_APIVERSION_BOOTCHECK passes"); is(eval {XS_APIVERSION_invalid("Pie"); 1}, undef, "XS_APIVERSION_BOOTCHECK croaks for an invalid version"); -like($@, qr/Perl API version v1.0.16 of Pie does not match v5\.\d+\.\d+/, +like($@, qr/Perl API version v1.0.16 of Pie does not match \Q$^V\E/a, "expected error"); my @xsreturn; diff -Nru perl-5.32.1/ext/XS-Typemap/Typemap.pm perl-5.34.0/ext/XS-Typemap/Typemap.pm --- perl-5.32.1/ext/XS-Typemap/Typemap.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/XS-Typemap/Typemap.pm 2020-10-04 22:17:13.000000000 +0000 @@ -34,7 +34,7 @@ use parent qw/ Exporter /; require XSLoader; -our $VERSION = '0.17'; +our $VERSION = '0.18'; our @EXPORT = (qw/ T_SV diff -Nru perl-5.32.1/ext/XS-Typemap/Typemap.xs perl-5.34.0/ext/XS-Typemap/Typemap.xs --- perl-5.32.1/ext/XS-Typemap/Typemap.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/ext/XS-Typemap/Typemap.xs 2020-10-04 22:17:13.000000000 +0000 @@ -157,7 +157,7 @@ else Perl_croak(aTHX_ "Argument is not an ARRAY reference"); - nitems = av_tindex(inary) + 1; + nitems = av_count(inary); /* FIXME dunno if supposed to use perl mallocs here */ /* N+1 elements so we know the last one is NULL */ diff -Nru perl-5.32.1/EXTERN.h perl-5.34.0/EXTERN.h --- perl-5.32.1/EXTERN.h 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/EXTERN.h 2020-10-04 22:17:12.000000000 +0000 @@ -19,14 +19,14 @@ #undef EXTCONST #undef dEXTCONST -# if (defined(WIN32) || defined(__SYMBIAN32__)) && !defined(PERL_STATIC_SYMS) +# if defined(WIN32) && !defined(PERL_STATIC_SYMS) /* miniperl should not export anything */ # if defined(PERL_IS_MINIPERL) # define EXT extern # define dEXT # define EXTCONST extern const # define dEXTCONST const -# elif defined(PERLDLL) || defined(__SYMBIAN32__) +# elif defined(PERLDLL) # define EXT EXTERN_C __declspec(dllexport) # define dEXT # define EXTCONST EXTERN_C __declspec(dllexport) const diff -Nru perl-5.32.1/feature.h perl-5.34.0/feature.h --- perl-5.32.1/feature.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/feature.h 2021-02-21 11:01:31.000000000 +0000 @@ -12,21 +12,24 @@ #define HINT_FEATURE_SHIFT 26 -#define FEATURE_BITWISE_BIT 0x0001 -#define FEATURE___SUB___BIT 0x0002 -#define FEATURE_MYREF_BIT 0x0004 -#define FEATURE_EVALBYTES_BIT 0x0008 -#define FEATURE_FC_BIT 0x0010 -#define FEATURE_INDIRECT_BIT 0x0020 -#define FEATURE_ISA_BIT 0x0040 -#define FEATURE_POSTDEREF_QQ_BIT 0x0080 -#define FEATURE_REFALIASING_BIT 0x0100 -#define FEATURE_SAY_BIT 0x0200 -#define FEATURE_SIGNATURES_BIT 0x0400 -#define FEATURE_STATE_BIT 0x0800 -#define FEATURE_SWITCH_BIT 0x1000 -#define FEATURE_UNIEVAL_BIT 0x2000 -#define FEATURE_UNICODE_BIT 0x4000 +#define FEATURE_BAREWORD_FILEHANDLES_BIT 0x0001 +#define FEATURE_BITWISE_BIT 0x0002 +#define FEATURE___SUB___BIT 0x0004 +#define FEATURE_MYREF_BIT 0x0008 +#define FEATURE_EVALBYTES_BIT 0x0010 +#define FEATURE_FC_BIT 0x0020 +#define FEATURE_INDIRECT_BIT 0x0040 +#define FEATURE_ISA_BIT 0x0080 +#define FEATURE_MULTIDIMENSIONAL_BIT 0x0100 +#define FEATURE_POSTDEREF_QQ_BIT 0x0200 +#define FEATURE_REFALIASING_BIT 0x0400 +#define FEATURE_SAY_BIT 0x0800 +#define FEATURE_SIGNATURES_BIT 0x1000 +#define FEATURE_STATE_BIT 0x2000 +#define FEATURE_SWITCH_BIT 0x4000 +#define FEATURE_TRY_BIT 0x8000 +#define FEATURE_UNIEVAL_BIT 0x10000 +#define FEATURE_UNICODE_BIT 0x20000 #define FEATURE_BUNDLE_DEFAULT 0 #define FEATURE_BUNDLE_510 1 @@ -46,7 +49,7 @@ ? (PL_curcop->cop_features & (mask)) : FALSE) /* The longest string we pass in. */ -#define MAX_FEATURE_LEN (sizeof("postderef_qq")-1) +#define MAX_FEATURE_LEN (sizeof("bareword_filehandles")-1) #define FEATURE_FC_IS_ENABLED \ ( \ @@ -70,6 +73,12 @@ FEATURE_IS_ENABLED_MASK(FEATURE_SAY_BIT)) \ ) +#define FEATURE_TRY_IS_ENABLED \ + ( \ + CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ + FEATURE_IS_ENABLED_MASK(FEATURE_TRY_BIT) \ + ) + #define FEATURE_STATE_IS_ENABLED \ ( \ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \ @@ -158,6 +167,20 @@ FEATURE_IS_ENABLED_MASK(FEATURE_UNICODE_BIT)) \ ) +#define FEATURE_MULTIDIMENSIONAL_IS_ENABLED \ + ( \ + CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527 \ + || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ + FEATURE_IS_ENABLED_MASK(FEATURE_MULTIDIMENSIONAL_BIT)) \ + ) + +#define FEATURE_BAREWORD_FILEHANDLES_IS_ENABLED \ + ( \ + CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527 \ + || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ + FEATURE_IS_ENABLED_MASK(FEATURE_BAREWORD_FILEHANDLES_BIT)) \ + ) + #define SAVEFEATUREBITS() SAVEI32(PL_compiling.cop_features) @@ -228,7 +251,12 @@ return; case 'b': - if (keylen == sizeof("feature_bitwise")-1 + if (keylen == sizeof("feature_bareword_filehandles")-1 + && memcmp(subf+1, "areword_filehandles", keylen - sizeof("feature_")) == 0) { + mask = FEATURE_BAREWORD_FILEHANDLES_BIT; + break; + } + else if (keylen == sizeof("feature_bitwise")-1 && memcmp(subf+1, "itwise", keylen - sizeof("feature_")) == 0) { mask = FEATURE_BITWISE_BIT; break; @@ -265,7 +293,12 @@ return; case 'm': - if (keylen == sizeof("feature_myref")-1 + if (keylen == sizeof("feature_multidimensional")-1 + && memcmp(subf+1, "ultidimensional", keylen - sizeof("feature_")) == 0) { + mask = FEATURE_MULTIDIMENSIONAL_BIT; + break; + } + else if (keylen == sizeof("feature_myref")-1 && memcmp(subf+1, "yref", keylen - sizeof("feature_")) == 0) { mask = FEATURE_MYREF_BIT; break; @@ -310,6 +343,14 @@ break; } return; + + case 't': + if (keylen == sizeof("feature_try")-1 + && memcmp(subf+1, "ry", keylen - sizeof("feature_")) == 0) { + mask = FEATURE_TRY_BIT; + break; + } + return; case 'u': if (keylen == sizeof("feature_unicode")-1 diff -Nru perl-5.32.1/generate_uudmap.c perl-5.34.0/generate_uudmap.c --- perl-5.32.1/generate_uudmap.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/generate_uudmap.c 2021-01-20 23:04:44.000000000 +0000 @@ -1,7 +1,38 @@ -/* Originally this program just generated uudmap.h +/* generate_uudmap.c: + + Create three .h files, whose names are specified as argv[1..3], + but are usually uudmap.h, bitcount.h and mg_data.h. + + It uses mg_raw.h as input, plus it relies on the C compiler knowing + the ord value of character literals under EBCDIC, to generate output + tables on an order which are platform-specific. + + The outputs are: + + uudmap.h: + The values which will populate PL_uumap[], as used by + unpack('u'). + + bitcount.h + The values which will populate PL_bitcount[]: + this is a count of bits for each U8 value 0..255. + (I'm not sure why this has to be generated - surely it's + platform-independent - DAPM.) + + mg_data.h + Takes the input from mg_raw.h and sorts by it magic char; + the values will populate PL_magic_data[]: this is an array of + per-magic U8 values containing an index into PL_magic_vtables[] + plus two flags: + PERL_MAGIC_READONLY_ACCEPTABLE + PERL_MAGIC_VALUE_MAGIC + + Originally this program just generated uudmap.h However, when we later wanted to generate bitcount.h, it was easier to refactor it and keep the same name, than either alternative - rename it, - or duplicate all of the Makefile logic for a second program. */ + or duplicate all of the Makefile logic for a second program. + Ditto when mg_data.h was added. +*/ #include #include @@ -40,13 +71,13 @@ while (1) { if (p->value) { - fprintf(out, " %s\n %s", p->comment, p->value); + fprintf(out, " %s\n %s", p->comment, p->value); } else { - fputs(" 0", out); + fputs(" 0", out); } ++p; if (!--count) - break; + break; fputs(",\n", out); } fputc('\n', out); @@ -63,7 +94,7 @@ if (count) { fputs(", ", out); if (!(count & 15)) { - fputs("\n ", out); + fputs("\n ", out); } } } @@ -72,23 +103,28 @@ static void output_to_file(const char *progname, const char *filename, - void (format_function)(FILE *out, const void *thing, size_t count), - const void *thing, size_t count) { + void (format_function)(FILE *out, const void *thing, size_t count), + const void *thing, size_t count, + const char *header +) { FILE *const out = fopen(filename, "w"); if (!out) { fprintf(stderr, "%s: Could not open '%s': %s\n", progname, filename, - strerror(errno)); + strerror(errno)); exit(1); } - fputs("{\n", out); + fprintf(out, "/* %s:\n", filename); + fprintf(out, " * THIS FILE IS AUTO-GENERATED DURING THE BUILD by: %s\n", + progname); + fprintf(out, " *\n%s\n*/\n{\n", header); format_function(out, thing, count); fputs("}\n", out); if (fclose(out)) { fprintf(stderr, "%s: Could not close '%s': %s\n", progname, filename, - strerror(errno)); + strerror(errno)); exit(1); } } @@ -123,7 +159,9 @@ PL_uudmap[(U8)' '] = 0; output_to_file(argv[0], argv[1], &format_char_block, - (const void *)PL_uudmap, sizeof(PL_uudmap)); + (const void *)PL_uudmap, sizeof(PL_uudmap), + " * These values will populate PL_uumap[], as used by unpack('u')" + ); for (bits = 1; bits < 256; bits++) { if (bits & 1) PL_bitcount[bits]++; @@ -137,7 +175,10 @@ } output_to_file(argv[0], argv[2], &format_char_block, - (const void *)PL_bitcount, sizeof(PL_bitcount)); + (const void *)PL_bitcount, sizeof(PL_bitcount), + " * These values will populate PL_bitcount[]:\n" + " * this is a count of bits for each U8 value 0..255" + ); while (p->value) { mg_data[p->type].value = p->value; @@ -146,7 +187,13 @@ } output_to_file(argv[0], argv[3], &format_mg_data, - (const void *)mg_data, sizeof(mg_data)/sizeof(mg_data[0])); + (const void *)mg_data, sizeof(mg_data)/sizeof(mg_data[0]), + " * These values will populate PL_magic_data[]: this is an array of\n" + " * per-magic U8 values containing an index into PL_magic_vtables[]\n" + " * plus two flags:\n" + " * PERL_MAGIC_READONLY_ACCEPTABLE\n" + " * PERL_MAGIC_VALUE_MAGIC" + ); return 0; } diff -Nru perl-5.32.1/globals.c perl-5.34.0/globals.c --- perl-5.32.1/globals.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/globals.c 2021-01-20 23:04:44.000000000 +0000 @@ -15,24 +15,15 @@ */ /* This file exists to #include "perl.h" _ONCE_ with - * PERL_IN_GLOBALS_C defined. That causes various global varaiables + * PERL_IN_GLOBALS_C defined. That causes various global variables * in perl.h and other files it includes to be _defined_ (and initialized) * rather than just declared. - * - * There is a #include "perlapi.h" which makes use of the fact - * that the object file created from this file will be included by linker - * (to resolve global variables). perlapi.h mention various other "API" - * functions not used by perl itself, but the functions get - * pulled into the perl executable via the refrerence here. - * */ #include "INTERN.h" #define PERL_IN_GLOBALS_C #include "perl.h" -#include "perlapi.h" /* bring in PL_force_link_funcs */ - /* regcomp.h * isn't #included in perl.h, as its only included within a * few specific files such as regcomp.c, regexec.c. So include it * explicitly to process any data declarations within it. diff -Nru perl-5.32.1/globvar.sym perl-5.34.0/globvar.sym --- perl-5.32.1/globvar.sym 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/globvar.sym 2020-10-24 18:43:34.000000000 +0000 @@ -12,12 +12,12 @@ PL_charclass PL_check PL_core_reg_engine +PL_EXACTFish_bitmask +PL_EXACT_REQ8_bitmask PL_extended_utf8_dfa_tab PL_fold PL_fold_latin1 PL_fold_locale -PL_freq -PL_global_struct_size PL_hexdigit PL_inf PL_interp_size diff -Nru perl-5.32.1/gv.c perl-5.34.0/gv.c --- perl-5.32.1/gv.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/gv.c 2021-05-04 06:52:48.000000000 +0000 @@ -20,7 +20,7 @@ */ /* -=head1 GV Functions +=head1 GV Handling A GV is a structure which corresponds to to a Perl typeglob, ie *foo. It is a structure that holds a pointer to a scalar, an array, a hash etc, corresponding to $foo, @foo, %foo. @@ -28,6 +28,8 @@ GVs are usually found as values in stashes (symbol table hashes) where Perl stores its global variables. +=for apidoc Ayh||GV + =cut */ @@ -53,43 +55,64 @@ && SvTYPE((const SV *)gv) != SVt_PVLV ) ) { - const char *what; - if (type == SVt_PVIO) { - /* - * if it walks like a dirhandle, then let's assume that - * this is a dirhandle. - */ - what = OP_IS_DIRHOP(PL_op->op_type) ? - "dirhandle" : "filehandle"; - } else if (type == SVt_PVHV) { - what = "hash"; - } else { - what = type == SVt_PVAV ? "array" : "scalar"; - } - /* diag_listed_as: Bad symbol for filehandle */ - Perl_croak(aTHX_ "Bad symbol for %s", what); + const char *what; + if (type == SVt_PVIO) { + /* + * if it walks like a dirhandle, then let's assume that + * this is a dirhandle. + */ + what = OP_IS_DIRHOP(PL_op->op_type) ? + "dirhandle" : "filehandle"; + } else if (type == SVt_PVHV) { + what = "hash"; + } else { + what = type == SVt_PVAV ? "array" : "scalar"; + } + /* diag_listed_as: Bad symbol for filehandle */ + Perl_croak(aTHX_ "Bad symbol for %s", what); } if (type == SVt_PVHV) { - where = (SV **)&GvHV(gv); + where = (SV **)&GvHV(gv); } else if (type == SVt_PVAV) { - where = (SV **)&GvAV(gv); + where = (SV **)&GvAV(gv); } else if (type == SVt_PVIO) { - where = (SV **)&GvIOp(gv); + where = (SV **)&GvIOp(gv); } else { - where = &GvSV(gv); + where = &GvSV(gv); } if (!*where) { - *where = newSV_type(type); - if (type == SVt_PVAV - && memEQs(GvNAME(gv), GvNAMELEN(gv), "ISA")) - sv_magic(*where, (SV *)gv, PERL_MAGIC_isa, NULL, 0); + *where = newSV_type(type); + if (type == SVt_PVAV + && memEQs(GvNAME(gv), GvNAMELEN(gv), "ISA")) + sv_magic(*where, (SV *)gv, PERL_MAGIC_isa, NULL, 0); } return gv; } +/* +=for apidoc gv_fetchfile +=for apidoc_item gv_fetchfile_flags + +These return the debugger glob for the file (compiled by Perl) whose name is +given by the C parameter. + +There are currently exactly two differences between these functions. + +The C parameter to C is a C string, meaning it is +C-terminated; whereas the C parameter to C is a +Perl string, whose length (in bytes) is passed in via the C parameter +This means the name may contain embedded C characters. +C doesn't exist in plain C). + +The other difference is that C has an extra C +parameter, which is currently completely ignored, but allows for possible +future extensions. + +=cut +*/ GV * Perl_gv_fetchfile(pTHX_ const char *name) { @@ -99,7 +122,7 @@ GV * Perl_gv_fetchfile_flags(pTHX_ const char *const name, const STRLEN namelen, - const U32 flags) + const U32 flags) { char smallbuf[128]; char *tmpbuf; @@ -110,29 +133,29 @@ PERL_UNUSED_ARG(flags); if (!PL_defstash) - return NULL; + return NULL; if (tmplen <= sizeof smallbuf) - tmpbuf = smallbuf; + tmpbuf = smallbuf; else - Newx(tmpbuf, tmplen, char); + Newx(tmpbuf, tmplen, char); /* This is where the debugger's %{"::_<$filename"} hash is created */ tmpbuf[0] = '_'; tmpbuf[1] = '<'; memcpy(tmpbuf + 2, name, namelen); gv = *(GV**)hv_fetch(PL_defstash, tmpbuf, tmplen, TRUE); if (!isGV(gv)) { - gv_init(gv, PL_defstash, tmpbuf, tmplen, FALSE); + gv_init(gv, PL_defstash, tmpbuf, tmplen, FALSE); #ifdef PERL_DONT_CREATE_GVSV - GvSV(gv) = newSVpvn(name, namelen); + GvSV(gv) = newSVpvn(name, namelen); #else - sv_setpvn(GvSV(gv), name, namelen); + sv_setpvn(GvSV(gv), name, namelen); #endif } if (PERLDB_LINE_OR_SAVESRC && !GvAV(gv)) - hv_magic(GvHVn(gv), GvAVn(gv), PERL_MAGIC_dbfile); + hv_magic(GvHVn(gv), GvAVn(gv), PERL_MAGIC_dbfile); if (tmpbuf != smallbuf) - Safefree(tmpbuf); + Safefree(tmpbuf); return gv; } @@ -154,7 +177,7 @@ PERL_UNUSED_CONTEXT; if (SvTYPE(gv) == SVt_PVGV) - return cv_const_sv(GvCVu(gv)); + return cv_const_sv(GvCVu(gv)); return SvROK(gv) && SvTYPE(SvRV(gv)) != SVt_PVAV && SvTYPE(SvRV(gv)) != SVt_PVCV ? SvRV(gv) : NULL; } @@ -168,7 +191,6 @@ #ifndef USE_ITHREADS GV *filegv; #endif - dVAR; PERL_ARGS_ASSERT_NEWGP; Newxz(gp, 1, GP); @@ -178,29 +200,29 @@ #endif /* PL_curcop may be null here. E.g., - INIT { bless {} and exit } + INIT { bless {} and exit } frees INIT before looking up DESTROY (and creating *DESTROY) */ if (PL_curcop) { - gp->gp_line = CopLINE(PL_curcop); /* 0 otherwise Newxz */ + gp->gp_line = CopLINE(PL_curcop); /* 0 otherwise Newxz */ #ifdef USE_ITHREADS - if (CopFILE(PL_curcop)) { - file = CopFILE(PL_curcop); - len = strlen(file); - } + if (CopFILE(PL_curcop)) { + file = CopFILE(PL_curcop); + len = strlen(file); + } #else - filegv = CopFILEGV(PL_curcop); - if (filegv) { - file = GvNAME(filegv)+2; - len = GvNAMELEN(filegv)-2; - } + filegv = CopFILEGV(PL_curcop); + if (filegv) { + file = GvNAME(filegv)+2; + len = GvNAMELEN(filegv)-2; + } #endif - else goto no_file; + else goto no_file; } else { - no_file: - file = ""; - len = 0; + no_file: + file = ""; + len = 0; } PERL_HASH(hash, file, len); @@ -221,20 +243,20 @@ PERL_ARGS_ASSERT_CVGV_SET; if (oldgv == gv) - return; + return; if (oldgv) { - if (CvCVGV_RC(cv)) { - SvREFCNT_dec_NN(oldgv); - CvCVGV_RC_off(cv); - } - else { - sv_del_backref(MUTABLE_SV(oldgv), MUTABLE_SV(cv)); - } + if (CvCVGV_RC(cv)) { + SvREFCNT_dec_NN(oldgv); + CvCVGV_RC_off(cv); + } + else { + sv_del_backref(MUTABLE_SV(oldgv), MUTABLE_SV(cv)); + } } else if ((hek = CvNAME_HEK(cv))) { - unshare_hek(hek); - CvLEXICAL_off(cv); + unshare_hek(hek); + CvLEXICAL_off(cv); } CvNAMED_off(cv); @@ -242,13 +264,13 @@ assert(!CvCVGV_RC(cv)); if (!gv) - return; + return; if (isGV_with_GP(gv) && GvGP(gv) && (GvCV(gv) == cv || GvFORM(gv) == cv)) - Perl_sv_add_backref(aTHX_ MUTABLE_SV(gv), MUTABLE_SV(cv)); + Perl_sv_add_backref(aTHX_ MUTABLE_SV(gv), MUTABLE_SV(cv)); else { - CvCVGV_RC_on(cv); - SvREFCNT_inc_simple_void_NN(gv); + CvCVGV_RC_on(cv); + SvREFCNT_inc_simple_void_NN(gv); } } @@ -268,12 +290,12 @@ svp = hv_fetchhek(CvSTASH(cv), CvNAME_HEK(cv), 0); gv = MUTABLE_GV(svp && *svp ? *svp : newSV(0)); if (!isGV(gv)) - gv_init_pvn(gv, CvSTASH(cv), HEK_KEY(CvNAME_HEK(cv)), - HEK_LEN(CvNAME_HEK(cv)), - SVf_UTF8 * !!HEK_UTF8(CvNAME_HEK(cv))); + gv_init_pvn(gv, CvSTASH(cv), HEK_KEY(CvNAME_HEK(cv)), + HEK_LEN(CvNAME_HEK(cv)), + SVf_UTF8 * !!HEK_UTF8(CvNAME_HEK(cv))); if (!CvNAMED(cv)) { /* gv_init took care of it */ - assert (SvANY(cv)->xcv_gv_u.xcv_gv == gv); - return gv; + assert (SvANY(cv)->xcv_gv_u.xcv_gv == gv); + return gv; } unshare_hek(CvNAME_HEK(cv)); CvNAMED_off(cv); @@ -291,12 +313,12 @@ HV *oldst = CvSTASH(cv); PERL_ARGS_ASSERT_CVSTASH_SET; if (oldst == st) - return; + return; if (oldst) - sv_del_backref(MUTABLE_SV(oldst), MUTABLE_SV(cv)); + sv_del_backref(MUTABLE_SV(oldst), MUTABLE_SV(cv)); SvANY(cv)->xcv_stash = st; if (st) - Perl_sv_add_backref(aTHX_ MUTABLE_SV(st), MUTABLE_SV(cv)); + Perl_sv_add_backref(aTHX_ MUTABLE_SV(st), MUTABLE_SV(cv)); } /* @@ -369,102 +391,102 @@ const U32 old_type = SvTYPE(gv); const bool doproto = old_type > SVt_NULL; char * const proto = (doproto && SvPOK(gv)) - ? ((void)(SvIsCOW(gv) && (sv_force_normal((SV *)gv), 0)), SvPVX(gv)) - : NULL; + ? ((void)(SvIsCOW(gv) && (sv_force_normal((SV *)gv), 0)), SvPVX(gv)) + : NULL; const STRLEN protolen = proto ? SvCUR(gv) : 0; const U32 proto_utf8 = proto ? SvUTF8(gv) : 0; SV *const has_constant = doproto && SvROK(gv) ? SvRV(gv) : NULL; const U32 exported_constant = has_constant ? SvPCS_IMPORTED(gv) : 0; const bool really_sub = - has_constant && SvTYPE(has_constant) == SVt_PVCV; + has_constant && SvTYPE(has_constant) == SVt_PVCV; COP * const old = PL_curcop; PERL_ARGS_ASSERT_GV_INIT_PVN; assert (!(proto && has_constant)); if (has_constant) { - /* The constant has to be a scalar, array or subroutine. */ - switch (SvTYPE(has_constant)) { - case SVt_PVHV: - case SVt_PVFM: - case SVt_PVIO: + /* The constant has to be a scalar, array or subroutine. */ + switch (SvTYPE(has_constant)) { + case SVt_PVHV: + case SVt_PVFM: + case SVt_PVIO: Perl_croak(aTHX_ "Cannot convert a reference to %s to typeglob", - sv_reftype(has_constant, 0)); + sv_reftype(has_constant, 0)); NOT_REACHED; /* NOTREACHED */ break; - default: NOOP; - } - SvRV_set(gv, NULL); - SvROK_off(gv); + default: NOOP; + } + SvRV_set(gv, NULL); + SvROK_off(gv); } if (old_type < SVt_PVGV) { - if (old_type >= SVt_PV) - SvCUR_set(gv, 0); - sv_upgrade(MUTABLE_SV(gv), SVt_PVGV); + if (old_type >= SVt_PV) + SvCUR_set(gv, 0); + sv_upgrade(MUTABLE_SV(gv), SVt_PVGV); } if (SvLEN(gv)) { - if (proto) { - SvPV_set(gv, NULL); - SvLEN_set(gv, 0); - SvPOK_off(gv); - } else - Safefree(SvPVX_mutable(gv)); + if (proto) { + SvPV_set(gv, NULL); + SvLEN_set(gv, 0); + SvPOK_off(gv); + } else + Safefree(SvPVX_mutable(gv)); } SvIOK_off(gv); isGV_with_GP_on(gv); if (really_sub && !CvISXSUB(has_constant) && CvSTART(has_constant) && ( CvSTART(has_constant)->op_type == OP_NEXTSTATE - || CvSTART(has_constant)->op_type == OP_DBSTATE)) - PL_curcop = (COP *)CvSTART(has_constant); + || CvSTART(has_constant)->op_type == OP_DBSTATE)) + PL_curcop = (COP *)CvSTART(has_constant); GvGP_set(gv, Perl_newGP(aTHX_ gv)); PL_curcop = old; GvSTASH(gv) = stash; if (stash) - Perl_sv_add_backref(aTHX_ MUTABLE_SV(stash), MUTABLE_SV(gv)); + Perl_sv_add_backref(aTHX_ MUTABLE_SV(stash), MUTABLE_SV(gv)); gv_name_set(gv, name, len, GV_ADD | ( flags & SVf_UTF8 ? SVf_UTF8 : 0 )); if (flags & GV_ADDMULTI || doproto) /* doproto means it */ - GvMULTI_on(gv); /* _was_ mentioned */ + GvMULTI_on(gv); /* _was_ mentioned */ if (really_sub) { - /* Not actually a constant. Just a regular sub. */ - CV * const cv = (CV *)has_constant; - GvCV_set(gv,cv); - if (CvNAMED(cv) && CvSTASH(cv) == stash && ( - CvNAME_HEK(cv) == GvNAME_HEK(gv) - || ( HEK_LEN(CvNAME_HEK(cv)) == HEK_LEN(GvNAME_HEK(gv)) - && HEK_FLAGS(CvNAME_HEK(cv)) != HEK_FLAGS(GvNAME_HEK(gv)) - && HEK_UTF8(CvNAME_HEK(cv)) == HEK_UTF8(GvNAME_HEK(gv)) - && memEQ(HEK_KEY(CvNAME_HEK(cv)), GvNAME(gv), GvNAMELEN(gv)) - ) - )) - CvGV_set(cv,gv); + /* Not actually a constant. Just a regular sub. */ + CV * const cv = (CV *)has_constant; + GvCV_set(gv,cv); + if (CvNAMED(cv) && CvSTASH(cv) == stash && ( + CvNAME_HEK(cv) == GvNAME_HEK(gv) + || ( HEK_LEN(CvNAME_HEK(cv)) == HEK_LEN(GvNAME_HEK(gv)) + && HEK_FLAGS(CvNAME_HEK(cv)) != HEK_FLAGS(GvNAME_HEK(gv)) + && HEK_UTF8(CvNAME_HEK(cv)) == HEK_UTF8(GvNAME_HEK(gv)) + && memEQ(HEK_KEY(CvNAME_HEK(cv)), GvNAME(gv), GvNAMELEN(gv)) + ) + )) + CvGV_set(cv,gv); } else if (doproto) { - CV *cv; - if (has_constant) { - /* newCONSTSUB takes ownership of the reference from us. */ - cv = newCONSTSUB_flags(stash, name, len, flags, has_constant); - /* In case op.c:S_process_special_blocks stole it: */ - if (!GvCV(gv)) - GvCV_set(gv, (CV *)SvREFCNT_inc_simple_NN(cv)); - assert(GvCV(gv) == cv); /* newCONSTSUB should have set this */ - /* If this reference was a copy of another, then the subroutine - must have been "imported", by a Perl space assignment to a GV - from a reference to CV. */ - if (exported_constant) - GvIMPORTED_CV_on(gv); - CvSTASH_set(cv, PL_curstash); /* XXX Why is this needed? */ - } else { - cv = newSTUB(gv,1); - } - if (proto) { - sv_usepvn_flags(MUTABLE_SV(cv), proto, protolen, - SV_HAS_TRAILING_NUL); + CV *cv; + if (has_constant) { + /* newCONSTSUB takes ownership of the reference from us. */ + cv = newCONSTSUB_flags(stash, name, len, flags, has_constant); + /* In case op.c:S_process_special_blocks stole it: */ + if (!GvCV(gv)) + GvCV_set(gv, (CV *)SvREFCNT_inc_simple_NN(cv)); + assert(GvCV(gv) == cv); /* newCONSTSUB should have set this */ + /* If this reference was a copy of another, then the subroutine + must have been "imported", by a Perl space assignment to a GV + from a reference to CV. */ + if (exported_constant) + GvIMPORTED_CV_on(gv); + CvSTASH_set(cv, PL_curstash); /* XXX Why is this needed? */ + } else { + cv = newSTUB(gv,1); + } + if (proto) { + sv_usepvn_flags(MUTABLE_SV(cv), proto, protolen, + SV_HAS_TRAILING_NUL); if ( proto_utf8 ) SvUTF8_on(MUTABLE_SV(cv)); - } + } } } @@ -475,26 +497,26 @@ switch (sv_type) { case SVt_PVIO: - (void)GvIOn(gv); - break; + (void)GvIOn(gv); + break; case SVt_PVAV: - (void)GvAVn(gv); - break; + (void)GvAVn(gv); + break; case SVt_PVHV: - (void)GvHVn(gv); - break; + (void)GvHVn(gv); + break; #ifdef PERL_DONT_CREATE_GVSV case SVt_NULL: case SVt_PVCV: case SVt_PVFM: case SVt_PVGV: - break; + break; default: - if(GvSVn(gv)) { - /* Work round what appears to be a bug in Sun C++ 5.8 2005/10/13 - If we just cast GvSVn(gv) to void, it ignores evaluating it for - its side effect */ - } + if(GvSVn(gv)) { + /* Work round what appears to be a bug in Sun C++ 5.8 2005/10/13 + If we just cast GvSVn(gv) to void, it ignores evaluating it for + its side effect */ + } #endif } } @@ -522,7 +544,7 @@ /* no support for \&CORE::infix; no support for funcs that do not parse like funcs */ case KEY___DATA__: case KEY___END__: case KEY_and: case KEY_AUTOLOAD: - case KEY_BEGIN : case KEY_CHECK : case KEY_cmp: + case KEY_BEGIN : case KEY_CHECK : case KEY_catch : case KEY_cmp: case KEY_default : case KEY_DESTROY: case KEY_do : case KEY_dump : case KEY_else : case KEY_elsif : case KEY_END : case KEY_eq : case KEY_eval : @@ -537,10 +559,10 @@ case KEY_qx : case KEY_redo : case KEY_require: case KEY_return: case KEY_s : case KEY_say : case KEY_sort : case KEY_state: case KEY_sub : - case KEY_tr : case KEY_UNITCHECK: case KEY_unless: + case KEY_tr : case KEY_try : case KEY_UNITCHECK: case KEY_unless: case KEY_until: case KEY_use : case KEY_when : case KEY_while : case KEY_x : case KEY_xor : case KEY_y : - return NULL; + return NULL; case KEY_chdir: case KEY_chomp: case KEY_chop: case KEY_defined: case KEY_delete: case KEY_eof : case KEY_exec: case KEY_exists : @@ -549,33 +571,33 @@ case KEY_stat: case KEY_system: case KEY_truncate: case KEY_unlink: - ampable = FALSE; + ampable = FALSE; } if (!gv) { - gv = (GV *)newSV(0); - gv_init(gv, stash, name, len, TRUE); + gv = (GV *)newSV(0); + gv_init(gv, stash, name, len, TRUE); } GvMULTI_on(gv); if (ampable) { - ENTER; - oldcurcop = PL_curcop; - oldparser = PL_parser; - lex_start(NULL, NULL, 0); - oldcompcv = PL_compcv; - PL_compcv = NULL; /* Prevent start_subparse from setting - CvOUTSIDE. */ - oldsavestack_ix = start_subparse(FALSE,0); - cv = PL_compcv; + ENTER; + oldcurcop = PL_curcop; + oldparser = PL_parser; + lex_start(NULL, NULL, 0); + oldcompcv = PL_compcv; + PL_compcv = NULL; /* Prevent start_subparse from setting + CvOUTSIDE. */ + oldsavestack_ix = start_subparse(FALSE,0); + cv = PL_compcv; } else { - /* Avoid calling newXS, as it calls us, and things start to - get hairy. */ - cv = MUTABLE_CV(newSV_type(SVt_PVCV)); - GvCV_set(gv,cv); - GvCVGEN(gv) = 0; - CvISXSUB_on(cv); - CvXSUB(cv) = core_xsub; - PoisonPADLIST(cv); + /* Avoid calling newXS, as it calls us, and things start to + get hairy. */ + cv = MUTABLE_CV(newSV_type(SVt_PVCV)); + GvCV_set(gv,cv); + GvCVGEN(gv) = 0; + CvISXSUB_on(cv); + CvXSUB(cv) = core_xsub; + PoisonPADLIST(cv); } CvGV_set(cv, gv); /* This stops new ATTRSUB from setting CvFILE from PL_curcop. */ @@ -589,42 +611,42 @@ new ATTRSUB. */ (void)core_prototype((SV *)cv, name, code, &opnum); if (stash) - (void)hv_store(stash,name,len,(SV *)gv,0); + (void)hv_store(stash,name,len,(SV *)gv,0); if (ampable) { #ifdef DEBUGGING CV *orig_cv = cv; #endif - CvLVALUE_on(cv); + CvLVALUE_on(cv); /* newATTRSUB will free the CV and return NULL if we're still compiling after a syntax error */ - if ((cv = newATTRSUB_x( - oldsavestack_ix, (OP *)gv, - NULL,NULL, - coresub_op( - opnum - ? newSVuv((UV)opnum) - : newSVpvn(name,len), - code, opnum - ), - TRUE + if ((cv = newATTRSUB_x( + oldsavestack_ix, (OP *)gv, + NULL,NULL, + coresub_op( + opnum + ? newSVuv((UV)opnum) + : newSVpvn(name,len), + code, opnum + ), + TRUE )) != NULL) { assert(GvCV(gv) == orig_cv); if (opnum != OP_VEC && opnum != OP_SUBSTR && opnum != OP_POS && opnum != OP_UNDEF && opnum != OP_KEYS) CvLVALUE_off(cv); /* Now *that* was a neat trick. */ } - LEAVE; - PL_parser = oldparser; - PL_curcop = oldcurcop; - PL_compcv = oldcompcv; + LEAVE; + PL_parser = oldparser; + PL_curcop = oldcurcop; + PL_compcv = oldcompcv; } if (cv) { - SV *opnumsv = newSViv( - (opnum == OP_ENTEREVAL && len == 9 && memEQ(name, "evalbytes", 9)) ? - (OP_ENTEREVAL | (1<<16)) - : opnum ? opnum : (((I32)name[2]) << 16)); + SV *opnumsv = newSViv( + (opnum == OP_ENTEREVAL && len == 9 && memEQ(name, "evalbytes", 9)) ? + (OP_ENTEREVAL | (1<<16)) + : opnum ? opnum : (((I32)name[2]) << 16)); cv_set_call_checker_flags(cv, Perl_ck_entersub_args_core, opnumsv, 0); - SvREFCNT_dec_NN(opnumsv); + SvREFCNT_dec_NN(opnumsv); } return gv; @@ -685,11 +707,15 @@ which in the case of success contains an alias for the subroutine, and sets up caching info for this glob. -The only significant values for C are C and C. +The only significant values for C are C, C, and +C. C indicates that we want to look up the method in the superclasses of the C. +C indicates that we do not want to look up the method in +the stash accessible by C. + The GV returned from C may be a method cache entry, which is not visible to Perl code. So when calling C, you should not use @@ -724,9 +750,9 @@ /* UNIVERSAL methods should be callable without a stash */ if (!stash) { - create = 0; /* probably appropriate */ - if(!(stash = gv_stashpvs("UNIVERSAL", 0))) - return 0; + create = 0; /* probably appropriate */ + if(!(stash = gv_stashpvs("UNIVERSAL", 0))) + return 0; } assert(stash); @@ -740,15 +766,15 @@ assert(name || meth); DEBUG_o( Perl_deb(aTHX_ "Looking for %smethod %s in package %s\n", - flags & GV_SUPER ? "SUPER " : "", - name ? name : SvPV_nolen(meth), hvname) ); + flags & GV_SUPER ? "SUPER " : "", + name ? name : SvPV_nolen(meth), hvname) ); topgen_cmp = HvMROMETA(stash)->cache_gen + PL_sub_generation; if (flags & GV_SUPER) { - if (!HvAUX(stash)->xhv_mro_meta->super) - HvAUX(stash)->xhv_mro_meta->super = newHV(); - cachestash = HvAUX(stash)->xhv_mro_meta->super; + if (!HvAUX(stash)->xhv_mro_meta->super) + HvAUX(stash)->xhv_mro_meta->super = newHV(); + cachestash = HvAUX(stash)->xhv_mro_meta->super; } else cachestash = stash; @@ -776,21 +802,21 @@ } else { /* stale cache entry, junk it and move on */ - SvREFCNT_dec_NN(cand_cv); - GvCV_set(topgv, NULL); - cand_cv = NULL; - GvCVGEN(topgv) = 0; + SvREFCNT_dec_NN(cand_cv); + GvCV_set(topgv, NULL); + cand_cv = NULL; + GvCVGEN(topgv) = 0; } } else if (GvCVGEN(topgv) == topgen_cmp) { /* cache indicates no such method definitively */ return 0; } - else if (stash == cachestash - && len > 1 /* shortest is uc */ + else if (stash == cachestash + && len > 1 /* shortest is uc */ && memEQs(hvname, HvNAMELEN_get(stash), "CORE") && S_maybe_add_coresub(aTHX_ NULL,topgv,name,len)) - goto have_gv; + goto have_gv; } linear_av = mro_get_linear_isa(stash); /* has ourselves at the top of the list */ @@ -863,12 +889,12 @@ GvCV_set(topgv, cand_cv); GvCVGEN(topgv) = topgen_cmp; } - return candidate; + return candidate; } } /* Check UNIVERSAL without caching */ - if(level == 0 || level == -1) { + if((level == 0 || level == -1) && !(flags & GV_NOUNIVERSAL)) { candidate = gv_fetchmeth_internal(NULL, meth, name, len, 1, flags &~GV_SUPER); if(candidate) { @@ -964,26 +990,26 @@ PERL_ARGS_ASSERT_GV_FETCHMETH_PVN_AUTOLOAD; if (!gv) { - CV *cv; - GV **gvp; + CV *cv; + GV **gvp; - if (!stash) - return NULL; /* UNIVERSAL::AUTOLOAD could cause trouble */ - if (len == S_autolen && memEQ(name, S_autoload, S_autolen)) - return NULL; - if (!(gv = gv_fetchmeth_pvn(stash, S_autoload, S_autolen, FALSE, flags))) - return NULL; - cv = GvCV(gv); - if (!(CvROOT(cv) || CvXSUB(cv))) - return NULL; - /* Have an autoload */ - if (level < 0) /* Cannot do without a stub */ - gv_fetchmeth_pvn(stash, name, len, 0, flags); - gvp = (GV**)hv_fetch(stash, name, + if (!stash) + return NULL; /* UNIVERSAL::AUTOLOAD could cause trouble */ + if (len == S_autolen && memEQ(name, S_autoload, S_autolen)) + return NULL; + if (!(gv = gv_fetchmeth_pvn(stash, S_autoload, S_autolen, FALSE, flags))) + return NULL; + cv = GvCV(gv); + if (!(CvROOT(cv) || CvXSUB(cv))) + return NULL; + /* Have an autoload */ + if (level < 0) /* Cannot do without a stub */ + gv_fetchmeth_pvn(stash, name, len, 0, flags); + gvp = (GV**)hv_fetch(stash, name, (flags & SVf_UTF8) ? -(I32)len : (I32)len, (level >= 0)); - if (!gvp) - return NULL; - return *gvp; + if (!gvp) + return NULL; + return *gvp; } return gv; } @@ -1059,11 +1085,11 @@ PERL_ARGS_ASSERT_GV_FETCHMETHOD_PVN_FLAGS; if (SvTYPE(stash) < SVt_PVHV) - stash = NULL; + stash = NULL; else { - /* The only way stash can become NULL later on is if last_separator is set, - which in turn means that there is no need for a SVt_PVHV case - the error reporting code. */ + /* The only way stash can become NULL later on is if last_separator is set, + which in turn means that there is no need for a SVt_PVHV case + the error reporting code. */ } { @@ -1096,100 +1122,100 @@ if (last_separator) { STRLEN sep_len= last_separator - origname; if ( memEQs(origname, sep_len, "SUPER")) { - /* ->SUPER::method should really be looked up in original stash */ - stash = CopSTASH(PL_curcop); - flags |= GV_SUPER; - DEBUG_o( Perl_deb(aTHX_ "Treating %s as %s::%s\n", - origname, HvENAME_get(stash), name) ); - } + /* ->SUPER::method should really be looked up in original stash */ + stash = CopSTASH(PL_curcop); + flags |= GV_SUPER; + DEBUG_o( Perl_deb(aTHX_ "Treating %s as %s::%s\n", + origname, HvENAME_get(stash), name) ); + } else if ( sep_len >= 7 && - strBEGINs(last_separator - 7, "::SUPER")) { + strBEGINs(last_separator - 7, "::SUPER")) { /* don't autovifify if ->NoSuchStash::SUPER::method */ stash = gv_stashpvn(origname, sep_len - 7, is_utf8); - if (stash) flags |= GV_SUPER; - } - else { + if (stash) flags |= GV_SUPER; + } + else { /* don't autovifify if ->NoSuchStash::method */ stash = gv_stashpvn(origname, sep_len, is_utf8); - } - ostash = stash; + } + ostash = stash; } gv = gv_fetchmeth_pvn(stash, name, name_end - name, 0, flags); if (!gv) { - /* This is the special case that exempts Foo->import and - Foo->unimport from being an error even if there's no - import/unimport subroutine */ - if (strEQ(name,"import") || strEQ(name,"unimport")) { - gv = (GV*)sv_2mortal((SV*)newCONSTSUB_flags(NULL, - NULL, 0, 0, NULL)); - } else if (autoload) - gv = gv_autoload_pvn( - ostash, name, name_end - name, GV_AUTOLOAD_ISMETHOD|flags - ); - if (!gv && do_croak) { - /* Right now this is exclusively for the benefit of S_method_common - in pp_hot.c */ - if (stash) { - /* If we can't find an IO::File method, it might be a call on - * a filehandle. If IO:File has not been loaded, try to - * require it first instead of croaking */ - const char *stash_name = HvNAME_get(stash); - if (stash_name && memEQs(stash_name, HvNAMELEN_get(stash), "IO::File") - && !Perl_hv_common(aTHX_ GvHVn(PL_incgv), NULL, - STR_WITH_LEN("IO/File.pm"), 0, - HV_FETCH_ISEXISTS, NULL, 0) - ) { - require_pv("IO/File.pm"); - gv = gv_fetchmeth_pvn(stash, name, name_end - name, 0, flags); - if (gv) - return gv; - } - Perl_croak(aTHX_ - "Can't locate object method \"%" UTF8f - "\" via package \"%" HEKf "\"", - UTF8fARG(is_utf8, name_end - name, name), + /* This is the special case that exempts Foo->import and + Foo->unimport from being an error even if there's no + import/unimport subroutine */ + if (strEQ(name,"import") || strEQ(name,"unimport")) { + gv = (GV*)sv_2mortal((SV*)newCONSTSUB_flags(NULL, + NULL, 0, 0, NULL)); + } else if (autoload) + gv = gv_autoload_pvn( + ostash, name, name_end - name, GV_AUTOLOAD_ISMETHOD|flags + ); + if (!gv && do_croak) { + /* Right now this is exclusively for the benefit of S_method_common + in pp_hot.c */ + if (stash) { + /* If we can't find an IO::File method, it might be a call on + * a filehandle. If IO:File has not been loaded, try to + * require it first instead of croaking */ + const char *stash_name = HvNAME_get(stash); + if (stash_name && memEQs(stash_name, HvNAMELEN_get(stash), "IO::File") + && !Perl_hv_common(aTHX_ GvHVn(PL_incgv), NULL, + STR_WITH_LEN("IO/File.pm"), 0, + HV_FETCH_ISEXISTS, NULL, 0) + ) { + require_pv("IO/File.pm"); + gv = gv_fetchmeth_pvn(stash, name, name_end - name, 0, flags); + if (gv) + return gv; + } + Perl_croak(aTHX_ + "Can't locate object method \"%" UTF8f + "\" via package \"%" HEKf "\"", + UTF8fARG(is_utf8, name_end - name, name), HEKfARG(HvNAME_HEK(stash))); - } - else { + } + else { SV* packnamesv; - if (last_separator) { - packnamesv = newSVpvn_flags(origname, last_separator - origname, + if (last_separator) { + packnamesv = newSVpvn_flags(origname, last_separator - origname, SVs_TEMP | is_utf8); - } else { - packnamesv = error_report; - } - - Perl_croak(aTHX_ - "Can't locate object method \"%" UTF8f - "\" via package \"%" SVf "\"" - " (perhaps you forgot to load \"%" SVf "\"?)", - UTF8fARG(is_utf8, name_end - name, name), + } else { + packnamesv = error_report; + } + + Perl_croak(aTHX_ + "Can't locate object method \"%" UTF8f + "\" via package \"%" SVf "\"" + " (perhaps you forgot to load \"%" SVf "\"?)", + UTF8fARG(is_utf8, name_end - name, name), SVfARG(packnamesv), SVfARG(packnamesv)); - } - } + } + } } else if (autoload) { - CV* const cv = GvCV(gv); - if (!CvROOT(cv) && !CvXSUB(cv)) { - GV* stubgv; - GV* autogv; - - if (CvANON(cv) || CvLEXICAL(cv)) - stubgv = gv; - else { - stubgv = CvGV(cv); - if (GvCV(stubgv) != cv) /* orphaned import */ - stubgv = gv; - } + CV* const cv = GvCV(gv); + if (!CvROOT(cv) && !CvXSUB(cv)) { + GV* stubgv; + GV* autogv; + + if (CvANON(cv) || CvLEXICAL(cv)) + stubgv = gv; + else { + stubgv = CvGV(cv); + if (GvCV(stubgv) != cv) /* orphaned import */ + stubgv = gv; + } autogv = gv_autoload_pvn(GvSTASH(stubgv), GvNAME(stubgv), GvNAMELEN(stubgv), GV_AUTOLOAD_ISMETHOD | (GvNAMEUTF8(stubgv) ? SVf_UTF8 : 0)); - if (autogv) - gv = autogv; - } + if (autogv) + gv = autogv; + } } return gv; @@ -1228,26 +1254,26 @@ PERL_ARGS_ASSERT_GV_AUTOLOAD_PVN; if (len == S_autolen && memEQ(name, S_autoload, S_autolen)) - return NULL; + return NULL; if (stash) { - if (SvTYPE(stash) < SVt_PVHV) { + if (SvTYPE(stash) < SVt_PVHV) { STRLEN packname_len = 0; const char * const packname_ptr = SvPV_const(MUTABLE_SV(stash), packname_len); packname = newSVpvn_flags(packname_ptr, packname_len, SVs_TEMP | SvUTF8(stash)); - stash = NULL; - } - else - packname = sv_2mortal(newSVhek(HvNAME_HEK(stash))); - if (flags & GV_SUPER) sv_catpvs(packname, "::SUPER"); + stash = NULL; + } + else + packname = sv_2mortal(newSVhek(HvNAME_HEK(stash))); + if (flags & GV_SUPER) sv_catpvs(packname, "::SUPER"); } if (!(gv = gv_fetchmeth_pvn(stash, S_autoload, S_autolen, FALSE, - is_utf8 | (flags & GV_SUPER)))) - return NULL; + is_utf8 | (flags & GV_SUPER)))) + return NULL; cv = GvCV(gv); if (!(CvROOT(cv) || CvXSUB(cv))) - return NULL; + return NULL; /* * Inheriting AUTOLOAD for non-methods no longer works @@ -1258,7 +1284,7 @@ ) Perl_croak(aTHX_ "Use of inherited AUTOLOAD for non-method %" SVf "::%" UTF8f "() is no longer allowed", - SVfARG(packname), + SVfARG(packname), UTF8fARG(is_utf8, len, name)); if (CvISXSUB(cv)) { @@ -1284,34 +1310,34 @@ * We use SvUTF8 for both prototypes and sub names, so if one is * UTF8, the other must be upgraded. */ - CvSTASH_set(cv, stash); - if (SvPOK(cv)) { /* Ouch! */ - SV * const tmpsv = newSVpvn_flags(name, len, is_utf8); - STRLEN ulen; - const char *proto = CvPROTO(cv); - assert(proto); - if (SvUTF8(cv)) - sv_utf8_upgrade_flags_grow(tmpsv, 0, CvPROTOLEN(cv) + 2); - ulen = SvCUR(tmpsv); - SvCUR_set(tmpsv, SvCUR(tmpsv) + 1); /* include null in string */ - sv_catpvn_flags( - tmpsv, proto, CvPROTOLEN(cv), SV_CATBYTES*!SvUTF8(cv) - ); - SvTEMP_on(tmpsv); /* Allow theft */ - sv_setsv_nomg((SV *)cv, tmpsv); - SvTEMP_off(tmpsv); - SvREFCNT_dec_NN(tmpsv); - SvLEN_set(cv, SvCUR(cv) + 1); - SvCUR_set(cv, ulen); - } - else { - sv_setpvn((SV *)cv, name, len); - SvPOK_off(cv); - if (is_utf8) + CvSTASH_set(cv, stash); + if (SvPOK(cv)) { /* Ouch! */ + SV * const tmpsv = newSVpvn_flags(name, len, is_utf8); + STRLEN ulen; + const char *proto = CvPROTO(cv); + assert(proto); + if (SvUTF8(cv)) + sv_utf8_upgrade_flags_grow(tmpsv, 0, CvPROTOLEN(cv) + 2); + ulen = SvCUR(tmpsv); + SvCUR_set(tmpsv, SvCUR(tmpsv) + 1); /* include null in string */ + sv_catpvn_flags( + tmpsv, proto, CvPROTOLEN(cv), SV_CATBYTES*!SvUTF8(cv) + ); + SvTEMP_on(tmpsv); /* Allow theft */ + sv_setsv_nomg((SV *)cv, tmpsv); + SvTEMP_off(tmpsv); + SvREFCNT_dec_NN(tmpsv); + SvLEN_set(cv, SvCUR(cv) + 1); + SvCUR_set(cv, ulen); + } + else { + sv_setpvn((SV *)cv, name, len); + SvPOK_off(cv); + if (is_utf8) SvUTF8_on(cv); - else SvUTF8_off(cv); - } - CvAUTOLOAD_on(cv); + else SvUTF8_off(cv); + } + CvAUTOLOAD_on(cv); } /* @@ -1325,9 +1351,9 @@ ENTER; if (!isGV(vargv)) { - gv_init_pvn(vargv, varstash, S_autoload, S_autolen, 0); + gv_init_pvn(vargv, varstash, S_autoload, S_autolen, 0); #ifdef PERL_DONT_CREATE_GVSV - GvSV(vargv) = newSV(0); + GvSV(vargv) = newSV(0); #endif } LEAVE; @@ -1339,8 +1365,8 @@ /* Ensure SvSETMAGIC() is called if necessary. In particular, to clear tainting if $FOO::AUTOLOAD was previously tainted, but is not now. */ sv_catpvn_flags( - varsv, name, len, - SV_SMAGIC|(is_utf8 ? SV_CATUTF8 : SV_CATBYTES) + varsv, name, len, + SV_SMAGIC|(is_utf8 ? SV_CATUTF8 : SV_CATBYTES) ); if (is_utf8) SvUTF8_on(varsv); @@ -1391,19 +1417,19 @@ if (!(stash = gv_stashpvn(name, len, 0)) || ! GET_HV_FETCH_TIE_FUNC) { - SV * const module = newSVpvn(name, len); - const char type = varname == '[' ? '$' : '%'; - if ( flags & 1 ) - save_scalar(gv); - Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, module, NULL); - assert(sp == PL_stack_sp); - stash = gv_stashpvn(name, len, 0); - if (!stash) - Perl_croak(aTHX_ "panic: Can't use %c%c because %s is not available", - type, varname, name); - else if (! GET_HV_FETCH_TIE_FUNC) - Perl_croak(aTHX_ "panic: Can't use %c%c because %s does not define _tie_it", - type, varname, name); + SV * const module = newSVpvn(name, len); + const char type = varname == '[' ? '$' : '%'; + if ( flags & 1 ) + save_scalar(gv); + Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, module, NULL); + assert(sp == PL_stack_sp); + stash = gv_stashpvn(name, len, 0); + if (!stash) + Perl_croak(aTHX_ "panic: Can't use %c%c because %s is not available", + type, varname, name); + else if (! GET_HV_FETCH_TIE_FUNC) + Perl_croak(aTHX_ "panic: Can't use %c%c because %s does not define _tie_it", + type, varname, name); } /* Now call the tie function. It should be in *gvp. */ assert(gvp); assert(*gvp); @@ -1451,12 +1477,13 @@ Flags may be one of: - GV_ADD - SVf_UTF8 - GV_NOADD_NOINIT - GV_NOINIT - GV_NOEXPAND - GV_ADDMG + GV_ADD Create and initialize the package if doesn't + already exist + GV_NOADD_NOINIT Don't create the package, + GV_ADDMG GV_ADD iff the GV is magical + GV_NOINIT GV_ADD, but don't initialize + GV_NOEXPAND Don't expand SvOK() entries to PVGV + SVf_UTF8 The name is in UTF-8 The most important of which are probably C and C. @@ -1493,44 +1520,50 @@ PERL_ARGS_ASSERT_GV_STASHPVN_INTERNAL; if (tmplen <= sizeof smallbuf) - tmpbuf = smallbuf; + tmpbuf = smallbuf; else - Newx(tmpbuf, tmplen, char); + Newx(tmpbuf, tmplen, char); Copy(name, tmpbuf, namelen, char); tmpbuf[namelen] = ':'; tmpbuf[namelen+1] = ':'; tmpgv = gv_fetchpvn_flags(tmpbuf, tmplen, flags, SVt_PVHV); if (tmpbuf != smallbuf) - Safefree(tmpbuf); + Safefree(tmpbuf); if (!tmpgv || !isGV_with_GP(tmpgv)) - return NULL; + return NULL; stash = GvHV(tmpgv); if (!(flags & ~GV_NOADD_MASK) && !stash) return NULL; assert(stash); if (!HvNAME_get(stash)) { - hv_name_set(stash, name, namelen, flags & SVf_UTF8 ? SVf_UTF8 : 0 ); - - /* FIXME: This is a repeat of logic in gv_fetchpvn_flags */ - /* If the containing stash has multiple effective - names, see that this one gets them, too. */ - if (HvAUX(GvSTASH(tmpgv))->xhv_name_count) - mro_package_moved(stash, NULL, tmpgv, 1); + hv_name_set(stash, name, namelen, flags & SVf_UTF8 ? SVf_UTF8 : 0 ); + + /* FIXME: This is a repeat of logic in gv_fetchpvn_flags */ + /* If the containing stash has multiple effective + names, see that this one gets them, too. */ + if (HvAUX(GvSTASH(tmpgv))->xhv_name_count) + mro_package_moved(stash, NULL, tmpgv, 1); } return stash; } /* -gv_stashsvpvn_cached +=for apidoc gv_stashsvpvn_cached Returns a pointer to the stash for a specified package, possibly -cached. Implements both C and C. +cached. Implements both L> and +L>. + +Requires one of either C or C to be non-null. -Requires one of either namesv or namepv to be non-null. +If the flag C is set, return the stash only if found in the +cache; see L> for details on the other C. -See C> for details on "flags". +Note it is strongly preferred for C to be non-null, for performance +reasons. -Note the sv interface is strongly preferred for performance reasons. +=for apidoc Emnh||GV_CACHE_ONLY +=cut */ #define PERL_ARGS_ASSERT_GV_STASHSVPVN_CACHED \ @@ -1605,12 +1638,10 @@ PERL_ARGS_ASSERT_GV_STASHSV; return gv_stashsvpvn_cached(sv, NULL, 0, flags); } - - GV * -Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, const svtype sv_type) { +Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 flags, const svtype sv_type) { PERL_ARGS_ASSERT_GV_FETCHPV; - return gv_fetchpvn_flags(nambeg, strlen(nambeg), add, sv_type); + return gv_fetchpvn_flags(nambeg, strlen(nambeg), flags, sv_type); } GV * @@ -1632,7 +1663,7 @@ av = GvAVn(gv); GvMULTI_on(gv); sv_magic(MUTABLE_SV(av), MUTABLE_SV(gv), PERL_MAGIC_isa, - NULL, 0); + NULL, 0); } /* This function grabs name and tries to split a stash and glob @@ -1732,14 +1763,14 @@ *name = name_cursor+1; if (*name == name_end) { if (!*gv) { - *gv = MUTABLE_GV(*hv_fetchs(PL_defstash, "main::", TRUE)); - if (SvTYPE(*gv) != SVt_PVGV) { - gv_init_pvn(*gv, PL_defstash, "main::", 6, - GV_ADDMULTI); - GvHV(*gv) = - MUTABLE_HV(SvREFCNT_inc_simple(PL_defstash)); - } - } + *gv = MUTABLE_GV(*hv_fetchs(PL_defstash, "main::", TRUE)); + if (SvTYPE(*gv) != SVt_PVGV) { + gv_init_pvn(*gv, PL_defstash, "main::", 6, + GV_ADDMULTI); + GvHV(*gv) = + MUTABLE_HV(SvREFCNT_inc_simple(PL_defstash)); + } + } goto ok; } } @@ -1933,12 +1964,12 @@ PERL_ARGS_ASSERT_GV_MAGICALIZE; if (stash != PL_defstash) { /* not the main stash */ - /* We only have to check for a few names here: a, b, EXPORT, ISA - and VERSION. All the others apply only to the main stash or to - CORE (which is checked right after this). */ - if (len) { - switch (*name) { - case 'E': + /* We only have to check for a few names here: a, b, EXPORT, ISA + and VERSION. All the others apply only to the main stash or to + CORE (which is checked right after this). */ + if (len) { + switch (*name) { + case 'E': if ( len >= 6 && name[1] == 'X' && (memEQs(name, len, "EXPORT") @@ -1946,46 +1977,46 @@ ||memEQs(name, len, "EXPORT_FAIL") ||memEQs(name, len, "EXPORT_TAGS")) ) - GvMULTI_on(gv); - break; - case 'I': + GvMULTI_on(gv); + break; + case 'I': if (memEQs(name, len, "ISA")) - gv_magicalize_isa(gv); - break; - case 'V': + gv_magicalize_isa(gv); + break; + case 'V': if (memEQs(name, len, "VERSION")) - GvMULTI_on(gv); - break; - case 'a': + GvMULTI_on(gv); + break; + case 'a': if (stash == PL_debstash && memEQs(name, len, "args")) { - GvMULTI_on(gv_AVadd(gv)); - break; + GvMULTI_on(gv_AVadd(gv)); + break; } /* FALLTHROUGH */ - case 'b': - if (len == 1 && sv_type == SVt_PV) - GvMULTI_on(gv); - /* FALLTHROUGH */ - default: - goto try_core; - } - goto ret; - } + case 'b': + if (len == 1 && sv_type == SVt_PV) + GvMULTI_on(gv); + /* FALLTHROUGH */ + default: + goto try_core; + } + goto ret; + } try_core: - if (len > 1 /* shortest is uc */ && HvNAMELEN_get(stash) == 4) { - /* Avoid null warning: */ - const char * const stashname = HvNAME(stash); assert(stashname); - if (strBEGINs(stashname, "CORE")) - S_maybe_add_coresub(aTHX_ 0, gv, name, len); - } + if (len > 1 /* shortest is uc */ && HvNAMELEN_get(stash) == 4) { + /* Avoid null warning: */ + const char * const stashname = HvNAME(stash); assert(stashname); + if (strBEGINs(stashname, "CORE")) + S_maybe_add_coresub(aTHX_ 0, gv, name, len); + } } else if (len > 1) { #ifndef EBCDIC - if (*name > 'V' ) { - NOOP; - /* Nothing else to do. - The compiler will probably turn the switch statement into a - branch table. Make sure we avoid even that small overhead for + if (*name > 'V' ) { + NOOP; + /* Nothing else to do. + The compiler will probably turn the switch statement into a + branch table. Make sure we avoid even that small overhead for the common case of lower case variable names. (On EBCDIC platforms, we can't just do: if (NATIVE_TO_ASCII(*name) > NATIVE_TO_ASCII('V') ) { @@ -1993,19 +2024,19 @@ C1 (non-ASCII) controls on those platforms, so the remapping would make them larger than 'V') */ - } else + } else #endif - { - switch (*name) { - case 'A': + { + switch (*name) { + case 'A': if (memEQs(name, len, "ARGV")) { - IoFLAGS(GvIOn(gv)) |= IOf_ARGV|IOf_START; - } + IoFLAGS(GvIOn(gv)) |= IOf_ARGV|IOf_START; + } else if (memEQs(name, len, "ARGVOUT")) { - GvMULTI_on(gv); - } - break; - case 'E': + GvMULTI_on(gv); + } + break; + case 'E': if ( len >= 6 && name[1] == 'X' && (memEQs(name, len, "EXPORT") @@ -2013,51 +2044,51 @@ ||memEQs(name, len, "EXPORT_FAIL") ||memEQs(name, len, "EXPORT_TAGS")) ) - GvMULTI_on(gv); - break; - case 'I': + GvMULTI_on(gv); + break; + case 'I': if (memEQs(name, len, "ISA")) { - gv_magicalize_isa(gv); - } - break; - case 'S': + gv_magicalize_isa(gv); + } + break; + case 'S': if (memEQs(name, len, "SIG")) { - HV *hv; - I32 i; - if (!PL_psig_name) { - Newxz(PL_psig_name, 2 * SIG_SIZE, SV*); - Newxz(PL_psig_pend, SIG_SIZE, int); - PL_psig_ptr = PL_psig_name + SIG_SIZE; - } else { - /* I think that the only way to get here is to re-use an - embedded perl interpreter, where the previous - use didn't clean up fully because - PL_perl_destruct_level was 0. I'm not sure that we - "support" that, in that I suspect in that scenario - there are sufficient other garbage values left in the - interpreter structure that something else will crash - before we get here. I suspect that this is one of - those "doctor, it hurts when I do this" bugs. */ - Zero(PL_psig_name, 2 * SIG_SIZE, SV*); - Zero(PL_psig_pend, SIG_SIZE, int); - } - GvMULTI_on(gv); - hv = GvHVn(gv); - hv_magic(hv, NULL, PERL_MAGIC_sig); - for (i = 1; i < SIG_SIZE; i++) { - SV * const * const init = hv_fetch(hv, PL_sig_name[i], strlen(PL_sig_name[i]), 1); - if (init) - sv_setsv(*init, &PL_sv_undef); - } - } - break; - case 'V': + HV *hv; + I32 i; + if (!PL_psig_name) { + Newxz(PL_psig_name, 2 * SIG_SIZE, SV*); + Newxz(PL_psig_pend, SIG_SIZE, int); + PL_psig_ptr = PL_psig_name + SIG_SIZE; + } else { + /* I think that the only way to get here is to re-use an + embedded perl interpreter, where the previous + use didn't clean up fully because + PL_perl_destruct_level was 0. I'm not sure that we + "support" that, in that I suspect in that scenario + there are sufficient other garbage values left in the + interpreter structure that something else will crash + before we get here. I suspect that this is one of + those "doctor, it hurts when I do this" bugs. */ + Zero(PL_psig_name, 2 * SIG_SIZE, SV*); + Zero(PL_psig_pend, SIG_SIZE, int); + } + GvMULTI_on(gv); + hv = GvHVn(gv); + hv_magic(hv, NULL, PERL_MAGIC_sig); + for (i = 1; i < SIG_SIZE; i++) { + SV * const * const init = hv_fetch(hv, PL_sig_name[i], strlen(PL_sig_name[i]), 1); + if (init) + sv_setsv(*init, &PL_sv_undef); + } + } + break; + case 'V': if (memEQs(name, len, "VERSION")) - GvMULTI_on(gv); - break; + GvMULTI_on(gv); + break; case '\003': /* $^CHILD_ERROR_NATIVE */ if (memEQs(name, len, "\003HILD_ERROR_NATIVE")) - goto magicalize; + goto magicalize; /* @{^CAPTURE} %{^CAPTURE} */ if (memEQs(name, len, "\003APTURE")) { AV* const av = GvAVn(gv); @@ -2072,30 +2103,30 @@ if (memEQs(name, len, "\003APTURE_ALL")) { require_tie_mod_s(gv, '-', "Tie::Hash::NamedCapture",0); } - break; - case '\005': /* $^ENCODING */ + break; + case '\005': /* $^ENCODING */ if (memEQs(name, len, "\005NCODING")) - goto magicalize; - break; - case '\007': /* $^GLOBAL_PHASE */ + goto magicalize; + break; + case '\007': /* $^GLOBAL_PHASE */ if (memEQs(name, len, "\007LOBAL_PHASE")) - goto ro_magicalize; - break; - case '\014': /* $^LAST_FH */ + goto ro_magicalize; + break; + case '\014': /* $^LAST_FH */ if (memEQs(name, len, "\014AST_FH")) - goto ro_magicalize; - break; + goto ro_magicalize; + break; case '\015': /* $^MATCH */ if (memEQs(name, len, "\015ATCH")) { paren = RX_BUFF_IDX_CARET_FULLMATCH; goto storeparen; } break; - case '\017': /* $^OPEN */ + case '\017': /* $^OPEN */ if (memEQs(name, len, "\017PEN")) - goto magicalize; - break; - case '\020': /* $^PREMATCH $^POSTMATCH */ + goto magicalize; + break; + case '\020': /* $^PREMATCH $^POSTMATCH */ if (memEQs(name, len, "\020REMATCH")) { paren = RX_BUFF_IDX_CARET_PREMATCH; goto storeparen; @@ -2104,73 +2135,73 @@ paren = RX_BUFF_IDX_CARET_POSTMATCH; goto storeparen; } - break; + break; case '\023': if (memEQs(name, len, "\023AFE_LOCALES")) - goto ro_magicalize; - break; - case '\024': /* ${^TAINT} */ + goto ro_magicalize; + break; + case '\024': /* ${^TAINT} */ if (memEQs(name, len, "\024AINT")) - goto ro_magicalize; - break; - case '\025': /* ${^UNICODE}, ${^UTF8LOCALE} */ + goto ro_magicalize; + break; + case '\025': /* ${^UNICODE}, ${^UTF8LOCALE} */ if (memEQs(name, len, "\025NICODE")) - goto ro_magicalize; + goto ro_magicalize; if (memEQs(name, len, "\025TF8LOCALE")) - goto ro_magicalize; + goto ro_magicalize; if (memEQs(name, len, "\025TF8CACHE")) - goto magicalize; - break; - case '\027': /* $^WARNING_BITS */ + goto magicalize; + break; + case '\027': /* $^WARNING_BITS */ if (memEQs(name, len, "\027ARNING_BITS")) - goto magicalize; + goto magicalize; #ifdef WIN32 else if (memEQs(name, len, "\027IN32_SLOPPY_STAT")) - goto magicalize; + goto magicalize; #endif - break; - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - /* Ensures that we have an all-digit variable, ${"1foo"} fails - this test */ + break; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + /* Ensures that we have an all-digit variable, ${"1foo"} fails + this test */ UV uv; if (!grok_atoUV(name, &uv, NULL) || uv > I32_MAX) goto ret; /* XXX why are we using a SSize_t? */ paren = (SSize_t)(I32)uv; goto storeparen; - } - } - } + } + } + } } else { - /* Names of length 1. (Or 0. But name is NUL terminated, so that will - be case '\0' in this switch statement (ie a default case) */ - switch (*name) { - case '&': /* $& */ + /* Names of length 1. (Or 0. But name is NUL terminated, so that will + be case '\0' in this switch statement (ie a default case) */ + switch (*name) { + case '&': /* $& */ paren = RX_BUFF_IDX_FULLMATCH; goto sawampersand; - case '`': /* $` */ + case '`': /* $` */ paren = RX_BUFF_IDX_PREMATCH; goto sawampersand; - case '\'': /* $' */ + case '\'': /* $' */ paren = RX_BUFF_IDX_POSTMATCH; sawampersand: #ifdef PERL_SAWAMPERSAND - if (!( - sv_type == SVt_PVAV || - sv_type == SVt_PVHV || - sv_type == SVt_PVCV || - sv_type == SVt_PVFM || - sv_type == SVt_PVIO - )) { PL_sawampersand |= + if (!( + sv_type == SVt_PVAV || + sv_type == SVt_PVHV || + sv_type == SVt_PVCV || + sv_type == SVt_PVFM || + sv_type == SVt_PVIO + )) { PL_sawampersand |= (*name == '`') ? SAWAMPERSAND_LEFT : (*name == '&') @@ -2196,29 +2227,29 @@ sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, NULL, paren); break; - case ':': /* $: */ - sv_setpv(GvSVn(gv),PL_chopset); - goto magicalize; + case ':': /* $: */ + sv_setpv(GvSVn(gv),PL_chopset); + goto magicalize; - case '?': /* $? */ + case '?': /* $? */ #ifdef COMPLEX_STATUS - SvUPGRADE(GvSVn(gv), SVt_PVLV); + SvUPGRADE(GvSVn(gv), SVt_PVLV); #endif - goto magicalize; + goto magicalize; - case '!': /* $! */ - GvMULTI_on(gv); - /* If %! has been used, automatically load Errno.pm. */ + case '!': /* $! */ + GvMULTI_on(gv); + /* If %! has been used, automatically load Errno.pm. */ - sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len); + sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len); /* magicalization must be done before require_tie_mod_s is called */ - if (sv_type == SVt_PVHV || sv_type == SVt_PVGV) + if (sv_type == SVt_PVHV || sv_type == SVt_PVGV) require_tie_mod_s(gv, '!', "Errno", 1); - break; - case '-': /* $-, %-, @- */ - case '+': /* $+, %+, @+ */ + break; + case '-': /* $-, %-, @- */ + case '+': /* $+, %+, @+ */ GvMULTI_on(gv); /* no used once warnings here */ { /* $- $+ */ sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len); @@ -2237,81 +2268,81 @@ SvREADONLY_on(av); } break; - case '*': /* $* */ - case '#': /* $# */ + case '*': /* $* */ + case '#': /* $# */ if (sv_type == SVt_PV) /* diag_listed_as: $* is no longer supported as of Perl 5.30 */ Perl_croak(aTHX_ "$%c is no longer supported as of Perl 5.30", *name); break; - case '\010': /* $^H */ - { - HV *const hv = GvHVn(gv); - hv_magic(hv, NULL, PERL_MAGIC_hints); - } - goto magicalize; - case '\023': /* $^S */ - ro_magicalize: - SvREADONLY_on(GvSVn(gv)); - /* FALLTHROUGH */ - case '0': /* $0 */ - case '^': /* $^ */ - case '~': /* $~ */ - case '=': /* $= */ - case '%': /* $% */ - case '.': /* $. */ - case '(': /* $( */ - case ')': /* $) */ - case '<': /* $< */ - case '>': /* $> */ - case '\\': /* $\ */ - case '/': /* $/ */ - case '|': /* $| */ - case '$': /* $$ */ - case '[': /* $[ */ - case '\001': /* $^A */ - case '\003': /* $^C */ - case '\004': /* $^D */ - case '\005': /* $^E */ - case '\006': /* $^F */ - case '\011': /* $^I, NOT \t in EBCDIC */ - case '\016': /* $^N */ - case '\017': /* $^O */ - case '\020': /* $^P */ - case '\024': /* $^T */ - case '\027': /* $^W */ - magicalize: - sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len); - break; - - case '\014': /* $^L */ - sv_setpvs(GvSVn(gv),"\f"); - break; - case ';': /* $; */ - sv_setpvs(GvSVn(gv),"\034"); - break; - case ']': /* $] */ - { - SV * const sv = GvSV(gv); - if (!sv_derived_from(PL_patchlevel, "version")) - upg_version(PL_patchlevel, TRUE); - GvSV(gv) = vnumify(PL_patchlevel); - SvREADONLY_on(GvSV(gv)); - SvREFCNT_dec(sv); - } - break; - case '\026': /* $^V */ - { - SV * const sv = GvSV(gv); - GvSV(gv) = new_version(PL_patchlevel); - SvREADONLY_on(GvSV(gv)); - SvREFCNT_dec(sv); - } - break; - case 'a': - case 'b': - if (sv_type == SVt_PV) - GvMULTI_on(gv); - } + case '\010': /* $^H */ + { + HV *const hv = GvHVn(gv); + hv_magic(hv, NULL, PERL_MAGIC_hints); + } + goto magicalize; + case '\023': /* $^S */ + ro_magicalize: + SvREADONLY_on(GvSVn(gv)); + /* FALLTHROUGH */ + case '0': /* $0 */ + case '^': /* $^ */ + case '~': /* $~ */ + case '=': /* $= */ + case '%': /* $% */ + case '.': /* $. */ + case '(': /* $( */ + case ')': /* $) */ + case '<': /* $< */ + case '>': /* $> */ + case '\\': /* $\ */ + case '/': /* $/ */ + case '|': /* $| */ + case '$': /* $$ */ + case '[': /* $[ */ + case '\001': /* $^A */ + case '\003': /* $^C */ + case '\004': /* $^D */ + case '\005': /* $^E */ + case '\006': /* $^F */ + case '\011': /* $^I, NOT \t in EBCDIC */ + case '\016': /* $^N */ + case '\017': /* $^O */ + case '\020': /* $^P */ + case '\024': /* $^T */ + case '\027': /* $^W */ + magicalize: + sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len); + break; + + case '\014': /* $^L */ + sv_setpvs(GvSVn(gv),"\f"); + break; + case ';': /* $; */ + sv_setpvs(GvSVn(gv),"\034"); + break; + case ']': /* $] */ + { + SV * const sv = GvSV(gv); + if (!sv_derived_from(PL_patchlevel, "version")) + upg_version(PL_patchlevel, TRUE); + GvSV(gv) = vnumify(PL_patchlevel); + SvREADONLY_on(GvSV(gv)); + SvREFCNT_dec(sv); + } + break; + case '\026': /* $^V */ + { + SV * const sv = GvSV(gv); + GvSV(gv) = new_version(PL_patchlevel); + SvREADONLY_on(GvSV(gv)); + SvREFCNT_dec(sv); + } + break; + case 'a': + case 'b': + if (sv_type == SVt_PV) + GvMULTI_on(gv); + } } ret: @@ -2369,9 +2400,78 @@ } } +/* +=for apidoc gv_fetchpv +=for apidoc_item |GV *|gv_fetchpvn|const char * nambeg|STRLEN full_len|I32 flags|const svtype sv_type +=for apidoc_item ||gv_fetchpvn_flags +=for apidoc_item |GV *|gv_fetchpvs|"name"|I32 flags|const svtype sv_type +=for apidoc_item ||gv_fetchsv +=for apidoc_item |GV *|gv_fetchsv_nomg|SV *name|I32 flags|const svtype sv_type + +These all return the GV of type C whose name is given by the inputs, +or NULL if no GV of that name and type could be found. See L. + +The only differences are how the input name is specified, and if 'get' magic is +normally used in getting that name. + +Don't be fooled by the fact that only one form has C in its name. They +all have a C parameter in fact, and all the flag bits have the same +meanings for all + +If any of the flags C, C, C, C, or +C is set, a GV is created if none already exists for the input name +and type. However, C will only do the creation for magical GV's. +For all of these flags except C, C> is called after +the addition. C is used when the caller expects that adding won't +be necessary because the symbol should already exist; but if not, add it +anyway, with a warning that it was unexpectedly absent. The C +flag means to pretend that the GV has been seen before (I, suppress "Used +once" warnings). + +The flag C causes C> not be to called if the +GV existed but isn't PVGV. + +If the C bit is set, the name is treated as being encoded in UTF-8; +otherwise the name won't be considered to be UTF-8 in the C-named forms, +and the UTF-8ness of the underlying SVs will be used in the C forms. + +If the flag C is set, the caller warrants that the input name is a +plain symbol name, not qualified with a package, otherwise the name is checked +for being a qualified one. + +In C, C is a C string, NUL-terminated with no intermediate +NULs. + +In C, C is a literal C string, hence is enclosed in +double quotes. + +C and C are identical. In these, is +a Perl string whose byte length is given by C, and may contain +embedded NULs. + +In C and C, the name is extracted from the PV of +the input C SV. The only difference between these two forms is that +'get' magic is normally done on C in C, and always skipped +with C. Including C in the C parameter +to C makes it behave identically to C. + +=for apidoc Amnh||GV_ADD +=for apidoc Amnh||GV_ADDMG +=for apidoc Amnh||GV_ADDMULTI +=for apidoc Amnh||GV_ADDWARN +=for apidoc Amnh||GV_NOADD_NOINIT +=for apidoc Amnh||GV_NOINIT +=for apidoc Amnh||GV_NOTQUAL +=for apidoc Amnh||GV_NO_SVGMAGIC +=for apidoc Amnh||SVf_UTF8 + +=cut +*/ + GV * Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags, - const svtype sv_type) + const svtype sv_type) { const char *name = nambeg; GV *gv = NULL; @@ -2410,8 +2510,8 @@ /* By this point we should have a stash and a name */ gvp = (GV**)hv_fetch(stash,name,is_utf8 ? -(I32)len : (I32)len,add); if (!gvp || *gvp == (const GV *)&PL_sv_undef) { - if (addmg) gv = (GV *)newSV(0); - else return NULL; + if (addmg) gv = (GV *)newSV(0); /* tentatively */ + else return NULL; } else gv = *gvp, addmg = 0; /* From this point on, addmg means gv has not been inserted in the @@ -2421,7 +2521,7 @@ /* The GV already exists, so return it, but check if we need to do * anything else with it before that. */ - if (add) { + if (add) { /* This is the heuristic that handles if a variable triggers the * 'used only once' warning. If there's already a GV in the stash * with this name, then we assume that the variable has been used @@ -2430,24 +2530,24 @@ * BEGIN { $a = 1; $::{foo} = *a }; () = $foo * not warning about $main::foo being used just once */ - GvMULTI_on(gv); - gv_init_svtype(gv, sv_type); + GvMULTI_on(gv); + gv_init_svtype(gv, sv_type); /* You reach this path once the typeglob has already been created, either by the same or a different sigil. If this path didn't exist, then (say) referencing $! first, and %! second would mean that %! was not handled correctly. */ - if (len == 1 && stash == PL_defstash) { + if (len == 1 && stash == PL_defstash) { maybe_multimagic_gv(gv, name, sv_type); - } + } else if (sv_type == SVt_PVAV - && memEQs(name, len, "ISA") - && (!GvAV(gv) || !SvSMAGICAL(GvAV(gv)))) - gv_magicalize_isa(gv); - } - return gv; + && memEQs(name, len, "ISA") + && (!GvAV(gv) || !SvSMAGICAL(GvAV(gv)))) + gv_magicalize_isa(gv); + } + return gv; } else if (no_init) { - assert(!addmg); - return gv; + assert(!addmg); + return gv; } /* If GV_NOEXPAND is true and what we got off the stash is a ref, * don't expand it to a glob. This is an optimization so that things @@ -2456,8 +2556,8 @@ * stashes. */ else if (no_expand && SvROK(gv)) { - assert(!addmg); - return gv; + assert(!addmg); + return gv; } /* Adding a new symbol. @@ -2470,9 +2570,9 @@ faking_it = SvOK(gv); if (add & GV_ADDWARN) - Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL), - "Had to create %" UTF8f " unexpectedly", - UTF8fARG(is_utf8, name_end-nambeg, nambeg)); + Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL), + "Had to create %" UTF8f " unexpectedly", + UTF8fARG(is_utf8, name_end-nambeg, nambeg)); gv_init_pvn(gv, stash, name, len, (add & GV_ADDMULTI)|is_utf8); if ( full_len != 0 @@ -2517,8 +2617,8 @@ if (hv && (name = HvNAME(hv))) { const STRLEN len = HvNAMELEN(hv); if (keepmain || ! memBEGINs(name, len, "main")) { - sv_catpvn_flags(sv,name,len,HvNAMEUTF8(hv)?SV_CATUTF8:SV_CATBYTES); - sv_catpvs(sv,"::"); + sv_catpvn_flags(sv,name,len,HvNAMEUTF8(hv)?SV_CATUTF8:SV_CATBYTES); + sv_catpvs(sv,"::"); } } else sv_catpvs(sv,"__ANON__::"); @@ -2548,7 +2648,7 @@ PERL_ARGS_ASSERT_GV_CHECK; if (!SvOOK(stash)) - return; + return; assert(HvARRAY(stash)); @@ -2556,21 +2656,21 @@ const HE *entry; /* mark stash is being scanned, to avoid recursing */ HvAUX(stash)->xhv_aux_flags |= HvAUXf_SCAN_STASH; - for (entry = HvARRAY(stash)[i]; entry; entry = HeNEXT(entry)) { + for (entry = HvARRAY(stash)[i]; entry; entry = HeNEXT(entry)) { GV *gv; HV *hv; - STRLEN keylen = HeKLEN(entry); + STRLEN keylen = HeKLEN(entry); const char * const key = HeKEY(entry); - if (keylen >= 2 && key[keylen-2] == ':' && key[keylen-1] == ':' && - (gv = MUTABLE_GV(HeVAL(entry))) && isGV(gv) && (hv = GvHV(gv))) - { - if (hv != PL_defstash && hv != stash + if (keylen >= 2 && key[keylen-2] == ':' && key[keylen-1] == ':' && + (gv = MUTABLE_GV(HeVAL(entry))) && isGV(gv) && (hv = GvHV(gv))) + { + if (hv != PL_defstash && hv != stash && !(SvOOK(hv) && (HvAUX(hv)->xhv_aux_flags & HvAUXf_SCAN_STASH)) ) - gv_check(hv); /* nested package */ - } + gv_check(hv); /* nested package */ + } else if ( HeKLEN(entry) != 0 && *HeKEY(entry) != '_' && isIDFIRST_lazy_if_safe(HeKEY(entry), @@ -2578,24 +2678,24 @@ HeUTF8(entry)) ) { const char *file; - gv = MUTABLE_GV(HeVAL(entry)); - if (SvTYPE(gv) != SVt_PVGV || GvMULTI(gv)) - continue; - file = GvFILE(gv); - CopLINE_set(PL_curcop, GvLINE(gv)); + gv = MUTABLE_GV(HeVAL(entry)); + if (SvTYPE(gv) != SVt_PVGV || GvMULTI(gv)) + continue; + file = GvFILE(gv); + CopLINE_set(PL_curcop, GvLINE(gv)); #ifdef USE_ITHREADS - CopFILE(PL_curcop) = (char *)file; /* set for warning */ + CopFILE(PL_curcop) = (char *)file; /* set for warning */ #else - CopFILEGV(PL_curcop) - = gv_fetchfile_flags(file, HEK_LEN(GvFILE_HEK(gv)), 0); + CopFILEGV(PL_curcop) + = gv_fetchfile_flags(file, HEK_LEN(GvFILE_HEK(gv)), 0); #endif - Perl_warner(aTHX_ packWARN(WARN_ONCE), - "Name \"%" HEKf "::%" HEKf - "\" used only once: possible typo", + Perl_warner(aTHX_ packWARN(WARN_ONCE), + "Name \"%" HEKf "::%" HEKf + "\" used only once: possible typo", HEKfARG(HvNAME_HEK(stash)), HEKfARG(GvNAME_HEK(gv))); - } - } + } + } HvAUX(stash)->xhv_aux_flags &= ~HvAUXf_SCAN_STASH; } } @@ -2618,17 +2718,17 @@ Perl_gp_ref(pTHX_ GP *gp) { if (!gp) - return NULL; + return NULL; gp->gp_refcnt++; if (gp->gp_cv) { - if (gp->gp_cvgen) { - /* If the GP they asked for a reference to contains + if (gp->gp_cvgen) { + /* If the GP they asked for a reference to contains a method cache entry, clear it first, so that we don't infect them with our cached entry */ - SvREFCNT_dec_NN(gp->gp_cv); - gp->gp_cv = NULL; - gp->gp_cvgen = 0; - } + SvREFCNT_dec_NN(gp->gp_cv); + gp->gp_cv = NULL; + gp->gp_cvgen = 0; + } } return gp; } @@ -2640,19 +2740,19 @@ int attempts = 100; if (!gv || !isGV_with_GP(gv) || !(gp = GvGP(gv))) - return; + return; if (gp->gp_refcnt == 0) { - Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL), - "Attempt to free unreferenced glob pointers" - pTHX__FORMAT pTHX__VALUE); + Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL), + "Attempt to free unreferenced glob pointers" + pTHX__FORMAT pTHX__VALUE); return; } if (gp->gp_refcnt > 1) { borrowed: - if (gp->gp_egv == gv) - gp->gp_egv = 0; - gp->gp_refcnt--; - GvGP_set(gv, NULL); + if (gp->gp_egv == gv) + gp->gp_egv = 0; + gp->gp_refcnt--; + GvGP_set(gv, NULL); return; } @@ -2676,7 +2776,7 @@ gp->gp_form = NULL; if (file_hek) - unshare_hek(file_hek); + unshare_hek(file_hek); SvREFCNT_dec(sv); SvREFCNT_dec(av); @@ -2690,18 +2790,18 @@ HEKfARG(hvname_hek))); (void)hv_deletehek(PL_stashcache, hvname_hek, G_DISCARD); } - SvREFCNT_dec(hv); + SvREFCNT_dec(hv); } if (io && SvREFCNT(io) == 1 && IoIFP(io) - && (IoTYPE(io) == IoTYPE_WRONLY || - IoTYPE(io) == IoTYPE_RDWR || - IoTYPE(io) == IoTYPE_APPEND) - && ckWARN_d(WARN_IO) - && IoIFP(io) != PerlIO_stdin() - && IoIFP(io) != PerlIO_stdout() - && IoIFP(io) != PerlIO_stderr() - && !(IoFLAGS(io) & IOf_FAKE_DIRP)) - io_close(io, gv, FALSE, TRUE); + && (IoTYPE(io) == IoTYPE_WRONLY || + IoTYPE(io) == IoTYPE_RDWR || + IoTYPE(io) == IoTYPE_APPEND) + && ckWARN_d(WARN_IO) + && IoIFP(io) != PerlIO_stdin() + && IoIFP(io) != PerlIO_stdout() + && IoIFP(io) != PerlIO_stderr() + && !(IoFLAGS(io) & IOf_FAKE_DIRP)) + io_close(io, gv, FALSE, TRUE); SvREFCNT_dec(io); SvREFCNT_dec(cv); SvREFCNT_dec(form); @@ -2718,10 +2818,10 @@ && !gp->gp_form) break; if (--attempts == 0) { - Perl_die(aTHX_ - "panic: gp_free failed to free glob pointer - " - "something is repeatedly re-creating entries" - ); + Perl_die(aTHX_ + "panic: gp_free failed to free glob pointer - " + "something is repeatedly re-creating entries" + ); } } @@ -2740,14 +2840,14 @@ PERL_ARGS_ASSERT_MAGIC_FREEOVRLD; if (amtp && AMT_AMAGIC(amtp)) { - int i; - for (i = 1; i < NofAMmeth; i++) { - CV * const cv = amtp->table[i]; - if (cv) { - SvREFCNT_dec_NN(MUTABLE_SV(cv)); - amtp->table[i] = NULL; - } - } + int i; + for (i = 1; i < NofAMmeth; i++) { + CV * const cv = amtp->table[i]; + if (cv) { + SvREFCNT_dec_NN(MUTABLE_SV(cv)); + amtp->table[i] = NULL; + } + } } return 0; } @@ -2773,7 +2873,7 @@ if (mg) { const AMT * const amtp = (AMT*)mg->mg_ptr; if (amtp->was_ok_sub == newgen) { - return AMT_AMAGIC(amtp) ? 1 : 0; + return AMT_AMAGIC(amtp) ? 1 : 0; } sv_unmagic(MUTABLE_SV(stash), PERL_MAGIC_overload_table); } @@ -2801,19 +2901,19 @@ if (!gv) { if (!gv_fetchmeth_pvn(stash, "((", 2, -1, 0)) - goto no_table; + goto no_table; } #ifdef PERL_DONT_CREATE_GVSV else if (!sv) { - NOOP; /* Equivalent to !SvTRUE and !SvOK */ + NOOP; /* Equivalent to !SvTRUE and !SvOK */ } #endif else if (SvTRUE(sv)) /* don't need to set overloading here because fallback => 1 * is the default setting for classes without overloading */ - amt.fallback=AMGfallYES; + amt.fallback=AMGfallYES; else if (SvOK(sv)) { - amt.fallback=AMGfallNEVER; + amt.fallback=AMGfallNEVER; filled = 1; } else { @@ -2825,21 +2925,21 @@ HvAUX(stash)->xhv_aux_flags &= ~HvAUXf_NO_DEREF; for (i = 1; i < NofAMmeth; i++) { - const char * const cooky = PL_AMG_names[i]; - /* Human-readable form, for debugging: */ - const char * const cp = AMG_id2name(i); - const STRLEN l = PL_AMG_namelens[i]; - - DEBUG_o( Perl_deb(aTHX_ "Checking overloading of \"%s\" in package \"%.256s\"\n", - cp, HvNAME_get(stash)) ); - /* don't fill the cache while looking up! - Creation of inheritance stubs in intermediate packages may - conflict with the logic of runtime method substitution. - Indeed, for inheritance A -> B -> C, if C overloads "+0", - then we could have created stubs for "(+0" in A and C too. - But if B overloads "bool", we may want to use it for - numifying instead of C's "+0". */ - gv = Perl_gv_fetchmeth_pvn(aTHX_ stash, cooky, l, -1, 0); + const char * const cooky = PL_AMG_names[i]; + /* Human-readable form, for debugging: */ + const char * const cp = AMG_id2name(i); + const STRLEN l = PL_AMG_namelens[i]; + + DEBUG_o( Perl_deb(aTHX_ "Checking overloading of \"%s\" in package \"%.256s\"\n", + cp, HvNAME_get(stash)) ); + /* don't fill the cache while looking up! + Creation of inheritance stubs in intermediate packages may + conflict with the logic of runtime method substitution. + Indeed, for inheritance A -> B -> C, if C overloads "+0", + then we could have created stubs for "(+0" in A and C too. + But if B overloads "bool", we may want to use it for + numifying instead of C's "+0". */ + gv = Perl_gv_fetchmeth_pvn(aTHX_ stash, cooky, l, -1, 0); cv = 0; if (gv && (cv = GvCV(gv)) && CvHASGV(cv)) { const HEK * const gvhek = CvGvNAME_HEK(cv); @@ -2848,49 +2948,49 @@ if (memEQs(HEK_KEY(gvhek), HEK_LEN(gvhek), "nil") && stashek && memEQs(HEK_KEY(stashek), HEK_LEN(stashek), "overload")) { - /* This is a hack to support autoloading..., while - knowing *which* methods were declared as overloaded. */ - /* GvSV contains the name of the method. */ - GV *ngv = NULL; - SV *gvsv = GvSV(gv); - - DEBUG_o( Perl_deb(aTHX_ "Resolving method \"%" SVf256\ - "\" for overloaded \"%s\" in package \"%.256s\"\n", - (void*)GvSV(gv), cp, HvNAME(stash)) ); - if (!gvsv || !SvPOK(gvsv) - || !(ngv = gv_fetchmethod_sv_flags(stash, gvsv, 0))) - { - /* Can be an import stub (created by "can"). */ - if (destructing) { - return -1; - } - else { - const SV * const name = (gvsv && SvPOK(gvsv)) + /* This is a hack to support autoloading..., while + knowing *which* methods were declared as overloaded. */ + /* GvSV contains the name of the method. */ + GV *ngv = NULL; + SV *gvsv = GvSV(gv); + + DEBUG_o( Perl_deb(aTHX_ "Resolving method \"%" SVf256\ + "\" for overloaded \"%s\" in package \"%.256s\"\n", + (void*)GvSV(gv), cp, HvNAME(stash)) ); + if (!gvsv || !SvPOK(gvsv) + || !(ngv = gv_fetchmethod_sv_flags(stash, gvsv, 0))) + { + /* Can be an import stub (created by "can"). */ + if (destructing) { + return -1; + } + else { + const SV * const name = (gvsv && SvPOK(gvsv)) ? gvsv : newSVpvs_flags("???", SVs_TEMP); - /* diag_listed_as: Can't resolve method "%s" overloading "%s" in package "%s" */ - Perl_croak(aTHX_ "%s method \"%" SVf256 - "\" overloading \"%s\" "\ - "in package \"%" HEKf256 "\"", - (GvCVGEN(gv) ? "Stub found while resolving" - : "Can't resolve"), - SVfARG(name), cp, + /* diag_listed_as: Can't resolve method "%s" overloading "%s" in package "%s" */ + Perl_croak(aTHX_ "%s method \"%" SVf256 + "\" overloading \"%s\" "\ + "in package \"%" HEKf256 "\"", + (GvCVGEN(gv) ? "Stub found while resolving" + : "Can't resolve"), + SVfARG(name), cp, HEKfARG( - HvNAME_HEK(stash) - )); - } - } - cv = GvCV(gv = ngv); - } - DEBUG_o( Perl_deb(aTHX_ "Overloading \"%s\" in package \"%.256s\" via \"%.256s::%.256s\"\n", - cp, HvNAME_get(stash), HvNAME_get(GvSTASH(CvGV(cv))), - GvNAME(CvGV(cv))) ); - filled = 1; - } else if (gv) { /* Autoloaded... */ - cv = MUTABLE_CV(gv); - filled = 1; - } - amt.table[i]=MUTABLE_CV(SvREFCNT_inc_simple(cv)); + HvNAME_HEK(stash) + )); + } + } + cv = GvCV(gv = ngv); + } + DEBUG_o( Perl_deb(aTHX_ "Overloading \"%s\" in package \"%.256s\" via \"%.256s::%.256s\"\n", + cp, HvNAME_get(stash), HvNAME_get(GvSTASH(CvGV(cv))), + GvNAME(CvGV(cv))) ); + filled = 1; + } else if (gv) { /* Autoloaded... */ + cv = MUTABLE_CV(gv); + filled = 1; + } + amt.table[i]=MUTABLE_CV(SvREFCNT_inc_simple(cv)); if (gv) { switch (i) { @@ -2914,7 +3014,7 @@ if (filled) { AMT_AMAGIC_on(&amt); sv_magic(MUTABLE_SV(stash), 0, PERL_MAGIC_overload_table, - (char*)&amt, sizeof(AMT)); + (char*)&amt, sizeof(AMT)); return TRUE; } } @@ -2922,7 +3022,7 @@ no_table: AMT_AMAGIC_off(&amt); sv_magic(MUTABLE_SV(stash), 0, PERL_MAGIC_overload_table, - (char*)&amt, sizeof(AMTS)); + (char*)&amt, sizeof(AMTS)); return 0; } @@ -2944,27 +3044,27 @@ mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table); if (!mg) { do_update: - if (Gv_AMupdate(stash, 0) == -1) - return NULL; - mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table); + if (Gv_AMupdate(stash, 0) == -1) + return NULL; + mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table); } assert(mg); amtp = (AMT*)mg->mg_ptr; if ( amtp->was_ok_sub != newgen ) - goto do_update; + goto do_update; if (AMT_AMAGIC(amtp)) { - CV * const ret = amtp->table[id]; - if (ret && isGV(ret)) { /* Autoloading stab */ - /* Passing it through may have resulted in a warning - "Inherited AUTOLOAD for a non-method deprecated", since - our caller is going through a function call, not a method call. - So return the CV for AUTOLOAD, setting $AUTOLOAD. */ - GV * const gv = gv_fetchmethod(stash, PL_AMG_names[id]); - - if (gv && GvCV(gv)) - return GvCV(gv); - } - return ret; + CV * const ret = amtp->table[id]; + if (ret && isGV(ret)) { /* Autoloading stab */ + /* Passing it through may have resulted in a warning + "Inherited AUTOLOAD for a non-method deprecated", since + our caller is going through a function call, not a method call. + So return the CV for AUTOLOAD, setting $AUTOLOAD. */ + GV * const gv = gv_fetchmethod(stash, PL_AMG_names[id]); + + if (gv && GvCV(gv)) + return GvCV(gv); + } + return ret; } return NULL; @@ -2974,7 +3074,7 @@ /* Implement tryAMAGICun_MG macro. Do get magic, then see if the stack arg is overloaded and if so call it. Flags: - AMGf_numeric apply sv_2num to the stack arg. + AMGf_numeric apply sv_2num to the stack arg. */ bool @@ -2986,8 +3086,8 @@ SvGETMAGIC(arg); if (SvAMAGIC(arg) && (tmpsv = amagic_call(arg, &PL_sv_undef, method, - AMGf_noright | AMGf_unary - | (flags & AMGf_numarg)))) + AMGf_noright | AMGf_unary + | (flags & AMGf_numarg)))) { /* where the op is of the form: * $lex = $x op $y (where the assign is optimised away) @@ -3004,12 +3104,12 @@ else SETs(tmpsv); - PUTBACK; - return TRUE; + PUTBACK; + return TRUE; } if ((flags & AMGf_numeric) && SvROK(arg)) - *sp = sv_2num(arg); + *sp = sv_2num(arg); return FALSE; } @@ -3018,8 +3118,8 @@ Do get magic, then see if the two stack args are overloaded and if so call it. Flags: - AMGf_assign op may be called as mutator (eg +=) - AMGf_numeric apply sv_2num to the stack arg. + AMGf_assign op may be called as mutator (eg +=) + AMGf_numeric apply sv_2num to the stack arg. */ bool @@ -3030,17 +3130,17 @@ SvGETMAGIC(left); if (left != right) - SvGETMAGIC(right); + SvGETMAGIC(right); if (SvAMAGIC(left) || SvAMAGIC(right)) { - SV * tmpsv; + SV * tmpsv; /* STACKED implies mutator variant, e.g. $x += 1 */ bool mutator = (flags & AMGf_assign) && (PL_op->op_flags & OPf_STACKED); - tmpsv = amagic_call(left, right, method, - (mutator ? AMGf_assign: 0) - | (flags & AMGf_numarg)); - if (tmpsv) { + tmpsv = amagic_call(left, right, method, + (mutator ? AMGf_assign: 0) + | (flags & AMGf_numarg)); + if (tmpsv) { (void)POPs; /* where the op is one of the two forms: * $x op= $y @@ -3060,28 +3160,28 @@ else SETs(tmpsv); - PUTBACK; - return TRUE; - } + PUTBACK; + return TRUE; + } } if(left==right && SvGMAGICAL(left)) { - SV * const left = sv_newmortal(); - *(sp-1) = left; - /* Print the uninitialized warning now, so it includes the vari- - able name. */ - if (!SvOK(right)) { - if (ckWARN(WARN_UNINITIALIZED)) report_uninit(right); - sv_setsv_flags(left, &PL_sv_no, 0); - } - else sv_setsv_flags(left, right, 0); - SvGETMAGIC(right); + SV * const left = sv_newmortal(); + *(sp-1) = left; + /* Print the uninitialized warning now, so it includes the vari- + able name. */ + if (!SvOK(right)) { + if (ckWARN(WARN_UNINITIALIZED)) report_uninit(right); + sv_setsv_flags(left, &PL_sv_no, 0); + } + else sv_setsv_flags(left, right, 0); + SvGETMAGIC(right); } if (flags & AMGf_numeric) { - if (SvROK(TOPm1s)) - *(sp-1) = sv_2num(TOPm1s); - if (SvROK(right)) - *sp = sv_2num(right); + if (SvROK(TOPm1s)) + *(sp-1) = sv_2num(TOPm1s); + if (SvROK(right)) + *sp = sv_2num(right); } return FALSE; } @@ -3102,14 +3202,14 @@ return ref; while ((tmpsv = amagic_call(ref, &PL_sv_undef, method, - AMGf_noright | AMGf_unary))) { - if (!SvROK(tmpsv)) - Perl_croak(aTHX_ "Overloaded dereference did not return a reference"); - if (tmpsv == ref || SvRV(tmpsv) == SvRV(ref)) { - /* Bail out if it returns us the same reference. */ - return tmpsv; - } - ref = tmpsv; + AMGf_noright | AMGf_unary))) { + if (!SvROK(tmpsv)) + Perl_croak(aTHX_ "Overloaded dereference did not return a reference"); + if (tmpsv == ref || SvRV(tmpsv) == SvRV(ref)) { + /* Bail out if it returns us the same reference. */ + return tmpsv; + } + ref = tmpsv; if (!SvAMAGIC(ref)) break; } @@ -3124,19 +3224,19 @@ assert(PL_curcop->cop_hints & HINT_NO_AMAGIC); if ( !lex_mask || !SvOK(lex_mask) ) - /* overloading lexically disabled */ - return FALSE; + /* overloading lexically disabled */ + return FALSE; else if ( lex_mask && SvPOK(lex_mask) ) { - /* we have an entry in the hints hash, check if method has been - * masked by overloading.pm */ - STRLEN len; - const int offset = method / 8; - const int bit = method % 8; - char *pv = SvPV(lex_mask, len); - - /* Bit set, so this overloading operator is disabled */ - if ( (STRLEN)offset < len && pv[offset] & ( 1 << bit ) ) - return FALSE; + /* we have an entry in the hints hash, check if method has been + * masked by overloading.pm */ + STRLEN len; + const int offset = method / 8; + const int bit = method % 8; + char *pv = SvPV(lex_mask, len); + + /* Bit set, so this overloading operator is disabled */ + if ( (STRLEN)offset < len && pv[offset] & ( 1 << bit ) ) + return FALSE; } return TRUE; } @@ -3144,7 +3244,6 @@ SV* Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags) { - dVAR; MAGIC *mg; CV *cv=NULL; CV **cvp=NULL, **ocvp=NULL; @@ -3170,16 +3269,16 @@ && (stash = SvSTASH(SvRV(left))) && Gv_AMG(stash) && (mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table)) && (ocvp = cvp = (AMT_AMAGIC((AMT*)mg->mg_ptr) - ? (oamtp = amtp = (AMT*)mg->mg_ptr)->table - : NULL)) + ? (oamtp = amtp = (AMT*)mg->mg_ptr)->table + : NULL)) && ((cv = cvp[off=method+assignshift]) - || (assign && amtp->fallback > AMGfallNEVER && /* fallback to - * usual method */ - ( + || (assign && amtp->fallback > AMGfallNEVER && /* fallback to + * usual method */ + ( #ifdef DEBUGGING - fl = 1, + fl = 1, #endif - cv = cvp[off=method])))) { + cv = cvp[off=method])))) { lr = -1; /* Call method for left argument */ } else { if (cvp && amtp->fallback > AMGfallNEVER && flags & AMGf_unary) { @@ -3187,30 +3286,30 @@ /* look for substituted methods */ /* In all the covered cases we should be called with assign==0. */ - switch (method) { - case inc_amg: - force_cpy = 1; - if ((cv = cvp[off=add_ass_amg]) - || ((cv = cvp[off = add_amg]) && (force_cpy = 0, postpr = 1))) { - right = &PL_sv_yes; lr = -1; assign = 1; - } - break; - case dec_amg: - force_cpy = 1; - if ((cv = cvp[off = subtr_ass_amg]) - || ((cv = cvp[off = subtr_amg]) && (force_cpy = 0, postpr=1))) { - right = &PL_sv_yes; lr = -1; assign = 1; - } - break; - case bool__amg: - (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=string_amg])); - break; - case numer_amg: - (void)((cv = cvp[off=string_amg]) || (cv = cvp[off=bool__amg])); - break; - case string_amg: - (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=bool__amg])); - break; + switch (method) { + case inc_amg: + force_cpy = 1; + if ((cv = cvp[off=add_ass_amg]) + || ((cv = cvp[off = add_amg]) && (force_cpy = 0, postpr = 1))) { + right = &PL_sv_yes; lr = -1; assign = 1; + } + break; + case dec_amg: + force_cpy = 1; + if ((cv = cvp[off = subtr_ass_amg]) + || ((cv = cvp[off = subtr_amg]) && (force_cpy = 0, postpr=1))) { + right = &PL_sv_yes; lr = -1; assign = 1; + } + break; + case bool__amg: + (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=string_amg])); + break; + case numer_amg: + (void)((cv = cvp[off=string_amg]) || (cv = cvp[off=bool__amg])); + break; + case string_amg: + (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=bool__amg])); + break; case not_amg: (void)((cv = cvp[off=bool__amg]) || (cv = cvp[off=numer_amg]) @@ -3218,115 +3317,115 @@ if (cv) postpr = 1; break; - case copy_amg: - { - /* - * SV* ref causes confusion with the interpreter variable of - * the same name - */ - SV* const tmpRef=SvRV(left); - if (!SvROK(tmpRef) && SvTYPE(tmpRef) <= SVt_PVMG) { - /* - * Just to be extra cautious. Maybe in some - * additional cases sv_setsv is safe, too. - */ - SV* const newref = newSVsv(tmpRef); - SvOBJECT_on(newref); - /* No need to do SvAMAGIC_on here, as SvAMAGIC macros - delegate to the stash. */ - SvSTASH_set(newref, MUTABLE_HV(SvREFCNT_inc(SvSTASH(tmpRef)))); - return newref; - } - } - break; - case abs_amg: - if ((cvp[off1=lt_amg] || cvp[off1=ncmp_amg]) - && ((cv = cvp[off=neg_amg]) || (cv = cvp[off=subtr_amg]))) { - SV* const nullsv=&PL_sv_zero; - if (off1==lt_amg) { - SV* const lessp = amagic_call(left,nullsv, - lt_amg,AMGf_noright); - logic = SvTRUE_NN(lessp); - } else { - SV* const lessp = amagic_call(left,nullsv, - ncmp_amg,AMGf_noright); - logic = (SvNV(lessp) < 0); - } - if (logic) { - if (off==subtr_amg) { - right = left; - left = nullsv; - lr = 1; - } - } else { - return left; - } - } - break; - case neg_amg: - if ((cv = cvp[off=subtr_amg])) { - right = left; - left = &PL_sv_zero; - lr = 1; - } - break; - case int_amg: - case iter_amg: /* XXXX Eventually should do to_gv. */ - case ftest_amg: /* XXXX Eventually should do to_gv. */ - case regexp_amg: - /* FAIL safe */ - return NULL; /* Delegate operation to standard mechanisms. */ - - case to_sv_amg: - case to_av_amg: - case to_hv_amg: - case to_gv_amg: - case to_cv_amg: - /* FAIL safe */ - return left; /* Delegate operation to standard mechanisms. */ - - default: - goto not_found; - } - if (!cv) goto not_found; + case copy_amg: + { + /* + * SV* ref causes confusion with the interpreter variable of + * the same name + */ + SV* const tmpRef=SvRV(left); + if (!SvROK(tmpRef) && SvTYPE(tmpRef) <= SVt_PVMG) { + /* + * Just to be extra cautious. Maybe in some + * additional cases sv_setsv is safe, too. + */ + SV* const newref = newSVsv(tmpRef); + SvOBJECT_on(newref); + /* No need to do SvAMAGIC_on here, as SvAMAGIC macros + delegate to the stash. */ + SvSTASH_set(newref, MUTABLE_HV(SvREFCNT_inc(SvSTASH(tmpRef)))); + return newref; + } + } + break; + case abs_amg: + if ((cvp[off1=lt_amg] || cvp[off1=ncmp_amg]) + && ((cv = cvp[off=neg_amg]) || (cv = cvp[off=subtr_amg]))) { + SV* const nullsv=&PL_sv_zero; + if (off1==lt_amg) { + SV* const lessp = amagic_call(left,nullsv, + lt_amg,AMGf_noright); + logic = SvTRUE_NN(lessp); + } else { + SV* const lessp = amagic_call(left,nullsv, + ncmp_amg,AMGf_noright); + logic = (SvNV(lessp) < 0); + } + if (logic) { + if (off==subtr_amg) { + right = left; + left = nullsv; + lr = 1; + } + } else { + return left; + } + } + break; + case neg_amg: + if ((cv = cvp[off=subtr_amg])) { + right = left; + left = &PL_sv_zero; + lr = 1; + } + break; + case int_amg: + case iter_amg: /* XXXX Eventually should do to_gv. */ + case ftest_amg: /* XXXX Eventually should do to_gv. */ + case regexp_amg: + /* FAIL safe */ + return NULL; /* Delegate operation to standard mechanisms. */ + + case to_sv_amg: + case to_av_amg: + case to_hv_amg: + case to_gv_amg: + case to_cv_amg: + /* FAIL safe */ + return left; /* Delegate operation to standard mechanisms. */ + + default: + goto not_found; + } + if (!cv) goto not_found; } else if (!(AMGf_noright & flags) && SvAMAGIC(right) - && (stash = SvSTASH(SvRV(right))) && Gv_AMG(stash) - && (mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table)) - && (cvp = (AMT_AMAGIC((AMT*)mg->mg_ptr) - ? (amtp = (AMT*)mg->mg_ptr)->table - : NULL)) - && (cv = cvp[off=method])) { /* Method for right - * argument found */ + && (stash = SvSTASH(SvRV(right))) && Gv_AMG(stash) + && (mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table)) + && (cvp = (AMT_AMAGIC((AMT*)mg->mg_ptr) + ? (amtp = (AMT*)mg->mg_ptr)->table + : NULL)) + && (cv = cvp[off=method])) { /* Method for right + * argument found */ lr=1; } else if (((cvp && amtp->fallback > AMGfallNEVER) || (ocvp && oamtp->fallback > AMGfallNEVER)) - && !(flags & AMGf_unary)) { - /* We look for substitution for - * comparison operations and - * concatenation */ + && !(flags & AMGf_unary)) { + /* We look for substitution for + * comparison operations and + * concatenation */ if (method==concat_amg || method==concat_ass_amg - || method==repeat_amg || method==repeat_ass_amg) { - return NULL; /* Delegate operation to string conversion */ + || method==repeat_amg || method==repeat_ass_amg) { + return NULL; /* Delegate operation to string conversion */ } off = -1; switch (method) { - case lt_amg: - case le_amg: - case gt_amg: - case ge_amg: - case eq_amg: - case ne_amg: + case lt_amg: + case le_amg: + case gt_amg: + case ge_amg: + case eq_amg: + case ne_amg: off = ncmp_amg; break; - case slt_amg: - case sle_amg: - case sgt_amg: - case sge_amg: - case seq_amg: - case sne_amg: + case slt_amg: + case sle_amg: + case sgt_amg: + case sge_amg: + case seq_amg: + case sne_amg: off = scmp_amg; break; - } + } if (off != -1) { if (ocvp && (oamtp->fallback > AMGfallNEVER)) { cv = ocvp[off]; @@ -3344,51 +3443,51 @@ } else { not_found: /* No method found, either report or croak */ switch (method) { - case to_sv_amg: - case to_av_amg: - case to_hv_amg: - case to_gv_amg: - case to_cv_amg: - /* FAIL safe */ - return left; /* Delegate operation to standard mechanisms. */ + case to_sv_amg: + case to_av_amg: + case to_hv_amg: + case to_gv_amg: + case to_cv_amg: + /* FAIL safe */ + return left; /* Delegate operation to standard mechanisms. */ } if (ocvp && (cv=ocvp[nomethod_amg])) { /* Call report method */ - notfound = 1; lr = -1; + notfound = 1; lr = -1; } else if (cvp && (cv=cvp[nomethod_amg])) { - notfound = 1; lr = 1; + notfound = 1; lr = 1; } else if ((use_default_op = (!ocvp || oamtp->fallback >= AMGfallYES) && (!cvp || amtp->fallback >= AMGfallYES)) && !DEBUG_o_TEST) { - /* Skip generating the "no method found" message. */ - return NULL; + /* Skip generating the "no method found" message. */ + return NULL; } else { - SV *msg; - if (off==-1) off=method; - msg = sv_2mortal(Perl_newSVpvf(aTHX_ - "Operation \"%s\": no method found,%sargument %s%" SVf "%s%" SVf, - AMG_id2name(method + assignshift), - (flags & AMGf_unary ? " " : "\n\tleft "), - SvAMAGIC(left)? - "in overloaded package ": - "has no overloaded magic", - SvAMAGIC(left)? - SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(SvSTASH(SvRV(left)))))): - SVfARG(&PL_sv_no), - SvAMAGIC(right)? - ",\n\tright argument in overloaded package ": - (flags & AMGf_unary - ? "" - : ",\n\tright argument has no overloaded magic"), - SvAMAGIC(right)? - SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(SvSTASH(SvRV(right)))))): - SVfARG(&PL_sv_no))); + SV *msg; + if (off==-1) off=method; + msg = sv_2mortal(Perl_newSVpvf(aTHX_ + "Operation \"%s\": no method found,%sargument %s%" SVf "%s%" SVf, + AMG_id2name(method + assignshift), + (flags & AMGf_unary ? " " : "\n\tleft "), + SvAMAGIC(left)? + "in overloaded package ": + "has no overloaded magic", + SvAMAGIC(left)? + SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(SvSTASH(SvRV(left)))))): + SVfARG(&PL_sv_no), + SvAMAGIC(right)? + ",\n\tright argument in overloaded package ": + (flags & AMGf_unary + ? "" + : ",\n\tright argument has no overloaded magic"), + SvAMAGIC(right)? + SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(SvSTASH(SvRV(right)))))): + SVfARG(&PL_sv_no))); if (use_default_op) { - DEBUG_o( Perl_deb(aTHX_ "%" SVf, SVfARG(msg)) ); - } else { - Perl_croak(aTHX_ "%" SVf, SVfARG(msg)); - } - return NULL; + DEBUG_o( Perl_deb(aTHX_ "%" SVf, SVfARG(msg)) ); + } else { + Perl_croak(aTHX_ "%" SVf, SVfARG(msg)); + } + return NULL; } force_cpy = force_cpy || assign; } @@ -3457,18 +3556,18 @@ #ifdef DEBUGGING if (!notfound) { DEBUG_o(Perl_deb(aTHX_ - "Overloaded operator \"%s\"%s%s%s:\n\tmethod%s found%s in package %" SVf "%s\n", - AMG_id2name(off), - method+assignshift==off? "" : - " (initially \"", - method+assignshift==off? "" : - AMG_id2name(method+assignshift), - method+assignshift==off? "" : "\")", - flags & AMGf_unary? "" : - lr==1 ? " for right argument": " for left argument", - flags & AMGf_unary? " for argument" : "", - stash ? SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(stash)))) : SVfARG(newSVpvs_flags("null", SVs_TEMP)), - fl? ",\n\tassignment variant used": "") ); + "Overloaded operator \"%s\"%s%s%s:\n\tmethod%s found%s in package %" SVf "%s\n", + AMG_id2name(off), + method+assignshift==off? "" : + " (initially \"", + method+assignshift==off? "" : + AMG_id2name(method+assignshift), + method+assignshift==off? "" : "\")", + flags & AMGf_unary? "" : + lr==1 ? " for right argument": " for left argument", + flags & AMGf_unary? " for argument" : "", + stash ? SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(stash)))) : SVfARG(newSVpvs_flags("null", SVs_TEMP)), + fl? ",\n\tassignment variant used": "") ); } #endif /* Since we use shallow copy during assignment, we need @@ -3494,7 +3593,7 @@ * In the latter case assignshift==0, so only notfound case is important. */ if ( (lr == -1) && ( ( (method + assignshift == off) - && (assign || (method == inc_amg) || (method == dec_amg))) + && (assign || (method == inc_amg) || (method == dec_amg))) || force_cpy) ) { /* newSVsv does not behave as advertised, so we copy missing @@ -3502,9 +3601,9 @@ SV *tmpRef = SvRV(left); SV *rv_copy; if (SvREFCNT(tmpRef) > 1 && (rv_copy = AMG_CALLunary(left,copy_amg))) { - SvRV_set(left, rv_copy); - SvSETMAGIC(left); - SvREFCNT_dec_NN(tmpRef); + SvRV_set(left, rv_copy); + SvSETMAGIC(left); + SvREFCNT_dec_NN(tmpRef); } } @@ -3547,7 +3646,7 @@ SAVEOP(); PL_op = (OP *) &myop; if (PERLDB_SUB && PL_curstash != PL_debstash) - PL_op->op_private |= OPpENTERSUB_DB; + PL_op->op_private |= OPpENTERSUB_DB; Perl_pp_pushmark(aTHX); EXTEND(SP, notfound + 5); @@ -3556,7 +3655,7 @@ PUSHs( lr > 0 ? &PL_sv_yes : ( assign ? &PL_sv_undef : &PL_sv_no )); if (notfound) { PUSHs(newSVpvn_flags(AMG_id2name(method + assignshift), - AMG_id2namelen(method + assignshift), SVs_TEMP)); + AMG_id2namelen(method + assignshift), SVs_TEMP)); } else if (flags & AMGf_numarg) PUSHs(&PL_sv_undef); @@ -3603,34 +3702,34 @@ switch (method) { case le_amg: case sle_amg: - ans=SvIV(res)<=0; break; + ans=SvIV(res)<=0; break; case lt_amg: case slt_amg: - ans=SvIV(res)<0; break; + ans=SvIV(res)<0; break; case ge_amg: case sge_amg: - ans=SvIV(res)>=0; break; + ans=SvIV(res)>=0; break; case gt_amg: case sgt_amg: - ans=SvIV(res)>0; break; + ans=SvIV(res)>0; break; case eq_amg: case seq_amg: - ans=SvIV(res)==0; break; + ans=SvIV(res)==0; break; case ne_amg: case sne_amg: - ans=SvIV(res)!=0; break; + ans=SvIV(res)!=0; break; case inc_amg: case dec_amg: - SvSetSV(left,res); return left; + SvSetSV(left,res); return left; case not_amg: - ans=!SvTRUE_NN(res); break; + ans=!SvTRUE_NN(res); break; default: ans=0; break; } return boolSV(ans); } else if (method==copy_amg) { if (!SvROK(res)) { - Perl_croak(aTHX_ "Copy method did not return a reference"); + Perl_croak(aTHX_ "Copy method did not return a reference"); } return SvREFCNT_inc(SvRV(res)); } else { @@ -3642,16 +3741,15 @@ void Perl_gv_name_set(pTHX_ GV *gv, const char *name, U32 len, U32 flags) { - dVAR; U32 hash; PERL_ARGS_ASSERT_GV_NAME_SET; if (len > I32_MAX) - Perl_croak(aTHX_ "panic: gv name too long (%" UVuf ")", (UV) len); + Perl_croak(aTHX_ "panic: gv name too long (%" UVuf ")", (UV) len); if (!(flags & GV_ADD) && GvNAME_HEK(gv)) { - unshare_hek(GvNAME_HEK(gv)); + unshare_hek(GvNAME_HEK(gv)); } PERL_HASH(hash, name, len); @@ -3692,47 +3790,47 @@ if (PL_phase == PERL_PHASE_DESTRUCT) return; if (!(SvREFCNT(gv) == 1 && SvTYPE(gv) == SVt_PVGV && !SvFAKE(gv) && - !SvOBJECT(gv) && !SvREADONLY(gv) && - isGV_with_GP(gv) && GvGP(gv) && - !GvINTRO(gv) && GvREFCNT(gv) == 1 && - !GvSV(gv) && !GvAV(gv) && !GvHV(gv) && !GvIOp(gv) && !GvFORM(gv) && - GvEGVx(gv) == gv && (stash = GvSTASH(gv)))) - return; + !SvOBJECT(gv) && !SvREADONLY(gv) && + isGV_with_GP(gv) && GvGP(gv) && + !GvINTRO(gv) && GvREFCNT(gv) == 1 && + !GvSV(gv) && !GvAV(gv) && !GvHV(gv) && !GvIOp(gv) && !GvFORM(gv) && + GvEGVx(gv) == gv && (stash = GvSTASH(gv)))) + return; if (gv == PL_statgv || gv == PL_last_in_gv || gv == PL_stderrgv) - return; + return; if (SvMAGICAL(gv)) { MAGIC *mg; - /* only backref magic is allowed */ - if (SvGMAGICAL(gv) || SvSMAGICAL(gv)) - return; + /* only backref magic is allowed */ + if (SvGMAGICAL(gv) || SvSMAGICAL(gv)) + return; for (mg = SvMAGIC(gv); mg; mg = mg->mg_moremagic) { if (mg->mg_type != PERL_MAGIC_backref) return; - } + } } cv = GvCV(gv); if (!cv) { - HEK *gvnhek = GvNAME_HEK(gv); - (void)hv_deletehek(stash, gvnhek, G_DISCARD); + HEK *gvnhek = GvNAME_HEK(gv); + (void)hv_deletehek(stash, gvnhek, G_DISCARD); } else if (GvMULTI(gv) && cv && SvREFCNT(cv) == 1 && - !SvOBJECT(cv) && !SvMAGICAL(cv) && !SvREADONLY(cv) && - CvSTASH(cv) == stash && !CvNAMED(cv) && CvGV(cv) == gv && - CvCONST(cv) && !CvMETHOD(cv) && !CvLVALUE(cv) && !CvUNIQUE(cv) && - !CvNODEBUG(cv) && !CvCLONE(cv) && !CvCLONED(cv) && !CvANON(cv) && - (namehek = GvNAME_HEK(gv)) && - (gvp = hv_fetchhek(stash, namehek, 0)) && - *gvp == (SV*)gv) { - SV *value = SvREFCNT_inc(CvXSUBANY(cv).any_ptr); - const bool imported = !!GvIMPORTED_CV(gv); - SvREFCNT(gv) = 0; - sv_clear((SV*)gv); - SvREFCNT(gv) = 1; - SvFLAGS(gv) = SVt_IV|SVf_ROK|SVprv_PCS_IMPORTED * imported; + !SvOBJECT(cv) && !SvMAGICAL(cv) && !SvREADONLY(cv) && + CvSTASH(cv) == stash && !CvNAMED(cv) && CvGV(cv) == gv && + CvCONST(cv) && !CvMETHOD(cv) && !CvLVALUE(cv) && !CvUNIQUE(cv) && + !CvNODEBUG(cv) && !CvCLONE(cv) && !CvCLONED(cv) && !CvANON(cv) && + (namehek = GvNAME_HEK(gv)) && + (gvp = hv_fetchhek(stash, namehek, 0)) && + *gvp == (SV*)gv) { + SV *value = SvREFCNT_inc(CvXSUBANY(cv).any_ptr); + const bool imported = !!GvIMPORTED_CV(gv); + SvREFCNT(gv) = 0; + sv_clear((SV*)gv); + SvREFCNT(gv) = 1; + SvFLAGS(gv) = SVt_IV|SVf_ROK|SVprv_PCS_IMPORTED * imported; /* See also: 'SET_SVANY_FOR_BODYLESS_IV' in sv.c */ - SvANY(gv) = (XPVGV*)((char*)&(gv->sv_u.svu_iv) - - STRUCT_OFFSET(XPVIV, xiv_iv)); - SvRV_set(gv, value); + SvANY(gv) = (XPVGV*)((char*)&(gv->sv_u.svu_iv) - + STRUCT_OFFSET(XPVIV, xiv_iv)); + SvRV_set(gv, value); } } @@ -3746,9 +3844,9 @@ gvp = (GV**)hv_fetch(PL_globalstash, name, len, FALSE); gv = gvp ? *gvp : NULL; if (gv && !isGV(gv)) { - if (!SvPCS_IMPORTED(gv)) return NULL; - gv_init(gv, PL_globalstash, name, len, 0); - return gv; + if (!SvPCS_IMPORTED(gv)) return NULL; + gv_init(gv, PL_globalstash, name, len, 0); + return gv; } return gv && GvCVu(gv) && GvIMPORTED_CV(gv) ? gv : NULL; } diff -Nru perl-5.32.1/gv.h perl-5.34.0/gv.h --- perl-5.32.1/gv.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/gv.h 2021-05-04 06:52:48.000000000 +0000 @@ -26,34 +26,34 @@ #define GvXPVGV(gv) ((XPVGV*)SvANY(gv)) -#if defined (DEBUGGING) && defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__INTEL_COMPILER) +#if defined (DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS) && !defined(__INTEL_COMPILER) # define GvGP(gv) \ - (0+(*({GV *const _gvgp = (GV *) (gv); \ - assert(SvTYPE(_gvgp) == SVt_PVGV || SvTYPE(_gvgp) == SVt_PVLV); \ - assert(isGV_with_GP(_gvgp)); \ - &((_gvgp)->sv_u.svu_gp);}))) + (0+(*({GV *const _gvgp = (GV *) (gv); \ + assert(SvTYPE(_gvgp) == SVt_PVGV || SvTYPE(_gvgp) == SVt_PVLV); \ + assert(isGV_with_GP(_gvgp)); \ + &((_gvgp)->sv_u.svu_gp);}))) # define GvGP_set(gv,gp) \ - {GV *const _gvgp = (GV *) (gv); \ - assert(SvTYPE(_gvgp) == SVt_PVGV || SvTYPE(_gvgp) == SVt_PVLV); \ - assert(isGV_with_GP(_gvgp)); \ - (_gvgp)->sv_u.svu_gp = (gp); } + {GV *const _gvgp = (GV *) (gv); \ + assert(SvTYPE(_gvgp) == SVt_PVGV || SvTYPE(_gvgp) == SVt_PVLV); \ + assert(isGV_with_GP(_gvgp)); \ + (_gvgp)->sv_u.svu_gp = (gp); } # define GvFLAGS(gv) \ - (*({GV *const _gvflags = (GV *) (gv); \ - assert(SvTYPE(_gvflags) == SVt_PVGV || SvTYPE(_gvflags) == SVt_PVLV); \ - assert(isGV_with_GP(_gvflags)); \ - &(GvXPVGV(_gvflags)->xpv_cur);})) + (*({GV *const _gvflags = (GV *) (gv); \ + assert(SvTYPE(_gvflags) == SVt_PVGV || SvTYPE(_gvflags) == SVt_PVLV); \ + assert(isGV_with_GP(_gvflags)); \ + &(GvXPVGV(_gvflags)->xpv_cur);})) # define GvSTASH(gv) \ - (*({ GV * const _gvstash = (GV *) (gv); \ - assert(isGV_with_GP(_gvstash)); \ - assert(SvTYPE(_gvstash) == SVt_PVGV || SvTYPE(_gvstash) >= SVt_PVLV); \ - &(GvXPVGV(_gvstash)->xnv_u.xgv_stash); \ - })) + (*({ GV * const _gvstash = (GV *) (gv); \ + assert(isGV_with_GP(_gvstash)); \ + assert(SvTYPE(_gvstash) == SVt_PVGV || SvTYPE(_gvstash) >= SVt_PVLV); \ + &(GvXPVGV(_gvstash)->xnv_u.xgv_stash); \ + })) # define GvNAME_HEK(gv) \ (*({ GV * const _gvname_hek = (GV *) (gv); \ - assert(isGV_with_GP(_gvname_hek)); \ - assert(SvTYPE(_gvname_hek) == SVt_PVGV || SvTYPE(_gvname_hek) >= SVt_PVLV); \ - &(GvXPVGV(_gvname_hek)->xiv_u.xivu_namehek); \ - })) + assert(isGV_with_GP(_gvname_hek)); \ + assert(SvTYPE(_gvname_hek) == SVt_PVGV || SvTYPE(_gvname_hek) >= SVt_PVLV); \ + &(GvXPVGV(_gvname_hek)->xiv_u.xivu_namehek); \ + })) # define GvNAME_get(gv) ({ assert(GvNAME_HEK(gv)); (char *)HEK_KEY(GvNAME_HEK(gv)); }) # define GvNAMELEN_get(gv) ({ assert(GvNAME_HEK(gv)); HEK_LEN(GvNAME_HEK(gv)); }) # define GvNAMEUTF8(gv) ({ assert(GvNAME_HEK(gv)); HEK_UTF8(GvNAME_HEK(gv)); }) @@ -72,12 +72,17 @@ #define GvNAMELEN(gv) GvNAMELEN_get(gv) /* -=head1 GV Functions - =for apidoc Am|SV*|GvSV|GV* gv Return the SV from the GV. +Prior to Perl v5.9.3, this would add a scalar if none existed. Nowadays, use +C> for that, or compile perl with S>. See +L. + +=for apidoc Am|SV*|GvSVn|GV* gv +Like C>, but creates an empty scalar if none already exists. + =for apidoc Am|AV*|GvAV|GV* gv Return the AV from the GV. @@ -96,8 +101,8 @@ #define GvSV(gv) (GvGP(gv)->gp_sv) #ifdef PERL_DONT_CREATE_GVSV #define GvSVn(gv) (*(GvGP(gv)->gp_sv ? \ - &(GvGP(gv)->gp_sv) : \ - &(GvGP(gv_SVadd(gv))->gp_sv))) + &(GvGP(gv)->gp_sv) : \ + &(GvGP(gv_SVadd(gv))->gp_sv))) #else #define GvSVn(gv) GvSV(gv) #endif @@ -121,13 +126,13 @@ #define GvAV(gv) (GvGP(gv)->gp_av) #define GvAVn(gv) (GvGP(gv)->gp_av ? \ - GvGP(gv)->gp_av : \ - GvGP(gv_AVadd(gv))->gp_av) + GvGP(gv)->gp_av : \ + GvGP(gv_AVadd(gv))->gp_av) #define GvHV(gv) ((GvGP(gv))->gp_hv) #define GvHVn(gv) (GvGP(gv)->gp_hv ? \ - GvGP(gv)->gp_hv : \ - GvGP(gv_HVadd(gv))->gp_hv) + GvGP(gv)->gp_hv : \ + GvGP(gv_HVadd(gv))->gp_hv) #define GvCV(gv) (0+GvGP(gv)->gp_cv) #define GvCV_set(gv,cv) (GvGP(gv)->gp_cv = (cv)) @@ -216,37 +221,38 @@ * symbol creation flags, for use in gv_fetchpv() and get_*v() */ #define GV_ADD 0x01 /* add, if symbol not already there - For gv_name_set, adding a HEK for the first - time, so don't try to free what's there. */ + For gv_name_set, adding a HEK for the first + time, so don't try to free what's there. */ #define GV_ADDMULTI 0x02 /* add, pretending it has been added - already; used also by gv_init_* */ + already; used also by gv_init_* */ #define GV_ADDWARN 0x04 /* add, but warn if symbol wasn't already there */ - /* 0x08 UNUSED */ + /* 0x08 UNUSED */ #define GV_NOINIT 0x10 /* add, but don't init symbol, if type != PVGV */ /* This is used by toke.c to avoid turing placeholder constants in the symbol table into full PVGVs with attached constant subroutines. */ #define GV_NOADD_NOINIT 0x20 /* Don't add the symbol if it's not there. - Don't init it if it is there but ! PVGV */ + Don't init it if it is there but ! PVGV */ #define GV_NOEXPAND 0x40 /* Don't expand SvOK() entries to PVGV */ #define GV_NOTQUAL 0x80 /* A plain symbol name, not qualified with a - package (so skip checks for :: and ') */ + package (so skip checks for :: and ') */ #define GV_AUTOLOAD 0x100 /* gv_fetchmethod_flags() should AUTOLOAD */ #define GV_CROAK 0x200 /* gv_fetchmethod_flags() should croak */ #define GV_ADDMG 0x400 /* add if magical */ #define GV_NO_SVGMAGIC 0x800 /* Skip get-magic on an SV argument; - used only by gv_fetchsv(_nomg) */ + used only by gv_fetchsv(_nomg) */ #define GV_CACHE_ONLY 0x1000 /* return stash only if found in cache; - used only in flags parameter to gv_stash* family */ + used only in flags parameter to gv_stash* family */ /* Flags for gv_fetchmeth_pvn and gv_autoload_pvn*/ #define GV_SUPER 0x1000 /* SUPER::method */ +#define GV_NOUNIVERSAL 0x2000 /* Skip UNIVERSAL lookup */ /* Flags for gv_autoload_*/ #define GV_AUTOLOAD_ISMETHOD 1 /* autoloading a method? */ /* SVf_UTF8 (more accurately the return value from SvUTF8) is also valid - as a flag to various gv_* functions, so ensure it lies - outside this range. + as a flag to various gv_* functions, so ensure it lies + outside this range. */ #define GV_NOADD_MASK \ @@ -260,19 +266,26 @@ #define gv_fetchmethod(stash, name) gv_fetchmethod_autoload(stash, name, TRUE) #define gv_fetchsv_nomg(n,f,t) gv_fetchsv(n,(f)|GV_NO_SVGMAGIC,t) #define gv_init(gv,stash,name,len,multi) \ - gv_init_pvn(gv,stash,name,len,GV_ADDMULTI*!!(multi)) + gv_init_pvn(gv,stash,name,len,GV_ADDMULTI*!!(multi)) #define gv_fetchmeth(stash,name,len,level) gv_fetchmeth_pvn(stash, name, len, level, 0) #define gv_fetchmeth_autoload(stash,name,len,level) gv_fetchmeth_pvn_autoload(stash, name, len, level, 0) #define gv_fetchmethod_flags(stash,name,flags) gv_fetchmethod_pv_flags(stash, name, flags) -#define gv_autoload4(stash, name, len, method) \ - gv_autoload_pvn(stash, name, len, !!(method)) + +/* +=for apidoc gv_autoload4 +Equivalent to C>. + +=cut +*/ +#define gv_autoload4(stash, name, len, autoload) \ + gv_autoload_pvn(stash, name, len, !!(autoload)) #define newGVgen(pack) newGVgen_flags(pack, 0) #define gv_method_changed(gv) \ ( \ - assert_(isGV_with_GP(gv)) \ - GvREFCNT(gv) > 1 \ - ? (void)++PL_sub_generation \ - : mro_method_changed_in(GvSTASH(gv)) \ + assert_(isGV_with_GP(gv)) \ + GvREFCNT(gv) > 1 \ + ? (void)++PL_sub_generation \ + : mro_method_changed_in(GvSTASH(gv)) \ ) #define gv_AVadd(gv) gv_add_by_type((gv), SVt_PVAV) diff -Nru perl-5.32.1/haiku/Haiku/Haiku.pm perl-5.34.0/haiku/Haiku/Haiku.pm --- perl-5.32.1/haiku/Haiku/Haiku.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/haiku/Haiku/Haiku.pm 2020-10-04 22:17:13.000000000 +0000 @@ -8,7 +8,7 @@ require DynaLoader; @ISA = qw|Exporter DynaLoader|; - $VERSION = '0.35'; + $VERSION = '0.36'; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; diff -Nru perl-5.32.1/haiku/Haiku/Haiku.xs perl-5.34.0/haiku/Haiku/Haiku.xs --- perl-5.32.1/haiku/Haiku/Haiku.xs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/haiku/Haiku/Haiku.xs 2020-10-04 22:17:13.000000000 +0000 @@ -23,7 +23,6 @@ haiku_do_debug_printf(pTHX_ SV *sv, void (*printfFunc)(const char*,...)) { - dVAR; if (!sv) return; @@ -55,7 +54,6 @@ XS(haiku_debug_printf) { - dVAR; dXSARGS; dORIGMARK; SV *sv; @@ -78,7 +76,6 @@ XS(haiku_ktrace_printf) { - dVAR; dXSARGS; dORIGMARK; SV *sv; @@ -101,7 +98,6 @@ XS(haiku_debugger) { - dVAR; dXSARGS; dORIGMARK; SV *sv; diff -Nru perl-5.32.1/handy.h perl-5.34.0/handy.h --- perl-5.32.1/handy.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/handy.h 2021-05-04 06:52:48.000000000 +0000 @@ -18,16 +18,40 @@ # define Null(type) ((type)NULL) /* -=head1 Handy Values - +=for apidoc_section $string =for apidoc AmnU||Nullch Null character pointer. (No longer available when C is defined.) +=for apidoc_section $SV =for apidoc AmnU||Nullsv Null SV pointer. (No longer available when C is defined.) =cut + +Below are signatures of functions from config.h which can't easily be gleaned +from it, and are very unlikely to change + +=for apidoc_section $signals +=for apidoc Am|int|Sigsetjmp|jmp_buf env|int savesigs +=for apidoc Am|void|Siglongjmp|jmp_buf env|int val + +=for apidoc_section $filesystem +=for apidoc Am|void *|FILE_ptr|FILE * f +=for apidoc Am|Size_t|FILE_cnt|FILE * f +=for apidoc Am|void *|FILE_base|FILE * f +=for apidoc Am|Size_t|FILE_bufsiz|FILE *f + +=for apidoc_section $string +=for apidoc Amu|token|CAT2|token x|token y +=for apidoc Amu|string|STRINGIFY|token x + +=for apidoc_section $numeric +=for apidoc Am|double|Drand01 +=for apidoc Am|void|seedDrand01|Rand_seed_t x +=for apidoc Am|char *|Gconvert|double x|Size_t n|bool t|char * b + +=cut */ # define Nullch Null(char*) @@ -44,17 +68,33 @@ #define TRUE (1) #define FALSE (0) -/* The MUTABLE_*() macros cast pointers to the types shown, in such a way - * (compiler permitting) that casting away const-ness will give a warning; - * e.g.: - * - * const SV *sv = ...; - * AV *av1 = (AV*)sv; <== BAD: the const has been silently cast away - * AV *av2 = MUTABLE_AV(sv); <== GOOD: it may warn +/* +=for apidoc_section $SV +=for apidoc Am|void *|MUTABLE_PTR|void * p +=for apidoc_item |AV *|MUTABLE_AV|AV * p +=for apidoc_item |CV *|MUTABLE_CV|CV * p +=for apidoc_item |GV *|MUTABLE_GV|GV * p +=for apidoc_item |HV *|MUTABLE_HV|HV * p +=for apidoc_item |IO *|MUTABLE_IO|IO * p +=for apidoc_item |SV *|MUTABLE_SV|SV * p + +The C>() macros cast pointers to the types shown, in such a way +(compiler permitting) that casting away const-ness will give a warning; +e.g.: + + const SV *sv = ...; + AV *av1 = (AV*)sv; <== BAD: the const has been silently + cast away + AV *av2 = MUTABLE_AV(sv); <== GOOD: it may warn + +C is the base macro used to derive new casts. The other +already-built-in ones return pointers to what their names indicate. + +=cut */ -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) -# define MUTABLE_PTR(p) ({ void *_p = (p); _p; }) +#if defined(PERL_USE_GCC_BRACE_GROUPS) +# define MUTABLE_PTR(p) ({ void *p_ = (p); p_; }) #else # define MUTABLE_PTR(p) ((void *) (p)) #endif @@ -98,6 +138,7 @@ #endif /* +=for apidoc_section $casting =for apidoc Am|bool|cBOOL|bool expr Cast-to-bool. A simple S>> cast may not do the right thing: @@ -142,13 +183,13 @@ For dealing with issues that may arise from various 32/64-bit systems, we will ask Configure to check out - SHORTSIZE == sizeof(short) - INTSIZE == sizeof(int) - LONGSIZE == sizeof(long) - LONGLONGSIZE == sizeof(long long) (if HAS_LONG_LONG) - PTRSIZE == sizeof(void *) - DOUBLESIZE == sizeof(double) - LONG_DOUBLESIZE == sizeof(long double) (if HAS_LONG_DOUBLE). + SHORTSIZE == sizeof(short) + INTSIZE == sizeof(int) + LONGSIZE == sizeof(long) + LONGLONGSIZE == sizeof(long long) (if HAS_LONG_LONG) + PTRSIZE == sizeof(void *) + DOUBLESIZE == sizeof(double) + LONG_DOUBLESIZE == sizeof(long double) (if HAS_LONG_DOUBLE). */ @@ -176,60 +217,86 @@ typedef U64TYPE U64; #endif -#if defined(UINT8_MAX) && defined(INT16_MAX) && defined(INT32_MAX) - /* I8_MAX and I8_MIN constants are not defined, as I8 is an ambiguous type. Please search CHAR_MAX in perl.h for further details. */ -#define U8_MAX UINT8_MAX -#define U8_MIN UINT8_MIN - -#define I16_MAX INT16_MAX -#define I16_MIN INT16_MIN -#define U16_MAX UINT16_MAX -#define U16_MIN UINT16_MIN - -#define I32_MAX INT32_MAX -#define I32_MIN INT32_MIN -#ifndef UINT32_MAX_BROKEN /* e.g. HP-UX with gcc messes this up */ -# define U32_MAX UINT32_MAX +#ifdef UINT8_MAX +# define U8_MAX UINT8_MAX #else -# define U32_MAX 4294967295U +# define U8_MAX PERL_UCHAR_MAX #endif -#define U32_MIN UINT32_MIN - +#ifdef UINT8_MIN +# define U8_MIN UINT8_MIN #else +# define U8_MIN PERL_UCHAR_MIN +#endif -/* I8_MAX and I8_MIN constants are not defined, as I8 is an ambiguous type. - Please search CHAR_MAX in perl.h for further details. */ -#define U8_MAX PERL_UCHAR_MAX -#define U8_MIN PERL_UCHAR_MIN - -#define I16_MAX PERL_SHORT_MAX -#define I16_MIN PERL_SHORT_MIN -#define U16_MAX PERL_USHORT_MAX -#define U16_MIN PERL_USHORT_MIN - -#if LONGSIZE > 4 -# define I32_MAX PERL_INT_MAX -# define I32_MIN PERL_INT_MIN -# define U32_MAX PERL_UINT_MAX -# define U32_MIN PERL_UINT_MIN +#ifdef INT16_MAX +# define I16_MAX INT16_MAX +#else +# define I16_MAX PERL_SHORT_MAX +#endif +#ifdef INT16_MIN +# define I16_MIN INT16_MIN +#else +# define I16_MIN PERL_SHORT_MIN +#endif +#ifdef UINT16_MAX +# define U16_MAX UINT16_MAX +#else +# define U16_MAX PERL_USHORT_MAX +#endif +#ifdef UINT16_MIN +# define U16_MIN UINT16_MIN #else -# define I32_MAX PERL_LONG_MAX -# define I32_MIN PERL_LONG_MIN -# define U32_MAX PERL_ULONG_MAX -# define U32_MIN PERL_ULONG_MIN +# define U16_MIN PERL_USHORT_MIN #endif +#ifdef INT32_MAX +# define I32_MAX INT32_MAX +#elif LONGSIZE > 4 +# define I32_MAX PERL_INT_MAX +#else +# define I32_MAX PERL_LONG_MAX +#endif +#ifdef INT32_MIN +# define I32_MIN INT32_MIN +#elif LONGSIZE > 4 +# define I32_MIN PERL_INT_MIN +#else +# define I32_MIN PERL_LONG_MIN +#endif +#ifdef UINT32_MAX +# ifndef UINT32_MAX_BROKEN /* e.g. HP-UX with gcc messes this up */ +# define U32_MAX UINT_MAX +# else +# define U32_MAX 4294967295U +# endif +#elif LONGSIZE > 4 +# define U32_MAX PERL_UINT_MAX +#else +# define U32_MAX PERL_ULONG_MAX +#endif +#ifdef UINT32_MIN +# define U32_MIN UINT32_MIN +#elif LONGSIZE > 4 +# define U32_MIN PERL_UINT_MIN +#else +# define U32_MIN PERL_ULONG_MIN #endif -/* These C99 typedefs are useful sometimes for, say, loop variables whose - * maximum values are small, but for which speed trumps size. If we have a C99 - * compiler, use that. Otherwise, a plain 'int' should be good enough. - * - * Restrict these to core for now until we are more certain this is a good - * idea. */ -#if defined(PERL_CORE) || defined(PERL_EXT) +/* +=for apidoc_section $integer +=for apidoc Ay|| PERL_INT_FAST8_T +=for apidoc_item PERL_INT_FAST16_T +=for apidoc_item PERL_UINT_FAST8_T +=for apidoc_item PERL_UINT_FAST16_T + +These are equivalent to the correspondingly-named C99 typedefs on platforms +that have those; they evaluate to C and C on platforms that +don't, so that you can portably take advantage of this C99 feature. + +=cut +*/ # ifdef I_STDINT typedef int_fast8_t PERL_INT_FAST8_T; typedef uint_fast8_t PERL_UINT_FAST8_T; @@ -241,10 +308,12 @@ typedef int PERL_INT_FAST16_T; typedef unsigned int PERL_UINT_FAST16_T; # endif -#endif /* log(2) (i.e., log base 10 of 2) is pretty close to 0.30103, just in case - * anyone is grepping for it */ + * anyone is grepping for it. So BIT_DIGITS gives the number of decimal digits + * required to represent any possible unsigned number containing N bits. + * TYPE_DIGITS gives the number of decimal digits required to represent any + * possible unsigned number of type T. */ #define BIT_DIGITS(N) (((N)*146)/485 + 1) /* log10(2) =~ 146/485 */ #define TYPE_DIGITS(T) BIT_DIGITS(sizeof(T) * 8) #define TYPE_CHARS(T) (TYPE_DIGITS(T) + 2) /* sign, NUL */ @@ -269,8 +338,15 @@ # define isPOWER_OF_2(n) ((n) && ((n) & ((n)-1)) == 0) #endif +/* Returns a mask with the lowest n bits set */ +#define nBIT_MASK(n) ((UINTMAX_C(1) << (n)) - 1) + +/* The largest unsigned number that will fit into n bits */ +#define nBIT_UMAX(n) nBIT_MASK(n) + /* -=for apidoc Am|void|__ASSERT_|bool expr +=for apidoc_section $directives +=for apidoc Am||__ASSERT_|bool expr This is a helper macro to avoid preprocessor issues, replaced by nothing unless under DEBUGGING, where it expands to an assert of its argument, @@ -279,7 +355,7 @@ =cut -We also use empty definition under Coverity since the __ASSERT__ +We also use empty definition under Coverity since the __ASSERT_ checks often check for things that Really Cannot Happen, and Coverity detects that and gets all excited. */ @@ -291,7 +367,7 @@ #endif /* -=head1 SV Manipulation Functions +=for apidoc_section $SV =for apidoc Ama|SV*|newSVpvs|"literal string" Like C, but takes a literal string instead of a @@ -333,7 +409,7 @@ Like C, but takes a literal string instead of a string/length pair. -=head1 Memory Management +=for apidoc_section $string =for apidoc Ama|char*|savepvs|"literal string" Like C, but takes a literal string instead of a @@ -343,13 +419,13 @@ A version of C which allocates the duplicate string in memory which is shared between threads. -=head1 GV Functions +=for apidoc_section $GV =for apidoc Am|HV*|gv_stashpvs|"name"|I32 create Like C, but takes a literal string instead of a string/length pair. -=head1 Hash Manipulation Functions +=for apidoc_section $HV =for apidoc Am|SV**|hv_fetchs|HV* tb|"key"|I32 lval Like C, but takes a literal string instead of a @@ -360,7 +436,7 @@ string/length pair and omits the hash parameter. -=head1 Lexer interface +=for apidoc_section $lexer =for apidoc Amx|void|lex_stuff_pvs|"pv"|U32 flags @@ -371,7 +447,7 @@ */ /* -=head1 Handy Values +=for apidoc_section $string =for apidoc Amu|pair|STR_WITH_LEN|"literal string" @@ -384,7 +460,6 @@ =cut */ - #define STR_WITH_LEN(s) ("" s ""), (sizeof(s)-1) /* STR_WITH_LEN() shortcuts */ @@ -408,10 +483,10 @@ #define savesharedpvs(str) Perl_savesharedpvn(aTHX_ STR_WITH_LEN(str)) #define gv_stashpvs(str, create) \ Perl_gv_stashpvn(aTHX_ STR_WITH_LEN(str), create) -#define gv_fetchpvs(namebeg, add, sv_type) \ - Perl_gv_fetchpvn_flags(aTHX_ STR_WITH_LEN(namebeg), add, sv_type) -#define gv_fetchpvn(namebeg, len, add, sv_type) \ - Perl_gv_fetchpvn_flags(aTHX_ namebeg, len, add, sv_type) + +#define gv_fetchpvs(namebeg, flags, sv_type) \ + Perl_gv_fetchpvn_flags(aTHX_ STR_WITH_LEN(namebeg), flags, sv_type) +#define gv_fetchpvn gv_fetchpvn_flags #define sv_catxmlpvs(dsv, str, utf8) \ Perl_sv_catxmlpvn(aTHX_ dsv, STR_WITH_LEN(str), utf8) @@ -419,10 +494,105 @@ #define lex_stuff_pvs(pv,flags) Perl_lex_stuff_pvn(aTHX_ STR_WITH_LEN(pv), flags) #define get_cvs(str, flags) \ - Perl_get_cvn_flags(aTHX_ STR_WITH_LEN(str), (flags)) + Perl_get_cvn_flags(aTHX_ STR_WITH_LEN(str), (flags)) + +/* internal helpers */ +/* Transitional */ +#ifndef PERL_VERSION_MAJOR +# define PERL_VERSION_MAJOR PERL_REVISION +#else +# undef PERL_REVISION /* We don't want code to be using these */ +#endif +#ifndef PERL_VERSION_MINOR +# define PERL_VERSION_MINOR PERL_VERSION +#else +# undef PERL_VERSION +#endif +#ifndef PERL_VERSION_PATCH +# define PERL_VERSION_PATCH PERL_SUBVERSION +#else +# undef PERL_SUBVERSION +#endif + +#define PERL_JNP_TO_DECIMAL_(maJor,miNor,Patch) \ + /* '10*' leaves room for things like alpha, beta, releases */ \ + (10 * ((maJor) * 1000000) + ((miNor) * 1000) + (Patch)) +#define PERL_DECIMAL_VERSION_ \ + PERL_JNP_TO_DECIMAL_(PERL_VERSION_MAJOR, PERL_VERSION_MINOR, \ + PERL_VERSION_PATCH) /* -=head1 Miscellaneous Functions +=for apidoc_section $versioning +=for apidoc AmR|bool|PERL_VERSION_EQ|const U8 major|const U8 minor|const U8 patch +=for apidoc_item PERL_VERSION_NE +=for apidoc_item PERL_VERSION_LT +=for apidoc_item PERL_VERSION_LE +=for apidoc_item PERL_VERSION_GT +=for apidoc_item PERL_VERSION_GE + +Returns whether or not the perl currently being compiled has the specified +relationship to the perl given by the parameters. For example, + + #if PERL_VERSION_GT(5,24,2) + code that will only be compiled on perls after v5.24.2 + #else + fallback code + #endif + +Note that this is usable in making compile-time decisions + +You may use the special value '*' for the final number to mean ALL possible +values for it. Thus, + + #if PERL_VERSION_EQ(5,31,'*') + +means all perls in the 5.31 series. And + + #if PERL_VERSION_NE(5,24,'*') + +means all perls EXCEPT 5.24 ones. And + + #if PERL_VERSION_LE(5,9,'*') + +is effectively + + #if PERL_VERSION_LT(5,10,0) + +This means you don't have to think so much when converting from the existing +deprecated C to using this macro: + + #if PERL_VERSION <= 9 + +becomes + + #if PERL_VERSION_LE(5,9,'*') + +=cut +*/ + +/* N.B. These don't work if the patch version is 42 or 92, as those are what + * '*' is in ASCII and EBCDIC respectively */ +# define PERL_VERSION_EQ(j,n,p) \ + (((p) == '*') \ + ? ( (j) == PERL_VERSION_MAJOR \ + && (n) == PERL_VERSION_MINOR) \ + : (PERL_DECIMAL_VERSION_ == PERL_JNP_TO_DECIMAL_(j,n,p))) +# define PERL_VERSION_NE(j,n,p) (! PERL_VERSION_EQ(j,n,p)) + +# define PERL_VERSION_LT(j,n,p) /* < '*' effectively means < 0 */ \ + (PERL_DECIMAL_VERSION_ < PERL_JNP_TO_DECIMAL_( (j), \ + (n), \ + (((p) == '*') ? 0 : p))) +# define PERL_VERSION_GE(j,n,p) (! PERL_VERSION_LT(j,n,p)) + +# define PERL_VERSION_LE(j,n,p) /* <= '*' effectively means < n+1 */ \ + (PERL_DECIMAL_VERSION_ < PERL_JNP_TO_DECIMAL_( (j), \ + (((p) == '*') ? ((n)+1) : (n)), \ + (((p) == '*') ? 0 : p))) +# define PERL_VERSION_GT(j,n,p) (! PERL_VERSION_LE(j,n,p)) + +/* +=for apidoc_section $string =for apidoc Am|bool|strNE|char* s1|char* s2 Test two C-terminated strings to see if they are different. Returns true @@ -461,22 +631,24 @@ =for apidoc Am|bool|memEQ|char* s1|char* s2|STRLEN len Test two buffers (which may contain embedded C characters, to see if they are equal. The C parameter indicates the number of bytes to compare. -Returns zero if equal, or non-zero if non-equal. +Returns true or false. It is undefined behavior if either of the buffers +doesn't contain at least C bytes. =for apidoc Am|bool|memEQs|char* s1|STRLEN l1|"s2" Like L, but the second string is a literal enclosed in double quotes, C gives the number of bytes in C. -Returns zero if equal, or non-zero if non-equal. +Returns true or false. =for apidoc Am|bool|memNE|char* s1|char* s2|STRLEN len Test two buffers (which may contain embedded C characters, to see if they are not equal. The C parameter indicates the number of bytes to compare. -Returns zero if non-equal, or non-zero if equal. +Returns true or false. It is undefined behavior if either of the buffers +doesn't contain at least C bytes. =for apidoc Am|bool|memNEs|char* s1|STRLEN l1|"s2" Like L, but the second string is a literal enclosed in double quotes, C gives the number of bytes in C. -Returns zero if non-equal, or zero if non-equal. +Returns true or false. =for apidoc Am|bool|memCHRs|"list"|char c Returns the position of the first occurence of the byte C in the literal @@ -591,7 +763,7 @@ * the current locale will use the tests that begin with "lc". */ -#ifdef HAS_SETLOCALE /* XXX Is there a better test for this? */ +#ifdef USE_LOCALE # ifndef CTYPE256 # define CTYPE256 # endif @@ -673,38 +845,43 @@ return FALSE, at the discretion of the implementation, and subject to change in future releases. -=for apidoc Am|bool|isALPHA|int ch +=for apidoc Am|bool|isALPHA|UV ch +=for apidoc_item ||isALPHA_A|UV ch +=for apidoc_item ||isALPHA_L1|UV ch +=for apidoc_item ||isALPHA_uvchr|UV ch +=for apidoc_item ||isALPHA_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isALPHA_utf8|U8 * s|U8 * end +=for apidoc_item ||isALPHA_LC|UV ch +=for apidoc_item ||isALPHA_LC_uvchr|UV ch +=for apidoc_item ||isALPHA_LC_utf8_safe|U8 * s| U8 *end Returns a boolean indicating whether the specified input is one of C<[A-Za-z]>, analogous to C. See the L for an explanation of -variants -C, C, C, C, -C, C, C, C, -and C. +the variants. =cut -Here and below, we add the protoypes of these macros for downstream programs +Here and below, we add the prototypes of these macros for downstream programs that would be interested in them, such as Devel::PPPort -=for apidoc Amh|bool|isALPHA_A|int ch -=for apidoc Amh|bool|isALPHA_L1|int ch -=for apidoc Amh|bool|isALPHA_uvchr|int ch -=for apidoc Amh|bool|isALPHA_utf8_safe|U8 * s|U8 * end -=for apidoc Amh|bool|isALPHA_utf8|U8 * s|U8 * end -=for apidoc Amh|bool|isALPHA_LC|int ch -=for apidoc Amh|bool|isALPHA_LC_uvchr|int ch -=for apidoc Amh|bool|isALPHA_LC_utf8_safe|U8 * s| U8 *end - -=for apidoc Am|bool|isALPHANUMERIC|int ch +=for apidoc Am|bool|isALPHANUMERIC|UV ch +=for apidoc_item ||isALPHANUMERIC_A|UV ch +=for apidoc_item ||isALPHANUMERIC_L1|UV ch +=for apidoc_item ||isALPHANUMERIC_uvchr|UV ch +=for apidoc_item ||isALPHANUMERIC_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isALPHANUMERIC_utf8|U8 * s|U8 * end +=for apidoc_item ||isALPHANUMERIC_LC|UV ch +=for apidoc_item ||isALPHANUMERIC_LC_uvchr|UV ch +=for apidoc_item ||isALPHANUMERIC_LC_utf8_safe|U8 * s| U8 *end +=for apidoc_item ||isALNUMC|UV ch +=for apidoc_item ||isALNUMC_A|UV ch +=for apidoc_item ||isALNUMC_L1|UV ch +=for apidoc_item ||isALNUMC_LC|UV ch +=for apidoc_item ||isALNUMC_LC_uvchr|UV ch Returns a boolean indicating whether the specified character is one of C<[A-Za-z0-9]>, analogous to C. See the L for an explanation of -variants -C, C, C, -C, C, C, -C, C, and -C. +the variants. A (discouraged from use) synonym is C (where the C suffix means this corresponds to the C language alphanumeric definition). Also @@ -712,172 +889,144 @@ C, C C, and C. -=for apidoc Amh|bool|isALPHANUMERIC_A|int ch -=for apidoc Amh|bool|isALPHANUMERIC_L1|int ch -=for apidoc Amh|bool|isALPHANUMERIC_uvchr|int ch -=for apidoc Amh|bool|isALPHANUMERIC_utf8_safe|U8 * s|U8 * end -=for apidoc Amh|bool|isALPHANUMERIC_utf8|U8 * s|U8 * end -=for apidoc Amh|bool|isALPHANUMERIC_LC|int ch -=for apidoc Amh|bool|isALPHANUMERIC_LC_uvchr|int ch -=for apidoc Amh|bool|isALPHANUMERIC_LC_utf8_safe|U8 * s| U8 *end -=for apidoc Amh|bool|isALNUMC|int ch -=for apidoc Amh|bool|isALNUMC_A|int ch -=for apidoc Amh|bool|isALNUMC_L1|int ch -=for apidoc Amh|bool|isALNUMC_LC|int ch -=for apidoc Amh|bool|isALNUMC_LC_uvchr|int ch - -=for apidoc Am|bool|isASCII|int ch +=for apidoc Am|bool|isASCII|UV ch +=for apidoc_item ||isASCII_A|UV ch +=for apidoc_item ||isASCII_L1|UV ch +=for apidoc_item ||isASCII_uvchr|UV ch +=for apidoc_item ||isASCII_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isASCII_utf8|U8 * s|U8 * end +=for apidoc_item ||isASCII_LC|UV ch +=for apidoc_item ||isASCII_LC_uvchr|UV ch +=for apidoc_item ||isASCII_LC_utf8_safe|U8 * s| U8 *end Returns a boolean indicating whether the specified character is one of the 128 characters in the ASCII character set, analogous to C. On non-ASCII platforms, it returns TRUE iff this character corresponds to an ASCII character. Variants C and C are identical to C. See the L for an explanation of -variants -C, C, C, C, -C, C, and C. +the variants. Note, however, that some platforms do not have the C library routine C. In these cases, the variants whose names contain C are the same as the corresponding ones without. -=for apidoc Amh|bool|isASCII_A|int ch -=for apidoc Amh|bool|isASCII_L1|int ch -=for apidoc Amh|bool|isASCII_uvchr|int ch -=for apidoc Amh|bool|isASCII_utf8_safe|U8 * s|U8 * end -=for apidoc Amh|bool|isASCII_utf8|U8 * s|U8 * end -=for apidoc Amh|bool|isASCII_LC|int ch -=for apidoc Amh|bool|isASCII_LC_uvchr|int ch -=for apidoc Amh|bool|isASCII_LC_utf8_safe|U8 * s| U8 *end - Also note, that because all ASCII characters are UTF-8 invariant (meaning they have the exact same representation (always a single byte) whether encoded in UTF-8 or not), C will give the correct results when called with any byte in any string encoded or not in UTF-8. And similarly C and C will work properly on any string encoded or not in UTF-8. -=for apidoc Am|bool|isBLANK|char ch +=for apidoc Am|bool|isBLANK|UV ch +=for apidoc_item ||isBLANK_A|UV ch +=for apidoc_item ||isBLANK_L1|UV ch +=for apidoc_item ||isBLANK_uvchr|UV ch +=for apidoc_item ||isBLANK_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isBLANK_utf8|U8 * s|U8 * end +=for apidoc_item ||isBLANK_LC|UV ch +=for apidoc_item ||isBLANK_LC_uvchr|UV ch +=for apidoc_item ||isBLANK_LC_utf8_safe|U8 * s| U8 *end Returns a boolean indicating whether the specified character is a character considered to be a blank, analogous to C. See the L for an explanation of -variants -C, C, C, C, -C, C, C, C, -and C. Note, +the variants. +Note, however, that some platforms do not have the C library routine C. In these cases, the variants whose names contain C are the same as the corresponding ones without. -=for apidoc Amh|bool|isBLANK_A|int ch -=for apidoc Amh|bool|isBLANK_L1|int ch -=for apidoc Amh|bool|isBLANK_uvchr|int ch -=for apidoc Amh|bool|isBLANK_utf8_safe|U8 * s|U8 * end -=for apidoc Amh|bool|isBLANK_utf8|U8 * s|U8 * end -=for apidoc Amh|bool|isBLANK_LC|int ch -=for apidoc Amh|bool|isBLANK_LC_uvchr|int ch -=for apidoc Amh|bool|isBLANK_LC_utf8_safe|U8 * s| U8 *end +=for apidoc Am|bool|isCNTRL|UV ch +=for apidoc_item ||isCNTRL_A|UV ch +=for apidoc_item ||isCNTRL_L1|UV ch +=for apidoc_item ||isCNTRL_uvchr|UV ch +=for apidoc_item ||isCNTRL_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isCNTRL_utf8|U8 * s|U8 * end +=for apidoc_item ||isCNTRL_LC|UV ch +=for apidoc_item ||isCNTRL_LC_uvchr|UV ch +=for apidoc_item ||isCNTRL_LC_utf8_safe|U8 * s| U8 *end -=for apidoc Am|bool|isCNTRL|char ch Returns a boolean indicating whether the specified character is a control character, analogous to C. See the L for an explanation of -variants -C, C, C, C, -C, C, C, C -and C. On EBCDIC -platforms, you almost always want to use the C variant. - -=for apidoc Amh|bool|isCNTRL_A|int ch -=for apidoc Amh|bool|isCNTRL_L1|int ch -=for apidoc Amh|bool|isCNTRL_uvchr|int ch -=for apidoc Amh|bool|isCNTRL_utf8_safe|U8 * s|U8 * end -=for apidoc Amh|bool|isCNTRL_utf8|U8 * s|U8 * end -=for apidoc Amh|bool|isCNTRL_LC|int ch -=for apidoc Amh|bool|isCNTRL_LC_uvchr|int ch -=for apidoc Amh|bool|isCNTRL_LC_utf8_safe|U8 * s| U8 *end +the variants. +On EBCDIC platforms, you almost always want to use the C variant. + +=for apidoc Am|bool|isDIGIT|UV ch +=for apidoc_item ||isDIGIT_A|UV ch +=for apidoc_item ||isDIGIT_L1|UV ch +=for apidoc_item ||isDIGIT_uvchr|UV ch +=for apidoc_item ||isDIGIT_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isDIGIT_utf8|U8 * s|U8 * end +=for apidoc_item ||isDIGIT_LC|UV ch +=for apidoc_item ||isDIGIT_LC_uvchr|UV ch +=for apidoc_item ||isDIGIT_LC_utf8_safe|U8 * s| U8 *end -=for apidoc Am|bool|isDIGIT|char ch Returns a boolean indicating whether the specified character is a digit, analogous to C. Variants C and C are identical to C. See the L for an explanation of -variants -C, C, C, C, -C, C, and C. - -=for apidoc Amh|bool|isDIGIT_A|int ch -=for apidoc Amh|bool|isDIGIT_L1|int ch -=for apidoc Amh|bool|isDIGIT_uvchr|int ch -=for apidoc Amh|bool|isDIGIT_utf8_safe|U8 * s|U8 * end -=for apidoc Amh|bool|isDIGIT_utf8|U8 * s|U8 * end -=for apidoc Amh|bool|isDIGIT_LC|int ch -=for apidoc Amh|bool|isDIGIT_LC_uvchr|int ch -=for apidoc Amh|bool|isDIGIT_LC_utf8_safe|U8 * s| U8 *end +the variants. -=for apidoc Am|bool|isGRAPH|char ch +=for apidoc Am|bool|isGRAPH|UV ch +=for apidoc_item ||isGRAPH_A|UV ch +=for apidoc_item ||isGRAPH_L1|UV ch +=for apidoc_item ||isGRAPH_uvchr|UV ch +=for apidoc_item ||isGRAPH_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isGRAPH_utf8|U8 * s|U8 * end +=for apidoc_item ||isGRAPH_LC|UV ch +=for apidoc_item ||isGRAPH_LC_uvchr|UV ch +=for apidoc_item ||isGRAPH_LC_utf8_safe|U8 * s| U8 *end Returns a boolean indicating whether the specified character is a graphic character, analogous to C. See the L for an explanation of -variants C, C, C, C, -C, C, C, -C, and C. - -=for apidoc Amh|bool|isGRAPH_A|int ch -=for apidoc Amh|bool|isGRAPH_L1|int ch -=for apidoc Amh|bool|isGRAPH_uvchr|int ch -=for apidoc Amh|bool|isGRAPH_utf8_safe|U8 * s|U8 * end -=for apidoc Amh|bool|isGRAPH_utf8|U8 * s|U8 * end -=for apidoc Amh|bool|isGRAPH_LC|int ch -=for apidoc Amh|bool|isGRAPH_LC_uvchr|int ch -=for apidoc Amh|bool|isGRAPH_LC_utf8_safe|U8 * s| U8 *end +the variants. -=for apidoc Am|bool|isLOWER|char ch +=for apidoc Am|bool|isLOWER|UV ch +=for apidoc_item ||isLOWER_A|UV ch +=for apidoc_item ||isLOWER_L1|UV ch +=for apidoc_item ||isLOWER_uvchr|UV ch +=for apidoc_item ||isLOWER_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isLOWER_utf8|U8 * s|U8 * end +=for apidoc_item ||isLOWER_LC|UV ch +=for apidoc_item ||isLOWER_LC_uvchr|UV ch +=for apidoc_item ||isLOWER_LC_utf8_safe|U8 * s| U8 *end Returns a boolean indicating whether the specified character is a lowercase character, analogous to C. See the L for an explanation of -variants -C, C, C, C, -C, C, C, C, -and C. - -=for apidoc Amh|bool|isLOWER_A|int ch -=for apidoc Amh|bool|isLOWER_L1|int ch -=for apidoc Amh|bool|isLOWER_uvchr|int ch -=for apidoc Amh|bool|isLOWER_utf8_safe|U8 * s|U8 * end -=for apidoc Amh|bool|isLOWER_utf8|U8 * s|U8 * end -=for apidoc Amh|bool|isLOWER_LC|int ch -=for apidoc Amh|bool|isLOWER_LC_uvchr|int ch -=for apidoc Amh|bool|isLOWER_LC_utf8_safe|U8 * s| U8 *end +the variants -=for apidoc Am|bool|isOCTAL|char ch +=for apidoc Am|bool|isOCTAL|UV ch +=for apidoc_item ||isOCTAL_A|UV ch +=for apidoc_item ||isOCTAL_L1|UV ch Returns a boolean indicating whether the specified character is an octal digit, [0-7]. The only two variants are C and C; each is identical to C. -=for apidoc Amh|bool|isOCTAL_A|int ch -=for apidoc Amh|bool|isOCTAL_L1|int ch - -=for apidoc Am|bool|isPUNCT|char ch +=for apidoc Am|bool|isPUNCT|UV ch +=for apidoc_item ||isPUNCT_A|UV ch +=for apidoc_item ||isPUNCT_L1|UV ch +=for apidoc_item ||isPUNCT_uvchr|UV ch +=for apidoc_item ||isPUNCT_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isPUNCT_utf8|U8 * s|U8 * end +=for apidoc_item ||isPUNCT_LC|UV ch +=for apidoc_item ||isPUNCT_LC_uvchr|UV ch +=for apidoc_item ||isPUNCT_LC_utf8_safe|U8 * s| U8 *end Returns a boolean indicating whether the specified character is a punctuation character, analogous to C. Note that the definition of what is punctuation isn't as straightforward as one might desire. See L for details. See the L for an explanation of -variants C, C, C, C, -C, C, C, C, -and C. - -=for apidoc Amh|bool|isPUNCT_A|int ch -=for apidoc Amh|bool|isPUNCT_L1|int ch -=for apidoc Amh|bool|isPUNCT_uvchr|int ch -=for apidoc Amh|bool|isPUNCT_utf8_safe|U8 * s|U8 * end -=for apidoc Amh|bool|isPUNCT_utf8|U8 * s|U8 * end -=for apidoc Amh|bool|isPUNCT_LC|int ch -=for apidoc Amh|bool|isPUNCT_LC_uvchr|int ch -=for apidoc Amh|bool|isPUNCT_LC_utf8_safe|U8 * s| U8 *end +the variants. -=for apidoc Am|bool|isSPACE|char ch +=for apidoc Am|bool|isSPACE|UV ch +=for apidoc_item ||isSPACE_A|UV ch +=for apidoc_item ||isSPACE_L1|UV ch +=for apidoc_item ||isSPACE_uvchr|UV ch +=for apidoc_item ||isSPACE_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isSPACE_utf8|U8 * s|U8 * end +=for apidoc_item ||isSPACE_LC|UV ch +=for apidoc_item ||isSPACE_LC_uvchr|UV ch +=for apidoc_item ||isSPACE_LC_utf8_safe|U8 * s| U8 *end Returns a boolean indicating whether the specified character is a whitespace character. This is analogous to what C matches in a regular expression. Starting in Perl 5.18 @@ -887,21 +1036,17 @@ in the non-locale variants, was that C did not match a vertical tab. (See L for a macro that matches a vertical tab in all releases.) See the L for an explanation of -variants -C, C, C, C, -C, C, C, C, -and C. - -=for apidoc Amh|bool|isSPACE_A|int ch -=for apidoc Amh|bool|isSPACE_L1|int ch -=for apidoc Amh|bool|isSPACE_uvchr|int ch -=for apidoc Amh|bool|isSPACE_utf8_safe|U8 * s|U8 * end -=for apidoc Amh|bool|isSPACE_utf8|U8 * s|U8 * end -=for apidoc Amh|bool|isSPACE_LC|int ch -=for apidoc Amh|bool|isSPACE_LC_uvchr|int ch -=for apidoc Amh|bool|isSPACE_LC_utf8_safe|U8 * s| U8 *end +the variants. -=for apidoc Am|bool|isPSXSPC|char ch +=for apidoc Am|bool|isPSXSPC|UV ch +=for apidoc_item ||isPSXSPC_A|UV ch +=for apidoc_item ||isPSXSPC_L1|UV ch +=for apidoc_item ||isPSXSPC_uvchr|UV ch +=for apidoc_item ||isPSXSPC_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isPSXSPC_utf8|U8 * s|U8 * end +=for apidoc_item ||isPSXSPC_LC|UV ch +=for apidoc_item ||isPSXSPC_LC_uvchr|UV ch +=for apidoc_item ||isPSXSPC_LC_utf8_safe|U8 * s| U8 *end (short for Posix Space) Starting in 5.18, this is identical in all its forms to the corresponding C macros. @@ -912,55 +1057,49 @@ Otherwise they are identical. Thus this macro is analogous to what C matches in a regular expression. See the L for an explanation of -variants C, C, C, C, -C, C, C, -C, and C. - -=for apidoc Amh|bool|isPSXSPC_A|int ch -=for apidoc Amh|bool|isPSXSPC_L1|int ch -=for apidoc Amh|bool|isPSXSPC_uvchr|int ch -=for apidoc Amh|bool|isPSXSPC_utf8_safe|U8 * s|U8 * end -=for apidoc Amh|bool|isPSXSPC_utf8|U8 * s|U8 * end -=for apidoc Amh|bool|isPSXSPC_LC|int ch -=for apidoc Amh|bool|isPSXSPC_LC_uvchr|int ch -=for apidoc Amh|bool|isPSXSPC_LC_utf8_safe|U8 * s| U8 *end +the variants. -=for apidoc Am|bool|isUPPER|char ch +=for apidoc Am|bool|isUPPER|UV ch +=for apidoc_item ||isUPPER_A|UV ch +=for apidoc_item ||isUPPER_L1|UV ch +=for apidoc_item ||isUPPER_uvchr|UV ch +=for apidoc_item ||isUPPER_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isUPPER_utf8|U8 * s|U8 * end +=for apidoc_item ||isUPPER_LC|UV ch +=for apidoc_item ||isUPPER_LC_uvchr|UV ch +=for apidoc_item ||isUPPER_LC_utf8_safe|U8 * s| U8 *end Returns a boolean indicating whether the specified character is an uppercase character, analogous to C. See the L for an explanation of -variants C, C, C, C, -C, C, C, C, -and C. - -=for apidoc Amh|bool|isUPPER_A|int ch -=for apidoc Amh|bool|isUPPER_L1|int ch -=for apidoc Amh|bool|isUPPER_uvchr|int ch -=for apidoc Amh|bool|isUPPER_utf8_safe|U8 * s|U8 * end -=for apidoc Amh|bool|isUPPER_utf8|U8 * s|U8 * end -=for apidoc Amh|bool|isUPPER_LC|int ch -=for apidoc Amh|bool|isUPPER_LC_uvchr|int ch -=for apidoc Amh|bool|isUPPER_LC_utf8_safe|U8 * s| U8 *end +the variants. -=for apidoc Am|bool|isPRINT|char ch +=for apidoc Am|bool|isPRINT|UV ch +=for apidoc_item ||isPRINT_A|UV ch +=for apidoc_item ||isPRINT_L1|UV ch +=for apidoc_item ||isPRINT_uvchr|UV ch +=for apidoc_item ||isPRINT_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isPRINT_utf8|U8 * s|U8 * end +=for apidoc_item ||isPRINT_LC|UV ch +=for apidoc_item ||isPRINT_LC_uvchr|UV ch +=for apidoc_item ||isPRINT_LC_utf8_safe|U8 * s| U8 *end Returns a boolean indicating whether the specified character is a printable character, analogous to C. See the L for an explanation of -variants -C, C, C, C, -C, C, C, C, -and C. - -=for apidoc Amh|bool|isPRINT_A|int ch -=for apidoc Amh|bool|isPRINT_L1|int ch -=for apidoc Amh|bool|isPRINT_uvchr|int ch -=for apidoc Amh|bool|isPRINT_utf8_safe|U8 * s|U8 * end -=for apidoc Amh|bool|isPRINT_utf8|U8 * s|U8 * end -=for apidoc Amh|bool|isPRINT_LC|int ch -=for apidoc Amh|bool|isPRINT_LC_uvchr|int ch -=for apidoc Amh|bool|isPRINT_LC_utf8_safe|U8 * s| U8 *end +the variants. -=for apidoc Am|bool|isWORDCHAR|char ch +=for apidoc Am|bool|isWORDCHAR|UV ch +=for apidoc_item ||isWORDCHAR_A|UV ch +=for apidoc_item ||isWORDCHAR_L1|UV ch +=for apidoc_item ||isWORDCHAR_uvchr|UV ch +=for apidoc_item ||isWORDCHAR_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isWORDCHAR_utf8|U8 * s|U8 * end +=for apidoc_item ||isWORDCHAR_LC|UV ch +=for apidoc_item ||isWORDCHAR_LC_uvchr|UV ch +=for apidoc_item ||isWORDCHAR_LC_utf8_safe|U8 * s| U8 *end +=for apidoc_item ||isALNUM|UV ch +=for apidoc_item ||isALNUM_A|UV ch +=for apidoc_item ||isALNUM_LC|UV ch +=for apidoc_item ||isALNUM_LC_uvchr|UV ch Returns a boolean indicating whether the specified character is a character that is a word character, analogous to what C and C match in a regular expression. A word character is an alphabetic character, a @@ -970,83 +1109,60 @@ word character includes more than the standard C language meaning of alphanumeric. See the L for an explanation of -variants C, C, C, -C, and C. C, -C, C, and C -are also as described there, but additionally include the platform's native -underscore. - -=for apidoc Amh|bool|isWORDCHAR_A|int ch -=for apidoc Amh|bool|isWORDCHAR_L1|int ch -=for apidoc Amh|bool|isWORDCHAR_uvchr|int ch -=for apidoc Amh|bool|isWORDCHAR_utf8_safe|U8 * s|U8 * end -=for apidoc Amh|bool|isWORDCHAR_utf8|U8 * s|U8 * end -=for apidoc Amh|bool|isWORDCHAR_LC|int ch -=for apidoc Amh|bool|isWORDCHAR_LC_uvchr|int ch -=for apidoc Amh|bool|isWORDCHAR_LC_utf8_safe|U8 * s| U8 *end -=for apidoc Amh|bool|isALNUM|int ch -=for apidoc Amh|bool|isALNUM_A|int ch -=for apidoc Amh|bool|isALNUM_LC|int ch -=for apidoc Amh|bool|isALNUM_LC_uvchr|int ch - -=for apidoc Am|bool|isXDIGIT|char ch +the variants. +C, C, C, +C, C, C, and +C are also as described there, but additionally +include the platform's native underscore. + +=for apidoc Am|bool|isXDIGIT|UV ch +=for apidoc_item ||isXDIGIT_A|UV ch +=for apidoc_item ||isXDIGIT_L1|UV ch +=for apidoc_item ||isXDIGIT_uvchr|UV ch +=for apidoc_item ||isXDIGIT_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isXDIGIT_utf8|U8 * s|U8 * end +=for apidoc_item ||isXDIGIT_LC|UV ch +=for apidoc_item ||isXDIGIT_LC_uvchr|UV ch +=for apidoc_item ||isXDIGIT_LC_utf8_safe|U8 * s| U8 *end Returns a boolean indicating whether the specified character is a hexadecimal digit. In the ASCII range these are C<[0-9A-Fa-f]>. Variants C and C are identical to C. See the L for an explanation of -variants -C, C, C, C, -C, C, and C. - -=for apidoc Amh|bool|isXDIGIT_A|int ch -=for apidoc Amh|bool|isXDIGIT_L1|int ch -=for apidoc Amh|bool|isXDIGIT_uvchr|int ch -=for apidoc Amh|bool|isXDIGIT_utf8_safe|U8 * s|U8 * end -=for apidoc Amh|bool|isXDIGIT_utf8|U8 * s|U8 * end -=for apidoc Amh|bool|isXDIGIT_LC|int ch -=for apidoc Amh|bool|isXDIGIT_LC_uvchr|int ch -=for apidoc Amh|bool|isXDIGIT_LC_utf8_safe|U8 * s| U8 *end +the variants. -=for apidoc Am|bool|isIDFIRST|char ch +=for apidoc Am|bool|isIDFIRST|UV ch +=for apidoc_item ||isIDFIRST_A|UV ch +=for apidoc_item ||isIDFIRST_L1|UV ch +=for apidoc_item ||isIDFIRST_uvchr|UV ch +=for apidoc_item ||isIDFIRST_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isIDFIRST_utf8|U8 * s|U8 * end +=for apidoc_item ||isIDFIRST_LC|UV ch +=for apidoc_item ||isIDFIRST_LC_uvchr|UV ch +=for apidoc_item ||isIDFIRST_LC_utf8_safe|U8 * s| U8 *end Returns a boolean indicating whether the specified character can be the first character of an identifier. This is very close to, but not quite the same as the official Unicode property C. The difference is that this returns true only if the input character also matches L. See the L for an explanation of -variants -C, C, C, C, -C, C, C, -C, and C. - -=for apidoc Amh|bool|isIDFIRST_A|int ch -=for apidoc Amh|bool|isIDFIRST_L1|int ch -=for apidoc Amh|bool|isIDFIRST_uvchr|int ch -=for apidoc Amh|bool|isIDFIRST_utf8_safe|U8 * s|U8 * end -=for apidoc Amh|bool|isIDFIRST_utf8|U8 * s|U8 * end -=for apidoc Amh|bool|isIDFIRST_LC|int ch -=for apidoc Amh|bool|isIDFIRST_LC_uvchr|int ch -=for apidoc Amh|bool|isIDFIRST_LC_utf8_safe|U8 * s| U8 *end +the variants. -=for apidoc Am|bool|isIDCONT|char ch +=for apidoc Am|bool|isIDCONT|UV ch +=for apidoc_item ||isIDCONT_A|UV ch +=for apidoc_item ||isIDCONT_L1|UV ch +=for apidoc_item ||isIDCONT_uvchr|UV ch +=for apidoc_item ||isIDCONT_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isIDCONT_utf8|U8 * s|U8 * end +=for apidoc_item ||isIDCONT_LC|UV ch +=for apidoc_item ||isIDCONT_LC_uvchr|UV ch +=for apidoc_item ||isIDCONT_LC_utf8_safe|U8 * s| U8 *end Returns a boolean indicating whether the specified character can be the second or succeeding character of an identifier. This is very close to, but not quite the same as the official Unicode property C. The difference is that this returns true only if the input character also matches L. See the L for -an explanation of variants C, C, C, -C, C, C, C, -C, and C. - -=for apidoc Amh|bool|isIDCONT_A|int ch -=for apidoc Amh|bool|isIDCONT_L1|int ch -=for apidoc Amh|bool|isIDCONT_uvchr|int ch -=for apidoc Amh|bool|isIDCONT_utf8_safe|U8 * s|U8 * end -=for apidoc Amh|bool|isIDCONT_utf8|U8 * s|U8 * end -=for apidoc Amh|bool|isIDCONT_LC|int ch -=for apidoc Amh|bool|isIDCONT_LC_uvchr|int ch -=for apidoc Amh|bool|isIDCONT_LC_utf8_safe|U8 * s| U8 *end +an explanation of the variants. -=head1 Miscellaneous Functions +=for apidoc_section $numeric =for apidoc Am|U8|READ_XDIGIT|char str* Returns the value of an ASCII-range hex digit and advances the string pointer. @@ -1081,6 +1197,7 @@ changing>, that there may be more.) =for apidoc Am|UV|toUPPER_utf8|U8* p|U8* e|U8* s|STRLEN* lenp +=for apidoc_item toUPPER_utf8_safe Converts the first UTF-8 encoded character in the sequence starting at C

and extending no further than S> to its uppercase version, and stores that in UTF-8 in C, and its length in bytes in C. Note @@ -1097,8 +1214,7 @@ croak, or the function may return the REPLACEMENT CHARACTER, at the discretion of the implementation, and subject to change in future releases. -=for apidoc Am|UV|toUPPER_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp -Same as L. +C is now just a different spelling of plain C =for apidoc Am|U8|toFOLD|U8 ch Converts the specified character to foldcase. If the input is anything but an @@ -1118,6 +1234,7 @@ changing>, that there may be more). =for apidoc Am|UV|toFOLD_utf8|U8* p|U8* e|U8* s|STRLEN* lenp +=for apidoc_item toFOLD_utf8_safe Converts the first UTF-8 encoded character in the sequence starting at C

and extending no further than S> to its foldcase version, and stores that in UTF-8 in C, and its length in bytes in C. Note @@ -1135,51 +1252,64 @@ function may return the REPLACEMENT CHARACTER, at the discretion of the implementation, and subject to change in future releases. -=for apidoc Am|UV|toFOLD_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp -Same as L. - -=for apidoc Am|U8|toLOWER|U8 ch -Converts the specified character to lowercase. If the input is anything but an -ASCII uppercase character, that input character itself is returned. Variant -C is equivalent. - -=for apidoc Am|U8|toLOWER_L1|U8 ch -Converts the specified Latin1 character to lowercase. The results are -undefined if the input doesn't fit in a byte. - -=for apidoc Am|U8|toLOWER_LC|U8 ch -Converts the specified character to lowercase using the current locale's rules, -if possible; otherwise returns the input character itself. +C is now just a different spelling of plain C -=for apidoc Am|UV|toLOWER_uvchr|UV cp|U8* s|STRLEN* lenp -Converts the code point C to its lowercase version, and -stores that in UTF-8 in C, and its length in bytes in C. The code -point is interpreted as native if less than 256; otherwise as Unicode. Note -that the buffer pointed to by C needs to be at least C -bytes since the lowercase version may be longer than the original character. - -The first code point of the lowercased version is returned -(but note, as explained at L, that there may be more). - -=for apidoc Am|UV|toLOWER_utf8|U8* p|U8* e|U8* s|STRLEN* lenp -Converts the first UTF-8 encoded character in the sequence starting at C

and -extending no further than S> to its lowercase version, and -stores that in UTF-8 in C, and its length in bytes in C. Note -that the buffer pointed to by C needs to be at least C -bytes since the lowercase version may be longer than the original character. - -The first code point of the lowercased version is returned -(but note, as explained at L, that there may be more). -It will not attempt to read beyond S>, provided that the constraint -S e>> is true (this is asserted for in C<-DDEBUGGING> builds). If -the UTF-8 for the input character is malformed in some way, the program may -croak, or the function may return the REPLACEMENT CHARACTER, at the discretion -of the implementation, and subject to change in future releases. - -=for apidoc Am|UV|toLOWER_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp -Same as L. +=for apidoc Am|UV|toLOWER|UV cp +=for apidoc_item |UV|toLOWER_A|UV cp +=for apidoc_item |UV|toLOWER_L1|UV cp +=for apidoc_item |UV|toLOWER_LATIN1|UV cp +=for apidoc_item |UV|toLOWER_LC|UV cp +=for apidoc_item |UV|toLOWER_uvchr|UV cp|U8* s|STRLEN* lenp +=for apidoc_item |UV|toLOWER_utf8|U8* p|U8* e|U8* s|STRLEN* lenp +=for apidoc_item |UV|toLOWER_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp + +These all return the lowercase of a character. The differences are what domain +they operate on, and whether the input is specified as a code point (those +forms with a C parameter) or as a UTF-8 string (the others). In the latter +case, the code point to use is the first one in the buffer of UTF-8 encoded +code points, delineated by the arguments S>. + +C and C are synonyms of each other. They return the +lowercase of any uppercase ASCII-range code point. All other inputs are +returned unchanged. Since these are macros, the input type may be any integral +one, and the output will occupy the same number of bits as the input. + +C and C are synonyms of each other. They behave +identically as C for ASCII-range input. But additionally will return +the lowercase of any uppercase code point in the entire 0..255 range, assuming +a Latin-1 encoding (or the EBCDIC equivalent on such platforms). + +C returns the lowercase of the input code point according to the +rules of the current POSIX locale. Input code points outside the range 0..255 +are returned unchanged. + +C returns the lowercase of any Unicode code point. The return +value is identical to that of C for input code points in the 0..255 +range. The lowercase of the vast majority of Unicode code points is the same +as the code point itself. For these, and for code points above the legal +Unicode maximum, this returns the input code point unchanged. It additionally +stores the UTF-8 of the result into the buffer beginning at C, and its +length in bytes into C<*lenp>. The caller must have made C large enough to +contain at least C bytes to avoid possible overflow. + +NOTE: the lowercase of a code point may be more than one code point. The +return value of this function is only the first of these. The entire lowercase +is returned in C. To determine if the result is more than a single code +point, you can do something like this: + + uc = toLOWER_uvchr(cp, s, &len); + if (len > UTF8SKIP(s)) { is multiple code points } + else { is a single code point } + +C and C are synonyms of each other. The only +difference between these and C is that the source for these is +encoded in UTF-8, instead of being a code point. It is passed as a buffer +starting at C

, with C pointing to one byte beyond its end. The C

+buffer may certainly contain more than one code point; but only the first one +(up through S>) is examined. If the UTF-8 for the input character is +malformed in some way, the program may croak, or the function may return the +REPLACEMENT CHARACTER, at the discretion of the implementation, and subject to +change in future releases. =for apidoc Am|U8|toTITLE|U8 ch Converts the specified character to titlecase. If the input is anything but an @@ -1200,7 +1330,8 @@ changing>, that there may be more). =for apidoc Am|UV|toTITLE_utf8|U8* p|U8* e|U8* s|STRLEN* lenp -Converts the first UTF-8 encoded character in the sequence starting at C

and +=for apidoc_item toTITLE_utf8_safe +Convert the first UTF-8 encoded character in the sequence starting at C

-package as assumed. That is, C<$::sail> is equivalent to +package is assumed. That is, C<$::sail> is equivalent to C<$main::sail> (as well as to C<$main'sail>, still seen in ancient code, mostly from Perl 4). @@ -6136,6 +6162,18 @@ Normally, when accepting literal string input from the user, L|/quotemeta EXPR> or C<\Q> must be used. +Beware that if you put literal backslashes (those not inside +interpolated variables) between C<\Q> and C<\E>, double-quotish +backslash interpolation may lead to confusing results. If you +I to use literal backslashes within C<\Q...\E>, +consult L. + +Because the result of S \E">> has all metacharacters +quoted, there is no way to insert a literal C<$> or C<@> inside a +C<\Q\E> pair. If protected by C<\>, C<$> will be quoted to become +C<"\\\$">; if not, it is interpreted as the start of an interpolated +scalar. + In Perl v5.14, all non-ASCII characters are quoted in non-UTF-8-encoded strings, but not quoted in UTF-8 strings. @@ -6526,7 +6564,8 @@ =for Pod::Functions change a filename Changes the name of a file; an existing file NEWNAME will be -clobbered. Returns true for success, false otherwise. +clobbered. Returns true for success; on failure returns false and sets +L|perlvar/$!>. Behavior of this function varies wildly depending on your system implementation. For example, it will usually not work across file system @@ -6957,7 +6996,7 @@ print(uc($bar), $baz); See L for more details on unary operators and the comma operator, -and L for details on evaluating a hash in scalar contex. +and L for details on evaluating a hash in scalar context. =item seek FILEHANDLE,POSITION,WHENCE X X X @@ -7389,6 +7428,14 @@ Causes the script to sleep for (integer) EXPR seconds, or forever if no argument is given. Returns the integer number of seconds actually slept. +EXPR should be a positive integer. If called with a negative integer, +L|/sleep EXPR> does not sleep but instead emits a warning, sets +$! (C), and returns zero. + +C is permitted, but a function call to the underlying platform +implementation still occurs, with any side effects that may have. +C is therefore not exactly identical to not sleeping at all. + May be interrupted if the process receives a signal such as C. eval { @@ -7692,6 +7739,9 @@ my @result = sort { $a <=> $b } grep { $_ == $_ } @input; +In this version of F, the C function is implemented via the +mergesort algorithm. + =item splice ARRAY,OFFSET,LENGTH,LIST X @@ -7776,16 +7826,15 @@ If PATTERN matches the empty string, the EXPR is split at the match position (between characters). As an example, the following: - print join(':', split(/b/, 'abc')), "\n"; + my @x = split(/b/, "abc"); # ("a", "c") -uses the C in C<'abc'> as a separator to produce the output C. +uses the C in C<'abc'> as a separator to produce the list ("a", "c"). However, this: - print join(':', split(//, 'abc')), "\n"; + my @x = split(//, "abc"); # ("a", "b", "c") -uses empty string matches as separators to produce the output -C; thus, the empty string may be used to split EXPR into a -list of its component characters. +uses empty string matches as separators; thus, the empty string +may be used to split EXPR into a list of its component characters. As a special case for L|/split EPATTERNE,EXPR,LIMIT>, the empty pattern given in @@ -7810,7 +7859,18 @@ whitespace in EXPR is removed before splitting occurs, and the PATTERN is instead treated as if it were C; in particular, this means that I contiguous whitespace (not just a single space character) is used as -a separator. However, this special treatment can be avoided by specifying +a separator. + + my @x = split(" ", " Quick brown fox\n"); + # ("Quick", "brown", "fox") + + my @x = split(" ", "RED\tGREEN\tBLUE"); + # ("RED", "GREEN", "BLUE") + +Using split in this fashion is very similar to how +LE>|/qwESTRINGE> works. + +However, this special treatment can be avoided by specifying the pattern S> instead of the string S>, thereby allowing only a single space character to be a separator. In earlier Perls this special case was restricted to the use of a plain S> as the @@ -7818,7 +7878,7 @@ triggered by any expression which evaluates to the simple string S>. As of Perl 5.28, this special-cased whitespace splitting works as expected in -the scope of L<< S>|feature/The +the scope of L<< S>|feature/The 'unicode_strings' feature >>. In previous versions, and outside the scope of that feature, it exhibits L: characters that are whitespace according to Unicode rules but not according to ASCII rules can be @@ -7835,18 +7895,10 @@ times, producing a maximum of one field (namely, the entire value of EXPR). For instance: - print join(':', split(//, 'abc', 1)), "\n"; - -produces the output C, and this: - - print join(':', split(//, 'abc', 2)), "\n"; - -produces the output C, and each of these: - - print join(':', split(//, 'abc', 3)), "\n"; - print join(':', split(//, 'abc', 4)), "\n"; - -produces the output C. + my @x = split(//, "abc", 1); # ("abc") + my @x = split(//, "abc", 2); # ("a", "bc") + my @x = split(//, "abc", 3); # ("a", "b", "c") + my @x = split(//, "abc", 4); # ("a", "b", "c") If LIMIT is negative, it is treated as if it were instead arbitrarily large; as many fields as possible are produced. @@ -7857,13 +7909,13 @@ preserved); if all fields are empty, then all fields are considered to be trailing (and are thus stripped in this case). Thus, the following: - print join(':', split(/,/, 'a,b,c,,,')), "\n"; + my @x = split(/,/, "a,b,c,,,"); # ("a", "b", "c") -produces the output C, but the following: +produces only a three element list. - print join(':', split(/,/, 'a,b,c,,,', -1)), "\n"; + my @x = split(/,/, "a,b,c,,,", -1); # ("a", "b", "c", "", "", "") -produces the output C. +produces a six element list. In time-critical applications, it is worthwhile to avoid splitting into more fields than necessary. Thus, when assigning to a list, @@ -7879,23 +7931,21 @@ An empty leading field is produced when there is a positive-width match at the beginning of EXPR. For instance: - print join(':', split(/ /, ' abc')), "\n"; + my @x = split(/ /, " abc"); # ("", "abc") -produces the output C<:abc>. However, a zero-width match at the +splits into two elements. However, a zero-width match at the beginning of EXPR never produces an empty field, so that: - print join(':', split(//, ' abc')); + my @x = split(//, " abc"); # (" ", "a", "b", "c") -produces the output S> (rather than S>). +splits into four elements instead of five. An empty trailing field, on the other hand, is produced when there is a match at the end of EXPR, regardless of the length of the match (of course, unless a non-zero LIMIT is given explicitly, such fields are removed, as in the last example). Thus: - print join(':', split(//, ' abc', -1)), "\n"; - -produces the output S>. + my @x = split(//, " abc", -1); # (" ", "a", "b", "c", "") If the PATTERN contains L, @@ -7910,20 +7960,20 @@ evaluated in list context (each returned list is provided in the associated comment): - split(/-|,/, "1-10,20", 3) - # ('1', '10', '20') + my @x = split(/-|,/ , "1-10,20", 3); + # ("1", "10", "20") - split(/(-|,)/, "1-10,20", 3) - # ('1', '-', '10', ',', '20') + my @x = split(/(-|,)/ , "1-10,20", 3); + # ("1", "-", "10", ",", "20") - split(/-|(,)/, "1-10,20", 3) - # ('1', undef, '10', ',', '20') + my @x = split(/-|(,)/ , "1-10,20", 3); + # ("1", undef, "10", ",", "20") - split(/(-)|,/, "1-10,20", 3) - # ('1', '-', '10', undef, '20') + my @x = split(/(-)|,/ , "1-10,20", 3); + # ("1", "-", "10", undef, "20") - split(/(-)|(,)/, "1-10,20", 3) - # ('1', '-', undef, '10', undef, ',', '20') + my @x = split(/(-)|(,)/, "1-10,20", 3); + # ("1", "-", undef, "10", undef, ",", "20") =item sprintf FORMAT, LIST X @@ -8202,6 +8252,11 @@ z interpret integer as C types "size_t" or "ssize_t" on Perl 5.14 or later +Note that, in general, using the C modifier (for example, when writing +C<"%ld"> or C<"%lu"> instead of C<"%d"> and C<"%u">) is unnecessary +when used from Perl code. Moreover, it may be harmful, for example on +Windows 64-bit where a long is 32-bits. + As of 5.14, none of these raises an exception if they are not supported on your platform. However, if warnings are enabled, a warning of the L|warnings> warning class is issued on an unsupported @@ -8537,6 +8592,11 @@ dummy placeholder. However, since initialization of state variables in such lists is currently not possible this would serve no purpose. +Redeclaring a variable in the same scope or statement will "shadow" the +previous declaration, creating a new instance and preventing access to +the previous one. This is usually undesired and, if warnings are enabled, +will result in a warning in the C category. + L|/state VARLIST> is available only if the L feature|feature/The 'state' feature> is enabled or if it is prefixed with C. The diff -Nru perl-5.32.1/pod/perlgit.pod perl-5.34.0/pod/perlgit.pod --- perl-5.32.1/pod/perlgit.pod 2020-12-18 09:58:52.000000000 +0000 +++ perl-5.34.0/pod/perlgit.pod 2021-05-04 06:52:48.000000000 +0000 @@ -556,6 +556,60 @@ The C command just updates the C refs, as the objects themselves should have been fetched when pulling from C. +=head2 Working with Github pull requests + +Pull requests typically originate from outside of the C +repository, so if you want to test or work with it locally a vanilla +C from the C repository won't fetch it. + +However Github does provide a mechanism to fetch a pull request to a +local branch. They are available on Github remotes under C, so +you can use C<< git fetch pull/I/head:I >> to make a +local copy. eg. to fetch pull request 9999 to the local branch +C run: + + git fetch origin pull/9999/head:local-branch-name + +and then: + + git checkout local-branch-name + +Note: this branch is not rebased on C, so instead of the +checkout above, you might want: + + git rebase origin/blead local-branch-name + +which rebases C on C, and checks it out. + +Alternatively you can configure the remote to fetch all pull requests +as remote-tracking branches. To do this edit the remote in +F<.git/config>, for example if your github remote is C you'd +have: + + [remote "origin"] + url = git@github.com:/Perl/perl5.git + fetch = +refs/heads/*:refs/remotes/origin/* + +Add a line to map the remote pull request branches to remote-tracking +branches: + + [remote "origin"] + url = git@github.com:/Perl/perl5.git + fetch = +refs/heads/*:refs/remotes/origin/* + fetch = +refs/pull/*/head:refs/remotes/origin/pull/* + +and then do a fetch as normal: + + git fetch origin + +This will create a remote-tracking branch for every pull request, including +closed requests. + +To remove those remote-tracking branches, remove the line added above +and prune: + + git fetch -p origin # or git remote prune origin + =head2 Accepting a patch If you have received a patch file generated using the above section, diff -Nru perl-5.32.1/pod/perlgov.pod perl-5.34.0/pod/perlgov.pod --- perl-5.32.1/pod/perlgov.pod 2021-01-09 12:17:34.000000000 +0000 +++ perl-5.34.0/pod/perlgov.pod 2021-05-04 06:52:48.000000000 +0000 @@ -474,7 +474,7 @@ =item * Abhijit Menon-Sen (inactive) -=item * Andy Dougherty +=item * Andy Dougherty (inactive) =item * Chad Granum @@ -508,6 +508,8 @@ =item * Max Maischein +=item * Neil Bowers + =item * Nicholas Clark =item * Nicolas R. @@ -518,8 +520,6 @@ =item * Ricardo Signes -=item * Sawyer X - =item * Steve Hay =item * Stuart Mackintosh diff -Nru perl-5.32.1/pod/perlguts.pod perl-5.34.0/pod/perlguts.pod --- perl-5.32.1/pod/perlguts.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlguts.pod 2021-05-04 06:52:48.000000000 +0000 @@ -21,16 +21,52 @@ Each typedef has specific routines that manipulate the various data types. +=for apidoc_section $AV +=for apidoc Ayh||AV +=for apidoc_section $HV +=for apidoc Ayh||HV +=for apidoc_section $SV +=for apidoc Ayh||SV + =head2 What is an "IV"? Perl uses a special typedef IV which is a simple signed integer type that is guaranteed to be large enough to hold a pointer (as well as an integer). Additionally, there is the UV, which is simply an unsigned IV. -Perl also uses two special typedefs, I32 and I16, which will always be at -least 32-bits and 16-bits long, respectively. (Again, there are U32 and U16, -as well.) They will usually be exactly 32 and 16 bits long, but on Crays -they will both be 64 bits. +Perl also uses several special typedefs to declare variables to hold +integers of (at least) a given size. +Use I8, I16, I32, and I64 to declare a signed integer variable which has +at least as many bits as the number in its name. These all evaluate to +the native C type that is closest to the given number of bits, but no +smaller than that number. For example, on many platforms, a C is +16 bits long, and if so, I16 will evaluate to a C. But on +platforms where a C isn't exactly 16 bits, Perl will use the +smallest type that contains 16 bits or more. + +U8, U16, U32, and U64 are to declare the corresponding unsigned integer +types. + +If the platform doesn't support 64-bit integers, both I64 and U64 will +be undefined. Use IV and UV to declare the largest practicable, and +C> for the absolute maximum unsigned, but which +may not be usable in all circumstances. + +A numeric constant can be specified with L>, +L>, and similar. + +=for apidoc_section $integer +=for apidoc Ayh||I8 +=for apidoc_item ||I16 +=for apidoc_item ||I32 +=for apidoc_item ||I64 +=for apidoc_item ||IV + +=for apidoc Ayh||U8 +=for apidoc_item ||U16 +=for apidoc_item ||U32 +=for apidoc_item ||U64 +=for apidoc_item ||UV =head2 Working with SVs @@ -46,6 +82,8 @@ example, a trailing C is tacked on automatically. The non-string use is documented only in this paragraph.) +=for apidoc Ayh||NV + The seven routines are: SV* newSViv(IV); @@ -60,6 +98,8 @@ F) guaranteed to be large enough to represent the size of any string that perl can handle. +=for apidoc Ayh||STRLEN + In the unlikely case of a SV requiring more complex initialization, you can create an empty SV with newSV(len). If C is 0 an empty SV of type NULL is returned, else an SV of type PV is returned with len + 1 (for @@ -113,27 +153,74 @@ Nevertheless, you should be very careful when you pass a string stored in an SV to a C function or system call. -To access the actual value that an SV points to, you can use the macros: +To access the actual value that an SV points to, Perl's API exposes +several macros that coerce the actual scalar type into an IV, UV, double, +or string: + +=over + +=item * C (C) and C (C) + +=item * C (C) + +=item * Strings are a bit complicated: + +=over + +=item * Byte string: C or C + +If the Perl string is C<"\xff\xff">, then this returns a 2-byte C. - SvIV(SV*) - SvUV(SV*) - SvNV(SV*) - SvPV(SV*, STRLEN len) - SvPV_nolen(SV*) - -which will automatically coerce the actual scalar type into an IV, UV, double, -or string. - -In the C macro, the length of the string returned is placed into the -variable C (this is a macro, so you do I use C<&len>). If you do -not care what the length of the data is, use the C macro. -Historically the C macro with the global variable C has been -used in this case. But that can be quite inefficient because C must +This is suitable for Perl strings that represent bytes. + +=item * UTF-8 string: C or C + +If the Perl string is C<"\xff\xff">, then this returns a 4-byte C. + +This is suitable for Perl strings that represent characters. + +B: That C will be encoded via Perl's internal UTF-8 variant, +which means that if the SV contains non-Unicode code points (e.g., +0x110000), then the result may contain extensions over valid UTF-8. +See L for some methods Perl gives +you to check the UTF-8 validity of these macros' returns. + +=item * You can also use C or C +to fetch the SV's raw internal buffer. This is tricky, though; if your Perl +string +is C<"\xff\xff">, then depending on the SV's internal encoding you might get +back a 2-byte B a 4-byte C. +Moreover, if it's the 4-byte string, that could come from either Perl +C<"\xff\xff"> stored UTF-8 encoded, or Perl C<"\xc3\xbf\xc3\xbf"> stored +as raw octets. To differentiate between these you B look up the +SV's UTF8 bit (cf. C) to know whether the source Perl string +is 2 characters (C would be on) or 4 characters (C would be +off). + +B Use of C, C, or +similarly-named macros I looking up the SV's UTF8 bit is +almost certainly a bug if non-ASCII input is allowed. + +When the UTF8 bit is on, the same B about UTF-8 validity applies +here as for C. + +=back + +(See L for more details.) + +In C, C, and C, the length of the C returned +is placed into the +variable C (these are macros, so you do I use C<&len>). If you do +not care what the length of the data is, use C, +C, or C instead. +The global variable C can also be given to +C/C/C +in this case. But that can be quite inefficient because C must be accessed in thread-local storage in threaded Perl. In any case, remember that Perl allows arbitrary strings of data that may both contain NULs and might not be terminated by a C. -Also remember that C doesn't allow you to safely say C. It might work with your compiler, but it won't work for everyone. Break this sort of statement up into separate assignments: @@ -141,9 +228,11 @@ SV *s; STRLEN len; char *ptr; - ptr = SvPV(s, len); + ptr = SvPVbyte(s, len); foo(ptr, len); +=back + If you want to know if the scalar value is TRUE, you can use: SvTRUE(SV*) @@ -160,7 +249,7 @@ C). If you want to write to an existing SV's buffer and set its value to a -string, use SvPV_force() or one of its variants to force the SV to be +string, use SvPVbyte_force() or one of its variants to force the SV to be a PV. This will remove any of various types of non-stringness from the SV while preserving the content of the SV in the PV. This can be used, for example, to append data from an API function to a buffer @@ -190,7 +279,7 @@ s = SvGROW(sv, needlen + 1); /* something that modifies up to needlen bytes at s, but modifies newlen bytes - eg. newlen = read(fd, s. needlen); + eg. newlen = read(fd, s, needlen); */ s[newlen] = '\0'; SvCUR_set(sv, newlen); @@ -513,6 +602,8 @@ once you have an C, to get the actual key and value, use the routines specified below. +=for apidoc Ayh||HE + I32 hv_iterinit(HV*); /* Prepares starting point to traverse hash table */ HE* hv_iternext(HV*); @@ -548,6 +639,7 @@ See L for more information on how to use the hash access functions on tied hashes. +=for apidoc_section $HV =for apidoc Amh|void|PERL_HASH|U32 hash|char *key|STRLEN klen =head2 Hash API Extensions @@ -980,6 +1072,63 @@ For more information on references and blessings, consult L. +=head2 I/O Handles + +Like AVs and HVs, IO objects are another type of non-scalar SV which +may contain input and output L objects or a C +from opendir(). + +You can create a new IO object: + + IO* newIO(); + +Unlike other SVs, a new IO object is automatically blessed into the +L class. + +The IO object contains an input and output PerlIO handle: + + PerlIO *IoIFP(IO *io); + PerlIO *IoOFP(IO *io); + +Typically if the IO object has been opened on a file, the input handle +is always present, but the output handle is only present if the file +is open for output. For a file, if both are present they will be the +same PerlIO object. + +Distinct input and output PerlIO objects are created for sockets and +character devices. + +The IO object also contains other data associated with Perl I/O +handles: + + IV IoLINES(io); /* $. */ + IV IoPAGE(io); /* $% */ + IV IoPAGE_LEN(io); /* $= */ + IV IoLINES_LEFT(io); /* $- */ + char *IoTOP_NAME(io); /* $^ */ + GV *IoTOP_GV(io); /* $^ */ + char *IoFMT_NAME(io); /* $~ */ + GV *IoFMT_GV(io); /* $~ */ + char *IoBOTTOM_NAME(io); + GV *IoBOTTOM_GV(io); + char IoTYPE(io); + U8 IoFLAGS(io); + +Most of these are involved with L. + +IoFLAGs() may contain a combination of flags, the most interesting of +which are C (C<$|>) for autoflush and C, +settable with L<< IO::Handle's untaint() method|IO::Handle/"$io->untaint" >>. + +The IO object may also contains a directory handle: + + DIR *IoDIRP(io); + +suitable for use with PerlDir_read() etc. + +All of these accessors macros are lvalues, there are no distinct +C<_set()> macros to modify the members of the IO object. + =head2 Double-Typed SVs Scalar variables normally contain only one type of value, an integer, @@ -1162,6 +1311,8 @@ "Magic Virtual Table" to handle the various operations that might be applied to that variable. +=for apidoc Ayh||MGVTBL + The C has five (or sometimes eight) pointers to the following routine types: @@ -1288,50 +1439,50 @@ extensions -=for apidoc Amnh||PERL_MAGIC_sv -=for apidoc Amnh||PERL_MAGIC_arylen -=for apidoc Amnh||PERL_MAGIC_rhash -=for apidoc Amnh||PERL_MAGIC_debugvar -=for apidoc Amnh||PERL_MAGIC_pos -=for apidoc Amnh||PERL_MAGIC_symtab -=for apidoc Amnh||PERL_MAGIC_backref -=for apidoc Amnh||PERL_MAGIC_arylen_p -=for apidoc Amnh||PERL_MAGIC_bm -=for apidoc Amnh||PERL_MAGIC_overload_table -=for apidoc Amnh||PERL_MAGIC_regdata -=for apidoc Amnh||PERL_MAGIC_regdatum -=for apidoc Amnh||PERL_MAGIC_env -=for apidoc Amnh||PERL_MAGIC_envelem -=for apidoc Amnh||PERL_MAGIC_fm -=for apidoc Amnh||PERL_MAGIC_regex_global -=for apidoc Amnh||PERL_MAGIC_hints -=for apidoc Amnh||PERL_MAGIC_hintselem -=for apidoc Amnh||PERL_MAGIC_isa -=for apidoc Amnh||PERL_MAGIC_isaelem -=for apidoc Amnh||PERL_MAGIC_nkeys -=for apidoc Amnh||PERL_MAGIC_dbfile -=for apidoc Amnh||PERL_MAGIC_dbline -=for apidoc Amnh||PERL_MAGIC_shared -=for apidoc Amnh||PERL_MAGIC_shared_scalar -=for apidoc Amnh||PERL_MAGIC_collxfrm -=for apidoc Amnh||PERL_MAGIC_tied -=for apidoc Amnh||PERL_MAGIC_tiedelem -=for apidoc Amnh||PERL_MAGIC_tiedscalar -=for apidoc Amnh||PERL_MAGIC_qr -=for apidoc Amnh||PERL_MAGIC_sig -=for apidoc Amnh||PERL_MAGIC_sigelem -=for apidoc Amnh||PERL_MAGIC_taint -=for apidoc Amnh||PERL_MAGIC_uvar -=for apidoc Amnh||PERL_MAGIC_uvar_elem -=for apidoc Amnh||PERL_MAGIC_vstring -=for apidoc Amnh||PERL_MAGIC_vec -=for apidoc Amnh||PERL_MAGIC_utf8 -=for apidoc Amnh||PERL_MAGIC_substr -=for apidoc Amnh||PERL_MAGIC_nonelem -=for apidoc Amnh||PERL_MAGIC_defelem -=for apidoc Amnh||PERL_MAGIC_lvref -=for apidoc Amnh||PERL_MAGIC_checkcall -=for apidoc Amnh||PERL_MAGIC_ext +=for apidoc AmnhU||PERL_MAGIC_arylen +=for apidoc_item ||PERL_MAGIC_arylen_p +=for apidoc_item ||PERL_MAGIC_backref +=for apidoc_item ||PERL_MAGIC_bm +=for apidoc_item ||PERL_MAGIC_checkcall +=for apidoc_item ||PERL_MAGIC_collxfrm +=for apidoc_item ||PERL_MAGIC_dbfile +=for apidoc_item ||PERL_MAGIC_dbline +=for apidoc_item ||PERL_MAGIC_debugvar +=for apidoc_item ||PERL_MAGIC_defelem +=for apidoc_item ||PERL_MAGIC_env +=for apidoc_item ||PERL_MAGIC_envelem +=for apidoc_item ||PERL_MAGIC_ext +=for apidoc_item ||PERL_MAGIC_fm +=for apidoc_item ||PERL_MAGIC_hints +=for apidoc_item ||PERL_MAGIC_hintselem +=for apidoc_item ||PERL_MAGIC_isa +=for apidoc_item ||PERL_MAGIC_isaelem +=for apidoc_item ||PERL_MAGIC_lvref +=for apidoc_item ||PERL_MAGIC_nkeys +=for apidoc_item ||PERL_MAGIC_nonelem +=for apidoc_item ||PERL_MAGIC_overload_table +=for apidoc_item ||PERL_MAGIC_pos +=for apidoc_item ||PERL_MAGIC_qr +=for apidoc_item ||PERL_MAGIC_regdata +=for apidoc_item ||PERL_MAGIC_regdatum +=for apidoc_item ||PERL_MAGIC_regex_global +=for apidoc_item ||PERL_MAGIC_rhash +=for apidoc_item ||PERL_MAGIC_shared +=for apidoc_item ||PERL_MAGIC_shared_scalar +=for apidoc_item ||PERL_MAGIC_sig +=for apidoc_item ||PERL_MAGIC_sigelem +=for apidoc_item ||PERL_MAGIC_substr +=for apidoc_item ||PERL_MAGIC_sv +=for apidoc_item ||PERL_MAGIC_symtab +=for apidoc_item ||PERL_MAGIC_taint +=for apidoc_item ||PERL_MAGIC_tied +=for apidoc_item ||PERL_MAGIC_tiedelem +=for apidoc_item ||PERL_MAGIC_tiedscalar +=for apidoc_item ||PERL_MAGIC_utf8 +=for apidoc_item ||PERL_MAGIC_uvar +=for apidoc_item ||PERL_MAGIC_uvar_elem +=for apidoc_item ||PERL_MAGIC_vec +=for apidoc_item ||PERL_MAGIC_vstring =for mg_vtable.pl end @@ -1575,8 +1726,23 @@ =item C +=item C + +=item C + +=item C + These macros arrange things to restore the value of integer variable -C at the end of enclosing I. +C at the end of the enclosing I. + +=for apidoc_section $stack +=for apidoc Amh||SAVEINT|int i +=for apidoc Amh||SAVEIV|IV i +=for apidoc Amh||SAVEI32|I32 i +=for apidoc Amh||SAVELONG|long i +=for apidoc Amh||SAVEI8|I8 i +=for apidoc Amh||SAVEI16|I16 i +=for apidoc Amh||SAVEBOOL|bool i =item C @@ -1587,6 +1753,9 @@ C and back, C

should be able to survive conversion to C and back. +=for apidoc Amh||SAVESPTR|SV * s +=for apidoc Amh||SAVEPPTR|char * p + =item C The refcount of C will be decremented at the end of @@ -1598,6 +1767,8 @@ Also compare C. +=for apidoc Amh||SAVEFREESV|SV* sv + =item C Just like C, but mortalizes C at the end of the current @@ -1605,15 +1776,21 @@ effect of keeping C alive until the statement that called the currently live scope has finished executing. +=for apidoc Amh||SAVEMORTALIZESV|SV* sv + =item C The C is op_free()ed at the end of I. +=for apidoc Amh||SAVEFREEOP|OP *op + =item C The chunk of memory which is pointed to by C

is Safefree()ed at the end of I. +=for apidoc Amh||SAVEFREEPV|void * p + =item C Clears a slot in the current scratchpad which corresponds to C at @@ -1628,21 +1805,31 @@ SAVEDELETE(PL_defstash, savepv(tmpbuf), strlen(tmpbuf)); +=for apidoc Amh||SAVEDELETE|HV * hv|char * key|I32 length + =item C At the end of I the function C is called with the only argument C

. +=for apidoc Ayh||DESTRUCTORFUNC_NOCONTEXT_t +=for apidoc Amh||SAVEDESTRUCTOR|DESTRUCTORFUNC_NOCONTEXT_t f|void *p + =item C At the end of I the function C is called with the implicit context argument (if any), and C

. +=for apidoc Ayh||DESTRUCTORFUNC_t +=for apidoc Amh||SAVEDESTRUCTOR_X|DESTRUCTORFUNC_t f|void *p + =item C The current offset on the Perl internal stack (cf. C) is restored at the end of I. +=for apidoc Amh||SAVESTACK_POS + =back The following API list contains functions, thus one needs to @@ -1650,6 +1837,9 @@ or Perlish Cs). Where the above macros take C, a similar function takes C. +Other macros above have functions implementing them, but its probably +best to just use the macro, and not those or the ones below. + =over 4 =item C @@ -2084,6 +2274,11 @@ following the C pointer from the first child to the last (but see below). +=for apidoc Ayh||OP +=for apidoc Ayh||BINOP +=for apidoc Ayh||LISTOP +=for apidoc Ayh||UNOP + There are also some other op types: a C holds a regular expression, and has no children, and a C may or may not have children. If the C field is non-zero, it behaves like a C. To @@ -2091,6 +2286,9 @@ optimization (see L) it will still have children in accordance with its former type. +=for apidoc Ayh||LOOP +=for apidoc Ayh||PMOP + Finally, there is a C, or logic op. Like a C, this has one or more children, but it doesn't have an C field: so you have to follow C and then the C chain itself to find the @@ -2100,6 +2298,8 @@ that in general, C may not point to any of the direct children of the C. +=for apidoc Ayh||LOGOP + Starting in version 5.21.2, perls built with the experimental define C<-DPERL_OP_PARENT> add an extra boolean flag for each op, C. When not set, this indicates that this is the last op in an @@ -2195,11 +2395,14 @@ PL_peepp = my_peep; static peep_t prev_rpeepp; - static void my_rpeep(pTHX_ OP *o) + static void my_rpeep(pTHX_ OP *first) { - OP *orig_o = o; - for(; o; o = o->op_next) { + OP *o = first, *t = first; + for(; o = o->op_next, t = t->op_next) { /* custom per-op optimisation goes here */ + o = o->op_next; + if (!o || o == t) break; + /* custom per-op optimisation goes AND here */ } prev_rpeepp(aTHX_ orig_o); } @@ -2207,6 +2410,8 @@ prev_rpeepp = PL_rpeepp; PL_rpeepp = my_rpeep; +=for apidoc Ayh||peep_t + =head2 Pluggable runops The compile tree is executed in a runops function. There are two runops @@ -2221,6 +2426,8 @@ PL_runops = my_runops; +=for apidoc Amnh|runops_proc_t|PL_runops + This function should be as efficient as possible to keep your programs running as fast as possible. @@ -2240,6 +2447,8 @@ This will arrange to have C called at the start of compiling every lexical scope. The available hooks are: +=for apidoc Ayh||BHK + =over 4 =item C @@ -2336,12 +2545,12 @@ The Perl interpreter can be regarded as a closed box: it has an API for feeding it code or otherwise making it do things, but it also has functions for its own use. This smells a lot like an object, and -there are ways for you to build Perl so that you can have multiple +there is a way for you to build Perl so that you can have multiple interpreters, with one interpreter represented either as a C structure, or inside a thread-specific structure. These structures contain all the context, the state of that interpreter. -One macro controls the major Perl build flavor: MULTIPLICITY. The +The macro that controls the major Perl build flavor is MULTIPLICITY. The MULTIPLICITY build has a C structure that packages all the interpreter state. With multiplicity-enabled perls, PERL_IMPLICIT_CONTEXT is also normally defined, and enables the support for passing in a "hidden" first @@ -2349,23 +2558,6 @@ multi-threaded perls possible (with the ithreads threading model, related to the macro USE_ITHREADS.) -Two other "encapsulation" macros are the PERL_GLOBAL_STRUCT and -PERL_GLOBAL_STRUCT_PRIVATE (the latter turns on the former, and the -former turns on MULTIPLICITY.) The PERL_GLOBAL_STRUCT causes all the -internal variables of Perl to be wrapped inside a single global struct, -struct perl_vars, accessible as (globals) &PL_Vars or PL_VarsPtr or -the function Perl_GetVars(). The PERL_GLOBAL_STRUCT_PRIVATE goes -one step further, there is still a single struct (allocated in main() -either from heap or from stack) but there are no global data symbols -pointing to it. In either case the global struct should be initialized -as the very first thing in main() using Perl_init_global_struct() and -correspondingly tear it down after perl_free() using Perl_free_global_struct(), -please see F for usage details. You may also need -to use C in your coding to "declare the global variables" -when you are using them. dTHX does this for you automatically. - -=for apidoc Amnh||dVAR - To see whether you have non-const data you can use a BSD (or GNU) compatible C: @@ -2379,11 +2571,6 @@ The test F does this kind of symbol sanity checking on C. -For backward compatibility reasons defining just PERL_GLOBAL_STRUCT -doesn't actually hide all symbols inside a big global struct: some -PerlIO_xxx vtables are left visible. The PERL_GLOBAL_STRUCT_PRIVATE -then hides everything (see how the PERLIO_FUNCS_DECL is used). - All this obviously requires a way for the Perl internal functions to be either subroutines taking some kind of structure as the first argument, or subroutines taking nothing as the first argument. To @@ -2414,6 +2601,9 @@ STATIC becomes "static" in C, and may be #define'd to nothing in some configurations in the future. +=for apidoc_section $directives +=for apidoc Ayh||STATIC + A public function (i.e. part of the internal API, but not necessarily sanctioned for use in extensions) begins like this: @@ -2427,6 +2617,7 @@ or 'd' for Beclaration, so we have C, C and C, and their variants. +=for apidoc_section $concurrency =for apidoc Amnh||aTHX =for apidoc Amnh||aTHX_ =for apidoc Amnh||dTHX @@ -2594,13 +2785,6 @@ macro with the underscore for functions that take explicit arguments, or the form without the argument for functions with no explicit arguments. -If one is compiling Perl with the C<-DPERL_GLOBAL_STRUCT> the C -definition is needed if the Perl global variables (see F -or F) are accessed in the function and C is not -used (the C includes the C if necessary). One notices -the need for C only with the said compile-time define, because -otherwise the Perl global variables are visible as-is. - =head2 Should I do anything special if I call perl from multiple threads? If you create interpreters in one thread and then proceed to call them in @@ -2689,14 +2873,6 @@ NVff NV %f-like NVgf NV %g-like -=for apidoc Amnh||IVdf -=for apidoc Amnh||UVuf -=for apidoc Amnh||UVof -=for apidoc Amnh||UVxf -=for apidoc Amnh||NVef -=for apidoc Amnh||NVff -=for apidoc Amnh||NVgf - These will take care of 64-bit integers and long doubles. For example: @@ -2716,7 +2892,7 @@ The contents of SVs may be printed using the C format, like so: - Perl_croak(aTHX_ "This croaked because: %" SVf "\n", SvfARG(err_msg)) + Perl_croak(aTHX_ "This croaked because: %" SVf "\n", SVfARG(err_msg)) where C is an SV. @@ -2776,6 +2952,12 @@ One way to do this for typical filehandles is to invoke perl with the C<-C>> parameter. (See Llist]>. +=for apidoc_section $formats +=for apidoc Amnh||UTF8f +=for apidoc Amh||UTF8fARG|bool is_utf8|Size_t byte_len|char *str + +=cut + =head2 Formatted Printing of C and C The most general way to do this is to cast them to a UV or IV, and @@ -2790,6 +2972,11 @@ This modifier is not portable, so its use should be restricted to C. +=head2 Formatted Printing of C, C, C and other special sizes + +There are modifiers for these special situations if you are using +C. See L. + =head2 Pointer-To-Integer and Integer-To-Pointer Because pointer size does not necessarily equal integer size, @@ -2800,10 +2987,11 @@ PTR2NV(pointer) INT2PTR(pointertotype, integer) -=for apidoc Amh|void *|INT2PTR|type|int value -=for apidoc Amh|UV|PTR2UV|void * -=for apidoc Amh|IV|PTR2IV|void * -=for apidoc Amh|NV|PTR2NV|void * +=for apidoc_section $casting +=for apidoc Amh|type|INT2PTR|type|int value +=for apidoc Amh|UV|PTR2UV|void * ptr +=for apidoc Amh|IV|PTR2IV|void * ptr +=for apidoc Amh|NV|PTR2NV|void * ptr For example: @@ -2815,6 +3003,19 @@ AV *av = ...; UV uv = PTR2UV(av); +There are also + + PTR2nat(pointer) /* pointer to integer of PTRSIZE */ + PTR2ul(pointer) /* pointer to unsigned long */ + +=for apidoc Amh|IV|PTR2nat|void * +=for apidoc Amh|unsigned long|PTR2ul|void * + +And C which gives the native type for an integer the same size as +pointers, such as C or C. + +=for apidoc Ayh|type|PTRV + =head2 Exception Handling There are a couple of macros to do very basic exception handling in XS @@ -2856,10 +3057,6 @@ writers. L is the autogenerated manual for the functions which are not part of the API and are supposedly for internal use only. -=for comment -skip apidoc -The following is an example and shouldn't be read as a real apidoc line - Source documentation is created by putting POD comments into the C source, like this: @@ -3095,6 +3292,66 @@ change, but you can look at the code for C in F for an example as to how it's currently done. +=head2 How do I pass a Perl string to a C library? + +A Perl string, conceptually, is an opaque sequence of code points. +Many C libraries expect their inputs to be "classical" C strings, which are +arrays of octets 1-255, terminated with a NUL byte. Your job when writing +an interface between Perl and a C library is to define the mapping between +Perl and that library. + +Generally speaking, C and related macros suit this task well. +These assume that your Perl string is a "byte string", i.e., is either +raw, undecoded input into Perl or is pre-encoded to, e.g., UTF-8. + +Alternatively, if your C library expects UTF-8 text, you can use +C and related macros. This has the same effect as encoding +to UTF-8 then calling the corresponding C-related macro. + +Some C libraries may expect other encodings (e.g., UTF-16LE). To give +Perl strings to such libraries +you must either do that encoding in Perl then use C, or +use an intermediary C library to convert from however Perl stores the +string to the desired encoding. + +Take care also that NULs in your Perl string don't confuse the C +library. If possible, give the string's length to the C library; if that's +not possible, consider rejecting strings that contain NUL bytes. + +=head3 What about C, C, etc.? + +Consider a 3-character Perl string C<$foo = "\x64\x78\x8c">. +Perl can store these 3 characters either of two ways: + +=over + +=item * bytes: 0x64 0x78 0x8c + +=item * UTF-8: 0x64 0x78 0xc2 0x8c + +=back + +Now let's say you convert C<$foo> to a C string thus: + + STRLEN strlen; + char *str = SvPV(foo_sv, strlen); + +At this point C could point to a 3-byte C string or a 4-byte one. + +Generally speaking, we want C to be the same regardless of how +Perl stores C<$foo>, so the ambiguity here is undesirable. C +and C solve that by giving predictable output: use +C if your C library expects byte strings, or C +if it expects UTF-8. + +If your C library happens to support both encodings, then C--always +in tandem with lookups to C!--may be safe and (slightly) more +efficient. + +B B Use L's C and C functions +in your tests to ensure consistent handling regardless of Perl's +internal encoding. + =head2 How do I convert a string to UTF-8? If you're mixing UTF-8 and non-UTF-8 strings, it is necessary to upgrade @@ -3210,6 +3467,8 @@ C, and register the structure against the ppaddr using C. A trivial example might look like: +=for apidoc Ayh||XOP + static XOP my_xop; static OP *my_pp(pTHX); @@ -3276,6 +3535,8 @@ by the peephole optimizer. I is the OP that needs optimizing; I is the previous OP optimized, whose C points to I. +=for apidoc Ayh||Perl_cpeep_t + =back C directly supports the creation of custom ops by name. @@ -3418,7 +3679,7 @@ address to the temporaries stack. Likewise, there is no public API to read values from the temporaries stack. -Instead. the macros C and C are used. The C +Instead, the macros C and C are used. The C macro establishes the base levels of the temporaries stack, by capturing the current value of C into C and saving the previous value to the save stack. Thereafter, whenever C is invoked all of @@ -3846,7 +4107,7 @@ store the size of the slab (see below on why slabs vary in size), because Perl can follow pointers to find the last op. -It might seem possible eliminate slab reference counts altogether, by having +It might seem possible to eliminate slab reference counts altogether, by having all ops implicitly attached to C when allocated and freed when the CV is freed. That would also allow C to skip C altogether, and thus free ops faster. But that doesn't work in those cases where ops need to diff -Nru perl-5.32.1/pod/perlhack.pod perl-5.34.0/pod/perlhack.pod --- perl-5.32.1/pod/perlhack.pod 2021-01-09 12:17:46.000000000 +0000 +++ perl-5.34.0/pod/perlhack.pod 2021-02-21 11:01:31.000000000 +0000 @@ -78,6 +78,13 @@ % git remote add fork git@github.com:MyUser/perl5.git +For more information, see L<"Connecting to GitHub with SSH"|https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh>. + +If you'd rather use an HTTPS URL for your C see L<"Cloning with +HTTPS URLs"|https://docs.github.com/en/free-pro-team@latest/github/using-git/which-remote-url-should-i-use#cloning-with-https-urls>. + + % git remote add fork https://github.com/MyUser/perl5.git + Then, push your new branch to your fork. % git push -u fork mychange @@ -903,9 +910,10 @@ =head2 Parallel tests The core distribution can now run its regression tests in parallel on -Unix-like platforms. Instead of running C, set C -in your environment to the number of tests to run in parallel, and run -C. On a Bourne-like shell, this can be done as +Unix-like and Windows platforms. On Unix, instead of running C, set C in your environment to the number of tests to +run in parallel, and run C. On a Bourne-like shell, +this can be done as TEST_JOBS=3 make test_harness # Run 3 tests in parallel @@ -914,9 +922,23 @@ non-conflicting test scripts itself, and there is no standard interface to C utilities to interact with their job schedulers. -Note that currently some test scripts may fail when run in parallel -(most notably F). If necessary, run just the -failing scripts again sequentially and see if the failures go away. +Tests are normally run in a logical order, with the sanity tests first, +then the main tests of the Perl core functionality, then the tests for +the non-core modules. On many-core systems, this may not use the +hardware as effectively as possible. By also specifying + + TEST_JOBS=19 PERL_TEST_HARNESS_ASAP=1 make -j19 test_harness + +you signal that you want the tests to finish in wall-clock time as short +as possible. After the sanity tests are completed, this causes the +remaining ones to be packed into the available cores as tightly as +we know how. This has its greatest effect on slower, many-core systems. +Throughput was sped up by 20% on an outmoded 24-core system; less on +more recent faster ones with fewer cores. + +Note that the command line above added a C<-j> parameter to make, so as +to cause parallel compilation. This may or may not work on your +platform. =head2 Running tests by hand @@ -1080,7 +1102,7 @@ mg.o reentr.o mro.o hv.o av.o run.o pp_hot.o sv.o \ pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o \ utf8.o taint.o deb.o universal.o globals.o perlio.o \ - perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o \ + numeric.o mathoms.o locale.o pp_pack.o pp_sort.o \ miniperlmain.o opmini.o perlmini.o pp.o: In function `Perl_pp_pow': pp.c:(.text+0x2db9): undefined reference to `pow' @@ -1144,7 +1166,7 @@ Gisle Aas's "illustrated perlguts", also known as I, has very helpful pictures: -L +L =item * L and L diff -Nru perl-5.32.1/pod/perlhacktips.pod perl-5.34.0/pod/perlhacktips.pod --- perl-5.32.1/pod/perlhacktips.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlhacktips.pod 2020-10-04 22:17:13.000000000 +0000 @@ -43,7 +43,7 @@ The first one explicitly passes in the context, which is needed for e.g. threaded builds. The second one does that implicitly; do not get them mixed. If you are not passing in a aTHX_, you will need to do a -dTHX (or a dVAR) as the first thing in the function. +dTHX as the first thing in the function. See L for further discussion about context. @@ -80,12 +80,6 @@ static const char * const yippee[] = {"hi", "ho", "silver"}; -There is a way to completely hide any modifiable globals (they are all -moved to heap), the compilation setting -C<-DPERL_GLOBAL_STRUCT_PRIVATE>. It is not normally used, but can be -used for testing, read more about it in L. - =item * Not exporting your new function @@ -677,7 +671,7 @@ C is in C<"list"> and works even if C is C. These functions need an additional parameter to give the string length. In the case of literal string parameters, perl has defined macros that -calculate the length for you. See L. +calculate the length for you. See L. =item * diff -Nru perl-5.32.1/pod/perlhist.pod perl-5.34.0/pod/perlhist.pod --- perl-5.32.1/pod/perlhist.pod 2021-01-23 13:13:09.000000000 +0000 +++ perl-5.34.0/pod/perlhist.pod 2021-05-20 17:30:42.000000000 +0000 @@ -705,6 +705,13 @@ Tom H 5.33.4 2020-Nov-20 Max M 5.33.5 2020-Dec-20 Richard L 5.33.6 2021-Jan-20 + Renee 5.33.7 2021-Feb-20 + Nicolas R 5.33.8 2021-Mar-20 + Todd R 5.33.9 2021-Apr-20 + + Sawyer X 5.34.0-RC1 2021-May-04 The 5.34 maintenance track + Sawyer X 5.34.0-RC2 2021-May-15 + Sawyer X 5.34.0 2021-May-20 =head2 SELECTED RELEASE SIZES @@ -792,6 +799,7 @@ 5.28.0 13056 128 27267 1230 41745 3130 10952 2715 8185 218 5.30.0 13535 128 26294 1237 39643 3080 11083 2711 8252 222 5.32.0 14147 127 25562 1255 40869 3098 11334 2734 8407 225 + 5.34.0 14620 126 28150 1262 42711 3138 11535 2774 8791 228 The "core"..."doc" mean the following files from the Perl source code distribution. The glob notation ** means recursively, (.) means @@ -1138,23 +1146,23 @@ win32 1313 65 1326 65 1331 65 x2p - - - - - - - 5.32.0 + 5.32.0 5.34.0 - Configure: 588 1 - Cross : 126 15 - djgpp : 21 7 - h2pl : 24 15 - hints : 363 86 - NetWare : 484 61 - os2 : 552 70 - plan9 : 308 17 - Porting : 1482 75 - qnx : 5 4 - symbian : 307 54 - utils : 583 52 - vms : 527 12 - vos : 12 7 - win32 : 1011 47 + Configure 588 1 592 1 + Cross 126 15 126 15 + djgpp 21 7 22 7 + h2pl 24 15 24 15 + hints 363 86 364 86 + NetWare 484 61 533 61 + os2 552 70 580 70 + plan9 308 17 325 20 + Porting 1482 75 1514 75 + qnx 5 4 5 4 + symbian 307 54 - - + utils 583 52 597 52 + vms 527 12 549 12 + vos 12 7 12 7 + win32 1011 47 1001 46 =head2 SELECTED PATCH SIZES diff -Nru perl-5.32.1/pod/perlinterp.pod perl-5.34.0/pod/perlinterp.pod --- perl-5.32.1/pod/perlinterp.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlinterp.pod 2020-11-18 22:09:15.000000000 +0000 @@ -145,6 +145,9 @@ C makes sure that things like signals interrupt execution if required. +=for apidoc_section Embedding and Interpreter Cloning +=for apidoc Amh|void|PERL_ASYNC_CHECK + The actual functions called are known as PP code, and they're spread between four files: F contains the "hot" code, which is most often used and highly optimized, F contains all the @@ -171,13 +174,17 @@ restore them; i.e. a C continues at the point in code where a previous C was done, with anything further up on the C stack being lost. This is why code should always save values using -C rather than in auto variables. +C> rather than in auto variables. The perl core wraps C etc in the macros C and C. The basic rule of perl exceptions is that C, and C (in the absence of C) perform a C, while C within C does a C. +=for apidoc_section Exception Handling (simple) Macros +=for apidoc Amh|void|JMPENV_PUSH|int v +=for apidoc Amh|void|JMPENV_JUMP|int v + At entry points to perl, such as C, C and C each does a C, then enter a runops loop or whatever, and handle possible exception returns. For a 2 @@ -193,6 +200,8 @@ re-entry to the runops loop. The is the normal way that C or C is handled within an C. +=for apidoc Amnh|OP *|PL_restartop + Sometimes ops are executed within an inner runops loop, such as tie, sort or overload code. In this case, something like @@ -741,6 +750,9 @@ value to be pushed, and that's exactly what we have here - the tied object, retrieved with C, and the value, the SV C. +=for apidoc_section Magic +=for apidoc Amh||SvTIED_obj|SV *sv|MAGIC *mg + 5 PUTBACK; Next we tell Perl to update the global stack pointer from our internal diff -Nru perl-5.32.1/pod/perlintro.pod perl-5.34.0/pod/perlintro.pod --- perl-5.32.1/pod/perlintro.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlintro.pod 2020-10-24 18:43:34.000000000 +0000 @@ -1,6 +1,6 @@ =head1 NAME -perlintro -- a brief introduction and overview of Perl +perlintro - a brief introduction and overview of Perl =head1 DESCRIPTION diff -Nru perl-5.32.1/pod/perliol.pod perl-5.34.0/pod/perliol.pod --- perl-5.32.1/pod/perliol.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perliol.pod 2020-11-18 22:09:15.000000000 +0000 @@ -374,6 +374,22 @@ (Perl's C does not expect the streams fast C behaviour to change during one "get".) +=for apidoc Amnh||PERLIO_F_APPEND +=for apidoc_item || PERLIO_F_CANREAD +=for apidoc_item ||PERLIO_F_CANWRITE +=for apidoc_item ||PERLIO_F_CRLF +=for apidoc_item ||PERLIO_F_EOF +=for apidoc_item ||PERLIO_F_ERROR +=for apidoc_item ||PERLIO_F_FASTGETS +=for apidoc_item ||PERLIO_F_LINEBUF +=for apidoc_item ||PERLIO_F_OPEN +=for apidoc_item ||PERLIO_F_RDBUF +=for apidoc_item ||PERLIO_F_TEMP +=for apidoc_item ||PERLIO_F_TRUNCATE +=for apidoc_item ||PERLIO_F_UNBUF +=for apidoc_item ||PERLIO_F_UTF8 +=for apidoc_item ||PERLIO_F_WRBUF + =back =head2 Methods in Detail @@ -445,6 +461,12 @@ extra arguments should come not before the C argument. When this flag is used it's up to the layer to validate the args. +=for apidoc Amnh|| PERLIO_K_BUFFERED +=for apidoc_item || PERLIO_K_CANCRLF +=for apidoc_item || PERLIO_K_FASTGETS +=for apidoc_item || PERLIO_K_MULTIARG +=for apidoc_item || PERLIO_K_RAW + =back =item Pushed @@ -513,6 +535,8 @@ descriptor it should if possible open it with the close-on-exec flag initially set. +=for apidoc Amnh||PL_maxsysfd + The I string is an "C-like" string which would match the regular expression C. diff -Nru perl-5.32.1/pod/perllocale.pod perl-5.34.0/pod/perllocale.pod --- perl-5.32.1/pod/perllocale.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perllocale.pod 2021-01-20 23:04:44.000000000 +0000 @@ -377,7 +377,7 @@ use locale ':!ctype'; use locale ':not_ctype'; -both of which mean to enable locale awarness of all categories but +both of which mean to enable locale awareness of all categories but C. Only one category argument may be specified in a S> if it is of the negated form. @@ -543,7 +543,7 @@ The initial program is started up using the locale specified from the environment, as currently, described in L. All newly -created threads start with C set to C<"C">>. Each thread may +created threads start with C set to C<"C">. Each thread may use C to query or switch its locale at any time, without affecting any other thread. All locale-dependent operations automatically use their thread's locale. diff -Nru perl-5.32.1/pod/perllol.pod perl-5.34.0/pod/perllol.pod --- perl-5.32.1/pod/perllol.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perllol.pod 2020-10-04 22:17:13.000000000 +0000 @@ -168,7 +168,7 @@ to do something a bit funnier looking: # add new columns to an existing row - push @{ $AoA[0] }, "wilma", "betty"; # explicit deref + push $AoA[0]->@*, "wilma", "betty"; # explicit deref =head2 Access and Printing @@ -252,7 +252,7 @@ [ "george", "jane", "elroy" ], [ "homer", "marge", "bart" ], ); - push @{ $AoA[0] }, "wilma", "betty"; + push $AoA[0]->@*, "wilma", "betty"; show @AoA; will print out: @@ -296,15 +296,9 @@ That same loop could be replaced with a slice operation: - @part = @{$AoA[4]}[7..12]; + @part = $AoA[4]->@[ 7..12 ]; -or spaced out a bit: - - @part = @{ $AoA[4] } [ 7..12 ]; - -But as you might well imagine, this can get pretty rough on the reader. - -Ah, but what if you wanted a I, such as having +Now, what if you wanted a I, such as having $x run from 4..8 and $y run from 7 to 12? Hmm... here's the simple way: @newAoA = (); @@ -317,13 +311,13 @@ We can reduce some of the looping through slices for ($x = 4; $x <= 8; $x++) { - push @newAoA, [ @{ $AoA[$x] } [ 7..12 ] ]; + push @newAoA, [ $AoA[$x]->@[ 7..12 ] ]; } If you were into Schwartzian Transforms, you would probably have selected map for that - @newAoA = map { [ @{ $AoA[$_] } [ 7..12 ] ] } 4 .. 8; + @newAoA = map { [ $AoA[$_]->@[ 7..12 ] ] } 4 .. 8; Although if your manager accused you of seeking job security (or rapid insecurity) through inscrutable code, it would be hard to argue. :-) @@ -336,7 +330,7 @@ $y_lo, $y_hi) = @_; return map { - [ @{ $lrr->[$_] } [ $y_lo .. $y_hi ] ] + [ $lrr->[$_]->@[ $y_lo .. $y_hi ] ] } $x_lo .. $x_hi; } diff -Nru perl-5.32.1/pod/perlmodinstall.pod perl-5.34.0/pod/perlmodinstall.pod --- perl-5.32.1/pod/perlmodinstall.pod 2020-12-18 09:58:52.000000000 +0000 +++ perl-5.34.0/pod/perlmodinstall.pod 2021-02-21 11:01:31.000000000 +0000 @@ -139,10 +139,7 @@ C. BUILD -You'll need the C utility, available at -L -or dmake, available on CPAN. -L +You'll need either C or C. Does the module require compilation (i.e. does it have files that end in .xs, .c, .h, .y, .cc, .cxx, or .C)? If it does, life is now diff -Nru perl-5.32.1/pod/perlmodstyle.pod perl-5.34.0/pod/perlmodstyle.pod --- perl-5.32.1/pod/perlmodstyle.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlmodstyle.pod 2020-10-24 18:43:34.000000000 +0000 @@ -119,7 +119,7 @@ =item * -Document each publically accessible method or subroutine, including params and return values +Document each publicly accessible method or subroutine, including params and return values =item * @@ -497,7 +497,7 @@ =item * -Use of each publically accessible method or subroutine, including +Use of each publicly accessible method or subroutine, including parameters and return values =item * diff -Nru perl-5.32.1/pod/perlmroapi.pod perl-5.34.0/pod/perlmroapi.pod --- perl-5.32.1/pod/perlmroapi.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlmroapi.pod 2020-11-18 22:09:15.000000000 +0000 @@ -79,7 +79,8 @@ meta = HvMROMETA(stash); private_sv = MRO_GET_PRIVATE_DATA(meta, &my_mro_alg); -=for apidoc mro_get_private_data +=for apidoc Amh|struct mro_meta *|HvMROMETA|HV *hv +=for apidoc Amh|SV*|MRO_GET_PRIVATE_DATA|struct mro_meta *const smeta|const struct mro_alg *const which To set your private value, call C: diff -Nru perl-5.32.1/pod/perlobj.pod perl-5.34.0/pod/perlobj.pod --- perl-5.32.1/pod/perlobj.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlobj.pod 2020-10-04 22:17:13.000000000 +0000 @@ -1013,7 +1013,7 @@ sub epoch { my $self = shift; - return ${ $self }; + return $$self; } my $time = Time->new(); diff -Nru perl-5.32.1/pod/perlop.pod perl-5.34.0/pod/perlop.pod --- perl-5.32.1/pod/perlop.pod 2020-12-26 15:29:34.000000000 +0000 +++ perl-5.34.0/pod/perlop.pod 2021-05-04 16:36:26.000000000 +0000 @@ -128,17 +128,17 @@ left -> nonassoc ++ -- right ** - right ! ~ \ and unary + and - + right ! ~ ~. \ and unary + and - left =~ !~ left * / % x left + - . left << >> nonassoc named unary operators + nonassoc isa chained < > <= >= lt gt le ge chain/na == != eq ne <=> cmp ~~ - nonassoc isa - left & - left | ^ + left & &. + left | |. ^ ^. left && left || // nonassoc .. ... @@ -1594,6 +1594,8 @@ The following escape sequences are available in constructs that interpolate, and in transliterations whose delimiters aren't single quotes (C<"'">). +In all the ones with braces, any number of blanks and/or tabs adjoining +and within the braces are allowed (and ignored). X<\t> X<\n> X<\r> X<\f> X<\b> X<\a> X<\e> X<\x> X<\0> X<\c> X<\N> X<\N{}> X<\o{}> @@ -1606,6 +1608,8 @@ \a alarm (bell) (BEL) \e escape (ESC) \x{263A} [1,8] hex char (example shown: SMILEY) + \x{ 263A } Same, but shows optional blanks inside and + adjoining the braces \x1b [2,8] restricted range hex char (example: ESC) \N{name} [3] named Unicode character or character sequence \N{U+263D} [4,8] Unicode character (example: FIRST QUARTER MOON) @@ -1613,6 +1617,11 @@ \o{23072} [6,8] octal char (example: SMILEY) \033 [7,8] restricted range octal char (example: ESC) +Note that any escape sequence using braces inside interpolated +constructs may have optional blanks (tab or space characters) adjoining +with and inside of the braces, as illustrated above by the second +S> example. + =over 4 =item [1] @@ -1620,10 +1629,13 @@ The result is the character specified by the hexadecimal number between the braces. See L below for details on which character. -Only hexadecimal digits are valid between the braces. If an invalid -character is encountered, a warning will be issued and the invalid -character and all subsequent characters (valid or invalid) within the -braces will be discarded. +Blanks (tab or space characters) may separate the number from either or +both of the braces. + +Otherwise, only hexadecimal digits are valid between the braces. If an +invalid character is encountered, a warning will be issued and the +invalid character and all subsequent characters (valid or invalid) +within the braces will be discarded. If there are no valid digits between the braces, the generated character is the NULL character (C<\x{00}>). However, an explicit empty brace (C<\x{}>) @@ -1709,10 +1721,13 @@ The result is the character specified by the octal number between the braces. See L below for details on which character. -If a character that isn't an octal digit is encountered, a warning is raised, -and the value is based on the octal digits before it, discarding it and all -following characters up to the closing brace. It is a fatal error if there are -no octal digits at all. +Blanks (tab or space characters) may separate the number from either or +both of the braces. + +Otherwise, if a character that isn't an octal digit is encountered, a +warning is raised, and the value is based on the octal digits before it, +discarding it and all following characters up to the closing brace. It +is a fatal error if there are no octal digits at all. =item [7] @@ -2584,7 +2599,8 @@ scalar variable, an array element, a hash element, or an assignment to one of those; in other words, an lvalue. -If the characters delimiting I and I +The characters delimitting I and I +can be any printable character, not just forward slashes. If they are single quotes (C'I'>), the only interpolation is removal of C<\> from pairs of C<\\>. @@ -2670,8 +2686,8 @@ row, that were transliterated to the same character are squashed down to a single instance of that character. - my $a = "aaaba" - $a =~ tr/a/a/s # $a now is "aba" + my $a = "aaabbbca"; + $a =~ tr/ab/dd/s; # $a now is "dcd" If the C modifier is used, the I is always interpreted exactly as specified. Otherwise, if the I is shorter @@ -3375,7 +3391,8 @@ C<< > >> may also be spelled C)>. See L. -The null filehandle C<< <> >> is special: it can be used to emulate the +The null filehandle C<< <> >> (sometimes called the diamond operator) is +special: it can be used to emulate the behavior of B and B, and any other Unix filter program that takes a list of filenames, doing the same to each line of input from all of them. Input from C<< <> >> comes either from @@ -3416,7 +3433,8 @@ and call it with S>, it actually opens a pipe, executes the C command and reads C's output from that pipe. If you want all items in C<@ARGV> to be interpreted as file names, you -can use the module C from CPAN, or use the double bracket: +can use the module C from CPAN, or use the double +diamond bracket: while (<<>>) { print; diff -Nru perl-5.32.1/pod/perlpacktut.pod perl-5.34.0/pod/perlpacktut.pod --- perl-5.32.1/pod/perlpacktut.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlpacktut.pod 2020-10-24 18:43:34.000000000 +0000 @@ -407,7 +407,7 @@ unpack such a (unsigned) short we'll have to use code C. A repeat count unpacks all 12 shorts: - my( $ip, $cs, $flags, $ax, $bx, $cd, $dx, $si, $di, $bp, $ds, $es ) = + my( $ip, $cs, $flags, $ax, $bx, $cx, $dx, $si, $di, $bp, $ds, $es ) = unpack( 'v12', $frame ); Alternatively, we could have used C to unpack the individually @@ -1033,7 +1033,7 @@ Neither using offsets nor adding C's to bridge the gaps is satisfactory. (Just imagine what happens if the structure changes.) What we really need is a way of saying "skip as many bytes as required to the next multiple of N". -In fluent Templatese, you say this with C where N is replaced by the +In fluent templates, you say this with C where N is replaced by the appropriate value. Here's the next version of our struct packaging: my $gappy = pack( 'c x!2 s c x!4 l!', $c1, $s, $c2, $l ); diff -Nru perl-5.32.1/pod/perlperf.pod perl-5.34.0/pod/perlperf.pod --- perl-5.32.1/pod/perlperf.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlperf.pod 2020-10-04 22:17:13.000000000 +0000 @@ -318,7 +318,7 @@ my %rep; foreach my $line ( keys %report ) { - foreach my $key ( keys %{ $report{$line} } ) { + foreach my $key ( keys $report{$line}->%* ) { $rep{$key} += $report{$line}{$key}; } } diff -Nru perl-5.32.1/pod/perl.pod perl-5.34.0/pod/perl.pod --- perl-5.32.1/pod/perl.pod 2021-01-09 12:17:23.000000000 +0000 +++ perl-5.34.0/pod/perl.pod 2021-05-04 23:28:28.000000000 +0000 @@ -96,6 +96,7 @@ perlpacktut Perl pack() and unpack() tutorial perlpod Perl plain old documentation perlpodspec Perl plain old documentation format specification + perldocstyle Perl style guide for core docs perlpodstyle Perl POD style guide perldiag Perl diagnostic messages perldeprecation Perl deprecations @@ -174,15 +175,11 @@ perlgov Perl Rules of Governance perlgit Using git with the Perl repository -=head2 Miscellaneous - - perlbook Perl book information - perlcommunity Perl community information - - perldoc Look up Perl documentation in Pod format +=head2 History perlhist Perl history records perldelta Perl changes since previous version + perl5321delta Perl changes in version 5.32.1 perl5320delta Perl changes in version 5.32.0 perl5303delta Perl changes in version 5.30.3 perl5302delta Perl changes in version 5.30.2 @@ -246,6 +243,13 @@ perl5005delta Perl changes in version 5.005 perl5004delta Perl changes in version 5.004 +=head2 Miscellaneous + + perlbook Perl book information + perlcommunity Perl community information + + perldoc Look up Perl documentation in Pod format + perlexperiment A listing of experimental features in Perl perlartistic Perl Artistic License @@ -255,7 +259,7 @@ =for buildtoc flag +r - perlcn Perl for Simplified Chinese (in EUC-CN) + perlcn Perl for Simplified Chinese (in UTF-8) perljp Perl for Japanese (in EUC-JP) perlko Perl for Korean (in EUC-KR) perltw Perl for Traditional Chinese (in Big5) @@ -285,7 +289,6 @@ perlqnx Perl notes for QNX perlriscos Perl notes for RISC OS perlsolaris Perl notes for Solaris - perlsymbian Perl notes for Symbian perlsynology Perl notes for Synology perltru64 Perl notes for Tru64 perlvms Perl notes for VMS diff -Nru perl-5.32.1/pod/perlpolicy.pod perl-5.34.0/pod/perlpolicy.pod --- perl-5.32.1/pod/perlpolicy.pod 2021-01-09 12:17:45.000000000 +0000 +++ perl-5.34.0/pod/perlpolicy.pod 2021-05-04 06:52:48.000000000 +0000 @@ -606,8 +606,7 @@ Removals, like warnings, are public. The list of moderators will be public knowledge. At present, it is: -Karen Etheridge, Ricardo Signes, Sawyer X, -Steffen Müller, Todd Rinaldo, Aaron Crane. +Karen Etheridge, Neil Bowers, Nicholas Clark, Ricardo Signes, Todd Rinaldo. =head1 CREDITS diff -Nru perl-5.32.1/pod/perlport.pod perl-5.34.0/pod/perlport.pod --- perl-5.32.1/pod/perlport.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlport.pod 2021-05-04 06:52:48.000000000 +0000 @@ -1526,6 +1526,9 @@ (Win32, VMS, S) C<-g>, C<-k>, C<-l>, C<-u>, C<-A> are not particularly meaningful. +(Win32) +C<-l> returns true for both symlinks and directory junctions. + (VMS, S) C<-p> is not particularly meaningful. @@ -1571,6 +1574,12 @@ The value returned by L|perlfunc/tell FILEHANDLE> may be affected after the call, and the filehandle may be flushed. +=item chdir + +(Win32) +The current directory reported by the system may include any symbolic +links specified to chdir(). + =item chmod (Win32) @@ -1655,9 +1664,6 @@ (SunOS, Solaris, HP-UX) Does not automatically flush output handles on some platforms. -(Symbian OS) -Not supported. - =item exit (VMS) @@ -1949,7 +1955,7 @@ Not implemented. (Win32) -Return values (especially for device and inode) may be bogus. +Treats directory junctions as symlinks. =item msgctl @@ -1979,9 +1985,13 @@ =item readlink -(Win32, VMS, S) +(VMS, S) Not implemented. +(Win32) +readlink() on a directory junction returns the object name, not a +simple path. + =item rename (Win32) @@ -2077,9 +2087,6 @@ (Win32) C is creation time instead of inode change time. -(Win32) -C and C are not meaningful. - (VMS) C and C are not necessarily reliable. @@ -2095,17 +2102,22 @@ Some versions of cygwin when doing a C and not finding it may then attempt to C. -(Win32) -C needs to open the file to determine the link count -and update attributes that may have been changed through hard links. -Setting L|perlvar/${^WIN32_SLOPPY_STAT}> to a -true value speeds up C by not performing this operation. - =item symlink -(Win32, S) +(S) Not implemented. +(Win32) +Requires either elevated permissions or developer mode and a +sufficiently recent version of Windows 10. You can check whether the current +process has the required privileges using the +L +function. + +Since Windows needs to know whether the target is a directory or not when +creating the link the target Perl will only create the link as a directory +link when the target exists and is a directory. + (VMS) Implemented on 64 bit VMS 8.3. VMS requires the symbolic link to be in Unix syntax if it is intended to resolve to a valid path. @@ -2301,8 +2313,6 @@ =back -=item Symbian - =item NetBSD =item FreeBSD @@ -2333,8 +2343,6 @@ =back -=item Symbian (Series 60 v3, 3.2 and 5 - what else?) - =item Stratus VOS / OpenVOS =item AIX diff -Nru perl-5.32.1/pod/perlreapi.pod perl-5.34.0/pod/perlreapi.pod --- perl-5.32.1/pod/perlreapi.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlreapi.pod 2020-10-04 22:17:13.000000000 +0000 @@ -665,7 +665,7 @@ =head2 C -TODO, see L +TODO, see commit 28d8d7f41a. =head2 C @@ -821,7 +821,7 @@ The number of times the structure is referenced. When this falls to 0, the regexp is automatically freed -by a call to pregfree. This should be set to 1 in +by a call to C. This should be set to 1 in each engine's L routine. =head1 HISTORY diff -Nru perl-5.32.1/pod/perlrebackslash.pod perl-5.34.0/pod/perlrebackslash.pod --- perl-5.32.1/pod/perlrebackslash.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlrebackslash.pod 2021-01-20 23:04:44.000000000 +0000 @@ -186,6 +186,10 @@ rarely see it written without the two leading zeros. C<\N{U+0041}> means "A" even on EBCDIC machines (where the ordinal value of "A" is not 0x41). +Blanks may freely be inserted adjacent to but within the braces +enclosing the name or code point. So S> is perfectly +legal. + It is even possible to give your own names to characters and character sequences by using the L module. These custom names are lexically scoped, and so a given code point may have different names @@ -218,7 +222,7 @@ =head3 Octal escapes There are two forms of octal escapes. Each is used to specify a character by -its code point specified in octal notation. +its code point specified in base 8. One form, available starting in Perl 5.14 looks like C<\o{...}>, where the dots represent one or more octal digits. It can be used for any Unicode character. @@ -260,6 +264,9 @@ $str =~ /P\053/; # No match, "\053" is "+" and taken literally. /\o{23073}/ # Black foreground, white background smiling face. /\o{4801234567}/ # Raises a warning, and yields chr(4). + /\o{ 400}/ # LATIN CAPITAL LETTER A WITH MACRON + /\o{ 400 }/ # Same. These show blanks are allowed adjacent to + # the braces =head4 Disambiguation rules between old-style octal escapes and backreferences @@ -326,6 +333,8 @@ # the Unicode character 2602 is an umbrella. /\x{263B}/ # Black smiling face. /\x{263b}/ # Same, the hex digits A - F are case insensitive. + /\x{ 263b }/ # Same, showing optional blanks adjacent to the + # braces =head2 Modifiers @@ -440,7 +449,9 @@ /(\w+) \g1/; # Finds a duplicated word, (e.g. "cat cat"). /(\w+) \1/; # Same thing; written old-style. - /(.)(.)\g2\g1/; # Match a four letter palindrome (e.g. "ABBA"). + /(\w+) \g{1}/; # Same, using the safer braced notation + /(\w+) \g{ 1 }/;# Same, showing optional blanks adjacent to the braces + /(.)(.)\g2\g1/; # Match a four letter palindrome (e.g. "ABBA"). =head3 Relative referencing @@ -460,6 +471,7 @@ (B) # Group 3 \g{-1} # Refers to group 3 (B) \g{-3} # Refers to group 1 (A) + \g{ -3 } # Same, showing optional blanks adjacent to the braces ) /x; # Matches "ABBA". @@ -480,11 +492,16 @@ =head4 Examples - /(?\w+) \g{word}/ # Finds duplicated word, (e.g. "cat cat") - /(?\w+) \k{word}/ # Same. - /(?\w+) \k/ # Same. + /(?\w+) \g{word}/ # Finds duplicated word, (e.g. "cat cat") + /(?\w+) \k{word}/ # Same. + /(?\w+) \g{ word }/ # Same, showing optional blanks adjacent to + # the braces + /(?\w+) \k{ word }/ # Same. + /(?\w+) \k/ # Same. There are no braces, so no blanks + # are permitted /(?.)(?.)\g{letter2}\g{letter1}/ - # Match a four letter palindrome (e.g. "ABBA") + # Match a four letter palindrome (e.g. + # "ABBA") =head2 Assertions @@ -540,7 +557,8 @@ types are given a few paragraphs below. C<\B{...}> matches at any place between characters where C<\b{...}> of the same type doesn't match. -C<\b> when not immediately followed by a C<"{"> matches at any place +C<\b> when not immediately followed by a C<"{"> is available in all +Perls. It matches at any place between a word (something matched by C<\w>) and a non-word character (C<\W>); C<\B> when not immediately followed by a C<"{"> matches at any place between characters where C<\b> doesn't match. To get better @@ -576,7 +594,7 @@ This matches a Unicode "Grapheme Cluster Boundary". (Actually Perl always uses the improved "extended" grapheme cluster"). These are -explained below under L>. In fact, C<\X> is another way to get +explained below under C>. In fact, C<\X> is another way to get the same functionality. It is equivalent to C. Use whichever is most convenient for your situation. diff -Nru perl-5.32.1/pod/perlrecharclass.pod perl-5.34.0/pod/perlrecharclass.pod --- perl-5.32.1/pod/perlrecharclass.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlrecharclass.pod 2020-10-04 22:17:13.000000000 +0000 @@ -529,7 +529,9 @@ $, = "\t| "; $a =~ m'[$,]'; # single-quotish: matches '$' or ',' $a =~ q{[$,]}' # same - $a =~ m/[$,]/; # double-quotish: matches "\t", "|", or " " + $a =~ m/[$,]/; # double-quotish: Because we made an + # assignment to $, above, this now + # matches "\t", "|", or " " Characters that may carry a special meaning inside a character class are: C<\>, C<^>, C<->, C<[> and C<]>, and are discussed below. They can be diff -Nru perl-5.32.1/pod/perlref.pod perl-5.34.0/pod/perlref.pod --- perl-5.32.1/pod/perlref.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlref.pod 2020-10-04 22:17:13.000000000 +0000 @@ -712,26 +712,6 @@ This has the interesting effect of creating a function local to another function, something not normally supported in Perl. -=head1 WARNING: Don't use references as hash keys -X X - -You may not (usefully) use a reference as the key to a hash. It will be -converted into a string: - - $x{ \$a } = $a; - -If you try to dereference the key, it won't do a hard dereference, and -you won't accomplish what you're attempting. You might want to do something -more like - - $r = \@a; - $x{ $r } = $r; - -And then at least you can use the values(), which will be -real refs, instead of the keys(), which won't. - -The standard Tie::RefHash module provides a convenient workaround to this. - =head2 Postfix Dereference Syntax Beginning in v5.20.0, a postfix syntax for using references is @@ -903,7 +883,7 @@ subroutine where the variables are declared. This bizarre behavior is subject to change. -=head1 Declaring a Reference to a Variable +=head2 Declaring a Reference to a Variable Beginning in v5.26.0, the referencing operator can come after C, C, C, or C. This syntax must be enabled with C X + +You may not (usefully) use a reference as the key to a hash. It will be +converted into a string: + + $x{ \$a } = $a; + +If you try to dereference the key, it won't do a hard dereference, and +you won't accomplish what you're attempting. You might want to do something +more like + + $r = \@a; + $x{ $r } = $r; + +And then at least you can use the values(), which will be +real refs, instead of the keys(), which won't. + +The standard Tie::RefHash module provides a convenient workaround to this. + =head1 SEE ALSO Besides the obvious documents, source code can be instructive. diff -Nru perl-5.32.1/pod/perlreguts.pod perl-5.34.0/pod/perlreguts.pod --- perl-5.32.1/pod/perlreguts.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlreguts.pod 2020-11-18 22:09:15.000000000 +0000 @@ -696,6 +696,9 @@ code can actually be running in totally different contexts due to the simulated recursion. +=for apidoc pregcomp +=for apidoc pregexec + =head3 Start position and no-match optimisations C is responsible for handling start points and no-match diff -Nru perl-5.32.1/pod/perlre.pod perl-5.34.0/pod/perlre.pod --- perl-5.32.1/pod/perlre.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlre.pod 2021-02-21 11:01:31.000000000 +0000 @@ -296,7 +296,7 @@ newline within the string (except if the newline is the last character in the string), and C<"$"> will match before any newline. At the cost of a little more overhead, you can do this by using the -Lm>> modifier on the pattern match operator. (Older programs +Cm>> modifier on the pattern match operator. (Older programs did this by setting C<$*>, but this option was removed in perl 5.10.) X<^> X<$> X @@ -313,7 +313,8 @@ modifiers. Modifiers that relate to the interpretation of the pattern are listed just below. Modifiers that alter the way a pattern is used by Perl are detailed in L and -L. +L. Modifiers can be added +dynamically; see L below. =over 4 @@ -504,14 +505,13 @@ Note that anything inside a C<\Q...\E> stays unaffected by C. And note that C doesn't affect space interpretation within a single multi-character construct. For -example in C<\x{...}>, regardless of the C modifier, there can be no -spaces. Same for a L such as C<{3}> or -C<{5,}>. Similarly, C<(?:...)> can't have a space between the C<"(">, -C<"?">, and C<":">. Within any delimiters for such a -construct, allowed spaces are not affected by C, and depend on the -construct. For example, C<\x{...}> can't have spaces because hexadecimal -numbers don't have spaces in them. But, Unicode properties can have spaces, so -in C<\p{...}> there can be spaces that follow the Unicode rules, for which see +example C<(?:...)> can't have a space between the C<"(">, +C<"?">, and C<":">. Within any delimiters for such a construct, allowed +spaces are not affected by C, and depend on the construct. For +example, all constructs using curly braces as delimiters, such as +C<\x{...}> can have blanks within but adjacent to the braces, but not +elsewhere, and no non-blank space characters. An exception are Unicode +properties which follow Unicode rules, for which see L. X @@ -710,7 +710,7 @@ =item 7 -the pattern uses L> +the pattern uses C> =item 8 @@ -721,8 +721,8 @@ Another mnemonic for this modifier is "Depends", as the rules actually used depend on various things, and as a result you can get unexpected results. See L. The Unicode Bug has -become rather infamous, leading to yet another (without swearing) name -for this modifier, "Dodgy". +become rather infamous, leading to yet other (without swearing) names +for this modifier, "Dicey" and "Dodgy". Unless the pattern or string are encoded in UTF-8, only ASCII characters can match positively. @@ -865,6 +865,7 @@ ? Match 1 or 0 times {n} Match exactly n times {n,} Match at least n times + {,n} Match at most n times {n,m} Match at least n but not more than m times (If a non-escaped curly bracket occurs in a context other than one of @@ -880,7 +881,7 @@ The C<"*"> quantifier is equivalent to C<{0,}>, the C<"+"> quantifier to C<{1,}>, and the C<"?"> quantifier to C<{0,1}>. I and I are limited to non-negative integral values less than a preset limit defined when perl is built. -This is usually 32766 on the most common platforms. The actual limit can +This is usually 65534 on the most common platforms. The actual limit can be seen in the error message generated by code such as this: $_ **= $_ , / {$_} / for 2 .. 42; @@ -891,13 +892,14 @@ minimum number of times possible, follow the quantifier with a C<"?">. Note that the meanings don't change, just the "greediness": X X X -X X<*?> X<+?> X X<{n}?> X<{n,}?> X<{n,m}?> +X X<*?> X<+?> X X<{n}?> X<{n,}?> X<{,n}?> X<{n,m}?> *? Match 0 or more times, not greedily +? Match 1 or more times, not greedily ?? Match 0 or 1 time, not greedily {n}? Match exactly n times, not greedily (redundant) {n,}? Match at least n times, not greedily + {,n}? Match at most n times, not greedily {n,m}? Match at least n but not more than m times, not greedily Normally when a quantified subpattern does not allow the rest of the @@ -910,6 +912,7 @@ ?+ Match 0 or 1 time and give nothing back {n}+ Match exactly n times and give nothing back (redundant) {n,}+ Match at least n times and give nothing back + {,n}+ Match at most n times and give nothing back {n,m}+ Match at least n but not more than m times and give nothing back For instance, @@ -926,7 +929,7 @@ as we know that if the final quote does not match, backtracking will not help. See the independent subexpression -LI) >>> for more details; +CI)>> for more details; possessive quantifiers are just syntactic sugar for that construct. For instance the above example could also be written as follows: @@ -1000,6 +1003,8 @@ curly brackets for safer parsing. \g{name} [5] Named backreference \k [5] Named backreference + \k'name' [5] Named backreference + \k{name} [5] Named backreference \K [6] Keep the stuff left of the \K, don't include it in $& \N [7] Any character but \n. Not affected by /s modifier \v [3] Vertical whitespace @@ -1188,6 +1193,10 @@ contained C<"\g1">, and C<$b> contained C<"37">, you would get C which is probably not what you intended. +If you use braces, you may also optionally add any number of blank +(space or tab) characters within but adjacent to the braces, like +S>, or S }>>. + The C<\g> and C<\k> notations were introduced in Perl 5.10.0. Prior to that there were no named nor relative numbered capture groups. Absolute numbered groups were referred to using C<\1>, @@ -1760,6 +1769,8 @@ =item C<< \k'I' >> +=item C<< \k{I} >> + Named backreference. Similar to numeric backreferences, except that the group is designated by name and not number. If multiple groups have the same name then it refers to the leftmost defined group in @@ -1768,7 +1779,9 @@ It is an error to refer to a name not defined by a C<< (?>) >> earlier in the pattern. -Both forms are equivalent. +All three forms are equivalent, although with C<< \k{ I } >>, +you may optionally have blanks within but adjacent to the braces, as +shown. B In order to make things easier for programmers with experience with the Python or PCRE regex engines, the pattern C<< (?P=I) >> @@ -2334,9 +2347,9 @@ A fundamental feature of regular expression matching involves the notion called I, which is currently used (when needed) -by all regular non-possessive expression quantifiers, namely C<"*">, C<*?>, C<"+">, -C<+?>, C<{n,m}>, and C<{n,m}?>. Backtracking is often optimized -internally, but the general principle outlined here is valid. +by all regular non-possessive expression quantifiers, namely C<"*">, +C<*?>, C<"+">, C<+?>, C<{n,m}>, and C<{n,m}?>. Backtracking is often +optimized internally, but the general principle outlined here is valid. For a regular expression to match, the I regular expression must match, not just part of it. So if the beginning of a pattern containing a @@ -2524,12 +2537,12 @@ A powerful tool for optimizing such beasts is what is known as an "independent group", -which does not backtrack (see Lpattern) >>>). Note also that +which does not backtrack (see Cpattern)>>). Note also that zero-length lookahead/lookbehind assertions will not backtrack to make the tail match, since they are in "logical" context: only whether they match is considered relevant. For an example where side-effects of lookahead I have influenced the -following match, see Lpattern) >>>. +following match, see Cpattern)>>. =head2 Script Runs X<(*script_run:...)> X<(sr:...)> @@ -2575,7 +2588,7 @@ (*atomic_script_run:pattern) (*asr:pattern) -(See LI)>>.) +(See CI)>>.) In Taiwan, Japan, and Korea, it is common for text to have a mixture of characters from their native scripts and base Chinese. Perl follows diff -Nru perl-5.32.1/pod/perlrequick.pod perl-5.34.0/pod/perlrequick.pod --- perl-5.32.1/pod/perlrequick.pod 2020-12-18 09:58:52.000000000 +0000 +++ perl-5.34.0/pod/perlrequick.pod 2021-01-20 23:04:44.000000000 +0000 @@ -363,6 +363,10 @@ =item * +C = match C times or fewer + +=item * + C = match exactly C times =back @@ -374,7 +378,7 @@ /(\w+)\s+\g1/; # match doubled words of arbitrary length $year =~ /^\d{2,4}$/; # make sure year is at least 2 but not more # than 4 digits - $year =~ /^\d{4}$|^\d{2}$/; # better match; throw out 3 digit dates + $year =~ /^\d{ 4 }$|^\d{2}$/; # better match; throw out 3 digit dates These quantifiers will try to match as much of the string as possible, while still allowing the regex to match. So we have diff -Nru perl-5.32.1/pod/perlreref.pod perl-5.34.0/pod/perlreref.pod --- perl-5.32.1/pod/perlreref.pod 2020-12-18 09:58:52.000000000 +0000 +++ perl-5.34.0/pod/perlreref.pod 2021-01-20 23:04:44.000000000 +0000 @@ -217,6 +217,7 @@ {n,m} {n,m}? {n,m}+ Must occur at least n times but no more than m times {n,} {n,}? {n,}+ Must occur at least n times + {,n} {,n}? {,n}+ Must occur at most n times {n} {n}? {n}+ Must occur exactly n times * *? *+ 0 or more times (same as {0,}) + +? ++ 1 or more times (same as {1,}) @@ -226,8 +227,6 @@ matched by a pattern with a possessive quantifier will not be backtracked into, even if that causes the whole match to fail. -There is no quantifier C<{,n}>. That's currently illegal. - =head2 EXTENDED CONSTRUCTS (?#text) A comment diff -Nru perl-5.32.1/pod/perlretut.pod perl-5.34.0/pod/perlretut.pod --- perl-5.32.1/pod/perlretut.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlretut.pod 2021-02-21 11:01:31.000000000 +0000 @@ -20,8 +20,10 @@ What is a regular expression? At its most basic, a regular expression is a template that is used to determine if a string has certain characteristics. The string is most often some text, such as a line, -sentence, web page, or even a whole book, but less commonly it could be -some binary data as well. +sentence, web page, or even a whole book, but it doesn't have to be. It +could be binary data, for example. Biologists often use Perl to look +for patterns in long DNA sequences. + Suppose we want to determine if the text in variable, C<$var> contains the sequence of characters S> (blanks added for legibility). We can write in Perl @@ -29,8 +31,9 @@ $var =~ m/mushroom/ The value of this expression will be TRUE if C<$var> contains that -sequence of characters, and FALSE otherwise. The portion enclosed in -C<'E'> characters denotes the characteristic we are looking for. +sequence of characters anywhere within it, and FALSE otherwise. The +portion enclosed in C<'E'> characters denotes the characteristic we +are looking for. We use the term I for it. The process of looking to see if the pattern occurs in the string is called I, and the C<"=~"> operator along with the C tell Perl to try to match the pattern @@ -135,7 +138,7 @@ to arbitrary delimiters by putting an C<'m'> out front: "Hello World" =~ m!World!; # matches, delimited by '!' - "Hello World" =~ m{World}; # matches, note the matching '{}' + "Hello World" =~ m{World}; # matches, note the paired '{}' "/usr/bin/perl" =~ m"/perl"; # matches after '/usr/bin', # '/' becomes an ordinary char @@ -151,7 +154,7 @@ "Hello World" =~ /oW/; # doesn't match "Hello World" =~ /World /; # doesn't match -The first regexp C doesn't match because regexps are +The first regexp C doesn't match because regexps are by default case-sensitive. The second regexp matches because the substring S> occurs in the string S>. The space character C<' '> is treated like any other character in a regexp and is @@ -169,8 +172,8 @@ "That hat is red" =~ /hat/; # matches 'hat' in 'That' With respect to character matching, there are a few more points you -need to know about. First of all, not all characters can be used "as -is" in a match. Some characters, called I, are +need to know about. First of all, not all characters can be used +"as-is" in a match. Some characters, called I, are generally reserved for use in regexp notation. The metacharacters are {}[]()^$.|*+?-#\ @@ -832,8 +835,8 @@ backreference is error-prone as soon as there is more than one capturing group. A more convenient technique became available with Perl 5.10: relative backreferences. To refer to the immediately -preceding capture group one now may write C<\g{-1}>, the next but -last is available via C<\g{-2}>, and so on. +preceding capture group one now may write C<\g-1> or C<\g{-1}>, the next but +last is available via C<\g-2> or C<\g{-2}>, and so on. Another good reason in addition to readability and maintainability for using relative backreferences is illustrated by the following example, @@ -928,7 +931,8 @@ $x = "Mmm...donut, thought Homer"; $x =~ /^(Mmm|Yech)\.\.\.(donut|peas)/; # matches foreach $exp (1..$#-) { - print "Match $exp: '${$exp}' at position ($-[$exp],$+[$exp])\n"; + no strict 'refs'; + print "Match $exp: '$$exp' at position ($-[$exp],$+[$exp])\n"; } prints @@ -1047,10 +1051,17 @@ =item * +C means: match at most C times, or fewer + +=item * + C means: match exactly C times =back +If you like, you can add blanks (tab or space characters) within the +braces, but adjacent to them, and/or next to the comma (if any). + Here are some examples: /[a-z]+\s+\d*/; # match a lowercase word, at least one space, and @@ -1059,6 +1070,9 @@ /y(es)?/i; # matches 'y', 'Y', or a case-insensitive 'yes' $year =~ /^\d{2,4}$/; # make sure year is at least 2 but not more # than 4 digits + $year =~ /^\d{ 2, 4 }$/; # Same; for those who like wide open + # spaces. + $year =~ /^\d{2, 4}$/; # Same. $year =~ /^\d{4}$|^\d{2}$/; # better match; throw out 3-digit dates $year =~ /^\d{2}(\d{2})?$/; # same thing written differently. # However, this captures the last two @@ -1222,6 +1236,11 @@ =item * +C means: match at most C times, but as few times as +possible + +=item * + C means: match exactly C times. Because we match exactly C times, C is equivalent to C and is just there for notational consistency. @@ -1389,8 +1408,12 @@ =item * C means: match at least C times, but as many times as possible, -and don't give anything up. C is short for C and C is -short for C. +and don't give anything up. C is short for C. + +=item * + +C means: match as many times as possible up to at most C +times, and don't give anything up. C is short for C. =item * @@ -1969,10 +1992,11 @@ go further than 255. (Starting in Perl 5.14, if you're an octal fan, you can also use C<\o{oct}>.) - /\x{263a}/; # match a Unicode smiley face :) + /\x{263a}/; # match a Unicode smiley face :) + /\x{ 263a }/; # Same B: In Perl 5.6.0 it used to be that one needed to say C to use any Unicode features. This is no more the case: for +utf8> to use any Unicode features. This is no longer the case: for almost all Unicode processing, the explicit C pragma is not needed. (The only case where it matters is if your Perl script is in Unicode and encoded in UTF-8, then an explicit C is needed.) @@ -1988,6 +2012,7 @@ $x = "abc\N{MERCURY}def"; $x =~ /\N{MERCURY}/; # matches + $x =~ /\N{ MERCURY }/; # Also matches One can also use "short" names: @@ -2049,16 +2074,16 @@ The Unicode C<\p{Script}> and C<\p{Script_Extensions}> properties are used to categorize every Unicode character into the language script it -is written in. (C is an improved version of -C

and extending no further than S> to its titlecase version, and stores that in UTF-8 in C, and its length in bytes in C. Note that the buffer pointed to by C needs to be at least C @@ -1217,8 +1348,7 @@ function may return the REPLACEMENT CHARACTER, at the discretion of the implementation, and subject to change in future releases. -=for apidoc Am|UV|toTITLE_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp -Same as L. +C is now just a different spelling of plain C =cut @@ -1233,10 +1363,11 @@ /* void below because that's the best fit, and works for Devel::PPPort -=for apidoc AmnU|void|WIDEST_UTYPE +=for apidoc_section $integer +=for apidoc AyT||WIDEST_UTYPE Yields the widest unsigned integer type on the platform, currently either -C or C<64>. This can be used in declarations such as +C or C. This can be used in declarations such as WIDEST_UTYPE my_uv; @@ -1278,18 +1409,33 @@ * needed. (The NV casts stop any warnings about comparison always being true * if called with an unsigned. The cast preserves the sign, which is all we * care about.) */ -#define withinCOUNT(c, l, n) (__ASSERT_((NV) (l) >= 0) \ - __ASSERT_((NV) (n) >= 0) \ - (((WIDEST_UTYPE) (((c)) - ((l) | 0))) <= (((WIDEST_UTYPE) ((n) | 0))))) +#define withinCOUNT(c, l, n) (__ASSERT_((NV) (l) >= 0) \ + __ASSERT_((NV) (n) >= 0) \ + withinCOUNT_KNOWN_VALID_((c), (l), (n))) + +/* For internal use only, this can be used in places where it is known that the + * parameters to withinCOUNT() are valid, to avoid the asserts. For example, + * inRANGE() below, calls this several times, but does all the necessary + * asserts itself, once. The reason that this is necessary is that the + * duplicate asserts were exceeding the internal limits of some compilers */ +#define withinCOUNT_KNOWN_VALID_(c, l, n) \ + (((WIDEST_UTYPE) (((c)) - ((l) | 0))) <= (((WIDEST_UTYPE) ((n) | 0)))) /* Returns true if c is in the range l..u, where 'l' is non-negative * Written this way so that after optimization, only one conditional test is * needed. */ -#define inRANGE(c, l, u) (__ASSERT_((u) >= (l)) \ - ( (sizeof(c) == sizeof(U8)) ? withinCOUNT(((U8) (c)), (l), ((u) - (l))) \ - : (sizeof(c) == sizeof(U32)) ? withinCOUNT(((U32) (c)), (l), ((u) - (l))) \ - : (__ASSERT_(sizeof(c) == sizeof(WIDEST_UTYPE)) \ - withinCOUNT(((WIDEST_UTYPE) (c)), (l), ((u) - (l)))))) +#define inRANGE(c, l, u) (__ASSERT_((NV) (l) >= 0) __ASSERT_((u) >= (l)) \ + ( (sizeof(c) == sizeof(U8)) ? inRANGE_helper_(U8, (c), (l), ((u))) \ + : (sizeof(c) == sizeof(U16)) ? inRANGE_helper_(U16,(c), (l), ((u))) \ + : (sizeof(c) == sizeof(U32)) ? inRANGE_helper_(U32,(c), (l), ((u))) \ + : (__ASSERT_(sizeof(c) == sizeof(WIDEST_UTYPE)) \ + inRANGE_helper_(WIDEST_UTYPE,(c), (l), ((u)))))) + +/* For internal use, this is used by machine-generated code which generates + * known valid calls, with a known sizeof(). This avoids the extra code and + * asserts that were exceeding internal limits of some compilers. */ +#define inRANGE_helper_(cast, c, l, u) \ + withinCOUNT_KNOWN_VALID_(((cast) (c)), (l), ((u) - (l))) #ifdef EBCDIC # ifndef _ALL_SOURCE @@ -1372,7 +1518,7 @@ /* This next group is only used on EBCDIC platforms, so theoretically could be * shared with something entirely different that's only on ASCII platforms */ # define _CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE 31 -/* Unused: 24-30 +/* Unused: 26-30 * If more bits are needed, one could add a second word for non-64bit * QUAD_IS_INT systems, using some #ifdefs to distinguish between having a 2nd * word or not. The IS_IN_SOME_FOLD bit is the most easily expendable, as it @@ -1487,16 +1633,21 @@ # endif /* Participates in a single-character fold with a character above 255 */ -# define _HAS_NONLATIN1_SIMPLE_FOLD_CLOSURE_ONLY_FOR_USE_BY_REGCOMP_DOT_C_AND_REGEXEC_DOT_C(c) ((! cBOOL(FITS_IN_8_BITS(c))) || (PL_charclass[(U8) (c)] & _CC_mask(_CC_NONLATIN1_SIMPLE_FOLD))) +# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) +# define HAS_NONLATIN1_SIMPLE_FOLD_CLOSURE(c) \ + (( ! cBOOL(FITS_IN_8_BITS(c))) \ + || (PL_charclass[(U8) (c)] & _CC_mask(_CC_NONLATIN1_SIMPLE_FOLD))) + +# define IS_NON_FINAL_FOLD(c) _generic_isCC(c, _CC_NON_FINAL_FOLD) +# define IS_IN_SOME_FOLD_L1(c) _generic_isCC(c, _CC_IS_IN_SOME_FOLD) +# endif /* Like the above, but also can be part of a multi-char fold */ -# define _HAS_NONLATIN1_FOLD_CLOSURE_ONLY_FOR_USE_BY_REGCOMP_DOT_C_AND_REGEXEC_DOT_C(c) ((! cBOOL(FITS_IN_8_BITS(c))) || (PL_charclass[(U8) (c)] & _CC_mask(_CC_NONLATIN1_FOLD))) +# define HAS_NONLATIN1_FOLD_CLOSURE(c) \ + ( (! cBOOL(FITS_IN_8_BITS(c))) \ + || (PL_charclass[(U8) (c)] & _CC_mask(_CC_NONLATIN1_FOLD))) # define _isQUOTEMETA(c) _generic_isCC(c, _CC_QUOTEMETA) -# define _IS_NON_FINAL_FOLD_ONLY_FOR_USE_BY_REGCOMP_DOT_C(c) \ - _generic_isCC(c, _CC_NON_FINAL_FOLD) -# define _IS_IN_SOME_FOLD_ONLY_FOR_USE_BY_REGCOMP_DOT_C(c) \ - _generic_isCC(c, _CC_IS_IN_SOME_FOLD) /* is c a control character for which we have a mnemonic? */ # if defined(PERL_CORE) || defined(PERL_EXT) @@ -2278,22 +2429,29 @@ : (LATIN1_TO_NATIVE(((U8) (c)) ^ 64))))) #endif -/* Line numbers are unsigned, 32 bits. */ +/* +=for apidoc Ay||line_t +The typedef to use to declare variables that are to hold line numbers. + +=cut + + Line numbers are unsigned, 32 bits. +*/ typedef U32 line_t; #define NOLINE ((line_t) 4294967295UL) /* = FFFFFFFF */ /* Helpful alias for version prescan */ #define is_LAX_VERSION(a,b) \ - (a != Perl_prescan_version(aTHX_ a, FALSE, b, NULL, NULL, NULL, NULL)) + (a != Perl_prescan_version(aTHX_ a, FALSE, b, NULL, NULL, NULL, NULL)) #define is_STRICT_VERSION(a,b) \ - (a != Perl_prescan_version(aTHX_ a, TRUE, b, NULL, NULL, NULL, NULL)) + (a != Perl_prescan_version(aTHX_ a, TRUE, b, NULL, NULL, NULL, NULL)) #define BADVERSION(a,b,c) \ - if (b) { \ - *b = c; \ - } \ - return a; + if (b) { \ + *b = c; \ + } \ + return a; /* Converts a character KNOWN to represent a hexadecimal digit (0-9, A-F, or * a-f) to its numeric value without using any branches. The input is @@ -2318,7 +2476,7 @@ #define OCTAL_VALUE(c) (__ASSERT_(isOCTAL(c)) (7 & (c))) /* Efficiently returns a boolean as to if two native characters are equivalent - * case-insenstively. At least one of the characters must be one of [A-Za-z]; + * case-insensitively. At least one of the characters must be one of [A-Za-z]; * the ALPHA in the name is to remind you of that. This is asserted() in * DEBUGGING builds. Because [A-Za-z] are invariant under UTF-8, this macro * works (on valid input) for both non- and UTF-8-encoded bytes. @@ -2337,7 +2495,7 @@ #define isALPHA_FOLD_NE(c1, c2) (! isALPHA_FOLD_EQ((c1), (c2))) /* -=head1 Memory Management +=for apidoc_section $memory =for apidoc Am|void|Newx|void* ptr|int nitems|type The XSUB-writer's interface to the C C function. @@ -2378,6 +2536,7 @@ This should B be used on memory obtained using L and friends. +=for apidoc_section $string =for apidoc Am|void|Move|void* src|void* dest|int nitems|type The XSUB-writer's interface to the C C function. The C is the source, C is the destination, C is the number of items, and @@ -2410,7 +2569,8 @@ for encouraging compilers to tail-call optimise. -=for apidoc Am|void|StructCopy|type *src|type *dest|type +=for apidoc_section $utility +=for apidoc Amu|void|StructCopy|type *src|type *dest|type This is an architecture-independent macro to copy one structure to another. =for apidoc Am|void|PoisonWith|void* dest|int nitems|type|U8 byte @@ -2479,17 +2639,17 @@ MEM_SIZE_MAX/sizeof(t)) > MEM_SIZE_MAX/sizeof(t)) # define MEM_WRAP_CHECK(n,t) \ - (void)(UNLIKELY(_MEM_WRAP_WILL_WRAP(n,t)) \ + (void)(UNLIKELY(_MEM_WRAP_WILL_WRAP(n,t)) \ && (croak_memory_wrap(),0)) # define MEM_WRAP_CHECK_1(n,t,a) \ - (void)(UNLIKELY(_MEM_WRAP_WILL_WRAP(n,t)) \ - && (Perl_croak_nocontext("%s",(a)),0)) + (void)(UNLIKELY(_MEM_WRAP_WILL_WRAP(n,t)) \ + && (Perl_croak_nocontext("%s",(a)),0)) /* "a" arg must be a string literal */ # define MEM_WRAP_CHECK_s(n,t,a) \ - (void)(UNLIKELY(_MEM_WRAP_WILL_WRAP(n,t)) \ - && (Perl_croak_nocontext("" a ""),0)) + (void)(UNLIKELY(_MEM_WRAP_WILL_WRAP(n,t)) \ + && (Perl_croak_nocontext("" a ""),0)) #define MEM_WRAP_CHECK_(n,t) MEM_WRAP_CHECK(n,t), @@ -2584,9 +2744,9 @@ #endif #define Renew(v,n,t) \ - (v = (MEM_WRAP_CHECK_(n,t) (t*)MEM_LOG_REALLOC(n,t,v,saferealloc((Malloc_t)(v),(MEM_SIZE)((n)*sizeof(t)))))) + (v = (MEM_WRAP_CHECK_(n,t) (t*)MEM_LOG_REALLOC(n,t,v,saferealloc((Malloc_t)(v),(MEM_SIZE)((n)*sizeof(t)))))) #define Renewc(v,n,t,c) \ - (v = (MEM_WRAP_CHECK_(n,t) (c*)MEM_LOG_REALLOC(n,t,v,saferealloc((Malloc_t)(v),(MEM_SIZE)((n)*sizeof(t)))))) + (v = (MEM_WRAP_CHECK_(n,t) (c*)MEM_LOG_REALLOC(n,t,v,saferealloc((Malloc_t)(v),(MEM_SIZE)((n)*sizeof(t)))))) #ifdef PERL_POISON #define Safefree(d) \ @@ -2621,10 +2781,11 @@ # define PERL_POISON_EXPR(x) #endif +/* Shallow copy */ #define StructCopy(s,d,t) (*((t*)(d)) = *((t*)(s))) /* -=head1 Handy Values +=for apidoc_section $utility =for apidoc Am|STRLEN|C_ARRAY_LENGTH|void *a diff -Nru perl-5.32.1/hints/aix.sh perl-5.34.0/hints/aix.sh --- perl-5.32.1/hints/aix.sh 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/hints/aix.sh 2020-10-24 18:43:34.000000000 +0000 @@ -566,7 +566,7 @@ # * Does not fully support the IEEE special numbers NaN and INF. # * Does not support IEEE status flags for overflow, underflow, # and other conditions. These flags have no meaning for the 128-bit -# long double inplementation. +# long double implementation. # * The 128-bit long double data type does not support the following math # APIs: atanhl, cbrtl, copysignl, exp2l, expm1l, fdiml, fmal, fmaxl, # fminl, hypotl, ilogbl, llrintl, llroundl, log1pl, log2l, logbl, diff -Nru perl-5.32.1/hints/amigaos.sh perl-5.34.0/hints/amigaos.sh --- perl-5.32.1/hints/amigaos.sh 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/hints/amigaos.sh 2020-10-24 18:43:34.000000000 +0000 @@ -6,3 +6,5 @@ do cp -f $f . done + +ccflags="$ccflags -fno-stack-protector" diff -Nru perl-5.32.1/hints/catamount.sh perl-5.34.0/hints/catamount.sh --- perl-5.32.1/hints/catamount.sh 2020-12-18 13:33:59.000000000 +0000 +++ perl-5.34.0/hints/catamount.sh 2021-05-04 23:28:28.000000000 +0000 @@ -31,11 +31,11 @@ # mkdir -p /opt/perl-catamount # mkdir -p /opt/perl-catamount/include # mkdir -p /opt/perl-catamount/lib -# mkdir -p /opt/perl-catamount/lib/perl5/5.32.1 +# mkdir -p /opt/perl-catamount/lib/perl5/5.34.0 # mkdir -p /opt/perl-catamount/bin # cp *.h /opt/perl-catamount/include # cp libperl.a /opt/perl-catamount/lib -# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.32.1 +# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.34.0 # cp miniperl perl run.sh cc.sh /opt/perl-catamount/lib # # With the headers and the libperl.a you can embed Perl to your Catamount diff -Nru perl-5.32.1/hints/haiku.sh perl-5.34.0/hints/haiku.sh --- perl-5.32.1/hints/haiku.sh 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/hints/haiku.sh 2020-10-24 18:43:34.000000000 +0000 @@ -2,15 +2,15 @@ # $Id$ case "$prefix" in -'') prefix="/boot/common" ;; +'') prefix="$(finddir B_COMMON_DIRECTORY)" ;; *) ;; # pass the user supplied value through esac -libpth='/boot/home/config/lib /boot/common/lib /system/lib' -usrinc='/boot/develop/headers/posix' -locinc='/boot/home/config/include /boot/common/include /boot/develop/headers' +libpth="$(finddir B_USER_DEVELOP_DIRECTORY)/lib $(finddir B_SYSTEM_DEVELOP_DIRECTORY)/lib $(finddir B_COMMON_DIRECTORY)/lib /system/lib" +usrinc="$(finddir B_SYSTEM_DEVELOP_DIRECTORY)/headers/posix" +locinc="$(finddir B_USER_CONFIG_DIRECTORY)/develop/headers $(finddir B_COMMON_DIRECTORY)/headers $(finddir B_SYSTEM_DEVELOP_DIRECTORY)/headers" -libc='/system/lib/libroot.so' +libc="$(finddir B_SYSTEM_LIB_DIRECTORY)/libroot.so" libs='-lnetwork' # Use Haiku's malloc() by default. @@ -31,6 +31,8 @@ cc="gcc" ld='gcc' +ccflags="$ccflags -fno-stack-protector" + # The runtime loader library path variable is LIBRARY_PATH. case "$ldlibpthname" in '') ldlibpthname=LIBRARY_PATH ;; diff -Nru perl-5.32.1/hints/t001.c perl-5.34.0/hints/t001.c --- perl-5.32.1/hints/t001.c 2020-12-18 09:58:48.000000000 +0000 +++ perl-5.34.0/hints/t001.c 2021-01-20 23:04:44.000000000 +0000 @@ -21,70 +21,70 @@ void test(double *result) { - float afloat; - double adouble; - int checksum = 0; - unsigned cuv = 0; - double cdouble = 0.0; - const int bits_in_uv = 8 * sizeof(cuv); - - checksum = 53; - cdouble = -1.0; - - if (checksum) { - if (checksum > bits_in_uv) { - double trouble; - - adouble = (double) (1 << (checksum & 15)); - - while (checksum >= 16) { - checksum -= 16; - adouble *= 65536.0; - } - - /* At -O1, GCC 2.95.2 compiles the following loop - into: - - L$0014 - fcmp,dbl,>= %fr4,%fr0 - ftest - b L$0014 - fadd,dbl %fr4,%fr12,%fr4 - fsub,dbl %fr4,%fr12,%fr4 - - This code depends on the floating-add and - floating-subtract retaining all of the - precision present in the operands. There is - no such guarantee when using floating-point, - as this test case demonstrates. - - The code is okay at -O0. */ - - while (cdouble < 0.0) - cdouble += adouble; - - cdouble = modf (cdouble / adouble, &trouble) * adouble; - } - } + float afloat; + double adouble; + int checksum = 0; + unsigned cuv = 0; + double cdouble = 0.0; + const int bits_in_uv = 8 * sizeof(cuv); + + checksum = 53; + cdouble = -1.0; + + if (checksum) { + if (checksum > bits_in_uv) { + double trouble; + + adouble = (double) (1 << (checksum & 15)); + + while (checksum >= 16) { + checksum -= 16; + adouble *= 65536.0; + } + + /* At -O1, GCC 2.95.2 compiles the following loop + into: + + L$0014 + fcmp,dbl,>= %fr4,%fr0 + ftest + b L$0014 + fadd,dbl %fr4,%fr12,%fr4 + fsub,dbl %fr4,%fr12,%fr4 + + This code depends on the floating-add and + floating-subtract retaining all of the + precision present in the operands. There is + no such guarantee when using floating-point, + as this test case demonstrates. + + The code is okay at -O0. */ + + while (cdouble < 0.0) + cdouble += adouble; + + cdouble = modf (cdouble / adouble, &trouble) * adouble; + } + } - *result = cdouble; + *result = cdouble; } int main (int argc, char ** argv) { double value; - test (&value); + test (&value); - if (argc == 2 && !strcmp(argv[1],"-v")) - printf ("value = %.18e\n", value); + if (argc == 2 && !strcmp(argv[1],"-v")) + printf ("value = %.18e\n", value); - if (value != 9.007199254740991e+15) { - printf ("t001 fails!\n"); - return -1; - } - else { - printf ("t001 works.\n"); - return 0; - } + if (value != 9.007199254740991e+15) { + printf ("t001 fails!\n"); + return -1; + } + else { + printf ("t001 works.\n"); + return 0; + } } diff -Nru perl-5.32.1/hv.c perl-5.34.0/hv.c --- perl-5.32.1/hv.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/hv.c 2021-02-21 11:01:31.000000000 +0000 @@ -17,7 +17,7 @@ */ /* -=head1 Hash Manipulation Functions +=head1 HV Handling A HV structure represents a Perl hash. It consists mainly of an array of pointers, each of which points to a linked list of HE structures. The array is indexed by the hash function of the key, so each linked list @@ -38,8 +38,13 @@ * NOTE if you change this formula so we split earlier than previously * you MUST change the logic in hv_ksplit() */ -#define DO_HSPLIT(xhv) ( ((xhv)->xhv_keys + ((xhv)->xhv_keys >> 1)) > (xhv)->xhv_max ) -#define HV_FILL_THRESHOLD 31 + +/* MAX_BUCKET_MAX is the maximum max bucket index, at which point we stop growing the + * number of buckets, + */ +#define MAX_BUCKET_MAX ((1<<26)-1) +#define DO_HSPLIT(xhv) ( ( ((xhv)->xhv_keys + ((xhv)->xhv_keys >> 1)) > (xhv)->xhv_max ) && \ + ((xhv)->xhv_max < MAX_BUCKET_MAX) ) static const char S_strtab_error[] = "Cannot modify shared string table in hv_%s"; @@ -58,7 +63,7 @@ void ** const root = &PL_body_roots[HE_SVSLOT]; if (!*root) - Perl_more_bodies(aTHX_ HE_SVSLOT, sizeof(HE), PERL_ARENA_SIZE); + Perl_more_bodies(aTHX_ HE_SVSLOT, sizeof(HE), PERL_ARENA_SIZE); he = (HE*) *root; assert(he); *root = HeNEXT(he); @@ -68,8 +73,8 @@ #define new_HE() new_he() #define del_HE(p) \ STMT_START { \ - HeNEXT(p) = (HE*)(PL_body_roots[HE_SVSLOT]); \ - PL_body_roots[HE_SVSLOT] = p; \ + HeNEXT(p) = (HE*)(PL_body_roots[HE_SVSLOT]); \ + PL_body_roots[HE_SVSLOT] = p; \ } STMT_END @@ -94,7 +99,7 @@ HEK_FLAGS(hek) = (unsigned char)flags_masked | HVhek_UNSHARED; if (flags & HVhek_FREEKEY) - Safefree(str); + Safefree(str); return hek; } @@ -106,10 +111,10 @@ { HE *he = PL_hv_fetch_ent_mh; while (he) { - HE * const ohe = he; - Safefree(HeKEY_hek(he)); - he = HeNEXT(he); - del_HE(ohe); + HE * const ohe = he; + Safefree(HeKEY_hek(he)); + he = HeNEXT(he); + del_HE(ohe); } PL_hv_fetch_ent_mh = NULL; } @@ -124,18 +129,18 @@ PERL_UNUSED_ARG(param); if (!source) - return NULL; + return NULL; shared = (HEK*)ptr_table_fetch(PL_ptr_table, source); if (shared) { - /* We already shared this hash key. */ - (void)share_hek_hek(shared); + /* We already shared this hash key. */ + (void)share_hek_hek(shared); } else { - shared - = share_hek_flags(HEK_KEY(source), HEK_LEN(source), - HEK_HASH(source), HEK_FLAGS(source)); - ptr_table_store(PL_ptr_table, source, shared); + shared + = share_hek_flags(HEK_KEY(source), HEK_LEN(source), + HEK_HASH(source), HEK_FLAGS(source)); + ptr_table_store(PL_ptr_table, source, shared); } return shared; } @@ -148,11 +153,11 @@ PERL_ARGS_ASSERT_HE_DUP; if (!e) - return NULL; + return NULL; /* look for it in the table first */ ret = (HE*)ptr_table_fetch(PL_ptr_table, e); if (ret) - return ret; + return ret; /* create anew and remember what it is */ ret = new_HE(); @@ -160,31 +165,31 @@ HeNEXT(ret) = he_dup(HeNEXT(e),shared, param); if (HeKLEN(e) == HEf_SVKEY) { - char *k; - Newx(k, HEK_BASESIZE + sizeof(const SV *), char); - HeKEY_hek(ret) = (HEK*)k; - HeKEY_sv(ret) = sv_dup_inc(HeKEY_sv(e), param); + char *k; + Newx(k, HEK_BASESIZE + sizeof(const SV *), char); + HeKEY_hek(ret) = (HEK*)k; + HeKEY_sv(ret) = sv_dup_inc(HeKEY_sv(e), param); } else if (shared) { - /* This is hek_dup inlined, which seems to be important for speed - reasons. */ - HEK * const source = HeKEY_hek(e); - HEK *shared = (HEK*)ptr_table_fetch(PL_ptr_table, source); - - if (shared) { - /* We already shared this hash key. */ - (void)share_hek_hek(shared); - } - else { - shared - = share_hek_flags(HEK_KEY(source), HEK_LEN(source), - HEK_HASH(source), HEK_FLAGS(source)); - ptr_table_store(PL_ptr_table, source, shared); - } - HeKEY_hek(ret) = shared; + /* This is hek_dup inlined, which seems to be important for speed + reasons. */ + HEK * const source = HeKEY_hek(e); + HEK *shared = (HEK*)ptr_table_fetch(PL_ptr_table, source); + + if (shared) { + /* We already shared this hash key. */ + (void)share_hek_hek(shared); + } + else { + shared + = share_hek_flags(HEK_KEY(source), HEK_LEN(source), + HEK_HASH(source), HEK_FLAGS(source)); + ptr_table_store(PL_ptr_table, source, shared); + } + HeKEY_hek(ret) = shared; } else - HeKEY_hek(ret) = save_hek_flags(HeKEY(e), HeKLEN(e), HeHASH(e), + HeKEY_hek(ret) = save_hek_flags(HeKEY(e), HeKLEN(e), HeHASH(e), HeKFLAGS(e)); HeVAL(ret) = sv_dup_inc(HeVAL(e), param); return ret; @@ -193,22 +198,22 @@ static void S_hv_notallowed(pTHX_ int flags, const char *key, I32 klen, - const char *msg) + const char *msg) { SV * const sv = sv_newmortal(); PERL_ARGS_ASSERT_HV_NOTALLOWED; if (!(flags & HVhek_FREEKEY)) { - sv_setpvn(sv, key, klen); + sv_setpvn(sv, key, klen); } else { - /* Need to free saved eventually assign to mortal SV */ - /* XXX is this line an error ???: SV *sv = sv_newmortal(); */ - sv_usepvn(sv, (char *) key, klen); + /* Need to free saved eventually assign to mortal SV */ + /* XXX is this line an error ???: SV *sv = sv_newmortal(); */ + sv_usepvn(sv, (char *) key, klen); } if (flags & HVhek_UTF8) { - SvUTF8_on(sv); + SvUTF8_on(sv); } Perl_croak(aTHX_ msg, SVfARG(sv)); } @@ -322,7 +327,7 @@ /* Common code for hv_delete()/hv_exists()/hv_fetch()/hv_store() */ void * Perl_hv_common_key_len(pTHX_ HV *hv, const char *key, I32 klen_i32, - const int action, SV *val, const U32 hash) + const int action, SV *val, const U32 hash) { STRLEN klen; int flags; @@ -330,20 +335,19 @@ PERL_ARGS_ASSERT_HV_COMMON_KEY_LEN; if (klen_i32 < 0) { - klen = -klen_i32; - flags = HVhek_UTF8; + klen = -klen_i32; + flags = HVhek_UTF8; } else { - klen = klen_i32; - flags = 0; + klen = klen_i32; + flags = 0; } return hv_common(hv, NULL, key, klen, flags, action, val, hash); } void * Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, - int flags, int action, SV *val, U32 hash) + int flags, int action, SV *val, U32 hash) { - dVAR; XPVHV* xhv; HE *entry; HE **oentry; @@ -355,275 +359,276 @@ HEK *keysv_hek = NULL; if (!hv) - return NULL; + return NULL; if (SvTYPE(hv) == (svtype)SVTYPEMASK) - return NULL; + return NULL; assert(SvTYPE(hv) == SVt_PVHV); if (SvSMAGICAL(hv) && SvGMAGICAL(hv) && !(action & HV_DISABLE_UVAR_XKEY)) { - MAGIC* mg; - if ((mg = mg_find((const SV *)hv, PERL_MAGIC_uvar))) { - struct ufuncs * const uf = (struct ufuncs *)mg->mg_ptr; - if (uf->uf_set == NULL) { - SV* obj = mg->mg_obj; - - if (!keysv) { - keysv = newSVpvn_flags(key, klen, SVs_TEMP | - ((flags & HVhek_UTF8) - ? SVf_UTF8 : 0)); - } - - mg->mg_obj = keysv; /* pass key */ - uf->uf_index = action; /* pass action */ - magic_getuvar(MUTABLE_SV(hv), mg); - keysv = mg->mg_obj; /* may have changed */ - mg->mg_obj = obj; - - /* If the key may have changed, then we need to invalidate - any passed-in computed hash value. */ - hash = 0; - } - } + MAGIC* mg; + if ((mg = mg_find((const SV *)hv, PERL_MAGIC_uvar))) { + struct ufuncs * const uf = (struct ufuncs *)mg->mg_ptr; + if (uf->uf_set == NULL) { + SV* obj = mg->mg_obj; + + if (!keysv) { + keysv = newSVpvn_flags(key, klen, SVs_TEMP | + ((flags & HVhek_UTF8) + ? SVf_UTF8 : 0)); + } + + mg->mg_obj = keysv; /* pass key */ + uf->uf_index = action; /* pass action */ + magic_getuvar(MUTABLE_SV(hv), mg); + keysv = mg->mg_obj; /* may have changed */ + mg->mg_obj = obj; + + /* If the key may have changed, then we need to invalidate + any passed-in computed hash value. */ + hash = 0; + } + } } if (keysv) { - if (flags & HVhek_FREEKEY) - Safefree(key); - key = SvPV_const(keysv, klen); - is_utf8 = (SvUTF8(keysv) != 0); - if (SvIsCOW_shared_hash(keysv)) { - flags = HVhek_KEYCANONICAL | (is_utf8 ? HVhek_UTF8 : 0); - } else { - flags = is_utf8 ? HVhek_UTF8 : 0; - } + if (flags & HVhek_FREEKEY) + Safefree(key); + key = SvPV_const(keysv, klen); + is_utf8 = (SvUTF8(keysv) != 0); + if (SvIsCOW_shared_hash(keysv)) { + flags = HVhek_KEYCANONICAL | (is_utf8 ? HVhek_UTF8 : 0); + } else { + flags = 0; + } } else { - is_utf8 = cBOOL(flags & HVhek_UTF8); + is_utf8 = cBOOL(flags & HVhek_UTF8); } if (action & HV_DELETE) { - return (void *) hv_delete_common(hv, keysv, key, klen, - flags, action, hash); + return (void *) hv_delete_common(hv, keysv, key, klen, + flags | (is_utf8 ? HVhek_UTF8 : 0), + action, hash); } xhv = (XPVHV*)SvANY(hv); if (SvMAGICAL(hv)) { - if (SvRMAGICAL(hv) && !(action & (HV_FETCH_ISSTORE|HV_FETCH_ISEXISTS))) { - if (mg_find((const SV *)hv, PERL_MAGIC_tied) - || SvGMAGICAL((const SV *)hv)) - { - /* FIXME should be able to skimp on the HE/HEK here when - HV_FETCH_JUST_SV is true. */ - if (!keysv) { - keysv = newSVpvn_utf8(key, klen, is_utf8); - } else { - keysv = newSVsv(keysv); - } + if (SvRMAGICAL(hv) && !(action & (HV_FETCH_ISSTORE|HV_FETCH_ISEXISTS))) { + if (mg_find((const SV *)hv, PERL_MAGIC_tied) + || SvGMAGICAL((const SV *)hv)) + { + /* FIXME should be able to skimp on the HE/HEK here when + HV_FETCH_JUST_SV is true. */ + if (!keysv) { + keysv = newSVpvn_utf8(key, klen, is_utf8); + } else { + keysv = newSVsv(keysv); + } sv = sv_newmortal(); mg_copy(MUTABLE_SV(hv), sv, (char *)keysv, HEf_SVKEY); - /* grab a fake HE/HEK pair from the pool or make a new one */ - entry = PL_hv_fetch_ent_mh; - if (entry) - PL_hv_fetch_ent_mh = HeNEXT(entry); - else { - char *k; - entry = new_HE(); - Newx(k, HEK_BASESIZE + sizeof(const SV *), char); - HeKEY_hek(entry) = (HEK*)k; - } - HeNEXT(entry) = NULL; - HeSVKEY_set(entry, keysv); - HeVAL(entry) = sv; - sv_upgrade(sv, SVt_PVLV); - LvTYPE(sv) = 'T'; - /* so we can free entry when freeing sv */ - LvTARG(sv) = MUTABLE_SV(entry); - - /* XXX remove at some point? */ - if (flags & HVhek_FREEKEY) - Safefree(key); - - if (return_svp) { - return entry ? (void *) &HeVAL(entry) : NULL; - } - return (void *) entry; - } + /* grab a fake HE/HEK pair from the pool or make a new one */ + entry = PL_hv_fetch_ent_mh; + if (entry) + PL_hv_fetch_ent_mh = HeNEXT(entry); + else { + char *k; + entry = new_HE(); + Newx(k, HEK_BASESIZE + sizeof(const SV *), char); + HeKEY_hek(entry) = (HEK*)k; + } + HeNEXT(entry) = NULL; + HeSVKEY_set(entry, keysv); + HeVAL(entry) = sv; + sv_upgrade(sv, SVt_PVLV); + LvTYPE(sv) = 'T'; + /* so we can free entry when freeing sv */ + LvTARG(sv) = MUTABLE_SV(entry); + + /* XXX remove at some point? */ + if (flags & HVhek_FREEKEY) + Safefree(key); + + if (return_svp) { + return entry ? (void *) &HeVAL(entry) : NULL; + } + return (void *) entry; + } #ifdef ENV_IS_CASELESS - else if (mg_find((const SV *)hv, PERL_MAGIC_env)) { - U32 i; - for (i = 0; i < klen; ++i) - if (isLOWER(key[i])) { - /* Would be nice if we had a routine to do the - copy and upercase in a single pass through. */ - const char * const nkey = strupr(savepvn(key,klen)); - /* Note that this fetch is for nkey (the uppercased - key) whereas the store is for key (the original) */ - void *result = hv_common(hv, NULL, nkey, klen, - HVhek_FREEKEY, /* free nkey */ - 0 /* non-LVAL fetch */ - | HV_DISABLE_UVAR_XKEY - | return_svp, - NULL /* no value */, - 0 /* compute hash */); - if (!result && (action & HV_FETCH_LVALUE)) { - /* This call will free key if necessary. - Do it this way to encourage compiler to tail - call optimise. */ - result = hv_common(hv, keysv, key, klen, flags, - HV_FETCH_ISSTORE - | HV_DISABLE_UVAR_XKEY - | return_svp, - newSV(0), hash); - } else { - if (flags & HVhek_FREEKEY) - Safefree(key); - } - return result; - } - } -#endif - } /* ISFETCH */ - else if (SvRMAGICAL(hv) && (action & HV_FETCH_ISEXISTS)) { - if (mg_find((const SV *)hv, PERL_MAGIC_tied) - || SvGMAGICAL((const SV *)hv)) { - /* I don't understand why hv_exists_ent has svret and sv, - whereas hv_exists only had one. */ - SV * const svret = sv_newmortal(); - sv = sv_newmortal(); - - if (keysv || is_utf8) { - if (!keysv) { - keysv = newSVpvn_utf8(key, klen, TRUE); - } else { - keysv = newSVsv(keysv); - } - mg_copy(MUTABLE_SV(hv), sv, (char *)sv_2mortal(keysv), HEf_SVKEY); - } else { - mg_copy(MUTABLE_SV(hv), sv, key, klen); - } - if (flags & HVhek_FREEKEY) - Safefree(key); - { + else if (mg_find((const SV *)hv, PERL_MAGIC_env)) { + U32 i; + for (i = 0; i < klen; ++i) + if (isLOWER(key[i])) { + /* Would be nice if we had a routine to do the + copy and upercase in a single pass through. */ + const char * const nkey = strupr(savepvn(key,klen)); + /* Note that this fetch is for nkey (the uppercased + key) whereas the store is for key (the original) */ + void *result = hv_common(hv, NULL, nkey, klen, + HVhek_FREEKEY, /* free nkey */ + 0 /* non-LVAL fetch */ + | HV_DISABLE_UVAR_XKEY + | return_svp, + NULL /* no value */, + 0 /* compute hash */); + if (!result && (action & HV_FETCH_LVALUE)) { + /* This call will free key if necessary. + Do it this way to encourage compiler to tail + call optimise. */ + result = hv_common(hv, keysv, key, klen, flags, + HV_FETCH_ISSTORE + | HV_DISABLE_UVAR_XKEY + | return_svp, + newSV(0), hash); + } else { + if (flags & HVhek_FREEKEY) + Safefree(key); + } + return result; + } + } +#endif + } /* ISFETCH */ + else if (SvRMAGICAL(hv) && (action & HV_FETCH_ISEXISTS)) { + if (mg_find((const SV *)hv, PERL_MAGIC_tied) + || SvGMAGICAL((const SV *)hv)) { + /* I don't understand why hv_exists_ent has svret and sv, + whereas hv_exists only had one. */ + SV * const svret = sv_newmortal(); + sv = sv_newmortal(); + + if (keysv || is_utf8) { + if (!keysv) { + keysv = newSVpvn_utf8(key, klen, TRUE); + } else { + keysv = newSVsv(keysv); + } + mg_copy(MUTABLE_SV(hv), sv, (char *)sv_2mortal(keysv), HEf_SVKEY); + } else { + mg_copy(MUTABLE_SV(hv), sv, key, klen); + } + if (flags & HVhek_FREEKEY) + Safefree(key); + { MAGIC * const mg = mg_find(sv, PERL_MAGIC_tiedelem); if (mg) magic_existspack(svret, mg); - } - /* This cast somewhat evil, but I'm merely using NULL/ - not NULL to return the boolean exists. - And I know hv is not NULL. */ - return SvTRUE_NN(svret) ? (void *)hv : NULL; - } + } + /* This cast somewhat evil, but I'm merely using NULL/ + not NULL to return the boolean exists. + And I know hv is not NULL. */ + return SvTRUE_NN(svret) ? (void *)hv : NULL; + } #ifdef ENV_IS_CASELESS - else if (mg_find((const SV *)hv, PERL_MAGIC_env)) { - /* XXX This code isn't UTF8 clean. */ - char * const keysave = (char * const)key; - /* Will need to free this, so set FREEKEY flag. */ - key = savepvn(key,klen); - key = (const char*)strupr((char*)key); - is_utf8 = FALSE; - hash = 0; - keysv = 0; - - if (flags & HVhek_FREEKEY) { - Safefree(keysave); - } - flags |= HVhek_FREEKEY; - } -#endif - } /* ISEXISTS */ - else if (action & HV_FETCH_ISSTORE) { - bool needs_copy; - bool needs_store; - hv_magic_check (hv, &needs_copy, &needs_store); - if (needs_copy) { - const bool save_taint = TAINT_get; - if (keysv || is_utf8) { - if (!keysv) { - keysv = newSVpvn_utf8(key, klen, TRUE); - } - if (TAINTING_get) - TAINT_set(SvTAINTED(keysv)); - keysv = sv_2mortal(newSVsv(keysv)); - mg_copy(MUTABLE_SV(hv), val, (char*)keysv, HEf_SVKEY); - } else { - mg_copy(MUTABLE_SV(hv), val, key, klen); - } + else if (mg_find((const SV *)hv, PERL_MAGIC_env)) { + /* XXX This code isn't UTF8 clean. */ + char * const keysave = (char * const)key; + /* Will need to free this, so set FREEKEY flag. */ + key = savepvn(key,klen); + key = (const char*)strupr((char*)key); + is_utf8 = FALSE; + hash = 0; + keysv = 0; - TAINT_IF(save_taint); + if (flags & HVhek_FREEKEY) { + Safefree(keysave); + } + flags |= HVhek_FREEKEY; + } +#endif + } /* ISEXISTS */ + else if (action & HV_FETCH_ISSTORE) { + bool needs_copy; + bool needs_store; + hv_magic_check (hv, &needs_copy, &needs_store); + if (needs_copy) { + const bool save_taint = TAINT_get; + if (keysv || is_utf8) { + if (!keysv) { + keysv = newSVpvn_utf8(key, klen, TRUE); + } + if (TAINTING_get) + TAINT_set(SvTAINTED(keysv)); + keysv = sv_2mortal(newSVsv(keysv)); + mg_copy(MUTABLE_SV(hv), val, (char*)keysv, HEf_SVKEY); + } else { + mg_copy(MUTABLE_SV(hv), val, key, klen); + } + + TAINT_IF(save_taint); #ifdef NO_TAINT_SUPPORT PERL_UNUSED_VAR(save_taint); #endif - if (!needs_store) { - if (flags & HVhek_FREEKEY) - Safefree(key); - return NULL; - } + if (!needs_store) { + if (flags & HVhek_FREEKEY) + Safefree(key); + return NULL; + } #ifdef ENV_IS_CASELESS - else if (mg_find((const SV *)hv, PERL_MAGIC_env)) { - /* XXX This code isn't UTF8 clean. */ - const char *keysave = key; - /* Will need to free this, so set FREEKEY flag. */ - key = savepvn(key,klen); - key = (const char*)strupr((char*)key); - is_utf8 = FALSE; - hash = 0; - keysv = 0; - - if (flags & HVhek_FREEKEY) { - Safefree(keysave); - } - flags |= HVhek_FREEKEY; - } + else if (mg_find((const SV *)hv, PERL_MAGIC_env)) { + /* XXX This code isn't UTF8 clean. */ + const char *keysave = key; + /* Will need to free this, so set FREEKEY flag. */ + key = savepvn(key,klen); + key = (const char*)strupr((char*)key); + is_utf8 = FALSE; + hash = 0; + keysv = 0; + + if (flags & HVhek_FREEKEY) { + Safefree(keysave); + } + flags |= HVhek_FREEKEY; + } #endif - } - } /* ISSTORE */ + } + } /* ISSTORE */ } /* SvMAGICAL */ if (!HvARRAY(hv)) { - if ((action & (HV_FETCH_LVALUE | HV_FETCH_ISSTORE)) + if ((action & (HV_FETCH_LVALUE | HV_FETCH_ISSTORE)) #ifdef DYNAMIC_ENV_FETCH /* if it's an %ENV lookup, we may get it on the fly */ - || (SvRMAGICAL((const SV *)hv) - && mg_find((const SV *)hv, PERL_MAGIC_env)) + || (SvRMAGICAL((const SV *)hv) + && mg_find((const SV *)hv, PERL_MAGIC_env)) #endif - ) { - char *array; - Newxz(array, - PERL_HV_ARRAY_ALLOC_BYTES(xhv->xhv_max+1 /* HvMAX(hv)+1 */), - char); - HvARRAY(hv) = (HE**)array; - } + ) { + char *array; + Newxz(array, + PERL_HV_ARRAY_ALLOC_BYTES(xhv->xhv_max+1 /* HvMAX(hv)+1 */), + char); + HvARRAY(hv) = (HE**)array; + } #ifdef DYNAMIC_ENV_FETCH - else if (action & HV_FETCH_ISEXISTS) { - /* for an %ENV exists, if we do an insert it's by a recursive - store call, so avoid creating HvARRAY(hv) right now. */ - } + else if (action & HV_FETCH_ISEXISTS) { + /* for an %ENV exists, if we do an insert it's by a recursive + store call, so avoid creating HvARRAY(hv) right now. */ + } #endif - else { - /* XXX remove at some point? */ + else { + /* XXX remove at some point? */ if (flags & HVhek_FREEKEY) Safefree(key); - return NULL; - } + return NULL; + } } if (is_utf8 && !(flags & HVhek_KEYCANONICAL)) { - char * const keysave = (char *)key; - key = (char*)bytes_from_utf8((U8*)key, &klen, &is_utf8); + char * const keysave = (char *)key; + key = (char*)bytes_from_utf8((U8*)key, &klen, &is_utf8); if (is_utf8) - flags |= HVhek_UTF8; - else - flags &= ~HVhek_UTF8; + flags |= HVhek_UTF8; + else + flags &= ~HVhek_UTF8; if (key != keysave) { - if (flags & HVhek_FREEKEY) - Safefree(keysave); + if (flags & HVhek_FREEKEY) + Safefree(keysave); flags |= HVhek_WASUTF8 | HVhek_FREEKEY; - /* If the caller calculated a hash, it was on the sequence of - octets that are the UTF-8 form. We've now changed the sequence - of octets stored to that of the equivalent byte representation, - so the hash we need is different. */ - hash = 0; - } + /* If the caller calculated a hash, it was on the sequence of + octets that are the UTF-8 form. We've now changed the sequence + of octets stored to that of the equivalent byte representation, + so the hash we need is different. */ + hash = 0; + } } if (keysv && (SvIsCOW_shared_hash(keysv))) { @@ -641,7 +646,7 @@ else #endif { - entry = (HvARRAY(hv))[hash & (I32) HvMAX(hv)]; + entry = (HvARRAY(hv))[hash & (I32) HvMAX(hv)]; } if (!entry) @@ -675,146 +680,146 @@ } for (; entry; entry = HeNEXT(entry)) { - if (HeHASH(entry) != hash) /* strings can't be equal */ - continue; - if (HeKLEN(entry) != (I32)klen) - continue; - if (memNE(HeKEY(entry),key,klen)) /* is this it? */ - continue; - if ((HeKFLAGS(entry) ^ masked_flags) & HVhek_UTF8) - continue; + if (HeHASH(entry) != hash) /* strings can't be equal */ + continue; + if (HeKLEN(entry) != (I32)klen) + continue; + if (memNE(HeKEY(entry),key,klen)) /* is this it? */ + continue; + if ((HeKFLAGS(entry) ^ masked_flags) & HVhek_UTF8) + continue; found: if (action & (HV_FETCH_LVALUE|HV_FETCH_ISSTORE)) { - if (HeKFLAGS(entry) != masked_flags) { - /* We match if HVhek_UTF8 bit in our flags and hash key's - match. But if entry was set previously with HVhek_WASUTF8 - and key now doesn't (or vice versa) then we should change - the key's flag, as this is assignment. */ - if (HvSHAREKEYS(hv)) { - /* Need to swap the key we have for a key with the flags we - need. As keys are shared we can't just write to the - flag, so we share the new one, unshare the old one. */ - HEK * const new_hek = share_hek_flags(key, klen, hash, - masked_flags); - unshare_hek (HeKEY_hek(entry)); - HeKEY_hek(entry) = new_hek; - } - else if (hv == PL_strtab) { - /* PL_strtab is usually the only hash without HvSHAREKEYS, - so putting this test here is cheap */ - if (flags & HVhek_FREEKEY) - Safefree(key); - Perl_croak(aTHX_ S_strtab_error, - action & HV_FETCH_LVALUE ? "fetch" : "store"); - } - else - HeKFLAGS(entry) = masked_flags; - if (masked_flags & HVhek_ENABLEHVKFLAGS) - HvHASKFLAGS_on(hv); - } - if (HeVAL(entry) == &PL_sv_placeholder) { - /* yes, can store into placeholder slot */ - if (action & HV_FETCH_LVALUE) { - if (SvMAGICAL(hv)) { - /* This preserves behaviour with the old hv_fetch - implementation which at this point would bail out - with a break; (at "if we find a placeholder, we - pretend we haven't found anything") - - That break mean that if a placeholder were found, it - caused a call into hv_store, which in turn would - check magic, and if there is no magic end up pretty - much back at this point (in hv_store's code). */ - break; - } - /* LVAL fetch which actually needs a store. */ - val = newSV(0); - HvPLACEHOLDERS(hv)--; - } else { - /* store */ - if (val != &PL_sv_placeholder) - HvPLACEHOLDERS(hv)--; - } - HeVAL(entry) = val; - } else if (action & HV_FETCH_ISSTORE) { - SvREFCNT_dec(HeVAL(entry)); - HeVAL(entry) = val; - } - } else if (HeVAL(entry) == &PL_sv_placeholder) { - /* if we find a placeholder, we pretend we haven't found - anything */ - break; - } - if (flags & HVhek_FREEKEY) - Safefree(key); - if (return_svp) { + if (HeKFLAGS(entry) != masked_flags) { + /* We match if HVhek_UTF8 bit in our flags and hash key's + match. But if entry was set previously with HVhek_WASUTF8 + and key now doesn't (or vice versa) then we should change + the key's flag, as this is assignment. */ + if (HvSHAREKEYS(hv)) { + /* Need to swap the key we have for a key with the flags we + need. As keys are shared we can't just write to the + flag, so we share the new one, unshare the old one. */ + HEK * const new_hek = share_hek_flags(key, klen, hash, + masked_flags); + unshare_hek (HeKEY_hek(entry)); + HeKEY_hek(entry) = new_hek; + } + else if (hv == PL_strtab) { + /* PL_strtab is usually the only hash without HvSHAREKEYS, + so putting this test here is cheap */ + if (flags & HVhek_FREEKEY) + Safefree(key); + Perl_croak(aTHX_ S_strtab_error, + action & HV_FETCH_LVALUE ? "fetch" : "store"); + } + else + HeKFLAGS(entry) = masked_flags; + if (masked_flags & HVhek_ENABLEHVKFLAGS) + HvHASKFLAGS_on(hv); + } + if (HeVAL(entry) == &PL_sv_placeholder) { + /* yes, can store into placeholder slot */ + if (action & HV_FETCH_LVALUE) { + if (SvMAGICAL(hv)) { + /* This preserves behaviour with the old hv_fetch + implementation which at this point would bail out + with a break; (at "if we find a placeholder, we + pretend we haven't found anything") + + That break mean that if a placeholder were found, it + caused a call into hv_store, which in turn would + check magic, and if there is no magic end up pretty + much back at this point (in hv_store's code). */ + break; + } + /* LVAL fetch which actually needs a store. */ + val = newSV(0); + HvPLACEHOLDERS(hv)--; + } else { + /* store */ + if (val != &PL_sv_placeholder) + HvPLACEHOLDERS(hv)--; + } + HeVAL(entry) = val; + } else if (action & HV_FETCH_ISSTORE) { + SvREFCNT_dec(HeVAL(entry)); + HeVAL(entry) = val; + } + } else if (HeVAL(entry) == &PL_sv_placeholder) { + /* if we find a placeholder, we pretend we haven't found + anything */ + break; + } + if (flags & HVhek_FREEKEY) + Safefree(key); + if (return_svp) { return (void *) &HeVAL(entry); - } - return entry; + } + return entry; } not_found: #ifdef DYNAMIC_ENV_FETCH /* %ENV lookup? If so, try to fetch the value now */ if (!(action & HV_FETCH_ISSTORE) - && SvRMAGICAL((const SV *)hv) - && mg_find((const SV *)hv, PERL_MAGIC_env)) { - unsigned long len; - const char * const env = PerlEnv_ENVgetenv_len(key,&len); - if (env) { - sv = newSVpvn(env,len); - SvTAINTED_on(sv); - return hv_common(hv, keysv, key, klen, flags, - HV_FETCH_ISSTORE|HV_DISABLE_UVAR_XKEY|return_svp, - sv, hash); - } + && SvRMAGICAL((const SV *)hv) + && mg_find((const SV *)hv, PERL_MAGIC_env)) { + unsigned long len; + const char * const env = PerlEnv_ENVgetenv_len(key,&len); + if (env) { + sv = newSVpvn(env,len); + SvTAINTED_on(sv); + return hv_common(hv, keysv, key, klen, flags, + HV_FETCH_ISSTORE|HV_DISABLE_UVAR_XKEY|return_svp, + sv, hash); + } } #endif if (!entry && SvREADONLY(hv) && !(action & HV_FETCH_ISEXISTS)) { - hv_notallowed(flags, key, klen, - "Attempt to access disallowed key '%" SVf "' in" - " a restricted hash"); + hv_notallowed(flags, key, klen, + "Attempt to access disallowed key '%" SVf "' in" + " a restricted hash"); } if (!(action & (HV_FETCH_LVALUE|HV_FETCH_ISSTORE))) { - /* Not doing some form of store, so return failure. */ - if (flags & HVhek_FREEKEY) - Safefree(key); - return NULL; + /* Not doing some form of store, so return failure. */ + if (flags & HVhek_FREEKEY) + Safefree(key); + return NULL; } if (action & HV_FETCH_LVALUE) { - val = action & HV_FETCH_EMPTY_HE ? NULL : newSV(0); - if (SvMAGICAL(hv)) { - /* At this point the old hv_fetch code would call to hv_store, - which in turn might do some tied magic. So we need to make that - magic check happen. */ - /* gonna assign to this, so it better be there */ - /* If a fetch-as-store fails on the fetch, then the action is to - recurse once into "hv_store". If we didn't do this, then that - recursive call would call the key conversion routine again. - However, as we replace the original key with the converted - key, this would result in a double conversion, which would show - up as a bug if the conversion routine is not idempotent. - Hence the use of HV_DISABLE_UVAR_XKEY. */ - return hv_common(hv, keysv, key, klen, flags, - HV_FETCH_ISSTORE|HV_DISABLE_UVAR_XKEY|return_svp, - val, hash); - /* XXX Surely that could leak if the fetch-was-store fails? - Just like the hv_fetch. */ - } + val = action & HV_FETCH_EMPTY_HE ? NULL : newSV(0); + if (SvMAGICAL(hv)) { + /* At this point the old hv_fetch code would call to hv_store, + which in turn might do some tied magic. So we need to make that + magic check happen. */ + /* gonna assign to this, so it better be there */ + /* If a fetch-as-store fails on the fetch, then the action is to + recurse once into "hv_store". If we didn't do this, then that + recursive call would call the key conversion routine again. + However, as we replace the original key with the converted + key, this would result in a double conversion, which would show + up as a bug if the conversion routine is not idempotent. + Hence the use of HV_DISABLE_UVAR_XKEY. */ + return hv_common(hv, keysv, key, klen, flags, + HV_FETCH_ISSTORE|HV_DISABLE_UVAR_XKEY|return_svp, + val, hash); + /* XXX Surely that could leak if the fetch-was-store fails? + Just like the hv_fetch. */ + } } /* Welcome to hv_store... */ if (!HvARRAY(hv)) { - /* Not sure if we can get here. I think the only case of oentry being - NULL is for %ENV with dynamic env fetch. But that should disappear - with magic in the previous code. */ - char *array; - Newxz(array, - PERL_HV_ARRAY_ALLOC_BYTES(xhv->xhv_max+1 /* HvMAX(hv)+1 */), - char); - HvARRAY(hv) = (HE**)array; + /* Not sure if we can get here. I think the only case of oentry being + NULL is for %ENV with dynamic env fetch. But that should disappear + with magic in the previous code. */ + char *array; + Newxz(array, + PERL_HV_ARRAY_ALLOC_BYTES(xhv->xhv_max+1 /* HvMAX(hv)+1 */), + char); + HvARRAY(hv) = (HE**)array; } oentry = &(HvARRAY(hv))[hash & (I32) xhv->xhv_max]; @@ -823,17 +828,17 @@ /* share_hek_flags will do the free for us. This might be considered bad API design. */ if (HvSHAREKEYS(hv)) - HeKEY_hek(entry) = share_hek_flags(key, klen, hash, flags); + HeKEY_hek(entry) = share_hek_flags(key, klen, hash, flags); else if (hv == PL_strtab) { - /* PL_strtab is usually the only hash without HvSHAREKEYS, so putting - this test here is cheap */ - if (flags & HVhek_FREEKEY) - Safefree(key); - Perl_croak(aTHX_ S_strtab_error, - action & HV_FETCH_LVALUE ? "fetch" : "store"); + /* PL_strtab is usually the only hash without HvSHAREKEYS, so putting + this test here is cheap */ + if (flags & HVhek_FREEKEY) + Safefree(key); + Perl_croak(aTHX_ S_strtab_error, + action & HV_FETCH_LVALUE ? "fetch" : "store"); } else /* gotta do the real thing */ - HeKEY_hek(entry) = save_hek_flags(key, klen, hash, flags); + HeKEY_hek(entry) = save_hek_flags(key, klen, hash, flags); HeVAL(entry) = val; #ifdef PERL_HASH_RANDOMIZE_KEYS @@ -880,9 +885,9 @@ #endif if (val == &PL_sv_placeholder) - HvPLACEHOLDERS(hv)++; + HvPLACEHOLDERS(hv)++; if (masked_flags & HVhek_ENABLEHVKFLAGS) - HvHASKFLAGS_on(hv); + HvHASKFLAGS_on(hv); xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ if ( in_collision && DO_HSPLIT(xhv) ) { @@ -909,7 +914,7 @@ } if (return_svp) { - return entry ? (void *) &HeVAL(entry) : NULL; + return entry ? (void *) &HeVAL(entry) : NULL; } return (void *) entry; } @@ -924,14 +929,14 @@ *needs_copy = FALSE; *needs_store = TRUE; while (mg) { - if (isUPPER(mg->mg_type)) { - *needs_copy = TRUE; - if (mg->mg_type == PERL_MAGIC_tied) { - *needs_store = FALSE; - return; /* We've set all there is to set. */ - } - } - mg = mg->mg_moremagic; + if (isUPPER(mg->mg_type)) { + *needs_copy = TRUE; + if (mg->mg_type == PERL_MAGIC_tied) { + *needs_store = FALSE; + return; /* We've set all there is to set. */ + } + } + mg = mg->mg_moremagic; } } @@ -958,9 +963,9 @@ PERL_ARGS_ASSERT_HV_SCALAR; if (SvRMAGICAL(hv)) { - MAGIC * const mg = mg_find((const SV *)hv, PERL_MAGIC_tied); - if (mg) - return magic_scalarpack(hv, mg); + MAGIC * const mg = mg_find((const SV *)hv, PERL_MAGIC_tied); + if (mg) + return magic_scalarpack(hv, mg); } sv = sv_newmortal(); @@ -1104,9 +1109,8 @@ STATIC SV * S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, - int k_flags, I32 d_flags, U32 hash) + int k_flags, I32 d_flags, U32 hash) { - dVAR; XPVHV* xhv; HE *entry; HE **oentry; @@ -1120,65 +1124,65 @@ HV *stash = NULL; if (SvRMAGICAL(hv)) { - bool needs_copy; - bool needs_store; - hv_magic_check (hv, &needs_copy, &needs_store); - - if (needs_copy) { - SV *sv; - entry = (HE *) hv_common(hv, keysv, key, klen, - k_flags & ~HVhek_FREEKEY, - HV_FETCH_LVALUE|HV_DISABLE_UVAR_XKEY, - NULL, hash); - sv = entry ? HeVAL(entry) : NULL; - if (sv) { - if (SvMAGICAL(sv)) { - mg_clear(sv); - } - if (!needs_store) { - if (mg_find(sv, PERL_MAGIC_tiedelem)) { - /* No longer an element */ - sv_unmagic(sv, PERL_MAGIC_tiedelem); - return sv; - } - return NULL; /* element cannot be deleted */ - } + bool needs_copy; + bool needs_store; + hv_magic_check (hv, &needs_copy, &needs_store); + + if (needs_copy) { + SV *sv; + entry = (HE *) hv_common(hv, keysv, key, klen, + k_flags & ~HVhek_FREEKEY, + HV_FETCH_LVALUE|HV_DISABLE_UVAR_XKEY, + NULL, hash); + sv = entry ? HeVAL(entry) : NULL; + if (sv) { + if (SvMAGICAL(sv)) { + mg_clear(sv); + } + if (!needs_store) { + if (mg_find(sv, PERL_MAGIC_tiedelem)) { + /* No longer an element */ + sv_unmagic(sv, PERL_MAGIC_tiedelem); + return sv; + } + return NULL; /* element cannot be deleted */ + } #ifdef ENV_IS_CASELESS - else if (mg_find((const SV *)hv, PERL_MAGIC_env)) { - /* XXX This code isn't UTF8 clean. */ - keysv = newSVpvn_flags(key, klen, SVs_TEMP); - if (k_flags & HVhek_FREEKEY) { - Safefree(key); - } - key = strupr(SvPVX(keysv)); - is_utf8 = 0; - k_flags = 0; - hash = 0; - } + else if (mg_find((const SV *)hv, PERL_MAGIC_env)) { + /* XXX This code isn't UTF8 clean. */ + keysv = newSVpvn_flags(key, klen, SVs_TEMP); + if (k_flags & HVhek_FREEKEY) { + Safefree(key); + } + key = strupr(SvPVX(keysv)); + is_utf8 = 0; + k_flags = 0; + hash = 0; + } #endif - } - } + } + } } xhv = (XPVHV*)SvANY(hv); if (!HvARRAY(hv)) - return NULL; + return NULL; if (is_utf8 && !(k_flags & HVhek_KEYCANONICAL)) { - const char * const keysave = key; - key = (char*)bytes_from_utf8((U8*)key, &klen, &is_utf8); + const char * const keysave = key; + key = (char*)bytes_from_utf8((U8*)key, &klen, &is_utf8); if (is_utf8) k_flags |= HVhek_UTF8; - else + else k_flags &= ~HVhek_UTF8; if (key != keysave) { - if (k_flags & HVhek_FREEKEY) { - /* This shouldn't happen if our caller does what we expect, - but strictly the API allows it. */ - Safefree(keysave); - } - k_flags |= HVhek_WASUTF8 | HVhek_FREEKEY; - } + if (k_flags & HVhek_FREEKEY) { + /* This shouldn't happen if our caller does what we expect, + but strictly the API allows it. */ + Safefree(keysave); + } + k_flags |= HVhek_WASUTF8 | HVhek_FREEKEY; + } HvHASKFLAGS_on(MUTABLE_SV(hv)); } @@ -1226,66 +1230,66 @@ } for (; entry; oentry = &HeNEXT(entry), entry = *oentry) { - if (HeHASH(entry) != hash) /* strings can't be equal */ - continue; - if (HeKLEN(entry) != (I32)klen) - continue; - if (memNE(HeKEY(entry),key,klen)) /* is this it? */ - continue; - if ((HeKFLAGS(entry) ^ masked_flags) & HVhek_UTF8) - continue; + if (HeHASH(entry) != hash) /* strings can't be equal */ + continue; + if (HeKLEN(entry) != (I32)klen) + continue; + if (memNE(HeKEY(entry),key,klen)) /* is this it? */ + continue; + if ((HeKFLAGS(entry) ^ masked_flags) & HVhek_UTF8) + continue; found: - if (hv == PL_strtab) { - if (k_flags & HVhek_FREEKEY) - Safefree(key); - Perl_croak(aTHX_ S_strtab_error, "delete"); - } - - /* if placeholder is here, it's already been deleted.... */ - if (HeVAL(entry) == &PL_sv_placeholder) { - if (k_flags & HVhek_FREEKEY) - Safefree(key); - return NULL; - } - if (SvREADONLY(hv) && HeVAL(entry) && SvREADONLY(HeVAL(entry))) { - hv_notallowed(k_flags, key, klen, - "Attempt to delete readonly key '%" SVf "' from" - " a restricted hash"); - } + if (hv == PL_strtab) { + if (k_flags & HVhek_FREEKEY) + Safefree(key); + Perl_croak(aTHX_ S_strtab_error, "delete"); + } + + /* if placeholder is here, it's already been deleted.... */ + if (HeVAL(entry) == &PL_sv_placeholder) { + if (k_flags & HVhek_FREEKEY) + Safefree(key); + return NULL; + } + if (SvREADONLY(hv) && HeVAL(entry) && SvREADONLY(HeVAL(entry))) { + hv_notallowed(k_flags, key, klen, + "Attempt to delete readonly key '%" SVf "' from" + " a restricted hash"); + } if (k_flags & HVhek_FREEKEY) Safefree(key); - /* If this is a stash and the key ends with ::, then someone is - * deleting a package. - */ - if (HeVAL(entry) && HvENAME_get(hv)) { - gv = (GV *)HeVAL(entry); - if (keysv) key = SvPV(keysv, klen); - if (( - (klen > 1 && key[klen-2] == ':' && key[klen-1] == ':') - || - (klen == 1 && key[0] == ':') - ) - && (klen != 6 || hv!=PL_defstash || memNE(key,"main::",6)) - && SvTYPE(gv) == SVt_PVGV && (stash = GvHV((GV *)gv)) - && HvENAME_get(stash)) { - /* A previous version of this code checked that the - * GV was still in the symbol table by fetching the - * GV with its name. That is not necessary (and - * sometimes incorrect), as HvENAME cannot be set - * on hv if it is not in the symtab. */ - mro_changes = 2; - /* Hang on to it for a bit. */ - SvREFCNT_inc_simple_void_NN( - sv_2mortal((SV *)gv) - ); - } - else if (memEQs(key, klen, "ISA") && GvAV(gv)) { + /* If this is a stash and the key ends with ::, then someone is + * deleting a package. + */ + if (HeVAL(entry) && HvENAME_get(hv)) { + gv = (GV *)HeVAL(entry); + if (keysv) key = SvPV(keysv, klen); + if (( + (klen > 1 && key[klen-2] == ':' && key[klen-1] == ':') + || + (klen == 1 && key[0] == ':') + ) + && (klen != 6 || hv!=PL_defstash || memNE(key,"main::",6)) + && SvTYPE(gv) == SVt_PVGV && (stash = GvHV((GV *)gv)) + && HvENAME_get(stash)) { + /* A previous version of this code checked that the + * GV was still in the symbol table by fetching the + * GV with its name. That is not necessary (and + * sometimes incorrect), as HvENAME cannot be set + * on hv if it is not in the symtab. */ + mro_changes = 2; + /* Hang on to it for a bit. */ + SvREFCNT_inc_simple_void_NN( + sv_2mortal((SV *)gv) + ); + } + else if (memEQs(key, klen, "ISA") && GvAV(gv)) { AV *isa = GvAV(gv); MAGIC *mg = mg_find((SV*)isa, PERL_MAGIC_isa); - mro_changes = 1; + mro_changes = 1; if (mg) { if (mg->mg_obj == (SV*)gv) { /* This is the only stash this ISA was used for. @@ -1348,63 +1352,63 @@ } } } - } + } - sv = d_flags & G_DISCARD ? HeVAL(entry) : sv_2mortal(HeVAL(entry)); - HeVAL(entry) = &PL_sv_placeholder; - if (sv) { - /* deletion of method from stash */ - if (isGV(sv) && isGV_with_GP(sv) && GvCVu(sv) - && HvENAME_get(hv)) - mro_method_changed_in(hv); - } - - /* - * If a restricted hash, rather than really deleting the entry, put - * a placeholder there. This marks the key as being "approved", so - * we can still access via not-really-existing key without raising - * an error. - */ - if (SvREADONLY(hv)) - /* We'll be saving this slot, so the number of allocated keys - * doesn't go down, but the number placeholders goes up */ - HvPLACEHOLDERS(hv)++; - else { - *oentry = HeNEXT(entry); - if (SvOOK(hv) && entry == HvAUX(hv)->xhv_eiter /* HvEITER(hv) */) - HvLAZYDEL_on(hv); - else { - if (SvOOK(hv) && HvLAZYDEL(hv) && - entry == HeNEXT(HvAUX(hv)->xhv_eiter)) - HeNEXT(HvAUX(hv)->xhv_eiter) = HeNEXT(entry); - hv_free_ent(hv, entry); - } - xhv->xhv_keys--; /* HvTOTALKEYS(hv)-- */ - if (xhv->xhv_keys == 0) - HvHASKFLAGS_off(hv); - } - - if (d_flags & G_DISCARD) { - SvREFCNT_dec(sv); - sv = NULL; - } - - if (mro_changes == 1) mro_isa_changed_in(hv); - else if (mro_changes == 2) - mro_package_moved(NULL, stash, gv, 1); + sv = d_flags & G_DISCARD ? HeVAL(entry) : sv_2mortal(HeVAL(entry)); + HeVAL(entry) = &PL_sv_placeholder; + if (sv) { + /* deletion of method from stash */ + if (isGV(sv) && isGV_with_GP(sv) && GvCVu(sv) + && HvENAME_get(hv)) + mro_method_changed_in(hv); + } - return sv; + /* + * If a restricted hash, rather than really deleting the entry, put + * a placeholder there. This marks the key as being "approved", so + * we can still access via not-really-existing key without raising + * an error. + */ + if (SvREADONLY(hv)) + /* We'll be saving this slot, so the number of allocated keys + * doesn't go down, but the number placeholders goes up */ + HvPLACEHOLDERS(hv)++; + else { + *oentry = HeNEXT(entry); + if (SvOOK(hv) && entry == HvAUX(hv)->xhv_eiter /* HvEITER(hv) */) + HvLAZYDEL_on(hv); + else { + if (SvOOK(hv) && HvLAZYDEL(hv) && + entry == HeNEXT(HvAUX(hv)->xhv_eiter)) + HeNEXT(HvAUX(hv)->xhv_eiter) = HeNEXT(entry); + hv_free_ent(hv, entry); + } + xhv->xhv_keys--; /* HvTOTALKEYS(hv)-- */ + if (xhv->xhv_keys == 0) + HvHASKFLAGS_off(hv); + } + + if (d_flags & G_DISCARD) { + SvREFCNT_dec(sv); + sv = NULL; + } + + if (mro_changes == 1) mro_isa_changed_in(hv); + else if (mro_changes == 2) + mro_package_moved(NULL, stash, gv, 1); + + return sv; } not_found: if (SvREADONLY(hv)) { - hv_notallowed(k_flags, key, klen, - "Attempt to delete disallowed key '%" SVf "' from" - " a restricted hash"); + hv_notallowed(k_flags, key, klen, + "Attempt to delete disallowed key '%" SVf "' from" + " a restricted hash"); } if (k_flags & HVhek_FREEKEY) - Safefree(key); + Safefree(key); return NULL; } @@ -1426,6 +1430,8 @@ ); PERL_ARGS_ASSERT_HSPLIT; + if (newsize > MAX_BUCKET_MAX+1) + return; PL_nomemok = TRUE; Renew(a, PERL_HV_ARRAY_ALLOC_BYTES(newsize) @@ -1485,15 +1491,15 @@ newsize--; aep = (HE**)a; do { - HE **oentry = aep + i; - HE *entry = aep[i]; + HE **oentry = aep + i; + HE *entry = aep[i]; - if (!entry) /* non-existent */ - continue; - do { + if (!entry) /* non-existent */ + continue; + do { U32 j = (HeHASH(entry) & newsize); - if (j != (U32)i) { - *oentry = HeNEXT(entry); + if (j != (U32)i) { + *oentry = HeNEXT(entry); #ifdef PERL_HASH_RANDOMIZE_KEYS /* if the target cell is empty or PL_HASH_RAND_BITS_ENABLED is false * insert to top, otherwise rotate the bucket rand 1 bit, @@ -1519,12 +1525,12 @@ HeNEXT(entry) = aep[j]; aep[j] = entry; } - } - else { - oentry = &HeNEXT(entry); - } - entry = *oentry; - } while (entry); + } + else { + oentry = &HeNEXT(entry); + } + entry = *oentry; + } while (entry); } while (i++ < oldsize); } @@ -1542,7 +1548,7 @@ wantsize = (I32) newmax; /* possible truncation here */ if (wantsize != newmax) - return; + return; wantsize= wantsize + (wantsize >> 1); /* wantsize *= 1.5 */ if (wantsize < newmax) /* overflow detection */ @@ -1590,81 +1596,80 @@ HV * Perl_newHVhv(pTHX_ HV *ohv) { - dVAR; HV * const hv = newHV(); STRLEN hv_max; if (!ohv || (!HvTOTALKEYS(ohv) && !SvMAGICAL((const SV *)ohv))) - return hv; + return hv; hv_max = HvMAX(ohv); if (!SvMAGICAL((const SV *)ohv)) { - /* It's an ordinary hash, so copy it fast. AMS 20010804 */ - STRLEN i; - const bool shared = !!HvSHAREKEYS(ohv); - HE **ents, ** const oents = (HE **)HvARRAY(ohv); - char *a; - Newx(a, PERL_HV_ARRAY_ALLOC_BYTES(hv_max+1), char); - ents = (HE**)a; - - /* In each bucket... */ - for (i = 0; i <= hv_max; i++) { - HE *prev = NULL; - HE *oent = oents[i]; - - if (!oent) { - ents[i] = NULL; - continue; - } - - /* Copy the linked list of entries. */ - for (; oent; oent = HeNEXT(oent)) { - const U32 hash = HeHASH(oent); - const char * const key = HeKEY(oent); - const STRLEN len = HeKLEN(oent); - const int flags = HeKFLAGS(oent); - HE * const ent = new_HE(); - SV *const val = HeVAL(oent); + /* It's an ordinary hash, so copy it fast. AMS 20010804 */ + STRLEN i; + const bool shared = !!HvSHAREKEYS(ohv); + HE **ents, ** const oents = (HE **)HvARRAY(ohv); + char *a; + Newx(a, PERL_HV_ARRAY_ALLOC_BYTES(hv_max+1), char); + ents = (HE**)a; + + /* In each bucket... */ + for (i = 0; i <= hv_max; i++) { + HE *prev = NULL; + HE *oent = oents[i]; + + if (!oent) { + ents[i] = NULL; + continue; + } - HeVAL(ent) = SvIMMORTAL(val) ? val : newSVsv(val); - HeKEY_hek(ent) + /* Copy the linked list of entries. */ + for (; oent; oent = HeNEXT(oent)) { + const U32 hash = HeHASH(oent); + const char * const key = HeKEY(oent); + const STRLEN len = HeKLEN(oent); + const int flags = HeKFLAGS(oent); + HE * const ent = new_HE(); + SV *const val = HeVAL(oent); + + HeVAL(ent) = SvIMMORTAL(val) ? val : newSVsv(val); + HeKEY_hek(ent) = shared ? share_hek_flags(key, len, hash, flags) : save_hek_flags(key, len, hash, flags); - if (prev) - HeNEXT(prev) = ent; - else - ents[i] = ent; - prev = ent; - HeNEXT(ent) = NULL; - } - } - - HvMAX(hv) = hv_max; - HvTOTALKEYS(hv) = HvTOTALKEYS(ohv); - HvARRAY(hv) = ents; + if (prev) + HeNEXT(prev) = ent; + else + ents[i] = ent; + prev = ent; + HeNEXT(ent) = NULL; + } + } + + HvMAX(hv) = hv_max; + HvTOTALKEYS(hv) = HvTOTALKEYS(ohv); + HvARRAY(hv) = ents; } /* not magical */ else { - /* Iterate over ohv, copying keys and values one at a time. */ - HE *entry; - const I32 riter = HvRITER_get(ohv); - HE * const eiter = HvEITER_get(ohv); + /* Iterate over ohv, copying keys and values one at a time. */ + HE *entry; + const I32 riter = HvRITER_get(ohv); + HE * const eiter = HvEITER_get(ohv); STRLEN hv_keys = HvTOTALKEYS(ohv); HV_SET_MAX_ADJUSTED_FOR_KEYS(hv,hv_max,hv_keys); - hv_iterinit(ohv); - while ((entry = hv_iternext_flags(ohv, 0))) { - SV *val = hv_iterval(ohv,entry); - SV * const keysv = HeSVKEY(entry); - val = SvIMMORTAL(val) ? val : newSVsv(val); - if (keysv) - (void)hv_store_ent(hv, keysv, val, 0); - else - (void)hv_store_flags(hv, HeKEY(entry), HeKLEN(entry), val, - HeHASH(entry), HeKFLAGS(entry)); - } - HvRITER_set(ohv, riter); - HvEITER_set(ohv, eiter); + hv_iterinit(ohv); + while ((entry = hv_iternext_flags(ohv, 0))) { + SV *val = hv_iterval(ohv,entry); + SV * const keysv = HeSVKEY(entry); + val = SvIMMORTAL(val) ? val : newSVsv(val); + if (keysv) + (void)hv_store_ent(hv, keysv, val, 0); + else + (void)hv_store_flags(hv, HeKEY(entry), HeKLEN(entry), val, + HeHASH(entry), HeKFLAGS(entry)); + } + HvRITER_set(ohv, riter); + HvEITER_set(ohv, eiter); } return hv; @@ -1688,37 +1693,37 @@ HV * const hv = newHV(); if (ohv) { - STRLEN hv_max = HvMAX(ohv); + STRLEN hv_max = HvMAX(ohv); STRLEN hv_keys = HvTOTALKEYS(ohv); - HE *entry; - const I32 riter = HvRITER_get(ohv); - HE * const eiter = HvEITER_get(ohv); + HE *entry; + const I32 riter = HvRITER_get(ohv); + HE * const eiter = HvEITER_get(ohv); - ENTER; - SAVEFREESV(hv); + ENTER; + SAVEFREESV(hv); HV_SET_MAX_ADJUSTED_FOR_KEYS(hv,hv_max,hv_keys); - hv_iterinit(ohv); - while ((entry = hv_iternext_flags(ohv, 0))) { - SV *const sv = newSVsv(hv_iterval(ohv,entry)); - SV *heksv = HeSVKEY(entry); - if (!heksv && sv) heksv = newSVhek(HeKEY_hek(entry)); - if (sv) sv_magic(sv, NULL, PERL_MAGIC_hintselem, - (char *)heksv, HEf_SVKEY); - if (heksv == HeSVKEY(entry)) - (void)hv_store_ent(hv, heksv, sv, 0); - else { - (void)hv_common(hv, heksv, HeKEY(entry), HeKLEN(entry), - HeKFLAGS(entry), HV_FETCH_ISSTORE|HV_FETCH_JUST_SV, sv, HeHASH(entry)); - SvREFCNT_dec_NN(heksv); - } - } - HvRITER_set(ohv, riter); - HvEITER_set(ohv, eiter); + hv_iterinit(ohv); + while ((entry = hv_iternext_flags(ohv, 0))) { + SV *const sv = newSVsv(hv_iterval(ohv,entry)); + SV *heksv = HeSVKEY(entry); + if (!heksv && sv) heksv = newSVhek(HeKEY_hek(entry)); + if (sv) sv_magic(sv, NULL, PERL_MAGIC_hintselem, + (char *)heksv, HEf_SVKEY); + if (heksv == HeSVKEY(entry)) + (void)hv_store_ent(hv, heksv, sv, 0); + else { + (void)hv_common(hv, heksv, HeKEY(entry), HeKLEN(entry), + HeKFLAGS(entry), HV_FETCH_ISSTORE|HV_FETCH_JUST_SV, sv, HeHASH(entry)); + SvREFCNT_dec_NN(heksv); + } + } + HvRITER_set(ohv, riter); + HvEITER_set(ohv, eiter); - SvREFCNT_inc_simple_void_NN(hv); - LEAVE; + SvREFCNT_inc_simple_void_NN(hv); + LEAVE; } hv_magic(hv, NULL, PERL_MAGIC_hints); return hv; @@ -1735,13 +1740,13 @@ val = HeVAL(entry); if (HeKLEN(entry) == HEf_SVKEY) { - SvREFCNT_dec(HeKEY_sv(entry)); - Safefree(HeKEY_hek(entry)); + SvREFCNT_dec(HeKEY_sv(entry)); + Safefree(HeKEY_hek(entry)); } else if (HvSHAREKEYS(hv)) - unshare_hek(HeKEY_hek(entry)); + unshare_hek(HeKEY_hek(entry)); else - Safefree(HeKEY_hek(entry)); + Safefree(HeKEY_hek(entry)); del_HE(entry); return val; } @@ -1755,7 +1760,7 @@ PERL_ARGS_ASSERT_HV_FREE_ENT; if (!entry) - return; + return; val = hv_free_ent_ret(hv, entry); SvREFCNT_dec(val); } @@ -1767,11 +1772,11 @@ PERL_ARGS_ASSERT_HV_DELAYFREE_ENT; if (!entry) - return; + return; /* SvREFCNT_inc to counter the SvREFCNT_dec in hv_free_ent */ sv_2mortal(SvREFCNT_inc(HeVAL(entry))); /* free between statements */ if (HeKLEN(entry) == HEf_SVKEY) { - sv_2mortal(SvREFCNT_inc(HeKEY_sv(entry))); + sv_2mortal(SvREFCNT_inc(HeKEY_sv(entry))); } hv_free_ent(hv, entry); } @@ -1779,7 +1784,7 @@ /* =for apidoc hv_clear -Frees the all the elements of a hash, leaving it empty. +Frees all the elements of a hash, leaving it empty. The XS equivalent of C<%hash = ()>. See also L. See L for a note about the hash possibly being invalid on @@ -1791,12 +1796,11 @@ void Perl_hv_clear(pTHX_ HV *hv) { - dVAR; SSize_t orig_ix; XPVHV* xhv; if (!hv) - return; + return; DEBUG_A(Perl_hv_assert(aTHX_ hv)); @@ -1807,41 +1811,41 @@ PL_tmps_stack[++PL_tmps_ix] = SvREFCNT_inc_simple_NN(hv); orig_ix = PL_tmps_ix; if (SvREADONLY(hv) && HvARRAY(hv) != NULL) { - /* restricted hash: convert all keys to placeholders */ - STRLEN i; - for (i = 0; i <= xhv->xhv_max; i++) { - HE *entry = (HvARRAY(hv))[i]; - for (; entry; entry = HeNEXT(entry)) { - /* not already placeholder */ - if (HeVAL(entry) != &PL_sv_placeholder) { - if (HeVAL(entry)) { - if (SvREADONLY(HeVAL(entry))) { - SV* const keysv = hv_iterkeysv(entry); - Perl_croak_nocontext( - "Attempt to delete readonly key '%" SVf "' from a restricted hash", - (void*)keysv); - } - SvREFCNT_dec_NN(HeVAL(entry)); - } - HeVAL(entry) = &PL_sv_placeholder; - HvPLACEHOLDERS(hv)++; - } - } - } + /* restricted hash: convert all keys to placeholders */ + STRLEN i; + for (i = 0; i <= xhv->xhv_max; i++) { + HE *entry = (HvARRAY(hv))[i]; + for (; entry; entry = HeNEXT(entry)) { + /* not already placeholder */ + if (HeVAL(entry) != &PL_sv_placeholder) { + if (HeVAL(entry)) { + if (SvREADONLY(HeVAL(entry))) { + SV* const keysv = hv_iterkeysv(entry); + Perl_croak_nocontext( + "Attempt to delete readonly key '%" SVf "' from a restricted hash", + (void*)keysv); + } + SvREFCNT_dec_NN(HeVAL(entry)); + } + HeVAL(entry) = &PL_sv_placeholder; + HvPLACEHOLDERS(hv)++; + } + } + } } else { - hv_free_entries(hv); - HvPLACEHOLDERS_set(hv, 0); + hv_free_entries(hv); + HvPLACEHOLDERS_set(hv, 0); - if (SvRMAGICAL(hv)) - mg_clear(MUTABLE_SV(hv)); + if (SvRMAGICAL(hv)) + mg_clear(MUTABLE_SV(hv)); - HvHASKFLAGS_off(hv); + HvHASKFLAGS_off(hv); } if (SvOOK(hv)) { if(HvENAME_get(hv)) mro_isa_changed_in(hv); - HvEITER_set(hv, NULL); + HvEITER_set(hv, NULL); } /* disarm hv's premature free guard */ if (LIKELY(PL_tmps_ix == orig_ix)) @@ -1874,52 +1878,51 @@ PERL_ARGS_ASSERT_HV_CLEAR_PLACEHOLDERS; if (items) - clear_placeholders(hv, items); + clear_placeholders(hv, items); } static void S_clear_placeholders(pTHX_ HV *hv, U32 items) { - dVAR; I32 i; PERL_ARGS_ASSERT_CLEAR_PLACEHOLDERS; if (items == 0) - return; + return; i = HvMAX(hv); do { - /* Loop down the linked list heads */ - HE **oentry = &(HvARRAY(hv))[i]; - HE *entry; - - while ((entry = *oentry)) { - if (HeVAL(entry) == &PL_sv_placeholder) { - *oentry = HeNEXT(entry); - if (entry == HvEITER_get(hv)) - HvLAZYDEL_on(hv); - else { - if (SvOOK(hv) && HvLAZYDEL(hv) && - entry == HeNEXT(HvAUX(hv)->xhv_eiter)) - HeNEXT(HvAUX(hv)->xhv_eiter) = HeNEXT(entry); - hv_free_ent(hv, entry); - } - - if (--items == 0) { - /* Finished. */ - I32 placeholders = HvPLACEHOLDERS_get(hv); - HvTOTALKEYS(hv) -= (IV)placeholders; - /* HvUSEDKEYS expanded */ - if ((HvTOTALKEYS(hv) - placeholders) == 0) - HvHASKFLAGS_off(hv); - HvPLACEHOLDERS_set(hv, 0); - return; - } - } else { - oentry = &HeNEXT(entry); - } - } + /* Loop down the linked list heads */ + HE **oentry = &(HvARRAY(hv))[i]; + HE *entry; + + while ((entry = *oentry)) { + if (HeVAL(entry) == &PL_sv_placeholder) { + *oentry = HeNEXT(entry); + if (entry == HvEITER_get(hv)) + HvLAZYDEL_on(hv); + else { + if (SvOOK(hv) && HvLAZYDEL(hv) && + entry == HeNEXT(HvAUX(hv)->xhv_eiter)) + HeNEXT(HvAUX(hv)->xhv_eiter) = HeNEXT(entry); + hv_free_ent(hv, entry); + } + + if (--items == 0) { + /* Finished. */ + I32 placeholders = HvPLACEHOLDERS_get(hv); + HvTOTALKEYS(hv) -= (IV)placeholders; + /* HvUSEDKEYS expanded */ + if ((HvTOTALKEYS(hv) - placeholders) == 0) + HvHASKFLAGS_off(hv); + HvPLACEHOLDERS_set(hv, 0); + return; + } + } else { + oentry = &HeNEXT(entry); + } + } } while (--i >= 0); /* You can't get here, hence assertion should always fail. */ assert (items == 0); @@ -1936,7 +1939,7 @@ PERL_ARGS_ASSERT_HV_FREE_ENTRIES; while ((sv = Perl_hfree_next_entry(aTHX_ hv, &index))||xhv->xhv_keys) { - SvREFCNT_dec(sv); + SvREFCNT_dec(sv); } } @@ -1963,7 +1966,7 @@ PERL_ARGS_ASSERT_HFREE_NEXT_ENTRY; if (SvOOK(hv) && ((iter = HvAUX(hv)))) { - if ((entry = iter->xhv_eiter)) { + if ((entry = iter->xhv_eiter)) { /* the iterator may get resurrected after each * destructor call, so check each time */ if (entry && HvLAZYDEL(hv)) { /* was deleted earlier? */ @@ -1982,31 +1985,31 @@ } if (!((XPVHV*)SvANY(hv))->xhv_keys) - return NULL; + return NULL; array = HvARRAY(hv); assert(array); while ( ! ((entry = array[*indexp])) ) { - if ((*indexp)++ >= HvMAX(hv)) - *indexp = 0; - assert(*indexp != orig_index); + if ((*indexp)++ >= HvMAX(hv)) + *indexp = 0; + assert(*indexp != orig_index); } array[*indexp] = HeNEXT(entry); ((XPVHV*) SvANY(hv))->xhv_keys--; if ( PL_phase != PERL_PHASE_DESTRUCT && HvENAME(hv) - && HeVAL(entry) && isGV(HeVAL(entry)) - && GvHV(HeVAL(entry)) && HvENAME(GvHV(HeVAL(entry))) + && HeVAL(entry) && isGV(HeVAL(entry)) + && GvHV(HeVAL(entry)) && HvENAME(GvHV(HeVAL(entry))) ) { - STRLEN klen; - const char * const key = HePV(entry,klen); - if ((klen > 1 && key[klen-1]==':' && key[klen-2]==':') - || (klen == 1 && key[0] == ':')) { - mro_package_moved( - NULL, GvHV(HeVAL(entry)), - (GV *)HeVAL(entry), 0 - ); - } + STRLEN klen; + const char * const key = HePV(entry,klen); + if ((klen > 1 && key[klen-1]==':' && key[klen-2]==':') + || (klen == 1 && key[0] == ':')) { + mro_package_moved( + NULL, GvHV(HeVAL(entry)), + (GV *)HeVAL(entry), 0 + ); + } } return hv_free_ent_ret(hv, entry); } @@ -2034,7 +2037,7 @@ SSize_t orig_ix = PL_tmps_ix; /* silence compiler warning about unitialized vars */ if (!hv) - return; + return; save = cBOOL(SvREFCNT(hv)); DEBUG_A(Perl_hv_assert(aTHX_ hv)); xhv = (XPVHV*)SvANY(hv); @@ -2053,9 +2056,9 @@ if (PL_stashcache) { DEBUG_o(Perl_deb(aTHX_ "hv_undef_flags clearing PL_stashcache for '%" HEKf "'\n", HEKfARG(HvNAME_HEK(hv)))); - (void)hv_deletehek(PL_stashcache, HvNAME_HEK(hv), G_DISCARD); + (void)hv_deletehek(PL_stashcache, HvNAME_HEK(hv), G_DISCARD); } - hv_name_set(hv, NULL, 0, 0); + hv_name_set(hv, NULL, 0, 0); } if (save) { /* avoid hv being freed when calling destructors below */ @@ -2069,12 +2072,12 @@ const char *name; if (HvENAME_get(hv)) { - if (PL_phase != PERL_PHASE_DESTRUCT) - mro_isa_changed_in(hv); + if (PL_phase != PERL_PHASE_DESTRUCT) + mro_isa_changed_in(hv); if (PL_stashcache) { DEBUG_o(Perl_deb(aTHX_ "hv_undef_flags clearing PL_stashcache for effective name '%" HEKf "'\n", HEKfARG(HvENAME_HEK(hv)))); - (void)hv_deletehek(PL_stashcache, HvENAME_HEK(hv), G_DISCARD); + (void)hv_deletehek(PL_stashcache, HvENAME_HEK(hv), G_DISCARD); } } @@ -2085,41 +2088,41 @@ if (name && PL_stashcache) { DEBUG_o(Perl_deb(aTHX_ "hv_undef_flags clearing PL_stashcache for name '%" HEKf "'\n", HEKfARG(HvNAME_HEK(hv)))); - (void)hv_deletehek(PL_stashcache, HvNAME_HEK(hv), G_DISCARD); + (void)hv_deletehek(PL_stashcache, HvNAME_HEK(hv), G_DISCARD); } - hv_name_set(hv, NULL, 0, flags); + hv_name_set(hv, NULL, 0, flags); } if((meta = HvAUX(hv)->xhv_mro_meta)) { - if (meta->mro_linear_all) { - SvREFCNT_dec_NN(meta->mro_linear_all); - /* mro_linear_current is just acting as a shortcut pointer, - hence the else. */ - } - else - /* Only the current MRO is stored, so this owns the data. - */ - SvREFCNT_dec(meta->mro_linear_current); - SvREFCNT_dec(meta->mro_nextmethod); - SvREFCNT_dec(meta->isa); - SvREFCNT_dec(meta->super); - Safefree(meta); - HvAUX(hv)->xhv_mro_meta = NULL; + if (meta->mro_linear_all) { + SvREFCNT_dec_NN(meta->mro_linear_all); + /* mro_linear_current is just acting as a shortcut pointer, + hence the else. */ + } + else + /* Only the current MRO is stored, so this owns the data. + */ + SvREFCNT_dec(meta->mro_linear_current); + SvREFCNT_dec(meta->mro_nextmethod); + SvREFCNT_dec(meta->isa); + SvREFCNT_dec(meta->super); + Safefree(meta); + HvAUX(hv)->xhv_mro_meta = NULL; } if (!HvAUX(hv)->xhv_name_u.xhvnameu_name && ! HvAUX(hv)->xhv_backreferences) - SvFLAGS(hv) &= ~SVf_OOK; + SvFLAGS(hv) &= ~SVf_OOK; } if (!SvOOK(hv)) { - Safefree(HvARRAY(hv)); + Safefree(HvARRAY(hv)); xhv->xhv_max = PERL_HASH_DEFAULT_HvMAX; /* HvMAX(hv) = 7 (it's a normal hash) */ - HvARRAY(hv) = 0; + HvARRAY(hv) = 0; } /* if we're freeing the HV, the SvMAGIC field has been reused for * other purposes, and so there can't be any placeholder magic */ if (SvREFCNT(hv)) - HvPLACEHOLDERS_set(hv, 0); + HvPLACEHOLDERS_set(hv, 0); if (SvRMAGICAL(hv)) - mg_clear(MUTABLE_SV(hv)); + mg_clear(MUTABLE_SV(hv)); if (save) { /* disarm hv's premature free guard */ @@ -2167,13 +2170,13 @@ * I would have thought counting up was better. * - Yves */ - HE *const *const last = ents + HvMAX(hv); - count = last + 1 - ents; + HE *const *const last = ents + HvMAX(hv); + count = last + 1 - ents; - do { - if (!*ents) - --count; - } while (++ents <= last); + do { + if (!*ents) + --count; + } while (++ents <= last); } return count; } @@ -2284,20 +2287,20 @@ PERL_ARGS_ASSERT_HV_ITERINIT; if (SvOOK(hv)) { - struct xpvhv_aux * iter = HvAUX(hv); - HE * const entry = iter->xhv_eiter; /* HvEITER(hv) */ - if (entry && HvLAZYDEL(hv)) { /* was deleted earlier? */ - HvLAZYDEL_off(hv); - hv_free_ent(hv, entry); - } - iter = HvAUX(hv); /* may have been reallocated */ - iter->xhv_riter = -1; /* HvRITER(hv) = -1 */ - iter->xhv_eiter = NULL; /* HvEITER(hv) = NULL */ + struct xpvhv_aux * iter = HvAUX(hv); + HE * const entry = iter->xhv_eiter; /* HvEITER(hv) */ + if (entry && HvLAZYDEL(hv)) { /* was deleted earlier? */ + HvLAZYDEL_off(hv); + hv_free_ent(hv, entry); + } + iter = HvAUX(hv); /* may have been reallocated */ + iter->xhv_riter = -1; /* HvRITER(hv) = -1 */ + iter->xhv_eiter = NULL; /* HvEITER(hv) = NULL */ #ifdef PERL_HASH_RANDOMIZE_KEYS iter->xhv_last_rand = iter->xhv_rand; #endif } else { - hv_auxinit(hv); + hv_auxinit(hv); } /* note this includes placeholders! */ @@ -2331,12 +2334,12 @@ PERL_ARGS_ASSERT_HV_RITER_SET; if (SvOOK(hv)) { - iter = HvAUX(hv); + iter = HvAUX(hv); } else { - if (riter == -1) - return; + if (riter == -1) + return; - iter = hv_auxinit(hv); + iter = hv_auxinit(hv); } iter->xhv_riter = riter; } @@ -2366,14 +2369,14 @@ PERL_ARGS_ASSERT_HV_EITER_SET; if (SvOOK(hv)) { - iter = HvAUX(hv); + iter = HvAUX(hv); } else { - /* 0 is the default so don't go malloc()ing a new structure just to - hold 0. */ - if (!eiter) - return; + /* 0 is the default so don't go malloc()ing a new structure just to + hold 0. */ + if (!eiter) + return; - iter = hv_auxinit(hv); + iter = hv_auxinit(hv); } iter->xhv_eiter = eiter; } @@ -2381,7 +2384,6 @@ void Perl_hv_name_set(pTHX_ HV *hv, const char *name, U32 len, U32 flags) { - dVAR; struct xpvhv_aux *iter; U32 hash; HEK **spot; @@ -2389,64 +2391,64 @@ PERL_ARGS_ASSERT_HV_NAME_SET; if (len > I32_MAX) - Perl_croak(aTHX_ "panic: hv name too long (%" UVuf ")", (UV) len); + Perl_croak(aTHX_ "panic: hv name too long (%" UVuf ")", (UV) len); if (SvOOK(hv)) { - iter = HvAUX(hv); - if (iter->xhv_name_u.xhvnameu_name) { - if(iter->xhv_name_count) { - if(flags & HV_NAME_SETALL) { - HEK ** const this_name = HvAUX(hv)->xhv_name_u.xhvnameu_names; - HEK **hekp = this_name + ( - iter->xhv_name_count < 0 - ? -iter->xhv_name_count - : iter->xhv_name_count - ); - while(hekp-- > this_name+1) - unshare_hek_or_pvn(*hekp, 0, 0, 0); - /* The first elem may be null. */ - if(*this_name) unshare_hek_or_pvn(*this_name, 0, 0, 0); - Safefree(this_name); + iter = HvAUX(hv); + if (iter->xhv_name_u.xhvnameu_name) { + if(iter->xhv_name_count) { + if(flags & HV_NAME_SETALL) { + HEK ** const this_name = HvAUX(hv)->xhv_name_u.xhvnameu_names; + HEK **hekp = this_name + ( + iter->xhv_name_count < 0 + ? -iter->xhv_name_count + : iter->xhv_name_count + ); + while(hekp-- > this_name+1) + unshare_hek_or_pvn(*hekp, 0, 0, 0); + /* The first elem may be null. */ + if(*this_name) unshare_hek_or_pvn(*this_name, 0, 0, 0); + Safefree(this_name); iter = HvAUX(hv); /* may been realloced */ - spot = &iter->xhv_name_u.xhvnameu_name; - iter->xhv_name_count = 0; - } - else { - if(iter->xhv_name_count > 0) { - /* shift some things over */ - Renew( - iter->xhv_name_u.xhvnameu_names, iter->xhv_name_count + 1, HEK * - ); - spot = iter->xhv_name_u.xhvnameu_names; - spot[iter->xhv_name_count] = spot[1]; - spot[1] = spot[0]; - iter->xhv_name_count = -(iter->xhv_name_count + 1); - } - else if(*(spot = iter->xhv_name_u.xhvnameu_names)) { - unshare_hek_or_pvn(*spot, 0, 0, 0); - } - } - } - else if (flags & HV_NAME_SETALL) { - unshare_hek_or_pvn(iter->xhv_name_u.xhvnameu_name, 0, 0, 0); + spot = &iter->xhv_name_u.xhvnameu_name; + iter->xhv_name_count = 0; + } + else { + if(iter->xhv_name_count > 0) { + /* shift some things over */ + Renew( + iter->xhv_name_u.xhvnameu_names, iter->xhv_name_count + 1, HEK * + ); + spot = iter->xhv_name_u.xhvnameu_names; + spot[iter->xhv_name_count] = spot[1]; + spot[1] = spot[0]; + iter->xhv_name_count = -(iter->xhv_name_count + 1); + } + else if(*(spot = iter->xhv_name_u.xhvnameu_names)) { + unshare_hek_or_pvn(*spot, 0, 0, 0); + } + } + } + else if (flags & HV_NAME_SETALL) { + unshare_hek_or_pvn(iter->xhv_name_u.xhvnameu_name, 0, 0, 0); iter = HvAUX(hv); /* may been realloced */ - spot = &iter->xhv_name_u.xhvnameu_name; - } - else { - HEK * const existing_name = iter->xhv_name_u.xhvnameu_name; - Newx(iter->xhv_name_u.xhvnameu_names, 2, HEK *); - iter->xhv_name_count = -2; - spot = iter->xhv_name_u.xhvnameu_names; - spot[1] = existing_name; - } - } - else { spot = &iter->xhv_name_u.xhvnameu_name; iter->xhv_name_count = 0; } + spot = &iter->xhv_name_u.xhvnameu_name; + } + else { + HEK * const existing_name = iter->xhv_name_u.xhvnameu_name; + Newx(iter->xhv_name_u.xhvnameu_names, 2, HEK *); + iter->xhv_name_count = -2; + spot = iter->xhv_name_u.xhvnameu_names; + spot[1] = existing_name; + } + } + else { spot = &iter->xhv_name_u.xhvnameu_name; iter->xhv_name_count = 0; } } else { - if (name == 0) - return; + if (name == 0) + return; - iter = hv_auxinit(hv); - spot = &iter->xhv_name_u.xhvnameu_name; + iter = hv_auxinit(hv); + spot = &iter->xhv_name_u.xhvnameu_name; } PERL_HASH(hash, name, len); *spot = name ? share_hek(name, flags & SVf_UTF8 ? -(I32)len : (I32)len, hash) : NULL; @@ -2463,11 +2465,11 @@ if (flags & SVf_UTF8) return (bytes_cmp_utf8( (const U8*)HEK_KEY(hek), HEK_LEN(hek), - (const U8*)pv, pvlen) == 0); + (const U8*)pv, pvlen) == 0); else return (bytes_cmp_utf8( (const U8*)pv, pvlen, - (const U8*)HEK_KEY(hek), HEK_LEN(hek)) == 0); + (const U8*)HEK_KEY(hek), HEK_LEN(hek)) == 0); } else return HEK_LEN(hek) == pvlen && ((HEK_KEY(hek) == pv) @@ -2489,52 +2491,51 @@ void Perl_hv_ename_add(pTHX_ HV *hv, const char *name, U32 len, U32 flags) { - dVAR; struct xpvhv_aux *aux = SvOOK(hv) ? HvAUX(hv) : hv_auxinit(hv); U32 hash; PERL_ARGS_ASSERT_HV_ENAME_ADD; if (len > I32_MAX) - Perl_croak(aTHX_ "panic: hv name too long (%" UVuf ")", (UV) len); + Perl_croak(aTHX_ "panic: hv name too long (%" UVuf ")", (UV) len); PERL_HASH(hash, name, len); if (aux->xhv_name_count) { - I32 count = aux->xhv_name_count; - HEK ** const xhv_name = aux->xhv_name_u.xhvnameu_names + (count<0); - HEK **hekp = xhv_name + (count < 0 ? -count - 1 : count); - while (hekp-- > xhv_name) - { - assert(*hekp); - if ( + I32 count = aux->xhv_name_count; + HEK ** const xhv_name = aux->xhv_name_u.xhvnameu_names + (count<0); + HEK **hekp = xhv_name + (count < 0 ? -count - 1 : count); + while (hekp-- > xhv_name) + { + assert(*hekp); + if ( (HEK_UTF8(*hekp) || (flags & SVf_UTF8)) ? hek_eq_pvn_flags(aTHX_ *hekp, name, (I32)len, flags) - : (HEK_LEN(*hekp) == (I32)len && memEQ(HEK_KEY(*hekp), name, len)) + : (HEK_LEN(*hekp) == (I32)len && memEQ(HEK_KEY(*hekp), name, len)) ) { - if (hekp == xhv_name && count < 0) - aux->xhv_name_count = -count; - return; - } - } - if (count < 0) aux->xhv_name_count--, count = -count; - else aux->xhv_name_count++; - Renew(aux->xhv_name_u.xhvnameu_names, count + 1, HEK *); - (aux->xhv_name_u.xhvnameu_names)[count] = share_hek(name, (flags & SVf_UTF8 ? -(I32)len : (I32)len), hash); + if (hekp == xhv_name && count < 0) + aux->xhv_name_count = -count; + return; + } + } + if (count < 0) aux->xhv_name_count--, count = -count; + else aux->xhv_name_count++; + Renew(aux->xhv_name_u.xhvnameu_names, count + 1, HEK *); + (aux->xhv_name_u.xhvnameu_names)[count] = share_hek(name, (flags & SVf_UTF8 ? -(I32)len : (I32)len), hash); } else { - HEK *existing_name = aux->xhv_name_u.xhvnameu_name; - if ( - existing_name && ( + HEK *existing_name = aux->xhv_name_u.xhvnameu_name; + if ( + existing_name && ( (HEK_UTF8(existing_name) || (flags & SVf_UTF8)) ? hek_eq_pvn_flags(aTHX_ existing_name, name, (I32)len, flags) - : (HEK_LEN(existing_name) == (I32)len && memEQ(HEK_KEY(existing_name), name, len)) - ) - ) return; - Newx(aux->xhv_name_u.xhvnameu_names, 2, HEK *); - aux->xhv_name_count = existing_name ? 2 : -2; - *aux->xhv_name_u.xhvnameu_names = existing_name; - (aux->xhv_name_u.xhvnameu_names)[1] = share_hek(name, (flags & SVf_UTF8 ? -(I32)len : (I32)len), hash); + : (HEK_LEN(existing_name) == (I32)len && memEQ(HEK_KEY(existing_name), name, len)) + ) + ) return; + Newx(aux->xhv_name_u.xhvnameu_names, 2, HEK *); + aux->xhv_name_count = existing_name ? 2 : -2; + *aux->xhv_name_u.xhvnameu_names = existing_name; + (aux->xhv_name_u.xhvnameu_names)[1] = share_hek(name, (flags & SVf_UTF8 ? -(I32)len : (I32)len), hash); } } @@ -2558,7 +2559,7 @@ PERL_ARGS_ASSERT_HV_ENAME_DELETE; if (len > I32_MAX) - Perl_croak(aTHX_ "panic: hv name too long (%" UVuf ")", (UV) len); + Perl_croak(aTHX_ "panic: hv name too long (%" UVuf ")", (UV) len); if (!SvOOK(hv)) return; @@ -2566,53 +2567,53 @@ if (!aux->xhv_name_u.xhvnameu_name) return; if (aux->xhv_name_count) { - HEK ** const namep = aux->xhv_name_u.xhvnameu_names; - I32 const count = aux->xhv_name_count; - HEK **victim = namep + (count < 0 ? -count : count); - while (victim-- > namep + 1) - if ( + HEK ** const namep = aux->xhv_name_u.xhvnameu_names; + I32 const count = aux->xhv_name_count; + HEK **victim = namep + (count < 0 ? -count : count); + while (victim-- > namep + 1) + if ( (HEK_UTF8(*victim) || (flags & SVf_UTF8)) ? hek_eq_pvn_flags(aTHX_ *victim, name, (I32)len, flags) - : (HEK_LEN(*victim) == (I32)len && memEQ(HEK_KEY(*victim), name, len)) - ) { - unshare_hek_or_pvn(*victim, 0, 0, 0); + : (HEK_LEN(*victim) == (I32)len && memEQ(HEK_KEY(*victim), name, len)) + ) { + unshare_hek_or_pvn(*victim, 0, 0, 0); aux = HvAUX(hv); /* may been realloced */ - if (count < 0) ++aux->xhv_name_count; - else --aux->xhv_name_count; - if ( - (aux->xhv_name_count == 1 || aux->xhv_name_count == -1) - && !*namep - ) { /* if there are none left */ - Safefree(namep); - aux->xhv_name_u.xhvnameu_names = NULL; - aux->xhv_name_count = 0; - } - else { - /* Move the last one back to fill the empty slot. It - does not matter what order they are in. */ - *victim = *(namep + (count < 0 ? -count : count) - 1); - } - return; - } - if ( - count > 0 && ((HEK_UTF8(*namep) || (flags & SVf_UTF8)) + if (count < 0) ++aux->xhv_name_count; + else --aux->xhv_name_count; + if ( + (aux->xhv_name_count == 1 || aux->xhv_name_count == -1) + && !*namep + ) { /* if there are none left */ + Safefree(namep); + aux->xhv_name_u.xhvnameu_names = NULL; + aux->xhv_name_count = 0; + } + else { + /* Move the last one back to fill the empty slot. It + does not matter what order they are in. */ + *victim = *(namep + (count < 0 ? -count : count) - 1); + } + return; + } + if ( + count > 0 && ((HEK_UTF8(*namep) || (flags & SVf_UTF8)) ? hek_eq_pvn_flags(aTHX_ *namep, name, (I32)len, flags) - : (HEK_LEN(*namep) == (I32)len && memEQ(HEK_KEY(*namep), name, len)) + : (HEK_LEN(*namep) == (I32)len && memEQ(HEK_KEY(*namep), name, len)) ) - ) { - aux->xhv_name_count = -count; - } + ) { + aux->xhv_name_count = -count; + } } else if( (HEK_UTF8(aux->xhv_name_u.xhvnameu_name) || (flags & SVf_UTF8)) ? hek_eq_pvn_flags(aTHX_ aux->xhv_name_u.xhvnameu_name, name, (I32)len, flags) - : (HEK_LEN(aux->xhv_name_u.xhvnameu_name) == (I32)len && + : (HEK_LEN(aux->xhv_name_u.xhvnameu_name) == (I32)len && memEQ(HEK_KEY(aux->xhv_name_u.xhvnameu_name), name, len)) ) { - HEK * const namehek = aux->xhv_name_u.xhvnameu_name; - Newx(aux->xhv_name_u.xhvnameu_names, 1, HEK *); - *aux->xhv_name_u.xhvnameu_names = namehek; - aux->xhv_name_count = -1; + HEK * const namehek = aux->xhv_name_u.xhvnameu_name; + Newx(aux->xhv_name_u.xhvnameu_names, 1, HEK *); + *aux->xhv_name_u.xhvnameu_names = namehek; + aux->xhv_name_count = -1; } } @@ -2633,15 +2634,15 @@ PERL_ARGS_ASSERT_HV_KILL_BACKREFS; if (!SvOOK(hv)) - return; + return; av = HvAUX(hv)->xhv_backreferences; if (av) { - HvAUX(hv)->xhv_backreferences = 0; - Perl_sv_kill_backrefs(aTHX_ MUTABLE_SV(hv), av); - if (SvTYPE(av) == SVt_PVAV) - SvREFCNT_dec_NN(av); + HvAUX(hv)->xhv_backreferences = 0; + Perl_sv_kill_backrefs(aTHX_ MUTABLE_SV(hv), av); + if (SvTYPE(av) == SVt_PVAV) + SvREFCNT_dec_NN(av); } } @@ -2680,7 +2681,6 @@ HE * Perl_hv_iternext_flags(pTHX_ HV *hv, I32 flags) { - dVAR; XPVHV* xhv; HE *entry; HE *oldentry; @@ -2692,21 +2692,21 @@ xhv = (XPVHV*)SvANY(hv); if (!SvOOK(hv)) { - /* Too many things (well, pp_each at least) merrily assume that you can - call hv_iternext without calling hv_iterinit, so we'll have to deal - with it. */ - hv_iterinit(hv); + /* Too many things (well, pp_each at least) merrily assume that you can + call hv_iternext without calling hv_iterinit, so we'll have to deal + with it. */ + hv_iterinit(hv); } iter = HvAUX(hv); oldentry = entry = iter->xhv_eiter; /* HvEITER(hv) */ if (SvMAGICAL(hv) && SvRMAGICAL(hv)) { - if ( ( mg = mg_find((const SV *)hv, PERL_MAGIC_tied) ) ) { + if ( ( mg = mg_find((const SV *)hv, PERL_MAGIC_tied) ) ) { SV * const key = sv_newmortal(); if (entry) { sv_setsv(key, HeSVKEY_force(entry)); SvREFCNT_dec(HeSVKEY(entry)); /* get rid of previous key */ - HeSVKEY_set(entry, NULL); + HeSVKEY_set(entry, NULL); } else { char *k; @@ -2714,7 +2714,7 @@ /* one HE per MAGICAL hash */ iter->xhv_eiter = entry = new_HE(); /* HvEITER(hv) = new_HE() */ - HvLAZYDEL_on(hv); /* make sure entry gets freed */ + HvLAZYDEL_on(hv); /* make sure entry gets freed */ Zero(entry, 1, HE); Newxz(k, HEK_BASESIZE + sizeof(const SV *), char); hek = (HEK*)k; @@ -2732,21 +2732,21 @@ del_HE(entry); iter = HvAUX(hv); /* may been realloced */ iter->xhv_eiter = NULL; /* HvEITER(hv) = NULL */ - HvLAZYDEL_off(hv); + HvLAZYDEL_off(hv); return NULL; } } #if defined(DYNAMIC_ENV_FETCH) && !defined(__riscos__) /* set up %ENV for iteration */ if (!entry && SvRMAGICAL((const SV *)hv) - && mg_find((const SV *)hv, PERL_MAGIC_env)) { - prime_env_iter(); + && mg_find((const SV *)hv, PERL_MAGIC_env)) { + prime_env_iter(); #ifdef VMS - /* The prime_env_iter() on VMS just loaded up new hash values - * so the iteration count needs to be reset back to the beginning - */ - hv_iterinit(hv); - iter = HvAUX(hv); - oldentry = entry = iter->xhv_eiter; /* HvEITER(hv) */ + /* The prime_env_iter() on VMS just loaded up new hash values + * so the iteration count needs to be reset back to the beginning + */ + hv_iterinit(hv); + iter = HvAUX(hv); + oldentry = entry = iter->xhv_eiter; /* HvEITER(hv) */ #endif } #endif @@ -2757,7 +2757,7 @@ /* At start of hash, entry is NULL. */ if (entry) { - entry = HeNEXT(entry); + entry = HeNEXT(entry); if (!(flags & HV_ITERNEXT_WANTPLACEHOLDERS)) { /* * Skip past any placeholders -- don't want to include them in @@ -2766,7 +2766,7 @@ while (entry && HeVAL(entry) == &PL_sv_placeholder) { entry = HeNEXT(entry); } - } + } } #ifdef PERL_HASH_RANDOMIZE_KEYS @@ -2784,31 +2784,31 @@ /* Skip the entire loop if the hash is empty. */ if ((flags & HV_ITERNEXT_WANTPLACEHOLDERS) - ? HvTOTALKEYS(hv) : HvUSEDKEYS(hv)) { - while (!entry) { - /* OK. Come to the end of the current list. Grab the next one. */ - - iter->xhv_riter++; /* HvRITER(hv)++ */ - if (iter->xhv_riter > (I32)xhv->xhv_max /* HvRITER(hv) > HvMAX(hv) */) { - /* There is no next one. End of the hash. */ - iter->xhv_riter = -1; /* HvRITER(hv) = -1 */ + ? HvTOTALKEYS(hv) : HvUSEDKEYS(hv)) { + while (!entry) { + /* OK. Come to the end of the current list. Grab the next one. */ + + iter->xhv_riter++; /* HvRITER(hv)++ */ + if (iter->xhv_riter > (I32)xhv->xhv_max /* HvRITER(hv) > HvMAX(hv) */) { + /* There is no next one. End of the hash. */ + iter->xhv_riter = -1; /* HvRITER(hv) = -1 */ #ifdef PERL_HASH_RANDOMIZE_KEYS iter->xhv_last_rand = iter->xhv_rand; /* reset xhv_last_rand so we can detect inserts during traversal */ #endif - break; - } + break; + } entry = (HvARRAY(hv))[ PERL_HASH_ITER_BUCKET(iter) & xhv->xhv_max ]; - if (!(flags & HV_ITERNEXT_WANTPLACEHOLDERS)) { - /* If we have an entry, but it's a placeholder, don't count it. - Try the next. */ - while (entry && HeVAL(entry) == &PL_sv_placeholder) - entry = HeNEXT(entry); - } - /* Will loop again if this linked list starts NULL - (for HV_ITERNEXT_WANTPLACEHOLDERS) - or if we run through it and find only placeholders. */ - } + if (!(flags & HV_ITERNEXT_WANTPLACEHOLDERS)) { + /* If we have an entry, but it's a placeholder, don't count it. + Try the next. */ + while (entry && HeVAL(entry) == &PL_sv_placeholder) + entry = HeNEXT(entry); + } + /* Will loop again if this linked list starts NULL + (for HV_ITERNEXT_WANTPLACEHOLDERS) + or if we run through it and find only placeholders. */ + } } else { iter->xhv_riter = -1; @@ -2818,8 +2818,8 @@ } if (oldentry && HvLAZYDEL(hv)) { /* was deleted earlier? */ - HvLAZYDEL_off(hv); - hv_free_ent(hv, oldentry); + HvLAZYDEL_off(hv); + hv_free_ent(hv, oldentry); } iter = HvAUX(hv); /* may been realloced */ @@ -2842,14 +2842,14 @@ PERL_ARGS_ASSERT_HV_ITERKEY; if (HeKLEN(entry) == HEf_SVKEY) { - STRLEN len; - char * const p = SvPV(HeKEY_sv(entry), len); - *retlen = len; - return p; + STRLEN len; + char * const p = SvPV(HeKEY_sv(entry), len); + *retlen = len; + return p; } else { - *retlen = HeKLEN(entry); - return HeKEY(entry); + *retlen = HeKLEN(entry); + return HeKEY(entry); } } @@ -2887,14 +2887,14 @@ PERL_ARGS_ASSERT_HV_ITERVAL; if (SvRMAGICAL(hv)) { - if (mg_find((const SV *)hv, PERL_MAGIC_tied)) { - SV* const sv = sv_newmortal(); - if (HeKLEN(entry) == HEf_SVKEY) - mg_copy(MUTABLE_SV(hv), sv, (char*)HeKEY_sv(entry), HEf_SVKEY); - else - mg_copy(MUTABLE_SV(hv), sv, HeKEY(entry), HeKLEN(entry)); - return sv; - } + if (mg_find((const SV *)hv, PERL_MAGIC_tied)) { + SV* const sv = sv_newmortal(); + if (HeKLEN(entry) == HEf_SVKEY) + mg_copy(MUTABLE_SV(hv), sv, (char*)HeKEY_sv(entry), HEf_SVKEY); + else + mg_copy(MUTABLE_SV(hv), sv, HeKEY(entry), HeKLEN(entry)); + return sv; + } } return HeVAL(entry); } @@ -2916,7 +2916,7 @@ PERL_ARGS_ASSERT_HV_ITERNEXTSV; if (!he) - return NULL; + return NULL; *key = hv_iterkey(he, retlen); return hv_iterval(hv, he); } @@ -2965,19 +2965,19 @@ struct shared_he *he = NULL; if (hek) { - /* Find the shared he which is just before us in memory. */ - he = (struct shared_he *)(((char *)hek) - - STRUCT_OFFSET(struct shared_he, - shared_he_hek)); - - /* Assert that the caller passed us a genuine (or at least consistent) - shared hek */ - assert (he->shared_he_he.hent_hek == hek); - - if (he->shared_he_he.he_valu.hent_refcount - 1) { - --he->shared_he_he.he_valu.hent_refcount; - return; - } + /* Find the shared he which is just before us in memory. */ + he = (struct shared_he *)(((char *)hek) + - STRUCT_OFFSET(struct shared_he, + shared_he_hek)); + + /* Assert that the caller passed us a genuine (or at least consistent) + shared hek */ + assert (he->shared_he_he.hent_hek == hek); + + if (he->shared_he_he.he_valu.hent_refcount - 1) { + --he->shared_he_he.he_valu.hent_refcount; + return; + } hash = HEK_HASH(hek); } else if (len < 0) { @@ -2994,14 +2994,14 @@ /* what follows was the moral equivalent of: if ((Svp = hv_fetch(PL_strtab, tmpsv, FALSE, hash))) { - if (--*Svp == NULL) - hv_delete(PL_strtab, str, len, G_DISCARD, hash); + if (--*Svp == NULL) + hv_delete(PL_strtab, str, len, G_DISCARD, hash); } */ xhv = (XPVHV*)SvANY(PL_strtab); /* assert(xhv_array != 0) */ oentry = &(HvARRAY(PL_strtab))[hash & (I32) HvMAX(PL_strtab)]; if (he) { - const HE *const he_he = &(he->shared_he_he); + const HE *const he_he = &(he->shared_he_he); for (entry = *oentry; entry; oentry = &HeNEXT(entry), entry = *oentry) { if (entry == he_he) break; @@ -3030,13 +3030,13 @@ } if (!entry) - Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL), - "Attempt to free nonexistent shared string '%s'%s" - pTHX__FORMAT, - hek ? HEK_KEY(hek) : str, - ((k_flags & HVhek_UTF8) ? " (utf8)" : "") pTHX__VALUE); + Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL), + "Attempt to free nonexistent shared string '%s'%s" + pTHX__FORMAT, + hek ? HEK_KEY(hek) : str, + ((k_flags & HVhek_UTF8) ? " (utf8)" : "") pTHX__VALUE); if (k_flags & HVhek_FREEKEY) - Safefree(str); + Safefree(str); } /* get a (constant) string ptr from the global string table @@ -3066,7 +3066,6 @@ we should flag that it needs upgrading on keys or each. Also flag that we need share_hek_flags to free the string. */ if (str != save) { - dVAR; PERL_HASH(hash, str, len); flags |= HVhek_WASUTF8 | HVhek_FREEKEY; } @@ -3092,73 +3091,73 @@ /* what follows is the moral equivalent of: if (!(Svp = hv_fetch(PL_strtab, str, len, FALSE))) - hv_store(PL_strtab, str, len, NULL, hash); + hv_store(PL_strtab, str, len, NULL, hash); - Can't rehash the shared string table, so not sure if it's worth - counting the number of entries in the linked list + Can't rehash the shared string table, so not sure if it's worth + counting the number of entries in the linked list */ /* assert(xhv_array != 0) */ entry = (HvARRAY(PL_strtab))[hindex]; for (;entry; entry = HeNEXT(entry)) { - if (HeHASH(entry) != hash) /* strings can't be equal */ - continue; - if (HeKLEN(entry) != (SSize_t) len) - continue; - if (HeKEY(entry) != str && memNE(HeKEY(entry),str,len)) /* is this it? */ - continue; - if (HeKFLAGS(entry) != flags_masked) - continue; - break; + if (HeHASH(entry) != hash) /* strings can't be equal */ + continue; + if (HeKLEN(entry) != (SSize_t) len) + continue; + if (HeKEY(entry) != str && memNE(HeKEY(entry),str,len)) /* is this it? */ + continue; + if (HeKFLAGS(entry) != flags_masked) + continue; + break; } if (!entry) { - /* What used to be head of the list. - If this is NULL, then we're the first entry for this slot, which - means we need to increate fill. */ - struct shared_he *new_entry; - HEK *hek; - char *k; - HE **const head = &HvARRAY(PL_strtab)[hindex]; - HE *const next = *head; - - /* We don't actually store a HE from the arena and a regular HEK. - Instead we allocate one chunk of memory big enough for both, - and put the HEK straight after the HE. This way we can find the - HE directly from the HEK. - */ - - Newx(k, STRUCT_OFFSET(struct shared_he, - shared_he_hek.hek_key[0]) + len + 2, char); - new_entry = (struct shared_he *)k; - entry = &(new_entry->shared_he_he); - hek = &(new_entry->shared_he_hek); - - Copy(str, HEK_KEY(hek), len, char); - HEK_KEY(hek)[len] = 0; - HEK_LEN(hek) = len; - HEK_HASH(hek) = hash; - HEK_FLAGS(hek) = (unsigned char)flags_masked; - - /* Still "point" to the HEK, so that other code need not know what - we're up to. */ - HeKEY_hek(entry) = hek; - entry->he_valu.hent_refcount = 0; - HeNEXT(entry) = next; - *head = entry; - - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!next) { /* initial entry? */ - } else if ( DO_HSPLIT(xhv) ) { + /* What used to be head of the list. + If this is NULL, then we're the first entry for this slot, which + means we need to increate fill. */ + struct shared_he *new_entry; + HEK *hek; + char *k; + HE **const head = &HvARRAY(PL_strtab)[hindex]; + HE *const next = *head; + + /* We don't actually store a HE from the arena and a regular HEK. + Instead we allocate one chunk of memory big enough for both, + and put the HEK straight after the HE. This way we can find the + HE directly from the HEK. + */ + + Newx(k, STRUCT_OFFSET(struct shared_he, + shared_he_hek.hek_key[0]) + len + 2, char); + new_entry = (struct shared_he *)k; + entry = &(new_entry->shared_he_he); + hek = &(new_entry->shared_he_hek); + + Copy(str, HEK_KEY(hek), len, char); + HEK_KEY(hek)[len] = 0; + HEK_LEN(hek) = len; + HEK_HASH(hek) = hash; + HEK_FLAGS(hek) = (unsigned char)flags_masked; + + /* Still "point" to the HEK, so that other code need not know what + we're up to. */ + HeKEY_hek(entry) = hek; + entry->he_valu.hent_refcount = 0; + HeNEXT(entry) = next; + *head = entry; + + xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ + if (!next) { /* initial entry? */ + } else if ( DO_HSPLIT(xhv) ) { const STRLEN oldsize = xhv->xhv_max + 1; hsplit(PL_strtab, oldsize, oldsize * 2); - } + } } ++entry->he_valu.hent_refcount; if (flags & HVhek_FREEKEY) - Safefree(str); + Safefree(str); return HeKEY_hek(entry); } @@ -3171,11 +3170,11 @@ PERL_ARGS_ASSERT_HV_PLACEHOLDERS_P; if (!mg) { - mg = sv_magicext(MUTABLE_SV(hv), 0, PERL_MAGIC_rhash, 0, 0, 0); + mg = sv_magicext(MUTABLE_SV(hv), 0, PERL_MAGIC_rhash, 0, 0, 0); - if (!mg) { - Perl_die(aTHX_ "panic: hv_placeholders_p"); - } + if (!mg) { + Perl_die(aTHX_ "panic: hv_placeholders_p"); + } } return &(mg->mg_len); } @@ -3200,10 +3199,10 @@ PERL_ARGS_ASSERT_HV_PLACEHOLDERS_SET; if (mg) { - mg->mg_len = ph; + mg->mg_len = ph; } else if (ph) { - if (!sv_magicext(MUTABLE_SV(hv), 0, PERL_MAGIC_rhash, 0, 0, ph)) - Perl_die(aTHX_ "panic: hv_placeholders_set"); + if (!sv_magicext(MUTABLE_SV(hv), 0, PERL_MAGIC_rhash, 0, 0, ph)) + Perl_die(aTHX_ "panic: hv_placeholders_set"); } /* else we don't need to add magic to record 0 placeholders. */ } @@ -3211,41 +3210,40 @@ STATIC SV * S_refcounted_he_value(pTHX_ const struct refcounted_he *he) { - dVAR; SV *value; PERL_ARGS_ASSERT_REFCOUNTED_HE_VALUE; switch(he->refcounted_he_data[0] & HVrhek_typemask) { case HVrhek_undef: - value = newSV(0); - break; + value = newSV(0); + break; case HVrhek_delete: - value = &PL_sv_placeholder; - break; + value = &PL_sv_placeholder; + break; case HVrhek_IV: - value = newSViv(he->refcounted_he_val.refcounted_he_u_iv); - break; + value = newSViv(he->refcounted_he_val.refcounted_he_u_iv); + break; case HVrhek_UV: - value = newSVuv(he->refcounted_he_val.refcounted_he_u_uv); - break; + value = newSVuv(he->refcounted_he_val.refcounted_he_u_uv); + break; case HVrhek_PV: case HVrhek_PV_UTF8: - /* Create a string SV that directly points to the bytes in our - structure. */ - value = newSV_type(SVt_PV); - SvPV_set(value, (char *) he->refcounted_he_data + 1); - SvCUR_set(value, he->refcounted_he_val.refcounted_he_u_len); - /* This stops anything trying to free it */ - SvLEN_set(value, 0); - SvPOK_on(value); - SvREADONLY_on(value); - if ((he->refcounted_he_data[0] & HVrhek_typemask) == HVrhek_PV_UTF8) - SvUTF8_on(value); - break; + /* Create a string SV that directly points to the bytes in our + structure. */ + value = newSV_type(SVt_PV); + SvPV_set(value, (char *) he->refcounted_he_data + 1); + SvCUR_set(value, he->refcounted_he_val.refcounted_he_u_len); + /* This stops anything trying to free it */ + SvLEN_set(value, 0); + SvPOK_on(value); + SvREADONLY_on(value); + if ((he->refcounted_he_data[0] & HVrhek_typemask) == HVrhek_PV_UTF8) + SvUTF8_on(value); + break; default: - Perl_croak(aTHX_ "panic: refcounted_he_value bad flags %" UVxf, - (UV)he->refcounted_he_data[0]); + Perl_croak(aTHX_ "panic: refcounted_he_value bad flags %" UVxf, + (UV)he->refcounted_he_data[0]); } return value; } @@ -3262,13 +3260,12 @@ HV * Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he *chain, U32 flags) { - dVAR; HV *hv; U32 placeholders, max; if (flags) - Perl_croak(aTHX_ "panic: refcounted_he_chain_2hv bad flags %" UVxf, - (UV)flags); + Perl_croak(aTHX_ "panic: refcounted_he_chain_2hv bad flags %" UVxf, + (UV)flags); /* We could chase the chain once to get an idea of the number of keys, and call ksplit. But for now we'll make a potentially inefficient @@ -3276,77 +3273,77 @@ hv = newHV(); max = HvMAX(hv); if (!HvARRAY(hv)) { - char *array; - Newxz(array, PERL_HV_ARRAY_ALLOC_BYTES(max + 1), char); - HvARRAY(hv) = (HE**)array; + char *array; + Newxz(array, PERL_HV_ARRAY_ALLOC_BYTES(max + 1), char); + HvARRAY(hv) = (HE**)array; } placeholders = 0; while (chain) { #ifdef USE_ITHREADS - U32 hash = chain->refcounted_he_hash; + U32 hash = chain->refcounted_he_hash; #else - U32 hash = HEK_HASH(chain->refcounted_he_hek); + U32 hash = HEK_HASH(chain->refcounted_he_hek); #endif - HE **oentry = &((HvARRAY(hv))[hash & max]); - HE *entry = *oentry; - SV *value; - - for (; entry; entry = HeNEXT(entry)) { - if (HeHASH(entry) == hash) { - /* We might have a duplicate key here. If so, entry is older - than the key we've already put in the hash, so if they are - the same, skip adding entry. */ + HE **oentry = &((HvARRAY(hv))[hash & max]); + HE *entry = *oentry; + SV *value; + + for (; entry; entry = HeNEXT(entry)) { + if (HeHASH(entry) == hash) { + /* We might have a duplicate key here. If so, entry is older + than the key we've already put in the hash, so if they are + the same, skip adding entry. */ #ifdef USE_ITHREADS - const STRLEN klen = HeKLEN(entry); - const char *const key = HeKEY(entry); - if (klen == chain->refcounted_he_keylen - && (!!HeKUTF8(entry) - == !!(chain->refcounted_he_data[0] & HVhek_UTF8)) - && memEQ(key, REF_HE_KEY(chain), klen)) - goto next_please; + const STRLEN klen = HeKLEN(entry); + const char *const key = HeKEY(entry); + if (klen == chain->refcounted_he_keylen + && (!!HeKUTF8(entry) + == !!(chain->refcounted_he_data[0] & HVhek_UTF8)) + && memEQ(key, REF_HE_KEY(chain), klen)) + goto next_please; #else - if (HeKEY_hek(entry) == chain->refcounted_he_hek) - goto next_please; - if (HeKLEN(entry) == HEK_LEN(chain->refcounted_he_hek) - && HeKUTF8(entry) == HEK_UTF8(chain->refcounted_he_hek) - && memEQ(HeKEY(entry), HEK_KEY(chain->refcounted_he_hek), - HeKLEN(entry))) - goto next_please; -#endif - } - } - assert (!entry); - entry = new_HE(); + if (HeKEY_hek(entry) == chain->refcounted_he_hek) + goto next_please; + if (HeKLEN(entry) == HEK_LEN(chain->refcounted_he_hek) + && HeKUTF8(entry) == HEK_UTF8(chain->refcounted_he_hek) + && memEQ(HeKEY(entry), HEK_KEY(chain->refcounted_he_hek), + HeKLEN(entry))) + goto next_please; +#endif + } + } + assert (!entry); + entry = new_HE(); #ifdef USE_ITHREADS - HeKEY_hek(entry) - = share_hek_flags(REF_HE_KEY(chain), - chain->refcounted_he_keylen, - chain->refcounted_he_hash, - (chain->refcounted_he_data[0] - & (HVhek_UTF8|HVhek_WASUTF8))); + HeKEY_hek(entry) + = share_hek_flags(REF_HE_KEY(chain), + chain->refcounted_he_keylen, + chain->refcounted_he_hash, + (chain->refcounted_he_data[0] + & (HVhek_UTF8|HVhek_WASUTF8))); #else - HeKEY_hek(entry) = share_hek_hek(chain->refcounted_he_hek); + HeKEY_hek(entry) = share_hek_hek(chain->refcounted_he_hek); #endif - value = refcounted_he_value(chain); - if (value == &PL_sv_placeholder) - placeholders++; - HeVAL(entry) = value; - - /* Link it into the chain. */ - HeNEXT(entry) = *oentry; - *oentry = entry; + value = refcounted_he_value(chain); + if (value == &PL_sv_placeholder) + placeholders++; + HeVAL(entry) = value; - HvTOTALKEYS(hv)++; + /* Link it into the chain. */ + HeNEXT(entry) = *oentry; + *oentry = entry; + + HvTOTALKEYS(hv)++; next_please: - chain = chain->refcounted_he_next; + chain = chain->refcounted_he_next; } if (placeholders) { - clear_placeholders(hv, placeholders); - HvTOTALKEYS(hv) -= placeholders; + clear_placeholders(hv, placeholders); + HvTOTALKEYS(hv) -= placeholders; } /* We could check in the loop to see if we encounter any keys with key @@ -3374,39 +3371,38 @@ SV * Perl_refcounted_he_fetch_pvn(pTHX_ const struct refcounted_he *chain, - const char *keypv, STRLEN keylen, U32 hash, U32 flags) + const char *keypv, STRLEN keylen, U32 hash, U32 flags) { - dVAR; U8 utf8_flag; PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PVN; if (flags & ~(REFCOUNTED_HE_KEY_UTF8|REFCOUNTED_HE_EXISTS)) - Perl_croak(aTHX_ "panic: refcounted_he_fetch_pvn bad flags %" UVxf, - (UV)flags); + Perl_croak(aTHX_ "panic: refcounted_he_fetch_pvn bad flags %" UVxf, + (UV)flags); if (!chain) - goto ret; + goto ret; if (flags & REFCOUNTED_HE_KEY_UTF8) { - /* For searching purposes, canonicalise to Latin-1 where possible. */ - const char *keyend = keypv + keylen, *p; - STRLEN nonascii_count = 0; - for (p = keypv; p != keyend; p++) { - if (! UTF8_IS_INVARIANT(*p)) { - if (! UTF8_IS_NEXT_CHAR_DOWNGRADEABLE(p, keyend)) { - goto canonicalised_key; + /* For searching purposes, canonicalise to Latin-1 where possible. */ + const char *keyend = keypv + keylen, *p; + STRLEN nonascii_count = 0; + for (p = keypv; p != keyend; p++) { + if (! UTF8_IS_INVARIANT(*p)) { + if (! UTF8_IS_NEXT_CHAR_DOWNGRADEABLE(p, keyend)) { + goto canonicalised_key; } - nonascii_count++; + nonascii_count++; p++; - } - } - if (nonascii_count) { - char *q; - const char *p = keypv, *keyend = keypv + keylen; - keylen -= nonascii_count; - Newx(q, keylen, char); - SAVEFREEPV(q); - keypv = q; - for (; p != keyend; p++, q++) { - U8 c = (U8)*p; + } + } + if (nonascii_count) { + char *q; + const char *p = keypv, *keyend = keypv + keylen; + keylen -= nonascii_count; + Newx(q, keylen, char); + SAVEFREEPV(q); + keypv = q; + for (; p != keyend; p++, q++) { + U8 c = (U8)*p; if (UTF8_IS_INVARIANT(c)) { *q = (char) c; } @@ -3414,35 +3410,35 @@ p++; *q = (char) EIGHT_BIT_UTF8_TO_NATIVE(c, *p); } - } - } - flags &= ~REFCOUNTED_HE_KEY_UTF8; - canonicalised_key: ; + } + } + flags &= ~REFCOUNTED_HE_KEY_UTF8; + canonicalised_key: ; } utf8_flag = (flags & REFCOUNTED_HE_KEY_UTF8) ? HVhek_UTF8 : 0; if (!hash) - PERL_HASH(hash, keypv, keylen); + PERL_HASH(hash, keypv, keylen); for (; chain; chain = chain->refcounted_he_next) { - if ( + if ( #ifdef USE_ITHREADS - hash == chain->refcounted_he_hash && - keylen == chain->refcounted_he_keylen && - memEQ(REF_HE_KEY(chain), keypv, keylen) && - utf8_flag == (chain->refcounted_he_data[0] & HVhek_UTF8) + hash == chain->refcounted_he_hash && + keylen == chain->refcounted_he_keylen && + memEQ(REF_HE_KEY(chain), keypv, keylen) && + utf8_flag == (chain->refcounted_he_data[0] & HVhek_UTF8) #else - hash == HEK_HASH(chain->refcounted_he_hek) && - keylen == (STRLEN)HEK_LEN(chain->refcounted_he_hek) && - memEQ(HEK_KEY(chain->refcounted_he_hek), keypv, keylen) && - utf8_flag == (HEK_FLAGS(chain->refcounted_he_hek) & HVhek_UTF8) -#endif - ) { - if (flags & REFCOUNTED_HE_EXISTS) - return (chain->refcounted_he_data[0] & HVrhek_typemask) - == HVrhek_delete - ? NULL : &PL_sv_yes; - return sv_2mortal(refcounted_he_value(chain)); - } + hash == HEK_HASH(chain->refcounted_he_hek) && + keylen == (STRLEN)HEK_LEN(chain->refcounted_he_hek) && + memEQ(HEK_KEY(chain->refcounted_he_hek), keypv, keylen) && + utf8_flag == (HEK_FLAGS(chain->refcounted_he_hek) & HVhek_UTF8) +#endif + ) { + if (flags & REFCOUNTED_HE_EXISTS) + return (chain->refcounted_he_data[0] & HVrhek_typemask) + == HVrhek_delete + ? NULL : &PL_sv_yes; + return sv_2mortal(refcounted_he_value(chain)); + } } ret: return flags & REFCOUNTED_HE_EXISTS ? NULL : &PL_sv_placeholder; @@ -3459,7 +3455,7 @@ SV * Perl_refcounted_he_fetch_pv(pTHX_ const struct refcounted_he *chain, - const char *key, U32 hash, U32 flags) + const char *key, U32 hash, U32 flags) { PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PV; return refcounted_he_fetch_pvn(chain, key, strlen(key), hash, flags); @@ -3476,19 +3472,19 @@ SV * Perl_refcounted_he_fetch_sv(pTHX_ const struct refcounted_he *chain, - SV *key, U32 hash, U32 flags) + SV *key, U32 hash, U32 flags) { const char *keypv; STRLEN keylen; PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_SV; if (flags & REFCOUNTED_HE_KEY_UTF8) - Perl_croak(aTHX_ "panic: refcounted_he_fetch_sv bad flags %" UVxf, - (UV)flags); + Perl_croak(aTHX_ "panic: refcounted_he_fetch_sv bad flags %" UVxf, + (UV)flags); keypv = SvPV_const(key, keylen); if (SvUTF8(key)) - flags |= REFCOUNTED_HE_KEY_UTF8; + flags |= REFCOUNTED_HE_KEY_UTF8; if (!hash && SvIsCOW_shared_hash(key)) - hash = SvSHARED_HASH(key); + hash = SvSHARED_HASH(key); return refcounted_he_fetch_pvn(chain, keypv, keylen, hash, flags); } @@ -3527,9 +3523,8 @@ struct refcounted_he * Perl_refcounted_he_new_pvn(pTHX_ struct refcounted_he *parent, - const char *keypv, STRLEN keylen, U32 hash, SV *value, U32 flags) + const char *keypv, STRLEN keylen, U32 hash, SV *value, U32 flags) { - dVAR; STRLEN value_len = 0; const char *value_p = NULL; bool is_pv; @@ -3540,49 +3535,49 @@ PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PVN; if (!value || value == &PL_sv_placeholder) { - value_type = HVrhek_delete; + value_type = HVrhek_delete; } else if (SvPOK(value)) { - value_type = HVrhek_PV; + value_type = HVrhek_PV; } else if (SvIOK(value)) { - value_type = SvUOK((const SV *)value) ? HVrhek_UV : HVrhek_IV; + value_type = SvUOK((const SV *)value) ? HVrhek_UV : HVrhek_IV; } else if (!SvOK(value)) { - value_type = HVrhek_undef; + value_type = HVrhek_undef; } else { - value_type = HVrhek_PV; + value_type = HVrhek_PV; } is_pv = value_type == HVrhek_PV; if (is_pv) { - /* Do it this way so that the SvUTF8() test is after the SvPV, in case - the value is overloaded, and doesn't yet have the UTF-8flag set. */ - value_p = SvPV_const(value, value_len); - if (SvUTF8(value)) - value_type = HVrhek_PV_UTF8; - key_offset = value_len + 2; + /* Do it this way so that the SvUTF8() test is after the SvPV, in case + the value is overloaded, and doesn't yet have the UTF-8flag set. */ + value_p = SvPV_const(value, value_len); + if (SvUTF8(value)) + value_type = HVrhek_PV_UTF8; + key_offset = value_len + 2; } hekflags = value_type; if (flags & REFCOUNTED_HE_KEY_UTF8) { - /* Canonicalise to Latin-1 where possible. */ - const char *keyend = keypv + keylen, *p; - STRLEN nonascii_count = 0; - for (p = keypv; p != keyend; p++) { - if (! UTF8_IS_INVARIANT(*p)) { - if (! UTF8_IS_NEXT_CHAR_DOWNGRADEABLE(p, keyend)) { - goto canonicalised_key; + /* Canonicalise to Latin-1 where possible. */ + const char *keyend = keypv + keylen, *p; + STRLEN nonascii_count = 0; + for (p = keypv; p != keyend; p++) { + if (! UTF8_IS_INVARIANT(*p)) { + if (! UTF8_IS_NEXT_CHAR_DOWNGRADEABLE(p, keyend)) { + goto canonicalised_key; } - nonascii_count++; + nonascii_count++; p++; - } - } - if (nonascii_count) { - char *q; - const char *p = keypv, *keyend = keypv + keylen; - keylen -= nonascii_count; - Newx(q, keylen, char); - SAVEFREEPV(q); - keypv = q; - for (; p != keyend; p++, q++) { - U8 c = (U8)*p; + } + } + if (nonascii_count) { + char *q; + const char *p = keypv, *keyend = keypv + keylen; + keylen -= nonascii_count; + Newx(q, keylen, char); + SAVEFREEPV(q); + keypv = q; + for (; p != keyend; p++, q++) { + U8 c = (U8)*p; if (UTF8_IS_INVARIANT(c)) { *q = (char) c; } @@ -3590,36 +3585,36 @@ p++; *q = (char) EIGHT_BIT_UTF8_TO_NATIVE(c, *p); } - } - } - flags &= ~REFCOUNTED_HE_KEY_UTF8; - canonicalised_key: ; + } + } + flags &= ~REFCOUNTED_HE_KEY_UTF8; + canonicalised_key: ; } if (flags & REFCOUNTED_HE_KEY_UTF8) - hekflags |= HVhek_UTF8; + hekflags |= HVhek_UTF8; if (!hash) - PERL_HASH(hash, keypv, keylen); + PERL_HASH(hash, keypv, keylen); #ifdef USE_ITHREADS he = (struct refcounted_he*) - PerlMemShared_malloc(sizeof(struct refcounted_he) - 1 - + keylen - + key_offset); + PerlMemShared_malloc(sizeof(struct refcounted_he) - 1 + + keylen + + key_offset); #else he = (struct refcounted_he*) - PerlMemShared_malloc(sizeof(struct refcounted_he) - 1 - + key_offset); + PerlMemShared_malloc(sizeof(struct refcounted_he) - 1 + + key_offset); #endif he->refcounted_he_next = parent; if (is_pv) { - Copy(value_p, he->refcounted_he_data + 1, value_len + 1, char); - he->refcounted_he_val.refcounted_he_u_len = value_len; + Copy(value_p, he->refcounted_he_data + 1, value_len + 1, char); + he->refcounted_he_val.refcounted_he_u_len = value_len; } else if (value_type == HVrhek_IV) { - he->refcounted_he_val.refcounted_he_u_iv = SvIVX(value); + he->refcounted_he_val.refcounted_he_u_iv = SvIVX(value); } else if (value_type == HVrhek_UV) { - he->refcounted_he_val.refcounted_he_u_uv = SvUVX(value); + he->refcounted_he_val.refcounted_he_u_uv = SvUVX(value); } #ifdef USE_ITHREADS @@ -3647,7 +3642,7 @@ struct refcounted_he * Perl_refcounted_he_new_pv(pTHX_ struct refcounted_he *parent, - const char *key, U32 hash, SV *value, U32 flags) + const char *key, U32 hash, SV *value, U32 flags) { PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PV; return refcounted_he_new_pvn(parent, key, strlen(key), hash, value, flags); @@ -3664,19 +3659,19 @@ struct refcounted_he * Perl_refcounted_he_new_sv(pTHX_ struct refcounted_he *parent, - SV *key, U32 hash, SV *value, U32 flags) + SV *key, U32 hash, SV *value, U32 flags) { const char *keypv; STRLEN keylen; PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_SV; if (flags & REFCOUNTED_HE_KEY_UTF8) - Perl_croak(aTHX_ "panic: refcounted_he_new_sv bad flags %" UVxf, - (UV)flags); + Perl_croak(aTHX_ "panic: refcounted_he_new_sv bad flags %" UVxf, + (UV)flags); keypv = SvPV_const(key, keylen); if (SvUTF8(key)) - flags |= REFCOUNTED_HE_KEY_UTF8; + flags |= REFCOUNTED_HE_KEY_UTF8; if (!hash && SvIsCOW_shared_hash(key)) - hash = SvSHARED_HASH(key); + hash = SvSHARED_HASH(key); return refcounted_he_new_pvn(parent, keypv, keylen, hash, value, flags); } @@ -3694,29 +3689,26 @@ void Perl_refcounted_he_free(pTHX_ struct refcounted_he *he) { -#ifdef USE_ITHREADS - dVAR; -#endif PERL_UNUSED_CONTEXT; while (he) { - struct refcounted_he *copy; - U32 new_count; + struct refcounted_he *copy; + U32 new_count; - HINTS_REFCNT_LOCK; - new_count = --he->refcounted_he_refcnt; - HINTS_REFCNT_UNLOCK; - - if (new_count) { - return; - } + HINTS_REFCNT_LOCK; + new_count = --he->refcounted_he_refcnt; + HINTS_REFCNT_UNLOCK; + + if (new_count) { + return; + } #ifndef USE_ITHREADS - unshare_hek_or_pvn (he->refcounted_he_hek, 0, 0, 0); + unshare_hek_or_pvn (he->refcounted_he_hek, 0, 0, 0); #endif - copy = he; - he = he->refcounted_he_next; - PerlMemShared_free(copy); + copy = he; + he = he->refcounted_he_next; + PerlMemShared_free(copy); } } @@ -3733,29 +3725,27 @@ struct refcounted_he * Perl_refcounted_he_inc(pTHX_ struct refcounted_he *he) { -#ifdef USE_ITHREADS - dVAR; -#endif PERL_UNUSED_CONTEXT; if (he) { - HINTS_REFCNT_LOCK; - he->refcounted_he_refcnt++; - HINTS_REFCNT_UNLOCK; + HINTS_REFCNT_LOCK; + he->refcounted_he_refcnt++; + HINTS_REFCNT_UNLOCK; } return he; } /* +=for apidoc_section $COP =for apidoc cop_fetch_label Returns the label attached to a cop, and stores its length in bytes into C<*len>. Upon return, C<*flags> will be set to either C or 0. -Alternatively, use the macro L>; +Alternatively, use the macro C>; or if you don't need to know if the label is UTF-8 or not, the macro -L>; -or if you additionally dont need to know the length, L>. +C>; +or if you additionally dont need to know the length, C>. =cut */ @@ -3770,29 +3760,29 @@ PERL_UNUSED_CONTEXT; if (!chain) - return NULL; + return NULL; #ifdef USE_ITHREADS if (chain->refcounted_he_keylen != 1) - return NULL; + return NULL; if (*REF_HE_KEY(chain) != ':') - return NULL; + return NULL; #else if ((STRLEN)HEK_LEN(chain->refcounted_he_hek) != 1) - return NULL; + return NULL; if (*HEK_KEY(chain->refcounted_he_hek) != ':') - return NULL; + return NULL; #endif /* Stop anyone trying to really mess us up by adding their own value for ':' into %^H */ if ((chain->refcounted_he_data[0] & HVrhek_typemask) != HVrhek_PV - && (chain->refcounted_he_data[0] & HVrhek_typemask) != HVrhek_PV_UTF8) - return NULL; + && (chain->refcounted_he_data[0] & HVrhek_typemask) != HVrhek_PV_UTF8) + return NULL; if (len) - *len = chain->refcounted_he_val.refcounted_he_u_len; + *len = chain->refcounted_he_val.refcounted_he_u_len; if (flags) { - *flags = ((chain->refcounted_he_data[0] & HVrhek_typemask) - == HVrhek_PV_UTF8) ? SVf_UTF8 : 0; + *flags = ((chain->refcounted_he_data[0] & HVrhek_typemask) + == HVrhek_PV_UTF8) ? SVf_UTF8 : 0; } return chain->refcounted_he_data + 1; } @@ -3809,22 +3799,23 @@ void Perl_cop_store_label(pTHX_ COP *const cop, const char *label, STRLEN len, - U32 flags) + U32 flags) { SV *labelsv; PERL_ARGS_ASSERT_COP_STORE_LABEL; if (flags & ~(SVf_UTF8)) - Perl_croak(aTHX_ "panic: cop_store_label illegal flag bits 0x%" UVxf, - (UV)flags); + Perl_croak(aTHX_ "panic: cop_store_label illegal flag bits 0x%" UVxf, + (UV)flags); labelsv = newSVpvn_flags(label, len, SVs_TEMP); if (flags & SVf_UTF8) - SvUTF8_on(labelsv); + SvUTF8_on(labelsv); cop->cop_hints_hash - = refcounted_he_new_pvs(cop->cop_hints_hash, ":", labelsv, 0); + = refcounted_he_new_pvs(cop->cop_hints_hash, ":", labelsv, 0); } /* +=for apidoc_section $HV =for apidoc hv_assert Check that a hash is in an internally consistent state. @@ -3837,7 +3828,6 @@ void Perl_hv_assert(pTHX_ HV *hv) { - dVAR; HE* entry; int withflags = 0; int placeholders = 0; @@ -3851,47 +3841,47 @@ (void)hv_iterinit(hv); while ((entry = hv_iternext_flags(hv, HV_ITERNEXT_WANTPLACEHOLDERS))) { - /* sanity check the values */ - if (HeVAL(entry) == &PL_sv_placeholder) - placeholders++; - else - real++; - /* sanity check the keys */ - if (HeSVKEY(entry)) { - NOOP; /* Don't know what to check on SV keys. */ - } else if (HeKUTF8(entry)) { - withflags++; - if (HeKWASUTF8(entry)) { - PerlIO_printf(Perl_debug_log, - "hash key has both WASUTF8 and UTF8: '%.*s'\n", - (int) HeKLEN(entry), HeKEY(entry)); - bad = 1; - } - } else if (HeKWASUTF8(entry)) - withflags++; + /* sanity check the values */ + if (HeVAL(entry) == &PL_sv_placeholder) + placeholders++; + else + real++; + /* sanity check the keys */ + if (HeSVKEY(entry)) { + NOOP; /* Don't know what to check on SV keys. */ + } else if (HeKUTF8(entry)) { + withflags++; + if (HeKWASUTF8(entry)) { + PerlIO_printf(Perl_debug_log, + "hash key has both WASUTF8 and UTF8: '%.*s'\n", + (int) HeKLEN(entry), HeKEY(entry)); + bad = 1; + } + } else if (HeKWASUTF8(entry)) + withflags++; } if (!SvTIED_mg((const SV *)hv, PERL_MAGIC_tied)) { - static const char bad_count[] = "Count %d %s(s), but hash reports %d\n"; - const int nhashkeys = HvUSEDKEYS(hv); - const int nhashplaceholders = HvPLACEHOLDERS_get(hv); - - if (nhashkeys != real) { - PerlIO_printf(Perl_debug_log, bad_count, real, "keys", nhashkeys ); - bad = 1; - } - if (nhashplaceholders != placeholders) { - PerlIO_printf(Perl_debug_log, bad_count, placeholders, "placeholder", nhashplaceholders ); - bad = 1; - } + static const char bad_count[] = "Count %d %s(s), but hash reports %d\n"; + const int nhashkeys = HvUSEDKEYS(hv); + const int nhashplaceholders = HvPLACEHOLDERS_get(hv); + + if (nhashkeys != real) { + PerlIO_printf(Perl_debug_log, bad_count, real, "keys", nhashkeys ); + bad = 1; + } + if (nhashplaceholders != placeholders) { + PerlIO_printf(Perl_debug_log, bad_count, placeholders, "placeholder", nhashplaceholders ); + bad = 1; + } } if (withflags && ! HvHASKFLAGS(hv)) { - PerlIO_printf(Perl_debug_log, - "Hash has HASKFLAGS off but I count %d key(s) with flags\n", - withflags); - bad = 1; + PerlIO_printf(Perl_debug_log, + "Hash has HASKFLAGS off but I count %d key(s) with flags\n", + withflags); + bad = 1; } if (bad) { - sv_dump(MUTABLE_SV(hv)); + sv_dump(MUTABLE_SV(hv)); } HvRITER_set(hv, riter); /* Restore hash iterator state */ HvEITER_set(hv, eiter); diff -Nru perl-5.32.1/hv_func.h perl-5.34.0/hv_func.h --- perl-5.32.1/hv_func.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/hv_func.h 2021-02-21 11:01:31.000000000 +0000 @@ -6,18 +6,17 @@ * If USE_HASH_SEED is defined, hash randomisation is done by default * (see also perl.c:perl_parse() and S_init_tls_and_interp() and util.c:get_hash_seed()) */ -#ifndef PERL_SEEN_HV_FUNC_H /* compile once */ -#define PERL_SEEN_HV_FUNC_H +#ifndef PERL_SEEN_HV_FUNC_H_ /* compile once */ +#define PERL_SEEN_HV_FUNC_H_ #include "hv_macro.h" #if !( 0 \ || defined(PERL_HASH_FUNC_SIPHASH) \ || defined(PERL_HASH_FUNC_SIPHASH13) \ - || defined(PERL_HASH_FUNC_STADTX) \ || defined(PERL_HASH_FUNC_ZAPHOD32) \ ) # ifdef CAN64BITHASH -# define PERL_HASH_FUNC_STADTX +# define PERL_HASH_FUNC_SIPHASH13 # else # define PERL_HASH_FUNC_ZAPHOD32 # endif @@ -36,27 +35,26 @@ #if defined(PERL_HASH_FUNC_SIPHASH) # define __PERL_HASH_FUNC "SIPHASH_2_4" -# define __PERL_HASH_SEED_BYTES 16 -# define __PERL_HASH_STATE_BYTES 32 +# define __PERL_HASH_WORD_TYPE U64 +# define __PERL_HASH_WORD_SIZE sizeof(__PERL_HASH_WORD_TYPE) +# define __PERL_HASH_SEED_BYTES (__PERL_HASH_WORD_SIZE * 2) +# define __PERL_HASH_STATE_BYTES (__PERL_HASH_WORD_SIZE * 4) # define __PERL_HASH_SEED_STATE(seed,state) S_perl_siphash_seed_state(seed,state) # define __PERL_HASH_WITH_STATE(state,str,len) S_perl_hash_siphash_2_4_with_state((state),(U8*)(str),(len)) #elif defined(PERL_HASH_FUNC_SIPHASH13) # define __PERL_HASH_FUNC "SIPHASH_1_3" -# define __PERL_HASH_SEED_BYTES 16 -# define __PERL_HASH_STATE_BYTES 32 +# define __PERL_HASH_WORD_TYPE U64 +# define __PERL_HASH_WORD_SIZE sizeof(__PERL_HASH_WORD_TYPE) +# define __PERL_HASH_SEED_BYTES (__PERL_HASH_WORD_SIZE * 2) +# define __PERL_HASH_STATE_BYTES (__PERL_HASH_WORD_SIZE * 4) # define __PERL_HASH_SEED_STATE(seed,state) S_perl_siphash_seed_state(seed,state) # define __PERL_HASH_WITH_STATE(state,str,len) S_perl_hash_siphash_1_3_with_state((state),(U8*)(str),(len)) -#elif defined(PERL_HASH_FUNC_STADTX) -# define __PERL_HASH_FUNC "STADTX" -# define __PERL_HASH_SEED_BYTES 16 -# define __PERL_HASH_STATE_BYTES 32 -# define __PERL_HASH_SEED_STATE(seed,state) stadtx_seed_state(seed,state) -# define __PERL_HASH_WITH_STATE(state,str,len) (U32)stadtx_hash_with_state((state),(U8*)(str),(len)) -# include "stadtx_hash.h" #elif defined(PERL_HASH_FUNC_ZAPHOD32) # define __PERL_HASH_FUNC "ZAPHOD32" -# define __PERL_HASH_SEED_BYTES 12 -# define __PERL_HASH_STATE_BYTES 12 +# define __PERL_HASH_WORD_TYPE U32 +# define __PERL_HASH_WORD_SIZE sizeof(__PERL_HASH_WORD_TYPE) +# define __PERL_HASH_SEED_BYTES (__PERL_HASH_WORD_SIZE * 3) +# define __PERL_HASH_STATE_BYTES (__PERL_HASH_WORD_SIZE * 3) # define __PERL_HASH_SEED_STATE(seed,state) zaphod32_seed_state(seed,state) # define __PERL_HASH_WITH_STATE(state,str,len) (U32)zaphod32_hash_with_state((state),(U8*)(str),(len)) # include "zaphod32_hash.h" @@ -72,6 +70,17 @@ #error "__PERL_HASH_FUNC not defined" #endif +/* Some siphash static functions are needed by XS::APItest even when + siphash isn't the current hash. For SipHash builds this needs to + be before the S_perl_hash_with_seed() definition. +*/ +#include "perl_siphash.h" + +#define __PERL_HASH_SEED_roundup(x, y) ( ( ( (x) + ( (y) - 1 ) ) / (y) ) * (y) ) +#define _PERL_HASH_SEED_roundup(x) __PERL_HASH_SEED_roundup(x,__PERL_HASH_WORD_SIZE) + +#define PL_hash_seed ((U8 *)PL_hash_seed_w) +#define PL_hash_state ((U8 *)PL_hash_state_w) #if PERL_HASH_USE_SBOX32_ALSO != 1 # define _PERL_HASH_FUNC __PERL_HASH_FUNC @@ -82,8 +91,8 @@ #else #define _PERL_HASH_FUNC "SBOX32_WITH_" __PERL_HASH_FUNC - -#define _PERL_HASH_SEED_BYTES ( __PERL_HASH_SEED_BYTES + (int)( 3 * sizeof(U32) ) ) +/* note the 3 in the below code comes from the fact the seed to initialize the SBOX is 96 bits */ +#define _PERL_HASH_SEED_BYTES ( __PERL_HASH_SEED_BYTES + (int)( 3 * sizeof(U32)) ) #define _PERL_HASH_STATE_BYTES \ ( __PERL_HASH_STATE_BYTES + ( ( 1 + ( 256 * SBOX32_MAX_LEN ) ) * sizeof(U32) ) ) @@ -100,23 +109,19 @@ #endif -PERL_STATIC_INLINE -U32 S_perl_hash_with_seed(const U8 * const seed, const U8 * const str, const STRLEN len) -{ - U8 state[_PERL_HASH_STATE_BYTES]; - _PERL_HASH_SEED_STATE(seed,state); - return _PERL_HASH_WITH_STATE(state,str,len); -} - #define PERL_HASH_WITH_SEED(seed,hash,str,len) \ (hash) = S_perl_hash_with_seed((const U8 *) seed, (const U8 *) str,len) #define PERL_HASH_WITH_STATE(state,hash,str,len) \ (hash) = _PERL_HASH_WITH_STATE((state),(U8*)(str),(len)) + #define PERL_HASH_SEED_STATE(seed,state) _PERL_HASH_SEED_STATE(seed,state) -#define PERL_HASH_SEED_BYTES _PERL_HASH_SEED_BYTES -#define PERL_HASH_STATE_BYTES _PERL_HASH_STATE_BYTES +#define PERL_HASH_SEED_BYTES _PERL_HASH_SEED_roundup(_PERL_HASH_SEED_BYTES) +#define PERL_HASH_STATE_BYTES _PERL_HASH_SEED_roundup(_PERL_HASH_STATE_BYTES) #define PERL_HASH_FUNC _PERL_HASH_FUNC +#define PERL_HASH_SEED_WORDS (PERL_HASH_SEED_BYTES/__PERL_HASH_WORD_SIZE) +#define PERL_HASH_STATE_WORDS (PERL_HASH_STATE_BYTES/__PERL_HASH_WORD_SIZE) + #ifdef PERL_USE_SINGLE_CHAR_HASH_CACHE #define PERL_HASH(state,str,len) \ (hash) = ((len) < 2 ? ( (len) == 0 ? PL_hash_chars[256] : PL_hash_chars[(U8)(str)[0]] ) \ @@ -155,135 +160,13 @@ #define PERL_HASH_INTERNAL(hash,str,len) PERL_HASH(hash,str,len) #endif -/* This is SipHash by Jean-Philippe Aumasson and Daniel J. Bernstein. - * The authors claim it is relatively secure compared to the alternatives - * and that performance wise it is a suitable hash for languages like Perl. - * See: - * - * https://www.131002.net/siphash/ - * - * This implementation seems to perform slightly slower than one-at-a-time for - * short keys, but degrades slower for longer keys. Murmur Hash outperforms it - * regardless of keys size. - * - * It is 64 bit only. - */ - -#ifdef CAN64BITHASH - -#define SIPROUND \ - STMT_START { \ - v0 += v1; v1=ROTL64(v1,13); v1 ^= v0; v0=ROTL64(v0,32); \ - v2 += v3; v3=ROTL64(v3,16); v3 ^= v2; \ - v0 += v3; v3=ROTL64(v3,21); v3 ^= v0; \ - v2 += v1; v1=ROTL64(v1,17); v1 ^= v2; v2=ROTL64(v2,32); \ - } STMT_END - -#define SIPHASH_SEED_STATE(key,v0,v1,v2,v3) \ -do { \ - v0 = v2 = U8TO64_LE(key + 0); \ - v1 = v3 = U8TO64_LE(key + 8); \ - /* "somepseudorandomlygeneratedbytes" */ \ - v0 ^= UINT64_C(0x736f6d6570736575); \ - v1 ^= UINT64_C(0x646f72616e646f6d); \ - v2 ^= UINT64_C(0x6c7967656e657261); \ - v3 ^= UINT64_C(0x7465646279746573); \ -} while (0) - -PERL_STATIC_INLINE -void S_perl_siphash_seed_state(const unsigned char * const seed_buf, unsigned char * state_buf) { - U64 *v= (U64*) state_buf; - SIPHASH_SEED_STATE(seed_buf, v[0],v[1],v[2],v[3]); -} - -#define PERL_SIPHASH_FNC(FNC,SIP_ROUNDS,SIP_FINAL_ROUNDS) \ -PERL_STATIC_INLINE U64 \ -FNC ## _with_state_64 \ - (const unsigned char * const state, const unsigned char *in, const STRLEN inlen) \ -{ \ - const int left = inlen & 7; \ - const U8 *end = in + inlen - left; \ - \ - U64 b = ( ( U64 )(inlen) ) << 56; \ - U64 m; \ - U64 v0 = U8TO64_LE(state); \ - U64 v1 = U8TO64_LE(state+8); \ - U64 v2 = U8TO64_LE(state+16); \ - U64 v3 = U8TO64_LE(state+24); \ - \ - for ( ; in != end; in += 8 ) \ - { \ - m = U8TO64_LE( in ); \ - v3 ^= m; \ - \ - SIP_ROUNDS; \ - \ - v0 ^= m; \ - } \ - \ - switch( left ) \ - { \ - case 7: b |= ( ( U64 )in[ 6] ) << 48; /*FALLTHROUGH*/ \ - case 6: b |= ( ( U64 )in[ 5] ) << 40; /*FALLTHROUGH*/ \ - case 5: b |= ( ( U64 )in[ 4] ) << 32; /*FALLTHROUGH*/ \ - case 4: b |= ( ( U64 )in[ 3] ) << 24; /*FALLTHROUGH*/ \ - case 3: b |= ( ( U64 )in[ 2] ) << 16; /*FALLTHROUGH*/ \ - case 2: b |= ( ( U64 )in[ 1] ) << 8; /*FALLTHROUGH*/ \ - case 1: b |= ( ( U64 )in[ 0] ); break; \ - case 0: break; \ - } \ - \ - v3 ^= b; \ - \ - SIP_ROUNDS; \ - \ - v0 ^= b; \ - \ - v2 ^= 0xff; \ - \ - SIP_FINAL_ROUNDS \ - \ - b = v0 ^ v1 ^ v2 ^ v3; \ - return b; \ -} \ - \ -PERL_STATIC_INLINE U32 \ -FNC ## _with_state \ - (const unsigned char * const state, const unsigned char *in, const STRLEN inlen) \ -{ \ - union { \ - U64 h64; \ - U32 h32[2]; \ - } h; \ - h.h64= FNC ## _with_state_64(state,in,inlen); \ - return h.h32[0] ^ h.h32[1]; \ -} \ - \ - \ -PERL_STATIC_INLINE U32 \ -FNC (const unsigned char * const seed, const unsigned char *in, const STRLEN inlen) \ -{ \ - U64 state[4]; \ - SIPHASH_SEED_STATE(seed,state[0],state[1],state[2],state[3]); \ - return FNC ## _with_state((U8*)state,in,inlen); \ +PERL_STATIC_INLINE U32 +S_perl_hash_with_seed(const U8 * seed, const U8 *str, STRLEN len) { + __PERL_HASH_WORD_TYPE state[PERL_HASH_STATE_WORDS]; + _PERL_HASH_SEED_STATE(seed,(U8*)state); + return _PERL_HASH_WITH_STATE((U8*)state,str,len); } - -PERL_SIPHASH_FNC( - S_perl_hash_siphash_1_3 - ,SIPROUND; - ,SIPROUND;SIPROUND;SIPROUND; -) - -PERL_SIPHASH_FNC( - S_perl_hash_siphash_2_4 - ,SIPROUND;SIPROUND; - ,SIPROUND;SIPROUND;SIPROUND;SIPROUND; -) - -#endif /* defined(CAN64BITHASH) */ - - #endif /*compile once*/ /* diff -Nru perl-5.32.1/hv.h perl-5.34.0/hv.h --- perl-5.32.1/hv.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/hv.h 2021-05-04 06:52:48.000000000 +0000 @@ -36,8 +36,8 @@ HE *hent_next; /* next entry in chain */ HEK *hent_hek; /* hash key */ union { - SV *hent_val; /* scalar value that was hashed */ - Size_t hent_refcount; /* references for this shared hash key */ + SV *hent_val; /* scalar value that was hashed */ + Size_t hent_refcount; /* references for this shared hash key */ } he_valu; }; @@ -140,22 +140,16 @@ }; /* -=head1 Hash Manipulation Functions - =for apidoc AmnU||HEf_SVKEY This flag, used in the length slot of hash entries and magic structures, specifies the structure contains an C pointer where a C pointer is to be expected. (For information only--not to be used). -=head1 Handy Values - =for apidoc ADmnU||Nullhv Null HV pointer. (deprecated - use C<(HV *)NULL> instead) -=head1 Hash Manipulation Functions - =for apidoc Am|char*|HvNAME|HV* stash Returns the package name of a stash, or C if C isn't a stash. See C>, C>. @@ -163,6 +157,10 @@ =for apidoc Am|STRLEN|HvNAMELEN|HV *stash Returns the length of the stash's name. +Disfavored forms of HvNAME and HvNAMELEN; suppress mention of them +=for apidoc Cmh|char*|HvNAME_get|HV* stash +=for apidoc Amh|I32|HvNAMELEN_get|HV* stash + =for apidoc Am|unsigned char|HvNAMEUTF8|HV *stash Returns true if the name is in UTF-8 encoding. @@ -306,16 +304,16 @@ ) /* This macro may go away without notice. */ #define HvNAME_HEK(hv) \ - (SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name ? HvNAME_HEK_NN(hv) : NULL) + (SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name ? HvNAME_HEK_NN(hv) : NULL) #define HvNAME_get(hv) \ - ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \ - ? HEK_KEY(HvNAME_HEK_NN(hv)) : NULL) + ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \ + ? HEK_KEY(HvNAME_HEK_NN(hv)) : NULL) #define HvNAMELEN_get(hv) \ - ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \ - ? HEK_LEN(HvNAME_HEK_NN(hv)) : 0) + ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \ + ? HEK_LEN(HvNAME_HEK_NN(hv)) : 0) #define HvNAMEUTF8(hv) \ - ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \ - ? HEK_UTF8(HvNAME_HEK_NN(hv)) : 0) + ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \ + ? HEK_UTF8(HvNAME_HEK_NN(hv)) : 0) #define HvENAME_HEK_NN(hv) \ ( \ HvAUX(hv)->xhv_name_count > 0 ? HvAUX(hv)->xhv_name_u.xhvnameu_names[0] : \ @@ -324,16 +322,16 @@ HvAUX(hv)->xhv_name_u.xhvnameu_name \ ) #define HvENAME_HEK(hv) \ - (SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name ? HvENAME_HEK_NN(hv) : NULL) + (SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name ? HvENAME_HEK_NN(hv) : NULL) #define HvENAME_get(hv) \ ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvAUX(hv)->xhv_name_count != -1) \ - ? HEK_KEY(HvENAME_HEK_NN(hv)) : NULL) + ? HEK_KEY(HvENAME_HEK_NN(hv)) : NULL) #define HvENAMELEN_get(hv) \ ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvAUX(hv)->xhv_name_count != -1) \ - ? HEK_LEN(HvENAME_HEK_NN(hv)) : 0) + ? HEK_LEN(HvENAME_HEK_NN(hv)) : 0) #define HvENAMEUTF8(hv) \ ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvAUX(hv)->xhv_name_count != -1) \ - ? HEK_UTF8(HvENAME_HEK_NN(hv)) : 0) + ? HEK_UTF8(HvENAME_HEK_NN(hv)) : 0) /* the number of keys (including any placeholders) - NOT PART OF THE API */ #define XHvTOTALKEYS(xhv) ((xhv)->xhv_keys) @@ -385,24 +383,24 @@ #define HeVAL(he) (he)->he_valu.hent_val #define HeHASH(he) HEK_HASH(HeKEY_hek(he)) #define HePV(he,lp) ((HeKLEN(he) == HEf_SVKEY) ? \ - SvPV(HeKEY_sv(he),lp) : \ - ((lp = HeKLEN(he)), HeKEY(he))) + SvPV(HeKEY_sv(he),lp) : \ + ((lp = HeKLEN(he)), HeKEY(he))) #define HeUTF8(he) ((HeKLEN(he) == HEf_SVKEY) ? \ - SvUTF8(HeKEY_sv(he)) : \ - (U32)HeKUTF8(he)) + SvUTF8(HeKEY_sv(he)) : \ + (U32)HeKUTF8(he)) #define HeSVKEY(he) ((HeKEY(he) && \ - HeKLEN(he) == HEf_SVKEY) ? \ - HeKEY_sv(he) : NULL) + HeKLEN(he) == HEf_SVKEY) ? \ + HeKEY_sv(he) : NULL) #define HeSVKEY_force(he) (HeKEY(he) ? \ - ((HeKLEN(he) == HEf_SVKEY) ? \ - HeKEY_sv(he) : \ - newSVpvn_flags(HeKEY(he), \ + ((HeKLEN(he) == HEf_SVKEY) ? \ + HeKEY_sv(he) : \ + newSVpvn_flags(HeKEY(he), \ HeKLEN(he), \ SVs_TEMP | \ ( HeKUTF8(he) ? SVf_UTF8 : 0 ))) : \ - &PL_sv_undef) + &PL_sv_undef) #define HeSVKEY_set(he,sv) ((HeKLEN(he) = HEf_SVKEY), (HeKEY_sv(he) = sv)) #ifndef PERL_CORE @@ -422,8 +420,8 @@ #define HVhek_PLACEHOLD 0x200 /* Internal flag to create placeholder. * (may change, but Storable is a core module) */ #define HVhek_KEYCANONICAL 0x400 /* Internal flag - key is in canonical form. - If the string is UTF-8, it cannot be - converted to bytes. */ + If the string is UTF-8, it cannot be + converted to bytes. */ #define HVhek_MASK 0xFF #define HVhek_ENABLEHVKFLAGS (HVhek_MASK & ~(HVhek_UNSHARED)) @@ -444,9 +442,9 @@ #else # define MALLOC_OVERHEAD 16 # define PERL_HV_ARRAY_ALLOC_BYTES(size) \ - (((size) < 64) \ - ? (size) * sizeof(HE*) \ - : (size) * sizeof(HE*) * 2 - MALLOC_OVERHEAD) + (((size) < 64) \ + ? (size) * sizeof(HE*) \ + : (size) * sizeof(HE*) * 2 - MALLOC_OVERHEAD) #endif /* Flags for hv_iternext_flags. */ @@ -461,33 +459,33 @@ #define share_hek_hek(hek) \ (++(((struct shared_he *)(((char *)hek) \ - - STRUCT_OFFSET(struct shared_he, \ - shared_he_hek))) \ - ->shared_he_he.he_valu.hent_refcount), \ + - STRUCT_OFFSET(struct shared_he, \ + shared_he_hek))) \ + ->shared_he_he.he_valu.hent_refcount), \ hek) #define hv_store_ent(hv, keysv, val, hash) \ ((HE *) hv_common((hv), (keysv), NULL, 0, 0, HV_FETCH_ISSTORE, \ - (val), (hash))) + (val), (hash))) #define hv_exists_ent(hv, keysv, hash) \ cBOOL(hv_common((hv), (keysv), NULL, 0, 0, HV_FETCH_ISEXISTS, 0, (hash))) #define hv_fetch_ent(hv, keysv, lval, hash) \ ((HE *) hv_common((hv), (keysv), NULL, 0, 0, \ - ((lval) ? HV_FETCH_LVALUE : 0), NULL, (hash))) + ((lval) ? HV_FETCH_LVALUE : 0), NULL, (hash))) #define hv_delete_ent(hv, key, flags, hash) \ (MUTABLE_SV(hv_common((hv), (key), NULL, 0, 0, (flags) | HV_DELETE, \ - NULL, (hash)))) + NULL, (hash)))) #define hv_store_flags(hv, key, klen, val, hash, flags) \ ((SV**) hv_common((hv), NULL, (key), (klen), (flags), \ - (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), (val), \ - (hash))) + (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), (val), \ + (hash))) #define hv_store(hv, key, klen, val, hash) \ ((SV**) hv_common_key_len((hv), (key), (klen), \ - (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), \ - (val), (hash))) + (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), \ + (val), (hash))) @@ -496,12 +494,12 @@ #define hv_fetch(hv, key, klen, lval) \ ((SV**) hv_common_key_len((hv), (key), (klen), (lval) \ - ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) \ - : HV_FETCH_JUST_SV, NULL, 0)) + ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) \ + : HV_FETCH_JUST_SV, NULL, 0)) #define hv_delete(hv, key, klen, flags) \ (MUTABLE_SV(hv_common_key_len((hv), (key), (klen), \ - (flags) | HV_DELETE, NULL, 0))) + (flags) | HV_DELETE, NULL, 0))) /* Provide 's' suffix subs for constant strings (and avoid needing to count * chars). See STR_WITH_LEN in handy.h - because these are macros we cant use @@ -524,17 +522,17 @@ #ifdef PERL_CORE # define hv_storehek(hv, hek, val) \ hv_common((hv), NULL, HEK_KEY(hek), HEK_LEN(hek), HEK_UTF8(hek), \ - HV_FETCH_ISSTORE|HV_FETCH_JUST_SV, (val), HEK_HASH(hek)) + HV_FETCH_ISSTORE|HV_FETCH_JUST_SV, (val), HEK_HASH(hek)) # define hv_fetchhek(hv, hek, lval) \ ((SV **) \ hv_common((hv), NULL, HEK_KEY(hek), HEK_LEN(hek), HEK_UTF8(hek), \ - (lval) \ - ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) \ - : HV_FETCH_JUST_SV, \ - NULL, HEK_HASH(hek))) + (lval) \ + ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) \ + : HV_FETCH_JUST_SV, \ + NULL, HEK_HASH(hek))) # define hv_deletehek(hv, hek, flags) \ hv_common((hv), NULL, HEK_KEY(hek), HEK_LEN(hek), HEK_UTF8(hek), \ - (flags)|HV_DELETE, NULL, HEK_HASH(hek)) + (flags)|HV_DELETE, NULL, HEK_HASH(hek)) #endif /* This refcounted he structure is used for storing the hints used for lexical @@ -547,9 +545,7 @@ /* flags for the refcounted_he API */ #define REFCOUNTED_HE_KEY_UTF8 0x00000001 -#ifdef PERL_CORE -# define REFCOUNTED_HE_EXISTS 0x00000002 -#endif +#define REFCOUNTED_HE_EXISTS 0x00000002 #ifdef PERL_CORE @@ -563,10 +559,10 @@ HEK *refcounted_he_hek; /* hint key */ #endif union { - IV refcounted_he_u_iv; - UV refcounted_he_u_uv; - STRLEN refcounted_he_u_len; - void *refcounted_he_u_ptr; /* Might be useful in future */ + IV refcounted_he_u_iv; + UV refcounted_he_u_uv; + STRLEN refcounted_he_u_len; + void *refcounted_he_u_ptr; /* Might be useful in future */ } refcounted_he_val; U32 refcounted_he_refcnt; /* reference count */ /* First byte is flags. Then NUL-terminated value. Then for ithreads, @@ -612,9 +608,9 @@ #ifdef USE_ITHREADS /* A big expression to find the key offset */ #define REF_HE_KEY(chain) \ - ((((chain->refcounted_he_data[0] & 0x60) == 0x40) \ - ? chain->refcounted_he_val.refcounted_he_u_len + 1 : 0) \ - + 1 + chain->refcounted_he_data) + ((((chain->refcounted_he_data[0] & 0x60) == 0x40) \ + ? chain->refcounted_he_val.refcounted_he_u_len + 1 : 0) \ + + 1 + chain->refcounted_he_data) #endif # ifdef USE_ITHREADS diff -Nru perl-5.32.1/hv_macro.h perl-5.34.0/hv_macro.h --- perl-5.32.1/hv_macro.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/hv_macro.h 2020-11-18 22:09:15.000000000 +0000 @@ -1,5 +1,5 @@ -#ifndef PERL_SEEN_HV_MACRO_H /* compile once */ -#define PERL_SEEN_HV_MACRO_H +#ifndef PERL_SEEN_HV_MACRO_H_ /* compile once */ +#define PERL_SEEN_HV_MACRO_H_ #if IVSIZE == 8 #define CAN64BITHASH diff -Nru perl-5.32.1/inline.h perl-5.34.0/inline.h --- perl-5.32.1/inline.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/inline.h 2021-02-21 11:01:31.000000000 +0000 @@ -39,25 +39,41 @@ /* ------------------------------- av.h ------------------------------- */ -PERL_STATIC_INLINE SSize_t -Perl_av_top_index(pTHX_ AV *av) +/* +=for apidoc_section $AV +=for apidoc av_count +Returns the number of elements in the array C. This is the true length of +the array, including any undefined elements. It is always the same as +S>. + +=cut +*/ +PERL_STATIC_INLINE Size_t +Perl_av_count(pTHX_ AV *av) { - PERL_ARGS_ASSERT_AV_TOP_INDEX; + PERL_ARGS_ASSERT_AV_COUNT; assert(SvTYPE(av) == SVt_PVAV); - return AvFILL(av); + return AvFILL(av) + 1; } /* ------------------------------- cv.h ------------------------------- */ +/* +=for apidoc_section $CV +=for apidoc CvGV +Returns the GV associated with the CV C, reifying it if necessary. + +=cut +*/ PERL_STATIC_INLINE GV * Perl_CvGV(pTHX_ CV *sv) { PERL_ARGS_ASSERT_CVGV; return CvNAMED(sv) - ? Perl_cvgv_from_hek(aTHX_ sv) - : ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_gv_u.xcv_gv; + ? Perl_cvgv_from_hek(aTHX_ sv) + : ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_gv_u.xcv_gv; } PERL_STATIC_INLINE I32 * @@ -89,13 +105,13 @@ tmpsv = newSVpvn_flags(orig, *len, SVs_TEMP); tmps = SvPVX(tmpsv); while ((*len)--) { - if (!isSPACE(*orig)) - *tmps++ = *orig; - orig++; + if (!isSPACE(*orig)) + *tmps++ = *orig; + orig++; } *tmps = '\0'; *len = tmps - SvPVX(tmpsv); - return SvPVX(tmpsv); + return SvPVX(tmpsv); } #endif @@ -109,12 +125,12 @@ assert(mg->mg_type == PERL_MAGIC_regex_global); assert(mg->mg_len != -1); if (mg->mg_flags & MGf_BYTES || !DO_UTF8(sv)) - return (STRLEN)mg->mg_len; + return (STRLEN)mg->mg_len; else { - const STRLEN pos = (STRLEN)mg->mg_len; - /* Without this check, we may read past the end of the buffer: */ - if (pos > sv_or_pv_len_utf8(sv, s, len)) return len+1; - return sv_or_pv_pos_u2b(sv, s, pos, NULL); + const STRLEN pos = (STRLEN)mg->mg_len; + /* Without this check, we may read past the end of the buffer: */ + if (pos > sv_or_pv_len_utf8(sv, s, len)) return len+1; + return sv_or_pv_pos_u2b(sv, s, pos, NULL); } } #endif @@ -131,27 +147,27 @@ * This is complicated by the fact that PL_cop_seqmax * may have wrapped around at some point */ if (COP_SEQ_RANGE_LOW(pn) == PERL_PADSEQ_INTRO) - return FALSE; /* not yet introduced */ + return FALSE; /* not yet introduced */ if (COP_SEQ_RANGE_HIGH(pn) == PERL_PADSEQ_INTRO) { /* in compiling scope */ - if ( - (seq > COP_SEQ_RANGE_LOW(pn)) - ? (seq - COP_SEQ_RANGE_LOW(pn) < (U32_MAX >> 1)) - : (COP_SEQ_RANGE_LOW(pn) - seq > (U32_MAX >> 1)) - ) - return TRUE; + if ( + (seq > COP_SEQ_RANGE_LOW(pn)) + ? (seq - COP_SEQ_RANGE_LOW(pn) < (U32_MAX >> 1)) + : (COP_SEQ_RANGE_LOW(pn) - seq > (U32_MAX >> 1)) + ) + return TRUE; } else if ( - (COP_SEQ_RANGE_LOW(pn) > COP_SEQ_RANGE_HIGH(pn)) - ? - ( seq > COP_SEQ_RANGE_LOW(pn) - || seq <= COP_SEQ_RANGE_HIGH(pn)) + (COP_SEQ_RANGE_LOW(pn) > COP_SEQ_RANGE_HIGH(pn)) + ? + ( seq > COP_SEQ_RANGE_LOW(pn) + || seq <= COP_SEQ_RANGE_HIGH(pn)) - : ( seq > COP_SEQ_RANGE_LOW(pn) - && seq <= COP_SEQ_RANGE_HIGH(pn)) + : ( seq > COP_SEQ_RANGE_LOW(pn) + && seq <= COP_SEQ_RANGE_HIGH(pn)) ) - return TRUE; + return TRUE; return FALSE; } #endif @@ -162,9 +178,9 @@ Perl_TOPMARK(pTHX) { DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log, - "MARK top %p %" IVdf "\n", - PL_markstack_ptr, - (IV)*PL_markstack_ptr))); + "MARK top %p %" IVdf "\n", + PL_markstack_ptr, + (IV)*PL_markstack_ptr))); return *PL_markstack_ptr; } @@ -172,9 +188,9 @@ Perl_POPMARK(pTHX) { DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log, - "MARK pop %p %" IVdf "\n", - (PL_markstack_ptr-1), - (IV)*(PL_markstack_ptr-1)))); + "MARK pop %p %" IVdf "\n", + (PL_markstack_ptr-1), + (IV)*(PL_markstack_ptr-1)))); assert((PL_markstack_ptr > PL_markstack) || !"MARK underflow"); return *PL_markstack_ptr--; } @@ -196,18 +212,67 @@ /* ------------------------------- sv.h ------------------------------- */ PERL_STATIC_INLINE bool -Perl_SvTRUE(pTHX_ SV *sv) { - if (!LIKELY(sv)) +Perl_SvTRUE(pTHX_ SV *sv) +{ + PERL_ARGS_ASSERT_SVTRUE; + + if (UNLIKELY(sv == NULL)) + return FALSE; + SvGETMAGIC(sv); + return SvTRUE_nomg_NN(sv); +} + +PERL_STATIC_INLINE bool +Perl_SvTRUE_nomg(pTHX_ SV *sv) +{ + PERL_ARGS_ASSERT_SVTRUE_NOMG; + + if (UNLIKELY(sv == NULL)) return FALSE; + return SvTRUE_nomg_NN(sv); +} + +PERL_STATIC_INLINE bool +Perl_SvTRUE_NN(pTHX_ SV *sv) +{ + PERL_ARGS_ASSERT_SVTRUE_NN; + SvGETMAGIC(sv); return SvTRUE_nomg_NN(sv); } +PERL_STATIC_INLINE bool +Perl_SvTRUE_common(pTHX_ SV * sv, const bool sv_2bool_is_fallback) +{ + PERL_ARGS_ASSERT_SVTRUE_COMMON; + + if (UNLIKELY(SvIMMORTAL_INTERP(sv))) + return SvIMMORTAL_TRUE(sv); + + if (! SvOK(sv)) + return FALSE; + + if (SvPOK(sv)) + return SvPVXtrue(sv); + + if (SvIOK(sv)) + return SvIVX(sv) != 0; /* casts to bool */ + + if (SvROK(sv) && !(SvOBJECT(SvRV(sv)) && HvAMAGIC(SvSTASH(SvRV(sv))))) + return TRUE; + + if (sv_2bool_is_fallback) + return sv_2bool_nomg(sv); + + return isGV_with_GP(sv); +} + + PERL_STATIC_INLINE SV * Perl_SvREFCNT_inc(SV *sv) { if (LIKELY(sv != NULL)) - SvREFCNT(sv)++; + SvREFCNT(sv)++; return sv; } PERL_STATIC_INLINE SV * @@ -222,17 +287,17 @@ Perl_SvREFCNT_inc_void(SV *sv) { if (LIKELY(sv != NULL)) - SvREFCNT(sv)++; + SvREFCNT(sv)++; } PERL_STATIC_INLINE void Perl_SvREFCNT_dec(pTHX_ SV *sv) { if (LIKELY(sv != NULL)) { - U32 rc = SvREFCNT(sv); - if (LIKELY(rc > 1)) - SvREFCNT(sv) = rc - 1; - else - Perl_sv_free2(aTHX_ sv, rc); + U32 rc = SvREFCNT(sv); + if (LIKELY(rc > 1)) + SvREFCNT(sv) = rc - 1; + else + Perl_sv_free2(aTHX_ sv, rc); } } @@ -244,9 +309,9 @@ PERL_ARGS_ASSERT_SVREFCNT_DEC_NN; if (LIKELY(rc > 1)) - SvREFCNT(sv) = rc - 1; + SvREFCNT(sv) = rc - 1; else - Perl_sv_free2(aTHX_ sv, rc); + Perl_sv_free2(aTHX_ sv, rc); } PERL_STATIC_INLINE void @@ -263,7 +328,7 @@ PERL_ARGS_ASSERT_SVAMAGIC_OFF; if (SvROK(sv) && SvOBJECT(SvRV(sv))) - HvAMAGIC_off(SvSTASH(SvRV(sv))); + HvAMAGIC_off(SvSTASH(SvRV(sv))); } PERL_STATIC_INLINE U32 @@ -284,9 +349,9 @@ { PERL_ARGS_ASSERT_SV_OR_PV_POS_U2B; if (SvGAMAGIC(sv)) { - U8 *hopped = utf8_hop((U8 *)pv, pos); - if (lenp) *lenp = (STRLEN)(utf8_hop(hopped, *lenp) - hopped); - return (STRLEN)(hopped - (U8 *)pv); + U8 *hopped = utf8_hop((U8 *)pv, pos); + if (lenp) *lenp = (STRLEN)(utf8_hop(hopped, *lenp) - hopped); + return (STRLEN)(hopped - (U8 *)pv); } return sv_pos_u2b_flags(sv,pos,lenp,SV_CONST_RETURN); } @@ -295,7 +360,7 @@ /* ------------------------------- utf8.h ------------------------------- */ /* -=head1 Unicode Support +=for apidoc_section $unicode */ PERL_STATIC_INLINE void @@ -340,7 +405,7 @@ /* An invariant is trivially returned */ if (expectlen == 1) { - return uv; + return uv; } /* Remove the leading bits that indicate the number of bytes, leaving just @@ -502,7 +567,7 @@ /* Process per-byte */ while (x < send) { - if (! UTF8_IS_INVARIANT(*x)) { + if (! UTF8_IS_INVARIANT(*x)) { if (ep) { *ep = x; } @@ -677,7 +742,7 @@ /* Process per-byte */ while (x < e) { - if (! UTF8_IS_INVARIANT(*x)) { + if (! UTF8_IS_INVARIANT(*x)) { count++; } @@ -1506,15 +1571,15 @@ * In other words: in Perl UTF-8 is not just for Unicode. */ if (off >= 0) { - while (off--) - s += UTF8SKIP(s); + while (off--) + s += UTF8SKIP(s); } else { - while (off++) { - s--; - while (UTF8_IS_CONTINUATION(*s)) - s--; - } + while (off++) { + s--; + while (UTF8_IS_CONTINUATION(*s)) + s--; + } } GCC_DIAG_IGNORE(-Wcast-qual) return (U8 *)s; @@ -1868,7 +1933,7 @@ /* ------------------------------- perl.h ----------------------------- */ /* -=head1 Miscellaneous Functions +=for apidoc_section $utility =for apidoc is_safe_syscall @@ -1954,15 +2019,17 @@ PERL_ARGS_ASSERT_LOSSLESS_NV_TO_IV; -# if defined(Perl_isnan) - +# if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan) + /* Normally any comparison with a NaN returns false; if we can't rely + * on that behaviour, check explicitly */ if (UNLIKELY(Perl_isnan(nv))) { return FALSE; } - # endif - if (UNLIKELY(nv < IV_MIN) || UNLIKELY(nv > IV_MAX)) { + /* Written this way so that with an always-false NaN comparison we + * return false */ + if (!(LIKELY(nv >= (NV) IV_MIN) && LIKELY(nv < IV_MAX_P1))) { return FALSE; } @@ -1976,36 +2043,6 @@ #endif -/* ------------------ regcomp.c, toke.c ------------ */ - -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) - -/* - - regcurly - a little FSA that accepts {\d+,?\d*} - Pulled from reg.c. - */ -PERL_STATIC_INLINE bool -S_regcurly(const char *s) -{ - PERL_ARGS_ASSERT_REGCURLY; - - if (*s++ != '{') - return FALSE; - if (!isDIGIT(*s)) - return FALSE; - while (isDIGIT(*s)) - s++; - if (*s == ',') { - s++; - while (isDIGIT(*s)) - s++; - } - - return *s == '}'; -} - -#endif - /* ------------------ pp.c, regcomp.c, toke.c, universal.c ------------ */ #if defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UNIVERSAL_C) @@ -2026,10 +2063,10 @@ case REGEX_DEPENDS_CHARSET: return DEPENDS_PAT_MODS; case REGEX_LOCALE_CHARSET: return LOCALE_PAT_MODS; case REGEX_UNICODE_CHARSET: return UNICODE_PAT_MODS; - case REGEX_ASCII_RESTRICTED_CHARSET: return ASCII_RESTRICT_PAT_MODS; - case REGEX_ASCII_MORE_RESTRICTED_CHARSET: - *lenp = 2; - return ASCII_MORE_RESTRICT_PAT_MODS; + case REGEX_ASCII_RESTRICTED_CHARSET: return ASCII_RESTRICT_PAT_MODS; + case REGEX_ASCII_MORE_RESTRICTED_CHARSET: + *lenp = 2; + return ASCII_MORE_RESTRICT_PAT_MODS; } /* The NOT_REACHED; hides an assert() which has a rather complex * definition in perl.h. */ @@ -2078,7 +2115,7 @@ return gimme; cxix = PL_curstackinfo->si_cxsubix; if (cxix < 0) - return G_VOID; + return PL_curstackinfo->si_type == PERLSI_SORT ? G_SCALAR: G_VOID; assert(cxstack[cxix].blk_gimme & G_WANT); return (cxstack[cxix].blk_gimme & G_WANT); } @@ -2276,12 +2313,8 @@ PERL_STATIC_INLINE void -Perl_cx_pusheval(pTHX_ PERL_CONTEXT *cx, OP *retop, SV *namesv) +Perl_push_evalortry_common(pTHX_ PERL_CONTEXT *cx, OP *retop, SV *namesv) { - PERL_ARGS_ASSERT_CX_PUSHEVAL; - - cx->blk_eval.old_cxsubix = PL_curstackinfo->si_cxsubix; - PL_curstackinfo->si_cxsubix= cx - PL_curstackinfo->si_cxstack; cx->blk_eval.retop = retop; cx->blk_eval.old_namesv = namesv; cx->blk_eval.old_eval_root = PL_eval_root; @@ -2294,6 +2327,29 @@ cx->blk_u16 = (PL_in_eval & 0x3F) | ((U16)PL_op->op_type << 7); } +PERL_STATIC_INLINE void +Perl_cx_pusheval(pTHX_ PERL_CONTEXT *cx, OP *retop, SV *namesv) +{ + PERL_ARGS_ASSERT_CX_PUSHEVAL; + + Perl_push_evalortry_common(aTHX_ cx, retop, namesv); + + cx->blk_eval.old_cxsubix = PL_curstackinfo->si_cxsubix; + PL_curstackinfo->si_cxsubix = cx - PL_curstackinfo->si_cxstack; +} + +PERL_STATIC_INLINE void +Perl_cx_pushtry(pTHX_ PERL_CONTEXT *cx, OP *retop) +{ + PERL_ARGS_ASSERT_CX_PUSHTRY; + + Perl_push_evalortry_common(aTHX_ cx, retop, NULL); + + /* Don't actually change it, just store the current value so it's restored + * by the common popeval */ + cx->blk_eval.old_cxsubix = PL_curstackinfo->si_cxsubix; +} + PERL_STATIC_INLINE void Perl_cx_popeval(pTHX_ PERL_CONTEXT *cx) @@ -2439,7 +2495,7 @@ /* ------------------ util.h ------------------------------------------- */ /* -=head1 Miscellaneous Functions +=for apidoc_section $string =for apidoc foldEQ @@ -2463,9 +2519,9 @@ assert(len >= 0); while (len--) { - if (*a != *b && *a != PL_fold[*b]) - return 0; - a++,b++; + if (*a != *b && *a != PL_fold[*b]) + return 0; + a++,b++; } return 1; } @@ -2486,15 +2542,16 @@ assert(len >= 0); while (len--) { - if (*a != *b && *a != PL_fold_latin1[*b]) { - return 0; - } - a++, b++; + if (*a != *b && *a != PL_fold_latin1[*b]) { + return 0; + } + a++, b++; } return 1; } /* +=for apidoc_section $locale =for apidoc foldEQ_locale Returns true if the leading C bytes of the strings C and C are the @@ -2506,7 +2563,6 @@ PERL_STATIC_INLINE I32 Perl_foldEQ_locale(const char *s1, const char *s2, I32 len) { - dVAR; const U8 *a = (const U8 *)s1; const U8 *b = (const U8 *)s2; @@ -2515,14 +2571,15 @@ assert(len >= 0); while (len--) { - if (*a != *b && *a != PL_fold_locale[*b]) - return 0; - a++,b++; + if (*a != *b && *a != PL_fold_locale[*b]) + return 0; + a++,b++; } return 1; } /* +=for apidoc_section $string =for apidoc my_strnlen The C library C if available, or a Perl implementation of it. @@ -2580,23 +2637,31 @@ { /* This implements a (mostly) thread-safe, sequential-call-safe getenv(). * - * It's (mostly) thread-safe because it uses a mutex to prevent - * simultaneous access from other threads that use the same mutex, and - * makes a copy of the result before releasing that mutex. All of the Perl - * core uses that mutex, but, like all mutexes, everything has to cooperate - * for it to completely work. It is possible for code from, say XS, to not - * use this mutex, defeating the safety. + * It's (mostly) thread-safe because it uses a mutex to prevent other + * threads (that look at this mutex) from destroying the result before this + * routine has a chance to copy the result to a place that won't be + * destroyed before the caller gets a chance to handle it. That place is a + * mortal SV. khw chose this over SAVEFREEPV because he is under the + * impression that the SV will hang around longer under more circumstances + * + * The reason it isn't completely thread-safe is that other code could + * simply not pay attention to the mutex. All of the Perl core uses the + * mutex, but it is possible for code from, say XS, to not use this mutex, + * defeating the safety. * - * On some platforms, getenv() is not sequential-call-safe, because - * subsequent calls destroy the static storage inside the C library - * returned by an earlier call. The result must be copied or completely - * acted upon before a subsequent getenv call. Those calls could come from - * another thread. Again, making a copy while controlling the mutex - * prevents these problems.. + * getenv() returns, in some implementations, a pointer to a spot in the + * **environ array, which could be invalidated at any time by this or + * another thread changing the environment. Other implementations copy the + * **environ value to a static buffer, returning a pointer to that. That + * buffer might or might not be invalidated by a getenv() call in another + * thread. If it does get zapped, we need an exclusive lock. Otherwise, + * many getenv() calls can safely be running simultaneously, so a + * many-reader (but no simultaneous writers) lock is ok. There is a + * Configure probe to see if another thread destroys the buffer, and the + * mutex is defined accordingly. * - * To prevent leaks, the copy is made by creating a new SV containing it, - * mortalizing the SV, and returning the SV's string (the copy). Thus this - * is a drop-in replacement for getenv(). + * But in all cases, using the mutex prevents these problems, as long as + * all code uses the same mutex.. * * A complication is that this can be called during phases where the * mortalization process isn't available. These are in interpreter @@ -2616,15 +2681,152 @@ return getenv(str); } - ENV_LOCK; +#ifdef PERL_MEM_LOG + + /* A major complication arises under PERL_MEM_LOG. When that is active, + * every memory allocation may result in logging, depending on the value of + * ENV{PERL_MEM_LOG} at the moment. That means, as we create the SV for + * saving ENV{foo}'s value (but before saving it), the logging code will + * call us recursively to find out what ENV{PERL_MEM_LOG} is. Without some + * care that could lead to: 1) infinite recursion; or 2) deadlock (trying to + * lock a boolean mutex recursively); 3) destroying the getenv() static + * buffer; or 4) destroying the temporary created by this for the copy + * causes a log entry to be made which could cause a new temporary to be + * created, which will need to be destroyed at some point, leading to an + * infinite loop. + * + * The solution adopted here (after some gnashing of teeth) is to detect + * the recursive calls and calls from the logger, and treat them specially. + * Let's say we want to do getenv("foo"). We first find + * getenv(PERL_MEM_LOG) and save it to a fixed-length per-interpreter + * variable, so no temporary is required. Then we do getenv(foo}, and in + * the process of creating a temporary to save it, this function will be + * called recursively to do a getenv(PERL_MEM_LOG). On the recursed call, + * we detect that it is such a call and return our saved value instead of + * locking and doing a new getenv(). This solves all of problems 1), 2), + * and 3). Because all the getenv()s are done while the mutex is locked, + * the state cannot have changed. To solve 4), we don't create a temporary + * when this is called from the logging code. That code disposes of the + * return value while the mutex is still locked. + * + * The value of getenv(PERL_MEM_LOG) can be anything, but only initial + * digits and 3 particular letters are significant; the rest are ignored by + * the memory logging code. Thus the per-interpreter variable only needs + * to be large enough to save the significant information, the size of + * which is known at compile time. The first byte is extra, reserved for + * flags for our use. To protect against overflowing, only the reserved + * byte, as many digits as don't overflow, and the three letters are + * stored. + * + * The reserved byte has two bits: + * 0x1 if set indicates that if we get here, it is a recursive call of + * getenv() + * 0x2 if set indicates that the call is from the logging code. + * + * If the flag indicates this is a recursive call, just return the stored + * value of PL_mem_log; An empty value gets turned into NULL. */ + if (strEQ(str, "PERL_MEM_LOG") && PL_mem_log[0] & 0x1) { + if (PL_mem_log[1] == '\0') { + return NULL; + } else { + return PL_mem_log + 1; + } + } + +#endif + + GETENV_LOCK; + +#ifdef PERL_MEM_LOG + + /* Here we are in a critical section. As explained above, we do our own + * getenv(PERL_MEM_LOG), saving the result safely. */ + ret = getenv("PERL_MEM_LOG"); + if (ret == NULL) { /* No logging active */ + + /* Return that immediately if called from the logging code */ + if (PL_mem_log[0] & 0x2) { + GETENV_UNLOCK; + return NULL; + } + + PL_mem_log[1] = '\0'; + } + else { + char *mem_log_meat = PL_mem_log + 1; /* first byte reserved */ + + /* There is nothing to prevent the value of PERL_MEM_LOG from being an + * extremely long string. But we want only a few characters from it. + * PL_mem_log has been made large enough to hold just the ones we need. + * First the file descriptor. */ + if (isDIGIT(*ret)) { + const char * s = ret; + if (UNLIKELY(*s == '0')) { + + /* Reduce multiple leading zeros to a single one. This is to + * allow the caller to change what to do with leading zeros. */ + *mem_log_meat++ = '0'; + s++; + while (*s == '0') { + s++; + } + } + /* If the input overflows, copy just enough for the result to also + * overflow, plus 1 to make sure */ + while (isDIGIT(*s) && s < ret + TYPE_DIGITS(UV) + 1) { + *mem_log_meat++ = *s++; + } + } + + /* Then each of the three significant characters */ + if (strchr(ret, 'm')) { + *mem_log_meat++ = 'm'; + } + if (strchr(ret, 's')) { + *mem_log_meat++ = 's'; + } + if (strchr(ret, 't')) { + *mem_log_meat++ = 't'; + } + *mem_log_meat = '\0'; + + assert(mem_log_meat < PL_mem_log + sizeof(PL_mem_log)); + } + + /* If we are being called from the logger, it only needs the significant + * portion of PERL_MEM_LOG, and doesn't need a safe copy */ + if (PL_mem_log[0] & 0x2) { + assert(strEQ(str, "PERL_MEM_LOG")); + GETENV_UNLOCK; + return PL_mem_log + 1; + } + + /* Here is a generic getenv(). This could be a getenv("PERL_MEM_LOG") that + * is coming from other than the logging code, so it should be treated the + * same as any other getenv(), returning the full value, not just the + * significant part, and having its value saved. Set the flag that + * indicates any call to this routine will be a recursion from here */ + PL_mem_log[0] = 0x1; + +#endif + + /* Now get the value of the real desired variable, and save a copy */ ret = getenv(str); if (ret != NULL) { ret = SvPVX(sv_2mortal(newSVpv(ret, 0))); } - ENV_UNLOCK; + GETENV_UNLOCK; + +#ifdef PERL_MEM_LOG + + /* Clear the buffer */ + Zero(PL_mem_log, sizeof(PL_mem_log), char); + +#endif + return ret; } diff -Nru perl-5.32.1/INSTALL perl-5.34.0/INSTALL --- perl-5.32.1/INSTALL 2020-12-18 13:52:23.000000000 +0000 +++ perl-5.34.0/INSTALL 2021-05-04 23:28:28.000000000 +0000 @@ -89,10 +89,10 @@ the most important issues are listed below, but you should refer to F for more detailed information. -B This version is not binary compatible with versions of Perl -earlier than 5.32.0. If you have built extensions (i.e. modules that -include C code) using an earlier version of Perl, you will need to -rebuild and reinstall those extensions. +B This version is not binary compatible with earlier versions +of Perl. If you have built extensions (i.e. modules that include C code) +using an earlier version of Perl, you will need to rebuild and reinstall +those extensions. Pure perl modules without XS or C code should continue to work fine without reinstallation. See the discussion below on @@ -132,7 +132,31 @@ Configure -h -to get a listing. See the F file for a complete list of +to get a listing. + +Many Configure switches are expressed as C pairs, for example: + + -Dcc=clang + +Sometimes the value to be supplied for a switch is a string which contains +spaces. In that case, the value needs to be quoted so as to delimit that +"shell word" from any following switch. Example: + + sh ./Configure -des \ + -Doptimize="-O2 -pipe -fstack-protector -fno-strict-aliasing" \ + -Dusedevel + +Once Configure has run, you will be able to access configuration data via +entries in the file F. + + config_arg0='./Configure' + config_args='-des -Doptimize=-O2 -pipe -fstack-protector -fno-strict-aliasing -Dusedevel' + config_argc=3 + config_arg1='-des' + config_arg2='-Doptimize=-O2 -pipe -fstack-protector -fno-strict-aliasing' + config_arg3='-Dusedevel' + +See the F file for a complete list of Configure variables you can set and their definitions. =over 4 @@ -368,17 +392,16 @@ Since Perl 5.18 we have included support for multiple hash functions, although from time to time we change which functions we support, -and which function is default (currently SBOX+STADTX on 64 bit builds +and which function is default (currently SBOX+SIPHASH13 on 64 bit builds and SBOX+ZAPHOD32 for 32 bit builds). You can choose a different algorithm by defining one of the following symbols during configure. -Note that there security implications of which hash function you choose +Note that there are security implications regarding which hash function you choose to use. The functions are listed roughly by how secure they are believed to be, with the one believed to be most secure at release time being PERL_HASH_FUNC_SIPHASH. PERL_HASH_FUNC_SIPHASH PERL_HASH_FUNC_SIPHASH13 PERL_HASH_FUNC_ZAPHOD32 - PERL_HASH_FUNC_STADTX In addition, these, (or custom hash functions), may be "fronted" by the SBOX32 hash function for keys under a chosen size. This hash function is @@ -388,10 +411,10 @@ terms of performance and more importantly in terms of memory. SBOX32 requires 1k of storage per character it can hash, and it must populate that storage with 256 32-bit random values as well. In practice the RNG we use -for seeding the SBOX32 storage is very efficient and populating the table +for seeding the SBOX32 storage is very efficient, and populating the table required for hashing even fairly long keys is negligible as we only do it -during startup. By default we build with SBOX32 enabled, but you change that -by setting +during startup. By default we build with SBOX32 enabled, but you can change +that by setting PERL_HASH_USE_SBOX32_ALSO @@ -506,7 +529,7 @@ To build a shared libperl, the environment variable controlling shared library search (LD_LIBRARY_PATH in most systems, DYLD_LIBRARY_PATH for Darwin, LD_LIBRARY_PATH/SHLIB_PATH -for HP-UX, LIBPATH for AIX, PATH for Cygwin) must be set up to include +for HP-UX, LIBPATH for AIX and z/OS, PATH for Cygwin) must be set up to include the Perl build directory because that's where the shared libperl will be created. Configure arranges makefile to have the correct shared library search settings. You can find the name of the environment @@ -615,7 +638,7 @@ =item Directories for the perl distribution -By default, Configure will use the following directories for 5.32.1. +By default, Configure will use the following directories for 5.34.0. $version is the full perl version number, including subversion, e.g. 5.12.3, and $archname is a string like sun4-sunos, determined by Configure. The full definitions of all Configure @@ -1545,10 +1568,11 @@ =item LD_LIBRARY_PATH If you run into dynamic loading problems, check your setting of -the LD_LIBRARY_PATH environment variable. If you're creating a static -Perl library (libperl.a rather than libperl.so) it should build -fine with LD_LIBRARY_PATH unset, though that may depend on details -of your local setup. +the LD_LIBRARY_PATH environment variable (or on some systems the equivalent +with a different name, see L). If you're +creating a static Perl library (libperl.a rather than libperl.so) it should +build fine with LD_LIBRARY_PATH unset, though that may depend on details of +your local setup. =item nm extraction @@ -2437,8 +2461,7 @@ =head1 Coexistence with earlier versions of perl 5 -Perl 5.32.1 is not binary compatible with versions of Perl earlier than -5.32.0. +Perl 5.34.0 is not binary compatible with earlier versions of Perl. In other words, you will have to recompile your XS modules. In general, you can usually safely upgrade from one stable version of Perl @@ -2513,9 +2536,9 @@ libraries after 5.6.0, but not for executables. TODO?) One convenient way to do this is by using a separate prefix for each version, such as - sh Configure -Dprefix=/opt/perl5.32.1 + sh Configure -Dprefix=/opt/perl5.34.0 -and adding /opt/perl5.32.1/bin to the shell PATH variable. Such users +and adding /opt/perl5.34.0/bin to the shell PATH variable. Such users may also wish to add a symbolic link /usr/local/bin/perl so that scripts can still start with #!/usr/local/bin/perl. @@ -2528,13 +2551,13 @@ subversions may not have all the compatibility wrinkles ironed out yet. -=head2 Upgrading from 5.31.11 or earlier +=head2 Upgrading from 5.33.7 or earlier -B Perl modules having binary parts (meaning that a C compiler is used) will have to be recompiled to be -used with 5.32.1. If you find you do need to rebuild an extension with -5.32.1, you may safely do so without disturbing the older +used with 5.34.0. If you find you do need to rebuild an extension with +5.34.0, you may safely do so without disturbing the older installations. (See L<"Coexistence with earlier versions of perl 5"> above.) @@ -2567,15 +2590,15 @@ print("$f\n"); } -in Linux with perl-5.32.1 is as follows (under $Config{prefix}): +in Linux with perl-5.34.0 is as follows (under $Config{prefix}): ./bin/perl - ./lib/perl5/5.32.1/strict.pm - ./lib/perl5/5.32.1/warnings.pm - ./lib/perl5/5.32.1/i686-linux/File/Glob.pm - ./lib/perl5/5.32.1/feature.pm - ./lib/perl5/5.32.1/XSLoader.pm - ./lib/perl5/5.32.1/i686-linux/auto/File/Glob/Glob.so + ./lib/perl5/5.34.0/strict.pm + ./lib/perl5/5.34.0/warnings.pm + ./lib/perl5/5.34.0/i686-linux/File/Glob.pm + ./lib/perl5/5.34.0/feature.pm + ./lib/perl5/5.34.0/XSLoader.pm + ./lib/perl5/5.34.0/i686-linux/auto/File/Glob/Glob.so Secondly, for perl-5.10.1, the Debian perl-base package contains 591 files, (of which 510 are for lib/unicore) totaling about 3.5MB in its diff -Nru perl-5.32.1/INTERN.h perl-5.34.0/INTERN.h --- perl-5.32.1/INTERN.h 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/INTERN.h 2020-10-04 22:17:12.000000000 +0000 @@ -19,8 +19,7 @@ #undef EXTCONST #undef dEXTCONST -# if (defined(WIN32) && defined(__MINGW32__) && ! defined(PERL_IS_MINIPERL)) \ - || defined(__SYMBIAN32__) +# if (defined(WIN32) && defined(__MINGW32__) && ! defined(PERL_IS_MINIPERL)) # ifdef __cplusplus # define EXT __declspec(dllexport) # define dEXT diff -Nru perl-5.32.1/intrpvar.h perl-5.34.0/intrpvar.h --- perl-5.32.1/intrpvar.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/intrpvar.h 2021-05-04 06:52:48.000000000 +0000 @@ -10,10 +10,6 @@ #include "handy.h" -/* -=head1 Per-Interpreter Variables -*/ - /* These variables are per-interpreter in threaded/multiplicity builds, * global otherwise. @@ -40,7 +36,7 @@ PERLVAR(I, stack_max, SV **) PERLVAR(I, savestack, ANY *) /* items that need to be restored when - LEAVEing scopes we've ENTERed */ + LEAVEing scopes we've ENTERed */ PERLVAR(I, savestack_ix, I32) PERLVAR(I, savestack_max, I32) @@ -53,13 +49,13 @@ PERLVARI(I, tmps_floor, SSize_t, -1) PERLVAR(I, tmps_max, SSize_t) /* first unalloced slot in tmps stack */ -PERLVARI(I, sub_generation, U32, 1) /* incr to invalidate method cache */ - PERLVAR(I, markstack, I32 *) /* stack_sp locations we're - remembering */ + remembering */ PERLVAR(I, markstack_ptr, I32 *) PERLVAR(I, markstack_max, I32 *) +PERLVARI(I, sub_generation, U32, 1) /* incr to invalidate method cache */ + #ifdef PERL_HASH_RANDOMIZE_KEYS #ifdef USE_PERL_PERTURB_KEYS PERLVARI(I, hash_rand_bits_enabled, U8, 1) /* used to randomize hash stuff 0 == no-random, 1 == random, 2 == determinsitic */ @@ -94,24 +90,17 @@ PERLVAR(I, delaymagic, U16) /* ($<,$>) = ... */ /* -=for apidoc Amn|GV *|PL_defgv - -The GV representing C<*_>. Useful for access to C<$_>. - -=cut -*/ - -PERLVAR(I, localizing, U8) /* are we processing a local() list? */ -PERLVAR(I, in_eval, U8) /* trap "fatal" errors? */ -PERLVAR(I, defgv, GV *) /* the *_ glob */ -/* - +=for apidoc_section $warning =for apidoc mn|U8|PL_dowarn The C variable that roughly corresponds to Perl's C<$^W> warning variable. However, C<$^W> is treated as a boolean, whereas C is a collection of flag bits. +On threaded perls, each thread has an independent copy of this variable; +each initialized at creation time with the current value of the creating +thread's copy. + =cut */ @@ -126,10 +115,30 @@ #undef PERL___I /* +=for apidoc Amn|GV *|PL_defgv + +The GV representing C<*_>. Useful for access to C<$_>. + +On threaded perls, each thread has an independent copy of this variable; +each initialized at creation time with the current value of the creating +thread's copy. + +=cut +*/ + +PERLVAR(I, localizing, U8) /* are we processing a local() list? */ +PERLVAR(I, in_eval, U8) /* trap "fatal" errors? */ +PERLVAR(I, defgv, GV *) /* the *_ glob */ + +/* =for apidoc Amn|HV*|PL_curstash The stash for the package code will be compiled into. +On threaded perls, each thread has an independent copy of this variable; +each initialized at creation time with the current value of the creating +thread's copy. + =cut */ @@ -143,6 +152,10 @@ The currently active COP (control op) roughly representing the current statement in the source. +On threaded perls, each thread has an independent copy of this variable; +each initialized at creation time with the current value of the creating +thread's copy. + =cut */ @@ -150,7 +163,7 @@ PERLVAR(I, curstack, AV *) /* THE STACK */ PERLVAR(I, curstackinfo, PERL_SI *) /* current stack + context */ PERLVAR(I, mainstack, AV *) /* the stack when nothing funny is - happening */ + happening */ /* memory management */ PERLVAR(I, sv_count, IV) /* how many SV* are currently allocated */ @@ -171,16 +184,18 @@ PERLVAR(I, comppad, PAD *) /* storage for lexically scoped temporaries */ /* +=for apidoc_section $SV =for apidoc Amn|SV|PL_sv_undef -This is the C SV. Always refer to this as C<&PL_sv_undef>. +This is the C SV. It is readonly. Always refer to this as +C<&PL_sv_undef>. =for apidoc Amn|SV|PL_sv_no -This is the C SV. See C>. Always refer to this as -C<&PL_sv_no>. +This is the C SV. It is readonly. See C>. Always refer +to this as C<&PL_sv_no>. =for apidoc Amn|SV|PL_sv_yes -This is the C SV. See C>. Always refer to this as -C<&PL_sv_yes>. +This is the C SV. It is readonly. See C>. Always refer to +this as C<&PL_sv_yes>. =for apidoc Amn|SV|PL_sv_zero This readonly SV has a zero numeric value and a C<"0"> string value. It's @@ -204,7 +219,19 @@ PERLVAR(I, padname_undef, PADNAME) PERLVAR(I, padname_const, PADNAME) -PERLVAR(I, Sv, SV *) /* used to hold temporary values */ + +/* +=for apidoc Cmn||PL_Sv + +A scratch pad SV for whatever temporary use you need. Chiefly used as a +fallback by macros on platforms where L> is +unavailable, and which would otherwise evaluate their SV parameter more than +once. + +=cut +*/ +PERLVAR(I, Sv, SV *) + PERLVAR(I, parser, yy_parser *) /* current parser state */ PERLVAR(I, stashcache, HV *) /* Cache to speed up S_method_common */ @@ -222,7 +249,7 @@ */ PERLVAR(I, na, STRLEN) /* for use in SvPV when length is - Not Applicable */ + Not Applicable */ /* stat stuff */ PERLVAR(I, statcache, Stat_t) /* _ */ @@ -230,18 +257,31 @@ PERLVARI(I, statname, SV *, NULL) /* +=for apidoc_section $io =for apidoc mn|SV*|PL_rs The input record separator - C<$/> in Perl space. +On threaded perls, each thread has an independent copy of this variable; +each initialized at creation time with the current value of the creating +thread's copy. + =for apidoc mn|GV*|PL_last_in_gv The GV which was last used for a filehandle input operation. (C<< >>) +On threaded perls, each thread has an independent copy of this variable; +each initialized at creation time with the current value of the creating +thread's copy. + =for apidoc mn|GV*|PL_ofsgv The glob containing the output field separator - C<*,> in Perl space. +On threaded perls, each thread has an independent copy of this variable; +each initialized at creation time with the current value of the creating +thread's copy. + =cut */ @@ -278,9 +318,10 @@ PERLVAR(I, efloatsize, STRLEN) PERLVARI(I, dumpindent, U16, 4) /* number of blanks per dump - indentation level */ + indentation level */ /* +=for apidoc_section $embedding =for apidoc Amn|U8|PL_exit_flags Contains flags controlling perl's behaviour on exit(): @@ -313,6 +354,10 @@ =for apidoc Amnh||PERL_EXIT_DESTRUCT_END =for apidoc Amnh||PERL_EXIT_WARN +On threaded perls, each thread has an independent copy of this variable; +each initialized at creation time with the current value of the creating +thread's copy. + =cut */ @@ -334,6 +379,7 @@ PERLVARA(I, colors,6, char *) /* values from PERL_RE_COLORS env var */ /* +=for apidoc_section $optree_construction =for apidoc Amn|peep_t|PL_peepp Pointer to the per-subroutine peephole optimiser. This is a function @@ -351,6 +397,10 @@ structure, rather than just at the top level, it is likely to be more convenient to wrap the L hook. +On threaded perls, each thread has an independent copy of this variable; +each initialized at creation time with the current value of the creating +thread's copy. + =cut */ @@ -375,6 +425,10 @@ rather than throughout the structure, it is likely to be more convenient to wrap the L hook. +On threaded perls, each thread has an independent copy of this variable; +each initialized at creation time with the current value of the creating +thread's copy. + =cut */ @@ -389,6 +443,10 @@ When you replace this variable, it is considered a good practice to store the possibly previously installed hook and that you recall it inside your own. +On threaded perls, each thread has an independent copy of this variable; +each initialized at creation time with the current value of the creating +thread's copy. + =cut */ @@ -434,7 +492,7 @@ PERLVAR(I, basetime, Time_t) /* $^T */ PERLVARI(I, maxsysfd, I32, MAXSYSFD) - /* top fd to pass to subprocesses */ + /* top fd to pass to subprocesses */ PERLVAR(I, statusvalue, I32) /* $? */ #ifdef VMS PERLVAR(I, statusvalue_vms, U32) @@ -463,12 +521,17 @@ PERLVAR(I, DBline, GV *) /* *DB::line */ /* +=for apidoc_section $debugging =for apidoc mn|GV *|PL_DBsub When Perl is run in debugging mode, with the B<-d> switch, this GV contains the SV which holds the name of the sub being debugged. This is the C variable which corresponds to Perl's $DB::sub variable. See C>. +On threaded perls, each thread has an independent copy of this variable; +each initialized at creation time with the current value of the creating +thread's copy. + =for apidoc mn|SV *|PL_DBsingle When Perl is run in debugging mode, with the B<-d> switch, this SV is a boolean which indicates whether subs are being single-stepped. @@ -476,11 +539,19 @@ variable which corresponds to Perl's $DB::single variable. See C>. +On threaded perls, each thread has an independent copy of this variable; +each initialized at creation time with the current value of the creating +thread's copy. + =for apidoc mn|SV *|PL_DBtrace Trace variable used when Perl is run in debugging mode, with the B<-d> switch. This is the C variable which corresponds to Perl's $DB::trace variable. See C>. +On threaded perls, each thread has an independent copy of this variable; +each initialized at creation time with the current value of the creating +thread's copy. + =cut */ @@ -541,14 +612,15 @@ PERLVARI(I, laststatval, int, -1) PERLVAR(I, modcount, I32) /* how much op_lvalue()ification in - assignment? */ + assignment? */ /* interpreter atexit processing */ PERLVARI(I, exitlistlen, I32, 0) /* length of same */ PERLVARI(I, exitlist, PerlExitListEntry *, NULL) - /* list of exit functions */ + /* list of exit functions */ /* +=for apidoc_section $HV =for apidoc Amn|HV*|PL_modglobal C is a general purpose, interpreter global HV for use by @@ -557,6 +629,10 @@ to share data among each other. It is a good idea to use keys prefixed by the package name of the extension that owns the data. +On threaded perls, each thread has an independent copy of this variable; +each initialized at creation time with the current value of the creating +thread's copy. + =cut */ @@ -574,7 +650,7 @@ #ifdef HAVE_INTERP_INTERN PERLVAR(I, sys_intern, struct interp_intern) - /* platform internals */ + /* platform internals */ #endif /* more statics moved here */ @@ -628,14 +704,6 @@ PERLVARI(I, padlist_generation, U32, 1) /* id to identify padlist clones */ -/* -=for apidoc Amn|runops_proc_t|PL_runops - -See L. - -=cut -*/ - PERLVARI(I, runops, runops_proc_t, RUNOPS_DEFAULT) PERLVAR(I, subname, SV *) /* name of current subroutine */ @@ -645,7 +713,7 @@ PERLVAR(I, max_intro_pending, PADOFFSET)/* end of vars to introduce */ PERLVAR(I, padix, PADOFFSET) /* lowest unused index - 1 - in current "register" pad */ + in current "register" pad */ PERLVAR(I, constpadix, PADOFFSET) /* lowest unused for constants */ PERLVAR(I, padix_floor, PADOFFSET) /* how low may inner block reset padix */ @@ -654,6 +722,8 @@ && defined(USE_THREAD_SAFE_LOCALE) \ && ! defined(HAS_QUERYLOCALE) +/* This is the most number of categories we've encountered so far on any + * platform */ PERLVARA(I, curlocales, 12, char *) #endif @@ -668,7 +738,7 @@ /* Assume until proven otherwise that it works */ PERLVARI(I, strxfrm_max_cp, U8, 0) /* Highest collating cp in locale */ PERLVARI(I, collation_standard, bool, TRUE) - /* Assume simple collation */ + /* Assume simple collation */ #endif /* USE_LOCALE_COLLATE */ PERLVARI(I, langinfo_buf, char *, NULL) @@ -680,9 +750,6 @@ PERLVAR(I, sawampersand, U8) /* must save all match strings */ #endif -PERLVAR(I, unsafe, bool) -PERLVAR(I, colorset, bool) /* PERL_RE_COLORS env var is in use */ - /* current phase the interpreter is in for ordering this structure to remove holes, we're assuming that this is 4 bytes. */ @@ -690,7 +757,11 @@ PERLVARI(I, in_load_module, bool, FALSE) /* to prevent recursions in PerlIO_find_layer */ +PERLVAR(I, unsafe, bool) +PERLVAR(I, colorset, bool) /* PERL_RE_COLORS env var is in use */ + /* +=for apidoc_section $embedding =for apidoc Amn|signed char|PL_perl_destruct_level This value may be set when embedding for full cleanup. @@ -710,18 +781,27 @@ If C<$ENV{PERL_DESTRUCT_LEVEL}> is set to an integer greater than the value of C its value is used instead. +On threaded perls, each thread has an independent copy of this variable; +each initialized at creation time with the current value of the creating +thread's copy. + =cut */ /* mod_perl is special, and also assigns a meaning -1 */ PERLVARI(I, perl_destruct_level, signed char, 0) +PERLVAR(I, pad_reset_pending, bool) /* reset pad on next attempted alloc */ + +PERLVAR(I, srand_called, bool) + #ifdef USE_LOCALE_NUMERIC -PERLVARI(I, numeric_standard, int, TRUE) - /* Assume C locale numerics */ PERLVARI(I, numeric_underlying, bool, TRUE) - /* Assume underlying locale numerics */ + /* Assume underlying locale numerics */ PERLVARI(I, numeric_underlying_is_standard, bool, TRUE) + +PERLVARI(I, numeric_standard, int, TRUE) + /* Assume C locale numerics */ PERLVAR(I, numeric_name, char *) /* Name of current numeric locale */ PERLVAR(I, numeric_radix_sv, SV *) /* The radix separator if not '.' */ @@ -732,15 +812,6 @@ # endif #endif /* !USE_LOCALE_NUMERIC */ -#ifdef FCRYPT -PERLVARI(I, cryptseen, bool, FALSE) /* has fast crypt() been initialized? */ -#else -/* One byte hole in the interpreter structure. */ -#endif - -PERLVAR(I, pad_reset_pending, bool) /* reset pad on next attempted alloc */ -PERLVAR(I, srand_called, bool) - /* Array of signal handlers, indexed by signal number, through which the C signal handler dispatches. */ PERLVAR(I, psig_ptr, SV **) @@ -769,12 +840,12 @@ #if defined(USE_ITHREADS) PERLVAR(I, regex_pad, SV **) /* Shortcut into the array of - regex_padav */ + regex_padav */ PERLVAR(I, regex_padav, AV *) /* All regex objects, indexed via the - values in op_pmoffset of pmop. - Entry 0 is an SV whose PV is a - "packed" list of IVs listing - the now-free slots in the array */ + values in op_pmoffset of pmop. + Entry 0 is an SV whose PV is a + "packed" list of IVs listing + the now-free slots in the array */ PERLVAR(I, stashpad, HV **) /* for CopSTASH */ PERLVARI(I, stashpadmax, PADOFFSET, 64) PERLVARI(I, stashpadix, PADOFFSET, 0) @@ -795,7 +866,7 @@ PERLVARI(I, checkav_save, AV *, NULL) /* save CHECK{}s when compiling */ PERLVARI(I, unitcheckav_save, AV *, NULL) - /* save UNITCHECK{}s when compiling */ + /* save UNITCHECK{}s when compiling */ PERLVARI(I, clocktick, long, 0) /* this many times() ticks in a second */ @@ -847,11 +918,13 @@ /* Hook for File::Glob */ PERLVARI(I, globhook, globhook_t, NULL) +#if defined(MULTIPLICITY) /* The last unconditional member of the interpreter structure when 5.18.0 was released. The offset of the end of this is baked into a global variable in any shared perl library which will allow a sanity test in future perl releases. */ -#define PERL_LAST_5_18_0_INTERP_MEMBER Iglobhook +# define PERL_LAST_5_18_0_INTERP_MEMBER Iglobhook +#endif #ifdef PERL_IMPLICIT_CONTEXT PERLVARI(I, my_cxt_list, void **, NULL) /* per-module array of MY_CXT pointers */ @@ -949,6 +1022,12 @@ #ifdef HAS_WCRTOMB PERLVAR(I, wcrtomb_ps, mbstate_t) #endif +#ifdef PERL_MEM_LOG +/* Enough space for the reserved byte, 1 for a potential leading 0, then enough + * for the longest representable integer plus an extra, the 3 flag characters, + * and NUL */ +PERLVARA(I, mem_log, 1 + 1 + TYPE_DIGITS(UV) + 1 + 3 + 1, char); +#endif /* If you are adding a U8 or U16, check to see if there are 'Space' comments * above on where there are gaps which currently will be structure padding. */ @@ -957,6 +1036,4 @@ * this comment, for binary compatibility (the offsets of the old members must * not change). * (Don't forget to add your variable also to perl_clone()!) - * XSUB.h provides wrapper functions via perlapi.h that make this - * irrelevant, but not all code may be expected to #include XSUB.h. */ diff -Nru perl-5.32.1/invlist_inline.h perl-5.34.0/invlist_inline.h --- perl-5.32.1/invlist_inline.h 2020-12-18 09:58:48.000000000 +0000 +++ perl-5.34.0/invlist_inline.h 2021-01-20 23:04:44.000000000 +0000 @@ -145,7 +145,7 @@ PERL_ARGS_ASSERT_INVLIST_HIGHEST; if (len == 0) { - return 0; + return 0; } array = invlist_array(invlist); @@ -218,8 +218,8 @@ PERL_ARGS_ASSERT_INVLIST_ITERNEXT; if (*pos >= len) { - *pos = (STRLEN) UV_MAX; /* Force iterinit() to be required next time */ - return FALSE; + *pos = (STRLEN) UV_MAX; /* Force iterinit() to be required next time */ + return FALSE; } array = invlist_array(invlist); @@ -227,10 +227,10 @@ *start = array[(*pos)++]; if (*pos >= len) { - *end = UV_MAX; + *end = UV_MAX; } else { - *end = array[(*pos)++] - 1; + *end = array[(*pos)++] - 1; } return TRUE; diff -Nru perl-5.32.1/iperlsys.h perl-5.34.0/iperlsys.h --- perl-5.32.1/iperlsys.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/iperlsys.h 2021-02-21 11:01:31.000000000 +0000 @@ -69,7 +69,7 @@ typedef FILE* (*LPStdout)(struct IPerlStdIO*); typedef FILE* (*LPStderr)(struct IPerlStdIO*); typedef FILE* (*LPOpen)(struct IPerlStdIO*, const char*, - const char*); + const char*); typedef int (*LPClose)(struct IPerlStdIO*, FILE*); typedef int (*LPEof)(struct IPerlStdIO*, FILE*); typedef int (*LPError)(struct IPerlStdIO*, FILE*); @@ -87,12 +87,12 @@ typedef int (*LPFileno)(struct IPerlStdIO*, FILE*); typedef FILE* (*LPFdopen)(struct IPerlStdIO*, int, const char*); typedef FILE* (*LPReopen)(struct IPerlStdIO*, const char*, - const char*, FILE*); + const char*, FILE*); typedef SSize_t (*LPRead)(struct IPerlStdIO*, void*, Size_t, Size_t, FILE *); typedef SSize_t (*LPWrite)(struct IPerlStdIO*, const void*, Size_t, Size_t, FILE *); typedef void (*LPSetBuf)(struct IPerlStdIO*, FILE*, char*); typedef int (*LPSetVBuf)(struct IPerlStdIO*, FILE*, char*, int, - Size_t); + Size_t); typedef void (*LPSetCnt)(struct IPerlStdIO*, FILE*, int); #ifndef NETWARE @@ -103,16 +103,16 @@ typedef void (*LPSetlinebuf)(struct IPerlStdIO*, FILE*); typedef int (*LPPrintf)(struct IPerlStdIO*, FILE*, const char*, - ...); + ...); typedef int (*LPVprintf)(struct IPerlStdIO*, FILE*, const char*, - va_list); + va_list); typedef Off_t (*LPTell)(struct IPerlStdIO*, FILE*); typedef int (*LPSeek)(struct IPerlStdIO*, FILE*, Off_t, int); typedef void (*LPRewind)(struct IPerlStdIO*, FILE*); typedef FILE* (*LPTmpfile)(struct IPerlStdIO*); typedef int (*LPGetpos)(struct IPerlStdIO*, FILE*, Fpos_t*); typedef int (*LPSetpos)(struct IPerlStdIO*, FILE*, - const Fpos_t*); + const Fpos_t*); typedef void (*LPInit)(struct IPerlStdIO*); typedef void (*LPInitOSExtras)(struct IPerlStdIO*); typedef FILE* (*LPFdupopen)(struct IPerlStdIO*, FILE*); @@ -202,84 +202,84 @@ /* Now take FILE * via function table */ #define PerlSIO_stdin \ - (*PL_StdIO->pStdin)(PL_StdIO) + (*PL_StdIO->pStdin)(PL_StdIO) #define PerlSIO_stdout \ - (*PL_StdIO->pStdout)(PL_StdIO) + (*PL_StdIO->pStdout)(PL_StdIO) #define PerlSIO_stderr \ - (*PL_StdIO->pStderr)(PL_StdIO) + (*PL_StdIO->pStderr)(PL_StdIO) #define PerlSIO_fopen(x,y) \ - (*PL_StdIO->pOpen)(PL_StdIO, (x),(y)) + (*PL_StdIO->pOpen)(PL_StdIO, (x),(y)) #define PerlSIO_fclose(f) \ - (*PL_StdIO->pClose)(PL_StdIO, (f)) + (*PL_StdIO->pClose)(PL_StdIO, (f)) #define PerlSIO_feof(f) \ - (*PL_StdIO->pEof)(PL_StdIO, (f)) + (*PL_StdIO->pEof)(PL_StdIO, (f)) #define PerlSIO_ferror(f) \ - (*PL_StdIO->pError)(PL_StdIO, (f)) + (*PL_StdIO->pError)(PL_StdIO, (f)) #define PerlSIO_clearerr(f) \ - (*PL_StdIO->pClearerr)(PL_StdIO, (f)) + (*PL_StdIO->pClearerr)(PL_StdIO, (f)) #define PerlSIO_fgetc(f) \ - (*PL_StdIO->pGetc)(PL_StdIO, (f)) + (*PL_StdIO->pGetc)(PL_StdIO, (f)) #define PerlSIO_get_base(f) \ - (*PL_StdIO->pGetBase)(PL_StdIO, (f)) + (*PL_StdIO->pGetBase)(PL_StdIO, (f)) #define PerlSIO_get_bufsiz(f) \ - (*PL_StdIO->pGetBufsiz)(PL_StdIO, (f)) + (*PL_StdIO->pGetBufsiz)(PL_StdIO, (f)) #define PerlSIO_get_cnt(f) \ - (*PL_StdIO->pGetCnt)(PL_StdIO, (f)) + (*PL_StdIO->pGetCnt)(PL_StdIO, (f)) #define PerlSIO_get_ptr(f) \ - (*PL_StdIO->pGetPtr)(PL_StdIO, (f)) + (*PL_StdIO->pGetPtr)(PL_StdIO, (f)) #define PerlSIO_fputc(c,f) \ - (*PL_StdIO->pPutc)(PL_StdIO, (c),(f)) + (*PL_StdIO->pPutc)(PL_StdIO, (c),(f)) #define PerlSIO_fputs(s,f) \ - (*PL_StdIO->pPuts)(PL_StdIO, (s),(f)) + (*PL_StdIO->pPuts)(PL_StdIO, (s),(f)) #define PerlSIO_fflush(f) \ - (*PL_StdIO->pFlush)(PL_StdIO, (f)) + (*PL_StdIO->pFlush)(PL_StdIO, (f)) #define PerlSIO_fgets(s, n, f) \ - (*PL_StdIO->pGets)(PL_StdIO, s, n, (f)) + (*PL_StdIO->pGets)(PL_StdIO, s, n, (f)) #define PerlSIO_ungetc(c,f) \ - (*PL_StdIO->pUngetc)(PL_StdIO, (c),(f)) + (*PL_StdIO->pUngetc)(PL_StdIO, (c),(f)) #define PerlSIO_fileno(f) \ - (*PL_StdIO->pFileno)(PL_StdIO, (f)) + (*PL_StdIO->pFileno)(PL_StdIO, (f)) #define PerlSIO_fdopen(f, s) \ - (*PL_StdIO->pFdopen)(PL_StdIO, (f),(s)) + (*PL_StdIO->pFdopen)(PL_StdIO, (f),(s)) #define PerlSIO_freopen(p, m, f) \ - (*PL_StdIO->pReopen)(PL_StdIO, (p), (m), (f)) + (*PL_StdIO->pReopen)(PL_StdIO, (p), (m), (f)) #define PerlSIO_fread(buf,sz,count,f) \ - (*PL_StdIO->pRead)(PL_StdIO, (buf), (sz), (count), (f)) + (*PL_StdIO->pRead)(PL_StdIO, (buf), (sz), (count), (f)) #define PerlSIO_fwrite(buf,sz,count,f) \ - (*PL_StdIO->pWrite)(PL_StdIO, (buf), (sz), (count), (f)) + (*PL_StdIO->pWrite)(PL_StdIO, (buf), (sz), (count), (f)) #define PerlSIO_setbuf(f,b) \ - (*PL_StdIO->pSetBuf)(PL_StdIO, (f), (b)) + (*PL_StdIO->pSetBuf)(PL_StdIO, (f), (b)) #define PerlSIO_setvbuf(f,b,t,s) \ - (*PL_StdIO->pSetVBuf)(PL_StdIO, (f),(b),(t),(s)) + (*PL_StdIO->pSetVBuf)(PL_StdIO, (f),(b),(t),(s)) #define PerlSIO_set_cnt(f,c) \ - (*PL_StdIO->pSetCnt)(PL_StdIO, (f), (c)) + (*PL_StdIO->pSetCnt)(PL_StdIO, (f), (c)) #define PerlSIO_set_ptr(f,p) \ - (*PL_StdIO->pSetPtr)(PL_StdIO, (f), (p)) + (*PL_StdIO->pSetPtr)(PL_StdIO, (f), (p)) #define PerlSIO_setlinebuf(f) \ - (*PL_StdIO->pSetlinebuf)(PL_StdIO, (f)) + (*PL_StdIO->pSetlinebuf)(PL_StdIO, (f)) #define PerlSIO_printf Perl_fprintf_nocontext #define PerlSIO_stdoutf Perl_printf_nocontext #define PerlSIO_vprintf(f,fmt,a) \ - (*PL_StdIO->pVprintf)(PL_StdIO, (f),(fmt),a) + (*PL_StdIO->pVprintf)(PL_StdIO, (f),(fmt),a) #define PerlSIO_ftell(f) \ - (*PL_StdIO->pTell)(PL_StdIO, (f)) + (*PL_StdIO->pTell)(PL_StdIO, (f)) #define PerlSIO_fseek(f,o,w) \ - (*PL_StdIO->pSeek)(PL_StdIO, (f),(o),(w)) + (*PL_StdIO->pSeek)(PL_StdIO, (f),(o),(w)) #define PerlSIO_fgetpos(f,p) \ - (*PL_StdIO->pGetpos)(PL_StdIO, (f),(p)) + (*PL_StdIO->pGetpos)(PL_StdIO, (f),(p)) #define PerlSIO_fsetpos(f,p) \ - (*PL_StdIO->pSetpos)(PL_StdIO, (f),(p)) + (*PL_StdIO->pSetpos)(PL_StdIO, (f),(p)) #define PerlSIO_rewind(f) \ - (*PL_StdIO->pRewind)(PL_StdIO, (f)) + (*PL_StdIO->pRewind)(PL_StdIO, (f)) #define PerlSIO_tmpfile() \ - (*PL_StdIO->pTmpfile)(PL_StdIO) + (*PL_StdIO->pTmpfile)(PL_StdIO) #define PerlSIO_init() \ - (*PL_StdIO->pInit)(PL_StdIO) + (*PL_StdIO->pInit)(PL_StdIO) #undef init_os_extras #define init_os_extras() \ - (*PL_StdIO->pInitOSExtras)(PL_StdIO) + (*PL_StdIO->pInitOSExtras)(PL_StdIO) #define PerlSIO_fdupopen(f) \ - (*PL_StdIO->pFdupopen)(PL_StdIO, (f)) + (*PL_StdIO->pFdupopen)(PL_StdIO, (f)) #else /* PERL_IMPLICIT_SYS */ @@ -408,28 +408,28 @@ }; #define PerlDir_mkdir(name, mode) \ - (*PL_Dir->pMakedir)(PL_Dir, (name), (mode)) + (*PL_Dir->pMakedir)(PL_Dir, (name), (mode)) #define PerlDir_chdir(name) \ - (*PL_Dir->pChdir)(PL_Dir, (name)) + (*PL_Dir->pChdir)(PL_Dir, (name)) #define PerlDir_rmdir(name) \ - (*PL_Dir->pRmdir)(PL_Dir, (name)) + (*PL_Dir->pRmdir)(PL_Dir, (name)) #define PerlDir_close(dir) \ - (*PL_Dir->pClose)(PL_Dir, (dir)) + (*PL_Dir->pClose)(PL_Dir, (dir)) #define PerlDir_open(name) \ - (*PL_Dir->pOpen)(PL_Dir, (name)) + (*PL_Dir->pOpen)(PL_Dir, (name)) #define PerlDir_read(dir) \ - (*PL_Dir->pRead)(PL_Dir, (dir)) + (*PL_Dir->pRead)(PL_Dir, (dir)) #define PerlDir_rewind(dir) \ - (*PL_Dir->pRewind)(PL_Dir, (dir)) + (*PL_Dir->pRewind)(PL_Dir, (dir)) #define PerlDir_seek(dir, loc) \ - (*PL_Dir->pSeek)(PL_Dir, (dir), (loc)) + (*PL_Dir->pSeek)(PL_Dir, (dir), (loc)) #define PerlDir_tell(dir) \ - (*PL_Dir->pTell)(PL_Dir, (dir)) + (*PL_Dir->pTell)(PL_Dir, (dir)) #ifdef WIN32 #define PerlDir_mapA(dir) \ - (*PL_Dir->pMapPathA)(PL_Dir, (dir)) + (*PL_Dir->pMapPathA)(PL_Dir, (dir)) #define PerlDir_mapW(dir) \ - (*PL_Dir->pMapPathW)(PL_Dir, (dir)) + (*PL_Dir->pMapPathW)(PL_Dir, (dir)) #endif #else /* PERL_IMPLICIT_SYS */ @@ -466,7 +466,7 @@ typedef char* (*LPEnvGetenv)(struct IPerlEnv*, const char*); typedef int (*LPEnvPutenv)(struct IPerlEnv*, const char*); typedef char* (*LPEnvGetenv_len)(struct IPerlEnv*, - const char *varname, unsigned long *len); + const char *varname, unsigned long *len); typedef int (*LPEnvUname)(struct IPerlEnv*, struct utsname *name); typedef void (*LPEnvClearenv)(struct IPerlEnv*); typedef void* (*LPEnvGetChildenv)(struct IPerlEnv*); @@ -476,16 +476,16 @@ #ifdef HAS_ENVGETENV typedef char* (*LPENVGetenv)(struct IPerlEnv*, const char *varname); typedef char* (*LPENVGetenv_len)(struct IPerlEnv*, - const char *varname, unsigned long *len); + const char *varname, unsigned long *len); #endif #ifdef WIN32 typedef unsigned long (*LPEnvOsID)(struct IPerlEnv*); typedef char* (*LPEnvLibPath)(struct IPerlEnv*, WIN32_NO_REGISTRY_M_(const char*) - STRLEN *const len); + STRLEN *const len); typedef char* (*LPEnvSiteLibPath)(struct IPerlEnv*, const char*, - STRLEN *const len); + STRLEN *const len); typedef char* (*LPEnvVendorLibPath)(struct IPerlEnv*, const char*, - STRLEN *const len); + STRLEN *const len); typedef void (*LPEnvGetChildIO)(struct IPerlEnv*, child_IO_table*); #endif @@ -520,45 +520,45 @@ }; #define PerlEnv_putenv(str) \ - (*PL_Env->pPutenv)(PL_Env,(str)) + (*PL_Env->pPutenv)(PL_Env,(str)) #define PerlEnv_getenv(str) \ - (*PL_Env->pGetenv)(PL_Env,(str)) + (*PL_Env->pGetenv)(PL_Env,(str)) #define PerlEnv_getenv_len(str,l) \ - (*PL_Env->pGetenv_len)(PL_Env,(str), (l)) + (*PL_Env->pGetenv_len)(PL_Env,(str), (l)) #define PerlEnv_clearenv() \ - (*PL_Env->pClearenv)(PL_Env) + (*PL_Env->pClearenv)(PL_Env) #define PerlEnv_get_childenv() \ - (*PL_Env->pGetChildenv)(PL_Env) + (*PL_Env->pGetChildenv)(PL_Env) #define PerlEnv_free_childenv(e) \ - (*PL_Env->pFreeChildenv)(PL_Env, (e)) + (*PL_Env->pFreeChildenv)(PL_Env, (e)) #define PerlEnv_get_childdir() \ - (*PL_Env->pGetChilddir)(PL_Env) + (*PL_Env->pGetChilddir)(PL_Env) #define PerlEnv_free_childdir(d) \ - (*PL_Env->pFreeChilddir)(PL_Env, (d)) + (*PL_Env->pFreeChilddir)(PL_Env, (d)) #ifdef HAS_ENVGETENV # define PerlEnv_ENVgetenv(str) \ - (*PL_Env->pENVGetenv)(PL_Env,(str)) + (*PL_Env->pENVGetenv)(PL_Env,(str)) # define PerlEnv_ENVgetenv_len(str,l) \ - (*PL_Env->pENVGetenv_len)(PL_Env,(str), (l)) + (*PL_Env->pENVGetenv_len)(PL_Env,(str), (l)) #else # define PerlEnv_ENVgetenv(str) \ - PerlEnv_getenv((str)) + PerlEnv_getenv((str)) # define PerlEnv_ENVgetenv_len(str,l) \ - PerlEnv_getenv_len((str),(l)) + PerlEnv_getenv_len((str),(l)) #endif #define PerlEnv_uname(name) \ - (*PL_Env->pEnvUname)(PL_Env,(name)) + (*PL_Env->pEnvUname)(PL_Env,(name)) #ifdef WIN32 #define PerlEnv_os_id() \ - (*PL_Env->pEnvOsID)(PL_Env) + (*PL_Env->pEnvOsID)(PL_Env) #define PerlEnv_lib_path(str, lenp) \ - (*PL_Env->pLibPath)(PL_Env,WIN32_NO_REGISTRY_M_(str)(lenp)) + (*PL_Env->pLibPath)(PL_Env,WIN32_NO_REGISTRY_M_(str)(lenp)) #define PerlEnv_sitelib_path(str, lenp) \ - (*PL_Env->pSiteLibPath)(PL_Env,(str),(lenp)) + (*PL_Env->pSiteLibPath)(PL_Env,(str),(lenp)) #define PerlEnv_vendorlib_path(str, lenp) \ - (*PL_Env->pVendorLibPath)(PL_Env,(str),(lenp)) + (*PL_Env->pVendorLibPath)(PL_Env,(str),(lenp)) #define PerlEnv_get_child_IO(ptr) \ - (*PL_Env->pGetChildIO)(PL_Env, ptr) + (*PL_Env->pGetChildIO)(PL_Env, ptr) #endif #else /* below is ! PERL_IMPLICIT_SYS */ @@ -620,7 +620,7 @@ typedef int (*LPLIOAccess)(struct IPerlLIO*, const char*, int); typedef int (*LPLIOChmod)(struct IPerlLIO*, const char*, int); typedef int (*LPLIOChown)(struct IPerlLIO*, const char*, uid_t, - gid_t); + gid_t); typedef int (*LPLIOChsize)(struct IPerlLIO*, int, Off_t); typedef int (*LPLIOClose)(struct IPerlLIO*, int); typedef int (*LPLIODup)(struct IPerlLIO*, int); @@ -628,32 +628,36 @@ typedef int (*LPLIOFlock)(struct IPerlLIO*, int, int); typedef int (*LPLIOFileStat)(struct IPerlLIO*, int, Stat_t*); typedef int (*LPLIOIOCtl)(struct IPerlLIO*, int, unsigned int, - char*); + char*); typedef int (*LPLIOIsatty)(struct IPerlLIO*, int); typedef int (*LPLIOLink)(struct IPerlLIO*, const char*, - const char *); + const char *); typedef Off_t (*LPLIOLseek)(struct IPerlLIO*, int, Off_t, int); typedef int (*LPLIOLstat)(struct IPerlLIO*, const char*, - Stat_t*); + Stat_t*); typedef char* (*LPLIOMktemp)(struct IPerlLIO*, char*); typedef int (*LPLIOOpen)(struct IPerlLIO*, const char*, int); typedef int (*LPLIOOpen3)(struct IPerlLIO*, const char*, int, int); typedef int (*LPLIORead)(struct IPerlLIO*, int, void*, unsigned int); typedef int (*LPLIORename)(struct IPerlLIO*, const char*, - const char*); + const char*); #ifdef NETWARE typedef int (*LPLIOSetmode)(struct IPerlLIO*, FILE*, int); #else typedef int (*LPLIOSetmode)(struct IPerlLIO*, int, int); #endif /* NETWARE */ typedef int (*LPLIONameStat)(struct IPerlLIO*, const char*, - Stat_t*); + Stat_t*); typedef char* (*LPLIOTmpnam)(struct IPerlLIO*, char*); typedef int (*LPLIOUmask)(struct IPerlLIO*, int); typedef int (*LPLIOUnlink)(struct IPerlLIO*, const char*); typedef int (*LPLIOUtime)(struct IPerlLIO*, const char*, struct utimbuf*); typedef int (*LPLIOWrite)(struct IPerlLIO*, int, const void*, - unsigned int); + unsigned int); +typedef int (*LPLIOSymLink)(struct IPerlLIO*, const char*, + const char *); +typedef int (*LPLIOReadLink)(struct IPerlLIO*, const char*, + char *, size_t); struct IPerlLIO { @@ -683,6 +687,8 @@ LPLIOUnlink pUnlink; LPLIOUtime pUtime; LPLIOWrite pWrite; + LPLIOSymLink pSymLink; + LPLIOReadLink pReadLink; }; struct IPerlLIOInfo @@ -692,57 +698,61 @@ }; #define PerlLIO_access(file, mode) \ - (*PL_LIO->pAccess)(PL_LIO, (file), (mode)) + (*PL_LIO->pAccess)(PL_LIO, (file), (mode)) #define PerlLIO_chmod(file, mode) \ - (*PL_LIO->pChmod)(PL_LIO, (file), (mode)) + (*PL_LIO->pChmod)(PL_LIO, (file), (mode)) #define PerlLIO_chown(file, owner, group) \ - (*PL_LIO->pChown)(PL_LIO, (file), (owner), (group)) + (*PL_LIO->pChown)(PL_LIO, (file), (owner), (group)) #define PerlLIO_chsize(fd, size) \ - (*PL_LIO->pChsize)(PL_LIO, (fd), (size)) + (*PL_LIO->pChsize)(PL_LIO, (fd), (size)) #define PerlLIO_close(fd) \ - (*PL_LIO->pClose)(PL_LIO, (fd)) + (*PL_LIO->pClose)(PL_LIO, (fd)) #define PerlLIO_dup(fd) \ - (*PL_LIO->pDup)(PL_LIO, (fd)) + (*PL_LIO->pDup)(PL_LIO, (fd)) #define PerlLIO_dup2(fd1, fd2) \ - (*PL_LIO->pDup2)(PL_LIO, (fd1), (fd2)) + (*PL_LIO->pDup2)(PL_LIO, (fd1), (fd2)) #define PerlLIO_flock(fd, op) \ - (*PL_LIO->pFlock)(PL_LIO, (fd), (op)) + (*PL_LIO->pFlock)(PL_LIO, (fd), (op)) #define PerlLIO_fstat(fd, buf) \ - (*PL_LIO->pFileStat)(PL_LIO, (fd), (buf)) + (*PL_LIO->pFileStat)(PL_LIO, (fd), (buf)) #define PerlLIO_ioctl(fd, u, buf) \ - (*PL_LIO->pIOCtl)(PL_LIO, (fd), (u), (buf)) + (*PL_LIO->pIOCtl)(PL_LIO, (fd), (u), (buf)) #define PerlLIO_isatty(fd) \ - (*PL_LIO->pIsatty)(PL_LIO, (fd)) + (*PL_LIO->pIsatty)(PL_LIO, (fd)) #define PerlLIO_link(oldname, newname) \ - (*PL_LIO->pLink)(PL_LIO, (oldname), (newname)) + (*PL_LIO->pLink)(PL_LIO, (oldname), (newname)) +#define PerlLIO_symlink(oldname, newname) \ + (*PL_LIO->pSymLink)(PL_LIO, (oldname), (newname)) +#define PerlLIO_readlink(path, buf, bufsiz) \ + (*PL_LIO->pReadLink)(PL_LIO, (path), (buf), (bufsiz)) #define PerlLIO_lseek(fd, offset, mode) \ - (*PL_LIO->pLseek)(PL_LIO, (fd), (offset), (mode)) + (*PL_LIO->pLseek)(PL_LIO, (fd), (offset), (mode)) #define PerlLIO_lstat(name, buf) \ - (*PL_LIO->pLstat)(PL_LIO, (name), (buf)) + (*PL_LIO->pLstat)(PL_LIO, (name), (buf)) #define PerlLIO_mktemp(file) \ - (*PL_LIO->pMktemp)(PL_LIO, (file)) + (*PL_LIO->pMktemp)(PL_LIO, (file)) #define PerlLIO_open(file, flag) \ - (*PL_LIO->pOpen)(PL_LIO, (file), (flag)) + (*PL_LIO->pOpen)(PL_LIO, (file), (flag)) #define PerlLIO_open3(file, flag, perm) \ - (*PL_LIO->pOpen3)(PL_LIO, (file), (flag), (perm)) + (*PL_LIO->pOpen3)(PL_LIO, (file), (flag), (perm)) #define PerlLIO_read(fd, buf, count) \ - (*PL_LIO->pRead)(PL_LIO, (fd), (buf), (count)) + (*PL_LIO->pRead)(PL_LIO, (fd), (buf), (count)) #define PerlLIO_rename(oname, newname) \ - (*PL_LIO->pRename)(PL_LIO, (oname), (newname)) + (*PL_LIO->pRename)(PL_LIO, (oname), (newname)) #define PerlLIO_setmode(fd, mode) \ - (*PL_LIO->pSetmode)(PL_LIO, (fd), (mode)) + (*PL_LIO->pSetmode)(PL_LIO, (fd), (mode)) #define PerlLIO_stat(name, buf) \ - (*PL_LIO->pNameStat)(PL_LIO, (name), (buf)) + (*PL_LIO->pNameStat)(PL_LIO, (name), (buf)) #define PerlLIO_tmpnam(str) \ - (*PL_LIO->pTmpnam)(PL_LIO, (str)) + (*PL_LIO->pTmpnam)(PL_LIO, (str)) #define PerlLIO_umask(mode) \ - (*PL_LIO->pUmask)(PL_LIO, (mode)) + (*PL_LIO->pUmask)(PL_LIO, (mode)) #define PerlLIO_unlink(file) \ - (*PL_LIO->pUnlink)(PL_LIO, (file)) + (*PL_LIO->pUnlink)(PL_LIO, (file)) #define PerlLIO_utime(file, time) \ - (*PL_LIO->pUtime)(PL_LIO, (file), (time)) + (*PL_LIO->pUtime)(PL_LIO, (file), (time)) #define PerlLIO_write(fd, buf, count) \ - (*PL_LIO->pWrite)(PL_LIO, (fd), (buf), (count)) + (*PL_LIO->pWrite)(PL_LIO, (fd), (buf), (count)) #else /* PERL_IMPLICIT_SYS */ @@ -764,6 +774,8 @@ #define PerlLIO_ioctl(fd, u, buf) ioctl((fd), (u), (buf)) #define PerlLIO_isatty(fd) isatty((fd)) #define PerlLIO_link(oldname, newname) link((oldname), (newname)) +#define PerlLIO_symlink(oldname, newname) symlink((oldname), (newname)) +#define PerlLIO_readlink(path, buf, bufsiz) readlink((path), (buf), (bufsiz)) #define PerlLIO_lseek(fd, offset, mode) lseek((fd), (offset), (mode)) #define PerlLIO_stat(name, buf) Stat((name), (buf)) #ifdef HAS_LSTAT @@ -821,72 +833,72 @@ /* Interpreter specific memory macros */ #define PerlMem_malloc(size) \ - (*PL_Mem->pMalloc)(PL_Mem, (size)) + (*PL_Mem->pMalloc)(PL_Mem, (size)) #define PerlMem_realloc(buf, size) \ - (*PL_Mem->pRealloc)(PL_Mem, (buf), (size)) + (*PL_Mem->pRealloc)(PL_Mem, (buf), (size)) #define PerlMem_free(buf) \ - (*PL_Mem->pFree)(PL_Mem, (buf)) + (*PL_Mem->pFree)(PL_Mem, (buf)) #define PerlMem_calloc(num, size) \ - (*PL_Mem->pCalloc)(PL_Mem, (num), (size)) + (*PL_Mem->pCalloc)(PL_Mem, (num), (size)) #define PerlMem_get_lock() \ - (*PL_Mem->pGetLock)(PL_Mem) + (*PL_Mem->pGetLock)(PL_Mem) #define PerlMem_free_lock() \ - (*PL_Mem->pFreeLock)(PL_Mem) + (*PL_Mem->pFreeLock)(PL_Mem) #define PerlMem_is_locked() \ - (*PL_Mem->pIsLocked)(PL_Mem) + (*PL_Mem->pIsLocked)(PL_Mem) /* Shared memory macros */ #ifdef NETWARE #define PerlMemShared_malloc(size) \ - (*PL_Mem->pMalloc)(PL_Mem, (size)) + (*PL_Mem->pMalloc)(PL_Mem, (size)) #define PerlMemShared_realloc(buf, size) \ - (*PL_Mem->pRealloc)(PL_Mem, (buf), (size)) + (*PL_Mem->pRealloc)(PL_Mem, (buf), (size)) #define PerlMemShared_free(buf) \ - (*PL_Mem->pFree)(PL_Mem, (buf)) + (*PL_Mem->pFree)(PL_Mem, (buf)) #define PerlMemShared_calloc(num, size) \ - (*PL_Mem->pCalloc)(PL_Mem, (num), (size)) + (*PL_Mem->pCalloc)(PL_Mem, (num), (size)) #define PerlMemShared_get_lock() \ - (*PL_Mem->pGetLock)(PL_Mem) + (*PL_Mem->pGetLock)(PL_Mem) #define PerlMemShared_free_lock() \ - (*PL_Mem->pFreeLock)(PL_Mem) + (*PL_Mem->pFreeLock)(PL_Mem) #define PerlMemShared_is_locked() \ - (*PL_Mem->pIsLocked)(PL_Mem) + (*PL_Mem->pIsLocked)(PL_Mem) #else #define PerlMemShared_malloc(size) \ - (*PL_MemShared->pMalloc)(PL_MemShared, (size)) + (*PL_MemShared->pMalloc)(PL_MemShared, (size)) #define PerlMemShared_realloc(buf, size) \ - (*PL_MemShared->pRealloc)(PL_MemShared, (buf), (size)) + (*PL_MemShared->pRealloc)(PL_MemShared, (buf), (size)) #define PerlMemShared_free(buf) \ - (*PL_MemShared->pFree)(PL_MemShared, (buf)) + (*PL_MemShared->pFree)(PL_MemShared, (buf)) #define PerlMemShared_calloc(num, size) \ - (*PL_MemShared->pCalloc)(PL_MemShared, (num), (size)) + (*PL_MemShared->pCalloc)(PL_MemShared, (num), (size)) #define PerlMemShared_get_lock() \ - (*PL_MemShared->pGetLock)(PL_MemShared) + (*PL_MemShared->pGetLock)(PL_MemShared) #define PerlMemShared_free_lock() \ - (*PL_MemShared->pFreeLock)(PL_MemShared) + (*PL_MemShared->pFreeLock)(PL_MemShared) #define PerlMemShared_is_locked() \ - (*PL_MemShared->pIsLocked)(PL_MemShared) + (*PL_MemShared->pIsLocked)(PL_MemShared) #endif /* Parse tree memory macros */ #define PerlMemParse_malloc(size) \ - (*PL_MemParse->pMalloc)(PL_MemParse, (size)) + (*PL_MemParse->pMalloc)(PL_MemParse, (size)) #define PerlMemParse_realloc(buf, size) \ - (*PL_MemParse->pRealloc)(PL_MemParse, (buf), (size)) + (*PL_MemParse->pRealloc)(PL_MemParse, (buf), (size)) #define PerlMemParse_free(buf) \ - (*PL_MemParse->pFree)(PL_MemParse, (buf)) + (*PL_MemParse->pFree)(PL_MemParse, (buf)) #define PerlMemParse_calloc(num, size) \ - (*PL_MemParse->pCalloc)(PL_MemParse, (num), (size)) + (*PL_MemParse->pCalloc)(PL_MemParse, (num), (size)) #define PerlMemParse_get_lock() \ - (*PL_MemParse->pGetLock)(PL_MemParse) + (*PL_MemParse->pGetLock)(PL_MemParse) #define PerlMemParse_free_lock() \ - (*PL_MemParse->pFreeLock)(PL_MemParse) + (*PL_MemParse->pFreeLock)(PL_MemParse) #define PerlMemParse_is_locked() \ - (*PL_MemParse->pIsLocked)(PL_MemParse) + (*PL_MemParse->pIsLocked)(PL_MemParse) #else /* PERL_IMPLICIT_SYS */ @@ -936,18 +948,18 @@ struct IPerlProcInfo; typedef void (*LPProcAbort)(struct IPerlProc*); typedef char* (*LPProcCrypt)(struct IPerlProc*, const char*, - const char*); + const char*); typedef void (*LPProcExit)(struct IPerlProc*, int) - __attribute__noreturn__; + __attribute__noreturn__; typedef void (*LPProc_Exit)(struct IPerlProc*, int) - __attribute__noreturn__; + __attribute__noreturn__; typedef int (*LPProcExecl)(struct IPerlProc*, const char*, - const char*, const char*, const char*, - const char*); + const char*, const char*, const char*, + const char*); typedef int (*LPProcExecv)(struct IPerlProc*, const char*, - const char*const*); + const char*const*); typedef int (*LPProcExecvp)(struct IPerlProc*, const char*, - const char*const*); + const char*const*); typedef Uid_t (*LPProcGetuid)(struct IPerlProc*); typedef Uid_t (*LPProcGeteuid)(struct IPerlProc*); typedef Gid_t (*LPProcGetgid)(struct IPerlProc*); @@ -957,9 +969,9 @@ typedef int (*LPProcKillpg)(struct IPerlProc*, int, int); typedef int (*LPProcPauseProc)(struct IPerlProc*); typedef PerlIO* (*LPProcPopen)(struct IPerlProc*, const char*, - const char*); + const char*); typedef PerlIO* (*LPProcPopenList)(struct IPerlProc*, const char*, - IV narg, SV **args); + IV narg, SV **args); typedef int (*LPProcPclose)(struct IPerlProc*, PerlIO*); typedef int (*LPProcPipe)(struct IPerlProc*, int*); typedef int (*LPProcSetuid)(struct IPerlProc*, uid_t); @@ -974,13 +986,13 @@ #ifdef WIN32 typedef void* (*LPProcDynaLoader)(struct IPerlProc*, const char*); typedef void (*LPProcGetOSError)(struct IPerlProc*, - SV* sv, DWORD dwErr); + SV* sv, DWORD dwErr); typedef int (*LPProcSpawnvp)(struct IPerlProc*, int, const char*, - const char*const*); + const char*const*); #endif typedef int (*LPProcLastHost)(struct IPerlProc*); typedef int (*LPProcGetTimeOfDay)(struct IPerlProc*, - struct timeval*, void*); + struct timeval*, void*); struct IPerlProc { @@ -1028,76 +1040,76 @@ }; #define PerlProc_abort() \ - (*PL_Proc->pAbort)(PL_Proc) + (*PL_Proc->pAbort)(PL_Proc) #define PerlProc_crypt(c,s) \ - (*PL_Proc->pCrypt)(PL_Proc, (c), (s)) + (*PL_Proc->pCrypt)(PL_Proc, (c), (s)) #define PerlProc_exit(s) \ - (*PL_Proc->pExit)(PL_Proc, (s)) + (*PL_Proc->pExit)(PL_Proc, (s)) #define PerlProc__exit(s) \ - (*PL_Proc->p_Exit)(PL_Proc, (s)) + (*PL_Proc->p_Exit)(PL_Proc, (s)) #define PerlProc_execl(c, w, x, y, z) \ - (*PL_Proc->pExecl)(PL_Proc, (c), (w), (x), (y), (z)) + (*PL_Proc->pExecl)(PL_Proc, (c), (w), (x), (y), (z)) #define PerlProc_execv(c, a) \ - (*PL_Proc->pExecv)(PL_Proc, (c), (a)) + (*PL_Proc->pExecv)(PL_Proc, (c), (a)) #define PerlProc_execvp(c, a) \ - (*PL_Proc->pExecvp)(PL_Proc, (c), (a)) + (*PL_Proc->pExecvp)(PL_Proc, (c), (a)) #define PerlProc_getuid() \ - (*PL_Proc->pGetuid)(PL_Proc) + (*PL_Proc->pGetuid)(PL_Proc) #define PerlProc_geteuid() \ - (*PL_Proc->pGeteuid)(PL_Proc) + (*PL_Proc->pGeteuid)(PL_Proc) #define PerlProc_getgid() \ - (*PL_Proc->pGetgid)(PL_Proc) + (*PL_Proc->pGetgid)(PL_Proc) #define PerlProc_getegid() \ - (*PL_Proc->pGetegid)(PL_Proc) + (*PL_Proc->pGetegid)(PL_Proc) #define PerlProc_getlogin() \ - (*PL_Proc->pGetlogin)(PL_Proc) + (*PL_Proc->pGetlogin)(PL_Proc) #define PerlProc_kill(i, a) \ - (*PL_Proc->pKill)(PL_Proc, (i), (a)) + (*PL_Proc->pKill)(PL_Proc, (i), (a)) #define PerlProc_killpg(i, a) \ - (*PL_Proc->pKillpg)(PL_Proc, (i), (a)) + (*PL_Proc->pKillpg)(PL_Proc, (i), (a)) #define PerlProc_pause() \ - (*PL_Proc->pPauseProc)(PL_Proc) + (*PL_Proc->pPauseProc)(PL_Proc) #define PerlProc_popen(c, m) \ - (*PL_Proc->pPopen)(PL_Proc, (c), (m)) + (*PL_Proc->pPopen)(PL_Proc, (c), (m)) #define PerlProc_popen_list(m, n, a) \ - (*PL_Proc->pPopenList)(PL_Proc, (m), (n), (a)) + (*PL_Proc->pPopenList)(PL_Proc, (m), (n), (a)) #define PerlProc_pclose(f) \ - (*PL_Proc->pPclose)(PL_Proc, (f)) + (*PL_Proc->pPclose)(PL_Proc, (f)) #define PerlProc_pipe(fd) \ - (*PL_Proc->pPipe)(PL_Proc, (fd)) + (*PL_Proc->pPipe)(PL_Proc, (fd)) #define PerlProc_setuid(u) \ - (*PL_Proc->pSetuid)(PL_Proc, (u)) + (*PL_Proc->pSetuid)(PL_Proc, (u)) #define PerlProc_setgid(g) \ - (*PL_Proc->pSetgid)(PL_Proc, (g)) + (*PL_Proc->pSetgid)(PL_Proc, (g)) #define PerlProc_sleep(t) \ - (*PL_Proc->pSleep)(PL_Proc, (t)) + (*PL_Proc->pSleep)(PL_Proc, (t)) #define PerlProc_times(t) \ - (*PL_Proc->pTimes)(PL_Proc, (t)) + (*PL_Proc->pTimes)(PL_Proc, (t)) #define PerlProc_wait(t) \ - (*PL_Proc->pWait)(PL_Proc, (t)) + (*PL_Proc->pWait)(PL_Proc, (t)) #define PerlProc_waitpid(p,s,f) \ - (*PL_Proc->pWaitpid)(PL_Proc, (p), (s), (f)) + (*PL_Proc->pWaitpid)(PL_Proc, (p), (s), (f)) #define PerlProc_signal(n, h) \ - (*PL_Proc->pSignal)(PL_Proc, (n), (h)) + (*PL_Proc->pSignal)(PL_Proc, (n), (h)) #define PerlProc_fork() \ - (*PL_Proc->pFork)(PL_Proc) + (*PL_Proc->pFork)(PL_Proc) #define PerlProc_getpid() \ - (*PL_Proc->pGetpid)(PL_Proc) + (*PL_Proc->pGetpid)(PL_Proc) #define PerlProc_setjmp(b, n) Sigsetjmp((b), (n)) #define PerlProc_longjmp(b, n) Siglongjmp((b), (n)) #ifdef WIN32 #define PerlProc_DynaLoad(f) \ - (*PL_Proc->pDynaLoader)(PL_Proc, (f)) + (*PL_Proc->pDynaLoader)(PL_Proc, (f)) #define PerlProc_GetOSError(s,e) \ - (*PL_Proc->pGetOSError)(PL_Proc, (s), (e)) + (*PL_Proc->pGetOSError)(PL_Proc, (s), (e)) #define PerlProc_spawnvp(m, c, a) \ - (*PL_Proc->pSpawnvp)(PL_Proc, (m), (c), (a)) + (*PL_Proc->pSpawnvp)(PL_Proc, (m), (c), (a)) #endif #define PerlProc_lasthost() \ - (*PL_Proc->pLastHost)(PL_Proc) + (*PL_Proc->pLastHost)(PL_Proc) #define PerlProc_gettimeofday(t,z) \ - (*PL_Proc->pGetTimeOfDay)(PL_Proc,(t),(z)) + (*PL_Proc->pGetTimeOfDay)(PL_Proc,(t),(z)) #else /* PERL_IMPLICIT_SYS */ @@ -1106,7 +1118,7 @@ #define PerlProc_exit(s) exit((s)) #define PerlProc__exit(s) _exit((s)) #define PerlProc_execl(c,w,x,y,z) \ - execl((c), (w), (x), (y), (z)) + execl((c), (w), (x), (y), (z)) #define PerlProc_execv(c, a) execv((c), (a)) #define PerlProc_execvp(c, a) execvp((c), (a)) #define PerlProc_getuid() getuid() @@ -1136,11 +1148,11 @@ #ifdef WIN32 #define PerlProc_DynaLoad(f) \ - win32_dynaload((f)) + win32_dynaload((f)) #define PerlProc_GetOSError(s,e) \ - win32_str_os_error((s), (e)) + win32_str_os_error((s), (e)) #define PerlProc_spawnvp(m, c, a) \ - win32_spawnvp((m), (c), (a)) + win32_spawnvp((m), (c), (a)) #undef PerlProc_signal #define PerlProc_signal(n, h) win32_signal((n), (h)) #endif @@ -1160,20 +1172,20 @@ typedef u_long (*LPNtohl)(struct IPerlSock*, u_long); typedef u_short (*LPNtohs)(struct IPerlSock*, u_short); typedef SOCKET (*LPAccept)(struct IPerlSock*, SOCKET, - struct sockaddr*, int*); + struct sockaddr*, int*); typedef int (*LPBind)(struct IPerlSock*, SOCKET, - const struct sockaddr*, int); + const struct sockaddr*, int); typedef int (*LPConnect)(struct IPerlSock*, SOCKET, - const struct sockaddr*, int); + const struct sockaddr*, int); typedef void (*LPEndhostent)(struct IPerlSock*); typedef void (*LPEndnetent)(struct IPerlSock*); typedef void (*LPEndprotoent)(struct IPerlSock*); typedef void (*LPEndservent)(struct IPerlSock*); typedef int (*LPGethostname)(struct IPerlSock*, char*, int); typedef int (*LPGetpeername)(struct IPerlSock*, SOCKET, - struct sockaddr*, int*); + struct sockaddr*, int*); typedef struct hostent* (*LPGethostbyaddr)(struct IPerlSock*, const char*, - int, int); + int, int); typedef struct hostent* (*LPGethostbyname)(struct IPerlSock*, const char*); typedef struct hostent* (*LPGethostent)(struct IPerlSock*); typedef struct netent* (*LPGetnetbyaddr)(struct IPerlSock*, long, int); @@ -1183,36 +1195,36 @@ typedef struct protoent*(*LPGetprotobynumber)(struct IPerlSock*, int); typedef struct protoent*(*LPGetprotoent)(struct IPerlSock*); typedef struct servent* (*LPGetservbyname)(struct IPerlSock*, const char*, - const char*); + const char*); typedef struct servent* (*LPGetservbyport)(struct IPerlSock*, int, - const char*); + const char*); typedef struct servent* (*LPGetservent)(struct IPerlSock*); typedef int (*LPGetsockname)(struct IPerlSock*, SOCKET, - struct sockaddr*, int*); + struct sockaddr*, int*); typedef int (*LPGetsockopt)(struct IPerlSock*, SOCKET, int, int, - char*, int*); + char*, int*); typedef unsigned long (*LPInetAddr)(struct IPerlSock*, const char*); typedef char* (*LPInetNtoa)(struct IPerlSock*, struct in_addr); typedef int (*LPListen)(struct IPerlSock*, SOCKET, int); typedef int (*LPRecv)(struct IPerlSock*, SOCKET, char*, int, int); typedef int (*LPRecvfrom)(struct IPerlSock*, SOCKET, char*, int, - int, struct sockaddr*, int*); + int, struct sockaddr*, int*); typedef int (*LPSelect)(struct IPerlSock*, int, char*, char*, - char*, const struct timeval*); + char*, const struct timeval*); typedef int (*LPSend)(struct IPerlSock*, SOCKET, const char*, int, - int); + int); typedef int (*LPSendto)(struct IPerlSock*, SOCKET, const char*, - int, int, const struct sockaddr*, int); + int, int, const struct sockaddr*, int); typedef void (*LPSethostent)(struct IPerlSock*, int); typedef void (*LPSetnetent)(struct IPerlSock*, int); typedef void (*LPSetprotoent)(struct IPerlSock*, int); typedef void (*LPSetservent)(struct IPerlSock*, int); typedef int (*LPSetsockopt)(struct IPerlSock*, SOCKET, int, int, - const char*, int); + const char*, int); typedef int (*LPShutdown)(struct IPerlSock*, SOCKET, int); typedef SOCKET (*LPSocket)(struct IPerlSock*, int, int, int); typedef int (*LPSocketpair)(struct IPerlSock*, int, int, int, - int*); + int*); #ifdef WIN32 typedef int (*LPClosesocket)(struct IPerlSock*, SOCKET s); #endif @@ -1274,98 +1286,98 @@ }; #define PerlSock_htonl(x) \ - (*PL_Sock->pHtonl)(PL_Sock, x) + (*PL_Sock->pHtonl)(PL_Sock, x) #define PerlSock_htons(x) \ - (*PL_Sock->pHtons)(PL_Sock, x) + (*PL_Sock->pHtons)(PL_Sock, x) #define PerlSock_ntohl(x) \ - (*PL_Sock->pNtohl)(PL_Sock, x) + (*PL_Sock->pNtohl)(PL_Sock, x) #define PerlSock_ntohs(x) \ - (*PL_Sock->pNtohs)(PL_Sock, x) + (*PL_Sock->pNtohs)(PL_Sock, x) #define PerlSock_accept(s, a, l) \ - (*PL_Sock->pAccept)(PL_Sock, s, a, l) + (*PL_Sock->pAccept)(PL_Sock, s, a, l) #define PerlSock_bind(s, n, l) \ - (*PL_Sock->pBind)(PL_Sock, s, n, l) + (*PL_Sock->pBind)(PL_Sock, s, n, l) #define PerlSock_connect(s, n, l) \ - (*PL_Sock->pConnect)(PL_Sock, s, n, l) + (*PL_Sock->pConnect)(PL_Sock, s, n, l) #define PerlSock_endhostent() \ - (*PL_Sock->pEndhostent)(PL_Sock) + (*PL_Sock->pEndhostent)(PL_Sock) #define PerlSock_endnetent() \ - (*PL_Sock->pEndnetent)(PL_Sock) + (*PL_Sock->pEndnetent)(PL_Sock) #define PerlSock_endprotoent() \ - (*PL_Sock->pEndprotoent)(PL_Sock) + (*PL_Sock->pEndprotoent)(PL_Sock) #define PerlSock_endservent() \ - (*PL_Sock->pEndservent)(PL_Sock) + (*PL_Sock->pEndservent)(PL_Sock) #define PerlSock_gethostbyaddr(a, l, t) \ - (*PL_Sock->pGethostbyaddr)(PL_Sock, a, l, t) + (*PL_Sock->pGethostbyaddr)(PL_Sock, a, l, t) #define PerlSock_gethostbyname(n) \ - (*PL_Sock->pGethostbyname)(PL_Sock, n) + (*PL_Sock->pGethostbyname)(PL_Sock, n) #define PerlSock_gethostent() \ - (*PL_Sock->pGethostent)(PL_Sock) + (*PL_Sock->pGethostent)(PL_Sock) #define PerlSock_gethostname(n, l) \ - (*PL_Sock->pGethostname)(PL_Sock, n, l) + (*PL_Sock->pGethostname)(PL_Sock, n, l) #define PerlSock_getnetbyaddr(n, t) \ - (*PL_Sock->pGetnetbyaddr)(PL_Sock, n, t) + (*PL_Sock->pGetnetbyaddr)(PL_Sock, n, t) #define PerlSock_getnetbyname(c) \ - (*PL_Sock->pGetnetbyname)(PL_Sock, c) + (*PL_Sock->pGetnetbyname)(PL_Sock, c) #define PerlSock_getnetent() \ - (*PL_Sock->pGetnetent)(PL_Sock) + (*PL_Sock->pGetnetent)(PL_Sock) #define PerlSock_getpeername(s, n, l) \ - (*PL_Sock->pGetpeername)(PL_Sock, s, n, l) + (*PL_Sock->pGetpeername)(PL_Sock, s, n, l) #define PerlSock_getprotobyname(n) \ - (*PL_Sock->pGetprotobyname)(PL_Sock, n) + (*PL_Sock->pGetprotobyname)(PL_Sock, n) #define PerlSock_getprotobynumber(n) \ - (*PL_Sock->pGetprotobynumber)(PL_Sock, n) + (*PL_Sock->pGetprotobynumber)(PL_Sock, n) #define PerlSock_getprotoent() \ - (*PL_Sock->pGetprotoent)(PL_Sock) + (*PL_Sock->pGetprotoent)(PL_Sock) #define PerlSock_getservbyname(n, p) \ - (*PL_Sock->pGetservbyname)(PL_Sock, n, p) + (*PL_Sock->pGetservbyname)(PL_Sock, n, p) #define PerlSock_getservbyport(port, p) \ - (*PL_Sock->pGetservbyport)(PL_Sock, port, p) + (*PL_Sock->pGetservbyport)(PL_Sock, port, p) #define PerlSock_getservent() \ - (*PL_Sock->pGetservent)(PL_Sock) + (*PL_Sock->pGetservent)(PL_Sock) #define PerlSock_getsockname(s, n, l) \ - (*PL_Sock->pGetsockname)(PL_Sock, s, n, l) + (*PL_Sock->pGetsockname)(PL_Sock, s, n, l) #define PerlSock_getsockopt(s,l,n,v,i) \ - (*PL_Sock->pGetsockopt)(PL_Sock, s, l, n, v, i) + (*PL_Sock->pGetsockopt)(PL_Sock, s, l, n, v, i) #define PerlSock_inet_addr(c) \ - (*PL_Sock->pInetAddr)(PL_Sock, c) + (*PL_Sock->pInetAddr)(PL_Sock, c) #define PerlSock_inet_ntoa(i) \ - (*PL_Sock->pInetNtoa)(PL_Sock, i) + (*PL_Sock->pInetNtoa)(PL_Sock, i) #define PerlSock_listen(s, b) \ - (*PL_Sock->pListen)(PL_Sock, s, b) + (*PL_Sock->pListen)(PL_Sock, s, b) #define PerlSock_recv(s, b, l, f) \ - (*PL_Sock->pRecv)(PL_Sock, s, b, l, f) + (*PL_Sock->pRecv)(PL_Sock, s, b, l, f) #define PerlSock_recvfrom(s,b,l,f,from,fromlen) \ - (*PL_Sock->pRecvfrom)(PL_Sock, s, b, l, f, from, fromlen) + (*PL_Sock->pRecvfrom)(PL_Sock, s, b, l, f, from, fromlen) #define PerlSock_select(n, r, w, e, t) \ - (*PL_Sock->pSelect)(PL_Sock, n, (char*)r, (char*)w, (char*)e, t) + (*PL_Sock->pSelect)(PL_Sock, n, (char*)r, (char*)w, (char*)e, t) #define PerlSock_send(s, b, l, f) \ - (*PL_Sock->pSend)(PL_Sock, s, b, l, f) + (*PL_Sock->pSend)(PL_Sock, s, b, l, f) #define PerlSock_sendto(s, b, l, f, t, tlen) \ - (*PL_Sock->pSendto)(PL_Sock, s, b, l, f, t, tlen) + (*PL_Sock->pSendto)(PL_Sock, s, b, l, f, t, tlen) #define PerlSock_sethostent(f) \ - (*PL_Sock->pSethostent)(PL_Sock, f) + (*PL_Sock->pSethostent)(PL_Sock, f) #define PerlSock_setnetent(f) \ - (*PL_Sock->pSetnetent)(PL_Sock, f) + (*PL_Sock->pSetnetent)(PL_Sock, f) #define PerlSock_setprotoent(f) \ - (*PL_Sock->pSetprotoent)(PL_Sock, f) + (*PL_Sock->pSetprotoent)(PL_Sock, f) #define PerlSock_setservent(f) \ - (*PL_Sock->pSetservent)(PL_Sock, f) + (*PL_Sock->pSetservent)(PL_Sock, f) #define PerlSock_setsockopt(s, l, n, v, len) \ - (*PL_Sock->pSetsockopt)(PL_Sock, s, l, n, v, len) + (*PL_Sock->pSetsockopt)(PL_Sock, s, l, n, v, len) #define PerlSock_shutdown(s, h) \ - (*PL_Sock->pShutdown)(PL_Sock, s, h) + (*PL_Sock->pShutdown)(PL_Sock, s, h) #define PerlSock_socket(a, t, p) \ - (*PL_Sock->pSocket)(PL_Sock, a, t, p) + (*PL_Sock->pSocket)(PL_Sock, a, t, p) #define PerlSock_socketpair(a, t, p, f) \ - (*PL_Sock->pSocketpair)(PL_Sock, a, t, p, f) + (*PL_Sock->pSocketpair)(PL_Sock, a, t, p, f) #ifdef WIN32 #define PerlSock_closesocket(s) \ - (*PL_Sock->pClosesocket)(PL_Sock, s) + (*PL_Sock->pClosesocket)(PL_Sock, s) #endif -#else /* PERL_IMPLICIT_SYS */ +#else /* ! PERL_IMPLICIT_SYS below */ #define PerlSock_htonl(x) htonl(x) #define PerlSock_htons(x) htons(x) @@ -1404,17 +1416,17 @@ #define PerlSock_listen(s, b) listen(s, b) #define PerlSock_recv(s, b, l, f) recv(s, b, l, f) #define PerlSock_recvfrom(s, b, l, f, from, fromlen) \ - recvfrom(s, b, l, f, from, fromlen) + recvfrom(s, b, l, f, from, fromlen) #define PerlSock_select(n, r, w, e, t) select(n, r, w, e, t) #define PerlSock_send(s, b, l, f) send(s, b, l, f) #define PerlSock_sendto(s, b, l, f, t, tlen) \ - sendto(s, b, l, f, t, tlen) + sendto(s, b, l, f, t, tlen) #define PerlSock_sethostent(f) sethostent(f) #define PerlSock_setnetent(f) setnetent(f) #define PerlSock_setprotoent(f) setprotoent(f) #define PerlSock_setservent(f) setservent(f) #define PerlSock_setsockopt(s, l, n, v, len) \ - setsockopt(s, l, n, v, len) + setsockopt(s, l, n, v, len) #define PerlSock_shutdown(s, h) shutdown(s, h) #define PerlSock_socket(a, t, p) socket(a, t, p) #define PerlSock_socketpair(a, t, p, f) socketpair(a, t, p, f) diff -Nru perl-5.32.1/keywords.c perl-5.34.0/keywords.c --- perl-5.32.1/keywords.c 2020-12-18 09:58:48.000000000 +0000 +++ perl-5.34.0/keywords.c 2021-02-21 11:01:31.000000000 +0000 @@ -203,7 +203,7 @@ goto unknown; } - case 3: /* 29 tokens of length 3 */ + case 3: /* 30 tokens of length 3 */ switch (name[0]) { case 'E': @@ -463,13 +463,27 @@ } case 't': - if (name[1] == 'i' && - name[2] == 'e') - { /* tie */ - return -KEY_tie; - } + switch (name[1]) + { + case 'i': + if (name[2] == 'e') + { /* tie */ + return -KEY_tie; + } - goto unknown; + goto unknown; + + case 'r': + if (name[2] == 'y') + { /* try */ + return (all_keywords || FEATURE_TRY_IS_ENABLED ? KEY_try : 0); + } + + goto unknown; + + default: + goto unknown; + } case 'u': if (name[1] == 's' && @@ -964,7 +978,7 @@ goto unknown; } - case 5: /* 39 tokens of length 5 */ + case 5: /* 40 tokens of length 5 */ switch (name[0]) { case 'B': @@ -1046,6 +1060,16 @@ case 'c': switch (name[1]) { + case 'a': + if (name[2] == 't' && + name[3] == 'c' && + name[4] == 'h') + { /* catch */ + return (all_keywords || FEATURE_TRY_IS_ENABLED ? KEY_catch : 0); + } + + goto unknown; + case 'h': switch (name[2]) { @@ -3451,5 +3475,5 @@ } /* Generated from: - * f77998a5bc995c1b42d3d080de227ef5f11638bcd329367431d8f193aef2d3cc regen/keywords.pl + * 3a4f2004642b00b871c01cbdc018f6ca5ead6b4e0b2b184120c60b0b62a229dd regen/keywords.pl * ex: set ro: */ diff -Nru perl-5.32.1/keywords.h perl-5.34.0/keywords.h --- perl-5.32.1/keywords.h 2020-12-18 09:58:48.000000000 +0000 +++ perl-5.34.0/keywords.h 2021-02-21 11:01:31.000000000 +0000 @@ -37,239 +37,241 @@ #define KEY_bless 21 #define KEY_break 22 #define KEY_caller 23 -#define KEY_chdir 24 -#define KEY_chmod 25 -#define KEY_chomp 26 -#define KEY_chop 27 -#define KEY_chown 28 -#define KEY_chr 29 -#define KEY_chroot 30 -#define KEY_close 31 -#define KEY_closedir 32 -#define KEY_cmp 33 -#define KEY_connect 34 -#define KEY_continue 35 -#define KEY_cos 36 -#define KEY_crypt 37 -#define KEY_dbmclose 38 -#define KEY_dbmopen 39 -#define KEY_default 40 -#define KEY_defined 41 -#define KEY_delete 42 -#define KEY_die 43 -#define KEY_do 44 -#define KEY_dump 45 -#define KEY_each 46 -#define KEY_else 47 -#define KEY_elsif 48 -#define KEY_endgrent 49 -#define KEY_endhostent 50 -#define KEY_endnetent 51 -#define KEY_endprotoent 52 -#define KEY_endpwent 53 -#define KEY_endservent 54 -#define KEY_eof 55 -#define KEY_eq 56 -#define KEY_eval 57 -#define KEY_evalbytes 58 -#define KEY_exec 59 -#define KEY_exists 60 -#define KEY_exit 61 -#define KEY_exp 62 -#define KEY_fc 63 -#define KEY_fcntl 64 -#define KEY_fileno 65 -#define KEY_flock 66 -#define KEY_for 67 -#define KEY_foreach 68 -#define KEY_fork 69 -#define KEY_format 70 -#define KEY_formline 71 -#define KEY_ge 72 -#define KEY_getc 73 -#define KEY_getgrent 74 -#define KEY_getgrgid 75 -#define KEY_getgrnam 76 -#define KEY_gethostbyaddr 77 -#define KEY_gethostbyname 78 -#define KEY_gethostent 79 -#define KEY_getlogin 80 -#define KEY_getnetbyaddr 81 -#define KEY_getnetbyname 82 -#define KEY_getnetent 83 -#define KEY_getpeername 84 -#define KEY_getpgrp 85 -#define KEY_getppid 86 -#define KEY_getpriority 87 -#define KEY_getprotobyname 88 -#define KEY_getprotobynumber 89 -#define KEY_getprotoent 90 -#define KEY_getpwent 91 -#define KEY_getpwnam 92 -#define KEY_getpwuid 93 -#define KEY_getservbyname 94 -#define KEY_getservbyport 95 -#define KEY_getservent 96 -#define KEY_getsockname 97 -#define KEY_getsockopt 98 -#define KEY_given 99 -#define KEY_glob 100 -#define KEY_gmtime 101 -#define KEY_goto 102 -#define KEY_grep 103 -#define KEY_gt 104 -#define KEY_hex 105 -#define KEY_if 106 -#define KEY_index 107 -#define KEY_int 108 -#define KEY_ioctl 109 -#define KEY_isa 110 -#define KEY_join 111 -#define KEY_keys 112 -#define KEY_kill 113 -#define KEY_last 114 -#define KEY_lc 115 -#define KEY_lcfirst 116 -#define KEY_le 117 -#define KEY_length 118 -#define KEY_link 119 -#define KEY_listen 120 -#define KEY_local 121 -#define KEY_localtime 122 -#define KEY_lock 123 -#define KEY_log 124 -#define KEY_lstat 125 -#define KEY_lt 126 -#define KEY_m 127 -#define KEY_map 128 -#define KEY_mkdir 129 -#define KEY_msgctl 130 -#define KEY_msgget 131 -#define KEY_msgrcv 132 -#define KEY_msgsnd 133 -#define KEY_my 134 -#define KEY_ne 135 -#define KEY_next 136 -#define KEY_no 137 -#define KEY_not 138 -#define KEY_oct 139 -#define KEY_open 140 -#define KEY_opendir 141 -#define KEY_or 142 -#define KEY_ord 143 -#define KEY_our 144 -#define KEY_pack 145 -#define KEY_package 146 -#define KEY_pipe 147 -#define KEY_pop 148 -#define KEY_pos 149 -#define KEY_print 150 -#define KEY_printf 151 -#define KEY_prototype 152 -#define KEY_push 153 -#define KEY_q 154 -#define KEY_qq 155 -#define KEY_qr 156 -#define KEY_quotemeta 157 -#define KEY_qw 158 -#define KEY_qx 159 -#define KEY_rand 160 -#define KEY_read 161 -#define KEY_readdir 162 -#define KEY_readline 163 -#define KEY_readlink 164 -#define KEY_readpipe 165 -#define KEY_recv 166 -#define KEY_redo 167 -#define KEY_ref 168 -#define KEY_rename 169 -#define KEY_require 170 -#define KEY_reset 171 -#define KEY_return 172 -#define KEY_reverse 173 -#define KEY_rewinddir 174 -#define KEY_rindex 175 -#define KEY_rmdir 176 -#define KEY_s 177 -#define KEY_say 178 -#define KEY_scalar 179 -#define KEY_seek 180 -#define KEY_seekdir 181 -#define KEY_select 182 -#define KEY_semctl 183 -#define KEY_semget 184 -#define KEY_semop 185 -#define KEY_send 186 -#define KEY_setgrent 187 -#define KEY_sethostent 188 -#define KEY_setnetent 189 -#define KEY_setpgrp 190 -#define KEY_setpriority 191 -#define KEY_setprotoent 192 -#define KEY_setpwent 193 -#define KEY_setservent 194 -#define KEY_setsockopt 195 -#define KEY_shift 196 -#define KEY_shmctl 197 -#define KEY_shmget 198 -#define KEY_shmread 199 -#define KEY_shmwrite 200 -#define KEY_shutdown 201 -#define KEY_sin 202 -#define KEY_sleep 203 -#define KEY_socket 204 -#define KEY_socketpair 205 -#define KEY_sort 206 -#define KEY_splice 207 -#define KEY_split 208 -#define KEY_sprintf 209 -#define KEY_sqrt 210 -#define KEY_srand 211 -#define KEY_stat 212 -#define KEY_state 213 -#define KEY_study 214 -#define KEY_sub 215 -#define KEY_substr 216 -#define KEY_symlink 217 -#define KEY_syscall 218 -#define KEY_sysopen 219 -#define KEY_sysread 220 -#define KEY_sysseek 221 -#define KEY_system 222 -#define KEY_syswrite 223 -#define KEY_tell 224 -#define KEY_telldir 225 -#define KEY_tie 226 -#define KEY_tied 227 -#define KEY_time 228 -#define KEY_times 229 -#define KEY_tr 230 -#define KEY_truncate 231 -#define KEY_uc 232 -#define KEY_ucfirst 233 -#define KEY_umask 234 -#define KEY_undef 235 -#define KEY_unless 236 -#define KEY_unlink 237 -#define KEY_unpack 238 -#define KEY_unshift 239 -#define KEY_untie 240 -#define KEY_until 241 -#define KEY_use 242 -#define KEY_utime 243 -#define KEY_values 244 -#define KEY_vec 245 -#define KEY_wait 246 -#define KEY_waitpid 247 -#define KEY_wantarray 248 -#define KEY_warn 249 -#define KEY_when 250 -#define KEY_while 251 -#define KEY_write 252 -#define KEY_x 253 -#define KEY_xor 254 -#define KEY_y 255 +#define KEY_catch 24 +#define KEY_chdir 25 +#define KEY_chmod 26 +#define KEY_chomp 27 +#define KEY_chop 28 +#define KEY_chown 29 +#define KEY_chr 30 +#define KEY_chroot 31 +#define KEY_close 32 +#define KEY_closedir 33 +#define KEY_cmp 34 +#define KEY_connect 35 +#define KEY_continue 36 +#define KEY_cos 37 +#define KEY_crypt 38 +#define KEY_dbmclose 39 +#define KEY_dbmopen 40 +#define KEY_default 41 +#define KEY_defined 42 +#define KEY_delete 43 +#define KEY_die 44 +#define KEY_do 45 +#define KEY_dump 46 +#define KEY_each 47 +#define KEY_else 48 +#define KEY_elsif 49 +#define KEY_endgrent 50 +#define KEY_endhostent 51 +#define KEY_endnetent 52 +#define KEY_endprotoent 53 +#define KEY_endpwent 54 +#define KEY_endservent 55 +#define KEY_eof 56 +#define KEY_eq 57 +#define KEY_eval 58 +#define KEY_evalbytes 59 +#define KEY_exec 60 +#define KEY_exists 61 +#define KEY_exit 62 +#define KEY_exp 63 +#define KEY_fc 64 +#define KEY_fcntl 65 +#define KEY_fileno 66 +#define KEY_flock 67 +#define KEY_for 68 +#define KEY_foreach 69 +#define KEY_fork 70 +#define KEY_format 71 +#define KEY_formline 72 +#define KEY_ge 73 +#define KEY_getc 74 +#define KEY_getgrent 75 +#define KEY_getgrgid 76 +#define KEY_getgrnam 77 +#define KEY_gethostbyaddr 78 +#define KEY_gethostbyname 79 +#define KEY_gethostent 80 +#define KEY_getlogin 81 +#define KEY_getnetbyaddr 82 +#define KEY_getnetbyname 83 +#define KEY_getnetent 84 +#define KEY_getpeername 85 +#define KEY_getpgrp 86 +#define KEY_getppid 87 +#define KEY_getpriority 88 +#define KEY_getprotobyname 89 +#define KEY_getprotobynumber 90 +#define KEY_getprotoent 91 +#define KEY_getpwent 92 +#define KEY_getpwnam 93 +#define KEY_getpwuid 94 +#define KEY_getservbyname 95 +#define KEY_getservbyport 96 +#define KEY_getservent 97 +#define KEY_getsockname 98 +#define KEY_getsockopt 99 +#define KEY_given 100 +#define KEY_glob 101 +#define KEY_gmtime 102 +#define KEY_goto 103 +#define KEY_grep 104 +#define KEY_gt 105 +#define KEY_hex 106 +#define KEY_if 107 +#define KEY_index 108 +#define KEY_int 109 +#define KEY_ioctl 110 +#define KEY_isa 111 +#define KEY_join 112 +#define KEY_keys 113 +#define KEY_kill 114 +#define KEY_last 115 +#define KEY_lc 116 +#define KEY_lcfirst 117 +#define KEY_le 118 +#define KEY_length 119 +#define KEY_link 120 +#define KEY_listen 121 +#define KEY_local 122 +#define KEY_localtime 123 +#define KEY_lock 124 +#define KEY_log 125 +#define KEY_lstat 126 +#define KEY_lt 127 +#define KEY_m 128 +#define KEY_map 129 +#define KEY_mkdir 130 +#define KEY_msgctl 131 +#define KEY_msgget 132 +#define KEY_msgrcv 133 +#define KEY_msgsnd 134 +#define KEY_my 135 +#define KEY_ne 136 +#define KEY_next 137 +#define KEY_no 138 +#define KEY_not 139 +#define KEY_oct 140 +#define KEY_open 141 +#define KEY_opendir 142 +#define KEY_or 143 +#define KEY_ord 144 +#define KEY_our 145 +#define KEY_pack 146 +#define KEY_package 147 +#define KEY_pipe 148 +#define KEY_pop 149 +#define KEY_pos 150 +#define KEY_print 151 +#define KEY_printf 152 +#define KEY_prototype 153 +#define KEY_push 154 +#define KEY_q 155 +#define KEY_qq 156 +#define KEY_qr 157 +#define KEY_quotemeta 158 +#define KEY_qw 159 +#define KEY_qx 160 +#define KEY_rand 161 +#define KEY_read 162 +#define KEY_readdir 163 +#define KEY_readline 164 +#define KEY_readlink 165 +#define KEY_readpipe 166 +#define KEY_recv 167 +#define KEY_redo 168 +#define KEY_ref 169 +#define KEY_rename 170 +#define KEY_require 171 +#define KEY_reset 172 +#define KEY_return 173 +#define KEY_reverse 174 +#define KEY_rewinddir 175 +#define KEY_rindex 176 +#define KEY_rmdir 177 +#define KEY_s 178 +#define KEY_say 179 +#define KEY_scalar 180 +#define KEY_seek 181 +#define KEY_seekdir 182 +#define KEY_select 183 +#define KEY_semctl 184 +#define KEY_semget 185 +#define KEY_semop 186 +#define KEY_send 187 +#define KEY_setgrent 188 +#define KEY_sethostent 189 +#define KEY_setnetent 190 +#define KEY_setpgrp 191 +#define KEY_setpriority 192 +#define KEY_setprotoent 193 +#define KEY_setpwent 194 +#define KEY_setservent 195 +#define KEY_setsockopt 196 +#define KEY_shift 197 +#define KEY_shmctl 198 +#define KEY_shmget 199 +#define KEY_shmread 200 +#define KEY_shmwrite 201 +#define KEY_shutdown 202 +#define KEY_sin 203 +#define KEY_sleep 204 +#define KEY_socket 205 +#define KEY_socketpair 206 +#define KEY_sort 207 +#define KEY_splice 208 +#define KEY_split 209 +#define KEY_sprintf 210 +#define KEY_sqrt 211 +#define KEY_srand 212 +#define KEY_stat 213 +#define KEY_state 214 +#define KEY_study 215 +#define KEY_sub 216 +#define KEY_substr 217 +#define KEY_symlink 218 +#define KEY_syscall 219 +#define KEY_sysopen 220 +#define KEY_sysread 221 +#define KEY_sysseek 222 +#define KEY_system 223 +#define KEY_syswrite 224 +#define KEY_tell 225 +#define KEY_telldir 226 +#define KEY_tie 227 +#define KEY_tied 228 +#define KEY_time 229 +#define KEY_times 230 +#define KEY_tr 231 +#define KEY_try 232 +#define KEY_truncate 233 +#define KEY_uc 234 +#define KEY_ucfirst 235 +#define KEY_umask 236 +#define KEY_undef 237 +#define KEY_unless 238 +#define KEY_unlink 239 +#define KEY_unpack 240 +#define KEY_unshift 241 +#define KEY_untie 242 +#define KEY_until 243 +#define KEY_use 244 +#define KEY_utime 245 +#define KEY_values 246 +#define KEY_vec 247 +#define KEY_wait 248 +#define KEY_waitpid 249 +#define KEY_wantarray 250 +#define KEY_warn 251 +#define KEY_when 252 +#define KEY_while 253 +#define KEY_write 254 +#define KEY_x 255 +#define KEY_xor 256 +#define KEY_y 257 /* Generated from: - * f77998a5bc995c1b42d3d080de227ef5f11638bcd329367431d8f193aef2d3cc regen/keywords.pl + * 3a4f2004642b00b871c01cbdc018f6ca5ead6b4e0b2b184120c60b0b62a229dd regen/keywords.pl * ex: set ro: */ diff -Nru perl-5.32.1/lib/B/Deparse-core.t perl-5.34.0/lib/B/Deparse-core.t --- perl-5.32.1/lib/B/Deparse-core.t 2020-12-18 09:58:49.000000000 +0000 +++ perl-5.34.0/lib/B/Deparse-core.t 2021-02-21 11:01:31.000000000 +0000 @@ -41,13 +41,15 @@ use feature (sprintf(":%vd", $^V)); # to avoid relying on the feature # logic to add CORE:: use B::Deparse; -my $deparse = new B::Deparse; +my $deparse = B::Deparse->new(); my %SEEN; -my %SEEN_STRENGH; +my %SEEN_STRENGTH; -# for a given keyword, create a sub of that name, then -# deparse "() = $expr", and see if it matches $expected_expr +# For a given keyword, create a sub of that name, +# then deparse 3 different assignment expressions +# using that keyword. See if the $expr we get back +# matches $expected_expr. sub testit { my ($keyword, $expr, $expected_expr, $lexsub) = @_; @@ -55,56 +57,51 @@ $expected_expr //= $expr; $SEEN{$keyword} = 1; - # lex=0: () = foo($a,$b,$c) # lex=1: my ($a,$b); () = foo($a,$b,$c) # lex=2: () = foo(my $a,$b,$c) for my $lex (0, 1, 2) { - if ($lex) { - next if $keyword =~ /local|our|state|my/; - } - my $vars = $lex == 1 ? 'my($a, $b, $c, $d, $e);' . "\n " : ""; + next if ($lex and $keyword =~ /local|our|state|my/); + my $vars = $lex == 1 ? 'my($a, $b, $c, $d, $e);' . "\n " : ""; - if ($lex == 2) { - my $repl = 'my $a'; - if ($expr =~ 'CORE::do') { - # do foo() is a syntax error, so B::Deparse emits - # do (foo()), but does not distinguish between foo and my, - # because it is too complicated. - $repl = '(my $a)'; - } - s/\$a/$repl/ for $expr, $expected_expr; - } + if ($lex == 2) { + my $repl = 'my $a'; + if ($expr =~ 'CORE::do') { + # do foo() is a syntax error, so B::Deparse emits + # do (foo()), but does not distinguish between foo and my, + # because it is too complicated. + $repl = '(my $a)'; + } + s/\$a/$repl/ for $expr, $expected_expr; + } - my $desc = "$keyword: lex=$lex $expr => $expected_expr"; - $desc .= " (lex sub)" if $lexsub; + my $desc = "$keyword: lex=$lex $expr => $expected_expr"; + $desc .= " (lex sub)" if $lexsub; my $code; - my $code_ref; - if ($lexsub) { - package lexsubtest; - no warnings 'experimental::lexical_subs', 'experimental::isa'; - use feature 'lexical_subs'; - no strict 'vars'; + my $code_ref; + if ($lexsub) { + package lexsubtest; + no warnings 'experimental::lexical_subs', 'experimental::isa'; + use feature 'lexical_subs'; + no strict 'vars'; $code = "sub { state sub $keyword; ${vars}() = $expr }"; - $code = "use feature 'isa';\n$code" if $keyword eq "isa"; - $code_ref = eval $code - or die "$@ in $expr"; - } - else { - package test; - no warnings 'experimental::isa'; - use subs (); - import subs $keyword; - $code = "no strict 'vars'; sub { ${vars}() = $expr }"; - $code = "use feature 'isa';\n$code" if $keyword eq "isa"; - $code_ref = eval $code - or die "$@ in $expr"; - } + $code = "use feature 'isa';\n$code" if $keyword eq "isa"; + $code_ref = eval $code or die "$@ in $expr"; + } + else { + package test; + no warnings 'experimental::isa'; + use subs (); + import subs $keyword; + $code = "no strict 'vars'; sub { ${vars}() = $expr }"; + $code = "use feature 'isa';\n$code" if $keyword eq "isa"; + $code_ref = eval $code or die "$@ in $expr"; + } - my $got_text = $deparse->coderef2text($code_ref); + my $got_text = $deparse->coderef2text($code_ref); - unless ($got_text =~ / + unless ($got_text =~ / package (?:lexsub)?test; (?: BEGIN \{\$\{\^WARNING_BITS\} = "[^"]+"\} )? use strict 'refs', 'subs'; @@ -112,14 +109,14 @@ (?: (?:CORE::)?state sub \w+; )? \Q$vars\E\(\) = (.*) \}/s) { - ::fail($desc); - ::diag("couldn't extract line from boilerplate\n"); - ::diag($got_text); - return; - } + ::fail($desc); + ::diag("couldn't extract line from boilerplate\n"); + ::diag($got_text); + return; + } - my $got_expr = $1; - is $got_expr, $expected_expr, $desc + my $got_expr = $1; + is $got_expr, $expected_expr, $desc or ::diag("ORIGINAL CODE:\n$code");; } } @@ -128,14 +125,13 @@ # Deparse can't distinguish 'and' from '&&' etc my %infix_map = qw(and && or ||); - -# test a keyword that is a binary infix operator, like 'cmp'. +# Test a keyword that is a binary infix operator, like 'cmp'. # $parens - "$a op $b" is deparsed as "($a op $b)" # $strong - keyword is strong sub do_infix_keyword { my ($keyword, $parens, $strong) = @_; - $SEEN_STRENGH{$keyword} = $strong; + $SEEN_STRENGTH{$keyword} = $strong; my $expr = "(\$a $keyword \$b)"; my $nkey = $infix_map{$keyword} // $keyword; my $expr = "(\$a $keyword \$b)"; @@ -149,17 +145,17 @@ testit $keyword, "(\$a CORE::$keyword \$b)", $exp, 1; testit $keyword, "(\$a $keyword \$b)", $exp, 1; if (!$strong) { - # B::Deparse fully qualifies any sub whose name is a keyword, - # imported or not, since the importedness may not be reproduced by - # the deparsed code. x is special. - my $pre = "test::" x ($keyword ne 'x'); - testit $keyword, "$keyword(\$a, \$b)", "$pre$keyword(\$a, \$b);"; + # B::Deparse fully qualifies any sub whose name is a keyword, + # imported or not, since the importedness may not be reproduced by + # the deparsed code. x is special. + my $pre = "test::" x ($keyword ne 'x'); + testit $keyword, "$keyword(\$a, \$b)", "$pre$keyword(\$a, \$b);"; } testit $keyword, "$keyword(\$a, \$b)", "$keyword(\$a, \$b);", 1; } -# test a keyword that is as tandard op/function, like 'index(...)'. -# narg - how many args to test it with +# Test a keyword that is a standard op/function, like 'index(...)'. +# $narg - how many args to test it with # $parens - "foo $a, $b" is deparsed as "foo($a, $b)" # $dollar - an extra '$_' arg will appear in the deparsed output # $strong - keyword is strong @@ -168,33 +164,38 @@ sub do_std_keyword { my ($keyword, $narg, $parens, $dollar, $strong) = @_; - $SEEN_STRENGH{$keyword} = $strong; + $SEEN_STRENGTH{$keyword} = $strong; for my $core (0,1) { # if true, add CORE:: to keyword being deparsed - for my $lexsub (0,1) { # if true, define lex sub - my @code; - for my $do_exp(0, 1) { # first create expr, then expected-expr - my @args = map "\$$_", (undef,"a".."z")[1..$narg]; - push @args, '$_' - if $dollar && $do_exp && ($strong && !$lexsub or $core); - my $args = join(', ', @args); - # XXX $lex_parens is temporary, until lex subs are - # deparsed properly. - my $lex_parens = - !$core && $do_exp && $lexsub && $keyword ne 'map'; - $args = ((!$core && !$strong) || $parens || $lex_parens) - ? "($args)" - : @args ? " $args" : ""; - push @code, (($core && !($do_exp && $strong)) - ? "CORE::" - : $lexsub && $do_exp - ? "CORE::" x $core - : $do_exp && !$core && !$strong ? "test::" : "") - . "$keyword$args;"; - } - # code[0]: to run; code[1]: expected - testit $keyword, @code, $lexsub; - } + for my $lexsub (0,1) { # if true, define lex sub + my @code; + for my $do_exp(0, 1) { # first create expr, then expected-expr + my @args = map "\$$_", (undef,"a".."z")[1..$narg]; + push @args, '$_' + if $dollar && $do_exp && ($strong && !$lexsub or $core); + my $args = join(', ', @args); + # XXX $lex_parens is temporary, until lex subs are + # deparsed properly. + my $lex_parens = + !$core && $do_exp && $lexsub && $keyword ne 'map'; + $args = ((!$core && !$strong) || $parens || $lex_parens) + ? "($args)" + : @args + ? " $args" + : ""; + push @code, ( + ($core && !($do_exp && $strong)) + ? "CORE::" + : $lexsub && $do_exp + ? "CORE::" x $core + : $do_exp && !$core && !$strong + ? "test::" + : "" + ) . "$keyword$args;"; + } + # code[0]: to run; code[1]: expected + testit $keyword, @code, $lexsub; + } } } @@ -217,18 +218,18 @@ die "unrecognised flag(s): '$flags'" unless $flags =~ /^-?$/; if ($args eq 'B') { # binary infix - die "$keyword: binary (B) op can't have '\$' flag\\n" if $dollar; - die "$keyword: binary (B) op can't have '1' flag\\n" if $invert1; - do_infix_keyword($keyword, $parens, $strong); + die "$keyword: binary (B) op can't have '\$' flag\\n" if $dollar; + die "$keyword: binary (B) op can't have '1' flag\\n" if $invert1; + do_infix_keyword($keyword, $parens, $strong); } else { - my @narg = split //, $args; - for my $n (0..$#narg) { - my $narg = $narg[$n]; - my $p = $parens; - $p = !$p if ($n == 0 && $invert1); - do_std_keyword($keyword, $narg, $p, (!$n && $dollar), $strong); - } + my @narg = split //, $args; + for my $n (0..$#narg) { + my $narg = $narg[$n]; + my $p = $parens; + $p = !$p if ($n == 0 && $invert1); + do_std_keyword($keyword, $narg, $p, (!$n && $dollar), $strong); + } } } @@ -361,6 +362,7 @@ END INIT UNITCHECK + catch default else elsif @@ -380,6 +382,7 @@ require s tr + try unless until use @@ -388,8 +391,6 @@ y ); - - # Sanity check against keyword data: # make sure we haven't missed any keywords, # and that we got the strength right. @@ -413,7 +414,7 @@ diag("keyword '$key' seen in $file, but not tested here!!"); $pass = 0; } - if (exists $SEEN_STRENGH{$key} and $SEEN_STRENGH{$key} != $strength) { + if (exists $SEEN_STRENGTH{$key} and $SEEN_STRENGTH{$key} != $strength) { diag("keyword '$key' strengh as seen in $file doen't match here!!"); $pass = 0; } @@ -431,8 +432,6 @@ ok($pass, "sanity checks"); } - - __DATA__ # # format: diff -Nru perl-5.32.1/lib/B/Deparse.pm perl-5.34.0/lib/B/Deparse.pm --- perl-5.32.1/lib/B/Deparse.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/B/Deparse.pm 2021-02-21 11:01:31.000000000 +0000 @@ -52,7 +52,7 @@ MDEREF_SHIFT ); -$VERSION = '1.54'; +$VERSION = '1.56'; use strict; our $AUTOLOAD; use warnings (); @@ -280,6 +280,7 @@ # possibly undoing optimisations along the way. sub DEBUG { 0 } +use if DEBUG, 'Data::Dumper'; sub _pessimise_walk { my ($self, $startop) = @_; @@ -2303,6 +2304,8 @@ evalbytes=>'evalbytes', __SUB__ => '__SUB__', fc => 'fc', + try => 'try', + catch => 'try', ); # keywords that are strong and also have a prototype @@ -2471,7 +2474,7 @@ return $self->maybe_parens( $self->keyword($name) . " $kid", $cx, 16 ); - } + } return $self->maybe_parens_unop($name, $kid, $cx); } else { return $self->maybe_parens( @@ -2511,7 +2514,7 @@ sub pp_values { unop(@_, "values") } sub pp_keys { unop(@_, "keys") } { no strict 'refs'; *{"pp_r$_"} = *{"pp_$_"} for qw< keys each values >; } -sub pp_boolkeys { +sub pp_boolkeys { # no name because its an optimisation op that has no keyword unop(@_,""); } @@ -4054,6 +4057,31 @@ return "eval {\n\t" . $self->pp_leave(@_) . "\n\b}"; } +sub pp_leavetrycatch { + my $self = shift; + my ($op) = @_; + + # Expect that the first three kids should be (entertrycatch, poptry, catch) + my $entertrycatch = $op->first; + $entertrycatch->name eq "entertrycatch" or die "Expected entertrycatch as first child of leavetrycatch"; + + my $tryblock = $entertrycatch->sibling; + $tryblock->name eq "poptry" or die "Expected poptry as second child of leavetrycatch"; + + my $catch = $tryblock->sibling; + $catch->name eq "catch" or die "Expected catch as third child of leavetrycatch"; + + my $catchblock = $catch->first->sibling; + $catchblock->name eq "scope" or die "Expected scope as second child of catch"; + + my $trycode = scopeop(0, $self, $tryblock); + my $catchvar = $self->padname($catch->targ); + my $catchcode = scopeop(0, $self, $catchblock); + + return "try {\n\t$trycode\n\b}\n" . + "catch($catchvar) {\n\t$catchcode\n\b}\cK"; +} + sub _op_is_or_was { my ($op, $expect_type) = @_; my $type = $op->type; @@ -5658,38 +5686,24 @@ # Escape a characrter. # Only used by tr///, so backslashes hyphens -sub pchr { # ASCII +sub pchr { my($n) = @_; - if ($n == ord '\\') { - return '\\\\'; - } elsif ($n == ord "-") { - return "\\-"; - } elsif (utf8::native_to_unicode($n) >= utf8::native_to_unicode(ord(' ')) - and utf8::native_to_unicode($n) <= utf8::native_to_unicode(ord('~'))) - { - # I'm presuming a regex is not ok here, otherwise we could have used - # /[[:print:]]/a to get here - return chr($n); - } elsif ($n == ord "\a") { - return '\\a'; - } elsif ($n == ord "\b") { - return '\\b'; - } elsif ($n == ord "\t") { - return '\\t'; - } elsif ($n == ord "\n") { - return '\\n'; - } elsif ($n == ord "\e") { - return '\\e'; - } elsif ($n == ord "\f") { - return '\\f'; - } elsif ($n == ord "\r") { - return '\\r'; - } elsif ($n >= ord("\cA") and $n <= ord("\cZ")) { - return '\\c' . $unctrl{chr $n}; - } else { -# return '\x' . sprintf("%02x", $n); - return '\\' . sprintf("%03o", $n); - } + return sprintf("\\x{%X}", $n) if $n > 255; + return '\\\\' if $n == ord '\\'; + return "\\-" if $n == ord "-"; + # I'm presuming a regex is not ok here, otherwise we could have used + # /[[:print:]]/a to get here + return chr($n) if ( utf8::native_to_unicode($n) + >= utf8::native_to_unicode(ord(' ')) + and utf8::native_to_unicode($n) + <= utf8::native_to_unicode(ord('~'))); + + my $mnemonic_pos = index("\a\b\e\f\n\r\t", chr($n)); + return "\\" . substr("abefnrt", $mnemonic_pos, 1) if $mnemonic_pos >= 0; + + return '\\c' . $unctrl{chr $n} if $n >= ord("\cA") and $n <= ord("\cZ"); +# return '\x' . sprintf("%02x", $n); + return '\\' . sprintf("%03o", $n); } # Convert a list of characters into a string suitable for tr/// search or @@ -5765,92 +5779,170 @@ return ($from, $to); } -sub tr_chr { - my $x = shift; - if ($x == ord "-") { - return "\\-"; - } elsif ($x == ord "\\") { - return "\\\\"; - } else { - return chr $x; +my $infinity = ~0 >> 1; # IV_MAX + +sub tr_append_to_invlist { + my ($list_ref, $current, $next) = @_; + + # Appends the range $current..$next-1 to the inversion list $list_ref + + printf STDERR "%d: %d..%d %s", __LINE__, $current, $next, Dumper $list_ref if DEBUG; + + if (@$list_ref && $list_ref->[-1] == $current) { + + # The new range extends the current final one. If it is a finite + # rane, replace the current final by the new ending. + if (defined $next) { + $list_ref->[-1] = $next; + } + else { + # The new range extends to infinity, which means the current end + # of the inversion list is dangling. Removing it causes things to + # work. + pop @$list_ref; + } } + else { # The new range starts after the current final one; add it as a + # new range + push @$list_ref, $current; + push @$list_ref, $next if defined $next; + } + + print STDERR __LINE__, ": ", Dumper $list_ref if DEBUG; } -sub tr_invmap { - my ($invlist_ref, $map_ref) = @_; +sub tr_invlist_to_string { + my ($list_ref, $to_complement) = @_; + + # Stringify the inversion list $list_ref, possibly complementing it first. + # CAUTION: this can modify $list_ref. + + print STDERR __LINE__, ": ", Dumper $list_ref if DEBUG; + + if ($to_complement) { - my $infinity = ~0 >> 1; # IV_MAX - my $from = ""; - my $to = ""; + # Complementing an inversion list is done by prepending a 0 if it + # doesn't have one there already; otherwise removing the leading 0. + if ($list_ref->[0] == 0) { + shift @$list_ref; + } + else { + unshift @$list_ref, 0; + } - for my $i (0.. @$invlist_ref - 1) { - my $this_from = $invlist_ref->[$i]; + print STDERR __LINE__, ": ", Dumper $list_ref if DEBUG; + } + + my $output = ""; + + # Every other element is in the list. + for (my $i = 0; $i < @$list_ref; $i += 2) { + my $base = $list_ref->[$i]; + $output .= pchr($base); + last unless defined $list_ref->[$i+1]; + + # The beginning of the next element starts the range of items not in + # the list. + my $upper = $list_ref->[$i+1] - 1; + my $range = $upper - $base; + $output .= '-' if $range > 1; # Adjacent characters don't have a + # minus, though it would be legal to do + # so + $output .= pchr($upper) if $range > 0; + } + + print STDERR __LINE__, ": tr_invlist_to_string() returning '$output'\n" + if DEBUG; + return $output; +} + +my $unmapped = ~0; +my $special_handling = ~0 - 1; + +sub dump_invmap { + my ($invlist_ref, $map_ref) = @_; + + for my $i (0 .. @$invlist_ref - 1) { + printf STDERR "[%d]\t%x\t", $i, $invlist_ref->[$i]; my $map = $map_ref->[$i]; - my $upper = ($i < @$invlist_ref - 1) - ? $invlist_ref->[$i+1] - : $infinity; - my $range = $upper - $this_from - 1; - if (DEBUG) { - print STDERR "i=$i, from=$this_from, upper=$upper, range=$range\n"; + if ($map == $unmapped) { + print STDERR "TR_UNMAPPED\n"; } - next if $map == ~0; - next if $map == ~0 - 1; - $from .= tr_chr($this_from); - $to .= tr_chr($map); - next if $range == 0; # Single code point - if ($range == 1) { # Adjacent code points - $from .= tr_chr($this_from + 1); - $to .= tr_chr($map + 1); - } - elsif ($upper != $infinity) { - $from .= "-" . tr_chr($this_from + $range); - $to .= "-" . tr_chr($map + $range); + elsif ($map == $special_handling) { + print STDERR "TR_SPECIAL\n"; } else { - $from .= "-INFTY"; - $to .= "-INFTY"; + printf STDERR "%x\n", $map; } } - - return ($from, $to); } sub tr_decode_utf8 { my($tr_av, $flags) = @_; - printf STDERR "flags=0x%x\n", $flags if DEBUG; + + printf STDERR "\n%s: %d: flags=0x%x\n", __FILE__, __LINE__, $flags if DEBUG; + my $invlist = $tr_av->ARRAYelt(0); my @invlist = unpack("J*", $invlist->PV); my @map = unpack("J*", $tr_av->ARRAYelt(1)->PV); - if (DEBUG) { - for my $i (0 .. @invlist - 1) { - printf STDERR "[%d]\t%x\t", $i, $invlist[$i]; - my $map = $map[$i]; - if ($map == ~0) { - print STDERR "TR_UNMAPPED\n"; - } - elsif ($map == ~0 - 1) { - print STDERR "TR_SPECIAL\n"; - } - else { - printf STDERR "%x\n", $map; - } + dump_invmap(\@invlist, \@map) if DEBUG; + + my @from; + my @to; + + # Go through the whole map + for (my $i = 0; $i < @invlist; $i++) { + my $map = $map[$i]; + printf STDERR "%d: i=%d, source=%x, map=%x\n", + __LINE__, $i, $invlist[$i], $map if DEBUG; + + # Ignore any lines that are unmapped + next if $map == $unmapped; + + # Calculate this component of the mapping; First the lhs + my $this_from = $invlist[$i]; + my $next_from = $invlist[$i+1] if $i < @invlist - 1; + + # The length of the rhs is the same as the lhs, except when special + my $next_map = $map - $this_from + $next_from + if $map != $special_handling && defined $next_from; + + if (DEBUG) { + printf STDERR "%d: i=%d, from=%x, to=%x", + __LINE__, $i, $this_from, $map; + printf STDERR ", next_from=%x,", $next_from if defined $next_from; + printf STDERR ", next_map=%x", $next_map if defined $next_map; + print STDERR "\n"; } - } - my ($from, $to) = tr_invmap(\@invlist, \@map); + # Add the lhs. + tr_append_to_invlist(\@from, $this_from, $next_from); - if ($flags & OPpTRANS_COMPLEMENT) { - shift @map; - pop @invlist; - my $throw_away; - ($from, $throw_away) = tr_invmap(\@invlist, \@map); + # And, the rhs; special handling doesn't get output as it really is an + # unmatched rhs + tr_append_to_invlist(\@to, $map, $next_map) if $map != $special_handling; } - if (DEBUG) { - print STDERR "Returning ", escape_str($from), "/", - escape_str($to), "\n"; + # Done with the input. + + my $to; + if (join("", @from) eq join("", @to)) { + + # the rhs is suppressed if identical to the left. That's because + # tr/ABC/ABC/ can be written as tr/ABC//. (Do this comparison before + # any complementing) + $to = ""; } + else { + $to = tr_invlist_to_string(\@to, 0); # rhs not complemented + } + + my $from = tr_invlist_to_string(\@from, + ($flags & OPpTRANS_COMPLEMENT) != 0); + + print STDERR "Returning ", escape_str($from), "/", + escape_str($to), "\n" if DEBUG; return (escape_str($from), escape_str($to)); } diff -Nru perl-5.32.1/lib/B/Deparse.t perl-5.34.0/lib/B/Deparse.t --- perl-5.32.1/lib/B/Deparse.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/B/Deparse.t 2021-02-21 11:01:31.000000000 +0000 @@ -1496,6 +1496,49 @@ tr/\000-\375/A-D/cds; tr/\000-\375/A-I/cds; #### +# tr/// with all the flags: empty replacement +tr/\x{101}-\x{106}//; +tr/\x{101}-\x{106}//c; +tr/\x{101}-\x{106}//d; +tr/\x{101}-\x{106}//s; +tr/\x{101}-\x{106}//cd; +tr/\x{101}-\x{106}//ds; +tr/\x{101}-\x{106}//cs; +tr/\x{101}-\x{106}//cds; +tr/\x{101}-\x{106}//r; +#### +# tr/// with all the flags: short replacement +tr/\x{101}-\x{106}/\x{111}/; +tr/\x{101}-\x{106}/\x{111}/c; +tr/\x{101}-\x{106}/\x{111}/d; +tr/\x{101}-\x{106}/\x{111}/s; +tr/\x{101}-\x{106}/\x{111}/cd; +tr/\x{101}-\x{106}/\x{111}/ds; +tr/\x{101}-\x{106}/\x{111}/cs; +tr/\x{101}-\x{106}/\x{111}/cds; +tr/\x{101}-\x{106}/\x{111}/r; +#### +# tr/// with all the flags: equal length replacement +tr/\x{101}-\x{106}/\x{111}-\x{116}/; +tr/\x{101}-\x{106}/\x{111}-\x{116}/c; +tr/\x{101}-\x{106}/\x{111}-\x{116}/s; +tr/\x{101}-\x{106}/\x{111}-\x{116}/cs; +tr/\x{101}-\x{106}/\x{111}-\x{116}/r; +#### +# tr across 255/256 boundary, complemented +tr/\cA-\x{100}/AB/c; +tr/\cA-\x{100}/A-C/c; +tr/\cA-\x{100}/A-D/c; +tr/\cA-\x{100}/A-I/c; +tr/\cA-\x{100}/AB/cd; +tr/\cA-\x{100}/A-C/cd; +tr/\cA-\x{100}/A-D/cd; +tr/\cA-\x{100}/A-I/cd; +tr/\cA-\x{100}/AB/cds; +tr/\cA-\x{100}/A-C/cds; +tr/\cA-\x{100}/A-D/cds; +tr/\cA-\x{100}/A-I/cds; +#### # [perl #119807] s//\(3)/ge should not warn when deparsed (\3 warns) s/foo/\(3);/eg; #### @@ -3119,3 +3162,12 @@ $a = $b < ($c == $d != $e); $a = $b == ($c == $d != $e); $a = $b & $c == $d != $e; +#### +# try/catch +# CONTEXT use feature 'try'; no warnings 'experimental::try'; +try { + FIRST(); +} +catch($var) { + SECOND(); +} diff -Nru perl-5.32.1/lib/B/Op_private.pm perl-5.34.0/lib/B/Op_private.pm --- perl-5.32.1/lib/B/Op_private.pm 2020-12-18 13:34:12.000000000 +0000 +++ perl-5.34.0/lib/B/Op_private.pm 2021-05-04 23:28:28.000000000 +0000 @@ -118,7 +118,7 @@ our %bits; -our $VERSION = "5.032001"; +our $VERSION = "5.034000"; $bits{$_}{3} = 'OPpENTERSUB_AMPER' for qw(entersub rv2cv); $bits{$_}{6} = 'OPpENTERSUB_DB' for qw(entersub rv2cv); @@ -275,6 +275,7 @@ @{$bits{bit_xor}}{1,0} = ($bf[1], $bf[1]); @{$bits{bless}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); @{$bits{caller}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); +$bits{catch}{0} = $bf[0]; @{$bits{chdir}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); @{$bits{chmod}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); $bits{chomp}{0} = $bf[0]; @@ -310,6 +311,7 @@ $bits{enteriter}{3} = 'OPpITER_DEF'; @{$bits{entersub}}{5,4,0} = ($bf[8], $bf[8], 'OPpENTERSUB_INARGS'); $bits{entertry}{0} = $bf[0]; +$bits{entertrycatch}{0} = $bf[0]; $bits{enterwhen}{0} = $bf[0]; @{$bits{enterwrite}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); @{$bits{eof}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); diff -Nru perl-5.32.1/lib/bytes.pm perl-5.34.0/lib/bytes.pm --- perl-5.32.1/lib/bytes.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/bytes.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,6 +1,9 @@ package bytes; -our $VERSION = '1.07'; +use strict; +use warnings; + +our $VERSION = '1.08'; $bytes::hint_bits = 0x00000008; @@ -12,6 +15,7 @@ $^H &= ~$bytes::hint_bits; } +our $AUTOLOAD; sub AUTOLOAD { require "bytes_heavy.pl"; goto &$AUTOLOAD if defined &$AUTOLOAD; diff -Nru perl-5.32.1/lib/bytes.t perl-5.34.0/lib/bytes.t --- perl-5.32.1/lib/bytes.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/bytes.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,3 +1,7 @@ +#!perl + +use strict; +use warnings; BEGIN { chdir 't' if -d 't'; @@ -14,8 +18,11 @@ is(substr($a, 0, 1), "\x{100}", "substr sanity check"); is(index($a, "\x{100}"), 0, "index sanity check"); is(rindex($a, "\x{100}"), 0, "rindex sanity check"); -is(bytes::length($a), 2, "bytes::length sanity check"); -is(bytes::chr(0x100), chr(0), "bytes::chr sanity check"); +{ + no warnings 'prototype'; # bytes::length() called too early to check prototype at... + is(bytes::length($a), 2, "bytes::length sanity check"); + is(bytes::chr(0x100), chr(0), "bytes::chr sanity check"); +} { use bytes; diff -Nru perl-5.32.1/lib/charnames.t perl-5.34.0/lib/charnames.t --- perl-5.32.1/lib/charnames.t 2020-12-18 09:58:49.000000000 +0000 +++ perl-5.34.0/lib/charnames.t 2021-05-04 06:52:48.000000000 +0000 @@ -153,7 +153,7 @@ # \p{name=} is always loose matching $all_pass &= like(chr($i), qr/^\p{name=$loose_name}$/, - "Verify /\p{name=$loose_name}/ matches chr(0x$hex)"); + "Verify /\\p{name=$loose_name}/ matches chr(0x$hex)"); $wildcard_count++; @@ -181,7 +181,7 @@ # \p{name=/.../} is always full matching $all_pass &= like(chr($i), qr!^\p{name=/$assembled/}!, - "Verify /\p{name=/$assembled/} matches chr(0x$hex)"); + "Verify /\\p{name=/$assembled/} matches chr(0x$hex)"); } return $all_pass; @@ -1348,9 +1348,9 @@ use charnames ":loose"; is(charnames::string_vianame($loose_name), $utf8, "Verify string_vianame(\"$loose_name\") is the proper utf8"); - like($utf8, qr/^\p{name=$name}$/, "Verify /\p{name=$name}\$/ is the proper utf8"); - like($utf8, qr/^\p{name=$loose_name}$/, "Verify /\p{name=$loose_name}\$/ is the proper utf8"); - like($utf8, qr!^\p{name=/\A$name\z/}!, "Verify /\p{name=/$\A$name\z/} is the proper utf8"); + like($utf8, qr/^\p{name=$name}$/, "Verify /\\p{name=$name}\$/ is the proper utf8"); + like($utf8, qr/^\p{name=$loose_name}$/, "Verify /\\p{name=$loose_name}\$/ is the proper utf8"); + like($utf8, qr!^\p{name=/\A$name\z/}!, "Verify /\\p{name=/$\A$name\z/} is the proper utf8"); #diag("$name, $utf8"); } close $fh; diff -Nru perl-5.32.1/lib/ExtUtils/t/Embed.t perl-5.34.0/lib/ExtUtils/t/Embed.t --- perl-5.32.1/lib/ExtUtils/t/Embed.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/ExtUtils/t/Embed.t 2020-10-04 22:17:13.000000000 +0000 @@ -175,11 +175,6 @@ static const char * cmds [] = { "perl", "-e", "$|=1; print qq[ok 5\\n]; $SIG{__WARN__} = sub { print qq[ok 6\\n] if $_[0] =~ /Unexpected exit/; }; exit 5;", NULL }; -#ifdef PERL_GLOBAL_STRUCT_PRIVATE -static struct perl_vars *my_plvarsp; -struct perl_vars* Perl_GetVarsPrivate(void) { return my_plvarsp; } -#endif - #ifdef NO_ENV_ARRAY_IN_MAIN int main(int argc, char **argv) { char **env; @@ -187,14 +182,6 @@ int main(int argc, char **argv, char **env) { #endif PerlInterpreter *my_perl; -#ifdef PERL_GLOBAL_STRUCT - struct perl_vars *my_vars = init_global_struct(); -# ifdef PERL_GLOBAL_STRUCT_PRIVATE - int veto; - - my_plvarsp = my_vars; -# endif -#endif /* PERL_GLOBAL_STRUCT */ (void)argc; /* PERL_SYS_INIT3 may #define away their use */ (void)argv; @@ -229,19 +216,5 @@ PERL_SYS_TERM(); -#ifdef PERL_GLOBAL_STRUCT -# ifdef PERL_GLOBAL_STRUCT_PRIVATE - veto = my_plvarsp->Gveto_cleanup; -# endif - free_global_struct(my_vars); -# ifdef PERL_GLOBAL_STRUCT_PRIVATE - if (!veto) - my_plvarsp = NULL; - /* Remember, functions registered with atexit() can run after this point, - and may access "global" variables, and hence end up calling - Perl_GetVarsPrivate() */ -#endif -#endif /* PERL_GLOBAL_STRUCT */ - return 0; } diff -Nru perl-5.32.1/lib/feature.pm perl-5.34.0/lib/feature.pm --- perl-5.32.1/lib/feature.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/feature.pm 2021-05-04 06:52:48.000000000 +0000 @@ -5,34 +5,37 @@ package feature; -our $VERSION = '1.58'; +our $VERSION = '1.64'; our %feature = ( - fc => 'feature_fc', - isa => 'feature_isa', - say => 'feature_say', - state => 'feature_state', - switch => 'feature_switch', - bitwise => 'feature_bitwise', - indirect => 'feature_indirect', - evalbytes => 'feature_evalbytes', - signatures => 'feature_signatures', - current_sub => 'feature___SUB__', - refaliasing => 'feature_refaliasing', - postderef_qq => 'feature_postderef_qq', - unicode_eval => 'feature_unieval', - declared_refs => 'feature_myref', - unicode_strings => 'feature_unicode', + fc => 'feature_fc', + isa => 'feature_isa', + say => 'feature_say', + try => 'feature_try', + state => 'feature_state', + switch => 'feature_switch', + bitwise => 'feature_bitwise', + indirect => 'feature_indirect', + evalbytes => 'feature_evalbytes', + signatures => 'feature_signatures', + current_sub => 'feature___SUB__', + refaliasing => 'feature_refaliasing', + postderef_qq => 'feature_postderef_qq', + unicode_eval => 'feature_unieval', + declared_refs => 'feature_myref', + unicode_strings => 'feature_unicode', + multidimensional => 'feature_multidimensional', + bareword_filehandles => 'feature_bareword_filehandles', ); our %feature_bundle = ( - "5.10" => [qw(indirect say state switch)], - "5.11" => [qw(indirect say state switch unicode_strings)], - "5.15" => [qw(current_sub evalbytes fc indirect say state switch unicode_eval unicode_strings)], - "5.23" => [qw(current_sub evalbytes fc indirect postderef_qq say state switch unicode_eval unicode_strings)], - "5.27" => [qw(bitwise current_sub evalbytes fc indirect postderef_qq say state switch unicode_eval unicode_strings)], - "all" => [qw(bitwise current_sub declared_refs evalbytes fc indirect isa postderef_qq refaliasing say signatures state switch unicode_eval unicode_strings)], - "default" => [qw(indirect)], + "5.10" => [qw(bareword_filehandles indirect multidimensional say state switch)], + "5.11" => [qw(bareword_filehandles indirect multidimensional say state switch unicode_strings)], + "5.15" => [qw(bareword_filehandles current_sub evalbytes fc indirect multidimensional say state switch unicode_eval unicode_strings)], + "5.23" => [qw(bareword_filehandles current_sub evalbytes fc indirect multidimensional postderef_qq say state switch unicode_eval unicode_strings)], + "5.27" => [qw(bareword_filehandles bitwise current_sub evalbytes fc indirect multidimensional postderef_qq say state switch unicode_eval unicode_strings)], + "all" => [qw(bareword_filehandles bitwise current_sub declared_refs evalbytes fc indirect isa multidimensional postderef_qq refaliasing say signatures state switch try unicode_eval unicode_strings)], + "default" => [qw(bareword_filehandles indirect multidimensional)], ); $feature_bundle{"5.12"} = $feature_bundle{"5.11"}; @@ -53,6 +56,8 @@ $feature_bundle{"5.30"} = $feature_bundle{"5.27"}; $feature_bundle{"5.31"} = $feature_bundle{"5.27"}; $feature_bundle{"5.32"} = $feature_bundle{"5.27"}; +$feature_bundle{"5.33"} = $feature_bundle{"5.27"}; +$feature_bundle{"5.34"} = $feature_bundle{"5.27"}; $feature_bundle{"5.9.5"} = $feature_bundle{"5.10"}; my %noops = ( postderef => 1, @@ -63,7 +68,7 @@ ); our $hint_shift = 26; -our $hint_mask = 0x1c000000; +our $hint_mask = 0x3c000000; our @hint_bundles = qw( default 5.10 5.11 5.15 5.23 5.27 ); # This gets set (for now) in $^H as well as in %^H, @@ -80,18 +85,20 @@ =head1 SYNOPSIS - use feature qw(say switch); - given ($foo) { - when (1) { say "\$foo == 1" } - when ([2,3]) { say "\$foo == 2 || \$foo == 3" } - when (/^a[bc]d$/) { say "\$foo eq 'abd' || \$foo eq 'acd'" } - when ($_ > 100) { say "\$foo > 100" } - default { say "None of the above" } - } + use feature qw(fc say); + + # Without the "use feature" above, this code would not be able to find + # the built-ins "say" or "fc": + say "The case-folded version of $x is: " . fc $x; + + + # set features to match the :5.10 bundle, which may turn off or on + # multiple features (see below) + use feature ':5.10'; - use feature ':5.10'; # loads all features available in perl 5.10 - use v5.10; # implicitly loads :5.10 feature bundle + # implicitly loads :5.10 feature bundle + use v5.10; =head1 DESCRIPTION @@ -135,7 +142,7 @@ =head2 The 'say' feature -C tells the compiler to enable the Perl 6 style +C tells the compiler to enable the Raku-inspired C function. See L for details. @@ -153,13 +160,13 @@ =head2 The 'switch' feature -B: Because the L is -experimental, Perl will warn when you use this feature, unless you have -explicitly disabled the warning: +B: This feature is still experimental and the implementation may +change or be removed in future versions of Perl. For this reason, Perl will +warn when you use the feature, unless you have explicitly disabled the warning: no warnings "experimental::smartmatch"; -C tells the compiler to enable the Perl 6 +C tells the compiler to enable the Raku given/when construct. See L for details. @@ -282,9 +289,8 @@ =head2 The 'signatures' feature B: This feature is still experimental and the implementation may -change in future versions of Perl. For this reason, Perl will -warn when you use the feature, unless you have explicitly disabled the -warning: +change or be removed in future versions of Perl. For this reason, Perl will +warn when you use the feature, unless you have explicitly disabled the warning: no warnings "experimental::signatures"; @@ -302,9 +308,8 @@ =head2 The 'refaliasing' feature B: This feature is still experimental and the implementation may -change in future versions of Perl. For this reason, Perl will -warn when you use the feature, unless you have explicitly disabled the -warning: +change or be removed in future versions of Perl. For this reason, Perl will +warn when you use the feature, unless you have explicitly disabled the warning: no warnings "experimental::refaliasing"; @@ -339,9 +344,8 @@ =head2 The 'declared_refs' feature B: This feature is still experimental and the implementation may -change in future versions of Perl. For this reason, Perl will -warn when you use the feature, unless you have explicitly disabled the -warning: +change or be removed in future versions of Perl. For this reason, Perl will +warn when you use the feature, unless you have explicitly disabled the warning: no warnings "experimental::declared_refs"; @@ -354,6 +358,12 @@ =head2 The 'isa' feature +B: This feature is still experimental and the implementation may +change or be removed in future versions of Perl. For this reason, Perl will +warn when you use the feature, unless you have explicitly disabled the warning: + + no warnings "experimental::isa"; + This allows the use of the C infix operator, which tests whether the scalar given by the left operand is an object of the class given by the right operand. See L for more details. @@ -372,61 +382,124 @@ warn on) indirect object syntax on older Perls, see the L CPAN module. -=head1 FEATURE BUNDLES +=head2 The 'multidimensional' feature -It's possible to load multiple features together, using -a I. The name of a feature bundle is prefixed with -a colon, to distinguish it from an actual feature. +This feature enables multidimensional array emulation, a perl 4 (or +earlier) feature that was used to emulate multidimensional arrays with +hashes. This works by converting code like C<< $foo{$x, $y} >> into +C<< $foo{join($;, $x, $y)} >>. It is enabled by default, but can be +turned off to disable multidimensional array emulation. - use feature ":5.10"; +When this feature is disabled the syntax that is normally replaced +will report a compilation error. -The following feature bundles are available: +This feature is available under this name from Perl 5.34 onwards. In +previous versions, it was simply on all the time. - bundle features included - --------- ----------------- - :default indirect +You can use the L module on CPAN to disable +multidimensional array emulation for older versions of Perl. + +=head2 The 'bareword_filehandles' feature. - :5.10 say state switch indirect +This feature enables bareword filehandles for builtin functions +operations, a generally discouraged practice. It is enabled by +default, but can be turned off to disable bareword filehandles, except +for the exceptions listed below. - :5.12 say state switch unicode_strings indirect +The perl built-in filehandles C, C, C, C, +C, C and the special C<_> are always enabled. - :5.14 say state switch unicode_strings indirect +This feature is enabled under this name from Perl 5.34 onwards. In +previous versions it was simply on all the time. - :5.16 say state switch unicode_strings - unicode_eval evalbytes current_sub fc - indirect +You can use the L module on CPAN to disable +bareword filehandles for older versions of perl. - :5.18 say state switch unicode_strings - unicode_eval evalbytes current_sub fc - indirect +=head2 The 'try' feature. + +B: This feature is still experimental and the implementation may +change or be removed in future versions of Perl. For this reason, Perl will +warn when you use the feature, unless you have explicitly disabled the warning: - :5.20 say state switch unicode_strings - unicode_eval evalbytes current_sub fc - indirect + no warnings "experimental::try"; - :5.22 say state switch unicode_strings - unicode_eval evalbytes current_sub fc - indirect +This feature enables the C and C syntax, which allows exception +handling, where exceptions thrown from the body of the block introduced with +C are caught by executing the body of the C block. - :5.24 say state switch unicode_strings - unicode_eval evalbytes current_sub fc - postderef_qq indirect +For more information, see L. - :5.26 say state switch unicode_strings - unicode_eval evalbytes current_sub fc - postderef_qq indirect +=head1 FEATURE BUNDLES - :5.28 say state switch unicode_strings - unicode_eval evalbytes current_sub fc - postderef_qq bitwise indirect +It's possible to load multiple features together, using +a I. The name of a feature bundle is prefixed with +a colon, to distinguish it from an actual feature. + + use feature ":5.10"; + +The following feature bundles are available: + + bundle features included + --------- ----------------- + :default indirect multidimensional + bareword_filehandles - :5.30 say state switch unicode_strings - unicode_eval evalbytes current_sub fc - postderef_qq bitwise indirect + :5.10 bareword_filehandles indirect + multidimensional say state switch - :5.32 say state switch unicode_strings - unicode_eval evalbytes current_sub fc - postderef_qq bitwise indirect + :5.12 bareword_filehandles indirect + multidimensional say state switch + unicode_strings + + :5.14 bareword_filehandles indirect + multidimensional say state switch + unicode_strings + + :5.16 bareword_filehandles current_sub evalbytes + fc indirect multidimensional say state + switch unicode_eval unicode_strings + + :5.18 bareword_filehandles current_sub evalbytes + fc indirect multidimensional say state + switch unicode_eval unicode_strings + + :5.20 bareword_filehandles current_sub evalbytes + fc indirect multidimensional say state + switch unicode_eval unicode_strings + + :5.22 bareword_filehandles current_sub evalbytes + fc indirect multidimensional say state + switch unicode_eval unicode_strings + + :5.24 bareword_filehandles current_sub evalbytes + fc indirect multidimensional postderef_qq + say state switch unicode_eval + unicode_strings + + :5.26 bareword_filehandles current_sub evalbytes + fc indirect multidimensional postderef_qq + say state switch unicode_eval + unicode_strings + + :5.28 bareword_filehandles bitwise current_sub + evalbytes fc indirect multidimensional + postderef_qq say state switch unicode_eval + unicode_strings + + :5.30 bareword_filehandles bitwise current_sub + evalbytes fc indirect multidimensional + postderef_qq say state switch unicode_eval + unicode_strings + + :5.32 bareword_filehandles bitwise current_sub + evalbytes fc indirect multidimensional + postderef_qq say state switch unicode_eval + unicode_strings + + :5.34 bareword_filehandles bitwise current_sub + evalbytes fc indirect multidimensional + postderef_qq say state switch unicode_eval + unicode_strings The C<:default> bundle represents the feature set that is enabled before any C or C declaration. diff -Nru perl-5.32.1/lib/File/Copy.pm perl-5.34.0/lib/File/Copy.pm --- perl-5.32.1/lib/File/Copy.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/File/Copy.pm 2021-01-20 23:04:44.000000000 +0000 @@ -24,7 +24,7 @@ sub cp; sub mv; -$VERSION = '2.34'; +$VERSION = '2.35'; require Exporter; @ISA = qw(Exporter); @@ -100,7 +100,7 @@ } if ((($Config{d_symlink} && $Config{d_readlink}) || $Config{d_link}) && - !($^O eq 'MSWin32' || $^O eq 'os2')) { + !($^O eq 'os2')) { my @fs = stat($from); if (@fs) { my @ts = stat($to); diff -Nru perl-5.32.1/lib/File/Copy.t perl-5.34.0/lib/File/Copy.t --- perl-5.32.1/lib/File/Copy.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/File/Copy.t 2021-01-20 23:04:44.000000000 +0000 @@ -164,7 +164,10 @@ open(F, ">", "file-$$") or die $!; print F "dummy content\n"; close F; - symlink("file-$$", "symlink-$$") or die $!; + if (!symlink("file-$$", "symlink-$$")) { + unlink "file-$$"; + skip "Can't create symlink", 3; + } my $warnings = ''; local $SIG{__WARN__} = sub { $warnings .= join '', @_ }; diff -Nru perl-5.32.1/lib/Getopt/Std.pm perl-5.34.0/lib/Getopt/Std.pm --- perl-5.32.1/lib/Getopt/Std.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/Getopt/Std.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ package Getopt::Std; -require 5.000; + +use strict; +use warnings; + require Exporter; =head1 NAME @@ -79,9 +82,9 @@ =cut -@ISA = qw(Exporter); -@EXPORT = qw(getopt getopts); -$VERSION = '1.12'; +our @ISA = qw(Exporter); +our @EXPORT = qw(getopt getopts); +our $VERSION = '1.13'; # uncomment the next line to disable 1.03-backward compatibility paranoia # $STANDARD_HELP_VERSION = 1; @@ -119,6 +122,7 @@ $$hash{$first} = $rest; } else { + no strict 'refs'; ${"opt_$first"} = $rest; push( @EXPORT, "\$opt_$first" ); } @@ -128,6 +132,7 @@ $$hash{$first} = 1; } else { + no strict 'refs'; ${"opt_$first"} = 1; push( @EXPORT, "\$opt_$first" ); } @@ -145,6 +150,7 @@ } } +our ($OUTPUT_HELP_VERSION, $STANDARD_HELP_VERSION); sub output_h () { return $OUTPUT_HELP_VERSION if defined $OUTPUT_HELP_VERSION; return \*STDOUT if $STANDARD_HELP_VERSION; @@ -251,6 +257,7 @@ $$hash{$first} = $rest; } else { + no strict 'refs'; ${"opt_$first"} = $rest; push( @EXPORT, "\$opt_$first" ); } @@ -260,6 +267,7 @@ $$hash{$first} = 1; } else { + no strict 'refs'; ${"opt_$first"} = 1; push( @EXPORT, "\$opt_$first" ); } diff -Nru perl-5.32.1/lib/Getopt/Std.t perl-5.34.0/lib/Getopt/Std.t --- perl-5.32.1/lib/Getopt/Std.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/Getopt/Std.t 2020-10-24 18:43:34.000000000 +0000 @@ -6,6 +6,8 @@ } use strict; +use warnings; + use Test::More tests => 22; use Getopt::Std; diff -Nru perl-5.32.1/lib/locale.pm perl-5.34.0/lib/locale.pm --- perl-5.32.1/lib/locale.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/locale.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,6 +1,9 @@ package locale; -our $VERSION = '1.09'; +use strict; +use warnings; + +our $VERSION = '1.10'; use Config; $Carp::Internal{ (__PACKAGE__) } = 1; @@ -70,7 +73,7 @@ :numeric :monetary :time) ); for (my $i = 0; $i < @_; $i++) { my $arg = $_[$i]; - $complement = $arg =~ s/ : ( ! | not_ ) /:/x; + my $complement = $arg =~ s/ : ( ! | not_ ) /:/x; if (! grep { $arg eq $_ } @categories, ":characters") { require Carp; Carp::croak("Unknown parameter '$_[$i]' to 'use locale'"); diff -Nru perl-5.32.1/lib/locale.t perl-5.34.0/lib/locale.t --- perl-5.32.1/lib/locale.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/locale.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ #!./perl -wT +use strict; +use warnings; + # This tests plain 'use locale' and adorned 'use locale ":not_characters"' # Because these pragmas are compile time, and I (khw) am trying to test # without using 'eval' as much as possible, which might cloud the issue, the @@ -50,7 +53,6 @@ require Config; import Config; } -use strict; use feature 'fc'; # =1 adds debugging output; =2 increases the verbosity somewhat diff -Nru perl-5.32.1/lib/overload.pm perl-5.34.0/lib/overload.pm --- perl-5.32.1/lib/overload.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/overload.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,8 +1,11 @@ package overload; -our $VERSION = '1.31'; +use strict; +no strict 'refs'; -%ops = ( +our $VERSION = '1.33'; + +our %ops = ( with_assign => "+ - * / % ** << >> x .", assign => "+= -= *= /= %= **= <<= >>= x= .=", num_comparison => "< <= > >= == !=", @@ -26,7 +29,7 @@ sub nil {} sub OVERLOAD { - $package = shift; + my $package = shift; my %arg = @_; my $sub; *{$package . "::(("} = \&nil; # Make it findable via fetchmethod. @@ -51,14 +54,14 @@ } sub import { - $package = (caller())[0]; + my $package = (caller())[0]; # *{$package . "::OVERLOAD"} = \&OVERLOAD; shift; $package->overload::OVERLOAD(@_); } sub unimport { - $package = (caller())[0]; + my $package = (caller())[0]; shift; *{$package . "::(("} = \&nil; for (@_) { @@ -131,7 +134,7 @@ return undef; } -%constants = ( +my %constants = ( 'integer' => 0x1000, # HINT_NEW_INTEGER 'float' => 0x2000, # HINT_NEW_FLOAT 'binary' => 0x4000, # HINT_NEW_BINARY @@ -1239,7 +1242,7 @@ This module is very unusual as overloaded modules go: it does not provide any usual overloaded operators, instead it provides an -implementation for L>. In this example the C +implementation for C>. In this example the C subroutine returns an object which encapsulates operations done over the objects: C<< symbolic->new(3) >> contains C<['n', 3]>, C<< 2 + symbolic->new(3) >> contains C<['+', 2, ['n', 3]]>. diff -Nru perl-5.32.1/lib/perl5db/t/gh-17661 perl-5.34.0/lib/perl5db/t/gh-17661 --- perl-5.32.1/lib/perl5db/t/gh-17661 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/lib/perl5db/t/gh-17661 2020-10-04 22:17:13.000000000 +0000 @@ -0,0 +1,14 @@ +use v5.10.0; + +{ package C1; sub c1 { } our @ISA = qw(C2) } +{ package C2; sub c2 { } our @ISA = qw(C3) } +{ package C3; sub c3 { } our @ISA = qw( ) } +{ package C4; sub c4 { } our @ISA = qw( ) } +{ package C5; sub c5 { } our @ISA = qw(C1 C4) } + +my $obj = bless {}, 'C5'; +$main::global = bless {}, 'C5'; + +$DB::single = 1; + +say "Done."; diff -Nru perl-5.32.1/lib/perl5db/t/gh-17661b perl-5.34.0/lib/perl5db/t/gh-17661b --- perl-5.32.1/lib/perl5db/t/gh-17661b 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/lib/perl5db/t/gh-17661b 2020-10-04 22:17:13.000000000 +0000 @@ -0,0 +1,14 @@ +#!perl +# test code for "l $var" where $var is lexical +sub foo { + print "Hello\n"; +} + +sub bar { + print "Goodbye\n"; +} + +my $x = \&foo; +our $y = \&bar; +$DB::single = 1; +my $z = 1; diff -Nru perl-5.32.1/lib/perl5db/t/test-a-statement-3 perl-5.34.0/lib/perl5db/t/test-a-statement-3 --- perl-5.32.1/lib/perl5db/t/test-a-statement-3 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/lib/perl5db/t/test-a-statement-3 2020-10-04 22:17:13.000000000 +0000 @@ -0,0 +1,6 @@ +use strict; use warnings; + +for my $x (1 .. 2) { + my $y = $x + 1; + my $x = $x - 1; +} diff -Nru perl-5.32.1/lib/perl5db.pl perl-5.34.0/lib/perl5db.pl --- perl-5.32.1/lib/perl5db.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/perl5db.pl 2021-01-20 23:04:44.000000000 +0000 @@ -14,6 +14,8 @@ structure and services provided by C, and to describe how you can use them. +See L for an overview of how to use the debugger. + =head1 GENERAL NOTES The debugger can look pretty forbidding to many Perl programmers. There are @@ -529,7 +531,7 @@ use vars qw($VERSION $header); # bump to X.XX in blead, only use X.XX_XX in maint -$VERSION = '1.57'; +$VERSION = '1.60'; $header = "perl5db.pl version $VERSION"; @@ -643,6 +645,7 @@ $filename $histfile $histsize + $histitemminlength $IN $inhibit_exit @ini_INC @@ -938,6 +941,7 @@ @options = qw( CommandSet HistFile HistSize + HistItemMinLength hashDepth arrayDepth dumpDepth DumpDBFiles DumpPackages DumpReused compactDump veryCompact quote @@ -986,6 +990,7 @@ windowSize => \$window, HistFile => \$histfile, HistSize => \$histsize, + HistItemMinLength => \$histitemminlength ); =pod @@ -1086,7 +1091,6 @@ share($pre); share($post); share($pretype); -share($rl); share($CreateTTY); share($CommandSet); @@ -1874,7 +1878,7 @@ # A single-character debugger command can be immediately followed by its # argument if they aren't both alphanumeric; otherwise require space # between commands and arguments: - my ($verb, $args) = $cmd =~ m{\A(.\b|\S*)\s*(.*)}s; + my ($verb, $args) = $cmd =~ m{\A([^\.-]\b|\S*)\s*(.*)}s; $obj->cmd_verb($verb); $obj->cmd_args($args); @@ -2509,177 +2513,484 @@ return; } -# 't' is type. -# 'm' is method. -# 'v' is the value (i.e: method name or subroutine ref). -# 's' is subroutine. -my %cmd_lookup; +=head3 C<_DB__handle_i_command> - inheritance display -BEGIN -{ - %cmd_lookup = -( - '-' => { t => 'm', v => '_handle_dash_command', }, - '.' => { t => 's', v => \&_DB__handle_dot_command, }, - '=' => { t => 'm', v => '_handle_equal_sign_command', }, - 'H' => { t => 'm', v => '_handle_H_command', }, - 'S' => { t => 'm', v => '_handle_S_command', }, - 'T' => { t => 'm', v => '_handle_T_command', }, - 'W' => { t => 'm', v => '_handle_W_command', }, - 'c' => { t => 's', v => \&_DB__handle_c_command, }, - 'f' => { t => 's', v => \&_DB__handle_f_command, }, - 'm' => { t => 's', v => \&_DB__handle_m_command, }, - 'n' => { t => 'm', v => '_handle_n_command', }, - 'p' => { t => 'm', v => '_handle_p_command', }, - 'q' => { t => 'm', v => '_handle_q_command', }, - 'r' => { t => 'm', v => '_handle_r_command', }, - 's' => { t => 'm', v => '_handle_s_command', }, - 'save' => { t => 'm', v => '_handle_save_command', }, - 'source' => { t => 'm', v => '_handle_source_command', }, - 't' => { t => 'm', v => '_handle_t_command', }, - 'w' => { t => 'm', v => '_handle_w_command', }, - 'x' => { t => 'm', v => '_handle_x_command', }, - 'y' => { t => 's', v => \&_DB__handle_y_command, }, - (map { $_ => { t => 'm', v => '_handle_V_command_and_X_command', }, } - ('X', 'V')), - (map { $_ => { t => 'm', v => '_handle_enable_disable_commands', }, } - qw(enable disable)), - (map { $_ => - { t => 's', v => \&_DB__handle_restart_and_rerun_commands, }, - } qw(R rerun)), - (map { $_ => {t => 'm', v => '_handle_cmd_wrapper_commands' }, } - qw(a A b B e E h i l L M o O v w W)), -); -}; +Display the (nested) parentage of the module or object given. -sub DB { +=cut - # lock the debugger and get the thread id for the prompt - lock($DBGR); - my $tid; - my $position; - my ($prefix, $after, $infix); - my $pat; - my $explicit_stop; - my $piped; - my $selected; +sub _DB__handle_i_command { + my $self = shift; - if ($ENV{PERL5DB_THREADED}) { - $tid = eval { "[".threads->tid."]" }; + my $line = $self->cmd_args; + require mro; + foreach my $isa ( split( /\s+/, $line ) ) { + $evalarg = "$isa"; + # The &-call is here to ascertain the mutability of @_. + ($isa) = &DB::eval; + no strict 'refs'; + print join( + ', ', + map { + "$_" + . ( + defined( ${"$_\::VERSION"} ) + ? ' ' . ${"$_\::VERSION"} + : undef ) + } @{mro::get_linear_isa(ref($isa) || $isa)} + ); + print "\n"; } + next CMD; +} - my $cmd_verb; - my $cmd_args; +=head3 C - list lines (command) - my $obj = DB::Obj->new( - { - position => \$position, - prefix => \$prefix, - after => \$after, - explicit_stop => \$explicit_stop, - infix => \$infix, - cmd_args => \$cmd_args, - cmd_verb => \$cmd_verb, - pat => \$pat, - piped => \$piped, - selected => \$selected, - }, - ); +Most of the command is taken up with transforming all the different line +specification syntaxes into 'start-stop'. After that is done, the command +runs a loop over C<@dbline> for the specified range of lines. It handles +the printing of each line and any markers (C<==E> for current line, +C for break on this line, C for action on this line, C<:> for this +line breakable). - $obj->_DB_on_init__initialize_globals(@_); +We save the last line listed in the C<$start> global for further listing +later. - # Preserve current values of $@, $!, $^E, $,, $/, $\, $^W. - # The code being debugged may have altered them. - DB::save(); +=cut - # Since DB::DB gets called after every line, we can use caller() to - # figure out where we last were executing. Sneaky, eh? This works because - # caller is returning all the extra information when called from the - # debugger. - local ( $package, $filename, $line ) = caller; - $filename_ini = $filename; +sub _min { + my $min = shift; + foreach my $v (@_) { + if ($min > $v) { + $min = $v; + } + } + return $min; +} - # set up the context for DB::eval, so it can properly execute - # code on behalf of the user. We add the package in so that the - # code is eval'ed in the proper package (not in the debugger!). - local $usercontext = _calc_usercontext($package); +sub _max { + my $max = shift; + foreach my $v (@_) { + if ($max < $v) { + $max = $v; + } + } + return $max; +} - # Create an alias to the active file magical array to simplify - # the code here. - local (*dbline) = $main::{ '_<' . $filename }; +sub _minify_to_max { + my $ref = shift; - # Last line in the program. - $max = $#dbline; + $$ref = _min($$ref, $max); - # The &-call is here to ascertain the mutability of @_. - &_DB__determine_if_we_should_break; + return; +} - # Preserve the current stop-or-not, and see if any of the W - # (watch expressions) has changed. - my $was_signal = $signal; +sub _cmd_l_handle_var_name { + my $var_name = shift; - # If we have any watch expressions ... - _DB__handle_watch_expressions($obj); + $evalarg = $var_name; -=head2 C + my ($s) = DB::eval(); -C is a function that can be defined by the user; it is a -function which will be run on each entry to C; it gets the -current package, filename, and line as its parameters. + # Ooops. Bad scalar. + if ($@) { + print {$OUT} "Error: $@\n"; + next CMD; + } -The watchfunction can do anything it likes; it is executing in the -debugger's context, so it has access to all of the debugger's internal -data structures and functions. + # Good scalar. If it's a reference, find what it points to. + $s = CvGV_name($s); + print {$OUT} "Interpreted as: $1 $s\n"; + $line = "$1 $s"; -C can control the debugger's actions. Any of the following -will cause the debugger to return control to the user's program after -C executes: + # Call self recursively to really do the command. + return _cmd_l_main( $s ); +} -=over 4 +sub _cmd_l_handle_subname { -=item * + my $s = $subname; -Returning a false value from the C itself. + # De-Perl4. + $subname =~ s/\'/::/; -=item * + # Put it in this package unless it starts with ::. + $subname = $package . "::" . $subname unless $subname =~ /::/; -Altering C<$single> to a false value. + # Put it in CORE::GLOBAL if t doesn't start with :: and + # it doesn't live in this package and it lives in CORE::GLOBAL. + $subname = "CORE::GLOBAL::$s" + if not defined &$subname + and $s !~ /::/ + and defined &{"CORE::GLOBAL::$s"}; -=item * + # Put leading '::' names into 'main::'. + $subname = "main" . $subname if substr( $subname, 0, 2 ) eq "::"; -Altering C<$signal> to a false value. + # Get name:start-stop from find_sub, and break this up at + # colons. + my @pieces = split( /:/, find_sub($subname) || $sub{$subname} ); -=item * + # Pull off start-stop. + my $subrange = pop @pieces; -Turning off the C<4> bit in C<$trace> (this also disables the -check for C. This can be done with + # If the name contained colons, the split broke it up. + # Put it back together. + $file = join( ':', @pieces ); - $trace &= ~4; + # If we're not in that file, switch over to it. + if ( $file ne $filename ) { + if (! $slave_editor) { + print {$OUT} "Switching to file '$file'.\n"; + } -=back + # Switch debugger's magic structures. + *dbline = $main::{ '_<' . $file }; + $max = $#dbline; + $filename = $file; + } ## end if ($file ne $filename) -=cut + # Subrange is 'start-stop'. If this is less than a window full, + # swap it to 'start+', which will list a window from the start point. + if ($subrange) { + if ( eval($subrange) < -$window ) { + $subrange =~ s/-.*/+/; + } - # If there's a user-defined DB::watchfunction, call it with the - # current package, filename, and line. The function executes in - # the DB:: package. - if ( $trace & 4 ) { # User-installed watch - return - if watchfunction( $package, $filename, $line ) - and not $single - and not $was_signal - and not( $trace & ~4 ); - } ## end if ($trace & 4) + # Call self recursively to list the range. + return _cmd_l_main( $subrange ); + } ## end if ($subrange) - # Pick up any alteration to $signal in the watchfunction, and - # turn off the signal now. - $was_signal = $signal; - $signal = 0; + # Couldn't find it. + else { + print {$OUT} "Subroutine $subname not found.\n"; + return; + } +} -=head2 GETTING READY TO EXECUTE COMMANDS +sub _cmd_l_empty { + # Compute new range to list. + $incr = $window - 1; -The debugger decides to take control if single-step mode is on, the -C command was entered, or the user generated a signal. If the program + # Recurse to do it. + return _cmd_l_main( $start . '-' . ( $start + $incr ) ); +} + +sub _cmd_l_plus { + my ($new_start, $new_incr) = @_; + + # Don't reset start for 'l +nnn'. + $start = $new_start if $new_start; + + # Increment for list. Use window size if not specified. + # (Allows 'l +' to work.) + $incr = $new_incr || ($window - 1); + + # Create a line range we'll understand, and recurse to do it. + return _cmd_l_main( $start . '-' . ( $start + $incr ) ); +} + +sub _cmd_l_calc_initial_end_and_i { + my ($spec, $start_match, $end_match) = @_; + + # Determine end point; use end of file if not specified. + my $end = ( !defined $start_match ) ? $max : + ( $end_match ? $end_match : $start_match ); + + # Go on to the end, and then stop. + _minify_to_max(\$end); + + # Determine start line. + my $i = $start_match; + + if ($i eq '.') { + $i = $spec; + } + + $i = _max($i, 1); + + $incr = $end - $i; + + return ($end, $i); +} + +sub _cmd_l_range { + my ($spec, $current_line, $start_match, $end_match) = @_; + + my ($end, $i) = + _cmd_l_calc_initial_end_and_i($spec, $start_match, $end_match); + + # If we're running under a slave editor, force it to show the lines. + if ($slave_editor) { + print {$OUT} "\032\032$filename:$i:0\n"; + $i = $end; + } + # We're doing it ourselves. We want to show the line and special + # markers for: + # - the current line in execution + # - whether a line is breakable or not + # - whether a line has a break or not + # - whether a line has an action or not + else { + I_TO_END: + for ( ; $i <= $end ; $i++ ) { + + # Check for breakpoints and actions. + my ( $stop, $action ); + if ($dbline{$i}) { + ( $stop, $action ) = split( /\0/, $dbline{$i} ); + } + + # ==> if this is the current line in execution, + # : if it's breakable. + my $arrow = + ( $i == $current_line and $filename eq $filename_ini ) + ? '==>' + : ( $dbline[$i] + 0 ? ':' : ' ' ); + + # Add break and action indicators. + $arrow .= 'b' if $stop; + $arrow .= 'a' if $action; + + # Print the line. + print {$OUT} "$i$arrow\t", $dbline[$i]; + + # Move on to the next line. Drop out on an interrupt. + if ($signal) { + $i++; + last I_TO_END; + } + } ## end for (; $i <= $end ; $i++) + + # Line the prompt up; print a newline if the last line listed + # didn't have a newline. + if ($dbline[ $i - 1 ] !~ /\n\z/) { + print {$OUT} "\n"; + } + } ## end else [ if ($slave_editor) + + # Save the point we last listed to in case another relative 'l' + # command is desired. Don't let it run off the end. + $start = $i; + _minify_to_max(\$start); + + return; +} + +sub _cmd_l_main { + my $spec = shift; + + # If this is '-something', delete any spaces after the dash. + $spec =~ s/\A-\s*\z/-/; + + # If the line is '$something', assume this is a scalar containing a + # line number. + # Set up for DB::eval() - evaluate in *user* context. + if ( my ($var_name) = $spec =~ /\A(\$.*)/s ) { + return _cmd_l_handle_var_name($var_name); + } + # l name. Try to find a sub by that name. + elsif ( ($subname) = $spec =~ /\A([\':A-Za-z_][\':\w]*(?:\[.*\])?)/s ) { + return _cmd_l_handle_subname(); + } + # Bare 'l' command. + elsif ( $spec !~ /\S/ ) { + return _cmd_l_empty(); + } + # l [start]+number_of_lines + elsif ( my ($new_start, $new_incr) = $spec =~ /\A(\d*)\+(\d*)\z/ ) { + return _cmd_l_plus($new_start, $new_incr); + } + # l start-stop or l start,stop + elsif (my ($s, $e) = $spec =~ /^(?:(-?[\d\$\.]+)(?:[-,]([\d\$\.]+))?)?/ ) { + return _cmd_l_range($spec, $line, $s, $e); + } + + return; +} ## end sub cmd_l + +sub _DB__handle_l_command { + my $self = shift; + + _cmd_l_main($self->cmd_args); + next CMD; +} + + +# 't' is type. +# 'm' is method. +# 'v' is the value (i.e: method name or subroutine ref). +# 's' is subroutine. +my %cmd_lookup; + +BEGIN +{ + %cmd_lookup = +( + '-' => { t => 'm', v => '_handle_dash_command', }, + '.' => { t => 's', v => \&_DB__handle_dot_command, }, + '=' => { t => 'm', v => '_handle_equal_sign_command', }, + 'H' => { t => 'm', v => '_handle_H_command', }, + 'S' => { t => 'm', v => '_handle_S_command', }, + 'T' => { t => 'm', v => '_handle_T_command', }, + 'W' => { t => 'm', v => '_handle_W_command', }, + 'c' => { t => 's', v => \&_DB__handle_c_command, }, + 'f' => { t => 's', v => \&_DB__handle_f_command, }, + 'i' => { t => 's', v => \&_DB__handle_i_command, }, + 'l' => { t => 's', v => \&_DB__handle_l_command, }, + 'm' => { t => 's', v => \&_DB__handle_m_command, }, + 'n' => { t => 'm', v => '_handle_n_command', }, + 'p' => { t => 'm', v => '_handle_p_command', }, + 'q' => { t => 'm', v => '_handle_q_command', }, + 'r' => { t => 'm', v => '_handle_r_command', }, + 's' => { t => 'm', v => '_handle_s_command', }, + 'save' => { t => 'm', v => '_handle_save_command', }, + 'source' => { t => 'm', v => '_handle_source_command', }, + 't' => { t => 'm', v => '_handle_t_command', }, + 'w' => { t => 'm', v => '_handle_w_command', }, + 'x' => { t => 'm', v => '_handle_x_command', }, + 'y' => { t => 's', v => \&_DB__handle_y_command, }, + (map { $_ => { t => 'm', v => '_handle_V_command_and_X_command', }, } + ('X', 'V')), + (map { $_ => { t => 'm', v => '_handle_enable_disable_commands', }, } + qw(enable disable)), + (map { $_ => + { t => 's', v => \&_DB__handle_restart_and_rerun_commands, }, + } qw(R rerun)), + (map { $_ => {t => 'm', v => '_handle_cmd_wrapper_commands' }, } + qw(a A b B e E h L M o O v w W)), +); +}; + +sub DB { + + # lock the debugger and get the thread id for the prompt + lock($DBGR); + my $tid; + my $position; + my ($prefix, $after, $infix); + my $pat; + my $explicit_stop; + my $piped; + my $selected; + + if ($ENV{PERL5DB_THREADED}) { + $tid = eval { "[".threads->tid."]" }; + } + + my $cmd_verb; + my $cmd_args; + + my $obj = DB::Obj->new( + { + position => \$position, + prefix => \$prefix, + after => \$after, + explicit_stop => \$explicit_stop, + infix => \$infix, + cmd_args => \$cmd_args, + cmd_verb => \$cmd_verb, + pat => \$pat, + piped => \$piped, + selected => \$selected, + }, + ); + + $obj->_DB_on_init__initialize_globals(@_); + + # Preserve current values of $@, $!, $^E, $,, $/, $\, $^W. + # The code being debugged may have altered them. + DB::save(); + + # Since DB::DB gets called after every line, we can use caller() to + # figure out where we last were executing. Sneaky, eh? This works because + # caller is returning all the extra information when called from the + # debugger. + local ( $package, $filename, $line ) = caller; + $filename_ini = $filename; + + # set up the context for DB::eval, so it can properly execute + # code on behalf of the user. We add the package in so that the + # code is eval'ed in the proper package (not in the debugger!). + local $usercontext = _calc_usercontext($package); + + # Create an alias to the active file magical array to simplify + # the code here. + local (*dbline) = $main::{ '_<' . $filename }; + + # Last line in the program. + $max = $#dbline; + + # The &-call is here to ascertain the mutability of @_. + &_DB__determine_if_we_should_break; + + # Preserve the current stop-or-not, and see if any of the W + # (watch expressions) has changed. + my $was_signal = $signal; + + # If we have any watch expressions ... + _DB__handle_watch_expressions($obj); + +=head2 C + +C is a function that can be defined by the user; it is a +function which will be run on each entry to C; it gets the +current package, filename, and line as its parameters. + +The watchfunction can do anything it likes; it is executing in the +debugger's context, so it has access to all of the debugger's internal +data structures and functions. + +C can control the debugger's actions. Any of the following +will cause the debugger to return control to the user's program after +C executes: + +=over 4 + +=item * + +Returning a false value from the C itself. + +=item * + +Altering C<$single> to a false value. + +=item * + +Altering C<$signal> to a false value. + +=item * + +Turning off the C<4> bit in C<$trace> (this also disables the +check for C. This can be done with + + $trace &= ~4; + +=back + +=cut + + # If there's a user-defined DB::watchfunction, call it with the + # current package, filename, and line. The function executes in + # the DB:: package. + if ( $trace & 4 ) { # User-installed watch + return + if watchfunction( $package, $filename, $line ) + and not $single + and not $was_signal + and not( $trace & ~4 ); + } ## end if ($trace & 4) + + # Pick up any alteration to $signal in the watchfunction, and + # turn off the signal now. + $was_signal = $signal; + $signal = 0; + +=head2 GETTING READY TO EXECUTE COMMANDS + +The debugger decides to take control if single-step mode is on, the +C command was entered, or the user generated a signal. If the program has fallen off the end, we set things up so that entering further commands won't cause trouble, and we say that the program is over. @@ -2708,6 +3019,7 @@ # The &-call is here to ascertain the mutability of @_. &DB::eval; } + undef $action; # Are we nested another level (e.g., did we evaluate a function # that had a breakpoint in it at the debugger prompt)? @@ -2820,7 +3132,7 @@ $cmd = $laststep; } chomp($cmd); # get rid of the annoying extra newline - if (length($cmd) >= 2) { + if (length($cmd) >= option_val('HistItemMinLength', 2)) { push( @hist, $cmd ); } push( @truehist, $cmd ); @@ -3346,10 +3658,6 @@ B, B or B to get additional info. EOP - # Set the DB::eval context appropriately. - # At program termination disable any user actions. - $DB::action = undef; - $DB::package = 'main'; $DB::usercontext = DB::_calc_usercontext($DB::package); } ## end elsif ($package eq 'DB::fake') @@ -3734,10 +4042,7 @@ my $i; for ( $i = $#hist ; $i > $end ; $i-- ) { - - # Print the command unless it has no arguments. - print $OUT "$i: ", $hist[$i], "\n" - unless $hist[$i] =~ /^.?$/; + print $OUT "$i: ", $hist[$i], "\n"; } next CMD; @@ -4972,807 +5277,504 @@ $had_breakpoints{$filename} |= 1; # If there is an action or condition here already ... - if ( $dbline{$i} ) { - - # ... swap this condition for the existing one. - $dbline{$i} =~ s/^[^\0]*/$cond/; - } - else { - - # Nothing here - just add the condition. - $dbline{$i} = $cond; - - _set_breakpoint_enabled_status($filename, $i, 1); - } - - return; -} ## end sub break_on_line - -=head3 cmd_b_line(line, [condition]) (command) - -Wrapper for C. Prints the failure message if it -doesn't work. - -=cut - -sub cmd_b_line { - if (not eval { break_on_line(@_); 1 }) { - local $\ = ''; - print $OUT $@ and return; - } - - return; -} ## end sub cmd_b_line - -=head3 cmd_b_filename_line(line, [condition]) (command) - -Wrapper for C. Prints the failure message if it -doesn't work. - -=cut - -sub cmd_b_filename_line { - if (not eval { break_on_filename_line(@_); 1 }) { - local $\ = ''; - print $OUT $@ and return; - } - - return; -} - -=head3 break_on_filename_line(file, line, [condition]) (API) - -Switches to the file specified and then calls C to set -the breakpoint. - -=cut - -sub break_on_filename_line { - my $f = shift; - my $i = shift; - my $cond = @_ ? shift(@_) : 1; - - # Switch the magical hash temporarily. - local *dbline = $main::{ '_<' . $f }; - - # Localize the variables that break_on_line uses to make its message. - local $filename_error = " of '$f'"; - local $filename = $f; - - # Add the breakpoint. - break_on_line( $i, $cond ); - - return; -} ## end sub break_on_filename_line - -=head3 break_on_filename_line_range(file, from, to, [condition]) (API) - -Switch to another file, search the range of lines specified for an -executable one, and put a breakpoint on the first one you find. - -=cut - -sub break_on_filename_line_range { - my $f = shift; - my $from = shift; - my $to = shift; - my $cond = @_ ? shift(@_) : 1; - - # Find a breakable line if there is one. - my $i = breakable_line_in_filename( $f, $from, $to ); - - # Add the breakpoint. - break_on_filename_line( $f, $i, $cond ); - - return; -} ## end sub break_on_filename_line_range - -=head3 subroutine_filename_lines(subname, [condition]) (API) - -Search for a subroutine within a given file. The condition is ignored. -Uses C to locate the desired subroutine. - -=cut - -sub subroutine_filename_lines { - my ( $subname ) = @_; - - # Returned value from find_sub() is fullpathname:startline-endline. - # The match creates the list (fullpathname, start, end). - return (find_sub($subname) =~ /^(.*):(\d+)-(\d+)$/); -} ## end sub subroutine_filename_lines - -=head3 break_subroutine(subname) (API) - -Places a break on the first line possible in the specified subroutine. Uses -C to find the subroutine, and -C to place the break. - -=cut - -sub break_subroutine { - my $subname = shift; - - # Get filename, start, and end. - my ( $file, $s, $e ) = subroutine_filename_lines($subname) - or die "Subroutine $subname not found.\n"; - - - # Null condition changes to '1' (always true). - my $cond = @_ ? shift(@_) : 1; - - # Put a break the first place possible in the range of lines - # that make up this subroutine. - break_on_filename_line_range( $file, $s, $e, $cond ); - - return; -} ## end sub break_subroutine - -=head3 cmd_b_sub(subname, [condition]) (command) - -We take the incoming subroutine name and fully-qualify it as best we can. - -=over 4 - -=item 1. If it's already fully-qualified, leave it alone. - -=item 2. Try putting it in the current package. - -=item 3. If it's not there, try putting it in CORE::GLOBAL if it exists there. - -=item 4. If it starts with '::', put it in 'main::'. - -=back - -After all this cleanup, we call C to try to set the -breakpoint. - -=cut - -sub cmd_b_sub { - my $subname = shift; - my $cond = @_ ? shift : 1; - - # If the subname isn't a code reference, qualify it so that - # break_subroutine() will work right. - if ( ref($subname) ne 'CODE' ) { - - # Not Perl 4. - $subname =~ s/'/::/g; - my $s = $subname; - - # Put it in this package unless it's already qualified. - if ($subname !~ /::/) - { - $subname = $package . '::' . $subname; - }; - - # Requalify it into CORE::GLOBAL if qualifying it into this - # package resulted in its not being defined, but only do so - # if it really is in CORE::GLOBAL. - my $core_name = "CORE::GLOBAL::$s"; - if ((!defined(&$subname)) - and ($s !~ /::/) - and (defined &{$core_name})) - { - $subname = $core_name; - } - - # Put it in package 'main' if it has a leading ::. - if ($subname =~ /\A::/) - { - $subname = "main" . $subname; - } - } ## end if ( ref($subname) ne 'CODE' ) { - - # Try to set the breakpoint. - if (not eval { break_subroutine( $subname, $cond ); 1 }) { - local $\ = ''; - print {$OUT} $@; - return; - } - - return; -} ## end sub cmd_b_sub - -=head3 C - delete breakpoint(s) (command) - -The command mostly parses the command line and tries to turn the argument -into a line spec. If it can't, it uses the current line. It then calls -C to actually do the work. - -If C<*> is specified, C calls C with no arguments, -thereby deleting all the breakpoints. - -=cut - -sub cmd_B { - my $cmd = shift; - - # No line spec? Use dbline. - # If there is one, use it if it's non-zero, or wipe it out if it is. - my $line = ( $_[0] =~ /\A\./ ) ? $dbline : (shift || ''); - my $dbline = shift; - - # If the line was dot, make the line the current one. - $line =~ s/^\./$dbline/; + if ( $dbline{$i} ) { - # If it's * we're deleting all the breakpoints. - if ( $line eq '*' ) { - if (not eval { delete_breakpoint(); 1 }) { - print {$OUT} $@; - } + # ... swap this condition for the existing one. + $dbline{$i} =~ s/^[^\0]*/$cond/; } + else { - # If there is a line spec, delete the breakpoint on that line. - elsif ( $line =~ /\A(\S.*)/ ) { - if (not eval { delete_breakpoint( $line || $dbline ); 1 }) { - local $\ = ''; - print {$OUT} $@; - } - } ## end elsif ($line =~ /^(\S.*)/) + # Nothing here - just add the condition. + $dbline{$i} = $cond; - # No line spec. - else { - print {$OUT} - "Deleting a breakpoint requires a line number, or '*' for all\n" - ; # hint + _set_breakpoint_enabled_status($filename, $i, 1); } return; -} ## end sub cmd_B +} ## end sub break_on_line -=head3 delete_breakpoint([line]) (API) +=head3 cmd_b_line(line, [condition]) (command) -This actually does the work of deleting either a single breakpoint, or all -of them. +Wrapper for C. Prints the failure message if it +doesn't work. -For a single line, we look for it in C<@dbline>. If it's nonbreakable, we -just drop out with a message saying so. If it is, we remove the condition -part of the 'condition\0action' that says there's a breakpoint here. If, -after we've done that, there's nothing left, we delete the corresponding -line in C<%dbline> to signal that no action needs to be taken for this line. +=cut -For all breakpoints, we iterate through the keys of C<%had_breakpoints>, -which lists all currently-loaded files which have breakpoints. We then look -at each line in each of these files, temporarily switching the C<%dbline> -and C<@dbline> structures to point to the files in question, and do what -we did in the single line case: delete the condition in C<@dbline>, and -delete the key in C<%dbline> if nothing's left. +sub cmd_b_line { + if (not eval { break_on_line(@_); 1 }) { + local $\ = ''; + print $OUT $@ and return; + } -We then wholesale delete C<%postponed>, C<%postponed_file>, and -C<%break_on_load>, because these structures contain breakpoints for files -and code that haven't been loaded yet. We can just kill these off because there -are no magical debugger structures associated with them. + return; +} ## end sub cmd_b_line -=cut +=head3 cmd_b_filename_line(line, [condition]) (command) -sub _remove_breakpoint_entry { - my ($fn, $i) = @_; +Wrapper for C. Prints the failure message if it +doesn't work. - delete $dbline{$i}; - _delete_breakpoint_data_ref($fn, $i); +=cut + +sub cmd_b_filename_line { + if (not eval { break_on_filename_line(@_); 1 }) { + local $\ = ''; + print $OUT $@ and return; + } return; } -sub _delete_all_breakpoints { - print {$OUT} "Deleting all breakpoints...\n"; - - # %had_breakpoints lists every file that had at least one - # breakpoint in it. - for my $fn ( keys %had_breakpoints ) { - - # Switch to the desired file temporarily. - local *dbline = $main::{ '_<' . $fn }; +=head3 break_on_filename_line(file, line, [condition]) (API) - $max = $#dbline; +Switches to the file specified and then calls C to set +the breakpoint. - # For all lines in this file ... - for my $i (1 .. $max) { +=cut - # If there's a breakpoint or action on this line ... - if ( defined $dbline{$i} ) { +sub break_on_filename_line { + my $f = shift; + my $i = shift; + my $cond = @_ ? shift(@_) : 1; - # ... remove the breakpoint. - $dbline{$i} =~ s/\A[^\0]+//; - if ( $dbline{$i} =~ s/\A\0?\z// ) { - # Remove the entry altogether if no action is there. - _remove_breakpoint_entry($fn, $i); - } - } ## end if (defined $dbline{$i... - } ## end for $i (1 .. $max) + # Switch the magical hash temporarily. + local *dbline = $main::{ '_<' . $f }; - # If, after we turn off the "there were breakpoints in this file" - # bit, the entry in %had_breakpoints for this file is zero, - # we should remove this file from the hash. - if ( not $had_breakpoints{$fn} &= (~1) ) { - delete $had_breakpoints{$fn}; - } - } ## end for my $fn (keys %had_breakpoints) + # Localize the variables that break_on_line uses to make its message. + local $filename_error = " of '$f'"; + local $filename = $f; - # Kill off all the other breakpoints that are waiting for files that - # haven't been loaded yet. - undef %postponed; - undef %postponed_file; - undef %break_on_load; + # Add the breakpoint. + break_on_line( $i, $cond ); return; -} - -sub _delete_breakpoint_from_line { - my ($i) = @_; +} ## end sub break_on_filename_line - # Woops. This line wasn't breakable at all. - die "Line $i not breakable.\n" if $dbline[$i] == 0; +=head3 break_on_filename_line_range(file, from, to, [condition]) (API) - # Kill the condition, but leave any action. - $dbline{$i} =~ s/\A[^\0]*//; +Switch to another file, search the range of lines specified for an +executable one, and put a breakpoint on the first one you find. - # Remove the entry entirely if there's no action left. - if ($dbline{$i} eq '') { - _remove_breakpoint_entry($filename, $i); - } +=cut - return; -} +sub break_on_filename_line_range { + my $f = shift; + my $from = shift; + my $to = shift; + my $cond = @_ ? shift(@_) : 1; -sub delete_breakpoint { - my $i = shift; + # Find a breakable line if there is one. + my $i = breakable_line_in_filename( $f, $from, $to ); - # If we got a line, delete just that one. - if ( defined($i) ) { - _delete_breakpoint_from_line($i); - } - # No line; delete them all. - else { - _delete_all_breakpoints(); - } + # Add the breakpoint. + break_on_filename_line( $f, $i, $cond ); return; -} +} ## end sub break_on_filename_line_range -=head3 cmd_stop (command) +=head3 subroutine_filename_lines(subname, [condition]) (API) -This is meant to be part of the new command API, but it isn't called or used -anywhere else in the debugger. XXX It is probably meant for use in development -of new commands. +Search for a subroutine within a given file. The condition is ignored. +Uses C to locate the desired subroutine. =cut -sub cmd_stop { # As on ^C, but not signal-safy. - $signal = 1; -} - -=head3 C - threads +sub subroutine_filename_lines { + my ( $subname ) = @_; -Display the current thread id: + # Returned value from find_sub() is fullpathname:startline-endline. + # The match creates the list (fullpathname, start, end). + return (find_sub($subname) =~ /^(.*):(\d+)-(\d+)$/); +} ## end sub subroutine_filename_lines - e +=head3 break_subroutine(subname) (API) -This could be how (when implemented) to send commands to this thread id (e cmd) -or that thread id (e tid cmd). +Places a break on the first line possible in the specified subroutine. Uses +C to find the subroutine, and +C to place the break. =cut -sub cmd_e { - my $cmd = shift; - my $line = shift; - unless (exists($INC{'threads.pm'})) { - print "threads not loaded($ENV{PERL5DB_THREADED}) - please run the debugger with PERL5DB_THREADED=1 set in the environment\n"; - } else { - my $tid = threads->tid; - print "thread id: $tid\n"; - } -} ## end sub cmd_e - -=head3 C - list of thread ids +sub break_subroutine { + my $subname = shift; -Display the list of available thread ids: + # Get filename, start, and end. + my ( $file, $s, $e ) = subroutine_filename_lines($subname) + or die "Subroutine $subname not found.\n"; - E -This could be used (when implemented) to send commands to all threads (E cmd). + # Null condition changes to '1' (always true). + my $cond = @_ ? shift(@_) : 1; -=cut + # Put a break the first place possible in the range of lines + # that make up this subroutine. + break_on_filename_line_range( $file, $s, $e, $cond ); -sub cmd_E { - my $cmd = shift; - my $line = shift; - unless (exists($INC{'threads.pm'})) { - print "threads not loaded($ENV{PERL5DB_THREADED}) - please run the debugger with PERL5DB_THREADED=1 set in the environment\n"; - } else { - my $tid = threads->tid; - print "thread ids: ".join(', ', - map { ($tid == $_->tid ? '<'.$_->tid.'>' : $_->tid) } threads->list - )."\n"; - } -} ## end sub cmd_E + return; +} ## end sub break_subroutine -=head3 C - help command (command) +=head3 cmd_b_sub(subname, [condition]) (command) -Does the work of either +We take the incoming subroutine name and fully-qualify it as best we can. =over 4 -=item * +=item 1. If it's already fully-qualified, leave it alone. -Showing all the debugger help +=item 2. Try putting it in the current package. -=item * +=item 3. If it's not there, try putting it in CORE::GLOBAL if it exists there. -Showing help for a specific command +=item 4. If it starts with '::', put it in 'main::'. =back -=cut - -use vars qw($help); -use vars qw($summary); - -sub cmd_h { - my $cmd = shift; +After all this cleanup, we call C to try to set the +breakpoint. - # If we have no operand, assume null. - my $line = shift || ''; +=cut - # 'h h'. Print the long-format help. - if ( $line =~ /\Ah\s*\z/ ) { - print_help($help); - } +sub cmd_b_sub { + my $subname = shift; + my $cond = @_ ? shift : 1; - # 'h '. Search for the command and print only its help. - elsif ( my ($asked) = $line =~ /\A(\S.*)\z/ ) { + # If the subname isn't a code reference, qualify it so that + # break_subroutine() will work right. + if ( ref($subname) ne 'CODE' ) { - # support long commands; otherwise bogus errors - # happen when you ask for h on for example - my $qasked = quotemeta($asked); # for searching; we don't - # want to use it as a pattern. - # XXX: finds CR but not + # Not Perl 4. + $subname =~ s/'/::/g; + my $s = $subname; - # Search the help string for the command. - if ( - $help =~ /^ # Start of a line - is not a debugger command.\n"); + # Put it in package 'main' if it has a leading ::. + if ($subname =~ /\A::/) + { + $subname = "main" . $subname; } - } ## end elsif ($line =~ /^(\S.*)$/) + } ## end if ( ref($subname) ne 'CODE' ) { - # 'h' - print the summary help. - else { - print_help($summary); + # Try to set the breakpoint. + if (not eval { break_subroutine( $subname, $cond ); 1 }) { + local $\ = ''; + print {$OUT} $@; + return; } -} ## end sub cmd_h - -=head3 C - inheritance display - -Display the (nested) parentage of the module or object given. -=cut + return; +} ## end sub cmd_b_sub -sub cmd_i { - my $cmd = shift; - my $line = shift; +=head3 C - delete breakpoint(s) (command) - require mro; +The command mostly parses the command line and tries to turn the argument +into a line spec. If it can't, it uses the current line. It then calls +C to actually do the work. - foreach my $isa ( split( /\s+/, $line ) ) { - $evalarg = $isa; - # The &-call is here to ascertain the mutability of @_. - ($isa) = &DB::eval; - no strict 'refs'; - print join( - ', ', - map { - "$_" - . ( - defined( ${"$_\::VERSION"} ) - ? ' ' . ${"$_\::VERSION"} - : undef ) - } @{mro::get_linear_isa(ref($isa) || $isa)} - ); - print "\n"; - } -} ## end sub cmd_i +If C<*> is specified, C calls C with no arguments, +thereby deleting all the breakpoints. -=head3 C - list lines (command) +=cut -Most of the command is taken up with transforming all the different line -specification syntaxes into 'start-stop'. After that is done, the command -runs a loop over C<@dbline> for the specified range of lines. It handles -the printing of each line and any markers (C<==E> for current line, -C for break on this line, C for action on this line, C<:> for this -line breakable). +sub cmd_B { + my $cmd = shift; -We save the last line listed in the C<$start> global for further listing -later. + # No line spec? Use dbline. + # If there is one, use it if it's non-zero, or wipe it out if it is. + my $line = ( $_[0] =~ /\A\./ ) ? $dbline : (shift || ''); + my $dbline = shift; -=cut + # If the line was dot, make the line the current one. + $line =~ s/^\./$dbline/; -sub _min { - my $min = shift; - foreach my $v (@_) { - if ($min > $v) { - $min = $v; + # If it's * we're deleting all the breakpoints. + if ( $line eq '*' ) { + if (not eval { delete_breakpoint(); 1 }) { + print {$OUT} $@; } } - return $min; -} -sub _max { - my $max = shift; - foreach my $v (@_) { - if ($max < $v) { - $max = $v; + # If there is a line spec, delete the breakpoint on that line. + elsif ( $line =~ /\A(\S.*)/ ) { + if (not eval { delete_breakpoint( $line || $dbline ); 1 }) { + local $\ = ''; + print {$OUT} $@; } + } ## end elsif ($line =~ /^(\S.*)/) + + # No line spec. + else { + print {$OUT} + "Deleting a breakpoint requires a line number, or '*' for all\n" + ; # hint } - return $max; -} -sub _minify_to_max { - my $ref = shift; + return; +} ## end sub cmd_B - $$ref = _min($$ref, $max); +=head3 delete_breakpoint([line]) (API) - return; -} +This actually does the work of deleting either a single breakpoint, or all +of them. -sub _cmd_l_handle_var_name { - my $var_name = shift; +For a single line, we look for it in C<@dbline>. If it's nonbreakable, we +just drop out with a message saying so. If it is, we remove the condition +part of the 'condition\0action' that says there's a breakpoint here. If, +after we've done that, there's nothing left, we delete the corresponding +line in C<%dbline> to signal that no action needs to be taken for this line. - $evalarg = $var_name; +For all breakpoints, we iterate through the keys of C<%had_breakpoints>, +which lists all currently-loaded files which have breakpoints. We then look +at each line in each of these files, temporarily switching the C<%dbline> +and C<@dbline> structures to point to the files in question, and do what +we did in the single line case: delete the condition in C<@dbline>, and +delete the key in C<%dbline> if nothing's left. - my ($s) = DB::eval(); +We then wholesale delete C<%postponed>, C<%postponed_file>, and +C<%break_on_load>, because these structures contain breakpoints for files +and code that haven't been loaded yet. We can just kill these off because there +are no magical debugger structures associated with them. - # Ooops. Bad scalar. - if ($@) { - print {$OUT} "Error: $@\n"; - next CMD; - } +=cut - # Good scalar. If it's a reference, find what it points to. - $s = CvGV_name($s); - print {$OUT} "Interpreted as: $1 $s\n"; - $line = "$1 $s"; +sub _remove_breakpoint_entry { + my ($fn, $i) = @_; - # Call self recursively to really do the command. - return _cmd_l_main( $s ); + delete $dbline{$i}; + _delete_breakpoint_data_ref($fn, $i); + + return; } -sub _cmd_l_handle_subname { +sub _delete_all_breakpoints { + print {$OUT} "Deleting all breakpoints...\n"; - my $s = $subname; + # %had_breakpoints lists every file that had at least one + # breakpoint in it. + for my $fn ( keys %had_breakpoints ) { - # De-Perl4. - $subname =~ s/\'/::/; + # Switch to the desired file temporarily. + local *dbline = $main::{ '_<' . $fn }; - # Put it in this package unless it starts with ::. - $subname = $package . "::" . $subname unless $subname =~ /::/; + $max = $#dbline; - # Put it in CORE::GLOBAL if t doesn't start with :: and - # it doesn't live in this package and it lives in CORE::GLOBAL. - $subname = "CORE::GLOBAL::$s" - if not defined &$subname - and $s !~ /::/ - and defined &{"CORE::GLOBAL::$s"}; + # For all lines in this file ... + for my $i (1 .. $max) { - # Put leading '::' names into 'main::'. - $subname = "main" . $subname if substr( $subname, 0, 2 ) eq "::"; + # If there's a breakpoint or action on this line ... + if ( defined $dbline{$i} ) { - # Get name:start-stop from find_sub, and break this up at - # colons. - my @pieces = split( /:/, find_sub($subname) || $sub{$subname} ); + # ... remove the breakpoint. + $dbline{$i} =~ s/\A[^\0]+//; + if ( $dbline{$i} =~ s/\A\0?\z// ) { + # Remove the entry altogether if no action is there. + _remove_breakpoint_entry($fn, $i); + } + } ## end if (defined $dbline{$i... + } ## end for $i (1 .. $max) - # Pull off start-stop. - my $subrange = pop @pieces; + # If, after we turn off the "there were breakpoints in this file" + # bit, the entry in %had_breakpoints for this file is zero, + # we should remove this file from the hash. + if ( not $had_breakpoints{$fn} &= (~1) ) { + delete $had_breakpoints{$fn}; + } + } ## end for my $fn (keys %had_breakpoints) - # If the name contained colons, the split broke it up. - # Put it back together. - $file = join( ':', @pieces ); + # Kill off all the other breakpoints that are waiting for files that + # haven't been loaded yet. + undef %postponed; + undef %postponed_file; + undef %break_on_load; - # If we're not in that file, switch over to it. - if ( $file ne $filename ) { - if (! $slave_editor) { - print {$OUT} "Switching to file '$file'.\n"; - } + return; +} - # Switch debugger's magic structures. - *dbline = $main::{ '_<' . $file }; - $max = $#dbline; - $filename = $file; - } ## end if ($file ne $filename) +sub _delete_breakpoint_from_line { + my ($i) = @_; - # Subrange is 'start-stop'. If this is less than a window full, - # swap it to 'start+', which will list a window from the start point. - if ($subrange) { - if ( eval($subrange) < -$window ) { - $subrange =~ s/-.*/+/; - } + # Woops. This line wasn't breakable at all. + die "Line $i not breakable.\n" if $dbline[$i] == 0; - # Call self recursively to list the range. - return _cmd_l_main( $subrange ); - } ## end if ($subrange) + # Kill the condition, but leave any action. + $dbline{$i} =~ s/\A[^\0]*//; - # Couldn't find it. - else { - print {$OUT} "Subroutine $subname not found.\n"; - return; + # Remove the entry entirely if there's no action left. + if ($dbline{$i} eq '') { + _remove_breakpoint_entry($filename, $i); } + + return; } -sub _cmd_l_empty { - # Compute new range to list. - $incr = $window - 1; +sub delete_breakpoint { + my $i = shift; - # Recurse to do it. - return _cmd_l_main( $start . '-' . ( $start + $incr ) ); + # If we got a line, delete just that one. + if ( defined($i) ) { + _delete_breakpoint_from_line($i); + } + # No line; delete them all. + else { + _delete_all_breakpoints(); + } + + return; } -sub _cmd_l_plus { - my ($new_start, $new_incr) = @_; +=head3 cmd_stop (command) - # Don't reset start for 'l +nnn'. - $start = $new_start if $new_start; +This is meant to be part of the new command API, but it isn't called or used +anywhere else in the debugger. XXX It is probably meant for use in development +of new commands. - # Increment for list. Use window size if not specified. - # (Allows 'l +' to work.) - $incr = $new_incr || ($window - 1); +=cut - # Create a line range we'll understand, and recurse to do it. - return _cmd_l_main( $start . '-' . ( $start + $incr ) ); +sub cmd_stop { # As on ^C, but not signal-safy. + $signal = 1; } -sub _cmd_l_calc_initial_end_and_i { - my ($spec, $start_match, $end_match) = @_; +=head3 C - threads - # Determine end point; use end of file if not specified. - my $end = ( !defined $start_match ) ? $max : - ( $end_match ? $end_match : $start_match ); +Display the current thread id: - # Go on to the end, and then stop. - _minify_to_max(\$end); + e - # Determine start line. - my $i = $start_match; +This could be how (when implemented) to send commands to this thread id (e cmd) +or that thread id (e tid cmd). - if ($i eq '.') { - $i = $spec; +=cut + +sub cmd_e { + my $cmd = shift; + my $line = shift; + unless (exists($INC{'threads.pm'})) { + print "threads not loaded($ENV{PERL5DB_THREADED}) + please run the debugger with PERL5DB_THREADED=1 set in the environment\n"; + } else { + my $tid = threads->tid; + print "thread id: $tid\n"; } +} ## end sub cmd_e - $i = _max($i, 1); +=head3 C - list of thread ids - $incr = $end - $i; +Display the list of available thread ids: - return ($end, $i); -} + E -sub _cmd_l_range { - my ($spec, $current_line, $start_match, $end_match) = @_; +This could be used (when implemented) to send commands to all threads (E cmd). - my ($end, $i) = - _cmd_l_calc_initial_end_and_i($spec, $start_match, $end_match); +=cut - # If we're running under a slave editor, force it to show the lines. - if ($slave_editor) { - print {$OUT} "\032\032$filename:$i:0\n"; - $i = $end; +sub cmd_E { + my $cmd = shift; + my $line = shift; + unless (exists($INC{'threads.pm'})) { + print "threads not loaded($ENV{PERL5DB_THREADED}) + please run the debugger with PERL5DB_THREADED=1 set in the environment\n"; + } else { + my $tid = threads->tid; + print "thread ids: ".join(', ', + map { ($tid == $_->tid ? '<'.$_->tid.'>' : $_->tid) } threads->list + )."\n"; } - # We're doing it ourselves. We want to show the line and special - # markers for: - # - the current line in execution - # - whether a line is breakable or not - # - whether a line has a break or not - # - whether a line has an action or not - else { - I_TO_END: - for ( ; $i <= $end ; $i++ ) { +} ## end sub cmd_E - # Check for breakpoints and actions. - my ( $stop, $action ); - if ($dbline{$i}) { - ( $stop, $action ) = split( /\0/, $dbline{$i} ); - } +=head3 C - help command (command) - # ==> if this is the current line in execution, - # : if it's breakable. - my $arrow = - ( $i == $current_line and $filename eq $filename_ini ) - ? '==>' - : ( $dbline[$i] + 0 ? ':' : ' ' ); +Does the work of either - # Add break and action indicators. - $arrow .= 'b' if $stop; - $arrow .= 'a' if $action; +=over 4 - # Print the line. - print {$OUT} "$i$arrow\t", $dbline[$i]; +=item * - # Move on to the next line. Drop out on an interrupt. - if ($signal) { - $i++; - last I_TO_END; - } - } ## end for (; $i <= $end ; $i++) +Showing all the debugger help - # Line the prompt up; print a newline if the last line listed - # didn't have a newline. - if ($dbline[ $i - 1 ] !~ /\n\z/) { - print {$OUT} "\n"; - } - } ## end else [ if ($slave_editor) +=item * - # Save the point we last listed to in case another relative 'l' - # command is desired. Don't let it run off the end. - $start = $i; - _minify_to_max(\$start); +Showing help for a specific command - return; -} +=back -sub _cmd_l_main { - my $spec = shift; +=cut - # If this is '-something', delete any spaces after the dash. - $spec =~ s/\A-\s*\z/-/; +use vars qw($help); +use vars qw($summary); - # If the line is '$something', assume this is a scalar containing a - # line number. - # Set up for DB::eval() - evaluate in *user* context. - if ( my ($var_name) = $spec =~ /\A(\$.*)/s ) { - return _cmd_l_handle_var_name($var_name); - } - # l name. Try to find a sub by that name. - elsif ( ($subname) = $spec =~ /\A([\':A-Za-z_][\':\w]*(?:\[.*\])?)/s ) { - return _cmd_l_handle_subname(); - } - # Bare 'l' command. - elsif ( $spec !~ /\S/ ) { - return _cmd_l_empty(); - } - # l [start]+number_of_lines - elsif ( my ($new_start, $new_incr) = $spec =~ /\A(\d*)\+(\d*)\z/ ) { - return _cmd_l_plus($new_start, $new_incr); - } - # l start-stop or l start,stop - elsif (my ($s, $e) = $spec =~ /^(?:(-?[\d\$\.]+)(?:[-,]([\d\$\.]+))?)?/ ) { - return _cmd_l_range($spec, $line, $s, $e); +sub cmd_h { + my $cmd = shift; + + # If we have no operand, assume null. + my $line = shift || ''; + + # 'h h'. Print the long-format help. + if ( $line =~ /\Ah\s*\z/ ) { + print_help($help); } - return; -} ## end sub cmd_l + # 'h '. Search for the command and print only its help. + elsif ( my ($asked) = $line =~ /\A(\S.*)\z/ ) { -sub cmd_l { - my (undef, $line) = @_; + # support long commands; otherwise bogus errors + # happen when you ask for h on for example + my $qasked = quotemeta($asked); # for searching; we don't + # want to use it as a pattern. + # XXX: finds CR but not - return _cmd_l_main($line); -} + # Search the help string for the command. + if ( + $help =~ /^ # Start of a line + is not a debugger command.\n"); + } + } ## end elsif ($line =~ /^(\S.*)$/) + + # 'h' - print the summary help. + else { + print_help($summary); + } +} ## end sub cmd_h =head3 C - list breakpoints, actions, and watch expressions (command) @@ -7330,7 +7332,7 @@ # Add it to the terminal history (if possible). $term->AddHistory($got) - if length($got) > 1 + if length($got) >= option_val("HistItemMinLength", 2) and defined $term->Features->{addHistory}; return $got; } ## end if (@typeahead) diff -Nru perl-5.32.1/lib/perl5db.t perl-5.34.0/lib/perl5db.t --- perl-5.32.1/lib/perl5db.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/perl5db.t 2021-01-20 23:04:44.000000000 +0000 @@ -2144,7 +2144,11 @@ [ '= quit q', '= foobar l', + '= .hello print "hellox\n"', + '= -goodbye print "goodbyex\n"', 'foobar', + '.hello', + '-goodbye', 'quit', ], prog => '../lib/perl5db/t/test-l-statement-1', @@ -2160,7 +2164,9 @@ 5:\s+print\ "2\\n";\n /msx, 'Test the = (command alias) command.', - ); + ); + $wrapper->output_like(qr/hellox.*goodbyex/xs, + "check . and - can start alias name"); } # Test the m statement. @@ -2800,6 +2806,28 @@ } { + # GitHub #17901 + my $wrapper = DebugWrap->new( + { + cmds => + [ + 'a 4 $s++', + ('s') x 5, + 'x $s', + 'q' + ], + prog => '../lib/perl5db/t/test-a-statement-3', + switches => [ '-d' ], + stderr => 0, + } + ); + $wrapper->contents_like( + qr/^0 +2$/m, + 'Test that the a command runs only on the given lines.', + ); +} + +{ # perl 5 RT #126735 regression bug. local $ENV{PERLDB_OPTS} = "NonStop=0 RemotePort=non-existent-host.tld:9001"; my $output = runperl( stdin => "q\n", stderr => 1, switches => [ '-d' ], prog => '../lib/perl5db/t/fact' ); @@ -2924,6 +2952,51 @@ ); } +{ + # gh #17661 + my $wrapper = DebugWrap->new( + { + cmds => + [ + 'c', + 'i $obj', + 'q', + ], + prog => '../lib/perl5db/t/gh-17661', + } + ); + + $wrapper->output_like( + qr/C5, C1, C2, C3, C4/, + q/check for reasonable result/, + ); +} + +{ + # gh #17661 related - C where $var is lexical + my $wrapper = DebugWrap->new( + { + cmds => + [ + 'c', + 'l $x', + 'l $y', + 'q', + ], + prog => '../lib/perl5db/t/gh-17661b', + } + ); + + $wrapper->contents_like( + qr/sub bar/, + q/check bar was listed/, + ); + $wrapper->contents_like( + qr/sub foo/, + q/check foo was listed/, + ); +} + SKIP: { $Config{usethreads} diff -Nru perl-5.32.1/lib/strict.pm perl-5.34.0/lib/strict.pm --- perl-5.32.1/lib/strict.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/strict.pm 2020-10-04 22:17:13.000000000 +0000 @@ -1,6 +1,6 @@ package strict; -$strict::VERSION = "1.11"; +$strict::VERSION = "1.12"; my ( %bitmask, %explicit_bitmask ); @@ -154,8 +154,9 @@ This disables the poetry optimization, generating a compile-time error if you try to use a bareword identifier that's not a subroutine, unless it -is a simple identifier (no colons) and that it appears in curly braces or -on the left hand side of the C<< => >> symbol. +is a simple identifier (no colons) and that it appears in curly braces, +on the left hand side of the C<< => >> symbol, or has the unary minus +operator applied to it. use strict 'subs'; $SIG{PIPE} = Plumber; # blows up diff -Nru perl-5.32.1/lib/subs.pm perl-5.34.0/lib/subs.pm --- perl-5.32.1/lib/subs.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/subs.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,6 +1,9 @@ package subs; -our $VERSION = '1.03'; +use strict; +use warnings; + +our $VERSION = '1.04'; =head1 NAME @@ -27,14 +30,13 @@ =cut -require 5.000; - sub import { my $callpack = caller; my $pack = shift; my @imports = @_; foreach my $sym (@imports) { - *{"${callpack}::$sym"} = \&{"${callpack}::$sym"}; + no strict 'refs'; + *{"${callpack}::$sym"} = \&{"${callpack}::$sym"}; } }; diff -Nru perl-5.32.1/lib/Symbol.pm perl-5.34.0/lib/Symbol.pm --- perl-5.32.1/lib/Symbol.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/Symbol.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,5 +1,8 @@ package Symbol; +use strict; +use warnings; + =head1 NAME Symbol - manipulate Perl symbols and their names @@ -78,14 +81,12 @@ =cut -BEGIN { require 5.005; } - require Exporter; -@ISA = qw(Exporter); -@EXPORT = qw(gensym ungensym qualify qualify_to_ref); -@EXPORT_OK = qw(delete_package geniosym); +our @ISA = qw(Exporter); +our @EXPORT = qw(gensym ungensym qualify qualify_to_ref); +our @EXPORT_OK = qw(delete_package geniosym); -$VERSION = '1.08'; +our $VERSION = '1.09'; my $genpkg = "Symbol::"; my $genseq = 0; @@ -99,6 +100,7 @@ # sub gensym () { my $name = "GEN" . $genseq++; + no strict 'refs'; my $ref = \*{$genpkg . $name}; delete $$genpkg{$name}; $ref; @@ -132,6 +134,7 @@ } sub qualify_to_ref ($;$) { + no strict 'refs'; return \*{ qualify $_[0], @_ > 1 ? $_[1] : caller }; } @@ -150,6 +153,7 @@ } my($stem, $leaf) = $pkg =~ m/(.*::)(\w+::)$/; + no strict 'refs'; my $stem_symtab = *{$stem}{HASH}; return unless defined $stem_symtab and exists $stem_symtab->{$leaf}; @@ -160,6 +164,7 @@ foreach my $name (keys %$leaf_symtab) { undef *{$pkg . $name}; } + use strict 'refs'; # delete the symbol table diff -Nru perl-5.32.1/lib/Symbol.t perl-5.34.0/lib/Symbol.t --- perl-5.32.1/lib/Symbol.t 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/Symbol.t 2020-10-24 18:43:34.000000000 +0000 @@ -1,11 +1,14 @@ #!./perl +use strict; +use warnings; + BEGIN { chdir 't' if -d 't'; @INC = '../lib'; } -use Test::More tests => 26; +use Test::More tests => 31; BEGIN { $_ = 'foo'; } # because Symbol used to clobber $_ @@ -15,10 +18,10 @@ # First test gensym() -$sym1 = gensym; +my $sym1 = gensym; ok( ref($sym1) eq 'GLOB', 'gensym() returns a GLOB' ); -$sym2 = gensym; +my $sym2 = gensym; ok( $sym1 ne $sym2, 'gensym() returns a different GLOB' ); @@ -33,7 +36,7 @@ $sym1 = geniosym; like( $sym1, qr/=IO\(/, 'got an IO ref' ); -$FOO = 'Eymascalar'; +our $FOO = 'Eymascalar'; *FOO = $sym1; is( $sym1, *FOO{IO}, 'assigns into glob OK' ); @@ -51,7 +54,7 @@ # Test qualify() package foo; -use Symbol qw(qualify); # must import into this package too +use Symbol qw(qualify qualify_to_ref); # must import into this package too ::ok( qualify("x") eq "foo::x", 'qualify() with a simple identifier' ); ::ok( qualify("x", "FOO") eq "FOO::x", 'qualify() with a package' ); @@ -65,9 +68,29 @@ 'qualify() with an identifier starting with a _' ); ::ok( qualify("^FOO") eq "main::\cFOO", 'qualify() with an identifier starting with a ^' ); +::is( qualify('\*x'), 'foo::\*x', + 'qualify() reference to a typeglob' ); +::is( qualify('\*x', 'FOO'), 'FOO::\*x', + 'qualify() reference to a typeglob' ); +{ + use strict 'refs'; + my $fhref = qualify_to_ref("main::STDOUT"); + ::is( ref($fhref), 'GLOB', + 'qualify_to_ref() returned ref to typeglob (1 argument)'); + + my $key = 'baz'; + my $ref_to_key = qualify_to_ref( $key, __PACKAGE__ ); + ::is( ref($ref_to_key), 'GLOB', + 'qualify_to_ref() returned ref to typeglob (2 arguments)'); + + my $ref_to_key_scalar = *{$ref_to_key}{SCALAR}; + ::is( ref($ref_to_key_scalar), 'SCALAR', + 'able to get SCALAR entry in typeglob'); +} # tests for delete_package package main; +no warnings 'once'; $Transient::variable = 42; ok( exists $::{'Transient::'}, 'transient stash exists' ); ok( defined $Transient::{variable}, 'transient variable in stash' ); diff -Nru perl-5.32.1/lib/unicore/mktables perl-5.34.0/lib/unicore/mktables --- perl-5.32.1/lib/unicore/mktables 2020-12-18 09:58:50.000000000 +0000 +++ perl-5.34.0/lib/unicore/mktables 2021-05-04 06:52:48.000000000 +0000 @@ -698,8 +698,8 @@ # nothing on the list has changed since the # previous build my $make_list = 1; # ? Should we write $file_list. Set to always - # make a list so that when the pumpking is - # preparing a release, s/he won't have to do + # make a list so that when the release manager + # is preparing a release, they won't have to do # special things my $glob_list = 0; # ? Should we try to include unknown .txt files # in the input. diff -Nru perl-5.32.1/lib/unicore/uni_keywords.pl perl-5.34.0/lib/unicore/uni_keywords.pl --- perl-5.32.1/lib/unicore/uni_keywords.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/unicore/uni_keywords.pl 2021-05-04 06:52:48.000000000 +0000 @@ -1295,9 +1295,9 @@ # baba9dfc133e3cb770a89aaf0973b1341fa61c2da6c176baf6428898b3b568d8 lib/unicore/extracted/DLineBreak.txt # 6d4a8c945dd7db83ed617cbb7d937de7f4ecf016ff22970d846e996a7c9a2a5d lib/unicore/extracted/DNumType.txt # 5b7c14380d5cceeaffcfbc18db1ed936391d2af2d51f5a41f1a17b692c77e59b lib/unicore/extracted/DNumValues.txt -# ee0dd174fd5b158d82dfea95d7d822ca0bfcd490182669353dca3ab39a8ee807 lib/unicore/mktables +# 28076ceb3f4e2514ea9db243f4b918b9a7c2807b036237e2276b99b2659d9474 lib/unicore/mktables # 50b85a67451145545a65cea370dab8d3444fbfe07e9c34cef560c5b7da9d3eef lib/unicore/version -# 2680b9254eb236c5c090f11b149605043e8c8433661b96efc4a42fb4709342a5 regen/charset_translations.pl -# 6bbad21de0848e0236b02f34f5fa0edd3cdae9ba8173cc9469a5513936b9e728 regen/mk_PL_charclass.pl -# 7a7e778e903508b1c244a77bae57ec57606ab775bb5f81719dbb122eb66d4259 regen/mk_invlists.pl +# 24120d5e0c9685c442c93bc1dbea9b85ef973bf8e9474baf0e55b160c288226b regen/charset_translations.pl +# 9f74e34278592ddf58fef8c32236b294e94ea5e12627f911f4563e8040a07292 regen/mk_PL_charclass.pl +# 5eb9e6c825496cc9aa705e3cd33bc6d5a9657dcca16d4c4acc4824ff30b34a26 regen/mk_invlists.pl # ex: set ro: diff -Nru perl-5.32.1/lib/utf8.pm perl-5.34.0/lib/utf8.pm --- perl-5.32.1/lib/utf8.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/utf8.pm 2020-10-24 18:43:34.000000000 +0000 @@ -1,15 +1,19 @@ package utf8; -$utf8::hint_bits = 0x00800000; +use strict; +use warnings; -our $VERSION = '1.22'; +our $hint_bits = 0x00800000; + +our $VERSION = '1.24'; +our $AUTOLOAD; sub import { - $^H |= $utf8::hint_bits; + $^H |= $hint_bits; } sub unimport { - $^H &= ~$utf8::hint_bits; + $^H &= ~$hint_bits; } sub AUTOLOAD { @@ -199,6 +203,11 @@ # with ord 0x100. Since these bytes aren't # legal UTF-EBCDIC, on EBCDIC platforms, $x is # unchanged and the function returns FALSE. + my $y = "\xc3\x83\xc2\xab"; This has been encoded twice; this + # example is only for ASCII platforms + utf8::decode($y); # Converts $y to \xc3\xab, returns TRUE; + utf8::decode($y); # Further converts to \xeb, returns TRUE; + utf8::decode($y); # Returns FALSE, leaves $y unchanged B; use L instead. diff -Nru perl-5.32.1/lib/warnings.pm perl-5.34.0/lib/warnings.pm --- perl-5.32.1/lib/warnings.pm 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/lib/warnings.pm 2021-02-21 11:01:31.000000000 +0000 @@ -5,7 +5,7 @@ package warnings; -our $VERSION = "1.47"; +our $VERSION = "1.51"; # Verify that we're called correctly so that warnings will work. # Can't use Carp, since Carp uses us! @@ -109,6 +109,9 @@ # Warnings Categories added in Perl 5.031 'experimental::isa' => 146, + + # Warnings Categories added in Perl 5.033 + 'experimental::try' => 148, ); our %Bits = ( @@ -122,7 +125,7 @@ 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31] 'exec' => "\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7] 'exiting' => "\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3] - 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x55\x51\x15\x50\x51\x05", # [51..56,58..62,66..68,70..73] + 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x55\x51\x15\x50\x51\x15", # [51..56,58..62,66..68,70..74] 'experimental::alpha_assertions' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [67] 'experimental::bitwise' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [58] 'experimental::const_attr' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [59] @@ -137,6 +140,7 @@ 'experimental::script_run' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00", # [68] 'experimental::signatures' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", # [56] 'experimental::smartmatch' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [54] + 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [74] 'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [71] 'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [72] 'experimental::win32_perlio' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00", # [62] @@ -199,7 +203,7 @@ 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31] 'exec' => "\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7] 'exiting' => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3] - 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xaa\xa2\x2a\xa0\xa2\x0a", # [51..56,58..62,66..68,70..73] + 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xaa\xa2\x2a\xa0\xa2\x2a", # [51..56,58..62,66..68,70..74] 'experimental::alpha_assertions' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [67] 'experimental::bitwise' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [58] 'experimental::const_attr' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [59] @@ -214,6 +218,7 @@ 'experimental::script_run' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00", # [68] 'experimental::signatures' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00", # [56] 'experimental::smartmatch' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [54] + 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [74] 'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [71] 'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [72] 'experimental::win32_perlio' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00", # [62] @@ -267,8 +272,8 @@ # These are used by various things, including our own tests our $NONE = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; -our $DEFAULT = "\x10\x01\x00\x00\x00\x50\x04\x00\x00\x00\x00\x00\x00\x55\x51\x55\x50\x51\x05", # [2,4,22,23,25,52..56,58..63,66..68,70..73] -our $LAST_BIT = 148 ; +our $DEFAULT = "\x10\x01\x00\x00\x00\x50\x04\x00\x00\x00\x00\x00\x00\x55\x51\x55\x50\x51\x15"; # [2,4,22,23,25,52..56,58..63,66..68,70..74] +our $LAST_BIT = 150 ; our $BYTES = 19 ; sub Croaker @@ -284,16 +289,16 @@ my $want_len = ($LAST_BIT + 7) >> 3; my $len = length($bits); if ($len != $want_len) { - if ($bits eq "") { - $bits = "\x00" x $want_len; - } elsif ($len > $want_len) { - substr $bits, $want_len, $len-$want_len, ""; - } else { - my $a = vec($bits, $Offsets{all} >> 1, 2); - $a |= $a << 2; - $a |= $a << 4; - $bits .= chr($a) x ($want_len - $len); - } + if ($bits eq "") { + $bits = "\x00" x $want_len; + } elsif ($len > $want_len) { + substr $bits, $want_len, $len-$want_len, ""; + } else { + my $x = vec($bits, $Offsets{all} >> 1, 2); + $x |= $x << 2; + $x |= $x << 4; + $bits .= chr($x) x ($want_len - $len); + } } return $bits; } @@ -306,21 +311,21 @@ $mask = _expand_bits($mask); foreach my $word ( @_ ) { - if ($word eq 'FATAL') { - $fatal = 1; - $no_fatal = 0; - } - elsif ($word eq 'NONFATAL') { - $fatal = 0; - $no_fatal = 1; - } - elsif ($catmask = $Bits{$word}) { - $mask |= $catmask ; - $mask |= $DeadBits{$word} if $fatal ; - $mask = ~(~$mask | $DeadBits{$word}) if $no_fatal ; - } - else - { Croaker("Unknown warnings category '$word'")} + if ($word eq 'FATAL') { + $fatal = 1; + $no_fatal = 0; + } + elsif ($word eq 'NONFATAL') { + $fatal = 0; + $no_fatal = 1; + } + elsif ($catmask = $Bits{$word}) { + $mask |= $catmask ; + $mask |= $DeadBits{$word} if $fatal ; + $mask = ~(~$mask | $DeadBits{$word}) if $no_fatal ; + } + else + { Croaker("Unknown warnings category '$word'")} } return $mask ; @@ -335,16 +340,24 @@ sub import { - shift; - - my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $DEFAULT) ; + my $invocant = shift; # append 'all' when implied (empty import list or after a lone # "FATAL" or "NONFATAL") push @_, 'all' - if !@_ || (@_==1 && ($_[0] eq 'FATAL' || $_[0] eq 'NONFATAL')); + if !@_ || (@_==1 && ($_[0] eq 'FATAL' || $_[0] eq 'NONFATAL')); - ${^WARNING_BITS} = _bits($mask, @_); + my @fatal = (); + foreach my $warning (@_) { + if($warning =~ /^(NON)?FATAL$/) { + @fatal = ($warning); + } elsif(substr($warning, 0, 1) ne '-') { + my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $DEFAULT) ; + ${^WARNING_BITS} = _bits($mask, @fatal, $warning); + } else { + $invocant->unimport(substr($warning, 1)); + } + } } sub unimport @@ -359,14 +372,14 @@ $mask = _expand_bits($mask); foreach my $word ( @_ ) { - if ($word eq 'FATAL') { - next; - } - elsif ($catmask = $Bits{$word}) { - $mask = ~(~$mask | $catmask | $DeadBits{$word}); - } - else - { Croaker("Unknown warnings category '$word'")} + if ($word eq 'FATAL') { + next; + } + elsif ($catmask = $Bits{$word}) { + $mask = ~(~$mask | $catmask | $DeadBits{$word}); + } + else + { Croaker("Unknown warnings category '$word'")} } ${^WARNING_BITS} = $mask ; @@ -389,71 +402,71 @@ my $has_level = $wanted & LEVEL ; if ($has_level) { - if (@_ != ($has_message ? 3 : 2)) { - my $sub = (caller 1)[3]; - my $syntax = $has_message - ? "category, level, 'message'" - : 'category, level'; - Croaker("Usage: $sub($syntax)"); + if (@_ != ($has_message ? 3 : 2)) { + my $sub = (caller 1)[3]; + my $syntax = $has_message + ? "category, level, 'message'" + : 'category, level'; + Croaker("Usage: $sub($syntax)"); } } elsif (not @_ == 1 || @_ == ($has_message ? 2 : 0)) { - my $sub = (caller 1)[3]; - my $syntax = $has_message ? "[category,] 'message'" : '[category]'; - Croaker("Usage: $sub($syntax)"); + my $sub = (caller 1)[3]; + my $syntax = $has_message ? "[category,] 'message'" : '[category]'; + Croaker("Usage: $sub($syntax)"); } my $message = pop if $has_message; if (@_) { - # check the category supplied. - $category = shift ; - if (my $type = ref $category) { - Croaker("not an object") - if exists $builtin_type{$type}; - $category = $type; - $isobj = 1 ; - } - $offset = $Offsets{$category}; - Croaker("Unknown warnings category '$category'") - unless defined $offset; + # check the category supplied. + $category = shift ; + if (my $type = ref $category) { + Croaker("not an object") + if exists $builtin_type{$type}; + $category = $type; + $isobj = 1 ; + } + $offset = $Offsets{$category}; + Croaker("Unknown warnings category '$category'") + unless defined $offset; } else { - $category = (caller(1))[0] ; - $offset = $Offsets{$category}; - Croaker("package '$category' not registered for warnings") - unless defined $offset ; + $category = (caller(1))[0] ; + $offset = $Offsets{$category}; + Croaker("package '$category' not registered for warnings") + unless defined $offset ; } my $i; if ($isobj) { - my $pkg; - $i = 2; - while (do { { package DB; $pkg = (caller($i++))[0] } } ) { - last unless @DB::args && $DB::args[0] =~ /^$category=/ ; - } - $i -= 2 ; + my $pkg; + $i = 2; + while (do { { package DB; $pkg = (caller($i++))[0] } } ) { + last unless @DB::args && $DB::args[0] =~ /^$category=/ ; + } + $i -= 2 ; } elsif ($has_level) { - $i = 2 + shift; + $i = 2 + shift; } else { - $i = _error_loc(); # see where Carp will allocate the error + $i = _error_loc(); # see where Carp will allocate the error } # Default to 0 if caller returns nothing. Default to $DEFAULT if it # explicitly returns undef. my(@callers_bitmask) = (caller($i))[9] ; my $callers_bitmask = - @callers_bitmask ? $callers_bitmask[0] // $DEFAULT : 0 ; + @callers_bitmask ? $callers_bitmask[0] // $DEFAULT : 0 ; length($callers_bitmask) > ($offset >> 3) or $offset = $Offsets{all}; my @results; foreach my $type (FATAL, NORMAL) { - next unless $wanted & $type; + next unless $wanted & $type; - push @results, vec($callers_bitmask, $offset + $type - 1, 1); + push @results, vec($callers_bitmask, $offset + $type - 1, 1); } # &enabled and &fatal_enabled @@ -461,19 +474,19 @@ # &warnif, and the category is neither enabled as warning nor as fatal return if ($wanted & (NORMAL | FATAL | MESSAGE)) - == (NORMAL | FATAL | MESSAGE) - && !($results[0] || $results[1]); + == (NORMAL | FATAL | MESSAGE) + && !($results[0] || $results[1]); # If we have an explicit level, bypass Carp. if ($has_level and @callers_bitmask) { - # logic copied from util.c:mess_sv - my $stuff = " at " . join " line ", (caller $i)[1,2]; - $stuff .= sprintf ", <%s> %s %d", - *${^LAST_FH}{NAME}, - ($/ eq "\n" ? "line" : "chunk"), $. - if $. && ${^LAST_FH}; - die "$message$stuff.\n" if $results[0]; - return warn "$message$stuff.\n"; + # logic copied from util.c:mess_sv + my $stuff = " at " . join " line ", (caller $i)[1,2]; + $stuff .= sprintf ", <%s> %s %d", + *${^LAST_FH}{NAME}, + ($/ eq "\n" ? "line" : "chunk"), $. + if $. && ${^LAST_FH}; + die "$message$stuff.\n" if $results[0]; + return warn "$message$stuff.\n"; } require Carp; @@ -497,15 +510,15 @@ my @names = @_; for my $name (@names) { - if (! defined $Bits{$name}) { - $Offsets{$name} = $LAST_BIT; - $Bits{$name} = _mkMask($LAST_BIT++); - $DeadBits{$name} = _mkMask($LAST_BIT++); - if (length($Bits{$name}) > length($Bits{all})) { - $Bits{all} .= "\x55"; - $DeadBits{all} .= "\xaa"; - } - } + if (! defined $Bits{$name}) { + $Offsets{$name} = $LAST_BIT; + $Bits{$name} = _mkMask($LAST_BIT++); + $DeadBits{$name} = _mkMask($LAST_BIT++); + if (length($Bits{$name}) > length($Bits{all})) { + $Bits{all} .= "\x55"; + $DeadBits{all} .= "\xaa"; + } + } } } @@ -571,7 +584,10 @@ no warnings; use warnings "all"; - no warnings "all"; + no warnings "uninitialized"; + + # or equivalent to those last two ... + use warnings qw(all -uninitialized); use warnings::register; if (warnings::enabled()) { @@ -620,17 +636,17 @@ For example, consider the code below: use warnings; - my @a; + my @x; { no warnings; - my $b = @a[0]; + my $y = @x[0]; } - my $c = @a[0]; + my $z = @x[0]; The code in the enclosing block has warnings enabled, but the inner block has them disabled. In this case that means the assignment to the -scalar C<$c> will trip the C<"Scalar value @a[0] better written as $a[0]"> -warning, but the assignment to the scalar C<$b> will not. +scalar C<$z> will trip the C<"Scalar value @x[0] better written as $x[0]"> +warning, but the assignment to the scalar C<$y> will not. =head2 Default Warnings and Optional Warnings @@ -642,22 +658,57 @@ For example, the code below would always produce an C<"isn't numeric"> warning about the "2:". - my $a = "2:" + 3; + my $x = "2:" + 3; With the introduction of lexical warnings, mandatory warnings now become I warnings. The difference is that although the previously mandatory warnings are still enabled by default, they can then be subsequently enabled or disabled with the lexical warning pragma. For example, in the code below, an C<"isn't numeric"> warning will only -be reported for the C<$a> variable. +be reported for the C<$x> variable. - my $a = "2:" + 3; + my $x = "2:" + 3; no warnings; - my $b = "2:" + 3; + my $y = "2:" + 3; Note that neither the B<-w> flag or the C<$^W> can be used to disable/enable default warnings. They are still mandatory in this case. +=head2 "Negative warnings" + +As a convenience, you can (as of Perl 5.34) pass arguments to the +C method both positively and negatively. Negative warnings +are those with a C<-> sign prepended to their names; positive warnings +are anything else. This lets you turn on some warnings and turn off +others in one command. So, assuming that you've already turned on a +bunch of warnings but want to tweak them a bit in some block, you can +do this: + + { + use warnings qw(uninitialized -redefine); + ... + } + +which is equivalent to: + + { + use warnings qw(uninitialized); + no warnings qw(redefine); + ... + } + +The argument list is processed in the order you specify. So, for example, if you +don't want to be warned about use of experimental features, except for C +that you really dislike, you can say this: + + use warnings qw(all -experimental experimental::somefeature); + +which is equivalent to: + + use warnings 'all'; + no warnings 'experimental'; + use warnings 'experimental::somefeature'; + =head2 What's wrong with B<-w> and C<$^W> Although very useful, the big problem with using B<-w> on the command @@ -673,20 +724,20 @@ { local ($^W) = 0; - my $a =+ 2; - my $b; chop $b; + my $x =+ 2; + my $y; chop $y; } When this code is run with the B<-w> flag, a warning will be produced -for the C<$a> line: C<"Reversed += operator">. +for the C<$x> line: C<"Reversed += operator">. The problem is that Perl has both compile-time and run-time warnings. To disable compile-time warnings you need to rewrite the code like this: { BEGIN { $^W = 0 } - my $a =+ 2; - my $b; chop $b; + my $x =+ 2; + my $y; chop $y; } And note that unlike the first example, this will permanently set C<$^W> @@ -701,7 +752,7 @@ sub doit { - my $b; chop $b; + my $y; chop $y; } doit(); @@ -727,7 +778,7 @@ X<-w> This is the existing flag. If the lexical warnings pragma is B -used in any of you code, or any of the modules that you use, this flag +used in any of your code, or any of the modules that you use, this flag will enable warnings everywhere. See L for details of how this flag interacts with lexical warnings. @@ -842,6 +893,8 @@ | | | +- experimental::smartmatch | | + | +- experimental::try + | | | +- experimental::uniprop_wildcards | | | +- experimental::vlb @@ -1006,7 +1059,7 @@ a warnings subset that the module's authors believe is relatively safe to fatalize. -B users of FATAL warnings, especially those using +B Users of FATAL warnings, especially those using C<< FATAL => 'all' >>, should be fully aware that they are risking future portability of their programs by doing so. Perl makes absolutely no commitments to not introduce new warnings or warnings categories in the @@ -1074,6 +1127,9 @@ use v5.20; # Perl 5.20 or greater is required for the following use warnings 'FATAL'; # short form of "use warnings FATAL => 'all';" +However, you should still heed the guidance earlier in this section against +using C 'all';>. + If you want your program to be compatible with versions of Perl before 5.20, you must use C<< use warnings FATAL => 'all'; >> instead. (In previous versions of Perl, the behavior of the statements @@ -1215,12 +1271,12 @@ use Original; use Derived; use warnings 'Derived'; - my $a = Original->new(); - $a->doit(1); - my $b = Derived->new(); - $a->doit(1); + my $x = Original->new(); + $x->doit(1); + my $y = Derived->new(); + $x->doit(1); -When this code is run only the C object, C<$b>, will generate +When this code is run only the C object, C<$y>, will generate a warning. Odd numbers are unsafe at main.pl line 7 diff -Nru perl-5.32.1/locale.c perl-5.34.0/locale.c --- perl-5.32.1/locale.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/locale.c 2021-05-04 06:52:48.000000000 +0000 @@ -60,7 +60,7 @@ /* If the environment says to, we can output debugging information during * initialization. This is done before option parsing, and before any thread * creation, so can be a file-level static */ -#if ! defined(DEBUGGING) || defined(PERL_GLOBAL_STRUCT) +#if ! defined(DEBUGGING) # define debug_initialization 0 # define DEBUG_INITIALIZATION_set(v) #else @@ -142,21 +142,21 @@ PERL_ARGS_ASSERT_STDIZE_LOCALE; if (s) { - const char * const t = strchr(s, '.'); - okay = FALSE; - if (t) { - const char * const u = strchr(t, '\n'); - if (u && (u[1] == 0)) { - const STRLEN len = u - s; - Move(s + 1, locs, len, char); - locs[len] = 0; - okay = TRUE; - } - } + const char * const t = strchr(s, '.'); + okay = FALSE; + if (t) { + const char * const u = strchr(t, '\n'); + if (u && (u[1] == 0)) { + const STRLEN len = u - s; + Move(s + 1, locs, len, char); + locs[len] = 0; + okay = TRUE; + } + } } if (!okay) - Perl_croak(aTHX_ "Can't fix broken locale name \"%s\"", locs); + Perl_croak(aTHX_ "Can't fix broken locale name \"%s\"", locs); return locs; } @@ -200,6 +200,12 @@ # ifdef USE_LOCALE_TELEPHONE LC_TELEPHONE, # endif +# ifdef USE_LOCALE_SYNTAX + LC_SYNTAX, +# endif +# ifdef USE_LOCALE_TOD + LC_TOD, +# endif # ifdef LC_ALL LC_ALL, # endif @@ -245,6 +251,12 @@ # ifdef USE_LOCALE_TELEPHONE "LC_TELEPHONE", # endif +# ifdef USE_LOCALE_SYNTAX + "LC_SYNTAX", +# endif +# ifdef USE_LOCALE_TOD + "LC_TOD", +# endif # ifdef LC_ALL "LC_ALL", # endif @@ -384,8 +396,20 @@ # else # define _DUMMY_TELEPHONE _DUMMY_PAPER # endif +# ifdef USE_LOCALE_SYNTAX +# define LC_SYNTAX_INDEX _DUMMY_TELEPHONE + 1 +# define _DUMMY_SYNTAX LC_SYNTAX_INDEX +# else +# define _DUMMY_SYNTAX _DUMMY_TELEPHONE +# endif +# ifdef USE_LOCALE_TOD +# define LC_TOD_INDEX _DUMMY_SYNTAX + 1 +# define _DUMMY_TOD LC_TOD_INDEX +# else +# define _DUMMY_TOD _DUMMY_SYNTAX +# endif # ifdef LC_ALL -# define LC_ALL_INDEX _DUMMY_TELEPHONE + 1 +# define LC_ALL_INDEX _DUMMY_TOD + 1 # endif #endif /* ifdef USE_LOCALE */ @@ -468,6 +492,12 @@ # ifdef USE_LOCALE_TELEPHONE LC_TELEPHONE_MASK, # endif +# ifdef USE_LOCALE_SYNTAX + LC_SYNTAX_MASK, +# endif +# ifdef USE_LOCALE_TOD + LC_TOD_MASK, +# endif /* LC_ALL can't be turned off by a Configure * option, and in Posix 2008, should always be * here, so compile it in unconditionally. @@ -606,11 +636,12 @@ /* If this assert fails, adjust the size of curlocales in intrpvar.h */ STATIC_ASSERT_STMT(C_ARRAY_LENGTH(PL_curlocales) > LC_ALL_INDEX); -# if defined(_NL_LOCALE_NAME) \ - && defined(DEBUGGING) \ +# if defined(_NL_LOCALE_NAME) \ + && defined(DEBUGGING) \ + /* On systems that accept any locale name, the real underlying \ + * locale is often returned by this internal function, so we \ + * can't use it */ \ && ! defined(SETLOCALE_ACCEPTS_ANY_LOCALE_NAME) - /* On systems that accept any locale name, the real underlying locale - * is often returned by this internal function, so we can't use it */ { /* Internal glibc for querylocale(), but doesn't handle * empty-string ("") locale properly; who knows what other @@ -1189,137 +1220,6 @@ #endif /* USE_POSIX_2008_LOCALE */ -#if 0 /* Code that was to emulate thread-safe locales on platforms that - didn't natively support them */ - -/* The way this would work is that we would keep a per-thread list of the - * correct locale for that thread. Any operation that was locale-sensitive - * would have to be changed so that it would look like this: - * - * LOCALE_LOCK; - * setlocale to the correct locale for this operation - * do operation - * LOCALE_UNLOCK - * - * This leaves the global locale in the most recently used operation's, but it - * was locked long enough to get the result. If that result is static, it - * needs to be copied before the unlock. - * - * Macros could be written like SETUP_LOCALE_DEPENDENT_OP(category) that did - * the setup, but are no-ops when not needed, and similarly, - * END_LOCALE_DEPENDENT_OP for the tear-down - * - * But every call to a locale-sensitive function would have to be changed, and - * if a module didn't cooperate by using the mutex, things would break. - * - * This code was abandoned before being completed or tested, and is left as-is -*/ - -# define do_setlocale_c(cat, locale) locking_setlocale(cat, locale, cat ## _INDEX, TRUE) -# define do_setlocale_r(cat, locale) locking_setlocale(cat, locale, 0, FALSE) - -STATIC char * -S_locking_setlocale(pTHX_ - const int category, - const char * locale, - int index, - const bool is_index_valid - ) -{ - /* This function kind of performs a setlocale() on just the current thread; - * thus it is kind of thread-safe. It does this by keeping a thread-level - * array of the current locales for each category. Every time a locale is - * switched to, it does the switch globally, but updates the thread's - * array. A query as to what the current locale is just returns the - * appropriate element from the array, and doesn't actually call the system - * setlocale(). The saving into the array is done in an uninterruptible - * section of code, so is unaffected by whatever any other threads might be - * doing. - * - * All locale-sensitive operations must work by first starting a critical - * section, then switching to the thread's locale as kept by this function, - * and then doing the operation, then ending the critical section. Thus, - * each gets done in the appropriate locale. simulating thread-safety. - * - * This function takes the same parameters, 'category' and 'locale', that - * the regular setlocale() function does, but it also takes two additional - * ones. This is because as described earlier. If we know on input the - * index corresponding to the category into the array where we store the - * current locales, we don't have to calculate it. If the caller knows at - * compile time what the index is, it can pass it, setting - * 'is_index_valid' to TRUE; otherwise the index parameter is ignored. - * - */ - - /* If the input index might be incorrect, calculate the correct one */ - if (! is_index_valid) { - unsigned int i; - - if (DEBUG_Lv_TEST || debug_initialization) { - PerlIO_printf(Perl_debug_log, "%s:%d: converting category %d to index\n", __FILE__, __LINE__, category); - } - - for (i = 0; i <= LC_ALL_INDEX; i++) { - if (category == categories[i]) { - index = i; - goto found_index; - } - } - - /* Here, we don't know about this category, so can't handle it. - * XXX best we can do is to unsafely set this - * XXX warning */ - - return my_setlocale(category, locale); - - found_index: ; - - if (DEBUG_Lv_TEST || debug_initialization) { - PerlIO_printf(Perl_debug_log, "%s:%d: index is 0x%x\n", __FILE__, __LINE__, index); - } - } - - /* For a query, just return what's in our records */ - if (new_locale == NULL) { - return curlocales[index]; - } - - - /* Otherwise, we need to do the switch, and save the result, all in a - * critical section */ - - Safefree(curlocales[[index]]); - - /* It might be that this is called from an already-locked section of code. - * We would have to detect and skip the LOCK/UNLOCK if so */ - LOCALE_LOCK; - - curlocales[index] = savepv(my_setlocale(category, new_locale)); - - if (strEQ(new_locale, "")) { - -#ifdef LC_ALL - - /* The locale values come from the environment, and may not all be the - * same, so for LC_ALL, we have to update all the others, while the - * mutex is still locked */ - - if (category == LC_ALL) { - unsigned int i; - for (i = 0; i < LC_ALL_INDEX) { - curlocales[i] = my_setlocale(categories[i], NULL); - } - } - } - -#endif - - LOCALE_UNLOCK; - - return curlocales[index]; -} - -#endif #ifdef USE_LOCALE STATIC void @@ -1409,12 +1309,12 @@ char *save_newnum; if (! newnum) { - Safefree(PL_numeric_name); - PL_numeric_name = NULL; - PL_numeric_standard = TRUE; - PL_numeric_underlying = TRUE; - PL_numeric_underlying_is_standard = TRUE; - return; + Safefree(PL_numeric_name); + PL_numeric_name = NULL; + PL_numeric_standard = TRUE; + PL_numeric_underlying = TRUE; + PL_numeric_underlying_is_standard = TRUE; + return; } save_newnum = stdize_locale(savepv(newnum)); @@ -1437,11 +1337,11 @@ /* Save the new name if it isn't the same as the previous one, if any */ if (! PL_numeric_name || strNE(PL_numeric_name, save_newnum)) { - Safefree(PL_numeric_name); - PL_numeric_name = save_newnum; + Safefree(PL_numeric_name); + PL_numeric_name = save_newnum; } else { - Safefree(save_newnum); + Safefree(save_newnum); } PL_numeric_underlying_is_standard = PL_numeric_standard; @@ -1558,7 +1458,6 @@ * this function should be called directly only from this file and from * POSIX::setlocale() */ - dVAR; unsigned int i; /* Don't check for problems if we are suppressing the warnings */ @@ -1895,27 +1794,27 @@ * an unlikely bug */ if (! newcoll) { - if (PL_collation_name) { - ++PL_collation_ix; - Safefree(PL_collation_name); - PL_collation_name = NULL; - } - PL_collation_standard = TRUE; + if (PL_collation_name) { + ++PL_collation_ix; + Safefree(PL_collation_name); + PL_collation_name = NULL; + } + PL_collation_standard = TRUE; is_standard_collation: - PL_collxfrm_base = 0; - PL_collxfrm_mult = 2; + PL_collxfrm_base = 0; + PL_collxfrm_mult = 2; PL_in_utf8_COLLATE_locale = FALSE; PL_strxfrm_NUL_replacement = '\0'; PL_strxfrm_max_cp = 0; - return; + return; } /* If this is not the same locale as currently, set the new one up */ if (! PL_collation_name || strNE(PL_collation_name, newcoll)) { - ++PL_collation_ix; - Safefree(PL_collation_name); - PL_collation_name = stdize_locale(savepv(newcoll)); - PL_collation_standard = isNAME_C_OR_POSIX(newcoll); + ++PL_collation_ix; + Safefree(PL_collation_name); + PL_collation_name = stdize_locale(savepv(newcoll)); + PL_collation_standard = isNAME_C_OR_POSIX(newcoll); if (PL_collation_standard) { goto is_standard_collation; } @@ -1965,7 +1864,7 @@ * get it right the first time to avoid wasted expensive string * transformations. */ - { + { /* We use the string below to find how long the tranformation of it * is. Almost all locales are supersets of ASCII, or at least the * ASCII letters. We use all of them, half upper half lower, @@ -2081,7 +1980,7 @@ } # endif - } + } } #endif /* USE_LOCALE_COLLATE */ @@ -2251,9 +2150,6 @@ #endif /* - -=head1 Locale-related functions and macros - =for apidoc Perl_setlocale This is an (almost) drop-in replacement for the system L>, @@ -2499,7 +2395,7 @@ =item * The system function it replaces can have its static return buffer trashed, -not only by a subesequent call to that function, but by a C, +not only by a subsequent call to that function, but by a C, C, or other locale change. The returned buffer of this function is not changed until the next call to it, so the buffer is never in a trashed state. @@ -2593,8 +2489,7 @@ #if defined(HAS_NL_LANGINFO) /* nl_langinfo() is available. */ # if ! defined(HAS_THREAD_SAFE_NL_LANGINFO_L) \ - || ! defined(HAS_POSIX_2008_LOCALE) \ - || ! defined(DUPLOCALE) + || ! defined(HAS_POSIX_2008_LOCALE) /* Here, use plain nl_langinfo(), switching to the underlying LC_NUMERIC * for those items dependent on it. This must be copied to a buffer before @@ -2608,18 +2503,16 @@ STORE_LC_NUMERIC_FORCE_TO_UNDERLYING(); } - LOCALE_LOCK; /* Prevent interference from another thread executing - this code section (the only call to nl_langinfo in - the core) */ - + /* Prevent interference from another thread executing this code + * section. */ + NL_LANGINFO_LOCK; /* Copy to a per-thread buffer, which is also one that won't be * destroyed by a subsequent setlocale(), such as the * RESTORE_LC_NUMERIC may do just below. */ retval = save_to_buffer(nl_langinfo(item), &PL_langinfo_buf, &PL_langinfo_bufsize, 0); - - LOCALE_UNLOCK; + NL_LANGINFO_UNLOCK; if (toggle) { RESTORE_LC_NUMERIC(); @@ -2793,8 +2686,8 @@ /* We don't bother with localeconv_l() because any system that * has it is likely to also have nl_langinfo() */ - LOCALE_LOCK_V; /* Prevent interference with other threads - using localeconv() */ + LOCALECONV_LOCK; /* Prevent interference with other threads + using localeconv() */ # ifdef TS_W32_BROKEN_LOCALECONV @@ -2821,7 +2714,7 @@ || ! lc->currency_symbol || strEQ("", lc->currency_symbol)) { - LOCALE_UNLOCK_V; + LOCALECONV_UNLOCK; return ""; } @@ -2851,7 +2744,7 @@ # endif - LOCALE_UNLOCK_V; + LOCALECONV_UNLOCK; break; # ifdef TS_W32_BROKEN_LOCALECONV @@ -2924,8 +2817,8 @@ STORE_LC_NUMERIC_FORCE_TO_UNDERLYING(); } - LOCALE_LOCK_V; /* Prevent interference with other threads - using localeconv() */ + LOCALECONV_LOCK; /* Prevent interference with other threads + using localeconv() */ # ifdef TS_W32_BROKEN_LOCALECONV @@ -2977,7 +2870,7 @@ # endif - LOCALE_UNLOCK_V; + LOCALECONV_UNLOCK; if (toggle) { RESTORE_LC_NUMERIC(); @@ -3015,8 +2908,6 @@ case MON_5: case MON_6: case MON_7: case MON_8: case MON_9: case MON_10: case MON_11: case MON_12: - LOCALE_LOCK; - init_tm(&tm); /* Precaution against core dumps */ tm.tm_sec = 30; tm.tm_min = 30; @@ -3024,9 +2915,11 @@ tm.tm_year = 2017 - 1900; tm.tm_wday = 0; tm.tm_mon = 0; + + GCC_DIAG_IGNORE_STMT(-Wimplicit-fallthrough); + switch (item) { default: - LOCALE_UNLOCK; Perl_croak(aTHX_ "panic: %s: %d: switch case: %d problem", __FILE__, __LINE__, item); @@ -3113,6 +3006,8 @@ break; } + GCC_DIAG_RESTORE_STMT; + /* We can't use my_strftime() because it doesn't look at * tm_wday */ while (0 == strftime(PL_langinfo_buf, PL_langinfo_bufsize, @@ -3202,8 +3097,6 @@ * wday was chosen because its range is all a single digit. * Things like tm_sec have two digits as the minimum: '00' */ - LOCALE_UNLOCK; - retval = PL_langinfo_buf; /* If to return the format, not the value, overwrite the buffer @@ -3252,41 +3145,57 @@ * Under -DDEBUGGING, if the environment variable PERL_DEBUG_LOCALE_INIT is * set, debugging information is output. * - * This looks more complicated than it is, mainly due to the #ifdefs. + * This looks more complicated than it is, mainly due to the #ifdefs and + * error handling. + * + * Besides some asserts, data structure initialization, and specific + * platform complications, this routine is effectively just two things. + * + * a) setlocale(LC_ALL, ""); + * + * which sets LC_ALL to the values in the current environment. + * + * And for each individual category 'foo' whose value we care about: + * + * b) save_foo = setlocale(LC_foo, NULL); handle_foo(save_foo); * - * We try to set LC_ALL to the value determined by the environment. If - * there is no LC_ALL on this platform, we try the individual categories we - * know about. If this works, we are done. + * (We don't tend to care about categories like LC_PAPER, for example.) * - * But if it doesn't work, we have to do something else. We search the - * environment variables ourselves instead of relying on the system to do - * it. We look at, in order, LC_ALL, LANG, a system default locale (if we - * think there is one), and the ultimate fallback "C". This is all done in - * the same loop as above to avoid duplicating code, but it makes things - * more complex. The 'trial_locales' array is initialized with just one - * element; it causes the behavior described in the paragraph above this to - * happen. If that fails, we add elements to 'trial_locales', and do extra - * loop iterations to cause the behavior described in this paragraph. + * But there are complications. On systems without LC_ALL, it emulates + * step a) by looping through all the categories, and doing + * + * setlocale(LC_foo, ""); + * + * on each. + * + * And it has to deal with if this is an embedded perl, whose locale + * doesn't come from the environment, but has been set up by the caller. + * This is pretty simply handled: the "" in the setlocale calls is not a + * string constant, but a variable which is set to NULL in the embedded + * case. + * + * But the major complication is handling failure and doing fallback. + * There is an array, trial_locales, the elements of which are looped over + * until the locale is successfully set. The array is initialized with + * just one element, for + * setlocale(LC_ALL, $NULL_or_empty) + * If that works, as it almost always does, there's no more elements and + * the loop iterates just the once. Otherwise elements are added for each + * of the environment variables that POSIX dictates should control the + * program, in priority order, with a final one being "C". The loop is + * repeated until the first one succeeds. If all fail, we limp along with + * whatever state we got to. If there is no LC_ALL, an inner loop is run + * through all categories (making things look complex). + * + * A further complication is that Windows has an additional fallback, the + * user-default ANSI code page obtained from the operating system. This is + * added as yet another loop iteration, just before the final "C" * * On Ultrix, the locale MUST come from the environment, so there is * preliminary code to set it. I (khw) am not sure that it is necessary, * and that this couldn't be folded into the loop, but barring any real * platforms to test on, it's staying as-is - * - * A slight complication is that in embedded Perls, the locale may already - * be set-up, and we don't want to get it from the normal environment - * variables. This is handled by having a special environment variable - * indicate we're in this situation. We simply set setlocale's 2nd - * parameter to be a NULL instead of "". That indicates to setlocale that - * it is not to change anything, but to return the current value, - * effectively initializing perl's db to what the locale already is. - * - * We play the same trick with NULL if a LC_ALL succeeds. We call - * setlocale() on the individual categores with NULL to get their existing - * values for our db, instead of trying to change them. - * */ - - dVAR; + */ int ok = 1; @@ -3349,8 +3258,8 @@ DEBUG_INITIALIZATION_set(cBOOL(PerlEnv_getenv("PERL_DEBUG_LOCALE_INIT"))); # define DEBUG_LOCALE_INIT(category, locale, result) \ - STMT_START { \ - if (debug_initialization) { \ + STMT_START { \ + if (debug_initialization) { \ PerlIO_printf(Perl_debug_log, \ "%s:%d: %s\n", \ __FILE__, __LINE__, \ @@ -3358,7 +3267,7 @@ locale, \ result)); \ } \ - } STMT_END + } STMT_END /* Make sure the parallel arrays are properly set up */ # ifdef USE_LOCALE_NUMERIC @@ -3438,6 +3347,20 @@ assert(category_masks[LC_TELEPHONE_INDEX] == LC_TELEPHONE_MASK); # endif # endif +# ifdef USE_LOCALE_SYNTAX + assert(categories[LC_SYNTAX_INDEX] == LC_SYNTAX); + assert(strEQ(category_names[LC_SYNTAX_INDEX], "LC_SYNTAX")); +# ifdef USE_POSIX_2008_LOCALE + assert(category_masks[LC_SYNTAX_INDEX] == LC_SYNTAX_MASK); +# endif +# endif +# ifdef USE_LOCALE_TOD + assert(categories[LC_TOD_INDEX] == LC_TOD); + assert(strEQ(category_names[LC_TOD_INDEX], "LC_TOD")); +# ifdef USE_POSIX_2008_LOCALE + assert(category_masks[LC_TOD_INDEX] == LC_TOD_MASK); +# endif +# endif # ifdef LC_ALL assert(categories[LC_ALL_INDEX] == LC_ALL); assert(strEQ(category_names[LC_ALL_INDEX], "LC_ALL")); @@ -3617,7 +3540,7 @@ DEBUG_LOCALE_INIT(categories[j], trial_locale, curlocales[j]); } - if (! setlocale_failure) { /* All succeeded */ + if (LIKELY(! setlocale_failure)) { /* All succeeded */ break; /* Exit trial_locales loop */ } } @@ -3889,10 +3812,10 @@ This is an alternative to using the -C command line switch (the -C if present will override this). */ { - const char *p = PerlEnv_getenv("PERL_UNICODE"); - PL_unicode = p ? parse_unicode_opts(&p) : 0; - if (PL_unicode & PERL_UNICODE_UTF8CACHEASSERT_FLAG) - PL_utf8cache = -1; + const char *p = PerlEnv_getenv("PERL_UNICODE"); + PL_unicode = p ? parse_unicode_opts(&p) : 0; + if (PL_unicode & PERL_UNICODE_UTF8CACHEASSERT_FLAG) + PL_utf8cache = -1; } # endif @@ -4255,7 +4178,7 @@ if (UNLIKELY(! xbuf)) { DEBUG_L(PerlIO_printf(Perl_debug_log, "_mem_collxfrm: Couldn't malloc %zu bytes\n", xAlloc)); - goto bad; + goto bad; } /* Store the collation id */ @@ -4376,8 +4299,8 @@ if (DEBUG_Lv_TEST || debug_initialization) { PerlIO_printf(Perl_debug_log, "_mem_collxfrm required more space than previously calculated" - " for locale %s, trying again with new guess=%d+%zu\n", - PL_collation_name, (int) COLLXFRM_HDR_LEN, + " for locale %s, trying again with new guess=%zu+%zu\n", + PL_collation_name, COLLXFRM_HDR_LEN, xAlloc - COLLXFRM_HDR_LEN); } @@ -4796,7 +4719,7 @@ # if defined(HAS_MBRTOWC) && defined(USE_ITHREADS) /* Prefer this function if available, as it's reentrant */ - memset(&ps, 0, sizeof(ps));; + memzero(&ps, sizeof(ps));; PERL_UNUSED_RESULT(mbrtowc(&wc, NULL, 0, &ps)); /* Reset any shift state */ SETERRNO(0, 0); @@ -4805,12 +4728,12 @@ # else - LOCALE_LOCK; + MBTOWC_LOCK; PERL_UNUSED_RESULT(mbtowc(&wc, NULL, 0));/* Reset any shift state */ SETERRNO(0, 0); len = mbtowc(&wc, STR_WITH_LEN(REPLACEMENT_CHARACTER_UTF8)); SAVE_ERRNO; - LOCALE_UNLOCK; + MBTOWC_UNLOCK; # endif @@ -5205,7 +5128,6 @@ bool Perl__is_in_locale_category(pTHX_ const bool compiling, const int category) { - dVAR; /* Internal function which returns if we are in the scope of a pragma that * enables the locale category 'category'. 'compiling' should indicate if * this is during the compilation phase (TRUE) or not (FALSE). */ @@ -5236,7 +5158,6 @@ * to the C locale */ char *errstr; - dVAR; #ifndef USE_LOCALE_MESSAGES @@ -5265,8 +5186,7 @@ } # elif defined(USE_POSIX_2008_LOCALE) \ - && defined(HAS_STRERROR_L) \ - && defined(HAS_DUPLOCALE) + && defined(HAS_STRERROR_L) /* This function is also trivial if we don't have to worry about thread * safety and have strerror_l(), as it handles the switch of locales so we @@ -5321,13 +5241,14 @@ * same code at the same time. (On thread-safe perls, the LOCK is a * no-op.) Since this is the only place in core that changes LC_MESSAGES * (unless the user has called setlocale(), this works to prevent races. */ - LOCALE_LOCK; + SETLOCALE_LOCK; DEBUG_Lv(PerlIO_printf(Perl_debug_log, "my_strerror called with errnum %d\n", errnum)); if (! within_locale_scope) { save_locale = do_setlocale_c(LC_MESSAGES, NULL); if (! save_locale) { + SETLOCALE_UNLOCK; Perl_croak(aTHX_ "panic: %s: %d: Could not find current LC_MESSAGES locale," " errno=%d\n", __FILE__, __LINE__, errno); @@ -5341,7 +5262,19 @@ /* The setlocale() just below likely will zap 'save_locale', so * create a copy. */ save_locale = savepv(save_locale); - do_setlocale_c(LC_MESSAGES, "C"); + if (! do_setlocale_c(LC_MESSAGES, "C")) { + + /* If, for some reason, the locale change failed, we + * soldier on as best as possible under the circumstances, + * using the current locale, and clear save_locale, so we + * don't try to change back. On z/0S, all setlocale() + * calls fail after you've created a thread. This is their + * way of making sure the entire process is always a single + * locale. This means that 'use locale' is always in place + * for messages under these circumstances. */ + Safefree(save_locale); + save_locale = NULL; + } } } } /* end of ! within_locale_scope */ @@ -5357,15 +5290,16 @@ if (! within_locale_scope) { if (save_locale && ! locale_is_C) { if (! do_setlocale_c(LC_MESSAGES, save_locale)) { + SETLOCALE_UNLOCK; Perl_croak(aTHX_ - "panic: %s: %d: setlocale restore failed, errno=%d\n", - __FILE__, __LINE__, errno); + "panic: %s: %d: setlocale restore to '%s' failed, errno=%d\n", + __FILE__, __LINE__, save_locale, errno); } Safefree(save_locale); } } - LOCALE_UNLOCK; + SETLOCALE_UNLOCK; # endif /* End of doesn't have strerror_l */ # ifdef DEBUGGING @@ -5598,11 +5532,7 @@ * be overwritten by the next call, so this should be used just to * formulate a string to immediately print or savepv() on. */ - /* initialise to a non-null value to keep it out of BSS and so keep - * -DPERL_GLOBAL_STRUCT_PRIVATE happy */ - static char ret[256] = "If you can read this, thank your buggy C" - " library strlcpy(), and change your hints file" - " to undef it"; + static char ret[256]; my_strlcpy(ret, "setlocale(", sizeof(ret)); my_strlcat(ret, category_name(category), sizeof(ret)); @@ -5677,7 +5607,6 @@ # ifndef WIN32 { /* Free up */ - dVAR; locale_t cur_obj = uselocale(LC_GLOBAL_LOCALE); if (cur_obj != LC_GLOBAL_LOCALE && cur_obj != PL_C_locale_obj) { freelocale(cur_obj); diff -Nru perl-5.32.1/makedef.pl perl-5.34.0/makedef.pl --- perl-5.32.1/makedef.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/makedef.pl 2021-01-20 23:04:44.000000000 +0000 @@ -219,9 +219,7 @@ if ($ARGS{PLATFORM} ne 'os2') { ++$skip{$_} foreach qw( - PL_cryptseen PL_opsave - Perl_GetVars Perl_dump_fds Perl_my_bcopy Perl_my_bzero @@ -363,34 +361,6 @@ ++$skip{PL_user_def_props_aTHX}; } -# USE_5005THREADS symbols. Kept as reference for easier removal -++$skip{$_} foreach qw( - PL_sv_mutex - PL_strtab_mutex - PL_svref_mutex - PL_cred_mutex - PL_eval_mutex - PL_fdpid_mutex - PL_sv_lock_mutex - PL_eval_cond - PL_eval_owner - PL_threads_mutex - PL_nthreads - PL_nthreads_cond - PL_threadnum - PL_threadsv_names - PL_thrsv - PL_vtbl_mutex - Perl_condpair_magic - Perl_new_struct_thread - Perl_per_thread_magicals - Perl_thread_create - Perl_find_threadsv - Perl_unlock_condpair - Perl_magic_mutexfree - Perl_sv_lock - ); - unless ($define{'USE_ITHREADS'}) { ++$skip{$_} foreach qw( PL_keyword_plugin_mutex @@ -485,9 +455,6 @@ if ($define{USE_THREAD_SAFE_LOCALE}) { ++$skip{PL_lc_numeric_mutex}; ++$skip{PL_lc_numeric_mutex_depth}; - if (! $define{TS_W32_BROKEN_LOCALECONV}) { - ++$skip{PL_locale_mutex}; - } } unless ($define{'USE_DTRACE'}) { @@ -499,14 +466,6 @@ ); } -unless ($define{'PERL_NEED_APPCTX'}) { - ++$skip{PL_appctx}; -} - -unless ($define{'PERL_NEED_TIMESBASE'}) { - ++$skip{PL_timesbase}; -} - unless ($define{'DEBUG_LEAKING_SCALARS'}) { ++$skip{PL_sv_serial}; } @@ -527,6 +486,10 @@ ++$skip{PL_memory_debug_header}; } +unless ($define{'PERL_MEM_LOG'}) { + ++$skip{PL_mem_log}; +} + unless ($define{'MULTIPLICITY'}) { ++$skip{$_} foreach qw( PL_interp_size @@ -538,18 +501,6 @@ ); } -unless ($define{'PERL_GLOBAL_STRUCT'}) { - ++$skip{PL_global_struct_size}; -} - -unless ($define{'PERL_GLOBAL_STRUCT_PRIVATE'}) { - ++$skip{$_} foreach qw( - PL_my_cxt_keys - PL_my_cxt_keys_size - Perl_my_cxt_index - ); -} - unless ($define{HAS_MMAP}) { ++$skip{PL_mmap_page_size}; } @@ -623,18 +574,6 @@ ++$skip{Perl_signbit}; } -if ($define{'PERL_GLOBAL_STRUCT'}) { - readvar('perlvars.h', \%skip); - # This seems like the least ugly way to cope with the fact that PL_sh_path - # is mentioned in perlvar.h and globvar.sym, and always exported. - delete $skip{PL_sh_path}; - ++$export{Perl_GetVars}; - try_symbols(qw(PL_Vars PL_VarsPtr)) - unless $ARGS{CCTYPE} eq 'GCC' || $define{PERL_GLOBAL_STRUCT_PRIVATE}; -} else { - ++$skip{$_} foreach qw(Perl_init_global_struct Perl_free_global_struct); -} - ++$skip{PL_op_exec_cnt} unless $define{PERL_TRACE_OPS}; @@ -796,20 +735,9 @@ # variables -if ($define{'MULTIPLICITY'} && $define{PERL_GLOBAL_STRUCT}) { - readvar('perlvars.h', \%export, sub { "Perl_" . $_[1] . $_[2] . "_ptr" }); - # XXX AIX seems to want the perlvars.h symbols, for some reason - if ($ARGS{PLATFORM} eq 'aix' or $ARGS{PLATFORM} eq 'os2') { # OS/2 needs PL_thr_key - readvar('perlvars.h', \%export); - } -} -else { - unless ($define{'PERL_GLOBAL_STRUCT'}) { - readvar('perlvars.h', \%export); - } - unless ($define{MULTIPLICITY}) { - readvar('intrpvar.h', \%export); - } +readvar('perlvars.h', \%export); +unless ($define{MULTIPLICITY}) { + readvar('intrpvar.h', \%export); } # Oddities from PerlIO @@ -831,7 +759,6 @@ win32_get_childenv win32_spawnvp Perl_init_os_extras - Perl_thread_create Perl_win32_init Perl_win32_term RunPerl @@ -984,6 +911,9 @@ win32_puts win32_getchar win32_putchar + win32_symlink + win32_lstat + win32_readlink )); } elsif ($ARGS{PLATFORM} eq 'vms') { @@ -1143,7 +1073,6 @@ elsif ($ARGS{PLATFORM} eq 'netware') { try_symbols(qw( Perl_init_os_extras - Perl_thread_create Perl_nw5_init RunPerl AllocStdPerl diff -Nru perl-5.32.1/make_ext.pl perl-5.34.0/make_ext.pl --- perl-5.32.1/make_ext.pl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/make_ext.pl 2021-02-21 11:01:31.000000000 +0000 @@ -36,10 +36,6 @@ # # make_ext.pl "MAKE=nmake -nologo" --dir=..\ext --target=clean # -# make_ext.pl MAKE=dmake --dir=..\ext -# -# make_ext.pl MAKE=dmake --dir=..\ext --target=clean -# # Will skip building extensions which are marked with an '!' char. # Mostly because they still not ported to specified platform. # @@ -168,7 +164,7 @@ $ENV{PATH} = "$topdir;$topdir\\win32\\bin;$ENV{PATH}"; my $pl2bat = "$topdir\\win32\\bin\\pl2bat"; unless (-f "$pl2bat.bat") { - my @args = ($perl, "-I$topdir\\lib", ("$pl2bat.pl") x 2); + my @args = ($perl, "-I$topdir\\lib", "-I$topdir\\cpan\\ExtUtils-PL2Bat\\lib", ("$pl2bat.pl") x 2); print "@args\n" if $verbose; system(@args) unless IS_CROSS; } @@ -659,6 +655,7 @@ |README |README\.patching |README\.release + |\.gitignore )\z/xi; # /i to deal with case munging systems. if ($leaf eq "$last.pm") { ++$has_top; diff -Nru perl-5.32.1/Makefile.micro perl-5.34.0/Makefile.micro --- perl-5.32.1/Makefile.micro 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/Makefile.micro 2020-10-04 22:17:12.000000000 +0000 @@ -21,7 +21,7 @@ uregcomp$(_O) uregexec$(_O) urun$(_O) \ uscope$(_O) usv$(_O) utaint$(_O) utime64$(_O) utoke$(_O) \ unumeric$(_O) ulocale$(_O) umathoms$(_O) \ - uuniversal$(_O) uutf8$(_O) uutil$(_O) uperlapi$(_O) ukeywords$(_O) + uuniversal$(_O) uutf8$(_O) uutil$(_O) ukeywords$(_O) microperl: $(O) $(LD) -o $@ $(O) $(LDFLAGS) $(LIBS) @@ -81,7 +81,7 @@ udump$(_O): $(HE) dump.c regcomp.h regnodes.h $(CC) $(CCFLAGS) -o $@ $(CFLAGS) dump.c -uglobals$(_O): $(H) globals.c INTERN.h perlapi.h $(generated_headers) +uglobals$(_O): $(H) globals.c INTERN.h $(generated_headers) $(CC) $(CCFLAGS) -o $@ $(CFLAGS) globals.c ugv$(_O): $(HE) gv.c @@ -180,9 +180,6 @@ uutil$(_O): $(HE) util.c $(CC) $(CCFLAGS) -o $@ $(CFLAGS) util.c -uperlapi$(_O): $(HE) perlapi.c perlapi.h - $(CC) $(CCFLAGS) -o $@ $(CFLAGS) perlapi.c - uuudmap.h umg_data.h: ubitcount.h ubitcount.h: ugenerate_uudmap$(_X) diff -Nru perl-5.32.1/Makefile.SH perl-5.34.0/Makefile.SH --- perl-5.32.1/Makefile.SH 2020-12-18 12:43:54.000000000 +0000 +++ perl-5.34.0/Makefile.SH 2021-05-04 23:28:28.000000000 +0000 @@ -523,14 +523,14 @@ c1 = av.c scope.c op.c doop.c doio.c dump.c gv.c hv.c mg.c reentr.c mro_core.c perl.c c2 = perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c sv.c c3 = taint.c toke.c util.c deb.c run.c universal.c pad.c globals.c keywords.c -c4 = perlio.c perlapi.c numeric.c mathoms.c locale.c pp_pack.c pp_sort.c caretx.c dquote.c time64.c +c4 = perlio.c numeric.c mathoms.c locale.c pp_pack.c pp_sort.c caretx.c dquote.c time64.c c5 = $(mallocsrc) c = $(c1) $(c2) $(c3) $(c4) $(c5) miniperlmain.c opmini.c perlmini.c obj1 = $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT) mro_core$(OBJ_EXT) keywords$(OBJ_EXT) obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT) -obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT) caretx$(OBJ_EXT) dquote$(OBJ_EXT) time64$(OBJ_EXT) +obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT) caretx$(OBJ_EXT) dquote$(OBJ_EXT) time64$(OBJ_EXT) # split the objects into 3 exclusive sets: those used by both miniperl and # perl, and those used by just one or the other. Doesn't include the @@ -589,7 +589,7 @@ $spitshell >>$Makefile <<'!NO!SUBS!' -perltoc_pod_prereqs = extra.pods pod/perl5321delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod +perltoc_pod_prereqs = extra.pods pod/perl5340delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs) generated_headers = uudmap.h bitcount.h mg_data.h @@ -1153,9 +1153,9 @@ pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST $(MINIPERL) pod/perlmodlib.PL -q -pod/perl5321delta.pod: pod/perldelta.pod - $(RMS) pod/perl5321delta.pod - $(LNS) perldelta.pod pod/perl5321delta.pod +pod/perl5340delta.pod: pod/perldelta.pod + $(RMS) pod/perl5340delta.pod + $(LNS) perldelta.pod pod/perl5340delta.pod extra.pods: $(MINIPERL_EXE) -@test ! -f extra.pods || rm -f `cat extra.pods` @@ -1274,7 +1274,7 @@ CHMOD_W = chmod +w # The following files are generated automatically -# embed.pl: proto.h embed.h embedvar.h perlapi.h perlapi.c +# embed.pl: proto.h embed.h embedvar.h # opcode.pl: opcode.h opnames.h pp_proto.h # regcomp.pl: regnodes.h # warnings.pl: warnings.h lib/warnings.pm @@ -1439,28 +1439,28 @@ -rmdir lib/Test2/IPC/Driver lib/Test2/IPC lib/Test2/Hub/Interceptor -rmdir lib/Test2/Hub lib/Test2/Formatter lib/Test2/EventFacet/Info -rmdir lib/Test2/EventFacet lib/Test2/Event/TAP lib/Test2/Event - -rmdir lib/Test2/API lib/Test2 lib/Test/use lib/Test/Tester - -rmdir lib/Test/Builder/Tester lib/Test/Builder/IO lib/Test/Builder - -rmdir lib/Test lib/Term lib/TAP/Parser/YAMLish - -rmdir lib/TAP/Parser/SourceHandler lib/TAP/Parser/Scheduler - -rmdir lib/TAP/Parser/Result lib/TAP/Parser/Iterator lib/TAP/Parser - -rmdir lib/TAP/Harness lib/TAP/Formatter/File - -rmdir lib/TAP/Formatter/Console lib/TAP/Formatter lib/TAP - -rmdir lib/Sys/Syslog lib/Sys lib/Sub lib/Search lib/Scalar - -rmdir lib/Pod/Text lib/Pod/Simple lib/Pod/Perldoc lib/PerlIO/via - -rmdir lib/PerlIO lib/Perl lib/Parse/CPAN lib/Parse lib/Params - -rmdir lib/Net/FTP lib/Module/Load lib/Module/CoreList lib/Module - -rmdir lib/Memoize lib/Math/BigInt lib/Math/BigFloat lib/Math lib/MIME - -rmdir lib/Locale/Maketext lib/Locale lib/List/Util lib/List - -rmdir lib/JSON/PP lib/JSON lib/IPC lib/IO/Uncompress/Adapter - -rmdir lib/IO/Uncompress lib/IO/Socket lib/IO/Compress/Zlib - -rmdir lib/IO/Compress/Zip lib/IO/Compress/Gzip lib/IO/Compress/Base - -rmdir lib/IO/Compress/Adapter lib/IO/Compress lib/IO - -rmdir lib/I18N/LangTags lib/I18N lib/Hash/Util lib/Hash lib/HTTP - -rmdir lib/Filter/Util lib/Filter lib/File/Spec lib/ExtUtils/Typemaps - -rmdir lib/ExtUtils/ParseXS lib/ExtUtils/MakeMaker/version - -rmdir lib/ExtUtils/MakeMaker lib/ExtUtils/Liblist - -rmdir lib/ExtUtils/Constant lib/ExtUtils/Command + -rmdir lib/Test2/API/InterceptResult lib/Test2/API lib/Test2 + -rmdir lib/Test/use lib/Test/Tester lib/Test/Builder/Tester + -rmdir lib/Test/Builder/IO lib/Test/Builder lib/Test lib/Term + -rmdir lib/TAP/Parser/YAMLish lib/TAP/Parser/SourceHandler + -rmdir lib/TAP/Parser/Scheduler lib/TAP/Parser/Result + -rmdir lib/TAP/Parser/Iterator lib/TAP/Parser lib/TAP/Harness + -rmdir lib/TAP/Formatter/File lib/TAP/Formatter/Console + -rmdir lib/TAP/Formatter lib/TAP lib/Sys/Syslog lib/Sys lib/Sub + -rmdir lib/Search lib/Scalar lib/Pod/Text lib/Pod/Simple + -rmdir lib/Pod/Perldoc lib/PerlIO/via lib/PerlIO lib/Perl + -rmdir lib/Parse/CPAN lib/Parse lib/Params lib/Net/FTP lib/Module/Load + -rmdir lib/Module/CoreList lib/Module lib/Memoize lib/Math/BigInt + -rmdir lib/Math/BigFloat lib/Math lib/MIME lib/Locale/Maketext + -rmdir lib/Locale lib/List/Util lib/List lib/JSON/PP lib/JSON lib/IPC + -rmdir lib/IO/Uncompress/Adapter lib/IO/Uncompress lib/IO/Socket + -rmdir lib/IO/Compress/Zlib lib/IO/Compress/Zip lib/IO/Compress/Gzip + -rmdir lib/IO/Compress/Base lib/IO/Compress/Adapter lib/IO/Compress + -rmdir lib/IO lib/I18N/LangTags lib/I18N lib/Hash/Util lib/Hash + -rmdir lib/HTTP lib/Filter/Util lib/Filter lib/File/Spec + -rmdir lib/ExtUtils/Typemaps lib/ExtUtils/ParseXS + -rmdir lib/ExtUtils/MakeMaker/version lib/ExtUtils/MakeMaker + -rmdir lib/ExtUtils/Liblist lib/ExtUtils/Constant lib/ExtUtils/Command -rmdir lib/ExtUtils/CBuilder/Platform/Windows -rmdir lib/ExtUtils/CBuilder/Platform lib/ExtUtils/CBuilder -rmdir lib/Exporter lib/Encode/Unicode lib/Encode/MIME/Header diff -Nru perl-5.32.1/malloc.c perl-5.34.0/malloc.c --- perl-5.32.1/malloc.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/malloc.c 2021-01-20 23:04:44.000000000 +0000 @@ -149,13 +149,13 @@ # Do not allow configuration of runtime options via $ENV{PERL_MALLOC_OPT} NO_PERL_MALLOC_ENV undef - [The variable consists of ;-separated parts of the form CODE=VALUE - with 1-character codes F, M, f, A, P, G, d, a, c for runtime - configuration of FIRST_SBRK, MIN_SBRK, MIN_SBRK_FRAC1000, - SBRK_ALLOW_FAILURES, SBRK_FAILURE_PRICE, sbrk_goodness, - filldead, fillalive, fillcheck. The last 3 are for DEBUGGING - build, and allow switching the tests for free()ed memory read, - uninit memory reads, and free()ed memory write.] + [The variable consists of ;-separated parts of the form CODE=VALUE + with 1-character codes F, M, f, A, P, G, d, a, c for runtime + configuration of FIRST_SBRK, MIN_SBRK, MIN_SBRK_FRAC1000, + SBRK_ALLOW_FAILURES, SBRK_FAILURE_PRICE, sbrk_goodness, + filldead, fillalive, fillcheck. The last 3 are for DEBUGGING + build, and allow switching the tests for free()ed memory read, + uninit memory reads, and free()ed memory write.] This implementation assumes that calling PerlIO_printf() does not result in any memory allocation calls (used during a panic). @@ -281,14 +281,14 @@ # undef DEBUG_m # define DEBUG_m(a) \ STMT_START { \ - if (PERL_MAYBE_ALIVE && PERL_GET_THX) { \ - dTHX; \ - if (DEBUG_m_TEST) { \ - PL_debug &= ~DEBUG_m_FLAG; \ - a; \ - PL_debug |= DEBUG_m_FLAG; \ - } \ - } \ + if (PERL_MAYBE_ALIVE && PERL_GET_THX) { \ + dTHX; \ + if (DEBUG_m_TEST) { \ + PL_debug &= ~DEBUG_m_FLAG; \ + a; \ + PL_debug |= DEBUG_m_FLAG; \ + } \ + } \ } STMT_END #endif @@ -389,27 +389,27 @@ * plus the range checking words, and the header word MINUS ONE. */ union overhead { - union overhead *ov_next; /* when free */ + union overhead *ov_next; /* when free */ #if MEM_ALIGNBYTES > 4 - double strut; /* alignment problems */ + double strut; /* alignment problems */ # if MEM_ALIGNBYTES > 8 - char sstrut[MEM_ALIGNBYTES]; /* for the sizing */ + char sstrut[MEM_ALIGNBYTES]; /* for the sizing */ # endif #endif - struct { + struct { /* * Keep the ovu_index and ovu_magic in this order, having a char * field first gives alignment indigestion in some systems, such as * MachTen. */ - u_char ovu_index; /* bucket # */ - u_char ovu_magic; /* magic number */ + u_char ovu_index; /* bucket # */ + u_char ovu_magic; /* magic number */ #ifdef RCHECK - /* Subtract one to fit into u_short for an extra bucket */ - u_short ovu_size; /* block size (requested + overhead - 1) */ - u_int ovu_rmagic; /* range magic number */ + /* Subtract one to fit into u_short for an extra bucket */ + u_short ovu_size; /* block size (requested + overhead - 1) */ + u_int ovu_rmagic; /* range magic number */ #endif - } ovu; + } ovu; #define ov_magic ovu.ovu_magic #define ov_index ovu.ovu_index #define ov_size ovu.ovu_size @@ -466,10 +466,10 @@ }; # define BUCKET_SIZE_NO_SURPLUS(i) ((i) % 2 ? buck_size[i] : (1 << ((i) >> BUCKET_POW2_SHIFT))) # define BUCKET_SIZE_REAL(i) ((i) <= MAX_BUCKET_BY_TABLE \ - ? ((size_t)buck_size[i]) \ - : ((((size_t)1) << ((i) >> BUCKET_POW2_SHIFT)) \ - - MEM_OVERHEAD(i) \ - + POW2_OPTIMIZE_SURPLUS(i))) + ? ((size_t)buck_size[i]) \ + : ((((size_t)1) << ((i) >> BUCKET_POW2_SHIFT)) \ + - MEM_OVERHEAD(i) \ + + POW2_OPTIMIZE_SURPLUS(i))) #else # define BUCKET_SIZE_NO_SURPLUS(i) (((size_t)1) << ((i) >> BUCKET_POW2_SHIFT)) # define BUCKET_SIZE(i) (BUCKET_SIZE_NO_SURPLUS(i) + POW2_OPTIMIZE_SURPLUS(i)) @@ -596,15 +596,15 @@ # define MAX_PACKED_POW2 6 # define MAX_PACKED (MAX_PACKED_POW2 * BUCKETS_PER_POW2 + BUCKET_POW2_SHIFT) # define MAX_POW2_ALGO ((1<<(MAX_PACKED_POW2 + 1)) - M_OVERHEAD) -# define TWOK_MASK ((1<> \ - (bucket>>BUCKET_POW2_SHIFT)) + \ - (bucket >= MIN_NEEDS_SHIFT ? 1 : 0))) + (TWOK_SHIFT(block)>> \ + (bucket>>BUCKET_POW2_SHIFT)) + \ + (bucket >= MIN_NEEDS_SHIFT ? 1 : 0))) /* A bucket can have a shift smaller than it size, we need to shift its magic number so it will not overwrite index: */ # ifdef BUCKETS_ROOT2 @@ -618,8 +618,8 @@ #ifdef IGNORE_SMALL_BAD_FREE #define FIRST_BUCKET_WITH_CHECK (6 * BUCKETS_PER_POW2) /* 64 */ # define N_BLKS(bucket) ( (bucket) < FIRST_BUCKET_WITH_CHECK \ - ? ((1<>LOG_OF_MIN_ARENA) + 1)<= BIG_SIZE - && (!emergency_buffer_last_req || - (size < (MEM_SIZE)emergency_buffer_last_req))) { - /* Give the possibility to recover, but avoid an infinite cycle. */ - MALLOC_UNLOCK; - emergency_buffer_last_req = size; - emergency_sbrk_croak("Out of memory during \"large\" request for %" UVuf + && (!emergency_buffer_last_req || + (size < (MEM_SIZE)emergency_buffer_last_req))) { + /* Give the possibility to recover, but avoid an infinite cycle. */ + MALLOC_UNLOCK; + emergency_buffer_last_req = size; + emergency_sbrk_croak("Out of memory during \"large\" request for %" UVuf " bytes, total sbrk() is %" UVuf " bytes", (UV)size, (UV)(goodsbrk + sbrk_slack)); } if ((MEM_SIZE)emergency_buffer_size >= rsize) { - char *old = emergency_buffer; - - emergency_buffer_size -= rsize; - emergency_buffer += rsize; - return old; + char *old = emergency_buffer; + + emergency_buffer_size -= rsize; + emergency_buffer += rsize; + return old; } else { - /* First offense, give a possibility to recover by dieing. */ - /* No malloc involved here: */ - IV Size; - char *pv = GET_EMERGENCY_BUFFER(&Size); - int have = 0; - - if (emergency_buffer_size) { - add_to_chain(emergency_buffer, emergency_buffer_size, 0); - emergency_buffer_size = 0; - emergency_buffer = NULL; - have = 1; - } - - if (!pv) - pv = PERL_GET_EMERGENCY_BUFFER(&Size); - if (!pv) { - if (have) - goto do_croak; - return (char *)-1; /* Now die die die... */ - } - - /* Check alignment: */ - if (PTR2UV(pv) & (NEEDED_ALIGNMENT - 1)) { - dTHX; - - PerlIO_puts(PerlIO_stderr(),"Bad alignment of $^M!\n"); - return (char *)-1; /* die die die */ - } + /* First offense, give a possibility to recover by dieing. */ + /* No malloc involved here: */ + IV Size; + char *pv = GET_EMERGENCY_BUFFER(&Size); + int have = 0; + + if (emergency_buffer_size) { + add_to_chain(emergency_buffer, emergency_buffer_size, 0); + emergency_buffer_size = 0; + emergency_buffer = NULL; + have = 1; + } + + if (!pv) + pv = PERL_GET_EMERGENCY_BUFFER(&Size); + if (!pv) { + if (have) + goto do_croak; + return (char *)-1; /* Now die die die... */ + } + + /* Check alignment: */ + if (PTR2UV(pv) & (NEEDED_ALIGNMENT - 1)) { + dTHX; + + PerlIO_puts(PerlIO_stderr(),"Bad alignment of $^M!\n"); + return (char *)-1; /* die die die */ + } - emergency_buffer = pv; - emergency_buffer_size = Size; + emergency_buffer = pv; + emergency_buffer_size = Size; } do_croak: MALLOC_UNLOCK; @@ -1064,35 +1064,34 @@ static void botch(const char *diag, const char *s, const char *file, int line) { - dVAR; dTHX; if (!(PERL_MAYBE_ALIVE && PERL_GET_THX)) - goto do_write; + goto do_write; else { - if (PerlIO_printf(PerlIO_stderr(), - "assertion botched (%s?): %s %s:%d\n", - diag, s, file, line) != 0) { - do_write: /* Can be initializing interpreter */ - MYMALLOC_WRITE2STDERR("assertion botched ("); - MYMALLOC_WRITE2STDERR(diag); - MYMALLOC_WRITE2STDERR("?): "); - MYMALLOC_WRITE2STDERR(s); - MYMALLOC_WRITE2STDERR(" ("); - MYMALLOC_WRITE2STDERR(file); - MYMALLOC_WRITE2STDERR(":"); - { - char linebuf[10]; - char *s = linebuf + sizeof(linebuf) - 1; - int n = line; - *s = 0; - do { - *--s = '0' + (n % 10); - } while (n /= 10); - MYMALLOC_WRITE2STDERR(s); - } - MYMALLOC_WRITE2STDERR(")\n"); - } - PerlProc_abort(); + if (PerlIO_printf(PerlIO_stderr(), + "assertion botched (%s?): %s %s:%d\n", + diag, s, file, line) != 0) { + do_write: /* Can be initializing interpreter */ + MYMALLOC_WRITE2STDERR("assertion botched ("); + MYMALLOC_WRITE2STDERR(diag); + MYMALLOC_WRITE2STDERR("?): "); + MYMALLOC_WRITE2STDERR(s); + MYMALLOC_WRITE2STDERR(" ("); + MYMALLOC_WRITE2STDERR(file); + MYMALLOC_WRITE2STDERR(":"); + { + char linebuf[10]; + char *s = linebuf + sizeof(linebuf) - 1; + int n = line; + *s = 0; + do { + *--s = '0' + (n % 10); + } while (n /= 10); + MYMALLOC_WRITE2STDERR(s); + } + MYMALLOC_WRITE2STDERR(")\n"); + } + PerlProc_abort(); } } #else @@ -1109,19 +1108,19 @@ const long lfill = *(long*)fill; if (PTR2UV(s) & (sizeof(long)-1)) { /* Align the pattern */ - int shift = sizeof(long) - (PTR2UV(s) & (sizeof(long)-1)); - unsigned const char *f = fill + sizeof(long) - shift; - unsigned char *e1 = s + shift; + int shift = sizeof(long) - (PTR2UV(s) & (sizeof(long)-1)); + unsigned const char *f = fill + sizeof(long) - shift; + unsigned char *e1 = s + shift; - while (s < e1) - *s++ = *f++; + while (s < e1) + *s++ = *f++; } lp = (long*)s; while ((unsigned char*)(lp + 1) <= e) - *lp++ = lfill; + *lp++ = lfill; s = (unsigned char*)lp; while (s < e) - *s++ = *fill++; + *s++ = *fill++; } /* Just malloc()ed */ static const unsigned char fill_feedadad[] = @@ -1132,9 +1131,9 @@ {0xDE, 0xAD, 0xBE, 0xEF, 0xDE, 0xAD, 0xBE, 0xEF, 0xDE, 0xAD, 0xBE, 0xEF, 0xDE, 0xAD, 0xBE, 0xEF}; # define FILL_DEADBEEF(s, n) \ - (void)(FILL_DEAD? (fill_pat_4bytes((s), (n), fill_deadbeef), 0) : 0) + (void)(FILL_DEAD? (fill_pat_4bytes((s), (n), fill_deadbeef), 0) : 0) # define FILL_FEEDADAD(s, n) \ - (void)(FILL_ALIVE? (fill_pat_4bytes((s), (n), fill_feedadad), 0) : 0) + (void)(FILL_ALIVE? (fill_pat_4bytes((s), (n), fill_feedadad), 0) : 0) #else # define FILL_DEADBEEF(s, n) ((void)0) # define FILL_FEEDADAD(s, n) ((void)0) @@ -1150,27 +1149,27 @@ const long lfill = *(long*)fill; if (PTR2UV(s) & (sizeof(long)-1)) { /* Align the pattern */ - int shift = sizeof(long) - (PTR2UV(s) & (sizeof(long)-1)); - unsigned const char *f = fill + sizeof(long) - shift; - unsigned char *e1 = s + shift; - - while (s < e1) - if (*s++ != *f++) - return 1; + int shift = sizeof(long) - (PTR2UV(s) & (sizeof(long)-1)); + unsigned const char *f = fill + sizeof(long) - shift; + unsigned char *e1 = s + shift; + + while (s < e1) + if (*s++ != *f++) + return 1; } lp = (long*)s; while ((unsigned char*)(lp + 1) <= e) - if (*lp++ != lfill) - return 1; + if (*lp++ != lfill) + return 1; s = (unsigned char*)lp; while (s < e) - if (*s++ != *fill++) - return 1; + if (*s++ != *fill++) + return 1; return 0; } # define FILLCHECK_DEADBEEF(s, n) \ - ASSERT(!FILL_CHECK || !cmp_pat_4bytes(s, n, fill_deadbeef), \ - "free()ed/realloc()ed-away memory was overwritten") + ASSERT(!FILL_CHECK || !cmp_pat_4bytes(s, n, fill_deadbeef), \ + "free()ed/realloc()ed-away memory was overwritten") #else # define FILLCHECK_DEADBEEF(s, n) ((void)0) #endif @@ -1178,49 +1177,49 @@ STATIC int S_adjust_size_and_find_bucket(size_t *nbytes_p) { - MEM_SIZE shiftr; - int bucket; - size_t nbytes; - - PERL_ARGS_ASSERT_ADJUST_SIZE_AND_FIND_BUCKET; - - nbytes = *nbytes_p; - - /* - * Convert amount of memory requested into - * closest block size stored in hash buckets - * which satisfies request. Account for - * space used per block for accounting. - */ + MEM_SIZE shiftr; + int bucket; + size_t nbytes; + + PERL_ARGS_ASSERT_ADJUST_SIZE_AND_FIND_BUCKET; + + nbytes = *nbytes_p; + + /* + * Convert amount of memory requested into + * closest block size stored in hash buckets + * which satisfies request. Account for + * space used per block for accounting. + */ #ifdef PACK_MALLOC # ifdef SMALL_BUCKET_VIA_TABLE - if (nbytes == 0) - bucket = MIN_BUCKET; - else if (nbytes <= SIZE_TABLE_MAX) { - bucket = bucket_of[(nbytes - 1) >> BUCKET_TABLE_SHIFT]; - } else + if (nbytes == 0) + bucket = MIN_BUCKET; + else if (nbytes <= SIZE_TABLE_MAX) { + bucket = bucket_of[(nbytes - 1) >> BUCKET_TABLE_SHIFT]; + } else # else - if (nbytes == 0) - nbytes = 1; - if (nbytes <= MAX_POW2_ALGO) goto do_shifts; - else + if (nbytes == 0) + nbytes = 1; + if (nbytes <= MAX_POW2_ALGO) goto do_shifts; + else # endif #endif - { - POW2_OPTIMIZE_ADJUST(nbytes); - nbytes += M_OVERHEAD; - nbytes = (nbytes + 3) &~ 3; + { + POW2_OPTIMIZE_ADJUST(nbytes); + nbytes += M_OVERHEAD; + nbytes = (nbytes + 3) &~ 3; #if defined(PACK_MALLOC) && !defined(SMALL_BUCKET_VIA_TABLE) - do_shifts: + do_shifts: #endif - shiftr = (nbytes - 1) >> START_SHIFT; - bucket = START_SHIFTS_BUCKET; - /* apart from this loop, this is O(1) */ - while (shiftr >>= 1) - bucket += BUCKETS_PER_POW2; - } - *nbytes_p = nbytes; - return bucket; + shiftr = (nbytes - 1) >> START_SHIFT; + bucket = START_SHIFTS_BUCKET; + /* apart from this loop, this is O(1) */ + while (shiftr >>= 1) + bucket += BUCKETS_PER_POW2; + } + *nbytes_p = nbytes; + return bucket; } /* @@ -1235,11 +1234,10 @@ Malloc_t Perl_malloc(size_t nbytes) { - dVAR; - union overhead *p; - int bucket; + union overhead *p; + int bucket; #if defined(DEBUGGING) || defined(RCHECK) - MEM_SIZE size = nbytes; + MEM_SIZE size = nbytes; #endif /* A structure that has more than PTRDIFF_MAX bytes is unfortunately @@ -1255,119 +1253,119 @@ return NULL; } - BARK_64K_LIMIT("Allocation",nbytes,nbytes); + BARK_64K_LIMIT("Allocation",nbytes,nbytes); #ifdef DEBUGGING - if ((long)nbytes < 0) - croak("%s", "panic: malloc"); + if ((long)nbytes < 0) + croak("%s", "panic: malloc"); #endif - bucket = adjust_size_and_find_bucket(&nbytes); - MALLOC_LOCK; - /* - * If nothing in hash bucket right now, - * request more memory from the system. - */ - if (nextf[bucket] == NULL) - morecore(bucket); - if ((p = nextf[bucket]) == NULL) { - MALLOC_UNLOCK; - { - dTHX; - if (!PL_nomemok) { + bucket = adjust_size_and_find_bucket(&nbytes); + MALLOC_LOCK; + /* + * If nothing in hash bucket right now, + * request more memory from the system. + */ + if (nextf[bucket] == NULL) + morecore(bucket); + if ((p = nextf[bucket]) == NULL) { + MALLOC_UNLOCK; + { + dTHX; + if (!PL_nomemok) { #if defined(PLAIN_MALLOC) && defined(NO_FANCY_MALLOC) - MYMALLOC_WRITE2STDERR("Out of memory!\n"); + MYMALLOC_WRITE2STDERR("Out of memory!\n"); #else - char buff[80]; - char *eb = buff + sizeof(buff) - 1; - char *s = eb; - size_t n = nbytes; + char buff[80]; + char *eb = buff + sizeof(buff) - 1; + char *s = eb; + size_t n = nbytes; - MYMALLOC_WRITE2STDERR("Out of memory during request for "); + MYMALLOC_WRITE2STDERR("Out of memory during request for "); #if defined(DEBUGGING) || defined(RCHECK) - n = size; + n = size; #endif - *s = 0; - do { - *--s = '0' + (n % 10); - } while (n /= 10); - MYMALLOC_WRITE2STDERR(s); - MYMALLOC_WRITE2STDERR(" bytes, total sbrk() is "); - s = eb; - n = goodsbrk + sbrk_slack; - do { - *--s = '0' + (n % 10); - } while (n /= 10); - MYMALLOC_WRITE2STDERR(s); - MYMALLOC_WRITE2STDERR(" bytes!\n"); + *s = 0; + do { + *--s = '0' + (n % 10); + } while (n /= 10); + MYMALLOC_WRITE2STDERR(s); + MYMALLOC_WRITE2STDERR(" bytes, total sbrk() is "); + s = eb; + n = goodsbrk + sbrk_slack; + do { + *--s = '0' + (n % 10); + } while (n /= 10); + MYMALLOC_WRITE2STDERR(s); + MYMALLOC_WRITE2STDERR(" bytes!\n"); #endif /* defined(PLAIN_MALLOC) && defined(NO_FANCY_MALLOC) */ - my_exit(1); - } - } - return (NULL); - } + my_exit(1); + } + } + return (NULL); + } - /* remove from linked list */ + /* remove from linked list */ #ifdef DEBUGGING - if ( (PTR2UV(p) & (MEM_ALIGNBYTES - 1)) - /* Can't get this low */ - || (p && PTR2UV(p) < (1<ov_next) & (MEM_ALIGNBYTES - 1)) - || (p->ov_next && PTR2UV(p->ov_next) < (1<ov_next), PTR2UV(p)); - } -#endif - nextf[bucket] = p->ov_next; - - MALLOC_UNLOCK; - - DEBUG_m(PerlIO_printf(Perl_debug_log, - "%p: (%05lu) malloc %ld bytes\n", - (Malloc_t)(p + CHUNK_SHIFT), + if ( (PTR2UV(p) & (MEM_ALIGNBYTES - 1)) + /* Can't get this low */ + || (p && PTR2UV(p) < (1<ov_next) & (MEM_ALIGNBYTES - 1)) + || (p->ov_next && PTR2UV(p->ov_next) < (1<ov_next), PTR2UV(p)); + } +#endif + nextf[bucket] = p->ov_next; + + MALLOC_UNLOCK; + + DEBUG_m(PerlIO_printf(Perl_debug_log, + "%p: (%05lu) malloc %ld bytes\n", + (Malloc_t)(p + CHUNK_SHIFT), (unsigned long)(PL_an++), - (long)size)); + (long)size)); - FILLCHECK_DEADBEEF((unsigned char*)(p + CHUNK_SHIFT), - BUCKET_SIZE_REAL(bucket) + RMAGIC_SZ); + FILLCHECK_DEADBEEF((unsigned char*)(p + CHUNK_SHIFT), + BUCKET_SIZE_REAL(bucket) + RMAGIC_SZ); #ifdef IGNORE_SMALL_BAD_FREE - if (bucket >= FIRST_BUCKET_WITH_CHECK) + if (bucket >= FIRST_BUCKET_WITH_CHECK) #endif - OV_MAGIC(p, bucket) = MAGIC; + OV_MAGIC(p, bucket) = MAGIC; #ifndef PACK_MALLOC - OV_INDEX(p) = bucket; + OV_INDEX(p) = bucket; #endif #ifdef RCHECK - /* - * Record allocated size of block and - * bound space with magic numbers. - */ - p->ov_rmagic = RMAGIC; - if (bucket <= MAX_SHORT_BUCKET) { - int i; - - nbytes = size + M_OVERHEAD; - p->ov_size = nbytes - 1; - if ((i = nbytes & (RMAGIC_SZ-1))) { - i = RMAGIC_SZ - i; - while (i--) /* nbytes - RMAGIC_SZ is end of alloced area */ - ((caddr_t)p + nbytes - RMAGIC_SZ)[i] = RMAGIC_C; - } - /* Same at RMAGIC_SZ-aligned RMAGIC */ - nbytes = (nbytes + RMAGIC_SZ - 1) & ~(RMAGIC_SZ - 1); - ((u_int *)((caddr_t)p + nbytes))[-1] = RMAGIC; - } - FILL_FEEDADAD((unsigned char *)(p + CHUNK_SHIFT), size); + /* + * Record allocated size of block and + * bound space with magic numbers. + */ + p->ov_rmagic = RMAGIC; + if (bucket <= MAX_SHORT_BUCKET) { + int i; + + nbytes = size + M_OVERHEAD; + p->ov_size = nbytes - 1; + if ((i = nbytes & (RMAGIC_SZ-1))) { + i = RMAGIC_SZ - i; + while (i--) /* nbytes - RMAGIC_SZ is end of alloced area */ + ((caddr_t)p + nbytes - RMAGIC_SZ)[i] = RMAGIC_C; + } + /* Same at RMAGIC_SZ-aligned RMAGIC */ + nbytes = (nbytes + RMAGIC_SZ - 1) & ~(RMAGIC_SZ - 1); + ((u_int *)((caddr_t)p + nbytes))[-1] = RMAGIC; + } + FILL_FEEDADAD((unsigned char *)(p + CHUNK_SHIFT), size); #endif - return ((Malloc_t)(p + CHUNK_SHIFT)); + return ((Malloc_t)(p + CHUNK_SHIFT)); } static char *last_sbrk_top; @@ -1395,33 +1393,33 @@ long min_remain = LONG_MAX; while (elt) { - if (elt->size >= size) { - long remains = elt->size - size; - if (remains >= 0 && remains < min_remain) { - oldgoodp = oldp; - min_remain = remains; - } - if (remains == 0) { - break; - } - } - oldp = &( elt->next ); - elt = elt->next; + if (elt->size >= size) { + long remains = elt->size - size; + if (remains >= 0 && remains < min_remain) { + oldgoodp = oldp; + min_remain = remains; + } + if (remains == 0) { + break; + } + } + oldp = &( elt->next ); + elt = elt->next; } if (!oldgoodp) return NULL; if (min_remain) { - void *ret = *oldgoodp; - struct chunk_chain_s *next = (*oldgoodp)->next; - - *oldgoodp = (struct chunk_chain_s *)((char*)ret + size); - (*oldgoodp)->size = min_remain; - (*oldgoodp)->next = next; - return ret; + void *ret = *oldgoodp; + struct chunk_chain_s *next = (*oldgoodp)->next; + + *oldgoodp = (struct chunk_chain_s *)((char*)ret + size); + (*oldgoodp)->size = min_remain; + (*oldgoodp)->next = next; + return ret; } else { - void *ret = *oldgoodp; - *oldgoodp = (*oldgoodp)->next; - n_chunks--; - return ret; + void *ret = *oldgoodp; + *oldgoodp = (*oldgoodp)->next; + n_chunks--; + return ret; } } @@ -1444,26 +1442,26 @@ int price = 1; static int bucketprice[NBUCKETS]; while (bucket <= max_bucket) { - /* We postpone stealing from bigger buckets until we want it - often enough. */ - if (nextf[bucket] && bucketprice[bucket]++ >= price) { - /* Steal it! */ - void *ret = (void*)(nextf[bucket] - 1 + CHUNK_SHIFT); - bucketprice[bucket] = 0; - if (((char*)nextf[bucket]) - M_OVERHEAD == last_op) { - last_op = NULL; /* Disable optimization */ - } - nextf[bucket] = nextf[bucket]->ov_next; + /* We postpone stealing from bigger buckets until we want it + often enough. */ + if (nextf[bucket] && bucketprice[bucket]++ >= price) { + /* Steal it! */ + void *ret = (void*)(nextf[bucket] - 1 + CHUNK_SHIFT); + bucketprice[bucket] = 0; + if (((char*)nextf[bucket]) - M_OVERHEAD == last_op) { + last_op = NULL; /* Disable optimization */ + } + nextf[bucket] = nextf[bucket]->ov_next; #ifdef DEBUGGING_MSTATS - nmalloc[bucket]--; - start_slack -= M_OVERHEAD; + nmalloc[bucket]--; + start_slack -= M_OVERHEAD; #endif - add_to_chain(ret, (BUCKET_SIZE_NO_SURPLUS(bucket) + - POW2_OPTIMIZE_SURPLUS(bucket)), - size); - return ret; - } - bucket++; + add_to_chain(ret, (BUCKET_SIZE_NO_SURPLUS(bucket) + + POW2_OPTIMIZE_SURPLUS(bucket)), + size); + return ret; + } + bucket++; } return NULL; } @@ -1471,7 +1469,6 @@ static union overhead * getpages(MEM_SIZE needed, int *nblksp, int bucket) { - dVAR; /* Need to do (possibly expensive) system call. Try to optimize it for rare calling. */ MEM_SIZE require = needed - sbrked_remains; @@ -1480,134 +1477,134 @@ MEM_SIZE slack = 0; if (sbrk_goodness > 0) { - if (!last_sbrk_top && require < (MEM_SIZE)FIRST_SBRK) - require = FIRST_SBRK; - else if (require < (MEM_SIZE)MIN_SBRK) require = MIN_SBRK; - - if (require < (Size_t)(goodsbrk * MIN_SBRK_FRAC1000 / 1000)) - require = goodsbrk * MIN_SBRK_FRAC1000 / 1000; - require = ((require - 1 + MIN_SBRK) / MIN_SBRK) * MIN_SBRK; + if (!last_sbrk_top && require < (MEM_SIZE)FIRST_SBRK) + require = FIRST_SBRK; + else if (require < (MEM_SIZE)MIN_SBRK) require = MIN_SBRK; + + if (require < (Size_t)(goodsbrk * MIN_SBRK_FRAC1000 / 1000)) + require = goodsbrk * MIN_SBRK_FRAC1000 / 1000; + require = ((require - 1 + MIN_SBRK) / MIN_SBRK) * MIN_SBRK; } else { - require = needed; - last_sbrk_top = 0; - sbrked_remains = 0; + require = needed; + last_sbrk_top = 0; + sbrked_remains = 0; } DEBUG_m(PerlIO_printf(Perl_debug_log, - "sbrk(%ld) for %ld-byte-long arena\n", - (long)require, (long) needed)); + "sbrk(%ld) for %ld-byte-long arena\n", + (long)require, (long) needed)); cp = (char *)sbrk(require); #ifdef DEBUGGING_MSTATS sbrks++; #endif if (cp == last_sbrk_top) { - /* Common case, anything is fine. */ - sbrk_goodness++; - ovp = (union overhead *) (cp - sbrked_remains); - last_op = cp - sbrked_remains; - sbrked_remains = require - (needed - sbrked_remains); + /* Common case, anything is fine. */ + sbrk_goodness++; + ovp = (union overhead *) (cp - sbrked_remains); + last_op = cp - sbrked_remains; + sbrked_remains = require - (needed - sbrked_remains); } else if (cp == (char *)-1) { /* no more room! */ - ovp = (union overhead *)emergency_sbrk(needed); - if (ovp == (union overhead *)-1) - return 0; - if (((char*)ovp) > last_op) { /* Cannot happen with current emergency_sbrk() */ - last_op = 0; - } - return ovp; + ovp = (union overhead *)emergency_sbrk(needed); + if (ovp == (union overhead *)-1) + return 0; + if (((char*)ovp) > last_op) { /* Cannot happen with current emergency_sbrk() */ + last_op = 0; + } + return ovp; } else { /* Non-continuous or first sbrk(). */ - long add = sbrked_remains; - char *newcp; + long add = sbrked_remains; + char *newcp; + + if (sbrked_remains) { /* Put rest into chain, we + cannot use it right now. */ + add_to_chain((void*)(last_sbrk_top - sbrked_remains), + sbrked_remains, 0); + } + + /* Second, check alignment. */ + slack = 0; - if (sbrked_remains) { /* Put rest into chain, we - cannot use it right now. */ - add_to_chain((void*)(last_sbrk_top - sbrked_remains), - sbrked_remains, 0); - } - - /* Second, check alignment. */ - slack = 0; - - /* WANTED_ALIGNMENT may be more than NEEDED_ALIGNMENT, but this may - improve performance of memory access. */ - if (PTR2UV(cp) & (WANTED_ALIGNMENT - 1)) { /* Not aligned. */ - slack = WANTED_ALIGNMENT - (PTR2UV(cp) & (WANTED_ALIGNMENT - 1)); - add += slack; - } - - if (add) { - DEBUG_m(PerlIO_printf(Perl_debug_log, - "sbrk(%ld) to fix non-continuous/off-page sbrk:\n\t%ld for alignment,\t%ld were assumed to come from the tail of the previous sbrk\n", - (long)add, (long) slack, - (long) sbrked_remains)); - newcp = (char *)sbrk(add); + /* WANTED_ALIGNMENT may be more than NEEDED_ALIGNMENT, but this may + improve performance of memory access. */ + if (PTR2UV(cp) & (WANTED_ALIGNMENT - 1)) { /* Not aligned. */ + slack = WANTED_ALIGNMENT - (PTR2UV(cp) & (WANTED_ALIGNMENT - 1)); + add += slack; + } + + if (add) { + DEBUG_m(PerlIO_printf(Perl_debug_log, + "sbrk(%ld) to fix non-continuous/off-page sbrk:\n\t%ld for alignment,\t%ld were assumed to come from the tail of the previous sbrk\n", + (long)add, (long) slack, + (long) sbrked_remains)); + newcp = (char *)sbrk(add); #if defined(DEBUGGING_MSTATS) - sbrks++; - sbrk_slack += add; + sbrks++; + sbrk_slack += add; #endif - if (newcp != cp + require) { - /* Too bad: even rounding sbrk() is not continuous.*/ - DEBUG_m(PerlIO_printf(Perl_debug_log, - "failed to fix bad sbrk()\n")); + if (newcp != cp + require) { + /* Too bad: even rounding sbrk() is not continuous.*/ + DEBUG_m(PerlIO_printf(Perl_debug_log, + "failed to fix bad sbrk()\n")); #ifdef PACK_MALLOC - if (slack) { - MALLOC_UNLOCK; - fatalcroak("panic: Off-page sbrk\n"); - } + if (slack) { + MALLOC_UNLOCK; + fatalcroak("panic: Off-page sbrk\n"); + } #endif - if (sbrked_remains) { - /* Try again. */ + if (sbrked_remains) { + /* Try again. */ #if defined(DEBUGGING_MSTATS) - sbrk_slack += require; + sbrk_slack += require; #endif - require = needed; - DEBUG_m(PerlIO_printf(Perl_debug_log, - "straight sbrk(%ld)\n", - (long)require)); - cp = (char *)sbrk(require); + require = needed; + DEBUG_m(PerlIO_printf(Perl_debug_log, + "straight sbrk(%ld)\n", + (long)require)); + cp = (char *)sbrk(require); #ifdef DEBUGGING_MSTATS - sbrks++; + sbrks++; #endif - if (cp == (char *)-1) - return 0; - } - sbrk_goodness = -1; /* Disable optimization! - Continue with not-aligned... */ - } else { - cp += slack; - require += sbrked_remains; - } - } - - if (last_sbrk_top) { - sbrk_goodness -= SBRK_FAILURE_PRICE; - } - - ovp = (union overhead *) cp; - /* - * Round up to minimum allocation size boundary - * and deduct from block count to reflect. - */ + if (cp == (char *)-1) + return 0; + } + sbrk_goodness = -1; /* Disable optimization! + Continue with not-aligned... */ + } else { + cp += slack; + require += sbrked_remains; + } + } + + if (last_sbrk_top) { + sbrk_goodness -= SBRK_FAILURE_PRICE; + } + + ovp = (union overhead *) cp; + /* + * Round up to minimum allocation size boundary + * and deduct from block count to reflect. + */ # if NEEDED_ALIGNMENT > MEM_ALIGNBYTES - if (PTR2UV(ovp) & (NEEDED_ALIGNMENT - 1)) - fatalcroak("Misalignment of sbrk()\n"); - else + if (PTR2UV(ovp) & (NEEDED_ALIGNMENT - 1)) + fatalcroak("Misalignment of sbrk()\n"); + else # endif - if (PTR2UV(ovp) & (MEM_ALIGNBYTES - 1)) { - DEBUG_m(PerlIO_printf(Perl_debug_log, - "fixing sbrk(): %d bytes off machine alignment\n", - (int)(PTR2UV(ovp) & (MEM_ALIGNBYTES - 1)))); - ovp = INT2PTR(union overhead *,(PTR2UV(ovp) + MEM_ALIGNBYTES) & - (MEM_ALIGNBYTES - 1)); - (*nblksp)--; + if (PTR2UV(ovp) & (MEM_ALIGNBYTES - 1)) { + DEBUG_m(PerlIO_printf(Perl_debug_log, + "fixing sbrk(): %d bytes off machine alignment\n", + (int)(PTR2UV(ovp) & (MEM_ALIGNBYTES - 1)))); + ovp = INT2PTR(union overhead *,(PTR2UV(ovp) + MEM_ALIGNBYTES) & + (MEM_ALIGNBYTES - 1)); + (*nblksp)--; # if defined(DEBUGGING_MSTATS) - /* This is only approx. if TWO_POT_OPTIMIZE: */ - sbrk_slack += (1 << (bucket >> BUCKET_POW2_SHIFT)); + /* This is only approx. if TWO_POT_OPTIMIZE: */ + sbrk_slack += (1 << (bucket >> BUCKET_POW2_SHIFT)); # endif - } - ; /* Finish "else" */ - sbrked_remains = require - needed; - last_op = cp; + } + ; /* Finish "else" */ + sbrked_remains = require - needed; + last_op = cp; } #if !defined(PLAIN_MALLOC) && !defined(NO_FANCY_MALLOC) emergency_buffer_last_req = 0; @@ -1623,40 +1620,40 @@ getpages_adjacent(MEM_SIZE require) { if (require <= sbrked_remains) { - sbrked_remains -= require; + sbrked_remains -= require; } else { - char *cp; + char *cp; - require -= sbrked_remains; - /* We do not try to optimize sbrks here, we go for place. */ - cp = (char*) sbrk(require); + require -= sbrked_remains; + /* We do not try to optimize sbrks here, we go for place. */ + cp = (char*) sbrk(require); #ifdef DEBUGGING_MSTATS - sbrks++; - goodsbrk += require; + sbrks++; + goodsbrk += require; #endif - if (cp == last_sbrk_top) { - sbrked_remains = 0; - last_sbrk_top = cp + require; - } else { - if (cp == (char*)-1) { /* Out of memory */ + if (cp == last_sbrk_top) { + sbrked_remains = 0; + last_sbrk_top = cp + require; + } else { + if (cp == (char*)-1) { /* Out of memory */ #ifdef DEBUGGING_MSTATS - goodsbrk -= require; + goodsbrk -= require; #endif - return 0; - } - /* Report the failure: */ - if (sbrked_remains) - add_to_chain((void*)(last_sbrk_top - sbrked_remains), - sbrked_remains, 0); - add_to_chain((void*)cp, require, 0); - sbrk_goodness -= SBRK_FAILURE_PRICE; - sbrked_remains = 0; - last_sbrk_top = 0; - last_op = 0; - return 0; - } + return 0; + } + /* Report the failure: */ + if (sbrked_remains) + add_to_chain((void*)(last_sbrk_top - sbrked_remains), + sbrked_remains, 0); + add_to_chain((void*)cp, require, 0); + sbrk_goodness -= SBRK_FAILURE_PRICE; + sbrked_remains = 0; + last_sbrk_top = 0; + last_op = 0; + return 0; + } } - + return 1; } @@ -1666,229 +1663,227 @@ static void morecore(int bucket) { - dVAR; - union overhead *ovp; - int rnu; /* 2^rnu bytes will be requested */ - int nblks; /* become nblks blocks of the desired size */ - MEM_SIZE siz, needed; - static int were_called = 0; + union overhead *ovp; + int rnu; /* 2^rnu bytes will be requested */ + int nblks; /* become nblks blocks of the desired size */ + MEM_SIZE siz, needed; + static int were_called = 0; - if (nextf[bucket]) - return; + if (nextf[bucket]) + return; #ifndef NO_PERL_MALLOC_ENV - if (!were_called) { - /* It's our first time. Initialize ourselves */ - were_called = 1; /* Avoid a loop */ - if (!MallocCfg[MallocCfg_skip_cfg_env]) { - char *s = getenv("PERL_MALLOC_OPT"), *t = s; + if (!were_called) { + /* It's our first time. Initialize ourselves */ + were_called = 1; /* Avoid a loop */ + if (!MallocCfg[MallocCfg_skip_cfg_env]) { + char *s = getenv("PERL_MALLOC_OPT"), *t = s; const char *off; - const char *opts = PERL_MALLOC_OPT_CHARS; - int changed = 0; + const char *opts = PERL_MALLOC_OPT_CHARS; + int changed = 0; + + while ( t && t[0] && t[1] == '=' + && ((off = strchr(opts, *t))) ) { + IV val = 0; + + t += 2; + while (isDIGIT(*t)) + val = 10*val + *t++ - '0'; + if (!*t || *t == ';') { + if (MallocCfg[off - opts] != val) + changed = 1; + MallocCfg[off - opts] = val; + if (*t) + t++; + } + } + if (t && *t) { + dTHX; + MYMALLOC_WRITE2STDERR("Unrecognized part of PERL_MALLOC_OPT: \""); + MYMALLOC_WRITE2STDERR(t); + MYMALLOC_WRITE2STDERR("\"\n"); + } + if (changed) + MallocCfg[MallocCfg_cfg_env_read] = 1; + } + } +#endif + if (bucket == sizeof(MEM_SIZE)*8*BUCKETS_PER_POW2) { + MALLOC_UNLOCK; + croak("%s", "Out of memory during ridiculously large request"); + } + if (bucket > max_bucket) + max_bucket = bucket; - while ( t && t[0] && t[1] == '=' - && ((off = strchr(opts, *t))) ) { - IV val = 0; - - t += 2; - while (isDIGIT(*t)) - val = 10*val + *t++ - '0'; - if (!*t || *t == ';') { - if (MallocCfg[off - opts] != val) - changed = 1; - MallocCfg[off - opts] = val; - if (*t) - t++; - } - } - if (t && *t) { - dTHX; - MYMALLOC_WRITE2STDERR("Unrecognized part of PERL_MALLOC_OPT: \""); - MYMALLOC_WRITE2STDERR(t); - MYMALLOC_WRITE2STDERR("\"\n"); - } - if (changed) - MallocCfg[MallocCfg_cfg_env_read] = 1; - } - } -#endif - if (bucket == sizeof(MEM_SIZE)*8*BUCKETS_PER_POW2) { - MALLOC_UNLOCK; - croak("%s", "Out of memory during ridiculously large request"); - } - if (bucket > max_bucket) - max_bucket = bucket; - - rnu = ( (bucket <= (LOG_OF_MIN_ARENA << BUCKET_POW2_SHIFT)) - ? LOG_OF_MIN_ARENA - : (bucket >> BUCKET_POW2_SHIFT) ); - /* This may be overwritten later: */ - nblks = 1 << (rnu - (bucket >> BUCKET_POW2_SHIFT)); /* how many blocks to get */ - needed = ((MEM_SIZE)1 << rnu) + POW2_OPTIMIZE_SURPLUS(bucket); - if (nextf[rnu << BUCKET_POW2_SHIFT]) { /* 2048b bucket. */ - ovp = nextf[rnu << BUCKET_POW2_SHIFT] - 1 + CHUNK_SHIFT; - nextf[rnu << BUCKET_POW2_SHIFT] - = nextf[rnu << BUCKET_POW2_SHIFT]->ov_next; + rnu = ( (bucket <= (LOG_OF_MIN_ARENA << BUCKET_POW2_SHIFT)) + ? LOG_OF_MIN_ARENA + : (bucket >> BUCKET_POW2_SHIFT) ); + /* This may be overwritten later: */ + nblks = 1 << (rnu - (bucket >> BUCKET_POW2_SHIFT)); /* how many blocks to get */ + needed = ((MEM_SIZE)1 << rnu) + POW2_OPTIMIZE_SURPLUS(bucket); + if (nextf[rnu << BUCKET_POW2_SHIFT]) { /* 2048b bucket. */ + ovp = nextf[rnu << BUCKET_POW2_SHIFT] - 1 + CHUNK_SHIFT; + nextf[rnu << BUCKET_POW2_SHIFT] + = nextf[rnu << BUCKET_POW2_SHIFT]->ov_next; #ifdef DEBUGGING_MSTATS - nmalloc[rnu << BUCKET_POW2_SHIFT]--; - start_slack -= M_OVERHEAD; + nmalloc[rnu << BUCKET_POW2_SHIFT]--; + start_slack -= M_OVERHEAD; #endif - DEBUG_m(PerlIO_printf(Perl_debug_log, - "stealing %ld bytes from %ld arena\n", - (long) needed, (long) rnu << BUCKET_POW2_SHIFT)); - } else if (chunk_chain - && (ovp = (union overhead*) get_from_chain(needed))) { - DEBUG_m(PerlIO_printf(Perl_debug_log, - "stealing %ld bytes from chain\n", - (long) needed)); - } else if ( (ovp = (union overhead*) - get_from_bigger_buckets((rnu << BUCKET_POW2_SHIFT) + 1, - needed)) ) { - DEBUG_m(PerlIO_printf(Perl_debug_log, - "stealing %ld bytes from bigger buckets\n", - (long) needed)); - } else if (needed <= sbrked_remains) { - ovp = (union overhead *)(last_sbrk_top - sbrked_remains); - sbrked_remains -= needed; - last_op = (char*)ovp; - } else - ovp = getpages(needed, &nblks, bucket); - - if (!ovp) - return; - FILL_DEADBEEF((unsigned char*)ovp, needed); - - /* - * Add new memory allocated to that on - * free list for this hash bucket. - */ - siz = BUCKET_SIZE_NO_SURPLUS(bucket); /* No surplus if nblks > 1 */ + DEBUG_m(PerlIO_printf(Perl_debug_log, + "stealing %ld bytes from %ld arena\n", + (long) needed, (long) rnu << BUCKET_POW2_SHIFT)); + } else if (chunk_chain + && (ovp = (union overhead*) get_from_chain(needed))) { + DEBUG_m(PerlIO_printf(Perl_debug_log, + "stealing %ld bytes from chain\n", + (long) needed)); + } else if ( (ovp = (union overhead*) + get_from_bigger_buckets((rnu << BUCKET_POW2_SHIFT) + 1, + needed)) ) { + DEBUG_m(PerlIO_printf(Perl_debug_log, + "stealing %ld bytes from bigger buckets\n", + (long) needed)); + } else if (needed <= sbrked_remains) { + ovp = (union overhead *)(last_sbrk_top - sbrked_remains); + sbrked_remains -= needed; + last_op = (char*)ovp; + } else + ovp = getpages(needed, &nblks, bucket); + + if (!ovp) + return; + FILL_DEADBEEF((unsigned char*)ovp, needed); + + /* + * Add new memory allocated to that on + * free list for this hash bucket. + */ + siz = BUCKET_SIZE_NO_SURPLUS(bucket); /* No surplus if nblks > 1 */ #ifdef PACK_MALLOC - *(u_char*)ovp = bucket; /* Fill index. */ - if (bucket <= MAX_PACKED) { - ovp = (union overhead *) ((char*)ovp + BLK_SHIFT(bucket)); - nblks = N_BLKS(bucket); + *(u_char*)ovp = bucket; /* Fill index. */ + if (bucket <= MAX_PACKED) { + ovp = (union overhead *) ((char*)ovp + BLK_SHIFT(bucket)); + nblks = N_BLKS(bucket); # ifdef DEBUGGING_MSTATS - start_slack += BLK_SHIFT(bucket); + start_slack += BLK_SHIFT(bucket); # endif - } else if (bucket < LOG_OF_MIN_ARENA * BUCKETS_PER_POW2) { - ovp = (union overhead *) ((char*)ovp + BLK_SHIFT(bucket)); - siz -= sizeof(union overhead); - } else ovp++; /* One chunk per block. */ + } else if (bucket < LOG_OF_MIN_ARENA * BUCKETS_PER_POW2) { + ovp = (union overhead *) ((char*)ovp + BLK_SHIFT(bucket)); + siz -= sizeof(union overhead); + } else ovp++; /* One chunk per block. */ #endif /* PACK_MALLOC */ - nextf[bucket] = ovp; + nextf[bucket] = ovp; #ifdef DEBUGGING_MSTATS - nmalloc[bucket] += nblks; - if (bucket > MAX_PACKED) { - start_slack += M_OVERHEAD * nblks; - } + nmalloc[bucket] += nblks; + if (bucket > MAX_PACKED) { + start_slack += M_OVERHEAD * nblks; + } #endif - while (--nblks > 0) { - ovp->ov_next = (union overhead *)((caddr_t)ovp + siz); - ovp = (union overhead *)((caddr_t)ovp + siz); - } - /* Not all sbrks return zeroed memory.*/ - ovp->ov_next = (union overhead *)NULL; + while (--nblks > 0) { + ovp->ov_next = (union overhead *)((caddr_t)ovp + siz); + ovp = (union overhead *)((caddr_t)ovp + siz); + } + /* Not all sbrks return zeroed memory.*/ + ovp->ov_next = (union overhead *)NULL; #ifdef PACK_MALLOC - if (bucket == 7*BUCKETS_PER_POW2) { /* Special case, explanation is above. */ - union overhead *n_op = nextf[7*BUCKETS_PER_POW2]->ov_next; - nextf[7*BUCKETS_PER_POW2] = - (union overhead *)((caddr_t)nextf[7*BUCKETS_PER_POW2] - - sizeof(union overhead)); - nextf[7*BUCKETS_PER_POW2]->ov_next = n_op; - } + if (bucket == 7*BUCKETS_PER_POW2) { /* Special case, explanation is above. */ + union overhead *n_op = nextf[7*BUCKETS_PER_POW2]->ov_next; + nextf[7*BUCKETS_PER_POW2] = + (union overhead *)((caddr_t)nextf[7*BUCKETS_PER_POW2] + - sizeof(union overhead)); + nextf[7*BUCKETS_PER_POW2]->ov_next = n_op; + } #endif /* !PACK_MALLOC */ } Free_t Perl_mfree(Malloc_t where) { - dVAR; - MEM_SIZE size; - union overhead *ovp; - char *cp = (char*)where; + MEM_SIZE size; + union overhead *ovp; + char *cp = (char*)where; #ifdef PACK_MALLOC - u_char bucket; + u_char bucket; #endif - DEBUG_m(PerlIO_printf(Perl_debug_log, - "0x%" UVxf ": (%05lu) free\n", - PTR2UV(cp), (unsigned long)(PL_an++))); + DEBUG_m(PerlIO_printf(Perl_debug_log, + "0x%" UVxf ": (%05lu) free\n", + PTR2UV(cp), (unsigned long)(PL_an++))); - if (cp == NULL) - return; + if (cp == NULL) + return; #ifdef DEBUGGING - if (PTR2UV(cp) & (MEM_ALIGNBYTES - 1)) - croak("%s", "wrong alignment in free()"); + if (PTR2UV(cp) & (MEM_ALIGNBYTES - 1)) + croak("%s", "wrong alignment in free()"); #endif - ovp = (union overhead *)((caddr_t)cp - - sizeof (union overhead) * CHUNK_SHIFT); + ovp = (union overhead *)((caddr_t)cp + - sizeof (union overhead) * CHUNK_SHIFT); #ifdef PACK_MALLOC - bucket = OV_INDEX(ovp); + bucket = OV_INDEX(ovp); #endif #ifdef IGNORE_SMALL_BAD_FREE - if ((bucket >= FIRST_BUCKET_WITH_CHECK) - && (OV_MAGIC(ovp, bucket) != MAGIC)) + if ((bucket >= FIRST_BUCKET_WITH_CHECK) + && (OV_MAGIC(ovp, bucket) != MAGIC)) #else - if (OV_MAGIC(ovp, bucket) != MAGIC) + if (OV_MAGIC(ovp, bucket) != MAGIC) #endif - { - static int bad_free_warn = -1; - if (bad_free_warn == -1) { - dTHX; - char *pbf = PerlEnv_getenv("PERL_BADFREE"); - bad_free_warn = (pbf) ? strNE("0", pbf) : 1; - } - if (!bad_free_warn) - return; + { + static int bad_free_warn = -1; + if (bad_free_warn == -1) { + dTHX; + char *pbf = PerlEnv_getenv("PERL_BADFREE"); + bad_free_warn = (pbf) ? strNE("0", pbf) : 1; + } + if (!bad_free_warn) + return; #ifdef RCHECK - { - dTHX; - if (!PERL_IS_ALIVE || !PL_curcop) - Perl_ck_warner_d(aTHX_ packWARN(WARN_MALLOC), "%s free() ignored (RMAGIC, PERL_CORE)", - ovp->ov_rmagic == RMAGIC - 1 ? - "Duplicate" : "Bad"); - } + { + dTHX; + if (!PERL_IS_ALIVE || !PL_curcop) + Perl_ck_warner_d(aTHX_ packWARN(WARN_MALLOC), "%s free() ignored (RMAGIC, PERL_CORE)", + ovp->ov_rmagic == RMAGIC - 1 ? + "Duplicate" : "Bad"); + } #else - { - dTHX; - if (!PERL_IS_ALIVE || !PL_curcop) - Perl_ck_warner_d(aTHX_ packWARN(WARN_MALLOC), "%s", "Bad free() ignored (PERL_CORE)"); - } + { + dTHX; + if (!PERL_IS_ALIVE || !PL_curcop) + Perl_ck_warner_d(aTHX_ packWARN(WARN_MALLOC), "%s", "Bad free() ignored (PERL_CORE)"); + } #endif - return; /* sanity */ - } + return; /* sanity */ + } #ifdef RCHECK - ASSERT(ovp->ov_rmagic == RMAGIC, "chunk's head overwrite"); - if (OV_INDEX(ovp) <= MAX_SHORT_BUCKET) { - int i; - MEM_SIZE nbytes = ovp->ov_size + 1; - - if ((i = nbytes & (RMAGIC_SZ-1))) { - i = RMAGIC_SZ - i; - while (i--) { /* nbytes - RMAGIC_SZ is end of alloced area */ - ASSERT(((caddr_t)ovp + nbytes - RMAGIC_SZ)[i] == RMAGIC_C, - "chunk's tail overwrite"); - } - } - /* Same at RMAGIC_SZ-aligned RMAGIC */ - nbytes = (nbytes + (RMAGIC_SZ-1)) & ~(RMAGIC_SZ-1); - ASSERT(((u_int *)((caddr_t)ovp + nbytes))[-1] == RMAGIC, - "chunk's tail overwrite"); - FILLCHECK_DEADBEEF((unsigned char*)((caddr_t)ovp + nbytes), - BUCKET_SIZE(OV_INDEX(ovp)) - nbytes); - } - FILL_DEADBEEF((unsigned char*)(ovp+CHUNK_SHIFT), - BUCKET_SIZE_REAL(OV_INDEX(ovp)) + RMAGIC_SZ); - ovp->ov_rmagic = RMAGIC - 1; -#endif - ASSERT(OV_INDEX(ovp) < NBUCKETS, "chunk's head overwrite"); - size = OV_INDEX(ovp); - - MALLOC_LOCK; - ovp->ov_next = nextf[size]; - nextf[size] = ovp; - MALLOC_UNLOCK; + ASSERT(ovp->ov_rmagic == RMAGIC, "chunk's head overwrite"); + if (OV_INDEX(ovp) <= MAX_SHORT_BUCKET) { + int i; + MEM_SIZE nbytes = ovp->ov_size + 1; + + if ((i = nbytes & (RMAGIC_SZ-1))) { + i = RMAGIC_SZ - i; + while (i--) { /* nbytes - RMAGIC_SZ is end of alloced area */ + ASSERT(((caddr_t)ovp + nbytes - RMAGIC_SZ)[i] == RMAGIC_C, + "chunk's tail overwrite"); + } + } + /* Same at RMAGIC_SZ-aligned RMAGIC */ + nbytes = (nbytes + (RMAGIC_SZ-1)) & ~(RMAGIC_SZ-1); + ASSERT(((u_int *)((caddr_t)ovp + nbytes))[-1] == RMAGIC, + "chunk's tail overwrite"); + FILLCHECK_DEADBEEF((unsigned char*)((caddr_t)ovp + nbytes), + BUCKET_SIZE(OV_INDEX(ovp)) - nbytes); + } + FILL_DEADBEEF((unsigned char*)(ovp+CHUNK_SHIFT), + BUCKET_SIZE_REAL(OV_INDEX(ovp)) + RMAGIC_SZ); + ovp->ov_rmagic = RMAGIC - 1; +#endif + ASSERT(OV_INDEX(ovp) < NBUCKETS, "chunk's head overwrite"); + size = OV_INDEX(ovp); + + MALLOC_LOCK; + ovp->ov_next = nextf[size]; + nextf[size] = ovp; + MALLOC_UNLOCK; } /* There is no need to do any locking in realloc (with an exception of @@ -1899,194 +1894,193 @@ Malloc_t Perl_realloc(void *mp, size_t nbytes) { - dVAR; - MEM_SIZE onb; - union overhead *ovp; - char *res; - int prev_bucket; - int bucket; - int incr; /* 1 if does not fit, -1 if "easily" fits in a - smaller bucket, otherwise 0. */ - char *cp = (char*)mp; + MEM_SIZE onb; + union overhead *ovp; + char *res; + int prev_bucket; + int bucket; + int incr; /* 1 if does not fit, -1 if "easily" fits in a + smaller bucket, otherwise 0. */ + char *cp = (char*)mp; #ifdef DEBUGGING - MEM_SIZE size = nbytes; + MEM_SIZE size = nbytes; - if ((long)nbytes < 0) - croak("%s", "panic: realloc"); + if ((long)nbytes < 0) + croak("%s", "panic: realloc"); #endif - BARK_64K_LIMIT("Reallocation",nbytes,size); - if (!cp) - return Perl_malloc(nbytes); + BARK_64K_LIMIT("Reallocation",nbytes,size); + if (!cp) + return Perl_malloc(nbytes); - ovp = (union overhead *)((caddr_t)cp - - sizeof (union overhead) * CHUNK_SHIFT); - bucket = OV_INDEX(ovp); + ovp = (union overhead *)((caddr_t)cp + - sizeof (union overhead) * CHUNK_SHIFT); + bucket = OV_INDEX(ovp); #ifdef IGNORE_SMALL_BAD_FREE - if ((bucket >= FIRST_BUCKET_WITH_CHECK) - && (OV_MAGIC(ovp, bucket) != MAGIC)) + if ((bucket >= FIRST_BUCKET_WITH_CHECK) + && (OV_MAGIC(ovp, bucket) != MAGIC)) #else - if (OV_MAGIC(ovp, bucket) != MAGIC) + if (OV_MAGIC(ovp, bucket) != MAGIC) #endif - { - static int bad_free_warn = -1; - if (bad_free_warn == -1) { - dTHX; - char *pbf = PerlEnv_getenv("PERL_BADFREE"); - bad_free_warn = (pbf) ? strNE("0", pbf) : 1; - } - if (!bad_free_warn) - return NULL; + { + static int bad_free_warn = -1; + if (bad_free_warn == -1) { + dTHX; + char *pbf = PerlEnv_getenv("PERL_BADFREE"); + bad_free_warn = (pbf) ? strNE("0", pbf) : 1; + } + if (!bad_free_warn) + return NULL; #ifdef RCHECK - { - dTHX; - if (!PERL_IS_ALIVE || !PL_curcop) - Perl_ck_warner_d(aTHX_ packWARN(WARN_MALLOC), "%srealloc() %signored", - (ovp->ov_rmagic == RMAGIC - 1 ? "" : "Bad "), - ovp->ov_rmagic == RMAGIC - 1 - ? "of freed memory " : ""); - } + { + dTHX; + if (!PERL_IS_ALIVE || !PL_curcop) + Perl_ck_warner_d(aTHX_ packWARN(WARN_MALLOC), "%srealloc() %signored", + (ovp->ov_rmagic == RMAGIC - 1 ? "" : "Bad "), + ovp->ov_rmagic == RMAGIC - 1 + ? "of freed memory " : ""); + } #else - { - dTHX; - if (!PERL_IS_ALIVE || !PL_curcop) - Perl_ck_warner_d(aTHX_ packWARN(WARN_MALLOC), "%s", - "Bad realloc() ignored"); - } -#endif - return NULL; /* sanity */ - } - - onb = BUCKET_SIZE_REAL(bucket); - /* - * avoid the copy if same size block. - * We are not aggressive with boundary cases. Note that it might - * (for a small number of cases) give false negative if - * both new size and old one are in the bucket for - * FIRST_BIG_POW2, but the new one is near the lower end. - * - * We do not try to go to 1.5 times smaller bucket so far. - */ - if (nbytes > onb) incr = 1; - else { + { + dTHX; + if (!PERL_IS_ALIVE || !PL_curcop) + Perl_ck_warner_d(aTHX_ packWARN(WARN_MALLOC), "%s", + "Bad realloc() ignored"); + } +#endif + return NULL; /* sanity */ + } + + onb = BUCKET_SIZE_REAL(bucket); + /* + * avoid the copy if same size block. + * We are not aggressive with boundary cases. Note that it might + * (for a small number of cases) give false negative if + * both new size and old one are in the bucket for + * FIRST_BIG_POW2, but the new one is near the lower end. + * + * We do not try to go to 1.5 times smaller bucket so far. + */ + if (nbytes > onb) incr = 1; + else { #ifdef DO_NOT_TRY_HARDER_WHEN_SHRINKING - if ( /* This is a little bit pessimal if PACK_MALLOC: */ - nbytes > ( (onb >> 1) - M_OVERHEAD ) + if ( /* This is a little bit pessimal if PACK_MALLOC: */ + nbytes > ( (onb >> 1) - M_OVERHEAD ) # ifdef TWO_POT_OPTIMIZE - || (bucket == FIRST_BIG_POW2 && nbytes >= LAST_SMALL_BOUND ) + || (bucket == FIRST_BIG_POW2 && nbytes >= LAST_SMALL_BOUND ) # endif - ) + ) #else /* !DO_NOT_TRY_HARDER_WHEN_SHRINKING */ - prev_bucket = ( (bucket > MAX_PACKED + 1) - ? bucket - BUCKETS_PER_POW2 - : bucket - 1); - if (nbytes > BUCKET_SIZE_REAL(prev_bucket)) + prev_bucket = ( (bucket > MAX_PACKED + 1) + ? bucket - BUCKETS_PER_POW2 + : bucket - 1); + if (nbytes > BUCKET_SIZE_REAL(prev_bucket)) #endif /* !DO_NOT_TRY_HARDER_WHEN_SHRINKING */ - incr = 0; - else incr = -1; - } + incr = 0; + else incr = -1; + } #ifdef STRESS_REALLOC - goto hard_way; + goto hard_way; #endif - if (incr == 0) { - inplace_label: + if (incr == 0) { + inplace_label: #ifdef RCHECK - /* - * Record new allocated size of block and - * bound space with magic numbers. - */ - if (OV_INDEX(ovp) <= MAX_SHORT_BUCKET) { - int i, nb = ovp->ov_size + 1; - - if ((i = nb & (RMAGIC_SZ-1))) { - i = RMAGIC_SZ - i; - while (i--) { /* nb - RMAGIC_SZ is end of alloced area */ - ASSERT(((caddr_t)ovp + nb - RMAGIC_SZ)[i] == RMAGIC_C, "chunk's tail overwrite"); - } - } - /* Same at RMAGIC_SZ-aligned RMAGIC */ - nb = (nb + (RMAGIC_SZ-1)) & ~(RMAGIC_SZ-1); - ASSERT(((u_int *)((caddr_t)ovp + nb))[-1] == RMAGIC, - "chunk's tail overwrite"); - FILLCHECK_DEADBEEF((unsigned char*)((caddr_t)ovp + nb), - BUCKET_SIZE(OV_INDEX(ovp)) - nb); - if (nbytes > ovp->ov_size + 1 - M_OVERHEAD) - FILL_FEEDADAD((unsigned char*)cp + ovp->ov_size + 1 - M_OVERHEAD, - nbytes - (ovp->ov_size + 1 - M_OVERHEAD)); - else - FILL_DEADBEEF((unsigned char*)cp + nbytes, - nb - M_OVERHEAD + RMAGIC_SZ - nbytes); - /* - * Convert amount of memory requested into - * closest block size stored in hash buckets - * which satisfies request. Account for - * space used per block for accounting. - */ - nbytes += M_OVERHEAD; - ovp->ov_size = nbytes - 1; - if ((i = nbytes & (RMAGIC_SZ-1))) { - i = RMAGIC_SZ - i; - while (i--) /* nbytes - RMAGIC_SZ is end of alloced area */ - ((caddr_t)ovp + nbytes - RMAGIC_SZ)[i] - = RMAGIC_C; - } - /* Same at RMAGIC_SZ-aligned RMAGIC */ - nbytes = (nbytes + (RMAGIC_SZ-1)) & ~(RMAGIC_SZ - 1); - ((u_int *)((caddr_t)ovp + nbytes))[-1] = RMAGIC; - } -#endif - res = cp; - DEBUG_m(PerlIO_printf(Perl_debug_log, - "0x%" UVxf ": (%05lu) realloc %ld bytes inplace\n", - PTR2UV(res),(unsigned long)(PL_an++), - (long)size)); - } else if (incr == 1 && (cp - M_OVERHEAD == last_op) - && (onb > (1 << LOG_OF_MIN_ARENA))) { - MEM_SIZE require, newarena = nbytes, pow; - int shiftr; - - POW2_OPTIMIZE_ADJUST(newarena); - newarena = newarena + M_OVERHEAD; - /* newarena = (newarena + 3) &~ 3; */ - shiftr = (newarena - 1) >> LOG_OF_MIN_ARENA; - pow = LOG_OF_MIN_ARENA + 1; - /* apart from this loop, this is O(1) */ - while (shiftr >>= 1) - pow++; - newarena = (1 << pow) + POW2_OPTIMIZE_SURPLUS(pow * BUCKETS_PER_POW2); - require = newarena - onb - M_OVERHEAD; - - MALLOC_LOCK; - if (cp - M_OVERHEAD == last_op /* We *still* are the last chunk */ - && getpages_adjacent(require)) { + /* + * Record new allocated size of block and + * bound space with magic numbers. + */ + if (OV_INDEX(ovp) <= MAX_SHORT_BUCKET) { + int i, nb = ovp->ov_size + 1; + + if ((i = nb & (RMAGIC_SZ-1))) { + i = RMAGIC_SZ - i; + while (i--) { /* nb - RMAGIC_SZ is end of alloced area */ + ASSERT(((caddr_t)ovp + nb - RMAGIC_SZ)[i] == RMAGIC_C, "chunk's tail overwrite"); + } + } + /* Same at RMAGIC_SZ-aligned RMAGIC */ + nb = (nb + (RMAGIC_SZ-1)) & ~(RMAGIC_SZ-1); + ASSERT(((u_int *)((caddr_t)ovp + nb))[-1] == RMAGIC, + "chunk's tail overwrite"); + FILLCHECK_DEADBEEF((unsigned char*)((caddr_t)ovp + nb), + BUCKET_SIZE(OV_INDEX(ovp)) - nb); + if (nbytes > ovp->ov_size + 1 - M_OVERHEAD) + FILL_FEEDADAD((unsigned char*)cp + ovp->ov_size + 1 - M_OVERHEAD, + nbytes - (ovp->ov_size + 1 - M_OVERHEAD)); + else + FILL_DEADBEEF((unsigned char*)cp + nbytes, + nb - M_OVERHEAD + RMAGIC_SZ - nbytes); + /* + * Convert amount of memory requested into + * closest block size stored in hash buckets + * which satisfies request. Account for + * space used per block for accounting. + */ + nbytes += M_OVERHEAD; + ovp->ov_size = nbytes - 1; + if ((i = nbytes & (RMAGIC_SZ-1))) { + i = RMAGIC_SZ - i; + while (i--) /* nbytes - RMAGIC_SZ is end of alloced area */ + ((caddr_t)ovp + nbytes - RMAGIC_SZ)[i] + = RMAGIC_C; + } + /* Same at RMAGIC_SZ-aligned RMAGIC */ + nbytes = (nbytes + (RMAGIC_SZ-1)) & ~(RMAGIC_SZ - 1); + ((u_int *)((caddr_t)ovp + nbytes))[-1] = RMAGIC; + } +#endif + res = cp; + DEBUG_m(PerlIO_printf(Perl_debug_log, + "0x%" UVxf ": (%05lu) realloc %ld bytes inplace\n", + PTR2UV(res),(unsigned long)(PL_an++), + (long)size)); + } else if (incr == 1 && (cp - M_OVERHEAD == last_op) + && (onb > (1 << LOG_OF_MIN_ARENA))) { + MEM_SIZE require, newarena = nbytes, pow; + int shiftr; + + POW2_OPTIMIZE_ADJUST(newarena); + newarena = newarena + M_OVERHEAD; + /* newarena = (newarena + 3) &~ 3; */ + shiftr = (newarena - 1) >> LOG_OF_MIN_ARENA; + pow = LOG_OF_MIN_ARENA + 1; + /* apart from this loop, this is O(1) */ + while (shiftr >>= 1) + pow++; + newarena = (1 << pow) + POW2_OPTIMIZE_SURPLUS(pow * BUCKETS_PER_POW2); + require = newarena - onb - M_OVERHEAD; + + MALLOC_LOCK; + if (cp - M_OVERHEAD == last_op /* We *still* are the last chunk */ + && getpages_adjacent(require)) { #ifdef DEBUGGING_MSTATS - nmalloc[bucket]--; - nmalloc[pow * BUCKETS_PER_POW2]++; + nmalloc[bucket]--; + nmalloc[pow * BUCKETS_PER_POW2]++; #endif - if (pow * BUCKETS_PER_POW2 > (MEM_SIZE)max_bucket) - max_bucket = pow * BUCKETS_PER_POW2; - *(cp - M_OVERHEAD) = pow * BUCKETS_PER_POW2; /* Fill index. */ - MALLOC_UNLOCK; - goto inplace_label; - } else { - MALLOC_UNLOCK; - goto hard_way; - } - } else { - hard_way: - DEBUG_m(PerlIO_printf(Perl_debug_log, - "0x%" UVxf ": (%05lu) realloc %ld bytes the hard way\n", - PTR2UV(cp),(unsigned long)(PL_an++), - (long)size)); - if ((res = (char*)Perl_malloc(nbytes)) == NULL) - return (NULL); - if (cp != res) /* common optimization */ - Copy(cp, res, (MEM_SIZE)(nbytes (MEM_SIZE)max_bucket) + max_bucket = pow * BUCKETS_PER_POW2; + *(cp - M_OVERHEAD) = pow * BUCKETS_PER_POW2; /* Fill index. */ + MALLOC_UNLOCK; + goto inplace_label; + } else { + MALLOC_UNLOCK; + goto hard_way; + } + } else { + hard_way: + DEBUG_m(PerlIO_printf(Perl_debug_log, + "0x%" UVxf ": (%05lu) realloc %ld bytes the hard way\n", + PTR2UV(cp),(unsigned long)(PL_an++), + (long)size)); + if ((res = (char*)Perl_malloc(nbytes)) == NULL) + return (NULL); + if (cp != res) /* common optimization */ + Copy(cp, res, (MEM_SIZE)(nbytesov_size = size + M_OVERHEAD - 1; - *((u_int *)((caddr_t)ovp + size + M_OVERHEAD - RMAGIC_SZ)) = RMAGIC; + const MEM_SIZE size = BUCKET_SIZE_REAL(bucket); + ovp->ov_size = size + M_OVERHEAD - 1; + *((u_int *)((caddr_t)ovp + size + M_OVERHEAD - RMAGIC_SZ)) = RMAGIC; } #endif return BUCKET_SIZE_REAL(bucket); @@ -2176,56 +2170,56 @@ Perl_get_mstats(pTHX_ perl_mstats_t *buf, int buflen, int level) { #ifdef DEBUGGING_MSTATS - int i, j; - union overhead *p; - struct chunk_chain_s* nextchain; - - PERL_ARGS_ASSERT_GET_MSTATS; - - buf->topbucket = buf->topbucket_ev = buf->topbucket_odd - = buf->totfree = buf->total = buf->total_chain = 0; - - buf->minbucket = MIN_BUCKET; - MALLOC_LOCK; - for (i = MIN_BUCKET ; i < NBUCKETS; i++) { - for (j = 0, p = nextf[i]; p; p = p->ov_next, j++) - ; - if (i < buflen) { - buf->nfree[i] = j; - buf->ntotal[i] = nmalloc[i]; - } - buf->totfree += j * BUCKET_SIZE_REAL(i); - buf->total += nmalloc[i] * BUCKET_SIZE_REAL(i); - if (nmalloc[i]) { - i % 2 ? (buf->topbucket_odd = i) : (buf->topbucket_ev = i); - buf->topbucket = i; - } - } - nextchain = chunk_chain; - while (nextchain) { - buf->total_chain += nextchain->size; - nextchain = nextchain->next; - } - buf->total_sbrk = goodsbrk + sbrk_slack; - buf->sbrks = sbrks; - buf->sbrk_good = sbrk_goodness; - buf->sbrk_slack = sbrk_slack; - buf->start_slack = start_slack; - buf->sbrked_remains = sbrked_remains; - MALLOC_UNLOCK; - buf->nbuckets = NBUCKETS; - if (level) { - for (i = MIN_BUCKET ; i < NBUCKETS; i++) { - if (i >= buflen) - break; - buf->bucket_mem_size[i] = BUCKET_SIZE_NO_SURPLUS(i); - buf->bucket_available_size[i] = BUCKET_SIZE_REAL(i); - } - } + int i, j; + union overhead *p; + struct chunk_chain_s* nextchain; + + PERL_ARGS_ASSERT_GET_MSTATS; + + buf->topbucket = buf->topbucket_ev = buf->topbucket_odd + = buf->totfree = buf->total = buf->total_chain = 0; + + buf->minbucket = MIN_BUCKET; + MALLOC_LOCK; + for (i = MIN_BUCKET ; i < NBUCKETS; i++) { + for (j = 0, p = nextf[i]; p; p = p->ov_next, j++) + ; + if (i < buflen) { + buf->nfree[i] = j; + buf->ntotal[i] = nmalloc[i]; + } + buf->totfree += j * BUCKET_SIZE_REAL(i); + buf->total += nmalloc[i] * BUCKET_SIZE_REAL(i); + if (nmalloc[i]) { + i % 2 ? (buf->topbucket_odd = i) : (buf->topbucket_ev = i); + buf->topbucket = i; + } + } + nextchain = chunk_chain; + while (nextchain) { + buf->total_chain += nextchain->size; + nextchain = nextchain->next; + } + buf->total_sbrk = goodsbrk + sbrk_slack; + buf->sbrks = sbrks; + buf->sbrk_good = sbrk_goodness; + buf->sbrk_slack = sbrk_slack; + buf->start_slack = start_slack; + buf->sbrked_remains = sbrked_remains; + MALLOC_UNLOCK; + buf->nbuckets = NBUCKETS; + if (level) { + for (i = MIN_BUCKET ; i < NBUCKETS; i++) { + if (i >= buflen) + break; + buf->bucket_mem_size[i] = BUCKET_SIZE_NO_SURPLUS(i); + buf->bucket_available_size[i] = BUCKET_SIZE_REAL(i); + } + } #else /* defined DEBUGGING_MSTATS */ - PerlIO_printf(Perl_error_log, "perl not compiled with DEBUGGING_MSTATS\n"); + PerlIO_printf(Perl_error_log, "perl not compiled with DEBUGGING_MSTATS\n"); #endif /* defined DEBUGGING_MSTATS */ - return 0; /* XXX unused */ + return 0; /* XXX unused */ } /* * mstats - print out statistics about malloc @@ -2238,72 +2232,72 @@ Perl_dump_mstats(pTHX_ const char *s) { #ifdef DEBUGGING_MSTATS - int i; - perl_mstats_t buffer; - UV nf[NBUCKETS]; - UV nt[NBUCKETS]; - - PERL_ARGS_ASSERT_DUMP_MSTATS; - - buffer.nfree = nf; - buffer.ntotal = nt; - get_mstats(&buffer, NBUCKETS, 0); - - if (s) - PerlIO_printf(Perl_error_log, - "Memory allocation statistics %s (buckets %" IVdf + int i; + perl_mstats_t buffer; + UV nf[NBUCKETS]; + UV nt[NBUCKETS]; + + PERL_ARGS_ASSERT_DUMP_MSTATS; + + buffer.nfree = nf; + buffer.ntotal = nt; + get_mstats(&buffer, NBUCKETS, 0); + + if (s) + PerlIO_printf(Perl_error_log, + "Memory allocation statistics %s (buckets %" IVdf "(%" IVdf ")..%" IVdf "(%" IVdf ")\n", - s, - (IV)BUCKET_SIZE_REAL(MIN_BUCKET), - (IV)BUCKET_SIZE_NO_SURPLUS(MIN_BUCKET), - (IV)BUCKET_SIZE_REAL(buffer.topbucket), - (IV)BUCKET_SIZE_NO_SURPLUS(buffer.topbucket)); + s, + (IV)BUCKET_SIZE_REAL(MIN_BUCKET), + (IV)BUCKET_SIZE_NO_SURPLUS(MIN_BUCKET), + (IV)BUCKET_SIZE_REAL(buffer.topbucket), + (IV)BUCKET_SIZE_NO_SURPLUS(buffer.topbucket)); PerlIO_printf(Perl_error_log, "%8" IVdf " free:", buffer.totfree); - for (i = MIN_EVEN_REPORT; i <= buffer.topbucket; i += BUCKETS_PER_POW2) { - PerlIO_printf(Perl_error_log, - ((i < 8*BUCKETS_PER_POW2 || i == 10*BUCKETS_PER_POW2) - ? " %5" UVuf - : ((i < 12*BUCKETS_PER_POW2) ? " %3" UVuf + for (i = MIN_EVEN_REPORT; i <= buffer.topbucket; i += BUCKETS_PER_POW2) { + PerlIO_printf(Perl_error_log, + ((i < 8*BUCKETS_PER_POW2 || i == 10*BUCKETS_PER_POW2) + ? " %5" UVuf + : ((i < 12*BUCKETS_PER_POW2) ? " %3" UVuf : " %" UVuf)), - buffer.nfree[i]); - } + buffer.nfree[i]); + } #ifdef BUCKETS_ROOT2 - PerlIO_printf(Perl_error_log, "\n\t "); - for (i = MIN_BUCKET + 1; i <= buffer.topbucket_odd; i += BUCKETS_PER_POW2) { - PerlIO_printf(Perl_error_log, - ((i < 8*BUCKETS_PER_POW2 || i == 10*BUCKETS_PER_POW2) - ? " %5"UVuf - : ((i < 12*BUCKETS_PER_POW2) ? " %3"UVuf : " %"UVuf)), - buffer.nfree[i]); - } + PerlIO_printf(Perl_error_log, "\n\t "); + for (i = MIN_BUCKET + 1; i <= buffer.topbucket_odd; i += BUCKETS_PER_POW2) { + PerlIO_printf(Perl_error_log, + ((i < 8*BUCKETS_PER_POW2 || i == 10*BUCKETS_PER_POW2) + ? " %5"UVuf + : ((i < 12*BUCKETS_PER_POW2) ? " %3"UVuf : " %"UVuf)), + buffer.nfree[i]); + } #endif PerlIO_printf(Perl_error_log, "\n%8" IVdf " used:", buffer.total - buffer.totfree); - for (i = MIN_EVEN_REPORT; i <= buffer.topbucket; i += BUCKETS_PER_POW2) { - PerlIO_printf(Perl_error_log, - ((i < 8*BUCKETS_PER_POW2 || i == 10*BUCKETS_PER_POW2) - ? " %5" IVdf - : ((i < 12*BUCKETS_PER_POW2) ? " %3" IVdf : " %" IVdf)), - buffer.ntotal[i] - buffer.nfree[i]); - } + for (i = MIN_EVEN_REPORT; i <= buffer.topbucket; i += BUCKETS_PER_POW2) { + PerlIO_printf(Perl_error_log, + ((i < 8*BUCKETS_PER_POW2 || i == 10*BUCKETS_PER_POW2) + ? " %5" IVdf + : ((i < 12*BUCKETS_PER_POW2) ? " %3" IVdf : " %" IVdf)), + buffer.ntotal[i] - buffer.nfree[i]); + } #ifdef BUCKETS_ROOT2 - PerlIO_printf(Perl_error_log, "\n\t "); - for (i = MIN_BUCKET + 1; i <= buffer.topbucket_odd; i += BUCKETS_PER_POW2) { - PerlIO_printf(Perl_error_log, - ((i < 8*BUCKETS_PER_POW2 || i == 10*BUCKETS_PER_POW2) - ? " %5"IVdf - : ((i < 12*BUCKETS_PER_POW2) ? " %3"IVdf : " %"IVdf)), - buffer.ntotal[i] - buffer.nfree[i]); - } + PerlIO_printf(Perl_error_log, "\n\t "); + for (i = MIN_BUCKET + 1; i <= buffer.topbucket_odd; i += BUCKETS_PER_POW2) { + PerlIO_printf(Perl_error_log, + ((i < 8*BUCKETS_PER_POW2 || i == 10*BUCKETS_PER_POW2) + ? " %5"IVdf + : ((i < 12*BUCKETS_PER_POW2) ? " %3"IVdf : " %"IVdf)), + buffer.ntotal[i] - buffer.nfree[i]); + } #endif - PerlIO_printf(Perl_error_log, "\nTotal sbrk(): %" IVdf "/%" IVdf ":%" + PerlIO_printf(Perl_error_log, "\nTotal sbrk(): %" IVdf "/%" IVdf ":%" IVdf ". Odd ends: pad+heads+chain+tail: %" IVdf "+%" IVdf "+%" IVdf "+%" IVdf ".\n", - buffer.total_sbrk, buffer.sbrks, buffer.sbrk_good, - buffer.sbrk_slack, buffer.start_slack, - buffer.total_chain, buffer.sbrked_remains); + buffer.total_sbrk, buffer.sbrks, buffer.sbrk_good, + buffer.sbrk_slack, buffer.start_slack, + buffer.total_chain, buffer.sbrked_remains); #else /* DEBUGGING_MSTATS */ - PerlIO_printf(Perl_error_log, "%s: perl not compiled with DEBUGGING_MSTATS\n",s); + PerlIO_printf(Perl_error_log, "%s: perl not compiled with DEBUGGING_MSTATS\n",s); #endif /* DEBUGGING_MSTATS */ } @@ -2347,15 +2341,15 @@ size = (size + 0x7ff) & ~0x7ff; #endif if (size <= Perl_sbrk_oldsize) { - got = Perl_sbrk_oldchunk; - Perl_sbrk_oldchunk += size; - Perl_sbrk_oldsize -= size; + got = Perl_sbrk_oldchunk; + Perl_sbrk_oldchunk += size; + Perl_sbrk_oldsize -= size; } else { if (size >= PERLSBRK_32_K) { - small = 0; + small = 0; } else { - size = PERLSBRK_64_K; - small = 1; + size = PERLSBRK_64_K; + small = 1; } # if NEEDED_ALIGNMENT > SYSTEM_ALLOC_ALIGNMENT size += NEEDED_ALIGNMENT - SYSTEM_ALLOC_ALIGNMENT; @@ -2365,9 +2359,9 @@ got = (got + NEEDED_ALIGNMENT - 1) & ~(NEEDED_ALIGNMENT - 1); # endif if (small) { - /* Chunk is small, register the rest for future allocs. */ - Perl_sbrk_oldchunk = got + reqsize; - Perl_sbrk_oldsize = size - reqsize; + /* Chunk is small, register the rest for future allocs. */ + Perl_sbrk_oldchunk = got + reqsize; + Perl_sbrk_oldsize = size - reqsize; } } diff -Nru perl-5.32.1/MANIFEST perl-5.34.0/MANIFEST --- perl-5.32.1/MANIFEST 2021-01-09 12:17:09.000000000 +0000 +++ perl-5.34.0/MANIFEST 2021-05-04 23:28:28.000000000 +0000 @@ -1,4 +1,5 @@ .dir-locals.el Emacs control file +.editorconfig EditorConfig style file .lgtm.yml LGTM.com configuration file .metaconf-exclusions.txt Symbols that should ignored when generating Configure .travis.yml continuous integration on github (where enabled) @@ -80,6 +81,7 @@ cpan/autodie/t/dbmopen.t autodie - dbm tests cpan/autodie/t/eval_error.t cpan/autodie/t/exception_class.t autodie - Exception class subclasses +cpan/autodie/t/exception_nonref.t cpan/autodie/t/exceptions.t autodie - 5.10 exception tests. cpan/autodie/t/exec.t autodie - exec tests. cpan/autodie/t/Fatal.t autodie - Fatal backcompatibility @@ -170,6 +172,7 @@ cpan/bignum/t/scope_r.t See if no bigrat works cpan/Compress-Raw-Bzip2/Bzip2.xs cpan/Compress-Raw-Bzip2/bzip2-src/blocksort.c +cpan/Compress-Raw-Bzip2/bzip2-src/bzip2.patch cpan/Compress-Raw-Bzip2/bzip2-src/bzlib.c cpan/Compress-Raw-Bzip2/bzip2-src/bzlib.h cpan/Compress-Raw-Bzip2/bzip2-src/bzlib_private.h @@ -247,6 +250,10 @@ cpan/Config-Perl-V/t/32_plv5261rc1.t Config::Perl::V cpan/Config-Perl-V/t/33_plv52711r.t Config::Perl::V cpan/Config-Perl-V/t/34_plv5280.t Config::Perl::V +cpan/Config-Perl-V/t/35_plv52910g.t Config::Perl::V +cpan/Config-Perl-V/t/36_plv5300.t Config::Perl::V +cpan/Config-Perl-V/t/37_plv53111qm.t Config::Perl::V +cpan/Config-Perl-V/t/38_plv5320tld.t Config::Perl::V cpan/Config-Perl-V/V.pm Config::Perl::V cpan/CPAN/lib/App/Cpan.pm helper package for CPAN.pm cpan/CPAN/lib/CPAN.pm Interface to Comprehensive Perl Archive Network @@ -455,7 +462,6 @@ cpan/DB_File/config.in Part of Berkeley DB configuration cpan/DB_File/DB_File.pm Berkeley DB extension Perl module cpan/DB_File/DB_File.xs Berkeley DB extension external subroutines -cpan/DB_File/DB_File_BS Berkeley DB extension mkbootstrap fodder cpan/DB_File/dbinfo Berkeley DB database version checker cpan/DB_File/hints/bitrig.pl cpan/DB_File/hints/dynixptx.pl Hint for DB_File for named architecture @@ -470,9 +476,9 @@ cpan/DB_File/t/db-threads.t See if DB_File works cpan/DB_File/typemap Berkeley DB extension interface types cpan/DB_File/version.c Berkeley DB extension interface version check -cpan/Digest/Digest.pm Digest extensions -cpan/Digest/Digest/base.pm Digest extensions -cpan/Digest/Digest/file.pm Digest extensions +cpan/Digest/lib/Digest.pm +cpan/Digest/lib/Digest/base.pm +cpan/Digest/lib/Digest/file.pm cpan/Digest/t/base.t See if Digest extensions work cpan/Digest/t/digest.t See if Digest extensions work cpan/Digest/t/file.t See if Digest extensions work @@ -492,6 +498,7 @@ cpan/Digest-MD5/t/md5-aaa.t See if Digest::MD5 extension works cpan/Digest-MD5/t/threads.t See if Digest::MD5 extension works cpan/Digest-MD5/t/utf8.t See if Digest::MD5 extension works +cpan/Digest-MD5/t/warns.t cpan/Digest-MD5/typemap Digest::MD5 extension cpan/Digest-SHA/lib/Digest/SHA.pm Digest::SHA extension cpan/Digest-SHA/Makefile.PL Digest::SHA Makefile.PL @@ -786,6 +793,7 @@ cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm MakeMaker methods for MacOS cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm MakeMaker methods for NetWare cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm MakeMaker methods for OS/2 +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS390.pm cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm MakeMaker methods for QNX cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm MakeMaker methods for Unix cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm MakeMaker methods for U/WIN @@ -867,7 +875,6 @@ cpan/ExtUtils-MakeMaker/t/testdata/reallylongdirectoryname/arch1/Config.pm test data for MakeMaker cpan/ExtUtils-MakeMaker/t/testdata/reallylongdirectoryname/arch2/Config.pm test data for MakeMaker cpan/ExtUtils-MakeMaker/t/testlib.t See if ExtUtils::testlib works -cpan/ExtUtils-MakeMaker/t/testrules.yml cpan/ExtUtils-MakeMaker/t/unicode.t cpan/ExtUtils-MakeMaker/t/VERSION_FROM.t See if MakeMaker's VERSION_FROM works cpan/ExtUtils-MakeMaker/t/vstrings.t @@ -876,6 +883,8 @@ cpan/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm Utilities to write MANIFEST files cpan/ExtUtils-Manifest/lib/ExtUtils/MANIFEST.SKIP The default MANIFEST.SKIP cpan/ExtUtils-Manifest/t/Manifest.t See if ExtUtils::Manifest works +cpan/ExtUtils-PL2Bat/lib/ExtUtils/PL2Bat.pm Implement pl2bat +cpan/ExtUtils-PL2Bat/t/make_executable.t Tests if ExtUtils::PL2Bat makes bat files that are executable cpan/File-Fetch/lib/File/Fetch.pm File::Fetch cpan/File-Fetch/t/01_File-Fetch.t File::Fetch tests cpan/File-Fetch/t/null_subclass.t @@ -1145,6 +1154,7 @@ cpan/IO-Compress/t/files/jar.zip cpan/IO-Compress/t/files/meta.xml cpan/IO-Compress/t/files/test.ods +cpan/IO-Compress/t/files/testfile1.odt cpan/IO-Compress/t/globmapper.t IO::Compress cpan/IO-Socket-IP/lib/IO/Socket/IP.pm IO::Socket::IP cpan/IO-Socket-IP/t/00use.t IO::Socket::IP tests @@ -1271,7 +1281,6 @@ cpan/libnet/t/datasend.t libnet cpan/libnet/t/ftp.t libnet cpan/libnet/t/hostname.t libnet -cpan/libnet/t/libnet_t.pl libnet cpan/libnet/t/netrc.t libnet cpan/libnet/t/nntp.t libnet cpan/libnet/t/nntp_ipv6.t @@ -1449,10 +1458,11 @@ cpan/Memoize/t/tie_storable.t Memoize Storable interface test cpan/Memoize/t/tiefeatures.t Memoize FAULT / MERGE / HASH options test cpan/Memoize/t/unmemoize.t Memoize 'unmemoize' function test -cpan/MIME-Base64/Base64.pm MIME::Base64 extension cpan/MIME-Base64/Base64.xs MIME::Base64 extension -cpan/MIME-Base64/QuotedPrint.pm MIME::Base64 extension +cpan/MIME-Base64/lib/MIME/Base64.pm +cpan/MIME-Base64/lib/MIME/QuotedPrint.pm cpan/MIME-Base64/t/base64.t See whether MIME::Base64 works +cpan/MIME-Base64/t/base64url.t cpan/MIME-Base64/t/length.t See whether MIME::QuotedPrint works cpan/MIME-Base64/t/quoted-print.t See whether MIME::QuotedPrint works cpan/MIME-Base64/t/unicode.t See whether MIME::Base64 works @@ -1536,6 +1546,10 @@ cpan/perlfaq/lib/perlfaq9.pod Networking cpan/perlfaq/lib/perlglossary.pod Perl Glossary cpan/PerlIO-via-QuotedPrint/lib/PerlIO/via/QuotedPrint.pm PerlIO::via::QuotedPrint +cpan/PerlIO-via-QuotedPrint/t/changes.t +cpan/PerlIO-via-QuotedPrint/t/critic.t +cpan/PerlIO-via-QuotedPrint/t/pod.t +cpan/PerlIO-via-QuotedPrint/t/pod_coverage.t cpan/PerlIO-via-QuotedPrint/t/QuotedPrint.t PerlIO::via::QuotedPrint cpan/Pod-Checker/lib/Pod/Checker.pm cpan/Pod-Checker/scripts/podchecker.PL @@ -1546,6 +1560,7 @@ cpan/Pod-Checker/t/pod/podchklink.t cpan/Pod-Checker/t/pod/poderrs.t cpan/Pod-Checker/t/pod/poderrs.xr +cpan/Pod-Checker/t/pod/podname.t cpan/Pod-Checker/t/pod/selfcheck.t cpan/Pod-Checker/t/pod/testcmp.pl cpan/Pod-Checker/t/pod/testpchk.pl @@ -1721,6 +1736,7 @@ cpan/Pod-Simple/t/JustPod01.t cpan/Pod-Simple/t/JustPod02.t cpan/Pod-Simple/t/JustPod_corpus.t +cpan/Pod-Simple/t/lib/helpers.pm Pod::Simple test file cpan/Pod-Simple/t/linkclas.t Pod::Simple test file cpan/Pod-Simple/t/output.t Pod::Simple test file cpan/Pod-Simple/t/perlcyg.pod Pod::Simple test file @@ -2251,6 +2267,11 @@ cpan/Test-Simple/lib/Test2/API/Breakage.pm cpan/Test-Simple/lib/Test2/API/Context.pm cpan/Test-Simple/lib/Test2/API/Instance.pm +cpan/Test-Simple/lib/Test2/API/InterceptResult.pm +cpan/Test-Simple/lib/Test2/API/InterceptResult/Event.pm +cpan/Test-Simple/lib/Test2/API/InterceptResult/Facet.pm +cpan/Test-Simple/lib/Test2/API/InterceptResult/Hub.pm +cpan/Test-Simple/lib/Test2/API/InterceptResult/Squasher.pm cpan/Test-Simple/lib/Test2/API/Stack.pm cpan/Test-Simple/lib/Test2/Event.pm cpan/Test-Simple/lib/Test2/Event/Bail.pm @@ -2383,6 +2404,8 @@ cpan/Test-Simple/t/Legacy/Regression/6_cmp_ok.t cpan/Test-Simple/t/Legacy/Regression/736_use_ok.t cpan/Test-Simple/t/Legacy/Regression/789-read-only.t +cpan/Test-Simple/t/Legacy/Regression/870-experimental-warnings.t +cpan/Test-Simple/t/Legacy/Regression/is_capture.t cpan/Test-Simple/t/Legacy/require_ok.t cpan/Test-Simple/t/Legacy/run_test.t cpan/Test-Simple/t/Legacy/simple.t @@ -2468,6 +2491,7 @@ cpan/Test-Simple/t/regression/757-reset_in_subtest.t cpan/Test-Simple/t/regression/812-todo.t cpan/Test-Simple/t/regression/817-subtest-todo.t +cpan/Test-Simple/t/regression/862-intercept_tb_todo.t cpan/Test-Simple/t/regression/buffered_subtest_plan_buffered.t cpan/Test-Simple/t/regression/builder_does_not_init.t cpan/Test-Simple/t/regression/errors_facet.t @@ -2509,6 +2533,9 @@ cpan/Test-Simple/t/Test2/modules/API/Breakage.t cpan/Test-Simple/t/Test2/modules/API/Context.t cpan/Test-Simple/t/Test2/modules/API/Instance.t +cpan/Test-Simple/t/Test2/modules/API/InterceptResult.t +cpan/Test-Simple/t/Test2/modules/API/InterceptResult/Event.t +cpan/Test-Simple/t/Test2/modules/API/InterceptResult/Squasher.t cpan/Test-Simple/t/Test2/modules/API/Stack.t cpan/Test-Simple/t/Test2/modules/Event.t cpan/Test-Simple/t/Test2/modules/Event/Bail.t @@ -2564,6 +2591,11 @@ cpan/Text-Balanced/t/07_exttag.t See if Text::Balanced works cpan/Text-Balanced/t/08_extvar.t See if Text::Balanced works cpan/Text-Balanced/t/09_gentag.t See if Text::Balanced works +cpan/Text-Balanced/t/94_changes.t +cpan/Text-Balanced/t/95_critic.t +cpan/Text-Balanced/t/96_pmv.t +cpan/Text-Balanced/t/97_pod.t +cpan/Text-Balanced/t/98_pod_coverage.t cpan/Text-ParseWords/lib/Text/ParseWords.pm Perl module to split words on arbitrary delimiter cpan/Text-ParseWords/t/ParseWords.t See if Text::ParseWords works cpan/Text-ParseWords/t/taint.t See if Text::ParseWords works with tainting @@ -2731,6 +2763,7 @@ cpan/Unicode-Collate/t/illegal.t Unicode::Collate cpan/Unicode-Collate/t/illegalp.t Unicode::Collate cpan/Unicode-Collate/t/index.t Unicode::Collate +cpan/Unicode-Collate/t/khitan.t Unicode::Collate cpan/Unicode-Collate/t/loc_af.t Unicode::Collate cpan/Unicode-Collate/t/loc_ar.t Unicode::Collate cpan/Unicode-Collate/t/loc_as.t Unicode::Collate @@ -2879,6 +2912,7 @@ cpan/Win32/t/GetShortPathName.t See if Win32 extension works cpan/Win32/t/GuidGen.t See if Win32 extension works cpan/Win32/t/Names.t See if Win32 extension works +cpan/Win32/t/Privileges.t cpan/Win32/t/Unicode.t See if Win32 extension works cpan/Win32/Win32.pm Win32 extension Perl module cpan/Win32/Win32.xs Win32 extension external subroutines @@ -3024,6 +3058,7 @@ dist/Devel-PPPort/devel/mktodo.pl Devel::PPPort baseline/todo generator dist/Devel-PPPort/devel/regenerate Devel::PPPort API re-generator dist/Devel-PPPort/devel/scanprov Devel::PPPort provided API scanner +dist/Devel-PPPort/devel/update_release_date.pl Devel::PPPort timestamp builder dist/Devel-PPPort/HACKERS Devel::PPPort hackers documentation dist/Devel-PPPort/Makefile.PL Devel::PPPort makefile writer dist/Devel-PPPort/MANIFEST.SKIP Devel::PPPort manifest skip file @@ -3208,6 +3243,8 @@ dist/Devel-PPPort/parts/base/5027011 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/base/5028000 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/base/5028001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5028002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5028003 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/base/5029000 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/base/5029001 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/base/5029002 Devel::PPPort baseline todo file @@ -3220,6 +3257,10 @@ dist/Devel-PPPort/parts/base/5029009 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/base/5029010 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/base/5030000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5030001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5030002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5030003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5031000 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/base/5031001 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/base/5031002 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/base/5031003 Devel::PPPort baseline todo file @@ -3228,6 +3269,13 @@ dist/Devel-PPPort/parts/base/5031006 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/base/5031007 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/base/5031008 +dist/Devel-PPPort/parts/base/5031009 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5031010 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5031011 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5032000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5033000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5033001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5033002 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/embed.fnc Devel::PPPort Perl API listing dist/Devel-PPPort/parts/inc/01_test Devel::PPPort include dist/Devel-PPPort/parts/inc/call Devel::PPPort include @@ -3450,6 +3498,8 @@ dist/Devel-PPPort/parts/todo/5027011 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/todo/5028000 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/todo/5028001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5028002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5028003 Devel::PPPort todo file dist/Devel-PPPort/parts/todo/5029000 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/todo/5029001 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/todo/5029002 Devel::PPPort baseline todo file @@ -3462,6 +3512,10 @@ dist/Devel-PPPort/parts/todo/5029009 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/todo/5029010 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/todo/5030000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5030001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5030002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5030003 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5031000 Devel::PPPort todo file dist/Devel-PPPort/parts/todo/5031001 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/todo/5031002 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/todo/5031003 Devel::PPPort baseline todo file @@ -3470,49 +3524,19 @@ dist/Devel-PPPort/parts/todo/5031006 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/todo/5031007 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/todo/5031008 +dist/Devel-PPPort/parts/todo/5031009 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5031010 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5031011 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5032000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5033000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5033001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5033002 Devel::PPPort todo file dist/Devel-PPPort/PPPort.xs Devel::PPPort dummy PPPort.xs dist/Devel-PPPort/ppport_h.PL Devel::PPPort ppport.h writer dist/Devel-PPPort/PPPort_pm.PL Devel::PPPort PPPort.pm writer dist/Devel-PPPort/RealPPPort_xs.PL Devel::PPPort RealPPPort.xs writer dist/Devel-PPPort/soak Devel::PPPort Test Harness to run under various Perls -dist/Devel-PPPort/t/01_test.t Devel::PPPort test file -dist/Devel-PPPort/t/call.t Devel::PPPort test file -dist/Devel-PPPort/t/cop.t Devel::PPPort test file -dist/Devel-PPPort/t/exception.t Devel::PPPort test file -dist/Devel-PPPort/t/format.t Devel::PPPort test file -dist/Devel-PPPort/t/grok.t Devel::PPPort test file -dist/Devel-PPPort/t/gv.t Devel::PPPort test file -dist/Devel-PPPort/t/HvNAME.t Devel::PPPort test file -dist/Devel-PPPort/t/limits.t Devel::PPPort test file -dist/Devel-PPPort/t/locale.t -dist/Devel-PPPort/t/magic.t Devel::PPPort test file -dist/Devel-PPPort/t/memory.t Devel::PPPort test file -dist/Devel-PPPort/t/mess.t Devel::PPPort test file -dist/Devel-PPPort/t/misc.t Devel::PPPort test file -dist/Devel-PPPort/t/mPUSH.t Devel::PPPort test file -dist/Devel-PPPort/t/MY_CXT.t Devel::PPPort test file -dist/Devel-PPPort/t/newCONSTSUB.t Devel::PPPort test file -dist/Devel-PPPort/t/newRV.t Devel::PPPort test file -dist/Devel-PPPort/t/newSV_type.t Devel::PPPort test file -dist/Devel-PPPort/t/newSVpv.t Devel::PPPort test file -dist/Devel-PPPort/t/podtest.t Devel::PPPort test file -dist/Devel-PPPort/t/ppphtest.t Devel::PPPort test file -dist/Devel-PPPort/t/pv_tools.t Devel::PPPort test file -dist/Devel-PPPort/t/pvs.t Devel::PPPort test file -dist/Devel-PPPort/t/shared_pv.t Devel::PPPort test file -dist/Devel-PPPort/t/snprintf.t Devel::PPPort test file -dist/Devel-PPPort/t/sprintf.t Devel::PPPort test file -dist/Devel-PPPort/t/strlfuncs.t Devel::PPPort test file -dist/Devel-PPPort/t/Sv_set.t Devel::PPPort test file -dist/Devel-PPPort/t/sv_xpvf.t Devel::PPPort test file -dist/Devel-PPPort/t/SvPV.t Devel::PPPort test file -dist/Devel-PPPort/t/SvREFCNT.t Devel::PPPort test file -dist/Devel-PPPort/t/testutil.pl Devel::PPPort test utilities -dist/Devel-PPPort/t/threads.t Devel::PPPort test file -dist/Devel-PPPort/t/utf8.t -dist/Devel-PPPort/t/uv.t Devel::PPPort test file -dist/Devel-PPPort/t/variables.t Devel::PPPort test file -dist/Devel-PPPort/t/warn.t Devel::PPPort test file +dist/Devel-PPPort/t/testutil.pl Devel::PPPort test utilities dist/Devel-PPPort/TODO Devel::PPPort developer notes dist/Devel-PPPort/typemap Devel::PPPort Typemap dist/Devel-SelfStubber/lib/Devel/SelfStubber.pm Generate stubs for SelfLoader.pm @@ -3615,6 +3639,7 @@ dist/ExtUtils-ParseXS/t/lib/TypemapTest/Foo.pm ExtUtils::Typemaps tests dist/ExtUtils-ParseXS/t/pseudotypemap1 A test-typemap dist/ExtUtils-ParseXS/t/typemap Standard typemap for controlled testing +dist/ExtUtils-ParseXS/t/XSBroken.xs Test file for ExtUtils::ParseXS tests dist/ExtUtils-ParseXS/t/XSInclude.xsh Test file for ExtUtils::ParseXS tests dist/ExtUtils-ParseXS/t/XSMore.xs Test file for ExtUtils::ParseXS tests dist/ExtUtils-ParseXS/t/XSTest.pm Test file for ExtUtils::ParseXS tests @@ -3695,6 +3720,7 @@ dist/IO/t/io_poll.t See if poll()-related methods from IO work dist/IO/t/io_sel.t See if select()-related methods from IO work dist/IO/t/io_sock.t See if INET socket-related methods from IO work +dist/IO/t/io_sock_errstr.t See if socket constructors put error string in the right place dist/IO/t/io_taint.t See if the untaint method from IO works dist/IO/t/io_tell.t See if seek()/tell()-related methods from IO work dist/IO/t/io_udp.t See if UDP socket-related methods from IO work @@ -4109,6 +4135,7 @@ ext/B/t/f_map.t converted to optreeCheck()s ext/B/t/f_sort optree test raw material ext/B/t/f_sort.t optree test raw material +ext/B/t/invlist.t test B::INVLIST ext/B/t/o.t See if O works ext/B/t/optree_check.t test OptreeCheck apparatus ext/B/t/optree_concise.t more B::Concise tests @@ -4139,7 +4166,6 @@ ext/DynaLoader/dl_freemint.xs GNU dld style implementation for FreeMINT ext/DynaLoader/dl_hpux.xs HP-UX implementation ext/DynaLoader/dl_none.xs Stub implementation -ext/DynaLoader/dl_symbian.xs Symbian implementation ext/DynaLoader/dl_vms.xs VMS implementation ext/DynaLoader/dl_win32.xs Win32 implementation ext/DynaLoader/dlutils.c Dynamic loader utilities for dl_*.xs files @@ -4199,8 +4225,10 @@ ext/GDBM_File/GDBM_File.xs GDBM extension external subroutines ext/GDBM_File/hints/sco.pl Hint for GDBM_File for named architecture ext/GDBM_File/Makefile.PL GDBM extension makefile writer +ext/GDBM_File/t/count.t Test if the count method works ext/GDBM_File/t/fatal.t Test the fatal_func argument to gdbm_open ext/GDBM_File/t/gdbm.t See if GDBM_File works +ext/GDBM_File/t/opt.t Test if gdbm_setopt and derived methods work ext/GDBM_File/typemap GDBM extension interface types ext/Hash-Util/Changes Change history of Hash::Util ext/Hash-Util/lib/Hash/Util.pm Hash::Util @@ -4342,6 +4370,7 @@ ext/POSIX/POSIX.xs POSIX extension external subroutines ext/POSIX/t/export.t Test @EXPORT and @EXPORT_OK ext/POSIX/t/iscrash See if POSIX isxxx() crashes with threads on Win32 +ext/POSIX/t/iv_const.t See if integer constants of POSIX are IV ext/POSIX/t/math.t Basic math tests for POSIX ext/POSIX/t/mb.t Multibyte function tests for POSIX ext/POSIX/t/posix.t See if POSIX works @@ -4453,6 +4482,7 @@ ext/XS-APItest/t/copyhints.t test hv_copy_hints_hv() API ext/XS-APItest/t/customop.t XS::APItest: tests for custom ops ext/XS-APItest/t/cv_name.t test cv_name +ext/XS-APItest/t/delimcpy.t test delimcpy ext/XS-APItest/t/eval-filter.t Simple source filter/eval test ext/XS-APItest/t/exception.t XS::APItest extension ext/XS-APItest/t/extend.t test EXTEND() macro @@ -4807,6 +4837,8 @@ lib/perl5db/t/fact Tests for the Perl debugger lib/perl5db/t/filename-line-breakpoint Tests for the Perl debugger lib/perl5db/t/gh-17660 Tests for the Perl debugger +lib/perl5db/t/gh-17661 Tests for the Perl debugger +lib/perl5db/t/gh-17661b Tests for the Perl debugger lib/perl5db/t/load-modules Tests for the Perl debugger lib/perl5db/t/lsub-n Test script used by perl5db.t lib/perl5db/t/lvalue-bug Tests for the Perl debugger @@ -4825,6 +4857,7 @@ lib/perl5db/t/taint Tests for the Perl debugger lib/perl5db/t/test-a-statement-1 Tests for the Perl debugger lib/perl5db/t/test-a-statement-2 Tests for the Perl debugger +lib/perl5db/t/test-a-statement-3 Tests for the Perl debugger lib/perl5db/t/test-dieLevel-option-1 Tests for the Perl debugger lib/perl5db/t/test-frame-option-1 Tests for the Perl debugger lib/perl5db/t/test-l-statement-1 Tests for the Perl debugger @@ -5112,8 +5145,8 @@ perl.h Global declarations perl_inc_macro.h macro used to set \@INC using S_incpush_use_sep perl_langinfo.h Perl's version of -perlapi.c Perl API functions -perlapi.h Perl API function declarations +perl_siphash.h Implementation of SipHash +perlapi.h Empty backwards-compat include perldtrace.d D script for Perl probes perlio.c C code for PerlIO abstraction perlio.h PerlIO abstraction @@ -5126,20 +5159,23 @@ perly.h header file for perly.c; derived from perly.y perly.tab parser state tables; derived from perly.y perly.y Yacc grammar for perl -plan9/aperl Shell to make Perl error messages Acme-friendly +plan9/9front.patch Plan9 port: patch for 9front-specific flavor of Plan 9 +plan9/aperl Plan9 port: shell to make Perl error messages Acme-friendly plan9/arpa/inet.h Plan9 port: replacement C header file plan9/buildinfo Plan9 port: configuration information plan9/config.plan9 Plan9 port: config.h template -plan9/config_h.sample Plan9 port: 5.8.0 sample config.h -plan9/config_sh.sample Plan9 port: 5.8.0 sample config.sh +plan9/config_h.sample Plan9 port: 5.32.0 sample config.h +plan9/config_sh.sample Plan9 port: 5.32.0 sample config.sh plan9/exclude Plan9 port: tests to skip plan9/fndvers Plan9 port: update Perl version in config.plan9 plan9/genconfig.pl Plan9 port: generate config.sh +plan9/math.h Plan9 port: Plan9-specific math.h plan9/mkfile Plan9 port: Mk driver for build plan9/myconfig.plan9 Plan9 port: script to print config summary plan9/plan9.c Plan9 port: Plan9-specific C routines plan9/plan9ish.h Plan9 port: Plan9-specific C header file plan9/setup.rc Plan9 port: script for easy build+install +plan9/uninstall.rc Plan9 port: uninstall script plan9/versnum Plan9 port: script to print version number pod/buildtoc Generate pod/perltoc.pod and pod/roffitall pod/Makefile.SH generate Makefile which makes pods into something else @@ -5194,6 +5230,7 @@ pod/perl5302delta.pod Perl changes in version 5.30.2 pod/perl5303delta.pod Perl changes in version 5.30.3 pod/perl5320delta.pod Perl changes in version 5.32.0 +pod/perl5321delta.pod Perl changes in version 5.32.1 pod/perl561delta.pod Perl changes in version 5.6.1 pod/perl56delta.pod Perl changes in version 5.6 pod/perl581delta.pod Perl changes in version 5.8.1 @@ -5223,6 +5260,7 @@ pod/perldelta.pod Perl changes since previous version pod/perldeprecation.pod Perl deprecations pod/perldiag.pod Perl diagnostic messages +pod/perldocstyle.pod Perl style guide for core docs pod/perldsc.pod Perl data structures intro pod/perldtrace.pod Perl's support for DTrace pod/perlebcdic.pod Considerations for running Perl on EBCDIC platforms @@ -5304,6 +5342,7 @@ Policy_sh.SH Hold site-wide preferences between Configure runs. Porting/acknowledgements.pl Generate perldelta acknowledgements text Porting/add-package.pl Add/Update CPAN modules that are part of Core +Porting/add-pod-file Utility to add new pod/*.pod file to core distribution Porting/bench.pl Run benchmarks against t/perf/benchmarks Porting/bisect.pl A tool to make bisecting easy Porting/bisect-example.sh Example script to use with git bisect run @@ -5318,7 +5357,6 @@ Porting/checkpodencoding.pl Check POD encoding Porting/checkURL.pl Check whether we have working URLs Porting/checkVERSION.pl Check whether we have $VERSIONs -Porting/cherrymaint Command line tool for updating cherrymaint Porting/cmpVERSION.pl Compare whether two trees have changed modules Porting/config.sh Sample config.sh Porting/config_H Sample config.h @@ -5393,7 +5431,7 @@ README.amiga Perl notes for AmigaOS README.android Perl notes for Android README.bs2000 Perl notes for POSIX-BC BS2000 -README.cn Perl for Simplified Chinese (in EUC-CN) +README.cn Perl for Simplified Chinese (in UTF-8) README.cygwin Perl notes for Cygwin README.dos Perl notes for DOS README.freebsd Perl notes for FreeBSD @@ -5416,7 +5454,6 @@ README.qnx Perl notes for QNX README.riscos Perl notes for RISC OS README.solaris Perl notes for Solaris -README.symbian Perl notes for Symbian README.synology Perl notes for Synology README.tru64 Perl notes for Tru64 README.tw Perl for Traditional Chinese (in Big5) @@ -5465,59 +5502,8 @@ scope.c Scope entry and exit code scope.h Scope entry and exit header SECURITY.md Add Security Policy for GitHub -stadtx_hash.h StadtX hash code (64 Bit fast hash function) sv.c Scalar value code sv.h Scalar value header -symbian/bld.inf Symbian sample app build config -symbian/config.pl Configuration script for Symbian -symbian/config.sh Configuration data for Symbian -symbian/cwd.pl Helper code for config.pl -symbian/demo_pl "Archive" of demo code -symbian/ext/Moped/Msg/bld.inf Demo extension build configuration -symbian/ext/Moped/Msg/location.pl Demo extension script -symbian/ext/Moped/Msg/Msg.mmp Demo extension building -symbian/ext/Moped/Msg/Msg.pkg Demo extension packaging -symbian/ext/Moped/Msg/Msg.pm Demo extension Perl glue -symbian/ext/Moped/Msg/Msg.xs Demo extension code -symbian/ext/Moped/Msg/README Demo extension documentation -symbian/find_writeable_data.pl Development utility -symbian/hexdump.pl Helper for sisify.pl updating -symbian/install.cfg Installation instructions -symbian/makesis.pl Installation file creator -symbian/PerlApp.cpp Symbian app launcher code -symbian/PerlApp.h Symbian app launcher header -symbian/PerlApp.hrh Symbian app launcher resource header -symbian/PerlAppAif.rss Symbian app launcher code -symbian/PerlBase.cpp Symbian Perl base class -symbian/PerlBase.h Symbian Perl base class header -symbian/PerlBase.pod Symbian Perl base class documentation -symbian/PerlRecog.cpp Symbian recognizer code -symbian/PerlRecog.mmp Symbian recognizer build -symbian/PerlUi.cpp Symbian Perl UI class -symbian/PerlUi.h Symbian Perl UI class header -symbian/PerlUi.hrh Symbian Perl UI class resource header -symbian/PerlUiS60.rss Symbian app launcher resource definition -symbian/PerlUiS80.rss Symbian app launcher resource definition -symbian/PerlUiS90.rss Symbian app launcher resource definition -symbian/PerlUiUIQ.rss Symbian app launcher resource definition -symbian/PerlUtil.cpp Symbian Perl utility class -symbian/PerlUtil.h Symbian Perl utility class header -symbian/PerlUtil.pod Symbian Perl utility class documentation -symbian/port.pl Helper code for config.pl -symbian/README ReadMe for the Symbian files -symbian/sanity.pl Helper code for config.pl -symbian/sdk.pl Helper code for config.pl -symbian/sisify.pl Packaging utility -symbian/symbian_dll.cpp The DLL stub for Symbian -symbian/symbian_proto.h Prototypes for Symbian -symbian/symbian_stubs.c Stub routines for Symbian -symbian/symbian_stubs.h Stub headers for Symbian -symbian/symbian_utils.cpp Helper routines for Symbian -symbian/symbianish.h Header for Symbian -symbian/TODO Symbian things to do -symbian/uid.pl Helper code for config.pl -symbian/version.pl Helper code for config.pl -symbian/xsbuild.pl Building extensions t/base/cond.t See if conditionals work t/base/if.t See if if works t/base/lex.t See if lexical items work @@ -5589,6 +5575,7 @@ t/io/iofile.t See if we can load IO::File on demand t/io/iprefix.t See if inplace editing works with prefixes t/io/layers.t See if PerlIO layers work +t/io/msg.t See if SysV message queues work t/io/nargv.t See if nested ARGV stuff works t/io/open.t See if open works t/io/openpid.t See if open works for subprocesses @@ -5637,10 +5624,12 @@ t/lib/Devel/switchd.pm Module for t/run/switchd.t t/lib/Devel/switchd_empty.pm Module for t/run/switchd.t t/lib/Devel/switchd_goto.pm Module for t/run/switchd.t +t/lib/feature/bareword_filehandles Tests for enabling/disabling bareword_filehandles feature t/lib/feature/bits Tests for feature bit handling t/lib/feature/bundle Tests for feature bundles t/lib/feature/implicit Tests for implicit loading of feature.pm t/lib/feature/indirect Tests for enabling/disabling indirect method calls +t/lib/feature/multidimensional Tests for enabling/disabling $foo{$x, $y} => $foo{join($;, $x, $y)} t/lib/feature/nonesuch Tests for enabling/disabling nonexistent feature t/lib/feature/removed Tests for enabling/disabling removed feature t/lib/feature/say Tests for enabling/disabling say feature @@ -5779,6 +5768,7 @@ t/op/anonsub.t See if anonymous subroutines work t/op/append.t See if . works t/op/args.t See if operations on @_ work +t/op/arith2.t See if arithmetic works t/op/array.t See if array operations work t/op/assignwarn.t See if OP= operators warn correctly for undef targets t/op/attrhand.t See if attribute handlers work @@ -5968,6 +5958,7 @@ t/op/time_loop.t Test that very large values don't hang gmtime and localtime. t/op/tr.t See if tr works t/op/tr_latin1.t See if tr works, but file isn't encoded in UTF-8 +t/op/try.t See if try works t/op/undef.t See if undef works t/op/universal.t See if UNIVERSAL class works t/op/unlink.t See if unlink works @@ -6054,6 +6045,7 @@ t/re/fold_grind_u.t Wrapper for fold_grind.pl for /u testing t/re/keep_tabs.t Tests where \t can't be expanded. t/re/no_utf8_pm.t Verify utf8.pm doesn't get loaded unless required +t/re/opt.t Test regexp optimizations t/re/overload.t Test against string corruption in pattern matches on overloaded objects t/re/pat.t See if esoteric patterns work t/re/pat_advanced.t See if advanced esoteric patterns work @@ -6193,6 +6185,8 @@ t/win32/popen.t Test for stdout races in backticks, etc t/win32/runenv.t Test if Win* perl honors its env variables t/win32/signal.t Test Win32 signal emulation +t/win32/stat.t Test Win32 stat emulation +t/win32/symlink.t Test Win32 symlink t/win32/system.t See if system works in Win* t/win32/system_tests Test runner for system.t taint.c Tainting code @@ -6284,7 +6278,6 @@ win32/include/sys/socket.h Win32 port win32/list_static_libs.pl prints libraries for static linking win32/Makefile Win32 makefile for NMAKE (Visual C++ build) -win32/makefile.mk Win32 makefile for DMAKE (BC++, VC++ builds) win32/perlexe.ico perlexe.ico image file win32/perlexe.manifest Assembly manifest file win32/perlexe.rc associated perl binary with icon diff -Nru perl-5.32.1/mathoms.c perl-5.34.0/mathoms.c --- perl-5.32.1/mathoms.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/mathoms.c 2021-01-20 23:04:44.000000000 +0000 @@ -50,7 +50,7 @@ * * Some blurb for perlapi.pod: -=head1 Obsolete backwards compatibility functions + head1 Obsolete backwards compatibility functions Some of these are also deprecated. You can exclude these from your compiled Perl by adding this option to Configure: @@ -85,6 +85,7 @@ } /* +=for apidoc_section $SV =for apidoc sv_unref Unsets the RV status of the SV, and decrements the reference count of @@ -243,11 +244,11 @@ */ void -Perl_sv_setsv(pTHX_ SV *dstr, SV *sstr) +Perl_sv_setsv(pTHX_ SV *dsv, SV *ssv) { PERL_ARGS_ASSERT_SV_SETSV; - sv_setsv_flags(dstr, sstr, SV_GMAGIC); + sv_setsv_flags(dsv, ssv, SV_GMAGIC); } /* sv_catpvn() is now a macro using Perl_sv_catpvn_flags(); @@ -262,20 +263,12 @@ sv_catpvn_flags(dsv, sstr, slen, SV_GMAGIC); } -/* -=for apidoc sv_catpvn_mg - -Like C, but also handles 'set' magic. - -=cut -*/ - void -Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len) +Perl_sv_catpvn_mg(pTHX_ SV *dsv, const char *sstr, STRLEN len) { PERL_ARGS_ASSERT_SV_CATPVN_MG; - sv_catpvn_flags(sv,ptr,len,SV_GMAGIC|SV_SMAGIC); + sv_catpvn_flags(dsv,sstr,len,SV_GMAGIC|SV_SMAGIC); } /* sv_catsv() is now a macro using Perl_sv_catsv_flags(); @@ -283,27 +276,19 @@ */ void -Perl_sv_catsv(pTHX_ SV *dstr, SV *sstr) +Perl_sv_catsv(pTHX_ SV *dsv, SV *sstr) { PERL_ARGS_ASSERT_SV_CATSV; - sv_catsv_flags(dstr, sstr, SV_GMAGIC); + sv_catsv_flags(dsv, sstr, SV_GMAGIC); } -/* -=for apidoc sv_catsv_mg - -Like C, but also handles 'set' magic. - -=cut -*/ - void -Perl_sv_catsv_mg(pTHX_ SV *dsv, SV *ssv) +Perl_sv_catsv_mg(pTHX_ SV *dsv, SV *sstr) { PERL_ARGS_ASSERT_SV_CATSV_MG; - sv_catsv_flags(dsv,ssv,SV_GMAGIC|SV_SMAGIC); + sv_catsv_flags(dsv,sstr,SV_GMAGIC|SV_SMAGIC); } /* @@ -321,9 +306,9 @@ PERL_ARGS_ASSERT_SV_IV; if (SvIOK(sv)) { - if (SvIsUV(sv)) - return (IV)SvUVX(sv); - return SvIVX(sv); + if (SvIsUV(sv)) + return (IV)SvUVX(sv); + return SvIVX(sv); } return sv_2iv(sv); } @@ -343,9 +328,9 @@ PERL_ARGS_ASSERT_SV_UV; if (SvIOK(sv)) { - if (SvIsUV(sv)) - return SvUVX(sv); - return (UV)SvIVX(sv); + if (SvIsUV(sv)) + return SvUVX(sv); + return (UV)SvIVX(sv); } return sv_2uv(sv); } @@ -365,7 +350,7 @@ PERL_ARGS_ASSERT_SV_NV; if (SvNOK(sv)) - return SvNVX(sv); + return SvNVX(sv); return sv_2nv(sv); } @@ -388,8 +373,8 @@ PERL_ARGS_ASSERT_SV_PVN; if (SvPOK(sv)) { - *lp = SvCUR(sv); - return SvPVX(sv); + *lp = SvCUR(sv); + return SvPVX(sv); } return sv_2pv(sv, lp); } @@ -401,8 +386,8 @@ PERL_ARGS_ASSERT_SV_PVN_NOMG; if (SvPOK(sv)) { - *lp = SvCUR(sv); - return SvPVX(sv); + *lp = SvCUR(sv); + return SvPVX(sv); } return sv_2pv_flags(sv, lp, 0); } @@ -605,6 +590,7 @@ } /* +=for apidoc_section $GV =for apidoc gv_fetchmethod See L. @@ -638,12 +624,12 @@ bool Perl_do_open(pTHX_ GV *gv, const char *name, I32 len, int as_raw, - int rawmode, int rawperm, PerlIO *supplied_fp) + int rawmode, int rawperm, PerlIO *supplied_fp) { PERL_ARGS_ASSERT_DO_OPEN; return do_openn(gv, name, len, as_raw, rawmode, rawperm, - supplied_fp, (SV **) NULL, 0); + supplied_fp, (SV **) NULL, 0); } bool @@ -702,6 +688,7 @@ } /* +=for apidoc_section $SV =for apidoc sv_nolocking Dummy routine which "locks" an SV when there is no locking module present. @@ -773,14 +760,14 @@ PERL_ARGS_ASSERT_SAVE_LIST; for (i = 1; i <= maxsarg; i++) { - SV *sv; - SvGETMAGIC(sarg[i]); - sv = newSV(0); - sv_setsv_nomg(sv,sarg[i]); - SSCHECK(3); - SSPUSHPTR(sarg[i]); /* remember the pointer */ - SSPUSHPTR(sv); /* remember the value */ - SSPUSHUV(SAVEt_ITEM); + SV *sv; + SvGETMAGIC(sarg[i]); + sv = newSV(0); + sv_setsv_nomg(sv,sarg[i]); + SSCHECK(3); + SSPUSHPTR(sarg[i]); /* remember the pointer */ + SSPUSHPTR(sv); /* remember the value */ + SSPUSHUV(SAVEt_ITEM); } } @@ -819,6 +806,7 @@ } /* +=for apidoc_section $pack =for apidoc unpack_str The engine implementing C Perl function. Note: parameters C, @@ -829,8 +817,8 @@ SSize_t Perl_unpack_str(pTHX_ const char *pat, const char *patend, const char *s, - const char *strbeg, const char *strend, char **new_s, I32 ocnt, - U32 flags) + const char *strbeg, const char *strend, char **new_s, I32 ocnt, + U32 flags) { PERL_ARGS_ASSERT_UNPACK_STR; @@ -846,7 +834,7 @@ The engine implementing C Perl function. Note: parameters C and C are not used. This call should not be used; use -C instead. +C> instead. =cut */ @@ -882,7 +870,7 @@ PERL_ARGS_ASSERT_HV_FETCH_ENT; return (HE *)hv_common(hv, keysv, NULL, 0, 0, - (lval ? HV_FETCH_LVALUE : 0), NULL, hash); + (lval ? HV_FETCH_LVALUE : 0), NULL, hash); } SV * @@ -891,15 +879,15 @@ PERL_ARGS_ASSERT_HV_DELETE_ENT; return MUTABLE_SV(hv_common(hv, keysv, NULL, 0, 0, flags | HV_DELETE, NULL, - hash)); + hash)); } SV** Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash, - int flags) + int flags) { return (SV**) hv_common(hv, NULL, key, klen, flags, - (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), val, hash); + (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), val, hash); } SV** @@ -909,14 +897,14 @@ int flags; if (klen_i32 < 0) { - klen = -klen_i32; - flags = HVhek_UTF8; + klen = -klen_i32; + flags = HVhek_UTF8; } else { - klen = klen_i32; - flags = 0; + klen = klen_i32; + flags = 0; } return (SV **) hv_common(hv, NULL, key, klen, flags, - (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), val, hash); + (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), val, hash); } bool @@ -928,11 +916,11 @@ PERL_ARGS_ASSERT_HV_EXISTS; if (klen_i32 < 0) { - klen = -klen_i32; - flags = HVhek_UTF8; + klen = -klen_i32; + flags = HVhek_UTF8; } else { - klen = klen_i32; - flags = 0; + klen = klen_i32; + flags = 0; } return cBOOL(hv_common(hv, NULL, key, klen, flags, HV_FETCH_ISEXISTS, 0, 0)); } @@ -946,15 +934,15 @@ PERL_ARGS_ASSERT_HV_FETCH; if (klen_i32 < 0) { - klen = -klen_i32; - flags = HVhek_UTF8; + klen = -klen_i32; + flags = HVhek_UTF8; } else { - klen = klen_i32; - flags = 0; + klen = klen_i32; + flags = 0; } return (SV **) hv_common(hv, NULL, key, klen, flags, - lval ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) - : HV_FETCH_JUST_SV, NULL, 0); + lval ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) + : HV_FETCH_JUST_SV, NULL, 0); } SV * @@ -966,14 +954,14 @@ PERL_ARGS_ASSERT_HV_DELETE; if (klen_i32 < 0) { - klen = -klen_i32; - k_flags = HVhek_UTF8; + klen = -klen_i32; + k_flags = HVhek_UTF8; } else { - klen = klen_i32; - k_flags = 0; + klen = klen_i32; + k_flags = 0; } return MUTABLE_SV(hv_common(hv, NULL, key, klen, k_flags, flags | HV_DELETE, - NULL, 0)); + NULL, 0)); } AV * @@ -1115,6 +1103,7 @@ /* +=for apidoc_section $custom =for apidoc custom_op_name Return the name for a given custom op. This was once used by the C macro, but is no longer: it has only been kept for compatibility, and @@ -1149,9 +1138,9 @@ } SV * -Perl_sv_mortalcopy(pTHX_ SV *const oldstr) +Perl_sv_mortalcopy(pTHX_ SV *const oldsv) { - return Perl_sv_mortalcopy_flags(aTHX_ oldstr, SV_GMAGIC); + return Perl_sv_mortalcopy_flags(aTHX_ oldsv, SV_GMAGIC); } void @@ -1177,6 +1166,7 @@ } /* +=for apidoc_section $unicode =for apidoc is_utf8_char Tests if some arbitrary number of bytes begins in a valid UTF-8 @@ -1271,6 +1261,8 @@ currently-compiling pad. If the variable is typed, the stash of the class to which it is typed is returned. If not, C is returned. +Use L> instead. + =cut */ @@ -1288,7 +1280,7 @@ { PERL_ARGS_ASSERT_INSTR; - return instr((char *) big, (char *) little); + return instr(big, little); } SV * diff -Nru perl-5.32.1/metaconfig.h perl-5.34.0/metaconfig.h --- perl-5.32.1/metaconfig.h 2020-12-18 09:58:50.000000000 +0000 +++ perl-5.34.0/metaconfig.h 2021-01-20 23:04:44.000000000 +0000 @@ -14,4 +14,6 @@ * they should be removed from here. * * HAS_WCRTOMB + * GETENV_PRESERVES_OTHER_THREAD + * */ diff -Nru perl-5.32.1/metaconfig.SH perl-5.34.0/metaconfig.SH --- perl-5.32.1/metaconfig.SH 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/metaconfig.SH 2020-10-24 18:43:34.000000000 +0000 @@ -15,7 +15,7 @@ # H.Merijn Brand [17 Feb 2004] # This comment is just to ensure that Configure will find variables that # are removed/replaced in patches on blead, but are still needed in the -# 5.8.x, 5.6.x and 5.005.x maintainance tracks. +# 5.8.x, 5.6.x and 5.005.x maintenance tracks. # metaconfig -m will scan all .SH files on this level (not deeper), and # not in other subfolders. This file is as good as any .SH # patch references diff -Nru perl-5.32.1/META.json perl-5.34.0/META.json --- perl-5.32.1/META.json 2021-01-09 16:55:03.000000000 +0000 +++ perl-5.34.0/META.json 2021-05-15 15:09:39.000000000 +0000 @@ -96,6 +96,7 @@ "dist/IO/t/io_poll.t", "dist/IO/t/io_sel.t", "dist/IO/t/io_sock.t", + "dist/IO/t/io_sock_errstr.t", "dist/IO/t/io_taint.t", "dist/IO/t/io_tell.t", "dist/IO/t/io_udp.t", @@ -130,6 +131,6 @@ "url" : "https://github.com/Perl/perl5" } }, - "version" : "5.032001", - "x_serialization_backend" : "JSON::PP version 4.04" + "version" : "5.034000", + "x_serialization_backend" : "JSON::PP version 4.06" } diff -Nru perl-5.32.1/META.yml perl-5.34.0/META.yml --- perl-5.32.1/META.yml 2020-12-18 13:33:50.000000000 +0000 +++ perl-5.34.0/META.yml 2021-05-04 23:28:28.000000000 +0000 @@ -93,6 +93,7 @@ - dist/IO/t/io_poll.t - dist/IO/t/io_sel.t - dist/IO/t/io_sock.t + - dist/IO/t/io_sock_errstr.t - dist/IO/t/io_taint.t - dist/IO/t/io_tell.t - dist/IO/t/io_udp.t @@ -117,5 +118,5 @@ homepage: https://www.perl.org/ license: https://dev.perl.org/licenses/ repository: https://github.com/Perl/perl5 -version: '5.032001' +version: '5.034000' x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff -Nru perl-5.32.1/mg.c perl-5.34.0/mg.c --- perl-5.32.1/mg.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/mg.c 2021-05-04 06:52:48.000000000 +0000 @@ -16,7 +16,7 @@ */ /* -=head1 Magical Functions +=head1 Magic "Magic" is special data attached to SV structures in order to give them "magical" properties. When any Perl code tries to read from, or assign to, an SV marked as magical, it calls the 'get' or 'set' function associated @@ -34,6 +34,8 @@ a MAGIC structure that contains a pointer to the object associated with the tie. +=for apidoc Ayh||MAGIC + =cut */ @@ -101,8 +103,8 @@ if (SvREFCNT(sv) > 0) { /* guard against sv getting freed midway through the mg clearing, * by holding a private reference for the duration. */ - SvREFCNT_inc_simple_void_NN(sv); - bumped = TRUE; + SvREFCNT_inc_simple_void_NN(sv); + bumped = TRUE; } SAVEDESTRUCTOR_X(S_restore_magic, INT2PTR(void*, (IV)mgs_ix)); @@ -135,19 +137,19 @@ SvMAGICAL_off(sv); if ((mg = SvMAGIC(sv))) { - do { - const MGVTBL* const vtbl = mg->mg_virtual; - if (vtbl) { - if (vtbl->svt_get && !(mg->mg_flags & MGf_GSKIP)) - SvGMAGICAL_on(sv); - if (vtbl->svt_set) - SvSMAGICAL_on(sv); - if (vtbl->svt_clear) - SvRMAGICAL_on(sv); - } - } while ((mg = mg->mg_moremagic)); - if (!(SvFLAGS(sv) & (SVs_GMG|SVs_SMG))) - SvRMAGICAL_on(sv); + do { + const MGVTBL* const vtbl = mg->mg_virtual; + if (vtbl) { + if (vtbl->svt_get && !(mg->mg_flags & MGf_GSKIP)) + SvGMAGICAL_on(sv); + if (vtbl->svt_set) + SvSMAGICAL_on(sv); + if (vtbl->svt_clear) + SvRMAGICAL_on(sv); + } + } while ((mg = mg->mg_moremagic)); + if (!(SvFLAGS(sv) & (SVs_GMG|SVs_SMG))) + SvRMAGICAL_on(sv); } } @@ -179,13 +181,13 @@ newmg = cur = head = mg = SvMAGIC(sv); while (mg) { - const MGVTBL * const vtbl = mg->mg_virtual; - MAGIC * const nextmg = mg->mg_moremagic; /* it may delete itself */ + const MGVTBL * const vtbl = mg->mg_virtual; + MAGIC * const nextmg = mg->mg_moremagic; /* it may delete itself */ - if (!(mg->mg_flags & MGf_GSKIP) && vtbl && vtbl->svt_get) { + if (!(mg->mg_flags & MGf_GSKIP) && vtbl && vtbl->svt_get) { - /* taint's mg get is so dumb it doesn't need flag saving */ - if (mg->mg_type != PERL_MAGIC_taint) { + /* taint's mg get is so dumb it doesn't need flag saving */ + if (mg->mg_type != PERL_MAGIC_taint) { taint_only = FALSE; if (!saved) { save_magic(mgs_ix, sv); @@ -193,23 +195,23 @@ } } - vtbl->svt_get(aTHX_ sv, mg); + vtbl->svt_get(aTHX_ sv, mg); + + /* guard against magic having been deleted - eg FETCH calling + * untie */ + if (!SvMAGIC(sv)) { + /* recalculate flags */ + (SSPTR(mgs_ix, MGS *))->mgs_flags &= ~(SVs_GMG|SVs_SMG|SVs_RMG); + break; + } - /* guard against magic having been deleted - eg FETCH calling - * untie */ - if (!SvMAGIC(sv)) { - /* recalculate flags */ - (SSPTR(mgs_ix, MGS *))->mgs_flags &= ~(SVs_GMG|SVs_SMG|SVs_RMG); - break; - } - - /* recalculate flags if this entry was deleted. */ - if (mg->mg_flags & MGf_GSKIP) - (SSPTR(mgs_ix, MGS *))->mgs_flags &= - ~(SVs_GMG|SVs_SMG|SVs_RMG); - } - else if (vtbl == &PL_vtbl_utf8) { - /* get-magic can reallocate the PV, unless there's only taint + /* recalculate flags if this entry was deleted. */ + if (mg->mg_flags & MGf_GSKIP) + (SSPTR(mgs_ix, MGS *))->mgs_flags &= + ~(SVs_GMG|SVs_SMG|SVs_RMG); + } + else if (vtbl == &PL_vtbl_utf8) { + /* get-magic can reallocate the PV, unless there's only taint * magic */ if (taint_only) { MAGIC *mg2; @@ -226,32 +228,32 @@ } if (!taint_only) magic_setutf8(sv, mg); - } + } + + mg = nextmg; - mg = nextmg; + if (have_new) { + /* Have we finished with the new entries we saw? Start again + where we left off (unless there are more new entries). */ + if (mg == head) { + have_new = 0; + mg = cur; + head = newmg; + } + } - if (have_new) { - /* Have we finished with the new entries we saw? Start again - where we left off (unless there are more new entries). */ - if (mg == head) { - have_new = 0; - mg = cur; - head = newmg; - } - } - - /* Were any new entries added? */ - if (!have_new && (newmg = SvMAGIC(sv)) != head) { - have_new = 1; - cur = mg; - mg = newmg; - /* recalculate flags */ - (SSPTR(mgs_ix, MGS *))->mgs_flags &= ~(SVs_GMG|SVs_SMG|SVs_RMG); - } + /* Were any new entries added? */ + if (!have_new && (newmg = SvMAGIC(sv)) != head) { + have_new = 1; + cur = mg; + mg = newmg; + /* recalculate flags */ + (SSPTR(mgs_ix, MGS *))->mgs_flags &= ~(SVs_GMG|SVs_SMG|SVs_RMG); + } } if (saved) - restore_magic(INT2PTR(void *, (IV)mgs_ix)); + restore_magic(INT2PTR(void *, (IV)mgs_ix)); return 0; } @@ -279,16 +281,16 @@ for (mg = SvMAGIC(sv); mg; mg = nextmg) { const MGVTBL* vtbl = mg->mg_virtual; - nextmg = mg->mg_moremagic; /* it may delete itself */ - if (mg->mg_flags & MGf_GSKIP) { - mg->mg_flags &= ~MGf_GSKIP; /* setting requires another read */ - (SSPTR(mgs_ix, MGS*))->mgs_flags &= ~(SVs_GMG|SVs_SMG|SVs_RMG); - } - if (PL_localizing == 2 - && PERL_MAGIC_TYPE_IS_VALUE_MAGIC(mg->mg_type)) - continue; - if (vtbl && vtbl->svt_set) - vtbl->svt_set(aTHX_ sv, mg); + nextmg = mg->mg_moremagic; /* it may delete itself */ + if (mg->mg_flags & MGf_GSKIP) { + mg->mg_flags &= ~MGf_GSKIP; /* setting requires another read */ + (SSPTR(mgs_ix, MGS*))->mgs_flags &= ~(SVs_GMG|SVs_SMG|SVs_RMG); + } + if (PL_localizing == 2 + && PERL_MAGIC_TYPE_IS_VALUE_MAGIC(mg->mg_type)) + continue; + if (vtbl && vtbl->svt_set) + vtbl->svt_set(aTHX_ sv, mg); } restore_magic(INT2PTR(void*, (IV)mgs_ix)); @@ -317,14 +319,14 @@ for (mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic) { const MGVTBL * const vtbl = mg->mg_virtual; - if (vtbl && vtbl->svt_len) { + if (vtbl && vtbl->svt_len) { const I32 mgs_ix = SSNEW(sizeof(MGS)); - save_magic(mgs_ix, sv); - /* omit MGf_GSKIP -- not changed here */ - len = vtbl->svt_len(aTHX_ sv, mg); - restore_magic(INT2PTR(void*, (IV)mgs_ix)); - return len; - } + save_magic(mgs_ix, sv); + /* omit MGf_GSKIP -- not changed here */ + len = vtbl->svt_len(aTHX_ sv, mg); + restore_magic(INT2PTR(void*, (IV)mgs_ix)); + return len; + } } (void)SvPV_const(sv, len); @@ -340,24 +342,24 @@ for (mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic) { const MGVTBL* const vtbl = mg->mg_virtual; - if (vtbl && vtbl->svt_len) { + if (vtbl && vtbl->svt_len) { const I32 mgs_ix = SSNEW(sizeof(MGS)); I32 len; - save_magic(mgs_ix, sv); - /* omit MGf_GSKIP -- not changed here */ - len = vtbl->svt_len(aTHX_ sv, mg); - restore_magic(INT2PTR(void*, (IV)mgs_ix)); - return len; - } + save_magic(mgs_ix, sv); + /* omit MGf_GSKIP -- not changed here */ + len = vtbl->svt_len(aTHX_ sv, mg); + restore_magic(INT2PTR(void*, (IV)mgs_ix)); + return len; + } } switch(SvTYPE(sv)) { - case SVt_PVAV: - return AvFILLp((const AV *) sv); /* Fallback to non-tied array */ - case SVt_PVHV: - /* FIXME */ - default: - Perl_croak(aTHX_ "Size magic not implemented"); + case SVt_PVAV: + return AvFILLp((const AV *) sv); /* Fallback to non-tied array */ + case SVt_PVHV: + /* FIXME */ + default: + Perl_croak(aTHX_ "Size magic not implemented"); } NOT_REACHED; /* NOTREACHED */ @@ -384,12 +386,12 @@ for (mg = SvMAGIC(sv); mg; mg = nextmg) { const MGVTBL* const vtbl = mg->mg_virtual; - /* omit GSKIP -- never set here */ + /* omit GSKIP -- never set here */ - nextmg = mg->mg_moremagic; /* it may delete itself */ + nextmg = mg->mg_moremagic; /* it may delete itself */ - if (vtbl && vtbl->svt_clear) - vtbl->svt_clear(aTHX_ sv, mg); + if (vtbl && vtbl->svt_clear) + vtbl->svt_clear(aTHX_ sv, mg); } restore_magic(INT2PTR(void*, (IV)mgs_ix)); @@ -402,13 +404,13 @@ assert(flags <= 1); if (sv) { - MAGIC *mg; + MAGIC *mg; - for (mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic) { - if (mg->mg_type == type && (!flags || mg->mg_virtual == vtbl)) { - return mg; - } - } + for (mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic) { + if (mg->mg_type == type && (!flags || mg->mg_virtual == vtbl)) { + return mg; + } + } } return NULL; @@ -476,20 +478,20 @@ for (mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic) { const MGVTBL* const vtbl = mg->mg_virtual; - if ((mg->mg_flags & MGf_COPY) && vtbl->svt_copy){ - count += vtbl->svt_copy(aTHX_ sv, mg, nsv, key, klen); - } - else { - const char type = mg->mg_type; - if (isUPPER(type) && type != PERL_MAGIC_uvar) { - sv_magic(nsv, - (type == PERL_MAGIC_tied) - ? SvTIED_obj(sv, mg) + if ((mg->mg_flags & MGf_COPY) && vtbl->svt_copy){ + count += vtbl->svt_copy(aTHX_ sv, mg, nsv, key, klen); + } + else { + const char type = mg->mg_type; + if (isUPPER(type) && type != PERL_MAGIC_uvar) { + sv_magic(nsv, + (type == PERL_MAGIC_tied) + ? SvTIED_obj(sv, mg) : mg->mg_obj, - toLOWER(type), key, klen); - count++; - } - } + toLOWER(type), key, klen); + count++; + } + } } return count; } @@ -517,30 +519,30 @@ PERL_ARGS_ASSERT_MG_LOCALIZE; if (nsv == DEFSV) - return; + return; for (mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic) { - const MGVTBL* const vtbl = mg->mg_virtual; - if (PERL_MAGIC_TYPE_IS_VALUE_MAGIC(mg->mg_type)) - continue; - - if ((mg->mg_flags & MGf_LOCAL) && vtbl->svt_local) - (void)vtbl->svt_local(aTHX_ nsv, mg); - else - sv_magicext(nsv, mg->mg_obj, mg->mg_type, vtbl, - mg->mg_ptr, mg->mg_len); + const MGVTBL* const vtbl = mg->mg_virtual; + if (PERL_MAGIC_TYPE_IS_VALUE_MAGIC(mg->mg_type)) + continue; + + if ((mg->mg_flags & MGf_LOCAL) && vtbl->svt_local) + (void)vtbl->svt_local(aTHX_ nsv, mg); + else + sv_magicext(nsv, mg->mg_obj, mg->mg_type, vtbl, + mg->mg_ptr, mg->mg_len); - /* container types should remain read-only across localization */ - SvFLAGS(nsv) |= SvREADONLY(sv); + /* container types should remain read-only across localization */ + SvFLAGS(nsv) |= SvREADONLY(sv); } if (SvTYPE(nsv) >= SVt_PVMG && SvMAGIC(nsv)) { - SvFLAGS(nsv) |= SvMAGICAL(sv); - if (setmagic) { - PL_localizing = 1; - SvSETMAGIC(nsv); - PL_localizing = 0; - } + SvFLAGS(nsv) |= SvMAGICAL(sv); + if (setmagic) { + PL_localizing = 1; + SvSETMAGIC(nsv); + PL_localizing = 0; + } } } @@ -550,21 +552,15 @@ { const MGVTBL* const vtbl = mg->mg_virtual; if (vtbl && vtbl->svt_free) - vtbl->svt_free(aTHX_ sv, mg); + vtbl->svt_free(aTHX_ sv, mg); - if (mg->mg_type == PERL_MAGIC_collxfrm && mg->mg_len >= 0) - /* collate magic uses string len not buffer len, so - * free even with mg_len == 0 */ + if (mg->mg_len > 0) Safefree(mg->mg_ptr); - else if (mg->mg_ptr && mg->mg_type != PERL_MAGIC_regex_global) { - if (mg->mg_len > 0 || mg->mg_type == PERL_MAGIC_utf8) - Safefree(mg->mg_ptr); - else if (mg->mg_len == HEf_SVKEY) - SvREFCNT_dec(MUTABLE_SV(mg->mg_ptr)); - } + else if (mg->mg_len == HEf_SVKEY) + SvREFCNT_dec(MUTABLE_SV(mg->mg_ptr)); if (mg->mg_flags & MGf_REFCOUNTED) - SvREFCNT_dec(mg->mg_obj); + SvREFCNT_dec(mg->mg_obj); Safefree(mg); } @@ -585,9 +581,9 @@ PERL_ARGS_ASSERT_MG_FREE; for (mg = SvMAGIC(sv); mg; mg = moremagic) { - moremagic = mg->mg_moremagic; - mg_free_struct(sv, mg); - SvMAGIC_set(sv, moremagic); + moremagic = mg->mg_moremagic; + mg_free_struct(sv, mg); + SvMAGIC_set(sv, moremagic); } SvMAGIC_set(sv, NULL); SvMAGICAL_off(sv); @@ -608,21 +604,21 @@ MAGIC *mg, *prevmg, *moremg; PERL_ARGS_ASSERT_MG_FREE_TYPE; for (prevmg = NULL, mg = SvMAGIC(sv); mg; prevmg = mg, mg = moremg) { - moremg = mg->mg_moremagic; - if (mg->mg_type == how) { + moremg = mg->mg_moremagic; + if (mg->mg_type == how) { MAGIC *newhead; - /* temporarily move to the head of the magic chain, in case - custom free code relies on this historical aspect of mg_free */ - if (prevmg) { - prevmg->mg_moremagic = moremg; - mg->mg_moremagic = SvMAGIC(sv); - SvMAGIC_set(sv, mg); - } - newhead = mg->mg_moremagic; - mg_free_struct(sv, mg); - SvMAGIC_set(sv, newhead); - mg = prevmg; - } + /* temporarily move to the head of the magic chain, in case + custom free code relies on this historical aspect of mg_free */ + if (prevmg) { + prevmg->mg_moremagic = moremg; + mg->mg_moremagic = SvMAGIC(sv); + SvMAGIC_set(sv, mg); + } + newhead = mg->mg_moremagic; + mg_free_struct(sv, mg); + SvMAGIC_set(sv, newhead); + mg = prevmg; + } } mg_magical(sv); } @@ -644,21 +640,21 @@ MAGIC *mg, *prevmg, *moremg; PERL_ARGS_ASSERT_MG_FREEEXT; for (prevmg = NULL, mg = SvMAGIC(sv); mg; prevmg = mg, mg = moremg) { - MAGIC *newhead; - moremg = mg->mg_moremagic; - if (mg->mg_type == how && (vtbl == NULL || mg->mg_virtual == vtbl)) { - /* temporarily move to the head of the magic chain, in case - custom free code relies on this historical aspect of mg_free */ - if (prevmg) { - prevmg->mg_moremagic = moremg; - mg->mg_moremagic = SvMAGIC(sv); - SvMAGIC_set(sv, mg); - } - newhead = mg->mg_moremagic; - mg_free_struct(sv, mg); - SvMAGIC_set(sv, newhead); - mg = prevmg; - } + MAGIC *newhead; + moremg = mg->mg_moremagic; + if (mg->mg_type == how && (vtbl == NULL || mg->mg_virtual == vtbl)) { + /* temporarily move to the head of the magic chain, in case + custom free code relies on this historical aspect of mg_free */ + if (prevmg) { + prevmg->mg_moremagic = moremg; + mg->mg_moremagic = SvMAGIC(sv); + SvMAGIC_set(sv, mg); + } + newhead = mg->mg_moremagic; + mg_free_struct(sv, mg); + SvMAGIC_set(sv, newhead); + mg = prevmg; + } } mg_magical(sv); } @@ -674,19 +670,19 @@ if (PL_curpm) { REGEXP * const rx = PM_GETRE(PL_curpm); - if (rx) { + if (rx) { const SSize_t n = (SSize_t)mg->mg_obj; if (n == '+') { /* @+ */ - /* return the number possible */ - return RX_NPARENS(rx); + /* return the number possible */ + return RX_NPARENS(rx); } else { /* @- @^CAPTURE @{^CAPTURE} */ - I32 paren = RX_LASTPAREN(rx); + I32 paren = RX_LASTPAREN(rx); - /* return the last filled */ - while ( paren >= 0 - && (RX_OFFS(rx)[paren].start == -1 - || RX_OFFS(rx)[paren].end == -1) ) - paren--; + /* return the last filled */ + while ( paren >= 0 + && (RX_OFFS(rx)[paren].start == -1 + || RX_OFFS(rx)[paren].end == -1) ) + paren--; if (n == '-') { /* @- */ return (U32)paren; @@ -695,7 +691,7 @@ return paren >= 0 ? (U32)(paren-1) : (U32)-1; } } - } + } } return (U32)-1; @@ -710,42 +706,42 @@ if (PL_curpm) { REGEXP * const rx = PM_GETRE(PL_curpm); - if (rx) { + if (rx) { const SSize_t n = (SSize_t)mg->mg_obj; /* @{^CAPTURE} does not contain $&, so we need to increment by 1 */ const I32 paren = mg->mg_len + (n == '\003' ? 1 : 0); - SSize_t s; - SSize_t t; - if (paren < 0) - return 0; - if (paren <= (I32)RX_NPARENS(rx) && - (s = RX_OFFS(rx)[paren].start) != -1 && - (t = RX_OFFS(rx)[paren].end) != -1) - { - SSize_t i; + SSize_t s; + SSize_t t; + if (paren < 0) + return 0; + if (paren <= (I32)RX_NPARENS(rx) && + (s = RX_OFFS(rx)[paren].start) != -1 && + (t = RX_OFFS(rx)[paren].end) != -1) + { + SSize_t i; if (n == '+') /* @+ */ - i = t; + i = t; else if (n == '-') /* @- */ - i = s; + i = s; else { /* @^CAPTURE @{^CAPTURE} */ CALLREG_NUMBUF_FETCH(rx,paren,sv); return 0; } - if (RX_MATCH_UTF8(rx)) { - const char * const b = RX_SUBBEG(rx); - if (b) - i = RX_SUBCOFFSET(rx) + + if (RX_MATCH_UTF8(rx)) { + const char * const b = RX_SUBBEG(rx); + if (b) + i = RX_SUBCOFFSET(rx) + utf8_length((U8*)b, (U8*)(b-RX_SUBOFFSET(rx)+i)); - } + } - sv_setuv(sv, i); - return 0; - } - } + sv_setuv(sv, i); + return 0; + } + } } sv_set_undef(sv); return 0; @@ -768,10 +764,10 @@ if (SvPOK(sv)) { \ STRLEN len = SvCUR(sv); \ char * const p = SvPVX(sv); \ - while (len > 0 && isSPACE(p[len-1])) \ - --len; \ - SvCUR_set(sv, len); \ - p[len] = '\0'; \ + while (len > 0 && isSPACE(p[len-1])) \ + --len; \ + SvCUR_set(sv, len); \ + p[len] = '\0'; \ } \ } STMT_END @@ -781,21 +777,21 @@ PERL_ARGS_ASSERT_EMULATE_COP_IO; if (!(CopHINTS_get(c) & (HINT_LEXICAL_IO_IN|HINT_LEXICAL_IO_OUT))) - sv_set_undef(sv); + sv_set_undef(sv); else { SvPVCLEAR(sv); - SvUTF8_off(sv); - if ((CopHINTS_get(c) & HINT_LEXICAL_IO_IN)) { - SV *const value = cop_hints_fetch_pvs(c, "open<", 0); - assert(value); - sv_catsv(sv, value); - } - sv_catpvs(sv, "\0"); - if ((CopHINTS_get(c) & HINT_LEXICAL_IO_OUT)) { - SV *const value = cop_hints_fetch_pvs(c, "open>", 0); - assert(value); - sv_catsv(sv, value); - } + SvUTF8_off(sv); + if ((CopHINTS_get(c) & HINT_LEXICAL_IO_IN)) { + SV *const value = cop_hints_fetch_pvs(c, "open<", 0); + assert(value); + sv_catsv(sv, value); + } + sv_catpvs(sv, "\0"); + if ((CopHINTS_get(c) & HINT_LEXICAL_IO_OUT)) { + SV *const value = cop_hints_fetch_pvs(c, "open>", 0); + assert(value); + sv_catsv(sv, value); + } } } @@ -810,7 +806,7 @@ assert(SvOK(sv)); if(strEQ(SvPVX(sv), "")) { - sv_catpv(sv, UNKNOWN_ERRNO_MSG); + sv_catpv(sv, UNKNOWN_ERRNO_MSG); } else { @@ -846,6 +842,7 @@ } /* +=for apidoc_section $errno =for apidoc sv_string_from_errnum Generates the message string describing an OS error and returns it as @@ -880,13 +877,13 @@ { char const *errstr; if(!tgtsv) - tgtsv = sv_newmortal(); + tgtsv = sv_newmortal(); errstr = my_strerror(errnum); if(errstr) { - sv_setpv(tgtsv, errstr); - fixup_errno_string(tgtsv); + sv_setpv(tgtsv, errstr); + fixup_errno_string(tgtsv); } else { - SvPVCLEAR(tgtsv); + SvPVCLEAR(tgtsv); } return tgtsv; } @@ -921,26 +918,26 @@ nextchar = *remaining; switch (*mg->mg_ptr) { case '\001': /* ^A */ - if (SvOK(PL_bodytarget)) sv_copypv(sv, PL_bodytarget); - else + if (SvOK(PL_bodytarget)) sv_copypv(sv, PL_bodytarget); + else sv_set_undef(sv); - if (SvTAINTED(PL_bodytarget)) - SvTAINTED_on(sv); - break; + if (SvTAINTED(PL_bodytarget)) + SvTAINTED_on(sv); + break; case '\003': /* ^C, ^CHILD_ERROR_NATIVE */ - if (nextchar == '\0') { - sv_setiv(sv, (IV)PL_minus_c); - } - else if (strEQ(remaining, "HILD_ERROR_NATIVE")) { - sv_setiv(sv, (IV)STATUS_NATIVE); + if (nextchar == '\0') { + sv_setiv(sv, (IV)PL_minus_c); + } + else if (strEQ(remaining, "HILD_ERROR_NATIVE")) { + sv_setiv(sv, (IV)STATUS_NATIVE); } - break; + break; case '\004': /* ^D */ - sv_setiv(sv, (IV)(PL_debug & DEBUG_MASK)); - break; + sv_setiv(sv, (IV)(PL_debug & DEBUG_MASK)); + break; case '\005': /* ^E */ - if (nextchar != '\0') { + if (nextchar != '\0') { if (strEQ(remaining, "NCODING")) sv_set_undef(sv); break; @@ -990,13 +987,13 @@ # endif SvRTRIM(sv); SvNOK_on(sv); /* what a wonderful hack! */ - break; + break; #endif /* End of platforms with special handling for $^E; others just fall through to $! */ /* FALLTHROUGH */ case '!': - { + { dSAVE_ERRNO; #ifdef VMS sv_setnv(sv, (NV)((errno == EVMSERR) ? vaxc$errno : errno)); @@ -1020,224 +1017,219 @@ SvPOK_off(sv); } RESTORE_ERRNO; - } + } - SvRTRIM(sv); - SvNOK_on(sv); /* what a wonderful hack! */ - break; + SvRTRIM(sv); + SvNOK_on(sv); /* what a wonderful hack! */ + break; case '\006': /* ^F */ if (nextchar == '\0') { sv_setiv(sv, (IV)PL_maxsysfd); } - break; + break; case '\007': /* ^GLOBAL_PHASE */ - if (strEQ(remaining, "LOBAL_PHASE")) { - sv_setpvn(sv, PL_phase_names[PL_phase], - strlen(PL_phase_names[PL_phase])); - } - break; + if (strEQ(remaining, "LOBAL_PHASE")) { + sv_setpvn(sv, PL_phase_names[PL_phase], + strlen(PL_phase_names[PL_phase])); + } + break; case '\010': /* ^H */ - sv_setuv(sv, PL_hints); - break; + sv_setuv(sv, PL_hints); + break; case '\011': /* ^I */ /* NOT \t in EBCDIC */ - sv_setpv(sv, PL_inplace); /* Will undefine sv if PL_inplace is NULL */ - break; + sv_setpv(sv, PL_inplace); /* Will undefine sv if PL_inplace is NULL */ + break; case '\014': /* ^LAST_FH */ - if (strEQ(remaining, "AST_FH")) { - if (PL_last_in_gv && (SV*)PL_last_in_gv != &PL_sv_undef) { - assert(isGV_with_GP(PL_last_in_gv)); - SV_CHECK_THINKFIRST_COW_DROP(sv); - prepare_SV_for_RV(sv); - SvOK_off(sv); - SvRV_set(sv, SvREFCNT_inc_simple_NN(PL_last_in_gv)); - SvROK_on(sv); - sv_rvweaken(sv); - } - else + if (strEQ(remaining, "AST_FH")) { + if (PL_last_in_gv && (SV*)PL_last_in_gv != &PL_sv_undef) { + assert(isGV_with_GP(PL_last_in_gv)); + SV_CHECK_THINKFIRST_COW_DROP(sv); + prepare_SV_for_RV(sv); + SvOK_off(sv); + SvRV_set(sv, SvREFCNT_inc_simple_NN(PL_last_in_gv)); + SvROK_on(sv); + sv_rvweaken(sv); + } + else sv_set_undef(sv); - } - break; + } + break; case '\017': /* ^O & ^OPEN */ - if (nextchar == '\0') { - sv_setpv(sv, PL_osname); - SvTAINTED_off(sv); - } - else if (strEQ(remaining, "PEN")) { - Perl_emulate_cop_io(aTHX_ &PL_compiling, sv); - } - break; + if (nextchar == '\0') { + sv_setpv(sv, PL_osname); + SvTAINTED_off(sv); + } + else if (strEQ(remaining, "PEN")) { + Perl_emulate_cop_io(aTHX_ &PL_compiling, sv); + } + break; case '\020': sv_setiv(sv, (IV)PL_perldb); - break; + break; case '\023': /* ^S */ - if (nextchar == '\0') { - if (PL_parser && PL_parser->lex_state != LEX_NOTPARSING) - SvOK_off(sv); - else if (PL_in_eval) - sv_setiv(sv, PL_in_eval & ~(EVAL_INREQUIRE)); - else - sv_setiv(sv, 0); - } - else if (strEQ(remaining, "AFE_LOCALES")) { + if (nextchar == '\0') { + if (PL_parser && PL_parser->lex_state != LEX_NOTPARSING) + SvOK_off(sv); + else if (PL_in_eval) + sv_setiv(sv, PL_in_eval & ~(EVAL_INREQUIRE)); + else + sv_setiv(sv, 0); + } + else if (strEQ(remaining, "AFE_LOCALES")) { #if ! defined(USE_ITHREADS) || defined(USE_THREAD_SAFE_LOCALE) - sv_setuv(sv, (UV) 1); + sv_setuv(sv, (UV) 1); #else - sv_setuv(sv, (UV) 0); + sv_setuv(sv, (UV) 0); #endif } - break; + break; case '\024': /* ^T */ - if (nextchar == '\0') { + if (nextchar == '\0') { #ifdef BIG_TIME sv_setnv(sv, PL_basetime); #else sv_setiv(sv, (IV)PL_basetime); #endif } - else if (strEQ(remaining, "AINT")) + else if (strEQ(remaining, "AINT")) sv_setiv(sv, TAINTING_get - ? (TAINT_WARN_get || PL_unsafe ? -1 : 1) - : 0); + ? (TAINT_WARN_get || PL_unsafe ? -1 : 1) + : 0); break; case '\025': /* $^UNICODE, $^UTF8LOCALE, $^UTF8CACHE */ - if (strEQ(remaining, "NICODE")) - sv_setuv(sv, (UV) PL_unicode); - else if (strEQ(remaining, "TF8LOCALE")) - sv_setuv(sv, (UV) PL_utf8locale); - else if (strEQ(remaining, "TF8CACHE")) - sv_setiv(sv, (IV) PL_utf8cache); + if (strEQ(remaining, "NICODE")) + sv_setuv(sv, (UV) PL_unicode); + else if (strEQ(remaining, "TF8LOCALE")) + sv_setuv(sv, (UV) PL_utf8locale); + else if (strEQ(remaining, "TF8CACHE")) + sv_setiv(sv, (IV) PL_utf8cache); break; case '\027': /* ^W & $^WARNING_BITS */ - if (nextchar == '\0') - sv_setiv(sv, (IV)cBOOL(PL_dowarn & G_WARN_ON)); - else if (strEQ(remaining, "ARNING_BITS")) { - if (PL_compiling.cop_warnings == pWARN_NONE) { - sv_setpvn(sv, WARN_NONEstring, WARNsize) ; - } - else if (PL_compiling.cop_warnings == pWARN_STD) { + if (nextchar == '\0') + sv_setiv(sv, (IV)cBOOL(PL_dowarn & G_WARN_ON)); + else if (strEQ(remaining, "ARNING_BITS")) { + if (PL_compiling.cop_warnings == pWARN_NONE) { + sv_setpvn(sv, WARN_NONEstring, WARNsize) ; + } + else if (PL_compiling.cop_warnings == pWARN_STD) { goto set_undef; - } + } else if (PL_compiling.cop_warnings == pWARN_ALL) { - sv_setpvn(sv, WARN_ALLstring, WARNsize); - } + sv_setpvn(sv, WARN_ALLstring, WARNsize); + } else { - sv_setpvn(sv, (char *) (PL_compiling.cop_warnings + 1), - *PL_compiling.cop_warnings); - } - } -#ifdef WIN32 - else if (strEQ(remaining, "IN32_SLOPPY_STAT")) { - sv_setiv(sv, w32_sloppystat); - } -#endif - break; + sv_setpvn(sv, (char *) (PL_compiling.cop_warnings + 1), + *PL_compiling.cop_warnings); + } + } + break; case '+': - if (PL_curpm && (rx = PM_GETRE(PL_curpm))) { - paren = RX_LASTPAREN(rx); - if (paren) + if (PL_curpm && (rx = PM_GETRE(PL_curpm))) { + paren = RX_LASTPAREN(rx); + if (paren) goto do_numbuf_fetch; - } + } goto set_undef; case '\016': /* ^N */ - if (PL_curpm && (rx = PM_GETRE(PL_curpm))) { - paren = RX_LASTCLOSEPAREN(rx); - if (paren) + if (PL_curpm && (rx = PM_GETRE(PL_curpm))) { + paren = RX_LASTCLOSEPAREN(rx); + if (paren) goto do_numbuf_fetch; - } + } goto set_undef; case '.': - if (GvIO(PL_last_in_gv)) { - sv_setiv(sv, (IV)IoLINES(GvIOp(PL_last_in_gv))); - } - break; + if (GvIO(PL_last_in_gv)) { + sv_setiv(sv, (IV)IoLINES(GvIOp(PL_last_in_gv))); + } + break; case '?': - { - sv_setiv(sv, (IV)STATUS_CURRENT); + { + sv_setiv(sv, (IV)STATUS_CURRENT); #ifdef COMPLEX_STATUS - SvUPGRADE(sv, SVt_PVLV); - LvTARGOFF(sv) = PL_statusvalue; - LvTARGLEN(sv) = PL_statusvalue_vms; + SvUPGRADE(sv, SVt_PVLV); + LvTARGOFF(sv) = PL_statusvalue; + LvTARGLEN(sv) = PL_statusvalue_vms; #endif - } - break; + } + break; case '^': - if (GvIOp(PL_defoutgv)) - s = IoTOP_NAME(GvIOp(PL_defoutgv)); - if (s) - sv_setpv(sv,s); - else { - sv_setpv(sv,GvENAME(PL_defoutgv)); - sv_catpvs(sv,"_TOP"); - } - break; + if (GvIOp(PL_defoutgv)) + s = IoTOP_NAME(GvIOp(PL_defoutgv)); + if (s) + sv_setpv(sv,s); + else { + sv_setpv(sv,GvENAME(PL_defoutgv)); + sv_catpvs(sv,"_TOP"); + } + break; case '~': - if (GvIOp(PL_defoutgv)) - s = IoFMT_NAME(GvIOp(PL_defoutgv)); - if (!s) - s = GvENAME(PL_defoutgv); - sv_setpv(sv,s); - break; + if (GvIOp(PL_defoutgv)) + s = IoFMT_NAME(GvIOp(PL_defoutgv)); + if (!s) + s = GvENAME(PL_defoutgv); + sv_setpv(sv,s); + break; case '=': - if (GvIO(PL_defoutgv)) - sv_setiv(sv, (IV)IoPAGE_LEN(GvIOp(PL_defoutgv))); - break; + if (GvIO(PL_defoutgv)) + sv_setiv(sv, (IV)IoPAGE_LEN(GvIOp(PL_defoutgv))); + break; case '-': - if (GvIO(PL_defoutgv)) - sv_setiv(sv, (IV)IoLINES_LEFT(GvIOp(PL_defoutgv))); - break; + if (GvIO(PL_defoutgv)) + sv_setiv(sv, (IV)IoLINES_LEFT(GvIOp(PL_defoutgv))); + break; case '%': - if (GvIO(PL_defoutgv)) - sv_setiv(sv, (IV)IoPAGE(GvIOp(PL_defoutgv))); - break; + if (GvIO(PL_defoutgv)) + sv_setiv(sv, (IV)IoPAGE(GvIOp(PL_defoutgv))); + break; case ':': case '/': - break; + break; case '[': - sv_setiv(sv, 0); - break; + sv_setiv(sv, 0); + break; case '|': - if (GvIO(PL_defoutgv)) - sv_setiv(sv, (IV)(IoFLAGS(GvIOp(PL_defoutgv)) & IOf_FLUSH) != 0 ); - break; + if (GvIO(PL_defoutgv)) + sv_setiv(sv, (IV)(IoFLAGS(GvIOp(PL_defoutgv)) & IOf_FLUSH) != 0 ); + break; case '\\': - if (PL_ors_sv) - sv_copypv(sv, PL_ors_sv); - else + if (PL_ors_sv) + sv_copypv(sv, PL_ors_sv); + else goto set_undef; - break; + break; case '$': /* $$ */ - { - IV const pid = (IV)PerlProc_getpid(); - if (isGV(mg->mg_obj) || SvIV(mg->mg_obj) != pid) { - /* never set manually, or at least not since last fork */ - sv_setiv(sv, pid); - /* never unsafe, even if reading in a tainted expression */ - SvTAINTED_off(sv); - } - /* else a value has been assigned manually, so do nothing */ - } - break; + { + IV const pid = (IV)PerlProc_getpid(); + if (isGV(mg->mg_obj) || SvIV(mg->mg_obj) != pid) { + /* never set manually, or at least not since last fork */ + sv_setiv(sv, pid); + /* never unsafe, even if reading in a tainted expression */ + SvTAINTED_off(sv); + } + /* else a value has been assigned manually, so do nothing */ + } + break; case '<': sv_setuid(sv, PerlProc_getuid()); - break; + break; case '>': sv_setuid(sv, PerlProc_geteuid()); - break; + break; case '(': sv_setgid(sv, PerlProc_getgid()); - goto add_groups; + goto add_groups; case ')': sv_setgid(sv, PerlProc_getegid()); add_groups: #ifdef HAS_GETGROUPS - { - Groups_t *gary = NULL; + { + Groups_t *gary = NULL; I32 num_groups = getgroups(0, gary); if (num_groups > 0) { I32 i; @@ -1247,12 +1239,12 @@ Perl_sv_catpvf(aTHX_ sv, " %" IVdf, (IV)gary[i]); Safefree(gary); } - } - (void)SvIOK_on(sv); /* what a wonderful hack! */ + } + (void)SvIOK_on(sv); /* what a wonderful hack! */ #endif - break; + break; case '0': - break; + break; } return 0; @@ -1269,7 +1261,7 @@ PERL_ARGS_ASSERT_MAGIC_GETUVAR; if (uf && uf->uf_val) - (*uf->uf_val)(aTHX_ uf->uf_index, sv); + (*uf->uf_val)(aTHX_ uf->uf_index, sv); return 0; } @@ -1277,9 +1269,24 @@ Perl_magic_setenv(pTHX_ SV *sv, MAGIC *mg) { STRLEN len = 0, klen; - const char * const key = MgPV_const(mg,klen); + + const char *key; const char *s = ""; + SV *keysv = MgSV(mg); + + if (keysv == NULL) { + key = mg->mg_ptr; + klen = mg->mg_len; + } + else { + if (!sv_utf8_downgrade(keysv, /* fail_ok */ TRUE)) { + Perl_ck_warner_d(aTHX_ packWARN(WARN_UTF8), "Wide character in %s", "setenv key (encoding to utf8)"); + } + + key = SvPV_const(keysv,klen); + } + PERL_ARGS_ASSERT_MAGIC_SETENV; SvGETMAGIC(sv); @@ -1301,76 +1308,76 @@ /* We just undefd an environment var. Is a replacement */ /* waiting in the wings? */ if (!len) { - SV ** const valp = hv_fetch(GvHVn(PL_envgv), key, klen, FALSE); - if (valp) - s = SvOK(*valp) ? SvPV_const(*valp, len) : ""; + SV ** const valp = hv_fetch(GvHVn(PL_envgv), key, klen, FALSE); + if (valp) + s = SvOK(*valp) ? SvPV_const(*valp, len) : ""; } #endif #if !defined(OS2) && !defined(WIN32) && !defined(MSDOS) - /* And you'll never guess what the dog had */ - /* in its mouth... */ + /* And you'll never guess what the dog had */ + /* in its mouth... */ if (TAINTING_get) { - MgTAINTEDDIR_off(mg); + MgTAINTEDDIR_off(mg); #ifdef VMS - if (s && memEQs(key, klen, "DCL$PATH")) { - char pathbuf[256], eltbuf[256], *cp, *elt; - int i = 0, j = 0; - - my_strlcpy(eltbuf, s, sizeof(eltbuf)); - elt = eltbuf; - do { /* DCL$PATH may be a search list */ - while (1) { /* as may dev portion of any element */ - if ( ((cp = strchr(elt,'[')) || (cp = strchr(elt,'<'))) ) { - if ( *(cp+1) == '.' || *(cp+1) == '-' || - cando_by_name(S_IWUSR,0,elt) ) { - MgTAINTEDDIR_on(mg); - return 0; - } - } - if ((cp = strchr(elt, ':')) != NULL) - *cp = '\0'; - if (my_trnlnm(elt, eltbuf, j++)) - elt = eltbuf; - else - break; - } - j = 0; - } while (my_trnlnm(s, pathbuf, i++) && (elt = pathbuf)); - } + if (s && memEQs(key, klen, "DCL$PATH")) { + char pathbuf[256], eltbuf[256], *cp, *elt; + int i = 0, j = 0; + + my_strlcpy(eltbuf, s, sizeof(eltbuf)); + elt = eltbuf; + do { /* DCL$PATH may be a search list */ + while (1) { /* as may dev portion of any element */ + if ( ((cp = strchr(elt,'[')) || (cp = strchr(elt,'<'))) ) { + if ( *(cp+1) == '.' || *(cp+1) == '-' || + cando_by_name(S_IWUSR,0,elt) ) { + MgTAINTEDDIR_on(mg); + return 0; + } + } + if ((cp = strchr(elt, ':')) != NULL) + *cp = '\0'; + if (my_trnlnm(elt, eltbuf, j++)) + elt = eltbuf; + else + break; + } + j = 0; + } while (my_trnlnm(s, pathbuf, i++) && (elt = pathbuf)); + } #endif /* VMS */ - if (s && memEQs(key, klen, "PATH")) { - const char * const strend = s + len; + if (s && memEQs(key, klen, "PATH")) { + const char * const strend = s + len; /* set MGf_TAINTEDDIR if any component of the new path is * relative or world-writeable */ - while (s < strend) { - char tmpbuf[256]; - Stat_t st; - I32 i; + while (s < strend) { + char tmpbuf[256]; + Stat_t st; + I32 i; #ifdef __VMS /* Hmm. How do we get $Config{path_sep} from C? */ - const char path_sep = PL_perllib_sep; + const char path_sep = PL_perllib_sep; #else - const char path_sep = ':'; + const char path_sep = ':'; #endif - s = delimcpy_no_escape(tmpbuf, tmpbuf + sizeof tmpbuf, - s, strend, path_sep, &i); - s++; - if (i >= (I32)sizeof tmpbuf /* too long -- assume the worst */ + s = delimcpy_no_escape(tmpbuf, tmpbuf + sizeof tmpbuf, + s, strend, path_sep, &i); + s++; + if (i >= (I32)sizeof tmpbuf /* too long -- assume the worst */ #ifdef __VMS - /* no colon thus no device name -- assume relative path */ - || (PL_perllib_sep != ':' && !strchr(tmpbuf, ':')) - /* Using Unix separator, e.g. under bash, so act line Unix */ - || (PL_perllib_sep == ':' && *tmpbuf != '/') -#else - || *tmpbuf != '/' /* no starting slash -- assume relative path */ -#endif - || (PerlLIO_stat(tmpbuf, &st) == 0 && (st.st_mode & 2)) ) { - MgTAINTEDDIR_on(mg); - return 0; - } - } - } + /* no colon thus no device name -- assume relative path */ + || (PL_perllib_sep != ':' && !strchr(tmpbuf, ':')) + /* Using Unix separator, e.g. under bash, so act line Unix */ + || (PL_perllib_sep == ':' && *tmpbuf != '/') +#else + || *tmpbuf != '/' /* no starting slash -- assume relative path */ +#endif + || (PerlLIO_stat(tmpbuf, &st) == 0 && (st.st_mode & 2)) ) { + MgTAINTEDDIR_on(mg); + return 0; + } + } + } } #endif /* neither OS2 nor WIN32 nor MSDOS */ @@ -1395,14 +1402,14 @@ Perl_die(aTHX_ "Can't make list assignment to %%ENV on this system"); #else if (PL_localizing) { - HE* entry; - my_clearenv(); - hv_iterinit(MUTABLE_HV(sv)); - while ((entry = hv_iternext(MUTABLE_HV(sv)))) { - I32 keylen; - my_setenv(hv_iterkey(entry, &keylen), - SvPV_nolen_const(hv_iterval(MUTABLE_HV(sv), entry))); - } + HE* entry; + my_clearenv(); + hv_iterinit(MUTABLE_HV(sv)); + while ((entry = hv_iternext(MUTABLE_HV(sv)))) { + I32 keylen; + my_setenv(hv_iterkey(entry, &keylen), + SvPV_nolen_const(hv_iterval(MUTABLE_HV(sv), entry))); + } } #endif return 0; @@ -1446,26 +1453,26 @@ } if (i > 0) { - if(PL_psig_ptr[i]) - sv_setsv(sv,PL_psig_ptr[i]); - else { - Sighandler_t sigstate = rsignal_state(i); + if(PL_psig_ptr[i]) + sv_setsv(sv,PL_psig_ptr[i]); + else { + Sighandler_t sigstate = rsignal_state(i); #ifdef FAKE_PERSISTENT_SIGNAL_HANDLERS - if (PL_sig_handlers_initted && PL_sig_ignoring[i]) - sigstate = SIG_IGN; + if (PL_sig_handlers_initted && PL_sig_ignoring[i]) + sigstate = SIG_IGN; #endif #ifdef FAKE_DEFAULT_SIGNAL_HANDLERS - if (PL_sig_handlers_initted && PL_sig_defaulting[i]) - sigstate = SIG_DFL; + if (PL_sig_handlers_initted && PL_sig_defaulting[i]) + sigstate = SIG_DFL; #endif - /* cache state so we don't fetch it again */ - if(sigstate == (Sighandler_t) SIG_IGN) - sv_setpvs(sv,"IGNORE"); - else + /* cache state so we don't fetch it again */ + if(sigstate == (Sighandler_t) SIG_IGN) + sv_setpvs(sv,"IGNORE"); + else sv_set_undef(sv); - PL_psig_ptr[i] = SvREFCNT_inc_simple_NN(sv); - SvTEMP_off(sv); - } + PL_psig_ptr[i] = SvREFCNT_inc_simple_NN(sv); + SvTEMP_off(sv); + } } return 0; } @@ -1539,17 +1546,17 @@ #endif if ( #ifdef SIGILL - sig == SIGILL || + sig == SIGILL || #endif #ifdef SIGBUS - sig == SIGBUS || + sig == SIGBUS || #endif #ifdef SIGSEGV - sig == SIGSEGV || + sig == SIGSEGV || #endif - (PL_signals & PERL_SIGNALS_UNSAFE_FLAG)) - /* Call the perl level handler now-- - * with risk we may be in malloc() or being destructed etc. */ + (PL_signals & PERL_SIGNALS_UNSAFE_FLAG)) + /* Call the perl level handler now-- + * with risk we may be in malloc() or being destructed etc. */ { if (PL_sighandlerp == Perl_sighandler) /* default handler, so can call perly_sighandler() directly @@ -1565,18 +1572,18 @@ #endif } else { - if (!PL_psig_pend) return; - /* Set a flag to say this signal is pending, that is awaiting delivery after - * the current Perl opcode completes */ - PL_psig_pend[sig]++; + if (!PL_psig_pend) return; + /* Set a flag to say this signal is pending, that is awaiting delivery after + * the current Perl opcode completes */ + PL_psig_pend[sig]++; #ifndef SIG_PENDING_DIE_COUNT # define SIG_PENDING_DIE_COUNT 120 #endif - /* Add one to say _a_ signal is pending */ - if (++PL_sig_pending >= SIG_PENDING_DIE_COUNT) - Perl_croak(aTHX_ "Maximal count of pending signals (%lu) exceeded", - (unsigned long)SIG_PENDING_DIE_COUNT); + /* Add one to say _a_ signal is pending */ + if (++PL_sig_pending >= SIG_PENDING_DIE_COUNT) + Perl_croak(aTHX_ "Maximal count of pending signals (%lu) exceeded", + (unsigned long)SIG_PENDING_DIE_COUNT); } } @@ -1616,31 +1623,31 @@ int sig; PL_sig_pending = 0; for (sig = 1; sig < SIG_SIZE; sig++) { - if (PL_psig_pend[sig]) { - dSAVE_ERRNO; + if (PL_psig_pend[sig]) { + dSAVE_ERRNO; #ifdef HAS_SIGPROCMASK - /* From sigaction(2) (FreeBSD man page): - * | Signal routines normally execute with the signal that - * | caused their invocation blocked, but other signals may - * | yet occur. - * Emulation of this behavior (from within Perl) is enabled - * using sigprocmask - */ - int was_blocked; - sigset_t newset, oldset; - - sigemptyset(&newset); - sigaddset(&newset, sig); - sigprocmask(SIG_BLOCK, &newset, &oldset); - was_blocked = sigismember(&oldset, sig); - if (!was_blocked) { - SV* save_sv = newSVpvn((char *)(&newset), sizeof(sigset_t)); - ENTER; - SAVEFREESV(save_sv); - SAVEDESTRUCTOR_X(unblock_sigmask, SvPV_nolen(save_sv)); - } + /* From sigaction(2) (FreeBSD man page): + * | Signal routines normally execute with the signal that + * | caused their invocation blocked, but other signals may + * | yet occur. + * Emulation of this behavior (from within Perl) is enabled + * using sigprocmask + */ + int was_blocked; + sigset_t newset, oldset; + + sigemptyset(&newset); + sigaddset(&newset, sig); + sigprocmask(SIG_BLOCK, &newset, &oldset); + was_blocked = sigismember(&oldset, sig); + if (!was_blocked) { + SV* save_sv = newSVpvn((char *)(&newset), sizeof(sigset_t)); + ENTER; + SAVEFREESV(save_sv); + SAVEDESTRUCTOR_X(unblock_sigmask, SvPV_nolen(save_sv)); + } #endif - PL_psig_pend[sig] = 0; + PL_psig_pend[sig] = 0; if (PL_sighandlerp == Perl_sighandler) /* default handler, so can call perly_sighandler() directly * rather than via Perl_sighandler, passing the extra @@ -1655,11 +1662,11 @@ #endif #ifdef HAS_SIGPROCMASK - if (!was_blocked) - LEAVE; + if (!was_blocked) + LEAVE; #endif - RESTORE_ERRNO; - } + RESTORE_ERRNO; + } } } @@ -1667,7 +1674,6 @@ int Perl_magic_setsig(pTHX_ SV *sv, MAGIC *mg) { - dVAR; I32 i; SV** svp = NULL; /* Need to be careful with SvREFCNT_dec(), because that can have side @@ -1686,134 +1692,134 @@ if (*s == '_') { if (memEQs(s, len, "__DIE__")) - svp = &PL_diehook; - else if (memEQs(s, len, "__WARN__") - && (sv ? 1 : PL_warnhook != PERL_WARNHOOK_FATAL)) { - /* Merge the existing behaviours, which are as follows: - magic_setsig, we always set svp to &PL_warnhook - (hence we always change the warnings handler) - For magic_clearsig, we don't change the warnings handler if it's - set to the &PL_warnhook. */ - svp = &PL_warnhook; + svp = &PL_diehook; + else if (memEQs(s, len, "__WARN__") + && (sv ? 1 : PL_warnhook != PERL_WARNHOOK_FATAL)) { + /* Merge the existing behaviours, which are as follows: + magic_setsig, we always set svp to &PL_warnhook + (hence we always change the warnings handler) + For magic_clearsig, we don't change the warnings handler if it's + set to the &PL_warnhook. */ + svp = &PL_warnhook; } else if (sv) { SV *tmp = sv_newmortal(); Perl_croak(aTHX_ "No such hook: %s", pv_pretty(tmp, s, len, 0, NULL, NULL, 0)); } - i = 0; - if (svp && *svp) { - if (*svp != PERL_WARNHOOK_FATAL) - to_dec = *svp; - *svp = NULL; - } + i = 0; + if (svp && *svp) { + if (*svp != PERL_WARNHOOK_FATAL) + to_dec = *svp; + *svp = NULL; + } } else { - i = (I16)mg->mg_private; - if (!i) { - i = whichsig_pvn(s, len); /* ...no, a brick */ - mg->mg_private = (U16)i; - } - if (i <= 0) { - if (sv) { + i = (I16)mg->mg_private; + if (!i) { + i = whichsig_pvn(s, len); /* ...no, a brick */ + mg->mg_private = (U16)i; + } + if (i <= 0) { + if (sv) { SV *tmp = sv_newmortal(); - Perl_ck_warner(aTHX_ packWARN(WARN_SIGNAL), "No such signal: SIG%s", + Perl_ck_warner(aTHX_ packWARN(WARN_SIGNAL), "No such signal: SIG%s", pv_pretty(tmp, s, len, 0, NULL, NULL, 0)); } - return 0; - } + return 0; + } #ifdef HAS_SIGPROCMASK - /* Avoid having the signal arrive at a bad time, if possible. */ - sigemptyset(&set); - sigaddset(&set,i); - sigprocmask(SIG_BLOCK, &set, &save); - ENTER; - save_sv = newSVpvn((char *)(&save), sizeof(sigset_t)); - SAVEFREESV(save_sv); - SAVEDESTRUCTOR_X(restore_sigmask, save_sv); + /* Avoid having the signal arrive at a bad time, if possible. */ + sigemptyset(&set); + sigaddset(&set,i); + sigprocmask(SIG_BLOCK, &set, &save); + ENTER; + save_sv = newSVpvn((char *)(&save), sizeof(sigset_t)); + SAVEFREESV(save_sv); + SAVEDESTRUCTOR_X(restore_sigmask, save_sv); #endif - PERL_ASYNC_CHECK(); + PERL_ASYNC_CHECK(); #if defined(FAKE_PERSISTENT_SIGNAL_HANDLERS) || defined(FAKE_DEFAULT_SIGNAL_HANDLERS) - if (!PL_sig_handlers_initted) Perl_csighandler_init(); + if (!PL_sig_handlers_initted) Perl_csighandler_init(); #endif #ifdef FAKE_PERSISTENT_SIGNAL_HANDLERS - PL_sig_ignoring[i] = 0; + PL_sig_ignoring[i] = 0; #endif #ifdef FAKE_DEFAULT_SIGNAL_HANDLERS - PL_sig_defaulting[i] = 0; + PL_sig_defaulting[i] = 0; #endif - to_dec = PL_psig_ptr[i]; - if (sv) { - PL_psig_ptr[i] = SvREFCNT_inc_simple_NN(sv); - SvTEMP_off(sv); /* Make sure it doesn't go away on us */ - - /* Signals don't change name during the program's execution, so once - they're cached in the appropriate slot of PL_psig_name, they can - stay there. - - Ideally we'd find some way of making SVs at (C) compile time, or - at least, doing most of the work. */ - if (!PL_psig_name[i]) { - const char* name = PL_sig_name[i]; - PL_psig_name[i] = newSVpvn(name, strlen(name)); - SvREADONLY_on(PL_psig_name[i]); - } - } else { - SvREFCNT_dec(PL_psig_name[i]); - PL_psig_name[i] = NULL; - PL_psig_ptr[i] = NULL; - } + to_dec = PL_psig_ptr[i]; + if (sv) { + PL_psig_ptr[i] = SvREFCNT_inc_simple_NN(sv); + SvTEMP_off(sv); /* Make sure it doesn't go away on us */ + + /* Signals don't change name during the program's execution, so once + they're cached in the appropriate slot of PL_psig_name, they can + stay there. + + Ideally we'd find some way of making SVs at (C) compile time, or + at least, doing most of the work. */ + if (!PL_psig_name[i]) { + const char* name = PL_sig_name[i]; + PL_psig_name[i] = newSVpvn(name, strlen(name)); + SvREADONLY_on(PL_psig_name[i]); + } + } else { + SvREFCNT_dec(PL_psig_name[i]); + PL_psig_name[i] = NULL; + PL_psig_ptr[i] = NULL; + } } if (sv && (isGV_with_GP(sv) || SvROK(sv))) { - if (i) { - (void)rsignal(i, PL_csighandlerp); - } - else - *svp = SvREFCNT_inc_simple_NN(sv); + if (i) { + (void)rsignal(i, PL_csighandlerp); + } + else + *svp = SvREFCNT_inc_simple_NN(sv); } else { - if (sv && SvOK(sv)) { - s = SvPV_force(sv, len); - } else { - sv = NULL; - } - if (sv && memEQs(s, len,"IGNORE")) { - if (i) { + if (sv && SvOK(sv)) { + s = SvPV_force(sv, len); + } else { + sv = NULL; + } + if (sv && memEQs(s, len,"IGNORE")) { + if (i) { #ifdef FAKE_PERSISTENT_SIGNAL_HANDLERS - PL_sig_ignoring[i] = 1; - (void)rsignal(i, PL_csighandlerp); + PL_sig_ignoring[i] = 1; + (void)rsignal(i, PL_csighandlerp); #else - (void)rsignal(i, (Sighandler_t) SIG_IGN); + (void)rsignal(i, (Sighandler_t) SIG_IGN); #endif - } - } - else if (!sv || memEQs(s, len,"DEFAULT") || !len) { - if (i) { + } + } + else if (!sv || memEQs(s, len,"DEFAULT") || !len) { + if (i) { #ifdef FAKE_DEFAULT_SIGNAL_HANDLERS - PL_sig_defaulting[i] = 1; - (void)rsignal(i, PL_csighandlerp); + PL_sig_defaulting[i] = 1; + (void)rsignal(i, PL_csighandlerp); #else - (void)rsignal(i, (Sighandler_t) SIG_DFL); + (void)rsignal(i, (Sighandler_t) SIG_DFL); #endif - } - } - else { - /* - * We should warn if HINT_STRICT_REFS, but without - * access to a known hint bit in a known OP, we can't - * tell whether HINT_STRICT_REFS is in force or not. - */ - if (!memchr(s, ':', len) && !memchr(s, '\'', len)) - Perl_sv_insert_flags(aTHX_ sv, 0, 0, STR_WITH_LEN("main::"), - SV_GMAGIC); - if (i) - (void)rsignal(i, PL_csighandlerp); - else - *svp = SvREFCNT_inc_simple_NN(sv); - } + } + } + else { + /* + * We should warn if HINT_STRICT_REFS, but without + * access to a known hint bit in a known OP, we can't + * tell whether HINT_STRICT_REFS is in force or not. + */ + if (!memchr(s, ':', len) && !memchr(s, '\'', len)) + Perl_sv_insert_flags(aTHX_ sv, 0, 0, STR_WITH_LEN("main::"), + SV_GMAGIC); + if (i) + (void)rsignal(i, PL_csighandlerp); + else + *svp = SvREFCNT_inc_simple_NN(sv); + } } #ifdef HAS_SIGPROCMASK if(i) - LEAVE; + LEAVE; #endif SvREFCNT_dec(to_dec); return 0; @@ -1828,7 +1834,7 @@ /* Skip _isaelem because _isa will handle it shortly */ if (PL_delaymagic & DM_ARRAY_ISA && mg->mg_type == PERL_MAGIC_isaelem) - return 0; + return 0; return magic_clearisa(NULL, mg); } @@ -1844,23 +1850,23 @@ if(PL_phase == PERL_PHASE_DESTRUCT) return 0; if (sv) - av_clear(MUTABLE_AV(sv)); + av_clear(MUTABLE_AV(sv)); if (SvTYPE(mg->mg_obj) != SVt_PVGV && SvSMAGICAL(mg->mg_obj)) - /* This occurs with setisa_elem magic, which calls this - same function. */ - mg = mg_find(mg->mg_obj, PERL_MAGIC_isa); + /* This occurs with setisa_elem magic, which calls this + same function. */ + mg = mg_find(mg->mg_obj, PERL_MAGIC_isa); assert(mg); if (SvTYPE(mg->mg_obj) == SVt_PVAV) { /* multiple stashes */ - SV **svp = AvARRAY((AV *)mg->mg_obj); - I32 items = AvFILLp((AV *)mg->mg_obj) + 1; - while (items--) { - stash = GvSTASH((GV *)*svp++); - if (stash && HvENAME(stash)) mro_isa_changed_in(stash); - } + SV **svp = AvARRAY((AV *)mg->mg_obj); + I32 items = AvFILLp((AV *)mg->mg_obj) + 1; + while (items--) { + stash = GvSTASH((GV *)*svp++); + if (stash && HvENAME(stash)) mro_isa_changed_in(stash); + } - return 0; + return 0; } stash = GvSTASH( @@ -1870,7 +1876,7 @@ /* The stash may have been detached from the symbol table, so check its name before doing anything. */ if (stash && HvENAME_get(stash)) - mro_isa_changed_in(stash); + mro_isa_changed_in(stash); return 0; } @@ -1887,10 +1893,10 @@ if (hv) { (void) hv_iterinit(hv); if (! SvTIED_mg((const SV *)hv, PERL_MAGIC_tied)) - i = HvUSEDKEYS(hv); + i = HvUSEDKEYS(hv); else { - while (hv_iternext(hv)) - i++; + while (hv_iternext(hv)) + i++; } } @@ -1904,12 +1910,13 @@ PERL_ARGS_ASSERT_MAGIC_SETNKEYS; PERL_UNUSED_ARG(mg); if (LvTARG(sv)) { - hv_ksplit(MUTABLE_HV(LvTARG(sv)), SvIV(sv)); + hv_ksplit(MUTABLE_HV(LvTARG(sv)), SvIV(sv)); } return 0; } /* +=for apidoc_section $magic =for apidoc magic_methcall Invoke a magic method (like FETCH). @@ -1937,7 +1944,7 @@ SV* Perl_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, SV *meth, U32 flags, - U32 argc, ...) + U32 argc, ...) { dSP; SV* ret = NULL; @@ -1947,11 +1954,11 @@ ENTER; if (flags & G_WRITING_TO_STDERR) { - SAVETMPS; + SAVETMPS; - save_re_context(); - SAVESPTR(PL_stderrgv); - PL_stderrgv = NULL; + save_re_context(); + SAVESPTR(PL_stderrgv); + PL_stderrgv = NULL; } PUSHSTACKi(PERLSI_MAGIC); @@ -1962,31 +1969,31 @@ EXTEND(SP, (I32)argc+1); PUSHs(SvTIED_obj(sv, mg)); if (flags & G_UNDEF_FILL) { - while (argc--) { - PUSHs(&PL_sv_undef); - } + while (argc--) { + PUSHs(&PL_sv_undef); + } } else if (argc > 0) { - va_list args; - va_start(args, argc); + va_list args; + va_start(args, argc); - do { - SV *const this_sv = va_arg(args, SV *); - PUSHs(this_sv); - } while (--argc); + do { + SV *const this_sv = va_arg(args, SV *); + PUSHs(this_sv); + } while (--argc); - va_end(args); + va_end(args); } PUTBACK; if (flags & G_DISCARD) { - call_sv(meth, G_SCALAR|G_DISCARD|G_METHOD_NAMED); + call_sv(meth, G_SCALAR|G_DISCARD|G_METHOD_NAMED); } else { - if (call_sv(meth, G_SCALAR|G_METHOD_NAMED)) - ret = *PL_stack_sp--; + if (call_sv(meth, G_SCALAR|G_METHOD_NAMED)) + ret = *PL_stack_sp--; } POPSTACK; if (flags & G_WRITING_TO_STDERR) - FREETMPS; + FREETMPS; LEAVE; return ret; } @@ -2002,18 +2009,18 @@ PERL_ARGS_ASSERT_MAGIC_METHCALL1; if (mg->mg_ptr) { - if (mg->mg_len >= 0) { - arg1 = newSVpvn_flags(mg->mg_ptr, mg->mg_len, SVs_TEMP); - } - else if (mg->mg_len == HEf_SVKEY) - arg1 = MUTABLE_SV(mg->mg_ptr); + if (mg->mg_len >= 0) { + arg1 = newSVpvn_flags(mg->mg_ptr, mg->mg_len, SVs_TEMP); + } + else if (mg->mg_len == HEf_SVKEY) + arg1 = MUTABLE_SV(mg->mg_ptr); } else if (mg->mg_type == PERL_MAGIC_tiedelem) { - arg1 = newSViv((IV)(mg->mg_len)); - sv_2mortal(arg1); + arg1 = newSViv((IV)(mg->mg_len)); + sv_2mortal(arg1); } if (!arg1) { - return Perl_magic_methcall(aTHX_ sv, mg, meth, flags, n - 1, val); + return Perl_magic_methcall(aTHX_ sv, mg, meth, flags, n - 1, val); } return Perl_magic_methcall(aTHX_ sv, mg, meth, flags, n, arg1, val); } @@ -2027,7 +2034,7 @@ ret = magic_methcall1(sv, mg, meth, 0, 1, NULL); if (ret) - sv_setsv(sv, ret); + sv_setsv(sv, ret); return 0; } @@ -2037,7 +2044,7 @@ PERL_ARGS_ASSERT_MAGIC_GETPACK; if (mg->mg_type == PERL_MAGIC_tiedelem) - mg->mg_flags |= MGf_GSKIP; + mg->mg_flags |= MGf_GSKIP; magic_methpack(sv,mg,SV_CONST(FETCH)); return 0; } @@ -2061,13 +2068,13 @@ * re-enabling magic on sv). */ if (TAINTING_get && (tmg = mg_find(sv, PERL_MAGIC_taint)) - && (tmg->mg_len & 1)) + && (tmg->mg_len & 1)) { - val = sv_mortalcopy(sv); - SvTAINTED_on(val); + val = sv_mortalcopy(sv); + SvTAINTED_on(val); } else - val = sv; + val = sv; magic_methcall1(sv, mg, SV_CONST(STORE), G_DISCARD, 2, val); return 0; @@ -2093,9 +2100,9 @@ retsv = magic_methcall1(sv, mg, SV_CONST(FETCHSIZE), 0, 1, NULL); if (retsv) { - retval = SvIV(retsv)-1; - if (retval < -1) - Perl_croak(aTHX_ "FETCHSIZE returned a negative value"); + retval = SvIV(retsv)-1; + if (retval < -1) + Perl_croak(aTHX_ "FETCHSIZE returned a negative value"); } return (U32) retval; } @@ -2117,9 +2124,9 @@ PERL_ARGS_ASSERT_MAGIC_NEXTPACK; ret = SvOK(key) ? Perl_magic_methcall(aTHX_ sv, mg, SV_CONST(NEXTKEY), 0, 1, key) - : Perl_magic_methcall(aTHX_ sv, mg, SV_CONST(FIRSTKEY), 0, 0); + : Perl_magic_methcall(aTHX_ sv, mg, SV_CONST(FIRSTKEY), 0, 0); if (ret) - sv_setsv(key,ret); + sv_setsv(key,ret); return 0; } @@ -2155,7 +2162,7 @@ /* there is a SCALAR method that we can call */ retval = Perl_magic_methcall(aTHX_ MUTABLE_SV(hv), mg, SV_CONST(SCALAR), 0, 0); if (!retval) - retval = &PL_sv_undef; + retval = &PL_sv_undef; return retval; } @@ -2175,23 +2182,23 @@ /* Use sv_2iv instead of SvIV() as the former generates smaller code, and setting/clearing debugger breakpoints is not a hot path. */ svp = av_fetch(MUTABLE_AV(mg->mg_obj), - sv_2iv(MUTABLE_SV((mg)->mg_ptr)), FALSE); + sv_2iv(MUTABLE_SV((mg)->mg_ptr)), FALSE); if (svp && SvIOKp(*svp)) { - OP * const o = INT2PTR(OP*,SvIVX(*svp)); - if (o) { + OP * const o = INT2PTR(OP*,SvIVX(*svp)); + if (o) { #ifdef PERL_DEBUG_READONLY_OPS - Slab_to_rw(OpSLAB(o)); + Slab_to_rw(OpSLAB(o)); #endif - /* set or clear breakpoint in the relevant control op */ - if (SvTRUE(sv)) - o->op_flags |= OPf_SPECIAL; - else - o->op_flags &= ~OPf_SPECIAL; + /* set or clear breakpoint in the relevant control op */ + if (SvTRUE(sv)) + o->op_flags |= OPf_SPECIAL; + else + o->op_flags &= ~OPf_SPECIAL; #ifdef PERL_DEBUG_READONLY_OPS - Slab_to_ro(OpSLAB(o)); + Slab_to_ro(OpSLAB(o)); #endif - } + } } return 0; } @@ -2204,7 +2211,7 @@ PERL_ARGS_ASSERT_MAGIC_GETARYLEN; if (obj) { - sv_setiv(sv, AvFILL(obj)); + sv_setiv(sv, AvFILL(obj)); } else { sv_set_undef(sv); } @@ -2219,10 +2226,10 @@ PERL_ARGS_ASSERT_MAGIC_SETARYLEN; if (obj) { - av_fill(obj, SvIV(sv)); + av_fill(obj, SvIV(sv)); } else { - Perl_ck_warner(aTHX_ packWARN(WARN_MISC), - "Attempt to set length of freed array"); + Perl_ck_warner(aTHX_ packWARN(WARN_MISC), + "Attempt to set length of freed array"); } return 0; } @@ -2236,10 +2243,10 @@ /* Reset the iterator when the array is cleared */ if (sizeof(IV) == sizeof(SSize_t)) { - *((IV *) &(mg->mg_len)) = 0; + *((IV *) &(mg->mg_len)) = 0; } else { - if (mg->mg_ptr) - *((IV *) mg->mg_ptr) = 0; + if (mg->mg_ptr) + *((IV *) mg->mg_ptr) = 0; } return 0; @@ -2253,17 +2260,17 @@ /* during global destruction, mg_obj may already have been freed */ if (PL_in_clean_all) - return 0; + return 0; mg = mg_find (mg->mg_obj, PERL_MAGIC_arylen); if (mg) { - /* arylen scalar holds a pointer back to the array, but doesn't own a - reference. Hence the we (the array) are about to go away with it - still pointing at us. Clear its pointer, else it would be pointing - at free memory. See the comment in sv_magic about reference loops, - and why it can't own a reference to us. */ - mg->mg_obj = 0; + /* arylen scalar holds a pointer back to the array, but doesn't own a + reference. Hence the we (the array) are about to go away with it + still pointing at us. Clear its pointer, else it would be pointing + at free memory. See the comment in sv_magic about reference loops, + and why it can't own a reference to us. */ + mg->mg_obj = 0; } return 0; } @@ -2278,11 +2285,11 @@ PERL_UNUSED_ARG(mg); if (found && found->mg_len != -1) { - STRLEN i = found->mg_len; - if (found->mg_flags & MGf_BYTES && DO_UTF8(lsv)) - i = sv_pos_b2u_flags(lsv, i, SV_GMAGIC|SV_CONST_RETURN); - sv_setuv(sv, i); - return 0; + STRLEN i = found->mg_len; + if (found->mg_flags & MGf_BYTES && DO_UTF8(lsv)) + i = sv_pos_b2u_flags(lsv, i, SV_GMAGIC|SV_CONST_RETURN); + sv_setuv(sv, i); + return 0; } sv_set_undef(sv); return 0; @@ -2302,13 +2309,13 @@ found = mg_find_mglob(lsv); if (!found) { - if (!SvOK(sv)) - return 0; - found = sv_magicext_mglob(lsv); + if (!SvOK(sv)) + return 0; + found = sv_magicext_mglob(lsv); } else if (!SvOK(sv)) { - found->mg_len = -1; - return 0; + found->mg_len = -1; + return 0; } s = SvPV_const(lsv, len); @@ -2316,17 +2323,17 @@ if (DO_UTF8(lsv)) { const STRLEN ulen = sv_or_pv_len_utf8(lsv, s, len); - if (ulen) - len = ulen; + if (ulen) + len = ulen; } if (pos < 0) { - pos += len; - if (pos < 0) - pos = 0; + pos += len; + if (pos < 0) + pos = 0; } else if (pos > (SSize_t)len) - pos = len; + pos = len; found->mg_len = pos; found->mg_flags &= ~(MGf_MINMATCH|MGf_BYTES); @@ -2349,17 +2356,17 @@ PERL_UNUSED_ARG(mg); if (!translate_substr_offsets( - SvUTF8(lsv) ? sv_or_pv_len_utf8(lsv, tmps, len) : len, - negoff ? -(IV)offs : (IV)offs, !negoff, - negrem ? -(IV)rem : (IV)rem, !negrem, &offs, &rem + SvUTF8(lsv) ? sv_or_pv_len_utf8(lsv, tmps, len) : len, + negoff ? -(IV)offs : (IV)offs, !negoff, + negrem ? -(IV)rem : (IV)rem, !negrem, &offs, &rem )) { - Perl_ck_warner(aTHX_ packWARN(WARN_SUBSTR), "substr outside of string"); + Perl_ck_warner(aTHX_ packWARN(WARN_SUBSTR), "substr outside of string"); sv_set_undef(sv); - return 0; + return 0; } if (SvUTF8(lsv)) - offs = sv_or_pv_pos_u2b(lsv, tmps, offs, &rem); + offs = sv_or_pv_pos_u2b(lsv, tmps, offs, &rem); sv_setpvn(sv, tmps + offs, rem); if (SvUTF8(lsv)) SvUTF8_on(sv); @@ -2382,36 +2389,36 @@ SvGETMAGIC(lsv); if (SvROK(lsv)) - Perl_ck_warner(aTHX_ packWARN(WARN_SUBSTR), - "Attempt to use reference as lvalue in substr" - ); + Perl_ck_warner(aTHX_ packWARN(WARN_SUBSTR), + "Attempt to use reference as lvalue in substr" + ); SvPV_force_nomg(lsv,lsv_len); if (SvUTF8(lsv)) lsv_len = sv_len_utf8_nomg(lsv); if (!translate_substr_offsets( - lsv_len, - negoff ? -(IV)lvoff : (IV)lvoff, !negoff, - neglen ? -(IV)lvlen : (IV)lvlen, !neglen, &lvoff, &lvlen + lsv_len, + negoff ? -(IV)lvoff : (IV)lvoff, !negoff, + neglen ? -(IV)lvlen : (IV)lvlen, !neglen, &lvoff, &lvlen )) - Perl_croak(aTHX_ "substr outside of string"); + Perl_croak(aTHX_ "substr outside of string"); oldtarglen = lvlen; if (DO_UTF8(sv)) { - sv_utf8_upgrade_nomg(lsv); - lvoff = sv_pos_u2b_flags(lsv, lvoff, &lvlen, SV_CONST_RETURN); - sv_insert_flags(lsv, lvoff, lvlen, tmps, len, 0); - newtarglen = sv_or_pv_len_utf8(sv, tmps, len); - SvUTF8_on(lsv); + sv_utf8_upgrade_nomg(lsv); + lvoff = sv_pos_u2b_flags(lsv, lvoff, &lvlen, SV_CONST_RETURN); + sv_insert_flags(lsv, lvoff, lvlen, tmps, len, 0); + newtarglen = sv_or_pv_len_utf8(sv, tmps, len); + SvUTF8_on(lsv); } else if (SvUTF8(lsv)) { - const char *utf8; - lvoff = sv_pos_u2b_flags(lsv, lvoff, &lvlen, SV_CONST_RETURN); - newtarglen = len; - utf8 = (char*)bytes_to_utf8((U8*)tmps, &len); - sv_insert_flags(lsv, lvoff, lvlen, utf8, len, 0); - Safefree(utf8); + const char *utf8; + lvoff = sv_pos_u2b_flags(lsv, lvoff, &lvlen, SV_CONST_RETURN); + newtarglen = len; + utf8 = (char*)bytes_to_utf8((U8*)tmps, &len); + sv_insert_flags(lsv, lvoff, lvlen, utf8, len, 0); + Safefree(utf8); } else { - sv_insert_flags(lsv, lvoff, lvlen, tmps, len, 0); - newtarglen = len; + sv_insert_flags(lsv, lvoff, lvlen, tmps, len, 0); + newtarglen = len; } if (!neglen) LvTARGLEN(sv) = newtarglen; if (negoff) LvTARGOFF(sv) += newtarglen - oldtarglen; @@ -2440,9 +2447,9 @@ /* update taint status */ if (TAINT_get) - mg->mg_len |= 1; + mg->mg_len |= 1; else - mg->mg_len &= ~1; + mg->mg_len &= ~1; return 0; } @@ -2479,37 +2486,37 @@ if (!mg) mg = mg_find(sv, PERL_MAGIC_defelem); assert(mg); if (LvTARGLEN(sv)) { - if (mg->mg_obj) { - SV * const ahv = LvTARG(sv); - HE * const he = hv_fetch_ent(MUTABLE_HV(ahv), mg->mg_obj, FALSE, 0); + if (mg->mg_obj) { + SV * const ahv = LvTARG(sv); + HE * const he = hv_fetch_ent(MUTABLE_HV(ahv), mg->mg_obj, FALSE, 0); if (he) targ = HeVAL(he); - } - else if (LvSTARGOFF(sv) >= 0) { - AV *const av = MUTABLE_AV(LvTARG(sv)); - if (LvSTARGOFF(sv) <= AvFILL(av)) - { - if (SvRMAGICAL(av)) { - SV * const * const svp = av_fetch(av, LvSTARGOFF(sv), 0); - targ = svp ? *svp : NULL; - } - else - targ = AvARRAY(av)[LvSTARGOFF(sv)]; - } - } - if (targ && (targ != &PL_sv_undef)) { - /* somebody else defined it for us */ - SvREFCNT_dec(LvTARG(sv)); - LvTARG(sv) = SvREFCNT_inc_simple_NN(targ); - LvTARGLEN(sv) = 0; - SvREFCNT_dec(mg->mg_obj); - mg->mg_obj = NULL; - mg->mg_flags &= ~MGf_REFCOUNTED; - } - return targ; + } + else if (LvSTARGOFF(sv) >= 0) { + AV *const av = MUTABLE_AV(LvTARG(sv)); + if (LvSTARGOFF(sv) <= AvFILL(av)) + { + if (SvRMAGICAL(av)) { + SV * const * const svp = av_fetch(av, LvSTARGOFF(sv), 0); + targ = svp ? *svp : NULL; + } + else + targ = AvARRAY(av)[LvSTARGOFF(sv)]; + } + } + if (targ && (targ != &PL_sv_undef)) { + /* somebody else defined it for us */ + SvREFCNT_dec(LvTARG(sv)); + LvTARG(sv) = SvREFCNT_inc_simple_NN(targ); + LvTARGLEN(sv) = 0; + SvREFCNT_dec(mg->mg_obj); + mg->mg_obj = NULL; + mg->mg_flags &= ~MGf_REFCOUNTED; + } + return targ; } else - return LvTARG(sv); + return LvTARG(sv); } int @@ -2527,10 +2534,10 @@ PERL_ARGS_ASSERT_MAGIC_SETDEFELEM; PERL_UNUSED_ARG(mg); if (LvTARGLEN(sv)) - vivify_defelem(sv); + vivify_defelem(sv); if (LvTARG(sv)) { - sv_setsv(LvTARG(sv), sv); - SvSETMAGIC(LvTARG(sv)); + sv_setsv(LvTARG(sv), sv); + SvSETMAGIC(LvTARG(sv)); } return 0; } @@ -2544,26 +2551,26 @@ PERL_ARGS_ASSERT_VIVIFY_DEFELEM; if (!LvTARGLEN(sv) || !(mg = mg_find(sv, PERL_MAGIC_defelem))) - return; + return; if (mg->mg_obj) { - SV * const ahv = LvTARG(sv); - HE * const he = hv_fetch_ent(MUTABLE_HV(ahv), mg->mg_obj, TRUE, 0); + SV * const ahv = LvTARG(sv); + HE * const he = hv_fetch_ent(MUTABLE_HV(ahv), mg->mg_obj, TRUE, 0); if (he) value = HeVAL(he); - if (!value || value == &PL_sv_undef) - Perl_croak(aTHX_ PL_no_helem_sv, SVfARG(mg->mg_obj)); + if (!value || value == &PL_sv_undef) + Perl_croak(aTHX_ PL_no_helem_sv, SVfARG(mg->mg_obj)); } else if (LvSTARGOFF(sv) < 0) - Perl_croak(aTHX_ PL_no_aelem, LvSTARGOFF(sv)); + Perl_croak(aTHX_ PL_no_aelem, LvSTARGOFF(sv)); else { - AV *const av = MUTABLE_AV(LvTARG(sv)); - if ((I32)LvTARGLEN(sv) < 0 && LvSTARGOFF(sv) > AvFILL(av)) - LvTARG(sv) = NULL; /* array can't be extended */ - else { - SV* const * const svp = av_fetch(av, LvSTARGOFF(sv), TRUE); - if (!svp || !(value = *svp)) - Perl_croak(aTHX_ PL_no_aelem, LvSTARGOFF(sv)); - } + AV *const av = MUTABLE_AV(LvTARG(sv)); + if ((I32)LvTARGLEN(sv) < 0 && LvSTARGOFF(sv) > AvFILL(av)) + LvTARG(sv) = NULL; /* array can't be extended */ + else { + SV* const * const svp = av_fetch(av, LvSTARGOFF(sv), TRUE); + if (!svp || !(value = *svp)) + Perl_croak(aTHX_ PL_no_aelem, LvSTARGOFF(sv)); + } } SvREFCNT_inc_simple_void(value); SvREFCNT_dec(LvTARG(sv)); @@ -2601,6 +2608,22 @@ return 0; } + +int +Perl_magic_freemglob(pTHX_ SV *sv, MAGIC *mg) +{ + PERL_ARGS_ASSERT_MAGIC_FREEMGLOB; + PERL_UNUSED_ARG(sv); + + /* pos() magic uses mg_len as a string position rather than a buffer + * length, and mg_ptr is currently unused, so skip freeing. + */ + assert(mg->mg_type == PERL_MAGIC_regex_global && mg->mg_len >= -1); + mg->mg_ptr = NULL; + return 0; +} + + int Perl_magic_setuvar(pTHX_ SV *sv, MAGIC *mg) { @@ -2609,7 +2632,7 @@ PERL_ARGS_ASSERT_MAGIC_SETUVAR; if (uf && uf->uf_set) - (*uf->uf_set)(aTHX_ uf->uf_index, sv); + (*uf->uf_set)(aTHX_ uf->uf_index, sv); return 0; } @@ -2639,10 +2662,28 @@ PERL_UNUSED_CONTEXT; PERL_UNUSED_ARG(sv); if (mg->mg_ptr) { - Safefree(mg->mg_ptr); - mg->mg_ptr = NULL; - mg->mg_len = -1; + Safefree(mg->mg_ptr); + mg->mg_ptr = NULL; + mg->mg_len = -1; + } + return 0; +} + +int +Perl_magic_freecollxfrm(pTHX_ SV *sv, MAGIC *mg) +{ + PERL_ARGS_ASSERT_MAGIC_FREECOLLXFRM; + PERL_UNUSED_ARG(sv); + + /* Collate magic uses mg_len as a string length rather than a buffer + * length, so we need to free even with mg_len == 0: hence we can't + * rely on standard magic free handling */ + if (mg->mg_len >= 0) { + assert(mg->mg_type == PERL_MAGIC_collxfrm); + Safefree(mg->mg_ptr); + mg->mg_ptr = NULL; } + return 0; } #endif /* USE_LOCALE_COLLATE */ @@ -2661,6 +2702,22 @@ } int +Perl_magic_freeutf8(pTHX_ SV *sv, MAGIC *mg) +{ + PERL_ARGS_ASSERT_MAGIC_FREEUTF8; + PERL_UNUSED_ARG(sv); + + /* utf8 magic uses mg_len as a string length rather than a buffer + * length, so we need to free even with mg_len == 0: hence we can't + * rely on standard magic free handling */ + assert(mg->mg_type == PERL_MAGIC_utf8 && mg->mg_len >= -1); + Safefree(mg->mg_ptr); + mg->mg_ptr = NULL; + return 0; +} + + +int Perl_magic_setlvref(pTHX_ SV *sv, MAGIC *mg) { const char *bad = NULL; @@ -2668,52 +2725,52 @@ if (!SvROK(sv)) Perl_croak(aTHX_ "Assigned value is not a reference"); switch (mg->mg_private & OPpLVREF_TYPE) { case OPpLVREF_SV: - if (SvTYPE(SvRV(sv)) > SVt_PVLV) - bad = " SCALAR"; - break; + if (SvTYPE(SvRV(sv)) > SVt_PVLV) + bad = " SCALAR"; + break; case OPpLVREF_AV: - if (SvTYPE(SvRV(sv)) != SVt_PVAV) - bad = "n ARRAY"; - break; + if (SvTYPE(SvRV(sv)) != SVt_PVAV) + bad = "n ARRAY"; + break; case OPpLVREF_HV: - if (SvTYPE(SvRV(sv)) != SVt_PVHV) - bad = " HASH"; - break; + if (SvTYPE(SvRV(sv)) != SVt_PVHV) + bad = " HASH"; + break; case OPpLVREF_CV: - if (SvTYPE(SvRV(sv)) != SVt_PVCV) - bad = " CODE"; + if (SvTYPE(SvRV(sv)) != SVt_PVCV) + bad = " CODE"; } if (bad) - /* diag_listed_as: Assigned value is not %s reference */ - Perl_croak(aTHX_ "Assigned value is not a%s reference", bad); + /* diag_listed_as: Assigned value is not %s reference */ + Perl_croak(aTHX_ "Assigned value is not a%s reference", bad); switch (mg->mg_obj ? SvTYPE(mg->mg_obj) : 0) { case 0: { - SV * const old = PAD_SV(mg->mg_len); - PAD_SETSV(mg->mg_len, SvREFCNT_inc_NN(SvRV(sv))); - SvREFCNT_dec(old); - break; + SV * const old = PAD_SV(mg->mg_len); + PAD_SETSV(mg->mg_len, SvREFCNT_inc_NN(SvRV(sv))); + SvREFCNT_dec(old); + break; } case SVt_PVGV: - gv_setref(mg->mg_obj, sv); - SvSETMAGIC(mg->mg_obj); - break; + gv_setref(mg->mg_obj, sv); + SvSETMAGIC(mg->mg_obj); + break; case SVt_PVAV: - av_store((AV *)mg->mg_obj, SvIV((SV *)mg->mg_ptr), - SvREFCNT_inc_simple_NN(SvRV(sv))); - break; + av_store((AV *)mg->mg_obj, SvIV((SV *)mg->mg_ptr), + SvREFCNT_inc_simple_NN(SvRV(sv))); + break; case SVt_PVHV: - (void)hv_store_ent((HV *)mg->mg_obj, (SV *)mg->mg_ptr, + (void)hv_store_ent((HV *)mg->mg_obj, (SV *)mg->mg_ptr, SvREFCNT_inc_simple_NN(SvRV(sv)), 0); } if (mg->mg_flags & MGf_PERSIST) - NOOP; /* This sv is in use as an iterator var and will be reused, - so we must leave the magic. */ + NOOP; /* This sv is in use as an iterator var and will be reused, + so we must leave the magic. */ else - /* This sv could be returned by the assignment op, so clear the - magic, as lvrefs are an implementation detail that must not be - leaked to the user. */ - sv_unmagic(sv, PERL_MAGIC_lvref); + /* This sv could be returned by the assignment op, so clear the + magic, as lvrefs are an implementation detail that must not be + leaked to the user. */ + sv_unmagic(sv, PERL_MAGIC_lvref); return 0; } @@ -2721,9 +2778,6 @@ S_set_dollarzero(pTHX_ SV *sv) PERL_TSA_REQUIRES(PL_dollarzero_mutex) { -#ifdef USE_ITHREADS - dVAR; -#endif const char *s; STRLEN len; #ifdef HAS_SETPROCTITLE @@ -2800,9 +2854,6 @@ int Perl_magic_set(pTHX_ SV *sv, MAGIC *mg) { -#ifdef USE_ITHREADS - dVAR; -#endif I32 paren; const REGEXP * rx; I32 i; @@ -2813,10 +2864,10 @@ if (!mg->mg_ptr) { paren = mg->mg_len; - if (PL_curpm && (rx = PM_GETRE(PL_curpm))) { + if (PL_curpm && (rx = PM_GETRE(PL_curpm))) { setparen_got_rx: - CALLREG_NUMBUF_STORE((REGEXP * const)rx,paren,sv); - } else { + CALLREG_NUMBUF_STORE((REGEXP *)rx,paren,sv); + } else { /* Croak with a READONLY error when a numbered match var is * set without a previous pattern match. Unless it's C */ @@ -2830,28 +2881,28 @@ switch (*mg->mg_ptr) { case '\001': /* ^A */ - if (SvOK(sv)) sv_copypv(PL_bodytarget, sv); - else SvOK_off(PL_bodytarget); - FmLINES(PL_bodytarget) = 0; - if (SvPOK(PL_bodytarget)) { - char *s = SvPVX(PL_bodytarget); + if (SvOK(sv)) sv_copypv(PL_bodytarget, sv); + else SvOK_off(PL_bodytarget); + FmLINES(PL_bodytarget) = 0; + if (SvPOK(PL_bodytarget)) { + char *s = SvPVX(PL_bodytarget); char *e = SvEND(PL_bodytarget); - while ( ((s = (char *) memchr(s, '\n', e - s))) ) { - FmLINES(PL_bodytarget)++; - s++; - } - } - /* mg_set() has temporarily made sv non-magical */ - if (TAINTING_get) { - if ((tmg = mg_find(sv,PERL_MAGIC_taint)) && tmg->mg_len & 1) - SvTAINTED_on(PL_bodytarget); - else - SvTAINTED_off(PL_bodytarget); - } - break; + while ( ((s = (char *) memchr(s, '\n', e - s))) ) { + FmLINES(PL_bodytarget)++; + s++; + } + } + /* mg_set() has temporarily made sv non-magical */ + if (TAINTING_get) { + if ((tmg = mg_find(sv,PERL_MAGIC_taint)) && tmg->mg_len & 1) + SvTAINTED_on(PL_bodytarget); + else + SvTAINTED_off(PL_bodytarget); + } + break; case '\003': /* ^C */ - PL_minus_c = cBOOL(SvIV(sv)); - break; + PL_minus_c = cBOOL(SvIV(sv)); + break; case '\004': /* ^D */ #ifdef DEBUGGING @@ -2862,30 +2913,30 @@ dump_all_perl(!DEBUG_B_TEST); } #else - PL_debug = (SvIV(sv)) | DEBUG_TOP_FLAG; + PL_debug = (SvIV(sv)) | DEBUG_TOP_FLAG; #endif - break; + break; case '\005': /* ^E */ - if (*(mg->mg_ptr+1) == '\0') { + if (*(mg->mg_ptr+1) == '\0') { #ifdef VMS - set_vaxc_errno(SvIV(sv)); + set_vaxc_errno(SvIV(sv)); #elif defined(WIN32) - SetLastError( SvIV(sv) ); + SetLastError( SvIV(sv) ); #elif defined(OS2) - os2_setsyserrno(SvIV(sv)); + os2_setsyserrno(SvIV(sv)); #else - /* will anyone ever use this? */ - SETERRNO(SvIV(sv), 4); + /* will anyone ever use this? */ + SETERRNO(SvIV(sv), 4); #endif - } - else if (strEQ(mg->mg_ptr + 1, "NCODING") && SvOK(sv)) + } + else if (strEQ(mg->mg_ptr + 1, "NCODING") && SvOK(sv)) Perl_croak(aTHX_ "${^ENCODING} is no longer supported"); - break; + break; case '\006': /* ^F */ if (mg->mg_ptr[1] == '\0') { PL_maxsysfd = SvIV(sv); } - break; + break; case '\010': /* ^H */ { U32 save_hints = PL_hints; @@ -2896,48 +2947,48 @@ notify_parser_that_changed_to_utf8(); } } - break; + break; case '\011': /* ^I */ /* NOT \t in EBCDIC */ - Safefree(PL_inplace); - PL_inplace = SvOK(sv) ? savesvpv(sv) : NULL; - break; + Safefree(PL_inplace); + PL_inplace = SvOK(sv) ? savesvpv(sv) : NULL; + break; case '\016': /* ^N */ - if (PL_curpm && (rx = PM_GETRE(PL_curpm)) - && (paren = RX_LASTCLOSEPAREN(rx))) goto setparen_got_rx; - goto croakparen; + if (PL_curpm && (rx = PM_GETRE(PL_curpm)) + && (paren = RX_LASTCLOSEPAREN(rx))) goto setparen_got_rx; + goto croakparen; case '\017': /* ^O */ - if (*(mg->mg_ptr+1) == '\0') { - Safefree(PL_osname); - PL_osname = NULL; - if (SvOK(sv)) { - TAINT_PROPER("assigning to $^O"); - PL_osname = savesvpv(sv); - } - } - else if (strEQ(mg->mg_ptr, "\017PEN")) { - STRLEN len; - const char *const start = SvPV(sv, len); - const char *out = (const char*)memchr(start, '\0', len); - SV *tmp; - - - PL_compiling.cop_hints |= HINT_LEXICAL_IO_IN | HINT_LEXICAL_IO_OUT; - PL_hints |= HINT_LEXICAL_IO_IN | HINT_LEXICAL_IO_OUT; - - /* Opening for input is more common than opening for output, so - ensure that hints for input are sooner on linked list. */ - tmp = out ? newSVpvn_flags(out + 1, start + len - out - 1, - SvUTF8(sv)) - : newSVpvs_flags("", SvUTF8(sv)); - (void)hv_stores(GvHV(PL_hintgv), "open>", tmp); - mg_set(tmp); - - tmp = newSVpvn_flags(start, out ? (STRLEN)(out - start) : len, - SvUTF8(sv)); - (void)hv_stores(GvHV(PL_hintgv), "open<", tmp); - mg_set(tmp); - } - break; + if (*(mg->mg_ptr+1) == '\0') { + Safefree(PL_osname); + PL_osname = NULL; + if (SvOK(sv)) { + TAINT_PROPER("assigning to $^O"); + PL_osname = savesvpv(sv); + } + } + else if (strEQ(mg->mg_ptr, "\017PEN")) { + STRLEN len; + const char *const start = SvPV(sv, len); + const char *out = (const char*)memchr(start, '\0', len); + SV *tmp; + + + PL_compiling.cop_hints |= HINT_LEXICAL_IO_IN | HINT_LEXICAL_IO_OUT; + PL_hints |= HINT_LEXICAL_IO_IN | HINT_LEXICAL_IO_OUT; + + /* Opening for input is more common than opening for output, so + ensure that hints for input are sooner on linked list. */ + tmp = out ? newSVpvn_flags(out + 1, start + len - out - 1, + SvUTF8(sv)) + : newSVpvs_flags("", SvUTF8(sv)); + (void)hv_stores(GvHV(PL_hintgv), "open>", tmp); + mg_set(tmp); + + tmp = newSVpvn_flags(start, out ? (STRLEN)(out - start) : len, + SvUTF8(sv)); + (void)hv_stores(GvHV(PL_hintgv), "open<", tmp); + mg_set(tmp); + } + break; case '\020': /* ^P */ PL_perldb = SvIV(sv); if (PL_perldb && !PL_DBsingle) @@ -2945,111 +2996,106 @@ break; case '\024': /* ^T */ #ifdef BIG_TIME - PL_basetime = (Time_t)(SvNOK(sv) ? SvNVX(sv) : sv_2nv(sv)); + PL_basetime = (Time_t)(SvNOK(sv) ? SvNVX(sv) : sv_2nv(sv)); #else - PL_basetime = (Time_t)SvIV(sv); + PL_basetime = (Time_t)SvIV(sv); #endif - break; + break; case '\025': /* ^UTF8CACHE */ - if (strEQ(mg->mg_ptr+1, "TF8CACHE")) { - PL_utf8cache = (signed char) sv_2iv(sv); - } - break; + if (strEQ(mg->mg_ptr+1, "TF8CACHE")) { + PL_utf8cache = (signed char) sv_2iv(sv); + } + break; case '\027': /* ^W & $^WARNING_BITS */ - if (*(mg->mg_ptr+1) == '\0') { - if ( ! (PL_dowarn & G_WARN_ALL_MASK)) { - i = SvIV(sv); - PL_dowarn = (PL_dowarn & ~G_WARN_ON) - | (i ? G_WARN_ON : G_WARN_OFF) ; - } - } - else if (strEQ(mg->mg_ptr+1, "ARNING_BITS")) { - if ( ! (PL_dowarn & G_WARN_ALL_MASK)) { - if (!SvPOK(sv)) { + if (*(mg->mg_ptr+1) == '\0') { + if ( ! (PL_dowarn & G_WARN_ALL_MASK)) { + i = SvIV(sv); + PL_dowarn = (PL_dowarn & ~G_WARN_ON) + | (i ? G_WARN_ON : G_WARN_OFF) ; + } + } + else if (strEQ(mg->mg_ptr+1, "ARNING_BITS")) { + if ( ! (PL_dowarn & G_WARN_ALL_MASK)) { + if (!SvPOK(sv)) { free_and_set_cop_warnings(&PL_compiling, pWARN_STD); - break; - } - { - STRLEN len, i; - int not_none = 0, not_all = 0; - const U8 * const ptr = (const U8 *)SvPV_const(sv, len) ; - for (i = 0 ; i < len ; ++i) { - not_none |= ptr[i]; - not_all |= ptr[i] ^ 0x55; - } - if (!not_none) { + break; + } + { + STRLEN len, i; + int not_none = 0, not_all = 0; + const U8 * const ptr = (const U8 *)SvPV_const(sv, len) ; + for (i = 0 ; i < len ; ++i) { + not_none |= ptr[i]; + not_all |= ptr[i] ^ 0x55; + } + if (!not_none) { free_and_set_cop_warnings(&PL_compiling, pWARN_NONE); - } else if (len >= WARNsize && !not_all) { + } else if (len >= WARNsize && !not_all) { free_and_set_cop_warnings(&PL_compiling, pWARN_ALL); - PL_dowarn |= G_WARN_ONCE ; - } + PL_dowarn |= G_WARN_ONCE ; + } else { - STRLEN len; - const char *const p = SvPV_const(sv, len); + STRLEN len; + const char *const p = SvPV_const(sv, len); - PL_compiling.cop_warnings - = Perl_new_warnings_bitfield(aTHX_ PL_compiling.cop_warnings, - p, len); - - if (isWARN_on(PL_compiling.cop_warnings, WARN_ONCE)) - PL_dowarn |= G_WARN_ONCE ; - } - - } - } - } -#ifdef WIN32 - else if (strEQ(mg->mg_ptr+1, "IN32_SLOPPY_STAT")) { - w32_sloppystat = (bool)sv_true(sv); - } -#endif - break; + PL_compiling.cop_warnings + = Perl_new_warnings_bitfield(aTHX_ PL_compiling.cop_warnings, + p, len); + + if (isWARN_on(PL_compiling.cop_warnings, WARN_ONCE)) + PL_dowarn |= G_WARN_ONCE ; + } + + } + } + } + break; case '.': - if (PL_localizing) { - if (PL_localizing == 1) - SAVESPTR(PL_last_in_gv); - } - else if (SvOK(sv) && GvIO(PL_last_in_gv)) - IoLINES(GvIOp(PL_last_in_gv)) = SvIV(sv); - break; + if (PL_localizing) { + if (PL_localizing == 1) + SAVESPTR(PL_last_in_gv); + } + else if (SvOK(sv) && GvIO(PL_last_in_gv)) + IoLINES(GvIOp(PL_last_in_gv)) = SvIV(sv); + break; case '^': - Safefree(IoTOP_NAME(GvIOp(PL_defoutgv))); - IoTOP_NAME(GvIOp(PL_defoutgv)) = savesvpv(sv); - IoTOP_GV(GvIOp(PL_defoutgv)) = gv_fetchsv(sv, GV_ADD, SVt_PVIO); - break; + Safefree(IoTOP_NAME(GvIOp(PL_defoutgv))); + IoTOP_NAME(GvIOp(PL_defoutgv)) = savesvpv(sv); + IoTOP_GV(GvIOp(PL_defoutgv)) = gv_fetchsv(sv, GV_ADD, SVt_PVIO); + break; case '~': - Safefree(IoFMT_NAME(GvIOp(PL_defoutgv))); - IoFMT_NAME(GvIOp(PL_defoutgv)) = savesvpv(sv); - IoFMT_GV(GvIOp(PL_defoutgv)) = gv_fetchsv(sv, GV_ADD, SVt_PVIO); - break; + Safefree(IoFMT_NAME(GvIOp(PL_defoutgv))); + IoFMT_NAME(GvIOp(PL_defoutgv)) = savesvpv(sv); + IoFMT_GV(GvIOp(PL_defoutgv)) = gv_fetchsv(sv, GV_ADD, SVt_PVIO); + break; case '=': - IoPAGE_LEN(GvIOp(PL_defoutgv)) = (SvIV(sv)); - break; + IoPAGE_LEN(GvIOp(PL_defoutgv)) = (SvIV(sv)); + break; case '-': - IoLINES_LEFT(GvIOp(PL_defoutgv)) = (SvIV(sv)); - if (IoLINES_LEFT(GvIOp(PL_defoutgv)) < 0L) - IoLINES_LEFT(GvIOp(PL_defoutgv)) = 0L; - break; + IoLINES_LEFT(GvIOp(PL_defoutgv)) = (SvIV(sv)); + if (IoLINES_LEFT(GvIOp(PL_defoutgv)) < 0L) + IoLINES_LEFT(GvIOp(PL_defoutgv)) = 0L; + break; case '%': - IoPAGE(GvIOp(PL_defoutgv)) = (SvIV(sv)); - break; + IoPAGE(GvIOp(PL_defoutgv)) = (SvIV(sv)); + break; case '|': - { - IO * const io = GvIO(PL_defoutgv); - if(!io) - break; - if ((SvIV(sv)) == 0) - IoFLAGS(io) &= ~IOf_FLUSH; - else { - if (!(IoFLAGS(io) & IOf_FLUSH)) { - PerlIO *ofp = IoOFP(io); - if (ofp) - (void)PerlIO_flush(ofp); - IoFLAGS(io) |= IOf_FLUSH; - } - } - } - break; + { + IO * const io = GvIO(PL_defoutgv); + if(!io) + break; + if ((SvIV(sv)) == 0) + IoFLAGS(io) &= ~IOf_FLUSH; + else { + if (!(IoFLAGS(io) & IOf_FLUSH)) { + PerlIO *ofp = IoOFP(io); + if (ofp) + (void)PerlIO_flush(ofp); + IoFLAGS(io) |= IOf_FLUSH; + } + } + } + break; case '/': { if (SvROK(sv)) { @@ -3079,36 +3125,36 @@ SvREFCNT_dec(PL_rs); PL_rs = newSVsv(sv); } - break; + break; case '\\': - SvREFCNT_dec(PL_ors_sv); - if (SvOK(sv)) { - PL_ors_sv = newSVsv(sv); - } - else { - PL_ors_sv = NULL; - } - break; + SvREFCNT_dec(PL_ors_sv); + if (SvOK(sv)) { + PL_ors_sv = newSVsv(sv); + } + else { + PL_ors_sv = NULL; + } + break; case '[': - if (SvIV(sv) != 0) - Perl_croak(aTHX_ "Assigning non-zero to $[ is no longer possible"); - break; + if (SvIV(sv) != 0) + Perl_croak(aTHX_ "Assigning non-zero to $[ is no longer possible"); + break; case '?': #ifdef COMPLEX_STATUS - if (PL_localizing == 2) { - SvUPGRADE(sv, SVt_PVLV); - PL_statusvalue = LvTARGOFF(sv); - PL_statusvalue_vms = LvTARGLEN(sv); - } - else + if (PL_localizing == 2) { + SvUPGRADE(sv, SVt_PVLV); + PL_statusvalue = LvTARGOFF(sv); + PL_statusvalue_vms = LvTARGLEN(sv); + } + else #endif #ifdef VMSISH_STATUS - if (VMSISH_STATUS) - STATUS_NATIVE_CHILD_SET((U32)SvIV(sv)); - else + if (VMSISH_STATUS) + STATUS_NATIVE_CHILD_SET((U32)SvIV(sv)); + else #endif - STATUS_UNIX_EXIT_SET(SvIV(sv)); - break; + STATUS_UNIX_EXIT_SET(SvIV(sv)); + break; case '!': { #ifdef VMS @@ -3117,93 +3163,93 @@ # define PERL_VMS_BANG 0 #endif #if defined(WIN32) - SETERRNO(win32_get_errno(SvIOK(sv) ? SvIVX(sv) : SvOK(sv) ? sv_2iv(sv) : 0), - (SvIV(sv) == EVMSERR) ? 4 : PERL_VMS_BANG); + SETERRNO(win32_get_errno(SvIOK(sv) ? SvIVX(sv) : SvOK(sv) ? sv_2iv(sv) : 0), + (SvIV(sv) == EVMSERR) ? 4 : PERL_VMS_BANG); #else - SETERRNO(SvIOK(sv) ? SvIVX(sv) : SvOK(sv) ? sv_2iv(sv) : 0, - (SvIV(sv) == EVMSERR) ? 4 : PERL_VMS_BANG); + SETERRNO(SvIOK(sv) ? SvIVX(sv) : SvOK(sv) ? sv_2iv(sv) : 0, + (SvIV(sv) == EVMSERR) ? 4 : PERL_VMS_BANG); #endif - } - break; + } + break; case '<': - { + { /* XXX $< currently silently ignores failures */ - const Uid_t new_uid = SvUID(sv); - PL_delaymagic_uid = new_uid; - if (PL_delaymagic) { - PL_delaymagic |= DM_RUID; - break; /* don't do magic till later */ - } + const Uid_t new_uid = SvUID(sv); + PL_delaymagic_uid = new_uid; + if (PL_delaymagic) { + PL_delaymagic |= DM_RUID; + break; /* don't do magic till later */ + } #ifdef HAS_SETRUID - PERL_UNUSED_RESULT(setruid(new_uid)); + PERL_UNUSED_RESULT(setruid(new_uid)); #elif defined(HAS_SETREUID) PERL_UNUSED_RESULT(setreuid(new_uid, (Uid_t)-1)); #elif defined(HAS_SETRESUID) PERL_UNUSED_RESULT(setresuid(new_uid, (Uid_t)-1, (Uid_t)-1)); #else - if (new_uid == PerlProc_geteuid()) { /* special case $< = $> */ + if (new_uid == PerlProc_geteuid()) { /* special case $< = $> */ # ifdef PERL_DARWIN - /* workaround for Darwin's setuid peculiarity, cf [perl #24122] */ - if (new_uid != 0 && PerlProc_getuid() == 0) + /* workaround for Darwin's setuid peculiarity, cf [perl #24122] */ + if (new_uid != 0 && PerlProc_getuid() == 0) PERL_UNUSED_RESULT(PerlProc_setuid(0)); # endif PERL_UNUSED_RESULT(PerlProc_setuid(new_uid)); - } else { - Perl_croak(aTHX_ "setruid() not implemented"); - } + } else { + Perl_croak(aTHX_ "setruid() not implemented"); + } #endif - break; - } + break; + } case '>': - { + { /* XXX $> currently silently ignores failures */ - const Uid_t new_euid = SvUID(sv); - PL_delaymagic_euid = new_euid; - if (PL_delaymagic) { - PL_delaymagic |= DM_EUID; - break; /* don't do magic till later */ - } + const Uid_t new_euid = SvUID(sv); + PL_delaymagic_euid = new_euid; + if (PL_delaymagic) { + PL_delaymagic |= DM_EUID; + break; /* don't do magic till later */ + } #ifdef HAS_SETEUID - PERL_UNUSED_RESULT(seteuid(new_euid)); + PERL_UNUSED_RESULT(seteuid(new_euid)); #elif defined(HAS_SETREUID) - PERL_UNUSED_RESULT(setreuid((Uid_t)-1, new_euid)); + PERL_UNUSED_RESULT(setreuid((Uid_t)-1, new_euid)); #elif defined(HAS_SETRESUID) - PERL_UNUSED_RESULT(setresuid((Uid_t)-1, new_euid, (Uid_t)-1)); + PERL_UNUSED_RESULT(setresuid((Uid_t)-1, new_euid, (Uid_t)-1)); #else - if (new_euid == PerlProc_getuid()) /* special case $> = $< */ - PERL_UNUSED_RESULT(PerlProc_setuid(new_euid)); - else { - Perl_croak(aTHX_ "seteuid() not implemented"); - } + if (new_euid == PerlProc_getuid()) /* special case $> = $< */ + PERL_UNUSED_RESULT(PerlProc_setuid(new_euid)); + else { + Perl_croak(aTHX_ "seteuid() not implemented"); + } #endif - break; - } + break; + } case '(': - { + { /* XXX $( currently silently ignores failures */ - const Gid_t new_gid = SvGID(sv); - PL_delaymagic_gid = new_gid; - if (PL_delaymagic) { - PL_delaymagic |= DM_RGID; - break; /* don't do magic till later */ - } + const Gid_t new_gid = SvGID(sv); + PL_delaymagic_gid = new_gid; + if (PL_delaymagic) { + PL_delaymagic |= DM_RGID; + break; /* don't do magic till later */ + } #ifdef HAS_SETRGID - PERL_UNUSED_RESULT(setrgid(new_gid)); + PERL_UNUSED_RESULT(setrgid(new_gid)); #elif defined(HAS_SETREGID) - PERL_UNUSED_RESULT(setregid(new_gid, (Gid_t)-1)); + PERL_UNUSED_RESULT(setregid(new_gid, (Gid_t)-1)); #elif defined(HAS_SETRESGID) PERL_UNUSED_RESULT(setresgid(new_gid, (Gid_t)-1, (Gid_t) -1)); #else - if (new_gid == PerlProc_getegid()) /* special case $( = $) */ - PERL_UNUSED_RESULT(PerlProc_setgid(new_gid)); - else { - Perl_croak(aTHX_ "setrgid() not implemented"); - } + if (new_gid == PerlProc_getegid()) /* special case $( = $) */ + PERL_UNUSED_RESULT(PerlProc_setgid(new_gid)); + else { + Perl_croak(aTHX_ "setrgid() not implemented"); + } #endif - break; - } + break; + } case ')': - { + { /* (hv) best guess: maybe we'll need configure probes to do a better job, * but you can override it if you need to. */ @@ -3211,10 +3257,10 @@ #define INVALID_GID ((Gid_t)-1) #endif /* XXX $) currently silently ignores failures */ - Gid_t new_egid; + Gid_t new_egid; #ifdef HAS_SETGROUPS - { - const char *p = SvPV_const(sv, len); + { + const char *p = SvPV_const(sv, len); Groups_t *gary = NULL; const char* p_end = p + len; const char* endptr = p_end; @@ -3258,54 +3304,79 @@ } if (i) PERL_UNUSED_RESULT(setgroups(i, gary)); - Safefree(gary); - } + Safefree(gary); + } #else /* HAS_SETGROUPS */ new_egid = SvGID(sv); #endif /* HAS_SETGROUPS */ - PL_delaymagic_egid = new_egid; - if (PL_delaymagic) { - PL_delaymagic |= DM_EGID; - break; /* don't do magic till later */ - } + PL_delaymagic_egid = new_egid; + if (PL_delaymagic) { + PL_delaymagic |= DM_EGID; + break; /* don't do magic till later */ + } #ifdef HAS_SETEGID - PERL_UNUSED_RESULT(setegid(new_egid)); + PERL_UNUSED_RESULT(setegid(new_egid)); #elif defined(HAS_SETREGID) - PERL_UNUSED_RESULT(setregid((Gid_t)-1, new_egid)); + PERL_UNUSED_RESULT(setregid((Gid_t)-1, new_egid)); #elif defined(HAS_SETRESGID) - PERL_UNUSED_RESULT(setresgid((Gid_t)-1, new_egid, (Gid_t)-1)); + PERL_UNUSED_RESULT(setresgid((Gid_t)-1, new_egid, (Gid_t)-1)); #else - if (new_egid == PerlProc_getgid()) /* special case $) = $( */ - PERL_UNUSED_RESULT(PerlProc_setgid(new_egid)); - else { - Perl_croak(aTHX_ "setegid() not implemented"); - } + if (new_egid == PerlProc_getgid()) /* special case $) = $( */ + PERL_UNUSED_RESULT(PerlProc_setgid(new_egid)); + else { + Perl_croak(aTHX_ "setegid() not implemented"); + } #endif - break; - } + break; + } case ':': - PL_chopset = SvPV_force(sv,len); - break; + PL_chopset = SvPV_force(sv,len); + break; case '$': /* $$ */ - /* Store the pid in mg->mg_obj so we can tell when a fork has - occurred. mg->mg_obj points to *$ by default, so clear it. */ - if (isGV(mg->mg_obj)) { - if (mg->mg_flags & MGf_REFCOUNTED) /* probably never true */ - SvREFCNT_dec(mg->mg_obj); - mg->mg_flags |= MGf_REFCOUNTED; - mg->mg_obj = newSViv((IV)PerlProc_getpid()); - } - else sv_setiv(mg->mg_obj, (IV)PerlProc_getpid()); - break; + /* Store the pid in mg->mg_obj so we can tell when a fork has + occurred. mg->mg_obj points to *$ by default, so clear it. */ + if (isGV(mg->mg_obj)) { + if (mg->mg_flags & MGf_REFCOUNTED) /* probably never true */ + SvREFCNT_dec(mg->mg_obj); + mg->mg_flags |= MGf_REFCOUNTED; + mg->mg_obj = newSViv((IV)PerlProc_getpid()); + } + else sv_setiv(mg->mg_obj, (IV)PerlProc_getpid()); + break; case '0': - LOCK_DOLLARZERO_MUTEX; + LOCK_DOLLARZERO_MUTEX; S_set_dollarzero(aTHX_ sv); - UNLOCK_DOLLARZERO_MUTEX; - break; + UNLOCK_DOLLARZERO_MUTEX; + break; } return 0; } +/* +=for apidoc_section $signals +=for apidoc whichsig +=for apidoc_item whichsig_pv +=for apidoc_item whichsig_pvn +=for apidoc_item whichsig_sv + +These all convert a signal name into its corresponding signal number; +returning -1 if no corresponding number was found. + +They differ only in the source of the signal name: + +C takes the name from the C-terminated string starting at +C. + +C is merely a different spelling, a synonym, of C. + +C takes the name from the string starting at C, with length +C bytes. + +C takes the name from the PV stored in the SV C. + +=cut +*/ + I32 Perl_whichsig_sv(pTHX_ SV *sigsv) { @@ -3332,15 +3403,15 @@ PERL_UNUSED_CONTEXT; for (sigv = (char* const*)PL_sig_name; *sigv; sigv++) - if (strlen(*sigv) == len && memEQ(sig,*sigv, len)) - return PL_sig_num[sigv - (char* const*)PL_sig_name]; + if (strlen(*sigv) == len && memEQ(sig,*sigv, len)) + return PL_sig_num[sigv - (char* const*)PL_sig_name]; #ifdef SIGCLD if (memEQs(sig, len, "CHLD")) - return SIGCLD; + return SIGCLD; #endif #ifdef SIGCHLD if (memEQs(sig, len, "CLD")) - return SIGCHLD; + return SIGCHLD; #endif return -1; } @@ -3420,54 +3491,54 @@ if (!PL_psig_ptr[sig]) { - PerlIO_printf(Perl_error_log, "Signal SIG%s received, but no signal handler set.\n", - PL_sig_name[sig]); - exit(sig); - } + PerlIO_printf(Perl_error_log, "Signal SIG%s received, but no signal handler set.\n", + PL_sig_name[sig]); + exit(sig); + } if (PL_signals & PERL_SIGNALS_UNSAFE_FLAG) { - /* Max number of items pushed there is 3*n or 4. We cannot fix - infinity, so we fix 4 (in fact 5): */ - if (PL_savestack_ix + 15 <= PL_savestack_max) { - flags |= 1; - PL_savestack_ix += 5; /* Protect save in progress. */ - SAVEDESTRUCTOR_X(S_unwind_handler_stack, NULL); - } + /* Max number of items pushed there is 3*n or 4. We cannot fix + infinity, so we fix 4 (in fact 5): */ + if (PL_savestack_ix + 15 <= PL_savestack_max) { + flags |= 1; + PL_savestack_ix += 5; /* Protect save in progress. */ + SAVEDESTRUCTOR_X(S_unwind_handler_stack, NULL); + } } /* sv_2cv is too complicated, try a simpler variant first: */ if (!SvROK(PL_psig_ptr[sig]) || !(cv = MUTABLE_CV(SvRV(PL_psig_ptr[sig]))) - || SvTYPE(cv) != SVt_PVCV) { - HV *st; - cv = sv_2cv(PL_psig_ptr[sig], &st, &gv, GV_ADD); + || SvTYPE(cv) != SVt_PVCV) { + HV *st; + cv = sv_2cv(PL_psig_ptr[sig], &st, &gv, GV_ADD); } if (!cv || !CvROOT(cv)) { - const HEK * const hek = gv - ? GvENAME_HEK(gv) - : cv && CvNAMED(cv) - ? CvNAME_HEK(cv) - : cv && CvGV(cv) ? GvENAME_HEK(CvGV(cv)) : NULL; - if (hek) - Perl_ck_warner(aTHX_ packWARN(WARN_SIGNAL), - "SIG%s handler \"%" HEKf "\" not defined.\n", - PL_sig_name[sig], HEKfARG(hek)); - /* diag_listed_as: SIG%s handler "%s" not defined */ - else Perl_ck_warner(aTHX_ packWARN(WARN_SIGNAL), - "SIG%s handler \"__ANON__\" not defined.\n", - PL_sig_name[sig]); - goto cleanup; + const HEK * const hek = gv + ? GvENAME_HEK(gv) + : cv && CvNAMED(cv) + ? CvNAME_HEK(cv) + : cv && CvGV(cv) ? GvENAME_HEK(CvGV(cv)) : NULL; + if (hek) + Perl_ck_warner(aTHX_ packWARN(WARN_SIGNAL), + "SIG%s handler \"%" HEKf "\" not defined.\n", + PL_sig_name[sig], HEKfARG(hek)); + /* diag_listed_as: SIG%s handler "%s" not defined */ + else Perl_ck_warner(aTHX_ packWARN(WARN_SIGNAL), + "SIG%s handler \"__ANON__\" not defined.\n", + PL_sig_name[sig]); + goto cleanup; } sv = PL_psig_name[sig] - ? SvREFCNT_inc_NN(PL_psig_name[sig]) - : newSVpv(PL_sig_name[sig],0); + ? SvREFCNT_inc_NN(PL_psig_name[sig]) + : newSVpv(PL_sig_name[sig],0); flags |= 8; SAVEFREESV(sv); if (PL_signals & PERL_SIGNALS_UNSAFE_FLAG) { - /* make sure our assumption about the size of the SAVEs are correct: - * 3 for SAVEDESTRUCTOR_X, 2 for SAVEFREESV */ - assert(old_ss_ix + 2 + ((flags & 1) ? 3+5 : 0) == PL_savestack_ix); + /* make sure our assumption about the size of the SAVEs are correct: + * 3 for SAVEDESTRUCTOR_X, 2 for SAVEFREESV */ + assert(old_ss_ix + 2 + ((flags & 1) ? 3+5 : 0) == PL_savestack_ix); } PUSHSTACKi(PERLSI_SIGNAL); @@ -3476,9 +3547,9 @@ #if defined(HAS_SIGACTION) && defined(SA_SIGINFO) { - struct sigaction oact; + struct sigaction oact; - if (sip && sigaction(sig, 0, &oact) == 0 && oact.sa_flags & SA_SIGINFO) { + if (sip && sigaction(sig, 0, &oact) == 0 && oact.sa_flags & SA_SIGINFO) { HV *sih = newHV(); SV *rv = newRV_noinc(MUTABLE_SV(sih)); /* The siginfo fields signo, code, errno, pid, uid, @@ -3511,7 +3582,7 @@ PUSHs(rv); mPUSHp((char *)sip, sizeof(*sip)); - } + } } #endif @@ -3523,9 +3594,9 @@ POPSTACK; { - SV * const errsv = ERRSV; - if (SvTRUE_NN(errsv)) { - SvREFCNT_dec(errsv_save); + SV * const errsv = ERRSV; + if (SvTRUE_NN(errsv)) { + SvREFCNT_dec(errsv_save); #ifndef PERL_MICRO /* Handler "died", for example to get out of a restart-able read(). @@ -3533,41 +3604,41 @@ * blocked by the system when we entered. */ # ifdef HAS_SIGPROCMASK - if (!safe) { + if (!safe) { /* safe signals called via dispatch_signals() set up a * savestack destructor, unblock_sigmask(), to * automatically unblock the handler at the end. If * instead we get here directly, we have to do it * ourselves */ - sigset_t set; - sigemptyset(&set); - sigaddset(&set,sig); - sigprocmask(SIG_UNBLOCK, &set, NULL); - } + sigset_t set; + sigemptyset(&set); + sigaddset(&set,sig); + sigprocmask(SIG_UNBLOCK, &set, NULL); + } # else - /* Not clear if this will work */ + /* Not clear if this will work */ /* XXX not clear if this should be protected by 'if (safe)' * too */ - (void)rsignal(sig, SIG_IGN); - (void)rsignal(sig, PL_csighandlerp); + (void)rsignal(sig, SIG_IGN); + (void)rsignal(sig, PL_csighandlerp); # endif #endif /* !PERL_MICRO */ - die_sv(errsv); - } - else { - sv_setsv(errsv, errsv_save); - SvREFCNT_dec(errsv_save); - } + die_sv(errsv); + } + else { + sv_setsv(errsv, errsv_save); + SvREFCNT_dec(errsv_save); + } } cleanup: /* pop any of SAVEFREESV, SAVEDESTRUCTOR_X and "save in progress" */ PL_savestack_ix = old_ss_ix; if (flags & 8) - SvREFCNT_dec_NN(sv); + SvREFCNT_dec_NN(sv); PL_op = myop; /* Apparently not needed... */ PL_Sv = tSv; /* Restore global temporaries. */ @@ -3587,11 +3658,11 @@ return; if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) { - SvTEMP_off(sv); /* if it's still magical, this value isn't temporary */ - if (mgs->mgs_flags) - SvFLAGS(sv) |= mgs->mgs_flags; - else - mg_magical(sv); + SvTEMP_off(sv); /* if it's still magical, this value isn't temporary */ + if (mgs->mgs_flags) + SvFLAGS(sv) |= mgs->mgs_flags; + else + mg_magical(sv); } bumped = mgs->mgs_bumped; @@ -3606,25 +3677,25 @@ */ if (PL_savestack_ix == mgs->mgs_ss_ix) { - UV popval = SSPOPUV; + UV popval = SSPOPUV; assert(popval == SAVEt_DESTRUCTOR_X); PL_savestack_ix -= 2; - popval = SSPOPUV; + popval = SSPOPUV; assert((popval & SAVE_MASK) == SAVEt_ALLOC); PL_savestack_ix -= popval >> SAVE_TIGHT_SHIFT; } if (bumped) { - if (SvREFCNT(sv) == 1) { - /* We hold the last reference to this SV, which implies that the - SV was deleted as a side effect of the routines we called. - So artificially keep it alive a bit longer. - We avoid turning on the TEMP flag, which can cause the SV's - buffer to get stolen (and maybe other stuff). */ - sv_2mortal(sv); - SvTEMP_off(sv); - } - else - SvREFCNT_dec_NN(sv); /* undo the inc in S_save_magic() */ + if (SvREFCNT(sv) == 1) { + /* We hold the last reference to this SV, which implies that the + SV was deleted as a side effect of the routines we called. + So artificially keep it alive a bit longer. + We avoid turning on the TEMP flag, which can cause the SV's + buffer to get stolen (and maybe other stuff). */ + sv_2mortal(sv); + SvTEMP_off(sv); + } + else + SvREFCNT_dec_NN(sv); /* undo the inc in S_save_magic() */ } } @@ -3642,6 +3713,7 @@ } /* +=for apidoc_section $magic =for apidoc magic_sethint Triggered by a store to C<%^H>, records the key/value pair to @@ -3655,7 +3727,7 @@ Perl_magic_sethint(pTHX_ SV *sv, MAGIC *mg) { SV *key = (mg->mg_len == HEf_SVKEY) ? MUTABLE_SV(mg->mg_ptr) - : newSVpvn_flags(mg->mg_ptr, mg->mg_len, SVs_TEMP); + : newSVpvn_flags(mg->mg_ptr, mg->mg_len, SVs_TEMP); PERL_ARGS_ASSERT_MAGIC_SETHINT; @@ -3669,7 +3741,7 @@ forgetting to do it, and consequent subtle errors. */ PL_hints |= HINT_LOCALIZE_HH; CopHINTHASH_set(&PL_compiling, - cophh_store_sv(CopHINTHASH_get(&PL_compiling), key, 0, sv, 0)); + cophh_store_sv(CopHINTHASH_get(&PL_compiling), key, 0, sv, 0)); magic_sethint_feature(key, NULL, 0, sv, 0); return 0; } @@ -3690,11 +3762,11 @@ PL_hints |= HINT_LOCALIZE_HH; CopHINTHASH_set(&PL_compiling, - mg->mg_len == HEf_SVKEY - ? cophh_delete_sv(CopHINTHASH_get(&PL_compiling), - MUTABLE_SV(mg->mg_ptr), 0, 0) - : cophh_delete_pvn(CopHINTHASH_get(&PL_compiling), - mg->mg_ptr, mg->mg_len, 0, 0)); + mg->mg_len == HEf_SVKEY + ? cophh_delete_sv(CopHINTHASH_get(&PL_compiling), + MUTABLE_SV(mg->mg_ptr), 0, 0) + : cophh_delete_pvn(CopHINTHASH_get(&PL_compiling), + mg->mg_ptr, mg->mg_len, 0, 0)); if (mg->mg_len == HEf_SVKEY) magic_sethint_feature(MUTABLE_SV(mg->mg_ptr), NULL, 0, NULL, FALSE); else @@ -3723,7 +3795,7 @@ int Perl_magic_copycallchecker(pTHX_ SV *sv, MAGIC *mg, SV *nsv, - const char *name, I32 namlen) + const char *name, I32 namlen) { MAGIC *nmg; diff -Nru perl-5.32.1/mg.h perl-5.34.0/mg.h --- perl-5.32.1/mg.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/mg.h 2021-05-04 06:52:48.000000000 +0000 @@ -12,10 +12,10 @@ int (*svt_get) (pTHX_ SV *sv, MAGIC* mg); int (*svt_set) (pTHX_ SV *sv, MAGIC* mg); U32 (*svt_len) (pTHX_ SV *sv, MAGIC* mg); - int (*svt_clear)(pTHX_ SV *sv, MAGIC* mg); + int (*svt_clear) (pTHX_ SV *sv, MAGIC* mg); int (*svt_free) (pTHX_ SV *sv, MAGIC* mg); int (*svt_copy) (pTHX_ SV *sv, MAGIC* mg, - SV *nsv, const char *name, I32 namlen); + SV *nsv, const char *name, I32 namlen); int (*svt_dup) (pTHX_ MAGIC *mg, CLONE_PARAMS *param); int (*svt_local)(pTHX_ SV *nsv, MAGIC *mg); }; @@ -46,15 +46,24 @@ #define MgTAINTEDDIR_on(mg) (mg->mg_flags |= MGf_TAINTEDDIR) #define MgTAINTEDDIR_off(mg) (mg->mg_flags &= ~MGf_TAINTEDDIR) +/* Extracts the SV stored in mg, or NULL. */ +#define MgSV(mg) (((int)((mg)->mg_len) == HEf_SVKEY) ? \ + MUTABLE_SV((mg)->mg_ptr) : \ + NULL) + +/* If mg contains an SV, these extract the PV stored in that SV; + otherwise, these extract the mg's mg_ptr/mg_len. + These do NOT account for the SV's UTF8 flag, so handle with care. +*/ #define MgPV(mg,lp) ((((int)(lp = (mg)->mg_len)) == HEf_SVKEY) ? \ - SvPV(MUTABLE_SV((mg)->mg_ptr),lp) : \ - (mg)->mg_ptr) + SvPV(MUTABLE_SV((mg)->mg_ptr),lp) : \ + (mg)->mg_ptr) #define MgPV_const(mg,lp) ((((int)(lp = (mg)->mg_len)) == HEf_SVKEY) ? \ - SvPV_const(MUTABLE_SV((mg)->mg_ptr),lp) : \ - (const char*)(mg)->mg_ptr) + SvPV_const(MUTABLE_SV((mg)->mg_ptr),lp) : \ + (const char*)(mg)->mg_ptr) #define MgPV_nolen_const(mg) (((((int)(mg)->mg_len)) == HEf_SVKEY) ? \ - SvPV_nolen_const(MUTABLE_SV((mg)->mg_ptr)) : \ - (const char*)(mg)->mg_ptr) + SvPV_nolen_const(MUTABLE_SV((mg)->mg_ptr)) : \ + (const char*)(mg)->mg_ptr) #define SvTIED_mg(sv,how) (SvRMAGICAL(sv) ? mg_find((sv),(how)) : NULL) #define SvTIED_obj(sv,mg) \ @@ -66,11 +75,11 @@ # define MgBYTEPOS_set(mg,sv,pv,off) ( \ assert_((mg)->mg_type == PERL_MAGIC_regex_global) \ SvPOK(sv) && (!SvGMAGICAL(sv) || sv_only_taint_gmagic(sv)) \ - ? (mg)->mg_len = (off), (mg)->mg_flags |= MGf_BYTES \ - : ((mg)->mg_len = DO_UTF8(sv) \ - ? (SSize_t)utf8_length((U8 *)(pv), (U8 *)(pv)+(off)) \ - : (SSize_t)(off), \ - (mg)->mg_flags &= ~MGf_BYTES)) + ? (mg)->mg_len = (off), (mg)->mg_flags |= MGf_BYTES \ + : ((mg)->mg_len = DO_UTF8(sv) \ + ? (SSize_t)utf8_length((U8 *)(pv), (U8 *)(pv)+(off)) \ + : (SSize_t)(off), \ + (mg)->mg_flags &= ~MGf_BYTES)) #endif #define whichsig(pv) whichsig_pv(pv) diff -Nru perl-5.32.1/mg_vtable.h perl-5.34.0/mg_vtable.h --- perl-5.32.1/mg_vtable.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/mg_vtable.h 2020-10-24 18:43:34.000000000 +0000 @@ -158,7 +158,7 @@ { 0, 0, 0, 0, Perl_magic_killbackrefs, 0, 0, 0 }, { 0, 0, 0, 0, 0, Perl_magic_copycallchecker, 0, 0 }, #ifdef USE_LOCALE_COLLATE - { 0, Perl_magic_setcollxfrm, 0, 0, 0, 0, 0, 0 }, + { 0, Perl_magic_setcollxfrm, 0, 0, Perl_magic_freecollxfrm, 0, 0, 0 }, #else { 0, 0, 0, 0, 0, 0, 0, 0 }, #endif @@ -172,7 +172,7 @@ { 0, Perl_magic_setisa, 0, Perl_magic_clearisa, 0, 0, 0, 0 }, { 0, Perl_magic_setisa, 0, 0, 0, 0, 0, 0 }, { 0, Perl_magic_setlvref, 0, 0, 0, 0, 0, 0 }, - { 0, Perl_magic_setmglob, 0, 0, 0, 0, 0, 0 }, + { 0, Perl_magic_setmglob, 0, 0, Perl_magic_freemglob, 0, 0, 0 }, { Perl_magic_getnkeys, Perl_magic_setnkeys, 0, 0, 0, 0, 0, 0 }, { 0, Perl_magic_setnonelem, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, Perl_magic_freeovrld, 0, 0, 0 }, @@ -190,7 +190,7 @@ { Perl_magic_getsubstr, Perl_magic_setsubstr, 0, 0, 0, 0, 0, 0 }, { Perl_magic_get, Perl_magic_set, 0, 0, 0, 0, 0, 0 }, { Perl_magic_gettaint, Perl_magic_settaint, 0, 0, 0, 0, 0, 0 }, - { 0, Perl_magic_setutf8, 0, 0, 0, 0, 0, 0 }, + { 0, Perl_magic_setutf8, 0, 0, Perl_magic_freeutf8, 0, 0, 0 }, { Perl_magic_getuvar, Perl_magic_setuvar, 0, 0, 0, 0, 0, 0 }, { Perl_magic_getvec, Perl_magic_setvec, 0, 0, 0, 0, 0, 0 } }; diff -Nru perl-5.32.1/miniperlmain.c perl-5.34.0/miniperlmain.c --- perl-5.32.1/miniperlmain.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/miniperlmain.c 2020-10-04 22:17:13.000000000 +0000 @@ -60,15 +60,6 @@ static void xs_init (pTHX); static PerlInterpreter *my_perl; -#if defined(PERL_GLOBAL_STRUCT_PRIVATE) -/* The static struct perl_vars* may seem counterproductive since the - * whole idea PERL_GLOBAL_STRUCT_PRIVATE was to avoid statics, but note - * that this static is not in the shared perl library, the globals PL_Vars - * and PL_VarsPtr will stay away. */ -static struct perl_vars* my_plvarsp; -struct perl_vars* Perl_GetVarsPrivate(void) { return my_plvarsp; } -#endif - #ifdef NO_ENV_ARRAY_IN_MAIN extern char **environ; int @@ -79,14 +70,6 @@ #endif { int exitstatus, i; -#ifdef PERL_GLOBAL_STRUCT - struct perl_vars *my_vars = init_global_struct(); -# ifdef PERL_GLOBAL_STRUCT_PRIVATE - int veto; - - my_plvarsp = my_vars; -# endif -#endif /* PERL_GLOBAL_STRUCT */ #ifndef NO_ENV_ARRAY_IN_MAIN PERL_UNUSED_ARG(env); #endif @@ -160,20 +143,6 @@ PERL_SYS_TERM(); -#ifdef PERL_GLOBAL_STRUCT -# ifdef PERL_GLOBAL_STRUCT_PRIVATE - veto = my_plvarsp->Gveto_cleanup; -# endif - free_global_struct(my_vars); -# ifdef PERL_GLOBAL_STRUCT_PRIVATE - if (!veto) - my_plvarsp = NULL; - /* Remember, functions registered with atexit() can run after this point, - and may access "global" variables, and hence end up calling - Perl_GetVarsPrivate() */ -#endif -#endif /* PERL_GLOBAL_STRUCT */ - exit(exitstatus); } diff -Nru perl-5.32.1/mro_core.c perl-5.34.0/mro_core.c --- perl-5.32.1/mro_core.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/mro_core.c 2021-01-20 23:04:44.000000000 +0000 @@ -19,7 +19,7 @@ */ /* -=head1 MRO Functions +=head1 MRO These functions are related to the method resolution order of perl classes Also see L. @@ -35,68 +35,68 @@ SV * Perl_mro_get_private_data(pTHX_ struct mro_meta *const smeta, - const struct mro_alg *const which) + const struct mro_alg *const which) { SV **data; PERL_ARGS_ASSERT_MRO_GET_PRIVATE_DATA; data = (SV **)Perl_hv_common(aTHX_ smeta->mro_linear_all, NULL, - which->name, which->length, which->kflags, - HV_FETCH_JUST_SV, NULL, which->hash); + which->name, which->length, which->kflags, + HV_FETCH_JUST_SV, NULL, which->hash); if (!data) - return NULL; + return NULL; /* If we've been asked to look up the private data for the current MRO, then cache it. */ if (smeta->mro_which == which) - smeta->mro_linear_current = *data; + smeta->mro_linear_current = *data; return *data; } SV * Perl_mro_set_private_data(pTHX_ struct mro_meta *const smeta, - const struct mro_alg *const which, SV *const data) + const struct mro_alg *const which, SV *const data) { PERL_ARGS_ASSERT_MRO_SET_PRIVATE_DATA; if (!smeta->mro_linear_all) { - if (smeta->mro_which == which) { - /* If all we need to store is the current MRO's data, then don't use - memory on a hash with 1 element - store it direct, and signal - this by leaving the would-be-hash NULL. */ - smeta->mro_linear_current = data; - return data; - } else { - HV *const hv = newHV(); - /* Start with 2 buckets. It's unlikely we'll need more. */ - HvMAX(hv) = 1; - smeta->mro_linear_all = hv; - - if (smeta->mro_linear_current) { - /* If we were storing something directly, put it in the hash - before we lose it. */ - Perl_mro_set_private_data(aTHX_ smeta, smeta->mro_which, - smeta->mro_linear_current); - } - } + if (smeta->mro_which == which) { + /* If all we need to store is the current MRO's data, then don't use + memory on a hash with 1 element - store it direct, and signal + this by leaving the would-be-hash NULL. */ + smeta->mro_linear_current = data; + return data; + } else { + HV *const hv = newHV(); + /* Start with 2 buckets. It's unlikely we'll need more. */ + HvMAX(hv) = 1; + smeta->mro_linear_all = hv; + + if (smeta->mro_linear_current) { + /* If we were storing something directly, put it in the hash + before we lose it. */ + Perl_mro_set_private_data(aTHX_ smeta, smeta->mro_which, + smeta->mro_linear_current); + } + } } /* We get here if we're storing more than one linearisation for this stash, or the linearisation we are storing is not that if its current MRO. */ if (smeta->mro_which == which) { - /* If we've been asked to store the private data for the current MRO, - then cache it. */ - smeta->mro_linear_current = data; + /* If we've been asked to store the private data for the current MRO, + then cache it. */ + smeta->mro_linear_current = data; } if (!Perl_hv_common(aTHX_ smeta->mro_linear_all, NULL, - which->name, which->length, which->kflags, - HV_FETCH_ISSTORE, data, which->hash)) { - Perl_croak(aTHX_ "panic: hv_store() failed in set_mro_private_data() " - "for '%.*s' %d", (int) which->length, which->name, - which->kflags); + which->name, which->length, which->kflags, + HV_FETCH_ISSTORE, data, which->hash)) { + Perl_croak(aTHX_ "panic: hv_store() failed in set_mro_private_data() " + "for '%.*s' %d", (int) which->length, which->name, + which->kflags); } return data; @@ -109,9 +109,9 @@ PERL_ARGS_ASSERT_MRO_GET_FROM_NAME; data = (SV **)Perl_hv_common(aTHX_ PL_registered_mros, name, NULL, 0, 0, - HV_FETCH_JUST_SV, NULL, 0); + HV_FETCH_JUST_SV, NULL, 0); if (!data) - return NULL; + return NULL; assert(SvTYPE(*data) == SVt_IV); assert(SvIOK(*data)); return INT2PTR(const struct mro_alg *, SvUVX(*data)); @@ -133,11 +133,11 @@ if (!Perl_hv_common(aTHX_ PL_registered_mros, NULL, - mro->name, mro->length, mro->kflags, - HV_FETCH_ISSTORE, wrapper, mro->hash)) { - SvREFCNT_dec_NN(wrapper); - Perl_croak(aTHX_ "panic: hv_store() failed in mro_register() " - "for '%.*s' %d", (int) mro->length, mro->name, mro->kflags); + mro->name, mro->length, mro->kflags, + HV_FETCH_ISSTORE, wrapper, mro->hash)) { + SvREFCNT_dec_NN(wrapper); + Perl_croak(aTHX_ "panic: hv_store() failed in mro_register() " + "for '%.*s' %d", (int) mro->length, mro->name, mro->kflags); } } @@ -173,23 +173,23 @@ Copy(smeta, newmeta, 1, struct mro_meta); if (newmeta->mro_linear_all) { - newmeta->mro_linear_all - = MUTABLE_HV(sv_dup_inc((const SV *)newmeta->mro_linear_all, param)); - /* This is just acting as a shortcut pointer, and will be automatically - updated on the first get. */ - newmeta->mro_linear_current = NULL; + newmeta->mro_linear_all + = MUTABLE_HV(sv_dup_inc((const SV *)newmeta->mro_linear_all, param)); + /* This is just acting as a shortcut pointer, and will be automatically + updated on the first get. */ + newmeta->mro_linear_current = NULL; } else if (newmeta->mro_linear_current) { - /* Only the current MRO is stored, so this owns the data. */ - newmeta->mro_linear_current - = sv_dup_inc((const SV *)newmeta->mro_linear_current, param); + /* Only the current MRO is stored, so this owns the data. */ + newmeta->mro_linear_current + = sv_dup_inc((const SV *)newmeta->mro_linear_current, param); } if (newmeta->mro_nextmethod) - newmeta->mro_nextmethod - = MUTABLE_HV(sv_dup_inc((const SV *)newmeta->mro_nextmethod, param)); + newmeta->mro_nextmethod + = MUTABLE_HV(sv_dup_inc((const SV *)newmeta->mro_nextmethod, param)); if (newmeta->isa) - newmeta->isa - = MUTABLE_HV(sv_dup_inc((const SV *)newmeta->isa, param)); + newmeta->isa + = MUTABLE_HV(sv_dup_inc((const SV *)newmeta->isa, param)); newmeta->super = NULL; @@ -243,8 +243,8 @@ if (level > 100) Perl_croak(aTHX_ - "Recursive inheritance detected in package '%" HEKf "'", - HEKfARG(stashhek)); + "Recursive inheritance detected in package '%" HEKf "'", + HEKfARG(stashhek)); meta = HvMROMETA(stash); @@ -280,85 +280,85 @@ while (items--) { SV* const sv = *svp ? *svp : &PL_sv_undef; HV* const basestash = gv_stashsv(sv, 0); - SV *const *subrv_p; - I32 subrv_items; - svp++; + SV *const *subrv_p; + I32 subrv_items; + svp++; if (!basestash) { /* if no stash exists for this @ISA member, simply add it to the MRO and move on */ - subrv_p = &sv; - subrv_items = 1; + subrv_p = &sv; + subrv_items = 1; } else { /* otherwise, recurse into ourselves for the MRO of this @ISA member, and append their MRO to ours. - The recursive call could throw an exception, which - has memory management implications here, hence the use of - the mortal. */ - const AV *const subrv - = mro_get_linear_isa_dfs(basestash, level + 1); - - subrv_p = AvARRAY(subrv); - subrv_items = AvFILLp(subrv) + 1; - } - if (stored) { - while(subrv_items--) { - SV *const subsv = *subrv_p++; - /* LVALUE fetch will create a new undefined SV if necessary - */ - HE *const he = hv_fetch_ent(stored, subsv, 1, 0); - assert(he); - if(HeVAL(he) != &PL_sv_undef) { - /* It was newly created. Steal it for our new SV, and - replace it in the hash with the "real" thing. */ - SV *const val = HeVAL(he); - HEK *const key = HeKEY_hek(he); - - HeVAL(he) = &PL_sv_undef; - sv_sethek(val, key); - av_push(retval, val); - } - } + The recursive call could throw an exception, which + has memory management implications here, hence the use of + the mortal. */ + const AV *const subrv + = mro_get_linear_isa_dfs(basestash, level + 1); + + subrv_p = AvARRAY(subrv); + subrv_items = AvFILLp(subrv) + 1; + } + if (stored) { + while(subrv_items--) { + SV *const subsv = *subrv_p++; + /* LVALUE fetch will create a new undefined SV if necessary + */ + HE *const he = hv_fetch_ent(stored, subsv, 1, 0); + assert(he); + if(HeVAL(he) != &PL_sv_undef) { + /* It was newly created. Steal it for our new SV, and + replace it in the hash with the "real" thing. */ + SV *const val = HeVAL(he); + HEK *const key = HeKEY_hek(he); + + HeVAL(he) = &PL_sv_undef; + sv_sethek(val, key); + av_push(retval, val); + } + } } else { - /* We are the first (or only) parent. We can short cut the - complexity above, because our @ISA is simply us prepended - to our parent's @ISA, and our ->isa cache is simply our - parent's, with our name added. */ - /* newSVsv() is slow. This code is only faster if we can avoid - it by ensuring that SVs in the arrays are shared hash key - scalar SVs, because we can "copy" them very efficiently. - Although to be fair, we can't *ensure* this, as a reference - to the internal array is returned by mro::get_linear_isa(), - so we'll have to be defensive just in case someone faffed - with it. */ - if (basestash) { - SV **svp; - stored = MUTABLE_HV(sv_2mortal((SV*)newHVhv(HvMROMETA(basestash)->isa))); - av_extend(retval, subrv_items); - AvFILLp(retval) = subrv_items; - svp = AvARRAY(retval); - while(subrv_items--) { - SV *const val = *subrv_p++; - *++svp = SvIsCOW_shared_hash(val) - ? newSVhek(SvSHARED_HEK_FROM_PV(SvPVX(val))) - : newSVsv(val); - } - } else { - /* They have no stash. So create ourselves an ->isa cache - as if we'd copied it from what theirs should be. */ - stored = MUTABLE_HV(sv_2mortal(MUTABLE_SV(newHV()))); - (void) hv_stores(stored, "UNIVERSAL", &PL_sv_undef); - av_push(retval, - newSVhek(HeKEY_hek(hv_store_ent(stored, sv, - &PL_sv_undef, 0)))); - } - } + /* We are the first (or only) parent. We can short cut the + complexity above, because our @ISA is simply us prepended + to our parent's @ISA, and our ->isa cache is simply our + parent's, with our name added. */ + /* newSVsv() is slow. This code is only faster if we can avoid + it by ensuring that SVs in the arrays are shared hash key + scalar SVs, because we can "copy" them very efficiently. + Although to be fair, we can't *ensure* this, as a reference + to the internal array is returned by mro::get_linear_isa(), + so we'll have to be defensive just in case someone faffed + with it. */ + if (basestash) { + SV **svp; + stored = MUTABLE_HV(sv_2mortal((SV*)newHVhv(HvMROMETA(basestash)->isa))); + av_extend(retval, subrv_items); + AvFILLp(retval) = subrv_items; + svp = AvARRAY(retval); + while(subrv_items--) { + SV *const val = *subrv_p++; + *++svp = SvIsCOW_shared_hash(val) + ? newSVhek(SvSHARED_HEK_FROM_PV(SvPVX(val))) + : newSVsv(val); + } + } else { + /* They have no stash. So create ourselves an ->isa cache + as if we'd copied it from what theirs should be. */ + stored = MUTABLE_HV(sv_2mortal(MUTABLE_SV(newHV()))); + (void) hv_stores(stored, "UNIVERSAL", &PL_sv_undef); + av_push(retval, + newSVhek(HeKEY_hek(hv_store_ent(stored, sv, + &PL_sv_undef, 0)))); + } + } } } else { - /* We have no parents. */ - stored = MUTABLE_HV(sv_2mortal(MUTABLE_SV(newHV()))); - (void) hv_stores(stored, "UNIVERSAL", &PL_sv_undef); + /* We have no parents. */ + stored = MUTABLE_HV(sv_2mortal(MUTABLE_SV(newHV()))); + (void) hv_stores(stored, "UNIVERSAL", &PL_sv_undef); } (void) hv_store_ent(stored, our_name, &PL_sv_undef, 0); @@ -380,7 +380,7 @@ SvREADONLY_on(retval); return MUTABLE_AV(Perl_mro_set_private_data(aTHX_ meta, &dfs_alg, - MUTABLE_SV(retval))); + MUTABLE_SV(retval))); } /* @@ -415,49 +415,49 @@ isa = meta->mro_which->resolve(aTHX_ stash, 0); if (meta->mro_which != &dfs_alg) { /* skip for dfs, for speed */ - SV * const namesv = - (HvENAME(stash)||HvNAME(stash)) - ? newSVhek(HvENAME_HEK(stash) - ? HvENAME_HEK(stash) - : HvNAME_HEK(stash)) - : NULL; - - if(namesv && (AvFILLp(isa) == -1 || !sv_eq(*AvARRAY(isa), namesv))) - { - AV * const old = isa; - SV **svp; - SV **ovp = AvARRAY(old); - SV * const * const oend = ovp + AvFILLp(old) + 1; - isa = (AV *)sv_2mortal((SV *)newAV()); - av_extend(isa, AvFILLp(isa) = AvFILLp(old)+1); - *AvARRAY(isa) = namesv; - svp = AvARRAY(isa)+1; - while (ovp < oend) *svp++ = SvREFCNT_inc(*ovp++); - } - else SvREFCNT_dec(namesv); + SV * const namesv = + (HvENAME(stash)||HvNAME(stash)) + ? newSVhek(HvENAME_HEK(stash) + ? HvENAME_HEK(stash) + : HvNAME_HEK(stash)) + : NULL; + + if(namesv && (AvFILLp(isa) == -1 || !sv_eq(*AvARRAY(isa), namesv))) + { + AV * const old = isa; + SV **svp; + SV **ovp = AvARRAY(old); + SV * const * const oend = ovp + AvFILLp(old) + 1; + isa = (AV *)sv_2mortal((SV *)newAV()); + av_extend(isa, AvFILLp(isa) = AvFILLp(old)+1); + *AvARRAY(isa) = namesv; + svp = AvARRAY(isa)+1; + while (ovp < oend) *svp++ = SvREFCNT_inc(*ovp++); + } + else SvREFCNT_dec(namesv); } if (!meta->isa) { - HV *const isa_hash = newHV(); - /* Linearisation didn't build it for us, so do it here. */ - SV *const *svp = AvARRAY(isa); - SV *const *const svp_end = svp + AvFILLp(isa) + 1; - const HEK *canon_name = HvENAME_HEK(stash); - if (!canon_name) canon_name = HvNAME_HEK(stash); - - while (svp < svp_end) { - (void) hv_store_ent(isa_hash, *svp++, &PL_sv_undef, 0); - } - - (void) hv_common(isa_hash, NULL, HEK_KEY(canon_name), - HEK_LEN(canon_name), HEK_FLAGS(canon_name), - HV_FETCH_ISSTORE, &PL_sv_undef, - HEK_HASH(canon_name)); - (void) hv_stores(isa_hash, "UNIVERSAL", &PL_sv_undef); + HV *const isa_hash = newHV(); + /* Linearisation didn't build it for us, so do it here. */ + SV *const *svp = AvARRAY(isa); + SV *const *const svp_end = svp + AvFILLp(isa) + 1; + const HEK *canon_name = HvENAME_HEK(stash); + if (!canon_name) canon_name = HvNAME_HEK(stash); + + while (svp < svp_end) { + (void) hv_store_ent(isa_hash, *svp++, &PL_sv_undef, 0); + } + + (void) hv_common(isa_hash, NULL, HEK_KEY(canon_name), + HEK_LEN(canon_name), HEK_FLAGS(canon_name), + HV_FETCH_ISSTORE, &PL_sv_undef, + HEK_HASH(canon_name)); + (void) hv_stores(isa_hash, "UNIVERSAL", &PL_sv_undef); - SvREADONLY_on(isa_hash); + SvREADONLY_on(isa_hash); - meta->isa = isa_hash; + meta->isa = isa_hash; } return isa; @@ -476,14 +476,14 @@ /* Macro to avoid repeating the code five times. */ #define CLEAR_LINEAR(mEta) \ if (mEta->mro_linear_all) { \ - SvREFCNT_dec(MUTABLE_SV(mEta->mro_linear_all)); \ - mEta->mro_linear_all = NULL; \ - /* This is just acting as a shortcut pointer. */ \ - mEta->mro_linear_current = NULL; \ + SvREFCNT_dec(MUTABLE_SV(mEta->mro_linear_all)); \ + mEta->mro_linear_all = NULL; \ + /* This is just acting as a shortcut pointer. */ \ + mEta->mro_linear_current = NULL; \ } else if (mEta->mro_linear_current) { \ - /* Only the current MRO is stored, so this owns the data. */ \ - SvREFCNT_dec(mEta->mro_linear_current); \ - mEta->mro_linear_current = NULL; \ + /* Only the current MRO is stored, so this owns the data. */ \ + SvREFCNT_dec(mEta->mro_linear_current); \ + mEta->mro_linear_current = NULL; \ } void @@ -512,9 +512,9 @@ meta = HvMROMETA(stash); CLEAR_LINEAR(meta); if (meta->isa) { - /* Steal it for our own purposes. */ - isa = (HV *)sv_2mortal((SV *)meta->isa); - meta->isa = NULL; + /* Steal it for our own purposes. */ + isa = (HV *)sv_2mortal((SV *)meta->isa); + meta->isa = NULL; } /* Inc the package generation, since our @ISA changed */ @@ -533,7 +533,7 @@ } else { /* Wipe the local method cache otherwise */ meta->cache_gen++; - is_universal = FALSE; + is_universal = FALSE; } /* wipe next::method cache too */ @@ -573,19 +573,19 @@ if(!revstash) continue; revmeta = HvMROMETA(revstash); - CLEAR_LINEAR(revmeta); + CLEAR_LINEAR(revmeta); if(!is_universal) revmeta->cache_gen++; if(revmeta->mro_nextmethod) hv_clear(revmeta->mro_nextmethod); - if (!SvOBJECT(revstash)) SvSTASH(revstash) = NULL; + if (!SvOBJECT(revstash)) SvSTASH(revstash) = NULL; - (void) - hv_store( - isa_hashes, (const char*)&revstash, sizeof(HV *), - revmeta->isa ? (SV *)revmeta->isa : &PL_sv_undef, 0 - ); - revmeta->isa = NULL; + (void) + hv_store( + isa_hashes, (const char*)&revstash, sizeof(HV *), + revmeta->isa ? (SV *)revmeta->isa : &PL_sv_undef, 0 + ); + revmeta->isa = NULL; } /* Second pass: Update PL_isarev. We can just use isa_hashes to @@ -661,20 +661,20 @@ HE *he = hv_fetch_ent(PL_isarev, sv, TRUE, 0); - /* That fetch should not fail. But if it had to create a new SV for - us, then will need to upgrade it to an HV (which sv_upgrade() can - now do for us. */ + /* That fetch should not fail. But if it had to create a new SV for + us, then will need to upgrade it to an HV (which sv_upgrade() can + now do for us. */ mroisarev = MUTABLE_HV(HeVAL(he)); - SvUPGRADE(MUTABLE_SV(mroisarev), SVt_PVHV); + SvUPGRADE(MUTABLE_SV(mroisarev), SVt_PVHV); - /* This hash only ever contains PL_sv_yes. Storing it over itself is - almost as cheap as calling hv_exists, so on aggregate we expect to - save time by not making two calls to the common HV code for the - case where it doesn't exist. */ + /* This hash only ever contains PL_sv_yes. Storing it over itself is + almost as cheap as calling hv_exists, so on aggregate we expect to + save time by not making two calls to the common HV code for the + case where it doesn't exist. */ - (void)hv_storehek(mroisarev, stashhek, &PL_sv_yes); + (void)hv_storehek(mroisarev, stashhek, &PL_sv_yes); } /* Delete our name from our former parents' isarevs. */ @@ -771,12 +771,12 @@ * If flags & 1, the caller has asked us to skip the check. */ if(!(flags & 1)) { - SV **svp; - if( - !GvSTASH(gv) || !HvENAME(GvSTASH(gv)) || - !(svp = hv_fetchhek(GvSTASH(gv), GvNAME_HEK(gv), 0)) || - *svp != (SV *)gv - ) return; + SV **svp; + if( + !GvSTASH(gv) || !HvENAME(GvSTASH(gv)) || + !(svp = hv_fetchhek(GvSTASH(gv), GvNAME_HEK(gv), 0)) || + *svp != (SV *)gv + ) return; } assert(SvOOK(GvSTASH(gv))); assert(GvNAMELEN(gv)); @@ -784,56 +784,56 @@ assert(GvNAMELEN(gv) == 1 || GvNAME(gv)[GvNAMELEN(gv) - 2] == ':'); name_count = HvAUX(GvSTASH(gv))->xhv_name_count; if (!name_count) { - name_count = 1; - namep = &HvAUX(GvSTASH(gv))->xhv_name_u.xhvnameu_name; + name_count = 1; + namep = &HvAUX(GvSTASH(gv))->xhv_name_u.xhvnameu_name; } else { - namep = HvAUX(GvSTASH(gv))->xhv_name_u.xhvnameu_names; - if (name_count < 0) ++namep, name_count = -name_count - 1; + namep = HvAUX(GvSTASH(gv))->xhv_name_u.xhvnameu_names; + if (name_count < 0) ++namep, name_count = -name_count - 1; } if (name_count == 1) { - if (memEQs(HEK_KEY(*namep), HEK_LEN(*namep), "main")) { - namesv = GvNAMELEN(gv) == 1 - ? newSVpvs_flags(":", SVs_TEMP) - : newSVpvs_flags("", SVs_TEMP); - } - else { - namesv = sv_2mortal(newSVhek(*namep)); - if (GvNAMELEN(gv) == 1) sv_catpvs(namesv, ":"); - else sv_catpvs(namesv, "::"); - } - if (GvNAMELEN(gv) != 1) { - sv_catpvn_flags( - namesv, GvNAME(gv), GvNAMELEN(gv) - 2, - /* skip trailing :: */ - GvNAMEUTF8(gv) ? SV_CATUTF8 : SV_CATBYTES - ); + if (memEQs(HEK_KEY(*namep), HEK_LEN(*namep), "main")) { + namesv = GvNAMELEN(gv) == 1 + ? newSVpvs_flags(":", SVs_TEMP) + : newSVpvs_flags("", SVs_TEMP); + } + else { + namesv = sv_2mortal(newSVhek(*namep)); + if (GvNAMELEN(gv) == 1) sv_catpvs(namesv, ":"); + else sv_catpvs(namesv, "::"); + } + if (GvNAMELEN(gv) != 1) { + sv_catpvn_flags( + namesv, GvNAME(gv), GvNAMELEN(gv) - 2, + /* skip trailing :: */ + GvNAMEUTF8(gv) ? SV_CATUTF8 : SV_CATBYTES + ); } } else { - SV *aname; - namesv = sv_2mortal((SV *)newAV()); - while (name_count--) { - if(memEQs(HEK_KEY(*namep), HEK_LEN(*namep), "main")){ - aname = GvNAMELEN(gv) == 1 - ? newSVpvs(":") - : newSVpvs(""); - namep++; - } - else { - aname = newSVhek(*namep++); - if (GvNAMELEN(gv) == 1) sv_catpvs(aname, ":"); - else sv_catpvs(aname, "::"); - } - if (GvNAMELEN(gv) != 1) { - sv_catpvn_flags( - aname, GvNAME(gv), GvNAMELEN(gv) - 2, - /* skip trailing :: */ - GvNAMEUTF8(gv) ? SV_CATUTF8 : SV_CATBYTES - ); + SV *aname; + namesv = sv_2mortal((SV *)newAV()); + while (name_count--) { + if(memEQs(HEK_KEY(*namep), HEK_LEN(*namep), "main")){ + aname = GvNAMELEN(gv) == 1 + ? newSVpvs(":") + : newSVpvs(""); + namep++; } - av_push((AV *)namesv, aname); - } + else { + aname = newSVhek(*namep++); + if (GvNAMELEN(gv) == 1) sv_catpvs(aname, ":"); + else sv_catpvs(aname, "::"); + } + if (GvNAMELEN(gv) != 1) { + sv_catpvn_flags( + aname, GvNAME(gv), GvNAMELEN(gv) - 2, + /* skip trailing :: */ + GvNAMEUTF8(gv) ? SV_CATUTF8 : SV_CATBYTES + ); + } + av_push((AV *)namesv, aname); + } } /* Get a list of all the affected classes. */ @@ -859,25 +859,25 @@ mro_isa_changed_in on each. */ hv_iterinit(stashes); while((iter = hv_iternext(stashes))) { - HV * const this_stash = *(HV **)HEK_KEY(HeKEY_hek(iter)); - if(HvENAME(this_stash)) { - /* We have to restore the original meta->isa (that - mro_gather_and_rename set aside for us) this way, in case - one class in this list is a superclass of a another class - that we have already encountered. In such a case, meta->isa - will have been overwritten without old entries being deleted - from PL_isarev. */ - struct mro_meta * const meta = HvMROMETA(this_stash); - if(meta->isa != (HV *)HeVAL(iter)){ - SvREFCNT_dec(meta->isa); - meta->isa - = HeVAL(iter) == &PL_sv_yes - ? NULL - : (HV *)HeVAL(iter); - HeVAL(iter) = NULL; /* We donated our reference count. */ - } - mro_isa_changed_in(this_stash); - } + HV * const this_stash = *(HV **)HEK_KEY(HeKEY_hek(iter)); + if(HvENAME(this_stash)) { + /* We have to restore the original meta->isa (that + mro_gather_and_rename set aside for us) this way, in case + one class in this list is a superclass of a another class + that we have already encountered. In such a case, meta->isa + will have been overwritten without old entries being deleted + from PL_isarev. */ + struct mro_meta * const meta = HvMROMETA(this_stash); + if(meta->isa != (HV *)HeVAL(iter)){ + SvREFCNT_dec(meta->isa); + meta->isa + = HeVAL(iter) == &PL_sv_yes + ? NULL + : (HV *)HeVAL(iter); + HeVAL(iter) = NULL; /* We donated our reference count. */ + } + mro_isa_changed_in(this_stash); + } } } @@ -915,196 +915,196 @@ */ if(oldstash) { - /* Add to the big list. */ - struct mro_meta * meta; - HE * const entry - = (HE *) - hv_common( - seen_stashes, NULL, (const char *)&oldstash, sizeof(HV *), 0, - HV_FETCH_LVALUE|HV_FETCH_EMPTY_HE, NULL, 0 - ); - if(HeVAL(entry) == &PL_sv_undef || HeVAL(entry) == &PL_sv_yes) { - oldstash = NULL; - goto check_stash; - } - HeVAL(entry) - = HeVAL(entry) == &PL_sv_no ? &PL_sv_yes : &PL_sv_undef; - meta = HvMROMETA(oldstash); - (void) - hv_store( - stashes, (const char *)&oldstash, sizeof(HV *), - meta->isa - ? SvREFCNT_inc_simple_NN((SV *)meta->isa) - : &PL_sv_yes, - 0 - ); - CLEAR_LINEAR(meta); - - /* Update the effective name. */ - if(HvENAME_get(oldstash)) { - const HEK * const enamehek = HvENAME_HEK(oldstash); - if(SvTYPE(namesv) == SVt_PVAV) { - items = AvFILLp((AV *)namesv) + 1; - svp = AvARRAY((AV *)namesv); - } - else { - items = 1; - svp = &namesv; - } - while (items--) { + /* Add to the big list. */ + struct mro_meta * meta; + HE * const entry + = (HE *) + hv_common( + seen_stashes, NULL, (const char *)&oldstash, sizeof(HV *), 0, + HV_FETCH_LVALUE|HV_FETCH_EMPTY_HE, NULL, 0 + ); + if(HeVAL(entry) == &PL_sv_undef || HeVAL(entry) == &PL_sv_yes) { + oldstash = NULL; + goto check_stash; + } + HeVAL(entry) + = HeVAL(entry) == &PL_sv_no ? &PL_sv_yes : &PL_sv_undef; + meta = HvMROMETA(oldstash); + (void) + hv_store( + stashes, (const char *)&oldstash, sizeof(HV *), + meta->isa + ? SvREFCNT_inc_simple_NN((SV *)meta->isa) + : &PL_sv_yes, + 0 + ); + CLEAR_LINEAR(meta); + + /* Update the effective name. */ + if(HvENAME_get(oldstash)) { + const HEK * const enamehek = HvENAME_HEK(oldstash); + if(SvTYPE(namesv) == SVt_PVAV) { + items = AvFILLp((AV *)namesv) + 1; + svp = AvARRAY((AV *)namesv); + } + else { + items = 1; + svp = &namesv; + } + while (items--) { const U32 name_utf8 = SvUTF8(*svp); - STRLEN len; - const char *name = SvPVx_const(*svp, len); - if(PL_stashcache) { + STRLEN len; + const char *name = SvPVx_const(*svp, len); + if(PL_stashcache) { DEBUG_o(Perl_deb(aTHX_ "mro_gather_and_rename clearing PL_stashcache for '%" SVf "'\n", SVfARG(*svp))); - (void)hv_delete(PL_stashcache, name, name_utf8 ? -(I32)len : (I32)len, G_DISCARD); + (void)hv_delete(PL_stashcache, name, name_utf8 ? -(I32)len : (I32)len, G_DISCARD); } ++svp; - hv_ename_delete(oldstash, name, len, name_utf8); + hv_ename_delete(oldstash, name, len, name_utf8); - if (!fetched_isarev) { - /* If the name deletion caused a name change, then we - * are not going to call mro_isa_changed_in with this - * name (and not at all if it has become anonymous) so - * we need to delete old isarev entries here, both - * those in the superclasses and this class's own list - * of subclasses. We simply delete the latter from - * PL_isarev, since we still need it. hv_delete morti- - * fies it for us, so sv_2mortal is not necessary. */ - if(HvENAME_HEK(oldstash) != enamehek) { - if(meta->isa && HvARRAY(meta->isa)) - mro_clean_isarev(meta->isa, name, len, 0, 0, - name_utf8 ? HVhek_UTF8 : 0); - isarev = (HV *)hv_delete(PL_isarev, name, + if (!fetched_isarev) { + /* If the name deletion caused a name change, then we + * are not going to call mro_isa_changed_in with this + * name (and not at all if it has become anonymous) so + * we need to delete old isarev entries here, both + * those in the superclasses and this class's own list + * of subclasses. We simply delete the latter from + * PL_isarev, since we still need it. hv_delete morti- + * fies it for us, so sv_2mortal is not necessary. */ + if(HvENAME_HEK(oldstash) != enamehek) { + if(meta->isa && HvARRAY(meta->isa)) + mro_clean_isarev(meta->isa, name, len, 0, 0, + name_utf8 ? HVhek_UTF8 : 0); + isarev = (HV *)hv_delete(PL_isarev, name, name_utf8 ? -(I32)len : (I32)len, 0); - fetched_isarev=TRUE; - } - } - } - } + fetched_isarev=TRUE; + } + } + } + } } check_stash: if(stash) { - if(SvTYPE(namesv) == SVt_PVAV) { - items = AvFILLp((AV *)namesv) + 1; - svp = AvARRAY((AV *)namesv); - } - else { - items = 1; - svp = &namesv; - } - while (items--) { + if(SvTYPE(namesv) == SVt_PVAV) { + items = AvFILLp((AV *)namesv) + 1; + svp = AvARRAY((AV *)namesv); + } + else { + items = 1; + svp = &namesv; + } + while (items--) { const U32 name_utf8 = SvUTF8(*svp); - STRLEN len; - const char *name = SvPVx_const(*svp++, len); - hv_ename_add(stash, name, len, name_utf8); - } + STRLEN len; + const char *name = SvPVx_const(*svp++, len); + hv_ename_add(stash, name, len, name_utf8); + } /* Add it to the big list if it needs - * mro_isa_changed_in called on it. That happens if it was - * detached from the symbol table (so it had no HvENAME) before - * being assigned to the spot named by the 'name' variable, because - * its cached isa linearisation is now stale (the effective name - * having changed), and subclasses will then use that cache when - * mro_package_moved calls mro_isa_changed_in. (See - * [perl #77358].) - * - * If it did have a name, then its previous name is still - * used in isa caches, and there is no need for - * mro_package_moved to call mro_isa_changed_in. - */ - - entry - = (HE *) - hv_common( - seen_stashes, NULL, (const char *)&stash, sizeof(HV *), 0, - HV_FETCH_LVALUE|HV_FETCH_EMPTY_HE, NULL, 0 - ); - if(HeVAL(entry) == &PL_sv_yes || HeVAL(entry) == &PL_sv_no) - stash = NULL; - else { - HeVAL(entry) - = HeVAL(entry) == &PL_sv_undef ? &PL_sv_yes : &PL_sv_no; - if(!stash_had_name) - { - struct mro_meta * const meta = HvMROMETA(stash); - (void) - hv_store( - stashes, (const char *)&stash, sizeof(HV *), - meta->isa - ? SvREFCNT_inc_simple_NN((SV *)meta->isa) - : &PL_sv_yes, - 0 - ); - CLEAR_LINEAR(meta); - } - } + * mro_isa_changed_in called on it. That happens if it was + * detached from the symbol table (so it had no HvENAME) before + * being assigned to the spot named by the 'name' variable, because + * its cached isa linearisation is now stale (the effective name + * having changed), and subclasses will then use that cache when + * mro_package_moved calls mro_isa_changed_in. (See + * [perl #77358].) + * + * If it did have a name, then its previous name is still + * used in isa caches, and there is no need for + * mro_package_moved to call mro_isa_changed_in. + */ + + entry + = (HE *) + hv_common( + seen_stashes, NULL, (const char *)&stash, sizeof(HV *), 0, + HV_FETCH_LVALUE|HV_FETCH_EMPTY_HE, NULL, 0 + ); + if(HeVAL(entry) == &PL_sv_yes || HeVAL(entry) == &PL_sv_no) + stash = NULL; + else { + HeVAL(entry) + = HeVAL(entry) == &PL_sv_undef ? &PL_sv_yes : &PL_sv_no; + if(!stash_had_name) + { + struct mro_meta * const meta = HvMROMETA(stash); + (void) + hv_store( + stashes, (const char *)&stash, sizeof(HV *), + meta->isa + ? SvREFCNT_inc_simple_NN((SV *)meta->isa) + : &PL_sv_yes, + 0 + ); + CLEAR_LINEAR(meta); + } + } } if(!stash && !oldstash) - /* Both stashes have been encountered already. */ - return; + /* Both stashes have been encountered already. */ + return; /* Add all the subclasses to the big list. */ if(!fetched_isarev) { - /* If oldstash is not null, then we can use its HvENAME to look up - the isarev hash, since all its subclasses will be listed there. - It will always have an HvENAME. It the HvENAME was removed - above, then fetch_isarev will be true, and this code will not be - reached. - - If oldstash is null, then this is an empty spot with no stash in - it, so subclasses could be listed in isarev hashes belonging to - any of the names, so we have to check all of them. - */ - assert(!oldstash || HvENAME(oldstash)); - if (oldstash) { - /* Extra variable to avoid a compiler warning */ - const HEK * const hvename = HvENAME_HEK(oldstash); - fetched_isarev = TRUE; - svp = hv_fetchhek(PL_isarev, hvename, 0); - if (svp) isarev = MUTABLE_HV(*svp); - } - else if(SvTYPE(namesv) == SVt_PVAV) { - items = AvFILLp((AV *)namesv) + 1; - svp = AvARRAY((AV *)namesv); - } - else { - items = 1; - svp = &namesv; - } + /* If oldstash is not null, then we can use its HvENAME to look up + the isarev hash, since all its subclasses will be listed there. + It will always have an HvENAME. It the HvENAME was removed + above, then fetch_isarev will be true, and this code will not be + reached. + + If oldstash is null, then this is an empty spot with no stash in + it, so subclasses could be listed in isarev hashes belonging to + any of the names, so we have to check all of them. + */ + assert(!oldstash || HvENAME(oldstash)); + if (oldstash) { + /* Extra variable to avoid a compiler warning */ + const HEK * const hvename = HvENAME_HEK(oldstash); + fetched_isarev = TRUE; + svp = hv_fetchhek(PL_isarev, hvename, 0); + if (svp) isarev = MUTABLE_HV(*svp); + } + else if(SvTYPE(namesv) == SVt_PVAV) { + items = AvFILLp((AV *)namesv) + 1; + svp = AvARRAY((AV *)namesv); + } + else { + items = 1; + svp = &namesv; + } } if( isarev || !fetched_isarev ) { while (fetched_isarev || items--) { - HE *iter; + HE *iter; - if (!fetched_isarev) { - HE * const he = hv_fetch_ent(PL_isarev, *svp++, 0, 0); - if (!he || !(isarev = MUTABLE_HV(HeVAL(he)))) continue; - } - - hv_iterinit(isarev); - while((iter = hv_iternext(isarev))) { - HV* revstash = gv_stashsv(hv_iterkeysv(iter), 0); - struct mro_meta * meta; - - if(!revstash) continue; - meta = HvMROMETA(revstash); - (void) - hv_store( - stashes, (const char *)&revstash, sizeof(HV *), - meta->isa - ? SvREFCNT_inc_simple_NN((SV *)meta->isa) - : &PL_sv_yes, - 0 - ); - CLEAR_LINEAR(meta); + if (!fetched_isarev) { + HE * const he = hv_fetch_ent(PL_isarev, *svp++, 0, 0); + if (!he || !(isarev = MUTABLE_HV(HeVAL(he)))) continue; } - if (fetched_isarev) break; + hv_iterinit(isarev); + while((iter = hv_iternext(isarev))) { + HV* revstash = gv_stashsv(hv_iterkeysv(iter), 0); + struct mro_meta * meta; + + if(!revstash) continue; + meta = HvMROMETA(revstash); + (void) + hv_store( + stashes, (const char *)&revstash, sizeof(HV *), + meta->isa + ? SvREFCNT_inc_simple_NN((SV *)meta->isa) + : &PL_sv_yes, + 0 + ); + CLEAR_LINEAR(meta); + } + + if (fetched_isarev) break; } } @@ -1113,169 +1113,169 @@ /* Skip the entire loop if the hash is empty. */ if(oldstash && HvUSEDKEYS(oldstash)) { - xhv = (XPVHV*)SvANY(oldstash); - seen = (HV *) sv_2mortal((SV *)newHV()); + xhv = (XPVHV*)SvANY(oldstash); + seen = (HV *) sv_2mortal((SV *)newHV()); + + /* Iterate through entries in the oldstash, adding them to the + list, meanwhile doing the equivalent of $seen{$key} = 1. + */ + + while (++riter <= (I32)xhv->xhv_max) { + entry = (HvARRAY(oldstash))[riter]; + + /* Iterate through the entries in this list */ + for(; entry; entry = HeNEXT(entry)) { + const char* key; + I32 len; + + /* If this entry is not a glob, ignore it. + Try the next. */ + if (!isGV(HeVAL(entry))) continue; + + key = hv_iterkey(entry, &len); + if ((len > 1 && key[len-2] == ':' && key[len-1] == ':') + || (len == 1 && key[0] == ':')) { + HV * const oldsubstash = GvHV(HeVAL(entry)); + SV ** const stashentry + = stash ? hv_fetch(stash, key, HeUTF8(entry) ? -(I32)len : (I32)len, 0) : NULL; + HV *substash = NULL; + + /* Avoid main::main::main::... */ + if(oldsubstash == oldstash) continue; + + if( + ( + stashentry && *stashentry && isGV(*stashentry) + && (substash = GvHV(*stashentry)) + ) + || (oldsubstash && HvENAME_get(oldsubstash)) + ) + { + /* Add :: and the key (minus the trailing ::) + to each name. */ + SV *subname; + if(SvTYPE(namesv) == SVt_PVAV) { + SV *aname; + items = AvFILLp((AV *)namesv) + 1; + svp = AvARRAY((AV *)namesv); + subname = sv_2mortal((SV *)newAV()); + while (items--) { + aname = newSVsv(*svp++); + if (len == 1) + sv_catpvs(aname, ":"); + else { + sv_catpvs(aname, "::"); + sv_catpvn_flags( + aname, key, len-2, + HeUTF8(entry) + ? SV_CATUTF8 : SV_CATBYTES + ); + } + av_push((AV *)subname, aname); + } + } + else { + subname = sv_2mortal(newSVsv(namesv)); + if (len == 1) sv_catpvs(subname, ":"); + else { + sv_catpvs(subname, "::"); + sv_catpvn_flags( + subname, key, len-2, + HeUTF8(entry) ? SV_CATUTF8 : SV_CATBYTES + ); + } + } + mro_gather_and_rename( + stashes, seen_stashes, + substash, oldsubstash, subname + ); + } - /* Iterate through entries in the oldstash, adding them to the - list, meanwhile doing the equivalent of $seen{$key} = 1. - */ - - while (++riter <= (I32)xhv->xhv_max) { - entry = (HvARRAY(oldstash))[riter]; - - /* Iterate through the entries in this list */ - for(; entry; entry = HeNEXT(entry)) { - const char* key; - I32 len; - - /* If this entry is not a glob, ignore it. - Try the next. */ - if (!isGV(HeVAL(entry))) continue; - - key = hv_iterkey(entry, &len); - if ((len > 1 && key[len-2] == ':' && key[len-1] == ':') - || (len == 1 && key[0] == ':')) { - HV * const oldsubstash = GvHV(HeVAL(entry)); - SV ** const stashentry - = stash ? hv_fetch(stash, key, HeUTF8(entry) ? -(I32)len : (I32)len, 0) : NULL; - HV *substash = NULL; - - /* Avoid main::main::main::... */ - if(oldsubstash == oldstash) continue; - - if( - ( - stashentry && *stashentry && isGV(*stashentry) - && (substash = GvHV(*stashentry)) - ) - || (oldsubstash && HvENAME_get(oldsubstash)) - ) - { - /* Add :: and the key (minus the trailing ::) - to each name. */ - SV *subname; - if(SvTYPE(namesv) == SVt_PVAV) { - SV *aname; - items = AvFILLp((AV *)namesv) + 1; - svp = AvARRAY((AV *)namesv); - subname = sv_2mortal((SV *)newAV()); - while (items--) { - aname = newSVsv(*svp++); - if (len == 1) - sv_catpvs(aname, ":"); - else { - sv_catpvs(aname, "::"); - sv_catpvn_flags( - aname, key, len-2, - HeUTF8(entry) - ? SV_CATUTF8 : SV_CATBYTES - ); - } - av_push((AV *)subname, aname); - } - } - else { - subname = sv_2mortal(newSVsv(namesv)); - if (len == 1) sv_catpvs(subname, ":"); - else { - sv_catpvs(subname, "::"); - sv_catpvn_flags( - subname, key, len-2, - HeUTF8(entry) ? SV_CATUTF8 : SV_CATBYTES - ); - } - } - mro_gather_and_rename( - stashes, seen_stashes, - substash, oldsubstash, subname - ); - } - - (void)hv_store(seen, key, HeUTF8(entry) ? -(I32)len : (I32)len, &PL_sv_yes, 0); - } - } - } + (void)hv_store(seen, key, HeUTF8(entry) ? -(I32)len : (I32)len, &PL_sv_yes, 0); + } + } + } } /* Skip the entire loop if the hash is empty. */ if (stash && HvUSEDKEYS(stash)) { - xhv = (XPVHV*)SvANY(stash); - riter = -1; + xhv = (XPVHV*)SvANY(stash); + riter = -1; - /* Iterate through the new stash, skipping $seen{$key} items, - calling mro_gather_and_rename(stashes,seen,entry,NULL, ...). */ - while (++riter <= (I32)xhv->xhv_max) { - entry = (HvARRAY(stash))[riter]; - - /* Iterate through the entries in this list */ - for(; entry; entry = HeNEXT(entry)) { - const char* key; - I32 len; - - /* If this entry is not a glob, ignore it. - Try the next. */ - if (!isGV(HeVAL(entry))) continue; - - key = hv_iterkey(entry, &len); - if ((len > 1 && key[len-2] == ':' && key[len-1] == ':') - || (len == 1 && key[0] == ':')) { - HV *substash; - - /* If this entry was seen when we iterated through the - oldstash, skip it. */ - if(seen && hv_exists(seen, key, HeUTF8(entry) ? -(I32)len : (I32)len)) continue; - - /* We get here only if this stash has no corresponding - entry in the stash being replaced. */ - - substash = GvHV(HeVAL(entry)); - if(substash) { - SV *subname; - - /* Avoid checking main::main::main::... */ - if(substash == stash) continue; - - /* Add :: and the key (minus the trailing ::) - to each name. */ - if(SvTYPE(namesv) == SVt_PVAV) { - SV *aname; - items = AvFILLp((AV *)namesv) + 1; - svp = AvARRAY((AV *)namesv); - subname = sv_2mortal((SV *)newAV()); - while (items--) { - aname = newSVsv(*svp++); - if (len == 1) - sv_catpvs(aname, ":"); - else { - sv_catpvs(aname, "::"); - sv_catpvn_flags( - aname, key, len-2, - HeUTF8(entry) - ? SV_CATUTF8 : SV_CATBYTES - ); - } - av_push((AV *)subname, aname); - } - } - else { - subname = sv_2mortal(newSVsv(namesv)); - if (len == 1) sv_catpvs(subname, ":"); - else { - sv_catpvs(subname, "::"); - sv_catpvn_flags( - subname, key, len-2, - HeUTF8(entry) ? SV_CATUTF8 : SV_CATBYTES - ); - } - } - mro_gather_and_rename( - stashes, seen_stashes, - substash, NULL, subname - ); - } - } - } - } + /* Iterate through the new stash, skipping $seen{$key} items, + calling mro_gather_and_rename(stashes,seen,entry,NULL, ...). */ + while (++riter <= (I32)xhv->xhv_max) { + entry = (HvARRAY(stash))[riter]; + + /* Iterate through the entries in this list */ + for(; entry; entry = HeNEXT(entry)) { + const char* key; + I32 len; + + /* If this entry is not a glob, ignore it. + Try the next. */ + if (!isGV(HeVAL(entry))) continue; + + key = hv_iterkey(entry, &len); + if ((len > 1 && key[len-2] == ':' && key[len-1] == ':') + || (len == 1 && key[0] == ':')) { + HV *substash; + + /* If this entry was seen when we iterated through the + oldstash, skip it. */ + if(seen && hv_exists(seen, key, HeUTF8(entry) ? -(I32)len : (I32)len)) continue; + + /* We get here only if this stash has no corresponding + entry in the stash being replaced. */ + + substash = GvHV(HeVAL(entry)); + if(substash) { + SV *subname; + + /* Avoid checking main::main::main::... */ + if(substash == stash) continue; + + /* Add :: and the key (minus the trailing ::) + to each name. */ + if(SvTYPE(namesv) == SVt_PVAV) { + SV *aname; + items = AvFILLp((AV *)namesv) + 1; + svp = AvARRAY((AV *)namesv); + subname = sv_2mortal((SV *)newAV()); + while (items--) { + aname = newSVsv(*svp++); + if (len == 1) + sv_catpvs(aname, ":"); + else { + sv_catpvs(aname, "::"); + sv_catpvn_flags( + aname, key, len-2, + HeUTF8(entry) + ? SV_CATUTF8 : SV_CATBYTES + ); + } + av_push((AV *)subname, aname); + } + } + else { + subname = sv_2mortal(newSVsv(namesv)); + if (len == 1) sv_catpvs(subname, ":"); + else { + sv_catpvs(subname, "::"); + sv_catpvn_flags( + subname, key, len-2, + HeUTF8(entry) ? SV_CATUTF8 : SV_CATBYTES + ); + } + } + mro_gather_and_rename( + stashes, seen_stashes, + substash, NULL, subname + ); + } + } + } + } } } @@ -1340,7 +1340,7 @@ /* else, invalidate the method caches of all child classes, but not itself */ if(isarev) { - HE* iter; + HE* iter; hv_iterinit(isarev); while((iter = hv_iternext(isarev))) { @@ -1374,15 +1374,15 @@ Perl_croak(aTHX_ "Invalid mro name: '%" SVf "'", name); if(meta->mro_which != which) { - if (meta->mro_linear_current && !meta->mro_linear_all) { - /* If we were storing something directly, put it in the hash before - we lose it. */ - Perl_mro_set_private_data(aTHX_ meta, meta->mro_which, - MUTABLE_SV(meta->mro_linear_current)); - } - meta->mro_which = which; - /* Scrub our cached pointer to the private data. */ - meta->mro_linear_current = NULL; + if (meta->mro_linear_current && !meta->mro_linear_all) { + /* If we were storing something directly, put it in the hash before + we lose it. */ + Perl_mro_set_private_data(aTHX_ meta, meta->mro_which, + MUTABLE_SV(meta->mro_linear_current)); + } + meta->mro_which = which; + /* Scrub our cached pointer to the private data. */ + meta->mro_linear_current = NULL; /* Only affects local method cache, not even child classes */ meta->cache_gen++; @@ -1412,7 +1412,7 @@ HV* class_stash; if(items != 1) - croak_xs_usage(cv, "classname"); + croak_xs_usage(cv, "classname"); classname = ST(0); diff -Nru perl-5.32.1/myconfig.SH perl-5.34.0/myconfig.SH --- perl-5.32.1/myconfig.SH 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/myconfig.SH 2020-10-04 22:17:13.000000000 +0000 @@ -47,7 +47,6 @@ uselongdouble=$uselongdouble usemymalloc=$usemymalloc default_inc_excludes_dot=$default_inc_excludes_dot - bincompat5005=undef Compiler: cc='$cc' ccflags ='$ccflags' diff -Nru perl-5.32.1/NetWare/CLIBstuf.c perl-5.34.0/NetWare/CLIBstuf.c --- perl-5.32.1/NetWare/CLIBstuf.c 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/CLIBstuf.c 2021-01-20 23:04:44.000000000 +0000 @@ -33,119 +33,119 @@ void ImportFromCLIB (unsigned int nlmHandle, void** psymbol, char* symbolName) { - *psymbol = ImportSymbol(nlmHandle, symbolName); - if (*psymbol == NULL) - { - ConsolePrintf("Symbol %s not found, unable to continue\n", symbolName); - exit(1); - } + *psymbol = ImportSymbol(nlmHandle, symbolName); + if (*psymbol == NULL) + { + ConsolePrintf("Symbol %s not found, unable to continue\n", symbolName); + exit(1); + } } void fnInitGpfGlobals(void) { - unsigned int nlmHandle = GetNLMHandle(); + unsigned int nlmHandle = GetNLMHandle(); - ImportFromCLIB(nlmHandle, &gpf___get_stdin, "__get_stdin"); - ImportFromCLIB(nlmHandle, &gpf___get_stdout, "__get_stdout"); - ImportFromCLIB(nlmHandle, &gpf___get_stderr, "__get_stderr"); - ImportFromCLIB(nlmHandle, &gpf_clearerr, "clearerr"); - ImportFromCLIB(nlmHandle, &gpf_fclose, "fclose"); - ImportFromCLIB(nlmHandle, &gpf_feof, "feof"); - ImportFromCLIB(nlmHandle, &gpf_ferror, "ferror"); - ImportFromCLIB(nlmHandle, &gpf_fflush, "fflush"); - ImportFromCLIB(nlmHandle, &gpf_fgetc, "fgetc"); - ImportFromCLIB(nlmHandle, &gpf_fgetpos, "fgetpos"); - ImportFromCLIB(nlmHandle, &gpf_fgets, "fgets"); - ImportFromCLIB(nlmHandle, &gpf_fopen, "fopen"); - ImportFromCLIB(nlmHandle, &gpf_fputc, "fputc"); - ImportFromCLIB(nlmHandle, &gpf_fputs, "fputs"); - ImportFromCLIB(nlmHandle, &gpf_fread, "fread"); - ImportFromCLIB(nlmHandle, &gpf_freopen, "freopen"); - ImportFromCLIB(nlmHandle, &gpf_fscanf, "fscanf"); - ImportFromCLIB(nlmHandle, &gpf_fseek, "fseek"); - ImportFromCLIB(nlmHandle, &gpf_fsetpos, "fsetpos"); - ImportFromCLIB(nlmHandle, &gpf_ftell, "ftell"); - ImportFromCLIB(nlmHandle, &gpf_fwrite, "fwrite"); - ImportFromCLIB(nlmHandle, &gpf_getc, "getc"); - ImportFromCLIB(nlmHandle, &gpf_getchar, "getchar"); - ImportFromCLIB(nlmHandle, &gpf_gets, "gets"); - ImportFromCLIB(nlmHandle, &gpf_perror, "perror"); - ImportFromCLIB(nlmHandle, &gpf_putc, "putc"); - ImportFromCLIB(nlmHandle, &gpf_putchar, "putchar"); - ImportFromCLIB(nlmHandle, &gpf_puts, "puts"); - ImportFromCLIB(nlmHandle, &gpf_rename, "rename"); - ImportFromCLIB(nlmHandle, &gpf_rewind, "rewind"); - ImportFromCLIB(nlmHandle, &gpf_scanf, "scanf"); - ImportFromCLIB(nlmHandle, &gpf_setbuf, "setbuf"); - ImportFromCLIB(nlmHandle, &gpf_setvbuf, "setvbuf"); - ImportFromCLIB(nlmHandle, &gpf_sscanf, "sscanf"); - ImportFromCLIB(nlmHandle, &gpf_tmpfile, "tmpfile"); - ImportFromCLIB(nlmHandle, &gpf_tmpnam, "tmpnam"); - ImportFromCLIB(nlmHandle, &gpf_ungetc, "ungetc"); - ImportFromCLIB(nlmHandle, &gpf_vfscanf, "vfscanf"); - ImportFromCLIB(nlmHandle, &gpf_vscanf, "vscanf"); - ImportFromCLIB(nlmHandle, &gpf_vsscanf, "vsscanf"); - ImportFromCLIB(nlmHandle, &gpf_fdopen, "fdopen"); - ImportFromCLIB(nlmHandle, &gpf_fileno, "fileno"); - ImportFromCLIB(nlmHandle, &gpf_cgets, "cgets"); - ImportFromCLIB(nlmHandle, &gpf_cprintf, "cprintf"); - ImportFromCLIB(nlmHandle, &gpf_cputs, "cputs"); - ImportFromCLIB(nlmHandle, &gpf_cscanf, "cscanf"); - ImportFromCLIB(nlmHandle, &gpf_fcloseall, "fcloseall"); - ImportFromCLIB(nlmHandle, &gpf_fgetchar, "fgetchar"); - ImportFromCLIB(nlmHandle, &gpf_flushall, "flushall"); - ImportFromCLIB(nlmHandle, &gpf_fputchar, "fputchar"); - ImportFromCLIB(nlmHandle, &gpf_getch, "getch"); - ImportFromCLIB(nlmHandle, &gpf_getche, "getche"); - ImportFromCLIB(nlmHandle, &gpf_putch, "putch"); - ImportFromCLIB(nlmHandle, &gpf_ungetch, "ungetch"); - ImportFromCLIB(nlmHandle, &gpf_vcprintf, "vcprintf"); - ImportFromCLIB(nlmHandle, &gpf_vcscanf, "vcscanf"); - - ImportFromCLIB(nlmHandle, &gpf_memchr, "memchr"); - ImportFromCLIB(nlmHandle, &gpf_memcmp, "memcmp"); - ImportFromCLIB(nlmHandle, &gpf_memcpy, "memcpy"); - ImportFromCLIB(nlmHandle, &gpf_memmove, "memmove"); - ImportFromCLIB(nlmHandle, &gpf_memset, "memset"); - ImportFromCLIB(nlmHandle, &gpf_memicmp, "memicmp"); - - ImportFromCLIB(nlmHandle, &gpf_strerror, "strerror"); - ImportFromCLIB(nlmHandle, &gpf_strtok_r, "strtok_r"); - - ImportFromCLIB(nlmHandle, &gpf_strcpy, "strcpy"); - ImportFromCLIB(nlmHandle, &gpf_strcat, "strcat"); - ImportFromCLIB(nlmHandle, &gpf_strchr, "strchr"); - ImportFromCLIB(nlmHandle, &gpf_strstr, "strstr"); - ImportFromCLIB(nlmHandle, &gpf_strcoll, "strcoll"); - ImportFromCLIB(nlmHandle, &gpf_strcspn, "strcspn"); - ImportFromCLIB(nlmHandle, &gpf_strpbrk, "strpbrk"); - ImportFromCLIB(nlmHandle, &gpf_strrchr, "strrchr"); - ImportFromCLIB(nlmHandle, &gpf_strrev, "strrev"); - ImportFromCLIB(nlmHandle, &gpf_strspn, "strspn"); - ImportFromCLIB(nlmHandle, &gpf_strupr, "strupr"); - ImportFromCLIB(nlmHandle, &gpf_strxfrm, "strxfrm"); - ImportFromCLIB(nlmHandle, &gpf_strcmp, "strcmp"); - ImportFromCLIB(nlmHandle, &gpf_stricmp, "stricmp"); - ImportFromCLIB(nlmHandle, &gpf_strtok, "strtok"); - ImportFromCLIB(nlmHandle, &gpf_strlen, "strlen"); - ImportFromCLIB(nlmHandle, &gpf_strncpy, "strncpy"); - ImportFromCLIB(nlmHandle, &gpf_strncat, "strncat"); - ImportFromCLIB(nlmHandle, &gpf_strncmp, "strncmp"); - ImportFromCLIB(nlmHandle, &gpf_strcmpi, "strcmpi"); - ImportFromCLIB(nlmHandle, &gpf_strnicmp, "strnicmp"); - ImportFromCLIB(nlmHandle, &gpf_strdup, "strdup"); - ImportFromCLIB(nlmHandle, &gpf_strlist, "strlist"); - ImportFromCLIB(nlmHandle, &gpf_strlwr, "strlwr"); - ImportFromCLIB(nlmHandle, &gpf_strnset, "strnset"); - ImportFromCLIB(nlmHandle, &gpf_strset, "strset"); - ImportFromCLIB(nlmHandle, &gpf_strtok_r, "strtok_r"); - ImportFromCLIB(nlmHandle, &gpf_printf, "printf"); - ImportFromCLIB(nlmHandle, &gpf_fprintf, "fprintf"); - ImportFromCLIB(nlmHandle, &gpf_sprintf, "sprintf"); - ImportFromCLIB(nlmHandle, &gpf_vprintf, "vprintf"); - ImportFromCLIB(nlmHandle, &gpf_vfprintf, "vfprintf"); - ImportFromCLIB(nlmHandle, &gpf_vsprintf, "vsprintf"); + ImportFromCLIB(nlmHandle, &gpf___get_stdin, "__get_stdin"); + ImportFromCLIB(nlmHandle, &gpf___get_stdout, "__get_stdout"); + ImportFromCLIB(nlmHandle, &gpf___get_stderr, "__get_stderr"); + ImportFromCLIB(nlmHandle, &gpf_clearerr, "clearerr"); + ImportFromCLIB(nlmHandle, &gpf_fclose, "fclose"); + ImportFromCLIB(nlmHandle, &gpf_feof, "feof"); + ImportFromCLIB(nlmHandle, &gpf_ferror, "ferror"); + ImportFromCLIB(nlmHandle, &gpf_fflush, "fflush"); + ImportFromCLIB(nlmHandle, &gpf_fgetc, "fgetc"); + ImportFromCLIB(nlmHandle, &gpf_fgetpos, "fgetpos"); + ImportFromCLIB(nlmHandle, &gpf_fgets, "fgets"); + ImportFromCLIB(nlmHandle, &gpf_fopen, "fopen"); + ImportFromCLIB(nlmHandle, &gpf_fputc, "fputc"); + ImportFromCLIB(nlmHandle, &gpf_fputs, "fputs"); + ImportFromCLIB(nlmHandle, &gpf_fread, "fread"); + ImportFromCLIB(nlmHandle, &gpf_freopen, "freopen"); + ImportFromCLIB(nlmHandle, &gpf_fscanf, "fscanf"); + ImportFromCLIB(nlmHandle, &gpf_fseek, "fseek"); + ImportFromCLIB(nlmHandle, &gpf_fsetpos, "fsetpos"); + ImportFromCLIB(nlmHandle, &gpf_ftell, "ftell"); + ImportFromCLIB(nlmHandle, &gpf_fwrite, "fwrite"); + ImportFromCLIB(nlmHandle, &gpf_getc, "getc"); + ImportFromCLIB(nlmHandle, &gpf_getchar, "getchar"); + ImportFromCLIB(nlmHandle, &gpf_gets, "gets"); + ImportFromCLIB(nlmHandle, &gpf_perror, "perror"); + ImportFromCLIB(nlmHandle, &gpf_putc, "putc"); + ImportFromCLIB(nlmHandle, &gpf_putchar, "putchar"); + ImportFromCLIB(nlmHandle, &gpf_puts, "puts"); + ImportFromCLIB(nlmHandle, &gpf_rename, "rename"); + ImportFromCLIB(nlmHandle, &gpf_rewind, "rewind"); + ImportFromCLIB(nlmHandle, &gpf_scanf, "scanf"); + ImportFromCLIB(nlmHandle, &gpf_setbuf, "setbuf"); + ImportFromCLIB(nlmHandle, &gpf_setvbuf, "setvbuf"); + ImportFromCLIB(nlmHandle, &gpf_sscanf, "sscanf"); + ImportFromCLIB(nlmHandle, &gpf_tmpfile, "tmpfile"); + ImportFromCLIB(nlmHandle, &gpf_tmpnam, "tmpnam"); + ImportFromCLIB(nlmHandle, &gpf_ungetc, "ungetc"); + ImportFromCLIB(nlmHandle, &gpf_vfscanf, "vfscanf"); + ImportFromCLIB(nlmHandle, &gpf_vscanf, "vscanf"); + ImportFromCLIB(nlmHandle, &gpf_vsscanf, "vsscanf"); + ImportFromCLIB(nlmHandle, &gpf_fdopen, "fdopen"); + ImportFromCLIB(nlmHandle, &gpf_fileno, "fileno"); + ImportFromCLIB(nlmHandle, &gpf_cgets, "cgets"); + ImportFromCLIB(nlmHandle, &gpf_cprintf, "cprintf"); + ImportFromCLIB(nlmHandle, &gpf_cputs, "cputs"); + ImportFromCLIB(nlmHandle, &gpf_cscanf, "cscanf"); + ImportFromCLIB(nlmHandle, &gpf_fcloseall, "fcloseall"); + ImportFromCLIB(nlmHandle, &gpf_fgetchar, "fgetchar"); + ImportFromCLIB(nlmHandle, &gpf_flushall, "flushall"); + ImportFromCLIB(nlmHandle, &gpf_fputchar, "fputchar"); + ImportFromCLIB(nlmHandle, &gpf_getch, "getch"); + ImportFromCLIB(nlmHandle, &gpf_getche, "getche"); + ImportFromCLIB(nlmHandle, &gpf_putch, "putch"); + ImportFromCLIB(nlmHandle, &gpf_ungetch, "ungetch"); + ImportFromCLIB(nlmHandle, &gpf_vcprintf, "vcprintf"); + ImportFromCLIB(nlmHandle, &gpf_vcscanf, "vcscanf"); + + ImportFromCLIB(nlmHandle, &gpf_memchr, "memchr"); + ImportFromCLIB(nlmHandle, &gpf_memcmp, "memcmp"); + ImportFromCLIB(nlmHandle, &gpf_memcpy, "memcpy"); + ImportFromCLIB(nlmHandle, &gpf_memmove, "memmove"); + ImportFromCLIB(nlmHandle, &gpf_memset, "memset"); + ImportFromCLIB(nlmHandle, &gpf_memicmp, "memicmp"); + + ImportFromCLIB(nlmHandle, &gpf_strerror, "strerror"); + ImportFromCLIB(nlmHandle, &gpf_strtok_r, "strtok_r"); + + ImportFromCLIB(nlmHandle, &gpf_strcpy, "strcpy"); + ImportFromCLIB(nlmHandle, &gpf_strcat, "strcat"); + ImportFromCLIB(nlmHandle, &gpf_strchr, "strchr"); + ImportFromCLIB(nlmHandle, &gpf_strstr, "strstr"); + ImportFromCLIB(nlmHandle, &gpf_strcoll, "strcoll"); + ImportFromCLIB(nlmHandle, &gpf_strcspn, "strcspn"); + ImportFromCLIB(nlmHandle, &gpf_strpbrk, "strpbrk"); + ImportFromCLIB(nlmHandle, &gpf_strrchr, "strrchr"); + ImportFromCLIB(nlmHandle, &gpf_strrev, "strrev"); + ImportFromCLIB(nlmHandle, &gpf_strspn, "strspn"); + ImportFromCLIB(nlmHandle, &gpf_strupr, "strupr"); + ImportFromCLIB(nlmHandle, &gpf_strxfrm, "strxfrm"); + ImportFromCLIB(nlmHandle, &gpf_strcmp, "strcmp"); + ImportFromCLIB(nlmHandle, &gpf_stricmp, "stricmp"); + ImportFromCLIB(nlmHandle, &gpf_strtok, "strtok"); + ImportFromCLIB(nlmHandle, &gpf_strlen, "strlen"); + ImportFromCLIB(nlmHandle, &gpf_strncpy, "strncpy"); + ImportFromCLIB(nlmHandle, &gpf_strncat, "strncat"); + ImportFromCLIB(nlmHandle, &gpf_strncmp, "strncmp"); + ImportFromCLIB(nlmHandle, &gpf_strcmpi, "strcmpi"); + ImportFromCLIB(nlmHandle, &gpf_strnicmp, "strnicmp"); + ImportFromCLIB(nlmHandle, &gpf_strdup, "strdup"); + ImportFromCLIB(nlmHandle, &gpf_strlist, "strlist"); + ImportFromCLIB(nlmHandle, &gpf_strlwr, "strlwr"); + ImportFromCLIB(nlmHandle, &gpf_strnset, "strnset"); + ImportFromCLIB(nlmHandle, &gpf_strset, "strset"); + ImportFromCLIB(nlmHandle, &gpf_strtok_r, "strtok_r"); + ImportFromCLIB(nlmHandle, &gpf_printf, "printf"); + ImportFromCLIB(nlmHandle, &gpf_fprintf, "fprintf"); + ImportFromCLIB(nlmHandle, &gpf_sprintf, "sprintf"); + ImportFromCLIB(nlmHandle, &gpf_vprintf, "vprintf"); + ImportFromCLIB(nlmHandle, &gpf_vfprintf, "vfprintf"); + ImportFromCLIB(nlmHandle, &gpf_vsprintf, "vsprintf"); } diff -Nru perl-5.32.1/NetWare/config_H.wc perl-5.34.0/NetWare/config_H.wc --- perl-5.32.1/NetWare/config_H.wc 2020-12-18 13:33:50.000000000 +0000 +++ perl-5.34.0/NetWare/config_H.wc 2021-05-04 23:28:28.000000000 +0000 @@ -242,7 +242,7 @@ /* HAS_MBLEN: * This symbol, if defined, indicates that the mblen routine is available - * to find the number of bytes in a multibye character. + * to find the number of bytes in a multibyte character. */ #define HAS_MBLEN /**/ @@ -887,7 +887,7 @@ * This symbol contains the ~name expanded version of ARCHLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define ARCHLIB "c:\\perl\\5.32.1\\lib\\NetWare-x86-multi-thread" /**/ +#define ARCHLIB "c:\\perl\\5.34.0\\lib\\NetWare-x86-multi-thread" /**/ /*#define ARCHLIB_EXP "" /**/ /* ARCHNAME: @@ -918,8 +918,8 @@ * This symbol is the filename expanded version of the BIN symbol, for * programs that do not want to deal with that at run-time. */ -#define BIN "c:\\perl\\5.32.1\\bin\\NetWare-x86-multi-thread" /**/ -#define BIN_EXP "c:\\perl\\5.32.1\\bin\\NetWare-x86-multi-thread" /**/ +#define BIN "c:\\perl\\5.34.0\\bin\\NetWare-x86-multi-thread" /**/ +#define BIN_EXP "c:\\perl\\5.34.0\\bin\\NetWare-x86-multi-thread" /**/ /* BYTEORDER: * This symbol holds the hexadecimal constant defined in byteorder, @@ -2878,7 +2878,7 @@ * This symbol contains the ~name expanded version of SITEARCH, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define SITEARCH "c:\\perl\\site\\5.32.1\\lib\\NetWare-x86-multi-thread" /**/ +#define SITEARCH "c:\\perl\\site\\5.34.0\\lib\\NetWare-x86-multi-thread" /**/ /*#define SITEARCH_EXP "" /**/ /* SITELIB: @@ -2901,7 +2901,7 @@ * removed. The elements in inc_version_list (inc_version_list.U) can * be tacked onto this variable to generate a list of directories to search. */ -#define SITELIB "c:\\perl\\site\\5.32.1\\lib" /**/ +#define SITELIB "c:\\perl\\site\\5.34.0\\lib" /**/ /*#define SITELIB_EXP "" /**/ #define SITELIB_STEM "" /**/ diff -Nru perl-5.32.1/NetWare/config.wc perl-5.34.0/NetWare/config.wc --- perl-5.32.1/NetWare/config.wc 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/NetWare/config.wc 2021-01-20 23:04:44.000000000 +0000 @@ -236,6 +236,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='undef' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='undef' @@ -1083,11 +1084,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned __int64' -use5005threads='undef' use64bitall='undef' use64bitint='undef' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' diff -Nru perl-5.32.1/NetWare/deb.h perl-5.34.0/NetWare/deb.h --- perl-5.32.1/NetWare/deb.h 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/deb.h 2021-01-20 23:04:44.000000000 +0000 @@ -25,21 +25,21 @@ #if defined(DEBUGON) && !defined(USE_D2) - //debug build and d1 flag is used, so enable IDB - #define DBGMESG ConsolePrintf - #define IDB(x) \ - ConsolePrintf(x); \ - _asm {int 3} + //debug build and d1 flag is used, so enable IDB + #define DBGMESG ConsolePrintf + #define IDB(x) \ + ConsolePrintf(x); \ + _asm {int 3} #else - #if defined(USE_D2) - //debug build and d2 flag is used, so disable IDB - #define DBGMESG ConsolePrintf - #define IDB ConsolePrintf - #else - //release build, so disable DBGMESG and IDB - #define DBGMESG - #define IDB - #endif //if defined(USE_D2) + #if defined(USE_D2) + //debug build and d2 flag is used, so disable IDB + #define DBGMESG ConsolePrintf + #define IDB ConsolePrintf + #else + //release build, so disable DBGMESG and IDB + #define DBGMESG + #define IDB + #endif //if defined(USE_D2) #endif //if defined(DEBUGON) && !defined(USE_D2) diff -Nru perl-5.32.1/NetWare/intdef.h perl-5.34.0/NetWare/intdef.h --- perl-5.32.1/NetWare/intdef.h 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/intdef.h 2021-01-20 23:04:44.000000000 +0000 @@ -47,8 +47,8 @@ //#define strcpy(x,y) NWLstrbcpy(x,y,NWstrlen(y)+1) #define strcpy(x,y) \ - NWstrncpy(x,y,NWstrlen(y)); \ - x[NWstrlen(y)] ='\0'; + NWstrncpy(x,y,NWstrlen(y)); \ + x[NWstrlen(y)] ='\0'; #define strncpy(x,y,z) NWLstrbcpy(x,y,(z + 1)) #define strcat(x,y) NWLstrbcpy((x + NWstrlen(x)), y, (NWstrlen(y) +1)) #define strncmp(s1,s2,l) NWgstrncmp(s1,s2,l) @@ -58,28 +58,28 @@ #define wsprintf NWsprintf #define strncat(x,y,l) \ - NWsprintf("oops!!! Not yet defined for NWI18N, define in intdef.h, still using strncat\n"); \ - strncat(x,y,l); + NWsprintf("oops!!! Not yet defined for NWI18N, define in intdef.h, still using strncat\n"); \ + strncat(x,y,l); #define strdup(s1) \ - NWsprintf("oops!!! Not yet defined for NWI18N, define in intdef.h, still using strdup\n"); \ - strdup(s1); + NWsprintf("oops!!! Not yet defined for NWI18N, define in intdef.h, still using strdup\n"); \ + strdup(s1); #define strlist \ - NWsprintf("oops!!! Not yet defined for NWI18N, define in intdef.h, still using strlist\n"); \ - strlist; + NWsprintf("oops!!! Not yet defined for NWI18N, define in intdef.h, still using strlist\n"); \ + strlist; #define strlwr(s1) \ - NWsprintf("oops!!! Not yet defined for NWI18N, define in intdef.h, still using strlwr\n"); \ - strlwr(s1); + NWsprintf("oops!!! Not yet defined for NWI18N, define in intdef.h, still using strlwr\n"); \ + strlwr(s1); #define strnset(s1,l1,l2) \ - NWsprintf("oops!!! Not yet defined for NWI18N, define in intdef.h, still using strnset\n"); \ - strnset(s1,l1,l2); + NWsprintf("oops!!! Not yet defined for NWI18N, define in intdef.h, still using strnset\n"); \ + strnset(s1,l1,l2); #define strset(s1,l1) \ - NWsprintf("oops!!! Not yet defined for NWI18N, define in intdef.h, still using strset\n"); \ - strset(s1,l1); + NWsprintf("oops!!! Not yet defined for NWI18N, define in intdef.h, still using strset\n"); \ + strset(s1,l1); #endif // __INTDEF__ diff -Nru perl-5.32.1/NetWare/interface.c perl-5.34.0/NetWare/interface.c --- perl-5.32.1/NetWare/interface.c 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/NetWare/interface.c 2021-01-20 23:04:44.000000000 +0000 @@ -41,58 +41,58 @@ ClsPerlHost::VersionNumber() { - return 0; + return 0; } bool ClsPerlHost::RegisterWithThreadTable() { - return(fnRegisterWithThreadTable()); + return(fnRegisterWithThreadTable()); } bool ClsPerlHost::UnregisterWithThreadTable() { - return(fnUnregisterWithThreadTable()); + return(fnUnregisterWithThreadTable()); } int ClsPerlHost::PerlCreate(PerlInterpreter *my_perl) { /* if (!(my_perl = perl_alloc())) // Allocate memory for Perl. - return (1);*/ + return (1);*/ perl_construct(my_perl); - return 1; + return 1; } int ClsPerlHost::PerlParse(PerlInterpreter *my_perl, int argc, char** argv, char** env) { - return(perl_parse(my_perl, xs_init, argc, argv, env)); // Parse the command line. + return(perl_parse(my_perl, xs_init, argc, argv, env)); // Parse the command line. } int ClsPerlHost::PerlRun(PerlInterpreter *my_perl) { - return(perl_run(my_perl)); // Run Perl. + return(perl_run(my_perl)); // Run Perl. } int ClsPerlHost::PerlDestroy(PerlInterpreter *my_perl) { - return(perl_destruct(my_perl)); // Destructor for Perl. + return(perl_destruct(my_perl)); // Destructor for Perl. } void ClsPerlHost::PerlFree(PerlInterpreter *my_perl) { - perl_free(my_perl); // Free the memory allocated for Perl. + perl_free(my_perl); // Free the memory allocated for Perl. - // Remove the thread context set during Perl_set_context - // This is added here since for web script there is no other place this gets executed - // and it cannot be included into cgi2perl.xs unless this symbol is exported. - Remove_Thread_Ctx(); + // Remove the thread context set during Perl_set_context + // This is added here since for web script there is no other place this gets executed + // and it cannot be included into cgi2perl.xs unless this symbol is exported. + Remove_Thread_Ctx(); } /*============================================================================================ @@ -109,72 +109,58 @@ static void xs_init(pTHX) { - char *file = __FILE__; + char *file = __FILE__; - dXSUB_SYS; - newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file); + dXSUB_SYS; + newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file); } EXTERN_C int RunPerl(int argc, char **argv, char **env) { - int exitstatus = 0; - ClsPerlHost nlm; + int exitstatus = 0; + ClsPerlHost nlm; - PerlInterpreter *my_perl = NULL; // defined in Perl.h - PerlInterpreter *new_perl = NULL; // defined in Perl.h + PerlInterpreter *my_perl = NULL; // defined in Perl.h + PerlInterpreter *new_perl = NULL; // defined in Perl.h - #ifdef PERL_GLOBAL_STRUCT - #define PERLVAR(prefix,var,type) - #define PERLVARA(prefix,var,type) - #define PERLVARI(prefix,var,type,init) PL_Vars.prefix##var = init; - #define PERLVARIC(prefix,var,type,init) PL_Vars.prefix##var = init; - - #include "perlvars.h" - - #undef PERLVAR - #undef PERLVARA - #undef PERLVARI - #undef PERLVARIC - #endif - - PERL_SYS_INIT(&argc, &argv); - - if (!(my_perl = perl_alloc())) // Allocate memory for Perl. - return (1); - - if(nlm.PerlCreate(my_perl)) - { - PL_perl_destruct_level = 0; - - if(!nlm.PerlParse(my_perl, argc, argv, env)) - { - #if defined(TOP_CLONE) && defined(USE_ITHREADS) // XXXXXX testing - new_perl = perl_clone(my_perl, 1); - - (void) perl_run(new_perl); // Run Perl. - PERL_SET_THX(my_perl); - #else - (void) nlm.PerlRun(my_perl); - #endif - } - exitstatus = nlm.PerlDestroy(my_perl); - } - if(my_perl) - nlm.PerlFree(my_perl); - - #ifdef USE_ITHREADS - if (new_perl) - { - PERL_SET_THX(new_perl); - exitstatus = nlm.PerlDestroy(new_perl); - nlm.PerlFree(my_perl); - } - #endif + PERL_SYS_INIT(&argc, &argv); - PERL_SYS_TERM(); - return exitstatus; + if (!(my_perl = perl_alloc())) // Allocate memory for Perl. + return (1); + + if(nlm.PerlCreate(my_perl)) + { + PL_perl_destruct_level = 0; + + if(!nlm.PerlParse(my_perl, argc, argv, env)) + { + #if defined(TOP_CLONE) && defined(USE_ITHREADS) // XXXXXX testing + new_perl = perl_clone(my_perl, 1); + + (void) perl_run(new_perl); // Run Perl. + PERL_SET_THX(my_perl); + #else + (void) nlm.PerlRun(my_perl); + #endif + } + exitstatus = nlm.PerlDestroy(my_perl); + } + if(my_perl) + nlm.PerlFree(my_perl); + + #ifdef USE_ITHREADS + if (new_perl) + { + PERL_SET_THX(new_perl); + exitstatus = nlm.PerlDestroy(new_perl); + nlm.PerlFree(my_perl); + } + #endif + + PERL_SYS_TERM(); + return exitstatus; } @@ -187,7 +173,7 @@ // IPerlHost* AllocStdPerl() { - return (IPerlHost*) new ClsPerlHost(); + return (IPerlHost*) new ClsPerlHost(); } @@ -199,7 +185,7 @@ // void FreeStdPerl(IPerlHost* pPerlHost) { - if (pPerlHost) - delete (ClsPerlHost*) pPerlHost; + if (pPerlHost) + delete (ClsPerlHost*) pPerlHost; } diff -Nru perl-5.32.1/NetWare/interface.cpp perl-5.34.0/NetWare/interface.cpp --- perl-5.32.1/NetWare/interface.cpp 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/NetWare/interface.cpp 2020-10-04 22:17:12.000000000 +0000 @@ -120,19 +120,6 @@ PerlInterpreter *new_perl = NULL; // defined in Perl.h //__asm{int 3}; - #ifdef PERL_GLOBAL_STRUCT - #define PERLVAR(prefix,var,type) - #define PERLVARA(prefix,var,type) - #define PERLVARI(prefix,var,type,init) PL_Vars.prefix##var = init; - #define PERLVARIC(prefix,var,type,init) PL_Vars.prefix##var = init; - - #include "perlvars.h" - - #undef PERLVAR - #undef PERLVARA - #undef PERLVARI - #undef PERLVARIC - #endif PERL_SYS_INIT(&argc, &argv); diff -Nru perl-5.32.1/NetWare/interface.h perl-5.34.0/NetWare/interface.h --- perl-5.32.1/NetWare/interface.h 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/interface.h 2021-01-20 23:04:44.000000000 +0000 @@ -27,19 +27,19 @@ class ClsPerlHost : public IPerlHost { public: - ClsPerlHost(void); - virtual ~ClsPerlHost(void); + ClsPerlHost(void); + virtual ~ClsPerlHost(void); - int VersionNumber(); + int VersionNumber(); - int PerlCreate(PerlInterpreter *my_perl); - int PerlParse(PerlInterpreter *my_perl, int argc, char** argv, char** env); - int PerlRun(PerlInterpreter *my_perl); - int PerlDestroy(PerlInterpreter *my_perl); - void PerlFree(PerlInterpreter *my_perl); + int PerlCreate(PerlInterpreter *my_perl); + int PerlParse(PerlInterpreter *my_perl, int argc, char** argv, char** env); + int PerlRun(PerlInterpreter *my_perl); + int PerlDestroy(PerlInterpreter *my_perl); + void PerlFree(PerlInterpreter *my_perl); - //bool RegisterWithThreadTable(void); - //bool UnregisterWithThreadTable(void); + //bool RegisterWithThreadTable(void); + //bool UnregisterWithThreadTable(void); }; diff -Nru perl-5.32.1/NetWare/iperlhost.h perl-5.34.0/NetWare/iperlhost.h --- perl-5.32.1/NetWare/iperlhost.h 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/iperlhost.h 2021-01-20 23:04:44.000000000 +0000 @@ -28,16 +28,16 @@ class IPerlHost { public: - virtual int VersionNumber() = 0; + virtual int VersionNumber() = 0; - virtual int PerlCreate(PerlInterpreter *my_perl) = 0; - virtual int PerlParse(PerlInterpreter *my_perl,int argc, char** argv, char** env) = 0; - virtual int PerlRun(PerlInterpreter *my_perl) = 0; - virtual int PerlDestroy(PerlInterpreter *my_perl) = 0; - virtual void PerlFree(PerlInterpreter *my_perl) = 0; + virtual int PerlCreate(PerlInterpreter *my_perl) = 0; + virtual int PerlParse(PerlInterpreter *my_perl,int argc, char** argv, char** env) = 0; + virtual int PerlRun(PerlInterpreter *my_perl) = 0; + virtual int PerlDestroy(PerlInterpreter *my_perl) = 0; + virtual void PerlFree(PerlInterpreter *my_perl) = 0; - //virtual bool RegisterWithThreadTable(void)=0; - //virtual bool UnregisterWithThreadTable(void)=0; + //virtual bool RegisterWithThreadTable(void)=0; + //virtual bool UnregisterWithThreadTable(void)=0; }; extern "C" IPerlHost* AllocStdPerl(); diff -Nru perl-5.32.1/NetWare/Main.c perl-5.34.0/NetWare/Main.c --- perl-5.32.1/NetWare/Main.c 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/Main.c 2021-01-20 23:04:44.000000000 +0000 @@ -32,8 +32,8 @@ #include "clibstuf.h" #ifdef MPK_ON - #include - #include + #include + #include #endif //MPK_ON @@ -52,131 +52,131 @@ void main(void) { - fnInitGpfGlobals(); // For importing the CLIB calls in place of the Watcom calls - SynchronizeStart(); // Don't allow anything else to happen until all the symbols are imported - #ifdef MPK_ON - ExitThread(TSR_THREAD, 0); - #else - ExitThread(TSR_THREAD, 0); - #endif + fnInitGpfGlobals(); // For importing the CLIB calls in place of the Watcom calls + SynchronizeStart(); // Don't allow anything else to happen until all the symbols are imported + #ifdef MPK_ON + ExitThread(TSR_THREAD, 0); + #else + ExitThread(TSR_THREAD, 0); + #endif } void ImportFromCLIB (unsigned int nlmHandle, void** psymbol, char* symbolName) { - *psymbol = ImportSymbol(nlmHandle, symbolName); - if (*psymbol == NULL) - { - ConsolePrintf("Symbol %s not found, unable to continue\n", symbolName); - exit(1); - } + *psymbol = ImportSymbol(nlmHandle, symbolName); + if (*psymbol == NULL) + { + ConsolePrintf("Symbol %s not found, unable to continue\n", symbolName); + exit(1); + } } void fnInitGpfGlobals(void) { - unsigned int nlmHandle = GetNLMHandle(); + unsigned int nlmHandle = GetNLMHandle(); - ImportFromCLIB(nlmHandle, &gpf___get_stdin, "__get_stdin"); - ImportFromCLIB(nlmHandle, &gpf___get_stdout, "__get_stdout"); - ImportFromCLIB(nlmHandle, &gpf___get_stderr, "__get_stderr"); - ImportFromCLIB(nlmHandle, &gpf_clearerr, "clearerr"); - ImportFromCLIB(nlmHandle, &gpf_fclose, "fclose"); - ImportFromCLIB(nlmHandle, &gpf_feof, "feof"); - ImportFromCLIB(nlmHandle, &gpf_ferror, "ferror"); - ImportFromCLIB(nlmHandle, &gpf_fflush, "fflush"); - ImportFromCLIB(nlmHandle, &gpf_fgetc, "fgetc"); - ImportFromCLIB(nlmHandle, &gpf_fgetpos, "fgetpos"); - ImportFromCLIB(nlmHandle, &gpf_fgets, "fgets"); - ImportFromCLIB(nlmHandle, &gpf_fopen, "fopen"); - ImportFromCLIB(nlmHandle, &gpf_fputc, "fputc"); - ImportFromCLIB(nlmHandle, &gpf_fputs, "fputs"); - ImportFromCLIB(nlmHandle, &gpf_fread, "fread"); - ImportFromCLIB(nlmHandle, &gpf_freopen, "freopen"); - ImportFromCLIB(nlmHandle, &gpf_fscanf, "fscanf"); - ImportFromCLIB(nlmHandle, &gpf_fseek, "fseek"); - ImportFromCLIB(nlmHandle, &gpf_fsetpos, "fsetpos"); - ImportFromCLIB(nlmHandle, &gpf_ftell, "ftell"); - ImportFromCLIB(nlmHandle, &gpf_fwrite, "fwrite"); - ImportFromCLIB(nlmHandle, &gpf_getc, "getc"); - ImportFromCLIB(nlmHandle, &gpf_getchar, "getchar"); - ImportFromCLIB(nlmHandle, &gpf_gets, "gets"); - ImportFromCLIB(nlmHandle, &gpf_perror, "perror"); - ImportFromCLIB(nlmHandle, &gpf_putc, "putc"); - ImportFromCLIB(nlmHandle, &gpf_putchar, "putchar"); - ImportFromCLIB(nlmHandle, &gpf_puts, "puts"); - ImportFromCLIB(nlmHandle, &gpf_rename, "rename"); - ImportFromCLIB(nlmHandle, &gpf_rewind, "rewind"); - ImportFromCLIB(nlmHandle, &gpf_scanf, "scanf"); - ImportFromCLIB(nlmHandle, &gpf_setbuf, "setbuf"); - ImportFromCLIB(nlmHandle, &gpf_setvbuf, "setvbuf"); - ImportFromCLIB(nlmHandle, &gpf_sscanf, "sscanf"); - ImportFromCLIB(nlmHandle, &gpf_tmpfile, "tmpfile"); - ImportFromCLIB(nlmHandle, &gpf_tmpnam, "tmpnam"); - ImportFromCLIB(nlmHandle, &gpf_ungetc, "ungetc"); - ImportFromCLIB(nlmHandle, &gpf_vfscanf, "vfscanf"); - ImportFromCLIB(nlmHandle, &gpf_vscanf, "vscanf"); - ImportFromCLIB(nlmHandle, &gpf_vsscanf, "vsscanf"); - ImportFromCLIB(nlmHandle, &gpf_fdopen, "fdopen"); - ImportFromCLIB(nlmHandle, &gpf_fileno, "fileno"); - ImportFromCLIB(nlmHandle, &gpf_cgets, "cgets"); - ImportFromCLIB(nlmHandle, &gpf_cprintf, "cprintf"); - ImportFromCLIB(nlmHandle, &gpf_cputs, "cputs"); - ImportFromCLIB(nlmHandle, &gpf_cscanf, "cscanf"); - ImportFromCLIB(nlmHandle, &gpf_fcloseall, "fcloseall"); - ImportFromCLIB(nlmHandle, &gpf_fgetchar, "fgetchar"); - ImportFromCLIB(nlmHandle, &gpf_flushall, "flushall"); - ImportFromCLIB(nlmHandle, &gpf_fputchar, "fputchar"); - ImportFromCLIB(nlmHandle, &gpf_getch, "getch"); - ImportFromCLIB(nlmHandle, &gpf_getche, "getche"); - ImportFromCLIB(nlmHandle, &gpf_putch, "putch"); - ImportFromCLIB(nlmHandle, &gpf_ungetch, "ungetch"); - ImportFromCLIB(nlmHandle, &gpf_vcprintf, "vcprintf"); - ImportFromCLIB(nlmHandle, &gpf_vcscanf, "vcscanf"); - - ImportFromCLIB(nlmHandle, &gpf_memchr, "memchr"); - ImportFromCLIB(nlmHandle, &gpf_memcmp, "memcmp"); - ImportFromCLIB(nlmHandle, &gpf_memcpy, "memcpy"); - ImportFromCLIB(nlmHandle, &gpf_memmove, "memmove"); - ImportFromCLIB(nlmHandle, &gpf_memset, "memset"); - ImportFromCLIB(nlmHandle, &gpf_memicmp, "memicmp"); - - ImportFromCLIB(nlmHandle, &gpf_strerror, "strerror"); - ImportFromCLIB(nlmHandle, &gpf_strtok_r, "strtok_r"); - - ImportFromCLIB(nlmHandle, &gpf_strcpy, "strcpy"); - ImportFromCLIB(nlmHandle, &gpf_strcat, "strcat"); - ImportFromCLIB(nlmHandle, &gpf_strchr, "strchr"); - ImportFromCLIB(nlmHandle, &gpf_strstr, "strstr"); - ImportFromCLIB(nlmHandle, &gpf_strcoll, "strcoll"); - ImportFromCLIB(nlmHandle, &gpf_strcspn, "strcspn"); - ImportFromCLIB(nlmHandle, &gpf_strpbrk, "strpbrk"); - ImportFromCLIB(nlmHandle, &gpf_strrchr, "strrchr"); - ImportFromCLIB(nlmHandle, &gpf_strrev, "strrev"); - ImportFromCLIB(nlmHandle, &gpf_strspn, "strspn"); - ImportFromCLIB(nlmHandle, &gpf_strupr, "strupr"); - ImportFromCLIB(nlmHandle, &gpf_strxfrm, "strxfrm"); - ImportFromCLIB(nlmHandle, &gpf_strcmp, "strcmp"); - ImportFromCLIB(nlmHandle, &gpf_stricmp, "stricmp"); - ImportFromCLIB(nlmHandle, &gpf_strtok, "strtok"); - ImportFromCLIB(nlmHandle, &gpf_strlen, "strlen"); - ImportFromCLIB(nlmHandle, &gpf_strncpy, "strncpy"); - ImportFromCLIB(nlmHandle, &gpf_strncat, "strncat"); - ImportFromCLIB(nlmHandle, &gpf_strncmp, "strncmp"); - ImportFromCLIB(nlmHandle, &gpf_strcmpi, "strcmpi"); - ImportFromCLIB(nlmHandle, &gpf_strnicmp, "strnicmp"); - ImportFromCLIB(nlmHandle, &gpf_strdup, "strdup"); - ImportFromCLIB(nlmHandle, &gpf_strlist, "strlist"); - ImportFromCLIB(nlmHandle, &gpf_strlwr, "strlwr"); - ImportFromCLIB(nlmHandle, &gpf_strnset, "strnset"); - ImportFromCLIB(nlmHandle, &gpf_strset, "strset"); - ImportFromCLIB(nlmHandle, &gpf_strtok_r, "strtok_r"); - ImportFromCLIB(nlmHandle, &gpf_printf, "printf"); - ImportFromCLIB(nlmHandle, &gpf_fprintf, "fprintf"); - ImportFromCLIB(nlmHandle, &gpf_sprintf, "sprintf"); - ImportFromCLIB(nlmHandle, &gpf_vprintf, "vprintf"); - ImportFromCLIB(nlmHandle, &gpf_vfprintf, "vfprintf"); - ImportFromCLIB(nlmHandle, &gpf_vsprintf, "vsprintf"); + ImportFromCLIB(nlmHandle, &gpf___get_stdin, "__get_stdin"); + ImportFromCLIB(nlmHandle, &gpf___get_stdout, "__get_stdout"); + ImportFromCLIB(nlmHandle, &gpf___get_stderr, "__get_stderr"); + ImportFromCLIB(nlmHandle, &gpf_clearerr, "clearerr"); + ImportFromCLIB(nlmHandle, &gpf_fclose, "fclose"); + ImportFromCLIB(nlmHandle, &gpf_feof, "feof"); + ImportFromCLIB(nlmHandle, &gpf_ferror, "ferror"); + ImportFromCLIB(nlmHandle, &gpf_fflush, "fflush"); + ImportFromCLIB(nlmHandle, &gpf_fgetc, "fgetc"); + ImportFromCLIB(nlmHandle, &gpf_fgetpos, "fgetpos"); + ImportFromCLIB(nlmHandle, &gpf_fgets, "fgets"); + ImportFromCLIB(nlmHandle, &gpf_fopen, "fopen"); + ImportFromCLIB(nlmHandle, &gpf_fputc, "fputc"); + ImportFromCLIB(nlmHandle, &gpf_fputs, "fputs"); + ImportFromCLIB(nlmHandle, &gpf_fread, "fread"); + ImportFromCLIB(nlmHandle, &gpf_freopen, "freopen"); + ImportFromCLIB(nlmHandle, &gpf_fscanf, "fscanf"); + ImportFromCLIB(nlmHandle, &gpf_fseek, "fseek"); + ImportFromCLIB(nlmHandle, &gpf_fsetpos, "fsetpos"); + ImportFromCLIB(nlmHandle, &gpf_ftell, "ftell"); + ImportFromCLIB(nlmHandle, &gpf_fwrite, "fwrite"); + ImportFromCLIB(nlmHandle, &gpf_getc, "getc"); + ImportFromCLIB(nlmHandle, &gpf_getchar, "getchar"); + ImportFromCLIB(nlmHandle, &gpf_gets, "gets"); + ImportFromCLIB(nlmHandle, &gpf_perror, "perror"); + ImportFromCLIB(nlmHandle, &gpf_putc, "putc"); + ImportFromCLIB(nlmHandle, &gpf_putchar, "putchar"); + ImportFromCLIB(nlmHandle, &gpf_puts, "puts"); + ImportFromCLIB(nlmHandle, &gpf_rename, "rename"); + ImportFromCLIB(nlmHandle, &gpf_rewind, "rewind"); + ImportFromCLIB(nlmHandle, &gpf_scanf, "scanf"); + ImportFromCLIB(nlmHandle, &gpf_setbuf, "setbuf"); + ImportFromCLIB(nlmHandle, &gpf_setvbuf, "setvbuf"); + ImportFromCLIB(nlmHandle, &gpf_sscanf, "sscanf"); + ImportFromCLIB(nlmHandle, &gpf_tmpfile, "tmpfile"); + ImportFromCLIB(nlmHandle, &gpf_tmpnam, "tmpnam"); + ImportFromCLIB(nlmHandle, &gpf_ungetc, "ungetc"); + ImportFromCLIB(nlmHandle, &gpf_vfscanf, "vfscanf"); + ImportFromCLIB(nlmHandle, &gpf_vscanf, "vscanf"); + ImportFromCLIB(nlmHandle, &gpf_vsscanf, "vsscanf"); + ImportFromCLIB(nlmHandle, &gpf_fdopen, "fdopen"); + ImportFromCLIB(nlmHandle, &gpf_fileno, "fileno"); + ImportFromCLIB(nlmHandle, &gpf_cgets, "cgets"); + ImportFromCLIB(nlmHandle, &gpf_cprintf, "cprintf"); + ImportFromCLIB(nlmHandle, &gpf_cputs, "cputs"); + ImportFromCLIB(nlmHandle, &gpf_cscanf, "cscanf"); + ImportFromCLIB(nlmHandle, &gpf_fcloseall, "fcloseall"); + ImportFromCLIB(nlmHandle, &gpf_fgetchar, "fgetchar"); + ImportFromCLIB(nlmHandle, &gpf_flushall, "flushall"); + ImportFromCLIB(nlmHandle, &gpf_fputchar, "fputchar"); + ImportFromCLIB(nlmHandle, &gpf_getch, "getch"); + ImportFromCLIB(nlmHandle, &gpf_getche, "getche"); + ImportFromCLIB(nlmHandle, &gpf_putch, "putch"); + ImportFromCLIB(nlmHandle, &gpf_ungetch, "ungetch"); + ImportFromCLIB(nlmHandle, &gpf_vcprintf, "vcprintf"); + ImportFromCLIB(nlmHandle, &gpf_vcscanf, "vcscanf"); + + ImportFromCLIB(nlmHandle, &gpf_memchr, "memchr"); + ImportFromCLIB(nlmHandle, &gpf_memcmp, "memcmp"); + ImportFromCLIB(nlmHandle, &gpf_memcpy, "memcpy"); + ImportFromCLIB(nlmHandle, &gpf_memmove, "memmove"); + ImportFromCLIB(nlmHandle, &gpf_memset, "memset"); + ImportFromCLIB(nlmHandle, &gpf_memicmp, "memicmp"); + + ImportFromCLIB(nlmHandle, &gpf_strerror, "strerror"); + ImportFromCLIB(nlmHandle, &gpf_strtok_r, "strtok_r"); + + ImportFromCLIB(nlmHandle, &gpf_strcpy, "strcpy"); + ImportFromCLIB(nlmHandle, &gpf_strcat, "strcat"); + ImportFromCLIB(nlmHandle, &gpf_strchr, "strchr"); + ImportFromCLIB(nlmHandle, &gpf_strstr, "strstr"); + ImportFromCLIB(nlmHandle, &gpf_strcoll, "strcoll"); + ImportFromCLIB(nlmHandle, &gpf_strcspn, "strcspn"); + ImportFromCLIB(nlmHandle, &gpf_strpbrk, "strpbrk"); + ImportFromCLIB(nlmHandle, &gpf_strrchr, "strrchr"); + ImportFromCLIB(nlmHandle, &gpf_strrev, "strrev"); + ImportFromCLIB(nlmHandle, &gpf_strspn, "strspn"); + ImportFromCLIB(nlmHandle, &gpf_strupr, "strupr"); + ImportFromCLIB(nlmHandle, &gpf_strxfrm, "strxfrm"); + ImportFromCLIB(nlmHandle, &gpf_strcmp, "strcmp"); + ImportFromCLIB(nlmHandle, &gpf_stricmp, "stricmp"); + ImportFromCLIB(nlmHandle, &gpf_strtok, "strtok"); + ImportFromCLIB(nlmHandle, &gpf_strlen, "strlen"); + ImportFromCLIB(nlmHandle, &gpf_strncpy, "strncpy"); + ImportFromCLIB(nlmHandle, &gpf_strncat, "strncat"); + ImportFromCLIB(nlmHandle, &gpf_strncmp, "strncmp"); + ImportFromCLIB(nlmHandle, &gpf_strcmpi, "strcmpi"); + ImportFromCLIB(nlmHandle, &gpf_strnicmp, "strnicmp"); + ImportFromCLIB(nlmHandle, &gpf_strdup, "strdup"); + ImportFromCLIB(nlmHandle, &gpf_strlist, "strlist"); + ImportFromCLIB(nlmHandle, &gpf_strlwr, "strlwr"); + ImportFromCLIB(nlmHandle, &gpf_strnset, "strnset"); + ImportFromCLIB(nlmHandle, &gpf_strset, "strset"); + ImportFromCLIB(nlmHandle, &gpf_strtok_r, "strtok_r"); + ImportFromCLIB(nlmHandle, &gpf_printf, "printf"); + ImportFromCLIB(nlmHandle, &gpf_fprintf, "fprintf"); + ImportFromCLIB(nlmHandle, &gpf_sprintf, "sprintf"); + ImportFromCLIB(nlmHandle, &gpf_vprintf, "vprintf"); + ImportFromCLIB(nlmHandle, &gpf_vfprintf, "vfprintf"); + ImportFromCLIB(nlmHandle, &gpf_vsprintf, "vsprintf"); } diff -Nru perl-5.32.1/NetWare/Makefile perl-5.34.0/NetWare/Makefile --- perl-5.32.1/NetWare/Makefile 2020-12-18 13:33:50.000000000 +0000 +++ perl-5.34.0/NetWare/Makefile 2021-05-04 23:28:28.000000000 +0000 @@ -86,7 +86,7 @@ # Here comes the CW tools - TO BE FILLED TO BUILD WITH CW - -MODULE_DESC = "Perl 5.32.1 for NetWare" +MODULE_DESC = "Perl 5.34.0 for NetWare" CCTYPE = CodeWarrior C_COMPILER = mwccnlm -c CPP_COMPILER = mwccnlm @@ -462,7 +462,7 @@ # versioned installation can be obtained by setting INST_TOP above to a # path that includes an arbitrary version string. # -INST_VER = \5.32.1 +INST_VER = \5.34.0 # # Comment this out if you DON'T want your perl installation to have @@ -701,7 +701,6 @@ ..\numeric.c \ ..\op.c \ ..\perl.c \ - ..\perlapi.c \ ..\perly.c \ ..\pp.c \ ..\pp_ctl.c \ diff -Nru perl-5.32.1/NetWare/netware.h perl-5.34.0/NetWare/netware.h --- perl-5.32.1/NetWare/netware.h 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/netware.h 2021-01-20 23:04:44.000000000 +0000 @@ -33,10 +33,10 @@ //structure that will be used by times routine. struct tms { - long tms_utime; - long tms_stime; - long tms_cutime; - long tms_cstime; + long tms_utime; + long tms_stime; + long tms_cutime; + long tms_cstime; }; #define PERL_GET_CONTEXT_DEFINED @@ -87,9 +87,9 @@ // Below is called in Run.c file when a perl script executes/runs. #ifdef MPK_ON - #define PERL_ASYNC_CHECK() kYieldThread(); + #define PERL_ASYNC_CHECK() kYieldThread(); #else - #define PERL_ASYNC_CHECK() ThreadSwitch(); + #define PERL_ASYNC_CHECK() ThreadSwitch(); #endif diff -Nru perl-5.32.1/NetWare/nw5.c perl-5.34.0/NetWare/nw5.c --- perl-5.32.1/NetWare/nw5.c 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/nw5.c 2021-01-20 23:04:44.000000000 +0000 @@ -65,8 +65,8 @@ void nw_abort(void) { - abort(); // Terminate the NLM application abnormally. - return; + abort(); // Terminate the NLM application abnormally. + return; } int @@ -84,8 +84,8 @@ void nw_clearerr(FILE *pf) { - if(pf) - clearerr(pf); + if(pf) + clearerr(pf); } int @@ -96,156 +96,156 @@ nw_closedir(DIR *dirp) { - return (closedir(dirp)); + return (closedir(dirp)); } void nw_setbuf(FILE *pf, char *buf) { - if(pf) - setbuf(pf, buf); + if(pf) + setbuf(pf, buf); } int nw_setmode(FILE *fp, int mode) { /** - // Commented since a few abends were happening in fnFpSetMode - int *dummy = 0; - return(fnFpSetMode(fp, mode, dummy)); + // Commented since a few abends were happening in fnFpSetMode + int *dummy = 0; + return(fnFpSetMode(fp, mode, dummy)); **/ - int handle = -1; - errno = 0; + int handle = -1; + errno = 0; - handle = fileno(fp); - if (errno) - { - errno = 0; - return -1; - } - return setmode(handle, mode); + handle = fileno(fp); + if (errno) + { + errno = 0; + return -1; + } + return setmode(handle, mode); } int nw_setvbuf(FILE *pf, char *buf, int type, size_t size) { - if(pf) - return setvbuf(pf, buf, type, size); - else - return -1; + if(pf) + return setvbuf(pf, buf, type, size); + else + return -1; } unsigned int nw_sleep(unsigned int t) { - delay(t*1000); // Put the thread to sleep for 't' seconds. Initially 't' is passed in milliseconds. + delay(t*1000); // Put the thread to sleep for 't' seconds. Initially 't' is passed in milliseconds. return 0; } int nw_spawnvp(int mode, char *cmdname, char **argv) { - // There is no pass-around environment on NetWare so we throw that - // argument away for now. + // There is no pass-around environment on NetWare so we throw that + // argument away for now. - // The function "spawnvp" does not work in all situations. Loading - // edit.nlm seems to work, for example, but the name of the file - // to edit does not appear to get passed correctly. Another problem - // is that on Netware, P_WAIT does not really work reliably. It only - // works with NLMs built to use CLIB (according to Nile Thayne). - // NLMs such as EDIT that are written directly to the system have no - // way of running synchronously from another process. The whole - // architecture on NetWare seems pretty busted, so we just support it - // as best we can. - // - // The spawnvp function only launches NLMs, it will not execute a command; - // the NetWare "system" function is used for that purpose. Unfortunately, "system" - // always returns success whether the command is successful or not or even - // if the command was not found! To avoid ambiguity--you can have both an - // NLM named "perl" and a system command named "perl"--we need to - // force perl scripts to carry the word "load" when loading an NLM. This - // might be clearer anyway. - - int ret = 0; - int argc = 0; - - - if (stricmp(cmdname, LOAD_COMMAND) == 0) - { - if (argv[1] != NULL) - ret = spawnvp(mode, argv[1], &argv[1]); - } - else - { - int i=0; - while (argv[i] != '\0') - i++; - argc = i; + // The function "spawnvp" does not work in all situations. Loading + // edit.nlm seems to work, for example, but the name of the file + // to edit does not appear to get passed correctly. Another problem + // is that on Netware, P_WAIT does not really work reliably. It only + // works with NLMs built to use CLIB (according to Nile Thayne). + // NLMs such as EDIT that are written directly to the system have no + // way of running synchronously from another process. The whole + // architecture on NetWare seems pretty busted, so we just support it + // as best we can. + // + // The spawnvp function only launches NLMs, it will not execute a command; + // the NetWare "system" function is used for that purpose. Unfortunately, "system" + // always returns success whether the command is successful or not or even + // if the command was not found! To avoid ambiguity--you can have both an + // NLM named "perl" and a system command named "perl"--we need to + // force perl scripts to carry the word "load" when loading an NLM. This + // might be clearer anyway. + + int ret = 0; + int argc = 0; + + + if (stricmp(cmdname, LOAD_COMMAND) == 0) + { + if (argv[1] != NULL) + ret = spawnvp(mode, argv[1], &argv[1]); + } + else + { + int i=0; + while (argv[i] != '\0') + i++; + argc = i; - fnSystemCommand(argv, argc); - } + fnSystemCommand(argv, argc); + } - return ret; + return ret; } int nw_execv(char *cmdname, char **argv) { - return spawnvp(P_WAIT, cmdname, (char **)argv); + return spawnvp(P_WAIT, cmdname, (char **)argv); } int nw_execvp(char *cmdname, char **argv) { - return nw_spawnvp(P_WAIT, cmdname, (char **)argv); + return nw_spawnvp(P_WAIT, cmdname, (char **)argv); } int nw_stat(const char *path, struct stat *sbuf) { - return (stat(path, sbuf)); + return (stat(path, sbuf)); } FILE * nw_stderr(void) { - return (stderr); + return (stderr); } FILE * nw_stdin(void) { - return (stdin); + return (stdin); } FILE * nw_stdout() { - return (stdout); + return (stdout); } long nw_telldir(DIR *dirp) { - dTHX; - Perl_croak(aTHX_ "The telldir() function is not implemented on NetWare\n"); - return 0l; + dTHX; + Perl_croak(aTHX_ "The telldir() function is not implemented on NetWare\n"); + return 0l; } int nw_times(struct tms *timebuf) { - clock_t now = clock(); + clock_t now = clock(); - timebuf->tms_utime = now; - timebuf->tms_stime = 0; - timebuf->tms_cutime = 0; - timebuf->tms_cstime = 0; + timebuf->tms_utime = now; + timebuf->tms_stime = 0; + timebuf->tms_cutime = 0; + timebuf->tms_cstime = 0; - return 0; + return 0; } FILE* @@ -257,37 +257,37 @@ int nw_uname(struct utsname *name) { - return(uname(name)); + return(uname(name)); } int nw_ungetc(int c, FILE *pf) { - if(pf) - return ungetc(c, pf); - else - return -1; + if(pf) + return ungetc(c, pf); + else + return -1; } int nw_unlink(const char *filename) { - return(unlink(filename)); + return(unlink(filename)); } int nw_utime(const char *filename, struct utimbuf *times) { - return(utime(filename, times)); + return(utime(filename, times)); } int nw_vfprintf(FILE *fp, const char *format, va_list args) { - if(fp) - return (vfprintf(fp, format, args)); - else - return -1; + if(fp) + return (vfprintf(fp, format, args)); + else + return -1; } int @@ -311,7 +311,7 @@ char * nw_crypt(const char *txt, const char *salt) { - dTHX; + dTHX; #ifdef HAVE_DES_FCRYPT dTHR; @@ -331,221 +331,221 @@ int nw_dup2(int fd1,int fd2) { - return dup2(fd1,fd2); + return dup2(fd1,fd2); } void* nw_dynaload(const char* filename) { - return NULL; + return NULL; } int nw_fclose(FILE *pf) { - if(pf) - return (fclose(pf)); - else - return -1; + if(pf) + return (fclose(pf)); + else + return -1; } FILE * nw_fdopen(int handle, const char *mode) { - return(fdopen(handle, mode)); + return(fdopen(handle, mode)); } int nw_feof(FILE *fp) { - if(fp) - return (feof(fp)); - else - return -1; + if(fp) + return (feof(fp)); + else + return -1; } int nw_ferror(FILE *fp) { - if(fp) - return (ferror(fp)); - else - return -1; + if(fp) + return (ferror(fp)); + else + return -1; } int nw_fflush(FILE *pf) { - if(pf) - return fflush(pf); - else - return -1; + if(pf) + return fflush(pf); + else + return -1; } int nw_fgetpos(FILE *pf, fpos_t *p) { - if(pf) - return fgetpos(pf, p); - else - return -1; + if(pf) + return fgetpos(pf, p); + else + return -1; } char* nw_fgets(char *s, int n, FILE *pf) { - if(pf) - return(fgets(s, n, pf)); - else - return NULL; + if(pf) + return(fgets(s, n, pf)); + else + return NULL; } int nw_fileno(FILE *pf) { - if(pf) - return fileno(pf); - else - return -1; + if(pf) + return fileno(pf); + else + return -1; } int nw_flock(int fd, int oper) { - dTHX; - Perl_croak(aTHX_ "The flock() function is not implemented on NetWare\n"); - return 0; + dTHX; + Perl_croak(aTHX_ "The flock() function is not implemented on NetWare\n"); + return 0; } FILE * nw_fopen(const char *filename, const char *mode) { - return (fopen(filename, mode)); + return (fopen(filename, mode)); } int nw_fputc(int c, FILE *pf) { - if(pf) - return fputc(c,pf); - else - return -1; + if(pf) + return fputc(c,pf); + else + return -1; } int nw_fputs(const char *s, FILE *pf) { - if(pf) - return fputs(s, pf); - else - return -1; + if(pf) + return fputs(s, pf); + else + return -1; } size_t nw_fread(void *buf, size_t size, size_t count, FILE *fp) { - if(fp) - return fread(buf, size, count, fp); - else - return -1; + if(fp) + return fread(buf, size, count, fp); + else + return -1; } FILE * nw_freopen(const char *path, const char *mode, FILE *stream) { - if(stream) - return freopen(path, mode, stream); - else - return NULL; + if(stream) + return freopen(path, mode, stream); + else + return NULL; } int nw_fseek(FILE *pf, long offset, int origin) { - if(pf) - return (fseek(pf, offset, origin)); - else - return -1; + if(pf) + return (fseek(pf, offset, origin)); + else + return -1; } int nw_fsetpos(FILE *pf, const fpos_t *p) { - if(pf) - return fsetpos(pf, p); - else - return -1; + if(pf) + return fsetpos(pf, p); + else + return -1; } long nw_ftell(FILE *pf) { - if(pf) - return ftell(pf); - else - return -1; + if(pf) + return ftell(pf); + else + return -1; } size_t nw_fwrite(const void *buf, size_t size, size_t count, FILE *fp) { - if(fp) - return fwrite(buf, size, count, fp); - else - return -1; + if(fp) + return fwrite(buf, size, count, fp); + else + return -1; } long nw_get_osfhandle(int fd) { - return 0l; + return 0l; } int nw_getc(FILE *pf) { - if(pf) - return getc(pf); - else - return -1; + if(pf) + return getc(pf); + else + return -1; } int nw_putc(int c, FILE *pf) { - if(pf) - return putc(c,pf); - else - return -1; + if(pf) + return putc(c,pf); + else + return -1; } int nw_fgetc(FILE *pf) { - if(pf) - return fgetc(pf); - else - return -1; + if(pf) + return fgetc(pf); + else + return -1; } int nw_getpid(void) { - return GetThreadGroupID(); + return GetThreadGroupID(); } int nw_kill(int pid, int sig) { - return 0; + return 0; } int nw_link(const char *oldname, const char *newname) { - return 0; + return 0; } long @@ -569,165 +569,165 @@ DIR * nw_opendir(const char *filename) { - char *buff = NULL; - int len = 0; - DIR *ret = NULL; - - len = strlen(filename); - buff = malloc(len + 5); - if (buff) { - strcpy(buff, filename); - if (buff[len-1]=='/' || buff[len-1]=='\\') { - buff[--len] = 0; - } - strcpy(buff+len, "/*.*"); - ret = opendir(buff); - free (buff); - buff = NULL; - return ret; - } else { - return NULL; - } + char *buff = NULL; + int len = 0; + DIR *ret = NULL; + + len = strlen(filename); + buff = malloc(len + 5); + if (buff) { + strcpy(buff, filename); + if (buff[len-1]=='/' || buff[len-1]=='\\') { + buff[--len] = 0; + } + strcpy(buff+len, "/*.*"); + ret = opendir(buff); + free (buff); + buff = NULL; + return ret; + } else { + return NULL; + } } int nw_open(const char *path, int flag, ...) { - va_list ap; - int pmode = -1; + va_list ap; + int pmode = -1; - va_start(ap, flag); + va_start(ap, flag); pmode = va_arg(ap, int); va_end(ap); - if (stricmp(path, "/dev/null")==0) - path = "NWNUL"; + if (stricmp(path, "/dev/null")==0) + path = "NWNUL"; - return open(path, flag, pmode); + return open(path, flag, pmode); } int nw_open_osfhandle(long handle, int flags) { - return 0; + return 0; } unsigned long nw_os_id(void) { - return 0l; + return 0l; } int nw_Pipe(int* a, int* e) { - int ret = 0; + int ret = 0; - errno = 0; - ret = pipe(a); - if(errno) - e = &errno; + errno = 0; + ret = pipe(a); + if(errno) + e = &errno; - return ret; + return ret; } FILE* nw_Popen(char* command, char* mode, int* e) { - int i = -1; + int i = -1; - FILE* ret = NULL; - PTEMPPIPEFILE ptpf = NULL; + FILE* ret = NULL; + PTEMPPIPEFILE ptpf = NULL; - // this callback is supposed to call _popen, which spawns an - // asynchronous command and opens a pipe to it. The returned - // file handle can be read or written to; if read, it represents - // stdout of the called process and will return EOF when the - // called process finishes. If written to, it represents stdin - // of the called process. Naturally _popen is not available on - // NetWare so we must do some fancy stuff to simulate it. We will - // redirect to and from temp files; this has the side effect - // of having to run the process synchronously rather than - // asynchronously. This means that you will only be able to do - // this with CLIB NLMs built to run on the calling thread. - - errno = 0; - - ptpf1[iPopenCount] = (PTEMPPIPEFILE) malloc(sizeof(TEMPPIPEFILE)); - if (!ptpf1[iPopenCount]) - return NULL; - - ptpf = ptpf1[iPopenCount]; - iPopenCount ++; - if(iPopenCount > MAX_PIPE_RECURSION) - iPopenCount = MAX_PIPE_RECURSION; // Limit to the max no of pipes to be open recursively. - - fnTempPipeFile(ptpf); - ret = fnPipeFileOpen((PTEMPPIPEFILE) ptpf, (char *) command, (char *) mode); - if (ret) - File1[iPopenCount-1] = ret; // Store the obtained Pipe file handle. - else - { // Pipe file not obtained. So free the allocated memory. - if(ptpf1[iPopenCount-1]) - { - free(ptpf1[iPopenCount-1]); - ptpf1[iPopenCount-1] = NULL; - ptpf = NULL; - iPopenCount --; - } - } + // this callback is supposed to call _popen, which spawns an + // asynchronous command and opens a pipe to it. The returned + // file handle can be read or written to; if read, it represents + // stdout of the called process and will return EOF when the + // called process finishes. If written to, it represents stdin + // of the called process. Naturally _popen is not available on + // NetWare so we must do some fancy stuff to simulate it. We will + // redirect to and from temp files; this has the side effect + // of having to run the process synchronously rather than + // asynchronously. This means that you will only be able to do + // this with CLIB NLMs built to run on the calling thread. + + errno = 0; + + ptpf1[iPopenCount] = (PTEMPPIPEFILE) malloc(sizeof(TEMPPIPEFILE)); + if (!ptpf1[iPopenCount]) + return NULL; + + ptpf = ptpf1[iPopenCount]; + iPopenCount ++; + if(iPopenCount > MAX_PIPE_RECURSION) + iPopenCount = MAX_PIPE_RECURSION; // Limit to the max no of pipes to be open recursively. + + fnTempPipeFile(ptpf); + ret = fnPipeFileOpen((PTEMPPIPEFILE) ptpf, (char *) command, (char *) mode); + if (ret) + File1[iPopenCount-1] = ret; // Store the obtained Pipe file handle. + else + { // Pipe file not obtained. So free the allocated memory. + if(ptpf1[iPopenCount-1]) + { + free(ptpf1[iPopenCount-1]); + ptpf1[iPopenCount-1] = NULL; + ptpf = NULL; + iPopenCount --; + } + } - if (errno) - e = &errno; + if (errno) + e = &errno; - return ret; + return ret; } int nw_Pclose(FILE* file, int* e) { - int i=0, j=0; + int i=0, j=0; - errno = 0; + errno = 0; - if(file) - { - if(iPopenCount > 0) - { - for (i=0; i 0) + { + for (i=0; i': - case '<': - case '|': - if (!inquote) - return TRUE; - default: - break; - } - ++ptr; + switch(*ptr) { + case '%': + return TRUE; + case '\'': + case '\"': + if (inquote) { + if (quote == *ptr) { + inquote = 0; + quote = '\0'; + } + } + else { + quote = *ptr; + inquote++; + } + break; + case '>': + case '<': + case '|': + if (!inquote) + return TRUE; + default: + break; + } + ++ptr; } return FALSE; } @@ -1110,7 +1110,7 @@ int fork(void) { - return 0; + return 0; } @@ -1118,5 +1118,5 @@ int Perl_Ireentrant_buffer_ptr(aTHX) { - return 0; + return 0; } diff -Nru perl-5.32.1/NetWare/nw5sck.c perl-5.34.0/NetWare/nw5sck.c --- perl-5.32.1/NetWare/nw5sck.c 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/nw5sck.c 2021-01-20 23:04:44.000000000 +0000 @@ -57,50 +57,50 @@ SOCKET nw_accept(SOCKET s, struct sockaddr *addr, int *addrlen) { - return ((SOCKET)(accept(s, addr, addrlen))); + return ((SOCKET)(accept(s, addr, addrlen))); } int nw_bind(SOCKET s, const struct sockaddr *addr, int addrlen) { - return ((int)bind(s, (struct sockaddr *)addr, addrlen)); + return ((int)bind(s, (struct sockaddr *)addr, addrlen)); } int nw_connect(SOCKET s, const struct sockaddr *addr, int addrlen) { - return((int)connect(s, (struct sockaddr *)addr, addrlen)); + return((int)connect(s, (struct sockaddr *)addr, addrlen)); } void nw_endhostent() { - endhostent(); + endhostent(); } void nw_endnetent() { - endnetent(); + endnetent(); } void nw_endprotoent() { - endprotoent(); + endprotoent(); } void nw_endservent() { - endservent(); + endservent(); } struct hostent * nw_gethostent() { - return(gethostent()); + return(gethostent()); } struct netent * @@ -118,7 +118,7 @@ struct hostent * nw_gethostbyname(const char *name) { - return(gethostbyname((char*)name)); + return(gethostbyname((char*)name)); } int @@ -130,13 +130,13 @@ struct hostent * nw_gethostbyaddr(const char *addr, int len, int type) { - return(gethostbyaddr((char*)addr, len, type)); + return(gethostbyaddr((char*)addr, len, type)); } struct netent * nw_getnetbyaddr(long net, int type) { - return(getnetbyaddr(net,type)); + return(getnetbyaddr(net,type)); } struct netent * @@ -148,19 +148,19 @@ int nw_getpeername(SOCKET s, struct sockaddr *addr, int *addrlen) { - return((int)getpeername(s, addr, addrlen)); + return((int)getpeername(s, addr, addrlen)); } struct protoent * nw_getprotobyname(const char *name) { - return ((struct protoent *)getprotobyname((char*)name)); + return ((struct protoent *)getprotobyname((char*)name)); } struct protoent * nw_getprotobynumber(int num) { - return ((struct protoent *)getprotobynumber(num)); + return ((struct protoent *)getprotobynumber(num)); } struct servent * @@ -186,7 +186,7 @@ nw_sethostent(int stayopen) { #ifdef HAS_SETHOSTENT - sethostent(stayopen); + sethostent(stayopen); #endif } @@ -194,7 +194,7 @@ nw_setnetent(int stayopen) { #ifdef HAS_SETNETENT - setnetent(stayopen); + setnetent(stayopen); #endif } @@ -202,7 +202,7 @@ nw_setprotoent(int stayopen) { #ifdef HAS_SETPROTENT - setprotoent(stayopen); + setprotoent(stayopen); #endif } @@ -210,26 +210,26 @@ nw_setservent(int stayopen) { #ifdef HAS_SETSERVENT - setservent(stayopen); + setservent(stayopen); #endif } int nw_setsockopt(SOCKET s, int level, int optname, const char* optval, int optlen) { - return setsockopt(s, level, optname, (char*)optval, optlen); + return setsockopt(s, level, optname, (char*)optval, optlen); } int nw_getsockname(SOCKET s, struct sockaddr *addr, int *addrlen) { - return getsockname(s, addr, addrlen); + return getsockname(s, addr, addrlen); } int nw_getsockopt(SOCKET s, int level, int optname, char *optval, int *optlen) { - return ((int)getsockopt(s, level, optname, optval, optlen)); + return ((int)getsockopt(s, level, optname, optval, optlen)); } unsigned long @@ -253,9 +253,9 @@ s = socket(af, type, protocol); #else if((s = socket(af, type, protocol)) == INVALID_SOCKET) - //errno = WSAGetLastError(); + //errno = WSAGetLastError(); else - s = s; + s = s; #endif /* USE_SOCKETS_AS_HANDLES */ return s; @@ -270,18 +270,18 @@ int nw_send(SOCKET s, const char *buf, int len, int flags) { - return(send(s,(char*)buf,len,flags)); + return(send(s,(char*)buf,len,flags)); } int nw_recv(SOCKET s, char *buf, int len, int flags) { - return (recv(s, buf, len, flags)); + return (recv(s, buf, len, flags)); } int nw_sendto(SOCKET s, const char *buf, int len, int flags, - const struct sockaddr *to, int tolen) + const struct sockaddr *to, int tolen) { return(sendto(s, (char*)buf, len, flags, (struct sockaddr *)to, tolen)); } @@ -293,16 +293,16 @@ int frombufsize = *fromlen; r = recvfrom(s, buf, len, flags, from, fromlen); - //Not sure if the is required - chksgp + //Not sure if the is required - chksgp if (r && frombufsize == *fromlen) - (void)nw_getpeername(s, from, fromlen); + (void)nw_getpeername(s, from, fromlen); return r; } int nw_select(int nfds, fd_set* rd, fd_set* wr, fd_set* ex, const struct timeval* timeout) { - return(select(nfds, rd, wr, ex, (struct timeval*)timeout)); + return(select(nfds, rd, wr, ex, (struct timeval*)timeout)); } int diff -Nru perl-5.32.1/NetWare/nw5thread.c perl-5.34.0/NetWare/nw5thread.c --- perl-5.32.1/NetWare/nw5thread.c 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/nw5thread.c 2021-01-20 23:04:44.000000000 +0000 @@ -36,7 +36,7 @@ # ifdef USE_DECLSPEC_THREAD Perl_current_context = t; # else - fnAddThreadCtx(PL_thr_key, t); + fnAddThreadCtx(PL_thr_key, t); # endif #endif } @@ -49,7 +49,7 @@ # ifdef USE_DECLSPEC_THREAD return Perl_current_context; # else - return(fnGetThreadCtx(PL_thr_key)); + return(fnGetThreadCtx(PL_thr_key)); # endif #else return NULL; @@ -63,12 +63,12 @@ { #if defined(USE_ITHREADS) # ifdef USE_DECLSPEC_THREAD - return TRUE; + return TRUE; # else - return(fnRemoveThreadCtx(PL_thr_key)); + return(fnRemoveThreadCtx(PL_thr_key)); # endif # else - return TRUE; + return TRUE; #endif } diff -Nru perl-5.32.1/NetWare/nw5thread.h perl-5.34.0/NetWare/nw5thread.h --- perl-5.32.1/NetWare/nw5thread.h 2020-12-18 10:04:35.000000000 +0000 +++ perl-5.34.0/NetWare/nw5thread.h 2021-01-20 23:04:44.000000000 +0000 @@ -37,10 +37,10 @@ extern "C" { #endif - #include - #include - #define kSUCCESS (0) - #define ERROR_INVALID_MUTEX (0x1010) + #include + #include + #define kSUCCESS (0) + #define ERROR_INVALID_MUTEX (0x1010) #ifdef __cplusplus } @@ -55,34 +55,34 @@ typedef MUTEX perl_mutex; # define MUTEX_INIT(m) \ STMT_START { \ - /*if ((*(m) = kMutexAlloc("NetWarePerlMutex")) == NULL) */\ - /*Perl_croak_nocontext("panic: MUTEX_ALLOC"); */\ - /*ConsolePrintf("Mutex Init %d\n",*(m)); */\ + /*if ((*(m) = kMutexAlloc("NetWarePerlMutex")) == NULL) */\ + /*Perl_croak_nocontext("panic: MUTEX_ALLOC"); */\ + /*ConsolePrintf("Mutex Init %d\n",*(m)); */\ } STMT_END # define MUTEX_LOCK(m) \ STMT_START { \ - /*ConsolePrintf("Mutex lock %d\n",*(m)); */\ - /*if (kMutexLock(*(m)) == ERROR_INVALID_MUTEX) */\ - /*Perl_croak_nocontext("panic: MUTEX_LOCK"); */\ + /*ConsolePrintf("Mutex lock %d\n",*(m)); */\ + /*if (kMutexLock(*(m)) == ERROR_INVALID_MUTEX) */\ + /*Perl_croak_nocontext("panic: MUTEX_LOCK"); */\ } STMT_END # define MUTEX_UNLOCK(m) \ STMT_START { \ - /*ConsolePrintf("Mutex unlock %d\n",*(m)); */\ - /*if (kMutexUnlock(*(m)) != kSUCCESS) \ - Perl_croak_nocontext("panic: MUTEX_UNLOCK"); */\ + /*ConsolePrintf("Mutex unlock %d\n",*(m)); */\ + /*if (kMutexUnlock(*(m)) != kSUCCESS) \ + Perl_croak_nocontext("panic: MUTEX_UNLOCK"); */\ } STMT_END # define MUTEX_DESTROY(m) \ STMT_START { \ - /*ConsolePrintf("Mutex Destroy %d\n",*(m)); */\ - /*if (kMutexWaitCount(*(m)) == 0 ) */\ - /*{ */\ - /*PERL_SET_INTERP(NULL); *//*newly added CHKSGP???*/ \ - /*if (kMutexFree(*(m)) != kSUCCESS) */ \ - /*Perl_croak_nocontext("panic: MUTEX_FREE"); */\ - /*} */\ + /*ConsolePrintf("Mutex Destroy %d\n",*(m)); */\ + /*if (kMutexWaitCount(*(m)) == 0 ) */\ + /*{ */\ + /*PERL_SET_INTERP(NULL); *//*newly added CHKSGP???*/ \ + /*if (kMutexFree(*(m)) != kSUCCESS) */ \ + /*Perl_croak_nocontext("panic: MUTEX_FREE"); */\ + /*} */\ } STMT_END #else @@ -100,56 +100,56 @@ //For now let us just see when this happens -sgp. #define COND_INIT(c) \ STMT_START { \ - /*ConsolePrintf("In COND_INIT\n"); */\ + /*ConsolePrintf("In COND_INIT\n"); */\ } STMT_END /* (c)->waiters = 0; \ - (c)->sem = OpenLocalSemaphore (0); \ - if ((c)->sem == NULL) \ - Perl_croak_nocontext("panic: COND_INIT (%ld)",errno); \*/ + (c)->sem = OpenLocalSemaphore (0); \ + if ((c)->sem == NULL) \ + Perl_croak_nocontext("panic: COND_INIT (%ld)",errno); \*/ #define COND_SIGNAL(c) \ STMT_START { \ - /*ConsolePrintf("In COND_SIGNAL\n"); */\ + /*ConsolePrintf("In COND_SIGNAL\n"); */\ } STMT_END /*if ((c)->waiters > 0 && \ - SignalLocalSemaphore((c)->sem) != 0) \ - Perl_croak_nocontext("panic: COND_SIGNAL (%ld)",errno); \*/ + SignalLocalSemaphore((c)->sem) != 0) \ + Perl_croak_nocontext("panic: COND_SIGNAL (%ld)",errno); \*/ #define COND_BROADCAST(c) \ STMT_START { \ - /*ConsolePrintf("In COND_BROADCAST\n"); */\ + /*ConsolePrintf("In COND_BROADCAST\n"); */\ } STMT_END - /*if ((c)->waiters > 0 ) { \ - int count; \ - for(count=0; count<(c)->waiters; count++) { \ - if(SignalLocalSemaphore((c)->sem) != 0) \ - Perl_croak_nocontext("panic: COND_BROADCAST (%ld)",GetLastError());\ - } \ - } \*/ + /*if ((c)->waiters > 0 ) { \ + int count; \ + for(count=0; count<(c)->waiters; count++) { \ + if(SignalLocalSemaphore((c)->sem) != 0) \ + Perl_croak_nocontext("panic: COND_BROADCAST (%ld)",GetLastError());\ + } \ + } \*/ #define COND_WAIT(c, m) \ STMT_START { \ - /*ConsolePrintf("In COND_WAIT\n"); */\ + /*ConsolePrintf("In COND_WAIT\n"); */\ } STMT_END #define COND_DESTROY(c) \ STMT_START { \ - /*ConsolePrintf("In COND_DESTROY\n"); */\ + /*ConsolePrintf("In COND_DESTROY\n"); */\ } STMT_END /* (c)->waiters = 0; \ - if (CloseLocalSemaphore((c)->sem) != 0) \ - Perl_croak_nocontext("panic: COND_DESTROY (%ld)",errno); \*/ + if (CloseLocalSemaphore((c)->sem) != 0) \ + Perl_croak_nocontext("panic: COND_DESTROY (%ld)",errno); \*/ #if 0 #define DETACH(t) \ STMT_START { \ - if (CloseHandle((t)->self) == 0) { \ - MUTEX_UNLOCK(&(t)->mutex); \ - Perl_croak_nocontext("panic: DETACH"); \ - } \ + if (CloseHandle((t)->self) == 0) { \ + MUTEX_UNLOCK(&(t)->mutex); \ + Perl_croak_nocontext("panic: DETACH"); \ + } \ } STMT_END #endif //#if 0 @@ -165,7 +165,6 @@ //Check the following, will be used in Thread extension - CHKSGP #define THREAD_RET_TYPE unsigned __stdcall -#define THREAD_RET_CAST(p) ((unsigned)(p)) #define INIT_THREADS NOOP @@ -173,7 +172,7 @@ //See the comment at the end of file nw5thread.c as to why PL_thr_key is not assigned - sgp #define ALLOC_THREAD_KEY \ STMT_START { \ - fnInitializeThreadCtx(); \ + fnInitializeThreadCtx(); \ } STMT_END diff -Nru perl-5.32.1/NetWare/nwhashcls.h perl-5.34.0/NetWare/nwhashcls.h --- perl-5.32.1/NetWare/nwhashcls.h 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/nwhashcls.h 2021-01-20 23:04:44.000000000 +0000 @@ -22,8 +22,8 @@ struct HASHNODE { - void *data; - struct HASHNODE *next; + void *data; + struct HASHNODE *next; }; typedef void (*HASHFORALLFUN)(void *, void *); @@ -31,22 +31,22 @@ class NWPerlHashList { private: - HASHNODE* MemListHash[BUCKET_SIZE]; + HASHNODE* MemListHash[BUCKET_SIZE]; void removeAll() const; public: - ~NWPerlHashList(); - NWPerlHashList(); - int insert(void *lData); - int remove(void *lData); + ~NWPerlHashList(); + NWPerlHashList(); + int insert(void *lData); + int remove(void *lData); void forAll( void (*)(void *, void*), void * ) const; }; struct KEYHASHNODE { - void *key; - void *data; - KEYHASHNODE *next; + void *key; + void *data; + KEYHASHNODE *next; }; /** @@ -55,16 +55,16 @@ class NWPerlKeyHashList { private: - KEYHASHNODE* MemListHash[BUCKET_SIZE]; + KEYHASHNODE* MemListHash[BUCKET_SIZE]; void removeAll() const; public: - ~NWPerlKeyHashList(); - NWPerlKeyHashList(); - int insert(void *key, void *lData); - int remove(void *key); + ~NWPerlKeyHashList(); + NWPerlKeyHashList(); + int insert(void *key, void *lData); + int remove(void *key); void forAll( void (*)(void *, void*), void * ) const; - int find(void *key, void **pData); + int find(void *key, void **pData); }; **/ diff -Nru perl-5.32.1/NetWare/Nwmain.c perl-5.34.0/NetWare/Nwmain.c --- perl-5.32.1/NetWare/Nwmain.c 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/Nwmain.c 2021-01-20 23:04:44.000000000 +0000 @@ -35,8 +35,8 @@ #include "clibstuf.h" #ifdef MPK_ON - #include - #include + #include + #include #endif //MPK_ON @@ -44,9 +44,9 @@ // so it should be okay for this to be global. // #ifdef MPK_ON - THREAD gThreadHandle; + THREAD gThreadHandle; #else - int gThreadGroupID = -1; + int gThreadGroupID = -1; #endif //MPK_ON @@ -77,8 +77,8 @@ // typedef struct tagScriptData { - char *m_commandLine; - BOOL m_fromConsole; + char *m_commandLine; + BOOL m_fromConsole; }ScriptData; @@ -131,10 +131,10 @@ Function : main Description : Called when the NLM is first loaded. Registers the command-line handler - and then terminates-stay-resident. + and then terminates-stay-resident. Parameters : argc (IN) - No of Input strings. - argv (IN) - Array of Input strings. + argv (IN) - Array of Input strings. Returns : Nothing. @@ -142,117 +142,117 @@ void main(int argc, char *argv[]) { - char sysCmdLine[MAX_COMMAND_SIZE] = {'\0'}; - char cmdLineCopy[sizeof(PERL_COMMAND_NAME)+sizeof(sysCmdLine)+2] = {'\0'}; + char sysCmdLine[MAX_COMMAND_SIZE] = {'\0'}; + char cmdLineCopy[sizeof(PERL_COMMAND_NAME)+sizeof(sysCmdLine)+2] = {'\0'}; - ScriptData* psdata = NULL; + ScriptData* psdata = NULL; - // Keep this thread alive, since we use the thread group id of this thread to allocate memory on. - // When we unload the NLM, clib will tear the thread down. - // - #ifdef MPK_ON - gThreadHandle = kCurrentThread(); - #else - gThreadGroupID = GetThreadGroupID (); - #endif //MPK_ON - - signal (SIGTERM, fnSigTermHandler); - fnInitGpfGlobals(); // For importing the CLIB calls in place of the Watcom calls - fnInitializeThreadInfo(); + // Keep this thread alive, since we use the thread group id of this thread to allocate memory on. + // When we unload the NLM, clib will tear the thread down. + // + #ifdef MPK_ON + gThreadHandle = kCurrentThread(); + #else + gThreadGroupID = GetThreadGroupID (); + #endif //MPK_ON + + signal (SIGTERM, fnSigTermHandler); + fnInitGpfGlobals(); // For importing the CLIB calls in place of the Watcom calls + fnInitializeThreadInfo(); // Ensure that we have a "temp" directory - fnSetupNamespace(); - if (access(NWDEFPERLTEMP, 0) != 0) - mkdir(NWDEFPERLTEMP); - - // Create the file NUL if not present. This is done only once per NLM load. - // This is required for -e. - // Earlier versions were creating temporary files (in perl.c file) for -e. - // Now, the technique of creating temporary files are removed since they were - // fragile or insecure or slow. It now uses the memory by setting - // the BIT_BUCKET to "nul" on Win32, which is equivalent to /dev/nul of Unix. - // Since there is no equivalent of /dev/nul on NetWare, the work-around is that - // we create a file called "nul" and the BIT_BUCKET is set to "nul". - // This makes sure that -e works on NetWare too without the creation of temporary files - // in -e code in perl.c - { - char sNUL[MAX_DN_BYTES] = {'\0'}; - - strcpy(sNUL, NWDEFPERLROOT); - strcat(sNUL, "\\nwnul"); - if (access((const char *)sNUL, 0) != 0) - { - // The file, "nul" is not found and so create the file. - FILE *fp = NULL; - - fp = fopen((const char *)sNUL, (const char *)"w"); - fclose(fp); - } - } - - fnRegisterCommandLineHandler(); // Register the command line handler - SynchronizeStart(); // Restart the NLM startup process when using synchronization mode. - - fnGetPerlScreenName(sPerlScreenName); // Get the screen name. Done only once per NLM load. - - - // If the command line has two strings, then the first has to be "Perl" and the second is assumed - // to be a script to be run. If only one string (i.e., Perl) is input, then there is nothing to do! - // - if ((argc > 1) && getcmd(sysCmdLine)) - { - strcpy(cmdLineCopy, PERL_COMMAND_NAME); - strcat(cmdLineCopy, (char *)" "); // Space between the Perl Command and the input script name. - strcat(cmdLineCopy, sysCmdLine); // The command line parameters built into - - // Create a safe copy of the command line and pass it to the - // new thread for parsing. The new thread will be responsible - // to delete it when it is finished with it. - // - psdata = (ScriptData *) malloc(sizeof(ScriptData)); - if (psdata) - { - psdata->m_commandLine = NULL; - psdata->m_commandLine = (char *) malloc(MAX_DN_BYTES * sizeof(char)); - if(psdata->m_commandLine) - { - strcpy(psdata->m_commandLine, cmdLineCopy); - psdata->m_fromConsole = TRUE; + fnSetupNamespace(); + if (access(NWDEFPERLTEMP, 0) != 0) + mkdir(NWDEFPERLTEMP); + + // Create the file NUL if not present. This is done only once per NLM load. + // This is required for -e. + // Earlier versions were creating temporary files (in perl.c file) for -e. + // Now, the technique of creating temporary files are removed since they were + // fragile or insecure or slow. It now uses the memory by setting + // the BIT_BUCKET to "nul" on Win32, which is equivalent to /dev/nul of Unix. + // Since there is no equivalent of /dev/nul on NetWare, the work-around is that + // we create a file called "nul" and the BIT_BUCKET is set to "nul". + // This makes sure that -e works on NetWare too without the creation of temporary files + // in -e code in perl.c + { + char sNUL[MAX_DN_BYTES] = {'\0'}; + + strcpy(sNUL, NWDEFPERLROOT); + strcat(sNUL, "\\nwnul"); + if (access((const char *)sNUL, 0) != 0) + { + // The file, "nul" is not found and so create the file. + FILE *fp = NULL; + + fp = fopen((const char *)sNUL, (const char *)"w"); + fclose(fp); + } + } + + fnRegisterCommandLineHandler(); // Register the command line handler + SynchronizeStart(); // Restart the NLM startup process when using synchronization mode. + + fnGetPerlScreenName(sPerlScreenName); // Get the screen name. Done only once per NLM load. + + + // If the command line has two strings, then the first has to be "Perl" and the second is assumed + // to be a script to be run. If only one string (i.e., Perl) is input, then there is nothing to do! + // + if ((argc > 1) && getcmd(sysCmdLine)) + { + strcpy(cmdLineCopy, PERL_COMMAND_NAME); + strcat(cmdLineCopy, (char *)" "); // Space between the Perl Command and the input script name. + strcat(cmdLineCopy, sysCmdLine); // The command line parameters built into + + // Create a safe copy of the command line and pass it to the + // new thread for parsing. The new thread will be responsible + // to delete it when it is finished with it. + // + psdata = (ScriptData *) malloc(sizeof(ScriptData)); + if (psdata) + { + psdata->m_commandLine = NULL; + psdata->m_commandLine = (char *) malloc(MAX_DN_BYTES * sizeof(char)); + if(psdata->m_commandLine) + { + strcpy(psdata->m_commandLine, cmdLineCopy); + psdata->m_fromConsole = TRUE; - #ifdef MPK_ON + #ifdef MPK_ON // kStartThread((char *)"ConsoleHandlerThread", fnLaunchPerl, NULL, PERL_COMMAND_STACK_SIZE, (void *)psdata); - // Establish a new thread within a new thread group. - BeginThreadGroup(fnLaunchPerl, NULL, PERL_COMMAND_STACK_SIZE, (void*)psdata); - #else - // Start a new thread in its own thread group - BeginThreadGroup(fnLaunchPerl, NULL, PERL_COMMAND_STACK_SIZE, (void*)psdata); - #endif //MPK_ON - } - else - { - free(psdata); - psdata = NULL; - return; - } - } - else - return; - } - - - // Keep this thread alive, since we use the thread group id of this thread to allocate memory on. - // When we unload the NLM, clib will tear the thread down. - // - #ifdef MPK_ON - kSuspendThread(gThreadHandle); - #else - SuspendThread(GetThreadID()); - #endif //MPK_ON + // Establish a new thread within a new thread group. + BeginThreadGroup(fnLaunchPerl, NULL, PERL_COMMAND_STACK_SIZE, (void*)psdata); + #else + // Start a new thread in its own thread group + BeginThreadGroup(fnLaunchPerl, NULL, PERL_COMMAND_STACK_SIZE, (void*)psdata); + #endif //MPK_ON + } + else + { + free(psdata); + psdata = NULL; + return; + } + } + else + return; + } + + + // Keep this thread alive, since we use the thread group id of this thread to allocate memory on. + // When we unload the NLM, clib will tear the thread down. + // + #ifdef MPK_ON + kSuspendThread(gThreadHandle); + #else + SuspendThread(GetThreadID()); + #endif //MPK_ON - return; + return; } @@ -271,55 +271,55 @@ void fnSigTermHandler(int sig) { - int k = 0; + int k = 0; - #ifdef MPK_ON - kResumeThread(gThreadHandle); - #endif //MPK_ON - - // Unregister the command line handler. - // - if (gCmdProcInit) - { - UnRegisterConsoleCommand (&gCmdParser); - gCmdProcInit = FALSE; - } - - // Free the global environ buffer - nw_freeenviron(); - - // Kill running scripts. - // - if (!fnTerminateThreadInfo()) - { - ConsolePrintf("Terminating Perl scripts...\n"); - gKillAll = TRUE; - - // fnTerminateThreadInfo will be run for 5 threads. If more threads/scripts are run, - // then the NLM will unload without terminating the thread info and leaks more memory. - // If this number is increased to reduce memory leaks, then it will unnecessarily take more time - // to unload when there are a smaller no of threads. Since this is a rare case, the no is kept as 5. - // - while (!fnTerminateThreadInfo() && k < 5) - { - nw_sleep(1); - k++; - } - } - - // Delete the file, "nul" if present since the NLM is unloaded. - { - char sNUL[MAX_DN_BYTES] = {'\0'}; - - strcpy(sNUL, NWDEFPERLROOT); - strcat(sNUL, "\\nwnul"); - if (access((const char *)sNUL, 0) == 0) - { - // The file, "nul" is found and so delete it. - unlink((const char *)sNUL); - } - } + #ifdef MPK_ON + kResumeThread(gThreadHandle); + #endif //MPK_ON + + // Unregister the command line handler. + // + if (gCmdProcInit) + { + UnRegisterConsoleCommand (&gCmdParser); + gCmdProcInit = FALSE; + } + + // Free the global environ buffer + nw_freeenviron(); + + // Kill running scripts. + // + if (!fnTerminateThreadInfo()) + { + ConsolePrintf("Terminating Perl scripts...\n"); + gKillAll = TRUE; + + // fnTerminateThreadInfo will be run for 5 threads. If more threads/scripts are run, + // then the NLM will unload without terminating the thread info and leaks more memory. + // If this number is increased to reduce memory leaks, then it will unnecessarily take more time + // to unload when there are a smaller no of threads. Since this is a rare case, the no is kept as 5. + // + while (!fnTerminateThreadInfo() && k < 5) + { + nw_sleep(1); + k++; + } + } + + // Delete the file, "nul" if present since the NLM is unloaded. + { + char sNUL[MAX_DN_BYTES] = {'\0'}; + + strcpy(sNUL, NWDEFPERLROOT); + strcat(sNUL, "\\nwnul"); + if (access((const char *)sNUL, 0) == 0) + { + // The file, "nul" is found and so delete it. + unlink((const char *)sNUL); + } + } } @@ -329,12 +329,12 @@ Function : fnCommandLineHandler Description : Gets called by OS when someone enters an unknown command at the system console, - after this routine is registered by RegisterConsoleCommand. - For the valid command we just spawn a thread with enough stack space - to actually run the script. + after this routine is registered by RegisterConsoleCommand. + For the valid command we just spawn a thread with enough stack space + to actually run the script. Parameters : screenID (IN) - id for the screen. - cmdLine (IN) - Command line string. + cmdLine (IN) - Command line string. Returns : Long. @@ -342,78 +342,78 @@ LONG fnCommandLineHandler (LONG screenID, BYTE * cmdLine) { - ScriptData* psdata=NULL; - int OsThrdGrpID = -1; - LONG retCode = CS_CMD_FOUND; - char* cptr = NULL; - - - #ifdef MPK_ON - // Initialisation for MPK_ON - #else - OsThrdGrpID = -1; - #endif //MPK_ON - - - #ifdef MPK_ON - // For MPK_ON - #else - if (gThreadGroupID != -1) - OsThrdGrpID = SetThreadGroupID (gThreadGroupID); - #endif //MPK_ON - - - cptr = fnSkipWhite(cmdLine); // Skip white spaces. - if ((strnicmp(cptr, PERL_COMMAND_NAME, strlen(PERL_COMMAND_NAME)) == 0) && - ((cptr[strlen(PERL_COMMAND_NAME)] == ' ') || - (cptr[strlen(PERL_COMMAND_NAME)] == '\t') || - (cptr[strlen(PERL_COMMAND_NAME)] == '\0'))) - { - // Create a safe copy of the command line and pass it to the new thread for parsing. - // The new thread will be responsible to delete it when it is finished with it. - // - psdata = (ScriptData *) malloc(sizeof(ScriptData)); - if (psdata) - { - psdata->m_commandLine = NULL; - psdata->m_commandLine = (char *) malloc(MAX_DN_BYTES * sizeof(char)); - if(psdata->m_commandLine) - { - strcpy(psdata->m_commandLine, (char *)cmdLine); - psdata->m_fromConsole = TRUE; + ScriptData* psdata=NULL; + int OsThrdGrpID = -1; + LONG retCode = CS_CMD_FOUND; + char* cptr = NULL; + + + #ifdef MPK_ON + // Initialisation for MPK_ON + #else + OsThrdGrpID = -1; + #endif //MPK_ON + + + #ifdef MPK_ON + // For MPK_ON + #else + if (gThreadGroupID != -1) + OsThrdGrpID = SetThreadGroupID (gThreadGroupID); + #endif //MPK_ON + + + cptr = fnSkipWhite(cmdLine); // Skip white spaces. + if ((strnicmp(cptr, PERL_COMMAND_NAME, strlen(PERL_COMMAND_NAME)) == 0) && + ((cptr[strlen(PERL_COMMAND_NAME)] == ' ') || + (cptr[strlen(PERL_COMMAND_NAME)] == '\t') || + (cptr[strlen(PERL_COMMAND_NAME)] == '\0'))) + { + // Create a safe copy of the command line and pass it to the new thread for parsing. + // The new thread will be responsible to delete it when it is finished with it. + // + psdata = (ScriptData *) malloc(sizeof(ScriptData)); + if (psdata) + { + psdata->m_commandLine = NULL; + psdata->m_commandLine = (char *) malloc(MAX_DN_BYTES * sizeof(char)); + if(psdata->m_commandLine) + { + strcpy(psdata->m_commandLine, (char *)cmdLine); + psdata->m_fromConsole = TRUE; - #ifdef MPK_ON + #ifdef MPK_ON // kStartThread((char *)"ConsoleHandlerThread", fnLaunchPerl, NULL, PERL_COMMAND_STACK_SIZE, (void *)psdata); - // Establish a new thread within a new thread group. - BeginThreadGroup(fnLaunchPerl, NULL, PERL_COMMAND_STACK_SIZE, (void*)psdata); - #else - // Start a new thread in its own thread group - BeginThreadGroup(fnLaunchPerl, NULL, PERL_COMMAND_STACK_SIZE, (void*)psdata); - #endif //MPK_ON - } - else - { - free(psdata); - psdata = NULL; - retCode = CS_CMD_NOT_FOUND; - } - } - else - retCode = CS_CMD_NOT_FOUND; - } - else - retCode = CS_CMD_NOT_FOUND; - - - #ifdef MPK_ON - // For MPK_ON - #else - if (OsThrdGrpID != -1) - SetThreadGroupID (OsThrdGrpID); - #endif //MPK_ON + // Establish a new thread within a new thread group. + BeginThreadGroup(fnLaunchPerl, NULL, PERL_COMMAND_STACK_SIZE, (void*)psdata); + #else + // Start a new thread in its own thread group + BeginThreadGroup(fnLaunchPerl, NULL, PERL_COMMAND_STACK_SIZE, (void*)psdata); + #endif //MPK_ON + } + else + { + free(psdata); + psdata = NULL; + retCode = CS_CMD_NOT_FOUND; + } + } + else + retCode = CS_CMD_NOT_FOUND; + } + else + retCode = CS_CMD_NOT_FOUND; + + + #ifdef MPK_ON + // For MPK_ON + #else + if (OsThrdGrpID != -1) + SetThreadGroupID (OsThrdGrpID); + #endif //MPK_ON - return retCode; + return retCode; } @@ -432,16 +432,16 @@ void fnRegisterCommandLineHandler(void) { - // Allocates resource tag for Console Command - if ((gCmdParser.RTag = - AllocateResourceTag (GetNLMHandle(), (char *)"Console Command", ConsoleCommandSignature)) != 0) - { - gCmdParser.parseRoutine = fnCommandLineHandler; // Set the Console Command parsing routine. - RegisterConsoleCommand (&gCmdParser); // Registers the Console Command parsing function - gCmdProcInit = TRUE; - } + // Allocates resource tag for Console Command + if ((gCmdParser.RTag = + AllocateResourceTag (GetNLMHandle(), (char *)"Console Command", ConsoleCommandSignature)) != 0) + { + gCmdParser.parseRoutine = fnCommandLineHandler; // Set the Console Command parsing routine. + RegisterConsoleCommand (&gCmdParser); // Registers the Console Command parsing function + gCmdProcInit = TRUE; + } - return; + return; } @@ -460,44 +460,44 @@ void fnSetupNamespace(void) { - SetCurrentNameSpace(NWOS2_NAME_SPACE); + SetCurrentNameSpace(NWOS2_NAME_SPACE); - //LATER: call SetTargetNameSpace(NWOS2_NAME_SPACE)? Currently, if - // I make this call, then CPerlExe::Rename fails in certain cases, - // and it isn't clear why. Looks like a CLIB bug... + //LATER: call SetTargetNameSpace(NWOS2_NAME_SPACE)? Currently, if + // I make this call, then CPerlExe::Rename fails in certain cases, + // and it isn't clear why. Looks like a CLIB bug... // SetTargetNameSpace(NWOS2_NAME_SPACE); - //Uncommented that above call, retaining the comment so that it will be easy - //to revert back if there is any problem - sgp - 10th May 2000 + //Uncommented that above call, retaining the comment so that it will be easy + //to revert back if there is any problem - sgp - 10th May 2000 - //Commented again, since Perl debugger had some problems because of - //the above call - sgp - 20th June 2000 + //Commented again, since Perl debugger had some problems because of + //the above call - sgp - 20th June 2000 - { - // if running on Moab, call UseAccurateCaseForPaths. This API - // does bad things on 4.11 so we call only for Moab. - PFGETFILESERVERMAJORVERSIONNUMBER pf_getfileservermajorversionnumber = NULL; - pf_getfileservermajorversionnumber = (PFGETFILESERVERMAJORVERSIONNUMBER) - ImportSymbol(GetNLMHandle(), (char *)"GetFileServerMajorVersionNumber"); - if (pf_getfileservermajorversionnumber && ((*pf_getfileservermajorversionnumber)() > 4)) - { - PFUSEACCURATECASEFORPATHS pf_useaccuratecaseforpaths = NULL; - pf_useaccuratecaseforpaths = (PFUSEACCURATECASEFORPATHS) - ImportSymbol(GetNLMHandle(), (char *)"UseAccurateCaseForPaths"); - if (pf_useaccuratecaseforpaths) - (*pf_useaccuratecaseforpaths)(TRUE); - { - PFUNAUGMENTASTERISK pf_unaugmentasterisk = NULL; - pf_unaugmentasterisk = (PFUNAUGMENTASTERISK) - ImportSymbol(GetNLMHandle(), (char *)"UnAugmentAsterisk"); - if (pf_unaugmentasterisk) - (*pf_unaugmentasterisk)(TRUE); - } - } - } + { + // if running on Moab, call UseAccurateCaseForPaths. This API + // does bad things on 4.11 so we call only for Moab. + PFGETFILESERVERMAJORVERSIONNUMBER pf_getfileservermajorversionnumber = NULL; + pf_getfileservermajorversionnumber = (PFGETFILESERVERMAJORVERSIONNUMBER) + ImportSymbol(GetNLMHandle(), (char *)"GetFileServerMajorVersionNumber"); + if (pf_getfileservermajorversionnumber && ((*pf_getfileservermajorversionnumber)() > 4)) + { + PFUSEACCURATECASEFORPATHS pf_useaccuratecaseforpaths = NULL; + pf_useaccuratecaseforpaths = (PFUSEACCURATECASEFORPATHS) + ImportSymbol(GetNLMHandle(), (char *)"UseAccurateCaseForPaths"); + if (pf_useaccuratecaseforpaths) + (*pf_useaccuratecaseforpaths)(TRUE); + { + PFUNAUGMENTASTERISK pf_unaugmentasterisk = NULL; + pf_unaugmentasterisk = (PFUNAUGMENTASTERISK) + ImportSymbol(GetNLMHandle(), (char *)"UnAugmentAsterisk"); + if (pf_unaugmentasterisk) + (*pf_unaugmentasterisk)(TRUE); + } + } + } - return; + return; } @@ -516,94 +516,94 @@ void fnLaunchPerl(void* context) { - char* defaultDir = NULL; - char curdir[_MAX_PATH] = {'\0'}; - ScriptData* psdata = (ScriptData *) context; - - unsigned int moduleHandle = 0; - int currentThreadGroupID = -1; - - #ifdef MPK_ON - kExitNetWare(); - #endif //MPK_ON - - errno = 0; - - if (psdata->m_fromConsole) - { - // get the default working directory name - // - defaultDir = fnNwGetEnvironmentStr("PERL_ROOT", NWDEFPERLROOT); - } - else - defaultDir = getcwd(curdir, sizeof(curdir)-1); - - // set long name space - // - fnSetupNamespace(); - - // make the working directory the current directory if from console - // - if (psdata->m_fromConsole) - chdir(defaultDir); - - // run the script - // - fnRunScript(psdata); - - // May have to check this, I am blindly calling UCSTerminate, irrespective of - // whether it is initialized or not - // Copied from the previous Perl - sgp - 31st Oct 2000 - moduleHandle = FindNLMHandle("UCSCORE.NLM"); - if (moduleHandle) - { - PFUCSTERMINATE ucsterminate = (PFUCSTERMINATE)ImportSymbol(moduleHandle, "therealUCSTerminate"); - if (ucsterminate!=NULL) - (*ucsterminate)(); - } - - if (psdata->m_fromConsole) - { - // change thread groups for the call to free the memory - // allocated before the new thread group was started - #ifdef MPK_ON - // For MPK_ON - #else - if (gThreadGroupID != -1) - currentThreadGroupID = SetThreadGroupID (gThreadGroupID); - #endif //MPK_ON - } - - // Free memory - if (psdata) - { - if(psdata->m_commandLine) - { - free(psdata->m_commandLine); - psdata->m_commandLine = NULL; - } - - free(psdata); - psdata = NULL; - context = NULL; - } - - #ifdef MPK_ON - // For MPK_ON - #else - if (currentThreadGroupID != -1) - SetThreadGroupID (currentThreadGroupID); - #endif //MPK_ON + char* defaultDir = NULL; + char curdir[_MAX_PATH] = {'\0'}; + ScriptData* psdata = (ScriptData *) context; + + unsigned int moduleHandle = 0; + int currentThreadGroupID = -1; + + #ifdef MPK_ON + kExitNetWare(); + #endif //MPK_ON + + errno = 0; + + if (psdata->m_fromConsole) + { + // get the default working directory name + // + defaultDir = fnNwGetEnvironmentStr("PERL_ROOT", NWDEFPERLROOT); + } + else + defaultDir = getcwd(curdir, sizeof(curdir)-1); + + // set long name space + // + fnSetupNamespace(); + + // make the working directory the current directory if from console + // + if (psdata->m_fromConsole) + chdir(defaultDir); + + // run the script + // + fnRunScript(psdata); + + // May have to check this, I am blindly calling UCSTerminate, irrespective of + // whether it is initialized or not + // Copied from the previous Perl - sgp - 31st Oct 2000 + moduleHandle = FindNLMHandle("UCSCORE.NLM"); + if (moduleHandle) + { + PFUCSTERMINATE ucsterminate = (PFUCSTERMINATE)ImportSymbol(moduleHandle, "therealUCSTerminate"); + if (ucsterminate!=NULL) + (*ucsterminate)(); + } + + if (psdata->m_fromConsole) + { + // change thread groups for the call to free the memory + // allocated before the new thread group was started + #ifdef MPK_ON + // For MPK_ON + #else + if (gThreadGroupID != -1) + currentThreadGroupID = SetThreadGroupID (gThreadGroupID); + #endif //MPK_ON + } + + // Free memory + if (psdata) + { + if(psdata->m_commandLine) + { + free(psdata->m_commandLine); + psdata->m_commandLine = NULL; + } + + free(psdata); + psdata = NULL; + context = NULL; + } + + #ifdef MPK_ON + // For MPK_ON + #else + if (currentThreadGroupID != -1) + SetThreadGroupID (currentThreadGroupID); + #endif //MPK_ON - #ifdef MPK_ON + #ifdef MPK_ON // kExitThread(NULL); - #else - // just let the thread terminate by falling off the end of the - // function started by BeginThreadGroup + #else + // just let the thread terminate by falling off the end of the + // function started by BeginThreadGroup // ExitThread(EXIT_THREAD, 0); - #endif + #endif - return; + return; } @@ -622,459 +622,459 @@ void fnRunScript(ScriptData* psdata) { - char **av=NULL; - char **en=NULL; - int exitstatus = 1; - int i=0, j=0; - int *dummy = 0; - - PCOMMANDLINEPARSER pclp = NULL; - - // Set up the environment block. This will only work on - // on Moab; on 4.11 the environment block will be empty. - char** env = NULL; - - BOOL use_system_console = TRUE; - BOOL newscreen = FALSE; - int newscreenhandle = 0; - - // redirect stdin or stdout and run the script - FILE* redirOut = NULL; - FILE* redirIn = NULL; - FILE* redirErr = NULL; - FILE* stderr_fp = NULL; - - int stdin_fd=-1, stdin_fd_dup=-1; - int stdout_fd=-1, stdout_fd_dup=-1; - int stderr_fd=-1, stderr_fd_dup=-1; - - - // Main callback instance - // - if (fnRegisterWithThreadTable() == FALSE) - return; - - // parse the command line into argc/argv style: - // number of params and char array of params - // - pclp = (PCOMMANDLINEPARSER) malloc(sizeof(COMMANDLINEPARSER)); - if (!pclp) - { - fnUnregisterWithThreadTable(); - return; - } - - // Initialise the variables - pclp->m_isValid = TRUE; - pclp->m_redirInName = NULL; - pclp->m_redirOutName = NULL; - pclp->m_redirErrName = NULL; - pclp->m_redirBothName = NULL; - pclp->nextarg = NULL; - pclp->sSkippedToken = NULL; - pclp->m_argv = NULL; - pclp->new_argv = NULL; - - #ifdef MPK_ON - pclp->m_qSemaphore = NULL; - #else - pclp->m_qSemaphore = 0L; - #endif //MPK_ON - - pclp->m_noScreen = 0; - pclp->m_AutoDestroy = 0; - pclp->m_argc = 0; - pclp->m_argv_len = 1; - - // Allocate memory - pclp->m_argv = (char **) malloc(pclp->m_argv_len * sizeof(char *)); - if (pclp->m_argv == NULL) - { - free(pclp); - pclp = NULL; - - fnUnregisterWithThreadTable(); - return; - } - - pclp->m_argv[0] = (char *) malloc(MAX_DN_BYTES * sizeof(char)); - if (pclp->m_argv[0] == NULL) - { - free(pclp->m_argv); - pclp->m_argv=NULL; - - free(pclp); - pclp = NULL; - - fnUnregisterWithThreadTable(); - return; - } - - // Parse the command line - fnCommandLineParser(pclp, (char *)psdata->m_commandLine, FALSE); - if (!pclp->m_isValid) - { - if(pclp->m_argv) - { - for(i=0; im_argv_len; i++) - { - if(pclp->m_argv[i] != NULL) - { - free(pclp->m_argv[i]); - pclp->m_argv[i] = NULL; - } - } - - free(pclp->m_argv); - pclp->m_argv = NULL; - } - - if(pclp->nextarg) - { - free(pclp->nextarg); - pclp->nextarg = NULL; - } - if(pclp->sSkippedToken != NULL) - { - free(pclp->sSkippedToken); - pclp->sSkippedToken = NULL; - } - - if(pclp->m_redirInName) - { - free(pclp->m_redirInName); - pclp->m_redirInName = NULL; - } - if(pclp->m_redirOutName) - { - free(pclp->m_redirOutName); - pclp->m_redirOutName = NULL; - } - if(pclp->m_redirErrName) - { - free(pclp->m_redirErrName); - pclp->m_redirErrName = NULL; - } - if(pclp->m_redirBothName) - { - free(pclp->m_redirBothName); - pclp->m_redirBothName = NULL; - } - - // Signal a semaphore, if indicated by "-{" option, to indicate that - // the script has terminated and files are closed - // - if (pclp->m_qSemaphore != 0) - { - #ifdef MPK_ON - kSemaphoreSignal(pclp->m_qSemaphore); - #else - SignalLocalSemaphore(pclp->m_qSemaphore); - #endif //MPK_ON - } - - free(pclp); - pclp = NULL; - - fnUnregisterWithThreadTable(); - return; - } - - // Simulating a shell on NetWare can be difficult. If you don't - // create a new screen for the script to run in, you can output to - // the console but you can't get any input from the console. Therefore, - // every invocation of perl potentially needs its own screen unless - // you are running either "perl -h" or "perl -v" or you are redirecting - // stdin from a file. - // - // So we need to create a new screen and set that screen as the current - // screen when running any script launched from the console that is not - // "perl -h" or "perl -v" and is not redirecting stdin from a file. - // - // But it would be a little weird if we didn't create a new screen only - // in the case when redirecting stdin from a file; in only that case, - // stdout would be the console instead of a new screen. - // - // There is also the issue of standard err. In short, we might as well - // create a new screen no matter what is going on with redirection, just - // for the sake of consistency. - // - // In summary, we should a create a new screen and make that screen the - // current screen unless one of the following is true: - // * The command is "perl -h" - // * The command is "perl -v" - // * The script was launched by another perl script. In this case, - // the screen belonging to the parent perl script should probably be - // the same screen for this process. And it will be if use BeginThread - // instead of BeginThreadGroup when launching Perl from within a Perl - // script. - // - // In those cases where we create a new screen we should probably also display - // that screen. - // - - use_system_console = pclp->m_noScreen || - ((pclp->m_argc == 2) && (strcmp(pclp->m_argv[1], (char *)"-h") == 0)) || - ((pclp->m_argc == 2) && (strcmp(pclp->m_argv[1], (char *)"-v") == 0)); - - newscreen = (!use_system_console) && psdata->m_fromConsole; - - if (newscreen) - { - newscreenhandle = CreateScreen(sPerlScreenName, 0); - if (newscreenhandle) - DisplayScreen(newscreenhandle); - } - else if (use_system_console) - CreateScreen((char *)"System Console", 0); - - if (pclp->m_redirInName) - { - if ((stdin_fd = fileno(stdin)) != -1) - { - stdin_fd_dup = dup(stdin_fd); - if (stdin_fd_dup != -1) - { - redirIn = fdopen (stdin_fd_dup, (char const *)"r"); - if (redirIn) - stdin = freopen (pclp->m_redirInName, (char const *)"r", redirIn); - if (!stdin) - { - redirIn = NULL; - // undo the redirect, if possible - stdin = fdopen(stdin_fd, (char const *)"r"); - } - } - } - } - - /** - The below code stores the handle for the existing stdout to be used later and the existing stdout is closed. - stdout is then initialised to the new File pointer where the operations are done onto that. - Later (look below for the code), the saved stdout is restored back. - **/ - if (pclp->m_redirOutName) - { - if ((stdout_fd = fileno(stdout)) != -1) // Handle of the existing stdout. - { - stdout_fd_dup = dup(stdout_fd); - if (stdout_fd_dup != -1) - { - // Close the existing stdout. - fflush(stdout); // Write any unwritten data to the file. - - // New stdout - redirOut = fdopen (stdout_fd_dup, (char const *)"w"); - if (redirOut) - stdout = freopen (pclp->m_redirOutName, (char const *)"w", redirOut); - if (!stdout) - { - redirOut = NULL; - // Undo the redirection. - stdout = fdopen(stdout_fd, (char const *)"w"); - } - setbuf(stdout, NULL); // Unbuffered file pointer. - } - } - } - - if (pclp->m_redirErrName) - { - if ((stderr_fd = fileno(stderr)) != -1) - { - stderr_fd_dup = dup(stderr_fd); - if (stderr_fd_dup != -1) - { - fflush(stderr); - - redirErr = fdopen (stderr_fd_dup, (char const *)"w"); - if (redirErr) - stderr = freopen (pclp->m_redirErrName, (char const *)"w", redirErr); - if (!stderr) - { - redirErr = NULL; - // undo the redirect, if possible - stderr = fdopen(stderr_fd, (char const *)"w"); - } - setbuf(stderr, NULL); // Unbuffered file pointer. - } - } - } - - if (pclp->m_redirBothName) - { - if ((stdout_fd = fileno(stdout)) != -1) - { - stdout_fd_dup = dup(stdout_fd); - if (stdout_fd_dup != -1) - { - fflush(stdout); - - redirOut = fdopen (stdout_fd_dup, (char const *)"w"); - if (redirOut) - stdout = freopen (pclp->m_redirBothName, (char const *)"w", redirOut); - if (!stdout) - { - redirOut = NULL; - // undo the redirect, if possible - stdout = fdopen(stdout_fd, (char const *)"w"); - } - setbuf(stdout, NULL); // Unbuffered file pointer. - } - } - if ((stderr_fd = fileno(stderr)) != -1) - { - stderr_fp = stderr; - stderr = stdout; - } - } - - env = NULL; - fnSetUpEnvBlock(&env); // Set up the ENV block - - // Run the Perl script - exitstatus = RunPerl(pclp->m_argc, pclp->m_argv, env); - - // clean up any redirection - // - if (pclp->m_redirInName && redirIn) - { - fclose(stdin); - stdin = fdopen(stdin_fd, (char const *)"r"); // Put back the old handle for stdin. - } - - if (pclp->m_redirOutName && redirOut) - { - // Close the new stdout. - fflush(stdout); - fclose(stdout); - - // Put back the old handle for stdout. - stdout = fdopen(stdout_fd, (char const *)"w"); - setbuf(stdout, NULL); // Unbuffered file pointer. - } - - if (pclp->m_redirErrName && redirErr) - { - fflush(stderr); - fclose(stderr); - - stderr = fdopen(stderr_fd, (char const *)"w"); // Put back the old handle for stderr. - setbuf(stderr, NULL); // Unbuffered file pointer. - } - - if (pclp->m_redirBothName && redirOut) - { - stderr = stderr_fp; - - fflush(stdout); - fclose(stdout); - - stdout = fdopen(stdout_fd, (char const *)"w"); // Put back the old handle for stdout. - setbuf(stdout, NULL); // Unbuffered file pointer. - } - - - if (newscreen && newscreenhandle) - { - //added for --autodestroy switch - if(!pclp->m_AutoDestroy) - { - if ((redirOut == NULL) && (redirIn == NULL) && (!gKillAll)) - { - printf((char *)"\n\nPress any key to exit\n"); - getch(); - } - } - DestroyScreen(newscreenhandle); - } + char **av=NULL; + char **en=NULL; + int exitstatus = 1; + int i=0, j=0; + int *dummy = 0; + + PCOMMANDLINEPARSER pclp = NULL; + + // Set up the environment block. This will only work on + // on Moab; on 4.11 the environment block will be empty. + char** env = NULL; + + BOOL use_system_console = TRUE; + BOOL newscreen = FALSE; + int newscreenhandle = 0; + + // redirect stdin or stdout and run the script + FILE* redirOut = NULL; + FILE* redirIn = NULL; + FILE* redirErr = NULL; + FILE* stderr_fp = NULL; + + int stdin_fd=-1, stdin_fd_dup=-1; + int stdout_fd=-1, stdout_fd_dup=-1; + int stderr_fd=-1, stderr_fd_dup=-1; + + + // Main callback instance + // + if (fnRegisterWithThreadTable() == FALSE) + return; + + // parse the command line into argc/argv style: + // number of params and char array of params + // + pclp = (PCOMMANDLINEPARSER) malloc(sizeof(COMMANDLINEPARSER)); + if (!pclp) + { + fnUnregisterWithThreadTable(); + return; + } + + // Initialise the variables + pclp->m_isValid = TRUE; + pclp->m_redirInName = NULL; + pclp->m_redirOutName = NULL; + pclp->m_redirErrName = NULL; + pclp->m_redirBothName = NULL; + pclp->nextarg = NULL; + pclp->sSkippedToken = NULL; + pclp->m_argv = NULL; + pclp->new_argv = NULL; + + #ifdef MPK_ON + pclp->m_qSemaphore = NULL; + #else + pclp->m_qSemaphore = 0L; + #endif //MPK_ON + + pclp->m_noScreen = 0; + pclp->m_AutoDestroy = 0; + pclp->m_argc = 0; + pclp->m_argv_len = 1; + + // Allocate memory + pclp->m_argv = (char **) malloc(pclp->m_argv_len * sizeof(char *)); + if (pclp->m_argv == NULL) + { + free(pclp); + pclp = NULL; + + fnUnregisterWithThreadTable(); + return; + } + + pclp->m_argv[0] = (char *) malloc(MAX_DN_BYTES * sizeof(char)); + if (pclp->m_argv[0] == NULL) + { + free(pclp->m_argv); + pclp->m_argv=NULL; + + free(pclp); + pclp = NULL; + + fnUnregisterWithThreadTable(); + return; + } + + // Parse the command line + fnCommandLineParser(pclp, (char *)psdata->m_commandLine, FALSE); + if (!pclp->m_isValid) + { + if(pclp->m_argv) + { + for(i=0; im_argv_len; i++) + { + if(pclp->m_argv[i] != NULL) + { + free(pclp->m_argv[i]); + pclp->m_argv[i] = NULL; + } + } + + free(pclp->m_argv); + pclp->m_argv = NULL; + } + + if(pclp->nextarg) + { + free(pclp->nextarg); + pclp->nextarg = NULL; + } + if(pclp->sSkippedToken != NULL) + { + free(pclp->sSkippedToken); + pclp->sSkippedToken = NULL; + } + + if(pclp->m_redirInName) + { + free(pclp->m_redirInName); + pclp->m_redirInName = NULL; + } + if(pclp->m_redirOutName) + { + free(pclp->m_redirOutName); + pclp->m_redirOutName = NULL; + } + if(pclp->m_redirErrName) + { + free(pclp->m_redirErrName); + pclp->m_redirErrName = NULL; + } + if(pclp->m_redirBothName) + { + free(pclp->m_redirBothName); + pclp->m_redirBothName = NULL; + } + + // Signal a semaphore, if indicated by "-{" option, to indicate that + // the script has terminated and files are closed + // + if (pclp->m_qSemaphore != 0) + { + #ifdef MPK_ON + kSemaphoreSignal(pclp->m_qSemaphore); + #else + SignalLocalSemaphore(pclp->m_qSemaphore); + #endif //MPK_ON + } + + free(pclp); + pclp = NULL; + + fnUnregisterWithThreadTable(); + return; + } + + // Simulating a shell on NetWare can be difficult. If you don't + // create a new screen for the script to run in, you can output to + // the console but you can't get any input from the console. Therefore, + // every invocation of perl potentially needs its own screen unless + // you are running either "perl -h" or "perl -v" or you are redirecting + // stdin from a file. + // + // So we need to create a new screen and set that screen as the current + // screen when running any script launched from the console that is not + // "perl -h" or "perl -v" and is not redirecting stdin from a file. + // + // But it would be a little weird if we didn't create a new screen only + // in the case when redirecting stdin from a file; in only that case, + // stdout would be the console instead of a new screen. + // + // There is also the issue of standard err. In short, we might as well + // create a new screen no matter what is going on with redirection, just + // for the sake of consistency. + // + // In summary, we should a create a new screen and make that screen the + // current screen unless one of the following is true: + // * The command is "perl -h" + // * The command is "perl -v" + // * The script was launched by another perl script. In this case, + // the screen belonging to the parent perl script should probably be + // the same screen for this process. And it will be if use BeginThread + // instead of BeginThreadGroup when launching Perl from within a Perl + // script. + // + // In those cases where we create a new screen we should probably also display + // that screen. + // + + use_system_console = pclp->m_noScreen || + ((pclp->m_argc == 2) && (strcmp(pclp->m_argv[1], (char *)"-h") == 0)) || + ((pclp->m_argc == 2) && (strcmp(pclp->m_argv[1], (char *)"-v") == 0)); + + newscreen = (!use_system_console) && psdata->m_fromConsole; + + if (newscreen) + { + newscreenhandle = CreateScreen(sPerlScreenName, 0); + if (newscreenhandle) + DisplayScreen(newscreenhandle); + } + else if (use_system_console) + CreateScreen((char *)"System Console", 0); + + if (pclp->m_redirInName) + { + if ((stdin_fd = fileno(stdin)) != -1) + { + stdin_fd_dup = dup(stdin_fd); + if (stdin_fd_dup != -1) + { + redirIn = fdopen (stdin_fd_dup, (char const *)"r"); + if (redirIn) + stdin = freopen (pclp->m_redirInName, (char const *)"r", redirIn); + if (!stdin) + { + redirIn = NULL; + // undo the redirect, if possible + stdin = fdopen(stdin_fd, (char const *)"r"); + } + } + } + } + + /** + The below code stores the handle for the existing stdout to be used later and the existing stdout is closed. + stdout is then initialised to the new File pointer where the operations are done onto that. + Later (look below for the code), the saved stdout is restored back. + **/ + if (pclp->m_redirOutName) + { + if ((stdout_fd = fileno(stdout)) != -1) // Handle of the existing stdout. + { + stdout_fd_dup = dup(stdout_fd); + if (stdout_fd_dup != -1) + { + // Close the existing stdout. + fflush(stdout); // Write any unwritten data to the file. + + // New stdout + redirOut = fdopen (stdout_fd_dup, (char const *)"w"); + if (redirOut) + stdout = freopen (pclp->m_redirOutName, (char const *)"w", redirOut); + if (!stdout) + { + redirOut = NULL; + // Undo the redirection. + stdout = fdopen(stdout_fd, (char const *)"w"); + } + setbuf(stdout, NULL); // Unbuffered file pointer. + } + } + } + + if (pclp->m_redirErrName) + { + if ((stderr_fd = fileno(stderr)) != -1) + { + stderr_fd_dup = dup(stderr_fd); + if (stderr_fd_dup != -1) + { + fflush(stderr); + + redirErr = fdopen (stderr_fd_dup, (char const *)"w"); + if (redirErr) + stderr = freopen (pclp->m_redirErrName, (char const *)"w", redirErr); + if (!stderr) + { + redirErr = NULL; + // undo the redirect, if possible + stderr = fdopen(stderr_fd, (char const *)"w"); + } + setbuf(stderr, NULL); // Unbuffered file pointer. + } + } + } + + if (pclp->m_redirBothName) + { + if ((stdout_fd = fileno(stdout)) != -1) + { + stdout_fd_dup = dup(stdout_fd); + if (stdout_fd_dup != -1) + { + fflush(stdout); + + redirOut = fdopen (stdout_fd_dup, (char const *)"w"); + if (redirOut) + stdout = freopen (pclp->m_redirBothName, (char const *)"w", redirOut); + if (!stdout) + { + redirOut = NULL; + // undo the redirect, if possible + stdout = fdopen(stdout_fd, (char const *)"w"); + } + setbuf(stdout, NULL); // Unbuffered file pointer. + } + } + if ((stderr_fd = fileno(stderr)) != -1) + { + stderr_fp = stderr; + stderr = stdout; + } + } + + env = NULL; + fnSetUpEnvBlock(&env); // Set up the ENV block + + // Run the Perl script + exitstatus = RunPerl(pclp->m_argc, pclp->m_argv, env); + + // clean up any redirection + // + if (pclp->m_redirInName && redirIn) + { + fclose(stdin); + stdin = fdopen(stdin_fd, (char const *)"r"); // Put back the old handle for stdin. + } + + if (pclp->m_redirOutName && redirOut) + { + // Close the new stdout. + fflush(stdout); + fclose(stdout); + + // Put back the old handle for stdout. + stdout = fdopen(stdout_fd, (char const *)"w"); + setbuf(stdout, NULL); // Unbuffered file pointer. + } + + if (pclp->m_redirErrName && redirErr) + { + fflush(stderr); + fclose(stderr); + + stderr = fdopen(stderr_fd, (char const *)"w"); // Put back the old handle for stderr. + setbuf(stderr, NULL); // Unbuffered file pointer. + } + + if (pclp->m_redirBothName && redirOut) + { + stderr = stderr_fp; + + fflush(stdout); + fclose(stdout); + + stdout = fdopen(stdout_fd, (char const *)"w"); // Put back the old handle for stdout. + setbuf(stdout, NULL); // Unbuffered file pointer. + } + + + if (newscreen && newscreenhandle) + { + //added for --autodestroy switch + if(!pclp->m_AutoDestroy) + { + if ((redirOut == NULL) && (redirIn == NULL) && (!gKillAll)) + { + printf((char *)"\n\nPress any key to exit\n"); + getch(); + } + } + DestroyScreen(newscreenhandle); + } /** - // Commented since a few abends were happening in fnFpSetMode - // Set the mode for stdin and stdout - fnFpSetMode(stdin, O_TEXT, dummy); - fnFpSetMode(stdout, O_TEXT, dummy); + // Commented since a few abends were happening in fnFpSetMode + // Set the mode for stdin and stdout + fnFpSetMode(stdin, O_TEXT, dummy); + fnFpSetMode(stdout, O_TEXT, dummy); **/ - setmode(stdin, O_TEXT); - setmode(stdout, O_TEXT); + setmode(stdin, O_TEXT); + setmode(stdout, O_TEXT); - // Cleanup - if(pclp->m_argv) - { - for(i=0; im_argv_len; i++) - { - if(pclp->m_argv[i] != NULL) - { - free(pclp->m_argv[i]); - pclp->m_argv[i] = NULL; - } - } - - free(pclp->m_argv); - pclp->m_argv = NULL; - } - - if(pclp->nextarg) - { - free(pclp->nextarg); - pclp->nextarg = NULL; - } - if(pclp->sSkippedToken != NULL) - { - free(pclp->sSkippedToken); - pclp->sSkippedToken = NULL; - } - - if(pclp->m_redirInName) - { - free(pclp->m_redirInName); - pclp->m_redirInName = NULL; - } - if(pclp->m_redirOutName) - { - free(pclp->m_redirOutName); - pclp->m_redirOutName = NULL; - } - if(pclp->m_redirErrName) - { - free(pclp->m_redirErrName); - pclp->m_redirErrName = NULL; - } - if(pclp->m_redirBothName) - { - free(pclp->m_redirBothName); - pclp->m_redirBothName = NULL; - } - - // Signal a semaphore, if indicated by -{ option, to indicate that - // the script has terminated and files are closed - // - if (pclp->m_qSemaphore != 0) - { - #ifdef MPK_ON - kSemaphoreSignal(pclp->m_qSemaphore); - #else - SignalLocalSemaphore(pclp->m_qSemaphore); - #endif //MPK_ON - } - - if(pclp) - { - free(pclp); - pclp = NULL; - } - - if(env) - { - fnDestroyEnvBlock(env); - env = NULL; - } - - fnUnregisterWithThreadTable(); - // Remove the thread context set during Perl_set_context - Remove_Thread_Ctx(); + // Cleanup + if(pclp->m_argv) + { + for(i=0; im_argv_len; i++) + { + if(pclp->m_argv[i] != NULL) + { + free(pclp->m_argv[i]); + pclp->m_argv[i] = NULL; + } + } + + free(pclp->m_argv); + pclp->m_argv = NULL; + } + + if(pclp->nextarg) + { + free(pclp->nextarg); + pclp->nextarg = NULL; + } + if(pclp->sSkippedToken != NULL) + { + free(pclp->sSkippedToken); + pclp->sSkippedToken = NULL; + } + + if(pclp->m_redirInName) + { + free(pclp->m_redirInName); + pclp->m_redirInName = NULL; + } + if(pclp->m_redirOutName) + { + free(pclp->m_redirOutName); + pclp->m_redirOutName = NULL; + } + if(pclp->m_redirErrName) + { + free(pclp->m_redirErrName); + pclp->m_redirErrName = NULL; + } + if(pclp->m_redirBothName) + { + free(pclp->m_redirBothName); + pclp->m_redirBothName = NULL; + } + + // Signal a semaphore, if indicated by -{ option, to indicate that + // the script has terminated and files are closed + // + if (pclp->m_qSemaphore != 0) + { + #ifdef MPK_ON + kSemaphoreSignal(pclp->m_qSemaphore); + #else + SignalLocalSemaphore(pclp->m_qSemaphore); + #endif //MPK_ON + } + + if(pclp) + { + free(pclp); + pclp = NULL; + } + + if(env) + { + fnDestroyEnvBlock(env); + env = NULL; + } + + fnUnregisterWithThreadTable(); + // Remove the thread context set during Perl_set_context + Remove_Thread_Ctx(); - return; + return; } @@ -1093,74 +1093,74 @@ void fnSetUpEnvBlock(char*** penv) { - char** env = NULL; + char** env = NULL; - int sequence = 0; - char var[kMaxVariableNameLen+1] = {'\0'}; - char val[kMaxValueLen+1] = {'\0'}; - char both[kMaxVariableNameLen + kMaxValueLen + 5] = {'\0'}; - size_t len = kMaxValueLen; - int totalcnt = 0; - - while(scanenv( &sequence, var, &len, val )) - { - totalcnt++; - len = kMaxValueLen; - } - // add one for null termination - totalcnt++; - - env = (char **) malloc (totalcnt * sizeof(char *)); - if (env) - { - int cnt = 0; - int i = 0; - - sequence = 0; - len = kMaxValueLen; - - while( (cnt < (totalcnt-1)) && scanenv( &sequence, var, &len, val ) ) - { - val[len] = '\0'; - strcpy( both, var ); - strcat( both, (char *)"=" ); - strcat( both, val ); - - env[cnt] = (char *) malloc((sizeof(both)+1) * sizeof(char)); - if (env[cnt]) - { - strcpy(env[cnt], both); - cnt++; - } - else - { - for(i=0; im_commandLine = NULL; - psdata->m_commandLine = (char *) malloc(MAX_DN_BYTES * sizeof(char)); - - if(psdata->m_commandLine) - { - strcpy(psdata->m_commandLine, cmdLine); - psdata->m_fromConsole = FALSE; - - #ifdef MPK_ON - BeginThread(fnLaunchPerl, NULL, PERL_COMMAND_STACK_SIZE, (void*)psdata); - #else - // Start a new thread in its own thread group - BeginThread(fnLaunchPerl, NULL, PERL_COMMAND_STACK_SIZE, (void*)psdata); - #endif //MPK_ON - } - else - { - free(psdata); - psdata = NULL; - return; - } - } - else - return; + // Create a safe copy of the command line and pass it to the + // new thread for parsing. The new thread will be responsible + // to delete it when it is finished with it. + psdata = (ScriptData *) malloc(sizeof(ScriptData)); + if (psdata) + { + psdata->m_commandLine = NULL; + psdata->m_commandLine = (char *) malloc(MAX_DN_BYTES * sizeof(char)); + + if(psdata->m_commandLine) + { + strcpy(psdata->m_commandLine, cmdLine); + psdata->m_fromConsole = FALSE; + + #ifdef MPK_ON + BeginThread(fnLaunchPerl, NULL, PERL_COMMAND_STACK_SIZE, (void*)psdata); + #else + // Start a new thread in its own thread group + BeginThread(fnLaunchPerl, NULL, PERL_COMMAND_STACK_SIZE, (void*)psdata); + #endif //MPK_ON + } + else + { + free(psdata); + psdata = NULL; + return; + } + } + else + return; - return; + return; } @@ -1315,7 +1315,7 @@ Function : fnGetPerlScreenName Description : This function creates the Perl screen name. - Gets called from main only once when the Perl NLM loads. + Gets called from main only once when the Perl NLM loads. Parameters : sPerlScreenName (OUT) - Resultant Perl screen name. @@ -1325,30 +1325,30 @@ void fnGetPerlScreenName(char *sPerlScreenName) { - // HYAK: - // The logic for using 32 in the below array sizes is like this: - // The NetWare CLIB SDK documentation says that for base 2 conversion, - // this number must be minimum 8. Also, in the example of the documentation, - // 20 is used as the size and testing is done for bases from 2 upto 16. - // So, to simply chose a number above 20 and also keeping in mind not to reserve - // unnecessary big array sizes, I have chosen 32 ! - // Less than that may also suffice. - char sPerlRevision[32 * sizeof(char)] = {'\0'}; - char sPerlVersion[32 * sizeof(char)] = {'\0'}; - char sPerlSubVersion[32 * sizeof(char)] = {'\0'}; - - // The defines for PERL_REVISION, PERL_VERSION, PERL_SUBVERSION are available in - // patchlevel.h under root and gets included when perl.h is included. - // The number 10 below indicates base 10. - itoa(PERL_REVISION, sPerlRevision, 10); - itoa(PERL_VERSION, sPerlVersion, 10); - itoa(PERL_SUBVERSION, sPerlSubVersion, 10); - - // Concatenate substrings to get a string like Perl5.6.1 which is used as the screen name. - sprintf(sPerlScreenName, "%s%s.%s.%s", PERL_COMMAND_NAME, - sPerlRevision, sPerlVersion, sPerlSubVersion); + // HYAK: + // The logic for using 32 in the below array sizes is like this: + // The NetWare CLIB SDK documentation says that for base 2 conversion, + // this number must be minimum 8. Also, in the example of the documentation, + // 20 is used as the size and testing is done for bases from 2 upto 16. + // So, to simply chose a number above 20 and also keeping in mind not to reserve + // unnecessary big array sizes, I have chosen 32 ! + // Less than that may also suffice. + char sPerlRevision[32 * sizeof(char)] = {'\0'}; + char sPerlVersion[32 * sizeof(char)] = {'\0'}; + char sPerlSubVersion[32 * sizeof(char)] = {'\0'}; + + // The defines for PERL_REVISION, PERL_VERSION, PERL_SUBVERSION are available in + // patchlevel.h under root and gets included when perl.h is included. + // The number 10 below indicates base 10. + itoa(PERL_REVISION, sPerlRevision, 10); + itoa(PERL_VERSION, sPerlVersion, 10); + itoa(PERL_SUBVERSION, sPerlSubVersion, 10); + + // Concatenate substrings to get a string like Perl5.6.1 which is used as the screen name. + sprintf(sPerlScreenName, "%s%s.%s.%s", PERL_COMMAND_NAME, + sPerlRevision, sPerlVersion, sPerlSubVersion); - return; + return; } @@ -1376,13 +1376,13 @@ char *** nw_getenviron() { - if (genviron) - return (&genviron); // This might leak memory upto 11736 bytes on some versions of NetWare. + if (genviron) + return (&genviron); // This might leak memory upto 11736 bytes on some versions of NetWare. // return genviron; // Abending on some versions of NetWare. - else - fnSetUpEnvBlock(&genviron); + else + fnSetUpEnvBlock(&genviron); - return (&genviron); + return (&genviron); } @@ -1402,10 +1402,10 @@ void nw_freeenviron() { - if (genviron) - { - fnDestroyEnvBlock(genviron); - genviron=NULL; - } + if (genviron) + { + fnDestroyEnvBlock(genviron); + genviron=NULL; + } } diff -Nru perl-5.32.1/NetWare/nwperlhost.h perl-5.34.0/NetWare/nwperlhost.h --- perl-5.32.1/NetWare/nwperlhost.h 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/nwperlhost.h 2021-01-20 23:04:44.000000000 +0000 @@ -52,10 +52,10 @@ public: CPerlHost(void); CPerlHost(struct IPerlMem** ppMem, struct IPerlMem** ppMemShared, - struct IPerlMem** ppMemParse, struct IPerlEnv** ppEnv, - struct IPerlStdIO** ppStdIO, struct IPerlLIO** ppLIO, - struct IPerlDir** ppDir, struct IPerlSock** ppSock, - struct IPerlProc** ppProc); + struct IPerlMem** ppMemParse, struct IPerlEnv** ppEnv, + struct IPerlStdIO** ppStdIO, struct IPerlLIO** ppLIO, + struct IPerlDir** ppDir, struct IPerlSock** ppSock, + struct IPerlProc** ppProc); CPerlHost(const CPerlHost& host); virtual ~CPerlHost(void); @@ -73,21 +73,21 @@ inline void* Malloc(size_t size) { return m_pVMem->Malloc(size); }; inline void* Realloc(void* ptr, size_t size) { return m_pVMem->Realloc(ptr, size); }; inline void Free(void* ptr) { m_pVMem->Free(ptr); }; - inline void* Calloc(size_t num, size_t size){ return m_pVMem->Calloc(num, size); }; + inline void* Calloc(size_t num, size_t size){ return m_pVMem->Calloc(num, size); }; /* IPerlMemShared */ inline void* MallocShared(size_t size) { - return m_pVMemShared->Malloc(size); + return m_pVMemShared->Malloc(size); }; inline void* ReallocShared(void* ptr, size_t size) { return m_pVMemShared->Realloc(ptr, size); }; inline void FreeShared(void* ptr) { m_pVMemShared->Free(ptr); }; inline void* CallocShared(size_t num, size_t size) { - size_t count = num*size; - void* lpVoid = MallocShared(count); + size_t count = num*size; + void* lpVoid = MallocShared(count); - return lpVoid; + return lpVoid; }; /* IPerlMemParse */ @@ -96,10 +96,10 @@ inline void FreeParse(void* ptr) { m_pVMemParse->Free(ptr); }; inline void* CallocParse(size_t num, size_t size) { - size_t count = num*size; - void* lpVoid = MallocParse(count); + size_t count = num*size; + void* lpVoid = MallocParse(count); - return lpVoid; + return lpVoid; }; /* IPerlEnv */ @@ -107,11 +107,11 @@ int Putenv(const char *envstring); inline char *Getenv(const char *varname, unsigned long *len) { - *len = 0; - char *e = Getenv(varname); - if (e) - *len = strlen(e); - return e; + *len = 0; + char *e = Getenv(varname); + if (e) + *len = strlen(e); + return e; } @@ -341,33 +341,33 @@ void PerlEnvClearenv(struct IPerlEnv* piPerl) { - // If removed, compilation fails while compiling CGI2Perl. + // If removed, compilation fails while compiling CGI2Perl. } void* PerlEnvGetChildenv(struct IPerlEnv* piPerl) { - // If removed, compilation fails while compiling CGI2Perl. - return NULL; + // If removed, compilation fails while compiling CGI2Perl. + return NULL; } void PerlEnvFreeChildenv(struct IPerlEnv* piPerl, void* childEnv) { - // If removed, compilation fails while compiling CGI2Perl. + // If removed, compilation fails while compiling CGI2Perl. } char* PerlEnvGetChilddir(struct IPerlEnv* piPerl) { - // If removed, compilation fails while compiling CGI2Perl. - return NULL; + // If removed, compilation fails while compiling CGI2Perl. + return NULL; } void PerlEnvFreeChilddir(struct IPerlEnv* piPerl, char* childDir) { - // If removed, compilation fails while compiling CGI2Perl. + // If removed, compilation fails while compiling CGI2Perl. } struct IPerlEnv perlEnv = @@ -636,7 +636,7 @@ void PerlStdIOInit(struct IPerlStdIO* piPerl) { - // If removed, compilation error occurs. + // If removed, compilation error occurs. } void @@ -668,17 +668,17 @@ /* open the file in the same mode */ if(((FILE*)pf)->_flag & _IOREAD) { - mode[0] = 'r'; - mode[1] = 0; + mode[0] = 'r'; + mode[1] = 0; } else if(((FILE*)pf)->_flag & _IOWRT) { - mode[0] = 'a'; - mode[1] = 0; + mode[0] = 'a'; + mode[1] = 0; } else if(((FILE*)pf)->_flag & _IORW) { - mode[0] = 'r'; - mode[1] = '+'; - mode[2] = 0; + mode[0] = 'r'; + mode[1] = '+'; + mode[2] = 0; } /* it appears that the binmode is attached to the @@ -689,7 +689,7 @@ /* move the file pointer to the same position */ if (!fgetpos((FILE*)pf, &pos)) { - fsetpos((FILE*)pfdup, &pos); + fsetpos((FILE*)pfdup, &pos); } return pfdup; } @@ -757,14 +757,14 @@ int PerlLIOChown(struct IPerlLIO* piPerl, const char *filename, uid_t owner, gid_t group) { - // If removed, compilation error occurs. - return 0; + // If removed, compilation error occurs. + return 0; } int PerlLIOChsize(struct IPerlLIO* piPerl, int handle, long size) { - return (nw_chsize(handle,size)); + return (nw_chsize(handle,size)); } int @@ -788,7 +788,7 @@ int PerlLIOFlock(struct IPerlLIO* piPerl, int fd, int oper) { - //On NetWare simulate flock by locking a range on the file + //On NetWare simulate flock by locking a range on the file return nw_flock(fd, oper); } @@ -801,8 +801,8 @@ int PerlLIOIOCtl(struct IPerlLIO* piPerl, int i, unsigned int u, char *data) { - // If removed, compilation error occurs. - return 0; + // If removed, compilation error occurs. + return 0; } int @@ -832,7 +832,7 @@ char* PerlLIOMktemp(struct IPerlLIO* piPerl, char *Template) { - return(nw_mktemp(Template)); + return(nw_mktemp(Template)); } int @@ -939,37 +939,37 @@ int PerlDirMakedir(struct IPerlDir* piPerl, const char *dirname, int mode) { - return mkdir(dirname); + return mkdir(dirname); } int PerlDirChdir(struct IPerlDir* piPerl, const char *dirname) { - return nw_chdir(dirname); + return nw_chdir(dirname); } int PerlDirRmdir(struct IPerlDir* piPerl, const char *dirname) { - return nw_rmdir(dirname); + return nw_rmdir(dirname); } int PerlDirClose(struct IPerlDir* piPerl, DIR *dirp) { - return nw_closedir(dirp); + return nw_closedir(dirp); } DIR* PerlDirOpen(struct IPerlDir* piPerl, const char *filename) { - return nw_opendir(filename); + return nw_opendir(filename); } struct direct * PerlDirRead(struct IPerlDir* piPerl, DIR *dirp) { - return nw_readdir(dirp); + return nw_readdir(dirp); } void @@ -1008,42 +1008,42 @@ u_long PerlSockHtonl(struct IPerlSock* piPerl, u_long hostlong) { - return(nw_htonl(hostlong)); + return(nw_htonl(hostlong)); } u_short PerlSockHtons(struct IPerlSock* piPerl, u_short hostshort) { - return(nw_htons(hostshort)); + return(nw_htons(hostshort)); } u_long PerlSockNtohl(struct IPerlSock* piPerl, u_long netlong) { - return nw_ntohl(netlong); + return nw_ntohl(netlong); } u_short PerlSockNtohs(struct IPerlSock* piPerl, u_short netshort) { - return nw_ntohs(netshort); + return nw_ntohs(netshort); } SOCKET PerlSockAccept(struct IPerlSock* piPerl, SOCKET s, struct sockaddr* addr, int* addrlen) { - return nw_accept(s, addr, addrlen); + return nw_accept(s, addr, addrlen); } int PerlSockBind(struct IPerlSock* piPerl, SOCKET s, const struct sockaddr* name, int namelen) { - return nw_bind(s, name, namelen); + return nw_bind(s, name, namelen); } int PerlSockConnect(struct IPerlSock* piPerl, SOCKET s, const struct sockaddr* name, int namelen) { - return nw_connect(s, name, namelen); + return nw_connect(s, name, namelen); } void @@ -1073,7 +1073,7 @@ struct hostent* PerlSockGethostbyaddr(struct IPerlSock* piPerl, const char* addr, int len, int type) { - return(nw_gethostbyaddr(addr,len,type)); + return(nw_gethostbyaddr(addr,len,type)); } struct hostent* @@ -1085,13 +1085,13 @@ struct hostent* PerlSockGethostent(struct IPerlSock* piPerl) { - return(nw_gethostent()); + return(nw_gethostent()); } int PerlSockGethostname(struct IPerlSock* piPerl, char* name, int namelen) { - return nw_gethostname(name,namelen); + return nw_gethostname(name,namelen); } struct netent * @@ -1144,31 +1144,31 @@ struct servent* PerlSockGetservbyport(struct IPerlSock* piPerl, int port, const char* proto) { - return nw_getservbyport(port, proto); + return nw_getservbyport(port, proto); } struct servent* PerlSockGetservent(struct IPerlSock* piPerl) { - return nw_getservent(); + return nw_getservent(); } int PerlSockGetsockname(struct IPerlSock* piPerl, SOCKET s, struct sockaddr* name, int* namelen) { - return nw_getsockname(s, name, namelen); + return nw_getsockname(s, name, namelen); } int PerlSockGetsockopt(struct IPerlSock* piPerl, SOCKET s, int level, int optname, char* optval, int* optlen) { - return nw_getsockopt(s, level, optname, optval, optlen); + return nw_getsockopt(s, level, optname, optval, optlen); } unsigned long PerlSockInetAddr(struct IPerlSock* piPerl, const char* cp) { - return(nw_inet_addr(cp)); + return(nw_inet_addr(cp)); } char* @@ -1180,79 +1180,79 @@ int PerlSockListen(struct IPerlSock* piPerl, SOCKET s, int backlog) { - return (nw_listen(s, backlog)); + return (nw_listen(s, backlog)); } int PerlSockRecv(struct IPerlSock* piPerl, SOCKET s, char* buffer, int len, int flags) { - return (nw_recv(s, buffer, len, flags)); + return (nw_recv(s, buffer, len, flags)); } int PerlSockRecvfrom(struct IPerlSock* piPerl, SOCKET s, char* buffer, int len, int flags, struct sockaddr* from, int* fromlen) { - return nw_recvfrom(s, buffer, len, flags, from, fromlen); + return nw_recvfrom(s, buffer, len, flags, from, fromlen); } int PerlSockSelect(struct IPerlSock* piPerl, int nfds, char* readfds, char* writefds, char* exceptfds, const struct timeval* timeout) { - return nw_select(nfds, (fd_set*) readfds, (fd_set*) writefds, (fd_set*) exceptfds, timeout); + return nw_select(nfds, (fd_set*) readfds, (fd_set*) writefds, (fd_set*) exceptfds, timeout); } int PerlSockSend(struct IPerlSock* piPerl, SOCKET s, const char* buffer, int len, int flags) { - return (nw_send(s, buffer, len, flags)); + return (nw_send(s, buffer, len, flags)); } int PerlSockSendto(struct IPerlSock* piPerl, SOCKET s, const char* buffer, int len, int flags, const struct sockaddr* to, int tolen) { - return(nw_sendto(s, buffer, len, flags, to, tolen)); + return(nw_sendto(s, buffer, len, flags, to, tolen)); } void PerlSockSethostent(struct IPerlSock* piPerl, int stayopen) { - nw_sethostent(stayopen); + nw_sethostent(stayopen); } void PerlSockSetnetent(struct IPerlSock* piPerl, int stayopen) { - nw_setnetent(stayopen); + nw_setnetent(stayopen); } void PerlSockSetprotoent(struct IPerlSock* piPerl, int stayopen) { - nw_setprotoent(stayopen); + nw_setprotoent(stayopen); } void PerlSockSetservent(struct IPerlSock* piPerl, int stayopen) { - nw_setservent(stayopen); + nw_setservent(stayopen); } int PerlSockSetsockopt(struct IPerlSock* piPerl, SOCKET s, int level, int optname, const char* optval, int optlen) { - return nw_setsockopt(s, level, optname, optval, optlen); + return nw_setsockopt(s, level, optname, optval, optlen); } int PerlSockShutdown(struct IPerlSock* piPerl, SOCKET s, int how) { - return nw_shutdown(s, how); + return nw_shutdown(s, how); } SOCKET PerlSockSocket(struct IPerlSock* piPerl, int af, int type, int protocol) { - return nw_socket(af, type, protocol); + return nw_socket(af, type, protocol); } int @@ -1266,9 +1266,9 @@ int PerlSockIoctlsocket(struct IPerlSock* piPerl, SOCKET s, long cmd, u_long *argp) { - dTHX; // (J) dTHXo + dTHX; // (J) dTHXo Perl_croak(aTHX_ "ioctlsocket not implemented!\n"); - return 0; + return 0; } struct IPerlSock perlSock = @@ -1301,8 +1301,8 @@ PerlSockGetsockname, PerlSockGetsockopt, PerlSockInetAddr, - PerlSockInetNtoa, - PerlSockListen, + PerlSockInetNtoa, + PerlSockListen, PerlSockRecv, PerlSockRecvfrom, PerlSockSelect, @@ -1314,9 +1314,9 @@ PerlSockSetservent, PerlSockSetsockopt, PerlSockShutdown, - PerlSockSocket, + PerlSockSocket, PerlSockSocketpair, - //Following commented by sgp bcos of comiplation error too many initializers (E279) + //Following commented by sgp bcos of comiplation error too many initializers (E279) // PerlSockClosesocket, }; @@ -1342,25 +1342,25 @@ PerlProcExit(struct IPerlProc* piPerl, int status) { // exit(status); - dTHX; - //dJMPENV; - JMPENV_JUMP(2); + dTHX; + //dJMPENV; + JMPENV_JUMP(2); } void PerlProc_Exit(struct IPerlProc* piPerl, int status) { // _exit(status); - dTHX; - //dJMPENV; - JMPENV_JUMP(2); + dTHX; + //dJMPENV; + JMPENV_JUMP(2); } int PerlProcExecl(struct IPerlProc* piPerl, const char *cmdname, const char *arg0, const char *arg1, const char *arg2, const char *arg3) { - // If removed, compilation error occurs. - return 0; + // If removed, compilation error occurs. + return 0; } int @@ -1378,36 +1378,36 @@ uid_t PerlProcGetuid(struct IPerlProc* piPerl) { - // If removed, compilation error occurs. - return 0; + // If removed, compilation error occurs. + return 0; } uid_t PerlProcGeteuid(struct IPerlProc* piPerl) { - // If removed, compilation error occurs. - return 0; + // If removed, compilation error occurs. + return 0; } gid_t PerlProcGetgid(struct IPerlProc* piPerl) { - // If removed, compilation error occurs. - return 0; + // If removed, compilation error occurs. + return 0; } gid_t PerlProcGetegid(struct IPerlProc* piPerl) { - // If removed, compilation error occurs. - return 0; + // If removed, compilation error occurs. + return 0; } char * PerlProcGetlogin(struct IPerlProc* piPerl) { - // If removed, compilation error occurs. - return NULL; + // If removed, compilation error occurs. + return NULL; } int @@ -1436,7 +1436,7 @@ dTHX; // (J) dTHXo PERL_FLUSHALL_FOR_CHILD; - return (PerlIO*)nw_Popen((char *)command, (char *)mode, (int *)errno); + return (PerlIO*)nw_Popen((char *)command, (char *)mode, (int *)errno); } int @@ -1454,15 +1454,15 @@ int PerlProcSetuid(struct IPerlProc* piPerl, uid_t u) { - // If removed, compilation error occurs. - return 0; + // If removed, compilation error occurs. + return 0; } int PerlProcSetgid(struct IPerlProc* piPerl, gid_t g) { - // If removed, compilation error occurs. - return 0; + // If removed, compilation error occurs. + return 0; } int @@ -1492,15 +1492,15 @@ Sighandler_t PerlProcSignal(struct IPerlProc* piPerl, int sig, Sighandler_t subcode) { - // If removed, compilation error occurs. + // If removed, compilation error occurs. return 0; } int PerlProcFork(struct IPerlProc* piPerl) { - // If removed, compilation error occurs. - return 0; + // If removed, compilation error occurs. + return 0; } int @@ -1582,8 +1582,8 @@ m_pVMemShared = new VMem(); m_pVMemParse = new VMem(); - memcpy(&m_hostperlMem, &perlMem, sizeof(perlMem)); - memcpy(&m_hostperlMemShared, &perlMemShared, sizeof(perlMemShared)); + memcpy(&m_hostperlMem, &perlMem, sizeof(perlMem)); + memcpy(&m_hostperlMemShared, &perlMemShared, sizeof(perlMemShared)); memcpy(&m_hostperlMemParse, &perlMemParse, sizeof(perlMemParse)); memcpy(&m_hostperlEnv, &perlEnv, sizeof(perlEnv)); memcpy(&m_hostperlStdIO, &perlStdIO, sizeof(perlStdIO)); @@ -1605,26 +1605,26 @@ #define SETUPEXCHANGE(xptr, iptr, table) \ STMT_START { \ - if (xptr) { \ - iptr = *xptr; \ - *xptr = &table; \ - } \ - else { \ - iptr = &table; \ - } \ + if (xptr) { \ + iptr = *xptr; \ + *xptr = &table; \ + } \ + else { \ + iptr = &table; \ + } \ } STMT_END CPerlHost::CPerlHost(struct IPerlMem** ppMem, struct IPerlMem** ppMemShared, - struct IPerlMem** ppMemParse, struct IPerlEnv** ppEnv, - struct IPerlStdIO** ppStdIO, struct IPerlLIO** ppLIO, - struct IPerlDir** ppDir, struct IPerlSock** ppSock, - struct IPerlProc** ppProc) + struct IPerlMem** ppMemParse, struct IPerlEnv** ppEnv, + struct IPerlStdIO** ppStdIO, struct IPerlLIO** ppLIO, + struct IPerlDir** ppDir, struct IPerlSock** ppSock, + struct IPerlProc** ppProc) { m_pVMem = new VMem(); m_pVMemShared = new VMem(); m_pVMemParse = new VMem(); - memcpy(&m_hostperlMem, &perlMem, sizeof(perlMem)); + memcpy(&m_hostperlMem, &perlMem, sizeof(perlMem)); memcpy(&m_hostperlMemShared, &perlMemShared, sizeof(perlMemShared)); memcpy(&m_hostperlMemParse, &perlMemParse, sizeof(perlMemParse)); memcpy(&m_hostperlEnv, &perlEnv, sizeof(perlEnv)); @@ -1648,7 +1648,7 @@ CPerlHost::CPerlHost(const CPerlHost& host) { - memcpy(&m_hostperlMem, &perlMem, sizeof(perlMem)); + memcpy(&m_hostperlMem, &perlMem, sizeof(perlMem)); memcpy(&m_hostperlMemShared, &perlMemShared, sizeof(perlMemShared)); memcpy(&m_hostperlMemParse, &perlMemParse, sizeof(perlMemParse)); memcpy(&m_hostperlEnv, &perlEnv, sizeof(perlEnv)); @@ -1672,26 +1672,26 @@ CPerlHost::~CPerlHost(void) { - if ( m_pVMemParse ) delete m_pVMemParse; - if ( m_pVMemShared ) delete m_pVMemShared; - if ( m_pVMem ) delete m_pVMem; + if ( m_pVMemParse ) delete m_pVMemParse; + if ( m_pVMemShared ) delete m_pVMemShared; + if ( m_pVMem ) delete m_pVMem; } char* CPerlHost::Getenv(const char *varname) { - // getenv is always present. In old CLIB, it is implemented - // to always return NULL. With java loaded on NW411, it will - // return values set by envset. Is correctly implemented by - // CLIB on MOAB. - // - return getenv(varname); + // getenv is always present. In old CLIB, it is implemented + // to always return NULL. With java loaded on NW411, it will + // return values set by envset. Is correctly implemented by + // CLIB on MOAB. + // + return getenv(varname); } int CPerlHost::Putenv(const char *envstring) { - return(putenv(envstring)); + return(putenv(envstring)); } diff -Nru perl-5.32.1/NetWare/nwperlsys.c perl-5.34.0/NetWare/nwperlsys.c --- perl-5.32.1/NetWare/nwperlsys.c 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/nwperlsys.c 2021-01-20 23:04:44.000000000 +0000 @@ -34,10 +34,10 @@ Function : fnFreeMemEntry Description : Called for each outstanding memory allocation at the end of a script run. - Frees the outstanding allocations + Frees the outstanding allocations Parameters : ptr (IN). - context (IN) + context (IN) Returns : Nothing. @@ -45,10 +45,10 @@ void fnFreeMemEntry(void* ptr, void* context) { - if(ptr) - { - PerlMemFree(NULL, ptr); - } + if(ptr) + { + PerlMemFree(NULL, ptr); + } } /*============================================================================================ @@ -84,21 +84,21 @@ { PerlInterpreter* my_perl = NULL; - WCValHashTable* m_allocList; - m_allocList = new WCValHashTable (fnAllocListHash, 256); - fnInsertHashListAddrs(m_allocList, FALSE); - my_perl = perl_alloc_using(&perlMem, - &perlMem, - NULL, - &perlEnv, - &perlStdIO, - &perlLIO, - &perlDir, - &perlSock, - &perlProc); - if (my_perl) { - //nw5_internal_host = m_allocList; - } + WCValHashTable* m_allocList; + m_allocList = new WCValHashTable (fnAllocListHash, 256); + fnInsertHashListAddrs(m_allocList, FALSE); + my_perl = perl_alloc_using(&perlMem, + &perlMem, + NULL, + &perlEnv, + &perlStdIO, + &perlLIO, + &perlDir, + &perlSock, + &perlProc); + if (my_perl) { + //nw5_internal_host = m_allocList; + } return my_perl; } @@ -115,72 +115,72 @@ ==============================================================================================*/ EXTERN_C PerlInterpreter* perl_alloc_override(struct IPerlMem** ppMem, struct IPerlMem** ppMemShared, - struct IPerlMem** ppMemParse, struct IPerlEnv** ppEnv, - struct IPerlStdIO** ppStdIO, struct IPerlLIO** ppLIO, - struct IPerlDir** ppDir, struct IPerlSock** ppSock, - struct IPerlProc** ppProc) + struct IPerlMem** ppMemParse, struct IPerlEnv** ppEnv, + struct IPerlStdIO** ppStdIO, struct IPerlLIO** ppLIO, + struct IPerlDir** ppDir, struct IPerlSock** ppSock, + struct IPerlProc** ppProc) { PerlInterpreter *my_perl = NULL; - struct IPerlMem* lpMem; - struct IPerlEnv* lpEnv; - struct IPerlStdIO* lpStdio; - struct IPerlLIO* lpLIO; - struct IPerlDir* lpDir; - struct IPerlSock* lpSock; - struct IPerlProc* lpProc; - - WCValHashTable* m_allocList; - m_allocList = new WCValHashTable (fnAllocListHash, 256); - fnInsertHashListAddrs(m_allocList, FALSE); - - if (!ppMem) - lpMem=&perlMem; - else - lpMem=*ppMem; - - if (!ppEnv) - lpEnv=&perlEnv; - else - lpEnv=*ppEnv; - - if (!ppStdIO) - lpStdio=&perlStdIO; - else - lpStdio=*ppStdIO; - - if (!ppLIO) - lpLIO=&perlLIO; - else - lpLIO=*ppLIO; - - if (!ppDir) - lpDir=&perlDir; - else - lpDir=*ppDir; - - if (!ppSock) - lpSock=&perlSock; - else - lpSock=*ppSock; - - if (!ppProc) - lpProc=&perlProc; - else - lpProc=*ppProc; - my_perl = perl_alloc_using(lpMem, - lpMem, - NULL, - lpEnv, - lpStdio, - lpLIO, - lpDir, - lpSock, - lpProc); - - if (my_perl) { - //nw5_internal_host = pHost; - } + struct IPerlMem* lpMem; + struct IPerlEnv* lpEnv; + struct IPerlStdIO* lpStdio; + struct IPerlLIO* lpLIO; + struct IPerlDir* lpDir; + struct IPerlSock* lpSock; + struct IPerlProc* lpProc; + + WCValHashTable* m_allocList; + m_allocList = new WCValHashTable (fnAllocListHash, 256); + fnInsertHashListAddrs(m_allocList, FALSE); + + if (!ppMem) + lpMem=&perlMem; + else + lpMem=*ppMem; + + if (!ppEnv) + lpEnv=&perlEnv; + else + lpEnv=*ppEnv; + + if (!ppStdIO) + lpStdio=&perlStdIO; + else + lpStdio=*ppStdIO; + + if (!ppLIO) + lpLIO=&perlLIO; + else + lpLIO=*ppLIO; + + if (!ppDir) + lpDir=&perlDir; + else + lpDir=*ppDir; + + if (!ppSock) + lpSock=&perlSock; + else + lpSock=*ppSock; + + if (!ppProc) + lpProc=&perlProc; + else + lpProc=*ppProc; + my_perl = perl_alloc_using(lpMem, + lpMem, + NULL, + lpEnv, + lpStdio, + lpLIO, + lpDir, + lpSock, + lpProc); + + if (my_perl) { + //nw5_internal_host = pHost; + } return my_perl; } /*============================================================================================ @@ -198,19 +198,19 @@ EXTERN_C void nw5_delete_internal_host(void *h) { - WCValHashTable* m_allocList; - void **listptr; - BOOL m_dontTouchHashLists; - if (fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) { - m_allocList = (WCValHashTable*)listptr; - fnInsertHashListAddrs(m_allocList, TRUE); - if (m_allocList) - { - m_allocList->forAll(fnFreeMemEntry, NULL); - fnInsertHashListAddrs(NULL, FALSE); - delete m_allocList; - } - } + WCValHashTable* m_allocList; + void **listptr; + BOOL m_dontTouchHashLists; + if (fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) { + m_allocList = (WCValHashTable*)listptr; + fnInsertHashListAddrs(m_allocList, TRUE); + if (m_allocList) + { + m_allocList->forAll(fnFreeMemEntry, NULL); + fnInsertHashListAddrs(NULL, FALSE); + delete m_allocList; + } + } } #endif /* PERL_IMPLICIT_SYS */ diff -Nru perl-5.32.1/NetWare/nwperlsys.h perl-5.34.0/NetWare/nwperlsys.h --- perl-5.32.1/NetWare/nwperlsys.h 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/nwperlsys.h 2021-01-20 23:04:44.000000000 +0000 @@ -48,103 +48,103 @@ void* PerlMemMalloc(struct IPerlMem* piPerl, size_t size) { - void *ptr = NULL; - ptr = malloc(size); - if (ptr) { - void **listptr; - BOOL m_dontTouchHashLists; - if(fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) { - if (listptr) { - WCValHashTable* m_allocList= (WCValHashTable*)listptr; - (WCValHashTable*)m_allocList->insert(ptr); - } - } - } - return(ptr); + void *ptr = NULL; + ptr = malloc(size); + if (ptr) { + void **listptr; + BOOL m_dontTouchHashLists; + if(fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) { + if (listptr) { + WCValHashTable* m_allocList= (WCValHashTable*)listptr; + (WCValHashTable*)m_allocList->insert(ptr); + } + } + } + return(ptr); } void* PerlMemRealloc(struct IPerlMem* piPerl, void* ptr, size_t size) { - void *newptr = NULL; - WCValHashTable* m_allocList; + void *newptr = NULL; + WCValHashTable* m_allocList; - newptr = realloc(ptr, size); + newptr = realloc(ptr, size); - if (ptr) - { - void **listptr; - BOOL m_dontTouchHashLists; - if(fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) { - m_allocList= (WCValHashTable*)listptr; - (WCValHashTable*)m_allocList->remove(ptr); - } - } - if (newptr) - { - if (m_allocList) - (WCValHashTable*)m_allocList->insert(newptr); - } + if (ptr) + { + void **listptr; + BOOL m_dontTouchHashLists; + if(fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) { + m_allocList= (WCValHashTable*)listptr; + (WCValHashTable*)m_allocList->remove(ptr); + } + } + if (newptr) + { + if (m_allocList) + (WCValHashTable*)m_allocList->insert(newptr); + } - return(newptr); + return(newptr); } void PerlMemFree(struct IPerlMem* piPerl, void* ptr) { - BOOL m_dontTouchHashLists; - WCValHashTable* m_allocList; + BOOL m_dontTouchHashLists; + WCValHashTable* m_allocList; - void **listptr; - if(fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) { - m_allocList= (WCValHashTable*)listptr; - // Final clean up, free all the nodes from the hash list - if (m_dontTouchHashLists) - { - if(ptr) - { - free(ptr); - ptr = NULL; - } - } - else - { - if(ptr && m_allocList) - { - if ((WCValHashTable*)m_allocList->remove(ptr)) - { - free(ptr); - ptr = NULL; - } - else - { - // If it comes here, that means that the memory pointer is not contained in the hash list. - // But no need to free now, since if is deleted here, it will result in an abend!! - // If the memory is still there, it will be cleaned during final cleanup anyway. - } - } - } - } - return; + void **listptr; + if(fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) { + m_allocList= (WCValHashTable*)listptr; + // Final clean up, free all the nodes from the hash list + if (m_dontTouchHashLists) + { + if(ptr) + { + free(ptr); + ptr = NULL; + } + } + else + { + if(ptr && m_allocList) + { + if ((WCValHashTable*)m_allocList->remove(ptr)) + { + free(ptr); + ptr = NULL; + } + else + { + // If it comes here, that means that the memory pointer is not contained in the hash list. + // But no need to free now, since if is deleted here, it will result in an abend!! + // If the memory is still there, it will be cleaned during final cleanup anyway. + } + } + } + } + return; } void* PerlMemCalloc(struct IPerlMem* piPerl, size_t num, size_t size) { - void *ptr = NULL; + void *ptr = NULL; - ptr = calloc(num, size); - if (ptr) { - void **listptr; - BOOL m_dontTouchHashLists; - if(fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) { - if (listptr) { - WCValHashTable* m_allocList= (WCValHashTable*)listptr; - (WCValHashTable*)m_allocList->insert(ptr); - } - } - } - return(ptr); + ptr = calloc(num, size); + if (ptr) { + void **listptr; + BOOL m_dontTouchHashLists; + if(fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) { + if (listptr) { + WCValHashTable* m_allocList= (WCValHashTable*)listptr; + (WCValHashTable*)m_allocList->insert(ptr); + } + } + } + return(ptr); } struct IPerlMem perlMem = @@ -162,37 +162,37 @@ int PerlDirMakedir(struct IPerlDir* piPerl, const char *dirname, int mode) { - return mkdir(dirname); + return mkdir(dirname); } int PerlDirChdir(struct IPerlDir* piPerl, const char *dirname) { - return nw_chdir(dirname); + return nw_chdir(dirname); } int PerlDirRmdir(struct IPerlDir* piPerl, const char *dirname) { - return nw_rmdir(dirname); + return nw_rmdir(dirname); } int PerlDirClose(struct IPerlDir* piPerl, DIR *dirp) { - return nw_closedir(dirp); + return nw_closedir(dirp); } DIR* PerlDirOpen(struct IPerlDir* piPerl, const char *filename) { - return nw_opendir(filename); + return nw_opendir(filename); } struct direct * PerlDirRead(struct IPerlDir* piPerl, DIR *dirp) { - return nw_readdir(dirp); + return nw_readdir(dirp); } void @@ -215,7 +215,7 @@ struct IPerlDir perlDir = { - PerlDirMakedir, + PerlDirMakedir, PerlDirChdir, PerlDirRmdir, PerlDirClose, @@ -233,23 +233,23 @@ char* PerlEnvGetenv(struct IPerlEnv* piPerl, const char *varname) { - return(getenv(varname)); + return(getenv(varname)); }; int PerlEnvPutenv(struct IPerlEnv* piPerl, const char *envstring) { - return(putenv(envstring)); + return(putenv(envstring)); }; char* PerlEnvGetenv_len(struct IPerlEnv* piPerl, const char* varname, unsigned long* len) { - *len = 0; - char *e = getenv(varname); - if (e) - *len = strlen(e); - return e; + *len = 0; + char *e = getenv(varname); + if (e) + *len = strlen(e); + return e; } int @@ -261,13 +261,13 @@ void PerlEnvClearenv(struct IPerlEnv* piPerl) { - + } struct IPerlEnv perlEnv = { - PerlEnvGetenv, - PerlEnvPutenv, + PerlEnvGetenv, + PerlEnvPutenv, PerlEnvGetenv_len, PerlEnvUname, PerlEnvClearenv, @@ -559,17 +559,17 @@ /* open the file in the same mode */ if(((FILE*)pf)->_flag & _IOREAD) { - mode[0] = 'r'; - mode[1] = 0; + mode[0] = 'r'; + mode[1] = 0; } else if(((FILE*)pf)->_flag & _IOWRT) { - mode[0] = 'a'; - mode[1] = 0; + mode[0] = 'a'; + mode[1] = 0; } else if(((FILE*)pf)->_flag & _IORW) { - mode[0] = 'r'; - mode[1] = '+'; - mode[2] = 0; + mode[0] = 'r'; + mode[1] = '+'; + mode[2] = 0; } /* it appears that the binmode is attached to the @@ -580,14 +580,14 @@ /* move the file pointer to the same position */ if (!fgetpos(pf, &pos)) { - fsetpos(pfdup, &pos); + fsetpos(pfdup, &pos); } return pfdup; } struct IPerlStdIO perlStdIO = { - PerlStdIOStdin, + PerlStdIOStdin, PerlStdIOStdout, PerlStdIOStderr, PerlStdIOOpen, @@ -647,15 +647,15 @@ int PerlLIOChown(struct IPerlLIO* piPerl, const char *filename, uid_t owner, gid_t group) { - dTHX; + dTHX; Perl_croak(aTHX_ "chown not implemented!\n"); - return 0; + return 0; } int PerlLIOChsize(struct IPerlLIO* piPerl, int handle, long size) { - return (nw_chsize(handle,size)); + return (nw_chsize(handle,size)); } int @@ -679,7 +679,7 @@ int PerlLIOFlock(struct IPerlLIO* piPerl, int fd, int oper) { - //On NetWare simulate flock by locking a range on the file + //On NetWare simulate flock by locking a range on the file return nw_flock(fd, oper); } @@ -692,7 +692,7 @@ int PerlLIOIOCtl(struct IPerlLIO* piPerl, int i, unsigned int u, char *data) { - return 0; + return 0; } int @@ -722,7 +722,7 @@ char* PerlLIOMktemp(struct IPerlLIO* piPerl, char *Template) { - return(nw_mktemp(Template)); + return(nw_mktemp(Template)); } int @@ -793,7 +793,7 @@ struct IPerlLIO perlLIO = { - PerlLIOAccess, + PerlLIOAccess, PerlLIOChmod, PerlLIOChown, PerlLIOChsize, @@ -844,26 +844,26 @@ PerlProcExit(struct IPerlProc* piPerl, int status) { // exit(status); - dTHX; - dJMPENV; - JMPENV_JUMP(2); + dTHX; + dJMPENV; + JMPENV_JUMP(2); } void PerlProc_Exit(struct IPerlProc* piPerl, int status) { // _exit(status); - dTHX; - dJMPENV; - JMPENV_JUMP(2); + dTHX; + dJMPENV; + JMPENV_JUMP(2); } int PerlProcExecl(struct IPerlProc* piPerl, const char *cmdname, const char *arg0, const char *arg1, const char *arg2, const char *arg3) { - dTHX; + dTHX; Perl_croak(aTHX_ "execl not implemented!\n"); - return 0; + return 0; } int @@ -881,31 +881,31 @@ uid_t PerlProcGetuid(struct IPerlProc* piPerl) { - return 0; + return 0; } uid_t PerlProcGeteuid(struct IPerlProc* piPerl) { - return 0; + return 0; } gid_t PerlProcGetgid(struct IPerlProc* piPerl) { - return 0; + return 0; } gid_t PerlProcGetegid(struct IPerlProc* piPerl) { - return 0; + return 0; } char * PerlProcGetlogin(struct IPerlProc* piPerl) { - return NULL; + return NULL; } int @@ -934,7 +934,7 @@ dTHX; PERL_FLUSHALL_FOR_CHILD; - return (PerlIO*)nw_Popen((char *)command, (char *)mode, (int *)errno); + return (PerlIO*)nw_Popen((char *)command, (char *)mode, (int *)errno); } int @@ -952,13 +952,13 @@ int PerlProcSetuid(struct IPerlProc* piPerl, uid_t u) { - return 0; + return 0; } int PerlProcSetgid(struct IPerlProc* piPerl, gid_t g) { - return 0; + return 0; } int @@ -994,7 +994,7 @@ int PerlProcFork(struct IPerlProc* piPerl) { - return 0; + return 0; } int @@ -1068,42 +1068,42 @@ u_long PerlSockHtonl(struct IPerlSock* piPerl, u_long hostlong) { - return(nw_htonl(hostlong)); + return(nw_htonl(hostlong)); } u_short PerlSockHtons(struct IPerlSock* piPerl, u_short hostshort) { - return(nw_htons(hostshort)); + return(nw_htons(hostshort)); } u_long PerlSockNtohl(struct IPerlSock* piPerl, u_long netlong) { - return nw_ntohl(netlong); + return nw_ntohl(netlong); } u_short PerlSockNtohs(struct IPerlSock* piPerl, u_short netshort) { - return nw_ntohs(netshort); + return nw_ntohs(netshort); } SOCKET PerlSockAccept(struct IPerlSock* piPerl, SOCKET s, struct sockaddr* addr, int* addrlen) { - return nw_accept(s, addr, addrlen); + return nw_accept(s, addr, addrlen); } int PerlSockBind(struct IPerlSock* piPerl, SOCKET s, const struct sockaddr* name, int namelen) { - return nw_bind(s, name, namelen); + return nw_bind(s, name, namelen); } int PerlSockConnect(struct IPerlSock* piPerl, SOCKET s, const struct sockaddr* name, int namelen) { - return nw_connect(s, name, namelen); + return nw_connect(s, name, namelen); } void @@ -1133,7 +1133,7 @@ struct hostent* PerlSockGethostbyaddr(struct IPerlSock* piPerl, const char* addr, int len, int type) { - return(nw_gethostbyaddr(addr,len,type)); + return(nw_gethostbyaddr(addr,len,type)); } struct hostent* @@ -1145,13 +1145,13 @@ struct hostent* PerlSockGethostent(struct IPerlSock* piPerl) { - return(nw_gethostent()); + return(nw_gethostent()); } int PerlSockGethostname(struct IPerlSock* piPerl, char* name, int namelen) { - return nw_gethostname(name,namelen); + return nw_gethostname(name,namelen); } struct netent * @@ -1204,115 +1204,115 @@ struct servent* PerlSockGetservbyport(struct IPerlSock* piPerl, int port, const char* proto) { - return nw_getservbyport(port, proto); + return nw_getservbyport(port, proto); } struct servent* PerlSockGetservent(struct IPerlSock* piPerl) { - return nw_getservent(); + return nw_getservent(); } int PerlSockGetsockname(struct IPerlSock* piPerl, SOCKET s, struct sockaddr* name, int* namelen) { - return nw_getsockname(s, name, namelen); + return nw_getsockname(s, name, namelen); } int PerlSockGetsockopt(struct IPerlSock* piPerl, SOCKET s, int level, int optname, char* optval, int* optlen) { - return nw_getsockopt(s, level, optname, optval, optlen); + return nw_getsockopt(s, level, optname, optval, optlen); } unsigned long PerlSockInetAddr(struct IPerlSock* piPerl, const char* cp) { - return(nw_inet_addr(cp)); + return(nw_inet_addr(cp)); } char* PerlSockInetNtoa(struct IPerlSock* piPerl, struct in_addr in) { - return NULL; + return NULL; } int PerlSockListen(struct IPerlSock* piPerl, SOCKET s, int backlog) { - return (nw_listen(s, backlog)); + return (nw_listen(s, backlog)); } int PerlSockRecv(struct IPerlSock* piPerl, SOCKET s, char* buffer, int len, int flags) { - return (nw_recv(s, buffer, len, flags)); + return (nw_recv(s, buffer, len, flags)); } int PerlSockRecvfrom(struct IPerlSock* piPerl, SOCKET s, char* buffer, int len, int flags, struct sockaddr* from, int* fromlen) { - return nw_recvfrom(s, buffer, len, flags, from, fromlen); + return nw_recvfrom(s, buffer, len, flags, from, fromlen); } int PerlSockSelect(struct IPerlSock* piPerl, int nfds, char* readfds, char* writefds, char* exceptfds, const struct timeval* timeout) { - return nw_select(nfds, (fd_set*) readfds, (fd_set*) writefds, (fd_set*) exceptfds, timeout); + return nw_select(nfds, (fd_set*) readfds, (fd_set*) writefds, (fd_set*) exceptfds, timeout); } int PerlSockSend(struct IPerlSock* piPerl, SOCKET s, const char* buffer, int len, int flags) { - return (nw_send(s, buffer, len, flags)); + return (nw_send(s, buffer, len, flags)); } int PerlSockSendto(struct IPerlSock* piPerl, SOCKET s, const char* buffer, int len, int flags, const struct sockaddr* to, int tolen) { - return(nw_sendto(s, buffer, len, flags, to, tolen)); + return(nw_sendto(s, buffer, len, flags, to, tolen)); } void PerlSockSethostent(struct IPerlSock* piPerl, int stayopen) { - nw_sethostent(stayopen); + nw_sethostent(stayopen); } void PerlSockSetnetent(struct IPerlSock* piPerl, int stayopen) { - nw_setnetent(stayopen); + nw_setnetent(stayopen); } void PerlSockSetprotoent(struct IPerlSock* piPerl, int stayopen) { - nw_setprotoent(stayopen); + nw_setprotoent(stayopen); } void PerlSockSetservent(struct IPerlSock* piPerl, int stayopen) { - nw_setservent(stayopen); + nw_setservent(stayopen); } int PerlSockSetsockopt(struct IPerlSock* piPerl, SOCKET s, int level, int optname, const char* optval, int optlen) { - return nw_setsockopt(s, level, optname, optval, optlen); + return nw_setsockopt(s, level, optname, optval, optlen); } int PerlSockShutdown(struct IPerlSock* piPerl, SOCKET s, int how) { - return nw_shutdown(s, how); + return nw_shutdown(s, how); } SOCKET PerlSockSocket(struct IPerlSock* piPerl, int af, int type, int protocol) { - return nw_socket(af, type, protocol); + return nw_socket(af, type, protocol); } int @@ -1326,14 +1326,14 @@ int PerlSockIoctlsocket(struct IPerlSock* piPerl, SOCKET s, long cmd, u_long *argp) { - dTHX; + dTHX; Perl_croak(aTHX_ "ioctlsocket not implemented!\n"); - return 0; + return 0; } struct IPerlSock perlSock = { - PerlSockHtonl, + PerlSockHtonl, PerlSockHtons, PerlSockNtohl, PerlSockNtohs, @@ -1361,8 +1361,8 @@ PerlSockGetsockname, PerlSockGetsockopt, PerlSockInetAddr, - PerlSockInetNtoa, - PerlSockListen, + PerlSockInetNtoa, + PerlSockListen, PerlSockRecv, PerlSockRecvfrom, PerlSockSelect, @@ -1374,7 +1374,7 @@ PerlSockSetservent, PerlSockSetsockopt, PerlSockShutdown, - PerlSockSocket, + PerlSockSocket, PerlSockSocketpair, }; diff -Nru perl-5.32.1/NetWare/Nwpipe.c perl-5.34.0/NetWare/Nwpipe.c --- perl-5.32.1/NetWare/Nwpipe.c 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/Nwpipe.c 2021-01-20 23:04:44.000000000 +0000 @@ -52,111 +52,111 @@ BOOL fnPipeFileMakeArgv(PTEMPPIPEFILE ptpf) { - int i=0, j=0; - int dindex = 0; - int sindex = 0; - - ptpf->m_argv_len = 0; - - - // Below 2 is added for the following reason: - // - The first one is for an additional value that will be added through ptpf->m_redirect. - // - The second one is for a NULL termination of the array. - // This is required for spawnvp API that takes a NULL-terminated array as its 3rd parameter. - // If the array is NOT NULL-terminated, then the server abends at the spawnvp call !! - ptpf->m_argv = (char **) malloc((ptpf->m_pipeCommand->m_argc + 2) * sizeof(char*)); - if (ptpf->m_argv == NULL) - return FALSE; - - // For memory allocation it is just +1 since the last one is only for NULL-termination - // and no memory is required to be allocated. - for(i=0; i<(ptpf->m_pipeCommand->m_argc + 1); i++) - { - ptpf->m_argv[i] = (char *) malloc(MAX_DN_BYTES * sizeof(char)); - if (ptpf->m_argv[i] == NULL) - { - for(j=0; jm_argv[j]) - { - free(ptpf->m_argv[j]); - ptpf->m_argv[j] = NULL; - } - } - free(ptpf->m_argv); - ptpf->m_argv = NULL; - - return FALSE; - } - } - - // Copy over parsed items, removing "load" keyword if necessary. - sindex = ((stricmp(ptpf->m_pipeCommand->m_argv[0], LOAD_COMMAND) == 0) ? 1 : 0); - while (sindex < ptpf->m_pipeCommand->m_argc) - { - strcpy(ptpf->m_argv[dindex], ptpf->m_pipeCommand->m_argv[sindex]); - dindex++; - sindex++; - } - - if (stricmp(ptpf->m_argv[0], PERL_COMMAND_NAME) == 0) // If Perl is the first command. - { - ptpf->m_launchPerl = TRUE; - - #ifdef MPK_ON - ptpf->m_perlSynchSemaphore = kSemaphoreAlloc((BYTE *)"pipeSemaphore", 0); - #else - ptpf->m_perlSynchSemaphore = OpenLocalSemaphore(0); - #endif //MPK_ON - } - else if (stricmp(ptpf->m_argv[0], (char *)"perlglob") == 0) - ptpf->m_doPerlGlob = TRUE; - - - // Create last argument, which will redirect to or from the temp file - if (!ptpf->m_doPerlGlob || ptpf->m_mode) - { - if (!ptpf->m_mode) // If read mode? - { - if (ptpf->m_launchPerl) - strcpy(ptpf->m_redirect, (char *)">"); - else - strcpy(ptpf->m_redirect, (char *)"(CLIB_OPT)/>"); - } - else - { - if (ptpf->m_launchPerl) - strcpy(ptpf->m_redirect, (char *)"<"); - else - strcpy(ptpf->m_redirect, (char *)"(CLIB_OPT)/<"); - } - strcat(ptpf->m_redirect, ptpf->m_fileName); - - if (ptpf->m_launchPerl) - { - char tbuf[15] = {'\0'}; - sprintf(tbuf, (char *)" -{%x", ptpf->m_perlSynchSemaphore); - strcat(ptpf->m_redirect, tbuf); - } - - strcpy(ptpf->m_argv[dindex], (char*) ptpf->m_redirect); - dindex++; - } - - if (dindex < (ptpf->m_pipeCommand->m_argc + 1)) - { - if(ptpf->m_argv[dindex]) - { - free(ptpf->m_argv[dindex]); - ptpf->m_argv[dindex] = NULL; // NULL termination - required for spawnvp call. - } - } + int i=0, j=0; + int dindex = 0; + int sindex = 0; + + ptpf->m_argv_len = 0; + + + // Below 2 is added for the following reason: + // - The first one is for an additional value that will be added through ptpf->m_redirect. + // - The second one is for a NULL termination of the array. + // This is required for spawnvp API that takes a NULL-terminated array as its 3rd parameter. + // If the array is NOT NULL-terminated, then the server abends at the spawnvp call !! + ptpf->m_argv = (char **) malloc((ptpf->m_pipeCommand->m_argc + 2) * sizeof(char*)); + if (ptpf->m_argv == NULL) + return FALSE; + + // For memory allocation it is just +1 since the last one is only for NULL-termination + // and no memory is required to be allocated. + for(i=0; i<(ptpf->m_pipeCommand->m_argc + 1); i++) + { + ptpf->m_argv[i] = (char *) malloc(MAX_DN_BYTES * sizeof(char)); + if (ptpf->m_argv[i] == NULL) + { + for(j=0; jm_argv[j]) + { + free(ptpf->m_argv[j]); + ptpf->m_argv[j] = NULL; + } + } + free(ptpf->m_argv); + ptpf->m_argv = NULL; + + return FALSE; + } + } + + // Copy over parsed items, removing "load" keyword if necessary. + sindex = ((stricmp(ptpf->m_pipeCommand->m_argv[0], LOAD_COMMAND) == 0) ? 1 : 0); + while (sindex < ptpf->m_pipeCommand->m_argc) + { + strcpy(ptpf->m_argv[dindex], ptpf->m_pipeCommand->m_argv[sindex]); + dindex++; + sindex++; + } + + if (stricmp(ptpf->m_argv[0], PERL_COMMAND_NAME) == 0) // If Perl is the first command. + { + ptpf->m_launchPerl = TRUE; + + #ifdef MPK_ON + ptpf->m_perlSynchSemaphore = kSemaphoreAlloc((BYTE *)"pipeSemaphore", 0); + #else + ptpf->m_perlSynchSemaphore = OpenLocalSemaphore(0); + #endif //MPK_ON + } + else if (stricmp(ptpf->m_argv[0], (char *)"perlglob") == 0) + ptpf->m_doPerlGlob = TRUE; + + + // Create last argument, which will redirect to or from the temp file + if (!ptpf->m_doPerlGlob || ptpf->m_mode) + { + if (!ptpf->m_mode) // If read mode? + { + if (ptpf->m_launchPerl) + strcpy(ptpf->m_redirect, (char *)">"); + else + strcpy(ptpf->m_redirect, (char *)"(CLIB_OPT)/>"); + } + else + { + if (ptpf->m_launchPerl) + strcpy(ptpf->m_redirect, (char *)"<"); + else + strcpy(ptpf->m_redirect, (char *)"(CLIB_OPT)/<"); + } + strcat(ptpf->m_redirect, ptpf->m_fileName); + + if (ptpf->m_launchPerl) + { + char tbuf[15] = {'\0'}; + sprintf(tbuf, (char *)" -{%x", ptpf->m_perlSynchSemaphore); + strcat(ptpf->m_redirect, tbuf); + } + + strcpy(ptpf->m_argv[dindex], (char*) ptpf->m_redirect); + dindex++; + } + + if (dindex < (ptpf->m_pipeCommand->m_argc + 1)) + { + if(ptpf->m_argv[dindex]) + { + free(ptpf->m_argv[dindex]); + ptpf->m_argv[dindex] = NULL; // NULL termination - required for spawnvp call. + } + } - ptpf->m_argv_len = dindex; // Length of the argv array OR number of argv string values. - ptpf->m_argv[ptpf->m_argv_len] = NULL; // NULL termination - required for spawnvp call. + ptpf->m_argv_len = dindex; // Length of the argv array OR number of argv string values. + ptpf->m_argv[ptpf->m_argv_len] = NULL; // NULL termination - required for spawnvp call. - return TRUE; + return TRUE; } @@ -167,8 +167,8 @@ Description : This function opens the pipe file. Parameters : ptpf (IN) - Input structure. - command (IN) - Input command string. - mode (IN) - Mode of opening. + command (IN) - Input command string. + mode (IN) - Mode of opening. Returns : File pointer. @@ -176,281 +176,281 @@ FILE* fnPipeFileOpen(PTEMPPIPEFILE ptpf, char* command, char* mode) { - int i=0, j=0; + int i=0, j=0; - char tempName[_MAX_PATH] = {'\0'}; + char tempName[_MAX_PATH] = {'\0'}; - ptpf->m_fileName = (char *) malloc(_MAX_PATH * sizeof(char)); - if(ptpf->m_fileName == NULL) - return NULL; - - // The char array is emptied so that there is no junk characters. - strncpy(ptpf->m_fileName, "", (_MAX_PATH * sizeof(char))); - - - // Save off stuff - // - if(strchr(mode,'r') != 0) - ptpf->m_mode = FALSE; // Read mode - else if(strchr(mode,'w') != 0) - ptpf->m_mode = TRUE; // Write mode - else - { - if(ptpf->m_fileName != NULL) - { + ptpf->m_fileName = (char *) malloc(_MAX_PATH * sizeof(char)); + if(ptpf->m_fileName == NULL) + return NULL; + + // The char array is emptied so that there is no junk characters. + strncpy(ptpf->m_fileName, "", (_MAX_PATH * sizeof(char))); + + + // Save off stuff + // + if(strchr(mode,'r') != 0) + ptpf->m_mode = FALSE; // Read mode + else if(strchr(mode,'w') != 0) + ptpf->m_mode = TRUE; // Write mode + else + { + if(ptpf->m_fileName != NULL) + { // if (strlen(ptpf->m_fileName)) - if (ptpf->m_fileName) - unlink(ptpf->m_fileName); + if (ptpf->m_fileName) + unlink(ptpf->m_fileName); - free(ptpf->m_fileName); - ptpf->m_fileName = NULL; - } + free(ptpf->m_fileName); + ptpf->m_fileName = NULL; + } - return NULL; - } + return NULL; + } - ptpf->m_pipeCommand = (PCOMMANDLINEPARSER) malloc(sizeof(COMMANDLINEPARSER)); - if (!ptpf->m_pipeCommand) - { + ptpf->m_pipeCommand = (PCOMMANDLINEPARSER) malloc(sizeof(COMMANDLINEPARSER)); + if (!ptpf->m_pipeCommand) + { // if (strlen(ptpf->m_fileName)) - if (ptpf->m_fileName) - unlink(ptpf->m_fileName); + if (ptpf->m_fileName) + unlink(ptpf->m_fileName); - free(ptpf->m_fileName); - ptpf->m_fileName = NULL; + free(ptpf->m_fileName); + ptpf->m_fileName = NULL; - return NULL; - } + return NULL; + } - // Initialise the variables - ptpf->m_pipeCommand->m_isValid = TRUE; + // Initialise the variables + ptpf->m_pipeCommand->m_isValid = TRUE; /**** // Commented since these are not being used. Still retained here. // To be removed once things are proved to be working fine to a good confident level, - ptpf->m_pipeCommand->m_redirInName = NULL; - ptpf->m_pipeCommand->m_redirOutName = NULL; - ptpf->m_pipeCommand->m_redirErrName = NULL; - ptpf->m_pipeCommand->m_redirBothName = NULL; - ptpf->m_pipeCommand->nextarg = NULL; + ptpf->m_pipeCommand->m_redirInName = NULL; + ptpf->m_pipeCommand->m_redirOutName = NULL; + ptpf->m_pipeCommand->m_redirErrName = NULL; + ptpf->m_pipeCommand->m_redirBothName = NULL; + ptpf->m_pipeCommand->nextarg = NULL; ****/ - ptpf->m_pipeCommand->sSkippedToken = NULL; - ptpf->m_pipeCommand->m_argv = NULL; - ptpf->m_pipeCommand->new_argv = NULL; - - #ifdef MPK_ON - ptpf->m_pipeCommand->m_qSemaphore = NULL; - #else - ptpf->m_pipeCommand->m_qSemaphore = 0L; - #endif //MPK_ON - - ptpf->m_pipeCommand->m_noScreen = 0; - ptpf->m_pipeCommand->m_AutoDestroy = 0; - ptpf->m_pipeCommand->m_argc = 0; - ptpf->m_pipeCommand->m_argv_len = 1; - - - ptpf->m_pipeCommand->m_argv = (char **) malloc(ptpf->m_pipeCommand->m_argv_len * sizeof(char *)); - if (ptpf->m_pipeCommand->m_argv == NULL) - { - free(ptpf->m_pipeCommand); - ptpf->m_pipeCommand = NULL; + ptpf->m_pipeCommand->sSkippedToken = NULL; + ptpf->m_pipeCommand->m_argv = NULL; + ptpf->m_pipeCommand->new_argv = NULL; + + #ifdef MPK_ON + ptpf->m_pipeCommand->m_qSemaphore = NULL; + #else + ptpf->m_pipeCommand->m_qSemaphore = 0L; + #endif //MPK_ON + + ptpf->m_pipeCommand->m_noScreen = 0; + ptpf->m_pipeCommand->m_AutoDestroy = 0; + ptpf->m_pipeCommand->m_argc = 0; + ptpf->m_pipeCommand->m_argv_len = 1; + + + ptpf->m_pipeCommand->m_argv = (char **) malloc(ptpf->m_pipeCommand->m_argv_len * sizeof(char *)); + if (ptpf->m_pipeCommand->m_argv == NULL) + { + free(ptpf->m_pipeCommand); + ptpf->m_pipeCommand = NULL; // if (strlen(ptpf->m_fileName)) - if (ptpf->m_fileName) - unlink(ptpf->m_fileName); + if (ptpf->m_fileName) + unlink(ptpf->m_fileName); - free(ptpf->m_fileName); - ptpf->m_fileName = NULL; + free(ptpf->m_fileName); + ptpf->m_fileName = NULL; - return NULL; - } - ptpf->m_pipeCommand->m_argv[0] = (char *) malloc(MAX_DN_BYTES * sizeof(char)); - if (ptpf->m_pipeCommand->m_argv[0] == NULL) - { - for(j=0; jm_pipeCommand->m_argv[j]) - { - free(ptpf->m_pipeCommand->m_argv[j]); - ptpf->m_pipeCommand->m_argv[j]=NULL; - } - } - free(ptpf->m_pipeCommand->m_argv); - ptpf->m_pipeCommand->m_argv=NULL; + return NULL; + } + ptpf->m_pipeCommand->m_argv[0] = (char *) malloc(MAX_DN_BYTES * sizeof(char)); + if (ptpf->m_pipeCommand->m_argv[0] == NULL) + { + for(j=0; jm_pipeCommand->m_argv[j]) + { + free(ptpf->m_pipeCommand->m_argv[j]); + ptpf->m_pipeCommand->m_argv[j]=NULL; + } + } + free(ptpf->m_pipeCommand->m_argv); + ptpf->m_pipeCommand->m_argv=NULL; - free(ptpf->m_pipeCommand); - ptpf->m_pipeCommand = NULL; + free(ptpf->m_pipeCommand); + ptpf->m_pipeCommand = NULL; // if (strlen(ptpf->m_fileName)) - if (ptpf->m_fileName) - unlink(ptpf->m_fileName); + if (ptpf->m_fileName) + unlink(ptpf->m_fileName); - free(ptpf->m_fileName); - ptpf->m_fileName = NULL; + free(ptpf->m_fileName); + ptpf->m_fileName = NULL; - return NULL; - } + return NULL; + } - ptpf->m_redirect = (char *) malloc(MAX_DN_BYTES * sizeof(char)); - if (ptpf->m_redirect == NULL) - { - for(i=0; im_pipeCommand->m_argv_len; i++) - { - if(ptpf->m_pipeCommand->m_argv[i] != NULL) - { - free(ptpf->m_pipeCommand->m_argv[i]); - ptpf->m_pipeCommand->m_argv[i] = NULL; - } - } + ptpf->m_redirect = (char *) malloc(MAX_DN_BYTES * sizeof(char)); + if (ptpf->m_redirect == NULL) + { + for(i=0; im_pipeCommand->m_argv_len; i++) + { + if(ptpf->m_pipeCommand->m_argv[i] != NULL) + { + free(ptpf->m_pipeCommand->m_argv[i]); + ptpf->m_pipeCommand->m_argv[i] = NULL; + } + } - free(ptpf->m_pipeCommand->m_argv); - ptpf->m_pipeCommand->m_argv = NULL; + free(ptpf->m_pipeCommand->m_argv); + ptpf->m_pipeCommand->m_argv = NULL; - free(ptpf->m_pipeCommand); - ptpf->m_pipeCommand = NULL; + free(ptpf->m_pipeCommand); + ptpf->m_pipeCommand = NULL; // if (strlen(ptpf->m_fileName)) - if (ptpf->m_fileName) - unlink(ptpf->m_fileName); + if (ptpf->m_fileName) + unlink(ptpf->m_fileName); - free(ptpf->m_fileName); - ptpf->m_fileName = NULL; + free(ptpf->m_fileName); + ptpf->m_fileName = NULL; - return NULL; - } + return NULL; + } - // The char array is emptied. - // If it is not done so, then it could contain some junk values and the string length in that case - // will not be zero. This causes erroneous results in fnPipeFileMakeArgv() function - // where strlen(ptpf->m_redirect) is used as a check for incrementing the parameter count and - // it will wrongly get incremented in such cases. - strncpy(ptpf->m_redirect, "", (MAX_DN_BYTES * sizeof(char))); - - // Parse the parameters. - fnCommandLineParser(ptpf->m_pipeCommand, (char *)command, TRUE); - if (!ptpf->m_pipeCommand->m_isValid) - { - fnTempPipeFileReleaseMemory(ptpf); - return NULL; - } - - - // Create a temporary file name - // - strncpy ( tempName, fnNwGetEnvironmentStr((char *)"TEMP", NWDEFPERLTEMP), (_MAX_PATH - 20) ); - tempName[_MAX_PATH-20] = '\0'; - strcat(tempName, (char *)"\\plXXXXXX.tmp"); - if (!fnMy_MkTemp(tempName)) - { - fnTempPipeFileReleaseMemory(ptpf); - return NULL; - } - - // create a temporary place-holder file - fclose(fopen(tempName, (char *)"w")); - strcpy(ptpf->m_fileName, tempName); - - - // Make the argument array - if(!fnPipeFileMakeArgv(ptpf)) - { - fnTempPipeFileReleaseMemory(ptpf); - - // Release additional memory - if(ptpf->m_argv != NULL) - { - for(i=0; im_argv_len; i++) - { - if(ptpf->m_argv[i] != NULL) - { - free(ptpf->m_argv[i]); - ptpf->m_argv[i] = NULL; - } - } - - free(ptpf->m_argv); - ptpf->m_argv = NULL; - } - - return NULL; - } - - - // Open the temp file in the appropriate way... - // - if (!ptpf->m_mode) // If Read mode? - { - // we wish to spawn a command, intercept its output, - // and then get that output - // - if (!ptpf->m_argv[0]) - { - fnTempPipeFileReleaseMemory(ptpf); - - // Release additional memory - if(ptpf->m_argv != NULL) - { - for(i=0; im_argv_len; i++) - { - if(ptpf->m_argv[i] != NULL) - { - free(ptpf->m_argv[i]); - ptpf->m_argv[i] = NULL; - } - } - - free(ptpf->m_argv); - ptpf->m_argv = NULL; - } - - return NULL; - } - - if (ptpf->m_launchPerl) - fnPipeFileDoPerlLaunch(ptpf); - else - if (ptpf->m_doPerlGlob) - fnDoPerlGlob(ptpf->m_argv, ptpf->m_fileName); // hack to do perl globbing - else - spawnvp(P_WAIT, ptpf->m_argv[0], ptpf->m_argv); - - ptpf->m_file = fopen (ptpf->m_fileName, (char *)"r"); // Get the Pipe file handle - } - else if (ptpf->m_mode) // If Write mode? - { - // we wish to open the file for writing now and - // do the command later - // - ptpf->m_file = fopen(ptpf->m_fileName, (char *)"w"); - } - - fnTempPipeFileReleaseMemory(ptpf); - - // Release additional memory - if(ptpf->m_argv != NULL) - { - for(i=0; i<(ptpf->m_argv_len); i++) - { - if(ptpf->m_argv[i] != NULL) - { - free(ptpf->m_argv[i]); - ptpf->m_argv[i] = NULL; - } - } - - free(ptpf->m_argv); - ptpf->m_argv = NULL; - } + // The char array is emptied. + // If it is not done so, then it could contain some junk values and the string length in that case + // will not be zero. This causes erroneous results in fnPipeFileMakeArgv() function + // where strlen(ptpf->m_redirect) is used as a check for incrementing the parameter count and + // it will wrongly get incremented in such cases. + strncpy(ptpf->m_redirect, "", (MAX_DN_BYTES * sizeof(char))); + + // Parse the parameters. + fnCommandLineParser(ptpf->m_pipeCommand, (char *)command, TRUE); + if (!ptpf->m_pipeCommand->m_isValid) + { + fnTempPipeFileReleaseMemory(ptpf); + return NULL; + } + + + // Create a temporary file name + // + strncpy ( tempName, fnNwGetEnvironmentStr((char *)"TEMP", NWDEFPERLTEMP), (_MAX_PATH - 20) ); + tempName[_MAX_PATH-20] = '\0'; + strcat(tempName, (char *)"\\plXXXXXX.tmp"); + if (!fnMy_MkTemp(tempName)) + { + fnTempPipeFileReleaseMemory(ptpf); + return NULL; + } + + // create a temporary place-holder file + fclose(fopen(tempName, (char *)"w")); + strcpy(ptpf->m_fileName, tempName); + + + // Make the argument array + if(!fnPipeFileMakeArgv(ptpf)) + { + fnTempPipeFileReleaseMemory(ptpf); + + // Release additional memory + if(ptpf->m_argv != NULL) + { + for(i=0; im_argv_len; i++) + { + if(ptpf->m_argv[i] != NULL) + { + free(ptpf->m_argv[i]); + ptpf->m_argv[i] = NULL; + } + } + + free(ptpf->m_argv); + ptpf->m_argv = NULL; + } + + return NULL; + } + + + // Open the temp file in the appropriate way... + // + if (!ptpf->m_mode) // If Read mode? + { + // we wish to spawn a command, intercept its output, + // and then get that output + // + if (!ptpf->m_argv[0]) + { + fnTempPipeFileReleaseMemory(ptpf); + + // Release additional memory + if(ptpf->m_argv != NULL) + { + for(i=0; im_argv_len; i++) + { + if(ptpf->m_argv[i] != NULL) + { + free(ptpf->m_argv[i]); + ptpf->m_argv[i] = NULL; + } + } + + free(ptpf->m_argv); + ptpf->m_argv = NULL; + } + + return NULL; + } + + if (ptpf->m_launchPerl) + fnPipeFileDoPerlLaunch(ptpf); + else + if (ptpf->m_doPerlGlob) + fnDoPerlGlob(ptpf->m_argv, ptpf->m_fileName); // hack to do perl globbing + else + spawnvp(P_WAIT, ptpf->m_argv[0], ptpf->m_argv); + + ptpf->m_file = fopen (ptpf->m_fileName, (char *)"r"); // Get the Pipe file handle + } + else if (ptpf->m_mode) // If Write mode? + { + // we wish to open the file for writing now and + // do the command later + // + ptpf->m_file = fopen(ptpf->m_fileName, (char *)"w"); + } + + fnTempPipeFileReleaseMemory(ptpf); + + // Release additional memory + if(ptpf->m_argv != NULL) + { + for(i=0; i<(ptpf->m_argv_len); i++) + { + if(ptpf->m_argv[i] != NULL) + { + free(ptpf->m_argv[i]); + ptpf->m_argv[i] = NULL; + } + } + + free(ptpf->m_argv); + ptpf->m_argv = NULL; + } - - return ptpf->m_file; // Return the Pipe file handle. + + return ptpf->m_file; // Return the Pipe file handle. } @@ -468,71 +468,71 @@ void fnPipeFileClose(PTEMPPIPEFILE ptpf) { - int i = 0; + int i = 0; - if (ptpf->m_mode) // If Write mode? - { - // we wish to spawn a command using our temp file for - // its input - // - if(ptpf->m_file != NULL) - { - fclose (ptpf->m_file); - ptpf->m_file = NULL; - } - - if (ptpf->m_launchPerl) - fnPipeFileDoPerlLaunch(ptpf); - else if (ptpf->m_argv) - spawnvp(P_WAIT, ptpf->m_argv[0], ptpf->m_argv); - } - - - // Close the temporary Pipe File, if opened - if (ptpf->m_file) - { - fclose(ptpf->m_file); - ptpf->m_file = NULL; - } - // Delete the temporary Pipe Filename if still valid and free the memory associated with the file name. - if(ptpf->m_fileName != NULL) - { + if (ptpf->m_mode) // If Write mode? + { + // we wish to spawn a command using our temp file for + // its input + // + if(ptpf->m_file != NULL) + { + fclose (ptpf->m_file); + ptpf->m_file = NULL; + } + + if (ptpf->m_launchPerl) + fnPipeFileDoPerlLaunch(ptpf); + else if (ptpf->m_argv) + spawnvp(P_WAIT, ptpf->m_argv[0], ptpf->m_argv); + } + + + // Close the temporary Pipe File, if opened + if (ptpf->m_file) + { + fclose(ptpf->m_file); + ptpf->m_file = NULL; + } + // Delete the temporary Pipe Filename if still valid and free the memory associated with the file name. + if(ptpf->m_fileName != NULL) + { // if (strlen(ptpf->m_fileName)) - if (ptpf->m_fileName) - unlink(ptpf->m_fileName); + if (ptpf->m_fileName) + unlink(ptpf->m_fileName); - free(ptpf->m_fileName); - ptpf->m_fileName = NULL; - } + free(ptpf->m_fileName); + ptpf->m_fileName = NULL; + } /** - if(ptpf->m_argv != NULL) - { - for(i=0; i<(ptpf->m_argv_len); i++) - { - if(ptpf->m_argv[i] != NULL) - { - free(ptpf->m_argv[i]); - ptpf->m_argv[i] = NULL; - } - } - - free(ptpf->m_argv); - ptpf->m_argv = NULL; - } + if(ptpf->m_argv != NULL) + { + for(i=0; i<(ptpf->m_argv_len); i++) + { + if(ptpf->m_argv[i] != NULL) + { + free(ptpf->m_argv[i]); + ptpf->m_argv[i] = NULL; + } + } + + free(ptpf->m_argv); + ptpf->m_argv = NULL; + } **/ - if (ptpf->m_perlSynchSemaphore) - { - #ifdef MPK_ON - kSemaphoreFree(ptpf->m_perlSynchSemaphore); - #else - CloseLocalSemaphore(ptpf->m_perlSynchSemaphore); - #endif //MPK_ON - } + if (ptpf->m_perlSynchSemaphore) + { + #ifdef MPK_ON + kSemaphoreFree(ptpf->m_perlSynchSemaphore); + #else + CloseLocalSemaphore(ptpf->m_perlSynchSemaphore); + #endif //MPK_ON + } - return; + return; } @@ -550,30 +550,30 @@ void fnPipeFileDoPerlLaunch(PTEMPPIPEFILE ptpf) { - char curdir[_MAX_PATH] = {'\0'}; - char* pcwd = NULL; + char curdir[_MAX_PATH] = {'\0'}; + char* pcwd = NULL; - int i=0; + int i=0; - // save off the current working directory to restore later - // this is just a hack! these problems of synchronization and - // restoring calling context need a much better solution! - pcwd = (char *)getcwd(curdir, sizeof(curdir)-1); - fnSystemCommand(ptpf->m_argv, ptpf->m_argv_len); - if (ptpf->m_perlSynchSemaphore) - { - #ifdef MPK_ON - kSemaphoreWait(ptpf->m_perlSynchSemaphore); - #else - WaitOnLocalSemaphore(ptpf->m_perlSynchSemaphore); - #endif //MPK_ON - } + // save off the current working directory to restore later + // this is just a hack! these problems of synchronization and + // restoring calling context need a much better solution! + pcwd = (char *)getcwd(curdir, sizeof(curdir)-1); + fnSystemCommand(ptpf->m_argv, ptpf->m_argv_len); + if (ptpf->m_perlSynchSemaphore) + { + #ifdef MPK_ON + kSemaphoreWait(ptpf->m_perlSynchSemaphore); + #else + WaitOnLocalSemaphore(ptpf->m_perlSynchSemaphore); + #endif //MPK_ON + } - if (pcwd) - chdir(pcwd); + if (pcwd) + chdir(pcwd); - return; + return; } @@ -591,27 +591,27 @@ void fnTempPipeFile(PTEMPPIPEFILE ptpf) { - ptpf->m_fileName = NULL; + ptpf->m_fileName = NULL; - ptpf->m_mode = FALSE; // Default mode = Read mode. - ptpf->m_file = NULL; - ptpf->m_pipeCommand = NULL; - ptpf->m_argv = NULL; + ptpf->m_mode = FALSE; // Default mode = Read mode. + ptpf->m_file = NULL; + ptpf->m_pipeCommand = NULL; + ptpf->m_argv = NULL; - ptpf->m_redirect = NULL; + ptpf->m_redirect = NULL; - ptpf->m_launchPerl = FALSE; - ptpf->m_doPerlGlob = FALSE; + ptpf->m_launchPerl = FALSE; + ptpf->m_doPerlGlob = FALSE; - #ifdef MPK_ON - ptpf->m_perlSynchSemaphore = NULL; - #else - ptpf->m_perlSynchSemaphore = 0L; - #endif + #ifdef MPK_ON + ptpf->m_perlSynchSemaphore = NULL; + #else + ptpf->m_perlSynchSemaphore = 0L; + #endif - ptpf->m_argv_len = 0; + ptpf->m_argv_len = 0; - return; + return; } @@ -629,76 +629,76 @@ void fnTempPipeFileReleaseMemory(PTEMPPIPEFILE ptpf) { - int i=0; + int i=0; - if (ptpf->m_pipeCommand) - { - if(ptpf->m_pipeCommand->m_argv != NULL) - { - for(i=0; im_pipeCommand->m_argv_len; i++) - { - if(ptpf->m_pipeCommand->m_argv[i] != NULL) - { - free(ptpf->m_pipeCommand->m_argv[i]); - ptpf->m_pipeCommand->m_argv[i] = NULL; - } - } - - free(ptpf->m_pipeCommand->m_argv); - ptpf->m_pipeCommand->m_argv = NULL; - } - - if(ptpf->m_pipeCommand->sSkippedToken != NULL) - { - free(ptpf->m_pipeCommand->sSkippedToken); - ptpf->m_pipeCommand->sSkippedToken = NULL; - } + if (ptpf->m_pipeCommand) + { + if(ptpf->m_pipeCommand->m_argv != NULL) + { + for(i=0; im_pipeCommand->m_argv_len; i++) + { + if(ptpf->m_pipeCommand->m_argv[i] != NULL) + { + free(ptpf->m_pipeCommand->m_argv[i]); + ptpf->m_pipeCommand->m_argv[i] = NULL; + } + } + + free(ptpf->m_pipeCommand->m_argv); + ptpf->m_pipeCommand->m_argv = NULL; + } + + if(ptpf->m_pipeCommand->sSkippedToken != NULL) + { + free(ptpf->m_pipeCommand->sSkippedToken); + ptpf->m_pipeCommand->sSkippedToken = NULL; + } /**** // Commented since these are not being used. Still retained here. // To be removed once things are proved to be working fine to a good confident level, - if(ptpf->m_pipeCommand->nextarg) - { - free(ptpf->m_pipeCommand->nextarg); - ptpf->m_pipeCommand->nextarg = NULL; - } - - if(ptpf->m_pipeCommand->m_redirInName) - { - free(ptpf->m_pipeCommand->m_redirInName); - ptpf->m_pipeCommand->m_redirInName = NULL; - } - if(ptpf->m_pipeCommand->m_redirOutName) - { - free(ptpf->m_pipeCommand->m_redirOutName); - ptpf->m_pipeCommand->m_redirOutName = NULL; - } - if(ptpf->m_pipeCommand->m_redirErrName) - { - free(ptpf->m_pipeCommand->m_redirErrName); - ptpf->m_pipeCommand->m_redirErrName = NULL; - } - if(ptpf->m_pipeCommand->m_redirBothName) - { - free(ptpf->m_pipeCommand->m_redirBothName); - ptpf->m_pipeCommand->m_redirBothName = NULL; - } + if(ptpf->m_pipeCommand->nextarg) + { + free(ptpf->m_pipeCommand->nextarg); + ptpf->m_pipeCommand->nextarg = NULL; + } + + if(ptpf->m_pipeCommand->m_redirInName) + { + free(ptpf->m_pipeCommand->m_redirInName); + ptpf->m_pipeCommand->m_redirInName = NULL; + } + if(ptpf->m_pipeCommand->m_redirOutName) + { + free(ptpf->m_pipeCommand->m_redirOutName); + ptpf->m_pipeCommand->m_redirOutName = NULL; + } + if(ptpf->m_pipeCommand->m_redirErrName) + { + free(ptpf->m_pipeCommand->m_redirErrName); + ptpf->m_pipeCommand->m_redirErrName = NULL; + } + if(ptpf->m_pipeCommand->m_redirBothName) + { + free(ptpf->m_pipeCommand->m_redirBothName); + ptpf->m_pipeCommand->m_redirBothName = NULL; + } ****/ - if(ptpf->m_pipeCommand != NULL) - { - free(ptpf->m_pipeCommand); - ptpf->m_pipeCommand = NULL; - } - } - - if(ptpf->m_redirect != NULL) - { - free(ptpf->m_redirect); - ptpf->m_redirect = NULL; - } + if(ptpf->m_pipeCommand != NULL) + { + free(ptpf->m_pipeCommand); + ptpf->m_pipeCommand = NULL; + } + } + + if(ptpf->m_redirect != NULL) + { + free(ptpf->m_redirect); + ptpf->m_redirect = NULL; + } - return; + return; } diff -Nru perl-5.32.1/NetWare/nwpipe.h perl-5.34.0/NetWare/nwpipe.h --- perl-5.32.1/NetWare/nwpipe.h 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/nwpipe.h 2021-01-20 23:04:44.000000000 +0000 @@ -29,24 +29,24 @@ typedef struct tagTempPipeFile { - BOOL m_mode; // FALSE - Read mode ; TRUE - Write mode - BOOL m_launchPerl; - BOOL m_doPerlGlob; - - int m_argv_len; - - char * m_fileName; - char** m_argv; - char * m_redirect; - - #ifdef MPK_ON - SEMAPHORE m_perlSynchSemaphore; - #else - long m_perlSynchSemaphore; - #endif + BOOL m_mode; // FALSE - Read mode ; TRUE - Write mode + BOOL m_launchPerl; + BOOL m_doPerlGlob; + + int m_argv_len; + + char * m_fileName; + char** m_argv; + char * m_redirect; + + #ifdef MPK_ON + SEMAPHORE m_perlSynchSemaphore; + #else + long m_perlSynchSemaphore; + #endif - FILE* m_file; - PCOMMANDLINEPARSER m_pipeCommand; + FILE* m_file; + PCOMMANDLINEPARSER m_pipeCommand; } TEMPPIPEFILE, *PTEMPPIPEFILE; diff -Nru perl-5.32.1/NetWare/nwplglob.c perl-5.34.0/NetWare/nwplglob.c --- perl-5.32.1/NetWare/nwplglob.c 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/nwplglob.c 2021-01-20 23:04:44.000000000 +0000 @@ -36,7 +36,7 @@ Description : Perl globbing support: Takes an array of wildcard descriptors and produces from it a list of files that the wildcards expand into. - The list of files is written to the temporary file named by fileName. + The list of files is written to the temporary file named by fileName. Parameters : argv (IN) - Input argument vector. fileName (IN) - Input file name for storing globed file names. @@ -47,44 +47,44 @@ void fnDoPerlGlob(char** argv, char* fileName) { - FILE * redirOut = NULL; + FILE * redirOut = NULL; - if (*argv) - argv++; - if (*argv == NULL) - return; + if (*argv) + argv++; + if (*argv == NULL) + return; - redirOut = fopen((const char *)fileName, (const char *)"w"); - if (!redirOut) - return; + redirOut = fopen((const char *)fileName, (const char *)"w"); + if (!redirOut) + return; - do - { - DIR* dir = NULL; - DIR* fil = NULL; - char* pattern = NULL; + do + { + DIR* dir = NULL; + DIR* fil = NULL; + char* pattern = NULL; - pattern = *argv++; + pattern = *argv++; - dir = opendir((const char *)pattern); - if (!dir) - continue; + dir = opendir((const char *)pattern); + if (!dir) + continue; - /* find the last separator in pattern, NetWare has three: /\: */ - while (fil = readdir(dir)) - { - // The below displays the files separated by tab character. - // Also, it displays only the file names and not directories. - // If any other format is desired, it needs to be done here. - fprintf(redirOut, "%s\t", fil->d_name); - } + /* find the last separator in pattern, NetWare has three: /\: */ + while (fil = readdir(dir)) + { + // The below displays the files separated by tab character. + // Also, it displays only the file names and not directories. + // If any other format is desired, it needs to be done here. + fprintf(redirOut, "%s\t", fil->d_name); + } - closedir(dir); + closedir(dir); - } while (*argv); + } while (*argv); - fclose(redirOut); + fclose(redirOut); - return; + return; } diff -Nru perl-5.32.1/NetWare/NWTInfo.c perl-5.34.0/NetWare/NWTInfo.c --- perl-5.32.1/NetWare/NWTInfo.c 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/NWTInfo.c 2021-01-20 23:04:44.000000000 +0000 @@ -23,10 +23,10 @@ #include "nwtinfo.h" #ifdef MPK_ON - #include - #include + #include + #include #else - #include + #include #endif //MPK_ON // Number of entries in the hashtable @@ -42,11 +42,11 @@ // Semaphore to control access to global linked list // #ifdef MPK_ON - static SEMAPHORE g_tinfoSem = NULL; - static SEMAPHORE g_tCtxSem = NULL; + static SEMAPHORE g_tinfoSem = NULL; + static SEMAPHORE g_tCtxSem = NULL; #else - static LONG g_tinfoSem = 0L; - static LONG g_tCtxSem = 0L; + static LONG g_tinfoSem = 0L; + static LONG g_tCtxSem = 0L; #endif //MPK_ON // Hash table of thread information structures @@ -70,37 +70,37 @@ BOOL fnTerminateThreadInfo(void) { - int index = 0; + int index = 0; - if (g_tinfoSem) - { - #ifdef MPK_ON - kSemaphoreWait(g_tinfoSem); - #else - WaitOnLocalSemaphore(g_tinfoSem); - #endif //MPK_ON - for (index = 0; index < NUM_ENTRIES; index++) - { - if (g_ThreadInfo[index] != NULL) - { - #ifdef MPK_ON - kSemaphoreSignal(g_tinfoSem); - #else - SignalLocalSemaphore(g_tinfoSem); - #endif //MPK_ON - return FALSE; - } - } - #ifdef MPK_ON - kSemaphoreFree(g_tinfoSem); - g_tinfoSem = NULL; - #else - CloseLocalSemaphore(g_tinfoSem); - g_tinfoSem = 0; - #endif //MPK_ON - } + if (g_tinfoSem) + { + #ifdef MPK_ON + kSemaphoreWait(g_tinfoSem); + #else + WaitOnLocalSemaphore(g_tinfoSem); + #endif //MPK_ON + for (index = 0; index < NUM_ENTRIES; index++) + { + if (g_ThreadInfo[index] != NULL) + { + #ifdef MPK_ON + kSemaphoreSignal(g_tinfoSem); + #else + SignalLocalSemaphore(g_tinfoSem); + #endif //MPK_ON + return FALSE; + } + } + #ifdef MPK_ON + kSemaphoreFree(g_tinfoSem); + g_tinfoSem = NULL; + #else + CloseLocalSemaphore(g_tinfoSem); + g_tinfoSem = 0; + #endif //MPK_ON + } - return TRUE; + return TRUE; } @@ -109,7 +109,7 @@ Function : fnInitializeThreadInfo Description : Initializes the global ThreadInfo hashtable and semaphore. - Call once per NLM instance + Call once per NLM instance Parameters : None. @@ -119,22 +119,22 @@ void fnInitializeThreadInfo(void) { - int index = 0; + int index = 0; - if (g_tinfoSem) - return; + if (g_tinfoSem) + return; - #ifdef MPK_ON - g_tinfoSem = kSemaphoreAlloc((BYTE *)"threadInfo", 1); - #else - g_tinfoSem = OpenLocalSemaphore(1); - #endif //MPK_ON - + #ifdef MPK_ON + g_tinfoSem = kSemaphoreAlloc((BYTE *)"threadInfo", 1); + #else + g_tinfoSem = OpenLocalSemaphore(1); + #endif //MPK_ON + - for (index = 0; index < NUM_ENTRIES; index++) - g_ThreadInfo[index] = NULL; + for (index = 0; index < NUM_ENTRIES; index++) + g_ThreadInfo[index] = NULL; - return; + return; } @@ -152,18 +152,18 @@ BOOL fnRegisterWithThreadTable(void) { - ThreadInfo* tinfo = NULL; + ThreadInfo* tinfo = NULL; - #ifdef MPK_ON - tinfo = fnAddThreadInfo(labs((int)kCurrentThread())); - #else - tinfo = fnAddThreadInfo(GetThreadID()); - #endif //MPK_ON - - if (!tinfo) - return FALSE; - else - return TRUE; + #ifdef MPK_ON + tinfo = fnAddThreadInfo(labs((int)kCurrentThread())); + #else + tinfo = fnAddThreadInfo(GetThreadID()); + #endif //MPK_ON + + if (!tinfo) + return FALSE; + else + return TRUE; } @@ -181,11 +181,11 @@ BOOL fnUnregisterWithThreadTable(void) { - #ifdef MPK_ON - return fnRemoveThreadInfo(labs((int)kCurrentThread())); - #else - return fnRemoveThreadInfo(GetThreadID()); - #endif //MPK_ON + #ifdef MPK_ON + return fnRemoveThreadInfo(labs((int)kCurrentThread())); + #else + return fnRemoveThreadInfo(GetThreadID()); + #endif //MPK_ON } @@ -203,50 +203,50 @@ ThreadInfo* fnAddThreadInfo(int tid) { - ThreadInfo* tip = NULL; - int index = 0; + ThreadInfo* tip = NULL; + int index = 0; - if (g_tinfoSem) - { - #ifdef MPK_ON - kSemaphoreWait(g_tinfoSem); - #else - WaitOnLocalSemaphore(g_tinfoSem); - #endif //MPK_ON - } - - // Add a new one to the beginning of the hash entry - // - tip = (ThreadInfo *) malloc(sizeof(ThreadInfo)); - if (tip == NULL) - { - if (g_tinfoSem) - { - #ifdef MPK_ON - kSemaphoreSignal(g_tinfoSem); - #else - SignalLocalSemaphore(g_tinfoSem); - #endif //MPK_ON - } - return NULL; - } - index = INDEXOF(tid); // just take the bottom five bits - tip->next = g_ThreadInfo[index]; - tip->tid = tid; - tip->m_dontTouchHashLists = FALSE; - tip->m_allocList = NULL; - - g_ThreadInfo [index] = tip; - if (g_tinfoSem) - { - #ifdef MPK_ON - kSemaphoreSignal(g_tinfoSem); - #else - SignalLocalSemaphore(g_tinfoSem); - #endif //MPK_ON - } + if (g_tinfoSem) + { + #ifdef MPK_ON + kSemaphoreWait(g_tinfoSem); + #else + WaitOnLocalSemaphore(g_tinfoSem); + #endif //MPK_ON + } + + // Add a new one to the beginning of the hash entry + // + tip = (ThreadInfo *) malloc(sizeof(ThreadInfo)); + if (tip == NULL) + { + if (g_tinfoSem) + { + #ifdef MPK_ON + kSemaphoreSignal(g_tinfoSem); + #else + SignalLocalSemaphore(g_tinfoSem); + #endif //MPK_ON + } + return NULL; + } + index = INDEXOF(tid); // just take the bottom five bits + tip->next = g_ThreadInfo[index]; + tip->tid = tid; + tip->m_dontTouchHashLists = FALSE; + tip->m_allocList = NULL; + + g_ThreadInfo [index] = tip; + if (g_tinfoSem) + { + #ifdef MPK_ON + kSemaphoreSignal(g_tinfoSem); + #else + SignalLocalSemaphore(g_tinfoSem); + #endif //MPK_ON + } - return tip; + return tip; } @@ -255,7 +255,7 @@ Function : fnRemoveThreadInfo Description : Frees the specified thread info structure and removes it from the - global linked list. + global linked list. Parameters : tid (IN) - ID of the thread. @@ -265,54 +265,54 @@ BOOL fnRemoveThreadInfo(int tid) { - ThreadInfo* tip = NULL; - ThreadInfo* prevt = NULL; - int index = INDEXOF(tid); // just take the bottom five bits - - if (g_tinfoSem) - { - #ifdef MPK_ON - kSemaphoreWait(g_tinfoSem); - #else - WaitOnLocalSemaphore(g_tinfoSem); - #endif //MPK_ON - } - - for (tip = g_ThreadInfo[index]; tip != NULL; tip = tip->next) - { - if (tip->tid == tid) - { - if (prevt == NULL) - g_ThreadInfo[index] = tip->next; - else - prevt->next = tip->next; - - free(tip); - tip=NULL; - if (g_tinfoSem) - { - #ifdef MPK_ON - kSemaphoreSignal(g_tinfoSem); - #else - SignalLocalSemaphore(g_tinfoSem); - #endif //MPK_ON - } - - return TRUE; - } - prevt = tip; - } - - if (g_tinfoSem) - { - #ifdef MPK_ON - kSemaphoreSignal(g_tinfoSem); - #else - SignalLocalSemaphore(g_tinfoSem); - #endif //MPK_ON - } + ThreadInfo* tip = NULL; + ThreadInfo* prevt = NULL; + int index = INDEXOF(tid); // just take the bottom five bits + + if (g_tinfoSem) + { + #ifdef MPK_ON + kSemaphoreWait(g_tinfoSem); + #else + WaitOnLocalSemaphore(g_tinfoSem); + #endif //MPK_ON + } + + for (tip = g_ThreadInfo[index]; tip != NULL; tip = tip->next) + { + if (tip->tid == tid) + { + if (prevt == NULL) + g_ThreadInfo[index] = tip->next; + else + prevt->next = tip->next; + + free(tip); + tip=NULL; + if (g_tinfoSem) + { + #ifdef MPK_ON + kSemaphoreSignal(g_tinfoSem); + #else + SignalLocalSemaphore(g_tinfoSem); + #endif //MPK_ON + } + + return TRUE; + } + prevt = tip; + } + + if (g_tinfoSem) + { + #ifdef MPK_ON + kSemaphoreSignal(g_tinfoSem); + #else + SignalLocalSemaphore(g_tinfoSem); + #endif //MPK_ON + } - return FALSE; // entry not found + return FALSE; // entry not found } @@ -330,153 +330,153 @@ ThreadInfo* fnGetThreadInfo(int tid) { - ThreadInfo* tip; - int index = INDEXOF(tid); // just take the bottom five bits + ThreadInfo* tip; + int index = INDEXOF(tid); // just take the bottom five bits - if (g_tinfoSem) { - #ifdef MPK_ON - kSemaphoreWait(g_tinfoSem); - #else - WaitOnLocalSemaphore(g_tinfoSem); - #endif //MPK_ON - } - - // see if this is already in the table at the index'th offset - // - for (tip = g_ThreadInfo[index]; tip != NULL; tip = tip->next) - { - if (tip->tid == tid) - { - if (g_tinfoSem) - { - #ifdef MPK_ON - kSemaphoreSignal(g_tinfoSem); - #else - SignalLocalSemaphore(g_tinfoSem); - #endif //MPK_ON - } - return tip; - } - } - - if (g_tinfoSem) - { - #ifdef MPK_ON - kSemaphoreSignal(g_tinfoSem); - #else - SignalLocalSemaphore(g_tinfoSem); - #endif //MPK_ON - } + if (g_tinfoSem) { + #ifdef MPK_ON + kSemaphoreWait(g_tinfoSem); + #else + WaitOnLocalSemaphore(g_tinfoSem); + #endif //MPK_ON + } + + // see if this is already in the table at the index'th offset + // + for (tip = g_ThreadInfo[index]; tip != NULL; tip = tip->next) + { + if (tip->tid == tid) + { + if (g_tinfoSem) + { + #ifdef MPK_ON + kSemaphoreSignal(g_tinfoSem); + #else + SignalLocalSemaphore(g_tinfoSem); + #endif //MPK_ON + } + return tip; + } + } + + if (g_tinfoSem) + { + #ifdef MPK_ON + kSemaphoreSignal(g_tinfoSem); + #else + SignalLocalSemaphore(g_tinfoSem); + #endif //MPK_ON + } - return NULL; + return NULL; } BOOL fnInsertHashListAddrs(void *addrs, BOOL dontTouchHashList) { - ThreadInfo* tip; - int index,tid; + ThreadInfo* tip; + int index,tid; - if (g_tinfoSem) - { - #ifdef MPK_ON - kSemaphoreWait(g_tinfoSem); - #else - WaitOnLocalSemaphore(g_tinfoSem); - #endif //MPK_ON - } - - #ifdef MPK_ON - tid=index = abs(kCurrentThread()); - #else - tid=index = GetThreadID(); - #endif //MPK_ON - - index = INDEXOF(index); // just take the bottom five bits - - // see if this is already in the table at the index'th offset - // - for (tip = g_ThreadInfo[index]; tip != NULL; tip = tip->next) - { - if (tip->tid == tid) - { - if (g_tinfoSem) - { - #ifdef MPK_ON - kSemaphoreSignal(g_tinfoSem); - #else - SignalLocalSemaphore(g_tinfoSem); - #endif //MPK_ON - } - tip->m_allocList = addrs; - tip->m_dontTouchHashLists = dontTouchHashList; - return TRUE; - } - } - - if (g_tinfoSem) - { - #ifdef MPK_ON - kSemaphoreSignal(g_tinfoSem); - #else - SignalLocalSemaphore(g_tinfoSem); - #endif //MPK_ON - } + if (g_tinfoSem) + { + #ifdef MPK_ON + kSemaphoreWait(g_tinfoSem); + #else + WaitOnLocalSemaphore(g_tinfoSem); + #endif //MPK_ON + } + + #ifdef MPK_ON + tid=index = abs(kCurrentThread()); + #else + tid=index = GetThreadID(); + #endif //MPK_ON + + index = INDEXOF(index); // just take the bottom five bits + + // see if this is already in the table at the index'th offset + // + for (tip = g_ThreadInfo[index]; tip != NULL; tip = tip->next) + { + if (tip->tid == tid) + { + if (g_tinfoSem) + { + #ifdef MPK_ON + kSemaphoreSignal(g_tinfoSem); + #else + SignalLocalSemaphore(g_tinfoSem); + #endif //MPK_ON + } + tip->m_allocList = addrs; + tip->m_dontTouchHashLists = dontTouchHashList; + return TRUE; + } + } + + if (g_tinfoSem) + { + #ifdef MPK_ON + kSemaphoreSignal(g_tinfoSem); + #else + SignalLocalSemaphore(g_tinfoSem); + #endif //MPK_ON + } - return FALSE; + return FALSE; } BOOL fnGetHashListAddrs(void **addrs, BOOL *dontTouchHashList) { - ThreadInfo* tip; - int index,tid; + ThreadInfo* tip; + int index,tid; - if (g_tinfoSem) - { - #ifdef MPK_ON - kSemaphoreWait(g_tinfoSem); - #else - WaitOnLocalSemaphore(g_tinfoSem); - #endif //MPK_ON - } - - #ifdef MPK_ON - tid=index = abs(kCurrentThread()); - #else - tid=index = GetThreadID(); - #endif //MPK_ON - - index = INDEXOF(index); // just take the bottom five bits - - // see if this is already in the table at the index'th offset - // - for (tip = g_ThreadInfo[index]; tip != NULL; tip = tip->next) - { - if (tip->tid == tid) - { - if (g_tinfoSem) - { - #ifdef MPK_ON - kSemaphoreSignal(g_tinfoSem); - #else - SignalLocalSemaphore(g_tinfoSem); - #endif //MPK_ON - } - *addrs = tip->m_allocList; - *dontTouchHashList = tip->m_dontTouchHashLists; - return TRUE; - } - } - - if (g_tinfoSem) - { - #ifdef MPK_ON - kSemaphoreSignal(g_tinfoSem); - #else - SignalLocalSemaphore(g_tinfoSem); - #endif //MPK_ON - } + if (g_tinfoSem) + { + #ifdef MPK_ON + kSemaphoreWait(g_tinfoSem); + #else + WaitOnLocalSemaphore(g_tinfoSem); + #endif //MPK_ON + } + + #ifdef MPK_ON + tid=index = abs(kCurrentThread()); + #else + tid=index = GetThreadID(); + #endif //MPK_ON + + index = INDEXOF(index); // just take the bottom five bits + + // see if this is already in the table at the index'th offset + // + for (tip = g_ThreadInfo[index]; tip != NULL; tip = tip->next) + { + if (tip->tid == tid) + { + if (g_tinfoSem) + { + #ifdef MPK_ON + kSemaphoreSignal(g_tinfoSem); + #else + SignalLocalSemaphore(g_tinfoSem); + #endif //MPK_ON + } + *addrs = tip->m_allocList; + *dontTouchHashList = tip->m_dontTouchHashLists; + return TRUE; + } + } + + if (g_tinfoSem) + { + #ifdef MPK_ON + kSemaphoreSignal(g_tinfoSem); + #else + SignalLocalSemaphore(g_tinfoSem); + #endif //MPK_ON + } - return FALSE; + return FALSE; } @@ -494,20 +494,20 @@ long fnInitializeThreadCtx(void) { - int index = 0; - //long tid; + int index = 0; + //long tid; - if (!g_tCtxSem) { - #ifdef MPK_ON - g_tCtxSem = kSemaphoreAlloc((BYTE *)"threadCtx", 1); - #else - g_tCtxSem = OpenLocalSemaphore(1); - #endif //MPK_ON + if (!g_tCtxSem) { + #ifdef MPK_ON + g_tCtxSem = kSemaphoreAlloc((BYTE *)"threadCtx", 1); + #else + g_tCtxSem = OpenLocalSemaphore(1); + #endif //MPK_ON - g_ThreadCtx =NULL; - } + g_ThreadCtx =NULL; + } - return 0l; + return 0l; } @@ -518,7 +518,7 @@ Description : Add a new thread context. Parameters : lTLSIndex (IN) - Index - t (IN) - void pointer. + t (IN) - void pointer. Returns : Pointer to ThreadContext structure. @@ -526,67 +526,67 @@ ThreadContext* fnAddThreadCtx(long lTLSIndex, void *t) { - ThreadContext* tip = NULL; - ThreadContext* temp = NULL; + ThreadContext* tip = NULL; + ThreadContext* temp = NULL; - if (g_tCtxSem) - { - #ifdef MPK_ON - kSemaphoreWait(g_tCtxSem); - #else - WaitOnLocalSemaphore(g_tCtxSem); - #endif //MPK_ON - } - - // add a new one to the beginning of the list - // - tip = (ThreadContext *) malloc(sizeof(ThreadContext)); - if (tip == NULL) - { - if (g_tCtxSem) - { - #ifdef MPK_ON - kSemaphoreSignal(g_tCtxSem); - #else - SignalLocalSemaphore(g_tCtxSem); - #endif //MPK_ON - } - return NULL; - } - - #ifdef MPK_ON - lTLSIndex = labs(kCurrentThread()); - #else - lTLSIndex = GetThreadID(); - #endif //MPK_ON - - tip->next = NULL; - tip->tid = lTLSIndex; - tip->tInfo = t; - - if(g_ThreadCtx==NULL) { - g_ThreadCtx = tip; - } else { - int count=0; - //Traverse to the end - temp = g_ThreadCtx; - while(temp->next != NULL) - { - temp = temp->next; - count++; - } - temp->next = tip; - } - - if (g_tCtxSem) - { - #ifdef MPK_ON - kSemaphoreSignal(g_tCtxSem); - #else - SignalLocalSemaphore(g_tCtxSem); - #endif //MPK_ON - } - return tip; + if (g_tCtxSem) + { + #ifdef MPK_ON + kSemaphoreWait(g_tCtxSem); + #else + WaitOnLocalSemaphore(g_tCtxSem); + #endif //MPK_ON + } + + // add a new one to the beginning of the list + // + tip = (ThreadContext *) malloc(sizeof(ThreadContext)); + if (tip == NULL) + { + if (g_tCtxSem) + { + #ifdef MPK_ON + kSemaphoreSignal(g_tCtxSem); + #else + SignalLocalSemaphore(g_tCtxSem); + #endif //MPK_ON + } + return NULL; + } + + #ifdef MPK_ON + lTLSIndex = labs(kCurrentThread()); + #else + lTLSIndex = GetThreadID(); + #endif //MPK_ON + + tip->next = NULL; + tip->tid = lTLSIndex; + tip->tInfo = t; + + if(g_ThreadCtx==NULL) { + g_ThreadCtx = tip; + } else { + int count=0; + //Traverse to the end + temp = g_ThreadCtx; + while(temp->next != NULL) + { + temp = temp->next; + count++; + } + temp->next = tip; + } + + if (g_tCtxSem) + { + #ifdef MPK_ON + kSemaphoreSignal(g_tCtxSem); + #else + SignalLocalSemaphore(g_tCtxSem); + #endif //MPK_ON + } + return tip; } @@ -604,58 +604,58 @@ BOOL fnRemoveThreadCtx(long lTLSIndex) { - ThreadContext* tip = NULL; - ThreadContext* prevt = NULL; + ThreadContext* tip = NULL; + ThreadContext* prevt = NULL; - if (g_tCtxSem) - { - #ifdef MPK_ON - kSemaphoreWait(g_tCtxSem); - #else - WaitOnLocalSemaphore(g_tCtxSem); - #endif //MPK_ON - } - - #ifdef MPK_ON - lTLSIndex = labs(kCurrentThread()); - #else - lTLSIndex = GetThreadID(); - #endif //MPK_ON - - tip = g_ThreadCtx; - while(tip) { - if (tip->tid == lTLSIndex) { - if (prevt == NULL) - g_ThreadCtx = tip->next; - else - prevt->next = tip->next; - - free(tip); - tip=NULL; - if (g_tCtxSem) - { - #ifdef MPK_ON - kSemaphoreSignal(g_tCtxSem); - #else - SignalLocalSemaphore(g_tCtxSem); - #endif //MPK_ON - } - return TRUE; - } - prevt = tip; - tip = tip->next; - } - - if (g_tCtxSem) - { - #ifdef MPK_ON - kSemaphoreSignal(g_tCtxSem); - #else - SignalLocalSemaphore(g_tCtxSem); - #endif //MPK_ON - } + if (g_tCtxSem) + { + #ifdef MPK_ON + kSemaphoreWait(g_tCtxSem); + #else + WaitOnLocalSemaphore(g_tCtxSem); + #endif //MPK_ON + } + + #ifdef MPK_ON + lTLSIndex = labs(kCurrentThread()); + #else + lTLSIndex = GetThreadID(); + #endif //MPK_ON + + tip = g_ThreadCtx; + while(tip) { + if (tip->tid == lTLSIndex) { + if (prevt == NULL) + g_ThreadCtx = tip->next; + else + prevt->next = tip->next; + + free(tip); + tip=NULL; + if (g_tCtxSem) + { + #ifdef MPK_ON + kSemaphoreSignal(g_tCtxSem); + #else + SignalLocalSemaphore(g_tCtxSem); + #endif //MPK_ON + } + return TRUE; + } + prevt = tip; + tip = tip->next; + } + + if (g_tCtxSem) + { + #ifdef MPK_ON + kSemaphoreSignal(g_tCtxSem); + #else + SignalLocalSemaphore(g_tCtxSem); + #endif //MPK_ON + } - return FALSE; // entry not found + return FALSE; // entry not found } @@ -673,48 +673,48 @@ void* fnGetThreadCtx(long lTLSIndex) { - ThreadContext* tip; + ThreadContext* tip; - if (g_tCtxSem) - { - #ifdef MPK_ON - kSemaphoreWait(g_tCtxSem); - #else - WaitOnLocalSemaphore(g_tCtxSem); - #endif //MPK_ON - } - - #ifdef MPK_ON - lTLSIndex = labs(kCurrentThread()); - #else - lTLSIndex = GetThreadID(); - #endif //MPK_ON - - tip = g_ThreadCtx; - while(tip) { - if (tip->tid == lTLSIndex) { - if (g_tCtxSem) - { - #ifdef MPK_ON - kSemaphoreSignal(g_tCtxSem); - #else - SignalLocalSemaphore(g_tCtxSem); - #endif //MPK_ON - } - return (tip->tInfo); - } - tip=tip->next; - } - - if (g_tCtxSem) - { - #ifdef MPK_ON - kSemaphoreSignal(g_tCtxSem); - #else - SignalLocalSemaphore(g_tCtxSem); - #endif //MPK_ON - } + if (g_tCtxSem) + { + #ifdef MPK_ON + kSemaphoreWait(g_tCtxSem); + #else + WaitOnLocalSemaphore(g_tCtxSem); + #endif //MPK_ON + } + + #ifdef MPK_ON + lTLSIndex = labs(kCurrentThread()); + #else + lTLSIndex = GetThreadID(); + #endif //MPK_ON + + tip = g_ThreadCtx; + while(tip) { + if (tip->tid == lTLSIndex) { + if (g_tCtxSem) + { + #ifdef MPK_ON + kSemaphoreSignal(g_tCtxSem); + #else + SignalLocalSemaphore(g_tCtxSem); + #endif //MPK_ON + } + return (tip->tInfo); + } + tip=tip->next; + } + + if (g_tCtxSem) + { + #ifdef MPK_ON + kSemaphoreSignal(g_tCtxSem); + #else + SignalLocalSemaphore(g_tCtxSem); + #endif //MPK_ON + } - return NULL; + return NULL; } diff -Nru perl-5.32.1/NetWare/nwtinfo.h perl-5.34.0/NetWare/nwtinfo.h --- perl-5.32.1/NetWare/nwtinfo.h 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/nwtinfo.h 2021-01-20 23:04:44.000000000 +0000 @@ -25,10 +25,10 @@ typedef struct tagThreadInfo { - int tid; - struct tagThreadInfo *next; - BOOL m_dontTouchHashLists; - void* m_allocList; + int tid; + struct tagThreadInfo *next; + BOOL m_dontTouchHashLists; + void* m_allocList; }ThreadInfo; void fnInitializeThreadInfo(void); @@ -39,17 +39,17 @@ ThreadInfo* fnGetThreadInfo(int tid); #ifdef __cplusplus - //For storing and retrieving Watcom Hash list address - extern "C" BOOL fnInsertHashListAddrs(void *addrs, BOOL dontTouchHashList); - //Registering with the Thread table - extern "C" BOOL fnRegisterWithThreadTable(void); - extern "C" BOOL fnUnregisterWithThreadTable(void); + //For storing and retrieving Watcom Hash list address + extern "C" BOOL fnInsertHashListAddrs(void *addrs, BOOL dontTouchHashList); + //Registering with the Thread table + extern "C" BOOL fnRegisterWithThreadTable(void); + extern "C" BOOL fnUnregisterWithThreadTable(void); #else - //For storing and retrieving Watcom Hash list address - BOOL fnInsertHashListAddrs(void *addrs, BOOL dontTouchHashList); - //Registering with the Thread table - BOOL fnRegisterWithThreadTable(void); - BOOL fnUnregisterWithThreadTable(void); + //For storing and retrieving Watcom Hash list address + BOOL fnInsertHashListAddrs(void *addrs, BOOL dontTouchHashList); + //Registering with the Thread table + BOOL fnRegisterWithThreadTable(void); + BOOL fnUnregisterWithThreadTable(void); #endif BOOL fnGetHashListAddrs(void **addrs, BOOL *dontTouchHashList); @@ -58,9 +58,9 @@ //or see if the above portion can be removed once this works properly typedef struct tagThreadCtx { - long tid; - void *tInfo; - struct tagThreadCtx *next; + long tid; + void *tInfo; + struct tagThreadCtx *next; }ThreadContext; diff -Nru perl-5.32.1/NetWare/NWUtil.c perl-5.34.0/NetWare/NWUtil.c --- perl-5.32.1/NetWare/NWUtil.c 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/NWUtil.c 2021-01-20 23:04:44.000000000 +0000 @@ -57,7 +57,7 @@ Function : fnSkipWhite Description : This function skips the white space characters in the given string and - returns the resultant value. + returns the resultant value. Parameters : s (IN) - Input string. @@ -67,9 +67,9 @@ char *fnSkipWhite(char *s) { - while (isspace(*s)) - s++; - return s; + while (isspace(*s)) + s++; + return s; } @@ -79,10 +79,10 @@ Function : fnNwGetEnvironmentStr Description : This function returns the NetWare environment string if available, - otherwise returns the supplied default value + otherwise returns the supplied default value Parameters : name (IN) - To hold the NetWare environment value. - defaultvalue (IN) - Default value. + defaultvalue (IN) - Default value. Returns : String. @@ -91,10 +91,10 @@ char *fnNwGetEnvironmentStr(char *name, char *defaultvalue) { - char* ret = getenv(name); - if (ret == NULL) - ret = defaultvalue; - return ret; + char* ret = getenv(name); + if (ret == NULL) + ret = defaultvalue; + return ret; } @@ -104,11 +104,11 @@ Function : fnCommandLineParser Description : This function parses the command line into argc/argv style of - Number of params and array of params. + Number of params and array of params. Parameters : pclp (IN) - CommandLine structure. - commandLine (IN) - CommandLine String. - preserverQuotes (IN) - Indicates whether to preserve/copy the quotes or not. + commandLine (IN) - CommandLine String. + preserverQuotes (IN) - Indicates whether to preserve/copy the quotes or not. Returns : Nothing. @@ -116,275 +116,275 @@ void fnCommandLineParser(PCOMMANDLINEPARSER pclp, char * commandLine, BOOL preserveQuotes) { - char *buffer = NULL; + char *buffer = NULL; - int index = 0; - int do_delete = 1; - int i=0, j=0, k=0; + int index = 0; + int do_delete = 1; + int i=0, j=0, k=0; - // +1 makes room for the terminating NULL - buffer = (char *) malloc((strlen(commandLine) + 1) * sizeof(char)); - if (buffer == NULL) - { - pclp->m_isValid = FALSE; - return; - } + // +1 makes room for the terminating NULL + buffer = (char *) malloc((strlen(commandLine) + 1) * sizeof(char)); + if (buffer == NULL) + { + pclp->m_isValid = FALSE; + return; + } - if (preserveQuotes) - { - // No I/O redirection nor quote processing if preserveQuotes + if (preserveQuotes) + { + // No I/O redirection nor quote processing if preserveQuotes - char *s = NULL; - char *sSkippedToken = NULL; + char *s = NULL; + char *sSkippedToken = NULL; - strcpy(buffer, commandLine); - s = buffer; - s = fnSkipWhite(s); // Skip white spaces. + strcpy(buffer, commandLine); + s = buffer; + s = fnSkipWhite(s); // Skip white spaces. - s2 = s; // Update the global pointer. + s2 = s; // Update the global pointer. - pclp->sSkippedToken = (char *) malloc(MAX_DN_BYTES * sizeof(char)); - if(pclp->sSkippedToken == NULL) - { - pclp->m_isValid = FALSE; - return; - } + pclp->sSkippedToken = (char *) malloc(MAX_DN_BYTES * sizeof(char)); + if(pclp->sSkippedToken == NULL) + { + pclp->m_isValid = FALSE; + return; + } - while (*s && pclp->m_isValid) - { + while (*s && pclp->m_isValid) + { /**** // Commented since only one time malloc and free is enough as is done outside this while loop. // It is not required to do them everytime the execution comes into this while loop. // Still retained here. Remove this once things are proved to be working fine to a good confident level, - if(pclp->sSkippedToken) - { - free(pclp->sSkippedToken); - pclp->sSkippedToken = NULL; - } - - if(pclp->sSkippedToken == NULL) - { - pclp->sSkippedToken = (char *) malloc(MAX_DN_BYTES * sizeof(char)); - if(pclp->sSkippedToken == NULL) - { - pclp->m_isValid = FALSE; - return; - } - } + if(pclp->sSkippedToken) + { + free(pclp->sSkippedToken); + pclp->sSkippedToken = NULL; + } + + if(pclp->sSkippedToken == NULL) + { + pclp->sSkippedToken = (char *) malloc(MAX_DN_BYTES * sizeof(char)); + if(pclp->sSkippedToken == NULL) + { + pclp->m_isValid = FALSE; + return; + } + } ****/ - // Empty the string. - strncpy(pclp->sSkippedToken, "", (MAX_DN_BYTES * sizeof(char))); + // Empty the string. + strncpy(pclp->sSkippedToken, "", (MAX_DN_BYTES * sizeof(char))); - // s is advanced by fnSkipToken - pclp->sSkippedToken = fnSkipToken(s, pclp->sSkippedToken); // Collect the next command-line argument. + // s is advanced by fnSkipToken + pclp->sSkippedToken = fnSkipToken(s, pclp->sSkippedToken); // Collect the next command-line argument. - s2 = fnSkipWhite(s2); // s2 is already updated by fnSkipToken. - s = s2; // Update the local pointer too. + s2 = fnSkipWhite(s2); // s2 is already updated by fnSkipToken. + s = s2; // Update the local pointer too. - fnAppendArgument(pclp, pclp->sSkippedToken); // Append the argument into an array. - } - - if(pclp->sSkippedToken) - { - free(pclp->sSkippedToken); - pclp->sSkippedToken = NULL; - } - } - else - { - char *s = NULL; - - strcpy(buffer, commandLine); - s = buffer; - s = fnSkipWhite(s); - - s1 = s; // Update the global pointer. - - while (*s && pclp->m_isValid) - { - // s is advanced by fnScanToken - // Check for I/O redirection here, *outside* of - // fnScanToken(), so that quote-protected angle - // brackets do NOT cause redirection. - if (*s == '<') - { - s = fnSkipWhite(s+1); // get stdin redirection - - if(pclp->m_redirInName) - { - free(pclp->m_redirInName); - pclp->m_redirInName = NULL; - } - - if(pclp->m_redirInName == NULL) - { - pclp->m_redirInName = (char *) malloc(MAX_DN_BYTES * sizeof(char)); - if(pclp->m_redirInName == NULL) - { - pclp->m_isValid = FALSE; - return; - } - } - - // Collect the next command-line argument. - pclp->m_redirInName = fnScanToken(s, pclp->m_redirInName); - - s1 = fnSkipWhite(s1); // s1 is already updated by fnScanToken. - s = s1; // Update the local pointer too. - } - else if (*s == '>') - { - s = fnSkipWhite(s+1); //get stdout redirection - - if(pclp->m_redirOutName) - { - free(pclp->m_redirOutName); - pclp->m_redirOutName = NULL; - } - - if(pclp->m_redirOutName == NULL) - { - pclp->m_redirOutName = (char *) malloc(MAX_DN_BYTES * sizeof(char)); - if(pclp->m_redirOutName == NULL) - { - pclp->m_isValid = FALSE; - return; - } - } - - // Collect the next command-line argument. - pclp->m_redirOutName = fnScanToken(s, pclp->m_redirOutName); - - s1 = fnSkipWhite(s1); // s1 is already updated by fnScanToken. - s = s1; // Update the local pointer too. - } - else if (*s == '2' && s[1] == '>') - { - s = fnSkipWhite(s+2); // get stderr redirection - - if(pclp->m_redirErrName) - { - free(pclp->m_redirErrName); - pclp->m_redirErrName = NULL; - } - - if(pclp->m_redirErrName == NULL) - { - pclp->m_redirErrName = (char *) malloc(MAX_DN_BYTES * sizeof(char)); - if(pclp->m_redirErrName == NULL) - { - pclp->m_isValid = FALSE; - return; - } - } - - // Collect the next command-line argument. - pclp->m_redirErrName = fnScanToken(s, pclp->m_redirErrName); - - s1 = fnSkipWhite(s1); // s1 is already updated by fnScanToken. - s = s1; // Update the local pointer too. - } - else if (*s == '&' && s[1] == '>') - { - s = fnSkipWhite(s+2); // get stdout+stderr redirection - - if(pclp->m_redirBothName) - { - free(pclp->m_redirBothName); - pclp->m_redirBothName = NULL; - } - - if(pclp->m_redirBothName == NULL) - { - pclp->m_redirBothName = (char *) malloc(MAX_DN_BYTES * sizeof(char)); - if(pclp->m_redirBothName == NULL) - { - pclp->m_isValid = FALSE; - return; - } - } - - // Collect the next command-line argument. - pclp->m_redirBothName = fnScanToken(s, pclp->m_redirBothName); - - s1 = fnSkipWhite(s1); // s1 is already updated by fnScanToken. - s = s1; // Update the local pointer too. - } - else - { - if(pclp->nextarg) - { - free(pclp->nextarg); - pclp->nextarg = NULL; - } - - if(pclp->nextarg == NULL) - { - pclp->nextarg = (char *) malloc(MAX_DN_BYTES * sizeof(char)); - if(pclp->nextarg == NULL) - { - pclp->m_isValid = FALSE; - return; - } - } - - // Collect the next command-line argument. - pclp->nextarg = fnScanToken(s, pclp->nextarg); - - s1 = fnSkipWhite(s1); // s1 is already updated by fnScanToken. - s = s1; // Update the local pointer too. - - // Append the next command-line argument into an array. - fnAppendArgument(pclp, pclp->nextarg); - } - } - } - - - // The -{ option, the --noscreen option, the --autodestroy option, if present, - // are processed now and removed from the argument vector. - for(index=0; index < pclp->m_argc; ) - { - // "-q" is replaced by "-{", because of clash with GetOpt - sgp - 7th Nov 2000 - // Copied from NDK build - Jan 5th 2001 - if (strncmp(pclp->m_argv[index], (char *)"-{", 2) == 0) - { - // found a -q option; grab the semaphore number - sscanf(pclp->m_argv[index], (char *)"-{%x", &pclp->m_qSemaphore); - fnDeleteArgument(pclp, index); // Delete the argument from the list. - } - else if (strcmp(pclp->m_argv[index], (char *)"--noscreen") == 0) - { - // found a --noscreen option - pclp->m_noScreen = 1; - fnDeleteArgument(pclp, index); - } - else if (strcmp(pclp->m_argv[index], (char *)"--autodestroy") == 0) - { - // found a --autodestroy option - create a screen but close automatically - pclp->m_AutoDestroy = 1; - fnDeleteArgument(pclp, index); - } - else - index++; - } - - // pclp->m_isValid is TRUE if there are more than 2 command line parameters OR - // if there is only one command and if it is the comman PERL. - pclp->m_isValid = ((pclp->m_argc >= 2) || ((pclp->m_argc > 0) && (stricmp(pclp->m_argv[0], LOAD_COMMAND) != 0))); - - if(buffer) - { - free(buffer); - buffer = NULL; - } + fnAppendArgument(pclp, pclp->sSkippedToken); // Append the argument into an array. + } + + if(pclp->sSkippedToken) + { + free(pclp->sSkippedToken); + pclp->sSkippedToken = NULL; + } + } + else + { + char *s = NULL; + + strcpy(buffer, commandLine); + s = buffer; + s = fnSkipWhite(s); + + s1 = s; // Update the global pointer. + + while (*s && pclp->m_isValid) + { + // s is advanced by fnScanToken + // Check for I/O redirection here, *outside* of + // fnScanToken(), so that quote-protected angle + // brackets do NOT cause redirection. + if (*s == '<') + { + s = fnSkipWhite(s+1); // get stdin redirection + + if(pclp->m_redirInName) + { + free(pclp->m_redirInName); + pclp->m_redirInName = NULL; + } + + if(pclp->m_redirInName == NULL) + { + pclp->m_redirInName = (char *) malloc(MAX_DN_BYTES * sizeof(char)); + if(pclp->m_redirInName == NULL) + { + pclp->m_isValid = FALSE; + return; + } + } + + // Collect the next command-line argument. + pclp->m_redirInName = fnScanToken(s, pclp->m_redirInName); + + s1 = fnSkipWhite(s1); // s1 is already updated by fnScanToken. + s = s1; // Update the local pointer too. + } + else if (*s == '>') + { + s = fnSkipWhite(s+1); //get stdout redirection + + if(pclp->m_redirOutName) + { + free(pclp->m_redirOutName); + pclp->m_redirOutName = NULL; + } + + if(pclp->m_redirOutName == NULL) + { + pclp->m_redirOutName = (char *) malloc(MAX_DN_BYTES * sizeof(char)); + if(pclp->m_redirOutName == NULL) + { + pclp->m_isValid = FALSE; + return; + } + } + + // Collect the next command-line argument. + pclp->m_redirOutName = fnScanToken(s, pclp->m_redirOutName); + + s1 = fnSkipWhite(s1); // s1 is already updated by fnScanToken. + s = s1; // Update the local pointer too. + } + else if (*s == '2' && s[1] == '>') + { + s = fnSkipWhite(s+2); // get stderr redirection + + if(pclp->m_redirErrName) + { + free(pclp->m_redirErrName); + pclp->m_redirErrName = NULL; + } + + if(pclp->m_redirErrName == NULL) + { + pclp->m_redirErrName = (char *) malloc(MAX_DN_BYTES * sizeof(char)); + if(pclp->m_redirErrName == NULL) + { + pclp->m_isValid = FALSE; + return; + } + } + + // Collect the next command-line argument. + pclp->m_redirErrName = fnScanToken(s, pclp->m_redirErrName); + + s1 = fnSkipWhite(s1); // s1 is already updated by fnScanToken. + s = s1; // Update the local pointer too. + } + else if (*s == '&' && s[1] == '>') + { + s = fnSkipWhite(s+2); // get stdout+stderr redirection + + if(pclp->m_redirBothName) + { + free(pclp->m_redirBothName); + pclp->m_redirBothName = NULL; + } + + if(pclp->m_redirBothName == NULL) + { + pclp->m_redirBothName = (char *) malloc(MAX_DN_BYTES * sizeof(char)); + if(pclp->m_redirBothName == NULL) + { + pclp->m_isValid = FALSE; + return; + } + } + + // Collect the next command-line argument. + pclp->m_redirBothName = fnScanToken(s, pclp->m_redirBothName); + + s1 = fnSkipWhite(s1); // s1 is already updated by fnScanToken. + s = s1; // Update the local pointer too. + } + else + { + if(pclp->nextarg) + { + free(pclp->nextarg); + pclp->nextarg = NULL; + } + + if(pclp->nextarg == NULL) + { + pclp->nextarg = (char *) malloc(MAX_DN_BYTES * sizeof(char)); + if(pclp->nextarg == NULL) + { + pclp->m_isValid = FALSE; + return; + } + } + + // Collect the next command-line argument. + pclp->nextarg = fnScanToken(s, pclp->nextarg); + + s1 = fnSkipWhite(s1); // s1 is already updated by fnScanToken. + s = s1; // Update the local pointer too. + + // Append the next command-line argument into an array. + fnAppendArgument(pclp, pclp->nextarg); + } + } + } + + + // The -{ option, the --noscreen option, the --autodestroy option, if present, + // are processed now and removed from the argument vector. + for(index=0; index < pclp->m_argc; ) + { + // "-q" is replaced by "-{", because of clash with GetOpt - sgp - 7th Nov 2000 + // Copied from NDK build - Jan 5th 2001 + if (strncmp(pclp->m_argv[index], (char *)"-{", 2) == 0) + { + // found a -q option; grab the semaphore number + sscanf(pclp->m_argv[index], (char *)"-{%x", &pclp->m_qSemaphore); + fnDeleteArgument(pclp, index); // Delete the argument from the list. + } + else if (strcmp(pclp->m_argv[index], (char *)"--noscreen") == 0) + { + // found a --noscreen option + pclp->m_noScreen = 1; + fnDeleteArgument(pclp, index); + } + else if (strcmp(pclp->m_argv[index], (char *)"--autodestroy") == 0) + { + // found a --autodestroy option - create a screen but close automatically + pclp->m_AutoDestroy = 1; + fnDeleteArgument(pclp, index); + } + else + index++; + } + + // pclp->m_isValid is TRUE if there are more than 2 command line parameters OR + // if there is only one command and if it is the comman PERL. + pclp->m_isValid = ((pclp->m_argc >= 2) || ((pclp->m_argc > 0) && (stricmp(pclp->m_argv[0], LOAD_COMMAND) != 0))); + + if(buffer) + { + free(buffer); + buffer = NULL; + } - return; + return; } @@ -396,7 +396,7 @@ Description : This function appends the arguments into a list. Parameters : pclp (IN) - CommandLine structure. - new_arg (IN) - The new argument to be appended. + new_arg (IN) - The new argument to be appended. Returns : Nothing. @@ -404,98 +404,98 @@ void fnAppendArgument(PCOMMANDLINEPARSER pclp, char *new_arg) { - char **new_argv = pclp->new_argv; + char **new_argv = pclp->new_argv; - int new_argv_len = pclp->m_argv_len*2; - int i = 0, j = 0; + int new_argv_len = pclp->m_argv_len*2; + int i = 0, j = 0; - // Lengthen the argument vector if there's not room for another. - // Testing for 'm_argc+2' rather than 'm_argc+1' in the test guarantees - // that there'll always be a NULL terminator at the end of argv. - if ((pclp->m_argc + 2) > pclp->m_argv_len) - { - new_argv = (char **) malloc(new_argv_len * sizeof(char*)); // get a longer arg-vector - if (new_argv == NULL) - { - pclp->m_isValid = FALSE; - return; - } - for(i=0; im_isValid = FALSE; - return; - } - } - - for (i=0; im_argc; i++) - strcpy(new_argv[i], pclp->m_argv[i]); // copy old arg strings - - for(i=0; i<(pclp->m_argv_len); i++) - { - if(pclp->m_argv[i]) - { - free(pclp->m_argv[i]); - pclp->m_argv[i] = NULL; - } - } - if (pclp->m_argv != NULL) - { - free(pclp->m_argv); - pclp->m_argv = NULL; - } - - - pclp->m_argv = new_argv; - pclp->m_argv_len = new_argv_len; - - } - - // Once m_argv is guaranteed long enough, appending the argument is a direct job. - strcpy(pclp->m_argv[pclp->m_argc], new_arg); // Appended the new argument. - pclp->m_argc++; // Increment the number of parameters appended. - - // The char array is emptied for all elements upto the end so that there are no - // junk characters. If this is not done, then the issue is like this: - // - Simple perl command like "perl" on the system console works fine for the first time. - // - When "perl" is executed the second time, a new blank screen should come up - // which allows for editing also. This was not consistently working well. - // More so when the command was like, "perl ", that is the name "perl" followed - // by a few blank spaces, it used to give error in opening file: - // "unable to open the file" since the filename would have some junk characters. - // - // These issues are fixed through the code below. - for(i=pclp->m_argc; im_argv_len; i++) - strncpy(pclp->m_argv[i], "", (MAX_DN_BYTES * sizeof(char))); // MAX_DN_BYTES is the size of pclp->m_argv[]. - - - // Fix for empty command line double quote abend - perl <.pl> "" - if ((new_arg==NULL) || ((strlen(new_arg))<=0)) - { - pclp->m_argc--; // Decrement the number of parameters appended. - pclp->m_isValid = FALSE; - return; - } + // Lengthen the argument vector if there's not room for another. + // Testing for 'm_argc+2' rather than 'm_argc+1' in the test guarantees + // that there'll always be a NULL terminator at the end of argv. + if ((pclp->m_argc + 2) > pclp->m_argv_len) + { + new_argv = (char **) malloc(new_argv_len * sizeof(char*)); // get a longer arg-vector + if (new_argv == NULL) + { + pclp->m_isValid = FALSE; + return; + } + for(i=0; im_isValid = FALSE; + return; + } + } + + for (i=0; im_argc; i++) + strcpy(new_argv[i], pclp->m_argv[i]); // copy old arg strings + + for(i=0; i<(pclp->m_argv_len); i++) + { + if(pclp->m_argv[i]) + { + free(pclp->m_argv[i]); + pclp->m_argv[i] = NULL; + } + } + if (pclp->m_argv != NULL) + { + free(pclp->m_argv); + pclp->m_argv = NULL; + } + + + pclp->m_argv = new_argv; + pclp->m_argv_len = new_argv_len; + + } + + // Once m_argv is guaranteed long enough, appending the argument is a direct job. + strcpy(pclp->m_argv[pclp->m_argc], new_arg); // Appended the new argument. + pclp->m_argc++; // Increment the number of parameters appended. + + // The char array is emptied for all elements upto the end so that there are no + // junk characters. If this is not done, then the issue is like this: + // - Simple perl command like "perl" on the system console works fine for the first time. + // - When "perl" is executed the second time, a new blank screen should come up + // which allows for editing also. This was not consistently working well. + // More so when the command was like, "perl ", that is the name "perl" followed + // by a few blank spaces, it used to give error in opening file: + // "unable to open the file" since the filename would have some junk characters. + // + // These issues are fixed through the code below. + for(i=pclp->m_argc; im_argv_len; i++) + strncpy(pclp->m_argv[i], "", (MAX_DN_BYTES * sizeof(char))); // MAX_DN_BYTES is the size of pclp->m_argv[]. + + + // Fix for empty command line double quote abend - perl <.pl> "" + if ((new_arg==NULL) || ((strlen(new_arg))<=0)) + { + pclp->m_argc--; // Decrement the number of parameters appended. + pclp->m_isValid = FALSE; + return; + } - return; + return; } @@ -505,11 +505,11 @@ Function : fnSkipToken Description : This function collects the next command-line argument, breaking on - unquoted white space. The quote symbols are copied into the output. - White space has already been skipped. + unquoted white space. The quote symbols are copied into the output. + White space has already been skipped. Parameters : s (IN) - Input string in which the token is skipped. - r (IN) - The resultant return string. + r (IN) - The resultant return string. Returns : String. @@ -517,44 +517,44 @@ char *fnSkipToken(char *s, char *r) { - char *t=NULL; - char quote = '\0'; // NULL, single quote, or double quote - char ch = '\0'; - - for (t=s; t[0]; t++) - { - ch = t[0]; - if (!quote) - { - if (isspace(ch)) // if unquoted whitespace... - { - break; // ...end of token found - } - else if (ch=='"' || ch=='\'') // if opening quote... - { - quote = ch; // ...enter quote mode - } - } - else - { - if (ch=='\\' && t[1]==quote) // if escaped quote... - { - t++; // ...skip backslash - } - else if (ch==quote) // if close quote... - { - quote = 0; // ...leave quote mode - } - } - } - - r = fnStashString(s, r, t-s); // get heap-allocated token string - t = fnSkipWhite(t); // skip any trailing white space - s = t; // return updated source pointer + char *t=NULL; + char quote = '\0'; // NULL, single quote, or double quote + char ch = '\0'; + + for (t=s; t[0]; t++) + { + ch = t[0]; + if (!quote) + { + if (isspace(ch)) // if unquoted whitespace... + { + break; // ...end of token found + } + else if (ch=='"' || ch=='\'') // if opening quote... + { + quote = ch; // ...enter quote mode + } + } + else + { + if (ch=='\\' && t[1]==quote) // if escaped quote... + { + t++; // ...skip backslash + } + else if (ch==quote) // if close quote... + { + quote = 0; // ...leave quote mode + } + } + } + + r = fnStashString(s, r, t-s); // get heap-allocated token string + t = fnSkipWhite(t); // skip any trailing white space + s = t; // return updated source pointer - s2 = t; // return updated global source pointer + s2 = t; // return updated global source pointer - return r; // return heap-allocated token string + return r; // return heap-allocated token string } @@ -564,12 +564,12 @@ Function : fnScanToken Description : This function collects the next command-line argument, breaking on - unquoted white space or I/O redirection symbols. Quote symbols are not - copied into the output. - When called, any leading white space has already been skipped. + unquoted white space or I/O redirection symbols. Quote symbols are not + copied into the output. + When called, any leading white space has already been skipped. Parameters : x (IN) - Input string in which the token is scanned. - r (IN) - The resultant return string. + r (IN) - The resultant return string. Returns : String. @@ -577,61 +577,61 @@ char *fnScanToken(char *x, char *r) { - char *s = x; // input string position - char *t = x; // output string position - char quote = '\0'; // either NULL, or single quote, or double quote - char ch = '\0'; - char c = '\0'; - - while (*s) - { - ch = *s; // invariant: ch != 0 - - // look to see if we've reached the end of the token - if (!quote) // but don't look for token break if we're inside quotes - { - if (isspace(ch)) - break; // break on whitespace - if (ch=='>') - break; // break on ">" (redirect stdout) - if (ch=='<') - break; // break on "<" (redirect stdin) - if (ch=='&' && x[1]=='>') - break; // break on "&>" (redirect both stdout & stderr) - } - - // process the next source character - if (ch=='\\' && (c=s[1]) && (c=='\\'||c=='>'||c=='<'||c==quote)) - { - //-----------------if an escaped '\\', '>', '<', or quote... - s++; // ...skip over the backslash... - *t++ = *s++; // ...and copy the escaped character - } - else if (ch==quote) // (won't match unless inside quotes because invariant ch!=0) - { - //-----------------if close quote... - s++; // ...skip over the quote... - quote=0; // ...and leave quote mode - } - else if (!quote && (ch=='"' || ch=='\'')) - { - //-----------------if opening quote... - quote = *s++; // ...enter quote mode (remembering quote char, and skipping the quote) - } - else - { //----------if normal character... - *t++ = *s++; // ...copy the character - } - } - - // clean up return values - r = fnStashString(x, r, t-x); // get heap-allocated token string - s = fnSkipWhite(s); // skip any trailing white space - x = s; // return updated source pointer + char *s = x; // input string position + char *t = x; // output string position + char quote = '\0'; // either NULL, or single quote, or double quote + char ch = '\0'; + char c = '\0'; + + while (*s) + { + ch = *s; // invariant: ch != 0 + + // look to see if we've reached the end of the token + if (!quote) // but don't look for token break if we're inside quotes + { + if (isspace(ch)) + break; // break on whitespace + if (ch=='>') + break; // break on ">" (redirect stdout) + if (ch=='<') + break; // break on "<" (redirect stdin) + if (ch=='&' && x[1]=='>') + break; // break on "&>" (redirect both stdout & stderr) + } + + // process the next source character + if (ch=='\\' && (c=s[1]) && (c=='\\'||c=='>'||c=='<'||c==quote)) + { + //-----------------if an escaped '\\', '>', '<', or quote... + s++; // ...skip over the backslash... + *t++ = *s++; // ...and copy the escaped character + } + else if (ch==quote) // (won't match unless inside quotes because invariant ch!=0) + { + //-----------------if close quote... + s++; // ...skip over the quote... + quote=0; // ...and leave quote mode + } + else if (!quote && (ch=='"' || ch=='\'')) + { + //-----------------if opening quote... + quote = *s++; // ...enter quote mode (remembering quote char, and skipping the quote) + } + else + { //----------if normal character... + *t++ = *s++; // ...copy the character + } + } + + // clean up return values + r = fnStashString(x, r, t-x); // get heap-allocated token string + s = fnSkipWhite(s); // skip any trailing white space + x = s; // return updated source pointer - s1 = s; // return updated global source pointer + s1 = s; // return updated global source pointer - return r; + return r; } @@ -643,8 +643,8 @@ Description : This function return the heap-allocated token string. Parameters : s (IN) - Input string from which the token is extracted. - buffer (IN) - Return string. - length (IN) - Length of the token to be extracted. + buffer (IN) - Return string. + length (IN) - Length of the token to be extracted. Returns : String. @@ -652,19 +652,19 @@ char *fnStashString(char *s, char *buffer, int length) { - if (length <= 0) - { - // Copy "" instead of NULL since "" indicates that there is memory allocated having no/null value. - // NULL indicates that there is no memory allocated to it! - strcpy(buffer, ""); - } - else - { - strncpy(buffer, s, length); - buffer[length] = '\0'; - } + if (length <= 0) + { + // Copy "" instead of NULL since "" indicates that there is memory allocated having no/null value. + // NULL indicates that there is no memory allocated to it! + strcpy(buffer, ""); + } + else + { + strncpy(buffer, s, length); + buffer[length] = '\0'; + } - return buffer; + return buffer; } @@ -676,7 +676,7 @@ Description : This function deletes an argument (that was originally appended) from the list. Parameters : pclp (IN) - CommandLine structure. - index (IN) - Index of the argument to be deleted. + index (IN) - Index of the argument to be deleted. Returns : Nothing. @@ -684,33 +684,33 @@ void fnDeleteArgument(PCOMMANDLINEPARSER pclp, int index) { - int i = index; + int i = index; - // If index is greater than the no. of arguments, just return. - if (index >= pclp->m_argc) - return; + // If index is greater than the no. of arguments, just return. + if (index >= pclp->m_argc) + return; - // Move all the arguments after the index one up. - while(i < (pclp->m_argv_len-1)) - { - strcpy(pclp->m_argv[i], pclp->m_argv[i+1]); - i++; - } + // Move all the arguments after the index one up. + while(i < (pclp->m_argv_len-1)) + { + strcpy(pclp->m_argv[i], pclp->m_argv[i+1]); + i++; + } - // Delete the last one and free memory. - if ( pclp->m_argv[i] ) - { - free(pclp->m_argv[i]); - pclp->m_argv[i] = NULL; - } + // Delete the last one and free memory. + if ( pclp->m_argv[i] ) + { + free(pclp->m_argv[i]); + pclp->m_argv[i] = NULL; + } - pclp->m_argc--; // Decrement the number of arguments. - pclp->m_argv_len--; + pclp->m_argc--; // Decrement the number of arguments. + pclp->m_argv_len--; - return; + return; } @@ -729,82 +729,82 @@ char* fnMy_MkTemp(char* templatestr) { - char* pXs=NULL; - char numbuf[50]={'\0'}; - int count=0; - char* pPid=NULL; - - char termchar = '\0'; - char letter = 'a'; - char letter1 = 'a'; + char* pXs=NULL; + char numbuf[50]={'\0'}; + int count=0; + char* pPid=NULL; + + char termchar = '\0'; + char letter = 'a'; + char letter1 = 'a'; - if (templatestr && (pXs = strstr(templatestr, (char *)"XXXXXX"))) - { - // generate temp name - termchar = pXs[6]; - ltoa(GetThreadID(), numbuf, 16); + if (templatestr && (pXs = strstr(templatestr, (char *)"XXXXXX"))) + { + // generate temp name + termchar = pXs[6]; + ltoa(GetThreadID(), numbuf, 16); // numbuf[sizeof(numbuf)-1] = '\0'; - numbuf[strlen(numbuf)-1] = '\0'; - // beware! thread IDs are 8 hex digits on NW 4.11 and only the - // lower digits seem to change, whereas on NW 5 they are in the - // range of < 1000 hex or 3 hex digits in length. So the following - // logic ensures we use the least significant portion of the number. - if (strlen(numbuf) > 5) - pPid = &numbuf[strlen(numbuf)-5]; - else - pPid = numbuf; + numbuf[strlen(numbuf)-1] = '\0'; + // beware! thread IDs are 8 hex digits on NW 4.11 and only the + // lower digits seem to change, whereas on NW 5 they are in the + // range of < 1000 hex or 3 hex digits in length. So the following + // logic ensures we use the least significant portion of the number. + if (strlen(numbuf) > 5) + pPid = &numbuf[strlen(numbuf)-5]; + else + pPid = numbuf; /** - Backtick operation uses temp files that are stored under NWDEFPERLTEMP - directory. They are temporarily used and then cleaned up after usage. - In cases where multiple backtick operations are used that call some - complex scripts, new temp files will be created before the old ones are - deleted. So, we need to have a provision to create many temp files. - Hence the below logic. It is found that provision for 26 files may - not be enough in some cases. + Backtick operation uses temp files that are stored under NWDEFPERLTEMP + directory. They are temporarily used and then cleaned up after usage. + In cases where multiple backtick operations are used that call some + complex scripts, new temp files will be created before the old ones are + deleted. So, we need to have a provision to create many temp files. + Hence the below logic. It is found that provision for 26 files may + not be enough in some cases. - This below logic allows 26 files (like, pla00015.tmp through plz00015.tmp) - plus 6x26=676 (like, plaa0015.tmp through plzz0015.tmp) + This below logic allows 26 files (like, pla00015.tmp through plz00015.tmp) + plus 6x26=676 (like, plaa0015.tmp through plzz0015.tmp) **/ - letter = 'a'; - do - { - sprintf(pXs, (char *)"%c%05.5s", letter, pPid); - pXs[6] = termchar; - if (access(templatestr, 0) != 0) // File does not exist - { - return templatestr; - } - letter++; - } while (letter <= 'z'); - - letter1 = 'a'; - do - { - letter = 'a'; - do - { - sprintf(pXs, (char *)"%c%c%04.5s", letter1, letter, pPid); - pXs[6] = termchar; - if (access(templatestr, 0) != 0) // File does not exist - { - return templatestr; - } - letter++; - } while (letter <= 'z'); - letter1++; - } while (letter1 <= 'z'); - - errno = ENOENT; - return NULL; - } - else - { - errno = EINVAL; - return NULL; - } + letter = 'a'; + do + { + sprintf(pXs, (char *)"%c%05.5s", letter, pPid); + pXs[6] = termchar; + if (access(templatestr, 0) != 0) // File does not exist + { + return templatestr; + } + letter++; + } while (letter <= 'z'); + + letter1 = 'a'; + do + { + letter = 'a'; + do + { + sprintf(pXs, (char *)"%c%c%04.5s", letter1, letter, pPid); + pXs[6] = termchar; + if (access(templatestr, 0) != 0) // File does not exist + { + return templatestr; + } + letter++; + } while (letter <= 'z'); + letter1++; + } while (letter1 <= 'z'); + + errno = ENOENT; + return NULL; + } + else + { + errno = EINVAL; + return NULL; + } } @@ -814,10 +814,10 @@ Function : fnSystemCommand Description : This function constructs a system command from the given - null-terminated argv array and runs the command on the system console. + null-terminated argv array and runs the command on the system console. Parameters : argv (IN) - Array of input commands. - argc (IN) - Number of input parameters. + argc (IN) - Number of input parameters. Returns : Nothing. @@ -825,34 +825,34 @@ void fnSystemCommand (char** argv, int argc) { - // calculate the size of a temp buffer needed - int k = 0; - int totalSize = 0; - int bytes = 0; - char* tempCmd = NULL; - char* tptr = NULL; - - - for(k=0; k - #include + #include + #include #else - #include + #include #endif //MPK_ON @@ -43,28 +43,28 @@ typedef struct tagCommandLineParser { - BOOL m_noScreen; - BOOL m_AutoDestroy; - BOOL m_isValid; - - int m_argc; - int m_argv_len; - - #ifdef MPK_ON - SEMAPHORE m_qSemaphore; - #else - long m_qSemaphore; - #endif - - char* m_redirInName; - char* m_redirOutName; - char* m_redirErrName; - char* m_redirBothName; - char* nextarg; - char* sSkippedToken; + BOOL m_noScreen; + BOOL m_AutoDestroy; + BOOL m_isValid; + + int m_argc; + int m_argv_len; + + #ifdef MPK_ON + SEMAPHORE m_qSemaphore; + #else + long m_qSemaphore; + #endif + + char* m_redirInName; + char* m_redirOutName; + char* m_redirErrName; + char* m_redirBothName; + char* nextarg; + char* sSkippedToken; - char** m_argv; - char** new_argv; + char** m_argv; + char** new_argv; }COMMANDLINEPARSER, *PCOMMANDLINEPARSER; diff -Nru perl-5.32.1/NetWare/nwvmem.h perl-5.34.0/NetWare/nwvmem.h --- perl-5.32.1/NetWare/nwvmem.h 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/nwvmem.h 2021-01-20 23:04:44.000000000 +0000 @@ -38,12 +38,12 @@ virtual void* Malloc(size_t size); virtual void* Realloc(void* pMem, size_t size); virtual void Free(void* pMem); - virtual void* Calloc(size_t num, size_t size); + virtual void* Calloc(size_t num, size_t size); protected: - BOOL m_dontTouchHashLists; + BOOL m_dontTouchHashLists; // WCValHashTable* m_allocList; - NWPerlHashList *m_allocList; // CW changes + NWPerlHashList *m_allocList; // CW changes }; @@ -73,10 +73,10 @@ Function : fnFreeMemEntry Description : Called for each outstanding memory allocation at the end of a script run. - Frees the outstanding allocations + Frees the outstanding allocations Parameters : ptr (IN). - context (IN) + context (IN) Returns : Nothing. @@ -84,15 +84,15 @@ void fnFreeMemEntry(void* ptr, void* context) { - VMem* pVMem = (VMem*) context; + VMem* pVMem = (VMem*) context; - if(ptr && pVMem) - { - pVMem->Free(ptr); - ptr=NULL; - pVMem = NULL; - context = NULL; - } + if(ptr && pVMem) + { + pVMem->Free(ptr); + ptr=NULL; + pVMem = NULL; + context = NULL; + } } @@ -111,11 +111,11 @@ VMem::VMem() { - //Constructor - m_dontTouchHashLists = FALSE; - m_allocList = NULL; - // m_allocList = new WCValHashTable (fnAllocListHash, 256); - m_allocList = new NWPerlHashList(); // CW changes + //Constructor + m_dontTouchHashLists = FALSE; + m_allocList = NULL; + // m_allocList = new WCValHashTable (fnAllocListHash, 256); + m_allocList = new NWPerlHashList(); // CW changes } @@ -134,16 +134,16 @@ VMem::~VMem(void) { - //Destructor - m_dontTouchHashLists = TRUE; - if (m_allocList) - { - m_allocList->forAll(fnFreeMemEntry, (void*) this); - - delete m_allocList; - m_allocList = NULL; - } - m_dontTouchHashLists = FALSE; + //Destructor + m_dontTouchHashLists = TRUE; + if (m_allocList) + { + m_allocList->forAll(fnFreeMemEntry, (void*) this); + + delete m_allocList; + m_allocList = NULL; + } + m_dontTouchHashLists = FALSE; } @@ -162,33 +162,33 @@ void* VMem::Malloc(size_t size) { - void *ptr = NULL; + void *ptr = NULL; - if (size <= 0) - return NULL; + if (size <= 0) + return NULL; - ptr = malloc(size); - if (ptr) - { - if(m_allocList) - m_allocList->insert(ptr); - } - else - { - m_dontTouchHashLists = TRUE; - if (m_allocList) - { - m_allocList->forAll(fnFreeMemEntry, (void*) this); - delete m_allocList; - m_allocList = NULL; - } - m_dontTouchHashLists = FALSE; - - // Serious error since memory allocation falied. So, exiting... - ExitThread(TSR_THREAD, 1); - } + ptr = malloc(size); + if (ptr) + { + if(m_allocList) + m_allocList->insert(ptr); + } + else + { + m_dontTouchHashLists = TRUE; + if (m_allocList) + { + m_allocList->forAll(fnFreeMemEntry, (void*) this); + delete m_allocList; + m_allocList = NULL; + } + m_dontTouchHashLists = FALSE; + + // Serious error since memory allocation falied. So, exiting... + ExitThread(TSR_THREAD, 1); + } - return(ptr); + return(ptr); } @@ -200,7 +200,7 @@ Description : Reallocates block of memory. Parameters : block (IN) - Points to a previously allocated memory block. - size (IN) - Size of memory to be allocated. + size (IN) - Size of memory to be allocated. Returns : Pointer to the allocated memory block. @@ -208,38 +208,38 @@ void* VMem::Realloc(void* block, size_t size) { - void *ptr = NULL; + void *ptr = NULL; - if (size <= 0) - return NULL; + if (size <= 0) + return NULL; - ptr = realloc(block, size); - if (ptr) - { - if (block) - { - if (m_allocList) - m_allocList->remove(block); - } - if (m_allocList) - m_allocList->insert(ptr); - } - else - { - m_dontTouchHashLists = TRUE; - if (m_allocList) - { - m_allocList->forAll(fnFreeMemEntry, (void*) this); - delete m_allocList; - m_allocList = NULL; - } - m_dontTouchHashLists = FALSE; - - // Serious error since memory allocation falied. So, exiting... - ExitThread(TSR_THREAD, 1); - } + ptr = realloc(block, size); + if (ptr) + { + if (block) + { + if (m_allocList) + m_allocList->remove(block); + } + if (m_allocList) + m_allocList->insert(ptr); + } + else + { + m_dontTouchHashLists = TRUE; + if (m_allocList) + { + m_allocList->forAll(fnFreeMemEntry, (void*) this); + delete m_allocList; + m_allocList = NULL; + } + m_dontTouchHashLists = FALSE; + + // Serious error since memory allocation falied. So, exiting... + ExitThread(TSR_THREAD, 1); + } - return(ptr); + return(ptr); } @@ -251,7 +251,7 @@ Description : Allocates and clears memory space for an array of objects. Parameters : num (IN) - Specifies the number of objects. - size (IN) - Size of each object. + size (IN) - Size of each object. Returns : Pointer to the allocated memory block. @@ -259,33 +259,33 @@ void* VMem::Calloc(size_t num, size_t size) { - void *ptr = NULL; + void *ptr = NULL; - if (size <= 0) - return NULL; + if (size <= 0) + return NULL; - ptr = calloc(num, size); - if (ptr) - { - if(m_allocList) - m_allocList->insert(ptr); - } - else - { - m_dontTouchHashLists = TRUE; - if (m_allocList) - { - m_allocList->forAll(fnFreeMemEntry, (void*) this); - delete m_allocList; - m_allocList = NULL; - } - m_dontTouchHashLists = FALSE; - - // Serious error since memory allocation falied. So, exiting... - ExitThread(TSR_THREAD, 1); - } + ptr = calloc(num, size); + if (ptr) + { + if(m_allocList) + m_allocList->insert(ptr); + } + else + { + m_dontTouchHashLists = TRUE; + if (m_allocList) + { + m_allocList->forAll(fnFreeMemEntry, (void*) this); + delete m_allocList; + m_allocList = NULL; + } + m_dontTouchHashLists = FALSE; + + // Serious error since memory allocation falied. So, exiting... + ExitThread(TSR_THREAD, 1); + } - return(ptr); + return(ptr); } @@ -304,35 +304,35 @@ void VMem::Free(void* p) { - // Final clean up, free all the nodes from the hash list - if (m_dontTouchHashLists) - { - if(p) - { - free(p); - p = NULL; - } - } - else - { - if(p && m_allocList) - { - if (m_allocList->remove(p)) - { - free(p); - p = NULL; - } - else - { - // If it comes here, that means that the memory pointer is not contained in the hash list. - // But no need to free now, since if is deleted here, it will result in an abend!! - // If the memory is still there, it will be cleaned during final cleanup anyway. - } - } - } + // Final clean up, free all the nodes from the hash list + if (m_dontTouchHashLists) + { + if(p) + { + free(p); + p = NULL; + } + } + else + { + if(p && m_allocList) + { + if (m_allocList->remove(p)) + { + free(p); + p = NULL; + } + else + { + // If it comes here, that means that the memory pointer is not contained in the hash list. + // But no need to free now, since if is deleted here, it will result in an abend!! + // If the memory is still there, it will be cleaned during final cleanup anyway. + } + } + } - return; + return; } diff -Nru perl-5.32.1/NetWare/win32ish.h perl-5.34.0/NetWare/win32ish.h --- perl-5.32.1/NetWare/win32ish.h 2020-12-18 09:57:53.000000000 +0000 +++ perl-5.34.0/NetWare/win32ish.h 2021-01-20 23:04:44.000000000 +0000 @@ -22,11 +22,11 @@ #ifndef BOOL - typedef unsigned int BOOL; + typedef unsigned int BOOL; #endif #ifndef DWORD - typedef unsigned long DWORD; + typedef unsigned long DWORD; #endif typedef DWORD LCID; @@ -34,11 +34,11 @@ typedef void* LPVOID; #ifndef TRUE - #define TRUE 1 + #define TRUE 1 #endif #ifndef FALSE - #define FALSE 0 + #define FALSE 0 #endif diff -Nru perl-5.32.1/numeric.c perl-5.34.0/numeric.c --- perl-5.32.1/numeric.c 2020-12-26 15:18:12.000000000 +0000 +++ perl-5.34.0/numeric.c 2021-01-20 23:04:44.000000000 +0000 @@ -16,9 +16,6 @@ */ /* -=head1 Numeric functions - -=cut This file contains all the stuff needed by perl for manipulating numeric values, including such things as replacements for the OS's atof() function @@ -726,12 +723,12 @@ one byte past the end of the recognized string. If the recognition fails, zero is returned, and C<*sp> will not move. -=for apidoc Amn|bool|IS_NUMBER_GREATER_THAN_UV_MAX -=for apidoc Amn|bool|IS_NUMBER_INFINITY -=for apidoc Amn|bool|IS_NUMBER_IN_UV -=for apidoc Amn|bool|IS_NUMBER_NAN -=for apidoc Amn|bool|IS_NUMBER_NEG -=for apidoc Amn|bool|IS_NUMBER_NOT_INT +=for apidoc Amnh|bool|IS_NUMBER_GREATER_THAN_UV_MAX +=for apidoc Amnh|bool|IS_NUMBER_INFINITY +=for apidoc Amnh|bool|IS_NUMBER_IN_UV +=for apidoc Amnh|bool|IS_NUMBER_NAN +=for apidoc Amnh|bool|IS_NUMBER_NEG +=for apidoc Amnh|bool|IS_NUMBER_NOT_INT =cut */ @@ -997,7 +994,7 @@ C will be set with C if trailing decimals were seen (in which case C<*valuep> gives the true value truncated to an integer), and C if the number is negative (in which case C<*valuep> holds the -absolute value). C is not set if e notation was used or the +absolute value). C is not set if C notation was used or the number is larger than a UV. C allows only C, which allows for trailing @@ -1370,9 +1367,9 @@ I32 bit; if (exponent == 0) - return value; + return value; if (value == 0) - return (NV)0; + return (NV)0; /* On OpenVMS VAX we by default use the D_FLOAT double format, * and that format does not have *easy* capabilities [1] for @@ -1396,24 +1393,24 @@ #if ((defined(VMS) && !defined(_IEEE_FP)) || defined(_UNICOS) || defined(DOUBLE_IS_VAX_FLOAT)) && defined(NV_MAX_10_EXP) STMT_START { - const NV exp_v = log10(value); - if (exponent >= NV_MAX_10_EXP || exponent + exp_v >= NV_MAX_10_EXP) - return NV_MAX; - if (exponent < 0) { - if (-(exponent + exp_v) >= NV_MAX_10_EXP) - return 0.0; - while (-exponent >= NV_MAX_10_EXP) { - /* combination does not overflow, but 10^(-exponent) does */ - value /= 10; - ++exponent; - } - } + const NV exp_v = log10(value); + if (exponent >= NV_MAX_10_EXP || exponent + exp_v >= NV_MAX_10_EXP) + return NV_MAX; + if (exponent < 0) { + if (-(exponent + exp_v) >= NV_MAX_10_EXP) + return 0.0; + while (-exponent >= NV_MAX_10_EXP) { + /* combination does not overflow, but 10^(-exponent) does */ + value /= 10; + ++exponent; + } + } } STMT_END; #endif if (exponent < 0) { - negative = 1; - exponent = -exponent; + negative = 1; + exponent = -exponent; #ifdef NV_MAX_10_EXP /* for something like 1234 x 10^-309, the action of calculating * the intermediate value 10^309 then returning 1234 / (10^309) @@ -1436,9 +1433,9 @@ # define FP_OVERFLOWS_TO_ZERO #endif for (bit = 1; exponent; bit <<= 1) { - if (exponent & bit) { - exponent ^= bit; - result *= power; + if (exponent & bit) { + exponent ^= bit; + result *= power; #ifdef FP_OVERFLOWS_TO_ZERO if (result == 0) # ifdef NV_INF @@ -1447,12 +1444,12 @@ return value < 0 ? -FLT_MAX : FLT_MAX; # endif #endif - /* Floating point exceptions are supposed to be turned off, - * but if we're obviously done, don't risk another iteration. - */ - if (exponent == 0) break; - } - power *= power; + /* Floating point exceptions are supposed to be turned off, + * but if we're obviously done, don't risk another iteration. + */ + if (exponent == 0) break; + } + power *= power; } return negative ? value / result : value * result; } @@ -1467,7 +1464,18 @@ NV Perl_my_atof(pTHX_ const char* s) { - /* 's' must be NUL terminated */ + +/* +=for apidoc my_atof + +L(3)>, but properly works with Perl locale handling, accepting a dot +radix character always, but also the current locale's radix character if and +only if called from within the lexical scope of a Perl C statement. + +N.B. C must be NUL terminated. + +=cut +*/ NV x = 0.0; @@ -1638,15 +1646,15 @@ /* leading whitespace */ while (s < send && isSPACE(*s)) - ++s; + ++s; /* sign */ switch (*s) { - case '-': - negative = 1; - /* FALLTHROUGH */ - case '+': - ++s; + case '-': + negative = 1; + /* FALLTHROUGH */ + case '+': + ++s; } #endif @@ -1736,105 +1744,111 @@ * large, we add the total to NV and start again */ while (s < send) { - if (isDIGIT(*s)) { - seen_digit = 1; - old_digit = digit; - digit = *s++ - '0'; - if (seen_dp) - exp_adjust[1]++; - - /* don't start counting until we see the first significant - * digit, eg the 5 in 0.00005... */ - if (!sig_digits && digit == 0) - continue; - - if (++sig_digits > MAX_SIG_DIGITS) { - /* limits of precision reached */ - if (digit > 5) { - ++accumulator[seen_dp]; - } else if (digit == 5) { - if (old_digit % 2) { /* round to even - Allen */ - ++accumulator[seen_dp]; - } - } - if (seen_dp) { - exp_adjust[1]--; - } else { - exp_adjust[0]++; - } - /* skip remaining digits */ - while (s < send && isDIGIT(*s)) { - ++s; - if (! seen_dp) { - exp_adjust[0]++; - } - } - /* warn of loss of precision? */ - } - else { - if (accumulator[seen_dp] > MAX_ACCUMULATE) { - /* add accumulator to result and start again */ - result[seen_dp] = S_mulexp10(result[seen_dp], - exp_acc[seen_dp]) - + (NV)accumulator[seen_dp]; - accumulator[seen_dp] = 0; - exp_acc[seen_dp] = 0; - } - accumulator[seen_dp] = accumulator[seen_dp] * 10 + digit; - ++exp_acc[seen_dp]; - } - } - else if (!seen_dp && GROK_NUMERIC_RADIX(&s, send)) { - seen_dp = 1; - if (sig_digits > MAX_SIG_DIGITS) { - while (s < send && isDIGIT(*s)) { - ++s; - } - break; - } - } - else { - break; - } + if (isDIGIT(*s)) { + seen_digit = 1; + old_digit = digit; + digit = *s++ - '0'; + if (seen_dp) + exp_adjust[1]++; + + /* don't start counting until we see the first significant + * digit, eg the 5 in 0.00005... */ + if (!sig_digits && digit == 0) + continue; + + if (++sig_digits > MAX_SIG_DIGITS) { + /* limits of precision reached */ + if (digit > 5) { + ++accumulator[seen_dp]; + } else if (digit == 5) { + if (old_digit % 2) { /* round to even - Allen */ + ++accumulator[seen_dp]; + } + } + if (seen_dp) { + exp_adjust[1]--; + } else { + exp_adjust[0]++; + } + /* skip remaining digits */ + while (s < send && isDIGIT(*s)) { + ++s; + if (! seen_dp) { + exp_adjust[0]++; + } + } + /* warn of loss of precision? */ + } + else { + if (accumulator[seen_dp] > MAX_ACCUMULATE) { + /* add accumulator to result and start again */ + result[seen_dp] = S_mulexp10(result[seen_dp], + exp_acc[seen_dp]) + + (NV)accumulator[seen_dp]; + accumulator[seen_dp] = 0; + exp_acc[seen_dp] = 0; + } + accumulator[seen_dp] = accumulator[seen_dp] * 10 + digit; + ++exp_acc[seen_dp]; + } + } + else if (!seen_dp && GROK_NUMERIC_RADIX(&s, send)) { + seen_dp = 1; + if (sig_digits > MAX_SIG_DIGITS) { + while (s < send && isDIGIT(*s)) { + ++s; + } + break; + } + } + else { + break; + } } result[0] = S_mulexp10(result[0], exp_acc[0]) + (NV)accumulator[0]; if (seen_dp) { - result[1] = S_mulexp10(result[1], exp_acc[1]) + (NV)accumulator[1]; + result[1] = S_mulexp10(result[1], exp_acc[1]) + (NV)accumulator[1]; } if (s < send && seen_digit && (isALPHA_FOLD_EQ(*s, 'e'))) { - bool expnegative = 0; + bool expnegative = 0; - ++s; - switch (*s) { - case '-': - expnegative = 1; - /* FALLTHROUGH */ - case '+': - ++s; - } - while (s < send && isDIGIT(*s)) - exponent = exponent * 10 + (*s++ - '0'); - if (expnegative) - exponent = -exponent; + ++s; + switch (*s) { + case '-': + expnegative = 1; + /* FALLTHROUGH */ + case '+': + ++s; + } + while (s < send && isDIGIT(*s)) + exponent = exponent * 10 + (*s++ - '0'); + if (expnegative) + exponent = -exponent; } /* now apply the exponent */ if (seen_dp) { - result[2] = S_mulexp10(result[0],exponent+exp_adjust[0]) - + S_mulexp10(result[1],exponent-exp_adjust[1]); + result[2] = S_mulexp10(result[0],exponent+exp_adjust[0]) + + S_mulexp10(result[1],exponent-exp_adjust[1]); } else { - result[2] = S_mulexp10(result[0],exponent+exp_adjust[0]); + result[2] = S_mulexp10(result[0],exponent+exp_adjust[0]); } /* now apply the sign */ if (negative) - result[2] = -result[2]; -#endif /* USE_PERL_ATOF */ + result[2] = -result[2]; *value = result[2]; return (char *)s; +#else /* USE_PERL_ATOF */ + /* If you see this error you both don't have strtod (or configured -Ud_strtod or + or it's long double/quadmath equivalent) and disabled USE_PERL_ATOF, thus + removing any way for perl to convert strings to floating point numbers. + */ +# error No mechanism to convert strings to numbers available +#endif } /* diff -Nru perl-5.32.1/op.c perl-5.34.0/op.c --- perl-5.32.1/op.c 2021-01-08 21:20:36.000000000 +0000 +++ perl-5.34.0/op.c 2021-02-21 11:01:31.000000000 +0000 @@ -207,7 +207,10 @@ /* rounds up to nearest pointer */ #define SIZE_TO_PSIZE(x) (((x) + sizeof(I32 *) - 1)/sizeof(I32 *)) -#define DIFF(o,p) ((size_t)((I32 **)(p) - (I32**)(o))) + +#define DIFF(o,p) \ + (assert(((char *)(p) - (char *)(o)) % sizeof(I32**) == 0), \ + ((size_t)((I32 **)(p) - (I32**)(o)))) /* requires double parens and aTHX_ */ #define DEBUG_S_warn(args) \ @@ -215,20 +218,29 @@ PerlIO_printf(Perl_debug_log, "%s", SvPVx_nolen(Perl_mess args)) \ ) +/* opslot_size includes the size of the slot header, and an op can't be smaller than BASEOP */ +#define OPSLOT_SIZE_BASE (SIZE_TO_PSIZE(sizeof(OPSLOT))) + +/* the number of bytes to allocate for a slab with sz * sizeof(I32 **) space for op */ +#define OpSLABSizeBytes(sz) \ + ((sz) * sizeof(I32 *) + STRUCT_OFFSET(OPSLAB, opslab_slots)) /* malloc a new op slab (suitable for attaching to PL_compcv). - * sz is in units of pointers */ + * sz is in units of pointers from the beginning of opslab_opslots */ static OPSLAB * S_new_slab(pTHX_ OPSLAB *head, size_t sz) { OPSLAB *slab; + size_t sz_bytes = OpSLABSizeBytes(sz); /* opslot_offset is only U16 */ - assert(sz < U16_MAX); + assert(sz < U16_MAX); + /* room for at least one op */ + assert(sz >= OPSLOT_SIZE_BASE); #ifdef PERL_DEBUG_READONLY_OPS - slab = (OPSLAB *) mmap(0, sz * sizeof(I32 *), + slab = (OPSLAB *) mmap(0, sz_bytes, PROT_READ|PROT_WRITE, MAP_ANON|MAP_PRIVATE, -1, 0); DEBUG_m(PerlIO_printf(Perl_debug_log, "mapped %lu at %p\n", @@ -238,7 +250,8 @@ abort(); } #else - slab = (OPSLAB *)PerlMemShared_calloc(sz, sizeof(I32 *)); + slab = (OPSLAB *)PerlMemShared_malloc(sz_bytes); + Zero(slab, sz_bytes, char); #endif slab->opslab_size = (U16)sz; @@ -246,7 +259,7 @@ /* The context is unused in non-Windows */ PERL_UNUSED_CONTEXT; #endif - slab->opslab_free_space = sz - DIFF(slab, &slab->opslab_slots); + slab->opslab_free_space = sz; slab->opslab_head = head ? head : slab; DEBUG_S_warn((aTHX_ "allocated new op slab sz 0x%x, %p, head slab %p", (unsigned int)slab->opslab_size, (void*)slab, @@ -254,8 +267,6 @@ return slab; } -/* opslot_size includes the size of the slot header, and an op can't be smaller than BASEOP */ -#define OPSLOT_SIZE_BASE (SIZE_TO_PSIZE(sizeof(OP)) + OPSLOT_HEADER_P) #define OPSLOT_SIZE_TO_INDEX(sz) ((sz) - OPSLOT_SIZE_BASE) #define link_freed_op(slab, o) S_link_freed_op(aTHX_ slab, o) @@ -308,7 +319,7 @@ OPSLAB *slab2; OPSLOT *slot; OP *o; - size_t opsz; + size_t sz_in_p; /* size in pointer units, including the OPSLOT header */ /* We only allocate ops from the slab during subroutine compilation. We find the slab via PL_compcv, hence that must be non-NULL. It could @@ -337,18 +348,17 @@ } else ++(head_slab = (OPSLAB *)CvSTART(PL_compcv))->opslab_refcnt; - opsz = SIZE_TO_PSIZE(sz); - sz = opsz + OPSLOT_HEADER_P; + sz_in_p = SIZE_TO_PSIZE(sz + OPSLOT_HEADER); /* The head slab for each CV maintains a free list of OPs. In particular, constant folding will free up OPs, so it makes sense to re-use them where possible. A freed up slot is used in preference to a new allocation. */ if (head_slab->opslab_freed && - OPSLOT_SIZE_TO_INDEX(sz) < head_slab->opslab_freed_size) { + OPSLOT_SIZE_TO_INDEX(sz_in_p) < head_slab->opslab_freed_size) { U16 base_index; /* look for a large enough size with any freed ops */ - for (base_index = OPSLOT_SIZE_TO_INDEX(sz); + for (base_index = OPSLOT_SIZE_TO_INDEX(sz_in_p); base_index < head_slab->opslab_freed_size && !head_slab->opslab_freed[base_index]; ++base_index) { } @@ -358,18 +368,16 @@ o = head_slab->opslab_freed[base_index]; DEBUG_S_warn((aTHX_ "realloced op at %p, slab %p, head slab %p", - (void*)o, - (I32**)OpSLOT(o) - OpSLOT(o)->opslot_offset, - (void*)head_slab)); + (void *)o, (void *)OpMySLAB(o), (void *)head_slab)); head_slab->opslab_freed[base_index] = o->op_next; - Zero(o, opsz, I32 *); + Zero(o, sz, char); o->op_slabbed = 1; goto gotit; } } #define INIT_OPSLOT(s) \ - slot->opslot_offset = DIFF(slab2, slot) ; \ + slot->opslot_offset = DIFF(&slab2->opslab_slots, slot) ; \ slot->opslot_size = s; \ slab2->opslab_free_space -= s; \ o = &slot->opslot_op; \ @@ -377,14 +385,16 @@ /* The partially-filled slab is next in the chain. */ slab2 = head_slab->opslab_next ? head_slab->opslab_next : head_slab; - if (slab2->opslab_free_space < sz) { + if (slab2->opslab_free_space < sz_in_p) { /* Remaining space is too small. */ /* If we can fit a BASEOP, add it to the free chain, so as not to waste it. */ - if (slab2->opslab_free_space >= SIZE_TO_PSIZE(sizeof(OP)) + OPSLOT_HEADER_P) { + if (slab2->opslab_free_space >= OPSLOT_SIZE_BASE) { slot = &slab2->opslab_slots; INIT_OPSLOT(slab2->opslab_free_space); o->op_type = OP_FREED; + DEBUG_S_warn((aTHX_ "linked unused op space at %p, slab %p, head slab %p", + (void *)o, (void *)slab2, (void *)head_slab)); link_freed_op(head_slab, o); } @@ -396,14 +406,12 @@ slab2->opslab_next = head_slab->opslab_next; head_slab->opslab_next = slab2; } - assert(slab2->opslab_size >= sz); + assert(slab2->opslab_size >= sz_in_p); /* Create a new op slot */ - slot = (OPSLOT *) - ((I32 **)&slab2->opslab_slots - + slab2->opslab_free_space - sz); + slot = OpSLOToff(slab2, slab2->opslab_free_space - sz_in_p); assert(slot >= &slab2->opslab_slots); - INIT_OPSLOT(sz); + INIT_OPSLOT(sz_in_p); DEBUG_S_warn((aTHX_ "allocating op at %p, slab %p, head slab %p", (void*)o, (void*)slab2, (void*)head_slab)); @@ -427,9 +435,9 @@ slab->opslab_readonly = 1; for (; slab; slab = slab->opslab_next) { /*DEBUG_U(PerlIO_printf(Perl_debug_log,"mprotect ->ro %lu at %p\n", - (unsigned long) slab->opslab_size, slab));*/ - if (mprotect(slab, slab->opslab_size * sizeof(I32 *), PROT_READ)) - Perl_warn(aTHX_ "mprotect for %p %lu failed with %d", slab, + (unsigned long) slab->opslab_size, (void *)slab));*/ + if (mprotect(slab, OpSLABSizeBytes(slab->opslab_size), PROT_READ)) + Perl_warn(aTHX_ "mprotect for %p %lu failed with %d", (void *)slab, (unsigned long)slab->opslab_size, errno); } } @@ -445,10 +453,10 @@ slab2 = slab; for (; slab2; slab2 = slab2->opslab_next) { /*DEBUG_U(PerlIO_printf(Perl_debug_log,"mprotect ->rw %lu at %p\n", - (unsigned long) size, slab2));*/ - if (mprotect((void *)slab2, slab2->opslab_size * sizeof(I32 *), + (unsigned long) size, (void *)slab2));*/ + if (mprotect((void *)slab2, OpSLABSizeBytes(slab2->opslab_size), PROT_READ|PROT_WRITE)) { - Perl_warn(aTHX_ "mprotect RW for %p %lu failed with %d", slab, + Perl_warn(aTHX_ "mprotect RW for %p %lu failed with %d", (void *)slab, (unsigned long)slab2->opslab_size, errno); } } @@ -504,9 +512,7 @@ o->op_type = OP_FREED; link_freed_op(slab, o); DEBUG_S_warn((aTHX_ "freeing op at %p, slab %p, head slab %p", - (void*)o, - (I32**)OpSLOT(o) - OpSLOT(o)->opslot_offset, - (void*)slab)); + (void*)o, (void *)OpMySLAB(o), (void*)slab)); OpslabREFCNT_dec_padok(slab); } @@ -550,7 +556,7 @@ #ifdef PERL_DEBUG_READONLY_OPS DEBUG_m(PerlIO_printf(Perl_debug_log, "Deallocate slab at %p\n", (void*)slab)); - if (munmap(slab, slab->opslab_size * sizeof(I32 *))) { + if (munmap(slab, OpSLABSizeBytes(slab->opslab_size))) { perror("munmap failed"); abort(); } @@ -575,10 +581,8 @@ PERL_ARGS_ASSERT_OPSLAB_FORCE_FREE; slab2 = slab; do { - OPSLOT *slot = (OPSLOT*) - ((I32**)&slab2->opslab_slots + slab2->opslab_free_space); - OPSLOT *end = (OPSLOT*) - ((I32**)slab2 + slab2->opslab_size); + OPSLOT *slot = OpSLOToff(slab2, slab2->opslab_free_space); + OPSLOT *end = OpSLOToff(slab2, slab2->opslab_size); for (; slot < end; slot = (OPSLOT*) ((I32**)slot + slot->opslot_size) ) { @@ -720,12 +724,28 @@ o->op_private &= ~OPpCONST_STRICT; /* prevent warning twice about the same OP */ } +void +Perl_no_bareword_filehandle(pTHX_ const char *fhname) { + PERL_ARGS_ASSERT_NO_BAREWORD_FILEHANDLE; + + if (strNE(fhname, "STDERR") + && strNE(fhname, "STDOUT") + && strNE(fhname, "STDIN") + && strNE(fhname, "_") + && strNE(fhname, "ARGV") + && strNE(fhname, "ARGVOUT") + && strNE(fhname, "DATA")) { + qerror(Perl_mess(aTHX_ "Bareword filehandle \"%s\" not allowed under 'no feature \"bareword_filehandles\"'", fhname)); + } +} + /* "register" allocation */ PADOFFSET Perl_allocmy(pTHX_ const char *const name, const STRLEN len, const U32 flags) { PADOFFSET off; + bool is_idfirst, is_default; const bool is_our = (PL_parser->in_my == KEY_our); PERL_ARGS_ASSERT_ALLOCMY; @@ -734,14 +754,15 @@ Perl_croak(aTHX_ "panic: allocmy illegal flag bits 0x%" UVxf, (UV)flags); + is_idfirst = flags & SVf_UTF8 + ? isIDFIRST_utf8_safe((U8*)name + 1, name + len) + : isIDFIRST_A(name[1]); + + /* $_, @_, etc. */ + is_default = len == 2 && name[1] == '_'; + /* complain about "my $" etc etc */ - if ( len - && !( is_our - || isALPHA(name[1]) - || ( (flags & SVf_UTF8) - && isIDFIRST_utf8_safe((U8 *)name+1, name + len)) - || (name[1] == '_' && len > 2))) - { + if (!is_our && (!is_idfirst || is_default)) { const char * const type = PL_parser->in_my == KEY_sigvar ? "subroutine signature" : PL_parser->in_my == KEY_state ? "\"state\"" : "\"my\""; @@ -785,7 +806,7 @@ } /* -=head1 Optree Manipulation Functions +=for apidoc_section $optree_manipulation =for apidoc alloccopstash @@ -846,7 +867,6 @@ void Perl_op_free(pTHX_ OP *o) { - dVAR; OPCODE type; OP *top_op = o; OP *next_op = o; @@ -1020,7 +1040,6 @@ Perl_op_clear(pTHX_ OP *o) { - dVAR; PERL_ARGS_ASSERT_OP_CLEAR; @@ -1390,7 +1409,6 @@ void Perl_op_null(pTHX_ OP *o) { - dVAR; PERL_ARGS_ASSERT_OP_NULL; @@ -1405,9 +1423,6 @@ Perl_op_refcnt_lock(pTHX) PERL_TSA_ACQUIRE(PL_op_mutex) { -#ifdef USE_ITHREADS - dVAR; -#endif PERL_UNUSED_CONTEXT; OP_REFCNT_LOCK; } @@ -1416,9 +1431,6 @@ Perl_op_refcnt_unlock(pTHX) PERL_TSA_RELEASE(PL_op_mutex) { -#ifdef USE_ITHREADS - dVAR; -#endif PERL_UNUSED_CONTEXT; OP_REFCNT_UNLOCK; } @@ -1629,7 +1641,6 @@ LOGOP * Perl_alloc_LOGOP(pTHX_ I32 type, OP *first, OP* other) { - dVAR; LOGOP *logop; OP *kid = first; NewOp(1101, logop, 1, LOGOP); @@ -2068,7 +2079,6 @@ OP * Perl_scalarvoid(pTHX_ OP *arg) { - dVAR; OP *kid; SV* sv; OP *o = arg; @@ -2874,7 +2884,6 @@ STATIC void S_maybe_multiconcat(pTHX_ OP *o) { - dVAR; OP *lastkidop; /* the right-most of any kids unshifted onto o */ OP *topop; /* the top-most op in the concat tree (often equals o, unless there are assign/stringify ops above it */ @@ -4079,7 +4088,6 @@ static void S_lvref(pTHX_ OP *o, I32 type) { - dVAR; OP *kid; OP * top_op = o; @@ -4257,7 +4265,6 @@ OP * Perl_op_lvalue_flags(pTHX_ OP *o, I32 type, U32 flags) { - dVAR; OP *top_op = o; if (!o || (PL_parser && PL_parser->error_count)) @@ -4875,7 +4882,6 @@ OP * Perl_doref(pTHX_ OP *o, I32 type, bool set_op_ref) { - dVAR; OP * top_op = o; PERL_ARGS_ASSERT_DOREF; @@ -5500,7 +5506,6 @@ OP * Perl_cmpchain_start(pTHX_ I32 type, OP *left, OP *right) { - dVAR; BINOP *bop; OP *op; @@ -5526,7 +5531,6 @@ OP * Perl_cmpchain_extend(pTHX_ I32 type, OP *ch, OP *right) { - dVAR; BINOP *bop; OP *op; @@ -5566,7 +5570,6 @@ OP * Perl_cmpchain_finish(pTHX_ OP *ch) { - dVAR; PERL_ARGS_ASSERT_CMPCHAIN_FINISH; if (ch->op_type != OP_NULL) { @@ -5632,7 +5635,6 @@ OP * Perl_op_scope(pTHX_ OP *o) { - dVAR; if (o) { if (o->op_flags & OPf_PARENS || PERLDB_NOOPT || TAINTING_get) { o = op_prepend_elem(OP_LINESEQ, @@ -5800,7 +5802,7 @@ } /* -=head1 Compile-time scope hooks +=for apidoc_section $scope =for apidoc blockhook_register @@ -5978,9 +5980,17 @@ PERL_ARGS_ASSERT_JMAYBE; if (o->op_type == OP_LIST) { - OP * const o2 - = newSVREF(newGVOP(OP_GV, 0, gv_fetchpvs(";", GV_ADD|GV_NOTQUAL, SVt_PV))); - o = op_convert_list(OP_JOIN, 0, op_prepend_elem(OP_LIST, o2, o)); + if (FEATURE_MULTIDIMENSIONAL_IS_ENABLED) { + OP * const o2 + = newSVREF(newGVOP(OP_GV, 0, gv_fetchpvs(";", GV_ADD|GV_NOTQUAL, SVt_PV))); + o = op_convert_list(OP_JOIN, 0, op_prepend_elem(OP_LIST, o2, o)); + } + else { + /* If the user disables this, then a warning might not be enough to alert + them to a possible change of behaviour here, so throw an exception. + */ + yyerror("Multidimensional hash lookup is disabled"); + } } return o; } @@ -6010,7 +6020,6 @@ /* integerize op. */ if ((PL_opargs[type] & OA_OTHERINT) && (PL_hints & HINT_INTEGER)) { - dVAR; o->op_ppaddr = PL_ppaddr[++(o->op_type)]; } @@ -6044,7 +6053,6 @@ static OP * S_fold_constants(pTHX_ OP *const o) { - dVAR; OP *curop; OP *newop; I32 type = o->op_type; @@ -6234,7 +6242,6 @@ static void S_gen_constant_list(pTHX_ OP *o) { - dVAR; OP *curop, *old_next; SV * const oldwarnhook = PL_warnhook; SV * const olddiehook = PL_diehook; @@ -6342,7 +6349,7 @@ } /* -=head1 Optree Manipulation Functions +=for apidoc_section $optree_manipulation */ /* List constructors */ @@ -6473,7 +6480,6 @@ OP * Perl_op_convert_list(pTHX_ I32 type, I32 flags, OP *o) { - dVAR; if (type < 0) type = -type, flags |= OPf_SPECIAL; if (!o || o->op_type != OP_LIST) o = force_list(o, 0); @@ -6515,7 +6521,7 @@ /* -=head1 Optree construction +=for apidoc_section $optree_construction =for apidoc newNULLLIST @@ -6585,7 +6591,6 @@ OP * Perl_newLISTOP(pTHX_ I32 type, I32 flags, OP *first, OP *last) { - dVAR; LISTOP *listop; /* Note that allocating an OP_PUSHMARK can die under Safe.pm if * pushmark is banned. So do it now while existing ops are in a @@ -6637,7 +6642,6 @@ OP * Perl_newOP(pTHX_ I32 type, I32 flags) { - dVAR; OP *o; if (type == -OP_ENTEREVAL) { @@ -6682,7 +6686,6 @@ OP * Perl_newUNOP(pTHX_ I32 type, I32 flags, OP *first) { - dVAR; UNOP *unop; if (type == -OP_ENTEREVAL) { @@ -6696,6 +6699,7 @@ || (PL_opargs[type] & OA_CLASS_MASK) == OA_LOOPEXOP || type == OP_SASSIGN || type == OP_ENTERTRY + || type == OP_ENTERTRYCATCH || type == OP_CUSTOM || type == OP_NULL ); @@ -6732,7 +6736,6 @@ OP * Perl_newUNOP_AUX(pTHX_ I32 type, I32 flags, OP *first, UNOP_AUX_item *aux) { - dVAR; UNOP_AUX *unop; assert((PL_opargs[type] & OA_CLASS_MASK) == OA_UNOP_AUX @@ -6771,7 +6774,6 @@ static OP* S_newMETHOP_internal(pTHX_ I32 type, I32 flags, OP* dynamic_meth, SV* const_meth) { - dVAR; METHOP *methop; assert((PL_opargs[type] & OA_CLASS_MASK) == OA_METHOP @@ -6847,7 +6849,6 @@ OP * Perl_newBINOP(pTHX_ I32 type, I32 flags, OP *first, OP *last) { - dVAR; BINOP *binop; ASSUME((PL_opargs[type] & OA_CLASS_MASK) == OA_BINOP @@ -7034,7 +7035,7 @@ UV* t_array; SV* t_invlist; UV* r_map; - UV r_cp, t_cp; + UV r_cp = 0, t_cp = 0; UV t_cp_end = (UV) -1; UV r_cp_end; Size_t len; @@ -8101,7 +8102,6 @@ OP * Perl_newPMOP(pTHX_ I32 type, I32 flags) { - dVAR; PMOP *pmop; assert((PL_opargs[type] & OA_CLASS_MASK) == OA_PMOP @@ -8157,7 +8157,7 @@ } else { SV * const repointer = &PL_sv_undef; av_push(PL_regex_padav, repointer); - pmop->op_pmoffset = av_tindex(PL_regex_padav); + pmop->op_pmoffset = av_top_index(PL_regex_padav); PL_regex_pad = AvARRAY(PL_regex_padav); } #endif @@ -8588,7 +8588,6 @@ OP * Perl_newSVOP(pTHX_ I32 type, I32 flags, SV *sv) { - dVAR; SVOP *svop; PERL_ARGS_ASSERT_NEWSVOP; @@ -8644,7 +8643,6 @@ OP * Perl_newPADOP(pTHX_ I32 type, I32 flags, SV *sv) { - dVAR; PADOP *padop; PERL_ARGS_ASSERT_NEWPADOP; @@ -8712,7 +8710,6 @@ OP * Perl_newPVOP(pTHX_ I32 type, I32 flags, char *pv) { - dVAR; const bool utf8 = cBOOL(flags & SVf_UTF8); PVOP *pvop; @@ -8894,7 +8891,7 @@ } /* -=head1 Embedding Functions +=for apidoc_section $embedding =for apidoc load_module @@ -8927,6 +8924,14 @@ =for apidoc Amnh||PERL_LOADMOD_NOIMPORT =for apidoc Amnh||PERL_LOADMOD_IMPORT_OPS +=for apidoc vload_module +Like C> but the arguments are an encapsulated argument list. + +=for apidoc load_module_nocontext +Like C> but does not take a thread context (C) parameter, +so is used in situations where the caller doesn't already have the thread +context. + =cut */ void @@ -9034,7 +9039,7 @@ } /* -=head1 Optree construction +=for apidoc_section $optree_construction =for apidoc newSLICEOP @@ -9130,7 +9135,6 @@ static OP * S_newONCEOP(pTHX_ OP *initop, OP *padop) { - dVAR; const PADOFFSET target = padop->op_targ; OP *const other = newOP(OP_PADSV, padop->op_flags @@ -9394,7 +9398,6 @@ OP * Perl_newSTATEOP(pTHX_ I32 flags, char *label, OP *o) { - dVAR; const U32 seq = intro_my(); const U32 utf8 = flags & SVf_UTF8; COP *cop; @@ -9545,7 +9548,6 @@ STATIC OP * S_new_logop(pTHX_ I32 type, I32 flags, OP** firstp, OP** otherp) { - dVAR; LOGOP *logop; OP *o; OP *first; @@ -9757,7 +9759,6 @@ OP * Perl_newCONDOP(pTHX_ I32 flags, OP *first, OP *trueop, OP *falseop) { - dVAR; LOGOP *logop; OP *start; OP *o; @@ -9816,6 +9817,63 @@ } /* +=for apidoc newTRYCATCHOP + +Constructs and returns a conditional execution statement that implements +the C/C semantics. First the op tree in C is executed, +inside a context that traps exceptions. If an exception occurs then the +optree in C is executed, with the trapped exception set into the +lexical variable given by C (which must be an op of type +C). All the optrees are consumed by this function and become part +of the returned op tree. + +The C argument is currently ignored. + +=cut + */ + +OP * +Perl_newTRYCATCHOP(pTHX_ I32 flags, OP *tryblock, OP *catchvar, OP *catchblock) +{ + OP *o, *catchop; + + PERL_ARGS_ASSERT_NEWTRYCATCHOP; + assert(catchvar->op_type == OP_PADSV); + + PERL_UNUSED_ARG(flags); + + /* The returned optree is shaped as: + * LISTOP leavetrycatch + * LOGOP entertrycatch + * LISTOP poptry + * $tryblock here + * LOGOP catch + * $catchblock here + */ + + if(tryblock->op_type != OP_LINESEQ) + tryblock = op_convert_list(OP_LINESEQ, 0, tryblock); + OpTYPE_set(tryblock, OP_POPTRY); + + /* Manually construct a naked LOGOP. + * Normally if we call newLOGOP the returned value is a UNOP(OP_NULL) + * containing the LOGOP we wanted as its op_first */ + catchop = (OP *)alloc_LOGOP(OP_CATCH, newOP(OP_NULL, 0), catchblock); + OpMORESIB_set(cUNOPx(catchop)->op_first, catchblock); + OpLASTSIB_set(catchblock, catchop); + + /* Inject the catchvar's pad offset into the OP_CATCH targ */ + cLOGOPx(catchop)->op_targ = catchvar->op_targ; + op_free(catchvar); + + /* Build the optree structure */ + o = newLISTOP(OP_LIST, 0, tryblock, catchop); + o = op_convert_list(OP_ENTERTRYCATCH, 0, o); + + return o; +} + +/* =for apidoc newRANGE Constructs and returns a C op, with subordinate C and @@ -10011,7 +10069,6 @@ Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP *loop, OP *expr, OP *block, OP *cont, I32 has_my) { - dVAR; OP *redo; OP *next = NULL; OP *listop; @@ -10135,7 +10192,6 @@ OP * Perl_newFOROP(pTHX_ I32 flags, OP *sv, OP *expr, OP *block, OP *cont) { - dVAR; LOOP *loop; OP *wop; PADOFFSET padoff = 0; @@ -10233,7 +10289,7 @@ * keep it in-place if there's space */ if (loop->op_slabbed && OpSLOT(loop)->opslot_size - < SIZE_TO_PSIZE(sizeof(LOOP)) + OPSLOT_HEADER_P) + < SIZE_TO_PSIZE(sizeof(LOOP) + OPSLOT_HEADER)) { /* no space; allocate new op */ LOOP *tmp; @@ -10358,7 +10414,6 @@ I32 enter_opcode, I32 leave_opcode, PADOFFSET entertarg) { - dVAR; LOGOP *enterop; OP *o; @@ -10629,7 +10684,7 @@ /* -=head1 Optree Manipulation Functions +=for apidoc_section $optree_manipulation =for apidoc cv_const_sv @@ -10854,7 +10909,6 @@ if (CvNAMED(*spot)) hek = CvNAME_HEK(*spot); else { - dVAR; U32 hash; PERL_HASH(hash, PadnamePV(name)+1, PadnameLEN(name)-1); CvNAME_HEK_set(*spot, hek = @@ -11014,7 +11068,6 @@ if (!CvNAME_HEK(cv)) { if (hek) (void)share_hek_hek(hek); else { - dVAR; U32 hash; PERL_HASH(hash, PadnamePV(name)+1, PadnameLEN(name)-1); hek = share_hek(PadnamePV(name)+1, @@ -11178,7 +11231,7 @@ If C is false and C is null, then the subroutine will be anonymous. If C is false and C is non-null, then C -must point to a C op, which will be consumed by this function, +must point to a C OP, which will be consumed by this function, and its string value supplies a name for the subroutine. The name may be qualified or unqualified, and if it is unqualified then a default stash will be selected in some manner. If C is true, then C @@ -11209,6 +11262,17 @@ any use of the returned pointer. It is the caller's responsibility to ensure that it knows which of these situations applies. +=for apidoc newATTRSUB +Construct a Perl subroutine, also performing some surrounding jobs. + +This is the same as L> with its C parameter set to +FALSE. This means that if C is null, the new sub will be anonymous; otherwise +the name will be derived from C in the way described (as with all other +details) in L>. + +=for apidoc newSUB +Like C>, but without attributes. + =cut */ @@ -11521,7 +11585,6 @@ assert(CvGV(cv) == gv); } else { - dVAR; U32 hash; PERL_HASH(hash, name, namlen); CvNAME_HEK_set(cv, @@ -11592,7 +11655,6 @@ if (isGV(gv)) CvGV_set(cv, gv); else { - dVAR; U32 hash; PERL_HASH(hash, name, namlen); CvNAME_HEK_set(cv, share_hek(name, @@ -12260,7 +12322,6 @@ OP * Perl_oopsAV(pTHX_ OP *o) { - dVAR; PERL_ARGS_ASSERT_OOPSAV; @@ -12286,7 +12347,6 @@ OP * Perl_oopsHV(pTHX_ OP *o) { - dVAR; PERL_ARGS_ASSERT_OOPSHV; @@ -12314,7 +12374,6 @@ OP * Perl_newAVREF(pTHX_ OP *o) { - dVAR; PERL_ARGS_ASSERT_NEWAVREF; @@ -12339,7 +12398,6 @@ OP * Perl_newHVREF(pTHX_ OP *o) { - dVAR; PERL_ARGS_ASSERT_NEWHVREF; @@ -12357,7 +12415,6 @@ Perl_newCVREF(pTHX_ I32 flags, OP *o) { if (o->op_type == OP_PADANY) { - dVAR; OpTYPE_set(o, OP_PADCV); } return newUNOP(OP_RV2CV, flags, scalar(o)); @@ -12366,7 +12423,6 @@ OP * Perl_newSVREF(pTHX_ OP *o) { - dVAR; PERL_ARGS_ASSERT_NEWSVREF; @@ -12641,7 +12697,6 @@ OP * Perl_ck_spair(pTHX_ OP *o) { - dVAR; PERL_ARGS_ASSERT_CK_SPAIR; @@ -12740,7 +12795,6 @@ OP * Perl_ck_eval(pTHX_ OP *o) { - dVAR; PERL_ARGS_ASSERT_CK_EVAL; @@ -12801,6 +12855,69 @@ } OP * +Perl_ck_trycatch(pTHX_ OP *o) +{ + LOGOP *enter; + OP *to_free = NULL; + OP *trykid, *catchkid; + OP *catchroot, *catchstart; + + PERL_ARGS_ASSERT_CK_TRYCATCH; + + trykid = cUNOPo->op_first; + if(trykid->op_type == OP_NULL || trykid->op_type == OP_PUSHMARK) { + to_free = trykid; + trykid = OpSIBLING(trykid); + } + catchkid = OpSIBLING(trykid); + + assert(trykid->op_type == OP_POPTRY); + assert(catchkid->op_type == OP_CATCH); + + /* cut whole sibling chain free from o */ + op_sibling_splice(o, NULL, -1, NULL); + if(to_free) + op_free(to_free); + op_free(o); + + enter = alloc_LOGOP(OP_ENTERTRYCATCH, NULL, NULL); + + /* establish postfix order */ + enter->op_next = (OP*)enter; + + o = op_prepend_elem(OP_LINESEQ, (OP*)enter, trykid); + op_append_elem(OP_LINESEQ, (OP*)o, catchkid); + + OpTYPE_set(o, OP_LEAVETRYCATCH); + + /* The returned optree is actually threaded up slightly nonobviously in + * terms of its ->op_next pointers. + * + * This way, if the tryblock dies, its retop points at the OP_CATCH, but + * if it does not then its leavetry skips over that and continues + * execution past it. + */ + + /* First, link up the actual body of the catch block */ + catchroot = OpSIBLING(cUNOPx(catchkid)->op_first); + catchstart = LINKLIST(catchroot); + cLOGOPx(catchkid)->op_other = catchstart; + + o->op_next = LINKLIST(o); + + /* die within try block should jump to the catch */ + enter->op_other = catchkid; + + /* after try block that doesn't die, just skip straight to leavetrycatch */ + trykid->op_next = o; + + /* after catch block, skip back up to the leavetrycatch */ + catchroot->op_next = o; + + return o; +} + +OP * Perl_ck_exec(pTHX_ OP *o) { PERL_ARGS_ASSERT_CK_EXEC; @@ -12846,7 +12963,6 @@ OP * Perl_ck_rvconst(pTHX_ OP *o) { - dVAR; SVOP * const kid = (SVOP*)cUNOPo->op_first; PERL_ARGS_ASSERT_CK_RVCONST; @@ -12941,7 +13057,6 @@ OP * Perl_ck_ftst(pTHX_ OP *o) { - dVAR; const I32 type = o->op_type; PERL_ARGS_ASSERT_CK_FTST; @@ -13111,6 +13226,11 @@ { OP * const newop = newGVOP(OP_GV, 0, gv_fetchsv(((SVOP*)kid)->op_sv, GV_ADD, SVt_PVIO)); + /* a first argument is handled by toke.c, ideally we'd + just check here but several ops don't use ck_fun() */ + if (!FEATURE_BAREWORD_FILEHANDLES_IS_ENABLED && numargs > 1) { + no_bareword_filehandle(SvPVX(cSVOPx_sv((SVOP*)kid))); + } /* replace kid with newop in chain */ op_sibling_splice(o, prev_kid, 1, newop); op_free(kid); @@ -13483,7 +13603,6 @@ OP * Perl_ck_smartmatch(pTHX_ OP *o) { - dVAR; PERL_ARGS_ASSERT_CK_SMARTMATCH; if (0 == (o->op_flags & OPf_SPECIAL)) { OP *first = cBINOPo->op_first; @@ -13548,7 +13667,6 @@ OP * Perl_ck_sassign(pTHX_ OP *o) { - dVAR; OP * const kid = cBINOPo->op_first; PERL_ARGS_ASSERT_CK_SASSIGN; @@ -13830,7 +13948,6 @@ SV * const sv = kid->op_sv; U32 const was_readonly = SvREADONLY(sv); if (kid->op_private & OPpCONST_BARE) { - dVAR; const char *end; HEK *hek; @@ -13875,7 +13992,6 @@ SvREFCNT_dec_NN(sv); } else { - dVAR; HEK *hek; if (was_readonly) SvREADONLY_off(sv); PERL_HASH(hash, s, len); @@ -13928,7 +14044,6 @@ OP * Perl_ck_select(pTHX_ OP *o) { - dVAR; OP* kid; PERL_ARGS_ASSERT_CK_SELECT; @@ -14170,7 +14285,6 @@ OP * Perl_ck_split(pTHX_ OP *o) { - dVAR; OP *kid; OP *sibs; @@ -15186,6 +15300,9 @@ { o->op_flags |= OPf_SPECIAL; kid->op_private &= ~OPpCONST_STRICT; + if (!FEATURE_BAREWORD_FILEHANDLES_IS_ENABLED) { + no_bareword_filehandle(SvPVX(cSVOPx_sv(kid))); + } } } return ck_fun(o); @@ -15228,7 +15345,6 @@ OP * Perl_ck_each(pTHX_ OP *o) { - dVAR; OP *kid = o->op_flags & OPf_KIDS ? cUNOPo->op_first : NULL; const unsigned orig_type = o->op_type; @@ -15923,7 +16039,6 @@ STATIC void S_maybe_multideref(pTHX_ OP *start, OP *orig_o, UV orig_action, U8 hints) { - dVAR; int pass; UNOP_AUX_item *arg_buf = NULL; bool reset_start_targ = FALSE; /* start->op_targ needs zeroing */ @@ -16718,7 +16833,6 @@ void Perl_rpeep(pTHX_ OP *o) { - dVAR; OP* oldop = NULL; OP* oldoldop = NULL; OP** defer_queue[MAX_DEFERRED]; /* small queue of deferred branches */ @@ -17908,7 +18022,7 @@ || !r /* .... = (); */ || !(l & ~AAS_SAFE_SCALAR) /* (undef, pos()) = ...; */ || !(r & ~AAS_SAFE_SCALAR) /* ... = (1,2,length,undef); */ - || (lscalars < 2) /* ($x, undef) = ... */ + || (lscalars < 2) /* (undef, $x) = ... */ ) { NOOP; /* always safe */ } @@ -18024,7 +18138,7 @@ } /* -=head1 Custom Operators +=for apidoc_section $custom =for apidoc Perl_custom_op_xop Return the XOP structure for a given custom op. This macro should be @@ -18128,6 +18242,7 @@ else xop = INT2PTR(XOP *, SvIV(HeVAL(he))); } + { XOPRETANY any; if(field == XOPe_xop_ptr) { @@ -18149,7 +18264,10 @@ any.xop_peep = xop->xop_peep; break; default: - NOT_REACHED; /* NOTREACHED */ + field_panic: + Perl_croak(aTHX_ + "panic: custom_op_get_field(): invalid field %d\n", + (int)field); break; } } else { @@ -18167,17 +18285,11 @@ any.xop_peep = XOPd_xop_peep; break; default: - NOT_REACHED; /* NOTREACHED */ + goto field_panic; break; } } } - /* On some platforms (HP-UX, IA64) gcc emits a warning for this function: - * op.c: In function 'Perl_custom_op_get_field': - * op.c:...: warning: 'any.xop_name' may be used uninitialized in this function [-Wmaybe-uninitialized] - * This is because on those platforms (with -DEBUGGING) NOT_REACHED - * expands to assert(0), which expands to ((0) ? (void)0 : - * __assert(...)), and gcc doesn't know that __assert can never return. */ return any; } } @@ -18428,7 +18540,7 @@ } /* -=head1 Hook manipulation +=for apidoc_section $hook These functions provide convenient and thread-safe means of manipulating hook variables. @@ -18493,7 +18605,6 @@ Perl_wrap_op_checker(pTHX_ Optype opcode, Perl_check_t new_checker, Perl_check_t *old_checker_p) { - dVAR; PERL_UNUSED_CONTEXT; PERL_ARGS_ASSERT_WRAP_OP_CHECKER; diff -Nru perl-5.32.1/opcode.h perl-5.34.0/opcode.h --- perl-5.32.1/opcode.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/opcode.h 2021-02-21 11:01:31.000000000 +0000 @@ -13,7 +13,7 @@ * Any changes made here will be lost! */ -#ifndef PERL_GLOBAL_STRUCT_INIT +#if defined(PERL_CORE) || defined(PERL_EXT) #define Perl_pp_scalar Perl_pp_null #define Perl_pp_padany Perl_unimplemented_op @@ -140,6 +140,9 @@ #define Perl_pp_sgrent Perl_pp_ehostent #define Perl_pp_egrent Perl_pp_ehostent #define Perl_pp_custom Perl_unimplemented_op + +#endif /* End of if defined(PERL_CORE) || defined(PERL_EXT) */ + START_EXTERN_C #ifndef DOINIT @@ -546,7 +549,11 @@ "isa", "cmpchain_and", "cmpchain_dup", - "freed", + "entertrycatch", + "leavetrycatch", + "poptry", + "catch", + "freed", }; #endif @@ -954,25 +961,20 @@ "derived class test", "comparison chaining", "comparand shuffling", - "freed op", + "try {block}", + "try {block} exit", + "pop try", + "catch {} block", + "freed op", }; #endif END_EXTERN_C -#endif /* !PERL_GLOBAL_STRUCT_INIT */ - START_EXTERN_C -#ifdef PERL_GLOBAL_STRUCT_INIT -# define PERL_PPADDR_INITED -static const Perl_ppaddr_t Gppaddr[] -#elif !defined(PERL_GLOBAL_STRUCT) -# define PERL_PPADDR_INITED EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ -#endif /* PERL_GLOBAL_STRUCT */ -#if (defined(DOINIT) && !defined(PERL_GLOBAL_STRUCT)) || defined(PERL_GLOBAL_STRUCT_INIT) -# define PERL_PPADDR_INITED +#if defined(DOINIT) = { Perl_pp_null, Perl_pp_stub, @@ -1374,21 +1376,16 @@ Perl_pp_isa, Perl_pp_cmpchain_and, Perl_pp_cmpchain_dup, + Perl_pp_entertrycatch, + Perl_pp_leavetrycatch, + Perl_pp_poptry, + Perl_pp_catch, } #endif -#ifdef PERL_PPADDR_INITED ; -#endif -#ifdef PERL_GLOBAL_STRUCT_INIT -# define PERL_CHECK_INITED -static const Perl_check_t Gcheck[] -#elif !defined(PERL_GLOBAL_STRUCT) -# define PERL_CHECK_INITED EXT Perl_check_t PL_check[] /* or perlvars.h */ -#endif -#if (defined(DOINIT) && !defined(PERL_GLOBAL_STRUCT)) || defined(PERL_GLOBAL_STRUCT_INIT) -# define PERL_CHECK_INITED +#if defined(DOINIT) = { Perl_ck_null, /* null */ Perl_ck_null, /* stub */ @@ -1790,13 +1787,13 @@ Perl_ck_isa, /* isa */ Perl_ck_null, /* cmpchain_and */ Perl_ck_null, /* cmpchain_dup */ + Perl_ck_trycatch, /* entertrycatch */ + Perl_ck_null, /* leavetrycatch */ + Perl_ck_null, /* poptry */ + Perl_ck_null, /* catch */ } #endif -#ifdef PERL_CHECK_INITED ; -#endif /* #ifdef PERL_CHECK_INITED */ - -#ifndef PERL_GLOBAL_STRUCT_INIT #ifndef DOINIT EXTCONST U32 PL_opargs[]; @@ -2202,11 +2199,13 @@ 0x00000204, /* isa */ 0x00000300, /* cmpchain_and */ 0x00000100, /* cmpchain_dup */ + 0x00000300, /* entertrycatch */ + 0x00000400, /* leavetrycatch */ + 0x00000400, /* poptry */ + 0x00000300, /* catch */ }; #endif -#endif /* !PERL_GLOBAL_STRUCT_INIT */ - END_EXTERN_C @@ -2322,9 +2321,7 @@ #define OPpTRANS_DELETE 0x80 START_EXTERN_C -#ifndef PERL_GLOBAL_STRUCT_INIT - -# ifndef DOINIT +#ifndef DOINIT /* data about the flags in op_private */ @@ -2334,7 +2331,7 @@ EXTCONST I16 PL_op_private_bitfields[]; EXTCONST U8 PL_op_private_valid[]; -# else +#else /* PL_op_private_labels[]: the short descriptions of private flags. @@ -2873,6 +2870,10 @@ 12, /* isa */ 0, /* cmpchain_and */ 0, /* cmpchain_dup */ + 0, /* entertrycatch */ + -1, /* leavetrycatch */ + -1, /* poptry */ + 0, /* catch */ }; @@ -2891,7 +2892,7 @@ */ EXTCONST U16 PL_op_private_bitdefs[] = { - 0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, argdefelem, method, method_named, method_super, method_redir, method_redir_super, entergiven, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst, cmpchain_and, cmpchain_dup */ + 0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, argdefelem, method, method_named, method_super, method_redir, method_redir_super, entergiven, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst, cmpchain_and, cmpchain_dup, entertrycatch, catch */ 0x2fdc, 0x41b9, /* pushmark */ 0x00bd, /* wantarray, runcv */ 0x0438, 0x1a50, 0x426c, 0x3d28, 0x3505, /* const */ @@ -3369,11 +3370,14 @@ /* ISA */ (OPpARG2_MASK), /* CMPCHAIN_AND */ (OPpARG1_MASK), /* CMPCHAIN_DUP */ (OPpARG1_MASK), + /* ENTERTRYCATCH */ (OPpARG1_MASK), + /* LEAVETRYCATCH */ (0), + /* POPTRY */ (0), + /* CATCH */ (OPpARG1_MASK), }; -# endif /* !DOINIT */ -#endif /* !PERL_GLOBAL_STRUCT_INIT */ +#endif /* !DOINIT */ END_EXTERN_C diff -Nru perl-5.32.1/op.h perl-5.34.0/op.h --- perl-5.32.1/op.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/op.h 2021-02-21 11:01:31.000000000 +0000 @@ -65,19 +65,19 @@ /* for efficiency, requires OPf_WANT_VOID == G_VOID etc */ #define OP_GIMME(op,dfl) \ - (((op)->op_flags & OPf_WANT) ? ((op)->op_flags & OPf_WANT) : dfl) + (((op)->op_flags & OPf_WANT) ? ((op)->op_flags & OPf_WANT) : dfl) #define OP_GIMME_REVERSE(flags) ((flags) & G_WANT) /* -=head1 "Gimme" Values +=for apidoc_section $callback =for apidoc Amn|U32|GIMME_V The XSUB-writer's equivalent to Perl's C. Returns C, C or C for void, scalar or list context, respectively. See L for a usage example. -=for apidoc Amn|U32|GIMME +=for apidoc AmnD|U32|GIMME A backward-compatible version of C which can only return C or C; in a void context, it returns C. Deprecated. Use C instead. @@ -95,9 +95,9 @@ #define OPf_WANT_LIST 3 /* Want list of any length */ #define OPf_KIDS 4 /* There is a firstborn child. */ #define OPf_PARENS 8 /* This operator was parenthesized. */ - /* (Or block needs explicit scope entry.) */ + /* (Or block needs explicit scope entry.) */ #define OPf_REF 16 /* Certified reference. */ - /* (Return container, not containee). */ + /* (Return container, not containee). */ #define OPf_MOD 32 /* Will modify (lvalue). */ #define OPf_STACKED 64 /* Some arg is arriving on the stack. */ @@ -106,43 +106,43 @@ */ #define OPf_SPECIAL 128 /* Do something weird for this op: */ - /* On local LVAL, don't init local value. */ - /* On OP_SORT, subroutine is inlined. */ - /* On OP_NOT, inversion was implicit. */ - /* On OP_LEAVE, don't restore curpm, e.g. + /* On local LVAL, don't init local value. */ + /* On OP_SORT, subroutine is inlined. */ + /* On OP_NOT, inversion was implicit. */ + /* On OP_LEAVE, don't restore curpm, e.g. * /(...)/ while ...>; */ - /* On truncate, we truncate filehandle */ - /* On control verbs, we saw no label */ - /* On flipflop, we saw ... instead of .. */ - /* On UNOPs, saw bare parens, e.g. eof(). */ - /* On OP_CHDIR, handle (or bare parens) */ - /* On OP_NULL, saw a "do". */ - /* On OP_EXISTS, treat av as av, not avhv. */ - /* On OP_(ENTER|LEAVE)EVAL, don't clear $@ */ - /* On regcomp, "use re 'eval'" was in scope */ - /* On RV2[ACGHS]V, don't create GV--in - defined()*/ - /* On OP_DBSTATE, indicates breakpoint - * (runtime property) */ - /* On OP_REQUIRE, was seen as CORE::require */ - /* On OP_(ENTER|LEAVE)WHEN, there's - no condition */ - /* On OP_SMARTMATCH, an implicit smartmatch */ - /* On OP_ANONHASH and OP_ANONLIST, create a - reference to the new anon hash or array */ - /* On OP_HELEM, OP_MULTIDEREF and OP_HSLICE, + /* On truncate, we truncate filehandle */ + /* On control verbs, we saw no label */ + /* On flipflop, we saw ... instead of .. */ + /* On UNOPs, saw bare parens, e.g. eof(). */ + /* On OP_CHDIR, handle (or bare parens) */ + /* On OP_NULL, saw a "do". */ + /* On OP_EXISTS, treat av as av, not avhv. */ + /* On OP_(ENTER|LEAVE)EVAL, don't clear $@ */ + /* On regcomp, "use re 'eval'" was in scope */ + /* On RV2[ACGHS]V, don't create GV--in + defined()*/ + /* On OP_DBSTATE, indicates breakpoint + * (runtime property) */ + /* On OP_REQUIRE, was seen as CORE::require */ + /* On OP_(ENTER|LEAVE)WHEN, there's + no condition */ + /* On OP_SMARTMATCH, an implicit smartmatch */ + /* On OP_ANONHASH and OP_ANONLIST, create a + reference to the new anon hash or array */ + /* On OP_HELEM, OP_MULTIDEREF and OP_HSLICE, localization will be followed by assignment, so do not wipe the target if it is special (e.g. a glob or a magic SV) */ - /* On OP_MATCH, OP_SUBST & OP_TRANS, the - operand of a logical or conditional - that was optimised away, so it should - not be bound via =~ */ - /* On OP_CONST, from a constant CV */ - /* On OP_GLOB, two meanings: - - Before ck_glob, called as CORE::glob - - After ck_glob, use Perl glob function - */ + /* On OP_MATCH, OP_SUBST & OP_TRANS, the + operand of a logical or conditional + that was optimised away, so it should + not be bound via =~ */ + /* On OP_CONST, from a constant CV */ + /* On OP_GLOB, two meanings: + - Before ck_glob, called as CORE::glob + - After ck_glob, use Perl glob function + */ /* On OP_PADRANGE, push @_ */ /* On OP_DUMP, has no label */ /* On OP_UNSTACK, in a C-style for loop */ @@ -158,11 +158,11 @@ #if !defined(PERL_CORE) && !defined(PERL_EXT) # define GIMME \ - (PL_op->op_flags & OPf_WANT \ - ? ((PL_op->op_flags & OPf_WANT) == OPf_WANT_LIST \ - ? G_ARRAY \ - : G_SCALAR) \ - : dowantarray()) + (PL_op->op_flags & OPf_WANT \ + ? ((PL_op->op_flags & OPf_WANT) == OPf_WANT_LIST \ + ? G_ARRAY \ + : G_SCALAR) \ + : dowantarray()) #endif @@ -223,6 +223,12 @@ struct logop { BASEOP OP * op_first; + + /* Note that op->op_other is the *next* op in execution order of the + * alternate branch, not the root of the subtree. I.e. imagine it being + * called ->op_otherfirst. + * To find the structural subtree root (what could be called + * ->op_otherroot), use OpSIBLING of ->op_first */ OP * op_other; }; @@ -259,16 +265,16 @@ #endif U32 op_pmflags; union { - OP * op_pmreplroot; /* For OP_SUBST */ - PADOFFSET op_pmtargetoff; /* For OP_SPLIT lex ary or thr GV */ - GV * op_pmtargetgv; /* For OP_SPLIT non-threaded GV */ + OP * op_pmreplroot; /* For OP_SUBST */ + PADOFFSET op_pmtargetoff; /* For OP_SPLIT lex ary or thr GV */ + GV * op_pmtargetgv; /* For OP_SPLIT non-threaded GV */ } op_pmreplrootu; union { - OP * op_pmreplstart; /* Only used in OP_SUBST */ + OP * op_pmreplstart; /* Only used in OP_SUBST */ #ifdef USE_ITHREADS - PADOFFSET op_pmstashoff; /* Only used in OP_MATCH, with PMf_ONCE set */ + PADOFFSET op_pmstashoff; /* Only used in OP_MATCH, with PMf_ONCE set */ #else - HV * op_pmstash; + HV * op_pmstash; #endif } op_pmstashstartu; OP * op_code_list; /* list of (?{}) code blocks */ @@ -276,7 +282,7 @@ #ifdef USE_ITHREADS #define PM_GETRE(o) (SvTYPE(PL_regex_pad[(o)->op_pmoffset]) == SVt_REGEXP \ - ? (REGEXP*)(PL_regex_pad[(o)->op_pmoffset]) : NULL) + ? (REGEXP*)(PL_regex_pad[(o)->op_pmoffset]) : NULL) /* The assignment is just to enforce type safety (or at least get a warning). */ /* With first class regexps not via a reference one needs to assign @@ -288,7 +294,7 @@ #define PM_SETRE(o,r) STMT_START { \ REGEXP *const _pm_setre = (r); \ assert(_pm_setre); \ - PL_regex_pad[(o)->op_pmoffset] = MUTABLE_SV(_pm_setre); \ + PL_regex_pad[(o)->op_pmoffset] = MUTABLE_SV(_pm_setre); \ } STMT_END #else #define PM_GETRE(o) ((o)->op_pmregexp) @@ -390,16 +396,16 @@ ? PL_stashpad[(o)->op_pmstashstartu.op_pmstashoff] \ : NULL) # define PmopSTASH_set(o,hv) \ - (assert_((o)->op_pmflags & PMf_ONCE) \ - (o)->op_pmstashstartu.op_pmstashoff = \ - (hv) ? alloccopstash(hv) : 0) + (assert_((o)->op_pmflags & PMf_ONCE) \ + (o)->op_pmstashstartu.op_pmstashoff = \ + (hv) ? alloccopstash(hv) : 0) #else # define PmopSTASH(o) \ (((o)->op_pmflags & PMf_ONCE) ? (o)->op_pmstashstartu.op_pmstash : NULL) -# if defined (DEBUGGING) && defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +# if defined (DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS) # define PmopSTASH_set(o,hv) ({ \ - assert((o)->op_pmflags & PMf_ONCE); \ - ((o)->op_pmstashstartu.op_pmstash = (hv)); \ + assert((o)->op_pmflags & PMf_ONCE); \ + ((o)->op_pmstashstartu.op_pmstash = (hv)); \ }) # else # define PmopSTASH_set(o,hv) ((o)->op_pmstashstartu.op_pmstash = (hv)) @@ -506,12 +512,12 @@ # ifndef PERL_CORE # define IS_PADGV(v) (v && isGV(v)) # define IS_PADCONST(v) \ - (v && (SvREADONLY(v) || (SvIsCOW(v) && !SvLEN(v)))) + (v && (SvREADONLY(v) || (SvIsCOW(v) && !SvLEN(v)))) # endif # define cSVOPx_sv(v) (cSVOPx(v)->op_sv \ - ? cSVOPx(v)->op_sv : PAD_SVl((v)->op_targ)) + ? cSVOPx(v)->op_sv : PAD_SVl((v)->op_targ)) # define cSVOPx_svp(v) (cSVOPx(v)->op_sv \ - ? &cSVOPx(v)->op_sv : &PAD_SVl((v)->op_targ)) + ? &cSVOPx(v)->op_sv : &PAD_SVl((v)->op_targ)) # define cMETHOPx_rclass(v) PAD_SVl(cMETHOPx(v)->op_rclass_targ) #else # define cGVOPx_gv(o) ((GV*)cSVOPx(o)->op_sv) @@ -621,9 +627,9 @@ #define PERL_LOADMOD_DENY 0x1 /* no Module */ #define PERL_LOADMOD_NOIMPORT 0x2 /* use Module () */ #define PERL_LOADMOD_IMPORT_OPS 0x4 /* import arguments - are passed as a sin- - gle op tree, not a - list of SVs */ + are passed as a sin- + gle op tree, not a + list of SVs */ #if defined(PERL_IN_PERLY_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_TOKE_C) #define ref(o, type) doref(o, type, TRUE) @@ -639,7 +645,7 @@ /* -=head1 Optree Manipulation Functions +=for apidoc_section $optree_manipulation =for apidoc Am|OP*|LINKLIST|OP *o Given the root of an optree, link the tree in execution order using the @@ -668,9 +674,9 @@ #endif #define NewOp(m,var,c,type) \ - (var = (type *) Perl_Slab_Alloc(aTHX_ c*sizeof(type))) + (var = (type *) Perl_Slab_Alloc(aTHX_ c*sizeof(type))) #define NewOpSz(m,var,size) \ - (var = (OP *) Perl_Slab_Alloc(aTHX_ size)) + (var = (OP *) Perl_Slab_Alloc(aTHX_ size)) #define FreeOp(p) Perl_Slab_Free(aTHX_ p) /* @@ -713,31 +719,33 @@ units) */ # ifdef PERL_DEBUG_READONLY_OPS bool opslab_readonly; - U8 opslab_padding; /* padding to ensure that opslab_slots is always */ -# else - U16 opslab_padding; /* located at an offset with 32-bit alignment */ # endif OPSLOT opslab_slots; /* slots begin here */ }; # define OPSLOT_HEADER STRUCT_OFFSET(OPSLOT, opslot_op) -# define OPSLOT_HEADER_P (OPSLOT_HEADER/sizeof(I32 *)) # define OpSLOT(o) (assert_(o->op_slabbed) \ - (OPSLOT *)(((char *)o)-OPSLOT_HEADER)) + (OPSLOT *)(((char *)o)-OPSLOT_HEADER)) +/* the slab that owns this op */ +# define OpMySLAB(o) \ + ((OPSLAB*)((char *)((I32**)OpSLOT(o) - OpSLOT(o)->opslot_offset)-STRUCT_OFFSET(struct opslab, opslab_slots))) /* the first (head) opslab of the chain in which this op is allocated */ # define OpSLAB(o) \ - (((OPSLAB*)( (I32**)OpSLOT(o) - OpSLOT(o)->opslot_offset))->opslab_head) + (OpMySLAB(o)->opslab_head) +/* calculate the slot given the owner slab and an offset */ +#define OpSLOToff(slab, offset) \ + ((OPSLOT*)(((I32 **)&(slab)->opslab_slots)+(offset))) # define OpslabREFCNT_dec(slab) \ - (((slab)->opslab_refcnt == 1) \ - ? opslab_free_nopad(slab) \ - : (void)--(slab)->opslab_refcnt) + (((slab)->opslab_refcnt == 1) \ + ? opslab_free_nopad(slab) \ + : (void)--(slab)->opslab_refcnt) /* Variant that does not null out the pads */ # define OpslabREFCNT_dec_padok(slab) \ - (((slab)->opslab_refcnt == 1) \ - ? opslab_free(slab) \ - : (void)--(slab)->opslab_refcnt) + (((slab)->opslab_refcnt == 1) \ + ? opslab_free(slab) \ + : (void)--(slab)->opslab_refcnt) #endif struct block_hooks { @@ -749,7 +757,7 @@ }; /* -=head1 Compile-time scope hooks +=for apidoc_section $scope =for apidoc mx|U32|BhkFLAGS|BHK *hk Return the BHK's flags. @@ -795,39 +803,39 @@ #define BhkENABLE(hk, which) \ STMT_START { \ - BhkFLAGS(hk) |= BHKf_ ## which; \ - assert(BhkENTRY(hk, which)); \ + BhkFLAGS(hk) |= BHKf_ ## which; \ + assert(BhkENTRY(hk, which)); \ } STMT_END #define BhkDISABLE(hk, which) \ STMT_START { \ - BhkFLAGS(hk) &= ~(BHKf_ ## which); \ + BhkFLAGS(hk) &= ~(BHKf_ ## which); \ } STMT_END #define BhkENTRY_set(hk, which, ptr) \ STMT_START { \ - (hk)->which = ptr; \ - BhkENABLE(hk, which); \ + (hk)->which = ptr; \ + BhkENABLE(hk, which); \ } STMT_END #define CALL_BLOCK_HOOKS(which, arg) \ STMT_START { \ - if (PL_blockhooks) { \ - SSize_t i; \ - for (i = av_tindex(PL_blockhooks); i >= 0; i--) { \ - SV *sv = AvARRAY(PL_blockhooks)[i]; \ - BHK *hk; \ - \ - assert(SvIOK(sv)); \ - if (SvUOK(sv)) \ - hk = INT2PTR(BHK *, SvUVX(sv)); \ - else \ - hk = INT2PTR(BHK *, SvIVX(sv)); \ - \ - if (BhkENTRY(hk, which)) \ - BhkENTRY(hk, which)(aTHX_ arg); \ - } \ - } \ + if (PL_blockhooks) { \ + SSize_t i; \ + for (i = av_top_index(PL_blockhooks); i >= 0; i--) { \ + SV *sv = AvARRAY(PL_blockhooks)[i]; \ + BHK *hk; \ + \ + assert(SvIOK(sv)); \ + if (SvUOK(sv)) \ + hk = INT2PTR(BHK *, SvUVX(sv)); \ + else \ + hk = INT2PTR(BHK *, SvIVX(sv)); \ + \ + if (BhkENTRY(hk, which)) \ + BhkENTRY(hk, which)(aTHX_ arg); \ + } \ + } \ } STMT_END /* flags for rv2cv_op_cv */ @@ -835,7 +843,7 @@ #define RV2CVOPCV_MARK_EARLY 0x00000001 #define RV2CVOPCV_RETURN_NAME_GV 0x00000002 #define RV2CVOPCV_RETURN_STUB 0x00000004 -#ifdef PERL_CORE /* behaviour of this flag is subject to change: */ +#if defined(PERL_CORE) || defined(PERL_EXT) /* behaviour of this flag is subject to change: */ # define RV2CVOPCV_MAYBE_NAME_GV 0x00000008 #endif #define RV2CVOPCV_FLAG_MASK 0x0000000f /* all of the above */ @@ -847,7 +855,7 @@ #define OP_LVALUE_NO_CROAK 1 /* -=head1 Custom Operators +=for apidoc_section $custom =for apidoc Am|U32|XopFLAGS|XOP *xop Return the XOP's flags. @@ -857,7 +865,7 @@ indicating which entry to return. If the member is not set this will return a default value. The return type depends on C. This macro evaluates its arguments more than -once. If you are using C to retreive a +once. If you are using C to retrieve a C from a C, use the more efficient L instead. =for apidoc Am||XopENTRYCUSTOM|const OP *o|which @@ -922,8 +930,8 @@ #define XopENTRY_set(xop, which, to) \ STMT_START { \ - (xop)->which = (to); \ - (xop)->xop_flags |= XOPf_ ## which; \ + (xop)->which = (to); \ + (xop)->xop_flags |= XOPf_ ## which; \ } STMT_END #define XopENTRY(xop, which) \ @@ -935,15 +943,15 @@ #define XopDISABLE(xop, which) ((xop)->xop_flags &= ~XOPf_ ## which) #define XopENABLE(xop, which) \ STMT_START { \ - (xop)->xop_flags |= XOPf_ ## which; \ - assert(XopENTRY(xop, which)); \ + (xop)->xop_flags |= XOPf_ ## which; \ + assert(XopENTRY(xop, which)); \ } STMT_END #define Perl_custom_op_xop(x) \ (Perl_custom_op_get_field(x, XOPe_xop_ptr).xop_ptr) /* -=head1 Optree Manipulation Functions +=for apidoc_section $optree_manipulation =for apidoc Am|const char *|OP_NAME|OP *o Return the name of the provided OP. For core ops this looks up the name @@ -1007,13 +1015,13 @@ #define OP_NAME(o) ((o)->op_type == OP_CUSTOM \ ? XopENTRYCUSTOM(o, xop_name) \ - : PL_op_name[(o)->op_type]) + : PL_op_name[(o)->op_type]) #define OP_DESC(o) ((o)->op_type == OP_CUSTOM \ ? XopENTRYCUSTOM(o, xop_desc) \ - : PL_op_desc[(o)->op_type]) + : PL_op_desc[(o)->op_type]) #define OP_CLASS(o) ((o)->op_type == OP_CUSTOM \ - ? XopENTRYCUSTOM(o, xop_class) \ - : (PL_opargs[(o)->op_type] & OA_CLASS_MASK)) + ? XopENTRYCUSTOM(o, xop_class) \ + : (PL_opargs[(o)->op_type] & OA_CLASS_MASK)) #define OP_TYPE_IS(o, type) ((o) && (o)->op_type == (type)) #define OP_TYPE_IS_NN(o, type) ((o)->op_type == (type)) @@ -1057,10 +1065,6 @@ #define newATTRSUB(f, o, p, a, b) Perl_newATTRSUB_x(aTHX_ f, o, p, a, b, FALSE) #define newSUB(f, o, p, b) newATTRSUB((f), (o), (p), NULL, (b)) -/* -=head1 Hook manipulation -*/ - #ifdef USE_ITHREADS # define OP_CHECK_MUTEX_INIT MUTEX_INIT(&PL_check_mutex) # define OP_CHECK_MUTEX_LOCK MUTEX_LOCK(&PL_check_mutex) diff -Nru perl-5.32.1/opnames.h perl-5.34.0/opnames.h --- perl-5.32.1/opnames.h 2020-12-18 09:58:50.000000000 +0000 +++ perl-5.34.0/opnames.h 2021-02-21 11:01:31.000000000 +0000 @@ -414,10 +414,14 @@ OP_ISA = 397, OP_CMPCHAIN_AND = 398, OP_CMPCHAIN_DUP = 399, + OP_ENTERTRYCATCH = 400, + OP_LEAVETRYCATCH = 401, + OP_POPTRY = 402, + OP_CATCH = 403, OP_max } opcode; -#define MAXO 400 +#define MAXO 404 #define OP_FREED MAXO /* the OP_IS_* macros are optimized to a simple range check because diff -Nru perl-5.32.1/op_reg_common.h perl-5.34.0/op_reg_common.h --- perl-5.32.1/op_reg_common.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/op_reg_common.h 2020-10-04 22:17:13.000000000 +0000 @@ -137,8 +137,8 @@ * directly in the #define because doing so confuses regcomp.pl. * (2**n - 1) is n 1 bits, so the below gets the contiguous bits between the * beginning and ending shifts */ -#if RXf_PMf_COMPILETIME != (((1 << (_RXf_PMf_SHIFT_COMPILETIME))-1) \ - & (~((1 << RXf_PMf_STD_PMMOD_SHIFT)-1))) +#if RXf_PMf_COMPILETIME != ((nBIT_MASK(_RXf_PMf_SHIFT_COMPILETIME)) \ + & (~(nBIT_MASK( RXf_PMf_STD_PMMOD_SHIFT)))) # error RXf_PMf_COMPILETIME is invalid #endif diff -Nru perl-5.32.1/os2/dl_os2.c perl-5.34.0/os2/dl_os2.c --- perl-5.32.1/os2/dl_os2.c 2020-12-18 09:58:50.000000000 +0000 +++ perl-5.34.0/os2/dl_os2.c 2021-01-20 23:04:44.000000000 +0000 @@ -31,11 +31,11 @@ case 0: /* INIT */ /* Save handle */ dllHandle = modHandle; - handle_found = 1; + handle_found = 1; return TRUE; case 1: /* TERM */ - handle_found = 0; + handle_found = 0; dllHandle = (unsigned long)NULLHANDLE; return TRUE; } @@ -50,25 +50,25 @@ { static APIRET APIENTRY (*pDosQueryModFromEIP) (HMODULE * hmod, ULONG * obj, ULONG BufLen, PCHAR Buf, - ULONG * Offset, ULONG Address); + ULONG * Offset, ULONG Address); HMODULE doscalls_h, mod; static int failed; ULONG obj, offset, rc; char buf[260]; if (failed) - return 0; + return 0; failed = 1; doscalls_h = (HMODULE)dlopen("DOSCALLS",0); if (!doscalls_h) - return 0; + return 0; /* {&doscalls_handle, NULL, 360}, */ /* DosQueryModFromEIP */ rc = DosQueryProcAddr(doscalls_h, 360, 0, (PFN*)&pDosQueryModFromEIP); if (rc) - return 0; + return 0; rc = pDosQueryModFromEIP(&mod, &obj, sizeof(buf), buf, &offset, (ULONG)dlopen); if (rc) - return 0; + return 0; failed = 0; handle_found = 1; dllHandle = mod; @@ -78,66 +78,66 @@ void * dlopen(const char *path, int mode) { - HMODULE handle; - char tmp[260]; - const char *beg, *dot; - ULONG rc; - unsigned fpflag = _control87(0,0); - - fail[0] = 0; - if (!path) { /* Our own handle. */ - if (handle_found || find_myself()) { - char dllname[260]; - - if (handle_loaded) - return (void*)dllHandle; - rc = DosQueryModuleName(dllHandle, sizeof(dllname), dllname); - if (rc) { - strcpy(fail, "can't find my DLL name by the handle"); - retcode = rc; - return 0; - } - rc = DosLoadModule(fail, sizeof fail, dllname, &handle); - if (rc) { - strcpy(fail, "can't load my own DLL"); - retcode = rc; - return 0; - } - handle_loaded = 1; - goto ret; - } - retcode = ERROR_MOD_NOT_FOUND; + HMODULE handle; + char tmp[260]; + const char *beg, *dot; + ULONG rc; + unsigned fpflag = _control87(0,0); + + fail[0] = 0; + if (!path) { /* Our own handle. */ + if (handle_found || find_myself()) { + char dllname[260]; + + if (handle_loaded) + return (void*)dllHandle; + rc = DosQueryModuleName(dllHandle, sizeof(dllname), dllname); + if (rc) { + strcpy(fail, "can't find my DLL name by the handle"); + retcode = rc; + return 0; + } + rc = DosLoadModule(fail, sizeof fail, dllname, &handle); + if (rc) { + strcpy(fail, "can't load my own DLL"); + retcode = rc; + return 0; + } + handle_loaded = 1; + goto ret; + } + retcode = ERROR_MOD_NOT_FOUND; strcpy(fail, "can't load from myself: compiled without -DDLOPEN_INITTERM"); - return 0; - } - if ((rc = DosLoadModule(fail, sizeof fail, (char*)path, &handle)) == 0) - goto ret; - - retcode = rc; - - if (strlen(path) >= sizeof(tmp)) - return NULL; - - /* Not found. Check for non-FAT name and try truncated name. */ - /* Don't know if this helps though... */ - for (beg = dot = path + strlen(path); - beg > path && !memCHRs(":/\\", *(beg-1)); - beg--) - if (*beg == '.') - dot = beg; - if (dot - beg > 8) { - int n = beg+8-path; - - memmove(tmp, path, n); - memmove(tmp+n, dot, strlen(dot)+1); - if (DosLoadModule(fail, sizeof fail, tmp, &handle) == 0) - goto ret; - } - handle = 0; + return 0; + } + if ((rc = DosLoadModule(fail, sizeof fail, (char*)path, &handle)) == 0) + goto ret; + + retcode = rc; + + if (strlen(path) >= sizeof(tmp)) + return NULL; + + /* Not found. Check for non-FAT name and try truncated name. */ + /* Don't know if this helps though... */ + for (beg = dot = path + strlen(path); + beg > path && !memCHRs(":/\\", *(beg-1)); + beg--) + if (*beg == '.') + dot = beg; + if (dot - beg > 8) { + int n = beg+8-path; + + memmove(tmp, path, n); + memmove(tmp+n, dot, strlen(dot)+1); + if (DosLoadModule(fail, sizeof fail, tmp, &handle) == 0) + goto ret; + } + handle = 0; ret: - _control87(fpflag, MCW_EM); /* Some modules reset FP flags on load */ - return (void *)handle; + _control87(fpflag, MCW_EM); /* Some modules reset FP flags on load */ + return (void *)handle; } #define ERROR_WRONG_PROCTYPE 0xffffffff @@ -145,51 +145,51 @@ void * dlsym(void *handle, const char *symbol) { - ULONG rc, type; - PFN addr; + ULONG rc, type; + PFN addr; - fail[0] = 0; - rc = DosQueryProcAddr((HMODULE)handle, 0, symbol, &addr); - if (rc == 0) { - rc = DosQueryProcType((HMODULE)handle, 0, symbol, &type); - if (rc == 0 && type == PT_32BIT) - return (void *)addr; - rc = ERROR_WRONG_PROCTYPE; - } - retcode = rc; - return NULL; + fail[0] = 0; + rc = DosQueryProcAddr((HMODULE)handle, 0, symbol, &addr); + if (rc == 0) { + rc = DosQueryProcType((HMODULE)handle, 0, symbol, &type); + if (rc == 0 && type == PT_32BIT) + return (void *)addr; + rc = ERROR_WRONG_PROCTYPE; + } + retcode = rc; + return NULL; } char * dlerror(void) { - static char buf[700]; - ULONG len; - char *err; - - if (retcode == 0) - return NULL; - if (retcode == ERROR_WRONG_PROCTYPE) - err = "Wrong procedure type"; - else - err = os2error(retcode); - len = strlen(err); - if (len > sizeof(buf) - 1) - len = sizeof(buf) - 1; - strncpy(buf, err, len+1); - if (fail[0] && len + strlen(fail) < sizeof(buf) - 100) - sprintf(buf + len, ", possible problematic module: '%s'", fail); - retcode = 0; - return buf; + static char buf[700]; + ULONG len; + char *err; + + if (retcode == 0) + return NULL; + if (retcode == ERROR_WRONG_PROCTYPE) + err = "Wrong procedure type"; + else + err = os2error(retcode); + len = strlen(err); + if (len > sizeof(buf) - 1) + len = sizeof(buf) - 1; + strncpy(buf, err, len+1); + if (fail[0] && len + strlen(fail) < sizeof(buf) - 100) + sprintf(buf + len, ", possible problematic module: '%s'", fail); + retcode = 0; + return buf; } int dlclose(void *handle) { - ULONG rc; + ULONG rc; - if ((rc = DosFreeModule((HMODULE)handle)) == 0) return 0; + if ((rc = DosFreeModule((HMODULE)handle)) == 0) return 0; - retcode = rc; - return 2; + retcode = rc; + return 2; } diff -Nru perl-5.32.1/os2/Makefile.SHs perl-5.34.0/os2/Makefile.SHs --- perl-5.32.1/os2/Makefile.SHs 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/os2/Makefile.SHs 2020-10-04 22:17:13.000000000 +0000 @@ -6,7 +6,7 @@ # Additional rules supported: perl_, aout_test, aout_install, use them # for a.out style perl (which may fork). -perl_fullversion="5.00${PERL_VERSION}_$PERL_SUBVERSION" +perl_fullversion="${PERL_REVISION}.00${PERL_VERSION}_${PERL_SUBVERSION}" case "$archname" in *-thread*) perl_fullversion="${perl_fullversion}-threaded";; esac diff -Nru perl-5.32.1/os2/OS2/OS2-Process/Makefile.PL perl-5.34.0/os2/OS2/OS2-Process/Makefile.PL --- perl-5.32.1/os2/OS2/OS2-Process/Makefile.PL 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/os2/OS2/OS2-Process/Makefile.PL 2020-10-24 18:43:34.000000000 +0000 @@ -35,7 +35,7 @@ '-M^(HWND|WM|SC|SWP|WC|PROG|QW|EDI|WS|QWS|QWP|QWL|FF|FI|LS|FS|FCF|BS|MS|TBM|CF|CFI|FID|MB|MBID|CF|CFI|SPTR)_', '-F', '-DINCL_NLS -DINCL_BASE -DINCL_PM', # Define more symbols 'os2emx.h' # EMX version of OS/2 API - and warn("Can't build module with contants, falling back to no constants"), + and warn("Can't build module with constants, falling back to no constants"), return; rename 'OS2/Process/Const', 'Process_constants' or warn("Error renaming module, falling back to no constants: $!"), diff -Nru perl-5.32.1/os2/os2.c perl-5.34.0/os2/os2.c --- perl-5.32.1/os2/os2.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/os2/os2.c 2021-01-20 23:04:44.000000000 +0000 @@ -215,7 +215,7 @@ const Perl_PFN * const pExtFCN = (Perl_po2()->po2_ExtFCN); -#if defined(USE_5005THREADS) || defined(USE_ITHREADS) +#if defined(USE_ITHREADS) typedef void (*emx_startroutine)(void *); typedef void* (*pthreads_startroutine)(void *); @@ -246,7 +246,7 @@ { if (state < 0 || state >= sizeof(pthreads_states)/sizeof(*pthreads_states)) { snprintf(pthreads_state_buf, sizeof(pthreads_state_buf), - "unknown thread state %d", (int)state); + "unknown thread state %d", (int)state); return pthreads_state_buf; } return pthreads_states[state]; @@ -269,53 +269,53 @@ { MUTEX_LOCK(&start_thread_mutex); if (tid < 1 || tid >= thread_join_count) { - MUTEX_UNLOCK(&start_thread_mutex); - if (tid != pthread_not_existant) - Perl_croak_nocontext("panic: join with a thread with strange ordinal %d", (int)tid); - Perl_warn_nocontext("panic: join with a thread which could not start"); - *status = 0; - return 0; + MUTEX_UNLOCK(&start_thread_mutex); + if (tid != pthread_not_existant) + Perl_croak_nocontext("panic: join with a thread with strange ordinal %d", (int)tid); + Perl_warn_nocontext("panic: join with a thread which could not start"); + *status = 0; + return 0; } switch (thread_join_data[tid].state) { case pthreads_st_exited: - thread_join_data[tid].state = pthreads_st_exited_waited; - *status = thread_join_data[tid].status; - MUTEX_UNLOCK(&start_thread_mutex); - COND_SIGNAL(&thread_join_data[tid].cond); - break; + thread_join_data[tid].state = pthreads_st_exited_waited; + *status = thread_join_data[tid].status; + MUTEX_UNLOCK(&start_thread_mutex); + COND_SIGNAL(&thread_join_data[tid].cond); + break; case pthreads_st_waited: - MUTEX_UNLOCK(&start_thread_mutex); - Perl_croak_nocontext("join with a thread with a waiter"); - break; + MUTEX_UNLOCK(&start_thread_mutex); + Perl_croak_nocontext("join with a thread with a waiter"); + break; case pthreads_st_norun: { - int state = (int)thread_join_data[tid].status; + int state = (int)thread_join_data[tid].status; - thread_join_data[tid].state = pthreads_st_none; - MUTEX_UNLOCK(&start_thread_mutex); - Perl_croak_nocontext("panic: join with a thread which could not run" - " due to attempt of tid reuse (state='%s')", - pthreads_state_string(state)); - break; + thread_join_data[tid].state = pthreads_st_none; + MUTEX_UNLOCK(&start_thread_mutex); + Perl_croak_nocontext("panic: join with a thread which could not run" + " due to attempt of tid reuse (state='%s')", + pthreads_state_string(state)); + break; } case pthreads_st_run: { - perl_cond cond; + perl_cond cond; - thread_join_data[tid].state = pthreads_st_waited; - thread_join_data[tid].status = (void *)status; - COND_INIT(&thread_join_data[tid].cond); - cond = thread_join_data[tid].cond; - COND_WAIT(&thread_join_data[tid].cond, &start_thread_mutex); - COND_DESTROY(&cond); - MUTEX_UNLOCK(&start_thread_mutex); - break; + thread_join_data[tid].state = pthreads_st_waited; + thread_join_data[tid].status = (void *)status; + COND_INIT(&thread_join_data[tid].cond); + cond = thread_join_data[tid].cond; + COND_WAIT(&thread_join_data[tid].cond, &start_thread_mutex); + COND_DESTROY(&cond); + MUTEX_UNLOCK(&start_thread_mutex); + break; } default: - MUTEX_UNLOCK(&start_thread_mutex); - Perl_croak_nocontext("panic: join with thread in unknown thread state: '%s'", - pthreads_state_string(thread_join_data[tid].state)); - break; + MUTEX_UNLOCK(&start_thread_mutex); + Perl_croak_nocontext("panic: join with thread in unknown thread state: '%s'", + pthreads_state_string(thread_join_data[tid].state)); + break; } return 0; } @@ -327,9 +327,9 @@ } pthr_startit; /* The lock is used: - a) Since we temporarily usurp the caller interp, so malloc() may - use it to decide on debugging the call; - b) Since *args is on the caller's stack. + a) Since we temporarily usurp the caller interp, so malloc() may + use it to decide on debugging the call; + b) Since *args is on the caller's stack. */ void pthread_startit(void *arg1) @@ -341,40 +341,40 @@ int state; if (tid <= 1) { - /* Can't croak, the setjmp() is not in scope... */ - char buf[80]; + /* Can't croak, the setjmp() is not in scope... */ + char buf[80]; - snprintf(buf, sizeof(buf), - "panic: thread with strange ordinal %d created\n\r", tid); - write(2,buf,strlen(buf)); - MUTEX_UNLOCK(&start_thread_mutex); - return; + snprintf(buf, sizeof(buf), + "panic: thread with strange ordinal %d created\n\r", tid); + write(2,buf,strlen(buf)); + MUTEX_UNLOCK(&start_thread_mutex); + return; } /* Until args.sub resets it, makes debugging Perl_malloc() work: */ PERL_SET_CONTEXT(0); if (tid >= thread_join_count) { - int oc = thread_join_count; - - thread_join_count = tid + 5 + tid/5; - if (thread_join_data) { - Renew(thread_join_data, thread_join_count, thread_join_t); - Zero(thread_join_data + oc, thread_join_count - oc, thread_join_t); - } else { - Newxz(thread_join_data, thread_join_count, thread_join_t); - } + int oc = thread_join_count; + + thread_join_count = tid + 5 + tid/5; + if (thread_join_data) { + Renew(thread_join_data, thread_join_count, thread_join_t); + Zero(thread_join_data + oc, thread_join_count - oc, thread_join_t); + } else { + Newxz(thread_join_data, thread_join_count, thread_join_t); + } } if (thread_join_data[tid].state != pthreads_st_none) { - /* Can't croak, the setjmp() is not in scope... */ - char buf[80]; + /* Can't croak, the setjmp() is not in scope... */ + char buf[80]; - snprintf(buf, sizeof(buf), - "panic: attempt to reuse thread id %d (state='%s')\n\r", - tid, pthreads_state_string(thread_join_data[tid].state)); - write(2,buf,strlen(buf)); - thread_join_data[tid].status = (void*)thread_join_data[tid].state; - thread_join_data[tid].state = pthreads_st_norun; - MUTEX_UNLOCK(&start_thread_mutex); - return; + snprintf(buf, sizeof(buf), + "panic: attempt to reuse thread id %d (state='%s')\n\r", + tid, pthreads_state_string(thread_join_data[tid].state)); + write(2,buf,strlen(buf)); + thread_join_data[tid].status = (void*)thread_join_data[tid].state; + thread_join_data[tid].state = pthreads_st_norun; + MUTEX_UNLOCK(&start_thread_mutex); + return; } thread_join_data[tid].state = pthreads_st_run; /* Now that we copied/updated the guys, we may release the caller... */ @@ -383,35 +383,35 @@ MUTEX_LOCK(&start_thread_mutex); switch (thread_join_data[tid].state) { case pthreads_st_waited: - COND_SIGNAL(&thread_join_data[tid].cond); - thread_join_data[tid].state = pthreads_st_none; - *((void**)thread_join_data[tid].status) = rc; - break; + COND_SIGNAL(&thread_join_data[tid].cond); + thread_join_data[tid].state = pthreads_st_none; + *((void**)thread_join_data[tid].status) = rc; + break; case pthreads_st_detached: - thread_join_data[tid].state = pthreads_st_none; - break; + thread_join_data[tid].state = pthreads_st_none; + break; case pthreads_st_run: - /* Somebody can wait on us; cannot exit, since OS can reuse the tid - and our waiter will get somebody else's status. */ - thread_join_data[tid].state = pthreads_st_exited; - thread_join_data[tid].status = rc; - COND_INIT(&thread_join_data[tid].cond); - COND_WAIT(&thread_join_data[tid].cond, &start_thread_mutex); - COND_DESTROY(&thread_join_data[tid].cond); - thread_join_data[tid].state = pthreads_st_none; /* Ready to reuse */ - break; + /* Somebody can wait on us; cannot exit, since OS can reuse the tid + and our waiter will get somebody else's status. */ + thread_join_data[tid].state = pthreads_st_exited; + thread_join_data[tid].status = rc; + COND_INIT(&thread_join_data[tid].cond); + COND_WAIT(&thread_join_data[tid].cond, &start_thread_mutex); + COND_DESTROY(&thread_join_data[tid].cond); + thread_join_data[tid].state = pthreads_st_none; /* Ready to reuse */ + break; default: - state = thread_join_data[tid].state; - MUTEX_UNLOCK(&start_thread_mutex); - Perl_croak_nocontext("panic: unexpected thread state on exit: '%s'", - pthreads_state_string(state)); + state = thread_join_data[tid].state; + MUTEX_UNLOCK(&start_thread_mutex); + Perl_croak_nocontext("panic: unexpected thread state on exit: '%s'", + pthreads_state_string(state)); } MUTEX_UNLOCK(&start_thread_mutex); } int pthread_create(perl_os_thread *tidp, const pthread_attr_t *attr, - void *(*start_routine)(void*), void *arg) + void *(*start_routine)(void*), void *arg) { dTHX; pthr_startit args; @@ -424,11 +424,11 @@ /* Test suite creates 31 extra threads; on machine without shared-memory-hogs this stack sizeis OK with 31: */ *tidp = _beginthread(pthread_startit, /*stack*/ NULL, - /*stacksize*/ 4*1024*1024, (void*)&args); + /*stacksize*/ 4*1024*1024, (void*)&args); if (*tidp == -1) { - *tidp = pthread_not_existant; - MUTEX_UNLOCK(&start_thread_mutex); - return EINVAL; + *tidp = pthread_not_existant; + MUTEX_UNLOCK(&start_thread_mutex); + return EINVAL; } MUTEX_LOCK(&start_thread_mutex); /* Wait for init to proceed */ MUTEX_UNLOCK(&start_thread_mutex); @@ -440,45 +440,45 @@ { MUTEX_LOCK(&start_thread_mutex); if (tid < 1 || tid >= thread_join_count) { - MUTEX_UNLOCK(&start_thread_mutex); - if (tid != pthread_not_existant) - Perl_croak_nocontext("panic: detach of a thread with strange ordinal %d", (int)tid); - Perl_warn_nocontext("detach of a thread which could not start"); - return 0; + MUTEX_UNLOCK(&start_thread_mutex); + if (tid != pthread_not_existant) + Perl_croak_nocontext("panic: detach of a thread with strange ordinal %d", (int)tid); + Perl_warn_nocontext("detach of a thread which could not start"); + return 0; } switch (thread_join_data[tid].state) { case pthreads_st_waited: - MUTEX_UNLOCK(&start_thread_mutex); - Perl_croak_nocontext("detach on a thread with a waiter"); - break; + MUTEX_UNLOCK(&start_thread_mutex); + Perl_croak_nocontext("detach on a thread with a waiter"); + break; case pthreads_st_run: - thread_join_data[tid].state = pthreads_st_detached; - MUTEX_UNLOCK(&start_thread_mutex); - break; + thread_join_data[tid].state = pthreads_st_detached; + MUTEX_UNLOCK(&start_thread_mutex); + break; case pthreads_st_exited: - MUTEX_UNLOCK(&start_thread_mutex); - COND_SIGNAL(&thread_join_data[tid].cond); - break; + MUTEX_UNLOCK(&start_thread_mutex); + COND_SIGNAL(&thread_join_data[tid].cond); + break; case pthreads_st_detached: - MUTEX_UNLOCK(&start_thread_mutex); - Perl_warn_nocontext("detach on an already detached thread"); - break; + MUTEX_UNLOCK(&start_thread_mutex); + Perl_warn_nocontext("detach on an already detached thread"); + break; case pthreads_st_norun: { - int state = (int)thread_join_data[tid].status; + int state = (int)thread_join_data[tid].status; - thread_join_data[tid].state = pthreads_st_none; - MUTEX_UNLOCK(&start_thread_mutex); - Perl_croak_nocontext("panic: detaching thread which could not run" - " due to attempt of tid reuse (state='%s')", - pthreads_state_string(state)); - break; + thread_join_data[tid].state = pthreads_st_none; + MUTEX_UNLOCK(&start_thread_mutex); + Perl_croak_nocontext("panic: detaching thread which could not run" + " due to attempt of tid reuse (state='%s')", + pthreads_state_string(state)); + break; } default: - MUTEX_UNLOCK(&start_thread_mutex); - Perl_croak_nocontext("panic: detach of a thread with unknown thread state: '%s'", - pthreads_state_string(thread_join_data[tid].state)); - break; + MUTEX_UNLOCK(&start_thread_mutex); + Perl_croak_nocontext("panic: detach of a thread with unknown thread state: '%s'", + pthreads_state_string(thread_join_data[tid].state)); + break; } return 0; } @@ -490,13 +490,13 @@ int rc; STRLEN n_a; if ((rc = DosResetEventSem(*c,&n_a)) && (rc != ERROR_ALREADY_RESET)) - Perl_rc = CheckOSError(rc), croak_with_os2error("panic: COND_WAIT-reset"); + Perl_rc = CheckOSError(rc), croak_with_os2error("panic: COND_WAIT-reset"); if (m) MUTEX_UNLOCK(m); if (CheckOSError(DosWaitEventSem(*c,SEM_INDEFINITE_WAIT)) - && (rc != ERROR_INTERRUPT)) - croak_with_os2error("panic: COND_WAIT"); + && (rc != ERROR_INTERRUPT)) + croak_with_os2error("panic: COND_WAIT"); if (rc == ERROR_INTERRUPT) - errno = EINTR; + errno = EINTR; if (m) MUTEX_LOCK(m); return 0; } @@ -533,8 +533,8 @@ {&pmwin_handle, NULL, 912}, /* WinDispatchMsg */ {&pmwin_handle, NULL, 753}, /* WinGetLastError */ {&pmwin_handle, NULL, 705}, /* WinCancelShutdown */ - /* These are needed in extensions. - How to protect PMSHAPI: it comes through EMX functions? */ + /* These are needed in extensions. + How to protect PMSHAPI: it comes through EMX functions? */ {&rexx_handle, "RexxStart", 0}, {&rexx_handle, "RexxVariablePool", 0}, {&rexxapi_handle, "RexxRegisterFunctionExe", 0}, @@ -549,7 +549,7 @@ {&pmshapi_handle, "PRF32WRITEPROFILEDATA", 0}, /* At least some of these do not work by name, since they need - WIN32 instead of WIN... */ + WIN32 instead of WIN... */ #if 0 These were generated with nm I:\emx\lib\os2.a | fgrep -f API-list | grep = > API-list-entries @@ -646,8 +646,8 @@ HMODULE h = (HMODULE)dlopen(modname, 0); if (!h && fail) - Perl_croak_nocontext("Error loading module '%s': %s", - modname, dlerror()); + Perl_croak_nocontext("Error loading module '%s': %s", + modname, dlerror()); return h; } @@ -662,7 +662,7 @@ if (!(_emx_env & 0x200)) return 1; /* not OS/2. */ if (CheckOSError(DosGetInfoBlocks(&tib, &pib))) - return -1; + return -1; return (pib->pib_ultype); } @@ -675,9 +675,9 @@ PIB *pib; if (!(_emx_env & 0x200)) - Perl_croak_nocontext("Can't set type on DOS"); /* not OS/2. */ + Perl_croak_nocontext("Can't set type on DOS"); /* not OS/2. */ if (CheckOSError(DosGetInfoBlocks(&tib, &pib))) - croak_with_os2error("Error getting info blocks"); + croak_with_os2error("Error getting info blocks"); pib->pib_ultype = type; } @@ -685,54 +685,54 @@ loadByOrdinal(enum entries_ordinals ord, int fail) { if (sizeof(loadOrdinals)/sizeof(loadOrdinals[0]) != ORD_NENTRIES) - Perl_croak_nocontext( - "Wrong size of loadOrdinals array: expected %d, actual %d", - sizeof(loadOrdinals)/sizeof(loadOrdinals[0]), ORD_NENTRIES); + Perl_croak_nocontext( + "Wrong size of loadOrdinals array: expected %d, actual %d", + sizeof(loadOrdinals)/sizeof(loadOrdinals[0]), ORD_NENTRIES); if (ExtFCN[ord] == NULL) { - PFN fcn = (PFN)-1; - APIRET rc; + PFN fcn = (PFN)-1; + APIRET rc; - if (!loadOrdinals[ord].dll->handle) { - if (loadOrdinals[ord].dll->requires_pm && my_type() < 2) { /* FS */ - char *s = getenv("PERL_ASIF_PM"); - - if (!s || !atoi(s)) { - /* The module will not function well without PM. - The usual way to detect PM is the existence of the mutex - \SEM32\PMDRAG.SEM. */ - HMTX hMtx = 0; - - if (CheckOSError(DosOpenMutexSem("\\SEM32\\PMDRAG.SEM", - &hMtx))) - Perl_croak_nocontext("Looks like we have no PM; will not load DLL %s without $ENV{PERL_ASIF_PM}", - loadOrdinals[ord].dll->modname); - DosCloseMutexSem(hMtx); - } - } - MUTEX_LOCK(&perlos2_state_mutex); - loadOrdinals[ord].dll->handle - = loadModule(loadOrdinals[ord].dll->modname, fail); - MUTEX_UNLOCK(&perlos2_state_mutex); - } - if (!loadOrdinals[ord].dll->handle) - return 0; /* Possible with FAIL==0 only */ - if (CheckOSError(DosQueryProcAddr(loadOrdinals[ord].dll->handle, - loadOrdinals[ord].entrypoint, - loadOrdinals[ord].entryname,&fcn))) { - char buf[20], *s = (char*)loadOrdinals[ord].entryname; - - if (!fail) - return 0; - if (!s) - sprintf(s = buf, "%d", loadOrdinals[ord].entrypoint); - Perl_croak_nocontext( - "This version of OS/2 does not support %s.%s", - loadOrdinals[ord].dll->modname, s); - } - ExtFCN[ord] = fcn; + if (!loadOrdinals[ord].dll->handle) { + if (loadOrdinals[ord].dll->requires_pm && my_type() < 2) { /* FS */ + char *s = PerlEnv_getenv("PERL_ASIF_PM"); + + if (!s || !atoi(s)) { + /* The module will not function well without PM. + The usual way to detect PM is the existence of the mutex + \SEM32\PMDRAG.SEM. */ + HMTX hMtx = 0; + + if (CheckOSError(DosOpenMutexSem("\\SEM32\\PMDRAG.SEM", + &hMtx))) + Perl_croak_nocontext("Looks like we have no PM; will not load DLL %s without $ENV{PERL_ASIF_PM}", + loadOrdinals[ord].dll->modname); + DosCloseMutexSem(hMtx); + } + } + MUTEX_LOCK(&perlos2_state_mutex); + loadOrdinals[ord].dll->handle + = loadModule(loadOrdinals[ord].dll->modname, fail); + MUTEX_UNLOCK(&perlos2_state_mutex); + } + if (!loadOrdinals[ord].dll->handle) + return 0; /* Possible with FAIL==0 only */ + if (CheckOSError(DosQueryProcAddr(loadOrdinals[ord].dll->handle, + loadOrdinals[ord].entrypoint, + loadOrdinals[ord].entryname,&fcn))) { + char buf[20], *s = (char*)loadOrdinals[ord].entryname; + + if (!fail) + return 0; + if (!s) + sprintf(s = buf, "%d", loadOrdinals[ord].entrypoint); + Perl_croak_nocontext( + "This version of OS/2 does not support %s.%s", + loadOrdinals[ord].dll->modname, s); + } + ExtFCN[ord] = fcn; } if ((long)ExtFCN[ord] == -1) - Perl_croak_nocontext("panic queryaddr"); + Perl_croak_nocontext("panic queryaddr"); return ExtFCN[ord]; } @@ -742,7 +742,7 @@ int i; for (i = ORD_WinInitialize; i <= ORD_WinCancelShutdown; i++) - ((PFN*)&PMWIN_entries)[i - ORD_WinInitialize] = loadByOrdinal(i, 1); + ((PFN*)&PMWIN_entries)[i - ORD_WinInitialize] = loadByOrdinal(i, 1); } /*****************************************************/ @@ -765,7 +765,7 @@ /* priorities */ static const signed char priors[] = {0, 1, 3, 2}; /* Last two interchanged, - self inverse. */ + self inverse. */ #define QSS_INI_BUFFER 1024 ULONG (*pDosVerifyPidTid) (PID pid, TID tid); @@ -778,28 +778,28 @@ PQTOPLEVEL psi; if (pid) { - if (!pidtid_lookup) { - pidtid_lookup = 1; - *(PFN*)&pDosVerifyPidTid = loadByOrdinal(ORD_DosVerifyPidTid, 0); - } - if (pDosVerifyPidTid) { /* Warp3 or later */ - /* Up to some fixpak QuerySysState() kills the system if a non-existent - pid is used. */ - if (CheckOSError(pDosVerifyPidTid(pid, 1))) - return 0; + if (!pidtid_lookup) { + pidtid_lookup = 1; + *(PFN*)&pDosVerifyPidTid = loadByOrdinal(ORD_DosVerifyPidTid, 0); + } + if (pDosVerifyPidTid) { /* Warp3 or later */ + /* Up to some fixpak QuerySysState() kills the system if a non-existent + pid is used. */ + if (CheckOSError(pDosVerifyPidTid(pid, 1))) + return 0; } } Newx(pbuffer, buf_len, char); /* QSS_PROCESS | QSS_MODULE | QSS_SEMAPHORES | QSS_SHARED */ rc = QuerySysState(flags, pid, pbuffer, buf_len); while (rc == ERROR_BUFFER_OVERFLOW) { - Renew(pbuffer, buf_len *= 2, char); - rc = QuerySysState(flags, pid, pbuffer, buf_len); + Renew(pbuffer, buf_len *= 2, char); + rc = QuerySysState(flags, pid, pbuffer, buf_len); } if (rc) { - FillOSError(rc); - Safefree(pbuffer); - return 0; + FillOSError(rc); + Safefree(pbuffer); + return 0; } psi = (PQTOPLEVEL)pbuffer; if (psi && pid && psi->procdata && pid != psi->procdata->pid) { @@ -836,28 +836,28 @@ if (priors[(32 - val) >> 5] + 1 == (prio >> 8)) { /* Do not change class. */ return CheckOSError(DosSetPriority((pid < 0) - ? PRTYS_PROCESSTREE : PRTYS_PROCESS, - 0, - (32 - val) % 32 - (prio & 0xFF), - abs(pid))) + ? PRTYS_PROCESSTREE : PRTYS_PROCESS, + 0, + (32 - val) % 32 - (prio & 0xFF), + abs(pid))) ? -1 : 0; } else /* if ((32 - val) % 32 == (prio & 0xFF)) */ { /* Documentation claims one can change both class and basevalue, * but I find it wrong. */ /* Change class, but since delta == 0 denotes absolute 0, correct. */ if (CheckOSError(DosSetPriority((pid < 0) - ? PRTYS_PROCESSTREE : PRTYS_PROCESS, - priors[(32 - val) >> 5] + 1, - 0, - abs(pid)))) - return -1; + ? PRTYS_PROCESSTREE : PRTYS_PROCESS, + priors[(32 - val) >> 5] + 1, + 0, + abs(pid)))) + return -1; if ( ((32 - val) % 32) == 0 ) return 0; return CheckOSError(DosSetPriority((pid < 0) - ? PRTYS_PROCESSTREE : PRTYS_PROCESS, - 0, - (32 - val) % 32, - abs(pid))) - ? -1 : 0; + ? PRTYS_PROCESSTREE : PRTYS_PROCESS, + 0, + (32 - val) % 32, + abs(pid))) + ? -1 : 0; } } @@ -891,7 +891,7 @@ */ if (spawn_killed) - sig = SIGKILL; /* Try harder. */ + sig = SIGKILL; /* Try harder. */ kill(spawn_pid, sig); spawn_killed = 1; } @@ -899,40 +899,40 @@ static int result(pTHX_ int flag, int pid) { - int r, status; - Signal_t (*ihand)(); /* place to save signal during system() */ - Signal_t (*qhand)(); /* place to save signal during system() */ + int r, status; + Signal_t (*ihand)(); /* place to save signal during system() */ + Signal_t (*qhand)(); /* place to save signal during system() */ #ifndef __EMX__ - RESULTCODES res; - int rpid; + RESULTCODES res; + int rpid; #endif - if (pid < 0 || flag != 0) - return pid; + if (pid < 0 || flag != 0) + return pid; #ifdef __EMX__ - spawn_pid = pid; - spawn_killed = 0; - ihand = rsignal(SIGINT, &spawn_sighandler); - qhand = rsignal(SIGQUIT, &spawn_sighandler); - do { - r = wait4pid(pid, &status, 0); - } while (r == -1 && errno == EINTR); - rsignal(SIGINT, ihand); - rsignal(SIGQUIT, qhand); - - PL_statusvalue = (U16)status; - if (r < 0) - return -1; - return status & 0xFFFF; + spawn_pid = pid; + spawn_killed = 0; + ihand = rsignal(SIGINT, &spawn_sighandler); + qhand = rsignal(SIGQUIT, &spawn_sighandler); + do { + r = wait4pid(pid, &status, 0); + } while (r == -1 && errno == EINTR); + rsignal(SIGINT, ihand); + rsignal(SIGQUIT, qhand); + + PL_statusvalue = (U16)status; + if (r < 0) + return -1; + return status & 0xFFFF; #else - ihand = rsignal(SIGINT, SIG_IGN); - r = DosWaitChild(DCWA_PROCESS, DCWW_WAIT, &res, &rpid, pid); - rsignal(SIGINT, ihand); - PL_statusvalue = res.codeResult << 8 | res.codeTerminate; - if (r) - return -1; - return PL_statusvalue; + ihand = rsignal(SIGINT, SIG_IGN); + r = DosWaitChild(DCWA_PROCESS, DCWW_WAIT, &res, &rpid, pid); + rsignal(SIGINT, ihand); + PL_statusvalue = res.codeResult << 8 | res.codeTerminate; + if (r) + return -1; + return PL_statusvalue; #endif } @@ -952,19 +952,19 @@ ULONG apptype; if (!(_emx_env & 0x200)) - Perl_croak_nocontext("file_type not implemented on DOS"); /* not OS/2. */ + Perl_croak_nocontext("file_type not implemented on DOS"); /* not OS/2. */ if (CheckOSError(DosQueryAppType(path, &apptype))) { - switch (rc) { - case ERROR_FILE_NOT_FOUND: - case ERROR_PATH_NOT_FOUND: - return -1; - case ERROR_ACCESS_DENIED: /* Directory with this name found? */ - return -3; - default: /* Found, but not an - executable, or some other - read error. */ - return -2; - } + switch (rc) { + case ERROR_FILE_NOT_FOUND: + case ERROR_PATH_NOT_FOUND: + return -1; + case ERROR_ACCESS_DENIED: /* Directory with this name found? */ + return -3; + default: /* Found, but not an + executable, or some other + read error. */ + return -2; + } } return apptype; } @@ -972,375 +972,374 @@ /* Spawn/exec a program, revert to shell if needed. */ extern ULONG _emx_exception ( EXCEPTIONREPORTRECORD *, - EXCEPTIONREGISTRATIONRECORD *, + EXCEPTIONREGISTRATIONRECORD *, CONTEXTRECORD *, void *); int do_spawn_ve(pTHX_ SV *really, const char **argv, U32 flag, U32 execf, char *inicmd, U32 addflag) { - int trueflag = flag; - int rc, pass = 1; - char *real_name = NULL; /* Shut down the warning */ - char const * args[4]; - static const char * const fargs[4] - = { "/bin/sh", "-c", "\"$@\"", "spawn-via-shell", }; - const char * const *argsp = fargs; - int nargs = 4; - int force_shell; - int new_stderr = -1, nostderr = 0; - int fl_stderr = 0; - STRLEN n_a; - char *buf; - PerlIO *file; - - if (flag == P_WAIT) - flag = P_NOWAIT; - if (really) { - real_name = SvPV(really, n_a); - real_name = savepv(real_name); - SAVEFREEPV(real_name); - if (!*real_name) - really = NULL; - } + int trueflag = flag; + int rc, pass = 1; + char *real_name = NULL; /* Shut down the warning */ + char const * args[4]; + static const char * const fargs[4] + = { "/bin/sh", "-c", "\"$@\"", "spawn-via-shell", }; + const char * const *argsp = fargs; + int nargs = 4; + int force_shell; + int new_stderr = -1, nostderr = 0; + int fl_stderr = 0; + STRLEN n_a; + char *buf; + PerlIO *file; + + if (flag == P_WAIT) + flag = P_NOWAIT; + if (really) { + real_name = SvPV(really, n_a); + real_name = savepv(real_name); + SAVEFREEPV(real_name); + if (!*real_name) + really = NULL; + } retry: - if (strEQ(argv[0],"/bin/sh")) - argv[0] = PL_sh_path; + if (strEQ(argv[0],"/bin/sh")) + argv[0] = PL_sh_path; - /* We should check PERL_SH* and PERLLIB_* as well? */ - if (!really || pass >= 2) - real_name = argv[0]; - if (real_name[0] != '/' && real_name[0] != '\\' - && !(real_name[0] && real_name[1] == ':' - && (real_name[2] == '/' || real_name[2] != '\\')) - ) /* will spawnvp use PATH? */ - TAINT_ENV(); /* testing IFS here is overkill, probably */ + /* We should check PERL_SH* and PERLLIB_* as well? */ + if (!really || pass >= 2) + real_name = argv[0]; + if (real_name[0] != '/' && real_name[0] != '\\' + && !(real_name[0] && real_name[1] == ':' + && (real_name[2] == '/' || real_name[2] != '\\')) + ) /* will spawnvp use PATH? */ + TAINT_ENV(); /* testing IFS here is overkill, probably */ reread: - force_shell = 0; - if (_emx_env & 0x200) { /* OS/2. */ - int type = file_type(real_name); - type_again: - if (type == -1) { /* Not found */ - errno = ENOENT; - rc = -1; - goto do_script; - } - else if (type == -2) { /* Not an EXE */ - errno = ENOEXEC; - rc = -1; - goto do_script; - } - else if (type == -3) { /* Is a directory? */ - /* Special-case this */ - char tbuf[512]; - int l = strlen(real_name); - - if (l + 5 <= sizeof tbuf) { - strcpy(tbuf, real_name); - strcpy(tbuf + l, ".exe"); - type = file_type(tbuf); - if (type >= -3) - goto type_again; - } - - errno = ENOEXEC; - rc = -1; - goto do_script; - } - switch (type & 7) { - /* Ignore WINDOWCOMPAT and FAPI, start them the same type we are. */ - case FAPPTYP_WINDOWAPI: - { /* Apparently, kids are started basing on startup type, not the morphed type */ - if (os2_mytype != 3) { /* not PM */ - if (flag == P_NOWAIT) - flag = P_PM; - else if ((flag & 7) != P_PM && (flag & 7) != P_SESSION && ckWARN(WARN_EXEC)) - Perl_warner(aTHX_ packWARN(WARN_EXEC), "Starting PM process with flag=%d, mytype=%d", - flag, os2_mytype); - } - } - break; - case FAPPTYP_NOTWINDOWCOMPAT: - { - if (os2_mytype != 0) { /* not full screen */ - if (flag == P_NOWAIT) - flag = P_SESSION; - else if ((flag & 7) != P_SESSION && ckWARN(WARN_EXEC)) - Perl_warner(aTHX_ packWARN(WARN_EXEC), "Starting Full Screen process with flag=%d, mytype=%d", - flag, os2_mytype); - } - } - break; - case FAPPTYP_NOTSPEC: - /* Let the shell handle this... */ - force_shell = 1; - buf = ""; /* Pacify a warning */ - file = 0; /* Pacify a warning */ - goto doshell_args; - break; - } - } - - if (addflag) { - addflag = 0; - new_stderr = dup(2); /* Preserve stderr */ - if (new_stderr == -1) { - if (errno == EBADF) - nostderr = 1; - else { - rc = -1; - goto finish; - } - } else - fl_stderr = fcntl(2, F_GETFD); - rc = dup2(1,2); - if (rc == -1) - goto finish; - fcntl(new_stderr, F_SETFD, FD_CLOEXEC); - } + force_shell = 0; + if (_emx_env & 0x200) { /* OS/2. */ + int type = file_type(real_name); + type_again: + if (type == -1) { /* Not found */ + errno = ENOENT; + rc = -1; + goto do_script; + } + else if (type == -2) { /* Not an EXE */ + errno = ENOEXEC; + rc = -1; + goto do_script; + } + else if (type == -3) { /* Is a directory? */ + /* Special-case this */ + char tbuf[512]; + int l = strlen(real_name); + + if (l + 5 <= sizeof tbuf) { + strcpy(tbuf, real_name); + strcpy(tbuf + l, ".exe"); + type = file_type(tbuf); + if (type >= -3) + goto type_again; + } + + errno = ENOEXEC; + rc = -1; + goto do_script; + } + switch (type & 7) { + /* Ignore WINDOWCOMPAT and FAPI, start them the same type we are. */ + case FAPPTYP_WINDOWAPI: + { /* Apparently, kids are started basing on startup type, not the morphed type */ + if (os2_mytype != 3) { /* not PM */ + if (flag == P_NOWAIT) + flag = P_PM; + else if ((flag & 7) != P_PM && (flag & 7) != P_SESSION && ckWARN(WARN_EXEC)) + Perl_warner(aTHX_ packWARN(WARN_EXEC), "Starting PM process with flag=%d, mytype=%d", + flag, os2_mytype); + } + } + break; + case FAPPTYP_NOTWINDOWCOMPAT: + { + if (os2_mytype != 0) { /* not full screen */ + if (flag == P_NOWAIT) + flag = P_SESSION; + else if ((flag & 7) != P_SESSION && ckWARN(WARN_EXEC)) + Perl_warner(aTHX_ packWARN(WARN_EXEC), "Starting Full Screen process with flag=%d, mytype=%d", + flag, os2_mytype); + } + } + break; + case FAPPTYP_NOTSPEC: + /* Let the shell handle this... */ + force_shell = 1; + buf = ""; /* Pacify a warning */ + file = 0; /* Pacify a warning */ + goto doshell_args; + break; + } + } + + if (addflag) { + addflag = 0; + new_stderr = dup(2); /* Preserve stderr */ + if (new_stderr == -1) { + if (errno == EBADF) + nostderr = 1; + else { + rc = -1; + goto finish; + } + } else + fl_stderr = fcntl(2, F_GETFD); + rc = dup2(1,2); + if (rc == -1) + goto finish; + fcntl(new_stderr, F_SETFD, FD_CLOEXEC); + } #if 0 - rc = result(aTHX_ trueflag, spawnvp(flag,real_name,argv)); + rc = result(aTHX_ trueflag, spawnvp(flag,real_name,argv)); #else - if (execf == EXECF_TRUEEXEC) - rc = execvp(real_name,argv); - else if (execf == EXECF_EXEC) - rc = spawnvp(trueflag | P_OVERLAY,real_name,argv); - else if (execf == EXECF_SPAWN_NOWAIT) - rc = spawnvp(flag,real_name,argv); + if (execf == EXECF_TRUEEXEC) + rc = execvp(real_name,argv); + else if (execf == EXECF_EXEC) + rc = spawnvp(trueflag | P_OVERLAY,real_name,argv); + else if (execf == EXECF_SPAWN_NOWAIT) + rc = spawnvp(flag,real_name,argv); else if (execf == EXECF_SYNC) - rc = spawnvp(trueflag,real_name,argv); + rc = spawnvp(trueflag,real_name,argv); else /* EXECF_SPAWN, EXECF_SPAWN_BYFLAG */ - rc = result(aTHX_ trueflag, - spawnvp(flag,real_name,argv)); + rc = result(aTHX_ trueflag, + spawnvp(flag,real_name,argv)); #endif - if (rc < 0 && pass == 1) { - do_script: - if (real_name == argv[0]) { - int err = errno; - - if (err == ENOENT || err == ENOEXEC) { - /* No such file, or is a script. */ - /* Try adding script extensions to the file name, and - search on PATH. */ - char *scr = find_script(argv[0], TRUE, NULL, 0); - - if (scr) { - char *s = 0, *s1; - SV *scrsv = sv_2mortal(newSVpv(scr, 0)); - SV *bufsv = sv_newmortal(); + if (rc < 0 && pass == 1) { + do_script: + if (real_name == argv[0]) { + int err = errno; + + if (err == ENOENT || err == ENOEXEC) { + /* No such file, or is a script. */ + /* Try adding script extensions to the file name, and + search on PATH. */ + char *scr = find_script(argv[0], TRUE, NULL, 0); + + if (scr) { + char *s = 0, *s1; + SV *scrsv = sv_2mortal(newSVpv(scr, 0)); + SV *bufsv = sv_newmortal(); Safefree(scr); - scr = SvPV(scrsv, n_a); /* free()ed later */ + scr = SvPV(scrsv, n_a); /* free()ed later */ - file = PerlIO_open(scr, "r"); - argv[0] = scr; - if (!file) - goto panic_file; - - buf = sv_gets(bufsv, file, 0 /* No append */); - if (!buf) - buf = ""; /* XXX Needed? */ - if (!buf[0]) { /* Empty... */ + file = PerlIO_open(scr, "r"); + argv[0] = scr; + if (!file) + goto panic_file; + + buf = sv_gets(bufsv, file, 0 /* No append */); + if (!buf) + buf = ""; /* XXX Needed? */ + if (!buf[0]) { /* Empty... */ struct stat statbuf; - PerlIO_close(file); - /* Special case: maybe from -Zexe build, so - there is an executable around (contrary to - documentation, DosQueryAppType sometimes (?) - does not append ".exe", so we could have - reached this place). */ - sv_catpvs(scrsv, ".exe"); - argv[0] = scr = SvPV(scrsv, n_a); /* Reload */ + PerlIO_close(file); + /* Special case: maybe from -Zexe build, so + there is an executable around (contrary to + documentation, DosQueryAppType sometimes (?) + does not append ".exe", so we could have + reached this place). */ + sv_catpvs(scrsv, ".exe"); + argv[0] = scr = SvPV(scrsv, n_a); /* Reload */ if (PerlLIO_stat(scr,&statbuf) >= 0 && !S_ISDIR(statbuf.st_mode)) { /* Found */ - real_name = scr; - pass++; - goto reread; - } else { /* Restore */ - SvCUR_set(scrsv, SvCUR(scrsv) - 4); - *SvEND(scrsv) = 0; - } - } - if (PerlIO_close(file) != 0) { /* Failure */ - panic_file: - if (ckWARN(WARN_EXEC)) - Perl_warner(aTHX_ packWARN(WARN_EXEC), "Error reading \"%s\": %s", - scr, Strerror(errno)); - buf = ""; /* Not #! */ - goto doshell_args; - } - if (buf[0] == '#') { - if (buf[1] == '!') - s = buf + 2; - } else if (buf[0] == 'e') { - if (strBEGINs(buf, "extproc") - && isSPACE(buf[7])) - s = buf + 8; - } else if (buf[0] == 'E') { - if (strBEGINs(buf, "EXTPROC") - && isSPACE(buf[7])) - s = buf + 8; - } - if (!s) { - buf = ""; /* Not #! */ - goto doshell_args; - } - - s1 = s; - nargs = 0; - argsp = args; - while (1) { - /* Do better than pdksh: allow a few args, - strip trailing whitespace. */ - while (isSPACE(*s)) - s++; - if (*s == 0) - break; - if (nargs == 4) { - nargs = -1; - break; - } - args[nargs++] = s; - while (*s && !isSPACE(*s)) - s++; - if (*s == 0) - break; - *s++ = 0; - } - if (nargs == -1) { - Perl_warner(aTHX_ packWARN(WARN_EXEC), "Too many args on %.*s line of \"%s\"", - s1 - buf, buf, scr); - nargs = 4; - argsp = fargs; - } - /* Can jump from far, buf/file invalid if force_shell: */ - doshell_args: - { - char **a = argv; - const char *exec_args[2]; - - if (force_shell - || (!buf[0] && file)) { /* File without magic */ - /* In fact we tried all what pdksh would - try. There is no point in calling - pdksh, we may just emulate its logic. */ - char *shell = getenv("EXECSHELL"); - char *shell_opt = NULL; - - if (!shell) { - char *s; - - shell_opt = "/c"; - shell = getenv("OS2_SHELL"); - if (inicmd) { /* No spaces at start! */ - s = inicmd; - while (*s && !isSPACE(*s)) { - if (*s++ == '/') { - inicmd = NULL; /* Cannot use */ - break; - } - } - } - if (!inicmd) { - s = argv[0]; - while (*s) { - /* Dosish shells will choke on slashes - in paths, fortunately, this is - important for zeroth arg only. */ - if (*s == '/') - *s = '\\'; - s++; - } - } - } - /* If EXECSHELL is set, we do not set */ - - if (!shell) - shell = ((_emx_env & 0x200) - ? "c:/os2/cmd.exe" - : "c:/command.com"); - nargs = shell_opt ? 2 : 1; /* shell file args */ - exec_args[0] = shell; - exec_args[1] = shell_opt; - argsp = exec_args; - if (nargs == 2 && inicmd) { - /* Use the original cmd line */ - /* XXXX This is good only until we refuse - quoted arguments... */ - argv[0] = inicmd; - argv[1] = NULL; - } - } else if (!buf[0] && inicmd) { /* No file */ - /* Start with the original cmdline. */ - /* XXXX This is good only until we refuse - quoted arguments... */ - - argv[0] = inicmd; - argv[1] = NULL; - nargs = 2; /* shell -c */ - } - - while (a[1]) /* Get to the end */ - a++; - a++; /* Copy finil NULL too */ - while (a >= argv) { - *(a + nargs) = *a; /* argv was preallocated to be - long enough. */ - a--; - } - while (--nargs >= 0) /* XXXX Discard const... */ - argv[nargs] = (char*)argsp[nargs]; - /* Enable pathless exec if #! (as pdksh). */ - pass = (buf[0] == '#' ? 2 : 3); - goto retry; - } - } - /* Not found: restore errno */ - errno = err; - } - } else if (errno == ENOEXEC) { /* Cannot transfer `real_name' via shell. */ - if (rc < 0 && ckWARN(WARN_EXEC)) - Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't %s script `%s' with ARGV[0] being `%s'", - ((execf != EXECF_EXEC && execf != EXECF_TRUEEXEC) - ? "spawn" : "exec"), - real_name, argv[0]); - goto warned; - } else if (errno == ENOENT) { /* Cannot transfer `real_name' via shell. */ - if (rc < 0 && ckWARN(WARN_EXEC)) - Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't %s `%s' with ARGV[0] being `%s' (looking for executables only, not found)", - ((execf != EXECF_EXEC && execf != EXECF_TRUEEXEC) - ? "spawn" : "exec"), - real_name, argv[0]); - goto warned; - } - } else if (rc < 0 && pass == 2 && errno == ENOENT) { /* File not found */ - char *no_dir = strrchr(argv[0], '/'); - - /* Do as pdksh port does: if not found with /, try without - path. */ - if (no_dir) { - argv[0] = no_dir + 1; - pass++; - goto retry; - } - } - if (rc < 0 && ckWARN(WARN_EXEC)) - Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't %s \"%s\": %s\n", - ((execf != EXECF_EXEC && execf != EXECF_TRUEEXEC) - ? "spawn" : "exec"), - real_name, Strerror(errno)); + real_name = scr; + pass++; + goto reread; + } else { /* Restore */ + SvCUR_set(scrsv, SvCUR(scrsv) - 4); + *SvEND(scrsv) = 0; + } + } + if (PerlIO_close(file) != 0) { /* Failure */ + panic_file: + if (ckWARN(WARN_EXEC)) + Perl_warner(aTHX_ packWARN(WARN_EXEC), "Error reading \"%s\": %s", + scr, Strerror(errno)); + buf = ""; /* Not #! */ + goto doshell_args; + } + if (buf[0] == '#') { + if (buf[1] == '!') + s = buf + 2; + } else if (buf[0] == 'e') { + if (strBEGINs(buf, "extproc") + && isSPACE(buf[7])) + s = buf + 8; + } else if (buf[0] == 'E') { + if (strBEGINs(buf, "EXTPROC") + && isSPACE(buf[7])) + s = buf + 8; + } + if (!s) { + buf = ""; /* Not #! */ + goto doshell_args; + } + + s1 = s; + nargs = 0; + argsp = args; + while (1) { + /* Do better than pdksh: allow a few args, + strip trailing whitespace. */ + while (isSPACE(*s)) + s++; + if (*s == 0) + break; + if (nargs == 4) { + nargs = -1; + break; + } + args[nargs++] = s; + while (*s && !isSPACE(*s)) + s++; + if (*s == 0) + break; + *s++ = 0; + } + if (nargs == -1) { + Perl_warner(aTHX_ packWARN(WARN_EXEC), "Too many args on %.*s line of \"%s\"", + s1 - buf, buf, scr); + nargs = 4; + argsp = fargs; + } + /* Can jump from far, buf/file invalid if force_shell: */ + doshell_args: + { + char **a = argv; + const char *exec_args[2]; + + if (force_shell + || (!buf[0] && file)) { /* File without magic */ + /* In fact we tried all what pdksh would + try. There is no point in calling + pdksh, we may just emulate its logic. */ + char *shell = PerlEnv_getenv("EXECSHELL"); + char *shell_opt = NULL; + if (!shell) { + char *s; + + shell_opt = "/c"; + shell = PerlEnv_getenv("OS2_SHELL"); + if (inicmd) { /* No spaces at start! */ + s = inicmd; + while (*s && !isSPACE(*s)) { + if (*s++ == '/') { + inicmd = NULL; /* Cannot use */ + break; + } + } + } + if (!inicmd) { + s = argv[0]; + while (*s) { + /* Dosish shells will choke on slashes + in paths, fortunately, this is + important for zeroth arg only. */ + if (*s == '/') + *s = '\\'; + s++; + } + } + } + /* If EXECSHELL is set, we do not set */ + + if (!shell) + shell = ((_emx_env & 0x200) + ? "c:/os2/cmd.exe" + : "c:/command.com"); + nargs = shell_opt ? 2 : 1; /* shell file args */ + exec_args[0] = shell; + exec_args[1] = shell_opt; + argsp = exec_args; + if (nargs == 2 && inicmd) { + /* Use the original cmd line */ + /* XXXX This is good only until we refuse + quoted arguments... */ + argv[0] = inicmd; + argv[1] = NULL; + } + } else if (!buf[0] && inicmd) { /* No file */ + /* Start with the original cmdline. */ + /* XXXX This is good only until we refuse + quoted arguments... */ + + argv[0] = inicmd; + argv[1] = NULL; + nargs = 2; /* shell -c */ + } + + while (a[1]) /* Get to the end */ + a++; + a++; /* Copy finil NULL too */ + while (a >= argv) { + *(a + nargs) = *a; /* argv was preallocated to be + long enough. */ + a--; + } + while (--nargs >= 0) /* XXXX Discard const... */ + argv[nargs] = (char*)argsp[nargs]; + /* Enable pathless exec if #! (as pdksh). */ + pass = (buf[0] == '#' ? 2 : 3); + goto retry; + } + } + /* Not found: restore errno */ + errno = err; + } + } else if (errno == ENOEXEC) { /* Cannot transfer `real_name' via shell. */ + if (rc < 0 && ckWARN(WARN_EXEC)) + Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't %s script `%s' with ARGV[0] being `%s'", + ((execf != EXECF_EXEC && execf != EXECF_TRUEEXEC) + ? "spawn" : "exec"), + real_name, argv[0]); + goto warned; + } else if (errno == ENOENT) { /* Cannot transfer `real_name' via shell. */ + if (rc < 0 && ckWARN(WARN_EXEC)) + Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't %s `%s' with ARGV[0] being `%s' (looking for executables only, not found)", + ((execf != EXECF_EXEC && execf != EXECF_TRUEEXEC) + ? "spawn" : "exec"), + real_name, argv[0]); + goto warned; + } + } else if (rc < 0 && pass == 2 && errno == ENOENT) { /* File not found */ + char *no_dir = strrchr(argv[0], '/'); + + /* Do as pdksh port does: if not found with /, try without + path. */ + if (no_dir) { + argv[0] = no_dir + 1; + pass++; + goto retry; + } + } + if (rc < 0 && ckWARN(WARN_EXEC)) + Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't %s \"%s\": %s\n", + ((execf != EXECF_EXEC && execf != EXECF_TRUEEXEC) + ? "spawn" : "exec"), + real_name, Strerror(errno)); warned: - if (rc < 0 && (execf != EXECF_SPAWN_NOWAIT) - && ((trueflag & 0xFF) == P_WAIT)) - rc = -1; + if (rc < 0 && (execf != EXECF_SPAWN_NOWAIT) + && ((trueflag & 0xFF) == P_WAIT)) + rc = -1; finish: if (new_stderr != -1) { /* How can we use error codes? */ - dup2(new_stderr, 2); - close(new_stderr); - fcntl(2, F_SETFD, fl_stderr); + dup2(new_stderr, 2); + close(new_stderr); + fcntl(2, F_SETFD, fl_stderr); } else if (nostderr) close(2); return rc; @@ -1357,14 +1356,14 @@ ENTER; #ifdef TRYSHELL - if ((shell = getenv("EMXSHELL")) != NULL) - copt = "-c"; - else if ((shell = getenv("SHELL")) != NULL) - copt = "-c"; - else if ((shell = getenv("COMSPEC")) != NULL) - copt = "/C"; + if ((shell = PerlEnv_getenv("EMXSHELL")) != NULL) + copt = "-c"; + else if ((shell = PerlEnv_getenv("SHELL")) != NULL) + copt = "-c"; + else if ((shell = PerlEnv_getenv("COMSPEC")) != NULL) + copt = "/C"; else - shell = "cmd.exe"; + shell = "cmd.exe"; #else /* Consensus on perl5-porters is that it is _very_ important to have a shell which will not change between computers with the @@ -1375,81 +1374,81 @@ #endif while (*cmd && isSPACE(*cmd)) - cmd++; + cmd++; if (strBEGINs(cmd,"/bin/sh") && isSPACE(cmd[7])) { - STRLEN l = strlen(PL_sh_path); - - Newx(news, strlen(cmd) - 7 + l + 1, char); - strcpy(news, PL_sh_path); - strcpy(news + l, cmd + 7); - cmd = news; + STRLEN l = strlen(PL_sh_path); + + Newx(news, strlen(cmd) - 7 + l + 1, char); + strcpy(news, PL_sh_path); + strcpy(news + l, cmd + 7); + cmd = news; } /* save an extra exec if possible */ /* see if there are shell metacharacters in it */ if (*cmd == '.' && isSPACE(cmd[1])) - goto doshell; + goto doshell; if (strBEGINs(cmd,"exec") && isSPACE(cmd[4])) - goto doshell; + goto doshell; for (s = cmd; *s && isALPHA(*s); s++) ; /* catch VAR=val gizmo */ if (*s == '=') - goto doshell; + goto doshell; for (s = cmd; *s; s++) { - if (*s != ' ' && !isALPHA(*s) && memCHRs("$&*(){}[]'\";\\|?<>~`\n",*s)) { - if (*s == '\n' && s[1] == '\0') { - *s = '\0'; - break; - } else if (*s == '\\' && !seenspace) { - continue; /* Allow backslashes in names */ - } else if (*s == '>' && s >= cmd + 3 - && s[-1] == '2' && s[1] == '&' && s[2] == '1' - && isSPACE(s[-2]) ) { - char *t = s + 3; - - while (*t && isSPACE(*t)) - t++; - if (!*t) { - s[-2] = '\0'; - mergestderr = 1; - break; /* Allow 2>&1 as the last thing */ - } - } - /* We do not convert this to do_spawn_ve since shell - should be smart enough to start itself gloriously. */ - doshell: - if (execf == EXECF_TRUEEXEC) + if (*s != ' ' && !isALPHA(*s) && memCHRs("$&*(){}[]'\";\\|?<>~`\n",*s)) { + if (*s == '\n' && s[1] == '\0') { + *s = '\0'; + break; + } else if (*s == '\\' && !seenspace) { + continue; /* Allow backslashes in names */ + } else if (*s == '>' && s >= cmd + 3 + && s[-1] == '2' && s[1] == '&' && s[2] == '1' + && isSPACE(s[-2]) ) { + char *t = s + 3; + + while (*t && isSPACE(*t)) + t++; + if (!*t) { + s[-2] = '\0'; + mergestderr = 1; + break; /* Allow 2>&1 as the last thing */ + } + } + /* We do not convert this to do_spawn_ve since shell + should be smart enough to start itself gloriously. */ + doshell: + if (execf == EXECF_TRUEEXEC) rc = execl(shell,shell,copt,cmd,(char*)0); - else if (execf == EXECF_EXEC) + else if (execf == EXECF_EXEC) rc = spawnl(P_OVERLAY,shell,shell,copt,cmd,(char*)0); - else if (execf == EXECF_SPAWN_NOWAIT) + else if (execf == EXECF_SPAWN_NOWAIT) rc = spawnl(P_NOWAIT,shell,shell,copt,cmd,(char*)0); - else if (execf == EXECF_SPAWN_BYFLAG) + else if (execf == EXECF_SPAWN_BYFLAG) rc = spawnl(flag,shell,shell,copt,cmd,(char*)0); - else { - /* In the ak code internal P_NOWAIT is P_WAIT ??? */ - if (execf == EXECF_SYNC) - rc = spawnl(P_WAIT,shell,shell,copt,cmd,(char*)0); - else - rc = result(aTHX_ P_WAIT, - spawnl(P_NOWAIT,shell,shell,copt,cmd,(char*)0)); - if (rc < 0 && ckWARN(WARN_EXEC)) - Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't %s \"%s\": %s", - (execf == EXECF_SPAWN ? "spawn" : "exec"), - shell, Strerror(errno)); - if (rc < 0) - rc = -1; - } - if (news) - Safefree(news); - goto leave; - } else if (*s == ' ' || *s == '\t') { - seenspace = 1; - } + else { + /* In the ak code internal P_NOWAIT is P_WAIT ??? */ + if (execf == EXECF_SYNC) + rc = spawnl(P_WAIT,shell,shell,copt,cmd,(char*)0); + else + rc = result(aTHX_ P_WAIT, + spawnl(P_NOWAIT,shell,shell,copt,cmd,(char*)0)); + if (rc < 0 && ckWARN(WARN_EXEC)) + Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't %s \"%s\": %s", + (execf == EXECF_SPAWN ? "spawn" : "exec"), + shell, Strerror(errno)); + if (rc < 0) + rc = -1; + } + if (news) + Safefree(news); + goto leave; + } else if (*s == ' ' || *s == '\t') { + seenspace = 1; + } } /* cmd="a" may lead to "sh", "-c", "\"$@\"", "a", "a.cmd", NULL */ @@ -1459,20 +1458,20 @@ SAVEFREEPV(cmd); a = argv; for (s = cmd; *s;) { - while (*s && isSPACE(*s)) s++; - if (*s) - *(a++) = s; - while (*s && !isSPACE(*s)) s++; - if (*s) - *s++ = '\0'; + while (*s && isSPACE(*s)) s++; + if (*s) + *(a++) = s; + while (*s && !isSPACE(*s)) s++; + if (*s) + *s++ = '\0'; } *a = NULL; if (argv[0]) - rc = do_spawn_ve(aTHX_ NULL, argv, flag, execf, cmd, mergestderr); + rc = do_spawn_ve(aTHX_ NULL, argv, flag, execf, cmd, mergestderr); else - rc = -1; + rc = -1; if (news) - Safefree(news); + Safefree(news); leave: LEAVE; return rc; @@ -1495,37 +1494,37 @@ ENTER; if (cnt) { - Newx(argv, cnt + 3, char*); /* 3 extra to expand #! */ - SAVEFREEPV(argv); - a = argv; - - if (cnt > 1 && SvNIOKp(*argp) && !SvPOKp(*argp)) { - flag = SvIVx(*argp); - flag_set = 1; - } else - --argp; - - while (++argp < last) { - if (*argp) { - char *arg = SvPVx(*argp, n_a); - arg = savepv(arg); - SAVEFREEPV(arg); - *a++ = arg; - } else - *a++ = ""; - } - *a = NULL; - - if ( flag_set && (a == argv + 1) - && !really && execing == ASPAWN_WAIT ) { /* One arg? */ - rc = do_spawn3(aTHX_ a[-1], EXECF_SPAWN_BYFLAG, flag); - } else { - const int execf[3] = {EXECF_SPAWN, EXECF_EXEC, EXECF_SPAWN_NOWAIT}; - - rc = do_spawn_ve(aTHX_ really, argv, flag, execf[execing], NULL, 0); - } + Newx(argv, cnt + 3, char*); /* 3 extra to expand #! */ + SAVEFREEPV(argv); + a = argv; + + if (cnt > 1 && SvNIOKp(*argp) && !SvPOKp(*argp)) { + flag = SvIVx(*argp); + flag_set = 1; + } else + --argp; + + while (++argp < last) { + if (*argp) { + char *arg = SvPVx(*argp, n_a); + arg = savepv(arg); + SAVEFREEPV(arg); + *a++ = arg; + } else + *a++ = ""; + } + *a = NULL; + + if ( flag_set && (a == argv + 1) + && !really && execing == ASPAWN_WAIT ) { /* One arg? */ + rc = do_spawn3(aTHX_ a[-1], EXECF_SPAWN_BYFLAG, flag); + } else { + const int execf[3] = {EXECF_SPAWN, EXECF_EXEC, EXECF_SPAWN_NOWAIT}; + + rc = do_spawn_ve(aTHX_ really, argv, flag, execf[execing], NULL, 0); + } } else - rc = -1; + rc = -1; LEAVE; return rc; } @@ -1583,63 +1582,63 @@ this = (*mode == 'w'); that = !this; if (TAINTING_get) { - taint_env(); - taint_proper("Insecure %s%s", "EXEC"); + taint_env(); + taint_proper("Insecure %s%s", "EXEC"); } if (pipe(p) < 0) - return NULL; + return NULL; /* Now we need to spawn the child. */ if (p[this] == (*mode == 'r')) { /* if fh 0/1 was initially closed. */ - int new = dup(p[this]); + int new = dup(p[this]); - if (new == -1) - goto closepipes; - close(p[this]); - p[this] = new; + if (new == -1) + goto closepipes; + close(p[this]); + p[this] = new; } newfd = dup(*mode == 'r'); /* Preserve std* */ if (newfd == -1) { - /* This cannot happen due to fh being bad after pipe(), since - pipe() should have created fh 0 and 1 even if they were - initially closed. But we closed p[this] before. */ - if (errno != EBADF) { - closepipes: - close(p[0]); - close(p[1]); - return NULL; - } + /* This cannot happen due to fh being bad after pipe(), since + pipe() should have created fh 0 and 1 even if they were + initially closed. But we closed p[this] before. */ + if (errno != EBADF) { + closepipes: + close(p[0]); + close(p[1]); + return NULL; + } } else - fh_fl = fcntl(*mode == 'r', F_GETFD); + fh_fl = fcntl(*mode == 'r', F_GETFD); if (p[that] != (*mode == 'r')) { /* if fh 0/1 was initially closed. */ - dup2(p[that], *mode == 'r'); - close(p[that]); + dup2(p[that], *mode == 'r'); + close(p[that]); } /* Where is `this' and newfd now? */ fcntl(p[this], F_SETFD, FD_CLOEXEC); if (newfd != -1) - fcntl(newfd, F_SETFD, FD_CLOEXEC); + fcntl(newfd, F_SETFD, FD_CLOEXEC); if (cnt) { /* Args: "Real cmd", before first arg, the last, execing */ - pid = os2_aspawn_4(aTHX_ NULL, args, cnt, ASPAWN_NOWAIT); + pid = os2_aspawn_4(aTHX_ NULL, args, cnt, ASPAWN_NOWAIT); } else - pid = do_spawn_nowait(aTHX_ cmd); + pid = do_spawn_nowait(aTHX_ cmd); if (newfd == -1) - close(*mode == 'r'); /* It was closed initially */ + close(*mode == 'r'); /* It was closed initially */ else if (newfd != (*mode == 'r')) { /* Probably this check is not needed */ - dup2(newfd, *mode == 'r'); /* Return std* back. */ - close(newfd); - fcntl(*mode == 'r', F_SETFD, fh_fl); + dup2(newfd, *mode == 'r'); /* Return std* back. */ + close(newfd); + fcntl(*mode == 'r', F_SETFD, fh_fl); } else - fcntl(*mode == 'r', F_SETFD, fh_fl); + fcntl(*mode == 'r', F_SETFD, fh_fl); if (p[that] == (*mode == 'r')) - close(p[that]); + close(p[that]); if (pid == -1) { - close(p[this]); - return NULL; + close(p[this]); + return NULL; } if (p[that] < p[this]) { /* Make fh as small as possible */ - dup2(p[this], p[that]); - close(p[this]); - p[this] = p[that]; + dup2(p[this], p[that]); + close(p[this]); + p[this] = p[that]; } sv = *av_fetch(PL_fdpid,p[this],TRUE); (void)SvUPGRADE(sv,SVt_IV); @@ -1653,12 +1652,13 @@ SV *sv; if (cnt) - Perl_croak(aTHX_ "List form of piped open not implemented"); + Perl_croak(aTHX_ "List form of piped open not implemented"); # ifdef TRYSHELL res = popen(cmd, mode); # else - char *shell = getenv("EMXSHELL"); + + char *shell = PerlEnv_getenv("EMXSHELL"); my_setenv("EMXSHELL", PL_sh_path); res = popen(cmd, mode); @@ -1726,16 +1726,16 @@ massage_os2_attr(struct stat *st) { if ( ((st->st_mode & S_IFMT) != S_IFREG - && (st->st_mode & S_IFMT) != S_IFDIR) + && (st->st_mode & S_IFMT) != S_IFDIR) || !(st->st_attr & (FILE_ARCHIVED | FILE_HIDDEN | FILE_SYSTEM))) - return; + return; if ( st->st_attr & FILE_ARCHIVED ) - st->st_mode |= (os2_stat_archived | os2_stat_force); + st->st_mode |= (os2_stat_archived | os2_stat_force); if ( st->st_attr & FILE_HIDDEN ) - st->st_mode |= (os2_stat_hidden | os2_stat_force); + st->st_mode |= (os2_stat_hidden | os2_stat_force); if ( st->st_attr & FILE_SYSTEM ) - st->st_mode |= (os2_stat_system | os2_stat_force); + st->st_mode |= (os2_stat_system | os2_stat_force); } /* First attempt used DosQueryFSAttach which crashed the system when @@ -1748,15 +1748,15 @@ if ( ( l < 8 || l > 9) || strnicmp(name, "/dev/", 5) != 0 || ( stricmp(name + 5, "con") != 0 - && stricmp(name + 5, "tty") != 0 - && stricmp(name + 5, "nul") != 0 - && stricmp(name + 5, "null") != 0) ) { - int s = stat(name, st); - - if (s) - return s; - massage_os2_attr(st); - return 0; + && stricmp(name + 5, "tty") != 0 + && stricmp(name + 5, "nul") != 0 + && stricmp(name + 5, "null") != 0) ) { + int s = stat(name, st); + + if (s) + return s; + massage_os2_attr(st); + return 0; } memset(st, 0, sizeof *st); @@ -1774,7 +1774,7 @@ int s = fstat(handle, st); if (s) - return s; + return s; massage_os2_attr(st); return 0; } @@ -1786,15 +1786,15 @@ int attr, rc; if (!(pmode & os2_stat_force)) - return chmod(name, pmode); + return chmod(name, pmode); attr = __chmod (name, 0, 0); /* Get attributes */ if (attr < 0) - return -1; + return -1; if (pmode & S_IWRITE) - attr &= ~FILE_READONLY; + attr &= ~FILE_READONLY; else - attr |= FILE_READONLY; + attr |= FILE_READONLY; /* New logic */ attr &= ~(FILE_ARCHIVED | FILE_HIDDEN | FILE_SYSTEM); @@ -1822,9 +1822,9 @@ APIRET rc = DosAllocMem(&got, size, PAG_COMMIT | PAG_WRITE); if (rc == ERROR_NOT_ENOUGH_MEMORY) { - return (void *) -1; + return (void *) -1; } else if ( rc ) - Perl_croak_nocontext("Got an error from DosAllocMem: %li", (long)rc); + Perl_croak_nocontext("Got an error from DosAllocMem: %li", (long)rc); return got; } @@ -1837,19 +1837,19 @@ void settmppath() { - char *p = getenv("TMP"), *tpath; + char *p = PerlEnv_getenv("TMP"), *tpath; int len; - if (!p) p = getenv("TEMP"); - if (!p) p = getenv("TMPDIR"); + if (!p) p = PerlEnv_getenv("TEMP"); + if (!p) p = PerlEnv_getenv("TMPDIR"); if (!p) return; len = strlen(p); tpath = (char *)malloc(len + strlen(TMPPATH1) + 2); if (tpath) { - strcpy(tpath, p); - tpath[len] = '/'; - strcpy(tpath + len + 1, TMPPATH1); - tmppath = tpath; + strcpy(tpath, p); + tpath[len] = '/'; + strcpy(tpath + len + 1, TMPPATH1); + tmppath = tpath; } } @@ -1859,23 +1859,23 @@ { dXSARGS; if (items < 2 || items > 3) - Perl_croak_nocontext("Usage: File::Copy::syscopy(src,dst,flag=0)"); + Perl_croak_nocontext("Usage: File::Copy::syscopy(src,dst,flag=0)"); { - STRLEN n_a; - char * src = (char *)SvPV(ST(0),n_a); - char * dst = (char *)SvPV(ST(1),n_a); - U32 flag; - int RETVAL, rc; - dXSTARG; - - if (items < 3) - flag = 0; - else { - flag = (unsigned long)SvIV(ST(2)); - } + STRLEN n_a; + char * src = (char *)SvPV(ST(0),n_a); + char * dst = (char *)SvPV(ST(1),n_a); + U32 flag; + int RETVAL, rc; + dXSTARG; + + if (items < 3) + flag = 0; + else { + flag = (unsigned long)SvIV(ST(2)); + } - RETVAL = !CheckOSError(DosCopy(src, dst, flag)); - XSprePUSH; PUSHi((IV)RETVAL); + RETVAL = !CheckOSError(DosCopy(src, dst, flag)); + XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } @@ -1883,21 +1883,21 @@ /* APIRET APIENTRY DosReplaceModule (PCSZ pszOld, PCSZ pszNew, PCSZ pszBackup); */ DeclOSFuncByORD(ULONG,replaceModule,ORD_DosReplaceModule, - (char *old, char *new, char *backup), (old, new, backup)) + (char *old, char *new, char *backup), (old, new, backup)) XS(XS_OS2_replaceModule); /* prototype to pass -Wmissing-prototypes */ XS(XS_OS2_replaceModule) { dXSARGS; if (items < 1 || items > 3) - Perl_croak(aTHX_ "Usage: OS2::replaceModule(target [, source [, backup]])"); + Perl_croak(aTHX_ "Usage: OS2::replaceModule(target [, source [, backup]])"); { - char * target = (char *)SvPV_nolen(ST(0)); - char * source = (items < 2) ? NULL : (char *)SvPV_nolen(ST(1)); - char * backup = (items < 3) ? NULL : (char *)SvPV_nolen(ST(2)); + char * target = (char *)SvPV_nolen(ST(0)); + char * source = (items < 2) ? NULL : (char *)SvPV_nolen(ST(1)); + char * backup = (items < 3) ? NULL : (char *)SvPV_nolen(ST(2)); - if (!replaceModule(target, source, backup)) - croak_with_os2error("replaceModule() error"); + if (!replaceModule(target, source, backup)) + croak_with_os2error("replaceModule() error"); } XSRETURN_YES; } @@ -1906,8 +1906,8 @@ ULONG ulParm2, ULONG ulParm3); */ DeclOSFuncByORD(ULONG,perfSysCall,ORD_DosPerfSysCall, - (ULONG ulCommand, ULONG ulParm1, ULONG ulParm2, ULONG ulParm3), - (ulCommand, ulParm1, ulParm2, ulParm3)) + (ULONG ulCommand, ULONG ulParm1, ULONG ulParm2, ULONG ulParm3), + (ulCommand, ulParm1, ulParm2, ulParm3)) #ifndef CMD_KI_RDCNT # define CMD_KI_RDCNT 0x63 @@ -1925,10 +1925,10 @@ NO_OUTPUT ULONG perfSysCall(ULONG ulCommand, ULONG ulParm1, ULONG ulParm2, ULONG ulParm3) PREINIT: - ULONG rc; + ULONG rc; POSTCALL: - if (!RETVAL) - croak_with_os2error("perfSysCall() error"); + if (!RETVAL) + croak_with_os2error("perfSysCall() error"); */ static int @@ -1937,7 +1937,7 @@ ULONG res; if (DosQuerySysInfo(QSV_NUMPROCESSORS, QSV_NUMPROCESSORS, (PVOID)&res, sizeof(res))) - return 1; /* Old system? */ + return 1; /* Old system? */ return res; } @@ -1946,64 +1946,64 @@ { dXSARGS; if (items < 0 || items > 4) - Perl_croak(aTHX_ "Usage: OS2::perfSysCall(ulCommand = CMD_KI_RDCNT, ulParm1= 0, ulParm2= 0, ulParm3= 0)"); + Perl_croak(aTHX_ "Usage: OS2::perfSysCall(ulCommand = CMD_KI_RDCNT, ulParm1= 0, ulParm2= 0, ulParm3= 0)"); SP -= items; { - dXSTARG; - ULONG RETVAL, ulCommand, ulParm1, ulParm2, ulParm3, res; - myCPUUTIL u[64]; - int total = 0, tot2 = 0; - - if (items < 1) - ulCommand = CMD_KI_RDCNT; - else { - ulCommand = (ULONG)SvUV(ST(0)); - } - - if (items < 2) { - total = (ulCommand == CMD_KI_RDCNT ? numprocessors() : 0); - ulParm1 = (total ? (ULONG)u : 0); - - if (total > C_ARRAY_LENGTH(u)) - croak("Unexpected number of processors: %d", total); - } else { - ulParm1 = (ULONG)SvUV(ST(1)); - } - - if (items < 3) { - tot2 = (ulCommand == CMD_KI_GETQTY); - ulParm2 = (tot2 ? (ULONG)&res : 0); - } else { - ulParm2 = (ULONG)SvUV(ST(2)); - } - - if (items < 4) - ulParm3 = 0; - else { - ulParm3 = (ULONG)SvUV(ST(3)); - } - - RETVAL = perfSysCall(ulCommand, ulParm1, ulParm2, ulParm3); - if (!RETVAL) - croak_with_os2error("perfSysCall() error"); - XSprePUSH; - if (total) { - int i,j; - - if (GIMME_V != G_ARRAY) { - PUSHn(u[0][0]); /* Total ticks on the first processor */ - XSRETURN(1); - } - EXTEND(SP, 4*total); - for (i=0; i < total; i++) - for (j=0; j < 4; j++) - PUSHs(sv_2mortal(newSVnv(u[i][j]))); - XSRETURN(4*total); - } - if (tot2) { - PUSHu(res); - XSRETURN(1); - } + dXSTARG; + ULONG RETVAL, ulCommand, ulParm1, ulParm2, ulParm3, res; + myCPUUTIL u[64]; + int total = 0, tot2 = 0; + + if (items < 1) + ulCommand = CMD_KI_RDCNT; + else { + ulCommand = (ULONG)SvUV(ST(0)); + } + + if (items < 2) { + total = (ulCommand == CMD_KI_RDCNT ? numprocessors() : 0); + ulParm1 = (total ? (ULONG)u : 0); + + if (total > C_ARRAY_LENGTH(u)) + croak("Unexpected number of processors: %d", total); + } else { + ulParm1 = (ULONG)SvUV(ST(1)); + } + + if (items < 3) { + tot2 = (ulCommand == CMD_KI_GETQTY); + ulParm2 = (tot2 ? (ULONG)&res : 0); + } else { + ulParm2 = (ULONG)SvUV(ST(2)); + } + + if (items < 4) + ulParm3 = 0; + else { + ulParm3 = (ULONG)SvUV(ST(3)); + } + + RETVAL = perfSysCall(ulCommand, ulParm1, ulParm2, ulParm3); + if (!RETVAL) + croak_with_os2error("perfSysCall() error"); + XSprePUSH; + if (total) { + int i,j; + + if (GIMME_V != G_ARRAY) { + PUSHn(u[0][0]); /* Total ticks on the first processor */ + XSRETURN(1); + } + EXTEND(SP, 4*total); + for (i=0; i < total; i++) + for (j=0; j < 4; j++) + PUSHs(sv_2mortal(newSVnv(u[i][j]))); + XSRETURN(4*total); + } + if (tot2) { + PUSHu(res); + XSRETURN(1); + } } XSRETURN_EMPTY; } @@ -2025,8 +2025,8 @@ if (SvTYPE(sv) != SVt_PVAV) Perl_croak_nocontext("Not array reference given to mod2fname"); - avlen = av_tindex((AV*)sv); - if (avlen < 0) + avlen = av_count((AV*)sv); + if (avlen == 0) Perl_croak_nocontext("Empty array reference given to mod2fname"); s = SvPV(*av_fetch((AV*)sv, avlen, FALSE), n_a); @@ -2034,16 +2034,15 @@ len = strlen(s); if (len < 6) pos = len; while (*s) { - sum = 33 * sum + *(s++); /* Checksumming first chars to - * get the capitalization into c.s. */ + sum = 33 * sum + *(s++); /* Checksumming first chars to + * get the capitalization into c.s. */ } - avlen --; - while (avlen >= 0) { - s = SvPV(*av_fetch((AV*)sv, avlen, FALSE), n_a); - while (*s) { - sum = 33 * sum + *(s++); /* 7 is primitive mod 13. */ - } - avlen --; + while (avlen > 0) { + s = SvPV(*av_fetch((AV*)sv, avlen, FALSE), n_a); + while (*s) { + sum = 33 * sum + *(s++); /* 7 is primitive mod 13. */ + } + avlen --; } /* We always load modules as *specific* DLLs, and with the full name. When loading a specific DLL by its full name, one cannot get a @@ -2067,15 +2066,15 @@ { dXSARGS; if (items != 1) - Perl_croak_nocontext("Usage: DynaLoader::mod2fname(sv)"); + Perl_croak_nocontext("Usage: DynaLoader::mod2fname(sv)"); { - SV * sv = ST(0); - char * RETVAL; - dXSTARG; - - RETVAL = mod2fname(aTHX_ sv); - sv_setpv(TARG, RETVAL); - XSprePUSH; PUSHTARG; + SV * sv = ST(0); + char * RETVAL; + dXSTARG; + + RETVAL = mod2fname(aTHX_ sv); + sv_setpv(TARG, RETVAL); + XSprePUSH; PUSHTARG; } XSRETURN(1); } @@ -2083,75 +2082,75 @@ char * os2error(int rc) { - dTHX; - ULONG len; - char *s; - int number = SvTRUE(get_sv("OS2::nsyserror", GV_ADD)); + dTHX; + ULONG len; + char *s; + int number = SvTRUE(get_sv("OS2::nsyserror", GV_ADD)); if (!(_emx_env & 0x200)) return ""; /* Nop if not OS/2. */ - if (rc == 0) - return ""; - if (number) { - sprintf(os2error_buf, "SYS%04d=%#x: ", rc, rc); - s = os2error_buf + strlen(os2error_buf); - } else - s = os2error_buf; - if (DosGetMessage(NULL, 0, s, sizeof(os2error_buf) - 1 - (s-os2error_buf), - rc, "OSO001.MSG", &len)) { - char *name = ""; - - if (!number) { - sprintf(os2error_buf, "SYS%04d=%#x: ", rc, rc); - s = os2error_buf + strlen(os2error_buf); - } - switch (rc) { - case PMERR_INVALID_HWND: - name = "PMERR_INVALID_HWND"; - break; - case PMERR_INVALID_HMQ: - name = "PMERR_INVALID_HMQ"; - break; - case PMERR_CALL_FROM_WRONG_THREAD: - name = "PMERR_CALL_FROM_WRONG_THREAD"; - break; - case PMERR_NO_MSG_QUEUE: - name = "PMERR_NO_MSG_QUEUE"; - break; - case PMERR_NOT_IN_A_PM_SESSION: - name = "PMERR_NOT_IN_A_PM_SESSION"; - break; - case PMERR_INVALID_ATOM: - name = "PMERR_INVALID_ATOM"; - break; - case PMERR_INVALID_HATOMTBL: - name = "PMERR_INVALID_HATOMTMB"; - break; - case PMERR_INVALID_INTEGER_ATOM: - name = "PMERR_INVALID_INTEGER_ATOM"; - break; - case PMERR_INVALID_ATOM_NAME: - name = "PMERR_INVALID_ATOM_NAME"; - break; - case PMERR_ATOM_NAME_NOT_FOUND: - name = "PMERR_ATOM_NAME_NOT_FOUND"; - break; - } - sprintf(s, "%s%s[No description found in OSO001.MSG]", - name, (*name ? "=" : "")); - } else { - s[len] = '\0'; - if (len && s[len - 1] == '\n') - s[--len] = 0; - if (len && s[len - 1] == '\r') - s[--len] = 0; - if (len && s[len - 1] == '.') - s[--len] = 0; - if (len >= 10 && number && strnEQ(s, os2error_buf, 7) - && s[7] == ':' && s[8] == ' ') - /* Some messages start with SYSdddd:, some not */ - Move(s + 9, s, (len -= 9) + 1, char); - } - return os2error_buf; + if (rc == 0) + return ""; + if (number) { + sprintf(os2error_buf, "SYS%04d=%#x: ", rc, rc); + s = os2error_buf + strlen(os2error_buf); + } else + s = os2error_buf; + if (DosGetMessage(NULL, 0, s, sizeof(os2error_buf) - 1 - (s-os2error_buf), + rc, "OSO001.MSG", &len)) { + char *name = ""; + + if (!number) { + sprintf(os2error_buf, "SYS%04d=%#x: ", rc, rc); + s = os2error_buf + strlen(os2error_buf); + } + switch (rc) { + case PMERR_INVALID_HWND: + name = "PMERR_INVALID_HWND"; + break; + case PMERR_INVALID_HMQ: + name = "PMERR_INVALID_HMQ"; + break; + case PMERR_CALL_FROM_WRONG_THREAD: + name = "PMERR_CALL_FROM_WRONG_THREAD"; + break; + case PMERR_NO_MSG_QUEUE: + name = "PMERR_NO_MSG_QUEUE"; + break; + case PMERR_NOT_IN_A_PM_SESSION: + name = "PMERR_NOT_IN_A_PM_SESSION"; + break; + case PMERR_INVALID_ATOM: + name = "PMERR_INVALID_ATOM"; + break; + case PMERR_INVALID_HATOMTBL: + name = "PMERR_INVALID_HATOMTMB"; + break; + case PMERR_INVALID_INTEGER_ATOM: + name = "PMERR_INVALID_INTEGER_ATOM"; + break; + case PMERR_INVALID_ATOM_NAME: + name = "PMERR_INVALID_ATOM_NAME"; + break; + case PMERR_ATOM_NAME_NOT_FOUND: + name = "PMERR_ATOM_NAME_NOT_FOUND"; + break; + } + sprintf(s, "%s%s[No description found in OSO001.MSG]", + name, (*name ? "=" : "")); + } else { + s[len] = '\0'; + if (len && s[len - 1] == '\n') + s[--len] = 0; + if (len && s[len - 1] == '\r') + s[--len] = 0; + if (len && s[len - 1] == '.') + s[--len] = 0; + if (len >= 10 && number && strnEQ(s, os2error_buf, 7) + && s[7] == ':' && s[8] == ' ') + /* Some messages start with SYSdddd:, some not */ + Move(s + 9, s, (len -= 9) + 1, char); + } + return os2error_buf; } void @@ -2197,12 +2196,12 @@ p = buf; while (*p) { if (*p == '\\') - *p = '/'; + *p = '/'; if (*p == '/') { - if (ok && *oname != '/' && *oname != '\\') - ok = 0; + if (ok && *oname != '/' && *oname != '\\') + ok = 0; } else if (ok && tolower(*oname) != tolower(*p)) - ok = 0; + ok = 0; p++; oname++; } @@ -2235,32 +2234,32 @@ switch (how) { case Perlos2_handler_mangle: - perllib_mangle_installed = (char *(*)(char *s, unsigned int l))handler; - return 1; + perllib_mangle_installed = (char *(*)(char *s, unsigned int l))handler; + return 1; case Perlos2_handler_perl_sh: - s = (char *)handler; - s = dir_subst(s, strlen(s), b, sizeof b, 0, "handler_perl_sh"); - perl_sh_installed = savepv(s); - return 1; + s = (char *)handler; + s = dir_subst(s, strlen(s), b, sizeof b, 0, "handler_perl_sh"); + perl_sh_installed = savepv(s); + return 1; case Perlos2_handler_perllib_from: - s = (char *)handler; - s = dir_subst(s, strlen(s), b, sizeof b, 0, "handler_perllib_from"); - oldl = strlen(s); - oldp = savepv(s); - return 1; + s = (char *)handler; + s = dir_subst(s, strlen(s), b, sizeof b, 0, "handler_perllib_from"); + oldl = strlen(s); + oldp = savepv(s); + return 1; case Perlos2_handler_perllib_to: - s = (char *)handler; - s = dir_subst(s, strlen(s), b, sizeof b, 0, "handler_perllib_to"); - newl = strlen(s); - newp = savepv(s); - strcpy(mangle_ret, newp); - s = mangle_ret - 1; - while (*++s) - if (*s == '\\') - *s = '/'; - return 1; + s = (char *)handler; + s = dir_subst(s, strlen(s), b, sizeof b, 0, "handler_perllib_to"); + newl = strlen(s); + newp = savepv(s); + strcpy(mangle_ret, newp); + s = mangle_ret - 1; + while (*++s) + if (*s == '\\') + *s = '/'; + return 1; default: - return 0; + return 0; } } @@ -2272,115 +2271,115 @@ STRLEN froml = 0, tol = 0, rest = 0; /* froml: likewise */ if (l >= 2 && s[0] == '~') { - switch (s[1]) { - case 'i': case 'I': - from = "installprefix"; break; - case 'd': case 'D': - from = "dll"; break; - case 'e': case 'E': - from = "exe"; break; - default: - from = NULL; - froml = l + 1; /* Will not match */ - break; - } - if (from) - froml = strlen(from) + 1; - if (l >= froml && strnicmp(s + 2, from + 1, froml - 2) == 0) { - int strip = 1; - - switch (s[1]) { - case 'i': case 'I': - strip = 0; - tol = strlen(INSTALL_PREFIX); - if (tol >= bl) { - if (flags & dir_subst_fatal) - Perl_croak_nocontext("INSTALL_PREFIX too long: `%s'", INSTALL_PREFIX); - else - return NULL; - } - memcpy(b, INSTALL_PREFIX, tol + 1); - to = b; - e = b + tol; - break; - case 'd': case 'D': - if (flags & dir_subst_fatal) { - dTHX; - - to = dllname2buffer(aTHX_ b, bl); - } else { /* No Perl present yet */ - HMODULE self = find_myself(); - APIRET rc = DosQueryModuleName(self, bl, b); - - if (rc) - return 0; - to = b - 1; - while (*++to) - if (*to == '\\') - *to = '/'; - to = b; - } - break; - case 'e': case 'E': - if (flags & dir_subst_fatal) { - dTHX; - - to = execname2buffer(b, bl, PL_origargv[0]); - } else - to = execname2buffer(b, bl, NULL); - break; - } - if (!to) - return NULL; - if (strip) { - e = strrchr(to, '/'); - if (!e && (flags & dir_subst_fatal)) - Perl_croak_nocontext("%s: Can't parse EXE/DLL name: '%s'", msg, to); - else if (!e) - return NULL; - *e = 0; - } - s += froml; l -= froml; - if (!l) - return to; - if (!tol) - tol = strlen(to); - - while (l >= 3 && (s[0] == '/' || s[0] == '\\') - && s[1] == '.' && s[2] == '.' - && (l == 3 || s[3] == '/' || s[3] == '\\' || s[3] == ';')) { - e = strrchr(b, '/'); - if (!e && (flags & dir_subst_fatal)) - Perl_croak_nocontext("%s: Error stripping dirs from EXE/DLL/INSTALLDIR name", msg); - else if (!e) - return NULL; - *e = 0; - l -= 3; s += 3; - } - if (l && s[0] != '/' && s[0] != '\\' && s[0] != ';') - *e++ = '/'; - } + switch (s[1]) { + case 'i': case 'I': + from = "installprefix"; break; + case 'd': case 'D': + from = "dll"; break; + case 'e': case 'E': + from = "exe"; break; + default: + from = NULL; + froml = l + 1; /* Will not match */ + break; + } + if (from) + froml = strlen(from) + 1; + if (l >= froml && strnicmp(s + 2, from + 1, froml - 2) == 0) { + int strip = 1; + + switch (s[1]) { + case 'i': case 'I': + strip = 0; + tol = strlen(INSTALL_PREFIX); + if (tol >= bl) { + if (flags & dir_subst_fatal) + Perl_croak_nocontext("INSTALL_PREFIX too long: `%s'", INSTALL_PREFIX); + else + return NULL; + } + memcpy(b, INSTALL_PREFIX, tol + 1); + to = b; + e = b + tol; + break; + case 'd': case 'D': + if (flags & dir_subst_fatal) { + dTHX; + + to = dllname2buffer(aTHX_ b, bl); + } else { /* No Perl present yet */ + HMODULE self = find_myself(); + APIRET rc = DosQueryModuleName(self, bl, b); + + if (rc) + return 0; + to = b - 1; + while (*++to) + if (*to == '\\') + *to = '/'; + to = b; + } + break; + case 'e': case 'E': + if (flags & dir_subst_fatal) { + dTHX; + + to = execname2buffer(b, bl, PL_origargv[0]); + } else + to = execname2buffer(b, bl, NULL); + break; + } + if (!to) + return NULL; + if (strip) { + e = strrchr(to, '/'); + if (!e && (flags & dir_subst_fatal)) + Perl_croak_nocontext("%s: Can't parse EXE/DLL name: '%s'", msg, to); + else if (!e) + return NULL; + *e = 0; + } + s += froml; l -= froml; + if (!l) + return to; + if (!tol) + tol = strlen(to); + + while (l >= 3 && (s[0] == '/' || s[0] == '\\') + && s[1] == '.' && s[2] == '.' + && (l == 3 || s[3] == '/' || s[3] == '\\' || s[3] == ';')) { + e = strrchr(b, '/'); + if (!e && (flags & dir_subst_fatal)) + Perl_croak_nocontext("%s: Error stripping dirs from EXE/DLL/INSTALLDIR name", msg); + else if (!e) + return NULL; + *e = 0; + l -= 3; s += 3; + } + if (l && s[0] != '/' && s[0] != '\\' && s[0] != ';') + *e++ = '/'; + } } /* Else: copy as is */ if (l && (flags & dir_subst_pathlike)) { - STRLEN i = 0; + STRLEN i = 0; - while ( i < l - 2 && s[i] != ';') /* May have ~char after `;' */ - i++; - if (i < l - 2) { /* Found */ - rest = l - i - 1; - l = i + 1; - } + while ( i < l - 2 && s[i] != ';') /* May have ~char after `;' */ + i++; + if (i < l - 2) { /* Found */ + rest = l - i - 1; + l = i + 1; + } } if (e + l >= b + bl) { - if (flags & dir_subst_fatal) - Perl_croak_nocontext("%s: name `%s%s' too long", msg, b, s); - else - return NULL; + if (flags & dir_subst_fatal) + Perl_croak_nocontext("%s: name `%s%s' too long", msg, b, s); + else + return NULL; } memcpy(e, s, l); if (rest) { - e = dir_subst(s + l, rest, e + l, bl - (e + l - b), flags, msg); - return e ? b : e; + e = dir_subst(s + l, rest, e + l, bl - (e + l - b), flags, msg); + return e ? b : e; } e[l] = 0; return b; @@ -2390,15 +2389,15 @@ perllib_mangle_with(char *s, unsigned int l, char *from, unsigned int froml, char *to, unsigned int tol) { if (!to) - return s; + return s; if (l == 0) - l = strlen(s); + l = strlen(s); if (l < froml || strnicmp(from, s, froml) != 0) - return s; + return s; if (l + tol - froml > STATIC_FILE_LENGTH || tol > STATIC_FILE_LENGTH) - Perl_croak_nocontext("Malformed PERLLIB_PREFIX"); + Perl_croak_nocontext("Malformed PERLLIB_PREFIX"); if (to && to != mangle_ret) - memcpy(mangle_ret, to, tol); + memcpy(mangle_ret, to, tol); strcpy(mangle_ret + tol, s + froml); return mangle_ret; } @@ -2409,44 +2408,44 @@ char *name; if (perllib_mangle_installed && (name = perllib_mangle_installed(s,l))) - return name; + return name; if (!newp && !notfound) { - newp = getenv(name = "PERLLIB_" STRINGIFY(PERL_REVISION) - STRINGIFY(PERL_VERSION) STRINGIFY(PERL_SUBVERSION) - "_PREFIX"); - if (!newp) - newp = getenv(name = "PERLLIB_" STRINGIFY(PERL_REVISION) - STRINGIFY(PERL_VERSION) "_PREFIX"); - if (!newp) - newp = getenv(name = "PERLLIB_" STRINGIFY(PERL_REVISION) "_PREFIX"); - if (!newp) - newp = getenv(name = "PERLLIB_PREFIX"); - if (newp) { - char *s, b[300]; - - oldp = newp; - while (*newp && !isSPACE(*newp) && *newp != ';') - newp++; /* Skip old name. */ - oldl = newp - oldp; - s = dir_subst(oldp, oldl, b, sizeof b, dir_subst_fatal, name); - oldp = savepv(s); - oldl = strlen(s); - while (*newp && (isSPACE(*newp) || *newp == ';')) - newp++; /* Skip whitespace. */ - Perl_OS2_handler_install((void *)newp, Perlos2_handler_perllib_to); - if (newl == 0 || oldl == 0) - Perl_croak_nocontext("Malformed %s", name); - } else - notfound = 1; + newp = PerlEnv_getenv(name = "PERLLIB_" STRINGIFY(PERL_REVISION) + STRINGIFY(PERL_VERSION) STRINGIFY(PERL_SUBVERSION) + "_PREFIX"); + if (!newp) + newp = PerlEnv_getenv(name = "PERLLIB_" STRINGIFY(PERL_REVISION) + STRINGIFY(PERL_VERSION) "_PREFIX"); + if (!newp) + newp = PerlEnv_getenv(name = "PERLLIB_" STRINGIFY(PERL_REVISION) "_PREFIX"); + if (!newp) + newp = PerlEnv_getenv(name = "PERLLIB_PREFIX"); + if (newp) { + char *s, b[300]; + + oldp = newp; + while (*newp && !isSPACE(*newp) && *newp != ';') + newp++; /* Skip old name. */ + oldl = newp - oldp; + s = dir_subst(oldp, oldl, b, sizeof b, dir_subst_fatal, name); + oldp = savepv(s); + oldl = strlen(s); + while (*newp && (isSPACE(*newp) || *newp == ';')) + newp++; /* Skip whitespace. */ + Perl_OS2_handler_install((void *)newp, Perlos2_handler_perllib_to); + if (newl == 0 || oldl == 0) + Perl_croak_nocontext("Malformed %s", name); + } else + notfound = 1; } if (!newp) - return s; + return s; if (l == 0) - l = strlen(s); + l = strlen(s); if (l < oldl || strnicmp(oldp, s, oldl) != 0) - return s; + return s; if (l + newl - oldl > STATIC_FILE_LENGTH || newl > STATIC_FILE_LENGTH) - Perl_croak_nocontext("Malformed PERLLIB_PREFIX"); + Perl_croak_nocontext("Malformed PERLLIB_PREFIX"); strcpy(mangle_ret + newl, s + oldl); return mangle_ret; } @@ -2466,15 +2465,15 @@ /* 64 messages if before OS/2 3.0, ignored otherwise */ Perl_hmq = (*PMWIN_entries.CreateMsgQueue)(perl_hab_GET(), 64); if (!Perl_hmq) { - dTHX; + dTHX; - SAVEINT(rmq_cnt); /* Allow catch()ing. */ - if (rmq_cnt++) - _exit(188); /* Panic can try to create a window. */ - CroakWinError(1, message ? message : "Cannot create a message queue"); + SAVEINT(rmq_cnt); /* Allow catch()ing. */ + if (rmq_cnt++) + _exit(188); /* Panic can try to create a window. */ + CroakWinError(1, message ? message : "Cannot create a message queue"); } if (serve != -1) - (*PMWIN_entries.CancelShutdown)(Perl_hmq, !serve); + (*PMWIN_entries.CancelShutdown)(Perl_hmq, !serve); /* We may have loaded some modules */ _control87(fpflag, MCW_EM); /* Some modules reset FP flags on (un)load */ } @@ -2492,28 +2491,28 @@ Perl_hmq_refcnt = 0; /* Be extra safe */ DosGetInfoBlocks(&tib, &pib); if (!Perl_morph_refcnt) { - Perl_os2_initial_mode = pib->pib_ultype; - /* Try morphing into a PM application. */ - if (pib->pib_ultype != 3) /* 2 is VIO */ - pib->pib_ultype = 3; /* 3 is PM */ + Perl_os2_initial_mode = pib->pib_ultype; + /* Try morphing into a PM application. */ + if (pib->pib_ultype != 3) /* 2 is VIO */ + pib->pib_ultype = 3; /* 3 is PM */ } Create_HMQ(-1, /* We do CancelShutdown ourselves */ - "Cannot create a message queue, or morph to a PM application"); + "Cannot create a message queue, or morph to a PM application"); if ((serve & REGISTERMQ_IMEDIATE_UNMORPH)) { - if (!Perl_morph_refcnt && Perl_os2_initial_mode != 3) - pib->pib_ultype = Perl_os2_initial_mode; + if (!Perl_morph_refcnt && Perl_os2_initial_mode != 3) + pib->pib_ultype = Perl_os2_initial_mode; } } if (serve & REGISTERMQ_WILL_SERVE) { - if ( Perl_hmq_servers <= 0 /* Safe to inform us on shutdown, */ - && Perl_hmq_refcnt > 0 ) /* this was switched off before... */ - (*PMWIN_entries.CancelShutdown)(Perl_hmq, 0); - Perl_hmq_servers++; + if ( Perl_hmq_servers <= 0 /* Safe to inform us on shutdown, */ + && Perl_hmq_refcnt > 0 ) /* this was switched off before... */ + (*PMWIN_entries.CancelShutdown)(Perl_hmq, 0); + Perl_hmq_servers++; } else if (!Perl_hmq_servers) /* Do not inform us on shutdown */ - (*PMWIN_entries.CancelShutdown)(Perl_hmq, 1); + (*PMWIN_entries.CancelShutdown)(Perl_hmq, 1); Perl_hmq_refcnt++; if (!(serve & REGISTERMQ_IMEDIATE_UNMORPH)) - Perl_morph_refcnt++; + Perl_morph_refcnt++; return Perl_hmq; } @@ -2524,14 +2523,14 @@ QMSG msg; if (Perl_hmq_servers > 0 && !force) - return 0; + return 0; if (Perl_hmq_refcnt <= 0) - Perl_croak_nocontext("No message queue"); + Perl_croak_nocontext("No message queue"); while ((*PMWIN_entries.PeekMsg)(Perl_hab, &msg, NULLHANDLE, 0, 0, PM_REMOVE)) { - cnt++; - if (msg.msg == WM_QUIT) - Perl_croak_nocontext("QUITing..."); - (*PMWIN_entries.DispatchMsg)(Perl_hab, &msg); + cnt++; + if (msg.msg == WM_QUIT) + Perl_croak_nocontext("QUITing..."); + (*PMWIN_entries.DispatchMsg)(Perl_hab, &msg); } return cnt; } @@ -2542,17 +2541,17 @@ QMSG msg; if (Perl_hmq_servers > 0 && !force) - return 0; + return 0; if (Perl_hmq_refcnt <= 0) - Perl_croak_nocontext("No message queue"); + Perl_croak_nocontext("No message queue"); while ((*PMWIN_entries.GetMsg)(Perl_hab, &msg, NULLHANDLE, 0, 0)) { - if (cntp) - (*cntp)++; - (*PMWIN_entries.DispatchMsg)(Perl_hab, &msg); - if (msg.msg == WM_DESTROY) - return -1; - if (msg.msg == WM_CREATE) - return +1; + if (cntp) + (*cntp)++; + (*PMWIN_entries.DispatchMsg)(Perl_hab, &msg); + if (msg.msg == WM_DESTROY) + return -1; + if (msg.msg == WM_CREATE) + return +1; } Perl_croak_nocontext("QUITing..."); } @@ -2561,34 +2560,34 @@ Perl_Deregister_MQ(int serve) { if (serve & REGISTERMQ_WILL_SERVE) - Perl_hmq_servers--; + Perl_hmq_servers--; if (--Perl_hmq_refcnt <= 0) { - unsigned fpflag = _control87(0,0); + unsigned fpflag = _control87(0,0); - init_PMWIN_entries(); /* To be extra safe */ - (*PMWIN_entries.DestroyMsgQueue)(Perl_hmq); - Perl_hmq = 0; - /* We may have (un)loaded some modules */ - _control87(fpflag, MCW_EM); /* Some modules reset FP flags on (un)load */ + init_PMWIN_entries(); /* To be extra safe */ + (*PMWIN_entries.DestroyMsgQueue)(Perl_hmq); + Perl_hmq = 0; + /* We may have (un)loaded some modules */ + _control87(fpflag, MCW_EM); /* Some modules reset FP flags on (un)load */ } else if ((serve & REGISTERMQ_WILL_SERVE) && Perl_hmq_servers <= 0) - (*PMWIN_entries.CancelShutdown)(Perl_hmq, 1); /* Last server exited */ + (*PMWIN_entries.CancelShutdown)(Perl_hmq, 1); /* Last server exited */ if (!(serve & REGISTERMQ_IMEDIATE_UNMORPH) && (--Perl_morph_refcnt <= 0)) { - /* Try morphing back from a PM application. */ - PPIB pib; - PTIB tib; - - DosGetInfoBlocks(&tib, &pib); - if (pib->pib_ultype == 3) /* 3 is PM */ - pib->pib_ultype = Perl_os2_initial_mode; - else - Perl_warn_nocontext("Unexpected program mode %d when morphing back from PM", - pib->pib_ultype); + /* Try morphing back from a PM application. */ + PPIB pib; + PTIB tib; + + DosGetInfoBlocks(&tib, &pib); + if (pib->pib_ultype == 3) /* 3 is PM */ + pib->pib_ultype = Perl_os2_initial_mode; + else + Perl_warn_nocontext("Unexpected program mode %d when morphing back from PM", + pib->pib_ultype); } } #define sys_is_absolute(path) ( isALPHA((path)[0]) && (path)[1] == ':' \ - && ((path)[2] == '/' || (path)[2] == '\\')) + && ((path)[2] == '/' || (path)[2] == '\\')) #define sys_is_rooted _fnisabs #define sys_is_relative _fnisrel #define current_drive _getdrive @@ -2601,21 +2600,21 @@ { dXSARGS; if (items != 2) - Perl_croak_nocontext("Usage: OS2::Error(harderr, exception)"); + Perl_croak_nocontext("Usage: OS2::Error(harderr, exception)"); { - int arg1 = SvIV(ST(0)); - int arg2 = SvIV(ST(1)); - int a = ((arg1 ? FERR_ENABLEHARDERR : FERR_DISABLEHARDERR) - | (arg2 ? FERR_ENABLEEXCEPTION : FERR_DISABLEEXCEPTION)); - int RETVAL = ((arg1 ? 1 : 0) | (arg2 ? 2 : 0)); - unsigned long rc; - - if (CheckOSError(DosError(a))) - Perl_croak_nocontext("DosError(%d) failed: %s", a, os2error(Perl_rc)); - ST(0) = sv_newmortal(); - if (DOS_harderr_state >= 0) - sv_setiv(ST(0), DOS_harderr_state); - DOS_harderr_state = RETVAL; + int arg1 = SvIV(ST(0)); + int arg2 = SvIV(ST(1)); + int a = ((arg1 ? FERR_ENABLEHARDERR : FERR_DISABLEHARDERR) + | (arg2 ? FERR_ENABLEEXCEPTION : FERR_DISABLEEXCEPTION)); + int RETVAL = ((arg1 ? 1 : 0) | (arg2 ? 2 : 0)); + unsigned long rc; + + if (CheckOSError(DosError(a))) + Perl_croak_nocontext("DosError(%d) failed: %s", a, os2error(Perl_rc)); + ST(0) = sv_newmortal(); + if (DOS_harderr_state >= 0) + sv_setiv(ST(0), DOS_harderr_state); + DOS_harderr_state = RETVAL; } XSRETURN(1); } @@ -2624,29 +2623,29 @@ { dXSARGS; if (items != 1) - Perl_croak_nocontext("Usage: OS2::Errors2Drive(drive)"); + Perl_croak_nocontext("Usage: OS2::Errors2Drive(drive)"); { - STRLEN n_a; - SV *sv = ST(0); - int suppress = SvOK(sv); - char *s = suppress ? SvPV(sv, n_a) : NULL; - char drive = (s ? *s : 0); - unsigned long rc; - - if (suppress && !isALPHA(drive)) - Perl_croak_nocontext("Non-char argument '%c' to OS2::Errors2Drive()", drive); - if (CheckOSError(DosSuppressPopUps((suppress - ? SPU_ENABLESUPPRESSION - : SPU_DISABLESUPPRESSION), - drive))) - Perl_croak_nocontext("DosSuppressPopUps(%c) failed: %s", drive, - os2error(Perl_rc)); - ST(0) = sv_newmortal(); - if (DOS_suppression_state > 0) - sv_setpvn(ST(0), &DOS_suppression_state, 1); - else if (DOS_suppression_state == 0) + STRLEN n_a; + SV *sv = ST(0); + int suppress = SvOK(sv); + char *s = suppress ? SvPV(sv, n_a) : NULL; + char drive = (s ? *s : 0); + unsigned long rc; + + if (suppress && !isALPHA(drive)) + Perl_croak_nocontext("Non-char argument '%c' to OS2::Errors2Drive()", drive); + if (CheckOSError(DosSuppressPopUps((suppress + ? SPU_ENABLESUPPRESSION + : SPU_DISABLESUPPRESSION), + drive))) + Perl_croak_nocontext("DosSuppressPopUps(%c) failed: %s", drive, + os2error(Perl_rc)); + ST(0) = sv_newmortal(); + if (DOS_suppression_state > 0) + sv_setpvn(ST(0), &DOS_suppression_state, 1); + else if (DOS_suppression_state == 0) SvPVCLEAR(ST(0)); - DOS_suppression_state = drive; + DOS_suppression_state = drive; } XSRETURN(1); } @@ -2669,49 +2668,49 @@ return !_sleep2(ms); os2cp_croak(DosCreateEventSem(NULL, /* Unnamed */ - &hevEvent1, /* Handle of semaphore returned */ - DC_SEM_SHARED, /* Shared needed for DosAsyncTimer */ - FALSE), /* Semaphore is in RESET state */ - "DosCreateEventSem"); + &hevEvent1, /* Handle of semaphore returned */ + DC_SEM_SHARED, /* Shared needed for DosAsyncTimer */ + FALSE), /* Semaphore is in RESET state */ + "DosCreateEventSem"); if (ms >= switch_priority) switch_priority = 0; if (switch_priority) { if (CheckOSError(DosGetInfoBlocks(&tib, &pib))) - switch_priority = 0; + switch_priority = 0; else { - /* In Warp3, to switch scheduling to 8ms step, one needs to do - DosAsyncTimer() in time-critical thread. On laters versions, - more and more cases of wait-for-something are covered. - - It turns out that on Warp3fp42 it is the priority at the time - of DosAsyncTimer() which matters. Let's hope that this works - with later versions too... XXXX - */ - priority = (tib->tib_ptib2->tib2_ulpri); - if ((priority & 0xFF00) == 0x0300) /* already time-critical */ - switch_priority = 0; - /* Make us time-critical. Just modifying TIB is not enough... */ - /* tib->tib_ptib2->tib2_ulpri = 0x0300;*/ - /* We do not want to run at high priority if a signal causes us - to longjmp() out of this section... */ - if (DosEnterMustComplete(&nesting)) - switch_priority = 0; - else - DosSetPriority(PRTYS_THREAD, PRTYC_TIMECRITICAL, 0, 0); + /* In Warp3, to switch scheduling to 8ms step, one needs to do + DosAsyncTimer() in time-critical thread. On laters versions, + more and more cases of wait-for-something are covered. + + It turns out that on Warp3fp42 it is the priority at the time + of DosAsyncTimer() which matters. Let's hope that this works + with later versions too... XXXX + */ + priority = (tib->tib_ptib2->tib2_ulpri); + if ((priority & 0xFF00) == 0x0300) /* already time-critical */ + switch_priority = 0; + /* Make us time-critical. Just modifying TIB is not enough... */ + /* tib->tib_ptib2->tib2_ulpri = 0x0300;*/ + /* We do not want to run at high priority if a signal causes us + to longjmp() out of this section... */ + if (DosEnterMustComplete(&nesting)) + switch_priority = 0; + else + DosSetPriority(PRTYS_THREAD, PRTYC_TIMECRITICAL, 0, 0); } } if ((badrc = DosAsyncTimer(ms, - (HSEM) hevEvent1, /* Semaphore to post */ - &htimerEvent1))) /* Timer handler (returned) */ + (HSEM) hevEvent1, /* Semaphore to post */ + &htimerEvent1))) /* Timer handler (returned) */ e = "DosAsyncTimer"; if (switch_priority && tib->tib_ptib2->tib2_ulpri == 0x0300) { - /* Nobody switched priority while we slept... Ignore errors... */ - /* tib->tib_ptib2->tib2_ulpri = priority; */ /* Get back... */ - if (!(rc = DosSetPriority(PRTYS_THREAD, (priority>>8) & 0xFF, 0, 0))) - rc = DosSetPriority(PRTYS_THREAD, 0, priority & 0xFF, 0); + /* Nobody switched priority while we slept... Ignore errors... */ + /* tib->tib_ptib2->tib2_ulpri = priority; */ /* Get back... */ + if (!(rc = DosSetPriority(PRTYS_THREAD, (priority>>8) & 0xFF, 0, 0))) + rc = DosSetPriority(PRTYS_THREAD, 0, priority & 0xFF, 0); } if (switch_priority) rc = DosExitMustComplete(&nesting); /* Ignore errors */ @@ -2743,7 +2742,7 @@ ULONG ms, lim; if (items > 2 || items < 1) - Perl_croak_nocontext("Usage: OS2::ms_sleep(wait_ms [, high_priority_limit])"); + Perl_croak_nocontext("Usage: OS2::ms_sleep(wait_ms [, high_priority_limit])"); ms = SvUV(ST(0)); lim = items > 1 ? SvUV(ST(1)) : ms + 1; async_mssleep(ms, lim); @@ -2761,22 +2760,22 @@ ULONG rc; if (items != 0) - Perl_croak_nocontext("Usage: OS2::Timer()"); + Perl_croak_nocontext("Usage: OS2::Timer()"); if (!freq) { - *(PFN*)&pDosTmrQueryFreq = loadByOrdinal(ORD_DosTmrQueryFreq, 0); - *(PFN*)&pDosTmrQueryTime = loadByOrdinal(ORD_DosTmrQueryTime, 0); - MUTEX_LOCK(&perlos2_state_mutex); - if (!freq) - if (CheckOSError(pDosTmrQueryFreq(&freq))) - croak_with_os2error("DosTmrQueryFreq"); - MUTEX_UNLOCK(&perlos2_state_mutex); + *(PFN*)&pDosTmrQueryFreq = loadByOrdinal(ORD_DosTmrQueryFreq, 0); + *(PFN*)&pDosTmrQueryTime = loadByOrdinal(ORD_DosTmrQueryTime, 0); + MUTEX_LOCK(&perlos2_state_mutex); + if (!freq) + if (CheckOSError(pDosTmrQueryFreq(&freq))) + croak_with_os2error("DosTmrQueryFreq"); + MUTEX_UNLOCK(&perlos2_state_mutex); } if (CheckOSError(pDosTmrQueryTime(&count))) - croak_with_os2error("DosTmrQueryTime"); + croak_with_os2error("DosTmrQueryTime"); { - dXSTARG; + dXSTARG; - XSprePUSH; PUSHn(((NV)count)/freq); + XSprePUSH; PUSHn(((NV)count)/freq); } XSRETURN(1); } @@ -2786,11 +2785,11 @@ dXSARGS; if (items != 0) - Perl_croak_nocontext("Usage: OS2::msCounter()"); + Perl_croak_nocontext("Usage: OS2::msCounter()"); { - dXSTARG; + dXSTARG; - XSprePUSH; PUSHu(msCounter()); + XSprePUSH; PUSHu(msCounter()); } XSRETURN(1); } @@ -2801,13 +2800,13 @@ int is_local = 0; if (items > 1) - Perl_croak_nocontext("Usage: OS2::_infoTable([isLocal])"); + Perl_croak_nocontext("Usage: OS2::_infoTable([isLocal])"); if (items == 1) - is_local = (int)SvIV(ST(0)); + is_local = (int)SvIV(ST(0)); { - dXSTARG; + dXSTARG; - XSprePUSH; PUSHu(InfoTable(is_local)); + XSprePUSH; PUSHu(InfoTable(is_local)); } XSRETURN(1); } @@ -2872,76 +2871,76 @@ { dXSARGS; if (items > 2) - Perl_croak_nocontext("Usage: OS2::DevCap()"); + Perl_croak_nocontext("Usage: OS2::DevCap()"); { - /* Device Capabilities Data Buffer (10 extra w.r.t. Warp 4.5) */ - LONG si[CAPS_DEVICE_POLYSET_POINTS - CAPS_FAMILY + 1]; - int i = 0, j = 0, how = DevCap_dc; - HDC hScreenDC; - DEVOPENSTRUC doStruc= {0L, (PSZ)"DISPLAY", NULL, 0L, 0L, 0L, 0L, 0L, 0L}; - ULONG rc1 = NO_ERROR; - HWND hwnd; - static volatile int devcap_loaded; - - if (!devcap_loaded) { - *(PFN*)&pWinOpenWindowDC = loadByOrdinal(ORD_WinOpenWindowDC, 0); - *(PFN*)&pDevOpenDC = loadByOrdinal(ORD_DevOpenDC, 0); - *(PFN*)&pDevCloseDC = loadByOrdinal(ORD_DevCloseDC, 0); - *(PFN*)&pDevQueryCaps = loadByOrdinal(ORD_DevQueryCaps, 0); - devcap_loaded = 1; - } - - if (items >= 2) - how = SvIV(ST(1)); - if (!items) { /* Get device contents from PM */ - hScreenDC = pDevOpenDC(perl_hab_GET(), OD_MEMORY, (PSZ)"*", 0, - (PDEVOPENDATA)&doStruc, NULLHANDLE); - if (CheckWinError(hScreenDC)) - croak_with_os2error("DevOpenDC() failed"); - } else if (how == DevCap_dc) - hScreenDC = (HDC)SvIV(ST(0)); - else { /* DevCap_hwnd */ - if (!Perl_hmq) - Perl_croak(aTHX_ "Getting a window's device context without a message queue would lock PM"); - hwnd = (HWND)SvIV(ST(0)); - hScreenDC = pWinOpenWindowDC(hwnd); /* No need to DevCloseDC() */ - if (CheckWinError(hScreenDC)) - croak_with_os2error("WinOpenWindowDC() failed"); - } - if (CheckWinError(pDevQueryCaps(hScreenDC, - CAPS_FAMILY, /* W3 documented caps */ - CAPS_DEVICE_POLYSET_POINTS - - CAPS_FAMILY + 1, - si))) - rc1 = Perl_rc; - else { - EXTEND(SP,2*(CAPS_DEVICE_POLYSET_POINTS - CAPS_FAMILY + 1)); - while (i < CAPS_DEVICE_POLYSET_POINTS - CAPS_FAMILY + 1) { - ST(j) = sv_newmortal(); - sv_setpv(ST(j++), dc_fields[i]); - ST(j) = sv_newmortal(); - sv_setiv(ST(j++), si[i]); - i++; - } - i = CAPS_DEVICE_POLYSET_POINTS + 1; - while (i < CAPS_DEVICE_POLYSET_POINTS + 11) { /* Just in case... */ - LONG l; - - if (CheckWinError(pDevQueryCaps(hScreenDC, i, 1, &l))) - break; - EXTEND(SP, j + 2); - ST(j) = sv_newmortal(); - sv_setiv(ST(j++), i); - ST(j) = sv_newmortal(); - sv_setiv(ST(j++), l); - i++; - } - } - if (!items && CheckWinError(pDevCloseDC(hScreenDC))) - Perl_warn_nocontext("DevCloseDC() failed: %s", os2error(Perl_rc)); - if (rc1) - Perl_rc = rc1, croak_with_os2error("DevQueryCaps() failed"); - XSRETURN(j); + /* Device Capabilities Data Buffer (10 extra w.r.t. Warp 4.5) */ + LONG si[CAPS_DEVICE_POLYSET_POINTS - CAPS_FAMILY + 1]; + int i = 0, j = 0, how = DevCap_dc; + HDC hScreenDC; + DEVOPENSTRUC doStruc= {0L, (PSZ)"DISPLAY", NULL, 0L, 0L, 0L, 0L, 0L, 0L}; + ULONG rc1 = NO_ERROR; + HWND hwnd; + static volatile int devcap_loaded; + + if (!devcap_loaded) { + *(PFN*)&pWinOpenWindowDC = loadByOrdinal(ORD_WinOpenWindowDC, 0); + *(PFN*)&pDevOpenDC = loadByOrdinal(ORD_DevOpenDC, 0); + *(PFN*)&pDevCloseDC = loadByOrdinal(ORD_DevCloseDC, 0); + *(PFN*)&pDevQueryCaps = loadByOrdinal(ORD_DevQueryCaps, 0); + devcap_loaded = 1; + } + + if (items >= 2) + how = SvIV(ST(1)); + if (!items) { /* Get device contents from PM */ + hScreenDC = pDevOpenDC(perl_hab_GET(), OD_MEMORY, (PSZ)"*", 0, + (PDEVOPENDATA)&doStruc, NULLHANDLE); + if (CheckWinError(hScreenDC)) + croak_with_os2error("DevOpenDC() failed"); + } else if (how == DevCap_dc) + hScreenDC = (HDC)SvIV(ST(0)); + else { /* DevCap_hwnd */ + if (!Perl_hmq) + Perl_croak(aTHX_ "Getting a window's device context without a message queue would lock PM"); + hwnd = (HWND)SvIV(ST(0)); + hScreenDC = pWinOpenWindowDC(hwnd); /* No need to DevCloseDC() */ + if (CheckWinError(hScreenDC)) + croak_with_os2error("WinOpenWindowDC() failed"); + } + if (CheckWinError(pDevQueryCaps(hScreenDC, + CAPS_FAMILY, /* W3 documented caps */ + CAPS_DEVICE_POLYSET_POINTS + - CAPS_FAMILY + 1, + si))) + rc1 = Perl_rc; + else { + EXTEND(SP,2*(CAPS_DEVICE_POLYSET_POINTS - CAPS_FAMILY + 1)); + while (i < CAPS_DEVICE_POLYSET_POINTS - CAPS_FAMILY + 1) { + ST(j) = sv_newmortal(); + sv_setpv(ST(j++), dc_fields[i]); + ST(j) = sv_newmortal(); + sv_setiv(ST(j++), si[i]); + i++; + } + i = CAPS_DEVICE_POLYSET_POINTS + 1; + while (i < CAPS_DEVICE_POLYSET_POINTS + 11) { /* Just in case... */ + LONG l; + + if (CheckWinError(pDevQueryCaps(hScreenDC, i, 1, &l))) + break; + EXTEND(SP, j + 2); + ST(j) = sv_newmortal(); + sv_setiv(ST(j++), i); + ST(j) = sv_newmortal(); + sv_setiv(ST(j++), l); + i++; + } + } + if (!items && CheckWinError(pDevCloseDC(hScreenDC))) + Perl_warn_nocontext("DevCloseDC() failed: %s", os2error(Perl_rc)); + if (rc1) + Perl_rc = rc1, croak_with_os2error("DevQueryCaps() failed"); + XSRETURN(j); } } @@ -3058,64 +3057,64 @@ "106", "107", /* "CSYSVALUES",*/ - /* In recent DDK the limit is 108 */ + /* In recent DDK the limit is 108 */ }; XS(XS_OS2_SysValues) { dXSARGS; if (items > 2) - Perl_croak_nocontext("Usage: OS2::SysValues(which = -1, hwndDesktop = HWND_DESKTOP)"); + Perl_croak_nocontext("Usage: OS2::SysValues(which = -1, hwndDesktop = HWND_DESKTOP)"); { - int i = 0, j = 0, which = -1; - HWND hwnd = HWND_DESKTOP; - static volatile int sv_loaded; - LONG RETVAL; - - if (!sv_loaded) { - *(PFN*)&pWinQuerySysValue = loadByOrdinal(ORD_WinQuerySysValue, 0); - sv_loaded = 1; - } - - if (items == 2) - hwnd = (HWND)SvIV(ST(1)); - if (items >= 1) - which = (int)SvIV(ST(0)); - if (which == -1) { - EXTEND(SP,2*C_ARRAY_LENGTH(sv_keys)); - while (i < C_ARRAY_LENGTH(sv_keys)) { - ResetWinError(); - RETVAL = pWinQuerySysValue(hwnd, i); - if ( !RETVAL - && !(sv_keys[i][0] >= '0' && sv_keys[i][0] <= '9' - && i <= SV_PRINTSCREEN) ) { - FillWinError; - if (Perl_rc) { - if (i > SV_PRINTSCREEN) - break; /* May be not present on older systems */ - croak_with_os2error("SysValues():"); - } - - } - ST(j) = sv_newmortal(); - sv_setpv(ST(j++), sv_keys[i]); - ST(j) = sv_newmortal(); - sv_setiv(ST(j++), RETVAL); - i++; - } - XSRETURN(2 * i); - } else { - dXSTARG; - - ResetWinError(); - RETVAL = pWinQuerySysValue(hwnd, which); - if (!RETVAL) { - FillWinError; - if (Perl_rc) - croak_with_os2error("SysValues():"); - } - XSprePUSH; PUSHi((IV)RETVAL); - } + int i = 0, j = 0, which = -1; + HWND hwnd = HWND_DESKTOP; + static volatile int sv_loaded; + LONG RETVAL; + + if (!sv_loaded) { + *(PFN*)&pWinQuerySysValue = loadByOrdinal(ORD_WinQuerySysValue, 0); + sv_loaded = 1; + } + + if (items == 2) + hwnd = (HWND)SvIV(ST(1)); + if (items >= 1) + which = (int)SvIV(ST(0)); + if (which == -1) { + EXTEND(SP,2*C_ARRAY_LENGTH(sv_keys)); + while (i < C_ARRAY_LENGTH(sv_keys)) { + ResetWinError(); + RETVAL = pWinQuerySysValue(hwnd, i); + if ( !RETVAL + && !(sv_keys[i][0] >= '0' && sv_keys[i][0] <= '9' + && i <= SV_PRINTSCREEN) ) { + FillWinError; + if (Perl_rc) { + if (i > SV_PRINTSCREEN) + break; /* May be not present on older systems */ + croak_with_os2error("SysValues():"); + } + + } + ST(j) = sv_newmortal(); + sv_setpv(ST(j++), sv_keys[i]); + ST(j) = sv_newmortal(); + sv_setiv(ST(j++), RETVAL); + i++; + } + XSRETURN(2 * i); + } else { + dXSTARG; + + ResetWinError(); + RETVAL = pWinQuerySysValue(hwnd, which); + if (!RETVAL) { + FillWinError; + if (Perl_rc) + croak_with_os2error("SysValues():"); + } + XSprePUSH; PUSHi((IV)RETVAL); + } } } @@ -3123,22 +3122,22 @@ { dXSARGS; if (items < 2 || items > 3) - Perl_croak_nocontext("Usage: OS2::SysValues_set(which, val, hwndDesktop = HWND_DESKTOP)"); + Perl_croak_nocontext("Usage: OS2::SysValues_set(which, val, hwndDesktop = HWND_DESKTOP)"); { - int which = (int)SvIV(ST(0)); - LONG val = (LONG)SvIV(ST(1)); - HWND hwnd = HWND_DESKTOP; - static volatile int svs_loaded; - - if (!svs_loaded) { - *(PFN*)&pWinSetSysValue = loadByOrdinal(ORD_WinSetSysValue, 0); - svs_loaded = 1; - } - - if (items == 3) - hwnd = (HWND)SvIV(ST(2)); - if (CheckWinError(pWinSetSysValue(hwnd, which, val))) - croak_with_os2error("SysValues_set()"); + int which = (int)SvIV(ST(0)); + LONG val = (LONG)SvIV(ST(1)); + HWND hwnd = HWND_DESKTOP; + static volatile int svs_loaded; + + if (!svs_loaded) { + *(PFN*)&pWinSetSysValue = loadByOrdinal(ORD_WinSetSysValue, 0); + svs_loaded = 1; + } + + if (items == 3) + hwnd = (HWND)SvIV(ST(2)); + if (CheckWinError(pWinSetSysValue(hwnd, which, val))) + croak_with_os2error("SysValues_set()"); } XSRETURN_YES; } @@ -3183,40 +3182,40 @@ { dXSARGS; if (items != 0) - Perl_croak_nocontext("Usage: OS2::SysInfo()"); + Perl_croak_nocontext("Usage: OS2::SysInfo()"); { - /* System Information Data Buffer (10 extra w.r.t. Warp 4.5) */ - ULONG si[C_ARRAY_LENGTH(si_fields) + 10]; - APIRET rc = NO_ERROR; /* Return code */ - int i = 0, j = 0, last = QSV_MAX_WARP3; - - if (CheckOSError(DosQuerySysInfo(1L, /* Request documented system */ - last, /* info for Warp 3 */ - (PVOID)si, - sizeof(si)))) - croak_with_os2error("DosQuerySysInfo() failed"); - while (++last <= C_ARRAY_LENGTH(si)) { - if (CheckOSError(DosQuerySysInfo(last, last, /* One entry only */ - (PVOID)(si+last-1), - sizeof(*si)))) { - if (Perl_rc != ERROR_INVALID_PARAMETER) - croak_with_os2error("DosQuerySysInfo() failed"); - break; - } - } - last--; /* Count of successfully processed offsets */ - EXTEND(SP,2*last); - while (i < last) { - ST(j) = sv_newmortal(); - if (i < C_ARRAY_LENGTH(si_fields)) - sv_setpv(ST(j++), si_fields[i]); - else - sv_setiv(ST(j++), i + 1); - ST(j) = sv_newmortal(); - sv_setuv(ST(j++), si[i]); - i++; - } - XSRETURN(2 * last); + /* System Information Data Buffer (10 extra w.r.t. Warp 4.5) */ + ULONG si[C_ARRAY_LENGTH(si_fields) + 10]; + APIRET rc = NO_ERROR; /* Return code */ + int i = 0, j = 0, last = QSV_MAX_WARP3; + + if (CheckOSError(DosQuerySysInfo(1L, /* Request documented system */ + last, /* info for Warp 3 */ + (PVOID)si, + sizeof(si)))) + croak_with_os2error("DosQuerySysInfo() failed"); + while (++last <= C_ARRAY_LENGTH(si)) { + if (CheckOSError(DosQuerySysInfo(last, last, /* One entry only */ + (PVOID)(si+last-1), + sizeof(*si)))) { + if (Perl_rc != ERROR_INVALID_PARAMETER) + croak_with_os2error("DosQuerySysInfo() failed"); + break; + } + } + last--; /* Count of successfully processed offsets */ + EXTEND(SP,2*last); + while (i < last) { + ST(j) = sv_newmortal(); + if (i < C_ARRAY_LENGTH(si_fields)) + sv_setpv(ST(j++), si_fields[i]); + else + sv_setiv(ST(j++), i + 1); + ST(j) = sv_newmortal(); + sv_setuv(ST(j++), si[i]); + i++; + } + XSRETURN(2 * last); } } @@ -3226,27 +3225,27 @@ int count = (items == 2 ? (int)SvIV(ST(1)) : 1); if (items < 1 || items > 2) - Perl_croak_nocontext("Usage: OS2::SysInfoFor(id[,count])"); + Perl_croak_nocontext("Usage: OS2::SysInfoFor(id[,count])"); { - /* System Information Data Buffer (10 extra w.r.t. Warp 4.5) */ - ULONG si[C_ARRAY_LENGTH(si_fields) + 10]; - APIRET rc = NO_ERROR; /* Return code */ - int i = 0; - int start = (int)SvIV(ST(0)); - - if (count > C_ARRAY_LENGTH(si) || count <= 0) - Perl_croak(aTHX_ "unexpected count %d for OS2::SysInfoFor()", count); - if (CheckOSError(DosQuerySysInfo(start, - start + count - 1, - (PVOID)si, - sizeof(si)))) - croak_with_os2error("DosQuerySysInfo() failed"); - EXTEND(SP,count); - while (i < count) { - ST(i) = sv_newmortal(); - sv_setiv(ST(i), si[i]); - i++; - } + /* System Information Data Buffer (10 extra w.r.t. Warp 4.5) */ + ULONG si[C_ARRAY_LENGTH(si_fields) + 10]; + APIRET rc = NO_ERROR; /* Return code */ + int i = 0; + int start = (int)SvIV(ST(0)); + + if (count > C_ARRAY_LENGTH(si) || count <= 0) + Perl_croak(aTHX_ "unexpected count %d for OS2::SysInfoFor()", count); + if (CheckOSError(DosQuerySysInfo(start, + start + count - 1, + (PVOID)si, + sizeof(si)))) + croak_with_os2error("DosQuerySysInfo() failed"); + EXTEND(SP,count); + while (i < count) { + ST(i) = sv_newmortal(); + sv_setiv(ST(i), si[i]); + i++; + } } XSRETURN(count); } @@ -3255,19 +3254,19 @@ { dXSARGS; if (items != 0) - Perl_croak_nocontext("Usage: OS2::BootDrive()"); + Perl_croak_nocontext("Usage: OS2::BootDrive()"); { - ULONG si[1] = {0}; /* System Information Data Buffer */ - APIRET rc = NO_ERROR; /* Return code */ - char c; - dXSTARG; - - if (CheckOSError(DosQuerySysInfo(QSV_BOOT_DRIVE, QSV_BOOT_DRIVE, - (PVOID)si, sizeof(si)))) - croak_with_os2error("DosQuerySysInfo() failed"); - c = 'a' - 1 + si[0]; - sv_setpvn(TARG, &c, 1); - XSprePUSH; PUSHTARG; + ULONG si[1] = {0}; /* System Information Data Buffer */ + APIRET rc = NO_ERROR; /* Return code */ + char c; + dXSTARG; + + if (CheckOSError(DosQuerySysInfo(QSV_BOOT_DRIVE, QSV_BOOT_DRIVE, + (PVOID)si, sizeof(si)))) + croak_with_os2error("DosQuerySysInfo() failed"); + c = 'a' - 1 + si[0]; + sv_setpvn(TARG, &c, 1); + XSprePUSH; PUSHTARG; } XSRETURN(1); } @@ -3276,14 +3275,14 @@ { dXSARGS; if (items > 2) /* Defaults as for WinAlarm(ERROR) */ - Perl_croak_nocontext("Usage: OS2::Beep(freq = 440, ms = 100)"); + Perl_croak_nocontext("Usage: OS2::Beep(freq = 440, ms = 100)"); { - ULONG freq = (items > 0 ? (ULONG)SvUV(ST(0)) : 440); - ULONG ms = (items > 1 ? (ULONG)SvUV(ST(1)) : 100); - ULONG rc; + ULONG freq = (items > 0 ? (ULONG)SvUV(ST(0)) : 440); + ULONG ms = (items > 1 ? (ULONG)SvUV(ST(1)) : 100); + ULONG rc; - if (CheckOSError(DosBeep(freq, ms))) - croak_with_os2error("SysValues_set()"); + if (CheckOSError(DosBeep(freq, ms))) + croak_with_os2error("SysValues_set()"); } XSRETURN_YES; } @@ -3294,13 +3293,13 @@ { dXSARGS; if (items != 1) - Perl_croak_nocontext("Usage: OS2::MorphPM(serve)"); + Perl_croak_nocontext("Usage: OS2::MorphPM(serve)"); { - bool serve = SvOK(ST(0)); - unsigned long pmq = perl_hmq_GET(serve); - dXSTARG; + bool serve = SvOK(ST(0)); + unsigned long pmq = perl_hmq_GET(serve); + dXSTARG; - XSprePUSH; PUSHi((IV)pmq); + XSprePUSH; PUSHi((IV)pmq); } XSRETURN(1); } @@ -3309,11 +3308,11 @@ { dXSARGS; if (items != 1) - Perl_croak_nocontext("Usage: OS2::UnMorphPM(serve)"); + Perl_croak_nocontext("Usage: OS2::UnMorphPM(serve)"); { - bool serve = SvOK(ST(0)); + bool serve = SvOK(ST(0)); - perl_hmq_UNSET(serve); + perl_hmq_UNSET(serve); } XSRETURN(0); } @@ -3322,13 +3321,13 @@ { dXSARGS; if (items != 1) - Perl_croak_nocontext("Usage: OS2::Serve_Messages(force)"); + Perl_croak_nocontext("Usage: OS2::Serve_Messages(force)"); { - bool force = SvOK(ST(0)); - unsigned long cnt = Perl_Serve_Messages(force); - dXSTARG; + bool force = SvOK(ST(0)); + unsigned long cnt = Perl_Serve_Messages(force); + dXSTARG; - XSprePUSH; PUSHi((IV)cnt); + XSprePUSH; PUSHi((IV)cnt); } XSRETURN(1); } @@ -3337,26 +3336,26 @@ { dXSARGS; if (items < 1 || items > 2) - Perl_croak_nocontext("Usage: OS2::Process_Messages(force [, cnt])"); + Perl_croak_nocontext("Usage: OS2::Process_Messages(force [, cnt])"); { - bool force = SvOK(ST(0)); - unsigned long cnt; - dXSTARG; - - if (items == 2) { - I32 cntr; - SV *sv = ST(1); - - (void)SvIV(sv); /* Force SvIVX */ - if (!SvIOK(sv)) - Perl_croak_nocontext("Can't upgrade count to IV"); - cntr = SvIVX(sv); - cnt = Perl_Process_Messages(force, &cntr); - SvIVX(sv) = cntr; - } else { - cnt = Perl_Process_Messages(force, NULL); + bool force = SvOK(ST(0)); + unsigned long cnt; + dXSTARG; + + if (items == 2) { + I32 cntr; + SV *sv = ST(1); + + (void)SvIV(sv); /* Force SvIVX */ + if (!SvIOK(sv)) + Perl_croak_nocontext("Can't upgrade count to IV"); + cntr = SvIVX(sv); + cnt = Perl_Process_Messages(force, &cntr); + SvIVX(sv) = cntr; + } else { + cnt = Perl_Process_Messages(force, NULL); } - XSprePUSH; PUSHi((IV)cnt); + XSprePUSH; PUSHi((IV)cnt); } XSRETURN(1); } @@ -3365,14 +3364,14 @@ { dXSARGS; if (items != 0) - Perl_croak_nocontext("Usage: Cwd::current_drive()"); + Perl_croak_nocontext("Usage: Cwd::current_drive()"); { - char RETVAL; - dXSTARG; + char RETVAL; + dXSTARG; - RETVAL = current_drive(); - sv_setpvn(TARG, (char *)&RETVAL, 1); - XSprePUSH; PUSHTARG; + RETVAL = current_drive(); + sv_setpvn(TARG, (char *)&RETVAL, 1); + XSprePUSH; PUSHTARG; } XSRETURN(1); } @@ -3381,15 +3380,15 @@ { dXSARGS; if (items != 1) - Perl_croak_nocontext("Usage: Cwd::sys_chdir(path)"); + Perl_croak_nocontext("Usage: Cwd::sys_chdir(path)"); { - STRLEN n_a; - char * path = (char *)SvPV(ST(0),n_a); - bool RETVAL; - - RETVAL = sys_chdir(path); - ST(0) = boolSV(RETVAL); - if (SvREFCNT(ST(0))) sv_2mortal(ST(0)); + STRLEN n_a; + char * path = (char *)SvPV(ST(0),n_a); + bool RETVAL; + + RETVAL = sys_chdir(path); + ST(0) = boolSV(RETVAL); + if (SvREFCNT(ST(0))) sv_2mortal(ST(0)); } XSRETURN(1); } @@ -3398,15 +3397,15 @@ { dXSARGS; if (items != 1) - Perl_croak_nocontext("Usage: Cwd::change_drive(d)"); + Perl_croak_nocontext("Usage: Cwd::change_drive(d)"); { - STRLEN n_a; - char d = (char)*SvPV(ST(0),n_a); - bool RETVAL; - - RETVAL = change_drive(d); - ST(0) = boolSV(RETVAL); - if (SvREFCNT(ST(0))) sv_2mortal(ST(0)); + STRLEN n_a; + char d = (char)*SvPV(ST(0),n_a); + bool RETVAL; + + RETVAL = change_drive(d); + ST(0) = boolSV(RETVAL); + if (SvREFCNT(ST(0))) sv_2mortal(ST(0)); } XSRETURN(1); } @@ -3415,15 +3414,15 @@ { dXSARGS; if (items != 1) - Perl_croak_nocontext("Usage: Cwd::sys_is_absolute(path)"); + Perl_croak_nocontext("Usage: Cwd::sys_is_absolute(path)"); { - STRLEN n_a; - char * path = (char *)SvPV(ST(0),n_a); - bool RETVAL; - - RETVAL = sys_is_absolute(path); - ST(0) = boolSV(RETVAL); - if (SvREFCNT(ST(0))) sv_2mortal(ST(0)); + STRLEN n_a; + char * path = (char *)SvPV(ST(0),n_a); + bool RETVAL; + + RETVAL = sys_is_absolute(path); + ST(0) = boolSV(RETVAL); + if (SvREFCNT(ST(0))) sv_2mortal(ST(0)); } XSRETURN(1); } @@ -3432,15 +3431,15 @@ { dXSARGS; if (items != 1) - Perl_croak_nocontext("Usage: Cwd::sys_is_rooted(path)"); + Perl_croak_nocontext("Usage: Cwd::sys_is_rooted(path)"); { - STRLEN n_a; - char * path = (char *)SvPV(ST(0),n_a); - bool RETVAL; - - RETVAL = sys_is_rooted(path); - ST(0) = boolSV(RETVAL); - if (SvREFCNT(ST(0))) sv_2mortal(ST(0)); + STRLEN n_a; + char * path = (char *)SvPV(ST(0),n_a); + bool RETVAL; + + RETVAL = sys_is_rooted(path); + ST(0) = boolSV(RETVAL); + if (SvREFCNT(ST(0))) sv_2mortal(ST(0)); } XSRETURN(1); } @@ -3449,15 +3448,15 @@ { dXSARGS; if (items != 1) - Perl_croak_nocontext("Usage: Cwd::sys_is_relative(path)"); + Perl_croak_nocontext("Usage: Cwd::sys_is_relative(path)"); { - STRLEN n_a; - char * path = (char *)SvPV(ST(0),n_a); - bool RETVAL; - - RETVAL = sys_is_relative(path); - ST(0) = boolSV(RETVAL); - if (SvREFCNT(ST(0))) sv_2mortal(ST(0)); + STRLEN n_a; + char * path = (char *)SvPV(ST(0),n_a); + bool RETVAL; + + RETVAL = sys_is_relative(path); + ST(0) = boolSV(RETVAL); + if (SvREFCNT(ST(0))) sv_2mortal(ST(0)); } XSRETURN(1); } @@ -3466,16 +3465,16 @@ { dXSARGS; if (items != 0) - Perl_croak_nocontext("Usage: Cwd::sys_cwd()"); + Perl_croak_nocontext("Usage: Cwd::sys_cwd()"); { - char p[MAXPATHLEN]; - char * RETVAL; + char p[MAXPATHLEN]; + char * RETVAL; - /* Can't use TARG, since tainting behaves differently */ - RETVAL = _getcwd2(p, MAXPATHLEN); - ST(0) = sv_newmortal(); - sv_setpv(ST(0), RETVAL); - SvTAINTED_on(ST(0)); + /* Can't use TARG, since tainting behaves differently */ + RETVAL = _getcwd2(p, MAXPATHLEN); + ST(0) = sv_newmortal(); + sv_setpv(ST(0), RETVAL); + SvTAINTED_on(ST(0)); } XSRETURN(1); } @@ -3484,131 +3483,131 @@ { dXSARGS; if (items > 2) - Perl_croak_nocontext("Usage: Cwd::sys_abspath(path = '.', dir = NULL)"); + Perl_croak_nocontext("Usage: Cwd::sys_abspath(path = '.', dir = NULL)"); { - STRLEN n_a; - char * path = items ? (char *)SvPV(ST(0),n_a) : "."; - char * dir, *s, *t, *e; - char p[MAXPATHLEN]; - char * RETVAL; - int l; - SV *sv; - - if (items < 2) - dir = NULL; - else { - dir = (char *)SvPV(ST(1),n_a); - } - if (path[0] == '.' && (path[1] == '/' || path[1] == '\\')) { - path += 2; - } - if (dir == NULL) { - if (_abspath(p, path, MAXPATHLEN) == 0) { - RETVAL = p; - } else { - RETVAL = NULL; - } - } else { - /* Absolute with drive: */ - if ( sys_is_absolute(path) ) { - if (_abspath(p, path, MAXPATHLEN) == 0) { - RETVAL = p; - } else { - RETVAL = NULL; - } - } else if (path[0] == '/' || path[0] == '\\') { - /* Rooted, but maybe on different drive. */ - if (isALPHA(dir[0]) && dir[1] == ':' ) { - char p1[MAXPATHLEN]; - - /* Need to prepend the drive. */ - p1[0] = dir[0]; - p1[1] = dir[1]; - Copy(path, p1 + 2, strlen(path) + 1, char); - RETVAL = p; - if (_abspath(p, p1, MAXPATHLEN) == 0) { - RETVAL = p; - } else { - RETVAL = NULL; - } - } else if (_abspath(p, path, MAXPATHLEN) == 0) { - RETVAL = p; - } else { - RETVAL = NULL; - } - } else { - /* Either path is relative, or starts with a drive letter. */ - /* If the path starts with a drive letter, then dir is - relevant only if - a/b) it is absolute/x:relative on the same drive. - c) path is on current drive, and dir is rooted - In all the cases it is safe to drop the drive part - of the path. */ - if ( !sys_is_relative(path) ) { - if ( ( ( sys_is_absolute(dir) - || (isALPHA(dir[0]) && dir[1] == ':' - && strnicmp(dir, path,1) == 0)) - && strnicmp(dir, path,1) == 0) - || ( !(isALPHA(dir[0]) && dir[1] == ':') - && toupper(path[0]) == current_drive())) { - path += 2; - } else if (_abspath(p, path, MAXPATHLEN) == 0) { - RETVAL = p; goto done; - } else { - RETVAL = NULL; goto done; - } - } - { - /* Need to prepend the absolute path of dir. */ - char p1[MAXPATHLEN]; - - if (_abspath(p1, dir, MAXPATHLEN) == 0) { - int l = strlen(p1); - - if (p1[ l - 1 ] != '/') { - p1[ l ] = '/'; - l++; - } - Copy(path, p1 + l, strlen(path) + 1, char); - if (_abspath(p, p1, MAXPATHLEN) == 0) { - RETVAL = p; - } else { - RETVAL = NULL; - } - } else { - RETVAL = NULL; - } - } - done: - } - } - if (!RETVAL) - XSRETURN_EMPTY; - /* Backslashes are already converted to slashes. */ - /* Remove trailing slashes */ - l = strlen(RETVAL); - while (l > 0 && RETVAL[l-1] == '/') - l--; - ST(0) = sv_newmortal(); - sv_setpvn( sv = (SV*)ST(0), RETVAL, l); - /* Remove duplicate slashes, skipping the first three, which - may be parts of a server-based path */ - s = t = 3 + SvPV_force(sv, n_a); - e = SvEND(sv); - /* Do not worry about multibyte chars here, this would contradict the - eventual UTFization, and currently most other places break too... */ - while (s < e) { - if (s[0] == t[-1] && s[0] == '/') - s++; /* Skip duplicate / */ - else - *t++ = *s++; - } - if (t < e) { - *t = 0; - SvCUR_set(sv, t - SvPVX(sv)); - } - if (!items) - SvTAINTED_on(ST(0)); + STRLEN n_a; + char * path = items ? (char *)SvPV(ST(0),n_a) : "."; + char * dir, *s, *t, *e; + char p[MAXPATHLEN]; + char * RETVAL; + int l; + SV *sv; + + if (items < 2) + dir = NULL; + else { + dir = (char *)SvPV(ST(1),n_a); + } + if (path[0] == '.' && (path[1] == '/' || path[1] == '\\')) { + path += 2; + } + if (dir == NULL) { + if (_abspath(p, path, MAXPATHLEN) == 0) { + RETVAL = p; + } else { + RETVAL = NULL; + } + } else { + /* Absolute with drive: */ + if ( sys_is_absolute(path) ) { + if (_abspath(p, path, MAXPATHLEN) == 0) { + RETVAL = p; + } else { + RETVAL = NULL; + } + } else if (path[0] == '/' || path[0] == '\\') { + /* Rooted, but maybe on different drive. */ + if (isALPHA(dir[0]) && dir[1] == ':' ) { + char p1[MAXPATHLEN]; + + /* Need to prepend the drive. */ + p1[0] = dir[0]; + p1[1] = dir[1]; + Copy(path, p1 + 2, strlen(path) + 1, char); + RETVAL = p; + if (_abspath(p, p1, MAXPATHLEN) == 0) { + RETVAL = p; + } else { + RETVAL = NULL; + } + } else if (_abspath(p, path, MAXPATHLEN) == 0) { + RETVAL = p; + } else { + RETVAL = NULL; + } + } else { + /* Either path is relative, or starts with a drive letter. */ + /* If the path starts with a drive letter, then dir is + relevant only if + a/b) it is absolute/x:relative on the same drive. + c) path is on current drive, and dir is rooted + In all the cases it is safe to drop the drive part + of the path. */ + if ( !sys_is_relative(path) ) { + if ( ( ( sys_is_absolute(dir) + || (isALPHA(dir[0]) && dir[1] == ':' + && strnicmp(dir, path,1) == 0)) + && strnicmp(dir, path,1) == 0) + || ( !(isALPHA(dir[0]) && dir[1] == ':') + && toupper(path[0]) == current_drive())) { + path += 2; + } else if (_abspath(p, path, MAXPATHLEN) == 0) { + RETVAL = p; goto done; + } else { + RETVAL = NULL; goto done; + } + } + { + /* Need to prepend the absolute path of dir. */ + char p1[MAXPATHLEN]; + + if (_abspath(p1, dir, MAXPATHLEN) == 0) { + int l = strlen(p1); + + if (p1[ l - 1 ] != '/') { + p1[ l ] = '/'; + l++; + } + Copy(path, p1 + l, strlen(path) + 1, char); + if (_abspath(p, p1, MAXPATHLEN) == 0) { + RETVAL = p; + } else { + RETVAL = NULL; + } + } else { + RETVAL = NULL; + } + } + done: + } + } + if (!RETVAL) + XSRETURN_EMPTY; + /* Backslashes are already converted to slashes. */ + /* Remove trailing slashes */ + l = strlen(RETVAL); + while (l > 0 && RETVAL[l-1] == '/') + l--; + ST(0) = sv_newmortal(); + sv_setpvn( sv = (SV*)ST(0), RETVAL, l); + /* Remove duplicate slashes, skipping the first three, which + may be parts of a server-based path */ + s = t = 3 + SvPV_force(sv, n_a); + e = SvEND(sv); + /* Do not worry about multibyte chars here, this would contradict the + eventual UTFization, and currently most other places break too... */ + while (s < e) { + if (s[0] == t[-1] && s[0] == '/') + s++; /* Skip duplicate / */ + else + *t++ = *s++; + } + if (t < e) { + *t = 0; + SvCUR_set(sv, t - SvPVX(sv)); + } + if (!items) + SvTAINTED_on(ST(0)); } XSRETURN(1); } @@ -3626,13 +3625,13 @@ PFN f = loadByOrdinal(ord, fatal); /* if fatal: load or die! */ if (!f) /* Impossible with fatal */ - return Perl_rc; + return Perl_rc; if (type > 0) - what = END_LIBPATH; + what = END_LIBPATH; else if (type == 0) - what = BEGIN_LIBPATH; + what = BEGIN_LIBPATH; else - what = LIBPATHSTRICT; + what = LIBPATHSTRICT; return (*(PELP)f)(path, what); } @@ -3657,31 +3656,31 @@ { dXSARGS; if (items < 0 || items > 1) - Perl_croak_nocontext("Usage: OS2::extLibpath(type = 0)"); + Perl_croak_nocontext("Usage: OS2::extLibpath(type = 0)"); { - IV type; - char to[1024]; - U32 rc; - char * RETVAL; - dXSTARG; - STRLEN l; - - if (items < 1) - type = 0; - else { - type = SvIV(ST(0)); - } - - to[0] = 1; to[1] = 0; /* Sometimes no error reported */ - RETVAL = extLibpath(to, type, 1); /* Make errors fatal */ - if (RETVAL && RETVAL[0] == 1 && RETVAL[1] == 0) - Perl_croak_nocontext("panic OS2::extLibpath parameter"); - l = strlen(to); - if (l >= sizeof(to)) - early_error("Buffer overflow while getting BEGIN/ENDLIBPATH: `", - to, "'\r\n"); /* Will not return */ - sv_setpv(TARG, RETVAL); - XSprePUSH; PUSHTARG; + IV type; + char to[1024]; + U32 rc; + char * RETVAL; + dXSTARG; + STRLEN l; + + if (items < 1) + type = 0; + else { + type = SvIV(ST(0)); + } + + to[0] = 1; to[1] = 0; /* Sometimes no error reported */ + RETVAL = extLibpath(to, type, 1); /* Make errors fatal */ + if (RETVAL && RETVAL[0] == 1 && RETVAL[1] == 0) + Perl_croak_nocontext("panic OS2::extLibpath parameter"); + l = strlen(to); + if (l >= sizeof(to)) + early_error("Buffer overflow while getting BEGIN/ENDLIBPATH: `", + to, "'\r\n"); /* Will not return */ + sv_setpv(TARG, RETVAL); + XSprePUSH; PUSHTARG; } XSRETURN(1); } @@ -3690,23 +3689,23 @@ { dXSARGS; if (items < 1 || items > 2) - Perl_croak_nocontext("Usage: OS2::extLibpath_set(s, type = 0)"); + Perl_croak_nocontext("Usage: OS2::extLibpath_set(s, type = 0)"); { - STRLEN n_a; - char * s = (char *)SvPV(ST(0),n_a); - IV type; - U32 rc; - bool RETVAL; - - if (items < 2) - type = 0; - else { - type = SvIV(ST(1)); - } - - RETVAL = extLibpath_set(s, type, 1); /* Make errors fatal */ - ST(0) = boolSV(RETVAL); - if (SvREFCNT(ST(0))) sv_2mortal(ST(0)); + STRLEN n_a; + char * s = (char *)SvPV(ST(0),n_a); + IV type; + U32 rc; + bool RETVAL; + + if (items < 2) + type = 0; + else { + type = SvIV(ST(1)); + } + + RETVAL = extLibpath_set(s, type, 1); /* Make errors fatal */ + ST(0) = boolSV(RETVAL); + if (SvREFCNT(ST(0))) sv_2mortal(ST(0)); } XSRETURN(1); } @@ -3719,53 +3718,53 @@ ULONG rc; if (!pre && !post) - return 0; + return 0; if (pre) { - pre = dir_subst(pre, strlen(pre), buf1, sizeof buf1, dir_subst_pathlike, msg); - if (!pre) - return ERROR_INVALID_PARAMETER; - l = strlen(pre); - if (l >= sizeof(buf)/2) - return ERROR_BUFFER_OVERFLOW; - s = pre - 1; - while (*++s) - if (*s == '/') - *s = '\\'; /* Be extra cautious */ - memcpy(to, pre, l); - if (!l || to[l-1] != ';') - to[l++] = ';'; - to += l; + pre = dir_subst(pre, strlen(pre), buf1, sizeof buf1, dir_subst_pathlike, msg); + if (!pre) + return ERROR_INVALID_PARAMETER; + l = strlen(pre); + if (l >= sizeof(buf)/2) + return ERROR_BUFFER_OVERFLOW; + s = pre - 1; + while (*++s) + if (*s == '/') + *s = '\\'; /* Be extra cautious */ + memcpy(to, pre, l); + if (!l || to[l-1] != ';') + to[l++] = ';'; + to += l; } if (!replace) { to[0] = 1; to[1] = 0; /* Sometimes no error reported */ rc = ExtLIBPATH(ORD_DosQueryExtLibpath, to, type, 0); /* Do not croak */ if (rc) - return rc; + return rc; if (to[0] == 1 && to[1] == 0) - return ERROR_INVALID_PARAMETER; + return ERROR_INVALID_PARAMETER; to += strlen(to); if (buf + sizeof(buf) - 1 <= to) /* Buffer overflow */ - early_error("Buffer overflow while getting BEGIN/ENDLIBPATH: `", - buf, "'\r\n"); /* Will not return */ + early_error("Buffer overflow while getting BEGIN/ENDLIBPATH: `", + buf, "'\r\n"); /* Will not return */ if (to > buf && to[-1] != ';') - *to++ = ';'; + *to++ = ';'; } if (post) { - post = dir_subst(post, strlen(post), buf1, sizeof buf1, dir_subst_pathlike, msg); - if (!post) - return ERROR_INVALID_PARAMETER; - l = strlen(post); - if (l + to - buf >= sizeof(buf) - 1) - return ERROR_BUFFER_OVERFLOW; - s = post - 1; - while (*++s) - if (*s == '/') - *s = '\\'; /* Be extra cautious */ - memcpy(to, post, l); - if (!l || to[l-1] != ';') - to[l++] = ';'; - to += l; + post = dir_subst(post, strlen(post), buf1, sizeof buf1, dir_subst_pathlike, msg); + if (!post) + return ERROR_INVALID_PARAMETER; + l = strlen(post); + if (l + to - buf >= sizeof(buf) - 1) + return ERROR_BUFFER_OVERFLOW; + s = post - 1; + while (*++s) + if (*s == '/') + *s = '\\'; /* Be extra cautious */ + memcpy(to, post, l); + if (!l || to[l-1] != ';') + to[l++] = ';'; + to += l; } *to = 0; rc = ExtLIBPATH(ORD_DosSetExtLibpath, buf, type, 0); /* Do not croak */ @@ -3775,13 +3774,13 @@ /* Input: Address, BufLen APIRET APIENTRY DosQueryModFromEIP (HMODULE * hmod, ULONG * obj, ULONG BufLen, PCHAR Buf, - ULONG * Offset, ULONG Address); + ULONG * Offset, ULONG Address); */ DeclOSFuncByORD(APIRET, _DosQueryModFromEIP,ORD_DosQueryModFromEIP, - (HMODULE * hmod, ULONG * obj, ULONG BufLen, PCHAR Buf, - ULONG * Offset, ULONG Address), - (hmod, obj, BufLen, Buf, Offset, Address)) + (HMODULE * hmod, ULONG * obj, ULONG BufLen, PCHAR Buf, + ULONG * Offset, ULONG Address), + (hmod, obj, BufLen, Buf, Offset, Address)) static SV* module_name_at(void *pp, enum module_name_how how) @@ -3793,22 +3792,22 @@ ULONG obj, offset, rc, addr = (ULONG)pp; if (how & mod_name_HMODULE) { - if ((how & ~mod_name_HMODULE) == mod_name_shortname) - Perl_croak(aTHX_ "Can't get short module name from a handle"); - mod = (HMODULE)pp; - how &= ~mod_name_HMODULE; + if ((how & ~mod_name_HMODULE) == mod_name_shortname) + Perl_croak(aTHX_ "Can't get short module name from a handle"); + mod = (HMODULE)pp; + how &= ~mod_name_HMODULE; } else if (!_DosQueryModFromEIP(&mod, &obj, sizeof(buf), buf, &offset, addr)) - return &PL_sv_undef; + return &PL_sv_undef; if (how == mod_name_handle) - return newSVuv(mod); + return newSVuv(mod); /* Full name... */ if ( how != mod_name_shortname - && CheckOSError(DosQueryModuleName(mod, sizeof(buf), buf)) ) - return &PL_sv_undef; + && CheckOSError(DosQueryModuleName(mod, sizeof(buf), buf)) ) + return &PL_sv_undef; while (*p) { - if (*p == '\\') - *p = '/'; - p++; + if (*p == '\\') + *p = '/'; + p++; } return newSVpv(buf, 0); } @@ -3817,13 +3816,13 @@ module_name_of_cv(SV *cv, enum module_name_how how) { if (!cv || !SvROK(cv) || SvTYPE(SvRV(cv)) != SVt_PVCV || !CvXSUB(SvRV(cv))) { - dTHX; + dTHX; - if (how & mod_name_C_function) - return module_name_at((void*)SvIV(cv), how & ~mod_name_C_function); - else if (how & mod_name_HMODULE) - return module_name_at((void*)SvIV(cv), how); - Perl_croak(aTHX_ "Not an XSUB reference"); + if (how & mod_name_C_function) + return module_name_at((void*)SvIV(cv), how & ~mod_name_C_function); + else if (how & mod_name_HMODULE) + return module_name_at((void*)SvIV(cv), how); + Perl_croak(aTHX_ "Not an XSUB reference"); } return module_name_at(CvXSUB(SvRV(cv)), how); } @@ -3832,52 +3831,52 @@ { dXSARGS; if (items > 2) - Perl_croak(aTHX_ "Usage: OS2::DLLname( [ how, [\\&xsub] ] )"); + Perl_croak(aTHX_ "Usage: OS2::DLLname( [ how, [\\&xsub] ] )"); { - SV * RETVAL; - int how; + SV * RETVAL; + int how; - if (items < 1) - how = mod_name_full; - else { - how = (int)SvIV(ST(0)); - } - if (items < 2) - RETVAL = module_name(how); - else - RETVAL = module_name_of_cv(ST(1), how); - ST(0) = RETVAL; - sv_2mortal(ST(0)); + if (items < 1) + how = mod_name_full; + else { + how = (int)SvIV(ST(0)); + } + if (items < 2) + RETVAL = module_name(how); + else + RETVAL = module_name_of_cv(ST(1), how); + ST(0) = RETVAL; + sv_2mortal(ST(0)); } XSRETURN(1); } DeclOSFuncByORD(INT, _Dos32QueryHeaderInfo, ORD_Dos32QueryHeaderInfo, - (ULONG r1, ULONG r2, PVOID buf, ULONG szbuf, ULONG fnum), - (r1, r2, buf, szbuf, fnum)) + (ULONG r1, ULONG r2, PVOID buf, ULONG szbuf, ULONG fnum), + (r1, r2, buf, szbuf, fnum)) XS(XS_OS2__headerInfo) { dXSARGS; if (items > 4 || items < 2) - Perl_croak(aTHX_ "Usage: OS2::_headerInfo(req,size[,handle,[offset]])"); + Perl_croak(aTHX_ "Usage: OS2::_headerInfo(req,size[,handle,[offset]])"); { - ULONG req = (ULONG)SvIV(ST(0)); - STRLEN size = (STRLEN)SvIV(ST(1)), n_a; - ULONG handle = (items >= 3 ? (ULONG)SvIV(ST(2)) : 0); - ULONG offset = (items >= 4 ? (ULONG)SvIV(ST(3)) : 0); - - if (size <= 0) - Perl_croak(aTHX_ "OS2::_headerInfo(): unexpected size: %d", (int)size); - ST(0) = newSVpvs(""); - SvGROW(ST(0), size + 1); - sv_2mortal(ST(0)); - - if (!_Dos32QueryHeaderInfo(handle, offset, SvPV(ST(0), n_a), size, req)) - Perl_croak(aTHX_ "OS2::_headerInfo(%ld,%ld,%ld,%ld) error: %s", - req, size, handle, offset, os2error(Perl_rc)); - SvCUR_set(ST(0), size); - *SvEND(ST(0)) = 0; + ULONG req = (ULONG)SvIV(ST(0)); + STRLEN size = (STRLEN)SvIV(ST(1)), n_a; + ULONG handle = (items >= 3 ? (ULONG)SvIV(ST(2)) : 0); + ULONG offset = (items >= 4 ? (ULONG)SvIV(ST(3)) : 0); + + if (size <= 0) + Perl_croak(aTHX_ "OS2::_headerInfo(): unexpected size: %d", (int)size); + ST(0) = newSVpvs(""); + SvGROW(ST(0), size + 1); + sv_2mortal(ST(0)); + + if (!_Dos32QueryHeaderInfo(handle, offset, SvPV(ST(0), n_a), size, req)) + Perl_croak(aTHX_ "OS2::_headerInfo(%ld,%ld,%ld,%ld) error: %s", + req, size, handle, offset, os2error(Perl_rc)); + SvCUR_set(ST(0), size); + *SvEND(ST(0)) = 0; } XSRETURN(1); } @@ -3889,29 +3888,29 @@ { dXSARGS; if (items != 0) - Perl_croak(aTHX_ "Usage: OS2::libPath()"); + Perl_croak(aTHX_ "Usage: OS2::libPath()"); { - ULONG size; - STRLEN n_a; + ULONG size; + STRLEN n_a; - if (!_Dos32QueryHeaderInfo(0, 0, &size, sizeof(size), - DQHI_QUERYLIBPATHSIZE)) - Perl_croak(aTHX_ "OS2::_headerInfo(%ld,%ld,%ld,%ld) error: %s", - DQHI_QUERYLIBPATHSIZE, sizeof(size), 0, 0, - os2error(Perl_rc)); - ST(0) = newSVpvs(""); - SvGROW(ST(0), size + 1); - sv_2mortal(ST(0)); - - /* We should be careful: apparently, this entry point does not - pay attention to the size argument, so may overwrite - unrelated data! */ - if (!_Dos32QueryHeaderInfo(0, 0, SvPV(ST(0), n_a), size, - DQHI_QUERYLIBPATH)) - Perl_croak(aTHX_ "OS2::_headerInfo(%ld,%ld,%ld,%ld) error: %s", - DQHI_QUERYLIBPATH, size, 0, 0, os2error(Perl_rc)); - SvCUR_set(ST(0), size); - *SvEND(ST(0)) = 0; + if (!_Dos32QueryHeaderInfo(0, 0, &size, sizeof(size), + DQHI_QUERYLIBPATHSIZE)) + Perl_croak(aTHX_ "OS2::_headerInfo(%ld,%ld,%ld,%ld) error: %s", + DQHI_QUERYLIBPATHSIZE, sizeof(size), 0, 0, + os2error(Perl_rc)); + ST(0) = newSVpvs(""); + SvGROW(ST(0), size + 1); + sv_2mortal(ST(0)); + + /* We should be careful: apparently, this entry point does not + pay attention to the size argument, so may overwrite + unrelated data! */ + if (!_Dos32QueryHeaderInfo(0, 0, SvPV(ST(0), n_a), size, + DQHI_QUERYLIBPATH)) + Perl_croak(aTHX_ "OS2::_headerInfo(%ld,%ld,%ld,%ld) error: %s", + DQHI_QUERYLIBPATH, size, 0, 0, os2error(Perl_rc)); + SvCUR_set(ST(0), size); + *SvEND(ST(0)) = 0; } XSRETURN(1); } @@ -3923,15 +3922,15 @@ { dXSARGS; if (items != 2) - Perl_croak(aTHX_ "Usage: OS2::_control87(new,mask)"); + Perl_croak(aTHX_ "Usage: OS2::_control87(new,mask)"); { - unsigned new = (unsigned)SvIV(ST(0)); - unsigned mask = (unsigned)SvIV(ST(1)); - unsigned RETVAL; - dXSTARG; + unsigned new = (unsigned)SvIV(ST(0)); + unsigned mask = (unsigned)SvIV(ST(1)); + unsigned RETVAL; + dXSTARG; - RETVAL = _control87(new, mask); - XSprePUSH; PUSHi((IV)RETVAL); + RETVAL = _control87(new, mask); + XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } @@ -3942,30 +3941,30 @@ int which = 0; if (items < 0 || items > 1) - Perl_croak(aTHX_ "Usage: OS2::mytype([which])"); + Perl_croak(aTHX_ "Usage: OS2::mytype([which])"); if (items == 1) - which = (int)SvIV(ST(0)); + which = (int)SvIV(ST(0)); { - unsigned RETVAL; - dXSTARG; + unsigned RETVAL; + dXSTARG; - switch (which) { - case 0: - RETVAL = os2_mytype; /* Reset after fork */ - break; - case 1: - RETVAL = os2_mytype_ini; /* Before any fork */ - break; - case 2: - RETVAL = Perl_os2_initial_mode; /* Before first morphing */ - break; - case 3: - RETVAL = my_type(); /* Morphed type */ - break; - default: - Perl_croak(aTHX_ "OS2::mytype(which): unknown which=%d", which); - } - XSprePUSH; PUSHi((IV)RETVAL); + switch (which) { + case 0: + RETVAL = os2_mytype; /* Reset after fork */ + break; + case 1: + RETVAL = os2_mytype_ini; /* Before any fork */ + break; + case 2: + RETVAL = Perl_os2_initial_mode; /* Before first morphing */ + break; + case 3: + RETVAL = my_type(); /* Morphed type */ + break; + default: + Perl_croak(aTHX_ "OS2::mytype(which): unknown which=%d", which); + } + XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } @@ -3977,9 +3976,9 @@ int type; if (items == 1) - type = (int)SvIV(ST(0)); + type = (int)SvIV(ST(0)); else - Perl_croak(aTHX_ "Usage: OS2::mytype_set(type)"); + Perl_croak(aTHX_ "Usage: OS2::mytype_set(type)"); my_type_set(type); XSRETURN_YES; } @@ -3989,13 +3988,13 @@ { dXSARGS; if (items != 0) - Perl_croak(aTHX_ "Usage: OS2::get_control87()"); + Perl_croak(aTHX_ "Usage: OS2::get_control87()"); { - unsigned RETVAL; - dXSTARG; + unsigned RETVAL; + dXSTARG; - RETVAL = get_control87(); - XSprePUSH; PUSHi((IV)RETVAL); + RETVAL = get_control87(); + XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } @@ -4005,27 +4004,27 @@ { dXSARGS; if (items < 0 || items > 2) - Perl_croak(aTHX_ "Usage: OS2::set_control87(new=MCW_EM, mask=MCW_EM)"); + Perl_croak(aTHX_ "Usage: OS2::set_control87(new=MCW_EM, mask=MCW_EM)"); { - unsigned new; - unsigned mask; - unsigned RETVAL; - dXSTARG; - - if (items < 1) - new = MCW_EM; - else { - new = (unsigned)SvIV(ST(0)); - } - - if (items < 2) - mask = MCW_EM; - else { - mask = (unsigned)SvIV(ST(1)); - } + unsigned new; + unsigned mask; + unsigned RETVAL; + dXSTARG; + + if (items < 1) + new = MCW_EM; + else { + new = (unsigned)SvIV(ST(0)); + } - RETVAL = set_control87(new, mask); - XSprePUSH; PUSHi((IV)RETVAL); + if (items < 2) + mask = MCW_EM; + else { + mask = (unsigned)SvIV(ST(1)); + } + + RETVAL = set_control87(new, mask); + XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } @@ -4034,20 +4033,20 @@ { dXSARGS; if (items < 0 || items > 1) - Perl_croak(aTHX_ "Usage: OS2::incrMaxFHandles(delta = 0)"); + Perl_croak(aTHX_ "Usage: OS2::incrMaxFHandles(delta = 0)"); { - LONG delta; - ULONG RETVAL, rc; - dXSTARG; - - if (items < 1) - delta = 0; - else - delta = (LONG)SvIV(ST(0)); - - if (CheckOSError(DosSetRelMaxFH(&delta, &RETVAL))) - croak_with_os2error("OS2::incrMaxFHandles(): DosSetRelMaxFH() error"); - XSprePUSH; PUSHu((UV)RETVAL); + LONG delta; + ULONG RETVAL, rc; + dXSTARG; + + if (items < 1) + delta = 0; + else + delta = (LONG)SvIV(ST(0)); + + if (CheckOSError(DosSetRelMaxFH(&delta, &RETVAL))) + croak_with_os2error("OS2::incrMaxFHandles(): DosSetRelMaxFH() error"); + XSprePUSH; PUSHu((UV)RETVAL); } XSRETURN(1); } @@ -4062,24 +4061,24 @@ ULONG ret = ERROR_INTERRUPT, rc, flags; if (restore && wait) - os2cp_croak(DosQueryNPHState(hpipe, &oflags), "DosQueryNPHState()"); + os2cp_croak(DosQueryNPHState(hpipe, &oflags), "DosQueryNPHState()"); /* DosSetNPHState fails if more bits than NP_NOWAIT|NP_READMODE_MESSAGE */ oflags &= (NP_NOWAIT | NP_READMODE_MESSAGE); flags = (oflags & ~NP_NOWAIT) | (wait > 0 ? NP_WAIT : NP_NOWAIT); /* We know (o)flags unless wait == 0 && restore */ if (wait && (flags != oflags)) - os2cp_croak(DosSetNPHState(hpipe, flags), "DosSetNPHState()"); + os2cp_croak(DosSetNPHState(hpipe, flags), "DosSetNPHState()"); while (ret == ERROR_INTERRUPT) - ret = DosConnectNPipe(hpipe); + ret = DosConnectNPipe(hpipe); (void)CheckOSError(ret); if (restore && wait && (flags != oflags)) - os2cp_croak(DosSetNPHState(hpipe, oflags), "DosSetNPHState() back"); + os2cp_croak(DosSetNPHState(hpipe, oflags), "DosSetNPHState() back"); /* We know flags unless wait == 0 && restore */ if ( ((wait || restore) ? (flags & NP_NOWAIT) : 1) - && (ret == ERROR_PIPE_NOT_CONNECTED) ) - return 0; /* normal return value */ + && (ret == ERROR_PIPE_NOT_CONNECTED) ) + return 0; /* normal return value */ if (ret == NO_ERROR) - return 1; + return 1; croak_with_os2error("DosConnectNPipe()"); } @@ -4087,196 +4086,196 @@ NO_OUTPUT ULONG DosCreateNPipe(PCSZ pszName, OUTLIST HPIPE hpipe, ULONG ulOpenMode, int connect = 1, int count = 1, ULONG ulInbufLength = 8192, ULONG ulOutbufLength = ulInbufLength, ULONG ulPipeMode = count | NP_NOWAIT | NP_TYPE_BYTE | NP_READMODE_BYTE, ULONG ulTimeout = 0) PREINIT: - ULONG rc; + ULONG rc; C_ARGS: - pszName, &hpipe, ulOpenMode, ulPipeMode, ulInbufLength, ulOutbufLength, ulTimeout + pszName, &hpipe, ulOpenMode, ulPipeMode, ulInbufLength, ulOutbufLength, ulTimeout POSTCALL: - if (CheckOSError(RETVAL)) - croak_with_os2error("OS2::mkpipe() error"); + if (CheckOSError(RETVAL)) + croak_with_os2error("OS2::mkpipe() error"); */ XS(XS_OS2_pipe); /* prototype to pass -Wmissing-prototypes */ XS(XS_OS2_pipe) { dXSARGS; if (items < 2 || items > 8) - Perl_croak(aTHX_ "Usage: OS2::pipe(pszName, ulOpenMode, connect= 1, count= 1, ulInbufLength= 8192, ulOutbufLength= ulInbufLength, ulPipeMode= count | NP_NOWAIT | NP_TYPE_BYTE | NP_READMODE_BYTE, ulTimeout= 0)"); + Perl_croak(aTHX_ "Usage: OS2::pipe(pszName, ulOpenMode, connect= 1, count= 1, ulInbufLength= 8192, ulOutbufLength= ulInbufLength, ulPipeMode= count | NP_NOWAIT | NP_TYPE_BYTE | NP_READMODE_BYTE, ulTimeout= 0)"); { - ULONG RETVAL; - PCSZ pszName = ( SvOK(ST(0)) ? (PCSZ)SvPV_nolen(ST(0)) : NULL ); - HPIPE hpipe; - SV *OpenMode = ST(1); - ULONG ulOpenMode; - int connect = 0, count, message_r = 0, message = 0, b = 0; - ULONG ulInbufLength, ulOutbufLength, ulPipeMode, ulTimeout, rc; - STRLEN len; - char *s, buf[10], *s1, *perltype = NULL; - PerlIO *perlio; - double timeout; - - if (!pszName || !*pszName) - Perl_croak(aTHX_ "OS2::pipe(): empty pipe name"); - s = SvPV(OpenMode, len); - if (memEQs(s, len, "wait")) { /* DosWaitNPipe() */ - ULONG ms = 0xFFFFFFFF, ret = ERROR_INTERRUPT; /* Indefinite */ - - if (items == 3) { - timeout = (double)SvNV(ST(2)); - ms = timeout * 1000; - if (timeout < 0) - ms = 0xFFFFFFFF; /* Indefinite */ - else if (timeout && !ms) - ms = 1; - } else if (items > 3) - Perl_croak(aTHX_ "OS2::pipe(): too many arguments for wait-for-connect: %ld", (long)items); - - while (ret == ERROR_INTERRUPT) - ret = DosWaitNPipe(pszName, ms); /* XXXX Update ms? */ - os2cp_croak(ret, "DosWaitNPipe()"); - XSRETURN_YES; - } - if (memEQs(s, len, "call")) { /* DosCallNPipe() */ - ULONG ms = 0xFFFFFFFF, got; /* Indefinite */ - STRLEN l; - char *s; - char buf[8192]; - STRLEN ll = sizeof(buf); - char *b = buf; - - if (items < 3 || items > 5) - Perl_croak(aTHX_ "usage: OS2::pipe(pszName, 'call', write [, timeout= 0xFFFFFFFF, buffsize = 8192])"); - s = SvPV(ST(2), l); - if (items >= 4) { - timeout = (double)SvNV(ST(3)); - ms = timeout * 1000; - if (timeout < 0) - ms = 0xFFFFFFFF; /* Indefinite */ - else if (timeout && !ms) - ms = 1; - } - if (items >= 5) { - STRLEN lll = SvUV(ST(4)); - SV *sv = NEWSV(914, lll); - - sv_2mortal(sv); - ll = lll; - b = SvPVX(sv); - } - - os2cp_croak(DosCallNPipe(pszName, s, l, b, ll, &got, ms), - "DosCallNPipe()"); - XSRETURN_PVN(b, got); - } - s1 = buf; - if (len && len <= 3 && !(*s >= '0' && *s <= '9')) { - int r, w, R, W; - - r = strchr(s, 'r') != 0; - w = strchr(s, 'w') != 0; - R = strchr(s, 'R') != 0; - W = strchr(s, 'W') != 0; - b = strchr(s, 'b') != 0; - if (r + w + R + W + b != len || (r && R) || (w && W)) - Perl_croak(aTHX_ "OS2::pipe(): unknown OpenMode argument: `%s'", s); - if ((r || R) && (w || W)) - ulOpenMode = NP_INHERIT | NP_NOWRITEBEHIND | NP_ACCESS_DUPLEX; - else if (r || R) - ulOpenMode = NP_INHERIT | NP_NOWRITEBEHIND | NP_ACCESS_INBOUND; - else - ulOpenMode = NP_INHERIT | NP_NOWRITEBEHIND | NP_ACCESS_OUTBOUND; - if (R) - message = message_r = 1; - if (W) - message = 1; - else if (w && R) - Perl_croak(aTHX_ "OS2::pipe(): can't have message read mode for non-message pipes"); - } else - ulOpenMode = (ULONG)SvUV(OpenMode); /* ST(1) */ - - if ( (ulOpenMode & 0x3) == NP_ACCESS_DUPLEX - || (ulOpenMode & 0x3) == NP_ACCESS_INBOUND ) - *s1++ = 'r'; - if ( (ulOpenMode & 0x3) == NP_ACCESS_DUPLEX ) - *s1++ = '+'; - if ( (ulOpenMode & 0x3) == NP_ACCESS_OUTBOUND ) - *s1++ = 'w'; - if (b) - *s1++ = 'b'; - *s1 = 0; - if ( (ulOpenMode & 0x3) == NP_ACCESS_DUPLEX ) - perltype = "+<&"; - else if ( (ulOpenMode & 0x3) == NP_ACCESS_OUTBOUND ) - perltype = ">&"; - else - perltype = "<&"; - - if (items < 3) - connect = -1; /* no wait */ - else if (SvTRUE(ST(2))) { - s = SvPV(ST(2), len); - if (memEQs(s, len, "nowait")) - connect = -1; /* no wait */ - else if (memEQs(s, len, "wait")) - connect = 1; /* wait */ - else - Perl_croak(aTHX_ "OS2::pipe(): unknown connect argument: `%s'", s); - } - - if (items < 4) - count = 1; - else - count = (int)SvIV(ST(3)); - - if (items < 5) - ulInbufLength = 8192; - else - ulInbufLength = (ULONG)SvUV(ST(4)); - - if (items < 6) - ulOutbufLength = ulInbufLength; - else - ulOutbufLength = (ULONG)SvUV(ST(5)); - - if (count < -1 || count == 0 || count >= 255) - Perl_croak(aTHX_ "OS2::pipe(): count should be -1 or between 1 and 254: %ld", (long)count); - if (count < 0 ) - count = 255; /* Unlimited */ - - ulPipeMode = count; - if (items < 7) - ulPipeMode |= (NP_WAIT - | (message ? NP_TYPE_MESSAGE : NP_TYPE_BYTE) - | (message_r ? NP_READMODE_MESSAGE : NP_READMODE_BYTE)); - else - ulPipeMode |= (ULONG)SvUV(ST(6)); - - if (items < 8) - timeout = 0; - else - timeout = (double)SvNV(ST(7)); - ulTimeout = timeout * 1000; - if (timeout < 0) - ulTimeout = 0xFFFFFFFF; /* Indefinite */ - else if (timeout && !ulTimeout) - ulTimeout = 1; - - RETVAL = DosCreateNPipe(pszName, &hpipe, ulOpenMode, ulPipeMode, ulInbufLength, ulOutbufLength, ulTimeout); - if (CheckOSError(RETVAL)) - croak_with_os2error("OS2::pipe(): DosCreateNPipe() error"); - - if (connect) - connectNPipe(hpipe, connect, 1, 0); /* XXXX wait, retval */ - hpipe = __imphandle(hpipe); - - perlio = PerlIO_fdopen(hpipe, buf); - ST(0) = sv_newmortal(); - { - GV *gv = (GV *)sv_newmortal(); - gv_init_pvn(gv, gv_stashpvs("OS2::pipe",1),"__ANONIO__",10,0); - if ( do_open6(gv, perltype, strlen(perltype), perlio, NULL, 0) ) - sv_setsv(ST(0), sv_bless(newRV((SV*)gv), gv_stashpv("IO::Handle",1))); - else - ST(0) = &PL_sv_undef; - } + ULONG RETVAL; + PCSZ pszName = ( SvOK(ST(0)) ? (PCSZ)SvPV_nolen(ST(0)) : NULL ); + HPIPE hpipe; + SV *OpenMode = ST(1); + ULONG ulOpenMode; + int connect = 0, count, message_r = 0, message = 0, b = 0; + ULONG ulInbufLength, ulOutbufLength, ulPipeMode, ulTimeout, rc; + STRLEN len; + char *s, buf[10], *s1, *perltype = NULL; + PerlIO *perlio; + double timeout; + + if (!pszName || !*pszName) + Perl_croak(aTHX_ "OS2::pipe(): empty pipe name"); + s = SvPV(OpenMode, len); + if (memEQs(s, len, "wait")) { /* DosWaitNPipe() */ + ULONG ms = 0xFFFFFFFF, ret = ERROR_INTERRUPT; /* Indefinite */ + + if (items == 3) { + timeout = (double)SvNV(ST(2)); + ms = timeout * 1000; + if (timeout < 0) + ms = 0xFFFFFFFF; /* Indefinite */ + else if (timeout && !ms) + ms = 1; + } else if (items > 3) + Perl_croak(aTHX_ "OS2::pipe(): too many arguments for wait-for-connect: %ld", (long)items); + + while (ret == ERROR_INTERRUPT) + ret = DosWaitNPipe(pszName, ms); /* XXXX Update ms? */ + os2cp_croak(ret, "DosWaitNPipe()"); + XSRETURN_YES; + } + if (memEQs(s, len, "call")) { /* DosCallNPipe() */ + ULONG ms = 0xFFFFFFFF, got; /* Indefinite */ + STRLEN l; + char *s; + char buf[8192]; + STRLEN ll = sizeof(buf); + char *b = buf; + + if (items < 3 || items > 5) + Perl_croak(aTHX_ "usage: OS2::pipe(pszName, 'call', write [, timeout= 0xFFFFFFFF, buffsize = 8192])"); + s = SvPV(ST(2), l); + if (items >= 4) { + timeout = (double)SvNV(ST(3)); + ms = timeout * 1000; + if (timeout < 0) + ms = 0xFFFFFFFF; /* Indefinite */ + else if (timeout && !ms) + ms = 1; + } + if (items >= 5) { + STRLEN lll = SvUV(ST(4)); + SV *sv = NEWSV(914, lll); + + sv_2mortal(sv); + ll = lll; + b = SvPVX(sv); + } + + os2cp_croak(DosCallNPipe(pszName, s, l, b, ll, &got, ms), + "DosCallNPipe()"); + XSRETURN_PVN(b, got); + } + s1 = buf; + if (len && len <= 3 && !(*s >= '0' && *s <= '9')) { + int r, w, R, W; + + r = strchr(s, 'r') != 0; + w = strchr(s, 'w') != 0; + R = strchr(s, 'R') != 0; + W = strchr(s, 'W') != 0; + b = strchr(s, 'b') != 0; + if (r + w + R + W + b != len || (r && R) || (w && W)) + Perl_croak(aTHX_ "OS2::pipe(): unknown OpenMode argument: `%s'", s); + if ((r || R) && (w || W)) + ulOpenMode = NP_INHERIT | NP_NOWRITEBEHIND | NP_ACCESS_DUPLEX; + else if (r || R) + ulOpenMode = NP_INHERIT | NP_NOWRITEBEHIND | NP_ACCESS_INBOUND; + else + ulOpenMode = NP_INHERIT | NP_NOWRITEBEHIND | NP_ACCESS_OUTBOUND; + if (R) + message = message_r = 1; + if (W) + message = 1; + else if (w && R) + Perl_croak(aTHX_ "OS2::pipe(): can't have message read mode for non-message pipes"); + } else + ulOpenMode = (ULONG)SvUV(OpenMode); /* ST(1) */ + + if ( (ulOpenMode & 0x3) == NP_ACCESS_DUPLEX + || (ulOpenMode & 0x3) == NP_ACCESS_INBOUND ) + *s1++ = 'r'; + if ( (ulOpenMode & 0x3) == NP_ACCESS_DUPLEX ) + *s1++ = '+'; + if ( (ulOpenMode & 0x3) == NP_ACCESS_OUTBOUND ) + *s1++ = 'w'; + if (b) + *s1++ = 'b'; + *s1 = 0; + if ( (ulOpenMode & 0x3) == NP_ACCESS_DUPLEX ) + perltype = "+<&"; + else if ( (ulOpenMode & 0x3) == NP_ACCESS_OUTBOUND ) + perltype = ">&"; + else + perltype = "<&"; + + if (items < 3) + connect = -1; /* no wait */ + else if (SvTRUE(ST(2))) { + s = SvPV(ST(2), len); + if (memEQs(s, len, "nowait")) + connect = -1; /* no wait */ + else if (memEQs(s, len, "wait")) + connect = 1; /* wait */ + else + Perl_croak(aTHX_ "OS2::pipe(): unknown connect argument: `%s'", s); + } + + if (items < 4) + count = 1; + else + count = (int)SvIV(ST(3)); + + if (items < 5) + ulInbufLength = 8192; + else + ulInbufLength = (ULONG)SvUV(ST(4)); + + if (items < 6) + ulOutbufLength = ulInbufLength; + else + ulOutbufLength = (ULONG)SvUV(ST(5)); + + if (count < -1 || count == 0 || count >= 255) + Perl_croak(aTHX_ "OS2::pipe(): count should be -1 or between 1 and 254: %ld", (long)count); + if (count < 0 ) + count = 255; /* Unlimited */ + + ulPipeMode = count; + if (items < 7) + ulPipeMode |= (NP_WAIT + | (message ? NP_TYPE_MESSAGE : NP_TYPE_BYTE) + | (message_r ? NP_READMODE_MESSAGE : NP_READMODE_BYTE)); + else + ulPipeMode |= (ULONG)SvUV(ST(6)); + + if (items < 8) + timeout = 0; + else + timeout = (double)SvNV(ST(7)); + ulTimeout = timeout * 1000; + if (timeout < 0) + ulTimeout = 0xFFFFFFFF; /* Indefinite */ + else if (timeout && !ulTimeout) + ulTimeout = 1; + + RETVAL = DosCreateNPipe(pszName, &hpipe, ulOpenMode, ulPipeMode, ulInbufLength, ulOutbufLength, ulTimeout); + if (CheckOSError(RETVAL)) + croak_with_os2error("OS2::pipe(): DosCreateNPipe() error"); + + if (connect) + connectNPipe(hpipe, connect, 1, 0); /* XXXX wait, retval */ + hpipe = __imphandle(hpipe); + + perlio = PerlIO_fdopen(hpipe, buf); + ST(0) = sv_newmortal(); + { + GV *gv = (GV *)sv_newmortal(); + gv_init_pvn(gv, gv_stashpvs("OS2::pipe",1),"__ANONIO__",10,0); + if ( do_open6(gv, perltype, strlen(perltype), perlio, NULL, 0) ) + sv_setsv(ST(0), sv_bless(newRV((SV*)gv), gv_stashpv("IO::Handle",1))); + else + ST(0) = &PL_sv_undef; + } } XSRETURN(1); } @@ -4286,155 +4285,155 @@ { dXSARGS; if (items < 2 || items > 3) - Perl_croak(aTHX_ "Usage: OS2::pipeCntl(pipe, op [, wait])"); + Perl_croak(aTHX_ "Usage: OS2::pipeCntl(pipe, op [, wait])"); { - ULONG rc; - PerlIO *perlio = IoIFP(sv_2io(ST(0))); - IV fn = PerlIO_fileno(perlio); - HPIPE hpipe = (HPIPE)fn; - STRLEN len; - char *s = SvPV(ST(1), len); - int wait = 0, disconnect = 0, connect = 0, message = -1, query = 0; - int peek = 0, state = 0, info = 0; - - if (fn < 0) - Perl_croak(aTHX_ "OS2::pipeCntl(): not a pipe"); - if (items == 3) - wait = (SvTRUE(ST(2)) ? 1 : -1); - - switch (len) { - case 4: - if (strEQ(s, "byte")) - message = 0; - else if (strEQ(s, "peek")) - peek = 1; - else if (strEQ(s, "info")) - info = 1; - else - goto unknown; - break; - case 5: - if (strEQ(s, "reset")) - disconnect = connect = 1; - else if (strEQ(s, "state")) - query = 1; - else - goto unknown; - break; - case 7: - if (strEQ(s, "connect")) - connect = 1; - else if (strEQ(s, "message")) - message = 1; - else - goto unknown; - break; - case 9: - if (!strEQ(s, "readstate")) - goto unknown; - state = 1; - break; - case 10: - if (!strEQ(s, "disconnect")) - goto unknown; - disconnect = 1; - break; - default: - unknown: - Perl_croak(aTHX_ "OS2::pipeCntl(): unknown argument: `%s'", s); - break; - } - - if (items == 3 && !connect) - Perl_croak(aTHX_ "OS2::pipeCntl(): no wait argument for `%s'", s); - - XSprePUSH; /* Do not need arguments any more */ - if (disconnect) { - os2cp_croak(DosDisConnectNPipe(hpipe), "OS2::pipeCntl(): DosDisConnectNPipe()"); - PerlIO_clearerr(perlio); - } - if (connect) { - if (!connectNPipe(hpipe, wait , 1, 0)) - XSRETURN_IV(-1); - } - if (query) { - ULONG flags; - - os2cp_croak(DosQueryNPHState(hpipe, &flags), "DosQueryNPHState()"); - XSRETURN_UV(flags); - } - if (peek || state || info) { - ULONG BytesRead, PipeState; - AVAILDATA BytesAvail; - - os2cp_croak( DosPeekNPipe(hpipe, NULL, 0, &BytesRead, &BytesAvail, - &PipeState), "DosPeekNPipe() for state"); - if (state) { - EXTEND(SP, 3); - mPUSHu(PipeState); - /* Bytes (available/in-message) */ - mPUSHi(BytesAvail.cbpipe); - mPUSHi(BytesAvail.cbmessage); - XSRETURN(3); - } else if (info) { - /* L S S C C C/Z* - ID of the (remote) computer - buffers (out/in) - instances (max/actual) - */ - struct pipe_info_t { - ULONG id; /* char id[4]; */ - PIPEINFO pInfo; - char buf[512]; - } b; - int size; - - os2cp_croak( DosQueryNPipeInfo(hpipe, 1, &b.pInfo, sizeof(b) - STRUCT_OFFSET(struct pipe_info_t, pInfo)), - "DosQueryNPipeInfo(1)"); - os2cp_croak( DosQueryNPipeInfo(hpipe, 2, &b.id, sizeof(b.id)), - "DosQueryNPipeInfo(2)"); - size = b.pInfo.cbName; - /* Trailing 0 is included in cbName - undocumented; so - one should always extract with Z* */ - if (size) /* name length 254 or less */ - size--; - else - size = strlen(b.pInfo.szName); - EXTEND(SP, 6); - mPUSHp(b.pInfo.szName, size); - mPUSHu(b.id); - mPUSHi(b.pInfo.cbOut); - mPUSHi(b.pInfo.cbIn); - mPUSHi(b.pInfo.cbMaxInst); - mPUSHi(b.pInfo.cbCurInst); - XSRETURN(6); - } else if (BytesAvail.cbpipe == 0) { - XSRETURN_NO; - } else { - SV *tmp = NEWSV(914, BytesAvail.cbpipe); - char *s = SvPVX(tmp); - - sv_2mortal(tmp); - os2cp_croak( DosPeekNPipe(hpipe, s, BytesAvail.cbpipe, &BytesRead, - &BytesAvail, &PipeState), "DosPeekNPipe()"); - SvCUR_set(tmp, BytesRead); - *SvEND(tmp) = 0; - SvPOK_on(tmp); - XSprePUSH; PUSHs(tmp); - XSRETURN(1); - } - } - if (message > -1) { - ULONG oflags, flags; - - os2cp_croak(DosQueryNPHState(hpipe, &oflags), "DosQueryNPHState()"); - /* DosSetNPHState fails if more bits than NP_NOWAIT|NP_READMODE_MESSAGE */ - oflags &= (NP_NOWAIT | NP_READMODE_MESSAGE); - flags = (oflags & NP_NOWAIT) - | (message ? NP_READMODE_MESSAGE : NP_READMODE_BYTE); - if (flags != oflags) - os2cp_croak(DosSetNPHState(hpipe, flags), "DosSetNPHState()"); - } + ULONG rc; + PerlIO *perlio = IoIFP(sv_2io(ST(0))); + IV fn = PerlIO_fileno(perlio); + HPIPE hpipe = (HPIPE)fn; + STRLEN len; + char *s = SvPV(ST(1), len); + int wait = 0, disconnect = 0, connect = 0, message = -1, query = 0; + int peek = 0, state = 0, info = 0; + + if (fn < 0) + Perl_croak(aTHX_ "OS2::pipeCntl(): not a pipe"); + if (items == 3) + wait = (SvTRUE(ST(2)) ? 1 : -1); + + switch (len) { + case 4: + if (strEQ(s, "byte")) + message = 0; + else if (strEQ(s, "peek")) + peek = 1; + else if (strEQ(s, "info")) + info = 1; + else + goto unknown; + break; + case 5: + if (strEQ(s, "reset")) + disconnect = connect = 1; + else if (strEQ(s, "state")) + query = 1; + else + goto unknown; + break; + case 7: + if (strEQ(s, "connect")) + connect = 1; + else if (strEQ(s, "message")) + message = 1; + else + goto unknown; + break; + case 9: + if (!strEQ(s, "readstate")) + goto unknown; + state = 1; + break; + case 10: + if (!strEQ(s, "disconnect")) + goto unknown; + disconnect = 1; + break; + default: + unknown: + Perl_croak(aTHX_ "OS2::pipeCntl(): unknown argument: `%s'", s); + break; + } + + if (items == 3 && !connect) + Perl_croak(aTHX_ "OS2::pipeCntl(): no wait argument for `%s'", s); + + XSprePUSH; /* Do not need arguments any more */ + if (disconnect) { + os2cp_croak(DosDisConnectNPipe(hpipe), "OS2::pipeCntl(): DosDisConnectNPipe()"); + PerlIO_clearerr(perlio); + } + if (connect) { + if (!connectNPipe(hpipe, wait , 1, 0)) + XSRETURN_IV(-1); + } + if (query) { + ULONG flags; + + os2cp_croak(DosQueryNPHState(hpipe, &flags), "DosQueryNPHState()"); + XSRETURN_UV(flags); + } + if (peek || state || info) { + ULONG BytesRead, PipeState; + AVAILDATA BytesAvail; + + os2cp_croak( DosPeekNPipe(hpipe, NULL, 0, &BytesRead, &BytesAvail, + &PipeState), "DosPeekNPipe() for state"); + if (state) { + EXTEND(SP, 3); + mPUSHu(PipeState); + /* Bytes (available/in-message) */ + mPUSHi(BytesAvail.cbpipe); + mPUSHi(BytesAvail.cbmessage); + XSRETURN(3); + } else if (info) { + /* L S S C C C/Z* + ID of the (remote) computer + buffers (out/in) + instances (max/actual) + */ + struct pipe_info_t { + ULONG id; /* char id[4]; */ + PIPEINFO pInfo; + char buf[512]; + } b; + int size; + + os2cp_croak( DosQueryNPipeInfo(hpipe, 1, &b.pInfo, sizeof(b) - STRUCT_OFFSET(struct pipe_info_t, pInfo)), + "DosQueryNPipeInfo(1)"); + os2cp_croak( DosQueryNPipeInfo(hpipe, 2, &b.id, sizeof(b.id)), + "DosQueryNPipeInfo(2)"); + size = b.pInfo.cbName; + /* Trailing 0 is included in cbName - undocumented; so + one should always extract with Z* */ + if (size) /* name length 254 or less */ + size--; + else + size = strlen(b.pInfo.szName); + EXTEND(SP, 6); + mPUSHp(b.pInfo.szName, size); + mPUSHu(b.id); + mPUSHi(b.pInfo.cbOut); + mPUSHi(b.pInfo.cbIn); + mPUSHi(b.pInfo.cbMaxInst); + mPUSHi(b.pInfo.cbCurInst); + XSRETURN(6); + } else if (BytesAvail.cbpipe == 0) { + XSRETURN_NO; + } else { + SV *tmp = NEWSV(914, BytesAvail.cbpipe); + char *s = SvPVX(tmp); + + sv_2mortal(tmp); + os2cp_croak( DosPeekNPipe(hpipe, s, BytesAvail.cbpipe, &BytesRead, + &BytesAvail, &PipeState), "DosPeekNPipe()"); + SvCUR_set(tmp, BytesRead); + *SvEND(tmp) = 0; + SvPOK_on(tmp); + XSprePUSH; PUSHs(tmp); + XSRETURN(1); + } + } + if (message > -1) { + ULONG oflags, flags; + + os2cp_croak(DosQueryNPHState(hpipe, &oflags), "DosQueryNPHState()"); + /* DosSetNPHState fails if more bits than NP_NOWAIT|NP_READMODE_MESSAGE */ + oflags &= (NP_NOWAIT | NP_READMODE_MESSAGE); + flags = (oflags & NP_NOWAIT) + | (message ? NP_READMODE_MESSAGE : NP_READMODE_BYTE); + if (flags != oflags) + os2cp_croak(DosSetNPHState(hpipe, flags), "DosSetNPHState()"); + } } XSRETURN_YES; } @@ -4443,65 +4442,65 @@ NO_OUTPUT ULONG DosOpen(PCSZ pszFileName, OUTLIST HFILE hFile, OUTLIST ULONG ulAction, ULONG ulOpenFlags, ULONG ulOpenMode = OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_FAIL_IF_NEW, ULONG ulAttribute = FILE_NORMAL, ULONG ulFileSize = 0, PEAOP2 pEABuf = NULL); PREINIT: - ULONG rc; + ULONG rc; C_ARGS: - pszFileName, &hFile, &ulAction, ulFileSize, ulAttribute, ulOpenFlags, ulOpenMode, pEABuf + pszFileName, &hFile, &ulAction, ulFileSize, ulAttribute, ulOpenFlags, ulOpenMode, pEABuf POSTCALL: - if (CheckOSError(RETVAL)) - croak_with_os2error("OS2::open() error"); + if (CheckOSError(RETVAL)) + croak_with_os2error("OS2::open() error"); */ XS(XS_OS2_open); /* prototype to pass -Wmissing-prototypes */ XS(XS_OS2_open) { dXSARGS; if (items < 2 || items > 6) - Perl_croak(aTHX_ "Usage: OS2::open(pszFileName, ulOpenMode, ulOpenFlags= OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_FAIL_IF_NEW, ulAttribute= FILE_NORMAL, ulFileSize= 0, pEABuf= NULL)"); + Perl_croak(aTHX_ "Usage: OS2::open(pszFileName, ulOpenMode, ulOpenFlags= OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_FAIL_IF_NEW, ulAttribute= FILE_NORMAL, ulFileSize= 0, pEABuf= NULL)"); { #line 39 "pipe.xs" - ULONG rc; + ULONG rc; #line 113 "pipe.c" - ULONG RETVAL; - PCSZ pszFileName = ( SvOK(ST(0)) ? (PCSZ)SvPV_nolen(ST(0)) : NULL ); - HFILE hFile; - ULONG ulAction; - ULONG ulOpenMode = (ULONG)SvUV(ST(1)); - ULONG ulOpenFlags; - ULONG ulAttribute; - ULONG ulFileSize; - PEAOP2 pEABuf; - - if (items < 3) - ulOpenFlags = OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_FAIL_IF_NEW; - else { - ulOpenFlags = (ULONG)SvUV(ST(2)); - } - - if (items < 4) - ulAttribute = FILE_NORMAL; - else { - ulAttribute = (ULONG)SvUV(ST(3)); - } - - if (items < 5) - ulFileSize = 0; - else { - ulFileSize = (ULONG)SvUV(ST(4)); - } - - if (items < 6) - pEABuf = NULL; - else { - pEABuf = (PEAOP2)SvUV(ST(5)); - } - - RETVAL = DosOpen(pszFileName, &hFile, &ulAction, ulFileSize, ulAttribute, ulOpenFlags, ulOpenMode, pEABuf); - if (CheckOSError(RETVAL)) - croak_with_os2error("OS2::open() error"); - XSprePUSH; EXTEND(SP,2); - PUSHs(sv_newmortal()); - sv_setuv(ST(0), (UV)hFile); - PUSHs(sv_newmortal()); - sv_setuv(ST(1), (UV)ulAction); + ULONG RETVAL; + PCSZ pszFileName = ( SvOK(ST(0)) ? (PCSZ)SvPV_nolen(ST(0)) : NULL ); + HFILE hFile; + ULONG ulAction; + ULONG ulOpenMode = (ULONG)SvUV(ST(1)); + ULONG ulOpenFlags; + ULONG ulAttribute; + ULONG ulFileSize; + PEAOP2 pEABuf; + + if (items < 3) + ulOpenFlags = OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_FAIL_IF_NEW; + else { + ulOpenFlags = (ULONG)SvUV(ST(2)); + } + + if (items < 4) + ulAttribute = FILE_NORMAL; + else { + ulAttribute = (ULONG)SvUV(ST(3)); + } + + if (items < 5) + ulFileSize = 0; + else { + ulFileSize = (ULONG)SvUV(ST(4)); + } + + if (items < 6) + pEABuf = NULL; + else { + pEABuf = (PEAOP2)SvUV(ST(5)); + } + + RETVAL = DosOpen(pszFileName, &hFile, &ulAction, ulFileSize, ulAttribute, ulOpenFlags, ulOpenMode, pEABuf); + if (CheckOSError(RETVAL)) + croak_with_os2error("OS2::open() error"); + XSprePUSH; EXTEND(SP,2); + PUSHs(sv_newmortal()); + sv_setuv(ST(0), (UV)hFile); + PUSHs(sv_newmortal()); + sv_setuv(ST(1), (UV)ulAction); } XSRETURN(2); } @@ -4511,15 +4510,15 @@ { char *file = __FILE__; { - GV *gv; + GV *gv; - if (_emx_env & 0x200) { /* OS/2 */ + if (_emx_env & 0x200) { /* OS/2 */ newXS("File::Copy::syscopy", XS_File__Copy_syscopy, file); newXS("Cwd::extLibpath", XS_Cwd_extLibpath, file); newXS("Cwd::extLibpath_set", XS_Cwd_extLibpath_set, file); newXS("OS2::extLibpath", XS_Cwd_extLibpath, file); newXS("OS2::extLibpath_set", XS_Cwd_extLibpath_set, file); - } + } newXS("OS2::Error", XS_OS2_Error, file); newXS("OS2::Errors2Drive", XS_OS2_Errors2Drive, file); newXS("OS2::SysInfo", XS_OS2_SysInfo, file); @@ -4560,33 +4559,33 @@ newXSproto("OS2::pipe", XS_OS2_pipe, file, "$$;$$$$$$"); newXSproto("OS2::pipeCntl", XS_OS2_pipeCntl, file, "$$;$"); newXSproto("OS2::open", XS_OS2_open, file, "$$;$$$$"); - gv = gv_fetchpv("OS2::is_aout", TRUE, SVt_PV); - GvMULTI_on(gv); + gv = gv_fetchpv("OS2::is_aout", TRUE, SVt_PV); + GvMULTI_on(gv); #ifdef PERL_IS_AOUT - sv_setiv(GvSV(gv), 1); + sv_setiv(GvSV(gv), 1); #endif - gv = gv_fetchpv("OS2::is_static", TRUE, SVt_PV); - GvMULTI_on(gv); + gv = gv_fetchpv("OS2::is_static", TRUE, SVt_PV); + GvMULTI_on(gv); #ifdef PERL_IS_AOUT - sv_setiv(GvSV(gv), 1); + sv_setiv(GvSV(gv), 1); #endif - gv = gv_fetchpv("OS2::can_fork", TRUE, SVt_PV); - GvMULTI_on(gv); - sv_setiv(GvSV(gv), exe_is_aout()); - gv = gv_fetchpv("OS2::emx_rev", TRUE, SVt_PV); - GvMULTI_on(gv); - sv_setiv(GvSV(gv), _emx_rev); - sv_setpv(GvSV(gv), _emx_vprt); - SvIOK_on(GvSV(gv)); - gv = gv_fetchpv("OS2::emx_env", TRUE, SVt_PV); - GvMULTI_on(gv); - sv_setiv(GvSV(gv), _emx_env); - gv = gv_fetchpv("OS2::os_ver", TRUE, SVt_PV); - GvMULTI_on(gv); - sv_setnv(GvSV(gv), _osmajor + 0.001 * _osminor); - gv = gv_fetchpv("OS2::nsyserror", TRUE, SVt_PV); - GvMULTI_on(gv); - sv_setiv(GvSV(gv), 1); /* DEFAULT: Show number on syserror */ + gv = gv_fetchpv("OS2::can_fork", TRUE, SVt_PV); + GvMULTI_on(gv); + sv_setiv(GvSV(gv), exe_is_aout()); + gv = gv_fetchpv("OS2::emx_rev", TRUE, SVt_PV); + GvMULTI_on(gv); + sv_setiv(GvSV(gv), _emx_rev); + sv_setpv(GvSV(gv), _emx_vprt); + SvIOK_on(GvSV(gv)); + gv = gv_fetchpv("OS2::emx_env", TRUE, SVt_PV); + GvMULTI_on(gv); + sv_setiv(GvSV(gv), _emx_env); + gv = gv_fetchpv("OS2::os_ver", TRUE, SVt_PV); + GvMULTI_on(gv); + sv_setnv(GvSV(gv), _osmajor + 0.001 * _osminor); + gv = gv_fetchpv("OS2::nsyserror", TRUE, SVt_PV); + GvMULTI_on(gv); + sv_setiv(GvSV(gv), 1); /* DEFAULT: Show number on syserror */ } return 0; } @@ -4605,13 +4604,13 @@ /* Can't just call emx_init(), since it moves the stack pointer */ /* It also busts a lot of registers, so be extra careful */ __asm__( "pushf\n" - "pusha\n" - "movl %%esp, %1\n" - "push %0\n" - "call __emx_init\n" - "movl %1, %%esp\n" - "popa\n" - "popf\n" : : "r" (layout), "m" (old_esp) ); + "pusha\n" + "movl %%esp, %1\n" + "push %0\n" + "call __emx_init\n" + "movl %1, %%esp\n" + "popa\n" + "popf\n" : : "r" (layout), "m" (old_esp) ); } struct layout_table_t { @@ -4640,11 +4639,11 @@ /* Can't just call __os_version(), since it does not follow C calling convention: it busts a lot of registers, so be extra careful */ __asm__( "pushf\n" - "pusha\n" - "call ___os_version\n" - "movl %%eax, %0\n" - "popa\n" - "popf\n" : "=m" (osv_res) ); + "pusha\n" + "call ___os_version\n" + "movl %%eax, %0\n" + "popa\n" + "popf\n" : "=m" (osv_res) ); return osv_res; } @@ -4662,9 +4661,9 @@ char buf[512]; static struct layout_table_t layout_table; struct { - char buf[48*1024]; /* _emx_init() requires 32K, cmd.exe has 64K only */ - double alignment1; - EXCEPTIONREGISTRATIONRECORD xreg; + char buf[48*1024]; /* _emx_init() requires 32K, cmd.exe has 64K only */ + double alignment1; + EXCEPTIONREGISTRATIONRECORD xreg; } *newstack; char *s; @@ -4678,23 +4677,23 @@ oldstackend = tib->tib_pstacklimit; if ( (char*)&s < (char*)oldstack + 4*1024 - || (char *)oldstackend < (char*)oldstack + 52*1024 ) - early_error("It is a lunacy to try to run EMX Perl ", - "with less than 64K of stack;\r\n", - " at least with non-EMX starter...\r\n"); + || (char *)oldstackend < (char*)oldstack + 52*1024 ) + early_error("It is a lunacy to try to run EMX Perl ", + "with less than 64K of stack;\r\n", + " at least with non-EMX starter...\r\n"); /* Minimize the damage to the stack via reducing the size of argv. */ if (flags & FORCE_EMX_INIT_CONTRACT_ARGV) { - pib->pib_pchcmd = "\0\0"; /* Need 3 concatenated strings */ - pib->pib_pchcmd = "\0"; /* Ended by an extra \0. */ + pib->pib_pchcmd = "\0\0"; /* Need 3 concatenated strings */ + pib->pib_pchcmd = "\0"; /* Ended by an extra \0. */ } newstack = alloca(sizeof(*newstack)); /* Emulate the stack probe */ s = ((char*)newstack) + sizeof(*newstack); while (s > (char*)newstack) { - s[-1] = 0; - s -= 4096; + s[-1] = 0; + s -= 4096; } /* Reassigning stack is documented to work */ @@ -4708,38 +4707,38 @@ Check whether it is inside the new stack. */ buf[0] = 0; if (tib->tib_pexchain >= tib->tib_pstacklimit - || tib->tib_pexchain < tib->tib_pstack) { - error = 1; - sprintf(buf, - "panic: ExceptionHandler misplaced: not %#lx <= %#lx < %#lx\n", - (unsigned long)tib->tib_pstack, - (unsigned long)tib->tib_pexchain, - (unsigned long)tib->tib_pstacklimit); - goto finish; + || tib->tib_pexchain < tib->tib_pstack) { + error = 1; + sprintf(buf, + "panic: ExceptionHandler misplaced: not %#lx <= %#lx < %#lx\n", + (unsigned long)tib->tib_pstack, + (unsigned long)tib->tib_pexchain, + (unsigned long)tib->tib_pstacklimit); + goto finish; } if (tib->tib_pexchain != &(newstack->xreg)) { - sprintf(buf, "ExceptionHandler misplaced: %#lx != %#lx\n", - (unsigned long)tib->tib_pexchain, - (unsigned long)&(newstack->xreg)); + sprintf(buf, "ExceptionHandler misplaced: %#lx != %#lx\n", + (unsigned long)tib->tib_pexchain, + (unsigned long)&(newstack->xreg)); } rc = DosUnsetExceptionHandler((EXCEPTIONREGISTRATIONRECORD *)tib->tib_pexchain); if (rc) - sprintf(buf + strlen(buf), - "warning: DosUnsetExceptionHandler rc=%#lx=%lu\n", rc, rc); + sprintf(buf + strlen(buf), + "warning: DosUnsetExceptionHandler rc=%#lx=%lu\n", rc, rc); if (preg) { - /* ExceptionRecords should be on stack, in a correct order. Sigh... */ - preg->prev_structure = 0; - preg->ExceptionHandler = _emx_exception; - rc = DosSetExceptionHandler(preg); - if (rc) { - sprintf(buf + strlen(buf), - "warning: DosSetExceptionHandler rc=%#lx=%lu\n", rc, rc); - DosWrite(2, buf, strlen(buf), &out); - emx_exception_init = 1; /* Do it around spawn*() calls */ - } + /* ExceptionRecords should be on stack, in a correct order. Sigh... */ + preg->prev_structure = 0; + preg->ExceptionHandler = _emx_exception; + rc = DosSetExceptionHandler(preg); + if (rc) { + sprintf(buf + strlen(buf), + "warning: DosSetExceptionHandler rc=%#lx=%lu\n", rc, rc); + DosWrite(2, buf, strlen(buf), &out); + emx_exception_init = 1; /* Do it around spawn*() calls */ + } } else - emx_exception_init = 1; /* Do it around spawn*() calls */ + emx_exception_init = 1; /* Do it around spawn*() calls */ finish: /* Restore the damage */ @@ -4749,16 +4748,16 @@ tib->tib_pstack = oldstack; emx_runtime_init = 1; if (buf[0]) - DosWrite(2, buf, strlen(buf), &out); + DosWrite(2, buf, strlen(buf), &out); if (error) - exit(56); + exit(56); } static void jmp_out_of_atexit(void) { if (longjmp_at_exit) - longjmp(at_exit_buf, 1); + longjmp(at_exit_buf, 1); } extern void _CRT_term(void); @@ -4767,34 +4766,34 @@ Perl_OS2_term(void **p, int exitstatus, int flags) { if (!emx_runtime_secondary) - return; + return; /* The principal executable is not running the same CRTL, so there is nobody to shutdown *this* CRTL except us... */ if (flags & FORCE_EMX_DEINIT_EXIT) { - if (p && !emx_exception_init) - DosUnsetExceptionHandler((EXCEPTIONREGISTRATIONRECORD *)p); - /* Do not run the executable's CRTL's termination routines */ - exit(exitstatus); /* Run at-exit, flush buffers, etc */ + if (p && !emx_exception_init) + DosUnsetExceptionHandler((EXCEPTIONREGISTRATIONRECORD *)p); + /* Do not run the executable's CRTL's termination routines */ + exit(exitstatus); /* Run at-exit, flush buffers, etc */ } /* Run at-exit list, and jump out at the end */ if ((flags & FORCE_EMX_DEINIT_RUN_ATEXIT) && !setjmp(at_exit_buf)) { - longjmp_at_exit = 1; - exit(exitstatus); /* The first pass through "if" */ + longjmp_at_exit = 1; + exit(exitstatus); /* The first pass through "if" */ } /* Get here if we managed to jump out of exit(), or did not run atexit. */ longjmp_at_exit = 0; /* Maybe exit() is called again? */ #if 0 /* _atexit_n is not exported */ if (flags & FORCE_EMX_DEINIT_RUN_ATEXIT) - _atexit_n = 0; /* Remove the atexit() handlers */ + _atexit_n = 0; /* Remove the atexit() handlers */ #endif /* Will segfault on program termination if we leave this dangling... */ if (p && !emx_exception_init) - DosUnsetExceptionHandler((EXCEPTIONREGISTRATIONRECORD *)p); + DosUnsetExceptionHandler((EXCEPTIONREGISTRATIONRECORD *)p); /* Typically there is no need to do this, done from _DLL_InitTerm() */ if (flags & FORCE_EMX_DEINIT_CRT_TERM) - _CRT_term(); /* Flush buffers, etc. */ + _CRT_term(); /* Flush buffers, etc. */ /* Now it is a good time to call exit() in the caller's CRTL... */ } @@ -4810,11 +4809,11 @@ static int emx_init_done = 0; /* If _environ is not set, this code sits in a DLL which - uses a CRT DLL which not compatible with the executable's - CRT library. Some parts of the DLL are not initialized. + uses a CRT DLL which not compatible with the executable's + CRT library. Some parts of the DLL are not initialized. */ if (_environ != NULL) - return; /* Properly initialized */ + return; /* Properly initialized */ /* It is not DOS, so we may use OS/2 API now */ /* Some data we manipulate is static; protect ourselves from @@ -4823,92 +4822,92 @@ rc1 = DosEnterCritSec(); if (!hmtx_emx_init) - rc = DosCreateMutexSem(NULL, &hmtx_emx_init, 0, TRUE); /*Create owned*/ + rc = DosCreateMutexSem(NULL, &hmtx_emx_init, 0, TRUE); /*Create owned*/ else - maybe_inited = 1; + maybe_inited = 1; if (rc != NO_ERROR) - hmtx_emx_init = NULLHANDLE; + hmtx_emx_init = NULLHANDLE; if (rc1 == NO_ERROR) - DosExitCritSec(); + DosExitCritSec(); DosExitMustComplete(&count); while (maybe_inited) { /* Other thread did or is doing the same now */ - if (emx_init_done) - return; - rc = DosRequestMutexSem(hmtx_emx_init, - (ULONG) SEM_INDEFINITE_WAIT); /* Timeout (none) */ - if (rc == ERROR_INTERRUPT) - continue; - if (rc != NO_ERROR) { - char buf[80]; - ULONG out; - - sprintf(buf, - "panic: EMX backdoor init: DosRequestMutexSem error: %lu=%#lx\n", rc, rc); - DosWrite(2, buf, strlen(buf), &out); - return; - } - DosReleaseMutexSem(hmtx_emx_init); - return; + if (emx_init_done) + return; + rc = DosRequestMutexSem(hmtx_emx_init, + (ULONG) SEM_INDEFINITE_WAIT); /* Timeout (none) */ + if (rc == ERROR_INTERRUPT) + continue; + if (rc != NO_ERROR) { + char buf[80]; + ULONG out; + + sprintf(buf, + "panic: EMX backdoor init: DosRequestMutexSem error: %lu=%#lx\n", rc, rc); + DosWrite(2, buf, strlen(buf), &out); + return; + } + DosReleaseMutexSem(hmtx_emx_init); + return; } /* If the executable does not use EMX.DLL, EMX.DLL is not completely - initialized either. Uninitialized EMX.DLL returns 0 in the low - nibble of __os_version(). */ + initialized either. Uninitialized EMX.DLL returns 0 in the low + nibble of __os_version(). */ v_emx = my_os_version(); /* _osmajor and _osminor are normally set in _DLL_InitTerm of CRT DLL - (=>_CRT_init=>_entry2) via a call to __os_version(), then - reset when the EXE initialization code calls _text=>_init=>_entry2. - The first time they are wrongly set to 0; the second time the - EXE initialization code had already called emx_init=>initialize1 - which correctly set version_major, version_minor used by - __os_version(). */ + (=>_CRT_init=>_entry2) via a call to __os_version(), then + reset when the EXE initialization code calls _text=>_init=>_entry2. + The first time they are wrongly set to 0; the second time the + EXE initialization code had already called emx_init=>initialize1 + which correctly set version_major, version_minor used by + __os_version(). */ v_crt = (_osmajor | _osminor); if ((_emx_env & 0x200) && !(v_emx & 0xFFFF)) { /* OS/2, EMX uninit. */ - force_init_emx_runtime( preg, - FORCE_EMX_INIT_CONTRACT_ARGV - | FORCE_EMX_INIT_INSTALL_ATEXIT ); - emx_wasnt_initialized = 1; - /* Update CRTL data basing on now-valid EMX runtime data */ - if (!v_crt) { /* The only wrong data are the versions. */ - v_emx = my_os_version(); /* *Now* it works */ - *(unsigned char *)&_osmajor = v_emx & 0xFF; /* Cast out const */ - *(unsigned char *)&_osminor = (v_emx>>8) & 0xFF; - } + force_init_emx_runtime( preg, + FORCE_EMX_INIT_CONTRACT_ARGV + | FORCE_EMX_INIT_INSTALL_ATEXIT ); + emx_wasnt_initialized = 1; + /* Update CRTL data basing on now-valid EMX runtime data */ + if (!v_crt) { /* The only wrong data are the versions. */ + v_emx = my_os_version(); /* *Now* it works */ + *(unsigned char *)&_osmajor = v_emx & 0xFF; /* Cast out const */ + *(unsigned char *)&_osminor = (v_emx>>8) & 0xFF; + } } emx_runtime_secondary = 1; /* if (flags & FORCE_EMX_INIT_INSTALL_ATEXIT) */ atexit(jmp_out_of_atexit); /* Allow run of atexit() w/o exit() */ if (env == NULL) { /* Fetch from the process info block */ - int c = 0; - PPIB pib; - PTIB tib; - char *e, **ep; - - DosGetInfoBlocks(&tib, &pib); - e = pib->pib_pchenv; - while (*e) { /* Get count */ - c++; - e = e + strlen(e) + 1; - } - Newx(env, c + 1, char*); - ep = env; - e = pib->pib_pchenv; - while (c--) { - *ep++ = e; - e = e + strlen(e) + 1; - } - *ep = NULL; + int c = 0; + PPIB pib; + PTIB tib; + char *e, **ep; + + DosGetInfoBlocks(&tib, &pib); + e = pib->pib_pchenv; + while (*e) { /* Get count */ + c++; + e = e + strlen(e) + 1; + } + Newx(env, c + 1, char*); + ep = env; + e = pib->pib_pchenv; + while (c--) { + *ep++ = e; + e = e + strlen(e) + 1; + } + *ep = NULL; } _environ = _org_environ = env; emx_init_done = 1; if (hmtx_emx_init) - DosReleaseMutexSem(hmtx_emx_init); + DosReleaseMutexSem(hmtx_emx_init); } #define ENTRY_POINT 0x10000 @@ -4918,16 +4917,16 @@ { struct layout_table_t *layout; if (emx_wasnt_initialized) - return 0; + return 0; /* Now we know that the principal executable is an EMX application - unless somebody did already play with delayed initialization... */ /* With EMX applications to determine whether it is AOUT one needs to examine the start of the executable to find "layout" */ if ( *(unsigned char*)ENTRY_POINT != 0x68 /* PUSH n */ - || *(unsigned char*)(ENTRY_POINT+5) != 0xe8 /* CALL */ - || *(unsigned char*)(ENTRY_POINT+10) != 0xeb /* JMP */ - || *(unsigned char*)(ENTRY_POINT+12) != 0xe8) /* CALL */ - return 0; /* ! EMX executable */ + || *(unsigned char*)(ENTRY_POINT+5) != 0xe8 /* CALL */ + || *(unsigned char*)(ENTRY_POINT+10) != 0xeb /* JMP */ + || *(unsigned char*)(ENTRY_POINT+12) != 0xe8) /* CALL */ + return 0; /* ! EMX executable */ /* Fix alignment */ Copy((char*)(ENTRY_POINT+1), &layout, 1, struct layout_table_t*); return !(layout->flags & 2); @@ -4953,25 +4952,25 @@ settmppath(); OS2_Perl_data.xs_init = &Xs_OS2_init; if (perl_sh_installed) { - int l = strlen(perl_sh_installed); + int l = strlen(perl_sh_installed); - Newx(PL_sh_path, l + 1, char); - memcpy(PL_sh_path, perl_sh_installed, l + 1); - } else if ( (shell = getenv("PERL_SH_DRIVE")) ) { - Newx(PL_sh_path, strlen(SH_PATH) + 1, char); - strcpy(PL_sh_path, SH_PATH); - PL_sh_path[0] = shell[0]; - } else if ( (shell = getenv("PERL_SH_DIR")) ) { - int l = strlen(shell), i; - - while (l && (shell[l-1] == '/' || shell[l-1] == '\\')) - l--; - Newx(PL_sh_path, l + 8, char); - strncpy(PL_sh_path, shell, l); - strcpy(PL_sh_path + l, "/sh.exe"); - for (i = 0; i < l; i++) { - if (PL_sh_path[i] == '\\') PL_sh_path[i] = '/'; - } + Newx(PL_sh_path, l + 1, char); + memcpy(PL_sh_path, perl_sh_installed, l + 1); + } else if ( (shell = PerlEnv_getenv("PERL_SH_DRIVE")) ) { + Newx(PL_sh_path, strlen(SH_PATH) + 1, char); + strcpy(PL_sh_path, SH_PATH); + PL_sh_path[0] = shell[0]; + } else if ( (shell = PerlEnv_getenv("PERL_SH_DIR")) ) { + int l = strlen(shell), i; + + while (l && (shell[l-1] == '/' || shell[l-1] == '\\')) + l--; + Newx(PL_sh_path, l + 8, char); + strncpy(PL_sh_path, shell, l); + strcpy(PL_sh_path + l, "/sh.exe"); + for (i = 0; i < l; i++) { + if (PL_sh_path[i] == '\\') PL_sh_path[i] = '/'; + } } MUTEX_INIT(&start_thread_mutex); MUTEX_INIT(&perlos2_state_mutex); @@ -4979,25 +4978,25 @@ os2_mytype_ini = os2_mytype; Perl_os2_initial_mode = -1; /* Uninit */ - s = getenv("PERL_BEGINLIBPATH"); + s = PerlEnv_getenv("PERL_BEGINLIBPATH"); if (s) rc = fill_extLibpath(0, s, NULL, 1, "PERL_BEGINLIBPATH"); else - rc = fill_extLibpath(0, getenv("PERL_PRE_BEGINLIBPATH"), getenv("PERL_POST_BEGINLIBPATH"), 0, "PERL_(PRE/POST)_BEGINLIBPATH"); + rc = fill_extLibpath(0, PerlEnv_getenv("PERL_PRE_BEGINLIBPATH"), PerlEnv_getenv("PERL_POST_BEGINLIBPATH"), 0, "PERL_(PRE/POST)_BEGINLIBPATH"); if (!rc) { - s = getenv("PERL_ENDLIBPATH"); - if (s) - rc = fill_extLibpath(1, s, NULL, 1, "PERL_ENDLIBPATH"); - else - rc = fill_extLibpath(1, getenv("PERL_PRE_ENDLIBPATH"), getenv("PERL_POST_ENDLIBPATH"), 0, "PERL_(PRE/POST)_ENDLIBPATH"); + s = PerlEnv_getenv("PERL_ENDLIBPATH"); + if (s) + rc = fill_extLibpath(1, s, NULL, 1, "PERL_ENDLIBPATH"); + else + rc = fill_extLibpath(1, PerlEnv_getenv("PERL_PRE_ENDLIBPATH"), PerlEnv_getenv("PERL_POST_ENDLIBPATH"), 0, "PERL_(PRE/POST)_ENDLIBPATH"); } if (rc) { - char buf[1024]; + char buf[1024]; - snprintf(buf, sizeof buf, "Error setting BEGIN/ENDLIBPATH: %s\n", - os2error(rc)); - DosWrite(2, buf, strlen(buf), &rc); - exit(2); + snprintf(buf, sizeof buf, "Error setting BEGIN/ENDLIBPATH: %s\n", + os2error(rc)); + DosWrite(2, buf, strlen(buf), &rc); + exit(2); } _emxload_env("PERL_EMXLOAD_SECS"); @@ -5012,10 +5011,10 @@ if (!(_emx_env & 0x200)) return 1; /* not OS/2. */ if (fd >= max_fh) { /* Renew */ - LONG delta = 0; + LONG delta = 0; - if (DosSetRelMaxFH(&delta, &max_fh)) /* Assume it OK??? */ - return 1; + if (DosSetRelMaxFH(&delta, &max_fh)) /* Assume it OK??? */ + return 1; } return fd < max_fh; } @@ -5025,7 +5024,7 @@ dup2(int from, int to) { if (fd_ok(from < to ? to : from)) - return _dup2(from, to); + return _dup2(from, to); errno = EBADF; return -1; } @@ -5034,7 +5033,7 @@ dup(int from) { if (fd_ok(from)) - return _dup(from); + return _dup(from); errno = EBADF; return -1; } @@ -5045,14 +5044,17 @@ char * my_tmpnam (char *str) { - char *p = getenv("TMP"), *tpath; + char *p = PerlEnv_getenv("TMP"), *tpath; - if (!p) p = getenv("TEMP"); + if (!p) p = PerlEnv_getenv("TEMP"); + ENV_LOCK; tpath = tempnam(p, "pltmp"); if (str && tpath) { - strcpy(str, tpath); - return str; + strcpy(str, tpath); + ENV_UNLOCK; + return str; } + ENV_UNLOCK; return tpath; } @@ -5063,10 +5065,10 @@ stat(".", &s); if (s.st_mode & S_IWOTH) { - return tmpfile(); + return tmpfile(); } return fopen(my_tmpnam(NULL), "w+b"); /* Race condition, but - grants TMP. */ + grants TMP. */ } #undef rmdir @@ -5083,17 +5085,17 @@ int rc; if (s[l-1] == '/' || s[l-1] == '\\') { /* EMX mkdir fails... */ - if (l >= sizeof b) - Newx(buf, l + 1, char); - strcpy(buf,s); - while (l > 1 && (s[l-1] == '/' || s[l-1] == '\\')) - l--; - buf[l] = 0; - s = buf; + if (l >= sizeof b) + Newx(buf, l + 1, char); + strcpy(buf,s); + while (l > 1 && (s[l-1] == '/' || s[l-1] == '\\')) + l--; + buf[l] = 0; + s = buf; } rc = rmdir(s); if (b != buf) - Safefree(buf); + Safefree(buf); return rc; } @@ -5108,17 +5110,17 @@ int rc; if (s[l-1] == '/' || s[l-1] == '\\') { /* EMX mkdir fails... */ - if (l >= sizeof b) - Newx(buf, l + 1, char); - strcpy(buf,s); - while (l > 1 && (s[l-1] == '/' || s[l-1] == '\\')) - l--; - buf[l] = 0; - s = buf; + if (l >= sizeof b) + Newx(buf, l + 1, char); + strcpy(buf,s); + while (l > 1 && (s[l-1] == '/' || s[l-1] == '\\')) + l--; + buf[l] = 0; + s = buf; } rc = mkdir(s, perm); if (b != buf) - Safefree(buf); + Safefree(buf); return rc; } @@ -5137,11 +5139,11 @@ if (use_my_flock == -1) { MUTEX_LOCK(&perlos2_state_mutex); if (use_my_flock == -1) { - char *s = getenv("USE_PERL_FLOCK"); + char *s = PerlEnv_getenv("USE_PERL_FLOCK"); if (s) - use_my_flock = atoi(s); + use_my_flock = atoi(s); else - use_my_flock = 1; + use_my_flock = 1; } MUTEX_UNLOCK(&perlos2_state_mutex); } @@ -5243,11 +5245,11 @@ use_my_pwent(void) { if (_my_pwent == -1) { - char *s = getenv("USE_PERL_PWENT"); + char *s = PerlEnv_getenv("USE_PERL_PWENT"); if (s) - _my_pwent = atoi(s); + _my_pwent = atoi(s); else - _my_pwent = 1; + _my_pwent = 1; } return _my_pwent; } @@ -5316,11 +5318,12 @@ char *s; if (!p || (p->pw_passwd && *p->pw_passwd)) /* Not a dangerous password */ - return p; + return p; pw = *p; - s = getenv("PW_PASSWD"); + s = PerlEnv_getenv("PW_PASSWD"); if (!s) - s = (char*)pw_p; /* Make match impossible */ + s = (char*)pw_p; /* Make match impossible */ + pw.pw_passwd = s; return &pw; @@ -5329,12 +5332,18 @@ struct passwd * my_getpwuid (uid_t id) { + /* On Linux, only getpwuid_r is thread safe, and even then not if the + * locale changes */ + return passw_wrap(getpwuid(id)); } struct passwd * my_getpwnam (__const__ char *n) { + /* On Linux, only getpwnam_r is thread safe, and even then not if the + * locale changes */ + return passw_wrap(getpwnam(n)); } @@ -5362,7 +5371,7 @@ #undef fork int fork_with_resources() { -#if (defined(USE_5005THREADS) || defined(USE_ITHREADS)) && !defined(USE_SLOW_THREAD_SPECIFIC) +#if defined(USE_ITHREADS) && !defined(USE_SLOW_THREAD_SPECIFIC) dTHX; void *ctx = PERL_GET_CONTEXT; #endif @@ -5370,57 +5379,57 @@ int rc = fork(); if (rc == 0) { /* child */ -#if (defined(USE_5005THREADS) || defined(USE_ITHREADS)) && !defined(USE_SLOW_THREAD_SPECIFIC) +#if defined(USE_ITHREADS) && !defined(USE_SLOW_THREAD_SPECIFIC) ALLOC_THREAD_KEY; /* Acquire the thread-local memory */ PERL_SET_CONTEXT(ctx); /* Reinit the thread-local memory */ #endif { /* Reload loaded-on-demand DLLs */ - struct dll_handle_t *dlls = dll_handles; + struct dll_handle_t *dlls = dll_handles; - while (dlls->modname) { - char dllname[260], fail[260]; - ULONG rc; - - if (!dlls->handle) { /* Was not loaded */ - dlls++; - continue; - } - /* It was loaded in the parent. We need to reload it. */ - - rc = DosQueryModuleName(dlls->handle, sizeof(dllname), dllname); - if (rc) { - Perl_warn_nocontext("Can't find DLL name for the module `%s' by the handle %d, rc=%lu=%#lx", - dlls->modname, (int)dlls->handle, rc, rc); - dlls++; - continue; - } - rc = DosLoadModule(fail, sizeof fail, dllname, &dlls->handle); - if (rc) - Perl_warn_nocontext("Can't load DLL `%s', possible problematic module `%s'", - dllname, fail); - dlls++; - } + while (dlls->modname) { + char dllname[260], fail[260]; + ULONG rc; + + if (!dlls->handle) { /* Was not loaded */ + dlls++; + continue; + } + /* It was loaded in the parent. We need to reload it. */ + + rc = DosQueryModuleName(dlls->handle, sizeof(dllname), dllname); + if (rc) { + Perl_warn_nocontext("Can't find DLL name for the module `%s' by the handle %d, rc=%lu=%#lx", + dlls->modname, (int)dlls->handle, rc, rc); + dlls++; + continue; + } + rc = DosLoadModule(fail, sizeof fail, dllname, &dlls->handle); + if (rc) + Perl_warn_nocontext("Can't load DLL `%s', possible problematic module `%s'", + dllname, fail); + dlls++; + } } { /* Support message queue etc. */ - os2_mytype = my_type(); - /* Apparently, subprocesses (in particular, fork()) do not - inherit the morphed state, so os2_mytype is the same as - os2_mytype_ini. */ - - if (Perl_os2_initial_mode != -1 - && Perl_os2_initial_mode != os2_mytype) { - /* XXXX ??? */ - } + os2_mytype = my_type(); + /* Apparently, subprocesses (in particular, fork()) do not + inherit the morphed state, so os2_mytype is the same as + os2_mytype_ini. */ + + if (Perl_os2_initial_mode != -1 + && Perl_os2_initial_mode != os2_mytype) { + /* XXXX ??? */ + } } if (Perl_HAB_set) - (void)_obtain_Perl_HAB; + (void)_obtain_Perl_HAB; if (Perl_hmq_refcnt) { - if (my_type() != 3) - my_type_set(3); - Create_HMQ(Perl_hmq_servers != 0, - "Cannot create a message queue on fork"); + if (my_type() != 3) + my_type_set(3); + Create_HMQ(Perl_hmq_servers != 0, + "Cannot create a message queue on fork"); } /* We may have loaded some modules */ @@ -5445,7 +5454,7 @@ _THUNK_FLAT (&lSel); _THUNK_CALL (Dos16GetInfoSeg))); if (rc) - return rc; + return rc; *pGlobal = MAKEPGINFOSEG(gSel); *pLocal = MAKEPLINFOSEG(lSel); return rc; diff -Nru perl-5.32.1/os2/os2ish.h perl-5.34.0/os2/os2ish.h --- perl-5.32.1/os2/os2ish.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/os2/os2ish.h 2021-01-20 23:04:44.000000000 +0000 @@ -117,68 +117,68 @@ #define MUTEX_INIT(m) \ STMT_START { \ - int rc; \ - if ((rc = _rmutex_create(m,0))) \ - Perl_croak_nocontext("panic: MUTEX_INIT: rc=%i", rc); \ + int rc; \ + if ((rc = _rmutex_create(m,0))) \ + Perl_croak_nocontext("panic: MUTEX_INIT: rc=%i", rc); \ } STMT_END #define MUTEX_LOCK(m) \ STMT_START { \ - int rc; \ - if ((rc = _rmutex_request(m,_FMR_IGNINT))) \ - Perl_croak_nocontext("panic: MUTEX_LOCK: rc=%i", rc); \ + int rc; \ + if ((rc = _rmutex_request(m,_FMR_IGNINT))) \ + Perl_croak_nocontext("panic: MUTEX_LOCK: rc=%i", rc); \ } STMT_END #define MUTEX_UNLOCK(m) \ STMT_START { \ - int rc; \ - if ((rc = _rmutex_release(m))) \ - Perl_croak_nocontext("panic: MUTEX_UNLOCK: rc=%i", rc); \ + int rc; \ + if ((rc = _rmutex_release(m))) \ + Perl_croak_nocontext("panic: MUTEX_UNLOCK: rc=%i", rc); \ } STMT_END #define MUTEX_DESTROY(m) \ STMT_START { \ - int rc; \ - if ((rc = _rmutex_close(m))) \ - Perl_croak_nocontext("panic: MUTEX_DESTROY: rc=%i", rc); \ + int rc; \ + if ((rc = _rmutex_close(m))) \ + Perl_croak_nocontext("panic: MUTEX_DESTROY: rc=%i", rc); \ } STMT_END #define COND_INIT(c) \ STMT_START { \ - int rc; \ - if ((rc = DosCreateEventSem(NULL,c,0,0))) \ - Perl_croak_nocontext("panic: COND_INIT: rc=%i", rc); \ + int rc; \ + if ((rc = DosCreateEventSem(NULL,c,0,0))) \ + Perl_croak_nocontext("panic: COND_INIT: rc=%i", rc); \ } STMT_END #define COND_SIGNAL(c) \ STMT_START { \ - int rc; \ - if ((rc = DosPostEventSem(*(c))) && rc != OS2_ERROR_ALREADY_POSTED)\ - Perl_croak_nocontext("panic: COND_SIGNAL, rc=%ld", rc); \ + int rc; \ + if ((rc = DosPostEventSem(*(c))) && rc != OS2_ERROR_ALREADY_POSTED)\ + Perl_croak_nocontext("panic: COND_SIGNAL, rc=%ld", rc); \ } STMT_END #define COND_BROADCAST(c) \ STMT_START { \ - int rc; \ - if ((rc = DosPostEventSem(*(c))) && rc != OS2_ERROR_ALREADY_POSTED)\ - Perl_croak_nocontext("panic: COND_BROADCAST, rc=%i", rc); \ + int rc; \ + if ((rc = DosPostEventSem(*(c))) && rc != OS2_ERROR_ALREADY_POSTED)\ + Perl_croak_nocontext("panic: COND_BROADCAST, rc=%i", rc); \ } STMT_END /* #define COND_WAIT(c, m) \ STMT_START { \ - if (WaitForSingleObject(*(c),INFINITE) == WAIT_FAILED) \ - Perl_croak_nocontext("panic: COND_WAIT"); \ + if (WaitForSingleObject(*(c),INFINITE) == WAIT_FAILED) \ + Perl_croak_nocontext("panic: COND_WAIT"); \ } STMT_END */ #define COND_WAIT(c, m) os2_cond_wait(c,m) #define COND_WAIT_win32(c, m) \ STMT_START { \ - int rc; \ - if ((rc = SignalObjectAndWait(*(m),*(c),INFINITE,FALSE))) \ - Perl_croak_nocontext("panic: COND_WAIT"); \ - else \ - MUTEX_LOCK(m); \ + int rc; \ + if ((rc = SignalObjectAndWait(*(m),*(c),INFINITE,FALSE))) \ + Perl_croak_nocontext("panic: COND_WAIT"); \ + else \ + MUTEX_LOCK(m); \ } STMT_END #define COND_DESTROY(c) \ STMT_START { \ - int rc; \ - if ((rc = DosCloseEventSem(*(c)))) \ - Perl_croak_nocontext("panic: COND_DESTROY, rc=%i", rc); \ + int rc; \ + if ((rc = DosCloseEventSem(*(c)))) \ + Perl_croak_nocontext("panic: COND_DESTROY, rc=%i", rc); \ } STMT_END /*#define THR ((struct thread *) TlsGetValue(PL_thr_key)) */ @@ -191,10 +191,10 @@ # define pthread_getspecific(k) (*(k)) # define pthread_setspecific(k,v) (*(k)=(v),0) # define pthread_key_create(keyp,flag) \ - ( DosAllocThreadLocalMemory(1,(unsigned long**)keyp) \ - ? Perl_croak_nocontext("LocalMemory"),1 \ - : 0 \ - ) + ( DosAllocThreadLocalMemory(1,(unsigned long**)keyp) \ + ? Perl_croak_nocontext("LocalMemory"),1 \ + : 0 \ + ) #endif /* USE_SLOW_THREAD_SPECIFIC */ #define pthread_key_delete(keyp) #define pthread_self() _gettid() @@ -204,7 +204,7 @@ int pthread_join(pthread_t tid, void **status); int pthread_detach(pthread_t tid); int pthread_create(pthread_t *tid, const pthread_attr_t *attr, - void *(*start_routine)(void*), void *arg); + void *(*start_routine)(void*), void *arg); #endif /* PTHREAD_INCLUDED */ #define THREADS_ELSEWHERE @@ -410,10 +410,10 @@ /* This guy is needed for quick stdstd */ #if defined(USE_STDIO_PTR) && defined(STDIO_PTR_LVALUE) && defined(STDIO_CNT_LVALUE) - /* Perl uses ungetc only with successful return */ + /* Perl uses ungetc only with successful return */ # define ungetc(c,fp) \ - (FILE_ptr(fp) > FILE_base(fp) && c == (int)*(FILE_ptr(fp) - 1) \ - ? (--FILE_ptr(fp), ++FILE_cnt(fp), (int)c) : ungetc(c,fp)) + (FILE_ptr(fp) > FILE_base(fp) && c == (int)*(FILE_ptr(fp) - 1) \ + ? (--FILE_ptr(fp), ++FILE_cnt(fp), (int)c) : ungetc(c,fp)) #endif #define PERLIO_IS_BINMODE_FD(fd) _PERLIO_IS_BINMODE_FD(fd) @@ -500,8 +500,8 @@ #define set_Perl_HAB_f (OS2_Perl_flags |= Perl_HAB_set_f) #define set_Perl_HAB(h) (set_Perl_HAB_f, Perl_hab = h) #define _obtain_Perl_HAB (init_PMWIN_entries(), \ - Perl_hab = (*PMWIN_entries.Initialize)(0), \ - set_Perl_HAB_f, Perl_hab) + Perl_hab = (*PMWIN_entries.Initialize)(0), \ + set_Perl_HAB_f, Perl_hab) #define perl_hab_GET() (Perl_HAB_set ? Perl_hab : _obtain_Perl_HAB) #define Acquire_hab() perl_hab_GET() #define Perl_hmq ((HMQ)OS2_Perl_data.phmq) @@ -524,11 +524,11 @@ unsigned long (*CreateMsgQueue)(unsigned long hab, long cmsg); int (*DestroyMsgQueue)(unsigned long hmq); int (*PeekMsg)(unsigned long hab, struct _QMSG *pqmsg, - unsigned long hwndFilter, unsigned long msgFilterFirst, - unsigned long msgFilterLast, unsigned long fl); + unsigned long hwndFilter, unsigned long msgFilterFirst, + unsigned long msgFilterLast, unsigned long fl); int (*GetMsg)(unsigned long hab, struct _QMSG *pqmsg, - unsigned long hwndFilter, unsigned long msgFilterFirst, - unsigned long msgFilterLast); + unsigned long hwndFilter, unsigned long msgFilterFirst, + unsigned long msgFilterLast); void * (*DispatchMsg)(unsigned long hab, struct _QMSG *pqmsg); unsigned long (*GetLastError)(unsigned long hab); unsigned long (*CancelShutdown)(unsigned long hmq, unsigned long fCancelAlways); @@ -543,7 +543,7 @@ #if _EMX_CRT_REV_ >= 60 # define os2_setsyserrno(rc) (Perl_rc = rc, errno = errno_isOS2_set, \ - _setsyserrno(rc)) + _setsyserrno(rc)) #else # define os2_setsyserrno(rc) (Perl_rc = rc, errno = errno_isOS2) #endif @@ -562,11 +562,11 @@ ((expr) ? : (CroakWinError(die,name1 name2), 0)) #define FillOSError(rc) (os2_setsyserrno(rc), \ - Perl_severity = SEVERITY_ERROR) + Perl_severity = SEVERITY_ERROR) #define WinError_2_Perl_rc \ ( init_PMWIN_entries(), \ - Perl_rc=(*PMWIN_entries.GetLastError)(perl_hab_GET()) ) + Perl_rc=(*PMWIN_entries.GetLastError)(perl_hab_GET()) ) /* Calling WinGetLastError() resets the error code of the current thread. Since for some Win* API return value 0 is normal, one needs to call @@ -576,9 +576,9 @@ /* At this moment init_PMWIN_entries() should be a nop (WinInitialize should be called already, right?), so we do not risk stepping over our own error */ #define FillWinError ( WinError_2_Perl_rc, \ - Perl_severity = ERRORIDSEV(Perl_rc), \ - Perl_rc = ERRORIDERROR(Perl_rc), \ - os2_setsyserrno(Perl_rc)) + Perl_severity = ERRORIDSEV(Perl_rc), \ + Perl_rc = ERRORIDERROR(Perl_rc), \ + os2_setsyserrno(Perl_rc)) #define STATIC_FILE_LENGTH 127 @@ -726,38 +726,38 @@ /* This flavor caches the procedure pointer (named as p__Win#name) locally */ #define DeclWinFuncByORD_CACHE(ret,name,o,at,args) \ - DeclWinFuncByORD_CACHE_r(ret,name,o,at,args,0,1) + DeclWinFuncByORD_CACHE_r(ret,name,o,at,args,0,1) /* This flavor may reset the last error before the call (if ret=0 may be OK) */ #define DeclWinFuncByORD_CACHE_resetError(ret,name,o,at,args) \ - DeclWinFuncByORD_CACHE_r(ret,name,o,at,args,1,1) + DeclWinFuncByORD_CACHE_r(ret,name,o,at,args,1,1) /* Two flavors below do the same as above, but do not auto-croak */ /* This flavor caches the procedure pointer (named as p__Win#name) locally */ #define DeclWinFuncByORD_CACHE_survive(ret,name,o,at,args) \ - DeclWinFuncByORD_CACHE_r(ret,name,o,at,args,0,0) + DeclWinFuncByORD_CACHE_r(ret,name,o,at,args,0,0) /* This flavor may reset the last error before the call (if ret=0 may be OK) */ #define DeclWinFuncByORD_CACHE_resetError_survive(ret,name,o,at,args) \ - DeclWinFuncByORD_CACHE_r(ret,name,o,at,args,1,0) + DeclWinFuncByORD_CACHE_r(ret,name,o,at,args,1,0) #define DeclWinFuncByORD_CACHE_r(ret,name,o,at,args,r,die) \ static ret (*CAT2(p__Win,name)) at; \ static ret name at { \ - if (!CAT2(p__Win,name)) \ - AssignFuncPByORD(CAT2(p__Win,name), o); \ - if (r) ResetWinError(); \ - return SaveCroakWinError(CAT2(p__Win,name) args, die, "[Win]", STRINGIFY(name)); } + if (!CAT2(p__Win,name)) \ + AssignFuncPByORD(CAT2(p__Win,name), o); \ + if (r) ResetWinError(); \ + return SaveCroakWinError(CAT2(p__Win,name) args, die, "[Win]", STRINGIFY(name)); } /* These flavors additionally assume ORD is name with prepended ORD_Win */ #define DeclWinFunc_CACHE(ret,name,at,args) \ - DeclWinFuncByORD_CACHE(ret,name,CAT2(ORD_Win,name),at,args) + DeclWinFuncByORD_CACHE(ret,name,CAT2(ORD_Win,name),at,args) #define DeclWinFunc_CACHE_resetError(ret,name,at,args) \ - DeclWinFuncByORD_CACHE_resetError(ret,name,CAT2(ORD_Win,name),at,args) + DeclWinFuncByORD_CACHE_resetError(ret,name,CAT2(ORD_Win,name),at,args) #define DeclWinFunc_CACHE_survive(ret,name,at,args) \ - DeclWinFuncByORD_CACHE_survive(ret,name,CAT2(ORD_Win,name),at,args) + DeclWinFuncByORD_CACHE_survive(ret,name,CAT2(ORD_Win,name),at,args) #define DeclWinFunc_CACHE_resetError_survive(ret,name,at,args) \ - DeclWinFuncByORD_CACHE_resetError_survive(ret,name,CAT2(ORD_Win,name),at,args) + DeclWinFuncByORD_CACHE_resetError_survive(ret,name,CAT2(ORD_Win,name),at,args) void ResetWinError(void); void CroakWinError(int die, char *name); @@ -815,12 +815,12 @@ /* propagates rc */ #define os2win_croak(rc,msg) \ - SaveCroakWinError((expr), 1 /* die */, /* no prefix */, (msg)) + SaveCroakWinError((expr), 1 /* die */, /* no prefix */, (msg)) /* propagates rc; use with functions which may return 0 on success */ #define os2win_croak_0OK(rc,msg) \ - SaveCroakWinError((ResetWinError, (expr)), \ - 1 /* die */, /* no prefix */, (msg)) + SaveCroakWinError((ResetWinError, (expr)), \ + 1 /* die */, /* no prefix */, (msg)) #ifdef PERL_CORE int os2_do_spawn(pTHX_ char *cmd); @@ -840,7 +840,7 @@ # define LOG_DEBUG 7 /* debug-level messages */ # define LOG_PRIMASK 0x007 /* mask to extract priority part (internal) */ - /* extract priority */ + /* extract priority */ # define LOG_PRI(p) ((p) & LOG_PRIMASK) # define LOG_MAKEPRI(fac, pri) (((fac) << 3) | (pri)) @@ -855,7 +855,7 @@ # define LOG_NEWS (7<<3) /* network news subsystem */ # define LOG_UUCP (8<<3) /* UUCP subsystem */ # define LOG_CRON (15<<3) /* clock daemon */ - /* other codes through 15 reserved for system use */ + /* other codes through 15 reserved for system use */ # define LOG_LOCAL0 (16<<3) /* reserved for local use */ # define LOG_LOCAL1 (17<<3) /* reserved for local use */ # define LOG_LOCAL2 (18<<3) /* reserved for local use */ @@ -867,14 +867,14 @@ # define LOG_NFACILITIES 24 /* current number of facilities */ # define LOG_FACMASK 0x03f8 /* mask to extract facility part */ - /* facility of pri */ + /* facility of pri */ # define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3) /* * arguments to setlogmask. */ # define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */ -# define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */ +# define LOG_UPTO(pri) nBIT_MASK((pri)+1) /* all priorities through pri */ /* * Option flags for openlog. @@ -1080,7 +1080,7 @@ /* ************************************************************ */ #define Dos32QuerySysState DosQuerySysState #define QuerySysState(flags, pid, buf, bufsz) \ - Dos32QuerySysState(flags, 0, pid, 0, buf, bufsz) + Dos32QuerySysState(flags, 0, pid, 0, buf, bufsz) #define QSS_PROCESS 1 #define QSS_MODULE 4 @@ -1091,156 +1091,156 @@ #ifdef _OS2_H APIRET APIENTRY Dos32QuerySysState(ULONG func,ULONG arg1,ULONG pid, - ULONG _res_,PVOID buf,ULONG bufsz); + ULONG _res_,PVOID buf,ULONG bufsz); typedef struct { - ULONG threadcnt; - ULONG proccnt; - ULONG modulecnt; + ULONG threadcnt; + ULONG proccnt; + ULONG modulecnt; } QGLOBAL, *PQGLOBAL; typedef struct { - ULONG rectype; - USHORT threadid; - USHORT slotid; - ULONG sleepid; - ULONG priority; - ULONG systime; - ULONG usertime; - UCHAR state; - UCHAR _reserved1_; /* padding to ULONG */ - USHORT _reserved2_; /* padding to ULONG */ + ULONG rectype; + USHORT threadid; + USHORT slotid; + ULONG sleepid; + ULONG priority; + ULONG systime; + ULONG usertime; + UCHAR state; + UCHAR _reserved1_; /* padding to ULONG */ + USHORT _reserved2_; /* padding to ULONG */ } QTHREAD, *PQTHREAD; typedef struct { - USHORT sfn; - USHORT refcnt; - USHORT flags1; - USHORT flags2; - USHORT accmode1; - USHORT accmode2; - ULONG filesize; - USHORT volhnd; - USHORT attrib; - USHORT _reserved_; + USHORT sfn; + USHORT refcnt; + USHORT flags1; + USHORT flags2; + USHORT accmode1; + USHORT accmode2; + ULONG filesize; + USHORT volhnd; + USHORT attrib; + USHORT _reserved_; } QFDS, *PQFDS; typedef struct qfile { - ULONG rectype; - struct qfile *next; - ULONG opencnt; - PQFDS filedata; - char name[1]; + ULONG rectype; + struct qfile *next; + ULONG opencnt; + PQFDS filedata; + char name[1]; } QFILE, *PQFILE; typedef struct { - ULONG rectype; - PQTHREAD threads; - USHORT pid; - USHORT ppid; - ULONG type; - ULONG state; - ULONG sessid; - USHORT hndmod; - USHORT threadcnt; - ULONG privsem32cnt; - ULONG _reserved2_; - USHORT sem16cnt; - USHORT dllcnt; - USHORT shrmemcnt; - USHORT fdscnt; - PUSHORT sem16s; - PUSHORT dlls; - PUSHORT shrmems; - PUSHORT fds; + ULONG rectype; + PQTHREAD threads; + USHORT pid; + USHORT ppid; + ULONG type; + ULONG state; + ULONG sessid; + USHORT hndmod; + USHORT threadcnt; + ULONG privsem32cnt; + ULONG _reserved2_; + USHORT sem16cnt; + USHORT dllcnt; + USHORT shrmemcnt; + USHORT fdscnt; + PUSHORT sem16s; + PUSHORT dlls; + PUSHORT shrmems; + PUSHORT fds; } QPROCESS, *PQPROCESS; typedef struct sema { - struct sema *next; - USHORT refcnt; - UCHAR sysflags; - UCHAR sysproccnt; - ULONG _reserved1_; - USHORT index; - CHAR name[1]; + struct sema *next; + USHORT refcnt; + UCHAR sysflags; + UCHAR sysproccnt; + ULONG _reserved1_; + USHORT index; + CHAR name[1]; } QSEMA, *PQSEMA; typedef struct { - ULONG rectype; - ULONG _reserved1_; - USHORT _reserved2_; - USHORT syssemidx; - ULONG index; - QSEMA sema; + ULONG rectype; + ULONG _reserved1_; + USHORT _reserved2_; + USHORT syssemidx; + ULONG index; + QSEMA sema; } QSEMSTRUC, *PQSEMSTRUC; typedef struct { - USHORT pid; - USHORT opencnt; + USHORT pid; + USHORT opencnt; } QSEMOWNER32, *PQSEMOWNER32; typedef struct { - PQSEMOWNER32 own; - PCHAR name; - PVOID semrecs; /* array of associated sema's */ - USHORT flags; - USHORT semreccnt; - USHORT waitcnt; - USHORT _reserved_; /* padding to ULONG */ + PQSEMOWNER32 own; + PCHAR name; + PVOID semrecs; /* array of associated sema's */ + USHORT flags; + USHORT semreccnt; + USHORT waitcnt; + USHORT _reserved_; /* padding to ULONG */ } QSEMSMUX32, *PQSEMSMUX32; typedef struct { - PQSEMOWNER32 own; - PCHAR name; - PQSEMSMUX32 mux; - USHORT flags; - USHORT postcnt; + PQSEMOWNER32 own; + PCHAR name; + PQSEMSMUX32 mux; + USHORT flags; + USHORT postcnt; } QSEMEV32, *PQSEMEV32; typedef struct { - PQSEMOWNER32 own; - PCHAR name; - PQSEMSMUX32 mux; - USHORT flags; - USHORT refcnt; - USHORT thrdnum; - USHORT _reserved_; /* padding to ULONG */ + PQSEMOWNER32 own; + PCHAR name; + PQSEMSMUX32 mux; + USHORT flags; + USHORT refcnt; + USHORT thrdnum; + USHORT _reserved_; /* padding to ULONG */ } QSEMMUX32, *PQSEMMUX32; typedef struct semstr32 { - struct semstr *next; - QSEMEV32 evsem; - QSEMMUX32 muxsem; - QSEMSMUX32 smuxsem; + struct semstr *next; + QSEMEV32 evsem; + QSEMMUX32 muxsem; + QSEMSMUX32 smuxsem; } QSEMSTRUC32, *PQSEMSTRUC32; typedef struct shrmem { - struct shrmem *next; - USHORT hndshr; - USHORT selshr; - USHORT refcnt; - CHAR name[1]; + struct shrmem *next; + USHORT hndshr; + USHORT selshr; + USHORT refcnt; + CHAR name[1]; } QSHRMEM, *PQSHRMEM; typedef struct module { - struct module *next; - USHORT hndmod; - USHORT type; - ULONG refcnt; - ULONG segcnt; - PVOID _reserved_; - PCHAR name; - USHORT modref[1]; + struct module *next; + USHORT hndmod; + USHORT type; + ULONG refcnt; + ULONG segcnt; + PVOID _reserved_; + PCHAR name; + USHORT modref[1]; } QMODULE, *PQMODULE; typedef struct { - PQGLOBAL gbldata; - PQPROCESS procdata; - PQSEMSTRUC semadata; - PQSEMSTRUC32 sem32data; - PQSHRMEM shrmemdata; - PQMODULE moddata; - PVOID _reserved2_; - PQFILE filedata; + PQGLOBAL gbldata; + PQPROCESS procdata; + PQSEMSTRUC semadata; + PQSEMSTRUC32 sem32data; + PQSHRMEM shrmemdata; + PQMODULE moddata; + PVOID _reserved2_; + PQFILE filedata; } QTOPLEVEL, *PQTOPLEVEL; /* ************************************************************ */ diff -Nru perl-5.32.1/os2/perlrexx.c perl-5.34.0/os2/perlrexx.c --- perl-5.32.1/os2/perlrexx.c 2020-12-18 09:58:50.000000000 +0000 +++ perl-5.34.0/os2/perlrexx.c 2021-01-20 23:04:44.000000000 +0000 @@ -64,17 +64,17 @@ char *argv[3] = {"perl_in_REXX", "-e", ""}; if (!perlos2_is_inited) { - perlos2_is_inited = 1; - init_perlos2(); + perlos2_is_inited = 1; + init_perlos2(); } if (my_perl) - return 1; + return 1; if (!PL_do_undump) { - my_perl = perl_alloc(); - if (!my_perl) - return 0; - perl_construct(my_perl); - PL_perl_destruct_level = 1; + my_perl = perl_alloc(); + if (!my_perl) + return 0; + perl_construct(my_perl); + PL_perl_destruct_level = 1; } if (!doparse) return 1; @@ -86,19 +86,19 @@ static int seterr(char *format, ...) { - va_list va; - char *s = last_error; + va_list va; + char *s = last_error; - va_start(va, format); - if (s[0]) { - s += strlen(s); - if (s[-1] != '\n') { - snprintf(s, sizeof(last_error) - (s - last_error), "\n"); - s += strlen(s); - } - } - vsnprintf(s, sizeof(last_error) - (s - last_error), format, va); - return 1; + va_start(va, format); + if (s[0]) { + s += strlen(s); + if (s[-1] != '\n') { + snprintf(s, sizeof(last_error) - (s - last_error), "\n"); + s += strlen(s); + } + } + vsnprintf(s, sizeof(last_error) - (s - last_error), format, va); + return 1; } /* The REXX-callable entrypoints ... */ @@ -112,30 +112,30 @@ ULONG ret; if (rargc != 1) - return seterr("one argument expected, got %ld", rargc); + return seterr("one argument expected, got %ld", rargc); if (rargv[0].strlength >= sizeof(buf)) - return seterr("length of the argument %ld exceeds the maximum %ld", - rargv[0].strlength, (long)sizeof(buf) - 1); + return seterr("length of the argument %ld exceeds the maximum %ld", + rargv[0].strlength, (long)sizeof(buf) - 1); if (!init_perl(0)) - return 1; + return 1; memcpy(buf, rargv[0].strptr, rargv[0].strlength); buf[rargv[0].strlength] = 0; if (!perl_parse(my_perl, xs_init, 3, argv, (char **)NULL)) - perl_run(my_perl); + perl_run(my_perl); exitstatus = perl_destruct(my_perl); perl_free(my_perl); my_perl = 0; if (exitstatus) - ret = 1; + ret = 1; else { - ret = 0; - sprintf(retstr->strptr, "%s", "ok"); - retstr->strlength = strlen (retstr->strptr); + ret = 0; + sprintf(retstr->strptr, "%s", "ok"); + retstr->strlength = strlen (retstr->strptr); } PERL_SYS_TERM1(0); return ret; @@ -145,7 +145,7 @@ PCSZ queuename, PRXSTRING retstr) { if (rargc != 0) - return seterr("no arguments expected, got %ld", rargc); + return seterr("no arguments expected, got %ld", rargc); PERL_SYS_TERM1(0); return 0; } @@ -154,9 +154,9 @@ PCSZ queuename, PRXSTRING retstr) { if (rargc != 0) - return seterr("no arguments expected, got %ld", rargc); + return seterr("no arguments expected, got %ld", rargc); if (!my_perl) - return seterr("no perl interpreter present"); + return seterr("no perl interpreter present"); perl_destruct(my_perl); perl_free(my_perl); my_perl = 0; @@ -171,9 +171,9 @@ PCSZ queuename, PRXSTRING retstr) { if (rargc != 0) - return seterr("no argument expected, got %ld", rargc); + return seterr("no argument expected, got %ld", rargc); if (!init_perl(1)) - return 1; + return 1; sprintf(retstr->strptr, "%s", "ok"); retstr->strlength = strlen (retstr->strptr); @@ -186,13 +186,13 @@ int len = strlen(last_error); if (len <= 256 /* Default buffer is 256-char long */ - || !DosAllocMem((PPVOID)&retstr->strptr, len, - PAG_READ|PAG_WRITE|PAG_COMMIT)) { - memcpy(retstr->strptr, last_error, len); - retstr->strlength = len; + || !DosAllocMem((PPVOID)&retstr->strptr, len, + PAG_READ|PAG_WRITE|PAG_COMMIT)) { + memcpy(retstr->strptr, last_error, len); + retstr->strlength = len; } else { - strcpy(retstr->strptr, "[Not enough memory to copy the errortext]"); - retstr->strlength = strlen(retstr->strptr); + strcpy(retstr->strptr, "[Not enough memory to copy the errortext]"); + retstr->strlength = strlen(retstr->strptr); } return 0; } @@ -206,10 +206,10 @@ last_error[0] = 0; if (rargc != 1) - return seterr("one argument expected, got %ld", rargc); + return seterr("one argument expected, got %ld", rargc); if (!init_perl(1)) - return seterr("error initializing perl"); + return seterr("error initializing perl"); { dSP; @@ -227,17 +227,17 @@ ret = 0; if (SvTRUE(ERRSV)) - ret = seterr(SvPV(ERRSV, n_a)); + ret = seterr(SvPV(ERRSV, n_a)); if (!SvOK(res)) - ret = seterr("undefined value returned by Perl-in-REXX"); + ret = seterr("undefined value returned by Perl-in-REXX"); str = SvPV(res, len); if (len <= 256 /* Default buffer is 256-char long */ - || !DosAllocMem((PPVOID)&retstr->strptr, len, - PAG_READ|PAG_WRITE|PAG_COMMIT)) { - memcpy(retstr->strptr, str, len); - retstr->strlength = len; + || !DosAllocMem((PPVOID)&retstr->strptr, len, + PAG_READ|PAG_WRITE|PAG_COMMIT)) { + memcpy(retstr->strptr, str, len); + retstr->strlength = len; } else - ret = seterr("Not enough memory for the return string of Perl-in-REXX"); + ret = seterr("Not enough memory for the return string of Perl-in-REXX"); FREETMPS; LEAVE; @@ -255,7 +255,7 @@ ULONG rc = PERLEVAL(NULL, 1, command, NULL, retstr); if (rc) - *flags = RXSUBCOM_ERROR; /* raise error condition */ + *flags = RXSUBCOM_ERROR; /* raise error condition */ return 0; /* finished */ } @@ -284,7 +284,7 @@ int i = -1; while (++i < ArrLength(funcs) - 1) - RexxRegisterFunctionExe(funcs[i].name, funcs[i].f); + RexxRegisterFunctionExe(funcs[i].name, funcs[i].f); RexxRegisterSubcomExe("EVALPERL", (PFN)&PERLEVALSUBCOMMAND, NULL); retstr->strlength = 0; return 0; @@ -296,7 +296,7 @@ int i = -1; while (++i < ArrLength(funcs)) - RexxDeregisterFunction(funcs[i].name); + RexxDeregisterFunction(funcs[i].name); RexxDeregisterSubcom("EVALPERL", NULL /* Not a DLL version */); retstr->strlength = 0; return 0; @@ -308,7 +308,7 @@ int i = -1; while (++i < ArrLength(funcs)) - RexxDeregisterFunction(funcs[i].name); + RexxDeregisterFunction(funcs[i].name); RexxDeregisterSubcom("EVALPERL", NULL /* Not a DLL version */); PERL_SYS_TERM1(0); retstr->strlength = 0; diff -Nru perl-5.32.1/packsizetables.inc perl-5.34.0/packsizetables.inc --- perl-5.32.1/packsizetables.inc 2020-12-18 09:58:50.000000000 +0000 +++ perl-5.34.0/packsizetables.inc 2021-02-21 11:01:31.000000000 +0000 @@ -19,7 +19,7 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* C */ sizeof(unsigned char), -#if defined(HAS_LONG_DOUBLE) && defined(USE_LONG_DOUBLE) +#if defined(HAS_LONG_DOUBLE) /* D */ LONG_DOUBLESIZE, #else 0, @@ -154,7 +154,7 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* C */ sizeof(unsigned char), -#if defined(HAS_LONG_DOUBLE) && defined(USE_LONG_DOUBLE) +#if defined(HAS_LONG_DOUBLE) /* D */ LONG_DOUBLESIZE, #else 0, diff -Nru perl-5.32.1/pad.c perl-5.34.0/pad.c --- perl-5.32.1/pad.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pad.c 2021-01-20 23:04:44.000000000 +0000 @@ -19,7 +19,7 @@ */ /* -=head1 Pad Data Structures +=for apidoc_section $pad =for apidoc Amx|PADLIST *|CvPADLIST|CV *cv @@ -201,19 +201,19 @@ /* save existing state, ... */ if (flags & padnew_SAVE) { - SAVECOMPPAD(); - if (! (flags & padnew_CLONE)) { - SAVESPTR(PL_comppad_name); + SAVECOMPPAD(); + if (! (flags & padnew_CLONE)) { + SAVESPTR(PL_comppad_name); save_strlen((STRLEN *)&PL_padix); save_strlen((STRLEN *)&PL_constpadix); - save_strlen((STRLEN *)&PL_comppad_name_fill); - save_strlen((STRLEN *)&PL_min_intro_pending); - save_strlen((STRLEN *)&PL_max_intro_pending); - SAVEBOOL(PL_cv_has_eval); - if (flags & padnew_SAVESUB) { - SAVEBOOL(PL_pad_reset_pending); - } - } + save_strlen((STRLEN *)&PL_comppad_name_fill); + save_strlen((STRLEN *)&PL_min_intro_pending); + save_strlen((STRLEN *)&PL_max_intro_pending); + SAVEBOOL(PL_cv_has_eval); + if (flags & padnew_SAVESUB) { + SAVEBOOL(PL_pad_reset_pending); + } + } } /* ... create new pad ... */ @@ -223,16 +223,16 @@ if (flags & padnew_CLONE) { AV * const a0 = newAV(); /* will be @_ */ - av_store(pad, 0, MUTABLE_SV(a0)); - AvREIFY_only(a0); + av_store(pad, 0, MUTABLE_SV(a0)); + AvREIFY_only(a0); - PadnamelistREFCNT(padname = PL_comppad_name)++; + PadnamelistREFCNT(padname = PL_comppad_name)++; } else { - padlist->xpadl_id = PL_padlist_generation++; - av_store(pad, 0, NULL); - padname = newPADNAMELIST(0); - padnamelist_store(padname, 0, &PL_padname_undef); + padlist->xpadl_id = PL_padlist_generation++; + av_store(pad, 0, NULL); + padname = newPADNAMELIST(0); + padnamelist_store(padname, 0, &PL_padname_undef); } /* Most subroutines never recurse, hence only need 2 entries in the padlist @@ -251,20 +251,20 @@ PL_curpad = AvARRAY(pad); if (! (flags & padnew_CLONE)) { - PL_comppad_name = padname; - PL_comppad_name_fill = 0; - PL_min_intro_pending = 0; - PL_padix = 0; - PL_constpadix = 0; - PL_cv_has_eval = 0; + PL_comppad_name = padname; + PL_comppad_name_fill = 0; + PL_min_intro_pending = 0; + PL_padix = 0; + PL_constpadix = 0; + PL_cv_has_eval = 0; } DEBUG_X(PerlIO_printf(Perl_debug_log, - "Pad 0x%" UVxf "[0x%" UVxf "] new: compcv=0x%" UVxf - " name=0x%" UVxf " flags=0x%" UVxf "\n", - PTR2UV(PL_comppad), PTR2UV(PL_curpad), PTR2UV(PL_compcv), - PTR2UV(padname), (UV)flags - ) + "Pad 0x%" UVxf "[0x%" UVxf "] new: compcv=0x%" UVxf + " name=0x%" UVxf " flags=0x%" UVxf "\n", + PTR2UV(PL_comppad), PTR2UV(PL_curpad), PTR2UV(PL_compcv), + PTR2UV(padname), (UV)flags + ) ); return (PADLIST*)padlist; @@ -272,7 +272,7 @@ /* -=head1 Embedding Functions +=for apidoc_section $embedding =for apidoc cv_undef @@ -302,15 +302,15 @@ PERL_ARGS_ASSERT_CV_UNDEF_FLAGS; DEBUG_X(PerlIO_printf(Perl_debug_log, - "CV undef: cv=0x%" UVxf " comppad=0x%" UVxf "\n", - PTR2UV(cv), PTR2UV(PL_comppad)) + "CV undef: cv=0x%" UVxf " comppad=0x%" UVxf "\n", + PTR2UV(cv), PTR2UV(PL_comppad)) ); if (CvFILE(&cvbody)) { - char * file = CvFILE(&cvbody); - CvFILE(&cvbody) = NULL; - if(CvDYNFILE(&cvbody)) - Safefree(file); + char * file = CvFILE(&cvbody); + CvFILE(&cvbody) = NULL; + if(CvDYNFILE(&cvbody)) + Safefree(file); } /* CvSLABBED_off(&cvbody); *//* turned off below */ @@ -332,7 +332,7 @@ CvSTART(&cvbody) = NULL; LEAVE; } - else if (CvSLABBED(&cvbody)) { + else if (CvSLABBED(&cvbody)) { if( CvSTART(&cvbody)) { ENTER; PAD_SAVE_SETNULLPAD(); @@ -351,128 +351,128 @@ } } else { /* dont bother checking if CvXSUB(cv) is true, less branching */ - CvXSUB(&cvbody) = NULL; + CvXSUB(&cvbody) = NULL; } SvPOK_off(MUTABLE_SV(cv)); /* forget prototype */ sv_unmagic((SV *)cv, PERL_MAGIC_checkcall); if (!(flags & CV_UNDEF_KEEP_NAME)) { - if (CvNAMED(&cvbody)) { - CvNAME_HEK_set(&cvbody, NULL); - CvNAMED_off(&cvbody); - } - else CvGV_set(cv, NULL); + if (CvNAMED(&cvbody)) { + CvNAME_HEK_set(&cvbody, NULL); + CvNAMED_off(&cvbody); + } + else CvGV_set(cv, NULL); } /* This statement and the subsequence if block was pad_undef(). */ pad_peg("pad_undef"); if (!CvISXSUB(&cvbody) && CvPADLIST(&cvbody)) { - PADOFFSET ix; - const PADLIST *padlist = CvPADLIST(&cvbody); + PADOFFSET ix; + const PADLIST *padlist = CvPADLIST(&cvbody); + + /* Free the padlist associated with a CV. + If parts of it happen to be current, we null the relevant PL_*pad* + global vars so that we don't have any dangling references left. + We also repoint the CvOUTSIDE of any about-to-be-orphaned inner + subs to the outer of this cv. */ + + DEBUG_X(PerlIO_printf(Perl_debug_log, + "Pad undef: cv=0x%" UVxf " padlist=0x%" UVxf " comppad=0x%" UVxf "\n", + PTR2UV(cv), PTR2UV(padlist), PTR2UV(PL_comppad)) + ); + + /* detach any '&' anon children in the pad; if afterwards they + * are still live, fix up their CvOUTSIDEs to point to our outside, + * bypassing us. */ + + if (PL_phase != PERL_PHASE_DESTRUCT) { /* don't bother during global destruction */ + CV * const outercv = CvOUTSIDE(&cvbody); + const U32 seq = CvOUTSIDE_SEQ(&cvbody); + PADNAMELIST * const comppad_name = PadlistNAMES(padlist); + PADNAME ** const namepad = PadnamelistARRAY(comppad_name); + PAD * const comppad = PadlistARRAY(padlist)[1]; + SV ** const curpad = AvARRAY(comppad); + for (ix = PadnamelistMAX(comppad_name); ix > 0; ix--) { + PADNAME * const name = namepad[ix]; + if (name && PadnamePV(name) && *PadnamePV(name) == '&') + { + CV * const innercv = MUTABLE_CV(curpad[ix]); + U32 inner_rc; + assert(innercv); + assert(SvTYPE(innercv) != SVt_PVFM); + inner_rc = SvREFCNT(innercv); + assert(inner_rc); + + if (SvREFCNT(comppad) < 2) { /* allow for /(?{ sub{} })/ */ + curpad[ix] = NULL; + SvREFCNT_dec_NN(innercv); + inner_rc--; + } + + /* in use, not just a prototype */ + if (inner_rc && SvTYPE(innercv) == SVt_PVCV + && (CvOUTSIDE(innercv) == cv)) + { + assert(CvWEAKOUTSIDE(innercv)); + /* don't relink to grandfather if he's being freed */ + if (outercv && SvREFCNT(outercv)) { + CvWEAKOUTSIDE_off(innercv); + CvOUTSIDE(innercv) = outercv; + CvOUTSIDE_SEQ(innercv) = seq; + SvREFCNT_inc_simple_void_NN(outercv); + } + else { + CvOUTSIDE(innercv) = NULL; + } + } + } + } + } - /* Free the padlist associated with a CV. - If parts of it happen to be current, we null the relevant PL_*pad* - global vars so that we don't have any dangling references left. - We also repoint the CvOUTSIDE of any about-to-be-orphaned inner - subs to the outer of this cv. */ - - DEBUG_X(PerlIO_printf(Perl_debug_log, - "Pad undef: cv=0x%" UVxf " padlist=0x%" UVxf " comppad=0x%" UVxf "\n", - PTR2UV(cv), PTR2UV(padlist), PTR2UV(PL_comppad)) - ); - - /* detach any '&' anon children in the pad; if afterwards they - * are still live, fix up their CvOUTSIDEs to point to our outside, - * bypassing us. */ - - if (PL_phase != PERL_PHASE_DESTRUCT) { /* don't bother during global destruction */ - CV * const outercv = CvOUTSIDE(&cvbody); - const U32 seq = CvOUTSIDE_SEQ(&cvbody); - PADNAMELIST * const comppad_name = PadlistNAMES(padlist); - PADNAME ** const namepad = PadnamelistARRAY(comppad_name); - PAD * const comppad = PadlistARRAY(padlist)[1]; - SV ** const curpad = AvARRAY(comppad); - for (ix = PadnamelistMAX(comppad_name); ix > 0; ix--) { - PADNAME * const name = namepad[ix]; - if (name && PadnamePV(name) && *PadnamePV(name) == '&') - { - CV * const innercv = MUTABLE_CV(curpad[ix]); - U32 inner_rc; - assert(innercv); - assert(SvTYPE(innercv) != SVt_PVFM); - inner_rc = SvREFCNT(innercv); - assert(inner_rc); - - if (SvREFCNT(comppad) < 2) { /* allow for /(?{ sub{} })/ */ - curpad[ix] = NULL; - SvREFCNT_dec_NN(innercv); - inner_rc--; - } - - /* in use, not just a prototype */ - if (inner_rc && SvTYPE(innercv) == SVt_PVCV - && (CvOUTSIDE(innercv) == cv)) - { - assert(CvWEAKOUTSIDE(innercv)); - /* don't relink to grandfather if he's being freed */ - if (outercv && SvREFCNT(outercv)) { - CvWEAKOUTSIDE_off(innercv); - CvOUTSIDE(innercv) = outercv; - CvOUTSIDE_SEQ(innercv) = seq; - SvREFCNT_inc_simple_void_NN(outercv); - } - else { - CvOUTSIDE(innercv) = NULL; - } - } - } - } - } - - ix = PadlistMAX(padlist); - while (ix > 0) { - PAD * const sv = PadlistARRAY(padlist)[ix--]; - if (sv) { - if (sv == PL_comppad) { - PL_comppad = NULL; - PL_curpad = NULL; - } - SvREFCNT_dec_NN(sv); - } - } - { - PADNAMELIST * const names = PadlistNAMES(padlist); - if (names == PL_comppad_name && PadnamelistREFCNT(names) == 1) - PL_comppad_name = NULL; - PadnamelistREFCNT_dec(names); - } - if (PadlistARRAY(padlist)) Safefree(PadlistARRAY(padlist)); - Safefree(padlist); - CvPADLIST_set(&cvbody, NULL); + ix = PadlistMAX(padlist); + while (ix > 0) { + PAD * const sv = PadlistARRAY(padlist)[ix--]; + if (sv) { + if (sv == PL_comppad) { + PL_comppad = NULL; + PL_curpad = NULL; + } + SvREFCNT_dec_NN(sv); + } + } + { + PADNAMELIST * const names = PadlistNAMES(padlist); + if (names == PL_comppad_name && PadnamelistREFCNT(names) == 1) + PL_comppad_name = NULL; + PadnamelistREFCNT_dec(names); + } + if (PadlistARRAY(padlist)) Safefree(PadlistARRAY(padlist)); + Safefree(padlist); + CvPADLIST_set(&cvbody, NULL); } else if (CvISXSUB(&cvbody)) - CvHSCXT(&cvbody) = NULL; + CvHSCXT(&cvbody) = NULL; /* else is (!CvISXSUB(&cvbody) && !CvPADLIST(&cvbody)) {do nothing;} */ /* remove CvOUTSIDE unless this is an undef rather than a free */ if (!SvREFCNT(cv)) { - CV * outside = CvOUTSIDE(&cvbody); - if(outside) { - CvOUTSIDE(&cvbody) = NULL; - if (!CvWEAKOUTSIDE(&cvbody)) - SvREFCNT_dec_NN(outside); - } + CV * outside = CvOUTSIDE(&cvbody); + if(outside) { + CvOUTSIDE(&cvbody) = NULL; + if (!CvWEAKOUTSIDE(&cvbody)) + SvREFCNT_dec_NN(outside); + } } if (CvCONST(&cvbody)) { - SvREFCNT_dec(MUTABLE_SV(CvXSUBANY(&cvbody).any_ptr)); - /* CvCONST_off(cv); *//* turned off below */ + SvREFCNT_dec(MUTABLE_SV(CvXSUBANY(&cvbody).any_ptr)); + /* CvCONST_off(cv); *//* turned off below */ } /* delete all flags except WEAKOUTSIDE and CVGV_RC, which indicate the * ref status of CvOUTSIDE and CvGV, and ANON, NAMED and * LEXICAL, which are used to determine the sub's name. */ CvFLAGS(&cvbody) &= (CVf_WEAKOUTSIDE|CVf_CVGV_RC|CVf_ANON|CVf_LEXICAL - |CVf_NAMED); + |CVf_NAMED); } /* @@ -508,11 +508,11 @@ if (slab) { #ifdef PERL_DEBUG_READONLY_OPS - const size_t refcnt = slab->opslab_refcnt; + const size_t refcnt = slab->opslab_refcnt; #endif - OpslabREFCNT_dec(slab); + OpslabREFCNT_dec(slab); #ifdef PERL_DEBUG_READONLY_OPS - if (refcnt > 1) Slab_to_ro(slab); + if (refcnt > 1) Slab_to_ro(slab); #endif } } @@ -534,7 +534,7 @@ static PADOFFSET S_pad_alloc_name(pTHX_ PADNAME *name, U32 flags, HV *typestash, - HV *ourstash) + HV *ourstash) { const PADOFFSET offset = pad_alloc(OP_PADSV, SVs_PADMY); @@ -543,22 +543,22 @@ ASSERT_CURPAD_ACTIVE("pad_alloc_name"); if (typestash) { - SvPAD_TYPED_on(name); - PadnameTYPE(name) = - MUTABLE_HV(SvREFCNT_inc_simple_NN(MUTABLE_SV(typestash))); + SvPAD_TYPED_on(name); + PadnameTYPE(name) = + MUTABLE_HV(SvREFCNT_inc_simple_NN(MUTABLE_SV(typestash))); } if (ourstash) { - SvPAD_OUR_on(name); - SvOURSTASH_set(name, ourstash); - SvREFCNT_inc_simple_void_NN(ourstash); + SvPAD_OUR_on(name); + SvOURSTASH_set(name, ourstash); + SvREFCNT_inc_simple_void_NN(ourstash); } else if (flags & padadd_STATE) { - SvPAD_STATE_on(name); + SvPAD_STATE_on(name); } padnamelist_store(PL_comppad_name, offset, name); if (PadnameLEN(name) > 1) - PadnamelistMAXNAMED(PL_comppad_name) = offset; + PadnamelistMAXNAMED(PL_comppad_name) = offset; return offset; } @@ -585,7 +585,7 @@ PADOFFSET Perl_pad_add_name_pvn(pTHX_ const char *namepv, STRLEN namelen, - U32 flags, HV *typestash, HV *ourstash) + U32 flags, HV *typestash, HV *ourstash) { PADOFFSET offset; PADNAME *name; @@ -593,18 +593,18 @@ PERL_ARGS_ASSERT_PAD_ADD_NAME_PVN; if (flags & ~(padadd_OUR|padadd_STATE|padadd_NO_DUP_CHECK)) - Perl_croak(aTHX_ "panic: pad_add_name_pvn illegal flag bits 0x%" UVxf, - (UV)flags); + Perl_croak(aTHX_ "panic: pad_add_name_pvn illegal flag bits 0x%" UVxf, + (UV)flags); name = newPADNAMEpvn(namepv, namelen); if ((flags & padadd_NO_DUP_CHECK) == 0) { - ENTER; - SAVEFREEPADNAME(name); /* in case of fatal warnings */ - /* check for duplicate declaration */ - pad_check_dup(name, flags & padadd_OUR, ourstash); - PadnameREFCNT(name)++; - LEAVE; + ENTER; + SAVEFREEPADNAME(name); /* in case of fatal warnings */ + /* check for duplicate declaration */ + pad_check_dup(name, flags & padadd_OUR, ourstash); + PadnameREFCNT(name)++; + LEAVE; } offset = pad_alloc_name(name, flags, typestash, ourstash); @@ -614,22 +614,22 @@ COP_SEQ_RANGE_HIGH_set(name, 0); if (!PL_min_intro_pending) - PL_min_intro_pending = offset; + PL_min_intro_pending = offset; PL_max_intro_pending = offset; /* if it's not a simple scalar, replace with an AV or HV */ assert(SvTYPE(PL_curpad[offset]) == SVt_NULL); assert(SvREFCNT(PL_curpad[offset]) == 1); if (namelen != 0 && *namepv == '@') - sv_upgrade(PL_curpad[offset], SVt_PVAV); + sv_upgrade(PL_curpad[offset], SVt_PVAV); else if (namelen != 0 && *namepv == '%') - sv_upgrade(PL_curpad[offset], SVt_PVHV); + sv_upgrade(PL_curpad[offset], SVt_PVHV); else if (namelen != 0 && *namepv == '&') - sv_upgrade(PL_curpad[offset], SVt_PVCV); + sv_upgrade(PL_curpad[offset], SVt_PVCV); assert(SvPADMY(PL_curpad[offset])); DEBUG_Xv(PerlIO_printf(Perl_debug_log, - "Pad addname: %ld \"%s\" new lex=0x%" UVxf "\n", - (long)offset, PadnamePV(name), - PTR2UV(PL_curpad[offset]))); + "Pad addname: %ld \"%s\" new lex=0x%" UVxf "\n", + (long)offset, PadnamePV(name), + PTR2UV(PL_curpad[offset]))); return offset; } @@ -645,7 +645,7 @@ PADOFFSET Perl_pad_add_name_pv(pTHX_ const char *name, - const U32 flags, HV *typestash, HV *ourstash) + const U32 flags, HV *typestash, HV *ourstash) { PERL_ARGS_ASSERT_PAD_ADD_NAME_PV; return pad_add_name_pvn(name, strlen(name), flags, typestash, ourstash); @@ -706,63 +706,63 @@ ASSERT_CURPAD_ACTIVE("pad_alloc"); if (AvARRAY(PL_comppad) != PL_curpad) - Perl_croak(aTHX_ "panic: pad_alloc, %p!=%p", - AvARRAY(PL_comppad), PL_curpad); + Perl_croak(aTHX_ "panic: pad_alloc, %p!=%p", + AvARRAY(PL_comppad), PL_curpad); if (PL_pad_reset_pending) - pad_reset(); + pad_reset(); if (tmptype == SVs_PADMY) { /* Not & because this ‘flag’ is 0. */ - /* For a my, simply push a null SV onto the end of PL_comppad. */ - sv = *av_fetch(PL_comppad, AvFILLp(PL_comppad) + 1, TRUE); - retval = (PADOFFSET)AvFILLp(PL_comppad); + /* For a my, simply push a null SV onto the end of PL_comppad. */ + sv = *av_fetch(PL_comppad, AvFILLp(PL_comppad) + 1, TRUE); + retval = (PADOFFSET)AvFILLp(PL_comppad); } else { - /* For a tmp, scan the pad from PL_padix upwards - * for a slot which has no name and no active value. - * For a constant, likewise, but use PL_constpadix. - */ - PADNAME * const * const names = PadnamelistARRAY(PL_comppad_name); - const SSize_t names_fill = PadnamelistMAX(PL_comppad_name); - const bool konst = cBOOL(tmptype & SVf_READONLY); - retval = konst ? PL_constpadix : PL_padix; - for (;;) { - /* - * Entries that close over unavailable variables - * in outer subs contain values not marked PADMY. - * Thus we must skip, not just pad values that are - * marked as current pad values, but also those with names. - * If pad_reset is enabled, ‘current’ means different - * things depending on whether we are allocating a con- - * stant or a target. For a target, things marked PADTMP - * can be reused; not so for constants. - */ - PADNAME *pn; - if (++retval <= names_fill && - (pn = names[retval]) && PadnamePV(pn)) - continue; - sv = *av_fetch(PL_comppad, retval, TRUE); - if (!(SvFLAGS(sv) & + /* For a tmp, scan the pad from PL_padix upwards + * for a slot which has no name and no active value. + * For a constant, likewise, but use PL_constpadix. + */ + PADNAME * const * const names = PadnamelistARRAY(PL_comppad_name); + const SSize_t names_fill = PadnamelistMAX(PL_comppad_name); + const bool konst = cBOOL(tmptype & SVf_READONLY); + retval = konst ? PL_constpadix : PL_padix; + for (;;) { + /* + * Entries that close over unavailable variables + * in outer subs contain values not marked PADMY. + * Thus we must skip, not just pad values that are + * marked as current pad values, but also those with names. + * If pad_reset is enabled, ‘current’ means different + * things depending on whether we are allocating a con- + * stant or a target. For a target, things marked PADTMP + * can be reused; not so for constants. + */ + PADNAME *pn; + if (++retval <= names_fill && + (pn = names[retval]) && PadnamePV(pn)) + continue; + sv = *av_fetch(PL_comppad, retval, TRUE); + if (!(SvFLAGS(sv) & #ifdef USE_PAD_RESET - (konst ? SVs_PADTMP : 0) + (konst ? SVs_PADTMP : 0) #else - SVs_PADTMP + SVs_PADTMP #endif - )) - break; - } - if (konst) { - padnamelist_store(PL_comppad_name, retval, &PL_padname_const); - tmptype &= ~SVf_READONLY; - tmptype |= SVs_PADTMP; - } - *(konst ? &PL_constpadix : &PL_padix) = retval; + )) + break; + } + if (konst) { + padnamelist_store(PL_comppad_name, retval, &PL_padname_const); + tmptype &= ~SVf_READONLY; + tmptype |= SVs_PADTMP; + } + *(konst ? &PL_constpadix : &PL_padix) = retval; } SvFLAGS(sv) |= tmptype; PL_curpad = AvARRAY(PL_comppad); DEBUG_X(PerlIO_printf(Perl_debug_log, - "Pad 0x%" UVxf "[0x%" UVxf "] alloc: %ld for %s\n", - PTR2UV(PL_comppad), PTR2UV(PL_curpad), (long) retval, - PL_op_name[optype])); + "Pad 0x%" UVxf "[0x%" UVxf "] alloc: %ld for %s\n", + PTR2UV(PL_comppad), PTR2UV(PL_curpad), (long) retval, + PL_op_name[optype])); #ifdef DEBUG_LEAKING_SCALARS sv->sv_debug_optype = optype; sv->sv_debug_inpad = 1; @@ -809,9 +809,9 @@ /* to avoid ref loops, we never have parent + child referencing each * other simultaneously */ if (CvOUTSIDE(func)) { - assert(!CvWEAKOUTSIDE(func)); - CvWEAKOUTSIDE_on(func); - SvREFCNT_dec_NN(CvOUTSIDE(func)); + assert(!CvWEAKOUTSIDE(func)); + CvWEAKOUTSIDE_on(func); + SvREFCNT_dec_NN(CvOUTSIDE(func)); } return ix; } @@ -862,58 +862,58 @@ assert((flags & ~padadd_OUR) == 0); if (PadnamelistMAX(PL_comppad_name) < 0 || !ckWARN(WARN_SHADOW)) - return; /* nothing to check */ + return; /* nothing to check */ svp = PadnamelistARRAY(PL_comppad_name); top = PadnamelistMAX(PL_comppad_name); /* check the current scope */ for (off = top; off > PL_comppad_name_floor; off--) { - PADNAME * const sv = svp[off]; - if (sv - && PadnameLEN(sv) == PadnameLEN(name) - && !PadnameOUTER(sv) - && ( COP_SEQ_RANGE_LOW(sv) == PERL_PADSEQ_INTRO - || COP_SEQ_RANGE_HIGH(sv) == PERL_PADSEQ_INTRO) - && memEQ(PadnamePV(sv), PadnamePV(name), PadnameLEN(name))) - { - if (is_our && (SvPAD_OUR(sv))) - break; /* "our" masking "our" */ - /* diag_listed_as: "%s" variable %s masks earlier declaration in same %s */ - Perl_warner(aTHX_ packWARN(WARN_SHADOW), - "\"%s\" %s %" PNf " masks earlier declaration in same %s", - ( is_our ? "our" : + PADNAME * const sv = svp[off]; + if (sv + && PadnameLEN(sv) == PadnameLEN(name) + && !PadnameOUTER(sv) + && ( COP_SEQ_RANGE_LOW(sv) == PERL_PADSEQ_INTRO + || COP_SEQ_RANGE_HIGH(sv) == PERL_PADSEQ_INTRO) + && memEQ(PadnamePV(sv), PadnamePV(name), PadnameLEN(name))) + { + if (is_our && (SvPAD_OUR(sv))) + break; /* "our" masking "our" */ + /* diag_listed_as: "%s" variable %s masks earlier declaration in same %s */ + Perl_warner(aTHX_ packWARN(WARN_SHADOW), + "\"%s\" %s %" PNf " masks earlier declaration in same %s", + ( is_our ? "our" : PL_parser->in_my == KEY_my ? "my" : PL_parser->in_my == KEY_sigvar ? "my" : "state" ), - *PadnamePV(sv) == '&' ? "subroutine" : "variable", - PNfARG(sv), - (COP_SEQ_RANGE_HIGH(sv) == PERL_PADSEQ_INTRO - ? "scope" : "statement")); - --off; - break; - } + *PadnamePV(sv) == '&' ? "subroutine" : "variable", + PNfARG(sv), + (COP_SEQ_RANGE_HIGH(sv) == PERL_PADSEQ_INTRO + ? "scope" : "statement")); + --off; + break; + } } /* check the rest of the pad */ if (is_our) { - while (off > 0) { - PADNAME * const sv = svp[off]; - if (sv - && PadnameLEN(sv) == PadnameLEN(name) - && !PadnameOUTER(sv) - && ( COP_SEQ_RANGE_LOW(sv) == PERL_PADSEQ_INTRO - || COP_SEQ_RANGE_HIGH(sv) == PERL_PADSEQ_INTRO) - && SvOURSTASH(sv) == ourstash - && memEQ(PadnamePV(sv), PadnamePV(name), PadnameLEN(name))) - { - Perl_warner(aTHX_ packWARN(WARN_SHADOW), - "\"our\" variable %" PNf " redeclared", PNfARG(sv)); - if (off <= PL_comppad_name_floor) - Perl_warner(aTHX_ packWARN(WARN_SHADOW), - "\t(Did you mean \"local\" instead of \"our\"?)\n"); - break; - } - --off; - } + while (off > 0) { + PADNAME * const sv = svp[off]; + if (sv + && PadnameLEN(sv) == PadnameLEN(name) + && !PadnameOUTER(sv) + && ( COP_SEQ_RANGE_LOW(sv) == PERL_PADSEQ_INTRO + || COP_SEQ_RANGE_HIGH(sv) == PERL_PADSEQ_INTRO) + && SvOURSTASH(sv) == ourstash + && memEQ(PadnamePV(sv), PadnamePV(name), PadnameLEN(name))) + { + Perl_warner(aTHX_ packWARN(WARN_SHADOW), + "\"our\" variable %" PNf " redeclared", PNfARG(sv)); + if (off <= PL_comppad_name_floor) + Perl_warner(aTHX_ packWARN(WARN_SHADOW), + "\t(Did you mean \"local\" instead of \"our\"?)\n"); + break; + } + --off; + } } } @@ -947,8 +947,8 @@ pad_peg("pad_findmy_pvn"); if (flags) - Perl_croak(aTHX_ "panic: pad_findmy_pvn illegal flag bits 0x%" UVxf, - (UV)flags); + Perl_croak(aTHX_ "panic: pad_findmy_pvn illegal flag bits 0x%" UVxf, + (UV)flags); /* compilation errors can zero PL_compcv */ if (!PL_compcv) @@ -957,7 +957,7 @@ offset = pad_findlex(namepv, namelen, flags, PL_compcv, PL_cop_seqmax, 1, NULL, &out_pn, &out_flags); if (offset != NOT_IN_PAD) - return offset; + return offset; /* Skip the ‘our’ hack for subroutines, as the warning does not apply. */ @@ -977,8 +977,8 @@ && ( PadnamePV(name) == namepv || memEQ(PadnamePV(name), namepv, namelen) ) && COP_SEQ_RANGE_LOW(name) == PERL_PADSEQ_INTRO - ) - return offset; + ) + return offset; } return NOT_IN_PAD; } @@ -1070,7 +1070,7 @@ Note that C is recursive; it recurses up the chain of CVs, then comes back down, adding fake entries as it goes. It has to be this way -because fake names in anon protoypes have to store in C the +because fake names in anon prototypes have to store in C the index into the parent pad. =cut @@ -1088,16 +1088,16 @@ { /* diag_listed_as: Variable "%s" is not available */ Perl_ck_warner(aTHX_ packWARN(WARN_CLOSURE), - "%s \"%" PNf "\" is not available", - *PadnamePV(name) == '&' - ? "Subroutine" - : "Variable", - PNfARG(name)); + "%s \"%" PNf "\" is not available", + *PadnamePV(name) == '&' + ? "Subroutine" + : "Variable", + PNfARG(name)); } STATIC PADOFFSET S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv, U32 seq, - int warn, SV** out_capture, PADNAME** out_name, int *out_flags) + int warn, SV** out_capture, PADNAME** out_name, int *out_flags) { PADOFFSET offset, new_offset; SV *new_capture; @@ -1109,226 +1109,226 @@ flags &= ~ padadd_STALEOK; /* one-shot flag */ if (flags) - Perl_croak(aTHX_ "panic: pad_findlex illegal flag bits 0x%" UVxf, - (UV)flags); + Perl_croak(aTHX_ "panic: pad_findlex illegal flag bits 0x%" UVxf, + (UV)flags); *out_flags = 0; DEBUG_Xv(PerlIO_printf(Perl_debug_log, - "Pad findlex cv=0x%" UVxf " searching \"%.*s\" seq=%d%s\n", - PTR2UV(cv), (int)namelen, namepv, (int)seq, - out_capture ? " capturing" : "" )); + "Pad findlex cv=0x%" UVxf " searching \"%.*s\" seq=%d%s\n", + PTR2UV(cv), (int)namelen, namepv, (int)seq, + out_capture ? " capturing" : "" )); /* first, search this pad */ if (padlist) { /* not an undef CV */ - PADOFFSET fake_offset = 0; + PADOFFSET fake_offset = 0; const PADNAMELIST * const names = PadlistNAMES(padlist); - PADNAME * const * const name_p = PadnamelistARRAY(names); + PADNAME * const * const name_p = PadnamelistARRAY(names); - for (offset = PadnamelistMAXNAMED(names); offset > 0; offset--) { + for (offset = PadnamelistMAXNAMED(names); offset > 0; offset--) { const PADNAME * const name = name_p[offset]; if (name && PadnameLEN(name) == namelen && ( PadnamePV(name) == namepv || memEQ(PadnamePV(name), namepv, namelen) )) - { - if (PadnameOUTER(name)) { - fake_offset = offset; /* in case we don't find a real one */ - continue; - } - if (PadnameIN_SCOPE(name, seq)) - break; - } - } - - if (offset > 0 || fake_offset > 0 ) { /* a match! */ - if (offset > 0) { /* not fake */ - fake_offset = 0; - *out_name = name_p[offset]; /* return the name */ - - /* set PAD_FAKELEX_MULTI if this lex can have multiple - * instances. For now, we just test !CvUNIQUE(cv), but - * ideally, we should detect my's declared within loops - * etc - this would allow a wider range of 'not stayed - * shared' warnings. We also treated already-compiled - * lexes as not multi as viewed from evals. */ - - *out_flags = CvANON(cv) ? - PAD_FAKELEX_ANON : - (!CvUNIQUE(cv) && ! CvCOMPILED(cv)) - ? PAD_FAKELEX_MULTI : 0; - - DEBUG_Xv(PerlIO_printf(Perl_debug_log, - "Pad findlex cv=0x%" UVxf " matched: offset=%ld (%lu,%lu)\n", - PTR2UV(cv), (long)offset, - (unsigned long)COP_SEQ_RANGE_LOW(*out_name), - (unsigned long)COP_SEQ_RANGE_HIGH(*out_name))); - } - else { /* fake match */ - offset = fake_offset; - *out_name = name_p[offset]; /* return the name */ - *out_flags = PARENT_FAKELEX_FLAGS(*out_name); - DEBUG_Xv(PerlIO_printf(Perl_debug_log, - "Pad findlex cv=0x%" UVxf " matched: offset=%ld flags=0x%lx index=%lu\n", - PTR2UV(cv), (long)offset, (unsigned long)*out_flags, - (unsigned long) PARENT_PAD_INDEX(*out_name) - )); - } - - /* return the lex? */ - - if (out_capture) { - - /* our ? */ - if (PadnameIsOUR(*out_name)) { - *out_capture = NULL; - return offset; - } - - /* trying to capture from an anon prototype? */ - if (CvCOMPILED(cv) - ? CvANON(cv) && CvCLONE(cv) && !CvCLONED(cv) - : *out_flags & PAD_FAKELEX_ANON) - { - if (warn) - S_unavailable(aTHX_ - *out_name); - - *out_capture = NULL; - } - - /* real value */ - else { - int newwarn = warn; - if (!CvCOMPILED(cv) && (*out_flags & PAD_FAKELEX_MULTI) - && !PadnameIsSTATE(name_p[offset]) - && warn && ckWARN(WARN_CLOSURE)) { - newwarn = 0; - /* diag_listed_as: Variable "%s" will not stay - shared */ - Perl_warner(aTHX_ packWARN(WARN_CLOSURE), - "%s \"%" UTF8f "\" will not stay shared", - *namepv == '&' ? "Subroutine" : "Variable", - UTF8fARG(1, namelen, namepv)); - } - - if (fake_offset && CvANON(cv) - && CvCLONE(cv) &&!CvCLONED(cv)) - { - PADNAME *n; - /* not yet caught - look further up */ - DEBUG_Xv(PerlIO_printf(Perl_debug_log, - "Pad findlex cv=0x%" UVxf " chasing lex in outer pad\n", - PTR2UV(cv))); - n = *out_name; - (void) pad_findlex(namepv, namelen, flags, CvOUTSIDE(cv), - CvOUTSIDE_SEQ(cv), - newwarn, out_capture, out_name, out_flags); - *out_name = n; - return offset; - } - - *out_capture = AvARRAY(PadlistARRAY(padlist)[ - CvDEPTH(cv) ? CvDEPTH(cv) : 1])[offset]; - DEBUG_Xv(PerlIO_printf(Perl_debug_log, - "Pad findlex cv=0x%" UVxf " found lex=0x%" UVxf "\n", - PTR2UV(cv), PTR2UV(*out_capture))); - - if (SvPADSTALE(*out_capture) - && (!CvDEPTH(cv) || !staleok) - && !PadnameIsSTATE(name_p[offset])) - { - S_unavailable(aTHX_ - name_p[offset]); - *out_capture = NULL; - } - } - if (!*out_capture) { - if (namelen != 0 && *namepv == '@') - *out_capture = sv_2mortal(MUTABLE_SV(newAV())); - else if (namelen != 0 && *namepv == '%') - *out_capture = sv_2mortal(MUTABLE_SV(newHV())); - else if (namelen != 0 && *namepv == '&') - *out_capture = sv_2mortal(newSV_type(SVt_PVCV)); - else - *out_capture = sv_newmortal(); - } - } + { + if (PadnameOUTER(name)) { + fake_offset = offset; /* in case we don't find a real one */ + continue; + } + if (PadnameIN_SCOPE(name, seq)) + break; + } + } + + if (offset > 0 || fake_offset > 0 ) { /* a match! */ + if (offset > 0) { /* not fake */ + fake_offset = 0; + *out_name = name_p[offset]; /* return the name */ + + /* set PAD_FAKELEX_MULTI if this lex can have multiple + * instances. For now, we just test !CvUNIQUE(cv), but + * ideally, we should detect my's declared within loops + * etc - this would allow a wider range of 'not stayed + * shared' warnings. We also treated already-compiled + * lexes as not multi as viewed from evals. */ + + *out_flags = CvANON(cv) ? + PAD_FAKELEX_ANON : + (!CvUNIQUE(cv) && ! CvCOMPILED(cv)) + ? PAD_FAKELEX_MULTI : 0; + + DEBUG_Xv(PerlIO_printf(Perl_debug_log, + "Pad findlex cv=0x%" UVxf " matched: offset=%ld (%lu,%lu)\n", + PTR2UV(cv), (long)offset, + (unsigned long)COP_SEQ_RANGE_LOW(*out_name), + (unsigned long)COP_SEQ_RANGE_HIGH(*out_name))); + } + else { /* fake match */ + offset = fake_offset; + *out_name = name_p[offset]; /* return the name */ + *out_flags = PARENT_FAKELEX_FLAGS(*out_name); + DEBUG_Xv(PerlIO_printf(Perl_debug_log, + "Pad findlex cv=0x%" UVxf " matched: offset=%ld flags=0x%lx index=%lu\n", + PTR2UV(cv), (long)offset, (unsigned long)*out_flags, + (unsigned long) PARENT_PAD_INDEX(*out_name) + )); + } + + /* return the lex? */ + + if (out_capture) { + + /* our ? */ + if (PadnameIsOUR(*out_name)) { + *out_capture = NULL; + return offset; + } + + /* trying to capture from an anon prototype? */ + if (CvCOMPILED(cv) + ? CvANON(cv) && CvCLONE(cv) && !CvCLONED(cv) + : *out_flags & PAD_FAKELEX_ANON) + { + if (warn) + S_unavailable(aTHX_ + *out_name); + + *out_capture = NULL; + } + + /* real value */ + else { + int newwarn = warn; + if (!CvCOMPILED(cv) && (*out_flags & PAD_FAKELEX_MULTI) + && !PadnameIsSTATE(name_p[offset]) + && warn && ckWARN(WARN_CLOSURE)) { + newwarn = 0; + /* diag_listed_as: Variable "%s" will not stay + shared */ + Perl_warner(aTHX_ packWARN(WARN_CLOSURE), + "%s \"%" UTF8f "\" will not stay shared", + *namepv == '&' ? "Subroutine" : "Variable", + UTF8fARG(1, namelen, namepv)); + } + + if (fake_offset && CvANON(cv) + && CvCLONE(cv) &&!CvCLONED(cv)) + { + PADNAME *n; + /* not yet caught - look further up */ + DEBUG_Xv(PerlIO_printf(Perl_debug_log, + "Pad findlex cv=0x%" UVxf " chasing lex in outer pad\n", + PTR2UV(cv))); + n = *out_name; + (void) pad_findlex(namepv, namelen, flags, CvOUTSIDE(cv), + CvOUTSIDE_SEQ(cv), + newwarn, out_capture, out_name, out_flags); + *out_name = n; + return offset; + } + + *out_capture = AvARRAY(PadlistARRAY(padlist)[ + CvDEPTH(cv) ? CvDEPTH(cv) : 1])[offset]; + DEBUG_Xv(PerlIO_printf(Perl_debug_log, + "Pad findlex cv=0x%" UVxf " found lex=0x%" UVxf "\n", + PTR2UV(cv), PTR2UV(*out_capture))); + + if (SvPADSTALE(*out_capture) + && (!CvDEPTH(cv) || !staleok) + && !PadnameIsSTATE(name_p[offset])) + { + S_unavailable(aTHX_ + name_p[offset]); + *out_capture = NULL; + } + } + if (!*out_capture) { + if (namelen != 0 && *namepv == '@') + *out_capture = sv_2mortal(MUTABLE_SV(newAV())); + else if (namelen != 0 && *namepv == '%') + *out_capture = sv_2mortal(MUTABLE_SV(newHV())); + else if (namelen != 0 && *namepv == '&') + *out_capture = sv_2mortal(newSV_type(SVt_PVCV)); + else + *out_capture = sv_newmortal(); + } + } - return offset; - } + return offset; + } } /* it's not in this pad - try above */ if (!CvOUTSIDE(cv)) - return NOT_IN_PAD; + return NOT_IN_PAD; /* out_capture non-null means caller wants us to capture lex; in * addition we capture ourselves unless it's an ANON/format */ new_capturep = out_capture ? out_capture : - CvLATE(cv) ? NULL : &new_capture; + CvLATE(cv) ? NULL : &new_capture; offset = pad_findlex(namepv, namelen, - flags | padadd_STALEOK*(new_capturep == &new_capture), - CvOUTSIDE(cv), CvOUTSIDE_SEQ(cv), 1, - new_capturep, out_name, out_flags); + flags | padadd_STALEOK*(new_capturep == &new_capture), + CvOUTSIDE(cv), CvOUTSIDE_SEQ(cv), 1, + new_capturep, out_name, out_flags); if (offset == NOT_IN_PAD) - return NOT_IN_PAD; + return NOT_IN_PAD; /* found in an outer CV. Add appropriate fake entry to this pad */ /* don't add new fake entries (via eval) to CVs that we have already * finished compiling, or to undef CVs */ if (CvCOMPILED(cv) || !padlist) - return 0; /* this dummy (and invalid) value isnt used by the caller */ + return 0; /* this dummy (and invalid) value isnt used by the caller */ { - PADNAME *new_name = newPADNAMEouter(*out_name); - PADNAMELIST * const ocomppad_name = PL_comppad_name; - PAD * const ocomppad = PL_comppad; - PL_comppad_name = PadlistNAMES(padlist); - PL_comppad = PadlistARRAY(padlist)[1]; - PL_curpad = AvARRAY(PL_comppad); - - new_offset - = pad_alloc_name(new_name, - PadnameIsSTATE(*out_name) ? padadd_STATE : 0, - PadnameTYPE(*out_name), - PadnameOURSTASH(*out_name) - ); - - DEBUG_Xv(PerlIO_printf(Perl_debug_log, - "Pad addname: %ld \"%.*s\" FAKE\n", - (long)new_offset, - (int) PadnameLEN(new_name), - PadnamePV(new_name))); - PARENT_FAKELEX_FLAGS_set(new_name, *out_flags); - - PARENT_PAD_INDEX_set(new_name, 0); - if (PadnameIsOUR(new_name)) { - NOOP; /* do nothing */ - } - else if (CvLATE(cv)) { - /* delayed creation - just note the offset within parent pad */ - PARENT_PAD_INDEX_set(new_name, offset); - CvCLONE_on(cv); - } - else { - /* immediate creation - capture outer value right now */ - av_store(PL_comppad, new_offset, SvREFCNT_inc(*new_capturep)); - /* But also note the offset, as newMYSUB needs it */ - PARENT_PAD_INDEX_set(new_name, offset); - DEBUG_Xv(PerlIO_printf(Perl_debug_log, - "Pad findlex cv=0x%" UVxf " saved captured sv 0x%" UVxf " at offset %ld\n", - PTR2UV(cv), PTR2UV(*new_capturep), (long)new_offset)); - } - *out_name = new_name; - *out_flags = PARENT_FAKELEX_FLAGS(new_name); - - PL_comppad_name = ocomppad_name; - PL_comppad = ocomppad; - PL_curpad = ocomppad ? AvARRAY(ocomppad) : NULL; + PADNAME *new_name = newPADNAMEouter(*out_name); + PADNAMELIST * const ocomppad_name = PL_comppad_name; + PAD * const ocomppad = PL_comppad; + PL_comppad_name = PadlistNAMES(padlist); + PL_comppad = PadlistARRAY(padlist)[1]; + PL_curpad = AvARRAY(PL_comppad); + + new_offset + = pad_alloc_name(new_name, + PadnameIsSTATE(*out_name) ? padadd_STATE : 0, + PadnameTYPE(*out_name), + PadnameOURSTASH(*out_name) + ); + + DEBUG_Xv(PerlIO_printf(Perl_debug_log, + "Pad addname: %ld \"%.*s\" FAKE\n", + (long)new_offset, + (int) PadnameLEN(new_name), + PadnamePV(new_name))); + PARENT_FAKELEX_FLAGS_set(new_name, *out_flags); + + PARENT_PAD_INDEX_set(new_name, 0); + if (PadnameIsOUR(new_name)) { + NOOP; /* do nothing */ + } + else if (CvLATE(cv)) { + /* delayed creation - just note the offset within parent pad */ + PARENT_PAD_INDEX_set(new_name, offset); + CvCLONE_on(cv); + } + else { + /* immediate creation - capture outer value right now */ + av_store(PL_comppad, new_offset, SvREFCNT_inc(*new_capturep)); + /* But also note the offset, as newMYSUB needs it */ + PARENT_PAD_INDEX_set(new_name, offset); + DEBUG_Xv(PerlIO_printf(Perl_debug_log, + "Pad findlex cv=0x%" UVxf " saved captured sv 0x%" UVxf " at offset %ld\n", + PTR2UV(cv), PTR2UV(*new_capturep), (long)new_offset)); + } + *out_name = new_name; + *out_flags = PARENT_FAKELEX_FLAGS(new_name); + + PL_comppad_name = ocomppad_name; + PL_comppad = ocomppad; + PL_curpad = ocomppad ? AvARRAY(ocomppad) : NULL; } return new_offset; } @@ -1350,10 +1350,10 @@ ASSERT_CURPAD_ACTIVE("pad_sv"); if (!po) - Perl_croak(aTHX_ "panic: pad_sv po"); + Perl_croak(aTHX_ "panic: pad_sv po"); DEBUG_X(PerlIO_printf(Perl_debug_log, - "Pad 0x%" UVxf "[0x%" UVxf "] sv: %ld sv=0x%" UVxf "\n", - PTR2UV(PL_comppad), PTR2UV(PL_curpad), (long)po, PTR2UV(PL_curpad[po])) + "Pad 0x%" UVxf "[0x%" UVxf "] sv: %ld sv=0x%" UVxf "\n", + PTR2UV(PL_comppad), PTR2UV(PL_curpad), (long)po, PTR2UV(PL_curpad[po])) ); return PL_curpad[po]; } @@ -1375,8 +1375,8 @@ ASSERT_CURPAD_ACTIVE("pad_setsv"); DEBUG_X(PerlIO_printf(Perl_debug_log, - "Pad 0x%" UVxf "[0x%" UVxf "] setsv: %ld sv=0x%" UVxf "\n", - PTR2UV(PL_comppad), PTR2UV(PL_curpad), (long)po, PTR2UV(sv)) + "Pad 0x%" UVxf "[0x%" UVxf "] setsv: %ld sv=0x%" UVxf "\n", + PTR2UV(PL_comppad), PTR2UV(PL_curpad), (long)po, PTR2UV(sv)) ); PL_curpad[po] = sv; } @@ -1398,9 +1398,9 @@ save_strlen((STRLEN *)&PL_comppad_name_floor); PL_comppad_name_floor = PadnamelistMAX(PL_comppad_name); if (full) - PL_comppad_name_fill = PL_comppad_name_floor; + PL_comppad_name_fill = PL_comppad_name_floor; if (PL_comppad_name_floor < 0) - PL_comppad_name_floor = 0; + PL_comppad_name_floor = 0; save_strlen((STRLEN *)&PL_min_intro_pending); save_strlen((STRLEN *)&PL_max_intro_pending); PL_min_intro_pending = 0; @@ -1409,7 +1409,7 @@ /* PL_padix_floor is what PL_padix is reset to at the start of each statement, by pad_reset(). We set it when entering a new scope to keep things like this working: - print "$foo$bar", do { this(); that() . "foo" }; + print "$foo$bar", do { this(); that() . "foo" }; We must not let "$foo$bar" and the later concatenation share the same target. */ PL_padix_floor = PL_padix; @@ -1435,36 +1435,36 @@ ASSERT_CURPAD_ACTIVE("intro_my"); if (PL_compiling.cop_seq) { - seq = PL_compiling.cop_seq; - PL_compiling.cop_seq = 0; + seq = PL_compiling.cop_seq; + PL_compiling.cop_seq = 0; } else - seq = PL_cop_seqmax; + seq = PL_cop_seqmax; if (! PL_min_intro_pending) - return seq; + return seq; svp = PadnamelistARRAY(PL_comppad_name); for (i = PL_min_intro_pending; i <= PL_max_intro_pending; i++) { - PADNAME * const sv = svp[i]; + PADNAME * const sv = svp[i]; - if (sv && PadnameLEN(sv) && !PadnameOUTER(sv) - && COP_SEQ_RANGE_LOW(sv) == PERL_PADSEQ_INTRO) - { - COP_SEQ_RANGE_HIGH_set(sv, PERL_PADSEQ_INTRO); /* Don't know scope end yet. */ - COP_SEQ_RANGE_LOW_set(sv, PL_cop_seqmax); - DEBUG_Xv(PerlIO_printf(Perl_debug_log, - "Pad intromy: %ld \"%s\", (%lu,%lu)\n", - (long)i, PadnamePV(sv), - (unsigned long)COP_SEQ_RANGE_LOW(sv), - (unsigned long)COP_SEQ_RANGE_HIGH(sv)) - ); - } + if (sv && PadnameLEN(sv) && !PadnameOUTER(sv) + && COP_SEQ_RANGE_LOW(sv) == PERL_PADSEQ_INTRO) + { + COP_SEQ_RANGE_HIGH_set(sv, PERL_PADSEQ_INTRO); /* Don't know scope end yet. */ + COP_SEQ_RANGE_LOW_set(sv, PL_cop_seqmax); + DEBUG_Xv(PerlIO_printf(Perl_debug_log, + "Pad intromy: %ld \"%s\", (%lu,%lu)\n", + (long)i, PadnamePV(sv), + (unsigned long)COP_SEQ_RANGE_LOW(sv), + (unsigned long)COP_SEQ_RANGE_HIGH(sv)) + ); + } } COP_SEQMAX_INC; PL_min_intro_pending = 0; PL_comppad_name_fill = PL_max_intro_pending; /* Needn't search higher */ DEBUG_Xv(PerlIO_printf(Perl_debug_log, - "Pad intromy: seq -> %ld\n", (long)(PL_cop_seqmax))); + "Pad intromy: seq -> %ld\n", (long)(PL_cop_seqmax))); return seq; } @@ -1489,39 +1489,39 @@ ASSERT_CURPAD_ACTIVE("pad_leavemy"); if (PL_min_intro_pending && PL_comppad_name_fill < PL_min_intro_pending) { - for (off = PL_max_intro_pending; off >= PL_min_intro_pending; off--) { - const PADNAME * const name = svp[off]; - if (name && PadnameLEN(name) && !PadnameOUTER(name)) - Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL), - "%" PNf " never introduced", - PNfARG(name)); - } + for (off = PL_max_intro_pending; off >= PL_min_intro_pending; off--) { + const PADNAME * const name = svp[off]; + if (name && PadnameLEN(name) && !PadnameOUTER(name)) + Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL), + "%" PNf " never introduced", + PNfARG(name)); + } } /* "Deintroduce" my variables that are leaving with this scope. */ for (off = PadnamelistMAX(PL_comppad_name); - off > PL_comppad_name_fill; off--) { - PADNAME * const sv = svp[off]; - if (sv && PadnameLEN(sv) && !PadnameOUTER(sv) - && COP_SEQ_RANGE_HIGH(sv) == PERL_PADSEQ_INTRO) - { - COP_SEQ_RANGE_HIGH_set(sv, PL_cop_seqmax); - DEBUG_Xv(PerlIO_printf(Perl_debug_log, - "Pad leavemy: %ld \"%s\", (%lu,%lu)\n", - (long)off, PadnamePV(sv), - (unsigned long)COP_SEQ_RANGE_LOW(sv), - (unsigned long)COP_SEQ_RANGE_HIGH(sv)) - ); - if (!PadnameIsSTATE(sv) && !PadnameIsOUR(sv) - && *PadnamePV(sv) == '&' && PadnameLEN(sv) > 1) { - OP *kid = newOP(OP_INTROCV, 0); - kid->op_targ = off; - o = op_prepend_elem(OP_LINESEQ, kid, o); - } - } + off > PL_comppad_name_fill; off--) { + PADNAME * const sv = svp[off]; + if (sv && PadnameLEN(sv) && !PadnameOUTER(sv) + && COP_SEQ_RANGE_HIGH(sv) == PERL_PADSEQ_INTRO) + { + COP_SEQ_RANGE_HIGH_set(sv, PL_cop_seqmax); + DEBUG_Xv(PerlIO_printf(Perl_debug_log, + "Pad leavemy: %ld \"%s\", (%lu,%lu)\n", + (long)off, PadnamePV(sv), + (unsigned long)COP_SEQ_RANGE_LOW(sv), + (unsigned long)COP_SEQ_RANGE_HIGH(sv)) + ); + if (!PadnameIsSTATE(sv) && !PadnameIsOUR(sv) + && *PadnamePV(sv) == '&' && PadnameLEN(sv) > 1) { + OP *kid = newOP(OP_INTROCV, 0); + kid->op_targ = off; + o = op_prepend_elem(OP_LINESEQ, kid, o); + } + } } COP_SEQMAX_INC; DEBUG_Xv(PerlIO_printf(Perl_debug_log, - "Pad leavemy: seq = %ld\n", (long)PL_cop_seqmax)); + "Pad leavemy: seq = %ld\n", (long)PL_cop_seqmax)); return o; } @@ -1539,20 +1539,20 @@ { ASSERT_CURPAD_LEGAL("pad_swipe"); if (!PL_curpad) - return; + return; if (AvARRAY(PL_comppad) != PL_curpad) - Perl_croak(aTHX_ "panic: pad_swipe curpad, %p!=%p", - AvARRAY(PL_comppad), PL_curpad); + Perl_croak(aTHX_ "panic: pad_swipe curpad, %p!=%p", + AvARRAY(PL_comppad), PL_curpad); if (!po || ((SSize_t)po) > AvFILLp(PL_comppad)) - Perl_croak(aTHX_ "panic: pad_swipe po=%ld, fill=%ld", - (long)po, (long)AvFILLp(PL_comppad)); + Perl_croak(aTHX_ "panic: pad_swipe po=%ld, fill=%ld", + (long)po, (long)AvFILLp(PL_comppad)); DEBUG_X(PerlIO_printf(Perl_debug_log, - "Pad 0x%" UVxf "[0x%" UVxf "] swipe: %ld\n", - PTR2UV(PL_comppad), PTR2UV(PL_curpad), (long)po)); + "Pad 0x%" UVxf "[0x%" UVxf "] swipe: %ld\n", + PTR2UV(PL_comppad), PTR2UV(PL_curpad), (long)po)); if (refadjust) - SvREFCNT_dec(PL_curpad[po]); + SvREFCNT_dec(PL_curpad[po]); /* if pad tmps aren't shared between ops, then there's no need to @@ -1565,16 +1565,16 @@ #endif if (PadnamelistMAX(PL_comppad_name) != -1 && (PADOFFSET)PadnamelistMAX(PL_comppad_name) >= po) { - if (PadnamelistARRAY(PL_comppad_name)[po]) { - assert(!PadnameLEN(PadnamelistARRAY(PL_comppad_name)[po])); - } - PadnamelistARRAY(PL_comppad_name)[po] = &PL_padname_undef; + if (PadnamelistARRAY(PL_comppad_name)[po]) { + assert(!PadnameLEN(PadnamelistARRAY(PL_comppad_name)[po])); + } + PadnamelistARRAY(PL_comppad_name)[po] = &PL_padname_undef; } /* Use PL_constpadix here, not PL_padix. The latter may have been reset by pad_reset. We don’t want pad_alloc to have to scan the whole pad when allocating a constant. */ if (po < PL_constpadix) - PL_constpadix = po - 1; + PL_constpadix = po - 1; } /* @@ -1595,18 +1595,18 @@ { #ifdef USE_PAD_RESET if (AvARRAY(PL_comppad) != PL_curpad) - Perl_croak(aTHX_ "panic: pad_reset curpad, %p!=%p", - AvARRAY(PL_comppad), PL_curpad); + Perl_croak(aTHX_ "panic: pad_reset curpad, %p!=%p", + AvARRAY(PL_comppad), PL_curpad); DEBUG_X(PerlIO_printf(Perl_debug_log, - "Pad 0x%" UVxf "[0x%" UVxf "] reset: padix %ld -> %ld", - PTR2UV(PL_comppad), PTR2UV(PL_curpad), - (long)PL_padix, (long)PL_padix_floor - ) + "Pad 0x%" UVxf "[0x%" UVxf "] reset: padix %ld -> %ld", + PTR2UV(PL_comppad), PTR2UV(PL_curpad), + (long)PL_padix, (long)PL_padix_floor + ) ); if (!TAINTING_get) { /* Can't mix tainted and non-tainted temporaries. */ - PL_padix = PL_padix_floor; + PL_padix = PL_padix_floor; } #endif PL_pad_reset_pending = FALSE; @@ -1630,7 +1630,6 @@ void Perl_pad_tidy(pTHX_ padtidy_type type) { - dVAR; ASSERT_CURPAD_ACTIVE("pad_tidy"); @@ -1653,79 +1652,79 @@ if (PL_cv_has_eval || PL_perldb) { const CV *cv; - for (cv = PL_compcv ;cv; cv = CvOUTSIDE(cv)) { - if (cv != PL_compcv && CvCOMPILED(cv)) - break; /* no need to mark already-compiled code */ - if (CvANON(cv)) { - DEBUG_Xv(PerlIO_printf(Perl_debug_log, - "Pad clone on cv=0x%" UVxf "\n", PTR2UV(cv))); - CvCLONE_on(cv); - } - CvHASEVAL_on(cv); - } + for (cv = PL_compcv ;cv; cv = CvOUTSIDE(cv)) { + if (cv != PL_compcv && CvCOMPILED(cv)) + break; /* no need to mark already-compiled code */ + if (CvANON(cv)) { + DEBUG_Xv(PerlIO_printf(Perl_debug_log, + "Pad clone on cv=0x%" UVxf "\n", PTR2UV(cv))); + CvCLONE_on(cv); + } + CvHASEVAL_on(cv); + } } /* extend namepad to match curpad */ if (PadnamelistMAX(PL_comppad_name) < AvFILLp(PL_comppad)) - padnamelist_store(PL_comppad_name, AvFILLp(PL_comppad), NULL); + padnamelist_store(PL_comppad_name, AvFILLp(PL_comppad), NULL); if (type == padtidy_SUBCLONE) { - PADNAME ** const namep = PadnamelistARRAY(PL_comppad_name); - PADOFFSET ix; + PADNAME ** const namep = PadnamelistARRAY(PL_comppad_name); + PADOFFSET ix; - for (ix = AvFILLp(PL_comppad); ix > 0; ix--) { - PADNAME *namesv; - if (!namep[ix]) namep[ix] = &PL_padname_undef; - - /* - * The only things that a clonable function needs in its - * pad are anonymous subs, constants and GVs. - * The rest are created anew during cloning. - */ - if (!PL_curpad[ix] || SvIMMORTAL(PL_curpad[ix])) - continue; - namesv = namep[ix]; - if (!(PadnamePV(namesv) && - (!PadnameLEN(namesv) || *PadnamePV(namesv) == '&'))) - { - SvREFCNT_dec(PL_curpad[ix]); - PL_curpad[ix] = NULL; - } - } + for (ix = AvFILLp(PL_comppad); ix > 0; ix--) { + PADNAME *namesv; + if (!namep[ix]) namep[ix] = &PL_padname_undef; + + /* + * The only things that a clonable function needs in its + * pad are anonymous subs, constants and GVs. + * The rest are created anew during cloning. + */ + if (!PL_curpad[ix] || SvIMMORTAL(PL_curpad[ix])) + continue; + namesv = namep[ix]; + if (!(PadnamePV(namesv) && + (!PadnameLEN(namesv) || *PadnamePV(namesv) == '&'))) + { + SvREFCNT_dec(PL_curpad[ix]); + PL_curpad[ix] = NULL; + } + } } else if (type == padtidy_SUB) { - AV * const av = newAV(); /* Will be @_ */ - av_store(PL_comppad, 0, MUTABLE_SV(av)); - AvREIFY_only(av); + AV * const av = newAV(); /* Will be @_ */ + av_store(PL_comppad, 0, MUTABLE_SV(av)); + AvREIFY_only(av); } if (type == padtidy_SUB || type == padtidy_FORMAT) { - PADNAME ** const namep = PadnamelistARRAY(PL_comppad_name); - PADOFFSET ix; - for (ix = AvFILLp(PL_comppad); ix > 0; ix--) { - if (!namep[ix]) namep[ix] = &PL_padname_undef; - if (!PL_curpad[ix] || SvIMMORTAL(PL_curpad[ix])) - continue; - if (SvPADMY(PL_curpad[ix]) && !PadnameOUTER(namep[ix])) { - /* This is a work around for how the current implementation of - ?{ } blocks in regexps interacts with lexicals. - - One of our lexicals. - Can't do this on all lexicals, otherwise sub baz() won't - compile in - - my $foo; - - sub bar { ++$foo; } - - sub baz { ++$foo; } - - because completion of compiling &bar calling pad_tidy() - would cause (top level) $foo to be marked as stale, and - "no longer available". */ - SvPADSTALE_on(PL_curpad[ix]); - } - } + PADNAME ** const namep = PadnamelistARRAY(PL_comppad_name); + PADOFFSET ix; + for (ix = AvFILLp(PL_comppad); ix > 0; ix--) { + if (!namep[ix]) namep[ix] = &PL_padname_undef; + if (!PL_curpad[ix] || SvIMMORTAL(PL_curpad[ix])) + continue; + if (SvPADMY(PL_curpad[ix]) && !PadnameOUTER(namep[ix])) { + /* This is a work around for how the current implementation of + ?{ } blocks in regexps interacts with lexicals. + + One of our lexicals. + Can't do this on all lexicals, otherwise sub baz() won't + compile in + + my $foo; + + sub bar { ++$foo; } + + sub baz { ++$foo; } + + because completion of compiling &bar calling pad_tidy() + would cause (top level) $foo to be marked as stale, and + "no longer available". */ + SvPADSTALE_on(PL_curpad[ix]); + } + } } PL_curpad = AvARRAY(PL_comppad); } @@ -1746,25 +1745,25 @@ #endif ASSERT_CURPAD_LEGAL("pad_free"); if (!PL_curpad) - return; + return; if (AvARRAY(PL_comppad) != PL_curpad) - Perl_croak(aTHX_ "panic: pad_free curpad, %p!=%p", - AvARRAY(PL_comppad), PL_curpad); + Perl_croak(aTHX_ "panic: pad_free curpad, %p!=%p", + AvARRAY(PL_comppad), PL_curpad); if (!po) - Perl_croak(aTHX_ "panic: pad_free po"); + Perl_croak(aTHX_ "panic: pad_free po"); DEBUG_X(PerlIO_printf(Perl_debug_log, - "Pad 0x%" UVxf "[0x%" UVxf "] free: %ld\n", - PTR2UV(PL_comppad), PTR2UV(PL_curpad), (long)po) + "Pad 0x%" UVxf "[0x%" UVxf "] free: %ld\n", + PTR2UV(PL_comppad), PTR2UV(PL_curpad), (long)po) ); #ifndef USE_PAD_RESET sv = PL_curpad[po]; if (sv && sv != &PL_sv_undef && !SvPADMY(sv)) - SvFLAGS(sv) &= ~SVs_PADTMP; + SvFLAGS(sv) &= ~SVs_PADTMP; if (po < PL_padix) - PL_padix = po - 1; + PL_padix = po - 1; #endif } @@ -1788,53 +1787,53 @@ PERL_ARGS_ASSERT_DO_DUMP_PAD; if (!padlist) { - return; + return; } pad_name = PadlistNAMES(padlist); pad = PadlistARRAY(padlist)[1]; pname = PadnamelistARRAY(pad_name); ppad = AvARRAY(pad); Perl_dump_indent(aTHX_ level, file, - "PADNAME = 0x%" UVxf "(0x%" UVxf ") PAD = 0x%" UVxf "(0x%" UVxf ")\n", - PTR2UV(pad_name), PTR2UV(pname), PTR2UV(pad), PTR2UV(ppad) + "PADNAME = 0x%" UVxf "(0x%" UVxf ") PAD = 0x%" UVxf "(0x%" UVxf ")\n", + PTR2UV(pad_name), PTR2UV(pname), PTR2UV(pad), PTR2UV(ppad) ); for (ix = 1; ix <= PadnamelistMAX(pad_name); ix++) { const PADNAME *namesv = pname[ix]; - if (namesv && !PadnameLEN(namesv)) { - namesv = NULL; - } - if (namesv) { - if (PadnameOUTER(namesv)) - Perl_dump_indent(aTHX_ level+1, file, - "%2d. 0x%" UVxf "<%lu> FAKE \"%s\" flags=0x%lx index=%lu\n", - (int) ix, - PTR2UV(ppad[ix]), - (unsigned long) (ppad[ix] ? SvREFCNT(ppad[ix]) : 0), - PadnamePV(namesv), - (unsigned long)PARENT_FAKELEX_FLAGS(namesv), - (unsigned long)PARENT_PAD_INDEX(namesv) - - ); - else - Perl_dump_indent(aTHX_ level+1, file, - "%2d. 0x%" UVxf "<%lu> (%lu,%lu) \"%s\"\n", - (int) ix, - PTR2UV(ppad[ix]), - (unsigned long) (ppad[ix] ? SvREFCNT(ppad[ix]) : 0), - (unsigned long)COP_SEQ_RANGE_LOW(namesv), - (unsigned long)COP_SEQ_RANGE_HIGH(namesv), - PadnamePV(namesv) - ); - } - else if (full) { - Perl_dump_indent(aTHX_ level+1, file, - "%2d. 0x%" UVxf "<%lu>\n", - (int) ix, - PTR2UV(ppad[ix]), - (unsigned long) (ppad[ix] ? SvREFCNT(ppad[ix]) : 0) - ); - } + if (namesv && !PadnameLEN(namesv)) { + namesv = NULL; + } + if (namesv) { + if (PadnameOUTER(namesv)) + Perl_dump_indent(aTHX_ level+1, file, + "%2d. 0x%" UVxf "<%lu> FAKE \"%s\" flags=0x%lx index=%lu\n", + (int) ix, + PTR2UV(ppad[ix]), + (unsigned long) (ppad[ix] ? SvREFCNT(ppad[ix]) : 0), + PadnamePV(namesv), + (unsigned long)PARENT_FAKELEX_FLAGS(namesv), + (unsigned long)PARENT_PAD_INDEX(namesv) + + ); + else + Perl_dump_indent(aTHX_ level+1, file, + "%2d. 0x%" UVxf "<%lu> (%lu,%lu) \"%s\"\n", + (int) ix, + PTR2UV(ppad[ix]), + (unsigned long) (ppad[ix] ? SvREFCNT(ppad[ix]) : 0), + (unsigned long)COP_SEQ_RANGE_LOW(namesv), + (unsigned long)COP_SEQ_RANGE_HIGH(namesv), + PadnamePV(namesv) + ); + } + else if (full) { + Perl_dump_indent(aTHX_ level+1, file, + "%2d. 0x%" UVxf "<%lu>\n", + (int) ix, + PTR2UV(ppad[ix]), + (unsigned long) (ppad[ix] ? SvREFCNT(ppad[ix]) : 0) + ); + } } } @@ -1857,23 +1856,23 @@ PERL_ARGS_ASSERT_CV_DUMP; PerlIO_printf(Perl_debug_log, - " %s: CV=0x%" UVxf " (%s), OUTSIDE=0x%" UVxf " (%s)\n", - title, - PTR2UV(cv), - (CvANON(cv) ? "ANON" - : (SvTYPE(cv) == SVt_PVFM) ? "FORMAT" - : (cv == PL_main_cv) ? "MAIN" - : CvUNIQUE(cv) ? "UNIQUE" - : CvGV(cv) ? GvNAME(CvGV(cv)) : "UNDEFINED"), - PTR2UV(outside), - (!outside ? "null" - : CvANON(outside) ? "ANON" - : (outside == PL_main_cv) ? "MAIN" - : CvUNIQUE(outside) ? "UNIQUE" - : CvGV(outside) ? GvNAME(CvGV(outside)) : "UNDEFINED")); + " %s: CV=0x%" UVxf " (%s), OUTSIDE=0x%" UVxf " (%s)\n", + title, + PTR2UV(cv), + (CvANON(cv) ? "ANON" + : (SvTYPE(cv) == SVt_PVFM) ? "FORMAT" + : (cv == PL_main_cv) ? "MAIN" + : CvUNIQUE(cv) ? "UNIQUE" + : CvGV(cv) ? GvNAME(CvGV(cv)) : "UNDEFINED"), + PTR2UV(outside), + (!outside ? "null" + : CvANON(outside) ? "ANON" + : (outside == PL_main_cv) ? "MAIN" + : CvUNIQUE(outside) ? "UNIQUE" + : CvGV(outside) ? GvNAME(CvGV(outside)) : "UNDEFINED")); PerlIO_printf(Perl_debug_log, - " PADLIST = 0x%" UVxf "\n", PTR2UV(padlist)); + " PADLIST = 0x%" UVxf "\n", PTR2UV(padlist)); do_dump_pad(1, Perl_debug_log, padlist, 1); } @@ -1895,7 +1894,7 @@ static CV * S_cv_clone_pad(pTHX_ CV *proto, CV *cv, CV *outside, HV *cloned, - bool newcv) + bool newcv) { PADOFFSET ix; PADLIST* const protopadlist = CvPADLIST(proto); @@ -1924,22 +1923,22 @@ if (!outside) { if (CvWEAKOUTSIDE(proto)) - outside = find_runcv(NULL); + outside = find_runcv(NULL); else { - outside = CvOUTSIDE(proto); - if ((CvCLONE(outside) && ! CvCLONED(outside)) - || !CvPADLIST(outside) - || CvPADLIST(outside)->xpadl_id != protopadlist->xpadl_outid) { - outside = find_runcv_where( - FIND_RUNCV_padid_eq, PTR2IV(protopadlist->xpadl_outid), NULL - ); - /* outside could be null */ - } + outside = CvOUTSIDE(proto); + if ((CvCLONE(outside) && ! CvCLONED(outside)) + || !CvPADLIST(outside) + || CvPADLIST(outside)->xpadl_id != protopadlist->xpadl_outid) { + outside = find_runcv_where( + FIND_RUNCV_padid_eq, PTR2IV(protopadlist->xpadl_outid), NULL + ); + /* outside could be null */ + } } } depth = outside ? CvDEPTH(outside) : 0; if (!depth) - depth = 1; + depth = 1; ENTER; SAVESPTR(PL_compcv); @@ -1947,7 +1946,7 @@ if (newcv) SAVEFREESV(cv); /* in case of fatal warnings */ if (CvHASEVAL(cv)) - CvOUTSIDE(cv) = MUTABLE_CV(SvREFCNT_inc_simple(outside)); + CvOUTSIDE(cv) = MUTABLE_CV(SvREFCNT_inc_simple(outside)); SAVESPTR(PL_comppad_name); PL_comppad_name = protopad_name; @@ -1959,227 +1958,226 @@ PL_curpad = AvARRAY(PL_comppad); outpad = outside && CvPADLIST(outside) - ? AvARRAY(PadlistARRAY(CvPADLIST(outside))[depth]) - : NULL; + ? AvARRAY(PadlistARRAY(CvPADLIST(outside))[depth]) + : NULL; if (outpad) CvPADLIST(cv)->xpadl_outid = CvPADLIST(outside)->xpadl_id; for (ix = fpad; ix > 0; ix--) { - PADNAME* const namesv = (ix <= fname) ? pname[ix] : NULL; - SV *sv = NULL; - if (namesv && PadnameLEN(namesv)) { /* lexical */ - if (PadnameIsOUR(namesv)) { /* or maybe not so lexical */ - NOOP; - } - else { - if (PadnameOUTER(namesv)) { /* lexical from outside? */ - /* formats may have an inactive, or even undefined, parent; - but state vars are always available. */ - if (!outpad || !(sv = outpad[PARENT_PAD_INDEX(namesv)]) - || ( SvPADSTALE(sv) && !SvPAD_STATE(namesv) - && (!outside || !CvDEPTH(outside))) ) { - S_unavailable(aTHX_ namesv); - sv = NULL; - } - else - SvREFCNT_inc_simple_void_NN(sv); - } - if (!sv) { + PADNAME* const namesv = (ix <= fname) ? pname[ix] : NULL; + SV *sv = NULL; + if (namesv && PadnameLEN(namesv)) { /* lexical */ + if (PadnameIsOUR(namesv)) { /* or maybe not so lexical */ + NOOP; + } + else { + if (PadnameOUTER(namesv)) { /* lexical from outside? */ + /* formats may have an inactive, or even undefined, parent; + but state vars are always available. */ + if (!outpad || !(sv = outpad[PARENT_PAD_INDEX(namesv)]) + || ( SvPADSTALE(sv) && !SvPAD_STATE(namesv) + && (!outside || !CvDEPTH(outside))) ) { + S_unavailable(aTHX_ namesv); + sv = NULL; + } + else + SvREFCNT_inc_simple_void_NN(sv); + } + if (!sv) { const char sigil = PadnamePV(namesv)[0]; if (sigil == '&') - /* If there are state subs, we need to clone them, too. - But they may need to close over variables we have - not cloned yet. So we will have to do a second - pass. Furthermore, there may be state subs clos- - ing over other state subs’ entries, so we have - to put a stub here and then clone into it on the - second pass. */ - if (SvPAD_STATE(namesv) && !CvCLONED(ppad[ix])) { - assert(SvTYPE(ppad[ix]) == SVt_PVCV); - subclones ++; - if (CvOUTSIDE(ppad[ix]) != proto) - trouble = TRUE; - sv = newSV_type(SVt_PVCV); - CvLEXICAL_on(sv); - } - else if (PadnameLEN(namesv)>1 && !PadnameIsOUR(namesv)) - { - /* my sub */ - /* Just provide a stub, but name it. It will be - upgraded to the real thing on scope entry. */ - dVAR; - U32 hash; - PERL_HASH(hash, PadnamePV(namesv)+1, - PadnameLEN(namesv) - 1); - sv = newSV_type(SVt_PVCV); - CvNAME_HEK_set( - sv, - share_hek(PadnamePV(namesv)+1, - 1 - PadnameLEN(namesv), - hash) - ); - CvLEXICAL_on(sv); - } - else sv = SvREFCNT_inc(ppad[ix]); + /* If there are state subs, we need to clone them, too. + But they may need to close over variables we have + not cloned yet. So we will have to do a second + pass. Furthermore, there may be state subs clos- + ing over other state subs’ entries, so we have + to put a stub here and then clone into it on the + second pass. */ + if (SvPAD_STATE(namesv) && !CvCLONED(ppad[ix])) { + assert(SvTYPE(ppad[ix]) == SVt_PVCV); + subclones ++; + if (CvOUTSIDE(ppad[ix]) != proto) + trouble = TRUE; + sv = newSV_type(SVt_PVCV); + CvLEXICAL_on(sv); + } + else if (PadnameLEN(namesv)>1 && !PadnameIsOUR(namesv)) + { + /* my sub */ + /* Just provide a stub, but name it. It will be + upgraded to the real thing on scope entry. */ + U32 hash; + PERL_HASH(hash, PadnamePV(namesv)+1, + PadnameLEN(namesv) - 1); + sv = newSV_type(SVt_PVCV); + CvNAME_HEK_set( + sv, + share_hek(PadnamePV(namesv)+1, + 1 - PadnameLEN(namesv), + hash) + ); + CvLEXICAL_on(sv); + } + else sv = SvREFCNT_inc(ppad[ix]); else if (sigil == '@') - sv = MUTABLE_SV(newAV()); + sv = MUTABLE_SV(newAV()); else if (sigil == '%') - sv = MUTABLE_SV(newHV()); - else - sv = newSV(0); - /* reset the 'assign only once' flag on each state var */ - if (sigil != '&' && SvPAD_STATE(namesv)) - SvPADSTALE_on(sv); - } - } - } - else if (namesv && PadnamePV(namesv)) { - sv = SvREFCNT_inc_NN(ppad[ix]); - } - else { - sv = newSV(0); - SvPADTMP_on(sv); - } - PL_curpad[ix] = sv; + sv = MUTABLE_SV(newHV()); + else + sv = newSV(0); + /* reset the 'assign only once' flag on each state var */ + if (sigil != '&' && SvPAD_STATE(namesv)) + SvPADSTALE_on(sv); + } + } + } + else if (namesv && PadnamePV(namesv)) { + sv = SvREFCNT_inc_NN(ppad[ix]); + } + else { + sv = newSV(0); + SvPADTMP_on(sv); + } + PL_curpad[ix] = sv; } if (subclones) { - if (trouble || cloned) { - /* Uh-oh, we have trouble! At least one of the state subs here - has its CvOUTSIDE pointer pointing somewhere unexpected. It - could be pointing to another state protosub that we are - about to clone. So we have to track which sub clones come - from which protosubs. If the CvOUTSIDE pointer for a parti- - cular sub points to something we have not cloned yet, we - delay cloning it. We must loop through the pad entries, - until we get a full pass with no cloning. If any uncloned - subs remain (probably nested inside anonymous or ‘my’ subs), - then they get cloned in a final pass. - */ - bool cloned_in_this_pass; - if (!cloned) - cloned = (HV *)sv_2mortal((SV *)newHV()); - do { - cloned_in_this_pass = FALSE; - for (ix = fpad; ix > 0; ix--) { - PADNAME * const name = - (ix <= fname) ? pname[ix] : NULL; - if (name && name != &PL_padname_undef - && !PadnameOUTER(name) && PadnamePV(name)[0] == '&' - && PadnameIsSTATE(name) && !CvCLONED(PL_curpad[ix])) - { - CV * const protokey = CvOUTSIDE(ppad[ix]); - CV ** const cvp = protokey == proto - ? &cv - : (CV **)hv_fetch(cloned, (char *)&protokey, - sizeof(CV *), 0); - if (cvp && *cvp) { - S_cv_clone(aTHX_ (CV *)ppad[ix], - (CV *)PL_curpad[ix], - *cvp, cloned); - (void)hv_store(cloned, (char *)&ppad[ix], - sizeof(CV *), - SvREFCNT_inc_simple_NN(PL_curpad[ix]), - 0); - subclones--; - cloned_in_this_pass = TRUE; - } - } - } - } while (cloned_in_this_pass); - if (subclones) - for (ix = fpad; ix > 0; ix--) { - PADNAME * const name = - (ix <= fname) ? pname[ix] : NULL; - if (name && name != &PL_padname_undef - && !PadnameOUTER(name) && PadnamePV(name)[0] == '&' - && PadnameIsSTATE(name) && !CvCLONED(PL_curpad[ix])) - S_cv_clone(aTHX_ (CV *)ppad[ix], - (CV *)PL_curpad[ix], - CvOUTSIDE(ppad[ix]), cloned); - } - } - else for (ix = fpad; ix > 0; ix--) { - PADNAME * const name = (ix <= fname) ? pname[ix] : NULL; - if (name && name != &PL_padname_undef && !PadnameOUTER(name) - && PadnamePV(name)[0] == '&' && PadnameIsSTATE(name)) - S_cv_clone(aTHX_ (CV *)ppad[ix], (CV *)PL_curpad[ix], cv, - NULL); - } + if (trouble || cloned) { + /* Uh-oh, we have trouble! At least one of the state subs here + has its CvOUTSIDE pointer pointing somewhere unexpected. It + could be pointing to another state protosub that we are + about to clone. So we have to track which sub clones come + from which protosubs. If the CvOUTSIDE pointer for a parti- + cular sub points to something we have not cloned yet, we + delay cloning it. We must loop through the pad entries, + until we get a full pass with no cloning. If any uncloned + subs remain (probably nested inside anonymous or ‘my’ subs), + then they get cloned in a final pass. + */ + bool cloned_in_this_pass; + if (!cloned) + cloned = (HV *)sv_2mortal((SV *)newHV()); + do { + cloned_in_this_pass = FALSE; + for (ix = fpad; ix > 0; ix--) { + PADNAME * const name = + (ix <= fname) ? pname[ix] : NULL; + if (name && name != &PL_padname_undef + && !PadnameOUTER(name) && PadnamePV(name)[0] == '&' + && PadnameIsSTATE(name) && !CvCLONED(PL_curpad[ix])) + { + CV * const protokey = CvOUTSIDE(ppad[ix]); + CV ** const cvp = protokey == proto + ? &cv + : (CV **)hv_fetch(cloned, (char *)&protokey, + sizeof(CV *), 0); + if (cvp && *cvp) { + S_cv_clone(aTHX_ (CV *)ppad[ix], + (CV *)PL_curpad[ix], + *cvp, cloned); + (void)hv_store(cloned, (char *)&ppad[ix], + sizeof(CV *), + SvREFCNT_inc_simple_NN(PL_curpad[ix]), + 0); + subclones--; + cloned_in_this_pass = TRUE; + } + } + } + } while (cloned_in_this_pass); + if (subclones) + for (ix = fpad; ix > 0; ix--) { + PADNAME * const name = + (ix <= fname) ? pname[ix] : NULL; + if (name && name != &PL_padname_undef + && !PadnameOUTER(name) && PadnamePV(name)[0] == '&' + && PadnameIsSTATE(name) && !CvCLONED(PL_curpad[ix])) + S_cv_clone(aTHX_ (CV *)ppad[ix], + (CV *)PL_curpad[ix], + CvOUTSIDE(ppad[ix]), cloned); + } + } + else for (ix = fpad; ix > 0; ix--) { + PADNAME * const name = (ix <= fname) ? pname[ix] : NULL; + if (name && name != &PL_padname_undef && !PadnameOUTER(name) + && PadnamePV(name)[0] == '&' && PadnameIsSTATE(name)) + S_cv_clone(aTHX_ (CV *)ppad[ix], (CV *)PL_curpad[ix], cv, + NULL); + } } if (newcv) SvREFCNT_inc_simple_void_NN(cv); LEAVE; if (CvCONST(cv)) { - /* Constant sub () { $x } closing over $x: - * The prototype was marked as a candiate for const-ization, - * so try to grab the current const value, and if successful, - * turn into a const sub: - */ - SV* const_sv; - OP *o = CvSTART(cv); - assert(newcv); - for (; o; o = o->op_next) - if (o->op_type == OP_PADSV) - break; - ASSUME(o->op_type == OP_PADSV); - const_sv = PAD_BASE_SV(CvPADLIST(cv), o->op_targ); - /* the candidate should have 1 ref from this pad and 1 ref - * from the parent */ - if (const_sv && SvREFCNT(const_sv) == 2) { - const bool was_method = cBOOL(CvMETHOD(cv)); - if (outside) { - PADNAME * const pn = - PadlistNAMESARRAY(CvPADLIST(outside)) - [PARENT_PAD_INDEX(PadlistNAMESARRAY( - CvPADLIST(cv))[o->op_targ])]; - assert(PadnameOUTER(PadlistNAMESARRAY(CvPADLIST(cv)) - [o->op_targ])); - if (PadnameLVALUE(pn)) { - /* We have a lexical that is potentially modifiable - elsewhere, so making a constant will break clo- - sure behaviour. If this is a ‘simple lexical - op tree’, i.e., sub(){$x}, emit a deprecation - warning, but continue to exhibit the old behav- - iour of making it a constant based on the ref- - count of the candidate variable. - - A simple lexical op tree looks like this: - - leavesub - lineseq - nextstate - padsv - */ - if (OpSIBLING( - cUNOPx(cUNOPx(CvROOT(cv))->op_first)->op_first - ) == o - && !OpSIBLING(o)) - { + /* Constant sub () { $x } closing over $x: + * The prototype was marked as a candiate for const-ization, + * so try to grab the current const value, and if successful, + * turn into a const sub: + */ + SV* const_sv; + OP *o = CvSTART(cv); + assert(newcv); + for (; o; o = o->op_next) + if (o->op_type == OP_PADSV) + break; + ASSUME(o->op_type == OP_PADSV); + const_sv = PAD_BASE_SV(CvPADLIST(cv), o->op_targ); + /* the candidate should have 1 ref from this pad and 1 ref + * from the parent */ + if (const_sv && SvREFCNT(const_sv) == 2) { + const bool was_method = cBOOL(CvMETHOD(cv)); + if (outside) { + PADNAME * const pn = + PadlistNAMESARRAY(CvPADLIST(outside)) + [PARENT_PAD_INDEX(PadlistNAMESARRAY( + CvPADLIST(cv))[o->op_targ])]; + assert(PadnameOUTER(PadlistNAMESARRAY(CvPADLIST(cv)) + [o->op_targ])); + if (PadnameLVALUE(pn)) { + /* We have a lexical that is potentially modifiable + elsewhere, so making a constant will break clo- + sure behaviour. If this is a ‘simple lexical + op tree’, i.e., sub(){$x}, emit a deprecation + warning, but continue to exhibit the old behav- + iour of making it a constant based on the ref- + count of the candidate variable. + + A simple lexical op tree looks like this: + + leavesub + lineseq + nextstate + padsv + */ + if (OpSIBLING( + cUNOPx(cUNOPx(CvROOT(cv))->op_first)->op_first + ) == o + && !OpSIBLING(o)) + { Perl_croak(aTHX_ "Constants from lexical variables potentially modified " "elsewhere are no longer permitted"); - } - else - goto constoff; - } - } + } + else + goto constoff; + } + } SvREFCNT_inc_simple_void_NN(const_sv); - /* If the lexical is not used elsewhere, it is safe to turn on - SvPADTMP, since it is only when it is used in lvalue con- - text that the difference is observable. */ - SvREADONLY_on(const_sv); - SvPADTMP_on(const_sv); - SvREFCNT_dec_NN(cv); - cv = newCONSTSUB(CvSTASH(proto), NULL, const_sv); - if (was_method) - CvMETHOD_on(cv); - } - else { - constoff: - CvCONST_off(cv); - } + /* If the lexical is not used elsewhere, it is safe to turn on + SvPADTMP, since it is only when it is used in lvalue con- + text that the difference is observable. */ + SvREADONLY_on(const_sv); + SvPADTMP_on(const_sv); + SvREFCNT_dec_NN(cv); + cv = newCONSTSUB(CvSTASH(proto), NULL, const_sv); + if (was_method) + CvMETHOD_on(cv); + } + else { + constoff: + CvCONST_off(cv); + } } return cv; @@ -2188,22 +2186,19 @@ static CV * S_cv_clone(pTHX_ CV *proto, CV *cv, CV *outside, HV *cloned) { -#ifdef USE_ITHREADS - dVAR; -#endif const bool newcv = !cv; assert(!CvUNIQUE(proto)); if (!cv) cv = MUTABLE_CV(newSV_type(SvTYPE(proto))); CvFLAGS(cv) = CvFLAGS(proto) & ~(CVf_CLONE|CVf_WEAKOUTSIDE|CVf_CVGV_RC - |CVf_SLABBED); + |CVf_SLABBED); CvCLONED_on(cv); CvFILE(cv) = CvDYNFILE(proto) ? savepv(CvFILE(proto)) - : CvFILE(proto); + : CvFILE(proto); if (CvNAMED(proto)) - CvNAME_HEK_set(cv, share_hek_hek(CvNAME_HEK(proto))); + CvNAME_HEK_set(cv, share_hek_hek(CvNAME_HEK(proto))); else CvGV_set(cv,CvGV(proto)); CvSTASH_set(cv, CvSTASH(proto)); OP_REFCNT_LOCK; @@ -2213,21 +2208,21 @@ CvOUTSIDE_SEQ(cv) = CvOUTSIDE_SEQ(proto); if (SvPOK(proto)) { - sv_setpvn(MUTABLE_SV(cv), SvPVX_const(proto), SvCUR(proto)); + sv_setpvn(MUTABLE_SV(cv), SvPVX_const(proto), SvCUR(proto)); if (SvUTF8(proto)) SvUTF8_on(MUTABLE_SV(cv)); } if (SvMAGIC(proto)) - mg_copy((SV *)proto, (SV *)cv, 0, 0); + mg_copy((SV *)proto, (SV *)cv, 0, 0); if (CvPADLIST(proto)) - cv = S_cv_clone_pad(aTHX_ proto, cv, outside, cloned, newcv); + cv = S_cv_clone_pad(aTHX_ proto, cv, outside, cloned, newcv); DEBUG_Xv( - PerlIO_printf(Perl_debug_log, "\nPad CV clone\n"); - if (CvOUTSIDE(cv)) cv_dump(CvOUTSIDE(cv), "Outside"); - cv_dump(proto, "Proto"); - cv_dump(cv, "To"); + PerlIO_printf(Perl_debug_log, "\nPad CV clone\n"); + if (CvOUTSIDE(cv)) cv_dump(CvOUTSIDE(cv), "Outside"); + cv_dump(proto, "Proto"); + cv_dump(cv, "To"); ); return cv; @@ -2277,31 +2272,31 @@ { PERL_ARGS_ASSERT_CV_NAME; if (!isGV_with_GP(cv) && SvTYPE(cv) != SVt_PVCV) { - if (sv) sv_setsv(sv,(SV *)cv); - return sv ? (sv) : (SV *)cv; + if (sv) sv_setsv(sv,(SV *)cv); + return sv ? (sv) : (SV *)cv; } { - SV * const retsv = sv ? (sv) : sv_newmortal(); - if (SvTYPE(cv) == SVt_PVCV) { - if (CvNAMED(cv)) { - if (CvLEXICAL(cv) || flags & CV_NAME_NOTQUAL) - sv_sethek(retsv, CvNAME_HEK(cv)); - else { - if (CvSTASH(cv) && HvNAME_HEK(CvSTASH(cv))) - sv_sethek(retsv, HvNAME_HEK(CvSTASH(cv))); - else - sv_setpvs(retsv, "__ANON__"); - sv_catpvs(retsv, "::"); - sv_cathek(retsv, CvNAME_HEK(cv)); - } - } - else if (CvLEXICAL(cv) || flags & CV_NAME_NOTQUAL) - sv_sethek(retsv, GvNAME_HEK(GvEGV(CvGV(cv)))); - else gv_efullname3(retsv, CvGV(cv), NULL); - } - else if (flags & CV_NAME_NOTQUAL) sv_sethek(retsv, GvNAME_HEK(cv)); - else gv_efullname3(retsv,(GV *)cv,NULL); - return retsv; + SV * const retsv = sv ? (sv) : sv_newmortal(); + if (SvTYPE(cv) == SVt_PVCV) { + if (CvNAMED(cv)) { + if (CvLEXICAL(cv) || flags & CV_NAME_NOTQUAL) + sv_sethek(retsv, CvNAME_HEK(cv)); + else { + if (CvSTASH(cv) && HvNAME_HEK(CvSTASH(cv))) + sv_sethek(retsv, HvNAME_HEK(CvSTASH(cv))); + else + sv_setpvs(retsv, "__ANON__"); + sv_catpvs(retsv, "::"); + sv_cathek(retsv, CvNAME_HEK(cv)); + } + } + else if (CvLEXICAL(cv) || flags & CV_NAME_NOTQUAL) + sv_sethek(retsv, GvNAME_HEK(GvEGV(CvGV(cv)))); + else gv_efullname3(retsv, CvGV(cv), NULL); + } + else if (flags & CV_NAME_NOTQUAL) sv_sethek(retsv, GvNAME_HEK(cv)); + else gv_efullname3(retsv,(GV *)cv,NULL); + return retsv; } } @@ -2329,51 +2324,51 @@ for (ix = PadnamelistMAX(comppad_name); ix > 0; ix--) { const PADNAME *name = namepad[ix]; - if (name && name != &PL_padname_undef && !PadnameIsOUR(name) - && *PadnamePV(name) == '&') - { - CV *innercv = MUTABLE_CV(curpad[ix]); - if (UNLIKELY(PadnameOUTER(name))) { - CV *cv = new_cv; - PADNAME **names = namepad; - PADOFFSET i = ix; - while (PadnameOUTER(name)) { - assert(SvTYPE(cv) == SVt_PVCV); - cv = CvOUTSIDE(cv); - names = PadlistNAMESARRAY(CvPADLIST(cv)); - i = PARENT_PAD_INDEX(name); - name = names[i]; - } - innercv = (CV *)PadARRAY(PadlistARRAY(CvPADLIST(cv))[1])[i]; - } - if (SvTYPE(innercv) == SVt_PVCV) { - /* XXX 0afba48f added code here to check for a proto CV - attached to the pad entry by magic. But shortly there- - after 81df9f6f95 moved the magic to the pad name. The - code here was never updated, so it wasn’t doing anything - and got deleted when PADNAME became a distinct type. Is - there any bug as a result? */ - if (CvOUTSIDE(innercv) == old_cv) { - if (!CvWEAKOUTSIDE(innercv)) { - SvREFCNT_dec(old_cv); - SvREFCNT_inc_simple_void_NN(new_cv); - } - CvOUTSIDE(innercv) = new_cv; - } - } - else { /* format reference */ - SV * const rv = curpad[ix]; - CV *innercv; - if (!SvOK(rv)) continue; - assert(SvROK(rv)); - assert(SvWEAKREF(rv)); - innercv = (CV *)SvRV(rv); - assert(!CvWEAKOUTSIDE(innercv)); - assert(CvOUTSIDE(innercv) == old_cv); - SvREFCNT_dec(CvOUTSIDE(innercv)); - CvOUTSIDE(innercv) = (CV *)SvREFCNT_inc_simple_NN(new_cv); - } - } + if (name && name != &PL_padname_undef && !PadnameIsOUR(name) + && *PadnamePV(name) == '&') + { + CV *innercv = MUTABLE_CV(curpad[ix]); + if (UNLIKELY(PadnameOUTER(name))) { + CV *cv = new_cv; + PADNAME **names = namepad; + PADOFFSET i = ix; + while (PadnameOUTER(name)) { + assert(SvTYPE(cv) == SVt_PVCV); + cv = CvOUTSIDE(cv); + names = PadlistNAMESARRAY(CvPADLIST(cv)); + i = PARENT_PAD_INDEX(name); + name = names[i]; + } + innercv = (CV *)PadARRAY(PadlistARRAY(CvPADLIST(cv))[1])[i]; + } + if (SvTYPE(innercv) == SVt_PVCV) { + /* XXX 0afba48f added code here to check for a proto CV + attached to the pad entry by magic. But shortly there- + after 81df9f6f95 moved the magic to the pad name. The + code here was never updated, so it wasn’t doing anything + and got deleted when PADNAME became a distinct type. Is + there any bug as a result? */ + if (CvOUTSIDE(innercv) == old_cv) { + if (!CvWEAKOUTSIDE(innercv)) { + SvREFCNT_dec(old_cv); + SvREFCNT_inc_simple_void_NN(new_cv); + } + CvOUTSIDE(innercv) = new_cv; + } + } + else { /* format reference */ + SV * const rv = curpad[ix]; + CV *innercv; + if (!SvOK(rv)) continue; + assert(SvROK(rv)); + assert(SvWEAKREF(rv)); + innercv = (CV *)SvRV(rv); + assert(!CvWEAKOUTSIDE(innercv)); + assert(CvOUTSIDE(innercv) == old_cv); + SvREFCNT_dec(CvOUTSIDE(innercv)); + CvOUTSIDE(innercv) = (CV *)SvREFCNT_inc_simple_NN(new_cv); + } + } } } @@ -2393,50 +2388,50 @@ PERL_ARGS_ASSERT_PAD_PUSH; if (depth > PadlistMAX(padlist) || !PadlistARRAY(padlist)[depth]) { - PAD** const svp = PadlistARRAY(padlist); - AV* const newpad = newAV(); - SV** const oldpad = AvARRAY(svp[depth-1]); - PADOFFSET ix = AvFILLp((const AV *)svp[1]); - const PADOFFSET names_fill = PadnamelistMAX((PADNAMELIST *)svp[0]); - PADNAME ** const names = PadnamelistARRAY((PADNAMELIST *)svp[0]); - AV *av; - - for ( ;ix > 0; ix--) { - if (names_fill >= ix && PadnameLEN(names[ix])) { - const char sigil = PadnamePV(names[ix])[0]; - if (PadnameOUTER(names[ix]) - || PadnameIsSTATE(names[ix]) - || sigil == '&') - { - /* outer lexical or anon code */ - av_store(newpad, ix, SvREFCNT_inc(oldpad[ix])); - } - else { /* our own lexical */ - SV *sv; - if (sigil == '@') - sv = MUTABLE_SV(newAV()); - else if (sigil == '%') - sv = MUTABLE_SV(newHV()); - else - sv = newSV(0); - av_store(newpad, ix, sv); - } - } - else if (PadnamePV(names[ix])) { - av_store(newpad, ix, SvREFCNT_inc_NN(oldpad[ix])); - } - else { - /* save temporaries on recursion? */ - SV * const sv = newSV(0); - av_store(newpad, ix, sv); - SvPADTMP_on(sv); - } - } - av = newAV(); - av_store(newpad, 0, MUTABLE_SV(av)); - AvREIFY_only(av); + PAD** const svp = PadlistARRAY(padlist); + AV* const newpad = newAV(); + SV** const oldpad = AvARRAY(svp[depth-1]); + PADOFFSET ix = AvFILLp((const AV *)svp[1]); + const PADOFFSET names_fill = PadnamelistMAX((PADNAMELIST *)svp[0]); + PADNAME ** const names = PadnamelistARRAY((PADNAMELIST *)svp[0]); + AV *av; + + for ( ;ix > 0; ix--) { + if (names_fill >= ix && PadnameLEN(names[ix])) { + const char sigil = PadnamePV(names[ix])[0]; + if (PadnameOUTER(names[ix]) + || PadnameIsSTATE(names[ix]) + || sigil == '&') + { + /* outer lexical or anon code */ + av_store(newpad, ix, SvREFCNT_inc(oldpad[ix])); + } + else { /* our own lexical */ + SV *sv; + if (sigil == '@') + sv = MUTABLE_SV(newAV()); + else if (sigil == '%') + sv = MUTABLE_SV(newHV()); + else + sv = newSV(0); + av_store(newpad, ix, sv); + } + } + else if (PadnamePV(names[ix])) { + av_store(newpad, ix, SvREFCNT_inc_NN(oldpad[ix])); + } + else { + /* save temporaries on recursion? */ + SV * const sv = newSV(0); + av_store(newpad, ix, sv); + SvPADTMP_on(sv); + } + } + av = newAV(); + av_store(newpad, 0, MUTABLE_SV(av)); + AvREIFY_only(av); - padlist_store(padlist, depth, newpad); + padlist_store(padlist, depth, newpad); } } @@ -2472,89 +2467,89 @@ Newx(PadlistARRAY(dstpad), max + 1, PAD *); PadlistARRAY(dstpad)[0] = (PAD *) - padnamelist_dup(PadlistNAMES(srcpad), param); + padnamelist_dup(PadlistNAMES(srcpad), param); PadnamelistREFCNT(PadlistNAMES(dstpad))++; if (cloneall) { - PADOFFSET depth; - for (depth = 1; depth <= max; ++depth) - PadlistARRAY(dstpad)[depth] = - av_dup_inc(PadlistARRAY(srcpad)[depth], param); + PADOFFSET depth; + for (depth = 1; depth <= max; ++depth) + PadlistARRAY(dstpad)[depth] = + av_dup_inc(PadlistARRAY(srcpad)[depth], param); } else { - /* CvDEPTH() on our subroutine will be set to 0, so there's no need - to build anything other than the first level of pads. */ - PADOFFSET ix = AvFILLp(PadlistARRAY(srcpad)[1]); - AV *pad1; - const PADOFFSET names_fill = PadnamelistMAX(PadlistNAMES(srcpad)); - const PAD *const srcpad1 = PadlistARRAY(srcpad)[1]; - SV **oldpad = AvARRAY(srcpad1); - PADNAME ** const names = PadnamelistARRAY(PadlistNAMES(dstpad)); - SV **pad1a; - AV *args; - - pad1 = newAV(); - - av_extend(pad1, ix); - PadlistARRAY(dstpad)[1] = pad1; - pad1a = AvARRAY(pad1); - - if (ix > -1) { - AvFILLp(pad1) = ix; - - for ( ;ix > 0; ix--) { - if (!oldpad[ix]) { - pad1a[ix] = NULL; - } else if (names_fill >= ix && names[ix] && - PadnameLEN(names[ix])) { - const char sigil = PadnamePV(names[ix])[0]; - if (PadnameOUTER(names[ix]) - || PadnameIsSTATE(names[ix]) - || sigil == '&') - { - /* outer lexical or anon code */ - pad1a[ix] = sv_dup_inc(oldpad[ix], param); - } - else { /* our own lexical */ - if(SvPADSTALE(oldpad[ix]) && SvREFCNT(oldpad[ix]) > 1) { - /* This is a work around for how the current - implementation of ?{ } blocks in regexps - interacts with lexicals. */ - pad1a[ix] = sv_dup_inc(oldpad[ix], param); - } else { - SV *sv; - - if (sigil == '@') - sv = MUTABLE_SV(newAV()); - else if (sigil == '%') - sv = MUTABLE_SV(newHV()); - else - sv = newSV(0); - pad1a[ix] = sv; - } - } - } - else if (( names_fill >= ix && names[ix] - && PadnamePV(names[ix]) )) { - pad1a[ix] = sv_dup_inc(oldpad[ix], param); - } - else { - /* save temporaries on recursion? */ - SV * const sv = newSV(0); - pad1a[ix] = sv; - - /* SvREFCNT(oldpad[ix]) != 1 for some code in threads.xs - FIXTHAT before merging this branch. - (And I know how to) */ - if (SvPADTMP(oldpad[ix])) - SvPADTMP_on(sv); - } - } - - if (oldpad[0]) { - args = newAV(); /* Will be @_ */ - AvREIFY_only(args); - pad1a[0] = (SV *)args; - } - } + /* CvDEPTH() on our subroutine will be set to 0, so there's no need + to build anything other than the first level of pads. */ + PADOFFSET ix = AvFILLp(PadlistARRAY(srcpad)[1]); + AV *pad1; + const PADOFFSET names_fill = PadnamelistMAX(PadlistNAMES(srcpad)); + const PAD *const srcpad1 = PadlistARRAY(srcpad)[1]; + SV **oldpad = AvARRAY(srcpad1); + PADNAME ** const names = PadnamelistARRAY(PadlistNAMES(dstpad)); + SV **pad1a; + AV *args; + + pad1 = newAV(); + + av_extend(pad1, ix); + PadlistARRAY(dstpad)[1] = pad1; + pad1a = AvARRAY(pad1); + + if (ix > -1) { + AvFILLp(pad1) = ix; + + for ( ;ix > 0; ix--) { + if (!oldpad[ix]) { + pad1a[ix] = NULL; + } else if (names_fill >= ix && names[ix] && + PadnameLEN(names[ix])) { + const char sigil = PadnamePV(names[ix])[0]; + if (PadnameOUTER(names[ix]) + || PadnameIsSTATE(names[ix]) + || sigil == '&') + { + /* outer lexical or anon code */ + pad1a[ix] = sv_dup_inc(oldpad[ix], param); + } + else { /* our own lexical */ + if(SvPADSTALE(oldpad[ix]) && SvREFCNT(oldpad[ix]) > 1) { + /* This is a work around for how the current + implementation of ?{ } blocks in regexps + interacts with lexicals. */ + pad1a[ix] = sv_dup_inc(oldpad[ix], param); + } else { + SV *sv; + + if (sigil == '@') + sv = MUTABLE_SV(newAV()); + else if (sigil == '%') + sv = MUTABLE_SV(newHV()); + else + sv = newSV(0); + pad1a[ix] = sv; + } + } + } + else if (( names_fill >= ix && names[ix] + && PadnamePV(names[ix]) )) { + pad1a[ix] = sv_dup_inc(oldpad[ix], param); + } + else { + /* save temporaries on recursion? */ + SV * const sv = newSV(0); + pad1a[ix] = sv; + + /* SvREFCNT(oldpad[ix]) != 1 for some code in threads.xs + FIXTHAT before merging this branch. + (And I know how to) */ + if (SvPADTMP(oldpad[ix])) + SvPADTMP_on(sv); + } + } + + if (oldpad[0]) { + args = newAV(); /* Will be @_ */ + AvREIFY_only(args); + pad1a[0] = (SV *)args; + } + } } return dstpad; @@ -2573,11 +2568,11 @@ assert(key >= 0); if (key > PadlistMAX(padlist)) { - av_extend_guts(NULL,key,&PadlistMAX(padlist), - (SV ***)&PadlistARRAY(padlist), - (SV ***)&PadlistARRAY(padlist)); - Zero(PadlistARRAY(padlist)+oldmax+1, PadlistMAX(padlist)-oldmax, - PAD *); + av_extend_guts(NULL,key,&PadlistMAX(padlist), + (SV ***)&PadlistARRAY(padlist), + (SV ***)&PadlistARRAY(padlist)); + Zero(PadlistARRAY(padlist)+oldmax+1, PadlistMAX(padlist)-oldmax, + PAD *); } ary = PadlistARRAY(padlist); SvREFCNT_dec(ary[key]); @@ -2626,17 +2621,17 @@ assert(key >= 0); if (key > pnl->xpadnl_max) - av_extend_guts(NULL,key,&pnl->xpadnl_max, - (SV ***)&PadnamelistARRAY(pnl), - (SV ***)&PadnamelistARRAY(pnl)); + av_extend_guts(NULL,key,&pnl->xpadnl_max, + (SV ***)&PadnamelistARRAY(pnl), + (SV ***)&PadnamelistARRAY(pnl)); if (PadnamelistMAX(pnl) < key) { - Zero(PadnamelistARRAY(pnl)+PadnamelistMAX(pnl)+1, - key-PadnamelistMAX(pnl), PADNAME *); - PadnamelistMAX(pnl) = key; + Zero(PadnamelistARRAY(pnl)+PadnamelistMAX(pnl)+1, + key-PadnamelistMAX(pnl), PADNAME *); + PadnamelistMAX(pnl) = key; } ary = PadnamelistARRAY(pnl); if (ary[key]) - PadnameREFCNT_dec(ary[key]); + PadnameREFCNT_dec(ary[key]); ary[key] = val; return &ary[key]; } @@ -2663,15 +2658,15 @@ { PERL_ARGS_ASSERT_PADNAMELIST_FREE; if (!--PadnamelistREFCNT(pnl)) { - while(PadnamelistMAX(pnl) >= 0) - { - PADNAME * const pn = - PadnamelistARRAY(pnl)[PadnamelistMAX(pnl)--]; - if (pn) - PadnameREFCNT_dec(pn); - } - Safefree(PadnamelistARRAY(pnl)); - Safefree(pnl); + while(PadnamelistMAX(pnl) >= 0) + { + PADNAME * const pn = + PadnamelistARRAY(pnl)[PadnamelistMAX(pnl)--]; + if (pn) + PadnameREFCNT_dec(pn); + } + Safefree(PadnamelistARRAY(pnl)); + Safefree(pnl); } } @@ -2696,7 +2691,7 @@ /* look for it in the table first */ dstpad = (PADNAMELIST *)ptr_table_fetch(PL_ptr_table, srcpad); if (dstpad) - return dstpad; + return dstpad; dstpad = newPADNAMELIST(max); PadnamelistREFCNT(dstpad) = 0; /* The caller will increment it. */ @@ -2706,9 +2701,9 @@ ptr_table_store(PL_ptr_table, srcpad, dstpad); for (; max >= 0; max--) if (PadnamelistARRAY(srcpad)[max]) { - PadnamelistARRAY(dstpad)[max] = - padname_dup(PadnamelistARRAY(srcpad)[max], param); - PadnameREFCNT(PadnamelistARRAY(dstpad)[max])++; + PadnamelistARRAY(dstpad)[max] = + padname_dup(PadnamelistARRAY(srcpad)[max], param); + PadnameREFCNT(PadnamelistARRAY(dstpad)[max])++; } return dstpad; @@ -2734,8 +2729,8 @@ PADNAME *pn; PERL_ARGS_ASSERT_NEWPADNAMEPVN; Newxz(alloc2, - STRUCT_OFFSET(struct padname_with_str, xpadn_str[0]) + len + 1, - char); + STRUCT_OFFSET(struct padname_with_str, xpadn_str[0]) + len + 1, + char); alloc = (struct padname_with_str *)alloc2; pn = (PADNAME *)alloc; PadnameREFCNT(pn) = 1; @@ -2780,15 +2775,15 @@ { PERL_ARGS_ASSERT_PADNAME_FREE; if (!--PadnameREFCNT(pn)) { - if (UNLIKELY(pn == &PL_padname_undef || pn == &PL_padname_const)) { - PadnameREFCNT(pn) = SvREFCNT_IMMORTAL; - return; - } - SvREFCNT_dec(PadnameTYPE(pn)); /* Takes care of protocv, too. */ - SvREFCNT_dec(PadnameOURSTASH(pn)); - if (PadnameOUTER(pn)) - PadnameREFCNT_dec(PADNAME_FROM_PV(PadnamePV(pn))); - Safefree(pn); + if (UNLIKELY(pn == &PL_padname_undef || pn == &PL_padname_const)) { + PadnameREFCNT(pn) = SvREFCNT_IMMORTAL; + return; + } + SvREFCNT_dec(PadnameTYPE(pn)); /* Takes care of protocv, too. */ + SvREFCNT_dec(PadnameOURSTASH(pn)); + if (PadnameOUTER(pn)) + PadnameREFCNT_dec(PADNAME_FROM_PV(PadnamePV(pn))); + Safefree(pn); } } @@ -2812,12 +2807,12 @@ /* look for it in the table first */ dst = (PADNAME *)ptr_table_fetch(PL_ptr_table, src); if (dst) - return dst; + return dst; if (!PadnamePV(src)) { - dst = &PL_padname_undef; - ptr_table_store(PL_ptr_table, src, dst); - return dst; + dst = &PL_padname_undef; + ptr_table_store(PL_ptr_table, src, dst); + return dst; } dst = PadnameOUTER(src) @@ -2829,7 +2824,7 @@ PadnameREFCNT(dst) = 0; /* The caller will increment it. */ PadnameTYPE (dst) = (HV *)sv_dup_inc((SV *)PadnameTYPE(src), param); PadnameOURSTASH(dst) = (HV *)sv_dup_inc((SV *)PadnameOURSTASH(src), - param); + param); dst->xpadn_low = src->xpadn_low; dst->xpadn_high = src->xpadn_high; dst->xpadn_gen = src->xpadn_gen; diff -Nru perl-5.32.1/pad.h perl-5.34.0/pad.h --- perl-5.32.1/pad.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pad.h 2021-01-20 23:04:44.000000000 +0000 @@ -11,11 +11,6 @@ * variables, op targets and constants. */ -/* -=head1 Pad Data Structures -*/ - - /* offsets within a pad */ typedef SSize_t PADOFFSET; /* signed so that -1 is a valid value */ @@ -28,13 +23,13 @@ struct padlist { SSize_t xpadl_max; /* max index for which array has space */ union { - PAD ** xpadlarr_alloc; /* Pointer to beginning of array of AVs. - index 0 is a padnamelist * */ - struct { - PADNAMELIST * padnl; - PAD * pad_1; /* this slice of PAD * array always alloced */ - PAD * pad_2; /* maybe unalloced */ - } * xpadlarr_dbg; /* for use with a C debugger only */ + PAD ** xpadlarr_alloc; /* Pointer to beginning of array of AVs. + index 0 is a padnamelist * */ + struct { + PADNAMELIST * padnl; + PAD * pad_1; /* this slice of PAD * array always alloced */ + PAD * pad_2; /* maybe unalloced */ + } * xpadlarr_dbg; /* for use with a C debugger only */ } xpadl_arr; U32 xpadl_id; /* Semi-unique ID, shared between clones */ U32 xpadl_outid; /* ID of outer pad */ @@ -63,8 +58,8 @@ char * xpadn_pv; \ HV * xpadn_ourstash; \ union { \ - HV * xpadn_typestash; \ - CV * xpadn_protocv; \ + HV * xpadn_typestash; \ + CV * xpadn_protocv; \ } xpadn_type_u; \ U32 xpadn_low; \ U32 xpadn_high; \ @@ -97,8 +92,8 @@ */ #define PERL_PADSEQ_INTRO U32_MAX #define COP_SEQMAX_INC \ - (PL_cop_seqmax++, \ - (void)(PL_cop_seqmax == PERL_PADSEQ_INTRO && PL_cop_seqmax++)) + (PL_cop_seqmax++, \ + (void)(PL_cop_seqmax == PERL_PADSEQ_INTRO && PL_cop_seqmax++)) /* B.xs needs these for the benefit of B::Deparse */ @@ -124,9 +119,9 @@ /* values for the pad_tidy() function */ typedef enum { - padtidy_SUB, /* tidy up a pad for a sub, */ - padtidy_SUBCLONE, /* a cloned sub, */ - padtidy_FORMAT /* or a format */ + padtidy_SUB, /* tidy up a pad for a sub, */ + padtidy_SUBCLONE, /* a cloned sub, */ + padtidy_FORMAT /* or a format */ } padtidy_type; /* flags for pad_add_name_pvn. */ @@ -135,7 +130,7 @@ #define padadd_STATE 0x02 /* state declaration. */ #define padadd_NO_DUP_CHECK 0x04 /* skip warning on dups. */ #define padadd_STALEOK 0x08 /* allow stale lexical in active - * sub, but only one level up */ + * sub, but only one level up */ /* ASSERT_CURPAD_LEGAL and ASSERT_CURPAD_ACTIVE respectively determine * whether PL_comppad and PL_curpad are consistent and whether they have @@ -147,15 +142,15 @@ # define ASSERT_CURPAD_LEGAL(label) \ pad_peg(label); \ if (PL_comppad ? (AvARRAY(PL_comppad) != PL_curpad) : (PL_curpad != 0)) \ - Perl_croak(aTHX_ "panic: illegal pad in %s: 0x%" UVxf "[0x%" UVxf "]",\ - label, PTR2UV(PL_comppad), PTR2UV(PL_curpad)); + Perl_croak(aTHX_ "panic: illegal pad in %s: 0x%" UVxf "[0x%" UVxf "]",\ + label, PTR2UV(PL_comppad), PTR2UV(PL_curpad)); # define ASSERT_CURPAD_ACTIVE(label) \ pad_peg(label); \ if (!PL_comppad || (AvARRAY(PL_comppad) != PL_curpad)) \ - Perl_croak(aTHX_ "panic: invalid pad in %s: 0x%" UVxf "[0x%" UVxf "]",\ - label, PTR2UV(PL_comppad), PTR2UV(PL_curpad)); + Perl_croak(aTHX_ "panic: invalid pad in %s: 0x%" UVxf "[0x%" UVxf "]",\ + label, PTR2UV(PL_comppad), PTR2UV(PL_curpad)); #else # define ASSERT_CURPAD_LEGAL(label) # define ASSERT_CURPAD_ACTIVE(label) @@ -170,7 +165,10 @@ =for apidoc m|void|SAVEPADSV |PADOFFSET po Save a pad slot (used to restore after an iteration) +=cut + XXX DAPM it would make more sense to make the arg a PADOFFSET + =for apidoc m|void|SAVECLEARSV |SV **svp Clear the pointed to pad value on scope exit. (i.e. the runtime action of C) @@ -234,7 +232,7 @@ =for apidoc m|bool|PadnameIsOUR|PADNAME * pn Whether this is an "our" variable. -=for apidoc m|HV *|PadnameOURSTASH +=for apidoc m|HV *|PadnameOURSTASH|PADNAME * pn The stash in which this "our" variable was declared. =for apidoc m|bool|PadnameOUTER|PADNAME * pn @@ -315,7 +313,7 @@ #define PadnameLEN(pn) (pn)->xpadn_len #define PadnameUTF8(pn) 1 #define PadnameSV(pn) \ - newSVpvn_flags(PadnamePV(pn), PadnameLEN(pn), SVs_TEMP|SVf_UTF8) + newSVpvn_flags(PadnamePV(pn), PadnameLEN(pn), SVs_TEMP|SVf_UTF8) #define PadnameFLAGS(pn) (pn)->xpadn_flags #define PadnameIsOUR(pn) (!!(pn)->xpadn_ourstash) #define PadnameOURSTASH(pn) (pn)->xpadn_ourstash @@ -362,43 +360,43 @@ #define PAD_SVl(po) (PL_curpad[po]) #define PAD_BASE_SV(padlist, po) \ - (PadlistARRAY(padlist)[1]) \ - ? AvARRAY(MUTABLE_AV((PadlistARRAY(padlist)[1])))[po] \ - : NULL; + (PadlistARRAY(padlist)[1]) \ + ? AvARRAY(MUTABLE_AV((PadlistARRAY(padlist)[1])))[po] \ + : NULL; #define PAD_SET_CUR_NOSAVE(padlist,nth) \ - PL_comppad = (PAD*) (PadlistARRAY(padlist)[nth]); \ - PL_curpad = AvARRAY(PL_comppad); \ - DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ - "Pad 0x%" UVxf "[0x%" UVxf "] set_cur depth=%d\n", \ - PTR2UV(PL_comppad), PTR2UV(PL_curpad), (int)(nth))); + PL_comppad = (PAD*) (PadlistARRAY(padlist)[nth]); \ + PL_curpad = AvARRAY(PL_comppad); \ + DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ + "Pad 0x%" UVxf "[0x%" UVxf "] set_cur depth=%d\n", \ + PTR2UV(PL_comppad), PTR2UV(PL_curpad), (int)(nth))); #define PAD_SET_CUR(padlist,nth) \ - SAVECOMPPAD(); \ - PAD_SET_CUR_NOSAVE(padlist,nth); + SAVECOMPPAD(); \ + PAD_SET_CUR_NOSAVE(padlist,nth); #define PAD_SAVE_SETNULLPAD() SAVECOMPPAD(); \ - PL_comppad = NULL; PL_curpad = NULL; \ - DEBUG_Xv(PerlIO_printf(Perl_debug_log, "Pad set_null\n")); + PL_comppad = NULL; PL_curpad = NULL; \ + DEBUG_Xv(PerlIO_printf(Perl_debug_log, "Pad set_null\n")); #define PAD_SAVE_LOCAL(opad,npad) \ - opad = PL_comppad; \ - PL_comppad = (npad); \ - PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ - DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ - "Pad 0x%" UVxf "[0x%" UVxf "] save_local\n", \ - PTR2UV(PL_comppad), PTR2UV(PL_curpad))); + opad = PL_comppad; \ + PL_comppad = (npad); \ + PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ + DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ + "Pad 0x%" UVxf "[0x%" UVxf "] save_local\n", \ + PTR2UV(PL_comppad), PTR2UV(PL_curpad))); #define PAD_RESTORE_LOCAL(opad) \ assert(!opad || !SvIS_FREED(opad)); \ - PL_comppad = opad; \ - PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ - DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ - "Pad 0x%" UVxf "[0x%" UVxf "] restore_local\n", \ - PTR2UV(PL_comppad), PTR2UV(PL_curpad))); + PL_comppad = opad; \ + PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ + DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ + "Pad 0x%" UVxf "[0x%" UVxf "] restore_local\n", \ + PTR2UV(PL_comppad), PTR2UV(PL_curpad))); /* @@ -481,7 +479,7 @@ PL_comppad = av_dup(proto_perl->Icomppad, param); \ PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ PL_comppad_name = \ - padnamelist_dup(proto_perl->Icomppad_name, param); \ + padnamelist_dup(proto_perl->Icomppad_name, param); \ PL_comppad_name_fill = proto_perl->Icomppad_name_fill; \ PL_comppad_name_floor = proto_perl->Icomppad_name_floor; \ PL_min_intro_pending = proto_perl->Imin_intro_pending; \ diff -Nru perl-5.32.1/parser.h perl-5.34.0/parser.h --- perl-5.32.1/parser.h 2020-12-18 09:58:50.000000000 +0000 +++ perl-5.34.0/parser.h 2021-01-20 23:04:44.000000000 +0000 @@ -56,7 +56,7 @@ char *lex_casestack; /* what kind of case mods in effect */ U8 lex_defer; /* state after determined token */ U8 lex_dojoin; /* doing an array interpolation - 1 = @{...} 2 = ->@ */ + 1 = @{...} 2 = ->@ */ U8 expect; /* how to interpret ambiguous tokens */ bool preambled; bool sub_no_recover; /* can't recover from a sublex error */ @@ -81,8 +81,8 @@ LEXSHARED *lex_shared; SV *linestr; /* current chunk of src text */ char *bufptr; /* carries the cursor (current parsing - position) from one invocation of yylex - to the next */ + position) from one invocation of yylex + to the next */ char *oldbufptr; /* in yylex, beginning of current token */ char *oldoldbufptr; /* in yylex, beginning of previous token */ char *bufend; @@ -137,8 +137,8 @@ # define LEX_START_COPIED 0x00000008 # define LEX_DONT_CLOSE_RSFP 0x00000010 # define LEX_START_FLAGS \ - (LEX_START_SAME_FILTER|LEX_START_COPIED \ - |LEX_IGNORE_UTF8_HINTS|LEX_EVALBYTES|LEX_DONT_CLOSE_RSFP) + (LEX_START_SAME_FILTER|LEX_START_COPIED \ + |LEX_IGNORE_UTF8_HINTS|LEX_EVALBYTES|LEX_DONT_CLOSE_RSFP) #endif /* flags for parser API */ diff -Nru perl-5.32.1/patchlevel.h perl-5.34.0/patchlevel.h --- perl-5.32.1/patchlevel.h 2021-01-09 16:54:51.000000000 +0000 +++ perl-5.34.0/patchlevel.h 2021-05-15 14:57:14.000000000 +0000 @@ -8,14 +8,38 @@ * */ +/* +=for apidoc AmDnU|U8|PERL_REVISION +The major number component of the perl interpreter currently being compiled or +executing. This has been C<5> from 1993 into 2020. + +Instead use one of the version comparison macros. See C>. + +=for apidoc AmDnU|U8|PERL_VERSION +The minor number component of the perl interpreter currently being compiled or +executing. Between 1993 into 2020, this has ranged from 0 to 33. + +Instead use one of the version comparison macros. See C>. + +=for apidoc AmDnU|U8|PERL_SUBVERSION +The micro number component of the perl interpreter currently being compiled or +executing. In stable releases this gives the dot release number for +maintenance updates. In development releases this gives a tag for a snapshot +of the status at various points in the development cycle. + +Instead use one of the version comparison macros. See C>. + +=cut +*/ + #ifndef __PATCHLEVEL_H_INCLUDED__ /* do not adjust the whitespace! Configure expects the numbers to be * exactly on the third column */ #define PERL_REVISION 5 /* age */ -#define PERL_VERSION 32 /* epoch */ -#define PERL_SUBVERSION 1 /* generation */ +#define PERL_VERSION 34 /* epoch */ +#define PERL_SUBVERSION 0 /* generation */ /* The following numbers describe the earliest compatible version of Perl ("compatibility" here being defined as sufficient binary/API @@ -35,7 +59,7 @@ changing them should not be necessary. */ #define PERL_API_REVISION 5 -#define PERL_API_VERSION 32 +#define PERL_API_VERSION 34 #define PERL_API_SUBVERSION 0 /* XXX Note: The selection of non-default Configure options, such @@ -47,42 +71,42 @@ #endif /* - local_patches -- list of locally applied less-than-subversion patches. - If you're distributing such a patch, please give it a name and a - one-line description, placed just before the last NULL in the array - below. If your patch fixes a bug in the perlbug database, please - mention the bugid. If your patch *IS* dependent on a prior patch, - please place your applied patch line after its dependencies. This - will help tracking of patch dependencies. - - Please either use 'diff --unified=0' if your diff supports - that or edit the hunk of the diff output which adds your patch - to this list, to remove context lines which would give patch - problems. For instance, if the original context diff is - - *** patchlevel.h.orig - --- patchlevel.h - *** 38,43 *** - --- 38,44 --- - ,"FOO1235 - some patch" - ,"BAR3141 - another patch" - ,"BAZ2718 - and another patch" - + ,"MINE001 - my new patch" - ,NULL - }; - - please change it to - *** patchlevel.h.orig - --- patchlevel.h - *** 41,43 *** - --- 41,44 --- - + ,"MINE001 - my new patch" - ,NULL - }; - - (Note changes to line numbers as well as removal of context lines.) - This will prevent patch from choking if someone has previously - applied different patches than you. + local_patches -- list of locally applied less-than-subversion patches. + If you're distributing such a patch, please give it a name and a + one-line description, placed just before the last NULL in the array + below. If your patch fixes a bug in the perlbug database, please + mention the bugid. If your patch *IS* dependent on a prior patch, + please place your applied patch line after its dependencies. This + will help tracking of patch dependencies. + + Please either use 'diff --unified=0' if your diff supports + that or edit the hunk of the diff output which adds your patch + to this list, to remove context lines which would give patch + problems. For instance, if the original context diff is + + *** patchlevel.h.orig + --- patchlevel.h + *** 38,43 *** + --- 38,44 --- + ,"FOO1235 - some patch" + ,"BAR3141 - another patch" + ,"BAZ2718 - and another patch" + + ,"MINE001 - my new patch" + ,NULL + }; + + please change it to + *** patchlevel.h.orig + --- patchlevel.h + *** 41,43 *** + --- 41,44 --- + + ,"MINE001 - my new patch" + ,NULL + }; + + (Note changes to line numbers as well as removal of context lines.) + This will prevent patch from choking if someone has previously + applied different patches than you. History has shown that nobody distributes patches that also modify patchlevel.h. Do it yourself. The following perl @@ -96,8 +120,8 @@ while () { if (/\t,NULL/ and $seen) { while (my $c = shift @ARGV){ - $c =~ s|\\|\\\\|g; - $c =~ s|"|\\"|g; + $c =~ s|\\|\\\\|g; + $c =~ s|"|\\"|g; print PLOUT qq{\t,"$c"\n}; } } @@ -132,19 +156,19 @@ #include "git_version.h" # endif static const char * const local_patches[] = { - NULL + NULL #ifdef PERL_GIT_UNCOMMITTED_CHANGES - ,"uncommitted-changes" + ,"uncommitted-changes" #endif - PERL_GIT_UNPUSHED_COMMITS /* do not remove this line */ - ,NULL + PERL_GIT_UNPUSHED_COMMITS /* do not remove this line */ + ,NULL }; /* Initial space prevents this variable from being inserted in config.sh */ # define LOCAL_PATCH_COUNT \ - ((int)(C_ARRAY_LENGTH(local_patches)-2)) + ((int)(C_ARRAY_LENGTH(local_patches)-2)) /* the old terms of reference, add them only when explicitly included */ #define PATCHLEVEL PERL_VERSION diff -Nru perl-5.32.1/perlapi.c perl-5.34.0/perlapi.c --- perl-5.32.1/perlapi.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/perlapi.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -/* -*- buffer-read-only: t -*- - * - * perlapi.c - * - * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - * 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall and others - * - * You may distribute under the terms of either the GNU General Public - * License or the Artistic License, as specified in the README file. - * - * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - * This file is built by regen/embed.pl from data in embed.fnc, - * regen/embed.pl, regen/opcodes, intrpvar.h and perlvars.h. - * Any changes made here will be lost! - * - * Edit those files and run 'make regen_headers' to effect changes. - * - * - * Up to the threshold of the door there mounted a flight of twenty-seven - * broad stairs, hewn by some unknown art of the same black stone. This - * was the only entrance to the tower; ... - * - * [p.577 of _The Lord of the Rings_, III/x: "The Voice of Saruman"] - * - */ - -#include "EXTERN.h" -#include "perl.h" -#include "perlapi.h" - -#if defined (MULTIPLICITY) && defined (PERL_GLOBAL_STRUCT) - -/* accessor functions for Perl "global" variables */ -START_EXTERN_C - -#undef PERLVARI -#define PERLVARI(p,v,t,i) PERLVAR(p,v,t) - -#undef PERLVAR -#undef PERLVARA -#define PERLVAR(p,v,t) t* Perl_##p##v##_ptr(pTHX) \ - { dVAR; PERL_UNUSED_CONTEXT; return &(PL_##v); } -#define PERLVARA(p,v,n,t) PL_##v##_t* Perl_##p##v##_ptr(pTHX) \ - { dVAR; PERL_UNUSED_CONTEXT; return &(PL_##v); } -#undef PERLVARIC -#define PERLVARIC(p,v,t,i) \ - const t* Perl_##p##v##_ptr(pTHX) \ - { PERL_UNUSED_CONTEXT; return (const t *)&(PL_##v); } -#include "perlvars.h" - -#undef PERLVAR -#undef PERLVARA -#undef PERLVARI -#undef PERLVARIC - -END_EXTERN_C - -#endif /* MULTIPLICITY && PERL_GLOBAL_STRUCT */ - -/* ex: set ro: */ diff -Nru perl-5.32.1/perlapi.h perl-5.34.0/perlapi.h --- perl-5.32.1/perlapi.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/perlapi.h 2020-10-04 22:17:13.000000000 +0000 @@ -1,4 +1,4 @@ -/* -*- buffer-read-only: t -*- +/* * * perlapi.h * @@ -8,221 +8,15 @@ * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * - * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - * This file is built by regen/embed.pl from data in embed.fnc, - * regen/embed.pl, regen/opcodes, intrpvar.h and perlvars.h. - * Any changes made here will be lost! - * - * Edit those files and run 'make regen_headers' to effect changes. */ -/* declare accessor functions for Perl variables */ +/* + * This file used to declare accessor functions for Perl variables + * when PERL_GLOBAL_STRUCT was enabled, but that no longer exists. + * This file is kept for backwards compatiblity with XS code that + * might include it. + */ #ifndef __perlapi_h__ #define __perlapi_h__ -#if defined (MULTIPLICITY) && defined (PERL_GLOBAL_STRUCT) - -START_EXTERN_C - -#undef PERLVAR -#undef PERLVARA -#undef PERLVARI -#undef PERLVARIC -#define PERLVAR(p,v,t) EXTERN_C t* Perl_##p##v##_ptr(pTHX); -#define PERLVARA(p,v,n,t) typedef t PL_##v##_t[n]; \ - EXTERN_C PL_##v##_t* Perl_##p##v##_ptr(pTHX); -#define PERLVARI(p,v,t,i) PERLVAR(p,v,t) -#define PERLVARIC(p,v,t,i) PERLVAR(p,v, const t) - -#include "perlvars.h" - -#undef PERLVAR -#undef PERLVARA -#undef PERLVARI -#undef PERLVARIC - -END_EXTERN_C - -#if defined(PERL_CORE) - -/* accessor functions for Perl "global" variables */ - -/* these need to be mentioned here, or most linkers won't put them in - the perl executable */ - -#ifndef PERL_NO_FORCE_LINK - -START_EXTERN_C - -#ifndef DOINIT -EXTCONST void * const PL_force_link_funcs[]; -#else -EXTCONST void * const PL_force_link_funcs[] = { -#undef PERLVAR -#undef PERLVARA -#undef PERLVARI -#undef PERLVARIC -#define PERLVAR(p,v,t) (void*)Perl_##p##v##_ptr, -#define PERLVARA(p,v,n,t) PERLVAR(p,v,t) -#define PERLVARI(p,v,t,i) PERLVAR(p,v,t) -#define PERLVARIC(p,v,t,i) PERLVAR(p,v,t) - -/* In Tru64 (__DEC && __osf__) the cc option -std1 causes that one - * cannot cast between void pointers and function pointers without - * info level warnings. The PL_force_link_funcs[] would cause a few - * hundred of those warnings. In code one can circumnavigate this by using - * unions that overlay the different pointers, but in declarations one - * cannot use this trick. Therefore we just disable the warning here - * for the duration of the PL_force_link_funcs[] declaration. */ - -#if defined(__DECC) && defined(__osf__) -#pragma message save -#pragma message disable (nonstandcast) -#endif - -#include "perlvars.h" - -#if defined(__DECC) && defined(__osf__) -#pragma message restore -#endif - -#undef PERLVAR -#undef PERLVARA -#undef PERLVARI -#undef PERLVARIC -}; -#endif /* DOINIT */ - -END_EXTERN_C - -#endif /* PERL_NO_FORCE_LINK */ - -#else /* !PERL_CORE */ - -#undef PL_C_locale_obj -#define PL_C_locale_obj (*Perl_GC_locale_obj_ptr(NULL)) -#undef PL_appctx -#define PL_appctx (*Perl_Gappctx_ptr(NULL)) -#undef PL_check -#define PL_check (*Perl_Gcheck_ptr(NULL)) -#undef PL_check_mutex -#define PL_check_mutex (*Perl_Gcheck_mutex_ptr(NULL)) -#undef PL_csighandler1p -#define PL_csighandler1p (*Perl_Gcsighandler1p_ptr(NULL)) -#undef PL_csighandler3p -#define PL_csighandler3p (*Perl_Gcsighandler3p_ptr(NULL)) -#undef PL_csighandlerp -#define PL_csighandlerp (*Perl_Gcsighandlerp_ptr(NULL)) -#undef PL_curinterp -#define PL_curinterp (*Perl_Gcurinterp_ptr(NULL)) -#undef PL_do_undump -#define PL_do_undump (*Perl_Gdo_undump_ptr(NULL)) -#undef PL_dollarzero_mutex -#define PL_dollarzero_mutex (*Perl_Gdollarzero_mutex_ptr(NULL)) -#undef PL_env_mutex -#define PL_env_mutex (*Perl_Genv_mutex_ptr(NULL)) -#undef PL_fold_locale -#define PL_fold_locale (*Perl_Gfold_locale_ptr(NULL)) -#undef PL_hash_chars -#define PL_hash_chars (*Perl_Ghash_chars_ptr(NULL)) -#undef PL_hash_seed -#define PL_hash_seed (*Perl_Ghash_seed_ptr(NULL)) -#undef PL_hash_seed_set -#define PL_hash_seed_set (*Perl_Ghash_seed_set_ptr(NULL)) -#undef PL_hash_state -#define PL_hash_state (*Perl_Ghash_state_ptr(NULL)) -#undef PL_hints_mutex -#define PL_hints_mutex (*Perl_Ghints_mutex_ptr(NULL)) -#undef PL_keyword_plugin -#define PL_keyword_plugin (*Perl_Gkeyword_plugin_ptr(NULL)) -#undef PL_keyword_plugin_mutex -#define PL_keyword_plugin_mutex (*Perl_Gkeyword_plugin_mutex_ptr(NULL)) -#undef PL_lc_numeric_mutex -#define PL_lc_numeric_mutex (*Perl_Glc_numeric_mutex_ptr(NULL)) -#undef PL_locale_mutex -#define PL_locale_mutex (*Perl_Glocale_mutex_ptr(NULL)) -#undef PL_malloc_mutex -#define PL_malloc_mutex (*Perl_Gmalloc_mutex_ptr(NULL)) -#undef PL_mmap_page_size -#define PL_mmap_page_size (*Perl_Gmmap_page_size_ptr(NULL)) -#undef PL_my_ctx_mutex -#define PL_my_ctx_mutex (*Perl_Gmy_ctx_mutex_ptr(NULL)) -#undef PL_my_cxt_index -#define PL_my_cxt_index (*Perl_Gmy_cxt_index_ptr(NULL)) -#undef PL_my_cxt_keys -#define PL_my_cxt_keys (*Perl_Gmy_cxt_keys_ptr(NULL)) -#undef PL_my_cxt_keys_size -#define PL_my_cxt_keys_size (*Perl_Gmy_cxt_keys_size_ptr(NULL)) -#undef PL_op_mutex -#define PL_op_mutex (*Perl_Gop_mutex_ptr(NULL)) -#undef PL_op_seq -#define PL_op_seq (*Perl_Gop_seq_ptr(NULL)) -#undef PL_op_sequence -#define PL_op_sequence (*Perl_Gop_sequence_ptr(NULL)) -#undef PL_perlio_debug_fd -#define PL_perlio_debug_fd (*Perl_Gperlio_debug_fd_ptr(NULL)) -#undef PL_perlio_fd_refcnt -#define PL_perlio_fd_refcnt (*Perl_Gperlio_fd_refcnt_ptr(NULL)) -#undef PL_perlio_fd_refcnt_size -#define PL_perlio_fd_refcnt_size (*Perl_Gperlio_fd_refcnt_size_ptr(NULL)) -#undef PL_perlio_mutex -#define PL_perlio_mutex (*Perl_Gperlio_mutex_ptr(NULL)) -#undef PL_perllib_sep -#define PL_perllib_sep (*Perl_Gperllib_sep_ptr(NULL)) -#undef PL_ppaddr -#define PL_ppaddr (*Perl_Gppaddr_ptr(NULL)) -#undef PL_sh_path -#define PL_sh_path (*Perl_Gsh_path_ptr(NULL)) -#undef PL_sig_defaulting -#define PL_sig_defaulting (*Perl_Gsig_defaulting_ptr(NULL)) -#undef PL_sig_handlers_initted -#define PL_sig_handlers_initted (*Perl_Gsig_handlers_initted_ptr(NULL)) -#undef PL_sig_ignoring -#define PL_sig_ignoring (*Perl_Gsig_ignoring_ptr(NULL)) -#undef PL_sig_trapped -#define PL_sig_trapped (*Perl_Gsig_trapped_ptr(NULL)) -#undef PL_sigfpe_saved -#define PL_sigfpe_saved (*Perl_Gsigfpe_saved_ptr(NULL)) -#undef PL_strategy_accept -#define PL_strategy_accept (*Perl_Gstrategy_accept_ptr(NULL)) -#undef PL_strategy_dup -#define PL_strategy_dup (*Perl_Gstrategy_dup_ptr(NULL)) -#undef PL_strategy_dup2 -#define PL_strategy_dup2 (*Perl_Gstrategy_dup2_ptr(NULL)) -#undef PL_strategy_mkstemp -#define PL_strategy_mkstemp (*Perl_Gstrategy_mkstemp_ptr(NULL)) -#undef PL_strategy_open -#define PL_strategy_open (*Perl_Gstrategy_open_ptr(NULL)) -#undef PL_strategy_open3 -#define PL_strategy_open3 (*Perl_Gstrategy_open3_ptr(NULL)) -#undef PL_strategy_pipe -#define PL_strategy_pipe (*Perl_Gstrategy_pipe_ptr(NULL)) -#undef PL_strategy_socket -#define PL_strategy_socket (*Perl_Gstrategy_socket_ptr(NULL)) -#undef PL_strategy_socketpair -#define PL_strategy_socketpair (*Perl_Gstrategy_socketpair_ptr(NULL)) -#undef PL_sv_placeholder -#define PL_sv_placeholder (*Perl_Gsv_placeholder_ptr(NULL)) -#undef PL_thr_key -#define PL_thr_key (*Perl_Gthr_key_ptr(NULL)) -#undef PL_timesbase -#define PL_timesbase (*Perl_Gtimesbase_ptr(NULL)) -#undef PL_use_safe_putenv -#define PL_use_safe_putenv (*Perl_Guse_safe_putenv_ptr(NULL)) -#undef PL_user_def_props -#define PL_user_def_props (*Perl_Guser_def_props_ptr(NULL)) -#undef PL_user_def_props_aTHX -#define PL_user_def_props_aTHX (*Perl_Guser_def_props_aTHX_ptr(NULL)) -#undef PL_user_prop_mutex -#define PL_user_prop_mutex (*Perl_Guser_prop_mutex_ptr(NULL)) -#undef PL_veto_cleanup -#define PL_veto_cleanup (*Perl_Gveto_cleanup_ptr(NULL)) -#undef PL_watch_pvx -#define PL_watch_pvx (*Perl_Gwatch_pvx_ptr(NULL)) - -#endif /* !PERL_CORE */ -#endif /* MULTIPLICITY && PERL_GLOBAL_STRUCT */ - #endif /* __perlapi_h__ */ - -/* ex: set ro: */ diff -Nru perl-5.32.1/perl.c perl-5.34.0/perl.c --- perl-5.32.1/perl.c 2021-01-08 21:20:36.000000000 +0000 +++ perl-5.34.0/perl.c 2021-01-20 23:04:44.000000000 +0000 @@ -84,7 +84,6 @@ static void S_init_tls_and_interp(PerlInterpreter *my_perl) { - dVAR; if (!PL_curinterp) { PERL_SET_INTERP(my_perl); #if defined(USE_ITHREADS) @@ -118,7 +117,6 @@ void Perl_sys_init(int* argc, char*** argv) { - dVAR; PERL_ARGS_ASSERT_SYS_INIT; @@ -130,7 +128,6 @@ void Perl_sys_init3(int* argc, char*** argv, char*** env) { - dVAR; PERL_ARGS_ASSERT_SYS_INIT3; @@ -143,7 +140,6 @@ void Perl_sys_term(void) { - dVAR; if (!PL_veto_cleanup) { PERL_SYS_TERM_BODY(); } @@ -182,7 +178,7 @@ #else /* -=head1 Embedding Functions +=for apidoc_section $embedding =for apidoc perl_alloc @@ -221,7 +217,6 @@ void perl_construct(pTHXx) { - dVAR; PERL_ARGS_ASSERT_PERL_CONSTRUCT; @@ -422,13 +417,6 @@ } #endif /* HAS_MMAP */ -#if defined(HAS_TIMES) && defined(PERL_NEED_TIMESBASE) - PL_timesbase.tms_utime = 0; - PL_timesbase.tms_stime = 0; - PL_timesbase.tms_cutime = 0; - PL_timesbase.tms_cstime = 0; -#endif - PL_osname = Perl_savepvn(aTHX_ STR_WITH_LEN(OSNAME)); PL_registered_mros = newHV(); @@ -594,7 +582,6 @@ int perl_destruct(pTHXx) { - dVAR; volatile signed char destruct_level; /* see possible values in intrpvar.h */ HV *hv; #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP @@ -1542,7 +1529,6 @@ void perl_free(pTHXx) { - dVAR; PERL_ARGS_ASSERT_PERL_FREE; @@ -1611,11 +1597,7 @@ #endif perl_fini(void) { - dVAR; if ( -#ifdef PERL_GLOBAL_STRUCT_PRIVATE - my_vars && -#endif PL_curinterp && !PL_veto_cleanup) FREE_THREAD_KEY; } @@ -1701,7 +1683,6 @@ int perl_parse(pTHXx_ XSINIT_t xsinit, int argc, char **argv, char **env) { - dVAR; I32 oldscope; int ret; dJMPENV; @@ -2097,7 +2078,6 @@ STATIC void * S_parse_body(pTHX_ char **env, XSINIT_t xsinit) { - dVAR; PerlIO *rsfp; int argc = PL_origargc; char **argv = PL_origargv; @@ -2106,6 +2086,7 @@ char c; bool doextract = FALSE; const char *cddir = NULL; + bool minus_e = FALSE; /* both -e and -E */ #ifdef USE_SITECUSTOMIZE bool minus_f = FALSE; #endif @@ -2188,6 +2169,7 @@ /* FALLTHROUGH */ case 'e': forbid_setid('e', FALSE); + minus_e = TRUE; if (!PL_e_script) { PL_e_script = newSVpvs(""); add_read_e_script = TRUE; @@ -2481,7 +2463,7 @@ if (xsinit) (*xsinit)(aTHX); /* in case linked C routines want magical variables */ #ifndef PERL_MICRO -#if defined(VMS) || defined(WIN32) || defined(DJGPP) || defined(__CYGWIN__) || defined(SYMBIAN) +#if defined(VMS) || defined(WIN32) || defined(DJGPP) || defined(__CYGWIN__) init_os_extras(); #endif #endif @@ -2506,9 +2488,6 @@ * PL_utf8locale is conditionally turned on by * locale.c:Perl_init_i18nl10n() if the environment * look like the user wants to use UTF-8. */ -#if defined(__SYMBIAN32__) - PL_unicode = PERL_UNICODE_STD_FLAG; /* See PERL_SYMBIAN_CONSOLE_UTF8. */ -#endif # ifndef PERL_IS_MINIPERL if (PL_unicode) { /* Requires init_predump_symbols(). */ @@ -2572,6 +2551,8 @@ filter_add(read_e_script, NULL); /* now parse the script */ + if (minus_e == FALSE) + PL_hints |= HINTS_DEFAULT; /* after init_main_stash ; need to be after init_predump_symbols */ SETERRNO(0,SS_NORMAL); if (yyparse(GRAMPROG) || PL_parser->error_count) { @@ -2766,7 +2747,7 @@ } /* -=head1 SV Manipulation Functions +=for apidoc_section $SV =for apidoc get_sv @@ -2792,7 +2773,7 @@ } /* -=head1 Array Manipulation Functions +=for apidoc_section $AV =for apidoc get_av @@ -2822,7 +2803,7 @@ } /* -=head1 Hash Manipulation Functions +=for apidoc_section $HV =for apidoc get_hv @@ -2849,19 +2830,26 @@ } /* -=head1 CV Manipulation Functions +=for apidoc_section $CV -=for apidoc get_cvn_flags +=for apidoc get_cv +=for apidoc_item |CV *|get_cvs|"string"|I32 flags +=for apidoc_item get_cvn_flags -Returns the CV of the specified Perl subroutine. C are passed to +These return the CV of the specified Perl subroutine. C are passed to C. If C is set and the Perl subroutine does not exist then it will be declared (which has the same effect as saying -C). If C is not set and the subroutine does not exist +C). If C is not set and the subroutine does not exist, then NULL is returned. -=for apidoc get_cv +The forms differ only in how the subroutine is specified.. With C, +the name is a literal C string, enclosed in double quotes. With C, the +name is given by the C parameter, which must be a NUL-terminated C +string. With C, the name is also given by the C +parameter, but it is a Perl string (possibly containing embedded NUL bytes), +and its length in bytes is contained in the C parameter. -Uses C to get the length of C, then calls C. +=for apidoc Amnh||GV_ADD =cut */ @@ -2901,7 +2889,7 @@ /* -=head1 Callback Functions +=for apidoc_section $callback =for apidoc call_argv @@ -3008,7 +2996,6 @@ Perl_call_sv(pTHX_ SV *sv, volatile I32 flags) /* See G_* flags in cop.h */ { - dVAR; LOGOP myop; /* fake syntax tree node */ METHOP method_op; I32 oldmark; @@ -3162,7 +3149,6 @@ /* See G_* flags in cop.h */ { - dVAR; UNOP myop; /* fake syntax tree node */ volatile I32 oldmark; volatile I32 retval = 0; @@ -3297,7 +3283,7 @@ /* Require a module. */ /* -=head1 Embedding Functions +=for apidoc_section $embedding =for apidoc require_pv @@ -3330,34 +3316,34 @@ /* Grouped as 6 lines per C string literal, to keep under the ANSI C 89 minimum of 509 character string literals. */ static const char * const usage_msg[] = { -" -0[octal] specify record separator (\\0, if no argument)\n" -" -a autosplit mode with -n or -p (splits $_ into @F)\n" -" -C[number/list] enables the listed Unicode features\n" -" -c check syntax only (runs BEGIN and CHECK blocks)\n" -" -d[:debugger] run program under debugger\n" -" -D[number/list] set debugging flags (argument is a bit mask or alphabets)\n", -" -e program one line of program (several -e's allowed, omit programfile)\n" -" -E program like -e, but enables all optional features\n" -" -f don't do $sitelib/sitecustomize.pl at startup\n" -" -F/pattern/ split() pattern for -a switch (//'s are optional)\n" -" -i[extension] edit <> files in place (makes backup if extension supplied)\n" -" -Idirectory specify @INC/#include directory (several -I's allowed)\n", -" -l[octal] enable line ending processing, specifies line terminator\n" -" -[mM][-]module execute \"use/no module...\" before executing program\n" -" -n assume \"while (<>) { ... }\" loop around program\n" -" -p assume loop like -n but print line also, like sed\n" -" -s enable rudimentary parsing for switches after programfile\n" -" -S look for programfile using PATH environment variable\n", -" -t enable tainting warnings\n" -" -T enable tainting checks\n" -" -u dump core after parsing program\n" -" -U allow unsafe operations\n" -" -v print version, patchlevel and license\n" -" -V[:variable] print configuration summary (or a single Config.pm variable)\n", -" -w enable many useful warnings\n" -" -W enable all warnings\n" -" -x[directory] ignore text before #!perl line (optionally cd to directory)\n" -" -X disable all warnings\n" +" -0[octal/hexadecimal] specify record separator (\\0, if no argument)\n" +" -a autosplit mode with -n or -p (splits $_ into @F)\n" +" -C[number/list] enables the listed Unicode features\n" +" -c check syntax only (runs BEGIN and CHECK blocks)\n" +" -d[t][:MOD] run program under debugger or module Devel::MOD\n" +" -D[number/letters] set debugging flags (argument is a bit mask or alphabets)\n", +" -e commandline one line of program (several -e's allowed, omit programfile)\n" +" -E commandline like -e, but enables all optional features\n" +" -f don't do $sitelib/sitecustomize.pl at startup\n" +" -F/pattern/ split() pattern for -a switch (//'s are optional)\n" +" -i[extension] edit <> files in place (makes backup if extension supplied)\n" +" -Idirectory specify @INC/#include directory (several -I's allowed)\n", +" -l[octnum] enable line ending processing, specifies line terminator\n" +" -[mM][-]module execute \"use/no module...\" before executing program\n" +" -n assume \"while (<>) { ... }\" loop around program\n" +" -p assume loop like -n but print line also, like sed\n" +" -s enable rudimentary parsing for switches after programfile\n" +" -S look for programfile using PATH environment variable\n", +" -t enable tainting warnings\n" +" -T enable tainting checks\n" +" -u dump core after parsing program\n" +" -U allow unsafe operations\n" +" -v print version, patchlevel and license\n" +" -V[:configvar] print configuration summary (or a single Config.pm variable)\n", +" -w enable many useful warnings\n" +" -W enable all warnings\n" +" -x[directory] ignore text before #!perl line (optionally cd to directory)\n" +" -X disable all warnings\n" " \n" "Run 'perldoc perl' for more help with Perl.\n\n", NULL @@ -3448,7 +3434,6 @@ const char * Perl_moreswitches(pTHX_ const char *s) { - dVAR; UV rschar; const char option = *s; /* used to remember option in -m/-M code */ @@ -3862,10 +3847,6 @@ PerlIO_printf(PIO_stdout, "BS2000 (POSIX) port by Start Amadeus GmbH, 1998-1999\n"); #endif -#ifdef __SYMBIAN32__ - PerlIO_printf(PIO_stdout, - "Symbian port by Nokia, 2004-2005\n"); -#endif #ifdef BINARY_BUILD_NOTICE BINARY_BUILD_NOTICE; #endif @@ -4147,7 +4128,6 @@ PERL_ARGS_ASSERT_VALIDATE_SUID; if (my_euid != my_uid || my_egid != my_gid) { /* (suidperl doesn't exist, in fact) */ - dVAR; int fd = PerlIO_fileno(rsfp); Stat_t statbuf; if (fd < 0 || PerlLIO_fstat(fd, &statbuf) < 0) { /* may be either wrapped or real suid */ @@ -4564,9 +4544,6 @@ STATIC void S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env) { -#ifdef USE_ITHREADS - dVAR; -#endif GV* tmpgv; PERL_ARGS_ASSERT_INIT_POSTDUMP_SYMBOLS; @@ -4768,7 +4745,7 @@ } } -#if defined(DOSISH) || defined(__SYMBIAN32__) +#if defined(DOSISH) # define PERLLIB_SEP ';' #elif defined(__VMS) # define PERLLIB_SEP PL_perllib_sep @@ -5021,7 +4998,7 @@ #ifdef PERL_IS_MINIPERL const Size_t extra = 0; #else - Size_t extra = av_tindex(av) + 1; + Size_t extra = av_count(av); #endif av_unshift(inc, extra + push_basedir); if (push_basedir) @@ -5107,7 +5084,7 @@ PERL_ARGS_ASSERT_CALL_LIST; - while (av_tindex(paramList) >= 0) { + while (av_count(paramList) > 0) { cv = MUTABLE_CV(av_shift(paramList)); if (PL_savebegin) { if (paramList == PL_beginav) { diff -Nru perl-5.32.1/perl.h perl-5.34.0/perl.h --- perl-5.32.1/perl.h 2020-12-26 15:20:27.000000000 +0000 +++ perl-5.34.0/perl.h 2021-05-04 06:52:48.000000000 +0000 @@ -31,11 +31,11 @@ /* this is used for functions which take a depth trailing * argument under debugging */ #ifdef DEBUGGING -#define _pDEPTH ,U32 depth -#define _aDEPTH ,depth +# define _pDEPTH ,U32 depth +# define _aDEPTH ,depth #else -#define _pDEPTH -#define _aDEPTH +# define _pDEPTH +# define _aDEPTH #endif /* NOTE 1: that with gcc -std=c89 the __STDC_VERSION__ is *not* defined @@ -62,18 +62,6 @@ # endif #endif -#ifdef PERL_GLOBAL_STRUCT_PRIVATE -# ifndef PERL_GLOBAL_STRUCT -# define PERL_GLOBAL_STRUCT -# endif -#endif - -#ifdef PERL_GLOBAL_STRUCT -# ifndef MULTIPLICITY -# define MULTIPLICITY -# endif -#endif - #ifdef MULTIPLICITY # ifndef PERL_IMPLICIT_CONTEXT # define PERL_IMPLICIT_CONTEXT @@ -86,27 +74,6 @@ # undef _WIN32 #endif -#if defined(__SYMBIAN32__) || (defined(__VC32__) && defined(WINS)) -# ifndef SYMBIAN -# define SYMBIAN -# endif -#endif - -#ifdef __SYMBIAN32__ -# include "symbian/symbian_proto.h" -#endif - -/* Any stack-challenged places. The limit varies (and often - * is configurable), but using more than a kilobyte of stack - * is usually dubious in these systems. */ -#if defined(__SYMBIAN32__) -/* Symbian: need to work around the SDK features. * - * On WINS: MS VC5 generates calls to _chkstk, * - * if a "large" stack frame is allocated. * - * gcc on MARM does not generate calls like these. */ -# define USE_HEAP_INSTEAD_OF_STACK -#endif - /* Use the reentrant APIs like localtime_r and getpwent_r */ /* Win32 has naturally threadsafe libraries, no need to use any _r variants. * XXX KEEP makedef.pl copy of this code in sync */ @@ -116,13 +83,40 @@ /* <--- here ends the logic shared by perl.h and makedef.pl */ +/* +=for apidoc_section $directives +=for apidoc AmnUu|void|EXTERN_C +When not compiling using C++, expands to nothing. +Otherwise is used in a declaration of a function to indicate the function +should have external C linkage. This is required for things to work for just +about all functions with external linkage compiled into perl. +Often, you can use C> ... C> blocks +surrounding all your code that you need to have this linkage. + +Example usage: + + EXTERN_C int flock(int fd, int op); + +=for apidoc Amnu||START_EXTERN_C +When not compiling using C++, expands to nothing. +Otherwise begins a section of code in which every function will effectively +have C> applied to it, that is to have external C linkage. The +section is ended by a C>. + +=for apidoc Amnu||END_EXTERN_C +When not compiling using C++, expands to nothing. +Otherwise ends a section of code already begun by a C>. + +=cut +*/ + #undef START_EXTERN_C #undef END_EXTERN_C #undef EXTERN_C #ifdef __cplusplus -# define START_EXTERN_C extern "C" { -# define END_EXTERN_C } # define EXTERN_C extern "C" +# define START_EXTERN_C EXTERN_C { +# define END_EXTERN_C } #else # define START_EXTERN_C # define END_EXTERN_C @@ -141,25 +135,16 @@ # endif #endif -#if defined(PERL_GLOBAL_STRUCT) && !defined(PERL_GET_VARS) -# ifdef PERL_GLOBAL_STRUCT_PRIVATE - EXTERN_C struct perl_vars* Perl_GetVarsPrivate(); -# define PERL_GET_VARS() Perl_GetVarsPrivate() /* see miniperlmain.c */ -# else -# define PERL_GET_VARS() PL_VarsPtr -# endif -#endif - -/* this used to be off by default, now its on, see perlio.h */ -#define PERLIO_FUNCS_CONST +/* +=for apidoc_section $concurrency +=for apidoc AmU|void|dTHXa|PerlInterpreter * a +On threaded perls, set C to C; on unthreaded perls, do nothing -#define pVAR struct perl_vars* my_vars PERL_UNUSED_DECL +=for apidoc AmU|void|dTHXoa|PerlInterpreter * a +Now a synonym for C>. -#ifdef PERL_GLOBAL_STRUCT -# define dVAR pVAR = (struct perl_vars*)PERL_GET_VARS() -#else -# define dVAR dNOOP -#endif +=cut +*/ #ifdef PERL_IMPLICIT_CONTEXT # ifndef MULTIPLICITY @@ -169,16 +154,8 @@ # define pTHX tTHX my_perl PERL_UNUSED_DECL # define aTHX my_perl # define aTHXa(a) aTHX = (tTHX)a -# ifdef PERL_GLOBAL_STRUCT -# define dTHXa(a) dVAR; pTHX = (tTHX)a -# else -# define dTHXa(a) pTHX = (tTHX)a -# endif -# ifdef PERL_GLOBAL_STRUCT -# define dTHX dVAR; pTHX = PERL_GET_THX -# else -# define dTHX pTHX = PERL_GET_THX -# endif +# define dTHXa(a) pTHX = (tTHX)a +# define dTHX pTHX = PERL_GET_THX # define pTHX_ pTHX, # define aTHX_ aTHX, # define pTHX_1 2 @@ -211,16 +188,24 @@ * implementation of multiplicity using C++ objects. They have been left * here solely for the sake of XS code which has incorrectly * cargo-culted them. + * + * The only one Devel::PPPort handles is this; list it as deprecated + +=for apidoc_section $concurrency +=for apidoc AmD|void|CPERLscope|void x +Now a no-op. + +=cut */ -#define CPERLscope(x) x -#define CPERLarg void -#define CPERLarg_ -#define _CPERLarg -#define PERL_OBJECT_THIS -#define _PERL_OBJECT_THIS -#define PERL_OBJECT_THIS_ -#define CALL_FPTR(fptr) (*fptr) -#define MEMBER_TO_FPTR(name) name +# define CPERLscope(x) x +# define CPERLarg void +# define CPERLarg_ +# define _CPERLarg +# define PERL_OBJECT_THIS +# define _PERL_OBJECT_THIS +# define PERL_OBJECT_THIS_ +# define CALL_FPTR(fptr) (*fptr) +# define MEMBER_TO_FPTR(name) name #endif /* !PERL_CORE */ #define CALLRUNOPS PL_runops @@ -286,10 +271,10 @@ RX_ENGINE(rx)->qr_package(aTHX_ (rx)) #if defined(USE_ITHREADS) -#define CALLREGDUPE(prog,param) \ +# define CALLREGDUPE(prog,param) \ Perl_re_dup(aTHX_ (prog),(param)) -#define CALLREGDUPE_PVT(prog,param) \ +# define CALLREGDUPE_PVT(prog,param) \ (prog ? RX_ENGINE(prog)->dupe(aTHX_ (prog),(param)) \ : (REGEXP *)NULL) #endif @@ -314,42 +299,42 @@ */ #ifndef PERL_MICRO -#if defined __GNUC__ && !defined(__INTEL_COMPILER) -# if __GNUC__ == 3 && __GNUC_MINOR__ >= 1 || __GNUC__ > 3 /* 3.1 -> */ -# define HASATTRIBUTE_DEPRECATED -# endif -# if __GNUC__ >= 3 /* 3.0 -> */ /* XXX Verify this version */ -# define HASATTRIBUTE_FORMAT -# if defined __MINGW32__ -# define PRINTF_FORMAT_NULL_OK +# if defined __GNUC__ && !defined(__INTEL_COMPILER) +# if __GNUC__ == 3 && __GNUC_MINOR__ >= 1 || __GNUC__ > 3 /* 3.1 -> */ +# define HASATTRIBUTE_DEPRECATED +# endif +# if __GNUC__ >= 3 /* 3.0 -> */ /* XXX Verify this version */ +# define HASATTRIBUTE_FORMAT +# if defined __MINGW32__ +# define PRINTF_FORMAT_NULL_OK +# endif +# endif +# if __GNUC__ >= 3 /* 3.0 -> */ +# define HASATTRIBUTE_MALLOC +# endif +# if __GNUC__ == 3 && __GNUC_MINOR__ >= 3 || __GNUC__ > 3 /* 3.3 -> */ +# define HASATTRIBUTE_NONNULL +# endif +# if __GNUC__ == 2 && __GNUC_MINOR__ >= 5 || __GNUC__ > 2 /* 2.5 -> */ +# define HASATTRIBUTE_NORETURN +# endif +# if __GNUC__ >= 3 /* gcc 3.0 -> */ +# define HASATTRIBUTE_PURE +# endif +# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4 || __GNUC__ > 3 /* 3.4 -> */ +# define HASATTRIBUTE_UNUSED +# endif +# if __GNUC__ == 3 && __GNUC_MINOR__ == 3 && !defined(__cplusplus) +# define HASATTRIBUTE_UNUSED /* gcc-3.3, but not g++-3.3. */ +# endif +# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4 || __GNUC__ > 3 /* 3.4 -> */ +# define HASATTRIBUTE_WARN_UNUSED_RESULT +# endif + /* always_inline is buggy in gcc <= 4.6 and causes compilation errors */ +# if __GNUC__ == 4 && __GNUC_MINOR__ >= 7 || __GNUC__ > 4 /* 4.7 -> */ +# define HASATTRIBUTE_ALWAYS_INLINE # endif # endif -# if __GNUC__ >= 3 /* 3.0 -> */ -# define HASATTRIBUTE_MALLOC -# endif -# if __GNUC__ == 3 && __GNUC_MINOR__ >= 3 || __GNUC__ > 3 /* 3.3 -> */ -# define HASATTRIBUTE_NONNULL -# endif -# if __GNUC__ == 2 && __GNUC_MINOR__ >= 5 || __GNUC__ > 2 /* 2.5 -> */ -# define HASATTRIBUTE_NORETURN -# endif -# if __GNUC__ >= 3 /* gcc 3.0 -> */ -# define HASATTRIBUTE_PURE -# endif -# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4 || __GNUC__ > 3 /* 3.4 -> */ -# define HASATTRIBUTE_UNUSED -# endif -# if __GNUC__ == 3 && __GNUC_MINOR__ == 3 && !defined(__cplusplus) -# define HASATTRIBUTE_UNUSED /* gcc-3.3, but not g++-3.3. */ -# endif -# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4 || __GNUC__ > 3 /* 3.4 -> */ -# define HASATTRIBUTE_WARN_UNUSED_RESULT -# endif -/* always_inline is buggy in gcc <= 4.6 and causes compilation errors */ -# if __GNUC__ == 4 && __GNUC_MINOR__ >= 7 || __GNUC__ > 4 /* 4.7 -> */ -# define HASATTRIBUTE_ALWAYS_INLINE -# endif -#endif #endif /* #ifndef PERL_MICRO */ #ifdef HASATTRIBUTE_DEPRECATED @@ -428,7 +413,25 @@ * marking unused variables (they need e.g. a #pragma) and therefore * cpp macros like PERL_UNUSED_DECL cannot work for this purpose, even * if it were PERL_UNUSED_DECL(x), which it cannot be (see above). - * + +=for apidoc_section $directives +=for apidoc AmnU||PERL_UNUSED_DECL +Tells the compiler that the parameter in the function prototype just before it +is not necessarily expected to be used in the function. Not that many +compilers understand this, so this should only be used in cases where +C> can't conveniently be used. + +Example usage: + +=over + + Signal_t + Perl_perly_sighandler(int sig, Siginfo_t *sip PERL_UNUSED_DECL, + void *uap PERL_UNUSED_DECL, bool safe) + +=back + +=cut */ #ifndef PERL_UNUSED_DECL @@ -439,6 +442,24 @@ * for silencing unused variables that are actually used most of the time, * but we cannot quite get rid of, such as "ax" in PPCODE+noargs xsubs, * or variables/arguments that are used only in certain configurations. + +=for apidoc Ams||PERL_UNUSED_ARG|void x +This is used to suppress compiler warnings that a parameter to a function is +not used. This situation can arise, for example, when a parameter is needed +under some configuration conditions, but not others, so that C preprocessor +conditional compilation causes it be used just some times. + +=for apidoc Amns||PERL_UNUSED_CONTEXT +This is used to suppress compiler warnings that the thread context parameter to +a function is not used. This situation can arise, for example, when a +C preprocessor conditional compilation causes it be used just some times. + +=for apidoc Ams||PERL_UNUSED_VAR|void x +This is used to suppress compiler warnings that the variable I is not used. +This situation can arise, for example, when a C preprocessor conditional +compilation causes it be used just some times. + +=cut */ #ifndef PERL_UNUSED_ARG # define PERL_UNUSED_ARG(x) ((void)sizeof(x)) @@ -447,7 +468,7 @@ # define PERL_UNUSED_VAR(x) ((void)sizeof(x)) #endif -#if defined(USE_ITHREADS) || defined(PERL_GLOBAL_STRUCT) +#if defined(USE_ITHREADS) # define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl) #else # define PERL_UNUSED_CONTEXT @@ -466,31 +487,40 @@ # endif #endif -/* Use PERL_UNUSED_RESULT() to suppress the warnings about unused results - * of function calls, e.g. PERL_UNUSED_RESULT(foo(a, b)). - * - * The main reason for this is that the combination of gcc -Wunused-result - * (part of -Wall) and the __attribute__((warn_unused_result)) cannot - * be silenced with casting to void. This causes trouble when the system - * header files use the attribute. - * - * Use PERL_UNUSED_RESULT sparingly, though, since usually the warning - * is there for a good reason: you might lose success/failure information, - * or leak resources, or changes in resources. - * - * But sometimes you just want to ignore the return value, e.g. on - * codepaths soon ending up in abort, or in "best effort" attempts, - * or in situations where there is no good way to handle failures. - * - * Sometimes PERL_UNUSED_RESULT might not be the most natural way: - * another possibility is that you can capture the return value - * and use PERL_UNUSED_VAR on that. - * - * The __typeof__() is used instead of typeof() since typeof() is not - * available under strict C89, and because of compilers masquerading - * as gcc (clang and icc), we want exactly the gcc extension - * __typeof__ and nothing else. - */ +/* + +=for apidoc Am||PERL_UNUSED_RESULT|void x + +This macro indicates to discard the return value of the function call inside +it, I, + + PERL_UNUSED_RESULT(foo(a, b)) + +The main reason for this is that the combination of C +(part of C<-Wall>) and the C<__attribute__((warn_unused_result))> cannot +be silenced with casting to C. This causes trouble when the system +header files use the attribute. + +Use C sparingly, though, since usually the warning +is there for a good reason: you might lose success/failure information, +or leak resources, or changes in resources. + +But sometimes you just want to ignore the return value, I, on +codepaths soon ending up in abort, or in "best effort" attempts, +or in situations where there is no good way to handle failures. + +Sometimes C might not be the most natural way: +another possibility is that you can capture the return value +and use C> on that. + +=cut + +The __typeof__() is used instead of typeof() since typeof() is not +available under strict C89, and because of compilers masquerading +as gcc (clang and icc), we want exactly the gcc extension +__typeof__ and nothing else. + +*/ #ifndef PERL_UNUSED_RESULT # if defined(__GNUC__) && defined(HASATTRIBUTE_WARN_UNUSED_RESULT) # define PERL_UNUSED_RESULT(v) STMT_START { __typeof__(v) z = (v); (void)sizeof(z); } STMT_END @@ -499,9 +529,9 @@ # endif #endif -#if defined(_MSC_VER) +#if defined(_MSC_VER) && _MSC_VER < 1400 /* XXX older MSVC versions have a smallish macro buffer */ -#define PERL_SMALL_MACRO_BUFFER +# define PERL_SMALL_MACRO_BUFFER #endif /* on gcc (and clang), specify that a warning should be temporarily @@ -570,6 +600,18 @@ #define MSVC_DIAG_IGNORE_STMT(x) MSVC_DIAG_IGNORE(x) NOOP #define MSVC_DIAG_RESTORE_STMT MSVC_DIAG_RESTORE NOOP +/* +=for apidoc Amns||NOOP +Do nothing; typically used as a placeholder to replace something that used to +do something. + +=for apidoc Amns||dNOOP +Declare nothing; typically used as a placeholder to replace something that used +to declare something. Works on compilers that require declarations before any +code. + +=cut +*/ #define NOOP /*EMPTY*/(void)0 #define dNOOP struct Perl___notused_struct @@ -596,18 +638,34 @@ # define pTHX_12 12 #endif -#ifndef dVAR +/* +=for apidoc_section $concurrency +=for apidoc AmnU||dVAR +This is now a synonym for dNOOP: declare nothing + +=for apidoc_section $XS +=for apidoc Amns||dMY_CXT_SV +Now a placeholder that declares nothing + +=cut +*/ + +#ifndef PERL_CORE + /* Backwards compatibility macro for XS code. It used to be part of the + * PERL_GLOBAL_STRUCT(_PRIVATE) feature, which no longer exists */ # define dVAR dNOOP -#endif -/* these are only defined for compatibility; should not be used internally */ -#if !defined(pTHXo) && !defined(PERL_CORE) -# define pTHXo pTHX -# define pTHXo_ pTHX_ -# define aTHXo aTHX -# define aTHXo_ aTHX_ -# define dTHXo dTHX -# define dTHXoa(x) dTHXa(x) + /* these are only defined for compatibility; should not be used internally. + * */ +# define dMY_CXT_SV dNOOP +# ifndef pTHXo +# define pTHXo pTHX +# define pTHXo_ pTHX_ +# define aTHXo aTHX +# define aTHXo_ aTHX_ +# define dTHXo dTHX +# define dTHXoa(x) dTHXa(x) +# endif #endif #ifndef pTHXx @@ -622,17 +680,9 @@ * PerlIO_foo() expands to PL_StdIO->pFOO(PL_StdIO, ...). * dTHXs is therefore needed for all functions using PerlIO_foo(). */ #ifdef PERL_IMPLICIT_SYS -# ifdef PERL_GLOBAL_STRUCT_PRIVATE -# define dTHXs dVAR; dTHX -# else # define dTHXs dTHX -# endif #else -# ifdef PERL_GLOBAL_STRUCT_PRIVATE -# define dTHXs dVAR -# else # define dTHXs dNOOP -# endif #endif #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus) @@ -642,20 +692,41 @@ #endif /* -=head1 Miscellaneous Functions - +=for apidoc_section $directives =for apidoc AmnUu|void|STMT_START +=for apidoc_item ||STMT_END + +This allows a series of statements in a macro to be used as a single statement, +as in + + if (x) STMT_START { ... } STMT_END else ... + +Note that you can't return a value out of them, which limits their utility. +But see C>. + +=for apidoc AmnuU|bool|PERL_USE_GCC_BRACE_GROUPS + +This C pre-processor value, if defined, indicates that it is permissible to use +the GCC brace groups extension. This extension, of the form + + ({ statement ... }) - STMT_START { statements; } STMT_END; +turns the block consisting of I into an expression with a +value, unlike plain C language blocks. This can present optimization +possibilities, B you generally need to specify an alternative in case this +ability doesn't exist or has otherwise been forbidden. -can be used as a single statement, as in +Example usage: - if (x) STMT_START { ... } STMT_END; else ... +=over -These are often used in macro definitions. Note that you can't return a value -out of them. + #ifdef PERL_USE_GCC_BRACE_GROUPS + ... + #else + ... + #endif -=for apidoc AmnUhu|void|STMT_END +=back =cut @@ -821,16 +892,6 @@ #include -/* EVC 4 SDK headers includes a bad definition of MB_CUR_MAX in stdlib.h - which is included from stdarg.h. Bad definition not present in SD 2008 - SDK headers. wince.h is not yet included, so we cant fix this from there - since by then MB_CUR_MAX will be defined from stdlib.h. - cewchar.h includes a correct definition of MB_CUR_MAX and it is copied here - since cewchar.h can't be included this early */ -#if defined(UNDER_CE) && (_MSC_VER < 1300) -# define MB_CUR_MAX 1uL -#endif - # ifdef I_WCHAR # include # endif @@ -922,6 +983,12 @@ # if !defined(NO_LOCALE_TELEPHONE) && defined(LC_TELEPHONE) # define USE_LOCALE_TELEPHONE # endif +# if !defined(NO_LOCALE_SYNTAX) && defined(LC_SYNTAX) +# define USE_LOCALE_SYNTAX +# endif +# if !defined(NO_LOCALE_TOD) && defined(LC_TOD) +# define USE_LOCALE_TOD +# endif /* XXX The next few defines are unfortunately duplicated in makedef.pl, and * changes here MUST also be made there */ @@ -1003,10 +1070,6 @@ # include #endif -#ifdef __SYMBIAN32__ -# undef _SC_ARG_MAX /* Symbian has _SC_ARG_MAX but no sysconf() */ -#endif - #if defined(HAS_SYSCALL) && !defined(HAS_SYSCALL_PROTO) EXTERN_C int syscall(int, ...); #endif @@ -1015,9 +1078,33 @@ EXTERN_C int usleep(unsigned int); #endif -/* macros for correct constant construction. These are in C99 +/* Macros for correct constant construction. These are in C99 * (so they will not be available in strict C89 mode), but they are nice, so - * let's define them if necessary. */ + * let's define them if necessary. +=for apidoc_section $integer +=for apidoc Am|I16|INT16_C|number +=for apidoc_item |I32|INT32_C|number +=for apidoc_item |I64|INT64_C|number + +Returns a token the C compiler recognizes for the constant C of the +corresponding integer type on the machine. + +If the machine does not have a 64-bit type, C is undefined. +Use C> to get the largest type available on the platform. + +=for apidoc Am|U16|UINT16_C|number +=for apidoc_item |U32|UINT32_C|number +=for apidoc_item |U64|UINT64_C|number + +Returns a token the C compiler recognizes for the constant C of the +corresponding unsigned integer type on the machine. + +If the machine does not have a 64-bit type, C is undefined. +Use C> to get the largest type available on the platform. + + +=cut +*/ #ifndef UINT16_C # if INTSIZE >= 2 # define UINT16_C(x) ((U16_TYPE)x##U) @@ -1083,6 +1170,33 @@ # define UINT64_C(c) PeRl_UINT64_C(c) # endif +/* +=for apidoc_section $integer +=for apidoc Am||INTMAX_C|number +Returns a token the C compiler recognizes for the constant C of the +widest integer type on the machine. For example, if the machine has Cs, C would yield + + -1LL + +See also, for example, C>. + +Use L to declare variables of the maximum usable size on this platform. + +=for apidoc Am||UINTMAX_C|number +Returns a token the C compiler recognizes for the constant C of the +widest unsigned integer type on the machine. For example, if the machine has +Cs, C would yield + + 1UL + +See also, for example, C>. + +Use L to declare variables of the maximum usable size on this platform. + +=cut +*/ + # ifndef I_STDINT typedef I64TYPE PERL_INTMAX_T; typedef U64TYPE PERL_UINTMAX_T; @@ -1180,7 +1294,7 @@ #define PERL_USES_PL_PIDSTATUS #endif -#if !defined(OS2) && !defined(WIN32) && !defined(DJGPP) && !defined(__SYMBIAN32__) +#if !defined(OS2) && !defined(WIN32) && !defined(DJGPP) #define PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION #endif @@ -1225,9 +1339,7 @@ # define Ptrdiff_t SSize_t #endif -#ifndef __SYMBIAN32__ # include -#endif /* This comes after so we don't try to change the standard * library prototypes; we'll use our own in proto.h instead. */ @@ -1280,6 +1392,12 @@ #define MALLOC_TOO_LATE_FOR(ch) TOO_LATE_FOR_(ch, " with $ENV{PERL_MALLOC_OPT}") #define MALLOC_CHECK_TAINT2(argc,argv) MALLOC_CHECK_TAINT(argc,argv,NULL) +/* +=for apidoc Am|void|memzero|void * d|Size_t l +Set the C bytes starting at C<*d> to all zeroes. + +=cut +*/ #ifndef memzero # define memzero(d,l) memset(d,0,l) #endif @@ -1396,7 +1514,7 @@ #endif /* -=head1 Errno +=for apidoc_section $errno =for apidoc m|void|SETERRNO|int errcode|int vmserrcode @@ -1499,7 +1617,7 @@ #endif /* -=head1 Warning and Dieing +=for apidoc_section $warning =for apidoc Amn|SV *|ERRSV @@ -1576,6 +1694,20 @@ # define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv)) #endif +/* +=for apidoc_section $SV +=for apidoc Amn|SV *|DEFSV +Returns the SV associated with C<$_> + +=for apidoc Am|void|DEFSV_set|SV * sv +Associate C with C<$_> + +=for apidoc Amn|void|SAVE_DEFSV +Localize C<$_>. See L. + +=cut +*/ + #ifndef errno extern int errno; /* ANSI allows errno to be an lvalue expr. * For example in multithreaded environments @@ -1785,8 +1917,7 @@ * longer need that. XS modules can (and do) use this name, so it must remain * a part of the API that's visible to modules. -=head1 Miscellaneous Functions - +=for apidoc_section $string =for apidoc ATmD|int|my_sprintf|NN char *buffer|NN const char *pat|... Do NOT use this due to the possibility of overflowing C. Instead use @@ -1976,6 +2107,8 @@ * For int conversions we do not need two casts if pointers are * the same size as IV and UV. Otherwise we need an explicit * cast (PTRV) to avoid compiler warnings. + * + * These are mentioned in perlguts */ #if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) # define PTRV UV @@ -1995,6 +2128,14 @@ # define PTR2ul(p) INT2PTR(unsigned long,p) #endif +/* +=for apidoc_section Casting +=for apidoc Cyh|type|NUM2PTR|type|int value +You probably want to be using L> instead. + +=cut +*/ + #define NUM2PTR(any,d) (any)(PTRV)(d) #define PTR2IV(p) INT2PTR(IV,p) #define PTR2UV(p) INT2PTR(UV,p) @@ -2037,7 +2178,22 @@ # endif #endif -typedef NVTYPE NV; +/* On MS Windows,with 64-bit mingw-w64 compilers, we + need to attend to a __float128 alignment issue if + USE_QUADMATH is defined. Otherwise we simply: + typedef NVTYPE NV + 32-bit mingw.org compilers might also require + aligned(32) - at least that's what I found with my + Math::Foat128 module. But this is as yet untested + here, so no allowance is being made for mingw.org + compilers at this stage. -- sisyphus January 2021 +*/ +#if defined(USE_QUADMATH) && defined(__MINGW64__) + /* 64-bit build, mingw-w64 compiler only */ + typedef NVTYPE NV __attribute__ ((aligned(8))); +#else + typedef NVTYPE NV; +#endif #ifdef I_IEEEFP # include @@ -2327,7 +2483,7 @@ # define FP_QNAN FP_QNAN # endif # include -# ifdef I_IEEFP +# ifdef I_IEEEFP # include # endif # ifdef I_FP @@ -2442,8 +2598,8 @@ # define Perl_fp_class_snan(x) (_fpclass(x) & _FPCLASS_SNAN) # define Perl_fp_class_qnan(x) (_fpclass(x) & _FPCLASS_QNAN) # define Perl_fp_class_nan(x) (_fpclass(x) & (_FPCLASS_SNAN|_FPCLASS_QNAN)) -# define Perl_fp_class_ninf(x) (_fpclass(x) & _FPCLASS_NINF)) -# define Perl_fp_class_pinf(x) (_fpclass(x) & _FPCLASS_PINF)) +# define Perl_fp_class_ninf(x) (_fpclass(x) & _FPCLASS_NINF) +# define Perl_fp_class_pinf(x) (_fpclass(x) & _FPCLASS_PINF) # define Perl_fp_class_inf(x) (_fpclass(x) & (_FPCLASS_NINF|_FPCLASS_PINF)) # define Perl_fp_class_nnorm(x) (_fpclass(x) & _FPCLASS_NN) # define Perl_fp_class_pnorm(x) (_fpclass(x) & _FPCLASS_PN) @@ -2536,7 +2692,7 @@ # define Perl_isfinitel(x) isfinitel(x) # elif defined(HAS_FINITEL) # define Perl_isfinitel(x) finitel(x) -# elif defined(HAS_INFL) && defined(HAS_NANL) +# elif defined(HAS_ISINFL) && defined(HAS_ISNANL) # define Perl_isfinitel(x) !(isinfl(x)||isnanl(x)) # else # define Perl_isfinitel(x) ((x) * 0 == 0) /* See Perl_isfinite. */ @@ -2571,6 +2727,41 @@ #define my_atof2(a,b) my_atof3(a,b,0) /* +=for apidoc_section $numeric +=for apidoc AmT|NV|Perl_acos|NV x +=for apidoc_item |NV|Perl_asin|NV x +=for apidoc_item |NV|Perl_atan|NV x +=for apidoc_item |NV|Perl_atan2|NV x|NV y +=for apidoc_item |NV|Perl_ceil|NV x +=for apidoc_item |NV|Perl_cos|NV x +=for apidoc_item |NV|Perl_cosh|NV x +=for apidoc_item |NV|Perl_exp|NV x +=for apidoc_item |NV|Perl_floor|NV x +=for apidoc_item |NV|Perl_fmod|NV x|NV y +=for apidoc_item |NV|Perl_frexp|NV x|int *exp +=for apidoc_item |IV|Perl_isfinite|NV x +=for apidoc_item |IV|Perl_isinf|NV x +=for apidoc_item |IV|Perl_isnan|NV x +=for apidoc_item |NV|Perl_ldexp|NV x|int exp +=for apidoc_item |NV|Perl_log|NV x +=for apidoc_item |NV|Perl_log10|NV x +=for apidoc_item |NV|Perl_modf|NV x|NV *iptr +=for apidoc_item |NV|Perl_pow|NV x|NV y +=for apidoc_item |NV|Perl_sin|NV x +=for apidoc_item |NV|Perl_sinh|NV x +=for apidoc_item |NV|Perl_sqrt|NV x +=for apidoc_item |NV|Perl_tan|NV x +=for apidoc_item |NV|Perl_tanh|NV x + +These perform the corresponding mathematical operation on the operand(s), using +the libc function designed for the task that has just enough precision for an +NV on this platform. If no such function with sufficient precision exists, +the highest precision one available is used. + +=cut +*/ + +/* * CHAR_MIN and CHAR_MAX are not included here, as the (char) type may be * ambiguous. It may be equivalent to (signed char) or (unsigned char) * depending on local options. Until Configure detects this (or at least @@ -2608,43 +2799,28 @@ #endif /* -=head1 Numeric functions +=for apidoc_section $integer -=for apidoc AmnUh||PERL_INT_MIN -=for apidoc AmnUh||PERL_LONG_MAX -=for apidoc AmnUh||PERL_LONG_MIN -=for apidoc AmnUh||PERL_QUAD_MAX -=for apidoc AmnUh||PERL_SHORT_MAX -=for apidoc AmnUh||PERL_SHORT_MIN -=for apidoc AmnUh||PERL_UCHAR_MAX -=for apidoc AmnUh||PERL_UCHAR_MIN -=for apidoc AmnUh||PERL_UINT_MAX -=for apidoc AmnUh||PERL_ULONG_MAX -=for apidoc AmnUh||PERL_ULONG_MIN -=for apidoc AmnUh||PERL_UQUAD_MAX -=for apidoc AmnUh||PERL_UQUAD_MIN -=for apidoc AmnUh||PERL_USHORT_MAX -=for apidoc AmnUh||PERL_USHORT_MIN -=for apidoc AmnUh||PERL_QUAD_MIN =for apidoc AmnU||PERL_INT_MAX -This and -C, -C, -C, -C, -C, -C, -C, -C, -C, -C, -C, -C, -C, -C, -C, -C -give the largest and smallest number representable in the current +=for apidoc_item ||PERL_INT_MIN +=for apidoc_item ||PERL_LONG_MAX +=for apidoc_item ||PERL_LONG_MIN +=for apidoc_item ||PERL_SHORT_MAX +=for apidoc_item ||PERL_SHORT_MIN +=for apidoc_item ||PERL_UCHAR_MAX +=for apidoc_item ||PERL_UCHAR_MIN +=for apidoc_item ||PERL_UINT_MAX +=for apidoc_item ||PERL_UINT_MIN +=for apidoc_item ||PERL_ULONG_MAX +=for apidoc_item ||PERL_ULONG_MIN +=for apidoc_item ||PERL_USHORT_MAX +=for apidoc_item ||PERL_USHORT_MIN +=for apidoc_item ||PERL_QUAD_MAX +=for apidoc_item ||PERL_QUAD_MIN +=for apidoc_item ||PERL_UQUAD_MAX +=for apidoc_item ||PERL_UQUAD_MIN + +These give the largest and smallest number representable in the current platform in variables of the corresponding types. For signed types, the smallest representable number is the most negative @@ -2701,6 +2877,7 @@ typedef struct io IO; typedef struct context PERL_CONTEXT; typedef struct block BLOCK; +typedef struct invlist INVLIST; typedef struct magic MAGIC; typedef struct xpv XPV; @@ -2873,8 +3050,6 @@ # else # include "vos/vosish.h" # endif -#elif defined(__SYMBIAN32__) -# include "symbian/symbianish.h" #elif defined(__HAIKU__) # include "haiku/haikuish.h" #else @@ -2916,37 +3091,6 @@ # define USE_ENVIRON_ARRAY #endif -#ifdef USE_ITHREADS - /* On some platforms it would be safe to use a read/write mutex with many - * readers possible at the same time. On other platforms, notably IBM ones, - * subsequent getenv calls destroy earlier ones. Those platforms would not - * be able to handle simultaneous getenv calls */ -# define ENV_LOCK MUTEX_LOCK(&PL_env_mutex) -# define ENV_UNLOCK MUTEX_UNLOCK(&PL_env_mutex) -# define ENV_INIT MUTEX_INIT(&PL_env_mutex); -# define ENV_TERM MUTEX_DESTROY(&PL_env_mutex); -#else -# define ENV_LOCK NOOP; -# define ENV_UNLOCK NOOP; -# define ENV_INIT NOOP; -# define ENV_TERM NOOP; -#endif - -/* Some critical sections need to lock both the locale and the environment. - * XXX khw intends to change this to lock both mutexes, but that brings up - * issues of potential deadlock, so should be done at the beginning of a - * development cycle. So for now, it just locks the environment. Note that - * many modern platforms are locale-thread-safe anyway, so locking the locale - * mutex is a no-op anyway */ -#define ENV_LOCALE_LOCK ENV_LOCK -#define ENV_LOCALE_UNLOCK ENV_UNLOCK - -/* And some critical sections care only that no one else is writing either the - * locale nor the environment. XXX Again this is for the future. This can be - * simulated with using COND_WAIT in thread.h */ -#define ENV_LOCALE_READ_LOCK ENV_LOCALE_LOCK -#define ENV_LOCALE_READ_UNLOCK ENV_LOCALE_UNLOCK - #if defined(HAS_SIGACTION) && defined(SA_SIGINFO) /* having sigaction(2) means that the OS supports both 1-arg and 3-arg * signal handlers. But the perl core itself only fully supports 1-arg @@ -3045,7 +3189,7 @@ #endif /* -=head1 Miscellaneous Functions +=for apidoc_section $embedding =for apidoc Am|void|PERL_SYS_INIT|int *argc|char*** argv Provides system-specific tune up of the C runtime environment necessary to @@ -3094,12 +3238,6 @@ # endif #endif -/* USE_5005THREADS needs to be after unixish.h as includes - * which defines NSIG - which will stop inclusion of - * this results in many functions being undeclared which bothers C++ - * May make sense to have threads after "*ish.h" anyway - */ - /* clang Thread Safety Analysis/Annotations/Attributes * http://clang.llvm.org/docs/ThreadSafetyAnalysis.html * @@ -3110,8 +3248,6 @@ */ #if defined(USE_ITHREADS) && defined(I_PTHREAD) && \ defined(__clang__) && \ - !defined(PERL_GLOBAL_STRUCT) && \ - !defined(PERL_GLOBAL_STRUCT_PRIVATE) && \ !defined(SWIG) && \ ((!defined(__apple_build_version__) && \ ((__clang_major__ == 3 && __clang_minor__ >= 6) || \ @@ -3219,6 +3355,15 @@ typedef pthread_cond_t perl_cond; typedef pthread_key_t perl_key; # endif + +/* Many readers; single writer */ +typedef struct { + perl_mutex lock; + perl_cond wakeup; + SSize_t readers_count; +} perl_RnW1_mutex_t; + + #endif /* USE_ITHREADS */ #ifdef PERL_TSA_ACTIVE @@ -3610,11 +3755,8 @@ #define HEKfARG(p) ((void*)(p)) -/* -=for apidoc Amnh||UTF8f -=for apidoc Amh||UTF8fARG|bool is_utf8|Size_t byte_len|char *str - -=cut +/* Documented in perlguts + * * %4p is a custom format */ #ifndef UTF8f @@ -3626,7 +3768,13 @@ #define PNfARG(pn) (int)1, (UV)PadnameLEN(pn), (void *)PadnamePV(pn) #ifdef PERL_CORE -/* not used; but needed for backward compatibility with XS code? - RMB */ +/* not used; but needed for backward compatibility with XS code? - RMB +=for apidoc AmnD|const char *|UVf + +Obsolete form of C, which you should convert to instead use + +=cut +*/ # undef UVf #elif !defined(UVf) # define UVf UVuf @@ -3653,14 +3801,14 @@ #endif /* -=head1 Miscellaneous Functions +=for apidoc_section $directives -=for apidoc AmU|bool|LIKELY|const bool expr +=for apidoc Am||LIKELY|bool expr Returns the input unchanged, but at the same time it gives a branch prediction hint to the compiler that this condition is likely to be true. -=for apidoc AmU|bool|UNLIKELY|const bool expr +=for apidoc Am||UNLIKELY|bool expr Returns the input unchanged, but at the same time it gives a branch prediction hint to the compiler that this condition is likely to be false. @@ -3716,40 +3864,55 @@ # define __has_builtin(x) 0 /* not a clang style compiler */ #endif -/* ASSUME is like assert(), but it has a benefit in a release build. It is a - hint to a compiler about a statement of fact in a function call free - expression, which allows the compiler to generate better machine code. - In a debug build, ASSUME(x) is a synonym for assert(x). ASSUME(0) means - the control path is unreachable. In a for loop, ASSUME can be used to hint - that a loop will run at least X times. ASSUME is based off MSVC's __assume - intrinsic function, see its documents for more details. +/* +=for apidoc Am||ASSUME|bool expr +C is like C, but it has a benefit in a release build. It is a +hint to a compiler about a statement of fact in a function call free +expression, which allows the compiler to generate better machine code. In a +debug build, C is a synonym for C. C means the +control path is unreachable. In a for loop, C can be used to hint that +a loop will run at least X times. C is based off MSVC's C<__assume> +intrinsic function, see its documents for more details. + +=cut */ -#ifndef DEBUGGING -# if __has_builtin(__builtin_unreachable) \ - || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5 || __GNUC__ > 4) /* 4.5 -> */ +#ifdef DEBUGGING +# define ASSUME(x) assert(x) +# if __has_builtin(__builtin_unreachable) +# define HAS_BUILTIN_UNREACHABLE +# elif (defined(__GNUC__) && ( __GNUC__ > 4 \ + || __GNUC__ == 4 && __GNUC_MINOR__ >= 5)) +# define HAS_BUILTIN_UNREACHABLE +# endif +#endif + +#if defined(__sun) || (defined(__hpux) && !defined(__GNUC__)) +# ifndef ASSUME +# define ASSUME(x) /* ASSUME() generates warnings on Solaris */ +# endif +# define NOT_REACHED +#elif defined(HAS_BUILTIN_UNREACHABLE) +# ifndef ASSUME # define ASSUME(x) ((x) ? (void) 0 : __builtin_unreachable()) -# elif defined(_MSC_VER) +# endif +# define NOT_REACHED \ + STMT_START { \ + ASSUME(!"UNREACHABLE"); __builtin_unreachable(); \ + } STMT_END +#else +# if defined(_MSC_VER) # define ASSUME(x) __assume(x) # elif defined(__ARMCC_VERSION) /* untested */ # define ASSUME(x) __promise(x) # else -/* a random compiler might define assert to its own special optimization token - so pass it through to C lib as a last resort */ + /* a random compiler might define assert to its own special optimization + * token so pass it through to C lib as a last resort */ # define ASSUME(x) assert(x) # endif -#else -# define ASSUME(x) assert(x) -#endif - -#if defined(__sun) /* ASSUME() generates warnings on Solaris */ -# define NOT_REACHED -#elif defined(DEBUGGING) && (__has_builtin(__builtin_unreachable) \ - || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5 || __GNUC__ > 4)) /* 4.5 -> */ -# define NOT_REACHED STMT_START { ASSUME(!"UNREACHABLE"); __builtin_unreachable(); } STMT_END -#else # define NOT_REACHED ASSUME(!"UNREACHABLE") #endif +#undef HAS_BUILTIN_UNREACHABLE /* Some unistd.h's give a prototype for pause() even though HAS_PAUSE ends up undefined. This causes the #define @@ -3825,7 +3988,7 @@ && idx >= AvFILLp(PL_parser->rsfp_filters)) #define PERL_FILTER_EXISTS(i) \ (PL_parser && PL_parser->rsfp_filters \ - && (i) <= av_tindex(PL_parser->rsfp_filters)) + && (Size_t) (i) < av_count(PL_parser->rsfp_filters)) #if defined(_AIX) && !defined(_AIX43) #if defined(USE_REENTRANT) || defined(_REENTRANT) || defined(_THREAD_SAFE) @@ -3845,7 +4008,7 @@ #ifndef PERL_CALLCONV # ifdef __cplusplus -# define PERL_CALLCONV extern "C" +# define PERL_CALLCONV EXTERN_C # else # define PERL_CALLCONV # endif @@ -3860,8 +4023,9 @@ #ifndef PERL_STATIC_NO_RET # define PERL_STATIC_NO_RET STATIC #endif -/* PERL_STATIC_NO_RET is supposed to be equivalent to PERL_STATIC_INLINE on - builds that dont have a noreturn as a declaration specifier + +/* PERL_STATIC_INLINE_NO_RET is supposed to be equivalent to PERL_STATIC_INLINE + * on builds that dont have a noreturn as a declaration specifier */ #ifndef PERL_STATIC_INLINE_NO_RET # define PERL_STATIC_INLINE_NO_RET PERL_STATIC_INLINE @@ -3939,7 +4103,8 @@ typedef struct magic_state MGS; /* struct magic_state defined in mg.c */ -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) \ + || defined(PERL_EXT_RE_BUILD) /* These have to be predeclared, as they are used in proto.h which is #included * before their definitions in regcomp.h. */ @@ -4086,6 +4251,21 @@ /* This may look like unnecessary jumping through hoops, but converting out of range floating point values to integers *is* undefined behaviour, and it is starting to bite. + +=for apidoc_section $casting +=for apidoc Am|I32|I_32|NV what +Cast an NV to I32 while avoiding undefined C behavior + +=for apidoc Am|U32|U_32|NV what +Cast an NV to U32 while avoiding undefined C behavior + +=for apidoc Am|IV|I_V|NV what +Cast an NV to IV while avoiding undefined C behavior + +=for apidoc Am|UV|U_V|NV what +Cast an NV to UV while avoiding undefined C behavior + +=cut */ #ifndef CAST_INLINE #define I_32(what) (cast_i32((NV)(what))) @@ -4111,6 +4291,25 @@ #define U_I(what) ((unsigned int)U_32(what)) #define U_L(what) U_32(what) +/* +=for apidoc_section $integer +=for apidoc Amn|IV|IV_MAX +The largest signed integer that fits in an IV on this platform. + +=for apidoc Amn|IV|IV_MIN +The negative signed integer furthest away from 0 that fits in an IV on this +platform. + +=for apidoc Amn|UV|UV_MAX +The largest unsigned integer that fits in a UV on this platform. + +=for apidoc Amn|UV|UV_MIN +The smallest unsigned integer that fits in a UV on this platform. It should +equal zero. + +=cut +*/ + #ifdef HAS_SIGNBIT # ifndef Perl_signbit # define Perl_signbit signbit @@ -4131,7 +4330,7 @@ #endif #ifndef __cplusplus -#if !(defined(WIN32) || defined(SYMBIAN)) +#if !defined(WIN32) Uid_t getuid (void); Uid_t geteuid (void); Gid_t getgid (void); @@ -4188,6 +4387,11 @@ #define DEBUG_DB_RECURSE_FLAG 0x40000000 #define DEBUG_TOP_FLAG 0x80000000 /* -D was given --> PL_debug |= FLAG */ +/* Both flags have to be set */ +# define DEBUG_BOTH_FLAGS_TEST_(flag1, flag2) \ + UNLIKELY((PL_debug & ((flag1)|(flag2))) \ + == ((flag1)|(flag2))) + # define DEBUG_p_TEST_ UNLIKELY(PL_debug & DEBUG_p_FLAG) # define DEBUG_s_TEST_ UNLIKELY(PL_debug & DEBUG_s_FLAG) # define DEBUG_l_TEST_ UNLIKELY(PL_debug & DEBUG_l_FLAG) @@ -4216,11 +4420,11 @@ # define DEBUG_L_TEST_ UNLIKELY(PL_debug & DEBUG_L_FLAG) # define DEBUG_i_TEST_ UNLIKELY(PL_debug & DEBUG_i_FLAG) # define DEBUG_y_TEST_ UNLIKELY(PL_debug & DEBUG_y_FLAG) -# define DEBUG_Xv_TEST_ (DEBUG_X_TEST_ && DEBUG_v_TEST_) -# define DEBUG_Uv_TEST_ (DEBUG_U_TEST_ && DEBUG_v_TEST_) -# define DEBUG_Pv_TEST_ (DEBUG_P_TEST_ && DEBUG_v_TEST_) -# define DEBUG_Lv_TEST_ (DEBUG_L_TEST_ && DEBUG_v_TEST_) -# define DEBUG_yv_TEST_ (DEBUG_y_TEST_ && DEBUG_v_TEST_) +# define DEBUG_Xv_TEST_ DEBUG_BOTH_FLAGS_TEST_(DEBUG_X_FLAG, DEBUG_v_FLAG) +# define DEBUG_Uv_TEST_ DEBUG_BOTH_FLAGS_TEST_(DEBUG_U_FLAG, DEBUG_v_FLAG) +# define DEBUG_Pv_TEST_ DEBUG_BOTH_FLAGS_TEST_(DEBUG_P_FLAG, DEBUG_v_FLAG) +# define DEBUG_Lv_TEST_ DEBUG_BOTH_FLAGS_TEST_(DEBUG_L_FLAG, DEBUG_v_FLAG) +# define DEBUG_yv_TEST_ DEBUG_BOTH_FLAGS_TEST_(DEBUG_y_FLAG, DEBUG_v_FLAG) #ifdef DEBUGGING @@ -4283,16 +4487,47 @@ } \ } STMT_END +/* These allow you to customize your debugging output for specialized, + * generally temporary ad-hoc purposes. For example, if you need 'errno' + * preserved, you can add definitions to these macros (either in this file for + * the whole program, or before the #include "perl.h" in a particular .c file + * you're trying to debug) and recompile: + * + * #define DEBUG_PRE_STMTS dSAVE_ERRNO; + * #define DEBUG_POST_STMTS RESTORE_ERRNO; + * + * Other potential things include displaying timestamps, location information, + * which thread, etc. Heres an example with both errno and location info: + * + * #define DEBUG_PRE_STMTS dSAVE_ERRNO; \ + * PerlIO_printf(Perl_debug_log, "%s:%d: ", __FILE__, __LINE__); + * #define DEBUG_POST RESTORE_ERRNO; + * + * All DEBUG statements in the compiled scope will be have these extra + * statements compiled in; they will be executed only for the DEBUG statements + * whose flags are turned on. + */ +#ifndef DEBUG_PRE_STMTS +# define DEBUG_PRE_STMTS +#endif +#ifndef DEBUG_POST_STMTS +# define DEBUG_POST_STMTS +#endif + # define DEBUG__(t, a) \ STMT_START { \ - if (t) STMT_START {a;} STMT_END; \ + if (t) STMT_START { \ + DEBUG_PRE_STMTS a; DEBUG_POST_STMTS \ + } STMT_END; \ } STMT_END # define DEBUG_f(a) DEBUG__(DEBUG_f_TEST, a) /* For re_comp.c, re_exec.c, assume -Dr has been specified */ # ifdef PERL_EXT_RE_BUILD -# define DEBUG_r(a) STMT_START {a;} STMT_END +# define DEBUG_r(a) STMT_START { \ + DEBUG_PRE_STMTS a; DEBUG_POST_STMTS \ + } STMT_END; # else # define DEBUG_r(a) DEBUG__(DEBUG_r_TEST, a) # endif /* PERL_EXT_RE_BUILD */ @@ -4725,6 +4960,22 @@ INIT(""); EXTCONST char PL_Zero[] INIT("0"); + +/* +=for apidoc_section $numeric +=for apidoc AmTuU|const char *|PL_hexdigit|U8 value + +This array, indexed by an integer, converts that value into the character that +represents it. For example, if the input is 8, the return will be a string +whose first character is '8'. What is actually returned is a pointer into a +string. All you are interested in is the first character of that string. To +get uppercase letters (for the values 10..15), add 16 to the index. Hence, +C is C<'b'>, and C is C<'B'>. Adding 16 +to an index whose representation is '0'..'9' yields the same as not adding 16. +Indices outside the range 0..31 result in (bad) undedefined behavior. + +=cut +*/ EXTCONST char PL_hexdigit[] INIT("0123456789abcdef0123456789ABCDEF"); @@ -4794,10 +5045,10 @@ * folds such as outside the range or to multiple characters. */ #ifdef DOINIT -#ifndef EBCDIC +# ifndef EBCDIC /* The EBCDIC fold table depends on the code page, and hence is found in - * utfebcdic.h */ + * ebcdic_tables.h */ EXTCONST unsigned char PL_fold[] = { 0, 1, 2, 3, 4, 5, 6, 7, @@ -4833,6 +5084,42 @@ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255 }; + +EXT unsigned char PL_fold_locale[] = { /* Unfortunately not EXTCONST. */ + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + 64, 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', + 'x', 'y', 'z', 91, 92, 93, 94, 95, + 96, 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255 +}; + EXTCONST unsigned char PL_fold_latin1[] = { /* Full latin1 complement folding, except for three problematic code points: * Micro sign (181 = 0xB5) and y with diearesis (255 = 0xFF) have their @@ -4945,145 +5232,29 @@ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -#if UNICODE_MAJOR_VERSION > 2 \ - || (UNICODE_MAJOR_VERSION == 2 && UNICODE_DOT_VERSION >= 1 \ - && UNICODE_DOT_DOT_VERSION >= 8) +# if UNICODE_MAJOR_VERSION > 2 \ + || (UNICODE_MAJOR_VERSION == 2 && UNICODE_DOT_VERSION >= 1 \ + && UNICODE_DOT_DOT_VERSION >= 8) 255 /*sharp s*/, -#else /* uc(sharp s) is 'sharp s' itself in early unicode */ +# else /* uc(sharp s) is 'sharp s' itself in early unicode */ 223, -#endif +# endif 224-32, 225-32, 226-32, 227-32, 228-32, 229-32, 230-32, 231-32, 232-32, 233-32, 234-32, 235-32, 236-32, 237-32, 238-32, 239-32, 240-32, 241-32, 242-32, 243-32, 244-32, 245-32, 246-32, 247, 248-32, 249-32, 250-32, 251-32, 252-32, 253-32, 254-32, 255 }; -#endif /* !EBCDIC, but still in DOINIT */ +# endif /* !EBCDIC, but still in DOINIT */ #else /* ! DOINIT */ -# ifndef EBCDIC +# ifndef EBCDIC EXTCONST unsigned char PL_fold[]; EXTCONST unsigned char PL_fold_latin1[]; EXTCONST unsigned char PL_mod_latin1_uc[]; EXTCONST unsigned char PL_latin1_lc[]; +EXT unsigned char PL_fold_locale[]; /* Unfortunately not EXTCONST. */ # endif #endif -#ifndef PERL_GLOBAL_STRUCT /* or perlvars.h */ -#ifdef DOINIT -EXT unsigned char PL_fold_locale[256] = { /* Unfortunately not EXTCONST. */ - 0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, - 64, 'a', 'b', 'c', 'd', 'e', 'f', 'g', - 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', - 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', - 'x', 'y', 'z', 91, 92, 93, 94, 95, - 96, 'A', 'B', 'C', 'D', 'E', 'F', 'G', - 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', - 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', - 'X', 'Y', 'Z', 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255 -}; -#else -EXT unsigned char PL_fold_locale[256]; /* Unfortunately not EXTCONST. */ -#endif -#endif /* !PERL_GLOBAL_STRUCT */ - -#ifdef DOINIT -#ifdef EBCDIC -EXTCONST unsigned char PL_freq[] = {/* EBCDIC frequencies for mixed English/C */ - 1, 2, 84, 151, 154, 155, 156, 157, - 165, 246, 250, 3, 158, 7, 18, 29, - 40, 51, 62, 73, 85, 96, 107, 118, - 129, 140, 147, 148, 149, 150, 152, 153, - 255, 6, 8, 9, 10, 11, 12, 13, - 14, 15, 24, 25, 26, 27, 28, 226, - 29, 30, 31, 32, 33, 43, 44, 45, - 46, 47, 48, 49, 50, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, - 87, 94, 95, 234, 181, 233, 187, 190, - 180, 96, 97, 98, 99, 100, 101, 102, - 104, 112, 182, 174, 236, 232, 229, 103, - 228, 226, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 235, 176, 230, 194, 162, - 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 201, 205, 163, 217, 220, 224, - 5, 248, 227, 244, 242, 255, 241, 231, - 240, 253, 16, 197, 19, 20, 21, 187, - 23, 169, 210, 245, 237, 249, 247, 239, - 168, 252, 34, 196, 36, 37, 38, 39, - 41, 42, 251, 254, 238, 223, 221, 213, - 225, 177, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 74, 75, - 205, 208, 186, 202, 200, 218, 198, 179, - 178, 214, 88, 89, 90, 91, 92, 93, - 217, 166, 170, 207, 199, 209, 206, 204, - 160, 212, 105, 106, 108, 109, 110, 111, - 203, 113, 216, 215, 192, 175, 193, 243, - 172, 161, 123, 124, 125, 126, 127, 128, - 222, 219, 211, 195, 188, 193, 185, 184, - 191, 183, 141, 142, 143, 144, 145, 146 -}; -#else /* ascii rather than ebcdic */ -EXTCONST unsigned char PL_freq[] = { /* letter frequencies for mixed English/C */ - 1, 2, 84, 151, 154, 155, 156, 157, - 165, 246, 250, 3, 158, 7, 18, 29, - 40, 51, 62, 73, 85, 96, 107, 118, - 129, 140, 147, 148, 149, 150, 152, 153, - 255, 182, 224, 205, 174, 176, 180, 217, - 233, 232, 236, 187, 235, 228, 234, 226, - 222, 219, 211, 195, 188, 193, 185, 184, - 191, 183, 201, 229, 181, 220, 194, 162, - 163, 208, 186, 202, 200, 218, 198, 179, - 178, 214, 166, 170, 207, 199, 209, 206, - 204, 160, 212, 216, 215, 192, 175, 173, - 243, 172, 161, 190, 203, 189, 164, 230, - 167, 248, 227, 244, 242, 255, 241, 231, - 240, 253, 169, 210, 245, 237, 249, 247, - 239, 168, 252, 251, 254, 238, 223, 221, - 213, 225, 177, 197, 171, 196, 159, 4, - 5, 6, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, - 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, - 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, - 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 141, 142, 143, 144, 145, 146 -}; -#endif -#else -EXTCONST unsigned char PL_freq[]; -#endif - /* Although only used for debugging, these constants must be available in * non-debugging builds too, since they're used in ext/re/re_exec.c, * which has DEBUGGING enabled always */ @@ -5120,9 +5291,6 @@ # ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP " DEBUG_LEAKING_SCALARS_FORK_DUMP" # endif -# ifdef FCRYPT - " FCRYPT" -# endif # ifdef HAS_TIMES " HAS_TIMES" # endif @@ -5144,12 +5312,6 @@ # ifdef PERL_DEBUG_READONLY_OPS " PERL_DEBUG_READONLY_OPS" # endif -# ifdef PERL_GLOBAL_STRUCT - " PERL_GLOBAL_STRUCT" -# endif -# ifdef PERL_GLOBAL_STRUCT_PRIVATE - " PERL_GLOBAL_STRUCT_PRIVATE" -# endif # ifdef PERL_IMPLICIT_CONTEXT " PERL_IMPLICIT_CONTEXT" # endif @@ -5159,12 +5321,6 @@ # ifdef PERL_MICRO " PERL_MICRO" # endif -# ifdef PERL_NEED_APPCTX - " PERL_NEED_APPCTX" -# endif -# ifdef PERL_NEED_TIMESBASE - " PERL_NEED_TIMESBASE" -# endif # ifdef PERL_POISON " PERL_POISON" # endif @@ -5358,7 +5514,7 @@ #define HINT_RE_FLAGS 0x02000000 /* re '/xism' pragma */ -#define HINT_FEATURE_MASK 0x1c000000 /* 3 bits for feature bundles */ +#define HINT_FEATURE_MASK 0x3c000000 /* 4 bits for feature bundles */ /* Note: Used for HINT_M_VMSISH_*, currently defined by vms/vmsish.h: @@ -5370,6 +5526,16 @@ #define HINT_SORT_STABLE 0x00000100 /* sort styles */ #define HINT_SORT_UNSTABLE 0x00000200 +#define HINT_ALL_STRICT HINT_STRICT_REFS \ + | HINT_STRICT_SUBS \ + | HINT_STRICT_VARS + +#ifdef USE_STRICT_BY_DEFAULT +#define HINTS_DEFAULT HINT_ALL_STRICT +#else +#define HINTS_DEFAULT 0 +#endif + /* flags for PL_sawampersand */ #define SAWAMPERSAND_LEFT 1 /* saw $` */ @@ -5505,34 +5671,6 @@ INIT(PERL_INTERPRETER_SIZE_UPTO_MEMBER(PERL_LAST_5_18_0_INTERP_MEMBER)); -# ifdef PERL_GLOBAL_STRUCT -/* MULTIPLICITY is automatically defined when PERL_GLOBAL_STRUCT is defined, - hence it's safe and sane to nest this within #ifdef MULTIPLICITY */ - -struct perl_vars { -# include "perlvars.h" -}; - -EXTCONST U16 PL_global_struct_size - INIT(sizeof(struct perl_vars)); - -# ifdef PERL_CORE -# ifndef PERL_GLOBAL_STRUCT_PRIVATE -EXT struct perl_vars PL_Vars; -EXT struct perl_vars *PL_VarsPtr INIT(&PL_Vars); -# undef PERL_GET_VARS -# define PERL_GET_VARS() PL_VarsPtr -# endif /* !PERL_GLOBAL_STRUCT_PRIVATE */ -# else /* PERL_CORE */ -# if !defined(__GNUC__) || !defined(WIN32) -EXT -# endif /* WIN32 */ -struct perl_vars *PL_VarsPtr; -# define PL_Vars (*((PL_VarsPtr) \ - ? PL_VarsPtr : (PL_VarsPtr = Perl_GetVars(aTHX)))) -# endif /* PERL_CORE */ -# endif /* PERL_GLOBAL_STRUCT */ - /* Done with PERLVAR macros for now ... */ # undef PERLVAR # undef PERLVARA @@ -5605,13 +5743,11 @@ define HAVE_INTERP_INTERN */ #include "embed.h" -#ifndef PERL_GLOBAL_STRUCT START_EXTERN_C # include "perlvars.h" END_EXTERN_C -#endif #undef PERLVAR #undef PERLVARA @@ -5653,8 +5789,14 @@ #define PERL_MAGIC_READONLY_ACCEPTABLE 0x40 #define PERL_MAGIC_VALUE_MAGIC 0x80 #define PERL_MAGIC_VTABLE_MASK 0x3F + +/* can this type of magic be attached to a readonly SV? */ #define PERL_MAGIC_TYPE_READONLY_ACCEPTABLE(t) \ (PL_magic_data[(U8)(t)] & PERL_MAGIC_READONLY_ACCEPTABLE) + +/* Is this type of magic container magic (%ENV, $1 etc), + * or value magic (pos, taint etc)? + */ #define PERL_MAGIC_TYPE_IS_VALUE_MAGIC(t) \ (PL_magic_data[(U8)(t)] & PERL_MAGIC_VALUE_MAGIC) @@ -5863,18 +6005,19 @@ * byte ones (as they are always legal) are to this state. */ -# define NUM_CLASSES 18 -# define N0 0 -# define N1 ((N0) + NUM_CLASSES) -# define N2 ((N1) + NUM_CLASSES) -# define N3 ((N2) + NUM_CLASSES) -# define N4 ((N3) + NUM_CLASSES) -# define N5 ((N4) + NUM_CLASSES) -# define N6 ((N5) + NUM_CLASSES) -# define N7 ((N6) + NUM_CLASSES) -# define N8 ((N7) + NUM_CLASSES) -# define N9 ((N8) + NUM_CLASSES) -# define N10 ((N9) + NUM_CLASSES) +# if defined(PERL_CORE) +# define NUM_CLASSES 18 +# define N0 0 +# define N1 ((N0) + NUM_CLASSES) +# define N2 ((N1) + NUM_CLASSES) +# define N3 ((N2) + NUM_CLASSES) +# define N4 ((N3) + NUM_CLASSES) +# define N5 ((N4) + NUM_CLASSES) +# define N6 ((N5) + NUM_CLASSES) +# define N7 ((N6) + NUM_CLASSES) +# define N8 ((N7) + NUM_CLASSES) +# define N9 ((N8) + NUM_CLASSES) +# define N10 ((N9) + NUM_CLASSES) /*Class: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 */ /*N0*/ 0, 1,N1,N2,N3,N4,N5, 1, 1, 1, 1, 1, 1,N6,N7,N8,N9,N10, @@ -6002,30 +6145,30 @@ * byte ones (as they are always legal) are to this state. */ -# undef N0 -# undef N1 -# undef N2 -# undef N3 -# undef N4 -# undef N5 -# undef N6 -# undef N7 -# undef N8 -# undef N9 -# undef NUM_CLASSES -# define NUM_CLASSES 19 -# define N0 0 -# define N1 ((N0) + NUM_CLASSES) -# define N2 ((N1) + NUM_CLASSES) -# define N3 ((N2) + NUM_CLASSES) -# define N4 ((N3) + NUM_CLASSES) -# define N5 ((N4) + NUM_CLASSES) -# define N6 ((N5) + NUM_CLASSES) -# define N7 ((N6) + NUM_CLASSES) -# define N8 ((N7) + NUM_CLASSES) -# define N9 ((N8) + NUM_CLASSES) -# define N10 ((N9) + NUM_CLASSES) -# define N11 ((N10) + NUM_CLASSES) +# undef N0 +# undef N1 +# undef N2 +# undef N3 +# undef N4 +# undef N5 +# undef N6 +# undef N7 +# undef N8 +# undef N9 +# undef NUM_CLASSES +# define NUM_CLASSES 19 +# define N0 0 +# define N1 ((N0) + NUM_CLASSES) +# define N2 ((N1) + NUM_CLASSES) +# define N3 ((N2) + NUM_CLASSES) +# define N4 ((N3) + NUM_CLASSES) +# define N5 ((N4) + NUM_CLASSES) +# define N6 ((N5) + NUM_CLASSES) +# define N7 ((N6) + NUM_CLASSES) +# define N8 ((N7) + NUM_CLASSES) +# define N9 ((N8) + NUM_CLASSES) +# define N10 ((N9) + NUM_CLASSES) +# define N11 ((N10) + NUM_CLASSES) /*Class: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 */ /*N0*/ 0, 1, N1, N2, N4, N7, N6, N3, N5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -6105,24 +6248,24 @@ * byte ones (as they are always legal) are to this state. */ -# undef N0 -# undef N1 -# undef N2 -# undef N3 -# undef N4 -# undef N5 -# undef N6 -# undef N7 -# undef NUM_CLASSES -# define NUM_CLASSES 12 -# define N0 0 -# define N1 ((N0) + NUM_CLASSES) -# define N2 ((N1) + NUM_CLASSES) -# define N3 ((N2) + NUM_CLASSES) -# define N4 ((N3) + NUM_CLASSES) -# define N5 ((N4) + NUM_CLASSES) -# define N6 ((N5) + NUM_CLASSES) -# define N7 ((N6) + NUM_CLASSES) +# undef N0 +# undef N1 +# undef N2 +# undef N3 +# undef N4 +# undef N5 +# undef N6 +# undef N7 +# undef NUM_CLASSES +# define NUM_CLASSES 12 +# define N0 0 +# define N1 ((N0) + NUM_CLASSES) +# define N2 ((N1) + NUM_CLASSES) +# define N3 ((N2) + NUM_CLASSES) +# define N4 ((N3) + NUM_CLASSES) +# define N5 ((N4) + NUM_CLASSES) +# define N6 ((N5) + NUM_CLASSES) +# define N7 ((N6) + NUM_CLASSES) /*Class: 0 1 2 3 4 5 6 7 8 9 10 11 */ /*N0*/ 0, 1, N1, N2, N5, N7, N3, N4, N6, 1, 1, 1, @@ -6136,6 +6279,7 @@ /*N7*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, N2, 1, 1, }; +# endif /* defined(PERL_CORE) */ # else /* End of is DOINIT */ EXTCONST U8 PL_extended_utf8_dfa_tab[]; @@ -6145,22 +6289,6 @@ # endif #endif /* end of isn't EBCDIC */ -#ifndef PERL_NO_INLINE_FUNCTIONS -/* Static inline funcs that depend on includes and declarations above. - Some of these reference functions in the perl object files, and some - compilers aren't smart enough to eliminate unused static inline - functions, so including this file in source code can cause link errors - even if the source code uses none of the functions. Hence including these - can be suppressed by setting PERL_NO_INLINE_FUNCTIONS. Doing this will - (obviously) result in unworkable XS code, but allows simple probing code - to continue to work, because it permits tests to include the perl headers - for definitions without creating a link dependency on the perl library - (which may not exist yet). -*/ - -# include "inline.h" -#endif - #include "overload.h" END_EXTERN_C @@ -6296,7 +6424,7 @@ cBOOL(PL_hints & (HINT_LOCALE|HINT_LOCALE_PARTIAL)) /* -=head1 Locale-related functions and macros +=for apidoc_section $locale =for apidoc Amn|bool|IN_LOCALE @@ -6406,89 +6534,135 @@ #endif -/* Locale/thread synchronization macros. These aren't needed if using - * thread-safe locale operations, except if something is broken */ -#if defined(USE_LOCALE) \ - && defined(USE_ITHREADS) \ - && (! defined(USE_THREAD_SAFE_LOCALE) || defined(TS_W32_BROKEN_LOCALECONV)) - -/* We have a locale object holding the 'C' locale for Posix 2008 */ -# ifndef USE_POSIX_2008_LOCALE -# define _LOCALE_TERM_POSIX_2008 NOOP -# else -# define _LOCALE_TERM_POSIX_2008 \ - STMT_START { \ - if (PL_C_locale_obj) { \ - /* Make sure we aren't using the locale \ - * space we are about to free */ \ - uselocale(LC_GLOBAL_LOCALE); \ - freelocale(PL_C_locale_obj); \ - PL_C_locale_obj = (locale_t) NULL; \ - } \ - } STMT_END -# endif - -/* This is used as a generic lock for locale operations. For example this is - * used when calling nl_langinfo() so that another thread won't zap the - * contents of its buffer before it gets saved; and it's called when changing - * the locale of LC_MESSAGES. On some systems the latter can cause the - * nl_langinfo buffer to be zapped under a race condition. - * - * If combined with LC_NUMERIC_LOCK, calls to this and its corresponding unlock - * should be contained entirely within the locked portion of LC_NUMERIC. This - * mutex should be used only in very short sections of code, while - * LC_NUMERIC_LOCK may span more operations. By always following this - * convention, deadlock should be impossible. But if necessary, the two - * mutexes could be combined. - * - * Actually, the two macros just below with the '_V' suffixes are used in just - * a few places where there is a broken localeconv(), but otherwise things are - * thread safe, and hence don't need locking. Just below LOCALE_LOCK and - * LOCALE_UNLOCK are defined in terms of these for use everywhere else */ -# define LOCALE_LOCK_V \ +/* Locale/thread synchronization macros. */ +#if ! ( defined(USE_LOCALE) \ + && defined(USE_ITHREADS) \ + && ( ! defined(USE_THREAD_SAFE_LOCALE) \ + || ( defined(HAS_LOCALECONV) \ + && ( ! defined(HAS_LOCALECONV_L) \ + || defined(TS_W32_BROKEN_LOCALECONV))) \ + || ( defined(HAS_NL_LANGINFO) \ + && ! defined(HAS_THREAD_SAFE_NL_LANGINFO_L)) \ + || (defined(HAS_MBLEN) && ! defined(HAS_MBRLEN)) \ + || (defined(HAS_MBTOWC) && ! defined(HAS_MBRTOWC)) \ + || (defined(HAS_WCTOMB) && ! defined(HAS_WCRTOMB)))) + +/* The whole expression just above was complemented, so here we have no need + * for thread synchronization, most likely it would be that this isn't a + * threaded build. */ +# define LOCALE_INIT +# define LOCALE_TERM +# define LC_NUMERIC_LOCK(cond) NOOP +# define LC_NUMERIC_UNLOCK NOOP +# define LOCALECONV_LOCK NOOP +# define LOCALECONV_UNLOCK NOOP +# define LOCALE_READ_LOCK NOOP +# define LOCALE_READ_UNLOCK NOOP +# define MBLEN_LOCK NOOP +# define MBLEN_UNLOCK NOOP +# define MBTOWC_LOCK NOOP +# define MBTOWC_UNLOCK NOOP +# define NL_LANGINFO_LOCK NOOP +# define NL_LANGINFO_UNLOCK NOOP +# define SETLOCALE_LOCK NOOP +# define SETLOCALE_UNLOCK NOOP +# define WCTOMB_LOCK NOOP +# define WCTOMB_UNLOCK NOOP +#else + + /* Here, we will need critical sections in locale handling, because one or + * more of the above conditions are true. This could be because the + * platform doesn't have thread-safe locales, or that at least one of the + * locale-dependent functions in the core isn't thread-safe. The latter + * case is generally because they return a pointer to a static buffer, which + * may be per-process instead of per-thread. There are supposedly + * re-entrant, safe versions for all of them Perl currently uses (which the + * #if above checks for), but most platforms don't have all the needed ones + * available, and the Posix standard doesn't require nl_langinfo_l() to be + * fully thread-safe, so a Configure probe was written. localeconv_l() is + * uncommon, and judging by bug reports on the web, some earlier library + * localeconv_l versions were broken, so perhaps a probe is in order for + * that, but it would be a pain to write. + * + * On non-thread-safe systems, some of the above functions are vulnerable to + * races should another thread get control and change the locale in the + * middle of their execution. + * + * We currently use a single mutex for all these cases. This solves both + * the problem of another thread changing the locale, and the buffer being + * overwritten (the code copies the results to a safe place before releasing + * the mutex). Ideally, for locale thread-safe platforms where the only + * issue is another thread clobbering the function's static buffer, there + * would be a separate mutex for each such buffer. Otherwise, things get + * locked that don't need to. But, it is not expected that any of these + * will be called frequently, and the locked interval should be short, and + * modern platforms will have reentrant versions (which don't lock) for + * almost all of them, so khw thinks a single mutex should suffice. */ +# define LOCALE_LOCK_ \ STMT_START { \ DEBUG_Lv(PerlIO_printf(Perl_debug_log, \ "%s: %d: locking locale\n", __FILE__, __LINE__)); \ MUTEX_LOCK(&PL_locale_mutex); \ } STMT_END -# define LOCALE_UNLOCK_V \ +# define LOCALE_UNLOCK_ \ STMT_START { \ DEBUG_Lv(PerlIO_printf(Perl_debug_log, \ "%s: %d: unlocking locale\n", __FILE__, __LINE__)); \ MUTEX_UNLOCK(&PL_locale_mutex); \ } STMT_END -/* On windows, we just need the mutex for LOCALE_LOCK */ -# ifdef TS_W32_BROKEN_LOCALECONV -# define LOCALE_LOCK NOOP -# define LOCALE_UNLOCK NOOP -# define LOCALE_INIT MUTEX_INIT(&PL_locale_mutex); -# define LOCALE_TERM MUTEX_DESTROY(&PL_locale_mutex) -# define LC_NUMERIC_LOCK(cond) -# define LC_NUMERIC_UNLOCK + /* We do define a different macro for each case; then if we want to have + * separate mutexes for some of them, the only changes needed are here. + * Define just the necessary macros. The compiler should then croak if the + * #ifdef's in the code are incorrect */ +# if defined(HAS_LOCALECONV) && ( ! defined(HAS_POSIX_2008_LOCALE) \ + || ! defined(HAS_LOCALECONV_L) \ + || defined(TS_W32_BROKEN_LOCALECONV)) +# define LOCALECONV_LOCK LOCALE_LOCK_ +# define LOCALECONV_UNLOCK LOCALE_UNLOCK_ +# endif +# if defined(HAS_NL_LANGINFO) && ( ! defined(HAS_THREAD_SAFE_NL_LANGINFO_L) \ + || ! defined(HAS_POSIX_2008_LOCALE)) +# define NL_LANGINFO_LOCK LOCALE_LOCK_ +# define NL_LANGINFO_UNLOCK LOCALE_UNLOCK_ +# endif +# if defined(HAS_MBLEN) && ! defined(HAS_MBRLEN) +# define MBLEN_LOCK LOCALE_LOCK_ +# define MBLEN_UNLOCK LOCALE_UNLOCK_ +# endif +# if defined(HAS_MBTOWC) && ! defined(HAS_MBRTOWC) +# define MBTOWC_LOCK LOCALE_LOCK_ +# define MBTOWC_UNLOCK LOCALE_UNLOCK_ +# endif +# if defined(HAS_WCTOMB) && ! defined(HAS_WCRTOMB) +# define WCTOMB_LOCK LOCALE_LOCK_ +# define WCTOMB_UNLOCK LOCALE_UNLOCK_ +# endif +# if defined(USE_THREAD_SAFE_LOCALE) + /* On locale thread-safe systems, we don't need these workarounds */ +# define LOCALE_TERM_LC_NUMERIC_ NOOP +# define LOCALE_INIT_LC_NUMERIC_ NOOP +# define LC_NUMERIC_LOCK(cond) NOOP +# define LC_NUMERIC_UNLOCK NOOP +# define LOCALE_INIT_LC_NUMERIC_ NOOP +# define LOCALE_TERM_LC_NUMERIC_ NOOP + + /* There may be instance core where we this is invoked yet should do + * nothing. Rather than have #ifdef's around them, define it here */ +# define SETLOCALE_LOCK NOOP +# define SETLOCALE_UNLOCK NOOP # else -# define LOCALE_LOCK LOCALE_LOCK_V -# define LOCALE_UNLOCK LOCALE_UNLOCK_V - - /* We also need to lock LC_NUMERIC for non-windows (hence Posix 2008) - * systems */ -# define LOCALE_INIT STMT_START { \ - MUTEX_INIT(&PL_locale_mutex); \ - MUTEX_INIT(&PL_lc_numeric_mutex); \ - } STMT_END - -# define LOCALE_TERM STMT_START { \ - MUTEX_DESTROY(&PL_locale_mutex); \ - MUTEX_DESTROY(&PL_lc_numeric_mutex); \ - _LOCALE_TERM_POSIX_2008; \ - } STMT_END +# define SETLOCALE_LOCK LOCALE_LOCK_ +# define SETLOCALE_UNLOCK LOCALE_UNLOCK_ - /* This mutex is used to create critical sections where we want the - * LC_NUMERIC locale to be locked into either the C (standard) locale, or - * the underlying locale, so that other threads interrupting this one don't - * change it to the wrong state before we've had a chance to complete our - * operation. It can stay locked over an entire printf operation, for - * example. And so is made distinct from the LOCALE_LOCK mutex. + /* On platforms without per-thread locales, when another thread can switch + * our locale, we need another mutex to create critical sections where we + * want the LC_NUMERIC locale to be locked into either the C (standard) + * locale, or the underlying locale, so that other threads interrupting + * this one don't change it to the wrong state before we've had a chance to + * complete our operation. It can stay locked over an entire printf + * operation, for example. And so is made distinct from the LOCALE_LOCK + * mutex. * * This simulates kind of a general semaphore. The current thread will * lock the mutex if the per-thread variable is zero, and then increments @@ -6502,7 +6676,13 @@ * * Clang improperly gives warnings for this, if not silenced: * https://clang.llvm.org/docs/ThreadSafetyAnalysis.html#conditional-locks - * */ + * + * If LC_NUMERIC_LOCK is combined with one of the LOCKs above, calls to + * that and its corresponding unlock should be contained entirely within + * the locked portion of LC_NUMERIC. Those mutexes should be used only in + * very short sections of code, while LC_NUMERIC_LOCK may span more + * operations. By always following this convention, deadlock should be + * impossible. But if necessary, the two mutexes could be combined. */ # define LC_NUMERIC_LOCK(cond_to_panic_if_already_locked) \ CLANG_DIAG_IGNORE(-Wthread-safety) \ STMT_START { \ @@ -6544,16 +6724,36 @@ } STMT_END \ CLANG_DIAG_RESTORE -# endif /* End of needs locking LC_NUMERIC */ -#else /* Below is no locale sync needed */ -# define LOCALE_INIT -# define LOCALE_LOCK -# define LOCALE_LOCK_V -# define LOCALE_UNLOCK -# define LOCALE_UNLOCK_V -# define LC_NUMERIC_LOCK(cond) -# define LC_NUMERIC_UNLOCK -# define LOCALE_TERM +# define LOCALE_INIT_LC_NUMERIC_ MUTEX_INIT(&PL_lc_numeric_mutex) +# define LOCALE_TERM_LC_NUMERIC_ MUTEX_DESTROY(&PL_lc_numeric_mutex) +# endif + +# ifdef USE_POSIX_2008_LOCALE + /* We have a locale object holding the 'C' locale for Posix 2008 */ +# define LOCALE_TERM_POSIX_2008_ \ + STMT_START { \ + if (PL_C_locale_obj) { \ + /* Make sure we aren't using the locale \ + * space we are about to free */ \ + uselocale(LC_GLOBAL_LOCALE); \ + freelocale(PL_C_locale_obj); \ + PL_C_locale_obj = (locale_t) NULL; \ + } \ + } STMT_END +# else +# define LOCALE_TERM_POSIX_2008_ NOOP +# endif + +# define LOCALE_INIT STMT_START { \ + MUTEX_INIT(&PL_locale_mutex); \ + LOCALE_INIT_LC_NUMERIC_; \ + } STMT_END + +# define LOCALE_TERM STMT_START { \ + MUTEX_DESTROY(&PL_locale_mutex); \ + LOCALE_TERM_LC_NUMERIC_; \ + LOCALE_TERM_POSIX_2008_; \ + } STMT_END #endif #ifdef USE_LOCALE_NUMERIC @@ -6564,7 +6764,7 @@ * operations used by Perl, namely the decimal point, and even the thousands * separator.) -=head1 Locale-related functions and macros +=for apidoc_section $locale =for apidoc Amn|void|DECLARATION_FOR_LC_NUMERIC_MANIPULATION @@ -6803,8 +7003,8 @@ # define LOCK_LC_NUMERIC_STANDARD() \ STMT_START { \ DEBUG_Lv(PerlIO_printf(Perl_debug_log, \ - "%s: %d: lock lc_numeric_standard: new depth=%d\n", \ - __FILE__, __LINE__, PL_numeric_standard + 1)); \ + "%s: %d: lc_numeric_standard now locked to depth %d\n", \ + __FILE__, __LINE__, PL_numeric_standard)); \ __ASSERT_(PL_numeric_standard) \ PL_numeric_standard++; \ } STMT_END @@ -6818,8 +7018,13 @@ assert(0); \ } \ DEBUG_Lv(PerlIO_printf(Perl_debug_log, \ - "%s: %d: lc_numeric_standard decrement lock, new depth=%d\n", \ - __FILE__, __LINE__, PL_numeric_standard)); \ + "%s: %d: ", __FILE__, __LINE__); \ + if (PL_numeric_standard <= 1) \ + PerlIO_printf(Perl_debug_log, \ + "lc_numeric_standard now unlocked\n");\ + else PerlIO_printf(Perl_debug_log, \ + "lc_numeric_standard lock decremented to depth %d\n", \ + PL_numeric_standard););\ } STMT_END # define WITH_LC_NUMERIC_SET_TO_NEEDED_IN(in_lc_numeric, block) \ @@ -6853,11 +7058,80 @@ #endif /* !USE_LOCALE_NUMERIC */ +#ifdef USE_ITHREADS +# define ENV_LOCK PERL_WRITE_LOCK(&PL_env_mutex) +# define ENV_UNLOCK PERL_WRITE_UNLOCK(&PL_env_mutex) +# define ENV_READ_LOCK PERL_READ_LOCK(&PL_env_mutex) +# define ENV_READ_UNLOCK PERL_READ_UNLOCK(&PL_env_mutex) +# define ENV_INIT PERL_RW_MUTEX_INIT(&PL_env_mutex) +# define ENV_TERM PERL_RW_MUTEX_DESTROY(&PL_env_mutex) + + /* On platforms where the static buffer contained in getenv() is per-thread + * rather than process-wide, another thread executing a getenv() at the same + * time won't destroy ours before we have copied the result safely away and + * unlocked the mutex. On such platforms (which is most), we can have many + * readers of the environment at the same time. */ +# ifdef GETENV_PRESERVES_OTHER_THREAD +# define GETENV_LOCK ENV_READ_LOCK +# define GETENV_UNLOCK ENV_READ_UNLOCK +# else + /* If, on the other hand, another thread could zap our getenv() return, we + * need to keep them from executing until we are done */ +# define GETENV_LOCK ENV_LOCK +# define GETENV_UNLOCK ENV_UNLOCK +# endif +#else +# define ENV_LOCK NOOP +# define ENV_UNLOCK NOOP +# define ENV_READ_LOCK NOOP +# define ENV_READ_UNLOCK NOOP +# define ENV_INIT NOOP +# define ENV_TERM NOOP +# define GETENV_LOCK NOOP +# define GETENV_UNLOCK NOOP +#endif + +#ifndef PERL_NO_INLINE_FUNCTIONS +/* Static inline funcs that depend on includes and declarations above. + Some of these reference functions in the perl object files, and some + compilers aren't smart enough to eliminate unused static inline + functions, so including this file in source code can cause link errors + even if the source code uses none of the functions. Hence including these + can be suppressed by setting PERL_NO_INLINE_FUNCTIONS. Doing this will + (obviously) result in unworkable XS code, but allows simple probing code + to continue to work, because it permits tests to include the perl headers + for definitions without creating a link dependency on the perl library + (which may not exist yet). +*/ + +START_EXTERN_C + +# include "inline.h" + +END_EXTERN_C + +#endif + +/* Some critical sections need to lock both the locale and the environment. + * XXX khw intends to change this to lock both mutexes, but that brings up + * issues of potential deadlock, so should be done at the beginning of a + * development cycle. So for now, it just locks the environment. Note that + * many modern platforms are locale-thread-safe anyway, so locking the locale + * mutex is a no-op anyway */ +#define ENV_LOCALE_LOCK ENV_LOCK +#define ENV_LOCALE_UNLOCK ENV_UNLOCK + +/* And some critical sections care only that no one else is writing either the + * locale nor the environment. XXX Again this is for the future. This can be + * simulated with using COND_WAIT in thread.h */ +#define ENV_LOCALE_READ_LOCK ENV_LOCALE_LOCK +#define ENV_LOCALE_READ_UNLOCK ENV_LOCALE_UNLOCK + #define Atof my_atof /* -=head1 Numeric functions +=for apidoc_section $numeric =for apidoc AmTR|NV|Strtod|NN const char * const s|NULLOK char ** e @@ -7049,15 +7323,9 @@ /* START_MY_CXT must appear in all extensions that define a my_cxt_t structure, * right after the definition (i.e. at file scope). The non-threads * case below uses it to declare the data as static. */ -# ifdef PERL_GLOBAL_STRUCT_PRIVATE -# define START_MY_CXT -# define MY_CXT_INDEX Perl_my_cxt_index(aTHX_ MY_CXT_KEY) -# define MY_CXT_INIT_ARG MY_CXT_KEY -# else # define START_MY_CXT static int my_cxt_index = -1; # define MY_CXT_INDEX my_cxt_index # define MY_CXT_INIT_ARG &my_cxt_index -# endif /* #ifdef PERL_GLOBAL_STRUCT_PRIVATE */ /* Creates and zeroes the per-interpreter data. * (We allocate my_cxtp in a Perl SV so that it will be released when @@ -7101,9 +7369,7 @@ # define _aMY_CXT ,aMY_CXT #else /* PERL_IMPLICIT_CONTEXT */ - # define START_MY_CXT static my_cxt_t my_cxt; -# define dMY_CXT_SV dNOOP # define dMY_CXT dNOOP # define dMY_CXT_INTERP(my_perl) dNOOP # define MY_CXT_INIT NOOP @@ -7191,7 +7457,7 @@ #define IS_NUMBER_TRAILING 0x40 /* number has trailing trash */ /* -=head1 Numeric functions +=for apidoc_section $numeric =for apidoc AmdR|bool|GROK_NUMERIC_RADIX|NN const char **sp|NN const char *send @@ -7261,6 +7527,8 @@ #define PERL_MAGIC_UTF8_CACHESIZE 2 +#ifdef PERL_CORE + #define PERL_UNICODE_STDIN_FLAG 0x0001 #define PERL_UNICODE_STDOUT_FLAG 0x0002 #define PERL_UNICODE_STDERR_FLAG 0x0004 @@ -7299,12 +7567,23 @@ #define PERL_UNICODE_WIDESYSCALLS 'W' #define PERL_UNICODE_UTF8CACHEASSERT 'a' +#endif + +/* +=for apidoc_section $signals +=for apidoc Amn|U32|PERL_SIGNALS_UNSAFE_FLAG +If this bit in C is set, the system is uing the pre-Perl 5.8 +unsafe signals. See L and L. + +=cut +*/ #define PERL_SIGNALS_UNSAFE_FLAG 0x0001 /* -=head1 Numeric functions +=for apidoc_section $numeric -=for apidoc Am|int|PERL_ABS|int +=for apidoc Am|int|PERL_ABS|int x Typeless C or C, I. (The usage below indicates it is for integers, but it works for any type.) Use instead of these, since the C @@ -7334,7 +7613,7 @@ /* -=head1 Miscellaneous Functions +=for apidoc_section $utility =for apidoc Am|bool|IS_SAFE_SYSCALL|NN const char *pv|STRLEN len|NN const char *what|NN const char *op_name diff -Nru perl-5.32.1/perl_inc_macro.h perl-5.34.0/perl_inc_macro.h --- perl-5.32.1/perl_inc_macro.h 2020-12-18 09:58:50.000000000 +0000 +++ perl-5.34.0/perl_inc_macro.h 2021-01-20 23:04:44.000000000 +0000 @@ -24,7 +24,7 @@ #ifdef APPLLIB_EXP # define INCPUSH_APPLLIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(APPLLIB_EXP), \ - INCPUSH_ADD_SUB_DIRS|INCPUSH_CAN_RELOCATE); + INCPUSH_ADD_SUB_DIRS|INCPUSH_CAN_RELOCATE); #endif #ifdef SITEARCH_EXP @@ -32,7 +32,7 @@ * DLL-based path intuition to work correctly */ # if !defined(WIN32) # define INCPUSH_SITEARCH_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(SITEARCH_EXP), \ - INCPUSH_CAN_RELOCATE); + INCPUSH_CAN_RELOCATE); # endif #endif @@ -40,10 +40,10 @@ # if defined(WIN32) /* this picks up sitearch as well */ # define INCPUSH_SITELIB_EXP s = PerlEnv_sitelib_path(PERL_FS_VERSION, &len); \ - if (s) incpush_use_sep(s, len, INCPUSH_ADD_SUB_DIRS|INCPUSH_CAN_RELOCATE); + if (s) incpush_use_sep(s, len, INCPUSH_ADD_SUB_DIRS|INCPUSH_CAN_RELOCATE); # else # define INCPUSH_SITELIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(SITELIB_EXP), \ - INCPUSH_CAN_RELOCATE); + INCPUSH_CAN_RELOCATE); # endif #endif @@ -59,7 +59,7 @@ # if defined(WIN32) /* this picks up vendorarch as well */ # define INCPUSH_PERL_VENDORLIB_EXP s = PerlEnv_vendorlib_path(PERL_FS_VERSION, &len); \ - if (s) incpush_use_sep(s, len, INCPUSH_ADD_SUB_DIRS|INCPUSH_CAN_RELOCATE); + if (s) incpush_use_sep(s, len, INCPUSH_ADD_SUB_DIRS|INCPUSH_CAN_RELOCATE); # else # define INCPUSH_PERL_VENDORLIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_VENDORLIB_EXP), INCPUSH_CAN_RELOCATE); # endif @@ -85,7 +85,7 @@ #ifdef PERL_OTHERLIBDIRS # define INCPUSH_PERL_OTHERLIBDIRS S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_OTHERLIBDIRS), \ - INCPUSH_ADD_VERSIONED_SUB_DIRS|INCPUSH_NOT_BASEDIR|INCPUSH_CAN_RELOCATE); + INCPUSH_ADD_VERSIONED_SUB_DIRS|INCPUSH_NOT_BASEDIR|INCPUSH_CAN_RELOCATE); #endif @@ -106,17 +106,17 @@ # define _INCPUSH_PERL5LIB_ADD _INCPUSH_PERL5LIB_IF incpush_use_sep(perl5lib, 0, INCPUSH_ADD_OLD_VERS|INCPUSH_NOT_BASEDIR); #else /* VMS */ - /* Treat PERL5?LIB as a possible search list logical name -- the - * "natural" VMS idiom for a Unix path string. We allow each - * element to be a set of |-separated directories for compatibility. - */ + /* Treat PERL5?LIB as a possible search list logical name -- the + * "natural" VMS idiom for a Unix path string. We allow each + * element to be a set of |-separated directories for compatibility. + */ # define _INCPUSH_PERL5LIB_ADD char buf[256]; \ - int idx = 0; \ - if (vmstrnenv("PERL5LIB",buf,0,NULL,0)) \ - do { \ - incpush_use_sep(buf, 0, \ - INCPUSH_ADD_OLD_VERS|INCPUSH_NOT_BASEDIR); \ - } while (vmstrnenv("PERL5LIB",buf,++idx,NULL,0)); + int idx = 0; \ + if (vmstrnenv("PERL5LIB",buf,0,NULL,0)) \ + do { \ + incpush_use_sep(buf, 0, \ + INCPUSH_ADD_OLD_VERS|INCPUSH_NOT_BASEDIR); \ + } while (vmstrnenv("PERL5LIB",buf,++idx,NULL,0)); #endif /* this macro is special and use submacros from above */ @@ -127,25 +127,25 @@ */ #ifdef APPLLIB_EXP # define INCPUSH_APPLLIB_OLD_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(APPLLIB_EXP), \ - INCPUSH_ADD_OLD_VERS|INCPUSH_NOT_BASEDIR|INCPUSH_CAN_RELOCATE); + INCPUSH_ADD_OLD_VERS|INCPUSH_NOT_BASEDIR|INCPUSH_CAN_RELOCATE); #endif #if defined(SITELIB_STEM) && defined(PERL_INC_VERSION_LIST) /* Search for version-specific dirs below here */ # define INCPUSH_SITELIB_STEM S_incpush_use_sep(aTHX_ STR_WITH_LEN(SITELIB_STEM), \ - INCPUSH_ADD_OLD_VERS|INCPUSH_CAN_RELOCATE); + INCPUSH_ADD_OLD_VERS|INCPUSH_CAN_RELOCATE); #endif #if defined(PERL_VENDORLIB_STEM) && defined(PERL_INC_VERSION_LIST) /* Search for version-specific dirs below here */ # define INCPUSH_PERL_VENDORLIB_STEM S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_VENDORLIB_STEM), \ - INCPUSH_ADD_OLD_VERS|INCPUSH_CAN_RELOCATE); + INCPUSH_ADD_OLD_VERS|INCPUSH_CAN_RELOCATE); #endif #ifdef PERL_OTHERLIBDIRS # define INCPUSH_PERL_OTHERLIBDIRS_ARCHONLY S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_OTHERLIBDIRS), \ - INCPUSH_ADD_OLD_VERS|INCPUSH_ADD_ARCHONLY_SUB_DIRS|INCPUSH_CAN_RELOCATE); + INCPUSH_ADD_OLD_VERS|INCPUSH_ADD_ARCHONLY_SUB_DIRS|INCPUSH_CAN_RELOCATE); #endif diff -Nru perl-5.32.1/perlio.c perl-5.34.0/perlio.c --- perl-5.32.1/perlio.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/perlio.c 2021-01-20 23:04:44.000000000 +0000 @@ -26,9 +26,9 @@ * Invent a dSYS macro to abstract this out */ #ifdef PERL_IMPLICIT_SYS -#define dSYS dTHX +# define dSYS dTHX #else -#define dSYS dNOOP +# define dSYS dNOOP #endif #define PERLIO_NOT_STDIO 0 @@ -43,66 +43,66 @@ #include "perl.h" #ifdef PERL_IMPLICIT_CONTEXT -#undef dSYS -#define dSYS dTHX +# undef dSYS +# define dSYS dTHX #endif #include "XSUB.h" #ifdef VMS -#include +# include #endif #define PerlIO_lockcnt(f) (((PerlIOl*)(f))->head->flags) /* Call the callback or PerlIOBase, and return failure. */ #define Perl_PerlIO_or_Base(f, callback, base, failure, args) \ - if (PerlIOValid(f)) { \ - const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\ - if (tab && tab->callback) \ - return (*tab->callback) args; \ - else \ - return PerlIOBase_ ## base args; \ - } \ - else \ - SETERRNO(EBADF, SS_IVCHAN); \ - return failure + if (PerlIOValid(f)) { \ + const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\ + if (tab && tab->callback) \ + return (*tab->callback) args; \ + else \ + return PerlIOBase_ ## base args; \ + } \ + else \ + SETERRNO(EBADF, SS_IVCHAN); \ + return failure /* Call the callback or fail, and return failure. */ #define Perl_PerlIO_or_fail(f, callback, failure, args) \ - if (PerlIOValid(f)) { \ - const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\ - if (tab && tab->callback) \ - return (*tab->callback) args; \ - SETERRNO(EINVAL, LIB_INVARG); \ - } \ - else \ - SETERRNO(EBADF, SS_IVCHAN); \ - return failure + if (PerlIOValid(f)) { \ + const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\ + if (tab && tab->callback) \ + return (*tab->callback) args; \ + SETERRNO(EINVAL, LIB_INVARG); \ + } \ + else \ + SETERRNO(EBADF, SS_IVCHAN); \ + return failure /* Call the callback or PerlIOBase, and be void. */ #define Perl_PerlIO_or_Base_void(f, callback, base, args) \ - if (PerlIOValid(f)) { \ - const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\ - if (tab && tab->callback) \ - (*tab->callback) args; \ - else \ - PerlIOBase_ ## base args; \ - } \ - else \ - SETERRNO(EBADF, SS_IVCHAN) + if (PerlIOValid(f)) { \ + const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\ + if (tab && tab->callback) \ + (*tab->callback) args; \ + else \ + PerlIOBase_ ## base args; \ + } \ + else \ + SETERRNO(EBADF, SS_IVCHAN) /* Call the callback or fail, and be void. */ #define Perl_PerlIO_or_fail_void(f, callback, args) \ - if (PerlIOValid(f)) { \ - const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\ - if (tab && tab->callback) \ - (*tab->callback) args; \ - else \ - SETERRNO(EINVAL, LIB_INVARG); \ - } \ - else \ - SETERRNO(EBADF, SS_IVCHAN) + if (PerlIOValid(f)) { \ + const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\ + if (tab && tab->callback) \ + (*tab->callback) args; \ + else \ + SETERRNO(EINVAL, LIB_INVARG); \ + } \ + else \ + SETERRNO(EBADF, SS_IVCHAN) #if defined(__osf__) && _XOPEN_SOURCE < 500 extern int fseeko(FILE *, off_t, int); @@ -123,11 +123,11 @@ #ifdef DOSISH dTHX; PERL_UNUSED_ARG(iotype); -#ifdef NETWARE +# ifdef NETWARE if (PerlLIO_setmode(fp, mode) != -1) { -#else +# else if (PerlLIO_setmode(fileno(fp), mode) != -1) { -#endif +# endif return 1; } else @@ -152,7 +152,7 @@ } #ifndef O_ACCMODE -#define O_ACCMODE 3 /* Assume traditional implementation */ +# define O_ACCMODE 3 /* Assume traditional implementation */ #endif int @@ -163,43 +163,43 @@ int ptype; switch (result) { case O_RDONLY: - ptype = IoTYPE_RDONLY; - break; + ptype = IoTYPE_RDONLY; + break; case O_WRONLY: - ptype = IoTYPE_WRONLY; - break; + ptype = IoTYPE_WRONLY; + break; case O_RDWR: default: - ptype = IoTYPE_RDWR; - break; + ptype = IoTYPE_RDWR; + break; } if (writing) - *writing = (result != O_RDONLY); + *writing = (result != O_RDONLY); if (result == O_RDONLY) { - mode[ix++] = 'r'; + mode[ix++] = 'r'; } #ifdef O_APPEND else if (rawmode & O_APPEND) { - mode[ix++] = 'a'; - if (result != O_WRONLY) - mode[ix++] = '+'; + mode[ix++] = 'a'; + if (result != O_WRONLY) + mode[ix++] = '+'; } #endif else { - if (result == O_WRONLY) - mode[ix++] = 'w'; - else { - mode[ix++] = 'r'; - mode[ix++] = '+'; - } + if (result == O_WRONLY) + mode[ix++] = 'w'; + else { + mode[ix++] = 'r'; + mode[ix++] = '+'; + } } #if O_BINARY != 0 /* Unless O_BINARY is different from zero, bit-and:ing * with it won't do much good. */ if (rawmode & O_BINARY) - mode[ix++] = 'b'; -# endif + mode[ix++] = 'b'; +#endif mode[ix] = '\0'; return ptype; } @@ -213,7 +213,7 @@ || strEQ(names, ":raw") || strEQ(names, ":bytes") ) { - return 0; + return 0; } Perl_croak(aTHX_ "Cannot apply \"%s\" in non-PerlIO perl", names); /* @@ -236,35 +236,35 @@ PerlIO * PerlIO_fdupopen(pTHX_ PerlIO *f, CLONE_PARAMS *param, int flags) { -#if defined(PERL_MICRO) || defined(__SYMBIAN32__) +# if defined(PERL_MICRO) return NULL; -#elif defined(PERL_IMPLICIT_SYS) +# elif defined(PERL_IMPLICIT_SYS) return PerlSIO_fdupopen(f); -#else -# ifdef WIN32 +# else +# ifdef WIN32 return win32_fdupopen(f); -# else +# else if (f) { - const int fd = PerlLIO_dup_cloexec(PerlIO_fileno(f)); - if (fd >= 0) { - char mode[8]; -# ifdef DJGPP - const int omode = djgpp_get_stream_mode(f); -# else - const int omode = fcntl(fd, F_GETFL); -# endif - PerlIO_intmode2str(omode,mode,NULL); - /* the r+ is a hack */ - return PerlIO_fdopen(fd, mode); - } - return NULL; + const int fd = PerlLIO_dup_cloexec(PerlIO_fileno(f)); + if (fd >= 0) { + char mode[8]; +# ifdef DJGPP + const int omode = djgpp_get_stream_mode(f); +# else + const int omode = fcntl(fd, F_GETFL); +# endif + PerlIO_intmode2str(omode,mode,NULL); + /* the r+ is a hack */ + return PerlIO_fdopen(fd, mode); + } + return NULL; } else { - SETERRNO(EBADF, SS_IVCHAN); + SETERRNO(EBADF, SS_IVCHAN); } -# endif +# endif return NULL; -#endif +# endif } @@ -274,35 +274,35 @@ PerlIO * PerlIO_openn(pTHX_ const char *layers, const char *mode, int fd, - int imode, int perm, PerlIO *old, int narg, SV **args) + int imode, int perm, PerlIO *old, int narg, SV **args) { if (narg) { - if (narg > 1) { - Perl_croak(aTHX_ "More than one argument to open"); - } - if (*args == &PL_sv_undef) - return PerlIO_tmpfile(); - else { + if (narg > 1) { + Perl_croak(aTHX_ "More than one argument to open"); + } + if (*args == &PL_sv_undef) + return PerlIO_tmpfile(); + else { STRLEN len; - const char *name = SvPV_const(*args, len); + const char *name = SvPV_const(*args, len); if (!IS_SAFE_PATHNAME(name, len, "open")) return NULL; - if (*mode == IoTYPE_NUMERIC) { - fd = PerlLIO_open3_cloexec(name, imode, perm); - if (fd >= 0) - return PerlIO_fdopen(fd, mode + 1); - } - else if (old) { - return PerlIO_reopen(name, mode, old); - } - else { - return PerlIO_open(name, mode); - } - } + if (*mode == IoTYPE_NUMERIC) { + fd = PerlLIO_open3_cloexec(name, imode, perm); + if (fd >= 0) + return PerlIO_fdopen(fd, mode + 1); + } + else if (old) { + return PerlIO_reopen(name, mode, old); + } + else { + return PerlIO_open(name, mode); + } + } } else { - return PerlIO_fdopen(fd, (char *) mode); + return PerlIO_fdopen(fd, (char *) mode); } return NULL; } @@ -312,12 +312,12 @@ { dXSARGS; if (items < 2) - Perl_croak(aTHX_ "Usage class->find(name[,load])"); + Perl_croak(aTHX_ "Usage class->find(name[,load])"); else { - const char * const name = SvPV_nolen_const(ST(1)); - ST(0) = (strEQ(name, "crlf") - || strEQ(name, "raw")) ? &PL_sv_yes : &PL_sv_undef; - XSRETURN(1); + const char * const name = SvPV_nolen_const(ST(1)); + ST(0) = (strEQ(name, "crlf") + || strEQ(name, "raw")) ? &PL_sv_yes : &PL_sv_undef; + XSRETURN(1); } } @@ -350,27 +350,27 @@ va_start(ap, fmt); if (!PL_perlio_debug_fd) { - if (!TAINTING_get && - PerlProc_getuid() == PerlProc_geteuid() && - PerlProc_getgid() == PerlProc_getegid()) { - const char * const s = PerlEnv_getenv("PERLIO_DEBUG"); - if (s && *s) - PL_perlio_debug_fd = PerlLIO_open3_cloexec(s, - O_WRONLY | O_CREAT | O_APPEND, 0666); - else - PL_perlio_debug_fd = PerlLIO_dup_cloexec(2); /* stderr */ - } else { - /* tainting or set*id, so ignore the environment and send the + if (!TAINTING_get && + PerlProc_getuid() == PerlProc_geteuid() && + PerlProc_getgid() == PerlProc_getegid()) { + const char * const s = PerlEnv_getenv("PERLIO_DEBUG"); + if (s && *s) + PL_perlio_debug_fd = PerlLIO_open3_cloexec(s, + O_WRONLY | O_CREAT | O_APPEND, 0666); + else + PL_perlio_debug_fd = PerlLIO_dup_cloexec(2); /* stderr */ + } else { + /* tainting or set*id, so ignore the environment and send the debug output to stderr, like other -D switches. */ - PL_perlio_debug_fd = PerlLIO_dup_cloexec(2); /* stderr */ - } + PL_perlio_debug_fd = PerlLIO_dup_cloexec(2); /* stderr */ + } } if (PL_perlio_debug_fd > 0) { #ifdef USE_ITHREADS - const char * const s = CopFILE(PL_curcop); - /* Use fixed buffer as sv_catpvf etc. needs SVs */ - char buffer[1024]; - const STRLEN len1 = my_snprintf(buffer, sizeof(buffer), "%.40s:%" IVdf " ", s ? s : "(none)", (IV) CopLINE(PL_curcop)); + const char * const s = CopFILE(PL_curcop); + /* Use fixed buffer as sv_catpvf etc. needs SVs */ + char buffer[1024]; + const STRLEN len1 = my_snprintf(buffer, sizeof(buffer), "%.40s:%" IVdf " ", s ? s : "(none)", (IV) CopLINE(PL_curcop)); # ifdef USE_QUADMATH # ifdef HAS_VSNPRINTF /* my_vsnprintf() isn't available with quadmath, but the native vsnprintf() @@ -382,19 +382,19 @@ STATIC_ASSERT_STMT(0); # endif # else - const STRLEN len2 = my_vsnprintf(buffer + len1, sizeof(buffer) - len1, fmt, ap); + const STRLEN len2 = my_vsnprintf(buffer + len1, sizeof(buffer) - len1, fmt, ap); # endif - PERL_UNUSED_RESULT(PerlLIO_write(PL_perlio_debug_fd, buffer, len1 + len2)); + PERL_UNUSED_RESULT(PerlLIO_write(PL_perlio_debug_fd, buffer, len1 + len2)); #else - const char *s = CopFILE(PL_curcop); - STRLEN len; - SV * const sv = Perl_newSVpvf(aTHX_ "%s:%" IVdf " ", s ? s : "(none)", - (IV) CopLINE(PL_curcop)); - Perl_sv_vcatpvf(aTHX_ sv, fmt, &ap); - - s = SvPV_const(sv, len); - PERL_UNUSED_RESULT(PerlLIO_write(PL_perlio_debug_fd, s, len)); - SvREFCNT_dec(sv); + const char *s = CopFILE(PL_curcop); + STRLEN len; + SV * const sv = Perl_newSVpvf(aTHX_ "%s:%" IVdf " ", s ? s : "(none)", + (IV) CopLINE(PL_curcop)); + Perl_sv_vcatpvf(aTHX_ sv, fmt, &ap); + + s = SvPV_const(sv, len); + PERL_UNUSED_RESULT(PerlLIO_write(PL_perlio_debug_fd, s, len)); + SvREFCNT_dec(sv); #endif } va_end(ap); @@ -415,18 +415,18 @@ { PerlIOl *head, *p; int seen = 0; -#ifndef PERL_IMPLICIT_SYS +# ifndef PERL_IMPLICIT_SYS PERL_UNUSED_CONTEXT; -#endif +# endif if (!PerlIOValid(f)) - return; + return; p = head = PerlIOBase(f)->head; assert(p); do { - assert(p->head == head); - if (p == (PerlIOl*)f) - seen = 1; - p = p->next; + assert(p->head == head); + if (p == (PerlIOl*)f) + seen = 1; + p = p->next; } while (p); assert(seen); } @@ -444,7 +444,7 @@ PerlIO_init_table(pTHX) { if (PL_perlio) - return; + return; Newxz(PL_perlio, PERLIO_TABLE_SIZE, PerlIOl); } @@ -460,17 +460,17 @@ PerlIOl *f; last = &PL_perlio; while ((f = *last)) { - int i; - last = (PerlIOl **) (f); - for (i = 1; i < PERLIO_TABLE_SIZE; i++) { - if (!((++f)->next)) { - goto good_exit; - } - } + int i; + last = (PerlIOl **) (f); + for (i = 1; i < PERLIO_TABLE_SIZE; i++) { + if (!((++f)->next)) { + goto good_exit; + } + } } Newxz(f,PERLIO_TABLE_SIZE,PerlIOl); if (!f) { - return NULL; + return NULL; } *last = (PerlIOl*) f++; @@ -486,16 +486,16 @@ PerlIO_fdupopen(pTHX_ PerlIO *f, CLONE_PARAMS *param, int flags) { if (PerlIOValid(f)) { - const PerlIO_funcs * const tab = PerlIOBase(f)->tab; - DEBUG_i( PerlIO_debug("fdupopen f=%p param=%p\n",(void*)f,(void*)param) ); - if (tab && tab->Dup) - return (*tab->Dup)(aTHX_ PerlIO_allocate(aTHX), f, param, flags); - else { - return PerlIOBase_dup(aTHX_ PerlIO_allocate(aTHX), f, param, flags); - } + const PerlIO_funcs * const tab = PerlIOBase(f)->tab; + DEBUG_i( PerlIO_debug("fdupopen f=%p param=%p\n",(void*)f,(void*)param) ); + if (tab && tab->Dup) + return (*tab->Dup)(aTHX_ PerlIO_allocate(aTHX), f, param, flags); + else { + return PerlIOBase_dup(aTHX_ PerlIO_allocate(aTHX), f, param, flags); + } } else - SETERRNO(EBADF, SS_IVCHAN); + SETERRNO(EBADF, SS_IVCHAN); return NULL; } @@ -505,16 +505,16 @@ { PerlIOl * const table = *tablep; if (table) { - int i; - PerlIO_cleantable(aTHX_(PerlIOl **) & (table[0])); - for (i = PERLIO_TABLE_SIZE - 1; i > 0; i--) { - PerlIOl * const f = table + i; - if (f->next) { - PerlIO_close(&(f->next)); - } - } - Safefree(table); - *tablep = NULL; + int i; + PerlIO_cleantable(aTHX_(PerlIOl **) & (table[0])); + for (i = PERLIO_TABLE_SIZE - 1; i > 0; i--) { + PerlIOl * const f = table + i; + if (f->next) { + PerlIO_close(&(f->next)); + } + } + Safefree(table); + *tablep = NULL; } } @@ -533,15 +533,15 @@ PerlIO_list_free(pTHX_ PerlIO_list_t *list) { if (list) { - if (--list->refcnt == 0) { - if (list->array) { - IV i; - for (i = 0; i < list->cur; i++) - SvREFCNT_dec(list->array[i].arg); - Safefree(list->array); - } - Safefree(list); - } + if (--list->refcnt == 0) { + if (list->array) { + IV i; + for (i = 0; i < list->cur; i++) + SvREFCNT_dec(list->array[i].arg); + Safefree(list->array); + } + Safefree(list); + } } } @@ -553,16 +553,16 @@ if (list->cur >= list->len) { const IV new_len = list->len + 8; - if (list->array) - Renew(list->array, new_len, PerlIO_pair_t); - else - Newx(list->array, new_len, PerlIO_pair_t); - list->len = new_len; + if (list->array) + Renew(list->array, new_len, PerlIO_pair_t); + else + Newx(list->array, new_len, PerlIO_pair_t); + list->len = new_len; } p = &(list->array[list->cur++]); p->funcs = funcs; if ((p->arg = arg)) { - SvREFCNT_inc_simple_void_NN(arg); + SvREFCNT_inc_simple_void_NN(arg); } } @@ -571,18 +571,18 @@ { PerlIO_list_t *list = NULL; if (proto) { - int i; - list = PerlIO_list_alloc(aTHX); - for (i=0; i < proto->cur; i++) { - SV *arg = proto->array[i].arg; + int i; + list = PerlIO_list_alloc(aTHX); + for (i=0; i < proto->cur; i++) { + SV *arg = proto->array[i].arg; #ifdef USE_ITHREADS - if (arg && param) - arg = sv_dup(arg, param); + if (arg && param) + arg = sv_dup(arg, param); #else - PERL_UNUSED_ARG(param); + PERL_UNUSED_ARG(param); #endif - PerlIO_list_push(aTHX_ list, proto->array[i].funcs, arg); - } + PerlIO_list_push(aTHX_ list, proto->array[i].funcs, arg); + } } return list; } @@ -599,15 +599,15 @@ PerlIO_init_table(aTHX); DEBUG_i( PerlIO_debug("Clone %p from %p\n",(void*)aTHX,(void*)proto) ); while ((f = *table)) { - int i; - table = (PerlIOl **) (f++); - for (i = 1; i < PERLIO_TABLE_SIZE; i++) { - if (f->next) { - (void) fp_dup(&(f->next), 0, param); - } - f++; - } - } + int i; + table = (PerlIOl **) (f++); + for (i = 1; i < PERLIO_TABLE_SIZE; i++) { + if (f->next) { + (void) fp_dup(&(f->next), 0, param); + } + f++; + } + } #else PERL_UNUSED_CONTEXT; PERL_UNUSED_ARG(proto); @@ -624,23 +624,23 @@ DEBUG_i( PerlIO_debug("Destruct %p\n",(void*)aTHX) ); #endif while ((f = *table)) { - int i; - table = (PerlIOl **) (f++); - for (i = 1; i < PERLIO_TABLE_SIZE; i++) { - PerlIO *x = &(f->next); - const PerlIOl *l; - while ((l = *x)) { - if (l->tab && l->tab->kind & PERLIO_K_DESTRUCT) { - DEBUG_i( PerlIO_debug("Destruct popping %s\n", l->tab->name) ); - PerlIO_flush(x); - PerlIO_pop(aTHX_ x); - } - else { - x = PerlIONext(x); - } - } - f++; - } + int i; + table = (PerlIOl **) (f++); + for (i = 1; i < PERLIO_TABLE_SIZE; i++) { + PerlIO *x = &(f->next); + const PerlIOl *l; + while ((l = *x)) { + if (l->tab && l->tab->kind & PERLIO_K_DESTRUCT) { + DEBUG_i( PerlIO_debug("Destruct popping %s\n", l->tab->name) ); + PerlIO_flush(x); + PerlIO_pop(aTHX_ x); + } + else { + x = PerlIONext(x); + } + } + f++; + } } } @@ -650,26 +650,26 @@ const PerlIOl *l = *f; VERIFY_HEAD(f); if (l) { - DEBUG_i( PerlIO_debug("PerlIO_pop f=%p %s\n", (void*)f, + DEBUG_i( PerlIO_debug("PerlIO_pop f=%p %s\n", (void*)f, l->tab ? l->tab->name : "(Null)") ); - if (l->tab && l->tab->Popped) { - /* - * If popped returns non-zero do not free its layer structure - * it has either done so itself, or it is shared and still in - * use - */ - if ((*l->tab->Popped) (aTHX_ f) != 0) - return; - } - if (PerlIO_lockcnt(f)) { - /* we're in use; defer freeing the structure */ - PerlIOBase(f)->flags = PERLIO_F_CLEARED; - PerlIOBase(f)->tab = NULL; - } - else { - *f = l->next; - Safefree(l); - } + if (l->tab && l->tab->Popped) { + /* + * If popped returns non-zero do not free its layer structure + * it has either done so itself, or it is shared and still in + * use + */ + if ((*l->tab->Popped) (aTHX_ f) != 0) + return; + } + if (PerlIO_lockcnt(f)) { + /* we're in use; defer freeing the structure */ + PerlIOBase(f)->flags = PERLIO_F_CLEARED; + PerlIOBase(f)->tab = NULL; + } + else { + *f = l->next; + Safefree(l); + } } } @@ -686,23 +686,23 @@ AV * const av = newAV(); if (PerlIOValid(f)) { - PerlIOl *l = PerlIOBase(f); + PerlIOl *l = PerlIOBase(f); - while (l) { - /* There is some collusion in the implementation of - XS_PerlIO_get_layers - it knows that name and flags are - generated as fresh SVs here, and takes advantage of that to - "copy" them by taking a reference. If it changes here, it needs - to change there too. */ - SV * const name = l->tab && l->tab->name ? - newSVpv(l->tab->name, 0) : &PL_sv_undef; - SV * const arg = l->tab && l->tab->Getarg ? - (*l->tab->Getarg)(aTHX_ &l, 0, 0) : &PL_sv_undef; - av_push(av, name); - av_push(av, arg); - av_push(av, newSViv((IV)l->flags)); - l = l->next; - } + while (l) { + /* There is some collusion in the implementation of + XS_PerlIO_get_layers - it knows that name and flags are + generated as fresh SVs here, and takes advantage of that to + "copy" them by taking a reference. If it changes here, it needs + to change there too. */ + SV * const name = l->tab && l->tab->name ? + newSVpv(l->tab->name, 0) : &PL_sv_undef; + SV * const arg = l->tab && l->tab->Getarg ? + (*l->tab->Getarg)(aTHX_ &l, 0, 0) : &PL_sv_undef; + av_push(av, name); + av_push(av, arg); + av_push(av, newSViv((IV)l->flags)); + l = l->next; + } } return av; @@ -719,38 +719,38 @@ IV i; if ((SSize_t) len <= 0) - len = strlen(name); + len = strlen(name); for (i = 0; i < PL_known_layers->cur; i++) { - PerlIO_funcs * const f = PL_known_layers->array[i].funcs; + PerlIO_funcs * const f = PL_known_layers->array[i].funcs; const STRLEN this_len = strlen(f->name); if (this_len == len && memEQ(f->name, name, len)) { - DEBUG_i( PerlIO_debug("%.*s => %p\n", (int) len, name, (void*)f) ); - return f; - } + DEBUG_i( PerlIO_debug("%.*s => %p\n", (int) len, name, (void*)f) ); + return f; + } } if (load && PL_subname && PL_def_layerlist - && PL_def_layerlist->cur >= 2) { - if (PL_in_load_module) { - Perl_croak(aTHX_ "Recursive call to Perl_load_module in PerlIO_find_layer"); - return NULL; - } else { - SV * const pkgsv = newSVpvs("PerlIO"); - SV * const layer = newSVpvn(name, len); - CV * const cv = get_cvs("PerlIO::Layer::NoWarnings", 0); - ENTER; - SAVEBOOL(PL_in_load_module); - if (cv) { - SAVEGENERICSV(PL_warnhook); - PL_warnhook = MUTABLE_SV((SvREFCNT_inc_simple_NN(cv))); - } - PL_in_load_module = TRUE; - /* - * The two SVs are magically freed by load_module - */ - Perl_load_module(aTHX_ 0, pkgsv, NULL, layer, NULL); - LEAVE; - return PerlIO_find_layer(aTHX_ name, len, 0); - } + && PL_def_layerlist->cur >= 2) { + if (PL_in_load_module) { + Perl_croak(aTHX_ "Recursive call to Perl_load_module in PerlIO_find_layer"); + return NULL; + } else { + SV * const pkgsv = newSVpvs("PerlIO"); + SV * const layer = newSVpvn(name, len); + CV * const cv = get_cvs("PerlIO::Layer::NoWarnings", 0); + ENTER; + SAVEBOOL(PL_in_load_module); + if (cv) { + SAVEGENERICSV(PL_warnhook); + PL_warnhook = MUTABLE_SV((SvREFCNT_inc_simple_NN(cv))); + } + PL_in_load_module = TRUE; + /* + * The two SVs are magically freed by load_module + */ + Perl_load_module(aTHX_ 0, pkgsv, NULL, layer, NULL); + LEAVE; + return PerlIO_find_layer(aTHX_ name, len, 0); + } } DEBUG_i( PerlIO_debug("Cannot find %.*s\n", (int) len, name) ); return NULL; @@ -762,11 +762,11 @@ perlio_mg_set(pTHX_ SV *sv, MAGIC *mg) { if (SvROK(sv)) { - IO * const io = GvIOn(MUTABLE_GV(SvRV(sv))); - PerlIO * const ifp = IoIFP(io); - PerlIO * const ofp = IoOFP(io); - Perl_warn(aTHX_ "set %" SVf " %p %p %p", - SVfARG(sv), (void*)io, (void*)ifp, (void*)ofp); + IO * const io = GvIOn(MUTABLE_GV(SvRV(sv))); + PerlIO * const ifp = IoIFP(io); + PerlIO * const ofp = IoOFP(io); + Perl_warn(aTHX_ "set %" SVf " %p %p %p", + SVfARG(sv), (void*)io, (void*)ifp, (void*)ofp); } return 0; } @@ -775,11 +775,11 @@ perlio_mg_get(pTHX_ SV *sv, MAGIC *mg) { if (SvROK(sv)) { - IO * const io = GvIOn(MUTABLE_GV(SvRV(sv))); - PerlIO * const ifp = IoIFP(io); - PerlIO * const ofp = IoOFP(io); - Perl_warn(aTHX_ "get %" SVf " %p %p %p", - SVfARG(sv), (void*)io, (void*)ifp, (void*)ofp); + IO * const io = GvIOn(MUTABLE_GV(SvRV(sv))); + PerlIO * const ifp = IoIFP(io); + PerlIO * const ofp = IoOFP(io); + Perl_warn(aTHX_ "get %" SVf " %p %p %p", + SVfARG(sv), (void*)io, (void*)ifp, (void*)ofp); } return 0; } @@ -822,16 +822,16 @@ mg_magical(sv); Perl_warn(aTHX_ "attrib %" SVf, SVfARG(sv)); for (i = 2; i < items; i++) { - STRLEN len; - const char * const name = SvPV_const(ST(i), len); - SV * const layer = PerlIO_find_layer(aTHX_ name, len, 1); - if (layer) { - av_push(av, SvREFCNT_inc_simple_NN(layer)); - } - else { - ST(count) = ST(i); - count++; - } + STRLEN len; + const char * const name = SvPV_const(ST(i), len); + SV * const layer = PerlIO_find_layer(aTHX_ name, len, 1); + if (layer) { + av_push(av, SvREFCNT_inc_simple_NN(layer)); + } + else { + ST(count) = ST(i); + count++; + } } SvREFCNT_dec(av); XSRETURN(count); @@ -866,16 +866,16 @@ { dXSARGS; if (items < 2) - Perl_croak(aTHX_ "Usage class->find(name[,load])"); + Perl_croak(aTHX_ "Usage class->find(name[,load])"); else { - STRLEN len; - const char * const name = SvPV_const(ST(1), len); - const bool load = (items > 2) ? SvTRUE_NN(ST(2)) : 0; - PerlIO_funcs * const layer = PerlIO_find_layer(aTHX_ name, len, load); - ST(0) = - (layer) ? sv_2mortal(PerlIO_tab_sv(aTHX_ layer)) : - &PL_sv_undef; - XSRETURN(1); + STRLEN len; + const char * const name = SvPV_const(ST(1), len); + const bool load = (items > 2) ? SvTRUE_NN(ST(2)) : 0; + PerlIO_funcs * const layer = PerlIO_find_layer(aTHX_ name, len, load); + ST(0) = + (layer) ? sv_2mortal(PerlIO_tab_sv(aTHX_ layer)) : + &PL_sv_undef; + XSRETURN(1); } } @@ -883,7 +883,7 @@ PerlIO_define_layer(pTHX_ PerlIO_funcs *tab) { if (!PL_known_layers) - PL_known_layers = PerlIO_list_alloc(aTHX); + PL_known_layers = PerlIO_list_alloc(aTHX); PerlIO_list_push(aTHX_ PL_known_layers, tab, NULL); DEBUG_i( PerlIO_debug("define %s %p\n", tab->name, (void*)tab) ); } @@ -892,88 +892,88 @@ PerlIO_parse_layers(pTHX_ PerlIO_list_t *av, const char *names) { if (names) { - const char *s = names; - while (*s) { - while (isSPACE(*s) || *s == ':') - s++; - if (*s) { - STRLEN llen = 0; - const char *e = s; - const char *as = NULL; - STRLEN alen = 0; - if (!isIDFIRST(*s)) { - /* - * Message is consistent with how attribute lists are - * passed. Even though this means "foo : : bar" is - * seen as an invalid separator character. - */ - const char q = ((*s == '\'') ? '"' : '\''); - Perl_ck_warner(aTHX_ packWARN(WARN_LAYER), - "Invalid separator character %c%c%c in PerlIO layer specification %s", - q, *s, q, s); - SETERRNO(EINVAL, LIB_INVARG); - return -1; - } - do { - e++; - } while (isWORDCHAR(*e)); - llen = e - s; - if (*e == '(') { - int nesting = 1; - as = ++e; - while (nesting) { - switch (*e++) { - case ')': - if (--nesting == 0) - alen = (e - 1) - as; - break; - case '(': - ++nesting; - break; - case '\\': - /* - * It's a nul terminated string, not allowed - * to \ the terminating null. Anything other - * character is passed over. - */ - if (*e++) { - break; - } + const char *s = names; + while (*s) { + while (isSPACE(*s) || *s == ':') + s++; + if (*s) { + STRLEN llen = 0; + const char *e = s; + const char *as = NULL; + STRLEN alen = 0; + if (!isIDFIRST(*s)) { + /* + * Message is consistent with how attribute lists are + * passed. Even though this means "foo : : bar" is + * seen as an invalid separator character. + */ + const char q = ((*s == '\'') ? '"' : '\''); + Perl_ck_warner(aTHX_ packWARN(WARN_LAYER), + "Invalid separator character %c%c%c in PerlIO layer specification %s", + q, *s, q, s); + SETERRNO(EINVAL, LIB_INVARG); + return -1; + } + do { + e++; + } while (isWORDCHAR(*e)); + llen = e - s; + if (*e == '(') { + int nesting = 1; + as = ++e; + while (nesting) { + switch (*e++) { + case ')': + if (--nesting == 0) + alen = (e - 1) - as; + break; + case '(': + ++nesting; + break; + case '\\': + /* + * It's a nul terminated string, not allowed + * to \ the terminating null. Anything other + * character is passed over. + */ + if (*e++) { + break; + } /* Fall through */ - case '\0': - e--; - Perl_ck_warner(aTHX_ packWARN(WARN_LAYER), - "Argument list not closed for PerlIO layer \"%.*s\"", - (int) (e - s), s); - return -1; - default: - /* - * boring. - */ - break; - } - } - } - if (e > s) { - PerlIO_funcs * const layer = - PerlIO_find_layer(aTHX_ s, llen, 1); - if (layer) { - SV *arg = NULL; - if (as) - arg = newSVpvn(as, alen); - PerlIO_list_push(aTHX_ av, layer, - (arg) ? arg : &PL_sv_undef); - SvREFCNT_dec(arg); - } - else { - Perl_ck_warner(aTHX_ packWARN(WARN_LAYER), "Unknown PerlIO layer \"%.*s\"", - (int) llen, s); - return -1; - } - } - s = e; - } - } + case '\0': + e--; + Perl_ck_warner(aTHX_ packWARN(WARN_LAYER), + "Argument list not closed for PerlIO layer \"%.*s\"", + (int) (e - s), s); + return -1; + default: + /* + * boring. + */ + break; + } + } + } + if (e > s) { + PerlIO_funcs * const layer = + PerlIO_find_layer(aTHX_ s, llen, 1); + if (layer) { + SV *arg = NULL; + if (as) + arg = newSVpvn(as, alen); + PerlIO_list_push(aTHX_ av, layer, + (arg) ? arg : &PL_sv_undef); + SvREFCNT_dec(arg); + } + else { + Perl_ck_warner(aTHX_ packWARN(WARN_LAYER), "Unknown PerlIO layer \"%.*s\"", + (int) llen, s); + return -1; + } + } + s = e; + } + } } return 0; } @@ -986,7 +986,7 @@ tab = &PerlIO_crlf; #else if (PerlIO_stdio.Set_ptrcnt) - tab = &PerlIO_stdio; + tab = &PerlIO_stdio; #endif DEBUG_i( PerlIO_debug("Pushing %s\n", tab->name) ); PerlIO_list_push(aTHX_ av, (PerlIO_funcs *)tab, &PL_sv_undef); @@ -1002,12 +1002,12 @@ PerlIO_layer_fetch(pTHX_ PerlIO_list_t *av, IV n, PerlIO_funcs *def) { if (n >= 0 && n < av->cur) { - DEBUG_i( PerlIO_debug("Layer %" IVdf " is %s\n", n, + DEBUG_i( PerlIO_debug("Layer %" IVdf " is %s\n", n, av->array[n].funcs->name) ); - return av->array[n].funcs; + return av->array[n].funcs; } if (!def) - Perl_croak(aTHX_ "panic: PerlIO layer array corrupt"); + Perl_croak(aTHX_ "panic: PerlIO layer array corrupt"); return def; } @@ -1018,9 +1018,9 @@ PERL_UNUSED_ARG(arg); PERL_UNUSED_ARG(tab); if (PerlIOValid(f)) { - PerlIO_flush(f); - PerlIO_pop(aTHX_ f); - return 0; + PerlIO_flush(f); + PerlIO_pop(aTHX_ f); + return 0; } return -1; } @@ -1060,34 +1060,34 @@ PerlIO_default_layers(pTHX) { if (!PL_def_layerlist) { - const char * const s = TAINTING_get ? NULL : PerlEnv_getenv("PERLIO"); - PERLIO_FUNCS_DECL(*osLayer) = &PerlIO_unix; - PL_def_layerlist = PerlIO_list_alloc(aTHX); - PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_unix)); + const char * const s = TAINTING_get ? NULL : PerlEnv_getenv("PERLIO"); + PERLIO_FUNCS_DECL(*osLayer) = &PerlIO_unix; + PL_def_layerlist = PerlIO_list_alloc(aTHX); + PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_unix)); #if defined(WIN32) - PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_win32)); -#if 0 - osLayer = &PerlIO_win32; -#endif + PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_win32)); +# if 0 + osLayer = &PerlIO_win32; +# endif #endif - PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_raw)); - PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_perlio)); - PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_stdio)); - PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_crlf)); - PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_utf8)); - PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_remove)); - PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_byte)); - PerlIO_list_push(aTHX_ PL_def_layerlist, (PerlIO_funcs *)osLayer, + PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_raw)); + PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_perlio)); + PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_stdio)); + PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_crlf)); + PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_utf8)); + PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_remove)); + PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_byte)); + PerlIO_list_push(aTHX_ PL_def_layerlist, (PerlIO_funcs *)osLayer, &PL_sv_undef); - if (s) { - PerlIO_parse_layers(aTHX_ PL_def_layerlist, s); - } - else { - PerlIO_default_buffer(aTHX_ PL_def_layerlist); - } + if (s) { + PerlIO_parse_layers(aTHX_ PL_def_layerlist, s); + } + else { + PerlIO_default_buffer(aTHX_ PL_def_layerlist); + } } if (PL_def_layerlist->cur < 2) { - PerlIO_default_buffer(aTHX_ PL_def_layerlist); + PerlIO_default_buffer(aTHX_ PL_def_layerlist); } return PL_def_layerlist; } @@ -1097,7 +1097,7 @@ { #ifdef USE_ATTRIBUTES_FOR_PERLIO newXS("io::MODIFY_SCALAR_ATTRIBUTES", XS_io_MODIFY_SCALAR_ATTRIBUTES, - __FILE__); + __FILE__); #endif newXS("PerlIO::Layer::find", XS_PerlIO__Layer__find, __FILE__); newXS("PerlIO::Layer::NoWarnings", XS_PerlIO__Layer__NoWarnings, __FILE__); @@ -1108,7 +1108,7 @@ { PerlIO_list_t * const av = PerlIO_default_layers(aTHX); if (n < 0) - n += av->cur; + n += av->cur; return PerlIO_layer_fetch(aTHX_ av, n, PERLIO_FUNCS_CAST(&PerlIO_stdio)); } @@ -1119,10 +1119,10 @@ PerlIO_stdstreams(pTHX) { if (!PL_perlio) { - PerlIO_init_table(aTHX); - PerlIO_fdopen(0, "Ir" PERLIO_STDTEXT); - PerlIO_fdopen(1, "Iw" PERLIO_STDTEXT); - PerlIO_fdopen(2, "Iw" PERLIO_STDTEXT); + PerlIO_init_table(aTHX); + PerlIO_fdopen(0, "Ir" PERLIO_STDTEXT); + PerlIO_fdopen(1, "Iw" PERLIO_STDTEXT); + PerlIO_fdopen(2, "Iw" PERLIO_STDTEXT); } } @@ -1131,68 +1131,68 @@ { VERIFY_HEAD(f); if (tab->fsize != sizeof(PerlIO_funcs)) { - Perl_croak( aTHX_ - "%s (%" UVuf ") does not match %s (%" UVuf ")", - "PerlIO layer function table size", (UV)tab->fsize, - "size expected by this perl", (UV)sizeof(PerlIO_funcs) ); + Perl_croak( aTHX_ + "%s (%" UVuf ") does not match %s (%" UVuf ")", + "PerlIO layer function table size", (UV)tab->fsize, + "size expected by this perl", (UV)sizeof(PerlIO_funcs) ); } if (tab->size) { - PerlIOl *l; - if (tab->size < sizeof(PerlIOl)) { - Perl_croak( aTHX_ - "%s (%" UVuf ") smaller than %s (%" UVuf ")", - "PerlIO layer instance size", (UV)tab->size, - "size expected by this perl", (UV)sizeof(PerlIOl) ); - } - /* Real layer with a data area */ - if (f) { - char *temp; - Newxz(temp, tab->size, char); - l = (PerlIOl*)temp; - if (l) { - l->next = *f; - l->tab = (PerlIO_funcs*) tab; - l->head = ((PerlIOl*)f)->head; - *f = l; - DEBUG_i( PerlIO_debug("PerlIO_push f=%p %s %s %p\n", + PerlIOl *l; + if (tab->size < sizeof(PerlIOl)) { + Perl_croak( aTHX_ + "%s (%" UVuf ") smaller than %s (%" UVuf ")", + "PerlIO layer instance size", (UV)tab->size, + "size expected by this perl", (UV)sizeof(PerlIOl) ); + } + /* Real layer with a data area */ + if (f) { + char *temp; + Newxz(temp, tab->size, char); + l = (PerlIOl*)temp; + if (l) { + l->next = *f; + l->tab = (PerlIO_funcs*) tab; + l->head = ((PerlIOl*)f)->head; + *f = l; + DEBUG_i( PerlIO_debug("PerlIO_push f=%p %s %s %p\n", (void*)f, tab->name, (mode) ? mode : "(Null)", (void*)arg) ); - if (*l->tab->Pushed && - (*l->tab->Pushed) - (aTHX_ f, mode, arg, (PerlIO_funcs*) tab) != 0) { - PerlIO_pop(aTHX_ f); - return NULL; - } - } - else - return NULL; - } + if (*l->tab->Pushed && + (*l->tab->Pushed) + (aTHX_ f, mode, arg, (PerlIO_funcs*) tab) != 0) { + PerlIO_pop(aTHX_ f); + return NULL; + } + } + else + return NULL; + } } else if (f) { - /* Pseudo-layer where push does its own stack adjust */ - DEBUG_i( PerlIO_debug("PerlIO_push f=%p %s %s %p\n", (void*)f, tab->name, + /* Pseudo-layer where push does its own stack adjust */ + DEBUG_i( PerlIO_debug("PerlIO_push f=%p %s %s %p\n", (void*)f, tab->name, (mode) ? mode : "(Null)", (void*)arg) ); - if (tab->Pushed && - (*tab->Pushed) (aTHX_ f, mode, arg, (PerlIO_funcs*) tab) != 0) { - return NULL; - } + if (tab->Pushed && + (*tab->Pushed) (aTHX_ f, mode, arg, (PerlIO_funcs*) tab) != 0) { + return NULL; + } } return f; } PerlIO * PerlIOBase_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers, - IV n, const char *mode, int fd, int imode, int perm, - PerlIO *old, int narg, SV **args) + IV n, const char *mode, int fd, int imode, int perm, + PerlIO *old, int narg, SV **args) { PerlIO_funcs * const tab = PerlIO_layer_fetch(aTHX_ layers, n - 1, PerlIO_default_layer(aTHX_ 0)); if (tab && tab->Open) { - PerlIO* ret = (*tab->Open)(aTHX_ tab, layers, n - 1, mode, fd, imode, perm, old, narg, args); - if (ret && PerlIO_push(aTHX_ ret, self, mode, PerlIOArg) == NULL) { - PerlIO_close(ret); - return NULL; - } - return ret; + PerlIO* ret = (*tab->Open)(aTHX_ tab, layers, n - 1, mode, fd, imode, perm, old, narg, args); + if (ret && PerlIO_push(aTHX_ ret, self, mode, PerlIOArg) == NULL) { + PerlIO_close(ret); + return NULL; + } + return ret; } SETERRNO(EINVAL, LIB_INVARG); return NULL; @@ -1202,16 +1202,16 @@ PerlIOBase_binmode(pTHX_ PerlIO *f) { if (PerlIOValid(f)) { - /* Is layer suitable for raw stream ? */ - if (PerlIOBase(f)->tab && PerlIOBase(f)->tab->kind & PERLIO_K_RAW) { - /* Yes - turn off UTF-8-ness, to undo UTF-8 locale effects */ - PerlIOBase(f)->flags &= ~PERLIO_F_UTF8; - } - else { - /* Not suitable - pop it */ - PerlIO_pop(aTHX_ f); - } - return 0; + /* Is layer suitable for raw stream ? */ + if (PerlIOBase(f)->tab && PerlIOBase(f)->tab->kind & PERLIO_K_RAW) { + /* Yes - turn off UTF-8-ness, to undo UTF-8 locale effects */ + PerlIOBase(f)->flags &= ~PERLIO_F_UTF8; + } + else { + /* Not suitable - pop it */ + PerlIO_pop(aTHX_ f); + } + return 0; } return -1; } @@ -1224,54 +1224,54 @@ PERL_UNUSED_ARG(tab); if (PerlIOValid(f)) { - PerlIO *t; - const PerlIOl *l; - PerlIO_flush(f); - /* - * Strip all layers that are not suitable for a raw stream - */ - t = f; - while (t && (l = *t)) { - if (l->tab && l->tab->Binmode) { - /* Has a handler - normal case */ - if ((*l->tab->Binmode)(aTHX_ t) == 0) { - if (*t == l) { - /* Layer still there - move down a layer */ - t = PerlIONext(t); - } - } - else { - return -1; - } - } - else { - /* No handler - pop it */ - PerlIO_pop(aTHX_ t); - } - } - if (PerlIOValid(f)) { - DEBUG_i( PerlIO_debug(":raw f=%p :%s\n", (void*)f, + PerlIO *t; + const PerlIOl *l; + PerlIO_flush(f); + /* + * Strip all layers that are not suitable for a raw stream + */ + t = f; + while (t && (l = *t)) { + if (l->tab && l->tab->Binmode) { + /* Has a handler - normal case */ + if ((*l->tab->Binmode)(aTHX_ t) == 0) { + if (*t == l) { + /* Layer still there - move down a layer */ + t = PerlIONext(t); + } + } + else { + return -1; + } + } + else { + /* No handler - pop it */ + PerlIO_pop(aTHX_ t); + } + } + if (PerlIOValid(f)) { + DEBUG_i( PerlIO_debug(":raw f=%p :%s\n", (void*)f, PerlIOBase(f)->tab ? PerlIOBase(f)->tab->name : "(Null)") ); - return 0; - } + return 0; + } } return -1; } int PerlIO_apply_layera(pTHX_ PerlIO *f, const char *mode, - PerlIO_list_t *layers, IV n, IV max) + PerlIO_list_t *layers, IV n, IV max) { int code = 0; while (n < max) { - PerlIO_funcs * const tab = PerlIO_layer_fetch(aTHX_ layers, n, NULL); - if (tab) { - if (!PerlIO_push(aTHX_ f, tab, mode, PerlIOArg)) { - code = -1; - break; - } - } - n++; + PerlIO_funcs * const tab = PerlIO_layer_fetch(aTHX_ layers, n, NULL); + if (tab) { + if (!PerlIO_push(aTHX_ f, tab, mode, PerlIOArg)) { + code = -1; + break; + } + } + n++; } return code; } @@ -1283,12 +1283,12 @@ ENTER; save_scalar(PL_errgv); if (f && names) { - PerlIO_list_t * const layers = PerlIO_list_alloc(aTHX); - code = PerlIO_parse_layers(aTHX_ layers, names); - if (code == 0) { - code = PerlIO_apply_layera(aTHX_ f, mode, layers, 0, layers->cur); - } - PerlIO_list_free(aTHX_ layers); + PerlIO_list_t * const layers = PerlIO_list_alloc(aTHX); + code = PerlIO_parse_layers(aTHX_ layers, names); + if (code == 0) { + code = PerlIO_apply_layera(aTHX_ f, mode, layers, 0, layers->cur); + } + PerlIO_list_free(aTHX_ layers); } LEAVE; return code; @@ -1313,53 +1313,53 @@ iotype, mode, (names) ? names : "(Null)") ); if (names) { - /* Do not flush etc. if (e.g.) switching encodings. - if a pushed layer knows it needs to flush lower layers - (for example :unix which is never going to call them) - it can do the flush when it is pushed. - */ - return cBOOL(PerlIO_apply_layers(aTHX_ f, NULL, names) == 0); + /* Do not flush etc. if (e.g.) switching encodings. + if a pushed layer knows it needs to flush lower layers + (for example :unix which is never going to call them) + it can do the flush when it is pushed. + */ + return cBOOL(PerlIO_apply_layers(aTHX_ f, NULL, names) == 0); } else { - /* Fake 5.6 legacy of using this call to turn ON O_TEXT */ + /* Fake 5.6 legacy of using this call to turn ON O_TEXT */ #ifdef PERLIO_USING_CRLF - /* Legacy binmode only has meaning if O_TEXT has a value distinct from - O_BINARY so we can look for it in mode. - */ - if (!(mode & O_BINARY)) { - /* Text mode */ - /* FIXME?: Looking down the layer stack seems wrong, - but is a way of reaching past (say) an encoding layer - to flip CRLF-ness of the layer(s) below - */ - while (*f) { - /* Perhaps we should turn on bottom-most aware layer - e.g. Ilya's idea that UNIX TTY could serve - */ - if (PerlIOBase(f)->tab && - PerlIOBase(f)->tab->kind & PERLIO_K_CANCRLF) - { - if (!(PerlIOBase(f)->flags & PERLIO_F_CRLF)) { - /* Not in text mode - flush any pending stuff and flip it */ - PerlIO_flush(f); - PerlIOBase(f)->flags |= PERLIO_F_CRLF; - } - /* Only need to turn it on in one layer so we are done */ - return TRUE; - } - f = PerlIONext(f); - } - /* Not finding a CRLF aware layer presumably means we are binary - which is not what was requested - so we failed - We _could_ push :crlf layer but so could caller - */ - return FALSE; - } -#endif - /* Legacy binmode is now _defined_ as being equivalent to pushing :raw - So code that used to be here is now in PerlIORaw_pushed(). - */ - return cBOOL(PerlIO_push(aTHX_ f, PERLIO_FUNCS_CAST(&PerlIO_raw), NULL, NULL)); + /* Legacy binmode only has meaning if O_TEXT has a value distinct from + O_BINARY so we can look for it in mode. + */ + if (!(mode & O_BINARY)) { + /* Text mode */ + /* FIXME?: Looking down the layer stack seems wrong, + but is a way of reaching past (say) an encoding layer + to flip CRLF-ness of the layer(s) below + */ + while (*f) { + /* Perhaps we should turn on bottom-most aware layer + e.g. Ilya's idea that UNIX TTY could serve + */ + if (PerlIOBase(f)->tab && + PerlIOBase(f)->tab->kind & PERLIO_K_CANCRLF) + { + if (!(PerlIOBase(f)->flags & PERLIO_F_CRLF)) { + /* Not in text mode - flush any pending stuff and flip it */ + PerlIO_flush(f); + PerlIOBase(f)->flags |= PERLIO_F_CRLF; + } + /* Only need to turn it on in one layer so we are done */ + return TRUE; + } + f = PerlIONext(f); + } + /* Not finding a CRLF aware layer presumably means we are binary + which is not what was requested - so we failed + We _could_ push :crlf layer but so could caller + */ + return FALSE; + } +#endif + /* Legacy binmode is now _defined_ as being equivalent to pushing :raw + So code that used to be here is now in PerlIORaw_pushed(). + */ + return cBOOL(PerlIO_push(aTHX_ f, PERLIO_FUNCS_CAST(&PerlIO_raw), NULL, NULL)); } } @@ -1367,15 +1367,15 @@ PerlIO__close(pTHX_ PerlIO *f) { if (PerlIOValid(f)) { - PerlIO_funcs * const tab = PerlIOBase(f)->tab; - if (tab && tab->Close) - return (*tab->Close)(aTHX_ f); - else - return PerlIOBase_close(aTHX_ f); + PerlIO_funcs * const tab = PerlIOBase(f)->tab; + if (tab && tab->Close) + return (*tab->Close)(aTHX_ f); + else + return PerlIOBase_close(aTHX_ f); } else { - SETERRNO(EBADF, SS_IVCHAN); - return -1; + SETERRNO(EBADF, SS_IVCHAN); + return -1; } } @@ -1384,10 +1384,10 @@ { const int code = PerlIO__close(aTHX_ f); while (PerlIOValid(f)) { - PerlIO_pop(aTHX_ f); - if (PerlIO_lockcnt(f)) - /* we're in use; the 'pop' deferred freeing the structure */ - f = PerlIONext(f); + PerlIO_pop(aTHX_ f); + if (PerlIO_lockcnt(f)) + /* we're in use; the 'pop' deferred freeing the structure */ + f = PerlIONext(f); } return code; } @@ -1406,13 +1406,13 @@ * For any scalar type load the handler which is bundled with perl */ if (SvTYPE(sv) < SVt_PVAV && (!isGV_with_GP(sv) || SvFAKE(sv))) { - PerlIO_funcs *f = PerlIO_find_layer(aTHX_ STR_WITH_LEN("scalar"), 1); - /* This isn't supposed to happen, since PerlIO::scalar is core, - * but could happen anyway in smaller installs or with PAR */ - if (!f) - /* diag_listed_as: Unknown PerlIO layer "%s" */ - Perl_ck_warner(aTHX_ packWARN(WARN_LAYER), "Unknown PerlIO layer \"scalar\""); - return f; + PerlIO_funcs *f = PerlIO_find_layer(aTHX_ STR_WITH_LEN("scalar"), 1); + /* This isn't supposed to happen, since PerlIO::scalar is core, + * but could happen anyway in smaller installs or with PAR */ + if (!f) + /* diag_listed_as: Unknown PerlIO layer "%s" */ + Perl_ck_warner(aTHX_ packWARN(WARN_LAYER), "Unknown PerlIO layer \"scalar\""); + return f; } /* @@ -1420,156 +1420,156 @@ */ switch (SvTYPE(sv)) { case SVt_PVAV: - return PerlIO_find_layer(aTHX_ STR_WITH_LEN("Array"), 0); + return PerlIO_find_layer(aTHX_ STR_WITH_LEN("Array"), 0); case SVt_PVHV: - return PerlIO_find_layer(aTHX_ STR_WITH_LEN("Hash"), 0); + return PerlIO_find_layer(aTHX_ STR_WITH_LEN("Hash"), 0); case SVt_PVCV: - return PerlIO_find_layer(aTHX_ STR_WITH_LEN("Code"), 0); + return PerlIO_find_layer(aTHX_ STR_WITH_LEN("Code"), 0); case SVt_PVGV: - return PerlIO_find_layer(aTHX_ STR_WITH_LEN("Glob"), 0); + return PerlIO_find_layer(aTHX_ STR_WITH_LEN("Glob"), 0); default: - return NULL; + return NULL; } } PerlIO_list_t * PerlIO_resolve_layers(pTHX_ const char *layers, - const char *mode, int narg, SV **args) + const char *mode, int narg, SV **args) { PerlIO_list_t *def = PerlIO_default_layers(aTHX); int incdef = 1; if (!PL_perlio) - PerlIO_stdstreams(aTHX); + PerlIO_stdstreams(aTHX); if (narg) { - SV * const arg = *args; - /* - * If it is a reference but not an object see if we have a handler - * for it - */ - if (SvROK(arg) && !SvOBJECT(SvRV(arg))) { - PerlIO_funcs * const handler = PerlIO_layer_from_ref(aTHX_ SvRV(arg)); - if (handler) { - def = PerlIO_list_alloc(aTHX); - PerlIO_list_push(aTHX_ def, handler, &PL_sv_undef); - incdef = 0; - } - /* - * Don't fail if handler cannot be found :via(...) etc. may do - * something sensible else we will just stringfy and open - * resulting string. - */ - } + SV * const arg = *args; + /* + * If it is a reference but not an object see if we have a handler + * for it + */ + if (SvROK(arg) && !SvOBJECT(SvRV(arg))) { + PerlIO_funcs * const handler = PerlIO_layer_from_ref(aTHX_ SvRV(arg)); + if (handler) { + def = PerlIO_list_alloc(aTHX); + PerlIO_list_push(aTHX_ def, handler, &PL_sv_undef); + incdef = 0; + } + /* + * Don't fail if handler cannot be found :via(...) etc. may do + * something sensible else we will just stringfy and open + * resulting string. + */ + } } if (!layers || !*layers) - layers = Perl_PerlIO_context_layers(aTHX_ mode); + layers = Perl_PerlIO_context_layers(aTHX_ mode); if (layers && *layers) { - PerlIO_list_t *av; - if (incdef) { - av = PerlIO_clone_list(aTHX_ def, NULL); - } - else { - av = def; - } - if (PerlIO_parse_layers(aTHX_ av, layers) == 0) { - return av; - } - else { - PerlIO_list_free(aTHX_ av); - return NULL; - } + PerlIO_list_t *av; + if (incdef) { + av = PerlIO_clone_list(aTHX_ def, NULL); + } + else { + av = def; + } + if (PerlIO_parse_layers(aTHX_ av, layers) == 0) { + return av; + } + else { + PerlIO_list_free(aTHX_ av); + return NULL; + } } else { - if (incdef) - def->refcnt++; - return def; + if (incdef) + def->refcnt++; + return def; } } PerlIO * PerlIO_openn(pTHX_ const char *layers, const char *mode, int fd, - int imode, int perm, PerlIO *f, int narg, SV **args) + int imode, int perm, PerlIO *f, int narg, SV **args) { if (!f && narg == 1 && *args == &PL_sv_undef) { imode = PerlIOUnix_oflags(mode); - if (imode != -1 && (f = PerlIO_tmpfile_flags(imode))) { - if (!layers || !*layers) - layers = Perl_PerlIO_context_layers(aTHX_ mode); - if (layers && *layers) - PerlIO_apply_layers(aTHX_ f, mode, layers); - } + if (imode != -1 && (f = PerlIO_tmpfile_flags(imode))) { + if (!layers || !*layers) + layers = Perl_PerlIO_context_layers(aTHX_ mode); + if (layers && *layers) + PerlIO_apply_layers(aTHX_ f, mode, layers); + } } else { - PerlIO_list_t *layera; - IV n; - PerlIO_funcs *tab = NULL; - if (PerlIOValid(f)) { - /* - * This is "reopen" - it is not tested as perl does not use it - * yet - */ - PerlIOl *l = *f; - layera = PerlIO_list_alloc(aTHX); - while (l) { - SV *arg = NULL; - if (l->tab && l->tab->Getarg) - arg = (*l->tab->Getarg) (aTHX_ &l, NULL, 0); - PerlIO_list_push(aTHX_ layera, l->tab, - (arg) ? arg : &PL_sv_undef); - SvREFCNT_dec(arg); - l = *PerlIONext(&l); - } - } - else { - layera = PerlIO_resolve_layers(aTHX_ layers, mode, narg, args); - if (!layera) { - return NULL; - } - } - /* - * Start at "top" of layer stack - */ - n = layera->cur - 1; - while (n >= 0) { - PerlIO_funcs * const t = PerlIO_layer_fetch(aTHX_ layera, n, NULL); - if (t && t->Open) { - tab = t; - break; - } - n--; - } - if (tab) { - /* - * Found that layer 'n' can do opens - call it - */ - if (narg > 1 && !(tab->kind & PERLIO_K_MULTIARG)) { - Perl_croak(aTHX_ "More than one argument to open(,':%s')",tab->name); - } - DEBUG_i( PerlIO_debug("openn(%s,'%s','%s',%d,%x,%o,%p,%d,%p)\n", + PerlIO_list_t *layera; + IV n; + PerlIO_funcs *tab = NULL; + if (PerlIOValid(f)) { + /* + * This is "reopen" - it is not tested as perl does not use it + * yet + */ + PerlIOl *l = *f; + layera = PerlIO_list_alloc(aTHX); + while (l) { + SV *arg = NULL; + if (l->tab && l->tab->Getarg) + arg = (*l->tab->Getarg) (aTHX_ &l, NULL, 0); + PerlIO_list_push(aTHX_ layera, l->tab, + (arg) ? arg : &PL_sv_undef); + SvREFCNT_dec(arg); + l = *PerlIONext(&l); + } + } + else { + layera = PerlIO_resolve_layers(aTHX_ layers, mode, narg, args); + if (!layera) { + return NULL; + } + } + /* + * Start at "top" of layer stack + */ + n = layera->cur - 1; + while (n >= 0) { + PerlIO_funcs * const t = PerlIO_layer_fetch(aTHX_ layera, n, NULL); + if (t && t->Open) { + tab = t; + break; + } + n--; + } + if (tab) { + /* + * Found that layer 'n' can do opens - call it + */ + if (narg > 1 && !(tab->kind & PERLIO_K_MULTIARG)) { + Perl_croak(aTHX_ "More than one argument to open(,':%s')",tab->name); + } + DEBUG_i( PerlIO_debug("openn(%s,'%s','%s',%d,%x,%o,%p,%d,%p)\n", tab->name, layers ? layers : "(Null)", mode, fd, imode, perm, (void*)f, narg, (void*)args) ); - if (tab->Open) - f = (*tab->Open) (aTHX_ tab, layera, n, mode, fd, imode, perm, - f, narg, args); - else { - SETERRNO(EINVAL, LIB_INVARG); - f = NULL; - } - if (f) { - if (n + 1 < layera->cur) { - /* - * More layers above the one that we used to open - - * apply them now - */ - if (PerlIO_apply_layera(aTHX_ f, mode, layera, n + 1, layera->cur) != 0) { - /* If pushing layers fails close the file */ - PerlIO_close(f); - f = NULL; - } - } - } - } - PerlIO_list_free(aTHX_ layera); + if (tab->Open) + f = (*tab->Open) (aTHX_ tab, layera, n, mode, fd, imode, perm, + f, narg, args); + else { + SETERRNO(EINVAL, LIB_INVARG); + f = NULL; + } + if (f) { + if (n + 1 < layera->cur) { + /* + * More layers above the one that we used to open - + * apply them now + */ + if (PerlIO_apply_layera(aTHX_ f, mode, layera, n + 1, layera->cur) != 0) { + /* If pushing layers fails close the file */ + PerlIO_close(f); + f = NULL; + } + } + } + } + PerlIO_list_free(aTHX_ layera); } return f; } @@ -1615,41 +1615,41 @@ Perl_PerlIO_flush(pTHX_ PerlIO *f) { if (f) { - if (*f) { - const PerlIO_funcs *tab = PerlIOBase(f)->tab; + if (*f) { + const PerlIO_funcs *tab = PerlIOBase(f)->tab; - if (tab && tab->Flush) - return (*tab->Flush) (aTHX_ f); - else - return 0; /* If no Flush defined, silently succeed. */ - } - else { - DEBUG_i( PerlIO_debug("Cannot flush f=%p\n", (void*)f) ); - SETERRNO(EBADF, SS_IVCHAN); - return -1; - } + if (tab && tab->Flush) + return (*tab->Flush) (aTHX_ f); + else + return 0; /* If no Flush defined, silently succeed. */ + } + else { + DEBUG_i( PerlIO_debug("Cannot flush f=%p\n", (void*)f) ); + SETERRNO(EBADF, SS_IVCHAN); + return -1; + } } else { - /* - * Is it good API design to do flush-all on NULL, a potentially - * erroneous input? Maybe some magical value (PerlIO* - * PERLIO_FLUSH_ALL = (PerlIO*)-1;)? Yes, stdio does similar - * things on fflush(NULL), but should we be bound by their design - * decisions? --jhi - */ - PerlIOl **table = &PL_perlio; - PerlIOl *ff; - int code = 0; - while ((ff = *table)) { - int i; - table = (PerlIOl **) (ff++); - for (i = 1; i < PERLIO_TABLE_SIZE; i++) { - if (ff->next && PerlIO_flush(&(ff->next)) != 0) - code = -1; - ff++; - } - } - return code; + /* + * Is it good API design to do flush-all on NULL, a potentially + * erroneous input? Maybe some magical value (PerlIO* + * PERLIO_FLUSH_ALL = (PerlIO*)-1;)? Yes, stdio does similar + * things on fflush(NULL), but should we be bound by their design + * decisions? --jhi + */ + PerlIOl **table = &PL_perlio; + PerlIOl *ff; + int code = 0; + while ((ff = *table)) { + int i; + table = (PerlIOl **) (ff++); + for (i = 1; i < PERLIO_TABLE_SIZE; i++) { + if (ff->next && PerlIO_flush(&(ff->next)) != 0) + code = -1; + ff++; + } + } + return code; } } @@ -1659,16 +1659,16 @@ PerlIOl **table = &PL_perlio; PerlIOl *f; while ((f = *table)) { - int i; - table = (PerlIOl **) (f++); - for (i = 1; i < PERLIO_TABLE_SIZE; i++) { - if (f->next - && (PerlIOBase(&(f->next))-> - flags & (PERLIO_F_LINEBUF | PERLIO_F_CANWRITE)) - == (PERLIO_F_LINEBUF | PERLIO_F_CANWRITE)) - PerlIO_flush(&(f->next)); - f++; - } + int i; + table = (PerlIOl **) (f++); + for (i = 1; i < PERLIO_TABLE_SIZE; i++) { + if (f->next + && (PerlIOBase(&(f->next))-> + flags & (PERLIO_F_LINEBUF | PERLIO_F_CANWRITE)) + == (PERLIO_F_LINEBUF | PERLIO_F_CANWRITE)) + PerlIO_flush(&(f->next)); + f++; + } } } @@ -1682,9 +1682,9 @@ PerlIO_isutf8(PerlIO *f) { if (PerlIOValid(f)) - return (PerlIOBase(f)->flags & PERLIO_F_UTF8) != 0; + return (PerlIOBase(f)->flags & PERLIO_F_UTF8) != 0; else - SETERRNO(EBADF, SS_IVCHAN); + SETERRNO(EBADF, SS_IVCHAN); return -1; } @@ -1717,10 +1717,10 @@ PerlIO_has_base(PerlIO *f) { if (PerlIOValid(f)) { - const PerlIO_funcs * const tab = PerlIOBase(f)->tab; + const PerlIO_funcs * const tab = PerlIOBase(f)->tab; - if (tab) - return (tab->Get_base != NULL); + if (tab) + return (tab->Get_base != NULL); } return 0; @@ -1730,12 +1730,12 @@ PerlIO_fast_gets(PerlIO *f) { if (PerlIOValid(f)) { - if (PerlIOBase(f)->flags & PERLIO_F_FASTGETS) { - const PerlIO_funcs * const tab = PerlIOBase(f)->tab; + if (PerlIOBase(f)->flags & PERLIO_F_FASTGETS) { + const PerlIO_funcs * const tab = PerlIOBase(f)->tab; - if (tab) - return (tab->Set_ptrcnt != NULL); - } + if (tab) + return (tab->Set_ptrcnt != NULL); + } } return 0; @@ -1745,10 +1745,10 @@ PerlIO_has_cntptr(PerlIO *f) { if (PerlIOValid(f)) { - const PerlIO_funcs * const tab = PerlIOBase(f)->tab; + const PerlIO_funcs * const tab = PerlIOBase(f)->tab; - if (tab) - return (tab->Get_ptr != NULL && tab->Get_cnt != NULL); + if (tab) + return (tab->Get_ptr != NULL && tab->Get_cnt != NULL); } return 0; @@ -1758,10 +1758,10 @@ PerlIO_canset_cnt(PerlIO *f) { if (PerlIOValid(f)) { - const PerlIO_funcs * const tab = PerlIOBase(f)->tab; + const PerlIO_funcs * const tab = PerlIOBase(f)->tab; - if (tab) - return (tab->Set_ptrcnt != NULL); + if (tab) + return (tab->Set_ptrcnt != NULL); } return 0; @@ -1817,11 +1817,11 @@ PERL_UNUSED_ARG(mode); PERL_UNUSED_ARG(arg); if (PerlIOValid(f)) { - if (tab && tab->kind & PERLIO_K_UTF8) - PerlIOBase(f)->flags |= PERLIO_F_UTF8; - else - PerlIOBase(f)->flags &= ~PERLIO_F_UTF8; - return 0; + if (tab && tab->kind & PERLIO_K_UTF8) + PerlIOBase(f)->flags |= PERLIO_F_UTF8; + else + PerlIOBase(f)->flags &= ~PERLIO_F_UTF8; + return 0; } return -1; } @@ -1935,27 +1935,27 @@ { char *s = buf; if (PerlIOValid(f)) { - const IV flags = PerlIOBase(f)->flags; - if (flags & PERLIO_F_APPEND) { - *s++ = 'a'; - if (flags & PERLIO_F_CANREAD) { - *s++ = '+'; - } - } - else if (flags & PERLIO_F_CANREAD) { - *s++ = 'r'; - if (flags & PERLIO_F_CANWRITE) - *s++ = '+'; - } - else if (flags & PERLIO_F_CANWRITE) { - *s++ = 'w'; - if (flags & PERLIO_F_CANREAD) { - *s++ = '+'; - } - } + const IV flags = PerlIOBase(f)->flags; + if (flags & PERLIO_F_APPEND) { + *s++ = 'a'; + if (flags & PERLIO_F_CANREAD) { + *s++ = '+'; + } + } + else if (flags & PERLIO_F_CANREAD) { + *s++ = 'r'; + if (flags & PERLIO_F_CANWRITE) + *s++ = '+'; + } + else if (flags & PERLIO_F_CANWRITE) { + *s++ = 'w'; + if (flags & PERLIO_F_CANREAD) { + *s++ = '+'; + } + } #ifdef PERLIO_USING_CRLF - if (!(flags & PERLIO_F_CRLF)) - *s++ = 'b'; + if (!(flags & PERLIO_F_CRLF)) + *s++ = 'b'; #endif } *s = '\0'; @@ -1971,87 +1971,87 @@ PERL_UNUSED_ARG(arg); l->flags &= ~(PERLIO_F_CANREAD | PERLIO_F_CANWRITE | - PERLIO_F_TRUNCATE | PERLIO_F_APPEND); + PERLIO_F_TRUNCATE | PERLIO_F_APPEND); if (tab && tab->Set_ptrcnt != NULL) - l->flags |= PERLIO_F_FASTGETS; + l->flags |= PERLIO_F_FASTGETS; if (mode) { - if (*mode == IoTYPE_NUMERIC || *mode == IoTYPE_IMPLICIT) - mode++; - switch (*mode++) { - case 'r': - l->flags |= PERLIO_F_CANREAD; - break; - case 'a': - l->flags |= PERLIO_F_APPEND | PERLIO_F_CANWRITE; - break; - case 'w': - l->flags |= PERLIO_F_TRUNCATE | PERLIO_F_CANWRITE; - break; - default: - SETERRNO(EINVAL, LIB_INVARG); - return -1; - } + if (*mode == IoTYPE_NUMERIC || *mode == IoTYPE_IMPLICIT) + mode++; + switch (*mode++) { + case 'r': + l->flags |= PERLIO_F_CANREAD; + break; + case 'a': + l->flags |= PERLIO_F_APPEND | PERLIO_F_CANWRITE; + break; + case 'w': + l->flags |= PERLIO_F_TRUNCATE | PERLIO_F_CANWRITE; + break; + default: + SETERRNO(EINVAL, LIB_INVARG); + return -1; + } #ifdef EBCDIC - { + { /* The mode variable contains one positional parameter followed by * optional keyword parameters. The positional parameters must be * passed as lowercase characters. The keyword parameters can be * passed in mixed case. They must be separated by commas. Only one * instance of a keyword can be specified. */ - int comma = 0; - while (*mode) { - switch (*mode++) { - case '+': - if(!comma) - l->flags |= PERLIO_F_CANREAD | PERLIO_F_CANWRITE; - break; - case 'b': - if(!comma) - l->flags &= ~PERLIO_F_CRLF; - break; - case 't': - if(!comma) - l->flags |= PERLIO_F_CRLF; - break; - case ',': - comma = 1; - break; - default: - break; - } - } - } + int comma = 0; + while (*mode) { + switch (*mode++) { + case '+': + if(!comma) + l->flags |= PERLIO_F_CANREAD | PERLIO_F_CANWRITE; + break; + case 'b': + if(!comma) + l->flags &= ~PERLIO_F_CRLF; + break; + case 't': + if(!comma) + l->flags |= PERLIO_F_CRLF; + break; + case ',': + comma = 1; + break; + default: + break; + } + } + } #else - while (*mode) { - switch (*mode++) { - case '+': - l->flags |= PERLIO_F_CANREAD | PERLIO_F_CANWRITE; - break; - case 'b': - l->flags &= ~PERLIO_F_CRLF; - break; - case 't': - l->flags |= PERLIO_F_CRLF; - break; - default: - SETERRNO(EINVAL, LIB_INVARG); - return -1; - } - } + while (*mode) { + switch (*mode++) { + case '+': + l->flags |= PERLIO_F_CANREAD | PERLIO_F_CANWRITE; + break; + case 'b': + l->flags &= ~PERLIO_F_CRLF; + break; + case 't': + l->flags |= PERLIO_F_CRLF; + break; + default: + SETERRNO(EINVAL, LIB_INVARG); + return -1; + } + } #endif } else { - if (l->next) { - l->flags |= l->next->flags & - (PERLIO_F_CANREAD | PERLIO_F_CANWRITE | PERLIO_F_TRUNCATE | - PERLIO_F_APPEND); - } + if (l->next) { + l->flags |= l->next->flags & + (PERLIO_F_CANREAD | PERLIO_F_CANWRITE | PERLIO_F_TRUNCATE | + PERLIO_F_APPEND); + } } #if 0 DEBUG_i( PerlIO_debug("PerlIOBase_pushed f=%p %s %s fl=%08" UVxf " (%s)\n", - (void*)f, PerlIOBase(f)->tab->name, (omode) ? omode : "(Null)", - l->flags, PerlIO_modestr(f, temp)); + (void*)f, PerlIOBase(f)->tab->name, (omode) ? omode : "(Null)", + l->flags, PerlIO_modestr(f, temp)); ); #endif return 0; @@ -2083,34 +2083,34 @@ STDCHAR *buf = (STDCHAR *) vbuf; if (f) { if (!(PerlIOBase(f)->flags & PERLIO_F_CANREAD)) { - PerlIOBase(f)->flags |= PERLIO_F_ERROR; - SETERRNO(EBADF, SS_IVCHAN); - PerlIO_save_errno(f); - return 0; - } - while (count > 0) { - get_cnt: - { - SSize_t avail = PerlIO_get_cnt(f); - SSize_t take = 0; - if (avail > 0) - take = (((SSize_t) count >= 0) && ((SSize_t)count < avail)) ? (SSize_t)count : avail; - if (take > 0) { - STDCHAR *ptr = PerlIO_get_ptr(f); - Copy(ptr, buf, take, STDCHAR); - PerlIO_set_ptrcnt(f, ptr + take, (avail -= take)); - count -= take; - buf += take; - if (avail == 0) /* set_ptrcnt could have reset avail */ - goto get_cnt; - } - if (count > 0 && avail <= 0) { - if (PerlIO_fill(f) != 0) - break; - } - } - } - return (buf - (STDCHAR *) vbuf); + PerlIOBase(f)->flags |= PERLIO_F_ERROR; + SETERRNO(EBADF, SS_IVCHAN); + PerlIO_save_errno(f); + return 0; + } + while (count > 0) { + get_cnt: + { + SSize_t avail = PerlIO_get_cnt(f); + SSize_t take = 0; + if (avail > 0) + take = (((SSize_t) count >= 0) && ((SSize_t)count < avail)) ? (SSize_t)count : avail; + if (take > 0) { + STDCHAR *ptr = PerlIO_get_ptr(f); + Copy(ptr, buf, take, STDCHAR); + PerlIO_set_ptrcnt(f, ptr + take, (avail -= take)); + count -= take; + buf += take; + if (avail == 0) /* set_ptrcnt could have reset avail */ + goto get_cnt; + } + if (count > 0 && avail <= 0) { + if (PerlIO_fill(f) != 0) + break; + } + } + } + return (buf - (STDCHAR *) vbuf); } return 0; } @@ -2136,26 +2136,26 @@ { IV code = -1; if (PerlIOValid(f)) { - PerlIO *n = PerlIONext(f); - code = PerlIO_flush(f); - PerlIOBase(f)->flags &= - ~(PERLIO_F_CANREAD | PERLIO_F_CANWRITE | PERLIO_F_OPEN); - while (PerlIOValid(n)) { - const PerlIO_funcs * const tab = PerlIOBase(n)->tab; - if (tab && tab->Close) { - if ((*tab->Close)(aTHX_ n) != 0) - code = -1; - break; - } - else { - PerlIOBase(n)->flags &= - ~(PERLIO_F_CANREAD | PERLIO_F_CANWRITE | PERLIO_F_OPEN); - } - n = PerlIONext(n); - } + PerlIO *n = PerlIONext(f); + code = PerlIO_flush(f); + PerlIOBase(f)->flags &= + ~(PERLIO_F_CANREAD | PERLIO_F_CANWRITE | PERLIO_F_OPEN); + while (PerlIOValid(n)) { + const PerlIO_funcs * const tab = PerlIOBase(n)->tab; + if (tab && tab->Close) { + if ((*tab->Close)(aTHX_ n) != 0) + code = -1; + break; + } + else { + PerlIOBase(n)->flags &= + ~(PERLIO_F_CANREAD | PERLIO_F_CANWRITE | PERLIO_F_OPEN); + } + n = PerlIONext(n); + } } else { - SETERRNO(EBADF, SS_IVCHAN); + SETERRNO(EBADF, SS_IVCHAN); } return code; } @@ -2165,7 +2165,7 @@ { PERL_UNUSED_CONTEXT; if (PerlIOValid(f)) { - return (PerlIOBase(f)->flags & PERLIO_F_EOF) != 0; + return (PerlIOBase(f)->flags & PERLIO_F_EOF) != 0; } return 1; } @@ -2175,7 +2175,7 @@ { PERL_UNUSED_CONTEXT; if (PerlIOValid(f)) { - return (PerlIOBase(f)->flags & PERLIO_F_ERROR) != 0; + return (PerlIOBase(f)->flags & PERLIO_F_ERROR) != 0; } return 1; } @@ -2184,10 +2184,10 @@ PerlIOBase_clearerr(pTHX_ PerlIO *f) { if (PerlIOValid(f)) { - PerlIO * const n = PerlIONext(f); - PerlIOBase(f)->flags &= ~(PERLIO_F_ERROR | PERLIO_F_EOF); - if (PerlIOValid(n)) - PerlIO_clearerr(n); + PerlIO * const n = PerlIONext(f); + PerlIOBase(f)->flags &= ~(PERLIO_F_ERROR | PERLIO_F_EOF); + if (PerlIOValid(n)) + PerlIO_clearerr(n); } } @@ -2196,7 +2196,7 @@ { PERL_UNUSED_CONTEXT; if (PerlIOValid(f)) { - PerlIOBase(f)->flags |= PERLIO_F_LINEBUF; + PerlIOBase(f)->flags |= PERLIO_F_LINEBUF; } } @@ -2204,15 +2204,15 @@ PerlIO_sv_dup(pTHX_ SV *arg, CLONE_PARAMS *param) { if (!arg) - return NULL; + return NULL; #ifdef USE_ITHREADS if (param) { - arg = sv_dup(arg, param); - SvREFCNT_inc_simple_void_NN(arg); - return arg; + arg = sv_dup(arg, param); + SvREFCNT_inc_simple_void_NN(arg); + return arg; } else { - return newSVsv(arg); + return newSVsv(arg); } #else PERL_UNUSED_ARG(param); @@ -2225,26 +2225,26 @@ { PerlIO * const nexto = PerlIONext(o); if (PerlIOValid(nexto)) { - const PerlIO_funcs * const tab = PerlIOBase(nexto)->tab; - if (tab && tab->Dup) - f = (*tab->Dup)(aTHX_ f, nexto, param, flags); - else - f = PerlIOBase_dup(aTHX_ f, nexto, param, flags); + const PerlIO_funcs * const tab = PerlIOBase(nexto)->tab; + if (tab && tab->Dup) + f = (*tab->Dup)(aTHX_ f, nexto, param, flags); + else + f = PerlIOBase_dup(aTHX_ f, nexto, param, flags); } if (f) { - PerlIO_funcs * const self = PerlIOBase(o)->tab; - SV *arg = NULL; - char buf[8]; - assert(self); - DEBUG_i(PerlIO_debug("PerlIOBase_dup %s f=%p o=%p param=%p\n", + PerlIO_funcs * const self = PerlIOBase(o)->tab; + SV *arg = NULL; + char buf[8]; + assert(self); + DEBUG_i(PerlIO_debug("PerlIOBase_dup %s f=%p o=%p param=%p\n", self->name, (void*)f, (void*)o, (void*)param) ); - if (self->Getarg) - arg = (*self->Getarg)(aTHX_ o, param, flags); - f = PerlIO_push(aTHX_ f, self, PerlIO_modestr(o,buf), arg); - if (f && PerlIOBase(o)->flags & PERLIO_F_UTF8) - PerlIOBase(f)->flags |= PERLIO_F_UTF8; - SvREFCNT_dec(arg); + if (self->Getarg) + arg = (*self->Getarg)(aTHX_ o, param, flags); + f = PerlIO_push(aTHX_ f, self, PerlIO_modestr(o,buf), arg); + if (f && PerlIOBase(o)->flags & PERLIO_F_UTF8) + PerlIOBase(f)->flags |= PERLIO_F_UTF8; + SvREFCNT_dec(arg); } return f; } @@ -2256,7 +2256,6 @@ S_more_refcounted_fds(pTHX_ const int new_fd) PERL_TSA_REQUIRES(PL_perlio_mutex) { - dVAR; const int old_max = PL_perlio_fd_refcnt_size; const int new_max = 16 + (new_fd & ~15); int *new_array; @@ -2269,7 +2268,7 @@ old_max, new_fd, new_max) ); if (new_fd < old_max) { - return; + return; } assert (new_max > new_fd); @@ -2279,8 +2278,8 @@ new_array = (int*) realloc(PL_perlio_fd_refcnt, new_max * sizeof(int)); if (!new_array) { - MUTEX_UNLOCK(&PL_perlio_mutex); - croak_no_mem(); + MUTEX_UNLOCK(&PL_perlio_mutex); + croak_no_mem(); } PL_perlio_fd_refcnt_size = new_max; @@ -2306,25 +2305,24 @@ { dTHX; if (fd >= 0) { - dVAR; - MUTEX_LOCK(&PL_perlio_mutex); - if (fd >= PL_perlio_fd_refcnt_size) - S_more_refcounted_fds(aTHX_ fd); - - PL_perlio_fd_refcnt[fd]++; - if (PL_perlio_fd_refcnt[fd] <= 0) { - /* diag_listed_as: refcnt_inc: fd %d%s */ - Perl_croak(aTHX_ "refcnt_inc: fd %d: %d <= 0\n", - fd, PL_perlio_fd_refcnt[fd]); - } - DEBUG_i( PerlIO_debug("refcnt_inc: fd %d refcnt=%d\n", + MUTEX_LOCK(&PL_perlio_mutex); + if (fd >= PL_perlio_fd_refcnt_size) + S_more_refcounted_fds(aTHX_ fd); + + PL_perlio_fd_refcnt[fd]++; + if (PL_perlio_fd_refcnt[fd] <= 0) { + /* diag_listed_as: refcnt_inc: fd %d%s */ + Perl_croak(aTHX_ "refcnt_inc: fd %d: %d <= 0\n", + fd, PL_perlio_fd_refcnt[fd]); + } + DEBUG_i( PerlIO_debug("refcnt_inc: fd %d refcnt=%d\n", fd, PL_perlio_fd_refcnt[fd]) ); - MUTEX_UNLOCK(&PL_perlio_mutex); + MUTEX_UNLOCK(&PL_perlio_mutex); } else { - /* diag_listed_as: refcnt_inc: fd %d%s */ - Perl_croak(aTHX_ "refcnt_inc: fd %d < 0\n", fd); + /* diag_listed_as: refcnt_inc: fd %d%s */ + Perl_croak(aTHX_ "refcnt_inc: fd %d < 0\n", fd); } } @@ -2335,26 +2333,24 @@ if (fd >= 0) { #ifdef DEBUGGING dTHX; -#else - dVAR; #endif - MUTEX_LOCK(&PL_perlio_mutex); - if (fd >= PL_perlio_fd_refcnt_size) { - /* diag_listed_as: refcnt_dec: fd %d%s */ - Perl_croak_nocontext("refcnt_dec: fd %d >= refcnt_size %d\n", - fd, PL_perlio_fd_refcnt_size); - } - if (PL_perlio_fd_refcnt[fd] <= 0) { - /* diag_listed_as: refcnt_dec: fd %d%s */ - Perl_croak_nocontext("refcnt_dec: fd %d: %d <= 0\n", - fd, PL_perlio_fd_refcnt[fd]); - } - cnt = --PL_perlio_fd_refcnt[fd]; - DEBUG_i( PerlIO_debug("refcnt_dec: fd %d refcnt=%d\n", fd, cnt) ); - MUTEX_UNLOCK(&PL_perlio_mutex); + MUTEX_LOCK(&PL_perlio_mutex); + if (fd >= PL_perlio_fd_refcnt_size) { + /* diag_listed_as: refcnt_dec: fd %d%s */ + Perl_croak_nocontext("refcnt_dec: fd %d >= refcnt_size %d\n", + fd, PL_perlio_fd_refcnt_size); + } + if (PL_perlio_fd_refcnt[fd] <= 0) { + /* diag_listed_as: refcnt_dec: fd %d%s */ + Perl_croak_nocontext("refcnt_dec: fd %d: %d <= 0\n", + fd, PL_perlio_fd_refcnt[fd]); + } + cnt = --PL_perlio_fd_refcnt[fd]; + DEBUG_i( PerlIO_debug("refcnt_dec: fd %d refcnt=%d\n", fd, cnt) ); + MUTEX_UNLOCK(&PL_perlio_mutex); } else { - /* diag_listed_as: refcnt_dec: fd %d%s */ - Perl_croak_nocontext("refcnt_dec: fd %d < 0\n", fd); + /* diag_listed_as: refcnt_dec: fd %d%s */ + Perl_croak_nocontext("refcnt_dec: fd %d < 0\n", fd); } return cnt; } @@ -2365,23 +2361,22 @@ dTHX; int cnt = 0; if (fd >= 0) { - dVAR; - MUTEX_LOCK(&PL_perlio_mutex); - if (fd >= PL_perlio_fd_refcnt_size) { - /* diag_listed_as: refcnt: fd %d%s */ - Perl_croak(aTHX_ "refcnt: fd %d >= refcnt_size %d\n", - fd, PL_perlio_fd_refcnt_size); - } - if (PL_perlio_fd_refcnt[fd] <= 0) { - /* diag_listed_as: refcnt: fd %d%s */ - Perl_croak(aTHX_ "refcnt: fd %d: %d <= 0\n", - fd, PL_perlio_fd_refcnt[fd]); - } - cnt = PL_perlio_fd_refcnt[fd]; - MUTEX_UNLOCK(&PL_perlio_mutex); + MUTEX_LOCK(&PL_perlio_mutex); + if (fd >= PL_perlio_fd_refcnt_size) { + /* diag_listed_as: refcnt: fd %d%s */ + Perl_croak(aTHX_ "refcnt: fd %d >= refcnt_size %d\n", + fd, PL_perlio_fd_refcnt_size); + } + if (PL_perlio_fd_refcnt[fd] <= 0) { + /* diag_listed_as: refcnt: fd %d%s */ + Perl_croak(aTHX_ "refcnt: fd %d: %d <= 0\n", + fd, PL_perlio_fd_refcnt[fd]); + } + cnt = PL_perlio_fd_refcnt[fd]; + MUTEX_UNLOCK(&PL_perlio_mutex); } else { - /* diag_listed_as: refcnt: fd %d%s */ - Perl_croak(aTHX_ "refcnt: fd %d < 0\n", fd); + /* diag_listed_as: refcnt: fd %d%s */ + Perl_croak(aTHX_ "refcnt: fd %d < 0\n", fd); } return cnt; } @@ -2398,59 +2393,58 @@ /* Raise STDIN..STDERR refcount so we don't close them */ for (i=0; i < 3; i++) - PerlIOUnix_refcnt_inc(i); + PerlIOUnix_refcnt_inc(i); PerlIO_cleantable(aTHX_ &PL_perlio); /* Restore STDIN..STDERR refcount */ for (i=0; i < 3; i++) - PerlIOUnix_refcnt_dec(i); + PerlIOUnix_refcnt_dec(i); if (PL_known_layers) { - PerlIO_list_free(aTHX_ PL_known_layers); - PL_known_layers = NULL; + PerlIO_list_free(aTHX_ PL_known_layers); + PL_known_layers = NULL; } if (PL_def_layerlist) { - PerlIO_list_free(aTHX_ PL_def_layerlist); - PL_def_layerlist = NULL; + PerlIO_list_free(aTHX_ PL_def_layerlist); + PL_def_layerlist = NULL; } } void PerlIO_teardown(void) /* Call only from PERL_SYS_TERM(). */ { - dVAR; #if 0 /* XXX we can't rely on an interpreter being present at this late stage, XXX so we can't use a function like PerlLIO_write that relies on one being present (at least in win32) :-(. Disable for now. */ -#ifdef DEBUGGING +# ifdef DEBUGGING { - /* By now all filehandles should have been closed, so any - * stray (non-STD-)filehandles indicate *possible* (PerlIO) - * errors. */ + /* By now all filehandles should have been closed, so any + * stray (non-STD-)filehandles indicate *possible* (PerlIO) + * errors. */ #define PERLIO_TEARDOWN_MESSAGE_BUF_SIZE 64 #define PERLIO_TEARDOWN_MESSAGE_FD 2 - char buf[PERLIO_TEARDOWN_MESSAGE_BUF_SIZE]; - int i; - for (i = 3; i < PL_perlio_fd_refcnt_size; i++) { - if (PL_perlio_fd_refcnt[i]) { - const STRLEN len = - my_snprintf(buf, sizeof(buf), - "PerlIO_teardown: fd %d refcnt=%d\n", - i, PL_perlio_fd_refcnt[i]); - PerlLIO_write(PERLIO_TEARDOWN_MESSAGE_FD, buf, len); - } - } + char buf[PERLIO_TEARDOWN_MESSAGE_BUF_SIZE]; + int i; + for (i = 3; i < PL_perlio_fd_refcnt_size; i++) { + if (PL_perlio_fd_refcnt[i]) { + const STRLEN len = + my_snprintf(buf, sizeof(buf), + "PerlIO_teardown: fd %d refcnt=%d\n", + i, PL_perlio_fd_refcnt[i]); + PerlLIO_write(PERLIO_TEARDOWN_MESSAGE_FD, buf, len); + } + } } -#endif +# endif #endif /* Not bothering with PL_perlio_mutex since by now * all the interpreters are gone. */ if (PL_perlio_fd_refcnt_size /* Assuming initial size of zero. */ && PL_perlio_fd_refcnt) { - free(PL_perlio_fd_refcnt); /* To match realloc() in S_more_refcounted_fds(). */ - PL_perlio_fd_refcnt = NULL; - PL_perlio_fd_refcnt_size = 0; + free(PL_perlio_fd_refcnt); /* To match realloc() in S_more_refcounted_fds(). */ + PL_perlio_fd_refcnt = NULL; + PL_perlio_fd_refcnt_size = 0; } } @@ -2485,19 +2479,19 @@ PerlIO_lockcnt(f)++; PERL_ASYNC_CHECK(); if ( !(PerlIOBase(f)->flags & PERLIO_F_CLEARED) ) { - LEAVE; - return 0; + LEAVE; + return 0; } /* we've just run some perl-level code that could have done * anything, including closing the file or clearing this layer. * If so, free any lower layers that have already been * cleared, then return an error. */ while (PerlIOValid(f) && - (PerlIOBase(f)->flags & PERLIO_F_CLEARED)) + (PerlIOBase(f)->flags & PERLIO_F_CLEARED)) { - const PerlIOl *l = *f; - *f = l->next; - Safefree(l); + const PerlIOl *l = *f; + *f = l->next; + Safefree(l); } LEAVE; return 1; @@ -2508,35 +2502,35 @@ { int oflags = -1; if (*mode == IoTYPE_IMPLICIT || *mode == IoTYPE_NUMERIC) - mode++; + mode++; switch (*mode) { case 'r': - oflags = O_RDONLY; - if (*++mode == '+') { - oflags = O_RDWR; - mode++; - } - break; + oflags = O_RDONLY; + if (*++mode == '+') { + oflags = O_RDWR; + mode++; + } + break; case 'w': - oflags = O_CREAT | O_TRUNC; - if (*++mode == '+') { - oflags |= O_RDWR; - mode++; - } - else - oflags |= O_WRONLY; - break; + oflags = O_CREAT | O_TRUNC; + if (*++mode == '+') { + oflags |= O_RDWR; + mode++; + } + else + oflags |= O_WRONLY; + break; case 'a': - oflags = O_CREAT | O_APPEND; - if (*++mode == '+') { - oflags |= O_RDWR; - mode++; - } - else - oflags |= O_WRONLY; - break; + oflags = O_CREAT | O_APPEND; + if (*++mode == '+') { + oflags |= O_RDWR; + mode++; + } + else + oflags |= O_WRONLY; + break; } /* XXX TODO: PerlIO_open() test that exercises 'rb' and 'rt'. */ @@ -2548,35 +2542,35 @@ case 'b': #if O_TEXT != O_BINARY oflags |= O_BINARY; - oflags &= ~O_TEXT; + oflags &= ~O_TEXT; #endif mode++; break; case 't': #if O_TEXT != O_BINARY - oflags |= O_TEXT; - oflags &= ~O_BINARY; + oflags |= O_TEXT; + oflags &= ~O_BINARY; #endif mode++; break; default: -# if O_BINARY != 0 +#if O_BINARY != 0 /* bit-or:ing with zero O_BINARY would be useless. */ - /* - * If neither "t" nor "b" was specified, open the file - * in O_BINARY mode. + /* + * If neither "t" nor "b" was specified, open the file + * in O_BINARY mode. * * Note that if something else than the zero byte was seen * here (e.g. bogus mode "rx"), just few lines later we will * set the errno and invalidate the flags. - */ - oflags |= O_BINARY; -# endif + */ + oflags |= O_BINARY; +#endif break; } if (*mode || oflags == -1) { - SETERRNO(EINVAL, LIB_INVARG); - oflags = -1; + SETERRNO(EINVAL, LIB_INVARG); + oflags = -1; } return oflags; } @@ -2595,13 +2589,13 @@ #if defined(WIN32) Stat_t st; if (PerlLIO_fstat(fd, &st) == 0) { - if (!S_ISREG(st.st_mode)) { - DEBUG_i( PerlIO_debug("%d is not regular file\n",fd) ); - PerlIOBase(f)->flags |= PERLIO_F_NOTREG; - } - else { - DEBUG_i( PerlIO_debug("%d _is_ a regular file\n",fd) ); - } + if (!S_ISREG(st.st_mode)) { + DEBUG_i( PerlIO_debug("%d is not regular file\n",fd) ); + PerlIOBase(f)->flags |= PERLIO_F_NOTREG; + } + else { + DEBUG_i( PerlIO_debug("%d _is_ a regular file\n",fd) ); + } } #endif s->fd = fd; @@ -2615,13 +2609,13 @@ { IV code = PerlIOBase_pushed(aTHX_ f, mode, arg, tab); if (*PerlIONext(f)) { - /* We never call down so do any pending stuff now */ - PerlIO_flush(PerlIONext(f)); - /* - * XXX could (or should) we retrieve the oflags from the open file - * handle rather than believing the "mode" we are passed in? XXX - * Should the value on NULL mode be 0 or -1? - */ + /* We never call down so do any pending stuff now */ + PerlIO_flush(PerlIONext(f)); + /* + * XXX could (or should) we retrieve the oflags from the open file + * handle rather than believing the "mode" we are passed in? XXX + * Should the value on NULL mode be 0 or -1? + */ PerlIOUnix_setfd(aTHX_ f, PerlIO_fileno(PerlIONext(f)), mode ? PerlIOUnix_oflags(mode) : -1); } @@ -2638,79 +2632,79 @@ PERL_UNUSED_CONTEXT; if (PerlIOBase(f)->flags & PERLIO_F_NOTREG) { #ifdef ESPIPE - SETERRNO(ESPIPE, LIB_INVARG); + SETERRNO(ESPIPE, LIB_INVARG); #else - SETERRNO(EINVAL, LIB_INVARG); + SETERRNO(EINVAL, LIB_INVARG); #endif - return -1; + return -1; } new_loc = PerlLIO_lseek(fd, offset, whence); if (new_loc == (Off_t) - 1) - return -1; + return -1; PerlIOBase(f)->flags &= ~PERLIO_F_EOF; return 0; } PerlIO * PerlIOUnix_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers, - IV n, const char *mode, int fd, int imode, - int perm, PerlIO *f, int narg, SV **args) + IV n, const char *mode, int fd, int imode, + int perm, PerlIO *f, int narg, SV **args) { bool known_cloexec = 0; if (PerlIOValid(f)) { - if (PerlIOBase(f)->tab && PerlIOBase(f)->flags & PERLIO_F_OPEN) - (*PerlIOBase(f)->tab->Close)(aTHX_ f); + if (PerlIOBase(f)->tab && PerlIOBase(f)->flags & PERLIO_F_OPEN) + (*PerlIOBase(f)->tab->Close)(aTHX_ f); } if (narg > 0) { - if (*mode == IoTYPE_NUMERIC) - mode++; - else { - imode = PerlIOUnix_oflags(mode); + if (*mode == IoTYPE_NUMERIC) + mode++; + else { + imode = PerlIOUnix_oflags(mode); #ifdef VMS - perm = 0777; /* preserve RMS defaults, ACL inheritance, etc. */ + perm = 0777; /* preserve RMS defaults, ACL inheritance, etc. */ #else - perm = 0666; + perm = 0666; #endif - } - if (imode != -1) { + } + if (imode != -1) { STRLEN len; - const char *path = SvPV_const(*args, len); - if (!IS_SAFE_PATHNAME(path, len, "open")) + const char *path = SvPV_const(*args, len); + if (!IS_SAFE_PATHNAME(path, len, "open")) return NULL; - fd = PerlLIO_open3_cloexec(path, imode, perm); - known_cloexec = 1; - } + fd = PerlLIO_open3_cloexec(path, imode, perm); + known_cloexec = 1; + } } if (fd >= 0) { - if (known_cloexec) - setfd_inhexec_for_sysfd(fd); - else - setfd_cloexec_or_inhexec_by_sysfdness(fd); - if (*mode == IoTYPE_IMPLICIT) - mode++; - if (!f) { - f = PerlIO_allocate(aTHX); - } - if (!PerlIOValid(f)) { - if (!(f = PerlIO_push(aTHX_ f, self, mode, PerlIOArg))) { - PerlLIO_close(fd); - return NULL; - } - } + if (known_cloexec) + setfd_inhexec_for_sysfd(fd); + else + setfd_cloexec_or_inhexec_by_sysfdness(fd); + if (*mode == IoTYPE_IMPLICIT) + mode++; + if (!f) { + f = PerlIO_allocate(aTHX); + } + if (!PerlIOValid(f)) { + if (!(f = PerlIO_push(aTHX_ f, self, mode, PerlIOArg))) { + PerlLIO_close(fd); + return NULL; + } + } PerlIOUnix_setfd(aTHX_ f, fd, imode); - PerlIOBase(f)->flags |= PERLIO_F_OPEN; - if (*mode == IoTYPE_APPEND) - PerlIOUnix_seek(aTHX_ f, 0, SEEK_END); - return f; + PerlIOBase(f)->flags |= PERLIO_F_OPEN; + if (*mode == IoTYPE_APPEND) + PerlIOUnix_seek(aTHX_ f, 0, SEEK_END); + return f; } else { - if (f) { - NOOP; - /* - * FIXME: pop layers ??? - */ - } - return NULL; + if (f) { + NOOP; + /* + * FIXME: pop layers ??? + */ + } + return NULL; } } @@ -2720,17 +2714,17 @@ const PerlIOUnix * const os = PerlIOSelf(o, PerlIOUnix); int fd = os->fd; if (flags & PERLIO_DUP_FD) { - fd = PerlLIO_dup_cloexec(fd); - if (fd >= 0) - setfd_inhexec_for_sysfd(fd); + fd = PerlLIO_dup_cloexec(fd); + if (fd >= 0) + setfd_inhexec_for_sysfd(fd); } if (fd >= 0) { - f = PerlIOBase_dup(aTHX_ f, o, param, flags); - if (f) { - /* If all went well overwrite fd in dup'ed lay with the dup()'ed fd */ - PerlIOUnix_setfd(aTHX_ f, fd, os->oflags); - return f; - } + f = PerlIOBase_dup(aTHX_ f, o, param, flags); + if (f) { + /* If all went well overwrite fd in dup'ed lay with the dup()'ed fd */ + PerlIOUnix_setfd(aTHX_ f, fd, os->oflags); + return f; + } PerlLIO_close(fd); } return NULL; @@ -2742,34 +2736,30 @@ { int fd; if (PerlIO_lockcnt(f)) /* in use: abort ungracefully */ - return -1; + return -1; fd = PerlIOSelf(f, PerlIOUnix)->fd; -#ifdef PERLIO_STD_SPECIAL - if (fd == 0) - return PERLIO_STD_IN(fd, vbuf, count); -#endif if (!(PerlIOBase(f)->flags & PERLIO_F_CANREAD) || PerlIOBase(f)->flags & (PERLIO_F_EOF|PERLIO_F_ERROR)) { - return 0; + return 0; } while (1) { - const SSize_t len = PerlLIO_read(fd, vbuf, count); - if (len >= 0 || errno != EINTR) { - if (len < 0) { - if (errno != EAGAIN) { - PerlIOBase(f)->flags |= PERLIO_F_ERROR; - PerlIO_save_errno(f); - } - } - else if (len == 0 && count != 0) { - PerlIOBase(f)->flags |= PERLIO_F_EOF; - SETERRNO(0,0); - } - return len; - } - /* EINTR */ - if (PL_sig_pending && S_perlio_async_run(aTHX_ f)) - return -1; + const SSize_t len = PerlLIO_read(fd, vbuf, count); + if (len >= 0 || errno != EINTR) { + if (len < 0) { + if (errno != EAGAIN) { + PerlIOBase(f)->flags |= PERLIO_F_ERROR; + PerlIO_save_errno(f); + } + } + else if (len == 0 && count != 0) { + PerlIOBase(f)->flags |= PERLIO_F_EOF; + SETERRNO(0,0); + } + return len; + } + /* EINTR */ + if (PL_sig_pending && S_perlio_async_run(aTHX_ f)) + return -1; } NOT_REACHED; /*NOTREACHED*/ } @@ -2779,26 +2769,22 @@ { int fd; if (PerlIO_lockcnt(f)) /* in use: abort ungracefully */ - return -1; + return -1; fd = PerlIOSelf(f, PerlIOUnix)->fd; -#ifdef PERLIO_STD_SPECIAL - if (fd == 1 || fd == 2) - return PERLIO_STD_OUT(fd, vbuf, count); -#endif while (1) { - const SSize_t len = PerlLIO_write(fd, vbuf, count); - if (len >= 0 || errno != EINTR) { - if (len < 0) { - if (errno != EAGAIN) { - PerlIOBase(f)->flags |= PERLIO_F_ERROR; - PerlIO_save_errno(f); - } - } - return len; - } - /* EINTR */ - if (PL_sig_pending && S_perlio_async_run(aTHX_ f)) - return -1; + const SSize_t len = PerlLIO_write(fd, vbuf, count); + if (len >= 0 || errno != EINTR) { + if (len < 0) { + if (errno != EAGAIN) { + PerlIOBase(f)->flags |= PERLIO_F_ERROR; + PerlIO_save_errno(f); + } + } + return len; + } + /* EINTR */ + if (PL_sig_pending && S_perlio_async_run(aTHX_ f)) + return -1; } NOT_REACHED; /*NOTREACHED*/ } @@ -2819,26 +2805,26 @@ int code = 0; if (PerlIOBase(f)->flags & PERLIO_F_OPEN) { code = PerlIOBase_close(aTHX_ f); - if (PerlIOUnix_refcnt_dec(fd) > 0) { - PerlIOBase(f)->flags &= ~PERLIO_F_OPEN; - return 0; - } + if (PerlIOUnix_refcnt_dec(fd) > 0) { + PerlIOBase(f)->flags &= ~PERLIO_F_OPEN; + return 0; + } } else { - SETERRNO(EBADF,SS_IVCHAN); - return -1; + SETERRNO(EBADF,SS_IVCHAN); + return -1; } while (PerlLIO_close(fd) != 0) { - if (errno != EINTR) { - code = -1; - break; - } - /* EINTR */ - if (PL_sig_pending && S_perlio_async_run(aTHX_ f)) - return -1; + if (errno != EINTR) { + code = -1; + break; + } + /* EINTR */ + if (PL_sig_pending && S_perlio_async_run(aTHX_ f)) + return -1; } if (code == 0) { - PerlIOBase(f)->flags &= ~PERLIO_F_OPEN; + PerlIOBase(f)->flags &= ~PERLIO_F_OPEN; } return code; } @@ -2883,7 +2869,7 @@ /* perl5.8 - This ensures the last minute VMS ungetc fix is not broken by the last second glibc 2.3 fix */ -#define STDIO_BUFFER_WRITABLE +# define STDIO_BUFFER_WRITABLE #endif @@ -2898,9 +2884,9 @@ PERL_UNUSED_CONTEXT; if (PerlIOValid(f)) { - FILE * const s = PerlIOSelf(f, PerlIOStdio)->stdio; - if (s) - return PerlSIO_fileno(s); + FILE * const s = PerlIOSelf(f, PerlIOStdio)->stdio; + if (s) + return PerlSIO_fileno(s); } errno = EBADF; return -1; @@ -2911,9 +2897,9 @@ { char * const ret = tmode; if (mode) { - while (*mode) { - *tmode++ = *mode++; - } + while (*mode) { + *tmode++ = *mode++; + } } #if defined(PERLIO_USING_CRLF) || defined(__CYGWIN__) *tmode++ = 'b'; @@ -2927,25 +2913,25 @@ { PerlIO *n; if (PerlIOValid(f) && PerlIOValid(n = PerlIONext(f))) { - PerlIO_funcs * const toptab = PerlIOBase(n)->tab; + PerlIO_funcs * const toptab = PerlIOBase(n)->tab; if (toptab == tab) { - /* Top is already stdio - pop self (duplicate) and use original */ - PerlIO_pop(aTHX_ f); - return 0; - } else { - const int fd = PerlIO_fileno(n); - char tmode[8]; - FILE *stdio; - if (fd >= 0 && (stdio = PerlSIO_fdopen(fd, - mode = PerlIOStdio_mode(mode, tmode)))) { - PerlIOSelf(f, PerlIOStdio)->stdio = stdio; - /* We never call down so do any pending stuff now */ - PerlIO_flush(PerlIONext(f)); + /* Top is already stdio - pop self (duplicate) and use original */ + PerlIO_pop(aTHX_ f); + return 0; + } else { + const int fd = PerlIO_fileno(n); + char tmode[8]; + FILE *stdio; + if (fd >= 0 && (stdio = PerlSIO_fdopen(fd, + mode = PerlIOStdio_mode(mode, tmode)))) { + PerlIOSelf(f, PerlIOStdio)->stdio = stdio; + /* We never call down so do any pending stuff now */ + PerlIO_flush(PerlIONext(f)); return PerlIOBase_pushed(aTHX_ f, mode, arg, tab); - } - else { - return -1; - } + } + else { + return -1; + } } } return PerlIOBase_pushed(aTHX_ f, mode, arg, tab); @@ -2958,182 +2944,182 @@ dTHX; PerlIO *f = NULL; #ifdef EBCDIC - int rc; - char filename[FILENAME_MAX]; - fldata_t fileinfo; + int rc; + char filename[FILENAME_MAX]; + fldata_t fileinfo; #endif if (stdio) { - PerlIOStdio *s; + PerlIOStdio *s; int fd0 = fileno(stdio); if (fd0 < 0) { #ifdef EBCDIC - rc = fldata(stdio,filename,&fileinfo); - if(rc != 0){ - return NULL; - } - if(fileinfo.__dsorgHFS){ + rc = fldata(stdio,filename,&fileinfo); + if(rc != 0){ + return NULL; + } + if(fileinfo.__dsorgHFS){ return NULL; } - /*This MVS dataset , OK!*/ + /*This MVS dataset , OK!*/ #else return NULL; #endif } - if (!mode || !*mode) { - /* We need to probe to see how we can open the stream - so start with read/write and then try write and read - we dup() so that we can fclose without loosing the fd. - - Note that the errno value set by a failing fdopen - varies between stdio implementations. - */ + if (!mode || !*mode) { + /* We need to probe to see how we can open the stream + so start with read/write and then try write and read + we dup() so that we can fclose without loosing the fd. + + Note that the errno value set by a failing fdopen + varies between stdio implementations. + */ const int fd = PerlLIO_dup_cloexec(fd0); - FILE *f2; + FILE *f2; if (fd < 0) { return f; } - f2 = PerlSIO_fdopen(fd, (mode = "r+")); - if (!f2) { - f2 = PerlSIO_fdopen(fd, (mode = "w")); - } - if (!f2) { - f2 = PerlSIO_fdopen(fd, (mode = "r")); - } - if (!f2) { - /* Don't seem to be able to open */ - PerlLIO_close(fd); - return f; - } - fclose(f2); - } - if ((f = PerlIO_push(aTHX_(PerlIO_allocate(aTHX)), PERLIO_FUNCS_CAST(&PerlIO_stdio), mode, NULL))) { - s = PerlIOSelf(f, PerlIOStdio); - s->stdio = stdio; - fd0 = fileno(stdio); - if(fd0 != -1){ - PerlIOUnix_refcnt_inc(fd0); - setfd_cloexec_or_inhexec_by_sysfdness(fd0); - } + f2 = PerlSIO_fdopen(fd, (mode = "r+")); + if (!f2) { + f2 = PerlSIO_fdopen(fd, (mode = "w")); + } + if (!f2) { + f2 = PerlSIO_fdopen(fd, (mode = "r")); + } + if (!f2) { + /* Don't seem to be able to open */ + PerlLIO_close(fd); + return f; + } + fclose(f2); + } + if ((f = PerlIO_push(aTHX_(PerlIO_allocate(aTHX)), PERLIO_FUNCS_CAST(&PerlIO_stdio), mode, NULL))) { + s = PerlIOSelf(f, PerlIOStdio); + s->stdio = stdio; + fd0 = fileno(stdio); + if(fd0 != -1){ + PerlIOUnix_refcnt_inc(fd0); + setfd_cloexec_or_inhexec_by_sysfdness(fd0); + } #ifdef EBCDIC - else{ - rc = fldata(stdio,filename,&fileinfo); - if(rc != 0){ - PerlIOUnix_refcnt_inc(fd0); - } - if(fileinfo.__dsorgHFS){ - PerlIOUnix_refcnt_inc(fd0); - } - /*This MVS dataset , OK!*/ - } + else{ + rc = fldata(stdio,filename,&fileinfo); + if(rc != 0){ + PerlIOUnix_refcnt_inc(fd0); + } + if(fileinfo.__dsorgHFS){ + PerlIOUnix_refcnt_inc(fd0); + } + /*This MVS dataset , OK!*/ + } #endif - } + } } return f; } PerlIO * PerlIOStdio_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers, - IV n, const char *mode, int fd, int imode, - int perm, PerlIO *f, int narg, SV **args) + IV n, const char *mode, int fd, int imode, + int perm, PerlIO *f, int narg, SV **args) { char tmode[8]; if (PerlIOValid(f)) { STRLEN len; - const char * const path = SvPV_const(*args, len); - PerlIOStdio * const s = PerlIOSelf(f, PerlIOStdio); - FILE *stdio; - if (!IS_SAFE_PATHNAME(path, len, "open")) + const char * const path = SvPV_const(*args, len); + PerlIOStdio * const s = PerlIOSelf(f, PerlIOStdio); + FILE *stdio; + if (!IS_SAFE_PATHNAME(path, len, "open")) return NULL; - PerlIOUnix_refcnt_dec(fileno(s->stdio)); - stdio = PerlSIO_freopen(path, PerlIOStdio_mode(mode, tmode), + PerlIOUnix_refcnt_dec(fileno(s->stdio)); + stdio = PerlSIO_freopen(path, PerlIOStdio_mode(mode, tmode), s->stdio); - if (!s->stdio) - return NULL; - s->stdio = stdio; - fd = fileno(stdio); - PerlIOUnix_refcnt_inc(fd); - setfd_cloexec_or_inhexec_by_sysfdness(fd); - return f; + if (!s->stdio) + return NULL; + s->stdio = stdio; + fd = fileno(stdio); + PerlIOUnix_refcnt_inc(fd); + setfd_cloexec_or_inhexec_by_sysfdness(fd); + return f; } else { - if (narg > 0) { + if (narg > 0) { STRLEN len; - const char * const path = SvPV_const(*args, len); + const char * const path = SvPV_const(*args, len); if (!IS_SAFE_PATHNAME(path, len, "open")) return NULL; - if (*mode == IoTYPE_NUMERIC) { - mode++; - fd = PerlLIO_open3_cloexec(path, imode, perm); - } - else { - FILE *stdio; - bool appended = FALSE; + if (*mode == IoTYPE_NUMERIC) { + mode++; + fd = PerlLIO_open3_cloexec(path, imode, perm); + } + else { + FILE *stdio; + bool appended = FALSE; #ifdef __CYGWIN__ - /* Cygwin wants its 'b' early. */ - appended = TRUE; - mode = PerlIOStdio_mode(mode, tmode); -#endif - stdio = PerlSIO_fopen(path, mode); - if (stdio) { - if (!f) { - f = PerlIO_allocate(aTHX); - } - if (!appended) - mode = PerlIOStdio_mode(mode, tmode); - f = PerlIO_push(aTHX_ f, self, mode, PerlIOArg); - if (f) { - PerlIOSelf(f, PerlIOStdio)->stdio = stdio; - fd = fileno(stdio); - PerlIOUnix_refcnt_inc(fd); - setfd_cloexec_or_inhexec_by_sysfdness(fd); - } else { - PerlSIO_fclose(stdio); - } - return f; - } - else { - return NULL; - } - } - } - if (fd >= 0) { - FILE *stdio = NULL; - int init = 0; - if (*mode == IoTYPE_IMPLICIT) { - init = 1; - mode++; - } - if (init) { - switch (fd) { - case 0: - stdio = PerlSIO_stdin; - break; - case 1: - stdio = PerlSIO_stdout; - break; - case 2: - stdio = PerlSIO_stderr; - break; - } - } - else { - stdio = PerlSIO_fdopen(fd, mode = - PerlIOStdio_mode(mode, tmode)); - } - if (stdio) { - if (!f) { - f = PerlIO_allocate(aTHX); - } - if ((f = PerlIO_push(aTHX_ f, self, mode, PerlIOArg))) { - PerlIOSelf(f, PerlIOStdio)->stdio = stdio; - fd = fileno(stdio); - PerlIOUnix_refcnt_inc(fd); - setfd_cloexec_or_inhexec_by_sysfdness(fd); - } - return f; - } + /* Cygwin wants its 'b' early. */ + appended = TRUE; + mode = PerlIOStdio_mode(mode, tmode); +#endif + stdio = PerlSIO_fopen(path, mode); + if (stdio) { + if (!f) { + f = PerlIO_allocate(aTHX); + } + if (!appended) + mode = PerlIOStdio_mode(mode, tmode); + f = PerlIO_push(aTHX_ f, self, mode, PerlIOArg); + if (f) { + PerlIOSelf(f, PerlIOStdio)->stdio = stdio; + fd = fileno(stdio); + PerlIOUnix_refcnt_inc(fd); + setfd_cloexec_or_inhexec_by_sysfdness(fd); + } else { + PerlSIO_fclose(stdio); + } + return f; + } + else { + return NULL; + } + } + } + if (fd >= 0) { + FILE *stdio = NULL; + int init = 0; + if (*mode == IoTYPE_IMPLICIT) { + init = 1; + mode++; + } + if (init) { + switch (fd) { + case 0: + stdio = PerlSIO_stdin; + break; + case 1: + stdio = PerlSIO_stdout; + break; + case 2: + stdio = PerlSIO_stderr; + break; + } + } + else { + stdio = PerlSIO_fdopen(fd, mode = + PerlIOStdio_mode(mode, tmode)); + } + if (stdio) { + if (!f) { + f = PerlIO_allocate(aTHX); + } + if ((f = PerlIO_push(aTHX_ f, self, mode, PerlIOArg))) { + PerlIOSelf(f, PerlIOStdio)->stdio = stdio; + fd = fileno(stdio); + PerlIOUnix_refcnt_inc(fd); + setfd_cloexec_or_inhexec_by_sysfdness(fd); + } + return f; + } PerlLIO_close(fd); - } + } } return NULL; } @@ -3145,29 +3131,29 @@ happens, but is not how I remember it. NI-S 2001/10/16 */ if ((f = PerlIOBase_dup(aTHX_ f, o, param, flags))) { - FILE *stdio = PerlIOSelf(o, PerlIOStdio)->stdio; - const int fd = fileno(stdio); - char mode[8]; - if (flags & PERLIO_DUP_FD) { - const int dfd = PerlLIO_dup_cloexec(fileno(stdio)); - if (dfd >= 0) { - stdio = PerlSIO_fdopen(dfd, PerlIO_modestr(o,mode)); - goto set_this; - } - else { - NOOP; - /* FIXME: To avoid messy error recovery if dup fails - re-use the existing stdio as though flag was not set - */ - } - } - stdio = PerlSIO_fdopen(fd, PerlIO_modestr(o,mode)); + FILE *stdio = PerlIOSelf(o, PerlIOStdio)->stdio; + const int fd = fileno(stdio); + char mode[8]; + if (flags & PERLIO_DUP_FD) { + const int dfd = PerlLIO_dup_cloexec(fileno(stdio)); + if (dfd >= 0) { + stdio = PerlSIO_fdopen(dfd, PerlIO_modestr(o,mode)); + goto set_this; + } + else { + NOOP; + /* FIXME: To avoid messy error recovery if dup fails + re-use the existing stdio as though flag was not set + */ + } + } + stdio = PerlSIO_fdopen(fd, PerlIO_modestr(o,mode)); set_this: - PerlIOSelf(f, PerlIOStdio)->stdio = stdio; + PerlIOSelf(f, PerlIOStdio)->stdio = stdio; if(stdio) { - int fd = fileno(stdio); - PerlIOUnix_refcnt_inc(fd); - setfd_cloexec_or_inhexec_by_sysfdness(fd); + int fd = fileno(stdio); + PerlIOUnix_refcnt_inc(fd); + setfd_cloexec_or_inhexec_by_sysfdness(fd); } } return f; @@ -3181,22 +3167,22 @@ /* XXX this could use PerlIO_canset_fileno() and * PerlIO_set_fileno() support from Configure */ -# if defined(HAS_FDCLOSE) +#if defined(HAS_FDCLOSE) return fdclose(f, NULL) == 0 ? 1 : 0; -# elif defined(__UCLIBC__) +#elif defined(__UCLIBC__) /* uClibc must come before glibc because it defines __GLIBC__ as well. */ f->__filedes = -1; return 1; -# elif defined(__GLIBC__) +#elif defined(__GLIBC__) /* There may be a better way for GLIBC: - - libio.h defines a flag to not close() on cleanup + - libio.h defines a flag to not close() on cleanup */ f->_fileno = -1; return 1; -# elif defined(__sun) +#elif defined(__sun) PERL_UNUSED_ARG(f); return 0; -# elif defined(__hpux) +#elif defined(__hpux) f->__fileH = 0xff; f->__fileL = 0xff; return 1; @@ -3205,47 +3191,47 @@ [For OSF only have confirmation for Tru64 (alpha) but assume other OSFs will be similar.] */ -# elif defined(_AIX) || defined(__osf__) || defined(__irix__) +#elif defined(_AIX) || defined(__osf__) || defined(__irix__) f->_file = -1; return 1; -# elif defined(__FreeBSD__) +#elif defined(__FreeBSD__) /* There may be a better way on FreeBSD: - we could insert a dummy func in the _close function entry - f->_close = (int (*)(void *)) dummy_close; + f->_close = (int (*)(void *)) dummy_close; */ f->_file = -1; return 1; -# elif defined(__OpenBSD__) +#elif defined(__OpenBSD__) /* There may be a better way on OpenBSD: - we could insert a dummy func in the _close function entry - f->_close = (int (*)(void *)) dummy_close; + f->_close = (int (*)(void *)) dummy_close; */ f->_file = -1; return 1; -# elif defined(__EMX__) +#elif defined(__EMX__) /* f->_flags &= ~_IOOPEN; */ /* Will leak stream->_buffer */ f->_handle = -1; return 1; -# elif defined(__CYGWIN__) +#elif defined(__CYGWIN__) /* There may be a better way on CYGWIN: - we could insert a dummy func in the _close function entry - f->_close = (int (*)(void *)) dummy_close; + f->_close = (int (*)(void *)) dummy_close; */ f->_file = -1; return 1; -# elif defined(WIN32) +#elif defined(WIN32) PERLIO_FILE_file(f) = -1; return 1; -# else -#if 0 +#else +# if 0 /* Sarathy's code did this - we fall back to a dup/dup2 hack (which isn't thread safe) instead */ # error "Don't know how to set FILE.fileno on your platform" -#endif +# endif PERL_UNUSED_ARG(f); return 0; -# endif +#endif } IV @@ -3253,43 +3239,40 @@ { FILE * const stdio = PerlIOSelf(f, PerlIOStdio)->stdio; if (!stdio) { - errno = EBADF; - return -1; + errno = EBADF; + return -1; } else { const int fd = fileno(stdio); - int invalidate = 0; - IV result = 0; - int dupfd = -1; - dSAVEDERRNO; -#ifdef USE_ITHREADS - dVAR; -#endif + int invalidate = 0; + IV result = 0; + int dupfd = -1; + dSAVEDERRNO; #ifdef SOCKS5_VERSION_NAME - /* Socks lib overrides close() but stdio isn't linked to - that library (though we are) - so we must call close() - on sockets on stdio's behalf. - */ - int optval; - Sock_size_t optlen = sizeof(int); - if (getsockopt(fd, SOL_SOCKET, SO_TYPE, (void *) &optval, &optlen) == 0) - invalidate = 1; -#endif - /* Test for -1, as *BSD stdio (at least) on fclose sets the FILE* such - that a subsequent fileno() on it returns -1. Don't want to croak() - from within PerlIOUnix_refcnt_dec() if some buggy caller code is - trying to close an already closed handle which somehow it still has - a reference to. (via.xs, I'm looking at you). */ - if (fd != -1 && PerlIOUnix_refcnt_dec(fd) > 0) { - /* File descriptor still in use */ - invalidate = 1; - } - if (invalidate) { - /* For STD* handles, don't close stdio, since we shared the FILE *, too. */ - if (stdio == stdin) /* Some stdios are buggy fflush-ing inputs */ - return 0; - if (stdio == stdout || stdio == stderr) - return PerlIO_flush(f); + /* Socks lib overrides close() but stdio isn't linked to + that library (though we are) - so we must call close() + on sockets on stdio's behalf. + */ + int optval; + Sock_size_t optlen = sizeof(int); + if (getsockopt(fd, SOL_SOCKET, SO_TYPE, (void *) &optval, &optlen) == 0) + invalidate = 1; +#endif + /* Test for -1, as *BSD stdio (at least) on fclose sets the FILE* such + that a subsequent fileno() on it returns -1. Don't want to croak() + from within PerlIOUnix_refcnt_dec() if some buggy caller code is + trying to close an already closed handle which somehow it still has + a reference to. (via.xs, I'm looking at you). */ + if (fd != -1 && PerlIOUnix_refcnt_dec(fd) > 0) { + /* File descriptor still in use */ + invalidate = 1; + } + if (invalidate) { + /* For STD* handles, don't close stdio, since we shared the FILE *, too. */ + if (stdio == stdin) /* Some stdios are buggy fflush-ing inputs */ + return 0; + if (stdio == stdout || stdio == stderr) + return PerlIO_flush(f); } MUTEX_LOCK(&PL_perlio_mutex); /* Right. We need a mutex here because for a brief while we @@ -3309,46 +3292,46 @@ Except that correctness trumps speed. Advice from klortho #11912. */ - if (invalidate) { + if (invalidate) { /* Tricky - must fclose(stdio) to free memory but not close(fd) - Use Sarathy's trick from maint-5.6 to invalidate the - fileno slot of the FILE * - */ - result = PerlIO_flush(f); - SAVE_ERRNO; - invalidate = PerlIOStdio_invalidate_fileno(aTHX_ stdio); - if (!invalidate) { - dupfd = PerlLIO_dup_cloexec(fd); + Use Sarathy's trick from maint-5.6 to invalidate the + fileno slot of the FILE * + */ + result = PerlIO_flush(f); + SAVE_ERRNO; + invalidate = PerlIOStdio_invalidate_fileno(aTHX_ stdio); + if (!invalidate) { + dupfd = PerlLIO_dup_cloexec(fd); #ifdef USE_ITHREADS - if (dupfd < 0) { - /* Oh cXap. This isn't going to go well. Not sure if we can - recover from here, or if closing this particular FILE * - is a good idea now. */ - } -#endif - } - } else { - SAVE_ERRNO; /* This is here only to silence compiler warnings */ - } + if (dupfd < 0) { + /* Oh cXap. This isn't going to go well. Not sure if we can + recover from here, or if closing this particular FILE * + is a good idea now. */ + } +#endif + } + } else { + SAVE_ERRNO; /* This is here only to silence compiler warnings */ + } result = PerlSIO_fclose(stdio); - /* We treat error from stdio as success if we invalidated - errno may NOT be expected EBADF - */ - if (invalidate && result != 0) { - RESTORE_ERRNO; - result = 0; - } + /* We treat error from stdio as success if we invalidated + errno may NOT be expected EBADF + */ + if (invalidate && result != 0) { + RESTORE_ERRNO; + result = 0; + } #ifdef SOCKS5_VERSION_NAME - /* in SOCKS' case, let close() determine return value */ - result = close(fd); + /* in SOCKS' case, let close() determine return value */ + result = close(fd); #endif - if (dupfd >= 0) { - PerlLIO_dup2_cloexec(dupfd, fd); - setfd_inhexec_for_sysfd(fd); - PerlLIO_close(dupfd); - } + if (dupfd >= 0) { + PerlLIO_dup2_cloexec(dupfd, fd); + setfd_inhexec_for_sysfd(fd); + PerlLIO_close(dupfd); + } MUTEX_UNLOCK(&PL_perlio_mutex); - return result; + return result; } } @@ -3358,30 +3341,30 @@ FILE * s; SSize_t got = 0; if (PerlIO_lockcnt(f)) /* in use: abort ungracefully */ - return -1; + return -1; s = PerlIOSelf(f, PerlIOStdio)->stdio; for (;;) { - if (count == 1) { - STDCHAR *buf = (STDCHAR *) vbuf; - /* - * Perl is expecting PerlIO_getc() to fill the buffer Linux's - * stdio does not do that for fread() - */ - const int ch = PerlSIO_fgetc(s); - if (ch != EOF) { - *buf = ch; - got = 1; - } - } - else - got = PerlSIO_fread(vbuf, 1, count, s); - if (got == 0 && PerlSIO_ferror(s)) - got = -1; - if (got >= 0 || errno != EINTR) - break; - if (PL_sig_pending && S_perlio_async_run(aTHX_ f)) - return -1; - SETERRNO(0,0); /* just in case */ + if (count == 1) { + STDCHAR *buf = (STDCHAR *) vbuf; + /* + * Perl is expecting PerlIO_getc() to fill the buffer Linux's + * stdio does not do that for fread() + */ + const int ch = PerlSIO_fgetc(s); + if (ch != EOF) { + *buf = ch; + got = 1; + } + } + else + got = PerlSIO_fread(vbuf, 1, count, s); + if (got == 0 && PerlSIO_ferror(s)) + got = -1; + if (got >= 0 || errno != EINTR) + break; + if (PL_sig_pending && S_perlio_async_run(aTHX_ f)) + return -1; + SETERRNO(0,0); /* just in case */ } #ifdef __sgi /* Under some circumstances IRIX stdio fgetc() and fread() @@ -3400,52 +3383,52 @@ #ifdef STDIO_BUFFER_WRITABLE if (PerlIO_fast_gets(f) && PerlIO_has_base(f)) { - STDCHAR *buf = ((STDCHAR *) vbuf) + count; - STDCHAR *base = PerlIO_get_base(f); - SSize_t cnt = PerlIO_get_cnt(f); - STDCHAR *ptr = PerlIO_get_ptr(f); - SSize_t avail = ptr - base; - if (avail > 0) { - if (avail > count) { - avail = count; - } - ptr -= avail; - Move(buf-avail,ptr,avail,STDCHAR); - count -= avail; - unread += avail; - PerlIO_set_ptrcnt(f,ptr,cnt+avail); - if (PerlSIO_feof(s) && unread >= 0) - PerlSIO_clearerr(s); - } + STDCHAR *buf = ((STDCHAR *) vbuf) + count; + STDCHAR *base = PerlIO_get_base(f); + SSize_t cnt = PerlIO_get_cnt(f); + STDCHAR *ptr = PerlIO_get_ptr(f); + SSize_t avail = ptr - base; + if (avail > 0) { + if (avail > count) { + avail = count; + } + ptr -= avail; + Move(buf-avail,ptr,avail,STDCHAR); + count -= avail; + unread += avail; + PerlIO_set_ptrcnt(f,ptr,cnt+avail); + if (PerlSIO_feof(s) && unread >= 0) + PerlSIO_clearerr(s); + } } else #endif if (PerlIO_has_cntptr(f)) { - /* We can get pointer to buffer but not its base - Do ungetc() but check chars are ending up in the - buffer - */ - STDCHAR *eptr = (STDCHAR*)PerlSIO_get_ptr(s); - STDCHAR *buf = ((STDCHAR *) vbuf) + count; - while (count > 0) { - const int ch = *--buf & 0xFF; - if (ungetc(ch,s) != ch) { - /* ungetc did not work */ - break; - } - if ((STDCHAR*)PerlSIO_get_ptr(s) != --eptr || ((*eptr & 0xFF) != ch)) { - /* Did not change pointer as expected */ - if (fgetc(s) != EOF) /* get char back again */ + /* We can get pointer to buffer but not its base + Do ungetc() but check chars are ending up in the + buffer + */ + STDCHAR *eptr = (STDCHAR*)PerlSIO_get_ptr(s); + STDCHAR *buf = ((STDCHAR *) vbuf) + count; + while (count > 0) { + const int ch = *--buf & 0xFF; + if (ungetc(ch,s) != ch) { + /* ungetc did not work */ + break; + } + if ((STDCHAR*)PerlSIO_get_ptr(s) != --eptr || ((*eptr & 0xFF) != ch)) { + /* Did not change pointer as expected */ + if (fgetc(s) != EOF) /* get char back again */ break; - } - /* It worked ! */ - count--; - unread++; - } + } + /* It worked ! */ + count--; + unread++; + } } if (count > 0) { - unread += PerlIOBase_unread(aTHX_ f, vbuf, count); + unread += PerlIOBase_unread(aTHX_ f, vbuf, count); } return unread; } @@ -3455,15 +3438,15 @@ { SSize_t got; if (PerlIO_lockcnt(f)) /* in use: abort ungracefully */ - return -1; + return -1; for (;;) { - got = PerlSIO_fwrite(vbuf, 1, count, - PerlIOSelf(f, PerlIOStdio)->stdio); - if (got >= 0 || errno != EINTR) - break; - if (PL_sig_pending && S_perlio_async_run(aTHX_ f)) - return -1; - SETERRNO(0,0); /* just in case */ + got = PerlSIO_fwrite(vbuf, 1, count, + PerlIOSelf(f, PerlIOStdio)->stdio); + if (got >= 0 || errno != EINTR) + break; + if (PL_sig_pending && S_perlio_async_run(aTHX_ f)) + return -1; + SETERRNO(0,0); /* just in case */ } return got; } @@ -3493,23 +3476,23 @@ PERL_UNUSED_CONTEXT; if (PerlIOBase(f)->flags & PERLIO_F_CANWRITE) { - return PerlSIO_fflush(stdio); + return PerlSIO_fflush(stdio); } else { - NOOP; + NOOP; #if 0 - /* - * FIXME: This discards ungetc() and pre-read stuff which is not - * right if this is just a "sync" from a layer above Suspect right - * design is to do _this_ but not have layer above flush this - * layer read-to-read - */ - /* - * Not writeable - sync by attempting a seek - */ - dSAVE_ERRNO; - if (PerlSIO_fseek(stdio, (Off_t) 0, SEEK_CUR) != 0) - RESTORE_ERRNO; + /* + * FIXME: This discards ungetc() and pre-read stuff which is not + * right if this is just a "sync" from a layer above Suspect right + * design is to do _this_ but not have layer above flush this + * layer read-to-read + */ + /* + * Not writeable - sync by attempting a seek + */ + dSAVE_ERRNO; + if (PerlSIO_fseek(stdio, (Off_t) 0, SEEK_CUR) != 0) + RESTORE_ERRNO; #endif } return 0; @@ -3592,7 +3575,7 @@ FILE * const stdio = PerlIOSelf(f, PerlIOStdio)->stdio; PERL_UNUSED_CONTEXT; if (ptr != NULL) { -#ifdef STDIO_PTR_LVALUE +# ifdef STDIO_PTR_LVALUE /* This is a long-standing infamous mess. The root of the * problem is that one cannot know the signedness of char, and * more precisely the signedness of FILE._ptr. The following @@ -3605,33 +3588,33 @@ * * So let's try silencing the warning at least for gcc. */ GCC_DIAG_IGNORE_STMT(-Wpointer-sign); - PerlSIO_set_ptr(stdio, ptr); /* LHS STDCHAR* cast non-portable */ + PerlSIO_set_ptr(stdio, ptr); /* LHS STDCHAR* cast non-portable */ GCC_DIAG_RESTORE_STMT; -#ifdef STDIO_PTR_LVAL_SETS_CNT - assert(PerlSIO_get_cnt(stdio) == (cnt)); -#endif -#if (!defined(STDIO_PTR_LVAL_NOCHANGE_CNT)) - /* - * Setting ptr _does_ change cnt - we are done - */ - return; -#endif -#else /* STDIO_PTR_LVALUE */ - PerlProc_abort(); -#endif /* STDIO_PTR_LVALUE */ +# ifdef STDIO_PTR_LVAL_SETS_CNT + assert(PerlSIO_get_cnt(stdio) == (cnt)); +# endif +# if (!defined(STDIO_PTR_LVAL_NOCHANGE_CNT)) + /* + * Setting ptr _does_ change cnt - we are done + */ + return; +# endif +# else /* STDIO_PTR_LVALUE */ + PerlProc_abort(); +# endif /* STDIO_PTR_LVALUE */ } /* * Now (or only) set cnt */ -#ifdef STDIO_CNT_LVALUE +# ifdef STDIO_CNT_LVALUE PerlSIO_set_cnt(stdio, cnt); -#elif (defined(STDIO_PTR_LVALUE) && defined(STDIO_PTR_LVAL_SETS_CNT)) +# elif (defined(STDIO_PTR_LVALUE) && defined(STDIO_PTR_LVAL_SETS_CNT)) PerlSIO_set_ptr(stdio, - PerlSIO_get_ptr(stdio) + (PerlSIO_get_cnt(stdio) - - cnt)); -#else /* STDIO_PTR_LVAL_SETS_CNT */ + PerlSIO_get_ptr(stdio) + (PerlSIO_get_cnt(stdio) - + cnt)); +# else /* STDIO_PTR_LVAL_SETS_CNT */ PerlProc_abort(); -#endif /* STDIO_CNT_LVALUE */ +# endif /* STDIO_CNT_LVALUE */ } @@ -3644,52 +3627,52 @@ int c; PERL_UNUSED_CONTEXT; if (PerlIO_lockcnt(f)) /* in use: abort ungracefully */ - return -1; + return -1; stdio = PerlIOSelf(f, PerlIOStdio)->stdio; /* * fflush()ing read-only streams can cause trouble on some stdio-s */ if ((PerlIOBase(f)->flags & PERLIO_F_CANWRITE)) { - if (PerlSIO_fflush(stdio) != 0) - return EOF; + if (PerlSIO_fflush(stdio) != 0) + return EOF; } for (;;) { - c = PerlSIO_fgetc(stdio); - if (c != EOF) - break; - if (! PerlSIO_ferror(stdio) || errno != EINTR) - return EOF; - if (PL_sig_pending && S_perlio_async_run(aTHX_ f)) - return -1; - SETERRNO(0,0); + c = PerlSIO_fgetc(stdio); + if (c != EOF) + break; + if (! PerlSIO_ferror(stdio) || errno != EINTR) + return EOF; + if (PL_sig_pending && S_perlio_async_run(aTHX_ f)) + return -1; + SETERRNO(0,0); } #if (defined(STDIO_PTR_LVALUE) && (defined(STDIO_CNT_LVALUE) || defined(STDIO_PTR_LVAL_SETS_CNT))) -#ifdef STDIO_BUFFER_WRITABLE +# ifdef STDIO_BUFFER_WRITABLE if (PerlIO_fast_gets(f) && PerlIO_has_base(f)) { - /* Fake ungetc() to the real buffer in case system's ungetc - goes elsewhere - */ - STDCHAR *base = (STDCHAR*)PerlSIO_get_base(stdio); - SSize_t cnt = PerlSIO_get_cnt(stdio); - STDCHAR *ptr = (STDCHAR*)PerlSIO_get_ptr(stdio); - if (ptr == base+1) { - *--ptr = (STDCHAR) c; - PerlIOStdio_set_ptrcnt(aTHX_ f,ptr,cnt+1); - if (PerlSIO_feof(stdio)) - PerlSIO_clearerr(stdio); - return 0; - } + /* Fake ungetc() to the real buffer in case system's ungetc + goes elsewhere + */ + STDCHAR *base = (STDCHAR*)PerlSIO_get_base(stdio); + SSize_t cnt = PerlSIO_get_cnt(stdio); + STDCHAR *ptr = (STDCHAR*)PerlSIO_get_ptr(stdio); + if (ptr == base+1) { + *--ptr = (STDCHAR) c; + PerlIOStdio_set_ptrcnt(aTHX_ f,ptr,cnt+1); + if (PerlSIO_feof(stdio)) + PerlSIO_clearerr(stdio); + return 0; + } } else -#endif +# endif if (PerlIO_has_cntptr(f)) { - STDCHAR ch = c; - if (PerlIOStdio_unread(aTHX_ f,&ch,1) == 1) { - return 0; - } + STDCHAR ch = c; + if (PerlIOStdio_unread(aTHX_ f,&ch,1) == 1) { + return 0; + } } #endif @@ -3697,7 +3680,7 @@ using ungetc(). */ if (PerlSIO_ungetc(c, stdio) != c) - return EOF; + return EOF; return 0; } @@ -3758,33 +3741,33 @@ dTHX; FILE *stdio = NULL; if (PerlIOValid(f)) { - char buf[8]; + char buf[8]; int fd = PerlIO_fileno(f); if (fd < 0) { return NULL; } - PerlIO_flush(f); - if (!mode || !*mode) { - mode = PerlIO_modestr(f, buf); - } - stdio = PerlSIO_fdopen(PerlIO_fileno(f), mode); - if (stdio) { - PerlIOl *l = *f; - PerlIO *f2; - /* De-link any lower layers so new :stdio sticks */ - *f = NULL; - if ((f2 = PerlIO_push(aTHX_ f, PERLIO_FUNCS_CAST(&PerlIO_stdio), buf, NULL))) { - PerlIOStdio *s = PerlIOSelf((f = f2), PerlIOStdio); - s->stdio = stdio; - PerlIOUnix_refcnt_inc(fileno(stdio)); - /* Link previous lower layers under new one */ - *PerlIONext(f) = l; - } - else { - /* restore layers list */ - *f = l; - } - } + PerlIO_flush(f); + if (!mode || !*mode) { + mode = PerlIO_modestr(f, buf); + } + stdio = PerlSIO_fdopen(PerlIO_fileno(f), mode); + if (stdio) { + PerlIOl *l = *f; + PerlIO *f2; + /* De-link any lower layers so new :stdio sticks */ + *f = NULL; + if ((f2 = PerlIO_push(aTHX_ f, PERLIO_FUNCS_CAST(&PerlIO_stdio), buf, NULL))) { + PerlIOStdio *s = PerlIOSelf((f = f2), PerlIOStdio); + s->stdio = stdio; + PerlIOUnix_refcnt_inc(fileno(stdio)); + /* Link previous lower layers under new one */ + *PerlIONext(f) = l; + } + else { + /* restore layers list */ + *f = l; + } + } } return stdio; } @@ -3796,11 +3779,11 @@ PerlIOl *l = *f; FILE *stdio; while (l) { - if (l->tab == &PerlIO_stdio) { - PerlIOStdio *s = PerlIOSelf(&l, PerlIOStdio); - return s->stdio; - } - l = *PerlIONext(&l); + if (l->tab == &PerlIO_stdio) { + PerlIOStdio *s = PerlIOSelf(&l, PerlIOStdio); + return s->stdio; + } + l = *PerlIONext(&l); } /* Uses fallback "mode" via PerlIO_modestr() in PerlIO_exportFILE */ /* However, we're not really exporting a FILE * to someone else (who @@ -3811,9 +3794,9 @@ only one way to be consistent. */ stdio = PerlIO_exportFILE(f, NULL); if (stdio) { - const int fd = fileno(stdio); - if (fd >= 0) - PerlIOUnix_refcnt_dec(fd); + const int fd = fileno(stdio); + if (fd >= 0) + PerlIOUnix_refcnt_dec(fd); } return stdio; } @@ -3824,20 +3807,20 @@ { PerlIOl *l; while ((l = *p)) { - if (l->tab == &PerlIO_stdio) { - PerlIOStdio *s = PerlIOSelf(&l, PerlIOStdio); - if (s->stdio == f) { /* not in a loop */ - const int fd = fileno(f); - if (fd >= 0) - PerlIOUnix_refcnt_dec(fd); - { - dTHX; - PerlIO_pop(aTHX_ p); - } - return; - } - } - p = PerlIONext(p); + if (l->tab == &PerlIO_stdio) { + PerlIOStdio *s = PerlIOSelf(&l, PerlIOStdio); + if (s->stdio == f) { /* not in a loop */ + const int fd = fileno(f); + if (fd >= 0) + PerlIOUnix_refcnt_dec(fd); + { + dTHX; + PerlIO_pop(aTHX_ p); + } + return; + } + } + p = PerlIONext(p); } return; } @@ -3853,91 +3836,91 @@ PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf); const int fd = PerlIO_fileno(f); if (fd >= 0 && PerlLIO_isatty(fd)) { - PerlIOBase(f)->flags |= PERLIO_F_LINEBUF | PERLIO_F_TTY; + PerlIOBase(f)->flags |= PERLIO_F_LINEBUF | PERLIO_F_TTY; } if (*PerlIONext(f)) { - const Off_t posn = PerlIO_tell(PerlIONext(f)); - if (posn != (Off_t) - 1) { - b->posn = posn; - } + const Off_t posn = PerlIO_tell(PerlIONext(f)); + if (posn != (Off_t) - 1) { + b->posn = posn; + } } return PerlIOBase_pushed(aTHX_ f, mode, arg, tab); } PerlIO * PerlIOBuf_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers, - IV n, const char *mode, int fd, int imode, int perm, - PerlIO *f, int narg, SV **args) + IV n, const char *mode, int fd, int imode, int perm, + PerlIO *f, int narg, SV **args) { if (PerlIOValid(f)) { - PerlIO *next = PerlIONext(f); - PerlIO_funcs *tab = - PerlIO_layer_fetch(aTHX_ layers, n - 1, PerlIOBase(next)->tab); - if (tab && tab->Open) - next = - (*tab->Open)(aTHX_ tab, layers, n - 1, mode, fd, imode, perm, - next, narg, args); - if (!next || (*PerlIOBase(f)->tab->Pushed) (aTHX_ f, mode, PerlIOArg, self) != 0) { - return NULL; - } + PerlIO *next = PerlIONext(f); + PerlIO_funcs *tab = + PerlIO_layer_fetch(aTHX_ layers, n - 1, PerlIOBase(next)->tab); + if (tab && tab->Open) + next = + (*tab->Open)(aTHX_ tab, layers, n - 1, mode, fd, imode, perm, + next, narg, args); + if (!next || (*PerlIOBase(f)->tab->Pushed) (aTHX_ f, mode, PerlIOArg, self) != 0) { + return NULL; + } } else { - PerlIO_funcs *tab = PerlIO_layer_fetch(aTHX_ layers, n - 1, PerlIO_default_btm()); - int init = 0; - if (*mode == IoTYPE_IMPLICIT) { - init = 1; - /* - * mode++; - */ - } - if (tab && tab->Open) - f = (*tab->Open)(aTHX_ tab, layers, n - 1, mode, fd, imode, perm, - f, narg, args); - else - SETERRNO(EINVAL, LIB_INVARG); - if (f) { - if (PerlIO_push(aTHX_ f, self, mode, PerlIOArg) == 0) { - /* - * if push fails during open, open fails. close will pop us. - */ - PerlIO_close (f); - return NULL; - } else { - fd = PerlIO_fileno(f); - if (init && fd == 2) { - /* - * Initial stderr is unbuffered - */ - PerlIOBase(f)->flags |= PERLIO_F_UNBUF; - } + PerlIO_funcs *tab = PerlIO_layer_fetch(aTHX_ layers, n - 1, PerlIO_default_btm()); + int init = 0; + if (*mode == IoTYPE_IMPLICIT) { + init = 1; + /* + * mode++; + */ + } + if (tab && tab->Open) + f = (*tab->Open)(aTHX_ tab, layers, n - 1, mode, fd, imode, perm, + f, narg, args); + else + SETERRNO(EINVAL, LIB_INVARG); + if (f) { + if (PerlIO_push(aTHX_ f, self, mode, PerlIOArg) == 0) { + /* + * if push fails during open, open fails. close will pop us. + */ + PerlIO_close (f); + return NULL; + } else { + fd = PerlIO_fileno(f); + if (init && fd == 2) { + /* + * Initial stderr is unbuffered + */ + PerlIOBase(f)->flags |= PERLIO_F_UNBUF; + } #ifdef PERLIO_USING_CRLF # ifdef PERLIO_IS_BINMODE_FD - if (PERLIO_IS_BINMODE_FD(fd)) - PerlIO_binmode(aTHX_ f, '<'/*not used*/, O_BINARY, NULL); - else + if (PERLIO_IS_BINMODE_FD(fd)) + PerlIO_binmode(aTHX_ f, '<'/*not used*/, O_BINARY, NULL); + else # endif - /* - * do something about failing setmode()? --jhi - */ - PerlLIO_setmode(fd, O_BINARY); + /* + * do something about failing setmode()? --jhi + */ + PerlLIO_setmode(fd, O_BINARY); #endif #ifdef VMS - /* Enable line buffering with record-oriented regular files - * so we don't introduce an extraneous record boundary when - * the buffer fills up. - */ - if (PerlIOBase(f)->flags & PERLIO_F_CANWRITE) { - Stat_t st; - if (PerlLIO_fstat(fd, &st) == 0 - && S_ISREG(st.st_mode) - && (st.st_fab_rfm == FAB$C_VAR - || st.st_fab_rfm == FAB$C_VFC)) { - PerlIOBase(f)->flags |= PERLIO_F_LINEBUF; - } - } + /* Enable line buffering with record-oriented regular files + * so we don't introduce an extraneous record boundary when + * the buffer fills up. + */ + if (PerlIOBase(f)->flags & PERLIO_F_CANWRITE) { + Stat_t st; + if (PerlLIO_fstat(fd, &st) == 0 + && S_ISREG(st.st_mode) + && (st.st_fab_rfm == FAB$C_VAR + || st.st_fab_rfm == FAB$C_VFC)) { + PerlIOBase(f)->flags |= PERLIO_F_LINEBUF; + } + } #endif - } - } + } + } } return f; } @@ -3957,54 +3940,54 @@ int code = 0; PerlIO *n = PerlIONext(f); if (PerlIOBase(f)->flags & PERLIO_F_WRBUF) { - /* - * write() the buffer - */ - const STDCHAR *buf = b->buf; - const STDCHAR *p = buf; - while (p < b->ptr) { - SSize_t count = PerlIO_write(n, p, b->ptr - p); - if (count > 0) { - p += count; - } - else if (count < 0 || PerlIO_error(n)) { - PerlIOBase(f)->flags |= PERLIO_F_ERROR; - PerlIO_save_errno(f); - code = -1; - break; - } - } - b->posn += (p - buf); + /* + * write() the buffer + */ + const STDCHAR *buf = b->buf; + const STDCHAR *p = buf; + while (p < b->ptr) { + SSize_t count = PerlIO_write(n, p, b->ptr - p); + if (count > 0) { + p += count; + } + else if (count < 0 || PerlIO_error(n)) { + PerlIOBase(f)->flags |= PERLIO_F_ERROR; + PerlIO_save_errno(f); + code = -1; + break; + } + } + b->posn += (p - buf); } else if (PerlIOBase(f)->flags & PERLIO_F_RDBUF) { - STDCHAR *buf = PerlIO_get_base(f); - /* - * Note position change - */ - b->posn += (b->ptr - buf); - if (b->ptr < b->end) { - /* We did not consume all of it - try and seek downstream to - our logical position - */ - if (PerlIOValid(n) && PerlIO_seek(n, b->posn, SEEK_SET) == 0) { - /* Reload n as some layers may pop themselves on seek */ - b->posn = PerlIO_tell(n = PerlIONext(f)); - } - else { - /* Seek failed (e.g. pipe or tty). Do NOT clear buffer or pre-read - data is lost for good - so return saying "ok" having undone - the position adjust - */ - b->posn -= (b->ptr - buf); - return code; - } - } + STDCHAR *buf = PerlIO_get_base(f); + /* + * Note position change + */ + b->posn += (b->ptr - buf); + if (b->ptr < b->end) { + /* We did not consume all of it - try and seek downstream to + our logical position + */ + if (PerlIOValid(n) && PerlIO_seek(n, b->posn, SEEK_SET) == 0) { + /* Reload n as some layers may pop themselves on seek */ + b->posn = PerlIO_tell(n = PerlIONext(f)); + } + else { + /* Seek failed (e.g. pipe or tty). Do NOT clear buffer or pre-read + data is lost for good - so return saying "ok" having undone + the position adjust + */ + b->posn -= (b->ptr - buf); + return code; + } + } } b->ptr = b->end = b->buf; PerlIOBase(f)->flags &= ~(PERLIO_F_RDBUF | PERLIO_F_WRBUF); /* We check for Valid because of dubious decision to make PerlIO_flush(NULL) flush all */ if (PerlIOValid(n) && PerlIO_flush(n) != 0) - code = -1; + code = -1; return code; } @@ -4023,60 +4006,60 @@ * we would not normally be fill'ing if there was data left in anycase. */ if (PerlIO_flush(f) != 0) /* XXXX Check that its seek() succeeded?! */ - return -1; + return -1; if (PerlIOBase(f)->flags & PERLIO_F_TTY) - PerlIOBase_flush_linebuf(aTHX); + PerlIOBase_flush_linebuf(aTHX); if (!b->buf) - PerlIO_get_base(f); /* allocate via vtable */ + PerlIO_get_base(f); /* allocate via vtable */ assert(b->buf); /* The b->buf does get allocated via the vtable system. */ b->ptr = b->end = b->buf; if (!PerlIOValid(n)) { - PerlIOBase(f)->flags |= PERLIO_F_EOF; - return -1; + PerlIOBase(f)->flags |= PERLIO_F_EOF; + return -1; } if (PerlIO_fast_gets(n)) { - /* - * Layer below is also buffered. We do _NOT_ want to call its - * ->Read() because that will loop till it gets what we asked for - * which may hang on a pipe etc. Instead take anything it has to - * hand, or ask it to fill _once_. - */ - avail = PerlIO_get_cnt(n); - if (avail <= 0) { - avail = PerlIO_fill(n); - if (avail == 0) - avail = PerlIO_get_cnt(n); - else { - if (!PerlIO_error(n) && PerlIO_eof(n)) - avail = 0; - } - } - if (avail > 0) { - STDCHAR *ptr = PerlIO_get_ptr(n); - const SSize_t cnt = avail; - if (avail > (SSize_t)b->bufsiz) - avail = b->bufsiz; - Copy(ptr, b->buf, avail, STDCHAR); - PerlIO_set_ptrcnt(n, ptr + avail, cnt - avail); - } + /* + * Layer below is also buffered. We do _NOT_ want to call its + * ->Read() because that will loop till it gets what we asked for + * which may hang on a pipe etc. Instead take anything it has to + * hand, or ask it to fill _once_. + */ + avail = PerlIO_get_cnt(n); + if (avail <= 0) { + avail = PerlIO_fill(n); + if (avail == 0) + avail = PerlIO_get_cnt(n); + else { + if (!PerlIO_error(n) && PerlIO_eof(n)) + avail = 0; + } + } + if (avail > 0) { + STDCHAR *ptr = PerlIO_get_ptr(n); + const SSize_t cnt = avail; + if (avail > (SSize_t)b->bufsiz) + avail = b->bufsiz; + Copy(ptr, b->buf, avail, STDCHAR); + PerlIO_set_ptrcnt(n, ptr + avail, cnt - avail); + } } else { - avail = PerlIO_read(n, b->ptr, b->bufsiz); + avail = PerlIO_read(n, b->ptr, b->bufsiz); } if (avail <= 0) { - if (avail == 0) - PerlIOBase(f)->flags |= PERLIO_F_EOF; - else - { - PerlIOBase(f)->flags |= PERLIO_F_ERROR; - PerlIO_save_errno(f); - } - return -1; + if (avail == 0) + PerlIOBase(f)->flags |= PERLIO_F_EOF; + else + { + PerlIOBase(f)->flags |= PERLIO_F_ERROR; + PerlIO_save_errno(f); + } + return -1; } b->end = b->buf + avail; PerlIOBase(f)->flags |= PERLIO_F_RDBUF; @@ -4088,9 +4071,9 @@ { if (PerlIOValid(f)) { const PerlIOBuf * const b = PerlIOSelf(f, PerlIOBuf); - if (!b->ptr) - PerlIO_get_base(f); - return PerlIOBase_read(aTHX_ f, vbuf, count); + if (!b->ptr) + PerlIO_get_base(f); + return PerlIOBase_read(aTHX_ f, vbuf, count); } return 0; } @@ -4103,54 +4086,54 @@ SSize_t unread = 0; SSize_t avail; if (PerlIOBase(f)->flags & PERLIO_F_WRBUF) - PerlIO_flush(f); + PerlIO_flush(f); if (!b->buf) - PerlIO_get_base(f); + PerlIO_get_base(f); if (b->buf) { - if (PerlIOBase(f)->flags & PERLIO_F_RDBUF) { - /* - * Buffer is already a read buffer, we can overwrite any chars - * which have been read back to buffer start - */ - avail = (b->ptr - b->buf); - } - else { - /* - * Buffer is idle, set it up so whole buffer is available for - * unread - */ - avail = b->bufsiz; - b->end = b->buf + avail; - b->ptr = b->end; - PerlIOBase(f)->flags |= PERLIO_F_RDBUF; - /* - * Buffer extends _back_ from where we are now - */ - b->posn -= b->bufsiz; - } - if ((SSize_t) count >= 0 && avail > (SSize_t) count) { - /* - * If we have space for more than count, just move count - */ - avail = count; - } - if (avail > 0) { - b->ptr -= avail; - buf -= avail; - /* - * In simple stdio-like ungetc() case chars will be already - * there - */ - if (buf != b->ptr) { - Copy(buf, b->ptr, avail, STDCHAR); - } - count -= avail; - unread += avail; - PerlIOBase(f)->flags &= ~PERLIO_F_EOF; - } + if (PerlIOBase(f)->flags & PERLIO_F_RDBUF) { + /* + * Buffer is already a read buffer, we can overwrite any chars + * which have been read back to buffer start + */ + avail = (b->ptr - b->buf); + } + else { + /* + * Buffer is idle, set it up so whole buffer is available for + * unread + */ + avail = b->bufsiz; + b->end = b->buf + avail; + b->ptr = b->end; + PerlIOBase(f)->flags |= PERLIO_F_RDBUF; + /* + * Buffer extends _back_ from where we are now + */ + b->posn -= b->bufsiz; + } + if ((SSize_t) count >= 0 && avail > (SSize_t) count) { + /* + * If we have space for more than count, just move count + */ + avail = count; + } + if (avail > 0) { + b->ptr -= avail; + buf -= avail; + /* + * In simple stdio-like ungetc() case chars will be already + * there + */ + if (buf != b->ptr) { + Copy(buf, b->ptr, avail, STDCHAR); + } + count -= avail; + unread += avail; + PerlIOBase(f)->flags &= ~PERLIO_F_EOF; + } } if (count > 0) { - unread += PerlIOBase_unread(aTHX_ f, vbuf, count); + unread += PerlIOBase_unread(aTHX_ f, vbuf, count); } return unread; } @@ -4163,41 +4146,41 @@ const STDCHAR *flushptr = buf; Size_t written = 0; if (!b->buf) - PerlIO_get_base(f); + PerlIO_get_base(f); if (!(PerlIOBase(f)->flags & PERLIO_F_CANWRITE)) - return 0; + return 0; if (PerlIOBase(f)->flags & PERLIO_F_RDBUF) { - if (PerlIO_flush(f) != 0) { - return 0; - } + if (PerlIO_flush(f) != 0) { + return 0; + } } if (PerlIOBase(f)->flags & PERLIO_F_LINEBUF) { - flushptr = buf + count; - while (flushptr > buf && *(flushptr - 1) != '\n') - --flushptr; + flushptr = buf + count; + while (flushptr > buf && *(flushptr - 1) != '\n') + --flushptr; } while (count > 0) { - SSize_t avail = b->bufsiz - (b->ptr - b->buf); - if ((SSize_t) count >= 0 && (SSize_t) count < avail) - avail = count; - if (flushptr > buf && flushptr <= buf + avail) - avail = flushptr - buf; - PerlIOBase(f)->flags |= PERLIO_F_WRBUF; - if (avail) { - Copy(buf, b->ptr, avail, STDCHAR); - count -= avail; - buf += avail; - written += avail; - b->ptr += avail; - if (buf == flushptr) - PerlIO_flush(f); - } - if (b->ptr >= (b->buf + b->bufsiz)) - if (PerlIO_flush(f) == -1) - return -1; + SSize_t avail = b->bufsiz - (b->ptr - b->buf); + if ((SSize_t) count >= 0 && (SSize_t) count < avail) + avail = count; + if (flushptr > buf && flushptr <= buf + avail) + avail = flushptr - buf; + PerlIOBase(f)->flags |= PERLIO_F_WRBUF; + if (avail) { + Copy(buf, b->ptr, avail, STDCHAR); + count -= avail; + buf += avail; + written += avail; + b->ptr += avail; + if (buf == flushptr) + PerlIO_flush(f); + } + if (b->ptr >= (b->buf + b->bufsiz)) + if (PerlIO_flush(f) == -1) + return -1; } if (PerlIOBase(f)->flags & PERLIO_F_UNBUF) - PerlIO_flush(f); + PerlIO_flush(f); return written; } @@ -4206,12 +4189,12 @@ { IV code; if ((code = PerlIO_flush(f)) == 0) { - PerlIOBase(f)->flags &= ~PERLIO_F_EOF; - code = PerlIO_seek(PerlIONext(f), offset, whence); - if (code == 0) { - PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf); - b->posn = PerlIO_tell(PerlIONext(f)); - } + PerlIOBase(f)->flags &= ~PERLIO_F_EOF; + code = PerlIO_seek(PerlIONext(f), offset, whence); + if (code == 0) { + PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf); + b->posn = PerlIO_tell(PerlIONext(f)); + } } return code; } @@ -4227,21 +4210,21 @@ if ((PerlIOBase(f)->flags & PERLIO_F_APPEND) && (PerlIOBase(f)->flags & PERLIO_F_WRBUF)) { #if 1 - /* As O_APPEND files are normally shared in some sense it is better - to flush : - */ - PerlIO_flush(f); + /* As O_APPEND files are normally shared in some sense it is better + to flush : + */ + PerlIO_flush(f); #else /* when file is NOT shared then this is sufficient */ - PerlIO_seek(PerlIONext(f),0, SEEK_END); + PerlIO_seek(PerlIONext(f),0, SEEK_END); #endif - posn = b->posn = PerlIO_tell(PerlIONext(f)); + posn = b->posn = PerlIO_tell(PerlIONext(f)); } if (b->buf) { - /* - * If buffer is valid adjust position by amount in buffer - */ - posn += (b->ptr - b->buf); + /* + * If buffer is valid adjust position by amount in buffer + */ + posn += (b->ptr - b->buf); } return posn; } @@ -4252,7 +4235,7 @@ const IV code = PerlIOBase_popped(aTHX_ f); PerlIOBuf * const b = PerlIOSelf(f, PerlIOBuf); if (b->buf && b->buf != (STDCHAR *) & b->oneword) { - Safefree(b->buf); + Safefree(b->buf); } b->ptr = b->end = b->buf = NULL; PerlIOBase(f)->flags &= ~(PERLIO_F_RDBUF | PERLIO_F_WRBUF); @@ -4265,7 +4248,7 @@ const IV code = PerlIOBase_close(aTHX_ f); PerlIOBuf * const b = PerlIOSelf(f, PerlIOBuf); if (b->buf && b->buf != (STDCHAR *) & b->oneword) { - Safefree(b->buf); + Safefree(b->buf); } b->ptr = b->end = b->buf = NULL; PerlIOBase(f)->flags &= ~(PERLIO_F_RDBUF | PERLIO_F_WRBUF); @@ -4277,7 +4260,7 @@ { const PerlIOBuf * const b = PerlIOSelf(f, PerlIOBuf); if (!b->buf) - PerlIO_get_base(f); + PerlIO_get_base(f); return b->ptr; } @@ -4286,9 +4269,9 @@ { const PerlIOBuf * const b = PerlIOSelf(f, PerlIOBuf); if (!b->buf) - PerlIO_get_base(f); + PerlIO_get_base(f); if (PerlIOBase(f)->flags & PERLIO_F_RDBUF) - return (b->end - b->ptr); + return (b->end - b->ptr); return 0; } @@ -4299,14 +4282,14 @@ PERL_UNUSED_CONTEXT; if (!b->buf) { - if (!b->bufsiz) - b->bufsiz = PERLIOBUF_DEFAULT_BUFSIZ; - Newx(b->buf,b->bufsiz, STDCHAR); - if (!b->buf) { - b->buf = (STDCHAR *) & b->oneword; - b->bufsiz = sizeof(b->oneword); - } - b->end = b->ptr = b->buf; + if (!b->bufsiz) + b->bufsiz = PERLIOBUF_DEFAULT_BUFSIZ; + Newx(b->buf,b->bufsiz, STDCHAR); + if (!b->buf) { + b->buf = (STDCHAR *) & b->oneword; + b->bufsiz = sizeof(b->oneword); + } + b->end = b->ptr = b->buf; } return b->buf; } @@ -4316,7 +4299,7 @@ { const PerlIOBuf * const b = PerlIOSelf(f, PerlIOBuf); if (!b->buf) - PerlIO_get_base(f); + PerlIO_get_base(f); return (b->end - b->buf); } @@ -4328,7 +4311,7 @@ PERL_UNUSED_ARG(cnt); #endif if (!b->buf) - PerlIO_get_base(f); + PerlIO_get_base(f); b->ptr = ptr; assert(PerlIO_get_cnt(f) == cnt); assert(b->ptr >= b->buf); @@ -4415,8 +4398,8 @@ { PerlIOBuf * const b = PerlIOSelf(f, PerlIOBuf); if (b->buf && b->buf != (STDCHAR *) & b->oneword) { - Safefree(b->buf); - b->buf = NULL; + Safefree(b->buf); + b->buf = NULL; } PerlIO_pop(aTHX_ f); return 0; @@ -4426,10 +4409,10 @@ PerlIOPending_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR * ptr, SSize_t cnt) { if (cnt <= 0) { - PerlIO_flush(f); + PerlIO_flush(f); } else { - PerlIOBuf_set_ptrcnt(aTHX_ f, ptr, cnt); + PerlIOBuf_set_ptrcnt(aTHX_ f, ptr, cnt); } } @@ -4443,8 +4426,8 @@ * etc. get muddled when it changes mid-string when we auto-pop. */ l->flags = (l->flags & ~(PERLIO_F_FASTGETS | PERLIO_F_UTF8)) | - (PerlIOBase(PerlIONext(f))-> - flags & (PERLIO_F_FASTGETS | PERLIO_F_UTF8)); + (PerlIOBase(PerlIONext(f))-> + flags & (PERLIO_F_FASTGETS | PERLIO_F_UTF8)); return code; } @@ -4454,14 +4437,14 @@ SSize_t avail = PerlIO_get_cnt(f); SSize_t got = 0; if ((SSize_t) count >= 0 && (SSize_t)count < avail) - avail = count; + avail = count; if (avail > 0) - got = PerlIOBuf_read(aTHX_ f, vbuf, avail); + got = PerlIOBuf_read(aTHX_ f, vbuf, avail); if (got >= 0 && got < (SSize_t)count) { - const SSize_t more = - PerlIO_read(f, ((STDCHAR *) vbuf) + got, count - got); - if (more >= 0 || got == 0) - got += more; + const SSize_t more = + PerlIO_read(f, ((STDCHAR *) vbuf) + got, count - got); + if (more >= 0 || got == 0) + got += more; } return got; } @@ -4517,7 +4500,7 @@ typedef struct { PerlIOBuf base; /* PerlIOBuf stuff */ STDCHAR *nl; /* Position of crlf we "lied" about in the - * buffer */ + * buffer */ } PerlIOCrlf; /* Inherit the PERLIO_F_UTF8 flag from previous layer. @@ -4529,9 +4512,9 @@ { PerlIO *g = PerlIONext(f); if (PerlIOValid(g)) { - if (PerlIOBase(g)->flags & PERLIO_F_UTF8) { - PerlIOBase(f)->flags |= PERLIO_F_UTF8; - } + if (PerlIOBase(g)->flags & PERLIO_F_UTF8) { + PerlIOBase(f)->flags |= PERLIO_F_UTF8; + } } } @@ -4544,24 +4527,24 @@ #if 0 DEBUG_i( PerlIO_debug("PerlIOCrlf_pushed f=%p %s %s fl=%08" UVxf "\n", - (void*)f, PerlIOBase(f)->tab->name, (mode) ? mode : "(Null)", - PerlIOBase(f)->flags); + (void*)f, PerlIOBase(f)->tab->name, (mode) ? mode : "(Null)", + PerlIOBase(f)->flags); ); #endif { /* If the old top layer is a CRLF layer, reactivate it (if * necessary) and remove this new layer from the stack */ - PerlIO *g = PerlIONext(f); - if (PerlIOValid(g)) { - PerlIOl *b = PerlIOBase(g); - if (b && b->tab == &PerlIO_crlf) { - if (!(b->flags & PERLIO_F_CRLF)) - b->flags |= PERLIO_F_CRLF; - S_inherit_utf8_flag(g); - PerlIO_pop(aTHX_ f); - return code; - } - } + PerlIO *g = PerlIONext(f); + if (PerlIOValid(g)) { + PerlIOl *b = PerlIOBase(g); + if (b && b->tab == &PerlIO_crlf) { + if (!(b->flags & PERLIO_F_CRLF)) + b->flags |= PERLIO_F_CRLF; + S_inherit_utf8_flag(g); + PerlIO_pop(aTHX_ f); + return code; + } + } } S_inherit_utf8_flag(f); return code; @@ -4573,52 +4556,52 @@ { PerlIOCrlf * const c = PerlIOSelf(f, PerlIOCrlf); if (c->nl) { /* XXXX Shouldn't it be done only if b->ptr > c->nl? */ - *(c->nl) = NATIVE_0xd; - c->nl = NULL; + *(c->nl) = NATIVE_0xd; + c->nl = NULL; } if (!(PerlIOBase(f)->flags & PERLIO_F_CRLF)) - return PerlIOBuf_unread(aTHX_ f, vbuf, count); + return PerlIOBuf_unread(aTHX_ f, vbuf, count); else { - const STDCHAR *buf = (const STDCHAR *) vbuf + count; - PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf); - SSize_t unread = 0; - if (PerlIOBase(f)->flags & PERLIO_F_WRBUF) - PerlIO_flush(f); - if (!b->buf) - PerlIO_get_base(f); - if (b->buf) { - if (!(PerlIOBase(f)->flags & PERLIO_F_RDBUF)) { - b->end = b->ptr = b->buf + b->bufsiz; - PerlIOBase(f)->flags |= PERLIO_F_RDBUF; - b->posn -= b->bufsiz; - } - while (count > 0 && b->ptr > b->buf) { - const int ch = *--buf; - if (ch == '\n') { - if (b->ptr - 2 >= b->buf) { - *--(b->ptr) = NATIVE_0xa; - *--(b->ptr) = NATIVE_0xd; - unread++; - count--; - } - else { - /* If b->ptr - 1 == b->buf, we are undoing reading 0xa */ + const STDCHAR *buf = (const STDCHAR *) vbuf + count; + PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf); + SSize_t unread = 0; + if (PerlIOBase(f)->flags & PERLIO_F_WRBUF) + PerlIO_flush(f); + if (!b->buf) + PerlIO_get_base(f); + if (b->buf) { + if (!(PerlIOBase(f)->flags & PERLIO_F_RDBUF)) { + b->end = b->ptr = b->buf + b->bufsiz; + PerlIOBase(f)->flags |= PERLIO_F_RDBUF; + b->posn -= b->bufsiz; + } + while (count > 0 && b->ptr > b->buf) { + const int ch = *--buf; + if (ch == '\n') { + if (b->ptr - 2 >= b->buf) { + *--(b->ptr) = NATIVE_0xa; + *--(b->ptr) = NATIVE_0xd; + unread++; + count--; + } + else { + /* If b->ptr - 1 == b->buf, we are undoing reading 0xa */ *--(b->ptr) = NATIVE_0xa; /* Works even if 0xa == '\r' */ - unread++; - count--; - } - } - else { - *--(b->ptr) = ch; - unread++; - count--; - } - } - } + unread++; + count--; + } + } + else { + *--(b->ptr) = ch; + unread++; + count--; + } + } + } if (count > 0) unread += PerlIOBase_unread(aTHX_ f, (const STDCHAR *) vbuf + unread, count); - return unread; + return unread; } } @@ -4628,69 +4611,69 @@ { PerlIOBuf * const b = PerlIOSelf(f, PerlIOBuf); if (!b->buf) - PerlIO_get_base(f); + PerlIO_get_base(f); if (PerlIOBase(f)->flags & PERLIO_F_RDBUF) { - PerlIOCrlf * const c = PerlIOSelf(f, PerlIOCrlf); - if ((PerlIOBase(f)->flags & PERLIO_F_CRLF) && (!c->nl || *c->nl == NATIVE_0xd)) { - STDCHAR *nl = (c->nl) ? c->nl : b->ptr; - scan: - while (nl < b->end && *nl != NATIVE_0xd) - nl++; - if (nl < b->end && *nl == NATIVE_0xd) { - test: - if (nl + 1 < b->end) { - if (nl[1] == NATIVE_0xa) { - *nl = '\n'; - c->nl = nl; - } - else { - /* - * Not CR,LF but just CR - */ - nl++; - goto scan; - } - } - else { - /* - * Blast - found CR as last char in buffer - */ - - if (b->ptr < nl) { - /* - * They may not care, defer work as long as - * possible - */ - c->nl = nl; - return (nl - b->ptr); - } - else { - int code; - b->ptr++; /* say we have read it as far as - * flush() is concerned */ - b->buf++; /* Leave space in front of buffer */ - /* Note as we have moved buf up flush's - posn += ptr-buf - will naturally make posn point at CR - */ - b->bufsiz--; /* Buffer is thus smaller */ - code = PerlIO_fill(f); /* Fetch some more */ - b->bufsiz++; /* Restore size for next time */ - b->buf--; /* Point at space */ - b->ptr = nl = b->buf; /* Which is what we hand - * off */ - *nl = NATIVE_0xd; /* Fill in the CR */ - if (code == 0) - goto test; /* fill() call worked */ - /* - * CR at EOF - just fall through - */ - /* Should we clear EOF though ??? */ - } - } - } - } - return (((c->nl) ? (c->nl + 1) : b->end) - b->ptr); + PerlIOCrlf * const c = PerlIOSelf(f, PerlIOCrlf); + if ((PerlIOBase(f)->flags & PERLIO_F_CRLF) && (!c->nl || *c->nl == NATIVE_0xd)) { + STDCHAR *nl = (c->nl) ? c->nl : b->ptr; + scan: + while (nl < b->end && *nl != NATIVE_0xd) + nl++; + if (nl < b->end && *nl == NATIVE_0xd) { + test: + if (nl + 1 < b->end) { + if (nl[1] == NATIVE_0xa) { + *nl = '\n'; + c->nl = nl; + } + else { + /* + * Not CR,LF but just CR + */ + nl++; + goto scan; + } + } + else { + /* + * Blast - found CR as last char in buffer + */ + + if (b->ptr < nl) { + /* + * They may not care, defer work as long as + * possible + */ + c->nl = nl; + return (nl - b->ptr); + } + else { + int code; + b->ptr++; /* say we have read it as far as + * flush() is concerned */ + b->buf++; /* Leave space in front of buffer */ + /* Note as we have moved buf up flush's + posn += ptr-buf + will naturally make posn point at CR + */ + b->bufsiz--; /* Buffer is thus smaller */ + code = PerlIO_fill(f); /* Fetch some more */ + b->bufsiz++; /* Restore size for next time */ + b->buf--; /* Point at space */ + b->ptr = nl = b->buf; /* Which is what we hand + * off */ + *nl = NATIVE_0xd; /* Fill in the CR */ + if (code == 0) + goto test; /* fill() call worked */ + /* + * CR at EOF - just fall through + */ + /* Should we clear EOF though ??? */ + } + } + } + } + return (((c->nl) ? (c->nl + 1) : b->end) - b->ptr); } return 0; } @@ -4701,50 +4684,50 @@ PerlIOBuf * const b = PerlIOSelf(f, PerlIOBuf); PerlIOCrlf * const c = PerlIOSelf(f, PerlIOCrlf); if (!b->buf) - PerlIO_get_base(f); + PerlIO_get_base(f); if (!ptr) { - if (c->nl) { - ptr = c->nl + 1; - if (ptr == b->end && *c->nl == NATIVE_0xd) { - /* Deferred CR at end of buffer case - we lied about count */ - ptr--; - } - } - else { - ptr = b->end; - } - ptr -= cnt; + if (c->nl) { + ptr = c->nl + 1; + if (ptr == b->end && *c->nl == NATIVE_0xd) { + /* Deferred CR at end of buffer case - we lied about count */ + ptr--; + } + } + else { + ptr = b->end; + } + ptr -= cnt; } else { - NOOP; + NOOP; #if 0 - /* - * Test code - delete when it works ... - */ - IV flags = PerlIOBase(f)->flags; - STDCHAR *chk = (c->nl) ? (c->nl+1) : b->end; - if (ptr+cnt == c->nl && c->nl+1 == b->end && *c->nl == NATIVE_0xd) { - /* Deferred CR at end of buffer case - we lied about count */ - chk--; - } - chk -= cnt; - - if (ptr != chk ) { - Perl_croak(aTHX_ "ptr wrong %p != %p fl=%08" UVxf - " nl=%p e=%p for %d", (void*)ptr, (void*)chk, - flags, c->nl, b->end, cnt); - } + /* + * Test code - delete when it works ... + */ + IV flags = PerlIOBase(f)->flags; + STDCHAR *chk = (c->nl) ? (c->nl+1) : b->end; + if (ptr+cnt == c->nl && c->nl+1 == b->end && *c->nl == NATIVE_0xd) { + /* Deferred CR at end of buffer case - we lied about count */ + chk--; + } + chk -= cnt; + + if (ptr != chk ) { + Perl_croak(aTHX_ "ptr wrong %p != %p fl=%08" UVxf + " nl=%p e=%p for %d", (void*)ptr, (void*)chk, + flags, c->nl, b->end, cnt); + } #endif } if (c->nl) { - if (ptr > c->nl) { - /* - * They have taken what we lied about - */ - *(c->nl) = NATIVE_0xd; - c->nl = NULL; - ptr++; - } + if (ptr > c->nl) { + /* + * They have taken what we lied about + */ + *(c->nl) = NATIVE_0xd; + c->nl = NULL; + ptr++; + } } b->ptr = ptr; PerlIOBase(f)->flags |= PERLIO_F_RDBUF; @@ -4754,49 +4737,49 @@ PerlIOCrlf_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count) { if (!(PerlIOBase(f)->flags & PERLIO_F_CRLF)) - return PerlIOBuf_write(aTHX_ f, vbuf, count); + return PerlIOBuf_write(aTHX_ f, vbuf, count); else { - PerlIOBuf * const b = PerlIOSelf(f, PerlIOBuf); - const STDCHAR *buf = (const STDCHAR *) vbuf; - const STDCHAR * const ebuf = buf + count; - if (!b->buf) - PerlIO_get_base(f); - if (!(PerlIOBase(f)->flags & PERLIO_F_CANWRITE)) - return 0; - while (buf < ebuf) { - const STDCHAR * const eptr = b->buf + b->bufsiz; - PerlIOBase(f)->flags |= PERLIO_F_WRBUF; - while (buf < ebuf && b->ptr < eptr) { - if (*buf == '\n') { - if ((b->ptr + 2) > eptr) { - /* - * Not room for both - */ - PerlIO_flush(f); - break; - } - else { - *(b->ptr)++ = NATIVE_0xd; /* CR */ - *(b->ptr)++ = NATIVE_0xa; /* LF */ - buf++; - if (PerlIOBase(f)->flags & PERLIO_F_LINEBUF) { - PerlIO_flush(f); - break; - } - } - } - else { - *(b->ptr)++ = *buf++; - } - if (b->ptr >= eptr) { - PerlIO_flush(f); - break; - } - } - } - if (PerlIOBase(f)->flags & PERLIO_F_UNBUF) - PerlIO_flush(f); - return (buf - (STDCHAR *) vbuf); + PerlIOBuf * const b = PerlIOSelf(f, PerlIOBuf); + const STDCHAR *buf = (const STDCHAR *) vbuf; + const STDCHAR * const ebuf = buf + count; + if (!b->buf) + PerlIO_get_base(f); + if (!(PerlIOBase(f)->flags & PERLIO_F_CANWRITE)) + return 0; + while (buf < ebuf) { + const STDCHAR * const eptr = b->buf + b->bufsiz; + PerlIOBase(f)->flags |= PERLIO_F_WRBUF; + while (buf < ebuf && b->ptr < eptr) { + if (*buf == '\n') { + if ((b->ptr + 2) > eptr) { + /* + * Not room for both + */ + PerlIO_flush(f); + break; + } + else { + *(b->ptr)++ = NATIVE_0xd; /* CR */ + *(b->ptr)++ = NATIVE_0xa; /* LF */ + buf++; + if (PerlIOBase(f)->flags & PERLIO_F_LINEBUF) { + PerlIO_flush(f); + break; + } + } + } + else { + *(b->ptr)++ = *buf++; + } + if (b->ptr >= eptr) { + PerlIO_flush(f); + break; + } + } + } + if (PerlIOBase(f)->flags & PERLIO_F_UNBUF) + PerlIO_flush(f); + return (buf - (STDCHAR *) vbuf); } } @@ -4805,8 +4788,8 @@ { PerlIOCrlf * const c = PerlIOSelf(f, PerlIOCrlf); if (c->nl) { - *(c->nl) = NATIVE_0xd; - c->nl = NULL; + *(c->nl) = NATIVE_0xd; + c->nl = NULL; } return PerlIOBuf_flush(aTHX_ f); } @@ -4815,11 +4798,11 @@ PerlIOCrlf_binmode(pTHX_ PerlIO *f) { if ((PerlIOBase(f)->flags & PERLIO_F_CRLF)) { - /* In text mode - flush any pending stuff and flip it */ - PerlIOBase(f)->flags &= ~PERLIO_F_CRLF; + /* In text mode - flush any pending stuff and flip it */ + PerlIOBase(f)->flags &= ~PERLIO_F_CRLF; #ifndef PERLIO_USING_CRLF - /* CRLF is unusual case - if this is just the :crlf layer pop it */ - PerlIO_pop(aTHX_ f); + /* CRLF is unusual case - if this is just the :crlf layer pop it */ + PerlIO_pop(aTHX_ f); #endif } return PerlIOBase_binmode(aTHX_ f); @@ -4860,7 +4843,7 @@ Perl_PerlIO_stdin(pTHX) { if (!PL_perlio) { - PerlIO_stdstreams(aTHX); + PerlIO_stdstreams(aTHX); } return (PerlIO*)&PL_perlio[1]; } @@ -4869,7 +4852,7 @@ Perl_PerlIO_stdout(pTHX) { if (!PL_perlio) { - PerlIO_stdstreams(aTHX); + PerlIO_stdstreams(aTHX); } return (PerlIO*)&PL_perlio[2]; } @@ -4878,7 +4861,7 @@ Perl_PerlIO_stderr(pTHX) { if (!PL_perlio) { - PerlIO_stdstreams(aTHX); + PerlIO_stdstreams(aTHX); } return (PerlIO*)&PL_perlio[3]; } @@ -4894,12 +4877,12 @@ bool exported = FALSE; FILE *stdio = PerlIOSelf(f, PerlIOStdio)->stdio; if (!stdio) { - stdio = PerlIO_exportFILE(f,0); - exported = TRUE; + stdio = PerlIO_exportFILE(f,0); + exported = TRUE; } if (stdio) { - name = fgetname(stdio, buf); - if (exported) PerlIO_releaseFILE(f,stdio); + name = fgetname(stdio, buf); + if (exported) PerlIO_releaseFILE(f,stdio); } return name; #else @@ -4950,7 +4933,7 @@ dTHX; STDCHAR buf[1]; if ( 1 == PerlIO_read(f, buf, 1) ) { - return (unsigned char) buf[0]; + return (unsigned char) buf[0]; } return EOF; } @@ -4961,9 +4944,9 @@ { dTHX; if (ch != EOF) { - STDCHAR buf = ch; - if (PerlIO_unread(f, &buf, 1) == 1) - return ch; + STDCHAR buf = ch; + if (PerlIO_unread(f, &buf, 1) == 1) + return ch; } return EOF; } @@ -5062,7 +5045,7 @@ #ifdef WIN32 const int fd = win32_tmpfd_mode(imode); if (fd >= 0) - f = PerlIO_fdopen(fd, "w+b"); + f = PerlIO_fdopen(fd, "w+b"); #elif ! defined(OS2) int fd = -1; char tempname[] = "/tmp/PerlIO_XXXXXX"; @@ -5071,16 +5054,16 @@ int old_umask = umask(0177); imode &= ~MKOSTEMP_MODE_MASK; if (tmpdir && *tmpdir) { - /* if TMPDIR is set and not empty, we try that first */ - sv = newSVpv(tmpdir, 0); - sv_catpv(sv, tempname + 4); - fd = Perl_my_mkostemp_cloexec(SvPVX(sv), imode | O_VMS_DELETEONCLOSE); + /* if TMPDIR is set and not empty, we try that first */ + sv = newSVpv(tmpdir, 0); + sv_catpv(sv, tempname + 4); + fd = Perl_my_mkostemp_cloexec(SvPVX(sv), imode | O_VMS_DELETEONCLOSE); } if (fd < 0) { - SvREFCNT_dec(sv); - sv = NULL; - /* else we try /tmp */ - fd = Perl_my_mkostemp_cloexec(tempname, imode | O_VMS_DELETEONCLOSE); + SvREFCNT_dec(sv); + sv = NULL; + /* else we try /tmp */ + fd = Perl_my_mkostemp_cloexec(tempname, imode | O_VMS_DELETEONCLOSE); } if (fd < 0) { /* Try cwd */ @@ -5095,18 +5078,18 @@ int writing = 1; (void)PerlIO_intmode2str(imode | MKOSTEMP_MODES, mode, &writing); f = PerlIO_fdopen(fd, mode); - if (f) - PerlIOBase(f)->flags |= PERLIO_F_TEMP; -# ifndef VMS - PerlLIO_unlink(sv ? SvPVX_const(sv) : tempname); -# endif + if (f) + PerlIOBase(f)->flags |= PERLIO_F_TEMP; +# ifndef VMS + PerlLIO_unlink(sv ? SvPVX_const(sv) : tempname); +# endif } SvREFCNT_dec(sv); #else /* !HAS_MKSTEMP, fallback to stdio tmpfile(). */ FILE * const stdio = PerlSIO_tmpfile(); if (stdio) - f = PerlIO_fdopen(fileno(stdio), "w+"); + f = PerlIO_fdopen(fileno(stdio), "w+"); #endif /* else WIN32 */ return f; @@ -5117,7 +5100,7 @@ { PERL_UNUSED_CONTEXT; if (!PerlIOValid(f)) - return; + return; PerlIOBase(f)->err = errno; #ifdef VMS PerlIOBase(f)->os_err = vaxc$errno; @@ -5133,7 +5116,7 @@ { PERL_UNUSED_CONTEXT; if (!PerlIOValid(f)) - return; + return; SETERRNO(PerlIOBase(f)->err, PerlIOBase(f)->os_err); #ifdef OS2 Perl_rc = PerlIOBase(f)->os_err); @@ -5161,17 +5144,17 @@ */ if (!PL_curcop) - return NULL; + return NULL; if (mode && mode[0] != 'r') { - if (PL_curcop->cop_hints & HINT_LEXICAL_IO_OUT) - direction = "open>"; + if (PL_curcop->cop_hints & HINT_LEXICAL_IO_OUT) + direction = "open>"; } else { - if (PL_curcop->cop_hints & HINT_LEXICAL_IO_IN) - direction = "open<"; + if (PL_curcop->cop_hints & HINT_LEXICAL_IO_IN) + direction = "open<"; } if (!direction) - return NULL; + return NULL; layers = cop_hints_fetch_pvn(PL_curcop, direction, 5, 0, 0); @@ -5181,39 +5164,39 @@ #ifndef HAS_FSETPOS -#undef PerlIO_setpos +# undef PerlIO_setpos int PerlIO_setpos(PerlIO *f, SV *pos) { if (SvOK(pos)) { - if (f) { - dTHX; - STRLEN len; - const Off_t * const posn = (Off_t *) SvPV(pos, len); - if(len == sizeof(Off_t)) - return PerlIO_seek(f, *posn, SEEK_SET); - } + if (f) { + dTHX; + STRLEN len; + const Off_t * const posn = (Off_t *) SvPV(pos, len); + if(len == sizeof(Off_t)) + return PerlIO_seek(f, *posn, SEEK_SET); + } } SETERRNO(EINVAL, SS_IVCHAN); return -1; } #else -#undef PerlIO_setpos +# undef PerlIO_setpos int PerlIO_setpos(PerlIO *f, SV *pos) { if (SvOK(pos)) { - if (f) { - dTHX; - STRLEN len; - Fpos_t * const fpos = (Fpos_t *) SvPV(pos, len); - if(len == sizeof(Fpos_t)) -#if defined(USE_64_BIT_STDIO) && defined(USE_FSETPOS64) - return fsetpos64(f, fpos); -#else - return fsetpos(f, fpos); -#endif - } + if (f) { + dTHX; + STRLEN len; + Fpos_t * const fpos = (Fpos_t *) SvPV(pos, len); + if(len == sizeof(Fpos_t)) +# if defined(USE_64_BIT_STDIO) && defined(USE_FSETPOS64) + return fsetpos64(f, fpos); +# else + return fsetpos(f, fpos); +# endif + } } SETERRNO(EINVAL, SS_IVCHAN); return -1; @@ -5221,7 +5204,7 @@ #endif #ifndef HAS_FGETPOS -#undef PerlIO_getpos +# undef PerlIO_getpos int PerlIO_getpos(PerlIO *f, SV *pos) { @@ -5231,18 +5214,18 @@ return (posn == (Off_t) - 1) ? -1 : 0; } #else -#undef PerlIO_getpos +# undef PerlIO_getpos int PerlIO_getpos(PerlIO *f, SV *pos) { dTHX; Fpos_t fpos; int code; -#if defined(USE_64_BIT_STDIO) && defined(USE_FSETPOS64) +# if defined(USE_64_BIT_STDIO) && defined(USE_FSETPOS64) code = fgetpos64(f, &fpos); -#else +# else code = fgetpos(f, &fpos); -#endif +# endif sv_setpvn(pos, (char *) &fpos, sizeof(fpos)); return code; } diff -Nru perl-5.32.1/perlio.h perl-5.34.0/perlio.h --- perl-5.32.1/perlio.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/perlio.h 2021-01-20 23:04:44.000000000 +0000 @@ -63,22 +63,15 @@ #define PerlIO PerlIO #define PERLIO_LAYERS 1 -/* PERLIO_FUNCS_CONST is now on by default for efficiency, PERLIO_FUNCS_CONST - can be removed 1 day once stable & then PerlIO vtables are permanently RO */ -#ifdef PERLIO_FUNCS_CONST #define PERLIO_FUNCS_DECL(funcs) const PerlIO_funcs funcs #define PERLIO_FUNCS_CAST(funcs) (PerlIO_funcs*)(funcs) -#else -#define PERLIO_FUNCS_DECL(funcs) PerlIO_funcs funcs -#define PERLIO_FUNCS_CAST(funcs) (funcs) -#endif PERL_CALLCONV void PerlIO_define_layer(pTHX_ PerlIO_funcs *tab); PERL_CALLCONV PerlIO_funcs *PerlIO_find_layer(pTHX_ const char *name, STRLEN len, - int load); + int load); PERL_CALLCONV PerlIO *PerlIO_push(pTHX_ PerlIO *f, PERLIO_FUNCS_DECL(*tab), - const char *mode, SV *arg); + const char *mode, SV *arg); PERL_CALLCONV void PerlIO_pop(pTHX_ PerlIO *f); PERL_CALLCONV AV* PerlIO_get_layers(pTHX_ PerlIO *f); PERL_CALLCONV void PerlIO_clone(pTHX_ PerlInterpreter *proto, @@ -189,8 +182,8 @@ #endif #ifndef PerlIO_openn PERL_CALLCONV PerlIO *PerlIO_openn(pTHX_ const char *layers, const char *mode, - int fd, int imode, int perm, PerlIO *old, - int narg, SV **arg); + int fd, int imode, int perm, PerlIO *old, + int narg, SV **arg); #endif #ifndef PerlIO_eof PERL_CALLCONV int PerlIO_eof(PerlIO *); @@ -315,11 +308,11 @@ #endif #ifndef PerlIO_apply_layers PERL_CALLCONV int PerlIO_apply_layers(pTHX_ PerlIO *f, const char *mode, - const char *names); + const char *names); #endif #ifndef PerlIO_binmode PERL_CALLCONV int PerlIO_binmode(pTHX_ PerlIO *f, int iotype, int omode, - const char *names); + const char *names); #endif #ifndef PerlIO_getname PERL_CALLCONV char *PerlIO_getname(PerlIO *, char *); diff -Nru perl-5.32.1/perliol.h perl-5.34.0/perliol.h --- perl-5.32.1/perliol.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/perliol.h 2021-01-20 23:04:44.000000000 +0000 @@ -21,10 +21,10 @@ IV (*Pushed) (pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab); IV (*Popped) (pTHX_ PerlIO *f); PerlIO *(*Open) (pTHX_ PerlIO_funcs *tab, - PerlIO_list_t *layers, IV n, - const char *mode, - int fd, int imode, int perm, - PerlIO *old, int narg, SV **args); + PerlIO_list_t *layers, IV n, + const char *mode, + int fd, int imode, int perm, + PerlIO *old, int narg, SV **args); IV (*Binmode)(pTHX_ PerlIO *f); SV *(*Getarg) (pTHX_ PerlIO *f, CLONE_PARAMS *param, int flags); IV (*Fileno) (pTHX_ PerlIO *f); @@ -106,23 +106,16 @@ #define PerlIOValid(f) ((f) && *(f)) /*--------------------------------------------------------------------------------------*/ -/* Data exports - EXTCONST rather than extern is needed for Cygwin */ -#undef EXTPERLIO -#ifdef PERLIO_FUNCS_CONST -#define EXTPERLIO EXTCONST -#else -#define EXTPERLIO EXT -#endif -EXTPERLIO PerlIO_funcs PerlIO_unix; -EXTPERLIO PerlIO_funcs PerlIO_perlio; -EXTPERLIO PerlIO_funcs PerlIO_stdio; -EXTPERLIO PerlIO_funcs PerlIO_crlf; -EXTPERLIO PerlIO_funcs PerlIO_utf8; -EXTPERLIO PerlIO_funcs PerlIO_byte; -EXTPERLIO PerlIO_funcs PerlIO_raw; -EXTPERLIO PerlIO_funcs PerlIO_pending; +EXTCONST PerlIO_funcs PerlIO_unix; +EXTCONST PerlIO_funcs PerlIO_perlio; +EXTCONST PerlIO_funcs PerlIO_stdio; +EXTCONST PerlIO_funcs PerlIO_crlf; +EXTCONST PerlIO_funcs PerlIO_utf8; +EXTCONST PerlIO_funcs PerlIO_byte; +EXTCONST PerlIO_funcs PerlIO_raw; +EXTCONST PerlIO_funcs PerlIO_pending; #ifdef WIN32 -EXTPERLIO PerlIO_funcs PerlIO_win32; +EXTCONST PerlIO_funcs PerlIO_win32; #endif PERL_CALLCONV PerlIO *PerlIO_allocate(pTHX); PERL_CALLCONV SV *PerlIO_arg_fetch(PerlIO_list_t *av, IV n); @@ -151,7 +144,7 @@ } PerlIOBuf; PERL_CALLCONV int PerlIO_apply_layera(pTHX_ PerlIO *f, const char *mode, - PerlIO_list_t *layers, IV n, IV max); + PerlIO_list_t *layers, IV n, IV max); PERL_CALLCONV int PerlIO_parse_layers(pTHX_ PerlIO_list_t *av, const char *names); PERL_CALLCONV PerlIO_funcs *PerlIO_layer_fetch(pTHX_ PerlIO_list_t *av, IV n, PerlIO_funcs *def); diff -Nru perl-5.32.1/perl_siphash.h perl-5.34.0/perl_siphash.h --- perl-5.32.1/perl_siphash.h 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/perl_siphash.h 2020-10-04 22:17:13.000000000 +0000 @@ -0,0 +1,127 @@ +/* This is SipHash by Jean-Philippe Aumasson and Daniel J. Bernstein. + * The authors claim it is relatively secure compared to the alternatives + * and that performance wise it is a suitable hash for languages like Perl. + * See: + * + * https://www.131002.net/siphash/ + * + * This implementation seems to perform slightly slower than one-at-a-time for + * short keys, but degrades slower for longer keys. Murmur Hash outperforms it + * regardless of keys size. + * + * It is 64 bit only. + */ + +#ifdef CAN64BITHASH + +#define SIPROUND \ + STMT_START { \ + v0 += v1; v1=ROTL64(v1,13); v1 ^= v0; v0=ROTL64(v0,32); \ + v2 += v3; v3=ROTL64(v3,16); v3 ^= v2; \ + v0 += v3; v3=ROTL64(v3,21); v3 ^= v0; \ + v2 += v1; v1=ROTL64(v1,17); v1 ^= v2; v2=ROTL64(v2,32); \ + } STMT_END + +#define SIPHASH_SEED_STATE(key,v0,v1,v2,v3) \ +do { \ + v0 = v2 = U8TO64_LE(key + 0); \ + v1 = v3 = U8TO64_LE(key + 8); \ + /* "somepseudorandomlygeneratedbytes" */ \ + v0 ^= UINT64_C(0x736f6d6570736575); \ + v1 ^= UINT64_C(0x646f72616e646f6d); \ + v2 ^= UINT64_C(0x6c7967656e657261); \ + v3 ^= UINT64_C(0x7465646279746573); \ +} while (0) + +PERL_STATIC_INLINE +void S_perl_siphash_seed_state(const unsigned char * const seed_buf, unsigned char * state_buf) { + U64 *v= (U64*) state_buf; + SIPHASH_SEED_STATE(seed_buf, v[0],v[1],v[2],v[3]); +} + +#define PERL_SIPHASH_FNC(FNC,SIP_ROUNDS,SIP_FINAL_ROUNDS) \ +PERL_STATIC_INLINE U64 \ +FNC ## _with_state_64 \ + (const unsigned char * const state, const unsigned char *in, const STRLEN inlen) \ +{ \ + const int left = inlen & 7; \ + const U8 *end = in + inlen - left; \ + \ + U64 b = ( ( U64 )(inlen) ) << 56; \ + U64 m; \ + U64 v0 = U8TO64_LE(state); \ + U64 v1 = U8TO64_LE(state+8); \ + U64 v2 = U8TO64_LE(state+16); \ + U64 v3 = U8TO64_LE(state+24); \ + \ + for ( ; in != end; in += 8 ) \ + { \ + m = U8TO64_LE( in ); \ + v3 ^= m; \ + \ + SIP_ROUNDS; \ + \ + v0 ^= m; \ + } \ + \ + switch( left ) \ + { \ + case 7: b |= ( ( U64 )in[ 6] ) << 48; /*FALLTHROUGH*/ \ + case 6: b |= ( ( U64 )in[ 5] ) << 40; /*FALLTHROUGH*/ \ + case 5: b |= ( ( U64 )in[ 4] ) << 32; /*FALLTHROUGH*/ \ + case 4: b |= ( ( U64 )in[ 3] ) << 24; /*FALLTHROUGH*/ \ + case 3: b |= ( ( U64 )in[ 2] ) << 16; /*FALLTHROUGH*/ \ + case 2: b |= ( ( U64 )in[ 1] ) << 8; /*FALLTHROUGH*/ \ + case 1: b |= ( ( U64 )in[ 0] ); break; \ + case 0: break; \ + } \ + \ + v3 ^= b; \ + \ + SIP_ROUNDS; \ + \ + v0 ^= b; \ + \ + v2 ^= 0xff; \ + \ + SIP_FINAL_ROUNDS \ + \ + b = v0 ^ v1 ^ v2 ^ v3; \ + return b; \ +} \ + \ +PERL_STATIC_INLINE U32 \ +FNC ## _with_state \ + (const unsigned char * const state, const unsigned char *in, const STRLEN inlen) \ +{ \ + union { \ + U64 h64; \ + U32 h32[2]; \ + } h; \ + h.h64= FNC ## _with_state_64(state,in,inlen); \ + return h.h32[0] ^ h.h32[1]; \ +} \ + \ + \ +PERL_STATIC_INLINE U32 \ +FNC (const unsigned char * const seed, const unsigned char *in, const STRLEN inlen) \ +{ \ + U64 state[4]; \ + SIPHASH_SEED_STATE(seed,state[0],state[1],state[2],state[3]); \ + return FNC ## _with_state((U8*)state,in,inlen); \ +} + + +PERL_SIPHASH_FNC( + S_perl_hash_siphash_1_3 + ,SIPROUND; + ,SIPROUND;SIPROUND;SIPROUND; +) + +PERL_SIPHASH_FNC( + S_perl_hash_siphash_2_4 + ,SIPROUND;SIPROUND; + ,SIPROUND;SIPROUND;SIPROUND;SIPROUND; +) + +#endif /* defined(CAN64BITHASH) */ diff -Nru perl-5.32.1/perlvars.h perl-5.34.0/perlvars.h --- perl-5.32.1/perlvars.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/perlvars.h 2021-02-21 11:01:31.000000000 +0000 @@ -38,9 +38,9 @@ PERLVAR(G, op_mutex, perl_mutex) /* Mutex for op refcounting */ #endif PERLVARI(G, curinterp, PerlInterpreter *, NULL) - /* currently running interpreter - * (initial parent interpreter under - * useithreads) */ + /* currently running interpreter + * (initial parent interpreter under + * useithreads) */ #if defined(USE_ITHREADS) PERLVAR(G, thr_key, perl_key) /* key to retrieve per-thread struct */ #endif @@ -57,7 +57,7 @@ #endif #ifdef FAKE_PERSISTENT_SIGNAL_HANDLERS PERLVARA(G, sig_ignoring, SIG_SIZE, int) - /* which signals we are ignoring */ + /* which signals we are ignoring */ #endif #ifdef FAKE_DEFAULT_SIGNAL_HANDLERS PERLVARA(G, sig_defaulting, SIG_SIZE, int) @@ -104,10 +104,8 @@ #if defined(USE_ITHREADS) PERLVAR(G, hints_mutex, perl_mutex) /* Mutex for refcounted he refcounting */ -PERLVAR(G, env_mutex, perl_mutex) /* Mutex for accessing ENV */ -# if ! defined(USE_THREAD_SAFE_LOCALE) || defined(TS_W32_BROKEN_LOCALECONV) -PERLVAR(G, locale_mutex, perl_mutex) /* Mutex for setlocale() changing */ -# endif +PERLVAR(G, env_mutex, perl_RnW1_mutex_t) /* Mutex for accessing ENV */ +PERLVAR(G, locale_mutex, perl_mutex) /* Mutex related to locale handling */ # ifndef USE_THREAD_SAFE_LOCALE PERLVAR(G, lc_numeric_mutex, perl_mutex) /* Mutex for switching LC_NUMERIC */ # endif @@ -172,19 +170,6 @@ #if defined(USE_ITHREADS) PERLVAR(G, check_mutex, perl_mutex) /* Mutex for PL_check */ #endif -#ifdef PERL_GLOBAL_STRUCT -PERLVAR(G, ppaddr, Perl_ppaddr_t *) /* or opcode.h */ -PERLVAR(G, check, Perl_check_t *) /* or opcode.h */ -PERLVARA(G, fold_locale, 256, unsigned char) /* or perl.h */ -#endif - -#ifdef PERL_NEED_APPCTX -PERLVAR(G, appctx, void*) /* the application context */ -#endif - -#if defined(HAS_TIMES) && defined(PERL_NEED_TIMESBASE) -PERLVAR(G, timesbase, struct tms) -#endif /* allocate a unique index to every module that calls MY_CXT_INIT */ @@ -205,9 +190,9 @@ Function pointer, pointing at a function used to handle extended keywords. The function should be declared as - int keyword_plugin_function(pTHX_ - char *keyword_ptr, STRLEN keyword_len, - OP **op_ptr) + int keyword_plugin_function(pTHX_ + char *keyword_ptr, STRLEN keyword_len, + OP **op_ptr) The function is called from the tokeniser, whenever a possible keyword is seen. C points at the word in the parser's input @@ -279,9 +264,9 @@ #endif PERLVARI(G, hash_seed_set, bool, FALSE) /* perl.c */ -PERLVARA(G, hash_seed, PERL_HASH_SEED_BYTES, unsigned char) /* perl.c and hv.h */ +PERLVARA(G, hash_seed_w, PERL_HASH_SEED_WORDS, __PERL_HASH_WORD_TYPE) /* perl.c and hv.h */ #if defined(PERL_HASH_STATE_BYTES) -PERLVARA(G, hash_state, PERL_HASH_STATE_BYTES, unsigned char) /* perl.c and hv.h */ +PERLVARA(G, hash_state_w, PERL_HASH_STATE_WORDS, __PERL_HASH_WORD_TYPE) /* perl.c and hv.h */ #endif #if defined(PERL_USE_SINGLE_CHAR_HASH_CACHE) PERLVARA(G, hash_chars, (1+256) * sizeof(U32), unsigned char) /* perl.c and hv.h */ @@ -320,13 +305,3 @@ PERLVARI(G, strategy_accept, int, 0) /* doio.c */ PERLVARI(G, strategy_pipe, int, 0) /* doio.c */ PERLVARI(G, strategy_socketpair, int, 0) /* doio.c */ - -#ifdef PERL_IMPLICIT_CONTEXT -# ifdef PERL_GLOBAL_STRUCT_PRIVATE -/* per-module array of pointers to MY_CXT_KEY constants. - * It simulates each module having a static my_cxt_index var on builds - * which don't allow static vars */ -PERLVARI(G, my_cxt_keys, const char **, NULL) -PERLVARI(G, my_cxt_keys_size, int, 0) /* size of PL_my_cxt_keys */ -# endif -#endif diff -Nru perl-5.32.1/perly.act perl-5.34.0/perly.act --- perl-5.32.1/perly.act 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/perly.act 2021-02-21 11:01:31.000000000 +0000 @@ -5,7 +5,7 @@ */ case 2: -#line 121 "perly.y" /* yacc.c:1652 */ +#line 138 "perly.y" { parser->expect = XSTATE; (yyval.ival) = 0; @@ -14,7 +14,7 @@ break; case 3: -#line 126 "perly.y" /* yacc.c:1652 */ +#line 143 "perly.y" { newPROG(block_end((ps[-1].val.ival),(ps[0].val.opval))); PL_compiling.cop_seq = 0; @@ -24,7 +24,7 @@ break; case 4: -#line 132 "perly.y" /* yacc.c:1652 */ +#line 149 "perly.y" { parser->expect = XTERM; (yyval.ival) = 0; @@ -33,7 +33,7 @@ break; case 5: -#line 137 "perly.y" /* yacc.c:1652 */ +#line 154 "perly.y" { PL_eval_root = (ps[0].val.opval); (yyval.ival) = 0; @@ -42,7 +42,7 @@ break; case 6: -#line 142 "perly.y" /* yacc.c:1652 */ +#line 159 "perly.y" { parser->expect = XBLOCK; (yyval.ival) = 0; @@ -51,7 +51,7 @@ break; case 7: -#line 147 "perly.y" /* yacc.c:1652 */ +#line 164 "perly.y" { PL_pad_reset_pending = TRUE; PL_eval_root = (ps[0].val.opval); @@ -63,7 +63,7 @@ break; case 8: -#line 155 "perly.y" /* yacc.c:1652 */ +#line 172 "perly.y" { parser->expect = XSTATE; (yyval.ival) = 0; @@ -72,7 +72,7 @@ break; case 9: -#line 160 "perly.y" /* yacc.c:1652 */ +#line 177 "perly.y" { PL_pad_reset_pending = TRUE; PL_eval_root = (ps[0].val.opval); @@ -84,7 +84,7 @@ break; case 10: -#line 168 "perly.y" /* yacc.c:1652 */ +#line 185 "perly.y" { parser->expect = XSTATE; (yyval.ival) = 0; @@ -93,7 +93,7 @@ break; case 11: -#line 173 "perly.y" /* yacc.c:1652 */ +#line 190 "perly.y" { PL_pad_reset_pending = TRUE; PL_eval_root = (ps[0].val.opval); @@ -105,7 +105,7 @@ break; case 12: -#line 181 "perly.y" /* yacc.c:1652 */ +#line 198 "perly.y" { parser->expect = XSTATE; (yyval.ival) = 0; @@ -114,7 +114,7 @@ break; case 13: -#line 186 "perly.y" /* yacc.c:1652 */ +#line 203 "perly.y" { PL_eval_root = (ps[0].val.opval); (yyval.ival) = 0; @@ -123,7 +123,7 @@ break; case 14: -#line 191 "perly.y" /* yacc.c:1652 */ +#line 208 "perly.y" { parser->expect = XSTATE; (yyval.ival) = 0; @@ -132,7 +132,7 @@ break; case 15: -#line 196 "perly.y" /* yacc.c:1652 */ +#line 213 "perly.y" { PL_eval_root = (ps[0].val.opval); (yyval.ival) = 0; @@ -141,7 +141,7 @@ break; case 16: -#line 204 "perly.y" /* yacc.c:1652 */ +#line 221 "perly.y" { if (parser->copline > (line_t)(ps[-3].val.ival)) parser->copline = (line_t)(ps[-3].val.ival); (yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval)); @@ -150,7 +150,7 @@ break; case 17: -#line 212 "perly.y" /* yacc.c:1652 */ +#line 229 "perly.y" { if (parser->copline > (line_t)(ps[-6].val.ival)) parser->copline = (line_t)(ps[-6].val.ival); (yyval.opval) = block_end((ps[-5].val.ival), (ps[-2].val.opval)); @@ -159,14 +159,14 @@ break; case 18: -#line 219 "perly.y" /* yacc.c:1652 */ +#line 236 "perly.y" { (yyval.ival) = block_start(TRUE); parser->parsed_sub = 0; } break; case 19: -#line 224 "perly.y" /* yacc.c:1652 */ +#line 241 "perly.y" { if (parser->copline > (line_t)(ps[-3].val.ival)) parser->copline = (line_t)(ps[-3].val.ival); (yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval)); @@ -175,20 +175,20 @@ break; case 20: -#line 231 "perly.y" /* yacc.c:1652 */ +#line 248 "perly.y" { (yyval.ival) = block_start(FALSE); parser->parsed_sub = 0; } break; case 21: -#line 237 "perly.y" /* yacc.c:1652 */ +#line 254 "perly.y" { (yyval.opval) = NULL; } break; case 22: -#line 239 "perly.y" /* yacc.c:1652 */ +#line 256 "perly.y" { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval)); PL_pad_reset_pending = TRUE; if ((ps[-1].val.opval) && (ps[0].val.opval)) @@ -198,13 +198,13 @@ break; case 23: -#line 248 "perly.y" /* yacc.c:1652 */ +#line 265 "perly.y" { (yyval.opval) = NULL; } break; case 24: -#line 250 "perly.y" /* yacc.c:1652 */ +#line 267 "perly.y" { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval)); PL_pad_reset_pending = TRUE; if ((ps[-1].val.opval) && (ps[0].val.opval)) @@ -214,7 +214,7 @@ break; case 25: -#line 259 "perly.y" /* yacc.c:1652 */ +#line 276 "perly.y" { (yyval.opval) = (ps[0].val.opval) ? newSTATEOP(0, NULL, (ps[0].val.opval)) : NULL; } @@ -222,13 +222,13 @@ break; case 26: -#line 263 "perly.y" /* yacc.c:1652 */ +#line 280 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 27: -#line 267 "perly.y" /* yacc.c:1652 */ +#line 284 "perly.y" { SV *label = cSVOPx_sv((ps[-1].val.opval)); (yyval.opval) = newSTATEOP(SvFLAGS(label) & SVf_UTF8, @@ -239,7 +239,7 @@ break; case 28: -#line 274 "perly.y" /* yacc.c:1652 */ +#line 291 "perly.y" { SV *label = cSVOPx_sv((ps[-1].val.opval)); (yyval.opval) = newSTATEOP(SvFLAGS(label) & SVf_UTF8, @@ -250,13 +250,13 @@ break; case 29: -#line 284 "perly.y" /* yacc.c:1652 */ +#line 301 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 30: -#line 286 "perly.y" /* yacc.c:1652 */ +#line 303 "perly.y" { CV *fmtcv = PL_compcv; newFORM((ps[-2].val.ival), (ps[-1].val.opval), (ps[0].val.opval)); @@ -270,7 +270,7 @@ break; case 31: -#line 298 "perly.y" /* yacc.c:1652 */ +#line 315 "perly.y" { init_named_cv(PL_compcv, (ps[-1].val.opval)); parser->in_my = 0; @@ -280,7 +280,7 @@ break; case 32: -#line 304 "perly.y" /* yacc.c:1652 */ +#line 321 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (ps[-5].val.opval)->op_type == OP_CONST @@ -295,7 +295,7 @@ break; case 33: -#line 319 "perly.y" /* yacc.c:1652 */ +#line 336 "perly.y" { init_named_cv(PL_compcv, (ps[-1].val.opval)); parser->in_my = 0; @@ -305,7 +305,7 @@ break; case 34: -#line 325 "perly.y" /* yacc.c:1652 */ +#line 342 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (ps[-4].val.opval)->op_type == OP_CONST @@ -320,7 +320,7 @@ break; case 35: -#line 336 "perly.y" /* yacc.c:1652 */ +#line 353 "perly.y" { package((ps[-1].val.opval)); if ((ps[-2].val.opval)) @@ -331,13 +331,13 @@ break; case 36: -#line 343 "perly.y" /* yacc.c:1652 */ +#line 360 "perly.y" { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ } break; case 37: -#line 345 "perly.y" /* yacc.c:1652 */ +#line 362 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); utilize((ps[-6].val.ival), (ps[-5].val.ival), (ps[-3].val.opval), (ps[-2].val.opval), (ps[-1].val.opval)); @@ -348,7 +348,7 @@ break; case 38: -#line 352 "perly.y" /* yacc.c:1652 */ +#line 369 "perly.y" { (yyval.opval) = block_end((ps[-4].val.ival), newCONDOP(0, (ps[-3].val.opval), op_scope((ps[-1].val.opval)), (ps[0].val.opval))); @@ -358,7 +358,7 @@ break; case 39: -#line 358 "perly.y" /* yacc.c:1652 */ +#line 375 "perly.y" { (yyval.opval) = block_end((ps[-4].val.ival), newCONDOP(0, (ps[-3].val.opval), (ps[0].val.opval), op_scope((ps[-1].val.opval)))); @@ -368,7 +368,7 @@ break; case 40: -#line 364 "perly.y" /* yacc.c:1652 */ +#line 381 "perly.y" { (yyval.opval) = block_end((ps[-3].val.ival), newGIVENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)), 0)); parser->copline = (line_t)(ps[-5].val.ival); @@ -377,19 +377,19 @@ break; case 41: -#line 369 "perly.y" /* yacc.c:1652 */ +#line 386 "perly.y" { (yyval.opval) = block_end((ps[-3].val.ival), newWHENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)))); } break; case 42: -#line 371 "perly.y" /* yacc.c:1652 */ +#line 388 "perly.y" { (yyval.opval) = newWHENOP(0, op_scope((ps[0].val.opval))); } break; case 43: -#line 373 "perly.y" /* yacc.c:1652 */ +#line 390 "perly.y" { (yyval.opval) = block_end((ps[-5].val.ival), newWHILEOP(0, 1, NULL, @@ -400,7 +400,7 @@ break; case 44: -#line 380 "perly.y" /* yacc.c:1652 */ +#line 397 "perly.y" { (yyval.opval) = block_end((ps[-5].val.ival), newWHILEOP(0, 1, NULL, @@ -411,19 +411,19 @@ break; case 45: -#line 387 "perly.y" /* yacc.c:1652 */ +#line 404 "perly.y" { parser->expect = XTERM; } break; case 46: -#line 389 "perly.y" /* yacc.c:1652 */ +#line 406 "perly.y" { parser->expect = XTERM; } break; case 47: -#line 392 "perly.y" /* yacc.c:1652 */ +#line 409 "perly.y" { OP *initop = (ps[-9].val.opval); OP *forop = newWHILEOP(0, 1, NULL, @@ -442,7 +442,7 @@ break; case 48: -#line 407 "perly.y" /* yacc.c:1652 */ +#line 424 "perly.y" { (yyval.opval) = block_end((ps[-6].val.ival), newFOROP(0, (ps[-5].val.opval), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))); parser->copline = (line_t)(ps[-8].val.ival); @@ -451,7 +451,7 @@ break; case 49: -#line 412 "perly.y" /* yacc.c:1652 */ +#line 429 "perly.y" { (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(0, op_lvalue((ps[-6].val.opval), OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))); @@ -461,13 +461,13 @@ break; case 50: -#line 418 "perly.y" /* yacc.c:1652 */ +#line 435 "perly.y" { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); } break; case 51: -#line 420 "perly.y" /* yacc.c:1652 */ +#line 437 "perly.y" { (yyval.opval) = block_end( (ps[-7].val.ival), @@ -484,7 +484,7 @@ break; case 52: -#line 433 "perly.y" /* yacc.c:1652 */ +#line 450 "perly.y" { (yyval.opval) = block_end((ps[-4].val.ival), newFOROP( 0, op_lvalue(newUNOP(OP_REFGEN, 0, @@ -496,7 +496,7 @@ break; case 53: -#line 441 "perly.y" /* yacc.c:1652 */ +#line 458 "perly.y" { (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(0, NULL, (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))); @@ -506,7 +506,28 @@ break; case 54: -#line 447 "perly.y" /* yacc.c:1652 */ +#line 464 "perly.y" + { parser->in_my = 1; } + + break; + + case 55: +#line 466 "perly.y" + { parser->in_my = 0; intro_my(); } + + break; + + case 56: +#line 468 "perly.y" + { + (yyval.opval) = newTRYCATCHOP(0, + (ps[-8].val.opval), (ps[-3].val.opval), block_end((ps[-4].val.ival), op_scope((ps[0].val.opval)))); + } + + break; + + case 57: +#line 473 "perly.y" { /* a block is a loop that happens once */ (yyval.opval) = newWHILEOP(0, 1, NULL, @@ -515,8 +536,8 @@ break; - case 55: -#line 453 "perly.y" /* yacc.c:1652 */ + case 58: +#line 479 "perly.y" { package((ps[-2].val.opval)); if ((ps[-3].val.opval)) { @@ -526,8 +547,8 @@ break; - case 56: -#line 460 "perly.y" /* yacc.c:1652 */ + case 59: +#line 486 "perly.y" { /* a block is a loop that happens once */ (yyval.opval) = newWHILEOP(0, 1, NULL, @@ -538,16 +559,16 @@ break; - case 57: -#line 468 "perly.y" /* yacc.c:1652 */ + case 60: +#line 494 "perly.y" { (yyval.opval) = (ps[-1].val.opval); } break; - case 58: -#line 472 "perly.y" /* yacc.c:1652 */ + case 61: +#line 498 "perly.y" { (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0), newSVOP(OP_CONST, 0, newSVpvs("Unimplemented"))); @@ -555,8 +576,8 @@ break; - case 59: -#line 477 "perly.y" /* yacc.c:1652 */ + case 62: +#line 503 "perly.y" { (yyval.opval) = NULL; parser->copline = NOLINE; @@ -564,8 +585,8 @@ break; - case 60: -#line 485 "perly.y" /* yacc.c:1652 */ + case 63: +#line 511 "perly.y" { OP *list; if ((ps[0].val.opval)) { OP *term = (ps[0].val.opval); @@ -583,75 +604,75 @@ break; - case 61: -#line 502 "perly.y" /* yacc.c:1652 */ + case 64: +#line 528 "perly.y" { (yyval.opval) = NULL; } break; - case 62: -#line 504 "perly.y" /* yacc.c:1652 */ + case 65: +#line 530 "perly.y" { (yyval.opval) = op_unscope((ps[-1].val.opval)); } break; - case 63: -#line 509 "perly.y" /* yacc.c:1652 */ + case 67: +#line 538 "perly.y" { (yyval.opval) = NULL; } break; - case 64: -#line 511 "perly.y" /* yacc.c:1652 */ + case 68: +#line 540 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 65: -#line 513 "perly.y" /* yacc.c:1652 */ + case 69: +#line 542 "perly.y" { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[0].val.opval), (ps[-2].val.opval)); } break; - case 66: -#line 515 "perly.y" /* yacc.c:1652 */ + case 70: +#line 544 "perly.y" { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[0].val.opval), (ps[-2].val.opval)); } break; - case 67: -#line 517 "perly.y" /* yacc.c:1652 */ + case 71: +#line 546 "perly.y" { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[0].val.opval)), (ps[-2].val.opval)); } break; - case 68: -#line 519 "perly.y" /* yacc.c:1652 */ + case 72: +#line 548 "perly.y" { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[0].val.opval), (ps[-2].val.opval)); } break; - case 69: -#line 521 "perly.y" /* yacc.c:1652 */ + case 73: +#line 550 "perly.y" { (yyval.opval) = newFOROP(0, NULL, (ps[0].val.opval), (ps[-2].val.opval), NULL); parser->copline = (line_t)(ps[-1].val.ival); } break; - case 70: -#line 524 "perly.y" /* yacc.c:1652 */ + case 74: +#line 553 "perly.y" { (yyval.opval) = newWHENOP((ps[0].val.opval), op_scope((ps[-2].val.opval))); } break; - case 71: -#line 529 "perly.y" /* yacc.c:1652 */ + case 75: +#line 558 "perly.y" { (yyval.opval) = NULL; } break; - case 72: -#line 531 "perly.y" /* yacc.c:1652 */ + case 76: +#line 560 "perly.y" { ((ps[0].val.opval))->op_flags |= OPf_PARENS; (yyval.opval) = op_scope((ps[0].val.opval)); @@ -659,8 +680,8 @@ break; - case 73: -#line 536 "perly.y" /* yacc.c:1652 */ + case 77: +#line 565 "perly.y" { parser->copline = (line_t)(ps[-5].val.ival); (yyval.opval) = newCONDOP(0, newSTATEOP(OPf_SPECIAL,NULL,(ps[-3].val.opval)), @@ -670,153 +691,153 @@ break; - case 74: -#line 546 "perly.y" /* yacc.c:1652 */ + case 78: +#line 575 "perly.y" { (yyval.opval) = NULL; } break; - case 75: -#line 548 "perly.y" /* yacc.c:1652 */ + case 79: +#line 577 "perly.y" { (yyval.opval) = op_scope((ps[0].val.opval)); } break; - case 76: -#line 553 "perly.y" /* yacc.c:1652 */ + case 80: +#line 582 "perly.y" { (yyval.ival) = (PL_min_intro_pending && PL_max_intro_pending >= PL_min_intro_pending); intro_my(); } break; - case 77: -#line 559 "perly.y" /* yacc.c:1652 */ + case 81: +#line 588 "perly.y" { (yyval.opval) = NULL; } break; - case 79: -#line 565 "perly.y" /* yacc.c:1652 */ + case 83: +#line 594 "perly.y" { YYSTYPE tmplval; (void)scan_num("1", &tmplval); (yyval.opval) = tmplval.opval; } break; - case 81: -#line 573 "perly.y" /* yacc.c:1652 */ + case 85: +#line 602 "perly.y" { (yyval.opval) = invert(scalar((ps[0].val.opval))); } break; - case 82: -#line 578 "perly.y" /* yacc.c:1652 */ + case 86: +#line 607 "perly.y" { (yyval.opval) = (ps[0].val.opval); intro_my(); } break; - case 83: -#line 582 "perly.y" /* yacc.c:1652 */ + case 87: +#line 611 "perly.y" { (yyval.opval) = (ps[0].val.opval); intro_my(); } break; - case 84: -#line 585 "perly.y" /* yacc.c:1652 */ + case 88: +#line 614 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 85: -#line 586 "perly.y" /* yacc.c:1652 */ + case 89: +#line 615 "perly.y" { (yyval.opval) = NULL; } break; - case 86: -#line 590 "perly.y" /* yacc.c:1652 */ + case 90: +#line 619 "perly.y" { (yyval.ival) = start_subparse(FALSE, 0); SAVEFREESV(PL_compcv); } break; - case 87: -#line 596 "perly.y" /* yacc.c:1652 */ + case 91: +#line 625 "perly.y" { (yyval.ival) = start_subparse(FALSE, CVf_ANON); SAVEFREESV(PL_compcv); } break; - case 88: -#line 601 "perly.y" /* yacc.c:1652 */ + case 92: +#line 630 "perly.y" { (yyval.ival) = start_subparse(TRUE, 0); SAVEFREESV(PL_compcv); } break; - case 91: -#line 612 "perly.y" /* yacc.c:1652 */ + case 95: +#line 641 "perly.y" { (yyval.opval) = NULL; } break; - case 93: -#line 618 "perly.y" /* yacc.c:1652 */ + case 97: +#line 647 "perly.y" { (yyval.opval) = NULL; } break; - case 94: -#line 620 "perly.y" /* yacc.c:1652 */ + case 98: +#line 649 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 95: -#line 622 "perly.y" /* yacc.c:1652 */ + case 99: +#line 651 "perly.y" { (yyval.opval) = NULL; } break; - case 96: -#line 627 "perly.y" /* yacc.c:1652 */ + case 100: +#line 656 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 97: -#line 629 "perly.y" /* yacc.c:1652 */ + case 101: +#line 658 "perly.y" { (yyval.opval) = NULL; } break; - case 98: -#line 640 "perly.y" /* yacc.c:1652 */ + case 102: +#line 669 "perly.y" { parser->in_my = 0; (yyval.opval) = NULL; } break; - case 99: -#line 642 "perly.y" /* yacc.c:1652 */ + case 103: +#line 671 "perly.y" { parser->in_my = 0; (yyval.opval) = (ps[0].val.opval); } break; - case 100: -#line 647 "perly.y" /* yacc.c:1652 */ + case 104: +#line 676 "perly.y" { (yyval.ival) = '@'; } break; - case 101: -#line 649 "perly.y" /* yacc.c:1652 */ + case 105: +#line 678 "perly.y" { (yyval.ival) = '%'; } break; - case 102: -#line 653 "perly.y" /* yacc.c:1652 */ + case 106: +#line 682 "perly.y" { I32 sigil = (ps[-2].val.ival); OP *var = (ps[-1].val.opval); @@ -835,26 +856,26 @@ break; - case 103: -#line 672 "perly.y" /* yacc.c:1652 */ + case 107: +#line 701 "perly.y" { (yyval.opval) = NULL; } break; - case 104: -#line 674 "perly.y" /* yacc.c:1652 */ + case 108: +#line 703 "perly.y" { (yyval.opval) = newOP(OP_NULL, 0); } break; - case 105: -#line 676 "perly.y" /* yacc.c:1652 */ + case 109: +#line 705 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 106: -#line 682 "perly.y" /* yacc.c:1652 */ + case 110: +#line 711 "perly.y" { OP *var = (ps[-1].val.opval); OP *defexpr = (ps[0].val.opval); @@ -918,70 +939,70 @@ break; - case 107: -#line 747 "perly.y" /* yacc.c:1652 */ + case 111: +#line 776 "perly.y" { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); } break; - case 108: -#line 749 "perly.y" /* yacc.c:1652 */ + case 112: +#line 778 "perly.y" { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); } break; - case 109: -#line 755 "perly.y" /* yacc.c:1652 */ + case 113: +#line 784 "perly.y" { (yyval.opval) = (ps[-1].val.opval); } break; - case 110: -#line 757 "perly.y" /* yacc.c:1652 */ + case 114: +#line 786 "perly.y" { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 111: -#line 761 "perly.y" /* yacc.c:1652 */ + case 115: +#line 790 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 112: -#line 766 "perly.y" /* yacc.c:1652 */ + case 116: +#line 795 "perly.y" { (yyval.opval) = NULL; } break; - case 113: -#line 768 "perly.y" /* yacc.c:1652 */ + case 117: +#line 797 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 114: -#line 772 "perly.y" /* yacc.c:1652 */ + case 118: +#line 801 "perly.y" { (yyval.opval) = NULL; } break; - case 115: -#line 774 "perly.y" /* yacc.c:1652 */ + case 119: +#line 803 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 116: -#line 778 "perly.y" /* yacc.c:1652 */ + case 120: +#line 807 "perly.y" { (yyval.opval) = (ps[-1].val.opval); } break; - case 117: -#line 781 "perly.y" /* yacc.c:1652 */ + case 121: +#line 810 "perly.y" { ENTER; SAVEIV(parser->sig_elems); @@ -995,8 +1016,8 @@ break; - case 118: -#line 792 "perly.y" /* yacc.c:1652 */ + case 122: +#line 821 "perly.y" { OP *sigops = (ps[0].val.opval); struct op_argcheck_aux *aux; @@ -1054,20 +1075,20 @@ break; - case 119: -#line 849 "perly.y" /* yacc.c:1652 */ + case 123: +#line 878 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 120: -#line 850 "perly.y" /* yacc.c:1652 */ + case 124: +#line 879 "perly.y" { (yyval.opval) = NULL; } break; - case 121: -#line 856 "perly.y" /* yacc.c:1652 */ + case 125: +#line 885 "perly.y" { if (parser->copline > (line_t)(ps[-2].val.ival)) parser->copline = (line_t)(ps[-2].val.ival); @@ -1076,20 +1097,20 @@ break; - case 122: -#line 866 "perly.y" /* yacc.c:1652 */ + case 126: +#line 895 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 123: -#line 867 "perly.y" /* yacc.c:1652 */ + case 127: +#line 896 "perly.y" { (yyval.opval) = NULL; } break; - case 124: -#line 871 "perly.y" /* yacc.c:1652 */ + case 128: +#line 900 "perly.y" { if (parser->copline > (line_t)(ps[-2].val.ival)) parser->copline = (line_t)(ps[-2].val.ival); @@ -1099,32 +1120,26 @@ break; - case 125: -#line 882 "perly.y" /* yacc.c:1652 */ + case 129: +#line 911 "perly.y" { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 126: -#line 884 "perly.y" /* yacc.c:1652 */ + case 130: +#line 913 "perly.y" { (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 127: -#line 886 "perly.y" /* yacc.c:1652 */ - { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); } - - break; - - case 129: -#line 892 "perly.y" /* yacc.c:1652 */ + case 132: +#line 919 "perly.y" { (yyval.opval) = (ps[-1].val.opval); } break; - case 130: -#line 894 "perly.y" /* yacc.c:1652 */ + case 133: +#line 921 "perly.y" { OP* term = (ps[0].val.opval); (yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), term); @@ -1132,24 +1147,24 @@ break; - case 132: -#line 903 "perly.y" /* yacc.c:1652 */ + case 135: +#line 930 "perly.y" { (yyval.opval) = op_convert_list((ps[-2].val.ival), OPf_STACKED, op_prepend_elem(OP_LIST, newGVREF((ps[-2].val.ival),(ps[-1].val.opval)), (ps[0].val.opval)) ); } break; - case 133: -#line 907 "perly.y" /* yacc.c:1652 */ + case 136: +#line 934 "perly.y" { (yyval.opval) = op_convert_list((ps[-4].val.ival), OPf_STACKED, op_prepend_elem(OP_LIST, newGVREF((ps[-4].val.ival),(ps[-2].val.opval)), (ps[-1].val.opval)) ); } break; - case 134: -#line 911 "perly.y" /* yacc.c:1652 */ + case 137: +#line 938 "perly.y" { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, scalar((ps[-5].val.opval)), (ps[-1].val.opval)), @@ -1158,8 +1173,8 @@ break; - case 135: -#line 917 "perly.y" /* yacc.c:1652 */ + case 138: +#line 944 "perly.y" { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, scalar((ps[-2].val.opval)), newMETHOP(OP_METHOD, 0, (ps[0].val.opval)))); @@ -1167,8 +1182,8 @@ break; - case 136: -#line 922 "perly.y" /* yacc.c:1652 */ + case 139: +#line 949 "perly.y" { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)), @@ -1177,8 +1192,8 @@ break; - case 137: -#line 928 "perly.y" /* yacc.c:1652 */ + case 140: +#line 955 "perly.y" { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, (ps[-3].val.opval), (ps[-1].val.opval)), @@ -1187,33 +1202,33 @@ break; - case 138: -#line 934 "perly.y" /* yacc.c:1652 */ + case 141: +#line 961 "perly.y" { (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); } break; - case 139: -#line 936 "perly.y" /* yacc.c:1652 */ + case 142: +#line 963 "perly.y" { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); } break; - case 140: -#line 938 "perly.y" /* yacc.c:1652 */ + case 143: +#line 965 "perly.y" { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); } break; - case 141: -#line 940 "perly.y" /* yacc.c:1652 */ + case 144: +#line 967 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[-1].val.ival), 0, NULL, (ps[0].val.opval)); } break; - case 142: -#line 943 "perly.y" /* yacc.c:1652 */ + case 145: +#line 970 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)), (ps[-4].val.opval))); @@ -1221,21 +1236,21 @@ break; - case 145: -#line 958 "perly.y" /* yacc.c:1652 */ + case 148: +#line 985 "perly.y" { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[-4].val.opval), scalar((ps[-2].val.opval))); } break; - case 146: -#line 960 "perly.y" /* yacc.c:1652 */ + case 149: +#line 987 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[-3].val.opval)), scalar((ps[-1].val.opval))); } break; - case 147: -#line 963 "perly.y" /* yacc.c:1652 */ + case 150: +#line 990 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, ref(newAVREF((ps[-4].val.opval)),OP_RV2AV), scalar((ps[-1].val.opval))); @@ -1243,8 +1258,8 @@ break; - case 148: -#line 968 "perly.y" /* yacc.c:1652 */ + case 151: +#line 995 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, ref(newAVREF((ps[-3].val.opval)),OP_RV2AV), scalar((ps[-1].val.opval))); @@ -1252,31 +1267,31 @@ break; - case 149: -#line 973 "perly.y" /* yacc.c:1652 */ + case 152: +#line 1000 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[-4].val.opval)), jmaybe((ps[-2].val.opval))); } break; - case 150: -#line 976 "perly.y" /* yacc.c:1652 */ + case 153: +#line 1003 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, ref(newHVREF((ps[-5].val.opval)),OP_RV2HV), jmaybe((ps[-2].val.opval))); } break; - case 151: -#line 980 "perly.y" /* yacc.c:1652 */ + case 154: +#line 1007 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, ref(newHVREF((ps[-4].val.opval)),OP_RV2HV), jmaybe((ps[-2].val.opval))); } break; - case 152: -#line 984 "perly.y" /* yacc.c:1652 */ + case 155: +#line 1011 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar((ps[-3].val.opval)))); if (parser->expect == XBLOCK) @@ -1285,8 +1300,8 @@ break; - case 153: -#line 990 "perly.y" /* yacc.c:1652 */ + case 156: +#line 1017 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[-1].val.opval), newCVREF(0, scalar((ps[-4].val.opval))))); @@ -1296,8 +1311,8 @@ break; - case 154: -#line 998 "perly.y" /* yacc.c:1652 */ + case 157: +#line 1025 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[-1].val.opval), newCVREF(0, scalar((ps[-3].val.opval))))); @@ -1307,8 +1322,8 @@ break; - case 155: -#line 1005 "perly.y" /* yacc.c:1652 */ + case 158: +#line 1032 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar((ps[-2].val.opval)))); if (parser->expect == XBLOCK) @@ -1317,38 +1332,38 @@ break; - case 156: -#line 1011 "perly.y" /* yacc.c:1652 */ + case 159: +#line 1038 "perly.y" { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); } break; - case 157: -#line 1013 "perly.y" /* yacc.c:1652 */ + case 160: +#line 1040 "perly.y" { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); } break; - case 158: -#line 1015 "perly.y" /* yacc.c:1652 */ + case 161: +#line 1042 "perly.y" { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), NULL); } break; - case 159: -#line 1020 "perly.y" /* yacc.c:1652 */ + case 162: +#line 1047 "perly.y" { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); } break; - case 160: -#line 1022 "perly.y" /* yacc.c:1652 */ + case 163: +#line 1049 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; - case 161: -#line 1024 "perly.y" /* yacc.c:1652 */ + case 164: +#line 1051 "perly.y" { if ((ps[-1].val.ival) != OP_REPEAT) scalar((ps[-2].val.opval)); (yyval.opval) = newBINOP((ps[-1].val.ival), 0, (ps[-2].val.opval), scalar((ps[0].val.opval))); @@ -1356,184 +1371,184 @@ break; - case 162: -#line 1029 "perly.y" /* yacc.c:1652 */ + case 165: +#line 1056 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; - case 163: -#line 1031 "perly.y" /* yacc.c:1652 */ + case 166: +#line 1058 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; - case 164: -#line 1033 "perly.y" /* yacc.c:1652 */ + case 167: +#line 1060 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 165: -#line 1035 "perly.y" /* yacc.c:1652 */ + case 168: +#line 1062 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 166: -#line 1037 "perly.y" /* yacc.c:1652 */ + case 169: +#line 1064 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; - case 167: -#line 1039 "perly.y" /* yacc.c:1652 */ + case 170: +#line 1066 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; - case 168: -#line 1041 "perly.y" /* yacc.c:1652 */ + case 171: +#line 1068 "perly.y" { (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; - case 169: -#line 1043 "perly.y" /* yacc.c:1652 */ + case 172: +#line 1070 "perly.y" { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 170: -#line 1045 "perly.y" /* yacc.c:1652 */ + case 173: +#line 1072 "perly.y" { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 171: -#line 1047 "perly.y" /* yacc.c:1652 */ + case 174: +#line 1074 "perly.y" { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 172: -#line 1049 "perly.y" /* yacc.c:1652 */ + case 175: +#line 1076 "perly.y" { (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 173: -#line 1053 "perly.y" /* yacc.c:1652 */ + case 176: +#line 1080 "perly.y" { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); } break; - case 174: -#line 1055 "perly.y" /* yacc.c:1652 */ + case 177: +#line 1082 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; - case 175: -#line 1057 "perly.y" /* yacc.c:1652 */ + case 178: +#line 1084 "perly.y" { yyerror("syntax error"); YYERROR; } break; - case 176: -#line 1059 "perly.y" /* yacc.c:1652 */ + case 179: +#line 1086 "perly.y" { yyerror("syntax error"); YYERROR; } break; - case 177: -#line 1063 "perly.y" /* yacc.c:1652 */ + case 180: +#line 1090 "perly.y" { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 178: -#line 1065 "perly.y" /* yacc.c:1652 */ + case 181: +#line 1092 "perly.y" { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 179: -#line 1069 "perly.y" /* yacc.c:1652 */ + case 182: +#line 1096 "perly.y" { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); } break; - case 180: -#line 1071 "perly.y" /* yacc.c:1652 */ + case 183: +#line 1098 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; - case 181: -#line 1073 "perly.y" /* yacc.c:1652 */ + case 184: +#line 1100 "perly.y" { yyerror("syntax error"); YYERROR; } break; - case 182: -#line 1075 "perly.y" /* yacc.c:1652 */ + case 185: +#line 1102 "perly.y" { yyerror("syntax error"); YYERROR; } break; - case 183: -#line 1079 "perly.y" /* yacc.c:1652 */ + case 186: +#line 1106 "perly.y" { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 184: -#line 1081 "perly.y" /* yacc.c:1652 */ + case 187: +#line 1108 "perly.y" { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 185: -#line 1086 "perly.y" /* yacc.c:1652 */ + case 188: +#line 1113 "perly.y" { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); } break; - case 186: -#line 1088 "perly.y" /* yacc.c:1652 */ + case 189: +#line 1115 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 187: -#line 1091 "perly.y" /* yacc.c:1652 */ + case 190: +#line 1118 "perly.y" { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); } break; - case 188: -#line 1093 "perly.y" /* yacc.c:1652 */ + case 191: +#line 1120 "perly.y" { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); } break; - case 189: -#line 1095 "perly.y" /* yacc.c:1652 */ + case 192: +#line 1122 "perly.y" { (yyval.opval) = newUNOP(OP_POSTINC, 0, op_lvalue(scalar((ps[-1].val.opval)), OP_POSTINC)); } break; - case 190: -#line 1098 "perly.y" /* yacc.c:1652 */ + case 193: +#line 1125 "perly.y" { (yyval.opval) = newUNOP(OP_POSTDEC, 0, op_lvalue(scalar((ps[-1].val.opval)), OP_POSTDEC));} break; - case 191: -#line 1101 "perly.y" /* yacc.c:1652 */ + case 194: +#line 1128 "perly.y" { (yyval.opval) = op_convert_list(OP_JOIN, 0, op_append_elem( OP_LIST, @@ -1547,156 +1562,156 @@ break; - case 192: -#line 1112 "perly.y" /* yacc.c:1652 */ + case 195: +#line 1139 "perly.y" { (yyval.opval) = newUNOP(OP_PREINC, 0, op_lvalue(scalar((ps[0].val.opval)), OP_PREINC)); } break; - case 193: -#line 1115 "perly.y" /* yacc.c:1652 */ + case 196: +#line 1142 "perly.y" { (yyval.opval) = newUNOP(OP_PREDEC, 0, op_lvalue(scalar((ps[0].val.opval)), OP_PREDEC)); } break; - case 194: -#line 1122 "perly.y" /* yacc.c:1652 */ + case 197: +#line 1149 "perly.y" { (yyval.opval) = newANONLIST((ps[-1].val.opval)); } break; - case 195: -#line 1124 "perly.y" /* yacc.c:1652 */ + case 198: +#line 1151 "perly.y" { (yyval.opval) = newANONLIST(NULL);} break; - case 196: -#line 1126 "perly.y" /* yacc.c:1652 */ + case 199: +#line 1153 "perly.y" { (yyval.opval) = newANONHASH((ps[-2].val.opval)); } break; - case 197: -#line 1128 "perly.y" /* yacc.c:1652 */ + case 200: +#line 1155 "perly.y" { (yyval.opval) = newANONHASH(NULL); } break; - case 198: -#line 1130 "perly.y" /* yacc.c:1652 */ + case 201: +#line 1157 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[-3].val.ival), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval)); } break; - case 199: -#line 1133 "perly.y" /* yacc.c:1652 */ + case 202: +#line 1160 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[-2].val.ival), NULL, (ps[-1].val.opval), (ps[0].val.opval)); } break; - case 200: -#line 1139 "perly.y" /* yacc.c:1652 */ + case 203: +#line 1166 "perly.y" { (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));} break; - case 201: -#line 1141 "perly.y" /* yacc.c:1652 */ + case 204: +#line 1168 "perly.y" { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));} break; - case 206: -#line 1149 "perly.y" /* yacc.c:1652 */ + case 209: +#line 1176 "perly.y" { (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 207: -#line 1151 "perly.y" /* yacc.c:1652 */ + case 210: +#line 1178 "perly.y" { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); } break; - case 208: -#line 1153 "perly.y" /* yacc.c:1652 */ + case 211: +#line 1180 "perly.y" { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); } break; - case 209: -#line 1155 "perly.y" /* yacc.c:1652 */ + case 212: +#line 1182 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 210: -#line 1157 "perly.y" /* yacc.c:1652 */ + case 213: +#line 1184 "perly.y" { (yyval.opval) = localize((ps[0].val.opval),0); } break; - case 211: -#line 1159 "perly.y" /* yacc.c:1652 */ + case 214: +#line 1186 "perly.y" { (yyval.opval) = sawparens((ps[-1].val.opval)); } break; - case 212: -#line 1161 "perly.y" /* yacc.c:1652 */ + case 215: +#line 1188 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 213: -#line 1163 "perly.y" /* yacc.c:1652 */ + case 216: +#line 1190 "perly.y" { (yyval.opval) = sawparens(newNULLLIST()); } break; - case 214: -#line 1165 "perly.y" /* yacc.c:1652 */ + case 217: +#line 1192 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 215: -#line 1167 "perly.y" /* yacc.c:1652 */ + case 218: +#line 1194 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 216: -#line 1169 "perly.y" /* yacc.c:1652 */ + case 219: +#line 1196 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 217: -#line 1171 "perly.y" /* yacc.c:1652 */ + case 220: +#line 1198 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 218: -#line 1173 "perly.y" /* yacc.c:1652 */ + case 221: +#line 1200 "perly.y" { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));} break; - case 219: -#line 1175 "perly.y" /* yacc.c:1652 */ + case 222: +#line 1202 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 220: -#line 1177 "perly.y" /* yacc.c:1652 */ + case 223: +#line 1204 "perly.y" { (yyval.opval) = op_prepend_elem(OP_ASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_ASLICE, 0, @@ -1709,8 +1724,8 @@ break; - case 221: -#line 1187 "perly.y" /* yacc.c:1652 */ + case 224: +#line 1214 "perly.y" { (yyval.opval) = op_prepend_elem(OP_KVASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_KVASLICE, 0, @@ -1723,8 +1738,8 @@ break; - case 222: -#line 1197 "perly.y" /* yacc.c:1652 */ + case 225: +#line 1224 "perly.y" { (yyval.opval) = op_prepend_elem(OP_HSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_HSLICE, 0, @@ -1737,8 +1752,8 @@ break; - case 223: -#line 1207 "perly.y" /* yacc.c:1652 */ + case 226: +#line 1234 "perly.y" { (yyval.opval) = op_prepend_elem(OP_KVHSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_KVHSLICE, 0, @@ -1751,27 +1766,27 @@ break; - case 224: -#line 1217 "perly.y" /* yacc.c:1652 */ + case 227: +#line 1244 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 225: -#line 1219 "perly.y" /* yacc.c:1652 */ + case 228: +#line 1246 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[0].val.opval))); } break; - case 226: -#line 1221 "perly.y" /* yacc.c:1652 */ + case 229: +#line 1248 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[-2].val.opval))); } break; - case 227: -#line 1224 "perly.y" /* yacc.c:1652 */ + case 230: +#line 1251 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[-1].val.opval), scalar((ps[-3].val.opval)))); @@ -1779,153 +1794,153 @@ break; - case 228: -#line 1229 "perly.y" /* yacc.c:1652 */ + case 231: +#line 1256 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); } break; - case 229: -#line 1233 "perly.y" /* yacc.c:1652 */ + case 232: +#line 1260 "perly.y" { (yyval.opval) = newSVREF((ps[-3].val.opval)); } break; - case 230: -#line 1235 "perly.y" /* yacc.c:1652 */ + case 233: +#line 1262 "perly.y" { (yyval.opval) = newAVREF((ps[-3].val.opval)); } break; - case 231: -#line 1237 "perly.y" /* yacc.c:1652 */ + case 234: +#line 1264 "perly.y" { (yyval.opval) = newHVREF((ps[-3].val.opval)); } break; - case 232: -#line 1239 "perly.y" /* yacc.c:1652 */ + case 235: +#line 1266 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); } break; - case 233: -#line 1242 "perly.y" /* yacc.c:1652 */ + case 236: +#line 1269 "perly.y" { (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); } break; - case 234: -#line 1244 "perly.y" /* yacc.c:1652 */ + case 237: +#line 1271 "perly.y" { (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL); PL_hints |= HINT_BLOCK_SCOPE; } break; - case 235: -#line 1247 "perly.y" /* yacc.c:1652 */ + case 238: +#line 1274 "perly.y" { (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); } break; - case 236: -#line 1249 "perly.y" /* yacc.c:1652 */ + case 239: +#line 1276 "perly.y" { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); } break; - case 237: -#line 1251 "perly.y" /* yacc.c:1652 */ + case 240: +#line 1278 "perly.y" { (yyval.opval) = newOP((ps[0].val.ival), 0); } break; - case 238: -#line 1253 "perly.y" /* yacc.c:1652 */ + case 241: +#line 1280 "perly.y" { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); } break; - case 239: -#line 1255 "perly.y" /* yacc.c:1652 */ + case 242: +#line 1282 "perly.y" { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); } break; - case 240: -#line 1257 "perly.y" /* yacc.c:1652 */ + case 243: +#line 1284 "perly.y" { (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); } break; - case 241: -#line 1259 "perly.y" /* yacc.c:1652 */ + case 244: +#line 1286 "perly.y" { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); } break; - case 242: -#line 1261 "perly.y" /* yacc.c:1652 */ + case 245: +#line 1288 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); } break; - case 243: -#line 1263 "perly.y" /* yacc.c:1652 */ + case 246: +#line 1290 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); } break; - case 244: -#line 1266 "perly.y" /* yacc.c:1652 */ + case 247: +#line 1293 "perly.y" { (yyval.opval) = newOP((ps[0].val.ival), 0); } break; - case 245: -#line 1268 "perly.y" /* yacc.c:1652 */ + case 248: +#line 1295 "perly.y" { (yyval.opval) = newOP((ps[-2].val.ival), 0);} break; - case 246: -#line 1270 "perly.y" /* yacc.c:1652 */ + case 249: +#line 1297 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 247: -#line 1272 "perly.y" /* yacc.c:1652 */ + case 250: +#line 1299 "perly.y" { (yyval.opval) = (ps[-2].val.opval); } break; - case 248: -#line 1274 "perly.y" /* yacc.c:1652 */ + case 251: +#line 1301 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); } break; - case 249: -#line 1276 "perly.y" /* yacc.c:1652 */ + case 252: +#line 1303 "perly.y" { (yyval.opval) = ((ps[-2].val.ival) == OP_NOT) ? newUNOP((ps[-2].val.ival), 0, newSVOP(OP_CONST, 0, newSViv(0))) : newOP((ps[-2].val.ival), OPf_SPECIAL); } break; - case 250: -#line 1280 "perly.y" /* yacc.c:1652 */ + case 253: +#line 1307 "perly.y" { (yyval.opval) = newUNOP((ps[-3].val.ival), 0, (ps[-1].val.opval)); } break; - case 251: -#line 1282 "perly.y" /* yacc.c:1652 */ + case 254: +#line 1309 "perly.y" { if ( (ps[0].val.opval)->op_type != OP_TRANS && (ps[0].val.opval)->op_type != OP_TRANSR @@ -1939,186 +1954,186 @@ break; - case 252: -#line 1293 "perly.y" /* yacc.c:1652 */ + case 255: +#line 1320 "perly.y" { (yyval.opval) = pmruntime((ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), 1, (ps[-4].val.ival)); } break; - case 256: -#line 1301 "perly.y" /* yacc.c:1652 */ + case 259: +#line 1328 "perly.y" { (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); } break; - case 257: -#line 1303 "perly.y" /* yacc.c:1652 */ + case 260: +#line 1330 "perly.y" { (yyval.opval) = localize((ps[0].val.opval),1); } break; - case 258: -#line 1305 "perly.y" /* yacc.c:1652 */ + case 261: +#line 1332 "perly.y" { (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[-1].val.opval),(ps[0].val.opval))); } break; - case 259: -#line 1310 "perly.y" /* yacc.c:1652 */ + case 262: +#line 1337 "perly.y" { (yyval.opval) = sawparens((ps[-1].val.opval)); } break; - case 260: -#line 1312 "perly.y" /* yacc.c:1652 */ + case 263: +#line 1339 "perly.y" { (yyval.opval) = sawparens(newNULLLIST()); } break; - case 261: -#line 1315 "perly.y" /* yacc.c:1652 */ + case 264: +#line 1342 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 262: -#line 1317 "perly.y" /* yacc.c:1652 */ + case 265: +#line 1344 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 263: -#line 1319 "perly.y" /* yacc.c:1652 */ + case 266: +#line 1346 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 264: -#line 1324 "perly.y" /* yacc.c:1652 */ + case 267: +#line 1351 "perly.y" { (yyval.opval) = NULL; } break; - case 265: -#line 1326 "perly.y" /* yacc.c:1652 */ + case 268: +#line 1353 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 266: -#line 1330 "perly.y" /* yacc.c:1652 */ + case 269: +#line 1357 "perly.y" { (yyval.opval) = NULL; } break; - case 267: -#line 1332 "perly.y" /* yacc.c:1652 */ + case 270: +#line 1359 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 268: -#line 1336 "perly.y" /* yacc.c:1652 */ + case 271: +#line 1363 "perly.y" { (yyval.opval) = NULL; } break; - case 269: -#line 1338 "perly.y" /* yacc.c:1652 */ + case 272: +#line 1365 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 270: -#line 1344 "perly.y" /* yacc.c:1652 */ + case 273: +#line 1371 "perly.y" { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); } break; - case 278: -#line 1361 "perly.y" /* yacc.c:1652 */ + case 281: +#line 1388 "perly.y" { (yyval.opval) = newCVREF((ps[-1].val.ival),(ps[0].val.opval)); } break; - case 279: -#line 1365 "perly.y" /* yacc.c:1652 */ + case 282: +#line 1392 "perly.y" { (yyval.opval) = newSVREF((ps[0].val.opval)); } break; - case 280: -#line 1369 "perly.y" /* yacc.c:1652 */ + case 283: +#line 1396 "perly.y" { (yyval.opval) = newAVREF((ps[0].val.opval)); if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival); } break; - case 281: -#line 1375 "perly.y" /* yacc.c:1652 */ + case 284: +#line 1402 "perly.y" { (yyval.opval) = newHVREF((ps[0].val.opval)); if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival); } break; - case 282: -#line 1381 "perly.y" /* yacc.c:1652 */ + case 285: +#line 1408 "perly.y" { (yyval.opval) = newAVREF((ps[0].val.opval)); } break; - case 283: -#line 1383 "perly.y" /* yacc.c:1652 */ + case 286: +#line 1410 "perly.y" { (yyval.opval) = newAVREF((ps[-3].val.opval)); } break; - case 284: -#line 1387 "perly.y" /* yacc.c:1652 */ + case 287: +#line 1414 "perly.y" { (yyval.opval) = newGVREF(0,(ps[0].val.opval)); } break; - case 286: -#line 1392 "perly.y" /* yacc.c:1652 */ + case 289: +#line 1419 "perly.y" { (yyval.opval) = newAVREF((ps[-2].val.opval)); } break; - case 288: -#line 1397 "perly.y" /* yacc.c:1652 */ + case 291: +#line 1424 "perly.y" { (yyval.opval) = newHVREF((ps[-2].val.opval)); } break; - case 290: -#line 1402 "perly.y" /* yacc.c:1652 */ + case 293: +#line 1429 "perly.y" { (yyval.opval) = newGVREF(0,(ps[-2].val.opval)); } break; - case 291: -#line 1407 "perly.y" /* yacc.c:1652 */ + case 294: +#line 1434 "perly.y" { (yyval.opval) = scalar((ps[0].val.opval)); } break; - case 292: -#line 1409 "perly.y" /* yacc.c:1652 */ + case 295: +#line 1436 "perly.y" { (yyval.opval) = scalar((ps[0].val.opval)); } break; - case 293: -#line 1411 "perly.y" /* yacc.c:1652 */ + case 296: +#line 1438 "perly.y" { (yyval.opval) = op_scope((ps[0].val.opval)); } break; - case 294: -#line 1414 "perly.y" /* yacc.c:1652 */ + case 297: +#line 1441 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; @@ -2129,6 +2144,6 @@ /* Generated from: - * e5b801fdebce5c77dd8e644fc5a489cbea6af33db180e771dd9d669b12bbe0cf perly.y - * 0947213b55d0ed11693554bea04987e886cf285f5c14cf9075fa1e7acc3f4061 regen_perly.pl + * 427b422b0ce1154d834dc461973a3254729575694f98ab600032f67ccab7b9e5 perly.y + * acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl * ex: set ro: */ diff -Nru perl-5.32.1/perly.c perl-5.34.0/perly.c --- perl-5.32.1/perly.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/perly.c 2021-01-20 23:04:44.000000000 +0000 @@ -53,6 +53,24 @@ # define YY_NULLPTR NULL #endif +#ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED +# endif +#endif + /* contains all the parser state tables; auto-generated from perly.y */ #include "perly.tab" @@ -75,15 +93,15 @@ # define YYDPRINTF(Args) \ do { \ if (yydebug) \ - YYFPRINTF Args; \ + YYFPRINTF Args; \ } while (0) # define YYDSYMPRINTF(Title, Token, Value) \ do { \ if (yydebug) { \ - YYFPRINTF (Perl_debug_log, "%s ", Title); \ - yysymprint (aTHX_ Perl_debug_log, Token, Value); \ - YYFPRINTF (Perl_debug_log, "\n"); \ + YYFPRINTF (Perl_debug_log, "%s ", Title); \ + yysymprint (aTHX_ Perl_debug_log, Token, Value); \ + YYFPRINTF (Perl_debug_log, "\n"); \ } \ } while (0) @@ -96,15 +114,15 @@ { PERL_UNUSED_CONTEXT; if (yytype < YYNTOKENS) { - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); # ifdef YYPRINT - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else - YYFPRINTF (yyoutput, "0x%" UVxf, (UV)yyvaluep->ival); + YYFPRINTF (yyoutput, "0x%" UVxf, (UV)yyvaluep->ival); # endif } else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); YYFPRINTF (yyoutput, ")"); } @@ -121,36 +139,36 @@ min = parser->ps - 8 + 1; if (min <= parser->stack) - min = parser->stack + 1; + min = parser->stack + 1; PerlIO_printf(Perl_debug_log, "\nindex:"); for (ps = min; ps <= parser->ps; ps++) - PerlIO_printf(Perl_debug_log, " %8d", (int)(ps - parser->stack)); + PerlIO_printf(Perl_debug_log, " %8d", (int)(ps - parser->stack)); PerlIO_printf(Perl_debug_log, "\nstate:"); for (ps = min; ps <= parser->ps; ps++) - PerlIO_printf(Perl_debug_log, " %8d", ps->state); + PerlIO_printf(Perl_debug_log, " %8d", ps->state); PerlIO_printf(Perl_debug_log, "\ntoken:"); for (ps = min; ps <= parser->ps; ps++) - PerlIO_printf(Perl_debug_log, " %8.8s", ps->name); + PerlIO_printf(Perl_debug_log, " %8.8s", ps->name); PerlIO_printf(Perl_debug_log, "\nvalue:"); for (ps = min; ps <= parser->ps; ps++) { - switch (yy_type_tab[yystos[ps->state]]) { - case toketype_opval: - PerlIO_printf(Perl_debug_log, " %8.8s", - ps->val.opval - ? PL_op_name[ps->val.opval->op_type] - : "(Nullop)" - ); - break; - case toketype_ival: - PerlIO_printf(Perl_debug_log, " %8" IVdf, (IV)ps->val.ival); - break; - default: - PerlIO_printf(Perl_debug_log, " %8" UVxf, (UV)ps->val.ival); - } + switch (yy_type_tab[yystos[ps->state]]) { + case toketype_opval: + PerlIO_printf(Perl_debug_log, " %8.8s", + ps->val.opval + ? PL_op_name[ps->val.opval->op_type] + : "(Nullop)" + ); + break; + case toketype_ival: + PerlIO_printf(Perl_debug_log, " %8" IVdf, (IV)ps->val.ival); + break; + default: + PerlIO_printf(Perl_debug_log, " %8" UVxf, (UV)ps->val.ival); + } } PerlIO_printf(Perl_debug_log, "\n\n"); } @@ -158,7 +176,7 @@ # define YY_STACK_PRINT(parser) \ do { \ if (yydebug && DEBUG_v_TEST) \ - yy_stack_print (aTHX_ parser); \ + yy_stack_print (aTHX_ parser); \ } while (0) @@ -172,15 +190,15 @@ int yyi; const unsigned int yylineno = yyrline[yyrule]; YYFPRINTF (Perl_debug_log, "Reducing stack by rule %d (line %u), ", - yyrule - 1, yylineno); + yyrule - 1, yylineno); /* Print the symbols being reduced, and their result. */ #if PERL_BISON_VERSION >= 30000 /* 3.0+ */ for (yyi = 0; yyi < yyr2[yyrule]; yyi++) - YYFPRINTF (Perl_debug_log, "%s ", + YYFPRINTF (Perl_debug_log, "%s ", yytname [yystos[(PL_parser->ps)[yyi + 1 - yyr2[yyrule]].state]]); #else for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) - YYFPRINTF (Perl_debug_log, "%s ", yytname [yyrhs[yyi]]); + YYFPRINTF (Perl_debug_log, "%s ", yytname [yyrhs[yyi]]); #endif YYFPRINTF (Perl_debug_log, "-> %s\n", yytname [yyr1[yyrule]]); } @@ -188,7 +206,7 @@ # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ - yy_reduce_print (aTHX_ Rule); \ + yy_reduce_print (aTHX_ Rule); \ } while (0) #else /* !DEBUGGING */ @@ -208,32 +226,32 @@ int i = 0; if (!parser->stack) - return; + return; YYDPRINTF ((Perl_debug_log, "clearing the parse stack\n")); for (i=0; i< parser->yylen; i++) { - SvREFCNT_dec(ps[-i].compcv); + SvREFCNT_dec(ps[-i].compcv); } ps -= parser->yylen; /* now free whole the stack, including the just-reduced ops */ while (ps > parser->stack) { - LEAVE_SCOPE(ps->savestack_ix); - if (yy_type_tab[yystos[ps->state]] == toketype_opval - && ps->val.opval) - { - if (ps->compcv && (ps->compcv != PL_compcv)) { - PL_compcv = ps->compcv; - PAD_SET_CUR_NOSAVE(CvPADLIST(PL_compcv), 1); - PL_comppad_name = PadlistNAMES(CvPADLIST(PL_compcv)); - } - YYDPRINTF ((Perl_debug_log, "(freeing op)\n")); - op_free(ps->val.opval); - } - SvREFCNT_dec(ps->compcv); - ps--; + LEAVE_SCOPE(ps->savestack_ix); + if (yy_type_tab[yystos[ps->state]] == toketype_opval + && ps->val.opval) + { + if (ps->compcv && (ps->compcv != PL_compcv)) { + PL_compcv = ps->compcv; + PAD_SET_CUR_NOSAVE(CvPADLIST(PL_compcv), 1); + PL_comppad_name = PadlistNAMES(CvPADLIST(PL_compcv)); + } + YYDPRINTF ((Perl_debug_log, "(freeing op)\n")); + op_free(ps->val.opval); + } + SvREFCNT_dec(ps->compcv); + ps--; } Safefree(parser->stack); @@ -247,7 +265,6 @@ int Perl_yyparse (pTHX_ int gramtype) { - dVAR; int yystate; int yyn; int yyresult; @@ -262,7 +279,7 @@ #define YYPUSHSTACK parser->ps = ++ps /* The variable used to return semantic value and location from the - action routines: ie $$. */ + action routines: ie $$. */ YYSTYPE yyval; YYDPRINTF ((Perl_debug_log, "Starting parse\n")); @@ -280,7 +297,7 @@ /* initialise state for this parse */ parser->yychar = gramtype; - yytoken = YYTRANSLATE(NATIVE_TO_UNI(parser->yychar)); + yytoken = YYTRANSLATE((int)NATIVE_TO_UNI(parser->yychar)); parser->yyerrstatus = 0; parser->yylen = 0; @@ -352,11 +369,11 @@ * characters in that range, but all tokens it returns are * either 0, or above 255. There could be a problem if NULs * weren't 0, or were ever returned as raw chars by yylex() */ - yytoken = YYTRANSLATE(NATIVE_TO_UNI(parser->yychar)); + yytoken = YYTRANSLATE((int)NATIVE_TO_UNI(parser->yychar)); } /* make sure no-one's changed yychar since the last call to yylex */ - assert(yytoken == YYTRANSLATE(NATIVE_TO_UNI(parser->yychar))); + assert(yytoken == YYTRANSLATE((int)NATIVE_TO_UNI(parser->yychar))); YYDSYMPRINTF("lookahead token is", yytoken, &parser->yylval); @@ -575,7 +592,7 @@ yyacceptlab: yyresult = 0; for (ps=parser->ps; ps > parser->stack; ps--) { - SvREFCNT_dec(ps->compcv); + SvREFCNT_dec(ps->compcv); } parser->ps = parser->stack; /* disable cleanup */ goto yyreturn; diff -Nru perl-5.32.1/perly.h perl-5.34.0/perly.h --- perl-5.32.1/perly.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/perly.h 2021-02-21 11:01:31.000000000 +0000 @@ -7,7 +7,7 @@ #define PERL_BISON_VERSION 30003 #ifdef PERL_CORE -/* A Bison parser, made by GNU Bison 3.3.2. */ +/* A Bison parser, made by GNU Bison 3.3. */ /* Bison interface for Yacc-like parsers in C @@ -63,86 +63,109 @@ GRAMFULLSTMT = 262, GRAMSTMTSEQ = 263, GRAMSUBSIGNATURE = 264, - BAREWORD = 265, - METHOD = 266, - FUNCMETH = 267, - THING = 268, - PMFUNC = 269, - PRIVATEREF = 270, - QWLIST = 271, - FUNC0OP = 272, - FUNC0SUB = 273, - UNIOPSUB = 274, - LSTOPSUB = 275, - PLUGEXPR = 276, - PLUGSTMT = 277, - LABEL = 278, - FORMAT = 279, - SUB = 280, - SIGSUB = 281, - ANONSUB = 282, - ANON_SIGSUB = 283, - PACKAGE = 284, - USE = 285, - WHILE = 286, - UNTIL = 287, - IF = 288, - UNLESS = 289, - ELSE = 290, - ELSIF = 291, - CONTINUE = 292, - FOR = 293, - GIVEN = 294, - WHEN = 295, - DEFAULT = 296, - LOOPEX = 297, - DOTDOT = 298, - YADAYADA = 299, - FUNC0 = 300, - FUNC1 = 301, - FUNC = 302, - UNIOP = 303, - LSTOP = 304, - MULOP = 305, - ADDOP = 306, - DOLSHARP = 307, - DO = 308, - HASHBRACK = 309, - NOAMP = 310, - LOCAL = 311, - MY = 312, - REQUIRE = 313, - COLONATTR = 314, - FORMLBRACK = 315, - FORMRBRACK = 316, - SUBLEXSTART = 317, - SUBLEXEND = 318, - PREC_LOW = 319, - OROP = 320, - DOROP = 321, - ANDOP = 322, - NOTOP = 323, - ASSIGNOP = 324, - OROR = 325, - DORDOR = 326, - ANDAND = 327, - BITOROP = 328, - BITANDOP = 329, - CHEQOP = 330, - NCEQOP = 331, - CHRELOP = 332, - NCRELOP = 333, - SHIFTOP = 334, - MATCHOP = 335, - UMINUS = 336, - REFGEN = 337, - POWOP = 338, - PREINC = 339, - PREDEC = 340, - POSTINC = 341, - POSTDEC = 342, - POSTJOIN = 343, - ARROW = 344 + PERLY_AMPERSAND = 265, + PERLY_BRACE_OPEN = 266, + PERLY_BRACE_CLOSE = 267, + PERLY_BRACKET_OPEN = 268, + PERLY_BRACKET_CLOSE = 269, + PERLY_COMMA = 270, + PERLY_DOLLAR = 271, + PERLY_DOT = 272, + PERLY_EQUAL_SIGN = 273, + PERLY_MINUS = 274, + PERLY_PERCENT_SIGN = 275, + PERLY_PLUS = 276, + PERLY_SEMICOLON = 277, + PERLY_SLASH = 278, + PERLY_SNAIL = 279, + PERLY_STAR = 280, + BAREWORD = 281, + METHOD = 282, + FUNCMETH = 283, + THING = 284, + PMFUNC = 285, + PRIVATEREF = 286, + QWLIST = 287, + FUNC0OP = 288, + FUNC0SUB = 289, + UNIOPSUB = 290, + LSTOPSUB = 291, + PLUGEXPR = 292, + PLUGSTMT = 293, + LABEL = 294, + FORMAT = 295, + SUB = 296, + SIGSUB = 297, + ANONSUB = 298, + ANON_SIGSUB = 299, + PACKAGE = 300, + USE = 301, + WHILE = 302, + UNTIL = 303, + IF = 304, + UNLESS = 305, + ELSE = 306, + ELSIF = 307, + CONTINUE = 308, + FOR = 309, + GIVEN = 310, + WHEN = 311, + DEFAULT = 312, + TRY = 313, + CATCH = 314, + LOOPEX = 315, + DOTDOT = 316, + YADAYADA = 317, + FUNC0 = 318, + FUNC1 = 319, + FUNC = 320, + UNIOP = 321, + LSTOP = 322, + MULOP = 323, + ADDOP = 324, + DOLSHARP = 325, + DO = 326, + HASHBRACK = 327, + NOAMP = 328, + LOCAL = 329, + MY = 330, + REQUIRE = 331, + COLONATTR = 332, + FORMLBRACK = 333, + FORMRBRACK = 334, + SUBLEXSTART = 335, + SUBLEXEND = 336, + PREC_LOW = 337, + OROP = 338, + ANDOP = 339, + NOTOP = 340, + ASSIGNOP = 341, + PERLY_QUESTION_MARK = 342, + PERLY_COLON = 343, + OROR = 344, + DORDOR = 345, + ANDAND = 346, + BITOROP = 347, + BITANDOP = 348, + CHEQOP = 349, + NCEQOP = 350, + CHRELOP = 351, + NCRELOP = 352, + SHIFTOP = 353, + MATCHOP = 354, + PERLY_EXCLAMATION_MARK = 355, + PERLY_TILDE = 356, + UMINUS = 357, + REFGEN = 358, + POWOP = 359, + PREINC = 360, + PREDEC = 361, + POSTINC = 362, + POSTDEC = 363, + POSTJOIN = 364, + ARROW = 365, + PERLY_PAREN_CLOSE = 366, + PERLY_PAREN_OPEN = 367 }; #endif @@ -195,6 +218,6 @@ /* Generated from: - * e5b801fdebce5c77dd8e644fc5a489cbea6af33db180e771dd9d669b12bbe0cf perly.y - * 0947213b55d0ed11693554bea04987e886cf285f5c14cf9075fa1e7acc3f4061 regen_perly.pl + * 427b422b0ce1154d834dc461973a3254729575694f98ab600032f67ccab7b9e5 perly.y + * acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl * ex: set ro: */ diff -Nru perl-5.32.1/perly.tab perl-5.34.0/perly.tab --- perl-5.32.1/perly.tab 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/perly.tab 2021-02-21 11:01:31.000000000 +0000 @@ -6,19 +6,19 @@ #define YYFINAL 16 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 3348 +#define YYLAST 3177 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 112 +#define YYNTOKENS 113 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 96 +#define YYNNTS 99 /* YYNRULES -- Number of rules. */ -#define YYNRULES 294 +#define YYNRULES 297 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 572 +#define YYNSTATES 581 #define YYUNDEFTOK 2 -#define YYMAXUTOK 344 +#define YYMAXUTOK 367 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ @@ -32,16 +32,16 @@ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 95, 2, 2, 109, 17, 18, 2, - 107, 106, 110, 15, 80, 14, 20, 111, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 83, 108, - 2, 19, 2, 82, 16, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 12, 2, 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 10, 2, 11, 96, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -55,51 +55,53 @@ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 81, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 97, 98, 99, 100, - 101, 102, 103, 104, 105 + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 121, 121, 120, 132, 131, 142, 141, 155, 154, - 168, 167, 181, 180, 191, 190, 203, 211, 219, 223, - 231, 237, 238, 248, 249, 258, 262, 266, 273, 283, - 285, 298, 295, 319, 314, 335, 343, 342, 351, 357, - 363, 368, 370, 372, 379, 387, 389, 386, 406, 411, - 418, 417, 432, 440, 446, 453, 452, 467, 471, 476, - 484, 502, 503, 508, 510, 512, 514, 516, 518, 520, - 523, 529, 530, 535, 546, 547, 553, 559, 560, 565, - 568, 572, 577, 581, 585, 586, 590, 596, 601, 606, - 607, 612, 613, 618, 619, 621, 626, 628, 640, 641, - 646, 648, 652, 672, 673, 675, 681, 746, 748, 754, - 756, 760, 766, 767, 772, 773, 777, 781, 781, 849, - 850, 855, 866, 867, 870, 881, 883, 885, 887, 891, - 893, 898, 902, 906, 910, 916, 921, 927, 933, 935, - 937, 940, 939, 950, 951, 955, 959, 962, 967, 972, - 975, 979, 983, 989, 997, 1004, 1010, 1012, 1014, 1019, - 1021, 1023, 1028, 1030, 1032, 1034, 1036, 1038, 1040, 1042, - 1044, 1046, 1048, 1052, 1054, 1056, 1058, 1062, 1064, 1068, - 1070, 1072, 1074, 1078, 1080, 1085, 1087, 1090, 1092, 1094, - 1097, 1100, 1111, 1114, 1121, 1123, 1125, 1127, 1129, 1132, - 1138, 1140, 1144, 1145, 1146, 1147, 1148, 1150, 1152, 1154, - 1156, 1158, 1160, 1162, 1164, 1166, 1168, 1170, 1172, 1174, - 1176, 1186, 1196, 1206, 1216, 1218, 1220, 1223, 1228, 1232, - 1234, 1236, 1238, 1241, 1243, 1246, 1248, 1250, 1252, 1254, - 1256, 1258, 1260, 1262, 1265, 1267, 1269, 1271, 1273, 1275, - 1279, 1282, 1281, 1294, 1295, 1296, 1300, 1302, 1304, 1309, - 1311, 1314, 1316, 1318, 1323, 1325, 1330, 1331, 1336, 1337, - 1343, 1347, 1348, 1349, 1352, 1353, 1356, 1357, 1360, 1364, - 1368, 1374, 1380, 1382, 1386, 1390, 1391, 1395, 1396, 1400, - 1401, 1406, 1408, 1410, 1413 + 0, 138, 138, 137, 149, 148, 159, 158, 172, 171, + 185, 184, 198, 197, 208, 207, 220, 228, 235, 240, + 247, 253, 255, 264, 266, 275, 279, 283, 290, 300, + 302, 315, 312, 336, 331, 352, 360, 359, 368, 374, + 380, 385, 387, 389, 396, 404, 406, 403, 423, 428, + 435, 434, 449, 457, 464, 466, 463, 472, 479, 478, + 493, 497, 502, 510, 527, 529, 533, 537, 539, 541, + 543, 545, 547, 549, 552, 557, 559, 564, 574, 576, + 581, 587, 589, 593, 597, 601, 606, 610, 614, 615, + 618, 624, 629, 635, 636, 640, 642, 646, 648, 650, + 655, 657, 668, 670, 675, 677, 681, 700, 702, 704, + 710, 775, 777, 783, 785, 789, 794, 796, 800, 802, + 806, 810, 810, 878, 879, 884, 895, 896, 899, 910, + 912, 914, 918, 920, 925, 929, 933, 937, 943, 948, + 954, 960, 962, 964, 967, 966, 977, 978, 982, 986, + 989, 994, 999, 1002, 1006, 1010, 1016, 1024, 1031, 1037, + 1039, 1041, 1046, 1048, 1050, 1055, 1057, 1059, 1061, 1063, + 1065, 1067, 1069, 1071, 1073, 1075, 1079, 1081, 1083, 1085, + 1089, 1091, 1095, 1097, 1099, 1101, 1105, 1107, 1112, 1114, + 1117, 1119, 1121, 1124, 1127, 1138, 1141, 1148, 1150, 1152, + 1154, 1156, 1159, 1165, 1167, 1171, 1172, 1173, 1174, 1175, + 1177, 1179, 1181, 1183, 1185, 1187, 1189, 1191, 1193, 1195, + 1197, 1199, 1201, 1203, 1213, 1223, 1233, 1243, 1245, 1247, + 1250, 1255, 1259, 1261, 1263, 1265, 1268, 1270, 1273, 1275, + 1277, 1279, 1281, 1283, 1285, 1287, 1289, 1292, 1294, 1296, + 1298, 1300, 1302, 1306, 1309, 1308, 1321, 1322, 1323, 1327, + 1329, 1331, 1336, 1338, 1341, 1343, 1345, 1350, 1352, 1356, + 1358, 1362, 1364, 1370, 1374, 1375, 1376, 1379, 1380, 1383, + 1384, 1387, 1391, 1395, 1401, 1407, 1409, 1413, 1417, 1418, + 1422, 1423, 1427, 1428, 1433, 1435, 1437, 1440 }; #endif @@ -109,37 +111,41 @@ static const char *const yytname[] = { "$end", "error", "$undefined", "GRAMPROG", "GRAMEXPR", "GRAMBLOCK", - "GRAMBARESTMT", "GRAMFULLSTMT", "GRAMSTMTSEQ", "GRAMSUBSIGNATURE", "'{'", - "'}'", "'['", "']'", "'-'", "'+'", "'@'", "'%'", "'&'", "'='", "'.'", - "BAREWORD", "METHOD", "FUNCMETH", "THING", "PMFUNC", "PRIVATEREF", - "QWLIST", "FUNC0OP", "FUNC0SUB", "UNIOPSUB", "LSTOPSUB", "PLUGEXPR", - "PLUGSTMT", "LABEL", "FORMAT", "SUB", "SIGSUB", "ANONSUB", "ANON_SIGSUB", - "PACKAGE", "USE", "WHILE", "UNTIL", "IF", "UNLESS", "ELSE", "ELSIF", - "CONTINUE", "FOR", "GIVEN", "WHEN", "DEFAULT", "LOOPEX", "DOTDOT", - "YADAYADA", "FUNC0", "FUNC1", "FUNC", "UNIOP", "LSTOP", "MULOP", "ADDOP", - "DOLSHARP", "DO", "HASHBRACK", "NOAMP", "LOCAL", "MY", "REQUIRE", - "COLONATTR", "FORMLBRACK", "FORMRBRACK", "SUBLEXSTART", "SUBLEXEND", - "PREC_LOW", "OROP", "DOROP", "ANDOP", "NOTOP", "','", "ASSIGNOP", "'?'", - "':'", "OROR", "DORDOR", "ANDAND", "BITOROP", "BITANDOP", "CHEQOP", - "NCEQOP", "CHRELOP", "NCRELOP", "SHIFTOP", "MATCHOP", "'!'", "'~'", + "GRAMBARESTMT", "GRAMFULLSTMT", "GRAMSTMTSEQ", "GRAMSUBSIGNATURE", + "PERLY_AMPERSAND", "PERLY_BRACE_OPEN", "PERLY_BRACE_CLOSE", + "PERLY_BRACKET_OPEN", "PERLY_BRACKET_CLOSE", "PERLY_COMMA", + "PERLY_DOLLAR", "PERLY_DOT", "PERLY_EQUAL_SIGN", "PERLY_MINUS", + "PERLY_PERCENT_SIGN", "PERLY_PLUS", "PERLY_SEMICOLON", "PERLY_SLASH", + "PERLY_SNAIL", "PERLY_STAR", "BAREWORD", "METHOD", "FUNCMETH", "THING", + "PMFUNC", "PRIVATEREF", "QWLIST", "FUNC0OP", "FUNC0SUB", "UNIOPSUB", + "LSTOPSUB", "PLUGEXPR", "PLUGSTMT", "LABEL", "FORMAT", "SUB", "SIGSUB", + "ANONSUB", "ANON_SIGSUB", "PACKAGE", "USE", "WHILE", "UNTIL", "IF", + "UNLESS", "ELSE", "ELSIF", "CONTINUE", "FOR", "GIVEN", "WHEN", "DEFAULT", + "TRY", "CATCH", "LOOPEX", "DOTDOT", "YADAYADA", "FUNC0", "FUNC1", "FUNC", + "UNIOP", "LSTOP", "MULOP", "ADDOP", "DOLSHARP", "DO", "HASHBRACK", + "NOAMP", "LOCAL", "MY", "REQUIRE", "COLONATTR", "FORMLBRACK", + "FORMRBRACK", "SUBLEXSTART", "SUBLEXEND", "PREC_LOW", "OROP", "ANDOP", + "NOTOP", "ASSIGNOP", "PERLY_QUESTION_MARK", "PERLY_COLON", "OROR", + "DORDOR", "ANDAND", "BITOROP", "BITANDOP", "CHEQOP", "NCEQOP", "CHRELOP", + "NCRELOP", "SHIFTOP", "MATCHOP", "PERLY_EXCLAMATION_MARK", "PERLY_TILDE", "UMINUS", "REFGEN", "POWOP", "PREINC", "PREDEC", "POSTINC", "POSTDEC", - "POSTJOIN", "ARROW", "')'", "'('", "';'", "'$'", "'*'", "'/'", "$accept", + "POSTJOIN", "ARROW", "PERLY_PAREN_CLOSE", "PERLY_PAREN_OPEN", "$accept", "grammar", "@1", "@2", "@3", "@4", "@5", "@6", "@7", "block", "formblock", "remember", "mblock", "mremember", "stmtseq", "formstmtseq", "fullstmt", "labfullstmt", "barestmt", "$@8", "$@9", "$@10", "$@11", - "$@12", "@13", "$@14", "formline", "formarg", "sideff", "else", "cont", - "mintro", "nexpr", "texpr", "iexpr", "mexpr", "mnexpr", "formname", - "startsub", "startanonsub", "startformsub", "subname", "proto", - "subattrlist", "myattrlist", "sigvarname", "sigslurpsigil", - "sigslurpelem", "sigdefault", "sigscalarelem", "sigelem", "siglist", - "siglistornull", "optsubsignature", "subsignature", "subsigguts", "$@15", - "optsubbody", "subbody", "optsigsubbody", "sigsubbody", "expr", - "listexpr", "listop", "@16", "method", "subscripted", "termbinop", - "termrelop", "relopchain", "termeqop", "eqopchain", "termunop", - "anonymous", "termdo", "term", "@17", "myattrterm", "myterm", - "optlistexpr", "optexpr", "optrepl", "my_scalar", "my_var", - "refgen_topic", "my_refgen", "amper", "scalar", "ary", "hsh", "arylen", - "star", "sliceme", "kvslice", "gelem", "indirob", YY_NULLPTR + "$@12", "@13", "$@14", "$@15", "$@16", "formline", "formarg", + "condition", "sideff", "else", "cont", "mintro", "nexpr", "texpr", + "iexpr", "mexpr", "mnexpr", "formname", "startsub", "startanonsub", + "startformsub", "subname", "proto", "subattrlist", "myattrlist", + "sigvarname", "sigslurpsigil", "sigslurpelem", "sigdefault", + "sigscalarelem", "sigelem", "siglist", "siglistornull", + "optsubsignature", "subsignature", "subsigguts", "$@17", "optsubbody", + "subbody", "optsigsubbody", "sigsubbody", "expr", "listexpr", "listop", + "@18", "method", "subscripted", "termbinop", "termrelop", "relopchain", + "termeqop", "eqopchain", "termunop", "anonymous", "termdo", "term", + "@19", "myattrterm", "myterm", "optlistexpr", "optexpr", "optrepl", + "my_scalar", "my_var", "refgen_topic", "my_refgen", "amper", "scalar", + "ary", "hsh", "arylen", "star", "sliceme", "kvslice", "gelem", "indirob", YY_NULLPTR }; #endif @@ -149,92 +155,93 @@ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 123, 125, 91, 93, 45, 43, 64, 37, 38, 61, - 46, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 44, 324, 63, 58, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 33, 126, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 41, 40, 59, 36, - 42, 47 + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367 }; # endif -#define YYPACT_NINF -485 +#define YYPACT_NINF -482 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-485))) + (!!((Yystate) == (-482))) -#define YYTABLE_NINF -290 +#define YYTABLE_NINF -293 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-290))) + (!!((Yytable_value) == (-293))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 739, -485, -485, -485, -485, -485, -485, -485, 28, -485, - 2976, 32, 1582, 1481, -485, -485, -485, -485, 2085, 2976, - 2976, 6, 6, 6, -485, 6, 6, -485, -485, 50, - -31, -485, 2976, -485, -485, -485, -485, 2976, -13, 20, - -33, 1986, 1885, 6, 1986, 2184, 4, 2976, 83, 2976, - 2976, 2976, 2976, 2976, 2976, 2976, 2283, 6, 6, 41, - -7, -485, 14, -485, -34, -1, -20, 22, -485, -485, - -485, 3151, -485, -485, 29, 56, 95, 102, -485, 153, - 247, 254, 157, -485, -485, -485, -485, -485, 4, 4, - 132, -485, 79, 100, 119, 130, 174, 146, 154, 32, - 152, -485, 217, -485, 160, 1984, 1481, -485, -485, -485, - 672, -485, 30, 774, -485, 111, 142, 142, -485, -485, - -485, -485, -485, -485, -485, 2976, 172, 207, 2976, 176, - 430, 32, 261, 216, 3151, 202, 2382, 2976, 1885, -485, - 430, 572, -7, -485, 476, 2976, -485, -485, 430, 299, - 197, -485, -485, 2976, 430, 3075, 2481, 242, -485, -485, - -485, 430, -7, 142, 142, 142, 57, 57, 306, 267, - -485, -485, 2976, 2976, 2976, 2976, 2976, 2976, 2580, -485, - -485, 2976, -485, -485, 2976, 2976, 2976, 2976, 2976, 2976, - 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976, - 2976, 2976, -485, -485, -485, 75, 2679, 2976, 2976, 2976, - 2976, 2976, 2976, 2976, -485, 307, -485, -485, 311, -485, - -485, -485, -485, -485, 224, 36, -485, -485, 226, -485, - -485, -485, -485, 32, -485, -485, 2976, 2976, 2976, 2976, - 2976, 2976, -485, -485, -485, -485, -485, 320, 320, -485, - -485, -485, 273, -485, -485, -485, 2976, 2976, 118, -485, - -485, -485, 216, 330, -485, -485, -485, 331, 284, 260, - 2976, -7, -485, 348, -485, 2778, 142, 242, 33, 55, - 67, -485, 342, 344, -485, 2976, 357, 294, 294, -485, - 3151, 249, 133, -485, 433, 430, 363, 3243, 504, 329, - 3151, 3105, 1667, 1667, 1767, 1867, 538, 363, 363, 430, - 430, 301, 142, 142, 2976, 2976, 271, 272, 274, -485, - 278, 2877, 23, 279, 270, -485, -485, 470, 253, 136, - 302, 158, 364, 162, 407, 875, -485, 372, -485, -485, - 1, 375, 2976, 2976, 2976, 2976, -485, 292, -485, -485, - 305, -485, -485, -485, -485, 1683, 34, -485, 2976, 2976, - -485, 41, -485, 41, 41, 41, 41, 41, -485, 332, - 332, 30, 308, -39, -485, 2976, -485, -485, 309, -485, - -485, -485, -485, 512, -485, 5, 516, -485, -485, -485, - 178, 2976, 416, -485, -485, 2976, 418, 193, -485, -485, - -485, -485, -485, 519, -485, -485, 2976, -485, 436, -485, - 438, -485, 440, -485, 447, -485, -485, -485, 261, 216, - -485, -485, 439, 353, 41, 358, 368, 41, 369, 356, - -485, -485, -485, -485, 374, 373, 401, -485, 2976, 381, - 387, 2976, -485, -485, -485, -485, 2976, 423, -485, 489, - -485, -485, 490, -485, -485, 19, -485, 239, -485, 3197, - 492, -485, -485, 398, -485, -485, -485, -485, 397, 216, - 404, -485, 2976, -485, -485, 496, 496, 2976, 2976, 496, - -485, 406, 408, 496, 496, 3151, 41, -485, -485, 410, - -485, -485, -485, -485, 445, 414, -485, -485, -485, -485, - 420, 496, 496, -485, 37, 37, 434, 435, 217, 2976, - 2976, 496, -485, -485, 976, -485, 1077, -485, -485, -485, - -485, 1178, -485, 217, 217, -485, 496, 442, -485, -485, - 496, 496, -485, 437, 449, 217, -485, -485, -10, -485, - -485, -485, 1279, -485, 2976, 217, 217, -485, 496, -485, - 472, 531, -485, -485, 465, -485, -485, -485, 217, -485, - -485, -485, 496, 1784, -485, 1380, 37, 467, -485, -485, - 496, -485 + 533, -482, -482, -482, -482, -482, -482, -482, 32, -482, + 2902, 25, 1407, 1310, -482, -482, -482, -482, 299, 1959, + 299, 2902, 299, 2902, 299, 299, -482, 299, 299, -482, + -482, 10, -66, -482, 2902, -482, -482, -482, -482, 2902, + -63, -56, -47, 2056, 1865, 299, 2056, 2150, 67, 2902, + 60, 2902, 2902, 2902, 2902, 2902, 2902, 2902, 2244, 144, + 43, -482, 50, -482, 156, -25, 233, -11, -482, -482, + -482, 3067, -482, -482, -35, 62, 228, 250, -482, 78, + 267, 270, 92, -482, -482, -482, -482, -482, -482, 67, + 67, 83, -482, 18, 41, 52, 97, -1, 108, 135, + 25, 203, 173, 207, -482, 243, 330, 1310, -482, -482, + -482, 534, -482, 220, 631, -482, -482, -482, -482, -482, + -482, 12, -482, 992, -482, 992, -482, -482, 2902, 172, + 176, 2902, 193, 808, 25, 285, 246, 3067, 218, 2338, + 2902, 1865, -482, 808, 1763, 43, -482, 1663, 2902, -482, + -482, 808, 329, 124, -482, -482, 2902, 808, 2996, 2432, + 269, -482, -482, -482, 808, 43, 992, 992, 992, 338, + 338, 337, 23, 2902, 2902, 2902, 2902, 2902, 2526, -482, + -482, 2902, -482, -482, 2902, 2902, 2902, 2902, 2902, 2902, + 2902, 2902, 2902, 2902, 2902, 2902, 2902, 2902, 2902, 2902, + 2902, 2902, -482, -482, -482, 27, 2620, 2902, 2902, 2902, + 2902, 2902, 2902, 2902, -482, 335, -482, -482, 340, -482, + -482, -482, -482, -482, 278, 151, -482, -482, 261, -482, + -482, -482, -482, 326, -482, 25, -482, -482, 2902, 2902, + 2902, 2902, 2902, 2902, -482, -482, -482, 370, -482, -482, + 370, -482, -482, -482, 390, -482, -482, -482, 2902, 2902, + 34, -482, -482, -482, 246, 378, -482, -482, -482, 159, + 327, 298, 2902, 43, -482, 400, -482, 2714, 992, 269, + 44, 168, 169, -482, 223, 389, -482, 2902, 407, 339, + -482, 3067, 165, 45, -482, 234, 808, 711, 423, 395, + 289, 3067, 3023, 1696, 1696, 1850, 518, 614, 711, 711, + 808, 808, 905, 992, 992, 397, 2902, 2902, 410, 399, + 404, 415, -482, 424, 2808, 357, -482, -482, 236, 171, + 54, 184, 65, 189, 90, 191, 728, -482, 452, -482, + -482, 79, 451, 2902, 2902, 2902, 2902, -482, 462, -482, + -482, 368, -482, -482, -482, -482, 1501, 242, -482, 2902, + 2902, -482, 371, -482, -482, 144, -482, 144, -482, -482, + -482, -482, -482, 396, 396, 220, 374, 76, -482, 2902, + -482, -482, 376, -482, -482, -482, -482, 238, -482, 59, + 248, -482, -482, -482, 94, 2902, 474, -482, -482, 2902, + -482, 229, 102, -482, -482, -482, -482, -482, -482, 281, + 2902, -482, 477, -482, 481, -482, 483, -482, 484, -482, + -482, -482, 285, 246, -482, -482, 471, 412, 144, 413, + 414, 144, 417, 398, -482, -482, -482, -482, 418, 479, + 320, -482, 2902, 435, 438, 825, -482, 2902, -482, -482, + -482, -482, 2902, 426, -482, 500, -482, -482, 515, -482, + -482, 68, -482, 105, -482, 364, 540, -482, -482, 446, + -482, -482, -482, -482, 543, 246, 563, -482, 2902, -482, + -482, 203, 203, 2902, 2902, 203, -482, 490, 482, 203, + 203, -482, -482, 3067, 144, -482, -482, 492, -482, -482, + -482, -482, 516, 596, -482, -482, -482, -482, 598, 203, + 203, 288, 288, 510, 512, 207, 2902, 2902, 203, -482, + -482, 462, 922, -482, 1019, -482, -482, -482, -482, 1116, + -482, 207, 207, 203, 517, -482, -482, 203, 203, -482, + 602, 519, 207, -482, -482, -482, 162, -482, -482, -482, + -482, 2902, 207, 207, -482, 203, -482, 522, 619, 560, + -482, 532, -482, -482, -482, 207, 203, -482, -482, -482, + 203, 1595, -482, -482, 1213, 288, 537, -482, -482, 203, + -482 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -243,93 +250,94 @@ static const yytype_uint16 yydefact[] = { 0, 2, 4, 6, 8, 10, 12, 14, 0, 18, - 266, 0, 0, 0, 21, 117, 1, 21, 0, 0, - 0, 0, 0, 0, 253, 0, 0, 224, 251, 212, - 246, 248, 242, 87, 255, 87, 87, 234, 244, 0, - 0, 237, 264, 0, 0, 0, 0, 0, 0, 240, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 267, - 128, 254, 219, 202, 164, 173, 165, 179, 203, 204, - 205, 131, 209, 5, 225, 214, 217, 216, 218, 215, - 0, 0, 0, 18, 7, 63, 29, 88, 0, 0, - 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 59, 74, 9, 0, 64, 0, 11, 26, 25, - 0, 15, 112, 0, 195, 0, 185, 186, 291, 294, - 293, 292, 280, 281, 278, 264, 0, 0, 0, 0, - 243, 0, 91, 93, 235, 0, 0, 266, 266, 238, - 239, 291, 265, 138, 292, 0, 282, 201, 200, 0, - 0, 89, 90, 264, 210, 0, 0, 257, 261, 263, - 262, 241, 236, 187, 188, 207, 192, 193, 213, 0, - 279, 284, 0, 0, 0, 129, 0, 0, 0, 176, - 175, 0, 182, 181, 0, 0, 0, 0, 0, 0, + 269, 0, 0, 0, 21, 121, 1, 21, 0, 0, + 0, 0, 0, 0, 0, 0, 256, 0, 0, 227, + 254, 215, 249, 251, 245, 91, 258, 91, 91, 237, + 247, 0, 0, 240, 267, 0, 0, 0, 0, 0, + 0, 243, 0, 0, 0, 0, 0, 0, 0, 270, + 131, 257, 222, 205, 167, 176, 168, 182, 206, 207, + 208, 134, 212, 5, 228, 217, 220, 219, 221, 218, + 0, 0, 0, 18, 7, 67, 62, 29, 92, 0, + 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 78, 9, 0, 68, 0, 11, 26, + 25, 0, 15, 116, 0, 294, 297, 296, 295, 281, + 198, 0, 282, 188, 284, 189, 283, 287, 267, 0, + 0, 0, 0, 246, 0, 95, 97, 238, 0, 0, + 269, 269, 241, 242, 294, 268, 141, 295, 0, 285, + 204, 203, 0, 0, 93, 94, 267, 213, 0, 0, + 260, 264, 266, 265, 244, 239, 190, 191, 210, 195, + 196, 216, 0, 0, 0, 132, 0, 0, 0, 179, + 178, 0, 185, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 189, 190, 191, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 21, 85, 86, 86, 0, 36, + 0, 0, 192, 193, 194, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 89, 90, 90, 0, 36, 18, 18, 18, 18, 18, 0, 18, 18, 0, 18, - 18, 42, 58, 0, 54, 57, 0, 0, 0, 0, - 0, 0, 28, 27, 22, 100, 101, 98, 98, 108, - 107, 111, 113, 118, 194, 136, 266, 0, 0, 247, - 141, 92, 93, 95, 18, 245, 249, 0, 0, 0, - 0, 132, 197, 0, 228, 0, 208, 0, 214, 217, - 216, 260, 0, 97, 256, 0, 211, 126, 127, 125, - 130, 0, 0, 155, 0, 178, 184, 168, 161, 162, - 159, 0, 170, 171, 169, 167, 166, 183, 180, 177, - 174, 163, 172, 160, 0, 0, 286, 288, 0, 143, - 0, 0, 0, 290, 135, 144, 226, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 84, 0, 31, 33, - 0, 0, 79, 0, 0, 0, 276, 0, 277, 274, - 0, 275, 271, 272, 273, 0, 0, 18, 0, 0, - 75, 67, 68, 81, 65, 66, 69, 70, 99, 103, - 103, 109, 0, 268, 157, 264, 18, 94, 114, 199, - 250, 140, 139, 0, 196, 213, 0, 258, 259, 96, - 0, 0, 0, 148, 154, 0, 0, 0, 230, 231, - 232, 283, 152, 0, 229, 233, 266, 227, 0, 146, - 0, 220, 0, 221, 0, 16, 18, 30, 91, 93, - 18, 35, 0, 0, 80, 0, 0, 82, 0, 0, - 270, 18, 78, 83, 0, 0, 64, 50, 0, 0, - 0, 104, 106, 102, 110, 137, 0, 0, 142, 0, - 198, 117, 0, 115, 133, 211, 158, 0, 151, 206, - 0, 147, 153, 0, 149, 222, 223, 145, 0, 93, - 18, 55, 264, 76, 76, 0, 0, 0, 0, 0, - 45, 0, 0, 0, 0, 105, 269, 252, 21, 0, - 21, 156, 150, 134, 0, 18, 123, 34, 122, 21, - 0, 0, 0, 20, 71, 71, 0, 0, 74, 79, - 0, 0, 40, 41, 0, 116, 0, 23, 120, 32, - 119, 0, 37, 74, 74, 21, 0, 0, 38, 39, - 0, 0, 53, 0, 0, 74, 121, 124, 0, 56, - 43, 44, 0, 72, 0, 74, 74, 46, 0, 49, - 61, 0, 24, 19, 0, 48, 52, 76, 74, 21, - 60, 17, 0, 0, 51, 0, 71, 0, 62, 73, - 0, 47 + 18, 42, 20, 0, 61, 0, 57, 60, 0, 0, + 0, 0, 0, 0, 28, 27, 22, 102, 105, 104, + 102, 112, 111, 115, 117, 122, 197, 139, 269, 0, + 0, 250, 144, 96, 97, 99, 18, 248, 252, 0, + 0, 0, 0, 135, 200, 0, 231, 0, 211, 0, + 217, 220, 219, 263, 0, 101, 259, 0, 214, 130, + 129, 133, 0, 0, 158, 0, 181, 187, 171, 164, + 165, 162, 0, 173, 174, 172, 170, 169, 186, 183, + 180, 177, 166, 175, 163, 0, 0, 0, 0, 291, + 289, 293, 146, 0, 0, 138, 147, 229, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 88, 0, 31, + 33, 0, 0, 83, 0, 0, 0, 279, 0, 280, + 277, 0, 278, 274, 275, 276, 0, 0, 18, 0, + 0, 21, 0, 79, 71, 66, 72, 85, 69, 70, + 73, 74, 103, 107, 107, 113, 0, 271, 160, 267, + 18, 98, 118, 202, 253, 143, 142, 0, 199, 216, + 0, 261, 262, 100, 0, 0, 0, 151, 157, 0, + 235, 0, 0, 232, 234, 233, 236, 286, 155, 0, + 269, 230, 0, 149, 0, 223, 0, 224, 0, 16, + 18, 30, 95, 97, 18, 35, 0, 0, 84, 0, + 0, 86, 0, 0, 273, 18, 82, 87, 0, 0, + 68, 50, 0, 0, 0, 0, 54, 108, 110, 106, + 114, 140, 0, 0, 145, 0, 201, 121, 0, 119, + 136, 214, 161, 0, 154, 209, 0, 150, 156, 0, + 152, 225, 226, 148, 0, 97, 18, 58, 267, 80, + 80, 0, 0, 0, 0, 0, 45, 0, 0, 0, + 0, 19, 18, 109, 272, 255, 21, 0, 21, 159, + 153, 137, 0, 18, 127, 34, 126, 21, 0, 0, + 0, 75, 75, 0, 0, 78, 83, 0, 0, 40, + 41, 0, 0, 120, 0, 23, 124, 32, 123, 0, + 37, 78, 78, 0, 0, 38, 39, 0, 0, 53, + 0, 0, 78, 55, 125, 128, 0, 59, 43, 44, + 76, 0, 78, 78, 46, 0, 49, 0, 0, 64, + 24, 0, 48, 52, 80, 78, 0, 17, 21, 63, + 0, 0, 51, 56, 0, 75, 0, 65, 77, 0, + 47 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -485, -485, -485, -485, -485, -485, -485, -485, -485, 298, - -485, -5, -109, -485, -17, -485, 561, 471, 0, -485, - -485, -485, -485, -485, -485, -485, -485, -485, -340, -484, - -159, -456, -485, 74, 243, -336, 39, -485, -44, 143, - -485, 161, 173, -242, 324, 362, -485, -485, 234, -485, - 240, -485, -485, -485, -485, 168, -485, -485, 110, -485, - 165, -8, -37, -485, -485, -485, -485, -485, -485, -485, - -485, -485, -485, -485, -485, 103, -485, -485, 457, -124, - -130, -485, -485, 257, -485, -485, 399, 38, -45, -42, - -485, -485, -485, -485, -485, 13 + -482, -482, -482, -482, -482, -482, -482, -482, -482, 42, + -482, -5, -127, -482, -17, -482, 632, 542, 8, -482, + -482, -482, -482, -482, -482, -482, -482, -482, -482, -482, + 224, -342, -481, -115, -459, -482, 138, 318, -246, 113, + -482, 155, 352, -482, 305, 268, -263, 420, 442, -482, + -482, 341, -482, 325, -482, -482, -482, -482, 257, -482, + -482, 214, -482, 244, -8, -36, -482, -482, -482, -482, + -482, -482, -482, -482, -482, -482, -482, -482, 101, -482, + -482, 561, -122, -99, -482, -482, 369, -482, -482, 502, + -15, -33, -31, -482, -482, -482, -482, -482, 0 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 8, 9, 10, 11, 12, 13, 14, 15, 102, - 417, 378, 504, 525, 110, 538, 244, 108, 109, 418, - 419, 341, 509, 557, 481, 499, 552, 560, 104, 528, - 234, 501, 433, 423, 362, 426, 435, 337, 219, 131, - 215, 153, 262, 264, 284, 369, 248, 249, 442, 250, - 251, 252, 253, 452, 453, 111, 112, 519, 450, 497, - 379, 105, 60, 61, 375, 324, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 127, 72, 157, 143, - 73, 447, 429, 349, 350, 227, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 170 + -1, 8, 9, 10, 11, 12, 13, 14, 15, 103, + 421, 382, 233, 361, 111, 546, 246, 109, 110, 422, + 423, 342, 516, 564, 487, 492, 557, 507, 560, 569, + 364, 105, 535, 236, 509, 437, 427, 366, 430, 439, + 338, 219, 134, 215, 156, 264, 266, 286, 373, 250, + 251, 448, 252, 253, 254, 255, 458, 459, 112, 113, + 527, 456, 505, 383, 106, 60, 61, 379, 325, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 130, + 72, 160, 146, 73, 453, 433, 350, 351, 227, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 122 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -337,779 +345,746 @@ number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 113, 255, 59, 159, 17, 142, 160, 268, 269, 428, - 115, 420, 103, 162, 550, 432, 83, 285, 502, 434, - 376, 529, 439, 440, 176, 151, 177, 118, 16, 274, - 152, 391, 119, 83, 122, 123, 124, 150, 125, 126, - 137, 175, 83, 207, 118, 208, 245, 246, 169, 119, - 21, 22, 21, 22, 23, 145, 146, 179, 180, 121, - 121, 121, 128, 121, 121, -285, 207, -285, 208, 182, - 183, 171, 446, 175, 138, -260, 129, -287, 214, -287, - 144, 121, 569, 526, 527, 314, 158, 315, 142, -259, - 181, 316, 317, 318, 135, 121, 121, 319, 551, 21, - 22, 563, 482, -261, 348, -285, 243, -285, 271, 421, - 279, 184, -287, 280, -287, 57, 142, 172, 173, 174, - 258, 178, 116, 117, 254, -263, 372, 136, 267, 59, - 59, 374, 57, 404, 228, 130, 206, -262, 320, 247, - 134, 506, 507, 57, 140, 57, 393, 148, 282, 409, - 154, 270, 161, 218, 163, 164, 165, 166, 167, -290, - -290, -290, 205, -289, 287, 288, 289, 213, 291, 292, - 294, 411, 338, 339, 534, 413, 144, 470, 132, 133, - 353, 155, 321, 354, 322, 323, 220, 172, 173, 174, - 156, 456, 57, 278, 172, 173, 174, 335, 327, 328, - 329, 330, 331, 332, 333, 334, 461, 221, 554, 172, - 173, 174, 172, 173, 174, 342, 343, 344, 345, 347, - 373, 355, 356, 432, 358, 359, 222, 495, 361, 363, - 364, 365, 366, 367, 172, 173, 174, 223, 172, 173, - 174, 201, 224, 325, 202, 203, 204, 205, 59, 216, - 217, 448, 491, 229, 172, 173, 174, 209, 276, 210, - 232, 230, 383, 352, 211, 233, 212, 386, 235, 172, - 173, 174, 225, 172, 173, 174, 463, 390, 290, 256, - 257, 226, 259, 57, 295, 261, 263, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 273, 396, 397, 265, 84, - 272, 353, 283, 403, 354, 172, 173, 174, 285, 120, - 120, 120, 346, 120, 120, 172, 173, 174, 336, 172, - 173, 174, 340, 357, 424, 363, 427, 427, 142, 139, - 120, 120, 147, 172, 173, 174, 368, 436, 500, 532, - 427, 427, 438, 371, 377, 120, 120, 392, 381, 384, - 121, 408, 186, 187, 540, 541, 382, 505, 389, 391, - 508, 449, 174, 286, 512, 513, 549, 406, 172, 173, - 174, 398, 399, 457, 400, 430, 555, 556, 401, 405, - 186, 416, 523, 524, 352, 200, 422, 231, 59, 564, - 201, 57, 535, 202, 203, 204, 205, 172, 173, 174, - 410, 468, 431, 441, 445, 471, 451, 543, 172, 173, - 174, 545, 546, 200, 186, 187, 478, 458, 201, 260, - 427, 202, 203, 204, 205, 142, 120, 380, 486, 558, - 172, 173, 174, 236, 237, 238, 239, 464, 388, 465, - 240, 466, 241, 566, 197, 198, 199, 200, 467, 473, - 472, 571, 201, 477, 474, 202, 203, 204, 205, 427, - 427, 514, 412, 516, 475, 476, -214, 172, 173, 174, - 479, 480, 521, 172, 173, 174, 207, 483, 208, -214, - 449, 186, 187, 484, 172, 173, 174, 487, 459, 488, - 490, 424, 427, 492, 493, 494, 503, -82, 542, 172, - 173, 174, 496, 510, 511, 414, 515, 517, -214, -214, - -214, -214, 518, 199, 200, -214, 460, -214, 522, 201, - -214, 360, 202, 203, 204, 205, 427, -214, -214, 394, - 530, 531, 565, 559, 485, 547, 172, 173, 174, 544, - -214, 561, -214, -214, -214, 548, -214, -214, -214, -214, - -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, - -214, 562, -253, 570, 107, -214, 407, 242, -214, -214, - -214, -214, -214, 533, -214, -253, 425, -214, 172, 173, - 174, 469, 172, 173, 174, 172, 173, 174, 200, 186, - 187, 387, 567, 201, 443, 520, 202, 203, 204, 205, - 370, 444, 277, 437, -253, -253, -253, -253, 454, 489, - 120, -253, 455, -253, 351, 462, -253, 195, 196, 197, - 198, 199, 200, -253, -253, 498, 0, 201, 0, 0, - 202, 203, 204, 205, 0, 0, -253, 0, -253, -253, - -253, 0, -253, -253, -253, -253, -253, -253, -253, -253, - -253, -253, -253, -253, -253, -253, -253, 0, 0, 0, - 0, -253, -13, 85, -253, -253, -253, -253, -253, 0, - -253, 0, 83, -253, 18, 0, 19, 20, 21, 22, - 23, 0, 0, 24, 25, 26, 27, 28, 0, 29, - 30, 31, 32, 33, 34, 86, 106, 87, 88, 89, - 35, 36, 90, 91, 92, 93, 94, 95, 0, 0, - 0, 96, 97, 98, 99, 37, 0, 100, 38, 39, - 40, 41, 42, 0, 0, 43, 44, 45, 46, 47, - 48, 49, 1, 2, 3, 4, 5, 6, 7, 0, - 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, - 53, 0, 54, 55, -3, 85, 0, 0, 0, 56, - 101, 57, 58, 0, 83, 0, 18, 0, 19, 20, - 21, 22, 23, 0, 0, 24, 25, 26, 27, 28, - 0, 29, 30, 31, 32, 33, 34, 86, 106, 87, - 88, 89, 35, 36, 90, 91, 92, 93, 94, 95, - 0, 0, 0, 96, 97, 98, 99, 37, 0, 100, - 38, 39, 40, 41, 42, 0, 0, 43, 44, 45, - 46, 47, 48, 49, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, - 52, 0, 53, 0, 54, 55, 85, 0, 0, 0, - 0, 56, 101, 57, 58, 83, 415, 18, 0, 19, - 20, 21, 22, 23, 0, 0, 24, 25, 26, 27, - 28, 0, 29, 30, 31, 32, 33, 34, 86, 106, - 87, 88, 89, 35, 36, 90, 91, 92, 93, 94, - 95, 0, 0, 0, 96, 97, 98, 99, 37, 0, - 100, 38, 39, 40, 41, 42, 0, 0, 43, 44, - 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 51, 52, 0, 53, 0, 54, 55, 85, 0, 0, - 0, 0, 56, 101, 57, 58, 83, 536, 18, 0, - 19, 20, 21, 22, 23, 0, 0, 24, 25, 26, - 27, 28, 0, 29, 30, 31, 32, 33, 34, 86, - 106, 87, 88, 89, 35, 36, 90, 91, 92, 93, - 94, 95, 0, 0, 0, 96, 97, 98, 99, 37, - 0, 100, 38, 39, 40, 41, 42, 0, 0, 43, - 44, 45, 46, 47, 48, 49, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 51, 52, 0, 53, 0, 54, 55, 85, 0, - 0, 0, 0, 56, 101, 57, 58, 83, 537, 18, - 0, 19, 20, 21, 22, 23, 0, 0, 24, 25, - 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, - 86, 106, 87, 88, 89, 35, 36, 90, 91, 92, - 93, 94, 95, 0, 0, 0, 96, 97, 98, 99, - 37, 0, 100, 38, 39, 40, 41, 42, 0, 0, - 43, 44, 45, 46, 47, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 51, 52, 0, 53, 0, 54, 55, 85, - 0, 0, 0, 0, 56, 101, 57, 58, 83, 539, - 18, 0, 19, 20, 21, 22, 23, 0, 0, 24, - 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, - 34, 86, 106, 87, 88, 89, 35, 36, 90, 91, - 92, 93, 94, 95, 0, 0, 0, 96, 97, 98, - 99, 37, 0, 100, 38, 39, 40, 41, 42, 0, - 0, 43, 44, 45, 46, 47, 48, 49, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 51, 52, 0, 53, 0, 54, 55, - 85, 0, 0, 0, 0, 56, 101, 57, 58, 83, - 553, 18, 0, 19, 20, 21, 22, 23, 0, 0, - 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, - 33, 34, 86, 106, 87, 88, 89, 35, 36, 90, - 91, 92, 93, 94, 95, 0, 0, 0, 96, 97, - 98, 99, 37, 0, 100, 38, 39, 40, 41, 42, - 0, 0, 43, 44, 45, 46, 47, 48, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 51, 52, 0, 53, 0, 54, - 55, 85, 0, 0, 0, 0, 56, 101, 57, 58, - 83, 0, 18, 0, 19, 20, 21, 22, 23, 0, - 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, - 32, 33, 34, 86, 106, 87, 88, 89, 35, 36, - 90, 91, 92, 93, 94, 95, 0, 0, 0, 96, - 97, 98, 99, 37, 0, 100, 38, 39, 40, 41, - 42, 0, 0, 43, 44, 45, 46, 47, 48, 49, - 0, 0, 568, 0, 0, 0, 0, 0, 0, 50, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 51, 52, 0, 53, 0, - 54, 55, 85, 0, 0, 0, 0, 56, 101, 57, - 58, 83, 0, 18, 0, 19, 20, 21, 22, 23, - 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, - 31, 32, 33, 34, 86, 106, 87, 88, 89, 35, - 36, 90, 91, 92, 93, 94, 95, 0, 0, 0, - 96, 97, 98, 99, 37, 0, 100, 38, 39, 40, - 41, 42, 0, 0, 43, 44, 45, 46, 47, 48, - 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 51, 52, 0, 53, - 0, 54, 55, 85, 0, 0, 0, 0, 56, 101, - 57, 58, 83, 0, 18, 0, 19, 20, 21, 22, - 23, 0, 0, 24, 25, 26, 27, 28, 0, 29, - 30, 31, 32, 33, 34, 86, 0, 87, 88, 89, - 35, 36, 90, 91, 92, 93, 94, 95, 0, 0, - 0, 96, 97, 98, 99, 37, 0, 100, 38, 39, - 40, 41, 42, 0, 0, 43, 44, 45, 46, 47, - 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, - 53, 0, 54, 55, 85, 0, 0, 0, 0, 56, - 101, 57, 58, 0, 0, 18, 0, 19, 20, 21, - 22, 23, 0, 0, 24, 25, 26, 27, 28, 0, - 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, - 0, 35, 36, 0, 0, 0, 0, 0, 186, 187, - 0, 0, 0, 0, 0, 0, 37, 0, 0, 38, - 39, 40, 41, 42, 0, 0, 43, 44, 45, 46, - 47, 48, 49, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 50, 0, 0, 0, 201, 0, 0, 202, - 203, 204, 205, 0, 0, 0, 0, 0, 51, 52, - 0, 53, 0, 54, 55, 85, 0, 0, 0, 0, - 56, -77, 57, 58, 0, 0, 18, 0, 19, 20, - 21, 22, 23, 0, 0, 24, 25, 26, 27, 28, - 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, - 0, 0, 35, 36, 0, 0, 0, 0, 186, 187, - 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, - 38, 39, 40, 41, 42, 0, 0, 43, 44, 45, - 46, 47, 48, 49, 193, 194, 195, 196, 197, 198, - 199, 200, 0, 50, 0, 0, 201, 0, 0, 202, - 203, 204, 205, 0, 0, 0, 0, 0, 0, 51, - 52, 0, 53, 0, 54, 55, 0, 0, 0, 0, - -77, 56, 0, 57, 58, 83, 0, 18, 0, 19, - 20, 21, 22, 23, 0, 0, 141, 25, 26, 27, - 28, 119, 29, 30, 31, 32, 33, 34, 0, 0, - 0, 0, 0, 35, 36, 0, 0, 0, 186, 187, - 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, - 0, 38, 39, 40, 41, 42, 0, 0, 43, 44, - 45, 46, 47, 48, 49, 194, 195, 196, 197, 198, - 199, 200, 0, 0, 50, 0, 201, 0, 0, 202, - 203, 204, 205, 0, 0, 0, 0, 0, 0, 0, - 51, 52, 0, 53, 0, 54, 55, 0, 0, 0, - 0, 0, 56, 0, 57, 58, 83, 0, 18, 0, - 19, 20, 21, 22, 23, 0, 0, 24, 25, 26, - 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, - 0, 0, 0, 0, 35, 36, 236, 237, 238, 239, - 0, 0, 0, 240, 0, 241, 0, 0, 0, 37, - 0, 0, 38, 39, 40, 41, 42, 0, 0, 43, - 44, 45, 46, 47, 48, 49, 0, 0, 0, 0, - 172, 173, 174, 0, 0, 50, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 51, 52, 0, 53, 0, 54, 55, 0, 0, - 0, 0, 0, 56, 0, 57, 58, 18, 114, 19, - 20, 21, 22, 23, 0, 0, 24, 25, 26, 27, - 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, - 0, 0, 0, 35, 36, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, - 0, 38, 39, 40, 41, 42, 0, 0, 43, 44, - 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 51, 52, 0, 53, 0, 54, 55, 0, 0, 0, - 0, 0, 56, 0, 57, 58, 18, 0, 19, 20, - 21, 22, 23, 0, 0, 24, 25, 26, 27, 28, - 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, - 0, 0, 35, 36, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, - 38, 39, 40, 41, 42, 0, 0, 43, 44, 45, - 46, 47, 48, 49, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, - 52, 0, 53, 0, 54, 55, 0, 0, 0, 0, - 0, 56, 149, 57, 58, 18, 0, 19, 20, 21, - 22, 23, 0, 0, 24, 25, 26, 27, 28, 0, - 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, - 0, 35, 36, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 37, 0, 0, 38, - 39, 40, 41, 42, 0, 0, 43, 44, 45, 46, - 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, - 0, 53, 0, 54, 55, 0, 0, 0, 0, 168, - 56, 0, 57, 58, 18, 0, 19, 20, 21, 22, - 23, 0, 0, 24, 25, 26, 27, 28, 0, 29, - 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, - 35, 36, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 37, 0, 0, 38, 39, - 40, 41, 42, 0, 0, 43, 44, 45, 46, 47, - 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, - 53, 0, 54, 55, 0, 0, 0, 0, 266, 56, - 0, 57, 58, 18, 0, 19, 20, 21, 22, 23, - 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, - 31, 32, 33, 34, 0, 0, 0, 0, 0, 35, - 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 37, 0, 0, 38, 39, 40, - 41, 42, 0, 0, 43, 44, 45, 46, 47, 48, - 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 51, 52, 0, 53, - 0, 54, 55, 0, 0, 0, 0, 281, 56, 0, - 57, 58, 18, 0, 19, 20, 21, 22, 23, 0, - 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, - 32, 33, 34, 0, 0, 0, 0, 0, 35, 36, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 37, 0, 0, 38, 39, 40, 41, - 42, 0, 0, 43, 44, 45, 46, 47, 48, 49, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 51, 52, 0, 53, 0, - 54, 55, 0, 0, 0, 0, 293, 56, 0, 57, - 58, 18, 0, 19, 20, 21, 22, 23, 0, 0, - 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, - 33, 34, 0, 0, 0, 0, 0, 35, 36, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 37, 0, 0, 38, 39, 40, 41, 42, - 0, 0, 43, 44, 45, 46, 47, 48, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 51, 52, 0, 53, 0, 54, - 55, 0, 0, 0, 0, 326, 56, 0, 57, 58, - 18, 0, 19, 20, 21, 22, 23, 0, 0, 24, - 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, - 34, 0, 0, 0, 0, 0, 35, 36, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 37, 0, 0, 38, 39, 40, 41, 42, 0, - 0, 43, 44, 45, 46, 47, 48, 49, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 51, 52, 0, 53, 0, 54, 55, - 0, 0, 0, 0, 385, 56, 0, 57, 58, 18, - 0, 19, 20, 21, 22, 23, 0, 0, 24, 25, - 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, - 0, 0, 0, 0, 0, 35, 36, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 37, 0, 0, 38, 39, 40, 41, 42, 0, 0, - 43, 44, 45, 46, 47, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 51, 52, 0, 53, 0, 54, 55, 0, - 0, 0, 0, 402, 56, 0, 57, 58, 18, 0, - 19, 20, 21, 22, 23, 0, 0, 24, 25, 26, - 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, - 0, 0, 0, 0, 35, 36, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, - 0, 0, 38, 39, 40, 41, 42, 0, 0, 43, - 44, 45, 46, 47, 48, 49, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 51, 52, 0, 53, 0, 54, 55, 0, 0, - 0, 0, 0, 56, 0, 57, 58, 18, 0, 19, - 20, 21, 22, 23, 0, 0, 24, 25, 26, 27, - 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, - 0, 0, 0, 35, 36, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, - 0, 38, 39, 40, 41, 42, 0, 0, 43, 44, - 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 50, 0, 0, 0, 0, 185, - 0, 0, 0, 0, 0, 0, 186, 187, 0, 0, - 51, 52, 0, 53, 0, 54, 55, 0, 0, 0, - 0, 0, 275, 0, 57, 58, 188, 189, 395, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 0, 0, 0, 0, 201, 185, 0, 202, 203, 204, - 205, 0, 186, 187, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 188, 189, 0, 190, 191, 192, 193, 194, + 114, 380, 59, 118, 17, 118, 257, 118, 145, 118, + 118, 121, 118, 118, 436, 20, 165, 162, 119, 163, + 104, 510, 124, 131, 126, 127, 256, 128, 129, 147, + 118, 536, 16, 140, 276, 161, 83, 315, 316, 153, + 317, 270, 271, 318, 148, 149, 132, 319, 378, 138, + 172, 320, 321, 84, 322, 207, 139, 208, 175, 397, + 117, 176, 117, 177, 117, 141, 117, 117, 413, 117, + 117, 181, 287, 207, 224, 208, 20, 206, 214, 415, + 22, 395, 228, 184, 24, 142, 117, 117, 150, -292, + 424, 175, 145, 154, 578, 173, 174, 323, 155, 452, + 432, 425, 225, 213, 417, 571, 173, 174, 462, 218, + 438, 226, 273, 443, 444, 245, 467, 173, 174, 499, + 145, -264, 123, 260, 125, 281, 147, 282, 173, 174, + 220, 269, 59, 59, 288, 133, -263, 173, 174, 324, + 137, 272, 231, 280, 143, -262, 275, 151, 173, 174, + 157, 284, 164, 221, 166, 167, 168, 169, 170, 376, + 476, 18, 178, 158, 222, 289, 290, 20, 292, 293, + 295, 22, 159, 173, 174, 24, 262, 173, 174, -288, + -290, -288, -290, 117, 558, 173, 174, 396, 173, 174, + 326, 559, 354, 412, 355, 234, 488, 336, 328, 329, + 330, 331, 332, 333, 334, 335, 414, 173, 174, 223, + 353, 416, 503, 418, 232, 343, 344, 345, 346, 348, + 229, 356, 357, 377, 359, 360, 349, 173, 174, 436, + 365, 367, 365, 365, 365, 365, 247, 513, 514, -288, + 248, -288, 173, 174, 249, -266, -265, 230, 173, 174, + 59, 466, 179, 180, 173, 174, 259, 454, 20, 278, + 235, -290, 22, -290, 387, 237, 24, 173, 174, 390, + 384, 541, 173, 174, 173, 174, 291, 363, 209, 394, + 210, 211, 296, 212, 258, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 118, 261, 561, 173, 174, 401, 402, + 83, 469, 173, 174, 263, 20, 409, 173, 174, 173, + 174, 173, 174, 265, 354, 115, 355, 182, 183, 267, + 116, 173, 174, 434, 392, 428, 367, 431, 431, 533, + 534, 274, 353, 145, 445, 398, 285, 411, 440, 460, + 287, 431, 431, 442, 511, 512, 508, 186, 515, 461, + 117, 337, 519, 520, 173, 174, 341, 238, 239, 240, + 241, 339, 340, 358, 242, 455, 243, 238, 239, 240, + 241, 347, 531, 532, 242, 362, 243, 463, 200, 135, + 136, 542, 468, 201, 216, 217, 202, 203, 204, 205, + 539, 372, 59, 173, 174, 375, 550, 381, 385, 386, + 552, 553, 388, 173, 174, 474, 548, 549, 393, 477, + 395, 83, 400, 174, 404, 185, 20, 556, 565, 405, + 484, -86, 186, 187, 431, 403, 115, 562, 563, 573, + 406, 116, 145, 575, 494, -293, -293, -293, 205, 407, + 572, 189, 580, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 368, 369, 370, 371, 201, 410, + 420, 202, 203, 204, 205, 431, 431, 426, 20, 522, + 435, 524, 447, 446, -293, 451, 464, 521, 457, 470, + 529, 186, 187, 471, 200, 472, 473, 478, 455, 201, + 465, 486, 202, 203, 204, 205, 543, 495, 428, 431, + 483, 496, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 479, 480, 481, 498, 201, 482, 485, + 202, 203, 204, 205, -13, 85, 1, 2, 3, 4, + 5, 6, 7, 431, 18, 83, 489, 19, 493, 490, + 20, 574, 500, 21, 22, 23, 86, 501, 24, 25, + 26, 27, 28, 29, 30, 502, 31, 32, 33, 34, + 35, 36, 87, 107, 88, 89, 90, 37, 38, 91, + 92, 93, 94, 95, 96, 504, 186, 187, 97, 98, + 99, 100, 101, 518, 39, 525, 102, 40, 41, 42, + 43, 44, 517, 523, 45, 46, 47, 48, 49, 50, + 51, 194, 195, 196, 197, 198, 199, 200, 526, 52, + 530, 537, 201, 538, 554, 202, 203, 204, 205, 551, + 555, -3, 85, 566, 53, 54, 567, 55, 568, 56, + 57, 18, 83, 570, 19, 108, 58, 20, 579, 244, + 21, 22, 23, 86, 540, 24, 25, 26, 27, 28, + 29, 30, 429, 31, 32, 33, 34, 35, 36, 87, + 107, 88, 89, 90, 37, 38, 91, 92, 93, 94, + 95, 96, 186, 187, 576, 97, 98, 99, 100, 101, + 475, 39, 374, 102, 40, 41, 42, 43, 44, 391, + 450, 45, 46, 47, 48, 49, 50, 51, 195, 196, + 197, 198, 199, 200, 497, 449, 52, 528, 201, 279, + 506, 202, 203, 204, 205, 0, 441, 352, 0, 85, + 0, 53, 54, 0, 55, 0, 56, 57, 18, 83, + 419, 19, 0, 58, 20, 0, 0, 21, 22, 23, + 86, 0, 24, 25, 26, 27, 28, 29, 30, 0, + 31, 32, 33, 34, 35, 36, 87, 107, 88, 89, + 90, 37, 38, 91, 92, 93, 94, 95, 96, 186, + 187, 0, 97, 98, 99, 100, 101, 0, 39, 0, + 102, 40, 41, 42, 43, 44, 0, 0, 45, 46, + 47, 48, 49, 50, 51, 0, 0, 197, 198, 199, + 200, 0, 0, 52, 0, 201, 0, 0, 202, 203, + 204, 205, 0, 0, 0, 0, 85, 0, 53, 54, + 0, 55, 0, 56, 57, 18, 83, 491, 19, 0, + 58, 20, 0, 0, 21, 22, 23, 86, 0, 24, + 25, 26, 27, 28, 29, 30, 0, 31, 32, 33, + 34, 35, 36, 87, 107, 88, 89, 90, 37, 38, + 91, 92, 93, 94, 95, 96, 186, 187, 0, 97, + 98, 99, 100, 101, 0, 39, 0, 102, 40, 41, + 42, 43, 44, 0, 0, 45, 46, 47, 48, 49, + 50, 51, 0, 0, 0, 0, 199, 200, 0, 0, + 52, 0, 201, 0, 0, 202, 203, 204, 205, 0, + 0, 0, 0, 85, 0, 53, 54, 0, 55, 0, + 56, 57, 18, 83, 544, 19, 0, 58, 20, 0, + 0, 21, 22, 23, 86, 0, 24, 25, 26, 27, + 28, 29, 30, 0, 31, 32, 33, 34, 35, 36, + 87, 107, 88, 89, 90, 37, 38, 91, 92, 93, + 94, 95, 96, 186, 187, 0, 97, 98, 99, 100, + 101, 0, 39, 0, 102, 40, 41, 42, 43, 44, + 0, 0, 45, 46, 47, 48, 49, 50, 51, 0, + 0, 0, 0, 0, 200, 0, 0, 52, 0, 201, + 0, 0, 202, 203, 204, 205, 0, 0, 0, 0, + 85, 0, 53, 54, 0, 55, 0, 56, 57, 18, + 83, 545, 19, 0, 58, 20, 0, 0, 21, 22, + 23, 86, 0, 24, 25, 26, 27, 28, 29, 30, + 0, 31, 32, 33, 34, 35, 36, 87, 107, 88, + 89, 90, 37, 38, 91, 92, 93, 94, 95, 96, + 0, 0, 0, 97, 98, 99, 100, 101, 0, 39, + 0, 102, 40, 41, 42, 43, 44, 0, 0, 45, + 46, 47, 48, 49, 50, 51, 201, 0, 0, 202, + 203, 204, 205, 0, 52, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 85, 0, 53, + 54, 0, 55, 0, 56, 57, 18, 83, 547, 19, + 0, 58, 20, 0, 0, 21, 22, 23, 86, 0, + 24, 25, 26, 27, 28, 29, 30, 0, 31, 32, + 33, 34, 35, 36, 87, 107, 88, 89, 90, 37, + 38, 91, 92, 93, 94, 95, 96, 0, 0, 0, + 97, 98, 99, 100, 101, 0, 39, 0, 102, 40, + 41, 42, 43, 44, 0, 0, 45, 46, 47, 48, + 49, 50, 51, 0, 0, 0, 0, 0, 0, 0, + 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 85, 0, 53, 54, 0, 55, + 0, 56, 57, 18, 83, 0, 19, 0, 58, 20, + 0, 0, 21, 22, 23, 86, 0, 24, 25, 26, + 27, 28, 29, 30, 0, 31, 32, 33, 34, 35, + 36, 87, 107, 88, 89, 90, 37, 38, 91, 92, + 93, 94, 95, 96, 0, 0, 0, 97, 98, 99, + 100, 101, 0, 39, 0, 102, 40, 41, 42, 43, + 44, 0, 0, 45, 46, 47, 48, 49, 50, 51, + 0, 0, 577, 0, 0, 0, 0, 0, 52, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 85, 0, 53, 54, 0, 55, 0, 56, 57, + 18, 83, 0, 19, 0, 58, 20, 0, 0, 21, + 22, 23, 86, 0, 24, 25, 26, 27, 28, 29, + 30, 0, 31, 32, 33, 34, 35, 36, 87, 107, + 88, 89, 90, 37, 38, 91, 92, 93, 94, 95, + 96, 0, 0, 0, 97, 98, 99, 100, 101, 0, + 39, 0, 102, 40, 41, 42, 43, 44, 0, 0, + 45, 46, 47, 48, 49, 50, 51, 0, 0, 0, + 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, + 53, 54, 0, 55, 0, 56, 57, 18, 83, 0, + 19, 0, 58, 20, 0, 0, 21, 22, 23, 86, + 0, 24, 25, 26, 27, 28, 29, 30, 0, 31, + 32, 33, 34, 35, 36, 87, 0, 88, 89, 90, + 37, 38, 91, 92, 93, 94, 95, 96, 0, 0, + 0, 97, 98, 99, 100, 101, 0, 39, 0, 102, + 40, 41, 42, 43, 44, 0, 0, 45, 46, 47, + 48, 49, 50, 51, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 85, 0, 0, 0, 0, 53, 54, 0, + 55, 18, 56, 57, 19, 0, 0, 20, 0, 58, + 21, 22, 23, -81, 0, 24, 25, 26, 27, 28, + 29, 30, 0, 31, 32, 33, 34, 35, 36, 0, + 0, 0, 0, 0, 37, 38, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 39, 0, 0, 40, 41, 42, 43, 44, 0, + 0, 45, 46, 47, 48, 49, 50, 51, 0, 0, + 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, + 0, 53, 54, 0, 55, 18, 56, 57, 19, 0, + 0, 20, 0, 58, 21, 22, 23, 0, 0, 24, + 25, 26, 27, 28, 29, 30, 0, 31, 32, 33, + 34, 35, 36, 0, 0, 0, 0, 0, 37, 38, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 39, 0, 0, 40, 41, + 42, 43, 44, -217, 0, 45, 46, 47, 48, 49, + 50, 51, 0, 0, 207, 0, 208, -217, -217, 0, + 52, 0, 0, 0, 0, -217, -217, 0, 0, 0, + 0, 0, 0, 0, 0, 53, 54, 0, 55, 0, + 56, 57, 0, 0, 0, 0, -81, 58, 0, 0, + -217, -217, -217, -217, 0, 0, 0, -217, 0, -217, + 0, 0, 0, 0, -217, 0, 0, 0, 0, 0, + 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -217, 0, -217, -217, 0, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -256, 186, 187, 0, -217, 0, 0, + -217, -217, -217, -217, -217, 0, 0, -256, -256, 0, + 0, 0, 0, 0, 0, -256, -256, 192, 193, 194, 195, 196, 197, 198, 199, 200, 0, 0, 0, 0, - 201, 185, 0, 202, 203, 204, 205, 0, 186, 187, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, - 0, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 0, 0, 0, 0, 201, -290, 0, 202, - 203, 204, 205, 0, 186, 187, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 0, 0, - 0, 0, 201, 0, 0, 202, 203, 204, 205 + 201, 0, 0, 202, 203, 204, 205, 0, 0, 0, + -256, -256, -256, -256, 0, 0, 0, -256, 0, -256, + 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, + 0, -256, -256, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -256, 0, -256, -256, 0, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, 0, 0, 0, 0, -256, 0, 0, + -256, -256, -256, -256, -256, 18, 83, 0, 19, 0, + 0, 20, 0, 0, 21, 22, 23, 0, 0, 24, + 25, 144, 27, 28, 29, 30, 116, 31, 32, 33, + 34, 35, 36, 0, 0, 0, 0, 0, 37, 38, + 0, 0, 0, 0, 0, 0, 0, 0, 186, 187, + 0, 0, 0, 0, 0, 39, 0, 0, 40, 41, + 42, 43, 44, 0, 0, 45, 46, 47, 48, 49, + 50, 51, 193, 194, 195, 196, 197, 198, 199, 200, + 52, 0, 0, 0, 201, 0, 0, 202, 203, 204, + 205, 0, 0, 0, 0, 53, 54, 0, 55, 18, + 56, 57, 19, 120, 0, 20, 0, 58, 21, 22, + 23, 0, 0, 24, 25, 26, 27, 28, 29, 30, + 0, 31, 32, 33, 34, 35, 36, 0, 0, 0, + 0, 0, 37, 38, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, + 0, 0, 40, 41, 42, 43, 44, 0, 0, 45, + 46, 47, 48, 49, 50, 51, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, + 54, 0, 55, 0, 56, 57, 18, 83, 0, 19, + 0, 58, 20, 0, 0, 21, 22, 23, 0, 0, + 24, 25, 26, 27, 28, 29, 30, 0, 31, 32, + 33, 34, 35, 36, 0, 0, 0, 0, 0, 37, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 39, 0, 0, 40, + 41, 42, 43, 44, 0, 0, 45, 46, 47, 48, + 49, 50, 51, 0, 0, 0, 0, 0, 0, 0, + 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 53, 54, 0, 55, + 18, 56, 57, 19, 0, 0, 20, 0, 58, 21, + 22, 23, 152, 0, 24, 25, 26, 27, 28, 29, + 30, 0, 31, 32, 33, 34, 35, 36, 0, 0, + 0, 0, 0, 37, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 39, 0, 0, 40, 41, 42, 43, 44, 0, 0, + 45, 46, 47, 48, 49, 50, 51, 0, 0, 0, + 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 54, 0, 55, 18, 56, 57, 19, 0, 0, + 20, 0, 58, 21, 22, 23, 0, 0, 24, 25, + 26, 27, 28, 29, 30, 0, 31, 32, 33, 34, + 35, 36, 0, 0, 0, 0, 0, 37, 38, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 39, 0, 0, 40, 41, 42, + 43, 44, 0, 0, 45, 46, 47, 48, 49, 50, + 51, 0, 0, 0, 0, 0, 0, 0, 0, 52, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 53, 54, 0, 55, 18, 56, + 57, 19, 0, 0, 20, 171, 58, 21, 22, 23, + 0, 0, 24, 25, 26, 27, 28, 29, 30, 0, + 31, 32, 33, 34, 35, 36, 0, 0, 0, 0, + 0, 37, 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, + 0, 40, 41, 42, 43, 44, 0, 0, 45, 46, + 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, + 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 53, 54, + 0, 55, 18, 56, 57, 19, 0, 0, 20, 268, + 58, 21, 22, 23, 0, 0, 24, 25, 26, 27, + 28, 29, 30, 0, 31, 32, 33, 34, 35, 36, + 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 39, 0, 0, 40, 41, 42, 43, 44, + 0, 0, 45, 46, 47, 48, 49, 50, 51, 0, + 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 54, 0, 55, 18, 56, 57, 19, + 0, 0, 20, 283, 58, 21, 22, 23, 0, 0, + 24, 25, 26, 27, 28, 29, 30, 0, 31, 32, + 33, 34, 35, 36, 0, 0, 0, 0, 0, 37, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 39, 0, 0, 40, + 41, 42, 43, 44, 0, 0, 45, 46, 47, 48, + 49, 50, 51, 0, 0, 0, 0, 0, 0, 0, + 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 53, 54, 0, 55, + 18, 56, 57, 19, 0, 0, 20, 294, 58, 21, + 22, 23, 0, 0, 24, 25, 26, 27, 28, 29, + 30, 0, 31, 32, 33, 34, 35, 36, 0, 0, + 0, 0, 0, 37, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 39, 0, 0, 40, 41, 42, 43, 44, 0, 0, + 45, 46, 47, 48, 49, 50, 51, 0, 0, 0, + 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 54, 0, 55, 18, 56, 57, 19, 0, 0, + 20, 327, 58, 21, 22, 23, 0, 0, 24, 25, + 26, 27, 28, 29, 30, 0, 31, 32, 33, 34, + 35, 36, 0, 0, 0, 0, 0, 37, 38, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 39, 0, 0, 40, 41, 42, + 43, 44, 0, 0, 45, 46, 47, 48, 49, 50, + 51, 0, 0, 0, 0, 0, 0, 0, 0, 52, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 53, 54, 0, 55, 18, 56, + 57, 19, 0, 0, 20, 389, 58, 21, 22, 23, + 0, 0, 24, 25, 26, 27, 28, 29, 30, 0, + 31, 32, 33, 34, 35, 36, 0, 0, 0, 0, + 0, 37, 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, + 0, 40, 41, 42, 43, 44, 0, 0, 45, 46, + 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, + 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 53, 54, + 0, 55, 18, 56, 57, 19, 0, 0, 20, 408, + 58, 21, 22, 23, 0, 0, 24, 25, 26, 27, + 28, 29, 30, 0, 31, 32, 33, 34, 35, 36, + 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 39, 0, 0, 40, 41, 42, 43, 44, + 0, 0, 45, 46, 47, 48, 49, 50, 51, 0, + 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 54, 0, 55, 18, 56, 57, 19, + 0, 0, 20, 0, 58, 21, 22, 23, 0, 0, + 24, 25, 26, 27, 28, 29, 30, 0, 31, 32, + 33, 34, 35, 36, 0, 0, 0, 0, 0, 37, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 39, 0, 0, 40, + 41, 42, 43, 44, 0, 0, 45, 46, 47, 48, + 49, 50, 51, 0, 0, 0, 0, 0, 0, 0, + 0, 52, 0, 0, 185, 0, 0, 0, 0, 0, + 0, 186, 187, 0, 0, 0, 53, 54, 0, 55, + 0, 56, 57, 0, 0, 0, 0, 0, 277, 188, + 189, 399, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 0, 0, 0, 0, 201, 185, 0, + 202, 203, 204, 205, 0, 186, 187, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 188, 189, 0, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 0, 0, 0, + 0, 201, 0, 0, 202, 203, 204, 205 }; static const yytype_int16 yycheck[] = { - 17, 125, 10, 48, 9, 42, 48, 137, 138, 345, - 18, 10, 12, 50, 24, 355, 10, 12, 474, 355, - 262, 505, 358, 359, 10, 21, 12, 21, 0, 153, - 26, 12, 26, 10, 21, 22, 23, 45, 25, 26, - 73, 80, 10, 10, 21, 12, 16, 17, 56, 26, - 16, 17, 16, 17, 18, 42, 43, 91, 92, 21, - 22, 23, 12, 25, 26, 10, 10, 12, 12, 89, - 90, 58, 111, 80, 107, 70, 107, 10, 83, 12, - 42, 43, 566, 46, 47, 10, 48, 12, 125, 70, - 91, 16, 17, 18, 107, 57, 58, 22, 108, 16, - 17, 557, 438, 70, 68, 10, 106, 12, 145, 108, - 155, 89, 10, 155, 12, 109, 153, 76, 77, 78, - 128, 107, 19, 20, 13, 70, 256, 107, 136, 137, - 138, 13, 109, 110, 96, 32, 107, 70, 63, 109, - 37, 477, 478, 109, 41, 109, 13, 44, 156, 13, - 47, 138, 49, 21, 51, 52, 53, 54, 55, 102, - 103, 104, 105, 10, 172, 173, 174, 10, 176, 177, - 178, 13, 216, 217, 510, 13, 138, 419, 35, 36, - 225, 98, 107, 225, 109, 110, 107, 76, 77, 78, - 107, 13, 109, 155, 76, 77, 78, 214, 206, 207, - 208, 209, 210, 211, 212, 213, 13, 107, 544, 76, - 77, 78, 76, 77, 78, 220, 221, 222, 223, 224, - 257, 226, 227, 563, 229, 230, 107, 469, 236, 237, - 238, 239, 240, 241, 76, 77, 78, 107, 76, 77, - 78, 99, 68, 205, 102, 103, 104, 105, 256, 88, - 89, 375, 13, 107, 76, 77, 78, 10, 155, 12, - 108, 107, 270, 225, 10, 48, 12, 275, 108, 76, - 77, 78, 98, 76, 77, 78, 406, 285, 175, 107, - 73, 107, 106, 109, 181, 24, 70, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 108, 314, 315, 106, 11, - 11, 356, 70, 321, 356, 76, 77, 78, 12, 21, - 22, 23, 98, 25, 26, 76, 77, 78, 21, 76, - 77, 78, 21, 107, 342, 343, 344, 345, 375, 41, - 42, 43, 44, 76, 77, 78, 26, 355, 472, 508, - 358, 359, 357, 80, 24, 57, 58, 108, 74, 11, - 322, 108, 61, 62, 523, 524, 106, 476, 24, 12, - 479, 376, 78, 106, 483, 484, 535, 107, 76, 77, - 78, 110, 110, 391, 110, 347, 545, 546, 110, 110, - 61, 19, 501, 502, 356, 94, 21, 99, 406, 558, - 99, 109, 511, 102, 103, 104, 105, 76, 77, 78, - 108, 416, 107, 81, 106, 420, 107, 526, 76, 77, - 78, 530, 531, 94, 61, 62, 431, 11, 99, 131, - 438, 102, 103, 104, 105, 472, 138, 106, 446, 548, - 76, 77, 78, 42, 43, 44, 45, 11, 106, 11, - 49, 11, 51, 562, 91, 92, 93, 94, 11, 106, - 21, 570, 99, 107, 106, 102, 103, 104, 105, 477, - 478, 488, 108, 490, 106, 106, 0, 76, 77, 78, - 106, 108, 499, 76, 77, 78, 10, 106, 12, 13, - 495, 61, 62, 106, 76, 77, 78, 74, 395, 10, - 10, 509, 510, 11, 106, 108, 10, 106, 525, 76, - 77, 78, 108, 107, 106, 108, 106, 72, 42, 43, - 44, 45, 108, 93, 94, 49, 108, 51, 108, 99, - 54, 233, 102, 103, 104, 105, 544, 61, 62, 106, - 106, 106, 559, 71, 441, 108, 76, 77, 78, 107, - 74, 20, 76, 77, 78, 106, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 106, 0, 106, 13, 99, 106, 106, 102, 103, - 104, 105, 106, 509, 108, 13, 343, 111, 76, 77, - 78, 418, 76, 77, 78, 76, 77, 78, 94, 61, - 62, 277, 563, 99, 370, 495, 102, 103, 104, 105, - 248, 371, 155, 356, 42, 43, 44, 45, 106, 451, - 322, 49, 106, 51, 225, 106, 54, 89, 90, 91, - 92, 93, 94, 61, 62, 470, -1, 99, -1, -1, - 102, 103, 104, 105, -1, -1, 74, -1, 76, 77, - 78, -1, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, -1, -1, -1, - -1, 99, 0, 1, 102, 103, 104, 105, 106, -1, - 108, -1, 10, 111, 12, -1, 14, 15, 16, 17, - 18, -1, -1, 21, 22, 23, 24, 25, -1, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, - -1, 49, 50, 51, 52, 53, -1, 55, 56, 57, - 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, - 68, 69, 3, 4, 5, 6, 7, 8, 9, -1, - -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 95, 96, -1, - 98, -1, 100, 101, 0, 1, -1, -1, -1, 107, - 108, 109, 110, -1, 10, -1, 12, -1, 14, 15, - 16, 17, 18, -1, -1, 21, 22, 23, 24, 25, - -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 17, 264, 10, 18, 9, 20, 128, 22, 44, 24, + 25, 19, 27, 28, 356, 16, 52, 50, 18, 50, + 12, 480, 22, 13, 24, 25, 14, 27, 28, 44, + 45, 512, 0, 80, 156, 50, 11, 10, 11, 47, + 13, 140, 141, 16, 44, 45, 112, 20, 14, 112, + 58, 24, 25, 11, 27, 11, 112, 13, 15, 14, + 18, 11, 20, 13, 22, 112, 24, 25, 14, 27, + 28, 96, 13, 11, 75, 13, 16, 112, 83, 14, + 20, 13, 97, 94, 24, 43, 44, 45, 46, 11, + 11, 15, 128, 26, 575, 83, 84, 70, 31, 23, + 346, 22, 103, 11, 14, 564, 83, 84, 14, 26, + 356, 112, 148, 359, 360, 107, 14, 83, 84, 14, + 156, 77, 21, 131, 23, 158, 141, 158, 83, 84, + 112, 139, 140, 141, 111, 34, 77, 83, 84, 112, + 39, 141, 100, 158, 43, 77, 22, 46, 83, 84, + 49, 159, 51, 112, 53, 54, 55, 56, 57, 258, + 423, 10, 112, 103, 112, 173, 174, 16, 176, 177, + 178, 20, 112, 83, 84, 24, 134, 83, 84, 11, + 11, 13, 13, 141, 22, 83, 84, 22, 83, 84, + 205, 29, 225, 22, 225, 22, 442, 214, 206, 207, + 208, 209, 210, 211, 212, 213, 22, 83, 84, 112, + 225, 22, 475, 22, 11, 220, 221, 222, 223, 224, + 112, 226, 227, 259, 229, 230, 75, 83, 84, 571, + 238, 239, 240, 241, 242, 243, 16, 483, 484, 11, + 20, 13, 83, 84, 24, 77, 77, 112, 83, 84, + 258, 22, 96, 97, 83, 84, 80, 379, 16, 158, + 53, 11, 20, 13, 272, 22, 24, 83, 84, 277, + 111, 517, 83, 84, 83, 84, 175, 235, 11, 287, + 13, 11, 181, 13, 112, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 318, 111, 551, 83, 84, 316, 317, + 11, 410, 83, 84, 29, 16, 324, 83, 84, 83, + 84, 83, 84, 77, 357, 26, 357, 94, 95, 111, + 31, 83, 84, 348, 111, 343, 344, 345, 346, 51, + 52, 12, 357, 379, 361, 111, 77, 111, 356, 111, + 13, 359, 360, 358, 481, 482, 478, 68, 485, 111, + 318, 26, 489, 490, 83, 84, 26, 47, 48, 49, + 50, 216, 217, 112, 54, 380, 56, 47, 48, 49, + 50, 103, 509, 510, 54, 59, 56, 395, 99, 37, + 38, 518, 111, 104, 89, 90, 107, 108, 109, 110, + 515, 31, 410, 83, 84, 15, 533, 29, 81, 111, + 537, 538, 12, 83, 84, 420, 531, 532, 29, 424, + 13, 11, 25, 84, 25, 61, 16, 542, 555, 25, + 435, 111, 68, 69, 442, 25, 26, 552, 553, 566, + 25, 31, 478, 570, 452, 107, 108, 109, 110, 25, + 565, 87, 579, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 240, 241, 242, 243, 104, 112, + 18, 107, 108, 109, 110, 483, 484, 26, 16, 496, + 112, 498, 86, 112, 61, 111, 12, 492, 112, 12, + 507, 68, 69, 12, 99, 12, 12, 26, 503, 104, + 399, 22, 107, 108, 109, 110, 521, 81, 516, 517, + 112, 11, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 111, 111, 111, 11, 104, 111, 111, + 107, 108, 109, 110, 0, 1, 3, 4, 5, 6, + 7, 8, 9, 551, 10, 11, 111, 13, 447, 111, + 16, 568, 12, 19, 20, 21, 22, 111, 24, 25, + 26, 27, 28, 29, 30, 22, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - -1, -1, -1, 49, 50, 51, 52, 53, -1, 55, - 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, - 66, 67, 68, 69, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 95, - 96, -1, 98, -1, 100, 101, 1, -1, -1, -1, - -1, 107, 108, 109, 110, 10, 11, 12, -1, 14, - 15, 16, 17, 18, -1, -1, 21, 22, 23, 24, - 25, -1, 27, 28, 29, 30, 31, 32, 33, 34, + 46, 47, 48, 49, 50, 22, 68, 69, 54, 55, + 56, 57, 58, 111, 60, 79, 62, 63, 64, 65, + 66, 67, 112, 111, 70, 71, 72, 73, 74, 75, + 76, 93, 94, 95, 96, 97, 98, 99, 22, 85, + 22, 111, 104, 111, 22, 107, 108, 109, 110, 112, + 111, 0, 1, 111, 100, 101, 17, 103, 78, 105, + 106, 10, 11, 111, 13, 13, 112, 16, 111, 107, + 19, 20, 21, 22, 516, 24, 25, 26, 27, 28, + 29, 30, 344, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 68, 69, 571, 54, 55, 56, 57, 58, + 422, 60, 250, 62, 63, 64, 65, 66, 67, 279, + 375, 70, 71, 72, 73, 74, 75, 76, 94, 95, + 96, 97, 98, 99, 457, 374, 85, 503, 104, 158, + 476, 107, 108, 109, 110, -1, 357, 225, -1, 1, + -1, 100, 101, -1, 103, -1, 105, 106, 10, 11, + 12, 13, -1, 112, 16, -1, -1, 19, 20, 21, + 22, -1, 24, 25, 26, 27, 28, 29, 30, -1, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 68, + 69, -1, 54, 55, 56, 57, 58, -1, 60, -1, + 62, 63, 64, 65, 66, 67, -1, -1, 70, 71, + 72, 73, 74, 75, 76, -1, -1, 96, 97, 98, + 99, -1, -1, 85, -1, 104, -1, -1, 107, 108, + 109, 110, -1, -1, -1, -1, 1, -1, 100, 101, + -1, 103, -1, 105, 106, 10, 11, 12, 13, -1, + 112, 16, -1, -1, 19, 20, 21, 22, -1, 24, + 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, -1, -1, -1, 49, 50, 51, 52, 53, -1, - 55, 56, 57, 58, 59, 60, -1, -1, 63, 64, - 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 95, 96, -1, 98, -1, 100, 101, 1, -1, -1, - -1, -1, 107, 108, 109, 110, 10, 11, 12, -1, - 14, 15, 16, 17, 18, -1, -1, 21, 22, 23, - 24, 25, -1, 27, 28, 29, 30, 31, 32, 33, + 45, 46, 47, 48, 49, 50, 68, 69, -1, 54, + 55, 56, 57, 58, -1, 60, -1, 62, 63, 64, + 65, 66, 67, -1, -1, 70, 71, 72, 73, 74, + 75, 76, -1, -1, -1, -1, 98, 99, -1, -1, + 85, -1, 104, -1, -1, 107, 108, 109, 110, -1, + -1, -1, -1, 1, -1, 100, 101, -1, 103, -1, + 105, 106, 10, 11, 12, 13, -1, 112, 16, -1, + -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, + 28, 29, 30, -1, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 68, 69, -1, 54, 55, 56, 57, + 58, -1, 60, -1, 62, 63, 64, 65, 66, 67, + -1, -1, 70, 71, 72, 73, 74, 75, 76, -1, + -1, -1, -1, -1, 99, -1, -1, 85, -1, 104, + -1, -1, 107, 108, 109, 110, -1, -1, -1, -1, + 1, -1, 100, 101, -1, 103, -1, 105, 106, 10, + 11, 12, 13, -1, 112, 16, -1, -1, 19, 20, + 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, + -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + -1, -1, -1, 54, 55, 56, 57, 58, -1, 60, + -1, 62, 63, 64, 65, 66, 67, -1, -1, 70, + 71, 72, 73, 74, 75, 76, 104, -1, -1, 107, + 108, 109, 110, -1, 85, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1, -1, 100, + 101, -1, 103, -1, 105, 106, 10, 11, 12, 13, + -1, 112, 16, -1, -1, 19, 20, 21, 22, -1, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, -1, -1, -1, 49, 50, 51, 52, 53, - -1, 55, 56, 57, 58, 59, 60, -1, -1, 63, - 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 95, 96, -1, 98, -1, 100, 101, 1, -1, - -1, -1, -1, 107, 108, 109, 110, 10, 11, 12, - -1, 14, 15, 16, 17, 18, -1, -1, 21, 22, - 23, 24, 25, -1, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, -1, -1, -1, 49, 50, 51, 52, - 53, -1, 55, 56, 57, 58, 59, 60, -1, -1, - 63, 64, 65, 66, 67, 68, 69, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 95, 96, -1, 98, -1, 100, 101, 1, - -1, -1, -1, -1, 107, 108, 109, 110, 10, 11, - 12, -1, 14, 15, 16, 17, 18, -1, -1, 21, - 22, 23, 24, 25, -1, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, -1, -1, -1, 49, 50, 51, - 52, 53, -1, 55, 56, 57, 58, 59, 60, -1, - -1, 63, 64, 65, 66, 67, 68, 69, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 95, 96, -1, 98, -1, 100, 101, - 1, -1, -1, -1, -1, 107, 108, 109, 110, 10, - 11, 12, -1, 14, 15, 16, 17, 18, -1, -1, - 21, 22, 23, 24, 25, -1, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, -1, -1, -1, 49, 50, - 51, 52, 53, -1, 55, 56, 57, 58, 59, 60, - -1, -1, 63, 64, 65, 66, 67, 68, 69, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 79, -1, + 44, 45, 46, 47, 48, 49, 50, -1, -1, -1, + 54, 55, 56, 57, 58, -1, 60, -1, 62, 63, + 64, 65, 66, 67, -1, -1, 70, 71, 72, 73, + 74, 75, 76, -1, -1, -1, -1, -1, -1, -1, + -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1, -1, 100, 101, -1, 103, + -1, 105, 106, 10, 11, -1, 13, -1, 112, 16, + -1, -1, 19, 20, 21, 22, -1, 24, 25, 26, + 27, 28, 29, 30, -1, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, -1, -1, -1, 54, 55, 56, + 57, 58, -1, 60, -1, 62, 63, 64, 65, 66, + 67, -1, -1, 70, 71, 72, 73, 74, 75, 76, + -1, -1, 79, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 95, 96, -1, 98, -1, 100, - 101, 1, -1, -1, -1, -1, 107, 108, 109, 110, - 10, -1, 12, -1, 14, 15, 16, 17, 18, -1, - -1, 21, 22, 23, 24, 25, -1, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, -1, -1, -1, 49, - 50, 51, 52, 53, -1, 55, 56, 57, 58, 59, - 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, - -1, -1, 72, -1, -1, -1, -1, -1, -1, 79, + -1, 1, -1, 100, 101, -1, 103, -1, 105, 106, + 10, 11, -1, 13, -1, 112, 16, -1, -1, 19, + 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, + 30, -1, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, -1, -1, -1, 54, 55, 56, 57, 58, -1, + 60, -1, 62, 63, 64, 65, 66, 67, -1, -1, + 70, 71, 72, 73, 74, 75, 76, -1, -1, -1, + -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, + 100, 101, -1, 103, -1, 105, 106, 10, 11, -1, + 13, -1, 112, 16, -1, -1, 19, 20, 21, 22, + -1, 24, 25, 26, 27, 28, 29, 30, -1, 32, + 33, 34, 35, 36, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, -1, -1, + -1, 54, 55, 56, 57, 58, -1, 60, -1, 62, + 63, 64, 65, 66, 67, -1, -1, 70, 71, 72, + 73, 74, 75, 76, -1, -1, -1, -1, -1, -1, + -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1, -1, -1, -1, -1, 100, 101, -1, + 103, 10, 105, 106, 13, -1, -1, 16, -1, 112, + 19, 20, 21, 22, -1, 24, 25, 26, 27, 28, + 29, 30, -1, 32, 33, 34, 35, 36, 37, -1, + -1, -1, -1, -1, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 95, 96, -1, 98, -1, - 100, 101, 1, -1, -1, -1, -1, 107, 108, 109, - 110, 10, -1, 12, -1, 14, 15, 16, 17, 18, - -1, -1, 21, 22, 23, 24, 25, -1, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, - 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, - 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, - 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 95, 96, -1, 98, - -1, 100, 101, 1, -1, -1, -1, -1, 107, 108, - 109, 110, 10, -1, 12, -1, 14, 15, 16, 17, - 18, -1, -1, 21, 22, 23, 24, 25, -1, 27, - 28, 29, 30, 31, 32, 33, -1, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, - -1, 49, 50, 51, 52, 53, -1, 55, 56, 57, - 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, - 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 95, 96, -1, - 98, -1, 100, 101, 1, -1, -1, -1, -1, 107, - 108, 109, 110, -1, -1, 12, -1, 14, 15, 16, - 17, 18, -1, -1, 21, 22, 23, 24, 25, -1, - 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, - -1, 38, 39, -1, -1, -1, -1, -1, 61, 62, - -1, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, - 67, 68, 69, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 79, -1, -1, -1, 99, -1, -1, 102, - 103, 104, 105, -1, -1, -1, -1, -1, 95, 96, - -1, 98, -1, 100, 101, 1, -1, -1, -1, -1, - 107, 108, 109, 110, -1, -1, 12, -1, 14, 15, - 16, 17, 18, -1, -1, 21, 22, 23, 24, 25, - -1, 27, 28, 29, 30, 31, 32, -1, -1, -1, - -1, -1, 38, 39, -1, -1, -1, -1, 61, 62, - -1, -1, -1, -1, -1, -1, -1, 53, -1, -1, - 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, - 66, 67, 68, 69, 87, 88, 89, 90, 91, 92, - 93, 94, -1, 79, -1, -1, 99, -1, -1, 102, - 103, 104, 105, -1, -1, -1, -1, -1, -1, 95, - 96, -1, 98, -1, 100, 101, -1, -1, -1, -1, - 106, 107, -1, 109, 110, 10, -1, 12, -1, 14, - 15, 16, 17, 18, -1, -1, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, - -1, -1, -1, 38, 39, -1, -1, -1, 61, 62, - -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, - -1, 56, 57, 58, 59, 60, -1, -1, 63, 64, - 65, 66, 67, 68, 69, 88, 89, 90, 91, 92, - 93, 94, -1, -1, 79, -1, 99, -1, -1, 102, - 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, - 95, 96, -1, 98, -1, 100, 101, -1, -1, -1, - -1, -1, 107, -1, 109, 110, 10, -1, 12, -1, - 14, 15, 16, 17, 18, -1, -1, 21, 22, 23, - 24, 25, -1, 27, 28, 29, 30, 31, 32, -1, - -1, -1, -1, -1, 38, 39, 42, 43, 44, 45, - -1, -1, -1, 49, -1, 51, -1, -1, -1, 53, - -1, -1, 56, 57, 58, 59, 60, -1, -1, 63, - 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, - 76, 77, 78, -1, -1, 79, -1, -1, -1, -1, + -1, 60, -1, -1, 63, 64, 65, 66, 67, -1, + -1, 70, 71, 72, 73, 74, 75, 76, -1, -1, + -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, + -1, 100, 101, -1, 103, 10, 105, 106, 13, -1, + -1, 16, -1, 112, 19, 20, 21, -1, -1, 24, + 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, + 35, 36, 37, -1, -1, -1, -1, -1, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 95, 96, -1, 98, -1, 100, 101, -1, -1, - -1, -1, -1, 107, -1, 109, 110, 12, 13, 14, - 15, 16, 17, 18, -1, -1, 21, 22, 23, 24, - 25, -1, 27, 28, 29, 30, 31, 32, -1, -1, - -1, -1, -1, 38, 39, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, - -1, 56, 57, 58, 59, 60, -1, -1, 63, 64, - 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 60, -1, -1, 63, 64, + 65, 66, 67, 0, -1, 70, 71, 72, 73, 74, + 75, 76, -1, -1, 11, -1, 13, 14, 15, -1, + 85, -1, -1, -1, -1, 22, 23, -1, -1, -1, + -1, -1, -1, -1, -1, 100, 101, -1, 103, -1, + 105, 106, -1, -1, -1, -1, 111, 112, -1, -1, + 47, 48, 49, 50, -1, -1, -1, 54, -1, 56, + -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, + -1, 68, 69, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 81, -1, 83, 84, -1, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 0, 68, 69, -1, 104, -1, -1, + 107, 108, 109, 110, 111, -1, -1, 14, 15, -1, + -1, -1, -1, -1, -1, 22, 23, 91, 92, 93, + 94, 95, 96, 97, 98, 99, -1, -1, -1, -1, + 104, -1, -1, 107, 108, 109, 110, -1, -1, -1, + 47, 48, 49, 50, -1, -1, -1, 54, -1, 56, + -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, + -1, 68, 69, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 81, -1, 83, 84, -1, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, -1, -1, -1, -1, 104, -1, -1, + 107, 108, 109, 110, 111, 10, 11, -1, 13, -1, + -1, 16, -1, -1, 19, 20, 21, -1, -1, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, -1, -1, -1, -1, -1, 43, 44, + -1, -1, -1, -1, -1, -1, -1, -1, 68, 69, + -1, -1, -1, -1, -1, 60, -1, -1, 63, 64, + 65, 66, 67, -1, -1, 70, 71, 72, 73, 74, + 75, 76, 92, 93, 94, 95, 96, 97, 98, 99, + 85, -1, -1, -1, 104, -1, -1, 107, 108, 109, + 110, -1, -1, -1, -1, 100, 101, -1, 103, 10, + 105, 106, 13, 14, -1, 16, -1, 112, 19, 20, + 21, -1, -1, 24, 25, 26, 27, 28, 29, 30, + -1, 32, 33, 34, 35, 36, 37, -1, -1, -1, + -1, -1, 43, 44, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, + -1, -1, 63, 64, 65, 66, 67, -1, -1, 70, + 71, 72, 73, 74, 75, 76, -1, -1, -1, -1, + -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, + 101, -1, 103, -1, 105, 106, 10, 11, -1, 13, + -1, 112, 16, -1, -1, 19, 20, 21, -1, -1, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, 35, 36, 37, -1, -1, -1, -1, -1, 43, + 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 60, -1, -1, 63, + 64, 65, 66, 67, -1, -1, 70, 71, 72, 73, + 74, 75, 76, -1, -1, -1, -1, -1, -1, -1, + -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 100, 101, -1, 103, + 10, 105, 106, 13, -1, -1, 16, -1, 112, 19, + 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, + 30, -1, 32, 33, 34, 35, 36, 37, -1, -1, + -1, -1, -1, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 95, 96, -1, 98, -1, 100, 101, -1, -1, -1, - -1, -1, 107, -1, 109, 110, 12, -1, 14, 15, - 16, 17, 18, -1, -1, 21, 22, 23, 24, 25, - -1, 27, 28, 29, 30, 31, 32, -1, -1, -1, - -1, -1, 38, 39, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 53, -1, -1, - 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, - 66, 67, 68, 69, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 95, - 96, -1, 98, -1, 100, 101, -1, -1, -1, -1, - -1, 107, 108, 109, 110, 12, -1, 14, 15, 16, - 17, 18, -1, -1, 21, 22, 23, 24, 25, -1, - 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, - -1, 38, 39, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, - 67, 68, 69, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 95, 96, - -1, 98, -1, 100, 101, -1, -1, -1, -1, 106, - 107, -1, 109, 110, 12, -1, 14, 15, 16, 17, - 18, -1, -1, 21, 22, 23, 24, 25, -1, 27, - 28, 29, 30, 31, 32, -1, -1, -1, -1, -1, - 38, 39, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 53, -1, -1, 56, 57, - 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, - 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 95, 96, -1, - 98, -1, 100, 101, -1, -1, -1, -1, 106, 107, - -1, 109, 110, 12, -1, 14, 15, 16, 17, 18, - -1, -1, 21, 22, 23, 24, 25, -1, 27, 28, - 29, 30, 31, 32, -1, -1, -1, -1, -1, 38, - 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 53, -1, -1, 56, 57, 58, - 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, - 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 95, 96, -1, 98, - -1, 100, 101, -1, -1, -1, -1, 106, 107, -1, - 109, 110, 12, -1, 14, 15, 16, 17, 18, -1, - -1, 21, 22, 23, 24, 25, -1, 27, 28, 29, - 30, 31, 32, -1, -1, -1, -1, -1, 38, 39, + 60, -1, -1, 63, 64, 65, 66, 67, -1, -1, + 70, 71, 72, 73, 74, 75, 76, -1, -1, -1, + -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 53, -1, -1, 56, 57, 58, 59, - 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, + 100, 101, -1, 103, 10, 105, 106, 13, -1, -1, + 16, -1, 112, 19, 20, 21, -1, -1, 24, 25, + 26, 27, 28, 29, 30, -1, 32, 33, 34, 35, + 36, 37, -1, -1, -1, -1, -1, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 95, 96, -1, 98, -1, - 100, 101, -1, -1, -1, -1, 106, 107, -1, 109, - 110, 12, -1, 14, 15, 16, 17, 18, -1, -1, - 21, 22, 23, 24, 25, -1, 27, 28, 29, 30, - 31, 32, -1, -1, -1, -1, -1, 38, 39, -1, + -1, -1, -1, -1, 60, -1, -1, 63, 64, 65, + 66, 67, -1, -1, 70, 71, 72, 73, 74, 75, + 76, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 53, -1, -1, 56, 57, 58, 59, 60, - -1, -1, 63, 64, 65, 66, 67, 68, 69, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 79, -1, + -1, -1, -1, -1, 100, 101, -1, 103, 10, 105, + 106, 13, -1, -1, 16, 111, 112, 19, 20, 21, + -1, -1, 24, 25, 26, 27, 28, 29, 30, -1, + 32, 33, 34, 35, 36, 37, -1, -1, -1, -1, + -1, 43, 44, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 60, -1, + -1, 63, 64, 65, 66, 67, -1, -1, 70, 71, + 72, 73, 74, 75, 76, -1, -1, -1, -1, -1, + -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 100, 101, + -1, 103, 10, 105, 106, 13, -1, -1, 16, 111, + 112, 19, 20, 21, -1, -1, 24, 25, 26, 27, + 28, 29, 30, -1, 32, 33, 34, 35, 36, 37, + -1, -1, -1, -1, -1, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 95, 96, -1, 98, -1, 100, - 101, -1, -1, -1, -1, 106, 107, -1, 109, 110, - 12, -1, 14, 15, 16, 17, 18, -1, -1, 21, - 22, 23, 24, 25, -1, 27, 28, 29, 30, 31, - 32, -1, -1, -1, -1, -1, 38, 39, -1, -1, + -1, -1, 60, -1, -1, 63, 64, 65, 66, 67, + -1, -1, 70, 71, 72, 73, 74, 75, 76, -1, + -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 53, -1, -1, 56, 57, 58, 59, 60, -1, - -1, 63, 64, 65, 66, 67, 68, 69, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, + -1, -1, 100, 101, -1, 103, 10, 105, 106, 13, + -1, -1, 16, 111, 112, 19, 20, 21, -1, -1, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, 35, 36, 37, -1, -1, -1, -1, -1, 43, + 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 60, -1, -1, 63, + 64, 65, 66, 67, -1, -1, 70, 71, 72, 73, + 74, 75, 76, -1, -1, -1, -1, -1, -1, -1, + -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 100, 101, -1, 103, + 10, 105, 106, 13, -1, -1, 16, 111, 112, 19, + 20, 21, -1, -1, 24, 25, 26, 27, 28, 29, + 30, -1, 32, 33, 34, 35, 36, 37, -1, -1, + -1, -1, -1, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 95, 96, -1, 98, -1, 100, 101, - -1, -1, -1, -1, 106, 107, -1, 109, 110, 12, - -1, 14, 15, 16, 17, 18, -1, -1, 21, 22, - 23, 24, 25, -1, 27, 28, 29, 30, 31, 32, - -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, + 60, -1, -1, 63, 64, 65, 66, 67, -1, -1, + 70, 71, 72, 73, 74, 75, 76, -1, -1, -1, + -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 53, -1, -1, 56, 57, 58, 59, 60, -1, -1, - 63, 64, 65, 66, 67, 68, 69, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, + 100, 101, -1, 103, 10, 105, 106, 13, -1, -1, + 16, 111, 112, 19, 20, 21, -1, -1, 24, 25, + 26, 27, 28, 29, 30, -1, 32, 33, 34, 35, + 36, 37, -1, -1, -1, -1, -1, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 95, 96, -1, 98, -1, 100, 101, -1, - -1, -1, -1, 106, 107, -1, 109, 110, 12, -1, - 14, 15, 16, 17, 18, -1, -1, 21, 22, 23, - 24, 25, -1, 27, 28, 29, 30, 31, 32, -1, - -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, - -1, -1, 56, 57, 58, 59, 60, -1, -1, 63, - 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, + -1, -1, -1, -1, 60, -1, -1, 63, 64, 65, + 66, 67, -1, -1, 70, 71, 72, 73, 74, 75, + 76, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 95, 96, -1, 98, -1, 100, 101, -1, -1, - -1, -1, -1, 107, -1, 109, 110, 12, -1, 14, - 15, 16, 17, 18, -1, -1, 21, 22, 23, 24, - 25, -1, 27, 28, 29, 30, 31, 32, -1, -1, - -1, -1, -1, 38, 39, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, - -1, 56, 57, 58, 59, 60, -1, -1, 63, 64, - 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 79, -1, -1, -1, -1, 54, - -1, -1, -1, -1, -1, -1, 61, 62, -1, -1, - 95, 96, -1, 98, -1, 100, 101, -1, -1, -1, - -1, -1, 107, -1, 109, 110, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - -1, -1, -1, -1, 99, 54, -1, 102, 103, 104, - 105, -1, 61, 62, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 100, 101, -1, 103, 10, 105, + 106, 13, -1, -1, 16, 111, 112, 19, 20, 21, + -1, -1, 24, 25, 26, 27, 28, 29, 30, -1, + 32, 33, 34, 35, 36, 37, -1, -1, -1, -1, + -1, 43, 44, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 60, -1, + -1, 63, 64, 65, 66, 67, -1, -1, 70, 71, + 72, 73, 74, 75, 76, -1, -1, -1, -1, -1, + -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 100, 101, + -1, 103, 10, 105, 106, 13, -1, -1, 16, 111, + 112, 19, 20, 21, -1, -1, 24, 25, 26, 27, + 28, 29, 30, -1, 32, 33, 34, 35, 36, 37, + -1, -1, -1, -1, -1, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 81, 82, -1, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, -1, -1, -1, -1, - 99, 54, -1, 102, 103, 104, 105, -1, 61, 62, + -1, -1, 60, -1, -1, 63, 64, 65, 66, 67, + -1, -1, 70, 71, 72, 73, 74, 75, 76, -1, + -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, - -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, -1, -1, -1, -1, 99, 54, -1, 102, - 103, 104, 105, -1, 61, 62, -1, -1, -1, -1, + -1, -1, 100, 101, -1, 103, 10, 105, 106, 13, + -1, -1, 16, -1, 112, 19, 20, 21, -1, -1, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, 35, 36, 37, -1, -1, -1, -1, -1, 43, + 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 60, -1, -1, 63, + 64, 65, 66, 67, -1, -1, 70, 71, 72, 73, + 74, 75, 76, -1, -1, -1, -1, -1, -1, -1, + -1, 85, -1, -1, 61, -1, -1, -1, -1, -1, + -1, 68, 69, -1, -1, -1, 100, 101, -1, 103, + -1, 105, 106, -1, -1, -1, -1, -1, 112, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, -1, -1, -1, -1, 104, 61, -1, + 107, 108, 109, 110, -1, 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, -1, -1, - -1, -1, 99, -1, -1, 102, 103, 104, 105 + -1, -1, -1, 86, 87, -1, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, -1, -1, -1, + -1, 104, -1, -1, 107, 108, 109, 110 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 3, 4, 5, 6, 7, 8, 9, 113, 114, - 115, 116, 117, 118, 119, 120, 0, 123, 12, 14, - 15, 16, 17, 18, 21, 22, 23, 24, 25, 27, - 28, 29, 30, 31, 32, 38, 39, 53, 56, 57, - 58, 59, 60, 63, 64, 65, 66, 67, 68, 69, - 79, 95, 96, 98, 100, 101, 107, 109, 110, 173, - 174, 175, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 189, 192, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 10, 121, 1, 33, 35, 36, 37, - 40, 41, 42, 43, 44, 45, 49, 50, 51, 52, - 55, 108, 121, 130, 140, 173, 34, 128, 129, 130, - 126, 167, 168, 126, 13, 173, 187, 187, 21, 26, - 121, 199, 207, 207, 207, 207, 207, 188, 12, 107, - 187, 151, 151, 151, 187, 107, 107, 73, 107, 121, - 187, 21, 174, 191, 199, 207, 207, 121, 187, 108, - 173, 21, 26, 153, 187, 98, 107, 190, 199, 200, - 201, 187, 174, 187, 187, 187, 187, 187, 106, 173, - 207, 207, 76, 77, 78, 80, 10, 12, 107, 91, - 92, 91, 89, 90, 89, 54, 61, 62, 81, 82, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 99, 102, 103, 104, 105, 107, 10, 12, 10, - 12, 10, 12, 10, 123, 152, 153, 153, 21, 150, - 107, 107, 107, 107, 68, 98, 107, 197, 199, 107, - 107, 121, 108, 48, 142, 108, 42, 43, 44, 45, - 49, 51, 129, 130, 128, 16, 17, 109, 158, 159, - 161, 162, 163, 164, 13, 191, 107, 73, 173, 106, - 121, 24, 154, 70, 155, 106, 106, 173, 192, 192, - 207, 174, 11, 108, 191, 107, 187, 190, 199, 200, - 201, 106, 173, 70, 156, 12, 106, 173, 173, 173, - 187, 173, 173, 106, 173, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 10, 12, 16, 17, 18, 22, - 63, 107, 109, 110, 177, 199, 106, 173, 173, 173, - 173, 173, 173, 173, 173, 126, 21, 149, 150, 150, - 21, 133, 123, 123, 123, 123, 98, 123, 68, 195, - 196, 198, 199, 200, 201, 123, 123, 107, 123, 123, - 121, 173, 146, 173, 173, 173, 173, 173, 26, 157, - 157, 80, 192, 174, 13, 176, 155, 24, 123, 172, - 106, 74, 106, 173, 11, 106, 173, 156, 106, 24, - 173, 12, 108, 13, 106, 83, 173, 173, 110, 110, - 110, 110, 106, 173, 110, 110, 107, 106, 108, 13, - 108, 13, 108, 13, 108, 11, 19, 122, 131, 132, - 10, 108, 21, 145, 173, 146, 147, 173, 147, 194, - 199, 107, 140, 144, 147, 148, 173, 195, 123, 147, - 147, 81, 160, 160, 162, 106, 111, 193, 191, 123, - 170, 107, 165, 166, 106, 106, 13, 173, 11, 187, - 108, 13, 106, 192, 11, 11, 11, 11, 123, 154, - 155, 123, 21, 106, 106, 106, 106, 107, 123, 106, - 108, 136, 147, 106, 106, 187, 173, 74, 10, 167, - 10, 13, 11, 106, 108, 155, 108, 171, 172, 137, - 191, 143, 143, 10, 124, 124, 147, 147, 124, 134, - 107, 106, 124, 124, 126, 106, 126, 72, 108, 169, - 170, 126, 108, 124, 124, 125, 46, 47, 141, 141, - 106, 106, 142, 145, 147, 124, 11, 11, 127, 11, - 142, 142, 126, 124, 107, 124, 124, 108, 106, 142, - 24, 108, 138, 11, 147, 142, 142, 135, 124, 71, - 139, 20, 106, 143, 142, 126, 124, 148, 72, 141, - 106, 124 + 0, 3, 4, 5, 6, 7, 8, 9, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 124, 10, 13, + 16, 19, 20, 21, 24, 25, 26, 27, 28, 29, + 30, 32, 33, 34, 35, 36, 37, 43, 44, 60, + 63, 64, 65, 66, 67, 70, 71, 72, 73, 74, + 75, 76, 85, 100, 101, 103, 105, 106, 112, 177, + 178, 179, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 193, 196, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 11, 122, 1, 22, 38, 40, 41, + 42, 45, 46, 47, 48, 49, 50, 54, 55, 56, + 57, 58, 62, 122, 131, 144, 177, 39, 129, 130, + 131, 127, 171, 172, 127, 26, 31, 122, 203, 211, + 14, 177, 211, 191, 211, 191, 211, 211, 211, 211, + 192, 13, 112, 191, 155, 155, 155, 191, 112, 112, + 80, 112, 122, 191, 26, 178, 195, 203, 211, 211, + 122, 191, 22, 177, 26, 31, 157, 191, 103, 112, + 194, 203, 204, 205, 191, 178, 191, 191, 191, 191, + 191, 111, 177, 83, 84, 15, 11, 13, 112, 96, + 97, 96, 94, 95, 94, 61, 68, 69, 86, 87, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 104, 107, 108, 109, 110, 112, 11, 13, 11, + 13, 11, 13, 11, 124, 156, 157, 157, 26, 154, + 112, 112, 112, 112, 75, 103, 112, 201, 203, 112, + 112, 122, 11, 125, 22, 53, 146, 22, 47, 48, + 49, 50, 54, 56, 130, 131, 129, 16, 20, 24, + 162, 163, 165, 166, 167, 168, 14, 195, 112, 80, + 177, 111, 122, 29, 158, 77, 159, 111, 111, 177, + 196, 196, 211, 178, 12, 22, 195, 112, 191, 194, + 203, 204, 205, 111, 177, 77, 160, 13, 111, 177, + 177, 191, 177, 177, 111, 177, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 10, 11, 13, 16, 20, + 24, 25, 27, 70, 112, 181, 203, 111, 177, 177, + 177, 177, 177, 177, 177, 177, 127, 26, 153, 154, + 154, 26, 134, 124, 124, 124, 124, 103, 124, 75, + 199, 200, 202, 203, 204, 205, 124, 124, 112, 124, + 124, 126, 59, 122, 143, 177, 150, 177, 143, 143, + 143, 143, 31, 161, 161, 15, 196, 178, 14, 180, + 159, 29, 124, 176, 111, 81, 111, 177, 12, 111, + 177, 160, 111, 29, 177, 13, 22, 14, 111, 88, + 25, 177, 177, 25, 25, 25, 25, 25, 111, 177, + 112, 111, 22, 14, 22, 14, 22, 14, 22, 12, + 18, 123, 132, 133, 11, 22, 26, 149, 177, 150, + 151, 177, 151, 198, 203, 112, 144, 148, 151, 152, + 177, 199, 124, 151, 151, 127, 112, 86, 164, 164, + 166, 111, 23, 197, 195, 124, 174, 112, 169, 170, + 111, 111, 14, 177, 12, 191, 22, 14, 111, 196, + 12, 12, 12, 12, 124, 158, 159, 124, 26, 111, + 111, 111, 111, 112, 124, 111, 22, 137, 151, 111, + 111, 12, 138, 191, 177, 81, 11, 171, 11, 14, + 12, 111, 22, 159, 22, 175, 176, 140, 195, 147, + 147, 125, 125, 151, 151, 125, 135, 112, 111, 125, + 125, 124, 127, 111, 127, 79, 22, 173, 174, 127, + 22, 125, 125, 51, 52, 145, 145, 111, 111, 146, + 149, 151, 125, 203, 12, 12, 128, 12, 146, 146, + 125, 112, 125, 125, 22, 111, 146, 139, 22, 29, + 141, 151, 146, 146, 136, 125, 111, 17, 78, 142, + 111, 147, 146, 125, 127, 125, 152, 79, 145, 111, + 125 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 112, 114, 113, 115, 113, 116, 113, 117, 113, - 118, 113, 119, 113, 120, 113, 121, 122, 123, 124, - 125, 126, 126, 127, 127, 128, 128, 129, 129, 130, - 130, 131, 130, 132, 130, 130, 133, 130, 130, 130, - 130, 130, 130, 130, 130, 134, 135, 130, 130, 130, - 136, 130, 130, 130, 130, 137, 130, 130, 130, 130, - 138, 139, 139, 140, 140, 140, 140, 140, 140, 140, - 140, 141, 141, 141, 142, 142, 143, 144, 144, 145, - 145, 146, 147, 148, 149, 149, 150, 151, 152, 153, - 153, 154, 154, 155, 155, 155, 156, 156, 157, 157, - 158, 158, 159, 160, 160, 160, 161, 162, 162, 163, - 163, 163, 164, 164, 165, 165, 166, 168, 167, 169, - 169, 170, 171, 171, 172, 173, 173, 173, 173, 174, - 174, 174, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 176, 175, 177, 177, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 180, 180, 180, 180, 181, 181, 182, - 182, 182, 182, 183, 183, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 185, 185, 185, 185, 185, 185, - 186, 186, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 188, 187, 187, 187, 187, 189, 189, 189, 190, - 190, 190, 190, 190, 191, 191, 192, 192, 193, 193, - 194, 195, 195, 195, 196, 196, 197, 197, 198, 199, - 200, 201, 202, 202, 203, 204, 204, 205, 205, 206, - 206, 207, 207, 207, 207 + 0, 113, 115, 114, 116, 114, 117, 114, 118, 114, + 119, 114, 120, 114, 121, 114, 122, 123, 124, 125, + 126, 127, 127, 128, 128, 129, 129, 130, 130, 131, + 131, 132, 131, 133, 131, 131, 134, 131, 131, 131, + 131, 131, 131, 131, 131, 135, 136, 131, 131, 131, + 137, 131, 131, 131, 138, 139, 131, 131, 140, 131, + 131, 131, 131, 141, 142, 142, 143, 144, 144, 144, + 144, 144, 144, 144, 144, 145, 145, 145, 146, 146, + 147, 148, 148, 149, 149, 150, 151, 152, 153, 153, + 154, 155, 156, 157, 157, 158, 158, 159, 159, 159, + 160, 160, 161, 161, 162, 162, 163, 164, 164, 164, + 165, 166, 166, 167, 167, 167, 168, 168, 169, 169, + 170, 172, 171, 173, 173, 174, 175, 175, 176, 177, + 177, 177, 178, 178, 178, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 180, 179, 181, 181, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 184, 184, 184, 184, + 185, 185, 186, 186, 186, 186, 187, 187, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 189, 189, 189, + 189, 189, 189, 190, 190, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 192, 191, 191, 191, 191, 193, + 193, 193, 194, 194, 194, 194, 194, 195, 195, 196, + 196, 197, 197, 198, 199, 199, 199, 200, 200, 201, + 201, 202, 203, 204, 205, 206, 206, 207, 208, 208, + 209, 209, 210, 210, 211, 211, 211, 211 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1120,31 +1095,31 @@ 0, 0, 2, 0, 2, 1, 1, 2, 2, 1, 4, 0, 7, 0, 6, 4, 0, 7, 7, 7, 6, 6, 2, 8, 8, 0, 0, 13, 9, 8, - 0, 10, 9, 7, 2, 0, 8, 2, 2, 1, - 2, 0, 3, 1, 1, 3, 3, 3, 3, 3, - 3, 0, 2, 6, 0, 2, 0, 0, 1, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, - 1, 0, 1, 0, 2, 1, 2, 1, 0, 1, - 1, 1, 3, 0, 1, 2, 3, 1, 1, 2, - 3, 1, 0, 1, 0, 1, 3, 0, 2, 1, - 1, 4, 1, 1, 5, 3, 3, 3, 1, 2, - 3, 1, 3, 5, 6, 3, 3, 5, 2, 4, - 4, 0, 5, 1, 1, 5, 4, 5, 4, 5, - 6, 5, 4, 5, 4, 3, 6, 4, 5, 3, - 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, - 3, 3, 3, 1, 3, 2, 2, 3, 3, 1, - 3, 2, 2, 3, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 3, 2, 4, 3, 5, 4, - 2, 2, 1, 1, 1, 1, 5, 2, 3, 1, - 2, 3, 1, 2, 1, 1, 1, 1, 1, 1, - 4, 4, 5, 5, 1, 1, 3, 4, 3, 4, - 4, 4, 4, 4, 1, 2, 2, 1, 2, 2, - 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, - 4, 0, 6, 1, 1, 1, 3, 2, 4, 3, - 2, 1, 1, 1, 0, 1, 0, 1, 0, 2, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 2, 2, 4, 2, 1, 3, 1, 3, 1, - 3, 1, 1, 1, 1 + 0, 10, 9, 7, 0, 0, 10, 2, 0, 8, + 2, 2, 1, 2, 0, 3, 1, 1, 1, 3, + 3, 3, 3, 3, 3, 0, 2, 6, 0, 2, + 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, + 0, 0, 0, 1, 1, 0, 1, 0, 2, 1, + 2, 1, 0, 1, 1, 1, 3, 0, 1, 2, + 3, 1, 1, 2, 3, 1, 0, 1, 0, 1, + 3, 0, 2, 1, 1, 4, 1, 1, 5, 3, + 3, 1, 2, 3, 1, 3, 5, 6, 3, 3, + 5, 2, 4, 4, 0, 5, 1, 1, 5, 4, + 5, 4, 5, 6, 5, 4, 5, 4, 3, 6, + 4, 5, 3, 3, 3, 3, 3, 1, 1, 3, + 3, 3, 3, 3, 3, 3, 1, 3, 2, 2, + 3, 3, 1, 3, 2, 2, 3, 3, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 3, 2, 4, + 3, 5, 4, 2, 2, 1, 1, 1, 1, 5, + 2, 3, 1, 2, 3, 1, 2, 1, 1, 1, + 1, 1, 1, 4, 4, 5, 5, 1, 1, 3, + 4, 3, 4, 4, 4, 4, 4, 1, 2, 2, + 1, 2, 2, 1, 2, 1, 2, 1, 3, 1, + 3, 1, 3, 4, 0, 6, 1, 1, 1, 3, + 2, 4, 3, 2, 1, 1, 1, 0, 1, 0, + 1, 0, 2, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 2, 4, 2, 1, 3, + 1, 3, 1, 3, 1, 1, 1, 1 }; typedef enum { @@ -1155,40 +1130,44 @@ static const toketypes yy_type_tab[] = { toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, - toketype_opval, toketype_opval, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, - toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, - toketype_ival, toketype_ival, toketype_ival, toketype_opval, toketype_opval, - toketype_opval, toketype_opval, toketype_opval, toketype_ival, - toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, - toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, - toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, - toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, - toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_opval, toketype_opval, + toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval, + toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_ival, + toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, + toketype_opval, toketype_ival, toketype_opval, toketype_opval, + toketype_opval, toketype_opval, toketype_opval, toketype_opval, + toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, + toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, + toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, + toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, + toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval, - toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, - toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, - toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval + toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval }; /* Generated from: - * e5b801fdebce5c77dd8e644fc5a489cbea6af33db180e771dd9d669b12bbe0cf perly.y - * 0947213b55d0ed11693554bea04987e886cf285f5c14cf9075fa1e7acc3f4061 regen_perly.pl + * 427b422b0ce1154d834dc461973a3254729575694f98ab600032f67ccab7b9e5 perly.y + * acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl * ex: set ro: */ diff -Nru perl-5.32.1/perly.y perl-5.34.0/perly.y --- perl-5.32.1/perly.y 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/perly.y 2021-02-21 11:01:31.000000000 +0000 @@ -31,7 +31,7 @@ /* Make the parser re-entrant. */ -%pure-parser +%define api.pure %start grammar @@ -45,7 +45,22 @@ %token GRAMPROG GRAMEXPR GRAMBLOCK GRAMBARESTMT GRAMFULLSTMT GRAMSTMTSEQ GRAMSUBSIGNATURE -%token '{' '}' '[' ']' '-' '+' '@' '%' '&' '=' '.' +%token PERLY_AMPERSAND +%token PERLY_BRACE_OPEN +%token PERLY_BRACE_CLOSE +%token PERLY_BRACKET_OPEN +%token PERLY_BRACKET_CLOSE +%token PERLY_COMMA +%token PERLY_DOLLAR +%token PERLY_DOT +%token PERLY_EQUAL_SIGN +%token PERLY_MINUS +%token PERLY_PERCENT_SIGN +%token PERLY_PLUS +%token PERLY_SEMICOLON +%token PERLY_SLASH +%token PERLY_SNAIL +%token PERLY_STAR %token BAREWORD METHOD FUNCMETH THING PMFUNC PRIVATEREF QWLIST %token FUNC0OP FUNC0SUB UNIOPSUB LSTOPSUB @@ -54,6 +69,7 @@ %token FORMAT SUB SIGSUB ANONSUB ANON_SIGSUB PACKAGE USE %token WHILE UNTIL IF UNLESS ELSE ELSIF CONTINUE FOR %token GIVEN WHEN DEFAULT +%token TRY CATCH %token LOOPEX DOTDOT YADAYADA %token FUNC0 FUNC1 FUNC UNIOP LSTOP %token MULOP ADDOP @@ -69,6 +85,7 @@ %type stmtseq fullstmt labfullstmt barestmt block mblock else %type expr term subscripted scalar ary hsh arylen star amper sideff +%type condition %type sliceme kvslice gelem %type listexpr nexpr texpr iexpr mexpr mnexpr %type optlistexpr optexpr optrepl indirob listop method @@ -86,13 +103,13 @@ %nonassoc PREC_LOW %nonassoc LOOPEX -%left OROP DOROP +%left OROP %left ANDOP %right NOTOP %nonassoc LSTOP LSTOPSUB -%left ',' +%left PERLY_COMMA %right ASSIGNOP -%right '?' ':' +%right PERLY_QUESTION_MARK PERLY_COLON %nonassoc DOTDOT %left OROR DORDOR %left ANDAND @@ -106,13 +123,13 @@ %left ADDOP %left MULOP %left MATCHOP -%right '!' '~' UMINUS REFGEN +%right PERLY_EXCLAMATION_MARK PERLY_TILDE UMINUS REFGEN %right POWOP %nonassoc PREINC PREDEC POSTINC POSTDEC POSTJOIN %left ARROW -%nonassoc ')' -%left '(' -%left '[' '{' +%nonassoc PERLY_PAREN_CLOSE +%left PERLY_PAREN_OPEN +%left PERLY_BRACKET_OPEN PERLY_BRACE_OPEN %% /* RULES */ @@ -124,7 +141,7 @@ } remember stmtseq { - newPROG(block_end($3,$4)); + newPROG(block_end($remember,$stmtseq)); PL_compiling.cop_seq = 0; $$ = 0; } @@ -135,7 +152,7 @@ } optexpr { - PL_eval_root = $3; + PL_eval_root = $optexpr; $$ = 0; } | GRAMBLOCK @@ -146,7 +163,7 @@ block { PL_pad_reset_pending = TRUE; - PL_eval_root = $3; + PL_eval_root = $block; $$ = 0; yyunlex(); parser->yychar = yytoken = YYEOF; @@ -159,7 +176,7 @@ barestmt { PL_pad_reset_pending = TRUE; - PL_eval_root = $3; + PL_eval_root = $barestmt; $$ = 0; yyunlex(); parser->yychar = yytoken = YYEOF; @@ -172,7 +189,7 @@ fullstmt { PL_pad_reset_pending = TRUE; - PL_eval_root = $3; + PL_eval_root = $fullstmt; $$ = 0; yyunlex(); parser->yychar = yytoken = YYEOF; @@ -184,7 +201,7 @@ } stmtseq { - PL_eval_root = $3; + PL_eval_root = $stmtseq; $$ = 0; } | GRAMSUBSIGNATURE @@ -194,62 +211,62 @@ } subsigguts { - PL_eval_root = $3; + PL_eval_root = $subsigguts; $$ = 0; } ; /* An ordinary block */ -block : '{' remember stmtseq '}' - { if (parser->copline > (line_t)$1) - parser->copline = (line_t)$1; - $$ = block_end($2, $3); +block : PERLY_BRACE_OPEN remember stmtseq PERLY_BRACE_CLOSE + { if (parser->copline > (line_t)$PERLY_BRACE_OPEN) + parser->copline = (line_t)$PERLY_BRACE_OPEN; + $$ = block_end($remember, $stmtseq); } ; /* format body */ -formblock: '=' remember ';' FORMRBRACK formstmtseq ';' '.' - { if (parser->copline > (line_t)$1) - parser->copline = (line_t)$1; - $$ = block_end($2, $5); +formblock: PERLY_EQUAL_SIGN remember PERLY_SEMICOLON FORMRBRACK formstmtseq PERLY_SEMICOLON PERLY_DOT + { if (parser->copline > (line_t)$PERLY_EQUAL_SIGN) + parser->copline = (line_t)$PERLY_EQUAL_SIGN; + $$ = block_end($remember, $formstmtseq); } ; -remember: /* NULL */ /* start a full lexical scope */ +remember: %empty /* start a full lexical scope */ { $$ = block_start(TRUE); parser->parsed_sub = 0; } ; -mblock : '{' mremember stmtseq '}' - { if (parser->copline > (line_t)$1) - parser->copline = (line_t)$1; - $$ = block_end($2, $3); +mblock : PERLY_BRACE_OPEN mremember stmtseq PERLY_BRACE_CLOSE + { if (parser->copline > (line_t)$PERLY_BRACE_OPEN) + parser->copline = (line_t)$PERLY_BRACE_OPEN; + $$ = block_end($mremember, $stmtseq); } ; -mremember: /* NULL */ /* start a partial lexical scope */ +mremember: %empty /* start a partial lexical scope */ { $$ = block_start(FALSE); parser->parsed_sub = 0; } ; /* A sequence of statements in the program */ -stmtseq : /* NULL */ +stmtseq : %empty { $$ = NULL; } - | stmtseq fullstmt - { $$ = op_append_list(OP_LINESEQ, $1, $2); + | stmtseq[list] fullstmt + { $$ = op_append_list(OP_LINESEQ, $list, $fullstmt); PL_pad_reset_pending = TRUE; - if ($1 && $2) + if ($list && $fullstmt) PL_hints |= HINT_BLOCK_SCOPE; } ; /* A sequence of format lines */ -formstmtseq: /* NULL */ +formstmtseq: %empty { $$ = NULL; } - | formstmtseq formline - { $$ = op_append_list(OP_LINESEQ, $1, $2); + | formstmtseq[list] formline + { $$ = op_append_list(OP_LINESEQ, $list, $formline); PL_pad_reset_pending = TRUE; - if ($1 && $2) + if ($list && $formline) PL_hints |= HINT_BLOCK_SCOPE; } ; @@ -257,35 +274,35 @@ /* A statement in the program, including optional labels */ fullstmt: barestmt { - $$ = $1 ? newSTATEOP(0, NULL, $1) : NULL; + $$ = $barestmt ? newSTATEOP(0, NULL, $barestmt) : NULL; } | labfullstmt - { $$ = $1; } + { $$ = $labfullstmt; } ; labfullstmt: LABEL barestmt { - SV *label = cSVOPx_sv($1); + SV *label = cSVOPx_sv($LABEL); $$ = newSTATEOP(SvFLAGS(label) & SVf_UTF8, - savepv(SvPVX_const(label)), $2); - op_free($1); + savepv(SvPVX_const(label)), $barestmt); + op_free($LABEL); } - | LABEL labfullstmt + | LABEL labfullstmt[list] { - SV *label = cSVOPx_sv($1); + SV *label = cSVOPx_sv($LABEL); $$ = newSTATEOP(SvFLAGS(label) & SVf_UTF8, - savepv(SvPVX_const(label)), $2); - op_free($1); + savepv(SvPVX_const(label)), $list); + op_free($LABEL); } ; /* A bare statement, lacking label and other aspects of state op */ barestmt: PLUGSTMT - { $$ = $1; } + { $$ = $PLUGSTMT; } | FORMAT startformsub formname formblock { CV *fmtcv = PL_compcv; - newFORM($2, $3, $4); + newFORM($startformsub, $formname, $formblock); $$ = NULL; if (CvOUTSIDE(fmtcv) && !CvEVAL(CvOUTSIDE(fmtcv))) { pad_add_weakref(fmtcv); @@ -296,16 +313,16 @@ /* sub declaration or definition not within scope of 'use feature "signatures"'*/ { - init_named_cv(PL_compcv, $2); + init_named_cv(PL_compcv, $subname); parser->in_my = 0; parser->in_my_stash = NULL; } proto subattrlist optsubbody { SvREFCNT_inc_simple_void(PL_compcv); - $2->op_type == OP_CONST - ? newATTRSUB($3, $2, $5, $6, $7) - : newMYSUB($3, $2, $5, $6, $7) + $subname->op_type == OP_CONST + ? newATTRSUB($startsub, $subname, $proto, $subattrlist, $optsubbody) + : newMYSUB($startsub, $subname, $proto, $subattrlist, $optsubbody) ; $$ = NULL; intro_my(); @@ -317,82 +334,82 @@ * allowed in a declaration) */ { - init_named_cv(PL_compcv, $2); + init_named_cv(PL_compcv, $subname); parser->in_my = 0; parser->in_my_stash = NULL; } subattrlist optsigsubbody { SvREFCNT_inc_simple_void(PL_compcv); - $2->op_type == OP_CONST - ? newATTRSUB($3, $2, NULL, $5, $6) - : newMYSUB( $3, $2, NULL, $5, $6) + $subname->op_type == OP_CONST + ? newATTRSUB($startsub, $subname, NULL, $subattrlist, $optsigsubbody) + : newMYSUB( $startsub, $subname, NULL, $subattrlist, $optsigsubbody) ; $$ = NULL; intro_my(); parser->parsed_sub = 1; } - | PACKAGE BAREWORD BAREWORD ';' + | PACKAGE BAREWORD[version] BAREWORD[package] PERLY_SEMICOLON { - package($3); - if ($2) - package_version($2); + package($package); + if ($version) + package_version($version); $$ = NULL; } | USE startsub { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ } - BAREWORD BAREWORD optlistexpr ';' + BAREWORD[version] BAREWORD[module] optlistexpr PERLY_SEMICOLON { SvREFCNT_inc_simple_void(PL_compcv); - utilize($1, $2, $4, $5, $6); + utilize($USE, $startsub, $version, $module, $optlistexpr); parser->parsed_sub = 1; $$ = NULL; } - | IF '(' remember mexpr ')' mblock else + | IF PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock else { - $$ = block_end($3, - newCONDOP(0, $4, op_scope($6), $7)); - parser->copline = (line_t)$1; + $$ = block_end($remember, + newCONDOP(0, $mexpr, op_scope($mblock), $else)); + parser->copline = (line_t)$IF; } - | UNLESS '(' remember mexpr ')' mblock else + | UNLESS PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock else { - $$ = block_end($3, - newCONDOP(0, $4, $7, op_scope($6))); - parser->copline = (line_t)$1; + $$ = block_end($remember, + newCONDOP(0, $mexpr, $else, op_scope($mblock))); + parser->copline = (line_t)$UNLESS; } - | GIVEN '(' remember mexpr ')' mblock + | GIVEN PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock { - $$ = block_end($3, newGIVENOP($4, op_scope($6), 0)); - parser->copline = (line_t)$1; + $$ = block_end($remember, newGIVENOP($mexpr, op_scope($mblock), 0)); + parser->copline = (line_t)$GIVEN; } - | WHEN '(' remember mexpr ')' mblock - { $$ = block_end($3, newWHENOP($4, op_scope($6))); } + | WHEN PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock + { $$ = block_end($remember, newWHENOP($mexpr, op_scope($mblock))); } | DEFAULT block - { $$ = newWHENOP(0, op_scope($2)); } - | WHILE '(' remember texpr ')' mintro mblock cont + { $$ = newWHENOP(0, op_scope($block)); } + | WHILE PERLY_PAREN_OPEN remember texpr PERLY_PAREN_CLOSE mintro mblock cont { - $$ = block_end($3, + $$ = block_end($remember, newWHILEOP(0, 1, NULL, - $4, $7, $8, $6)); - parser->copline = (line_t)$1; + $texpr, $mblock, $cont, $mintro)); + parser->copline = (line_t)$WHILE; } - | UNTIL '(' remember iexpr ')' mintro mblock cont + | UNTIL PERLY_PAREN_OPEN remember iexpr PERLY_PAREN_CLOSE mintro mblock cont { - $$ = block_end($3, + $$ = block_end($remember, newWHILEOP(0, 1, NULL, - $4, $7, $8, $6)); - parser->copline = (line_t)$1; + $iexpr, $mblock, $cont, $mintro)); + parser->copline = (line_t)$UNTIL; } - | FOR '(' remember mnexpr ';' + | FOR PERLY_PAREN_OPEN remember mnexpr[init_mnexpr] PERLY_SEMICOLON { parser->expect = XTERM; } - texpr ';' + texpr PERLY_SEMICOLON { parser->expect = XTERM; } - mintro mnexpr ')' + mintro mnexpr[iterate_mnexpr] PERLY_PAREN_CLOSE mblock { - OP *initop = $4; + OP *initop = $init_mnexpr; OP *forop = newWHILEOP(0, 1, NULL, - scalar($7), $13, $11, $10); + scalar($texpr), $mblock, $iterate_mnexpr, $mintro); if (initop) { forop = op_prepend_elem(OP_LINESEQ, initop, op_append_elem(OP_LINESEQ, @@ -400,80 +417,89 @@ forop)); } PL_hints |= HINT_BLOCK_SCOPE; - $$ = block_end($3, forop); - parser->copline = (line_t)$1; + $$ = block_end($remember, forop); + parser->copline = (line_t)$FOR; } - | FOR MY remember my_scalar '(' mexpr ')' mblock cont + | FOR MY remember my_scalar PERLY_PAREN_OPEN mexpr PERLY_PAREN_CLOSE mblock cont { - $$ = block_end($3, newFOROP(0, $4, $6, $8, $9)); - parser->copline = (line_t)$1; + $$ = block_end($remember, newFOROP(0, $my_scalar, $mexpr, $mblock, $cont)); + parser->copline = (line_t)$FOR; } - | FOR scalar '(' remember mexpr ')' mblock cont + | FOR scalar PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock cont { - $$ = block_end($4, newFOROP(0, - op_lvalue($2, OP_ENTERLOOP), $5, $7, $8)); - parser->copline = (line_t)$1; + $$ = block_end($remember, newFOROP(0, + op_lvalue($scalar, OP_ENTERLOOP), $mexpr, $mblock, $cont)); + parser->copline = (line_t)$FOR; } | FOR my_refgen remember my_var - { parser->in_my = 0; $$ = my($4); } - '(' mexpr ')' mblock cont + { parser->in_my = 0; $$ = my($my_var); }[variable] + PERLY_PAREN_OPEN mexpr PERLY_PAREN_CLOSE mblock cont { $$ = block_end( - $3, + $remember, newFOROP(0, op_lvalue( newUNOP(OP_REFGEN, 0, - $5), + $variable), OP_ENTERLOOP), - $7, $9, $10) + $mexpr, $mblock, $cont) ); - parser->copline = (line_t)$1; + parser->copline = (line_t)$FOR; } - | FOR REFGEN refgen_topic '(' remember mexpr ')' mblock cont + | FOR REFGEN refgen_topic PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock cont { - $$ = block_end($5, newFOROP( + $$ = block_end($remember, newFOROP( 0, op_lvalue(newUNOP(OP_REFGEN, 0, - $3), - OP_ENTERLOOP), $6, $8, $9)); - parser->copline = (line_t)$1; - } - | FOR '(' remember mexpr ')' mblock cont - { - $$ = block_end($3, - newFOROP(0, NULL, $4, $6, $7)); - parser->copline = (line_t)$1; + $refgen_topic), + OP_ENTERLOOP), $mexpr, $mblock, $cont)); + parser->copline = (line_t)$FOR; + } + | FOR PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock cont + { + $$ = block_end($remember, + newFOROP(0, NULL, $mexpr, $mblock, $cont)); + parser->copline = (line_t)$FOR; + } + | TRY mblock[try] CATCH PERLY_PAREN_OPEN + { parser->in_my = 1; } + remember scalar + { parser->in_my = 0; intro_my(); } + PERLY_PAREN_CLOSE mblock[catch] + { + $$ = newTRYCATCHOP(0, + $try, $scalar, block_end($remember, op_scope($catch))); } | block cont { /* a block is a loop that happens once */ $$ = newWHILEOP(0, 1, NULL, - NULL, $1, $2, 0); + NULL, $block, $cont, 0); } - | PACKAGE BAREWORD BAREWORD '{' remember + | PACKAGE BAREWORD[version] BAREWORD[package] PERLY_BRACE_OPEN remember { - package($3); - if ($2) { - package_version($2); + package($package); + if ($version) { + package_version($version); } } - stmtseq '}' + stmtseq PERLY_BRACE_CLOSE { /* a block is a loop that happens once */ $$ = newWHILEOP(0, 1, NULL, - NULL, block_end($5, $7), NULL, 0); - if (parser->copline > (line_t)$4) - parser->copline = (line_t)$4; + NULL, block_end($remember, $stmtseq), NULL, 0); + if (parser->copline > (line_t)$PERLY_BRACE_OPEN) + parser->copline = (line_t)$PERLY_BRACE_OPEN; } - | sideff ';' + | sideff PERLY_SEMICOLON { - $$ = $1; + $$ = $sideff; } - | YADAYADA ';' + | YADAYADA PERLY_SEMICOLON { $$ = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0), newSVOP(OP_CONST, 0, newSVpvs("Unimplemented"))); } - | ';' + | PERLY_SEMICOLON { $$ = NULL; parser->copline = NOLINE; @@ -483,12 +509,12 @@ /* Format line */ formline: THING formarg { OP *list; - if ($2) { - OP *term = $2; - list = op_append_elem(OP_LIST, $1, term); + if ($formarg) { + OP *term = $formarg; + list = op_append_elem(OP_LIST, $THING, term); } else { - list = $1; + list = $THING; } if (parser->copline == NOLINE) parser->copline = CopLINE(PL_curcop)-1; @@ -498,70 +524,73 @@ } ; -formarg : /* NULL */ +formarg : %empty { $$ = NULL; } | FORMLBRACK stmtseq FORMRBRACK - { $$ = op_unscope($2); } + { $$ = op_unscope($stmtseq); } ; +condition: expr +; + /* An expression which may have a side-effect */ sideff : error { $$ = NULL; } - | expr - { $$ = $1; } - | expr IF expr - { $$ = newLOGOP(OP_AND, 0, $3, $1); } - | expr UNLESS expr - { $$ = newLOGOP(OP_OR, 0, $3, $1); } - | expr WHILE expr - { $$ = newLOOPOP(OPf_PARENS, 1, scalar($3), $1); } - | expr UNTIL iexpr - { $$ = newLOOPOP(OPf_PARENS, 1, $3, $1); } - | expr FOR expr - { $$ = newFOROP(0, NULL, $3, $1, NULL); - parser->copline = (line_t)$2; } - | expr WHEN expr - { $$ = newWHENOP($3, op_scope($1)); } + | expr[body] + { $$ = $body; } + | expr[body] IF condition + { $$ = newLOGOP(OP_AND, 0, $condition, $body); } + | expr[body] UNLESS condition + { $$ = newLOGOP(OP_OR, 0, $condition, $body); } + | expr[body] WHILE condition + { $$ = newLOOPOP(OPf_PARENS, 1, scalar($condition), $body); } + | expr[body] UNTIL iexpr + { $$ = newLOOPOP(OPf_PARENS, 1, $iexpr, $body); } + | expr[body] FOR condition + { $$ = newFOROP(0, NULL, $condition, $body, NULL); + parser->copline = (line_t)$FOR; } + | expr[body] WHEN condition + { $$ = newWHENOP($condition, op_scope($body)); } ; /* else and elsif blocks */ -else : /* NULL */ +else : %empty { $$ = NULL; } | ELSE mblock { - ($2)->op_flags |= OPf_PARENS; - $$ = op_scope($2); + ($mblock)->op_flags |= OPf_PARENS; + $$ = op_scope($mblock); } - | ELSIF '(' mexpr ')' mblock else - { parser->copline = (line_t)$1; + | ELSIF PERLY_PAREN_OPEN mexpr PERLY_PAREN_CLOSE mblock else[else.recurse] + { parser->copline = (line_t)$ELSIF; $$ = newCONDOP(0, - newSTATEOP(OPf_SPECIAL,NULL,$3), - op_scope($5), $6); + newSTATEOP(OPf_SPECIAL,NULL,$mexpr), + op_scope($mblock), $[else.recurse]); PL_hints |= HINT_BLOCK_SCOPE; } ; /* Continue blocks */ -cont : /* NULL */ +cont : %empty { $$ = NULL; } | CONTINUE block - { $$ = op_scope($2); } + { $$ = op_scope($block); } ; /* determine whether there are any new my declarations */ -mintro : /* NULL */ +mintro : %empty { $$ = (PL_min_intro_pending && PL_max_intro_pending >= PL_min_intro_pending); intro_my(); } /* Normal expression */ -nexpr : /* NULL */ +nexpr : %empty { $$ = NULL; } | sideff ; /* Boolean expression */ -texpr : /* NULL means true */ +texpr : %empty /* NULL means true */ { YYSTYPE tmplval; (void)scan_num("1", &tmplval); $$ = tmplval.opval; } @@ -570,34 +599,34 @@ /* Inverted boolean expression */ iexpr : expr - { $$ = invert(scalar($1)); } + { $$ = invert(scalar($expr)); } ; /* Expression with its own lexical scope */ mexpr : expr - { $$ = $1; intro_my(); } + { $$ = $expr; intro_my(); } ; mnexpr : nexpr - { $$ = $1; intro_my(); } + { $$ = $nexpr; intro_my(); } ; -formname: BAREWORD { $$ = $1; } - | /* NULL */ { $$ = NULL; } +formname: BAREWORD { $$ = $BAREWORD; } + | %empty { $$ = NULL; } ; -startsub: /* NULL */ /* start a regular subroutine scope */ +startsub: %empty /* start a regular subroutine scope */ { $$ = start_subparse(FALSE, 0); SAVEFREESV(PL_compcv); } ; -startanonsub: /* NULL */ /* start an anonymous subroutine scope */ +startanonsub: %empty /* start an anonymous subroutine scope */ { $$ = start_subparse(FALSE, CVf_ANON); SAVEFREESV(PL_compcv); } ; -startformsub: /* NULL */ /* start a format subroutine scope */ +startformsub: %empty /* start a format subroutine scope */ { $$ = start_subparse(TRUE, 0); SAVEFREESV(PL_compcv); } ; @@ -608,23 +637,23 @@ ; /* Subroutine prototype */ -proto : /* NULL */ +proto : %empty { $$ = NULL; } | THING ; /* Optional list of subroutine attributes */ -subattrlist: /* NULL */ +subattrlist: %empty { $$ = NULL; } | COLONATTR THING - { $$ = $2; } + { $$ = $THING; } | COLONATTR { $$ = NULL; } ; /* List of attributes for a "my" variable declaration */ myattrlist: COLONATTR THING - { $$ = $2; } + { $$ = $THING; } | COLONATTR { $$ = NULL; } ; @@ -636,24 +665,24 @@ */ /* the '' or 'foo' part of a '$' or '@foo' etc signature variable */ -sigvarname: /* NULL */ +sigvarname: %empty { parser->in_my = 0; $$ = NULL; } | PRIVATEREF - { parser->in_my = 0; $$ = $1; } + { parser->in_my = 0; $$ = $PRIVATEREF; } ; sigslurpsigil: - '@' + PERLY_SNAIL { $$ = '@'; } - | '%' + | PERLY_PERCENT_SIGN { $$ = '%'; } /* @, %, @foo, %foo */ sigslurpelem: sigslurpsigil sigvarname sigdefault/* def only to catch errors */ { - I32 sigil = $1; - OP *var = $2; - OP *defexpr = $3; + I32 sigil = $sigslurpsigil; + OP *var = $sigvarname; + OP *defexpr = $sigdefault; if (parser->sig_slurpy) yyerror("Multiple slurpy parameters not allowed"); @@ -668,20 +697,20 @@ ; /* default part of sub signature scalar element: i.e. '= default_expr' */ -sigdefault: /* NULL */ +sigdefault: %empty { $$ = NULL; } | ASSIGNOP { $$ = newOP(OP_NULL, 0); } | ASSIGNOP term - { $$ = $2; } + { $$ = $term; } /* subroutine signature scalar element: e.g. '$x', '$=', '$x = $default' */ sigscalarelem: - '$' sigvarname sigdefault + PERLY_DOLLAR sigvarname sigdefault { - OP *var = $2; - OP *defexpr = $3; + OP *var = $sigvarname; + OP *defexpr = $sigdefault; if (parser->sig_slurpy) yyerror("Slurpy parameter not last"); @@ -744,38 +773,38 @@ /* subroutine signature element: e.g. '$x = $default' or '%h' */ sigelem: sigscalarelem - { parser->in_my = KEY_sigvar; $$ = $1; } + { parser->in_my = KEY_sigvar; $$ = $sigscalarelem; } | sigslurpelem - { parser->in_my = KEY_sigvar; $$ = $1; } + { parser->in_my = KEY_sigvar; $$ = $sigslurpelem; } ; /* list of subroutine signature elements */ siglist: - siglist ',' - { $$ = $1; } - | siglist ',' sigelem + siglist[list] PERLY_COMMA + { $$ = $list; } + | siglist[list] PERLY_COMMA sigelem[element] { - $$ = op_append_list(OP_LINESEQ, $1, $3); + $$ = op_append_list(OP_LINESEQ, $list, $element); } - | sigelem %prec PREC_LOW - { $$ = $1; } + | sigelem[element] %prec PREC_LOW + { $$ = $element; } ; /* () or (....) */ -siglistornull: /* NULL */ +siglistornull: %empty { $$ = NULL; } | siglist - { $$ = $1; } + { $$ = $siglist; } /* optional subroutine signature */ -optsubsignature: /* NULL */ +optsubsignature: %empty { $$ = NULL; } | subsignature - { $$ = $1; } + { $$ = $subsignature; } /* Subroutine signature */ -subsignature: '(' subsigguts ')' - { $$ = $2; } +subsignature: PERLY_PAREN_OPEN subsigguts PERLY_PAREN_CLOSE + { $$ = $subsigguts; } subsigguts: { @@ -790,7 +819,7 @@ } siglistornull { - OP *sigops = $2; + OP *sigops = $siglistornull; struct op_argcheck_aux *aux; OP *check; @@ -846,103 +875,101 @@ ; /* Optional subroutine body (for named subroutine declaration) */ -optsubbody: subbody { $$ = $1; } - | ';' { $$ = NULL; } +optsubbody: subbody { $$ = $subbody; } + | PERLY_SEMICOLON { $$ = NULL; } ; /* Subroutine body (without signature) */ -subbody: remember '{' stmtseq '}' +subbody: remember PERLY_BRACE_OPEN stmtseq PERLY_BRACE_CLOSE { - if (parser->copline > (line_t)$2) - parser->copline = (line_t)$2; - $$ = block_end($1, $3); + if (parser->copline > (line_t)$PERLY_BRACE_OPEN) + parser->copline = (line_t)$PERLY_BRACE_OPEN; + $$ = block_end($remember, $stmtseq); } ; /* optional [ Subroutine body with optional signature ] (for named * subroutine declaration) */ -optsigsubbody: sigsubbody { $$ = $1; } - | ';' { $$ = NULL; } +optsigsubbody: sigsubbody { $$ = $sigsubbody; } + | PERLY_SEMICOLON { $$ = NULL; } /* Subroutine body with optional signature */ -sigsubbody: remember optsubsignature '{' stmtseq '}' +sigsubbody: remember optsubsignature PERLY_BRACE_OPEN stmtseq PERLY_BRACE_CLOSE { - if (parser->copline > (line_t)$3) - parser->copline = (line_t)$3; - $$ = block_end($1, - op_append_list(OP_LINESEQ, $2, $4)); + if (parser->copline > (line_t)$PERLY_BRACE_OPEN) + parser->copline = (line_t)$PERLY_BRACE_OPEN; + $$ = block_end($remember, + op_append_list(OP_LINESEQ, $optsubsignature, $stmtseq)); } ; /* Ordinary expressions; logical combinations */ -expr : expr ANDOP expr - { $$ = newLOGOP(OP_AND, 0, $1, $3); } - | expr OROP expr - { $$ = newLOGOP($2, 0, $1, $3); } - | expr DOROP expr - { $$ = newLOGOP(OP_DOR, 0, $1, $3); } +expr : expr[lhs] ANDOP expr[rhs] + { $$ = newLOGOP(OP_AND, 0, $lhs, $rhs); } + | expr[lhs] OROP[operator] expr[rhs] + { $$ = newLOGOP($operator, 0, $lhs, $rhs); } | listexpr %prec PREC_LOW ; /* Expressions are a list of terms joined by commas */ -listexpr: listexpr ',' - { $$ = $1; } - | listexpr ',' term +listexpr: listexpr[list] PERLY_COMMA + { $$ = $list; } + | listexpr[list] PERLY_COMMA term { - OP* term = $3; - $$ = op_append_elem(OP_LIST, $1, term); + OP* term = $term; + $$ = op_append_elem(OP_LIST, $list, term); } | term %prec PREC_LOW ; /* List operators */ listop : LSTOP indirob listexpr /* map {...} @args or print $fh @args */ - { $$ = op_convert_list($1, OPf_STACKED, - op_prepend_elem(OP_LIST, newGVREF($1,$2), $3) ); + { $$ = op_convert_list($LSTOP, OPf_STACKED, + op_prepend_elem(OP_LIST, newGVREF($LSTOP,$indirob), $listexpr) ); } - | FUNC '(' indirob expr ')' /* print ($fh @args */ - { $$ = op_convert_list($1, OPf_STACKED, - op_prepend_elem(OP_LIST, newGVREF($1,$3), $4) ); + | FUNC PERLY_PAREN_OPEN indirob expr PERLY_PAREN_CLOSE /* print ($fh @args */ + { $$ = op_convert_list($FUNC, OPf_STACKED, + op_prepend_elem(OP_LIST, newGVREF($FUNC,$indirob), $expr) ); } - | term ARROW method '(' optexpr ')' /* $foo->bar(list) */ + | term ARROW method PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE /* $foo->bar(list) */ { $$ = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, - op_prepend_elem(OP_LIST, scalar($1), $5), - newMETHOP(OP_METHOD, 0, $3))); + op_prepend_elem(OP_LIST, scalar($term), $optexpr), + newMETHOP(OP_METHOD, 0, $method))); } | term ARROW method /* $foo->bar */ { $$ = op_convert_list(OP_ENTERSUB, OPf_STACKED, - op_append_elem(OP_LIST, scalar($1), - newMETHOP(OP_METHOD, 0, $3))); + op_append_elem(OP_LIST, scalar($term), + newMETHOP(OP_METHOD, 0, $method))); } | METHOD indirob optlistexpr /* new Class @args */ { $$ = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, - op_prepend_elem(OP_LIST, $2, $3), - newMETHOP(OP_METHOD, 0, $1))); + op_prepend_elem(OP_LIST, $indirob, $optlistexpr), + newMETHOP(OP_METHOD, 0, $METHOD))); } - | FUNCMETH indirob '(' optexpr ')' /* method $object (@args) */ + | FUNCMETH indirob PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE /* method $object (@args) */ { $$ = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, - op_prepend_elem(OP_LIST, $2, $4), - newMETHOP(OP_METHOD, 0, $1))); + op_prepend_elem(OP_LIST, $indirob, $optexpr), + newMETHOP(OP_METHOD, 0, $FUNCMETH))); } | LSTOP optlistexpr /* print @args */ - { $$ = op_convert_list($1, 0, $2); } - | FUNC '(' optexpr ')' /* print (@args) */ - { $$ = op_convert_list($1, 0, $3); } + { $$ = op_convert_list($LSTOP, 0, $optlistexpr); } + | FUNC PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE /* print (@args) */ + { $$ = op_convert_list($FUNC, 0, $optexpr); } | FUNC SUBLEXSTART optexpr SUBLEXEND /* uc($arg) from "\U..." */ - { $$ = op_convert_list($1, 0, $3); } + { $$ = op_convert_list($FUNC, 0, $optexpr); } | LSTOPSUB startanonsub block /* sub f(&@); f { foo } ... */ { SvREFCNT_inc_simple_void(PL_compcv); - $$ = newANONATTRSUB($2, 0, NULL, $3); } + $$ = newANONATTRSUB($startanonsub, 0, NULL, $block); }[anonattrsub] optlistexpr %prec LSTOP /* ... @bar */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, - op_prepend_elem(OP_LIST, $4, $5), $1)); + op_prepend_elem(OP_LIST, $anonattrsub, $optlistexpr), $LSTOPSUB)); } ; @@ -952,151 +979,151 @@ ; /* Some kind of subscripted expression */ -subscripted: gelem '{' expr ';' '}' /* *main::{something} */ - /* In this and all the hash accessors, ';' is +subscripted: gelem PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE /* *main::{something} */ + /* In this and all the hash accessors, PERLY_SEMICOLON is * provided by the tokeniser */ - { $$ = newBINOP(OP_GELEM, 0, $1, scalar($3)); } - | scalar '[' expr ']' /* $array[$element] */ - { $$ = newBINOP(OP_AELEM, 0, oopsAV($1), scalar($3)); + { $$ = newBINOP(OP_GELEM, 0, $gelem, scalar($expr)); } + | scalar[array] PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE /* $array[$element] */ + { $$ = newBINOP(OP_AELEM, 0, oopsAV($array), scalar($expr)); } - | term ARROW '[' expr ']' /* somearef->[$element] */ + | term[array_reference] ARROW PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE /* somearef->[$element] */ { $$ = newBINOP(OP_AELEM, 0, - ref(newAVREF($1),OP_RV2AV), - scalar($4)); + ref(newAVREF($array_reference),OP_RV2AV), + scalar($expr)); } - | subscripted '[' expr ']' /* $foo->[$bar]->[$baz] */ + | subscripted[array_reference] PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE /* $foo->[$bar]->[$baz] */ { $$ = newBINOP(OP_AELEM, 0, - ref(newAVREF($1),OP_RV2AV), - scalar($3)); + ref(newAVREF($array_reference),OP_RV2AV), + scalar($expr)); } - | scalar '{' expr ';' '}' /* $foo{bar();} */ - { $$ = newBINOP(OP_HELEM, 0, oopsHV($1), jmaybe($3)); + | scalar[hash] PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE /* $foo{bar();} */ + { $$ = newBINOP(OP_HELEM, 0, oopsHV($hash), jmaybe($expr)); } - | term ARROW '{' expr ';' '}' /* somehref->{bar();} */ + | term[hash_reference] ARROW PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE /* somehref->{bar();} */ { $$ = newBINOP(OP_HELEM, 0, - ref(newHVREF($1),OP_RV2HV), - jmaybe($4)); } - | subscripted '{' expr ';' '}' /* $foo->[bar]->{baz;} */ + ref(newHVREF($hash_reference),OP_RV2HV), + jmaybe($expr)); } + | subscripted[hash_reference] PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE /* $foo->[bar]->{baz;} */ { $$ = newBINOP(OP_HELEM, 0, - ref(newHVREF($1),OP_RV2HV), - jmaybe($3)); } - | term ARROW '(' ')' /* $subref->() */ + ref(newHVREF($hash_reference),OP_RV2HV), + jmaybe($expr)); } + | term[code_reference] ARROW PERLY_PAREN_OPEN PERLY_PAREN_CLOSE /* $subref->() */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, - newCVREF(0, scalar($1))); + newCVREF(0, scalar($code_reference))); if (parser->expect == XBLOCK) parser->expect = XOPERATOR; } - | term ARROW '(' expr ')' /* $subref->(@args) */ + | term[code_reference] ARROW PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE /* $subref->(@args) */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, - op_append_elem(OP_LIST, $4, - newCVREF(0, scalar($1)))); + op_append_elem(OP_LIST, $expr, + newCVREF(0, scalar($code_reference)))); if (parser->expect == XBLOCK) parser->expect = XOPERATOR; } - | subscripted '(' expr ')' /* $foo->{bar}->(@args) */ + | subscripted[code_reference] PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE /* $foo->{bar}->(@args) */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, - op_append_elem(OP_LIST, $3, - newCVREF(0, scalar($1)))); + op_append_elem(OP_LIST, $expr, + newCVREF(0, scalar($code_reference)))); if (parser->expect == XBLOCK) parser->expect = XOPERATOR; } - | subscripted '(' ')' /* $foo->{bar}->() */ + | subscripted[code_reference] PERLY_PAREN_OPEN PERLY_PAREN_CLOSE /* $foo->{bar}->() */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, - newCVREF(0, scalar($1))); + newCVREF(0, scalar($code_reference))); if (parser->expect == XBLOCK) parser->expect = XOPERATOR; } - | '(' expr ')' '[' expr ']' /* list slice */ - { $$ = newSLICEOP(0, $5, $2); } - | QWLIST '[' expr ']' /* list literal slice */ - { $$ = newSLICEOP(0, $3, $1); } - | '(' ')' '[' expr ']' /* empty list slice! */ - { $$ = newSLICEOP(0, $4, NULL); } + | PERLY_PAREN_OPEN expr[list] PERLY_PAREN_CLOSE PERLY_BRACKET_OPEN expr[slice] PERLY_BRACKET_CLOSE /* list slice */ + { $$ = newSLICEOP(0, $slice, $list); } + | QWLIST PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE /* list literal slice */ + { $$ = newSLICEOP(0, $expr, $QWLIST); } + | PERLY_PAREN_OPEN PERLY_PAREN_CLOSE PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE /* empty list slice! */ + { $$ = newSLICEOP(0, $expr, NULL); } ; /* Binary operators between terms */ -termbinop: term ASSIGNOP term /* $x = $y, $x += $y */ - { $$ = newASSIGNOP(OPf_STACKED, $1, $2, $3); } - | term POWOP term /* $x ** $y */ - { $$ = newBINOP($2, 0, scalar($1), scalar($3)); } - | term MULOP term /* $x * $y, $x x $y */ - { if ($2 != OP_REPEAT) - scalar($1); - $$ = newBINOP($2, 0, $1, scalar($3)); - } - | term ADDOP term /* $x + $y */ - { $$ = newBINOP($2, 0, scalar($1), scalar($3)); } - | term SHIFTOP term /* $x >> $y, $x << $y */ - { $$ = newBINOP($2, 0, scalar($1), scalar($3)); } +termbinop: term[lhs] ASSIGNOP term[rhs] /* $x = $y, $x += $y */ + { $$ = newASSIGNOP(OPf_STACKED, $lhs, $ASSIGNOP, $rhs); } + | term[lhs] POWOP term[rhs] /* $x ** $y */ + { $$ = newBINOP($POWOP, 0, scalar($lhs), scalar($rhs)); } + | term[lhs] MULOP term[rhs] /* $x * $y, $x x $y */ + { if ($MULOP != OP_REPEAT) + scalar($lhs); + $$ = newBINOP($MULOP, 0, $lhs, scalar($rhs)); + } + | term[lhs] ADDOP term[rhs] /* $x + $y */ + { $$ = newBINOP($ADDOP, 0, scalar($lhs), scalar($rhs)); } + | term[lhs] SHIFTOP term[rhs] /* $x >> $y, $x << $y */ + { $$ = newBINOP($SHIFTOP, 0, scalar($lhs), scalar($rhs)); } | termrelop %prec PREC_LOW /* $x > $y, etc. */ - { $$ = $1; } + { $$ = $termrelop; } | termeqop %prec PREC_LOW /* $x == $y, $x cmp $y */ - { $$ = $1; } - | term BITANDOP term /* $x & $y */ - { $$ = newBINOP($2, 0, scalar($1), scalar($3)); } - | term BITOROP term /* $x | $y */ - { $$ = newBINOP($2, 0, scalar($1), scalar($3)); } - | term DOTDOT term /* $x..$y, $x...$y */ - { $$ = newRANGE($2, scalar($1), scalar($3)); } - | term ANDAND term /* $x && $y */ - { $$ = newLOGOP(OP_AND, 0, $1, $3); } - | term OROR term /* $x || $y */ - { $$ = newLOGOP(OP_OR, 0, $1, $3); } - | term DORDOR term /* $x // $y */ - { $$ = newLOGOP(OP_DOR, 0, $1, $3); } - | term MATCHOP term /* $x =~ /$y/ */ - { $$ = bind_match($2, $1, $3); } + { $$ = $termeqop; } + | term[lhs] BITANDOP term[rhs] /* $x & $y */ + { $$ = newBINOP($BITANDOP, 0, scalar($lhs), scalar($rhs)); } + | term[lhs] BITOROP term[rhs] /* $x | $y */ + { $$ = newBINOP($BITOROP, 0, scalar($lhs), scalar($rhs)); } + | term[lhs] DOTDOT term[rhs] /* $x..$y, $x...$y */ + { $$ = newRANGE($DOTDOT, scalar($lhs), scalar($rhs)); } + | term[lhs] ANDAND term[rhs] /* $x && $y */ + { $$ = newLOGOP(OP_AND, 0, $lhs, $rhs); } + | term[lhs] OROR term[rhs] /* $x || $y */ + { $$ = newLOGOP(OP_OR, 0, $lhs, $rhs); } + | term[lhs] DORDOR term[rhs] /* $x // $y */ + { $$ = newLOGOP(OP_DOR, 0, $lhs, $rhs); } + | term[lhs] MATCHOP term[rhs] /* $x =~ /$y/ */ + { $$ = bind_match($MATCHOP, $lhs, $rhs); } ; termrelop: relopchain %prec PREC_LOW - { $$ = cmpchain_finish($1); } - | term NCRELOP term - { $$ = newBINOP($2, 0, scalar($1), scalar($3)); } + { $$ = cmpchain_finish($relopchain); } + | term[lhs] NCRELOP term[rhs] + { $$ = newBINOP($NCRELOP, 0, scalar($lhs), scalar($rhs)); } | termrelop NCRELOP { yyerror("syntax error"); YYERROR; } | termrelop CHRELOP { yyerror("syntax error"); YYERROR; } ; -relopchain: term CHRELOP term - { $$ = cmpchain_start($2, $1, $3); } - | relopchain CHRELOP term - { $$ = cmpchain_extend($2, $1, $3); } +relopchain: term[lhs] CHRELOP term[rhs] + { $$ = cmpchain_start($CHRELOP, $lhs, $rhs); } + | relopchain[lhs] CHRELOP term[rhs] + { $$ = cmpchain_extend($CHRELOP, $lhs, $rhs); } ; termeqop: eqopchain %prec PREC_LOW - { $$ = cmpchain_finish($1); } - | term NCEQOP term - { $$ = newBINOP($2, 0, scalar($1), scalar($3)); } + { $$ = cmpchain_finish($eqopchain); } + | term[lhs] NCEQOP term[rhs] + { $$ = newBINOP($NCEQOP, 0, scalar($lhs), scalar($rhs)); } | termeqop NCEQOP { yyerror("syntax error"); YYERROR; } | termeqop CHEQOP { yyerror("syntax error"); YYERROR; } ; -eqopchain: term CHEQOP term - { $$ = cmpchain_start($2, $1, $3); } - | eqopchain CHEQOP term - { $$ = cmpchain_extend($2, $1, $3); } +eqopchain: term[lhs] CHEQOP term[rhs] + { $$ = cmpchain_start($CHEQOP, $lhs, $rhs); } + | eqopchain[lhs] CHEQOP term[rhs] + { $$ = cmpchain_extend($CHEQOP, $lhs, $rhs); } ; /* Unary operators and terms */ -termunop : '-' term %prec UMINUS /* -$x */ - { $$ = newUNOP(OP_NEGATE, 0, scalar($2)); } - | '+' term %prec UMINUS /* +$x */ - { $$ = $2; } - - | '!' term /* !$x */ - { $$ = newUNOP(OP_NOT, 0, scalar($2)); } - | '~' term /* ~$x */ - { $$ = newUNOP($1, 0, scalar($2)); } +termunop : PERLY_MINUS term %prec UMINUS /* -$x */ + { $$ = newUNOP(OP_NEGATE, 0, scalar($term)); } + | PERLY_PLUS term %prec UMINUS /* +$x */ + { $$ = $term; } + + | PERLY_EXCLAMATION_MARK term /* !$x */ + { $$ = newUNOP(OP_NOT, 0, scalar($term)); } + | PERLY_TILDE term /* ~$x */ + { $$ = newUNOP($PERLY_TILDE, 0, scalar($term)); } | term POSTINC /* $x++ */ { $$ = newUNOP(OP_POSTINC, 0, - op_lvalue(scalar($1), OP_POSTINC)); } + op_lvalue(scalar($term), OP_POSTINC)); } | term POSTDEC /* $x-- */ { $$ = newUNOP(OP_POSTDEC, 0, - op_lvalue(scalar($1), OP_POSTDEC));} + op_lvalue(scalar($term), OP_POSTDEC));} | term POSTJOIN /* implicit join after interpolated ->@ */ { $$ = op_convert_list(OP_JOIN, 0, op_append_elem( @@ -1105,184 +1132,184 @@ newSVOP(OP_CONST,0, newSVpvs("\"")) )), - $1 + $term )); } | PREINC term /* ++$x */ { $$ = newUNOP(OP_PREINC, 0, - op_lvalue(scalar($2), OP_PREINC)); } + op_lvalue(scalar($term), OP_PREINC)); } | PREDEC term /* --$x */ { $$ = newUNOP(OP_PREDEC, 0, - op_lvalue(scalar($2), OP_PREDEC)); } + op_lvalue(scalar($term), OP_PREDEC)); } ; /* Constructors for anonymous data */ -anonymous: '[' expr ']' - { $$ = newANONLIST($2); } - | '[' ']' +anonymous: PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE + { $$ = newANONLIST($expr); } + | PERLY_BRACKET_OPEN PERLY_BRACKET_CLOSE { $$ = newANONLIST(NULL);} - | HASHBRACK expr ';' '}' %prec '(' /* { foo => "Bar" } */ - { $$ = newANONHASH($2); } - | HASHBRACK ';' '}' %prec '(' /* { } (';' by tokener) */ + | HASHBRACK expr PERLY_SEMICOLON PERLY_BRACE_CLOSE %prec PERLY_PAREN_OPEN /* { foo => "Bar" } */ + { $$ = newANONHASH($expr); } + | HASHBRACK PERLY_SEMICOLON PERLY_BRACE_CLOSE %prec PERLY_PAREN_OPEN /* { } (PERLY_SEMICOLON by tokener) */ { $$ = newANONHASH(NULL); } - | ANONSUB startanonsub proto subattrlist subbody %prec '(' + | ANONSUB startanonsub proto subattrlist subbody %prec PERLY_PAREN_OPEN { SvREFCNT_inc_simple_void(PL_compcv); - $$ = newANONATTRSUB($2, $3, $4, $5); } - | ANON_SIGSUB startanonsub subattrlist sigsubbody %prec '(' + $$ = newANONATTRSUB($startanonsub, $proto, $subattrlist, $subbody); } + | ANON_SIGSUB startanonsub subattrlist sigsubbody %prec PERLY_PAREN_OPEN { SvREFCNT_inc_simple_void(PL_compcv); - $$ = newANONATTRSUB($2, NULL, $3, $4); } + $$ = newANONATTRSUB($startanonsub, NULL, $subattrlist, $sigsubbody); } ; /* Things called with "do" */ termdo : DO term %prec UNIOP /* do $filename */ - { $$ = dofile($2, $1);} - | DO block %prec '(' /* do { code */ - { $$ = newUNOP(OP_NULL, OPf_SPECIAL, op_scope($2));} + { $$ = dofile($term, $DO);} + | DO block %prec PERLY_PAREN_OPEN /* do { code */ + { $$ = newUNOP(OP_NULL, OPf_SPECIAL, op_scope($block));} ; -term : termbinop +term[product] : termbinop | termunop | anonymous | termdo - | term '?' term ':' term - { $$ = newCONDOP(0, $1, $3, $5); } - | REFGEN term /* \$x, \@y, \%z */ - { $$ = newUNOP(OP_REFGEN, 0, $2); } - | MY REFGEN term - { $$ = newUNOP(OP_REFGEN, 0, localize($3,1)); } + | term[condition] PERLY_QUESTION_MARK term[then] PERLY_COLON term[else] + { $$ = newCONDOP(0, $condition, $then, $else); } + | REFGEN term[operand] /* \$x, \@y, \%z */ + { $$ = newUNOP(OP_REFGEN, 0, $operand); } + | MY REFGEN term[operand] + { $$ = newUNOP(OP_REFGEN, 0, localize($operand,1)); } | myattrterm %prec UNIOP - { $$ = $1; } - | LOCAL term %prec UNIOP - { $$ = localize($2,0); } - | '(' expr ')' - { $$ = sawparens($2); } + { $$ = $myattrterm; } + | LOCAL term[operand] %prec UNIOP + { $$ = localize($operand,0); } + | PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE + { $$ = sawparens($expr); } | QWLIST - { $$ = $1; } - | '(' ')' + { $$ = $QWLIST; } + | PERLY_PAREN_OPEN PERLY_PAREN_CLOSE { $$ = sawparens(newNULLLIST()); } - | scalar %prec '(' - { $$ = $1; } - | star %prec '(' - { $$ = $1; } - | hsh %prec '(' - { $$ = $1; } - | ary %prec '(' - { $$ = $1; } - | arylen %prec '(' /* $#x, $#{ something } */ - { $$ = newUNOP(OP_AV2ARYLEN, 0, ref($1, OP_AV2ARYLEN));} + | scalar %prec PERLY_PAREN_OPEN + { $$ = $scalar; } + | star %prec PERLY_PAREN_OPEN + { $$ = $star; } + | hsh %prec PERLY_PAREN_OPEN + { $$ = $hsh; } + | ary %prec PERLY_PAREN_OPEN + { $$ = $ary; } + | arylen %prec PERLY_PAREN_OPEN /* $#x, $#{ something } */ + { $$ = newUNOP(OP_AV2ARYLEN, 0, ref($arylen, OP_AV2ARYLEN));} | subscripted - { $$ = $1; } - | sliceme '[' expr ']' /* array slice */ + { $$ = $subscripted; } + | sliceme PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE /* array slice */ { $$ = op_prepend_elem(OP_ASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_ASLICE, 0, - list($3), - ref($1, OP_ASLICE))); - if ($$ && $1) + list($expr), + ref($sliceme, OP_ASLICE))); + if ($$ && $sliceme) $$->op_private |= - $1->op_private & OPpSLICEWARNING; + $sliceme->op_private & OPpSLICEWARNING; } - | kvslice '[' expr ']' /* array key/value slice */ + | kvslice PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE /* array key/value slice */ { $$ = op_prepend_elem(OP_KVASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_KVASLICE, 0, - list($3), - ref(oopsAV($1), OP_KVASLICE))); - if ($$ && $1) + list($expr), + ref(oopsAV($kvslice), OP_KVASLICE))); + if ($$ && $kvslice) $$->op_private |= - $1->op_private & OPpSLICEWARNING; + $kvslice->op_private & OPpSLICEWARNING; } - | sliceme '{' expr ';' '}' /* @hash{@keys} */ + | sliceme PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE /* @hash{@keys} */ { $$ = op_prepend_elem(OP_HSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_HSLICE, 0, - list($3), - ref(oopsHV($1), OP_HSLICE))); - if ($$ && $1) + list($expr), + ref(oopsHV($sliceme), OP_HSLICE))); + if ($$ && $sliceme) $$->op_private |= - $1->op_private & OPpSLICEWARNING; + $sliceme->op_private & OPpSLICEWARNING; } - | kvslice '{' expr ';' '}' /* %hash{@keys} */ + | kvslice PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE /* %hash{@keys} */ { $$ = op_prepend_elem(OP_KVHSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_KVHSLICE, 0, - list($3), - ref($1, OP_KVHSLICE))); - if ($$ && $1) + list($expr), + ref($kvslice, OP_KVHSLICE))); + if ($$ && $kvslice) $$->op_private |= - $1->op_private & OPpSLICEWARNING; + $kvslice->op_private & OPpSLICEWARNING; } - | THING %prec '(' - { $$ = $1; } + | THING %prec PERLY_PAREN_OPEN + { $$ = $THING; } | amper /* &foo; */ - { $$ = newUNOP(OP_ENTERSUB, 0, scalar($1)); } - | amper '(' ')' /* &foo() or foo() */ - { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar($1)); + { $$ = newUNOP(OP_ENTERSUB, 0, scalar($amper)); } + | amper PERLY_PAREN_OPEN PERLY_PAREN_CLOSE /* &foo() or foo() */ + { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar($amper)); } - | amper '(' expr ')' /* &foo(@args) or foo(@args) */ + | amper PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE /* &foo(@args) or foo(@args) */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, - op_append_elem(OP_LIST, $3, scalar($1))); + op_append_elem(OP_LIST, $expr, scalar($amper))); } | NOAMP subname optlistexpr /* foo @args (no parens) */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, - op_append_elem(OP_LIST, $3, scalar($2))); + op_append_elem(OP_LIST, $optlistexpr, scalar($subname))); } - | term ARROW '$' '*' - { $$ = newSVREF($1); } - | term ARROW '@' '*' - { $$ = newAVREF($1); } - | term ARROW '%' '*' - { $$ = newHVREF($1); } - | term ARROW '&' '*' + | term[operand] ARROW PERLY_DOLLAR PERLY_STAR + { $$ = newSVREF($operand); } + | term[operand] ARROW PERLY_SNAIL PERLY_STAR + { $$ = newAVREF($operand); } + | term[operand] ARROW PERLY_PERCENT_SIGN PERLY_STAR + { $$ = newHVREF($operand); } + | term[operand] ARROW PERLY_AMPERSAND PERLY_STAR { $$ = newUNOP(OP_ENTERSUB, 0, - scalar(newCVREF($3,$1))); } - | term ARROW '*' '*' %prec '(' - { $$ = newGVREF(0,$1); } + scalar(newCVREF($PERLY_AMPERSAND,$operand))); } + | term[operand] ARROW PERLY_STAR PERLY_STAR %prec PERLY_PAREN_OPEN + { $$ = newGVREF(0,$operand); } | LOOPEX /* loop exiting command (goto, last, dump, etc) */ - { $$ = newOP($1, OPf_SPECIAL); + { $$ = newOP($LOOPEX, OPf_SPECIAL); PL_hints |= HINT_BLOCK_SCOPE; } - | LOOPEX term - { $$ = newLOOPEX($1,$2); } + | LOOPEX term[operand] + { $$ = newLOOPEX($LOOPEX,$operand); } | NOTOP listexpr /* not $foo */ - { $$ = newUNOP(OP_NOT, 0, scalar($2)); } + { $$ = newUNOP(OP_NOT, 0, scalar($listexpr)); } | UNIOP /* Unary op, $_ implied */ - { $$ = newOP($1, 0); } + { $$ = newOP($UNIOP, 0); } | UNIOP block /* eval { foo }* */ - { $$ = newUNOP($1, 0, $2); } - | UNIOP term /* Unary op */ - { $$ = newUNOP($1, 0, $2); } + { $$ = newUNOP($UNIOP, 0, $block); } + | UNIOP term[operand] /* Unary op */ + { $$ = newUNOP($UNIOP, 0, $operand); } | REQUIRE /* require, $_ implied */ - { $$ = newOP(OP_REQUIRE, $1 ? OPf_SPECIAL : 0); } - | REQUIRE term /* require Foo */ - { $$ = newUNOP(OP_REQUIRE, $1 ? OPf_SPECIAL : 0, $2); } + { $$ = newOP(OP_REQUIRE, $REQUIRE ? OPf_SPECIAL : 0); } + | REQUIRE term[operand] /* require Foo */ + { $$ = newUNOP(OP_REQUIRE, $REQUIRE ? OPf_SPECIAL : 0, $operand); } | UNIOPSUB - { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar($1)); } - | UNIOPSUB term /* Sub treated as unop */ + { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar($UNIOPSUB)); } + | UNIOPSUB term[operand] /* Sub treated as unop */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, - op_append_elem(OP_LIST, $2, scalar($1))); } + op_append_elem(OP_LIST, $operand, scalar($UNIOPSUB))); } | FUNC0 /* Nullary operator */ - { $$ = newOP($1, 0); } - | FUNC0 '(' ')' - { $$ = newOP($1, 0);} + { $$ = newOP($FUNC0, 0); } + | FUNC0 PERLY_PAREN_OPEN PERLY_PAREN_CLOSE + { $$ = newOP($FUNC0, 0);} | FUNC0OP /* Same as above, but op created in toke.c */ - { $$ = $1; } - | FUNC0OP '(' ')' - { $$ = $1; } + { $$ = $FUNC0OP; } + | FUNC0OP PERLY_PAREN_OPEN PERLY_PAREN_CLOSE + { $$ = $FUNC0OP; } | FUNC0SUB /* Sub treated as nullop */ - { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar($1)); } - | FUNC1 '(' ')' /* not () */ - { $$ = ($1 == OP_NOT) - ? newUNOP($1, 0, newSVOP(OP_CONST, 0, newSViv(0))) - : newOP($1, OPf_SPECIAL); } - | FUNC1 '(' expr ')' /* not($foo) */ - { $$ = newUNOP($1, 0, $3); } + { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar($FUNC0SUB)); } + | FUNC1 PERLY_PAREN_OPEN PERLY_PAREN_CLOSE /* not () */ + { $$ = ($FUNC1 == OP_NOT) + ? newUNOP($FUNC1, 0, newSVOP(OP_CONST, 0, newSViv(0))) + : newOP($FUNC1, OPf_SPECIAL); } + | FUNC1 PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE /* not($foo) */ + { $$ = newUNOP($FUNC1, 0, $expr); } | PMFUNC /* m//, s///, qr//, tr/// */ { - if ( $1->op_type != OP_TRANS - && $1->op_type != OP_TRANSR - && (((PMOP*)$1)->op_pmflags & PMf_HAS_CV)) + if ( $PMFUNC->op_type != OP_TRANS + && $PMFUNC->op_type != OP_TRANSR + && (((PMOP*)$PMFUNC)->op_pmflags & PMf_HAS_CV)) { $$ = start_subparse(FALSE, CVf_ANON); SAVEFREESV(PL_compcv); @@ -1290,7 +1317,7 @@ $$ = 0; } SUBLEXSTART listexpr optrepl SUBLEXEND - { $$ = pmruntime($1, $4, $5, 1, $2); } + { $$ = pmruntime($PMFUNC, $listexpr, $optrepl, 1, $2); } | BAREWORD | listop | PLUGEXPR @@ -1298,50 +1325,50 @@ /* "my" declarations, with optional attributes */ myattrterm: MY myterm myattrlist - { $$ = my_attrs($2,$3); } + { $$ = my_attrs($myterm,$myattrlist); } | MY myterm - { $$ = localize($2,1); } + { $$ = localize($myterm,1); } | MY REFGEN myterm myattrlist - { $$ = newUNOP(OP_REFGEN, 0, my_attrs($3,$4)); } + { $$ = newUNOP(OP_REFGEN, 0, my_attrs($myterm,$myattrlist)); } ; /* Things that can be "my"'d */ -myterm : '(' expr ')' - { $$ = sawparens($2); } - | '(' ')' +myterm : PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE + { $$ = sawparens($expr); } + | PERLY_PAREN_OPEN PERLY_PAREN_CLOSE { $$ = sawparens(newNULLLIST()); } - | scalar %prec '(' - { $$ = $1; } - | hsh %prec '(' - { $$ = $1; } - | ary %prec '(' - { $$ = $1; } + | scalar %prec PERLY_PAREN_OPEN + { $$ = $scalar; } + | hsh %prec PERLY_PAREN_OPEN + { $$ = $hsh; } + | ary %prec PERLY_PAREN_OPEN + { $$ = $ary; } ; /* Basic list expressions */ -optlistexpr: /* NULL */ %prec PREC_LOW +optlistexpr: %empty %prec PREC_LOW { $$ = NULL; } | listexpr %prec PREC_LOW - { $$ = $1; } + { $$ = $listexpr; } ; -optexpr: /* NULL */ +optexpr: %empty { $$ = NULL; } | expr - { $$ = $1; } + { $$ = $expr; } ; -optrepl: /* NULL */ +optrepl: %empty { $$ = NULL; } - | '/' expr - { $$ = $2; } + | PERLY_SLASH expr + { $$ = $expr; } ; /* A little bit of trickery to make "for my $foo (@bar)" actually be lexical */ my_scalar: scalar - { parser->in_my = 0; $$ = my($1); } + { parser->in_my = 0; $$ = my($scalar); } ; my_var : scalar @@ -1357,59 +1384,59 @@ | REFGEN MY ; -amper : '&' indirob - { $$ = newCVREF($1,$2); } +amper : PERLY_AMPERSAND indirob + { $$ = newCVREF($PERLY_AMPERSAND,$indirob); } ; -scalar : '$' indirob - { $$ = newSVREF($2); } +scalar : PERLY_DOLLAR indirob + { $$ = newSVREF($indirob); } ; -ary : '@' indirob - { $$ = newAVREF($2); - if ($$) $$->op_private |= $1; +ary : PERLY_SNAIL indirob + { $$ = newAVREF($indirob); + if ($$) $$->op_private |= $PERLY_SNAIL; } ; -hsh : '%' indirob - { $$ = newHVREF($2); - if ($$) $$->op_private |= $1; +hsh : PERLY_PERCENT_SIGN indirob + { $$ = newHVREF($indirob); + if ($$) $$->op_private |= $PERLY_PERCENT_SIGN; } ; arylen : DOLSHARP indirob - { $$ = newAVREF($2); } - | term ARROW DOLSHARP '*' - { $$ = newAVREF($1); } + { $$ = newAVREF($indirob); } + | term ARROW DOLSHARP PERLY_STAR + { $$ = newAVREF($term); } ; -star : '*' indirob - { $$ = newGVREF(0,$2); } +star : PERLY_STAR indirob + { $$ = newGVREF(0,$indirob); } ; sliceme : ary - | term ARROW '@' - { $$ = newAVREF($1); } + | term ARROW PERLY_SNAIL + { $$ = newAVREF($term); } ; kvslice : hsh - | term ARROW '%' - { $$ = newHVREF($1); } + | term ARROW PERLY_PERCENT_SIGN + { $$ = newHVREF($term); } ; gelem : star - | term ARROW '*' - { $$ = newGVREF(0,$1); } + | term ARROW PERLY_STAR + { $$ = newGVREF(0,$term); } ; /* Indirect objects */ indirob : BAREWORD - { $$ = scalar($1); } + { $$ = scalar($BAREWORD); } | scalar %prec PREC_LOW - { $$ = scalar($1); } + { $$ = scalar($scalar); } | block - { $$ = op_scope($1); } + { $$ = op_scope($block); } | PRIVATEREF - { $$ = $1; } + { $$ = $PRIVATEREF; } ; diff -Nru perl-5.32.1/plan9/9front.patch perl-5.34.0/plan9/9front.patch --- perl-5.32.1/plan9/9front.patch 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/plan9/9front.patch 2020-10-04 22:17:13.000000000 +0000 @@ -0,0 +1,46 @@ +diff --git a/dist/IO/poll.h b/dist/IO/poll.h +--- a/dist/IO/poll.h ++++ b/dist/IO/poll.h +@@ -22,10 +22,12 @@ + + #define EMULATE_POLL_WITH_SELECT + ++#ifdef __VMS + #ifdef poll + # undef poll + #endif + #define poll Perl_my_poll ++#endif + + typedef struct pollfd { + int fd; +diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL +--- a/ext/Errno/Errno_pm.PL ++++ b/ext/Errno/Errno_pm.PL +@@ -125,6 +125,8 @@ sub get_files { + # VMS keeps its include files in system libraries + if ($^O eq 'VMS') { + $file{'Sys$Library:DECC$RTLDEF.TLB'} = 1; ++ } elsif ($^O eq 'plan9') { ++ $file{'/sys/include/ape/errno.h'} = 1; + } elsif ($^O eq 'os390') { + # OS/390 C compiler doesn't generate #file or #line directives + $file{'/usr/include/errno.h'} = 1; +diff --git a/sv.c b/sv.c +--- a/sv.c ++++ b/sv.c +@@ -876,10 +876,10 @@ + U8 body_size; /* Size to allocate */ + U8 copy; /* Size of structure to copy (may be shorter) */ + U8 offset; /* Size of unalloced ghost fields to first alloced field*/ +- PERL_BITFIELD8 type : 4; /* We have space for a sanity check. */ +- PERL_BITFIELD8 cant_upgrade : 1;/* Cannot upgrade this type */ +- PERL_BITFIELD8 zero_nv : 1; /* zero the NV when upgrading from this */ +- PERL_BITFIELD8 arena : 1; /* Allocated from an arena */ ++ PERL_BITFIELD8 type; /* We have space for a sanity check. */ ++ PERL_BITFIELD8 cant_upgrade;/* Cannot upgrade this type */ ++ PERL_BITFIELD8 zero_nv; /* zero the NV when upgrading from this */ ++ PERL_BITFIELD8 arena; /* Allocated from an arena */ + U32 arena_size; /* Size of arena to allocate */ + }; + diff -Nru perl-5.32.1/plan9/aperl perl-5.34.0/plan9/aperl --- perl-5.32.1/plan9/aperl 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/plan9/aperl 2020-10-04 22:17:13.000000000 +0000 @@ -3,5 +3,6 @@ # aperl: # Executes perl command and alters stderr to produce Acme-friendly error messages # Created 02-JUL-1996, Luther Huffman, lutherh@stratcom.com +# Modified May 2020, David Romano, unobe@cpan.org -/bin/perl $* |[2] /bin/perl -pe 's/ line (\d+)/:$1/' >[1=2] +/bin/perl-_P9P_VERSION $* |[2] /bin/perl-_P9P_VERSION -pe 's/ line (\d+)/:$1/' >[1=2] diff -Nru perl-5.32.1/plan9/buildinfo perl-5.34.0/plan9/buildinfo --- perl-5.32.1/plan9/buildinfo 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/plan9/buildinfo 2020-10-04 22:17:13.000000000 +0000 @@ -1 +1 @@ -p9pvers = 5.008 +p9pvers = 5.32.0 diff -Nru perl-5.32.1/plan9/config_h.sample perl-5.34.0/plan9/config_h.sample --- perl-5.32.1/plan9/config_h.sample 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/plan9/config_h.sample 2020-10-24 18:43:34.000000000 +0000 @@ -224,7 +224,7 @@ /* HAS_MBLEN: * This symbol, if defined, indicates that the mblen routine is available - * to find the number of bytes in a multibye character. + * to find the number of bytes in a multibyte character. */ #define HAS_MBLEN /**/ @@ -3351,9 +3351,11 @@ * This symbol, if defined, indicates that Perl should be built to * use the interpreter-based threading implementation. */ -/* USE_5005THREADS: - * This symbol, if defined, indicates that Perl should be built to - * use the 5.005-based threading implementation. +/* USE_THREADS: + * This symbol, if defined, indicates that Perl should + * be built to use threads. At present, it is a synonym for + * and USE_ITHREADS, but eventually the source ought to be + * changed to use this to mean _any_ threading implementation. */ /* OLD_PTHREADS_API: * This symbol, if defined, indicates that Perl should @@ -3364,11 +3366,8 @@ * try to use the various _r versions of library functions. * This is extremely experimental. */ -/*#define USE_5005THREADS / **/ /*#define USE_ITHREADS / **/ -#if defined(USE_5005THREADS) && !defined(USE_ITHREADS) -#define USE_THREADS /* until src is revised*/ -#endif +/*#define USE_THREADS / **/ /*#define OLD_PTHREADS_API / **/ /*#define USE_REENTRANT_API / **/ diff -Nru perl-5.32.1/plan9/config.plan9 perl-5.34.0/plan9/config.plan9 --- perl-5.32.1/plan9/config.plan9 2020-12-18 13:34:02.000000000 +0000 +++ perl-5.34.0/plan9/config.plan9 2020-10-24 18:43:34.000000000 +0000 @@ -2,12 +2,12 @@ * This file is mangled by fndvers (and perhaps other scripts) to produce * the config.h for Plan 9. It was handwritten because the standard * configuration scripts were written in a shell dialect incomprehensible - * to Plan 9. + * to Plan 9. * config.h for Plan 9 - * Version: 5.8.0 - */ + * Version: blead + */ -/* Configuration time: 21-Oct-1996 15:11 +/* First configuration time: 21-Oct-1996 15:11 * Configured by: Luther Huffman, lutherh@stratcom.com * Target system: Plan 9 */ @@ -18,19 +18,46 @@ * */ +/* Last configuration time: June 2020 + * Configured by: David Romano, unobe@cpan.org + * Target system: Plan 9/9front + */ + #ifndef _config_h_ #define _config_h_ +/* CHARBITS: + * This symbol contains the size of a char, so that the C preprocessor + * can make decisions based on it. + */ +#define CHARBITS 8 /**/ + + /* CAT2: * This macro catenates 2 tokens together. */ -#define CAT2(a,b)a ## b +#if 42 == 1 +#define CAT2(a,b) a/**/b +#define STRINGIFY(a) "a" + /* If you can get stringification with catify, tell me how! */ +#endif +#if 42 == 42 +#define PeRl_CaTiFy(a, b) a ## b +#define PeRl_StGiFy(a) #a +/* the additional level of indirection enables these macros to be + * used as arguments to other macros. See K&R 2nd ed., page 231. */ +#define CAT2(a,b) PeRl_CaTiFy(a,b) +#define StGiFy(a) PeRl_StGiFy(a) +#define STRINGIFY(a) PeRl_StGiFy(a) +#endif +#if 42 != 1 && 42 != 42 +# include "Bletch: How does this C preprocessor catenate tokens?" +#endif + #define CAT3(a,b,c)a ## b ## c #define CAT4(a,b,c,d)a ## b ## c ## d #define CAT5(a,b,c,d,e)a ## b ## c ## d ## e -#define StGiFy(a)# a -#define STRINGIFY(a)StGiFy(a) #define SCAT2(a,b)StGiFy(a) StGiFy(b) #define SCAT3(a,b,c)StGiFy(a) StGiFy(b) StGiFy(c) #define SCAT4(a,b,c,d)StGiFy(a) StGiFy(b) StGiFy(c) StGiFy(d) @@ -52,16 +79,22 @@ # endif #endif -/* BIN: - * This symbol holds the path of the bin directory where the package will - * be installed. Program must be prepared to deal with ~name substitution. - */ -/* BIN_EXP: - * This symbol is the filename expanded version of the BIN symbol, for - * programs that do not want to deal with that at run-time. +/* BYTEORDER: + * This symbol holds the hexadecimal constant defined in byteorder, + * in a UV, i.e. 0x1234 or 0x4321 or 0x12345678, etc... + * If the compiler supports cross-compiling or multiple-architecture + * binaries (eg. on NeXT systems), use compiler-defined macros to + * determine the byte order. + * On NeXT 3.2 (and greater), you can build "Fat" Multiple Architecture + * Binaries (MAB) on either big endian or little endian machines. + * The endian-ness is available at compile-time. This only matters + * for perl, where the config.h can be generated and installed on + * one system, and used by a different architecture to build an + * extension. Older versions of NeXT that might not have + * defined either *_ENDIAN__ were all on Motorola 680x0 series, + * so the default case (for NeXT) is big endian to catch them. + * This might matter for NeXT 3.0. */ -#define BIN "/_P9P_OBJTYPE/bin" /* */ -#define BIN_EXP "/_P9P_OBJTYPE/bin" /* */ /* LOC_SED: * This symbol holds the complete pathname to the sed program. @@ -202,7 +235,7 @@ #define HAS_GETLOGIN /**/ /* HAS_GETPGID: - * This symbol, if defined, indicates to the C program that + * This symbol, if defined, indicates to the C program that * the getpgid(pid) function is available to get the * process group id. */ @@ -244,7 +277,7 @@ * This symbol, if defined, indicates that the link routine is * available to create hard links. */ -/* #define HAS_LINK / **/ +/* #define HAS_LINK /**/ /* HAS_LOCALECONV: * This symbol, if defined, indicates that the localeconv routine is @@ -262,11 +295,11 @@ * This symbol, if defined, indicates that the lstat routine is * available to do file stats on symbolic links. */ -/*#define HAS_LSTAT / **/ +/*#define HAS_LSTAT /**/ /* HAS_MBLEN: * This symbol, if defined, indicates that the mblen routine is available - * to find the number of bytes in a multibye character. + * to find the number of bytes in a multibyte character. */ #define HAS_MBLEN /**/ @@ -382,7 +415,7 @@ * This symbol, if defined, indicates that the readlink routine is * available to read the value of a symbolic link. */ -/*#define HAS_READLINK / **/ +/*#define HAS_READLINK /**/ /* HAS_RENAME: * This symbol, if defined, indicates that the rename routine is available @@ -434,7 +467,7 @@ * This symbol, if defined, indicates that the setpgid(pid, gpid) * routine is available to set process group ID. */ -#define HAS_SETPGID / **/ +#define HAS_SETPGID /**/ /* HAS_SETPGRP2: * This symbol, if defined, indicates that the setpgrp2() (as in DG/UX) @@ -502,7 +535,7 @@ * This symbol, if defined, indicates that the strtod routine is * available to provide better numeric string conversion than atof(). */ -#define HAS_STRTOD /**/ +/*#define HAS_STRTOD /**/ /* HAS_STRTOL: * This symbol, if defined, indicates that the strtol routine is available @@ -520,7 +553,7 @@ * This symbol, if defined, indicates that the symlink routine is available * to create symbolic links. */ -/*#define HAS_SYMLINK / **/ +/*#define HAS_SYMLINK /**/ /* HAS_SYSCALL: * This symbol, if defined, indicates that the syscall routine is @@ -654,7 +687,7 @@ #define I_LOCALE /**/ /* I_NET_ERRNO: - * This symbol, if defined, indicates that exists and + * This symbol, if defined, indicates that exists and * should be included. */ /*#define I_NET_ERRNO /* config-skip */ @@ -865,17 +898,6 @@ */ #define PLAN9 /**/ -/* MEM_ALIGNBYTES: - * This symbol contains the number of bytes required to align a - * double, or a long double when applicable. Usual values are 2, - * 4 and 8. The default is eight, for safety. - */ -#if defined(MULTIARCH) -# define MEM_ALIGNBYTES 8 -#else -#define MEM_ALIGNBYTES 4 -#endif - /* ARCHLIB: * This variable, if defined, holds the name of the directory in * which the user wants to put architecture-dependent public @@ -920,8 +942,8 @@ * This symbol is the filename expanded version of the BIN symbol, for * programs that do not want to deal with that at run-time. */ -#define BIN "/usr/bin" /**/ -#define BIN_EXP "/usr/bin" /**/ +#define BIN "/_P9P_OBJTYPE/bin" /* */ +#define BIN_EXP "/_P9P_OBJTYPE/bin" /* */ /* BYTEORDER: * This symbol holds the hexadecimal constant defined in byteorder, @@ -966,30 +988,6 @@ #define BYTEORDER 0x1234 /* large digits for MSB */ #endif /* NeXT */ -/* CAT2: - * This macro catenates 2 tokens together. - */ -/* STRINGIFY: - * This macro surrounds its token with double quotes. - */ -#if 42 == 1 -#define CAT2(a,b) a/**/b -#define STRINGIFY(a) "a" - /* If you can get stringification with catify, tell me how! */ -#endif -#if 42 == 42 -#define PeRl_CaTiFy(a, b) a ## b -#define PeRl_StGiFy(a) #a -/* the additional level of indirection enables these macros to be - * used as arguments to other macros. See K&R 2nd ed., page 231. */ -#define CAT2(a,b) PeRl_CaTiFy(a,b) -#define StGiFy(a) PeRl_StGiFy(a) -#define STRINGIFY(a) PeRl_StGiFy(a) -#endif -#if 42 != 1 && 42 != 42 -# include "Bletch: How does this C preprocessor concatenate tokens?" -#endif - /* CPPSTDIN: * This symbol contains the first part of the string which will invoke * the C preprocessor on the standard input and produce to standard @@ -1233,7 +1231,7 @@ * This symbol, if defined, indicates that the "fast stdio" * is available to manipulate the stdio buffers directly. */ -/*#define HAS_FAST_STDIO / **/ +/*#define HAS_FAST_STDIO /**/ /* HAS_FCHDIR: * This symbol, if defined, indicates that the fchdir routine is @@ -1311,7 +1309,8 @@ /* HAS_FPCLASSIFY: * This symbol, if defined, indicates that the fpclassify routine is - * available to classify doubles. Available for example in HP-UX. + * available to classify doubles. Available for example in HP-UX and + * Plan9/9front. * The returned values are defined in and are * * FP_NORMAL Normalized @@ -1321,7 +1320,7 @@ * FP_NAN NaN * */ -/*#define HAS_FPCLASSIFY / **/ +#define HAS_FPCLASSIFY / **/ /* HAS_FPOS64_T: * This symbol will be defined if the C compiler supports fpos64_t. @@ -1707,11 +1706,11 @@ * REENTRANT_PROTO_T_ABC macros of reentr.h if d_gmtime_r * is defined. */ -/*#define HAS_GMTIME_R / **/ +#define HAS_GMTIME_R / **/ #define GMTIME_R_PROTO 0 /**/ /* HAS_GNULIBC: - * This symbol, if defined, indicates to the C program that + * This symbol, if defined, indicates to the C program that * the GNU C library is being used. A better check is to use * the __GLIBC__ and __GLIBC_MINOR__ symbols supplied with glibc. */ @@ -1754,7 +1753,7 @@ * This symbol, if defined, indicates that the ilogbl routine is * available. If scalbnl is also present we can emulate frexpl. */ -/*#define HAS_ILOGBL / **/ +/*#define HAS_ILOGBL /**/ /* HAS_INT64_T: * This symbol will defined if the C compiler supports int64_t. @@ -1764,7 +1763,7 @@ #define HAS_INT64_T /**/ /* HAS_ISASCII: - * This manifest constant lets the C program know that isascii + * This manifest constant lets the C program know that isascii * is available. */ /*#define HAS_ISASCII / **/ @@ -1824,29 +1823,68 @@ * REENTRANT_PROTO_T_ABC macros of reentr.h if d_localtime_r * is defined. */ -/*#define HAS_LOCALTIME_R / **/ -/*#define LOCALTIME_R_NEEDS_TZSET / **/ +#define HAS_LOCALTIME_R +#define LOCALTIME_R_NEEDS_TZSET / **/ #define LOCALTIME_R_PROTO 0 /**/ - +#ifdef LOCALTIME_R_NEEDS_TZSET +#define L_R_TZSET tzset(), +#else +#define L_R_TZSET +#endif /* HAS_LONG_DOUBLE: * This symbol will be defined if the C compiler supports long * doubles. */ /* LONG_DOUBLESIZE: - * This symbol contains the size of a long double, so that the + * This symbol contains the size of a long double, so that the * C preprocessor can make decisions based on it. It is only - * defined if the system supports long doubles. + * defined if the system supports long doubles. Note that this + * is sizeof(long double), which may include unused bytes. */ -#define HAS_LONG_DOUBLE /**/ +/* HAS_LDEXPL: + * This symbol, if defined, indicates that the ldexpl routine is + * available to shift a long double floating-point number + * by an integral power of 2. + */ +/* LONG_DOUBLEKIND: + * LONG_DOUBLEKIND will be one of + * LONG_DOUBLE_IS_DOUBLE + * LONG_DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN + * LONG_DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN + * LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN + * LONG_DOUBLE_IS_X86_80_BIT_BIG_ENDIAN + * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE + * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE + * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE + * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE + * LONG_DOUBLE_IS_UNKNOWN_FORMAT + * It is only defined if the system supports long doubles. + */ +/*#define HAS_LDEXPL / **/ +#define HAS_LONG_DOUBLE / **/ #ifdef HAS_LONG_DOUBLE #define LONG_DOUBLESIZE 8 /**/ +#define LONG_DOUBLEKIND 0 /**/ +#define LONG_DOUBLE_IS_DOUBLE 0 +#define LONG_DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN 1 +#define LONG_DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN 2 +#define LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN 3 +#define LONG_DOUBLE_IS_X86_80_BIT_BIG_ENDIAN 4 +#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE 5 +#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE 6 +#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE 7 +#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE 8 +#define LONG_DOUBLE_IS_UNKNOWN_FORMAT -1 +#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE /* back-compat */ +#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE /* back-compat */ #endif + /* HAS_LONG_LONG: * This symbol will be defined if the C compiler supports long long. */ /* LONGLONGSIZE: - * This symbol contains the size of a long long, so that the + * This symbol contains the size of a long long, so that the * C preprocessor can make decisions based on it. It is only * defined if the system supports long long. */ @@ -1948,7 +1986,7 @@ /*#define OLD_PTHREAD_CREATE_JOINABLE / **/ /* HAS_PTHREAD_YIELD: - * This symbol, if defined, indicates that the pthread_yield + * This symbol, if defined, indicates that the pthread_yield * routine is available to yield the execution of the current * thread. sched_yield is preferable to pthread_yield. */ @@ -2024,7 +2062,7 @@ * This symbol, if defined, indicates that the scalbnl routine is * available. If ilogbl is also present we can emulate frexpl. */ -/*#define HAS_SCALBNL / **/ +/*#define HAS_SCALBNL /**/ /* HAS_SENDMSG: * This symbol, if defined, indicates that the sendmsg routine is @@ -2569,8 +2607,8 @@ * This symbol holds the type used for the second argument to * getgroups() and setgroups(). Usually, this is the same as * gidtype (gid_t) , but sometimes it isn't. - * It can be int, ushort, gid_t, etc... - * It may be necessary to include to get any + * It can be int, ushort, gid_t, etc... + * It may be necessary to include to get any * typedef'ed information. This is only required if you have * getgroups() or setgroups().. */ @@ -2731,6 +2769,12 @@ /*#define PWGECOS / **/ /*#define PWPASSWD / **/ +/* I_QUADMATH: + * This symbol, if defined, indicates that exists and + * should be included. + */ +/*#define I_QUADMATH / **/ + /* I_SHADOW: * This symbol, if defined, indicates that exists and * should be included. @@ -2842,6 +2886,27 @@ */ /*#define INSTALL_USR_BIN_PERL / **/ +/* DOUBLEINFBYTES: + * This symbol, if defined, is a comma-separated list of + * hexadecimal bytes for the double precision infinity. + */ +/* DOUBLENANBYTES: + * This symbol, if defined, is a comma-separated list of + * hexadecimal bytes (0xHH) for the double precision not-a-number. + */ +/* LONGDBLINFBYTES: + * This symbol, if defined, is a comma-separated list of + * hexadecimal bytes for the long double precision infinity. + */ +/* LONGDBLNANBYTES: + * This symbol, if defined, is a comma-separated list of + * hexadecimal bytes (0xHH) for the long double precision not-a-number. + */ +#define DOUBLEINFBYTES 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x7f /**/ +#define DOUBLENANBYTES 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f /**/ +#define LONGDBLINFBYTES 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x7f /**/ +#define LONGDBLNANBYTES 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /**/ + /* PERL_PRIfldbl: * This symbol, if defined, contains the string used by stdio to * format long doubles (format 'f') for output. @@ -2894,7 +2959,7 @@ #define MYMALLOC /**/ /* Mode_t: - * This symbol holds the type used to declare file modes + * This symbol holds the type used to declare file modes * for systems calls. It is usually mode_t, but may be * int or unsigned short. It may be necessary to include * to get any typedef'ed information. @@ -3044,6 +3109,16 @@ * This symbol contains the number of bits a variable of type NVTYPE * can preserve of a variable of type UVTYPE. */ +/* NV_OVERFLOWS_INTEGERS_AT: + * This symbol gives the largest integer value that NVs can hold. This + * value + 1.0 cannot be stored accurately. It is expressed as constant + * floating point expression to reduce the chance of decimale/binary + * conversion issues. If it can not be determined, the value 0 is given. + */ +/* NV_ZERO_IS_ALLBITS_ZERO: + * This symbol, if defined, indicates that a variable of type NVTYPE + * stores 0.0 in memory as all bits zero. + */ #define IVTYPE long /**/ #define UVTYPE unsigned long /**/ #define I8TYPE char /**/ @@ -3070,8 +3145,10 @@ #define U64SIZE 8 /**/ #endif #define NVSIZE 8 /**/ -/*#define NV_PRESERVES_UV +#define NV_PRESERVES_UV #define NV_PRESERVES_UV_BITS 31 +#define NV_OVERFLOWS_INTEGERS_AT 256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0 +#undef NV_ZERO_IS_ALLBITS_ZERO /* IVdf: * This symbol defines the format string used for printing a Perl IV @@ -3131,8 +3208,8 @@ * This symbol contains the ~name expanded version of PRIVLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define PRIVLIB "/sys/lib/perl/5.32.1" /**/ -#define PRIVLIB_EXP "/sys/lib/perl/5.32.1" /**/ +#define PRIVLIB "/sys/lib/perl/_P9P_VERSION" /**/ +#define PRIVLIB_EXP "/sys/lib/perl/_P9P_VERSION" /**/ /* PTRSIZE: * This symbol contains the size of a pointer, so that the C preprocessor @@ -3179,7 +3256,7 @@ /* Select_fd_set_t: * This symbol holds the type used for the 2nd, 3rd, and 4th * arguments to select. Usually, this is 'fd_set *', if HAS_FD_SET - * is defined, and 'int *' otherwise. This is only useful if you + * is defined, and 'int *' otherwise. This is only useful if you * have select(), of course. */ #define Select_fd_set_t fd_set* /**/ @@ -3205,10 +3282,10 @@ * The signals in the list are separated with commas, and the indices * within that list and the SIG_NAME list match, so it's easy to compute * the signal name from a number or vice versa at the price of a small - * dynamic linear lookup. + * dynamic linear lookup. * Duplicates are allowed, but are moved to the end of the list. * The signal number corresponding to sig_name[i] is sig_number[i]. - * if (i < NSIG) then sig_number[i] == i. + * if (i < NSIG) then sig_number[i] == i. * The last element is 0, corresponding to the 0 at the end of * the sig_name list. */ @@ -3259,9 +3336,9 @@ * removed. The elements in inc_version_list (inc_version_list.U) can * be tacked onto this variable to generate a list of directories to search. */ -#define SITELIB "/sys/lib/perl/5.32.1/site_perl" /**/ -#define SITELIB_EXP "/sys/lib/perl/5.32.1/site_perl" /**/ -#define SITELIB_STEM "/sys/lib/perl/5.32.1/site_perl" /**/ +#define SITELIB "/sys/lib/perl/_P9P_VERSION/site_perl" /**/ +#define SITELIB_EXP "/sys/lib/perl/_P9P_VERSION/site_perl" /**/ +#define SITELIB_STEM "/sys/lib/perl/_P9P_VERSION/site_perl" /**/ /* Size_t_size: * This symbol holds the size of a Size_t in bytes. @@ -3297,7 +3374,7 @@ * script to make sure (one hopes) that it runs with perl and not * some shell. */ -#define STARTPERL "#!/bin/perl" /**/ +#define STARTPERL "#!/bin/perl-_P9P_VERSION" /**/ /* STDCHAR: * This symbol is defined to be the type of char used in stdio.h. @@ -3339,6 +3416,27 @@ */ #define Uid_t uid_t /* UID type */ +/* GMTIME_MAX: + * This symbol contains the maximum value for the time_t offset that + * the system function gmtime () accepts, and defaults to 0 + */ +/* GMTIME_MIN: + * This symbol contains the minimum value for the time_t offset that + * the system function gmtime () accepts, and defaults to 0 + */ +/* LOCALTIME_MAX: + * This symbol contains the maximum value for the time_t offset that + * the system function localtime () accepts, and defaults to 0 + */ +/* LOCALTIME_MIN: + * This symbol contains the minimum value for the time_t offset that + * the system function localtime () accepts, and defaults to 0 + */ +#define GMTIME_MAX 2147483647 /**/ +#define GMTIME_MIN 0 /**/ +#define LOCALTIME_MAX 2147483647 /**/ +#define LOCALTIME_MIN 0 /**/ + /* USE_64_BIT_INT: * This symbol, if defined, indicates that 64-bit integers should * be used when available. If not defined, the native integers @@ -3415,6 +3513,14 @@ #define USE_PERLIO /**/ #endif +/* USE_QUADMATH: + * This symbol, if defined, indicates that the quadmath library should + * be used when available. + */ +#ifndef USE_QUADMATH +/*#define USE_QUADMATH / **/ +#endif + /* USE_SOCKS: * This symbol, if defined, indicates that Perl should * be built to use socks. @@ -3427,10 +3533,6 @@ * This symbol, if defined, indicates that Perl should be built to * use the interpreter-based threading implementation. */ -/* USE_5005THREADS: - * This symbol, if defined, indicates that Perl should be built to - * use the 5.005-based threading implementation. - */ /* OLD_PTHREADS_API: * This symbol, if defined, indicates that Perl should * be built to use the old draft POSIX threads API. @@ -3440,11 +3542,8 @@ * try to use the various _r versions of library functions. * This is extremely experimental. */ -/*#define USE_5005THREADS / **/ /*#define USE_ITHREADS / **/ -#if defined(USE_5005THREADS) && !defined(USE_ITHREADS) -#define USE_THREADS /* until src is revised*/ -#endif +/*#define USE_THREADS / **/ /*#define OLD_PTHREADS_API / **/ /*#define USE_REENTRANT_API / **/ @@ -3452,11 +3551,11 @@ * If defined, this symbol contains the name of a private library. * The library is private in the sense that it needn't be in anyone's * execution path, but it should be accessible by the world. - * It may have a ~ on the front. + * It may have a ~ on the front. * The standard distribution will put nothing in this directory. * Vendors who distribute perl may wish to place their own * architecture-dependent modules and extensions in this directory with - * MakeMaker Makefile.PL INSTALLDIRS=vendor + * MakeMaker Makefile.PL INSTALLDIRS=vendor * or equivalent. See INSTALL for details. */ /* PERL_VENDORARCH_EXP: @@ -3549,13 +3648,13 @@ * This symbol, if defined, indicates that the copysignl routine is * available. If aintl is also present we can emulate modfl. */ -/*#define HAS_COPYSIGNL / **/ +/*#define HAS_COPYSIGNL /**/ /* USE_CPLUSPLUS: * This symbol, if defined, indicates that a C++ compiler was * used to compiled Perl and will be used to compile extensions. */ -/*#define USE_CPLUSPLUS / **/ +/*#define USE_CPLUSPLUS /**/ /* HAS_DBMINIT_PROTO: * This symbol, if defined, indicates that the system provides diff -Nru perl-5.32.1/plan9/config_sh.sample perl-5.34.0/plan9/config_sh.sample --- perl-5.32.1/plan9/config_sh.sample 2020-12-18 13:37:32.000000000 +0000 +++ perl-5.34.0/plan9/config_sh.sample 2021-05-04 23:28:28.000000000 +0000 @@ -32,11 +32,11 @@ aphostname='/bin/uname -n' api_revision='5' api_subversion='0' -api_version='32' -api_versionstring='5.32.0' +api_version='34' +api_versionstring='5.34.0' ar='ar' -archlib='/sys/lib/perl5/5.32.1/386' -archlibexp='/sys/lib/perl5/5.32.1/386' +archlib='/sys/lib/perl5/5.34.0/386' +archlibexp='/sys/lib/perl5/5.34.0/386' archname64='' archname='386' archobjs='' @@ -248,6 +248,7 @@ d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='undef' d_getcwd='define' +d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' @@ -818,17 +819,17 @@ inc_version_list_init='0' incpath='' inews='' -installarchlib='/sys/lib/perl/5.32.1/386' +installarchlib='/sys/lib/perl/5.34.0/386' installbin='/usr/bin' installman1dir='/sys/man/1pub' installman3dir='/sys/man/2pub' installprefix='/usr' installprefixexp='/usr' -installprivlib='/sys/lib/perl/5.32.1' +installprivlib='/sys/lib/perl/5.34.0' installscript='/usr/bin' -installsitearch='/sys/lib/perl/5.32.1/site_perl/386' +installsitearch='/sys/lib/perl/5.34.0/site_perl/386' installsitebin='/usr/bin' -installsitelib='/sys/lib/perl/5.32.1/site_perl' +installsitelib='/sys/lib/perl/5.34.0/site_perl' installstyle='lib/perl5' installusrbinperl='undef' installvendorarch='' @@ -953,8 +954,8 @@ pr='' prefix='/usr' prefixexp='/usr' -privlib='/sys/lib/perl/5.32.1' -privlibexp='/sys/lib/perl/5.32.1' +privlib='/sys/lib/perl/5.34.0' +privlibexp='/sys/lib/perl/5.34.0' procselfexe='' prototype='define' ptrsize='4' @@ -1019,13 +1020,13 @@ sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 0' sig_size='50' signal_t='void' -sitearch='/sys/lib/perl/5.32.1/site_perl/386' +sitearch='/sys/lib/perl/5.34.0/site_perl/386' sitearchexp='/sys/lib/perl/site_perl/386' sitebin='/usr/bin' sitebinexp='/usr/bin' -sitelib='/sys/lib/perl/5.32.1/site_perl' -sitelib_stem='/sys/lib/perl/5.32.1/site_perl' -sitelibexp='/sys/lib/perl/5.32.1/site_perl' +sitelib='/sys/lib/perl/5.34.0/site_perl' +sitelib_stem='/sys/lib/perl/5.34.0/site_perl' +sitelibexp='/sys/lib/perl/5.34.0/site_perl' siteprefix='/usr' siteprefixexp='/usr' sizesize='4' @@ -1058,7 +1059,7 @@ strerror_r_proto='0' strings='/sys/include/ape/string.h' submit='' -subversion='1' +subversion='0' sysman='/sys/man/1pub' tail='' tar='' @@ -1091,11 +1092,11 @@ uname='uname' uniq='uniq' uquadtype='unsigned long long' -use5005threads='undef' use64bitall='undef' use64bitint='undef' usecbacktrace='undef' usecrosscompile='undef' +usedefaultstrict='undef' usedevel='undef' usedl='undef' usedtrace='undef' @@ -1139,8 +1140,8 @@ vendorlibexp='' vendorprefix='' vendorprefixexp='' -version='5.32.1' -version_patchlevel_string='version 32 subversion 1' +version='5.34.0' +version_patchlevel_string='version 34 subversion 0' versiononly='undef' vi='' xlibpth='' @@ -1153,10 +1154,10 @@ config_args='' config_argc=0 PERL_REVISION=5 -PERL_VERSION=32 -PERL_SUBVERSION=1 +PERL_VERSION=34 +PERL_SUBVERSION=0 PERL_API_REVISION=5 -PERL_API_VERSION=32 +PERL_API_VERSION=34 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL= PERL_CONFIG_SH=true diff -Nru perl-5.32.1/plan9/exclude perl-5.34.0/plan9/exclude --- perl-5.32.1/plan9/exclude 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/plan9/exclude 2020-10-04 22:17:13.000000000 +0000 @@ -16,3 +16,4 @@ op/oct.t op/split.t op/stat.t +.git diff -Nru perl-5.32.1/plan9/fndvers perl-5.34.0/plan9/fndvers --- perl-5.32.1/plan9/fndvers 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/plan9/fndvers 2020-10-04 22:17:13.000000000 +0000 @@ -12,3 +12,8 @@ g/_P9P_VERSION/s//$p9pvers/g w plan9/genconfig.pl ! + +ed plan9/aperl<) { push(@ARGV,split(/\|/,$_)); } close ARGS; } +my @extensions = @ARGV; if (-f "config.h") { $infile = "config.h"; $outdir = "../"; } elsif (-f "plan9/config.h") { $infile = "plan9/config.h"; $outdir = "./"; } @@ -54,11 +60,9 @@ $cf_by = $ENV{'user'}; ($vers = $]) =~ tr/./_/; -# Plan 9 doesn't actually use version numbering. Following the original Unix -# precedent of assigning a Unix edition number based on the edition number -# of the manuals, I am referring to this as Plan 9, 1st edition. -$osvers = '1'; - +# 9front as Plan 9, 5th edition. +$osvers = '5'; + print OUT <) { - next unless m%^#(?!if).*\$%; + # suicide @ regcomp.c:22117 + #next unless m%^#(?!if).*\$%; + next unless !index($_, '#') && index($_, '#if') == -1 && rindex($_, '$') == length($_)-1; s/^#//; s!(.*?)\s*/\*.*!$1!; my(@words) = split; $words[1] =~ s/\(.*//; # Clip off args from macro @@ -195,7 +204,7 @@ } close SH; } -else { warn "Couldn't read ${outfile}config_h.SH: $!\n"; } +elsif ($VERBOSE) { warn "Couldn't read ${outfile}config_h.SH: $!\n"; } $pp_vars{PLAN9} = 'define'; #Plan 9 specific # OK, now read the C header file, and retcon statements into config.sh @@ -233,7 +242,7 @@ } elsif (not length $val and not $had_val) { # Wups -- should have been shell var for C preprocessor directive - warn "Constant $token not found in config_h.SH\n"; + warn "Constant $token not found in config_h.SH\n" if $VERBOSE; $token =~ tr/A-Z/a-z/; $token = "d_$token" unless $token =~ /^i_/; print OUT "$token='$state'\n"; @@ -248,7 +257,7 @@ delete $val_vars{$token}; } elsif (!$pp_vars{$token}) { # Haven't seen it previously, either - warn "Constant $token not found in config_h.SH (val=|$val|)\n"; + warn "Constant $token not found in config_h.SH (val=|$val|)\n" if $VERBOSE; $token =~ tr/A-Z/a-z/; print OUT "$token='$val'\n"; if ($token =~ s/exp$//) {print OUT "$token='$val'\n";} @@ -256,14 +265,15 @@ } close IN; -foreach (sort keys %pp_vars) { - warn "Didn't see $_ in $infile\n"; -} -foreach (sort keys %val_vars) { - warn "Didn't see $_ in $infile(val)\n"; +if ($VERBOSE) { + foreach (sort keys %pp_vars) { + warn "Didn't see $_ in $infile\n"; + } + foreach (sort keys %val_vars) { + warn "Didn't see $_ in $infile(val)\n"; + } } - # print OUT "libs='",join(' ',@libs),"'\n"; # print OUT "libc='",join(' ',@crtls),"'\n"; @@ -280,10 +290,8 @@ } close PL; } -else { warn "Can't read ${outdir}patchlevel.h - skipping 'PERL_VERSION'"; } +elsif ($VERBOSE) { warn "Can't read ${outdir}patchlevel.h - skipping 'PERL_VERSION'" } print OUT "pager='/bin/p'\n"; close OUT; - - diff -Nru perl-5.32.1/plan9/math.h perl-5.34.0/plan9/math.h --- perl-5.32.1/plan9/math.h 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/plan9/math.h 2020-10-04 22:17:13.000000000 +0000 @@ -0,0 +1,12 @@ +/* Our math.h for HAS_FPCLASSIFY in plan9.config + * FP_NORMAL Normalized + * FP_ZERO Zero + * FP_INFINITE Infinity + * FP_SUBNORMAL Denormalized + * FP_NAN NaN + */ +#define FP_NORMAL 1 +#define FP_ZERO 2 +#define FP_INFINITE 3 +#define FP_SUBNORMAL 4 +#define FP_NAN 5 diff -Nru perl-5.32.1/plan9/mkfile perl-5.34.0/plan9/mkfile --- perl-5.32.1/plan9/mkfile 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/plan9/mkfile 2020-10-04 22:17:13.000000000 +0000 @@ -1,21 +1,42 @@ APE=/sys/src/ape < $APE/config $target - cp ext/IO/*.pm $privlib - if (test !-d $privlib/IO) { - mkdir $privlib/IO - cp ext/IO/lib/IO/*.pm $privlib/IO - } - -Socket.$O: config.h Socket.c - $CCCMD -I plan9 Socket.c - -Socket.c: miniperl ext/Socket/Socket.xs - ./miniperl $privlib/ExtUtils/xsubpp -noprototypes -typemap $privlib/ExtUtils/typemap ext/Socket/Socket.xs > $target - cp ext/Socket/Socket.pm $privlib - -Opcode.c: miniperl ext/Opcode/Opcode.xs - ./miniperl $privlib/ExtUtils/xsubpp -noprototypes -typemap $privlib/ExtUtils/typemap ext/Opcode/Opcode.xs > $target - cp ext/Opcode/*.pm $privlib - -Fcntl.c: miniperl ext/Fcntl/Fcntl.xs - ./miniperl $privlib/ExtUtils/xsubpp -noprototypes -typemap $privlib/ExtUtils/typemap ext/Fcntl/Fcntl.xs > $target - cp ext/Fcntl/Fcntl.pm $privlib - -POSIX.c: miniperl ext/POSIX/POSIX.xs - ./miniperl $privlib/ExtUtils/xsubpp -noprototypes -typemap $privlib/ExtUtils/typemap ext/POSIX/POSIX.xs > $target - cp ext/POSIX/POSIX.pm $privlib - -dl_none.c: miniperl ext/DynaLoader/dl_none.xs - ./miniperl $privlib/ExtUtils/xsubpp -noprototypes -typemap $privlib/ExtUtils/typemap ext/DynaLoader/dl_none.xs > $target - cp ext/DynaLoader/DynaLoader.pm $privlib - -test:V: - bind -b $privlib $sourcedir/lib - bind -b $archlib $sourcedir/lib - cd $sourcedir/t - rm -f perl - cp /$objtype/bin/perl $sourcedir/t +uudmap.h: generate_uudmap.c + $CCCMD generate_uudmap.c + # This is currently a show-stopper for cross-compilation: find the true $objtype by looking at kernel? + $LD $CFLAGS -o generate_uudmap generate_uudmap.$O + chmod +x generate_uudmap + ./generate_uudmap uudmap.h bitcount.h mg_data.h + +extensions:V: miniperl archlib/Config.pm $ext_c dist/XSLoader/XSLoader.pm + +more_extensions:V: perlnosocket $more_ext_c $more_ext_obj + ext_obj=`{echo $ext_obj $more_ext_obj} + +Socket.$O: Socket.c + $XSCCCMD -I plan9 Socket.c + +attributes.$O: attributes.c + $XSCCCMD -I plan9 attributes.c + +mro.$O: mro.c + $XSCCCMD -I plan9 mro.c + +B.$O: B.c + $XSCCCMD -I plan9 B.c + +Peek.$O: Peek.c + $XSCCCMD -I plan9 Peek.c + +Util.$O: Util.c + $XSCCCMD -I plan9 Util.c + +FieldHash.$O: FieldHash.c + $XSCCCMD -I plan9 FieldHash.c + +re.$O: re.c + $XSCCCMD -DPERL_EXT_RE_BUILD -DPERL_EXT_RE_DEBUG -DPERL_EXT -I plan9 re.c + +re_comp.$O: re_comp.c + $XSCCCMD -DPERL_EXT_RE_BUILD -DPERL_EXT_RE_DEBUG -DPERL_EXT -I plan9 re_comp.c + +re_exec.$O: re_exec.c + $XSCCCMD -DPERL_EXT_RE_BUILD -DPERL_EXT_RE_DEBUG -DPERL_EXT -I plan9 re_exec.c + +Cwd.$O: Cwd.c IO.c + cp dist/IO/ppport.h dist/PathTools + $XSCCCMD -DDOUBLE_SLASHES_SPECIAL^'='^0 -I plan9 Cwd.c + +IO.$O: extensions + $XSCCCMD -I plan9 IO.c + +poll.$O: extensions + $XSCCCMD -I plan9 poll.c + +POSIX.$O: extensions + $XSCCCMD -I plan9 POSIX.c + +Glob.$O: extensions + $XSCCCMD -I plan9 Glob.c + +bsd_glob.$O: extensions + $XSCCCMD -I plan9 -I. bsd_glob.c + +Normalize.$O: extensions + $XSCCCMD -I plan9 -I. Normalize.c + +Dumper.$O: Dumper.c + $XSCCCMD -I plan9 -I. Dumper.c + +HiRes.$O: extensions + $XSCCCMD -I plan9 -I. HiRes.c + +Storable.$O: extensions + $XSCCCMD -I plan9 -I. Storable.c + +ListUtil.$O: extensions + $XSCCCMD -I plan9 -I. ListUtil.c + +Opcode.$O: extensions + $XSCCCMD -I plan9 Opcode.c + +Fcntl.$O: extensions + $XSCCCMD -I plan9 Fcntl.c + +dl_none.$O: extensions + $XSCCCMD -I plan9 dl_none.c + +Glob.c: archlib/Config.pm ext/File-Glob/Glob.xs + cd ext/File-Glob + $miniperl Makefile.PL # to write constants + cd $pwd + $miniperlxs ext/File-Glob/Glob.xs > $target + cp ext/File-Glob/bsd_glob.^(c h) $pwd + mkdir -p archlib/File + cp ext/File-Glob/Glob.pm archlib/File/Glob.pm + +ppport.h: archlib/Config.pm + if (test ! -f /bin/sh) bind -a /386/bin/ape /bin + # specify the list, otherwise suicide + $miniperl mkppport --list mkppport.lst + +Cwd.c: archlib/Config.pm dist/PathTools/Cwd.xs + $miniperlxs dist/PathTools/Cwd.xs > $target + cp dist/PathTools/Cwd.pm archlib + { cd dist/PathTools/lib; tar c . } | { mkdir -p archlib; cd archlib; tar x } + +IO.c: archlib/Config.pm dist/IO/IO.xs ppport.h + $miniperlxs dist/IO/IO.xs > $target + cp dist/IO/poll.^(c h) $pwd + cp dist/IO/IO.pm archlib + { cd dist/IO/lib; tar c . } | { mkdir -p archlib; cd archlib; tar x } + +dist/XSLoader/XSLoader.pm: archlib/Config.pm + cd dist/XSLoader + $miniperl XSLoader_pm.PL + cp XSLoader.pm $pwd/archlib + +ext/Errno/Errno.pm: perlnosocket + cd ext/Errno + $perl Makefile.PL + $perl Errno_pm.PL arch.txt + cp Errno.pm $pwd/archlib + +Socket.c: perlnosocket cpan/Socket/Socket.xs ext/Errno/Errno.pm + cd cpan/Socket + $perl Makefile.PL # to write const-xs.inc + cd $pwd + $perlxs cpan/Socket/Socket.xs > $target + cp cpan/Socket/Socket.pm archlib + +uni.data: archlib/Config.pm lib/unicore/mktables + $miniperl lib/unicore/mktables -C lib/unicore -makelist -p + +Normalize.c: archlib/Config.pm dist/Unicode-Normalize/Normalize.xs uni.data + $miniperl dist/Unicode-Normalize/mkheader + $miniperlxs dist/Unicode-Normalize/Normalize.xs > $target + mkdir -p archlib/Unicode + cp dist/Unicode-Normalize/Normalize.pm archlib/Unicode + +Dumper.c: perlnosocket dist/Data-Dumper/Dumper.xs + $perlxs dist/Data-Dumper/Dumper.xs > $target + mkdir -p archlib/Data + cp dist/Data-Dumper/Dumper.pm archlib/Data + +HiRes.c: archlib/Config.pm dist/Time-HiRes/HiRes.xs + cd dist/Time-HiRes + $miniperl Makefile.PL # to write const-xs.inc + cd $pwd + $miniperlxs dist/Time-HiRes/HiRes.xs > $target + mkdir -p archlib/Time + cp dist/Time-HiRes/HiRes.pm archlib/Time + +ListUtil.c: archlib/Config.pm cpan/Scalar-List-Utils/ListUtil.xs + cp cpan/Scalar-List-Utils/multicall.h $pwd + $miniperlxs cpan/Scalar-List-Utils/ListUtil.xs > $target + { cd cpan/Scalar-List-Utils/lib; tar c . } | { mkdir -p archlib; cd archlib; tar x } + +Storable.c: archlib/Config.pm dist/Storable/Storable.xs + $miniperlxs dist/Storable/Storable.xs > $target + cp dist/Storable/Storable.pm archlib + +Opcode.c: archlib/Config.pm ext/Opcode/Opcode.xs + $miniperlxs ext/Opcode/Opcode.xs > $target + cp ext/Opcode/^(Opcode ops)^.pm archlib + +Fcntl.c: archlib/Config.pm ext/Fcntl/Fcntl.xs + cd ext/Fcntl + $miniperl Makefile.PL # to write const-xs.inc + cd $pwd + $miniperlxs ext/Fcntl/Fcntl.xs > $target + cp ext/Fcntl/Fcntl.pm archlib + +POSIX.c: archlib/Config.pm ext/POSIX/POSIX.xs + cd ext/POSIX + $miniperl Makefile.PL # to write const-xs.inc + cd $pwd + $miniperlxs ext/POSIX/POSIX.xs > $target + cp ext/POSIX/lib/POSIX.pm archlib + +B.c: archlib/Config.pm ext/B/B.xs + cd ext/B + $miniperl Makefile.PL PERL_CORE^'='^1 # to write const-xs.inc + cd $pwd + $miniperlxs ext/B/B.xs > $target + cp ext/B/^(B O)^.pm archlib + +Peek.c: archlib/Config.pm ext/Devel-Peek/Peek.xs + $miniperlxs ext/Devel-Peek/Peek.xs > $target + cp ext/Devel-Peek/Peek.pm archlib + +attributes.c: archlib/Config.pm ext/attributes/attributes.xs + $miniperlxs ext/attributes/attributes.xs > $target + cp ext/attributes/attributes.pm archlib + +mro.c: archlib/Config.pm ext/mro/mro.xs + $miniperlxs ext/mro/mro.xs > $target + cp ext/mro/mro.pm archlib + +Util.c: archlib/Config.pm ext/Hash-Util/Util.xs + $miniperlxs ext/Hash-Util/Util.xs > $target + { cd ext/Hash-Util/lib; tar c . } | { cd archlib; tar x } + +FieldHash.c: archlib/Config.pm ext/Hash-Util-FieldHash/FieldHash.xs + $miniperlxs ext/Hash-Util-FieldHash/FieldHash.xs > $target + { cd ext/Hash-Util-FieldHash/lib; tar c . } | { cd archlib; tar x } + +re.c: archlib/Config.pm ext/re/re.xs + $miniperlxs ext/re/re.xs > $target + cp ext/re/re_^(comp top)^.h $pwd + cp ext/re/re.pm archlib + +re_comp.c: miniperl re.c regcomp.c + cp regcomp.c $target + +re_exec.c: miniperl re.c regexec.c + cp regexec.c $target + +dl_none.c: archlib/Config.pm ext/DynaLoader/dl_none.xs + cd ext/DynaLoader; + $miniperl DynaLoader_pm.PL + cd $pwd + $miniperlxs ext/DynaLoader/dl_none.xs > $target + cp ext/DynaLoader/DynaLoader.pm archlib + +preptest:Q: perl + # Bind the crap out of everything, as different tests expect different INCs + cp perl t/perl + cd t + mntpt=/$objtype/lib/perl + if (test ! -d $mntpt ) { + mkdir $mntpt + rmdir=1 + } + ramfs -m $mntpt + mkdir -p $mntpt/5.32.0/site_perl + echo -n Binding directories + for (l in $pwd/lib $pwd/archlib $icpanlib $idistlib $iextlib ) { + if (test -d $l ) { + if (! ~ `{grep $l <{ns} >[1]/dev/null; echo $status} '') bind -a $l $mntpt/5.32.0/site_perl + echo -n . + } + } + bind $mntpt/5.32.0/site_perl $pwd/lib + echo done + echo Binding sh + if (! ~ `{grep /$objtype/bin/ape <{ns} >[1]/dev/null; echo $status} '') bind -a /$objtype/bin/ape /bin + +minitest:V: preptest + cd t + perl TEST $testlist + unmount $pwd/lib + unmount $mntpt + if (~ $rmdir 1) rm $mntpt + rm t/perl + +test:V: preptest + cd t perl TEST `{ ls */*.t | comm -23 - ../plan9/exclude } + unmount $pwd/lib + unmount $mntpt + if (~ $rmdir 1) rm $mntpt + rm t/perl -plan9.$O: config.h ./plan9/plan9.c - cp ./plan9/plan9.c ./plan9.c +plan9.$O: config.h plan9/plan9.c + cp plan9/plan9.c plan9.c $CCCMD plan9.c %.$O: config.h %.c $CCCMD $stem.c -$archlib/Config.pm: miniperl config.sh - ./miniperl configpm $archlib/Config.pm +archlib/Config.pm: config.sh + $miniperl make_patchnum.pl + $miniperl configpm + cp lib/Config.pm archlib/Config.pm + cp lib/Config_heavy.pl archlib/Config_heavy.pl + cp lib/Config_git.pl archlib/Config_git.pl + -config.sh: miniperl config.h - ./miniperl ./plan9/genconfig.pl +config.sh: miniperl + miniperl plan9/genconfig.pl $extensions $more_extensions installall:V: - for (objtype in 386 mips 68020 sparc) mk install + for (386 68000 68020 arm arm amd64 mips power power64 sparc sparc64 spim) mk install man:V: $perlpods pod/pod2man.PL perl perl pod/pod2man.PL @@ -143,8 +425,8 @@ for (i in $histpodnames) pod/pod2man pod/$i.pod > $installman3dir/$i nuke clean:V: - rm -f *.$O $extensions^.pm config.sh $perllib config.h $perlshr perlmain.c perl miniperl $archlib/Config.pm $ext_c - rm -rf $privlib/IO + rm -f *.$O config.sh $perllib config.h $perlshr perlmain.c perl miniperl git_version.h $ext_c $more_ext_c generate_uudmap uudmap.h bitcount.h mg_data.h plan9.c plan9ish.h math.h bsd_glob.^(c h) poll.^(c h) re_*.^(c h) uni.data multicall.h + rm -rf privlib archlib deleteman:V: rm -f $installman1dir/perl* $installman3dir/perl* diff -Nru perl-5.32.1/plan9/plan9.c perl-5.34.0/plan9/plan9.c --- perl-5.32.1/plan9/plan9.c 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/plan9/plan9.c 2021-01-20 23:04:44.000000000 +0000 @@ -1,20 +1,31 @@ #include "EXTERN.h" #include "perl.h" +#include "./plan9/math.h" -/* Functions mentioned in but not implemented */ +#define _PLAN9_SOURCE +#include -int getsockopt(int a, int b, int c, void *d, int *e) -{ - croak("Function \"getsockopt\" not implemented in this version of perl."); - return (int)NULL; -} +/** Function fpclassify(double) is required by sv.c, which was refactored in perl-5.24 era and uses other libraries to classify floating points. **/ -int setsockopt(int a, int b, int c, void *d, int *e) -{ - croak("Function \"setsockopt\" not implemented in this version of perl."); - return (int)NULL; +/* See /sys/src/lib/port/frexp.c */ +#define SHIFT 20 + +int fpclassify(double d) { + FPdbleword x; + + /* order matters: only isNaN can operate on NaN */ + if ( isNaN(d) ) + return FP_NAN; + else if ( isInf(d, 0) ) + return FP_INFINITE; + else if ( d == 0 ) + return FP_ZERO; + + x.x = fabs(d); + return (x.hi >> SHIFT) ? FP_NORMAL : FP_SUBNORMAL; } +/* Functions mentioned in /sys/include/ape/sys/socket.h but not implemented */ int recvmsg(int a, struct msghdr *b, int c) { @@ -29,7 +40,7 @@ } -/* Functions mentioned in but not implemented */ +/* Functions mentioned in /sys/include/ape/sys/netdb.h but not implemented */ struct netent *getnetbyname(const char *a) { croak("Function \"getnetbyname\" not implemented in this version of perl."); @@ -112,23 +123,3 @@ { croak("Function \"endservent\" not implemented in this version of perl."); } - -int tcdrain(int) -{ -croak("Function \"tcdrain\" not implemented in this version of perl."); -} - -int tcflow(int, int) -{ -croak("Function \"tcflow\" not implemented in this version of perl."); -} - -int tcflush(int, int) -{ -croak("Function \"tcflush\" not implemented in this version of perl."); -} - -int tcsendbreak(int, int) -{ -croak("Function \"tcsendbreak\" not implemented in this version of perl."); -} diff -Nru perl-5.32.1/plan9/plan9ish.h perl-5.34.0/plan9/plan9ish.h --- perl-5.32.1/plan9/plan9ish.h 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/plan9/plan9ish.h 2021-01-20 23:04:44.000000000 +0000 @@ -25,14 +25,14 @@ * getgrgid() routines are available to get group entries. * The getgrent() has a separate definition, HAS_GETGRENT. */ -/*#define HAS_GROUP / **/ +/*#define HAS_GROUP /**/ /* HAS_PASSWD * This symbol, if defined, indicates that the getpwnam() and * getpwuid() routines are available to get password entries. * The getpwent() has a separate definition, HAS_GETPWENT. */ -/*#define HAS_PASSWD / **/ +/*#define HAS_PASSWD /**/ #define HAS_KILL #define HAS_WAIT @@ -42,7 +42,7 @@ * to remove all versions of a file if unlink() is called. This is * probably only relevant for VMS. */ -/* #define UNLINK_ALL_VERSIONS / **/ +/* #define UNLINK_ALL_VERSIONS /**/ /* PLAN9: * This symbol, if defined, indicates that the program is running under @@ -105,7 +105,7 @@ #define BIT_BUCKET "/dev/null" #define PERL_SYS_INIT_BODY(c,v) \ - MALLOC_CHECK_TAINT2(*c,*v) PERLIO_INIT; MALLOC_INIT + MALLOC_CHECK_TAINT2(*c,*v) PERLIO_INIT; MALLOC_INIT #define dXSUB_SYS dNOOP #define PERL_SYS_TERM_BODY() PERLIO_TERM; MALLOC_TERM diff -Nru perl-5.32.1/plan9/setup.rc perl-5.34.0/plan9/setup.rc --- perl-5.32.1/plan9/setup.rc 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/plan9/setup.rc 2020-10-04 22:17:13.000000000 +0000 @@ -1,51 +1,59 @@ #!/bin/rc -# This is an rc shell script which unpacks the perl distribution, builds -# directories, and puts files where they belong. -# To use, just run it from within the plan9 subdirectory with the appropriate -# permissions. -# Last modified 6/30/96 by: +# This is an rc shell script puts files where they belong and does a bit of +# patching in order not to modify some perl core code which might impact other +# OSes. To use, just run it from within the plan9 subdirectory with the +# appropriate permissions. +# First modified 6/30/96 by: # Luther Huffman, Strategic Computer Solutions, Inc., lutherh@stratcom.com +# Last modified May 2020 by: +# David Romano, unobe@cpan.org +# Get the Perl version information awk -f versnum ../patchlevel.h . buildinfo -builddir = `{ cd .. ; pwd } + +builddir = `{ cd .. ; pwd } + +# 'typestr' is used by /sys/src/cmd/cc/lex.c, but not sure when/if it is ever used. +# Patch sv.c from afar, which uses 'typestr' as a variable name, and uses bit-fields. +# Also patch some other things: +status=`{cd $builddir; ape/patch -p1 [1=2] ; exit } -sourcedir=/sys/src/cmd/perl/$p9pvers -privlib=/sys/lib/perl -sitelib=$privlib/site_perl -#Build source directory -if (test ! -d /sys/src/cmd/perl) mkdir /sys/src/cmd/perl -if (test ! -d $sourcedir) mkdir $sourcedir - -#Populate source directory -echo Building source directories ... -{cd $builddir ; tar c .} | { cd $sourcedir ; tar x} -cp $builddir/plan9/plan9.c $builddir/plan9/plan9ish.h $builddir/plan9/mkfile $sourcedir -cd $sourcedir/lib ; rm -rf * +# Update some files +cp plan9.c plan9ish.h mkfile $builddir -#Build library directories +exit; +# Why is this done during setup and not during 'mk install'? +# Build library directories echo Building library directories ... +privroot=/sys/lib/perl +privlib=$privroot/$p9pvers +sitelib=$privlib/site_perl + +if (test ! -d $privroot) mkdir $privroot if (test ! -d $privlib) mkdir $privlib if (test ! -d $privlib/auto) mkdir $privlib/auto if (test ! -d $sitelib) mkdir $sitelib for(i in $platforms){ - archlib=/$i/lib/perl/$p9pvers + archroot=/$i/lib/perl + archlib=$archroot/$p9pvers sitearch=$archlib/site_perl corelib=$archlib/CORE arpalib=$corelib/arpa - if (test ! -d /$i/lib/perl) mkdir /$i/lib/perl + if (test ! -d $archroot) mkdir $archroot if (test ! -d $archlib) mkdir $archlib if (test ! -d $sitearch) mkdir $sitearch if (test ! -d $corelib) mkdir $corelib if (test ! -d $arpalib) mkdir $arpalib - cp $builddir/*.h $builddir/plan9/*.h $corelib - cp $builddir/plan9/arpa/*.h $arpalib + cp $builddir/*.h *.h $corelib + cp arpa/*.h $arpalib } -#Populate library directories +# Populate library directories {cd $builddir/lib ; tar c . } | {cd $privlib ; tar x } diff -Nru perl-5.32.1/plan9/uninstall.rc perl-5.34.0/plan9/uninstall.rc --- perl-5.32.1/plan9/uninstall.rc 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/plan9/uninstall.rc 2020-10-04 22:17:13.000000000 +0000 @@ -0,0 +1,25 @@ +#!/bin/rc + +. buildinfo +if (~ $#* 0) platforms = $objtype +if not switch($1) { + case -a ; platforms = (386 68000 68020 arm arm amd64 mips power power64 sparc sparc64 spim) + case * ; echo 'Usage: uninstall.rc [-a]' >[1=2] ; exit +} +sourceroot=/sys/src/cmd/perl +sourcedir=$sourceroot/$p9pvers +privroot=/sys/lib/perl +privlib=$privroot/$p9pvers +sitelib=$privlib/site_perl + +echo Uninstalling perl/$p9pvers +cd $sourceroot + +for(i in $platforms){ + archroot=/$i/lib/perl + archlib=$archroot/$p9pvers + if (test -d $archlib) rm -r $archlib + rm /$i/bin/perl-$p9pvers +} +if (test -d $privlib) rm -r $privlib +if (test -d $sourcedir) rm -r $sourcedir diff -Nru perl-5.32.1/plan9/versnum perl-5.34.0/plan9/versnum --- perl-5.32.1/plan9/versnum 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/plan9/versnum 2020-10-04 22:17:13.000000000 +0000 @@ -1,8 +1,9 @@ -/PERL_VERSION/ {base = $3} -/PERL_SUBVERSION/ {subvers = $3} +/define PERL_REVISION/ {revision = $3} +/define PERL_VERSION/ {version = $3} +/define PERL_SUBVERSION/ {subvers = $3} END { if (subvers == 0) - printf "p9pvers = 5.%03d\n", base> "buildinfo"; + printf "p9pvers = %d.%d\n", revision, version> "buildinfo"; else - printf "p9pvers = 5.%03d_%02d\n" , base, subvers> "buildinfo"; + printf "p9pvers = %d.%d.%d\n" , revision, version, subvers> "buildinfo"; } diff -Nru perl-5.32.1/pod/buildtoc perl-5.34.0/pod/buildtoc --- perl-5.32.1/pod/buildtoc 2020-12-18 09:58:50.000000000 +0000 +++ perl-5.34.0/pod/buildtoc 2021-01-20 23:04:44.000000000 +0000 @@ -275,4 +275,42 @@ $initem = 0; } +=head1 NAME + +pod/buildtoc - Generate table of contents + +=head1 DESCRIPTION + +This program generates a table of contents for the documentation included in the Perl core distribution. This table of contents takes two forms: + +=over 4 + +=item 1 F + +A file in Perl's Plain Old Documentation (POD) format found in the F directory in the core distribution. Once Perl is installed, this file becomes accessible system-wide via C. + +=item 2 F + +A shell script originally written by Tom Christiansen and Raphael Manfredi, also found in the F directory, which can be used to translate Perl documentation into F pages. + +=back + +=head1 USAGE + +This program will typically B need to be called directly by a user. Rather, it is one of the last commands invoked during C: + + ./perl -Ilib -I. -f pod/buildtoc -q + +The only command-line switch is C<-q|--quiet>, which quiets some non-critical warnings. + +=head2 Diagnosing Problems + +This program Cs F and makes use of several subroutines found in that file: C and C in particular. Consequently, any warnings or exceptions you see when this program is running may be being passed through from those subroutines. You may have to (a) examine those subroutines and/or (b) run that program from the command-line to fully understand what is causing such warnings or exceptions. + +=head2 AUTHORS and MAINTENANCE + +This program was introduced into the Perl 5 core distribution by Andy Dougherty, based on earlier work by Tom Christiansen. It is maintained by the Perl 5 Porters. + +=cut + # ex: set ts=8 sts=4 sw=4 et: diff -Nru perl-5.32.1/pod/perl5100delta.pod perl-5.34.0/pod/perl5100delta.pod --- perl-5.32.1/pod/perl5100delta.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perl5100delta.pod 2020-10-24 18:43:34.000000000 +0000 @@ -290,7 +290,7 @@ names as well. On the NTFS file system these short names can always be represented in the ANSI codepage. This will not be true for all other file system drivers; e.g. the FAT filesystem stores short filenames in the OEM -codepage, so some files on FAT volumes remain unaccessible through the +codepage, so some files on FAT volumes remain inaccessible through the ANSI APIs. Similarly, $^X, @INC, and $ENV{PATH} are preprocessed at startup to make diff -Nru perl-5.32.1/pod/perl5120delta.pod perl-5.34.0/pod/perl5120delta.pod --- perl-5.32.1/pod/perl5120delta.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perl5120delta.pod 2020-10-04 22:17:13.000000000 +0000 @@ -573,7 +573,7 @@ symbols. It is now deprecated to make names that don't begin with an alphabetic character, and aren't alphanumeric or contain other than a very few other characters, namely spaces, dashes, parentheses -and colons. Because of the added meaning of C<\N> (See L +and colons. Because of the added meaning of C<\N> (See C experimental regex escape>), names that look like curly brace -enclosed quantifiers won't work. For example, C<\N{3,4}> now means to match 3 to 4 non-newlines; before a custom name C<3,4> could have been created. diff -Nru perl-5.32.1/pod/perl5121delta.pod perl-5.34.0/pod/perl5121delta.pod --- perl-5.32.1/pod/perl5121delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5121delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -10,7 +10,7 @@ the 5.12.1 release. If you are upgrading from an earlier release such as 5.10.1, first read -L, which describes differences between 5.10.1 and +L, which describes differences between 5.10.0 and 5.12.0. =head1 Incompatible Changes @@ -46,7 +46,7 @@ =item * -We upgraded L to version 3.49 to incorporate fixes for regressions +We upgraded L to version 3.49 to incorporate fixes for regressions introduced in the release we shipped with Perl 5.12.0. =item * @@ -70,7 +70,7 @@ =item * -We added the new maintenance release policy to L +We added the new maintenance release policy to L =item * @@ -79,7 +79,7 @@ =item * -We added a missing explanation for a warning about C<:=> to L +We added a missing explanation for a warning about C<:=> to L =item * @@ -91,11 +91,11 @@ =item * -We fixed a minor error in L. +We fixed a minor error in L. =item * -We replaced a mention of the now-obsolete L with F/F. +We replaced a mention of the now-obsolete L with F/F. =item * @@ -103,11 +103,11 @@ =item * -We corrected L which had unintentionally omitted a number of modules. +We corrected L which had unintentionally omitted a number of modules. =item * -We updated the documentation for 'require' in L relating to putting Perl code in @INC. +We updated the documentation for 'require' in L relating to putting Perl code in @INC. =item * @@ -115,11 +115,11 @@ =item * -We fixed an F example in L. +We fixed an F example in L. =item * -We filled in a blank in L with the release date of Perl 5.12. +We filled in a blank in L with the release date of Perl 5.12. =item * @@ -127,7 +127,7 @@ =item * -The documentation for L incorrectly stated that the $Carp::Verbose +The documentation for L incorrectly stated that the $Carp::Verbose variable makes cluck generate stack backtraces. =item * @@ -136,11 +136,11 @@ =item * -We improved documentation of case-changing functions in L +We improved documentation of case-changing functions in L =item * -We corrected L to contain the correct version of the GNU +We corrected L to contain the correct version of the GNU General Public License. @@ -195,7 +195,7 @@ TOPs only if we're sure that we're not stat'ing the _ filehandle. This is indicated by OPf_KIDS (as checked in ck_ftst). -See also: L +See also: L =item * @@ -219,7 +219,7 @@ XS code using C or C: on Windows could cause an error due to their arguments being swapped. -See also: L +See also: L =item * @@ -228,14 +228,14 @@ last line of a file and the line ended with a statement that lacked a terminating semicolon. -See also: L +See also: L =item * We fixed a bug that could cause \N{} constructs followed by a single . to be parsed incorrectly. -See also: L +See also: L =item * @@ -243,21 +243,21 @@ We fixed a bug that caused when(scalar) without an argument not to be treated as a syntax error. -See also: L +See also: L =item * We fixed a regression in the handling of labels immediately before string evals that was introduced in Perl 5.12.0. -See also: L +See also: L =item * We fixed a regression in case-insensitive matching of folded characters in regular expressions introduced in Perl 5.10.1. -See also: L +See also: L =back @@ -342,7 +342,7 @@ foo { ... $_ ...} list -See also: L +See also: L =item * diff -Nru perl-5.32.1/pod/perl5122delta.pod perl-5.34.0/pod/perl5122delta.pod --- perl-5.32.1/pod/perl5122delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5122delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -10,7 +10,7 @@ the 5.12.2 release. If you are upgrading from an earlier major version, such as 5.10.1, -first read L, which describes differences between 5.10.1 +first read L, which describes differences between 5.10.0 and 5.12.0, as well as L, which describes earlier changes in the 5.12 stable release series. @@ -207,7 +207,7 @@ on the stack wasn't the regular expression it expected. C would return both the unpacked result and the checksum on the stack, as would C. -L<[perl #73814]|http://rt.perl.org/rt3/Ticket/Display.html?id=73814> +L<[GH #10257]|https://github.com/Perl/perl5/issues/10257> =item * @@ -233,7 +233,7 @@ When matching unicode strings under some conditions inappropriate backtracking would result in a C error. This should no longer occur. -See L<[perl #75680]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75680> +See L<[GH #10434]|https://github.com/Perl/perl5/issues/10434> =back diff -Nru perl-5.32.1/pod/perl5140delta.pod perl-5.34.0/pod/perl5140delta.pod --- perl-5.32.1/pod/perl5140delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5140delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -723,7 +723,7 @@ glob is made an alias to C<*bar>. Then it is discarded. So the second assignment has no effect. -See L for +See L for more detail. =head3 Magic variables outside the main package @@ -4441,7 +4441,7 @@ foo { ... $_ ...} list -See also: L +See also: L =item * diff -Nru perl-5.32.1/pod/perl5160delta.pod perl-5.34.0/pod/perl5160delta.pod --- perl-5.32.1/pod/perl5160delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5160delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -654,7 +654,7 @@ Swapping of $< and $> For more information about this future deprecation, see L. +ticket|https://github.com/Perl/perl5/issues/11547>. =item * diff -Nru perl-5.32.1/pod/perl5180delta.pod perl-5.34.0/pod/perl5180delta.pod --- perl-5.32.1/pod/perl5180delta.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perl5180delta.pod 2020-10-24 18:43:34.000000000 +0000 @@ -792,7 +792,7 @@ We believe that Perl has long been unable to build on mixed endian architectures (such as PDP-11s), and intend to remove any remaining -support code. Similarly, code supporting the long umaintained GNU +support code. Similarly, code supporting the long unmaintained GNU dld will be removed soon if no-one makes themselves known as an active user. diff -Nru perl-5.32.1/pod/perl5184delta.pod perl-5.34.0/pod/perl5184delta.pod --- perl-5.32.1/pod/perl5184delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5184delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -45,12 +45,12 @@ =item * Introduced by -L, a memory +L<[GH #12161]|https://github.com/Perl/perl5/issues/12161>, a memory leak on every call to C and backticks (C< `` >), on most Win32 Perls starting from 5.18.0 has been fixed. The memory leak only occurred if you enabled pseudo-fork in your build of Win32 Perl, and were running that build on Server 2003 R2 or newer OS. The leak does not appear on WinXP SP3. -[L] +L<[GH #13741]|https://github.com/Perl/perl5/issues/13741> =back diff -Nru perl-5.32.1/pod/perl5200delta.pod perl-5.34.0/pod/perl5200delta.pod --- perl-5.32.1/pod/perl5200delta.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perl5200delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -1854,7 +1854,7 @@ L has been modified to supply the report template with CRLF line endings on Windows. -[L] +L<[GH #13612]|https://github.com/Perl/perl5/issues/13612> =item * @@ -1976,7 +1976,7 @@ go away), F now adds B<-fwrapv> unless the user requests B<-fno-wrapv>, which disables B<-fwrapv>, or B<-fsanitize=undefined>, which turns the overflows B<-fwrapv> ignores into runtime errors. -[L] +L<[GH #13690]|https://github.com/Perl/perl5/issues/13690> =back @@ -2190,7 +2190,7 @@ (time savings in the region of 30-40% are typically seen) by reducing the number of, usually failing, I/O calls for each L|perlfunc/require> (for B only). -[L] +L<[GH #13566]|https://github.com/Perl/perl5/issues/13566> =item * @@ -2198,7 +2198,7 @@ a bug in which the timeout monitor used for tests could not be cancelled once the test completes, and the full timeout period elapsed before running the next test file. -[L] +L<[GH #13647]|https://github.com/Perl/perl5/issues/13647> =item * @@ -2209,7 +2209,7 @@ C was passed 2 invalid PIDs then it returned 2 instead of 0. This has probably been the case since the process tree kill feature was implemented on Win32. It has now been corrected to follow the documented behaviour. -[L] +L<[GH #13595]|https://github.com/Perl/perl5/issues/13595> =item * @@ -2217,7 +2217,7 @@ used during the build process, could lead to a 4GB B being created. This has now been fixed. (Note that B itself was unaffected, but obviously B would have been completely broken.) -[L] +L<[GH #13677]|https://github.com/Perl/perl5/issues/13677> =item * @@ -2226,30 +2226,30 @@ of perl's source files. Earlier B versions were also affected when using version 4 of the w32api package. Versions of B available from L were not affected. -[L] +L<[GH #13733]|https://github.com/Perl/perl5/issues/13733> =item * The test harness now has no failures when perl is built on a FAT drive with the Windows OS on an NTFS drive. -[L] +L<[GH #6348]|https://github.com/Perl/perl5/issues/6348> =item * When cloning the context stack in fork() emulation, Perl_cx_dup() would crash accessing parameter information for context stack entries that included no parameters, as with C<&foo;>. -[L] +L<[GH #13763]|https://github.com/Perl/perl5/issues/13763> =item * Introduced by -L, a memory +L<[GH #12161]|https://github.com/Perl/perl5/issues/12161>, a memory leak on every call to C and backticks (C< `` >), on most Win32 Perls starting from 5.18.0 has been fixed. The memory leak only occurred if you enabled pseudo-fork in your build of Win32 Perl, and were running that build on Server 2003 R2 or newer OS. The leak does not appear on WinXP SP3. -[L] +L<[GH #13741]|https://github.com/Perl/perl5/issues/13741> =back @@ -2497,7 +2497,7 @@ getter type Sv*V* macros, which check for NULL B dereferencing and checking the SV's flags through public API Sv*OK* macros or directly using private API C, and if C is NULL, then calling the sv_2*v functions -with a NULL litteral or passing the C containing a NULL value. +with a NULL literal or passing the C containing a NULL value. =item * @@ -2914,7 +2914,7 @@ In Perl v5.18.0 dualvars that had an empty string for the string part but a non-zero number for the number part starting being treated as true. In previous versions they were treated as false, the string representation -taking precedeence. The old behaviour has been restored. [RT #118159] +taking precedence. The old behaviour has been restored. [RT #118159] =item * @@ -3544,7 +3544,7 @@ interpreted as the beginning of a block prior to v5.18. In Perl v5.18, it started being treated as an ambiguous token. The parser would guess whether it was supposed to be an anonymous hash constructor or a block -based on the contents. Now the previous behavious has been restored. +based on the contents. Now the previous behaviour has been restored. [perl #119973] =item * @@ -3591,7 +3591,7 @@ =item * L is known to fail tests on AIX 5.3. There is -L in the request +L in the request tracker, #120835, which may be applied to future releases. =item * diff -Nru perl-5.32.1/pod/perl5201delta.pod perl-5.34.0/pod/perl5201delta.pod --- perl-5.32.1/pod/perl5201delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5201delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -27,13 +27,13 @@ An optimization to avoid problems with COW and deliberately overallocated PVs has been disabled because it interfered with another, more important, optimization, causing a slowdown on some platforms. -L<[perl #121975]|https://rt.perl.org/Ticket/Display.html?id=121975> +L<[GH #13878]|https://github.com/Perl/perl5/issues/13878> =item * Returning a string from a lexical variable could be slow in some cases. This has now been fixed. -L<[perl #121977]|https://rt.perl.org/Ticket/Display.html?id=121977> +L<[GH #13880]|https://github.com/Perl/perl5/issues/13880> =back @@ -80,7 +80,7 @@ Fallbacks are now in place when cross-compiling for Android and C<$Config::Config{sh}> is not yet defined. -L<[perl #121963]|https://rt.perl.org/Ticket/Display.html?id=121963> +L<[GH #13872]|https://github.com/Perl/perl5/issues/13872> =item * @@ -108,7 +108,7 @@ This is problematic when parsing version strings if the locale's numeric separator has been changed. Version parsing has been patched to ensure it handles the locales correctly. -L<[perl #121930]|https://rt.perl.org/Ticket/Display.html?id=121930> +L<[GH #13863]|https://github.com/Perl/perl5/issues/13863> =back @@ -124,7 +124,7 @@ C - Emphasize that this returns the highest index in the array, not the size of the array. -L<[perl #120386]|https://rt.perl.org/Ticket/Display.html?id=120386> +L<[GH #13377]|https://github.com/Perl/perl5/issues/13377> =item * @@ -134,7 +134,7 @@ C - Fix documentation to mention the use of C instead of C. -L<[perl #121869]|https://rt.perl.org/Ticket/Display.html?id=121869> +L<[GH #13835]|https://github.com/Perl/perl5/issues/13835> =item * @@ -154,25 +154,25 @@ C<-l> now notes that it will return false if symlinks aren't supported by the file system. -L<[perl #121523]|https://rt.perl.org/Ticket/Display.html?id=121523> +L<[GH #13695]|https://github.com/Perl/perl5/issues/13695> =item * Note that C, C and C may produce different orderings for tied hashes compared to other perl hashes. -L<[perl #121404]|https://rt.perl.org/Ticket/Display.html?id=121404> +L<[GH #13650]|https://github.com/Perl/perl5/issues/13650> =item * Note that C and C may fall back to the shell on Win32. Only C and C indirect object syntax will reliably avoid using the shell. This has also been noted in L. -L<[perl #122046]|https://rt.perl.org/Ticket/Display.html?id=122046> +L<[GH #13907]|https://github.com/Perl/perl5/issues/13907> =item * Clarify the meaning of C. -L<[perl #122132]|https://rt.perl.org/Ticket/Display.html?id=122132> +L<[GH #13938]|https://github.com/Perl/perl5/issues/13938> =back @@ -183,7 +183,7 @@ =item * Explain various ways of modifying an existing SV's buffer. -L<[perl #116925]|https://rt.perl.org/Ticket/Display.html?id=116925> +L<[GH #12813]|https://github.com/Perl/perl5/issues/12813> =back @@ -256,7 +256,7 @@ Building Perl no longer writes to the source tree when configured with F's B<-Dmksymlinks> option. -L<[perl #121585]|https://rt.perl.org/Ticket/Display.html?id=121585> +L<[GH #13712]|https://github.com/Perl/perl5/issues/13712> =back @@ -314,13 +314,13 @@ A bug has been fixed where zero-length assertions and code blocks inside of a regex could cause C to see an incorrect value. -L<[perl #122460]|https://rt.perl.org/Ticket/Display.html?id=122460> +L<[GH #14016]|https://github.com/Perl/perl5/issues/14016> =item * Using C on tainted utf8 strings could issue bogus "Malformed UTF-8 character (unexpected end of string)" warnings. This has now been fixed. -L<[perl #122148]|https://rt.perl.org/Ticket/Display.html?id=122148> +L<[GH #13948]|https://github.com/Perl/perl5/issues/13948> =item * diff -Nru perl-5.32.1/pod/perl5202delta.pod perl-5.34.0/pod/perl5202delta.pod --- perl-5.32.1/pod/perl5202delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5202delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -29,7 +29,7 @@ L has been upgraded from version 0.22 to 0.23. The usage of C in the XS has been corrected. -L<[perl #122701]|https://rt.perl.org/Ticket/Display.html?id=122701> +L<[GH #14072]|https://github.com/Perl/perl5/issues/14072> =item * @@ -58,7 +58,7 @@ L has been upgraded from version 1.37 to 1.38. Document the limitations of the connected() method. -L<[perl #123096]|https://rt.perl.org/Ticket/Display.html?id=123096> +L<[GH #14199]|https://github.com/Perl/perl5/issues/14199> =item * @@ -78,7 +78,7 @@ Reading from a position well past the end of the scalar now correctly returns end of file. -L<[perl #123443]|https://rt.perl.org/Ticket/Display.html?id=123443> +L<[GH #14342]|https://github.com/Perl/perl5/issues/14342> Seeking to a negative position still fails, but no longer leaves the file position set to a negation location. @@ -147,7 +147,7 @@ =item * An ambiguity in the documentation of the ellipsis statement has been corrected. -L<[perl #122661]|https://rt.perl.org/Ticket/Display.html?id=122661> +L<[GH #14054]|https://github.com/Perl/perl5/issues/14054> =back @@ -180,7 +180,7 @@ =item * The test script F has been added to verify that -L remains +L<[GH #14081]|https://github.com/Perl/perl5/issues/14081> remains fixed. =back @@ -199,7 +199,7 @@ =item * AIX now sets the length in C<< getsockopt >> correctly. -L<[perl #120835]|https://rt.perl.org/Ticket/Display.html?id=120835>, +L<[GH #13484]|https://github.com/Perl/perl5/issues/13484>, L<[cpan #91183]|https://rt.cpan.org/Ticket/Display.html?id=91183>, L<[cpan #85570]|https://rt.cpan.org/Ticket/Display.html?id=85570> @@ -208,7 +208,7 @@ In Perl 5.20.0, C<$^N> accidentally had the internal UTF8 flag turned off if accessed from a code block within a regular expression, effectively UTF8-encoding the value. This has been fixed. -L<[perl #123135]|https://rt.perl.org/Ticket/Display.html?id=123135> +L<[GH #14211]|https://github.com/Perl/perl5/issues/14211> =item * @@ -219,14 +219,14 @@ An assertion failure when parsing C with debugging enabled has been fixed. -L<[perl #122771]|https://rt.perl.org/Ticket/Display.html?id=122771> +L<[GH #14087]|https://github.com/Perl/perl5/issues/14087> =item * Loading UTF8 tables during a regular expression match could cause assertion failures under debugging builds if the previous match used the very same regular expression. -L<[perl #122747]|https://rt.perl.org/Ticket/Display.html?id=122747> +L<[GH #14081]|https://github.com/Perl/perl5/issues/14081> =item * @@ -235,33 +235,33 @@ introduced in Perl 5.20, would happen mostly for long strings (1250 chars or more), but could happen for any strings under builds with copy-on-write disabled. -L<[perl #123029]|https://rt.perl.org/Ticket/Display.html?id=123029> +L<[GH #14175]|https://github.com/Perl/perl5/issues/14175> =item * Fixed a bug that could cause perl to execute an infinite loop during compilation. -L<[perl #122995]|https://rt.perl.org/Ticket/Display.html?id=122995> +L<[GH #14165]|https://github.com/Perl/perl5/issues/14165> =item * On Win32, restoring in a child pseudo-process a variable that was Ced in a parent pseudo-process before the C happened caused memory corruption and a crash in the child pseudo-process (and therefore OS process). -L<[perl #40565]|https://rt.perl.org/Ticket/Display.html?id=40565> +L<[GH #8641]|https://github.com/Perl/perl5/issues/8641> =item * Tainted constants evaluated at compile time no longer cause unrelated statements to become tainted. -L<[perl #122669]|https://rt.perl.org/Ticket/Display.html?id=122669> +L<[GH #14059]|https://github.com/Perl/perl5/issues/14059> =item * Calling C on a format with a C<^**> field could produce a panic in sv_chop() if there were insufficient arguments or if the variable used to fill the field was empty. -L<[perl #123245]|https://rt.perl.org/Ticket/Display.html?id=123245> +L<[GH #14255]|https://github.com/Perl/perl5/issues/14255> =item * @@ -269,7 +269,7 @@ keyword started chopping of the last 6 characters and treating the result as a sort sub name. The previous behaviour of treating "CORE::fake" as a sort sub name has been restored. -L<[perl #123410]|https://rt.perl.org/Ticket/Display.html?id=123410> +L<[GH #14323]|https://github.com/Perl/perl5/issues/14323> =item * @@ -278,30 +278,30 @@ while taking into account the current POSIX locale (this usually means they have to be compiled within the scope of C>), and there must be a string of at least 128 consecutive bytes to match. -L<[perl #123539]|https://rt.perl.org/Ticket/Display.html?id=123539> +L<[GH #14389]|https://github.com/Perl/perl5/issues/14389> =item * C no longer dies with "Bizarre copy of ARRAY". -L<[perl #123344]|https://rt.perl.org/Ticket/Display.html?id=123344> +L<[GH #14292]|https://github.com/Perl/perl5/issues/14292> =item * C no longer crashes with not-a-number values. -L<[perl #123495]|https://rt.perl.org/Ticket/Display.html?id=123495> +L<[GH #14365]|https://github.com/Perl/perl5/issues/14365> =item * Certain syntax errors in substitutions, such as C<< s/${<>{})// >>, would crash, and had done so since Perl 5.10. (In some cases the crash did not start happening until Perl 5.16.) The crash has, of course, been fixed. -L<[perl #123542]|https://rt.perl.org/Ticket/Display.html?id=123542> +L<[GH #14391]|https://github.com/Perl/perl5/issues/14391> =item * A memory leak in some regular expressions, introduced in Perl 5.20.1, has been fixed. -L<[perl #123198]|https://rt.perl.org/Ticket/Display.html?id=123198> +L<[GH #14236]|https://github.com/Perl/perl5/issues/14236> =item * @@ -309,14 +309,14 @@ pp_formline() didn't set the pointer used to mark the chop position, which led to the C case crashing with a segmentation fault. This has been fixed. -L<[perl #123538]|https://rt.perl.org/Ticket/Display.html?id=123538> -L<[perl #123622]|https://rt.perl.org/Ticket/Display.html?id=123622> +L<[GH #14388]|https://github.com/Perl/perl5/issues/14388> +L<[GH #14425]|https://github.com/Perl/perl5/issues/14425> =item * A possible buffer overrun and crash when parsing a literal pattern during regular expression compilation has been fixed. -L<[perl #123604]|https://rt.perl.org/Ticket/Display.html?id=123604> +L<[GH #14416]|https://github.com/Perl/perl5/issues/14416> =back @@ -341,7 +341,7 @@ 5.20.1 as well as here) in which a UTF-8 encoded regular expression pattern that contains a single ASCII lowercase letter does not match its uppercase counterpart. -L<[perl #122655]|https://rt.perl.org/Ticket/Display.html?id=122655> +L<[GH #14051]|https://github.com/Perl/perl5/issues/14051> =back diff -Nru perl-5.32.1/pod/perl5203delta.pod perl-5.34.0/pod/perl5203delta.pod --- perl-5.32.1/pod/perl5203delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5203delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -30,7 +30,7 @@ Add B<-P> to the pre-processor command-line on GCC 5. GCC added extra line directives, breaking parsing of error code definitions. -L<[perl #123784]|https://rt.perl.org/Ticket/Display.html?id=123784> +L<[GH #14491]|https://github.com/Perl/perl5/issues/14491> =item * @@ -43,7 +43,7 @@ L has been upgraded from 1.44 to 1.44_01. The debugger would cause an assertion failure. -L<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127> +L<[GH #14605]|https://github.com/Perl/perl5/issues/14605> =back @@ -106,7 +106,7 @@ B now handles hexadecimal constants in the compiler's predefined macro definitions, as visible in C<$Config{cppsymbols}>. -L<[perl #123784]|https://rt.perl.org/Ticket/Display.html?id=123784> +L<[GH #14491]|https://github.com/Perl/perl5/issues/14491> =back @@ -149,7 +149,7 @@ B is now built with B<-fno-strict-aliasing>, allowing 64-bit builds to complete with GCC 4.8. -L<[perl #123976]|https://rt.perl.org/Ticket/Display.html?id=123976> +L<[GH #14556]|https://github.com/Perl/perl5/issues/14556> =back @@ -163,7 +163,7 @@ Repeated global pattern matches in scalar context on large tainted strings were exponentially slow depending on the current match position in the string. -L<[perl #123202]|https://rt.perl.org/Ticket/Display.html?id=123202> +L<[GH #14238]|https://github.com/Perl/perl5/issues/14238> =item * @@ -171,51 +171,51 @@ when it is set to an invalid value. Previously if you set C<$/> to a reference to an array, for example, perl would produce a runtime error and not set PL_rs, but Perl code that checked C<$/> would see the array reference. -L<[perl #123218]|https://rt.perl.org/Ticket/Display.html?id=123218> +L<[GH #14245]|https://github.com/Perl/perl5/issues/14245> =item * Perl 5.14.0 introduced a bug whereby C would crash. This has been fixed. -L<[perl #123652]|https://rt.perl.org/Ticket/Display.html?id=123652> +L<[GH #14438]|https://github.com/Perl/perl5/issues/14438> =item * Extending an array cloned from a parent thread could result in "Modification of a read-only value attempted" errors when attempting to modify the new elements. -L<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127> +L<[GH #14605]|https://github.com/Perl/perl5/issues/14605> =item * Several cases of data used to store environment variable contents in core C code being potentially overwritten before being used have been fixed. -L<[perl #123748]|https://rt.perl.org/Ticket/Display.html?id=123748> +L<[GH #14476]|https://github.com/Perl/perl5/issues/14476> =item * UTF-8 variable names used in array indexes, unquoted UTF-8 HERE-document terminators and UTF-8 function names all now work correctly. -L<[perl #124113]|https://rt.perl.org/Ticket/Display.html?id=124113> +L<[GH #14601]|https://github.com/Perl/perl5/issues/14601> =item * A subtle bug introduced in Perl 5.20.2 involving UTF-8 in regular expressions and sometimes causing a crash has been fixed. A new test script has been added to test this fix; see under L. -L<[perl #124109]|https://rt.perl.org/Ticket/Display.html?id=124109> +L<[GH #14600]|https://github.com/Perl/perl5/issues/14600> =item * Some patterns starting with C matched against long strings have been slow since Perl 5.8, and some of the form C have been slow since Perl 5.18. They are now all fast again. -L<[perl #123743]|https://rt.perl.org/Ticket/Display.html?id=123743> +L<[GH #14475]|https://github.com/Perl/perl5/issues/14475> =item * Warning fatality is now ignored when rewinding the stack. This prevents infinite recursion when the now fatal error also causes rewinding of the stack. -L<[perl #123398]|https://rt.perl.org/Ticket/Display.html?id=123398> +L<[GH #14319]|https://github.com/Perl/perl5/issues/14319> =item * @@ -225,7 +225,7 @@ =item * A crash with C<< %::=(); J->${\"::"} >> has been fixed. -L<[perl #125541]|https://rt.perl.org/Ticket/Display.html?id=125541> +L<[GH #14790]|https://github.com/Perl/perl5/issues/14790> =item * @@ -233,14 +233,14 @@ CIC<{>I,IC<}+>C is supposed to behave identically to C>IC<{>I,IC<})/>. Since Perl 5.20, this didn't work if I and I were equal. -L<[perl #125825]|https://rt.perl.org/Ticket/Display.html?id=125825> +L<[GH #14857]|https://github.com/Perl/perl5/issues/14857> =item * Code like C used to read the next line of input and treat it as though it came immediately after the opening bracket. Some invalid code consequently would parse and run, but some code caused crashes, so this is now disallowed. -L<[perl #123712]|https://rt.perl.org/Ticket/Display.html?id=123712> +L<[GH #14462]|https://github.com/Perl/perl5/issues/14462> =back diff -Nru perl-5.32.1/pod/perl5220delta.pod perl-5.34.0/pod/perl5220delta.pod --- perl-5.32.1/pod/perl5220delta.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perl5220delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -25,7 +25,7 @@ To use this, enable the "bitwise" feature and disable the "experimental::bitwise" warnings category. See L for details. -L<[perl #123466]|https://rt.perl.org/Ticket/Display.html?id=123466>. +L<[GH #14348]|https://github.com/Perl/perl5/issues/14348>. =head2 New double-diamond operator @@ -138,7 +138,7 @@ =head2 C with no arguments C with no arguments now infers C<$_>. -L<[perl #123514]|https://rt.perl.org/Ticket/Display.html?id=123514>. +L<[GH #14376]|https://github.com/Perl/perl5/issues/14376>. =head2 New C<:const> subroutine attribute @@ -258,14 +258,14 @@ The C<&> prototype character now accepts only anonymous subs (C), things beginning with C<\&>, or an explicit C. Formerly it erroneously also allowed references to arrays, hashes, and lists. -L<[perl #4539]|https://rt.perl.org/Ticket/Display.html?id=4539>. -L<[perl #123062]|https://rt.perl.org/Ticket/Display.html?id=123062>. -L<[perl #123062]|https://rt.perl.org/Ticket/Display.html?id=123475>. +L<[GH #2776]|https://github.com/Perl/perl5/issues/2776>. +L<[GH #14186]|https://github.com/Perl/perl5/issues/14186>. +L<[GH #14353]|https://github.com/Perl/perl5/issues/14353>. In addition, the C<\&> prototype was allowing subroutine calls, whereas now it only allows subroutines: C<&foo> is still permitted as an argument, while C<&foo()> and C no longer are. -L<[perl #77860]|https://rt.perl.org/Ticket/Display.html?id=77860>. +L<[GH #10633]|https://github.com/Perl/perl5/issues/10633>. =head2 C is now lexical @@ -280,7 +280,7 @@ (or if there are no indices). Formerly, a list slice would return an empty list if all indices fell outside the original list; now it returns a list of C values in that case. -L<[perl #114498]|https://rt.perl.org/Ticket/Display.html?id=114498>. +L<[GH #12335]|https://github.com/Perl/perl5/issues/12335>. =head2 C<\N{}> with a sequence of multiple spaces is now a fatal error @@ -365,7 +365,7 @@ be affected by locale; only C<$!> and C<$^E> stringification. The C pragma causes the UTF-8 flag to not be set, just as in previous Perl releases. This resolves -L<[perl #112208]|https://rt.perl.org/Ticket/Display.html?id=112208>. +L<[GH #12035]|https://github.com/Perl/perl5/issues/12035>. =head2 Support for C without explicit operator has been removed @@ -590,14 +590,14 @@ Many internal functions have been refactored to improve performance and reduce their memory footprints. -L<[perl #121436]|https://rt.perl.org/Ticket/Display.html?id=121436> -L<[perl #121906]|https://rt.perl.org/Ticket/Display.html?id=121906> -L<[perl #121969]|https://rt.perl.org/Ticket/Display.html?id=121969> +L<[GH #13659]|https://github.com/Perl/perl5/issues/13659> +L<[GH #13856]|https://github.com/Perl/perl5/issues/13856> +L<[GH #13874]|https://github.com/Perl/perl5/issues/13874> =item * C<-T> and C<-B> filetests will return sooner when an empty file is detected. -L<[perl #121489]|https://rt.perl.org/Ticket/Display.html?id=121489> +L<[GH #13686]|https://github.com/Perl/perl5/issues/13686> =item * @@ -607,7 +607,7 @@ Subroutines with an empty prototype and a body containing just C are now eligible for inlining. -L<[perl #122728]|https://rt.perl.org/Ticket/Display.html?id=122728> +L<[GH #14077]|https://github.com/Perl/perl5/issues/14077> =item * @@ -619,7 +619,7 @@ This optimization does not currently apply to XSUBs or exported subroutines, and method calls will undo it, since they cache things in typeglobs. -L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441> +L<[GH #13392]|https://github.com/Perl/perl5/issues/13392> =item * @@ -662,7 +662,7 @@ L has been upgraded to version 0.27. The usage of C in the XS has been corrected. -L<[perl #122701]|https://rt.perl.org/Ticket/Display.html?id=122701> +L<[GH #14072]|https://github.com/Perl/perl5/issues/14072> Avoid reading beyond the end of a buffer. [perl #122629] @@ -683,8 +683,8 @@ C now provides a C method returning a C object. Two new classes, C and C, have been introduced. -A bug where, after an ithread creation or psuedofork, special/immortal SVs in -the child ithread/psuedoprocess did not have the correct class of +A bug where, after an ithread creation or pseudofork, special/immortal SVs in +the child ithread/pseudoprocess did not have the correct class of C, has been fixed. The C and C PADLIST methods have been added. @@ -738,7 +738,7 @@ It now deparses C)> and typed lexical (C) correctly. Deparse C<$#_> as that instead of as C<$#{_}>. -L<[perl #123947]|https://rt.perl.org/Ticket/Display.html?id=123947> +L<[GH #14545]|https://github.com/Perl/perl5/issues/14545> BEGIN blocks at the end of the enclosing scope are now deparsed in the right place. [perl #77452] @@ -828,7 +828,7 @@ C now ignores version mismatches with Carp if Carp is newer than 1.12, since C's guts were merged into Carp at that point. -L<[perl #121574]|https://rt.perl.org/Ticket/Display.html?id=121574> +L<[GH #13708]|https://github.com/Perl/perl5/issues/13708> Carp now handles non-ASCII platforms better. @@ -877,7 +877,7 @@ Changes to resolve Coverity issues. XS dumps incorrectly stored the name of code references stored in a GLOB. -L<[perl #122070]|https://rt.perl.org/Ticket/Display.html?id=122070> +L<[GH #13911]|https://github.com/Perl/perl5/issues/13911> =item * @@ -914,7 +914,7 @@ L has been upgraded to version 0.280221. Fixes a regression on Android. -L<[perl #122675]|https://rt.perl.org/Ticket/Display.html?id=122675> +L<[GH #14064]|https://github.com/Perl/perl5/issues/14064> =item * @@ -922,7 +922,7 @@ Fixes a bug with C's handling of quoted filenames and improves C to follow symlinks. -L<[perl #122415]|https://rt.perl.org/Ticket/Display.html?id=122415> +L<[GH #14003]|https://github.com/Perl/perl5/issues/14003> =item * @@ -1040,15 +1040,14 @@ L has been upgraded to version 1.49. The debugger would cause an assertion failure. -L<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127> +L<[GH #14605]|https://github.com/Perl/perl5/issues/14605> C in the debugger under C will now create a new window for -the forked process. L<[perl -#121333]|https://rt.perl.org/Ticket/Display.html?id=121333> +the forked process. L<[GH #13602]|https://github.com/Perl/perl5/issues/13602> The debugger now saves the current working directory on startup and -restores it when you restart your program with C or C. L<[perl -#121509]|https://rt.perl.org/Ticket/Display.html?id=121509> +restores it when you restart your program with C or C. +L<[GH #13691]|https://github.com/Perl/perl5/issues/13691> =item * @@ -1238,7 +1237,7 @@ C - fix documentation to mention the use of C instead of C. -L<[perl #121869]|https://rt.perl.org/Ticket/Display.html?id=121869> +L<[GH #13835]|https://github.com/Perl/perl5/issues/13835> =item * @@ -1320,7 +1319,7 @@ C<-l> now notes that it will return false if symlinks aren't supported by the file system. -L<[perl #121523]|https://rt.perl.org/Ticket/Display.html?id=121523> +L<[GH #13695]|https://github.com/Perl/perl5/issues/13695> =item * @@ -1330,7 +1329,7 @@ This has also been noted in L. -L<[perl #122046]|https://rt.perl.org/Ticket/Display.html?id=122046> +L<[GH #13907]|https://github.com/Perl/perl5/issues/13907> =back @@ -1390,7 +1389,7 @@ =item * Updated documentation for the C C target. -L<[perl #121431]|https://rt.perl.org/Ticket/Display.html?id=121431> +L<[GH #13658]|https://github.com/Perl/perl5/issues/13658> =item * @@ -1572,7 +1571,7 @@ =item * An ambiguity in the documentation of the C<...> statement has been corrected. -L<[perl #122661]|https://rt.perl.org/Ticket/Display.html?id=122661> +L<[GH #14054]|https://github.com/Perl/perl5/issues/14054> =item * @@ -2055,7 +2054,7 @@ future for I L. The warnings category C<< redundant >> is new. See also -L<[perl #121025]|https://rt.perl.org/Ticket/Display.html?id=121025>. +L<[GH #13534]|https://github.com/Perl/perl5/issues/13534>. =item * @@ -2224,7 +2223,7 @@ This message has had '(did you forget to declare "my %s"?)' appended to it, to make it more helpful to new Perl programmers. -L<[perl #121638]|https://rt.perl.org/Ticket/Display.html?id=121638> +L<[GH #13732]|https://github.com/Perl/perl5/issues/13732> =item * @@ -2292,8 +2291,8 @@ Compile-time checking of constant dereferencing (I, C<< my_constant->() >>) has been removed, since it was not taking overloading into account. -L<[perl #69456]|https://rt.perl.org/Ticket/Display.html?id=69456> -L<[perl #122607]|https://rt.perl.org/Ticket/Display.html?id=122607> +L<[GH #9891]|https://github.com/Perl/perl5/issues/9891> +L<[GH #14044]|https://github.com/Perl/perl5/issues/14044> =back @@ -2320,7 +2319,7 @@ F now handles hexadecimal constants in the compiler's predefined macro definitions, as visible in C<$Config{cppsymbols}>. -L<[perl #123784]|https://rt.perl.org/Ticket/Display.html?id=123784>. +L<[GH #14491]|https://github.com/Perl/perl5/issues/14491>. =back @@ -2346,7 +2345,7 @@ =item * F with C<-Dmksymlinks> should now be faster. -L<[perl #122002]|https://rt.perl.org/Ticket/Display.html?id=122002>. +L<[GH #13890]|https://github.com/Perl/perl5/issues/13890>. =item * @@ -2377,7 +2376,7 @@ See L for more information. -L<[perl #121431]|https://rt.perl.org/Ticket/Display.html?id=121431> +L<[GH #13658]|https://github.com/Perl/perl5/issues/13658> =item * @@ -2445,9 +2444,9 @@ =item IRIX and Tru64 platforms are working again. Some C failures remain: -L<[perl #123977]|https://rt.perl.org/Ticket/Display.html?id=123977> -and L<[perl #125298]|https://rt.perl.org/Ticket/Display.html?id=125298> -for IRIX; L<[perl #124212]|https://rt.perl.org/Ticket/Display.html?id=124212>, +L<[GH #14557]|https://github.com/Perl/perl5/issues/14557> +and L<[GH #14727]|https://github.com/Perl/perl5/issues/14727> +for IRIX; L<[GH #14629]|https://github.com/Perl/perl5/issues/14629>, L<[cpan #99605]|https://rt.cpan.org/Public/Bug/Display.html?id=99605>, and L<[cpan #104836]|https://rt.cpan.org/Ticket/Display.html?id=104836> for Tru64. @@ -2531,14 +2530,14 @@ F is now built with C<-fno-strict-aliasing>, allowing 64-bit builds to complete on GCC 4.8. -L<[perl #123976]|https://rt.perl.org/Ticket/Display.html?id=123976> +L<[GH #14556]|https://github.com/Perl/perl5/issues/14556> =item * C now works on Win32. Due to dependency issues you need to build C first, and a small number of the tests fail. -L<[perl #123394]|https://rt.perl.org/Ticket/Display.html?id=123394> +L<[GH #14318]|https://github.com/Perl/perl5/issues/14318> =item * @@ -2549,7 +2548,7 @@ The list form of piped open has been implemented for Win32. Note: unlike C this does not fall back to the shell. -L<[perl #121159]|https://rt.perl.org/Ticket/Display.html?id=121159> +L<[GH #13574]|https://github.com/Perl/perl5/issues/13574> =item * @@ -2586,7 +2585,7 @@ In the experimental C<:win32> layer, a crash in C was fixed. Also opening F (which works under Win32 Perl's default C<:unix> layer) was implemented for C<:win32>. -L<[perl #122224]|https://rt.perl.org/Ticket/Display.html?id=122224> +L<[GH #13968]|https://github.com/Perl/perl5/issues/13968> =item * @@ -2604,7 +2603,7 @@ the tradeoff is worth it and would prefer that users who need the speed specifically ask for it. -L<[perl #122000]|https://rt.perl.org/Ticket/Display.html?id=122000>. +L<[GH #13888]|https://github.com/Perl/perl5/issues/13888>. =item Solaris @@ -2620,7 +2619,7 @@ Builds on Solaris 10 with C<-Dusedtrace> would fail early since make didn't follow implied dependencies to build C. Added an explicit dependency to C. -L<[perl #120120]|https://rt.perl.org/Ticket/Display.html?id=120120> +L<[GH #13334]|https://github.com/Perl/perl5/issues/13334> =item * @@ -2754,7 +2753,7 @@ The C function no longer forbids "ext" magic on read-only values. After all, perl can't know whether the custom magic will modify the SV or not. -L<[perl #123103]|https://rt.perl.org/Ticket/Display.html?id=123103>. +L<[GH #14202]|https://github.com/Perl/perl5/issues/14202>. =item * @@ -2780,7 +2779,7 @@ testing their values in C. This prevents perl from recursing infinitely if an overloaded object is assigned to any of those variables. -L<[perl #122445]|https://rt.perl.org/Ticket/Display.html?id=122445>. +L<[GH #14013]|https://github.com/Perl/perl5/issues/14013>. =item * @@ -2827,8 +2826,8 @@ returns an SV containing the name of the subroutine, for use in diagnostics. -L<[perl #116735]|https://rt.perl.org/Ticket/Display.html?id=116735> -L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441> +L<[GH #12767]|https://github.com/Perl/perl5/issues/12767> +L<[GH #13392]|https://github.com/Perl/perl5/issues/13392> =item * @@ -2839,7 +2838,7 @@ passed will be acceptable to C. C guarantees there will be a GV, but it may have to create one on the fly, which is inefficient. -L<[perl #116735]|https://rt.perl.org/Ticket/Display.html?id=116735> +L<[GH #12767]|https://github.com/Perl/perl5/issues/12767> =item * @@ -2848,7 +2847,7 @@ boolean, C has been added, which will return true for CVs that notionally have GVs, but without reifying the GV. C also returns a GV now for lexical subs. -L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441> +L<[GH #13392]|https://github.com/Perl/perl5/issues/13392> =item * @@ -2907,7 +2906,7 @@ The C and C types are now separate types, and no longer simply aliases for SV and AV. -L<[perl #123223]|https://rt.perl.org/Ticket/Display.html?id=123223>. +L<[GH #14250]|https://github.com/Perl/perl5/issues/14250>. =item * @@ -2966,89 +2965,89 @@ double builds. Under some build options on GCC 4.8 and later, they used to either overwrite the zero-initialized padding, or bypass the initialized buffer entirely. This caused F to fail. -L<[perl #123971]|https://rt.perl.org/Ticket/Display.html?id=123971> +L<[GH #14554]|https://github.com/Perl/perl5/issues/14554> =item * Extending an array cloned from a parent thread could result in "Modification of a read-only value attempted" errors when attempting to modify the new elements. -L<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127> +L<[GH #14605]|https://github.com/Perl/perl5/issues/14605> =item * An assertion failure and subsequent crash with C<< *x= >> has been fixed. -L<[perl #123790]|https://rt.perl.org/Ticket/Display.html?id=123790> +L<[GH #14493]|https://github.com/Perl/perl5/issues/14493> =item * A possible crashing/looping bug related to compiling lexical subs has been fixed. -L<[perl #124099]|https://rt.perl.org/Ticket/Display.html?id=124099> +L<[GH #14596]|https://github.com/Perl/perl5/issues/14596> =item * UTF-8 now works correctly in function names, in unquoted HERE-document terminators, and in variable names used as array indexes. -L<[perl #124113]|https://rt.perl.org/Ticket/Display.html?id=124113> +L<[GH #14601]|https://github.com/Perl/perl5/issues/14601> =item * Repeated global pattern matches in scalar context on large tainted strings were exponentially slow depending on the current match position in the string. -L<[perl #123202]|https://rt.perl.org/Ticket/Display.html?id=123202> +L<[GH #14238]|https://github.com/Perl/perl5/issues/14238> =item * Various crashes due to the parser getting confused by syntax errors have been fixed. -L<[perl #123801]|https://rt.perl.org/Ticket/Display.html?id=123801> -L<[perl #123802]|https://rt.perl.org/Ticket/Display.html?id=123802> -L<[perl #123955]|https://rt.perl.org/Ticket/Display.html?id=123955> -L<[perl #123995]|https://rt.perl.org/Ticket/Display.html?id=123995> +L<[GH #14496]|https://github.com/Perl/perl5/issues/14496> +L<[GH #14497]|https://github.com/Perl/perl5/issues/14497> +L<[GH #14548]|https://github.com/Perl/perl5/issues/14548> +L<[GH #14564]|https://github.com/Perl/perl5/issues/14564> =item * C in the scope of lexical C<$_> has been fixed not to fail assertions. -L<[perl #123763]|https://rt.perl.org/Ticket/Display.html?id=123763> +L<[GH #14483]|https://github.com/Perl/perl5/issues/14483> =item * C syntax inside various list operators no longer fails assertions. -L<[perl #123817]|https://rt.perl.org/Ticket/Display.html?id=123817> +L<[GH #14500]|https://github.com/Perl/perl5/issues/14500> =item * An C<@> sign in quotes followed by a non-ASCII digit (which is not a valid identifier) would cause the parser to crash, instead of simply trying the C<@> as literal. This has been fixed. -L<[perl #123963]|https://rt.perl.org/Ticket/Display.html?id=123963> +L<[GH #14553]|https://github.com/Perl/perl5/issues/14553> =item * C<*bar::=*foo::=*glob_with_hash> has been crashing since Perl 5.14, but no longer does. -L<[perl #123847]|https://rt.perl.org/Ticket/Display.html?id=123847> +L<[GH #14512]|https://github.com/Perl/perl5/issues/14512> =item * C in scalar context was not pushing an item on to the stack, resulting in bugs. (S> would print 5.) It has been fixed to return C. -L<[perl #124004]|https://rt.perl.org/Ticket/Display.html?id=124004> +L<[GH #14569]|https://github.com/Perl/perl5/issues/14569> =item * Several cases of data used to store environment variable contents in core C code being potentially overwritten before being used have been fixed. -L<[perl #123748]|https://rt.perl.org/Ticket/Display.html?id=123748> +L<[GH #14476]|https://github.com/Perl/perl5/issues/14476> =item * Some patterns starting with C matched against long strings have been slow since v5.8, and some of the form C have been slow since v5.18. They are now all fast again. -L<[perl #123743]|https://rt.perl.org/Ticket/Display.html?id=123743>. +L<[GH #14475]|https://github.com/Perl/perl5/issues/14475>. =item * @@ -3057,7 +3056,7 @@ array, for example, perl would produce a runtime error and not set C, but Perl code that checked C<$/> would see the array reference. -L<[perl #123218]|https://rt.perl.org/Ticket/Display.html?id=123218>. +L<[GH #14245]|https://github.com/Perl/perl5/issues/14245>. =item * @@ -3071,16 +3070,16 @@ Perl 5.14.0 introduced a bug whereby S> would crash. This has been fixed. -L<[perl #123652]|https://rt.perl.org/Ticket/Display.html?id=123652>. +L<[GH #14438]|https://github.com/Perl/perl5/issues/14438>. =item * Various crashes due to the parser getting confused by syntax errors have been fixed. -L<[perl #123617]|https://rt.perl.org/Ticket/Display.html?id=123617>. -L<[perl #123737]|https://rt.perl.org/Ticket/Display.html?id=123737>. -L<[perl #123753]|https://rt.perl.org/Ticket/Display.html?id=123753>. -L<[perl #123677]|https://rt.perl.org/Ticket/Display.html?id=123677>. +L<[GH #14421]|https://github.com/Perl/perl5/issues/14421>. +L<[GH #14472]|https://github.com/Perl/perl5/issues/14472>. +L<[GH #14480]|https://github.com/Perl/perl5/issues/14480>. +L<[GH #14447]|https://github.com/Perl/perl5/issues/14447>. =item * @@ -3088,12 +3087,12 @@ though it came immediately after the opening bracket. Some invalid code consequently would parse and run, but some code caused crashes, so this is now disallowed. -L<[perl #123712]|https://rt.perl.org/Ticket/Display.html?id=123712>. +L<[GH #14462]|https://github.com/Perl/perl5/issues/14462>. =item * Fix argument underflow for C. -L<[perl #123874]|https://rt.perl.org/Ticket/Display.html?id=123874>. +L<[GH #14525]|https://github.com/Perl/perl5/issues/14525>. =item * @@ -3103,7 +3102,7 @@ =item * C is now no longer treated as stackable, just like C<-t stat>. -L<[perl #123816]|https://rt.perl.org/Ticket/Display.html?id=123816>. +L<[GH #14499]|https://github.com/Perl/perl5/issues/14499>. =item * @@ -3126,19 +3125,19 @@ with C while taking into account the current POSIX locale (which usually means they have to be compiled within the scope of C>), and there must be a string of at least 128 consecutive bytes to match. -L<[perl #123539]|https://rt.perl.org/Ticket/Display.html?id=123539>. +L<[GH #14389]|https://github.com/Perl/perl5/issues/14389>. =item * C now works on very long strings (where there are more than 2 billion iterations) instead of dying with 'Substitution loop'. -L<[perl #103260]|https://rt.perl.org/Ticket/Display.html?id=103260>. -L<[perl #123071]|https://rt.perl.org/Ticket/Display.html?id=123071>. +L<[GH #11742]|https://github.com/Perl/perl5/issues/11742>. +L<[GH #14190]|https://github.com/Perl/perl5/issues/14190>. =item * C no longer crashes with not-a-number values. -L<[perl #123495]|https://rt.perl.org/Ticket/Display.html?id=123495>. +L<[GH #14365]|https://github.com/Perl/perl5/issues/14365>. =item * @@ -3151,7 +3150,7 @@ C with no arguments used to read the previous item on the stack, so S> would print foo's prototype. It has been fixed to infer C<$_> instead. -L<[perl #123514]|https://rt.perl.org/Ticket/Display.html?id=123514>. +L<[GH #14376]|https://github.com/Perl/perl5/issues/14376>. =item * @@ -3169,14 +3168,14 @@ When trying to emit warnings, perl's default debugger (F) was sometimes giving 'Undefined subroutine &DB::db_warn called' instead. This bug, which started to occur in Perl 5.18, has been fixed. -L<[perl #123553]|https://rt.perl.org/Ticket/Display.html?id=123553>. +L<[GH #14400]|https://github.com/Perl/perl5/issues/14400>. =item * Certain syntax errors in substitutions, such as C<< s/${<>{})// >>, would crash, and had done so since Perl 5.10. (In some cases the crash did not start happening till 5.16.) The crash has, of course, been fixed. -L<[perl #123542]|https://rt.perl.org/Ticket/Display.html?id=123542>. +L<[GH #14391]|https://github.com/Perl/perl5/issues/14391>. =item * @@ -3185,7 +3184,7 @@ overflow since the new output buffer size was not correctly handled by C. An expression like this now properly produces a memory wrap panic. -L<[perl #123554]|https://rt.perl.org/Ticket/Display.html?id=123554>. +L<[GH #14401]|https://github.com/Perl/perl5/issues/14401>. =item * @@ -3193,32 +3192,32 @@ C didn't set the pointer used to mark the chop position, which led to the C case crashing with a segmentation fault. This has been fixed. -L<[perl #123538]|https://rt.perl.org/Ticket/Display.html?id=123538>. +L<[GH #14388]|https://github.com/Perl/perl5/issues/14388>. =item * A possible buffer overrun and crash when parsing a literal pattern during regular expression compilation has been fixed. -L<[perl #123604]|https://rt.perl.org/Ticket/Display.html?id=123604>. +L<[GH #14416]|https://github.com/Perl/perl5/issues/14416>. =item * C and C now set C<$!> when they fail due to being passed a closed file handle. -L<[perl #122703]|https://rt.perl.org/Ticket/Display.html?id=122703>. +L<[GH #14073]|https://github.com/Perl/perl5/issues/14073>. =item * C and C no longer crash due to a stack overflow when freeing a deeply recursive op tree. -L<[perl #108276]|https://rt.perl.org/Ticket/Display.html?id=108276>. +L<[GH #11866]|https://github.com/Perl/perl5/issues/11866>. =item * In Perl 5.20.0, C<$^N> accidentally had the internal UTF-8 flag turned off if accessed from a code block within a regular expression, effectively UTF-8-encoding the value. This has been fixed. -L<[perl #123135]|https://rt.perl.org/Ticket/Display.html?id=123135>. +L<[GH #14211]|https://github.com/Perl/perl5/issues/14211>. =item * @@ -3230,7 +3229,7 @@ C with no space before C is now better at assigning the right line number to that statement. -L<[perl #122695]|https://rt.perl.org/Ticket/Display.html?id=122695>. +L<[GH #14070]|https://github.com/Perl/perl5/issues/14070>. =item * @@ -3239,7 +3238,7 @@ assignment from being used in lvalue context. So C<(@a=split//,"foo")=bar()> was an error. (This bug probably goes back to Perl 3, when the optimisation was added.) It has now been fixed. -L<[perl #123057]|https://rt.perl.org/Ticket/Display.html?id=123057>. +L<[GH #14183]|https://github.com/Perl/perl5/issues/14183>. =item * @@ -3247,7 +3246,7 @@ signature (which is still an experimental feature), the resulting error messages now give the file and line number of the caller, not of the called subroutine. -L<[perl #121374]|https://rt.perl.org/Ticket/Display.html?id=121374>. +L<[GH #13643]|https://github.com/Perl/perl5/issues/13643>. =item * @@ -3255,14 +3254,14 @@ a separate state for each recursion level (the number of times the enclosing sub was called recursively), contrary to the documentation. Now each closure has one internal state for each flip-flop. -L<[perl #122829]|https://rt.perl.org/Ticket/Display.html?id=122829>. +L<[GH #14110]|https://github.com/Perl/perl5/issues/14110>. =item * The flip-flop operator (C<..> in scalar context) would return the same scalar each time, unless the containing subroutine was called recursively. Now it always returns a new scalar. -L<[perl #122829]|https://rt.perl.org/Ticket/Display.html?id=122829>. +L<[GH #14110]|https://github.com/Perl/perl5/issues/14110>. =item * @@ -3270,7 +3269,7 @@ permitted as the first thing in a C or C block, the block after C or C (or other functions) returning a handle, and within C<${...}>, C<@{...}>, etc. -L<[perl #122782]|https://rt.perl.org/Ticket/Display.html?id=122782>. +L<[GH #14088]|https://github.com/Perl/perl5/issues/14088>. =item * @@ -3283,7 +3282,7 @@ C<(...) x ...> in scalar context used to corrupt the stack if one operand was an object with "x" overloading, causing erratic behavior. -L<[perl #121827]|https://rt.perl.org/Ticket/Display.html?id=121827>. +L<[GH #13811]|https://github.com/Perl/perl5/issues/13811>. =item * @@ -3361,7 +3360,7 @@ C and C no longer crash when used on strings over 2GB in size. -L<[perl #121562]|https://rt.perl.org/Ticket/Display.html?id=121562>. +L<[GH #13700]|https://github.com/Perl/perl5/issues/13700>. =item * @@ -3442,19 +3441,19 @@ C<< s///e >> on tainted UTF-8 strings corrupted C<< pos() >>. This bug, introduced in 5.20, is now fixed. -L<[perl #122148]|https://rt.perl.org/Ticket/Display.html?id=122148>. +L<[GH #13948]|https://github.com/Perl/perl5/issues/13948>. =item * A non-word boundary in a regular expression (C<< \B >>) did not always match the end of the string; in particular C<< q{} =~ /\B/ >> did not match. This bug, introduced in perl 5.14, is now fixed. -L<[perl #122090]|https://rt.perl.org/Ticket/Display.html?id=122090>. +L<[GH #13917]|https://github.com/Perl/perl5/issues/13917>. =item * C<< " P" =~ /(?=.*P)P/ >> should match, but did not. This is now fixed. -L<[perl #122171]|https://rt.perl.org/Ticket/Display.html?id=122171>. +L<[GH #13954]|https://github.com/Perl/perl5/issues/13954>. =item * @@ -3462,13 +3461,13 @@ C subroutine definition, which would produce a "Subroutine BEGIN redefined" warning on the next use of C, or other C block. -L<[perl #122107]|https://rt.perl.org/Ticket/Display.html?id=122107>. +L<[GH #13926]|https://github.com/Perl/perl5/issues/13926>. =item * C syntax now correctly parses the arguments if they begin with an opening brace. -L<[perl #46947]|https://rt.perl.org/Ticket/Display.html?id=46947>. +L<[GH #9085]|https://github.com/Perl/perl5/issues/9085>. =item * @@ -3476,19 +3475,19 @@ This is problematic when parsing version strings if the locale's numeric separator has been changed. Version parsing has been patched to ensure it handles the locales correctly. -L<[perl #121930]|https://rt.perl.org/Ticket/Display.html?id=121930>. +L<[GH #13863]|https://github.com/Perl/perl5/issues/13863>. =item * A bug has been fixed where zero-length assertions and code blocks inside of a regex could cause C to see an incorrect value. -L<[perl #122460]|https://rt.perl.org/Ticket/Display.html?id=122460>. +L<[GH #14016]|https://github.com/Perl/perl5/issues/14016>. =item * Dereferencing of constants now works correctly for typeglob constants. Previously the glob was stringified and its name looked up. Now the glob itself is used. -L<[perl #69456]|https://rt.perl.org/Ticket/Display.html?id=69456> +L<[GH #9891]|https://github.com/Perl/perl5/issues/9891> =item * @@ -3501,7 +3500,7 @@ S> now frees the referent immediately, instead of hanging on to it until the next statement. -L<[perl #122556]|https://rt.perl.org/Ticket/Display.html?id=122556> +L<[GH #14032]|https://github.com/Perl/perl5/issues/14032> =item * @@ -3545,7 +3544,7 @@ Tainted constants evaluated at compile time no longer cause unrelated statements to become tainted. -L<[perl #122669]|https://rt.perl.org/Ticket/Display.html?id=122669> +L<[GH #14059]|https://github.com/Perl/perl5/issues/14059> =item * @@ -3563,7 +3562,7 @@ The parser no longer gets confused by C<\U=> within a double-quoted string. It used to produce a syntax error, but now compiles it correctly. -L<[perl #80368]|https://rt.perl.org/Ticket/Display.html?id=80368> +L<[GH #10882]|https://github.com/Perl/perl5/issues/10882> =item * @@ -3584,7 +3583,7 @@ expression pattern that contains a single ASCII lowercase letter did not match its uppercase counterpart. That has been fixed in both 5.20.1 and 5.22.0. -L<[perl #122655]|https://rt.perl.org/Ticket/Display.html?id=122655> +L<[GH #14051]|https://github.com/Perl/perl5/issues/14051> =item * @@ -3597,7 +3596,7 @@ Loading Unicode tables during a regular expression match could cause assertion failures under debugging builds if the previous match used the very same regular expression. -L<[perl #122747]|https://rt.perl.org/Ticket/Display.html?id=122747> +L<[GH #14081]|https://github.com/Perl/perl5/issues/14081> =item * @@ -3626,7 +3625,7 @@ Aliasing (I, via S>) could confuse list assignments that mention the two names for the same variable on either side, causing wrong values to be assigned. -L<[perl #15667]|https://rt.perl.org/Ticket/Display.html?id=15667> +L<[GH #5788]|https://github.com/Perl/perl5/issues/5788> =item * @@ -3642,7 +3641,7 @@ which it should not. This has been fixed. (Note, however, that S> does not behave like S>, which is also considered to be a bug and will be fixed in a future version.) -L<[perl #122761]|https://rt.perl.org/Ticket/Display.html?id=122761> +L<[GH #14086]|https://github.com/Perl/perl5/issues/14086> =item * @@ -3682,7 +3681,7 @@ An assertion failure when parsing C with debugging enabled has been fixed. -L<[perl #122771]|https://rt.perl.org/Ticket/Display.html?id=122771>. +L<[GH #14087]|https://github.com/Perl/perl5/issues/14087>. =item * @@ -3697,7 +3696,7 @@ =item * Fatal warnings no longer prevent the output of syntax errors. -L<[perl #122966]|https://rt.perl.org/Ticket/Display.html?id=122966>. +L<[GH #14155]|https://github.com/Perl/perl5/issues/14155>. =item * @@ -3709,12 +3708,12 @@ Fixed the issue that caused C<< make distclean >> to incorrectly leave some files behind. -L<[perl #122820]|https://rt.perl.org/Ticket/Display.html?id=122820>. +L<[GH #14108]|https://github.com/Perl/perl5/issues/14108>. =item * AIX now sets the length in C<< getsockopt >> correctly. -L<[perl #120835]|https://rt.perl.org/Ticket/Display.html?id=120835>. +L<[GH #13484]|https://github.com/Perl/perl5/issues/13484>. L<[cpan #91183]|https://rt.cpan.org/Ticket/Display.html?id=91183>. L<[cpan #85570]|https://rt.cpan.org/Ticket/Display.html?id=85570>. @@ -3722,18 +3721,18 @@ The optimization phase of a regexp compilation could run "forever" and exhaust all memory under certain circumstances; now fixed. -L<[perl #122283]|https://rt.perl.org/Ticket/Display.html?id=122283>. +L<[GH #13984]|https://github.com/Perl/perl5/issues/13984>. =item * The test script F<< t/op/crypt.t >> now uses the SHA-256 algorithm if the default one is disabled, rather than giving failures. -L<[perl #121591]|https://rt.perl.org/Ticket/Display.html?id=121591>. +L<[GH #13715]|https://github.com/Perl/perl5/issues/13715>. =item * Fixed an off-by-one error when setting the size of a shared array. -L<[perl #122950]|https://rt.perl.org/Ticket/Display.html?id=122950>. +L<[GH #14151]|https://github.com/Perl/perl5/issues/14151>. =item * @@ -3743,7 +3742,7 @@ sub foo { () = ($a, my $b, ($c, do { while(1) {} })) } The bug was introduced in 5.20.0 -L<[perl #122995]|https://rt.perl.org/Ticket/Display.html?id=122995>. +L<[GH #14165]|https://github.com/Perl/perl5/issues/14165>. =item * @@ -3751,14 +3750,14 @@ forked, restoring the original value in the child pseudo-process caused memory corruption and a crash in the child pseudo-process (and therefore the OS process). -L<[perl #40565]|https://rt.perl.org/Ticket/Display.html?id=40565>. +L<[GH #8641]|https://github.com/Perl/perl5/issues/8641>. =item * Calling C on a format with a C<^**> field could produce a panic in C if there were insufficient arguments or if the variable used to fill the field was empty. -L<[perl #123245]|https://rt.perl.org/Ticket/Display.html?id=123245>. +L<[GH #14255]|https://github.com/Perl/perl5/issues/14255>. =item * @@ -3770,7 +3769,7 @@ The C<\@> subroutine prototype no longer flattens parenthesized arrays (taking a reference to each element), but takes a reference to the array itself. -L<[perl #47363]|https://rt.perl.org/Ticket/Display.html?id=47363>. +L<[GH #9111]|https://github.com/Perl/perl5/issues/9111>. =item * @@ -3778,7 +3777,7 @@ stack, causing lists outside the block to lose elements or have elements overwritten. This could happen with C and with lists containing C. -L<[perl #123286]|https://rt.perl.org/Ticket/Display.html?id=123286>. +L<[GH #14269]|https://github.com/Perl/perl5/issues/14269>. =item * @@ -3788,7 +3787,7 @@ =item * C no longer dies with "Bizarre copy of ARRAY". -L<[perl #123344]|https://rt.perl.org/Ticket/Display.html?id=123344>. +L<[GH #14292]|https://github.com/Perl/perl5/issues/14292>. =item * @@ -3801,7 +3800,7 @@ keyword, started chopping off the last 6 characters and treating the result as a sort sub name. The previous behavior of treating C as a sort sub name has been restored. -L<[perl #123410]|https://rt.perl.org/Ticket/Display.html?id=123410>. +L<[GH #14323]|https://github.com/Perl/perl5/issues/14323>. =item * @@ -3819,7 +3818,7 @@ C<(...) x ...> in void context now applies scalar context to the left-hand argument, instead of the context the current sub was called in. -L<[perl #123020]|https://rt.perl.org/Ticket/Display.html?id=123020>. +L<[GH #14174]|https://github.com/Perl/perl5/issues/14174>. =back @@ -3831,7 +3830,7 @@ C-ing a NaN on a perl compiled with Visual C 6 does not behave properly, leading to a test failure in F. -L<[perl 125203]|https://rt.perl.org/Ticket/Display.html?id=125203> +L<[GH #14705]|https://github.com/Perl/perl5/issues/14705> =item * diff -Nru perl-5.32.1/pod/perl5221delta.pod perl-5.34.0/pod/perl5221delta.pod --- perl-5.32.1/pod/perl5221delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5221delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -28,7 +28,7 @@ checking constructs (introduced in Perl 5.22) C<\b{gcb}>, C<\b{sb}>, C<\b{wb}>, C<\B{gcb}>, C<\B{sb}>, and C<\B{wb}>. All the C<\B{}> ones now match an empty string; none of the C<\b{}> ones do. -L<[perl #126319]|https://rt.perl.org/Ticket/Display.html?id=126319> +L<[GH #14976]|https://github.com/Perl/perl5/issues/14976> =head1 Modules and Pragmata @@ -50,7 +50,7 @@ If C was passed C<$!> as its argument then it accidentally cleared C<$!>. This has been fixed. -L<[perl #126229]|https://rt.perl.org/Ticket/Display.html?id=126229> +L<[GH #14951]|https://github.com/Perl/perl5/issues/14951> =item * @@ -61,7 +61,7 @@ L has been upgraded from version 1.32 to 1.34. The C example now actually uses C. -L<[perl #126051]|https://rt.perl.org/Ticket/Display.html?id=126051> +L<[GH #14905]|https://github.com/Perl/perl5/issues/14905> =item * @@ -111,7 +111,7 @@ The C and C builtins are now more careful about the warnings they emit: argument reordering now disables the "redundant argument" warning in all cases. -L<[perl #125469]|https://rt.perl.org/Ticket/Display.html?id=125469> +L<[GH #14772]|https://github.com/Perl/perl5/issues/14772> =back @@ -130,7 +130,7 @@ Configuring with ccflags containing quotes (e.g. C<< -Accflags='-DAPPLLIB_EXP=\"/usr/libperl\"' >>) was broken in Perl 5.22.0 but has now been fixed again. -L<[perl #125314]|https://rt.perl.org/Ticket/Display.html?id=125314> +L<[GH #14732]|https://github.com/Perl/perl5/issues/14732> =back @@ -149,12 +149,12 @@ Under some circumstances IRIX stdio fgetc() and fread() set the errno to C, which made no sense according to either IRIX or POSIX docs. Errno is now cleared in such cases. -L<[perl #123977]|https://rt.perl.org/Ticket/Display.html?id=123977> +L<[GH #14557]|https://github.com/Perl/perl5/issues/14557> =item * Problems when multiplying long doubles by infinity have been fixed. -L<[perl #126396]|https://rt.perl.org/Ticket/Display.html?id=126396> +L<[GH #14993]|https://github.com/Perl/perl5/issues/14993> =item * @@ -171,7 +171,7 @@ =item * C no longer segfaults, giving a syntax error message instead. -L<[perl #125805]|https://rt.perl.org/Ticket/Display.html?id=125805> +L<[GH #14851]|https://github.com/Perl/perl5/issues/14851> =item * @@ -179,19 +179,19 @@ CIC<{>I,IC<}+>C is supposed to behave identically to C>IC<{>I,IC<})/>. Since Perl 5.20, this didn't work if I and I were equal. -L<[perl #125825]|https://rt.perl.org/Ticket/Display.html?id=125825> +L<[GH #14857]|https://github.com/Perl/perl5/issues/14857> =item * Certain syntax errors in L caused panics instead of the proper error message. This has now been fixed. -L<[perl #126481]|https://rt.perl.org/Ticket/Display.html?id=126481> +L<[GH #15016]|https://github.com/Perl/perl5/issues/15016> =item * C<< BEGIN <> >> no longer segfaults and properly produces an error message. -L<[perl #125341]|https://rt.perl.org/Ticket/Display.html?id=125341> +L<[GH #13546]|https://github.com/Perl/perl5/issues/13546> =item * @@ -199,39 +199,39 @@ L|perlrecharclass/Extended Bracketed Character Classes> constructs within regular expression patterns could cause a segfault instead of a proper error message. -L<[perl #126180]|https://rt.perl.org/Ticket/Display.html?id=126180> +L<[GH #14933]|https://github.com/Perl/perl5/issues/14933> =item * Another problem with L|perlrecharclass/Extended Bracketed Character Classes> constructs has been fixed wherein things like C<\c]> could cause panics. -L<[perl #126181]|https://rt.perl.org/Ticket/Display.html?id=126181> +L<[GH #14934]|https://github.com/Perl/perl5/issues/14934> =item * In Perl 5.22.0, the logic changed when parsing a numeric parameter to the -C option, such that the successfully parsed number was not saved as the option value if it parsed to the end of the argument. -L<[perl #125381]|https://rt.perl.org/Ticket/Display.html?id=125381> +L<[GH #14748]|https://github.com/Perl/perl5/issues/14748> =item * Warning fatality is now ignored when rewinding the stack. This prevents infinite recursion when the now fatal error also causes rewinding of the stack. -L<[perl #123398]|https://rt.perl.org/Ticket/Display.html?id=123398> +L<[GH #14319]|https://github.com/Perl/perl5/issues/14319> =item * A crash with C<< %::=(); J->${\"::"} >> has been fixed. -L<[perl #125541]|https://rt.perl.org/Ticket/Display.html?id=125541> +L<[GH #14790]|https://github.com/Perl/perl5/issues/14790> =item * Nested quantifiers such as C should cause perl to throw a fatal error, but were being silently accepted since Perl 5.20.0. This has been fixed. -L<[perl #126253]|https://rt.perl.org/Ticket/Display.html?id=126253> +L<[GH #14960]|https://github.com/Perl/perl5/issues/14960> =item * @@ -239,21 +239,21 @@ recognized flags or combination of flags) should cause perl to throw a fatal error, but were being silently accepted since Perl 5.18.0. This has been fixed. -L<[perl #126178]|https://rt.perl.org/Ticket/Display.html?id=126178> +L<[GH #14931]|https://github.com/Perl/perl5/issues/14931> =item * A bug in hexadecimal floating point literal support meant that high-order bits could be lost in cases where mantissa overflow was caused by too many trailing zeros in the fractional part. This has been fixed. -L<[perl #126582]|https://rt.perl.org/Ticket/Display.html?id=126582> +L<[GH #15032]|https://github.com/Perl/perl5/issues/15032> =item * Another hexadecimal floating point bug, causing low-order bits to be lost in cases where the last hexadecimal digit of the mantissa has bits straddling the limit of the number of bits allowed for the mantissa, has also been fixed. -L<[perl #126586]|https://rt.perl.org/Ticket/Display.html?id=126586> +L<[GH #15033]|https://github.com/Perl/perl5/issues/15033> =item * @@ -266,7 +266,7 @@ A crash caused by incomplete expressions within C<< /(?[ ])/ >> (e.g. C<< /(?[[0]+()+])/ >>) has been fixed. -L<[perl #126615]|https://rt.perl.org/Ticket/Display.html?id=126615> +L<[GH #15045]|https://github.com/Perl/perl5/issues/15045> =back diff -Nru perl-5.32.1/pod/perl5222delta.pod perl-5.34.0/pod/perl5222delta.pod --- perl-5.32.1/pod/perl5222delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5222delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -17,12 +17,12 @@ =head2 Fix out of boundary access in Win32 path handling This is CVE-2015-8608. For more information see -L<[perl #126755]|https://rt.perl.org/Ticket/Display.html?id=126755>. +L<[GH #15067]|https://github.com/Perl/perl5/issues/15067>. =head2 Fix loss of taint in C This is CVE-2015-8607. For more information see -L<[perl #126862]|https://rt.perl.org/Ticket/Display.html?id=126862>. +L<[GH #15084]|https://github.com/Perl/perl5/issues/15084>. =head2 Set proper umask before calling C @@ -37,14 +37,14 @@ This has been fixed by using umask C<0177> instead. -L<[perl #127322]|https://rt.perl.org/Ticket/Display.html?id=127322> +L<[GH #15135]|https://github.com/Perl/perl5/issues/15135> =head2 Avoid accessing uninitialized memory in Win32 C Validation that will detect both a short salt and invalid characters in the salt has been added. -L<[perl #126922]|https://rt.perl.org/Ticket/Display.html?id=126922> +L<[GH #15091]|https://github.com/Perl/perl5/issues/15091> =head2 Remove duplicate environment variables from C @@ -84,7 +84,7 @@ The version number of L listed for Perl 5.18.4 was wrong and has been corrected. Likewise for the version number of L in 5.18.3 and 5.18.4. -L<[perl #127624]|https://rt.perl.org/Ticket/Display.html?id=127624> +L<[GH #15202]|https://github.com/Perl/perl5/issues/15202> =back @@ -126,14 +126,14 @@ Previously the probe would fail and cause a build failure. -L<[perl #122287]|https://rt.perl.org/Ticket/Display.html?id=122287> +L<[GH #13985]|https://github.com/Perl/perl5/issues/13985> =item * F no longer probes for F by default. Originally this was the "New Math" library, but the name has been re-used by the GNOME NetworkManager. -L<[perl #127131]|https://rt.perl.org/Ticket/Display.html?id=127131> +L<[GH #15115]|https://github.com/Perl/perl5/issues/15115> =item * @@ -155,7 +155,7 @@ Compiling perl with B<-Dusecbacktrace> on Darwin now works again. -L<[perl #127764]|https://rt.perl.org/Ticket/Display.html?id=127764> +L<[GH #15245]|https://github.com/Perl/perl5/issues/15245> =item OS X/Darwin @@ -166,7 +166,7 @@ Perl now uses C/C to update the environment on OS X. -L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240> +L<[GH #14955]|https://github.com/Perl/perl5/issues/14955> =item ppc64el @@ -190,7 +190,7 @@ (or definition) of the same subroutine with an attribute was causing an assertion failure because of a null pointer. -L<[perl #126845]|https://rt.perl.org/Ticket/Display.html?id=126845> +L<[GH #15081]|https://github.com/Perl/perl5/issues/15081> =back @@ -202,7 +202,7 @@ Calls to the placeholder C<&PL_sv_yes> used internally when an C or C method isn't found now correctly handle scalar context. -L<[perl #126042]|https://rt.perl.org/Ticket/Display.html?id=126042> +L<[GH #14902]|https://github.com/Perl/perl5/issues/14902> =item * @@ -210,19 +210,19 @@ instead of producing the correct error message. The condition asserted on is detected and reported on correctly without the assertions, so the assertions were removed. -L<[perl #126480]|https://rt.perl.org/Ticket/Display.html?id=126480> +L<[GH #15015]|https://github.com/Perl/perl5/issues/15015> =item * In some cases, failing to parse a here-doc would attempt to use freed memory. This was caused by a pointer not being restored correctly. -L<[perl #126443]|https://rt.perl.org/Ticket/Display.html?id=126443> +L<[GH #15009]|https://github.com/Perl/perl5/issues/15009> =item * Perl now reports more context when it sees an array where it expects to see an operator, and avoids an assertion failure. -L<[perl #123737]|https://rt.perl.org/Ticket/Display.html?id=123737> +L<[GH #14472]|https://github.com/Perl/perl5/issues/14472> =item * @@ -230,19 +230,19 @@ read end of file, and the here-doc was not terminated, perl could produce an assertion or a segmentation fault. This now reliably complains about the unterminated here-doc. -L<[perl #125540]|https://rt.perl.org/Ticket/Display.html?id=125540> +L<[GH #14789]|https://github.com/Perl/perl5/issues/14789> =item * Parsing beyond the end of the buffer when processing a C<#line> directive with no filename is now avoided. -L<[perl #127334]|https://rt.perl.org/Ticket/Display.html?id=127334> +L<[GH #15139]|https://github.com/Perl/perl5/issues/15139> =item * Perl 5.22.0 added support for the C99 hexadecimal floating point notation, but sometimes misparsed hex floats. This has been fixed. -L<[perl #127183]|https://rt.perl.org/Ticket/Display.html?id=127183> +L<[GH #15120]|https://github.com/Perl/perl5/issues/15120> =item * @@ -250,56 +250,56 @@ bracketed character class, and matching something else optionally would improperly fail to match. An example of one that could fail is C. This has been fixed. -L<[perl #127537]|https://rt.perl.org/Ticket/Display.html?id=127537> +L<[GH #15181]|https://github.com/Perl/perl5/issues/15181> =item * Fixed an issue with L|perlfunc/pack> where C<< pack "H" >> (and C<< pack "h" >>) could read past the source when given a non-utf8 source and a utf8 target. -L<[perl #126325]|https://rt.perl.org/Ticket/Display.html?id=126325> +L<[GH #14977]|https://github.com/Perl/perl5/issues/14977> =item * Fixed some cases where perl would abort due to a segmentation fault, or a C-level assert. -L<[perl #126193]|https://rt.perl.org/Ticket/Display.html?id=126193> -L<[perl #126257]|https://rt.perl.org/Ticket/Display.html?id=126257> -L<[perl #126258]|https://rt.perl.org/Ticket/Display.html?id=126258> -L<[perl #126405]|https://rt.perl.org/Ticket/Display.html?id=126405> -L<[perl #126602]|https://rt.perl.org/Ticket/Display.html?id=126602> -L<[perl #127773]|https://rt.perl.org/Ticket/Display.html?id=127773> -L<[perl #127786]|https://rt.perl.org/Ticket/Display.html?id=127786> +L<[GH #14941]|https://github.com/Perl/perl5/issues/14941> +L<[GH #14962]|https://github.com/Perl/perl5/issues/14962> +L<[GH #14963]|https://github.com/Perl/perl5/issues/14963> +L<[GH #14997]|https://github.com/Perl/perl5/issues/14997> +L<[GH #15039]|https://github.com/Perl/perl5/issues/15039> +L<[GH #15247]|https://github.com/Perl/perl5/issues/15247> +L<[GH #15251]|https://github.com/Perl/perl5/issues/15251> =item * A memory leak when setting C<$ENV{foo}> on Darwin has been fixed. -L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240> +L<[GH #14955]|https://github.com/Perl/perl5/issues/14955> =item * Perl now correctly raises an error when trying to compile patterns with unterminated character classes while there are trailing backslashes. -L<[perl #126141]|https://rt.perl.org/Ticket/Display.html?id=126141> +L<[GH #14919]|https://github.com/Perl/perl5/issues/14919> =item * C regops and C regops in C are now handled properly. -L<[perl #126206]|https://rt.perl.org/Ticket/Display.html?id=126206> +L<[GH #14945]|https://github.com/Perl/perl5/issues/14945> =item * Perl now only tests C if we have everything needed to use it. In FreeBSD the C entry point may exist, but it can be disabled by policy. -L<[perl #127533]|https://rt.perl.org/Ticket/Display.html?id=127533> +L<[GH #15180]|https://github.com/Perl/perl5/issues/15180> =item * A regression that allowed undeclared barewords as hash keys to work despite strictures has been fixed. -L<[perl #126981]|https://rt.perl.org/Ticket/Display.html?id=126981> +L<[GH #15099]|https://github.com/Perl/perl5/issues/15099> =item * diff -Nru perl-5.32.1/pod/perl5223delta.pod perl-5.34.0/pod/perl5223delta.pod --- perl-5.32.1/pod/perl5223delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5223delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -198,7 +198,7 @@ L has been upgraded from version 0.20 to 0.20_01, fixing a security hole in which binary files could be loaded from a path outside of C<@INC>. -L<[perl #128528]|https://rt.perl.org/Public/Bug/Display.html?id=128528> +L<[GH #15418]|https://github.com/Perl/perl5/issues/15418> =back diff -Nru perl-5.32.1/pod/perl5224delta.pod perl-5.34.0/pod/perl5224delta.pod --- perl-5.32.1/pod/perl5224delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5224delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -55,7 +55,7 @@ Fixed a crash with C where it thought it was dealing with UTF-8 when it wasn't. -L<[perl #129038]|https://rt.perl.org/Ticket/Display.html?id=129038> +L<[GH #15543]|https://github.com/Perl/perl5/issues/15543> =back diff -Nru perl-5.32.1/pod/perl5240delta.pod perl-5.34.0/pod/perl5240delta.pod --- perl-5.32.1/pod/perl5240delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5240delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -117,18 +117,18 @@ =head2 Fix out of boundary access in Win32 path handling This is CVE-2015-8608. For more information see -L<[perl #126755]|https://rt.perl.org/Ticket/Display.html?id=126755> +L<[GH #15067]|https://github.com/Perl/perl5/issues/15067> =head2 Fix loss of taint in canonpath This is CVE-2015-8607. For more information see -L<[perl #126862]|https://rt.perl.org/Ticket/Display.html?id=126862> +L<[GH #15084]|https://github.com/Perl/perl5/issues/15084> =head2 Avoid accessing uninitialized memory in win32 C Added validation that will detect both a short salt and invalid characters in the salt. -L<[perl #126922]|https://rt.perl.org/Ticket/Display.html?id=126922> +L<[GH #15091]|https://github.com/Perl/perl5/issues/15091> =head2 Remove duplicate environment variables from C @@ -201,9 +201,9 @@ my ($x, my($y)); our (my $x); -L<[perl #125587]|https://rt.perl.org/Ticket/Display.html?id=125587> +L<[GH #14799]|https://github.com/Perl/perl5/issues/14799> -L<[perl #121058]|https://rt.perl.org/Ticket/Display.html?id=121058> +L<[GH #13548]|https://github.com/Perl/perl5/issues/13548> =head2 The C character class has been removed. @@ -858,7 +858,7 @@ =item * Better explain meaning of negative PIDs in C. -L<[perl #127080]|https://rt.perl.org/Ticket/Display.html?id=127080> +L<[GH #15108]|https://github.com/Perl/perl5/issues/15108> =item * @@ -996,7 +996,7 @@ The documentation of C<$@> was reworded to clarify that it is not just for syntax errors in C. -L<[perl #124034]|https://rt.perl.org/Ticket/Display.html?id=124034> +L<[GH #14572]|https://github.com/Perl/perl5/issues/14572> =item * @@ -1101,7 +1101,7 @@ Accessing the C part of a glob as C instead of C is no longer deprecated. It is discouraged to encourage uniformity (so that, for example, one can grep more easily) but it will not be removed. -L<[perl #127060]|https://rt.perl.org/Ticket/Display.html?id=127060> +L<[GH #15105]|https://github.com/Perl/perl5/issues/15105> =item * @@ -1145,7 +1145,7 @@ F no longer probes for F by default. Originally this was the "New Math" library, but the name has been re-used by the GNOME NetworkManager. -L<[perl #127131]|https://rt.perl.org/Ticket/Display.html?id=127131> +L<[GH #15115]|https://github.com/Perl/perl5/issues/15115> =item * @@ -1239,7 +1239,7 @@ =item * Tests are more robust against unusual cygdrive prefixes. -L<[perl #126834]|https://rt.perl.org/Ticket/Display.html?id=126834> +L<[GH #15076]|https://github.com/Perl/perl5/issues/15076> =back @@ -1287,7 +1287,7 @@ =item * Use the C function from FreeBSD if it is available. -L<[perl #126847]|https://rt.perl.org/Ticket/Display.html?id=126847> +L<[GH #15082]|https://github.com/Perl/perl5/issues/15082> =back @@ -1300,12 +1300,12 @@ Under some circumstances IRIX stdio C and C set the errno to C, which made no sense according to either IRIX or POSIX docs. Errno is now cleared in such cases. -L<[perl #123977]|https://rt.perl.org/Ticket/Display.html?id=123977> +L<[GH #14557]|https://github.com/Perl/perl5/issues/14557> =item * Problems when multiplying long doubles by infinity have been fixed. -L<[perl #126396]|https://rt.perl.org/Ticket/Display.html?id=126396> +L<[GH #14993]|https://github.com/Perl/perl5/issues/14993> =back @@ -1337,7 +1337,7 @@ C function to update the environment. Perl now uses C/C to update the environment on OS X. -L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240> +L<[GH #14955]|https://github.com/Perl/perl5/issues/14955> =back @@ -1635,7 +1635,7 @@ been removed. It was documented as deprecated in Perl 5.20, with a statement that it would be removed early in the 5.21.x series; that has now finally happened. -L<[perl #121351]|https://rt.perl.org/Ticket/Display.html?id=121351> +L<[GH #13632]|https://github.com/Perl/perl5/issues/13632> =item * @@ -1644,7 +1644,7 @@ definition with a prototype has been seen, then any subsequent stub (or definition) of the same subroutine with an attribute was causing an assertion failure because of a null pointer. -L<[perl #126845]|https://rt.perl.org/Ticket/Display.html?id=126845> +L<[GH #15081]|https://github.com/Perl/perl5/issues/15081> =item * @@ -1852,35 +1852,35 @@ A regression that allowed undeclared barewords in hash keys to work despite strictures has been fixed. -L<[perl #126981]|https://rt.perl.org/Ticket/Display.html?id=126981> +L<[GH #15099]|https://github.com/Perl/perl5/issues/15099> =item * Calls to the placeholder C<&PL_sv_yes> used internally when an C or C method isn't found now correctly handle scalar context. -L<[perl #126042]|https://rt.perl.org/Ticket/Display.html?id=126042> +L<[GH #14902]|https://github.com/Perl/perl5/issues/14902> =item * Report more context when we see an array where we expect to see an operator and avoid an assertion failure. -L<[perl #123737]|https://rt.perl.org/Ticket/Display.html?id=123737> +L<[GH #14472]|https://github.com/Perl/perl5/issues/14472> =item * Modifying an array that was previously a package C<@ISA> no longer causes assertion failures or crashes. -L<[perl #123788]|https://rt.perl.org/Ticket/Display.html?id=123788> +L<[GH #14492]|https://github.com/Perl/perl5/issues/14492> =item * Retain binary compatibility across plain and DEBUGGING perl builds. -L<[perl #127212]|https://rt.perl.org/Ticket/Display.html?id=127212> +L<[GH #15122]|https://github.com/Perl/perl5/issues/15122> =item * Avoid leaking memory when setting C<$ENV{foo}> on darwin. -L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240> +L<[GH #14955]|https://github.com/Perl/perl5/issues/14955> =item * @@ -1894,7 +1894,7 @@ In some cases operators that return integers would return negative integers as large positive integers. -L<[perl #126635]|https://rt.perl.org/Ticket/Display.html?id=126635> +L<[GH #15049]|https://github.com/Perl/perl5/issues/15049> =item * @@ -1902,27 +1902,27 @@ producing the correct error message. The condition asserted on is detected and reported on correctly without the assertions, so the assertions were removed. -L<[perl #126480]|https://rt.perl.org/Ticket/Display.html?id=126480> +L<[GH #15015]|https://github.com/Perl/perl5/issues/15015> =item * In some cases, failing to parse a here-doc would attempt to use freed memory. This was caused by a pointer not being restored correctly. -L<[perl #126443]|https://rt.perl.org/Ticket/Display.html?id=126443> +L<[GH #15009]|https://github.com/Perl/perl5/issues/15009> =item * C<< @x = sort { *a = 0; $a <=> $b } 0 .. 1 >> no longer frees the GP for *a before restoring its SV slot. -L<[perl #124097]|https://rt.perl.org/Ticket/Display.html?id=124097> +L<[GH #14595]|https://github.com/Perl/perl5/issues/14595> =item * Multiple problems with the new hexadecimal floating point printf format C<%a> were fixed: -L<[perl #126582]|https://rt.perl.org/Ticket/Display.html?id=126582>, -L<[perl #126586]|https://rt.perl.org/Ticket/Display.html?id=126586>, -L<[perl #126822]|https://rt.perl.org/Ticket/Display.html?id=126822> +L<[GH #15032]|https://github.com/Perl/perl5/issues/15032>, +L<[GH #15033]|https://github.com/Perl/perl5/issues/15033>, +L<[GH #15074]|https://github.com/Perl/perl5/issues/15074> =item * @@ -1982,7 +1982,7 @@ There were places in regular expression patterns where comments (C<(?#...)>) weren't allowed, but should have been. This is now fixed. -L<[perl #116639]|https://rt.perl.org/Ticket/Display.html?id=116639> +L<[GH #12755]|https://github.com/Perl/perl5/issues/12755> =item * @@ -1990,15 +1990,15 @@ L|perlrecharclass/Extended Bracketed Character Classes> constructs within regular expression patterns could cause a segfault instead of a proper error message. -L<[perl #126180]|https://rt.perl.org/Ticket/Display.html?id=126180> -L<[perl #126404]|https://rt.perl.org/Ticket/Display.html?id=126404> +L<[GH #14933]|https://github.com/Perl/perl5/issues/14933> +L<[GH #14996]|https://github.com/Perl/perl5/issues/14996> =item * Another problem with L|perlrecharclass/Extended Bracketed Character Classes> constructs has been fixed wherein things like C<\c]> could cause panics. -L<[perl #126181]|https://rt.perl.org/Ticket/Display.html?id=126181> +L<[GH #14934]|https://github.com/Perl/perl5/issues/14934> =item * @@ -2011,20 +2011,20 @@ Formerly perl may have crashed, depending on the exact value of C<$big_number>; now it will typically raise an exception. -L<[perl #125937]|https://rt.perl.org/Ticket/Display.html?id=125937> +L<[GH #14880]|https://github.com/Perl/perl5/issues/14880> =item * In a regex conditional expression C<(?(condition)yes-pattern|no-pattern)>, if the condition is C<(?!)> then perl failed the match outright instead of matching the no-pattern. This has been fixed. -L<[perl #126222]|https://rt.perl.org/Ticket/Display.html?id=126222> +L<[GH #14947]|https://github.com/Perl/perl5/issues/14947> =item * The special backtracking control verbs C<(*VERB:ARG)> now all allow an optional argument and set C/C appropriately as well. -L<[perl #126186]|https://rt.perl.org/Ticket/Display.html?id=126186> +L<[GH #14937]|https://github.com/Perl/perl5/issues/14937> =item * @@ -2032,7 +2032,7 @@ checking constructs (introduced in Perl 5.22) C<\b{gcb}>, C<\b{sb}>, C<\b{wb}>, C<\B{gcb}>, C<\B{sb}>, and C<\B{wb}>. All the C<\B{}> ones now match an empty string; none of the C<\b{}> ones do. -L<[perl #126319]|https://rt.perl.org/Ticket/Display.html?id=126319> +L<[GH #14976]|https://github.com/Perl/perl5/issues/14976> =item * @@ -2088,7 +2088,7 @@ Very large code-points (beyond Unicode) in regular expressions no longer cause a buffer overflow in some cases when converted to UTF-8. -L<[perl #125826]|https://rt.perl.org/Ticket/Display.html?id=125826> +L<[GH #14858]|https://github.com/Perl/perl5/issues/14858> =item * @@ -2096,12 +2096,12 @@ context now correctly handles the case where the size of the range is larger than the address space. This could happen on 32-bits with -Duse64bitint. -L<[perl #125781]|https://rt.perl.org/Ticket/Display.html?id=125781> +L<[GH #14843]|https://github.com/Perl/perl5/issues/14843> =item * A crash with C<< %::=(); J->${\"::"} >> has been fixed. -L<[perl #125541]|https://rt.perl.org/Ticket/Display.html?id=125541> +L<[GH #14790]|https://github.com/Perl/perl5/issues/14790> =item * diff -Nru perl-5.32.1/pod/perl5241delta.pod perl-5.34.0/pod/perl5241delta.pod --- perl-5.32.1/pod/perl5241delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5241delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -194,7 +194,7 @@ L has been upgraded from version 0.21 to 0.22, fixing a security hole in which binary files could be loaded from a path outside of C<@INC>. -L<[perl #128528]|https://rt.perl.org/Public/Bug/Display.html?id=128528> +L<[GH #15418]|https://github.com/Perl/perl5/issues/15418> =back diff -Nru perl-5.32.1/pod/perl5242delta.pod perl-5.34.0/pod/perl5242delta.pod --- perl-5.32.1/pod/perl5242delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5242delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -55,7 +55,7 @@ Fixed a crash with C where it thought it was dealing with UTF-8 when it wasn't. -L<[perl #129038]|https://rt.perl.org/Ticket/Display.html?id=129038> +L<[GH #15543]|https://github.com/Perl/perl5/issues/15543> =back diff -Nru perl-5.32.1/pod/perl5243delta.pod perl-5.34.0/pod/perl5243delta.pod --- perl-5.32.1/pod/perl5243delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5243delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -19,20 +19,20 @@ Compiling certain regular expression patterns with the case-insensitive modifier could cause a heap buffer overflow and crash perl. This has now been fixed. -L<[perl #131582]|https://rt.perl.org/Public/Bug/Display.html?id=131582> +L<[GH #16021]|https://github.com/Perl/perl5/issues/16021> =head2 [CVE-2017-12883] Buffer over-read in regular expression parser For certain types of syntax error in a regular expression pattern, the error message could either contain the contents of a random, possibly large, chunk of memory, or could crash perl. This has now been fixed. -L<[perl #131598]|https://rt.perl.org/Public/Bug/Display.html?id=131598> +L<[GH #16025]|https://github.com/Perl/perl5/issues/16025> =head2 [CVE-2017-12814] C<$ENV{$key}> stack buffer overflow on Windows A possible stack buffer overflow in the C<%ENV> code on Windows has been fixed by removing the buffer completely since it was superfluous anyway. -L<[perl #131665]|https://rt.perl.org/Public/Bug/Display.html?id=131665> +L<[GH #16051]|https://github.com/Perl/perl5/issues/16051> =head1 Incompatible Changes @@ -59,9 +59,9 @@ L has been upgraded from version 1.9733 to 1.9741. -L<[perl #128427]|https://rt.perl.org/Public/Bug/Display.html?id=128427> -L<[perl #128445]|https://rt.perl.org/Public/Bug/Display.html?id=128445> -L<[perl #128972]|https://rt.perl.org/Public/Bug/Display.html?id=128972> +L<[GH #15396]|https://github.com/Perl/perl5/issues/15396> +L<[GH #15401]|https://github.com/Perl/perl5/issues/15401> +L<[GH #15524]|https://github.com/Perl/perl5/issues/15524> L<[cpan #120032]|https://rt.cpan.org/Public/Bug/Display.html?id=120032> =back @@ -75,19 +75,19 @@ When building with GCC 6 and link-time optimization (the B<-flto> option to B), F was treating all probed symbols as present on the system, regardless of whether they actually exist. This has been fixed. -L<[perl #128131]|https://rt.perl.org/Public/Bug/Display.html?id=128131> +L<[GH #15322]|https://github.com/Perl/perl5/issues/15322> =item * F now aborts if both C<-Duselongdouble> and C<-Dusequadmath> are requested. -L<[perl #126203]|https://rt.perl.org/Public/Bug/Display.html?id=126203> +L<[GH #14944]|https://github.com/Perl/perl5/issues/14944> =item * Fixed a bug in which F could append C<-quadmath> to the archname even if it was already present. -L<[perl #128538]|https://rt.perl.org/Public/Bug/Display.html?id=128538> +L<[GH #15423]|https://github.com/Perl/perl5/issues/15423> =item * @@ -120,7 +120,7 @@ Building XS modules with GCC 6 in a 64-bit build of Perl failed due to incorrect mapping of C and C. This has now been fixed. -L<[perl #131726]|https://rt.perl.org/Public/Bug/Display.html?id=131726> +L<[GH #16074]|https://github.com/Perl/perl5/issues/16074> L<[cpan #121683]|https://rt.cpan.org/Public/Bug/Display.html?id=121683> L<[cpan #122353]|https://rt.cpan.org/Public/Bug/Display.html?id=122353> @@ -136,14 +136,14 @@ C<< /@0{0*-E@*/*0 >> and similar contortions used to crash, but no longer do, but merely produce a syntax error. -L<[perl #128171]|https://rt.perl.org/Public/Bug/Display.html?id=128171> +L<[GH #15333]|https://github.com/Perl/perl5/issues/15333> =item * C or C with an argument which is a reference or typeglob which, when stringified, contains a null character, started crashing in Perl 5.20, but has now been fixed. -L<[perl #128182]|https://rt.perl.org/Public/Bug/Display.html?id=128182> +L<[GH #15337]|https://github.com/Perl/perl5/issues/15337> =item * @@ -155,88 +155,88 @@ The same was true of C and C statement modifiers, though with the left-hand and right-hand sides swapped. This long-standing bug has now been fixed. -L<[perl #127952]|https://rt.perl.org/Public/Bug/Display.html?id=127952> +L<[GH #15285]|https://github.com/Perl/perl5/issues/15285> =item * C with an argument no longer crashes when encountering stash entries other than globs. -L<[perl #128106]|https://rt.perl.org/Public/Bug/Display.html?id=128106> +L<[GH #15314]|https://github.com/Perl/perl5/issues/15314> =item * Assignment of hashes to, and deletion of, typeglobs named C<*::::::> no longer causes crashes. -L<[perl #128086]|https://rt.perl.org/Public/Bug/Display.html?id=128086> +L<[GH #15307]|https://github.com/Perl/perl5/issues/15307> =item * Assignment variants of any bitwise ops under the C feature would crash if the left-hand side was an array or hash. -L<[perl #128204]|https://rt.perl.org/Public/Bug/Display.html?id=128204> +L<[GH #15346]|https://github.com/Perl/perl5/issues/15346> =item * C now leaves the error code returned by the system in C<$!> on failure. -L<[perl #128316]|https://rt.perl.org/Public/Bug/Display.html?id=128316> +L<[GH #15383]|https://github.com/Perl/perl5/issues/15383> =item * Parsing bad POSIX charclasses no longer leaks memory. -L<[perl #128313]|https://rt.perl.org/Public/Bug/Display.html?id=128313> +L<[GH #15382]|https://github.com/Perl/perl5/issues/15382> =item * Since Perl 5.20, line numbers have been off by one when perl is invoked with the B<-x> switch. This has been fixed. -L<[perl #128508]|https://rt.perl.org/Public/Bug/Display.html?id=128508> +L<[GH #15413]|https://github.com/Perl/perl5/issues/15413> =item * Some obscure cases of subroutines and file handles being freed at the same time could result in crashes, but have been fixed. The crash was introduced in Perl 5.22. -L<[perl #128597]|https://rt.perl.org/Public/Bug/Display.html?id=128597> +L<[GH #15435]|https://github.com/Perl/perl5/issues/15435> =item * Some regular expression parsing glitches could lead to assertion failures with regular expressions such as C=/> and C!/>. This has now been fixed. -L<[perl #128170]|https://rt.perl.org/Public/Bug/Display.html?id=128170> +L<[GH #15332]|https://github.com/Perl/perl5/issues/15332> =item * C and similar functions now perform a null check internally, to avoid crashing with the torsocks library. This was a regression from Perl 5.22. -L<[perl #128740]|https://rt.perl.org/Public/Bug/Display.html?id=128740> +L<[GH #15478]|https://github.com/Perl/perl5/issues/15478> =item * Mentioning the same constant twice in a row (which is a syntax error) no longer fails an assertion under debugging builds. This was a regression from Perl 5.20. -L<[perl #126482]|https://rt.perl.org/Public/Bug/Display.html?id=126482> +L<[GH #15017]|https://github.com/Perl/perl5/issues/15017> =item * In Perl 5.24 C was changed not to accept negative one as an argument because in some platforms that is an error. However, in some other platforms that is an acceptable argument. This change has been reverted. -L<[perl #128967]|https://rt.perl.org/Public/Bug/Display.html?id=128967>. +L<[GH #15523]|https://github.com/Perl/perl5/issues/15523>. =item * C<@{x> followed by a newline where C<"x"> represents a control or non-ASCII character no longer produces a garbled syntax error message or a crash. -L<[perl #128951]|https://rt.perl.org/Public/Bug/Display.html?id=128951> +L<[GH #15518]|https://github.com/Perl/perl5/issues/15518> =item * A regression in Perl 5.24 with C when the code point was between 128 and 255 has been fixed. -L<[perl #128734]|https://rt.perl.org/Public/Bug/Display.html?id=128734>. +L<[GH #15475]|https://github.com/Perl/perl5/issues/15475>. =item * @@ -246,30 +246,30 @@ numbers (64-bit or 128-bit) and the x86 80-bit "extended precision". Note that subnormal hexadecimal floating point literals will give a warning about "exponent underflow". -L<[perl #128843]|https://rt.perl.org/Public/Bug/Display.html?id=128843> -L<[perl #128888]|https://rt.perl.org/Public/Bug/Display.html?id=128888> -L<[perl #128889]|https://rt.perl.org/Public/Bug/Display.html?id=128889> -L<[perl #128890]|https://rt.perl.org/Public/Bug/Display.html?id=128890> -L<[perl #128893]|https://rt.perl.org/Public/Bug/Display.html?id=128893> -L<[perl #128909]|https://rt.perl.org/Public/Bug/Display.html?id=128909> -L<[perl #128919]|https://rt.perl.org/Public/Bug/Display.html?id=128919> +L<[GH #15495]|https://github.com/Perl/perl5/issues/15495> +L<[GH #15502]|https://github.com/Perl/perl5/issues/15502> +L<[GH #15503]|https://github.com/Perl/perl5/issues/15503> +L<[GH #15504]|https://github.com/Perl/perl5/issues/15504> +L<[GH #15505]|https://github.com/Perl/perl5/issues/15505> +L<[GH #15510]|https://github.com/Perl/perl5/issues/15510> +L<[GH #15512]|https://github.com/Perl/perl5/issues/15512> =item * The parser could sometimes crash if a bareword came after C. -L<[perl #129196]|https://rt.perl.org/Public/Bug/Display.html?id=129196> +L<[GH #15586]|https://github.com/Perl/perl5/issues/15586> =item * Fixed a place where the regex parser was not setting the syntax error correctly on a syntactically incorrect pattern. -L<[perl #129122]|https://rt.perl.org/Public/Bug/Display.html?id=129122> +L<[GH #15565]|https://github.com/Perl/perl5/issues/15565> =item * A vulnerability in Perl's C implementation has been fixed by avoiding a possible memory wrap. -L<[perl #131260]|https://rt.perl.org/Public/Bug/Display.html?id=131260> +L<[GH #15970]|https://github.com/Perl/perl5/issues/15970> =back diff -Nru perl-5.32.1/pod/perl5244delta.pod perl-5.34.0/pod/perl5244delta.pod --- perl-5.32.1/pod/perl5244delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5244delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -18,18 +18,18 @@ A crafted regular expression could cause a heap buffer write overflow, with control over the bytes written. -L<[perl #132227]|https://rt.perl.org/Public/Bug/Display.html?id=132227> +L<[GH #16185]|https://github.com/Perl/perl5/issues/16185> =head2 [CVE-2018-6798] Heap-buffer-overflow in Perl__byte_dump_string (utf8.c) Matching a crafted locale dependent regular expression could cause a heap buffer read overflow and potentially information disclosure. -L<[perl #132063]|https://rt.perl.org/Public/Bug/Display.html?id=132063> +L<[GH #16143]|https://github.com/Perl/perl5/issues/16143> =head2 [CVE-2018-6913] heap-buffer-overflow in S_pack_rec C could cause a heap buffer write overflow with a large item count. -L<[perl #131844]|https://rt.perl.org/Public/Bug/Display.html?id=131844> +L<[GH #16098]|https://github.com/Perl/perl5/issues/16098> =head2 Assertion failure in Perl__core_swash_init (utf8.c) @@ -66,7 +66,7 @@ The C built-in function now checks at compile time that it has only one parameter expression, and puts it in scalar context, thus ensuring that it doesn't corrupt the stack at runtime. -L<[perl #4574]|https://rt.perl.org/Public/Bug/Display.html?id=4574> +L<[GH #2793]|https://github.com/Perl/perl5/issues/2793> =back diff -Nru perl-5.32.1/pod/perl5260delta.pod perl-5.34.0/pod/perl5260delta.pod --- perl-5.32.1/pod/perl5260delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5260delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -433,7 +433,7 @@ This makes the lvalue sub case consistent with C<(keys %hash) = ...> and C<(keys @_) = ...>, which are also errors. -L<[perl #128187]|https://rt.perl.org/Public/Bug/Display.html?id=128187> +L<[GH #15339]|https://github.com/Perl/perl5/issues/15339> =head2 The C<${^ENCODING}> facility has been removed @@ -622,7 +622,7 @@ L has been upgraded from version 1.05 to 1.06. It now uses 3-arg C instead of 2-arg C. -L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> +L<[GH #15721]|https://github.com/Perl/perl5/issues/15721> =item * @@ -683,14 +683,14 @@ L has been upgraded from version 1.05 to 1.06. It now uses 3-arg C instead of 2-arg C. -L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> +L<[GH #15721]|https://github.com/Perl/perl5/issues/15721> =item * L has been upgraded from version 1.34 to 1.36. It now uses 3-arg C instead of 2-arg C. -L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> +L<[GH #15721]|https://github.com/Perl/perl5/issues/15721> =item * @@ -733,14 +733,14 @@ It now documents that using C<%!> automatically loads Errno for you. It now uses 3-arg C instead of 2-arg C. -L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> +L<[GH #15721]|https://github.com/Perl/perl5/issues/15721> =item * L has been upgraded from version 1.33 to 1.34. It now uses 3-arg C instead of 2-arg C. -L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> +L<[GH #15721]|https://github.com/Perl/perl5/issues/15721> =item * @@ -790,7 +790,7 @@ It no longer treats C immediately following C as end-of-file. -L<[perl #107726]|https://rt.perl.org/Public/Bug/Display.html?id=107726> +L<[GH #11853]|https://github.com/Perl/perl5/issues/11853> =item * @@ -815,7 +815,7 @@ L has been upgraded from version 0.40 to 0.42. It now uses 3-arg C instead of 2-arg C. -L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> +L<[GH #15721]|https://github.com/Perl/perl5/issues/15721> =item * @@ -842,7 +842,7 @@ L has been upgraded from version 0.63 to 0.64. It now uses 3-arg C instead of 2-arg C. -L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> +L<[GH #15721]|https://github.com/Perl/perl5/issues/15721> =item * @@ -920,7 +920,7 @@ L has been upgraded from version 1.11 to 1.12. It now uses 3-arg C instead of 2-arg C. -L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> +L<[GH #15721]|https://github.com/Perl/perl5/issues/15721> =item * @@ -937,7 +937,7 @@ L has been upgraded from version 1.50 to 1.51. It now ignores F on non-Unix systems. -L<[perl #113960]|https://rt.perl.org/Public/Bug/Display.html?id=113960> +L<[GH #12244]|https://github.com/Perl/perl5/issues/12244> =item * @@ -988,7 +988,7 @@ L has been upgraded from version 1.65 to 1.76. This remedies several defects in making its symbols exportable. -L<[perl #127821]|https://rt.perl.org/Public/Bug/Display.html?id=127821> +L<[GH #15260]|https://github.com/Perl/perl5/issues/15260> The C interface has been removed, see L. @@ -1042,7 +1042,7 @@ L has been upgraded from version 2.56 to 2.62. Fixes -L<[perl #130098]|https://rt.perl.org/Public/Bug/Display.html?id=130098>. +L<[GH #15714]|https://github.com/Perl/perl5/issues/15714>. =item * @@ -1061,14 +1061,14 @@ L has been upgraded from version 1.15 to 1.16. It now uses 3-arg C instead of 2-arg C. -L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> +L<[GH #15721]|https://github.com/Perl/perl5/issues/15721> =item * L has been upgraded from version 1.28 to 1.30. It now uses 3-arg C instead of 2-arg C. -L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> +L<[GH #15721]|https://github.com/Perl/perl5/issues/15721> =item * @@ -1122,7 +1122,7 @@ L has been upgraded from version 0.64 to 0.68. It now uses 3-arg C instead of 2-arg C. -L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> +L<[GH #15721]|https://github.com/Perl/perl5/issues/15721> =item * @@ -1133,7 +1133,7 @@ L has been upgraded from version 1.06 to 1.08. It now uses 3-arg C instead of 2-arg C. -L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> +L<[GH #15721]|https://github.com/Perl/perl5/issues/15721> =item * @@ -1151,7 +1151,7 @@ outside of L|perlvar/@INC>. It now uses 3-arg C instead of 2-arg C. -L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> +L<[GH #15721]|https://github.com/Perl/perl5/issues/15721> =back @@ -1196,7 +1196,7 @@ Clarified documentation of L|perlfunc/seek>, L|perlfunc/tell> and L|perlfunc/sysseek> emphasizing that positions are in bytes and not characters. -L<[perl #128607]|https://rt.perl.org/Public/Bug/Display.html?id=128607> +L<[GH #15438]|https://github.com/Perl/perl5/issues/15438> =item * @@ -1631,7 +1631,7 @@ |perldiag/Experimental %s on scalar is now forbidden> This message is now followed by more helpful text. -L<[perl #127976]|https://rt.perl.org/Public/Bug/Display.html?id=127976> +L<[GH #15291]|https://github.com/Perl/perl5/issues/15291> =item * @@ -1931,7 +1931,7 @@ =item * The C build process has further changes -L<[perl #130108]|https://rt.perl.org/Public/Bug/Display.html?id=130108>: +L<[GH #15718]|https://github.com/Perl/perl5/issues/15718>: =over @@ -1977,7 +1977,7 @@ F now zeroes out the alignment bytes when calculating the bytes for 80-bit C and C to make builds more reproducible. -L<[perl #130133]|https://rt.perl.org/Public/Bug/Display.html?id=130133> +L<[GH #15725]|https://github.com/Perl/perl5/issues/15725> =item * @@ -2015,7 +2015,7 @@ =item * Cleanup for C support. -L<[perl #129961]|https://rt.perl.org/Public/Bug/Display.html?id=129961> +L<[GH #15683]|https://github.com/Perl/perl5/issues/15683> =item * @@ -2046,13 +2046,13 @@ F now aborts if both C<-Duselongdouble> and C<-Dusequadmath> are requested. -L<[perl #126203]|https://rt.perl.org/Public/Bug/Display.html?id=126203> +L<[GH #14944]|https://github.com/Perl/perl5/issues/14944> =item * Fixed a bug in which F could append C<-quadmath> to the archname even if it was already present. -L<[perl #128538]|https://rt.perl.org/Public/Bug/Display.html?id=128538> +L<[GH #15423]|https://github.com/Perl/perl5/issues/15423> =item * @@ -2065,7 +2065,7 @@ F no longer updates a module's F file when no files require updates. This could cause dependencies, F in particular, to be rebuilt unnecessarily. -L<[perl #126710]|https://rt.perl.org/Public/Bug/Display.html?id=126710> +L<[GH #15060]|https://github.com/Perl/perl5/issues/15060> =item * @@ -2079,7 +2079,7 @@ invoke it with C<-Dusecrosscompiler> but not C<-Dtargethost=somehost>. This means you can supply your target platform C, generate the headers and proceed to build your cross-target perl. -L<[perl #127234]|https://rt.perl.org/Public/Bug/Display.html?id=127234> +L<[GH #15126]|https://github.com/Perl/perl5/issues/15126> =item * @@ -2092,7 +2092,7 @@ When building with GCC 6 and link-time optimization (the C<-flto> option to C), F was treating all probed symbols as present on the system, regardless of whether they actually exist. This has been fixed. -L<[perl #128131]|https://rt.perl.org/Public/Bug/Display.html?id=128131> +L<[GH #15322]|https://github.com/Perl/perl5/issues/15322> =item * @@ -2101,7 +2101,7 @@ older versions of Perl, so F must in turn avoid newer Perl features. Compatibility with Perl 5.8 was inadvertently removed some time ago; it has now been restored. -L<[perl #128052]|https://rt.perl.org/Public/Bug/Display.html?id=128052> +L<[GH #15302]|https://github.com/Perl/perl5/issues/15302> =item * @@ -2175,13 +2175,13 @@ F now tries really hard not to run tests which are located outside of the Perl source tree. -L<[perl #124050]|https://rt.perl.org/Public/Bug/Display.html?id=124050> +L<[GH #14578]|https://github.com/Perl/perl5/issues/14578> =item * Prevent debugger tests (F) from failing due to the contents of C<$ENV{PERLDB_OPTS}>. -L<[perl #130445]|https://rt.perl.org/Public/Bug/Display.html?id=130445> +L<[GH #15782]|https://github.com/Perl/perl5/issues/15782> =back @@ -2327,7 +2327,7 @@ =item DragonFly BSD DragonFly BSD now has support for C. -L<[perl #130068]|https://rt.perl.org/Public/Bug/Display.html?id=130068>. +L<[GH #15703]|https://github.com/Perl/perl5/issues/15703>. =back @@ -2576,67 +2576,67 @@ Perl no longer panics when switching into some locales on machines with buggy C implementations in their F. -L<[perl #121734]|https://rt.perl.org/Public/Bug/Display.html?id=121734> +L<[GH #13768]|https://github.com/Perl/perl5/issues/13768> =item * C< $-{$name} > would leak an C on each access if the regular expression had no named captures. The same applies to access to any hash tied with L and C<< all =E 1 >>. -L<[perl #130822]|https://rt.perl.org/Public/Bug/Display.html?id=130822> +L<[GH #15882]|https://github.com/Perl/perl5/issues/15882> =item * Attempting to use the deprecated variable C<$#> as the object in an indirect object method call could cause a heap use after free or buffer overflow. -L<[perl #129274]|https://rt.perl.org/Public/Bug/Display.html?id=129274> +L<[GH #15599]|https://github.com/Perl/perl5/issues/15599> =item * When checking for an indirect object method call, in some rare cases the parser could reallocate the line buffer but then continue to use pointers to the old buffer. -L<[perl #129190]|https://rt.perl.org/Public/Bug/Display.html?id=129190> +L<[GH #15585]|https://github.com/Perl/perl5/issues/15585> =item * Supplying a glob as the format argument to L|perlfunc/formline> would cause an assertion failure. -L<[perl #130722]|https://rt.perl.org/Public/Bug/Display.html?id=130722> +L<[GH #15862]|https://github.com/Perl/perl5/issues/15862> =item * Code like C< $value1 =~ qr/.../ ~~ $value2 > would have the match converted into a C operator, leaving extra elements on the stack to confuse any surrounding expression. -L<[perl #130705]|https://rt.perl.org/Public/Bug/Display.html?id=130705> +L<[GH #15859]|https://github.com/Perl/perl5/issues/15859> =item * Since v5.24 in some obscure cases, a regex which included code blocks from multiple sources (I, via embedded via C objects) could end up with the wrong current pad and crash or give weird results. -L<[perl #129881]|https://rt.perl.org/Public/Bug/Display.html?id=129881> +L<[GH #15657]|https://github.com/Perl/perl5/issues/15657> =item * Occasionally Cs in a code block within a patterns weren't being undone when the pattern matching backtracked over the code block. -L<[perl #126697]|https://rt.perl.org/Public/Bug/Display.html?id=126697> +L<[GH #15056]|https://github.com/Perl/perl5/issues/15056> =item * Using C to modify a magic variable could access freed memory in some cases. -L<[perl #129340]|https://rt.perl.org/Public/Bug/Display.html?id=129340> +L<[GH #15871]|https://github.com/Perl/perl5/issues/15871> =item * Under C, the entire source code is now checked for being UTF-8 well formed, not just quoted strings as before. -L<[perl #126310]|https://rt.perl.org/Public/Bug/Display.html?id=126310>. +L<[GH #14973]|https://github.com/Perl/perl5/issues/14973>. =item * @@ -2651,7 +2651,7 @@ its return value in scalar context. It could then write a single pointer immediately beyond the end of the memory block allocated for the stack. -L<[perl #130262]|https://rt.perl.org/Public/Bug/Display.html?id=130262> +L<[GH #15749]|https://github.com/Perl/perl5/issues/15749> =item * @@ -2659,14 +2659,14 @@ the current output position aligned at just the right point could cause a write of a single zero byte immediately beyond the end of an allocated buffer. -L<[perl #129149]|https://rt.perl.org/Public/Bug/Display.html?id=129149> +L<[GH #15572]|https://github.com/Perl/perl5/issues/15572> =item * Supplying a format's picture argument as part of the format argument list where the picture specifies modifying the argument could cause an access to the new freed compiled format. -L<[perl #129125]|https://rt.perl.org/Public/Bug/Display.html?id=129125> +L<[GH #15566]|https://github.com/Perl/perl5/issues/15566> =item * @@ -2674,59 +2674,59 @@ function didn't handle large integers that weren't exactly representable by a double. This now uses the same code used to implement the C<< E=E >> operator. -L<[perl #130335]|https://rt.perl.org/Public/Bug/Display.html?id=130335> +L<[GH #15768]|https://github.com/Perl/perl5/issues/15768> =item * Fix issues with CEEOF })/> that broke L. -L<[perl #130398]|https://rt.perl.org/Public/Bug/Display.html?id=130398> +L<[GH #15779]|https://github.com/Perl/perl5/issues/15779> =item * Fixed an assertion failure with C and C, which could be triggered by C. -L<[perl #130198]|https://rt.perl.org/Public/Bug/Display.html?id=130198>. +L<[GH #15738]|https://github.com/Perl/perl5/issues/15738>. =item * Fixed a comment skipping error in patterns under C; it could stop skipping a byte early, which could be in the middle of a UTF-8 character. -L<[perl #130495]|https://rt.perl.org/Public/Bug/Display.html?id=130495>. +L<[GH #15790]|https://github.com/Perl/perl5/issues/15790>. =item * F now ignores F on non-Unix systems. -L<[perl #113960]|https://rt.perl.org/Public/Bug/Display.html?id=113960>; +L<[GH #12244]|https://github.com/Perl/perl5/issues/12244>; =item * Fix assertion failure for C<{}-E$x> when C<$x> isn't defined. -L<[perl #130496]|https://rt.perl.org/Public/Bug/Display.html?id=130496>. +L<[GH #15791]|https://github.com/Perl/perl5/issues/15791>. =item * Fix an assertion error which could be triggered when a lookahead string in patterns exceeded a minimum length. -L<[perl #130522]|https://rt.perl.org/Public/Bug/Display.html?id=130522>. +L<[GH #15796]|https://github.com/Perl/perl5/issues/15796>. =item * Only warn once per literal number about a misplaced C<"_">. -L<[perl #70878]|https://rt.perl.org/Public/Bug/Display.html?id=70878>. +L<[GH #9989]|https://github.com/Perl/perl5/issues/9989>. =item * The C parse code could be looking at uninitialized data after a perse error. -L<[perl #129342]|https://rt.perl.org/Public/Bug/Display.html?id=129342>. +L<[GH #15624]|https://github.com/Perl/perl5/issues/15624>. =item * In a pattern match, a back-reference (C<\1>) to an unmatched capture could read back beyond the start of the string being matched. -L<[perl #129377]|https://rt.perl.org/Public/Bug/Display.html?id=129377>. +L<[GH #15634]|https://github.com/Perl/perl5/issues/15634>. =item * @@ -2739,19 +2739,19 @@ A sub containing a "forward" declaration with the same name (I, C) could sometimes crash or loop infinitely. -L<[perl #129090]|https://rt.perl.org/Public/Bug/Display.html?id=129090> +L<[GH #15557]|https://github.com/Perl/perl5/issues/15557> =item * A crash in executing a regex with a non-anchored UTF-8 substring against a target string that also used UTF-8 has been fixed. -L<[perl #129350]|https://rt.perl.org/Public/Bug/Display.html?id=129350> +L<[GH #15628]|https://github.com/Perl/perl5/issues/15628> =item * Previously, a shebang line like C<#!perl -i u> could be erroneously interpreted as requesting the C<-u> option. This has been fixed. -L<[perl #129336]|https://rt.perl.org/Public/Bug/Display.html?id=129336> +L<[GH #15623]|https://github.com/Perl/perl5/issues/15623> =item * @@ -2761,24 +2761,24 @@ showed up as capture buffers (C<$1>, C<$2>, I) erroneously containing data from regex execution paths that weren't actually executed for the final match. -L<[perl #129897]|https://rt.perl.org/Public/Bug/Display.html?id=129897> +L<[GH #15666]|https://github.com/Perl/perl5/issues/15666> =item * Certain regexes making use of the experimental C feature could trigger an assertion failure. This has been fixed. -L<[perl #129322]|https://rt.perl.org/Public/Bug/Display.html?id=129322> +L<[GH #15620]|https://github.com/Perl/perl5/issues/15620> =item * Invalid assignments to a reference constructor (I, C<\eval=time>) could sometimes crash in addition to giving a syntax error. -L<[perl #125679]|https://rt.perl.org/Public/Bug/Display.html?id=125679> +L<[GH #14815]|https://github.com/Perl/perl5/issues/14815> =item * The parser could sometimes crash if a bareword came after C. -L<[perl #129196]|https://rt.perl.org/Public/Bug/Display.html?id=129196> +L<[GH #15586]|https://github.com/Perl/perl5/issues/15586> =item * @@ -2786,35 +2786,35 @@ AUTOLOAD for non-method") if there was a stub present in the package into which the invocant had been blessed. The warning is no longer emitted in such circumstances. -L<[perl #47047]|https://rt.perl.org/Public/Bug/Display.html?id=47047> +L<[GH #9094]|https://github.com/Perl/perl5/issues/9094> =item * The use of C on arrays with non-existent elements could cause other operators to crash. -L<[perl #129164]|https://rt.perl.org/Public/Bug/Display.html?id=129164> +L<[GH #15577]|https://github.com/Perl/perl5/issues/15577> =item * A possible buffer overrun when a pattern contains a fixed utf8 substring. -L<[perl #129012]|https://rt.perl.org/Public/Bug/Display.html?id=129012> +L<[GH #15534]|https://github.com/Perl/perl5/issues/15534> =item * Fixed two possible use-after-free bugs in perl's lexer. -L<[perl #129069]|https://rt.perl.org/Public/Bug/Display.html?id=129069> +L<[GH #15549]|https://github.com/Perl/perl5/issues/15549> =item * Fixed a crash with C where it thought it was dealing with UTF-8 when it wasn't. -L<[perl #129038]|https://rt.perl.org/Public/Bug/Display.html?id=129038> +L<[GH #15543]|https://github.com/Perl/perl5/issues/15543> =item * Fixed a place where the regex parser was not setting the syntax error correctly on a syntactically incorrect pattern. -L<[perl #129122]|https://rt.perl.org/Public/Bug/Display.html?id=129122> +L<[GH #15565]|https://github.com/Perl/perl5/issues/15565> =item * @@ -2824,18 +2824,18 @@ compilation) still expect there to be a null byte in the string buffer just past the end of the logical string. An assertion failure was the result. -L<[perl #129287]|https://rt.perl.org/Public/Bug/Display.html?id=129287> +L<[GH #15606]|https://github.com/Perl/perl5/issues/15606> =item * Avoid a heap-after-use error in the parser when creating an error messge for a syntactically invalid heredoc. -L<[perl #128988]|https://rt.perl.org/Public/Bug/Display.html?id=128988> +L<[GH #15527]|https://github.com/Perl/perl5/issues/15527> =item * Fix a segfault when run with C<-DC> options on DEBUGGING builds. -L<[perl #129106]|https://rt.perl.org/Public/Bug/Display.html?id=129106> +L<[GH #15563]|https://github.com/Perl/perl5/issues/15563> =item * @@ -2846,14 +2846,14 @@ Fix the perl lexer to correctly handle a backslash as the last char in quoted-string context. This actually fixed two bugs, -L<[perl #129064]|https://rt.perl.org/Public/Bug/Display.html?id=129064> and -L<[perl #129176]|https://rt.perl.org/Public/Bug/Display.html?id=129176>. +L<[GH #15546]|https://github.com/Perl/perl5/issues/15546> and +L<[GH #15582]|https://github.com/Perl/perl5/issues/15582>. =item * In the API function C, rework separator parsing to prevent possible string overrun with an invalid C argument. -L<[perl #129267]|https://rt.perl.org/Public/Bug/Display.html?id=129267> +L<[GH #15598]|https://github.com/Perl/perl5/issues/15598> =item * @@ -2864,13 +2864,13 @@ partially sorted; and under some circumstances accessing C<@a> during the sort could crash the interpreter. Both these issues have been fixed, and Sort functions see the original value of C<@a>. -L<[perl #128340]|https://rt.perl.org/Public/Bug/Display.html?id=128340> +L<[GH #15387]|https://github.com/Perl/perl5/issues/15387> =item * Non-ASCII string delimiters are now reported correctly in error messages for unterminated strings. -L<[perl #128701]|https://rt.perl.org/Public/Bug/Display.html?id=128701> +L<[GH #15469]|https://github.com/Perl/perl5/issues/15469> =item * @@ -2895,7 +2895,7 @@ C and similar functions now perform a null check internally, to avoid crashing with the torsocks library. This was a regression from v5.22. -L<[perl #128740]|https://rt.perl.org/Public/Bug/Display.html?id=128740> +L<[GH #15478]|https://github.com/Perl/perl5/issues/15478> =item * @@ -2907,7 +2907,7 @@ Mentioning the same constant twice in a row (which is a syntax error) no longer fails an assertion under debugging builds. This was a regression from v5.20. -L<[perl #126482]|https://rt.perl.org/Public/Bug/Display.html?id=126482> +L<[GH #15017]|https://github.com/Perl/perl5/issues/15017> =item * @@ -2917,18 +2917,18 @@ floating point numbers (64-bit or 128-bit) and the x86 80-bit "extended precision". Note that subnormal hexadecimal floating point literals will give a warning about "exponent underflow". -L<[perl #128843]|https://rt.perl.org/Public/Bug/Display.html?id=128843> -L<[perl #128889]|https://rt.perl.org/Public/Bug/Display.html?id=128889> -L<[perl #128890]|https://rt.perl.org/Public/Bug/Display.html?id=128890> -L<[perl #128893]|https://rt.perl.org/Public/Bug/Display.html?id=128893> -L<[perl #128909]|https://rt.perl.org/Public/Bug/Display.html?id=128909> -L<[perl #128919]|https://rt.perl.org/Public/Bug/Display.html?id=128919> +L<[GH #15495]|https://github.com/Perl/perl5/issues/15495> +L<[GH #15503]|https://github.com/Perl/perl5/issues/15503> +L<[GH #15504]|https://github.com/Perl/perl5/issues/15504> +L<[GH #15505]|https://github.com/Perl/perl5/issues/15505> +L<[GH #15510]|https://github.com/Perl/perl5/issues/15510> +L<[GH #15512]|https://github.com/Perl/perl5/issues/15512> =item * A regression in v5.24 with C when the code point was between 128 and 255 has been fixed. -L<[perl #128734]|https://rt.perl.org/Public/Bug/Display.html?id=128734>. +L<[GH #15475]|https://github.com/Perl/perl5/issues/15475>. =item * @@ -2939,52 +2939,52 @@ in inconsistent behaviour. Note that this is non-portable, and is based on Perl's extension to UTF-8, and is probably not displayable nor enterable by any editor. -L<[perl #128738]|https://rt.perl.org/Public/Bug/Display.html?id=128738> +L<[GH #15477]|https://github.com/Perl/perl5/issues/15477> =item * C<@{x> followed by a newline where C<"x"> represents a control or non-ASCII character no longer produces a garbled syntax error message or a crash. -L<[perl #128951]|https://rt.perl.org/Public/Bug/Display.html?id=128951> +L<[GH #15518]|https://github.com/Perl/perl5/issues/15518> =item * An assertion failure with C<%: = 0> has been fixed. -L<[perl #128238]|https://rt.perl.org/Public/Bug/Display.html?id=128238> +L<[GH #15358]|https://github.com/Perl/perl5/issues/15358> =item * In Perl 5.18, the parsing of C<"$foo::$bar"> was accidentally changed, such that it would be treated as C<$foo."::".$bar>. The previous behavior, which was to parse it as C<$foo:: . $bar>, has been restored. -L<[perl #128478]|https://rt.perl.org/Public/Bug/Display.html?id=128478> +L<[GH #15408]|https://github.com/Perl/perl5/issues/15408> =item * Since Perl 5.20, line numbers have been off by one when perl is invoked with the B<-x> switch. This has been fixed. -L<[perl #128508]|https://rt.perl.org/Public/Bug/Display.html?id=128508> +L<[GH #15413]|https://github.com/Perl/perl5/issues/15413> =item * Vivifying a subroutine stub in a deleted stash (I, C) no longer crashes. It had begun crashing in Perl 5.18. -L<[perl #128532]|https://rt.perl.org/Public/Bug/Display.html?id=128532> +L<[GH #15420]|https://github.com/Perl/perl5/issues/15420> =item * Some obscure cases of subroutines and file handles being freed at the same time could result in crashes, but have been fixed. The crash was introduced in Perl 5.22. -L<[perl #128597]|https://rt.perl.org/Public/Bug/Display.html?id=128597> +L<[GH #15435]|https://github.com/Perl/perl5/issues/15435> =item * Code that looks for a variable name associated with an uninitialized value could cause an assertion failure in cases where magic is involved, such as C<$ISA[0][0]>. This has now been fixed. -L<[perl #128253]|https://rt.perl.org/Public/Bug/Display.html?id=128253> +L<[GH #15364]|https://github.com/Perl/perl5/issues/15364> =item * @@ -2992,7 +2992,7 @@ redefined" in cases such as C has been fixed. In these cases, where the STASH is missing, the warning will now appear as "Subroutine NAME redefined". -L<[perl #128257]|https://rt.perl.org/Public/Bug/Display.html?id=128257> +L<[GH #15368]|https://github.com/Perl/perl5/issues/15368> =item * @@ -3003,44 +3003,44 @@ @ 0"$x" -L<[perl #128255]|https://rt.perl.org/Public/Bug/Display.html?id=128255> +L<[GH #15366]|https://github.com/Perl/perl5/issues/15366> =item * A possible divide by zero in string transformation code on Windows has been avoided, fixing a crash when collating an empty string. -L<[perl #128618]|https://rt.perl.org/Public/Bug/Display.html?id=128618> +L<[GH #15439]|https://github.com/Perl/perl5/issues/15439> =item * Some regular expression parsing glitches could lead to assertion failures with regular expressions such as C=/> and C!/>. This has now been fixed. -L<[perl #128170]|https://rt.perl.org/Public/Bug/Display.html?id=128170> +L<[GH #15332]|https://github.com/Perl/perl5/issues/15332> =item * C< until ($x = 1) { ... } > and C< ... until $x = 1 > now properly warn when syntax warnings are enabled. -L<[perl #127333]|https://rt.perl.org/Public/Bug/Display.html?id=127333> +L<[GH #15138]|https://github.com/Perl/perl5/issues/15138> =item * socket() now leaves the error code returned by the system in C<$!> on failure. -L<[perl #128316]|https://rt.perl.org/Public/Bug/Display.html?id=128316> +L<[GH #15383]|https://github.com/Perl/perl5/issues/15383> =item * Assignment variants of any bitwise ops under the C feature would crash if the left-hand side was an array or hash. -L<[perl #128204]|https://rt.perl.org/Public/Bug/Display.html?id=128204> +L<[GH #15346]|https://github.com/Perl/perl5/issues/15346> =item * C followed by a single colon (as in C is now parsed correctly as C with implicit C<$_>, rather than C. -L<[perl #128307]|https://rt.perl.org/Public/Bug/Display.html?id=128307> +L<[GH #15380]|https://github.com/Perl/perl5/issues/15380> =item * @@ -3053,7 +3053,7 @@ argument used to result in crashes or "Can't coerce" error messages at run time, unlike scalar assignment, which would give an error at compile time. List assignment now gives a compile-time error, too. -L<[perl #128260]|https://rt.perl.org/Public/Bug/Display.html?id=128260> +L<[GH #15370]|https://github.com/Perl/perl5/issues/15370> =item * @@ -3065,19 +3065,19 @@ ignored. The same was true of C and C statement modifiers, though with the left-hand and right-hand sides swapped. This long-standing bug has now been fixed. -L<[perl #127952]|https://rt.perl.org/Public/Bug/Display.html?id=127952> +L<[GH #15285]|https://github.com/Perl/perl5/issues/15285> =item * C with an argument no longer crashes when encountering stash entries other than globs. -L<[perl #128106]|https://rt.perl.org/Public/Bug/Display.html?id=128106> +L<[GH #15314]|https://github.com/Perl/perl5/issues/15314> =item * Assignment of hashes to, and deletion of, typeglobs named C<*::::::> no longer causes crashes. -L<[perl #128086]|https://rt.perl.org/Public/Bug/Display.html?id=128086> +L<[GH #15307]|https://github.com/Perl/perl5/issues/15307> =item * @@ -3090,12 +3090,12 @@ } This was a regression from v5.24. -L<[perl #129991]|https://rt.perl.org/Public/Bug/Display.html?id=129991> +L<[GH #15690]|https://github.com/Perl/perl5/issues/15690> =item * Assertion failure with user-defined Unicode-like properties. -L<[perl #130010]|https://rt.perl.org/Public/Bug/Display.html?id=130010> +L<[GH #15696]|https://github.com/Perl/perl5/issues/15696> =item * @@ -3124,31 +3124,31 @@ scope is itself. We avoid the segfault by simply forbidding the use of the empty pattern when it would resolve to the currently executing pattern. -L<[perl #129903]|https://rt.perl.org/Public/Bug/Display.html?id=129903> +L<[GH #15669]|https://github.com/Perl/perl5/issues/15669> =item * Avoid reading beyond the end of the line buffer in perl's lexer when there's a short UTF-8 character at the end. -L<[perl #128997]|https://rt.perl.org/Public/Bug/Display.html?id=128997> +L<[GH #15531]|https://github.com/Perl/perl5/issues/15531> =item * Alternations in regular expressions were sometimes failing to match a utf8 string against a utf8 alternate. -L<[perl #129950]|https://rt.perl.org/Public/Bug/Display.html?id=129950> +L<[GH #15680]|https://github.com/Perl/perl5/issues/15680> =item * Make C fail silently (and return C and set C<$!>) instead of throwing an error. -L<[perl #129928]|https://rt.perl.org/Public/Bug/Display.html?id=129928> +L<[GH #15676]|https://github.com/Perl/perl5/issues/15676> =item * C with no argument didn't ensure that there was stack space available for returning its result. -L<[perl #129130]|https://rt.perl.org/Public/Bug/Display.html?id=129130> +L<[GH #15569]|https://github.com/Perl/perl5/issues/15569> =item * @@ -3167,7 +3167,7 @@ L warning when C<$x> was a lexical variable with an undefined value. That has now been fixed. -L<[perl #127877]|https://rt.perl.org/Public/Bug/Display.html?id=127877> +L<[GH #15269]|https://github.com/Perl/perl5/issues/15269> =item * @@ -3185,7 +3185,7 @@ C<< /@0{0*-E@*/*0 >> and similar contortions used to crash, but no longer do, but merely produce a syntax error. -L<[perl #128171]|https://rt.perl.org/Public/Bug/Display.html?id=128171> +L<[GH #15333]|https://github.com/Perl/perl5/issues/15333> =item * @@ -3193,7 +3193,7 @@ which, when stringified, contains a null character, started crashing in Perl 5.20, but has now been fixed. -L<[perl #128182]|https://rt.perl.org/Public/Bug/Display.html?id=128182> +L<[GH #15337]|https://github.com/Perl/perl5/issues/15337> =item * @@ -3204,7 +3204,7 @@ =item * Parsing bad POSIX charclasses no longer leaks memory. -L<[perl #128313]|https://rt.perl.org/Public/Bug/Display.html?id=128313> +L<[GH #15382]|https://github.com/Perl/perl5/issues/15382> =back @@ -3218,7 +3218,7 @@ than gcc 6 or g++ 5 resulting in "flush-to-zero". The end result is that if you specify very small values using the hexadecimal floating point format, like C<0x1.fffffffffffffp-1022>, they become zeros. -L<[perl #131388]|https://rt.perl.org/Ticket/Display.html?id=131388> +L<[GH #15990]|https://github.com/Perl/perl5/issues/15990> =back @@ -3229,7 +3229,7 @@ =item * Fixed issues with recursive regexes. The behavior was fixed in Perl 5.24. -L<[perl #126182]|https://rt.perl.org/Public/Bug/Display.html?id=126182> +L<[GH #14935]|https://github.com/Perl/perl5/issues/14935> =back diff -Nru perl-5.32.1/pod/perl5261delta.pod perl-5.34.0/pod/perl5261delta.pod --- perl-5.32.1/pod/perl5261delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5261delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -19,20 +19,20 @@ Compiling certain regular expression patterns with the case-insensitive modifier could cause a heap buffer overflow and crash perl. This has now been fixed. -L<[perl #131582]|https://rt.perl.org/Public/Bug/Display.html?id=131582> +L<[GH #16021]|https://github.com/Perl/perl5/issues/16021> =head2 [CVE-2017-12883] Buffer over-read in regular expression parser For certain types of syntax error in a regular expression pattern, the error message could either contain the contents of a random, possibly large, chunk of memory, or could crash perl. This has now been fixed. -L<[perl #131598]|https://rt.perl.org/Public/Bug/Display.html?id=131598> +L<[GH #16025]|https://github.com/Perl/perl5/issues/16025> =head2 [CVE-2017-12814] C<$ENV{$key}> stack buffer overflow on Windows A possible stack buffer overflow in the C<%ENV> code on Windows has been fixed by removing the buffer completely since it was superfluous anyway. -L<[perl #131665]|https://rt.perl.org/Public/Bug/Display.html?id=131665> +L<[GH #16051]|https://github.com/Perl/perl5/issues/16051> =head1 Incompatible Changes @@ -77,7 +77,7 @@ =item * Building with B on FreeBSD-11.0 has been fixed. -L<[perl #131337]|https://rt.perl.org/Public/Bug/Display.html?id=131337> +L<[GH #15984]|https://github.com/Perl/perl5/issues/15984> =back @@ -94,7 +94,7 @@ Building XS modules with GCC 6 in a 64-bit build of Perl failed due to incorrect mapping of C and C. This has now been fixed. -L<[perl #131726]|https://rt.perl.org/Public/Bug/Display.html?id=131726> +L<[GH #16074]|https://github.com/Perl/perl5/issues/16074> L<[cpan #121683]|https://rt.cpan.org/Public/Bug/Display.html?id=121683> L<[cpan #122353]|https://rt.cpan.org/Public/Bug/Display.html?id=122353> @@ -113,19 +113,19 @@ rare situations, this could have led to a crash. These bugs have now been fixed, and if any similar bugs are introduced in future, they will be detected automatically in debugging builds. -L<[perl #131732]|https://rt.perl.org/Public/Bug/Display.html?id=131732> +L<[GH #16076]|https://github.com/Perl/perl5/issues/16076> =item * Using a symbolic ref with postderef syntax as the key in a hash lookup was yielding an assertion failure on debugging builds. -L<[perl #131627]|https://rt.perl.org/Public/Bug/Display.html?id=131627> +L<[GH #16029]|https://github.com/Perl/perl5/issues/16029> =item * List assignment (C) could in some rare cases allocate an entry on the mortal stack and leave the entry uninitialized. -L<[perl #131570]|https://rt.perl.org/Public/Bug/Display.html?id=131570> +L<[GH #16017]|https://github.com/Perl/perl5/issues/16017> =item * @@ -139,41 +139,41 @@ The code that vivifies a typeglob out of a code ref made some false assumptions that could lead to a crash in cases such as C<< $::{"A"} = sub {}; \&{"A"} >>. This has now been fixed. -L<[perl #131085]|https://rt.perl.org/Public/Bug/Display.html?id=131085> +L<[GH #15937]|https://github.com/Perl/perl5/issues/15937> =item * C no longer reads beyond the terminating NUL, which previously occurred if the decimal point is immediately before the NUL. -L<[perl #131526]|https://rt.perl.org/Public/Bug/Display.html?id=131526> +L<[GH #16002]|https://github.com/Perl/perl5/issues/16002> =item * Occasional "Malformed UTF-8 character" crashes in C on utf8 strings have been fixed. -L<[perl #131575]|https://rt.perl.org/Public/Bug/Display.html?id=131575> +L<[GH #16019]|https://github.com/Perl/perl5/issues/16019> =item * C now finds C. -L<[perl #131371]|https://rt.perl.org/Public/Bug/Display.html?id=131371> +L<[GH #15989]|https://github.com/Perl/perl5/issues/15989> =item * Some erroneous warnings after utf8 conversion have been fixed. -L<[perl #131190]|https://rt.perl.org/Public/Bug/Display.html?id=131190> +L<[GH #15958]|https://github.com/Perl/perl5/issues/15958> =item * The C frame to catch Perl exceptions is set up lazily, and this used to be a bit too lazy. The catcher is now set up earlier, preventing some possible crashes. -L<[perl #105930]|https://rt.perl.org/Public/Bug/Display.html?id=105930> +L<[GH #11804]|https://github.com/Perl/perl5/issues/11804> =item * Spurious "Assuming NOT a POSIX class" warnings have been removed. -L<[perl #131522]|https://rt.perl.org/Public/Bug/Display.html?id=131522> +L<[GH #16001]|https://github.com/Perl/perl5/issues/16001> =back diff -Nru perl-5.32.1/pod/perl5262delta.pod perl-5.34.0/pod/perl5262delta.pod --- perl-5.32.1/pod/perl5262delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5262delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -18,18 +18,18 @@ A crafted regular expression could cause a heap buffer write overflow, with control over the bytes written. -L<[perl #132227]|https://rt.perl.org/Public/Bug/Display.html?id=132227> +L<[GH #16185]|https://github.com/Perl/perl5/issues/16185> =head2 [CVE-2018-6798] Heap-buffer-overflow in Perl__byte_dump_string (utf8.c) Matching a crafted locale dependent regular expression could cause a heap buffer read overflow and potentially information disclosure. -L<[perl #132063]|https://rt.perl.org/Public/Bug/Display.html?id=132063> +L<[GH #16143]|https://github.com/Perl/perl5/issues/16143> =head2 [CVE-2018-6913] heap-buffer-overflow in S_pack_rec C could cause a heap buffer write overflow with a large item count. -L<[perl #131844]|https://rt.perl.org/Public/Bug/Display.html?id=131844> +L<[GH #16098]|https://github.com/Perl/perl5/issues/16098> =head2 Assertion failure in Perl__core_swash_init (utf8.c) @@ -97,11 +97,11 @@ Visual C++ compiler version detection has been improved to work on non-English language systems. -L<[perl #132421]|https://rt.perl.org/Public/Bug/Display.html?id=132421> +L<[GH #16235]|https://github.com/Perl/perl5/issues/16235> We now set C<$Config{libpth}> correctly for 64-bit builds using Visual C++ versions earlier than 14.1. -L<[perl #132484]|https://rt.perl.org/Public/Bug/Display.html?id=132484> +L<[GH #16269]|https://github.com/Perl/perl5/issues/16269> =back @@ -114,18 +114,18 @@ The C built-in function now checks at compile time that it has only one parameter expression, and puts it in scalar context, thus ensuring that it doesn't corrupt the stack at runtime. -L<[perl #4574]|https://rt.perl.org/Public/Bug/Display.html?id=4574> +L<[GH #2793]|https://github.com/Perl/perl5/issues/2793> =item * Fixed a use after free bug in C introduced in Perl 5.27.1. -L<[perl #131954]|https://rt.perl.org/Public/Bug/Display.html?id=131954> +L<[GH #16124]|https://github.com/Perl/perl5/issues/16124> =item * Parsing a C definition could cause a use after free if the C keyword was followed by whitespace including newlines (and comments). -L<[perl #131836]|https://rt.perl.org/Public/Bug/Display.html?id=131836> +L<[GH #16097]|https://github.com/Perl/perl5/issues/16097> =item * @@ -137,26 +137,26 @@ Accesses to C<${^LAST_FH}> no longer assert after using any of a variety of I/O operations on a non-glob. -L<[perl #128263]|https://rt.perl.org/Public/Bug/Display.html?id=128263> +L<[GH #15372]|https://github.com/Perl/perl5/issues/15372> =item * C now performs correct reference counting when aliasing C<$a> and C<$b>, thus avoiding premature destruction and leakage of scalars if they are re-aliased during execution of the sort comparator. -L<[perl #92264]|https://rt.perl.org/Public/Bug/Display.html?id=92264> +L<[GH #11422]|https://github.com/Perl/perl5/issues/11422> =item * Some convoluted kinds of regexp no longer cause an arithmetic overflow when compiled. -L<[perl #131893]|https://rt.perl.org/Public/Bug/Display.html?id=131893> +L<[GH #16113]|https://github.com/Perl/perl5/issues/16113> =item * Fixed a duplicate symbol failure with B<-flto -mieee-fp> builds. F defined C<_LIB_VERSION> which B<-lieee> already defines. -L<[perl #131786]|https://rt.perl.org/Public/Bug/Display.html?id=131786> +L<[GH #16086]|https://github.com/Perl/perl5/issues/16086> =item * @@ -172,7 +172,7 @@ Previously compilation could continue in order to report other errors, but the failed sub-parse could leave partly parsed constructs on the parser shift-reduce stack, confusing the parser, leading to perl crashes. -L<[perl #125351]|https://rt.perl.org/Public/Bug/Display.html?id=125351> +L<[GH #14739]|https://github.com/Perl/perl5/issues/14739> =back diff -Nru perl-5.32.1/pod/perl5263delta.pod perl-5.34.0/pod/perl5263delta.pod --- perl-5.32.1/pod/perl5263delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5263delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -20,7 +20,7 @@ working directory. However, this secure extraction mode could be bypassed by putting a symlink and a regular file with the same name into the tar file. -L<[perl #133250]|https://rt.perl.org/Ticket/Display.html?id=133250> +L<[GH #16580]|https://github.com/Perl/perl5/issues/16580> L<[cpan #125523]|https://rt.cpan.org/Ticket/Display.html?id=125523> =head2 [CVE-2018-18311] Integer overflow leading to buffer overflow and segmentation fault @@ -30,28 +30,28 @@ could lead to writing beyond the end of an allocated buffer with attacker supplied data. -L<[perl #133204]|https://rt.perl.org/Ticket/Display.html?id=133204> +L<[GH #16560]|https://github.com/Perl/perl5/issues/16560> =head2 [CVE-2018-18312] Heap-buffer-overflow write in S_regatom (regcomp.c) A crafted regular expression could cause heap-buffer-overflow write during compilation, potentially allowing arbitrary code execution. -L<[perl #133423]|https://rt.perl.org/Ticket/Display.html?id=133423> +L<[GH #16649]|https://github.com/Perl/perl5/issues/16649> =head2 [CVE-2018-18313] Heap-buffer-overflow read in S_grok_bslash_N (regcomp.c) A crafted regular expression could cause heap-buffer-overflow read during compilation, potentially leading to sensitive information being leaked. -L<[perl #133192]|https://rt.perl.org/Ticket/Display.html?id=133192> +L<[GH #16554]|https://github.com/Perl/perl5/issues/16554> =head2 [CVE-2018-18314] Heap-buffer-overflow write in S_regatom (regcomp.c) A crafted regular expression could cause heap-buffer-overflow write during compilation, potentially allowing arbitrary code execution. -L<[perl #131649]|https://rt.perl.org/Ticket/Display.html?id=131649> +L<[GH #16041]|https://github.com/Perl/perl5/issues/16041> =head1 Incompatible Changes diff -Nru perl-5.32.1/pod/perl5280delta.pod perl-5.34.0/pod/perl5280delta.pod --- perl-5.32.1/pod/perl5280delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5280delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -24,7 +24,7 @@ L|perlfunc/delete EXPR> can now be used on Lvalue hash slices|perldata/KeyEValue Hash Slices>, returning the keys along with the deleted values. -L<[perl #131328]|https://rt.perl.org/Ticket/Display.html?id=131328> +L<[GH #15982]|https://github.com/Perl/perl5/issues/15982> =head2 Experimentally, there are now alphabetic synonyms for some regular expression assertions @@ -111,7 +111,7 @@ =back -L<[perl #127663]|https://rt.perl.org/Public/Bug/Display.html?id=127663> +L<[GH #15216]|https://github.com/Perl/perl5/issues/15216> =head2 Initialisation of aggregate state variables @@ -205,20 +205,20 @@ Compiling certain regular expression patterns with the case-insensitive modifier could cause a heap buffer overflow and crash perl. This has now been fixed. -L<[perl #131582]|https://rt.perl.org/Public/Bug/Display.html?id=131582> +L<[GH #16021]|https://github.com/Perl/perl5/issues/16021> =head2 [CVE-2017-12883] Buffer over-read in regular expression parser For certain types of syntax error in a regular expression pattern, the error message could either contain the contents of a random, possibly large, chunk of memory, or could crash perl. This has now been fixed. -L<[perl #131598]|https://rt.perl.org/Public/Bug/Display.html?id=131598> +L<[GH #16025]|https://github.com/Perl/perl5/issues/16025> =head2 [CVE-2017-12814] C<$ENV{$key}> stack buffer overflow on Windows A possible stack buffer overflow in the C<%ENV> code on Windows has been fixed by removing the buffer completely since it was superfluous anyway. -L<[perl #131665]|https://rt.perl.org/Public/Bug/Display.html?id=131665> +L<[GH #16051]|https://github.com/Perl/perl5/issues/16051> =head2 Default Hash Function Change @@ -322,7 +322,7 @@ Previously the C<-S> switch incorrectly treated backslash ("\") as an escape for colon when traversing the C environment variable. -L<[perl #129183]|https://rt.perl.org/Ticket/Display.html?id=129183> +L<[GH #15584]|https://github.com/Perl/perl5/issues/15584> =head2 the -DH (DEBUG_H) misfeature has been removed @@ -357,7 +357,7 @@ and any attempt to use them is an error. The L pragma otherwise remains, and the algorithm-neutral C subpragma can be used to control sorting behaviour. -L<[perl #119635]|https://rt.perl.org/Ticket/Display.html?id=119635> +L<[GH #13234]|https://github.com/Perl/perl5/issues/13234> =head2 Over-radix digits in floating point literals @@ -415,7 +415,7 @@ Passing arguments to C was already deprecated, but didn't have a removal date. This has now been scheduled for Perl -5.32. L<[perl #124349]|https://rt.perl.org/Ticket/Display.html?id=124349> +5.32. L<[GH #14662]|https://github.com/Perl/perl5/issues/14662> =head2 Module removals @@ -521,12 +521,12 @@ =item * Slightly improved performance when parsing stash names. -L<[perl #129990]|https://rt.perl.org/Public/Bug/Display.html?id=129990> +L<[GH #15689]|https://github.com/Perl/perl5/issues/15689> =item * Calls to C for an already loaded module are now slightly faster. -L<[perl #132171]|https://rt.perl.org/Public/Bug/Display.html?id=132171> +L<[GH #16175]|https://github.com/Perl/perl5/issues/16175> =item * @@ -642,13 +642,13 @@ L, when generating stack traces, now attempts to work around longstanding bugs resulting from Perl's non-reference-counted stack. -L<[perl #52610]|https://rt.perl.org/Ticket/Display.html?id=52610> +L<[GH #9282]|https://github.com/Perl/perl5/issues/9282> Carp has been modified to avoid assuming that objects cannot be overloaded without the L module loaded (this can happen with objects created by XS modules). Previously, infinite recursion would result if an XS-defined overload method itself called Carp. -L<[perl #132828]|https://rt.perl.org/Ticket/Display.html?id=132828> +L<[GH #16407]|https://github.com/Perl/perl5/issues/16407> Carp now avoids using C, partly because older versions of L (included with perl 5.14 and earlier) load L @@ -682,11 +682,11 @@ L has been upgraded from version 2.167 to 2.170. Quoting of glob names now obeys the Useqq option -L<[perl #119831]|https://rt.perl.org/Ticket/Display.html?id=119831>. +L<[GH #13274]|https://github.com/Perl/perl5/issues/13274>. Attempts to set an option to C through a combined getter/setter method are no longer mistaken for getter calls -L<[perl #113090]|https://rt.perl.org/Ticket/Display.html?id=113090>. +L<[GH #12135]|https://github.com/Perl/perl5/issues/12135>. =item * @@ -717,7 +717,7 @@ Its documentation now shows the use of C<__PACKAGE__> and direct object syntax -L<[perl #132247]|https://rt.perl.org/Ticket/Display.html?id=132247>. +L<[GH #16190]|https://github.com/Perl/perl5/issues/16190>. =item * @@ -789,7 +789,7 @@ It will now use the sub-second precision variant of utime() supplied by L where available. -L<[perl #132401]|https://rt.perl.org/Ticket/Display.html?id=132401>. +L<[GH #16225]|https://github.com/Perl/perl5/issues/16225>. =item * @@ -829,11 +829,11 @@ Its documentation now explains that C and C don't mix in hashes tied to this module -L<[perl #117449]|https://rt.perl.org/Ticket/Display.html?id=117449>. +L<[GH #12894]|https://github.com/Perl/perl5/issues/12894>. It will now retry opening with an acceptable block size if asking gdbm to default the block size failed -L<[perl #119623]|https://rt.perl.org/Ticket/Display.html?id=119623>. +L<[GH #13232]|https://github.com/Perl/perl5/issues/13232>. =item * @@ -855,7 +855,7 @@ It now sets the UTF-8 flag in its returned scalar if the string contains legal non-ASCII UTF-8, and the locale is UTF-8 -L<[perl #127288]|https://rt.perl.org/Ticket/Display.html?id=127288>. +L<[GH #15131]|https://github.com/Perl/perl5/issues/15131>. This update also fixes a bug in which the underlying locale was ignored for the C (always was returned as a dot) and the C @@ -967,7 +967,7 @@ default from a "NAME" section in the POD document, as it used to be before the module was rewritten to use L to do the core of its job -L<[perl #110520]|https://rt.perl.org/Ticket/Display.html?id=110520>. +L<[GH #11954]|https://github.com/Perl/perl5/issues/11954>. =item * @@ -1046,7 +1046,7 @@ The documentation now better describes the problems that arise when returning values from threads, and no longer warns about creating threads in C blocks. -L<[perl #96538]|https://rt.perl.org/Ticket/Display.html?id=96538> +L<[GH #11563]|https://github.com/Perl/perl5/issues/11563> =item * @@ -1125,7 +1125,7 @@ It now includes new functions with names ending in C<_at_level>, allowing callers to specify the exact call frame. -L<[perl #132468]|https://rt.perl.org/Ticket/Display.html?id=132468> +L<[GH #16257]|https://github.com/Perl/perl5/issues/16257> =item * @@ -1137,7 +1137,7 @@ Its documentation now shows the use of C<__PACKAGE__>, and direct object syntax for example C usage -L<[perl #132247]|https://rt.perl.org/Ticket/Display.html?id=132247>. +L<[GH #16190]|https://github.com/Perl/perl5/issues/16190>. Platforms that use C to edit the names of loadable libraries now look for bootstrap (.bs) files under the correct, @@ -1206,7 +1206,7 @@ The description of the conditions under which C will be called has been clarified. -L<[perl #131672]|https://rt.perl.org/Ticket/Display.html?id=131672> +L<[GH #16055]|https://github.com/Perl/perl5/issues/16055> =back @@ -1275,27 +1275,27 @@ There is now a note that warnings generated by built-in functions are documented in L and L. -L<[perl #116080]|https://rt.perl.org/Ticket/Display.html?id=116080> +L<[GH #12642]|https://github.com/Perl/perl5/issues/12642> =item * The documentation for the C operator no longer says that autovivification behaviour "may be fixed in a future release". We've determined that we're not going to change the default behaviour. -L<[perl #127712]|https://rt.perl.org/Ticket/Display.html?id=127712> +L<[GH #15231]|https://github.com/Perl/perl5/issues/15231> =item * A couple of small details in the documentation for the C operator have been clarified. -L<[perl #124428]|https://rt.perl.org/Ticket/Display.html?id=124428> +L<[GH #14684]|https://github.com/Perl/perl5/issues/14684> =item * The description of C<@INC> hooks in the documentation for C has been corrected to say that filter subroutines receive a useless first argument. -L<[perl #115754]|https://rt.perl.org/Ticket/Display.html?id=115754> +L<[GH #12569]|https://github.com/Perl/perl5/issues/12569> =item * @@ -1311,7 +1311,7 @@ The documentation of C has been updated to reflect that since Perl 5.14 it has treated complex exception objects in a manner equivalent to C. -L<[perl #121372]|https://rt.perl.org/Ticket/Display.html?id=121372> +L<[GH #13641]|https://github.com/Perl/perl5/issues/13641> =item * @@ -1322,7 +1322,7 @@ The documentation of C has been improved, with a slightly more explicit description of the sharing of iterator state, and with caveats regarding the fragility of while-each loops. -L<[perl #132644]|https://rt.perl.org/Ticket/Display.html?id=132644> +L<[GH #16334]|https://github.com/Perl/perl5/issues/16334> =item * @@ -1378,7 +1378,7 @@ The documentation about C methods has been corrected, updated, and revised, especially in regard to how they interact with exceptions. -L<[perl #122753]|https://rt.perl.org/Ticket/Display.html?id=122753> +L<[GH #14083]|https://github.com/Perl/perl5/issues/14083> =back @@ -1389,7 +1389,7 @@ =item * The description of the C operator in L has been clarified. -L<[perl #132460]|https://rt.perl.org/Ticket/Display.html?id=132460> +L<[GH #16253]|https://github.com/Perl/perl5/issues/16253> =item * @@ -1400,13 +1400,13 @@ The general explanation of operator precedence and associativity has been corrected and clarified. -L<[perl #127391]|https://rt.perl.org/Ticket/Display.html?id=127391> +L<[GH #15153]|https://github.com/Perl/perl5/issues/15153> =item * The documentation for the C<\> referencing operator now explains the unusual context that it supplies to its operand. -L<[perl #131061]|https://rt.perl.org/Ticket/Display.html?id=131061> +L<[GH #15932]|https://github.com/Perl/perl5/issues/15932> =back @@ -1437,7 +1437,7 @@ =item * Clarify the differences between B<< -M >> and B<< -m >>. -L<[perl #131518]|https://rt.perl.org/Ticket/Display.html?id=131518> +L<[GH #15998]|https://github.com/Perl/perl5/issues/15998> =back @@ -1448,7 +1448,7 @@ =item * The documentation about set-id scripts has been updated and revised. -L<[perl #74142]|https://rt.perl.org/Ticket/Display.html?id=74142> +L<[GH #10289]|https://github.com/Perl/perl5/issues/10289> =item * @@ -1470,7 +1470,7 @@ The means to disambiguate between code blocks and hash constructors, already documented in L, are now documented in L too. -L<[perl #130958]|https://rt.perl.org/Ticket/Display.html?id=130958> +L<[GH #15918]|https://github.com/Perl/perl5/issues/15918> =back @@ -1514,7 +1514,7 @@ In various places, improve the documentation of the special cases in the condition expression of a while loop, such as implicit C and assignment to C<$_>. -L<[perl #132644]|https://rt.perl.org/Ticket/Display.html?id=132644> +L<[GH #16334]|https://github.com/Perl/perl5/issues/16334> =back @@ -1543,12 +1543,12 @@ Use of C to jump into the parameter of a binary or list operator has been prohibited, to prevent crashes and stack corruption. -L<[perl #130936]|https://rt.perl.org/Ticket/Display.html?id=130936> +L<[GH #15914]|https://github.com/Perl/perl5/issues/15914> You may only enter the I argument of an operator that takes a fixed number of arguments, since this is a case that will not cause stack corruption. -L<[perl #132854]|https://rt.perl.org/Ticket/Display.html?id=132854> +L<[GH #16415]|https://github.com/Perl/perl5/issues/16415> =back @@ -1581,14 +1581,14 @@ A false-positive warning that was issued when using a numerically-quantified sub-pattern in a recursive regex has been -silenced. L<[perl #131868]|https://rt.perl.org/Public/Bug/Display.html?id=131868> +silenced. L<[GH #16106]|https://github.com/Perl/perl5/issues/16106> =item * The warning about useless use of a concatenation operator in void context is now generated for expressions with multiple concatenations, such as C<$a.$b.$c>, which used to mistakenly not warn. -L<[perl #6997]|https://rt.perl.org/Ticket/Display.html?id=6997> +L<[GH #3990]|https://github.com/Perl/perl5/issues/3990> =item * @@ -1601,7 +1601,7 @@ The deprecation warning from C saying that it doesn't accept arguments now states the Perl version in which the warning will be upgraded to an error. -L<[perl #124349]|https://rt.perl.org/Ticket/Display.html?id=124349> +L<[GH #14662]|https://github.com/Perl/perl5/issues/14662> =item * @@ -1651,7 +1651,7 @@ documents now use relative links to refer to each other. Links from the index page of L to the individual section documents are now correct. -L<[perl #110056]|https://rt.perl.org/Ticket/Display.html?id=110056> +L<[GH #11941]|https://github.com/Perl/perl5/issues/11941> =item * @@ -1665,7 +1665,7 @@ invoked. This lack of canonical names could cause test failures in F. -L<[perl #132925]|https://rt.perl.org/Ticket/Display.html?id=132925> +L<[GH #16446]|https://github.com/Perl/perl5/issues/16446> =item * New probes @@ -1712,7 +1712,7 @@ Perl now includes a default F<.travis.yml> file for Travis CI testing on github mirrors. -L<[perl #123981]|https://rt.perl.org/Ticket/Display.html?id=123981> +L<[GH #14558]|https://github.com/Perl/perl5/issues/14558> =item * @@ -1726,8 +1726,8 @@ =item * F no longer waits for 30 seconds when running F. -L<[perl #121028]|https://rt.perl.org/Ticket/Display.html?id=121028> -L<[perl #132867]|https://rt.perl.org/Ticket/Display.html?id=132867> +L<[GH #13535]|https://github.com/Perl/perl5/issues/13535> +L<[GH #16420]|https://github.com/Perl/perl5/issues/16420> =back @@ -1942,7 +1942,7 @@ It partially fixes the rare bug of deferred elements getting out of synch with their arrays when the array is shifted or unshifted. -L<[perl #132729]|https://rt.perl.org/Ticket/Display.html?id=132729> +L<[GH #16364]|https://github.com/Perl/perl5/issues/16364> =back @@ -1955,7 +1955,7 @@ List assignment (C) could in some rare cases allocate an entry on the mortals stack and leave the entry uninitialized, leading to possible crashes. -L<[perl #131570]|https://rt.perl.org/Ticket/Display.html?id=131570> +L<[GH #16017]|https://github.com/Perl/perl5/issues/16017> =item * @@ -1972,7 +1972,7 @@ representation contained characters that are whitespace by Unicode rules but not by ASCII rules, it treated those characters as part of fields rather than as field separators. -L<[perl #130907]|https://rt.perl.org/Ticket/Display.html?id=130907> +L<[GH #15904]|https://github.com/Perl/perl5/issues/15904> =item * @@ -1985,26 +1985,26 @@ These internal stack usage checks introduced are also done by the C operator when calling XSUBs. This means we can report which XSUB failed to allocate enough stack space. -L<[perl #131975]|https://rt.perl.org/Public/Bug/Display.html?id=131975> +L<[GH #16126]|https://github.com/Perl/perl5/issues/16126> =item * Using a symbolic ref with postderef syntax as the key in a hash lookup was yielding an assertion failure on debugging builds. -L<[perl #131627]|https://rt.perl.org/Ticket/Display.html?id=131627> +L<[GH #16029]|https://github.com/Perl/perl5/issues/16029> =item * Array and hash variables whose names begin with a caret now admit indexing inside their curlies when interpolated into strings, as in C<< "${^CAPTURE[0]}" >> to index C<@{^CAPTURE}>. -L<[perl #131664]|https://rt.perl.org/Ticket/Display.html?id=131664> +L<[GH #16050]|https://github.com/Perl/perl5/issues/16050> =item * Fetching the name of a glob that was previously UTF-8 but wasn't any longer would return that name flagged as UTF-8. -L<[perl #131263]|https://rt.perl.org/Ticket/Display.html?id=131263> +L<[GH #15971]|https://github.com/Perl/perl5/issues/15971> =item * @@ -2028,13 +2028,13 @@ Fixed a duplicate symbol failure with C<-flto -mieee-fp> builds. F defined C<_LIB_VERSION> which C<-lieee> already defines. -L<[perl #131786]|https://rt.perl.org/Ticket/Display.html?id=131786> +L<[GH #16086]|https://github.com/Perl/perl5/issues/16086> =item * The tokenizer no longer consumes the exponent part of a floating point number if it's incomplete. -L<[perl #131725]|https://rt.perl.org/Ticket/Display.html?id=131725> +L<[GH #16073]|https://github.com/Perl/perl5/issues/16073> =item * @@ -2043,13 +2043,13 @@ previous matching match operator included the C flag. The rewriting used to implement this behavior could confuse the interpreter. This matches the behaviour of threaded builds. -L<[perl #124368]|https://rt.perl.org/Ticket/Display.html?id=124368> +L<[GH #14668]|https://github.com/Perl/perl5/issues/14668> =item * Parsing a C definition could cause a use after free if the C keyword was followed by whitespace including newlines (and comments.) -L<[perl #131836]|https://rt.perl.org/Public/Bug/Display.html?id=131836> +L<[GH #16097]|https://github.com/Perl/perl5/issues/16097> =item * @@ -2061,7 +2061,7 @@ Accesses to C<${^LAST_FH}> no longer assert after using any of a variety of I/O operations on a non-glob. -L<[perl #128263]|https://rt.perl.org/Public/Bug/Display.html?id=128263> +L<[GH #15372]|https://github.com/Perl/perl5/issues/15372> =item * @@ -2071,15 +2071,15 @@ as undefined behaviour even when their count parameters are zero. Based on these assertions and the original bug report three macro calls were made conditional. -L<[perl #131746]|https://rt.perl.org/Public/Bug/Display.html?id=131746> -L<[perl #131892]|https://rt.perl.org/Public/Bug/Display.html?id=131892> +L<[GH #16079]|https://github.com/Perl/perl5/issues/16079> +L<[GH #16112]|https://github.com/Perl/perl5/issues/16112> =item * Only the C<=> operator is permitted for defining defaults for parameters in subroutine signatures. Previously other assignment operators, e.g. C<+=>, were also accidentally permitted. -L<[perl #131777]|https://rt.perl.org/Public/Bug/Display.html?id=131777> +L<[GH #16084]|https://github.com/Perl/perl5/issues/16084> =item * @@ -2092,7 +2092,7 @@ structure on debugging builds, has been added to non-debug builds as well. This fixes an issue with some CPAN modules caused by the size of this structure varying between debugging and non-debugging builds. -L<[perl #131942]|https://rt.perl.org/Public/Bug/Display.html?id=131942> +L<[GH #16122]|https://github.com/Perl/perl5/issues/16122> =item * @@ -2110,7 +2110,7 @@ has been fixed. This should call C with an empty C array (containing only the terminating C pointer), but was instead just returning false (and not setting L|perlvar/$!>). -L<[perl #131730]|https://rt.perl.org/Public/Bug/Display.html?id=131730> +L<[GH #16075]|https://github.com/Perl/perl5/issues/16075> =item * @@ -2124,7 +2124,7 @@ Single-letter debugger commands followed by an argument which starts with punctuation (e.g. C and C) now work again. They had been wrongly requiring a space between the command and the argument. -L<[perl #120174]|https://rt.perl.org/Public/Bug/Display.html?id=120174> +L<[GH #13342]|https://github.com/Perl/perl5/issues/13342> =item * @@ -2133,7 +2133,7 @@ array. Until now it had been silently modifying the array. The new behaviour is consistent with the behaviour of L and L. -L<[perl #131000]|https://rt.perl.org/Public/Bug/Display.html?id=131000> +L<[GH #15923]|https://github.com/Perl/perl5/issues/15923> =item * @@ -2158,37 +2158,37 @@ Fixed a 'read before buffer' overrun when parsing a range starting with C<\N{}> at the beginning of the character set for the transliteration operator. -L<[perl #132245]|https://rt.perl.org/Ticket/Display.html?id=132245> +L<[GH #16189]|https://github.com/Perl/perl5/issues/16189> =item * Fixed a leaked scalar when parsing an empty C<\N{}> at compile-time. -L<[perl #132245]|https://rt.perl.org/Ticket/Display.html?id=132245> +L<[GH #16189]|https://github.com/Perl/perl5/issues/16189> =item * Calling C on a directory or block device now yields a meaningful error code in C<$!>. -L<[perl #125774]|https://rt.perl.org/Ticket/Display.html?id=125774> +L<[GH #14841]|https://github.com/Perl/perl5/issues/14841> =item * Regexp substitution using an overloaded replacement value that provides a tainted stringification now correctly taints the resulting string. -L<[perl #115266]|https://rt.perl.org/Ticket/Display.html?id=115266> +L<[GH #12495]|https://github.com/Perl/perl5/issues/12495> =item * Lexical sub declarations in C blocks such as C could corrupt the stack, erasing items already on the stack in the enclosing statement. This has been fixed. -L<[perl #132442]|https://rt.perl.org/Ticket/Display.html?id=132442> +L<[GH #16243]|https://github.com/Perl/perl5/issues/16243> =item * C and C can now handle repeat counts and lengths that exceed two billion. -L<[perl #119367]|https://rt.perl.org/Ticket/Display.html?id=119367> +L<[GH #13179]|https://github.com/Perl/perl5/issues/13179> =item * @@ -2202,84 +2202,84 @@ callable subroutine. It used to be a magic placeholder for a missing C or C method, but is now treated like any other string C<1>. -L<[perl #126042]|https://rt.perl.org/Ticket/Display.html?id=126042> +L<[GH #14902]|https://github.com/Perl/perl5/issues/14902> =item * C now reduces its arguments to strings in the parent process, so any effects of stringifying them (such as overload methods being called or warnings being emitted) are visible in the way the program expects. -L<[perl #121105]|https://rt.perl.org/Ticket/Display.html?id=121105> +L<[GH #13561]|https://github.com/Perl/perl5/issues/13561> =item * The C built-in function now checks at compile time that it has only one parameter expression, and puts it in scalar context, thus ensuring that it doesn't corrupt the stack at runtime. -L<[perl #4574]|https://rt.perl.org/Ticket/Display.html?id=4574> +L<[GH #2793]|https://github.com/Perl/perl5/issues/2793> =item * C now performs correct reference counting when aliasing C<$a> and C<$b>, thus avoiding premature destruction and leakage of scalars if they are re-aliased during execution of the sort comparator. -L<[perl #92264]|https://rt.perl.org/Ticket/Display.html?id=92264> +L<[GH #11422]|https://github.com/Perl/perl5/issues/11422> =item * C with no operand, reversing C<$_> by default, is no longer in danger of corrupting the stack. -L<[perl #132544]|https://rt.perl.org/Ticket/Display.html?id=132544> +L<[GH #16291]|https://github.com/Perl/perl5/issues/16291> =item * C, C, et al are no longer liable to have their argument lists corrupted by reentrant calls and by magic such as tied scalars. -L<[perl #129888]|https://rt.perl.org/Ticket/Display.html?id=129888> +L<[GH #15660]|https://github.com/Perl/perl5/issues/15660> =item * Perl's own C no longer gets confused by attempts to allocate more than a gigabyte on a 64-bit platform. -L<[perl #119829]|https://rt.perl.org/Ticket/Display.html?id=119829> +L<[GH #13273]|https://github.com/Perl/perl5/issues/13273> =item * Stacked file test operators in a sort comparator expression no longer cause a crash. -L<[perl #129347]|https://rt.perl.org/Ticket/Display.html?id=129347> +L<[GH #15626]|https://github.com/Perl/perl5/issues/15626> =item * An identity C transformation on a reference is no longer mistaken for that reference for the purposes of deciding whether it can be assigned to. -L<[perl #130578]|https://rt.perl.org/Ticket/Display.html?id=130578> +L<[GH #15812]|https://github.com/Perl/perl5/issues/15812> =item * Lengthy hexadecimal, octal, or binary floating point literals no longer cause undefined behaviour when parsing digits that are of such low significance that they can't affect the floating point value. -L<[perl #131894]|https://rt.perl.org/Ticket/Display.html?id=131894> +L<[GH #16114]|https://github.com/Perl/perl5/issues/16114> =item * C and similar invocations no longer leak the file handle. -L<[perl #115814]|https://rt.perl.org/Ticket/Display.html?id=115814> +L<[GH #12593]|https://github.com/Perl/perl5/issues/12593> =item * Some convoluted kinds of regexp no longer cause an arithmetic overflow when compiled. -L<[perl #131893]|https://rt.perl.org/Ticket/Display.html?id=131893> +L<[GH #16113]|https://github.com/Perl/perl5/issues/16113> =item * The default typemap, by avoiding C, now no longer leaks when XSUBs return file handles (C or C). -L<[perl #115814]|https://rt.perl.org/Ticket/Display.html?id=115814> +L<[GH #12593]|https://github.com/Perl/perl5/issues/12593> =item * @@ -2289,7 +2289,7 @@ =item * The C format specifier C<%.0f> no longer rounds incorrectly -L<[perl #47602]|https://rt.perl.org/Ticket/Display.html?id=47602>, +L<[GH #9125]|https://github.com/Perl/perl5/issues/9125>, and now shows the correct sign for a negative zero. =item * @@ -2297,25 +2297,25 @@ Fixed an issue where the error C<< Scalar value @arrayname[0] better written as $arrayname >> would give an error C<< Cannot printf Inf with 'c' >> when arrayname starts with C<< Inf >>. -L<[perl #132645]|https://rt.perl.org/Ticket/Display.html?id=132645> +L<[GH #16335]|https://github.com/Perl/perl5/issues/16335> =item * The Perl implementation of C<< getcwd() >> in C<< Cwd >> in the PathTools distribution now behaves the same as XS implementation on errors: it returns an error, and sets C<< $! >>. -L<[perl #132648]|https://rt.perl.org/Ticket/Display.html?id=132648> +L<[GH #16338]|https://github.com/Perl/perl5/issues/16338> =item * Vivify array elements when putting them on the stack. -Fixes L<[perl #8910]|https://rt.perl.org/Ticket/Display.html?id=8910> +Fixes L<[GH #5310]|https://github.com/Perl/perl5/issues/5310> (reported in April 2002). =item * Fixed parsing of braced subscript after parens. Fixes -L<[perl #8045]|https://rt.perl.org/Ticket/Display.html?id=8045> +L<[GH #4688]|https://github.com/Perl/perl5/issues/4688> (reported in December 2001). =item * @@ -2338,7 +2338,7 @@ but the failed sub-parse could leave partly parsed constructs on the parser shift-reduce stack, confusing the parser, leading to perl crashes. -L<[perl #125351]|https://rt.perl.org/Ticket/Display.html?id=125351> +L<[GH #14739]|https://github.com/Perl/perl5/issues/14739> =item * @@ -2352,7 +2352,7 @@ Errors while compiling a regex character class could sometime trigger an assertion failure. -L<[perl #132163]|https://rt.perl.org/Ticket/Display.html?id=132163> +L<[GH #16172]|https://github.com/Perl/perl5/issues/16172> =back diff -Nru perl-5.32.1/pod/perl5281delta.pod perl-5.34.0/pod/perl5281delta.pod --- perl-5.32.1/pod/perl5281delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5281delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -21,14 +21,14 @@ could lead to writing beyond the end of an allocated buffer with attacker supplied data. -L<[perl #133204]|https://rt.perl.org/Ticket/Display.html?id=133204> +L<[GH #16560]|https://github.com/Perl/perl5/issues/16560> =head2 [CVE-2018-18312] Heap-buffer-overflow write in S_regatom (regcomp.c) A crafted regular expression could cause heap-buffer-overflow write during compilation, potentially allowing arbitrary code execution. -L<[perl #133423]|https://rt.perl.org/Ticket/Display.html?id=133423> +L<[GH #16649]|https://github.com/Perl/perl5/issues/16649> =head1 Incompatible Changes @@ -58,7 +58,7 @@ indirectly, e.g. >= 0). When this optimization was triggered inside a C clause it caused a warning ("Argument %s isn't numeric in smart match"). This has now been fixed. -L<[perl #133368]|https://rt.perl.org/Ticket/Display.html?id=133368> +L<[GH #16626]|https://github.com/Perl/perl5/issues/16626> =item * @@ -69,7 +69,7 @@ =item * The new in-place editing code no longer leaks directory handles. -L<[perl #133314]|https://rt.perl.org/Ticket/Display.html?id=133314> +L<[GH #16602]|https://github.com/Perl/perl5/issues/16602> =back diff -Nru perl-5.32.1/pod/perl5282delta.pod perl-5.34.0/pod/perl5282delta.pod --- perl-5.32.1/pod/perl5282delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5282delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -27,7 +27,7 @@ All digits in a run still have to come from the same set of ten digits. -L<[perl #133547]|https://rt.perl.org/Ticket/Display.html?id=133547> +L<[GH #16704]|https://github.com/Perl/perl5/issues/16704> =head1 Modules and Pragmata @@ -75,7 +75,7 @@ find F in the build directory, and the library path is then adjusted during installation to point to the installed library. -L<[perl #126706]|https://rt.perl.org/Ticket/Display.html?id=126706> +L<[GH #15057]|https://github.com/Perl/perl5/issues/15057> =back @@ -99,7 +99,7 @@ will not. Partly resolves [perl #133659]. -L<[perl #133659]|https://rt.perl.org/Ticket/Display.html?id=133659> +L<[GH #16748]|https://github.com/Perl/perl5/issues/16748> =item * @@ -114,7 +114,7 @@ C now properly NUL terminates the zero-length SV produced. -L<[perl #132655]|https://rt.perl.org/Ticket/Display.html?id=132655> +L<[GH #16343]|https://github.com/Perl/perl5/issues/16343> =item * @@ -122,7 +122,7 @@ sub-parses this could leave the parser in a strange state, possibly crashing perl if compilation continued. -L<[perl #132158]|https://rt.perl.org/Ticket/Display.html?id=132158> +L<[GH #16169]|https://github.com/Perl/perl5/issues/16169> =item * diff -Nru perl-5.32.1/pod/perl5300delta.pod perl-5.34.0/pod/perl5300delta.pod --- perl-5.32.1/pod/perl5300delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5300delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -15,7 +15,7 @@ =head1 Notice sv_utf8_(downgrade|decode) are no longer marked as experimental. -L<[perl #133788]|https://rt.perl.org/Ticket/Display.html?id=133788>. +L<[GH #16822]|https://github.com/Perl/perl5/issues/16822>. =head1 Core Enhancements @@ -155,40 +155,40 @@ =back -L<[perl #125760]|https://rt.perl.org/Ticket/Display.html?id=125760>. +L<[GH #14839]|https://github.com/Perl/perl5/issues/14839>. =head2 my() in false conditional prohibited Declarations such as C are no longer permitted. -L<[perl #133543]|https://rt.perl.org/Ticket/Display.html?id=133543>. +L<[GH #16702]|https://github.com/Perl/perl5/issues/16702>. =head2 Fatalize $* and $# These special variables, long deprecated, now throw exceptions when used. -L<[perl #133583]|https://rt.perl.org/Ticket/Display.html?id=133583>. +L<[GH #16718]|https://github.com/Perl/perl5/issues/16718>. =head2 Fatalize unqualified use of dump() The C function, long discouraged, may no longer be used unless it is fully qualified, I, C. -L<[perl #133584]|https://rt.perl.org/Ticket/Display.html?id=133584>. +L<[GH #16719]|https://github.com/Perl/perl5/issues/16719>. =head2 Remove File::Glob::glob() The C function, long deprecated, has been removed and now throws an exception which advises use of C instead. -L<[perl #133586]|https://rt.perl.org/Ticket/Display.html?id=133586>. +L<[GH #16721]|https://github.com/Perl/perl5/issues/16721>. =head2 C no longer can return malformed UTF-8 It croaks if it would otherwise return a UTF-8 string that contains malformed UTF-8. This protects against potential security threats. This is considered a bug fix as well. -L<[perl #131642]|https://rt.perl.org/Ticket/Display.html?id=131642>. +L<[GH #16035]|https://github.com/Perl/perl5/issues/16035>. =head2 Any set of digits in the Common script are legal in a script run of another script @@ -200,7 +200,7 @@ Greek. But the design of 5.30 overlooked all but the ASCII digits C<[0-9]>, so the design was flawed. This has been fixed, so is both a bug fix and an incompatibility. -L<[perl #133547]|https://rt.perl.org/Ticket/Display.html?id=133547>. +L<[GH #16704]|https://github.com/Perl/perl5/issues/16704>. All digits in a run still have to come from the same set of ten digits. @@ -233,7 +233,7 @@ =item * Eliminate recursion from finalize_op(). -L<[perl #108276]|https://rt.perl.org/Ticket/Display.html?id=108276>. +L<[GH #11866]|https://github.com/Perl/perl5/issues/11866>. =item * @@ -243,20 +243,20 @@ =item * Optimization of C to C conversions. -L<[perl #133677]|https://rt.perl.org/Ticket/Display.html?id=133677>. +L<[GH #16761]|https://github.com/Perl/perl5/issues/16761>. =item * Speed up of the integer stringification algorithm by processing two digits at a time instead of one. -L<[perl #133691]|https://rt.perl.org/Ticket/Display.html?id=133691>. +L<[GH #16769]|https://github.com/Perl/perl5/issues/16769>. =item * Improvements based on LGTM analysis and recommendation. (L). -L<[perl #133686]|https://rt.perl.org/Ticket/Display.html?id=133686>. -L<[perl #133699]|https://rt.perl.org/Ticket/Display.html?id=133699>. +L<[GH #16765]|https://github.com/Perl/perl5/issues/16765>. +L<[GH #16773]|https://github.com/Perl/perl5/issues/16773>. =item * @@ -384,7 +384,7 @@ L has been upgraded from version 3.39 to 3.40. C parameters are no longer incorrectly included in the automatically generated function prototype. -L<[perl #133654]|https://rt.perl.org/Ticket/Display.html?id=133654>. +L<[GH #16746]|https://github.com/Perl/perl5/issues/16746>. =item * @@ -400,7 +400,7 @@ C<$File::Find::dont_use_nlink> now defaults to 1 on all platforms. -L<[perl #133673]|https://rt.perl.org/Ticket/Display.html?id=133673>. +L<[GH #16759]|https://github.com/Perl/perl5/issues/16759>. Variables C<< $Is_Win32 >> and C<< $Is_VMS >> are being initialized. @@ -569,14 +569,14 @@ L has been upgraded from version 3.08 to 3.15. Storable no longer probes for recursion limits at build time. -L<[perl #133708]|https://rt.perl.org/Ticket/Display.html?id=133708> +L<[GH #16780]|https://github.com/Perl/perl5/issues/16780> and others. Metasploit exploit code was included to test for CVE-2015-1992 detection, this caused anti-virus detections on at least one AV suite. The exploit code has been removed and replaced with a simple functional test. -L<[perl #133706]|https://rt.perl.org/Ticket/Display.html?id=133706> +L<[GH #16778]|https://github.com/Perl/perl5/issues/16778> =item * @@ -627,7 +627,7 @@ C no longer disables non-vars strict when checking if strict vars is enabled. -L<[perl #130674]|https://rt.perl.org/Ticket/Display.html?id=130674>. +L<[GH #15851]|https://github.com/Perl/perl5/issues/15851>. =item * @@ -676,7 +676,7 @@ Locale::Codes has been removed at the request of its author. It continues to be available on CPAN as C<< L >> -L<[perl #133458]|https://rt.perl.org/Ticket/Display.html?id=133458>. +L<[GH #16660]|https://github.com/Perl/perl5/issues/16660>. =back @@ -695,7 +695,7 @@ =item * C was wrongly listed as deprecated. This has been corrected. -L<[perl #133278]|https://rt.perl.org/Ticket/Display.html?id=133278> +L<[GH #16586]|https://github.com/Perl/perl5/issues/16586> =back @@ -712,7 +712,7 @@ The behaviour of C when the delimiter is an apostrophe has been clarified. In particular, hyphens aren't special, and C<\x{}> isn't interpolated. -L<[perl #130679]|https://rt.perl.org/Ticket/Display.html?id=130679> +L<[GH #15853]|https://github.com/Perl/perl5/issues/15853> =back @@ -743,7 +743,7 @@ Try to clarify that C<< ref(qr/xx/) >> returns C rather than C and why. -L<[perl #133751]|https://rt.perl.org/Ticket/Display.html?id=133751>. +L<[GH #16801]|https://github.com/Perl/perl5/issues/16801>. =back @@ -786,7 +786,7 @@ =item * More specific documentation of paragraph mode. -L<[perl #133722]|https://rt.perl.org/Ticket/Display.html?id=133722>. +L<[GH #16787]|https://github.com/Perl/perl5/issues/16787>. =back @@ -831,14 +831,14 @@ Attempts to push, pop, etc on a hash or glob now produce this message rather than complaining that they no longer work on scalars. -L<[perl #130367]|https://rt.perl.org/Ticket/Display.html?id=130367>. +L<[GH #15774]|https://github.com/Perl/perl5/issues/15774>. =item * L The file and line number is now reported for this error. -L<[perl #133524]|https://rt.perl.org/Ticket/Display.html?id=133524> +L<[GH #16697]|https://github.com/Perl/perl5/issues/16697> =item * @@ -861,7 +861,7 @@ The generated prototype (with C<< PROTOTYPES: ENABLE >>) would include C<< OUTLIST >> parameters, but these aren't arguments to the perl function. This has been rectified. -L<[perl #133654]|https://rt.perl.org/Ticket/Display.html?id=133654>. +L<[GH #16746]|https://github.com/Perl/perl5/issues/16746>. =back @@ -883,7 +883,7 @@ =item * Improve Configure detection of memmem(). -L<[perl #133760]|https://rt.perl.org/Ticket/Display.html?id=133760>. +L<[GH #16807]|https://github.com/Perl/perl5/issues/16807>. =item * @@ -902,14 +902,14 @@ =item * F -L<[perl #130367]|https://rt.perl.org/Ticket/Display.html?id=130367>. +L<[GH #15774]|https://github.com/Perl/perl5/issues/15774>. separate error for C, etc. on hash/glob. =item * F -L<[perl #133660]|https://rt.perl.org/Ticket/Display.html?id=133660>. +L<[GH #16749]|https://github.com/Perl/perl5/issues/16749>. Add test for C in overload leaking. @@ -921,13 +921,13 @@ Fix intermittent tests which failed due to race conditions which surface during parallel testing. -L<[perl #133740]|https://rt.perl.org/Ticket/Display.html?id=133740>. +L<[GH #16795]|https://github.com/Perl/perl5/issues/16795>. =item * Thoroughly test paragraph mode, using a new test file, F. -L<[perl #133722]|https://rt.perl.org/Ticket/Display.html?id=133722>. +L<[GH #16787]|https://github.com/Perl/perl5/issues/16787>. =item * @@ -964,7 +964,7 @@ library path is then adjusted during installation to point to the installed library. -L<[perl #126706]|https://rt.perl.org/Ticket/Display.html?id=126706>. +L<[GH #15057]|https://github.com/Perl/perl5/issues/15057>. =item Minix3 @@ -1004,7 +1004,7 @@ C with warnings enabled for a C build no longer warns about the sleep timeout being too large. -L<[perl #133376]|https://rt.perl.org/Ticket/Display.html?id=133376>. +L<[GH #16631]|https://github.com/Perl/perl5/issues/16631>. =item * @@ -1015,7 +1015,7 @@ socket() now sets C<$!> if the protocol, address family and socket type combination is not found. -L<[perl #133853]|https://rt.perl.org/Ticket/Display.html?id=133853>. +L<[GH #16849]|https://github.com/Perl/perl5/issues/16849>. =item * @@ -1049,7 +1049,7 @@ Added C to copy a SV without processing get magic on the source. -L<[perl #132964]|https://rt.perl.org/Ticket/Display.html?id=132964>. +L<[GH #16461]|https://github.com/Perl/perl5/issues/16461>. =item * @@ -1088,40 +1088,40 @@ indirectly, e.g. >= 0). When this optimization was triggered inside a C clause it caused a warning ("Argument %s isn't numeric in smart match"). This has now been fixed. -L<[perl #133368]|https://rt.perl.org/Ticket/Display.html?id=133368> +L<[GH #16626]|https://github.com/Perl/perl5/issues/16626> =item * The new in-place editing code no longer leaks directory handles. -L<[perl #133314]|https://rt.perl.org/Ticket/Display.html?id=133314>. +L<[GH #16602]|https://github.com/Perl/perl5/issues/16602>. =item * Warnings produced from constant folding operations on overloaded values no longer produce spurious "Use of uninitialized value" warnings. -L<[perl #132683]|https://rt.perl.org/Ticket/Display.html?id=132683>. +L<[GH #16349]|https://github.com/Perl/perl5/issues/16349>. =item * Fix for "mutator not seen in (lex = ...) .= ..." -L<[perl #133441]|https://rt.perl.org/Ticket/Display.html?id=133441>. +L<[GH #16655]|https://github.com/Perl/perl5/issues/16655>. =item * C now properly NUL terminates the zero-length SV produced. -L<[perl #132655]|https://rt.perl.org/Ticket/Display.html?id=132655>. +L<[GH #16343]|https://github.com/Perl/perl5/issues/16343>. =item * Improve the debugging output for calloc() calls with C<-Dm>. -L<[perl #133439]|https://rt.perl.org/Ticket/Display.html?id=133439>. +L<[GH #16653]|https://github.com/Perl/perl5/issues/16653>. =item * Regexp script runs were failing to permit ASCII digits in some cases. -L<[perl #133547]|https://rt.perl.org/Ticket/Display.html?id=133547>. +L<[GH #16704]|https://github.com/Perl/perl5/issues/16704>. =item * @@ -1129,19 +1129,19 @@ determining L<< C<$^X>|perlvar/$^X >>, Perl failed to fall back to the generic technique when the platform-specific one fails (for example, a Linux system with /proc not mounted). This was a regression in Perl 5.28.0. -L<[perl #133573]|https://rt.perl.org/Ticket/Display.html?id=133573>. +L<[GH #16715]|https://github.com/Perl/perl5/issues/16715>. =item * L is now more robust with corrupt database files. The improvements do not make SDBM files suitable as an interchange format. -L<[perl #132147]|https://rt.perl.org/Ticket/Display.html?id=132147>. +L<[GH #16164]|https://github.com/Perl/perl5/issues/16164>. =item * C or C now properly removes the C<:utf8> flag from the default C<:crlf> I/O layer on Win32. -L<[perl #133604]|https://rt.perl.org/Ticket/Display.html?id=133604>. +L<[GH #16730]|https://github.com/Perl/perl5/issues/16730>. =item * @@ -1154,13 +1154,13 @@ local \(@a[3,5,7]) = \(....); -L<[perl #133538]|https://rt.perl.org/Ticket/Display.html?id=133538>. +L<[GH #16701]|https://github.com/Perl/perl5/issues/16701>. =item * C within an C when C was UTF-8 upgraded could panic if the C was non-ASCII. -L<[perl #134061]|https://rt.perl.org/Ticket/Display.html?id=134061>. +L<[GH #16979]|https://github.com/Perl/perl5/issues/16979>. =item * @@ -1168,7 +1168,7 @@ modification isn't visible to the perl user, since realloc() is called implicitly by the interpreter. This modification is permitted by the C standard, but has only been observed on FreeBSD 13.0-CURRENT. -L<[perl #133958]|https://rt.perl.org/Ticket/Display.html?id=133958>. +L<[GH #16907]|https://github.com/Perl/perl5/issues/16907>. =item * @@ -1177,14 +1177,14 @@ and may be removed or changed without notice. This fixes some bootstrapping issues while building perl in a directory where some ancestor directory isn't readable. -L<[perl #133951]|https://rt.perl.org/Ticket/Display.html?id=133951>. +L<[GH #16903]|https://github.com/Perl/perl5/issues/16903>. =item * C no longer can return malformed UTF-8. It croaks if it would otherwise return a UTF-8 string that contains malformed UTF-8. This protects against potential security threats. -L<[perl #131642]|https://rt.perl.org/Ticket/Display.html?id=131642>. +L<[GH #16035]|https://github.com/Perl/perl5/issues/16035>. =item * @@ -1200,7 +1200,7 @@ =item * Reduce recursion on ops -L<[perl #108276]|https://rt.perl.org/Ticket/Display.html?id=108276>. +L<[GH #11866]|https://github.com/Perl/perl5/issues/11866>. This can prevent stack overflow when processing extremely deep op trees. @@ -1208,7 +1208,7 @@ =item * Avoid leak in multiconcat with overloading. -L<[perl #133789]|https://rt.perl.org/Ticket/Display.html?id=133789>. +L<[GH #16823]|https://github.com/Perl/perl5/issues/16823>. =item * @@ -1289,19 +1289,19 @@ multi-character fold, we back off one (or more) characters, leaving a shorter EXACTFish regnode. This backing off mechanism contained an off-by-one error. -L<[perl #133756]|https://rt.perl.org/Ticket/Display.html?id=133756>. +L<[GH #16806]|https://github.com/Perl/perl5/issues/16806>. =item * A bare C call with no previous file handle now returns true. -L<[perl #133721]|https://rt.perl.org/Ticket/Display.html?id=133721> +L<[GH #16786]|https://github.com/Perl/perl5/issues/16786> =item * Failing to compile a format now aborts compilation. Like other errors in sub-parses this could leave the parser in a strange state, possibly crashing perl if compilation continued. -L<[perl #132158]|https://rt.perl.org/Ticket/Display.html?id=132158> +L<[GH #16169]|https://github.com/Perl/perl5/issues/16169> =item * @@ -1319,7 +1319,7 @@ perl -i -ne 'print "Foo"; die' will not. Partly resolves -L<[perl #133659]|https://rt.perl.org/Ticket/Display.html?id=133659>. +L<[GH #16748]|https://github.com/Perl/perl5/issues/16748>. =item * @@ -1339,12 +1339,12 @@ Fixed build failures with C<< -DNO_LOCALE_NUMERIC >> and C<< -DNO_LOCALE_COLLATE >>. -L<[perl #133696]|https://rt.perl.org/Ticket/Display.html?id=133696>. +L<[GH #16771]|https://github.com/Perl/perl5/issues/16771>. =item * Prevent the tests in F<< ext/B/t/strict.t >> from being skipped. -L<[perl #133713]|https://rt.perl.org/Ticket/Display.html?id=133713>. +L<[GH #16783]|https://github.com/Perl/perl5/issues/16783>. =item * diff -Nru perl-5.32.1/pod/perl5301delta.pod perl-5.34.0/pod/perl5301delta.pod --- perl-5.32.1/pod/perl5301delta.pod 2020-12-18 09:58:51.000000000 +0000 +++ perl-5.34.0/pod/perl5301delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -9,8 +9,8 @@ This document describes differences between the 5.30.0 release and the 5.30.1 release. -If you are upgrading from an earlier release such as 5.29.0, first read -L, which describes differences between 5.29.0 and 5.30.0. +If you are upgrading from an earlier release such as 5.28.0, first read +L, which describes differences between 5.28.0 and 5.30.0. =head1 Incompatible Changes diff -Nru perl-5.32.1/pod/perl5320delta.pod perl-5.34.0/pod/perl5320delta.pod --- perl-5.32.1/pod/perl5320delta.pod 2020-10-17 14:27:56.000000000 +0000 +++ perl-5.34.0/pod/perl5320delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -220,7 +220,7 @@ $sub = sub () { return $var }; This has been deprecated since Perl 5.22. -[L] +L<[GH #17020]|https://github.com/Perl/perl5/issues/17020> =head2 Use of L|perlfunc/vec EXPR,OFFSET,BITS> on strings with code points above 0xFF is forbidden @@ -248,13 +248,13 @@ This was due to a special case that treated strings starting with "0" as strings so ranges like C<"00" .. "03"> produced C<"00", "01", "02", "03">, but didn't specially handle the string C<"0">. -[L] +L<[GH #16770]|https://github.com/Perl/perl5/issues/16770> =head2 C<\K> now disallowed in look-ahead and look-behind assertions This was disallowed because it causes unexpected behaviour, and no-one could define what the desired behaviour should be. -[L] +L<[GH #14638]|https://github.com/Perl/perl5/issues/14638> =head1 Performance Enhancements @@ -441,7 +441,7 @@ socket type the protocol method may return C. The supplied I is now always honoured on calls to the C -method. [L] +method. L<[GH #16891]|https://github.com/Perl/perl5/issues/16891> =item * @@ -567,7 +567,7 @@ Regular expressions objects weren't properly counted for object id purposes on retrieve. This would corrupt the resulting structure, or -cause a runtime error in some cases. [L] +cause a runtime error in some cases. L<[GH #17037]|https://github.com/Perl/perl5/issues/17037> =item * @@ -622,7 +622,7 @@ L has been upgraded from version 1.9760 to 1.9764. Removed obsolete code such as support for pre-5.6 perl and classic -MacOS. [L] +MacOS. L<[GH #17096]|https://github.com/Perl/perl5/issues/17096> =item * @@ -665,8 +665,8 @@ =item * Pod::Parser has been removed from the core distribution. -It still is available for download from CPAN. This resolves [L]. +It still is available for download from CPAN. This resolves +[L<#13194|https://github.com/Perl/perl5/issues/13194>]. =back @@ -1200,7 +1200,7 @@ Perl now no longer probes for C, defaulting to C on all platforms. This check was error-prone when it was done, which was on 32-bit platforms only. -[L] +L<[GH #16680]|https://github.com/Perl/perl5/issues/16680> =item * @@ -1214,7 +1214,7 @@ =item * Improvements in F to detection in C++ and clang++. Work ongoing by -Andy Dougherty. [L] +Andy Dougherty. L<[GH #17033]|https://github.com/Perl/perl5/issues/17033> =item * @@ -1230,7 +1230,7 @@ The C macro is now defined. This is used in a C rule that was originally changed for FreeBSD, and the FreeBSD make apparently predefines it. The Solaris make does not predefine C which broke this rule on Solaris. -[L] +L<[GH #17057]|https://github.com/Perl/perl5/issues/17057> =item * @@ -1302,7 +1302,7 @@ =item Linux C will be used to populate C if C is C. -[L] +L<[GH #17043]|https://github.com/Perl/perl5/issues/17043> =item NetBSD 8.0 @@ -1329,7 +1329,7 @@ wasn't validly encoded in the current code page. For the second we now decode the locale name ourselves, and always -decode it as UTF-8. [L] +decode it as UTF-8. L<[GH #16922]|https://github.com/Perl/perl5/issues/16922> =item * @@ -1472,7 +1472,7 @@ were undocumented, one being that under some circumstances (but not all) with C, the squeezing was done based on the source, rather than the replacement. A documented bug that got fixed was -[L]. +L<[GH #14777]|https://github.com/Perl/perl5/issues/14777>. =item * @@ -1503,7 +1503,7 @@ allows a keyword plugin to parse a subroutine signature while C is in effect. This allows custom keywords to implement semantics similar to regular C declarations that include signatures. -[L] +L<[GH #16261]|https://github.com/Perl/perl5/issues/16261> =item * @@ -1511,7 +1511,7 @@ switching locales, new macros (C, C and C) have been added to make it easier to do this safely and efficiently -as part of [L]. +as part of L<[GH #17034]|https://github.com/Perl/perl5/issues/17034>. =item * @@ -1521,7 +1521,7 @@ =item * L no longer stringifies the exception when -C is true. [L] +C<[GH #17035]|https://github.com/Perl/perl5/issues/17035>] =item * @@ -1536,12 +1536,12 @@ The API eval_sv() now accepts a C flag. If this flag is set and an exception is thrown while compiling or executing the supplied code, it will be rethrown, and eval_sv() will not return. -[L] +L<[GH #17036]|https://github.com/Perl/perl5/issues/17036> =item * As part of the fix for -[L] perl_parse() +L<[GH #1537]|https://github.com/Perl/perl5/issues/1537> perl_parse() now returns non-zero if exit(0) is called in a C, C or C block. @@ -1656,76 +1656,76 @@ binary numbers respectively when converting a string to a number. This reverts a change in behaviour inadvertently introduced in perl 5.30.0 intended to improve precision when converting a string to a -floating point number. [L] +floating point number. L<[GH #17062]|https://github.com/Perl/perl5/issues/17062> =item * Matching a non-C string against a regular expression containing unicode literals could leak a SV on each match attempt. -[L] +L<[GH #17140]|https://github.com/Perl/perl5/issues/17140> =item * Overloads for octal and binary floating point literals were always passed a string with a C<0x> prefix instead of the appropriate C<0> or -C<0b> prefix. [L] +C<[GH #14791]|https://github.com/Perl/perl5/issues/14791>] =item * C<< $@ = 100; die; >> now correctly propagates the 100 as an exception -instead of ignoring it. [L] +instead of ignoring it. L<[GH #17098]|https://github.com/Perl/perl5/issues/17098> =item * -C<< 0 0x@ >> no longer asserts in S_no_op(). [L] +C<[GH #17108]|https://github.com/Perl/perl5/issues/17108>] =item * Exceptions thrown while C<$@> is read-only could result in infinite recursion as perl tried to update C<$@>, which throws another exception, resulting in a stack overflow. Perl now replaces C<$@> -with a copy if it's not a simple writable SV. [L] +with a copy if it's not a simple writable SV. L<[GH #17083]|https://github.com/Perl/perl5/issues/17083> =item * Setting C<$)> now properly sets supplementary group ids if you have -the necessary privileges. [L] +the necessary privileges. L<[GH #17031]|https://github.com/Perl/perl5/issues/17031> =item * close() on a pipe now preemptively clears the PerlIO object from the IO SV. This prevents a second attempt to close the already closed PerlIO object if a signal handler calls die() or exit() while close() -is waiting for the child process to complete. [L] +is waiting for the child process to complete. L<[GH #13929]|https://github.com/Perl/perl5/issues/13929> =item * C<< sprintf("%.*a", -10000, $x) >> would cause a buffer overflow due -to mishandling of the negative precision value. [L] +to mishandling of the negative precision value. L<[GH #16942]|https://github.com/Perl/perl5/issues/16942> =item * scalar() on a reference could cause an erroneous assertion failure -during compilation. [L] +during compilation. L<[GH #16969]|https://github.com/Perl/perl5/issues/16969> =item * C<%{^CAPTURE_ALL}> is now an alias to C<%-> as documented, rather than -incorrectly an alias for C<%+>. [L] +incorrectly an alias for C<[GH #16105]|https://github.com/Perl/perl5/issues/16105>] =item * C<%{^CAPTURE}> didn't work if C<@{^CAPTURE}> was mentioned first. Similarly for C<%{^CAPTURE_ALL}> and C<@{^CAPTURE_ALL}>, though -C<@{^CAPTURE_ALL}> currently isn't used. [L] +C<[GH #17045]|https://github.com/Perl/perl5/issues/17045>] =item * Extraordinarily large (over 2GB) floating point format widths could cause an integer overflow in the underlying call to snprintf(), resulting in an assertion. Formatted floating point widths are now -limited to the range of int, the return value of snprintf(). [L] +limited to the range of int, the return value of snprintf(). +[L<#16881|https://github.com/Perl/perl5/issues/16881>] =item * @@ -1752,15 +1752,15 @@ =item * Attributes can now be used in a sub-parse. -[L] +L<[GH #16847]|https://github.com/Perl/perl5/issues/16847> =back =item * Incomplete hex and binary literals like C<0x> and C<0b> are now -treated as if the C or C is part of the next token. [L] +treated as if the C or C is part of the next token. +[L<#17010|https://github.com/Perl/perl5/issues/17010>] =item * @@ -1773,24 +1773,24 @@ assertion failure. Such constructs are now surrounded by artificial tokens that can't be -included in the source. [L] +included in the source. L<[GH #15814]|https://github.com/Perl/perl5/issues/15814> =item * Reference assignment of a sub, such as C<\&foo = \&bar;>, silently did -nothing in the C package. [L] +nothing in the C<[GH #16987]|https://github.com/Perl/perl5/issues/16987>] =item * sv_gets() now recovers better if the target SV is modified by a signal -handler. [L] +handler. L<[GH #16960]|https://github.com/Perl/perl5/issues/16960> =item * C now evaluates C<@foo> in scalar context. Previously it would be evaluated in list context, and since readline() pops only one argument from the stack, the stack could underflow, or be left -with unexpected values on the stack. [L] +with unexpected values on the stack. L<[GH #16929]|https://github.com/Perl/perl5/issues/16929> =item * @@ -1798,31 +1798,31 @@ literal as just the 0, leaving the following C or C to be parsed as part of the next token. This could lead to some silent changes in behaviour, so now incomplete hex or binary literals produce a fatal error. -[L] +L<[GH #17010]|https://github.com/Perl/perl5/issues/17010> =item * eval_pv()'s I flag will now throw even if the exception is a false overloaded value. -[L] +L<[GH #17036]|https://github.com/Perl/perl5/issues/17036> =item * C blocks and the program itself are no longer run if exit(0) is called within a C, C or C block. -[L] +L<[GH #1537]|https://github.com/Perl/perl5/issues/1537> =item * C<< open my $fh, ">>+", undef >> now opens the temporary file in append mode: writes will seek to the end of file before writing. -[L] +L<[GH #17058]|https://github.com/Perl/perl5/issues/17058> =item * Fixed a SEGV when searching for the source of an uninitialized value warning on an op whose subtree includes an OP_MULTIDEREF. -[L] +L<[GH #17088]|https://github.com/Perl/perl5/issues/17088> =back diff -Nru perl-5.32.1/pod/perl5321delta.pod perl-5.34.0/pod/perl5321delta.pod --- perl-5.32.1/pod/perl5321delta.pod 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/pod/perl5321delta.pod 2021-05-04 06:52:48.000000000 +0000 @@ -0,0 +1,266 @@ +=encoding utf8 + +=head1 NAME + +perl5321delta - what is new for perl v5.32.1 + +=head1 DESCRIPTION + +This document describes differences between the 5.32.0 release and the 5.32.1 +release. + +If you are upgrading from an earlier release such as 5.30.0, first read +L, which describes differences between 5.30.0 and 5.32.0. + +=head1 Incompatible Changes + +There are no changes intentionally incompatible with Perl 5.32.0. If any +exist, they are bugs, and we request that you submit a report. See +L below. + +=head1 Modules and Pragmata + +=head2 Updated Modules and Pragmata + +=over 4 + +=item * + +L has been upgraded from version 2.174 to 2.174_01. + +A number of memory leaks have been fixed. + +=item * + +L has been upgraded from version 1.47 to 1.47_01. + +=item * + +L has been upgraded from version 5.20200620 to 5.20210123. + +=item * + +L has been upgraded from version 1.47 to 1.48. + +A warning has been added about evaluating untrusted code with the perl +interpreter. + +=item * + +L has been upgraded from version 2.41 to 2.41_01. + +A warning has been added about evaluating untrusted code with the perl +interpreter. + +=back + +=head1 Documentation + +=head2 New Documentation + +=head3 L + +Documentation of the newly formed rules of governance for Perl. + +=head3 L + +Documentation of how the Perl security team operates and how the team evaluates +new security reports. + +=head2 Changes to Existing Documentation + +We have attempted to update the documentation to reflect the changes listed in +this document. If you find any we have missed, open an issue at +L. + +Additionally, the following selected changes have been made: + +=head3 L + +=over 4 + +=item * + +Document range op behaviour change. + +=back + +=head1 Diagnostics + +The following additions or changes have been made to diagnostic output, +including warnings and fatal error messages. For the complete list of +diagnostic messages, see L. + +=head2 Changes to Existing Diagnostics + +=over 4 + +=item * + +L<\K not permitted in lookahead/lookbehind in regex; marked by <-- HERE in mE%sE|perldiag/"\K not permitted in lookahead/lookbehind in regex; marked by <-- HERE in m/%s/"> + +This error was incorrectly produced in some cases involving nested lookarounds. +This has been fixed. + +[L] + +=back + +=head1 Configuration and Compilation + +=over 4 + +=item * + +Newer 64-bit versions of the Intel C/C++ compiler are now recognized and have +the correct flags set. + +=item * + +We now trap SIGBUS when F checks for C. + +On several systems the attempt to determine if we need C or similar +results in a SIGBUS instead of the expected SIGSEGV, which previously caused a +core dump. + +[L] + +=back + +=head1 Testing + +Tests were added and changed to reflect the other additions and changes in this +release. + +=head1 Platform Support + +=head2 Platform-Specific Notes + +=over 4 + +=item MacOS (Darwin) + +The hints file for darwin has been updated to handle future macOS versions +beyond 10. Perl can now be built on macOS Big Sur. + +[L, +L] + +=item Minix + +Build errors on Minix have been fixed. + +[L] + +=back + +=head1 Selected Bug Fixes + +=over 4 + +=item * + +Some list assignments involving C on the left-hand side were +over-optimized and produced incorrect results. + +[L, +L] + +=item * + +Fixed a bug in which some regexps with recursive subpatterns matched +incorrectly. + +[L] + +=item * + +Fixed a deadlock that hung the build when Perl is compiled for debugging memory +problems and has PERL_MEM_LOG enabled. + +[L] + +=item * + +Fixed a crash in the use of chained comparison operators when run under "no +warnings 'uninitialized'". + +[L, +L] + +=item * + +Exceptions thrown from destructors during global destruction are no longer +swallowed. + +[L] + +=back + +=head1 Acknowledgements + +Perl 5.32.1 represents approximately 7 months of development since Perl 5.32.0 +and contains approximately 7,000 lines of changes across 80 files from 23 +authors. + +Excluding auto-generated files, documentation and release tools, there were +approximately 1,300 lines of changes to 23 .pm, .t, .c and .h files. + +Perl continues to flourish into its fourth decade thanks to a vibrant community +of users and developers. The following people are known to have contributed +the improvements that became Perl 5.32.1: + +Adam Hartley, Andy Dougherty, Dagfinn Ilmari Mannsåker, Dan Book, David +Mitchell, Graham Knop, Graham Ollis, Hauke D, H.Merijn Brand, Hugo van der +Sanden, John Lightsey, Karen Etheridge, Karl Williamson, Leon Timmermans, Max +Maischein, Nicolas R., Ricardo Signes, Richard Leach, Sawyer X, Sevan Janiyan, +Steve Hay, Tom Hukins, Tony Cook. + +The list above is almost certainly incomplete as it is automatically generated +from version control history. In particular, it does not include the names of +the (very much appreciated) contributors who reported issues to the Perl bug +tracker. + +Many of the changes included in this version originated in the CPAN modules +included in Perl's core. We're grateful to the entire CPAN community for +helping Perl to flourish. + +For a more complete list of all of Perl's historical contributors, please see +the F file in the Perl source distribution. + +=head1 Reporting Bugs + +If you find what you think is a bug, you might check the perl bug database at +L. There may also be information at +L, the Perl Home Page. + +If you believe you have an unreported bug, please open an issue at +L. Be sure to trim your bug down to a +tiny but sufficient test case. + +If the bug you are reporting has security implications which make it +inappropriate to send to a public issue tracker, then see +L for details of how to +report the issue. + +=head1 Give Thanks + +If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, you +can do so by running the C program: + + perlthanks + +This will send an email to the Perl 5 Porters list with your show of thanks. + +=head1 SEE ALSO + +The F file for an explanation of how to view exhaustive details on +what changed. + +The F file for how to build Perl. + +The F file for general stuff. + +The F and F files for copyright information. + +=cut diff -Nru perl-5.32.1/pod/perlapio.pod perl-5.34.0/pod/perlapio.pod --- perl-5.32.1/pod/perlapio.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlapio.pod 2020-11-18 22:09:15.000000000 +0000 @@ -68,6 +68,8 @@ const char *layers); void PerlIO_debug(const char *fmt,...); +=for apidoc_section $io + =for apidoc Amh|int |PerlIO_apply_layers|PerlIO *f|const char *mode|const char *layers =for apidoc Amh|int |PerlIO_binmode|PerlIO *f|int ptype|int imode|const char *layers =for apidoc ATmh|int |PerlIO_canset_cnt|PerlIO *f diff -Nru perl-5.32.1/pod/perlcall.pod perl-5.34.0/pod/perlcall.pod --- perl-5.32.1/pod/perlcall.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlcall.pod 2020-11-18 22:09:15.000000000 +0000 @@ -121,12 +121,14 @@ =head1 FLAG VALUES -The C parameter in all the I functions is one of G_VOID, -G_SCALAR, or G_ARRAY, which indicate the call context, OR'ed together +The C parameter in all the I functions is one of C, +C, or C, which indicate the call context, OR'ed together with a bit mask of any combination of the other G_* symbols defined below. =head2 G_VOID +=for apidoc AmnUh||G_VOID + Calls the Perl subroutine in a void context. This flag has 2 effects: @@ -152,6 +154,8 @@ =head2 G_SCALAR +=for apidoc AmnUh||G_SCALAR + Calls the Perl subroutine in a scalar context. This is the default context flag setting for all the I functions. @@ -192,6 +196,8 @@ =head2 G_ARRAY +=for apidoc AmnUh||G_ARRAY + Calls the Perl subroutine in a list context. As with G_SCALAR, this flag has 2 effects: @@ -223,6 +229,8 @@ =head2 G_DISCARD +=for apidoc AmnUh||G_DISCARD + By default, the I functions place the items returned from by the Perl subroutine on the stack. If you are not interested in these items, then setting this flag will make Perl get rid of them @@ -239,6 +247,8 @@ =head2 G_NOARGS +=for apidoc AmnUh||G_NOARGS + Whenever a Perl subroutine is called using one of the I functions, it is assumed by default that parameters are to be passed to the subroutine. If you are not passing any parameters to the Perl @@ -275,6 +285,8 @@ =head2 G_EVAL +=for apidoc AmnUh||G_EVAL + It is possible for the Perl subroutine you are calling to terminate abnormally, e.g., by calling I explicitly or by not actually existing. By default, when either of these events occurs, the @@ -319,6 +331,8 @@ =head2 G_KEEPERR +=for apidoc AmnUh||G_KEEPERR + Using the G_EVAL flag described above will always set C<$@>: clearing it if there was no error, and setting it to describe the error if there was an error in the called code. This is what you want if your intention @@ -993,7 +1007,7 @@ C is a macro that calls a function, and C would end up calling that function multiple times. -=for apidoc Amnh|GV *|PL_errgv +=for apidoc AmnUh|GV *|PL_errgv =item 3. diff -Nru perl-5.32.1/pod/perlclib.pod perl-5.34.0/pod/perlclib.pod --- perl-5.32.1/pod/perlclib.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlclib.pod 2020-11-18 22:09:15.000000000 +0000 @@ -185,8 +185,8 @@ isupper(c) isUPPER(c) isUPPER_L1(c) isUPPER_LC(c) isxdigit(c) isXDIGIT(c) isXDIGIT_L1(c) isXDIGIT_LC(c) - tolower(c) toLOWER(c) toLOWER_L1(c) toLOWER_LC(c) - toupper(c) toUPPER(c) toUPPER_LC(c) + tolower(c) toLOWER(c) toLOWER_L1(c) + toupper(c) toUPPER(c) To emphasize that you are operating only on ASCII characters, you can append C<_A> to each of the macros in the ASCII column: C, @@ -196,7 +196,7 @@ is an C, which is identical to C; the latter name is clearer. There is no entry in the Latin1 column for C because the result can be non-Latin1. You have to use -C, as described in L.) +C, as described in L.) =head2 F functions diff -Nru perl-5.32.1/pod/perlcommunity.pod perl-5.34.0/pod/perlcommunity.pod --- perl-5.32.1/pod/perlcommunity.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlcommunity.pod 2021-01-20 23:04:44.000000000 +0000 @@ -20,6 +20,11 @@ maintained by the Perl Foundation (L), which tracks and provides services for a variety of other community sites. +=head3 Raku + +Perl's sister language, Raku (formerly known as Perl 6), maintains its own +directory of community resources at L. + =head2 Mailing Lists and Newsgroups Perl runs on e-mail; there is no doubt about it. The Camel book was originally @@ -39,8 +44,7 @@ found at L. Many other more specific chats are also hosted on the network. Information about irc.perl.org is located on the network's website: L. For a more help-oriented #perl, -check out L. Raku development also has a -presence in L. Most Perl-related channels +check out L. Most Perl-related channels will be kind enough to point you in the right direction if you ask nicely. Any large IRC network (Dalnet, EFnet) is also likely to have a #perl channel, diff -Nru perl-5.32.1/pod/perldata.pod perl-5.34.0/pod/perldata.pod --- perl-5.32.1/pod/perldata.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perldata.pod 2021-01-20 23:04:44.000000000 +0000 @@ -126,7 +126,7 @@ That is, a "start" character followed by any number of "continue" characters. Perl requires every character in an identifier to also match C<\w> (this prevents some problematic cases); and Perl -additionally accepts identfier names beginning with an underscore. +additionally accepts identifier names beginning with an underscore. If not under C, the source is treated as ASCII + 128 extra generic characters, and identifiers should match @@ -444,6 +444,7 @@ 0xff # hex 0xdead_beef # more hex 0377 # octal (only numbers, begins with 0) + 0o12_345 # alternative octal (introduced in Perl 5.33.5) 0b011011 # binary 0x1.999ap-4 # hexadecimal floating point (the 'p' is required) @@ -606,7 +607,8 @@ The two control characters ^D and ^Z, and the tokens __END__ and __DATA__ may be used to indicate the logical end of the script before the actual -end of file. Any following text is ignored. +end of file. Any following text is ignored by the interpreter unless +read by the program as described below. Text after __DATA__ may be read via the filehandle C, where C is the package that was current when the __DATA__ @@ -619,6 +621,11 @@ not in files loaded with C or C) and leaves the remaining contents of the file accessible via C. + while (my $line = ) { print $line; } + close DATA; + __DATA__ + Hello world. + The C file handle by default has whatever PerlIO layers were in place when Perl read the file to parse the source. Normally that means that the file is being read bytewise, as if it were encoded in diff -Nru perl-5.32.1/pod/perldebguts.pod perl-5.34.0/pod/perldebguts.pod --- perl-5.32.1/pod/perldebguts.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perldebguts.pod 2020-10-24 18:43:34.000000000 +0000 @@ -56,9 +56,9 @@ =item * -Each scalar C<${"_<$filename"}> contains C<"_<$filename">. This is +Each scalar C<${"_<$filename"}> contains C<$filename>. This is also the case for evaluated strings that contain subroutines, or -which are currently being executed. The $filename for Ced +which are currently being executed. The C<$filename> for Ced strings looks like C<(eval 34)>. =item * @@ -686,20 +686,20 @@ (string folded) EXACTFAA str Like EXACT, but match using /iaa rules; - (string folded except in non-UTF8 patterns: - MICRO, SHARP S; folded length <= unfolded) + (string folded except MICRO in non-UTF8 + patterns; doesn't contain SHARP S unless + UTF-8; folded length <= unfolded) + EXACTFAA_NO_TRIE str Like EXACTFAA, (string not UTF-8, folded + except: MICRO, SHARP S; folded length <= + unfolded, not currently trie-able) EXACTFUP str Like EXACT, but match using /iu rules; - (string not UTF-8, folded except MICRO, - SHARP S: hence Problematic) + (string not UTF-8, folded except MICRO: + hence Problematic) EXACTFLU8 str Like EXACTFU, but use /il, UTF-8, (string is folded, and everything in it is above 255 - EXACTFAA_NO_TRIE str Like EXACT, but match using /iaa rules - (string not UTF-8, not guaranteed to be - folded, not currently trie-able) - EXACT_REQ8 str Like EXACT, but only UTF-8 encoded targets can match LEXACT_REQ8 len:str 1 Like LEXACT, but only UTF-8 encoded targets @@ -711,6 +711,24 @@ except begins and/or ends with [Ss]; (string not UTF-8; compile-time only) + # New charclass like patterns + LNBREAK none generic newline pattern + + # Trie Related + + # Behave the same as A|LIST|OF|WORDS would. The '..C' variants + # have inline charclass data (ascii only), the 'C' store it in the + # structure. + + TRIE trie 1 Match many EXACT(F[ALU]?)? at once. + flags==type + TRIEC trie Same as TRIE, but with embedded charclass + charclass data + + AHOCORASICK trie 1 Aho Corasick stclass. flags==type + AHOCORASICKC trie Same as AHOCORASICK, but with embedded + charclass charclass data + # Do nothing types NOTHING no Match empty string. @@ -797,21 +815,6 @@ # This is not used yet RENUM off 1 1 Group with independently numbered parens. - # Trie Related - - # Behave the same as A|LIST|OF|WORDS would. The '..C' variants - # have inline charclass data (ascii only), the 'C' store it in the - # structure. - - TRIE trie 1 Match many EXACT(F[ALU]?)? at once. - flags==type - TRIEC trie Same as TRIE, but with embedded charclass - charclass data - - AHOCORASICK trie 1 Aho Corasick stclass. flags==type - AHOCORASICKC trie Same as AHOCORASICK, but with embedded - charclass charclass data - # Regex Subroutines GOSUB num/ofs 2L recurse to paren arg1 at (signed) ofs arg2 @@ -842,9 +845,6 @@ # Control what to keep in $&. KEEPS no $& begins here. - # New charclass like patterns - LNBREAK none generic newline pattern - # SPECIAL REGOPS # This is not really a node, but an optimized away piece of a "long" @@ -1089,8 +1089,9 @@ =head1 SEE ALSO L, +L, L, -L +L, L, and L. diff -Nru perl-5.32.1/pod/perldebtut.pod perl-5.34.0/pod/perldebtut.pod --- perl-5.32.1/pod/perldebtut.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perldebtut.pod 2020-10-24 18:43:34.000000000 +0000 @@ -715,6 +715,7 @@ L, L, +L, L, L diff -Nru perl-5.32.1/pod/perldebug.pod perl-5.34.0/pod/perldebug.pod --- perl-5.32.1/pod/perldebug.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perldebug.pod 2020-10-24 18:43:34.000000000 +0000 @@ -14,6 +14,9 @@ If you're looking for the nitty gritty details of how the debugger is I, you may prefer to read L. +For in-depth technical usage details, see L, the documentation +of the debugger itself. + =head1 The Perl Debugger If you invoke Perl with the B<-d> switch, your script runs under the @@ -676,9 +679,9 @@ =head2 Configurable Options The debugger has numerous options settable using the C command, -either interactively or from the environment or an rc file. -(./.perldb or ~/.perldb under Unix.) - +either interactively or from the environment or an rc file. The file +is named F<./.perldb> or F<~/.perldb> under Unix with F, +F otherwise. =over 12 @@ -1206,6 +1209,7 @@ L, L, +L, L, L, L, diff -Nru perl-5.32.1/pod/perldelta.pod perl-5.34.0/pod/perldelta.pod --- perl-5.32.1/pod/perldelta.pod 2021-01-23 13:15:22.000000000 +0000 +++ perl-5.34.0/pod/perldelta.pod 2021-05-20 17:10:07.000000000 +0000 @@ -2,108 +2,895 @@ =head1 NAME -perldelta - what is new for perl v5.32.1 +perldelta - what is new for perl v5.34.0 =head1 DESCRIPTION -This document describes differences between the 5.32.0 release and the 5.32.1 +This document describes differences between the 5.32.0 release and the 5.34.0 release. -If you are upgrading from an earlier release such as 5.31.0, first read -L, which describes differences between 5.31.0 and 5.32.0. +If you are upgrading from an earlier release such as 5.30.0, first read +L, which describes differences between 5.30.0 and 5.32.0. -=head1 Incompatible Changes +=head1 Core Enhancements -There are no changes intentionally incompatible with Perl 5.32.0. If any -exist, they are bugs, and we request that you submit a report. See -L below. +=head2 Experimental Try/Catch Syntax + +An initial experimental attempt at providing C/C notation has +been added. + + use feature 'try'; + + try { + a_function(); + } + catch ($e) { + warn "An error occurred: $e"; + } + +For more information, see L. + +=head2 C is now accepted + +An empty lower bound is now accepted for regular expression quantifiers, +like C<{,3}>. + +=head2 Blanks freely allowed within but adjacent to curly braces + +(in double-quotish contexts and regular expression patterns) + +This means you can write things like S> if you like. This +applies to all such constructs, namely C<\b{}>, C<\g{}>, C<\k{}>, +C<\N{}>, C<\o{}>, and C<\x{}>; as well as the regular expression +quantifier C<{I,I}>. C<\p{}> and C<\P{}> retain their +already-existing, even looser, rules mandated by the Unicode standard +(see L). + +This ability is in effect regardless of the presence of the C +regular expression pattern modifier. + +Additionally, the comma in a regular expression braced quantifier may +have blanks (tabs or spaces) before and/or after the comma, like +S>. + +=head2 New octal syntax C<0oI> + +It is now possible to specify octal literals with C<0o> prefixes, +as in C<0o123_456>, parallel to the existing construct to specify +hexadecimal literal C<0xI> and binary literal C<0bI>. +Also, the builtin C function now accepts this new syntax. + +See L and L. + +=head1 Performance Enhancements + +=over 4 + +=item * + +Fix a memory leak in RegEx +[L] + +=back =head1 Modules and Pragmata -=head2 Updated Modules and Pragmata +=head2 New Modules and Pragmata + +=over 4 + +=item * + +L 0.004 has been added to the Perl core. + +This module is a generalization of the C script. It being a script has +led to at least two forks of this code; this module will unify them under one +implementation with tests. + +=back + +=head2 Updated Modules and Pragmata + +=over 4 + +=item * + +L has been upgraded from version 2.36 to 2.38. + +=item * + +L has been upgraded from version 2.32 to 2.34. + +=item * + +L has been upgraded from version 1.80 to 1.82. + +=item * + +L has been upgraded from version 1.54 to 1.56. + +=item * + +L has been upgraded from version 1.07 to 1.08. + +=item * + +L has been upgraded from version 1.50 to 1.52. + +=item * + +L has been upgraded from version 2.093 to 2.101. + +=item * + +L has been upgraded from version 2.093 to 2.101. + +=item * + +L has been upgraded from version 0.32 to 0.33. + +=item * + +L has been upgraded from version 2.27 to 2.28. + +=item * + +L has been upgraded from version 2.174 to 2.179. + +=item * + +L has been upgraded from version 1.58 to 1.59. + +=item * + +L has been upgraded from version 1.853 to 1.855. + +=item * + +L has been upgraded from version 1.28 to 1.30. + +=item * + +L has been upgraded from version 3.57 to 3.62. + +New C comparison macros are now available. + +C no longer includes non-API info unless that is the only +match + +=item * + +L has been upgraded from version 1.17_01 to 1.19. + +=item * + +L has been upgraded from version 2.55_01 to 2.58. + +=item * + +L has been upgraded from version 1.47 to 1.50. + +=item * + +L has been upgraded from version 3.06 to 3.08. + +=item * + +L has been upgraded from version 1.04 to 1.05. + +=item * + +L has been upgraded from version 1.30 to 1.33. + +=item * + +L has been upgraded from version 0.020 to 0.024. + +=item * + +L has been upgraded from version 5.74 to 5.76. + +=item * + +L has been upgraded from version 0.280234 to 0.280236. + +=item * + +L has been upgraded from version 2.14 to 2.20. + +=item * + +L has been upgraded from version 7.44 to 7.62. + +=item * + +L has been upgraded from version 1.72 to 1.73. + +=item * + +L has been upgraded from version 1.09 to 1.10. + +=item * + +L has been upgraded from version 3.40 to 3.43. + +=item * + +L has been upgraded from version 3.38 to 3.43. + +=item * + +L has been upgraded from version 1.13 to 1.14. + +=item * + +L has been upgraded from version 1.58 to 1.64. + +Added the default enabled C feature. + +A new L +feature has been added, which is enabled by +default but allows turning off L. + +=item * + +L has been upgraded from version 2.34 to 2.35. + +=item * + +L has been upgraded from version 0.56 to 1.00. + +=item * + +L has been upgraded from version 1.37 to 1.39. + +=item * + +L has been upgraded from version 2.16 to 2.18. + +=item * + +L has been upgraded from version 3.78 to 3.80. + +=item * + +L has been upgraded from version 0.2309 to 0.2311. + +=item * + +L has been upgraded from version 1.59 to 1.60. + +=item * + +L has been upgraded from version 1.51 to 1.52. + +=item * + +L has been upgraded from version 1.18 to 1.19. + +New functions and compatibility for newer versions of GDBM. +[L] + +=item * + +L has been upgraded from version 2.51 to 2.52. + +=item * + +L has been upgraded from version 1.12 to 1.13. + +=item * + +L has been upgraded from version 0.23 to 0.25. + +=item * + +L has been upgraded from version 1.20 to 1.21. + +=item * + +L has been upgraded from version 0.44 to 0.45. + +=item * + +L has been upgraded from version 0.0608 to 0.0609. + +=item * + +L has been upgraded from version 1.43 to 1.46. + +IO::Socket now stores error messages in C<$IO::Socket::errstr>, in +addition to in C<$@>. + +The C method now reports the error state for both the input and +output streams for sockets and character devices. Similarly +C now clears the error state for both streams. + +A spurious error reported for regular file handles has been +fixed in L. +[L] + +=item * + +IO-Compress has been upgraded from version 2.093 to 2.102. + +bin/zipdetails version 2.02 + +=item * + +L has been upgraded from version 0.39 to 0.41. + +=item * + +L has been upgraded from version 1.10 to 1.11. + +=item * + +L has been upgraded from version 2.07 to 2.09. + +=item * + +L has been upgraded from version 4.04 to 4.06. + +=item * + +The libnet distribution has been upgraded from version 3.11 to 3.13. + +=item * + +L has been upgraded from version 1.09 to 1.10. + +=item * + +L has been upgraded from version 1.5901 to 1.5902. + +=item * + +L has been upgraded from version 3.15 to 3.16. + +=item * + +L has been upgraded from version 5.20200620 to 5.20210520. + +=item * + +L has been upgraded from version 0.34 to 0.36. + +=item * + +L has been upgraded from version 0.70 to 0.74. + +=item * + +L has been upgraded from version 1.23 to 1.25_001. + +=item * + +L has been upgraded from version 2.72 to 2.74. + +=item * + +L has been upgraded from version 0.67_01 to 0.68. + +=item * + +L has been upgraded from version 1.16 to 1.17. + +=item * + +L has been upgraded from version 1.47 to 1.50. + +=item * + +L has been upgraded from version 1.31 to 1.33. + +=item * + +L has been upgraded from version 5.20200523 to 5.20210411. + +=item * + +L has been upgraded from version 0.28 to 0.30. + +=item * + +L has been upgraded from version 0.016 to 0.017. + +=item * + +L has been upgraded from version 0.30 to 0.31. + +=item * + +L has been upgraded from version 0.08 to 0.09. + +=item * + +L has been upgraded from version 1.73 to 1.74. + +=item * + +L has been upgraded from version 1.25 to 1.27. + +=item * + +L has been upgraded from version 3.40 to 3.42. + +=item * + +L has been upgraded from version 1.69 to 2.01. + +=item * + +L has been upgraded from version 1.94 to 1.97. + +POSIX::signbit() behaviour has been improved. +[L] + +Documentation for C clarifies that the result is always in English. +(Use C for a localized result.) + +=item * + +L has been upgraded from version 0.40 to 0.41. + +(See under L for more information.) + +=item * + +L has been upgraded from version 2.41 to 2.43. + +=item * + +L has been upgraded from version 2.029 to 2.031. + +=item * + +L has been upgraded from version 3.21 to 3.23. + +=item * + +L has been upgraded from version 1.11 to 1.12. + +=item * + +L has been upgraded from version 1.03 to 1.04. + +=item * + +L has been upgraded from version 1.08 to 1.09. + +=item * + +L has been upgraded from version 3.42 to 3.43. + +=item * + +L has been upgraded from version 1.302175 to 1.302183. + +=item * + +L has been upgraded from version 2.03 to 2.04. + +=item * + +L has been upgraded from version 2.25 to 2.26. + +=item * + +L has been upgraded from version 1.61 to 1.62. + +=item * + +L has been upgraded from version 1.39 to 1.40. + +=item * + +L has been upgraded from version 1.9764 to 1.9767. + +=item * + +L has been upgraded from version 1.28 to 1.30. + +=item * + +L has been upgraded from version 1.27 to 1.29. + +=item * + +L has been upgraded from version 1.27 to 1.28. + +=item * + +L has been upgraded from version 1.22 to 1.24. + +=item * + +L has been upgraded from version 0.9924 to 0.9928. + +=item * + +L has been upgraded from version 1.47 to 1.51. + +=item * + +L has been upgraded from version 0.53 to 0.57. + +Fix calling convention for C. + +Added C, +C, and C. + +Removed old code for versions before Windows 2000. + +=item * + +L has been upgraded from version 1.09 to 1.16. + +=item * + +L has been upgraded from version 0.17 to 0.18. + +=back + +=head1 Documentation + +=head2 New Documentation + +=head3 L + +This document is a guide for the authorship and maintenance of the +documentation that ships with Perl. + +=head3 L + +This document describes the goals, scope, system, and rules for Perl's new +governance model. + +Other pod files, most notably L, were amended to reflect +its adoption. + +=head2 Changes to Existing Documentation + +We have attempted to update the documentation to reflect the changes +listed in this document. If you find any we have missed, open an issue +at L. + +Additionally, the following selected changes have been made: + +=over 4 + +=item * + +L, L, L, and L now prefer C +over C. + +=item * + +References to B have been replaced with a more accurate term or +B where appropriate. + +=item * + +B is now the fallback contact for security issues. + +=back + +=head3 L + +=over 4 + +=item * + +Efforts continue in improving the presentation of this document, and to +document more API elements. + +=back + +=head3 L + +=over 4 + +=item * + +The freenode IRC URL has been updated. + +=back + +=head3 L + +=over 4 + +=item * + +Corrected the description of the scalar C<< ${"_<$filename"} >> +variables. + +=back + +=head3 L + +=over 4 + +=item * + +Now documents additional examples of "not imported" warnings. + +=back + +=head3 L + +=over 4 + +=item * + +The Perl FAQ was updated to CPAN version 5.20201107 with minor +improvements. + +=back + +=head3 L + +=over 4 + +=item * + +L and L now explicitly warn +the reader that lexical variables should typically not be redeclared +within the same scope or statement. +[L] + +=item * + +The L entry has been improved and now +also states that the result of the function is always in English. + +=item * + +L documented a length field included in the +packed C parameter to C, but there was no such field. +C contains only the type and the message content. + +=item * + +Better explanation of what happens when C is called with a zero or +negative value. + +=item * + +Simplify the C documentation by removing the Cs from the +examples +[L] + +=back + +=head3 L + +=over 4 + +=item * + +document how to create a remote-tracking branch for every PR + +=item * + +document how to get a PR as a local branch + +=back + +=head3 L + +=over 4 + +=item * + +L now explains in greater detail the need to consult C +when calling C (or variants). A new "How do I pass a Perl string to a C +library?" section in the same document discusses when to use which style of +macro to read an SV's string value. + +=item * + +Corrected C example in perlguts. + +=item * + +A section has been added on the formatted printing of special sizes. + +=back + +=head3 L + +=over 4 + +=item * + +The C<< <> >> and C<<< <<>> >>> operators are commonly referred to as +the diamond and double diamond operators respectively, but that wasn't +mentioned previously in their documentation. + +=item * + +Document range op behavior change. + +=back + +=head3 L + +=over 4 + +=item * + +Incorrect variables used in an example have been fixed. + +=back + +=head3 L =over 4 =item * -L has been upgraded from version 2.174 to 2.174_01. +Document that caller() does not see try{} blocks + +=item * + +A new example shows how a lexical C variable can be declared +during the initialization of a C loop. + +=back + +=head3 L -A number of memory leaks have been fixed. +=over 4 =item * -L has been upgraded from version 1.47 to 1.47_01. +Fix description of what Perl does with unencoded strings + +=back + +=head1 Diagnostics + +The following additions or changes have been made to diagnostic output, +including warnings and fatal error messages. For the complete list of +diagnostic messages, see L. + +=head2 New Diagnostics + +=head3 New Errors + +=over 4 =item * -L has been upgraded from version 5.20200620 to 5.20210123. +L + +This accompanies the new +L feature. =item * -L has been upgraded from version 1.47 to 1.48. +L + +This accompanies the new +L feature. + +=back + +=head3 New Warnings -A warning has been added about evaluating untrusted code with the perl -interpreter. +=over 4 =item * -L has been upgraded from version 2.41 to 2.41_01. +L -A warning has been added about evaluating untrusted code with the perl -interpreter. +Attempts to put wide characters into environment variable keys via C<%ENV> now +provoke this warning. =back -=head1 Documentation +=head2 Changes to Existing Diagnostics -=head2 New Documentation +=over 4 -=head3 L +=item * -Documentation of the newly formed rules of governance for Perl. +L -=head3 L +An error was encountered in handling a user-defined property +(L). These are +programmer written subroutines, hence subject to errors that may +prevent them from compiling or running. -Documentation of how the Perl security team operates and how the team evaluates -new security reports. +=item * -=head2 Changes to Existing Documentation +L -We have attempted to update the documentation to reflect the changes listed in -this document. If you find any we have missed, open an issue at -L. +A user-defined property (L) +can depend on the definitions of other user-defined +properties. If the chain of dependencies leads back to this property, +infinite recursion would occur, were it not for the check that raised +this error. -Additionally, the following selected changes have been made: +=item * -=head3 L +L -=over 4 +The first time a user-defined property +(L) is used, its +definition is looked up and converted into an internal form for more +efficient handling in subsequent uses. There could be a race if two or +more threads tried to do this processing nearly simultaneously. =item * -Document range op behaviour change. +L -=back +You specified to use a property within the C<\p{...}> which was a +syntactically valid user-defined property, but no definition was found +for it -=head1 Diagnostics +=item * -The following additions or changes have been made to diagnostic output, -including warnings and fatal error messages. For the complete list of -diagnostic messages, see L. +L -=head2 Changes to Existing Diagnostics +Subroutine argument-count mismatch errors now include the number of +given and expected arguments. -=over 4 +=item * + +L + +Subroutine argument-count mismatch errors now include the number of +given and expected arguments. =item * -L<\K not permitted in lookahead/lookbehind in regex; marked by <-- HERE in mE%sE|perldiag/"\K not permitted in lookahead/lookbehind in regex; marked by <-- HERE in m/%s/"> +L + +This warning was only issued for positive too-large values when +incrementing, and only for negative ones when decrementing. +It is now issued for both positive or negative too-large values. +[L] -This error was incorrectly produced in some cases involving nested lookarounds. -This has been fixed. +=item * + +L<\K not permitted in lookahead/lookbehind in regex; marked by <-- HERE in mE%sE|perldiag/"\K not permitted in lookahead/lookbehind in regex; marked by <-- HERE in m/%s/"> +This error was incorrectly produced in some cases involving nested +lookarounds. This has been fixed. [L] +=item * + +L + +This warning may now include the array or hash index when the +uninitialized value is the result of an element not found. This will +only happen if the index is a simple non-magical variable. + +=back + +=head1 Utility Changes + +=head2 L (the debugger) + +=over 4 + +=item * New option: C + +This option controls the minimum length a command must be to get stored in +history. Traditionally, this has been fixed at 2. Changes to the debugger +are often perilous, and new bugs should be reported so the debugger can be +debugged. + +=item * Fix to C and C commands + +The C and C commands work again with lexical variables. + =back =head1 Configuration and Compilation @@ -112,8 +899,50 @@ =item * -Newer 64-bit versions of the Intel C/C++ compiler are now recognized and have -the correct flags set. +Prevented incpath to spill into libpth + +=item * + +Use realpath if available. (This might catch more duplicate paths.) + +=item * + +Only include real existing paths. + +=item * + +Filter inc paths out of libpth. + +=item * stadtx hash support has been removed + +stadtx support has been entirely removed. Previously, it could be requested +with C, and was default in 64-bit builds. It has been +replaced with SipHash. SipHash has been more rigorously reviewed than stadtx. + +=item * Configure + +A new probe checks for buggy libc implementations of the C/C +functions. +[L] + +=item * C<-Dusedefaultstrict> + +Perl can now be built with L on by default (using the configuration +option C<-Dusedefaultstrict>. + +These strict defaults do not apply when C is run via C<-e> or C<-E>. + +This setting provides a diagnostic mechanism intended for development +purposes only and is thus undefined by default. + +=item * + +The minimum supported Bison version is now 2.4, and the maximum is 3.7. + +=item * + +Newer 64-bit versions of the Intel C/C++ compiler are now recognised +and have the correct flags set. =item * @@ -129,28 +958,267 @@ =head1 Testing -Tests were added and changed to reflect the other additions and changes in this -release. +Tests were added and changed to reflect the other additions and +changes in this release. Furthermore, these significant changes were +made: + +=over 4 + +=item * + +Split Config-dependent tests in F to F + +=item * + +F was added, providing a test harness for regexp optimization. +[L] + +=item * + +A workaround for CPAN distributions needing dot in C<@INC> has been removed +[L]. +All distributions that previously required the workaround have now been +adapted. + +=item * + +When testing in parallel on many-core platforms, you can now cause the +test suite to finish somewhat earlier, but with less logical ordering of +the tests, by setting + + PERL_TEST_HARNESS_ASAP=1 + +while running the test suite. + +=back =head1 Platform Support -=head2 Platform-Specific Notes +=head2 New Platforms + +=over 4 + +=item 9front + +Allow building Perl on i386 9front systems (a fork of plan9). + +=back + +=head2 Updated Platforms =over 4 +=item Plan9 + +Improve support for Plan9 on i386 platforms. + =item MacOS (Darwin) -The hints file for darwin has been updated to handle future macOS versions -beyond 10. Perl can now be built on macOS Big Sur. +The hints file for darwin has been updated to handle future MacOS versions +beyond 10. [L] + +=back + +=head2 Discontinued Platforms -[L, -L] +=over 4 + +=item Symbian + +Support code relating to Symbian has been removed. Symbian was an +operating system for mobile devices. The port was last updated in July +2009, and the platform itself in October 2012. + +=back + +=head2 Platform-Specific Notes + +=over 4 + +=item DragonFlyBSD + +Tests were updated to workaround DragonFlyBSD bugs in L and L. + +=item Mac OS X + +A number of system libraries no longer exist as actual files on Big Sur, +even though C will pretend they do, so now we fall back to C +if a library file can not be found. +[L] + +=item Windows + +Reading non-ASCII characters from the console when its codepage was set to +65001 (UTF-8) was broken due to a bug in Windows. A workaround for this +problem has been implemented. +[L] + +Building with mingw.org compilers (version 3.4.5 or later) using mingw runtime +versions < 3.22 now works again. This was broken in Perl 5.31.4. + +Building with mingw.org compilers (version 3.4.5 or later) using mingw runtime +versions >= 3.21 now works (for compilers up to version 5.3.0). + +F, and thus support for dmake, has been removed. It is still +possible to build Perl on Windows using nmake (Makefile) and GNU make +(GNUmakefile). +[L] + +perl can now be built with C on MS Windows using +(32-bit and 64-bit) mingw-w64 ports of gcc. +[L] + +The F utility now needs to C. This could +cause failures in parallel builds. + +Windows now supports L and +L, and L is no +longer an alias for L. +[L]. + +Unlike POSIX systems, creating a symbolic link on Windows requires +either elevated privileges or Windows 10 1703 or later with Developer +Mode enabled. + +stat(), including C, and lstat() now uses our own +implementation that populates the device C and inode numbers +C returned rather than always returning zero. The number of +links C field is now always populated. + +L<< C<${^WIN32_SLOPPY_STAT}> |perlvar/${^WIN32_SLOPPY_STAT} >> previously +controlled whether the C field was populated requiring a +separate Windows API call to fetch, since C and the other +information required for C is now retrieved in a single API call. + +The C<-r> and C<-w> operators now return true for the C, +C and C handles. Unfortunately it still won't return +true for duplicates of those handles. +[L]. + +The times returned by stat() and lstat() are no longer incorrect +across Daylight Savings Time adjustments. +[L]. + +C<-x> on a filehandle should now match C<-x> on the corresponding +filename on Vista or later. +[L]. + +C<-e '"'> no longer incorrectly returns true. +[L]. + +The same manifest is now used for Visual C++ and gcc builds. + +Previously, MSVC builds were using the B flag instead of +embedding F, which caused issues such as C +returning the wrong version number on Windows 10. + +=item z/OS + +The locale categories C and C are now recognized. +Perl doesn't do anything with these, except it now allows you to specify +them. They are included in C. + +=back + +=head1 Internal Changes + +=over 4 + +=item * + +Corrected handling of double and long double parameters for perl's +implementation of formatted output for C<-Dusequadmath> builds. + +This applies to C, C, C, C and +their variants. + +Previously in C builds, code like: + + PerlIO_printf(PerlIO_stderr(), "%g", somedouble); + +or + + PerlIO_printf(PerlIO_stderr(), "%Lg", somelongdouble); + +would erroneously throw an exception "panic: quadmath invalid format +...", since the code added for quadmath builds assumed Cs were the +only floating point format passed into these functions. + +This code would also process the standard C long double specifier C +as if it expected an C (C<__float128> for quadmath builds), +resulting in undefined behaviour. + +These functions now correctly accept doubles, long doubles and NVs. + +=item * + +Previously the right operand of bitwise shift operators (shift amount) +was implicitly cast from IV to int, but it might lead wrong results +if IV does not fit in int. + +And also, shifting INT_MIN bits used to yield the shiftee unchanged +(treated as 0-bit shift instead of negative shift). + +=item * + +A set of C functions was added, +to support checking for the existence of keys in the hints hash of a +specific cop without needing to create a mortal copy of said value. + +=item * + +An aid has been added for using the C macros when debugging XS or +C code. The comments in F describe C and +C. which you can C<#define> to do things like save and +restore C, in case the C calls are interfering with that, +or to display timestamps, or which thread it's coming from, or the +location of the call, or whatever. You can make a quick hack to help +you track something down without having to edit individual C +calls. + +=item * + +Make C available outside of core + +=item * + +All C-ish functions now evaluate their arguments exactly once. +In 5.32, plain L> was changed to do that; now the rest +do as well. -=item Minix +=item * + +Unicode is now a first class citizen when considering the pattern /A*B/ where +A and B are arbitrary. The pattern matching code tries to make a tight loop +to match the span of A's. The logic of this was now really updated with +support for UTF-8. + +=item * + +The L module has a new function C, which can return a +hashref of optimization data discovered about a compiled regexp. + +=item * + +The C compilation option has been removed, and +with it the need or the C macro. C remains defined as a +no-op outside C for backwards compatiblity with XS modules. -Build errors on Minix have been fixed. +=item * + +A new savestack type C has been added, which neatens the +previous behaviour of C. On previous versions the types and +values pushed to the save stack would depend on whether the hints included the +C bit, which complicates external code that inspects the +save stack. The new version uses a different savestack type to indicate the +difference. + +=item * -[L] +A new API function L has been added which gives a +clearly named way to find how many elements are in an array. =back @@ -160,11 +1228,111 @@ =item * -Some list assignments involving C on the left-hand side were -over-optimized and produced incorrect results. +Setting C<%ENV> now properly handles upgraded strings in the key. Previously +Perl sent the SV's internal PV directly to the OS; now it will handle keys +as it has handled values since 5.18: attempt to downgrade the string first; +if that fails then warn and use the utf8 form. + +=item * + +Fix a memory leak in regcomp.c +[L] + +=item * pack/unpack format 'D' now works on all systems that could support it + +Previously if C, now it is supported on all platforms that +have long doubles. In particular that means it is now also supported on +quadmath platforms. + +=item * + +Skip trying to constant fold an incomplete op tree +[L] + +Constant folding of chained comparison op trees could fail under certain +conditions, causing perl to crash. As a quick fix, constant folding is +now skipped for such op trees. This also addresses +[L]. + +=item * + +C<%g> formatting broken on Ubuntu-18.04, C +[L] + +Buggy libc implementations of the C and C functions +caused C<(s)printf> to incorrectly truncate C<%g> formatted numbers. +A new Configure probe now checks for this, with the result that the libc +C will be used in place of C and C. + +Tests added as part of this fix also revealed related problems in +some Windows builds. The makefiles for MINGW builds on Windows have +thus been adjusted to use C by default, ensuring +that they also provide correct C<(s)printf> formatting of numbers. + +=item * + +F: croak on C when C is in effect +[L] + +The lexical topic feature experiment was removed in Perl v5.24 and +declaring C became a compile time error. However, it was previously +still possible to make this declaration if C was in effect. + +=item * + +F: Fix assertion failure +[L] + +Fuzzing triggered an assertion failure in the regexp engine when too many +characters were copied into a buffer. + +=item * + +L, L, and +L now properly reset the UTF-8 flag on the +C parameter if it's modified for C or C +operations. + +=item * + +C, C, and C now attempt to downgrade the C +parameter if its value is being used as input to C or +C calls. A failed downgrade will thrown an exception. + +=item * + +In cases where C, C or C would treat the C +parameter as a pointer, an undefined value no longer generates a +warning. In most such calls the pointer isn't used anyway and this +allows you to supply C for a value not used by the underlying +function. + +=item * + +L now downgrades the C parameter, +L now downgrades the C parameter and +L now downgrades the C parameter +to treat them as bytes. Previously they would be left upgraded, +providing a corrupted structure to the underlying function call. + +=item * + +L now properly resets the UTF-8 flag the +C parameter when it is modified. Previously the UTF-8 flag could +be left on, resulting in a possibly corrupt result in C. + +=item * -[L, -L] +Magic is now called correctly for stacked file test operators. +[L] + +=item * + +The C<@ary = split(...)> optimization no longer switches in the target +array as the value stack. +[L] +Also see discussion at +L. =item * @@ -175,63 +1343,85 @@ =item * -Fixed a deadlock that hung the build when Perl is compiled for debugging memory -problems and has PERL_MEM_LOG enabled. +On Win32, C could sometimes have a very large +timeout. [L] + +=item * -[L] +C and hence C are now correctly initialized in C XSUBs. =item * -Fixed a crash in the use of chained comparison operators when run under "no -warnings 'uninitialized'". +Some list assignments involving C on the left-hand side were +over-optimized and produced incorrect results. +[L], +[L] + +=back -[L, -L] +=head1 Known Problems -=item * +None -Exceptions thrown from destructors during global destruction are no longer -swallowed. +=head1 Errata From Previous Releases -[L] +None -=back +=head1 Obituary + +Kent Fredric (KENTNL) passed away in February 2021. A native of New Zealand +and a self-described "huge geek," Kent was the author or maintainer of 178 +CPAN distributions, the Perl maintainer for the Gentoo Linux distribution and +a contributor to the Perl core distribution. He is mourned by his family, +friends and open source software communities worldwide. =head1 Acknowledgements -Perl 5.32.1 represents approximately 7 months of development since Perl 5.32.0 -and contains approximately 7,000 lines of changes across 80 files from 23 -authors. +Perl 5.34.0 represents approximately 11 months of development since Perl +5.32.0 and contains approximately 280,000 lines of changes across 2,100 +files from 78 authors. Excluding auto-generated files, documentation and release tools, there were -approximately 1,300 lines of changes to 23 .pm, .t, .c and .h files. +approximately 150,000 lines of changes to 1,300 .pm, .t, .c and .h files. -Perl continues to flourish into its fourth decade thanks to a vibrant community -of users and developers. The following people are known to have contributed -the improvements that became Perl 5.32.1: - -Adam Hartley, Andy Dougherty, Dagfinn Ilmari Mannsåker, Dan Book, David -Mitchell, Graham Knop, Graham Ollis, Hauke D, H.Merijn Brand, Hugo van der -Sanden, John Lightsey, Karen Etheridge, Karl Williamson, Leon Timmermans, Max -Maischein, Nicolas R., Ricardo Signes, Richard Leach, Sawyer X, Sevan Janiyan, -Steve Hay, Tom Hukins, Tony Cook. - -The list above is almost certainly incomplete as it is automatically generated -from version control history. In particular, it does not include the names of -the (very much appreciated) contributors who reported issues to the Perl bug -tracker. +Perl continues to flourish into its fourth decade thanks to a vibrant +community of users and developers. The following people are known to have +contributed the improvements that became Perl 5.34.0: + +Aaron Crane, Adam Hartley, Andy Dougherty, Ben Cornett, Branislav +Zahradník, brian d foy, Chris 'BinGOs' Williams, Christian Walde +(Mithaldu), Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Book, Daniel +Böhmer, Daniel Laügt, Dan Kogai, David Cantrell, David Mitchell, Dominic +Hamon, E. Choroba, Ed J, Eric Herman, Eric Lindblad, Eugene Alvin Villar, +Felipe Gasper, Giovanni Tataranni, Graham Knop, Graham Ollis, Hauke D, +H.Merijn Brand, Hugo van der Sanden, Ichinose Shogo, Ivan Baidakou, Jae +Bradley, James E Keenan, Jason McIntosh, jkahrman, John Karr, John Lightsey, +Kang-min Liu, Karen Etheridge, Karl Williamson, Keith Thompson, Leon +Timmermans, Marc Reisner, Marcus Holland-Moritz, Max Maischein, Michael G +Schwern, Nicholas Clark, Nicolas R., Paul Evans, Petr Písař, raiph, Renee +Baecker, Ricardo Signes, Richard Leach, Romano, Ryan Voots, Samanta Navarro, +Samuel Thibault, Sawyer X, Scott Baker, Sergey Poznyakoff, Sevan Janiyan, +Shirakata Kentaro, Shlomi Fish, Sisyphus, Sizhe Zhao, Steve Hay, TAKAI +Kousuke, Thibault Duponchelle, Todd Rinaldo, Tomasz Konojacki, Tom Hukins, +Tom Stellard, Tony Cook, vividsnow, Yves Orton, Zakariyya Mughal, +Михаил Козачков. + +The list above is almost certainly incomplete as it is automatically +generated from version control history. In particular, it does not include +the names of the (very much appreciated) contributors who reported issues to +the Perl bug tracker. Many of the changes included in this version originated in the CPAN modules -included in Perl's core. We're grateful to the entire CPAN community for +included in Perl's core. We're grateful to the entire CPAN community for helping Perl to flourish. -For a more complete list of all of Perl's historical contributors, please see -the F file in the Perl source distribution. +For a more complete list of all of Perl's historical contributors, please +see the F file in the Perl source distribution. =head1 Reporting Bugs -If you find what you think is a bug, you might check the perl bug database at -L. There may also be information at +If you find what you think is a bug, you might check the perl bug database +at L. There may also be information at L, the Perl Home Page. If you believe you have an unreported bug, please open an issue at @@ -240,13 +1430,13 @@ If the bug you are reporting has security implications which make it inappropriate to send to a public issue tracker, then see -L for details of how to -report the issue. +L +for details of how to report the issue. =head1 Give Thanks -If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, you -can do so by running the C program: +If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, +you can do so by running the C program: perlthanks diff -Nru perl-5.32.1/pod/perldiag.pod perl-5.34.0/pod/perldiag.pod --- perl-5.32.1/pod/perldiag.pod 2021-01-08 21:20:36.000000000 +0000 +++ perl-5.34.0/pod/perldiag.pod 2021-05-04 06:52:48.000000000 +0000 @@ -563,6 +563,15 @@ compiler saw no other uses of that namespace before that point. Perhaps you need to predeclare a package? +=item Bareword filehandle "%s" not allowed under 'no feature "bareword_filehandles"' + +(F) You attempted to use a bareword filehandle with the +C feature disabled. + +Only the built-in handles C, C, C, C, +C and C can be used with the C +feature disabled. + =item BEGIN failed--compilation aborted (F) An untrapped exception was raised while executing a BEGIN @@ -1675,15 +1684,6 @@ could be defined by a translator installed into C<$^H{charnames}>. See L. -=item charnames alias definitions may not contain trailing white-space; -marked by S<<-- HERE> in %s - -(F) You defined a character name which ended in a space -character. Remove the trailing space(s). Usually these names are -defined in the C<:alias> import argument to C, but they -could be defined by a translator installed into C<$^H{charnames}>. -See L. - =item chdir() on unopened filehandle %s (W unopened) You tried chdir() on a filehandle that was never opened. @@ -2000,12 +2000,12 @@ or a hash or array slice, such as: @foo[$bar, $baz, $xyzzy] - @{$ref->[12]}{"susie", "queue"} + $ref->[12]->@{"susie", "queue"} or a hash key/value or array index/value slice, such as: %foo[$bar, $baz, $xyzzy] - %{$ref->[12]}{"susie", "queue"} + $ref->[12]->%{"susie", "queue"} =item Delimiter for here document is too long @@ -2195,6 +2195,20 @@ an invalid file specification to Perl, or you've found a case the conversion routines don't handle. Drat. +=item Error %s in expansion of %s + +(F) An error was encountered in handling a user-defined property +(L). These are +programmer written subroutines, hence subject to errors that may +prevent them from compiling or running. The calls to these subs are +C'd, and if there is a failure, this message is raised, using the +contents of C<$@> from the failed C. + +Another possibility is that tainted data was encountered somewhere in +the chain of expanding the property. If so, the message wording will +indicate that this is the problem. See L. + =item Eval-group in insecure regular expression (F) Perl detected tainted data when trying to compile a regular @@ -2235,8 +2249,8 @@ =item exec? I'm not *that* kind of operating system -(F) The C function is not implemented on some systems, e.g., Symbian -OS. See L. +(F) The C function is not implemented on some systems, e.g. +Catamount. See L. =item %sExecution of %s aborted due to compilation errors. @@ -2836,6 +2850,16 @@ text. You should check the pattern to ensure that recursive patterns either consume text or fail. +=item Infinite recursion in user-defined property + +(F) A user-defined property (L) can depend on the definitions of other user-defined +properties. If the chain of dependencies leads back to this property, +infinite recursion would occur, were it not for the check that raised +this error. + +Restructure your property definitions to avoid this. + =item Infinite recursion via empty pattern (F) You tried to use the empty pattern inside of a regex code block, @@ -3412,7 +3436,7 @@ $ + < = > ^ ` | ~ -These are probematic. The C standard says that these should be +These are problematic. The C standard says that these should be considered punctuation in the C locale (and the POSIX standard defers to the C standard), and Unicode is generally considered a superset of the C locale. But Unicode has added an extra category, "Symbol", and @@ -3479,9 +3503,12 @@ =item Lost precision when %s %f by 1 -(W imprecision) The value you attempted to increment or decrement by one -is too large for the underlying floating point representation to store -accurately, hence the target of C<++> or C<--> is unchanged. Perl issues this +(W imprecision) You attempted to increment or decrement a value by one, +but the result is too large for the underlying floating point +representation to store accurately. Hence, the target of C<++> or C<--> +is increased or decreased by quite different value than one, such as +zero (I the target is unchanged) or two, due to rounding. +Perl issues this warning because it has already switched from integers to floating point when values are too large for integers, and now even floating point is insufficient. You may wish to switch to using L explicitly. @@ -3834,6 +3861,9 @@ $n *= 2; # modifies the $x, but fails on attempt to } # modify the 2 +L will also produce this message as a warning if you +attempt to open a read-only scalar for writing. + =item Modification of non-creatable array value attempted, %s (F) You tried to make an array value spring into existence, and the @@ -3889,6 +3919,17 @@ (F) You don't have System V message IPC on your system. +=item Multidimensional hash lookup is disabled + +(F) You supplied a list of subscripts to a hash lookup under +C<< no feature "multidimensional"; >>, eg: + + $z = $foo{$x, $y}; + +which by default acts like: + + $z = $foo{join($;, $x, $y)}; + =item Multidimensional syntax %s not supported (W syntax) Multidimensional arrays aren't written like C<$foo[1,2,3]>. @@ -5305,6 +5346,11 @@ (W closed) The filehandle you're reading from got itself closed sometime before now. Check your control flow. +=item readline() on unopened filehandle %s + +(W unopened) The filehandle you're reading from was never opened. Check your +control flow. + =item read() on closed filehandle %s (W closed) You tried to read from a closed filehandle. @@ -6251,6 +6297,20 @@ This use of C in a false conditional was deprecated beginning in Perl 5.10 and became a fatal error in Perl 5.30. +=item Timeout waiting for another thread to define \p{%s} + +(F) The first time a user-defined property +(L) is used, its +definition is looked up and converted into an internal form for more +efficient handling in subsequent uses. There could be a race if two or +more threads tried to do this processing nearly simultaneously. +Instead, a critical section is created around this task, locking out all +but one thread from doing it. This message indicates that the thread +that is doing the conversion is taking an unexpectedly long time. The +timeout exists solely to prevent deadlock; it's long enough that the +system was likely thrashing and about to crash. There is no real remedy but +rebooting. + =item times not implemented (F) Your version of the C library apparently doesn't do times(). I @@ -6288,14 +6348,20 @@ (F) There has to be at least one argument to syscall() to specify the system call to call, silly dilly. -=item Too few arguments for subroutine '%s' +=item Too few arguments for subroutine '%s' (got %d; expected %d) (F) A subroutine using a signature fewer arguments than required by the signature. The caller of the subroutine is presumably at fault. The message attempts to include the name of the called subroutine. If the subroutine has been aliased, the subroutine's original name will be -shown, regardless of what name the caller used. +shown, regardless of what name the caller used. It will also indicate the +number of arguments given and the number expected. + +=item Too few arguments for subroutine '%s' (got %d; expected at least %d) + +Similar to the previous message but for subroutines that accept a variable +number of arguments. =item Too late for "-%s" option @@ -6327,14 +6393,20 @@ (F) The function requires fewer arguments than you specified. -=item Too many arguments for subroutine '%s' +=item Too many arguments for subroutine '%s' (got %d; expected %d) (F) A subroutine using a signature received more arguments than permitted by the signature. The caller of the subroutine is presumably at fault. The message attempts to include the name of the called subroutine. If the subroutine has been aliased, the subroutine's original name will be shown, -regardless of what name the caller used. +regardless of what name the caller used. It will also indicate the number +of arguments given and the number expected. + +=item Too many arguments for subroutine '%s' (got %d; expected at most %d) + +Similar to the previous message but for subroutines that accept a variable +number of arguments. =item Too many nested open parens in regex; marked by <-- HERE in m/%s/ @@ -6381,6 +6453,12 @@ (F) Your machine doesn't implement a file truncation mechanism that Configure knows about. +=item try/catch is experimental + +(S experimental::try) This warning is emitted if you use the C and +C syntax. This syntax is currently experimental and its behaviour may +change in future releases of Perl. + =item Type of arg %d to &CORE::%s must be %s (F) The subroutine in question in the CORE package requires its argument @@ -6812,6 +6890,13 @@ Llist]> documentation of the C<-C> switch for the list of known options. +=item Unknown user-defined property name \p{%s} + +(F) You specified to use a property within the C<\p{...}> which was a +syntactically valid user-defined property, but no definition was found +for it by the time one was required to proceed. Check your spelling. +See L. + =item Unknown verb pattern '%s' in regex; marked by S<<-- HERE> in m/%s/ (F) You either made a typo or have incorrectly put a C<*> quantifier @@ -7513,7 +7598,8 @@ that you apparently thought was imported from another module, because something else of the same name (usually a subroutine) is exported by that module. It usually means you put the wrong funny character on the -front of your variable. +front of your variable. It is also possible you used an "our" variable +whose scope has ended. =item Variable length lookbehind not implemented in regex m/%s/ diff -Nru perl-5.32.1/pod/perldocstyle.pod perl-5.34.0/pod/perldocstyle.pod --- perl-5.32.1/pod/perldocstyle.pod 1970-01-01 00:00:00.000000000 +0000 +++ perl-5.34.0/pod/perldocstyle.pod 2021-02-21 11:01:31.000000000 +0000 @@ -0,0 +1,1118 @@ +=encoding utf8 + +=head1 NAME + +perldocstyle - A style guide for writing Perl's documentation + +=head1 DESCRIPTION + +This document is a guide for the authorship and maintenance of the +documentation that ships with Perl. This includes the following: + +=over + +=item * + +The several dozen manual sections whose filenames begin with "C", +such as C, C, and C. (And, yes, C.) + +=item * + +The documentation for all the modules included with Perl (as listed by +L|perlmodlib>). + +=item * + +The hundreds of individually presented reference sections derived from +the L|perlfunc> file. + +=back + +This guide will hereafter refer to user-manual section files as I, per Unix convention. + +=head2 Purpose of this guide + +This style guide aims to establish standards, procedures, and philosophies +applicable to Perl's core documentation. + +Adherence to these standards will help ensure that any one part of +Perl's manual has a tone and style consistent with that of any other. As +with the rest of the Perl project, the language's documentation +collection is an open-source project authored over a long period of time +by many people. Maintaining consistency across such a wide swath of work +presents a challenge; this guide provides a foundation to help mitigate +this difficulty. + +This will help its readers--especially those new to Perl--to feel +more welcome and engaged with Perl's documentation, and this in turn +will help the Perl project itself grow stronger through having a larger, +more diverse, and more confident population of knowledgeable users. + +=head2 Intended audience + +Anyone interested in contributing to Perl's core documentation should +familiarize themselves with the standards outlined by this guide. + +Programmers documenting their own work apart from the Perl project +itself may also find this guide worthwhile, especially if they wish +their work to extend the tone and style of Perl's own manual. + +=head2 Status of this document + +This guide was initially drafted in late 2020, drawing from the +documentation style guides of several open-source technologies +contemporary with Perl. This has included Python, Raku, Rust, and the +Linux kernel. + +The author intends to see this guide used as starting place from +which to launch a review of Perl's reams of extant documentation, with +the expectation that those conducting this review should grow and modify +this guide as needed to account for the requirements and quirks +particular to Perl's programming manual. + +=head1 FUNDAMENTALS + +=head2 Choice of markup: Pod + +All of Perl's core documentation uses Pod ("Plain Old Documentation"), a +simple markup language, to format its source text. Pod is similar in +spirit to other contemporary lightweight markup technologies, such as +Markdown and reStructuredText, and has a decades-long shared history +with Perl itself. + +For a comprehensive reference to Pod syntax, see L|perlpod>. +For the sake of reading this guide, familiarity with the Pod syntax for +section headers (C<=head2>, et cetera) and for inline text formatting +(Clike thisE>) should suffice. + +Perl programmers also use Pod to document their own scripts, libraries, +and modules. This use of Pod has its own style guide, outlined by +L|perlpodstyle>. + +=head2 Choice of language: American English + +Perl's core documentation is written in English, with a preference for +American spelling of words and expression of phrases. That means "color" +over "colour", "math" versus "maths", "the team has decided" and not +"the team have decided", and so on. + +We name one style of English for the sake of consistency across Perl's +documentation, much as a software project might declare a four-space +indentation standard--even when that doesn't affect how well the code +compiles. Both efforts result in an easier read by avoiding jarring, +mid-document changes in format or style. + +Contributors to Perl's documentation should note that this rule +describes the ultimate, published output of the project, and does not +prescribe the dialect used within community contributions. The +documentation team enthusiastically welcomes any English-language +contributions, and will actively assist in Americanizing spelling and +style when warranted. + +=head3 Other languages and translations + +Community-authored translations of Perl's documentation do exist, +covering a variety of languages. While the Perl project appreciates +these translation efforts and promotes them when applicable, it does not +officially support or maintain any of them. + +That said, keeping Perl's documentation clear, simple, and short has a +welcome side effect of aiding any such translation project. + +(Note that the Chinese, Japanese, and Korean-language README files +included with Perl's source distributions provide an exception to this +choice of language--but these documents fall outside the scope of this +guide.) + +=head2 Choice of encoding: UTF-8 + +Perl's core documentation files are encoded in UTF-8, and can make use +of the full range of characters this encoding allows. + +As such, every core doc file (or the Pod section of every core module) +should commence with an C<=encoding utf8> declaration. + +=head2 Choice of underlying style guide: CMOS + +Perl's documentation uses the L (CMOS), 17th Edition, as +its baseline guide for style and grammar. While the document you are +currently reading endeavors to serve as an adequate stand-alone style guide +for the purposes of documenting Perl, authors should consider CMOS the +fallback authority for any pertinent topics not covered here. + +Because CMOS is not a free resource, access to it is not a prerequisite +for contributing to Perl's documentation; the doc team will help +contributors learn about and apply its guidelines as needed. However, we +do encourage anyone interested in significant doc contributions to +obtain or at least read through CMOS. (Copies are likely available +through most public libraries, and CMOS-derived fundamentals can be +found online as well.) + +=head2 Contributing to Perl's documentation + +Perl, like any programming language, is only as good as its +documentation. Perl depends upon clear, friendly, and thorough +documentation in order to welcome brand-new users, teach and explain the +language's various concepts and components, and serve as a lifelong +reference for experienced Perl programmers. As such, the Perl project +welcomes and values all community efforts to improve the language's +documentation. + +Perl accepts documentation contributions through the same open-source +project pipeline as code contributions. See L|perlhack> for +more information. + +=head1 FORMATTING AND STRUCTURE + +This section details specific Pod syntax and style that all core Perl +documentation should adhere to, in the interest of consistency and +readability. + +=head2 Document structure + +Each individual work of core Perl documentation, whether contained +within a C<.pod> file or in the Pod section of a standard code module, +patterns its structure after a number of long-time Unix man page +conventions. (Hence this guide's use of "man page" to refer to any one +self-contained part of Perl's documentation.) + +Adhering to these conventions helps Pod formatters present a Perl man +page's content in different contexts--whether a terminal, the web, or +even print. Many of the following requirements originate with +L|perlpodstyle>, which derives its recommendations in +turn from these well-established practices. + +=head3 Name + +After its L declaration|/Choice of encoding: UTF-8>, a +Perl man page I present a level-one header named "NAME" (literally), +followed by a paragraph containing the page's name and a very brief +description. + +The first few lines of a notional page named C: + + =encoding utf8 + + =head1 NAME + + perlpodexample - An example of formatting a manual page's title line + +=head3 Description and synopsis + +Most Perl man pages also contain a DESCRIPTION section featuring a +summary of, or introduction to, the document's content and purpose. + +This section should also, one way or another, clearly identify the +audience that the page addresses, especially if it has expectations +about the reader's prior knowledge. For example, a man page that dives +deep into the inner workings of Perl's regular expression engine should +state its assumptions up front--and quickly redirect readers who are +instead looking for a more basic reference or tutorial. + +Reference pages, when appropriate, can precede the DESCRIPTION with a +SYNOPSIS section that lists, within one or more code blocks, some very +brief examples of the referenced feature's use. This section should show +a handful of common-case and best-practice examples, rather than an +exhaustive list of every obscure method or alternate syntax available. + +=head3 Other sections and subsections + +Pages should conclude, when appropriate, with a SEE ALSO section +containing hyperlinks to relevant sections of Perl's manual, other Unix +man pages, or appropriate web pages. Hyperlink each such cross-reference via +C...E>. + +What other sections to include depends entirely upon the topic at hand. +Authors should feel free to include further C<=head1>-level sections, +whether other standard ones listed by C, or ones specific +to the page's topic; in either case, render these top-level headings in +all-capital letters. + +You may then include as many subsections beneath them as needed to meet +the standards of clarity, accessibility, and cross-reference affinity +L. + +=head3 Author and copyright + +In most circumstances, Perl's stand-alone man pages--those contained +within C<.pod> files--do not need to include any copyright or license +information about themselves. Their source Pod files are part of Perl's +own core software repository, and that already covers them under the +same copyright and license terms as Perl itself. You do not need to +include additional "LICENSE" or "COPYRIGHT" sections of your own. + +These man pages may optionally credit their primary author, or include a +list of significant contributors, under "AUTHOR" or "CONTRIBUTORS" +headings. Note that the presence of authors' names does not preclude a +given page from L. + +Note that these guidelines do not apply to the core software modules +that ship with Perl. These have their own standards for authorship and +copyright statements, as found in C. + +=head2 Formatting rules + +=head3 Line length and line wrap + +Each line within a Perl man page's Pod source file should measure 72 +characters or fewer in length. + +Please break paragraphs up into blocks of short lines, rather than +"soft wrapping" paragraphs across hundreds of characters with no line +breaks. + +=head3 Code blocks + +Just like the text around them, all code examples should be as short and +readable as possible, displaying no more complexity than absolutely +necessary to illustrate the concept at hand. + +For the sake of consistency within and across Perl's man pages, all +examples must adhere to the code-layout principles set out by +L|perlstyle>. + +Sample code should deviate from these standards only when necessary: +during a demonstration of how Perl disregards whitespace, for example, +or to temporarily switch to two-column indentation for an unavoidably +verbose illustration. + +You may include comments within example code to further clarify or label +the code's behavior in-line. You may also use comments as placeholder +for code normally present but not relevant to the current topic, like +so: + + while (my $line = <$fh>) { + # + # (Do something interesting with $line here.) + # + } + +Even the simplest code blocks often require the use of example +variables and subroutines, L. + +=head3 Inline code and literals + +Within a paragraph of text, use C...E> when quoting or +referring to any bit of Perl code--even if it is only one character +long. + +For instance, when referring within an explanatory paragraph to Perl's +operator for adding two numbers together, you'd write "C+E>". + +=head3 Function names + +Use C...E> to render all Perl function names in monospace, +whenever they appear in text. + +Unless you need to specifically quote a function call with a list of +arguments, do not follow a function's name in text with a pair of empty +parentheses. That is, when referring in general to Perl's C +function, write it as "C", not "C". + +=head3 Function arguments + +Represent functions' expected arguments in all-caps, with no sigils, and +using C...E> to render them in monospace. These arguments +should have short names making their nature and purpose clear. +Convention specifies a few ones commonly seen throughout Perl's +documentation: + +=over + +=item * + +EXPR + +The "generic" argument: any scalar value, or a Perl expression that +evaluates to one. + +=item * + +ARRAY + +An array, stored in a named variable. + +=item * + +HASH + +A hash, stored in a named variable. + +=item * + +BLOCK + +A curly-braced code block, or a subroutine reference. + +=item * + +LIST + +Any number of values, stored across any number of variables or +expressions, which the function will "flatten" and treat as a single +list. (And because it can contain any number of variables, it must be +the I argument, when present.) + +=back + +When possible, give scalar arguments names that suggest their purpose +among the arguments. See, for example, L's +documentation|perlfunc/substr>, whose +listed arguments include C, C, C, and C. + +=head3 Apostrophes, quotes, and dashes + +In Pod source, use straight quotes, and not "curly quotes": "Like + this", not “like this”. The same goes for apostrophes: Here's a + positive example, and here’s a negative one. + +Render em dashes as two hyphens--like this: + + Render em dashes as two hyphens--like this. + +Leave it up to formatters to reformat and reshape these punctuation +marks as best fits their respective target media. + +=head3 Unix programs and C functions + +When referring to a Unix program or C function with its own man page +(outside of Perl's documentation), include its manual section number in +parentheses. For example: C, or C. + +If mentioning this program for the first time within a man page or +section, make it a cross reference, e.g. Cmalloc(3)E>. + +Do not otherwise style this text. + +=head3 Cross-references and hyperlinks + +Make generous use of Pod's C...E> syntax to create hyperlinks +to other parts of the current man page, or to other documents entirely +-- whether elsewhere on the reader's computer, or somewhere on the +internet, via URL. + +Use C...E> to link to another section of the current man page +when mentioning it, and make use of its page-and-section syntax to link to +the most specific section of a separate page within Perl's +documentation. Generally, the first time you refer to a specific +function, program, or concept within a certain page or section, consider +linking to its full documentation. + +Hyperlinks do not supersede other formatting required by this guide; Pod +allows nested text formats, and you should use this feature as needed. + +Here is an example sentence that mentions Perl's C function, with a +link to its documentation section within the C man page: + + In version 5.10, Perl added support for the + L|perlfunc/say FILEHANDLE LIST> function. + +Note the use of the vertical pipe ("C<|>") to separate how the link will +appear to readers ("CsayE>") from the full page-and-section specifier +that the formatter links to. + +=head3 Tables and diagrams + +Pod does not officially support tables. To best present tabular data, +include the table as both HTML and plain-text representations--the +latter as an indented code block. Use C<=begin> / C<=end> directives to +target these tables at C and C Pod formatters, respectively. +For example: + + =head2 Table of fruits + + =begin text + + Name Shape Color + ===================================== + Apple Round Red + Banana Long Yellow + Pear Pear-shaped Green + + =end text + + =begin html + + + + + + +
NameShapeColor
AppleRoundRed
BananaLongYellow
PearPear-shapedGreen
+ + =end html + +The same holds true for figures and graphical illustrations. Pod does +not natively support inline graphics, but you can mix HTML C<<< >>> tags +with monospaced text-art representations of those images' content. + +Due in part to these limitations, most Perl man pages use neither tables +nor diagrams. Like any other tool in your documentation toolkit, +however, you may consider their inclusion when they would improve an +explanation's clarity without adding to its complexity. + +=head2 Adding comments + +Like any other kind of source code, Pod lets you insert comments visible +only to other people reading the source directly, and ignored by the +formatting programs that transform Pod into various human-friendly +output formats (such as HTML or PDF). + +To comment Pod text, use the C<=for> and C<=begin> / C<=end> Pod +directives, aiming them at a (notional) formatter called "C". A +couple of examples: + + =for comment Using "=for comment" like this is good for short, + single-paragraph comments. + + =begin comment + + If you need to comment out more than one paragraph, use a + =begin/=end block, like this. + + None of the text or markup in this whole example would be visible to + someone reading the documentation through normal means, so it's + great for leaving notes, explanations, or suggestions for your + fellow documentation writers. + + =end comment + +In the tradition of any good open-source project, you should make free +but judicious use of comments to leave in-line "meta-documentation" as +needed for other Perl documentation writers (including your future +self). + +=head2 Perlfunc has special rules + +The L man page|perlfunc>, an exhaustive reference of every +Perl built-in function, has a handful of formatting rules not seen +elsewhere in Perl's documentation. + +Software used during Perl's build process +(L) parses this page according to certain +rules, in order to build separate man pages for each of Perl's +functions, as well as achieve other indexing effects. As such, +contributors to perlfunc must know about and adhere to its particular +rules. + +Most of the perfunc man page comprises a single list, found under the +header L<"Alphabetical Listing of Perl Functions"|perlfunc/Alphabetical +Listing of Perl Functions>. Each function reference is an entry on that +list, made of three parts, in order: + +=over + +=item 1. + +A list of C<=item> lines which each demonstrate, in template format, a +way to call this function. One line should exist for every combination +of arguments that the function accepts (including no arguments at all, +if applicable). + +If modern best practices prefer certain ways to invoke the function +over others, then those ways should lead the list. + +The first item of the list should be immediately followed by one or +more C...E> terms listing index-worthy topics; if nothing +else, then the name of the function, with no arguments. + +=item 2. + +A C<=for> line, directed at C, containing a one-line +description of what the function does. This is written as a phrase, led +with an imperative verb, with neither leading capitalization nor ending +punctuation. Examples include "quote a list of words" and "change a +filename". + +=item 3. + +The function's definition and reference material, including all +explanatory text and code examples. + +=back + +Complex functions that need their text divided into subsections (under +the principles of L<"Apply section-breaks and examples +generously"|/Apply section-breaks and examples generously>) may do so by +using sublists, with C<=item> elements as header text. + +A fictional function "C", which takes a list as an optional +argument, might have an entry in perlfunc shaped like this: + + =item myfunc LIST + X + + =item myfunc + + =for Pod::Functions demonstrate a function's perlfunc section + + [ Main part of function definition goes here, with examples ] + + =over + + =item Legacy uses + + [ Examples of deprecated syntax still worth documenting ] + + =item Security considerations + + [ And so on... ] + + =back + +=head1 TONE AND STYLE + +=head2 Apply one of the four documentation modes + +Aside from "meta" documentation such as C or C, +each of Perl's man pages should conform to one of the four documentation +"modes" suggested by L by Daniele +Procida|https://documentation.divio.com>. These include tutorials, +cookbooks, explainers, and references--terms that we define in further +detail below. + +Each mode of documentation speaks to a different audience--not just +people of different backgrounds and skill levels, but individual readers +whose needs from language documentation can shift depending upon +context. For example, a programmer with plenty of time to learn a new +concept about Perl can ease into a tutorial about it, and later expand +their knowledge further by studying an explainer. Later, that same +programmer, wading knee-deep in live code and needing only to look up +some function's exact syntax, will want to reach for a reference page +instead. + +Perl's documentation must strive to meet these different situational +expectations by limiting each man page to a single mode. This helps +writers ensure they provide readers with the documentation needed or +expected, despite ever-evolving situations. + +=head3 Tutorial + +A tutorial man page focuses on B, ideally by I. It +presents the reader with small, interesting examples that allow them to +follow along themselves using their own Perl interpreter. The tutorial +inspires comprehension by letting its readers immediately experience +(and experiment on) the concept in question. Examples include +C, C, and +C. + +Tutorial man pages must strive for a welcoming and reassuring tone from +their outset; they may very well be the first things that a newcomer to +Perl reads, playing a significant role in whether they choose +to stick around. Even an experienced programmer can benefit from the +sense of courage imparted by a strong tutorial about a more advanced +topic. After completing a tutorial, a reader should feel like they've +been led from zero knowledge of its topic to having an invigorating +spark of basic understanding, excited to learn more and experiment +further. + +Tutorials can certainly use real-world examples when that helps make for +clear, relatable demonstrations, so long as they keep the focus on +teaching--more practical problem-solving should be left to the realm +of cookbooks (as described below). Tutorials also needn't concern +themselves with explanations into why or how things work beneath the +surface, or explorations of alternate syntaxes and solutions; these are +better handled by explainers and reference pages. + +=head3 Cookbook + +A cookbook man page focuses on B. Just like its name suggests, +it presents succinct, step-by-step solutions to a variety of real-world +problems around some topic. A cookbook's code examples serve less to +enlighten and more to provide quick, paste-ready solutions that the +reader can apply immediately to the situation facing them. + +A Perl cookbook demonstrates ways that all the tools and techniques +explained elsewhere can work together in order to achieve practical +results. Any explanation deeper than that belongs in explainers and +reference pages, instead. (Certainly, a cookbook can cross-reference +other man pages in order to satisfy the curiosity of readers who, with +their immediate problems solved, wish to learn more.) + +The most prominent cookbook pages that ship with Perl itself are its +many FAQ pages, in particular C and up, which provide short +solutions to practical questions in question-and-answer style. +C shows another example, containing a bevy of practical code +snippets for a variety of internationally minded text manipulations. + +(An aside: I calls this mode "how-to", but +Perl's history of creative cuisine prefers the more kitchen-ready term +that we employ here.) + +=head3 Reference + +A reference page focuses on B. Austere, uniform, and +succinct, reference pages--often arranged into a whole section of +mutually similar subpages--lend themselves well to "random access" by +a reader who knows precisely what knowledge they need, requiring only +the minimum amount of information before returning to the task at hand. + +Perl's own best example of a reference work is C, the +sprawling man page that details the operation of every function built +into Perl, with each function's documentation presenting the same kinds +of information in the same order as every other. For an example of a +shorter reference on a single topic, look at C. + +Module documentation--including that of all the modules listed in +L|perlmodlib>--also counts as reference. They follow +precepts similar to those laid down by the C man page, such +as opening with an example-laden "SYNOPSIS" section, or featuring a +"METHODS" section that succinctly lists and defines an object-oriented +module's public interface. + +=head3 Explainer + +Explainer pages focus on B. Each explainer dives as deep as +needed into some Perl-relevant topic, taking all the time and space +needed to give the reader a thorough understanding of it. Explainers +mean to impart knowledge through study. They don't assume that the +student has a Perl interpreter fired up and hungry for immediate examples +(as with a tutorial), or specific Perl problems that they need quick +answers for (which cookbooks and reference pages can help with). + +Outside of its reference pages, most of Perl's manual belongs to this +mode. This includes the majority of the man pages whose names start with +"C". A fine example is C, the Perl Syntax page, which +explores the whys and wherefores of Perl's unique syntax in a +wide-ranging discussion laden with many references to the language's +history, culture, and driving philosophies. + +Perl's explainer pages give authors a chance to explore Perl's penchant +for L, illustrating alternate and even +obscure ways to use the language feature under discussion. However, as +the remainder of this guide discusses, the ideal Perl documentation +manages to deliver its message clearly and concisely, and not confuse +mere wordiness for completeness. + +=head3 Further notes on documentation modes + +Keep in mind that the purpose of this categorization is not to dictate +content--a very thorough explainer might contain short reference +sections of its own, for example, or a reference page about a very +complex function might resemble an explainer in places (e.g. +L|perlfunc/open FILEHANDLE,MODE,EXPR>). Rather, it makes sure +that the authors and contributors of any given man page agree on what +sort of audience that page addresses. + +If a new or otherwise uncategorized man page presents itself as +resistant to fitting into only one of the four modes, consider breaking +it up into separate pages. That may mean creating a new "C" +man page, or (in the case of module documentation) making new packages +underneath that module's namespace that serve only to hold additional +documentation. For instance, C's reference documentation +might include a see-also link to C. + +Perl's several man pages about Unicode--comprising a short tutorial, a +thorough explainer, a cookbook, and a FAQ--provide a fine example of +spreading a complicated topic across several man pages with different +and clearly indicated purposes. + +=head2 Assume readers' intelligence, but not their knowledge + +Perl has grown a great deal from its humble beginnings as a tool for +people already well versed in C programming and various Unix utilities. +Today, a person learning Perl might come from any social or +technological background, with a range of possible motivations +stretching far beyond system administration. + +Perl's core documentation must recognize this by making as few +assumptions as possible about the reader's prior knowledge. While you +should assume that readers of Perl's documentation are smart, curious, +and eager to learn, you should not confuse this for pre-existing +knowledge about any other technology, or even programming in +general--especially in tutorial or introductory material. + +=head3 Keep Perl's documentation about Perl + +Outside of pages tasked specifically with exploring Perl's relationship +with other programming languages, the documentation should keep the +focus on Perl. Avoid drawing analogies to other technologies that the +reader may not have familiarity with. + +For example, when documenting one of Perl's built-in functions, write as +if the reader is now learning about that function for the first time, in +any programming language. + +Choosing to instead compare it to an equivalent or underlying C function +will probably not illuminate much understanding in a contemporary +reader. Worse, this can risk leaving readers unfamiliar with C feeling +locked out from fully understanding of the topic--to say nothing of +readers new to computer programming altogether. + +If, however, that function's ties to its C roots can lead to deeper +understanding with practical applications for a Perl programmer, you may +mention that link after its more immediately useful documentation. +Otherwise, omit this information entirely, leaving it for other +documentation or external articles more concerned with examining Perl's +underlying implementation details. + +=head3 Deploy jargon when needed, but define it as well + +Domain-specific jargon has its place, especially within documentation. +However, if a man page makes use of jargon that a typical reader might +not already know, then that page should make an effort to define the +term in question early-on--either explicitly, or via cross reference. + +For example, Perl loves working with filehandles, and as such that word +appears throughout its documentation. A new Perl programmer arriving at +a man page for the first time is quite likely to have no idea what a +"filehandle" is, though. Any Perl man page mentioning filehandles +should, at the very least, hyperlink that term to an explanation +elsewhere in Perl's documentation. If appropriate--for example, in the +lead-in to L function's detailed reference|perlfunc/open +FILEHANDLE,MODE,EXPR>--it can also include a very short in-place +definition of the concept for the reader's convenience. + +=head2 Use meaningful variable and symbol names in examples + +When quickly sketching out examples, English-speaking programmers have a +long tradition of using short nonsense words as placeholders for +variables and other symbols--such as the venerable C, C, and +C. Example code found in a programming language's official, +permanent documentation, however, can and should make an effort to +provide a little more clarity through specificity. + +Whenever possible, code examples should give variables, classes, and +other programmer-defined symbols names that clearly demonstrate their +function and their relationship to one another. For example, if an +example requires that one class show an "is-a" relationship with +another, consider naming them something like C and C, rather +than C and C. Similarly, sample code creating an instance of +that class would do better to name it C<$apple>, rather than C<$baz>. + +Even the simplest examples benefit from clear language using concrete +words. Prefer a construct like C over +C. + +=head2 Write in English, but not just for English-speakers + +While this style guide does specify American English as the +documentation's language for the sake of internal consistency, authors +should avoid cultural or idiomatic references available only to +English-speaking Americans (or any other specific culture or society). +As much as possible, the language employed by Perl's core documentation +should strive towards cultural universality, if not neutrality. Regional +turns of phrase, examples drawing on popular-culture knowledge, and +other rhetorical techniques of that nature should appear sparingly, if +at all. + +Authors should feel free to let more freewheeling language flourish in +"second-order" documentation about Perl, like books, blog entries, and +magazine articles, published elsewhere and with a narrower readership in +mind. But Perl's own docs should use language as accessible and +welcoming to as wide an audience as possible. + +=head2 Omit placeholder text or commentary + +Placeholder text does not belong in the documentation that ships with +Perl. No section header should be followed by text reading only "Watch +this space", "To be included later", or the like. While Perl's source +files may shift and alter as much as any other actively maintained +technology, each released iteration of its technology should feel +complete and self-contained, with no such future promises or other loose +ends visible. + +Take advantage of Perl's regular release cycle. Instead of cluttering +the docs with flags promising more information later--the presence of +which do not help readers at all today--the documentation's +maintenance team should treat any known documentation absences as an +issue to address like any other in the Perl project. Let Perl's +contributors, testers, and release engineers address that need, and +resist the temptation to insert apologies, which have all the utility in +documentation as undeleted debug messages do in production code. + +=head2 Apply section-breaks and examples generously + +No matter how accessible their tone, the sight of monolithic blocks of +text in technical documentation can present a will-weakening challenge +for the reader. Authors can improve this situation through breaking long +passages up into subsections with short, meaningful headers. + +Since every section-header in Pod also acts as a potential end-point for +a cross-reference (made via Pod's C...E> syntax), putting +plenty of subsections in your documentation lets other man pages more +precisely link to a particular topic. This creates hyperlinks directly +to the most appropriate section rather than to the whole page in +general, and helps create a more cohesive sense of a rich, consistent, +and interrelated manual for readers. + +Among the four documentation modes, sections belong more naturally in +tutorials and explainers. The step-by-step instructions of cookbooks, or +the austere definitions of reference pages, usually have no room for +them. But authors can always make exceptions for unusually complex +concepts that require further breakdown for clarity's sake. + +Example code, on the other hand, can be a welcome addition to any mode +of documentation. Code blocks help break up a man page visually, +reassuring the reader that no matter how deep the textual explanation +gets, they are never far from another practical example showing how it +all comes together using a small, easy-to-read snippet of tested Perl +code. + +=head2 Lead with common cases and best practices + +Perl famously gives programmers more than one way to do things. Like any +other long-lived programming language, Perl has also built up a large, +community-held notion of best practices, blessing some ways to do things +as better than others, usually for the sake of more maintainable code. + +=head3 Show the better ways first + +Whenever it needs to show the rules for a technique which Perl provides +many avenues for, the documentation should always lead with best +practices. And when discussing some part of the Perl toolkit with many +applications, the docs should begin with a demonstration of its +application to the most common cases. + +The C function, for example, has myriad potential uses within Perl +programs, but I programmers--and especially those new +to Perl--turn to this reference because they simply wish to open a +file for reading or writing. For this reason, C's documentation +begins there, and only descends into the function's more obscure uses +after thoroughly documenting and demonstrating how it works in the +common case. Furthermore, while engaging in this demonstration, the +C documentation does not burden the reader right away with detailed +explanations about calling C via any route other than the +best-practice, three-argument style. + +=head3 Show the lesser ways when needed + +Sometimes, thoroughness demands documentation of deprecated techniques. +For example, a certain Perl function might have an alternate syntax now +considered outmoded and no longer best-practice, but which a maintainer +of a legacy project might quite reasonably encounter when exploring old +code. In this case, these features deserve documentation, but couched in +clarity that modern Perl avoids such structures, and does not recommend +their use in new projects. + +Another way to look at this philosophy (and one L on +Python's documentation team) involves writing while sympathizing with a +programmer new to Perl, who may feel uncertain about learning a complex +concept. By leading that concept's main documentation with clear, +positive examples, we can immediately give these readers a simple and +true picture of how it works in Perl, and boost their own confidence to +start making use of this new knowledge. Certainly we should include +alternate routes and admonitions as reasonably required, but we needn't +emphasize them. Trust the reader to understand the basics quickly, and +to keep reading for a deeper understanding if they feel so driven. + +=head2 Document Perl's present + +Perl's documentation should stay focused on Perl's present behavior, +with a nod to future directions. + +=head3 Recount the past only when necessary + +=for comment +The principles of this section caused a lot of lively discussion and +debate among p5p when first proposed in October 2020. I am keeping the +recommendations nonspecific, and expect this section to receive a lot of +further refinement as we start to apply it to core docs. + +When some Perl feature changes its behavior, documentation about +that feature should change too, and just as definitively. The docs have +no obligation to keep descriptions of past behavior hanging around, even if +attaching clauses like "Prior to version 5.10, [...]". + +Since Perl's core documentation is part of Perl's source distribution, +it enjoys the same benefits of versioning and version-control as the +source code of Perl itself. Take advantage of this, and update the text +boldly when needed. Perl's history remains safe, even when you delete or +replace outdated information from the current version's docs. + +Perl's docs can acknowledge or discuss former behavior when warranted, +including notes that some feature appeared in the language as of some +specific version number. Authors should consider applying principles +similar to those for deprecated techniques, L: make the information present, but not +prominent. + +Otherwise, keep the past in the past. A manual uncluttered with +outdated instruction stays more succinct and relevant. + +=head3 Describe the uncertain future with care + +Perl features marked as "experimental"--those that generate warnings +when used in code not invoking the L|experimental> +pragma--deserve documentation, but only in certain contexts, and even +then with caveats. These features represent possible new directions for +Perl, but they have unstable interfaces and uncertain future presence. + +The documentation should take both implications of "experimental" +literally. It should not discourage these features' use by programmers +who wish to try out new features in projects that can risk their +inherent instability; this experimentation can help Perl grow and +improve. By the same token, the docs should downplay these features' use +in just about every other context. + +Introductory or overview material should omit coverage of experimental +features altogether. + +More thorough reference materials or explanatory articles can include +experimental features, but needs to clearly mark them as such, and not +treat them with the same prominence as Perl's stable features. Using +unstable features seldom coincides with best practices, and +documentation that L should reflect this. + +=head2 The documentation speaks with one voice + +Even though it comes from many hands and minds, criss-crossing through +the many years of Perl's lifetime, the language's documentation should +speak with a single, consistent voice. With few exceptions, the docs +should avoid explicit first-person-singular statements, or similar +self-reference to any individual's contributor's philosophies or +experiences. + +Perl did begin life as a deeply personal expression by a single +individual, and this famously carried through the first revisions of its +documentation as well. Today, Perl's community understands that the +language's continued development and support comes from many people +working in concert, rather than any one person's vision or effort. Its +documentation should not pretend otherwise. + +The documentation should, however, carry forward the best tradition that +Larry Wall set forth in the language's earliest days: Write both +economically and with a humble, subtle wit, resulting in a technical +manual that mixes concision with a friendly approachability. It avoids +the dryness that one might expect from technical documentation, while +not leaning so hard into overt comedy as to distract and confuse from +the nonetheless-technical topics at hand. + +Like the best written works, Perl's documentation has a soul. Get +familiar with it as a reader to internalize its voice, and then find +your own way to express it in your own contributions. Writing clearly, +succinctly, and with knowledge of your audience's expectations will get +you most of the way there, in the meantime. + +Every line in the docs--whether English sentence or Perl +statement--should serve the purpose of bringing understanding to the +reader. Should a sentence exist mainly to make a wry joke that doesn't +further the reader's knowledge of Perl, set it aside, and consider +recasting it into a personal blog post or other article instead. + +Write with a light heart, and a miserly hand. + +=head1 INDEX OF PREFERRED TERMS + +L, this guide +"inherits" all the preferred terms listed in the Chicago Manual of +Style, 17th edition, and adds the following terms of particular interest +to Perl documentation. + +=over + +=item built-in function + +Not "builtin". + +=item Darwin + +See L. + +=item macOS + +Use this term for Apple's operating system instead of "Mac OS X" or +variants thereof. + +This term is also preferable to "Darwin", unless one needs to refer +to macOS's Unix layer specifically. + +=item man page + +One unit of Unix-style documentation. Not "manpage". Preferable to "manual page". + +=item Perl; perl + +The name of the programming language is Perl, with a leading capital +"P", and the remainder in lowercase. (Never "PERL".) + +The interpreter program that reads and executes Perl code is named +"C", in lowercase and in monospace (as with any other command +name). + +Generally, unless you are specifically writing about the +command-line C program (as, for example, L|perlrun> +does), use "Perl" instead. + +=item Perl 5 + +Documentation need not follow Perl's name with a "5", or any other +number, except during discussions of Perl's history, future plans, +or explicit comparisons between major Perl versions. + +Before 2019, specifying "Perl 5" was sometimes needed to distinguish +the language from Perl 6. With the latter's renaming to "Raku", this +practice became unnecessary. + +=item Perl 6 + +See L. + +=item Perl 5 Porters, the; porters, the; p5p + +The full name of the team responsible for Perl's ongoing maintenance +and development is "the Perl 5 Porters", and this sobriquet should +be spelled out in the first mention within any one document. It may +thereafter call the team "the porters" or "p5p". + +Not "Perl5 Porters". + +=item program + +The most general descriptor for a stand-alone work made out of +executable Perl code. Synonymous with, and preferable to, "script". + +=item Raku + +Perl's "sister language", whose homepage is L. + +Previously known as "Perl 6". In 2019, its design team renamed the +language to better reflect its identity as a project independent from +Perl. As such, Perl's documentation should always refer to this language +as "Raku" and not "Perl 6". + +=item script + +See L. + +=item semicolon + +Perl code's frequently overlooked punctuation mark. Not "semi-colon". + +=item Unix + +Not "UNIX", "*nix", or "Un*x". Applicable to both the original operating +system from the 1970s as well as all its conceptual descendants. You may +simply write "Unix" and not "a Unix-like operating system" when +referring to a Unix-like operating system. + +=back + +=head1 SEE ALSO + +=over + +=item * + +L + +=item * + +L + +=back + +=head1 AUTHOR + +This guide was initially drafted by Jason McIntosh +(jmac@jmac.org), under a grant from The Perl Foundation. + +=for comment Additional contributors can get listed here (and this +comment deleted), when there are some. diff -Nru perl-5.32.1/pod/perldsc.pod perl-5.34.0/pod/perldsc.pod --- perl-5.32.1/pod/perldsc.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perldsc.pod 2020-10-04 22:17:13.000000000 +0000 @@ -183,31 +183,30 @@ of what's in @array at the time of the assignment. This is what you want. -Note that this will produce something similar, but it's -much harder to read: +Note that this will produce something similar: # Either without strict or having an outer-scope my @array; # declaration. for my $i (1..10) { @array = 0 .. $i; - @{$AoA[$i]} = @array; + $AoA[$i]->@* = @array; } Is it the same? Well, maybe so--and maybe not. The subtle difference is that when you assign something in square brackets, you know for sure it's always a brand new reference with a new I of the data. -Something else could be going on in this new case with the C<@{$AoA[$i]}> -dereference on the left-hand-side of the assignment. It all depends on -whether C<$AoA[$i]> had been undefined to start with, or whether it -already contained a reference. If you had already populated @AoA with -references, as in +Something else could be going on in this new case with the +C<< $AoA[$i]->@* >> dereference on the left-hand-side of the assignment. +It all depends on whether C<$AoA[$i]> had been undefined to start with, +or whether it already contained a reference. If you had already +populated @AoA with references, as in $AoA[3] = \@another_array; Then the assignment with the indirection on the left-hand-side would use the existing reference that was already there: - @{$AoA[3]} = @array; + $AoA[3]->@* = @array; Of course, this I have the "interesting" effect of clobbering @another_array. (Have you ever noticed how when a programmer says @@ -241,12 +240,24 @@ relying upon lexical (or dynamic) scoping and hidden reference-counting to do the right thing behind the scenes. +Note also that there exists another way to write a dereference! These +two lines are equivalent: + + $AoA[$i]->@* = @array; + @{ $AoA[$i] } = @array; + +The first form, called I is generally easier to +read, because the expression can be read from left to right, and there +are no enclosing braces to balance. On the other hand, it is also +newer. It was added to the language in 2014, so you will often +encounter the other form, I, in older code. + In summary: $AoA[$i] = [ @array ]; # usually best $AoA[$i] = \@array; # perilous; just how my() was that array? - @{ $AoA[$i] } = @array; # way too tricky for most programmers - + $AoA[$i]->@* = @array; # way too tricky for most programmers + @{ $AoA[$i] } = @array; # just as tricky, and also harder to read =head1 CAVEAT ON PRECEDENCE X X @@ -269,17 +280,16 @@ The seemingly equivalent construct in Perl, C<$$aref[$i]> first does the deref of $aref, making it take $aref as a reference to an array, and then dereference that, and finally tell you the I value -of the array pointed to by $AoA. If you wanted the C notion, you'd have to -write C<${$AoA[$i]}> to force the C<$AoA[$i]> to get evaluated first -before the leading C<$> dereferencer. +of the array pointed to by $AoA. If you wanted the C notion, you could +write C<< $AoA[$i]->$* >> to explicitly dereference the I item, +reading left to right. =head1 WHY YOU SHOULD ALWAYS C If this is starting to sound scarier than it's worth, relax. Perl has some features to help you avoid its most common pitfalls. The best -way to avoid getting confused is to start every program like this: +way to avoid getting confused is to start every program with: - #!/usr/bin/perl -w use strict; This way, you'll be forced to declare all your variables with my() and @@ -330,9 +340,8 @@ =head1 CODE EXAMPLES -Presented with little comment (these will get their own manpages someday) -here are short code examples illustrating access of various -types of data structures. +Presented with little comment here are short code examples illustrating +access of various types of data structures. =head1 ARRAYS OF ARRAYS X X @@ -364,7 +373,7 @@ } # add to an existing row - push @{ $AoA[0] }, "wilma", "betty"; + push $AoA[0]->@*, "wilma", "betty"; =head2 Access and Printing of an ARRAY OF ARRAYS @@ -381,13 +390,13 @@ # print the whole thing with indices for $i ( 0 .. $#AoA ) { - print "\t [ @{$AoA[$i]} ],\n"; + print "\t [ $AoA[$i]->@* ],\n"; } # print the whole thing one at a time for $i ( 0 .. $#AoA ) { - for $j ( 0 .. $#{ $AoA[$i] } ) { - print "elt $i $j is $AoA[$i][$j]\n"; + for $j ( 0 .. $AoA[$i]->$#* ) { + print "elem at ($i, $j) is $AoA[$i][$j]\n"; } } @@ -431,7 +440,7 @@ } # append new members to an existing family - push @{ $HoA{"flintstones"} }, "wilma", "betty"; + push $HoA{flintstones}->@*, "wilma", "betty"; =head2 Access and Printing of a HASH OF ARRAYS @@ -443,31 +452,31 @@ # print the whole thing foreach $family ( keys %HoA ) { - print "$family: @{ $HoA{$family} }\n" + print "$family: $HoA{$family}->@* \n" } # print the whole thing with indices foreach $family ( keys %HoA ) { print "family: "; - foreach $i ( 0 .. $#{ $HoA{$family} } ) { + foreach $i ( 0 .. $HoA{$family}->$#* ) { print " $i = $HoA{$family}[$i]"; } print "\n"; } # print the whole thing sorted by number of members - foreach $family ( sort { @{$HoA{$b}} <=> @{$HoA{$a}} } keys %HoA ) { - print "$family: @{ $HoA{$family} }\n" + foreach $family ( sort { $HoA{$b}->@* <=> $HoA{$a}->@* } keys %HoA ) { + print "$family: $HoA{$family}->@* \n" } # print the whole thing sorted by number of members and name foreach $family ( sort { - @{$HoA{$b}} <=> @{$HoA{$a}} - || - $a cmp $b + $HoA{$b}->@* <=> $HoA{$a}->@* + || + $a cmp $b } keys %HoA ) { - print "$family: ", join(", ", sort @{ $HoA{$family} }), "\n"; + print "$family: ", join(", ", sort $HoA{$family}->@* ), "\n"; } =head1 ARRAYS OF HASHES @@ -548,7 +557,7 @@ # print the whole thing with indices for $i ( 0 .. $#AoH ) { print "$i is { "; - for $role ( keys %{ $AoH[$i] } ) { + for $role ( keys $AoH[$i]->%* ) { print "$role=$AoH[$i]{$role} "; } print "}\n"; @@ -556,8 +565,8 @@ # print the whole thing one at a time for $i ( 0 .. $#AoH ) { - for $role ( keys %{ $AoH[$i] } ) { - print "elt $i $role is $AoH[$i]{$role}\n"; + for $role ( keys $AoH[$i]->%* ) { + print "elem at ($i, $role) is $AoH[$i]{$role}\n"; } } @@ -640,7 +649,7 @@ # print the whole thing foreach $family ( keys %HoH ) { print "$family: { "; - for $role ( keys %{ $HoH{$family} } ) { + for $role ( keys $HoH{$family}->%* ) { print "$role=$HoH{$family}{$role} "; } print "}\n"; @@ -649,7 +658,7 @@ # print the whole thing somewhat sorted foreach $family ( sort keys %HoH ) { print "$family: { "; - for $role ( sort keys %{ $HoH{$family} } ) { + for $role ( sort keys $HoH{$family}->%* ) { print "$role=$HoH{$family}{$role} "; } print "}\n"; @@ -657,11 +666,9 @@ # print the whole thing sorted by number of members - foreach $family ( sort { keys %{$HoH{$b}} <=> keys %{$HoH{$a}} } - keys %HoH ) - { + foreach $family ( sort { $HoH{$b}->%* <=> $HoH{$a}->%* } keys %HoH ) { print "$family: { "; - for $role ( sort keys %{ $HoH{$family} } ) { + for $role ( sort keys $HoH{$family}->%* ) { print "$role=$HoH{$family}{$role} "; } print "}\n"; @@ -672,13 +679,11 @@ for ( qw(lead wife son daughter pal pet) ) { $rank{$_} = ++$i } # now print the whole thing sorted by number of members - foreach $family ( sort { keys %{ $HoH{$b} } <=> keys %{ $HoH{$a} } } - keys %HoH ) - { + foreach $family ( sort { $HoH{$b}->%* <=> $HoH{$a}->%* } keys %HoH ) { print "$family: { "; # and print these according to rank order for $role ( sort { $rank{$a} <=> $rank{$b} } - keys %{ $HoH{$family} } ) + keys $HoH{$family}->%* ) { print "$role=$HoH{$family}{$role} "; } @@ -706,10 +711,10 @@ print $rec->{TEXT}; print $rec->{SEQUENCE}[0]; - $last = pop @ { $rec->{SEQUENCE} }; + $last = pop $rec->{SEQUENCE}->@*; print $rec->{LOOKUP}{"key"}; - ($first_k, $first_v) = each %{ $rec->{LOOKUP} }; + ($first_k, $first_v) = each $rec->{LOOKUP}->%*; $answer = $rec->{THATCODE}->($arg); $answer = $rec->{THISCODE}->($arg1, $arg2); @@ -790,7 +795,7 @@ foreach $family (keys %TV) { $rec = $TV{$family}; # temp pointer @kids = (); - for $person ( @{ $rec->{members} } ) { + for $person ( $rec->{members}->@* ) { if ($person->{role} =~ /kid|son|daughter/) { push @kids, $person; } @@ -814,14 +819,14 @@ # print the whole thing foreach $family ( keys %TV ) { print "the $family"; - print " is on during @{ $TV{$family}{nights} }\n"; + print " is on during $TV{$family}{nights}->@*\n"; print "its members are:\n"; - for $who ( @{ $TV{$family}{members} } ) { + for $who ( $TV{$family}{members}->@* ) { print " $who->{name} ($who->{role}), age $who->{age}\n"; } print "it turns out that $TV{$family}{lead} has "; - print scalar ( @{ $TV{$family}{kids} } ), " kids named "; - print join (", ", map { $_->{name} } @{ $TV{$family}{kids} } ); + print scalar ( $TV{$family}{kids}->@* ), " kids named "; + print join (", ", map { $_->{name} } $TV{$family}{kids}->@* ); print "\n"; } diff -Nru perl-5.32.1/pod/perlexperiment.pod perl-5.34.0/pod/perlexperiment.pod --- perl-5.32.1/pod/perlexperiment.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlexperiment.pod 2021-05-04 06:52:48.000000000 +0000 @@ -25,30 +25,30 @@ Using this feature triggers warnings in the category C. -The ticket for this feature is +The ticket for this experiment is L<[perl #13173]|https://github.com/Perl/perl5/issues/13173>. =item Pluggable keywords -The ticket for this feature is -L<[perl #13199]|https://github.com/Perl/perl5/issues/13199>. +Introduced in Perl 5.11.2 See L for the mechanism. -Introduced in Perl 5.11.2 +The ticket for this experiment is +L<[perl #13199]|https://github.com/Perl/perl5/issues/13199>. =item Regular Expression Set Operations Introduced in Perl 5.18 -The ticket for this feature is +Using this feature triggers warnings in the category +C. + +The ticket for this experiment is L<[perl #13197]|https://github.com/Perl/perl5/issues/13197>. See also: L -Using this feature triggers warnings in the category -C. - =item Subroutine signatures Introduced in Perl 5.20.0 @@ -56,7 +56,7 @@ Using this feature triggers warnings in the category C. -The ticket for this feature is +The ticket for this experiment is L<[perl #13681]|https://github.com/Perl/perl5/issues/13681>. =item Aliasing via reference @@ -66,7 +66,7 @@ Using this feature triggers warnings in the category C. -The ticket for this feature is +The ticket for this experiment is L<[perl #14150]|https://github.com/Perl/perl5/issues/14150>. See also: L @@ -78,7 +78,7 @@ Using this feature triggers warnings in the category C. -The ticket for this feature is +The ticket for this experiment is L<[perl #14428]|https://github.com/Perl/perl5/issues/14428>. See also: L @@ -90,11 +90,17 @@ Using this feature triggers warnings in the category C. +The ticket for this experiment is +L<[perl #18755]|https://github.com/Perl/perl5/issues/18755> + See L =item The <:win32> IO pseudolayer -The ticket for this feature is +Using this feature triggers warnings in the category +C. + +The ticket for this experiment is L<[perl #13198]|https://github.com/Perl/perl5/issues/13198>. See also L @@ -106,27 +112,76 @@ Using this feature triggers warnings in the category C. -The ticket for this feature is +The ticket for this experiment is L<[perl #15458]|https://github.com/Perl/perl5/issues/15458>. See also: L =item There is an C target in the Makefile. -The ticket for this feature is +The ticket for this experiment is L<[perl #12726]|https://github.com/Perl/perl5/issues/12726>. =item (Limited) Variable-length look-behind -Introduced in Perl 5.30.0. Variability of up to 255 characters is -handled. +Introduced in Perl 5.30.0. + +Variability of up to 255 characters is handled. Using this feature triggers warnings in the category C. +The ticket for this experiment is +L<[perl #18756]|https://github.com/Perl/perl5/issues/18756>. + See also: L)> and L)> +=item Unicode private use character hooks + +Introduced in Perl 5.30.0. + +This feature is part of an interface intended for internal and experimental +use by the perl5 developers. You are unlikely to encounter it in the wild. + +Using this feature triggers warnings in the category +C. + +The ticket for this experiment is +L<[perl #18758]|https://github.com/Perl/perl5/issues/18758>. + +=item Unicode property wildcards + +Introduced in Perl 5.30.0. + +This feature allows regular expression matching against Unicode character +properties to be expressed more concisely. + +Using this feature triggers warnings in the category +C. + +The ticket for this experiment is +L<[perl #18759]|https://github.com/Perl/perl5/issues/18759>. + +=item isa infix operator + +Introduced in Perl 5.32.0. + +Using this feature triggers warnings in the category +C. + +The ticket for this experiment is +L<[perl #18754]|https://github.com/Perl/perl5/issues/18754> + +=item try/catch control structure + +Introduced in Perl 5.34.0. + +Using this feature triggers warnings in the category C. + +The ticket for this experiment is +L<[perl #18760]|https://github.com/Perl/perl5/issues/18760> + =back =head2 Accepted features diff -Nru perl-5.32.1/pod/perlfilter.pod perl-5.34.0/pod/perlfilter.pod --- perl-5.32.1/pod/perlfilter.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlfilter.pod 2020-11-18 22:09:15.000000000 +0000 @@ -570,7 +570,7 @@ you must use C or C for such patterns. Also, the presence of regexes specified with raw C delimiters may cause mysterious errors. The workaround is to use C instead. See -L +L. Currently the content of the C<__DATA__> block is not filtered. diff -Nru perl-5.32.1/pod/perlfunc.pod perl-5.34.0/pod/perlfunc.pod --- perl-5.32.1/pod/perlfunc.pod 2020-12-18 10:04:36.000000000 +0000 +++ perl-5.34.0/pod/perlfunc.pod 2021-05-04 06:52:48.000000000 +0000 @@ -989,6 +989,11 @@ modify the values of this hash, as they are the actual values stored in the optree. +Note that the only types of call frames that are visible are subroutine +calls and C. Other forms of context, such as C or C +loops or C blocks are not considered interesting to C, as they +do not alter the behaviour of the C expression. + Furthermore, when called from within the DB package in list context, and with an argument, caller returns more detailed information: it sets the list variable C<@DB::args> to be the @@ -1675,10 +1680,10 @@ final operation is an element or slice of an aggregate: delete $ref->[$x][$y]{$key}; - delete @{$ref->[$x][$y]}{$key1, $key2, @morekeys}; + delete $ref->[$x][$y]->@{$key1, $key2, @morekeys}; delete $ref->[$x][$y][$index]; - delete @{$ref->[$x][$y]}[$index1, $index2, @moreindices]; + delete $ref->[$x][$y]->@[$index1, $index2, @moreindices]; =item die LIST X X X X X<$@> X @@ -3419,7 +3424,7 @@ =for Pod::Functions convert UNIX time into record or string using Greenwich time -Works just like L|/localtime EXPR> but the returned values +Works just like L|/localtime EXPR>, but the returned values are localized for the standard Greenwich time zone. Note: When called in list context, $isdst, the last value @@ -3585,6 +3590,20 @@ If the substring is not found, L|/index STR,SUBSTR,POSITION> returns -1. +Find characters or strings: + + index("Perl is great", "P"); # Returns 0 + index("Perl is great", "g"); # Returns 8 + index("Perl is great", "great"); # Also returns 8 + +Attempting to find something not there: + + index("Perl is great", "Z"); # Returns -1 (not found) + +Using an offset to find the I occurrence: + + index("Perl is great", "e", 5); # Returns 10 + =item int EXPR X X X X X @@ -4041,8 +4060,8 @@ Wednesday. C<$yday> is the day of the year, in the range C<0..364> (or C<0..365> in leap years.) -C<$isdst> is true if the specified time occurs during Daylight Saving -Time, false otherwise. +C<$isdst> is true if the specified time occurs when Daylight Saving +Time is in effect, false otherwise. If EXPR is omitted, L|/localtime EXPR> uses the current time (as returned by L|/time>). @@ -4050,27 +4069,21 @@ In scalar context, L|/localtime EXPR> returns the L value: - my $now_string = localtime; # e.g., "Thu Oct 13 04:54:34 1994" + my $now_string = localtime; # e.g., "Thu Oct 13 04:54:34 1994" -The format of this scalar value is B locale-dependent but built -into Perl. For GMT instead of local time use the -L|/gmtime EXPR> builtin. See also the -L|Time::Local> module (for converting seconds, minutes, -hours, and such back to the integer value returned by L|/time>), -and the L module's L|POSIX/C> and -L|POSIX/C> functions. - -To get somewhat similar but locale-dependent date strings, set up your -locale environment variables appropriately (please see L) and -try for example: - - use POSIX qw(strftime); - my $now_string = strftime "%a %b %e %H:%M:%S %Y", localtime; - # or for GMT formatted appropriately for your locale: - my $now_string = strftime "%a %b %e %H:%M:%S %Y", gmtime; +This scalar value is always in English, and is B locale-dependent. +To get similar but locale-dependent date strings, try for example: -Note that C<%a> and C<%b>, the short forms of the day of the week -and the month of the year, may not necessarily be three characters wide. + use POSIX qw(strftime); + my $now_string = strftime "%a %b %e %H:%M:%S %Y", localtime; + # or for GMT formatted appropriately for your locale: + my $now_string = strftime "%a %b %e %H:%M:%S %Y", gmtime; + +C$now_string> will be formatted according to the current LC_TIME locale +the program or thread is running in. See L for how to set +up and change that locale. Note that C<%a> and C<%b>, the short forms +of the day of the week and the month of the year, may not necessarily be +three characters wide. The L and L modules provide a convenient, by-name access mechanism to the L|/gmtime EXPR> and @@ -4079,6 +4092,13 @@ For a comprehensive date and time representation look at the L module on CPAN. +For GMT instead of local time use the L|/gmtime EXPR> builtin. + +See also the L|Time::Local> module (for converting +seconds, minutes, hours, and such back to the integer value returned by +L|/time>), and the L module's +L|POSIX/C> function. + Portability issues: L. =item lock THING @@ -4312,9 +4332,8 @@ Calls the System V IPC function msgsnd to send the message MSG to the message queue ID. MSG must begin with the native long integer message -type, be followed by the length of the actual message, and then finally -the message itself. This kind of packing can be achieved with -C. Returns true if successful, +type, followed by the message itself. This kind of packing can be achieved +with C. Returns true if successful, false on error. See also L and the documentation for L|IPC::SysV> and L|IPC::Msg>. @@ -4336,6 +4355,17 @@ more than one variable is listed, the list must be placed in parentheses. +Note that with a parenthesised list, L|/undef EXPR> can be used +as a dummy placeholder, for example to skip assignment of initial +values: + + my ( undef, $min, $hour ) = localtime; + +Redeclaring a variable in the same scope or statement will "shadow" the +previous declaration, creating a new instance and preventing access to +the previous one. This is usually undesired and, if warnings are enabled, +will result in a warning in the C category. + The exact semantics and interface of TYPE and ATTRS are still evolving. TYPE may be a bareword, a constant declared with L|constant>, or L|/__PACKAGE__>. It @@ -4345,12 +4375,6 @@ from Perl 5.8.0 also via the L module. See L for details. -Note that with a parenthesised list, L|/undef EXPR> can be used -as a dummy placeholder, for example to skip assignment of initial -values: - - my ( undef, $min, $hour ) = localtime; - =item next LABEL X X @@ -4419,8 +4443,11 @@ =for Pod::Functions convert a string to an octal number Interprets EXPR as an octal string and returns the corresponding -value. (If EXPR happens to start off with C<0x>, interprets it as a -hex string. If EXPR starts off with C<0b>, it is interpreted as a +value. An octal string consists of octal digits and, as of Perl 5.33.5, +an optional C<0o> or C prefix. Each octal digit may be preceded by +a single underscore, which will be ignored. +(If EXPR happens to start off with C<0x> or C, interprets it as a +hex string. If EXPR starts off with C<0b> or C, it is interpreted as a binary string. Leading whitespace is ignored in all three cases.) The following will handle decimal, binary, octal, and hex in standard Perl notation: @@ -5183,8 +5210,7 @@ F A Perl internal floating-point value (NV) in native format D A float of long-double precision in native format. (Long doubles are available only if your system supports - long double values _and_ if Perl has been compiled to - support those. Raises an exception otherwise. + long double values. Raises an exception otherwise. Note that there are different long double formats.) p A pointer to a null-terminated string. @@ -5842,7 +5868,7 @@ identifiers in other packages than the current one by prefixing the identifier with the package name and a double colon, as in C<$SomePack::var> or C. If package name is omitted, the C